Repository: textileio/textile Branch: master Commit: 3d0748d28671 Files: 247 Total size: 6.9 MB Directory structure: gitextract_nehb9hlu/ ├── .bingo/ │ ├── .gitignore │ ├── README.md │ ├── Variables.mk │ ├── bingo.mod │ ├── buf.mod │ ├── go.mod │ ├── gomplate.mod │ ├── govvv.mod │ ├── gox.mod │ ├── protoc-gen-buf-breaking.mod │ ├── protoc-gen-buf-lint.mod │ └── variables.env ├── .github/ │ └── workflows/ │ ├── build.yml │ ├── docker.yml │ ├── publish-js-libs.yml │ ├── release.yml │ └── test.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── LICENSE ├── Makefile ├── README.md ├── api/ │ ├── apitest/ │ │ ├── apitest.go │ │ └── docker-compose.yml │ ├── billingd/ │ │ ├── Dockerfile │ │ ├── Dockerfile.dev │ │ ├── analytics/ │ │ │ ├── analytics.go │ │ │ └── events.go │ │ ├── client/ │ │ │ ├── client.go │ │ │ ├── client_test.go │ │ │ └── options.go │ │ ├── common/ │ │ │ └── common.go │ │ ├── gateway/ │ │ │ └── gateway.go │ │ ├── main.go │ │ ├── migrations/ │ │ │ ├── migrations.go │ │ │ └── migrations_test.go │ │ ├── pb/ │ │ │ ├── billingd.pb.go │ │ │ └── billingd.proto │ │ └── service/ │ │ └── service.go │ ├── bucketsd/ │ │ ├── client/ │ │ │ ├── client.go │ │ │ ├── client_test.go │ │ │ └── options.go │ │ ├── pb/ │ │ │ ├── bucketsd.pb.go │ │ │ ├── bucketsd.proto │ │ │ └── javascript/ │ │ │ └── package.json │ │ └── service.go │ ├── common/ │ │ └── common.go │ ├── filecoin/ │ │ └── client/ │ │ └── client.go │ ├── hubd/ │ │ ├── client/ │ │ │ ├── client.go │ │ │ ├── client_test.go │ │ │ └── options.go │ │ ├── pb/ │ │ │ ├── hubd.pb.go │ │ │ ├── hubd.proto │ │ │ └── javascript/ │ │ │ └── package.json │ │ └── service.go │ ├── mindexd/ │ │ ├── Dockerfile │ │ ├── Dockerfile.dev │ │ ├── client/ │ │ │ └── client.go │ │ ├── collector/ │ │ │ ├── collector.go │ │ │ ├── config.go │ │ │ └── daemon.go │ │ ├── indexer/ │ │ │ ├── config.go │ │ │ ├── daemon.go │ │ │ └── indexer.go │ │ ├── main.go │ │ ├── migrations/ │ │ │ └── migrations.go │ │ ├── model/ │ │ │ ├── index.go │ │ │ └── record.go │ │ ├── pb/ │ │ │ ├── google/ │ │ │ │ └── api/ │ │ │ │ ├── annotations.proto │ │ │ │ ├── field_behavior.proto │ │ │ │ ├── http.proto │ │ │ │ └── httpbody.proto │ │ │ ├── mindexd.pb.go │ │ │ ├── mindexd.pb.gw.go │ │ │ ├── mindexd.proto │ │ │ ├── mindexd.swagger.json │ │ │ └── protoc-gen-openapiv2/ │ │ │ └── options/ │ │ │ ├── annotations.proto │ │ │ └── openapiv2.proto │ │ ├── service/ │ │ │ ├── cast.go │ │ │ └── service.go │ │ └── store/ │ │ ├── gen.go │ │ ├── gen_test.go │ │ ├── index_snapshot.go │ │ ├── index_snapshot_test.go │ │ ├── onchain.go │ │ ├── onchain_test.go │ │ ├── query.go │ │ ├── query_test.go │ │ ├── records.go │ │ ├── records_test.go │ │ └── store.go │ └── usersd/ │ ├── client/ │ │ ├── client.go │ │ ├── client_test.go │ │ └── options.go │ ├── pb/ │ │ ├── javascript/ │ │ │ └── package.json │ │ ├── usersd.pb.go │ │ └── usersd.proto │ └── service.go ├── buckets/ │ ├── archive/ │ │ ├── events.go │ │ ├── retrieval/ │ │ │ └── retrieval.go │ │ └── tracker/ │ │ └── tracker.go │ ├── buckets.go │ └── local/ │ ├── access.go │ ├── add.go │ ├── archive.go │ ├── bucket.go │ ├── bucket_test.go │ ├── buckets.go │ ├── buckets_test.go │ ├── crypto.go │ ├── diff.go │ ├── list.go │ ├── options.go │ ├── pull.go │ ├── push.go │ ├── repo.go │ ├── repo_test.go │ ├── testdata/ │ │ ├── a/ │ │ │ ├── bar.txt │ │ │ ├── foo.txt │ │ │ └── one/ │ │ │ ├── baz.txt │ │ │ ├── buz.txt │ │ │ └── two/ │ │ │ ├── boo.txt │ │ │ └── fuz.txt │ │ └── b/ │ │ ├── foo.txt │ │ └── one/ │ │ ├── baz.txt │ │ ├── muz.txt │ │ ├── three/ │ │ │ └── far.txt │ │ └── two/ │ │ └── fuz.txt │ └── watch.go ├── buf.yaml ├── buildinfo/ │ └── buildinfo.go ├── buildtools/ │ └── install_protoc.bash ├── cmd/ │ ├── buck/ │ │ ├── cli/ │ │ │ ├── add.go │ │ │ ├── archive.go │ │ │ ├── cli.go │ │ │ ├── init.go │ │ │ ├── pull.go │ │ │ ├── push.go │ │ │ ├── remote.go │ │ │ ├── roles.go │ │ │ ├── util.go │ │ │ └── watch.go │ │ └── main.go │ ├── buckd/ │ │ ├── Dockerfile │ │ ├── Dockerfile.dev │ │ ├── docker-compose-dev.yml │ │ ├── docker-compose.yml │ │ └── main.go │ ├── cmd.go │ ├── config.go │ ├── hub/ │ │ ├── cli/ │ │ │ ├── archives.go │ │ │ ├── billing.go │ │ │ ├── buck.go │ │ │ ├── cli.go │ │ │ ├── destroy.go │ │ │ ├── fil.go │ │ │ ├── fil_index.go │ │ │ ├── init.go │ │ │ ├── keys.go │ │ │ ├── login.go │ │ │ ├── logout.go │ │ │ ├── orgs.go │ │ │ ├── retrievals.go │ │ │ ├── threads.go │ │ │ ├── update.go │ │ │ ├── version.go │ │ │ └── whoami.go │ │ └── main.go │ ├── hubd/ │ │ ├── Dockerfile │ │ ├── Dockerfile.dev │ │ ├── docker-compose-dev.yml │ │ ├── docker-compose.yml │ │ └── main.go │ ├── output.go │ └── watch.go ├── core/ │ ├── auth_interceptor.go │ ├── core.go │ ├── options.go │ ├── pow_interceptor.go │ ├── stats_handler.go │ ├── thread_interceptor.go │ ├── thread_interceptor_test.go │ └── usage_interceptor.go ├── dist/ │ └── install.tmpl ├── dns/ │ └── dns.go ├── email/ │ └── email.go ├── gateway/ │ ├── Makefile │ ├── assets.go │ ├── buckets.go │ ├── gateway.go │ ├── ipfs.go │ ├── public/ │ │ ├── css/ │ │ │ └── style.css │ │ ├── html/ │ │ │ ├── 404.gohtml │ │ │ ├── confirm.gohtml │ │ │ ├── consent.gohtml │ │ │ ├── error.gohtml │ │ │ ├── index.gohtml │ │ │ └── unixfs.gohtml │ │ └── img/ │ │ └── site.webmanifest │ └── threads.go ├── go.mod ├── go.sum ├── integrationtest/ │ └── pg/ │ ├── docker-compose.yml │ ├── pg_test.go │ ├── pow_client_test.go │ ├── powcli/ │ │ ├── Makefile │ │ └── docker-compose-pow.yml │ ├── powergate.go │ └── testdata/ │ ├── Data1.txt │ ├── Data2.txt │ └── Data3.txt ├── ipns/ │ └── ipns.go ├── mail/ │ ├── local/ │ │ ├── mail.go │ │ ├── mail_test.go │ │ ├── mailbox.go │ │ └── mailbox_test.go │ └── mail.go ├── mongodb/ │ ├── accounts.go │ ├── accounts_test.go │ ├── apikeys.go │ ├── apikeys_test.go │ ├── archivetracking.go │ ├── archivetracking_test.go │ ├── bucketarchives.go │ ├── bucketarchives_test.go │ ├── collections.go │ ├── collections_test.go │ ├── common.go │ ├── invites.go │ ├── invites_test.go │ ├── ipnskeys.go │ ├── ipnskeys_test.go │ ├── migrations/ │ │ ├── migrations.go │ │ └── migrations_test.go │ ├── sessions.go │ ├── sessions_test.go │ ├── threads.go │ └── threads_test.go ├── scripts/ │ ├── gen_js_protos.bash │ ├── protoc_gen_plugin.bash │ └── publish_js_protos.bash ├── threaddb/ │ ├── buckets.go │ ├── mail.go │ └── threaddb.go └── util/ ├── ctxutil.go ├── flakyt.go └── util.go ================================================ FILE CONTENTS ================================================ ================================================ FILE: .bingo/.gitignore ================================================ # Ignore everything * # But not these files: !.gitignore !*.mod !README.md !Variables.mk !variables.env *tmp.mod ================================================ FILE: .bingo/README.md ================================================ # Project Development Dependencies. This is directory which stores Go modules with pinned buildable package that is used within this repository, managed by https://github.com/bwplotka/bingo. * Run `bingo get` to install all tools having each own module file in this directory. * Run `bingo get ` to install that have own module file in this directory. * For Makefile: Make sure to put `include .bingo/Variables.mk` in your Makefile, then use $() variable where is the .bingo/.mod. * For shell: Run `source .bingo/variables.env` to source all environment variable for each tool. * For go: Import `.bingo/variables.go` to for variable names. * See https://github.com/bwplotka/bingo or -h on how to add, remove or change binaries dependencies. ## Requirements * Go 1.14+ ================================================ FILE: .bingo/Variables.mk ================================================ # Auto generated binary variables helper managed by https://github.com/bwplotka/bingo v0.5.1. DO NOT EDIT. # All tools are designed to be build inside $GOBIN. BINGO_DIR := $(dir $(lastword $(MAKEFILE_LIST))) GOPATH ?= $(shell go env GOPATH) GOBIN ?= $(firstword $(subst :, ,${GOPATH}))/bin GO ?= $(shell which go) # Below generated variables ensure that every time a tool under each variable is invoked, the correct version # will be used; reinstalling only if needed. # For example for bingo variable: # # In your main Makefile (for non array binaries): # #include .bingo/Variables.mk # Assuming -dir was set to .bingo . # #command: $(BINGO) # @echo "Running bingo" # @$(BINGO) # BINGO := $(GOBIN)/bingo-v0.5.1 $(BINGO): $(BINGO_DIR)/bingo.mod @# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies. @echo "(re)installing $(GOBIN)/bingo-v0.5.1" @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=bingo.mod -o=$(GOBIN)/bingo-v0.5.1 "github.com/bwplotka/bingo" BUF := $(GOBIN)/buf-v0.46.0 $(BUF): $(BINGO_DIR)/buf.mod @# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies. @echo "(re)installing $(GOBIN)/buf-v0.46.0" @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=buf.mod -o=$(GOBIN)/buf-v0.46.0 "github.com/bufbuild/buf/cmd/buf" GOMPLATE := $(GOBIN)/gomplate-v3.8.0 $(GOMPLATE): $(BINGO_DIR)/gomplate.mod @# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies. @echo "(re)installing $(GOBIN)/gomplate-v3.8.0" @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=gomplate.mod -o=$(GOBIN)/gomplate-v3.8.0 "github.com/hairyhenderson/gomplate/v3/cmd/gomplate" GOVVV := $(GOBIN)/govvv-v0.3.0 $(GOVVV): $(BINGO_DIR)/govvv.mod @# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies. @echo "(re)installing $(GOBIN)/govvv-v0.3.0" @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=govvv.mod -o=$(GOBIN)/govvv-v0.3.0 "github.com/ahmetb/govvv" GOX := $(GOBIN)/gox-v1.0.1 $(GOX): $(BINGO_DIR)/gox.mod @# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies. @echo "(re)installing $(GOBIN)/gox-v1.0.1" @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=gox.mod -o=$(GOBIN)/gox-v1.0.1 "github.com/mitchellh/gox" PROTOC_GEN_BUF_BREAKING := $(GOBIN)/protoc-gen-buf-breaking-v0.46.0 $(PROTOC_GEN_BUF_BREAKING): $(BINGO_DIR)/protoc-gen-buf-breaking.mod @# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies. @echo "(re)installing $(GOBIN)/protoc-gen-buf-breaking-v0.46.0" @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=protoc-gen-buf-breaking.mod -o=$(GOBIN)/protoc-gen-buf-breaking-v0.46.0 "github.com/bufbuild/buf/cmd/protoc-gen-buf-breaking" PROTOC_GEN_BUF_LINT := $(GOBIN)/protoc-gen-buf-lint-v0.46.0 $(PROTOC_GEN_BUF_LINT): $(BINGO_DIR)/protoc-gen-buf-lint.mod @# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies. @echo "(re)installing $(GOBIN)/protoc-gen-buf-lint-v0.46.0" @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=protoc-gen-buf-lint.mod -o=$(GOBIN)/protoc-gen-buf-lint-v0.46.0 "github.com/bufbuild/buf/cmd/protoc-gen-buf-lint" ================================================ FILE: .bingo/bingo.mod ================================================ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT go 1.16 require github.com/bwplotka/bingo v0.5.1 ================================================ FILE: .bingo/buf.mod ================================================ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT go 1.15 require github.com/bufbuild/buf v0.46.0 // cmd/buf ================================================ FILE: .bingo/go.mod ================================================ module _ // Fake go.mod auto-created by 'bingo' for go -moddir compatibility with non-Go projects. Commit this file, together with other .mod files. ================================================ FILE: .bingo/gomplate.mod ================================================ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT go 1.15 require github.com/hairyhenderson/gomplate/v3 v3.8.0 // cmd/gomplate ================================================ FILE: .bingo/govvv.mod ================================================ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT go 1.15 require github.com/ahmetb/govvv v0.3.0 ================================================ FILE: .bingo/gox.mod ================================================ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT go 1.15 require github.com/mitchellh/gox v1.0.1 ================================================ FILE: .bingo/protoc-gen-buf-breaking.mod ================================================ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT go 1.16 require github.com/bufbuild/buf v0.46.0 // cmd/protoc-gen-buf-breaking ================================================ FILE: .bingo/protoc-gen-buf-lint.mod ================================================ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT go 1.16 require github.com/bufbuild/buf v0.46.0 // cmd/protoc-gen-buf-lint ================================================ FILE: .bingo/variables.env ================================================ # Auto generated binary variables helper managed by https://github.com/bwplotka/bingo v0.5.1. DO NOT EDIT. # All tools are designed to be build inside $GOBIN. # Those variables will work only until 'bingo get' was invoked, or if tools were installed via Makefile's Variables.mk. GOBIN=${GOBIN:=$(go env GOBIN)} if [ -z "$GOBIN" ]; then GOBIN="$(go env GOPATH)/bin" fi BINGO="${GOBIN}/bingo-v0.5.1" BUF="${GOBIN}/buf-v0.46.0" GOMPLATE="${GOBIN}/gomplate-v3.8.0" GOVVV="${GOBIN}/govvv-v0.3.0" GOX="${GOBIN}/gox-v1.0.1" PROTOC_GEN_BUF_BREAKING="${GOBIN}/protoc-gen-buf-breaking-v0.46.0" PROTOC_GEN_BUF_LINT="${GOBIN}/protoc-gen-buf-lint-v0.46.0" ================================================ FILE: .github/workflows/build.yml ================================================ name: Build on: push: branches: - master pull_request: branches: - master jobs: buf: name: Buf runs-on: ubuntu-latest steps: - name: Set up Go uses: actions/setup-go@v1 with: go-version: 1.16 - name: checkout uses: actions/checkout@v1 with: ref: master - name: checkout-master run: git checkout master - name: checkout uses: actions/checkout@v1 - name: make local run: make buf-local buck: name: Buck CLI runs-on: ubuntu-latest steps: - name: setup uses: actions/setup-go@v1 with: go-version: 1.16 - name: checkout uses: actions/checkout@v1 - name: build run: make build-buck hub: name: Hub CLI runs-on: ubuntu-latest steps: - name: setup uses: actions/setup-go@v1 with: go-version: 1.16 - name: checkout uses: actions/checkout@v1 - name: build run: make build-hub buckd: name: Buck Daemon runs-on: ubuntu-latest steps: - name: setup uses: actions/setup-go@v1 with: go-version: 1.16 - name: checkout uses: actions/checkout@v1 - name: build run: make build-buckd billingd: name: Billing Daemon runs-on: ubuntu-latest steps: - name: setup uses: actions/setup-go@v1 with: go-version: 1.16 - name: checkout uses: actions/checkout@v1 - name: build run: make build-billingd hubd: name: Hub Daemon runs-on: ubuntu-latest steps: - name: setup uses: actions/setup-go@v1 with: go-version: 1.16 - name: checkout uses: actions/checkout@v1 - name: build run: make build-hubd ================================================ FILE: .github/workflows/docker.yml ================================================ name: Docker image master branch on: push: branches: - master jobs: docker-build-push: runs-on: ubuntu-latest strategy: matrix: imageRepo: - textile/hub - textile/billing - textile/buckets - textile/mindexd include: - imageRepo: textile/hub dockerFile: cmd/hubd/Dockerfile - imageRepo: textile/billing dockerFile: api/billingd/Dockerfile - imageRepo: textile/buckets dockerFile: cmd/buckd/Dockerfile - imageRepo: textile/mindexd dockerFile: api/mindexd/Dockerfile steps: - uses: actions/checkout@v2 - name: Get git sha id: git_sha run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)" - name: Check outputs run: echo ${{ steps.git_sha.outputs.sha_short }} - name: Fail if no git sha run: exit 1 if: ${{ steps.git_sha.outputs.sha_short == 0 }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Login to DockerHub uses: docker/login-action@v1 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and push id: docker_build uses: docker/build-push-action@v2 with: push: true file: ${{ matrix.dockerFile }} tags: ${{ matrix.imageRepo }}:latest,${{ matrix.imageRepo }}:sha-${{ steps.git_sha.outputs.sha_short }} ================================================ FILE: .github/workflows/publish-js-libs.yml ================================================ name: Publish JS Libs on: release: types: [published] jobs: publish_js_libs: name: Publish JS libs runs-on: ubuntu-latest steps: - name: Check out code uses: actions/checkout@v1 - name: Install build tools run: | sudo apt-get update sudo apt-get install -y build-essential - name: Set up Go uses: actions/setup-go@v1 with: go-version: 1.16 - name: Setup env env: ACTIONS_ALLOW_UNSECURE_COMMANDS: true run: | echo "::set-env name=GOPATH::$(go env GOPATH)" echo "::add-path::$(go env GOPATH)/bin" - name: Set up Node uses: actions/setup-node@v1 with: node-version: "14.x" registry-url: "https://registry.npmjs.org" - name: Generate JS libs run: | make js-protos - name: Publish JS libs run: | ./scripts/publish_js_protos.bash -v ${{ github.event.release.tag_name }} -t ${{ secrets.NPM_AUTH_TOKEN }} -p ${{ github.event.release.prerelease }} ================================================ FILE: .github/workflows/release.yml ================================================ name: Release on: release: types: [created] jobs: release-platform-builds: name: Release Builds runs-on: ubuntu-latest steps: - name: Set up Go uses: actions/setup-go@v1 with: go-version: 1.16 - name: Check out code uses: actions/checkout@v1 - name: Cache dependencies id: cache-dependencies uses: actions/cache@v1 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- - name: Get dependencies if: steps.cache-dependencies.outputs.cache-hit != 'true' run: | export PATH=${PATH}:`go env GOPATH`/bin go get -v -t -d ./... - name: Build release artifacts run: | TXTL_VERSION=${{ github.event.release.tag_name }} make build-releases echo $(ls ./build/dist/) - name: Upload multiple assets to release uses: AButler/upload-release-assets@v2.0 with: files: "build/dist/*" repo-token: ${{ secrets.GITHUB_TOKEN }} ================================================ FILE: .github/workflows/test.yml ================================================ name: Test on: push: branches: - master pull_request: branches: - master jobs: api: name: API runs-on: [self-hosted, hub1] services: mongodb: image: mongo:latest ports: - 127.0.0.1:27018:27017 ipfs: image: ipfs/go-ipfs:v0.8.0 env: IPFS_PROFILE: test ports: - 127.0.0.1:5012:5001 steps: - name: setup uses: actions/setup-go@v1 with: go-version: 1.16 - name: checkout uses: actions/checkout@v1 - name: test env: SKIP_SERVICES: true MONGO_URI: mongodb://127.0.0.1:27018 IPFS_API_ADDR: /ip4/127.0.0.1/tcp/5012 STRIPE_API_KEY: ${{ secrets.STRIPE_API_KEY }} run: go test -timeout 60m -race ./core/... ./api/... ./mongodb/... buckets: name: Buckets runs-on: [self-hosted, hub2] services: mongodb: image: mongo:latest ports: - 127.0.0.1:27019:27017 ipfs: image: ipfs/go-ipfs:v0.8.0 env: IPFS_PROFILE: test ports: - 127.0.0.1:5013:5001 steps: - name: setup uses: actions/setup-go@v1 with: go-version: 1.16 - name: checkout uses: actions/checkout@v1 - name: test env: SKIP_SERVICES: true MONGO_URI: mongodb://127.0.0.1:27019 IPFS_API_ADDR: /ip4/127.0.0.1/tcp/5013 run: go test -v -timeout 60m -race ./buckets/... archives: name: Archives runs-on: [self-hosted, hub3] steps: - name: setup uses: actions/setup-go@v1 with: go-version: 1.16 - name: checkout uses: actions/checkout@v1 - name: test run: go test -v -timeout 60m -race ./integrationtest/... mail: name: Mail runs-on: [self-hosted, hub4] services: mongodb: image: mongo:latest ports: - 127.0.0.1:27020:27017 ipfs: image: ipfs/go-ipfs:v0.8.0 env: IPFS_PROFILE: test ports: - 127.0.0.1:5014:5001 steps: - name: setup uses: actions/setup-go@v1 with: go-version: 1.16 - name: checkout uses: actions/checkout@v1 - name: test env: SKIP_SERVICES: true MONGO_URI: mongodb://127.0.0.1:27020 IPFS_API_ADDR: /ip4/127.0.0.1/tcp/5014 run: go test -v -timeout 60m -race ./mail/... ================================================ FILE: .gitignore ================================================ # Binaries for programs and plugins *.exe *.exe~ *.dll *.so *.dylib # Test binary, built with `go test -c` *.test # Output of the go coverage tool, specifically when used with LiteIDE *.out # Dependency directories (remove the comment below to include it) vendor/ # JS node_modules/ # IDEs .idea/ .vscode/ # Textile .textile/ .hubd/ .buckd/ .env .DS_Store buildtools/protoc buildtools/protoc-gen-go build/ **/javascript/api ================================================ FILE: CODE_OF_CONDUCT.md ================================================ # Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies within all project spaces, and it also applies when an individual is representing the project or its community in public spaces. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [INSERT EMAIL ADDRESS]. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2018-2020 textile.io Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: Makefile ================================================ include .bingo/Variables.mk .DEFAULT_GOAL=build TXTL_BUILD_FLAGS?=CGO_ENABLED=0 TXTL_VERSION?="git" GOVVV_FLAGS=$(shell $(GOVVV) -flags -version $(TXTL_VERSION) -pkg $(shell go list ./buildinfo)) build: $(GOVVV) $(TXTL_BUILD_FLAGS) go build -ldflags="${GOVVV_FLAGS}" ./... .PHONY: build build-hub: $(GOVVV) $(TXTL_BUILD_FLAGS) go build -ldflags="${GOVVV_FLAGS}" ./cmd/hub .PHONY: build-hub build-hubd: $(GOVVV) $(TXTL_BUILD_FLAGS) go build -ldflags="${GOVVV_FLAGS}" ./cmd/hubd .PHONY: build-hubd build-buck: $(GOVVV) $(TXTL_BUILD_FLAGS) go build -ldflags="${GOVVV_FLAGS}" ./cmd/buck .PHONY: build-buck build-buckd: $(GOVVV) $(TXTL_BUILD_FLAGS) go build -ldflags="${GOVVV_FLAGS}" ./cmd/buckd .PHONY: build-buckd build-billingd: $(GOVVV) $(TXTL_BUILD_FLAGS) go build -ldflags="${GOVVV_FLAGS}" ./api/billingd .PHONY: build-billingd build-mindexd: $(GOVVV) $(TXTL_BUILD_FLAGS) go build -ldflags="${GOVVV_FLAGS}" ./api/mindexd .PHONY: build-mindexd install: $(GOVVV) $(TXTL_BUILD_FLAGS) go install -ldflags="${GOVVV_FLAGS}" ./... .PHONY: install install-hub: $(GOVVV) $(TXTL_BUILD_FLAGS) go install -ldflags="${GOVVV_FLAGS}" ./cmd/hub .PHONY: install-hub install-hubd: $(GOVVV) $(TXTL_BUILD_FLAGS) go install -ldflags="${GOVVV_FLAGS}" ./cmd/hubd .PHONY: install-hubd install-buck: $(GOVVV) $(TXTL_BUILD_FLAGS) go install -ldflags="${GOVVV_FLAGS}" ./cmd/buck .PHONY: install-buck install-buckd: $(GOVVV) $(TXTL_BUILD_FLAGS) go install -ldflags="${GOVVV_FLAGS}" ./cmd/buckd .PHONY: install-buckd install-billingd: $(GOVVV) $(TXTL_BUILD_FLAGS) go install -ldflags="${GOVVV_FLAGS}" ./api/billingd .PHONY: install-billingd install-mindexd: $(GOVVV) $(TXTL_BUILD_FLAGS) go install -ldflags="${GOVVV_FLAGS}" ./api/mindexd .PHONY: install-mindexd define gen_release_files $(GOX) -osarch=$(3) -output="build/$(2)/$(2)_${TXTL_VERSION}_{{.OS}}-{{.Arch}}/$(2)" -ldflags="${GOVVV_FLAGS}" $(1) mkdir -p build/dist; \ cd build/$(2); \ for release in *; do \ cp ../../LICENSE ../../README.md $${release}/; \ if [ $${release} != *"windows"* ]; then \ TXTL_FILE=$(2) $(GOMPLATE) -f ../../dist/install.tmpl -o "$${release}/install"; \ tar -czvf ../dist/$${release}.tar.gz $${release}; \ else \ zip -r ../dist/$${release}.zip $${release}; \ fi; \ done endef build-hub-release: $(GOX) $(GOVVV) $(GOMPLATE) $(call gen_release_files,./cmd/hub,hub,"linux/amd64 linux/386 linux/arm darwin/amd64 darwin/arm64 windows/amd64") .PHONY: build-hub-release build-hubd-release: $(GOX) $(GOVVV) $(GOMPLATE) $(call gen_release_files,./cmd/hubd,hubd,"linux/amd64 linux/386 linux/arm darwin/amd64 darwin/arm64 windows/amd64") .PHONY: build-hubd-release build-buck-release: $(GOX) $(GOVVV) $(GOMPLATE) $(call gen_release_files,./cmd/buck,buck,"linux/amd64 linux/386 linux/arm darwin/amd64 darwin/arm64 windows/amd64") .PHONY: build-buck-release build-buckd-release: $(GOX) $(GOVVV) $(GOMPLATE) $(call gen_release_files,./cmd/buckd,buckd,"linux/amd64 linux/386 linux/arm darwin/amd64 darwin/arm64 windows/amd64") .PHONY: build-buckd-release build-billingd-release: $(GOX) $(GOVVV) $(GOMPLATE) $(call gen_release_files,./api/billingd,billingd,"linux/amd64 linux/386 linux/arm darwin/amd64 darwin/arm64 windows/amd64") .PHONY: build-billingd-release build-releases: build-hub-release build-hubd-release build-buck-release build-buckd-release build-billingd-release .PHONY: build-releases hub-up: docker-compose -f cmd/hubd/docker-compose-dev.yml up --build hub-stop: docker-compose -f cmd/hubd/docker-compose-dev.yml stop hub-clean: docker-compose -f cmd/hubd/docker-compose-dev.yml down -v --remove-orphans buck-up: docker-compose -f cmd/buckd/docker-compose-dev.yml up --build buck-stop: docker-compose -f cmd/buckd/docker-compose-dev.yml stop buck-clean: docker-compose -f cmd/buckd/docker-compose-dev.yml down -v --remove-orphans test: go test -race -timeout 45m ./... .PHONY: test clean-protos: find . -type f -name '*.pb.go' -delete find . -type f -name '*pb_test.go' -delete .PHONY: clean-protos clean-js-protos: find . -type f -name '*pb.js' ! -path "*/node_modules/*" -delete find . -type f -name '*pb.d.ts' ! -path "*/node_modules/*" -delete find . -type f -name '*pb_service.js' ! -path "*/node_modules/*" -delete find . -type f -name '*pb_service.d.ts' ! -path "*/node_modules/*" -delete .PHONY: clean-js-protos install-protoc: cd buildtools && ./install_protoc.bash PROTOCGENGO=$(shell pwd)/buildtools/protoc-gen-go protos: install-protoc clean-protos PATH=$(PROTOCGENGO):$(PATH) ./scripts/protoc_gen_plugin.bash \ --proto_path=. \ --plugin_name=go \ --plugin_out=. \ --plugin_opt=plugins=grpc,paths=source_relative .PHONY: protos js-protos: install-protoc clean-js-protos ./scripts/gen_js_protos.bash # local is what we run when testing locally. # This does breaking change detection against our local git repository. .PHONY: buf-local buf-local: $(BUF) $(BUF) lint # $(BUF) breaking --against-input '.git#branch=master' # https is what we run when testing in most CI providers. # This does breaking change detection against our remote HTTPS git repository. .PHONY: buf-https buf-https: $(BUF) $(BUF) lint # $(BUF) breaking --against-input "$(HTTPS_GIT)#branch=master" # ssh is what we run when testing in CI providers that provide ssh public key authentication. # This does breaking change detection against our remote HTTPS ssh repository. # This is especially useful for private repositories. .PHONY: buf-ssh buf-ssh: $(BUF) $(BUF) lint # $(BUF) breaking --against-input "$(SSH_GIT)#branch=master" MINDEXDPB=$(shell pwd)/api/mindexd PROTOC=$(shell pwd)/buildtools/protoc/bin .PHONY: mindex-rest mindex-rest: go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@latest github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@latest PATH=$(PROTOC):$(PATH) protoc -I . --grpc-gateway_out . --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out . --openapiv2_opt generate_unbound_methods=true --openapiv2_opt logtostderr=true api/mindexd/pb/mindexd.proto ================================================ FILE: README.md ================================================ ## DEPRECATION NOTICE: Textile's _hosted_ Hub infrastructure will be taken off-line on January 9th, 2023. At this time, all ThreadDB and Bucket data will no longer be available, and will subsequently be removed. See https://github.com/textileio/textile/issues/578 for further details. # textile [![Made by Textile](https://img.shields.io/badge/made%20by-Textile-informational.svg?style=popout-square)](https://textile.io) [![Chat on Slack](https://img.shields.io/badge/slack-slack.textile.io-informational.svg?style=popout-square)](https://slack.textile.io) [![GitHub license](https://img.shields.io/github/license/textileio/textile.svg?style=popout-square)](./LICENSE) [![GitHub action](https://github.com/textileio/textile/workflows/Tests/badge.svg?style=popout-square)](https://github.com/textileio/textile/actions) [![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg?style=popout-square)](https://github.com/RichardLitt/standard-readme) > Textile hub services and buckets lib Textile connects and extends [Libp2p](https://libp2p.io/), [IPFS](https://ipfs.io/), and [Filecoin](https://filecoin.io/). Three interoperable technologies makeup Textile: * [**ThreadDB**](https://github.com/textileio/go-threads): A server-less p2p database built on Libp2p * [**Powergate**](https://github.com/textileio/powergate): File storage built on Filecoin and IPFS * [**Buckets**](https://github.com/textileio/textile/tree/master/buckets): File and dynamic directory storage built on ThreadDB, Powergate, and [UnixFS](https://github.com/ipfs/go-unixfs). Join us on our [public Slack channel](https://slack.textile.io/) for news, discussions, and status updates. [Check out our blog](https://medium.com/textileio) for the latest posts and announcements. ## Table of Contents - [textile](#textile) - [Security](#security) - [Background](#background) - [Install](#install) - [The Hub](#the-hub) - [`hubd`](#hubd) - [`hub`](#hub) - [Buckets](#buckets) - [`buckd`](#buckd) - [`buck`](#buck) - [The Buckets Library](#the-buckets-library) - [Getting Started](#getting-started) - [The Hub](#the-hub-1) - [Running Buckets](#running-buckets) - [Creating a bucket](#creating-a-bucket) - [Creating a private bucket](#creating-a-private-bucket) - [Adding files and folders to a bucket](#adding-files-and-folders-to-a-bucket) - [Recreating an existing bucket](#recreating-an-existing-bucket) - [Creating a bucket from an existing Cid](#creating-a-bucket-from-an-existing-cid) - [Exploring bucket contents](#exploring-bucket-contents) - [Resetting bucket contents](#resetting-bucket-contents) - [Watching a bucket for changes](#watching-a-bucket-for-changes) - [Protecting a file with a password](#protecting-a-file-with-a-password) - [Sharing bucket files and folders](#sharing-bucket-files-and-folders) - [Creating a Filecoin bucket archive](#creating-a-filecoin-bucket-archive) - [Multi-writer buckets](#multi-writer-buckets) - [Deleting a bucket](#deleting-a-bucket) - [Using the Buckets Library](#using-the-buckets-library) - [Creating a bucket](#creating-a-bucket-1) - [Getting an existing bucket](#getting-an-existing-bucket) - [Pushing local files](#pushing-local-files) - [Pulling remote changes](#pulling-remote-changes) - [Using the Mail Library](#using-the-mail-library) - [Creating a mailbox](#creating-a-mailbox) - [Getting an existing mailbox](#getting-an-existing-mailbox) - [Sending a message](#sending-a-message) - [Watching for new messages](#watching-for-new-messages) - [Developing](#developing) - [Contributing](#contributing) - [Changelog](#changelog) - [License](#license) ## Security Textile is still under heavy development and no part of it should be used before a thorough review of the underlying code and an understanding APIs and protocols may change rapidly. There may be coding mistakes, and the underlying protocols may contain design flaws. Please [let us know](mailto:contact@textile.io) immediately if you have discovered a security vulnerability. Please also read the [security note](https://github.com/ipfs/go-ipfs#security-issues) for [go-ipfs](https://github.com/ipfs/go-ipfs). ## Background Go to [the docs](https://docs.textile.io/) for more about the motivations behind Textile. ## Install This repo contains two service daemons with CLIs and a Buckets Library for building local-first apps and services. ### The Hub #### `hubd` - **Prebuilt package**: See [release assets](https://github.com/textileio/textile/releases/latest) - **Docker image**: See the `latest` tag on [Docker Hub](https://hub.docker.com/r/textile/textile/tags) - **Build from the source**: ``` git clone https://github.com/textileio/textile cd textile go get ./cmd/hubd ``` #### `hub` - **Prebuilt package**: See [release assets](https://github.com/textileio/textile/releases/latest) - **Build from the source**: ``` git clone https://github.com/textileio/textile cd textile go get ./cmd/hub ``` **Note**: `hub` _includes_ `buck` as a subcommand: `hub buck`. This is because `hubd` hosts `buckd`, along with other services. `hub` is built in part on the [gRPC client](https://pkg.go.dev/github.com/textileio/textile/v2/api/hub/client), which can be imported to an existing project: ``` import "github.com/textileio/textile/v2/api/hub/client" ``` ### Buckets #### `buckd` - **Prebuilt package**: See [release assets](https://github.com/textileio/textile/releases/latest) - **Docker image**: See the `buckets` tag on [Docker Hub](https://hub.docker.com/r/textile/textile/tags) - **Build from the source**: ``` git clone https://github.com/textileio/textile cd textile go get ./cmd/buckd ``` #### `buck` - **Prebuilt package**: See [release assets](https://github.com/textileio/textile/releases/latest) - **Build from the source**: ``` git clone https://github.com/textileio/textile cd textile go get ./cmd/buck ``` `buck` is built in part on the [gRPC client](https://pkg.go.dev/github.com/textileio/textile/v2/api/buckets/client), which can be imported in an existing project: ``` import "github.com/textileio/textile/v2/api/buckets/client" ``` ### The Buckets Library ``` import "github.com/textileio/textile/v2/buckets/local" ``` The full spec is available [here](https://pkg.go.dev/github.com/textileio/textile/v2/buckets/local). ## Getting Started ### The Hub The Hub daemon (`hubd`), a.k.a. _The Hub_, is a hosted wrapper around other Textile services that includes developer accounts for individuals and organizations. You are encouraged to run your own, and we strongly discourage the use of the hosted [Textile Hub](https://docs.textile.io/hub/) as it will soon be shutting down. The layout of the `hub` client CLI mirrors the services wrapped by `hubd`: - `hub threads` provides limited access to ThreadDB. - `hub buck` provides access to Buckets (`buckd`) by wrapping the standalone `buck` CLI. - `hub buck archive` provides limited access to The Hub's hosted Powergate instance, and the Filecoin network. Try `hub --help` for more usage. ``` The Hub Client. Usage: hub [command] Available Commands: billing Billing management buck Manage an object storage bucket destroy Destroy your account fil Interact with Filecoin related commands. help Help about any command init Initialize account keys API key management login Login logout Logout orgs Org management threads Thread management update Update the hub CLI version Show current version whoami Show current user Flags: --api string API target (default "api.hub.textile.io:443") -h, --help help for hub --identity string User identity --key string User API key --newIdentity Generate a new user identity -o, --org string Org username --secret string User API secret -s, --session string User session token --token string User identity token Use "hub [command] --help" for more information about a command. ``` Read more about The Hub, including how to [create an account](https://docs.textile.io/hub/accounts/#account-setup), in the [docs](https://docs.textile.io/hub/). ### Running Buckets Much like [`threadsd`](https://github.com/textileio/go-threads/tree/master/threadsd), the `buckd` daemon can be run as a server or alongside desktop apps or command-line tools. The easiest way to run `buckd` is by using the provided Docker Compose files. If you're new to Docker and/or Docker Compose, get started [here](https://docs.docker.com/compose/gettingstarted/). Once you are setup, you should have `docker-compose` in your `PATH`. Create an `.env` file and add the following values: ``` REPO_PATH=~/myrepo BUCK_LOG_DEBUG=true ``` Copy [this compose file](https://github.com/textileio/textile/blob/master/cmd/buckd/docker-compose.yml) and run it with the following command. ``` docker-compose -f docker-compose.yml up ``` Congrats! Now you have Buckets running locally. The Docker Compose file starts an IPFS node, which is used to pin bucket files and folders. You could point `buckd` to a different (possibly remote) IPFS node by setting the `BUCK_ADDR_IPFS_API` variable to a different multiaddress. By default, this approach does not start [Powergate](https://github.com/textileio/powergate). If you do, be sure to set the `BUCK_ADDR_POWERGATE_API` variable to the multiaddress of your Powergate. `buckd` must be configured with Powergate to enable Filecoin archiving with `buck archive`. ### Creating a bucket Since `hub buck` and `buck` are functionally identical, this section will focus on `buck` and the Buckets Library using a locally running `buckd`. First off, take a look at `buck --help`. ``` The Bucket Client. Manages files and folders in an object storage bucket. Usage: buck [command] Available Commands: add Add a UnixFs DAG locally at path archive Create a Filecoin archive cat Cat bucket objects at path decrypt Decrypt bucket objects at path with password destroy Destroy bucket and all objects encrypt Encrypt file with a password help Help about any command init Initialize a new or existing bucket links Show links to where this bucket can be accessed ls List top-level or nested bucket objects pull Pull bucket object changes push Push bucket object changes root Show bucket root CIDs status Show bucket object changes watch Watch auto-pushes local changes to the remote Flags: --api string API target (default "127.0.0.1:3006") -h, --help help for buck Use "buck [command] --help" for more information about a command. ``` A Textile bucket functions a bit like an S3 bucket. It's a virtual filesystem where you can push, pull, list, and cat files. You can share them via web links or render the whole thing as a website or web app. They also function a bit like a Git repository. The point of entry is from a folder on your local machine that is synced to a _remote_. To get started, initialize a new bucket. ``` mkdir mybucket && cd mybucket buck init ``` When prompted, give your bucket a name and either opt-in or decline bucket encyption (see [Creating a private bucket](#creating-a-private-bucket) for more about bucket encryption). You should now see two links for the new bucket on the locally running gateway. ``` > http://127.0.0.1:8006/thread/bafkq3ocmdkrljadlgybtvocytpdw4hbnzygxecxehdp7pfj32lxp34a/buckets/bafzbeifyzfm3kosie25s5qthvvcjrr42ivd7doqhwvu5m4ks7uqv4j5lyi Thread link > http://127.0.0.1:8006/ipns/bafzbeifyzfm3kosie25s5qthvvcjrr42ivd7doqhwvu5m4ks7uqv4j5lyi IPNS link (propagation can be slow) > Success! Initialized /path/to/mybucket as a new empty bucket ``` The first URL is the link to the ThreadDB instance. Internally, a collection named `buckets` is created. Each new instance in this collection amounts to a new bucket. However, when you visit this link, you'll notice a custom file browser. This is because the gateway considers the built-in `buckets` collection a special case. You can still view the raw ThreadDB instance by appending `?json=true` to the URL. The second URL is the bucket's unique IPNS address, which is auto-updated when you add, modify, or delete files. If you have configured the daemon with DNS settings, you will see a third URL that links to the bucket's WWW address, where it is rendered as a static website / client-side application. See `buckd --help` for more info. **Important**: If your bucket is private (encrypted), an access token (JWT) will be appended to these links. This token represents your _identity_ across ***all buckets*** and should not be shared without caution. `buck init` created a configuration folder in `mybucket` called `.textile`. This folder is somewhat like a `.git` folder, as it contains information about the bucket's remote address and local state. `.textile/config.yml` will look something like, ``` key: bafzbeifyzfm3kosie25s5qthvvcjrr42ivd7doqhwvu5m4ks7uqv4j5lyi thread: bafkq3ocmdkrljadlgybtvocytpdw4hbnzygxecxehdp7pfj32lxp34a ``` Where `key` is the bucket's unique key, and `thread` is it's ThreadDB ID. Additionally, `.textile/repo` contains a repository describing the current file structure, which is used to stage changes against the remote. ### Creating a private bucket Bucket encryption (AES-CTR + AES-512 HMAC) happens entirely within the `buckd`, meaning your data gets encrypted on the way in, and decrypted on the way out. This type of encryption has two goals: - Obfuscate bucket data / files (the normal goal of encryption) - Obfuscate directory structure, which amounts to encrypting [IPLD](https://ipld.io/) nodes and their links. As a result of these goals, we refer to encrypted buckets as _private buckets_. Read more about bucket encryption [here](https://docs.textile.io/buckets/#encryption). To create a new private bucket, use the `--private` flag with `buck` init or respond `y` when prompted. In addition to bucket-level encryption, you can also [protect a file with a password](#protecting-a-file-with-a-password). ### Adding files and folders to a bucket Bucket files and folders are content-addressed by Cids. Check out [the spec](https://github.com/multiformats/cid) if you're unfamiliar with Cids. `buck` stages new files as additions: ``` echo "hello world" > hello.txt buck status > new file: hello.txt ``` `buck status` is powered by DAG-based diffing. Much like `git`, this allows buck to only push and pull _changes_. Read more about bucket diffing in the [docs](https://docs.textile.io/buckets/#diffing-and-synching), or check out this [in-depth blog post](https://blog.textile.io/buckets-diffing-syncing-archiving/). Use `push` to sync the change. ``` buck push + hello.txt: bafkreifjjcie6lypi6ny7amxnfftagclbuxndqonfipmb64f2km2devei4 > bafybeihm4zrnrsdroazwsvk3i65ooqzdftaugdkjiedr6ocq65u3ap4wni ``` The output shows the Cid of the added file and the bucket's new root Cid. `push` will sync all types of file changes: _Additions, modifications, and deletions_. ### Recreating an existing bucket It's often useful to recreate a bucket from the remote. This is somewhat like re-cloning a Git repo. This can be done in a different location on the same machine, or, if `buckd` has a public IP address, from a completely different machine. Let's recreate the bucket from the previous step in a new directory outside of the original bucket. ``` mkdir mybucket2 && cd mybucket2 buck init --existing ``` The `--existing` flag allows for interactively selecting an existing bucket to initialize from. ``` ? Which exiting bucket do you want to init from?: ▸ MyBucket bafzbeifyzfm3kosie25s5qthvvcjrr42ivd7doqhwvu5m4ks7uqv4j5lyi ``` At this point, there's only one bucket to choose from. **Note**: If `buckd` was running inside The Hub (`hubd`), you would be able to choose from buckets belonging to your Organizations and well as your individual Developer account by using the `--org` flag. Read more about Hub Accounts and Organizations [here](https://docs.textile.io/hub/accounts/). ``` > Selected bucket MyBucket + hello.txt: bafkreifjjcie6lypi6ny7amxnfftagclbuxndqonfipmb64f2km2devei4 + .textileseed: bafkreifbdzttoqsch5j66hfmcbsic6qvwrikibgzfbg3tn7rc3j63ukk3u > Your bucket links: > http://127.0.0.1:8006/thread/bafkq3ocmdkrljadlgybtvocytpdw4hbnzygxecxehdp7pfj32lxp34a/buckets/bafzbeifyzfm3kosie25s5qthvvcjrr42ivd7doqhwvu5m4ks7uqv4j5lyi Thread link > http://127.0.0.1:8006/ipns/bafzbeifyzfm3kosie25s5qthvvcjrr42ivd7doqhwvu5m4ks7uqv4j5lyi IPNS link (propagation can be slow) > Success! Initialized /path/to/mybucket2 from an existing bucket ``` Just as before, the output shows the bucket's remote links. However, in this case `init` also pulled down the content. **Note**: `.textileseed` is used to randomize a bucket's top level Cid and cannot be modified. The `--existing` flag is really just a helper that sets the `--thread` and `--key` flags, which match the config values we saw earlier. We could have used those flags directly to achieve the same result. ``` buck init --thread bafkq3ocmdkrljadlgybtvocytpdw4hbnzygxecxehdp7pfj32lxp34a --key bafzbeifyzfm3kosie25s5qthvvcjrr42ivd7doqhwvu5m4ks7uqv4j5lyi ``` Lastly, we could have just copied `.textile/config.yml` to a new directory and used `buck pull` to pull down the existing content. ### Creating a bucket from an existing Cid Sometimes it's useful to create a bucket from a [UnixFS](https://github.com/ipfs/go-unixfs) directory that is already on the IPFS network. We can simulate this scenario by adding a local folder to IPFS and then using its root Cid to create a bucket with the `--cid` flag. Here's a local directory. ``` . ├── a │   ├── bar.txt │   ├── foo.txt │   └── one │   ├── baz.txt │   ├── buz.txt │   └── two │   ├── boo.txt │   └── fuz.txt ├── b │   ├── foo.txt │   └── one │   ├── baz.txt │   ├── muz.txt │   ├── three │   │   └── far.txt │   └── two │   └── fuz.txt └── c ├── one.jpg └── two.jpg ``` Use the recursvie flag `-r` with `ipfs add`. ``` ipfs add -r . added QmcDkcMJXZsNnExehsE1Yh6SRWucHa9ruVT82gpL83431W mydir/a/bar.txt added QmYiUq2U6euWnKag23wFppG12hon4EBDswdoe4MwrKzDBn mydir/a/foo.txt added QmXrd35ja3kknnmgj5kyDM74jfG8GLJJQGtRpEQpXCLTR3 mydir/a/one/baz.txt added QmSWJvCzotB3CbdxVu8mBvmLqpSuEQgUoJHTFy1azRfwhT mydir/a/one/buz.txt added QmT6h1eaBV74Sh75upE7ugFLkBnmyGr3WsQ8w8yx5NjgPV mydir/a/one/two/boo.txt added QmTdg1b5eWEx4zJtrgvew1inkkZ29fp9mbQ4uHyKurW8Ub mydir/a/one/two/fuz.txt added QmYiQAk1seXrmuQkpGE83AxJyNZDK1RNSaLyp3Z4r1zsrB mydir/b/foo.txt added QmXrd35ja3kknnmgj5kyDM74jfG8GLJJQGtRpEQpXCLTR3 mydir/b/one/baz.txt added QmSWJvCzotB3CbdxVu8mBvmLqpSuEQgUoJHTFy1azRfwhT mydir/b/one/muz.txt added QmYs12A3CGSTHX4QrsvBe2AvLHEThrapXoTFQpyh8AzpFa mydir/b/one/three/far.txt added QmTdg1b5eWEx4zJtrgvew1inkkZ29fp9mbQ4uHyKurW8Ub mydir/b/one/two/fuz.txt added QmaLpwNPwftSQY3w4ZtMfZ8k38D5EgK2bcDuU4UwzREJpi mydir/c/one.jpg added QmYLiWv2WXQd1m8YyHx4dMoj8B3Kuiuu7pCCoYibkqKyVj mydir/c/two.jpg added QmT5YXeCfbMuVjanbHjQhECUQSACJLecfmjRBZHvmu5FDU mydir/a/one/two added QmWh2Wx9Lec4wbEvFbsq4HmYjFmgUFtxNJ8wEVwXjhJ2uk mydir/a/one added QmSujVHvG8Y3Jv21AbMFNQPphjyqNamh6cvdyXSD1jAtSZ mydir/a added QmUGSorWDy2JiKYvQuJzEb4TnYDuDNLcdFyR6NhMwnwdvy mydir/b/one/three added QmWvX7UVexbjXJtxKMyMSgGpPesFQD7teNTqUcDsP2mzW6 mydir/b/one/two added QmPyMD67EgSZS1WpvgudHkxbA5zgjqmse8srPpFb9sVefT mydir/b/one added QmQdAtg5NkwkvLtTbka3eci58UGj3m9AehC2sbksGSbjPZ mydir/b added QmcjtVAF9PQfMKTc57vcvZeBrzww3TLxPcQfUQW7cXXLJL mydir/c added QmcvkGF2t8Z94UqhdtdFRokGoqypbGyKkzRPVF4owmjVrE mydir ``` After adding the entire directory, we see the root Cid is `QmcvkGF2t8Z94UqhdtdFRokGoqypbGyKkzRPVF4owmjVrE`. Let's create the bucket using this Cid. ``` buck init --cid QmcvkGF2t8Z94UqhdtdFRokGoqypbGyKkzRPVF4owmjVrE ``` The files behind the Cid will be pulled into the new bucket. ``` + a/bar.txt: QmcDkcMJXZsNnExehsE1Yh6SRWucHa9ruVT82gpL83431W + a/foo.txt: QmYiUq2U6euWnKag23wFppG12hon4EBDswdoe4MwrKzDBn + a/one/two/fuz.txt: QmTdg1b5eWEx4zJtrgvew1inkkZ29fp9mbQ4uHyKurW8Ub + a/one/baz.txt: QmXrd35ja3kknnmgj5kyDM74jfG8GLJJQGtRpEQpXCLTR3 + c/two.jpg: QmYLiWv2WXQd1m8YyHx4dMoj8B3Kuiuu7pCCoYibkqKyVj + b/foo.txt: QmYiQAk1seXrmuQkpGE83AxJyNZDK1RNSaLyp3Z4r1zsrB + a/one/buz.txt: QmSWJvCzotB3CbdxVu8mBvmLqpSuEQgUoJHTFy1azRfwhT + a/one/two/boo.txt: QmT6h1eaBV74Sh75upE7ugFLkBnmyGr3WsQ8w8yx5NjgPV + b/one/muz.txt: QmSWJvCzotB3CbdxVu8mBvmLqpSuEQgUoJHTFy1azRfwhT + b/one/three/far.txt: QmYs12A3CGSTHX4QrsvBe2AvLHEThrapXoTFQpyh8AzpFa + b/one/baz.txt: QmXrd35ja3kknnmgj5kyDM74jfG8GLJJQGtRpEQpXCLTR3 + b/one/two/fuz.txt: QmTdg1b5eWEx4zJtrgvew1inkkZ29fp9mbQ4uHyKurW8Ub + c/one.jpg: QmaLpwNPwftSQY3w4ZtMfZ8k38D5EgK2bcDuU4UwzREJpi > Your bucket links: > http://127.0.0.1:8006/thread/bafk3k3itq2rsybcvhf6wuvumruw3j6cw7ixhrtx4ek45qgvp3e7u2xa/buckets/bafzbeiawo6ghgsqjlorii4wghdl4tzz54x2kiwtcgtaq7b3h5gta2yok2i Thread link > http://127.0.0.1:8006/ipns/bafzbeiawo6ghgsqjlorii4wghdl4tzz54x2kiwtcgtaq7b3h5gta2yok2i IPNS link (propagation can be slow) > Success! Initialized /path/to/mybucket3 as a new bootstrapped bucket ``` Currently, UnixFS in `go-ipfs` uses Cid version 0, which is why we see all these old-style Cids started with `Qm`. Of course, you can also use UnixFS directories that use Cid version 1. Similar to initializing a new bucket from an existing Cid, `buck add` allows you to _add_ and/or _merge in_ an existing UnixFS directory to an _existing bucket_. Like adding new files locally, this works by pulling down the UnixFS content from the IPFS network into the local bucket. Sync the changes with `buck push` as normal. Pulling an existing UnixFS directory into a new or existing private bucket is also possible. Just opt-in to encryption during initialization as normal. `buckd` will recursively encrypt (without duplicating) the Cid's IPLD file and directory nodes as they are pulled into the new bucket. ### Exploring bucket contents Use `buck ls [path]` to explore bucket contents. Omitting `[path]` will list the top-level directory. ``` buck ls NAME SIZE DIR OBJECTS CID .textileseed 32 false n/a bafkreiezexkrnk7yew6glm6sulhur66bbecc2aeaitf7uz4ymmp442lepu a 3726 true 3 QmSujVHvG8Y3Jv21AbMFNQPphjyqNamh6cvdyXSD1jAtSZ b 3191 true 2 QmQdAtg5NkwkvLtTbka3eci58UGj3m9AehC2sbksGSbjPZ c 1537626 true 2 QmcjtVAF9PQfMKTc57vcvZeBrzww3TLxPcQfUQW7cXXLJL ``` Use `[path]` to drill into directories, e.g., ``` buck ls a NAME SIZE DIR OBJECTS CID bar.txt 517 false n/a QmcDkcMJXZsNnExehsE1Yh6SRWucHa9ruVT82gpL83431W foo.txt 557 false n/a QmYiUq2U6euWnKag23wFppG12hon4EBDswdoe4MwrKzDBn one 2502 true 3 QmWh2Wx9Lec4wbEvFbsq4HmYjFmgUFtxNJ8wEVwXjhJ2uk ``` `buck cat` functions a lot like `ls`, but cats file contents to stdout. ### Resetting bucket contents Similar to a `git reset --hard`, you can use `buck pull --hard` to discard local changes that have not been pushed. Continuing with the bucket above, add, modify, and/or delete some files. `buck status` should show your staged changes. ``` buck status > modified: a/bar.txt > deleted: a/one/baz.txt > new file: b/one/three/car.txt > deleted: b/foo.txt ``` Normally, `buck pull` will move your local changes to temporary `.buckpatch` files, apply the remote / upstream changes, then reapply your local changes. However, the `--hard` flag will prune all local changes, resetting the local bucket contents to match the remote exactly. ``` buck pull --hard + a/one/baz.txt: QmXrd35ja3kknnmgj5kyDM74jfG8GLJJQGtRpEQpXCLTR3 + b/foo.txt: QmYiQAk1seXrmuQkpGE83AxJyNZDK1RNSaLyp3Z4r1zsrB + a/bar.txt: QmcDkcMJXZsNnExehsE1Yh6SRWucHa9ruVT82gpL83431W - b/one/three/car.txt > QmTz6HoC18QQqAEtYhfLc4Fse3LPbSCKV8vouvE88MKjFj ``` Now `buck status` will report `> Everything up-to-date`. Try `buck pull --help` for more options when pulling the remote. ### Watching a bucket for changes So far we've seen how a bucket can change locally, but the remote can also change. This could happen for a couple reasons: * Changes are pushed from a different bucket copy against the same `buckd`. * Changes are pushed from a different `buckd` at the ThreadDB layer. This is known as a multi-writer scenario. See [Multi-writer buckets](#multi-writer-buckets) for more. In either case, it is possible to listen for and apply the remote changes using `buck watch`. This will also watch for local changes and auto-push them to the remote. In this way, multiple copies of the same bucket can be kept in sync. `watch` will block until it's cancelled with a Ctrl-C. ``` buck watch > Success! Watching /path/to/mybucket for changes... ``` `watch` will survive network interruptions, reconnecting when possible. ``` > Not connected. Trying to connect... > Not connected. Trying to connect... > Not connected. Trying to connect... > Success! Watching /path/to/mybucket for changes... ``` While `watch` is active, file and folders dropped into the bucket will be automatically pushed. ### Protecting a file with a password Private buckets handle encryption entirely within `buckd`, but you can use an additional client-side encryption layer with `buck encrypt` to password protect files. This encryption is also AES-CTR + AES-512 HMAC, which means you can efficiently encrypt large file streams. However, unlike bucket-wide encryption in private buckets, client-side encryption is only available for files, not IPLD directory nodes. Let's create an encrypted version of the `hello.txt` file. ``` buck encrypt hello.txt supersecret > secret.txt ``` `encrypt` writes to stdout. So, here we redirect the output to a new file called `secret.txt`. [scrypt](https://pkg.go.dev/golang.org/x/crypto/scrypt?tab=doc) is used to derive the AES and HMAC keys from a password. This carries the normal tradeoff: _The encryption is only as good as the password_. Also, as with all client-side encryption, you must also store or otherwise remember the password! `encrypt` only works on local files. You'll have to use `push` to sync the new file to the remote. ``` buck push --yes + secret.txt: bafkreiayymufgaut3wrfbzfdxiacxn64mxijj54g2osyk7qnco54iftovi > bafybeidhffwg5ucwktn7iwyvnkhxpz7b2yrh643bo74cjvsbquzpdgpcd4 ``` `decrypt`, on the other hand, works on remote files. So, after pushing `secret.txt`, we can decrypt it (if we can remember the password) and write the plaintext to stdout. ``` buck decrypt secret.txt supersecret hello world ``` Looks like it worked! ### Sharing bucket files and folders Bucket contents can be shared with other Hub accounts and users using the `buck roles` command. Each file and folder in a bucket maintains a set of public-key based access roles: `None`, `Reader`, `Writer`, and `Admin`. Only the `Admin` role can add and remove files and folders from a shared path. See `hub buck roles grant --help` for more about each role. For most applications, access roles only makes sense in the context of the Hub. By default, public buckets have two roles located at the top-level path: ``` hub buck roles ls IDENTITY ROLE * Reader bbaareibzpb44ahd7oieqevvlqajidd4jajcvx2vdvti6bpw5wkqolwwerm Admin > Found 2 access roles ``` Since access roles are inherited down a bucket path, the single admin role grants the owner full access to all current and future files and folders. The default (`*`) `Read` role indicates that the entire bucket is open to the world. This is merely a reflection of the fact that the underlying UnixFS directory behind public (non-encrypted) buckets are discoverable on the IPFS Network. Private buckets are not open to the world and are created with only the single admin role. However, we can still grant default (`*`) `Read` access to individual files, folders, or the entire bucket posteriori. ``` hub buck roles grant "*" myfolder Use the arrow keys to navigate: ↓ ↑ → ← ? Select a role: None ▸ Reader Writer Admin ``` We can now see a new role added to `myfolder`. ``` hub buck roles ls myfolder IDENTITY ROLE * Reader > Found 1 access roles ``` Similarly, grant the `None` role to revoke access. Manipulating access roles for a single Hub account or user (public key) can be cumbersome with the `buck` CLI. Applications in need of this level of granular access control should do so programmatically using the [Go client](https://pkg.go.dev/github.com/textileio/textile/v2/api/buckets/client), [JavaScript client](https://textileio.github.io/js-hub/docs/hub.buckets). ### Creating a Filecoin bucket archive Bucket archiving requires a Powergate to be running in `buckd`. If you're curious how to do this, take a look at [this Docker Compose file](https://github.com/textileio/textile/blob/master/integrationtest/pg/docker-compose.yml). Let's try archiving the bucket from the [Creating a bucket](#creating-a-bucket) section. ``` buck archive > Warning! Archives are Filecoin Mainnet. Use with caution. ? Proceed? [y/N] ``` Please take note of the warning. Archiving should be considered experimental since Filecoin `mainnet` has not yet launched, and Powergate will either be running a `localnet` or `mainnet`. You should see a success message if you proceed. ``` > Success! Archive queued successfully ``` This means that archiving has been initiated. It may take some time to complete... ``` buck archive status > Archive is currently executing, grab a coffee and be patient... ``` Use the `archive status` command with `-w` to watch the progress of your archive as it moves through the Filecoin market deal stages. ``` buck archive status -w > Archive is currently executing, grab a coffee and be patient... > Pushing new configuration... > Configuration saved successfully > Executing job 1006707f-efa8-48c2-98af-a1b320a59780... > Ensuring Hot-Storage satisfies the configuration... > No actions needed in Hot Storage. > Hot-Storage execution ran successfully. > Ensuring Cold-Storage satisfies the configuration... > Current replication factor is lower than desired, making 10 new deals... > Calculating piece size... > Estimated piece size is 256 bytes. > Proposing deal to miner t01459 with 0 fil per epoch... > Proposing deal to miner t0117734 with 500000000 fil per epoch... > Proposing deal to miner t0120993 with 500000000 fil per epoch... > Proposing deal to miner t0120642 with 500000000 fil per epoch... > Proposing deal to miner t0121477 with 500000000 fil per epoch... > Proposing deal to miner t0119390 with 500000000 fil per epoch... > Proposing deal to miner t0101180 with 10000000 fil per epoch... > Proposing deal to miner t0117803 with 500000000 fil per epoch... > Proposing deal to miner t0121852 with 500000000 fil per epoch... > Proposing deal to miner t0119822 with 500000000 fil per epoch... > Watching deals unfold... > Deal with miner t0117803 changed state to StorageDealClientFunding > Deal with miner t0121852 changed state to StorageDealClientFunding > Deal with miner t0121477 changed state to StorageDealClientFunding > Deal with miner t0101180 changed state to StorageDealClientFunding > Deal with miner t0119822 changed state to StorageDealClientFunding > Deal with miner t0119390 changed state to StorageDealClientFunding > Deal with miner t0120642 changed state to StorageDealClientFunding > Deal with miner t0117734 changed state to StorageDealClientFunding > Deal with miner t01459 changed state to StorageDealClientFunding > Deal with miner t0120993 changed state to StorageDealClientFunding > Deal with miner t0121477 changed state to StorageDealWaitingForDataRequest > Deal with miner t0119822 changed state to StorageDealWaitingForDataRequest > Deal with miner t0117734 changed state to StorageDealWaitingForDataRequest > Deal with miner t0121852 changed state to StorageDealWaitingForDataRequest > Deal with miner t01459 changed state to StorageDealWaitingForDataRequest > Deal with miner t0120642 changed state to StorageDealWaitingForDataRequest > Deal with miner t0120993 changed state to StorageDealWaitingForDataRequest > Deal with miner t0117803 changed state to StorageDealWaitingForDataRequest > Deal with miner t0101180 changed state to StorageDealWaitingForDataRequest > Deal with miner t0119390 changed state to StorageDealWaitingForDataRequest > Deal with miner t01459 changed state to StorageDealProposalAccepted > Deal with miner t01459 changed state to StorageDealSealing ``` The output will look something like the above. With a little luck, you will start seeing some successful storage deals. Bucket archiving allows you to leverage the purely decentralized nature of Filecoin in your buckets. Check out [this video](https://www.youtube.com/watch?v=jiBUxIi1zko&feature=emb_title) from a [blog post](https://blog.textile.io/buckets-diffing-syncing-archiving/) demonstrating Filecoin bucket recovery using the [Lotus client](https://github.com/filecoin-project/lotus). ### Multi-writer buckets Multi-writer buckets leverage the distributed nature of ThreadDB by allowing multiple identities to write to the same bucket hosted by different Libp2p hosts. Since buckets are ThreadDB collection _instances_, this is no different than normal ThreadDB peer collaboration. To-do: Demonstrate joining a bucket from a ThreadDB invite. ### Deleting a bucket Deleting a bucket is easy... and permanent! `buck destroy` will delete your local bucket as well as the remote, making it unrecoverable with `buck init --existing`. ### Using the Buckets Library The `buckets/local` library powers both the `buck` and `hub buck` CLIs. Everything possible in `buck`, from bucket diffing, pushing, pulling, watching, archiving, etc., is available to you in existing projects by importing the Buckets Library. ``` go get github.com/textileio/textile/v2/buckets/local ``` Visit the [GoDoc](https://pkg.go.dev/github.com/textileio/textile/v2/buckets/local) for a complete list of methods and more usage descriptions. #### Creating a bucket Create a new bucket by constructing a configuration object. Only `Path` is required. ``` // Setup the buckets lib buckets := local.NewBuckets(cmd.NewClients("api.textile.io:443", false), local.DefaultConfConfig()) // Create a new bucket with config mybuck, err := buckets.NewBucket(context.Background(), local.Config{ Path: "path/to/bucket/folder" }) // Check current status diff, err := mybuck.DiffLocal() // diff contains staged changes ``` `buckets.NewBucket` will write a local config file and data repo. See `local.WithName`, `local.WithStrategy`, `local.WithPrivate`, `local.WithCid`, `local.WithInitPathEvents` for more options when creating buckets. To create a bucket from an existing remote, use its thread ID and instance ID (bucket `key`) in the config. #### Getting an existing bucket `GetLocalBucket` returns the bucket at path. ``` mybuck, err := buckets.GetLocalBucket(context.Background(), "path/to/bucket/folder") ``` #### Pushing local files `PushLocal` pushes all staged changes to the remote and returns the new local and remote root Cids. These roots will only be different if the bucket is private (the remote is encrypted). ``` newRoots, err := mybuck.PushLocal() ``` See `local.PathOption` for more options when pushing. #### Pulling remote changes `PullRemote` pulls all remote changes locally and returns the new root Cids. ``` newRoots, err := mybuck.PullRemote() ``` See `local.PathOption` for more options when pulling. ### Using the Mail Library The `mail/local` library provides mechanisms for sending and receiving messages between Hub users. Mailboxes are built on ThreadDB. ``` go get github.com/textileio/textile/v2/mail/local ``` Visit the [GoDoc](https://pkg.go.dev/github.com/textileio/textile/v2/mail/local) for a complete list of methods and more usage descriptions. #### Creating a mailbox Like creating a bucket, create a new mailbox by constructing a configuration object. All fields are required. ``` // Setup the mail lib mail := local.NewMail(cmd.NewClients("api.textile.io:443", true), local.DefaultConfConfig()) // Create a libp2p identity (this can be any thread.Identity) privKey, _, err := crypto.GenerateEd25519Key(rand.Reader) id := thread.NewLibp2pIdentity(privKey) // Create a new mailbox with config mailbox, err := mail.NewMailbox(context.Background(), local.Config{ Path: "path/to/mail/folder", // Usually a global location like ~/.textile/mail Identity: id, APIKey: , APISecret: , }) ``` `APIKey` and `APISecret` are User Group API Keys. Read more about [creating API Keys](https://docs.textile.io/hub/app-apis/#creating-user-group-keys). To recreate a user's mailbox, specify the same identity and API Key in the config. #### Getting an existing mailbox `GetLocalMailbox` returns the mailbox at path. ``` mailbox, err := mail.GetLocalMailbox(context.Background(), "path/to/mailbox/folder") ``` #### Sending a message When a mailbox sends a message to another mailbox, the message is encrypted for the recipient's inbox _and_ for the senders sentbox. This allows both parties to control the message's lifecycle. ``` // Create two mailboxes (for most applications, this would not happen on the same machine) box1, err := mail.NewMailbox(context.Background(), local.Config{...}) box2, err := mail.NewMailbox(context.Background(), local.Config{...}) // Send a message from the first mailbox to the second message, err := box1.SendMessage(context.Background(), box2.Identity().GetPublic(), []byte("howdy")) // List the recipient's inbox inbox, err := box2.ListInboxMessages(context.Background()) // Open decrypts the message body body, err := inbox[0].Open(context.Background(), box2.Identity()) // Mark the message as read err = box2.ReadInboxMessage(context.Background(), inbox[0].ID) ``` #### Watching for new messages Applications may watch for mailbox events in the inbox and/or sentbox. ``` // Handle mailbox events as they arrive events := make(chan MailboxEvent) defer close(events) go func() { for e := range events { switch e.Type { case NewMessage: // handle new message case MessageRead: // handle message read (inbox only) case MessageDeleted: // handle message deleted } } }() // Start watching (the third param indicates we want to keep watching when offline) state, err := mailbox.WatchInbox(context.Background(), events, true) for s := range state { // handle connectivity state } ``` Similarly, use `WatchSentbox` to watch a sentbox. ## Developing The easiest way to develop against `hubd` or `buckd` is to use the Docker Compose files found in `cmd`. The `-dev` flavored files do not persist repos via Docker Volumes, which may be desirable in some cases. ## Contributing Pull requests and bug reports are very welcome ❤️ This repository falls under the Textile [Code of Conduct](./CODE_OF_CONDUCT.md). Feel free to get in touch by: - [Opening an issue](https://github.com/textileio/textile/issues/new) - Joining the [public Slack channel](https://slack.textile.io/) - Sending an email to contact@textile.io ## Changelog A changelog is published along with each [release](https://github.com/textileio/textile/releases). ## License [MIT](LICENSE) ================================================ FILE: api/apitest/apitest.go ================================================ package apitest import ( "context" "fmt" "log" "net/http" "os" "os/exec" "path" "runtime" "strings" "sync" "testing" "time" httpapi "github.com/ipfs/go-ipfs-http-client" ma "github.com/multiformats/go-multiaddr" "github.com/phayes/freeport" "github.com/stretchr/testify/require" billing "github.com/textileio/textile/v2/api/billingd/service" "github.com/textileio/textile/v2/api/hubd/client" pb "github.com/textileio/textile/v2/api/hubd/pb" "github.com/textileio/textile/v2/core" "github.com/textileio/textile/v2/util" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) const SessionSecret = "hubsession" func MakeTextile(t *testing.T) core.Config { conf := DefaultTextileConfig(t) MakeTextileWithConfig(t, conf) return conf } func DefaultTextileConfig(t util.TestingTWithCleanup) core.Config { apiPort, err := freeport.GetFreePort() require.NoError(t, err) gatewayPort, err := freeport.GetFreePort() require.NoError(t, err) return core.Config{ Hub: true, Debug: true, AddrAPI: util.MustParseAddr(fmt.Sprintf("/ip4/127.0.0.1/tcp/%d", apiPort)), AddrAPIProxy: util.MustParseAddr("/ip4/0.0.0.0/tcp/0"), AddrMongoURI: GetMongoUri(), AddrMongoName: util.MakeToken(12), AddrThreadsHost: util.MustParseAddr("/ip4/0.0.0.0/tcp/0"), AddrIPFSAPI: GetIPFSApiAddr(), AddrGatewayHost: util.MustParseAddr(fmt.Sprintf("/ip4/127.0.0.1/tcp/%d", gatewayPort)), AddrGatewayURL: fmt.Sprintf("http://127.0.0.1:%d", gatewayPort), IPNSRepublishSchedule: "0 1 * * *", IPNSRepublishConcurrency: 5, CustomerioAPIKey: os.Getenv("CUSTOMERIO_API_KEY"), CustomerioConfirmTmpl: os.Getenv("CUSTOMERIO_CONFIRM_TMPL"), CustomerioInviteTmpl: os.Getenv("CUSTOMERIO_INVITE_TMPL"), EmailSessionSecret: SessionSecret, MaxBucketArchiveRepFactor: 4, } } type Options struct { RepoPath string NoAutoShutdown bool } type Option func(*Options) func WithRepoPath(repoPath string) Option { return func(o *Options) { o.RepoPath = repoPath } } func WithoutAutoShutdown() Option { return func(o *Options) { o.NoAutoShutdown = true } } func MakeTextileWithConfig(t util.TestingTWithCleanup, conf core.Config, opts ...Option) func() { var args Options for _, opt := range opts { opt(&args) } if args.RepoPath == "" { args.RepoPath = t.TempDir() } textile, err := core.NewTextile(context.Background(), conf, core.WithBadgerThreadsPersistence(args.RepoPath)) require.NoError(t, err) time.Sleep(5 * time.Second) // Give the api a chance to get ready done := func() { time.Sleep(time.Second) // Give threads a chance to finish work err := textile.Close() require.NoError(t, err) } if !args.NoAutoShutdown { t.Cleanup(done) } return done } func DefaultBillingConfig(t util.TestingTWithCleanup) billing.Config { apiPort, err := freeport.GetFreePort() require.NoError(t, err) gatewayPort, err := freeport.GetFreePort() require.NoError(t, err) return billing.Config{ ListenAddr: util.MustParseAddr(fmt.Sprintf("/ip4/127.0.0.1/tcp/%d", apiPort)), StripeAPIURL: "https://api.stripe.com", StripeAPIKey: os.Getenv("STRIPE_API_KEY"), StripeSessionReturnURL: "http://127.0.0.1:8006/dashboard", SegmentAPIKey: os.Getenv("SEGMENT_API_KEY"), SegmentPrefix: "test_", DBURI: GetMongoUri(), DBName: util.MakeToken(8), GatewayHostAddr: util.MustParseAddr(fmt.Sprintf("/ip4/127.0.0.1/tcp/%d", gatewayPort)), Debug: true, } } func MakeBillingWithConfig(t util.TestingTWithCleanup, conf billing.Config) { api, err := billing.NewService(context.Background(), conf) require.NoError(t, err) err = api.Start() require.NoError(t, err) t.Cleanup(func() { err := api.Stop() require.NoError(t, err) }) } func NewUsername() string { return strings.ToLower(util.MakeToken(12)) } func NewEmail() string { return fmt.Sprintf("%s@test.com", NewUsername()) } func Signup(t util.TestingTWithCleanup, client *client.Client, conf core.Config, username, email string) *pb.SignupResponse { var err error var res *pb.SignupResponse var wg sync.WaitGroup wg.Add(1) go func() { defer wg.Done() res, err = client.Signup(context.Background(), username, email) require.NoError(t, err) }() ConfirmEmail(t, conf.AddrGatewayURL, SessionSecret) wg.Wait() require.NotNil(t, res) require.NotEmpty(t, res.Session) return res } func Signin(t *testing.T, client *client.Client, conf core.Config, usernameOrEmail string) *pb.SigninResponse { var err error var res *pb.SigninResponse var wg sync.WaitGroup wg.Add(1) go func() { defer wg.Done() res, err = client.Signin(context.Background(), usernameOrEmail) require.NoError(t, err) }() ConfirmEmail(t, conf.AddrGatewayURL, SessionSecret) wg.Wait() require.NotNil(t, res) require.NotEmpty(t, res.Session) return res } func ConfirmEmail(t util.TestingTWithCleanup, gurl string, secret string) { time.Sleep(time.Second) url := fmt.Sprintf("%s/confirm/%s", gurl, secret) _, err := http.Get(url) require.NoError(t, err) time.Sleep(time.Second) } // GetMongoUri returns env value or default. func GetMongoUri() string { env := os.Getenv("MONGO_URI") if env != "" { return env } return "mongodb://127.0.0.1:27017" } // GetIPFSApiAddr returns env value or default. func GetIPFSApiAddr() ma.Multiaddr { env := os.Getenv("IPFS_API_ADDR") if env != "" { return util.MustParseAddr(env) } return util.MustParseAddr("/ip4/127.0.0.1/tcp/5011") } // StartServices starts local mongodb and ipfs services. func StartServices() (cleanup func()) { _, currentFilePath, _, _ := runtime.Caller(0) dirpath := path.Dir(currentFilePath) makeDown := func() { cmd := exec.Command( "docker-compose", "-f", fmt.Sprintf("%s/docker-compose.yml", dirpath), "down", "-v", "--remove-orphans", ) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr if err := cmd.Run(); err != nil { log.Fatalf("docker-compose down: %s", err) } } makeDown() cmd := exec.Command( "docker-compose", "-f", fmt.Sprintf("%s/docker-compose.yml", dirpath), "build", ) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr if err := cmd.Run(); err != nil { log.Fatalf("docker-compose build: %s", err) } cmd = exec.Command( "docker-compose", "-f", fmt.Sprintf("%s/docker-compose.yml", dirpath), "up", "-V", ) //cmd.Stdout = os.Stdout //cmd.Stderr = os.Stderr if err := cmd.Start(); err != nil { log.Fatalf("running docker-compose: %s", err) } limit := 5 retries := 0 var err error for retries < limit { err = checkServices() if err == nil { break } time.Sleep(time.Second) retries++ } if retries == limit { makeDown() if err != nil { log.Fatalf("connecting to services: %s", err) } log.Fatalf("max retries exhausted connecting to services") } return makeDown } func checkServices() error { ctx, cancel := context.WithTimeout(context.Background(), time.Second*3) defer cancel() mc, err := mongo.Connect(ctx, options.Client().ApplyURI(GetMongoUri())) if err != nil { return err } if err = mc.Ping(ctx, nil); err != nil { return err } ic, err := httpapi.NewApi(GetIPFSApiAddr()) if err != nil { return err } if _, err = ic.Key().Self(ctx); err != nil { return err } return nil } ================================================ FILE: api/apitest/docker-compose.yml ================================================ version: "3" services: ipfs: image: ipfs/go-ipfs:v0.8.0 environment: - IPFS_PROFILE=test ports: - "127.0.0.1:5011:5001" mongo: image: mongo:latest ports: - "127.0.0.1:27017:27017" command: - /bin/bash - -c - | /usr/bin/mongod --fork --logpath /var/log/mongod.log --bind_ip_all --replSet rs0 mongo --eval 'rs.initiate({_id: "rs0", version: 1, members: [{ _id: 0, host: "127.0.0.1:27017" }]})' tail -f /var/log/mongod.log ================================================ FILE: api/billingd/Dockerfile ================================================ FROM golang:1.16.0-buster MAINTAINER Textile # This is (in large part) copied (with love) from # https://hub.docker.com/r/ipfs/go-ipfs/dockerfile # Install deps RUN apt-get update && apt-get install -y \ libssl-dev \ ca-certificates ENV SRC_DIR /textile # Download packages first so they can be cached. COPY go.mod go.sum $SRC_DIR/ RUN cd $SRC_DIR \ && go mod download COPY . $SRC_DIR # Build the thing. RUN cd $SRC_DIR \ && TXTL_BUILD_FLAGS="CGO_ENABLED=0 GOOS=linux" make build-billingd # Get su-exec, a very minimal tool for dropping privileges, # and tini, a very minimal init daemon for containers ENV SUEXEC_VERSION v0.2 ENV TINI_VERSION v0.19.0 RUN set -eux; \ dpkgArch="$(dpkg --print-architecture)"; \ case "${dpkgArch##*-}" in \ "amd64" | "armhf" | "arm64") tiniArch="tini-static-$dpkgArch" ;;\ *) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; \ esac; \ cd /tmp \ && git clone https://github.com/ncopa/su-exec.git \ && cd su-exec \ && git checkout -q $SUEXEC_VERSION \ && make su-exec-static \ && cd /tmp \ && wget -q -O tini https://github.com/krallin/tini/releases/download/$TINI_VERSION/$tiniArch \ && chmod +x tini # Now comes the actual target image, which aims to be as small as possible. FROM busybox:1.31.1-glibc LABEL maintainer="Textile " # Get the textile binary, entrypoint script, and TLS CAs from the build container. ENV SRC_DIR /textile COPY --from=0 $SRC_DIR/billingd /usr/local/bin/billingd COPY --from=0 /tmp/su-exec/su-exec-static /sbin/su-exec COPY --from=0 /tmp/tini /sbin/tini COPY --from=0 /etc/ssl/certs /etc/ssl/certs # This shared lib (part of glibc) doesn't seem to be included with busybox. COPY --from=0 /lib/*-linux-gnu*/libdl.so.2 /lib/ # Copy over SSL libraries. COPY --from=0 /usr/lib/*-linux-gnu*/libssl.so* /usr/lib/ COPY --from=0 /usr/lib/*-linux-gnu*/libcrypto.so* /usr/lib/ # addrApi; can be exposed to the public EXPOSE 10006 # addrGatewayHost; can be exposed to the public. EXPOSE 8010 # Create the repo directory. ENV BILLING_PATH /data/billing RUN mkdir -p $BILLING_PATH \ && adduser -D -h $BILLING_PATH -u 1000 -G users billing \ && chown billing:users $BILLING_PATH # Switch to a non-privileged user. USER billing ENTRYPOINT ["/sbin/tini", "--", "billingd"] ================================================ FILE: api/billingd/Dockerfile.dev ================================================ FROM golang:1.16.0-buster RUN apt-get update && apt-get install -y \ libssl-dev \ ca-certificates RUN go get github.com/go-delve/delve/cmd/dlv ENV SRC_DIR /textile COPY go.mod go.sum $SRC_DIR/ RUN cd $SRC_DIR \ && go mod download COPY . $SRC_DIR RUN cd $SRC_DIR \ && CGO_ENABLED=0 GOOS=linux go build -gcflags "all=-N -l" -o billingd api/billingd/main.go FROM debian:buster LABEL maintainer="Textile " ENV SRC_DIR /textile COPY --from=0 /go/bin/dlv /usr/local/bin/dlv COPY --from=0 /etc/ssl/certs /etc/ssl/certs COPY --from=0 $SRC_DIR/billingd /usr/local/bin/billingd EXPOSE 10006 EXPOSE 8010 EXPOSE 40000 ENV BILLING_PATH /data/billing RUN adduser --home $BILLING_PATH --disabled-login --gecos "" --ingroup users billing USER billing ENTRYPOINT ["dlv", "--listen=0.0.0.0:40000", "--headless=true", "--accept-multiclient", "--continue", "--api-version=2", "exec", "/usr/local/bin/billingd"] ================================================ FILE: api/billingd/analytics/analytics.go ================================================ package analytics import ( "time" logging "github.com/ipfs/go-log/v2" "github.com/textileio/go-threads/util" mdb "github.com/textileio/textile/v2/mongodb" segment "gopkg.in/segmentio/analytics-go.v3" ) var ( log = logging.Logger("analytics") ) // Client uses segment to trigger life-cycle emails (quota, billing, etc). type Client struct { api segment.Client prefix string } // NewClient return a segment client. func NewClient(segmentAPIKey, prefix string, debug bool) (*Client, error) { if debug { if err := util.SetLogLevels(map[string]logging.LogLevel{ "analytics": logging.LevelDebug, }); err != nil { return nil, err } } var api segment.Client if segmentAPIKey != "" { config := segment.Config{ Verbose: debug, } var err error api, err = segment.NewWithConfig(segmentAPIKey, config) if err != nil { return nil, err } } return &Client{ api: api, prefix: prefix, }, nil } // Identify creates or updates the user traits func (c *Client) Identify(key string, accountType mdb.AccountType, active bool, email string, properties map[string]interface{}) { if c.api != nil && accountType != mdb.User { traits := segment.NewTraits() traits.Set("account_type", accountType) traits.Set(c.prefix+"signup", "true") if email != "" { traits.SetEmail(email) } for key, value := range properties { traits.Set(key, value) } if err := c.api.Enqueue(segment.Identify{ UserId: key, Traits: traits, Context: &segment.Context{ Extra: map[string]interface{}{ "active": active, }, }, }); err != nil { log.Errorf("identifying user: %v", err) } } } // TrackEvent logs a new event func (c *Client) TrackEvent(key string, accountType mdb.AccountType, active bool, event Event, properties map[string]string) { if c.api != nil && accountType != mdb.User { props := segment.NewProperties() for key, value := range properties { props.Set(key, value) } if err := c.api.Enqueue(segment.Track{ UserId: key, Event: event.String(), Properties: props, Context: &segment.Context{ Extra: map[string]interface{}{ "active": active, }, }, }); err != nil { log.Errorf("tracking event: %v", err) } } } // FormatUnix converts seconds to string in same format for all analytics requests func (c *Client) FormatUnix(seconds int64) string { return time.Unix(seconds, 0).Format(time.RFC3339) } ================================================ FILE: api/billingd/analytics/events.go ================================================ package analytics import ( "fmt" ) // Event is a type of usage event type Event int const ( SignIn Event = iota AccountDestroyed KeyAccountCreated KeyUserCreated OrgCreated OrgLeave OrgDestroyed OrgInviteCreated GracePeriodStart GracePeriodEnd BillingSetup BucketCreated BucketArchiveCreated MailboxCreated ThreadDbCreated ) func (e Event) String() string { switch e { case SignIn: return "signin" case AccountDestroyed: return "account_destroyed" case KeyAccountCreated: return "key_account_created" case KeyUserCreated: return "key_user_created" case OrgCreated: return "org_created" case OrgLeave: return "org_leave" case OrgDestroyed: return "org_destroyed" case OrgInviteCreated: return "org_invite_created" case GracePeriodStart: return "grace_period_start" case GracePeriodEnd: return "grace_period_end" case BillingSetup: return "billing_setup" case BucketCreated: return "bucket_created" case BucketArchiveCreated: return "bucket_archive_created" case MailboxCreated: return "mailbox_created" case ThreadDbCreated: return "threaddb_created" default: return fmt.Sprintf("%d", int(e)) } } ================================================ FILE: api/billingd/client/client.go ================================================ package client import ( "context" logging "github.com/ipfs/go-log/v2" stripe "github.com/stripe/stripe-go/v72" "github.com/textileio/go-threads/core/thread" "github.com/textileio/textile/v2/api/billingd/analytics" pb "github.com/textileio/textile/v2/api/billingd/pb" mdb "github.com/textileio/textile/v2/mongodb" "google.golang.org/grpc" ) var log = logging.Logger("billing.client") // Client provides the client api. type Client struct { c pb.APIServiceClient conn *grpc.ClientConn } // NewClient starts the client. func NewClient(target string, opts ...grpc.DialOption) (*Client, error) { conn, err := grpc.Dial(target, opts...) if err != nil { return nil, err } return &Client{ c: pb.NewAPIServiceClient(conn), conn: conn, }, nil } // Close closes the client's grpc connection and cancels any active requests. func (c *Client) Close() error { return c.conn.Close() } func (c *Client) CheckHealth(ctx context.Context) error { _, err := c.c.CheckHealth(ctx, &pb.CheckHealthRequest{}) return err } func (c *Client) CreateCustomer( ctx context.Context, key thread.PubKey, email string, username string, accountType mdb.AccountType, opts ...Option, ) (string, error) { args := &options{} for _, opt := range opts { opt(args) } var parent *pb.CreateCustomerRequest_Params if args.parentKey != nil { parent = &pb.CreateCustomerRequest_Params{ Key: args.parentKey.String(), Email: args.parentEmail, AccountType: int32(args.parentAccountType), } } res, err := c.c.CreateCustomer(ctx, &pb.CreateCustomerRequest{ Customer: &pb.CreateCustomerRequest_Params{ Key: key.String(), Email: email, AccountType: int32(accountType), Username: username, }, Parent: parent, }) if err != nil { return "", err } return res.CustomerId, nil } func (c *Client) GetCustomer(ctx context.Context, key thread.PubKey) (*pb.GetCustomerResponse, error) { return c.c.GetCustomer(ctx, &pb.GetCustomerRequest{ Key: key.String(), }) } func (c *Client) GetCustomerSession(ctx context.Context, key thread.PubKey) (*pb.GetCustomerSessionResponse, error) { return c.c.GetCustomerSession(ctx, &pb.GetCustomerSessionRequest{ Key: key.String(), }) } func (c *Client) ListDependentCustomers(ctx context.Context, key thread.PubKey, opts ...ListOption) ( *pb.ListDependentCustomersResponse, error) { args := &listOptions{} for _, opt := range opts { opt(args) } return c.c.ListDependentCustomers(ctx, &pb.ListDependentCustomersRequest{ Key: key.String(), Offset: args.offset, Limit: args.limit, }) } func (c *Client) UpdateCustomer( ctx context.Context, customerID string, balance int64, billable, delinquent bool, ) error { _, err := c.c.UpdateCustomer(ctx, &pb.UpdateCustomerRequest{ CustomerId: customerID, Balance: balance, Billable: billable, Delinquent: delinquent, }) return err } func (c *Client) UpdateCustomerSubscription( ctx context.Context, customerID string, status stripe.SubscriptionStatus, periodStart, periodEnd int64, ) error { _, err := c.c.UpdateCustomerSubscription(ctx, &pb.UpdateCustomerSubscriptionRequest{ CustomerId: customerID, Status: string(status), InvoicePeriod: &pb.Period{ UnixStart: periodStart, UnixEnd: periodEnd, }, }) return err } func (c *Client) RecreateCustomerSubscription(ctx context.Context, key thread.PubKey) error { _, err := c.c.RecreateCustomerSubscription(ctx, &pb.RecreateCustomerSubscriptionRequest{ Key: key.String(), }) return err } func (c *Client) DeleteCustomer(ctx context.Context, key thread.PubKey) error { _, err := c.c.DeleteCustomer(ctx, &pb.DeleteCustomerRequest{ Key: key.String(), }) return err } func (c *Client) GetCustomerUsage(ctx context.Context, key thread.PubKey) (*pb.GetCustomerUsageResponse, error) { return c.c.GetCustomerUsage(ctx, &pb.GetCustomerUsageRequest{ Key: key.String(), }) } func (c *Client) IncCustomerUsage( ctx context.Context, key thread.PubKey, productUsage map[string]int64, ) (*pb.IncCustomerUsageResponse, error) { return c.c.IncCustomerUsage(ctx, &pb.IncCustomerUsageRequest{ Key: key.String(), ProductUsage: productUsage, }) } func (c *Client) ReportCustomerUsage(ctx context.Context, key thread.PubKey) error { _, err := c.c.ReportCustomerUsage(ctx, &pb.ReportCustomerUsageRequest{ Key: key.String(), }) return err } // Identify creates or updates the user traits func (c *Client) Identify( ctx context.Context, key thread.PubKey, accountType mdb.AccountType, active bool, email string, properties map[string]string, ) { if _, err := c.c.Identify(ctx, &pb.IdentifyRequest{ Key: key.String(), AccountType: int32(accountType), Active: active, Email: email, Properties: properties, }); err != nil { log.Error(err) } } // TrackEvent records a new event func (c *Client) TrackEvent( ctx context.Context, key thread.PubKey, accountType mdb.AccountType, active bool, event analytics.Event, properties map[string]string, ) { if _, err := c.c.TrackEvent(ctx, &pb.TrackEventRequest{ Key: key.String(), AccountType: int32(accountType), Active: active, Event: int32(event), Properties: properties, }); err != nil { log.Error(err) } } ================================================ FILE: api/billingd/client/client_test.go ================================================ package client_test import ( "context" "crypto/rand" "math" "os" "testing" "time" "github.com/libp2p/go-libp2p-core/crypto" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" stripe "github.com/stripe/stripe-go/v72" "github.com/textileio/go-ds-mongo/test" "github.com/textileio/go-threads/core/thread" tutil "github.com/textileio/go-threads/util" "github.com/textileio/textile/v2/api/apitest" "github.com/textileio/textile/v2/api/billingd/client" "github.com/textileio/textile/v2/api/billingd/service" mdb "github.com/textileio/textile/v2/mongodb" "google.golang.org/grpc" ) const ( mib = 1024 * 1024 ) func TestMain(m *testing.M) { cleanup := func() {} if os.Getenv("SKIP_SERVICES") != "true" { cleanup = test.StartMongoDB() } exitVal := m.Run() cleanup() os.Exit(exitVal) } func TestClient_CheckHealth(t *testing.T) { c := setup(t) err := c.CheckHealth(context.Background()) require.NoError(t, err) } func TestClient_CreateCustomer(t *testing.T) { c := setup(t) key := newKey(t) email := apitest.NewEmail() username := apitest.NewUsername() _, err := c.CreateCustomer(context.Background(), key, email, username, mdb.Dev) require.NoError(t, err) _, err = c.CreateCustomer(context.Background(), key, email, username, mdb.Dev) require.Error(t, err) _, err = c.CreateCustomer( context.Background(), newKey(t), apitest.NewEmail(), apitest.NewUsername(), mdb.User, client.WithParent(key, email, mdb.Dev), ) require.NoError(t, err) nonExistentParentKey := newKey(t) _, err = c.CreateCustomer( context.Background(), newKey(t), apitest.NewEmail(), apitest.NewUsername(), mdb.User, client.WithParent(nonExistentParentKey, apitest.NewEmail(), mdb.Dev), ) require.NoError(t, err) newParent, err := c.GetCustomer(context.Background(), nonExistentParentKey) require.NoError(t, err) assert.NotEmpty(t, newParent) assert.Equal(t, int64(1), newParent.Dependents) } func TestClient_GetCustomer(t *testing.T) { c := setup(t) key := newKey(t) _, err := c.CreateCustomer(context.Background(), key, apitest.NewEmail(), apitest.NewUsername(), mdb.Dev) require.NoError(t, err) cus, err := c.GetCustomer(context.Background(), key) require.NoError(t, err) assert.NotEmpty(t, cus.AccountStatus) assert.NotEmpty(t, cus.SubscriptionStatus) assert.Equal(t, 0, int(cus.Balance)) assert.False(t, cus.Billable) assert.False(t, cus.Delinquent) assert.NotEmpty(t, cus.DailyUsage) } func TestClient_GetCustomerSession(t *testing.T) { c := setup(t) key := newKey(t) _, err := c.CreateCustomer(context.Background(), key, apitest.NewEmail(), apitest.NewUsername(), mdb.Dev) require.NoError(t, err) session, err := c.GetCustomerSession(context.Background(), key) require.NoError(t, err) assert.NotEmpty(t, session.Url) } func TestClient_ListDependentCustomers(t *testing.T) { c := setup(t) key := newKey(t) email := apitest.NewEmail() username := apitest.NewUsername() _, err := c.CreateCustomer(context.Background(), key, email, username, mdb.Org) require.NoError(t, err) for i := 0; i < 30; i++ { _, err = c.CreateCustomer( context.Background(), newKey(t), apitest.NewEmail(), apitest.NewUsername(), mdb.User, client.WithParent(key, email, mdb.Org), ) require.NoError(t, err) time.Sleep(time.Second) } res, err := c.ListDependentCustomers(context.Background(), key, client.WithLimit(30)) require.NoError(t, err) assert.Len(t, res.Customers, 30) res, err = c.ListDependentCustomers(context.Background(), key) require.NoError(t, err) assert.Len(t, res.Customers, 25) res, err = c.ListDependentCustomers(context.Background(), key, client.WithLimit(5)) require.NoError(t, err) assert.Len(t, res.Customers, 5) res, err = c.ListDependentCustomers(context.Background(), key, client.WithOffset(res.NextOffset)) require.NoError(t, err) assert.Len(t, res.Customers, 25) res, err = c.ListDependentCustomers(context.Background(), key, client.WithOffset(res.NextOffset)) require.NoError(t, err) assert.Len(t, res.Customers, 0) } func TestClient_UpdateCustomer(t *testing.T) { c := setup(t) key := newKey(t) email := apitest.NewEmail() id, err := c.CreateCustomer(context.Background(), key, email, apitest.NewUsername(), mdb.Dev) require.NoError(t, err) childKey := newKey(t) childId, err := c.CreateCustomer( context.Background(), childKey, apitest.NewEmail(), apitest.NewUsername(), mdb.User, client.WithParent(key, email, mdb.Dev), ) require.NoError(t, err) err = c.UpdateCustomer(context.Background(), id, 100, true, true) require.NoError(t, err) cus, err := c.GetCustomer(context.Background(), key) require.NoError(t, err) assert.Equal(t, 100, int(cus.Balance)) assert.True(t, cus.Billable) assert.True(t, cus.Delinquent) // Child cannot be billable err = c.UpdateCustomer(context.Background(), childId, 0, true, false) require.Error(t, err) } func TestClient_UpdateCustomerSubscription(t *testing.T) { c := setup(t) key := newKey(t) id, err := c.CreateCustomer(context.Background(), key, apitest.NewEmail(), apitest.NewUsername(), mdb.Dev) require.NoError(t, err) start := time.Now().Add(-time.Hour).Unix() end := time.Now().Add(time.Hour).Unix() err = c.UpdateCustomerSubscription(context.Background(), id, stripe.SubscriptionStatusCanceled, start, end) require.NoError(t, err) cus, err := c.GetCustomer(context.Background(), key) require.NoError(t, err) assert.Equal(t, string(stripe.SubscriptionStatusCanceled), cus.SubscriptionStatus) } func TestClient_RecreateCustomerSubscription(t *testing.T) { c := setup(t) key := newKey(t) id, err := c.CreateCustomer(context.Background(), key, apitest.NewEmail(), apitest.NewUsername(), mdb.Dev) require.NoError(t, err) err = c.RecreateCustomerSubscription(context.Background(), key) require.Error(t, err) start := time.Now().Add(-time.Hour).Unix() end := time.Now().Add(time.Hour).Unix() err = c.UpdateCustomerSubscription(context.Background(), id, stripe.SubscriptionStatusCanceled, start, end) require.NoError(t, err) err = c.RecreateCustomerSubscription(context.Background(), key) require.NoError(t, err) cus, err := c.GetCustomer(context.Background(), key) require.NoError(t, err) assert.Equal(t, string(stripe.SubscriptionStatusActive), cus.SubscriptionStatus) } func TestClient_DeleteCustomer(t *testing.T) { c := setup(t) key := newKey(t) _, err := c.CreateCustomer(context.Background(), key, apitest.NewEmail(), apitest.NewUsername(), mdb.Dev) require.NoError(t, err) err = c.DeleteCustomer(context.Background(), key) require.NoError(t, err) } type usageTest struct { key string initialIncSize int64 unitPrice float64 } func TestClient_GetCustomerUsage(t *testing.T) { tests := []usageTest{ {"stored_data", mib, 0.000007705471}, {"network_egress", mib, 0.000025684903}, {"instance_reads", 1, 0.000099999999}, {"instance_writes", 1, 0.000199999999}, } for _, tt := range tests { getCustomerUsage(t, tt) } } func getCustomerUsage(t *testing.T, test usageTest) { c := setup(t) key := newKey(t) id, err := c.CreateCustomer(context.Background(), key, apitest.NewEmail(), apitest.NewUsername(), mdb.Dev) require.NoError(t, err) product := getProduct(t, test.key) var inc, sizeTotal, unitsTotal int64 err = c.UpdateCustomer(context.Background(), id, 0, true, false) require.NoError(t, err) inc = product.FreeQuotaSize * 2 sizeTotal += inc unitsTotal += getUnits(inc, product) _, err = c.IncCustomerUsage(context.Background(), key, map[string]int64{test.key: inc}) require.NoError(t, err) err = c.ReportCustomerUsage(context.Background(), key) require.NoError(t, err) res, err := c.GetCustomerUsage(context.Background(), key) require.NoError(t, err) assert.NotEmpty(t, res.Usage) assert.Equal(t, sizeTotal, res.Usage[test.key].Total) assert.Equal(t, unitsTotal, res.Usage[test.key].Units) assert.Equal(t, getCost(unitsTotal, product, test.unitPrice), res.Usage[test.key].Cost) } func TestClient_IncCustomerUsage(t *testing.T) { tests := []usageTest{ {"stored_data", mib, 0.000007705471}, {"network_egress", mib, 0.000025684903}, {"instance_reads", 1, 0.000099999999}, {"instance_writes", 1, 0.000199999999}, } for _, tt := range tests { incCustomerUsage(t, tt) } } func incCustomerUsage(t *testing.T, test usageTest) { c := setup(t) key := newKey(t) email := apitest.NewEmail() username := apitest.NewUsername() id, err := c.CreateCustomer(context.Background(), key, email, username, mdb.Dev) require.NoError(t, err) childKey := newKey(t) _, err = c.CreateCustomer( context.Background(), childKey, apitest.NewEmail(), apitest.NewUsername(), mdb.User, client.WithParent(key, email, mdb.Dev), ) require.NoError(t, err) product := getProduct(t, test.key) var inc, sizeTotal, unitsTotal int64 // Add some under unit size inc = test.initialIncSize sizeTotal += inc unitsTotal += getUnits(inc, product) res, err := c.IncCustomerUsage(context.Background(), key, map[string]int64{test.key: inc}) require.NoError(t, err) assert.Equal(t, sizeTotal, res.DailyUsage[test.key].Total) assert.Equal(t, unitsTotal, res.DailyUsage[test.key].Units) assert.Equal(t, getCost(unitsTotal, product, test.unitPrice), res.DailyUsage[test.key].Cost) // Add more to reach unit size inc = product.UnitSize - test.initialIncSize sizeTotal += inc unitsTotal += getUnits(inc, product) res, err = c.IncCustomerUsage(context.Background(), key, map[string]int64{test.key: inc}) require.NoError(t, err) assert.Equal(t, sizeTotal, res.DailyUsage[test.key].Total) assert.Equal(t, unitsTotal, res.DailyUsage[test.key].Units) assert.Equal(t, getCost(unitsTotal, product, test.unitPrice), res.DailyUsage[test.key].Cost) // Add a bunch of units above free quota (should error) inc = product.FreeQuotaSize sizeTotal += inc unitsTotal += getUnits(inc, product) res, err = c.IncCustomerUsage(context.Background(), key, map[string]int64{test.key: inc}) require.Error(t, err) // Add some more as a child (should error since parent is above free quota) // Child should only see their usage, but it should also be accrued on the parent childInc := product.UnitSize childSizeTotal := childInc childUnitsTotal := getUnits(childInc, product) inc = childInc sizeTotal += inc unitsTotal += getUnits(inc, product) res, err = c.IncCustomerUsage(context.Background(), childKey, map[string]int64{test.key: childInc}) require.Error(t, err) // Flag parent as billable to remove the free quota limit err = c.UpdateCustomer(context.Background(), id, 0, true, false) require.NoError(t, err) // Try again inc = product.FreeQuotaSize sizeTotal += inc unitsTotal += getUnits(inc, product) res, err = c.IncCustomerUsage(context.Background(), key, map[string]int64{test.key: inc}) require.NoError(t, err) assert.Equal(t, sizeTotal, res.DailyUsage[test.key].Total) assert.Equal(t, unitsTotal, res.DailyUsage[test.key].Units) assert.Equal(t, getCost(unitsTotal, product, test.unitPrice), res.DailyUsage[test.key].Cost) // Try again as a child childInc = product.UnitSize childSizeTotal += childInc childUnitsTotal += getUnits(childInc, product) inc = childInc sizeTotal += inc unitsTotal += getUnits(inc, product) res, err = c.IncCustomerUsage(context.Background(), childKey, map[string]int64{test.key: childInc}) require.NoError(t, err) assert.Equal(t, childSizeTotal, res.DailyUsage[test.key].Total) assert.Equal(t, childUnitsTotal, res.DailyUsage[test.key].Units) assert.Equal(t, getCost(childUnitsTotal, product, test.unitPrice), res.DailyUsage[test.key].Cost) // Bump child to over _their_ free quota limit, since parent is billing, they should not see an error childInc = product.FreeQuotaSize childSizeTotal += childInc childUnitsTotal += getUnits(childInc, product) inc = childInc sizeTotal += inc unitsTotal += getUnits(inc, product) res, err = c.IncCustomerUsage(context.Background(), childKey, map[string]int64{test.key: childInc}) require.NoError(t, err) assert.Equal(t, childSizeTotal, res.DailyUsage[test.key].Total) assert.Equal(t, childUnitsTotal, res.DailyUsage[test.key].Units) assert.Equal(t, getCost(childUnitsTotal, product, test.unitPrice), res.DailyUsage[test.key].Cost) // Check total usage cus, err := c.GetCustomer(context.Background(), key) require.NoError(t, err) assert.Equal(t, sizeTotal, cus.DailyUsage[test.key].Total) assert.Equal(t, unitsTotal, cus.DailyUsage[test.key].Units) assert.Equal(t, getCost(unitsTotal, product, test.unitPrice), cus.DailyUsage[test.key].Cost) } func getProduct(t *testing.T, key string) *service.Product { for _, p := range service.Products { if p.Key == key { return &p } } t.Fatalf("could not find product with key %s", key) return nil } func getUnits(size int64, product *service.Product) int64 { return int64(math.Round(float64(size) / float64(product.UnitSize))) } func getCost(units int64, product *service.Product, price float64) float64 { paidUnits := units - getUnits(product.FreeQuotaSize, product) if paidUnits < 0 { return 0 } return float64(paidUnits) * price } func setup(t *testing.T) *client.Client { bconf := apitest.DefaultBillingConfig(t) bconf.FreeQuotaGracePeriod = 0 bconf.DBURI = test.GetMongoUri() apitest.MakeBillingWithConfig(t, bconf) billingApi, err := tutil.TCPAddrFromMultiAddr(bconf.ListenAddr) require.NoError(t, err) c, err := client.NewClient(billingApi, grpc.WithInsecure()) require.NoError(t, err) t.Cleanup(func() { err := c.Close() require.NoError(t, err) }) return c } func newKey(t *testing.T) thread.PubKey { _, key, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) return thread.NewLibp2pPubKey(key) } ================================================ FILE: api/billingd/client/options.go ================================================ package client import ( "github.com/textileio/go-threads/core/thread" mdb "github.com/textileio/textile/v2/mongodb" ) type options struct { parentKey thread.PubKey parentEmail string parentAccountType mdb.AccountType } type Option func(*options) // WithParent is used to create a billing hierarchy between two customers. func WithParent(key thread.PubKey, email string, accountType mdb.AccountType) Option { return func(args *options) { args.parentKey = key args.parentEmail = email args.parentAccountType = accountType } } type listOptions struct { offset int64 limit int64 } type ListOption func(*listOptions) // WithOffset is used to fetch the next page when paginating. func WithOffset(offset int64) ListOption { return func(args *listOptions) { args.offset = offset } } // WithLimit is used to set a page size when paginating. func WithLimit(limit int64) ListOption { return func(args *listOptions) { args.limit = limit } } ================================================ FILE: api/billingd/common/common.go ================================================ package common import ( "errors" "fmt" stripe "github.com/stripe/stripe-go/v72" ) var ( // ErrExceedsFreeQuota indicates the requested operation exceeds the free quota. ErrExceedsFreeQuota = errors.New("request exceeds free quota") // ErrSubscriptionExists indicates the subscription already exists and has a healthy status. ErrSubscriptionExists = errors.New("subscription exists") // ErrSubscriptionCanceled indicates the subscription was canceled by the user or as a result of failed payment. ErrSubscriptionCanceled = errors.New("subscription canceled") // ErrSubscriptionPaymentRequired indicates the subscription is in a terminal status as a result of failed payment. ErrSubscriptionPaymentRequired = errors.New("subscription payment required") ) // StatusCheck returns a non-nil error if the subscription status is considered healthy. func StatusCheck(status string) error { switch stripe.SubscriptionStatus(status) { case stripe.SubscriptionStatusActive, stripe.SubscriptionStatusIncomplete: return nil case stripe.SubscriptionStatusCanceled: return ErrSubscriptionCanceled case stripe.SubscriptionStatusIncompleteExpired, stripe.SubscriptionStatusPastDue, stripe.SubscriptionStatusUnpaid: return ErrSubscriptionPaymentRequired default: return fmt.Errorf("unhandled subscription status: %s", status) } } ================================================ FILE: api/billingd/gateway/gateway.go ================================================ package gateway import ( "context" "encoding/json" "io/ioutil" "net/http" "strings" "time" "github.com/gin-contrib/pprof" "github.com/gin-gonic/gin" logging "github.com/ipfs/go-log/v2" ma "github.com/multiformats/go-multiaddr" stripe "github.com/stripe/stripe-go/v72" "github.com/stripe/stripe-go/v72/webhook" tutil "github.com/textileio/go-threads/util" billing "github.com/textileio/textile/v2/api/billingd/client" "github.com/textileio/textile/v2/api/common" "go.mongodb.org/mongo-driver/mongo" "google.golang.org/grpc" ) var log = logging.Logger("billing.gateway") const handlerTimeout = time.Minute func init() { gin.SetMode(gin.ReleaseMode) } // Gateway provides an endpoint for Stripe webhooks. type Gateway struct { addr ma.Multiaddr server *http.Server client *billing.Client stripeWebhookSecret string } // Config defines the gateway configuration. type Config struct { Addr ma.Multiaddr APIAddr ma.Multiaddr StripeWebhookSecret string SegmentAPIKey string Debug bool } // NewGateway returns a new gateway. func NewGateway(conf Config) (*Gateway, error) { if conf.Debug { if err := tutil.SetLogLevels(map[string]logging.LogLevel{ "billing.gateway": logging.LevelDebug, "billing.client": logging.LevelDebug, }); err != nil { return nil, err } } apiTarget, err := tutil.TCPAddrFromMultiAddr(conf.APIAddr) if err != nil { return nil, err } client, err := billing.NewClient( apiTarget, grpc.WithInsecure(), grpc.WithPerRPCCredentials(common.Credentials{}), ) if err != nil { return nil, err } return &Gateway{ addr: conf.Addr, client: client, stripeWebhookSecret: conf.StripeWebhookSecret, }, nil } // Start the gateway. func (g *Gateway) Start() { addr, err := tutil.TCPAddrFromMultiAddr(g.addr) if err != nil { log.Fatal(err) } router := gin.Default() pprof.Register(router) router.GET("/health", func(c *gin.Context) { c.Writer.WriteHeader(http.StatusOK) }) router.POST("/webhooks", g.webhookHandler) g.server = &http.Server{ Addr: addr, Handler: router, } go func() { if err := g.server.ListenAndServe(); err != nil && err != http.ErrServerClosed { log.Fatalf("gateway error: %s", err) } log.Info("gateway was shutdown") }() log.Infof("gateway listening at %s", g.server.Addr) } // Addr returns the gateway's address. func (g *Gateway) Addr() string { return g.server.Addr } // Stop the gateway. func (g *Gateway) Stop() error { ctx, cancel := context.WithTimeout(context.Background(), time.Second) defer cancel() if err := g.server.Shutdown(ctx); err != nil { return err } if err := g.client.Close(); err != nil { return err } return nil } const webhookMaxBodyBytes = int64(65536) // 64 KiB // webhookHandler handles stripe webhook events func (g *Gateway) webhookHandler(c *gin.Context) { c.Request.Body = http.MaxBytesReader(c.Writer, c.Request.Body, webhookMaxBodyBytes) payload, err := ioutil.ReadAll(c.Request.Body) if err != nil { log.Errorf("reading request body: %v", err) c.Status(http.StatusBadRequest) return } event := stripe.Event{} if g.stripeWebhookSecret != "" { event, err = webhook.ConstructEvent(payload, c.Request.Header.Get("Stripe-Signature"), g.stripeWebhookSecret) if err != nil { log.Errorf("verifying webhook signature: %v", err) c.Status(http.StatusBadRequest) return } } log.Debugf("received event type: %s", event.Type) switch event.Type { case "customer.updated": var cus stripe.Customer if err := json.Unmarshal(event.Data.Raw, &cus); err != nil { log.Errorf("parsing webhook JSON: %v", err) c.Status(http.StatusBadRequest) return } var billable bool if !cus.Deleted { if cus.InvoiceSettings.DefaultPaymentMethod != nil { billable = true } else if cus.DefaultSource != nil && !cus.DefaultSource.Deleted { billable = true } } ctx, cancel := context.WithTimeout(context.Background(), handlerTimeout) defer cancel() if err := g.client.UpdateCustomer(ctx, cus.ID, cus.Balance, billable, cus.Delinquent); err != nil { // This webhook receives events from all deployments (production and staging), // which leads to a lot of "customer not found" errors. // To avoid this, we'll need a Stripe account for each deployment. // See https://github.com/textileio/textile/issues/523. if !strings.Contains(err.Error(), mongo.ErrNoDocuments.Error()) { log.Errorf("updating customer: %v", err) } c.Status(http.StatusOK) return } log.Debugf("%s was updated", cus.ID) case "customer.deleted": // @todo: Does this need to be handled? case "customer.subscription.updated", "customer.subscription.deleted": var sub stripe.Subscription err := json.Unmarshal(event.Data.Raw, &sub) if err != nil { log.Errorf("parsing webhook JSON: %v", err) c.Status(http.StatusBadRequest) return } ctx, cancel := context.WithTimeout(context.Background(), handlerTimeout) defer cancel() if err := g.client.UpdateCustomerSubscription( ctx, sub.Customer.ID, sub.Status, sub.CurrentPeriodStart, sub.CurrentPeriodEnd, ); err != nil { // This webhook receives events from all deployments (production and staging), // which leads to a lot of "customer not found" errors. // To avoid this, we'll need a Stripe account for each deployment. // See https://github.com/textileio/textile/issues/523. if !strings.Contains(err.Error(), mongo.ErrNoDocuments.Error()) { log.Errorf("updating customer subscription: %v", err) } c.Status(http.StatusOK) return } log.Debugf("%s subscription was updated", sub.ID) } c.Status(http.StatusOK) } ================================================ FILE: api/billingd/main.go ================================================ package main import ( "context" "encoding/json" "fmt" "time" logging "github.com/ipfs/go-log/v2" "github.com/spf13/cobra" "github.com/spf13/viper" "github.com/textileio/go-threads/util" "github.com/textileio/textile/v2/api/billingd/service" "github.com/textileio/textile/v2/cmd" ) const daemonName = "billingd" var ( log = logging.Logger(daemonName) config = &cmd.Config{ Viper: viper.New(), Dir: "." + daemonName, Name: "config", Flags: map[string]cmd.Flag{ "debug": { Key: "log.debug", DefValue: false, }, "logFile": { Key: "log.file", DefValue: "", // no log file }, "addrApi": { Key: "addr.api", DefValue: "/ip4/127.0.0.1/tcp/10006", }, "addrMongoUri": { Key: "addr.mongo_uri", DefValue: "mongodb://127.0.0.1:27017", }, "addrMongoName": { Key: "addr.mongo_name", DefValue: "textile_billing", }, "addrGatewayHost": { Key: "addr.gateway.host", DefValue: "/ip4/127.0.0.1/tcp/8010", }, "stripeApiUrl": { Key: "stripe.api_url", DefValue: "https://api.stripe.com", }, "stripeApiKey": { Key: "stripe.api_key", DefValue: "", }, "stripeSessionReturnUrl": { Key: "stripe.session_return_url", DefValue: "http://127.0.0.1:8006/dashboard", }, "stripeWebhookSecret": { Key: "stripe.webhook_secret", DefValue: "", }, "segmentApiKey": { Key: "segment.api_key", DefValue: "", }, "segmentPrefix": { Key: "segment.prefix", DefValue: "", }, "freeQuotaGracePeriod": { Key: "free_quota_grace_period", DefValue: time.Hour * 24 * 7, }, }, EnvPre: "BILLING", Global: true, } ) func init() { cobra.OnInitialize(cmd.InitConfig(config)) cmd.InitConfigCmd(rootCmd, config.Viper, config.Dir) rootCmd.PersistentFlags().StringVar( &config.File, "config", "", "Config file (default ${HOME}/"+config.Dir+"/"+config.Name+".yml)") rootCmd.PersistentFlags().BoolP( "debug", "d", config.Flags["debug"].DefValue.(bool), "Enable debug logging") rootCmd.PersistentFlags().String( "logFile", config.Flags["logFile"].DefValue.(string), "Write logs to file") // Address settings rootCmd.PersistentFlags().String( "addrApi", config.Flags["addrApi"].DefValue.(string), "Hub API listen address") rootCmd.PersistentFlags().String( "addrMongoUri", config.Flags["addrMongoUri"].DefValue.(string), "MongoDB connection URI") rootCmd.PersistentFlags().String( "addrMongoName", config.Flags["addrMongoName"].DefValue.(string), "MongoDB database name") rootCmd.PersistentFlags().String( "addrGatewayHost", config.Flags["addrGatewayHost"].DefValue.(string), "Local gateway host address") // Stripe settings rootCmd.PersistentFlags().String( "stripeApiUrl", config.Flags["stripeApiUrl"].DefValue.(string), "Stripe API URL") rootCmd.PersistentFlags().String( "stripeApiKey", config.Flags["stripeApiKey"].DefValue.(string), "Stripe API secret key") rootCmd.PersistentFlags().String( "stripeSessionReturnUrl", config.Flags["stripeSessionReturnUrl"].DefValue.(string), "Stripe portal session return URL") rootCmd.PersistentFlags().String( "stripeWebhookSecret", config.Flags["stripeWebhookSecret"].DefValue.(string), "Stripe webhook endpoint secret") rootCmd.PersistentFlags().Duration( "freeQuotaGracePeriod", config.Flags["freeQuotaGracePeriod"].DefValue.(time.Duration), "Grace period before blocking usage after free quota is exhausted") // Segment settings rootCmd.PersistentFlags().String( "segmentApiKey", config.Flags["segmentApiKey"].DefValue.(string), "Segment API key") rootCmd.PersistentFlags().String( "segmentPrefix", config.Flags["segmentPrefix"].DefValue.(string), "Segment trait source prefix") err := cmd.BindFlags(config.Viper, rootCmd, config.Flags) cmd.ErrCheck(err) } func main() { cmd.ErrCheck(rootCmd.Execute()) } var rootCmd = &cobra.Command{ Use: daemonName, Short: "Billing daemon", Long: `Textile's billing daemon.`, PersistentPreRun: func(c *cobra.Command, args []string) { config.Viper.SetConfigType("yaml") cmd.ExpandConfigVars(config.Viper, config.Flags) if config.Viper.GetBool("log.debug") { err := util.SetLogLevels(map[string]logging.LogLevel{ daemonName: logging.LevelDebug, }) cmd.ErrCheck(err) } }, Run: func(c *cobra.Command, args []string) { settings, err := json.MarshalIndent(config.Viper.AllSettings(), "", " ") cmd.ErrCheck(err) log.Debugf("loaded config: %s", string(settings)) addrApi := cmd.AddrFromStr(config.Viper.GetString("addr.api")) addrMongoUri := config.Viper.GetString("addr.mongo_uri") addrMongoName := config.Viper.GetString("addr.mongo_name") addrGatewayHost := cmd.AddrFromStr(config.Viper.GetString("addr.gateway.host")) stripeApiUrl := config.Viper.GetString("stripe.api_url") stripeApiKey := config.Viper.GetString("stripe.api_key") stripeSessionReturnUrl := config.Viper.GetString("stripe.session_return_url") stripeWebhookSecret := config.Viper.GetString("stripe.webhook_secret") freeQuotaGracePeriod := config.Viper.GetDuration("free_quota_grace_period") segmentApiKey := config.Viper.GetString("segment.api_key") segmentPrefix := config.Viper.GetString("segment.prefix") logFile := config.Viper.GetString("log.file") err = cmd.SetupDefaultLoggingConfig(logFile) cmd.ErrCheck(err) ctx, cancel := context.WithCancel(context.Background()) defer cancel() api, err := service.NewService(ctx, service.Config{ ListenAddr: addrApi, StripeAPIURL: stripeApiUrl, StripeAPIKey: stripeApiKey, StripeSessionReturnURL: stripeSessionReturnUrl, StripeWebhookSecret: stripeWebhookSecret, SegmentAPIKey: segmentApiKey, SegmentPrefix: segmentPrefix, DBURI: addrMongoUri, DBName: addrMongoName, GatewayHostAddr: addrGatewayHost, FreeQuotaGracePeriod: freeQuotaGracePeriod, Debug: config.Viper.GetBool("log.debug"), }) cmd.ErrCheck(err) err = api.Start() cmd.ErrCheck(err) fmt.Println("Welcome to Hub Billing!") cmd.HandleInterrupt(func() { if err := api.Stop(); err != nil { fmt.Println(err.Error()) } }) }, } ================================================ FILE: api/billingd/migrations/migrations.go ================================================ package migrations import ( "context" "time" logging "github.com/ipfs/go-log/v2" migrate "github.com/xakep666/mongo-migrate" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) var ( log = logging.Logger("migrations") migrateTimeout = time.Hour ) var m001 = migrate.Migration{ Version: 1, Description: "make customer_id index sparse", Up: func(db *mongo.Database) error { log.Info("migrating 001 up") ctx, cancel := context.WithTimeout(context.Background(), migrateTimeout) defer cancel() count, err := db.Collection("customers").CountDocuments(ctx, bson.M{}) if err != nil { return err } if count == 0 { return nil // namespace doesn't exist } _, err = db.Collection("customers").Indexes().DropOne(ctx, "customer_id_1") if err != nil { return err } _, err = db.Collection("customers").Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{{"customer_id", 1}}, Options: options.Index().SetUnique(true).SetSparse(true), }) return err }, Down: func(db *mongo.Database) error { log.Info("migrating 001 down") ctx, cancel := context.WithTimeout(context.Background(), migrateTimeout) defer cancel() count, err := db.Collection("customers").CountDocuments(ctx, bson.M{}) if err != nil { return err } if count == 0 { return nil // namespace doesn't exist } _, err = db.Collection("customers").Indexes().DropOne(ctx, "customer_id_1") if err != nil { return err } _, err = db.Collection("customers").Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{{"customer_id", 1}}, Options: options.Index().SetUnique(true), }) return err }, } func Migrate(db *mongo.Database) error { m := migrate.NewMigrate( db, m001, ) return m.Up(migrate.AllAvailable) } ================================================ FILE: api/billingd/migrations/migrations_test.go ================================================ package migrations import ( "context" "os" "testing" "github.com/stretchr/testify/require" "github.com/textileio/go-ds-mongo/test" migrate "github.com/xakep666/mongo-migrate" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) func TestMain(m *testing.M) { cleanup := func() {} if os.Getenv("SKIP_SERVICES") != "true" { cleanup = test.StartMongoDB() } exitVal := m.Run() cleanup() os.Exit(exitVal) } // Test make customer_id index sparse func TestMigrations_m001(t *testing.T) { ctx := context.Background() db := setup(t, ctx) // Preload collection _, err := db.Collection("customers").Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{{"customer_id", 1}}, Options: options.Index().SetUnique(true), }) require.NoError(t, err) _, err = db.Collection("customers").InsertMany(ctx, []interface{}{ bson.M{"customer_id": "one"}, bson.M{"customer_id": "two"}, bson.M{"customer_id": "three"}, }) require.NoError(t, err) // Test that nil customer_id causes duplicate key error docs := []interface{}{ bson.M{"foo": 1}, // nil customer_id bson.M{"bar": 1}, // nil customer_id } _, err = db.Collection("customers").InsertMany(ctx, docs) require.Error(t, err) // Duplicate key error // Run up err = migrate.NewMigrate(db, m001).Up(migrate.AllAvailable) require.NoError(t, err) // No duplicate key error this time _, err = db.Collection("customers").InsertMany(ctx, docs) require.NoError(t, err) // Clean up _, err = db.Collection("customers").DeleteMany(ctx, bson.M{}) require.NoError(t, err) // Run down err = migrate.NewMigrate(db, m001).Down(migrate.AllAvailable) require.NoError(t, err) } func setup(t *testing.T, ctx context.Context) *mongo.Database { client, err := mongo.Connect(ctx, options.Client().ApplyURI(test.GetMongoUri())) require.NoError(t, err) db := client.Database("test_billing_migrations") t.Cleanup(func() { err := db.Drop(ctx) require.NoError(t, err) }) return db } ================================================ FILE: api/billingd/pb/billingd.pb.go ================================================ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.23.0 // protoc v3.13.0 // source: api/billingd/pb/billingd.proto package pb import ( context "context" proto "github.com/golang/protobuf/proto" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) 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 that a sufficiently up-to-date version // of the legacy proto package is being used. const _ = proto.ProtoPackageIsVersion4 type Period struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UnixStart int64 `protobuf:"varint,1,opt,name=unix_start,json=unixStart,proto3" json:"unix_start,omitempty"` UnixEnd int64 `protobuf:"varint,2,opt,name=unix_end,json=unixEnd,proto3" json:"unix_end,omitempty"` } func (x *Period) Reset() { *x = Period{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Period) String() string { return protoimpl.X.MessageStringOf(x) } func (*Period) ProtoMessage() {} func (x *Period) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 Period.ProtoReflect.Descriptor instead. func (*Period) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{0} } func (x *Period) GetUnixStart() int64 { if x != nil { return x.UnixStart } return 0 } func (x *Period) GetUnixEnd() int64 { if x != nil { return x.UnixEnd } return 0 } type Usage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` Units int64 `protobuf:"varint,2,opt,name=units,proto3" json:"units,omitempty"` Total int64 `protobuf:"varint,3,opt,name=total,proto3" json:"total,omitempty"` Free int64 `protobuf:"varint,4,opt,name=free,proto3" json:"free,omitempty"` Grace int64 `protobuf:"varint,5,opt,name=grace,proto3" json:"grace,omitempty"` Cost float64 `protobuf:"fixed64,6,opt,name=cost,proto3" json:"cost,omitempty"` Period *Period `protobuf:"bytes,7,opt,name=period,proto3" json:"period,omitempty"` } func (x *Usage) Reset() { *x = Usage{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Usage) String() string { return protoimpl.X.MessageStringOf(x) } func (*Usage) ProtoMessage() {} func (x *Usage) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 Usage.ProtoReflect.Descriptor instead. func (*Usage) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{1} } func (x *Usage) GetDescription() string { if x != nil { return x.Description } return "" } func (x *Usage) GetUnits() int64 { if x != nil { return x.Units } return 0 } func (x *Usage) GetTotal() int64 { if x != nil { return x.Total } return 0 } func (x *Usage) GetFree() int64 { if x != nil { return x.Free } return 0 } func (x *Usage) GetGrace() int64 { if x != nil { return x.Grace } return 0 } func (x *Usage) GetCost() float64 { if x != nil { return x.Cost } return 0 } func (x *Usage) GetPeriod() *Period { if x != nil { return x.Period } return nil } type CheckHealthRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *CheckHealthRequest) Reset() { *x = CheckHealthRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CheckHealthRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CheckHealthRequest) ProtoMessage() {} func (x *CheckHealthRequest) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 CheckHealthRequest.ProtoReflect.Descriptor instead. func (*CheckHealthRequest) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{2} } type CheckHealthResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *CheckHealthResponse) Reset() { *x = CheckHealthResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CheckHealthResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CheckHealthResponse) ProtoMessage() {} func (x *CheckHealthResponse) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 CheckHealthResponse.ProtoReflect.Descriptor instead. func (*CheckHealthResponse) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{3} } type CreateCustomerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Customer *CreateCustomerRequest_Params `protobuf:"bytes,1,opt,name=customer,proto3" json:"customer,omitempty"` Parent *CreateCustomerRequest_Params `protobuf:"bytes,2,opt,name=parent,proto3" json:"parent,omitempty"` } func (x *CreateCustomerRequest) Reset() { *x = CreateCustomerRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateCustomerRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateCustomerRequest) ProtoMessage() {} func (x *CreateCustomerRequest) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 CreateCustomerRequest.ProtoReflect.Descriptor instead. func (*CreateCustomerRequest) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{4} } func (x *CreateCustomerRequest) GetCustomer() *CreateCustomerRequest_Params { if x != nil { return x.Customer } return nil } func (x *CreateCustomerRequest) GetParent() *CreateCustomerRequest_Params { if x != nil { return x.Parent } return nil } type CreateCustomerResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"` } func (x *CreateCustomerResponse) Reset() { *x = CreateCustomerResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateCustomerResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateCustomerResponse) ProtoMessage() {} func (x *CreateCustomerResponse) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 CreateCustomerResponse.ProtoReflect.Descriptor instead. func (*CreateCustomerResponse) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{5} } func (x *CreateCustomerResponse) GetCustomerId() string { if x != nil { return x.CustomerId } return "" } type GetCustomerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } func (x *GetCustomerRequest) Reset() { *x = GetCustomerRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetCustomerRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetCustomerRequest) ProtoMessage() {} func (x *GetCustomerRequest) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 GetCustomerRequest.ProtoReflect.Descriptor instead. func (*GetCustomerRequest) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{6} } func (x *GetCustomerRequest) GetKey() string { if x != nil { return x.Key } return "" } type GetCustomerResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` CustomerId string `protobuf:"bytes,2,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"` ParentKey string `protobuf:"bytes,3,opt,name=parent_key,json=parentKey,proto3" json:"parent_key,omitempty"` Email string `protobuf:"bytes,4,opt,name=email,proto3" json:"email,omitempty"` AccountType int32 `protobuf:"varint,5,opt,name=account_type,json=accountType,proto3" json:"account_type,omitempty"` AccountStatus string `protobuf:"bytes,6,opt,name=account_status,json=accountStatus,proto3" json:"account_status,omitempty"` SubscriptionStatus string `protobuf:"bytes,7,opt,name=subscription_status,json=subscriptionStatus,proto3" json:"subscription_status,omitempty"` Balance int64 `protobuf:"varint,8,opt,name=balance,proto3" json:"balance,omitempty"` Billable bool `protobuf:"varint,9,opt,name=billable,proto3" json:"billable,omitempty"` Delinquent bool `protobuf:"varint,10,opt,name=delinquent,proto3" json:"delinquent,omitempty"` CreatedAt int64 `protobuf:"varint,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` GracePeriodEnd int64 `protobuf:"varint,12,opt,name=grace_period_end,json=gracePeriodEnd,proto3" json:"grace_period_end,omitempty"` InvoicePeriod *Period `protobuf:"bytes,13,opt,name=invoice_period,json=invoicePeriod,proto3" json:"invoice_period,omitempty"` DailyUsage map[string]*Usage `protobuf:"bytes,14,rep,name=daily_usage,json=dailyUsage,proto3" json:"daily_usage,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` Dependents int64 `protobuf:"varint,15,opt,name=dependents,proto3" json:"dependents,omitempty"` } func (x *GetCustomerResponse) Reset() { *x = GetCustomerResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetCustomerResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetCustomerResponse) ProtoMessage() {} func (x *GetCustomerResponse) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 GetCustomerResponse.ProtoReflect.Descriptor instead. func (*GetCustomerResponse) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{7} } func (x *GetCustomerResponse) GetKey() string { if x != nil { return x.Key } return "" } func (x *GetCustomerResponse) GetCustomerId() string { if x != nil { return x.CustomerId } return "" } func (x *GetCustomerResponse) GetParentKey() string { if x != nil { return x.ParentKey } return "" } func (x *GetCustomerResponse) GetEmail() string { if x != nil { return x.Email } return "" } func (x *GetCustomerResponse) GetAccountType() int32 { if x != nil { return x.AccountType } return 0 } func (x *GetCustomerResponse) GetAccountStatus() string { if x != nil { return x.AccountStatus } return "" } func (x *GetCustomerResponse) GetSubscriptionStatus() string { if x != nil { return x.SubscriptionStatus } return "" } func (x *GetCustomerResponse) GetBalance() int64 { if x != nil { return x.Balance } return 0 } func (x *GetCustomerResponse) GetBillable() bool { if x != nil { return x.Billable } return false } func (x *GetCustomerResponse) GetDelinquent() bool { if x != nil { return x.Delinquent } return false } func (x *GetCustomerResponse) GetCreatedAt() int64 { if x != nil { return x.CreatedAt } return 0 } func (x *GetCustomerResponse) GetGracePeriodEnd() int64 { if x != nil { return x.GracePeriodEnd } return 0 } func (x *GetCustomerResponse) GetInvoicePeriod() *Period { if x != nil { return x.InvoicePeriod } return nil } func (x *GetCustomerResponse) GetDailyUsage() map[string]*Usage { if x != nil { return x.DailyUsage } return nil } func (x *GetCustomerResponse) GetDependents() int64 { if x != nil { return x.Dependents } return 0 } type ListDependentCustomersRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Offset int64 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` Limit int64 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` } func (x *ListDependentCustomersRequest) Reset() { *x = ListDependentCustomersRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListDependentCustomersRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListDependentCustomersRequest) ProtoMessage() {} func (x *ListDependentCustomersRequest) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 ListDependentCustomersRequest.ProtoReflect.Descriptor instead. func (*ListDependentCustomersRequest) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{8} } func (x *ListDependentCustomersRequest) GetKey() string { if x != nil { return x.Key } return "" } func (x *ListDependentCustomersRequest) GetOffset() int64 { if x != nil { return x.Offset } return 0 } func (x *ListDependentCustomersRequest) GetLimit() int64 { if x != nil { return x.Limit } return 0 } type ListDependentCustomersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Customers []*GetCustomerResponse `protobuf:"bytes,1,rep,name=customers,proto3" json:"customers,omitempty"` NextOffset int64 `protobuf:"varint,2,opt,name=next_offset,json=nextOffset,proto3" json:"next_offset,omitempty"` } func (x *ListDependentCustomersResponse) Reset() { *x = ListDependentCustomersResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListDependentCustomersResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListDependentCustomersResponse) ProtoMessage() {} func (x *ListDependentCustomersResponse) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 ListDependentCustomersResponse.ProtoReflect.Descriptor instead. func (*ListDependentCustomersResponse) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{9} } func (x *ListDependentCustomersResponse) GetCustomers() []*GetCustomerResponse { if x != nil { return x.Customers } return nil } func (x *ListDependentCustomersResponse) GetNextOffset() int64 { if x != nil { return x.NextOffset } return 0 } type GetCustomerSessionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } func (x *GetCustomerSessionRequest) Reset() { *x = GetCustomerSessionRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetCustomerSessionRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetCustomerSessionRequest) ProtoMessage() {} func (x *GetCustomerSessionRequest) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 GetCustomerSessionRequest.ProtoReflect.Descriptor instead. func (*GetCustomerSessionRequest) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{10} } func (x *GetCustomerSessionRequest) GetKey() string { if x != nil { return x.Key } return "" } type GetCustomerSessionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` } func (x *GetCustomerSessionResponse) Reset() { *x = GetCustomerSessionResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetCustomerSessionResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetCustomerSessionResponse) ProtoMessage() {} func (x *GetCustomerSessionResponse) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 GetCustomerSessionResponse.ProtoReflect.Descriptor instead. func (*GetCustomerSessionResponse) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{11} } func (x *GetCustomerSessionResponse) GetUrl() string { if x != nil { return x.Url } return "" } type UpdateCustomerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"` Balance int64 `protobuf:"varint,2,opt,name=balance,proto3" json:"balance,omitempty"` Billable bool `protobuf:"varint,3,opt,name=billable,proto3" json:"billable,omitempty"` Delinquent bool `protobuf:"varint,4,opt,name=delinquent,proto3" json:"delinquent,omitempty"` } func (x *UpdateCustomerRequest) Reset() { *x = UpdateCustomerRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateCustomerRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateCustomerRequest) ProtoMessage() {} func (x *UpdateCustomerRequest) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 UpdateCustomerRequest.ProtoReflect.Descriptor instead. func (*UpdateCustomerRequest) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{12} } func (x *UpdateCustomerRequest) GetCustomerId() string { if x != nil { return x.CustomerId } return "" } func (x *UpdateCustomerRequest) GetBalance() int64 { if x != nil { return x.Balance } return 0 } func (x *UpdateCustomerRequest) GetBillable() bool { if x != nil { return x.Billable } return false } func (x *UpdateCustomerRequest) GetDelinquent() bool { if x != nil { return x.Delinquent } return false } type UpdateCustomerResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateCustomerResponse) Reset() { *x = UpdateCustomerResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateCustomerResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateCustomerResponse) ProtoMessage() {} func (x *UpdateCustomerResponse) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 UpdateCustomerResponse.ProtoReflect.Descriptor instead. func (*UpdateCustomerResponse) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{13} } type UpdateCustomerSubscriptionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"` Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` InvoicePeriod *Period `protobuf:"bytes,3,opt,name=invoice_period,json=invoicePeriod,proto3" json:"invoice_period,omitempty"` } func (x *UpdateCustomerSubscriptionRequest) Reset() { *x = UpdateCustomerSubscriptionRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateCustomerSubscriptionRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateCustomerSubscriptionRequest) ProtoMessage() {} func (x *UpdateCustomerSubscriptionRequest) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 UpdateCustomerSubscriptionRequest.ProtoReflect.Descriptor instead. func (*UpdateCustomerSubscriptionRequest) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{14} } func (x *UpdateCustomerSubscriptionRequest) GetCustomerId() string { if x != nil { return x.CustomerId } return "" } func (x *UpdateCustomerSubscriptionRequest) GetStatus() string { if x != nil { return x.Status } return "" } func (x *UpdateCustomerSubscriptionRequest) GetInvoicePeriod() *Period { if x != nil { return x.InvoicePeriod } return nil } type UpdateCustomerSubscriptionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateCustomerSubscriptionResponse) Reset() { *x = UpdateCustomerSubscriptionResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateCustomerSubscriptionResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateCustomerSubscriptionResponse) ProtoMessage() {} func (x *UpdateCustomerSubscriptionResponse) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 UpdateCustomerSubscriptionResponse.ProtoReflect.Descriptor instead. func (*UpdateCustomerSubscriptionResponse) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{15} } type RecreateCustomerSubscriptionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } func (x *RecreateCustomerSubscriptionRequest) Reset() { *x = RecreateCustomerSubscriptionRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RecreateCustomerSubscriptionRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RecreateCustomerSubscriptionRequest) ProtoMessage() {} func (x *RecreateCustomerSubscriptionRequest) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 RecreateCustomerSubscriptionRequest.ProtoReflect.Descriptor instead. func (*RecreateCustomerSubscriptionRequest) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{16} } func (x *RecreateCustomerSubscriptionRequest) GetKey() string { if x != nil { return x.Key } return "" } type RecreateCustomerSubscriptionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *RecreateCustomerSubscriptionResponse) Reset() { *x = RecreateCustomerSubscriptionResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RecreateCustomerSubscriptionResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RecreateCustomerSubscriptionResponse) ProtoMessage() {} func (x *RecreateCustomerSubscriptionResponse) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 RecreateCustomerSubscriptionResponse.ProtoReflect.Descriptor instead. func (*RecreateCustomerSubscriptionResponse) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{17} } type DeleteCustomerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } func (x *DeleteCustomerRequest) Reset() { *x = DeleteCustomerRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteCustomerRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteCustomerRequest) ProtoMessage() {} func (x *DeleteCustomerRequest) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 DeleteCustomerRequest.ProtoReflect.Descriptor instead. func (*DeleteCustomerRequest) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{18} } func (x *DeleteCustomerRequest) GetKey() string { if x != nil { return x.Key } return "" } type DeleteCustomerResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteCustomerResponse) Reset() { *x = DeleteCustomerResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteCustomerResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteCustomerResponse) ProtoMessage() {} func (x *DeleteCustomerResponse) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 DeleteCustomerResponse.ProtoReflect.Descriptor instead. func (*DeleteCustomerResponse) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{19} } type GetCustomerUsageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } func (x *GetCustomerUsageRequest) Reset() { *x = GetCustomerUsageRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetCustomerUsageRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetCustomerUsageRequest) ProtoMessage() {} func (x *GetCustomerUsageRequest) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_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 GetCustomerUsageRequest.ProtoReflect.Descriptor instead. func (*GetCustomerUsageRequest) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{20} } func (x *GetCustomerUsageRequest) GetKey() string { if x != nil { return x.Key } return "" } type GetCustomerUsageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Usage map[string]*Usage `protobuf:"bytes,1,rep,name=usage,proto3" json:"usage,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *GetCustomerUsageResponse) Reset() { *x = GetCustomerUsageResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetCustomerUsageResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetCustomerUsageResponse) ProtoMessage() {} func (x *GetCustomerUsageResponse) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_proto_msgTypes[21] 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 GetCustomerUsageResponse.ProtoReflect.Descriptor instead. func (*GetCustomerUsageResponse) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{21} } func (x *GetCustomerUsageResponse) GetUsage() map[string]*Usage { if x != nil { return x.Usage } return nil } type IncCustomerUsageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` ProductUsage map[string]int64 `protobuf:"bytes,2,rep,name=product_usage,json=productUsage,proto3" json:"product_usage,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` } func (x *IncCustomerUsageRequest) Reset() { *x = IncCustomerUsageRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IncCustomerUsageRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*IncCustomerUsageRequest) ProtoMessage() {} func (x *IncCustomerUsageRequest) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_proto_msgTypes[22] 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 IncCustomerUsageRequest.ProtoReflect.Descriptor instead. func (*IncCustomerUsageRequest) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{22} } func (x *IncCustomerUsageRequest) GetKey() string { if x != nil { return x.Key } return "" } func (x *IncCustomerUsageRequest) GetProductUsage() map[string]int64 { if x != nil { return x.ProductUsage } return nil } type IncCustomerUsageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DailyUsage map[string]*Usage `protobuf:"bytes,1,rep,name=daily_usage,json=dailyUsage,proto3" json:"daily_usage,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *IncCustomerUsageResponse) Reset() { *x = IncCustomerUsageResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IncCustomerUsageResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*IncCustomerUsageResponse) ProtoMessage() {} func (x *IncCustomerUsageResponse) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_proto_msgTypes[23] 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 IncCustomerUsageResponse.ProtoReflect.Descriptor instead. func (*IncCustomerUsageResponse) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{23} } func (x *IncCustomerUsageResponse) GetDailyUsage() map[string]*Usage { if x != nil { return x.DailyUsage } return nil } type ReportCustomerUsageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } func (x *ReportCustomerUsageRequest) Reset() { *x = ReportCustomerUsageRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ReportCustomerUsageRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ReportCustomerUsageRequest) ProtoMessage() {} func (x *ReportCustomerUsageRequest) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_proto_msgTypes[24] 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 ReportCustomerUsageRequest.ProtoReflect.Descriptor instead. func (*ReportCustomerUsageRequest) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{24} } func (x *ReportCustomerUsageRequest) GetKey() string { if x != nil { return x.Key } return "" } type ReportCustomerUsageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ReportCustomerUsageResponse) Reset() { *x = ReportCustomerUsageResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ReportCustomerUsageResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ReportCustomerUsageResponse) ProtoMessage() {} func (x *ReportCustomerUsageResponse) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_proto_msgTypes[25] 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 ReportCustomerUsageResponse.ProtoReflect.Descriptor instead. func (*ReportCustomerUsageResponse) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{25} } type IdentifyRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` AccountType int32 `protobuf:"varint,2,opt,name=account_type,json=accountType,proto3" json:"account_type,omitempty"` Active bool `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"` Email string `protobuf:"bytes,4,opt,name=email,proto3" json:"email,omitempty"` Properties map[string]string `protobuf:"bytes,5,rep,name=properties,proto3" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *IdentifyRequest) Reset() { *x = IdentifyRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IdentifyRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*IdentifyRequest) ProtoMessage() {} func (x *IdentifyRequest) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_proto_msgTypes[26] 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 IdentifyRequest.ProtoReflect.Descriptor instead. func (*IdentifyRequest) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{26} } func (x *IdentifyRequest) GetKey() string { if x != nil { return x.Key } return "" } func (x *IdentifyRequest) GetAccountType() int32 { if x != nil { return x.AccountType } return 0 } func (x *IdentifyRequest) GetActive() bool { if x != nil { return x.Active } return false } func (x *IdentifyRequest) GetEmail() string { if x != nil { return x.Email } return "" } func (x *IdentifyRequest) GetProperties() map[string]string { if x != nil { return x.Properties } return nil } type IdentifyResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *IdentifyResponse) Reset() { *x = IdentifyResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IdentifyResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*IdentifyResponse) ProtoMessage() {} func (x *IdentifyResponse) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_proto_msgTypes[27] 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 IdentifyResponse.ProtoReflect.Descriptor instead. func (*IdentifyResponse) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{27} } type TrackEventRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` AccountType int32 `protobuf:"varint,2,opt,name=account_type,json=accountType,proto3" json:"account_type,omitempty"` Active bool `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"` Event int32 `protobuf:"varint,4,opt,name=event,proto3" json:"event,omitempty"` Properties map[string]string `protobuf:"bytes,5,rep,name=properties,proto3" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *TrackEventRequest) Reset() { *x = TrackEventRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TrackEventRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*TrackEventRequest) ProtoMessage() {} func (x *TrackEventRequest) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_proto_msgTypes[28] 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 TrackEventRequest.ProtoReflect.Descriptor instead. func (*TrackEventRequest) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{28} } func (x *TrackEventRequest) GetKey() string { if x != nil { return x.Key } return "" } func (x *TrackEventRequest) GetAccountType() int32 { if x != nil { return x.AccountType } return 0 } func (x *TrackEventRequest) GetActive() bool { if x != nil { return x.Active } return false } func (x *TrackEventRequest) GetEvent() int32 { if x != nil { return x.Event } return 0 } func (x *TrackEventRequest) GetProperties() map[string]string { if x != nil { return x.Properties } return nil } type TrackEventResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *TrackEventResponse) Reset() { *x = TrackEventResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TrackEventResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*TrackEventResponse) ProtoMessage() {} func (x *TrackEventResponse) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_proto_msgTypes[29] 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 TrackEventResponse.ProtoReflect.Descriptor instead. func (*TrackEventResponse) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{29} } type CreateCustomerRequest_Params struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` AccountType int32 `protobuf:"varint,3,opt,name=account_type,json=accountType,proto3" json:"account_type,omitempty"` Username string `protobuf:"bytes,4,opt,name=username,proto3" json:"username,omitempty"` } func (x *CreateCustomerRequest_Params) Reset() { *x = CreateCustomerRequest_Params{} if protoimpl.UnsafeEnabled { mi := &file_api_billingd_pb_billingd_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateCustomerRequest_Params) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateCustomerRequest_Params) ProtoMessage() {} func (x *CreateCustomerRequest_Params) ProtoReflect() protoreflect.Message { mi := &file_api_billingd_pb_billingd_proto_msgTypes[30] 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 CreateCustomerRequest_Params.ProtoReflect.Descriptor instead. func (*CreateCustomerRequest_Params) Descriptor() ([]byte, []int) { return file_api_billingd_pb_billingd_proto_rawDescGZIP(), []int{4, 0} } func (x *CreateCustomerRequest_Params) GetKey() string { if x != nil { return x.Key } return "" } func (x *CreateCustomerRequest_Params) GetEmail() string { if x != nil { return x.Email } return "" } func (x *CreateCustomerRequest_Params) GetAccountType() int32 { if x != nil { return x.AccountType } return 0 } func (x *CreateCustomerRequest_Params) GetUsername() string { if x != nil { return x.Username } return "" } var File_api_billingd_pb_billingd_proto protoreflect.FileDescriptor var file_api_billingd_pb_billingd_proto_rawDesc = []byte{ 0x0a, 0x1e, 0x61, 0x70, 0x69, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2f, 0x70, 0x62, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x22, 0x42, 0x0a, 0x06, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x6e, 0x69, 0x78, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x75, 0x6e, 0x69, 0x78, 0x45, 0x6e, 0x64, 0x22, 0xc4, 0x01, 0x0a, 0x05, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x66, 0x72, 0x65, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x67, 0x72, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x52, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x15, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9a, 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x08, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x08, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x1a, 0x6f, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x22, 0x26, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0xa5, 0x05, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x62, 0x69, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x69, 0x6e, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x69, 0x6e, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x67, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, 0x6e, 0x64, 0x12, 0x3e, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x52, 0x0d, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x55, 0x0a, 0x0b, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x55, 0x0a, 0x0f, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5f, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x09, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x2d, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x2e, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x8e, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x62, 0x69, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x69, 0x6e, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x69, 0x6e, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x22, 0x18, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3e, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x52, 0x0d, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0x24, 0x0a, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x0a, 0x23, 0x52, 0x65, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x26, 0x0a, 0x24, 0x52, 0x65, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0xb8, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x50, 0x0a, 0x0a, 0x55, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xcd, 0x01, 0x0a, 0x17, 0x49, 0x6e, 0x63, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x5f, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x6e, 0x63, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x3f, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xcd, 0x01, 0x0a, 0x18, 0x49, 0x6e, 0x63, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0b, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x6e, 0x63, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x55, 0x0a, 0x0f, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2e, 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x85, 0x02, 0x0a, 0x0f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x50, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x12, 0x0a, 0x10, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x89, 0x02, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x14, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xf1, 0x0b, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5a, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8d, 0x01, 0x0a, 0x1c, 0x52, 0x65, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x10, 0x49, 0x6e, 0x63, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x6e, 0x63, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x6e, 0x63, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0a, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x69, 0x6f, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_api_billingd_pb_billingd_proto_rawDescOnce sync.Once file_api_billingd_pb_billingd_proto_rawDescData = file_api_billingd_pb_billingd_proto_rawDesc ) func file_api_billingd_pb_billingd_proto_rawDescGZIP() []byte { file_api_billingd_pb_billingd_proto_rawDescOnce.Do(func() { file_api_billingd_pb_billingd_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_billingd_pb_billingd_proto_rawDescData) }) return file_api_billingd_pb_billingd_proto_rawDescData } var file_api_billingd_pb_billingd_proto_msgTypes = make([]protoimpl.MessageInfo, 37) var file_api_billingd_pb_billingd_proto_goTypes = []interface{}{ (*Period)(nil), // 0: api.billingd.pb.Period (*Usage)(nil), // 1: api.billingd.pb.Usage (*CheckHealthRequest)(nil), // 2: api.billingd.pb.CheckHealthRequest (*CheckHealthResponse)(nil), // 3: api.billingd.pb.CheckHealthResponse (*CreateCustomerRequest)(nil), // 4: api.billingd.pb.CreateCustomerRequest (*CreateCustomerResponse)(nil), // 5: api.billingd.pb.CreateCustomerResponse (*GetCustomerRequest)(nil), // 6: api.billingd.pb.GetCustomerRequest (*GetCustomerResponse)(nil), // 7: api.billingd.pb.GetCustomerResponse (*ListDependentCustomersRequest)(nil), // 8: api.billingd.pb.ListDependentCustomersRequest (*ListDependentCustomersResponse)(nil), // 9: api.billingd.pb.ListDependentCustomersResponse (*GetCustomerSessionRequest)(nil), // 10: api.billingd.pb.GetCustomerSessionRequest (*GetCustomerSessionResponse)(nil), // 11: api.billingd.pb.GetCustomerSessionResponse (*UpdateCustomerRequest)(nil), // 12: api.billingd.pb.UpdateCustomerRequest (*UpdateCustomerResponse)(nil), // 13: api.billingd.pb.UpdateCustomerResponse (*UpdateCustomerSubscriptionRequest)(nil), // 14: api.billingd.pb.UpdateCustomerSubscriptionRequest (*UpdateCustomerSubscriptionResponse)(nil), // 15: api.billingd.pb.UpdateCustomerSubscriptionResponse (*RecreateCustomerSubscriptionRequest)(nil), // 16: api.billingd.pb.RecreateCustomerSubscriptionRequest (*RecreateCustomerSubscriptionResponse)(nil), // 17: api.billingd.pb.RecreateCustomerSubscriptionResponse (*DeleteCustomerRequest)(nil), // 18: api.billingd.pb.DeleteCustomerRequest (*DeleteCustomerResponse)(nil), // 19: api.billingd.pb.DeleteCustomerResponse (*GetCustomerUsageRequest)(nil), // 20: api.billingd.pb.GetCustomerUsageRequest (*GetCustomerUsageResponse)(nil), // 21: api.billingd.pb.GetCustomerUsageResponse (*IncCustomerUsageRequest)(nil), // 22: api.billingd.pb.IncCustomerUsageRequest (*IncCustomerUsageResponse)(nil), // 23: api.billingd.pb.IncCustomerUsageResponse (*ReportCustomerUsageRequest)(nil), // 24: api.billingd.pb.ReportCustomerUsageRequest (*ReportCustomerUsageResponse)(nil), // 25: api.billingd.pb.ReportCustomerUsageResponse (*IdentifyRequest)(nil), // 26: api.billingd.pb.IdentifyRequest (*IdentifyResponse)(nil), // 27: api.billingd.pb.IdentifyResponse (*TrackEventRequest)(nil), // 28: api.billingd.pb.TrackEventRequest (*TrackEventResponse)(nil), // 29: api.billingd.pb.TrackEventResponse (*CreateCustomerRequest_Params)(nil), // 30: api.billingd.pb.CreateCustomerRequest.Params nil, // 31: api.billingd.pb.GetCustomerResponse.DailyUsageEntry nil, // 32: api.billingd.pb.GetCustomerUsageResponse.UsageEntry nil, // 33: api.billingd.pb.IncCustomerUsageRequest.ProductUsageEntry nil, // 34: api.billingd.pb.IncCustomerUsageResponse.DailyUsageEntry nil, // 35: api.billingd.pb.IdentifyRequest.PropertiesEntry nil, // 36: api.billingd.pb.TrackEventRequest.PropertiesEntry } var file_api_billingd_pb_billingd_proto_depIdxs = []int32{ 0, // 0: api.billingd.pb.Usage.period:type_name -> api.billingd.pb.Period 30, // 1: api.billingd.pb.CreateCustomerRequest.customer:type_name -> api.billingd.pb.CreateCustomerRequest.Params 30, // 2: api.billingd.pb.CreateCustomerRequest.parent:type_name -> api.billingd.pb.CreateCustomerRequest.Params 0, // 3: api.billingd.pb.GetCustomerResponse.invoice_period:type_name -> api.billingd.pb.Period 31, // 4: api.billingd.pb.GetCustomerResponse.daily_usage:type_name -> api.billingd.pb.GetCustomerResponse.DailyUsageEntry 7, // 5: api.billingd.pb.ListDependentCustomersResponse.customers:type_name -> api.billingd.pb.GetCustomerResponse 0, // 6: api.billingd.pb.UpdateCustomerSubscriptionRequest.invoice_period:type_name -> api.billingd.pb.Period 32, // 7: api.billingd.pb.GetCustomerUsageResponse.usage:type_name -> api.billingd.pb.GetCustomerUsageResponse.UsageEntry 33, // 8: api.billingd.pb.IncCustomerUsageRequest.product_usage:type_name -> api.billingd.pb.IncCustomerUsageRequest.ProductUsageEntry 34, // 9: api.billingd.pb.IncCustomerUsageResponse.daily_usage:type_name -> api.billingd.pb.IncCustomerUsageResponse.DailyUsageEntry 35, // 10: api.billingd.pb.IdentifyRequest.properties:type_name -> api.billingd.pb.IdentifyRequest.PropertiesEntry 36, // 11: api.billingd.pb.TrackEventRequest.properties:type_name -> api.billingd.pb.TrackEventRequest.PropertiesEntry 1, // 12: api.billingd.pb.GetCustomerResponse.DailyUsageEntry.value:type_name -> api.billingd.pb.Usage 1, // 13: api.billingd.pb.GetCustomerUsageResponse.UsageEntry.value:type_name -> api.billingd.pb.Usage 1, // 14: api.billingd.pb.IncCustomerUsageResponse.DailyUsageEntry.value:type_name -> api.billingd.pb.Usage 2, // 15: api.billingd.pb.APIService.CheckHealth:input_type -> api.billingd.pb.CheckHealthRequest 4, // 16: api.billingd.pb.APIService.CreateCustomer:input_type -> api.billingd.pb.CreateCustomerRequest 6, // 17: api.billingd.pb.APIService.GetCustomer:input_type -> api.billingd.pb.GetCustomerRequest 8, // 18: api.billingd.pb.APIService.ListDependentCustomers:input_type -> api.billingd.pb.ListDependentCustomersRequest 10, // 19: api.billingd.pb.APIService.GetCustomerSession:input_type -> api.billingd.pb.GetCustomerSessionRequest 12, // 20: api.billingd.pb.APIService.UpdateCustomer:input_type -> api.billingd.pb.UpdateCustomerRequest 14, // 21: api.billingd.pb.APIService.UpdateCustomerSubscription:input_type -> api.billingd.pb.UpdateCustomerSubscriptionRequest 16, // 22: api.billingd.pb.APIService.RecreateCustomerSubscription:input_type -> api.billingd.pb.RecreateCustomerSubscriptionRequest 18, // 23: api.billingd.pb.APIService.DeleteCustomer:input_type -> api.billingd.pb.DeleteCustomerRequest 20, // 24: api.billingd.pb.APIService.GetCustomerUsage:input_type -> api.billingd.pb.GetCustomerUsageRequest 22, // 25: api.billingd.pb.APIService.IncCustomerUsage:input_type -> api.billingd.pb.IncCustomerUsageRequest 24, // 26: api.billingd.pb.APIService.ReportCustomerUsage:input_type -> api.billingd.pb.ReportCustomerUsageRequest 26, // 27: api.billingd.pb.APIService.Identify:input_type -> api.billingd.pb.IdentifyRequest 28, // 28: api.billingd.pb.APIService.TrackEvent:input_type -> api.billingd.pb.TrackEventRequest 3, // 29: api.billingd.pb.APIService.CheckHealth:output_type -> api.billingd.pb.CheckHealthResponse 5, // 30: api.billingd.pb.APIService.CreateCustomer:output_type -> api.billingd.pb.CreateCustomerResponse 7, // 31: api.billingd.pb.APIService.GetCustomer:output_type -> api.billingd.pb.GetCustomerResponse 9, // 32: api.billingd.pb.APIService.ListDependentCustomers:output_type -> api.billingd.pb.ListDependentCustomersResponse 11, // 33: api.billingd.pb.APIService.GetCustomerSession:output_type -> api.billingd.pb.GetCustomerSessionResponse 13, // 34: api.billingd.pb.APIService.UpdateCustomer:output_type -> api.billingd.pb.UpdateCustomerResponse 15, // 35: api.billingd.pb.APIService.UpdateCustomerSubscription:output_type -> api.billingd.pb.UpdateCustomerSubscriptionResponse 17, // 36: api.billingd.pb.APIService.RecreateCustomerSubscription:output_type -> api.billingd.pb.RecreateCustomerSubscriptionResponse 19, // 37: api.billingd.pb.APIService.DeleteCustomer:output_type -> api.billingd.pb.DeleteCustomerResponse 21, // 38: api.billingd.pb.APIService.GetCustomerUsage:output_type -> api.billingd.pb.GetCustomerUsageResponse 23, // 39: api.billingd.pb.APIService.IncCustomerUsage:output_type -> api.billingd.pb.IncCustomerUsageResponse 25, // 40: api.billingd.pb.APIService.ReportCustomerUsage:output_type -> api.billingd.pb.ReportCustomerUsageResponse 27, // 41: api.billingd.pb.APIService.Identify:output_type -> api.billingd.pb.IdentifyResponse 29, // 42: api.billingd.pb.APIService.TrackEvent:output_type -> api.billingd.pb.TrackEventResponse 29, // [29:43] is the sub-list for method output_type 15, // [15:29] is the sub-list for method input_type 15, // [15:15] is the sub-list for extension type_name 15, // [15:15] is the sub-list for extension extendee 0, // [0:15] is the sub-list for field type_name } func init() { file_api_billingd_pb_billingd_proto_init() } func file_api_billingd_pb_billingd_proto_init() { if File_api_billingd_pb_billingd_proto != nil { return } if !protoimpl.UnsafeEnabled { file_api_billingd_pb_billingd_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Period); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Usage); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckHealthRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckHealthResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateCustomerRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateCustomerResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCustomerRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCustomerResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListDependentCustomersRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListDependentCustomersResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCustomerSessionRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCustomerSessionResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateCustomerRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateCustomerResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateCustomerSubscriptionRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateCustomerSubscriptionResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RecreateCustomerSubscriptionRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RecreateCustomerSubscriptionResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteCustomerRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteCustomerResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCustomerUsageRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCustomerUsageResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IncCustomerUsageRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IncCustomerUsageResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReportCustomerUsageRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReportCustomerUsageResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IdentifyRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IdentifyResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TrackEventRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TrackEventResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_billingd_pb_billingd_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateCustomerRequest_Params); 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_api_billingd_pb_billingd_proto_rawDesc, NumEnums: 0, NumMessages: 37, NumExtensions: 0, NumServices: 1, }, GoTypes: file_api_billingd_pb_billingd_proto_goTypes, DependencyIndexes: file_api_billingd_pb_billingd_proto_depIdxs, MessageInfos: file_api_billingd_pb_billingd_proto_msgTypes, }.Build() File_api_billingd_pb_billingd_proto = out.File file_api_billingd_pb_billingd_proto_rawDesc = nil file_api_billingd_pb_billingd_proto_goTypes = nil file_api_billingd_pb_billingd_proto_depIdxs = nil } // Reference imports to suppress errors if they are not otherwise used. var _ context.Context var _ grpc.ClientConnInterface // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. const _ = grpc.SupportPackageIsVersion6 // APIServiceClient is the client API for APIService service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type APIServiceClient interface { CheckHealth(ctx context.Context, in *CheckHealthRequest, opts ...grpc.CallOption) (*CheckHealthResponse, error) CreateCustomer(ctx context.Context, in *CreateCustomerRequest, opts ...grpc.CallOption) (*CreateCustomerResponse, error) GetCustomer(ctx context.Context, in *GetCustomerRequest, opts ...grpc.CallOption) (*GetCustomerResponse, error) ListDependentCustomers(ctx context.Context, in *ListDependentCustomersRequest, opts ...grpc.CallOption) (*ListDependentCustomersResponse, error) GetCustomerSession(ctx context.Context, in *GetCustomerSessionRequest, opts ...grpc.CallOption) (*GetCustomerSessionResponse, error) UpdateCustomer(ctx context.Context, in *UpdateCustomerRequest, opts ...grpc.CallOption) (*UpdateCustomerResponse, error) UpdateCustomerSubscription(ctx context.Context, in *UpdateCustomerSubscriptionRequest, opts ...grpc.CallOption) (*UpdateCustomerSubscriptionResponse, error) RecreateCustomerSubscription(ctx context.Context, in *RecreateCustomerSubscriptionRequest, opts ...grpc.CallOption) (*RecreateCustomerSubscriptionResponse, error) DeleteCustomer(ctx context.Context, in *DeleteCustomerRequest, opts ...grpc.CallOption) (*DeleteCustomerResponse, error) GetCustomerUsage(ctx context.Context, in *GetCustomerUsageRequest, opts ...grpc.CallOption) (*GetCustomerUsageResponse, error) IncCustomerUsage(ctx context.Context, in *IncCustomerUsageRequest, opts ...grpc.CallOption) (*IncCustomerUsageResponse, error) ReportCustomerUsage(ctx context.Context, in *ReportCustomerUsageRequest, opts ...grpc.CallOption) (*ReportCustomerUsageResponse, error) Identify(ctx context.Context, in *IdentifyRequest, opts ...grpc.CallOption) (*IdentifyResponse, error) TrackEvent(ctx context.Context, in *TrackEventRequest, opts ...grpc.CallOption) (*TrackEventResponse, error) } type aPIServiceClient struct { cc grpc.ClientConnInterface } func NewAPIServiceClient(cc grpc.ClientConnInterface) APIServiceClient { return &aPIServiceClient{cc} } func (c *aPIServiceClient) CheckHealth(ctx context.Context, in *CheckHealthRequest, opts ...grpc.CallOption) (*CheckHealthResponse, error) { out := new(CheckHealthResponse) err := c.cc.Invoke(ctx, "/api.billingd.pb.APIService/CheckHealth", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) CreateCustomer(ctx context.Context, in *CreateCustomerRequest, opts ...grpc.CallOption) (*CreateCustomerResponse, error) { out := new(CreateCustomerResponse) err := c.cc.Invoke(ctx, "/api.billingd.pb.APIService/CreateCustomer", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) GetCustomer(ctx context.Context, in *GetCustomerRequest, opts ...grpc.CallOption) (*GetCustomerResponse, error) { out := new(GetCustomerResponse) err := c.cc.Invoke(ctx, "/api.billingd.pb.APIService/GetCustomer", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) ListDependentCustomers(ctx context.Context, in *ListDependentCustomersRequest, opts ...grpc.CallOption) (*ListDependentCustomersResponse, error) { out := new(ListDependentCustomersResponse) err := c.cc.Invoke(ctx, "/api.billingd.pb.APIService/ListDependentCustomers", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) GetCustomerSession(ctx context.Context, in *GetCustomerSessionRequest, opts ...grpc.CallOption) (*GetCustomerSessionResponse, error) { out := new(GetCustomerSessionResponse) err := c.cc.Invoke(ctx, "/api.billingd.pb.APIService/GetCustomerSession", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) UpdateCustomer(ctx context.Context, in *UpdateCustomerRequest, opts ...grpc.CallOption) (*UpdateCustomerResponse, error) { out := new(UpdateCustomerResponse) err := c.cc.Invoke(ctx, "/api.billingd.pb.APIService/UpdateCustomer", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) UpdateCustomerSubscription(ctx context.Context, in *UpdateCustomerSubscriptionRequest, opts ...grpc.CallOption) (*UpdateCustomerSubscriptionResponse, error) { out := new(UpdateCustomerSubscriptionResponse) err := c.cc.Invoke(ctx, "/api.billingd.pb.APIService/UpdateCustomerSubscription", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) RecreateCustomerSubscription(ctx context.Context, in *RecreateCustomerSubscriptionRequest, opts ...grpc.CallOption) (*RecreateCustomerSubscriptionResponse, error) { out := new(RecreateCustomerSubscriptionResponse) err := c.cc.Invoke(ctx, "/api.billingd.pb.APIService/RecreateCustomerSubscription", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) DeleteCustomer(ctx context.Context, in *DeleteCustomerRequest, opts ...grpc.CallOption) (*DeleteCustomerResponse, error) { out := new(DeleteCustomerResponse) err := c.cc.Invoke(ctx, "/api.billingd.pb.APIService/DeleteCustomer", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) GetCustomerUsage(ctx context.Context, in *GetCustomerUsageRequest, opts ...grpc.CallOption) (*GetCustomerUsageResponse, error) { out := new(GetCustomerUsageResponse) err := c.cc.Invoke(ctx, "/api.billingd.pb.APIService/GetCustomerUsage", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) IncCustomerUsage(ctx context.Context, in *IncCustomerUsageRequest, opts ...grpc.CallOption) (*IncCustomerUsageResponse, error) { out := new(IncCustomerUsageResponse) err := c.cc.Invoke(ctx, "/api.billingd.pb.APIService/IncCustomerUsage", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) ReportCustomerUsage(ctx context.Context, in *ReportCustomerUsageRequest, opts ...grpc.CallOption) (*ReportCustomerUsageResponse, error) { out := new(ReportCustomerUsageResponse) err := c.cc.Invoke(ctx, "/api.billingd.pb.APIService/ReportCustomerUsage", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) Identify(ctx context.Context, in *IdentifyRequest, opts ...grpc.CallOption) (*IdentifyResponse, error) { out := new(IdentifyResponse) err := c.cc.Invoke(ctx, "/api.billingd.pb.APIService/Identify", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) TrackEvent(ctx context.Context, in *TrackEventRequest, opts ...grpc.CallOption) (*TrackEventResponse, error) { out := new(TrackEventResponse) err := c.cc.Invoke(ctx, "/api.billingd.pb.APIService/TrackEvent", in, out, opts...) if err != nil { return nil, err } return out, nil } // APIServiceServer is the server API for APIService service. type APIServiceServer interface { CheckHealth(context.Context, *CheckHealthRequest) (*CheckHealthResponse, error) CreateCustomer(context.Context, *CreateCustomerRequest) (*CreateCustomerResponse, error) GetCustomer(context.Context, *GetCustomerRequest) (*GetCustomerResponse, error) ListDependentCustomers(context.Context, *ListDependentCustomersRequest) (*ListDependentCustomersResponse, error) GetCustomerSession(context.Context, *GetCustomerSessionRequest) (*GetCustomerSessionResponse, error) UpdateCustomer(context.Context, *UpdateCustomerRequest) (*UpdateCustomerResponse, error) UpdateCustomerSubscription(context.Context, *UpdateCustomerSubscriptionRequest) (*UpdateCustomerSubscriptionResponse, error) RecreateCustomerSubscription(context.Context, *RecreateCustomerSubscriptionRequest) (*RecreateCustomerSubscriptionResponse, error) DeleteCustomer(context.Context, *DeleteCustomerRequest) (*DeleteCustomerResponse, error) GetCustomerUsage(context.Context, *GetCustomerUsageRequest) (*GetCustomerUsageResponse, error) IncCustomerUsage(context.Context, *IncCustomerUsageRequest) (*IncCustomerUsageResponse, error) ReportCustomerUsage(context.Context, *ReportCustomerUsageRequest) (*ReportCustomerUsageResponse, error) Identify(context.Context, *IdentifyRequest) (*IdentifyResponse, error) TrackEvent(context.Context, *TrackEventRequest) (*TrackEventResponse, error) } // UnimplementedAPIServiceServer can be embedded to have forward compatible implementations. type UnimplementedAPIServiceServer struct { } func (*UnimplementedAPIServiceServer) CheckHealth(context.Context, *CheckHealthRequest) (*CheckHealthResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CheckHealth not implemented") } func (*UnimplementedAPIServiceServer) CreateCustomer(context.Context, *CreateCustomerRequest) (*CreateCustomerResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateCustomer not implemented") } func (*UnimplementedAPIServiceServer) GetCustomer(context.Context, *GetCustomerRequest) (*GetCustomerResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetCustomer not implemented") } func (*UnimplementedAPIServiceServer) ListDependentCustomers(context.Context, *ListDependentCustomersRequest) (*ListDependentCustomersResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListDependentCustomers not implemented") } func (*UnimplementedAPIServiceServer) GetCustomerSession(context.Context, *GetCustomerSessionRequest) (*GetCustomerSessionResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetCustomerSession not implemented") } func (*UnimplementedAPIServiceServer) UpdateCustomer(context.Context, *UpdateCustomerRequest) (*UpdateCustomerResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateCustomer not implemented") } func (*UnimplementedAPIServiceServer) UpdateCustomerSubscription(context.Context, *UpdateCustomerSubscriptionRequest) (*UpdateCustomerSubscriptionResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateCustomerSubscription not implemented") } func (*UnimplementedAPIServiceServer) RecreateCustomerSubscription(context.Context, *RecreateCustomerSubscriptionRequest) (*RecreateCustomerSubscriptionResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RecreateCustomerSubscription not implemented") } func (*UnimplementedAPIServiceServer) DeleteCustomer(context.Context, *DeleteCustomerRequest) (*DeleteCustomerResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteCustomer not implemented") } func (*UnimplementedAPIServiceServer) GetCustomerUsage(context.Context, *GetCustomerUsageRequest) (*GetCustomerUsageResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetCustomerUsage not implemented") } func (*UnimplementedAPIServiceServer) IncCustomerUsage(context.Context, *IncCustomerUsageRequest) (*IncCustomerUsageResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method IncCustomerUsage not implemented") } func (*UnimplementedAPIServiceServer) ReportCustomerUsage(context.Context, *ReportCustomerUsageRequest) (*ReportCustomerUsageResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ReportCustomerUsage not implemented") } func (*UnimplementedAPIServiceServer) Identify(context.Context, *IdentifyRequest) (*IdentifyResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Identify not implemented") } func (*UnimplementedAPIServiceServer) TrackEvent(context.Context, *TrackEventRequest) (*TrackEventResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method TrackEvent not implemented") } func RegisterAPIServiceServer(s *grpc.Server, srv APIServiceServer) { s.RegisterService(&_APIService_serviceDesc, srv) } func _APIService_CheckHealth_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CheckHealthRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).CheckHealth(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.billingd.pb.APIService/CheckHealth", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).CheckHealth(ctx, req.(*CheckHealthRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_CreateCustomer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateCustomerRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).CreateCustomer(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.billingd.pb.APIService/CreateCustomer", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).CreateCustomer(ctx, req.(*CreateCustomerRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_GetCustomer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetCustomerRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).GetCustomer(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.billingd.pb.APIService/GetCustomer", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).GetCustomer(ctx, req.(*GetCustomerRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_ListDependentCustomers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListDependentCustomersRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).ListDependentCustomers(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.billingd.pb.APIService/ListDependentCustomers", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).ListDependentCustomers(ctx, req.(*ListDependentCustomersRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_GetCustomerSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetCustomerSessionRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).GetCustomerSession(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.billingd.pb.APIService/GetCustomerSession", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).GetCustomerSession(ctx, req.(*GetCustomerSessionRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_UpdateCustomer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(UpdateCustomerRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).UpdateCustomer(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.billingd.pb.APIService/UpdateCustomer", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).UpdateCustomer(ctx, req.(*UpdateCustomerRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_UpdateCustomerSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(UpdateCustomerSubscriptionRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).UpdateCustomerSubscription(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.billingd.pb.APIService/UpdateCustomerSubscription", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).UpdateCustomerSubscription(ctx, req.(*UpdateCustomerSubscriptionRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_RecreateCustomerSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RecreateCustomerSubscriptionRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).RecreateCustomerSubscription(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.billingd.pb.APIService/RecreateCustomerSubscription", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).RecreateCustomerSubscription(ctx, req.(*RecreateCustomerSubscriptionRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_DeleteCustomer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteCustomerRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).DeleteCustomer(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.billingd.pb.APIService/DeleteCustomer", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).DeleteCustomer(ctx, req.(*DeleteCustomerRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_GetCustomerUsage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetCustomerUsageRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).GetCustomerUsage(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.billingd.pb.APIService/GetCustomerUsage", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).GetCustomerUsage(ctx, req.(*GetCustomerUsageRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_IncCustomerUsage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(IncCustomerUsageRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).IncCustomerUsage(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.billingd.pb.APIService/IncCustomerUsage", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).IncCustomerUsage(ctx, req.(*IncCustomerUsageRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_ReportCustomerUsage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ReportCustomerUsageRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).ReportCustomerUsage(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.billingd.pb.APIService/ReportCustomerUsage", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).ReportCustomerUsage(ctx, req.(*ReportCustomerUsageRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_Identify_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(IdentifyRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).Identify(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.billingd.pb.APIService/Identify", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).Identify(ctx, req.(*IdentifyRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_TrackEvent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(TrackEventRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).TrackEvent(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.billingd.pb.APIService/TrackEvent", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).TrackEvent(ctx, req.(*TrackEventRequest)) } return interceptor(ctx, in, info, handler) } var _APIService_serviceDesc = grpc.ServiceDesc{ ServiceName: "api.billingd.pb.APIService", HandlerType: (*APIServiceServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "CheckHealth", Handler: _APIService_CheckHealth_Handler, }, { MethodName: "CreateCustomer", Handler: _APIService_CreateCustomer_Handler, }, { MethodName: "GetCustomer", Handler: _APIService_GetCustomer_Handler, }, { MethodName: "ListDependentCustomers", Handler: _APIService_ListDependentCustomers_Handler, }, { MethodName: "GetCustomerSession", Handler: _APIService_GetCustomerSession_Handler, }, { MethodName: "UpdateCustomer", Handler: _APIService_UpdateCustomer_Handler, }, { MethodName: "UpdateCustomerSubscription", Handler: _APIService_UpdateCustomerSubscription_Handler, }, { MethodName: "RecreateCustomerSubscription", Handler: _APIService_RecreateCustomerSubscription_Handler, }, { MethodName: "DeleteCustomer", Handler: _APIService_DeleteCustomer_Handler, }, { MethodName: "GetCustomerUsage", Handler: _APIService_GetCustomerUsage_Handler, }, { MethodName: "IncCustomerUsage", Handler: _APIService_IncCustomerUsage_Handler, }, { MethodName: "ReportCustomerUsage", Handler: _APIService_ReportCustomerUsage_Handler, }, { MethodName: "Identify", Handler: _APIService_Identify_Handler, }, { MethodName: "TrackEvent", Handler: _APIService_TrackEvent_Handler, }, }, Streams: []grpc.StreamDesc{}, Metadata: "api/billingd/pb/billingd.proto", } ================================================ FILE: api/billingd/pb/billingd.proto ================================================ syntax = "proto3"; package api.billingd.pb; option go_package = "github.com/textileio/textile/v2/api/billingd/pb"; message Period { int64 unix_start = 1; int64 unix_end = 2; } message Usage { string description = 1; int64 units = 2; int64 total = 3; int64 free = 4; int64 grace = 5; double cost = 6; Period period = 7; } message CheckHealthRequest {} message CheckHealthResponse {} message CreateCustomerRequest { Params customer = 1; Params parent = 2; message Params { string key = 1; string email = 2; int32 account_type = 3; string username = 4; } } message CreateCustomerResponse { string customer_id = 1; } message GetCustomerRequest { string key = 1; } message GetCustomerResponse { string key = 1; string customer_id = 2; string parent_key = 3; string email = 4; int32 account_type = 5; string account_status = 6; string subscription_status = 7; int64 balance = 8; bool billable = 9; bool delinquent = 10; int64 created_at = 11; int64 grace_period_end = 12; Period invoice_period = 13; map daily_usage = 14; int64 dependents = 15; } message ListDependentCustomersRequest { string key = 1; int64 offset = 2; int64 limit = 3; } message ListDependentCustomersResponse { repeated GetCustomerResponse customers = 1; int64 next_offset = 2; } message GetCustomerSessionRequest { string key = 1; } message GetCustomerSessionResponse { string url = 1; } message UpdateCustomerRequest { string customer_id = 1; int64 balance = 2; bool billable = 3; bool delinquent = 4; } message UpdateCustomerResponse {} message UpdateCustomerSubscriptionRequest { string customer_id = 1; string status = 2; Period invoice_period = 3; } message UpdateCustomerSubscriptionResponse {} message RecreateCustomerSubscriptionRequest { string key = 1; } message RecreateCustomerSubscriptionResponse {} message DeleteCustomerRequest { string key = 1; } message DeleteCustomerResponse {} message GetCustomerUsageRequest { string key = 1; } message GetCustomerUsageResponse { map usage = 1; } message IncCustomerUsageRequest { string key = 1; map product_usage = 2; } message IncCustomerUsageResponse { map daily_usage = 1; } message ReportCustomerUsageRequest { string key = 1; } message ReportCustomerUsageResponse {} message IdentifyRequest { string key = 1; int32 account_type = 2; bool active = 3; string email = 4; map properties = 5; } message IdentifyResponse {} message TrackEventRequest { string key = 1; int32 account_type = 2; bool active = 3; int32 event = 4; map properties = 5; } message TrackEventResponse {} service APIService { rpc CheckHealth(CheckHealthRequest) returns (CheckHealthResponse) {} rpc CreateCustomer(CreateCustomerRequest) returns (CreateCustomerResponse) {} rpc GetCustomer(GetCustomerRequest) returns (GetCustomerResponse) {} rpc ListDependentCustomers(ListDependentCustomersRequest) returns (ListDependentCustomersResponse) {} rpc GetCustomerSession(GetCustomerSessionRequest) returns (GetCustomerSessionResponse) {} rpc UpdateCustomer(UpdateCustomerRequest) returns (UpdateCustomerResponse) {} rpc UpdateCustomerSubscription(UpdateCustomerSubscriptionRequest) returns (UpdateCustomerSubscriptionResponse) {} rpc RecreateCustomerSubscription(RecreateCustomerSubscriptionRequest) returns (RecreateCustomerSubscriptionResponse) {} rpc DeleteCustomer(DeleteCustomerRequest) returns (DeleteCustomerResponse) {} rpc GetCustomerUsage(GetCustomerUsageRequest) returns (GetCustomerUsageResponse) {} rpc IncCustomerUsage(IncCustomerUsageRequest) returns (IncCustomerUsageResponse) {} rpc ReportCustomerUsage(ReportCustomerUsageRequest) returns (ReportCustomerUsageResponse) {} rpc Identify(IdentifyRequest) returns (IdentifyResponse) {} rpc TrackEvent(TrackEventRequest) returns (TrackEventResponse) {} } ================================================ FILE: api/billingd/service/service.go ================================================ package service import ( "context" "crypto/tls" "errors" "fmt" "math" "net" "net/http" "strings" "time" "github.com/hashicorp/go-multierror" logging "github.com/ipfs/go-log/v2" ma "github.com/multiformats/go-multiaddr" cron "github.com/robfig/cron/v3" stripe "github.com/stripe/stripe-go/v72" stripec "github.com/stripe/stripe-go/v72/client" nutil "github.com/textileio/go-threads/net/util" "github.com/textileio/go-threads/util" "github.com/textileio/textile/v2/api/billingd/analytics" "github.com/textileio/textile/v2/api/billingd/common" "github.com/textileio/textile/v2/api/billingd/gateway" "github.com/textileio/textile/v2/api/billingd/migrations" pb "github.com/textileio/textile/v2/api/billingd/pb" mdb "github.com/textileio/textile/v2/mongodb" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" "golang.org/x/net/http2" "google.golang.org/grpc" ) const ( numDaysPerMonth = 30.4167 unitPricePrecision = 1e12 reporterTimeout = time.Hour defaultPageSize = 25 maxPageSize = 1000 mib = 1024 * 1024 gib = 1024 * mib duplicateKeyMsg = "E11000 duplicate key error" ) var ( log = logging.Logger("billing") // ErrCustomerExists indicates a customer already exists. ErrCustomerExists = errors.New("customer already exists") ) type Product struct { Key string `bson:"_id"` Name string `bson:"name"` Price float64 `bson:"price"` PriceType PriceType `bson:"price_type"` FreeQuotaSize int64 `bson:"free_quota_size"` FreeQuotaGracePeriodSize int64 `bson:"free_quota_grace_period_size"` FreeQuotaInterval FreeQuotaInterval `bson:"free_quota_interval"` Units string `bson:"units"` UnitSize int64 `bson:"unit_size"` FreePriceID string `bson:"free_price_id"` PaidPriceID string `bson:"paid_price_id"` } type PriceType string const ( PriceTypeTemporal PriceType = "temporal" PriceTypeIncremental = "incremental" ) type FreeQuotaInterval string const ( FreeQuotaMonthly FreeQuotaInterval = "monthly" FreeQuotaDaily = "daily" ) var Products = []Product{ { Key: "stored_data", Name: "Stored data", Price: 0.03 / gib, PriceType: PriceTypeTemporal, FreeQuotaSize: 5 * gib, FreeQuotaGracePeriodSize: 1000 * gib, FreeQuotaInterval: FreeQuotaMonthly, Units: "bytes", UnitSize: 8 * mib, }, { Key: "network_egress", Name: "Network egress", Price: 0.1 / gib, PriceType: PriceTypeIncremental, FreeQuotaSize: 10 * gib, FreeQuotaGracePeriodSize: 1000 * gib, FreeQuotaInterval: FreeQuotaMonthly, Units: "bytes", UnitSize: 8 * mib, }, { Key: "instance_reads", Name: "ThreadDB reads", Price: 0.1 / 100000, PriceType: PriceTypeIncremental, FreeQuotaSize: 50000, FreeQuotaGracePeriodSize: 1000000, FreeQuotaInterval: FreeQuotaDaily, UnitSize: 100, }, { Key: "instance_writes", Name: "ThreadDB writes", Price: 0.2 / 100000, PriceType: PriceTypeIncremental, FreeQuotaSize: 20000, FreeQuotaGracePeriodSize: 1000000, FreeQuotaInterval: FreeQuotaDaily, UnitSize: 100, }, } type Customer struct { Key string `bson:"_id"` CustomerID string `bson:"customer_id"` ParentKey string `bson:"parent_key"` Email string `bson:"email"` AccountType mdb.AccountType `bson:"account_type"` SubscriptionStatus string `bson:"subscription_status"` Balance int64 `bson:"balance"` Billable bool `bson:"billable"` Delinquent bool `bson:"delinquent"` CreatedAt int64 `bson:"created_at"` GracePeriodStart int64 `bson:"grace_period_start"` InvoicePeriod Period `bson:"invoice_period"` DailyUsage map[string]Usage `bson:"daily_usage"` } type Period struct { UnixStart int64 `bson:"unix_start"` UnixEnd int64 `bson:"unix_end"` } type Usage struct { Total int64 `bson:"total"` FreeItemID string `bson:"free_item_id"` PaidItemID string `bson:"paid_item_id"` } func (c *Customer) AccountStatus() string { if c.ParentKey != "" { return "dependent" } else if c.Delinquent { return "delinquent" } else if c.Billable { return "pay-as-you-go" } else { return "free-quota-only" } } type Service struct { config Config analytics *analytics.Client server *grpc.Server stripe *stripec.API gateway *gateway.Gateway reporter *cron.Cron semaphores *nutil.SemaphorePool pdb *mongo.Collection cdb *mongo.Collection products map[string]Product } var _ pb.APIServiceServer = (*Service)(nil) var _ nutil.SemaphoreKey = (*customerLock)(nil) type customerLock string func (l customerLock) Key() string { return string(l) } type Config struct { ListenAddr ma.Multiaddr StripeAPIURL string StripeAPIKey string StripeSessionReturnURL string StripeWebhookSecret string SegmentAPIKey string SegmentPrefix string DBURI string DBName string GatewayHostAddr ma.Multiaddr FreeQuotaGracePeriod time.Duration Debug bool } func NewService(ctx context.Context, config Config) (*Service, error) { if config.Debug { if err := util.SetLogLevels(map[string]logging.LogLevel{ "billing": logging.LevelDebug, }); err != nil { return nil, err } } sc, err := newStripeClient(config.StripeAPIURL, config.StripeAPIKey) if err != nil { return nil, err } // Configure analytics client ac, err := analytics.NewClient(config.SegmentAPIKey, config.SegmentPrefix, config.Debug) if err != nil { return nil, err } client, err := mongo.Connect(ctx, options.Client().ApplyURI(config.DBURI)) if err != nil { return nil, err } db := client.Database(config.DBName) if err = migrations.Migrate(db); err != nil { return nil, err } pdb := db.Collection("products") cdb := db.Collection("customers") indexes, err := cdb.Indexes().CreateMany(ctx, []mongo.IndexModel{ { Keys: bson.D{{"customer_id", 1}}, Options: options.Index().SetUnique(true).SetSparse(true), }, { Keys: bson.D{{"parent_key", 1}, {"created_at", 1}}, }, }) if err != nil { return nil, err } for _, index := range indexes { log.Infof("created index: %s", index) } s := &Service{ config: config, stripe: sc, analytics: ac, reporter: cron.New(), pdb: pdb, cdb: cdb, products: make(map[string]Product), } s.gateway, err = gateway.NewGateway(gateway.Config{ Addr: config.GatewayHostAddr, APIAddr: config.ListenAddr, StripeWebhookSecret: config.StripeWebhookSecret, Debug: config.Debug, }) if err != nil { return nil, err } if _, err := s.reporter.AddFunc("@daily", func() { if err := s.reportUsage(); err != nil { log.Errorf("reporting usage: %v", err) } }); err != nil { return nil, err } for _, product := range Products { var doc Product if _, err := pdb.InsertOne(ctx, product); err != nil && strings.Contains(err.Error(), duplicateKeyMsg) { r := pdb.FindOne(ctx, bson.M{"_id": product.Key}) if r.Err() != nil { return nil, r.Err() } if err := r.Decode(&doc); err != nil { return nil, err } } else if err == nil { doc = product doc.FreePriceID, err = s.createPrice(sc, doc.Name+" (free quota)", 0) if err != nil { return nil, err } up := getUnitPrice(doc) doc.PaidPriceID, err = s.createPrice(sc, doc.Name, up) if err != nil { return nil, err } if _, err = pdb.UpdateOne(ctx, bson.M{"_id": doc.Key}, bson.M{"$set": doc}); err != nil { return nil, err } } else { return nil, err } s.products[product.Key] = doc } return s, nil } func getUnitPrice(product Product) float64 { var unitPrice float64 switch product.FreeQuotaInterval { case FreeQuotaMonthly: unitPrice = product.Price * float64(product.UnitSize) / numDaysPerMonth case FreeQuotaDaily: unitPrice = product.Price * float64(product.UnitSize) } return math.Floor(unitPrice*unitPricePrecision) / unitPricePrecision } func newStripeClient(url, key string) (*stripec.API, error) { transport := &http.Transport{ TLSClientConfig: &tls.Config{ InsecureSkipVerify: true, }, } if err := http2.ConfigureTransport(transport); err != nil { return nil, err } client := &stripec.API{} client.Init(key, &stripe.Backends{ API: stripe.GetBackendWithConfig( stripe.APIBackend, &stripe.BackendConfig{ URL: stripe.String(url), HTTPClient: &http.Client{ Transport: transport, }, LeveledLogger: stripe.DefaultLeveledLogger, }, ), }) return client, nil } func (s *Service) createPrice(client *stripec.API, productName string, unitPrice float64) (string, error) { product, err := client.Products.New(&stripe.ProductParams{ Name: stripe.String(productName), }) if err != nil { return "", err } price, err := client.Prices.New(&stripe.PriceParams{ Currency: stripe.String(string(stripe.CurrencyUSD)), Product: stripe.String(product.ID), Recurring: &stripe.PriceRecurringParams{ AggregateUsage: stripe.String(string(stripe.PriceRecurringAggregateUsageSum)), Interval: stripe.String(string(stripe.PriceRecurringIntervalMonth)), IntervalCount: stripe.Int64(1), UsageType: stripe.String(string(stripe.PriceRecurringUsageTypeMetered)), }, Tiers: []*stripe.PriceTierParams{ { UpToInf: stripe.Bool(true), UnitAmountDecimal: stripe.Float64(unitPrice), }, }, TiersMode: stripe.String(string(stripe.PriceTiersModeGraduated)), BillingScheme: stripe.String(string(stripe.PriceBillingSchemeTiered)), }) if err != nil { return "", err } return price.ID, nil } func (s *Service) Start() error { s.server = grpc.NewServer() target, err := util.TCPAddrFromMultiAddr(s.config.ListenAddr) if err != nil { return err } listener, err := net.Listen("tcp", target) if err != nil { return err } s.semaphores = nutil.NewSemaphorePool(1) go func() { pb.RegisterAPIServiceServer(s.server, s) if err := s.server.Serve(listener); err != nil && !errors.Is(err, grpc.ErrServerStopped) { log.Errorf("serve error: %v", err) } }() s.gateway.Start() s.reporter.Start() return nil } func (s *Service) Stop() error { rctx := s.reporter.Stop() <-rctx.Done() log.Info("reporter was shutdown") s.semaphores.Stop() log.Info("locking customers") ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) defer cancel() if err := s.gateway.Stop(); err != nil { return err } stopped := make(chan struct{}) go func() { s.server.GracefulStop() close(stopped) }() timer := time.NewTimer(10 * time.Second) select { case <-timer.C: s.server.Stop() case <-stopped: timer.Stop() } log.Info("gRPC was shutdown") return s.cdb.Database().Client().Disconnect(ctx) } func (s *Service) CheckHealth(_ context.Context, _ *pb.CheckHealthRequest) (*pb.CheckHealthResponse, error) { log.Debugf("health check okay") return &pb.CheckHealthResponse{}, nil } func (s *Service) CreateCustomer(ctx context.Context, req *pb.CreateCustomerRequest) ( *pb.CreateCustomerResponse, error) { var parentKey string if req.Parent != nil { if _, err := s.createCustomer(ctx, req.Parent, ""); err != nil && !errors.Is(err, ErrCustomerExists) { return nil, err } parentKey = req.Parent.Key } cus, err := s.createCustomer(ctx, req.Customer, parentKey) if err != nil { return nil, err } return &pb.CreateCustomerResponse{ CustomerId: cus.CustomerID, }, nil } func (s *Service) createCustomer( ctx context.Context, params *pb.CreateCustomerRequest_Params, parentKey string, ) (*Customer, error) { lck := s.semaphores.Get(customerLock(params.Key)) lck.Acquire() defer lck.Release() doc, err := s.getCustomer(ctx, "_id", params.Key) if err != nil && !errors.Is(err, mongo.ErrNoDocuments) { return nil, err } else if err == nil { return nil, ErrCustomerExists } customer, err := s.stripe.Customers.New(&stripe.CustomerParams{ Email: stripe.String(params.Email), }) if err != nil { return nil, err } doc = &Customer{ Key: params.Key, CustomerID: customer.ID, ParentKey: parentKey, Email: params.Email, AccountType: mdb.AccountType(params.AccountType), CreatedAt: time.Now().Unix(), } if err := s.createSubscription(doc); err != nil { return nil, err } if _, err := s.cdb.InsertOne(ctx, doc); err != nil { return nil, err } log.Debugf("created customer %s with id %s", doc.Key, doc.CustomerID) s.analytics.Identify(doc.Key, doc.AccountType, false, doc.Email, map[string]interface{}{ "parent_key": doc.ParentKey, "customer_id": doc.CustomerID, "username": params.Username, }) return doc, nil } func (s *Service) getCustomer(ctx context.Context, key, val string) (*Customer, error) { r := s.cdb.FindOne(ctx, bson.M{key: val}) if r.Err() != nil { return nil, r.Err() } var doc Customer return &doc, r.Decode(&doc) } func (s *Service) createSubscription(cus *Customer) error { var prices []*stripe.SubscriptionItemsParams for _, p := range s.products { prices = append(prices, &stripe.SubscriptionItemsParams{ Price: stripe.String(p.FreePriceID), }, &stripe.SubscriptionItemsParams{ Price: stripe.String(p.PaidPriceID), }, ) } sub, err := s.stripe.Subscriptions.New(&stripe.SubscriptionParams{ Customer: stripe.String(cus.CustomerID), Items: prices, }) if err != nil { return err } cus.SubscriptionStatus = string(sub.Status) cus.InvoicePeriod = Period{ UnixStart: sub.CurrentPeriodStart, UnixEnd: sub.CurrentPeriodEnd, } if cus.DailyUsage == nil { cus.DailyUsage = make(map[string]Usage) } for _, item := range sub.Items.Data { for k, p := range s.products { var u Usage if _, ok := cus.DailyUsage[k]; ok { u = cus.DailyUsage[k] } switch item.Price.ID { case p.FreePriceID: u.FreeItemID = item.ID case p.PaidPriceID: u.PaidItemID = item.ID default: continue } cus.DailyUsage[k] = u } } return nil } func (s *Service) GetCustomer(ctx context.Context, req *pb.GetCustomerRequest) (*pb.GetCustomerResponse, error) { doc, err := s.getCustomer(ctx, "_id", req.Key) if err != nil { return nil, err } log.Debugf("got customer %s", doc.Key) return s.customerToPb(ctx, doc) } func periodToPb(period Period) *pb.Period { return &pb.Period{ UnixStart: period.UnixStart, UnixEnd: period.UnixEnd, } } func (s *Service) dailyUsageToPb(usage map[string]Usage) map[string]*pb.Usage { start, end := getCurrentDayBounds() res := make(map[string]*pb.Usage) for k, u := range usage { if product, ok := s.products[k]; ok { res[k] = getUsage(product, u.Total, Period{UnixStart: start, UnixEnd: end}) } } return res } func getCurrentDayBounds() (int64, int64) { now := time.Now() start := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local) end := time.Date(now.Year(), now.Month(), now.Day(), 24, 0, 0, 0, time.Local) return start.Unix(), end.Unix() } func getCost(product Product, paidUnits int64) float64 { if paidUnits > 0 { return float64(paidUnits) * getUnitPrice(product) } return 0 } func getUsage(product Product, total int64, period Period) *pb.Usage { var ( freeUnits, paidUnits = getUnits(product, total) free = product.FreeQuotaSize - total grace = product.FreeQuotaGracePeriodSize - total ) if free < 0 { free = 0 } if grace < 0 { grace = 0 } return &pb.Usage{ Description: product.Name, Units: freeUnits + paidUnits, Total: total, Free: free, Grace: grace, Cost: getCost(product, paidUnits), Period: periodToPb(period), } } func getUnits(product Product, total int64) (freeUnits, paidUnits int64) { var freeSize, paidSize int64 if total > product.FreeQuotaSize { freeSize = product.FreeQuotaSize paidSize = total - product.FreeQuotaSize } else { freeSize = total } freeUnits = int64(math.Round(float64(freeSize) / float64(product.UnitSize))) paidUnits = int64(math.Round(float64(paidSize) / float64(product.UnitSize))) return } func addProductToSummary(summary map[string]interface{}, product Product, total int64) { _, paidUnits := getUnits(product, total) cost := getCost(product, paidUnits) summary[product.Key+"_name"] = product.Name if product.Units != "" { summary[product.Key+"_units"] = product.Units } summary[product.Key+"_free_quota_size"] = product.FreeQuotaSize summary[product.Key+"_total"] = total summary[product.Key+"_cost"] = cost } func (s *Service) getSummary(cus *Customer, deps int64) map[string]interface{} { summary := map[string]interface{}{ "account_status": cus.AccountStatus(), "billable": cus.Billable, "delinquent": cus.Delinquent, "grace_period_start": s.analytics.FormatUnix(cus.GracePeriodStart), "invoice_period_end": s.analytics.FormatUnix(cus.InvoicePeriod.UnixEnd), "invoice_period_start": s.analytics.FormatUnix(cus.InvoicePeriod.UnixStart), "subscription_status": cus.SubscriptionStatus, } if cus.GracePeriodStart > 0 { summary["grace_period_end"] = s.analytics.FormatUnix(cus.GracePeriodStart + int64(s.config.FreeQuotaGracePeriod.Seconds())) } if deps > 0 { summary["dependents"] = deps } return summary } func (s *Service) customerToPb(ctx context.Context, doc *Customer) (*pb.GetCustomerResponse, error) { var ( deps int64 parent *Customer err error ) if doc.ParentKey != "" { parent, err = s.getCustomer(ctx, "_id", doc.ParentKey) if err != nil { return nil, err } } else { deps, err = s.cdb.CountDocuments(ctx, bson.M{"parent_key": doc.Key}) if err != nil { return nil, err } } var ( gracePeriodStart int64 subscriptionStatus string billable bool delinquent bool dailyUsage map[string]*pb.Usage ) if parent != nil { gracePeriodStart = parent.GracePeriodStart subscriptionStatus = parent.SubscriptionStatus billable = parent.Billable delinquent = parent.Delinquent dailyUsage = s.dailyUsageToPb(parent.DailyUsage) } else { gracePeriodStart = doc.GracePeriodStart subscriptionStatus = doc.SubscriptionStatus billable = doc.Billable delinquent = doc.Delinquent dailyUsage = s.dailyUsageToPb(doc.DailyUsage) } var gracePeriodEnd int64 if gracePeriodStart > 0 { gracePeriodEnd = gracePeriodStart + int64(s.config.FreeQuotaGracePeriod.Seconds()) } return &pb.GetCustomerResponse{ Key: doc.Key, CustomerId: doc.CustomerID, ParentKey: doc.ParentKey, Email: doc.Email, AccountType: int32(doc.AccountType), AccountStatus: doc.AccountStatus(), SubscriptionStatus: subscriptionStatus, Balance: doc.Balance, Billable: billable, Delinquent: delinquent, CreatedAt: doc.CreatedAt, GracePeriodEnd: gracePeriodEnd, InvoicePeriod: periodToPb(doc.InvoicePeriod), DailyUsage: dailyUsage, Dependents: deps, }, nil } func (s *Service) GetCustomerSession(ctx context.Context, req *pb.GetCustomerSessionRequest) ( *pb.GetCustomerSessionResponse, error) { doc, err := s.getCustomer(ctx, "_id", req.Key) if err != nil { return nil, err } if doc.ParentKey != "" { return nil, fmt.Errorf("customer %s is a dependent; billing not permitted", doc.CustomerID) } session, err := s.stripe.BillingPortalSessions.New(&stripe.BillingPortalSessionParams{ Customer: stripe.String(doc.CustomerID), ReturnURL: stripe.String(s.config.StripeSessionReturnURL), }) if err != nil { return nil, err } return &pb.GetCustomerSessionResponse{ Url: session.URL, }, nil } func (s *Service) ListDependentCustomers(ctx context.Context, req *pb.ListDependentCustomersRequest) ( *pb.ListDependentCustomersResponse, error) { doc, err := s.getCustomer(ctx, "_id", req.Key) if err != nil { return nil, err } filter := bson.M{"parent_key": doc.Key} if req.Offset > 0 { filter["created_at"] = bson.M{"$gt": req.Offset} } opts := &options.FindOptions{} if req.Limit > 0 { if req.Limit > maxPageSize { return nil, fmt.Errorf("maximum limit is %d", maxPageSize) } opts.SetLimit(req.Limit) } else { opts.SetLimit(defaultPageSize) } cursor, err := s.cdb.Find(ctx, filter, opts) if err != nil { return nil, err } defer cursor.Close(ctx) var list []*pb.GetCustomerResponse for cursor.Next(ctx) { var doc Customer if err := cursor.Decode(&doc); err != nil { return nil, err } cus, err := s.customerToPb(ctx, &doc) if err != nil { return nil, err } list = append(list, cus) } if err := cursor.Err(); err != nil { return nil, err } var next int64 if len(list) > 0 { next = list[len(list)-1].CreatedAt } log.Debugf("listed %d customers", len(list)) return &pb.ListDependentCustomersResponse{ Customers: list, NextOffset: next, }, nil } func (s *Service) UpdateCustomer(ctx context.Context, req *pb.UpdateCustomerRequest) ( *pb.UpdateCustomerResponse, error) { doc, err := s.getCustomer(ctx, "customer_id", req.CustomerId) if err != nil { return nil, err } if doc.ParentKey != "" && req.Billable == true { return nil, fmt.Errorf("customer %s is a dependent; billing not permitted", doc.CustomerID) } lck := s.semaphores.Get(customerLock(doc.Key)) lck.Acquire() defer lck.Release() if _, err := s.cdb.UpdateOne(ctx, bson.M{"_id": doc.Key}, bson.M{ "$set": bson.M{"balance": req.Balance, "billable": req.Billable, "delinquent": req.Delinquent}, }); err != nil { return nil, err } log.Debugf("updated customer %s", doc.Key) return &pb.UpdateCustomerResponse{}, nil } func (s *Service) UpdateCustomerSubscription(ctx context.Context, req *pb.UpdateCustomerSubscriptionRequest) ( *pb.UpdateCustomerSubscriptionResponse, error) { doc, err := s.getCustomer(ctx, "customer_id", req.CustomerId) if err != nil { return nil, err } lck := s.semaphores.Get(customerLock(doc.Key)) lck.Acquire() defer lck.Release() update := bson.M{ "subscription_status": req.Status, "invoice_period.unix_start": req.InvoicePeriod.UnixStart, "invoice_period.unix_end": req.InvoicePeriod.UnixEnd, } if doc.InvoicePeriod.UnixEnd < req.InvoicePeriod.UnixEnd { for k := range doc.DailyUsage { if product, ok := s.products[k]; ok { if product.FreeQuotaInterval == FreeQuotaMonthly && product.PriceType == PriceTypeIncremental { update["daily_usage."+k+".total"] = 0 } } } } if _, err := s.cdb.UpdateOne(ctx, bson.M{"_id": doc.Key}, bson.M{"$set": update}); err != nil { return nil, err } log.Debugf("updated subscription with status '%s' for %s", req.Status, doc.Key) return &pb.UpdateCustomerSubscriptionResponse{}, nil } func (s *Service) RecreateCustomerSubscription(ctx context.Context, req *pb.RecreateCustomerSubscriptionRequest) ( *pb.RecreateCustomerSubscriptionResponse, error) { lck := s.semaphores.Get(customerLock(req.Key)) lck.Acquire() defer lck.Release() doc, err := s.getCustomer(ctx, "_id", req.Key) if err != nil { return nil, err } if err := common.StatusCheck(doc.SubscriptionStatus); err == nil { return nil, common.ErrSubscriptionExists } else if !errors.Is(err, common.ErrSubscriptionCanceled) { return nil, err } if err := s.createSubscription(doc); err != nil { return nil, err } if _, err := s.cdb.UpdateOne(ctx, bson.M{"_id": req.Key}, bson.M{ "$set": bson.M{ "subscription_status": doc.SubscriptionStatus, "invoice_period": doc.InvoicePeriod, "daily_usage": doc.DailyUsage, }}); err != nil { return nil, err } log.Debugf("recreated subscription for %s", req.Key) return &pb.RecreateCustomerSubscriptionResponse{}, nil } func (s *Service) DeleteCustomer(ctx context.Context, req *pb.DeleteCustomerRequest) ( *pb.DeleteCustomerResponse, error) { lck := s.semaphores.Get(customerLock(req.Key)) lck.Acquire() defer lck.Release() doc, err := s.getCustomer(ctx, "_id", req.Key) if err != nil { return nil, err } if _, err := s.stripe.Customers.Del(doc.CustomerID, nil); err != nil { return nil, err } if _, err := s.cdb.DeleteOne(ctx, bson.M{"_id": req.Key}); err != nil { return nil, err } log.Debugf("deleted customer %s", req.Key) return &pb.DeleteCustomerResponse{}, nil } func (s *Service) GetCustomerUsage( ctx context.Context, req *pb.GetCustomerUsageRequest, ) (*pb.GetCustomerUsageResponse, error) { doc, err := s.getCustomer(ctx, "_id", req.Key) if err != nil { return nil, err } usage := make(map[string]*pb.Usage) for k, u := range doc.DailyUsage { if product, ok := s.products[k]; ok { // Add current day unreported usage total := u.Total // Get reported usage over the current invoice period if product.FreeQuotaInterval == FreeQuotaDaily && product.PriceType == PriceTypeIncremental { free, err := s.getPeriodUsageItem(u.FreeItemID) if err != nil { return nil, err } paid, err := s.getPeriodUsageItem(u.PaidItemID) if err != nil { return nil, err } // Hack: Stipe is recording reported units * 100, so divide here to compensate total += (free.TotalUsage/100 + paid.TotalUsage/100) * product.UnitSize } usage[k] = getUsage(product, total, doc.InvoicePeriod) } } return &pb.GetCustomerUsageResponse{ Usage: usage, }, nil } func (s *Service) getPeriodUsageItem(id string) (sum *stripe.UsageRecordSummary, err error) { params := &stripe.UsageRecordSummaryListParams{ SubscriptionItem: stripe.String(id), } params.Filters.AddFilter("limit", "", "1") params.Single = true i := s.stripe.UsageRecordSummaries.List(params) for i.Next() { sum = i.UsageRecordSummary() } if i.Err() != nil { return nil, i.Err() } if sum != nil && sum.Period != nil { return sum, nil } return nil, fmt.Errorf("subscription item %s not found", id) } func (s *Service) IncCustomerUsage( ctx context.Context, req *pb.IncCustomerUsageRequest, ) (*pb.IncCustomerUsageResponse, error) { return s.handleCustomerUsage(ctx, req.Key, req) } func (s *Service) handleCustomerUsage( ctx context.Context, key string, req *pb.IncCustomerUsageRequest, ) (*pb.IncCustomerUsageResponse, error) { lck := s.semaphores.Get(customerLock(key)) lck.Acquire() defer lck.Release() cus, err := s.getCustomer(ctx, "_id", key) if err != nil { return nil, err } var parentErr error if cus.ParentKey != "" { _, parentErr = s.handleCustomerUsage(ctx, cus.ParentKey, req) // Continue recording usage on the child, we'll return this error at the end } else { if err := common.StatusCheck(cus.SubscriptionStatus); err != nil { return nil, err } } res := &pb.IncCustomerUsageResponse{ DailyUsage: make(map[string]*pb.Usage), } merr := &multierror.Error{} for k, inc := range req.ProductUsage { if product, ok := s.products[k]; ok && inc != 0 { usage, err := s.handleUsage(ctx, cus, product, inc) merr = multierror.Append(merr, err) if usage != nil { log.Debugf("%s %s: total=%d free=%d", cus.Key, k, usage.Total, usage.Free) res.DailyUsage[k] = usage } } } // Response is still valid when err is not nil because we always track usage even // if it resulted in an overage. This is because usage is reported _after_ it's used. if err := merr.ErrorOrNil(); err != nil { return res, err } return res, parentErr } func (s *Service) handleUsage(ctx context.Context, cus *Customer, product Product, incSize int64) (*pb.Usage, error) { usage, ok := cus.DailyUsage[product.Key] if !ok { return nil, nil } total := usage.Total + incSize if total < 0 { log.Warnf("negative %s detected: total=%d inc=%d)", product.Key, total, incSize) total = 0 } update := bson.M{"daily_usage." + product.Key + ".total": total} var err error if total > product.FreeQuotaSize && !cus.Billable && cus.ParentKey == "" { now := time.Now().Unix() if cus.GracePeriodStart == 0 { cus.GracePeriodStart = now update["grace_period_start"] = cus.GracePeriodStart summary := s.getSummary(cus, 0) addProductToSummary(summary, product, total) s.analytics.TrackEvent(cus.Key, cus.AccountType, false, analytics.GracePeriodStart, nil) } deadline := cus.GracePeriodStart + int64(s.config.FreeQuotaGracePeriod.Seconds()) if now >= deadline { summary := s.getSummary(cus, 0) addProductToSummary(summary, product, total) s.analytics.TrackEvent(cus.Key, cus.AccountType, false, analytics.GracePeriodEnd, nil) err = fmt.Errorf("%w for %s", common.ErrExceedsFreeQuota, product.Key) } } if _, err := s.cdb.UpdateOne(ctx, bson.M{"_id": cus.Key}, bson.M{"$set": update}); err != nil { return nil, err } start, end := getCurrentDayBounds() return getUsage(product, total, Period{UnixStart: start, UnixEnd: end}), err } func (s *Service) ReportCustomerUsage( ctx context.Context, req *pb.ReportCustomerUsageRequest, ) (*pb.ReportCustomerUsageResponse, error) { doc, err := s.getCustomer(ctx, "_id", req.Key) if err != nil { return nil, err } if err := s.reportCustomerUsage(ctx, doc); err != nil { return nil, err } return &pb.ReportCustomerUsageResponse{}, nil } func (s *Service) reportUsage() error { ctx, cancel := context.WithTimeout(context.Background(), reporterTimeout) defer cancel() cursor, err := s.cdb.Find(ctx, bson.M{}) if err != nil { return fmt.Errorf("finding customers: %v", err) } defer cursor.Close(ctx) for cursor.Next(ctx) { var doc Customer if err := cursor.Decode(&doc); err != nil { return fmt.Errorf("decoding customer: %v", err) } if err := s.reportCustomerUsage(ctx, &doc); err != nil { return fmt.Errorf("reporting customer usage: %v", err) } } if err := cursor.Err(); err != nil { return fmt.Errorf("cursor error: %v", err) } return nil } func (s *Service) reportCustomerUsage(ctx context.Context, cus *Customer) error { deps, err := s.cdb.CountDocuments(ctx, bson.M{"parent_key": cus.Key}) if err != nil { return err } summary := s.getSummary(cus, deps) for k, usage := range cus.DailyUsage { if product, ok := s.products[k]; ok { if err := s.reportUnits(product, usage, cus.ParentKey); err != nil { return err } addProductToSummary(summary, product, usage.Total) log.Debugf("reported usage for %s: %s=%d", cus.Key, k, usage.Total) if product.FreeQuotaInterval == FreeQuotaDaily && product.PriceType == PriceTypeIncremental { if _, err := s.cdb.UpdateOne(ctx, bson.M{"_id": cus.Key}, bson.M{ "$set": bson.M{"daily_usage." + k + ".total": 0}, }); err != nil { return err } } } else { log.Warn("%s has invalid product key: %s", cus.Key, k) } } s.analytics.Identify(cus.Key, cus.AccountType, false, "", summary) return nil } // reportUnits sends daily product units to Stripe for aggregation and invoicing. // Hack fix: Report units * 100 since the immutable unit price used to calculate // unit price is in dollars, and the Stripe API expects cents. func (s *Service) reportUnits(product Product, usage Usage, parentKey string) error { freeUnits, paidUnits := getUnits(product, usage.Total) if parentKey != "" { freeUnits += paidUnits paidUnits = 0 } if freeUnits > 0 { if _, err := s.stripe.UsageRecords.New(&stripe.UsageRecordParams{ SubscriptionItem: stripe.String(usage.FreeItemID), Quantity: stripe.Int64(freeUnits * 100), Timestamp: stripe.Int64(time.Now().Unix()), Action: stripe.String(stripe.UsageRecordActionIncrement), }); err != nil { return err } } if paidUnits > 0 { if _, err := s.stripe.UsageRecords.New(&stripe.UsageRecordParams{ SubscriptionItem: stripe.String(usage.PaidItemID), Quantity: stripe.Int64(paidUnits * 100), Timestamp: stripe.Int64(time.Now().Unix()), Action: stripe.String(stripe.UsageRecordActionIncrement), }); err != nil { return err } } return nil } // Identify creates or updates the user traits func (s *Service) Identify(_ context.Context, req *pb.IdentifyRequest) (*pb.IdentifyResponse, error) { props := map[string]interface{}{} for k, v := range req.Properties { props[k] = v } s.analytics.Identify( req.Key, mdb.AccountType(req.AccountType), req.Active, req.Email, props, ) return &pb.IdentifyResponse{}, nil } // TrackEvent records a new event func (s *Service) TrackEvent(_ context.Context, req *pb.TrackEventRequest) (*pb.TrackEventResponse, error) { s.analytics.TrackEvent( req.Key, mdb.AccountType(req.AccountType), req.Active, analytics.Event(req.Event), req.Properties, ) return &pb.TrackEventResponse{}, nil } ================================================ FILE: api/bucketsd/client/client.go ================================================ package client import ( "context" "errors" "io" "io/ioutil" "os" "path/filepath" "strings" "sync" "sync/atomic" "github.com/gogo/status" "github.com/ipfs/go-cid" "github.com/ipfs/interface-go-ipfs-core/path" pb "github.com/textileio/textile/v2/api/bucketsd/pb" "github.com/textileio/textile/v2/buckets" "github.com/textileio/textile/v2/util" "google.golang.org/grpc" "google.golang.org/grpc/codes" ) const ( // chunkSize for add file requests. chunkSize = 1024 * 32 ) var ( // ErrPushPathQueueClosed indicates the push path is or was closed. ErrPushPathQueueClosed = errors.New("push path queue is closed") ) // Client provides the client api. type Client struct { c pb.APIServiceClient conn *grpc.ClientConn } // NewClient starts the client. func NewClient(target string, opts ...grpc.DialOption) (*Client, error) { conn, err := grpc.Dial(target, opts...) if err != nil { return nil, err } return &Client{ c: pb.NewAPIServiceClient(conn), conn: conn, }, nil } // Close closes the client's grpc connection and cancels any active requests. func (c *Client) Close() error { return c.conn.Close() } // Create initializes a new bucket. // The bucket name is only meant to help identify a bucket in a UI and is not unique. func (c *Client) Create(ctx context.Context, opts ...CreateOption) (*pb.CreateResponse, error) { args := &createOptions{} for _, opt := range opts { opt(args) } var strCid string if args.fromCid.Defined() { strCid = args.fromCid.String() } return c.c.Create(ctx, &pb.CreateRequest{ Name: args.name, Private: args.private, BootstrapCid: strCid, Unfreeze: args.unfreeze, }) } // Root returns the bucket root. func (c *Client) Root(ctx context.Context, key string) (*pb.RootResponse, error) { return c.c.Root(ctx, &pb.RootRequest{ Key: key, }) } // Links returns a list of bucket path URL links. func (c *Client) Links(ctx context.Context, key, pth string) (*pb.LinksResponse, error) { return c.c.Links(ctx, &pb.LinksRequest{ Key: key, Path: filepath.ToSlash(pth), }) } // List returns a list of all bucket roots. func (c *Client) List(ctx context.Context) (*pb.ListResponse, error) { return c.c.List(ctx, &pb.ListRequest{}) } // ListIpfsPath returns items at a particular path in a UnixFS path living in the IPFS network. func (c *Client) ListIpfsPath(ctx context.Context, pth path.Path) (*pb.ListIpfsPathResponse, error) { return c.c.ListIpfsPath(ctx, &pb.ListIpfsPathRequest{Path: pth.String()}) } // ListPath returns information about a bucket path. func (c *Client) ListPath(ctx context.Context, key, pth string) (*pb.ListPathResponse, error) { return c.c.ListPath(ctx, &pb.ListPathRequest{ Key: key, Path: filepath.ToSlash(pth), }) } // SetPath set a particular path to an existing IPFS UnixFS DAG. func (c *Client) SetPath(ctx context.Context, key, pth string, remoteCid cid.Cid) (*pb.SetPathResponse, error) { return c.c.SetPath(ctx, &pb.SetPathRequest{ Key: key, Path: filepath.ToSlash(pth), Cid: remoteCid.String(), }) } // MovePath moves a particular path to another path in the existing IPFS UnixFS DAG. func (c *Client) MovePath(ctx context.Context, key, pth string, dest string) error { _, err := c.c.MovePath(ctx, &pb.MovePathRequest{ Key: key, FromPath: filepath.ToSlash(pth), ToPath: filepath.ToSlash(dest), }) return err } type pushPathResult struct { path path.Resolved root path.Resolved err error } // PushPath pushes a file to a bucket path. // This will return the resolved path and the bucket's new root path. func (c *Client) PushPath( ctx context.Context, key, pth string, reader io.Reader, opts ...Option, ) (result path.Resolved, root path.Resolved, err error) { args := &options{} for _, opt := range opts { opt(args) } if args.progress != nil { defer close(args.progress) } stream, err := c.c.PushPath(ctx) if err != nil { return nil, nil, err } var xr string if args.root != nil { xr = args.root.String() } if err = stream.Send(&pb.PushPathRequest{ Payload: &pb.PushPathRequest_Header_{ Header: &pb.PushPathRequest_Header{ Key: key, Path: filepath.ToSlash(pth), Root: xr, }, }, }); err != nil { return nil, nil, err } waitCh := make(chan pushPathResult) go func() { defer close(waitCh) for { rep, err := stream.Recv() if err == io.EOF { return } else if err != nil { waitCh <- pushPathResult{err: err} return } if rep.Event.Path != "" { id, err := cid.Parse(rep.Event.Path) if err != nil { waitCh <- pushPathResult{err: err} return } r, err := util.NewResolvedPath(rep.Event.Root.Path) if err != nil { waitCh <- pushPathResult{err: err} return } waitCh <- pushPathResult{ path: path.IpfsPath(id), root: r, } } else if args.progress != nil { args.progress <- rep.Event.Bytes } } }() end := func(err error) error { if err := stream.CloseSend(); err != nil { return err } return err } buf := make([]byte, chunkSize) for { n, err := reader.Read(buf) if n > 0 { if err := stream.Send(&pb.PushPathRequest{ Payload: &pb.PushPathRequest_Chunk{ Chunk: buf[:n], }, }); err == io.EOF { break } else if err != nil { return nil, nil, end(err) } } else if err == io.EOF { break } else if err != nil { return nil, nil, end(err) } } if err := end(nil); err != nil { return nil, nil, err } res := <-waitCh return res.path, res.root, res.err } // PushPathsResult contains the result of a Push. type PushPathsResult struct { Path string Cid cid.Cid Size int64 Pinned int64 Root path.Resolved err error } // PushPathsQueue handles PushPath input and output. type PushPathsQueue struct { // Current contains the current push result. Current PushPathsResult q []pushPath len int startCh chan []string inCh chan pushPath inWaitCh chan struct{} outCh chan PushPathsResult started bool stopped bool closeFunc func() error closed bool closeWaitCh chan error size int64 complete int64 lk sync.Mutex wg sync.WaitGroup } type pushPath struct { path string r func() (io.ReadCloser, error) } // AddFile adds a file to the queue. // pth is the location relative to the bucket root at which to insert the file, e.g., "/path/to/mybone.jpg". // name is the location of the file on the local filesystem, e.g., "/Users/clyde/Downloads/mybone.jpg". func (c *PushPathsQueue) AddFile(pth, name string) error { c.lk.Lock() defer c.lk.Unlock() if c.closed { return ErrPushPathQueueClosed } if c.started { return errors.New("cannot call AddFile after Next") } f, err := os.Open(name) if err != nil { return err } info, err := f.Stat() if err != nil { f.Close() return err } atomic.AddInt64(&c.size, info.Size()) f.Close() c.q = append(c.q, pushPath{ path: filepath.ToSlash(pth), r: func() (io.ReadCloser, error) { return os.Open(name) }, }) return nil } // AddReader adds a reader to the queue. // pth is the location relative to the bucket root at which to insert the file, e.g., "/path/to/mybone.jpg". // r is the reader to read from. // size is the size of the reader. Use of the WithProgress option is not recommended if the reader size is unknown. func (c *PushPathsQueue) AddReader(pth string, r io.Reader, size int64) error { c.lk.Lock() defer c.lk.Unlock() if c.closed { return ErrPushPathQueueClosed } if c.started { return errors.New("cannot call AddReader after Next") } atomic.AddInt64(&c.size, size) c.q = append(c.q, pushPath{ path: filepath.ToSlash(pth), r: func() (io.ReadCloser, error) { return ioutil.NopCloser(r), nil }, }) return nil } // Size returns the queue size in bytes. func (c *PushPathsQueue) Size() int64 { return atomic.LoadInt64(&c.size) } // Complete returns the portion of the queue size that has been pushed. func (c *PushPathsQueue) Complete() int64 { return atomic.LoadInt64(&c.complete) } // Next blocks while the queue is open, returning true when a result is ready. // Use Current to access the result. func (c *PushPathsQueue) Next() (ok bool) { c.lk.Lock() if c.closed { c.lk.Unlock() return false } if !c.started { c.started = true c.len = len(c.q) c.start() } if c.len == 0 { c.lk.Unlock() return false } c.lk.Unlock() select { case r, k := <-c.outCh: if !k { return false } c.lk.Lock() c.len-- c.Current = r c.lk.Unlock() return true } } func (c *PushPathsQueue) start() { go func() { defer close(c.inWaitCh) var paths []string c.lk.Lock() for _, p := range c.q { paths = append(paths, p.path) } c.lk.Unlock() c.startCh <- paths for { c.lk.Lock() if c.closed { c.q = nil c.lk.Unlock() return } if len(c.q) == 0 { c.lk.Unlock() return } var p pushPath p, c.q = c.q[0], c.q[1:] c.lk.Unlock() c.inCh <- p } }() } func (c *PushPathsQueue) stop() { c.lk.Lock() defer c.lk.Unlock() c.stopped = true } // Err returns the current queue error. // Call this method before checking the value of Current. func (c *PushPathsQueue) Err() error { c.lk.Lock() defer c.lk.Unlock() return c.Current.err } // Close the queue. // Failure to close may lead to unpredictable bucket state. func (c *PushPathsQueue) Close() error { c.lk.Lock() if c.closed { c.lk.Unlock() return nil } c.closed = true c.lk.Unlock() <-c.inWaitCh close(c.inCh) c.lk.Lock() wait := !c.stopped c.lk.Unlock() if err := c.closeFunc(); err != nil { return err } if wait { return <-c.closeWaitCh } return nil } // PushPaths returns a queue that can be used to push multiple files and readers to bucket paths. // See PushPathQueue.AddFile and PushPathsQueue.AddReader for more. func (c *Client) PushPaths(ctx context.Context, key string, opts ...Option) (*PushPathsQueue, error) { args := &options{} for _, opt := range opts { opt(args) } stream, err := c.c.PushPaths(ctx) if err != nil { return nil, err } var xr string if args.root != nil { xr = args.root.String() } q := &PushPathsQueue{ startCh: make(chan []string), inCh: make(chan pushPath), inWaitCh: make(chan struct{}), outCh: make(chan PushPathsResult), closeFunc: func() error { return stream.CloseSend() }, closeWaitCh: make(chan error, 1), } go func() { defer q.stop() for { rep, err := stream.Recv() if err == io.EOF { q.closeWaitCh <- nil return } else if err != nil { if strings.Contains(err.Error(), "STREAM_CLOSED") { err = ErrPushPathQueueClosed } q.lk.Lock() closed := q.closed q.lk.Unlock() if !closed { q.outCh <- PushPathsResult{err: err} } q.closeWaitCh <- err return } id, err := cid.Parse(rep.Cid) if err != nil { q.outCh <- PushPathsResult{err: err} return } root, err := util.NewResolvedPath(rep.Root.Path) if err != nil { q.outCh <- PushPathsResult{err: err} return } q.outCh <- PushPathsResult{ Path: rep.Path, Cid: id, Size: rep.Size, Pinned: rep.Pinned, Root: root, } } }() sendChunk := func(c *pb.PushPathsRequest_Chunk) bool { q.lk.Lock() if q.closed { q.lk.Unlock() return false } q.lk.Unlock() if err := stream.Send(&pb.PushPathsRequest{ Payload: &pb.PushPathsRequest_Chunk_{ Chunk: c, }, }); err == io.EOF { return false // error is waiting to be received with stream.Recv above } else if err != nil { q.outCh <- PushPathsResult{err: err} return false } atomic.AddInt64(&q.complete, int64(len(c.Data))) q.lk.Lock() if !q.closed && args.progress != nil { args.progress <- atomic.LoadInt64(&q.complete) } q.lk.Unlock() return true } go func() { loop: for { select { case paths := <-q.startCh: if len(paths) > 0 { if err := stream.Send(&pb.PushPathsRequest{ Payload: &pb.PushPathsRequest_Header_{ Header: &pb.PushPathsRequest_Header{ Key: key, Root: xr, Paths: paths, }, }, }); err != nil { q.outCh <- PushPathsResult{err: err} break loop } } case p, ok := <-q.inCh: if !ok { break loop } r, err := p.r() if err != nil { q.outCh <- PushPathsResult{err: err} break loop } buf := make([]byte, chunkSize) for { n, err := r.Read(buf) c := &pb.PushPathsRequest_Chunk{ Path: p.path, } if n > 0 { c.Data = make([]byte, n) copy(c.Data, buf[:n]) if ok := sendChunk(c); !ok { break } } else if err == io.EOF { sendChunk(c) break } else if err != nil { q.outCh <- PushPathsResult{err: err} break } } r.Close() } } }() return q, nil } // PullPath pulls the bucket path, writing it to writer if it's a file. func (c *Client) PullPath(ctx context.Context, key, pth string, writer io.Writer, opts ...Option) error { args := &options{} for _, opt := range opts { opt(args) } pth = filepath.ToSlash(pth) stream, err := c.c.PullPath(ctx, &pb.PullPathRequest{ Key: key, Path: pth, }) if err != nil { return err } var written int64 for { rep, err := stream.Recv() if err == io.EOF { break } else if err != nil { return err } n, err := writer.Write(rep.Chunk) if err != nil { return err } written += int64(n) if args.progress != nil { args.progress <- written } } return nil } // PullIpfsPath pulls the path from a remote UnixFS dag, writing it to writer if it's a file. func (c *Client) PullIpfsPath(ctx context.Context, pth path.Path, writer io.Writer, opts ...Option) error { args := &options{} for _, opt := range opts { opt(args) } stream, err := c.c.PullIpfsPath(ctx, &pb.PullIpfsPathRequest{ Path: pth.String(), }) if err != nil { return err } var written int64 for { rep, err := stream.Recv() if err == io.EOF { break } else if err != nil { return err } n, err := writer.Write(rep.Chunk) if err != nil { return err } written += int64(n) if args.progress != nil { args.progress <- written } } return nil } // Remove removes an entire bucket. // Files and directories will be unpinned. func (c *Client) Remove(ctx context.Context, key string) error { _, err := c.c.Remove(ctx, &pb.RemoveRequest{ Key: key, }) return err } // RemovePath removes the file or directory at path. // Files and directories will be unpinned. func (c *Client) RemovePath(ctx context.Context, key, pth string, opts ...Option) (path.Resolved, error) { args := &options{} for _, opt := range opts { opt(args) } var xr string if args.root != nil { xr = args.root.String() } res, err := c.c.RemovePath(ctx, &pb.RemovePathRequest{ Key: key, Path: filepath.ToSlash(pth), Root: xr, }) if err != nil { return nil, err } return util.NewResolvedPath(res.Root.Path) } // PushPathAccessRoles updates path access roles by merging the pushed roles with existing roles. // roles is a map of string marshaled public keys to path roles. A non-nil error is returned // if the map keys are not unmarshalable to public keys. // To delete a role for a public key, set its value to buckets.None. func (c *Client) PushPathAccessRoles(ctx context.Context, key, pth string, roles map[string]buckets.Role) error { pbroles, err := buckets.RolesToPb(roles) if err != nil { return err } _, err = c.c.PushPathAccessRoles(ctx, &pb.PushPathAccessRolesRequest{ Key: key, Path: filepath.ToSlash(pth), Roles: pbroles, }) return err } // PullPathAccessRoles returns access roles for a path. func (c *Client) PullPathAccessRoles(ctx context.Context, key, pth string) (map[string]buckets.Role, error) { res, err := c.c.PullPathAccessRoles(ctx, &pb.PullPathAccessRolesRequest{ Key: key, Path: filepath.ToSlash(pth), }) if err != nil { return nil, err } return buckets.RolesFromPb(res.Roles) } // DefaultArchiveConfig gets the default archive config for the specified Bucket. func (c *Client) DefaultArchiveConfig(ctx context.Context, key string) (*pb.ArchiveConfig, error) { res, err := c.c.DefaultArchiveConfig(ctx, &pb.DefaultArchiveConfigRequest{Key: key}) if err != nil { return nil, err } return res.ArchiveConfig, nil } // SetDefaultArchiveConfig sets the default archive config for the specified Bucket. func (c *Client) SetDefaultArchiveConfig(ctx context.Context, key string, config *pb.ArchiveConfig) error { req := &pb.SetDefaultArchiveConfigRequest{ Key: key, ArchiveConfig: config, } _, err := c.c.SetDefaultArchiveConfig(ctx, req) return err } // Archive creates a Filecoin bucket archive via Powergate. func (c *Client) Archive(ctx context.Context, key string, opts ...ArchiveOption) error { req := &pb.ArchiveRequest{ Key: key, } for _, opt := range opts { opt(req) } _, err := c.c.Archive(ctx, req) return err } // Archives returns information about current and historical archives. func (c *Client) Archives(ctx context.Context, key string) (*pb.ArchivesResponse, error) { return c.c.Archives(ctx, &pb.ArchivesRequest{Key: key}) } // ArchiveWatch watches status events from a Filecoin bucket archive. func (c *Client) ArchiveWatch(ctx context.Context, key string, ch chan<- string) error { ctx, cancel := context.WithCancel(ctx) defer cancel() stream, err := c.c.ArchiveWatch(ctx, &pb.ArchiveWatchRequest{Key: key}) if err != nil { return err } for { reply, err := stream.Recv() if err == io.EOF || status.Code(err) == codes.Canceled { break } if err != nil { return err } ch <- reply.Msg } return nil } ================================================ FILE: api/bucketsd/client/client_test.go ================================================ package client_test import ( "bytes" "context" "crypto/rand" "fmt" "io" "io/ioutil" "os" "sort" "strings" "sync" "testing" "time" ipfsfiles "github.com/ipfs/go-ipfs-files" httpapi "github.com/ipfs/go-ipfs-http-client" "github.com/ipfs/interface-go-ipfs-core/path" "github.com/libp2p/go-libp2p-core/crypto" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tc "github.com/textileio/go-threads/api/client" "github.com/textileio/go-threads/core/thread" tutil "github.com/textileio/go-threads/util" "github.com/textileio/textile/v2/api/apitest" c "github.com/textileio/textile/v2/api/bucketsd/client" "github.com/textileio/textile/v2/api/common" hc "github.com/textileio/textile/v2/api/hubd/client" hubpb "github.com/textileio/textile/v2/api/hubd/pb" bucks "github.com/textileio/textile/v2/buckets" "github.com/textileio/textile/v2/core" "github.com/textileio/textile/v2/util" "google.golang.org/grpc" ) func TestMain(m *testing.M) { cleanup := func() {} if os.Getenv("SKIP_SERVICES") != "true" { cleanup = apitest.StartServices() } exitVal := m.Run() cleanup() os.Exit(exitVal) } func TestClient_Create(t *testing.T) { ctx, client := setup(t) buck, err := client.Create(ctx, c.WithName("mybuck")) require.NoError(t, err) assert.NotEmpty(t, buck.Root) assert.NotEmpty(t, buck.Root.Key) assert.NotEmpty(t, buck.Root.Owner) assert.NotEmpty(t, buck.Root.Name) assert.NotEmpty(t, buck.Root.Version) assert.NotEmpty(t, buck.Root.Path) assert.NotEmpty(t, buck.Root.Metadata) assert.NotEmpty(t, buck.Root.CreatedAt) assert.NotEmpty(t, buck.Root.UpdatedAt) assert.NotEmpty(t, buck.Links) assert.NotEmpty(t, buck.Seed) pbuck, err := client.Create(ctx, c.WithName("myprivatebuck"), c.WithPrivate(true)) require.NoError(t, err) assert.NotEmpty(t, pbuck.Root) assert.NotEmpty(t, pbuck.Root.Key) assert.NotEmpty(t, buck.Root.Owner) assert.NotEmpty(t, pbuck.Root.Name) assert.NotEmpty(t, buck.Root.Version) assert.NotEmpty(t, pbuck.Root.Path) assert.NotEmpty(t, buck.Root.Metadata) assert.NotEmpty(t, pbuck.Root.CreatedAt) assert.NotEmpty(t, pbuck.Root.UpdatedAt) assert.NotEmpty(t, pbuck.Links) assert.NotEmpty(t, pbuck.Seed) } func TestClient_CreateWithCid(t *testing.T) { ctx, client := setup(t) t.Run("public", func(t *testing.T) { createWithCid(t, ctx, client, false) }) t.Run("private", func(t *testing.T) { createWithCid(t, ctx, client, true) }) } func createWithCid(t *testing.T, ctx context.Context, client *c.Client, private bool) { file1, err := os.Open("testdata/file1.jpg") require.NoError(t, err) defer file1.Close() file2, err := os.Open("testdata/file2.jpg") require.NoError(t, err) defer file2.Close() ipfs, err := httpapi.NewApi(apitest.GetIPFSApiAddr()) require.NoError(t, err) p, err := ipfs.Unixfs().Add( ctx, ipfsfiles.NewMapDirectory(map[string]ipfsfiles.Node{ "file1.jpg": ipfsfiles.NewReaderFile(file1), "folder1": ipfsfiles.NewMapDirectory(map[string]ipfsfiles.Node{ "file2.jpg": ipfsfiles.NewReaderFile(file2), }), }), ) require.NoError(t, err) initCid := p.Cid() buck, err := client.Create(ctx, c.WithCid(initCid), c.WithPrivate(private)) require.NoError(t, err) // Assert top level bucket. rep, err := client.ListPath(ctx, buck.Root.Key, "") require.NoError(t, err) assert.True(t, rep.Item.IsDir) topLevelNames := make([]string, 3) for i, n := range rep.Item.Items { topLevelNames[i] = n.Name } assert.Contains(t, topLevelNames, "file1.jpg") assert.Contains(t, topLevelNames, "folder1") // Assert inner directory. rep, err = client.ListPath(ctx, buck.Root.Key, "folder1") require.NoError(t, err) assert.True(t, rep.Item.IsDir) assert.Len(t, rep.Item.Items, 1) assert.Equal(t, rep.Item.Items[0].Name, "file2.jpg") } func TestClient_Root(t *testing.T) { ctx, client := setup(t) buck, err := client.Create(ctx) require.NoError(t, err) root, err := client.Root(ctx, buck.Root.Key) require.NoError(t, err) assert.NotEmpty(t, root.Root) assert.NotEmpty(t, root.Root.Key) assert.NotEmpty(t, root.Root.Owner) assert.NotEmpty(t, root.Root.Version) assert.NotEmpty(t, root.Root.Path) assert.NotEmpty(t, root.Root.Metadata) assert.NotEmpty(t, root.Root.CreatedAt) assert.NotEmpty(t, root.Root.UpdatedAt) } func TestClient_Links(t *testing.T) { ctx, client := setup(t) buck, err := client.Create(ctx) require.NoError(t, err) links, err := client.Links(ctx, buck.Root.Key, "") require.NoError(t, err) assert.NotEmpty(t, links.Url) assert.NotEmpty(t, links.Ipns) } func TestClient_List(t *testing.T) { ctx, client := setup(t) t.Run("empty", func(t *testing.T) { rep, err := client.List(ctx) require.NoError(t, err) assert.Len(t, rep.Roots, 0) }) buck, err := client.Create(ctx) require.NoError(t, err) t.Run("not empty", func(t *testing.T) { rep, err := client.List(ctx) require.NoError(t, err) assert.Len(t, rep.Roots, 1) assert.Equal(t, buck.Root.Key, rep.Roots[0].Key) assert.Equal(t, buck.Root.Path, rep.Roots[0].Path) assert.Equal(t, buck.Root.CreatedAt, rep.Roots[0].CreatedAt) assert.Equal(t, buck.Root.UpdatedAt, rep.Roots[0].UpdatedAt) }) } func TestClient_ListPath(t *testing.T) { ctx, client := setup(t) t.Run("public", func(t *testing.T) { listPath(t, ctx, client, false) }) t.Run("private", func(t *testing.T) { listPath(t, ctx, client, true) }) } func listPath(t *testing.T, ctx context.Context, client *c.Client, private bool) { buck, err := client.Create(ctx, c.WithPrivate(private)) require.NoError(t, err) t.Run("empty", func(t *testing.T) { rep, err := client.ListPath(ctx, buck.Root.Key, "") require.NoError(t, err) assert.NotEmpty(t, rep.Root) assert.True(t, rep.Item.IsDir) assert.Len(t, rep.Item.Items, 1) }) q, err := client.PushPaths(ctx, buck.Root.Key) require.NoError(t, err) err = q.AddFile("dir1/file1.jpg", "testdata/file1.jpg") require.NoError(t, err) err = q.AddFile("dir2/file2.jpg", "testdata/file2.jpg") require.NoError(t, err) for q.Next() { require.NoError(t, q.Err()) } q.Close() root := q.Current.Root t.Run("root dir", func(t *testing.T) { rep, err := client.ListPath(ctx, buck.Root.Key, "") require.NoError(t, err) assert.True(t, rep.Item.IsDir) assert.Len(t, rep.Item.Items, 3) dir1i := sort.Search(len(rep.Item.Items), func(i int) bool { return rep.Item.Items[i].Name == "dir1" }) assert.True(t, dir1i < len(rep.Item.Items)) assert.True(t, rep.Item.Items[dir1i].IsDir) }) t.Run("nested dir", func(t *testing.T) { rep, err := client.ListPath(ctx, buck.Root.Key, "dir1") require.NoError(t, err) assert.True(t, rep.Item.IsDir) assert.Len(t, rep.Item.Items, 1) }) t.Run("file", func(t *testing.T) { rep, err := client.ListPath(ctx, buck.Root.Key, "dir1/file1.jpg") require.NoError(t, err) assert.True(t, strings.HasSuffix(rep.Item.Path, "file1.jpg")) assert.False(t, rep.Item.IsDir) assert.Equal(t, root.String(), rep.Root.Path) }) } func TestClient_ListIpfsPath(t *testing.T) { ctx, client := setup(t) file1, err := os.Open("testdata/file1.jpg") require.NoError(t, err) defer file1.Close() file2, err := os.Open("testdata/file2.jpg") require.NoError(t, err) defer file2.Close() ipfs, err := httpapi.NewApi(apitest.GetIPFSApiAddr()) require.NoError(t, err) p, err := ipfs.Unixfs().Add( ctx, ipfsfiles.NewMapDirectory(map[string]ipfsfiles.Node{ "file1.jpg": ipfsfiles.NewReaderFile(file1), "folder1": ipfsfiles.NewMapDirectory(map[string]ipfsfiles.Node{ "file2.jpg": ipfsfiles.NewReaderFile(file2), }), }), ) require.NoError(t, err) r, err := client.ListIpfsPath(ctx, p) require.NoError(t, err) require.True(t, r.Item.IsDir) require.Len(t, r.Item.Items, 2) } func TestClient_PushPath(t *testing.T) { ctx, client := setup(t) t.Run("public", func(t *testing.T) { pushPath(t, ctx, client, false) }) t.Run("private", func(t *testing.T) { pushPath(t, ctx, client, true) }) } func pushPath(t *testing.T, ctx context.Context, client *c.Client, private bool) { buck, err := client.Create(ctx, c.WithPrivate(private)) require.NoError(t, err) file1, err := os.Open("testdata/file1.jpg") require.NoError(t, err) defer file1.Close() progress1 := make(chan int64) go func() { for p := range progress1 { fmt.Println(fmt.Sprintf("progress: %d", p)) } }() pth1, root1, err := client.PushPath(ctx, buck.Root.Key, "file1.jpg", file1, c.WithProgress(progress1)) require.NoError(t, err) assert.NotEmpty(t, pth1) assert.NotEmpty(t, root1) file2, err := os.Open("testdata/file2.jpg") require.NoError(t, err) defer file2.Close() progress2 := make(chan int64) go func() { for p := range progress2 { fmt.Println(fmt.Sprintf("progress: %d", p)) } }() _, _, err = client.PushPath(ctx, buck.Root.Key, "path/to/file2.jpg", file2, c.WithProgress(progress2)) require.NoError(t, err) rep1, err := client.ListPath(ctx, buck.Root.Key, "") require.NoError(t, err) assert.Len(t, rep1.Item.Items, 3) // Try overwriting the path _, _, err = client.PushPath(ctx, buck.Root.Key, "path/to/file2.jpg", strings.NewReader("seeya!")) require.NoError(t, err) rep2, err := client.ListPath(ctx, buck.Root.Key, "") require.NoError(t, err) assert.Len(t, rep2.Item.Items, 3) // Overwrite the path again, this time replacing a file link with a dir link file3, err := os.Open("testdata/file2.jpg") require.NoError(t, err) defer file3.Close() _, _, err = client.PushPath(ctx, buck.Root.Key, "path/to", file3) require.NoError(t, err) rep3, err := client.ListPath(ctx, buck.Root.Key, "") require.NoError(t, err) assert.Len(t, rep3.Item.Items, 3) // Concurrent writes should result in one being rejected due to the fast-forward-only rule root, err := util.NewResolvedPath(rep3.Root.Path) require.NoError(t, err) var err1, err2 error var wg sync.WaitGroup wg.Add(2) go func() { _, _, err1 = client.PushPath( ctx, buck.Root.Key, "conflict", strings.NewReader("ready, set, go!"), c.WithFastForwardOnly(root), ) wg.Done() }() go func() { _, _, err2 = client.PushPath( ctx, buck.Root.Key, "conflict", strings.NewReader("ready, set, go!"), c.WithFastForwardOnly(root), ) wg.Done() }() wg.Wait() // We should have one and only one error assert.False(t, (err1 != nil && err2 != nil) && (err1 == nil && err2 == nil)) if err1 != nil { assert.True(t, strings.Contains(err1.Error(), "update is non-fast-forward")) } else if err2 != nil { assert.True(t, strings.Contains(err2.Error(), "update is non-fast-forward")) } } func TestClient_PushPaths(t *testing.T) { ctx, client := setup(t) t.Run("public", func(t *testing.T) { pushPaths(t, ctx, client, false) }) t.Run("private", func(t *testing.T) { pushPaths(t, ctx, client, true) }) } func pushPaths(t *testing.T, ctx context.Context, client *c.Client, private bool) { buck, err := client.Create(ctx, c.WithPrivate(private)) require.NoError(t, err) progress1 := make(chan int64) defer close(progress1) go func() { for p := range progress1 { fmt.Println(fmt.Sprintf("progress: %d", p)) } }() q, err := client.PushPaths(ctx, buck.Root.Key, c.WithProgress(progress1)) require.NoError(t, err) err = q.AddFile("file1.jpg", "testdata/file1.jpg") require.NoError(t, err) err = q.AddFile("path/to/file2.jpg", "testdata/file2.jpg") require.NoError(t, err) for q.Next() { require.NoError(t, q.Err()) assert.NotEmpty(t, q.Current.Path) assert.NotEmpty(t, q.Current.Root) } q.Close() rep1, err := client.ListPath(ctx, buck.Root.Key, "") require.NoError(t, err) assert.Len(t, rep1.Item.Items, 3) // Try overwriting the path q2, err := client.PushPaths(ctx, buck.Root.Key) require.NoError(t, err) r := strings.NewReader("seeya!") err = q2.AddReader("path/to/file2.jpg", r, r.Size()) require.NoError(t, err) for q2.Next() { require.NoError(t, q2.Err()) } q2.Close() rep2, err := client.ListPath(ctx, buck.Root.Key, "") require.NoError(t, err) assert.Len(t, rep2.Item.Items, 3) // Overwrite the path again, this time replacing a file link with a dir link q3, err := client.PushPaths(ctx, buck.Root.Key) require.NoError(t, err) err = q3.AddFile("path/to", "testdata/file2.jpg") require.NoError(t, err) for q3.Next() { require.NoError(t, q3.Err()) } q3.Close() rep3, err := client.ListPath(ctx, buck.Root.Key, "") require.NoError(t, err) assert.Len(t, rep3.Item.Items, 3) // Concurrent writes should result in one being rejected due to the fast-forward-only rule root, err := util.NewResolvedPath(rep3.Root.Path) require.NoError(t, err) var err1, err2 error var wg sync.WaitGroup wg.Add(2) go func() { q, err := client.PushPaths(ctx, buck.Root.Key, c.WithFastForwardOnly(root)) require.NoError(t, err) err = q.AddReader("conflict", strings.NewReader("ready, set, go!"), 0) require.NoError(t, err) for q.Next() { err1 = q.Err() } q.Close() wg.Done() }() go func() { q, err := client.PushPaths(ctx, buck.Root.Key, c.WithFastForwardOnly(root)) require.NoError(t, err) err = q.AddReader("conflict", strings.NewReader("ready, set, go!"), 0) require.NoError(t, err) for q.Next() { err2 = q.Err() } q.Close() wg.Done() }() wg.Wait() // We should have one and only one error assert.False(t, (err1 != nil && err2 != nil) && (err1 == nil && err2 == nil)) if err1 != nil { assert.True(t, strings.Contains(err1.Error(), "update is non-fast-forward")) } else if err2 != nil { assert.True(t, strings.Contains(err2.Error(), "update is non-fast-forward")) } } func TestClient_PullPath(t *testing.T) { ctx, client := setup(t) t.Run("public", func(t *testing.T) { pullPath(t, ctx, client, false) }) t.Run("private", func(t *testing.T) { pullPath(t, ctx, client, true) }) } func pullPath(t *testing.T, ctx context.Context, client *c.Client, private bool) { buck, err := client.Create(ctx, c.WithPrivate(private)) require.NoError(t, err) file, err := os.Open("testdata/file1.jpg") require.NoError(t, err) defer file.Close() q, err := client.PushPaths(ctx, buck.Root.Key) require.NoError(t, err) err = q.AddFile("file1.jpg", "testdata/file1.jpg") require.NoError(t, err) for q.Next() { require.NoError(t, q.Err()) } q.Close() tmp, err := ioutil.TempFile("", "") require.NoError(t, err) defer tmp.Close() progress := make(chan int64) go func() { for p := range progress { fmt.Println(fmt.Sprintf("progress: %d", p)) } }() err = client.PullPath(ctx, buck.Root.Key, "file1.jpg", tmp, c.WithProgress(progress)) require.NoError(t, err) info, err := tmp.Stat() require.NoError(t, err) fmt.Println(fmt.Sprintf("wrote file with size %d", info.Size())) note := "baps!" q2, err := client.PushPaths(ctx, buck.Root.Key) require.NoError(t, err) err = q2.AddReader("one/two/note.txt", strings.NewReader(note), 0) require.NoError(t, err) for q2.Next() { require.NoError(t, q2.Err()) } q2.Close() var buf bytes.Buffer err = client.PullPath(ctx, buck.Root.Key, "one/two/note.txt", &buf) require.NoError(t, err) assert.Equal(t, note, buf.String()) } func TestClient_PullIpfsPath(t *testing.T) { ctx, client := setup(t) file1, err := os.Open("testdata/file1.jpg") require.NoError(t, err) defer file1.Close() file2, err := os.Open("testdata/file2.jpg") require.NoError(t, err) defer file2.Close() ipfs, err := httpapi.NewApi(apitest.GetIPFSApiAddr()) require.NoError(t, err) p, err := ipfs.Unixfs().Add( ctx, ipfsfiles.NewMapDirectory(map[string]ipfsfiles.Node{ "file1.jpg": ipfsfiles.NewReaderFile(file1), "folder1": ipfsfiles.NewMapDirectory(map[string]ipfsfiles.Node{ "file2.jpg": ipfsfiles.NewReaderFile(file2), }), }), ) require.NoError(t, err) tmpFile, err := ioutil.TempFile("", "") require.NoError(t, err) defer tmpFile.Close() defer func() { _ = os.Remove(tmpFile.Name()) }() tmpName := tmpFile.Name() err = client.PullIpfsPath(ctx, path.Join(p, "folder1/file2.jpg"), tmpFile) require.NoError(t, err) tmpFile.Close() file2, err = os.Open("testdata/file2.jpg") require.NoError(t, err) defer file2.Close() origBytes, err := ioutil.ReadAll(file2) require.NoError(t, err) tmpFile, err = os.Open(tmpName) require.NoError(t, err) defer tmpFile.Close() tmpBytes, err := ioutil.ReadAll(tmpFile) require.NoError(t, err) require.True(t, bytes.Equal(origBytes, tmpBytes)) } func TestClient_SetPath(t *testing.T) { t.Run("public", func(t *testing.T) { setPath(t, false) }) t.Run("private", func(t *testing.T) { setPath(t, true) }) } func setPath(t *testing.T, private bool) { innerPaths := []struct { Name string Path string // How many files should be expected at the bucket root // in the first SetHead. NumFilesAtRootFirst int // How many files should be expected at the *imported* Cid // level. NumFilesAtImportedLevelFirst int // How many files should be expected at the bucket root // in the second SetHead. NumFilesAtRootSecond int // How many files should be expected at the *imported* Cid // level. NumFilesAtImportedLevelSecond int }{ { Name: "nested", Path: "nested", // At root level, .seed and nested dir. NumFilesAtRootFirst: 2, // The first SetHead has one file, and one dir. NumFilesAtImportedLevelFirst: 2, NumFilesAtRootSecond: 2, // The second SetHead only has one file. NumFilesAtImportedLevelSecond: 1, }, // Edge case, Path is empty. So "AtRoot" or "AtImportedLevel" // is the same. { Name: "root", Path: "", NumFilesAtRootFirst: 3, NumFilesAtImportedLevelFirst: 3, // In both below cases, the files are the .seed // and the fileVersion2.jpg. NumFilesAtRootSecond: 2, NumFilesAtImportedLevelSecond: 2, }, } for _, innerPath := range innerPaths { t.Run(innerPath.Name, func(t *testing.T) { ctx, client := setup(t) file1, err := os.Open("testdata/file1.jpg") require.NoError(t, err) defer file1.Close() file2, err := os.Open("testdata/file2.jpg") require.NoError(t, err) defer file2.Close() ipfs, err := httpapi.NewApi(apitest.GetIPFSApiAddr()) require.NoError(t, err) p, err := ipfs.Unixfs().Add( ctx, ipfsfiles.NewMapDirectory(map[string]ipfsfiles.Node{ "file1.jpg": ipfsfiles.NewReaderFile(file1), "folder1": ipfsfiles.NewMapDirectory(map[string]ipfsfiles.Node{ "file2.jpg": ipfsfiles.NewReaderFile(file2), }), }), ) require.NoError(t, err) buck, err := client.Create(ctx, c.WithPrivate(private)) require.NoError(t, err) _, err = client.SetPath(ctx, buck.Root.Key, innerPath.Path, p.Cid()) require.NoError(t, err) rep, err := client.ListPath(ctx, buck.Root.Key, "") require.NoError(t, err) assert.True(t, rep.Item.IsDir) assert.Len(t, rep.Item.Items, innerPath.NumFilesAtRootFirst) rep, err = client.ListPath(ctx, buck.Root.Key, innerPath.Path) require.NoError(t, err) assert.True(t, rep.Item.IsDir) assert.Len(t, rep.Item.Items, innerPath.NumFilesAtImportedLevelFirst) // SetPath again in the same path, but with a different dag. // Should replace what was already under that path. file1, err = os.Open("testdata/file1.jpg") require.NoError(t, err) defer file1.Close() p, err = ipfs.Unixfs().Add( ctx, ipfsfiles.NewMapDirectory(map[string]ipfsfiles.Node{ "fileVersion2.jpg": ipfsfiles.NewReaderFile(file1), }), ) require.NoError(t, err) _, err = client.SetPath(ctx, buck.Root.Key, innerPath.Path, p.Cid()) require.NoError(t, err) rep, err = client.ListPath(ctx, buck.Root.Key, "") require.NoError(t, err) assert.True(t, rep.Item.IsDir) assert.Len(t, rep.Item.Items, innerPath.NumFilesAtRootSecond) rep, err = client.ListPath(ctx, buck.Root.Key, innerPath.Path) require.NoError(t, err) assert.True(t, rep.Item.IsDir) assert.Len(t, rep.Item.Items, innerPath.NumFilesAtImportedLevelSecond) }) } } func TestClient_Move(t *testing.T) { ctx, client := setup(t) t.Run("public", func(t *testing.T) { move(t, ctx, client, false) }) t.Run("private", func(t *testing.T) { move(t, ctx, client, true) }) } func move(t *testing.T, ctx context.Context, client *c.Client, private bool) { buck, err := client.Create(ctx, c.WithPrivate(private)) require.NoError(t, err) q, err := client.PushPaths(ctx, buck.Root.Key) require.NoError(t, err) err = q.AddFile("root.jpg", "testdata/file1.jpg") require.NoError(t, err) err = q.AddFile("a/b/c/file1.jpg", "testdata/file1.jpg") require.NoError(t, err) err = q.AddFile("a/b/c/file2.jpg", "testdata/file2.jpg") require.NoError(t, err) for q.Next() { require.NoError(t, q.Err()) } q.Close() // move a dir into a new path => a/c err = client.MovePath(ctx, buck.Root.Key, "a/b/c", "a/c") require.NoError(t, err) // check source files no longer exists li, err := client.ListPath(ctx, buck.Root.Key, "a/b/c") require.Error(t, err) // check source parent remains untouched li, err = client.ListPath(ctx, buck.Root.Key, "a/b") require.NoError(t, err) assert.True(t, li.Item.IsDir) assert.Len(t, li.Item.Items, 0) // move a dir into an existing path => a/b/c err = client.MovePath(ctx, buck.Root.Key, "a/c", "a/b") require.NoError(t, err) // check source dir no longer exists li, err = client.ListPath(ctx, buck.Root.Key, "a/c") require.Error(t, err) // check source parent contains all the right children li, err = client.ListPath(ctx, buck.Root.Key, "a") require.NoError(t, err) assert.True(t, li.Item.IsDir) assert.Len(t, li.Item.Items, 1) // check source parent contains all the right children li, err = client.ListPath(ctx, buck.Root.Key, "a/b/c") require.NoError(t, err) assert.True(t, li.Item.IsDir) assert.Len(t, li.Item.Items, 2) // move and rename file => a/b/c/file2.jpg + a/b/file3.jpg err = client.MovePath(ctx, buck.Root.Key, "a/b/c/file1.jpg", "a/b/file3.jpg") require.NoError(t, err) li, err = client.ListPath(ctx, buck.Root.Key, "a/b/file3.jpg") require.NoError(t, err) assert.False(t, li.Item.IsDir) assert.Equal(t, li.Item.Name, "file3.jpg") // move a/b/c to root => c err = client.MovePath(ctx, buck.Root.Key, "a/b/c", "") require.NoError(t, err) li, err = client.ListPath(ctx, buck.Root.Key, "") require.NoError(t, err) assert.True(t, li.Item.IsDir) assert.Len(t, li.Item.Items, 4) li, err = client.ListPath(ctx, buck.Root.Key, "root.jpg") require.NoError(t, err) // move root should fail err = client.MovePath(ctx, buck.Root.Key, "", "a") require.Error(t, err, "source is root directory") li, err = client.ListPath(ctx, buck.Root.Key, "a") require.NoError(t, err) assert.True(t, li.Item.IsDir) assert.Len(t, li.Item.Items, 1) // move non existant should fail err = client.MovePath(ctx, buck.Root.Key, "x", "a") if private { assert.True(t, strings.Contains(err.Error(), "could not resolve path")) } else { assert.True(t, strings.Contains(err.Error(), "no link named")) } } func TestClient_Remove(t *testing.T) { ctx, client := setup(t) t.Run("public", func(t *testing.T) { remove(t, ctx, client, false) }) t.Run("private", func(t *testing.T) { remove(t, ctx, client, true) }) } func remove(t *testing.T, ctx context.Context, client *c.Client, private bool) { buck, err := client.Create(ctx, c.WithPrivate(private)) require.NoError(t, err) q, err := client.PushPaths(ctx, buck.Root.Key) require.NoError(t, err) err = q.AddFile("file1.jpg", "testdata/file1.jpg") require.NoError(t, err) err = q.AddFile("again/file2.jpg", "testdata/file2.jpg") require.NoError(t, err) for q.Next() { require.NoError(t, q.Err()) } q.Close() err = client.Remove(ctx, buck.Root.Key) require.NoError(t, err) _, err = client.ListPath(ctx, buck.Root.Key, "again/file2.jpg") require.Error(t, err) } func TestClient_RemovePath(t *testing.T) { ctx, client := setup(t) t.Run("public", func(t *testing.T) { removePath(t, ctx, client, false) }) t.Run("private", func(t *testing.T) { removePath(t, ctx, client, true) }) } func removePath(t *testing.T, ctx context.Context, client *c.Client, private bool) { buck, err := client.Create(ctx, c.WithPrivate(private)) require.NoError(t, err) q, err := client.PushPaths(ctx, buck.Root.Key) require.NoError(t, err) err = q.AddFile("file1.jpg", "testdata/file1.jpg") require.NoError(t, err) err = q.AddFile("again/file2.jpg", "testdata/file2.jpg") require.NoError(t, err) for q.Next() { require.NoError(t, q.Err()) } q.Close() pth, err := client.RemovePath(ctx, buck.Root.Key, "again/file2.jpg") require.NoError(t, err) assert.NotEmpty(t, pth) _, err = client.ListPath(ctx, buck.Root.Key, "again/file2.jpg") require.Error(t, err) rep, err := client.ListPath(ctx, buck.Root.Key, "") require.NoError(t, err) assert.Len(t, rep.Item.Items, 3) _, err = client.RemovePath(ctx, buck.Root.Key, "again") require.NoError(t, err) _, err = client.ListPath(ctx, buck.Root.Key, "again") require.Error(t, err) rep, err = client.ListPath(ctx, buck.Root.Key, "") require.NoError(t, err) assert.Len(t, rep.Item.Items, 2) } func TestClient_PushPathAccessRoles(t *testing.T) { ctx, userctx, threadsclient, client := setupForUsers(t) t.Run("public", func(t *testing.T) { pushPathAccessRoles(t, ctx, userctx, threadsclient, client, false) }) t.Run("private", func(t *testing.T) { pushPathAccessRoles(t, ctx, userctx, threadsclient, client, true) }) } func pushPathAccessRoles( t *testing.T, ctx context.Context, userctx context.Context, threadsclient *tc.Client, client *c.Client, private bool, ) { buck, err := client.Create(ctx, c.WithPrivate(private)) require.NoError(t, err) t.Run("non-existent path", func(t *testing.T) { _, pk, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) reader := thread.NewLibp2pPubKey(pk) err = client.PushPathAccessRoles(ctx, buck.Root.Key, "nothing/here", map[string]bucks.Role{ reader.String(): bucks.Reader, }) require.Error(t, err) }) t.Run("existent path", func(t *testing.T) { user1, user1ctx := newUser(t, userctx, threadsclient) q, err := client.PushPaths(ctx, buck.Root.Key) require.NoError(t, err) err = q.AddFile("file", "testdata/file1.jpg") require.NoError(t, err) for q.Next() { require.NoError(t, q.Err()) } q.Close() // Check initial access (none) check := accessCheck{ Key: buck.Root.Key, Path: "file", } check.Read = !private // public buckets readable by all checkAccess(t, user1ctx, client, check) // Grant reader err = client.PushPathAccessRoles(ctx, buck.Root.Key, "file", map[string]bucks.Role{ user1.GetPublic().String(): bucks.Reader, }) require.NoError(t, err) check.Read = true checkAccess(t, user1ctx, client, check) // Grant writer err = client.PushPathAccessRoles(ctx, buck.Root.Key, "file", map[string]bucks.Role{ user1.GetPublic().String(): bucks.Writer, }) require.NoError(t, err) check.Write = true checkAccess(t, user1ctx, client, check) // Grant admin err = client.PushPathAccessRoles(ctx, buck.Root.Key, "file", map[string]bucks.Role{ user1.GetPublic().String(): bucks.Admin, }) require.NoError(t, err) check.Admin = true checkAccess(t, user1ctx, client, check) // Ungrant err = client.PushPathAccessRoles(ctx, buck.Root.Key, "file", map[string]bucks.Role{ user1.GetPublic().String(): bucks.None, }) require.NoError(t, err) check.Read = !private check.Write = false check.Admin = false checkAccess(t, user1ctx, client, check) }) t.Run("overlapping paths", func(t *testing.T) { user1, user1ctx := newUser(t, userctx, threadsclient) user2, user2ctx := newUser(t, userctx, threadsclient) q, err := client.PushPaths(ctx, buck.Root.Key) require.NoError(t, err) err = q.AddFile("a/b/f1", "testdata/file1.jpg") require.NoError(t, err) for q.Next() { require.NoError(t, q.Err()) } q.Close() q2, err := client.PushPaths(ctx, buck.Root.Key) require.NoError(t, err) err = q2.AddFile("a/f2", "testdata/file2.jpg") require.NoError(t, err) for q2.Next() { require.NoError(t, q2.Err()) } q2.Close() // Grant nested tree err = client.PushPathAccessRoles(ctx, buck.Root.Key, "a/b", map[string]bucks.Role{ user1.GetPublic().String(): bucks.Writer, }) require.NoError(t, err) checkAccess(t, user1ctx, client, accessCheck{ Key: buck.Root.Key, Path: "a/b/f1", Read: true, Write: true, }) // Grant parent of nested tree err = client.PushPathAccessRoles(ctx, buck.Root.Key, "a", map[string]bucks.Role{ user2.GetPublic().String(): bucks.Writer, }) require.NoError(t, err) checkAccess(t, user2ctx, client, accessCheck{ Key: buck.Root.Key, Path: "a/b/f1", Read: true, Write: true, }) // Re-check nested access for user1 checkAccess(t, user1ctx, client, accessCheck{ Key: buck.Root.Key, Path: "a/b/f1", Read: true, Write: true, }) // Grant root err = client.PushPathAccessRoles(ctx, buck.Root.Key, "", map[string]bucks.Role{ user2.GetPublic().String(): bucks.Reader, }) require.NoError(t, err) checkAccess(t, user2ctx, client, accessCheck{ Key: buck.Root.Key, Path: "a/f2", Read: true, Write: true, }) // Re-check nested access for user1 checkAccess(t, user1ctx, client, accessCheck{ Key: buck.Root.Key, Path: "a/b/f1", Read: true, Write: true, }) }) t.Run("moving path", func(t *testing.T) { user1, user1ctx := newUser(t, userctx, threadsclient) q, err := client.PushPaths(ctx, buck.Root.Key) require.NoError(t, err) err = q.AddFile("moving/file", "testdata/file1.jpg") require.NoError(t, err) for q.Next() { require.NoError(t, q.Err()) } q.Close() // Check initial access (none) check := accessCheck{ Key: buck.Root.Key, Path: "moving/file", } check.Read = !private // public buckets readable by all checkAccess(t, user1ctx, client, check) // Grant reader err = client.PushPathAccessRoles(ctx, buck.Root.Key, "moving/file", map[string]bucks.Role{ user1.GetPublic().String(): bucks.Writer, }) require.NoError(t, err) check.Write = true check.Read = true checkAccess(t, user1ctx, client, check) // move the shared file to a new path err = client.MovePath(ctx, buck.Root.Key, "moving/file", "moving/file2") require.NoError(t, err) q, err = client.PushPaths(ctx, buck.Root.Key) require.NoError(t, err) err = q.AddFile("moving/file", "testdata/file1.jpg") require.NoError(t, err) for q.Next() { require.NoError(t, q.Err()) } q.Close() // Permissions reset with move checkAccess(t, user1ctx, client, accessCheck{ Key: buck.Root.Key, Path: "moving/file2", Admin: false, Read: !private, Write: false, }) // Grant admin at root err = client.PushPathAccessRoles(ctx, buck.Root.Key, "moving", map[string]bucks.Role{ user1.GetPublic().String(): bucks.Admin, }) require.NoError(t, err) // now user has access to new file again checkAccess(t, user1ctx, client, accessCheck{ Key: buck.Root.Key, Path: "moving/file2", Admin: true, Read: true, Write: true, }) // Move file again err = client.MovePath(ctx, buck.Root.Key, "moving/file2", "moving/file3") require.NoError(t, err) // User still has access to shared file after move checkAccess(t, user1ctx, client, accessCheck{ Key: buck.Root.Key, Path: "moving/file3", Admin: true, Read: true, Write: true, }) }) } type accessCheck struct { Key string Path string Read bool Write bool Admin bool } func checkAccess(t *testing.T, ctx context.Context, client *c.Client, check accessCheck) { // Check read access res, err := client.ListPath(ctx, check.Key, check.Path) if check.Read { require.NoError(t, err) assert.NotEmpty(t, res.Item) } else { require.Error(t, err) } // Check write access tmp, err := ioutil.TempFile("", "") require.NoError(t, err) defer tmp.Close() _, err = io.CopyN(tmp, rand.Reader, 1024) require.NoError(t, err) q, err := client.PushPaths(ctx, check.Key) require.NoError(t, err) err = q.AddReader(check.Path, tmp, 0) require.NoError(t, err) for q.Next() { if check.Write { require.NoError(t, q.Err()) } else { require.Error(t, q.Err()) } } q.Close() // Check admin access (role editing) _, pk, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) err = client.PushPathAccessRoles(ctx, check.Key, check.Path, map[string]bucks.Role{ thread.NewLibp2pPubKey(pk).String(): bucks.Reader, }) if check.Admin { require.NoError(t, err) } else { require.Error(t, err) } } func TestClient_PullPathAccessRoles(t *testing.T) { ctx, client := setup(t) buck, err := client.Create(ctx) require.NoError(t, err) q, err := client.PushPaths(ctx, buck.Root.Key) require.NoError(t, err) err = q.AddFile("file1.jpg", "testdata/file1.jpg") require.NoError(t, err) for q.Next() { require.NoError(t, q.Err()) } q.Close() roles, err := client.PullPathAccessRoles(ctx, buck.Root.Key, "file1.jpg") require.NoError(t, err) assert.Len(t, roles, 0) _, pk, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) reader := thread.NewLibp2pPubKey(pk) roles = map[string]bucks.Role{ reader.String(): bucks.Reader, } err = client.PushPathAccessRoles(ctx, buck.Root.Key, "file1.jpg", roles) require.NoError(t, err) roles, err = client.PullPathAccessRoles(ctx, buck.Root.Key, "file1.jpg") require.NoError(t, err) assert.Len(t, roles, 1) } func TestClose(t *testing.T) { conf := apitest.MakeTextile(t) target, err := tutil.TCPAddrFromMultiAddr(conf.AddrAPI) require.NoError(t, err) client, err := c.NewClient(target, grpc.WithInsecure(), grpc.WithPerRPCCredentials(common.Credentials{})) require.NoError(t, err) t.Run("test close", func(t *testing.T) { err := client.Close() require.NoError(t, err) }) } func setup(t *testing.T) (context.Context, *c.Client) { bconf := apitest.DefaultBillingConfig(t) apitest.MakeBillingWithConfig(t, bconf) conf := apitest.DefaultTextileConfig(t) billingApi, err := tutil.TCPAddrFromMultiAddr(bconf.ListenAddr) require.NoError(t, err) conf.AddrBillingAPI = billingApi ctx, _, _, client := setupWithConf(t, conf) return ctx, client } func setupForUsers(t *testing.T) (context.Context, context.Context, *tc.Client, *c.Client) { conf := apitest.DefaultTextileConfig(t) ctx, hubclient, threadsclient, client := setupWithConf(t, conf) res, err := hubclient.CreateKey(ctx, hubpb.KeyType_KEY_TYPE_USER, true) require.NoError(t, err) userctx := common.NewAPIKeyContext(context.Background(), res.KeyInfo.Key) userctx, err = common.CreateAPISigContext(userctx, time.Now().Add(time.Hour), res.KeyInfo.Secret) require.NoError(t, err) id, ok := common.ThreadIDFromContext(ctx) require.True(t, ok) userctx = common.NewThreadIDContext(userctx, id) return ctx, userctx, threadsclient, client } func setupWithConf(t *testing.T, conf core.Config) (context.Context, *hc.Client, *tc.Client, *c.Client) { apitest.MakeTextileWithConfig(t, conf) target, err := tutil.TCPAddrFromMultiAddr(conf.AddrAPI) require.NoError(t, err) opts := []grpc.DialOption{grpc.WithInsecure(), grpc.WithPerRPCCredentials(common.Credentials{})} client, err := c.NewClient(target, opts...) require.NoError(t, err) hubclient, err := hc.NewClient(target, opts...) require.NoError(t, err) threadsclient, err := tc.NewClient(target, opts...) require.NoError(t, err) user := apitest.Signup(t, hubclient, conf, apitest.NewUsername(), apitest.NewEmail()) ctx := common.NewSessionContext(context.Background(), user.Session) id := thread.NewIDV1(thread.Raw, 32) ctx = common.NewThreadNameContext(ctx, "buckets") err = threadsclient.NewDB(ctx, id) require.NoError(t, err) ctx = common.NewThreadIDContext(ctx, id) t.Cleanup(func() { err := client.Close() require.NoError(t, err) }) return ctx, hubclient, threadsclient, client } func newUser(t *testing.T, ctx context.Context, threadsclient *tc.Client) (thread.Identity, context.Context) { sk, _, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) identity := thread.NewLibp2pIdentity(sk) tok, err := threadsclient.GetToken(ctx, identity) require.NoError(t, err) return identity, thread.NewTokenContext(ctx, tok) } ================================================ FILE: api/bucketsd/client/options.go ================================================ package client import ( "github.com/ipfs/go-cid" "github.com/ipfs/interface-go-ipfs-core/path" pb "github.com/textileio/textile/v2/api/bucketsd/pb" ) type createOptions struct { name string private bool fromCid cid.Cid unfreeze bool } type CreateOption func(*createOptions) // WithName sets a name for the bucket. func WithName(name string) CreateOption { return func(args *createOptions) { args.name = name } } // WithPrivate specifies that an encryption key will be used for the bucket. func WithPrivate(private bool) CreateOption { return func(args *createOptions) { args.private = private } } // WithCid indicates that an inited bucket should be boostraped // with a particular UnixFS DAG. func WithCid(c cid.Cid) CreateOption { return func(args *createOptions) { args.fromCid = c } } // WithUnfreeze indicates that an inited bucket should be boostraped // from an imported archive. func WithUnfreeze(enabled bool) CreateOption { return func(args *createOptions) { args.unfreeze = enabled } } type options struct { root path.Resolved progress chan<- int64 } type Option func(*options) // WithFastForwardOnly instructs the remote to reject non-fast-forward updates by comparing root with the remote. func WithFastForwardOnly(root path.Resolved) Option { return func(args *options) { args.root = root } } // WithProgress writes progress updates to the given channel. func WithProgress(ch chan<- int64) Option { return func(args *options) { args.progress = ch } } type ArchiveOption func(*pb.ArchiveRequest) // WithArchiveConfig allows you to provide a custom ArchiveConfig for a single call to Archive. func WithArchiveConfig(config *pb.ArchiveConfig) ArchiveOption { return func(req *pb.ArchiveRequest) { req.ArchiveConfig = config } } // WithSkipAutomaticVerifiedDeal allows to skip backend logic to automatically make // a verified deal for the archive. func WithSkipAutomaticVerifiedDeal(enabled bool) ArchiveOption { return func(req *pb.ArchiveRequest) { req.SkipAutomaticVerifiedDeal = enabled } } ================================================ FILE: api/bucketsd/pb/bucketsd.pb.go ================================================ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.23.0 // protoc v3.13.0 // source: api/bucketsd/pb/bucketsd.proto package pb import ( context "context" proto "github.com/golang/protobuf/proto" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) 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 that a sufficiently up-to-date version // of the legacy proto package is being used. const _ = proto.ProtoPackageIsVersion4 type PathAccessRole int32 const ( PathAccessRole_PATH_ACCESS_ROLE_UNSPECIFIED PathAccessRole = 0 PathAccessRole_PATH_ACCESS_ROLE_READER PathAccessRole = 1 PathAccessRole_PATH_ACCESS_ROLE_WRITER PathAccessRole = 2 PathAccessRole_PATH_ACCESS_ROLE_ADMIN PathAccessRole = 3 ) // Enum value maps for PathAccessRole. var ( PathAccessRole_name = map[int32]string{ 0: "PATH_ACCESS_ROLE_UNSPECIFIED", 1: "PATH_ACCESS_ROLE_READER", 2: "PATH_ACCESS_ROLE_WRITER", 3: "PATH_ACCESS_ROLE_ADMIN", } PathAccessRole_value = map[string]int32{ "PATH_ACCESS_ROLE_UNSPECIFIED": 0, "PATH_ACCESS_ROLE_READER": 1, "PATH_ACCESS_ROLE_WRITER": 2, "PATH_ACCESS_ROLE_ADMIN": 3, } ) func (x PathAccessRole) Enum() *PathAccessRole { p := new(PathAccessRole) *p = x return p } func (x PathAccessRole) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (PathAccessRole) Descriptor() protoreflect.EnumDescriptor { return file_api_bucketsd_pb_bucketsd_proto_enumTypes[0].Descriptor() } func (PathAccessRole) Type() protoreflect.EnumType { return &file_api_bucketsd_pb_bucketsd_proto_enumTypes[0] } func (x PathAccessRole) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use PathAccessRole.Descriptor instead. func (PathAccessRole) EnumDescriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{0} } type ArchiveStatus int32 const ( ArchiveStatus_ARCHIVE_STATUS_UNSPECIFIED ArchiveStatus = 0 ArchiveStatus_ARCHIVE_STATUS_QUEUED ArchiveStatus = 1 ArchiveStatus_ARCHIVE_STATUS_EXECUTING ArchiveStatus = 2 ArchiveStatus_ARCHIVE_STATUS_FAILED ArchiveStatus = 3 ArchiveStatus_ARCHIVE_STATUS_CANCELED ArchiveStatus = 4 ArchiveStatus_ARCHIVE_STATUS_SUCCESS ArchiveStatus = 5 ) // Enum value maps for ArchiveStatus. var ( ArchiveStatus_name = map[int32]string{ 0: "ARCHIVE_STATUS_UNSPECIFIED", 1: "ARCHIVE_STATUS_QUEUED", 2: "ARCHIVE_STATUS_EXECUTING", 3: "ARCHIVE_STATUS_FAILED", 4: "ARCHIVE_STATUS_CANCELED", 5: "ARCHIVE_STATUS_SUCCESS", } ArchiveStatus_value = map[string]int32{ "ARCHIVE_STATUS_UNSPECIFIED": 0, "ARCHIVE_STATUS_QUEUED": 1, "ARCHIVE_STATUS_EXECUTING": 2, "ARCHIVE_STATUS_FAILED": 3, "ARCHIVE_STATUS_CANCELED": 4, "ARCHIVE_STATUS_SUCCESS": 5, } ) func (x ArchiveStatus) Enum() *ArchiveStatus { p := new(ArchiveStatus) *p = x return p } func (x ArchiveStatus) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ArchiveStatus) Descriptor() protoreflect.EnumDescriptor { return file_api_bucketsd_pb_bucketsd_proto_enumTypes[1].Descriptor() } func (ArchiveStatus) Type() protoreflect.EnumType { return &file_api_bucketsd_pb_bucketsd_proto_enumTypes[1] } func (x ArchiveStatus) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use ArchiveStatus.Descriptor instead. func (ArchiveStatus) EnumDescriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{1} } type Metadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Roles map[string]PathAccessRole `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=api.bucketsd.pb.PathAccessRole"` UpdatedAt int64 `protobuf:"varint,2,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` } func (x *Metadata) Reset() { *x = Metadata{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Metadata) String() string { return protoimpl.X.MessageStringOf(x) } func (*Metadata) ProtoMessage() {} func (x *Metadata) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 Metadata.ProtoReflect.Descriptor instead. func (*Metadata) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{0} } func (x *Metadata) GetRoles() map[string]PathAccessRole { if x != nil { return x.Roles } return nil } func (x *Metadata) GetUpdatedAt() int64 { if x != nil { return x.UpdatedAt } return 0 } func (x *Metadata) GetKey() string { if x != nil { return x.Key } return "" } type Root struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` CreatedAt int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt int64 `protobuf:"varint,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Thread string `protobuf:"bytes,6,opt,name=thread,proto3" json:"thread,omitempty"` Owner string `protobuf:"bytes,7,opt,name=owner,proto3" json:"owner,omitempty"` Version int32 `protobuf:"varint,8,opt,name=version,proto3" json:"version,omitempty"` Metadata *Metadata `protobuf:"bytes,9,opt,name=metadata,proto3" json:"metadata,omitempty"` LinkKey string `protobuf:"bytes,10,opt,name=link_key,json=linkKey,proto3" json:"link_key,omitempty"` PathMetadata map[string]*Metadata `protobuf:"bytes,11,rep,name=path_metadata,json=pathMetadata,proto3" json:"path_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` Archives *Archives `protobuf:"bytes,12,opt,name=archives,proto3" json:"archives,omitempty"` } func (x *Root) Reset() { *x = Root{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Root) String() string { return protoimpl.X.MessageStringOf(x) } func (*Root) ProtoMessage() {} func (x *Root) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 Root.ProtoReflect.Descriptor instead. func (*Root) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{1} } func (x *Root) GetKey() string { if x != nil { return x.Key } return "" } func (x *Root) GetName() string { if x != nil { return x.Name } return "" } func (x *Root) GetPath() string { if x != nil { return x.Path } return "" } func (x *Root) GetCreatedAt() int64 { if x != nil { return x.CreatedAt } return 0 } func (x *Root) GetUpdatedAt() int64 { if x != nil { return x.UpdatedAt } return 0 } func (x *Root) GetThread() string { if x != nil { return x.Thread } return "" } func (x *Root) GetOwner() string { if x != nil { return x.Owner } return "" } func (x *Root) GetVersion() int32 { if x != nil { return x.Version } return 0 } func (x *Root) GetMetadata() *Metadata { if x != nil { return x.Metadata } return nil } func (x *Root) GetLinkKey() string { if x != nil { return x.LinkKey } return "" } func (x *Root) GetPathMetadata() map[string]*Metadata { if x != nil { return x.PathMetadata } return nil } func (x *Root) GetArchives() *Archives { if x != nil { return x.Archives } return nil } type ListRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ListRequest) Reset() { *x = ListRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListRequest) ProtoMessage() {} func (x *ListRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 ListRequest.ProtoReflect.Descriptor instead. func (*ListRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{2} } type ListResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Roots []*Root `protobuf:"bytes,1,rep,name=roots,proto3" json:"roots,omitempty"` } func (x *ListResponse) Reset() { *x = ListResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListResponse) ProtoMessage() {} func (x *ListResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 ListResponse.ProtoReflect.Descriptor instead. func (*ListResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{3} } func (x *ListResponse) GetRoots() []*Root { if x != nil { return x.Roots } return nil } type CreateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` BootstrapCid string `protobuf:"bytes,2,opt,name=bootstrap_cid,json=bootstrapCid,proto3" json:"bootstrap_cid,omitempty"` Private bool `protobuf:"varint,3,opt,name=private,proto3" json:"private,omitempty"` Unfreeze bool `protobuf:"varint,4,opt,name=unfreeze,proto3" json:"unfreeze,omitempty"` } func (x *CreateRequest) Reset() { *x = CreateRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateRequest) ProtoMessage() {} func (x *CreateRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 CreateRequest.ProtoReflect.Descriptor instead. func (*CreateRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{4} } func (x *CreateRequest) GetName() string { if x != nil { return x.Name } return "" } func (x *CreateRequest) GetBootstrapCid() string { if x != nil { return x.BootstrapCid } return "" } func (x *CreateRequest) GetPrivate() bool { if x != nil { return x.Private } return false } func (x *CreateRequest) GetUnfreeze() bool { if x != nil { return x.Unfreeze } return false } type CreateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Root *Root `protobuf:"bytes,1,opt,name=root,proto3" json:"root,omitempty"` Links *LinksResponse `protobuf:"bytes,2,opt,name=links,proto3" json:"links,omitempty"` Seed []byte `protobuf:"bytes,3,opt,name=seed,proto3" json:"seed,omitempty"` SeedCid string `protobuf:"bytes,4,opt,name=seed_cid,json=seedCid,proto3" json:"seed_cid,omitempty"` Pinned int64 `protobuf:"varint,5,opt,name=pinned,proto3" json:"pinned,omitempty"` RetrievalId string `protobuf:"bytes,6,opt,name=retrieval_id,json=retrievalId,proto3" json:"retrieval_id,omitempty"` } func (x *CreateResponse) Reset() { *x = CreateResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateResponse) ProtoMessage() {} func (x *CreateResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 CreateResponse.ProtoReflect.Descriptor instead. func (*CreateResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{5} } func (x *CreateResponse) GetRoot() *Root { if x != nil { return x.Root } return nil } func (x *CreateResponse) GetLinks() *LinksResponse { if x != nil { return x.Links } return nil } func (x *CreateResponse) GetSeed() []byte { if x != nil { return x.Seed } return nil } func (x *CreateResponse) GetSeedCid() string { if x != nil { return x.SeedCid } return "" } func (x *CreateResponse) GetPinned() int64 { if x != nil { return x.Pinned } return 0 } func (x *CreateResponse) GetRetrievalId() string { if x != nil { return x.RetrievalId } return "" } type RootRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } func (x *RootRequest) Reset() { *x = RootRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RootRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RootRequest) ProtoMessage() {} func (x *RootRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 RootRequest.ProtoReflect.Descriptor instead. func (*RootRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{6} } func (x *RootRequest) GetKey() string { if x != nil { return x.Key } return "" } type RootResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Root *Root `protobuf:"bytes,1,opt,name=root,proto3" json:"root,omitempty"` } func (x *RootResponse) Reset() { *x = RootResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RootResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RootResponse) ProtoMessage() {} func (x *RootResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 RootResponse.ProtoReflect.Descriptor instead. func (*RootResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{7} } func (x *RootResponse) GetRoot() *Root { if x != nil { return x.Root } return nil } type LinksRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` } func (x *LinksRequest) Reset() { *x = LinksRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LinksRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*LinksRequest) ProtoMessage() {} func (x *LinksRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 LinksRequest.ProtoReflect.Descriptor instead. func (*LinksRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{8} } func (x *LinksRequest) GetKey() string { if x != nil { return x.Key } return "" } func (x *LinksRequest) GetPath() string { if x != nil { return x.Path } return "" } type LinksResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` Www string `protobuf:"bytes,2,opt,name=www,proto3" json:"www,omitempty"` Ipns string `protobuf:"bytes,3,opt,name=ipns,proto3" json:"ipns,omitempty"` } func (x *LinksResponse) Reset() { *x = LinksResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LinksResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*LinksResponse) ProtoMessage() {} func (x *LinksResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 LinksResponse.ProtoReflect.Descriptor instead. func (*LinksResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{9} } func (x *LinksResponse) GetUrl() string { if x != nil { return x.Url } return "" } func (x *LinksResponse) GetWww() string { if x != nil { return x.Www } return "" } func (x *LinksResponse) GetIpns() string { if x != nil { return x.Ipns } return "" } type ListPathRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` } func (x *ListPathRequest) Reset() { *x = ListPathRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListPathRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListPathRequest) ProtoMessage() {} func (x *ListPathRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 ListPathRequest.ProtoReflect.Descriptor instead. func (*ListPathRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{10} } func (x *ListPathRequest) GetKey() string { if x != nil { return x.Key } return "" } func (x *ListPathRequest) GetPath() string { if x != nil { return x.Path } return "" } type ListPathResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Item *PathItem `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` Root *Root `protobuf:"bytes,2,opt,name=root,proto3" json:"root,omitempty"` } func (x *ListPathResponse) Reset() { *x = ListPathResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListPathResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListPathResponse) ProtoMessage() {} func (x *ListPathResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 ListPathResponse.ProtoReflect.Descriptor instead. func (*ListPathResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{11} } func (x *ListPathResponse) GetItem() *PathItem { if x != nil { return x.Item } return nil } func (x *ListPathResponse) GetRoot() *Root { if x != nil { return x.Root } return nil } type PathItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Cid string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` Size int64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` IsDir bool `protobuf:"varint,5,opt,name=is_dir,json=isDir,proto3" json:"is_dir,omitempty"` Items []*PathItem `protobuf:"bytes,6,rep,name=items,proto3" json:"items,omitempty"` ItemsCount int32 `protobuf:"varint,7,opt,name=items_count,json=itemsCount,proto3" json:"items_count,omitempty"` Metadata *Metadata `protobuf:"bytes,9,opt,name=metadata,proto3" json:"metadata,omitempty"` // @todo: For v3, change this to 8. } func (x *PathItem) Reset() { *x = PathItem{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PathItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*PathItem) ProtoMessage() {} func (x *PathItem) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 PathItem.ProtoReflect.Descriptor instead. func (*PathItem) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{12} } func (x *PathItem) GetCid() string { if x != nil { return x.Cid } return "" } func (x *PathItem) GetName() string { if x != nil { return x.Name } return "" } func (x *PathItem) GetPath() string { if x != nil { return x.Path } return "" } func (x *PathItem) GetSize() int64 { if x != nil { return x.Size } return 0 } func (x *PathItem) GetIsDir() bool { if x != nil { return x.IsDir } return false } func (x *PathItem) GetItems() []*PathItem { if x != nil { return x.Items } return nil } func (x *PathItem) GetItemsCount() int32 { if x != nil { return x.ItemsCount } return 0 } func (x *PathItem) GetMetadata() *Metadata { if x != nil { return x.Metadata } return nil } type ListIpfsPathRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` } func (x *ListIpfsPathRequest) Reset() { *x = ListIpfsPathRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListIpfsPathRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListIpfsPathRequest) ProtoMessage() {} func (x *ListIpfsPathRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 ListIpfsPathRequest.ProtoReflect.Descriptor instead. func (*ListIpfsPathRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{13} } func (x *ListIpfsPathRequest) GetPath() string { if x != nil { return x.Path } return "" } type ListIpfsPathResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Item *PathItem `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` } func (x *ListIpfsPathResponse) Reset() { *x = ListIpfsPathResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListIpfsPathResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListIpfsPathResponse) ProtoMessage() {} func (x *ListIpfsPathResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 ListIpfsPathResponse.ProtoReflect.Descriptor instead. func (*ListIpfsPathResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{14} } func (x *ListIpfsPathResponse) GetItem() *PathItem { if x != nil { return x.Item } return nil } type PushPathRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Payload: // *PushPathRequest_Header_ // *PushPathRequest_Chunk Payload isPushPathRequest_Payload `protobuf_oneof:"payload"` } func (x *PushPathRequest) Reset() { *x = PushPathRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PushPathRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*PushPathRequest) ProtoMessage() {} func (x *PushPathRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 PushPathRequest.ProtoReflect.Descriptor instead. func (*PushPathRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{15} } func (m *PushPathRequest) GetPayload() isPushPathRequest_Payload { if m != nil { return m.Payload } return nil } func (x *PushPathRequest) GetHeader() *PushPathRequest_Header { if x, ok := x.GetPayload().(*PushPathRequest_Header_); ok { return x.Header } return nil } func (x *PushPathRequest) GetChunk() []byte { if x, ok := x.GetPayload().(*PushPathRequest_Chunk); ok { return x.Chunk } return nil } type isPushPathRequest_Payload interface { isPushPathRequest_Payload() } type PushPathRequest_Header_ struct { Header *PushPathRequest_Header `protobuf:"bytes,1,opt,name=header,proto3,oneof"` } type PushPathRequest_Chunk struct { Chunk []byte `protobuf:"bytes,2,opt,name=chunk,proto3,oneof"` } func (*PushPathRequest_Header_) isPushPathRequest_Payload() {} func (*PushPathRequest_Chunk) isPushPathRequest_Payload() {} type PushPathResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Event *PushPathResponse_Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` } func (x *PushPathResponse) Reset() { *x = PushPathResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PushPathResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*PushPathResponse) ProtoMessage() {} func (x *PushPathResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 PushPathResponse.ProtoReflect.Descriptor instead. func (*PushPathResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{16} } func (x *PushPathResponse) GetEvent() *PushPathResponse_Event { if x != nil { return x.Event } return nil } type PushPathsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Payload: // *PushPathsRequest_Header_ // *PushPathsRequest_Chunk_ Payload isPushPathsRequest_Payload `protobuf_oneof:"payload"` } func (x *PushPathsRequest) Reset() { *x = PushPathsRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PushPathsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*PushPathsRequest) ProtoMessage() {} func (x *PushPathsRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 PushPathsRequest.ProtoReflect.Descriptor instead. func (*PushPathsRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{17} } func (m *PushPathsRequest) GetPayload() isPushPathsRequest_Payload { if m != nil { return m.Payload } return nil } func (x *PushPathsRequest) GetHeader() *PushPathsRequest_Header { if x, ok := x.GetPayload().(*PushPathsRequest_Header_); ok { return x.Header } return nil } func (x *PushPathsRequest) GetChunk() *PushPathsRequest_Chunk { if x, ok := x.GetPayload().(*PushPathsRequest_Chunk_); ok { return x.Chunk } return nil } type isPushPathsRequest_Payload interface { isPushPathsRequest_Payload() } type PushPathsRequest_Header_ struct { Header *PushPathsRequest_Header `protobuf:"bytes,1,opt,name=header,proto3,oneof"` } type PushPathsRequest_Chunk_ struct { Chunk *PushPathsRequest_Chunk `protobuf:"bytes,2,opt,name=chunk,proto3,oneof"` } func (*PushPathsRequest_Header_) isPushPathsRequest_Payload() {} func (*PushPathsRequest_Chunk_) isPushPathsRequest_Payload() {} type PushPathsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` Cid string `protobuf:"bytes,2,opt,name=cid,proto3" json:"cid,omitempty"` Size int64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"` Pinned int64 `protobuf:"varint,4,opt,name=pinned,proto3" json:"pinned,omitempty"` Root *Root `protobuf:"bytes,5,opt,name=root,proto3" json:"root,omitempty"` } func (x *PushPathsResponse) Reset() { *x = PushPathsResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PushPathsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*PushPathsResponse) ProtoMessage() {} func (x *PushPathsResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 PushPathsResponse.ProtoReflect.Descriptor instead. func (*PushPathsResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{18} } func (x *PushPathsResponse) GetPath() string { if x != nil { return x.Path } return "" } func (x *PushPathsResponse) GetCid() string { if x != nil { return x.Cid } return "" } func (x *PushPathsResponse) GetSize() int64 { if x != nil { return x.Size } return 0 } func (x *PushPathsResponse) GetPinned() int64 { if x != nil { return x.Pinned } return 0 } func (x *PushPathsResponse) GetRoot() *Root { if x != nil { return x.Root } return nil } type PullPathRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` } func (x *PullPathRequest) Reset() { *x = PullPathRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PullPathRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*PullPathRequest) ProtoMessage() {} func (x *PullPathRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 PullPathRequest.ProtoReflect.Descriptor instead. func (*PullPathRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{19} } func (x *PullPathRequest) GetKey() string { if x != nil { return x.Key } return "" } func (x *PullPathRequest) GetPath() string { if x != nil { return x.Path } return "" } type PullPathResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Chunk []byte `protobuf:"bytes,1,opt,name=chunk,proto3" json:"chunk,omitempty"` } func (x *PullPathResponse) Reset() { *x = PullPathResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PullPathResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*PullPathResponse) ProtoMessage() {} func (x *PullPathResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_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 PullPathResponse.ProtoReflect.Descriptor instead. func (*PullPathResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{20} } func (x *PullPathResponse) GetChunk() []byte { if x != nil { return x.Chunk } return nil } type PullIpfsPathRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` } func (x *PullIpfsPathRequest) Reset() { *x = PullIpfsPathRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PullIpfsPathRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*PullIpfsPathRequest) ProtoMessage() {} func (x *PullIpfsPathRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[21] 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 PullIpfsPathRequest.ProtoReflect.Descriptor instead. func (*PullIpfsPathRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{21} } func (x *PullIpfsPathRequest) GetPath() string { if x != nil { return x.Path } return "" } type PullIpfsPathResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Chunk []byte `protobuf:"bytes,1,opt,name=chunk,proto3" json:"chunk,omitempty"` } func (x *PullIpfsPathResponse) Reset() { *x = PullIpfsPathResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PullIpfsPathResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*PullIpfsPathResponse) ProtoMessage() {} func (x *PullIpfsPathResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[22] 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 PullIpfsPathResponse.ProtoReflect.Descriptor instead. func (*PullIpfsPathResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{22} } func (x *PullIpfsPathResponse) GetChunk() []byte { if x != nil { return x.Chunk } return nil } type SetPathRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` Cid string `protobuf:"bytes,3,opt,name=cid,proto3" json:"cid,omitempty"` } func (x *SetPathRequest) Reset() { *x = SetPathRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetPathRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetPathRequest) ProtoMessage() {} func (x *SetPathRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[23] 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 SetPathRequest.ProtoReflect.Descriptor instead. func (*SetPathRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{23} } func (x *SetPathRequest) GetKey() string { if x != nil { return x.Key } return "" } func (x *SetPathRequest) GetPath() string { if x != nil { return x.Path } return "" } func (x *SetPathRequest) GetCid() string { if x != nil { return x.Cid } return "" } type SetPathResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pinned int64 `protobuf:"varint,1,opt,name=pinned,proto3" json:"pinned,omitempty"` } func (x *SetPathResponse) Reset() { *x = SetPathResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetPathResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetPathResponse) ProtoMessage() {} func (x *SetPathResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[24] 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 SetPathResponse.ProtoReflect.Descriptor instead. func (*SetPathResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{24} } func (x *SetPathResponse) GetPinned() int64 { if x != nil { return x.Pinned } return 0 } type MovePathRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` FromPath string `protobuf:"bytes,2,opt,name=from_path,json=fromPath,proto3" json:"from_path,omitempty"` ToPath string `protobuf:"bytes,3,opt,name=to_path,json=toPath,proto3" json:"to_path,omitempty"` } func (x *MovePathRequest) Reset() { *x = MovePathRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MovePathRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*MovePathRequest) ProtoMessage() {} func (x *MovePathRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[25] 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 MovePathRequest.ProtoReflect.Descriptor instead. func (*MovePathRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{25} } func (x *MovePathRequest) GetKey() string { if x != nil { return x.Key } return "" } func (x *MovePathRequest) GetFromPath() string { if x != nil { return x.FromPath } return "" } func (x *MovePathRequest) GetToPath() string { if x != nil { return x.ToPath } return "" } type MovePathResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *MovePathResponse) Reset() { *x = MovePathResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MovePathResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*MovePathResponse) ProtoMessage() {} func (x *MovePathResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[26] 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 MovePathResponse.ProtoReflect.Descriptor instead. func (*MovePathResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{26} } type RemoveRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } func (x *RemoveRequest) Reset() { *x = RemoveRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RemoveRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RemoveRequest) ProtoMessage() {} func (x *RemoveRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[27] 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 RemoveRequest.ProtoReflect.Descriptor instead. func (*RemoveRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{27} } func (x *RemoveRequest) GetKey() string { if x != nil { return x.Key } return "" } type RemoveResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pinned int64 `protobuf:"varint,1,opt,name=pinned,proto3" json:"pinned,omitempty"` } func (x *RemoveResponse) Reset() { *x = RemoveResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RemoveResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RemoveResponse) ProtoMessage() {} func (x *RemoveResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[28] 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 RemoveResponse.ProtoReflect.Descriptor instead. func (*RemoveResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{28} } func (x *RemoveResponse) GetPinned() int64 { if x != nil { return x.Pinned } return 0 } type RemovePathRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` Root string `protobuf:"bytes,3,opt,name=root,proto3" json:"root,omitempty"` } func (x *RemovePathRequest) Reset() { *x = RemovePathRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RemovePathRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RemovePathRequest) ProtoMessage() {} func (x *RemovePathRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[29] 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 RemovePathRequest.ProtoReflect.Descriptor instead. func (*RemovePathRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{29} } func (x *RemovePathRequest) GetKey() string { if x != nil { return x.Key } return "" } func (x *RemovePathRequest) GetPath() string { if x != nil { return x.Path } return "" } func (x *RemovePathRequest) GetRoot() string { if x != nil { return x.Root } return "" } type RemovePathResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Root *Root `protobuf:"bytes,1,opt,name=root,proto3" json:"root,omitempty"` Pinned int64 `protobuf:"varint,2,opt,name=pinned,proto3" json:"pinned,omitempty"` } func (x *RemovePathResponse) Reset() { *x = RemovePathResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RemovePathResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RemovePathResponse) ProtoMessage() {} func (x *RemovePathResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[30] 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 RemovePathResponse.ProtoReflect.Descriptor instead. func (*RemovePathResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{30} } func (x *RemovePathResponse) GetRoot() *Root { if x != nil { return x.Root } return nil } func (x *RemovePathResponse) GetPinned() int64 { if x != nil { return x.Pinned } return 0 } type PushPathAccessRolesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` Roles map[string]PathAccessRole `protobuf:"bytes,3,rep,name=roles,proto3" json:"roles,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=api.bucketsd.pb.PathAccessRole"` } func (x *PushPathAccessRolesRequest) Reset() { *x = PushPathAccessRolesRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PushPathAccessRolesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*PushPathAccessRolesRequest) ProtoMessage() {} func (x *PushPathAccessRolesRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[31] 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 PushPathAccessRolesRequest.ProtoReflect.Descriptor instead. func (*PushPathAccessRolesRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{31} } func (x *PushPathAccessRolesRequest) GetKey() string { if x != nil { return x.Key } return "" } func (x *PushPathAccessRolesRequest) GetPath() string { if x != nil { return x.Path } return "" } func (x *PushPathAccessRolesRequest) GetRoles() map[string]PathAccessRole { if x != nil { return x.Roles } return nil } type PushPathAccessRolesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pinned int64 `protobuf:"varint,1,opt,name=pinned,proto3" json:"pinned,omitempty"` } func (x *PushPathAccessRolesResponse) Reset() { *x = PushPathAccessRolesResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PushPathAccessRolesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*PushPathAccessRolesResponse) ProtoMessage() {} func (x *PushPathAccessRolesResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[32] 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 PushPathAccessRolesResponse.ProtoReflect.Descriptor instead. func (*PushPathAccessRolesResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{32} } func (x *PushPathAccessRolesResponse) GetPinned() int64 { if x != nil { return x.Pinned } return 0 } type PullPathAccessRolesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` } func (x *PullPathAccessRolesRequest) Reset() { *x = PullPathAccessRolesRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PullPathAccessRolesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*PullPathAccessRolesRequest) ProtoMessage() {} func (x *PullPathAccessRolesRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[33] 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 PullPathAccessRolesRequest.ProtoReflect.Descriptor instead. func (*PullPathAccessRolesRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{33} } func (x *PullPathAccessRolesRequest) GetKey() string { if x != nil { return x.Key } return "" } func (x *PullPathAccessRolesRequest) GetPath() string { if x != nil { return x.Path } return "" } type PullPathAccessRolesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Roles map[string]PathAccessRole `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=api.bucketsd.pb.PathAccessRole"` } func (x *PullPathAccessRolesResponse) Reset() { *x = PullPathAccessRolesResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PullPathAccessRolesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*PullPathAccessRolesResponse) ProtoMessage() {} func (x *PullPathAccessRolesResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[34] 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 PullPathAccessRolesResponse.ProtoReflect.Descriptor instead. func (*PullPathAccessRolesResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{34} } func (x *PullPathAccessRolesResponse) GetRoles() map[string]PathAccessRole { if x != nil { return x.Roles } return nil } type ArchiveConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RepFactor int32 `protobuf:"varint,1,opt,name=rep_factor,json=repFactor,proto3" json:"rep_factor,omitempty"` DealMinDuration int64 `protobuf:"varint,2,opt,name=deal_min_duration,json=dealMinDuration,proto3" json:"deal_min_duration,omitempty"` ExcludedMiners []string `protobuf:"bytes,3,rep,name=excluded_miners,json=excludedMiners,proto3" json:"excluded_miners,omitempty"` TrustedMiners []string `protobuf:"bytes,4,rep,name=trusted_miners,json=trustedMiners,proto3" json:"trusted_miners,omitempty"` CountryCodes []string `protobuf:"bytes,5,rep,name=country_codes,json=countryCodes,proto3" json:"country_codes,omitempty"` Renew *ArchiveRenew `protobuf:"bytes,6,opt,name=renew,proto3" json:"renew,omitempty"` MaxPrice uint64 `protobuf:"varint,7,opt,name=max_price,json=maxPrice,proto3" json:"max_price,omitempty"` FastRetrieval bool `protobuf:"varint,8,opt,name=fast_retrieval,json=fastRetrieval,proto3" json:"fast_retrieval,omitempty"` DealStartOffset int64 `protobuf:"varint,9,opt,name=deal_start_offset,json=dealStartOffset,proto3" json:"deal_start_offset,omitempty"` VerifiedDeal bool `protobuf:"varint,10,opt,name=verified_deal,json=verifiedDeal,proto3" json:"verified_deal,omitempty"` } func (x *ArchiveConfig) Reset() { *x = ArchiveConfig{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchiveConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchiveConfig) ProtoMessage() {} func (x *ArchiveConfig) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[35] 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 ArchiveConfig.ProtoReflect.Descriptor instead. func (*ArchiveConfig) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{35} } func (x *ArchiveConfig) GetRepFactor() int32 { if x != nil { return x.RepFactor } return 0 } func (x *ArchiveConfig) GetDealMinDuration() int64 { if x != nil { return x.DealMinDuration } return 0 } func (x *ArchiveConfig) GetExcludedMiners() []string { if x != nil { return x.ExcludedMiners } return nil } func (x *ArchiveConfig) GetTrustedMiners() []string { if x != nil { return x.TrustedMiners } return nil } func (x *ArchiveConfig) GetCountryCodes() []string { if x != nil { return x.CountryCodes } return nil } func (x *ArchiveConfig) GetRenew() *ArchiveRenew { if x != nil { return x.Renew } return nil } func (x *ArchiveConfig) GetMaxPrice() uint64 { if x != nil { return x.MaxPrice } return 0 } func (x *ArchiveConfig) GetFastRetrieval() bool { if x != nil { return x.FastRetrieval } return false } func (x *ArchiveConfig) GetDealStartOffset() int64 { if x != nil { return x.DealStartOffset } return 0 } func (x *ArchiveConfig) GetVerifiedDeal() bool { if x != nil { return x.VerifiedDeal } return false } type Archives struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Current *Archive `protobuf:"bytes,1,opt,name=current,proto3" json:"current,omitempty"` History []*Archive `protobuf:"bytes,2,rep,name=history,proto3" json:"history,omitempty"` } func (x *Archives) Reset() { *x = Archives{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Archives) String() string { return protoimpl.X.MessageStringOf(x) } func (*Archives) ProtoMessage() {} func (x *Archives) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[36] 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 Archives.ProtoReflect.Descriptor instead. func (*Archives) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{36} } func (x *Archives) GetCurrent() *Archive { if x != nil { return x.Current } return nil } func (x *Archives) GetHistory() []*Archive { if x != nil { return x.History } return nil } type Archive struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Cid string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"` JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` ArchiveStatus ArchiveStatus `protobuf:"varint,3,opt,name=archive_status,json=archiveStatus,proto3,enum=api.bucketsd.pb.ArchiveStatus" json:"archive_status,omitempty"` Aborted bool `protobuf:"varint,4,opt,name=aborted,proto3" json:"aborted,omitempty"` AbortedMsg string `protobuf:"bytes,5,opt,name=aborted_msg,json=abortedMsg,proto3" json:"aborted_msg,omitempty"` FailureMsg string `protobuf:"bytes,6,opt,name=failure_msg,json=failureMsg,proto3" json:"failure_msg,omitempty"` CreatedAt int64 `protobuf:"varint,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` DealInfo []*DealInfo `protobuf:"bytes,8,rep,name=deal_info,json=dealInfo,proto3" json:"deal_info,omitempty"` } func (x *Archive) Reset() { *x = Archive{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Archive) String() string { return protoimpl.X.MessageStringOf(x) } func (*Archive) ProtoMessage() {} func (x *Archive) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[37] 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 Archive.ProtoReflect.Descriptor instead. func (*Archive) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{37} } func (x *Archive) GetCid() string { if x != nil { return x.Cid } return "" } func (x *Archive) GetJobId() string { if x != nil { return x.JobId } return "" } func (x *Archive) GetArchiveStatus() ArchiveStatus { if x != nil { return x.ArchiveStatus } return ArchiveStatus_ARCHIVE_STATUS_UNSPECIFIED } func (x *Archive) GetAborted() bool { if x != nil { return x.Aborted } return false } func (x *Archive) GetAbortedMsg() string { if x != nil { return x.AbortedMsg } return "" } func (x *Archive) GetFailureMsg() string { if x != nil { return x.FailureMsg } return "" } func (x *Archive) GetCreatedAt() int64 { if x != nil { return x.CreatedAt } return 0 } func (x *Archive) GetDealInfo() []*DealInfo { if x != nil { return x.DealInfo } return nil } type DealInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ProposalCid string `protobuf:"bytes,1,opt,name=proposal_cid,json=proposalCid,proto3" json:"proposal_cid,omitempty"` StateId uint64 `protobuf:"varint,2,opt,name=state_id,json=stateId,proto3" json:"state_id,omitempty"` StateName string `protobuf:"bytes,3,opt,name=state_name,json=stateName,proto3" json:"state_name,omitempty"` Miner string `protobuf:"bytes,4,opt,name=miner,proto3" json:"miner,omitempty"` PieceCid string `protobuf:"bytes,5,opt,name=piece_cid,json=pieceCid,proto3" json:"piece_cid,omitempty"` Size uint64 `protobuf:"varint,6,opt,name=size,proto3" json:"size,omitempty"` PricePerEpoch uint64 `protobuf:"varint,7,opt,name=price_per_epoch,json=pricePerEpoch,proto3" json:"price_per_epoch,omitempty"` StartEpoch uint64 `protobuf:"varint,8,opt,name=start_epoch,json=startEpoch,proto3" json:"start_epoch,omitempty"` Duration uint64 `protobuf:"varint,9,opt,name=duration,proto3" json:"duration,omitempty"` DealId uint64 `protobuf:"varint,10,opt,name=deal_id,json=dealId,proto3" json:"deal_id,omitempty"` ActivationEpoch int64 `protobuf:"varint,11,opt,name=activation_epoch,json=activationEpoch,proto3" json:"activation_epoch,omitempty"` Message string `protobuf:"bytes,12,opt,name=message,proto3" json:"message,omitempty"` } func (x *DealInfo) Reset() { *x = DealInfo{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DealInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*DealInfo) ProtoMessage() {} func (x *DealInfo) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[38] 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 DealInfo.ProtoReflect.Descriptor instead. func (*DealInfo) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{38} } func (x *DealInfo) GetProposalCid() string { if x != nil { return x.ProposalCid } return "" } func (x *DealInfo) GetStateId() uint64 { if x != nil { return x.StateId } return 0 } func (x *DealInfo) GetStateName() string { if x != nil { return x.StateName } return "" } func (x *DealInfo) GetMiner() string { if x != nil { return x.Miner } return "" } func (x *DealInfo) GetPieceCid() string { if x != nil { return x.PieceCid } return "" } func (x *DealInfo) GetSize() uint64 { if x != nil { return x.Size } return 0 } func (x *DealInfo) GetPricePerEpoch() uint64 { if x != nil { return x.PricePerEpoch } return 0 } func (x *DealInfo) GetStartEpoch() uint64 { if x != nil { return x.StartEpoch } return 0 } func (x *DealInfo) GetDuration() uint64 { if x != nil { return x.Duration } return 0 } func (x *DealInfo) GetDealId() uint64 { if x != nil { return x.DealId } return 0 } func (x *DealInfo) GetActivationEpoch() int64 { if x != nil { return x.ActivationEpoch } return 0 } func (x *DealInfo) GetMessage() string { if x != nil { return x.Message } return "" } type ArchiveRenew struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` Threshold int32 `protobuf:"varint,2,opt,name=threshold,proto3" json:"threshold,omitempty"` } func (x *ArchiveRenew) Reset() { *x = ArchiveRenew{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchiveRenew) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchiveRenew) ProtoMessage() {} func (x *ArchiveRenew) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[39] 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 ArchiveRenew.ProtoReflect.Descriptor instead. func (*ArchiveRenew) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{39} } func (x *ArchiveRenew) GetEnabled() bool { if x != nil { return x.Enabled } return false } func (x *ArchiveRenew) GetThreshold() int32 { if x != nil { return x.Threshold } return 0 } type DefaultArchiveConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } func (x *DefaultArchiveConfigRequest) Reset() { *x = DefaultArchiveConfigRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DefaultArchiveConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DefaultArchiveConfigRequest) ProtoMessage() {} func (x *DefaultArchiveConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[40] 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 DefaultArchiveConfigRequest.ProtoReflect.Descriptor instead. func (*DefaultArchiveConfigRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{40} } func (x *DefaultArchiveConfigRequest) GetKey() string { if x != nil { return x.Key } return "" } type DefaultArchiveConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ArchiveConfig *ArchiveConfig `protobuf:"bytes,1,opt,name=archive_config,json=archiveConfig,proto3" json:"archive_config,omitempty"` } func (x *DefaultArchiveConfigResponse) Reset() { *x = DefaultArchiveConfigResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DefaultArchiveConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DefaultArchiveConfigResponse) ProtoMessage() {} func (x *DefaultArchiveConfigResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[41] 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 DefaultArchiveConfigResponse.ProtoReflect.Descriptor instead. func (*DefaultArchiveConfigResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{41} } func (x *DefaultArchiveConfigResponse) GetArchiveConfig() *ArchiveConfig { if x != nil { return x.ArchiveConfig } return nil } type SetDefaultArchiveConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` ArchiveConfig *ArchiveConfig `protobuf:"bytes,2,opt,name=archive_config,json=archiveConfig,proto3" json:"archive_config,omitempty"` } func (x *SetDefaultArchiveConfigRequest) Reset() { *x = SetDefaultArchiveConfigRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetDefaultArchiveConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetDefaultArchiveConfigRequest) ProtoMessage() {} func (x *SetDefaultArchiveConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[42] 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 SetDefaultArchiveConfigRequest.ProtoReflect.Descriptor instead. func (*SetDefaultArchiveConfigRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{42} } func (x *SetDefaultArchiveConfigRequest) GetKey() string { if x != nil { return x.Key } return "" } func (x *SetDefaultArchiveConfigRequest) GetArchiveConfig() *ArchiveConfig { if x != nil { return x.ArchiveConfig } return nil } type SetDefaultArchiveConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SetDefaultArchiveConfigResponse) Reset() { *x = SetDefaultArchiveConfigResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetDefaultArchiveConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetDefaultArchiveConfigResponse) ProtoMessage() {} func (x *SetDefaultArchiveConfigResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[43] 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 SetDefaultArchiveConfigResponse.ProtoReflect.Descriptor instead. func (*SetDefaultArchiveConfigResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{43} } type ArchiveRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` ArchiveConfig *ArchiveConfig `protobuf:"bytes,2,opt,name=archive_config,json=archiveConfig,proto3" json:"archive_config,omitempty"` SkipAutomaticVerifiedDeal bool `protobuf:"varint,3,opt,name=skip_automatic_verified_deal,json=skipAutomaticVerifiedDeal,proto3" json:"skip_automatic_verified_deal,omitempty"` } func (x *ArchiveRequest) Reset() { *x = ArchiveRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchiveRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchiveRequest) ProtoMessage() {} func (x *ArchiveRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[44] 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 ArchiveRequest.ProtoReflect.Descriptor instead. func (*ArchiveRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{44} } func (x *ArchiveRequest) GetKey() string { if x != nil { return x.Key } return "" } func (x *ArchiveRequest) GetArchiveConfig() *ArchiveConfig { if x != nil { return x.ArchiveConfig } return nil } func (x *ArchiveRequest) GetSkipAutomaticVerifiedDeal() bool { if x != nil { return x.SkipAutomaticVerifiedDeal } return false } type ArchiveResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ArchiveResponse) Reset() { *x = ArchiveResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchiveResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchiveResponse) ProtoMessage() {} func (x *ArchiveResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[45] 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 ArchiveResponse.ProtoReflect.Descriptor instead. func (*ArchiveResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{45} } type ArchivesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } func (x *ArchivesRequest) Reset() { *x = ArchivesRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchivesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchivesRequest) ProtoMessage() {} func (x *ArchivesRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[46] 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 ArchivesRequest.ProtoReflect.Descriptor instead. func (*ArchivesRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{46} } func (x *ArchivesRequest) GetKey() string { if x != nil { return x.Key } return "" } // todo: For v3, change this to { Archives archives = 1; } type ArchivesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Current *Archive `protobuf:"bytes,1,opt,name=current,proto3" json:"current,omitempty"` History []*Archive `protobuf:"bytes,2,rep,name=history,proto3" json:"history,omitempty"` } func (x *ArchivesResponse) Reset() { *x = ArchivesResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchivesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchivesResponse) ProtoMessage() {} func (x *ArchivesResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[47] 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 ArchivesResponse.ProtoReflect.Descriptor instead. func (*ArchivesResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{47} } func (x *ArchivesResponse) GetCurrent() *Archive { if x != nil { return x.Current } return nil } func (x *ArchivesResponse) GetHistory() []*Archive { if x != nil { return x.History } return nil } type ArchiveWatchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } func (x *ArchiveWatchRequest) Reset() { *x = ArchiveWatchRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchiveWatchRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchiveWatchRequest) ProtoMessage() {} func (x *ArchiveWatchRequest) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[48] 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 ArchiveWatchRequest.ProtoReflect.Descriptor instead. func (*ArchiveWatchRequest) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{48} } func (x *ArchiveWatchRequest) GetKey() string { if x != nil { return x.Key } return "" } type ArchiveWatchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` } func (x *ArchiveWatchResponse) Reset() { *x = ArchiveWatchResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchiveWatchResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchiveWatchResponse) ProtoMessage() {} func (x *ArchiveWatchResponse) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[49] 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 ArchiveWatchResponse.ProtoReflect.Descriptor instead. func (*ArchiveWatchResponse) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{49} } func (x *ArchiveWatchResponse) GetMsg() string { if x != nil { return x.Msg } return "" } type PushPathRequest_Header struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` Root string `protobuf:"bytes,3,opt,name=root,proto3" json:"root,omitempty"` } func (x *PushPathRequest_Header) Reset() { *x = PushPathRequest_Header{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PushPathRequest_Header) String() string { return protoimpl.X.MessageStringOf(x) } func (*PushPathRequest_Header) ProtoMessage() {} func (x *PushPathRequest_Header) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[52] 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 PushPathRequest_Header.ProtoReflect.Descriptor instead. func (*PushPathRequest_Header) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{15, 0} } func (x *PushPathRequest_Header) GetKey() string { if x != nil { return x.Key } return "" } func (x *PushPathRequest_Header) GetPath() string { if x != nil { return x.Path } return "" } func (x *PushPathRequest_Header) GetRoot() string { if x != nil { return x.Root } return "" } type PushPathResponse_Event struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` Bytes int64 `protobuf:"varint,3,opt,name=bytes,proto3" json:"bytes,omitempty"` Size string `protobuf:"bytes,4,opt,name=size,proto3" json:"size,omitempty"` Root *Root `protobuf:"bytes,5,opt,name=root,proto3" json:"root,omitempty"` Pinned int64 `protobuf:"varint,6,opt,name=pinned,proto3" json:"pinned,omitempty"` } func (x *PushPathResponse_Event) Reset() { *x = PushPathResponse_Event{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PushPathResponse_Event) String() string { return protoimpl.X.MessageStringOf(x) } func (*PushPathResponse_Event) ProtoMessage() {} func (x *PushPathResponse_Event) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[53] 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 PushPathResponse_Event.ProtoReflect.Descriptor instead. func (*PushPathResponse_Event) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{16, 0} } func (x *PushPathResponse_Event) GetName() string { if x != nil { return x.Name } return "" } func (x *PushPathResponse_Event) GetPath() string { if x != nil { return x.Path } return "" } func (x *PushPathResponse_Event) GetBytes() int64 { if x != nil { return x.Bytes } return 0 } func (x *PushPathResponse_Event) GetSize() string { if x != nil { return x.Size } return "" } func (x *PushPathResponse_Event) GetRoot() *Root { if x != nil { return x.Root } return nil } func (x *PushPathResponse_Event) GetPinned() int64 { if x != nil { return x.Pinned } return 0 } type PushPathsRequest_Header struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Root string `protobuf:"bytes,2,opt,name=root,proto3" json:"root,omitempty"` Paths []string `protobuf:"bytes,3,rep,name=paths,proto3" json:"paths,omitempty"` } func (x *PushPathsRequest_Header) Reset() { *x = PushPathsRequest_Header{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PushPathsRequest_Header) String() string { return protoimpl.X.MessageStringOf(x) } func (*PushPathsRequest_Header) ProtoMessage() {} func (x *PushPathsRequest_Header) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[54] 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 PushPathsRequest_Header.ProtoReflect.Descriptor instead. func (*PushPathsRequest_Header) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{17, 0} } func (x *PushPathsRequest_Header) GetKey() string { if x != nil { return x.Key } return "" } func (x *PushPathsRequest_Header) GetRoot() string { if x != nil { return x.Root } return "" } func (x *PushPathsRequest_Header) GetPaths() []string { if x != nil { return x.Paths } return nil } type PushPathsRequest_Chunk struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` } func (x *PushPathsRequest_Chunk) Reset() { *x = PushPathsRequest_Chunk{} if protoimpl.UnsafeEnabled { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PushPathsRequest_Chunk) String() string { return protoimpl.X.MessageStringOf(x) } func (*PushPathsRequest_Chunk) ProtoMessage() {} func (x *PushPathsRequest_Chunk) ProtoReflect() protoreflect.Message { mi := &file_api_bucketsd_pb_bucketsd_proto_msgTypes[55] 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 PushPathsRequest_Chunk.ProtoReflect.Descriptor instead. func (*PushPathsRequest_Chunk) Descriptor() ([]byte, []int) { return file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP(), []int{17, 1} } func (x *PushPathsRequest_Chunk) GetPath() string { if x != nil { return x.Path } return "" } func (x *PushPathsRequest_Chunk) GetData() []byte { if x != nil { return x.Data } return nil } var File_api_bucketsd_pb_bucketsd_proto protoreflect.FileDescriptor var file_api_bucketsd_pb_bucketsd_proto_rawDesc = []byte{ 0x0a, 0x1e, 0x61, 0x70, 0x69, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2f, 0x70, 0x62, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x22, 0xd2, 0x01, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0x59, 0x0a, 0x0a, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf9, 0x03, 0x0a, 0x04, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x6e, 0x6b, 0x4b, 0x65, 0x79, 0x12, 0x4c, 0x0a, 0x0d, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x6f, 0x6f, 0x74, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x35, 0x0a, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x52, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x1a, 0x5a, 0x0a, 0x11, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x0d, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3b, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x05, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x22, 0x7e, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x63, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x43, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x6e, 0x66, 0x72, 0x65, 0x65, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x75, 0x6e, 0x66, 0x72, 0x65, 0x65, 0x7a, 0x65, 0x22, 0xdb, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x34, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x65, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x73, 0x65, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x65, 0x65, 0x64, 0x5f, 0x63, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x65, 0x64, 0x43, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x49, 0x64, 0x22, 0x1f, 0x0a, 0x0b, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x39, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x34, 0x0a, 0x0c, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x47, 0x0a, 0x0d, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x77, 0x77, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x77, 0x77, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x70, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x70, 0x6e, 0x73, 0x22, 0x37, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x6c, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x29, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0xf8, 0x01, 0x0a, 0x08, 0x50, 0x61, 0x74, 0x68, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x69, 0x73, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x44, 0x69, 0x72, 0x12, 0x2f, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x29, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x70, 0x66, 0x73, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x45, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x70, 0x66, 0x73, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, 0xbb, 0x01, 0x0a, 0x0f, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x1a, 0x42, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xf0, 0x01, 0x0a, 0x10, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x1a, 0x9c, 0x01, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x22, 0x99, 0x02, 0x0a, 0x10, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x48, 0x00, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x1a, 0x44, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x1a, 0x2f, 0x0a, 0x05, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x90, 0x01, 0x0a, 0x11, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x29, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x37, 0x0a, 0x0f, 0x50, 0x75, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x28, 0x0a, 0x10, 0x50, 0x75, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x22, 0x29, 0x0a, 0x13, 0x50, 0x75, 0x6c, 0x6c, 0x49, 0x70, 0x66, 0x73, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x2c, 0x0a, 0x14, 0x50, 0x75, 0x6c, 0x6c, 0x49, 0x70, 0x66, 0x73, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x22, 0x48, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0x29, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x22, 0x59, 0x0a, 0x0f, 0x4d, 0x6f, 0x76, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6f, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, 0x50, 0x61, 0x74, 0x68, 0x22, 0x12, 0x0a, 0x10, 0x4d, 0x6f, 0x76, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x28, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x22, 0x4d, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x57, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x22, 0xeb, 0x01, 0x0a, 0x1a, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x4c, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x1a, 0x59, 0x0a, 0x0a, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x35, 0x0a, 0x1b, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x22, 0x42, 0x0a, 0x1a, 0x50, 0x75, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0xc7, 0x01, 0x0a, 0x1b, 0x50, 0x75, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x1a, 0x59, 0x0a, 0x0a, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x99, 0x03, 0x0a, 0x0d, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x70, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x64, 0x65, 0x61, 0x6c, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x64, 0x65, 0x61, 0x6c, 0x4d, 0x69, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x05, 0x72, 0x65, 0x6e, 0x65, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x52, 0x05, 0x72, 0x65, 0x6e, 0x65, 0x77, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x66, 0x61, 0x73, 0x74, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x64, 0x65, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x64, 0x65, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x61, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x44, 0x65, 0x61, 0x6c, 0x22, 0x72, 0x0a, 0x08, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x22, 0xac, 0x02, 0x0a, 0x07, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x0e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x36, 0x0a, 0x09, 0x64, 0x65, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x64, 0x65, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xf1, 0x02, 0x0a, 0x08, 0x44, 0x65, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x63, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x43, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x73, 0x74, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x63, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x69, 0x65, 0x63, 0x65, 0x43, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x65, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x64, 0x65, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x46, 0x0a, 0x0c, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x2f, 0x0a, 0x1b, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x65, 0x0a, 0x1c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x79, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x45, 0x0a, 0x0e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x21, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x0e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x45, 0x0a, 0x0e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3f, 0x0a, 0x1c, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x73, 0x6b, 0x69, 0x70, 0x41, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x44, 0x65, 0x61, 0x6c, 0x22, 0x11, 0x0a, 0x0f, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x0a, 0x0f, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x7a, 0x0a, 0x10, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x27, 0x0a, 0x13, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x28, 0x0a, 0x14, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x2a, 0x88, 0x01, 0x0a, 0x0e, 0x50, 0x61, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x10, 0x03, 0x2a, 0xbc, 0x01, 0x0a, 0x0d, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x05, 0x32, 0xf6, 0x0e, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x45, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x04, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x05, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x70, 0x66, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x70, 0x66, 0x73, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x70, 0x66, 0x73, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x08, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x58, 0x0a, 0x09, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x53, 0x0a, 0x08, 0x50, 0x75, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x5f, 0x0a, 0x0c, 0x50, 0x75, 0x6c, 0x6c, 0x49, 0x70, 0x66, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x49, 0x70, 0x66, 0x73, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x49, 0x70, 0x66, 0x73, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x4e, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x08, 0x4d, 0x6f, 0x76, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x13, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x13, 0x50, 0x75, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x14, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x07, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x08, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x0c, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x69, 0x6f, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x64, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_api_bucketsd_pb_bucketsd_proto_rawDescOnce sync.Once file_api_bucketsd_pb_bucketsd_proto_rawDescData = file_api_bucketsd_pb_bucketsd_proto_rawDesc ) func file_api_bucketsd_pb_bucketsd_proto_rawDescGZIP() []byte { file_api_bucketsd_pb_bucketsd_proto_rawDescOnce.Do(func() { file_api_bucketsd_pb_bucketsd_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_bucketsd_pb_bucketsd_proto_rawDescData) }) return file_api_bucketsd_pb_bucketsd_proto_rawDescData } var file_api_bucketsd_pb_bucketsd_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_api_bucketsd_pb_bucketsd_proto_msgTypes = make([]protoimpl.MessageInfo, 58) var file_api_bucketsd_pb_bucketsd_proto_goTypes = []interface{}{ (PathAccessRole)(0), // 0: api.bucketsd.pb.PathAccessRole (ArchiveStatus)(0), // 1: api.bucketsd.pb.ArchiveStatus (*Metadata)(nil), // 2: api.bucketsd.pb.Metadata (*Root)(nil), // 3: api.bucketsd.pb.Root (*ListRequest)(nil), // 4: api.bucketsd.pb.ListRequest (*ListResponse)(nil), // 5: api.bucketsd.pb.ListResponse (*CreateRequest)(nil), // 6: api.bucketsd.pb.CreateRequest (*CreateResponse)(nil), // 7: api.bucketsd.pb.CreateResponse (*RootRequest)(nil), // 8: api.bucketsd.pb.RootRequest (*RootResponse)(nil), // 9: api.bucketsd.pb.RootResponse (*LinksRequest)(nil), // 10: api.bucketsd.pb.LinksRequest (*LinksResponse)(nil), // 11: api.bucketsd.pb.LinksResponse (*ListPathRequest)(nil), // 12: api.bucketsd.pb.ListPathRequest (*ListPathResponse)(nil), // 13: api.bucketsd.pb.ListPathResponse (*PathItem)(nil), // 14: api.bucketsd.pb.PathItem (*ListIpfsPathRequest)(nil), // 15: api.bucketsd.pb.ListIpfsPathRequest (*ListIpfsPathResponse)(nil), // 16: api.bucketsd.pb.ListIpfsPathResponse (*PushPathRequest)(nil), // 17: api.bucketsd.pb.PushPathRequest (*PushPathResponse)(nil), // 18: api.bucketsd.pb.PushPathResponse (*PushPathsRequest)(nil), // 19: api.bucketsd.pb.PushPathsRequest (*PushPathsResponse)(nil), // 20: api.bucketsd.pb.PushPathsResponse (*PullPathRequest)(nil), // 21: api.bucketsd.pb.PullPathRequest (*PullPathResponse)(nil), // 22: api.bucketsd.pb.PullPathResponse (*PullIpfsPathRequest)(nil), // 23: api.bucketsd.pb.PullIpfsPathRequest (*PullIpfsPathResponse)(nil), // 24: api.bucketsd.pb.PullIpfsPathResponse (*SetPathRequest)(nil), // 25: api.bucketsd.pb.SetPathRequest (*SetPathResponse)(nil), // 26: api.bucketsd.pb.SetPathResponse (*MovePathRequest)(nil), // 27: api.bucketsd.pb.MovePathRequest (*MovePathResponse)(nil), // 28: api.bucketsd.pb.MovePathResponse (*RemoveRequest)(nil), // 29: api.bucketsd.pb.RemoveRequest (*RemoveResponse)(nil), // 30: api.bucketsd.pb.RemoveResponse (*RemovePathRequest)(nil), // 31: api.bucketsd.pb.RemovePathRequest (*RemovePathResponse)(nil), // 32: api.bucketsd.pb.RemovePathResponse (*PushPathAccessRolesRequest)(nil), // 33: api.bucketsd.pb.PushPathAccessRolesRequest (*PushPathAccessRolesResponse)(nil), // 34: api.bucketsd.pb.PushPathAccessRolesResponse (*PullPathAccessRolesRequest)(nil), // 35: api.bucketsd.pb.PullPathAccessRolesRequest (*PullPathAccessRolesResponse)(nil), // 36: api.bucketsd.pb.PullPathAccessRolesResponse (*ArchiveConfig)(nil), // 37: api.bucketsd.pb.ArchiveConfig (*Archives)(nil), // 38: api.bucketsd.pb.Archives (*Archive)(nil), // 39: api.bucketsd.pb.Archive (*DealInfo)(nil), // 40: api.bucketsd.pb.DealInfo (*ArchiveRenew)(nil), // 41: api.bucketsd.pb.ArchiveRenew (*DefaultArchiveConfigRequest)(nil), // 42: api.bucketsd.pb.DefaultArchiveConfigRequest (*DefaultArchiveConfigResponse)(nil), // 43: api.bucketsd.pb.DefaultArchiveConfigResponse (*SetDefaultArchiveConfigRequest)(nil), // 44: api.bucketsd.pb.SetDefaultArchiveConfigRequest (*SetDefaultArchiveConfigResponse)(nil), // 45: api.bucketsd.pb.SetDefaultArchiveConfigResponse (*ArchiveRequest)(nil), // 46: api.bucketsd.pb.ArchiveRequest (*ArchiveResponse)(nil), // 47: api.bucketsd.pb.ArchiveResponse (*ArchivesRequest)(nil), // 48: api.bucketsd.pb.ArchivesRequest (*ArchivesResponse)(nil), // 49: api.bucketsd.pb.ArchivesResponse (*ArchiveWatchRequest)(nil), // 50: api.bucketsd.pb.ArchiveWatchRequest (*ArchiveWatchResponse)(nil), // 51: api.bucketsd.pb.ArchiveWatchResponse nil, // 52: api.bucketsd.pb.Metadata.RolesEntry nil, // 53: api.bucketsd.pb.Root.PathMetadataEntry (*PushPathRequest_Header)(nil), // 54: api.bucketsd.pb.PushPathRequest.Header (*PushPathResponse_Event)(nil), // 55: api.bucketsd.pb.PushPathResponse.Event (*PushPathsRequest_Header)(nil), // 56: api.bucketsd.pb.PushPathsRequest.Header (*PushPathsRequest_Chunk)(nil), // 57: api.bucketsd.pb.PushPathsRequest.Chunk nil, // 58: api.bucketsd.pb.PushPathAccessRolesRequest.RolesEntry nil, // 59: api.bucketsd.pb.PullPathAccessRolesResponse.RolesEntry } var file_api_bucketsd_pb_bucketsd_proto_depIdxs = []int32{ 52, // 0: api.bucketsd.pb.Metadata.roles:type_name -> api.bucketsd.pb.Metadata.RolesEntry 2, // 1: api.bucketsd.pb.Root.metadata:type_name -> api.bucketsd.pb.Metadata 53, // 2: api.bucketsd.pb.Root.path_metadata:type_name -> api.bucketsd.pb.Root.PathMetadataEntry 38, // 3: api.bucketsd.pb.Root.archives:type_name -> api.bucketsd.pb.Archives 3, // 4: api.bucketsd.pb.ListResponse.roots:type_name -> api.bucketsd.pb.Root 3, // 5: api.bucketsd.pb.CreateResponse.root:type_name -> api.bucketsd.pb.Root 11, // 6: api.bucketsd.pb.CreateResponse.links:type_name -> api.bucketsd.pb.LinksResponse 3, // 7: api.bucketsd.pb.RootResponse.root:type_name -> api.bucketsd.pb.Root 14, // 8: api.bucketsd.pb.ListPathResponse.item:type_name -> api.bucketsd.pb.PathItem 3, // 9: api.bucketsd.pb.ListPathResponse.root:type_name -> api.bucketsd.pb.Root 14, // 10: api.bucketsd.pb.PathItem.items:type_name -> api.bucketsd.pb.PathItem 2, // 11: api.bucketsd.pb.PathItem.metadata:type_name -> api.bucketsd.pb.Metadata 14, // 12: api.bucketsd.pb.ListIpfsPathResponse.item:type_name -> api.bucketsd.pb.PathItem 54, // 13: api.bucketsd.pb.PushPathRequest.header:type_name -> api.bucketsd.pb.PushPathRequest.Header 55, // 14: api.bucketsd.pb.PushPathResponse.event:type_name -> api.bucketsd.pb.PushPathResponse.Event 56, // 15: api.bucketsd.pb.PushPathsRequest.header:type_name -> api.bucketsd.pb.PushPathsRequest.Header 57, // 16: api.bucketsd.pb.PushPathsRequest.chunk:type_name -> api.bucketsd.pb.PushPathsRequest.Chunk 3, // 17: api.bucketsd.pb.PushPathsResponse.root:type_name -> api.bucketsd.pb.Root 3, // 18: api.bucketsd.pb.RemovePathResponse.root:type_name -> api.bucketsd.pb.Root 58, // 19: api.bucketsd.pb.PushPathAccessRolesRequest.roles:type_name -> api.bucketsd.pb.PushPathAccessRolesRequest.RolesEntry 59, // 20: api.bucketsd.pb.PullPathAccessRolesResponse.roles:type_name -> api.bucketsd.pb.PullPathAccessRolesResponse.RolesEntry 41, // 21: api.bucketsd.pb.ArchiveConfig.renew:type_name -> api.bucketsd.pb.ArchiveRenew 39, // 22: api.bucketsd.pb.Archives.current:type_name -> api.bucketsd.pb.Archive 39, // 23: api.bucketsd.pb.Archives.history:type_name -> api.bucketsd.pb.Archive 1, // 24: api.bucketsd.pb.Archive.archive_status:type_name -> api.bucketsd.pb.ArchiveStatus 40, // 25: api.bucketsd.pb.Archive.deal_info:type_name -> api.bucketsd.pb.DealInfo 37, // 26: api.bucketsd.pb.DefaultArchiveConfigResponse.archive_config:type_name -> api.bucketsd.pb.ArchiveConfig 37, // 27: api.bucketsd.pb.SetDefaultArchiveConfigRequest.archive_config:type_name -> api.bucketsd.pb.ArchiveConfig 37, // 28: api.bucketsd.pb.ArchiveRequest.archive_config:type_name -> api.bucketsd.pb.ArchiveConfig 39, // 29: api.bucketsd.pb.ArchivesResponse.current:type_name -> api.bucketsd.pb.Archive 39, // 30: api.bucketsd.pb.ArchivesResponse.history:type_name -> api.bucketsd.pb.Archive 0, // 31: api.bucketsd.pb.Metadata.RolesEntry.value:type_name -> api.bucketsd.pb.PathAccessRole 2, // 32: api.bucketsd.pb.Root.PathMetadataEntry.value:type_name -> api.bucketsd.pb.Metadata 3, // 33: api.bucketsd.pb.PushPathResponse.Event.root:type_name -> api.bucketsd.pb.Root 0, // 34: api.bucketsd.pb.PushPathAccessRolesRequest.RolesEntry.value:type_name -> api.bucketsd.pb.PathAccessRole 0, // 35: api.bucketsd.pb.PullPathAccessRolesResponse.RolesEntry.value:type_name -> api.bucketsd.pb.PathAccessRole 4, // 36: api.bucketsd.pb.APIService.List:input_type -> api.bucketsd.pb.ListRequest 6, // 37: api.bucketsd.pb.APIService.Create:input_type -> api.bucketsd.pb.CreateRequest 8, // 38: api.bucketsd.pb.APIService.Root:input_type -> api.bucketsd.pb.RootRequest 10, // 39: api.bucketsd.pb.APIService.Links:input_type -> api.bucketsd.pb.LinksRequest 12, // 40: api.bucketsd.pb.APIService.ListPath:input_type -> api.bucketsd.pb.ListPathRequest 15, // 41: api.bucketsd.pb.APIService.ListIpfsPath:input_type -> api.bucketsd.pb.ListIpfsPathRequest 17, // 42: api.bucketsd.pb.APIService.PushPath:input_type -> api.bucketsd.pb.PushPathRequest 19, // 43: api.bucketsd.pb.APIService.PushPaths:input_type -> api.bucketsd.pb.PushPathsRequest 21, // 44: api.bucketsd.pb.APIService.PullPath:input_type -> api.bucketsd.pb.PullPathRequest 23, // 45: api.bucketsd.pb.APIService.PullIpfsPath:input_type -> api.bucketsd.pb.PullIpfsPathRequest 25, // 46: api.bucketsd.pb.APIService.SetPath:input_type -> api.bucketsd.pb.SetPathRequest 27, // 47: api.bucketsd.pb.APIService.MovePath:input_type -> api.bucketsd.pb.MovePathRequest 29, // 48: api.bucketsd.pb.APIService.Remove:input_type -> api.bucketsd.pb.RemoveRequest 31, // 49: api.bucketsd.pb.APIService.RemovePath:input_type -> api.bucketsd.pb.RemovePathRequest 33, // 50: api.bucketsd.pb.APIService.PushPathAccessRoles:input_type -> api.bucketsd.pb.PushPathAccessRolesRequest 35, // 51: api.bucketsd.pb.APIService.PullPathAccessRoles:input_type -> api.bucketsd.pb.PullPathAccessRolesRequest 42, // 52: api.bucketsd.pb.APIService.DefaultArchiveConfig:input_type -> api.bucketsd.pb.DefaultArchiveConfigRequest 44, // 53: api.bucketsd.pb.APIService.SetDefaultArchiveConfig:input_type -> api.bucketsd.pb.SetDefaultArchiveConfigRequest 46, // 54: api.bucketsd.pb.APIService.Archive:input_type -> api.bucketsd.pb.ArchiveRequest 48, // 55: api.bucketsd.pb.APIService.Archives:input_type -> api.bucketsd.pb.ArchivesRequest 50, // 56: api.bucketsd.pb.APIService.ArchiveWatch:input_type -> api.bucketsd.pb.ArchiveWatchRequest 5, // 57: api.bucketsd.pb.APIService.List:output_type -> api.bucketsd.pb.ListResponse 7, // 58: api.bucketsd.pb.APIService.Create:output_type -> api.bucketsd.pb.CreateResponse 9, // 59: api.bucketsd.pb.APIService.Root:output_type -> api.bucketsd.pb.RootResponse 11, // 60: api.bucketsd.pb.APIService.Links:output_type -> api.bucketsd.pb.LinksResponse 13, // 61: api.bucketsd.pb.APIService.ListPath:output_type -> api.bucketsd.pb.ListPathResponse 16, // 62: api.bucketsd.pb.APIService.ListIpfsPath:output_type -> api.bucketsd.pb.ListIpfsPathResponse 18, // 63: api.bucketsd.pb.APIService.PushPath:output_type -> api.bucketsd.pb.PushPathResponse 20, // 64: api.bucketsd.pb.APIService.PushPaths:output_type -> api.bucketsd.pb.PushPathsResponse 22, // 65: api.bucketsd.pb.APIService.PullPath:output_type -> api.bucketsd.pb.PullPathResponse 24, // 66: api.bucketsd.pb.APIService.PullIpfsPath:output_type -> api.bucketsd.pb.PullIpfsPathResponse 26, // 67: api.bucketsd.pb.APIService.SetPath:output_type -> api.bucketsd.pb.SetPathResponse 28, // 68: api.bucketsd.pb.APIService.MovePath:output_type -> api.bucketsd.pb.MovePathResponse 30, // 69: api.bucketsd.pb.APIService.Remove:output_type -> api.bucketsd.pb.RemoveResponse 32, // 70: api.bucketsd.pb.APIService.RemovePath:output_type -> api.bucketsd.pb.RemovePathResponse 34, // 71: api.bucketsd.pb.APIService.PushPathAccessRoles:output_type -> api.bucketsd.pb.PushPathAccessRolesResponse 36, // 72: api.bucketsd.pb.APIService.PullPathAccessRoles:output_type -> api.bucketsd.pb.PullPathAccessRolesResponse 43, // 73: api.bucketsd.pb.APIService.DefaultArchiveConfig:output_type -> api.bucketsd.pb.DefaultArchiveConfigResponse 45, // 74: api.bucketsd.pb.APIService.SetDefaultArchiveConfig:output_type -> api.bucketsd.pb.SetDefaultArchiveConfigResponse 47, // 75: api.bucketsd.pb.APIService.Archive:output_type -> api.bucketsd.pb.ArchiveResponse 49, // 76: api.bucketsd.pb.APIService.Archives:output_type -> api.bucketsd.pb.ArchivesResponse 51, // 77: api.bucketsd.pb.APIService.ArchiveWatch:output_type -> api.bucketsd.pb.ArchiveWatchResponse 57, // [57:78] is the sub-list for method output_type 36, // [36:57] is the sub-list for method input_type 36, // [36:36] is the sub-list for extension type_name 36, // [36:36] is the sub-list for extension extendee 0, // [0:36] is the sub-list for field type_name } func init() { file_api_bucketsd_pb_bucketsd_proto_init() } func file_api_bucketsd_pb_bucketsd_proto_init() { if File_api_bucketsd_pb_bucketsd_proto != nil { return } if !protoimpl.UnsafeEnabled { file_api_bucketsd_pb_bucketsd_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Metadata); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Root); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RootRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RootResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LinksRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LinksResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPathRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPathResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PathItem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListIpfsPathRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListIpfsPathResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PushPathRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PushPathResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PushPathsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PushPathsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PullPathRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PullPathResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PullIpfsPathRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PullIpfsPathResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetPathRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetPathResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MovePathRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MovePathResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemovePathRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemovePathResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PushPathAccessRolesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PushPathAccessRolesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PullPathAccessRolesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PullPathAccessRolesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchiveConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Archives); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Archive); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DealInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchiveRenew); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DefaultArchiveConfigRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DefaultArchiveConfigResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetDefaultArchiveConfigRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetDefaultArchiveConfigResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchiveRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchiveResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchivesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchivesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchiveWatchRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchiveWatchResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PushPathRequest_Header); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PushPathResponse_Event); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PushPathsRequest_Header); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PushPathsRequest_Chunk); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_api_bucketsd_pb_bucketsd_proto_msgTypes[15].OneofWrappers = []interface{}{ (*PushPathRequest_Header_)(nil), (*PushPathRequest_Chunk)(nil), } file_api_bucketsd_pb_bucketsd_proto_msgTypes[17].OneofWrappers = []interface{}{ (*PushPathsRequest_Header_)(nil), (*PushPathsRequest_Chunk_)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_api_bucketsd_pb_bucketsd_proto_rawDesc, NumEnums: 2, NumMessages: 58, NumExtensions: 0, NumServices: 1, }, GoTypes: file_api_bucketsd_pb_bucketsd_proto_goTypes, DependencyIndexes: file_api_bucketsd_pb_bucketsd_proto_depIdxs, EnumInfos: file_api_bucketsd_pb_bucketsd_proto_enumTypes, MessageInfos: file_api_bucketsd_pb_bucketsd_proto_msgTypes, }.Build() File_api_bucketsd_pb_bucketsd_proto = out.File file_api_bucketsd_pb_bucketsd_proto_rawDesc = nil file_api_bucketsd_pb_bucketsd_proto_goTypes = nil file_api_bucketsd_pb_bucketsd_proto_depIdxs = nil } // Reference imports to suppress errors if they are not otherwise used. var _ context.Context var _ grpc.ClientConnInterface // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. const _ = grpc.SupportPackageIsVersion6 // APIServiceClient is the client API for APIService service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type APIServiceClient interface { List(ctx context.Context, in *ListRequest, opts ...grpc.CallOption) (*ListResponse, error) Create(ctx context.Context, in *CreateRequest, opts ...grpc.CallOption) (*CreateResponse, error) Root(ctx context.Context, in *RootRequest, opts ...grpc.CallOption) (*RootResponse, error) Links(ctx context.Context, in *LinksRequest, opts ...grpc.CallOption) (*LinksResponse, error) ListPath(ctx context.Context, in *ListPathRequest, opts ...grpc.CallOption) (*ListPathResponse, error) ListIpfsPath(ctx context.Context, in *ListIpfsPathRequest, opts ...grpc.CallOption) (*ListIpfsPathResponse, error) PushPath(ctx context.Context, opts ...grpc.CallOption) (APIService_PushPathClient, error) PushPaths(ctx context.Context, opts ...grpc.CallOption) (APIService_PushPathsClient, error) PullPath(ctx context.Context, in *PullPathRequest, opts ...grpc.CallOption) (APIService_PullPathClient, error) PullIpfsPath(ctx context.Context, in *PullIpfsPathRequest, opts ...grpc.CallOption) (APIService_PullIpfsPathClient, error) SetPath(ctx context.Context, in *SetPathRequest, opts ...grpc.CallOption) (*SetPathResponse, error) MovePath(ctx context.Context, in *MovePathRequest, opts ...grpc.CallOption) (*MovePathResponse, error) Remove(ctx context.Context, in *RemoveRequest, opts ...grpc.CallOption) (*RemoveResponse, error) RemovePath(ctx context.Context, in *RemovePathRequest, opts ...grpc.CallOption) (*RemovePathResponse, error) PushPathAccessRoles(ctx context.Context, in *PushPathAccessRolesRequest, opts ...grpc.CallOption) (*PushPathAccessRolesResponse, error) PullPathAccessRoles(ctx context.Context, in *PullPathAccessRolesRequest, opts ...grpc.CallOption) (*PullPathAccessRolesResponse, error) // Archive DefaultArchiveConfig(ctx context.Context, in *DefaultArchiveConfigRequest, opts ...grpc.CallOption) (*DefaultArchiveConfigResponse, error) SetDefaultArchiveConfig(ctx context.Context, in *SetDefaultArchiveConfigRequest, opts ...grpc.CallOption) (*SetDefaultArchiveConfigResponse, error) Archive(ctx context.Context, in *ArchiveRequest, opts ...grpc.CallOption) (*ArchiveResponse, error) Archives(ctx context.Context, in *ArchivesRequest, opts ...grpc.CallOption) (*ArchivesResponse, error) ArchiveWatch(ctx context.Context, in *ArchiveWatchRequest, opts ...grpc.CallOption) (APIService_ArchiveWatchClient, error) } type aPIServiceClient struct { cc grpc.ClientConnInterface } func NewAPIServiceClient(cc grpc.ClientConnInterface) APIServiceClient { return &aPIServiceClient{cc} } func (c *aPIServiceClient) List(ctx context.Context, in *ListRequest, opts ...grpc.CallOption) (*ListResponse, error) { out := new(ListResponse) err := c.cc.Invoke(ctx, "/api.bucketsd.pb.APIService/List", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) Create(ctx context.Context, in *CreateRequest, opts ...grpc.CallOption) (*CreateResponse, error) { out := new(CreateResponse) err := c.cc.Invoke(ctx, "/api.bucketsd.pb.APIService/Create", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) Root(ctx context.Context, in *RootRequest, opts ...grpc.CallOption) (*RootResponse, error) { out := new(RootResponse) err := c.cc.Invoke(ctx, "/api.bucketsd.pb.APIService/Root", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) Links(ctx context.Context, in *LinksRequest, opts ...grpc.CallOption) (*LinksResponse, error) { out := new(LinksResponse) err := c.cc.Invoke(ctx, "/api.bucketsd.pb.APIService/Links", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) ListPath(ctx context.Context, in *ListPathRequest, opts ...grpc.CallOption) (*ListPathResponse, error) { out := new(ListPathResponse) err := c.cc.Invoke(ctx, "/api.bucketsd.pb.APIService/ListPath", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) ListIpfsPath(ctx context.Context, in *ListIpfsPathRequest, opts ...grpc.CallOption) (*ListIpfsPathResponse, error) { out := new(ListIpfsPathResponse) err := c.cc.Invoke(ctx, "/api.bucketsd.pb.APIService/ListIpfsPath", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) PushPath(ctx context.Context, opts ...grpc.CallOption) (APIService_PushPathClient, error) { stream, err := c.cc.NewStream(ctx, &_APIService_serviceDesc.Streams[0], "/api.bucketsd.pb.APIService/PushPath", opts...) if err != nil { return nil, err } x := &aPIServicePushPathClient{stream} return x, nil } type APIService_PushPathClient interface { Send(*PushPathRequest) error Recv() (*PushPathResponse, error) grpc.ClientStream } type aPIServicePushPathClient struct { grpc.ClientStream } func (x *aPIServicePushPathClient) Send(m *PushPathRequest) error { return x.ClientStream.SendMsg(m) } func (x *aPIServicePushPathClient) Recv() (*PushPathResponse, error) { m := new(PushPathResponse) if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err } return m, nil } func (c *aPIServiceClient) PushPaths(ctx context.Context, opts ...grpc.CallOption) (APIService_PushPathsClient, error) { stream, err := c.cc.NewStream(ctx, &_APIService_serviceDesc.Streams[1], "/api.bucketsd.pb.APIService/PushPaths", opts...) if err != nil { return nil, err } x := &aPIServicePushPathsClient{stream} return x, nil } type APIService_PushPathsClient interface { Send(*PushPathsRequest) error Recv() (*PushPathsResponse, error) grpc.ClientStream } type aPIServicePushPathsClient struct { grpc.ClientStream } func (x *aPIServicePushPathsClient) Send(m *PushPathsRequest) error { return x.ClientStream.SendMsg(m) } func (x *aPIServicePushPathsClient) Recv() (*PushPathsResponse, error) { m := new(PushPathsResponse) if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err } return m, nil } func (c *aPIServiceClient) PullPath(ctx context.Context, in *PullPathRequest, opts ...grpc.CallOption) (APIService_PullPathClient, error) { stream, err := c.cc.NewStream(ctx, &_APIService_serviceDesc.Streams[2], "/api.bucketsd.pb.APIService/PullPath", opts...) if err != nil { return nil, err } x := &aPIServicePullPathClient{stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } if err := x.ClientStream.CloseSend(); err != nil { return nil, err } return x, nil } type APIService_PullPathClient interface { Recv() (*PullPathResponse, error) grpc.ClientStream } type aPIServicePullPathClient struct { grpc.ClientStream } func (x *aPIServicePullPathClient) Recv() (*PullPathResponse, error) { m := new(PullPathResponse) if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err } return m, nil } func (c *aPIServiceClient) PullIpfsPath(ctx context.Context, in *PullIpfsPathRequest, opts ...grpc.CallOption) (APIService_PullIpfsPathClient, error) { stream, err := c.cc.NewStream(ctx, &_APIService_serviceDesc.Streams[3], "/api.bucketsd.pb.APIService/PullIpfsPath", opts...) if err != nil { return nil, err } x := &aPIServicePullIpfsPathClient{stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } if err := x.ClientStream.CloseSend(); err != nil { return nil, err } return x, nil } type APIService_PullIpfsPathClient interface { Recv() (*PullIpfsPathResponse, error) grpc.ClientStream } type aPIServicePullIpfsPathClient struct { grpc.ClientStream } func (x *aPIServicePullIpfsPathClient) Recv() (*PullIpfsPathResponse, error) { m := new(PullIpfsPathResponse) if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err } return m, nil } func (c *aPIServiceClient) SetPath(ctx context.Context, in *SetPathRequest, opts ...grpc.CallOption) (*SetPathResponse, error) { out := new(SetPathResponse) err := c.cc.Invoke(ctx, "/api.bucketsd.pb.APIService/SetPath", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) MovePath(ctx context.Context, in *MovePathRequest, opts ...grpc.CallOption) (*MovePathResponse, error) { out := new(MovePathResponse) err := c.cc.Invoke(ctx, "/api.bucketsd.pb.APIService/MovePath", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) Remove(ctx context.Context, in *RemoveRequest, opts ...grpc.CallOption) (*RemoveResponse, error) { out := new(RemoveResponse) err := c.cc.Invoke(ctx, "/api.bucketsd.pb.APIService/Remove", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) RemovePath(ctx context.Context, in *RemovePathRequest, opts ...grpc.CallOption) (*RemovePathResponse, error) { out := new(RemovePathResponse) err := c.cc.Invoke(ctx, "/api.bucketsd.pb.APIService/RemovePath", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) PushPathAccessRoles(ctx context.Context, in *PushPathAccessRolesRequest, opts ...grpc.CallOption) (*PushPathAccessRolesResponse, error) { out := new(PushPathAccessRolesResponse) err := c.cc.Invoke(ctx, "/api.bucketsd.pb.APIService/PushPathAccessRoles", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) PullPathAccessRoles(ctx context.Context, in *PullPathAccessRolesRequest, opts ...grpc.CallOption) (*PullPathAccessRolesResponse, error) { out := new(PullPathAccessRolesResponse) err := c.cc.Invoke(ctx, "/api.bucketsd.pb.APIService/PullPathAccessRoles", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) DefaultArchiveConfig(ctx context.Context, in *DefaultArchiveConfigRequest, opts ...grpc.CallOption) (*DefaultArchiveConfigResponse, error) { out := new(DefaultArchiveConfigResponse) err := c.cc.Invoke(ctx, "/api.bucketsd.pb.APIService/DefaultArchiveConfig", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) SetDefaultArchiveConfig(ctx context.Context, in *SetDefaultArchiveConfigRequest, opts ...grpc.CallOption) (*SetDefaultArchiveConfigResponse, error) { out := new(SetDefaultArchiveConfigResponse) err := c.cc.Invoke(ctx, "/api.bucketsd.pb.APIService/SetDefaultArchiveConfig", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) Archive(ctx context.Context, in *ArchiveRequest, opts ...grpc.CallOption) (*ArchiveResponse, error) { out := new(ArchiveResponse) err := c.cc.Invoke(ctx, "/api.bucketsd.pb.APIService/Archive", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) Archives(ctx context.Context, in *ArchivesRequest, opts ...grpc.CallOption) (*ArchivesResponse, error) { out := new(ArchivesResponse) err := c.cc.Invoke(ctx, "/api.bucketsd.pb.APIService/Archives", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) ArchiveWatch(ctx context.Context, in *ArchiveWatchRequest, opts ...grpc.CallOption) (APIService_ArchiveWatchClient, error) { stream, err := c.cc.NewStream(ctx, &_APIService_serviceDesc.Streams[4], "/api.bucketsd.pb.APIService/ArchiveWatch", opts...) if err != nil { return nil, err } x := &aPIServiceArchiveWatchClient{stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } if err := x.ClientStream.CloseSend(); err != nil { return nil, err } return x, nil } type APIService_ArchiveWatchClient interface { Recv() (*ArchiveWatchResponse, error) grpc.ClientStream } type aPIServiceArchiveWatchClient struct { grpc.ClientStream } func (x *aPIServiceArchiveWatchClient) Recv() (*ArchiveWatchResponse, error) { m := new(ArchiveWatchResponse) if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err } return m, nil } // APIServiceServer is the server API for APIService service. type APIServiceServer interface { List(context.Context, *ListRequest) (*ListResponse, error) Create(context.Context, *CreateRequest) (*CreateResponse, error) Root(context.Context, *RootRequest) (*RootResponse, error) Links(context.Context, *LinksRequest) (*LinksResponse, error) ListPath(context.Context, *ListPathRequest) (*ListPathResponse, error) ListIpfsPath(context.Context, *ListIpfsPathRequest) (*ListIpfsPathResponse, error) PushPath(APIService_PushPathServer) error PushPaths(APIService_PushPathsServer) error PullPath(*PullPathRequest, APIService_PullPathServer) error PullIpfsPath(*PullIpfsPathRequest, APIService_PullIpfsPathServer) error SetPath(context.Context, *SetPathRequest) (*SetPathResponse, error) MovePath(context.Context, *MovePathRequest) (*MovePathResponse, error) Remove(context.Context, *RemoveRequest) (*RemoveResponse, error) RemovePath(context.Context, *RemovePathRequest) (*RemovePathResponse, error) PushPathAccessRoles(context.Context, *PushPathAccessRolesRequest) (*PushPathAccessRolesResponse, error) PullPathAccessRoles(context.Context, *PullPathAccessRolesRequest) (*PullPathAccessRolesResponse, error) // Archive DefaultArchiveConfig(context.Context, *DefaultArchiveConfigRequest) (*DefaultArchiveConfigResponse, error) SetDefaultArchiveConfig(context.Context, *SetDefaultArchiveConfigRequest) (*SetDefaultArchiveConfigResponse, error) Archive(context.Context, *ArchiveRequest) (*ArchiveResponse, error) Archives(context.Context, *ArchivesRequest) (*ArchivesResponse, error) ArchiveWatch(*ArchiveWatchRequest, APIService_ArchiveWatchServer) error } // UnimplementedAPIServiceServer can be embedded to have forward compatible implementations. type UnimplementedAPIServiceServer struct { } func (*UnimplementedAPIServiceServer) List(context.Context, *ListRequest) (*ListResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method List not implemented") } func (*UnimplementedAPIServiceServer) Create(context.Context, *CreateRequest) (*CreateResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") } func (*UnimplementedAPIServiceServer) Root(context.Context, *RootRequest) (*RootResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Root not implemented") } func (*UnimplementedAPIServiceServer) Links(context.Context, *LinksRequest) (*LinksResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Links not implemented") } func (*UnimplementedAPIServiceServer) ListPath(context.Context, *ListPathRequest) (*ListPathResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListPath not implemented") } func (*UnimplementedAPIServiceServer) ListIpfsPath(context.Context, *ListIpfsPathRequest) (*ListIpfsPathResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListIpfsPath not implemented") } func (*UnimplementedAPIServiceServer) PushPath(APIService_PushPathServer) error { return status.Errorf(codes.Unimplemented, "method PushPath not implemented") } func (*UnimplementedAPIServiceServer) PushPaths(APIService_PushPathsServer) error { return status.Errorf(codes.Unimplemented, "method PushPaths not implemented") } func (*UnimplementedAPIServiceServer) PullPath(*PullPathRequest, APIService_PullPathServer) error { return status.Errorf(codes.Unimplemented, "method PullPath not implemented") } func (*UnimplementedAPIServiceServer) PullIpfsPath(*PullIpfsPathRequest, APIService_PullIpfsPathServer) error { return status.Errorf(codes.Unimplemented, "method PullIpfsPath not implemented") } func (*UnimplementedAPIServiceServer) SetPath(context.Context, *SetPathRequest) (*SetPathResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SetPath not implemented") } func (*UnimplementedAPIServiceServer) MovePath(context.Context, *MovePathRequest) (*MovePathResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method MovePath not implemented") } func (*UnimplementedAPIServiceServer) Remove(context.Context, *RemoveRequest) (*RemoveResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Remove not implemented") } func (*UnimplementedAPIServiceServer) RemovePath(context.Context, *RemovePathRequest) (*RemovePathResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RemovePath not implemented") } func (*UnimplementedAPIServiceServer) PushPathAccessRoles(context.Context, *PushPathAccessRolesRequest) (*PushPathAccessRolesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method PushPathAccessRoles not implemented") } func (*UnimplementedAPIServiceServer) PullPathAccessRoles(context.Context, *PullPathAccessRolesRequest) (*PullPathAccessRolesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method PullPathAccessRoles not implemented") } func (*UnimplementedAPIServiceServer) DefaultArchiveConfig(context.Context, *DefaultArchiveConfigRequest) (*DefaultArchiveConfigResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DefaultArchiveConfig not implemented") } func (*UnimplementedAPIServiceServer) SetDefaultArchiveConfig(context.Context, *SetDefaultArchiveConfigRequest) (*SetDefaultArchiveConfigResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SetDefaultArchiveConfig not implemented") } func (*UnimplementedAPIServiceServer) Archive(context.Context, *ArchiveRequest) (*ArchiveResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Archive not implemented") } func (*UnimplementedAPIServiceServer) Archives(context.Context, *ArchivesRequest) (*ArchivesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Archives not implemented") } func (*UnimplementedAPIServiceServer) ArchiveWatch(*ArchiveWatchRequest, APIService_ArchiveWatchServer) error { return status.Errorf(codes.Unimplemented, "method ArchiveWatch not implemented") } func RegisterAPIServiceServer(s *grpc.Server, srv APIServiceServer) { s.RegisterService(&_APIService_serviceDesc, srv) } func _APIService_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).List(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.bucketsd.pb.APIService/List", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).List(ctx, req.(*ListRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).Create(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.bucketsd.pb.APIService/Create", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).Create(ctx, req.(*CreateRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_Root_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RootRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).Root(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.bucketsd.pb.APIService/Root", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).Root(ctx, req.(*RootRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_Links_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(LinksRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).Links(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.bucketsd.pb.APIService/Links", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).Links(ctx, req.(*LinksRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_ListPath_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListPathRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).ListPath(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.bucketsd.pb.APIService/ListPath", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).ListPath(ctx, req.(*ListPathRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_ListIpfsPath_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListIpfsPathRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).ListIpfsPath(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.bucketsd.pb.APIService/ListIpfsPath", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).ListIpfsPath(ctx, req.(*ListIpfsPathRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_PushPath_Handler(srv interface{}, stream grpc.ServerStream) error { return srv.(APIServiceServer).PushPath(&aPIServicePushPathServer{stream}) } type APIService_PushPathServer interface { Send(*PushPathResponse) error Recv() (*PushPathRequest, error) grpc.ServerStream } type aPIServicePushPathServer struct { grpc.ServerStream } func (x *aPIServicePushPathServer) Send(m *PushPathResponse) error { return x.ServerStream.SendMsg(m) } func (x *aPIServicePushPathServer) Recv() (*PushPathRequest, error) { m := new(PushPathRequest) if err := x.ServerStream.RecvMsg(m); err != nil { return nil, err } return m, nil } func _APIService_PushPaths_Handler(srv interface{}, stream grpc.ServerStream) error { return srv.(APIServiceServer).PushPaths(&aPIServicePushPathsServer{stream}) } type APIService_PushPathsServer interface { Send(*PushPathsResponse) error Recv() (*PushPathsRequest, error) grpc.ServerStream } type aPIServicePushPathsServer struct { grpc.ServerStream } func (x *aPIServicePushPathsServer) Send(m *PushPathsResponse) error { return x.ServerStream.SendMsg(m) } func (x *aPIServicePushPathsServer) Recv() (*PushPathsRequest, error) { m := new(PushPathsRequest) if err := x.ServerStream.RecvMsg(m); err != nil { return nil, err } return m, nil } func _APIService_PullPath_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(PullPathRequest) if err := stream.RecvMsg(m); err != nil { return err } return srv.(APIServiceServer).PullPath(m, &aPIServicePullPathServer{stream}) } type APIService_PullPathServer interface { Send(*PullPathResponse) error grpc.ServerStream } type aPIServicePullPathServer struct { grpc.ServerStream } func (x *aPIServicePullPathServer) Send(m *PullPathResponse) error { return x.ServerStream.SendMsg(m) } func _APIService_PullIpfsPath_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(PullIpfsPathRequest) if err := stream.RecvMsg(m); err != nil { return err } return srv.(APIServiceServer).PullIpfsPath(m, &aPIServicePullIpfsPathServer{stream}) } type APIService_PullIpfsPathServer interface { Send(*PullIpfsPathResponse) error grpc.ServerStream } type aPIServicePullIpfsPathServer struct { grpc.ServerStream } func (x *aPIServicePullIpfsPathServer) Send(m *PullIpfsPathResponse) error { return x.ServerStream.SendMsg(m) } func _APIService_SetPath_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SetPathRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).SetPath(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.bucketsd.pb.APIService/SetPath", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).SetPath(ctx, req.(*SetPathRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_MovePath_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MovePathRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).MovePath(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.bucketsd.pb.APIService/MovePath", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).MovePath(ctx, req.(*MovePathRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_Remove_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RemoveRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).Remove(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.bucketsd.pb.APIService/Remove", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).Remove(ctx, req.(*RemoveRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_RemovePath_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RemovePathRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).RemovePath(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.bucketsd.pb.APIService/RemovePath", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).RemovePath(ctx, req.(*RemovePathRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_PushPathAccessRoles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(PushPathAccessRolesRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).PushPathAccessRoles(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.bucketsd.pb.APIService/PushPathAccessRoles", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).PushPathAccessRoles(ctx, req.(*PushPathAccessRolesRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_PullPathAccessRoles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(PullPathAccessRolesRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).PullPathAccessRoles(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.bucketsd.pb.APIService/PullPathAccessRoles", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).PullPathAccessRoles(ctx, req.(*PullPathAccessRolesRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_DefaultArchiveConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DefaultArchiveConfigRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).DefaultArchiveConfig(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.bucketsd.pb.APIService/DefaultArchiveConfig", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).DefaultArchiveConfig(ctx, req.(*DefaultArchiveConfigRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_SetDefaultArchiveConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SetDefaultArchiveConfigRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).SetDefaultArchiveConfig(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.bucketsd.pb.APIService/SetDefaultArchiveConfig", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).SetDefaultArchiveConfig(ctx, req.(*SetDefaultArchiveConfigRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_Archive_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ArchiveRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).Archive(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.bucketsd.pb.APIService/Archive", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).Archive(ctx, req.(*ArchiveRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_Archives_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ArchivesRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).Archives(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.bucketsd.pb.APIService/Archives", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).Archives(ctx, req.(*ArchivesRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_ArchiveWatch_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(ArchiveWatchRequest) if err := stream.RecvMsg(m); err != nil { return err } return srv.(APIServiceServer).ArchiveWatch(m, &aPIServiceArchiveWatchServer{stream}) } type APIService_ArchiveWatchServer interface { Send(*ArchiveWatchResponse) error grpc.ServerStream } type aPIServiceArchiveWatchServer struct { grpc.ServerStream } func (x *aPIServiceArchiveWatchServer) Send(m *ArchiveWatchResponse) error { return x.ServerStream.SendMsg(m) } var _APIService_serviceDesc = grpc.ServiceDesc{ ServiceName: "api.bucketsd.pb.APIService", HandlerType: (*APIServiceServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "List", Handler: _APIService_List_Handler, }, { MethodName: "Create", Handler: _APIService_Create_Handler, }, { MethodName: "Root", Handler: _APIService_Root_Handler, }, { MethodName: "Links", Handler: _APIService_Links_Handler, }, { MethodName: "ListPath", Handler: _APIService_ListPath_Handler, }, { MethodName: "ListIpfsPath", Handler: _APIService_ListIpfsPath_Handler, }, { MethodName: "SetPath", Handler: _APIService_SetPath_Handler, }, { MethodName: "MovePath", Handler: _APIService_MovePath_Handler, }, { MethodName: "Remove", Handler: _APIService_Remove_Handler, }, { MethodName: "RemovePath", Handler: _APIService_RemovePath_Handler, }, { MethodName: "PushPathAccessRoles", Handler: _APIService_PushPathAccessRoles_Handler, }, { MethodName: "PullPathAccessRoles", Handler: _APIService_PullPathAccessRoles_Handler, }, { MethodName: "DefaultArchiveConfig", Handler: _APIService_DefaultArchiveConfig_Handler, }, { MethodName: "SetDefaultArchiveConfig", Handler: _APIService_SetDefaultArchiveConfig_Handler, }, { MethodName: "Archive", Handler: _APIService_Archive_Handler, }, { MethodName: "Archives", Handler: _APIService_Archives_Handler, }, }, Streams: []grpc.StreamDesc{ { StreamName: "PushPath", Handler: _APIService_PushPath_Handler, ServerStreams: true, ClientStreams: true, }, { StreamName: "PushPaths", Handler: _APIService_PushPaths_Handler, ServerStreams: true, ClientStreams: true, }, { StreamName: "PullPath", Handler: _APIService_PullPath_Handler, ServerStreams: true, }, { StreamName: "PullIpfsPath", Handler: _APIService_PullIpfsPath_Handler, ServerStreams: true, }, { StreamName: "ArchiveWatch", Handler: _APIService_ArchiveWatch_Handler, ServerStreams: true, }, }, Metadata: "api/bucketsd/pb/bucketsd.proto", } ================================================ FILE: api/bucketsd/pb/bucketsd.proto ================================================ syntax = "proto3"; package api.bucketsd.pb; option go_package = "github.com/textileio/textile/v2/api/bucketsd/pb"; message Metadata { map roles = 1; int64 updated_at = 2; string key = 3; // @todo: For v3, change this to: // string key = 1; // map roles = 2; // int64 updated_at = 3; } message Root { string key = 1; string name = 2; string path = 3; int64 created_at = 4; int64 updated_at = 5; string thread = 6; string owner = 7; int32 version = 8; Metadata metadata = 9; string link_key = 10; map path_metadata = 11; Archives archives = 12; // @todo: For v3, change this to: // string thread = 1; // string key = 2; // string owner = 3; // string name = 4; // int32 version = 5; // string link_key = 6; // string path = 7; // map metadata = 8; // Archives archives = 9; // int64 created_at = 10; // int64 updated_at = 11; } message ListRequest {} message ListResponse { repeated Root roots = 1; } message CreateRequest { string name = 1; string bootstrap_cid = 2; bool private = 3; bool unfreeze = 4; } message CreateResponse { Root root = 1; LinksResponse links = 2; bytes seed = 3; string seed_cid = 4; int64 pinned = 5; string retrieval_id = 6; } message RootRequest { string key = 1; } message RootResponse { Root root = 1; } message LinksRequest { string key = 1; string path = 2; } message LinksResponse { string url = 1; string www = 2; string ipns = 3; } message ListPathRequest { string key = 1; string path = 2; } message ListPathResponse { PathItem item = 1; Root root = 2; } message PathItem { string cid = 1; string name = 2; string path = 3; int64 size = 4; bool is_dir = 5; repeated PathItem items = 6; int32 items_count = 7; Metadata metadata = 9; // @todo: For v3, change this to 8. } message ListIpfsPathRequest { string path = 1; } message ListIpfsPathResponse { PathItem item = 1; } message PushPathRequest { oneof payload { Header header = 1; bytes chunk = 2; } message Header { string key = 1; string path = 2; string root = 3; } } message PushPathResponse { Event event = 1; message Event { string name = 1; string path = 2; int64 bytes = 3; string size = 4; Root root = 5; int64 pinned = 6; } } message PushPathsRequest { oneof payload { Header header = 1; Chunk chunk = 2; } message Header { string key = 1; string root = 2; repeated string paths = 3; } message Chunk { string path = 1; bytes data = 2; } } message PushPathsResponse { string path = 1; string cid = 2; int64 size = 3; int64 pinned = 4; Root root = 5; } message PullPathRequest { string key = 1; string path = 2; } message PullPathResponse { bytes chunk = 1; } message PullIpfsPathRequest { string path = 1; } message PullIpfsPathResponse { bytes chunk = 1; } message SetPathRequest { string key = 1; string path = 2; string cid = 3; } message SetPathResponse { int64 pinned = 1; } message MovePathRequest { string key = 1; string from_path = 2; string to_path = 3; } message MovePathResponse {} message RemoveRequest { string key = 1; } message RemoveResponse { int64 pinned = 1; } message RemovePathRequest { string key = 1; string path = 2; string root = 3; } message RemovePathResponse { Root root = 1; int64 pinned = 2; } enum PathAccessRole { PATH_ACCESS_ROLE_UNSPECIFIED = 0; PATH_ACCESS_ROLE_READER = 1; PATH_ACCESS_ROLE_WRITER = 2; PATH_ACCESS_ROLE_ADMIN = 3; } message PushPathAccessRolesRequest { string key = 1; string path = 2; map roles = 3; } message PushPathAccessRolesResponse { int64 pinned = 1; } message PullPathAccessRolesRequest { string key = 1; string path = 2; } message PullPathAccessRolesResponse { map roles = 1; } message ArchiveConfig { int32 rep_factor = 1; int64 deal_min_duration = 2; repeated string excluded_miners = 3; repeated string trusted_miners = 4; repeated string country_codes = 5; ArchiveRenew renew = 6; uint64 max_price = 7; bool fast_retrieval = 8; int64 deal_start_offset = 9; bool verified_deal = 10; } message Archives { Archive current = 1; repeated Archive history = 2; } message Archive { string cid = 1; string job_id = 2; ArchiveStatus archive_status = 3; bool aborted = 4; string aborted_msg = 5; string failure_msg = 6; int64 created_at = 7; repeated DealInfo deal_info = 8; } enum ArchiveStatus { ARCHIVE_STATUS_UNSPECIFIED = 0; ARCHIVE_STATUS_QUEUED = 1; ARCHIVE_STATUS_EXECUTING = 2; ARCHIVE_STATUS_FAILED = 3; ARCHIVE_STATUS_CANCELED = 4; ARCHIVE_STATUS_SUCCESS = 5; } message DealInfo { string proposal_cid = 1; uint64 state_id = 2; string state_name = 3; string miner = 4; string piece_cid = 5; uint64 size = 6; uint64 price_per_epoch = 7; uint64 start_epoch = 8; uint64 duration = 9; uint64 deal_id = 10; int64 activation_epoch = 11; string message = 12; } message ArchiveRenew { bool enabled = 1; int32 threshold = 2; } message DefaultArchiveConfigRequest { string key = 1; } message DefaultArchiveConfigResponse { ArchiveConfig archive_config = 1; } message SetDefaultArchiveConfigRequest { string key = 1; ArchiveConfig archive_config = 2; } message SetDefaultArchiveConfigResponse {} message ArchiveRequest { string key = 1; ArchiveConfig archive_config = 2; bool skip_automatic_verified_deal = 3; } message ArchiveResponse {} message ArchivesRequest { string key = 1; } // todo: For v3, change this to { Archives archives = 1; } message ArchivesResponse { Archive current = 1; repeated Archive history = 2; } message ArchiveWatchRequest { string key = 1; } message ArchiveWatchResponse { string msg = 1; } service APIService { rpc List(ListRequest) returns (ListResponse) {} rpc Create(CreateRequest) returns (CreateResponse) {} rpc Root(RootRequest) returns (RootResponse) {} rpc Links(LinksRequest) returns (LinksResponse) {} rpc ListPath(ListPathRequest) returns (ListPathResponse) {} rpc ListIpfsPath(ListIpfsPathRequest) returns (ListIpfsPathResponse) {} rpc PushPath(stream PushPathRequest) returns (stream PushPathResponse) {} rpc PushPaths(stream PushPathsRequest) returns (stream PushPathsResponse) {} rpc PullPath(PullPathRequest) returns (stream PullPathResponse) {} rpc PullIpfsPath(PullIpfsPathRequest) returns (stream PullIpfsPathResponse) {} rpc SetPath(SetPathRequest) returns (SetPathResponse) {} rpc MovePath(MovePathRequest) returns (MovePathResponse) {} rpc Remove(RemoveRequest) returns (RemoveResponse) {} rpc RemovePath(RemovePathRequest) returns (RemovePathResponse) {} rpc PushPathAccessRoles(PushPathAccessRolesRequest) returns (PushPathAccessRolesResponse) {} rpc PullPathAccessRoles(PullPathAccessRolesRequest) returns (PullPathAccessRolesResponse) {} // Archive rpc DefaultArchiveConfig(DefaultArchiveConfigRequest) returns (DefaultArchiveConfigResponse) {} rpc SetDefaultArchiveConfig(SetDefaultArchiveConfigRequest) returns (SetDefaultArchiveConfigResponse) {} rpc Archive(ArchiveRequest) returns (ArchiveResponse) {} rpc Archives(ArchivesRequest) returns (ArchivesResponse) {} rpc ArchiveWatch(ArchiveWatchRequest) returns (stream ArchiveWatchResponse) {} } ================================================ FILE: api/bucketsd/pb/javascript/package.json ================================================ { "name": "@textile/buckets-grpc", "version": "0.0.0", "description": "A client for interacting with the Textile Buckets gRPC API.", "repository": { "type": "git", "url": "git+https://github.com/textileio/textile.git" }, "author": "Textile", "license": "MIT", "files": [ "api/bucketsd/pb/bucketsd_pb.js", "api/bucketsd/pb/bucketsd_pb_service.js", "api/bucketsd/pb/bucketsd_pb.d.ts", "api/bucketsd/pb/bucketsd_pb_service.d.ts" ], "dependencies": { "@improbable-eng/grpc-web": "^0.14.1", "@types/google-protobuf": "^3.15.5", "google-protobuf": "^3.19.4" }, "devDependencies": { "ts-protoc-gen": "^0.15.0" } } ================================================ FILE: api/bucketsd/service.go ================================================ package bucketsd import ( "bytes" "context" "crypto/rand" "encoding/json" "errors" "fmt" "io" "io/ioutil" "math" "math/big" gopath "path" "regexp" "strconv" "strings" "sync" "time" "github.com/google/go-cmp/cmp" "github.com/ipfs/go-cid" ipfsfiles "github.com/ipfs/go-ipfs-files" ipld "github.com/ipfs/go-ipld-format" logging "github.com/ipfs/go-log/v2" dag "github.com/ipfs/go-merkledag" "github.com/ipfs/go-unixfs" iface "github.com/ipfs/interface-go-ipfs-core" "github.com/ipfs/interface-go-ipfs-core/options" "github.com/ipfs/interface-go-ipfs-core/path" "github.com/textileio/dcrypto" "github.com/textileio/go-threads/core/thread" "github.com/textileio/go-threads/db" nutil "github.com/textileio/go-threads/net/util" pow "github.com/textileio/powergate/v2/api/client" userPb "github.com/textileio/powergate/v2/api/gen/powergate/user/v1" powUtil "github.com/textileio/powergate/v2/util" pb "github.com/textileio/textile/v2/api/bucketsd/pb" "github.com/textileio/textile/v2/api/common" "github.com/textileio/textile/v2/buckets" "github.com/textileio/textile/v2/buckets/archive/retrieval" "github.com/textileio/textile/v2/buckets/archive/tracker" "github.com/textileio/textile/v2/ipns" mdb "github.com/textileio/textile/v2/mongodb" tdb "github.com/textileio/textile/v2/threaddb" "github.com/textileio/textile/v2/util" "golang.org/x/sync/errgroup" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) const ( // chunkSize for get file requests. chunkSize = 1024 * 32 // 32 KiB // pinNotRecursiveMsg is used to match an IPFS "recursively pinned already" error. pinNotRecursiveMsg = "'from' cid was not recursively pinned already" // pinAlreadyRecursiveMsg is used to match an IPFS "already recursively pinned" error. pinAlreadyRecursiveMsg = "'to' cid was already recursively pinned" ) var ( log = logging.Logger("bucketsapi") // ErrArchivingFeatureDisabled indicates an archive was requested with archiving disabled. ErrArchivingFeatureDisabled = errors.New("archiving feature is disabled") // ErrStorageQuotaExhausted indicates the requested operation exceeds the storage allowance. ErrStorageQuotaExhausted = errors.New("storage quota exhausted") // errInvalidNodeType indicates a node with type other than raw of proto was encountered. errInvalidNodeType = errors.New("invalid node type") // errDBRequired indicates the request requires a thread ID. errDBRequired = errors.New("db required") // baseArchiveStorageConfig is used to build the final StorageConfig after being // combined with information from the ArchiveConfig baseArchiveStorageConfig = &userPb.StorageConfig{ Hot: &userPb.HotConfig{ Enabled: false, Ipfs: &userPb.IpfsConfig{ AddTimeout: 15 * 60, }, }, Cold: &userPb.ColdConfig{ Enabled: true, }, } // @todo: Export the default storage config from powergate so we can create this from it. defaultDefaultArchiveConfig = mdb.ArchiveConfig{ RepFactor: 1, DealMinDuration: powUtil.MinDealDuration, FastRetrieval: true, DealStartOffset: 72 * 60 * 60 / powUtil.EpochDurationSeconds, // 72hs MaxPrice: 100_000_000_000, VerifiedDeal: false, } ) type ctxKey string // Service is a gRPC service for buckets. type Service struct { Collections *mdb.Collections Buckets *tdb.Buckets GatewayURL string GatewayBucketsHost string IPFSClient iface.CoreAPI IPNSManager *ipns.Manager PowergateClient *pow.Client PowergateAdminToken string ArchiveTracker *tracker.Tracker FilRetrieval *retrieval.FilRetrieval Semaphores *nutil.SemaphorePool MaxBucketArchiveSize int64 MinBucketArchiveSize int64 MaxBucketArchiveRepFactor int } var ( _ nutil.SemaphoreKey = (*buckLock)(nil) ) type buckLock string func (l buckLock) Key() string { return string(l) } func (s *Service) List(ctx context.Context, _ *pb.ListRequest) (*pb.ListResponse, error) { log.Debugf("received list request") dbID, ok := common.ThreadIDFromContext(ctx) if !ok { return nil, errDBRequired } dbToken, _ := thread.TokenFromContext(ctx) list, err := s.Buckets.List(ctx, dbID, &db.Query{}, &tdb.Bucket{}, tdb.WithToken(dbToken)) if err != nil { return nil, err } bucks := list.([]*tdb.Bucket) roots := make([]*pb.Root, len(bucks)) for i, buck := range bucks { roots[i], err = getPbRoot(dbID, buck) if err != nil { return nil, err } } return &pb.ListResponse{Roots: roots}, nil } func getPbRoot(dbID thread.ID, buck *tdb.Bucket) (*pb.Root, error) { var pmdOld *pb.Metadata md, ok := buck.Metadata[""] if ok { var err error pmdOld, err = metadataToPb(md) if err != nil { return nil, err } } pmd := make(map[string]*pb.Metadata) for p, md := range buck.Metadata { m, err := metadataToPb(md) if err != nil { return nil, err } pmd[p] = m } return &pb.Root{ Thread: dbID.String(), Key: buck.Key, Owner: buck.Owner, Name: buck.Name, Version: int32(buck.Version), LinkKey: buck.LinkKey, Path: buck.Path, Metadata: pmdOld, // @todo: For v3, remove this. PathMetadata: pmd, Archives: archivesToPb(buck.Archives), CreatedAt: buck.CreatedAt, UpdatedAt: buck.UpdatedAt, }, nil } func metadataToPb(md tdb.Metadata) (*pb.Metadata, error) { roles := make(map[string]pb.PathAccessRole) for k, r := range md.Roles { var pr pb.PathAccessRole switch r { case buckets.None: pr = pb.PathAccessRole_PATH_ACCESS_ROLE_UNSPECIFIED case buckets.Reader: pr = pb.PathAccessRole_PATH_ACCESS_ROLE_READER case buckets.Writer: pr = pb.PathAccessRole_PATH_ACCESS_ROLE_WRITER case buckets.Admin: pr = pb.PathAccessRole_PATH_ACCESS_ROLE_ADMIN default: return nil, fmt.Errorf("unknown path access role %d", r) } roles[k] = pr } return &pb.Metadata{ Key: md.Key, Roles: roles, UpdatedAt: md.UpdatedAt, }, nil } func archivesToPb(archives tdb.Archives) *pb.Archives { pba := &pb.Archives{ Current: &pb.Archive{ Cid: archives.Current.Cid, DealInfo: dealsToPb(archives.Current.Deals), }, History: make([]*pb.Archive, len(archives.History)), } for i, a := range archives.History { pba.History[i] = &pb.Archive{ Cid: a.Cid, DealInfo: dealsToPb(a.Deals), } } return pba } func dealsToPb(deals []tdb.Deal) []*pb.DealInfo { pbd := make([]*pb.DealInfo, len(deals)) for i, d := range deals { pbd[i] = &pb.DealInfo{ ProposalCid: d.ProposalCid, Miner: d.Miner, } } return pbd } func (s *Service) Create(ctx context.Context, req *pb.CreateRequest) (*pb.CreateResponse, error) { log.Debugf("received create request") dbID, ok := common.ThreadIDFromContext(ctx) if !ok { return nil, errDBRequired } dbToken, _ := thread.TokenFromContext(ctx) var bootCid cid.Cid if req.BootstrapCid != "" { var err error bootCid, err = cid.Decode(req.BootstrapCid) if err != nil { return nil, fmt.Errorf("invalid bootstrap cid: %v", err) } } // If the bucket is created from some imported archive, // create the retrieval request, and let all the process // happend async in the background. if req.Unfreeze { account, _ := mdb.AccountFromContext(ctx) owner := account.Owner() accKey := owner.Key.String() powToken := owner.PowInfo.Token rid, err := s.FilRetrieval.CreateForNewBucket( ctx, accKey, dbID, dbToken, req.Name, req.Private, bootCid, powToken, ) if err != nil { return nil, fmt.Errorf("creating retrieval: %s", err) } return &pb.CreateResponse{ RetrievalId: rid, }, nil } // If not created with --unfreeze, just do the normal case. ctx, buck, seed, err := s.createBucket(ctx, dbID, dbToken, req.Name, req.Private, bootCid) if err != nil { return nil, err } var seedData []byte if buck.IsPrivate() { fileKey, err := buck.GetFileEncryptionKeyForPath("") if err != nil { return nil, err } seedData, err = decryptData(seed.RawData(), fileKey) if err != nil { return nil, err } } else { seedData = seed.RawData() } root, err := getPbRoot(dbID, buck) if err != nil { return nil, err } links, err := s.createLinks(ctx, dbID, buck, "", dbToken) if err != nil { return nil, err } return &pb.CreateResponse{ Root: root, Links: links, Seed: seedData, SeedCid: seed.Cid().String(), Pinned: s.getPinnedBytes(ctx), }, nil } // CreateBucket is a wrapper to enable creating a bucket from an internal method. // TODO(**): We should consider refactor createBucket code (and other related stuff) out of // `Service`, since this logic is useful for other cases than serving APIs. func (s *Service) CreateBucket(ctx context.Context, threadID thread.ID, threadToken thread.Token, buckName string, buckPrivate bool, dataCid cid.Cid) error { _, _, _, err := s.createBucket(ctx, threadID, threadToken, buckName, buckPrivate, dataCid) return err } // createBucket returns a new bucket and seed node. func (s *Service) createBucket( ctx context.Context, dbID thread.ID, dbToken thread.Token, name string, private bool, bootCid cid.Cid, ) (nctx context.Context, buck *tdb.Bucket, seed ipld.Node, err error) { var owner thread.PubKey if dbToken.Defined() { owner, err = dbToken.PubKey() if err != nil { return ctx, nil, nil, fmt.Errorf("creating bucket: invalid token public key") } } // Create bucket keys if private var linkKey, fileKey []byte if private { var err error linkKey, err = dcrypto.NewKey() if err != nil { return ctx, nil, nil, err } fileKey, err = dcrypto.NewKey() if err != nil { return ctx, nil, nil, err } } // Make a random seed, which ensures a bucket's uniqueness seed, err = makeSeed(fileKey) if err != nil { return } // Create the bucket directory var buckPath path.Resolved if bootCid.Defined() { ctx, buckPath, err = s.createBootstrappedPath(ctx, "", seed, bootCid, linkKey, fileKey) if err != nil { return ctx, nil, nil, fmt.Errorf("creating prepared bucket: %v", err) } } else { ctx, buckPath, err = s.createPristinePath(ctx, seed, linkKey) if err != nil { return ctx, nil, nil, fmt.Errorf("creating pristine bucket: %v", err) } } // Create top-level metadata now := time.Now() md := map[string]tdb.Metadata{ "": tdb.NewDefaultMetadata(owner, fileKey, now), buckets.SeedName: { Roles: make(map[string]buckets.Role), UpdatedAt: now.UnixNano(), }, } // Create a new IPNS key buckKey, err := s.IPNSManager.CreateKey(ctx, dbID, buckPath) if err != nil { return } // Create the bucket using the IPNS key as instance ID buck, err = s.Buckets.New( ctx, dbID, buckKey, buckPath, now, owner, md, tdb.WithNewBucketName(name), tdb.WithNewBucketKey(linkKey), tdb.WithNewBucketToken(dbToken)) if err != nil { return } // Finally, publish the new bucket's address to the name system go s.IPNSManager.Publish(buckPath, buck.Key) return ctx, buck, seed, nil } // makeSeed returns a raw ipld node containing a random seed. func makeSeed(key []byte) (ipld.Node, error) { seed := make([]byte, 32) if _, err := rand.Read(seed); err != nil { return nil, err } // Encrypt seed if key is set (treating the seed differently here would complicate bucket reading) if key != nil { var err error seed, err = encryptData(seed, nil, key) if err != nil { return nil, err } } return dag.NewRawNode(seed), nil } // encryptData encrypts data with the new key, decrypting with current key if needed. func encryptData(data, currentKey, newKey []byte) ([]byte, error) { if currentKey != nil { var err error data, err = decryptData(data, currentKey) if err != nil { return nil, err } } r, err := dcrypto.NewEncrypter(bytes.NewReader(data), newKey) if err != nil { return nil, err } return ioutil.ReadAll(r) } // createPristinePath creates an IPFS path which only contains the seed file. // The returned path will be pinned. func (s *Service) createPristinePath( ctx context.Context, seed ipld.Node, key []byte, ) (context.Context, path.Resolved, error) { // Create the initial bucket directory n, err := newDirWithNode(seed, buckets.SeedName, key) if err != nil { return ctx, nil, err } if err = s.IPFSClient.Dag().AddMany(ctx, []ipld.Node{n, seed}); err != nil { return ctx, nil, err } pins := []ipld.Node{n} if key != nil { pins = append(pins, seed) } ctx, err = s.pinBlocks(ctx, pins) if err != nil { return ctx, nil, err } return ctx, path.IpfsPath(n.Cid()), nil } // pinBlocks pins blocks, accounting for sum bytes pinned for context. func (s *Service) pinBlocks(ctx context.Context, nodes []ipld.Node) (context.Context, error) { var totalAddedSize int64 for _, n := range nodes { s, err := n.Stat() if err != nil { return ctx, fmt.Errorf("getting size of node: %v", err) } totalAddedSize += int64(s.CumulativeSize) } // Check context owner's storage allowance owner, ok := buckets.BucketOwnerFromContext(ctx) if ok { log.Debugf("pinBlocks: storage: %d used, %d available, %d requested", owner.StorageUsed, owner.StorageAvailable, totalAddedSize) } if ok && totalAddedSize > 0 && totalAddedSize > owner.StorageAvailable { return ctx, ErrStorageQuotaExhausted } if err := s.IPFSClient.Dag().Pinning().AddMany(ctx, nodes); err != nil { return ctx, fmt.Errorf("pinning set of nodes: %v", err) } return s.addPinnedBytes(ctx, totalAddedSize), nil } // addPinnedBytes adds the provided delta to a running total for context. func (s *Service) addPinnedBytes(ctx context.Context, delta int64) context.Context { total, _ := ctx.Value(ctxKey("pinnedBytes")).(int64) ctx = context.WithValue(ctx, ctxKey("pinnedBytes"), total+delta) owner, ok := buckets.BucketOwnerFromContext(ctx) if ok { owner.StorageUsed += delta // int64(math.MaxInt64) indicates that the user has no current cap so don't deduct if owner.StorageAvailable < int64(math.MaxInt64) { owner.StorageAvailable -= delta } owner.StorageDelta += delta ctx = buckets.NewBucketOwnerContext(ctx, owner) } return ctx } // getPinnedBytes returns the total pinned bytes for context. func (s *Service) getPinnedBytes(ctx context.Context) int64 { pinned, _ := ctx.Value(ctxKey("pinnedBytes")).(int64) return pinned } // createBootstrapedPath creates an IPFS path which is the bootCid UnixFS DAG, // with tdb.SeedName seed file added to the root of the DAG. The returned path will // be pinned. func (s *Service) createBootstrappedPath( ctx context.Context, destPath string, seed ipld.Node, bootCid cid.Cid, linkKey, fileKey []byte, ) (context.Context, path.Resolved, error) { pth := path.IpfsPath(bootCid) bootSize, err := s.dagSize(ctx, pth) if err != nil { return ctx, nil, fmt.Errorf("resolving boot cid node: %v", err) } // Check context owner's storage allowance owner, ok := buckets.BucketOwnerFromContext(ctx) if ok { log.Debugf("createBootstrappedPath: storage: %d used, %d available, %d requested", owner.StorageUsed, owner.StorageAvailable, bootSize) } if ok && bootSize > 0 && bootSize > owner.StorageAvailable { return ctx, nil, ErrStorageQuotaExhausted } // Here we have to walk and possibly encrypt the boot path dag n, nodes, err := s.newDirFromExistingPath(ctx, pth, destPath, linkKey, fileKey, seed, buckets.SeedName) if err != nil { return ctx, nil, err } if err = s.IPFSClient.Dag().AddMany(ctx, nodes); err != nil { return ctx, nil, err } var pins []ipld.Node if linkKey != nil { pins = nodes } else { pins = []ipld.Node{n} } ctx, err = s.pinBlocks(ctx, pins) if err != nil { return ctx, nil, err } return ctx, path.IpfsPath(n.Cid()), nil } // newDirWithNode returns a new proto node directory wrapping the node, // which is encrypted if key is not nil. func newDirWithNode(n ipld.Node, name string, key []byte) (ipld.Node, error) { dir := unixfs.EmptyDirNode() dir.SetCidBuilder(dag.V1CidPrefix()) if err := dir.AddNodeLink(name, n); err != nil { return nil, err } return encryptNode(dir, key) } // encryptNode returns the encrypted version of node if key is not nil. func encryptNode(n *dag.ProtoNode, key []byte) (*dag.ProtoNode, error) { if key == nil { return n, nil } cipher, err := encryptData(n.RawData(), nil, key) if err != nil { return nil, err } en := dag.NodeWithData(unixfs.FilePBData(cipher, uint64(len(cipher)))) en.SetCidBuilder(dag.V1CidPrefix()) return en, nil } // newDirFromExistingPath returns a new dir based on path. // If keys are not nil, this method recursively walks the path, encrypting files and directories. // If add is not nil, it will be included in the resulting (possibly encrypted) node under a link named addName. // This method returns the root node and a list of all new nodes (which also includes the root). func (s *Service) newDirFromExistingPath( ctx context.Context, pth path.Path, destPath string, linkKey, fileKey []byte, add ipld.Node, addName string, ) (ipld.Node, []ipld.Node, error) { rn, err := s.IPFSClient.ResolveNode(ctx, pth) if err != nil { return nil, nil, err } top, ok := rn.(*dag.ProtoNode) if !ok { return nil, nil, dag.ErrNotProtobuf } if linkKey == nil && fileKey == nil { nodes := []ipld.Node{top} if add != nil { if err := top.AddNodeLink(addName, add); err != nil { return nil, nil, err } nodes = append(nodes, add) } return top, nodes, nil } else if linkKey == nil || fileKey == nil { return nil, nil, fmt.Errorf("invalid link or file key") } // Walk the node, encrypting the leaves and directories var addNode *namedNode if add != nil { addNode = &namedNode{ name: addName, node: add, } } nmap, err := s.encryptDag( ctx, top, destPath, linkKey, nil, nil, fileKey, addNode, ) if err != nil { return nil, nil, err } // Collect new nodes nodes := make([]ipld.Node, len(nmap)) i := 0 for _, tn := range nmap { nodes[i] = tn.node i++ } return nmap[top.Cid()].node, nodes, nil } type namedNode struct { name string path string node ipld.Node cid cid.Cid } type namedNodes struct { sync.RWMutex m map[cid.Cid]*namedNode } func newNamedNodes() *namedNodes { return &namedNodes{ m: make(map[cid.Cid]*namedNode), } } func (nn *namedNodes) Get(c cid.Cid) *namedNode { nn.RLock() defer nn.RUnlock() return nn.m[c] } func (nn *namedNodes) Store(c cid.Cid, n *namedNode) { nn.Lock() defer nn.Unlock() nn.m[c] = n } // encryptDag creates an encrypted version of root that includes all child nodes. // Leaf nodes are encrypted and linked to parents, which are then encrypted and // linked to their parents, and so on up to root. // add will be added to the encrypted root node if not nil. // This method returns a map of all nodes keyed by their _original_ plaintext cid, // and a list of the root's direct links. func (s *Service) encryptDag( ctx context.Context, root ipld.Node, destPath string, linkKey []byte, currentFileKeys, newFileKeys map[string][]byte, newFileKey []byte, add *namedNode, ) (map[cid.Cid]*namedNode, error) { // Step 1: Create a preordered list of joint and leaf nodes var stack, joints []*namedNode var cur *namedNode jmap := make(map[cid.Cid]*namedNode) lmap := make(map[cid.Cid]*namedNode) ds := s.IPFSClient.Dag() stack = append(stack, &namedNode{node: root, path: destPath}) for len(stack) > 0 { n := len(stack) - 1 cur = stack[n] stack = stack[:n] if _, ok := jmap[cur.node.Cid()]; ok { continue } if _, ok := lmap[cur.node.Cid()]; ok { continue } types: switch cur.node.(type) { case *dag.RawNode: lmap[cur.node.Cid()] = cur case *dag.ProtoNode: // Add links to the stack cur.cid = cur.node.Cid() if currentFileKeys != nil { var err error cur.node, _, err = decryptNode(cur.node, linkKey) if err != nil { return nil, err } } for _, l := range cur.node.Links() { if l.Name == "" { // We have discovered a raw file node wrapper // Use the original cur node because file node wrappers aren't encrypted lmap[cur.cid] = cur break types } ln, err := l.GetNode(ctx, ds) if err != nil { return nil, err } stack = append(stack, &namedNode{ name: l.Name, path: gopath.Join(cur.path, l.Name), node: ln, }) } joints = append(joints, cur) jmap[cur.cid] = cur default: return nil, errInvalidNodeType } } // Step 2: Encrypt all leaf nodes in parallel nmap := newNamedNodes() eg, gctx := errgroup.WithContext(ctx) for _, l := range lmap { l := l cfk := getFileKey(nil, currentFileKeys, l.path) nfk := getFileKey(newFileKey, newFileKeys, l.path) if nfk == nil { // This shouldn't happen return nil, fmt.Errorf("new file key not found for path %s", l.path) } eg.Go(func() error { if gctx.Err() != nil { return nil } var cn ipld.Node switch l.node.(type) { case *dag.RawNode: data, err := encryptData(l.node.RawData(), cfk, nfk) if err != nil { return err } cn = dag.NewRawNode(data) case *dag.ProtoNode: var err error cn, err = s.encryptFileNode(gctx, l.node, cfk, nfk) if err != nil { return err } } nmap.Store(l.node.Cid(), &namedNode{ name: l.name, node: cn, }) return nil }) } if err := eg.Wait(); err != nil { return nil, err } // Step 3: Encrypt joint nodes in reverse, walking up to root // Note: In the case where we're re-encrypting a dag, joints will already be decrypted. for i := len(joints) - 1; i >= 0; i-- { j := joints[i] jn := j.node.(*dag.ProtoNode) dir := unixfs.EmptyDirNode() dir.SetCidBuilder(dag.V1CidPrefix()) for _, l := range jn.Links() { ln := nmap.Get(l.Cid) if ln == nil { return nil, fmt.Errorf("link node not found") } if err := dir.AddNodeLink(ln.name, ln.node); err != nil { return nil, err } } if i == 0 && add != nil { if err := dir.AddNodeLink(add.name, add.node); err != nil { return nil, err } nmap.Store(add.node.Cid(), add) } cn, err := encryptNode(dir, linkKey) if err != nil { return nil, err } nmap.Store(j.cid, &namedNode{ name: j.name, node: cn, }) } return nmap.m, nil } func getFileKey(key []byte, pathKeys map[string][]byte, pth string) []byte { if pathKeys == nil { return key } k, ok := pathKeys[pth] if ok { return k } return key } // encryptFileNode encrypts node with the new key, decrypting with current key if needed. func (s *Service) encryptFileNode(ctx context.Context, n ipld.Node, currentKey, newKey []byte) (ipld.Node, error) { fn, err := s.IPFSClient.Unixfs().Get(ctx, path.IpfsPath(n.Cid())) if err != nil { return nil, err } defer fn.Close() file := ipfsfiles.ToFile(fn) if file == nil { return nil, fmt.Errorf("node is a directory") } var r1 io.Reader if currentKey != nil { r1, err = dcrypto.NewDecrypter(file, currentKey) if err != nil { return nil, err } } else { r1 = file } r2, err := dcrypto.NewEncrypter(r1, newKey) if err != nil { return nil, err } pth, err := s.IPFSClient.Unixfs().Add( ctx, ipfsfiles.NewReaderFile(r2), options.Unixfs.CidVersion(1), options.Unixfs.Pin(false), ) if err != nil { return nil, err } return s.IPFSClient.ResolveNode(ctx, pth) } func (s *Service) Root(ctx context.Context, req *pb.RootRequest) (*pb.RootResponse, error) { log.Debugf("received root request") dbID, ok := common.ThreadIDFromContext(ctx) if !ok { return nil, errDBRequired } dbToken, _ := thread.TokenFromContext(ctx) buck := &tdb.Bucket{} err := s.Buckets.GetSafe(ctx, dbID, req.Key, buck, tdb.WithToken(dbToken)) if err != nil { return nil, err } root, err := getPbRoot(dbID, buck) if err != nil { return nil, err } return &pb.RootResponse{ Root: root, }, nil } func (s *Service) Links(ctx context.Context, req *pb.LinksRequest) (*pb.LinksResponse, error) { log.Debugf("received lists request") dbID, ok := common.ThreadIDFromContext(ctx) if !ok { return nil, errDBRequired } dbToken, _ := thread.TokenFromContext(ctx) buck := &tdb.Bucket{} err := s.Buckets.GetSafe(ctx, dbID, req.Key, buck, tdb.WithToken(dbToken)) if err != nil { return nil, err } return s.createLinks(ctx, dbID, buck, cleanPath(req.Path), dbToken) } func (s *Service) createLinks( ctx context.Context, dbID thread.ID, buck *tdb.Bucket, pth string, dbToken thread.Token, ) (*pb.LinksResponse, error) { var threadLink, wwwLink, ipnsLink string threadLink = fmt.Sprintf("%s/thread/%s/%s/%s", s.GatewayURL, dbID, buckets.CollectionName, buck.Key) if s.GatewayBucketsHost != "" { parts := strings.Split(s.GatewayURL, "://") if len(parts) < 2 { return nil, fmt.Errorf("failed to parse gateway URL: %s", s.GatewayURL) } wwwLink = fmt.Sprintf("%s://%s.%s", parts[0], buck.Key, s.GatewayBucketsHost) } ipnsLink = fmt.Sprintf("%s/ipns/%s", s.GatewayURL, buck.Key) if _, _, ok := buck.GetMetadataForPath(pth, false); !ok { return nil, fmt.Errorf("could not resolve path: %s", pth) } if pth != "" { npth, err := inflateFilePath(buck, pth) if err != nil { return nil, err } linkKey := buck.GetLinkEncryptionKey() if _, err := s.getNodeAtPath(ctx, npth, linkKey); err != nil { return nil, err } pth = "/" + pth threadLink += pth if wwwLink != "" { wwwLink += pth } ipnsLink += pth } if buck.IsPrivate() { query := "?token=" + string(dbToken) threadLink += query if wwwLink != "" { wwwLink += query } ipnsLink += query } return &pb.LinksResponse{ Url: threadLink, Www: wwwLink, Ipns: ipnsLink, }, nil } // MovePath moves source path to destination path and cleans up afterward func (s *Service) MovePath(ctx context.Context, req *pb.MovePathRequest) (res *pb.MovePathResponse, err error) { log.Debugf("received move path request") dbID, ok := common.ThreadIDFromContext(ctx) if !ok { return nil, errDBRequired } dbToken, _ := thread.TokenFromContext(ctx) fromPth, err := parsePath(req.FromPath) if err != nil { return nil, err } toPth, err := parsePath(req.ToPath) if err != nil { return nil, err } // TODO: enable move of root directory // Can't move root directory if fromPth == "" { return nil, fmt.Errorf("source is root directory") } // Paths are the same, return if fromPth == toPth { return &pb.MovePathResponse{}, nil } // Lock bucket for the rest of transformations lck := s.Semaphores.Get(buckLock(req.Key)) lck.Acquire() defer lck.Release() buck, pth, err := s.getBucketPath(ctx, dbID, req.Key, fromPth, dbToken) if err != nil { return nil, fmt.Errorf("getting path: %v", err) } buck.UpdatedAt = time.Now().UnixNano() buck.SetMetadataAtPath(toPth, tdb.Metadata{ UpdatedAt: buck.UpdatedAt, }) buck.UnsetMetadataWithPrefix(fromPth + "/") if err = s.Buckets.Verify(ctx, dbID, buck, tdb.WithToken(dbToken)); err != nil { return nil, fmt.Errorf("verifying bucket update: %v", err) } fromNodePath, err := inflateFilePath(buck, fromPth) if err != nil { return nil, err } fromItem, err := s.pathToItem(ctx, buck, fromNodePath, false) if err != nil { return nil, err } toNodePath, err := inflateFilePath(buck, toPth) if err != nil { return nil, err } toItem, err := s.pathToItem(ctx, buck, toNodePath, false) if err == nil { if fromItem.IsDir && !toItem.IsDir { return nil, fmt.Errorf("not a directory") } if toItem.IsDir { // from => to becomes cleanDst: // "c" => "b" becomes "b/c" // "a.jpg" => "b" becomes "b/a.jpg" toPth = gopath.Join(toPth, fromItem.Name) } } // bucket node buckNode, err := s.getNodeAtPath(ctx, pth, buck.GetLinkEncryptionKey()) if err != nil { return nil, fmt.Errorf("getting node: %v", err) } var dirPath path.Resolved // Private buckets need to manage keys+encrypted nodes if buck.IsPrivate() { ctx, dirPath, err = s.copyNode(ctx, buck, buckNode, fromPth, toPth) if err != nil { return nil, fmt.Errorf("copying node: %v", err) } } else { buckPath := path.New(buck.Path) ctx, dirPath, err = s.setPathFromExistingCid( ctx, buck, buckPath, toPth, buckNode.Cid(), nil, nil, ) if err != nil { return nil, fmt.Errorf("copying path: %v", err) } } buck.Path = dirPath.String() // If "a/b" => "a/", cleanup only needed for priv if strings.HasPrefix(fromPth, toPth) { if buck.IsPrivate() { ctx, dirPath, err = s.removePath(ctx, buck, fromPth) if err != nil { return nil, fmt.Errorf("cleaning path: %v", err) } buck.Path = dirPath.String() } if err = s.saveAndPublish(ctx, dbID, dbToken, buck); err != nil { return nil, err } return &pb.MovePathResponse{}, nil } if strings.HasPrefix(toPth, fromPth) { // If "a/" => "a/b" cleanup each leaf in "a" that isn't "b" (skipping .textileseed) ppth := path.Join(path.New(buck.Path), fromPth) item, err := s.listPath(ctx, dbID, buck, ppth) if err != nil { return nil, fmt.Errorf("listing path: %v", err) } reg := regexp.MustCompile("/ipfs/([^/]+)/") for _, chld := range item.Item.Items { sp := cleanPath(reg.ReplaceAllString(chld.Path, "")) if strings.Compare(chld.Name, buckets.SeedName) == 0 || sp == toPth { continue } spClean := cleanPath(sp) ctx, dirPath, err = s.removePath(ctx, buck, spClean) if err != nil { return nil, fmt.Errorf("cleaning path: %v", err) } buck.Path = dirPath.String() } } else { // if a/ => b/ remove a ctx, dirPath, err = s.removePath(ctx, buck, fromPth) if err != nil { return nil, fmt.Errorf("removing path: %v", err) } buck.Path = dirPath.String() } if err = s.saveAndPublish(ctx, dbID, dbToken, buck); err != nil { return nil, err } return &pb.MovePathResponse{}, nil } func (s *Service) copyNode( ctx context.Context, buck *tdb.Bucket, rootNode ipld.Node, fromPath string, toPath string, ) (context.Context, path.Resolved, error) { fileKey, err := buck.GetFileEncryptionKeyForPath(toPath) if err != nil { return ctx, nil, err } currentFileKeys, err := buck.GetFileEncryptionKeysForPrefix(fromPath) if err != nil { return ctx, nil, err } newFileKeys, err := buck.GetFileEncryptionKeysForPrefix(toPath) if err != nil { return ctx, nil, err } nmap, err := s.encryptDag( ctx, rootNode, fromPath, buck.GetLinkEncryptionKey(), currentFileKeys, newFileKeys, fileKey, nil, ) if err != nil { return ctx, nil, err } nodes := make([]ipld.Node, len(nmap)) i := 0 for _, tn := range nmap { nodes[i] = tn.node i++ } pn := nmap[rootNode.Cid()].node ctx, dirPath, err := s.insertNodeAtPath( ctx, pn, path.Join(path.New(buck.Path), toPath), buck.GetLinkEncryptionKey(), ) if err != nil { return ctx, nil, fmt.Errorf("inserting at path: %v", err) } // If updating root, add seedfile back to node. if toPath == "" { sn, err := makeSeed(fileKey) ctx, dirPath, err = s.insertNodeAtPath( ctx, sn, path.Join(dirPath, buckets.SeedName), buck.GetLinkEncryptionKey(), ) if err != nil { return ctx, nil, fmt.Errorf("replacing seedfile: %v", err) } nodes = append(nodes, sn) } ctx, err = s.addAndPinNodes(ctx, nodes) if err != nil { return ctx, nil, err } return ctx, dirPath, nil } func (s *Service) saveAndPublish(ctx context.Context, dbID thread.ID, dbToken thread.Token, buck *tdb.Bucket) error { if err := s.Buckets.Save(ctx, dbID, buck, tdb.WithToken(dbToken)); err != nil { return fmt.Errorf("saving bucket: %v", err) } go s.IPNSManager.Publish(path.New(buck.Path), buck.Key) return nil } func (s *Service) SetPath(ctx context.Context, req *pb.SetPathRequest) (res *pb.SetPathResponse, err error) { log.Debugf("received set path request") dbID, ok := common.ThreadIDFromContext(ctx) if !ok { return nil, errDBRequired } dbToken, _ := thread.TokenFromContext(ctx) destPath := cleanPath(req.Path) bootCid, err := cid.Decode(req.Cid) if err != nil { return nil, fmt.Errorf("invalid remote cid: %v", err) } lck := s.Semaphores.Get(buckLock(req.Key)) lck.Acquire() defer lck.Release() buck := &tdb.Bucket{} if err = s.Buckets.GetSafe(ctx, dbID, req.Key, buck, tdb.WithToken(dbToken)); err != nil { return nil, fmt.Errorf("get bucket: %v", err) } buck.UpdatedAt = time.Now().UnixNano() buck.SetMetadataAtPath(destPath, tdb.Metadata{ UpdatedAt: buck.UpdatedAt, }) buck.UnsetMetadataWithPrefix(destPath + "/") if err = s.Buckets.Verify(ctx, dbID, buck, tdb.WithToken(dbToken)); err != nil { return nil, err } var linkKey, fileKey []byte if buck.IsPrivate() { linkKey = buck.GetLinkEncryptionKey() fileKey, err = buck.GetFileEncryptionKeyForPath(destPath) if err != nil { return nil, err } } buckPath := path.New(buck.Path) ctx, dirPath, err := s.setPathFromExistingCid(ctx, buck, buckPath, destPath, bootCid, linkKey, fileKey) if err != nil { return nil, err } buck.Path = dirPath.String() if err = s.Buckets.Save(ctx, dbID, buck, tdb.WithToken(dbToken)); err != nil { return nil, err } return &pb.SetPathResponse{ Pinned: s.getPinnedBytes(ctx), }, nil } // setPathFromExistingCid sets the path with a cid from the network, encrypting with file key if present. func (s *Service) setPathFromExistingCid( ctx context.Context, buck *tdb.Bucket, buckPath path.Path, destPath string, bootCid cid.Cid, linkKey, fileKey []byte, ) (context.Context, path.Resolved, error) { var dirPath path.Resolved if destPath == "" { sn, err := makeSeed(fileKey) if err != nil { return ctx, nil, fmt.Errorf("generating new seed: %v", err) } ctx, dirPath, err = s.createBootstrappedPath(ctx, destPath, sn, bootCid, linkKey, fileKey) if err != nil { return ctx, nil, fmt.Errorf("generating bucket new root: %v", err) } if buck.IsPrivate() { buckPathResolved, err := s.IPFSClient.ResolvePath(ctx, buckPath) if err != nil { return ctx, nil, fmt.Errorf("resolving path: %v", err) } ctx, err = s.unpinNodeAndBranch(ctx, buckPathResolved, linkKey) if err != nil { return ctx, nil, fmt.Errorf("unpinning pinned root: %v", err) } } else { ctx, err = s.unpinPath(ctx, buckPath) if err != nil { return ctx, nil, fmt.Errorf("updating pinned root: %v", err) } } } else { bootPath := path.IpfsPath(bootCid) if buck.IsPrivate() { n, nodes, err := s.newDirFromExistingPath(ctx, bootPath, destPath, linkKey, fileKey, nil, "") if err != nil { return ctx, nil, fmt.Errorf("resolving remote path: %v", err) } ctx, dirPath, err = s.insertNodeAtPath(ctx, n, path.Join(buckPath, destPath), linkKey) if err != nil { return ctx, nil, fmt.Errorf("updating pinned root: %v", err) } ctx, err = s.addAndPinNodes(ctx, nodes) if err != nil { return ctx, nil, err } } else { var err error dirPath, err = s.IPFSClient.Object().AddLink( ctx, buckPath, destPath, bootPath, options.Object.Create(true), ) if err != nil { return ctx, nil, fmt.Errorf("adding folder: %v", err) } ctx, err = s.updateOrAddPin(ctx, buckPath, dirPath) if err != nil { return ctx, nil, fmt.Errorf("updating pinned root: %v", err) } } } return ctx, dirPath, nil } // unpinPath unpins path and accounts for sum bytes pinned for context. func (s *Service) unpinPath(ctx context.Context, path path.Path) (context.Context, error) { if err := s.IPFSClient.Pin().Rm(ctx, path); err != nil { return ctx, err } size, err := s.dagSize(ctx, path) if err != nil { return ctx, fmt.Errorf("getting size of removed node: %v", err) } // Check context owner's storage allowance owner, ok := buckets.BucketOwnerFromContext(ctx) if ok { log.Debugf("unpinPath: storage: %d used, %d available, %d requested", owner.StorageUsed, owner.StorageAvailable, -size) } return s.addPinnedBytes(ctx, -size), nil } // addAndPinNodes adds and pins nodes, accounting for sum bytes pinned for context. func (s *Service) addAndPinNodes(ctx context.Context, nodes []ipld.Node) (context.Context, error) { if err := s.IPFSClient.Dag().AddMany(ctx, nodes); err != nil { return ctx, err } return s.pinBlocks(ctx, nodes) } func (s *Service) ListPath(ctx context.Context, req *pb.ListPathRequest) (*pb.ListPathResponse, error) { log.Debugf("received list path request") dbID, ok := common.ThreadIDFromContext(ctx) if !ok { return nil, errDBRequired } dbToken, _ := thread.TokenFromContext(ctx) reqPath := cleanPath(req.Path) buck, pth, err := s.getBucketPath(ctx, dbID, req.Key, reqPath, dbToken) if err != nil { return nil, err } return s.listPath(ctx, dbID, buck, pth) } func (s *Service) listPath( ctx context.Context, dbID thread.ID, buck *tdb.Bucket, pth path.Path, ) (*pb.ListPathResponse, error) { rep, err := s.pathToPb(ctx, dbID, buck, pth, true) if err != nil { return nil, err } if pth.String() == buck.Path { rep.Item.Name = buck.Name } return rep, nil } func (s *Service) ListIpfsPath(ctx context.Context, req *pb.ListIpfsPathRequest) (*pb.ListIpfsPathResponse, error) { log.Debugf("received list ipfs path request") pth := path.New(req.Path) item, err := s.pathToItem(ctx, nil, pth, true) if err != nil { return nil, err } return &pb.ListIpfsPathResponse{Item: item}, nil } // pathToItem returns items at path, optionally including one level down of links. // If key is not nil, the items will be decrypted. func (s *Service) pathToItem( ctx context.Context, buck *tdb.Bucket, pth path.Path, includeNextLevel bool, ) (*pb.PathItem, error) { var linkKey []byte if buck != nil { linkKey = buck.GetLinkEncryptionKey() } n, err := s.getNodeAtPath(ctx, pth, linkKey) if err != nil { return nil, err } return s.nodeToItem(ctx, buck, n, pth.String(), linkKey, false, includeNextLevel) } // getNodeAtPath returns the node at path by traversing and potentially decrypting parent nodes. func (s *Service) getNodeAtPath(ctx context.Context, pth path.Path, key []byte) (ipld.Node, error) { if key != nil { rp, fp, err := util.ParsePath(pth) if err != nil { return nil, err } np, _, r, err := s.getNodesToPath(ctx, rp, fp, key) if err != nil { return nil, err } if r != "" { return nil, fmt.Errorf("could not resolve path: %s", pth) } return np[len(np)-1].new, nil } else { rp, err := s.IPFSClient.ResolvePath(ctx, pth) if err != nil { return nil, err } return s.IPFSClient.Dag().Get(ctx, rp.Cid()) } } // resolveNodeAtPath returns the decrypted node at path and whether or not it is a directory. func (s *Service) resolveNodeAtPath(ctx context.Context, pth path.Resolved, key []byte) (ipld.Node, bool, error) { cn, err := s.IPFSClient.ResolveNode(ctx, pth) if err != nil { return nil, false, err } return decryptNode(cn, key) } // decryptNode returns a decrypted version of node and whether or not it is a directory. func decryptNode(cn ipld.Node, key []byte) (ipld.Node, bool, error) { switch cn := cn.(type) { case *dag.RawNode: return cn, false, nil // All raw nodes will be leaves case *dag.ProtoNode: if key == nil { return cn, false, nil // Could be a joint, but it's not important to know in the public case } fn, err := unixfs.FSNodeFromBytes(cn.Data()) if err != nil { return nil, false, err } if fn.Data() == nil { return cn, false, nil // This node is a raw file wrapper } plain, err := decryptData(fn.Data(), key) if err != nil { return nil, false, err } n, err := dag.DecodeProtobuf(plain) if err != nil { return dag.NewRawNode(plain), false, nil } n.SetCidBuilder(dag.V1CidPrefix()) return n, true, nil default: return nil, false, errInvalidNodeType } } // decryptData decrypts data with key. func decryptData(data, key []byte) ([]byte, error) { r, err := dcrypto.NewDecrypter(bytes.NewReader(data), key) if err != nil { return nil, err } defer r.Close() return ioutil.ReadAll(r) } // nodeToItem returns a path item from an IPLD node. func (s *Service) nodeToItem( ctx context.Context, buck *tdb.Bucket, node ipld.Node, pth string, key []byte, decrypt, includeNextLevel bool, ) (*pb.PathItem, error) { if decrypt && key != nil { var err error node, _, err = decryptNode(node, key) if err != nil { return nil, err } } var pmd *pb.Metadata if buck != nil { name := cleanPath(strings.TrimPrefix(pth, buck.Path)) md, _, ok := buck.GetMetadataForPath(name, false) if !ok { return nil, fmt.Errorf("could not resolve path: %s", pth) } var err error pmd, err = metadataToPb(md) if err != nil { return nil, err } } stat, err := node.Stat() if err != nil { return nil, err } item := &pb.PathItem{ Cid: node.Cid().String(), Name: gopath.Base(pth), Path: pth, Size: int64(stat.CumulativeSize), Metadata: pmd, } if pn, ok := node.(*dag.ProtoNode); ok { fn, _ := unixfs.FSNodeFromBytes(pn.Data()) if fn != nil && fn.IsDir() { item.IsDir = true } } if item.IsDir { for _, l := range node.Links() { if l.Name == "" { break } if includeNextLevel { p := gopath.Join(pth, l.Name) n, err := l.GetNode(ctx, s.IPFSClient.Dag()) if err != nil { return nil, err } i, err := s.nodeToItem(ctx, buck, n, p, key, true, false) if err != nil { return nil, err } item.Items = append(item.Items, i) } item.ItemsCount++ } } return item, nil } func parsePath(pth string) (fpth string, err error) { if strings.Contains(pth, buckets.SeedName) { err = fmt.Errorf("paths containing %s are not allowed", buckets.SeedName) return } return cleanPath(pth), nil } func (s *Service) getBucketPath( ctx context.Context, dbID thread.ID, key, pth string, token thread.Token, ) (*tdb.Bucket, path.Path, error) { buck := &tdb.Bucket{} err := s.Buckets.GetSafe(ctx, dbID, key, buck, tdb.WithToken(token)) if err != nil { return nil, nil, err } npth, err := inflateFilePath(buck, pth) return buck, npth, err } func cleanPath(pth string) string { return strings.TrimPrefix(pth, "/") } func inflateFilePath(buck *tdb.Bucket, filePath string) (path.Path, error) { npth := path.New(gopath.Join(buck.Path, filePath)) if err := npth.IsValid(); err != nil { return nil, err } return npth, nil } func (s *Service) pathToPb( ctx context.Context, id thread.ID, buck *tdb.Bucket, pth path.Path, includeNextLevel bool, ) (*pb.ListPathResponse, error) { item, err := s.pathToItem(ctx, buck, pth, includeNextLevel) if err != nil { return nil, err } root, err := getPbRoot(id, buck) if err != nil { return nil, err } return &pb.ListPathResponse{ Item: item, Root: root, }, nil } func (s *Service) PushPath(server pb.APIService_PushPathServer) (err error) { log.Debugf("received push path request") dbID, ok := common.ThreadIDFromContext(server.Context()) if !ok { return errDBRequired } dbToken, _ := thread.TokenFromContext(server.Context()) req, err := server.Recv() if err == io.EOF { return nil } else if err != nil { return err } var buckKey, headerPath, root string switch payload := req.Payload.(type) { case *pb.PushPathRequest_Header_: buckKey = payload.Header.Key headerPath = payload.Header.Path root = payload.Header.Root default: return fmt.Errorf("push bucket path header is required") } filePath, err := parsePath(headerPath) if err != nil { return err } lck := s.Semaphores.Get(buckLock(buckKey)) lck.Acquire() defer lck.Release() buck := &tdb.Bucket{} err = s.Buckets.GetSafe(server.Context(), dbID, buckKey, buck, tdb.WithToken(dbToken)) if err != nil { return err } if root != "" && root != buck.Path { return status.Error(codes.FailedPrecondition, buckets.ErrNonFastForward.Error()) } buck.UpdatedAt = time.Now().UnixNano() buck.SetMetadataAtPath(filePath, tdb.Metadata{ UpdatedAt: buck.UpdatedAt, }) buck.UnsetMetadataWithPrefix(filePath + "/") if err = s.Buckets.Verify(server.Context(), dbID, buck, tdb.WithToken(dbToken)); err != nil { return err } fileKey, err := buck.GetFileEncryptionKeyForPath(filePath) if err != nil { return err } reader, writer := io.Pipe() var writerErr error assignErr := func(err error) { writerErr = err _ = writer.CloseWithError(err) } go func() { for { req, err := server.Recv() if err == io.EOF { _ = writer.Close() return } else if err != nil { assignErr(fmt.Errorf("error on receive: %v", err)) return } switch payload := req.Payload.(type) { case *pb.PushPathRequest_Chunk: if _, err := writer.Write(payload.Chunk); err != nil { assignErr(fmt.Errorf("error writing chunk: %v", err)) return } default: assignErr(fmt.Errorf("invalid request")) return } } }() eventCh := make(chan interface{}) defer close(eventCh) chSize := make(chan string) go func() { for e := range eventCh { event, ok := e.(*iface.AddEvent) if !ok { log.Error("unexpected event type") continue } if event.Path == nil { // This is a progress event if err := server.Send(&pb.PushPathResponse{ Event: &pb.PushPathResponse_Event{ Name: event.Name, Bytes: event.Bytes, }, }); err != nil { log.Errorf("error sending event: %v", err) } } else { chSize <- event.Size // Save size for use in the final response } } }() var r io.Reader if fileKey != nil { r, err = dcrypto.NewEncrypter(reader, fileKey) if err != nil { return err } } else { r = reader } newPath, err := s.IPFSClient.Unixfs().Add( server.Context(), ipfsfiles.NewReaderFile(r), options.Unixfs.CidVersion(1), options.Unixfs.Pin(false), options.Unixfs.Progress(true), options.Unixfs.Events(eventCh), ) if writerErr != nil { return writerErr } if err != nil { return err } fn, err := s.IPFSClient.ResolveNode(server.Context(), newPath) if err != nil { return err } ctx := server.Context() buckPath := path.New(buck.Path) var dirPath path.Resolved if buck.IsPrivate() { ctx, dirPath, err = s.insertNodeAtPath(ctx, fn, path.Join(buckPath, filePath), buck.GetLinkEncryptionKey()) if err != nil { return err } } else { dirPath, err = s.IPFSClient.Object().AddLink( ctx, buckPath, filePath, newPath, options.Object.Create(true), ) if err != nil { return err } ctx, err = s.updateOrAddPin(ctx, buckPath, dirPath) if err != nil { return err } } buck.Path = dirPath.String() if err = s.Buckets.Save(ctx, dbID, buck, tdb.WithToken(dbToken)); err != nil { return err } size := <-chSize pbroot, err := getPbRoot(dbID, buck) if err != nil { return err } if err = server.Send(&pb.PushPathResponse{ Event: &pb.PushPathResponse_Event{ Path: newPath.String(), Size: size, Root: pbroot, Pinned: s.getPinnedBytes(ctx), }, }); err != nil { return err } go s.IPNSManager.Publish(dirPath, buck.Key) log.Debugf("pushed %s to bucket: %s", filePath, buck.Key) return nil } type fileAdder struct { reader io.ReadCloser writer io.WriteCloser } type addedFile struct { path string resolved path.Resolved size int64 } type fileQueue struct { q map[string]*fileAdder lock sync.Mutex } func newFileQueue() *fileQueue { return &fileQueue{q: make(map[string]*fileAdder)} } func (q *fileQueue) add( ctx context.Context, ufs iface.UnixfsAPI, pth string, addFunc func() ([]byte, error), doneCh chan<- addedFile, errCh chan<- error, ) (*fileAdder, error) { q.lock.Lock() defer q.lock.Unlock() fa, ok := q.q[pth] if ok { return fa, nil } key, err := addFunc() if err != nil { return nil, err } reader, writer := io.Pipe() fa = &fileAdder{ reader: reader, writer: writer, } q.q[pth] = fa eventCh := make(chan interface{}) chSize := make(chan string) go func() { for e := range eventCh { event, ok := e.(*iface.AddEvent) if !ok { log.Error("unexpected event type") continue } if event.Path != nil { chSize <- event.Size // Save size for use in the final response } } }() var r io.Reader if key != nil { r, err = dcrypto.NewEncrypter(reader, key) if err != nil { return nil, fmt.Errorf("creating decrypter: %v", err) } } else { r = reader } go func() { defer close(eventCh) res, err := ufs.Add( ctx, ipfsfiles.NewReaderFile(r), options.Unixfs.CidVersion(1), options.Unixfs.Pin(false), options.Unixfs.Progress(true), options.Unixfs.Events(eventCh), ) if err != nil { errCh <- fmt.Errorf("adding file: %v", err) return } size := <-chSize added, err := strconv.Atoi(size) if err != nil { errCh <- fmt.Errorf("getting file size: %v", err) return } doneCh <- addedFile{path: pth, resolved: res, size: int64(added)} }() return fa, nil } func (s *Service) PushPaths(server pb.APIService_PushPathsServer) error { log.Debugf("received push paths request") ctx, cancel := context.WithCancel(server.Context()) defer cancel() dbID, ok := common.ThreadIDFromContext(ctx) if !ok { return errDBRequired } dbToken, _ := thread.TokenFromContext(ctx) req, err := server.Recv() if err == io.EOF { return nil } else if err != nil { return fmt.Errorf("on receive: %v", err) } var buckKey, buckRoot string var buckPaths []string switch payload := req.Payload.(type) { case *pb.PushPathsRequest_Header_: buckKey = payload.Header.Key buckRoot = payload.Header.Root buckPaths = payload.Header.Paths default: return fmt.Errorf("push bucket path header is required") } lck := s.Semaphores.Get(buckLock(buckKey)) lck.Acquire() defer lck.Release() buck := &tdb.Bucket{} if err := s.Buckets.GetSafe(ctx, dbID, buckKey, buck, tdb.WithToken(dbToken)); err != nil { return fmt.Errorf("getting bucket: %v", err) } if buckRoot != "" && buckRoot != buck.Path { return status.Error(codes.FailedPrecondition, buckets.ErrNonFastForward.Error()) } readOnlyBuck := buck.Copy() preVerified := make(map[string]struct{}) if len(buckPaths) > 0 { readOnlyBuck.UpdatedAt = time.Now().UnixNano() for _, p := range buckPaths { readOnlyBuck.SetMetadataAtPath(p, tdb.Metadata{ UpdatedAt: readOnlyBuck.UpdatedAt, }) readOnlyBuck.UnsetMetadataWithPrefix(p + "/") preVerified[p] = struct{}{} } if err := s.Buckets.Verify(ctx, dbID, readOnlyBuck, tdb.WithToken(dbToken)); err != nil { return status.Error(codes.PermissionDenied, fmt.Sprintf("verifying bucket update: %v", err)) } } var wg sync.WaitGroup var ctxLock, verifiedLock sync.RWMutex addedCh := make(chan addedFile) doneCh := make(chan struct{}) errCh := make(chan error) go func() { queue := newFileQueue() for { req, err := server.Recv() if err == io.EOF { wg.Wait() // Request ended normally, wait for pending jobs close(doneCh) return } else if err != nil { errCh <- fmt.Errorf("on receive: %v", err) return } switch payload := req.Payload.(type) { case *pb.PushPathsRequest_Chunk_: pth, err := parsePath(payload.Chunk.Path) if err != nil { errCh <- fmt.Errorf("parsing path: %v", err) return } ctxLock.RLock() ctx := ctx ctxLock.RUnlock() fa, err := queue.add(ctx, s.IPFSClient.Unixfs(), pth, func() ([]byte, error) { wg.Add(1) // Support requests that don't send all paths for pre-verification (pre v2.6.11) verifiedLock.Lock() _, ok := preVerified[pth] verifiedLock.Unlock() if !ok { readOnlyBuck.UpdatedAt = time.Now().UnixNano() readOnlyBuck.SetMetadataAtPath(pth, tdb.Metadata{ UpdatedAt: readOnlyBuck.UpdatedAt, }) readOnlyBuck.UnsetMetadataWithPrefix(pth + "/") if err = s.Buckets.Verify(ctx, dbID, readOnlyBuck, tdb.WithToken(dbToken)); err != nil { return nil, fmt.Errorf("verifying bucket update: %v", err) } } key, err := readOnlyBuck.GetFileEncryptionKeyForPath(pth) if err != nil { return nil, fmt.Errorf("getting bucket key: %v", err) } return key, nil }, addedCh, errCh) if err != nil { errCh <- fmt.Errorf("enqueueing file: %v", err) return } if len(payload.Chunk.Data) > 0 { if _, err := fa.writer.Write(payload.Chunk.Data); err != nil { errCh <- fmt.Errorf("writing chunk: %v", err) return } } else { if err := fa.writer.Close(); err != nil { errCh <- fmt.Errorf("closing writer: %v", err) return } } default: errCh <- fmt.Errorf("invalid request") return } } }() var changed bool sctx := util.NewClonedContext(ctx) saveWithErr := func(err error) error { cancel() if !changed { return err } if serr := s.saveAndPublish(sctx, dbID, dbToken, buck); serr != nil { if err != nil { log.Errorf("bucket save error: %v", serr) return err } return serr } else { log.Debugf("saved bucket %s with path: %s", buck.Key, buck.Path) } return err } for { select { case res := <-addedCh: ctxLock.RLock() newCtx := ctx ctxLock.RUnlock() fn, err := s.IPFSClient.ResolveNode(newCtx, res.resolved) if err != nil { return saveWithErr(fmt.Errorf("resolving added node: %v", err)) } var dir path.Resolved if buck.IsPrivate() { newCtx, dir, err = s.insertNodeAtPath( newCtx, fn, path.Join(path.New(buck.Path), res.path), buck.GetLinkEncryptionKey(), ) if err != nil { return saveWithErr(fmt.Errorf("inserting added node: %v", err)) } } else { dir, err = s.IPFSClient.Object().AddLink( newCtx, path.New(buck.Path), res.path, res.resolved, options.Object.Create(true), ) if err != nil { return saveWithErr(fmt.Errorf("adding bucket link: %v", err)) } newCtx, err = s.updateOrAddPin(newCtx, path.New(buck.Path), dir) if err != nil { return saveWithErr(fmt.Errorf("updating bucket pin: %v", err)) } } buck.Path = dir.String() buck.UpdatedAt = time.Now().UnixNano() buck.SetMetadataAtPath(res.path, tdb.Metadata{ UpdatedAt: buck.UpdatedAt, }) buck.UnsetMetadataWithPrefix(res.path + "/") root, err := getPbRoot(dbID, buck) if err != nil { return saveWithErr(fmt.Errorf("preparing result: %v", err)) } if err := server.Send(&pb.PushPathsResponse{ Path: res.path, Cid: res.resolved.Cid().String(), Size: res.size, Pinned: s.getPinnedBytes(newCtx), Root: root, }); err != nil { return saveWithErr(fmt.Errorf("sending event: %v", err)) } ctxLock.Lock() ctx = newCtx ctxLock.Unlock() log.Debugf("pushed %s to bucket: %s", res.path, buck.Key) changed = true // Save is needed wg.Done() case <-doneCh: return saveWithErr(nil) case err := <-errCh: return saveWithErr(err) } } } func (s *Service) getBucketSize(ctx context.Context, buck *tdb.Bucket) (int64, error) { if !buck.IsPrivate() { return s.dagSize(ctx, path.New(buck.Path)) } else { // Walk the entire encrypted node using a stack var size int64 var stack []*namedNode var cur *namedNode jmap := make(map[cid.Cid]*namedNode) lmap := make(map[cid.Cid]*namedNode) linkKey := buck.GetLinkEncryptionKey() ds := s.IPFSClient.Dag() root, err := s.IPFSClient.ResolveNode(ctx, path.New(buck.Path)) if err != nil { return 0, err } stack = append(stack, &namedNode{node: root}) for len(stack) > 0 { n := len(stack) - 1 cur = stack[n] stack = stack[:n] if _, ok := jmap[cur.node.Cid()]; ok { continue } if _, ok := lmap[cur.node.Cid()]; ok { continue } types: switch cur.node.(type) { case *dag.RawNode: lmap[cur.node.Cid()] = cur case *dag.ProtoNode: // Add links to the stack cur.cid = cur.node.Cid() var err error cur.node, _, err = decryptNode(cur.node, linkKey) if err != nil { return 0, err } for _, l := range cur.node.Links() { if l.Name == "" { // We have discovered a raw file node wrapper // Use the original cur node because file node wrappers aren't encrypted lmap[cur.cid] = cur s, err := cur.node.Stat() if err != nil { return 0, err } // Include the size of all child nodes size += int64(s.CumulativeSize) break types } ln, err := l.GetNode(ctx, ds) if err != nil { return 0, err } stack = append(stack, &namedNode{ node: ln, }) } jmap[cur.cid] = cur s, err := cur.node.Stat() if err != nil { return 0, err } // Just get the block size size += int64(s.BlockSize) default: return 0, errInvalidNodeType } } return size, nil } } // insertNodeAtPath inserts a node at the location of path. // Key will be required if the path is encrypted. func (s *Service) insertNodeAtPath( ctx context.Context, child ipld.Node, pth path.Path, key []byte, ) (context.Context, path.Resolved, error) { // The first step here is find a resolvable list of nodes that point to path. rp, fp, err := util.ParsePath(pth) if err != nil { return ctx, nil, err } fd, fn := gopath.Split(fp) fd = strings.TrimSuffix(fd, "/") np, _, r, err := s.getNodesToPath(ctx, rp, fd, key) if err != nil { return ctx, nil, err } r = gopath.Join(r, fn) // If the remaining path segment is not empty, we need to create each one // starting at the other end and walking back up to the deepest node // in the node path. parts := strings.Split(r, "/") news := make([]ipld.Node, len(parts)-1) cn := child for i := len(parts) - 1; i > 0; i-- { n, err := newDirWithNode(cn, parts[i], key) if err != nil { return ctx, nil, err } news[i-1] = cn cn = n } np = append(np, pathNode{new: cn, name: parts[0], isJoint: true}) // Now, we have a full list of nodes to the insert location, // but the existing nodes need to be updated and re-encrypted. change := make([]ipld.Node, len(np)) for i := len(np) - 1; i >= 0; i-- { change[i] = np[i].new if i > 0 { p, ok := np[i-1].new.(*dag.ProtoNode) if !ok { return ctx, nil, dag.ErrNotProtobuf } if np[i].isJoint { xn, err := p.GetLinkedNode(ctx, s.IPFSClient.Dag(), np[i].name) if err != nil && !errors.Is(err, dag.ErrLinkNotFound) { return ctx, nil, err } if xn != nil { np[i].old = path.IpfsPath(xn.Cid()) if err := p.RemoveNodeLink(np[i].name); err != nil { return ctx, nil, err } } } else { xl, err := p.GetNodeLink(np[i].name) if err != nil && !errors.Is(err, dag.ErrLinkNotFound) { return ctx, nil, err } if xl != nil { if err := p.RemoveNodeLink(np[i].name); err != nil { return ctx, nil, err } } } if err := p.AddNodeLink(np[i].name, np[i].new); err != nil { return ctx, nil, err } np[i-1].new, err = encryptNode(p, key) if err != nil { return ctx, nil, err } } } // Add all the _new_ nodes, which is the sum of the brand new ones // from the missing path segment, and the changed ones from // the existing path. allNews := append(news, change...) if err := s.IPFSClient.Dag().AddMany(ctx, allNews); err != nil { return ctx, nil, err } // Pin brand new nodes ctx, err = s.pinBlocks(ctx, news) if err != nil { return ctx, nil, err } // Update changed node pins for _, n := range np { if n.old != nil && n.isJoint { ctx, err = s.unpinBranch(ctx, n.old, key) if err != nil { return ctx, nil, err } } ctx, err = s.updateOrAddPin(ctx, n.old, path.IpfsPath(n.new.Cid())) if err != nil { return ctx, nil, err } } return ctx, path.IpfsPath(np[0].new.Cid()), nil } // unpinBranch walks a the node at path, decrypting (if needed) and unpinning all nodes func (s *Service) unpinBranch(ctx context.Context, p path.Resolved, key []byte) (context.Context, error) { n, _, err := s.resolveNodeAtPath(ctx, p, key) if err != nil { return ctx, err } for _, l := range n.Links() { if l.Name == "" { continue // Data nodes will never be pinned directly } lp := path.IpfsPath(l.Cid) ctx, err = s.unpinPath(ctx, lp) if err != nil { return ctx, err } ctx, err = s.unpinBranch(ctx, lp, key) if err != nil { return ctx, err } } return ctx, nil } type pathNode struct { old path.Resolved new ipld.Node name string isJoint bool } // getNodesToPath returns a list of pathNodes that point to the path, // The remaining path segment that was not resolvable is also returned. func (s *Service) getNodesToPath( ctx context.Context, base path.Resolved, pth string, key []byte, ) (nodes []pathNode, isDir bool, remainder string, err error) { top, dir, err := s.resolveNodeAtPath(ctx, base, key) if err != nil { return } nodes = append(nodes, pathNode{old: base, new: top}) remainder = pth if remainder == "" { return } parts := strings.Split(pth, "/") for i := 0; i < len(parts); i++ { l := getLink(top.Links(), parts[i]) if l != nil { p := path.IpfsPath(l.Cid) top, dir, err = s.resolveNodeAtPath(ctx, p, key) if err != nil { return } nodes = append(nodes, pathNode{old: p, new: top, name: parts[i]}) } else { remainder = strings.Join(parts[i:], "/") return nodes, dir, remainder, nil } } return nodes, dir, "", nil } func getLink(lnks []*ipld.Link, name string) *ipld.Link { for _, l := range lnks { if l.Name == name { return l } } return nil } // updateOrAddPin moves the pin at from to to. // If from is nil, a new pin as placed at to. func (s *Service) updateOrAddPin(ctx context.Context, from, to path.Path) (context.Context, error) { toSize, err := s.dagSize(ctx, to) if err != nil { return ctx, fmt.Errorf("getting size of destination dag: %v", err) } fromSize, err := s.dagSize(ctx, from) if err != nil { return ctx, fmt.Errorf("getting size of current dag: %v", err) } deltaSize := -fromSize + toSize // Check context owner's storage allowance owner, ok := buckets.BucketOwnerFromContext(ctx) if ok { log.Debugf("updateOrAddPin: storage: %d used, %d available, %d requested", owner.StorageUsed, owner.StorageAvailable, deltaSize) } if ok && deltaSize > 0 && deltaSize > owner.StorageAvailable { return ctx, ErrStorageQuotaExhausted } if from == nil { if err := s.IPFSClient.Pin().Add(ctx, to); err != nil { return ctx, err } } else { if err := s.IPFSClient.Pin().Update(ctx, from, to); err != nil { if err.Error() == pinNotRecursiveMsg { return ctx, s.IPFSClient.Pin().Add(ctx, to) } else if err.Error() == pinAlreadyRecursiveMsg { return ctx, s.IPFSClient.Pin().Rm(ctx, from) } return ctx, err } } return s.addPinnedBytes(ctx, deltaSize), nil } // dagSize returns the cummulative size of root. If root is nil, it returns 0. func (s *Service) dagSize(ctx context.Context, root path.Path) (int64, error) { if root == nil { return 0, nil } stat, err := s.IPFSClient.Object().Stat(ctx, root) if err != nil { return 0, fmt.Errorf("getting dag size: %v", err) } return int64(stat.CumulativeSize), nil } func (s *Service) PullPath(req *pb.PullPathRequest, server pb.APIService_PullPathServer) error { log.Debugf("received pull path request") dbID, ok := common.ThreadIDFromContext(server.Context()) if !ok { return errDBRequired } dbToken, _ := thread.TokenFromContext(server.Context()) req.Path = cleanPath(req.Path) buck, pth, err := s.getBucketPath(server.Context(), dbID, req.Key, req.Path, dbToken) if err != nil { return err } filePath, fileKey, err := s.getPathAndKey(server.Context(), req, buck, pth) if err != nil { return err } node, err := s.IPFSClient.Unixfs().Get(server.Context(), filePath) if err != nil { return err } defer node.Close() file := ipfsfiles.ToFile(node) if file == nil { return fmt.Errorf("node is a directory") } var reader io.Reader if fileKey != nil { r, err := dcrypto.NewDecrypter(file, fileKey) if err != nil { return err } defer r.Close() reader = r } else { reader = file } buf := make([]byte, chunkSize) for { n, err := reader.Read(buf) if n > 0 { if err := server.Send(&pb.PullPathResponse{ Chunk: buf[:n], }); err != nil { return err } } if err == io.EOF { break } else if err != nil { return err } } return nil } // getPathAndKey takes a bucket path and returns a filepath and key (if private). func (s *Service) getPathAndKey( ctx context.Context, req *pb.PullPathRequest, buck *tdb.Bucket, pth path.Path, ) (path.Resolved, []byte, error) { fileKey, err := buck.GetFileEncryptionKeyForPath(req.Path) if err != nil { return nil, nil, err } var filePath path.Resolved if buck.IsPrivate() { buckPath, err := util.NewResolvedPath(buck.Path) if err != nil { return nil, nil, err } np, isDir, r, err := s.getNodesToPath(ctx, buckPath, req.Path, buck.GetLinkEncryptionKey()) if err != nil { return nil, nil, err } if r != "" { return nil, nil, fmt.Errorf("could not resolve path: %s", pth) } if isDir { return nil, nil, fmt.Errorf("node is a directory") } fn := np[len(np)-1] filePath = path.IpfsPath(fn.new.Cid()) } else { filePath, err = s.IPFSClient.ResolvePath(ctx, pth) if err != nil { return nil, nil, err } } return filePath, fileKey, nil } func (s *Service) PullIpfsPath(req *pb.PullIpfsPathRequest, server pb.APIService_PullIpfsPathServer) error { log.Debugf("received ipfs pull path request") reqPath := path.New(req.Path) node, err := s.IPFSClient.Unixfs().Get(server.Context(), reqPath) if err != nil { return err } defer node.Close() file := ipfsfiles.ToFile(node) if file == nil { return fmt.Errorf("node is a directory") } buf := make([]byte, chunkSize) for { n, err := file.Read(buf) if n > 0 { if err := server.Send(&pb.PullIpfsPathResponse{ Chunk: buf[:n], }); err != nil { return err } } if err == io.EOF { break } else if err != nil { return err } } return nil } func (s *Service) Remove(ctx context.Context, req *pb.RemoveRequest) (*pb.RemoveResponse, error) { log.Debugf("received remove request") dbID, ok := common.ThreadIDFromContext(ctx) if !ok { return nil, errDBRequired } dbToken, _ := thread.TokenFromContext(ctx) lck := s.Semaphores.Get(buckLock(req.Key)) lck.Acquire() defer lck.Release() buck := &tdb.Bucket{} err := s.Buckets.GetSafe(ctx, dbID, req.Key, buck, tdb.WithToken(dbToken)) if err != nil { return nil, err } if err = s.Buckets.Delete(ctx, dbID, buck.Key, tdb.WithToken(dbToken)); err != nil { return nil, err } buckPath, err := util.NewResolvedPath(buck.Path) if err != nil { return nil, err } linkKey := buck.GetLinkEncryptionKey() if linkKey != nil { ctx, err = s.unpinNodeAndBranch(ctx, buckPath, linkKey) if err != nil { return nil, err } } else { ctx, err = s.unpinPath(ctx, buckPath) if err != nil { return nil, err } } if err = s.IPNSManager.RemoveKey(ctx, buck.Key); err != nil { return nil, err } log.Debugf("removed bucket: %s", buck.Key) return &pb.RemoveResponse{ Pinned: s.getPinnedBytes(ctx), }, nil } // unpinNodeAndBranch unpins a node and its entire branch, accounting for sum bytes pinned for context. func (s *Service) unpinNodeAndBranch(ctx context.Context, pth path.Resolved, key []byte) (context.Context, error) { ctx, err := s.unpinBranch(ctx, pth, key) if err != nil { return ctx, err } return s.unpinPath(ctx, pth) } func (s *Service) RemovePath(ctx context.Context, req *pb.RemovePathRequest) (res *pb.RemovePathResponse, err error) { log.Debugf("received remove path request") dbID, ok := common.ThreadIDFromContext(ctx) if !ok { return nil, errDBRequired } dbToken, _ := thread.TokenFromContext(ctx) filePath, err := parsePath(req.Path) if err != nil { return nil, err } lck := s.Semaphores.Get(buckLock(req.Key)) lck.Acquire() defer lck.Release() buck := &tdb.Bucket{} if err := s.Buckets.GetSafe(ctx, dbID, req.Key, buck, tdb.WithToken(dbToken)); err != nil { return nil, err } if req.Root != "" && req.Root != buck.Path { return nil, status.Error(codes.FailedPrecondition, buckets.ErrNonFastForward.Error()) } buck.UpdatedAt = time.Now().UnixNano() buck.UnsetMetadataWithPrefix(filePath) if err := s.Buckets.Verify(ctx, dbID, buck, tdb.WithToken(dbToken)); err != nil { return nil, err } ctx, dirPath, err := s.removePath(ctx, buck, filePath) if err != nil { return nil, err } buck.Path = dirPath.String() if err = s.saveAndPublish(ctx, dbID, dbToken, buck); err != nil { return nil, err } log.Debugf("removed %s from bucket: %s", filePath, buck.Key) root, err := getPbRoot(dbID, buck) if err != nil { return nil, err } return &pb.RemovePathResponse{ Root: root, Pinned: s.getPinnedBytes(ctx), }, nil } func (s *Service) removePath( ctx context.Context, buck *tdb.Bucket, filePath string, ) (context.Context, path.Resolved, error) { buckPath := path.New(buck.Path) var dirPath path.Resolved var err error if buck.IsPrivate() { ctx, dirPath, err = s.removeNodeAtPath( ctx, path.Join(buckPath, filePath), buck.GetLinkEncryptionKey(), ) if err != nil { return ctx, nil, fmt.Errorf("remove node failed: %v", err) } } else { dirPath, err = s.IPFSClient.Object().RmLink(ctx, buckPath, filePath) if err != nil { return ctx, nil, err } ctx, err = s.updateOrAddPin(ctx, buckPath, dirPath) if err != nil { return ctx, nil, fmt.Errorf("update pin failed: %v", err) } } return ctx, dirPath, nil } // removeNodeAtPath removes node at the location of path. // Key will be required if the path is encrypted. func (s *Service) removeNodeAtPath( ctx context.Context, pth path.Path, key []byte, ) (context.Context, path.Resolved, error) { // The first step here is find a resolvable list of nodes that point to path. rp, fp, err := util.ParsePath(pth) if err != nil { return ctx, nil, err } np, _, r, err := s.getNodesToPath(ctx, rp, fp, key) if err != nil { return ctx, nil, err } // If the remaining path segment is not empty, then we conclude that // the node cannot be resolved. if r != "" { return ctx, nil, fmt.Errorf("could not resolve path: %s", pth) } np[len(np)-1].isJoint = true // Now, we have a full list of nodes to the insert location, // but the existing nodes need to be updated and re-encrypted. change := make([]ipld.Node, len(np)-1) for i := len(np) - 1; i >= 0; i-- { if i < len(np)-1 { change[i] = np[i].new } if i > 0 { p, ok := np[i-1].new.(*dag.ProtoNode) if !ok { return ctx, nil, dag.ErrNotProtobuf } if err := p.RemoveNodeLink(np[i].name); err != nil { return ctx, nil, err } if !np[i].isJoint { if err := p.AddNodeLink(np[i].name, np[i].new); err != nil { return ctx, nil, err } } np[i-1].new, err = encryptNode(p, key) if err != nil { return ctx, nil, err } } } // Add all the changed nodes if err := s.IPFSClient.Dag().AddMany(ctx, change); err != nil { return ctx, nil, err } // Update / remove node pins for _, n := range np { if n.isJoint { ctx, err = s.unpinNodeAndBranch(ctx, n.old, key) if err != nil { return ctx, nil, err } } else { ctx, err = s.updateOrAddPin(ctx, n.old, path.IpfsPath(n.new.Cid())) if err != nil { return ctx, nil, err } } } return ctx, path.IpfsPath(np[0].new.Cid()), nil } func (s *Service) PushPathAccessRoles( ctx context.Context, req *pb.PushPathAccessRolesRequest, ) (res *pb.PushPathAccessRolesResponse, err error) { log.Debugf("received push path access roles request") dbID, ok := common.ThreadIDFromContext(ctx) if !ok { return nil, errDBRequired } dbToken, _ := thread.TokenFromContext(ctx) reqPath, err := parsePath(req.Path) if err != nil { return nil, err } lck := s.Semaphores.Get(buckLock(req.Key)) lck.Acquire() defer lck.Release() buck, pth, err := s.getBucketPath(ctx, dbID, req.Key, reqPath, dbToken) if err != nil { return nil, err } linkKey := buck.GetLinkEncryptionKey() pathNode, err := s.getNodeAtPath(ctx, pth, linkKey) if err != nil { return nil, err } md, mdPath, ok := buck.GetMetadataForPath(reqPath, false) if !ok { return nil, fmt.Errorf("could not resolve path: %s", reqPath) } var target tdb.Metadata if mdPath != reqPath { // If the metadata is inherited from a parent, create a new entry target = tdb.Metadata{ Roles: make(map[string]buckets.Role), } } else { target = md } var currentFileKeys map[string][]byte if buck.IsPrivate() { currentFileKeys, err = buck.GetFileEncryptionKeysForPrefix(reqPath) if err != nil { return nil, err } newFileKey, err := dcrypto.NewKey() if err != nil { return nil, err } target.SetFileEncryptionKey(newFileKey) // Create or refresh the file key } newRoles, err := buckets.RolesFromPb(req.Roles) if err != nil { return nil, err } var changed bool for k, r := range newRoles { if x, ok := target.Roles[k]; ok && x == r { continue } if r > buckets.None { target.Roles[k] = r } else { delete(target.Roles, k) } changed = true } if changed { buck.UpdatedAt = time.Now().UnixNano() target.UpdatedAt = buck.UpdatedAt buck.Metadata[reqPath] = target if buck.IsPrivate() { if err := buck.RotateFileEncryptionKeysForPrefix(reqPath); err != nil { return nil, err } } if err = s.Buckets.Verify(ctx, dbID, buck, tdb.WithToken(dbToken)); err != nil { return nil, err } if buck.IsPrivate() { newFileKeys, err := buck.GetFileEncryptionKeysForPrefix(reqPath) if err != nil { return nil, err } nmap, err := s.encryptDag( ctx, pathNode, reqPath, linkKey, currentFileKeys, newFileKeys, nil, nil, ) if err != nil { return nil, err } nodes := make([]ipld.Node, len(nmap)) i := 0 for _, tn := range nmap { nodes[i] = tn.node i++ } pn := nmap[pathNode.Cid()].node var dirPath path.Resolved ctx, dirPath, err = s.insertNodeAtPath(ctx, pn, path.Join(path.New(buck.Path), reqPath), linkKey) if err != nil { return nil, fmt.Errorf("updating pinned root: %v", err) } ctx, err = s.addAndPinNodes(ctx, nodes) if err != nil { return nil, err } buck.Path = dirPath.String() } if err = s.Buckets.Save(ctx, dbID, buck, tdb.WithToken(dbToken)); err != nil { return nil, err } } return &pb.PushPathAccessRolesResponse{ Pinned: s.getPinnedBytes(ctx), }, nil } func (s *Service) PullPathAccessRoles( ctx context.Context, req *pb.PullPathAccessRolesRequest, ) (*pb.PullPathAccessRolesResponse, error) { log.Debugf("received pull path access roles request") dbID, ok := common.ThreadIDFromContext(ctx) if !ok { return nil, errDBRequired } dbToken, _ := thread.TokenFromContext(ctx) reqPath, err := parsePath(req.Path) if err != nil { return nil, err } buck, pth, err := s.getBucketPath(ctx, dbID, req.Key, reqPath, dbToken) if err != nil { return nil, err } if _, err = s.getNodeAtPath(ctx, pth, buck.GetLinkEncryptionKey()); err != nil { return nil, fmt.Errorf("could not resolve path: %s", reqPath) } md, _, ok := buck.GetMetadataForPath(reqPath, false) if !ok { return nil, fmt.Errorf("could not resolve path: %s", reqPath) } roles, err := buckets.RolesToPb(md.Roles) if err != nil { return nil, err } return &pb.PullPathAccessRolesResponse{ Roles: roles, }, nil } func (s *Service) DefaultArchiveConfig( ctx context.Context, req *pb.DefaultArchiveConfigRequest, ) (*pb.DefaultArchiveConfigResponse, error) { log.Debug("received default archive config request") if !s.Buckets.IsArchivingEnabled() { return nil, ErrArchivingFeatureDisabled } ba, err := s.Collections.BucketArchives.GetOrCreate(ctx, req.Key) if err != nil { return nil, fmt.Errorf("getting bucket archive data: %v", err) } archiveConfig := ba.DefaultArchiveConfig if archiveConfig == nil { // The queried BucketArchive was created before we added .DefaultArchiveConfig, so just return the default archiveConfig = &defaultDefaultArchiveConfig } return &pb.DefaultArchiveConfigResponse{ ArchiveConfig: toPbArchiveConfig(archiveConfig), }, nil } func (s *Service) SetDefaultArchiveConfig( ctx context.Context, req *pb.SetDefaultArchiveConfigRequest, ) (*pb.SetDefaultArchiveConfigResponse, error) { log.Debug("received set default archive config request") if !s.Buckets.IsArchivingEnabled() { return nil, ErrArchivingFeatureDisabled } ba, err := s.Collections.BucketArchives.GetOrCreate(ctx, req.Key) if err != nil { return nil, fmt.Errorf("getting bucket archive data: %v", err) } c := fromPbArchiveConfig(req.ArchiveConfig) if err := s.validateArchiveConfig(c); err != nil { return nil, fmt.Errorf("validating archive config: %v", err) } ba.DefaultArchiveConfig = c err = s.Collections.BucketArchives.Replace(ctx, ba) if err != nil { return nil, fmt.Errorf("saving default archive config: %v", err) } return &pb.SetDefaultArchiveConfigResponse{}, nil } func (s *Service) Archive(ctx context.Context, req *pb.ArchiveRequest) (*pb.ArchiveResponse, error) { log.Debug("received archive request") if !s.Buckets.IsArchivingEnabled() { return nil, ErrArchivingFeatureDisabled } dbID, ok := common.ThreadIDFromContext(ctx) if !ok { return nil, errDBRequired } dbToken, _ := thread.TokenFromContext(ctx) account, _ := mdb.AccountFromContext(ctx) lck := s.Semaphores.Get(buckLock(req.Key)) lck.Acquire() defer lck.Release() buck := &tdb.Bucket{} err := s.Buckets.GetSafe(ctx, dbID, req.Key, buck, tdb.WithToken(dbToken)) if err != nil { return nil, fmt.Errorf("getting bucket: %v", err) } buckSize, err := s.getBucketSize(ctx, buck) if err != nil { return nil, fmt.Errorf("getting bucket size: %v", err) } if buckSize > s.MaxBucketArchiveSize { return nil, fmt.Errorf("archive size is too big, should be less than: %d GiB", s.MaxBucketArchiveSize/1024/1024/1024) } if buckSize < s.MinBucketArchiveSize { return nil, fmt.Errorf("archive size is too small, should be greater than: %d MiB", s.MinBucketArchiveSize/1024/1024) } p, err := util.NewResolvedPath(buck.Path) if err != nil { return nil, fmt.Errorf("parsing cid path: %v", err) } createNewUser := func() error { ctxAdmin := context.WithValue(ctx, pow.AdminKey, s.PowergateAdminToken) res, err := s.PowergateClient.Admin.Users.Create(ctxAdmin) if err != nil { return fmt.Errorf("creating new powergate integration: %v", err) } _, err = s.Collections.Accounts.UpdatePowInfo( ctx, account.Owner().Key, &mdb.PowInfo{ID: res.User.Id, Token: res.User.Token}, ) if err != nil { return fmt.Errorf("updating user/account with new powergate information: %v", err) } return nil } tryAgain := fmt.Errorf( "new powergate integration created, please try again in 30 seconds to allow time for wallet funding") // Case where account/user was created before bucket archives were enabled. // create a user for them. if account.Owner().PowInfo == nil { if err := createNewUser(); err != nil { return nil, err } return nil, tryAgain } ctxPow := context.WithValue(ctx, pow.AuthKey, account.Owner().PowInfo.Token) defConfRes, err := s.PowergateClient.StorageConfig.Default(ctxPow) if err != nil { if !strings.Contains(err.Error(), "auth token not found") { return nil, fmt.Errorf("getting powergate default StorageConfig: %v", err) } else { // case where the user token is no longer valid because powergate was reset. // create a new user for them. if err := createNewUser(); err != nil { return nil, err } return nil, tryAgain } } ba, err := s.Collections.BucketArchives.GetOrCreate(ctx, req.Key) if err != nil { return nil, fmt.Errorf("getting bucket archive data: %v", err) } var archiveConfig *mdb.ArchiveConfig if req.ArchiveConfig != nil { archiveConfig = fromPbArchiveConfig(req.ArchiveConfig) } else if ba.DefaultArchiveConfig != nil { archiveConfig = ba.DefaultArchiveConfig } else { // The queried BucketArchive was created before we added .DefaultArchiveConfig so just use the default default // and defer saving the default until the user calls DefaultArchiveConfig or SetDefaultArchiveConfig. archiveConfig = &defaultDefaultArchiveConfig } if err := s.validateArchiveConfig(archiveConfig); err != nil { return nil, fmt.Errorf("validating archive config: %v", err) } storageConfig := baseArchiveStorageConfig storageConfig.Cold.Filecoin = toFilConfig(archiveConfig) // Get the address from the default storage config for this user. storageConfig.Cold.Filecoin.Address = defConfRes.DefaultStorageConfig.Cold.Filecoin.Address // Check that user wallet addr balance is > 0, if not, fail fast. addrs, err := s.PowergateClient.Wallet.Addresses(ctxPow) if err != nil { return nil, fmt.Errorf("getting powergate wallet addresses: %v", err) } var addrInfo *userPb.AddrInfo for _, addr := range addrs.Addresses { if addr.Address == storageConfig.Cold.Filecoin.Address { addrInfo = addr break } } if addrInfo == nil { return nil, fmt.Errorf("wallet address not found in account: %v", err) } bal, ok := new(big.Int).SetString(addrInfo.Balance, 10) if !ok { return nil, fmt.Errorf("converting balance %s to big int", addrInfo.Balance) } if bal.Cmp(big.NewInt(0)) == 0 { return nil, buckets.ErrZeroBalance } // If we don't get an explicit instruction of avoiding automatic verified-deal // tunning, and the wallet address is verified, then automatically enable // verified deals in the storage-config used for the archive. if !req.SkipAutomaticVerifiedDeal { log.Debugf("executing automatic verified deal logic") if !storageConfig.Cold.Filecoin.VerifiedDeal && addrInfo.VerifiedClientInfo != nil { remainingDataCap, ok := big.NewInt(0).SetString(addrInfo.VerifiedClientInfo.RemainingDatacapBytes, 10) if !ok { return nil, fmt.Errorf("parsing remaining datacap") } if remainingDataCap.Cmp(big.NewInt(0)) == 0 { return nil, fmt.Errorf("the remaining datacap is zero: %s", err) } storageConfig.Cold.Filecoin.VerifiedDeal = true // TODO(jsign): we'll soon add some more work here to // see if the archive fits into the remaining data-cap // and take a decision of what to do. } else if storageConfig.Cold.Filecoin.VerifiedDeal && addrInfo.VerifiedClientInfo == nil { return nil, fmt.Errorf("storage-config has set verified deals but the client is unverified") } } scjson, _ := json.Marshal(storageConfig) log.Debugf("archiving with filecoin config: %s", scjson) // Archive pushes the current root Cid to the corresponding user of the bucket. // The behaviour changes depending on different cases, depending on a previous archive. // 0. No previous archive or last one aborted: simply pushes the Cid to Powergate. // 1. Last archive exists with the same Cid: // a. Last archive Successful: fails, there's nothing to do. // b. Last archive Executing/Queued: fails, that work already starting and is in progress. // c. Last archive Failed/Canceled: work to do, push again with override flag to try again. // 2. Archiving on new Cid: work to do, it will always call Replace(,). var jid string firstTimeArchive := ba.Archives.Current.JobID == "" if firstTimeArchive || ba.Archives.Current.Aborted { // Case 0. // On the first archive, we simply push the Cid with // the default CidConfig configured at bucket creation. res, err := s.PowergateClient.StorageConfig.Apply( ctxPow, p.Cid().String(), pow.WithStorageConfig(storageConfig), pow.WithOverride(true), ) if err != nil { return nil, fmt.Errorf("pushing config: %v", err) } jid = res.JobId } else { oldCid, err := cid.Cast(ba.Archives.Current.Cid) if err != nil { return nil, fmt.Errorf("parsing old Cid archive: %v", err) } statusName, found := userPb.JobStatus_name[int32(ba.Archives.Current.Status)] if !found { return nil, fmt.Errorf("invalid job status %v", ba.Archives.Current.Status) } st := userPb.JobStatus(ba.Archives.Current.Status) if oldCid.Equals(p.Cid()) { // Case 1. switch st { // Case 1.a. case userPb.JobStatus_JOB_STATUS_SUCCESS: return nil, fmt.Errorf("the same bucket cid is already archived successfully") // Case 1.b. case userPb.JobStatus_JOB_STATUS_EXECUTING, userPb.JobStatus_JOB_STATUS_QUEUED: return nil, fmt.Errorf("there is an in progress archive") // Case 1.c. case userPb.JobStatus_JOB_STATUS_FAILED, userPb.JobStatus_JOB_STATUS_CANCELED: res, err := s.PowergateClient.StorageConfig.Apply( ctxPow, p.Cid().String(), pow.WithStorageConfig(storageConfig), pow.WithOverride(true), ) if err != nil { return nil, fmt.Errorf("pushing config: %v", err) } jid = res.JobId default: return nil, fmt.Errorf("unexpected current archive status: %s", statusName) } } else { // Case 2. res, err := s.PowergateClient.Data.CidInfo(ctxPow, oldCid.String()) isNotKnownToPowergate := err != nil && status.Convert(err).Code() == codes.NotFound if err != nil && !isNotKnownToPowergate { return nil, fmt.Errorf("looking up old storage config: %v", err) } if !isNotKnownToPowergate && cmp.Equal(&storageConfig, res.CidInfo.LatestPushedStorageConfig) { // Old storage config is the same as the new so use replace. res, err := s.PowergateClient.Data.ReplaceData(ctxPow, oldCid.String(), p.Cid().String()) if err != nil { return nil, fmt.Errorf("replacing cid: %v", err) } jid = res.JobId } else { // New storage config. if !isNotKnownToPowergate { // Remove previous storage config. _, err = s.PowergateClient.StorageConfig.Apply( ctxPow, oldCid.String(), pow.WithStorageConfig(&userPb.StorageConfig{}), pow.WithOverride(true), ) if err != nil { return nil, fmt.Errorf("pushing config to disable hot and cold storage: %v", err) } _, err = s.PowergateClient.StorageConfig.Remove(ctxPow, oldCid.String()) if err != nil { return nil, fmt.Errorf("removing old cid storage: %v", err) } } // Push new storage config. res, err := s.PowergateClient.StorageConfig.Apply( ctxPow, p.Cid().String(), pow.WithStorageConfig(storageConfig), pow.WithOverride(true), ) if err != nil { return nil, fmt.Errorf("pushing config: %v", err) } jid = res.JobId } } // Include the existing archive in history, // since we're going to set a new _current_ archive. ba.Archives.History = append(ba.Archives.History, ba.Archives.Current) } ba.Archives.Current = mdb.Archive{ Cid: p.Cid().Bytes(), CreatedAt: time.Now().Unix(), JobID: jid, Status: int(userPb.JobStatus_JOB_STATUS_QUEUED), } if err := s.Collections.BucketArchives.Replace(ctx, ba); err != nil { return nil, fmt.Errorf("updating bucket archives data: %v", err) } if err := s.ArchiveTracker.TrackArchive( ctx, dbID, dbToken, req.Key, jid, p.Cid(), account.Owner().Key, ); err != nil { return nil, fmt.Errorf("scheduling archive tracking: %v", err) } log.Debug("archived bucket") return &pb.ArchiveResponse{}, nil } func (s *Service) Archives(ctx context.Context, req *pb.ArchivesRequest) (*pb.ArchivesResponse, error) { ba, err := s.Collections.BucketArchives.GetOrCreate(ctx, req.Key) if err != nil { return nil, fmt.Errorf("getting bucket archive data: %v", err) } res := &pb.ArchivesResponse{} if ba.Archives.Current.JobID != "" { arc, err := toPbArchive(ba.Archives.Current) if err != nil { return nil, status.Errorf(codes.Internal, "converting to pb archive: %v", err) } res.Current = arc } history := make([]*pb.Archive, len(ba.Archives.History)) for i, item := range ba.Archives.History { pbItem, err := toPbArchive(item) if err != nil { return nil, status.Errorf(codes.Internal, "converting to pb archive: %v", err) } history[i] = pbItem } res.History = history return res, nil } func toPbArchive(archive mdb.Archive) (*pb.Archive, error) { c, err := cid.Cast(archive.Cid) if err != nil { return nil, fmt.Errorf("casting cid: %v", err) } _, ok := pb.ArchiveStatus_name[int32(archive.Status)] if !ok { return nil, fmt.Errorf("unknown job status: %v", archive.Status) } dealInfo := make([]*pb.DealInfo, len(archive.DealInfo)) for i, info := range archive.DealInfo { dealInfo[i] = &pb.DealInfo{ ActivationEpoch: info.ActivationEpoch, DealId: info.DealID, Duration: info.Duration, Message: info.Message, Miner: info.Miner, PieceCid: info.PieceCID, PricePerEpoch: info.PricePerEpoch, ProposalCid: info.ProposalCid, Size: info.Size, StartEpoch: info.StartEpoch, StateId: info.StateID, StateName: info.StateName, } } return &pb.Archive{ Aborted: archive.Aborted, AbortedMsg: archive.AbortedMsg, Cid: c.String(), CreatedAt: archive.CreatedAt, DealInfo: dealInfo, FailureMsg: archive.FailureMsg, JobId: archive.JobID, ArchiveStatus: pb.ArchiveStatus(archive.Status), }, nil } func (s *Service) ArchiveWatch(req *pb.ArchiveWatchRequest, server pb.APIService_ArchiveWatchServer) error { log.Debug("received archive watch") if !s.Buckets.IsArchivingEnabled() { return ErrArchivingFeatureDisabled } account, _ := mdb.AccountFromContext(server.Context()) if account.Owner().PowInfo == nil { return fmt.Errorf("no powergate info associated with account") } var err error ctx, cancel := context.WithCancel(server.Context()) defer cancel() ch := make(chan string) go func() { err = s.Buckets.ArchiveWatch(ctx, req.Key, account.Owner().PowInfo.Token, ch) close(ch) }() for s := range ch { if err := server.Send(&pb.ArchiveWatchResponse{Msg: s}); err != nil { return err } } if err != nil { return fmt.Errorf("watching cid logs: %v", err) } return nil } func toPbArchiveConfig(config *mdb.ArchiveConfig) *pb.ArchiveConfig { var pbConfig *pb.ArchiveConfig if config != nil { pbConfig = &pb.ArchiveConfig{ RepFactor: int32(config.RepFactor), DealMinDuration: config.DealMinDuration, ExcludedMiners: config.ExcludedMiners, TrustedMiners: config.TrustedMiners, CountryCodes: config.CountryCodes, Renew: &pb.ArchiveRenew{ Enabled: config.Renew.Enabled, Threshold: int32(config.Renew.Threshold), }, MaxPrice: config.MaxPrice, FastRetrieval: config.FastRetrieval, DealStartOffset: config.DealStartOffset, VerifiedDeal: config.VerifiedDeal, } } return pbConfig } func fromPbArchiveConfig(pbConfig *pb.ArchiveConfig) *mdb.ArchiveConfig { var config *mdb.ArchiveConfig if pbConfig != nil { config = &mdb.ArchiveConfig{ RepFactor: int(pbConfig.RepFactor), DealMinDuration: pbConfig.DealMinDuration, ExcludedMiners: pbConfig.ExcludedMiners, TrustedMiners: pbConfig.TrustedMiners, CountryCodes: pbConfig.CountryCodes, MaxPrice: pbConfig.MaxPrice, FastRetrieval: pbConfig.FastRetrieval, DealStartOffset: pbConfig.DealStartOffset, VerifiedDeal: pbConfig.VerifiedDeal, } if pbConfig.Renew != nil { config.Renew = mdb.ArchiveRenew{ Enabled: pbConfig.Renew.Enabled, Threshold: int(pbConfig.Renew.Threshold), } } } return config } func toFilConfig(config *mdb.ArchiveConfig) *userPb.FilConfig { if config == nil { return nil } return &userPb.FilConfig{ ReplicationFactor: int64(config.RepFactor), CountryCodes: config.CountryCodes, DealMinDuration: config.DealMinDuration, DealStartOffset: config.DealStartOffset, ExcludedMiners: config.ExcludedMiners, FastRetrieval: config.FastRetrieval, MaxPrice: config.MaxPrice, Renew: &userPb.FilRenew{ Enabled: config.Renew.Enabled, Threshold: int64(config.Renew.Threshold), }, TrustedMiners: config.TrustedMiners, VerifiedDeal: config.VerifiedDeal, } } func (s *Service) validateArchiveConfig(c *mdb.ArchiveConfig) error { if c.RepFactor > s.MaxBucketArchiveRepFactor { return fmt.Errorf( "rep factor %d is greater than max allowed of %d", c.RepFactor, s.MaxBucketArchiveRepFactor, ) } if c.DealMinDuration < powUtil.MinDealDuration { return fmt.Errorf( "min deal duration %d is less than the allowed minimum of %d", c.DealMinDuration, powUtil.MinDealDuration, ) } if c.DealStartOffset <= 0 { return fmt.Errorf( "deal start offset of %d is less than required minimum of 1, and really should be higher than 1", c.DealStartOffset, ) } return nil } ================================================ FILE: api/common/common.go ================================================ package common import ( "context" "crypto/hmac" "crypto/sha256" "time" "github.com/grpc-ecosystem/go-grpc-middleware/util/metautils" mbase "github.com/multiformats/go-multibase" "github.com/textileio/go-threads/core/thread" ) type ctxKey string // NewSessionContext adds a session to a context. func NewSessionContext(ctx context.Context, session string) context.Context { if session == "" { return ctx } return context.WithValue(ctx, ctxKey("session"), session) } // SessionFromContext returns a session from a context. func SessionFromContext(ctx context.Context) (string, bool) { session, ok := ctx.Value(ctxKey("session")).(string) return session, ok } // SessionFromMD returns a session from context metadata. func SessionFromMD(ctx context.Context) (session string, ok bool) { session = metautils.ExtractIncoming(ctx).Get("x-textile-session") if session != "" { ok = true } return } // NewOrgSlugContext adds an org name to a context. func NewOrgSlugContext(ctx context.Context, slug string) context.Context { if slug == "" { return ctx } return context.WithValue(ctx, ctxKey("orgSlug"), slug) } // OrgSlugFromContext returns an org name from a context. func OrgSlugFromContext(ctx context.Context) (string, bool) { name, ok := ctx.Value(ctxKey("orgSlug")).(string) return name, ok } // OrgSlugFromMD returns an org name from context metadata. func OrgSlugFromMD(ctx context.Context) (slug string, ok bool) { slug = metautils.ExtractIncoming(ctx).Get("x-textile-org") if slug != "" { ok = true } return } // NewAPIKeyContext adds an API key to a context. func NewAPIKeyContext(ctx context.Context, key string) context.Context { if key == "" { return ctx } return context.WithValue(ctx, ctxKey("apiKey"), key) } // APIKeyFromContext returns an API key from a context. func APIKeyFromContext(ctx context.Context) (string, bool) { key, ok := ctx.Value(ctxKey("apiKey")).(string) return key, ok } // APIKeyFromMD returns an API key from context metadata. func APIKeyFromMD(ctx context.Context) (key string, ok bool) { key = metautils.ExtractIncoming(ctx).Get("x-textile-api-key") if key != "" { ok = true } return } // CreateAPISigContext creates an HMAC signature and adds it to a context, // with secret as the key and SHA256 as the hash algorithm. // An RFC 3339 date string is used as the message. // Date must be sometime in the future. Dates closer to now are more secure. func CreateAPISigContext(ctx context.Context, date time.Time, secret string) (context.Context, error) { _, sec, err := mbase.Decode(secret) if err != nil { return ctx, err } hash := hmac.New(sha256.New, sec) msg := date.Format(time.RFC3339) _, err = hash.Write([]byte(msg)) if err != nil { return ctx, err } ctx = context.WithValue(ctx, ctxKey("apiSigMsg"), msg) ctx = context.WithValue(ctx, ctxKey("apiSig"), hash.Sum(nil)) return ctx, nil } // NewAPISigContext adds an API key signature to a context. func NewAPISigContext(ctx context.Context, msg string, sig []byte) context.Context { if sig == nil { return ctx } ctx = context.WithValue(ctx, ctxKey("apiSigMsg"), msg) ctx = context.WithValue(ctx, ctxKey("apiSig"), sig) return ctx } // APISigFromContext returns a message and signature from a context. func APISigFromContext(ctx context.Context) (msg string, sig []byte, ok bool) { sig, ok = ctx.Value(ctxKey("apiSig")).([]byte) if !ok { return } msg, ok = ctx.Value(ctxKey("apiSigMsg")).(string) if !ok { return } return msg, sig, ok } // APISigFromMD returns a message and signature from context metadata. func APISigFromMD(ctx context.Context) (msg string, sig []byte, ok bool) { str := metautils.ExtractIncoming(ctx).Get("x-textile-api-sig") if str == "" { return } var err error _, sig, err = mbase.Decode(str) if err != nil { return } msg = metautils.ExtractIncoming(ctx).Get("x-textile-api-sig-msg") if msg == "" { return } return msg, sig, true } // ValidateAPISigContext re-computes the hash from a context using secret as key. // This method returns true only if the hashes are equal and the message is a // valid RFC 3339 date string sometime in the future. func ValidateAPISigContext(ctx context.Context, secret string) bool { msg, sig, ok := APISigFromContext(ctx) if !ok { return false } _, sec, err := mbase.Decode(secret) if err != nil { return false } date, err := time.Parse(time.RFC3339, msg) if err != nil { return false } if date.Before(time.Now()) { return false } hash := hmac.New(sha256.New, sec) _, err = hash.Write([]byte(msg)) if err != nil { return false } return hmac.Equal(sig, hash.Sum(nil)) } // NewThreadIDContext adds a thread ID to a context. func NewThreadIDContext(ctx context.Context, id thread.ID) context.Context { if !id.Defined() { return ctx } return context.WithValue(ctx, ctxKey("threadID"), id) } // ThreadIDFromContext returns a thread ID from a context. func ThreadIDFromContext(ctx context.Context) (thread.ID, bool) { id, ok := ctx.Value(ctxKey("threadID")).(thread.ID) return id, ok } // ThreadIDFromMD returns a thread ID from context metadata. func ThreadIDFromMD(ctx context.Context) (id thread.ID, ok bool) { str := metautils.ExtractIncoming(ctx).Get("x-textile-thread") if str == "" { return } var err error id, err = thread.Decode(str) if err != nil { return id, false } return id, true } // NewThreadNameContext adds a thread name to a context, // which is used to name threads and dbs during creation. // Thread names may be useful for some app logic, but are not required. func NewThreadNameContext(ctx context.Context, name string) context.Context { if name == "" { return ctx } return context.WithValue(ctx, ctxKey("threadName"), name) } // ThreadNameFromContext returns a thread name from a context. func ThreadNameFromContext(ctx context.Context) (string, bool) { name, ok := ctx.Value(ctxKey("threadName")).(string) return name, ok } // ThreadNameFromMD returns a thread name from context metadata. func ThreadNameFromMD(ctx context.Context) (name string, ok bool) { name = metautils.ExtractIncoming(ctx).Get("x-textile-thread-name") if name != "" { ok = true } return } // Credentials implements grpc.PerRPCCredentials. type Credentials struct { Secure bool } func (c Credentials) GetRequestMetadata(ctx context.Context, _ ...string) (map[string]string, error) { md := map[string]string{} session, ok := SessionFromContext(ctx) if ok { md["x-textile-session"] = session } orgSlug, ok := OrgSlugFromContext(ctx) if ok { md["x-textile-org"] = orgSlug } apiKey, ok := APIKeyFromContext(ctx) if ok { md["x-textile-api-key"] = apiKey } apiSigMsg, apiSig, ok := APISigFromContext(ctx) if ok { var err error md["x-textile-api-sig"], err = mbase.Encode(mbase.Base32, apiSig) if err != nil { return nil, err } md["x-textile-api-sig-msg"] = apiSigMsg } threadID, ok := ThreadIDFromContext(ctx) if ok { md["x-textile-thread"] = threadID.String() } threadName, ok := ThreadNameFromContext(ctx) if ok { md["x-textile-thread-name"] = threadName } threadToken, ok := thread.TokenFromContext(ctx) if ok { md["authorization"] = "bearer " + string(threadToken) } return md, nil } func (c Credentials) RequireTransportSecurity() bool { return c.Secure } ================================================ FILE: api/filecoin/client/client.go ================================================ package client import ( "context" userPb "github.com/textileio/powergate/v2/api/gen/powergate/user/v1" "google.golang.org/grpc" ) // Client provides the client api. type Client struct { powC userPb.UserServiceClient conn *grpc.ClientConn } // NewClient starts the client. func NewClient(target string, opts ...grpc.DialOption) (*Client, error) { conn, err := grpc.Dial(target, opts...) if err != nil { return nil, err } return &Client{ powC: userPb.NewUserServiceClient(conn), conn: conn, }, nil } func (c *Client) Addresses(ctx context.Context) (*userPb.AddressesResponse, error) { return c.powC.Addresses(ctx, &userPb.AddressesRequest{}) } func (c *Client) Balance(ctx context.Context, addr string) (*userPb.BalanceResponse, error) { req := &userPb.BalanceRequest{ Address: addr, } return c.powC.Balance(ctx, req) } func (c *Client) SignMessage(ctx context.Context, address string, message []byte) (*userPb.SignMessageResponse, error) { req := &userPb.SignMessageRequest{ Address: address, Message: message, } return c.powC.SignMessage(ctx, req) } func (c *Client) VerifyMessage(ctx context.Context, address string, message, signature []byte) (*userPb.VerifyMessageResponse, error) { r := &userPb.VerifyMessageRequest{Address: address, Message: message, Signature: signature} return c.powC.VerifyMessage(ctx, r) } func (c *Client) CidInfo(ctx context.Context, cid string) (*userPb.CidInfoResponse, error) { req := &userPb.CidInfoRequest{Cid: cid} return c.powC.CidInfo(ctx, req) } func (c *Client) StorageDealRecords(ctx context.Context, config *userPb.DealRecordsConfig) (*userPb.StorageDealRecordsResponse, error) { req := &userPb.StorageDealRecordsRequest{ Config: config, } return c.powC.StorageDealRecords(ctx, req) } func (c *Client) RetrievalDealRecords(ctx context.Context, config *userPb.DealRecordsConfig) (*userPb.RetrievalDealRecordsResponse, error) { req := &userPb.RetrievalDealRecordsRequest{ Config: config, } return c.powC.RetrievalDealRecords(ctx, req) } // Close closes the client's grpc connection and cancels any active requests. func (c *Client) Close() error { return c.conn.Close() } ================================================ FILE: api/hubd/client/client.go ================================================ package client import ( "context" pb "github.com/textileio/textile/v2/api/hubd/pb" "google.golang.org/grpc" ) // Client provides the client api. type Client struct { c pb.APIServiceClient conn *grpc.ClientConn } // NewClient starts the client. func NewClient(target string, opts ...grpc.DialOption) (*Client, error) { conn, err := grpc.Dial(target, opts...) if err != nil { return nil, err } return &Client{ c: pb.NewAPIServiceClient(conn), conn: conn, }, nil } // Close closes the client's grpc connection and cancels any active requests. func (c *Client) Close() error { return c.conn.Close() } // BuildInfo provides API build information. func (c *Client) BuildInfo(ctx context.Context) (*pb.BuildInfoResponse, error) { return c.c.BuildInfo(ctx, &pb.BuildInfoRequest{}) } // Signup creates a new user and returns a session. // This method will block and wait for email-based verification. func (c *Client) Signup(ctx context.Context, username, email string) (*pb.SignupResponse, error) { return c.c.Signup(ctx, &pb.SignupRequest{ Username: username, Email: email, }) } // Signin returns a session for an existing username or email. // This method will block and wait for email-based verification. func (c *Client) Signin(ctx context.Context, usernameOrEmail string) (*pb.SigninResponse, error) { return c.c.Signin(ctx, &pb.SigninRequest{ UsernameOrEmail: usernameOrEmail, }) } // Signout deletes a session. func (c *Client) Signout(ctx context.Context) error { _, err := c.c.Signout(ctx, &pb.SignoutRequest{}) return err } // GetSessionInfo returns session info. func (c *Client) GetSessionInfo(ctx context.Context) (*pb.GetSessionInfoResponse, error) { return c.c.GetSessionInfo(ctx, &pb.GetSessionInfoRequest{}) } // GetIdentity returns the identity of the current session. func (c *Client) GetIdentity(ctx context.Context) (*pb.GetIdentityResponse, error) { return c.c.GetIdentity(ctx, &pb.GetIdentityRequest{}) } // CreateKey creates a new key for the current session. func (c *Client) CreateKey(ctx context.Context, keyType pb.KeyType, secure bool) (*pb.CreateKeyResponse, error) { return c.c.CreateKey(ctx, &pb.CreateKeyRequest{ Type: keyType, Secure: secure, }) } // InvalidateKey marks a key as invalid. // New threads cannot be created with an invalid key. func (c *Client) InvalidateKey(ctx context.Context, key string) error { _, err := c.c.InvalidateKey(ctx, &pb.InvalidateKeyRequest{Key: key}) return err } // ListKeys returns a list of keys for the current session. func (c *Client) ListKeys(ctx context.Context) (*pb.ListKeysResponse, error) { return c.c.ListKeys(ctx, &pb.ListKeysRequest{}) } // CreateOrg creates a new org by name. func (c *Client) CreateOrg(ctx context.Context, name string) (*pb.CreateOrgResponse, error) { return c.c.CreateOrg(ctx, &pb.CreateOrgRequest{Name: name}) } // GetOrg returns an org. func (c *Client) GetOrg(ctx context.Context) (*pb.GetOrgResponse, error) { return c.c.GetOrg(ctx, &pb.GetOrgRequest{}) } // ListOrgs returns a list of orgs for the current session. func (c *Client) ListOrgs(ctx context.Context) (*pb.ListOrgsResponse, error) { return c.c.ListOrgs(ctx, &pb.ListOrgsRequest{}) } // RemoveOrg removes an org. func (c *Client) RemoveOrg(ctx context.Context) error { _, err := c.c.RemoveOrg(ctx, &pb.RemoveOrgRequest{}) return err } // InviteToOrg invites the given email to an org. func (c *Client) InviteToOrg(ctx context.Context, email string) (*pb.InviteToOrgResponse, error) { return c.c.InviteToOrg(ctx, &pb.InviteToOrgRequest{ Email: email, }) } // LeaveOrg removes the current session dev from an org. func (c *Client) LeaveOrg(ctx context.Context) error { _, err := c.c.LeaveOrg(ctx, &pb.LeaveOrgRequest{}) return err } // SetupBilling (re-)enables billing for an account, enabling // usage beyond the free quotas. func (c *Client) SetupBilling(ctx context.Context) error { _, err := c.c.SetupBilling(ctx, &pb.SetupBillingRequest{}) return err } // GetBillingSession returns a billing portal session url. func (c *Client) GetBillingSession(ctx context.Context) (*pb.GetBillingSessionResponse, error) { return c.c.GetBillingSession(ctx, &pb.GetBillingSessionRequest{}) } // ListBillingUsers returns a list of users the account is responsible for. func (c *Client) ListBillingUsers(ctx context.Context, opts ...ListOption) ( *pb.ListBillingUsersResponse, error) { args := &listOptions{} for _, opt := range opts { opt(args) } return c.c.ListBillingUsers(ctx, &pb.ListBillingUsersRequest{ Offset: args.offset, Limit: args.limit, }) } // IsUsernameAvailable returns a nil error if the username is valid and available. func (c *Client) IsUsernameAvailable(ctx context.Context, username string) error { _, err := c.c.IsUsernameAvailable(ctx, &pb.IsUsernameAvailableRequest{ Username: username, }) return err } // IsOrgNameAvailable returns a nil error if the name is valid and available. func (c *Client) IsOrgNameAvailable(ctx context.Context, name string) (*pb.IsOrgNameAvailableResponse, error) { return c.c.IsOrgNameAvailable(ctx, &pb.IsOrgNameAvailableRequest{ Name: name, }) } // DestroyAccount completely deletes an account and all associated data. func (c *Client) DestroyAccount(ctx context.Context) error { _, err := c.c.DestroyAccount(ctx, &pb.DestroyAccountRequest{}) return err } ================================================ FILE: api/hubd/client/client_test.go ================================================ package client_test import ( "context" "fmt" "net/http" "os" "strings" "sync" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tc "github.com/textileio/go-threads/api/client" "github.com/textileio/go-threads/core/thread" tutil "github.com/textileio/go-threads/util" "github.com/textileio/textile/v2/api/apitest" "github.com/textileio/textile/v2/api/common" c "github.com/textileio/textile/v2/api/hubd/client" pb "github.com/textileio/textile/v2/api/hubd/pb" "github.com/textileio/textile/v2/core" "google.golang.org/grpc" ) func TestMain(m *testing.M) { cleanup := func() {} if os.Getenv("SKIP_SERVICES") != "true" { cleanup = apitest.StartServices() } exitVal := m.Run() cleanup() os.Exit(exitVal) } func TestClient_Signup(t *testing.T) { t.Parallel() conf, client, _ := setup(t, nil) user := apitest.Signup(t, client, conf, apitest.NewUsername(), apitest.NewEmail()) assert.NotEmpty(t, user.Key) assert.NotEmpty(t, user.Session) } func TestClient_Signin(t *testing.T) { t.Parallel() conf, client, _ := setup(t, nil) username := apitest.NewUsername() email := apitest.NewEmail() user := apitest.Signup(t, client, conf, username, email) err := client.Signout(common.NewSessionContext(context.Background(), user.Session)) require.NoError(t, err) res := apitest.Signin(t, client, conf, username) assert.NotEmpty(t, res.Key) assert.NotEmpty(t, res.Session) err = client.Signout(common.NewSessionContext(context.Background(), res.Session)) require.NoError(t, err) res = apitest.Signin(t, client, conf, email) assert.NotEmpty(t, res.Key) assert.NotEmpty(t, res.Session) } func TestClient_Signout(t *testing.T) { t.Parallel() conf, client, _ := setup(t, nil) ctx := context.Background() t.Run("without session", func(t *testing.T) { err := client.Signout(ctx) require.Error(t, err) }) user := apitest.Signup(t, client, conf, apitest.NewUsername(), apitest.NewEmail()) t.Run("with session", func(t *testing.T) { err := client.Signout(common.NewSessionContext(ctx, user.Session)) require.NoError(t, err) }) } func TestClient_GetSessionInfo(t *testing.T) { t.Parallel() conf, client, _ := setup(t, nil) ctx := context.Background() t.Run("without session", func(t *testing.T) { _, err := client.GetSessionInfo(ctx) require.Error(t, err) }) username := apitest.NewUsername() email := apitest.NewEmail() user := apitest.Signup(t, client, conf, username, email) t.Run("with session", func(t *testing.T) { res, err := client.GetSessionInfo(common.NewSessionContext(ctx, user.Session)) require.NoError(t, err) assert.Equal(t, user.Key, res.Key) assert.Equal(t, username, res.Username) assert.Equal(t, email, res.Email) }) } func TestClient_GetIdentity(t *testing.T) { t.Parallel() conf, client, _ := setup(t, nil) ctx := context.Background() t.Run("without session", func(t *testing.T) { _, err := client.GetIdentity(ctx) require.Error(t, err) }) username := apitest.NewUsername() email := apitest.NewEmail() user := apitest.Signup(t, client, conf, username, email) t.Run("with session", func(t *testing.T) { res, err := client.GetIdentity(common.NewSessionContext(ctx, user.Session)) require.NoError(t, err) id := &thread.Libp2pIdentity{} err = id.UnmarshalBinary(res.Identity) require.NoError(t, err) key := &thread.Libp2pPubKey{} err = key.UnmarshalBinary(user.Key) require.NoError(t, err) assert.True(t, id.GetPublic().Equals(key)) }) } func TestClient_CreateKey(t *testing.T) { t.Parallel() conf, client, _ := setup(t, nil) ctx := context.Background() t.Run("without session", func(t *testing.T) { _, err := client.CreateKey(ctx, pb.KeyType_KEY_TYPE_ACCOUNT, true) require.Error(t, err) }) user := apitest.Signup(t, client, conf, apitest.NewUsername(), apitest.NewEmail()) t.Run("with session", func(t *testing.T) { res, err := client.CreateKey(common.NewSessionContext(ctx, user.Session), pb.KeyType_KEY_TYPE_ACCOUNT, true) require.NoError(t, err) assert.NotEmpty(t, res.KeyInfo.Key) assert.NotEmpty(t, res.KeyInfo.Secret) assert.Equal(t, pb.KeyType_KEY_TYPE_ACCOUNT, res.KeyInfo.Type) assert.True(t, res.KeyInfo.Secure) }) } func TestClient_InvalidateKey(t *testing.T) { t.Parallel() conf, client, _ := setup(t, nil) ctx := context.Background() user := apitest.Signup(t, client, conf, apitest.NewUsername(), apitest.NewEmail()) res, err := client.CreateKey(common.NewSessionContext(ctx, user.Session), pb.KeyType_KEY_TYPE_ACCOUNT, true) require.NoError(t, err) t.Run("without session", func(t *testing.T) { err := client.InvalidateKey(ctx, res.KeyInfo.Key) require.Error(t, err) }) ctx = common.NewSessionContext(ctx, user.Session) t.Run("with session", func(t *testing.T) { err := client.InvalidateKey(ctx, res.KeyInfo.Key) require.NoError(t, err) keys, err := client.ListKeys(ctx) require.NoError(t, err) require.Equal(t, 1, len(keys.List)) require.False(t, keys.List[0].Valid) }) } func TestClient_ListKeys(t *testing.T) { t.Parallel() conf, client, _ := setup(t, nil) user := apitest.Signup(t, client, conf, apitest.NewUsername(), apitest.NewEmail()) ctx := common.NewSessionContext(context.Background(), user.Session) t.Run("empty", func(t *testing.T) { keys, err := client.ListKeys(ctx) require.NoError(t, err) assert.Empty(t, keys.List) }) _, err := client.CreateKey(ctx, pb.KeyType_KEY_TYPE_ACCOUNT, true) require.NoError(t, err) _, err = client.CreateKey(ctx, pb.KeyType_KEY_TYPE_USER, true) require.NoError(t, err) t.Run("not empty", func(t *testing.T) { keys, err := client.ListKeys(ctx) require.NoError(t, err) assert.Equal(t, 2, len(keys.List)) }) } func TestClient_CreateOrg(t *testing.T) { t.Parallel() conf, client, _ := setup(t, nil) ctx := context.Background() name := apitest.NewUsername() t.Run("without session", func(t *testing.T) { _, err := client.CreateOrg(ctx, name) require.Error(t, err) }) user := apitest.Signup(t, client, conf, apitest.NewUsername(), apitest.NewEmail()) t.Run("with session", func(t *testing.T) { res, err := client.CreateOrg(common.NewSessionContext(ctx, user.Session), name) require.NoError(t, err) assert.NotEmpty(t, res.OrgInfo.Key) assert.Equal(t, name, res.OrgInfo.Name) }) } func TestClient_GetOrg(t *testing.T) { t.Parallel() conf, client, _ := setup(t, nil) name := apitest.NewUsername() user := apitest.Signup(t, client, conf, apitest.NewUsername(), apitest.NewEmail()) ctx := common.NewSessionContext(context.Background(), user.Session) res, err := client.CreateOrg(ctx, name) require.NoError(t, err) t.Run("bad org", func(t *testing.T) { _, err := client.GetOrg(common.NewOrgSlugContext(ctx, "bad")) require.Error(t, err) }) t.Run("good org", func(t *testing.T) { got, err := client.GetOrg(common.NewOrgSlugContext(ctx, res.OrgInfo.Name)) require.NoError(t, err) assert.Equal(t, res.OrgInfo.Key, got.OrgInfo.Key) }) } func TestClient_ListOrgs(t *testing.T) { t.Parallel() conf, client, _ := setup(t, nil) user := apitest.Signup(t, client, conf, apitest.NewUsername(), apitest.NewEmail()) ctx := common.NewSessionContext(context.Background(), user.Session) t.Run("empty", func(t *testing.T) { orgs, err := client.ListOrgs(ctx) require.NoError(t, err) assert.Empty(t, orgs.List) }) _, err := client.CreateOrg(ctx, "My Org 1") require.NoError(t, err) _, err = client.CreateOrg(ctx, "My Org 2") require.NoError(t, err) t.Run("not empty", func(t *testing.T) { orgs, err := client.ListOrgs(ctx) require.NoError(t, err) assert.Equal(t, 2, len(orgs.List)) }) } func TestClient_RemoveOrg(t *testing.T) { t.Parallel() conf, client, _ := setup(t, nil) name := apitest.NewUsername() user := apitest.Signup(t, client, conf, apitest.NewUsername(), apitest.NewEmail()) ctx := common.NewSessionContext(context.Background(), user.Session) res, err := client.CreateOrg(ctx, name) require.NoError(t, err) t.Run("bad org", func(t *testing.T) { err := client.RemoveOrg(common.NewOrgSlugContext(ctx, "bad")) require.Error(t, err) }) user2 := apitest.Signup(t, client, conf, apitest.NewUsername(), apitest.NewEmail()) ctx2 := common.NewSessionContext(context.Background(), user2.Session) t.Run("bad session", func(t *testing.T) { err := client.RemoveOrg(common.NewOrgSlugContext(ctx2, res.OrgInfo.Name)) require.Error(t, err) }) t.Run("good org", func(t *testing.T) { octx := common.NewOrgSlugContext(ctx, res.OrgInfo.Name) err := client.RemoveOrg(octx) require.NoError(t, err) _, err = client.GetOrg(octx) require.Error(t, err) }) } func TestClient_InviteToOrg(t *testing.T) { t.Parallel() conf, client, _ := setup(t, nil) name := apitest.NewUsername() user := apitest.Signup(t, client, conf, apitest.NewUsername(), apitest.NewEmail()) ctx := common.NewSessionContext(context.Background(), user.Session) res, err := client.CreateOrg(ctx, name) require.NoError(t, err) ctx = common.NewOrgSlugContext(ctx, res.OrgInfo.Name) t.Run("bad email", func(t *testing.T) { _, err := client.InviteToOrg(ctx, "jane") require.Error(t, err) }) t.Run("good email", func(t *testing.T) { res, err := client.InviteToOrg(ctx, apitest.NewEmail()) require.NoError(t, err) assert.NotEmpty(t, res.Token) }) } func TestClient_LeaveOrg(t *testing.T) { t.Parallel() conf, client, _ := setup(t, nil) name := apitest.NewUsername() user := apitest.Signup(t, client, conf, apitest.NewUsername(), apitest.NewEmail()) ctx := common.NewSessionContext(context.Background(), user.Session) res, err := client.CreateOrg(ctx, name) require.NoError(t, err) ctx = common.NewOrgSlugContext(ctx, res.OrgInfo.Name) t.Run("as owner", func(t *testing.T) { err := client.LeaveOrg(ctx) require.Error(t, err) }) user2Email := apitest.NewEmail() user2 := apitest.Signup(t, client, conf, apitest.NewUsername(), user2Email) ctx2 := common.NewSessionContext(ctx, user2.Session) t.Run("as non-member", func(t *testing.T) { err := client.LeaveOrg(ctx2) require.Error(t, err) }) invite, err := client.InviteToOrg(ctx, user2Email) require.NoError(t, err) _, err = http.Get(fmt.Sprintf("%s/consent/%s", conf.AddrGatewayURL, invite.Token)) require.NoError(t, err) t.Run("as member", func(t *testing.T) { err := client.LeaveOrg(ctx2) require.NoError(t, err) }) } func TestClient_SetupBilling(t *testing.T) { t.Parallel() conf, client, _ := setupWithBilling(t) ctx := context.Background() t.Run("without session", func(t *testing.T) { err := client.SetupBilling(ctx) require.Error(t, err) }) user := apitest.Signup(t, client, conf, apitest.NewUsername(), apitest.NewEmail()) t.Run("with session", func(t *testing.T) { err := client.SetupBilling(common.NewSessionContext(ctx, user.Session)) require.Error(t, err) assert.True(t, strings.Contains(err.Error(), "subscription exists")) // Note: There's no way API for canceling the subscription since users // will do that via the Stripe customer portal. So, for now we're not able // to have a test for re-enabling billing after they cancel. }) } func TestClient_GetBillingSession(t *testing.T) { t.Parallel() conf, client, _ := setupWithBilling(t) ctx := context.Background() t.Run("without session", func(t *testing.T) { _, err := client.GetBillingSession(ctx) require.Error(t, err) }) user := apitest.Signup(t, client, conf, apitest.NewUsername(), apitest.NewEmail()) t.Run("with session", func(t *testing.T) { res, err := client.GetBillingSession(common.NewSessionContext(ctx, user.Session)) require.NoError(t, err) assert.NotEmpty(t, res.Url) }) } func TestClient_IsUsernameAvailable(t *testing.T) { t.Parallel() conf, client, _ := setup(t, nil) username := apitest.NewUsername() err := client.IsUsernameAvailable(context.Background(), username) require.NoError(t, err) apitest.Signup(t, client, conf, username, apitest.NewEmail()) err = client.IsUsernameAvailable(context.Background(), username) require.Error(t, err) } func TestClient_IsOrgNameAvailable(t *testing.T) { t.Parallel() conf, client, _ := setup(t, nil) user := apitest.Signup(t, client, conf, apitest.NewUsername(), apitest.NewEmail()) ctx := common.NewSessionContext(context.Background(), user.Session) name := "My awesome org!" res, err := client.IsOrgNameAvailable(ctx, name) require.NoError(t, err) require.Equal(t, "My-awesome-org", res.Slug) res2, err := client.CreateOrg(ctx, name) require.NoError(t, err) require.Equal(t, res.Slug, res2.OrgInfo.Slug) _, err = client.IsOrgNameAvailable(ctx, name) require.Error(t, err) } func TestClient_DestroyAccount(t *testing.T) { t.Parallel() conf, client, _ := setup(t, nil) username := apitest.NewUsername() user := apitest.Signup(t, client, conf, username, apitest.NewEmail()) ctx := common.NewSessionContext(context.Background(), user.Session) err := client.DestroyAccount(ctx) require.NoError(t, err) var wg sync.WaitGroup wg.Add(1) go func() { defer wg.Done() _, err = client.Signin(context.Background(), username) }() apitest.ConfirmEmail(t, conf.AddrGatewayURL, apitest.SessionSecret) wg.Wait() require.Error(t, err) } func TestClose(t *testing.T) { t.Parallel() conf := apitest.MakeTextile(t) target, err := tutil.TCPAddrFromMultiAddr(conf.AddrAPI) require.NoError(t, err) client, err := c.NewClient(target, grpc.WithInsecure(), grpc.WithPerRPCCredentials(common.Credentials{})) require.NoError(t, err) err = client.Close() require.NoError(t, err) } func setup(t *testing.T, conf *core.Config) (core.Config, *c.Client, *tc.Client) { if conf == nil { tmp := apitest.DefaultTextileConfig(t) conf = &tmp } apitest.MakeTextileWithConfig(t, *conf) target, err := tutil.TCPAddrFromMultiAddr(conf.AddrAPI) require.NoError(t, err) opts := []grpc.DialOption{grpc.WithInsecure(), grpc.WithPerRPCCredentials(common.Credentials{})} client, err := c.NewClient(target, opts...) require.NoError(t, err) threadsclient, err := tc.NewClient(target, opts...) require.NoError(t, err) t.Cleanup(func() { err := client.Close() require.NoError(t, err) err = threadsclient.Close() require.NoError(t, err) }) return *conf, client, threadsclient } func setupWithBilling(t *testing.T) (core.Config, *c.Client, *tc.Client) { bconf := apitest.DefaultBillingConfig(t) apitest.MakeBillingWithConfig(t, bconf) conf := apitest.DefaultTextileConfig(t) billingApi, err := tutil.TCPAddrFromMultiAddr(bconf.ListenAddr) require.NoError(t, err) conf.AddrBillingAPI = billingApi return setup(t, &conf) } ================================================ FILE: api/hubd/client/options.go ================================================ package client type listOptions struct { offset int64 limit int64 } type ListOption func(*listOptions) // WithOffset is used to fetch the next page when paginating. func WithOffset(offset int64) ListOption { return func(args *listOptions) { args.offset = offset } } // WithLimit is used to set a page size when paginating. func WithLimit(limit int64) ListOption { return func(args *listOptions) { args.limit = limit } } ================================================ FILE: api/hubd/pb/hubd.pb.go ================================================ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.23.0 // protoc v3.13.0 // source: api/hubd/pb/hubd.proto package pb import ( context "context" proto "github.com/golang/protobuf/proto" pb "github.com/textileio/textile/v2/api/billingd/pb" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) 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 that a sufficiently up-to-date version // of the legacy proto package is being used. const _ = proto.ProtoPackageIsVersion4 type KeyType int32 const ( KeyType_KEY_TYPE_UNSPECIFIED KeyType = 0 KeyType_KEY_TYPE_ACCOUNT KeyType = 1 KeyType_KEY_TYPE_USER KeyType = 2 ) // Enum value maps for KeyType. var ( KeyType_name = map[int32]string{ 0: "KEY_TYPE_UNSPECIFIED", 1: "KEY_TYPE_ACCOUNT", 2: "KEY_TYPE_USER", } KeyType_value = map[string]int32{ "KEY_TYPE_UNSPECIFIED": 0, "KEY_TYPE_ACCOUNT": 1, "KEY_TYPE_USER": 2, } ) func (x KeyType) Enum() *KeyType { p := new(KeyType) *p = x return p } func (x KeyType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (KeyType) Descriptor() protoreflect.EnumDescriptor { return file_api_hubd_pb_hubd_proto_enumTypes[0].Descriptor() } func (KeyType) Type() protoreflect.EnumType { return &file_api_hubd_pb_hubd_proto_enumTypes[0] } func (x KeyType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use KeyType.Descriptor instead. func (KeyType) EnumDescriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{0} } type BuildInfoRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *BuildInfoRequest) Reset() { *x = BuildInfoRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BuildInfoRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*BuildInfoRequest) ProtoMessage() {} func (x *BuildInfoRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 BuildInfoRequest.ProtoReflect.Descriptor instead. func (*BuildInfoRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{0} } type BuildInfoResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GitCommit string `protobuf:"bytes,1,opt,name=git_commit,json=gitCommit,proto3" json:"git_commit,omitempty"` GitBranch string `protobuf:"bytes,2,opt,name=git_branch,json=gitBranch,proto3" json:"git_branch,omitempty"` GitState string `protobuf:"bytes,3,opt,name=git_state,json=gitState,proto3" json:"git_state,omitempty"` GitSummary string `protobuf:"bytes,4,opt,name=git_summary,json=gitSummary,proto3" json:"git_summary,omitempty"` BuildDate string `protobuf:"bytes,5,opt,name=build_date,json=buildDate,proto3" json:"build_date,omitempty"` Version string `protobuf:"bytes,6,opt,name=version,proto3" json:"version,omitempty"` } func (x *BuildInfoResponse) Reset() { *x = BuildInfoResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BuildInfoResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*BuildInfoResponse) ProtoMessage() {} func (x *BuildInfoResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 BuildInfoResponse.ProtoReflect.Descriptor instead. func (*BuildInfoResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{1} } func (x *BuildInfoResponse) GetGitCommit() string { if x != nil { return x.GitCommit } return "" } func (x *BuildInfoResponse) GetGitBranch() string { if x != nil { return x.GitBranch } return "" } func (x *BuildInfoResponse) GetGitState() string { if x != nil { return x.GitState } return "" } func (x *BuildInfoResponse) GetGitSummary() string { if x != nil { return x.GitSummary } return "" } func (x *BuildInfoResponse) GetBuildDate() string { if x != nil { return x.BuildDate } return "" } func (x *BuildInfoResponse) GetVersion() string { if x != nil { return x.Version } return "" } type SignupRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` } func (x *SignupRequest) Reset() { *x = SignupRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignupRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignupRequest) ProtoMessage() {} func (x *SignupRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 SignupRequest.ProtoReflect.Descriptor instead. func (*SignupRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{2} } func (x *SignupRequest) GetUsername() string { if x != nil { return x.Username } return "" } func (x *SignupRequest) GetEmail() string { if x != nil { return x.Email } return "" } type SignupResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Session string `protobuf:"bytes,2,opt,name=session,proto3" json:"session,omitempty"` } func (x *SignupResponse) Reset() { *x = SignupResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignupResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignupResponse) ProtoMessage() {} func (x *SignupResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 SignupResponse.ProtoReflect.Descriptor instead. func (*SignupResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{3} } func (x *SignupResponse) GetKey() []byte { if x != nil { return x.Key } return nil } func (x *SignupResponse) GetSession() string { if x != nil { return x.Session } return "" } type SigninRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UsernameOrEmail string `protobuf:"bytes,1,opt,name=username_or_email,json=usernameOrEmail,proto3" json:"username_or_email,omitempty"` } func (x *SigninRequest) Reset() { *x = SigninRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SigninRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SigninRequest) ProtoMessage() {} func (x *SigninRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 SigninRequest.ProtoReflect.Descriptor instead. func (*SigninRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{4} } func (x *SigninRequest) GetUsernameOrEmail() string { if x != nil { return x.UsernameOrEmail } return "" } type SigninResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Session string `protobuf:"bytes,2,opt,name=session,proto3" json:"session,omitempty"` } func (x *SigninResponse) Reset() { *x = SigninResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SigninResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SigninResponse) ProtoMessage() {} func (x *SigninResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 SigninResponse.ProtoReflect.Descriptor instead. func (*SigninResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{5} } func (x *SigninResponse) GetKey() []byte { if x != nil { return x.Key } return nil } func (x *SigninResponse) GetSession() string { if x != nil { return x.Session } return "" } type SignoutRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SignoutRequest) Reset() { *x = SignoutRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignoutRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignoutRequest) ProtoMessage() {} func (x *SignoutRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 SignoutRequest.ProtoReflect.Descriptor instead. func (*SignoutRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{6} } type SignoutResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SignoutResponse) Reset() { *x = SignoutResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignoutResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignoutResponse) ProtoMessage() {} func (x *SignoutResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 SignoutResponse.ProtoReflect.Descriptor instead. func (*SignoutResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{7} } type GetSessionInfoRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetSessionInfoRequest) Reset() { *x = GetSessionInfoRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSessionInfoRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSessionInfoRequest) ProtoMessage() {} func (x *GetSessionInfoRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 GetSessionInfoRequest.ProtoReflect.Descriptor instead. func (*GetSessionInfoRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{8} } type GetSessionInfoResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` } func (x *GetSessionInfoResponse) Reset() { *x = GetSessionInfoResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSessionInfoResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSessionInfoResponse) ProtoMessage() {} func (x *GetSessionInfoResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 GetSessionInfoResponse.ProtoReflect.Descriptor instead. func (*GetSessionInfoResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{9} } func (x *GetSessionInfoResponse) GetKey() []byte { if x != nil { return x.Key } return nil } func (x *GetSessionInfoResponse) GetUsername() string { if x != nil { return x.Username } return "" } func (x *GetSessionInfoResponse) GetEmail() string { if x != nil { return x.Email } return "" } type GetIdentityRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetIdentityRequest) Reset() { *x = GetIdentityRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetIdentityRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetIdentityRequest) ProtoMessage() {} func (x *GetIdentityRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 GetIdentityRequest.ProtoReflect.Descriptor instead. func (*GetIdentityRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{10} } type GetIdentityResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Identity []byte `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` } func (x *GetIdentityResponse) Reset() { *x = GetIdentityResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetIdentityResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetIdentityResponse) ProtoMessage() {} func (x *GetIdentityResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 GetIdentityResponse.ProtoReflect.Descriptor instead. func (*GetIdentityResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{11} } func (x *GetIdentityResponse) GetIdentity() []byte { if x != nil { return x.Identity } return nil } type KeyInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Secret string `protobuf:"bytes,2,opt,name=secret,proto3" json:"secret,omitempty"` Type KeyType `protobuf:"varint,3,opt,name=type,proto3,enum=api.hubd.pb.KeyType" json:"type,omitempty"` Valid bool `protobuf:"varint,4,opt,name=valid,proto3" json:"valid,omitempty"` Threads int32 `protobuf:"varint,5,opt,name=threads,proto3" json:"threads,omitempty"` Secure bool `protobuf:"varint,6,opt,name=secure,proto3" json:"secure,omitempty"` } func (x *KeyInfo) Reset() { *x = KeyInfo{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *KeyInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*KeyInfo) ProtoMessage() {} func (x *KeyInfo) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 KeyInfo.ProtoReflect.Descriptor instead. func (*KeyInfo) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{12} } func (x *KeyInfo) GetKey() string { if x != nil { return x.Key } return "" } func (x *KeyInfo) GetSecret() string { if x != nil { return x.Secret } return "" } func (x *KeyInfo) GetType() KeyType { if x != nil { return x.Type } return KeyType_KEY_TYPE_UNSPECIFIED } func (x *KeyInfo) GetValid() bool { if x != nil { return x.Valid } return false } func (x *KeyInfo) GetThreads() int32 { if x != nil { return x.Threads } return 0 } func (x *KeyInfo) GetSecure() bool { if x != nil { return x.Secure } return false } type CreateKeyRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type KeyType `protobuf:"varint,1,opt,name=type,proto3,enum=api.hubd.pb.KeyType" json:"type,omitempty"` Secure bool `protobuf:"varint,2,opt,name=secure,proto3" json:"secure,omitempty"` } func (x *CreateKeyRequest) Reset() { *x = CreateKeyRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateKeyRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateKeyRequest) ProtoMessage() {} func (x *CreateKeyRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 CreateKeyRequest.ProtoReflect.Descriptor instead. func (*CreateKeyRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{13} } func (x *CreateKeyRequest) GetType() KeyType { if x != nil { return x.Type } return KeyType_KEY_TYPE_UNSPECIFIED } func (x *CreateKeyRequest) GetSecure() bool { if x != nil { return x.Secure } return false } type CreateKeyResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields KeyInfo *KeyInfo `protobuf:"bytes,1,opt,name=key_info,json=keyInfo,proto3" json:"key_info,omitempty"` } func (x *CreateKeyResponse) Reset() { *x = CreateKeyResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateKeyResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateKeyResponse) ProtoMessage() {} func (x *CreateKeyResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 CreateKeyResponse.ProtoReflect.Descriptor instead. func (*CreateKeyResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{14} } func (x *CreateKeyResponse) GetKeyInfo() *KeyInfo { if x != nil { return x.KeyInfo } return nil } type InvalidateKeyRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } func (x *InvalidateKeyRequest) Reset() { *x = InvalidateKeyRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *InvalidateKeyRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*InvalidateKeyRequest) ProtoMessage() {} func (x *InvalidateKeyRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 InvalidateKeyRequest.ProtoReflect.Descriptor instead. func (*InvalidateKeyRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{15} } func (x *InvalidateKeyRequest) GetKey() string { if x != nil { return x.Key } return "" } type InvalidateKeyResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *InvalidateKeyResponse) Reset() { *x = InvalidateKeyResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *InvalidateKeyResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*InvalidateKeyResponse) ProtoMessage() {} func (x *InvalidateKeyResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 InvalidateKeyResponse.ProtoReflect.Descriptor instead. func (*InvalidateKeyResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{16} } type ListKeysRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ListKeysRequest) Reset() { *x = ListKeysRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListKeysRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListKeysRequest) ProtoMessage() {} func (x *ListKeysRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 ListKeysRequest.ProtoReflect.Descriptor instead. func (*ListKeysRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{17} } type ListKeysResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields List []*KeyInfo `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` } func (x *ListKeysResponse) Reset() { *x = ListKeysResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListKeysResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListKeysResponse) ProtoMessage() {} func (x *ListKeysResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 ListKeysResponse.ProtoReflect.Descriptor instead. func (*ListKeysResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{18} } func (x *ListKeysResponse) GetList() []*KeyInfo { if x != nil { return x.List } return nil } type OrgInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"` Host string `protobuf:"bytes,4,opt,name=host,proto3" json:"host,omitempty"` Members []*OrgInfo_Member `protobuf:"bytes,5,rep,name=members,proto3" json:"members,omitempty"` CreatedAt int64 `protobuf:"varint,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` } func (x *OrgInfo) Reset() { *x = OrgInfo{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OrgInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*OrgInfo) ProtoMessage() {} func (x *OrgInfo) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 OrgInfo.ProtoReflect.Descriptor instead. func (*OrgInfo) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{19} } func (x *OrgInfo) GetKey() []byte { if x != nil { return x.Key } return nil } func (x *OrgInfo) GetName() string { if x != nil { return x.Name } return "" } func (x *OrgInfo) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *OrgInfo) GetHost() string { if x != nil { return x.Host } return "" } func (x *OrgInfo) GetMembers() []*OrgInfo_Member { if x != nil { return x.Members } return nil } func (x *OrgInfo) GetCreatedAt() int64 { if x != nil { return x.CreatedAt } return 0 } type CreateOrgRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *CreateOrgRequest) Reset() { *x = CreateOrgRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateOrgRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateOrgRequest) ProtoMessage() {} func (x *CreateOrgRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_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 CreateOrgRequest.ProtoReflect.Descriptor instead. func (*CreateOrgRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{20} } func (x *CreateOrgRequest) GetName() string { if x != nil { return x.Name } return "" } type CreateOrgResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OrgInfo *OrgInfo `protobuf:"bytes,1,opt,name=org_info,json=orgInfo,proto3" json:"org_info,omitempty"` } func (x *CreateOrgResponse) Reset() { *x = CreateOrgResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateOrgResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateOrgResponse) ProtoMessage() {} func (x *CreateOrgResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[21] 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 CreateOrgResponse.ProtoReflect.Descriptor instead. func (*CreateOrgResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{21} } func (x *CreateOrgResponse) GetOrgInfo() *OrgInfo { if x != nil { return x.OrgInfo } return nil } type GetOrgRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetOrgRequest) Reset() { *x = GetOrgRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetOrgRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetOrgRequest) ProtoMessage() {} func (x *GetOrgRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[22] 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 GetOrgRequest.ProtoReflect.Descriptor instead. func (*GetOrgRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{22} } type GetOrgResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OrgInfo *OrgInfo `protobuf:"bytes,1,opt,name=org_info,json=orgInfo,proto3" json:"org_info,omitempty"` } func (x *GetOrgResponse) Reset() { *x = GetOrgResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetOrgResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetOrgResponse) ProtoMessage() {} func (x *GetOrgResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[23] 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 GetOrgResponse.ProtoReflect.Descriptor instead. func (*GetOrgResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{23} } func (x *GetOrgResponse) GetOrgInfo() *OrgInfo { if x != nil { return x.OrgInfo } return nil } type ListOrgsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ListOrgsRequest) Reset() { *x = ListOrgsRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListOrgsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListOrgsRequest) ProtoMessage() {} func (x *ListOrgsRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[24] 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 ListOrgsRequest.ProtoReflect.Descriptor instead. func (*ListOrgsRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{24} } type ListOrgsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields List []*OrgInfo `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` } func (x *ListOrgsResponse) Reset() { *x = ListOrgsResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListOrgsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListOrgsResponse) ProtoMessage() {} func (x *ListOrgsResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[25] 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 ListOrgsResponse.ProtoReflect.Descriptor instead. func (*ListOrgsResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{25} } func (x *ListOrgsResponse) GetList() []*OrgInfo { if x != nil { return x.List } return nil } type RemoveOrgRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *RemoveOrgRequest) Reset() { *x = RemoveOrgRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RemoveOrgRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RemoveOrgRequest) ProtoMessage() {} func (x *RemoveOrgRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[26] 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 RemoveOrgRequest.ProtoReflect.Descriptor instead. func (*RemoveOrgRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{26} } type RemoveOrgResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *RemoveOrgResponse) Reset() { *x = RemoveOrgResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RemoveOrgResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RemoveOrgResponse) ProtoMessage() {} func (x *RemoveOrgResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[27] 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 RemoveOrgResponse.ProtoReflect.Descriptor instead. func (*RemoveOrgResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{27} } type InviteToOrgRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` } func (x *InviteToOrgRequest) Reset() { *x = InviteToOrgRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *InviteToOrgRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*InviteToOrgRequest) ProtoMessage() {} func (x *InviteToOrgRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[28] 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 InviteToOrgRequest.ProtoReflect.Descriptor instead. func (*InviteToOrgRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{28} } func (x *InviteToOrgRequest) GetEmail() string { if x != nil { return x.Email } return "" } type InviteToOrgResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` } func (x *InviteToOrgResponse) Reset() { *x = InviteToOrgResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *InviteToOrgResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*InviteToOrgResponse) ProtoMessage() {} func (x *InviteToOrgResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[29] 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 InviteToOrgResponse.ProtoReflect.Descriptor instead. func (*InviteToOrgResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{29} } func (x *InviteToOrgResponse) GetToken() string { if x != nil { return x.Token } return "" } type LeaveOrgRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *LeaveOrgRequest) Reset() { *x = LeaveOrgRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LeaveOrgRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*LeaveOrgRequest) ProtoMessage() {} func (x *LeaveOrgRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[30] 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 LeaveOrgRequest.ProtoReflect.Descriptor instead. func (*LeaveOrgRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{30} } type LeaveOrgResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *LeaveOrgResponse) Reset() { *x = LeaveOrgResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LeaveOrgResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*LeaveOrgResponse) ProtoMessage() {} func (x *LeaveOrgResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[31] 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 LeaveOrgResponse.ProtoReflect.Descriptor instead. func (*LeaveOrgResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{31} } type SetupBillingRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SetupBillingRequest) Reset() { *x = SetupBillingRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetupBillingRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetupBillingRequest) ProtoMessage() {} func (x *SetupBillingRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[32] 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 SetupBillingRequest.ProtoReflect.Descriptor instead. func (*SetupBillingRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{32} } type SetupBillingResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SetupBillingResponse) Reset() { *x = SetupBillingResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetupBillingResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetupBillingResponse) ProtoMessage() {} func (x *SetupBillingResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[33] 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 SetupBillingResponse.ProtoReflect.Descriptor instead. func (*SetupBillingResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{33} } type GetBillingSessionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetBillingSessionRequest) Reset() { *x = GetBillingSessionRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetBillingSessionRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetBillingSessionRequest) ProtoMessage() {} func (x *GetBillingSessionRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[34] 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 GetBillingSessionRequest.ProtoReflect.Descriptor instead. func (*GetBillingSessionRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{34} } type GetBillingSessionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` } func (x *GetBillingSessionResponse) Reset() { *x = GetBillingSessionResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetBillingSessionResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetBillingSessionResponse) ProtoMessage() {} func (x *GetBillingSessionResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[35] 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 GetBillingSessionResponse.ProtoReflect.Descriptor instead. func (*GetBillingSessionResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{35} } func (x *GetBillingSessionResponse) GetUrl() string { if x != nil { return x.Url } return "" } type ListBillingUsersRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Offset int64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"` Limit int64 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` } func (x *ListBillingUsersRequest) Reset() { *x = ListBillingUsersRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListBillingUsersRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListBillingUsersRequest) ProtoMessage() {} func (x *ListBillingUsersRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[36] 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 ListBillingUsersRequest.ProtoReflect.Descriptor instead. func (*ListBillingUsersRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{36} } func (x *ListBillingUsersRequest) GetOffset() int64 { if x != nil { return x.Offset } return 0 } func (x *ListBillingUsersRequest) GetLimit() int64 { if x != nil { return x.Limit } return 0 } type ListBillingUsersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Users []*pb.GetCustomerResponse `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` NextOffset int64 `protobuf:"varint,2,opt,name=next_offset,json=nextOffset,proto3" json:"next_offset,omitempty"` } func (x *ListBillingUsersResponse) Reset() { *x = ListBillingUsersResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListBillingUsersResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListBillingUsersResponse) ProtoMessage() {} func (x *ListBillingUsersResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[37] 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 ListBillingUsersResponse.ProtoReflect.Descriptor instead. func (*ListBillingUsersResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{37} } func (x *ListBillingUsersResponse) GetUsers() []*pb.GetCustomerResponse { if x != nil { return x.Users } return nil } func (x *ListBillingUsersResponse) GetNextOffset() int64 { if x != nil { return x.NextOffset } return 0 } type IsUsernameAvailableRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` } func (x *IsUsernameAvailableRequest) Reset() { *x = IsUsernameAvailableRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IsUsernameAvailableRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*IsUsernameAvailableRequest) ProtoMessage() {} func (x *IsUsernameAvailableRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[38] 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 IsUsernameAvailableRequest.ProtoReflect.Descriptor instead. func (*IsUsernameAvailableRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{38} } func (x *IsUsernameAvailableRequest) GetUsername() string { if x != nil { return x.Username } return "" } type IsUsernameAvailableResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *IsUsernameAvailableResponse) Reset() { *x = IsUsernameAvailableResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IsUsernameAvailableResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*IsUsernameAvailableResponse) ProtoMessage() {} func (x *IsUsernameAvailableResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[39] 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 IsUsernameAvailableResponse.ProtoReflect.Descriptor instead. func (*IsUsernameAvailableResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{39} } type IsOrgNameAvailableRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *IsOrgNameAvailableRequest) Reset() { *x = IsOrgNameAvailableRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IsOrgNameAvailableRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*IsOrgNameAvailableRequest) ProtoMessage() {} func (x *IsOrgNameAvailableRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[40] 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 IsOrgNameAvailableRequest.ProtoReflect.Descriptor instead. func (*IsOrgNameAvailableRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{40} } func (x *IsOrgNameAvailableRequest) GetName() string { if x != nil { return x.Name } return "" } type IsOrgNameAvailableResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Slug string `protobuf:"bytes,1,opt,name=slug,proto3" json:"slug,omitempty"` Host string `protobuf:"bytes,2,opt,name=host,proto3" json:"host,omitempty"` } func (x *IsOrgNameAvailableResponse) Reset() { *x = IsOrgNameAvailableResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IsOrgNameAvailableResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*IsOrgNameAvailableResponse) ProtoMessage() {} func (x *IsOrgNameAvailableResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[41] 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 IsOrgNameAvailableResponse.ProtoReflect.Descriptor instead. func (*IsOrgNameAvailableResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{41} } func (x *IsOrgNameAvailableResponse) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *IsOrgNameAvailableResponse) GetHost() string { if x != nil { return x.Host } return "" } type DestroyAccountRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DestroyAccountRequest) Reset() { *x = DestroyAccountRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DestroyAccountRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DestroyAccountRequest) ProtoMessage() {} func (x *DestroyAccountRequest) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[42] 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 DestroyAccountRequest.ProtoReflect.Descriptor instead. func (*DestroyAccountRequest) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{42} } type DestroyAccountResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DestroyAccountResponse) Reset() { *x = DestroyAccountResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DestroyAccountResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DestroyAccountResponse) ProtoMessage() {} func (x *DestroyAccountResponse) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[43] 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 DestroyAccountResponse.ProtoReflect.Descriptor instead. func (*DestroyAccountResponse) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{43} } type OrgInfo_Member struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` Role string `protobuf:"bytes,3,opt,name=role,proto3" json:"role,omitempty"` } func (x *OrgInfo_Member) Reset() { *x = OrgInfo_Member{} if protoimpl.UnsafeEnabled { mi := &file_api_hubd_pb_hubd_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OrgInfo_Member) String() string { return protoimpl.X.MessageStringOf(x) } func (*OrgInfo_Member) ProtoMessage() {} func (x *OrgInfo_Member) ProtoReflect() protoreflect.Message { mi := &file_api_hubd_pb_hubd_proto_msgTypes[44] 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 OrgInfo_Member.ProtoReflect.Descriptor instead. func (*OrgInfo_Member) Descriptor() ([]byte, []int) { return file_api_hubd_pb_hubd_proto_rawDescGZIP(), []int{19, 0} } func (x *OrgInfo_Member) GetKey() []byte { if x != nil { return x.Key } return nil } func (x *OrgInfo_Member) GetUsername() string { if x != nil { return x.Username } return "" } func (x *OrgInfo_Member) GetRole() string { if x != nil { return x.Role } return "" } var File_api_hubd_pb_hubd_proto protoreflect.FileDescriptor var file_api_hubd_pb_hubd_proto_rawDesc = []byte{ 0x0a, 0x16, 0x61, 0x70, 0x69, 0x2f, 0x68, 0x75, 0x62, 0x64, 0x2f, 0x70, 0x62, 0x2f, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x1a, 0x1e, 0x61, 0x70, 0x69, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2f, 0x70, 0x62, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x12, 0x0a, 0x10, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xc8, 0x01, 0x0a, 0x11, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x69, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x69, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x41, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x3c, 0x0a, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3b, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x6f, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x4f, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x3c, 0x0a, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x10, 0x0a, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x11, 0x0a, 0x0f, 0x53, 0x69, 0x67, 0x6e, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5c, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x31, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0xa5, 0x01, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x22, 0x54, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x22, 0x44, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x28, 0x0a, 0x14, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x17, 0x0a, 0x15, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3c, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0xf9, 0x01, 0x0a, 0x07, 0x4f, 0x72, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4f, 0x72, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x1a, 0x4a, 0x0a, 0x06, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x26, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x44, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4f, 0x72, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6f, 0x72, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x0f, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x41, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4f, 0x72, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6f, 0x72, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x11, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3c, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4f, 0x72, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x12, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x2b, 0x0a, 0x13, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x11, 0x0a, 0x0f, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x12, 0x0a, 0x10, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x75, 0x70, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x16, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x75, 0x70, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2d, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x47, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x77, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x38, 0x0a, 0x1a, 0x49, 0x73, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x49, 0x73, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x0a, 0x19, 0x49, 0x73, 0x4f, 0x72, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x44, 0x0a, 0x1a, 0x49, 0x73, 0x4f, 0x72, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x4c, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x02, 0x32, 0xed, 0x0d, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4c, 0x0a, 0x09, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x06, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x12, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x06, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x12, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x07, 0x53, 0x69, 0x67, 0x6e, 0x6f, 0x75, 0x74, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x0d, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x12, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x12, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x73, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x09, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x12, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0b, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x4f, 0x72, 0x67, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x08, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x75, 0x70, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x75, 0x70, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x75, 0x70, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6a, 0x0a, 0x13, 0x49, 0x73, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x73, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x73, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x12, 0x49, 0x73, 0x4f, 0x72, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x73, 0x4f, 0x72, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x73, 0x4f, 0x72, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x0e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x68, 0x75, 0x62, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2d, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x69, 0x6f, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x68, 0x75, 0x62, 0x64, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_api_hubd_pb_hubd_proto_rawDescOnce sync.Once file_api_hubd_pb_hubd_proto_rawDescData = file_api_hubd_pb_hubd_proto_rawDesc ) func file_api_hubd_pb_hubd_proto_rawDescGZIP() []byte { file_api_hubd_pb_hubd_proto_rawDescOnce.Do(func() { file_api_hubd_pb_hubd_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_hubd_pb_hubd_proto_rawDescData) }) return file_api_hubd_pb_hubd_proto_rawDescData } var file_api_hubd_pb_hubd_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_api_hubd_pb_hubd_proto_msgTypes = make([]protoimpl.MessageInfo, 45) var file_api_hubd_pb_hubd_proto_goTypes = []interface{}{ (KeyType)(0), // 0: api.hubd.pb.KeyType (*BuildInfoRequest)(nil), // 1: api.hubd.pb.BuildInfoRequest (*BuildInfoResponse)(nil), // 2: api.hubd.pb.BuildInfoResponse (*SignupRequest)(nil), // 3: api.hubd.pb.SignupRequest (*SignupResponse)(nil), // 4: api.hubd.pb.SignupResponse (*SigninRequest)(nil), // 5: api.hubd.pb.SigninRequest (*SigninResponse)(nil), // 6: api.hubd.pb.SigninResponse (*SignoutRequest)(nil), // 7: api.hubd.pb.SignoutRequest (*SignoutResponse)(nil), // 8: api.hubd.pb.SignoutResponse (*GetSessionInfoRequest)(nil), // 9: api.hubd.pb.GetSessionInfoRequest (*GetSessionInfoResponse)(nil), // 10: api.hubd.pb.GetSessionInfoResponse (*GetIdentityRequest)(nil), // 11: api.hubd.pb.GetIdentityRequest (*GetIdentityResponse)(nil), // 12: api.hubd.pb.GetIdentityResponse (*KeyInfo)(nil), // 13: api.hubd.pb.KeyInfo (*CreateKeyRequest)(nil), // 14: api.hubd.pb.CreateKeyRequest (*CreateKeyResponse)(nil), // 15: api.hubd.pb.CreateKeyResponse (*InvalidateKeyRequest)(nil), // 16: api.hubd.pb.InvalidateKeyRequest (*InvalidateKeyResponse)(nil), // 17: api.hubd.pb.InvalidateKeyResponse (*ListKeysRequest)(nil), // 18: api.hubd.pb.ListKeysRequest (*ListKeysResponse)(nil), // 19: api.hubd.pb.ListKeysResponse (*OrgInfo)(nil), // 20: api.hubd.pb.OrgInfo (*CreateOrgRequest)(nil), // 21: api.hubd.pb.CreateOrgRequest (*CreateOrgResponse)(nil), // 22: api.hubd.pb.CreateOrgResponse (*GetOrgRequest)(nil), // 23: api.hubd.pb.GetOrgRequest (*GetOrgResponse)(nil), // 24: api.hubd.pb.GetOrgResponse (*ListOrgsRequest)(nil), // 25: api.hubd.pb.ListOrgsRequest (*ListOrgsResponse)(nil), // 26: api.hubd.pb.ListOrgsResponse (*RemoveOrgRequest)(nil), // 27: api.hubd.pb.RemoveOrgRequest (*RemoveOrgResponse)(nil), // 28: api.hubd.pb.RemoveOrgResponse (*InviteToOrgRequest)(nil), // 29: api.hubd.pb.InviteToOrgRequest (*InviteToOrgResponse)(nil), // 30: api.hubd.pb.InviteToOrgResponse (*LeaveOrgRequest)(nil), // 31: api.hubd.pb.LeaveOrgRequest (*LeaveOrgResponse)(nil), // 32: api.hubd.pb.LeaveOrgResponse (*SetupBillingRequest)(nil), // 33: api.hubd.pb.SetupBillingRequest (*SetupBillingResponse)(nil), // 34: api.hubd.pb.SetupBillingResponse (*GetBillingSessionRequest)(nil), // 35: api.hubd.pb.GetBillingSessionRequest (*GetBillingSessionResponse)(nil), // 36: api.hubd.pb.GetBillingSessionResponse (*ListBillingUsersRequest)(nil), // 37: api.hubd.pb.ListBillingUsersRequest (*ListBillingUsersResponse)(nil), // 38: api.hubd.pb.ListBillingUsersResponse (*IsUsernameAvailableRequest)(nil), // 39: api.hubd.pb.IsUsernameAvailableRequest (*IsUsernameAvailableResponse)(nil), // 40: api.hubd.pb.IsUsernameAvailableResponse (*IsOrgNameAvailableRequest)(nil), // 41: api.hubd.pb.IsOrgNameAvailableRequest (*IsOrgNameAvailableResponse)(nil), // 42: api.hubd.pb.IsOrgNameAvailableResponse (*DestroyAccountRequest)(nil), // 43: api.hubd.pb.DestroyAccountRequest (*DestroyAccountResponse)(nil), // 44: api.hubd.pb.DestroyAccountResponse (*OrgInfo_Member)(nil), // 45: api.hubd.pb.OrgInfo.Member (*pb.GetCustomerResponse)(nil), // 46: api.billingd.pb.GetCustomerResponse } var file_api_hubd_pb_hubd_proto_depIdxs = []int32{ 0, // 0: api.hubd.pb.KeyInfo.type:type_name -> api.hubd.pb.KeyType 0, // 1: api.hubd.pb.CreateKeyRequest.type:type_name -> api.hubd.pb.KeyType 13, // 2: api.hubd.pb.CreateKeyResponse.key_info:type_name -> api.hubd.pb.KeyInfo 13, // 3: api.hubd.pb.ListKeysResponse.list:type_name -> api.hubd.pb.KeyInfo 45, // 4: api.hubd.pb.OrgInfo.members:type_name -> api.hubd.pb.OrgInfo.Member 20, // 5: api.hubd.pb.CreateOrgResponse.org_info:type_name -> api.hubd.pb.OrgInfo 20, // 6: api.hubd.pb.GetOrgResponse.org_info:type_name -> api.hubd.pb.OrgInfo 20, // 7: api.hubd.pb.ListOrgsResponse.list:type_name -> api.hubd.pb.OrgInfo 46, // 8: api.hubd.pb.ListBillingUsersResponse.users:type_name -> api.billingd.pb.GetCustomerResponse 1, // 9: api.hubd.pb.APIService.BuildInfo:input_type -> api.hubd.pb.BuildInfoRequest 3, // 10: api.hubd.pb.APIService.Signup:input_type -> api.hubd.pb.SignupRequest 5, // 11: api.hubd.pb.APIService.Signin:input_type -> api.hubd.pb.SigninRequest 7, // 12: api.hubd.pb.APIService.Signout:input_type -> api.hubd.pb.SignoutRequest 9, // 13: api.hubd.pb.APIService.GetSessionInfo:input_type -> api.hubd.pb.GetSessionInfoRequest 11, // 14: api.hubd.pb.APIService.GetIdentity:input_type -> api.hubd.pb.GetIdentityRequest 14, // 15: api.hubd.pb.APIService.CreateKey:input_type -> api.hubd.pb.CreateKeyRequest 18, // 16: api.hubd.pb.APIService.ListKeys:input_type -> api.hubd.pb.ListKeysRequest 16, // 17: api.hubd.pb.APIService.InvalidateKey:input_type -> api.hubd.pb.InvalidateKeyRequest 21, // 18: api.hubd.pb.APIService.CreateOrg:input_type -> api.hubd.pb.CreateOrgRequest 23, // 19: api.hubd.pb.APIService.GetOrg:input_type -> api.hubd.pb.GetOrgRequest 25, // 20: api.hubd.pb.APIService.ListOrgs:input_type -> api.hubd.pb.ListOrgsRequest 27, // 21: api.hubd.pb.APIService.RemoveOrg:input_type -> api.hubd.pb.RemoveOrgRequest 29, // 22: api.hubd.pb.APIService.InviteToOrg:input_type -> api.hubd.pb.InviteToOrgRequest 31, // 23: api.hubd.pb.APIService.LeaveOrg:input_type -> api.hubd.pb.LeaveOrgRequest 33, // 24: api.hubd.pb.APIService.SetupBilling:input_type -> api.hubd.pb.SetupBillingRequest 35, // 25: api.hubd.pb.APIService.GetBillingSession:input_type -> api.hubd.pb.GetBillingSessionRequest 37, // 26: api.hubd.pb.APIService.ListBillingUsers:input_type -> api.hubd.pb.ListBillingUsersRequest 39, // 27: api.hubd.pb.APIService.IsUsernameAvailable:input_type -> api.hubd.pb.IsUsernameAvailableRequest 41, // 28: api.hubd.pb.APIService.IsOrgNameAvailable:input_type -> api.hubd.pb.IsOrgNameAvailableRequest 43, // 29: api.hubd.pb.APIService.DestroyAccount:input_type -> api.hubd.pb.DestroyAccountRequest 2, // 30: api.hubd.pb.APIService.BuildInfo:output_type -> api.hubd.pb.BuildInfoResponse 4, // 31: api.hubd.pb.APIService.Signup:output_type -> api.hubd.pb.SignupResponse 6, // 32: api.hubd.pb.APIService.Signin:output_type -> api.hubd.pb.SigninResponse 8, // 33: api.hubd.pb.APIService.Signout:output_type -> api.hubd.pb.SignoutResponse 10, // 34: api.hubd.pb.APIService.GetSessionInfo:output_type -> api.hubd.pb.GetSessionInfoResponse 12, // 35: api.hubd.pb.APIService.GetIdentity:output_type -> api.hubd.pb.GetIdentityResponse 15, // 36: api.hubd.pb.APIService.CreateKey:output_type -> api.hubd.pb.CreateKeyResponse 19, // 37: api.hubd.pb.APIService.ListKeys:output_type -> api.hubd.pb.ListKeysResponse 17, // 38: api.hubd.pb.APIService.InvalidateKey:output_type -> api.hubd.pb.InvalidateKeyResponse 22, // 39: api.hubd.pb.APIService.CreateOrg:output_type -> api.hubd.pb.CreateOrgResponse 24, // 40: api.hubd.pb.APIService.GetOrg:output_type -> api.hubd.pb.GetOrgResponse 26, // 41: api.hubd.pb.APIService.ListOrgs:output_type -> api.hubd.pb.ListOrgsResponse 28, // 42: api.hubd.pb.APIService.RemoveOrg:output_type -> api.hubd.pb.RemoveOrgResponse 30, // 43: api.hubd.pb.APIService.InviteToOrg:output_type -> api.hubd.pb.InviteToOrgResponse 32, // 44: api.hubd.pb.APIService.LeaveOrg:output_type -> api.hubd.pb.LeaveOrgResponse 34, // 45: api.hubd.pb.APIService.SetupBilling:output_type -> api.hubd.pb.SetupBillingResponse 36, // 46: api.hubd.pb.APIService.GetBillingSession:output_type -> api.hubd.pb.GetBillingSessionResponse 38, // 47: api.hubd.pb.APIService.ListBillingUsers:output_type -> api.hubd.pb.ListBillingUsersResponse 40, // 48: api.hubd.pb.APIService.IsUsernameAvailable:output_type -> api.hubd.pb.IsUsernameAvailableResponse 42, // 49: api.hubd.pb.APIService.IsOrgNameAvailable:output_type -> api.hubd.pb.IsOrgNameAvailableResponse 44, // 50: api.hubd.pb.APIService.DestroyAccount:output_type -> api.hubd.pb.DestroyAccountResponse 30, // [30:51] is the sub-list for method output_type 9, // [9:30] is the sub-list for method input_type 9, // [9:9] is the sub-list for extension type_name 9, // [9:9] is the sub-list for extension extendee 0, // [0:9] is the sub-list for field type_name } func init() { file_api_hubd_pb_hubd_proto_init() } func file_api_hubd_pb_hubd_proto_init() { if File_api_hubd_pb_hubd_proto != nil { return } if !protoimpl.UnsafeEnabled { file_api_hubd_pb_hubd_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BuildInfoRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BuildInfoResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignupRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignupResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SigninRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SigninResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignoutRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignoutResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSessionInfoRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSessionInfoResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetIdentityRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetIdentityResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*KeyInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateKeyRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateKeyResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InvalidateKeyRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InvalidateKeyResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListKeysRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListKeysResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OrgInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateOrgRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateOrgResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetOrgRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetOrgResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListOrgsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListOrgsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveOrgRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveOrgResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InviteToOrgRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InviteToOrgResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LeaveOrgRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LeaveOrgResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetupBillingRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetupBillingResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetBillingSessionRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetBillingSessionResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListBillingUsersRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListBillingUsersResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IsUsernameAvailableRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IsUsernameAvailableResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IsOrgNameAvailableRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IsOrgNameAvailableResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DestroyAccountRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DestroyAccountResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_hubd_pb_hubd_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OrgInfo_Member); 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_api_hubd_pb_hubd_proto_rawDesc, NumEnums: 1, NumMessages: 45, NumExtensions: 0, NumServices: 1, }, GoTypes: file_api_hubd_pb_hubd_proto_goTypes, DependencyIndexes: file_api_hubd_pb_hubd_proto_depIdxs, EnumInfos: file_api_hubd_pb_hubd_proto_enumTypes, MessageInfos: file_api_hubd_pb_hubd_proto_msgTypes, }.Build() File_api_hubd_pb_hubd_proto = out.File file_api_hubd_pb_hubd_proto_rawDesc = nil file_api_hubd_pb_hubd_proto_goTypes = nil file_api_hubd_pb_hubd_proto_depIdxs = nil } // Reference imports to suppress errors if they are not otherwise used. var _ context.Context var _ grpc.ClientConnInterface // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. const _ = grpc.SupportPackageIsVersion6 // APIServiceClient is the client API for APIService service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type APIServiceClient interface { BuildInfo(ctx context.Context, in *BuildInfoRequest, opts ...grpc.CallOption) (*BuildInfoResponse, error) Signup(ctx context.Context, in *SignupRequest, opts ...grpc.CallOption) (*SignupResponse, error) Signin(ctx context.Context, in *SigninRequest, opts ...grpc.CallOption) (*SigninResponse, error) Signout(ctx context.Context, in *SignoutRequest, opts ...grpc.CallOption) (*SignoutResponse, error) GetSessionInfo(ctx context.Context, in *GetSessionInfoRequest, opts ...grpc.CallOption) (*GetSessionInfoResponse, error) GetIdentity(ctx context.Context, in *GetIdentityRequest, opts ...grpc.CallOption) (*GetIdentityResponse, error) CreateKey(ctx context.Context, in *CreateKeyRequest, opts ...grpc.CallOption) (*CreateKeyResponse, error) ListKeys(ctx context.Context, in *ListKeysRequest, opts ...grpc.CallOption) (*ListKeysResponse, error) InvalidateKey(ctx context.Context, in *InvalidateKeyRequest, opts ...grpc.CallOption) (*InvalidateKeyResponse, error) CreateOrg(ctx context.Context, in *CreateOrgRequest, opts ...grpc.CallOption) (*CreateOrgResponse, error) GetOrg(ctx context.Context, in *GetOrgRequest, opts ...grpc.CallOption) (*GetOrgResponse, error) ListOrgs(ctx context.Context, in *ListOrgsRequest, opts ...grpc.CallOption) (*ListOrgsResponse, error) RemoveOrg(ctx context.Context, in *RemoveOrgRequest, opts ...grpc.CallOption) (*RemoveOrgResponse, error) InviteToOrg(ctx context.Context, in *InviteToOrgRequest, opts ...grpc.CallOption) (*InviteToOrgResponse, error) LeaveOrg(ctx context.Context, in *LeaveOrgRequest, opts ...grpc.CallOption) (*LeaveOrgResponse, error) SetupBilling(ctx context.Context, in *SetupBillingRequest, opts ...grpc.CallOption) (*SetupBillingResponse, error) GetBillingSession(ctx context.Context, in *GetBillingSessionRequest, opts ...grpc.CallOption) (*GetBillingSessionResponse, error) ListBillingUsers(ctx context.Context, in *ListBillingUsersRequest, opts ...grpc.CallOption) (*ListBillingUsersResponse, error) IsUsernameAvailable(ctx context.Context, in *IsUsernameAvailableRequest, opts ...grpc.CallOption) (*IsUsernameAvailableResponse, error) IsOrgNameAvailable(ctx context.Context, in *IsOrgNameAvailableRequest, opts ...grpc.CallOption) (*IsOrgNameAvailableResponse, error) DestroyAccount(ctx context.Context, in *DestroyAccountRequest, opts ...grpc.CallOption) (*DestroyAccountResponse, error) } type aPIServiceClient struct { cc grpc.ClientConnInterface } func NewAPIServiceClient(cc grpc.ClientConnInterface) APIServiceClient { return &aPIServiceClient{cc} } func (c *aPIServiceClient) BuildInfo(ctx context.Context, in *BuildInfoRequest, opts ...grpc.CallOption) (*BuildInfoResponse, error) { out := new(BuildInfoResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/BuildInfo", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) Signup(ctx context.Context, in *SignupRequest, opts ...grpc.CallOption) (*SignupResponse, error) { out := new(SignupResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/Signup", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) Signin(ctx context.Context, in *SigninRequest, opts ...grpc.CallOption) (*SigninResponse, error) { out := new(SigninResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/Signin", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) Signout(ctx context.Context, in *SignoutRequest, opts ...grpc.CallOption) (*SignoutResponse, error) { out := new(SignoutResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/Signout", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) GetSessionInfo(ctx context.Context, in *GetSessionInfoRequest, opts ...grpc.CallOption) (*GetSessionInfoResponse, error) { out := new(GetSessionInfoResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/GetSessionInfo", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) GetIdentity(ctx context.Context, in *GetIdentityRequest, opts ...grpc.CallOption) (*GetIdentityResponse, error) { out := new(GetIdentityResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/GetIdentity", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) CreateKey(ctx context.Context, in *CreateKeyRequest, opts ...grpc.CallOption) (*CreateKeyResponse, error) { out := new(CreateKeyResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/CreateKey", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) ListKeys(ctx context.Context, in *ListKeysRequest, opts ...grpc.CallOption) (*ListKeysResponse, error) { out := new(ListKeysResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/ListKeys", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) InvalidateKey(ctx context.Context, in *InvalidateKeyRequest, opts ...grpc.CallOption) (*InvalidateKeyResponse, error) { out := new(InvalidateKeyResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/InvalidateKey", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) CreateOrg(ctx context.Context, in *CreateOrgRequest, opts ...grpc.CallOption) (*CreateOrgResponse, error) { out := new(CreateOrgResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/CreateOrg", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) GetOrg(ctx context.Context, in *GetOrgRequest, opts ...grpc.CallOption) (*GetOrgResponse, error) { out := new(GetOrgResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/GetOrg", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) ListOrgs(ctx context.Context, in *ListOrgsRequest, opts ...grpc.CallOption) (*ListOrgsResponse, error) { out := new(ListOrgsResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/ListOrgs", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) RemoveOrg(ctx context.Context, in *RemoveOrgRequest, opts ...grpc.CallOption) (*RemoveOrgResponse, error) { out := new(RemoveOrgResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/RemoveOrg", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) InviteToOrg(ctx context.Context, in *InviteToOrgRequest, opts ...grpc.CallOption) (*InviteToOrgResponse, error) { out := new(InviteToOrgResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/InviteToOrg", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) LeaveOrg(ctx context.Context, in *LeaveOrgRequest, opts ...grpc.CallOption) (*LeaveOrgResponse, error) { out := new(LeaveOrgResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/LeaveOrg", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) SetupBilling(ctx context.Context, in *SetupBillingRequest, opts ...grpc.CallOption) (*SetupBillingResponse, error) { out := new(SetupBillingResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/SetupBilling", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) GetBillingSession(ctx context.Context, in *GetBillingSessionRequest, opts ...grpc.CallOption) (*GetBillingSessionResponse, error) { out := new(GetBillingSessionResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/GetBillingSession", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) ListBillingUsers(ctx context.Context, in *ListBillingUsersRequest, opts ...grpc.CallOption) (*ListBillingUsersResponse, error) { out := new(ListBillingUsersResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/ListBillingUsers", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) IsUsernameAvailable(ctx context.Context, in *IsUsernameAvailableRequest, opts ...grpc.CallOption) (*IsUsernameAvailableResponse, error) { out := new(IsUsernameAvailableResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/IsUsernameAvailable", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) IsOrgNameAvailable(ctx context.Context, in *IsOrgNameAvailableRequest, opts ...grpc.CallOption) (*IsOrgNameAvailableResponse, error) { out := new(IsOrgNameAvailableResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/IsOrgNameAvailable", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) DestroyAccount(ctx context.Context, in *DestroyAccountRequest, opts ...grpc.CallOption) (*DestroyAccountResponse, error) { out := new(DestroyAccountResponse) err := c.cc.Invoke(ctx, "/api.hubd.pb.APIService/DestroyAccount", in, out, opts...) if err != nil { return nil, err } return out, nil } // APIServiceServer is the server API for APIService service. type APIServiceServer interface { BuildInfo(context.Context, *BuildInfoRequest) (*BuildInfoResponse, error) Signup(context.Context, *SignupRequest) (*SignupResponse, error) Signin(context.Context, *SigninRequest) (*SigninResponse, error) Signout(context.Context, *SignoutRequest) (*SignoutResponse, error) GetSessionInfo(context.Context, *GetSessionInfoRequest) (*GetSessionInfoResponse, error) GetIdentity(context.Context, *GetIdentityRequest) (*GetIdentityResponse, error) CreateKey(context.Context, *CreateKeyRequest) (*CreateKeyResponse, error) ListKeys(context.Context, *ListKeysRequest) (*ListKeysResponse, error) InvalidateKey(context.Context, *InvalidateKeyRequest) (*InvalidateKeyResponse, error) CreateOrg(context.Context, *CreateOrgRequest) (*CreateOrgResponse, error) GetOrg(context.Context, *GetOrgRequest) (*GetOrgResponse, error) ListOrgs(context.Context, *ListOrgsRequest) (*ListOrgsResponse, error) RemoveOrg(context.Context, *RemoveOrgRequest) (*RemoveOrgResponse, error) InviteToOrg(context.Context, *InviteToOrgRequest) (*InviteToOrgResponse, error) LeaveOrg(context.Context, *LeaveOrgRequest) (*LeaveOrgResponse, error) SetupBilling(context.Context, *SetupBillingRequest) (*SetupBillingResponse, error) GetBillingSession(context.Context, *GetBillingSessionRequest) (*GetBillingSessionResponse, error) ListBillingUsers(context.Context, *ListBillingUsersRequest) (*ListBillingUsersResponse, error) IsUsernameAvailable(context.Context, *IsUsernameAvailableRequest) (*IsUsernameAvailableResponse, error) IsOrgNameAvailable(context.Context, *IsOrgNameAvailableRequest) (*IsOrgNameAvailableResponse, error) DestroyAccount(context.Context, *DestroyAccountRequest) (*DestroyAccountResponse, error) } // UnimplementedAPIServiceServer can be embedded to have forward compatible implementations. type UnimplementedAPIServiceServer struct { } func (*UnimplementedAPIServiceServer) BuildInfo(context.Context, *BuildInfoRequest) (*BuildInfoResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method BuildInfo not implemented") } func (*UnimplementedAPIServiceServer) Signup(context.Context, *SignupRequest) (*SignupResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Signup not implemented") } func (*UnimplementedAPIServiceServer) Signin(context.Context, *SigninRequest) (*SigninResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Signin not implemented") } func (*UnimplementedAPIServiceServer) Signout(context.Context, *SignoutRequest) (*SignoutResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Signout not implemented") } func (*UnimplementedAPIServiceServer) GetSessionInfo(context.Context, *GetSessionInfoRequest) (*GetSessionInfoResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetSessionInfo not implemented") } func (*UnimplementedAPIServiceServer) GetIdentity(context.Context, *GetIdentityRequest) (*GetIdentityResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetIdentity not implemented") } func (*UnimplementedAPIServiceServer) CreateKey(context.Context, *CreateKeyRequest) (*CreateKeyResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateKey not implemented") } func (*UnimplementedAPIServiceServer) ListKeys(context.Context, *ListKeysRequest) (*ListKeysResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListKeys not implemented") } func (*UnimplementedAPIServiceServer) InvalidateKey(context.Context, *InvalidateKeyRequest) (*InvalidateKeyResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method InvalidateKey not implemented") } func (*UnimplementedAPIServiceServer) CreateOrg(context.Context, *CreateOrgRequest) (*CreateOrgResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateOrg not implemented") } func (*UnimplementedAPIServiceServer) GetOrg(context.Context, *GetOrgRequest) (*GetOrgResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetOrg not implemented") } func (*UnimplementedAPIServiceServer) ListOrgs(context.Context, *ListOrgsRequest) (*ListOrgsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListOrgs not implemented") } func (*UnimplementedAPIServiceServer) RemoveOrg(context.Context, *RemoveOrgRequest) (*RemoveOrgResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RemoveOrg not implemented") } func (*UnimplementedAPIServiceServer) InviteToOrg(context.Context, *InviteToOrgRequest) (*InviteToOrgResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method InviteToOrg not implemented") } func (*UnimplementedAPIServiceServer) LeaveOrg(context.Context, *LeaveOrgRequest) (*LeaveOrgResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method LeaveOrg not implemented") } func (*UnimplementedAPIServiceServer) SetupBilling(context.Context, *SetupBillingRequest) (*SetupBillingResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SetupBilling not implemented") } func (*UnimplementedAPIServiceServer) GetBillingSession(context.Context, *GetBillingSessionRequest) (*GetBillingSessionResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetBillingSession not implemented") } func (*UnimplementedAPIServiceServer) ListBillingUsers(context.Context, *ListBillingUsersRequest) (*ListBillingUsersResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListBillingUsers not implemented") } func (*UnimplementedAPIServiceServer) IsUsernameAvailable(context.Context, *IsUsernameAvailableRequest) (*IsUsernameAvailableResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method IsUsernameAvailable not implemented") } func (*UnimplementedAPIServiceServer) IsOrgNameAvailable(context.Context, *IsOrgNameAvailableRequest) (*IsOrgNameAvailableResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method IsOrgNameAvailable not implemented") } func (*UnimplementedAPIServiceServer) DestroyAccount(context.Context, *DestroyAccountRequest) (*DestroyAccountResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DestroyAccount not implemented") } func RegisterAPIServiceServer(s *grpc.Server, srv APIServiceServer) { s.RegisterService(&_APIService_serviceDesc, srv) } func _APIService_BuildInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(BuildInfoRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).BuildInfo(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/BuildInfo", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).BuildInfo(ctx, req.(*BuildInfoRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_Signup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SignupRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).Signup(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/Signup", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).Signup(ctx, req.(*SignupRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_Signin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SigninRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).Signin(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/Signin", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).Signin(ctx, req.(*SigninRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_Signout_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SignoutRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).Signout(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/Signout", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).Signout(ctx, req.(*SignoutRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_GetSessionInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetSessionInfoRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).GetSessionInfo(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/GetSessionInfo", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).GetSessionInfo(ctx, req.(*GetSessionInfoRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_GetIdentity_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetIdentityRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).GetIdentity(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/GetIdentity", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).GetIdentity(ctx, req.(*GetIdentityRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_CreateKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateKeyRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).CreateKey(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/CreateKey", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).CreateKey(ctx, req.(*CreateKeyRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_ListKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListKeysRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).ListKeys(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/ListKeys", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).ListKeys(ctx, req.(*ListKeysRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_InvalidateKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(InvalidateKeyRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).InvalidateKey(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/InvalidateKey", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).InvalidateKey(ctx, req.(*InvalidateKeyRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_CreateOrg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateOrgRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).CreateOrg(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/CreateOrg", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).CreateOrg(ctx, req.(*CreateOrgRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_GetOrg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetOrgRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).GetOrg(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/GetOrg", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).GetOrg(ctx, req.(*GetOrgRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_ListOrgs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListOrgsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).ListOrgs(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/ListOrgs", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).ListOrgs(ctx, req.(*ListOrgsRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_RemoveOrg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RemoveOrgRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).RemoveOrg(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/RemoveOrg", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).RemoveOrg(ctx, req.(*RemoveOrgRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_InviteToOrg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(InviteToOrgRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).InviteToOrg(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/InviteToOrg", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).InviteToOrg(ctx, req.(*InviteToOrgRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_LeaveOrg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(LeaveOrgRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).LeaveOrg(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/LeaveOrg", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).LeaveOrg(ctx, req.(*LeaveOrgRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_SetupBilling_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SetupBillingRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).SetupBilling(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/SetupBilling", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).SetupBilling(ctx, req.(*SetupBillingRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_GetBillingSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetBillingSessionRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).GetBillingSession(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/GetBillingSession", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).GetBillingSession(ctx, req.(*GetBillingSessionRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_ListBillingUsers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListBillingUsersRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).ListBillingUsers(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/ListBillingUsers", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).ListBillingUsers(ctx, req.(*ListBillingUsersRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_IsUsernameAvailable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(IsUsernameAvailableRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).IsUsernameAvailable(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/IsUsernameAvailable", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).IsUsernameAvailable(ctx, req.(*IsUsernameAvailableRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_IsOrgNameAvailable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(IsOrgNameAvailableRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).IsOrgNameAvailable(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/IsOrgNameAvailable", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).IsOrgNameAvailable(ctx, req.(*IsOrgNameAvailableRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_DestroyAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DestroyAccountRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).DestroyAccount(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.hubd.pb.APIService/DestroyAccount", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).DestroyAccount(ctx, req.(*DestroyAccountRequest)) } return interceptor(ctx, in, info, handler) } var _APIService_serviceDesc = grpc.ServiceDesc{ ServiceName: "api.hubd.pb.APIService", HandlerType: (*APIServiceServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "BuildInfo", Handler: _APIService_BuildInfo_Handler, }, { MethodName: "Signup", Handler: _APIService_Signup_Handler, }, { MethodName: "Signin", Handler: _APIService_Signin_Handler, }, { MethodName: "Signout", Handler: _APIService_Signout_Handler, }, { MethodName: "GetSessionInfo", Handler: _APIService_GetSessionInfo_Handler, }, { MethodName: "GetIdentity", Handler: _APIService_GetIdentity_Handler, }, { MethodName: "CreateKey", Handler: _APIService_CreateKey_Handler, }, { MethodName: "ListKeys", Handler: _APIService_ListKeys_Handler, }, { MethodName: "InvalidateKey", Handler: _APIService_InvalidateKey_Handler, }, { MethodName: "CreateOrg", Handler: _APIService_CreateOrg_Handler, }, { MethodName: "GetOrg", Handler: _APIService_GetOrg_Handler, }, { MethodName: "ListOrgs", Handler: _APIService_ListOrgs_Handler, }, { MethodName: "RemoveOrg", Handler: _APIService_RemoveOrg_Handler, }, { MethodName: "InviteToOrg", Handler: _APIService_InviteToOrg_Handler, }, { MethodName: "LeaveOrg", Handler: _APIService_LeaveOrg_Handler, }, { MethodName: "SetupBilling", Handler: _APIService_SetupBilling_Handler, }, { MethodName: "GetBillingSession", Handler: _APIService_GetBillingSession_Handler, }, { MethodName: "ListBillingUsers", Handler: _APIService_ListBillingUsers_Handler, }, { MethodName: "IsUsernameAvailable", Handler: _APIService_IsUsernameAvailable_Handler, }, { MethodName: "IsOrgNameAvailable", Handler: _APIService_IsOrgNameAvailable_Handler, }, { MethodName: "DestroyAccount", Handler: _APIService_DestroyAccount_Handler, }, }, Streams: []grpc.StreamDesc{}, Metadata: "api/hubd/pb/hubd.proto", } ================================================ FILE: api/hubd/pb/hubd.proto ================================================ syntax = "proto3"; package api.hubd.pb; option go_package = "github.com/textileio/textile/v2/api/hubd/pb"; import "api/billingd/pb/billingd.proto"; message BuildInfoRequest {} message BuildInfoResponse { string git_commit = 1; string git_branch = 2; string git_state = 3; string git_summary = 4; string build_date = 5; string version = 6; } message SignupRequest { string username = 1; string email = 2; } message SignupResponse { bytes key = 1; string session = 2; } message SigninRequest { string username_or_email = 1; } message SigninResponse { bytes key = 1; string session = 2; } message SignoutRequest {} message SignoutResponse {} message GetSessionInfoRequest {} message GetSessionInfoResponse { bytes key = 1; string username = 2; string email = 3; } message GetIdentityRequest {} message GetIdentityResponse { bytes identity = 1; } enum KeyType { KEY_TYPE_UNSPECIFIED = 0; KEY_TYPE_ACCOUNT = 1; KEY_TYPE_USER = 2; } message KeyInfo { string key = 1; string secret = 2; KeyType type = 3; bool valid = 4; int32 threads = 5; bool secure = 6; } message CreateKeyRequest { KeyType type = 1; bool secure = 2; } message CreateKeyResponse { KeyInfo key_info = 1; } message InvalidateKeyRequest { string key = 1; } message InvalidateKeyResponse {} message ListKeysRequest {} message ListKeysResponse { repeated KeyInfo list = 1; } message OrgInfo { bytes key = 1; string name = 2; string slug = 3; string host = 4; repeated Member members = 5; int64 created_at = 6; message Member { bytes key = 1; string username = 2; string role = 3; } } message CreateOrgRequest { string name = 1; } message CreateOrgResponse { OrgInfo org_info = 1; } message GetOrgRequest {} message GetOrgResponse { OrgInfo org_info = 1; } message ListOrgsRequest {} message ListOrgsResponse { repeated OrgInfo list = 1; } message RemoveOrgRequest {} message RemoveOrgResponse {} message InviteToOrgRequest { string email = 1; } message InviteToOrgResponse { string token = 1; } message LeaveOrgRequest {} message LeaveOrgResponse {} message SetupBillingRequest {} message SetupBillingResponse {} message GetBillingSessionRequest {} message GetBillingSessionResponse { string url = 1; } message ListBillingUsersRequest { int64 offset = 1; int64 limit = 2; } message ListBillingUsersResponse { repeated api.billingd.pb.GetCustomerResponse users = 1; int64 next_offset = 2; } message IsUsernameAvailableRequest { string username = 1; } message IsUsernameAvailableResponse {} message IsOrgNameAvailableRequest { string name = 1; } message IsOrgNameAvailableResponse { string slug = 1; string host = 2; } message DestroyAccountRequest {} message DestroyAccountResponse {} service APIService { rpc BuildInfo(BuildInfoRequest) returns (BuildInfoResponse) {} rpc Signup(SignupRequest) returns (SignupResponse) {} rpc Signin(SigninRequest) returns (SigninResponse) {} rpc Signout(SignoutRequest) returns (SignoutResponse) {} rpc GetSessionInfo(GetSessionInfoRequest) returns (GetSessionInfoResponse) {} rpc GetIdentity(GetIdentityRequest) returns (GetIdentityResponse) {} rpc CreateKey(CreateKeyRequest) returns (CreateKeyResponse) {} rpc ListKeys(ListKeysRequest) returns (ListKeysResponse) {} rpc InvalidateKey(InvalidateKeyRequest) returns (InvalidateKeyResponse) {} rpc CreateOrg(CreateOrgRequest) returns (CreateOrgResponse) {} rpc GetOrg(GetOrgRequest) returns (GetOrgResponse) {} rpc ListOrgs(ListOrgsRequest) returns (ListOrgsResponse) {} rpc RemoveOrg(RemoveOrgRequest) returns (RemoveOrgResponse) {} rpc InviteToOrg(InviteToOrgRequest) returns (InviteToOrgResponse) {} rpc LeaveOrg(LeaveOrgRequest) returns (LeaveOrgResponse) {} rpc SetupBilling(SetupBillingRequest) returns (SetupBillingResponse) {} rpc GetBillingSession(GetBillingSessionRequest) returns (GetBillingSessionResponse) {} rpc ListBillingUsers(ListBillingUsersRequest) returns (ListBillingUsersResponse) {} rpc IsUsernameAvailable(IsUsernameAvailableRequest) returns (IsUsernameAvailableResponse) {} rpc IsOrgNameAvailable(IsOrgNameAvailableRequest) returns (IsOrgNameAvailableResponse) {} rpc DestroyAccount(DestroyAccountRequest) returns (DestroyAccountResponse) {} } ================================================ FILE: api/hubd/pb/javascript/package.json ================================================ { "name": "@textile/hub-grpc", "version": "0.0.0", "description": "A client for interacting with the Textile Hub gRPC API.", "repository": { "type": "git", "url": "git+https://github.com/textileio/textile.git" }, "author": "Textile", "license": "MIT", "files": [ "api/hubd/pb/hubd_pb.js", "api/hubd/pb/hubd_pb_service.js", "api/hubd/pb/hubd_pb.d.ts", "api/hubd/pb/hubd_pb_service.d.ts", "api/billingd/pb/billingd_pb.js", "api/billingd/pb/billingd_pb_service.js", "api/billingd/pb/billingd_pb.d.ts", "api/billingd/pb/billingd_pb_service.d.ts" ], "dependencies": { "@improbable-eng/grpc-web": "^0.14.1", "@types/google-protobuf": "^3.15.5", "google-protobuf": "^3.19.4" }, "devDependencies": { "ts-protoc-gen": "^0.15.0" } } ================================================ FILE: api/hubd/service.go ================================================ package hubd import ( "context" "errors" "fmt" "net/mail" "time" logging "github.com/ipfs/go-log/v2" iface "github.com/ipfs/interface-go-ipfs-core" "github.com/ipfs/interface-go-ipfs-core/path" threads "github.com/textileio/go-threads/api/client" "github.com/textileio/go-threads/broadcast" net "github.com/textileio/go-threads/core/net" "github.com/textileio/go-threads/db" netclient "github.com/textileio/go-threads/net/api/client" pow "github.com/textileio/powergate/v2/api/client" "github.com/textileio/textile/v2/api/billingd/analytics" billing "github.com/textileio/textile/v2/api/billingd/client" pb "github.com/textileio/textile/v2/api/hubd/pb" "github.com/textileio/textile/v2/buckets" bi "github.com/textileio/textile/v2/buildinfo" "github.com/textileio/textile/v2/email" "github.com/textileio/textile/v2/ipns" mdb "github.com/textileio/textile/v2/mongodb" tdb "github.com/textileio/textile/v2/threaddb" "github.com/textileio/textile/v2/util" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) var ( log = logging.Logger("hubapi") errDevRequired = errors.New("developer account required") errOrgRequired = errors.New("organization account required") loginTimeout = time.Minute * 30 emailTimeout = time.Second * 10 ) type Service struct { Collections *mdb.Collections Threads *threads.Client ThreadsNet *netclient.Client GatewayURL string EmailClient *email.Client EmailSessionBus *broadcast.Broadcaster EmailSessionSecret string IPFSClient iface.CoreAPI IPNSManager *ipns.Manager BillingClient *billing.Client PowergateClient *pow.Client PowergateAdminToken string } // BuildInfo provides the currently running API's build information func (s *Service) BuildInfo(_ context.Context, _ *pb.BuildInfoRequest) (*pb.BuildInfoResponse, error) { return &pb.BuildInfoResponse{ GitCommit: bi.GitCommit, GitBranch: bi.GitBranch, GitState: bi.GitState, GitSummary: bi.GitSummary, BuildDate: bi.BuildDate, Version: bi.Version, }, nil } func (s *Service) Signup(ctx context.Context, req *pb.SignupRequest) (*pb.SignupResponse, error) { log.Debugf("received signup request") // NOTICE: this is an ad-hoc change to disable signups due to the Hub shutdown. return nil, fmt.Errorf("signups are disabled") } func (s *Service) Signin(ctx context.Context, req *pb.SigninRequest) (*pb.SigninResponse, error) { log.Debugf("received signin request") dev, err := s.Collections.Accounts.GetByUsernameOrEmail(ctx, req.UsernameOrEmail) if err != nil { return nil, status.Error(codes.NotFound, "User not found") } secret := getSessionSecret(s.EmailSessionSecret) ectx, cancel := context.WithTimeout(ctx, emailTimeout) defer cancel() if err = s.EmailClient.ConfirmAddress( ectx, dev.Key.String(), dev.Username, dev.Email, s.GatewayURL, secret, ); err != nil { return nil, err } if !s.awaitVerification(secret) { return nil, status.Error(codes.Unauthenticated, "Could not verify email address") } session, err := s.Collections.Sessions.Create(ctx, dev.Key) if err != nil { return nil, err } key, err := dev.Key.MarshalBinary() if err != nil { return nil, err } if s.BillingClient != nil { s.BillingClient.TrackEvent(ctx, dev.Key, mdb.Dev, true, analytics.SignIn, nil) } return &pb.SigninResponse{ Key: key, Session: session.ID, }, nil } // awaitVerification waits for a dev to verify their email via a sent email. func (s *Service) awaitVerification(secret string) bool { listen := s.EmailSessionBus.Listen() ch := make(chan struct{}) timer := time.NewTimer(loginTimeout) go func() { for i := range listen.Channel() { if r, ok := i.(string); ok && r == secret { ch <- struct{}{} } } }() select { case <-ch: listen.Discard() timer.Stop() return true case <-timer.C: listen.Discard() return false } } func (s *Service) powergateAdminCtx(ctx context.Context) context.Context { return context.WithValue(ctx, pow.AdminKey, s.PowergateAdminToken) } // getSessionSecret returns a random secret for use with email verification. // To cover tests that need to auto-verify, the API can be started with a static secret. func getSessionSecret(secret string) string { if secret != "" { return secret } return util.MakeToken(44) } func (s *Service) Signout(ctx context.Context, _ *pb.SignoutRequest) (*pb.SignoutResponse, error) { log.Debugf("received signout request") session, ok := mdb.SessionFromContext(ctx) if !ok { return nil, status.Errorf(codes.NotFound, "session not found") } if err := s.Collections.Sessions.Delete(ctx, session.ID); err != nil { return nil, err } return &pb.SignoutResponse{}, nil } func (s *Service) GetSessionInfo(ctx context.Context, _ *pb.GetSessionInfoRequest) (*pb.GetSessionInfoResponse, error) { log.Debugf("received get session info request") account, err := getAccount(ctx) if err != nil { return nil, err } if account.User == nil { return nil, status.Errorf(codes.InvalidArgument, errDevRequired.Error()) } key, err := account.User.Key.MarshalBinary() if err != nil { return nil, err } return &pb.GetSessionInfoResponse{ Key: key, Username: account.User.Username, Email: account.User.Email, }, nil } func (s *Service) GetIdentity(ctx context.Context, _ *pb.GetIdentityRequest) (*pb.GetIdentityResponse, error) { log.Debugf("received get identity request") account, err := getAccount(ctx) if err != nil { return nil, err } data, err := account.Owner().Secret.MarshalBinary() if err != nil { return nil, err } return &pb.GetIdentityResponse{ Identity: data, }, nil } func (s *Service) CreateKey(ctx context.Context, req *pb.CreateKeyRequest) (*pb.CreateKeyResponse, error) { log.Debugf("received create key request") account, err := getAccount(ctx) if err != nil { return nil, err } var keyType mdb.APIKeyType switch req.Type { case pb.KeyType_KEY_TYPE_ACCOUNT: case pb.KeyType_KEY_TYPE_UNSPECIFIED: keyType = mdb.AccountKey case pb.KeyType_KEY_TYPE_USER: keyType = mdb.UserKey default: return nil, status.Errorf(codes.InvalidArgument, "invalid key type: %v", req.Type.String()) } key, err := s.Collections.APIKeys.Create(ctx, account.Owner().Key, keyType, req.Secure) if err != nil { return nil, err } t, err := keyTypeToPb(key.Type) if err != nil { return nil, status.Errorf(codes.Internal, "mapping key type: %v", key.Type) } var event analytics.Event if keyType == mdb.AccountKey { event = analytics.KeyAccountCreated } else { event = analytics.KeyUserCreated } if s.BillingClient != nil { payload := map[string]string{ "secure_key": fmt.Sprintf("%t", req.Secure), } if account.User != nil { payload["member"] = account.User.Key.String() payload["member_username"] = account.User.Username payload["member_email"] = account.User.Email } // Same "member" based payload for Dev or Org account types so that same // downstream logic/templating can be used. s.BillingClient.TrackEvent( ctx, account.Owner().Key, account.Owner().Type, true, event, payload, ) } return &pb.CreateKeyResponse{ KeyInfo: &pb.KeyInfo{ Key: key.Key, Secret: key.Secret, Type: t, Valid: true, Threads: 0, Secure: key.Secure, }, }, nil } func (s *Service) InvalidateKey(ctx context.Context, req *pb.InvalidateKeyRequest) (*pb.InvalidateKeyResponse, error) { log.Debugf("received invalidate key request") account, err := getAccount(ctx) if err != nil { return nil, err } key, err := s.Collections.APIKeys.Get(ctx, req.Key) if err != nil { return nil, err } if !account.Owner().Key.Equals(key.Owner) { return nil, status.Error(codes.PermissionDenied, "User does not own key") } if err := s.Collections.APIKeys.Invalidate(ctx, req.Key); err != nil { return nil, err } return &pb.InvalidateKeyResponse{}, nil } func (s *Service) ListKeys(ctx context.Context, _ *pb.ListKeysRequest) (*pb.ListKeysResponse, error) { log.Debugf("received list keys request") account, err := getAccount(ctx) if err != nil { return nil, err } keys, err := s.Collections.APIKeys.ListByOwner(ctx, account.Owner().Key) if err != nil { return nil, err } list := make([]*pb.KeyInfo, len(keys)) for i, key := range keys { t, err := keyTypeToPb(key.Type) if err != nil { return nil, status.Errorf(codes.Internal, "mapping key type: %v", key.Type) } ts, err := s.Collections.Threads.ListByKey(ctx, key.Key) if err != nil { return nil, err } list[i] = &pb.KeyInfo{ Key: key.Key, Secret: key.Secret, Type: t, Valid: key.Valid, Threads: int32(len(ts)), Secure: key.Secure, } } return &pb.ListKeysResponse{List: list}, nil } func (s *Service) CreateOrg(ctx context.Context, req *pb.CreateOrgRequest) (*pb.CreateOrgResponse, error) { log.Debugf("received create org request") account, err := getAccount(ctx) if err != nil { return nil, err } if account.User == nil { return nil, status.Errorf(codes.InvalidArgument, errDevRequired.Error()) } var powInfo *mdb.PowInfo if s.PowergateClient != nil { res, err := s.PowergateClient.Admin.Users.Create(s.powergateAdminCtx(ctx)) if err != nil { return nil, status.Errorf(codes.Internal, "Unable to create user: %v", err) } powInfo = &mdb.PowInfo{ID: res.User.Id, Token: res.User.Token} } org, err := s.Collections.Accounts.CreateOrg(ctx, req.Name, []mdb.Member{{ Key: account.User.Key, Username: account.User.Username, Role: mdb.OrgOwner, }}, powInfo) if err != nil { return nil, err } tok, err := s.Threads.GetToken(ctx, org.Secret) if err != nil { return nil, err } if err := s.Collections.Accounts.SetToken(ctx, org.Key, tok); err != nil { return nil, err } orgInfo, err := s.orgToPbOrg(org) if err != nil { return nil, status.Errorf(codes.Internal, "Unable to encode OrgInfo: %v", err) } if s.BillingClient != nil { // Identify the Org s.BillingClient.Identify(ctx, org.Key, org.Type, true, account.User.Email, map[string]string{ "username": org.Username, "created_by": account.User.Key.String(), "created_by_username": account.User.Username, "created_by_email": account.User.Email, }) // Attribute event to Dev s.BillingClient.TrackEvent( ctx, account.User.Key, account.User.Type, true, analytics.OrgCreated, map[string]string{ "org_name": org.Name, "org_key": org.Key.String(), }, ) } return &pb.CreateOrgResponse{ OrgInfo: orgInfo, }, nil } func (s *Service) GetOrg(ctx context.Context, _ *pb.GetOrgRequest) (*pb.GetOrgResponse, error) { log.Debugf("received get org request") account, err := getAccount(ctx) if err != nil { return nil, err } if account.Org == nil { return nil, status.Errorf(codes.FailedPrecondition, errOrgRequired.Error()) } orgInfo, err := s.orgToPbOrg(account.Org) if err != nil { return nil, fmt.Errorf("encoding org: %v", err) } return &pb.GetOrgResponse{ OrgInfo: orgInfo, }, nil } func (s *Service) orgToPbOrg(org *mdb.Account) (*pb.OrgInfo, error) { members := make([]*pb.OrgInfo_Member, len(org.Members)) for i, m := range org.Members { key, err := m.Key.MarshalBinary() if err != nil { return nil, err } members[i] = &pb.OrgInfo_Member{ Key: key, Username: m.Username, Role: m.Role.String(), } } key, err := org.Key.MarshalBinary() if err != nil { return nil, err } return &pb.OrgInfo{ Key: key, Name: org.Name, Slug: org.Username, Host: s.GatewayURL, Members: members, CreatedAt: org.CreatedAt.Unix(), }, nil } func (s *Service) ListOrgs(ctx context.Context, _ *pb.ListOrgsRequest) (*pb.ListOrgsResponse, error) { log.Debugf("received list orgs request") account, err := getAccount(ctx) if err != nil { return nil, err } if account.User == nil { return nil, status.Errorf(codes.InvalidArgument, errDevRequired.Error()) } orgs, err := s.Collections.Accounts.ListByMember(ctx, account.User.Key) if err != nil { return nil, err } list := make([]*pb.OrgInfo, len(orgs)) for i, org := range orgs { list[i], err = s.orgToPbOrg(&org) if err != nil { return nil, err } } return &pb.ListOrgsResponse{List: list}, nil } func (s *Service) RemoveOrg(ctx context.Context, _ *pb.RemoveOrgRequest) (*pb.RemoveOrgResponse, error) { log.Debugf("received remove org request") account, err := getAccount(ctx) if err != nil { return nil, err } if account.User == nil { return nil, status.Errorf(codes.InvalidArgument, errDevRequired.Error()) } if account.Org == nil { return nil, status.Errorf(codes.InvalidArgument, errOrgRequired.Error()) } isOwner, err := s.Collections.Accounts.IsOwner(ctx, account.Org.Username, account.User.Key) if err != nil { return nil, err } if !isOwner { return nil, status.Error(codes.PermissionDenied, "User must be an org owner") } if err = s.destroyAccount(ctx, account.Org); err != nil { return nil, err } if s.BillingClient != nil { s.BillingClient.TrackEvent( ctx, account.Owner().Key, account.Owner().Type, true, analytics.OrgDestroyed, map[string]string{ "member": account.User.Key.String(), "member_username": account.User.Username, "member_email": account.User.Email, }, ) } return &pb.RemoveOrgResponse{}, nil } func (s *Service) InviteToOrg(ctx context.Context, req *pb.InviteToOrgRequest) (*pb.InviteToOrgResponse, error) { log.Debugf("received invite to org request") account, err := getAccount(ctx) if err != nil { return nil, err } if account.User == nil { return nil, status.Errorf(codes.InvalidArgument, errDevRequired.Error()) } if account.Org == nil { return nil, status.Errorf(codes.InvalidArgument, errOrgRequired.Error()) } if _, err := mail.ParseAddress(req.Email); err != nil { return nil, status.Error(codes.FailedPrecondition, "Email address in not valid") } invite, err := s.Collections.Invites.Create(ctx, account.User.Key, account.Org.Username, req.Email) if err != nil { return nil, err } ectx, cancel := context.WithTimeout(ctx, emailTimeout) defer cancel() if err = s.EmailClient.InviteAddress( ectx, account.User.Key.String(), account.Org.Name, account.User.Email, req.Email, s.GatewayURL, invite.Token, ); err != nil { return nil, err } if s.BillingClient != nil { payload := map[string]string{ "invitee": req.Email, } if account.User != nil { payload["member"] = account.User.Key.String() payload["member_username"] = account.User.Username payload["member_email"] = account.User.Email } s.BillingClient.TrackEvent( ctx, account.Owner().Key, account.Owner().Type, true, analytics.OrgInviteCreated, payload, ) } return &pb.InviteToOrgResponse{Token: invite.Token}, nil } func (s *Service) LeaveOrg(ctx context.Context, _ *pb.LeaveOrgRequest) (*pb.LeaveOrgResponse, error) { log.Debugf("received leave org request") account, err := getAccount(ctx) if err != nil { return nil, err } if account.User == nil { return nil, status.Errorf(codes.InvalidArgument, errDevRequired.Error()) } if account.Org == nil { return nil, status.Errorf(codes.InvalidArgument, errOrgRequired.Error()) } if err := s.Collections.Accounts.RemoveMember(ctx, account.Org.Username, account.User.Key); err != nil { return nil, err } if err := s.Collections.Invites.DeleteByFromAndOrg(ctx, account.User.Key, account.Org.Username); err != nil { return nil, err } if s.BillingClient != nil { s.BillingClient.TrackEvent( ctx, account.Owner().Key, account.Owner().Type, true, analytics.OrgLeave, map[string]string{ "member": account.User.Key.String(), "member_username": account.User.Username, "member_email": account.User.Email, }, ) } return &pb.LeaveOrgResponse{}, nil } func (s *Service) SetupBilling(ctx context.Context, _ *pb.SetupBillingRequest) (*pb.SetupBillingResponse, error) { log.Debugf("received setup billing request") if s.BillingClient == nil { return nil, fmt.Errorf("billing is not enabled") } account, err := getAccount(ctx) if err != nil { return nil, err } if err := s.BillingClient.RecreateCustomerSubscription( ctx, account.Owner().Key, ); err != nil { return nil, err } if s.BillingClient != nil { s.BillingClient.TrackEvent( ctx, account.Owner().Key, account.Owner().Type, true, analytics.BillingSetup, map[string]string{ "member": account.User.Key.String(), "member_username": account.User.Username, "member_email": account.User.Email, }, ) } return &pb.SetupBillingResponse{}, nil } func (s *Service) GetBillingSession( ctx context.Context, _ *pb.GetBillingSessionRequest, ) (*pb.GetBillingSessionResponse, error) { log.Debugf("received get billing session request") if s.BillingClient == nil { return nil, fmt.Errorf("billing is not enabled") } account, err := getAccount(ctx) if err != nil { return nil, err } session, err := s.BillingClient.GetCustomerSession(ctx, account.Owner().Key) if err != nil { return nil, err } return &pb.GetBillingSessionResponse{Url: session.Url}, nil } func (s *Service) ListBillingUsers( ctx context.Context, req *pb.ListBillingUsersRequest, ) (*pb.ListBillingUsersResponse, error) { log.Debugf("received list billing users request") if s.BillingClient == nil { return nil, fmt.Errorf("billing is not enabled") } account, _ := mdb.AccountFromContext(ctx) list, err := s.BillingClient.ListDependentCustomers( ctx, account.Owner().Key, billing.WithOffset(req.Offset), billing.WithLimit(req.Limit), ) if err != nil { return nil, err } return &pb.ListBillingUsersResponse{ Users: list.Customers, NextOffset: list.NextOffset, }, nil } func (s *Service) IsUsernameAvailable( ctx context.Context, req *pb.IsUsernameAvailableRequest, ) (*pb.IsUsernameAvailableResponse, error) { log.Debugf("received is username available request") if err := s.Collections.Accounts.IsUsernameAvailable(ctx, req.Username); err != nil { return nil, status.Error(codes.FailedPrecondition, err.Error()) } return &pb.IsUsernameAvailableResponse{}, nil } func (s *Service) IsOrgNameAvailable( ctx context.Context, req *pb.IsOrgNameAvailableRequest, ) (*pb.IsOrgNameAvailableResponse, error) { log.Debugf("received is org name available request") slug, err := s.Collections.Accounts.IsNameAvailable(ctx, req.Name) if err != nil { return nil, status.Error(codes.FailedPrecondition, err.Error()) } return &pb.IsOrgNameAvailableResponse{ Slug: slug, Host: s.GatewayURL, }, nil } func (s *Service) DestroyAccount(ctx context.Context, _ *pb.DestroyAccountRequest) (*pb.DestroyAccountResponse, error) { log.Debugf("received destroy account request") account, err := getAccount(ctx) if err != nil { return nil, err } if account.User == nil { return nil, status.Errorf(codes.InvalidArgument, errDevRequired.Error()) } if err := s.destroyAccount(ctx, account.User); err != nil { return nil, err } if s.BillingClient != nil { s.BillingClient.TrackEvent( ctx, account.Owner().Key, account.Owner().Type, true, analytics.AccountDestroyed, nil, ) } return &pb.DestroyAccountResponse{}, nil } func (s *Service) destroyAccount(ctx context.Context, a *mdb.Account) error { // First, ensure that the account does not own any orgs if a.Type == mdb.Dev { orgs, err := s.Collections.Accounts.ListByOwner(ctx, a.Key) if err != nil { return err } if len(orgs) > 0 { return status.Error(codes.FailedPrecondition, "Account not empty (delete orgs first)") } } // Collect threads owned directly or via an API key ts, err := s.Collections.Threads.ListByOwner(ctx, a.Key) if err != nil { return err } keys, err := s.Collections.APIKeys.ListByOwner(ctx, a.Key) if err != nil { return err } for _, k := range keys { kts, err := s.Collections.Threads.ListByKey(ctx, k.Key) if err != nil { return err } ts = append(ts, kts...) } for _, t := range ts { if t.IsDB { // Clean up bucket pins, keys, and dns records. bres, err := s.Threads.Find( ctx, t.ID, buckets.CollectionName, &db.Query{}, &tdb.Bucket{}, db.WithTxnToken(a.Token), ) if err != nil { return err } for _, b := range bres.([]*tdb.Bucket) { if err = s.IPFSClient.Pin().Rm(ctx, path.New(b.Path)); err != nil { return err } if err = s.IPNSManager.RemoveKey(ctx, b.Key); err != nil { return err } } // Delete the entire DB. if err := s.Threads.DeleteDB(ctx, t.ID, db.WithManagedToken(a.Token)); err != nil { return err } } else { // Delete the entire thread. if err := s.ThreadsNet.DeleteThread(ctx, t.ID, net.WithThreadToken(a.Token)); err != nil { return err } } } // Stop tracking the deleted threads. if err = s.Collections.Threads.DeleteByOwner(ctx, a.Key); err != nil { return err } // Clean up other associated objects. if err = s.Collections.APIKeys.DeleteByOwner(ctx, a.Key); err != nil { return err } if err = s.Collections.Sessions.DeleteByOwner(ctx, a.Key); err != nil { return err } if a.Type == mdb.Org { if err = s.Collections.Invites.DeleteByOrg(ctx, a.Username); err != nil { return err } } else { if err = s.Collections.Invites.DeleteByFrom(ctx, a.Key); err != nil { return err } } // Finally, delete the account. return s.Collections.Accounts.Delete(ctx, a.Key) } func getAccount(ctx context.Context) (*mdb.AccountCtx, error) { account, _ := mdb.AccountFromContext(ctx) if account.Owner().Type == mdb.User { return nil, status.Errorf(codes.InvalidArgument, "account type not supported") } return account, nil } func keyTypeToPb(t mdb.APIKeyType) (pb.KeyType, error) { switch t { case mdb.AccountKey: return pb.KeyType_KEY_TYPE_ACCOUNT, nil case mdb.UserKey: return pb.KeyType_KEY_TYPE_USER, nil default: return 0, fmt.Errorf("unknown key type: %v", t) } } ================================================ FILE: api/mindexd/Dockerfile ================================================ FROM golang:1.16.0-buster MAINTAINER Textile # This is (in large part) copied (with love) from # https://hub.docker.com/r/ipfs/go-ipfs/dockerfile # Install deps RUN apt-get update && apt-get install -y \ libssl-dev \ ca-certificates ENV SRC_DIR /textile # Download packages first so they can be cached. COPY go.mod go.sum $SRC_DIR/ RUN cd $SRC_DIR \ && go mod download COPY . $SRC_DIR # Build the thing. RUN cd $SRC_DIR \ && TXTL_BUILD_FLAGS="CGO_ENABLED=0 GOOS=linux" make build-mindexd # Get su-exec, a very minimal tool for dropping privileges, # and tini, a very minimal init daemon for containers ENV SUEXEC_VERSION v0.2 ENV TINI_VERSION v0.19.0 RUN set -eux; \ dpkgArch="$(dpkg --print-architecture)"; \ case "${dpkgArch##*-}" in \ "amd64" | "armhf" | "arm64") tiniArch="tini-static-$dpkgArch" ;;\ *) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; \ esac; \ cd /tmp \ && git clone https://github.com/ncopa/su-exec.git \ && cd su-exec \ && git checkout -q $SUEXEC_VERSION \ && make su-exec-static \ && cd /tmp \ && wget -q -O tini https://github.com/krallin/tini/releases/download/$TINI_VERSION/$tiniArch \ && chmod +x tini # Now comes the actual target image, which aims to be as small as possible. FROM busybox:1.31.1-glibc LABEL maintainer="Textile " # Get the textile binary, entrypoint script, and TLS CAs from the build container. ENV SRC_DIR /textile COPY --from=0 $SRC_DIR/mindexd /usr/local/bin/mindexd COPY --from=0 /tmp/su-exec/su-exec-static /sbin/su-exec COPY --from=0 /tmp/tini /sbin/tini COPY --from=0 /etc/ssl/certs /etc/ssl/certs # This shared lib (part of glibc) doesn't seem to be included with busybox. COPY --from=0 /lib/*-linux-gnu*/libdl.so.2 /lib/ # Copy over SSL libraries. COPY --from=0 /usr/lib/*-linux-gnu*/libssl.so* /usr/lib/ COPY --from=0 /usr/lib/*-linux-gnu*/libcrypto.so* /usr/lib/ # addrApi; can be exposed to the public EXPOSE 5000 # rest-api EXPOSE 8081 # Create the repo directory. ENV MINDEXD_PATH /data/mindexd RUN mkdir -p $MINDEXD_PATH \ && adduser -D -h $MINDEXD_PATH -u 1000 -G users mindexd \ && chown mindexd:users $MINDEXD_PATH COPY --from=0 $SRC_DIR/api/mindexd/pb/mindexd.swagger.json /swagger.json # Switch to a non-privileged user. USER mindexd ENTRYPOINT ["/sbin/tini", "--", "mindexd"] ================================================ FILE: api/mindexd/Dockerfile.dev ================================================ FROM golang:1.16.0-buster RUN apt-get update && apt-get install -y \ libssl-dev \ ca-certificates RUN go get github.com/go-delve/delve/cmd/dlv ENV SRC_DIR /textile COPY go.mod go.sum $SRC_DIR/ RUN cd $SRC_DIR \ && go mod download COPY . $SRC_DIR RUN cd $SRC_DIR \ && CGO_ENABLED=0 GOOS=linux go build -gcflags "all=-N -l" -o mindexd api/mindexd/main.go FROM debian:buster LABEL maintainer="Textile " ENV SRC_DIR /textile COPY --from=0 /go/bin/dlv /usr/local/bin/dlv COPY --from=0 /etc/ssl/certs /etc/ssl/certs COPY --from=0 $SRC_DIR/mindexd /usr/local/bin/mindexd EXPOSE 5000 EXPOSE 8081 EXPOSE 40000 ENV MINDEXD_PATH /data/mindexd RUN adduser --home $MINDEXD_PATH --disabled-login --gecos "" --ingroup users mindexd USER mindexd ENTRYPOINT ["dlv", "--listen=0.0.0.0:40000", "--headless=true", "--accept-multiclient", "--continue", "--api-version=2", "exec", "/usr/local/bin/mindexd"] ================================================ FILE: api/mindexd/client/client.go ================================================ package client import ( "context" "fmt" "github.com/textileio/textile/v2/api/mindexd/pb" "google.golang.org/grpc" ) // Client provides the client api. type Client struct { c pb.APIServiceClient conn *grpc.ClientConn } // NewClient starts the client. func NewClient(target string, opts ...grpc.DialOption) (*Client, error) { conn, err := grpc.Dial(target, opts...) if err != nil { return nil, err } return &Client{ c: pb.NewAPIServiceClient(conn), conn: conn, }, nil } // Close closes the client's grpc connection and cancels any active requests. func (c *Client) Close() error { return c.conn.Close() } // GetMinerInfo returns miner's information from the index. func (c *Client) GetMinerInfo(ctx context.Context, minerAddr string) (*pb.GetMinerInfoResponse, error) { return c.c.GetMinerInfo(ctx, &pb.GetMinerInfoRequest{ MinerAddress: minerAddr, }) } // CalcualteDealPrice calcualtes the deal price for the provided data for a list of miners. func (c *Client) CalculateDealPrice(ctx context.Context, minersAddr []string, dataSizeBytes int64, durationDays int64) (*pb.CalculateDealPriceResponse, error) { if len(minersAddr) == 0 { return nil, fmt.Errorf("miner's list can't be empty") } return c.c.CalculateDealPrice(ctx, &pb.CalculateDealPriceRequest{ DataSizeBytes: dataSizeBytes, DurationDays: durationDays, MinerAddresses: minersAddr, }) } func (c *Client) QueryIndex(ctx context.Context, params *pb.QueryIndexRequest) (*pb.QueryIndexResponse, error) { return c.c.QueryIndex(ctx, params) } ================================================ FILE: api/mindexd/collector/collector.go ================================================ package collector import ( "context" "sync" "time" logger "github.com/ipfs/go-log/v2" "github.com/textileio/textile/v2/api/mindexd/store" ) var ( log = logger.Logger("collector") ) // Collector is responsible for fetching storage/retrieval records from // external Powergate instances, and merging them in a unified database. type Collector struct { lock sync.Mutex cfg config store *store.Store subscribers []chan<- struct{} daemonCtx context.Context daemonCtxCancel context.CancelFunc daemonClosed chan (struct{}) } // New returns a new Collector. func New(store *store.Store, opts ...Option) (*Collector, error) { config := defaultConfig for _, o := range opts { o(&config) } daemonCtx, daemonCtxCancel := context.WithCancel(context.Background()) c := &Collector{ cfg: config, store: store, daemonCtx: daemonCtx, daemonCtxCancel: daemonCtxCancel, daemonClosed: make(chan struct{}), } go c.runDaemon() return c, nil } // Subscribe returns a notification channel that will get // pushed signales whenever a new batch of records was imported. // This is useful for interested parties knowing about new // record's data might be available. func (c *Collector) Subscribe() <-chan struct{} { c.lock.Lock() defer c.lock.Unlock() ch := make(chan struct{}, 1) c.subscribers = append(c.subscribers, ch) return ch } // Close closes the Collector. func (c *Collector) Close() error { c.lock.Lock() defer c.lock.Unlock() c.daemonCtxCancel() <-c.daemonClosed return nil } // runDaemon creates the background daemon that // will poll known Powergate targets to fetch // new records information. func (c *Collector) runDaemon() { defer close(c.daemonClosed) collect := make(chan struct{}, 1) if c.cfg.daemonRunOnStart { collect <- struct{}{} } go func() { for { select { case <-c.daemonCtx.Done(): return case <-time.After(c.cfg.daemonFrequency): collect <- struct{}{} } } }() for { select { case <-c.daemonCtx.Done(): log.Infof("closing daemon") return case <-collect: totalImported := c.collectTargets(c.daemonCtx) if totalImported > 0 { c.notifySubscribers() } log.Infof("daemon finished importing %d records", totalImported) } } } func (c *Collector) notifySubscribers() { c.lock.Lock() defer c.lock.Unlock() for _, c := range c.subscribers { select { case c <- struct{}{}: default: log.Warnf("slow subscriber, skipping") } } } ================================================ FILE: api/mindexd/collector/config.go ================================================ package collector import ( "time" ) var ( defaultConfig = config{ daemonRunOnStart: false, daemonFrequency: 60 * time.Minute, fetchTimeout: time.Minute, fetchLimit: 50, } ) type config struct { daemonRunOnStart bool daemonFrequency time.Duration fetchTimeout time.Duration fetchLimit int } // Option parametrizes a collector configuration. type Option func(*config) // WithRunOnStart indicates if a collection should // be fired on start. func WithRunOnStart(enabled bool) Option { return func(c *config) { c.daemonRunOnStart = enabled } } // WithFrequency indicates the frequency for the collector daemon. func WithFrequency(freq time.Duration) Option { return func(c *config) { c.daemonFrequency = freq } } // WithFetchLimit indicates the maximum record batch // size to be fetched from targets. func WithFetchLimit(limit int) Option { return func(c *config) { c.fetchLimit = limit } } // WithFetchTimeout indicates the maximum amount of time // that fetching from a target can take. func WithFetchTimeout(timeout time.Duration) Option { return func(c *config) { c.fetchTimeout = timeout } } ================================================ FILE: api/mindexd/collector/daemon.go ================================================ package collector import ( "context" "fmt" "sort" "sync" "time" pow "github.com/textileio/powergate/v2/api/client" powc "github.com/textileio/powergate/v2/api/client" userPb "github.com/textileio/powergate/v2/api/gen/powergate/user/v1" "github.com/textileio/textile/v2/api/mindexd/model" ) func (c *Collector) collectTargets(ctx context.Context) int { targets, err := c.store.GetPowergateTargets(ctx) if err != nil { log.Errorf("getting powergate targets: %s", err) return 0 } var lock sync.Mutex var countImported int var wg sync.WaitGroup wg.Add(len(targets)) for _, source := range targets { go func(source model.PowTarget) { defer wg.Done() ctx := context.WithValue(ctx, powc.AdminKey, source.AdminToken) client, err := pow.NewClient(source.APIEndpoint) if err != nil { log.Errorf("creating powergate client for %s: %s", source.Name, err) return } countSDR, err := c.collectNewStorageDealRecords(ctx, client, source) if err != nil { log.Errorf("collecting new storage deal records from %s: %s", source.Name, err) } log.Infof("collected %d storage-deal records from %s", countSDR, source.Name) countRR, err := c.collectNewRetrievalRecords(ctx, client, source) if err != nil { log.Errorf("collecting new retrieval records from %s: %s", source.Name, err) } log.Infof("collected %d retrieval records from %s", countRR, source.Name) lock.Lock() countImported += countSDR + countRR lock.Unlock() }(source) } wg.Wait() return countImported } func (c *Collector) collectNewStorageDealRecords(ctx context.Context, pc *pow.Client, source model.PowTarget) (int, error) { lastUpdatedAt, err := c.store.GetLastStorageDealRecordUpdatedAt(ctx, source.Name) if err != nil { return 0, fmt.Errorf("get last updated-at: %s", err) } var totalCount int for { ctx, cancel := context.WithTimeout(ctx, c.cfg.fetchTimeout) defer cancel() res, err := pc.Admin.Records.GetUpdatedStorageDealRecordsSince(ctx, lastUpdatedAt, c.cfg.fetchLimit) if err != nil { return 0, fmt.Errorf("get storage deal records: %s", err) } if len(res.Records) == 0 { break } totalCount += len(res.Records) log.Debugf("%s collected a total of %d new/updated records, last %v", source.Name, len(res.Records), res.Records[len(res.Records)-1].UpdatedAt) records := toStorageDealRecords(res.Records) if err := c.store.PersistStorageDealRecords(ctx, source.Name, source.Region, records); err != nil { return 0, fmt.Errorf("persist fetched records: %s", err) } sort.Slice(res.Records, func(i, j int) bool { return res.Records[i].UpdatedAt.AsTime().Before(res.Records[j].UpdatedAt.AsTime()) }) lastUpdatedAt = res.Records[len(res.Records)-1].UpdatedAt.AsTime() // If we fetched less than limit, then there're no // more records to fetch. if len(res.Records) < c.cfg.fetchLimit { break } } return totalCount, nil } func (c *Collector) collectNewRetrievalRecords(ctx context.Context, pc *pow.Client, source model.PowTarget) (int, error) { lastUpdatedAt, err := c.store.GetLastRetrievalRecordUpdatedAt(ctx, source.Name) if err != nil { return 0, fmt.Errorf("get last updated-at: %s", err) } var totalCount int for { ctx, cancel := context.WithTimeout(ctx, c.cfg.fetchTimeout) defer cancel() res, err := pc.Admin.Records.GetUpdatedRetrievalRecordsSince(ctx, lastUpdatedAt.Add(time.Nanosecond), c.cfg.fetchLimit) if err != nil { return 0, fmt.Errorf("get retrieval records: %s", err) } if len(res.Records) == 0 { break } totalCount += len(res.Records) records := toRetrievalRecords(res.Records) if err := c.store.PersistRetrievalRecords(ctx, source.Name, source.Region, records); err != nil { return 0, fmt.Errorf("persist fetched records: %s", err) } lastUpdatedAt = res.Records[len(res.Records)-1].UpdatedAt.AsTime() // If we fetched less than limit, then there're no // more records to fetch. if len(res.Records) < c.cfg.fetchLimit { break } } return totalCount, nil } func toStorageDealRecords(rs []*userPb.StorageDealRecord) []model.PowStorageDealRecord { ret := make([]model.PowStorageDealRecord, len(rs)) for i, s := range rs { sr := model.PowStorageDealRecord{ RootCid: s.RootCid, Address: s.Address, Pending: s.Pending, TransferSize: s.TransferSize, DataTransferStart: s.DataTransferStart.AsTime(), DataTransferEnd: s.DataTransferEnd.AsTime(), SealingStart: s.SealingStart.AsTime(), SealingEnd: s.SealingEnd.AsTime(), Failed: s.ErrMsg != "", ErrMsg: s.ErrMsg, CreatedAt: s.Time, UpdatedAt: s.UpdatedAt.AsTime(), DealInfo: model.PowStorageDealRecordDealInfo{ ProposalCid: s.DealInfo.ProposalCid, StateId: s.DealInfo.StateId, StateName: s.DealInfo.StateName, Miner: s.DealInfo.Miner, PieceCid: s.DealInfo.PieceCid, Size: s.DealInfo.Size, PricePerEpoch: s.DealInfo.PricePerEpoch, StartEpoch: s.DealInfo.StartEpoch, Duration: s.DealInfo.Duration, DealId: s.DealInfo.DealId, ActivationEpoch: s.DealInfo.ActivationEpoch, Message: s.DealInfo.Message, }, } ret[i] = sr } return ret } func toRetrievalRecords(rs []*userPb.RetrievalDealRecord) []model.PowRetrievalRecord { ret := make([]model.PowRetrievalRecord, len(rs)) for i, r := range rs { pr := model.PowRetrievalRecord{ ID: r.Id, Address: r.Address, DataTransferStart: r.DataTransferStart.AsTime(), DataTransferEnd: r.DataTransferEnd.AsTime(), BytesReceived: r.BytesReceived, Failed: r.ErrMsg != "", ErrMsg: r.ErrMsg, CreatedAt: r.Time, UpdatedAt: r.UpdatedAt.AsTime(), DealInfo: model.PowRetrievalRecordDealInfo{ Miner: r.DealInfo.Miner, MinPrice: r.DealInfo.MinPrice, RootCid: r.DealInfo.RootCid, Size: r.DealInfo.Size, }, } ret[i] = pr } return ret } ================================================ FILE: api/mindexd/indexer/config.go ================================================ package indexer import ( "time" ) var ( defaultConfig = config{ daemonRunOnStart: false, daemonFrequency: 60 * time.Minute, } ) type config struct { daemonRunOnStart bool daemonFrequency time.Duration daemonSnapshotMaxAge time.Duration } // Option allows to configure an indexer. type Option func(*config) // WithRunOnStart indicates if the index must be generated // when the deamon is started. func WithRunOnStart(enabled bool) Option { return func(c *config) { c.daemonRunOnStart = enabled } } // WithFrequency indicates the frequency // for the indexer daemon. func WithFrequency(freq time.Duration) Option { return func(c *config) { c.daemonFrequency = freq } } // WithSnapshotMaxAge indicates the max-age of a snapshot, // indicating that a new one should be generated. func WithSnapshotMaxAge(age time.Duration) Option { return func(c *config) { c.daemonSnapshotMaxAge = age } } ================================================ FILE: api/mindexd/indexer/daemon.go ================================================ package indexer import ( "context" "fmt" "time" powc "github.com/textileio/powergate/v2/api/client" powAdmin "github.com/textileio/powergate/v2/api/client/admin" "github.com/textileio/textile/v2/api/mindexd/model" ) var ( minersBatchSize = 100 ) func (i *Indexer) generateIndex(ctx context.Context) error { log.Debugf("starting updating textile miners info") if err := i.updateTextileMinerInfo(ctx); err != nil { log.Errorf("updating textile info: %s", err) } log.Debugf("getting miners with power") miners, err := i.getActiveMiners(ctx) if err != nil { return fmt.Errorf("getting active miners: %s", err) } log.Debugf("importing on-chain miners data started") for start := 0; start < len(miners); start += minersBatchSize { log.Debugf("importing on-chain batch number %d", start) end := start + minersBatchSize if end > len(miners) { end = len(miners) } if err := i.updateOnChainMinersInfo(ctx, miners[start:end]); err != nil { return fmt.Errorf("updating on-chain info for miners: %s", err) } } log.Debugf("importing on-chain miners data finished") return nil } func (i *Indexer) updateOnChainMinersInfo(ctx context.Context, miners []string) error { ctxAdmin := context.WithValue(ctx, powc.AdminKey, i.powAdminToken) minfos, err := i.pow.Admin.Indices.GetMinerInfo(ctxAdmin, miners...) if err != nil { return fmt.Errorf("get miner on-chain info from powergate: %s", err) } for _, mi := range minfos.MinersInfo { onchain := model.FilecoinInfo{ RelativePower: mi.RelativePower, AskPrice: mi.AskPrice, AskVerifiedPrice: mi.AskVerifiedPrice, MinPieceSize: int64(mi.MinPieceSize), MaxPieceSize: int64(mi.MaxPieceSize), SectorSize: int64(mi.SectorSize), ActiveSectors: int64(mi.SectorsActive), FaultySectors: int64(mi.SectorsFaulty), UpdatedAt: time.Now(), } if err := i.store.PutFilecoinInfo(ctx, mi.Address, onchain); err != nil { log.Errorf("put miner on-chain info in store: %s", err) } if err := i.store.PutMetadataLocation(ctx, mi.Address, mi.Location); err != nil { log.Errorf("put miner on-chain info in store: %s", err) } } return nil } func (i *Indexer) getActiveMiners(ctx context.Context) ([]string, error) { ctxAdmin := context.WithValue(ctx, powc.AdminKey, i.powAdminToken) ms, err := i.pow.Admin.Indices.GetMiners(ctxAdmin, powAdmin.WithPowerGreaterThanZero(true)) if err != nil { return nil, fmt.Errorf("get miners with power from powergate: %s", err) } miners := make([]string, len(ms.Miners)) for i, m := range ms.Miners { miners[i] = m.Address } return miners, nil } func (i *Indexer) updateTextileMinerInfo(ctx context.Context) error { if err := i.store.UpdateTextileDealsInfo(ctx); err != nil { return fmt.Errorf("update textile miner deals info: %s", err) } if err := i.store.UpdateTextileRetrievalsInfo(ctx); err != nil { return fmt.Errorf("update textile retrievals info: %s", err) } return nil } ================================================ FILE: api/mindexd/indexer/indexer.go ================================================ package indexer import ( "context" "time" logger "github.com/ipfs/go-log/v2" pow "github.com/textileio/powergate/v2/api/client" "github.com/textileio/textile/v2/api/mindexd/store" ) var ( log = logger.Logger("indexer") ) // Indexer creates a miner's index with Filecoin and Textile data. type Indexer struct { cfg config store *store.Store pow *pow.Client powAdminToken string daemonCtx context.Context daemonCtxCancel context.CancelFunc daemonClosed chan struct{} daemonSub <-chan struct{} } // New returns a new Indexer. func New(pow *pow.Client, sub <-chan struct{}, powAdminToken string, store *store.Store, opts ...Option) (*Indexer, error) { config := defaultConfig for _, o := range opts { o(&config) } daemonCtx, daemonCtxCancel := context.WithCancel(context.Background()) i := &Indexer{ cfg: config, store: store, pow: pow, powAdminToken: powAdminToken, daemonCtx: daemonCtx, daemonCtxCancel: daemonCtxCancel, daemonClosed: make(chan struct{}), daemonSub: sub, } go i.runDaemon() return i, nil } // Close closes an Indexer. func (i *Indexer) Close() error { i.daemonCtxCancel() <-i.daemonClosed return nil } func (i *Indexer) runDaemon() { defer close(i.daemonClosed) collect := make(chan struct{}, 1) if i.cfg.daemonRunOnStart { collect <- struct{}{} } go func() { for { select { case <-i.daemonCtx.Done(): log.Infof("daemon shutting down") return case <-time.After(i.cfg.daemonFrequency): log.Infof("daemon ticker fired") collect <- struct{}{} case <-i.daemonSub: log.Infof("received new records notification") collect <- struct{}{} } } }() go func() { lastSnapshot, err := i.store.GetLastIndexSnapshotTime(i.daemonCtx) if err != nil { log.Errorf("get last index snapshot: %s", err) return } for { select { case <-i.daemonCtx.Done(): log.Infof("daemon snapshot shutting down") return case <-time.After(15 * time.Minute): if time.Now().Sub(lastSnapshot) > i.cfg.daemonSnapshotMaxAge { if err := i.store.GenerateMinerIndexSnapshot(i.daemonCtx); err != nil { log.Errorf("generating index snapshot: %s", err) } } lastSnapshot = time.Now() } } }() for { select { case <-i.daemonCtx.Done(): log.Infof("closing daemon") return case <-collect: if err := i.generateIndex(i.daemonCtx); err != nil { log.Errorf("generating index: %s", err) } } } } ================================================ FILE: api/mindexd/main.go ================================================ package main import ( "context" "encoding/json" "time" logging "github.com/ipfs/go-log/v2" "github.com/spf13/cobra" "github.com/spf13/viper" "github.com/textileio/go-threads/util" "github.com/textileio/textile/v2/api/mindexd/service" "github.com/textileio/textile/v2/cmd" ) const daemonName = "mindexd" var ( log = logging.Logger(daemonName) config = &cmd.Config{ Viper: viper.New(), Dir: "." + daemonName, Name: "config", Flags: map[string]cmd.Flag{ "debug": { Key: "log.debug", DefValue: false, }, "logFile": { Key: "log.file", DefValue: "", // no log file }, // Addr config "addrApi": { Key: "addr.api", DefValue: "/ip4/127.0.0.1/tcp/5000", }, "addrApiRest": { Key: "addr.api_rest", DefValue: ":8081", }, "addrMongoUri": { Key: "addr.mongo_uri", DefValue: "mongodb://127.0.0.1:27017", }, "addrMongoName": { Key: "addr.mongo_name", DefValue: "textile_mindex", }, // Powergate config "powAddrAPI": { Key: "pow.addr_api", DefValue: "", }, "powAdminToken": { Key: "pow.admin_token", DefValue: "", }, // Indexer config "indexerRunOnStart": { Key: "indexer.run_on_start", DefValue: false, }, "indexerFrequency": { Key: "indexer.frequency", DefValue: time.Minute * 120, }, "indexerSnapshotMaxAge": { Key: "indexer.snapshot_max_age", DefValue: time.Hour * 24, }, // Collector config "collectorRunOnStart": { Key: "collector.run_on_start", DefValue: false, }, "collectorFrequency": { Key: "collector.frequency", DefValue: time.Minute * 60, }, "collectorFetchLimit": { Key: "collector.fetch_limit", DefValue: 50, }, "collectorFetchTimeout": { Key: "collector.fetch_timeout", DefValue: time.Minute, }, }, EnvPre: "MINDEX", Global: true, } ) func init() { cobra.OnInitialize(cmd.InitConfig(config)) cmd.InitConfigCmd(rootCmd, config.Viper, config.Dir) rootCmd.PersistentFlags().StringVar( &config.File, "config", "", "Config file (default ${HOME}/"+config.Dir+"/"+config.Name+".yml)") rootCmd.PersistentFlags().BoolP( "debug", "d", config.Flags["debug"].DefValue.(bool), "Enable debug logging") rootCmd.PersistentFlags().String( "logFile", config.Flags["logFile"].DefValue.(string), "Write logs to file") // Address settings rootCmd.PersistentFlags().String( "addrApi", config.Flags["addrApi"].DefValue.(string), "Miner Index gRPC API listen address") rootCmd.PersistentFlags().String( "addrApiRest", config.Flags["addrApiRest"].DefValue.(string), "Miner Index REST API listen address") rootCmd.PersistentFlags().String( "addrMongoUri", config.Flags["addrMongoUri"].DefValue.(string), "MongoDB connection URI") rootCmd.PersistentFlags().String( "addrMongoName", config.Flags["addrMongoName"].DefValue.(string), "MongoDB database name") // Powergate settings rootCmd.PersistentFlags().String( "powAddrAPI", config.Flags["powAddrAPI"].DefValue.(string), "Powergate API address") rootCmd.PersistentFlags().String( "powAdminToken", config.Flags["powAdminToken"].DefValue.(string), "Powergate API admin token") // Indexer settings rootCmd.PersistentFlags().Bool( "indexerRunOnStart", config.Flags["indexerRunOnStart"].DefValue.(bool), "Indexer run on start") rootCmd.PersistentFlags().Duration( "indexerFrequency", config.Flags["indexerFrequency"].DefValue.(time.Duration), "Indexer daemon frequency") rootCmd.PersistentFlags().Duration( "indexerSnapshotMaxAge", config.Flags["indexerSnapshotMaxAge"].DefValue.(time.Duration), "Indexer snapshot max-age to trigger a new one.") // Collector settings rootCmd.PersistentFlags().Bool( "collectorRunOnStart", config.Flags["collectorRunOnStart"].DefValue.(bool), "Collector run on start") rootCmd.PersistentFlags().Duration( "collectorFrequency", config.Flags["collectorFrequency"].DefValue.(time.Duration), "Collector daemon frequency") rootCmd.PersistentFlags().Int( "collectorFetchLimit", config.Flags["collectorFetchLimit"].DefValue.(int), "Collector biggest batch size for fetching new records") rootCmd.PersistentFlags().Duration( "collectorFetchTimeout", config.Flags["collectorFetchTimeout"].DefValue.(time.Duration), "Collector timeout while fetching new records from a target") err := cmd.BindFlags(config.Viper, rootCmd, config.Flags) cmd.ErrCheck(err) } func main() { cmd.ErrCheck(rootCmd.Execute()) } var rootCmd = &cobra.Command{ Use: daemonName, Short: "Miner Index daemon", Long: `Textile's miner index daemon.`, PersistentPreRun: func(c *cobra.Command, args []string) { config.Viper.SetConfigType("yaml") cmd.ExpandConfigVars(config.Viper, config.Flags) if config.Viper.GetBool("log.debug") { err := util.SetLogLevels(map[string]logging.LogLevel{ daemonName: logging.LevelDebug, }) cmd.ErrCheck(err) } }, Run: func(c *cobra.Command, args []string) { settings, err := json.MarshalIndent(config.Viper.AllSettings(), "", " ") cmd.ErrCheck(err) log.Debugf("loaded config: %s", string(settings)) grpcListenAddr := cmd.AddrFromStr(config.Viper.GetString("addr.api")) restListenAddr := config.Viper.GetString("addr.api_rest") addrMongoUri := config.Viper.GetString("addr.mongo_uri") addrMongoName := config.Viper.GetString("addr.mongo_name") logFile := config.Viper.GetString("log.file") err = cmd.SetupDefaultLoggingConfig(logFile) cmd.ErrCheck(err) powAddrAPI := config.Viper.GetString("pow.addr_api") powAdminToken := config.Viper.GetString("pow.admin_token") indexerRunOnStart := config.Viper.GetBool("indexer.run_on_start") indexerFrequency := config.Viper.GetDuration("indexer.frequency") indexerSnapshotMaxAge := config.Viper.GetDuration("indexer.snapshot_max_age") collectorRunOnStart := config.Viper.GetBool("collector.run_on_start") collectorFrequency := config.Viper.GetDuration("collector.frequency") collectorFetchLimit := config.Viper.GetInt("collector.fetch_limit") collectorFetchTimeout := config.Viper.GetDuration("collector.fetch_timeout") cmd.ErrCheck(err) ctx, cancel := context.WithCancel(context.Background()) defer cancel() api, err := service.NewService(ctx, service.Config{ ListenAddrGRPC: grpcListenAddr, ListenAddrREST: restListenAddr, DBURI: addrMongoUri, DBName: addrMongoName, Debug: config.Viper.GetBool("log.debug"), PowAddrAPI: powAddrAPI, PowAdminToken: powAdminToken, CollectorRunOnStart: collectorRunOnStart, CollectorFrequency: collectorFrequency, CollectorFetchLimit: collectorFetchLimit, CollectorFetchTimeout: collectorFetchTimeout, IndexerRunOnStart: indexerRunOnStart, IndexerFrequency: indexerFrequency, IndexerSnapshotMaxAge: indexerSnapshotMaxAge, }) cmd.ErrCheck(err) err = api.Start() cmd.ErrCheck(err) log.Info("Welcome to Hub Miner Index!") cmd.HandleInterrupt(api.Stop) }, } ================================================ FILE: api/mindexd/migrations/migrations.go ================================================ package migrations import ( "time" logging "github.com/ipfs/go-log/v2" migrate "github.com/xakep666/mongo-migrate" "go.mongodb.org/mongo-driver/mongo" ) var ( log = logging.Logger("migrations") migrateTimeout = time.Hour ) func Migrate(db *mongo.Database) error { m := migrate.NewMigrate( db, ) return m.Up(migrate.AllAvailable) } ================================================ FILE: api/mindexd/model/index.go ================================================ package model import "time" type MinerInfoSnapshot struct { CreatedAt time.Time `bson:"created_at"` MinerInfo MinerInfo `bson:"miner_info"` } type MinerInfo struct { MinerID string `bson:"_id"` Metadata MetadataInfo `bson:"metadata"` Filecoin FilecoinInfo `bson:"filecoin"` Textile TextileInfo `bson:"textile"` UpdatedAt time.Time `bson:"updated_at"` } type MetadataInfo struct { Location string `bson:"location"` URL string `bson:"url"` Email string `bson:"email"` Twitter string `bson:"twitter"` MinerX bool `bson:"minerx"` UpdatedAt time.Time `bson:"updated_at"` } type FilecoinInfo struct { RelativePower float64 `bson:"relative_power"` AskPrice string `bson:"ask_price"` AskVerifiedPrice string `bson:"ask_verified_price"` MinPieceSize int64 `bson:"min_piece_size"` MaxPieceSize int64 `bson:"max_piece_size"` SectorSize int64 `bson:"sector_size"` ActiveSectors int64 `bson:"active_sectors"` FaultySectors int64 `bson:"faulty_sectors"` UpdatedAt time.Time `bson:"updated_at"` } type TextileInfo struct { Regions map[string]TextileRegionInfo `bson:"regions"` DealsSummary TextileDealsSummary `bson:"deals_summary"` RetrievalsSummary TextileRetrievalSummary `bson:"retrievals_summary"` UpdatedAt time.Time `bson:"updated_at"` } type TextileDealsSummary struct { Total int `bson:"total"` Last time.Time `bson:"last"` Failures int `bson:"failures"` LastFailure time.Time `bson:"last_failure"` } type TextileRetrievalSummary struct { Total int `bson:"total"` Last time.Time `bson:"last"` Failures int `bson:"failures"` LastFailure time.Time `bson:"last_failure"` } type TextileRegionInfo struct { Deals TextileDealsInfo `bson:"deals"` Retrievals TextileRetrievalsInfo `bson:"retrievals"` } type TextileDealsInfo struct { Total int `bson:"total"` Last time.Time `bson:"last"` Failures int `bson:"failures"` LastFailure time.Time `bson:"last_failure"` TailTransfers []TransferMiBPerSec `bson:"tail_transfers"` TailSealed []SealedDurationMins `bson:"tail_sealed"` } type SealedDurationMins struct { SealedAt time.Time `bson:"sealed_at"` DurationSeconds int `bson:"duration_mins"` } type TransferMiBPerSec struct { TransferedAt time.Time `bson:"transfered_at"` MiBPerSec float64 `bson:"mib_per_sec"` } type TextileRetrievalsInfo struct { Total int `bson:"total"` Last time.Time `bson:"last"` Failures int `bson:"failures"` LastFailure time.Time `bson:"last_failure"` TailTransfers []TransferMiBPerSec `bson:"tail_transfers"` } ================================================ FILE: api/mindexd/model/record.go ================================================ package model import ( "fmt" "time" ) // PowTarget describes a Powergate instance to // collect deal/retrieval records. type PowTarget struct { Name string `bson:"_id"` Region string `bson:"region"` APIEndpoint string `bson:"api_endpoint"` AdminToken string `bson:"admin_token"` } func (pt *PowTarget) String() string { return fmt.Sprintf("%s at %s", pt.Name, pt.APIEndpoint) } type StorageDealRecord struct { ID string `bson:"_id,omitempty"` PowName string `bson:"pow_name"` Region string `bson:"region"` LastUpdatedAt time.Time `bson:"last_updated_at"` PowStorageDealRecord PowStorageDealRecord `bson:"pow_storage_deal_record"` } type RetrievalRecord struct { ID string `bson:"_id,omitempty"` PowName string `bson:"pow_name"` Region string `bson:"region"` LastUpdatedAt time.Time `bson:"last_updated_at"` PowRetrievalRecord PowRetrievalRecord `bson:"pow_retrieval_record"` } type PowStorageDealRecord struct { RootCid string `bson:"root_cid"` Address string `bson:"address"` Pending bool `bson:"pending"` DealInfo PowStorageDealRecordDealInfo `bson:"deal_info"` TransferSize int64 `bson:"transfer_size"` DataTransferStart time.Time `bson:"datatransfer_start"` DataTransferEnd time.Time `bson:"datatransfer_end"` SealingStart time.Time `bson:"sealing_start"` SealingEnd time.Time `bson:"sealing_end"` Failed bool `bson:"failed"` ErrMsg string `bson:"err_msg"` CreatedAt int64 `bson:"created_at"` UpdatedAt time.Time `bson:"updated_at"` } type PowStorageDealRecordDealInfo struct { ProposalCid string `bson:"proposal_cid"` StateId uint64 `bson:"state_id"` StateName string `bson:"state_name"` Miner string `bson:"miner"` PieceCid string `bson:"piece_cid"` Size uint64 `bson:"size"` PricePerEpoch uint64 `bson:"price_per_epoch"` StartEpoch uint64 `bson:"start_epoch"` Duration uint64 `bson:"duration"` DealId uint64 `bson:"deal_id"` ActivationEpoch int64 `bson:"activation_epoch"` Message string `bson:"message"` } type PowRetrievalRecord struct { ID string `bson:"id"` Address string `bson:"address"` DealInfo PowRetrievalRecordDealInfo `bson:"deal_info"` DataTransferStart time.Time `bson:"datatransfer_start"` DataTransferEnd time.Time `bson:"datatransfer_end"` BytesReceived uint64 `bson:"bytes_received"` Failed bool `bson:"failed"` ErrMsg string `bson:"err_msg"` CreatedAt int64 `bson:"created_at"` UpdatedAt time.Time `bson:"updated_at"` } type PowRetrievalRecordDealInfo struct { RootCid string `bson:"root_cid"` Size uint64 `bson:"size"` MinPrice uint64 `bson:"min_price"` Miner string `bson:"miner"` } ================================================ FILE: api/mindexd/pb/google/api/annotations.proto ================================================ // Copyright (c) 2015, Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package google.api; import "api/mindexd/pb/google/api/http.proto"; import "google/protobuf/descriptor.proto"; option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; option java_multiple_files = true; option java_outer_classname = "AnnotationsProto"; option java_package = "com.google.api"; option objc_class_prefix = "GAPI"; extend google.protobuf.MethodOptions { // See `HttpRule`. HttpRule http = 72295728; } ================================================ FILE: api/mindexd/pb/google/api/field_behavior.proto ================================================ // Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package google.api; import "google/protobuf/descriptor.proto"; option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; option java_multiple_files = true; option java_outer_classname = "FieldBehaviorProto"; option java_package = "com.google.api"; option objc_class_prefix = "GAPI"; extend google.protobuf.FieldOptions { // A designation of a specific field behavior (required, output only, etc.) // in protobuf messages. // // Examples: // // string name = 1 [(google.api.field_behavior) = REQUIRED]; // State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // google.protobuf.Duration ttl = 1 // [(google.api.field_behavior) = INPUT_ONLY]; // google.protobuf.Timestamp expire_time = 1 // [(google.api.field_behavior) = OUTPUT_ONLY, // (google.api.field_behavior) = IMMUTABLE]; repeated google.api.FieldBehavior field_behavior = 1052; } // An indicator of the behavior of a given field (for example, that a field // is required in requests, or given as output but ignored as input). // This **does not** change the behavior in protocol buffers itself; it only // denotes the behavior and may affect how API tooling handles the field. // // Note: This enum **may** receive new values in the future. enum FieldBehavior { // Conventional default for enums. Do not use this. FIELD_BEHAVIOR_UNSPECIFIED = 0; // Specifically denotes a field as optional. // While all fields in protocol buffers are optional, this may be specified // for emphasis if appropriate. OPTIONAL = 1; // Denotes a field as required. // This indicates that the field **must** be provided as part of the request, // and failure to do so will cause an error (usually `INVALID_ARGUMENT`). REQUIRED = 2; // Denotes a field as output only. // This indicates that the field is provided in responses, but including the // field in a request does nothing (the server *must* ignore it and // *must not* throw an error as a result of the field's presence). OUTPUT_ONLY = 3; // Denotes a field as input only. // This indicates that the field is provided in requests, and the // corresponding field is not included in output. INPUT_ONLY = 4; // Denotes a field as immutable. // This indicates that the field may be set once in a request to create a // resource, but may not be changed thereafter. IMMUTABLE = 5; // Denotes that a (repeated) field is an unordered list. // This indicates that the service may provide the elements of the list // in any arbitrary order, rather than the order the user originally // provided. Additionally, the list's order may or may not be stable. UNORDERED_LIST = 6; } ================================================ FILE: api/mindexd/pb/google/api/http.proto ================================================ // Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package google.api; option cc_enable_arenas = true; option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; option java_multiple_files = true; option java_outer_classname = "HttpProto"; option java_package = "com.google.api"; option objc_class_prefix = "GAPI"; // Defines the HTTP configuration for an API service. It contains a list of // [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method // to one or more HTTP REST API methods. message Http { // A list of HTTP configuration rules that apply to individual API methods. // // **NOTE:** All service configuration rules follow "last one wins" order. repeated HttpRule rules = 1; // When set to true, URL path parameters will be fully URI-decoded except in // cases of single segment matches in reserved expansion, where "%2F" will be // left encoded. // // The default behavior is to not decode RFC 6570 reserved characters in multi // segment matches. bool fully_decode_reserved_expansion = 2; } // # gRPC Transcoding // // gRPC Transcoding is a feature for mapping between a gRPC method and one or // more HTTP REST endpoints. It allows developers to build a single API service // that supports both gRPC APIs and REST APIs. Many systems, including [Google // APIs](https://github.com/googleapis/googleapis), // [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC // Gateway](https://github.com/grpc-ecosystem/grpc-gateway), // and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature // and use it for large scale production services. // // `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies // how different portions of the gRPC request message are mapped to the URL // path, URL query parameters, and HTTP request body. It also controls how the // gRPC response message is mapped to the HTTP response body. `HttpRule` is // typically specified as an `google.api.http` annotation on the gRPC method. // // Each mapping specifies a URL path template and an HTTP method. The path // template may refer to one or more fields in the gRPC request message, as long // as each field is a non-repeated field with a primitive (non-message) type. // The path template controls how fields of the request message are mapped to // the URL path. // // Example: // // service Messaging { // rpc GetMessage(GetMessageRequest) returns (Message) { // option (google.api.http) = { // get: "/v1/{name=messages/*}" // }; // } // } // message GetMessageRequest { // string name = 1; // Mapped to URL path. // } // message Message { // string text = 1; // The resource content. // } // // This enables an HTTP REST to gRPC mapping as below: // // HTTP | gRPC // -----|----- // `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")` // // Any fields in the request message which are not bound by the path template // automatically become HTTP query parameters if there is no HTTP request body. // For example: // // service Messaging { // rpc GetMessage(GetMessageRequest) returns (Message) { // option (google.api.http) = { // get:"/v1/messages/{message_id}" // }; // } // } // message GetMessageRequest { // message SubMessage { // string subfield = 1; // } // string message_id = 1; // Mapped to URL path. // int64 revision = 2; // Mapped to URL query parameter `revision`. // SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`. // } // // This enables a HTTP JSON to RPC mapping as below: // // HTTP | gRPC // -----|----- // `GET /v1/messages/123456?revision=2&sub.subfield=foo` | // `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: // "foo"))` // // Note that fields which are mapped to URL query parameters must have a // primitive type or a repeated primitive type or a non-repeated message type. // In the case of a repeated type, the parameter can be repeated in the URL // as `...?param=A¶m=B`. In the case of a message type, each field of the // message is mapped to a separate parameter, such as // `...?foo.a=A&foo.b=B&foo.c=C`. // // For HTTP methods that allow a request body, the `body` field // specifies the mapping. Consider a REST update method on the // message resource collection: // // service Messaging { // rpc UpdateMessage(UpdateMessageRequest) returns (Message) { // option (google.api.http) = { // patch: "/v1/messages/{message_id}" // body: "message" // }; // } // } // message UpdateMessageRequest { // string message_id = 1; // mapped to the URL // Message message = 2; // mapped to the body // } // // The following HTTP JSON to RPC mapping is enabled, where the // representation of the JSON in the request body is determined by // protos JSON encoding: // // HTTP | gRPC // -----|----- // `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: // "123456" message { text: "Hi!" })` // // The special name `*` can be used in the body mapping to define that // every field not bound by the path template should be mapped to the // request body. This enables the following alternative definition of // the update method: // // service Messaging { // rpc UpdateMessage(Message) returns (Message) { // option (google.api.http) = { // patch: "/v1/messages/{message_id}" // body: "*" // }; // } // } // message Message { // string message_id = 1; // string text = 2; // } // // // The following HTTP JSON to RPC mapping is enabled: // // HTTP | gRPC // -----|----- // `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: // "123456" text: "Hi!")` // // Note that when using `*` in the body mapping, it is not possible to // have HTTP parameters, as all fields not bound by the path end in // the body. This makes this option more rarely used in practice when // defining REST APIs. The common usage of `*` is in custom methods // which don't use the URL at all for transferring data. // // It is possible to define multiple HTTP methods for one RPC by using // the `additional_bindings` option. Example: // // service Messaging { // rpc GetMessage(GetMessageRequest) returns (Message) { // option (google.api.http) = { // get: "/v1/messages/{message_id}" // additional_bindings { // get: "/v1/users/{user_id}/messages/{message_id}" // } // }; // } // } // message GetMessageRequest { // string message_id = 1; // string user_id = 2; // } // // This enables the following two alternative HTTP JSON to RPC mappings: // // HTTP | gRPC // -----|----- // `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` // `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: // "123456")` // // ## Rules for HTTP mapping // // 1. Leaf request fields (recursive expansion nested messages in the request // message) are classified into three categories: // - Fields referred by the path template. They are passed via the URL path. // - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They are passed via the HTTP // request body. // - All other fields are passed via the URL query parameters, and the // parameter name is the field path in the request message. A repeated // field can be represented as multiple query parameters under the same // name. // 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL query parameter, all fields // are passed via URL path and HTTP request body. // 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP request body, all // fields are passed via URL path and URL query parameters. // // ### Path template syntax // // Template = "/" Segments [ Verb ] ; // Segments = Segment { "/" Segment } ; // Segment = "*" | "**" | LITERAL | Variable ; // Variable = "{" FieldPath [ "=" Segments ] "}" ; // FieldPath = IDENT { "." IDENT } ; // Verb = ":" LITERAL ; // // The syntax `*` matches a single URL path segment. The syntax `**` matches // zero or more URL path segments, which must be the last part of the URL path // except the `Verb`. // // The syntax `Variable` matches part of the URL path as specified by its // template. A variable template must not contain other variables. If a variable // matches a single path segment, its template may be omitted, e.g. `{var}` // is equivalent to `{var=*}`. // // The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL` // contains any reserved character, such characters should be percent-encoded // before the matching. // // If a variable contains exactly one path segment, such as `"{var}"` or // `"{var=*}"`, when such a variable is expanded into a URL path on the client // side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The // server side does the reverse decoding. Such variables show up in the // [Discovery // Document](https://developers.google.com/discovery/v1/reference/apis) as // `{var}`. // // If a variable contains multiple path segments, such as `"{var=foo/*}"` // or `"{var=**}"`, when such a variable is expanded into a URL path on the // client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. // The server side does the reverse decoding, except "%2F" and "%2f" are left // unchanged. Such variables show up in the // [Discovery // Document](https://developers.google.com/discovery/v1/reference/apis) as // `{+var}`. // // ## Using gRPC API Service Configuration // // gRPC API Service Configuration (service config) is a configuration language // for configuring a gRPC service to become a user-facing product. The // service config is simply the YAML representation of the `google.api.Service` // proto message. // // As an alternative to annotating your proto file, you can configure gRPC // transcoding in your service config YAML files. You do this by specifying a // `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same // effect as the proto annotation. This can be particularly useful if you // have a proto that is reused in multiple services. Note that any transcoding // specified in the service config will override any matching transcoding // configuration in the proto. // // Example: // // http: // rules: // # Selects a gRPC method and applies HttpRule to it. // - selector: example.v1.Messaging.GetMessage // get: /v1/messages/{message_id}/{sub.subfield} // // ## Special notes // // When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the // proto to JSON conversion must follow the [proto3 // specification](https://developers.google.com/protocol-buffers/docs/proto3#json). // // While the single segment variable follows the semantics of // [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String // Expansion, the multi segment variable **does not** follow RFC 6570 Section // 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion // does not expand special characters like `?` and `#`, which would lead // to invalid URLs. As the result, gRPC Transcoding uses a custom encoding // for multi segment variables. // // The path variables **must not** refer to any repeated or mapped field, // because client libraries are not capable of handling such variable expansion. // // The path variables **must not** capture the leading "/" character. The reason // is that the most common use case "{var}" does not capture the leading "/" // character. For consistency, all path variables must share the same behavior. // // Repeated message fields must not be mapped to URL query parameters, because // no client library can support such complicated mapping. // // If an API needs to use a JSON array for request or response body, it can map // the request or response body to a repeated field. However, some gRPC // Transcoding implementations may not support this feature. message HttpRule { // Selects a method to which this rule applies. // // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. string selector = 1; // Determines the URL pattern is matched by this rules. This pattern can be // used with any of the {get|put|post|delete|patch} methods. A custom method // can be defined using the 'custom' field. oneof pattern { // Maps to HTTP GET. Used for listing and getting information about // resources. string get = 2; // Maps to HTTP PUT. Used for replacing a resource. string put = 3; // Maps to HTTP POST. Used for creating a resource or performing an action. string post = 4; // Maps to HTTP DELETE. Used for deleting a resource. string delete = 5; // Maps to HTTP PATCH. Used for updating a resource. string patch = 6; // The custom pattern is used for specifying an HTTP method that is not // included in the `pattern` field, such as HEAD, or "*" to leave the // HTTP method unspecified for this rule. The wild-card rule is useful // for services that provide content to Web (HTML) clients. CustomHttpPattern custom = 8; } // The name of the request field whose value is mapped to the HTTP request // body, or `*` for mapping all request fields not captured by the path // pattern to the HTTP body, or omitted for not having any HTTP request body. // // NOTE: the referred field must be present at the top-level of the request // message type. string body = 7; // Optional. The name of the response field whose value is mapped to the HTTP // response body. When omitted, the entire response message will be used // as the HTTP response body. // // NOTE: The referred field must be present at the top-level of the response // message type. string response_body = 12; // Additional HTTP bindings for the selector. Nested bindings must // not contain an `additional_bindings` field themselves (that is, // the nesting may only be one level deep). repeated HttpRule additional_bindings = 11; } // A custom pattern is used for defining custom HTTP verb. message CustomHttpPattern { // The name of this custom HTTP verb. string kind = 1; // The path matched by this custom verb. string path = 2; } ================================================ FILE: api/mindexd/pb/google/api/httpbody.proto ================================================ // Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package google.api; import "google/protobuf/any.proto"; option cc_enable_arenas = true; option go_package = "google.golang.org/genproto/googleapis/api/httpbody;httpbody"; option java_multiple_files = true; option java_outer_classname = "HttpBodyProto"; option java_package = "com.google.api"; option objc_class_prefix = "GAPI"; // Message that represents an arbitrary HTTP body. It should only be used for // payload formats that can't be represented as JSON, such as raw binary or // an HTML page. // // // This message can be used both in streaming and non-streaming API methods in // the request as well as the response. // // It can be used as a top-level request field, which is convenient if one // wants to extract parameters from either the URL or HTTP template into the // request fields and also want access to the raw HTTP body. // // Example: // // message GetResourceRequest { // // A unique request id. // string request_id = 1; // // // The raw HTTP body is bound to this field. // google.api.HttpBody http_body = 2; // } // // service ResourceService { // rpc GetResource(GetResourceRequest) returns (google.api.HttpBody); // rpc UpdateResource(google.api.HttpBody) returns // (google.protobuf.Empty); // } // // Example with streaming methods: // // service CaldavService { // rpc GetCalendar(stream google.api.HttpBody) // returns (stream google.api.HttpBody); // rpc UpdateCalendar(stream google.api.HttpBody) // returns (stream google.api.HttpBody); // } // // Use of this type only changes how the request and response bodies are // handled, all other features will continue to work unchanged. message HttpBody { // The HTTP Content-Type header value specifying the content type of the body. string content_type = 1; // The HTTP request/response body as raw binary. bytes data = 2; // Application specific response metadata. Must be set in the first response // for streaming APIs. repeated google.protobuf.Any extensions = 3; } ================================================ FILE: api/mindexd/pb/mindexd.pb.go ================================================ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.23.0 // protoc v3.13.0 // source: api/mindexd/pb/mindexd.proto package pb import ( context "context" proto "github.com/golang/protobuf/proto" timestamp "github.com/golang/protobuf/ptypes/timestamp" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) 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 that a sufficiently up-to-date version // of the legacy proto package is being used. const _ = proto.ProtoPackageIsVersion4 type QueryIndexRequestSortField int32 const ( QueryIndexRequestSortField_TEXTILE_DEALS_TOTAL_SUCCESSFUL QueryIndexRequestSortField = 0 QueryIndexRequestSortField_TEXTILE_DEALS_LAST_SUCCESSFUL QueryIndexRequestSortField = 1 QueryIndexRequestSortField_TEXTILE_RETRIEVALS_TOTAL_SUCCESSFUL QueryIndexRequestSortField = 2 QueryIndexRequestSortField_TEXTILE_RETRIEVALS_LAST_SUCCESSFUL QueryIndexRequestSortField = 3 QueryIndexRequestSortField_ASK_PRICE QueryIndexRequestSortField = 4 QueryIndexRequestSortField_VERIFIED_ASK_PRICE QueryIndexRequestSortField = 5 QueryIndexRequestSortField_ACTIVE_SECTORS QueryIndexRequestSortField = 6 ) // Enum value maps for QueryIndexRequestSortField. var ( QueryIndexRequestSortField_name = map[int32]string{ 0: "TEXTILE_DEALS_TOTAL_SUCCESSFUL", 1: "TEXTILE_DEALS_LAST_SUCCESSFUL", 2: "TEXTILE_RETRIEVALS_TOTAL_SUCCESSFUL", 3: "TEXTILE_RETRIEVALS_LAST_SUCCESSFUL", 4: "ASK_PRICE", 5: "VERIFIED_ASK_PRICE", 6: "ACTIVE_SECTORS", } QueryIndexRequestSortField_value = map[string]int32{ "TEXTILE_DEALS_TOTAL_SUCCESSFUL": 0, "TEXTILE_DEALS_LAST_SUCCESSFUL": 1, "TEXTILE_RETRIEVALS_TOTAL_SUCCESSFUL": 2, "TEXTILE_RETRIEVALS_LAST_SUCCESSFUL": 3, "ASK_PRICE": 4, "VERIFIED_ASK_PRICE": 5, "ACTIVE_SECTORS": 6, } ) func (x QueryIndexRequestSortField) Enum() *QueryIndexRequestSortField { p := new(QueryIndexRequestSortField) *p = x return p } func (x QueryIndexRequestSortField) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (QueryIndexRequestSortField) Descriptor() protoreflect.EnumDescriptor { return file_api_mindexd_pb_mindexd_proto_enumTypes[0].Descriptor() } func (QueryIndexRequestSortField) Type() protoreflect.EnumType { return &file_api_mindexd_pb_mindexd_proto_enumTypes[0] } func (x QueryIndexRequestSortField) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use QueryIndexRequestSortField.Descriptor instead. func (QueryIndexRequestSortField) EnumDescriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{0} } // Domain type MinerIndexInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MinerAddr string `protobuf:"bytes,1,opt,name=miner_addr,json=minerAddr,proto3" json:"miner_addr,omitempty"` Metadata *MetadataInfo `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` Filecoin *FilecoinInfo `protobuf:"bytes,3,opt,name=filecoin,proto3" json:"filecoin,omitempty"` Textile *TextileInfo `protobuf:"bytes,4,opt,name=textile,proto3" json:"textile,omitempty"` UpdatedAt *timestamp.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` } func (x *MinerIndexInfo) Reset() { *x = MinerIndexInfo{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MinerIndexInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*MinerIndexInfo) ProtoMessage() {} func (x *MinerIndexInfo) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 MinerIndexInfo.ProtoReflect.Descriptor instead. func (*MinerIndexInfo) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{0} } func (x *MinerIndexInfo) GetMinerAddr() string { if x != nil { return x.MinerAddr } return "" } func (x *MinerIndexInfo) GetMetadata() *MetadataInfo { if x != nil { return x.Metadata } return nil } func (x *MinerIndexInfo) GetFilecoin() *FilecoinInfo { if x != nil { return x.Filecoin } return nil } func (x *MinerIndexInfo) GetTextile() *TextileInfo { if x != nil { return x.Textile } return nil } func (x *MinerIndexInfo) GetUpdatedAt() *timestamp.Timestamp { if x != nil { return x.UpdatedAt } return nil } type MetadataInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Location string `protobuf:"bytes,1,opt,name=location,proto3" json:"location,omitempty"` } func (x *MetadataInfo) Reset() { *x = MetadataInfo{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MetadataInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*MetadataInfo) ProtoMessage() {} func (x *MetadataInfo) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 MetadataInfo.ProtoReflect.Descriptor instead. func (*MetadataInfo) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{1} } func (x *MetadataInfo) GetLocation() string { if x != nil { return x.Location } return "" } type FilecoinInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RelativePower float64 `protobuf:"fixed64,1,opt,name=relative_power,json=relativePower,proto3" json:"relative_power,omitempty"` AskPrice string `protobuf:"bytes,2,opt,name=ask_price,json=askPrice,proto3" json:"ask_price,omitempty"` AskVerifiedPrice string `protobuf:"bytes,3,opt,name=ask_verified_price,json=askVerifiedPrice,proto3" json:"ask_verified_price,omitempty"` MinPieceSize int64 `protobuf:"varint,4,opt,name=min_piece_size,json=minPieceSize,proto3" json:"min_piece_size,omitempty"` MaxPieceSize int64 `protobuf:"varint,5,opt,name=max_piece_size,json=maxPieceSize,proto3" json:"max_piece_size,omitempty"` SectorSize int64 `protobuf:"varint,6,opt,name=sector_size,json=sectorSize,proto3" json:"sector_size,omitempty"` ActiveSectors int64 `protobuf:"varint,7,opt,name=active_sectors,json=activeSectors,proto3" json:"active_sectors,omitempty"` FaultySectors int64 `protobuf:"varint,8,opt,name=faulty_sectors,json=faultySectors,proto3" json:"faulty_sectors,omitempty"` UpdatedAt *timestamp.Timestamp `protobuf:"bytes,9,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` } func (x *FilecoinInfo) Reset() { *x = FilecoinInfo{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FilecoinInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*FilecoinInfo) ProtoMessage() {} func (x *FilecoinInfo) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 FilecoinInfo.ProtoReflect.Descriptor instead. func (*FilecoinInfo) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{2} } func (x *FilecoinInfo) GetRelativePower() float64 { if x != nil { return x.RelativePower } return 0 } func (x *FilecoinInfo) GetAskPrice() string { if x != nil { return x.AskPrice } return "" } func (x *FilecoinInfo) GetAskVerifiedPrice() string { if x != nil { return x.AskVerifiedPrice } return "" } func (x *FilecoinInfo) GetMinPieceSize() int64 { if x != nil { return x.MinPieceSize } return 0 } func (x *FilecoinInfo) GetMaxPieceSize() int64 { if x != nil { return x.MaxPieceSize } return 0 } func (x *FilecoinInfo) GetSectorSize() int64 { if x != nil { return x.SectorSize } return 0 } func (x *FilecoinInfo) GetActiveSectors() int64 { if x != nil { return x.ActiveSectors } return 0 } func (x *FilecoinInfo) GetFaultySectors() int64 { if x != nil { return x.FaultySectors } return 0 } func (x *FilecoinInfo) GetUpdatedAt() *timestamp.Timestamp { if x != nil { return x.UpdatedAt } return nil } type TextileInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Regions map[string]*TextileRegionInfo `protobuf:"bytes,1,rep,name=regions,proto3" json:"regions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` DealsSummary *DealsSummary `protobuf:"bytes,2,opt,name=deals_summary,json=dealsSummary,proto3" json:"deals_summary,omitempty"` RetrievalsSummary *RetrievalsSummary `protobuf:"bytes,3,opt,name=retrievals_summary,json=retrievalsSummary,proto3" json:"retrievals_summary,omitempty"` UpdatedAt *timestamp.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` } func (x *TextileInfo) Reset() { *x = TextileInfo{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TextileInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*TextileInfo) ProtoMessage() {} func (x *TextileInfo) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 TextileInfo.ProtoReflect.Descriptor instead. func (*TextileInfo) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{3} } func (x *TextileInfo) GetRegions() map[string]*TextileRegionInfo { if x != nil { return x.Regions } return nil } func (x *TextileInfo) GetDealsSummary() *DealsSummary { if x != nil { return x.DealsSummary } return nil } func (x *TextileInfo) GetRetrievalsSummary() *RetrievalsSummary { if x != nil { return x.RetrievalsSummary } return nil } func (x *TextileInfo) GetUpdatedAt() *timestamp.Timestamp { if x != nil { return x.UpdatedAt } return nil } type TextileRegionInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Deals *TextileDealsInfo `protobuf:"bytes,1,opt,name=deals,proto3" json:"deals,omitempty"` Retrievals *TextileRetrievalsInfo `protobuf:"bytes,2,opt,name=retrievals,proto3" json:"retrievals,omitempty"` } func (x *TextileRegionInfo) Reset() { *x = TextileRegionInfo{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TextileRegionInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*TextileRegionInfo) ProtoMessage() {} func (x *TextileRegionInfo) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 TextileRegionInfo.ProtoReflect.Descriptor instead. func (*TextileRegionInfo) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{4} } func (x *TextileRegionInfo) GetDeals() *TextileDealsInfo { if x != nil { return x.Deals } return nil } func (x *TextileRegionInfo) GetRetrievals() *TextileRetrievalsInfo { if x != nil { return x.Retrievals } return nil } type DealsSummary struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` Last *timestamp.Timestamp `protobuf:"bytes,2,opt,name=last,proto3" json:"last,omitempty"` Failures int64 `protobuf:"varint,3,opt,name=failures,proto3" json:"failures,omitempty"` LastFailure *timestamp.Timestamp `protobuf:"bytes,4,opt,name=last_failure,json=lastFailure,proto3" json:"last_failure,omitempty"` } func (x *DealsSummary) Reset() { *x = DealsSummary{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DealsSummary) String() string { return protoimpl.X.MessageStringOf(x) } func (*DealsSummary) ProtoMessage() {} func (x *DealsSummary) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 DealsSummary.ProtoReflect.Descriptor instead. func (*DealsSummary) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{5} } func (x *DealsSummary) GetTotal() int64 { if x != nil { return x.Total } return 0 } func (x *DealsSummary) GetLast() *timestamp.Timestamp { if x != nil { return x.Last } return nil } func (x *DealsSummary) GetFailures() int64 { if x != nil { return x.Failures } return 0 } func (x *DealsSummary) GetLastFailure() *timestamp.Timestamp { if x != nil { return x.LastFailure } return nil } type RetrievalsSummary struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` Last *timestamp.Timestamp `protobuf:"bytes,2,opt,name=last,proto3" json:"last,omitempty"` Failures int64 `protobuf:"varint,3,opt,name=failures,proto3" json:"failures,omitempty"` LastFailure *timestamp.Timestamp `protobuf:"bytes,4,opt,name=last_failure,json=lastFailure,proto3" json:"last_failure,omitempty"` } func (x *RetrievalsSummary) Reset() { *x = RetrievalsSummary{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RetrievalsSummary) String() string { return protoimpl.X.MessageStringOf(x) } func (*RetrievalsSummary) ProtoMessage() {} func (x *RetrievalsSummary) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 RetrievalsSummary.ProtoReflect.Descriptor instead. func (*RetrievalsSummary) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{6} } func (x *RetrievalsSummary) GetTotal() int64 { if x != nil { return x.Total } return 0 } func (x *RetrievalsSummary) GetLast() *timestamp.Timestamp { if x != nil { return x.Last } return nil } func (x *RetrievalsSummary) GetFailures() int64 { if x != nil { return x.Failures } return 0 } func (x *RetrievalsSummary) GetLastFailure() *timestamp.Timestamp { if x != nil { return x.LastFailure } return nil } type TextileDealsInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` Last *timestamp.Timestamp `protobuf:"bytes,2,opt,name=last,proto3" json:"last,omitempty"` Failures int64 `protobuf:"varint,3,opt,name=failures,proto3" json:"failures,omitempty"` LastFailure *timestamp.Timestamp `protobuf:"bytes,4,opt,name=last_failure,json=lastFailure,proto3" json:"last_failure,omitempty"` TailTransfers []*TransferMiBPerSec `protobuf:"bytes,5,rep,name=tail_transfers,json=tailTransfers,proto3" json:"tail_transfers,omitempty"` TailSealed []*SealedDurationMins `protobuf:"bytes,6,rep,name=tail_sealed,json=tailSealed,proto3" json:"tail_sealed,omitempty"` } func (x *TextileDealsInfo) Reset() { *x = TextileDealsInfo{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TextileDealsInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*TextileDealsInfo) ProtoMessage() {} func (x *TextileDealsInfo) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 TextileDealsInfo.ProtoReflect.Descriptor instead. func (*TextileDealsInfo) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{7} } func (x *TextileDealsInfo) GetTotal() int64 { if x != nil { return x.Total } return 0 } func (x *TextileDealsInfo) GetLast() *timestamp.Timestamp { if x != nil { return x.Last } return nil } func (x *TextileDealsInfo) GetFailures() int64 { if x != nil { return x.Failures } return 0 } func (x *TextileDealsInfo) GetLastFailure() *timestamp.Timestamp { if x != nil { return x.LastFailure } return nil } func (x *TextileDealsInfo) GetTailTransfers() []*TransferMiBPerSec { if x != nil { return x.TailTransfers } return nil } func (x *TextileDealsInfo) GetTailSealed() []*SealedDurationMins { if x != nil { return x.TailSealed } return nil } type TextileRetrievalsInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` Last *timestamp.Timestamp `protobuf:"bytes,2,opt,name=last,proto3" json:"last,omitempty"` Failures int64 `protobuf:"varint,3,opt,name=failures,proto3" json:"failures,omitempty"` LastFailure *timestamp.Timestamp `protobuf:"bytes,4,opt,name=last_failure,json=lastFailure,proto3" json:"last_failure,omitempty"` TailTransfers []*TransferMiBPerSec `protobuf:"bytes,5,rep,name=tail_transfers,json=tailTransfers,proto3" json:"tail_transfers,omitempty"` } func (x *TextileRetrievalsInfo) Reset() { *x = TextileRetrievalsInfo{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TextileRetrievalsInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*TextileRetrievalsInfo) ProtoMessage() {} func (x *TextileRetrievalsInfo) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 TextileRetrievalsInfo.ProtoReflect.Descriptor instead. func (*TextileRetrievalsInfo) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{8} } func (x *TextileRetrievalsInfo) GetTotal() int64 { if x != nil { return x.Total } return 0 } func (x *TextileRetrievalsInfo) GetLast() *timestamp.Timestamp { if x != nil { return x.Last } return nil } func (x *TextileRetrievalsInfo) GetFailures() int64 { if x != nil { return x.Failures } return 0 } func (x *TextileRetrievalsInfo) GetLastFailure() *timestamp.Timestamp { if x != nil { return x.LastFailure } return nil } func (x *TextileRetrievalsInfo) GetTailTransfers() []*TransferMiBPerSec { if x != nil { return x.TailTransfers } return nil } type TransferMiBPerSec struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TransferedAt *timestamp.Timestamp `protobuf:"bytes,1,opt,name=transfered_at,json=transferedAt,proto3" json:"transfered_at,omitempty"` MibPerSec float64 `protobuf:"fixed64,2,opt,name=mib_per_sec,json=mibPerSec,proto3" json:"mib_per_sec,omitempty"` } func (x *TransferMiBPerSec) Reset() { *x = TransferMiBPerSec{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TransferMiBPerSec) String() string { return protoimpl.X.MessageStringOf(x) } func (*TransferMiBPerSec) ProtoMessage() {} func (x *TransferMiBPerSec) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 TransferMiBPerSec.ProtoReflect.Descriptor instead. func (*TransferMiBPerSec) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{9} } func (x *TransferMiBPerSec) GetTransferedAt() *timestamp.Timestamp { if x != nil { return x.TransferedAt } return nil } func (x *TransferMiBPerSec) GetMibPerSec() float64 { if x != nil { return x.MibPerSec } return 0 } type SealedDurationMins struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SealedAt *timestamp.Timestamp `protobuf:"bytes,1,opt,name=sealed_at,json=sealedAt,proto3" json:"sealed_at,omitempty"` DurationSeconds int64 `protobuf:"varint,2,opt,name=duration_seconds,json=durationSeconds,proto3" json:"duration_seconds,omitempty"` } func (x *SealedDurationMins) Reset() { *x = SealedDurationMins{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SealedDurationMins) String() string { return protoimpl.X.MessageStringOf(x) } func (*SealedDurationMins) ProtoMessage() {} func (x *SealedDurationMins) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 SealedDurationMins.ProtoReflect.Descriptor instead. func (*SealedDurationMins) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{10} } func (x *SealedDurationMins) GetSealedAt() *timestamp.Timestamp { if x != nil { return x.SealedAt } return nil } func (x *SealedDurationMins) GetDurationSeconds() int64 { if x != nil { return x.DurationSeconds } return 0 } type GetMinersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MinerAddress string `protobuf:"bytes,1,opt,name=miner_address,json=minerAddress,proto3" json:"miner_address,omitempty"` } func (x *GetMinersResponse) Reset() { *x = GetMinersResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetMinersResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetMinersResponse) ProtoMessage() {} func (x *GetMinersResponse) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 GetMinersResponse.ProtoReflect.Descriptor instead. func (*GetMinersResponse) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{11} } func (x *GetMinersResponse) GetMinerAddress() string { if x != nil { return x.MinerAddress } return "" } // rpc QueryIndexDashboard type QueryIndexRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Filters *QueryIndexRequestFilters `protobuf:"bytes,1,opt,name=filters,proto3" json:"filters,omitempty"` Sort *QueryIndexRequestSort `protobuf:"bytes,2,opt,name=sort,proto3" json:"sort,omitempty"` Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` Offset int64 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"` } func (x *QueryIndexRequest) Reset() { *x = QueryIndexRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *QueryIndexRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*QueryIndexRequest) ProtoMessage() {} func (x *QueryIndexRequest) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 QueryIndexRequest.ProtoReflect.Descriptor instead. func (*QueryIndexRequest) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{12} } func (x *QueryIndexRequest) GetFilters() *QueryIndexRequestFilters { if x != nil { return x.Filters } return nil } func (x *QueryIndexRequest) GetSort() *QueryIndexRequestSort { if x != nil { return x.Sort } return nil } func (x *QueryIndexRequest) GetLimit() int32 { if x != nil { return x.Limit } return 0 } func (x *QueryIndexRequest) GetOffset() int64 { if x != nil { return x.Offset } return 0 } type QueryIndexRequestFilters struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MinerLocation string `protobuf:"bytes,1,opt,name=miner_location,json=minerLocation,proto3" json:"miner_location,omitempty"` } func (x *QueryIndexRequestFilters) Reset() { *x = QueryIndexRequestFilters{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *QueryIndexRequestFilters) String() string { return protoimpl.X.MessageStringOf(x) } func (*QueryIndexRequestFilters) ProtoMessage() {} func (x *QueryIndexRequestFilters) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 QueryIndexRequestFilters.ProtoReflect.Descriptor instead. func (*QueryIndexRequestFilters) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{13} } func (x *QueryIndexRequestFilters) GetMinerLocation() string { if x != nil { return x.MinerLocation } return "" } type QueryIndexRequestSort struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ascending bool `protobuf:"varint,1,opt,name=ascending,proto3" json:"ascending,omitempty"` TextileRegion string `protobuf:"bytes,2,opt,name=textile_region,json=textileRegion,proto3" json:"textile_region,omitempty"` Field QueryIndexRequestSortField `protobuf:"varint,3,opt,name=field,proto3,enum=api.mindexd.pb.QueryIndexRequestSortField" json:"field,omitempty"` } func (x *QueryIndexRequestSort) Reset() { *x = QueryIndexRequestSort{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *QueryIndexRequestSort) String() string { return protoimpl.X.MessageStringOf(x) } func (*QueryIndexRequestSort) ProtoMessage() {} func (x *QueryIndexRequestSort) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 QueryIndexRequestSort.ProtoReflect.Descriptor instead. func (*QueryIndexRequestSort) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{14} } func (x *QueryIndexRequestSort) GetAscending() bool { if x != nil { return x.Ascending } return false } func (x *QueryIndexRequestSort) GetTextileRegion() string { if x != nil { return x.TextileRegion } return "" } func (x *QueryIndexRequestSort) GetField() QueryIndexRequestSortField { if x != nil { return x.Field } return QueryIndexRequestSortField_TEXTILE_DEALS_TOTAL_SUCCESSFUL } type QueryIndexResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Miners []*QueryIndexResponseMiner `protobuf:"bytes,1,rep,name=miners,proto3" json:"miners,omitempty"` } func (x *QueryIndexResponse) Reset() { *x = QueryIndexResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *QueryIndexResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*QueryIndexResponse) ProtoMessage() {} func (x *QueryIndexResponse) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 QueryIndexResponse.ProtoReflect.Descriptor instead. func (*QueryIndexResponse) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{15} } func (x *QueryIndexResponse) GetMiners() []*QueryIndexResponseMiner { if x != nil { return x.Miners } return nil } type QueryIndexResponseMiner struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Miner *MinerIndexInfo `protobuf:"bytes,1,opt,name=miner,proto3" json:"miner,omitempty"` } func (x *QueryIndexResponseMiner) Reset() { *x = QueryIndexResponseMiner{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *QueryIndexResponseMiner) String() string { return protoimpl.X.MessageStringOf(x) } func (*QueryIndexResponseMiner) ProtoMessage() {} func (x *QueryIndexResponseMiner) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 QueryIndexResponseMiner.ProtoReflect.Descriptor instead. func (*QueryIndexResponseMiner) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{16} } func (x *QueryIndexResponseMiner) GetMiner() *MinerIndexInfo { if x != nil { return x.Miner } return nil } // rpc GetMinerInfo type GetMinerInfoRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MinerAddress string `protobuf:"bytes,1,opt,name=miner_address,json=minerAddress,proto3" json:"miner_address,omitempty"` } func (x *GetMinerInfoRequest) Reset() { *x = GetMinerInfoRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetMinerInfoRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetMinerInfoRequest) ProtoMessage() {} func (x *GetMinerInfoRequest) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 GetMinerInfoRequest.ProtoReflect.Descriptor instead. func (*GetMinerInfoRequest) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{17} } func (x *GetMinerInfoRequest) GetMinerAddress() string { if x != nil { return x.MinerAddress } return "" } type GetMinerInfoResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Info *MinerIndexInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"` } func (x *GetMinerInfoResponse) Reset() { *x = GetMinerInfoResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetMinerInfoResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetMinerInfoResponse) ProtoMessage() {} func (x *GetMinerInfoResponse) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 GetMinerInfoResponse.ProtoReflect.Descriptor instead. func (*GetMinerInfoResponse) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{18} } func (x *GetMinerInfoResponse) GetInfo() *MinerIndexInfo { if x != nil { return x.Info } return nil } // rpc CalculateDealPrice type CalculateDealPriceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MinerAddresses []string `protobuf:"bytes,1,rep,name=miner_addresses,json=minerAddresses,proto3" json:"miner_addresses,omitempty"` DataSizeBytes int64 `protobuf:"varint,2,opt,name=data_size_bytes,json=dataSizeBytes,proto3" json:"data_size_bytes,omitempty"` DurationDays int64 `protobuf:"varint,3,opt,name=duration_days,json=durationDays,proto3" json:"duration_days,omitempty"` } func (x *CalculateDealPriceRequest) Reset() { *x = CalculateDealPriceRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CalculateDealPriceRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CalculateDealPriceRequest) ProtoMessage() {} func (x *CalculateDealPriceRequest) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 CalculateDealPriceRequest.ProtoReflect.Descriptor instead. func (*CalculateDealPriceRequest) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{19} } func (x *CalculateDealPriceRequest) GetMinerAddresses() []string { if x != nil { return x.MinerAddresses } return nil } func (x *CalculateDealPriceRequest) GetDataSizeBytes() int64 { if x != nil { return x.DataSizeBytes } return 0 } func (x *CalculateDealPriceRequest) GetDurationDays() int64 { if x != nil { return x.DurationDays } return 0 } type CalculateDealPriceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Results []*CalculateDealPriceMiner `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` PaddedSize int64 `protobuf:"varint,2,opt,name=padded_size,json=paddedSize,proto3" json:"padded_size,omitempty"` DurationEpochs int64 `protobuf:"varint,3,opt,name=duration_epochs,json=durationEpochs,proto3" json:"duration_epochs,omitempty"` } func (x *CalculateDealPriceResponse) Reset() { *x = CalculateDealPriceResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CalculateDealPriceResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CalculateDealPriceResponse) ProtoMessage() {} func (x *CalculateDealPriceResponse) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_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 CalculateDealPriceResponse.ProtoReflect.Descriptor instead. func (*CalculateDealPriceResponse) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{20} } func (x *CalculateDealPriceResponse) GetResults() []*CalculateDealPriceMiner { if x != nil { return x.Results } return nil } func (x *CalculateDealPriceResponse) GetPaddedSize() int64 { if x != nil { return x.PaddedSize } return 0 } func (x *CalculateDealPriceResponse) GetDurationEpochs() int64 { if x != nil { return x.DurationEpochs } return 0 } type CalculateDealPriceMiner struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Miner string `protobuf:"bytes,1,opt,name=miner,proto3" json:"miner,omitempty"` TotalCost string `protobuf:"bytes,2,opt,name=total_cost,json=totalCost,proto3" json:"total_cost,omitempty"` VerifiedTotalCost string `protobuf:"bytes,3,opt,name=verified_total_cost,json=verifiedTotalCost,proto3" json:"verified_total_cost,omitempty"` Price string `protobuf:"bytes,4,opt,name=price,proto3" json:"price,omitempty"` VerifiedPrice string `protobuf:"bytes,5,opt,name=verified_price,json=verifiedPrice,proto3" json:"verified_price,omitempty"` } func (x *CalculateDealPriceMiner) Reset() { *x = CalculateDealPriceMiner{} if protoimpl.UnsafeEnabled { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CalculateDealPriceMiner) String() string { return protoimpl.X.MessageStringOf(x) } func (*CalculateDealPriceMiner) ProtoMessage() {} func (x *CalculateDealPriceMiner) ProtoReflect() protoreflect.Message { mi := &file_api_mindexd_pb_mindexd_proto_msgTypes[21] 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 CalculateDealPriceMiner.ProtoReflect.Descriptor instead. func (*CalculateDealPriceMiner) Descriptor() ([]byte, []int) { return file_api_mindexd_pb_mindexd_proto_rawDescGZIP(), []int{21} } func (x *CalculateDealPriceMiner) GetMiner() string { if x != nil { return x.Miner } return "" } func (x *CalculateDealPriceMiner) GetTotalCost() string { if x != nil { return x.TotalCost } return "" } func (x *CalculateDealPriceMiner) GetVerifiedTotalCost() string { if x != nil { return x.VerifiedTotalCost } return "" } func (x *CalculateDealPriceMiner) GetPrice() string { if x != nil { return x.Price } return "" } func (x *CalculateDealPriceMiner) GetVerifiedPrice() string { if x != nil { return x.VerifiedPrice } return "" } var File_api_mindexd_pb_mindexd_proto protoreflect.FileDescriptor var file_api_mindexd_pb_mindexd_proto_rawDesc = []byte{ 0x0a, 0x1c, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2f, 0x70, 0x62, 0x2f, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 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, 0x1a, 0x2b, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2f, 0x70, 0x62, 0x2f, 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, 0x3d, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2f, 0x70, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x95, 0x02, 0x0a, 0x0e, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, 0x38, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x63, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x35, 0x0a, 0x07, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x2a, 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xf6, 0x02, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x65, 0x63, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x73, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x73, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x73, 0x6b, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x73, 0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x50, 0x69, 0x65, 0x63, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x50, 0x69, 0x65, 0x63, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x79, 0x53, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x80, 0x03, 0x0a, 0x0b, 0x54, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x42, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x0d, 0x64, 0x65, 0x61, 0x6c, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x61, 0x6c, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0c, 0x64, 0x65, 0x61, 0x6c, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x50, 0x0a, 0x12, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x11, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x1a, 0x5d, 0x0a, 0x0c, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x92, 0x01, 0x0a, 0x11, 0x54, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x36, 0x0a, 0x05, 0x64, 0x65, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x61, 0x6c, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x64, 0x65, 0x61, 0x6c, 0x73, 0x12, 0x45, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x73, 0x22, 0xaf, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x61, 0x6c, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x6c, 0x61, 0x73, 0x74, 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, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x04, 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, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x22, 0xb4, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x6c, 0x61, 0x73, 0x74, 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, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x04, 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, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x22, 0xc2, 0x02, 0x0a, 0x10, 0x54, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x61, 0x6c, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x6c, 0x61, 0x73, 0x74, 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, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x04, 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, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x48, 0x0a, 0x0e, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4d, 0x69, 0x42, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x52, 0x0d, 0x74, 0x61, 0x69, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x43, 0x0a, 0x0b, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x73, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x73, 0x52, 0x0a, 0x74, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x22, 0x82, 0x02, 0x0a, 0x15, 0x54, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x6c, 0x61, 0x73, 0x74, 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, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x04, 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, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x48, 0x0a, 0x0e, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4d, 0x69, 0x42, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x52, 0x0d, 0x74, 0x61, 0x69, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x22, 0x74, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4d, 0x69, 0x42, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x12, 0x3f, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 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, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1e, 0x0a, 0x0b, 0x6d, 0x69, 0x62, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6d, 0x69, 0x62, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x22, 0x78, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x73, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 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, 0x08, 0x73, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x38, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xc0, 0x01, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x41, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9e, 0x01, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x55, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x22, 0x4f, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x22, 0x72, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5b, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x36, 0x92, 0x41, 0x33, 0x32, 0x31, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x4a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x9d, 0x02, 0x0a, 0x19, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5d, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x34, 0x92, 0x41, 0x31, 0x32, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x64, 0x65, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x0e, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x2c, 0x92, 0x41, 0x29, 0x32, 0x27, 0x44, 0x61, 0x74, 0x61, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x0d, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x26, 0x92, 0x41, 0x23, 0x32, 0x1c, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x64, 0x61, 0x79, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x61, 0x6c, 0x3a, 0x03, 0x31, 0x38, 0x30, 0x52, 0x0c, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x22, 0xa9, 0x01, 0x0a, 0x1a, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x61, 0x64, 0x64, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x22, 0xf6, 0x03, 0x0a, 0x17, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0x92, 0x41, 0x25, 0x32, 0x23, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x6d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4e, 0x92, 0x41, 0x4b, 0x32, 0x49, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x70, 0x72, 0x69, 0x63, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x79, 0x0a, 0x13, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x49, 0x92, 0x41, 0x46, 0x32, 0x44, 0x54, 0x68, 0x65, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3a, 0x92, 0x41, 0x37, 0x32, 0x35, 0x54, 0x68, 0x65, 0x20, 0x70, 0x72, 0x69, 0x63, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x74, 0x74, 0x6f, 0x46, 0x49, 0x4c, 0x2f, 0x47, 0x69, 0x42, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x5f, 0x0a, 0x0e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x38, 0x92, 0x41, 0x35, 0x32, 0x33, 0x54, 0x68, 0x65, 0x20, 0x70, 0x72, 0x69, 0x63, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x74, 0x74, 0x6f, 0x46, 0x49, 0x4c, 0x2f, 0x47, 0x69, 0x42, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x0d, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x2a, 0xef, 0x01, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x45, 0x58, 0x54, 0x49, 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x41, 0x4c, 0x53, 0x5f, 0x54, 0x4f, 0x54, 0x41, 0x4c, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x46, 0x55, 0x4c, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x45, 0x58, 0x54, 0x49, 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x41, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x46, 0x55, 0x4c, 0x10, 0x01, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x45, 0x58, 0x54, 0x49, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x41, 0x4c, 0x53, 0x5f, 0x54, 0x4f, 0x54, 0x41, 0x4c, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x46, 0x55, 0x4c, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x45, 0x58, 0x54, 0x49, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x41, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x46, 0x55, 0x4c, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x53, 0x4b, 0x5f, 0x50, 0x52, 0x49, 0x43, 0x45, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x41, 0x53, 0x4b, 0x5f, 0x50, 0x52, 0x49, 0x43, 0x45, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x53, 0x10, 0x06, 0x32, 0x8f, 0x03, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x82, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2f, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x12, 0x8d, 0x01, 0x0a, 0x12, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x42, 0xf7, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x69, 0x6f, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x64, 0x2f, 0x70, 0x62, 0x92, 0x41, 0xc3, 0x01, 0x12, 0x98, 0x01, 0x0a, 0x13, 0x54, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x20, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x20, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x31, 0x0a, 0x07, 0x54, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x2e, 0x69, 0x6f, 0x1a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x40, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x2e, 0x69, 0x6f, 0x2a, 0x49, 0x0a, 0x03, 0x4d, 0x49, 0x54, 0x12, 0x42, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x72, 0x61, 0x77, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x75, 0x73, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x69, 0x6f, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x32, 0x03, 0x31, 0x2e, 0x30, 0x2a, 0x02, 0x02, 0x01, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_api_mindexd_pb_mindexd_proto_rawDescOnce sync.Once file_api_mindexd_pb_mindexd_proto_rawDescData = file_api_mindexd_pb_mindexd_proto_rawDesc ) func file_api_mindexd_pb_mindexd_proto_rawDescGZIP() []byte { file_api_mindexd_pb_mindexd_proto_rawDescOnce.Do(func() { file_api_mindexd_pb_mindexd_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_mindexd_pb_mindexd_proto_rawDescData) }) return file_api_mindexd_pb_mindexd_proto_rawDescData } var file_api_mindexd_pb_mindexd_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_api_mindexd_pb_mindexd_proto_msgTypes = make([]protoimpl.MessageInfo, 23) var file_api_mindexd_pb_mindexd_proto_goTypes = []interface{}{ (QueryIndexRequestSortField)(0), // 0: api.mindexd.pb.QueryIndexRequestSortField (*MinerIndexInfo)(nil), // 1: api.mindexd.pb.MinerIndexInfo (*MetadataInfo)(nil), // 2: api.mindexd.pb.MetadataInfo (*FilecoinInfo)(nil), // 3: api.mindexd.pb.FilecoinInfo (*TextileInfo)(nil), // 4: api.mindexd.pb.TextileInfo (*TextileRegionInfo)(nil), // 5: api.mindexd.pb.TextileRegionInfo (*DealsSummary)(nil), // 6: api.mindexd.pb.DealsSummary (*RetrievalsSummary)(nil), // 7: api.mindexd.pb.RetrievalsSummary (*TextileDealsInfo)(nil), // 8: api.mindexd.pb.TextileDealsInfo (*TextileRetrievalsInfo)(nil), // 9: api.mindexd.pb.TextileRetrievalsInfo (*TransferMiBPerSec)(nil), // 10: api.mindexd.pb.TransferMiBPerSec (*SealedDurationMins)(nil), // 11: api.mindexd.pb.SealedDurationMins (*GetMinersResponse)(nil), // 12: api.mindexd.pb.GetMinersResponse (*QueryIndexRequest)(nil), // 13: api.mindexd.pb.QueryIndexRequest (*QueryIndexRequestFilters)(nil), // 14: api.mindexd.pb.QueryIndexRequestFilters (*QueryIndexRequestSort)(nil), // 15: api.mindexd.pb.QueryIndexRequestSort (*QueryIndexResponse)(nil), // 16: api.mindexd.pb.QueryIndexResponse (*QueryIndexResponseMiner)(nil), // 17: api.mindexd.pb.QueryIndexResponseMiner (*GetMinerInfoRequest)(nil), // 18: api.mindexd.pb.GetMinerInfoRequest (*GetMinerInfoResponse)(nil), // 19: api.mindexd.pb.GetMinerInfoResponse (*CalculateDealPriceRequest)(nil), // 20: api.mindexd.pb.CalculateDealPriceRequest (*CalculateDealPriceResponse)(nil), // 21: api.mindexd.pb.CalculateDealPriceResponse (*CalculateDealPriceMiner)(nil), // 22: api.mindexd.pb.CalculateDealPriceMiner nil, // 23: api.mindexd.pb.TextileInfo.RegionsEntry (*timestamp.Timestamp)(nil), // 24: google.protobuf.Timestamp } var file_api_mindexd_pb_mindexd_proto_depIdxs = []int32{ 2, // 0: api.mindexd.pb.MinerIndexInfo.metadata:type_name -> api.mindexd.pb.MetadataInfo 3, // 1: api.mindexd.pb.MinerIndexInfo.filecoin:type_name -> api.mindexd.pb.FilecoinInfo 4, // 2: api.mindexd.pb.MinerIndexInfo.textile:type_name -> api.mindexd.pb.TextileInfo 24, // 3: api.mindexd.pb.MinerIndexInfo.updated_at:type_name -> google.protobuf.Timestamp 24, // 4: api.mindexd.pb.FilecoinInfo.updated_at:type_name -> google.protobuf.Timestamp 23, // 5: api.mindexd.pb.TextileInfo.regions:type_name -> api.mindexd.pb.TextileInfo.RegionsEntry 6, // 6: api.mindexd.pb.TextileInfo.deals_summary:type_name -> api.mindexd.pb.DealsSummary 7, // 7: api.mindexd.pb.TextileInfo.retrievals_summary:type_name -> api.mindexd.pb.RetrievalsSummary 24, // 8: api.mindexd.pb.TextileInfo.updated_at:type_name -> google.protobuf.Timestamp 8, // 9: api.mindexd.pb.TextileRegionInfo.deals:type_name -> api.mindexd.pb.TextileDealsInfo 9, // 10: api.mindexd.pb.TextileRegionInfo.retrievals:type_name -> api.mindexd.pb.TextileRetrievalsInfo 24, // 11: api.mindexd.pb.DealsSummary.last:type_name -> google.protobuf.Timestamp 24, // 12: api.mindexd.pb.DealsSummary.last_failure:type_name -> google.protobuf.Timestamp 24, // 13: api.mindexd.pb.RetrievalsSummary.last:type_name -> google.protobuf.Timestamp 24, // 14: api.mindexd.pb.RetrievalsSummary.last_failure:type_name -> google.protobuf.Timestamp 24, // 15: api.mindexd.pb.TextileDealsInfo.last:type_name -> google.protobuf.Timestamp 24, // 16: api.mindexd.pb.TextileDealsInfo.last_failure:type_name -> google.protobuf.Timestamp 10, // 17: api.mindexd.pb.TextileDealsInfo.tail_transfers:type_name -> api.mindexd.pb.TransferMiBPerSec 11, // 18: api.mindexd.pb.TextileDealsInfo.tail_sealed:type_name -> api.mindexd.pb.SealedDurationMins 24, // 19: api.mindexd.pb.TextileRetrievalsInfo.last:type_name -> google.protobuf.Timestamp 24, // 20: api.mindexd.pb.TextileRetrievalsInfo.last_failure:type_name -> google.protobuf.Timestamp 10, // 21: api.mindexd.pb.TextileRetrievalsInfo.tail_transfers:type_name -> api.mindexd.pb.TransferMiBPerSec 24, // 22: api.mindexd.pb.TransferMiBPerSec.transfered_at:type_name -> google.protobuf.Timestamp 24, // 23: api.mindexd.pb.SealedDurationMins.sealed_at:type_name -> google.protobuf.Timestamp 14, // 24: api.mindexd.pb.QueryIndexRequest.filters:type_name -> api.mindexd.pb.QueryIndexRequestFilters 15, // 25: api.mindexd.pb.QueryIndexRequest.sort:type_name -> api.mindexd.pb.QueryIndexRequestSort 0, // 26: api.mindexd.pb.QueryIndexRequestSort.field:type_name -> api.mindexd.pb.QueryIndexRequestSortField 17, // 27: api.mindexd.pb.QueryIndexResponse.miners:type_name -> api.mindexd.pb.QueryIndexResponseMiner 1, // 28: api.mindexd.pb.QueryIndexResponseMiner.miner:type_name -> api.mindexd.pb.MinerIndexInfo 1, // 29: api.mindexd.pb.GetMinerInfoResponse.info:type_name -> api.mindexd.pb.MinerIndexInfo 22, // 30: api.mindexd.pb.CalculateDealPriceResponse.results:type_name -> api.mindexd.pb.CalculateDealPriceMiner 5, // 31: api.mindexd.pb.TextileInfo.RegionsEntry.value:type_name -> api.mindexd.pb.TextileRegionInfo 13, // 32: api.mindexd.pb.APIService.QueryIndex:input_type -> api.mindexd.pb.QueryIndexRequest 18, // 33: api.mindexd.pb.APIService.GetMinerInfo:input_type -> api.mindexd.pb.GetMinerInfoRequest 20, // 34: api.mindexd.pb.APIService.CalculateDealPrice:input_type -> api.mindexd.pb.CalculateDealPriceRequest 16, // 35: api.mindexd.pb.APIService.QueryIndex:output_type -> api.mindexd.pb.QueryIndexResponse 19, // 36: api.mindexd.pb.APIService.GetMinerInfo:output_type -> api.mindexd.pb.GetMinerInfoResponse 21, // 37: api.mindexd.pb.APIService.CalculateDealPrice:output_type -> api.mindexd.pb.CalculateDealPriceResponse 35, // [35:38] is the sub-list for method output_type 32, // [32:35] is the sub-list for method input_type 32, // [32:32] is the sub-list for extension type_name 32, // [32:32] is the sub-list for extension extendee 0, // [0:32] is the sub-list for field type_name } func init() { file_api_mindexd_pb_mindexd_proto_init() } func file_api_mindexd_pb_mindexd_proto_init() { if File_api_mindexd_pb_mindexd_proto != nil { return } if !protoimpl.UnsafeEnabled { file_api_mindexd_pb_mindexd_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MinerIndexInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MetadataInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FilecoinInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TextileInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TextileRegionInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DealsSummary); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RetrievalsSummary); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TextileDealsInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TextileRetrievalsInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransferMiBPerSec); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SealedDurationMins); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetMinersResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryIndexRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryIndexRequestFilters); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryIndexRequestSort); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryIndexResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryIndexResponseMiner); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetMinerInfoRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetMinerInfoResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CalculateDealPriceRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CalculateDealPriceResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_mindexd_pb_mindexd_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CalculateDealPriceMiner); 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_api_mindexd_pb_mindexd_proto_rawDesc, NumEnums: 1, NumMessages: 23, NumExtensions: 0, NumServices: 1, }, GoTypes: file_api_mindexd_pb_mindexd_proto_goTypes, DependencyIndexes: file_api_mindexd_pb_mindexd_proto_depIdxs, EnumInfos: file_api_mindexd_pb_mindexd_proto_enumTypes, MessageInfos: file_api_mindexd_pb_mindexd_proto_msgTypes, }.Build() File_api_mindexd_pb_mindexd_proto = out.File file_api_mindexd_pb_mindexd_proto_rawDesc = nil file_api_mindexd_pb_mindexd_proto_goTypes = nil file_api_mindexd_pb_mindexd_proto_depIdxs = nil } // Reference imports to suppress errors if they are not otherwise used. var _ context.Context var _ grpc.ClientConnInterface // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. const _ = grpc.SupportPackageIsVersion6 // APIServiceClient is the client API for APIService service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type APIServiceClient interface { QueryIndex(ctx context.Context, in *QueryIndexRequest, opts ...grpc.CallOption) (*QueryIndexResponse, error) GetMinerInfo(ctx context.Context, in *GetMinerInfoRequest, opts ...grpc.CallOption) (*GetMinerInfoResponse, error) CalculateDealPrice(ctx context.Context, in *CalculateDealPriceRequest, opts ...grpc.CallOption) (*CalculateDealPriceResponse, error) } type aPIServiceClient struct { cc grpc.ClientConnInterface } func NewAPIServiceClient(cc grpc.ClientConnInterface) APIServiceClient { return &aPIServiceClient{cc} } func (c *aPIServiceClient) QueryIndex(ctx context.Context, in *QueryIndexRequest, opts ...grpc.CallOption) (*QueryIndexResponse, error) { out := new(QueryIndexResponse) err := c.cc.Invoke(ctx, "/api.mindexd.pb.APIService/QueryIndex", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) GetMinerInfo(ctx context.Context, in *GetMinerInfoRequest, opts ...grpc.CallOption) (*GetMinerInfoResponse, error) { out := new(GetMinerInfoResponse) err := c.cc.Invoke(ctx, "/api.mindexd.pb.APIService/GetMinerInfo", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) CalculateDealPrice(ctx context.Context, in *CalculateDealPriceRequest, opts ...grpc.CallOption) (*CalculateDealPriceResponse, error) { out := new(CalculateDealPriceResponse) err := c.cc.Invoke(ctx, "/api.mindexd.pb.APIService/CalculateDealPrice", in, out, opts...) if err != nil { return nil, err } return out, nil } // APIServiceServer is the server API for APIService service. type APIServiceServer interface { QueryIndex(context.Context, *QueryIndexRequest) (*QueryIndexResponse, error) GetMinerInfo(context.Context, *GetMinerInfoRequest) (*GetMinerInfoResponse, error) CalculateDealPrice(context.Context, *CalculateDealPriceRequest) (*CalculateDealPriceResponse, error) } // UnimplementedAPIServiceServer can be embedded to have forward compatible implementations. type UnimplementedAPIServiceServer struct { } func (*UnimplementedAPIServiceServer) QueryIndex(context.Context, *QueryIndexRequest) (*QueryIndexResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method QueryIndex not implemented") } func (*UnimplementedAPIServiceServer) GetMinerInfo(context.Context, *GetMinerInfoRequest) (*GetMinerInfoResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetMinerInfo not implemented") } func (*UnimplementedAPIServiceServer) CalculateDealPrice(context.Context, *CalculateDealPriceRequest) (*CalculateDealPriceResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CalculateDealPrice not implemented") } func RegisterAPIServiceServer(s *grpc.Server, srv APIServiceServer) { s.RegisterService(&_APIService_serviceDesc, srv) } func _APIService_QueryIndex_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(QueryIndexRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).QueryIndex(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.mindexd.pb.APIService/QueryIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).QueryIndex(ctx, req.(*QueryIndexRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_GetMinerInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetMinerInfoRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).GetMinerInfo(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.mindexd.pb.APIService/GetMinerInfo", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).GetMinerInfo(ctx, req.(*GetMinerInfoRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_CalculateDealPrice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CalculateDealPriceRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).CalculateDealPrice(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.mindexd.pb.APIService/CalculateDealPrice", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).CalculateDealPrice(ctx, req.(*CalculateDealPriceRequest)) } return interceptor(ctx, in, info, handler) } var _APIService_serviceDesc = grpc.ServiceDesc{ ServiceName: "api.mindexd.pb.APIService", HandlerType: (*APIServiceServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "QueryIndex", Handler: _APIService_QueryIndex_Handler, }, { MethodName: "GetMinerInfo", Handler: _APIService_GetMinerInfo_Handler, }, { MethodName: "CalculateDealPrice", Handler: _APIService_CalculateDealPrice_Handler, }, }, Streams: []grpc.StreamDesc{}, Metadata: "api/mindexd/pb/mindexd.proto", } ================================================ FILE: api/mindexd/pb/mindexd.pb.gw.go ================================================ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. // source: api/mindexd/pb/mindexd.proto /* Package pb is a reverse proxy. It translates gRPC into RESTful JSON APIs. */ package pb import ( "context" "io" "net/http" "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" "google.golang.org/protobuf/proto" ) // Suppress "imported and not used" errors var _ codes.Code var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray var _ = metadata.Join var ( filter_APIService_QueryIndex_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} ) func request_APIService_QueryIndex_0(ctx context.Context, marshaler runtime.Marshaler, client APIServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq QueryIndexRequest var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_APIService_QueryIndex_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := client.QueryIndex(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } func local_request_APIService_QueryIndex_0(ctx context.Context, marshaler runtime.Marshaler, server APIServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq QueryIndexRequest var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_APIService_QueryIndex_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.QueryIndex(ctx, &protoReq) return msg, metadata, err } func request_APIService_GetMinerInfo_0(ctx context.Context, marshaler runtime.Marshaler, client APIServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq GetMinerInfoRequest var metadata runtime.ServerMetadata var ( val string ok bool err error _ = err ) val, ok = pathParams["miner_address"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "miner_address") } protoReq.MinerAddress, err = runtime.String(val) if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "miner_address", err) } msg, err := client.GetMinerInfo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } func local_request_APIService_GetMinerInfo_0(ctx context.Context, marshaler runtime.Marshaler, server APIServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq GetMinerInfoRequest var metadata runtime.ServerMetadata var ( val string ok bool err error _ = err ) val, ok = pathParams["miner_address"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "miner_address") } protoReq.MinerAddress, err = runtime.String(val) if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "miner_address", err) } msg, err := server.GetMinerInfo(ctx, &protoReq) return msg, metadata, err } var ( filter_APIService_CalculateDealPrice_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} ) func request_APIService_CalculateDealPrice_0(ctx context.Context, marshaler runtime.Marshaler, client APIServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq CalculateDealPriceRequest var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_APIService_CalculateDealPrice_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := client.CalculateDealPrice(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } func local_request_APIService_CalculateDealPrice_0(ctx context.Context, marshaler runtime.Marshaler, server APIServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq CalculateDealPriceRequest var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_APIService_CalculateDealPrice_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.CalculateDealPrice(ctx, &protoReq) return msg, metadata, err } // RegisterAPIServiceHandlerServer registers the http handlers for service APIService to "mux". // UnaryRPC :call APIServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAPIServiceHandlerFromEndpoint instead. func RegisterAPIServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server APIServiceServer) error { mux.Handle("GET", pattern_APIService_QueryIndex_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/api.mindexd.pb.APIService/QueryIndex") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } resp, md, err := local_request_APIService_QueryIndex_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } forward_APIService_QueryIndex_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) mux.Handle("GET", pattern_APIService_GetMinerInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/api.mindexd.pb.APIService/GetMinerInfo") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } resp, md, err := local_request_APIService_GetMinerInfo_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } forward_APIService_GetMinerInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) mux.Handle("GET", pattern_APIService_CalculateDealPrice_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/api.mindexd.pb.APIService/CalculateDealPrice") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } resp, md, err := local_request_APIService_CalculateDealPrice_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } forward_APIService_CalculateDealPrice_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) return nil } // RegisterAPIServiceHandlerFromEndpoint is same as RegisterAPIServiceHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterAPIServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { conn, err := grpc.Dial(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) } }() }() return RegisterAPIServiceHandler(ctx, mux, conn) } // RegisterAPIServiceHandler registers the http handlers for service APIService to "mux". // The handlers forward requests to the grpc endpoint over "conn". func RegisterAPIServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { return RegisterAPIServiceHandlerClient(ctx, mux, NewAPIServiceClient(conn)) } // RegisterAPIServiceHandlerClient registers the http handlers for service APIService // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "APIServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "APIServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "APIServiceClient" to call the correct interceptors. func RegisterAPIServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client APIServiceClient) error { mux.Handle("GET", pattern_APIService_QueryIndex_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req, "/api.mindexd.pb.APIService/QueryIndex") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } resp, md, err := request_APIService_QueryIndex_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } forward_APIService_QueryIndex_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) mux.Handle("GET", pattern_APIService_GetMinerInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req, "/api.mindexd.pb.APIService/GetMinerInfo") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } resp, md, err := request_APIService_GetMinerInfo_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } forward_APIService_GetMinerInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) mux.Handle("GET", pattern_APIService_CalculateDealPrice_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req, "/api.mindexd.pb.APIService/CalculateDealPrice") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } resp, md, err := request_APIService_CalculateDealPrice_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } forward_APIService_CalculateDealPrice_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) return nil } var ( pattern_APIService_QueryIndex_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "index", "query"}, "")) pattern_APIService_GetMinerInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "index", "miner", "miner_address"}, "")) pattern_APIService_CalculateDealPrice_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "calculator", "calculate"}, "")) ) var ( forward_APIService_QueryIndex_0 = runtime.ForwardResponseMessage forward_APIService_GetMinerInfo_0 = runtime.ForwardResponseMessage forward_APIService_CalculateDealPrice_0 = runtime.ForwardResponseMessage ) ================================================ FILE: api/mindexd/pb/mindexd.proto ================================================ syntax = "proto3"; package api.mindexd.pb; option go_package = "github.com/textileio/textile/v2/api/mindexd/pb"; import "google/protobuf/timestamp.proto"; import "api/mindexd/pb/google/api/annotations.proto"; import "api/mindexd/pb/protoc-gen-openapiv2/options/annotations.proto"; // Domain message MinerIndexInfo { string miner_addr = 1; MetadataInfo metadata = 2; FilecoinInfo filecoin = 3; TextileInfo textile = 4; google.protobuf.Timestamp updated_at = 5; } message MetadataInfo { string location = 1; } message FilecoinInfo { double relative_power = 1; string ask_price = 2; string ask_verified_price = 3; int64 min_piece_size = 4; int64 max_piece_size = 5; int64 sector_size = 6; int64 active_sectors = 7; int64 faulty_sectors = 8; google.protobuf.Timestamp updated_at = 9; } message TextileInfo { map regions = 1; DealsSummary deals_summary = 2; RetrievalsSummary retrievals_summary = 3; google.protobuf.Timestamp updated_at = 4; } message TextileRegionInfo { TextileDealsInfo deals = 1; TextileRetrievalsInfo retrievals = 2; } message DealsSummary { int64 total = 1; google.protobuf.Timestamp last = 2; int64 failures = 3; google.protobuf.Timestamp last_failure = 4; } message RetrievalsSummary { int64 total = 1; google.protobuf.Timestamp last = 2; int64 failures = 3; google.protobuf.Timestamp last_failure = 4; } message TextileDealsInfo { int64 total = 1; google.protobuf.Timestamp last = 2; int64 failures = 3; google.protobuf.Timestamp last_failure = 4; repeated TransferMiBPerSec tail_transfers = 5; repeated SealedDurationMins tail_sealed = 6; } message TextileRetrievalsInfo { int64 total = 1; google.protobuf.Timestamp last = 2; int64 failures = 3; google.protobuf.Timestamp last_failure = 4; repeated TransferMiBPerSec tail_transfers = 5; } message TransferMiBPerSec { google.protobuf.Timestamp transfered_at = 1; double mib_per_sec = 2; } message SealedDurationMins { google.protobuf.Timestamp sealed_at = 1; int64 duration_seconds = 2; } message GetMinersResponse { string miner_address = 1; } // rpc QueryIndexDashboard message QueryIndexRequest { QueryIndexRequestFilters filters = 1; QueryIndexRequestSort sort = 2; int32 limit = 3; int64 offset = 4; } message QueryIndexRequestFilters { string miner_location = 1; } message QueryIndexRequestSort { bool ascending = 1; string textile_region = 2; QueryIndexRequestSortField field = 3; } enum QueryIndexRequestSortField { TEXTILE_DEALS_TOTAL_SUCCESSFUL = 0; TEXTILE_DEALS_LAST_SUCCESSFUL = 1; TEXTILE_RETRIEVALS_TOTAL_SUCCESSFUL = 2; TEXTILE_RETRIEVALS_LAST_SUCCESSFUL = 3; ASK_PRICE = 4; VERIFIED_ASK_PRICE = 5; ACTIVE_SECTORS = 6; } message QueryIndexResponse { repeated QueryIndexResponseMiner miners = 1; } message QueryIndexResponseMiner { MinerIndexInfo miner = 1; } // rpc GetMinerInfo message GetMinerInfoRequest { string miner_address = 1 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Miner address from which to get index information", }]; } message GetMinerInfoResponse { MinerIndexInfo info = 1; } // rpc CalculateDealPrice message CalculateDealPriceRequest { repeated string miner_addresses = 1 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "List of miner addresses to calculate deal costs", }]; int64 data_size_bytes = 2 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Data size in bytes of the data to store", }]; int64 duration_days = 3 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Duration in days of the deal", default: "180", }]; } message CalculateDealPriceResponse { repeated CalculateDealPriceMiner results = 1; int64 padded_size = 2; int64 duration_epochs = 3; } message CalculateDealPriceMiner { string miner = 1 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Miner address of this calculations.", }]; string total_cost = 2 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Total cost of the deal for the unverified price for the provided duration", }]; string verified_total_cost = 3 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "The verified-client total cost of the deal for the provided duration", }]; string price = 4 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "The price in attoFIL/GiB/epoch for unverified clients", }]; string verified_price = 5 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "The price in attoFIL/GiB/epoch for verified clients", }]; } service APIService { rpc QueryIndex(QueryIndexRequest) returns (QueryIndexResponse) { option (google.api.http) = { get: "/v1/index/query" }; } rpc GetMinerInfo(GetMinerInfoRequest) returns (GetMinerInfoResponse) { option (google.api.http) = { get: "/v1/index/miner/{miner_address}" }; } rpc CalculateDealPrice(CalculateDealPriceRequest) returns (CalculateDealPriceResponse) { option (google.api.http) = { get: "/v1/calculator/calculate" }; } } option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { info: { title: "Textile Miner Index"; version: "1.0"; contact: { name: "Textile"; url: "https://textile.io"; email: "contact@textile.io"; }; license: { name: "MIT"; url: "https://raw.githubusercontent.com/textileio/textile/master/LICENSE"; }; }; schemes: HTTPS; schemes: HTTP; consumes: "application/json"; produces: "application/json"; }; ================================================ FILE: api/mindexd/pb/mindexd.swagger.json ================================================ { "swagger": "2.0", "info": { "title": "Textile Miner Index", "version": "1.0", "contact": { "name": "Textile", "url": "https://textile.io", "email": "contact@textile.io" }, "license": { "name": "MIT", "url": "https://raw.githubusercontent.com/textileio/textile/master/LICENSE" } }, "tags": [ { "name": "APIService" } ], "schemes": [ "https", "http" ], "consumes": [ "application/json" ], "produces": [ "application/json" ], "paths": { "/v1/calculator/calculate": { "get": { "operationId": "APIService_CalculateDealPrice", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/pbCalculateDealPriceResponse" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/rpcStatus" } } }, "parameters": [ { "name": "minerAddresses", "description": "List of miner addresses to calculate deal costs", "in": "query", "required": false, "type": "array", "items": { "type": "string" }, "collectionFormat": "multi" }, { "name": "dataSizeBytes", "description": "Data size in bytes of the data to store", "in": "query", "required": false, "type": "string", "format": "int64" }, { "name": "durationDays", "description": "Duration in days of the deal", "in": "query", "required": false, "type": "string", "format": "int64", "default": "180" } ], "tags": [ "APIService" ] } }, "/v1/index/miner/{minerAddress}": { "get": { "operationId": "APIService_GetMinerInfo", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/pbGetMinerInfoResponse" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/rpcStatus" } } }, "parameters": [ { "name": "minerAddress", "description": "Miner address from which to get index information", "in": "path", "required": true, "type": "string" } ], "tags": [ "APIService" ] } }, "/v1/index/query": { "get": { "operationId": "APIService_QueryIndex", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/pbQueryIndexResponse" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/rpcStatus" } } }, "parameters": [ { "name": "filters.minerLocation", "in": "query", "required": false, "type": "string" }, { "name": "sort.ascending", "in": "query", "required": false, "type": "boolean" }, { "name": "sort.textileRegion", "in": "query", "required": false, "type": "string" }, { "name": "sort.field", "in": "query", "required": false, "type": "string", "enum": [ "TEXTILE_DEALS_TOTAL_SUCCESSFUL", "TEXTILE_DEALS_LAST_SUCCESSFUL", "TEXTILE_RETRIEVALS_TOTAL_SUCCESSFUL", "TEXTILE_RETRIEVALS_LAST_SUCCESSFUL", "ASK_PRICE", "VERIFIED_ASK_PRICE", "ACTIVE_SECTORS" ], "default": "TEXTILE_DEALS_TOTAL_SUCCESSFUL" }, { "name": "limit", "in": "query", "required": false, "type": "integer", "format": "int32" }, { "name": "offset", "in": "query", "required": false, "type": "string", "format": "int64" } ], "tags": [ "APIService" ] } } }, "definitions": { "pbCalculateDealPriceMiner": { "type": "object", "properties": { "miner": { "type": "string", "description": "Miner address of this calculations." }, "totalCost": { "type": "string", "description": "Total cost of the deal for the unverified price for the provided duration" }, "verifiedTotalCost": { "type": "string", "description": "The verified-client total cost of the deal for the provided duration" }, "price": { "type": "string", "description": "The price in attoFIL/GiB/epoch for unverified clients" }, "verifiedPrice": { "type": "string", "description": "The price in attoFIL/GiB/epoch for verified clients" } } }, "pbCalculateDealPriceResponse": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/definitions/pbCalculateDealPriceMiner" } }, "paddedSize": { "type": "string", "format": "int64" }, "durationEpochs": { "type": "string", "format": "int64" } } }, "pbDealsSummary": { "type": "object", "properties": { "total": { "type": "string", "format": "int64" }, "last": { "type": "string", "format": "date-time" }, "failures": { "type": "string", "format": "int64" }, "lastFailure": { "type": "string", "format": "date-time" } } }, "pbFilecoinInfo": { "type": "object", "properties": { "relativePower": { "type": "number", "format": "double" }, "askPrice": { "type": "string" }, "askVerifiedPrice": { "type": "string" }, "minPieceSize": { "type": "string", "format": "int64" }, "maxPieceSize": { "type": "string", "format": "int64" }, "sectorSize": { "type": "string", "format": "int64" }, "activeSectors": { "type": "string", "format": "int64" }, "faultySectors": { "type": "string", "format": "int64" }, "updatedAt": { "type": "string", "format": "date-time" } } }, "pbGetMinerInfoResponse": { "type": "object", "properties": { "info": { "$ref": "#/definitions/pbMinerIndexInfo" } } }, "pbMetadataInfo": { "type": "object", "properties": { "location": { "type": "string" } } }, "pbMinerIndexInfo": { "type": "object", "properties": { "minerAddr": { "type": "string" }, "metadata": { "$ref": "#/definitions/pbMetadataInfo" }, "filecoin": { "$ref": "#/definitions/pbFilecoinInfo" }, "textile": { "$ref": "#/definitions/pbTextileInfo" }, "updatedAt": { "type": "string", "format": "date-time" } }, "title": "Domain" }, "pbQueryIndexRequestFilters": { "type": "object", "properties": { "minerLocation": { "type": "string" } } }, "pbQueryIndexRequestSort": { "type": "object", "properties": { "ascending": { "type": "boolean" }, "textileRegion": { "type": "string" }, "field": { "$ref": "#/definitions/pbQueryIndexRequestSortField" } } }, "pbQueryIndexRequestSortField": { "type": "string", "enum": [ "TEXTILE_DEALS_TOTAL_SUCCESSFUL", "TEXTILE_DEALS_LAST_SUCCESSFUL", "TEXTILE_RETRIEVALS_TOTAL_SUCCESSFUL", "TEXTILE_RETRIEVALS_LAST_SUCCESSFUL", "ASK_PRICE", "VERIFIED_ASK_PRICE", "ACTIVE_SECTORS" ], "default": "TEXTILE_DEALS_TOTAL_SUCCESSFUL" }, "pbQueryIndexResponse": { "type": "object", "properties": { "miners": { "type": "array", "items": { "$ref": "#/definitions/pbQueryIndexResponseMiner" } } } }, "pbQueryIndexResponseMiner": { "type": "object", "properties": { "miner": { "$ref": "#/definitions/pbMinerIndexInfo" } } }, "pbRetrievalsSummary": { "type": "object", "properties": { "total": { "type": "string", "format": "int64" }, "last": { "type": "string", "format": "date-time" }, "failures": { "type": "string", "format": "int64" }, "lastFailure": { "type": "string", "format": "date-time" } } }, "pbSealedDurationMins": { "type": "object", "properties": { "sealedAt": { "type": "string", "format": "date-time" }, "durationSeconds": { "type": "string", "format": "int64" } } }, "pbTextileDealsInfo": { "type": "object", "properties": { "total": { "type": "string", "format": "int64" }, "last": { "type": "string", "format": "date-time" }, "failures": { "type": "string", "format": "int64" }, "lastFailure": { "type": "string", "format": "date-time" }, "tailTransfers": { "type": "array", "items": { "$ref": "#/definitions/pbTransferMiBPerSec" } }, "tailSealed": { "type": "array", "items": { "$ref": "#/definitions/pbSealedDurationMins" } } } }, "pbTextileInfo": { "type": "object", "properties": { "regions": { "type": "object", "additionalProperties": { "$ref": "#/definitions/pbTextileRegionInfo" } }, "dealsSummary": { "$ref": "#/definitions/pbDealsSummary" }, "retrievalsSummary": { "$ref": "#/definitions/pbRetrievalsSummary" }, "updatedAt": { "type": "string", "format": "date-time" } } }, "pbTextileRegionInfo": { "type": "object", "properties": { "deals": { "$ref": "#/definitions/pbTextileDealsInfo" }, "retrievals": { "$ref": "#/definitions/pbTextileRetrievalsInfo" } } }, "pbTextileRetrievalsInfo": { "type": "object", "properties": { "total": { "type": "string", "format": "int64" }, "last": { "type": "string", "format": "date-time" }, "failures": { "type": "string", "format": "int64" }, "lastFailure": { "type": "string", "format": "date-time" }, "tailTransfers": { "type": "array", "items": { "$ref": "#/definitions/pbTransferMiBPerSec" } } } }, "pbTransferMiBPerSec": { "type": "object", "properties": { "transferedAt": { "type": "string", "format": "date-time" }, "mibPerSec": { "type": "number", "format": "double" } } }, "protobufAny": { "type": "object", "properties": { "typeUrl": { "type": "string" }, "value": { "type": "string", "format": "byte" } } }, "rpcStatus": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32" }, "message": { "type": "string" }, "details": { "type": "array", "items": { "$ref": "#/definitions/protobufAny" } } } } } } ================================================ FILE: api/mindexd/pb/protoc-gen-openapiv2/options/annotations.proto ================================================ syntax = "proto3"; package grpc.gateway.protoc_gen_openapiv2.options; option go_package = "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options"; import "google/protobuf/descriptor.proto"; import "api/mindexd/pb/protoc-gen-openapiv2/options/openapiv2.proto"; extend google.protobuf.FileOptions { // ID assigned by protobuf-global-extension-registry@google.com for gRPC-Gateway project. // // All IDs are the same, as assigned. It is okay that they are the same, as they extend // different descriptor messages. Swagger openapiv2_swagger = 1042; } extend google.protobuf.MethodOptions { // ID assigned by protobuf-global-extension-registry@google.com for gRPC-Gateway project. // // All IDs are the same, as assigned. It is okay that they are the same, as they extend // different descriptor messages. Operation openapiv2_operation = 1042; } extend google.protobuf.MessageOptions { // ID assigned by protobuf-global-extension-registry@google.com for gRPC-Gateway project. // // All IDs are the same, as assigned. It is okay that they are the same, as they extend // different descriptor messages. Schema openapiv2_schema = 1042; } extend google.protobuf.ServiceOptions { // ID assigned by protobuf-global-extension-registry@google.com for gRPC-Gateway project. // // All IDs are the same, as assigned. It is okay that they are the same, as they extend // different descriptor messages. Tag openapiv2_tag = 1042; } extend google.protobuf.FieldOptions { // ID assigned by protobuf-global-extension-registry@google.com for gRPC-Gateway project. // // All IDs are the same, as assigned. It is okay that they are the same, as they extend // different descriptor messages. JSONSchema openapiv2_field = 1042; } ================================================ FILE: api/mindexd/pb/protoc-gen-openapiv2/options/openapiv2.proto ================================================ syntax = "proto3"; package grpc.gateway.protoc_gen_openapiv2.options; option go_package = "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options"; import "google/protobuf/struct.proto"; // Scheme describes the schemes supported by the OpenAPI Swagger // and Operation objects. enum Scheme { UNKNOWN = 0; HTTP = 1; HTTPS = 2; WS = 3; WSS = 4; } // `Swagger` is a representation of OpenAPI v2 specification's Swagger object. // // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#swaggerObject // // Example: // // option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { // info: { // title: "Echo API"; // version: "1.0"; // description: "; // contact: { // name: "gRPC-Gateway project"; // url: "https://github.com/grpc-ecosystem/grpc-gateway"; // email: "none@example.com"; // }; // license: { // name: "BSD 3-Clause License"; // url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/master/LICENSE.txt"; // }; // }; // schemes: HTTPS; // consumes: "application/json"; // produces: "application/json"; // }; // message Swagger { // Specifies the OpenAPI Specification version being used. It can be // used by the OpenAPI UI and other clients to interpret the API listing. The // value MUST be "2.0". string swagger = 1; // Provides metadata about the API. The metadata can be used by the // clients if needed. Info info = 2; // The host (name or ip) serving the API. This MUST be the host only and does // not include the scheme nor sub-paths. It MAY include a port. If the host is // not included, the host serving the documentation is to be used (including // the port). The host does not support path templating. string host = 3; // The base path on which the API is served, which is relative to the host. If // it is not included, the API is served directly under the host. The value // MUST start with a leading slash (/). The basePath does not support path // templating. // Note that using `base_path` does not change the endpoint paths that are // generated in the resulting OpenAPI file. If you wish to use `base_path` // with relatively generated OpenAPI paths, the `base_path` prefix must be // manually removed from your `google.api.http` paths and your code changed to // serve the API from the `base_path`. string base_path = 4; // The transfer protocol of the API. Values MUST be from the list: "http", // "https", "ws", "wss". If the schemes is not included, the default scheme to // be used is the one used to access the OpenAPI definition itself. repeated Scheme schemes = 5; // A list of MIME types the APIs can consume. This is global to all APIs but // can be overridden on specific API calls. Value MUST be as described under // Mime Types. repeated string consumes = 6; // A list of MIME types the APIs can produce. This is global to all APIs but // can be overridden on specific API calls. Value MUST be as described under // Mime Types. repeated string produces = 7; // field 8 is reserved for 'paths'. reserved 8; // field 9 is reserved for 'definitions', which at this time are already // exposed as and customizable as proto messages. reserved 9; // An object to hold responses that can be used across operations. This // property does not define global responses for all operations. map responses = 10; // Security scheme definitions that can be used across the specification. SecurityDefinitions security_definitions = 11; // A declaration of which security schemes are applied for the API as a whole. // The list of values describes alternative security schemes that can be used // (that is, there is a logical OR between the security requirements). // Individual operations can override this definition. repeated SecurityRequirement security = 12; // field 13 is reserved for 'tags', which are supposed to be exposed as and // customizable as proto services. TODO(ivucica): add processing of proto // service objects into OpenAPI v2 Tag objects. reserved 13; // Additional external documentation. ExternalDocumentation external_docs = 14; map extensions = 15; } // `Operation` is a representation of OpenAPI v2 specification's Operation object. // // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#operationObject // // Example: // // service EchoService { // rpc Echo(SimpleMessage) returns (SimpleMessage) { // option (google.api.http) = { // get: "/v1/example/echo/{id}" // }; // // option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { // summary: "Get a message."; // operation_id: "getMessage"; // tags: "echo"; // responses: { // key: "200" // value: { // description: "OK"; // } // } // }; // } // } message Operation { // A list of tags for API documentation control. Tags can be used for logical // grouping of operations by resources or any other qualifier. repeated string tags = 1; // A short summary of what the operation does. For maximum readability in the // swagger-ui, this field SHOULD be less than 120 characters. string summary = 2; // A verbose explanation of the operation behavior. GFM syntax can be used for // rich text representation. string description = 3; // Additional external documentation for this operation. ExternalDocumentation external_docs = 4; // Unique string used to identify the operation. The id MUST be unique among // all operations described in the API. Tools and libraries MAY use the // operationId to uniquely identify an operation, therefore, it is recommended // to follow common programming naming conventions. string operation_id = 5; // A list of MIME types the operation can consume. This overrides the consumes // definition at the OpenAPI Object. An empty value MAY be used to clear the // global definition. Value MUST be as described under Mime Types. repeated string consumes = 6; // A list of MIME types the operation can produce. This overrides the produces // definition at the OpenAPI Object. An empty value MAY be used to clear the // global definition. Value MUST be as described under Mime Types. repeated string produces = 7; // field 8 is reserved for 'parameters'. reserved 8; // The list of possible responses as they are returned from executing this // operation. map responses = 9; // The transfer protocol for the operation. Values MUST be from the list: // "http", "https", "ws", "wss". The value overrides the OpenAPI Object // schemes definition. repeated Scheme schemes = 10; // Declares this operation to be deprecated. Usage of the declared operation // should be refrained. Default value is false. bool deprecated = 11; // A declaration of which security schemes are applied for this operation. The // list of values describes alternative security schemes that can be used // (that is, there is a logical OR between the security requirements). This // definition overrides any declared top-level security. To remove a top-level // security declaration, an empty array can be used. repeated SecurityRequirement security = 12; map extensions = 13; } // `Header` is a representation of OpenAPI v2 specification's Header object. // // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#headerObject // message Header { // `Description` is a short description of the header. string description = 1; // The type of the object. The value MUST be one of "string", "number", "integer", or "boolean". The "array" type is not supported. string type = 2; // `Format` The extending format for the previously mentioned type. string format = 3; // field 4 is reserved for 'items', but in OpenAPI-specific way. reserved 4; // field 5 is reserved `Collection Format` Determines the format of the array if type array is used. reserved 5; // `Default` Declares the value of the header that the server will use if none is provided. // See: https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.2. // Unlike JSON Schema this value MUST conform to the defined type for the header. string default = 6; // field 7 is reserved for 'maximum'. reserved 7; // field 8 is reserved for 'exclusiveMaximum'. reserved 8; // field 9 is reserved for 'minimum'. reserved 9; // field 10 is reserved for 'exclusiveMinimum'. reserved 10; // field 11 is reserved for 'maxLength'. reserved 11; // field 12 is reserved for 'minLength'. reserved 12; // 'Pattern' See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.3. string pattern = 13; // field 14 is reserved for 'maxItems'. reserved 14; // field 15 is reserved for 'minItems'. reserved 15; // field 16 is reserved for 'uniqueItems'. reserved 16; // field 17 is reserved for 'enum'. reserved 17; // field 18 is reserved for 'multipleOf'. reserved 18; } // `Response` is a representation of OpenAPI v2 specification's Response object. // // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#responseObject // message Response { // `Description` is a short description of the response. // GFM syntax can be used for rich text representation. string description = 1; // `Schema` optionally defines the structure of the response. // If `Schema` is not provided, it means there is no content to the response. Schema schema = 2; // `Headers` A list of headers that are sent with the response. // `Header` name is expected to be a string in the canonical format of the MIME header key // See: https://golang.org/pkg/net/textproto/#CanonicalMIMEHeaderKey map headers = 3; // `Examples` gives per-mimetype response examples. // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#example-object map examples = 4; map extensions = 5; } // `Info` is a representation of OpenAPI v2 specification's Info object. // // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#infoObject // // Example: // // option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { // info: { // title: "Echo API"; // version: "1.0"; // description: "; // contact: { // name: "gRPC-Gateway project"; // url: "https://github.com/grpc-ecosystem/grpc-gateway"; // email: "none@example.com"; // }; // license: { // name: "BSD 3-Clause License"; // url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/master/LICENSE.txt"; // }; // }; // ... // }; // message Info { // The title of the application. string title = 1; // A short description of the application. GFM syntax can be used for rich // text representation. string description = 2; // The Terms of Service for the API. string terms_of_service = 3; // The contact information for the exposed API. Contact contact = 4; // The license information for the exposed API. License license = 5; // Provides the version of the application API (not to be confused // with the specification version). string version = 6; map extensions = 7; } // `Contact` is a representation of OpenAPI v2 specification's Contact object. // // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#contactObject // // Example: // // option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { // info: { // ... // contact: { // name: "gRPC-Gateway project"; // url: "https://github.com/grpc-ecosystem/grpc-gateway"; // email: "none@example.com"; // }; // ... // }; // ... // }; // message Contact { // The identifying name of the contact person/organization. string name = 1; // The URL pointing to the contact information. MUST be in the format of a // URL. string url = 2; // The email address of the contact person/organization. MUST be in the format // of an email address. string email = 3; } // `License` is a representation of OpenAPI v2 specification's License object. // // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#licenseObject // // Example: // // option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { // info: { // ... // license: { // name: "BSD 3-Clause License"; // url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/master/LICENSE.txt"; // }; // ... // }; // ... // }; // message License { // The license name used for the API. string name = 1; // A URL to the license used for the API. MUST be in the format of a URL. string url = 2; } // `ExternalDocumentation` is a representation of OpenAPI v2 specification's // ExternalDocumentation object. // // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#externalDocumentationObject // // Example: // // option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { // ... // external_docs: { // description: "More about gRPC-Gateway"; // url: "https://github.com/grpc-ecosystem/grpc-gateway"; // } // ... // }; // message ExternalDocumentation { // A short description of the target documentation. GFM syntax can be used for // rich text representation. string description = 1; // The URL for the target documentation. Value MUST be in the format // of a URL. string url = 2; } // `Schema` is a representation of OpenAPI v2 specification's Schema object. // // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject // message Schema { JSONSchema json_schema = 1; // Adds support for polymorphism. The discriminator is the schema property // name that is used to differentiate between other schema that inherit this // schema. The property name used MUST be defined at this schema and it MUST // be in the required property list. When used, the value MUST be the name of // this schema or any schema that inherits it. string discriminator = 2; // Relevant only for Schema "properties" definitions. Declares the property as // "read only". This means that it MAY be sent as part of a response but MUST // NOT be sent as part of the request. Properties marked as readOnly being // true SHOULD NOT be in the required list of the defined schema. Default // value is false. bool read_only = 3; // field 4 is reserved for 'xml'. reserved 4; // Additional external documentation for this schema. ExternalDocumentation external_docs = 5; // A free-form property to include an example of an instance for this schema in JSON. // This is copied verbatim to the output. string example = 6; } // `JSONSchema` represents properties from JSON Schema taken, and as used, in // the OpenAPI v2 spec. // // This includes changes made by OpenAPI v2. // // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject // // See also: https://cswr.github.io/JsonSchema/spec/basic_types/, // https://github.com/json-schema-org/json-schema-spec/blob/master/schema.json // // Example: // // message SimpleMessage { // option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { // json_schema: { // title: "SimpleMessage" // description: "A simple message." // required: ["id"] // } // }; // // // Id represents the message identifier. // string id = 1; [ // (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { // {description: "The unique identifier of the simple message." // }]; // } // message JSONSchema { // field 1 is reserved for '$id', omitted from OpenAPI v2. reserved 1; // field 2 is reserved for '$schema', omitted from OpenAPI v2. reserved 2; // Ref is used to define an external reference to include in the message. // This could be a fully qualified proto message reference, and that type must // be imported into the protofile. If no message is identified, the Ref will // be used verbatim in the output. // For example: // `ref: ".google.protobuf.Timestamp"`. string ref = 3; // field 4 is reserved for '$comment', omitted from OpenAPI v2. reserved 4; // The title of the schema. string title = 5; // A short description of the schema. string description = 6; string default = 7; bool read_only = 8; // A free-form property to include a JSON example of this field. This is copied // verbatim to the output swagger.json. Quotes must be escaped. // This property is the same for 2.0 and 3.0.0 https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/3.0.0.md#schemaObject https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject string example = 9; double multiple_of = 10; // Maximum represents an inclusive upper limit for a numeric instance. The // value of MUST be a number, double maximum = 11; bool exclusive_maximum = 12; // minimum represents an inclusive lower limit for a numeric instance. The // value of MUST be a number, double minimum = 13; bool exclusive_minimum = 14; uint64 max_length = 15; uint64 min_length = 16; string pattern = 17; // field 18 is reserved for 'additionalItems', omitted from OpenAPI v2. reserved 18; // field 19 is reserved for 'items', but in OpenAPI-specific way. // TODO(ivucica): add 'items'? reserved 19; uint64 max_items = 20; uint64 min_items = 21; bool unique_items = 22; // field 23 is reserved for 'contains', omitted from OpenAPI v2. reserved 23; uint64 max_properties = 24; uint64 min_properties = 25; repeated string required = 26; // field 27 is reserved for 'additionalProperties', but in OpenAPI-specific // way. TODO(ivucica): add 'additionalProperties'? reserved 27; // field 28 is reserved for 'definitions', omitted from OpenAPI v2. reserved 28; // field 29 is reserved for 'properties', but in OpenAPI-specific way. // TODO(ivucica): add 'additionalProperties'? reserved 29; // following fields are reserved, as the properties have been omitted from // OpenAPI v2: // patternProperties, dependencies, propertyNames, const reserved 30 to 33; // Items in 'array' must be unique. repeated string array = 34; enum JSONSchemaSimpleTypes { UNKNOWN = 0; ARRAY = 1; BOOLEAN = 2; INTEGER = 3; NULL = 4; NUMBER = 5; OBJECT = 6; STRING = 7; } repeated JSONSchemaSimpleTypes type = 35; // `Format` string format = 36; // following fields are reserved, as the properties have been omitted from // OpenAPI v2: contentMediaType, contentEncoding, if, then, else reserved 37 to 41; // field 42 is reserved for 'allOf', but in OpenAPI-specific way. // TODO(ivucica): add 'allOf'? reserved 42; // following fields are reserved, as the properties have been omitted from // OpenAPI v2: // anyOf, oneOf, not reserved 43 to 45; // Items in `enum` must be unique https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.5.1 repeated string enum = 46; } // `Tag` is a representation of OpenAPI v2 specification's Tag object. // // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#tagObject // message Tag { // field 1 is reserved for 'name'. In our generator, this is (to be) extracted // from the name of proto service, and thus not exposed to the user, as // changing tag object's name would break the link to the references to the // tag in individual operation specifications. // // TODO(ivucica): Add 'name' property. Use it to allow override of the name of // global Tag object, then use that name to reference the tag throughout the // OpenAPI file. reserved 1; // A short description for the tag. GFM syntax can be used for rich text // representation. string description = 2; // Additional external documentation for this tag. ExternalDocumentation external_docs = 3; } // `SecurityDefinitions` is a representation of OpenAPI v2 specification's // Security Definitions object. // // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#securityDefinitionsObject // // A declaration of the security schemes available to be used in the // specification. This does not enforce the security schemes on the operations // and only serves to provide the relevant details for each scheme. message SecurityDefinitions { // A single security scheme definition, mapping a "name" to the scheme it // defines. map security = 1; } // `SecurityScheme` is a representation of OpenAPI v2 specification's // Security Scheme object. // // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#securitySchemeObject // // Allows the definition of a security scheme that can be used by the // operations. Supported schemes are basic authentication, an API key (either as // a header or as a query parameter) and OAuth2's common flows (implicit, // password, application and access code). message SecurityScheme { // The type of the security scheme. Valid values are "basic", // "apiKey" or "oauth2". enum Type { TYPE_INVALID = 0; TYPE_BASIC = 1; TYPE_API_KEY = 2; TYPE_OAUTH2 = 3; } // The location of the API key. Valid values are "query" or "header". enum In { IN_INVALID = 0; IN_QUERY = 1; IN_HEADER = 2; } // The flow used by the OAuth2 security scheme. Valid values are // "implicit", "password", "application" or "accessCode". enum Flow { FLOW_INVALID = 0; FLOW_IMPLICIT = 1; FLOW_PASSWORD = 2; FLOW_APPLICATION = 3; FLOW_ACCESS_CODE = 4; } // The type of the security scheme. Valid values are "basic", // "apiKey" or "oauth2". Type type = 1; // A short description for security scheme. string description = 2; // The name of the header or query parameter to be used. // Valid for apiKey. string name = 3; // The location of the API key. Valid values are "query" or // "header". // Valid for apiKey. In in = 4; // The flow used by the OAuth2 security scheme. Valid values are // "implicit", "password", "application" or "accessCode". // Valid for oauth2. Flow flow = 5; // The authorization URL to be used for this flow. This SHOULD be in // the form of a URL. // Valid for oauth2/implicit and oauth2/accessCode. string authorization_url = 6; // The token URL to be used for this flow. This SHOULD be in the // form of a URL. // Valid for oauth2/password, oauth2/application and oauth2/accessCode. string token_url = 7; // The available scopes for the OAuth2 security scheme. // Valid for oauth2. Scopes scopes = 8; map extensions = 9; } // `SecurityRequirement` is a representation of OpenAPI v2 specification's // Security Requirement object. // // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#securityRequirementObject // // Lists the required security schemes to execute this operation. The object can // have multiple security schemes declared in it which are all required (that // is, there is a logical AND between the schemes). // // The name used for each property MUST correspond to a security scheme // declared in the Security Definitions. message SecurityRequirement { // If the security scheme is of type "oauth2", then the value is a list of // scope names required for the execution. For other security scheme types, // the array MUST be empty. message SecurityRequirementValue { repeated string scope = 1; } // Each name must correspond to a security scheme which is declared in // the Security Definitions. If the security scheme is of type "oauth2", // then the value is a list of scope names required for the execution. // For other security scheme types, the array MUST be empty. map security_requirement = 1; } // `Scopes` is a representation of OpenAPI v2 specification's Scopes object. // // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#scopesObject // // Lists the available scopes for an OAuth2 security scheme. message Scopes { // Maps between a name of a scope to a short description of it (as the value // of the property). map scope = 1; } ================================================ FILE: api/mindexd/service/cast.go ================================================ package service import ( "fmt" "time" "github.com/textileio/textile/v2/api/mindexd/model" "github.com/textileio/textile/v2/api/mindexd/pb" "github.com/textileio/textile/v2/api/mindexd/store" "google.golang.org/protobuf/types/known/timestamppb" ) func toPbMinerIndexInfo(mi model.MinerInfo) *pb.MinerIndexInfo { return &pb.MinerIndexInfo{ MinerAddr: mi.MinerID, Metadata: &pb.MetadataInfo{ Location: mi.Metadata.Location, }, Filecoin: &pb.FilecoinInfo{ AskPrice: mi.Filecoin.AskPrice, AskVerifiedPrice: mi.Filecoin.AskVerifiedPrice, MaxPieceSize: mi.Filecoin.MaxPieceSize, MinPieceSize: mi.Filecoin.MinPieceSize, RelativePower: mi.Filecoin.RelativePower, SectorSize: mi.Filecoin.SectorSize, ActiveSectors: mi.Filecoin.ActiveSectors, FaultySectors: mi.Filecoin.FaultySectors, UpdatedAt: formatPbTime(mi.Filecoin.UpdatedAt), }, Textile: toPbTextileInfo(mi.Textile), UpdatedAt: formatPbTime(mi.UpdatedAt), } } func toPbTextileInfo(t model.TextileInfo) *pb.TextileInfo { ti := &pb.TextileInfo{ Regions: make(map[string]*pb.TextileRegionInfo, len(t.Regions)), DealsSummary: &pb.DealsSummary{ Total: int64(t.DealsSummary.Total), Last: formatPbTime(t.DealsSummary.Last), Failures: int64(t.DealsSummary.Failures), LastFailure: formatPbTime(t.DealsSummary.LastFailure), }, RetrievalsSummary: &pb.RetrievalsSummary{ Total: int64(t.RetrievalsSummary.Total), Last: formatPbTime(t.RetrievalsSummary.Last), Failures: int64(t.RetrievalsSummary.Failures), LastFailure: formatPbTime(t.RetrievalsSummary.LastFailure), }, UpdatedAt: formatPbTime(t.UpdatedAt), } for region, info := range t.Regions { ti.Regions[region] = &pb.TextileRegionInfo{ Deals: &pb.TextileDealsInfo{ Total: int64(info.Deals.Total), Last: formatPbTime(info.Deals.Last), Failures: int64(info.Deals.Failures), LastFailure: formatPbTime(info.Deals.LastFailure), TailSealed: toPbSealedDurationMins(info.Deals.TailSealed), TailTransfers: toPbTransferMiBPerSec(info.Deals.TailTransfers), }, Retrievals: &pb.TextileRetrievalsInfo{ Total: int64(info.Retrievals.Total), Last: formatPbTime(info.Retrievals.Last), Failures: int64(info.Retrievals.Failures), LastFailure: formatPbTime(info.Retrievals.LastFailure), TailTransfers: toPbTransferMiBPerSec(info.Retrievals.TailTransfers), }, } } return ti } func toPbTransferMiBPerSec(ts []model.TransferMiBPerSec) []*pb.TransferMiBPerSec { ret := make([]*pb.TransferMiBPerSec, len(ts)) for i, t := range ts { ret[i] = &pb.TransferMiBPerSec{ MibPerSec: t.MiBPerSec, TransferedAt: formatPbTime(t.TransferedAt), } } return ret } func toPbSealedDurationMins(ss []model.SealedDurationMins) []*pb.SealedDurationMins { ret := make([]*pb.SealedDurationMins, len(ss)) for i, s := range ss { ret[i] = &pb.SealedDurationMins{ DurationSeconds: int64(s.DurationSeconds), SealedAt: formatPbTime(s.SealedAt), } } return ret } func fromPbQueryIndexRequestFilters(f *pb.QueryIndexRequestFilters) store.QueryIndexFilters { r := store.QueryIndexFilters{} if f != nil { r.MinerLocation = f.MinerLocation } return r } func fromPbQueryIndexRequestSort(s *pb.QueryIndexRequestSort) (store.QueryIndexSort, error) { if s == nil { return store.QueryIndexSort{}, nil } field, err := fromPbQueryIndexRequestSortField(s.Field) if err != nil { return store.QueryIndexSort{}, fmt.Errorf("parsing sort field: %s", err) } return store.QueryIndexSort{ Ascending: s.Ascending, TextileRegion: s.TextileRegion, Field: field, }, nil } func fromPbQueryIndexRequestSortField(field pb.QueryIndexRequestSortField) (store.QueryIndexSortField, error) { switch field { case pb.QueryIndexRequestSortField_TEXTILE_DEALS_TOTAL_SUCCESSFUL: return store.SortFieldTextileDealTotalSuccessful, nil case pb.QueryIndexRequestSortField_TEXTILE_DEALS_LAST_SUCCESSFUL: return store.SortFieldTextileDealLastSuccessful, nil case pb.QueryIndexRequestSortField_TEXTILE_RETRIEVALS_TOTAL_SUCCESSFUL: return store.SortFieldTextileRetrievalTotalSuccessful, nil case pb.QueryIndexRequestSortField_TEXTILE_RETRIEVALS_LAST_SUCCESSFUL: return store.SortFieldTextileRetrievalLastSuccessful, nil case pb.QueryIndexRequestSortField_ASK_PRICE: return store.SortFieldAskPrice, nil case pb.QueryIndexRequestSortField_VERIFIED_ASK_PRICE: return store.SortFieldVerifiedAskPrice, nil case pb.QueryIndexRequestSortField_ACTIVE_SECTORS: return store.SortFieldActiveSectors, nil default: return 0, fmt.Errorf("unkown sorting field %s", pb.QueryIndexRequestSortField_name[int32(field)]) } } func toPbQueryIndexResponse(ss []model.MinerInfo) *pb.QueryIndexResponse { res := &pb.QueryIndexResponse{ Miners: make([]*pb.QueryIndexResponseMiner, len(ss)), } for i, m := range ss { res.Miners[i] = &pb.QueryIndexResponseMiner{ Miner: toPbMinerIndexInfo(m), } } return res } func formatPbTime(t time.Time) *timestamppb.Timestamp { if t.IsZero() { return nil } return timestamppb.New(t) } ================================================ FILE: api/mindexd/service/service.go ================================================ package service import ( "context" "errors" "fmt" "io/ioutil" "math" "math/big" "net" "net/http" "time" "github.com/gogo/status" "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" logging "github.com/ipfs/go-log/v2" ma "github.com/multiformats/go-multiaddr" "github.com/textileio/go-threads/util" powClient "github.com/textileio/powergate/v2/api/client" swagger "github.com/textileio/swagger-ui" "github.com/textileio/textile/v2/api/mindexd/collector" "github.com/textileio/textile/v2/api/mindexd/indexer" "github.com/textileio/textile/v2/api/mindexd/migrations" "github.com/textileio/textile/v2/api/mindexd/pb" "github.com/textileio/textile/v2/api/mindexd/store" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" "google.golang.org/grpc" "google.golang.org/grpc/codes" ) const ( // Each epoch in the Filecoin network is ~30s. epochDurationSeconds = 30 queryMaxLimit = 50 ) var ( log = logging.Logger("mindexd") ) type Service struct { config Config server *grpc.Server grpcRESTServer *http.Server db *mongo.Database collector *collector.Collector indexer *indexer.Indexer store *store.Store } var _ pb.APIServiceServer = (*Service)(nil) type Config struct { ListenAddrGRPC ma.Multiaddr ListenAddrREST string Debug bool DBURI string DBName string PowAddrAPI string PowAdminToken string CollectorRunOnStart bool CollectorFrequency time.Duration CollectorFetchLimit int CollectorFetchTimeout time.Duration IndexerRunOnStart bool IndexerFrequency time.Duration IndexerSnapshotMaxAge time.Duration } func NewService(ctx context.Context, config Config) (*Service, error) { if config.Debug { if err := util.SetLogLevels(map[string]logging.LogLevel{ "mindexd": logging.LevelDebug, "collector": logging.LevelDebug, "indexer": logging.LevelDebug, "store": logging.LevelDebug, }); err != nil { return nil, err } } client, err := mongo.Connect(ctx, options.Client().ApplyURI(config.DBURI)) if err != nil { return nil, fmt.Errorf("connecting to mongo: %s", err) } db := client.Database(config.DBName) if err = migrations.Migrate(db); err != nil { return nil, fmt.Errorf("executing migrations: %s", err) } store, err := store.New(db) if err != nil { return nil, fmt.Errorf("creating store: %s", err) } collectorOpts := []collector.Option{ collector.WithRunOnStart(config.CollectorRunOnStart), collector.WithFrequency(config.CollectorFrequency), collector.WithFetchLimit(config.CollectorFetchLimit), collector.WithFetchTimeout(config.CollectorFetchTimeout), } collector, err := collector.New(store, collectorOpts...) if err != nil { return nil, fmt.Errorf("creating collector: %s", err) } indexerOpts := []indexer.Option{ indexer.WithRunOnStart(config.IndexerRunOnStart), indexer.WithFrequency(config.IndexerFrequency), indexer.WithSnapshotMaxAge(config.IndexerSnapshotMaxAge), } pow, err := powClient.NewClient(config.PowAddrAPI) if err != nil { return nil, fmt.Errorf("connecting to powergate: %s", err) } sub := collector.Subscribe() indexer, err := indexer.New(pow, sub, config.PowAdminToken, store, indexerOpts...) if err != nil { return nil, fmt.Errorf("creating indexer: %s", err) } s := &Service{ config: config, db: db, collector: collector, indexer: indexer, store: store, } return s, nil } func (s *Service) Start() error { s.server = grpc.NewServer() target, err := util.TCPAddrFromMultiAddr(s.config.ListenAddrGRPC) if err != nil { return err } listener, err := net.Listen("tcp", target) if err != nil { return err } go func() { pb.RegisterAPIServiceServer(s.server, s) if err := s.server.Serve(listener); err != nil && !errors.Is(err, grpc.ErrServerStopped) { log.Errorf("serve error: %v", err) } }() grpcMux := runtime.NewServeMux() opts := []grpc.DialOption{grpc.WithInsecure()} if err := pb.RegisterAPIServiceHandlerFromEndpoint(context.Background(), grpcMux, "localhost:5000", opts); err != nil { return fmt.Errorf("starting REST api server: %s", err) } swaggerContent, err := ioutil.ReadFile("swagger.json") if err != nil { log.Warnf("opening swagger file: %s", err) } if err := grpcMux.HandlePath("GET", "/docs", func(w http.ResponseWriter, r *http.Request, pathParams map[string]string) { http.Redirect(w, r, "/docs/index.html", 301) }); err != nil { return fmt.Errorf("registering redirect docs path: %s", err) } if err := grpcMux.HandlePath("GET", "/docs/*", func(w http.ResponseWriter, r *http.Request, pathParams map[string]string) { swagger.Handler(func() ([]byte, error) { return swaggerContent, nil }).ServeHTTP(w, r) }); err != nil { return fmt.Errorf("registering docs handler: %s", err) } s.grpcRESTServer = &http.Server{ Addr: s.config.ListenAddrREST, Handler: grpcMux, } go func() { if err := s.grpcRESTServer.ListenAndServe(); err != nil && err != http.ErrServerClosed { log.Errorf("gRPC REST API closed unexpectedly: %s", err) } }() return nil } func (s *Service) Stop() { ctx, cls := context.WithTimeout(context.Background(), time.Second*10) defer cls() if err := s.grpcRESTServer.Shutdown(ctx); err != nil { log.Errorf("closing REST endpoint: %s", err) } stopped := make(chan struct{}) go func() { s.server.GracefulStop() close(stopped) }() timer := time.NewTimer(10 * time.Second) select { case <-timer.C: s.server.Stop() case <-stopped: timer.Stop() } log.Info("gRPC was shutdown") if err := s.indexer.Close(); err != nil { log.Errorf("closing indexer: %s", err) } if err := s.collector.Close(); err != nil { log.Errorf("closing collector: %s", err) } ctx, cancel := context.WithTimeout(context.Background(), time.Second*15) defer cancel() if err := s.db.Client().Disconnect(ctx); err != nil { log.Errorf("disconnecting from mongo: %s", err) } } func (s *Service) QueryIndex(ctx context.Context, req *pb.QueryIndexRequest) (*pb.QueryIndexResponse, error) { filters := fromPbQueryIndexRequestFilters(req.Filters) sort, err := fromPbQueryIndexRequestSort(req.Sort) if err != nil { return nil, fmt.Errorf("parsing sorting fields: %s", err) } if req.Limit > queryMaxLimit { req.Limit = queryMaxLimit } res, err := s.store.QueryIndex(ctx, filters, sort, int(req.Limit), req.Offset) if err != nil { return nil, fmt.Errorf("querying miners from index: %s", err) } return toPbQueryIndexResponse(res), nil } // GetMinerInfo returns miner's index information for a miner. If no information is // available, it returns a codes.NotFound status code. func (s *Service) GetMinerInfo(ctx context.Context, req *pb.GetMinerInfoRequest) (*pb.GetMinerInfoResponse, error) { mi, err := s.store.GetMinerInfo(ctx, req.MinerAddress) if err == store.ErrMinerNotExists { return nil, status.Error(codes.NotFound, "miner not found") } return &pb.GetMinerInfoResponse{ Info: toPbMinerIndexInfo(mi), }, nil } // CalculateDealPrice calculates deal price for a miner. func (s *Service) CalculateDealPrice(ctx context.Context, req *pb.CalculateDealPriceRequest) (*pb.CalculateDealPriceResponse, error) { durationEpochs := req.DurationDays * 24 * 60 * 60 / epochDurationSeconds if req.DataSizeBytes <= 0 { return nil, status.Error(codes.InvalidArgument, "data size should be greater than zero") } shifting := int(math.Ceil(math.Log2(math.Ceil(float64(req.DataSizeBytes) / 127)))) if shifting < 0 { shifting = 0 } paddedSize := int64(128 << shifting) ret := &pb.CalculateDealPriceResponse{ DurationEpochs: durationEpochs, PaddedSize: paddedSize, Results: make([]*pb.CalculateDealPriceMiner, len(req.MinerAddresses)), } gibEpochs := big.NewInt(0).Mul(big.NewInt(paddedSize), big.NewInt(durationEpochs)) gibEpochs = gibEpochs.Div(gibEpochs, big.NewInt(1<<30)) for i, minerAddr := range req.MinerAddresses { mi, err := s.store.GetMinerInfo(ctx, minerAddr) if err == store.ErrMinerNotExists { return nil, status.Errorf(codes.NotFound, "Miner %s not found", minerAddr) } var askPrice, askVerifiedPrice big.Int if _, ok := askPrice.SetString(mi.Filecoin.AskPrice, 10); !ok { return nil, fmt.Errorf("parsing ask price: %s", err) } if _, ok := askVerifiedPrice.SetString(mi.Filecoin.AskVerifiedPrice, 10); !ok { return nil, fmt.Errorf("parsing ask verified price: %s", err) } ret.Results[i] = &pb.CalculateDealPriceMiner{ Miner: minerAddr, TotalCost: big.NewInt(0).Mul(gibEpochs, &askPrice).String(), VerifiedTotalCost: big.NewInt(0).Mul(gibEpochs, &askVerifiedPrice).String(), Price: askPrice.String(), VerifiedPrice: askVerifiedPrice.String(), } } return ret, nil } ================================================ FILE: api/mindexd/store/gen.go ================================================ package store import ( "context" "fmt" "time" "github.com/textileio/textile/v2/api/mindexd/model" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) var ( tailLimit = 50 ) type minerRegion struct { miner string region string } func (s *Store) UpdateTextileDealsInfo(ctx context.Context) error { minerRegions, err := s.regenerateTextileDealsTotalsAndLasts(ctx) if err != nil { return fmt.Errorf("regenerating textile deals totals and lasts: %s", err) } for _, mr := range minerRegions { if err := s.regenerateTextileDealsTailMetrics(ctx, mr); err != nil { return fmt.Errorf("updating textile retrieval tail metrics: %s", err) } } return nil } func (s *Store) UpdateTextileRetrievalsInfo(ctx context.Context) error { minerRegions, err := s.regenerateTextileRetrievalsTotalsAndLasts(ctx) if err != nil { return fmt.Errorf("regenerating textile retrievals totals and lasts: %s", err) } for _, mr := range minerRegions { if err := s.regenerateTextileRetrievalsTailMetrics(ctx, mr); err != nil { return fmt.Errorf("updating textile retrievals tail metrics: %s", err) } } return nil } type regionalGeneralItem struct { ID struct { Region string `bson:"region"` Miner string `bson:"miner"` Failed bool `bson:"failed"` } `bson:"_id"` Total int `bson:"total"` Last time.Time `bson:"last"` } func (s *Store) regenerateTextileDealsTailMetrics(ctx context.Context, mr minerRegion) error { filter := bson.M{ "pow_storage_deal_record.deal_info.miner": mr.miner, "region": mr.region, "pow_storage_deal_record.pending": false, "pow_storage_deal_record.failed": false, } sort := bson.D{bson.E{Key: "pow_storage_deal_record.updated_at", Value: -1}} proj := bson.M{ "pow_storage_deal_record.transfer_size": 1, "pow_storage_deal_record.datatransfer_start": 1, "pow_storage_deal_record.datatransfer_end": 1, "pow_storage_deal_record.sealing_start": 1, "pow_storage_deal_record.sealing_end": 1, "pow_storage_deal_record.updated_at": 1, } opts := options.Find().SetSort(sort).SetProjection(proj).SetLimit(int64(tailLimit)) c, err := s.sdrc.Find(ctx, filter, opts) if err != nil { return fmt.Errorf("finding miner-region records: %s", err) } defer c.Close(ctx) var records []model.StorageDealRecord if err := c.All(ctx, &records); err != nil { return fmt.Errorf("getting all results: %s", err) } tailTransfers := make([]model.TransferMiBPerSec, 0, len(records)) tailSealed := make([]model.SealedDurationMins, 0, len(records)) for _, record := range records { psd := record.PowStorageDealRecord if psd.DataTransferEnd.Sub(psd.DataTransferStart) > 0 { tailTransfers = append(tailTransfers, model.TransferMiBPerSec{ TransferedAt: psd.DataTransferEnd, MiBPerSec: float64(psd.TransferSize) / psd.DataTransferEnd.Sub(psd.DataTransferStart).Seconds() / 1024 / 1024, }) } if psd.SealingEnd.Sub(psd.SealingStart) > 0 { tailSealed = append(tailSealed, model.SealedDurationMins{ SealedAt: psd.SealingEnd, DurationSeconds: int(psd.SealingEnd.Sub(psd.SealingStart).Seconds()), }) } } now := time.Now() prefix := "textile.regions." + mr.region filter = bson.M{"_id": mr.miner} setFields := bson.M{ prefix + ".deals.tail_transfers": tailTransfers, prefix + ".deals.tail_sealed": tailSealed, "textile.updated_at": now, "updated_at": now, } if _, err := s.idxc.UpdateOne(ctx, filter, bson.M{"$set": setFields}); err != nil { return fmt.Errorf("updating miner index tails: %s", err) } return nil } func (s *Store) regenerateTextileDealsTotalsAndLasts(ctx context.Context) ([]minerRegion, error) { pipeline := bson.A{ bson.M{ "$match": bson.M{ "pow_storage_deal_record.pending": false, }, }, bson.M{ "$group": bson.M{ "_id": bson.D{ {Key: "miner", Value: "$pow_storage_deal_record.deal_info.miner"}, {Key: "region", Value: "$region"}, {Key: "failed", Value: "$pow_storage_deal_record.failed"}, }, "total": bson.M{ "$sum": 1, }, "last": bson.M{ "$max": "$pow_storage_deal_record.updated_at", }, }, }, } c, err := s.sdrc.Aggregate(ctx, pipeline) if err != nil { return nil, fmt.Errorf("aggregate in mongo: %s", err) } defer c.Close(ctx) mr, err := s.updateTextileRegionAndSummary(ctx, "deals", c) if err != nil { return nil, fmt.Errorf("updating region: %s", err) } return mr, nil } func (s *Store) regenerateTextileRetrievalsTotalsAndLasts(ctx context.Context) ([]minerRegion, error) { pipeline := bson.A{ bson.M{ "$group": bson.M{ "_id": bson.D{ {Key: "miner", Value: "$pow_retrieval_record.deal_info.miner"}, {Key: "region", Value: "$region"}, {Key: "failed", Value: "$pow_retrieval_record.failed"}, }, "total": bson.M{ "$sum": 1, }, "last": bson.M{ "$max": "$pow_retrieval_record.updated_at", }, }, }, } c, err := s.rrc.Aggregate(ctx, pipeline) if err != nil { return nil, fmt.Errorf("aggregate in mongo: %s", err) } defer c.Close(ctx) mr, err := s.updateTextileRegionAndSummary(ctx, "retrievals", c) if err != nil { return nil, fmt.Errorf("updating region: %s", err) } return mr, nil } func (s *Store) regenerateTextileRetrievalsTailMetrics(ctx context.Context, mr minerRegion) error { filter := bson.M{ "pow_retrieval_record.deal_info.miner": mr.miner, "region": mr.region, "pow_retrieval_record.failed": false, } sort := bson.D{bson.E{Key: "pow_storage_deal_record.updated_at", Value: -1}} proj := bson.M{ "pow_retrieval_record.bytes_received": 1, "pow_retrieval_record.datatransfer_start": 1, "pow_retrieval_record.datatransfer_end": 1, "pow_storage_deal_record.updated_at": 1, } opts := options.Find().SetSort(sort).SetProjection(proj).SetLimit(int64(tailLimit)) c, err := s.rrc.Find(ctx, filter, opts) if err != nil { return fmt.Errorf("finding miner-region records: %s", err) } defer c.Close(ctx) var records []model.RetrievalRecord if err := c.All(ctx, &records); err != nil { return fmt.Errorf("getting all results: %s", err) } tailTransfers := make([]model.TransferMiBPerSec, 0, len(records)) for _, record := range records { psd := record.PowRetrievalRecord if psd.DataTransferEnd.Sub(psd.DataTransferStart) > 0 { tailTransfers = append(tailTransfers, model.TransferMiBPerSec{ TransferedAt: psd.DataTransferEnd, MiBPerSec: float64(psd.BytesReceived) / psd.DataTransferEnd.Sub(psd.DataTransferStart).Seconds() / 1024 / 1024, }) } } now := time.Now() prefix := "textile.regions." + mr.region filter = bson.M{"_id": mr.miner} setFields := bson.M{ prefix + ".retrievals.tail_transfers": tailTransfers, "textile.updated_at": now, "updated_at": now, } if _, err := s.idxc.UpdateOne(ctx, filter, bson.M{"$set": setFields}); err != nil { return fmt.Errorf("updating miner index tails: %s", err) } return nil } type minerSummary struct { total int last time.Time failures int lastFailure time.Time } func (s *Store) updateTextileRegionAndSummary(ctx context.Context, prefixSuffix string, c *mongo.Cursor) ([]minerRegion, error) { msSummary := map[string]minerSummary{} mrm := map[minerRegion]struct{}{} opt := options.Update().SetUpsert(true) for c.Next(ctx) { var i regionalGeneralItem if err := c.Decode(&i); err != nil { return nil, fmt.Errorf("decoding item result: %s", err) } mrm[minerRegion{miner: i.ID.Miner, region: i.ID.Region}] = struct{}{} setFields := bson.M{} fieldPrefix := "textile.regions." + i.ID.Region + "." + prefixSuffix ct := msSummary[i.ID.Miner] if i.ID.Failed { setFields[fieldPrefix+".failures"] = i.Total setFields[fieldPrefix+".last_failure"] = i.Last ct.failures += i.Total if i.Last.After(ct.lastFailure) { ct.lastFailure = i.Last } } else { setFields[fieldPrefix+".total"] = i.Total setFields[fieldPrefix+".last"] = i.Last ct.total += i.Total if i.Last.After(ct.last) { ct.last = i.Last } } msSummary[i.ID.Miner] = ct filter := bson.M{"_id": i.ID.Miner} update := bson.M{ "$set": setFields, "$setOnInsert": bson.M{"_id": i.ID.Miner}, } _, err := s.idxc.UpdateOne(ctx, filter, update, opt) if err != nil { return nil, fmt.Errorf("upserting total/last: %s", err) } } if c.Err() != nil { return nil, fmt.Errorf("cursor error: %s", c.Err()) } // Update region aggregations. for minerID, summary := range msSummary { fieldPrefix := "textile." + prefixSuffix + "_summary" setFields := bson.M{ fieldPrefix + ".total": summary.total, fieldPrefix + ".last": summary.last, fieldPrefix + ".failures": summary.failures, fieldPrefix + ".last_failure": summary.lastFailure, } filter := bson.M{"_id": minerID} update := bson.M{ "$set": setFields, "$setOnInsert": bson.M{"_id": minerID}, } _, err := s.idxc.UpdateOne(ctx, filter, update, opt) if err != nil { return nil, fmt.Errorf("upserting total/last: %s", err) } } mr := make([]minerRegion, 0, len(mrm)) for k := range mrm { mr = append(mr, k) } return mr, nil } ================================================ FILE: api/mindexd/store/gen_test.go ================================================ package store import ( "context" "testing" "time" "github.com/stretchr/testify/require" "github.com/textileio/textile/v2/api/mindexd/model" ) func TestMinerIndexGeneration(t *testing.T) { ctx := context.Background() db := setup(t, ctx) s, err := New(db) require.NoError(t, err) // Insert some deal-records. err = s.PersistStorageDealRecords(ctx, "duke-1", "005", testDealsSouthAmerica) require.NoError(t, err) err = s.PersistStorageDealRecords(ctx, "duke-2", "003", testDealsNorthAmerica) require.NoError(t, err) err = s.PersistStorageDealRecords(ctx, "duke-3", "002", testDealsAfrica) require.NoError(t, err) // Insert some retrieval records. err = s.PersistRetrievalRecords(ctx, "duke-1", "005", testRetrievalsSouthAmerica) require.NoError(t, err) err = s.PersistRetrievalRecords(ctx, "duke-2", "003", testRetrievalsNorthAmerica) require.NoError(t, err) // Regenerate indexes. err = s.UpdateTextileDealsInfo(ctx) require.NoError(t, err) err = s.UpdateTextileRetrievalsInfo(ctx) require.NoError(t, err) // Check we have 3 miners. all, err := s.GetAllMiners(ctx) require.NoError(t, err) require.Len(t, all, 2) // Check non-existant miner _, err = s.GetMinerInfo(ctx, "i-dont-exist") require.Equal(t, ErrMinerNotExists, err) // Miner f0100 { f0100, err := s.GetMinerInfo(ctx, "f0100") require.NoError(t, err) require.Equal(t, "f0100", f0100.MinerID) require.False(t, f0100.UpdatedAt.IsZero()) require.False(t, f0100.Textile.UpdatedAt.IsZero()) require.Len(t, f0100.Textile.Regions, 3) require.Equal(t, 4, f0100.Textile.DealsSummary.Total) require.Equal(t, int64(303), f0100.Textile.DealsSummary.Last.Unix()) require.Equal(t, 1, f0100.Textile.DealsSummary.Failures) require.Equal(t, int64(304), f0100.Textile.DealsSummary.LastFailure.Unix()) require.Equal(t, 4, f0100.Textile.RetrievalsSummary.Total) require.Equal(t, int64(1003), f0100.Textile.RetrievalsSummary.Last.Unix()) require.Equal(t, 2, f0100.Textile.RetrievalsSummary.Failures) require.Equal(t, int64(1012), f0100.Textile.RetrievalsSummary.LastFailure.Unix()) // f0100_south_america := f0100.Textile.Regions["005"] // !Deals require.Equal(t, 2, f0100_south_america.Deals.Total) // Test 2 successes. require.Equal(t, int64(301), f0100_south_america.Deals.Last.Unix()) // Max of successes. require.Equal(t, 1, f0100_south_america.Deals.Failures) // Test single failure. require.Equal(t, int64(304), f0100_south_america.Deals.LastFailure.Unix()) // Single failure date. // Transfer require.Len(t, f0100_south_america.Deals.TailTransfers, 2) require.Equal(t, float64(10), f0100_south_america.Deals.TailTransfers[1].MiBPerSec) require.Equal(t, int64(10010), f0100_south_america.Deals.TailTransfers[1].TransferedAt.Unix()) require.Equal(t, float64(25), f0100_south_america.Deals.TailTransfers[0].MiBPerSec) require.Equal(t, int64(10002), f0100_south_america.Deals.TailTransfers[0].TransferedAt.Unix()) // Sealing require.Len(t, f0100_south_america.Deals.TailSealed, 2) require.Equal(t, 60*60, f0100_south_america.Deals.TailSealed[1].DurationSeconds) require.Equal(t, int64(23600), f0100_south_america.Deals.TailSealed[1].SealedAt.Unix()) require.Equal(t, 600*60, f0100_south_america.Deals.TailSealed[0].DurationSeconds) require.Equal(t, int64(56000), f0100_south_america.Deals.TailSealed[0].SealedAt.Unix()) // !Retrievals require.Equal(t, 2, f0100_south_america.Retrievals.Total) require.Equal(t, 1, f0100_south_america.Retrievals.Failures) require.Equal(t, int64(1002), f0100_south_america.Retrievals.Last.Unix()) require.Equal(t, int64(1011), f0100_south_america.Retrievals.LastFailure.Unix()) require.Len(t, f0100_south_america.Retrievals.TailTransfers, 2) require.Equal(t, float64(10), f0100_south_america.Retrievals.TailTransfers[0].MiBPerSec) require.Equal(t, int64(1010), f0100_south_america.Retrievals.TailTransfers[0].TransferedAt.Unix()) require.Equal(t, float64(50), f0100_south_america.Retrievals.TailTransfers[1].MiBPerSec) require.Equal(t, int64(1020), f0100_south_america.Retrievals.TailTransfers[1].TransferedAt.Unix()) // // f0100_north_america := f0100.Textile.Regions["003"] // !Deals require.Equal(t, 1, f0100_north_america.Deals.Total) require.Equal(t, int64(302), f0100_north_america.Deals.Last.Unix()) require.Equal(t, 0, f0100_north_america.Deals.Failures) require.True(t, f0100_north_america.Deals.LastFailure.IsZero()) // Transfers require.Len(t, f0100_north_america.Deals.TailTransfers, 1) require.Equal(t, float64(1), f0100_north_america.Deals.TailTransfers[0].MiBPerSec) require.Equal(t, int64(10010), f0100_north_america.Deals.TailTransfers[0].TransferedAt.Unix()) // Sealing require.Len(t, f0100_north_america.Deals.TailSealed, 1) require.Equal(t, 300*60, f0100_north_america.Deals.TailSealed[0].DurationSeconds) require.Equal(t, int64(38000), f0100_north_america.Deals.TailSealed[0].SealedAt.Unix()) // !Retrievals require.Equal(t, 2, f0100_north_america.Retrievals.Total) require.Equal(t, 1, f0100_north_america.Retrievals.Failures) require.Equal(t, int64(1003), f0100_north_america.Retrievals.Last.Unix()) require.Equal(t, int64(1012), f0100_north_america.Retrievals.LastFailure.Unix()) require.Len(t, f0100_north_america.Retrievals.TailTransfers, 1) require.Equal(t, float64(6.25), f0100_north_america.Retrievals.TailTransfers[0].MiBPerSec) require.Equal(t, int64(1016), f0100_north_america.Retrievals.TailTransfers[0].TransferedAt.Unix()) // // f0100_africa := f0100.Textile.Regions["002"] // !Deals require.Equal(t, 1, f0100_africa.Deals.Total) require.Equal(t, int64(303), f0100_africa.Deals.Last.Unix()) require.Equal(t, 0, f0100_africa.Deals.Failures) require.True(t, f0100_africa.Deals.LastFailure.IsZero()) // Transfers require.Len(t, f0100_africa.Deals.TailTransfers, 0) // Our record didn't have transfer data. require.Len(t, f0100_africa.Deals.TailSealed, 1) // But the record *had* sealing data. // Sealing require.Equal(t, 150*60, f0100_africa.Deals.TailSealed[0].DurationSeconds) require.Equal(t, int64(29000), f0100_africa.Deals.TailSealed[0].SealedAt.Unix()) // !Retrievals require.Len(t, f0100_africa.Retrievals.TailTransfers, 0) // } // Miner f0101 { f0101, err := s.GetMinerInfo(ctx, "f0101") require.NoError(t, err) require.Equal(t, "f0101", f0101.MinerID) require.False(t, f0101.UpdatedAt.IsZero()) require.False(t, f0101.Textile.UpdatedAt.IsZero()) require.Len(t, f0101.Textile.Regions, 3) require.Equal(t, 2, f0101.Textile.DealsSummary.Total) require.Equal(t, int64(311), f0101.Textile.DealsSummary.Last.Unix()) require.Equal(t, 2, f0101.Textile.DealsSummary.Failures) require.Equal(t, int64(311), f0101.Textile.DealsSummary.Last.Unix()) require.Equal(t, 1, f0101.Textile.RetrievalsSummary.Total) require.Equal(t, int64(1050), f0101.Textile.RetrievalsSummary.Last.Unix()) require.Equal(t, 1, f0101.Textile.RetrievalsSummary.Failures) require.Equal(t, int64(1042), f0101.Textile.RetrievalsSummary.LastFailure.Unix()) // f0101_south_america := f0101.Textile.Regions["005"] // !Deals require.Len(t, f0101_south_america.Deals.TailTransfers, 0) require.Len(t, f0101_south_america.Deals.TailSealed, 0) // !Retrievals require.Equal(t, 1, f0101_south_america.Retrievals.Total) require.Equal(t, 0, f0101_south_america.Retrievals.Failures) require.Equal(t, int64(1050), f0101_south_america.Retrievals.Last.Unix()) require.Equal(t, time.Time{}.Unix(), f0101_south_america.Retrievals.LastFailure.Unix()) require.Len(t, f0101_south_america.Retrievals.TailTransfers, 1) require.Equal(t, float64(0.1), f0101_south_america.Retrievals.TailTransfers[0].MiBPerSec) require.Equal(t, int64(1010), f0101_south_america.Retrievals.TailTransfers[0].TransferedAt.Unix()) // // f0101_north_america := f0101.Textile.Regions["003"] // !Deals require.Equal(t, 1, f0101_north_america.Deals.Total) require.Equal(t, int64(310), f0101_north_america.Deals.Last.Unix()) require.Equal(t, 0, f0101_north_america.Deals.Failures) require.True(t, f0101_north_america.Deals.LastFailure.IsZero()) // Transfers require.Len(t, f0101_north_america.Deals.TailTransfers, 1) require.Equal(t, float64(0.2), f0101_north_america.Deals.TailTransfers[0].MiBPerSec) require.Equal(t, int64(10010), f0101_north_america.Deals.TailTransfers[0].TransferedAt.Unix()) // Sealing require.Len(t, f0101_north_america.Deals.TailSealed, 1) require.Equal(t, 300*60, f0101_north_america.Deals.TailSealed[0].DurationSeconds) require.Equal(t, int64(38000), f0101_north_america.Deals.TailSealed[0].SealedAt.Unix()) // !Retrievals require.Equal(t, 0, f0101_north_america.Retrievals.Total) require.Equal(t, 1, f0101_north_america.Retrievals.Failures) require.Equal(t, time.Time{}.Unix(), f0101_north_america.Retrievals.Last.Unix()) require.Equal(t, int64(1042), f0101_north_america.Retrievals.LastFailure.Unix()) require.Len(t, f0101_north_america.Retrievals.TailTransfers, 0) // // f0101_africa := f0101.Textile.Regions["002"] // !Deals require.Equal(t, 1, f0101_africa.Deals.Total) require.Equal(t, int64(311), f0101_africa.Deals.Last.Unix()) require.Equal(t, 2, f0101_africa.Deals.Failures) // Test 2 failures. require.Equal(t, int64(313), f0101_africa.Deals.LastFailure.Unix()) // Max of 2 failures. // Transfers require.Len(t, f0101_north_america.Deals.TailTransfers, 1) require.Equal(t, float64(0.2), f0101_africa.Deals.TailTransfers[0].MiBPerSec) require.Equal(t, int64(10010), f0101_africa.Deals.TailTransfers[0].TransferedAt.Unix()) // Sealing require.Len(t, f0101_africa.Deals.TailSealed, 0) // Our record didn't have sealing information. // !Retrievals require.Len(t, f0101_africa.Retrievals.TailTransfers, 0) } // Get all testing all, err = s.GetAllMiners(ctx) require.NoError(t, err) require.Len(t, all, 2) } var ( // Deals testDealsSouthAmerica = []model.PowStorageDealRecord{ { Pending: false, DataTransferStart: time.Unix(10000, 0), DataTransferEnd: time.Unix(10010, 0), TransferSize: 1024 * 1024 * 100, // 100MiB in 10 sec = 10MiB/s SealingStart: time.Unix(20000, 0), SealingEnd: time.Unix(23600, 0), // Sealing duration = 60min (1hr) DealInfo: model.PowStorageDealRecordDealInfo{ ProposalCid: "0_1", Miner: "f0100", }, UpdatedAt: time.Unix(300, 0), }, { Pending: false, DataTransferStart: time.Unix(10000, 0), DataTransferEnd: time.Unix(10002, 0), TransferSize: 1024 * 1024 * 50, // 50MiB in 2 sec = 25MiB/s SealingStart: time.Unix(20000, 0), SealingEnd: time.Unix(56000, 0), // Sealing duration = 600 min (10hr) DealInfo: model.PowStorageDealRecordDealInfo{ ProposalCid: "0_2", Miner: "f0100", }, UpdatedAt: time.Unix(301, 0), }, { Pending: false, Failed: true, DealInfo: model.PowStorageDealRecordDealInfo{ ProposalCid: "0_5", Miner: "f0100", }, UpdatedAt: time.Unix(304, 0), }, { Pending: true, DealInfo: model.PowStorageDealRecordDealInfo{ ProposalCid: "1_1", Miner: "f0101", }, UpdatedAt: time.Unix(310, 0), }, } testDealsNorthAmerica = []model.PowStorageDealRecord{ { Pending: false, DataTransferStart: time.Unix(10000, 0), DataTransferEnd: time.Unix(10010, 0), TransferSize: 1024 * 1024 * 10, // 10MiB in 10 sec = 1MiB/s SealingStart: time.Unix(20000, 0), SealingEnd: time.Unix(38000, 0), // Sealing duration = 300 min (5hr) DealInfo: model.PowStorageDealRecordDealInfo{ ProposalCid: "0_3", Miner: "f0100", }, UpdatedAt: time.Unix(302, 0), }, { Pending: false, DataTransferStart: time.Unix(10000, 0), DataTransferEnd: time.Unix(10010, 0), TransferSize: 1024 * 1024 * 2, // 2MiB in 10 sec = 0.2MiB/s SealingStart: time.Unix(20000, 0), SealingEnd: time.Unix(38000, 0), // Sealing duration = 300 min (5hr) DealInfo: model.PowStorageDealRecordDealInfo{ ProposalCid: "1_2", Miner: "f0101", }, UpdatedAt: time.Unix(310, 0), }, } testDealsAfrica = []model.PowStorageDealRecord{ { Pending: false, DataTransferStart: time.Time{}, DataTransferEnd: time.Time{}, // Simulate not having transfer times. TransferSize: 1024 * 1024 * 1, SealingStart: time.Unix(20000, 0), SealingEnd: time.Unix(29000, 0), // Sealing duration = 150 min (2.5hr) DealInfo: model.PowStorageDealRecordDealInfo{ ProposalCid: "0_4", Miner: "f0100", }, UpdatedAt: time.Unix(303, 0), }, { Pending: false, DataTransferStart: time.Unix(10000, 0), DataTransferEnd: time.Unix(10010, 0), TransferSize: 1024 * 1024 * 2, // 2MiB in 10 sec = 0.2MiB/s SealingStart: time.Time{}, SealingEnd: time.Time{}, // Simulate not having sealing times. DealInfo: model.PowStorageDealRecordDealInfo{ ProposalCid: "1_3", Miner: "f0101", }, UpdatedAt: time.Unix(311, 0), }, { Pending: false, Failed: true, DealInfo: model.PowStorageDealRecordDealInfo{ ProposalCid: "1_4", Miner: "f0101", }, UpdatedAt: time.Unix(312, 0), }, { Pending: false, Failed: true, DealInfo: model.PowStorageDealRecordDealInfo{ ProposalCid: "1_5", Miner: "f0101", }, UpdatedAt: time.Unix(313, 0), }, } // Retrievals testRetrievalsSouthAmerica = []model.PowRetrievalRecord{ { ID: "0_1", DealInfo: model.PowRetrievalRecordDealInfo{ Miner: "f0100", }, DataTransferStart: time.Unix(1000, 0), DataTransferEnd: time.Unix(1010, 0), BytesReceived: 1024 * 1024 * 100, // Rate = 10MiB/s UpdatedAt: time.Unix(1002, 0), }, { ID: "0_2", DealInfo: model.PowRetrievalRecordDealInfo{ Miner: "f0100", }, DataTransferStart: time.Unix(1000, 0), DataTransferEnd: time.Unix(1020, 0), BytesReceived: 1024 * 1024 * 1000, // Rate = 50MiB/s UpdatedAt: time.Unix(1001, 0), }, { ID: "0_5", DealInfo: model.PowRetrievalRecordDealInfo{ Miner: "f0100", }, Failed: true, UpdatedAt: time.Unix(1011, 0), }, { ID: "1_1", DealInfo: model.PowRetrievalRecordDealInfo{ Miner: "f0101", }, DataTransferStart: time.Unix(1000, 0), DataTransferEnd: time.Unix(1010, 0), BytesReceived: 1024 * 1024 * 1, // Rate = 0.1MiB/s UpdatedAt: time.Unix(1050, 0), }, } testRetrievalsNorthAmerica = []model.PowRetrievalRecord{ { ID: "0_3", DealInfo: model.PowRetrievalRecordDealInfo{ Miner: "f0100", }, DataTransferStart: time.Unix(1000, 0), DataTransferEnd: time.Unix(1016, 0), BytesReceived: 1024 * 1024 * 100, // Rate = 6.25MiB/s UpdatedAt: time.Unix(1003, 0), }, { ID: "0_4", DealInfo: model.PowRetrievalRecordDealInfo{ Miner: "f0100", }, DataTransferStart: time.Time{}, DataTransferEnd: time.Time{}, // Simulate not having data. BytesReceived: 1024 * 1024 * 100, }, { ID: "0_6", DealInfo: model.PowRetrievalRecordDealInfo{ Miner: "f0100", }, Failed: true, UpdatedAt: time.Unix(1012, 0), }, { ID: "1_2", DealInfo: model.PowRetrievalRecordDealInfo{ Miner: "f0101", }, Failed: true, // Fail for f0101, so no data for this region. UpdatedAt: time.Unix(1042, 0), }, } ) ================================================ FILE: api/mindexd/store/index_snapshot.go ================================================ package store import ( "context" "fmt" "time" "github.com/textileio/textile/v2/api/mindexd/model" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) func (s *Store) GetLastIndexSnapshotTime(ctx context.Context) (time.Time, error) { opts := options.FindOne() opts = opts.SetSort(bson.D{bson.E{Key: "created_at", Value: -1}}) opts = opts.SetProjection(bson.M{"created_at": 1}) sr := s.hidxc.FindOne(ctx, bson.M{}, opts) if sr.Err() == mongo.ErrNoDocuments { // No snapshots?, then return a very old date. return time.Time{}, nil } if sr.Err() != nil { return time.Time{}, fmt.Errorf("get last snapshot time: %s", sr.Err()) } var lastSnapshot model.MinerInfoSnapshot if err := sr.Decode(&lastSnapshot); err != nil { return time.Time{}, fmt.Errorf("decoding snapshot created-at field: %s", err) } return lastSnapshot.CreatedAt, nil } func (s *Store) GenerateMinerIndexSnapshot(ctx context.Context) error { pipeline := bson.A{ bson.M{ "$project": bson.M{ "_id": 0, "created_at": "$$NOW", "miner_info": "$$ROOT", }, }, bson.M{ "$merge": bson.M{ "into": "minerindexhistory", "on": "_id", }, }, } c, err := s.idxc.Aggregate(ctx, pipeline) if err != nil { return fmt.Errorf("executing pipeline: %s", err) } c.Close(ctx) return nil } ================================================ FILE: api/mindexd/store/index_snapshot_test.go ================================================ package store import ( "context" "testing" "time" "github.com/stretchr/testify/require" ) func TestIndexSnapshot(t *testing.T) { ctx := context.Background() db := setup(t, ctx) s, err := New(db) require.NoError(t, err) last, err := s.GetLastIndexSnapshotTime(ctx) require.NoError(t, err) require.Equal(t, time.Time{}, last) // Generate some data an create an index. err = s.PersistStorageDealRecords(ctx, "duke-1", "005", testDealsSouthAmerica) require.NoError(t, err) err = s.PersistStorageDealRecords(ctx, "duke-2", "003", testDealsNorthAmerica) require.NoError(t, err) err = s.PersistStorageDealRecords(ctx, "duke-3", "002", testDealsAfrica) require.NoError(t, err) err = s.PersistRetrievalRecords(ctx, "duke-1", "005", testRetrievalsSouthAmerica) require.NoError(t, err) err = s.PersistRetrievalRecords(ctx, "duke-2", "003", testRetrievalsNorthAmerica) require.NoError(t, err) err = s.UpdateTextileDealsInfo(ctx) require.NoError(t, err) err = s.UpdateTextileRetrievalsInfo(ctx) require.NoError(t, err) // Generate a snapshot of the index. err = s.GenerateMinerIndexSnapshot(ctx) require.NoError(t, err) last1, err := s.GetLastIndexSnapshotTime(ctx) require.NoError(t, err) require.True(t, time.Now().Add(-time.Minute).Before(last1)) // Generate a snapshot again and check last is newer // than previous. err = s.GenerateMinerIndexSnapshot(ctx) require.NoError(t, err) last2, err := s.GetLastIndexSnapshotTime(ctx) require.NoError(t, err) require.True(t, last1.Before(last2)) } ================================================ FILE: api/mindexd/store/onchain.go ================================================ package store import ( "context" "fmt" "time" "github.com/textileio/textile/v2/api/mindexd/model" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo/options" ) func (s *Store) PutFilecoinInfo(ctx context.Context, miner string, info model.FilecoinInfo) error { info.UpdatedAt = time.Now() filter := bson.M{"_id": miner} update := bson.M{"$set": bson.M{"filecoin": info}} opts := options.Update().SetUpsert(true) _, err := s.idxc.UpdateOne(ctx, filter, update, opts) if err != nil { return fmt.Errorf("put filecoin-info in collection: %s", err) } return nil } func (s *Store) PutMetadataLocation(ctx context.Context, miner string, location string) error { filter := bson.M{"_id": miner} update := bson.M{"$set": bson.M{"metadata.location": location}} opts := options.Update().SetUpsert(true) _, err := s.idxc.UpdateOne(ctx, filter, update, opts) if err != nil { return fmt.Errorf("put metadata location: %s", err) } return nil } ================================================ FILE: api/mindexd/store/onchain_test.go ================================================ package store import ( "context" "testing" "github.com/stretchr/testify/require" "github.com/textileio/textile/v2/api/mindexd/model" ) func TestPutFilecoinInfo(t *testing.T) { ctx := context.Background() db := setup(t, ctx) s, err := New(db) require.NoError(t, err) f0100 := model.FilecoinInfo{ RelativePower: 0.00002, AskPrice: "1000", AskVerifiedPrice: "501", MaxPieceSize: 32000, MinPieceSize: 12000, SectorSize: 11111, } f0101 := model.FilecoinInfo{ RelativePower: 100.00002, AskPrice: "1001000", AskVerifiedPrice: "100501", MaxPieceSize: 10032000, MinPieceSize: 10012000, SectorSize: 10011111, } err = s.PutFilecoinInfo(ctx, "f0100", f0100) require.NoError(t, err) err = s.PutFilecoinInfo(ctx, "f0101", f0101) require.NoError(t, err) mif0100, err := s.GetMinerInfo(ctx, "f0100") require.NoError(t, err) require.Equal(t, f0100.RelativePower, mif0100.Filecoin.RelativePower) require.Equal(t, f0100.AskPrice, mif0100.Filecoin.AskPrice) require.Equal(t, f0100.AskVerifiedPrice, mif0100.Filecoin.AskVerifiedPrice) require.Equal(t, f0100.MaxPieceSize, mif0100.Filecoin.MaxPieceSize) require.Equal(t, f0100.MinPieceSize, mif0100.Filecoin.MinPieceSize) require.Equal(t, f0100.SectorSize, mif0100.Filecoin.SectorSize) require.False(t, mif0100.Filecoin.UpdatedAt.IsZero()) mif0101, err := s.GetMinerInfo(ctx, "f0101") require.NoError(t, err) require.Equal(t, f0101.RelativePower, mif0101.Filecoin.RelativePower) require.Equal(t, f0101.AskPrice, mif0101.Filecoin.AskPrice) require.Equal(t, f0101.AskVerifiedPrice, mif0101.Filecoin.AskVerifiedPrice) require.Equal(t, f0101.MaxPieceSize, mif0101.Filecoin.MaxPieceSize) require.Equal(t, f0101.MinPieceSize, mif0101.Filecoin.MinPieceSize) require.Equal(t, f0101.SectorSize, mif0101.Filecoin.SectorSize) require.False(t, mif0101.Filecoin.UpdatedAt.IsZero()) } ================================================ FILE: api/mindexd/store/query.go ================================================ package store import ( "context" "errors" "fmt" "github.com/textileio/textile/v2/api/mindexd/model" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) var ( ErrMinerNotExists = errors.New("miner doesn't exists") ) type QueryIndexSortField int const ( SortFieldTextileDealTotalSuccessful QueryIndexSortField = iota SortFieldTextileDealLastSuccessful SortFieldTextileRetrievalTotalSuccessful SortFieldTextileRetrievalLastSuccessful SortFieldAskPrice SortFieldVerifiedAskPrice SortFieldActiveSectors ) type QueryIndexFilters struct { MinerLocation string } type QueryIndexSort struct { Ascending bool TextileRegion string Field QueryIndexSortField } func (s *Store) GetMinerInfo(ctx context.Context, miner string) (model.MinerInfo, error) { filter := bson.M{"_id": miner} r := s.idxc.FindOne(ctx, filter) if r.Err() == mongo.ErrNoDocuments { return model.MinerInfo{}, ErrMinerNotExists } var mi model.MinerInfo if err := r.Decode(&mi); err != nil { return model.MinerInfo{}, fmt.Errorf("decoding miner info: %s", err) } return mi, nil } func (s *Store) GetAllMiners(ctx context.Context) ([]model.MinerInfo, error) { r, err := s.idxc.Find(ctx, bson.M{}) if err != nil { return nil, fmt.Errorf("get all miners: %s", err) } defer r.Close(ctx) var ms []model.MinerInfo if err := r.All(ctx, &ms); err != nil { return nil, fmt.Errorf("decoding all results: %s", err) } return ms, nil } func (s *Store) QueryIndex(ctx context.Context, filters QueryIndexFilters, sort QueryIndexSort, limit int, offset int64) ([]model.MinerInfo, error) { if limit <= 0 { return nil, fmt.Errorf("limit should be greater than zero") } qFilters, qSort, err := buildMongoFiltersAndSort(filters, sort) if err != nil { return nil, fmt.Errorf("building filters and sort: %s", err) } opts := options.Find() opts = opts.SetSort(qSort).SetCollation(&options.Collation{Locale: "en", NumericOrdering: true}) opts = opts.SetLimit(int64(limit)) opts = opts.SetSkip(offset) c, err := s.idxc.Find(ctx, qFilters, opts) if err != nil { return nil, fmt.Errorf("executing query: %s", err) } defer func() { if err := c.Close(ctx); err != nil { log.Errorf("closing query index cursor: %s", err) } }() var ms []model.MinerInfo if err := c.All(ctx, &ms); err != nil { return nil, fmt.Errorf("decoding all results: %s", err) } return ms, nil } func buildMongoFiltersAndSort(filters QueryIndexFilters, sort QueryIndexSort) (bson.M, bson.D, error) { // Filter f := bson.M{} if filters.MinerLocation != "" { f["metadata.location"] = filters.MinerLocation } // Sort s := bson.E{} sortVal := 1 if !sort.Ascending { sortVal = -1 } switch sort.Field { case SortFieldTextileDealTotalSuccessful: s = bson.E{Key: "textile.deals_summary.total", Value: sortVal} if sort.TextileRegion != "" { s = bson.E{Key: "textile.regions." + sort.TextileRegion + ".deals.total", Value: sortVal} } case SortFieldTextileDealLastSuccessful: s = bson.E{Key: "textile.deals_summary.last", Value: sortVal} if sort.TextileRegion != "" { s = bson.E{Key: "textile.regions." + sort.TextileRegion + ".deals.last", Value: sortVal} } case SortFieldTextileRetrievalTotalSuccessful: s = bson.E{Key: "textile.retrievals_summary.total", Value: sortVal} if sort.TextileRegion != "" { s = bson.E{Key: "textile.regions." + sort.TextileRegion + ".retrievals.total", Value: sortVal} } case SortFieldTextileRetrievalLastSuccessful: s = bson.E{Key: "textile.retrievals_summary.last", Value: sortVal} if sort.TextileRegion != "" { s = bson.E{Key: "textile.regions." + sort.TextileRegion + ".retrievals.last", Value: sortVal} } case SortFieldAskPrice: s = bson.E{Key: "filecoin.ask_price", Value: sortVal} case SortFieldVerifiedAskPrice: s = bson.E{Key: "filecoin.ask_verified_price", Value: sortVal} case SortFieldActiveSectors: s = bson.E{Key: "filecoin.active_sectors", Value: sortVal} default: return nil, nil, fmt.Errorf("unkown sort field") } return f, bson.D{s}, nil } ================================================ FILE: api/mindexd/store/query_test.go ================================================ package store import ( "context" "testing" "github.com/stretchr/testify/require" ) func TestQuery(t *testing.T) { ctx := context.Background() db := setup(t, ctx) s, err := New(db) require.NoError(t, err) // Insert some deal-records. err = s.PersistStorageDealRecords(ctx, "duke-1", "005", testDealsSouthAmerica) require.NoError(t, err) err = s.PersistStorageDealRecords(ctx, "duke-2", "003", testDealsNorthAmerica) require.NoError(t, err) err = s.PersistStorageDealRecords(ctx, "duke-3", "002", testDealsAfrica) require.NoError(t, err) // Insert some retrieval records. err = s.PersistRetrievalRecords(ctx, "duke-1", "005", testRetrievalsSouthAmerica) require.NoError(t, err) err = s.PersistRetrievalRecords(ctx, "duke-2", "003", testRetrievalsNorthAmerica) require.NoError(t, err) // Regenerate indexes. err = s.UpdateTextileDealsInfo(ctx) require.NoError(t, err) err = s.UpdateTextileRetrievalsInfo(ctx) require.NoError(t, err) t.Run("paging", testPaging(s)) t.Run("sort", testSort(s)) t.Run("deals/LastSuccess", testDealLastSuccess(s)) t.Run("deals/TotalSuccess", testDealTotalSuccess(s)) } func testPaging(s *Store) func(t *testing.T) { return func(t *testing.T) { t.Parallel() ctx := context.Background() // Get all results res, err := s.QueryIndex(ctx, QueryIndexFilters{}, QueryIndexSort{}, 2, 0) require.NoError(t, err) require.Len(t, res, 2) // Get one result less since offset is 1 res2, err := s.QueryIndex(ctx, QueryIndexFilters{}, QueryIndexSort{}, 2, 1) require.NoError(t, err) require.Len(t, res2, 1) // Check that offested query is one-shifted from non offested. require.Equal(t, res[1].MinerID, res2[0].MinerID) // Try smaller limit than all results. res, err = s.QueryIndex(ctx, QueryIndexFilters{}, QueryIndexSort{}, 1, 0) require.NoError(t, err) require.Len(t, res, 1) // Try offset bigger than result, which should be empty. res, err = s.QueryIndex(ctx, QueryIndexFilters{}, QueryIndexSort{}, 1, 3) require.NoError(t, err) require.Len(t, res, 0) // Don't accept limit = 0. res, err = s.QueryIndex(ctx, QueryIndexFilters{}, QueryIndexSort{}, 0, 0) require.Error(t, err) } } func testSort(s *Store) func(t *testing.T) { return func(t *testing.T) { t.Parallel() ctx := context.Background() res, err := s.QueryIndex(ctx, QueryIndexFilters{}, QueryIndexSort{}, 10, 0) require.NoError(t, err) require.Len(t, res, 2) res2, err := s.QueryIndex(ctx, QueryIndexFilters{}, QueryIndexSort{Ascending: true}, 10, 0) require.NoError(t, err) require.Len(t, res, 2) require.Equal(t, res[0].MinerID, res2[1].MinerID) require.Equal(t, res[1].MinerID, res2[0].MinerID) } } func testDealLastSuccess(s *Store) func(t *testing.T) { return func(t *testing.T) { t.Parallel() ctx := context.Background() res, err := s.QueryIndex(ctx, QueryIndexFilters{}, QueryIndexSort{Ascending: false, Field: SortFieldTextileDealLastSuccessful}, 2, 0) require.NoError(t, err) require.True(t, res[0].Textile.DealsSummary.Last.After(res[1].Textile.DealsSummary.Last)) res, err = s.QueryIndex(ctx, QueryIndexFilters{}, QueryIndexSort{Ascending: true, Field: SortFieldTextileDealLastSuccessful}, 2, 0) require.NoError(t, err) require.True(t, res[0].Textile.DealsSummary.Last.Before(res[1].Textile.DealsSummary.Last)) } } func testDealTotalSuccess(s *Store) func(t *testing.T) { return func(t *testing.T) { t.Parallel() ctx := context.Background() res, err := s.QueryIndex(ctx, QueryIndexFilters{}, QueryIndexSort{Ascending: false, Field: SortFieldTextileDealTotalSuccessful}, 2, 0) require.NoError(t, err) require.Greater(t, res[0].Textile.DealsSummary.Total, res[1].Textile.DealsSummary.Total) res, err = s.QueryIndex(ctx, QueryIndexFilters{}, QueryIndexSort{Ascending: true, Field: SortFieldTextileDealTotalSuccessful}, 2, 0) require.NoError(t, err) require.Less(t, res[0].Textile.DealsSummary.Total, res[1].Textile.DealsSummary.Total) } } ================================================ FILE: api/mindexd/store/records.go ================================================ package store import ( "context" "errors" "fmt" "time" "github.com/textileio/textile/v2/api/mindexd/model" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" "golang.org/x/text/language" ) var ( errRecordNotFound = errors.New("record not found") ) // GetPowergateTargets returns the external Powergates that will be // polled to import storage-deal and retrieval records. func (s *Store) GetPowergateTargets(ctx context.Context) ([]model.PowTarget, error) { c, err := s.ptc.Find(ctx, bson.M{}) if err != nil { return nil, fmt.Errorf("cursor for powergate targets: %s", err) } defer c.Close(ctx) var res []model.PowTarget if err := c.All(ctx, &res); err != nil { return nil, fmt.Errorf("decoding powergate targets: %s", err) } return res, nil } // GetLastStorageDealRecordUpdatedAt returns the latests updated-at timestamp of // a particular external Powergate. This might serve to ask the external powergate, // for newer records since this timestamp. func (s *Store) GetLastStorageDealRecordUpdatedAt(ctx context.Context, powName string) (time.Time, error) { filter := bson.M{"pow_name": powName} opts := options.Find() opts = opts.SetSort(bson.D{{Key: "pow_storage_deal_record.updated_at", Value: -1}}) opts = opts.SetLimit(1) opts = opts.SetProjection(bson.M{"pow_storage_deal_record.updated_at": 1}) c, err := s.sdrc.Find(ctx, filter, opts) if err != nil { return time.Time{}, fmt.Errorf("executing find: %s", err) } defer func() { if err := c.Close(ctx); err != nil { log.Errorf("close last storage deal record updatedat cursor: %s", err) } }() var res []model.StorageDealRecord if err := c.All(ctx, &res); err != nil { return time.Time{}, fmt.Errorf("fetching find result: %s", err) } if len(res) == 0 { // If we don't have any records, just return a very old lastUpdatedAt // to let it start from the beginning. return time.Time{}, nil } return (res)[0].PowStorageDealRecord.UpdatedAt, nil } // GetLastRetrievalRecordUpdatedAt returns the latests updated-at timestamp of // a particular external Powergate. This might serve to ask the external powergate, // for newer records since this timestamp. func (s *Store) GetLastRetrievalRecordUpdatedAt(ctx context.Context, powName string) (time.Time, error) { filter := bson.M{"pow_name": powName} opts := options.Find() opts = opts.SetSort(bson.D{{Key: "pow_retrieval_record.updated_at", Value: -1}}) opts = opts.SetLimit(1) opts = opts.SetProjection(bson.M{"pow_retrieval_record.updated_at": 1}) c, err := s.rrc.Find(ctx, filter, opts) if err != nil { return time.Time{}, fmt.Errorf("executing find: %s", err) } defer func() { if err := c.Close(ctx); err != nil { log.Errorf("close last retrieval record updatedat cursor: %s", err) } }() res := make([]model.RetrievalRecord, 0, 1) if err := c.All(ctx, &res); err != nil { return time.Time{}, fmt.Errorf("fetching find result: %s", err) } if len(res) == 0 { // If we don't have any records, just return a very old lastUpdatedAt // to let it start from the beginning. return time.Time{}, nil } return (res)[0].PowRetrievalRecord.UpdatedAt, nil } // PersistStorageDealRecords merge a set of storage-deal records for an external powergate. // The action has upsert semantics, so if the record already exists, it's updated. func (s *Store) PersistStorageDealRecords(ctx context.Context, powName, region string, psrs []model.PowStorageDealRecord) error { if powName == "" { return fmt.Errorf("powergate name is empty") } if _, err := language.ParseRegion(region); err != nil { return fmt.Errorf("region %s isn't a valid M49 code: %s", region, err) } now := time.Now() wms := make([]mongo.WriteModel, len(psrs)) for i, psr := range psrs { sr := model.StorageDealRecord{ LastUpdatedAt: now, PowName: powName, Region: region, PowStorageDealRecord: psr, } uwm := mongo.NewUpdateOneModel() uwm = uwm.SetFilter(bson.D{{Key: "_id", Value: psr.DealInfo.ProposalCid}}) uwm = uwm.SetUpdate(bson.M{"$setOnInsert": bson.M{"_id": psr.DealInfo.ProposalCid}, "$set": sr}) uwm = uwm.SetUpsert(true) wms[i] = uwm } br, err := s.sdrc.BulkWrite(ctx, wms, options.BulkWrite().SetOrdered(false)) if err != nil { return fmt.Errorf("doing bulk write: %s", err) } if br.UpsertedCount+br.ModifiedCount != int64(len(psrs)) { return fmt.Errorf("bulk write upserted %d and should be %d", br.UpsertedCount, len(psrs)) } return nil } // PersistRetrievalRecords merge a set of retrieval records for an external powergate. // The action has upsert semantics, so if the record already exists, it's updated. func (s *Store) PersistRetrievalRecords(ctx context.Context, powName, region string, prrs []model.PowRetrievalRecord) error { if powName == "" { return fmt.Errorf("powergate name is empty") } if _, err := language.ParseRegion(region); err != nil { return fmt.Errorf("region %s isn't a valid M49 code: %s", region, err) } now := time.Now() wms := make([]mongo.WriteModel, len(prrs)) for i, prr := range prrs { rr := model.RetrievalRecord{ LastUpdatedAt: now, PowName: powName, Region: region, PowRetrievalRecord: prr, } uwm := mongo.NewUpdateOneModel() uwm = uwm.SetFilter(bson.D{{Key: "_id", Value: prr.ID}}) uwm = uwm.SetUpdate(bson.M{"$setOnInsert": bson.M{"_id": prr.ID}, "$set": rr}) uwm = uwm.SetUpsert(true) wms[i] = uwm } br, err := s.rrc.BulkWrite(ctx, wms, options.BulkWrite().SetOrdered(false)) if err != nil { return fmt.Errorf("doing bulk write: %s", err) } if br.UpsertedCount+br.ModifiedCount != int64(len(prrs)) { return fmt.Errorf("bulk write upserted %d and should be %d", br.UpsertedCount, len(prrs)) } return nil } func (s *Store) getStorageDealRecord(ctx context.Context, ID string) (model.StorageDealRecord, error) { filter := bson.M{"_id": ID} sr := s.sdrc.FindOne(ctx, filter) if sr.Err() == mongo.ErrNoDocuments { return model.StorageDealRecord{}, errRecordNotFound } if sr.Err() != nil { return model.StorageDealRecord{}, fmt.Errorf("get storage record: %s", sr.Err()) } var sdr model.StorageDealRecord if err := sr.Decode(&sdr); err != nil { return model.StorageDealRecord{}, fmt.Errorf("decoding storage record: %s", err) } return sdr, nil } func (s *Store) getRetrievalRecord(ctx context.Context, ID string) (model.RetrievalRecord, error) { filter := bson.M{"_id": ID} sr := s.rrc.FindOne(ctx, filter) if sr.Err() == mongo.ErrNoDocuments { return model.RetrievalRecord{}, errRecordNotFound } if sr.Err() != nil { return model.RetrievalRecord{}, fmt.Errorf("get retrieval record: %s", sr.Err()) } var rr model.RetrievalRecord if err := sr.Decode(&rr); err != nil { return model.RetrievalRecord{}, fmt.Errorf("decoding retrieval record: %s", err) } return rr, nil } ================================================ FILE: api/mindexd/store/records_test.go ================================================ package store import ( "context" "os" "testing" "time" "github.com/stretchr/testify/require" "github.com/textileio/go-ds-mongo/test" "github.com/textileio/textile/v2/api/mindexd/model" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) func TestMain(m *testing.M) { cls := test.StartMongoDB() ret := m.Run() cls() os.Exit(ret) } func TestPersistStorageDealRecord(t *testing.T) { ctx := context.Background() db := setup(t, ctx) s, err := New(db) require.NoError(t, err) err = s.PersistStorageDealRecords(ctx, "duke-1", "005", testStorageDealRecords) require.NoError(t, err) target := testStorageDealRecords[0] original, err := s.getStorageDealRecord(ctx, target.DealInfo.ProposalCid) require.NoError(t, err) require.Equal(t, target.DealInfo.ProposalCid, original.ID) require.Equal(t, "duke-1", original.PowName) require.False(t, original.LastUpdatedAt.IsZero()) sdr := target sdr.Address = "Addr999" sdr.DealInfo.StateId = 99 sdr.UpdatedAt = time.Unix(99999, 0) err = s.PersistStorageDealRecords(ctx, "duke-1", "005", []model.PowStorageDealRecord{sdr}) require.NoError(t, err) modified, err := s.getStorageDealRecord(ctx, sdr.DealInfo.ProposalCid) require.NoError(t, err) require.Equal(t, original.ID, modified.ID) require.Equal(t, original.PowName, modified.PowName) require.True(t, modified.LastUpdatedAt.After(original.LastUpdatedAt)) require.Equal(t, sdr.Address, modified.PowStorageDealRecord.Address) require.Equal(t, sdr.DealInfo.StateId, modified.PowStorageDealRecord.DealInfo.StateId) require.Equal(t, sdr.UpdatedAt.UTC(), modified.PowStorageDealRecord.UpdatedAt.UTC()) } func TestPersistRetrievalRecord(t *testing.T) { ctx := context.Background() db := setup(t, ctx) s, err := New(db) require.NoError(t, err) err = s.PersistRetrievalRecords(ctx, "duke-1", "005", testRetrievalRecords) require.NoError(t, err) target := testRetrievalRecords[0] original, err := s.getRetrievalRecord(ctx, target.ID) require.NoError(t, err) require.Equal(t, target.ID, original.ID) require.Equal(t, "duke-1", original.PowName) require.False(t, original.LastUpdatedAt.IsZero()) rr := target rr.ErrMsg = "Err999" rr.DataTransferEnd = time.Unix(999, 0) rr.DataTransferStart = time.Unix(888, 0) rr.UpdatedAt = time.Unix(99999, 0) err = s.PersistRetrievalRecords(ctx, "duke-1", "005", []model.PowRetrievalRecord{rr}) require.NoError(t, err) modified, err := s.getRetrievalRecord(ctx, target.ID) require.NoError(t, err) require.Equal(t, original.ID, modified.ID) require.Equal(t, original.PowName, modified.PowName) require.Equal(t, original.Region, modified.Region) require.True(t, modified.LastUpdatedAt.After(original.LastUpdatedAt)) require.Equal(t, rr.ErrMsg, modified.PowRetrievalRecord.ErrMsg) require.Equal(t, rr.DataTransferEnd.UTC(), modified.PowRetrievalRecord.DataTransferEnd.UTC()) require.Equal(t, rr.DataTransferStart.UTC(), modified.PowRetrievalRecord.DataTransferStart.UTC()) require.Equal(t, rr.UpdatedAt.UTC(), modified.PowRetrievalRecord.UpdatedAt.UTC()) } func TestGetLastUpdatedAt(t *testing.T) { ctx := context.Background() db := setup(t, ctx) s, err := New(db) require.NoError(t, err) // Check non-existant last updated at behavior. uat, err := s.GetLastStorageDealRecordUpdatedAt(ctx, "none") require.NoError(t, err) require.Equal(t, time.Time{}.UTC(), uat.UTC()) uat, err = s.GetLastRetrievalRecordUpdatedAt(ctx, "none") require.NoError(t, err) require.Equal(t, time.Time{}.UTC(), uat.UTC()) // Insert some records. err = s.PersistStorageDealRecords(ctx, "duke-1", "005", testStorageDealRecords) require.NoError(t, err) err = s.PersistRetrievalRecords(ctx, "duke-1", "005", testRetrievalRecords) require.NoError(t, err) // Check non-existant last updated at behavior. uat, err = s.GetLastStorageDealRecordUpdatedAt(ctx, "duke-1") require.NoError(t, err) require.Equal(t, testStorageDealRecords[1].UpdatedAt.UTC(), uat.UTC()) uat, err = s.GetLastRetrievalRecordUpdatedAt(ctx, "duke-1") require.NoError(t, err) require.Equal(t, testRetrievalRecords[1].UpdatedAt.UTC(), uat.UTC()) } func setup(t *testing.T, ctx context.Context) *mongo.Database { client, err := mongo.Connect(ctx, options.Client().ApplyURI(test.GetMongoUri())) require.NoError(t, err) db := client.Database("test_mindex") _ = db.Drop(ctx) db = client.Database("test_mindex") t.Cleanup(func() { err := db.Drop(ctx) require.NoError(t, err) }) return db } var ( testStorageDealRecords = []model.PowStorageDealRecord{ { RootCid: "StorageRootCid1", Address: "Addr1", Pending: true, DealInfo: model.PowStorageDealRecordDealInfo{ ProposalCid: "SD1", StateId: 1, StateName: "StateName1", Miner: "f0100", PieceCid: "StoragePieceCid1", Size: 1000, PricePerEpoch: 1001, StartEpoch: 3000, Duration: 23, DealId: 10001, ActivationEpoch: 499, Message: "msg", }, TransferSize: 1000, DataTransferStart: time.Unix(100, 0), DataTransferEnd: time.Unix(102, 0), SealingStart: time.Unix(200, 0), SealingEnd: time.Unix(204, 0), ErrMsg: "err msg", CreatedAt: 80, UpdatedAt: time.Unix(300, 0), }, { RootCid: "StorageRootCid2", Address: "Addr2", Pending: true, DealInfo: model.PowStorageDealRecordDealInfo{ ProposalCid: "SD2", StateId: 1, StateName: "StateName1", Miner: "f0100", PieceCid: "StoragePieceCid2", Size: 1000, PricePerEpoch: 1001, StartEpoch: 3000, Duration: 23, DealId: 10001, ActivationEpoch: 499, Message: "msg", }, TransferSize: 1000, DataTransferStart: time.Unix(100, 0), DataTransferEnd: time.Unix(102, 0), SealingStart: time.Unix(200, 0), SealingEnd: time.Unix(204, 0), ErrMsg: "err msg", CreatedAt: 81, UpdatedAt: time.Unix(305, 0), }, } testRetrievalRecords = []model.PowRetrievalRecord{ { ID: "RID1", Address: "Addr1", DataTransferStart: time.Unix(1003, 0), DataTransferEnd: time.Unix(1004, 0), ErrMsg: "err msg 2", CreatedAt: 300, UpdatedAt: time.Unix(502, 0), DealInfo: model.PowRetrievalRecordDealInfo{ RootCid: "RetrievalRootCid1", Size: 3000, MinPrice: 329, Miner: "f01002", }, }, { ID: "RID2", Address: "Addr1", DataTransferStart: time.Unix(1003, 0), DataTransferEnd: time.Unix(1004, 0), ErrMsg: "err msg 2", CreatedAt: 303, UpdatedAt: time.Unix(505, 0), DealInfo: model.PowRetrievalRecordDealInfo{ RootCid: "RetrievalRootCid1", Size: 3000, MinPrice: 329, Miner: "f01003", }, }, } ) ================================================ FILE: api/mindexd/store/store.go ================================================ package store import ( "context" "fmt" "time" logger "github.com/ipfs/go-log/v2" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" ) var ( log = logger.Logger("store") ) type Store struct { sdrc *mongo.Collection rrc *mongo.Collection idxc *mongo.Collection hidxc *mongo.Collection ptc *mongo.Collection } func New(db *mongo.Database) (*Store, error) { s := &Store{ sdrc: db.Collection("storagedealrecords"), rrc: db.Collection("retrievalrecords"), idxc: db.Collection("minerindex"), hidxc: db.Collection("minerindexhistory"), ptc: db.Collection("powtargets"), } if err := s.ensureIndexes(); err != nil { return nil, fmt.Errorf("ensuring mongodb indexes: %s", err) } return s, nil } func (s *Store) ensureIndexes() error { // StorageDealRecords indexes ctx, cancel := context.WithTimeout(context.Background(), time.Minute) defer cancel() _, err := s.sdrc.Indexes().CreateMany(ctx, []mongo.IndexModel{ { Keys: bson.D{ bson.E{Key: "pow_name", Value: 1}, bson.E{Key: "pow_storage_deal_record.updated_at", Value: -1}, }, }, { Keys: bson.D{ bson.E{Key: "pow_storage_deal_record.deal_info.miner", Value: 1}, bson.E{Key: "region", Value: 1}, bson.E{Key: "pow_storage_deal_record.pending", Value: 1}, bson.E{Key: "pow_storage_deal_record.failed", Value: 1}, bson.E{Key: "pow_storage_deal_record.updated_at", Value: -1}, }, }, { Keys: bson.D{ bson.E{Key: "pow_storage_deal_record.pending", Value: 1}, bson.E{Key: "pow_storage_deal_record.deal_info.miner", Value: 1}, bson.E{Key: "region", Value: 1}, bson.E{Key: "pow_storage_deal_record.failed", Value: 1}, bson.E{Key: "pow_storage_deal_record.updated_at", Value: -1}, }, }, }) if err != nil { return fmt.Errorf("creating storage-deal records index: %s", err) } // RetrievalRecords indexes _, err = s.rrc.Indexes().CreateMany(ctx, []mongo.IndexModel{ { Keys: bson.D{ bson.E{Key: "pow_name", Value: 1}, bson.E{Key: "pow_retrieval_record.updated_at", Value: -1}, }, }, { Keys: bson.D{ bson.E{Key: "pow_retrieval_record.deal_info.miner", Value: 1}, bson.E{Key: "region", Value: 1}, bson.E{Key: "pow_retrieval_record.failed", Value: 1}, bson.E{Key: "pow_retrieval_record.updated_at", Value: -1}, }, }, }) if err != nil { return fmt.Errorf("creating retrieval records index: %s", err) } // Index indexes _, err = s.idxc.Indexes().CreateMany(ctx, []mongo.IndexModel{ { Keys: bson.D{bson.E{Key: "metadata.location", Value: 1}}, }, { Keys: bson.D{bson.E{Key: "filecoin.ask_price", Value: 1}}, }, { Keys: bson.D{bson.E{Key: "filecoin.ask_verified_price", Value: 1}}, }, { Keys: bson.D{bson.E{Key: "filecoin.active_sectors", Value: -1}}, }, { Keys: bson.D{bson.E{Key: "textile.deals_summary.total", Value: -1}}, }, { Keys: bson.D{bson.E{Key: "textile.deals_summary.last", Value: -1}}, }, { Keys: bson.D{bson.E{Key: "textile.retrievals_summary.total", Value: -1}}, }, { Keys: bson.D{bson.E{Key: "textile.retrievals_summary.last", Value: -1}}, }, { Keys: bson.D{bson.E{Key: "textile.region.021.deals.total", Value: -1}}, }, { Keys: bson.D{bson.E{Key: "textile.region.021.deals.last", Value: -1}}, }, { Keys: bson.D{bson.E{Key: "textile.region.021.retrievals.total", Value: -1}}, }, { Keys: bson.D{bson.E{Key: "textile.region.021.retrievals.last", Value: -1}}, }, }) if err != nil { return fmt.Errorf("creating retrieval records index: %s", err) } return nil } ================================================ FILE: api/usersd/client/client.go ================================================ package client import ( "context" "encoding/base64" "encoding/json" "fmt" "io" "time" "github.com/gogo/status" "github.com/ipfs/go-cid" "github.com/textileio/go-threads/core/thread" pb "github.com/textileio/textile/v2/api/usersd/pb" "github.com/textileio/textile/v2/threaddb" "google.golang.org/grpc" "google.golang.org/grpc/codes" ) // Client provides the client api. type Client struct { c pb.APIServiceClient conn *grpc.ClientConn } // NewClient starts the client. func NewClient(target string, opts ...grpc.DialOption) (*Client, error) { conn, err := grpc.Dial(target, opts...) if err != nil { return nil, err } return &Client{ c: pb.NewAPIServiceClient(conn), conn: conn, }, nil } // Close closes the client's grpc connection and cancels any active requests. func (c *Client) Close() error { return c.conn.Close() } // GetThread returns a thread by name. func (c *Client) GetThread(ctx context.Context, name string) (*pb.GetThreadResponse, error) { return c.c.GetThread(ctx, &pb.GetThreadRequest{ Name: name, }) } // ListThreads returns a list of threads. // Threads can be created using the threads or threads network client. func (c *Client) ListThreads(ctx context.Context) (*pb.ListThreadsResponse, error) { return c.c.ListThreads(ctx, &pb.ListThreadsRequest{}) } // SetupMailbox creates inbox and sentbox threads needed user mail. func (c *Client) SetupMailbox(ctx context.Context) (mailbox thread.ID, err error) { res, err := c.c.SetupMailbox(ctx, &pb.SetupMailboxRequest{}) if err != nil { return } return thread.Cast(res.MailboxId) } // Message is the client side representation of a mailbox message. // Signature corresponds to the encrypted body. // Use message.Open to get the plaintext body. type Message struct { ID string `json:"_id"` From thread.PubKey `json:"from"` To thread.PubKey `json:"to"` Body []byte `json:"body"` Signature []byte `json:"signature"` CreatedAt time.Time `json:"created_at"` ReadAt time.Time `json:"read_at,omitempty"` } // Open decrypts the message body with identity. func (m Message) Open(ctx context.Context, id thread.Identity) ([]byte, error) { return id.Decrypt(ctx, m.Body) } // IsRead returns whether or not the message has been read. func (m Message) IsRead() bool { return !m.ReadAt.IsZero() } // UnmarshalInstance unmarshals the message from its ThreadDB instance data. // This will return an error if the message signature fails verification. func (m Message) UnmarshalInstance(data []byte) error { // InboxMessage works for both inbox and sentbox messages (it contains a superset of SentboxMessage fields) var tm threaddb.InboxMessage if err := json.Unmarshal(data, &tm); err != nil { return err } body, err := base64.StdEncoding.DecodeString(tm.Body) if err != nil { return err } sig, err := base64.StdEncoding.DecodeString(tm.Signature) if err != nil { return err } from := &thread.Libp2pPubKey{} if err := from.UnmarshalString(tm.From); err != nil { return fmt.Errorf("from public key is invalid") } ok, err := from.Verify(body, sig) if !ok || err != nil { return fmt.Errorf("bad message signature") } to := &thread.Libp2pPubKey{} if err := to.UnmarshalString(tm.To); err != nil { return fmt.Errorf("to public key is invalid") } readAt := time.Time{} if tm.ReadAt > 0 { readAt = time.Unix(0, tm.ReadAt) } m.ID = tm.ID m.From = from m.To = to m.Body = body m.Signature = sig m.CreatedAt = time.Unix(0, tm.CreatedAt) m.ReadAt = readAt return nil } // SendMessage sends the message body to a recipient. func (c *Client) SendMessage(ctx context.Context, from thread.Identity, to thread.PubKey, body []byte) (msg Message, err error) { fromBody, err := from.GetPublic().Encrypt(body) if err != nil { return msg, err } fromSig, err := from.Sign(ctx, fromBody) if err != nil { return msg, err } toBody, err := to.Encrypt(body) if err != nil { return msg, err } toSig, err := from.Sign(ctx, toBody) if err != nil { return msg, err } res, err := c.c.SendMessage(ctx, &pb.SendMessageRequest{ To: to.String(), ToBody: toBody, ToSignature: toSig, FromBody: fromBody, FromSignature: fromSig, }) if err != nil { return msg, err } return Message{ ID: res.Id, From: from.GetPublic(), To: to, Body: fromBody, Signature: fromSig, CreatedAt: time.Unix(0, res.CreatedAt), }, nil } // ListInboxMessages lists messages from the inbox. // Use options to paginate with seek and limit and filter by read status. func (c *Client) ListInboxMessages(ctx context.Context, opts ...ListOption) ([]Message, error) { args := &listOptions{ status: All, } for _, opt := range opts { opt(args) } var s pb.ListInboxMessagesRequest_Status switch args.status { case All: s = pb.ListInboxMessagesRequest_STATUS_ALL case Read: s = pb.ListInboxMessagesRequest_STATUS_READ case Unread: s = pb.ListInboxMessagesRequest_STATUS_UNREAD default: return nil, fmt.Errorf("unknown status: %v", args.status) } res, err := c.c.ListInboxMessages(ctx, &pb.ListInboxMessagesRequest{ Seek: args.seek, Limit: int64(args.limit), Ascending: args.ascending, Status: s, }) if err != nil { return nil, err } return handleMessageList(res.Messages) } // ListSentboxMessages lists messages from the sentbox. // Use options to paginate with seek and limit. func (c *Client) ListSentboxMessages(ctx context.Context, opts ...ListOption) ([]Message, error) { args := &listOptions{ status: All, } for _, opt := range opts { opt(args) } res, err := c.c.ListSentboxMessages(ctx, &pb.ListSentboxMessagesRequest{ Seek: args.seek, Limit: int64(args.limit), }) if err != nil { return nil, err } return handleMessageList(res.Messages) } func handleMessageList(list []*pb.Message) ([]Message, error) { msgs := make([]Message, len(list)) var err error for i, m := range list { msgs[i], err = messageFromPb(m) if err != nil { return nil, err } } return msgs, nil } func messageFromPb(m *pb.Message) (msg Message, err error) { from := &thread.Libp2pPubKey{} if err := from.UnmarshalString(m.From); err != nil { return msg, fmt.Errorf("from public key is invalid") } ok, err := from.Verify(m.Body, m.Signature) if !ok || err != nil { return msg, fmt.Errorf("bad message signature") } to := &thread.Libp2pPubKey{} if err := to.UnmarshalString(m.To); err != nil { return msg, fmt.Errorf("to public key is invalid") } readAt := time.Time{} if m.ReadAt > 0 { readAt = time.Unix(0, m.ReadAt) } return Message{ ID: m.Id, From: from, To: to, Body: m.Body, Signature: m.Signature, CreatedAt: time.Unix(0, m.CreatedAt), ReadAt: readAt, }, nil } // ReadInboxMessage marks a message as read by ID. func (c *Client) ReadInboxMessage(ctx context.Context, id string) error { _, err := c.c.ReadInboxMessage(ctx, &pb.ReadInboxMessageRequest{ Id: id, }) return err } // DeleteInboxMessage deletes an inbox message by ID. func (c *Client) DeleteInboxMessage(ctx context.Context, id string) error { _, err := c.c.DeleteInboxMessage(ctx, &pb.DeleteInboxMessageRequest{ Id: id, }) return err } // DeleteSentboxMessage deletes a sent message by ID. func (c *Client) DeleteSentboxMessage(ctx context.Context, id string) error { _, err := c.c.DeleteSentboxMessage(ctx, &pb.DeleteSentboxMessageRequest{ Id: id, }) return err } // GetUsage returns current billing and usage information. func (c *Client) GetUsage(ctx context.Context, opts ...UsageOption) (*pb.GetUsageResponse, error) { args := &usageOptions{} for _, opt := range opts { opt(args) } return c.c.GetUsage(ctx, &pb.GetUsageRequest{ Key: args.key, }) } // ArchivesLs list all imported archives. func (c *Client) ArchivesLs(ctx context.Context) (*pb.ArchivesLsResponse, error) { req := &pb.ArchivesLsRequest{} return c.c.ArchivesLs(ctx, req) } // ArchivesImport imports deals information for a Cid. func (c *Client) ArchivesImport(ctx context.Context, dataCid cid.Cid, dealIDs []uint64) error { req := &pb.ArchivesImportRequest{ Cid: dataCid.String(), DealIds: dealIDs, } _, err := c.c.ArchivesImport(ctx, req) return err } // ArchiveRetrievalLs lists existing retrievals. func (c *Client) ArchiveRetrievalLs(ctx context.Context) (*pb.ArchiveRetrievalLsResponse, error) { req := &pb.ArchiveRetrievalLsRequest{} return c.c.ArchiveRetrievalLs(ctx, req) } // ArchiveRetrievalLogs returns the existing logs from the retrieval. func (c *Client) ArchiveRetrievalLogs(ctx context.Context, id string, ch chan<- string) error { ctx, cancel := context.WithCancel(ctx) defer cancel() stream, err := c.c.ArchiveRetrievalLogs(ctx, &pb.ArchiveRetrievalLogsRequest{Id: id}) if err != nil { return err } for { reply, err := stream.Recv() if err == io.EOF || status.Code(err) == codes.Canceled { break } if err != nil { return err } ch <- reply.Msg } return nil } ================================================ FILE: api/usersd/client/client_test.go ================================================ package client_test import ( "context" "crypto/rand" "os" "testing" "time" "github.com/libp2p/go-libp2p-core/crypto" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tc "github.com/textileio/go-threads/api/client" corenet "github.com/textileio/go-threads/core/net" "github.com/textileio/go-threads/core/thread" nc "github.com/textileio/go-threads/net/api/client" tutil "github.com/textileio/go-threads/util" "github.com/textileio/textile/v2/api/apitest" bc "github.com/textileio/textile/v2/api/bucketsd/client" "github.com/textileio/textile/v2/api/common" hc "github.com/textileio/textile/v2/api/hubd/client" hubpb "github.com/textileio/textile/v2/api/hubd/pb" c "github.com/textileio/textile/v2/api/usersd/client" bucks "github.com/textileio/textile/v2/buckets" "github.com/textileio/textile/v2/core" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) func TestMain(m *testing.M) { cleanup := func() {} if os.Getenv("SKIP_SERVICES") != "true" { cleanup = apitest.StartServices() } exitVal := m.Run() cleanup() os.Exit(exitVal) } func TestClient_GetThread(t *testing.T) { t.Parallel() conf, client, hub, threads, _, _ := setup(t, nil) ctx := context.Background() dev := apitest.Signup(t, hub, conf, apitest.NewUsername(), apitest.NewEmail()) t.Run("bad keys", func(t *testing.T) { // No key _, err := client.GetThread(ctx, "foo") require.Error(t, err) assert.Equal(t, codes.Unauthenticated, status.Code(err)) // No key signature res, err := hub.CreateKey(common.NewSessionContext(ctx, dev.Session), hubpb.KeyType_KEY_TYPE_ACCOUNT, true) require.NoError(t, err) ctx := common.NewAPIKeyContext(ctx, res.KeyInfo.Key) _, err = client.GetThread(ctx, "foo") require.Error(t, err) assert.Equal(t, codes.Unauthenticated, status.Code(err)) // Old key signature ctx, err = common.CreateAPISigContext(ctx, time.Now().Add(-time.Minute), res.KeyInfo.Secret) require.NoError(t, err) _, err = client.GetThread(ctx, "foo") require.Error(t, err) assert.Equal(t, codes.Unauthenticated, status.Code(err)) }) t.Run("account keys", func(t *testing.T) { res, err := hub.CreateKey(common.NewSessionContext(ctx, dev.Session), hubpb.KeyType_KEY_TYPE_ACCOUNT, true) require.NoError(t, err) ctx := common.NewAPIKeyContext(ctx, res.KeyInfo.Key) ctx, err = common.CreateAPISigContext(ctx, time.Now().Add(time.Minute), res.KeyInfo.Secret) require.NoError(t, err) // Not found _, err = client.GetThread(ctx, "foo") require.Error(t, err) assert.Equal(t, codes.NotFound, status.Code(err)) // All good ctx = common.NewThreadNameContext(ctx, "foo") err = threads.NewDB(ctx, thread.NewIDV1(thread.Raw, 32)) require.NoError(t, err) res2, err := client.GetThread(ctx, "foo") require.NoError(t, err) assert.Equal(t, "foo", res2.Name) assert.True(t, res2.IsDb) }) t.Run("users keys", func(t *testing.T) { res, err := hub.CreateKey(common.NewSessionContext(ctx, dev.Session), hubpb.KeyType_KEY_TYPE_USER, true) require.NoError(t, err) ctx := common.NewAPIKeyContext(ctx, res.KeyInfo.Key) ctx, err = common.CreateAPISigContext(ctx, time.Now().Add(time.Minute), res.KeyInfo.Secret) require.NoError(t, err) // No token _, err = client.GetThread(ctx, "foo") require.Error(t, err) assert.Equal(t, codes.Unauthenticated, status.Code(err)) // Not found sk, _, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) tok, err := threads.GetToken(ctx, thread.NewLibp2pIdentity(sk)) require.NoError(t, err) ctx = thread.NewTokenContext(ctx, tok) _, err = client.GetThread(ctx, "foo") require.Error(t, err) assert.Equal(t, codes.NotFound, status.Code(err)) // All good ctx = common.NewThreadNameContext(ctx, "foo") err = threads.NewDB(ctx, thread.NewIDV1(thread.Raw, 32)) require.NoError(t, err) res2, err := client.GetThread(ctx, "foo") require.NoError(t, err) assert.Equal(t, "foo", res2.Name) assert.True(t, res2.IsDb) }) t.Run("insecure keys", func(t *testing.T) { res, err := hub.CreateKey(common.NewSessionContext(ctx, dev.Session), hubpb.KeyType_KEY_TYPE_ACCOUNT, false) require.NoError(t, err) ctx := common.NewAPIKeyContext(ctx, res.KeyInfo.Key) // All good ctx = common.NewThreadNameContext(ctx, "foo2") err = threads.NewDB(ctx, thread.NewIDV1(thread.Raw, 32)) require.NoError(t, err) res2, err := client.GetThread(ctx, "foo2") require.NoError(t, err) assert.Equal(t, "foo2", res2.Name) assert.True(t, res2.IsDb) }) } func TestClient_ListThreads(t *testing.T) { t.Parallel() conf, client, hub, threads, net, _ := setup(t, nil) ctx := context.Background() dev := apitest.Signup(t, hub, conf, apitest.NewUsername(), apitest.NewEmail()) t.Run("bad keys", func(t *testing.T) { // No key _, err := client.ListThreads(ctx) require.Error(t, err) assert.Equal(t, codes.Unauthenticated, status.Code(err)) // No key signature res, err := hub.CreateKey(common.NewSessionContext(ctx, dev.Session), hubpb.KeyType_KEY_TYPE_ACCOUNT, true) require.NoError(t, err) ctx := common.NewAPIKeyContext(ctx, res.KeyInfo.Key) _, err = client.ListThreads(ctx) require.Error(t, err) assert.Equal(t, codes.Unauthenticated, status.Code(err)) // Old key signature ctx, err = common.CreateAPISigContext(ctx, time.Now().Add(-time.Minute), res.KeyInfo.Secret) require.NoError(t, err) _, err = client.ListThreads(ctx) require.Error(t, err) assert.Equal(t, codes.Unauthenticated, status.Code(err)) }) t.Run("account keys", func(t *testing.T) { res, err := hub.CreateKey(common.NewSessionContext(ctx, dev.Session), hubpb.KeyType_KEY_TYPE_ACCOUNT, true) require.NoError(t, err) ctx := common.NewAPIKeyContext(ctx, res.KeyInfo.Key) ctx, err = common.CreateAPISigContext(ctx, time.Now().Add(time.Minute), res.KeyInfo.Secret) require.NoError(t, err) // Empty res2, err := client.ListThreads(ctx) require.NoError(t, err) assert.Equal(t, 0, len(res2.List)) // Got one _, err = net.CreateThread(ctx, thread.NewIDV1(thread.Raw, 32)) require.NoError(t, err) res3, err := client.ListThreads(ctx) require.NoError(t, err) assert.Equal(t, 1, len(res3.List)) assert.False(t, res3.List[0].IsDb) }) t.Run("users keys", func(t *testing.T) { res, err := hub.CreateKey(common.NewSessionContext(ctx, dev.Session), hubpb.KeyType_KEY_TYPE_USER, true) require.NoError(t, err) ctx := common.NewAPIKeyContext(ctx, res.KeyInfo.Key) ctx, err = common.CreateAPISigContext(ctx, time.Now().Add(time.Minute), res.KeyInfo.Secret) require.NoError(t, err) // No token _, err = client.ListThreads(ctx) require.Error(t, err) assert.Equal(t, codes.Unauthenticated, status.Code(err)) // Empty sk, _, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) tok, err := threads.GetToken(ctx, thread.NewLibp2pIdentity(sk)) require.NoError(t, err) ctx = thread.NewTokenContext(ctx, tok) res2, err := client.ListThreads(ctx) require.NoError(t, err) assert.Equal(t, 0, len(res2.List)) // Got one ctx = common.NewThreadNameContext(ctx, "foo") err = threads.NewDB(ctx, thread.NewIDV1(thread.Raw, 32)) require.NoError(t, err) res3, err := client.ListThreads(ctx) require.NoError(t, err) assert.Equal(t, 1, len(res3.List)) assert.Equal(t, "foo", res3.List[0].Name) assert.True(t, res3.List[0].IsDb) }) t.Run("insecure keys", func(t *testing.T) { res, err := hub.CreateKey(common.NewSessionContext(ctx, dev.Session), hubpb.KeyType_KEY_TYPE_ACCOUNT, false) require.NoError(t, err) ctx := common.NewAPIKeyContext(ctx, res.KeyInfo.Key) // Got one res2, err := client.ListThreads(ctx) require.NoError(t, err) assert.Equal(t, 1, len(res2.List)) // Got two _, err = net.CreateThread(ctx, thread.NewIDV1(thread.Raw, 32)) require.NoError(t, err) res3, err := client.ListThreads(ctx) require.NoError(t, err) assert.Equal(t, 2, len(res3.List)) assert.False(t, res3.List[1].IsDb) }) } func TestClient_SetupMailbox(t *testing.T) { t.Parallel() conf, client, hub, threads, _, _ := setup(t, nil) dev := apitest.Signup(t, hub, conf, apitest.NewUsername(), apitest.NewEmail()) res, err := hub.CreateKey(common.NewSessionContext(context.Background(), dev.Session), hubpb.KeyType_KEY_TYPE_USER, false) require.NoError(t, err) ctx := common.NewAPIKeyContext(context.Background(), res.KeyInfo.Key) sk, _, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) from := thread.NewLibp2pIdentity(sk) tok, err := threads.GetToken(ctx, from) require.NoError(t, err) ctx = thread.NewTokenContext(ctx, tok) mailbox, err := client.SetupMailbox(ctx) require.NoError(t, err) assert.NotEmpty(t, mailbox) // should be idempotent mailbox2, err := client.SetupMailbox(ctx) require.NoError(t, err) assert.Equal(t, mailbox, mailbox2) } func TestClient_SendMessage(t *testing.T) { t.Parallel() conf, client, hub, threads, _, _ := setup(t, nil) dev := apitest.Signup(t, hub, conf, apitest.NewUsername(), apitest.NewEmail()) res, err := hub.CreateKey(common.NewSessionContext(context.Background(), dev.Session), hubpb.KeyType_KEY_TYPE_USER, false) require.NoError(t, err) from, fctx := setupUserMail(t, client, threads, res.KeyInfo.Key) to, _ := setupUserMail(t, client, threads, res.KeyInfo.Key) msg, err := client.SendMessage(fctx, from, to.GetPublic(), []byte("howdy")) require.NoError(t, err) assert.NotEmpty(t, msg.ID) assert.NotEmpty(t, msg.CreatedAt) } func TestClient_ListInboxMessages(t *testing.T) { t.Parallel() conf, client, hub, threads, _, _ := setup(t, nil) dev := apitest.Signup(t, hub, conf, apitest.NewUsername(), apitest.NewEmail()) res, err := hub.CreateKey(common.NewSessionContext(context.Background(), dev.Session), hubpb.KeyType_KEY_TYPE_USER, false) require.NoError(t, err) from, fctx := setupUserMail(t, client, threads, res.KeyInfo.Key) to, tctx := setupUserMail(t, client, threads, res.KeyInfo.Key) var i int var readID string for i < 10 { res, err := client.SendMessage(fctx, from, to.GetPublic(), []byte("hi")) require.NoError(t, err) if i == 0 { readID = res.ID } i++ } t.Run("check order", func(t *testing.T) { list, err := client.ListInboxMessages(tctx) require.NoError(t, err) assert.Len(t, list, 10) for i := 0; i < len(list)-1; i++ { assert.True(t, list[i].CreatedAt.After(list[i+1].CreatedAt)) } m, err := list[0].Open(context.Background(), to) require.NoError(t, err) assert.Equal(t, "hi", string(m)) }) t.Run("with limit", func(t *testing.T) { list, err := client.ListInboxMessages(tctx, c.WithLimit(5)) require.NoError(t, err) assert.Len(t, list, 5) }) t.Run("with ascending", func(t *testing.T) { list, err := client.ListInboxMessages(tctx, c.WithLimit(5), c.WithAscending(true)) require.NoError(t, err) assert.Len(t, list, 5) for i := 0; i < len(list)-1; i++ { assert.True(t, list[i].CreatedAt.Before(list[i+1].CreatedAt)) } }) t.Run("with seek", func(t *testing.T) { var all []c.Message var seek string pageSize := 2 for { // 5 pages list, err := client.ListInboxMessages(tctx, c.WithLimit(pageSize+1), c.WithSeek(seek)) require.NoError(t, err) all = append(all, list[:pageSize]...) if len(list) < pageSize+1 { break } seek = list[len(list)-1].ID } assert.Len(t, all, 10) for i := 0; i < len(all)-1; i++ { assert.True(t, all[i].CreatedAt.After(all[i+1].CreatedAt)) } }) t.Run("with status", func(t *testing.T) { err = client.ReadInboxMessage(tctx, readID) require.NoError(t, err) list1, err := client.ListInboxMessages(tctx, c.WithStatus(c.All)) require.NoError(t, err) assert.Len(t, list1, 10) list2, err := client.ListInboxMessages(tctx, c.WithStatus(c.Read)) require.NoError(t, err) assert.Len(t, list2, 1) assert.False(t, list2[0].ReadAt.IsZero()) list3, err := client.ListInboxMessages(tctx, c.WithStatus(c.Unread)) require.NoError(t, err) assert.Len(t, list3, 9) assert.True(t, list3[0].ReadAt.IsZero()) }) } func TestClient_ListSentboxMessages(t *testing.T) { t.Parallel() conf, client, hub, threads, _, _ := setup(t, nil) dev := apitest.Signup(t, hub, conf, apitest.NewUsername(), apitest.NewEmail()) res, err := hub.CreateKey(common.NewSessionContext(context.Background(), dev.Session), hubpb.KeyType_KEY_TYPE_USER, false) require.NoError(t, err) from, fctx := setupUserMail(t, client, threads, res.KeyInfo.Key) to, _ := setupUserMail(t, client, threads, res.KeyInfo.Key) _, err = client.SendMessage(fctx, from, to.GetPublic(), []byte("one")) require.NoError(t, err) _, err = client.SendMessage(fctx, from, to.GetPublic(), []byte("two")) require.NoError(t, err) list, err := client.ListSentboxMessages(fctx) require.NoError(t, err) assert.Len(t, list, 2) m2, err := list[0].Open(context.Background(), from) require.NoError(t, err) m1, err := list[1].Open(context.Background(), from) require.NoError(t, err) assert.Equal(t, "two", string(m2)) assert.Equal(t, "one", string(m1)) } func TestClient_ReadInboxMessage(t *testing.T) { t.Parallel() conf, client, hub, threads, _, _ := setup(t, nil) dev := apitest.Signup(t, hub, conf, apitest.NewUsername(), apitest.NewEmail()) res, err := hub.CreateKey(common.NewSessionContext(context.Background(), dev.Session), hubpb.KeyType_KEY_TYPE_USER, false) require.NoError(t, err) from, fctx := setupUserMail(t, client, threads, res.KeyInfo.Key) to, tctx := setupUserMail(t, client, threads, res.KeyInfo.Key) msg, err := client.SendMessage(fctx, from, to.GetPublic(), []byte("howdy")) require.NoError(t, err) err = client.ReadInboxMessage(tctx, msg.ID) require.NoError(t, err) list, err := client.ListInboxMessages(tctx) require.NoError(t, err) assert.False(t, list[0].ReadAt.IsZero()) } func TestClient_DeleteInboxMessage(t *testing.T) { t.Parallel() conf, client, hub, threads, _, _ := setup(t, nil) dev := apitest.Signup(t, hub, conf, apitest.NewUsername(), apitest.NewEmail()) res, err := hub.CreateKey(common.NewSessionContext(context.Background(), dev.Session), hubpb.KeyType_KEY_TYPE_USER, false) require.NoError(t, err) from, fctx := setupUserMail(t, client, threads, res.KeyInfo.Key) to, tctx := setupUserMail(t, client, threads, res.KeyInfo.Key) msg, err := client.SendMessage(fctx, from, to.GetPublic(), []byte("howdy")) require.NoError(t, err) err = client.DeleteInboxMessage(tctx, msg.ID) require.NoError(t, err) list, err := client.ListInboxMessages(tctx) require.NoError(t, err) assert.Len(t, list, 0) } func TestClient_DeleteSentboxMessage(t *testing.T) { t.Parallel() conf, client, hub, threads, _, _ := setup(t, nil) dev := apitest.Signup(t, hub, conf, apitest.NewUsername(), apitest.NewEmail()) res, err := hub.CreateKey(common.NewSessionContext(context.Background(), dev.Session), hubpb.KeyType_KEY_TYPE_USER, false) require.NoError(t, err) from, fctx := setupUserMail(t, client, threads, res.KeyInfo.Key) to, _ := setupUserMail(t, client, threads, res.KeyInfo.Key) msg, err := client.SendMessage(fctx, from, to.GetPublic(), []byte("howdy")) require.NoError(t, err) err = client.DeleteSentboxMessage(fctx, msg.ID) require.NoError(t, err) list, err := client.ListSentboxMessages(fctx) require.NoError(t, err) assert.Len(t, list, 0) } func TestClient_GetUsage(t *testing.T) { t.Parallel() conf, client, hub, threads, _, _ := setupWithBilling(t) ctx := context.Background() dev := apitest.Signup(t, hub, conf, apitest.NewUsername(), apitest.NewEmail()) res, err := hub.CreateKey(common.NewSessionContext(context.Background(), dev.Session), hubpb.KeyType_KEY_TYPE_USER, false) require.NoError(t, err) ctx = common.NewAPIKeyContext(context.Background(), res.KeyInfo.Key) sk, _, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) id := thread.NewLibp2pIdentity(sk) tok, err := threads.GetToken(ctx, id) require.NoError(t, err) ctx = thread.NewTokenContext(ctx, tok) usage, err := client.GetUsage(ctx) require.NoError(t, err) assert.NotEmpty(t, usage.Usage) usage, err = client.GetUsage(ctx) require.NoError(t, err) } func TestAccountBuckets(t *testing.T) { conf, users, hub, threads, _, buckets := setup(t, nil) ctx := context.Background() // Signup, create an API key, and sign it for the requests dev := apitest.Signup(t, hub, conf, apitest.NewUsername(), apitest.NewEmail()) devCtx := common.NewSessionContext(ctx, dev.Session) res, err := hub.CreateKey(devCtx, hubpb.KeyType_KEY_TYPE_ACCOUNT, true) require.NoError(t, err) ctx = common.NewAPIKeyContext(ctx, res.KeyInfo.Key) ctx, err = common.CreateAPISigContext(ctx, time.Now().Add(time.Minute), res.KeyInfo.Secret) require.NoError(t, err) // Create a db for the bucket ctx = common.NewThreadNameContext(ctx, "my-buckets") dbID := thread.NewIDV1(thread.Raw, 32) err = threads.NewDB(ctx, dbID) require.NoError(t, err) // Initialize a new bucket in the db ctx = common.NewThreadIDContext(ctx, dbID) buck, err := buckets.Create(ctx) require.NoError(t, err) // Finally, push a file to the bucket. res2, err := pushPath(t, ctx, buckets, buck.Root.Key, "file1.jpg", "testdata/file1.jpg") require.NoError(t, err) assert.NotEmpty(t, res2.Root.String()) // We should have a thread named "my-buckets" res3, err := users.GetThread(ctx, "my-buckets") require.NoError(t, err) assert.Equal(t, dbID.Bytes(), res3.Id) } func TestUserBuckets(t *testing.T) { conf, users, hub, threads, net, buckets := setup(t, nil) ctx := context.Background() // Signup, create an API key, and sign it for the requests dev := apitest.Signup(t, hub, conf, apitest.NewUsername(), apitest.NewEmail()) devCtx := common.NewSessionContext(ctx, dev.Session) res, err := hub.CreateKey(devCtx, hubpb.KeyType_KEY_TYPE_USER, true) require.NoError(t, err) ctx = common.NewAPIKeyContext(ctx, res.KeyInfo.Key) ctx, err = common.CreateAPISigContext(ctx, time.Now().Add(time.Hour), res.KeyInfo.Secret) require.NoError(t, err) // Generate a user identity and get a token for it sk, _, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) tok, err := threads.GetToken(ctx, thread.NewLibp2pIdentity(sk)) require.NoError(t, err) ctx = thread.NewTokenContext(ctx, tok) // Create a db for the bucket ctx = common.NewThreadNameContext(ctx, "my-buckets") dbID := thread.NewIDV1(thread.Raw, 32) err = threads.NewDB(ctx, dbID) require.NoError(t, err) // Initialize a new bucket in the db ctx = common.NewThreadIDContext(ctx, dbID) buck, err := buckets.Create(ctx, bc.WithPrivate(true)) require.NoError(t, err) // Finally, push a file to the bucket. res2, err := pushPath(t, ctx, buckets, buck.Root.Key, "file1.jpg", "testdata/file1.jpg") require.NoError(t, err) assert.NotEmpty(t, res2.Root.String()) // We should have a thread named "my-buckets" res3, err := users.GetThread(ctx, "my-buckets") require.NoError(t, err) assert.Equal(t, dbID.Bytes(), res3.Id) // The dev should see that the key was used to create one thread keys, err := hub.ListKeys(devCtx) require.NoError(t, err) assert.Equal(t, 1, len(keys.List)) assert.Equal(t, 1, int(keys.List[0].Threads)) // Try interacting with the bucket as a different user sk2, pk2c, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) tok2, err := threads.GetToken(ctx, thread.NewLibp2pIdentity(sk2)) require.NoError(t, err) ctx = thread.NewTokenContext(ctx, tok2) pk2 := thread.NewLibp2pPubKey(pk2c).String() // Try to overwrite existing _, err = pushPath(t, ctx, buckets, buck.Root.Key, "file1.jpg", "testdata/file2.jpg") require.Error(t, err) // no path write access // Try to add a new path _, err = pushPath(t, ctx, buckets, buck.Root.Key, "file2.jpg", "testdata/file2.jpg") require.Error(t, err) // no new path write access // Try to get the path _, err = buckets.ListPath(ctx, buck.Root.Key, "file1.jpg") require.Error(t, err) // no path read access // Grant path read access ctx = thread.NewTokenContext(ctx, tok) err = buckets.PushPathAccessRoles(ctx, buck.Root.Key, "file1.jpg", map[string]bucks.Role{ pk2: bucks.Reader, }) require.NoError(t, err) // Try to get the path again ctx = thread.NewTokenContext(ctx, tok2) _, err = buckets.ListPath(ctx, buck.Root.Key, "file1.jpg") require.NoError(t, err) // Grant path write access ctx = thread.NewTokenContext(ctx, tok) err = buckets.PushPathAccessRoles(ctx, buck.Root.Key, "file1.jpg", map[string]bucks.Role{ pk2: bucks.Writer, }) require.NoError(t, err) // Try to write to the path again ctx = thread.NewTokenContext(ctx, tok2) res4, err := pushPath(t, ctx, buckets, buck.Root.Key, "file1.jpg", "testdata/file2.jpg") require.NoError(t, err) assert.False(t, res4.Root.Cid().Equals(res2.Root.Cid())) // Check that we now have two logs in the bucket thread time.Sleep(time.Second) info, err := net.GetThread(ctx, dbID, corenet.WithThreadToken(tok)) require.NoError(t, err) assert.Len(t, info.Logs, 2) } func setup(t *testing.T, conf *core.Config) (core.Config, *c.Client, *hc.Client, *tc.Client, *nc.Client, *bc.Client) { if conf == nil { tmp := apitest.DefaultTextileConfig(t) conf = &tmp } return setupWithConf(t, *conf) } func setupWithConf(t *testing.T, conf core.Config) (core.Config, *c.Client, *hc.Client, *tc.Client, *nc.Client, *bc.Client) { apitest.MakeTextileWithConfig(t, conf) target, err := tutil.TCPAddrFromMultiAddr(conf.AddrAPI) require.NoError(t, err) opts := []grpc.DialOption{grpc.WithInsecure(), grpc.WithPerRPCCredentials(common.Credentials{})} client, err := c.NewClient(target, opts...) require.NoError(t, err) hubclient, err := hc.NewClient(target, opts...) require.NoError(t, err) threadsclient, err := tc.NewClient(target, opts...) require.NoError(t, err) threadsnetclient, err := nc.NewClient(target, opts...) require.NoError(t, err) bucketsclient, err := bc.NewClient(target, opts...) require.NoError(t, err) t.Cleanup(func() { err := client.Close() require.NoError(t, err) err = threadsclient.Close() require.NoError(t, err) }) return conf, client, hubclient, threadsclient, threadsnetclient, bucketsclient } func setupWithBilling(t *testing.T) (core.Config, *c.Client, *hc.Client, *tc.Client, *nc.Client, *bc.Client) { bconf := apitest.DefaultBillingConfig(t) apitest.MakeBillingWithConfig(t, bconf) conf := apitest.DefaultTextileConfig(t) billingApi, err := tutil.TCPAddrFromMultiAddr(bconf.ListenAddr) require.NoError(t, err) conf.AddrBillingAPI = billingApi return setup(t, &conf) } func setupUserMail(t *testing.T, client *c.Client, threads *tc.Client, key string) (thread.Identity, context.Context) { ctx := common.NewAPIKeyContext(context.Background(), key) sk, _, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) id := thread.NewLibp2pIdentity(sk) tok, err := threads.GetToken(ctx, id) require.NoError(t, err) ctx = thread.NewTokenContext(ctx, tok) _, err = client.SetupMailbox(ctx) require.NoError(t, err) return id, ctx } func pushPath(t *testing.T, ctx context.Context, buckets *bc.Client, key, pth, name string) (bc.PushPathsResult, error) { q, err := buckets.PushPaths(ctx, key) require.NoError(t, err) err = q.AddFile(pth, name) require.NoError(t, err) for q.Next() { } q.Close() return q.Current, q.Err() } ================================================ FILE: api/usersd/client/options.go ================================================ package client type listOptions struct { seek string limit int ascending bool status Status } type ListOption func(*listOptions) // WithSeek starts listing from the given ID. func WithSeek(id string) ListOption { return func(args *listOptions) { args.seek = id } } // WithLimit limits the number of list messages results. func WithLimit(limit int) ListOption { return func(args *listOptions) { args.limit = limit } } // WithAscending lists messages by ascending order. func WithAscending(asc bool) ListOption { return func(args *listOptions) { args.ascending = asc } } // Status indicates message read status. type Status int const ( // All includes read and unread messages. All Status = iota // Read is only read messages. Read // Unread is only unread messages. Unread ) // WithStatus filters messages by read status. // Note: Only applies to inbox messages. func WithStatus(s Status) ListOption { return func(args *listOptions) { args.status = s } } type usageOptions struct { key string } type UsageOption func(*usageOptions) // WithPubKey returns usage info for the public key. func WithPubKey(key string) UsageOption { return func(args *usageOptions) { args.key = key } } ================================================ FILE: api/usersd/pb/javascript/package.json ================================================ { "name": "@textile/users-grpc", "version": "0.0.0", "description": "A client for interacting with the Textile Users gRPC API.", "repository": { "type": "git", "url": "git+https://github.com/textileio/textile.git" }, "author": "Textile", "license": "MIT", "files": [ "api/usersd/pb/usersd_pb.js", "api/usersd/pb/usersd_pb_service.js", "api/usersd/pb/usersd_pb.d.ts", "api/usersd/pb/usersd_pb_service.d.ts", "api/billingd/pb/billingd_pb.js", "api/billingd/pb/billingd_pb_service.js", "api/billingd/pb/billingd_pb.d.ts", "api/billingd/pb/billingd_pb_service.d.ts" ], "dependencies": { "@improbable-eng/grpc-web": "^0.14.1", "@types/google-protobuf": "^3.15.5", "google-protobuf": "^3.19.4" }, "devDependencies": { "ts-protoc-gen": "^0.15.0" } } ================================================ FILE: api/usersd/pb/usersd.pb.go ================================================ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.23.0 // protoc v3.13.0 // source: api/usersd/pb/usersd.proto package pb import ( context "context" proto "github.com/golang/protobuf/proto" pb "github.com/textileio/textile/v2/api/billingd/pb" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) 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 that a sufficiently up-to-date version // of the legacy proto package is being used. const _ = proto.ProtoPackageIsVersion4 type ArchiveRetrievalStatus int32 const ( ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_UNSPECIFIED ArchiveRetrievalStatus = 0 ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_QUEUED ArchiveRetrievalStatus = 1 ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_EXECUTING ArchiveRetrievalStatus = 2 ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_MOVETOBUCKET ArchiveRetrievalStatus = 3 ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_FAILED ArchiveRetrievalStatus = 4 ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_CANCELED ArchiveRetrievalStatus = 5 ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_SUCCESS ArchiveRetrievalStatus = 6 ) // Enum value maps for ArchiveRetrievalStatus. var ( ArchiveRetrievalStatus_name = map[int32]string{ 0: "ARCHIVE_RETRIEVAL_STATUS_UNSPECIFIED", 1: "ARCHIVE_RETRIEVAL_STATUS_QUEUED", 2: "ARCHIVE_RETRIEVAL_STATUS_EXECUTING", 3: "ARCHIVE_RETRIEVAL_STATUS_MOVETOBUCKET", 4: "ARCHIVE_RETRIEVAL_STATUS_FAILED", 5: "ARCHIVE_RETRIEVAL_STATUS_CANCELED", 6: "ARCHIVE_RETRIEVAL_STATUS_SUCCESS", } ArchiveRetrievalStatus_value = map[string]int32{ "ARCHIVE_RETRIEVAL_STATUS_UNSPECIFIED": 0, "ARCHIVE_RETRIEVAL_STATUS_QUEUED": 1, "ARCHIVE_RETRIEVAL_STATUS_EXECUTING": 2, "ARCHIVE_RETRIEVAL_STATUS_MOVETOBUCKET": 3, "ARCHIVE_RETRIEVAL_STATUS_FAILED": 4, "ARCHIVE_RETRIEVAL_STATUS_CANCELED": 5, "ARCHIVE_RETRIEVAL_STATUS_SUCCESS": 6, } ) func (x ArchiveRetrievalStatus) Enum() *ArchiveRetrievalStatus { p := new(ArchiveRetrievalStatus) *p = x return p } func (x ArchiveRetrievalStatus) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ArchiveRetrievalStatus) Descriptor() protoreflect.EnumDescriptor { return file_api_usersd_pb_usersd_proto_enumTypes[0].Descriptor() } func (ArchiveRetrievalStatus) Type() protoreflect.EnumType { return &file_api_usersd_pb_usersd_proto_enumTypes[0] } func (x ArchiveRetrievalStatus) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use ArchiveRetrievalStatus.Descriptor instead. func (ArchiveRetrievalStatus) EnumDescriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{0} } type ListInboxMessagesRequest_Status int32 const ( ListInboxMessagesRequest_STATUS_UNSPECIFIED ListInboxMessagesRequest_Status = 0 ListInboxMessagesRequest_STATUS_ALL ListInboxMessagesRequest_Status = 1 ListInboxMessagesRequest_STATUS_READ ListInboxMessagesRequest_Status = 2 ListInboxMessagesRequest_STATUS_UNREAD ListInboxMessagesRequest_Status = 3 ) // Enum value maps for ListInboxMessagesRequest_Status. var ( ListInboxMessagesRequest_Status_name = map[int32]string{ 0: "STATUS_UNSPECIFIED", 1: "STATUS_ALL", 2: "STATUS_READ", 3: "STATUS_UNREAD", } ListInboxMessagesRequest_Status_value = map[string]int32{ "STATUS_UNSPECIFIED": 0, "STATUS_ALL": 1, "STATUS_READ": 2, "STATUS_UNREAD": 3, } ) func (x ListInboxMessagesRequest_Status) Enum() *ListInboxMessagesRequest_Status { p := new(ListInboxMessagesRequest_Status) *p = x return p } func (x ListInboxMessagesRequest_Status) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ListInboxMessagesRequest_Status) Descriptor() protoreflect.EnumDescriptor { return file_api_usersd_pb_usersd_proto_enumTypes[1].Descriptor() } func (ListInboxMessagesRequest_Status) Type() protoreflect.EnumType { return &file_api_usersd_pb_usersd_proto_enumTypes[1] } func (x ListInboxMessagesRequest_Status) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use ListInboxMessagesRequest_Status.Descriptor instead. func (ListInboxMessagesRequest_Status) EnumDescriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{9, 0} } type ListThreadsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ListThreadsRequest) Reset() { *x = ListThreadsRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListThreadsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListThreadsRequest) ProtoMessage() {} func (x *ListThreadsRequest) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 ListThreadsRequest.ProtoReflect.Descriptor instead. func (*ListThreadsRequest) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{0} } type ListThreadsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields List []*GetThreadResponse `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` } func (x *ListThreadsResponse) Reset() { *x = ListThreadsResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListThreadsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListThreadsResponse) ProtoMessage() {} func (x *ListThreadsResponse) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 ListThreadsResponse.ProtoReflect.Descriptor instead. func (*ListThreadsResponse) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{1} } func (x *ListThreadsResponse) GetList() []*GetThreadResponse { if x != nil { return x.List } return nil } type GetThreadRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *GetThreadRequest) Reset() { *x = GetThreadRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetThreadRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetThreadRequest) ProtoMessage() {} func (x *GetThreadRequest) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 GetThreadRequest.ProtoReflect.Descriptor instead. func (*GetThreadRequest) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{2} } func (x *GetThreadRequest) GetName() string { if x != nil { return x.Name } return "" } type GetThreadResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` IsDb bool `protobuf:"varint,3,opt,name=is_db,json=isDb,proto3" json:"is_db,omitempty"` } func (x *GetThreadResponse) Reset() { *x = GetThreadResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetThreadResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetThreadResponse) ProtoMessage() {} func (x *GetThreadResponse) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 GetThreadResponse.ProtoReflect.Descriptor instead. func (*GetThreadResponse) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{3} } func (x *GetThreadResponse) GetId() []byte { if x != nil { return x.Id } return nil } func (x *GetThreadResponse) GetName() string { if x != nil { return x.Name } return "" } func (x *GetThreadResponse) GetIsDb() bool { if x != nil { return x.IsDb } return false } type SetupMailboxRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SetupMailboxRequest) Reset() { *x = SetupMailboxRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetupMailboxRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetupMailboxRequest) ProtoMessage() {} func (x *SetupMailboxRequest) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 SetupMailboxRequest.ProtoReflect.Descriptor instead. func (*SetupMailboxRequest) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{4} } type SetupMailboxResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MailboxId []byte `protobuf:"bytes,1,opt,name=mailbox_id,json=mailboxId,proto3" json:"mailbox_id,omitempty"` } func (x *SetupMailboxResponse) Reset() { *x = SetupMailboxResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetupMailboxResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetupMailboxResponse) ProtoMessage() {} func (x *SetupMailboxResponse) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 SetupMailboxResponse.ProtoReflect.Descriptor instead. func (*SetupMailboxResponse) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{5} } func (x *SetupMailboxResponse) GetMailboxId() []byte { if x != nil { return x.MailboxId } return nil } type Message struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` From string `protobuf:"bytes,2,opt,name=from,proto3" json:"from,omitempty"` To string `protobuf:"bytes,3,opt,name=to,proto3" json:"to,omitempty"` Body []byte `protobuf:"bytes,4,opt,name=body,proto3" json:"body,omitempty"` Signature []byte `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"` CreatedAt int64 `protobuf:"varint,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` ReadAt int64 `protobuf:"varint,7,opt,name=read_at,json=readAt,proto3" json:"read_at,omitempty"` } func (x *Message) Reset() { *x = Message{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Message) String() string { return protoimpl.X.MessageStringOf(x) } func (*Message) ProtoMessage() {} func (x *Message) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 Message.ProtoReflect.Descriptor instead. func (*Message) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{6} } func (x *Message) GetId() string { if x != nil { return x.Id } return "" } func (x *Message) GetFrom() string { if x != nil { return x.From } return "" } func (x *Message) GetTo() string { if x != nil { return x.To } return "" } func (x *Message) GetBody() []byte { if x != nil { return x.Body } return nil } func (x *Message) GetSignature() []byte { if x != nil { return x.Signature } return nil } func (x *Message) GetCreatedAt() int64 { if x != nil { return x.CreatedAt } return 0 } func (x *Message) GetReadAt() int64 { if x != nil { return x.ReadAt } return 0 } type SendMessageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields To string `protobuf:"bytes,1,opt,name=to,proto3" json:"to,omitempty"` ToBody []byte `protobuf:"bytes,2,opt,name=to_body,json=toBody,proto3" json:"to_body,omitempty"` ToSignature []byte `protobuf:"bytes,3,opt,name=to_signature,json=toSignature,proto3" json:"to_signature,omitempty"` FromBody []byte `protobuf:"bytes,4,opt,name=from_body,json=fromBody,proto3" json:"from_body,omitempty"` FromSignature []byte `protobuf:"bytes,5,opt,name=from_signature,json=fromSignature,proto3" json:"from_signature,omitempty"` } func (x *SendMessageRequest) Reset() { *x = SendMessageRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SendMessageRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SendMessageRequest) ProtoMessage() {} func (x *SendMessageRequest) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 SendMessageRequest.ProtoReflect.Descriptor instead. func (*SendMessageRequest) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{7} } func (x *SendMessageRequest) GetTo() string { if x != nil { return x.To } return "" } func (x *SendMessageRequest) GetToBody() []byte { if x != nil { return x.ToBody } return nil } func (x *SendMessageRequest) GetToSignature() []byte { if x != nil { return x.ToSignature } return nil } func (x *SendMessageRequest) GetFromBody() []byte { if x != nil { return x.FromBody } return nil } func (x *SendMessageRequest) GetFromSignature() []byte { if x != nil { return x.FromSignature } return nil } type SendMessageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` } func (x *SendMessageResponse) Reset() { *x = SendMessageResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SendMessageResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SendMessageResponse) ProtoMessage() {} func (x *SendMessageResponse) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 SendMessageResponse.ProtoReflect.Descriptor instead. func (*SendMessageResponse) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{8} } func (x *SendMessageResponse) GetId() string { if x != nil { return x.Id } return "" } func (x *SendMessageResponse) GetCreatedAt() int64 { if x != nil { return x.CreatedAt } return 0 } type ListInboxMessagesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Seek string `protobuf:"bytes,1,opt,name=seek,proto3" json:"seek,omitempty"` Limit int64 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` Ascending bool `protobuf:"varint,3,opt,name=ascending,proto3" json:"ascending,omitempty"` Status ListInboxMessagesRequest_Status `protobuf:"varint,4,opt,name=status,proto3,enum=api.usersd.pb.ListInboxMessagesRequest_Status" json:"status,omitempty"` } func (x *ListInboxMessagesRequest) Reset() { *x = ListInboxMessagesRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListInboxMessagesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListInboxMessagesRequest) ProtoMessage() {} func (x *ListInboxMessagesRequest) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 ListInboxMessagesRequest.ProtoReflect.Descriptor instead. func (*ListInboxMessagesRequest) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{9} } func (x *ListInboxMessagesRequest) GetSeek() string { if x != nil { return x.Seek } return "" } func (x *ListInboxMessagesRequest) GetLimit() int64 { if x != nil { return x.Limit } return 0 } func (x *ListInboxMessagesRequest) GetAscending() bool { if x != nil { return x.Ascending } return false } func (x *ListInboxMessagesRequest) GetStatus() ListInboxMessagesRequest_Status { if x != nil { return x.Status } return ListInboxMessagesRequest_STATUS_UNSPECIFIED } type ListInboxMessagesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Messages []*Message `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"` } func (x *ListInboxMessagesResponse) Reset() { *x = ListInboxMessagesResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListInboxMessagesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListInboxMessagesResponse) ProtoMessage() {} func (x *ListInboxMessagesResponse) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 ListInboxMessagesResponse.ProtoReflect.Descriptor instead. func (*ListInboxMessagesResponse) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{10} } func (x *ListInboxMessagesResponse) GetMessages() []*Message { if x != nil { return x.Messages } return nil } type ListSentboxMessagesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Seek string `protobuf:"bytes,1,opt,name=seek,proto3" json:"seek,omitempty"` Limit int64 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` Ascending bool `protobuf:"varint,3,opt,name=ascending,proto3" json:"ascending,omitempty"` } func (x *ListSentboxMessagesRequest) Reset() { *x = ListSentboxMessagesRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListSentboxMessagesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListSentboxMessagesRequest) ProtoMessage() {} func (x *ListSentboxMessagesRequest) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 ListSentboxMessagesRequest.ProtoReflect.Descriptor instead. func (*ListSentboxMessagesRequest) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{11} } func (x *ListSentboxMessagesRequest) GetSeek() string { if x != nil { return x.Seek } return "" } func (x *ListSentboxMessagesRequest) GetLimit() int64 { if x != nil { return x.Limit } return 0 } func (x *ListSentboxMessagesRequest) GetAscending() bool { if x != nil { return x.Ascending } return false } type ListSentboxMessagesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Messages []*Message `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"` } func (x *ListSentboxMessagesResponse) Reset() { *x = ListSentboxMessagesResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListSentboxMessagesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListSentboxMessagesResponse) ProtoMessage() {} func (x *ListSentboxMessagesResponse) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 ListSentboxMessagesResponse.ProtoReflect.Descriptor instead. func (*ListSentboxMessagesResponse) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{12} } func (x *ListSentboxMessagesResponse) GetMessages() []*Message { if x != nil { return x.Messages } return nil } type ReadInboxMessageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } func (x *ReadInboxMessageRequest) Reset() { *x = ReadInboxMessageRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ReadInboxMessageRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ReadInboxMessageRequest) ProtoMessage() {} func (x *ReadInboxMessageRequest) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 ReadInboxMessageRequest.ProtoReflect.Descriptor instead. func (*ReadInboxMessageRequest) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{13} } func (x *ReadInboxMessageRequest) GetId() string { if x != nil { return x.Id } return "" } type ReadInboxMessageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ReadAt int64 `protobuf:"varint,1,opt,name=read_at,json=readAt,proto3" json:"read_at,omitempty"` } func (x *ReadInboxMessageResponse) Reset() { *x = ReadInboxMessageResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ReadInboxMessageResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ReadInboxMessageResponse) ProtoMessage() {} func (x *ReadInboxMessageResponse) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 ReadInboxMessageResponse.ProtoReflect.Descriptor instead. func (*ReadInboxMessageResponse) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{14} } func (x *ReadInboxMessageResponse) GetReadAt() int64 { if x != nil { return x.ReadAt } return 0 } type DeleteInboxMessageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } func (x *DeleteInboxMessageRequest) Reset() { *x = DeleteInboxMessageRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteInboxMessageRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteInboxMessageRequest) ProtoMessage() {} func (x *DeleteInboxMessageRequest) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 DeleteInboxMessageRequest.ProtoReflect.Descriptor instead. func (*DeleteInboxMessageRequest) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{15} } func (x *DeleteInboxMessageRequest) GetId() string { if x != nil { return x.Id } return "" } type DeleteInboxMessageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteInboxMessageResponse) Reset() { *x = DeleteInboxMessageResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteInboxMessageResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteInboxMessageResponse) ProtoMessage() {} func (x *DeleteInboxMessageResponse) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 DeleteInboxMessageResponse.ProtoReflect.Descriptor instead. func (*DeleteInboxMessageResponse) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{16} } type DeleteSentboxMessageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } func (x *DeleteSentboxMessageRequest) Reset() { *x = DeleteSentboxMessageRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteSentboxMessageRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteSentboxMessageRequest) ProtoMessage() {} func (x *DeleteSentboxMessageRequest) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 DeleteSentboxMessageRequest.ProtoReflect.Descriptor instead. func (*DeleteSentboxMessageRequest) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{17} } func (x *DeleteSentboxMessageRequest) GetId() string { if x != nil { return x.Id } return "" } type DeleteSentboxMessageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteSentboxMessageResponse) Reset() { *x = DeleteSentboxMessageResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteSentboxMessageResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteSentboxMessageResponse) ProtoMessage() {} func (x *DeleteSentboxMessageResponse) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 DeleteSentboxMessageResponse.ProtoReflect.Descriptor instead. func (*DeleteSentboxMessageResponse) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{18} } type GetUsageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } func (x *GetUsageRequest) Reset() { *x = GetUsageRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetUsageRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetUsageRequest) ProtoMessage() {} func (x *GetUsageRequest) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 GetUsageRequest.ProtoReflect.Descriptor instead. func (*GetUsageRequest) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{19} } func (x *GetUsageRequest) GetKey() string { if x != nil { return x.Key } return "" } type GetUsageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Customer *pb.GetCustomerResponse `protobuf:"bytes,1,opt,name=customer,proto3" json:"customer,omitempty"` Usage *pb.GetCustomerUsageResponse `protobuf:"bytes,2,opt,name=usage,proto3" json:"usage,omitempty"` } func (x *GetUsageResponse) Reset() { *x = GetUsageResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetUsageResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetUsageResponse) ProtoMessage() {} func (x *GetUsageResponse) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_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 GetUsageResponse.ProtoReflect.Descriptor instead. func (*GetUsageResponse) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{20} } func (x *GetUsageResponse) GetCustomer() *pb.GetCustomerResponse { if x != nil { return x.Customer } return nil } func (x *GetUsageResponse) GetUsage() *pb.GetCustomerUsageResponse { if x != nil { return x.Usage } return nil } type ArchivesLsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ArchivesLsRequest) Reset() { *x = ArchivesLsRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchivesLsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchivesLsRequest) ProtoMessage() {} func (x *ArchivesLsRequest) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_proto_msgTypes[21] 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 ArchivesLsRequest.ProtoReflect.Descriptor instead. func (*ArchivesLsRequest) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{21} } type ArchivesLsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Archives []*ArchiveLsItem `protobuf:"bytes,1,rep,name=archives,proto3" json:"archives,omitempty"` } func (x *ArchivesLsResponse) Reset() { *x = ArchivesLsResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchivesLsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchivesLsResponse) ProtoMessage() {} func (x *ArchivesLsResponse) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_proto_msgTypes[22] 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 ArchivesLsResponse.ProtoReflect.Descriptor instead. func (*ArchivesLsResponse) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{22} } func (x *ArchivesLsResponse) GetArchives() []*ArchiveLsItem { if x != nil { return x.Archives } return nil } type ArchiveLsItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Cid string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"` Info []*ArchiveLsItemMetadata `protobuf:"bytes,2,rep,name=info,proto3" json:"info,omitempty"` } func (x *ArchiveLsItem) Reset() { *x = ArchiveLsItem{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchiveLsItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchiveLsItem) ProtoMessage() {} func (x *ArchiveLsItem) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_proto_msgTypes[23] 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 ArchiveLsItem.ProtoReflect.Descriptor instead. func (*ArchiveLsItem) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{23} } func (x *ArchiveLsItem) GetCid() string { if x != nil { return x.Cid } return "" } func (x *ArchiveLsItem) GetInfo() []*ArchiveLsItemMetadata { if x != nil { return x.Info } return nil } type ArchiveLsItemMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DealId uint64 `protobuf:"varint,1,opt,name=deal_id,json=dealId,proto3" json:"deal_id,omitempty"` } func (x *ArchiveLsItemMetadata) Reset() { *x = ArchiveLsItemMetadata{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchiveLsItemMetadata) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchiveLsItemMetadata) ProtoMessage() {} func (x *ArchiveLsItemMetadata) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_proto_msgTypes[24] 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 ArchiveLsItemMetadata.ProtoReflect.Descriptor instead. func (*ArchiveLsItemMetadata) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{24} } func (x *ArchiveLsItemMetadata) GetDealId() uint64 { if x != nil { return x.DealId } return 0 } type ArchivesImportRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Cid string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"` DealIds []uint64 `protobuf:"varint,2,rep,packed,name=deal_ids,json=dealIds,proto3" json:"deal_ids,omitempty"` } func (x *ArchivesImportRequest) Reset() { *x = ArchivesImportRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchivesImportRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchivesImportRequest) ProtoMessage() {} func (x *ArchivesImportRequest) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_proto_msgTypes[25] 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 ArchivesImportRequest.ProtoReflect.Descriptor instead. func (*ArchivesImportRequest) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{25} } func (x *ArchivesImportRequest) GetCid() string { if x != nil { return x.Cid } return "" } func (x *ArchivesImportRequest) GetDealIds() []uint64 { if x != nil { return x.DealIds } return nil } type ArchivesImportResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ArchivesImportResponse) Reset() { *x = ArchivesImportResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchivesImportResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchivesImportResponse) ProtoMessage() {} func (x *ArchivesImportResponse) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_proto_msgTypes[26] 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 ArchivesImportResponse.ProtoReflect.Descriptor instead. func (*ArchivesImportResponse) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{26} } type ArchiveRetrievalLsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ArchiveRetrievalLsRequest) Reset() { *x = ArchiveRetrievalLsRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchiveRetrievalLsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchiveRetrievalLsRequest) ProtoMessage() {} func (x *ArchiveRetrievalLsRequest) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_proto_msgTypes[27] 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 ArchiveRetrievalLsRequest.ProtoReflect.Descriptor instead. func (*ArchiveRetrievalLsRequest) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{27} } type ArchiveRetrievalLsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Retrievals []*ArchiveRetrievalLsItem `protobuf:"bytes,1,rep,name=retrievals,proto3" json:"retrievals,omitempty"` } func (x *ArchiveRetrievalLsResponse) Reset() { *x = ArchiveRetrievalLsResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchiveRetrievalLsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchiveRetrievalLsResponse) ProtoMessage() {} func (x *ArchiveRetrievalLsResponse) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_proto_msgTypes[28] 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 ArchiveRetrievalLsResponse.ProtoReflect.Descriptor instead. func (*ArchiveRetrievalLsResponse) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{28} } func (x *ArchiveRetrievalLsResponse) GetRetrievals() []*ArchiveRetrievalLsItem { if x != nil { return x.Retrievals } return nil } type ArchiveRetrievalLsItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Cid string `protobuf:"bytes,2,opt,name=cid,proto3" json:"cid,omitempty"` Status ArchiveRetrievalStatus `protobuf:"varint,3,opt,name=status,proto3,enum=api.usersd.pb.ArchiveRetrievalStatus" json:"status,omitempty"` FailureCause string `protobuf:"bytes,4,opt,name=failure_cause,json=failureCause,proto3" json:"failure_cause,omitempty"` CreatedAt int64 `protobuf:"varint,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Types that are assignable to RetrievalType: // *ArchiveRetrievalLsItem_NewBucket RetrievalType isArchiveRetrievalLsItem_RetrievalType `protobuf_oneof:"retrieval_type"` } func (x *ArchiveRetrievalLsItem) Reset() { *x = ArchiveRetrievalLsItem{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchiveRetrievalLsItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchiveRetrievalLsItem) ProtoMessage() {} func (x *ArchiveRetrievalLsItem) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_proto_msgTypes[29] 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 ArchiveRetrievalLsItem.ProtoReflect.Descriptor instead. func (*ArchiveRetrievalLsItem) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{29} } func (x *ArchiveRetrievalLsItem) GetId() string { if x != nil { return x.Id } return "" } func (x *ArchiveRetrievalLsItem) GetCid() string { if x != nil { return x.Cid } return "" } func (x *ArchiveRetrievalLsItem) GetStatus() ArchiveRetrievalStatus { if x != nil { return x.Status } return ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_UNSPECIFIED } func (x *ArchiveRetrievalLsItem) GetFailureCause() string { if x != nil { return x.FailureCause } return "" } func (x *ArchiveRetrievalLsItem) GetCreatedAt() int64 { if x != nil { return x.CreatedAt } return 0 } func (m *ArchiveRetrievalLsItem) GetRetrievalType() isArchiveRetrievalLsItem_RetrievalType { if m != nil { return m.RetrievalType } return nil } func (x *ArchiveRetrievalLsItem) GetNewBucket() *ArchiveRetrievalLsItemNewBucket { if x, ok := x.GetRetrievalType().(*ArchiveRetrievalLsItem_NewBucket); ok { return x.NewBucket } return nil } type isArchiveRetrievalLsItem_RetrievalType interface { isArchiveRetrievalLsItem_RetrievalType() } type ArchiveRetrievalLsItem_NewBucket struct { NewBucket *ArchiveRetrievalLsItemNewBucket `protobuf:"bytes,6,opt,name=new_bucket,json=newBucket,proto3,oneof"` } func (*ArchiveRetrievalLsItem_NewBucket) isArchiveRetrievalLsItem_RetrievalType() {} type ArchiveRetrievalLsItemNewBucket struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Private bool `protobuf:"varint,2,opt,name=private,proto3" json:"private,omitempty"` } func (x *ArchiveRetrievalLsItemNewBucket) Reset() { *x = ArchiveRetrievalLsItemNewBucket{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchiveRetrievalLsItemNewBucket) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchiveRetrievalLsItemNewBucket) ProtoMessage() {} func (x *ArchiveRetrievalLsItemNewBucket) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_proto_msgTypes[30] 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 ArchiveRetrievalLsItemNewBucket.ProtoReflect.Descriptor instead. func (*ArchiveRetrievalLsItemNewBucket) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{30} } func (x *ArchiveRetrievalLsItemNewBucket) GetName() string { if x != nil { return x.Name } return "" } func (x *ArchiveRetrievalLsItemNewBucket) GetPrivate() bool { if x != nil { return x.Private } return false } type ArchiveRetrievalLogsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } func (x *ArchiveRetrievalLogsRequest) Reset() { *x = ArchiveRetrievalLogsRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchiveRetrievalLogsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchiveRetrievalLogsRequest) ProtoMessage() {} func (x *ArchiveRetrievalLogsRequest) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_proto_msgTypes[31] 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 ArchiveRetrievalLogsRequest.ProtoReflect.Descriptor instead. func (*ArchiveRetrievalLogsRequest) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{31} } func (x *ArchiveRetrievalLogsRequest) GetId() string { if x != nil { return x.Id } return "" } type ArchiveRetrievalLogsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` } func (x *ArchiveRetrievalLogsResponse) Reset() { *x = ArchiveRetrievalLogsResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_usersd_pb_usersd_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArchiveRetrievalLogsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArchiveRetrievalLogsResponse) ProtoMessage() {} func (x *ArchiveRetrievalLogsResponse) ProtoReflect() protoreflect.Message { mi := &file_api_usersd_pb_usersd_proto_msgTypes[32] 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 ArchiveRetrievalLogsResponse.ProtoReflect.Descriptor instead. func (*ArchiveRetrievalLogsResponse) Descriptor() ([]byte, []int) { return file_api_usersd_pb_usersd_proto_rawDescGZIP(), []int{32} } func (x *ArchiveRetrievalLogsResponse) GetMsg() string { if x != nil { return x.Msg } return "" } var File_api_usersd_pb_usersd_proto protoreflect.FileDescriptor var file_api_usersd_pb_usersd_proto_rawDesc = []byte{ 0x0a, 0x1a, 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2f, 0x70, 0x62, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x1a, 0x1e, 0x61, 0x70, 0x69, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2f, 0x70, 0x62, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x14, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4b, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x26, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x05, 0x69, 0x73, 0x5f, 0x64, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x44, 0x62, 0x22, 0x15, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x75, 0x70, 0x4d, 0x61, 0x69, 0x6c, 0x62, 0x6f, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x35, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x75, 0x70, 0x4d, 0x61, 0x69, 0x6c, 0x62, 0x6f, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x69, 0x6c, 0x62, 0x6f, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x6d, 0x61, 0x69, 0x6c, 0x62, 0x6f, 0x78, 0x49, 0x64, 0x22, 0xa7, 0x01, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x41, 0x74, 0x22, 0xa4, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6f, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x74, 0x6f, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x74, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x66, 0x72, 0x6f, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x44, 0x0a, 0x13, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x80, 0x02, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x65, 0x65, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x65, 0x65, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x46, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x54, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x52, 0x45, 0x41, 0x44, 0x10, 0x03, 0x22, 0x4f, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0x64, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6e, 0x74, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x65, 0x65, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x65, 0x65, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x51, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6e, 0x74, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0x29, 0x0a, 0x17, 0x52, 0x65, 0x61, 0x64, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x33, 0x0a, 0x18, 0x52, 0x65, 0x61, 0x64, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x41, 0x74, 0x22, 0x2b, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x1e, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x95, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x08, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x22, 0x13, 0x0a, 0x11, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x4c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4e, 0x0a, 0x12, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x4c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4c, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x22, 0x5b, 0x0a, 0x0d, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4c, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4c, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x30, 0x0a, 0x15, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4c, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x65, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x64, 0x65, 0x61, 0x6c, 0x49, 0x64, 0x22, 0x44, 0x0a, 0x15, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x65, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x64, 0x65, 0x61, 0x6c, 0x49, 0x64, 0x73, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x4c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x63, 0x0a, 0x1a, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x4c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x4c, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x73, 0x22, 0xa0, 0x02, 0x0a, 0x16, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x4c, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x63, 0x61, 0x75, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x43, 0x61, 0x75, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x4f, 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x4c, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x65, 0x77, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x4f, 0x0a, 0x1f, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x4c, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x65, 0x77, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x22, 0x2d, 0x0a, 0x1b, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x30, 0x0a, 0x1c, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x2a, 0xac, 0x02, 0x0a, 0x16, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x5f, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x5f, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x44, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x5f, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x5f, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x54, 0x4f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x03, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x5f, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x5f, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x5f, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x06, 0x32, 0xf1, 0x0a, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x50, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x75, 0x70, 0x4d, 0x61, 0x69, 0x6c, 0x62, 0x6f, 0x78, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x75, 0x70, 0x4d, 0x61, 0x69, 0x6c, 0x62, 0x6f, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x75, 0x70, 0x4d, 0x61, 0x69, 0x6c, 0x62, 0x6f, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x68, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6e, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6e, 0x74, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6e, 0x74, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6e, 0x74, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x10, 0x52, 0x65, 0x61, 0x64, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6b, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x71, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x62, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0a, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x4c, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x4c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x4c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x0e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6b, 0x0a, 0x12, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x4c, 0x73, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x4c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x4c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x14, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x69, 0x6f, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_api_usersd_pb_usersd_proto_rawDescOnce sync.Once file_api_usersd_pb_usersd_proto_rawDescData = file_api_usersd_pb_usersd_proto_rawDesc ) func file_api_usersd_pb_usersd_proto_rawDescGZIP() []byte { file_api_usersd_pb_usersd_proto_rawDescOnce.Do(func() { file_api_usersd_pb_usersd_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_usersd_pb_usersd_proto_rawDescData) }) return file_api_usersd_pb_usersd_proto_rawDescData } var file_api_usersd_pb_usersd_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_api_usersd_pb_usersd_proto_msgTypes = make([]protoimpl.MessageInfo, 33) var file_api_usersd_pb_usersd_proto_goTypes = []interface{}{ (ArchiveRetrievalStatus)(0), // 0: api.usersd.pb.ArchiveRetrievalStatus (ListInboxMessagesRequest_Status)(0), // 1: api.usersd.pb.ListInboxMessagesRequest.Status (*ListThreadsRequest)(nil), // 2: api.usersd.pb.ListThreadsRequest (*ListThreadsResponse)(nil), // 3: api.usersd.pb.ListThreadsResponse (*GetThreadRequest)(nil), // 4: api.usersd.pb.GetThreadRequest (*GetThreadResponse)(nil), // 5: api.usersd.pb.GetThreadResponse (*SetupMailboxRequest)(nil), // 6: api.usersd.pb.SetupMailboxRequest (*SetupMailboxResponse)(nil), // 7: api.usersd.pb.SetupMailboxResponse (*Message)(nil), // 8: api.usersd.pb.Message (*SendMessageRequest)(nil), // 9: api.usersd.pb.SendMessageRequest (*SendMessageResponse)(nil), // 10: api.usersd.pb.SendMessageResponse (*ListInboxMessagesRequest)(nil), // 11: api.usersd.pb.ListInboxMessagesRequest (*ListInboxMessagesResponse)(nil), // 12: api.usersd.pb.ListInboxMessagesResponse (*ListSentboxMessagesRequest)(nil), // 13: api.usersd.pb.ListSentboxMessagesRequest (*ListSentboxMessagesResponse)(nil), // 14: api.usersd.pb.ListSentboxMessagesResponse (*ReadInboxMessageRequest)(nil), // 15: api.usersd.pb.ReadInboxMessageRequest (*ReadInboxMessageResponse)(nil), // 16: api.usersd.pb.ReadInboxMessageResponse (*DeleteInboxMessageRequest)(nil), // 17: api.usersd.pb.DeleteInboxMessageRequest (*DeleteInboxMessageResponse)(nil), // 18: api.usersd.pb.DeleteInboxMessageResponse (*DeleteSentboxMessageRequest)(nil), // 19: api.usersd.pb.DeleteSentboxMessageRequest (*DeleteSentboxMessageResponse)(nil), // 20: api.usersd.pb.DeleteSentboxMessageResponse (*GetUsageRequest)(nil), // 21: api.usersd.pb.GetUsageRequest (*GetUsageResponse)(nil), // 22: api.usersd.pb.GetUsageResponse (*ArchivesLsRequest)(nil), // 23: api.usersd.pb.ArchivesLsRequest (*ArchivesLsResponse)(nil), // 24: api.usersd.pb.ArchivesLsResponse (*ArchiveLsItem)(nil), // 25: api.usersd.pb.ArchiveLsItem (*ArchiveLsItemMetadata)(nil), // 26: api.usersd.pb.ArchiveLsItemMetadata (*ArchivesImportRequest)(nil), // 27: api.usersd.pb.ArchivesImportRequest (*ArchivesImportResponse)(nil), // 28: api.usersd.pb.ArchivesImportResponse (*ArchiveRetrievalLsRequest)(nil), // 29: api.usersd.pb.ArchiveRetrievalLsRequest (*ArchiveRetrievalLsResponse)(nil), // 30: api.usersd.pb.ArchiveRetrievalLsResponse (*ArchiveRetrievalLsItem)(nil), // 31: api.usersd.pb.ArchiveRetrievalLsItem (*ArchiveRetrievalLsItemNewBucket)(nil), // 32: api.usersd.pb.ArchiveRetrievalLsItemNewBucket (*ArchiveRetrievalLogsRequest)(nil), // 33: api.usersd.pb.ArchiveRetrievalLogsRequest (*ArchiveRetrievalLogsResponse)(nil), // 34: api.usersd.pb.ArchiveRetrievalLogsResponse (*pb.GetCustomerResponse)(nil), // 35: api.billingd.pb.GetCustomerResponse (*pb.GetCustomerUsageResponse)(nil), // 36: api.billingd.pb.GetCustomerUsageResponse } var file_api_usersd_pb_usersd_proto_depIdxs = []int32{ 5, // 0: api.usersd.pb.ListThreadsResponse.list:type_name -> api.usersd.pb.GetThreadResponse 1, // 1: api.usersd.pb.ListInboxMessagesRequest.status:type_name -> api.usersd.pb.ListInboxMessagesRequest.Status 8, // 2: api.usersd.pb.ListInboxMessagesResponse.messages:type_name -> api.usersd.pb.Message 8, // 3: api.usersd.pb.ListSentboxMessagesResponse.messages:type_name -> api.usersd.pb.Message 35, // 4: api.usersd.pb.GetUsageResponse.customer:type_name -> api.billingd.pb.GetCustomerResponse 36, // 5: api.usersd.pb.GetUsageResponse.usage:type_name -> api.billingd.pb.GetCustomerUsageResponse 25, // 6: api.usersd.pb.ArchivesLsResponse.archives:type_name -> api.usersd.pb.ArchiveLsItem 26, // 7: api.usersd.pb.ArchiveLsItem.info:type_name -> api.usersd.pb.ArchiveLsItemMetadata 31, // 8: api.usersd.pb.ArchiveRetrievalLsResponse.retrievals:type_name -> api.usersd.pb.ArchiveRetrievalLsItem 0, // 9: api.usersd.pb.ArchiveRetrievalLsItem.status:type_name -> api.usersd.pb.ArchiveRetrievalStatus 32, // 10: api.usersd.pb.ArchiveRetrievalLsItem.new_bucket:type_name -> api.usersd.pb.ArchiveRetrievalLsItemNewBucket 4, // 11: api.usersd.pb.APIService.GetThread:input_type -> api.usersd.pb.GetThreadRequest 2, // 12: api.usersd.pb.APIService.ListThreads:input_type -> api.usersd.pb.ListThreadsRequest 6, // 13: api.usersd.pb.APIService.SetupMailbox:input_type -> api.usersd.pb.SetupMailboxRequest 9, // 14: api.usersd.pb.APIService.SendMessage:input_type -> api.usersd.pb.SendMessageRequest 11, // 15: api.usersd.pb.APIService.ListInboxMessages:input_type -> api.usersd.pb.ListInboxMessagesRequest 13, // 16: api.usersd.pb.APIService.ListSentboxMessages:input_type -> api.usersd.pb.ListSentboxMessagesRequest 15, // 17: api.usersd.pb.APIService.ReadInboxMessage:input_type -> api.usersd.pb.ReadInboxMessageRequest 17, // 18: api.usersd.pb.APIService.DeleteInboxMessage:input_type -> api.usersd.pb.DeleteInboxMessageRequest 19, // 19: api.usersd.pb.APIService.DeleteSentboxMessage:input_type -> api.usersd.pb.DeleteSentboxMessageRequest 21, // 20: api.usersd.pb.APIService.GetUsage:input_type -> api.usersd.pb.GetUsageRequest 23, // 21: api.usersd.pb.APIService.ArchivesLs:input_type -> api.usersd.pb.ArchivesLsRequest 27, // 22: api.usersd.pb.APIService.ArchivesImport:input_type -> api.usersd.pb.ArchivesImportRequest 29, // 23: api.usersd.pb.APIService.ArchiveRetrievalLs:input_type -> api.usersd.pb.ArchiveRetrievalLsRequest 33, // 24: api.usersd.pb.APIService.ArchiveRetrievalLogs:input_type -> api.usersd.pb.ArchiveRetrievalLogsRequest 5, // 25: api.usersd.pb.APIService.GetThread:output_type -> api.usersd.pb.GetThreadResponse 3, // 26: api.usersd.pb.APIService.ListThreads:output_type -> api.usersd.pb.ListThreadsResponse 7, // 27: api.usersd.pb.APIService.SetupMailbox:output_type -> api.usersd.pb.SetupMailboxResponse 10, // 28: api.usersd.pb.APIService.SendMessage:output_type -> api.usersd.pb.SendMessageResponse 12, // 29: api.usersd.pb.APIService.ListInboxMessages:output_type -> api.usersd.pb.ListInboxMessagesResponse 14, // 30: api.usersd.pb.APIService.ListSentboxMessages:output_type -> api.usersd.pb.ListSentboxMessagesResponse 16, // 31: api.usersd.pb.APIService.ReadInboxMessage:output_type -> api.usersd.pb.ReadInboxMessageResponse 18, // 32: api.usersd.pb.APIService.DeleteInboxMessage:output_type -> api.usersd.pb.DeleteInboxMessageResponse 20, // 33: api.usersd.pb.APIService.DeleteSentboxMessage:output_type -> api.usersd.pb.DeleteSentboxMessageResponse 22, // 34: api.usersd.pb.APIService.GetUsage:output_type -> api.usersd.pb.GetUsageResponse 24, // 35: api.usersd.pb.APIService.ArchivesLs:output_type -> api.usersd.pb.ArchivesLsResponse 28, // 36: api.usersd.pb.APIService.ArchivesImport:output_type -> api.usersd.pb.ArchivesImportResponse 30, // 37: api.usersd.pb.APIService.ArchiveRetrievalLs:output_type -> api.usersd.pb.ArchiveRetrievalLsResponse 34, // 38: api.usersd.pb.APIService.ArchiveRetrievalLogs:output_type -> api.usersd.pb.ArchiveRetrievalLogsResponse 25, // [25:39] is the sub-list for method output_type 11, // [11:25] is the sub-list for method input_type 11, // [11:11] is the sub-list for extension type_name 11, // [11:11] is the sub-list for extension extendee 0, // [0:11] is the sub-list for field type_name } func init() { file_api_usersd_pb_usersd_proto_init() } func file_api_usersd_pb_usersd_proto_init() { if File_api_usersd_pb_usersd_proto != nil { return } if !protoimpl.UnsafeEnabled { file_api_usersd_pb_usersd_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListThreadsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListThreadsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetThreadRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetThreadResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetupMailboxRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetupMailboxResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Message); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendMessageRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendMessageResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListInboxMessagesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListInboxMessagesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListSentboxMessagesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListSentboxMessagesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReadInboxMessageRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReadInboxMessageResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteInboxMessageRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteInboxMessageResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteSentboxMessageRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteSentboxMessageResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetUsageRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetUsageResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchivesLsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchivesLsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchiveLsItem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchiveLsItemMetadata); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchivesImportRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchivesImportResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchiveRetrievalLsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchiveRetrievalLsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchiveRetrievalLsItem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchiveRetrievalLsItemNewBucket); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchiveRetrievalLogsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_api_usersd_pb_usersd_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArchiveRetrievalLogsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_api_usersd_pb_usersd_proto_msgTypes[29].OneofWrappers = []interface{}{ (*ArchiveRetrievalLsItem_NewBucket)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_api_usersd_pb_usersd_proto_rawDesc, NumEnums: 2, NumMessages: 33, NumExtensions: 0, NumServices: 1, }, GoTypes: file_api_usersd_pb_usersd_proto_goTypes, DependencyIndexes: file_api_usersd_pb_usersd_proto_depIdxs, EnumInfos: file_api_usersd_pb_usersd_proto_enumTypes, MessageInfos: file_api_usersd_pb_usersd_proto_msgTypes, }.Build() File_api_usersd_pb_usersd_proto = out.File file_api_usersd_pb_usersd_proto_rawDesc = nil file_api_usersd_pb_usersd_proto_goTypes = nil file_api_usersd_pb_usersd_proto_depIdxs = nil } // Reference imports to suppress errors if they are not otherwise used. var _ context.Context var _ grpc.ClientConnInterface // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. const _ = grpc.SupportPackageIsVersion6 // APIServiceClient is the client API for APIService service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type APIServiceClient interface { GetThread(ctx context.Context, in *GetThreadRequest, opts ...grpc.CallOption) (*GetThreadResponse, error) ListThreads(ctx context.Context, in *ListThreadsRequest, opts ...grpc.CallOption) (*ListThreadsResponse, error) SetupMailbox(ctx context.Context, in *SetupMailboxRequest, opts ...grpc.CallOption) (*SetupMailboxResponse, error) SendMessage(ctx context.Context, in *SendMessageRequest, opts ...grpc.CallOption) (*SendMessageResponse, error) ListInboxMessages(ctx context.Context, in *ListInboxMessagesRequest, opts ...grpc.CallOption) (*ListInboxMessagesResponse, error) ListSentboxMessages(ctx context.Context, in *ListSentboxMessagesRequest, opts ...grpc.CallOption) (*ListSentboxMessagesResponse, error) ReadInboxMessage(ctx context.Context, in *ReadInboxMessageRequest, opts ...grpc.CallOption) (*ReadInboxMessageResponse, error) DeleteInboxMessage(ctx context.Context, in *DeleteInboxMessageRequest, opts ...grpc.CallOption) (*DeleteInboxMessageResponse, error) DeleteSentboxMessage(ctx context.Context, in *DeleteSentboxMessageRequest, opts ...grpc.CallOption) (*DeleteSentboxMessageResponse, error) GetUsage(ctx context.Context, in *GetUsageRequest, opts ...grpc.CallOption) (*GetUsageResponse, error) // Archives Import ArchivesLs(ctx context.Context, in *ArchivesLsRequest, opts ...grpc.CallOption) (*ArchivesLsResponse, error) ArchivesImport(ctx context.Context, in *ArchivesImportRequest, opts ...grpc.CallOption) (*ArchivesImportResponse, error) // Archive Retrieval ArchiveRetrievalLs(ctx context.Context, in *ArchiveRetrievalLsRequest, opts ...grpc.CallOption) (*ArchiveRetrievalLsResponse, error) ArchiveRetrievalLogs(ctx context.Context, in *ArchiveRetrievalLogsRequest, opts ...grpc.CallOption) (APIService_ArchiveRetrievalLogsClient, error) } type aPIServiceClient struct { cc grpc.ClientConnInterface } func NewAPIServiceClient(cc grpc.ClientConnInterface) APIServiceClient { return &aPIServiceClient{cc} } func (c *aPIServiceClient) GetThread(ctx context.Context, in *GetThreadRequest, opts ...grpc.CallOption) (*GetThreadResponse, error) { out := new(GetThreadResponse) err := c.cc.Invoke(ctx, "/api.usersd.pb.APIService/GetThread", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) ListThreads(ctx context.Context, in *ListThreadsRequest, opts ...grpc.CallOption) (*ListThreadsResponse, error) { out := new(ListThreadsResponse) err := c.cc.Invoke(ctx, "/api.usersd.pb.APIService/ListThreads", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) SetupMailbox(ctx context.Context, in *SetupMailboxRequest, opts ...grpc.CallOption) (*SetupMailboxResponse, error) { out := new(SetupMailboxResponse) err := c.cc.Invoke(ctx, "/api.usersd.pb.APIService/SetupMailbox", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) SendMessage(ctx context.Context, in *SendMessageRequest, opts ...grpc.CallOption) (*SendMessageResponse, error) { out := new(SendMessageResponse) err := c.cc.Invoke(ctx, "/api.usersd.pb.APIService/SendMessage", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) ListInboxMessages(ctx context.Context, in *ListInboxMessagesRequest, opts ...grpc.CallOption) (*ListInboxMessagesResponse, error) { out := new(ListInboxMessagesResponse) err := c.cc.Invoke(ctx, "/api.usersd.pb.APIService/ListInboxMessages", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) ListSentboxMessages(ctx context.Context, in *ListSentboxMessagesRequest, opts ...grpc.CallOption) (*ListSentboxMessagesResponse, error) { out := new(ListSentboxMessagesResponse) err := c.cc.Invoke(ctx, "/api.usersd.pb.APIService/ListSentboxMessages", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) ReadInboxMessage(ctx context.Context, in *ReadInboxMessageRequest, opts ...grpc.CallOption) (*ReadInboxMessageResponse, error) { out := new(ReadInboxMessageResponse) err := c.cc.Invoke(ctx, "/api.usersd.pb.APIService/ReadInboxMessage", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) DeleteInboxMessage(ctx context.Context, in *DeleteInboxMessageRequest, opts ...grpc.CallOption) (*DeleteInboxMessageResponse, error) { out := new(DeleteInboxMessageResponse) err := c.cc.Invoke(ctx, "/api.usersd.pb.APIService/DeleteInboxMessage", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) DeleteSentboxMessage(ctx context.Context, in *DeleteSentboxMessageRequest, opts ...grpc.CallOption) (*DeleteSentboxMessageResponse, error) { out := new(DeleteSentboxMessageResponse) err := c.cc.Invoke(ctx, "/api.usersd.pb.APIService/DeleteSentboxMessage", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) GetUsage(ctx context.Context, in *GetUsageRequest, opts ...grpc.CallOption) (*GetUsageResponse, error) { out := new(GetUsageResponse) err := c.cc.Invoke(ctx, "/api.usersd.pb.APIService/GetUsage", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) ArchivesLs(ctx context.Context, in *ArchivesLsRequest, opts ...grpc.CallOption) (*ArchivesLsResponse, error) { out := new(ArchivesLsResponse) err := c.cc.Invoke(ctx, "/api.usersd.pb.APIService/ArchivesLs", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) ArchivesImport(ctx context.Context, in *ArchivesImportRequest, opts ...grpc.CallOption) (*ArchivesImportResponse, error) { out := new(ArchivesImportResponse) err := c.cc.Invoke(ctx, "/api.usersd.pb.APIService/ArchivesImport", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) ArchiveRetrievalLs(ctx context.Context, in *ArchiveRetrievalLsRequest, opts ...grpc.CallOption) (*ArchiveRetrievalLsResponse, error) { out := new(ArchiveRetrievalLsResponse) err := c.cc.Invoke(ctx, "/api.usersd.pb.APIService/ArchiveRetrievalLs", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *aPIServiceClient) ArchiveRetrievalLogs(ctx context.Context, in *ArchiveRetrievalLogsRequest, opts ...grpc.CallOption) (APIService_ArchiveRetrievalLogsClient, error) { stream, err := c.cc.NewStream(ctx, &_APIService_serviceDesc.Streams[0], "/api.usersd.pb.APIService/ArchiveRetrievalLogs", opts...) if err != nil { return nil, err } x := &aPIServiceArchiveRetrievalLogsClient{stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } if err := x.ClientStream.CloseSend(); err != nil { return nil, err } return x, nil } type APIService_ArchiveRetrievalLogsClient interface { Recv() (*ArchiveRetrievalLogsResponse, error) grpc.ClientStream } type aPIServiceArchiveRetrievalLogsClient struct { grpc.ClientStream } func (x *aPIServiceArchiveRetrievalLogsClient) Recv() (*ArchiveRetrievalLogsResponse, error) { m := new(ArchiveRetrievalLogsResponse) if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err } return m, nil } // APIServiceServer is the server API for APIService service. type APIServiceServer interface { GetThread(context.Context, *GetThreadRequest) (*GetThreadResponse, error) ListThreads(context.Context, *ListThreadsRequest) (*ListThreadsResponse, error) SetupMailbox(context.Context, *SetupMailboxRequest) (*SetupMailboxResponse, error) SendMessage(context.Context, *SendMessageRequest) (*SendMessageResponse, error) ListInboxMessages(context.Context, *ListInboxMessagesRequest) (*ListInboxMessagesResponse, error) ListSentboxMessages(context.Context, *ListSentboxMessagesRequest) (*ListSentboxMessagesResponse, error) ReadInboxMessage(context.Context, *ReadInboxMessageRequest) (*ReadInboxMessageResponse, error) DeleteInboxMessage(context.Context, *DeleteInboxMessageRequest) (*DeleteInboxMessageResponse, error) DeleteSentboxMessage(context.Context, *DeleteSentboxMessageRequest) (*DeleteSentboxMessageResponse, error) GetUsage(context.Context, *GetUsageRequest) (*GetUsageResponse, error) // Archives Import ArchivesLs(context.Context, *ArchivesLsRequest) (*ArchivesLsResponse, error) ArchivesImport(context.Context, *ArchivesImportRequest) (*ArchivesImportResponse, error) // Archive Retrieval ArchiveRetrievalLs(context.Context, *ArchiveRetrievalLsRequest) (*ArchiveRetrievalLsResponse, error) ArchiveRetrievalLogs(*ArchiveRetrievalLogsRequest, APIService_ArchiveRetrievalLogsServer) error } // UnimplementedAPIServiceServer can be embedded to have forward compatible implementations. type UnimplementedAPIServiceServer struct { } func (*UnimplementedAPIServiceServer) GetThread(context.Context, *GetThreadRequest) (*GetThreadResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetThread not implemented") } func (*UnimplementedAPIServiceServer) ListThreads(context.Context, *ListThreadsRequest) (*ListThreadsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListThreads not implemented") } func (*UnimplementedAPIServiceServer) SetupMailbox(context.Context, *SetupMailboxRequest) (*SetupMailboxResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SetupMailbox not implemented") } func (*UnimplementedAPIServiceServer) SendMessage(context.Context, *SendMessageRequest) (*SendMessageResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SendMessage not implemented") } func (*UnimplementedAPIServiceServer) ListInboxMessages(context.Context, *ListInboxMessagesRequest) (*ListInboxMessagesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListInboxMessages not implemented") } func (*UnimplementedAPIServiceServer) ListSentboxMessages(context.Context, *ListSentboxMessagesRequest) (*ListSentboxMessagesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListSentboxMessages not implemented") } func (*UnimplementedAPIServiceServer) ReadInboxMessage(context.Context, *ReadInboxMessageRequest) (*ReadInboxMessageResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ReadInboxMessage not implemented") } func (*UnimplementedAPIServiceServer) DeleteInboxMessage(context.Context, *DeleteInboxMessageRequest) (*DeleteInboxMessageResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteInboxMessage not implemented") } func (*UnimplementedAPIServiceServer) DeleteSentboxMessage(context.Context, *DeleteSentboxMessageRequest) (*DeleteSentboxMessageResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteSentboxMessage not implemented") } func (*UnimplementedAPIServiceServer) GetUsage(context.Context, *GetUsageRequest) (*GetUsageResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetUsage not implemented") } func (*UnimplementedAPIServiceServer) ArchivesLs(context.Context, *ArchivesLsRequest) (*ArchivesLsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ArchivesLs not implemented") } func (*UnimplementedAPIServiceServer) ArchivesImport(context.Context, *ArchivesImportRequest) (*ArchivesImportResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ArchivesImport not implemented") } func (*UnimplementedAPIServiceServer) ArchiveRetrievalLs(context.Context, *ArchiveRetrievalLsRequest) (*ArchiveRetrievalLsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ArchiveRetrievalLs not implemented") } func (*UnimplementedAPIServiceServer) ArchiveRetrievalLogs(*ArchiveRetrievalLogsRequest, APIService_ArchiveRetrievalLogsServer) error { return status.Errorf(codes.Unimplemented, "method ArchiveRetrievalLogs not implemented") } func RegisterAPIServiceServer(s *grpc.Server, srv APIServiceServer) { s.RegisterService(&_APIService_serviceDesc, srv) } func _APIService_GetThread_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetThreadRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).GetThread(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.usersd.pb.APIService/GetThread", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).GetThread(ctx, req.(*GetThreadRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_ListThreads_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListThreadsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).ListThreads(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.usersd.pb.APIService/ListThreads", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).ListThreads(ctx, req.(*ListThreadsRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_SetupMailbox_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SetupMailboxRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).SetupMailbox(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.usersd.pb.APIService/SetupMailbox", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).SetupMailbox(ctx, req.(*SetupMailboxRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_SendMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SendMessageRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).SendMessage(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.usersd.pb.APIService/SendMessage", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).SendMessage(ctx, req.(*SendMessageRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_ListInboxMessages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListInboxMessagesRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).ListInboxMessages(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.usersd.pb.APIService/ListInboxMessages", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).ListInboxMessages(ctx, req.(*ListInboxMessagesRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_ListSentboxMessages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListSentboxMessagesRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).ListSentboxMessages(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.usersd.pb.APIService/ListSentboxMessages", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).ListSentboxMessages(ctx, req.(*ListSentboxMessagesRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_ReadInboxMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ReadInboxMessageRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).ReadInboxMessage(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.usersd.pb.APIService/ReadInboxMessage", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).ReadInboxMessage(ctx, req.(*ReadInboxMessageRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_DeleteInboxMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteInboxMessageRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).DeleteInboxMessage(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.usersd.pb.APIService/DeleteInboxMessage", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).DeleteInboxMessage(ctx, req.(*DeleteInboxMessageRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_DeleteSentboxMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteSentboxMessageRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).DeleteSentboxMessage(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.usersd.pb.APIService/DeleteSentboxMessage", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).DeleteSentboxMessage(ctx, req.(*DeleteSentboxMessageRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_GetUsage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetUsageRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).GetUsage(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.usersd.pb.APIService/GetUsage", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).GetUsage(ctx, req.(*GetUsageRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_ArchivesLs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ArchivesLsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).ArchivesLs(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.usersd.pb.APIService/ArchivesLs", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).ArchivesLs(ctx, req.(*ArchivesLsRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_ArchivesImport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ArchivesImportRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).ArchivesImport(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.usersd.pb.APIService/ArchivesImport", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).ArchivesImport(ctx, req.(*ArchivesImportRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_ArchiveRetrievalLs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ArchiveRetrievalLsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(APIServiceServer).ArchiveRetrievalLs(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/api.usersd.pb.APIService/ArchiveRetrievalLs", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(APIServiceServer).ArchiveRetrievalLs(ctx, req.(*ArchiveRetrievalLsRequest)) } return interceptor(ctx, in, info, handler) } func _APIService_ArchiveRetrievalLogs_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(ArchiveRetrievalLogsRequest) if err := stream.RecvMsg(m); err != nil { return err } return srv.(APIServiceServer).ArchiveRetrievalLogs(m, &aPIServiceArchiveRetrievalLogsServer{stream}) } type APIService_ArchiveRetrievalLogsServer interface { Send(*ArchiveRetrievalLogsResponse) error grpc.ServerStream } type aPIServiceArchiveRetrievalLogsServer struct { grpc.ServerStream } func (x *aPIServiceArchiveRetrievalLogsServer) Send(m *ArchiveRetrievalLogsResponse) error { return x.ServerStream.SendMsg(m) } var _APIService_serviceDesc = grpc.ServiceDesc{ ServiceName: "api.usersd.pb.APIService", HandlerType: (*APIServiceServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "GetThread", Handler: _APIService_GetThread_Handler, }, { MethodName: "ListThreads", Handler: _APIService_ListThreads_Handler, }, { MethodName: "SetupMailbox", Handler: _APIService_SetupMailbox_Handler, }, { MethodName: "SendMessage", Handler: _APIService_SendMessage_Handler, }, { MethodName: "ListInboxMessages", Handler: _APIService_ListInboxMessages_Handler, }, { MethodName: "ListSentboxMessages", Handler: _APIService_ListSentboxMessages_Handler, }, { MethodName: "ReadInboxMessage", Handler: _APIService_ReadInboxMessage_Handler, }, { MethodName: "DeleteInboxMessage", Handler: _APIService_DeleteInboxMessage_Handler, }, { MethodName: "DeleteSentboxMessage", Handler: _APIService_DeleteSentboxMessage_Handler, }, { MethodName: "GetUsage", Handler: _APIService_GetUsage_Handler, }, { MethodName: "ArchivesLs", Handler: _APIService_ArchivesLs_Handler, }, { MethodName: "ArchivesImport", Handler: _APIService_ArchivesImport_Handler, }, { MethodName: "ArchiveRetrievalLs", Handler: _APIService_ArchiveRetrievalLs_Handler, }, }, Streams: []grpc.StreamDesc{ { StreamName: "ArchiveRetrievalLogs", Handler: _APIService_ArchiveRetrievalLogs_Handler, ServerStreams: true, }, }, Metadata: "api/usersd/pb/usersd.proto", } ================================================ FILE: api/usersd/pb/usersd.proto ================================================ syntax = "proto3"; package api.usersd.pb; option go_package = "github.com/textileio/textile/v2/api/usersd/pb"; import "api/billingd/pb/billingd.proto"; message ListThreadsRequest {} message ListThreadsResponse { repeated GetThreadResponse list = 1; } message GetThreadRequest { string name = 1; } message GetThreadResponse { bytes id = 1; string name = 2; bool is_db = 3; } message SetupMailboxRequest {} message SetupMailboxResponse { bytes mailbox_id = 1; } message Message { string id = 1; string from = 2; string to = 3; bytes body = 4; bytes signature = 5; int64 created_at = 6; int64 read_at = 7; } message SendMessageRequest { string to = 1; bytes to_body = 2; bytes to_signature = 3; bytes from_body = 4; bytes from_signature = 5; } message SendMessageResponse { string id = 1; int64 created_at = 2; } message ListInboxMessagesRequest { string seek = 1; int64 limit = 2; bool ascending = 3; Status status = 4; enum Status { STATUS_UNSPECIFIED = 0; STATUS_ALL = 1; STATUS_READ = 2; STATUS_UNREAD = 3; } } message ListInboxMessagesResponse { repeated Message messages = 1; } message ListSentboxMessagesRequest { string seek = 1; int64 limit = 2; bool ascending = 3; } message ListSentboxMessagesResponse { repeated Message messages = 1; } message ReadInboxMessageRequest { string id = 1; } message ReadInboxMessageResponse { int64 read_at = 1; } message DeleteInboxMessageRequest { string id = 1; } message DeleteInboxMessageResponse {} message DeleteSentboxMessageRequest { string id = 1; } message DeleteSentboxMessageResponse {} message GetUsageRequest { string key = 1; } message GetUsageResponse { api.billingd.pb.GetCustomerResponse customer = 1; api.billingd.pb.GetCustomerUsageResponse usage = 2; } message ArchivesLsRequest { } message ArchivesLsResponse { repeated ArchiveLsItem archives = 1; } message ArchiveLsItem { string cid = 1; repeated ArchiveLsItemMetadata info = 2; } message ArchiveLsItemMetadata { uint64 deal_id = 1; } message ArchivesImportRequest { string cid = 1; repeated uint64 deal_ids = 2; } message ArchivesImportResponse {} message ArchiveRetrievalLsRequest {} message ArchiveRetrievalLsResponse { repeated ArchiveRetrievalLsItem retrievals = 1; } message ArchiveRetrievalLsItem { string id = 1; string cid = 2; ArchiveRetrievalStatus status = 3; string failure_cause = 4; int64 created_at = 5; oneof retrieval_type { ArchiveRetrievalLsItemNewBucket new_bucket = 6; } } message ArchiveRetrievalLsItemNewBucket { string name = 1; bool private = 2; } enum ArchiveRetrievalStatus { ARCHIVE_RETRIEVAL_STATUS_UNSPECIFIED = 0; ARCHIVE_RETRIEVAL_STATUS_QUEUED = 1; ARCHIVE_RETRIEVAL_STATUS_EXECUTING = 2; ARCHIVE_RETRIEVAL_STATUS_MOVETOBUCKET = 3; ARCHIVE_RETRIEVAL_STATUS_FAILED = 4; ARCHIVE_RETRIEVAL_STATUS_CANCELED = 5; ARCHIVE_RETRIEVAL_STATUS_SUCCESS = 6; } message ArchiveRetrievalLogsRequest { string id = 1; } message ArchiveRetrievalLogsResponse { string msg = 1; } service APIService { rpc GetThread(GetThreadRequest) returns (GetThreadResponse) {} rpc ListThreads(ListThreadsRequest) returns (ListThreadsResponse) {} rpc SetupMailbox(SetupMailboxRequest) returns (SetupMailboxResponse) {} rpc SendMessage(SendMessageRequest) returns (SendMessageResponse) {} rpc ListInboxMessages(ListInboxMessagesRequest) returns (ListInboxMessagesResponse) {} rpc ListSentboxMessages(ListSentboxMessagesRequest) returns (ListSentboxMessagesResponse) {} rpc ReadInboxMessage(ReadInboxMessageRequest) returns (ReadInboxMessageResponse) {} rpc DeleteInboxMessage(DeleteInboxMessageRequest) returns (DeleteInboxMessageResponse) {} rpc DeleteSentboxMessage(DeleteSentboxMessageRequest) returns (DeleteSentboxMessageResponse) {} rpc GetUsage(GetUsageRequest) returns (GetUsageResponse) {} // Archives Import rpc ArchivesLs(ArchivesLsRequest) returns (ArchivesLsResponse) {} rpc ArchivesImport(ArchivesImportRequest) returns (ArchivesImportResponse) {} // Archive Retrieval rpc ArchiveRetrievalLs(ArchiveRetrievalLsRequest) returns (ArchiveRetrievalLsResponse){} rpc ArchiveRetrievalLogs(ArchiveRetrievalLogsRequest) returns (stream ArchiveRetrievalLogsResponse) {} } ================================================ FILE: api/usersd/service.go ================================================ package usersd import ( "context" "crypto/rand" "encoding/base64" "errors" "fmt" "time" logging "github.com/ipfs/go-log/v2" ulid "github.com/oklog/ulid/v2" coredb "github.com/textileio/go-threads/core/db" "github.com/textileio/go-threads/core/thread" "github.com/textileio/go-threads/db" pow "github.com/textileio/powergate/v2/api/client" userPb "github.com/textileio/powergate/v2/api/gen/powergate/user/v1" billing "github.com/textileio/textile/v2/api/billingd/client" pb "github.com/textileio/textile/v2/api/usersd/pb" "github.com/textileio/textile/v2/buckets/archive/retrieval" "github.com/textileio/textile/v2/mail" mdb "github.com/textileio/textile/v2/mongodb" tdb "github.com/textileio/textile/v2/threaddb" "go.mongodb.org/mongo-driver/mongo" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) var log = logging.Logger("usersapi") type Service struct { Collections *mdb.Collections Mail *tdb.Mail BillingClient *billing.Client FilRetrieval *retrieval.FilRetrieval PowergateClient *pow.Client } func (s *Service) GetThread(ctx context.Context, req *pb.GetThreadRequest) (*pb.GetThreadResponse, error) { log.Debugf("received get thread request") account, _ := mdb.AccountFromContext(ctx) thrd, err := s.Collections.Threads.GetByName(ctx, req.Name, account.Owner().Key) if err != nil { if errors.Is(err, mongo.ErrNoDocuments) { return nil, status.Error(codes.NotFound, "Thread not found") } return nil, err } return &pb.GetThreadResponse{ Id: thrd.ID.Bytes(), Name: thrd.Name, IsDb: thrd.IsDB, }, nil } func (s *Service) ListThreads(ctx context.Context, _ *pb.ListThreadsRequest) (*pb.ListThreadsResponse, error) { log.Debugf("received list threads request") account, _ := mdb.AccountFromContext(ctx) list, err := s.Collections.Threads.ListByOwner(ctx, account.Owner().Key) if err != nil { return nil, err } reply := &pb.ListThreadsResponse{ List: make([]*pb.GetThreadResponse, len(list)), } for i, t := range list { reply.List[i] = &pb.GetThreadResponse{ Id: t.ID.Bytes(), Name: t.Name, IsDb: t.IsDB, } } return reply, nil } const ( defaultMessagePageSize = 100 maxMessagePageSize = 10000 minMessageReadAt = float64(0) ) var ( // ErrMailboxNotFound indicates that a mailbox has not been setup for a mail sender/receiver. ErrMailboxNotFound = errors.New("mail not found") ) func (s *Service) SetupMailbox(ctx context.Context, _ *pb.SetupMailboxRequest) (*pb.SetupMailboxResponse, error) { log.Debugf("received setup mailbox request") account, _ := mdb.AccountFromContext(ctx) dbToken, _ := thread.TokenFromContext(ctx) box, err := s.getOrCreateMailbox(ctx, account.Owner().Key, tdb.WithToken(dbToken)) if err != nil { return nil, err } return &pb.SetupMailboxResponse{ MailboxId: box.Bytes(), }, nil } func (s *Service) SendMessage(ctx context.Context, req *pb.SendMessageRequest) (*pb.SendMessageResponse, error) { log.Debugf("received send message request") account, _ := mdb.AccountFromContext(ctx) dbToken, _ := thread.TokenFromContext(ctx) ok, err := account.Owner().Key.Verify(req.ToBody, req.ToSignature) if !ok || err != nil { return nil, status.Error(codes.Unauthenticated, "Bad message signature") } ok, err = account.Owner().Key.Verify(req.FromBody, req.FromSignature) if !ok || err != nil { return nil, status.Error(codes.Unauthenticated, "Bad message signature") } to := &thread.Libp2pPubKey{} if err := to.UnmarshalString(req.To); err != nil { return nil, status.Error(codes.FailedPrecondition, "Invalid public key") } inbox, err := s.getMailbox(ctx, to) if err != nil { return nil, err } sentbox, err := s.getMailbox(ctx, account.Owner().Key) if err != nil { return nil, err } msgID := coredb.NewInstanceID().String() now := time.Now().UnixNano() from := account.Owner().Key toMsg := tdb.InboxMessage{ ID: msgID, From: from.String(), To: to.String(), Body: base64.StdEncoding.EncodeToString(req.ToBody), Signature: base64.StdEncoding.EncodeToString(req.ToSignature), CreatedAt: now, } if _, err := s.Mail.Inbox.Create(ctx, inbox, toMsg, tdb.WithToken(dbToken)); err != nil { return nil, err } fromMsg := tdb.SentboxMessage{ ID: msgID, From: from.String(), To: to.String(), Body: base64.StdEncoding.EncodeToString(req.FromBody), Signature: base64.StdEncoding.EncodeToString(req.FromSignature), CreatedAt: now, } if _, err := s.Mail.Sentbox.Create(ctx, sentbox, fromMsg, tdb.WithToken(dbToken)); err != nil { return nil, err } return &pb.SendMessageResponse{ Id: msgID, CreatedAt: now, }, nil } func (s *Service) ListInboxMessages(ctx context.Context, req *pb.ListInboxMessagesRequest) (*pb.ListInboxMessagesResponse, error) { log.Debugf("received list inbox messages request") account, _ := mdb.AccountFromContext(ctx) dbToken, _ := thread.TokenFromContext(ctx) box, err := s.getMailbox(ctx, account.Owner().Key) if err != nil { return nil, err } query, err := getMailboxQuery(req.Seek, req.Limit, req.Ascending, req.Status) if err != nil { return nil, err } res, err := s.Mail.Inbox.List(ctx, box, query, &tdb.InboxMessage{}, tdb.WithToken(dbToken)) if err != nil { return nil, err } list := res.([]*tdb.InboxMessage) pblist := make([]*pb.Message, len(list)) for i, m := range list { pblist[i], err = inboxMessageToPb(m) if err != nil { return nil, err } } return &pb.ListInboxMessagesResponse{Messages: pblist}, nil } func (s *Service) ListSentboxMessages(ctx context.Context, req *pb.ListSentboxMessagesRequest) (*pb.ListSentboxMessagesResponse, error) { log.Debugf("received list sentbox messages request") account, _ := mdb.AccountFromContext(ctx) dbToken, _ := thread.TokenFromContext(ctx) box, err := s.getMailbox(ctx, account.Owner().Key) if err != nil { return nil, err } query, err := getMailboxQuery(req.Seek, req.Limit, req.Ascending, pb.ListInboxMessagesRequest_STATUS_ALL) if err != nil { return nil, err } res, err := s.Mail.Sentbox.List(ctx, box, query, &tdb.SentboxMessage{}, tdb.WithToken(dbToken)) if err != nil { return nil, err } list := res.([]*tdb.SentboxMessage) pblist := make([]*pb.Message, len(list)) for i, m := range list { pblist[i], err = sentboxMessageToPb(m) if err != nil { return nil, err } } return &pb.ListSentboxMessagesResponse{Messages: pblist}, nil } func inboxMessageToPb(m *tdb.InboxMessage) (*pb.Message, error) { body, err := base64.StdEncoding.DecodeString(m.Body) if err != nil { return nil, err } sig, err := base64.StdEncoding.DecodeString(m.Signature) if err != nil { return nil, err } return &pb.Message{ Id: m.ID, From: m.From, To: m.To, Body: body, Signature: sig, CreatedAt: m.CreatedAt, ReadAt: m.ReadAt, }, nil } func sentboxMessageToPb(m *tdb.SentboxMessage) (*pb.Message, error) { body, err := base64.StdEncoding.DecodeString(m.Body) if err != nil { return nil, err } sig, err := base64.StdEncoding.DecodeString(m.Signature) if err != nil { return nil, err } return &pb.Message{ Id: m.ID, From: m.From, To: m.To, Body: body, Signature: sig, CreatedAt: m.CreatedAt, }, nil } func getMailboxQuery(seek string, limit int64, asc bool, stat pb.ListInboxMessagesRequest_Status) (q *db.Query, err error) { if asc { q = db.OrderByID() if seek != "" { q.SeekID(coredb.InstanceID(seek)) } } else { q = db.OrderByIDDesc() if seek == "" { seek = ulid.MustNew(ulid.MaxTime(), rand.Reader).String() } q.SeekID(coredb.InstanceID(seek)) } if limit == 0 { limit = defaultMessagePageSize } else if limit > maxMessagePageSize { limit = maxMessagePageSize } q.LimitTo(int(limit)) switch stat { case pb.ListInboxMessagesRequest_STATUS_ALL: case pb.ListInboxMessagesRequest_STATUS_UNSPECIFIED: break case pb.ListInboxMessagesRequest_STATUS_READ: q.And("read_at").Gt(minMessageReadAt) case pb.ListInboxMessagesRequest_STATUS_UNREAD: q.And("read_at").Eq(minMessageReadAt) default: return nil, fmt.Errorf("unknown message status: %v", stat.String()) } return q, nil } func (s *Service) ReadInboxMessage(ctx context.Context, req *pb.ReadInboxMessageRequest) (*pb.ReadInboxMessageResponse, error) { log.Debugf("received read inbox message request") account, _ := mdb.AccountFromContext(ctx) dbToken, _ := thread.TokenFromContext(ctx) box, err := s.getMailbox(ctx, account.Owner().Key) if err != nil { return nil, err } msg := &tdb.InboxMessage{} err = s.Mail.Inbox.Get(ctx, box, req.Id, msg, tdb.WithToken(dbToken)) if err != nil { return nil, err } msg.ReadAt = time.Now().UnixNano() if err := s.Mail.Inbox.Save(ctx, box, msg, tdb.WithToken(dbToken)); err != nil { return nil, err } return &pb.ReadInboxMessageResponse{ ReadAt: msg.ReadAt, }, nil } func (s *Service) DeleteInboxMessage(ctx context.Context, req *pb.DeleteInboxMessageRequest) (*pb.DeleteInboxMessageResponse, error) { log.Debugf("received delete inbox message request") account, _ := mdb.AccountFromContext(ctx) dbToken, _ := thread.TokenFromContext(ctx) box, err := s.getMailbox(ctx, account.Owner().Key) if err != nil { return nil, err } if err := s.Mail.Inbox.Delete(ctx, box, req.Id, tdb.WithToken(dbToken)); err != nil { return nil, err } return &pb.DeleteInboxMessageResponse{}, nil } func (s *Service) DeleteSentboxMessage(ctx context.Context, req *pb.DeleteSentboxMessageRequest) (*pb.DeleteSentboxMessageResponse, error) { log.Debugf("received delete sentbox message request") account, _ := mdb.AccountFromContext(ctx) dbToken, _ := thread.TokenFromContext(ctx) box, err := s.getMailbox(ctx, account.Owner().Key) if err != nil { return nil, err } if err := s.Mail.Sentbox.Delete(ctx, box, req.Id, tdb.WithToken(dbToken)); err != nil { return nil, err } return &pb.DeleteSentboxMessageResponse{}, nil } func (s *Service) GetUsage(ctx context.Context, req *pb.GetUsageRequest) (*pb.GetUsageResponse, error) { log.Debugf("received get usage request") if s.BillingClient == nil { return nil, fmt.Errorf("billing is not enabled") } account, _ := mdb.AccountFromContext(ctx) var key, parentKey thread.PubKey if req.Key != "" { k := &thread.Libp2pPubKey{} if err := k.UnmarshalString(req.Key); err != nil { return nil, status.Error(codes.FailedPrecondition, "Invalid public key") } key = k parentKey = account.Owner().Key } else { key = account.Owner().Key } cus, err := s.BillingClient.GetCustomer(ctx, key) if err != nil { return nil, err } if parentKey != nil && cus.ParentKey != parentKey.String() { return nil, status.Error(codes.NotFound, "User not found") } usage, err := s.BillingClient.GetCustomerUsage(ctx, key) if err != nil { return nil, err } return &pb.GetUsageResponse{ Customer: cus, Usage: usage, }, nil } func (s *Service) getMailbox(ctx context.Context, key thread.PubKey) (thread.ID, error) { thrd, err := s.Collections.Threads.GetByName(ctx, mail.ThreadName, key) if err != nil { if errors.Is(err, mongo.ErrNoDocuments) { return thread.Undef, status.Error(codes.FailedPrecondition, ErrMailboxNotFound.Error()) } return thread.Undef, err } return thrd.ID, nil } func (s *Service) getOrCreateMailbox(ctx context.Context, key thread.PubKey, opts ...tdb.Option) (thread.ID, error) { id, err := s.Mail.NewMailbox(ctx, opts...) if errors.Is(err, tdb.ErrMailboxExists) { thrd, err := s.Collections.Threads.GetByName(ctx, mail.ThreadName, key) if err != nil { return thread.Undef, err } return thrd.ID, nil } else if err != nil { return thread.Undef, err } return id, nil } // ArchiveRetrievalLs lists existing retrievals for the account. func (s *Service) ArchiveRetrievalLs(ctx context.Context, _ *pb.ArchiveRetrievalLsRequest) (*pb.ArchiveRetrievalLsResponse, error) { account, _ := mdb.AccountFromContext(ctx) owner := account.Owner().Key rs, err := s.FilRetrieval.GetAllByAccount(owner.String()) if err != nil { return nil, fmt.Errorf("listing retrievals: %s", err) } res := &pb.ArchiveRetrievalLsResponse{ Retrievals: make([]*pb.ArchiveRetrievalLsItem, len(rs)), } for i, r := range rs { res.Retrievals[i] = &pb.ArchiveRetrievalLsItem{ Id: r.JobID, Cid: r.Cid.String(), Status: toPbRetrievalStatus(r.Status), FailureCause: r.FailureCause, CreatedAt: r.CreatedAt, } switch r.Type { case retrieval.TypeNewBucket: rt := &pb.ArchiveRetrievalLsItem_NewBucket{ NewBucket: &pb.ArchiveRetrievalLsItemNewBucket{ Name: r.Name, Private: r.Private, }, } res.Retrievals[i].RetrievalType = rt default: return nil, fmt.Errorf("unkown retrieval type") } } return res, nil } // ArchivesLs lists all known archives for an account. func (s *Service) ArchivesLs(ctx context.Context, _ *pb.ArchivesLsRequest) (*pb.ArchivesLsResponse, error) { account, _ := mdb.AccountFromContext(ctx) if account.Owner().PowInfo == nil { return nil, fmt.Errorf("no powergate info associated with account") } ctx = context.WithValue(ctx, pow.AuthKey, account.Owner().PowInfo.Token) r, err := s.PowergateClient.Data.CidSummary(ctx) if err != nil { return nil, fmt.Errorf("getting archived cids: %s", err) } res := &pb.ArchivesLsResponse{ Archives: make([]*pb.ArchiveLsItem, len(r.CidSummary)), } for i, cs := range r.CidSummary { ci, err := s.PowergateClient.Data.CidInfo(ctx, cs.Cid) if err != nil { return nil, fmt.Errorf("getting cid info: %s", err) } if ci.CidInfo.CurrentStorageInfo == nil { continue } props := ci.CidInfo.CurrentStorageInfo.Cold.Filecoin.Proposals ali := &pb.ArchiveLsItem{ Cid: cs.Cid, Info: make([]*pb.ArchiveLsItemMetadata, len(props)), } res.Archives[i] = ali for j, p := range props { ali.Info[j] = &pb.ArchiveLsItemMetadata{ DealId: uint64(p.DealId), } } } return res, nil } // ArchivesImport imports Filecoin deals information for a Cid to the account. func (s *Service) ArchivesImport(ctx context.Context, req *pb.ArchivesImportRequest) (*pb.ArchivesImportResponse, error) { account, _ := mdb.AccountFromContext(ctx) if account.Owner().PowInfo == nil { return nil, fmt.Errorf("no powergate info associated with account") } var scfg *userPb.StorageConfig ctx = context.WithValue(ctx, pow.AuthKey, account.Owner().PowInfo.Token) ci, err := s.PowergateClient.Data.CidInfo(ctx, req.Cid) var notFound bool if err != nil { sc, ok := status.FromError(err) if !ok || sc.Code() != codes.NotFound { return nil, fmt.Errorf("getting current storage information: %s", err) } notFound = true } // If deal import is for a new Cid, just use the default Storage Config // with both storages disabled and without running any jobs: only deal importing. if notFound { defConfRes, err := s.PowergateClient.StorageConfig.Default(ctx) if err != nil { return nil, fmt.Errorf("getting default storage-config: %s", err) } scfg = defConfRes.DefaultStorageConfig scfg.Cold.Enabled = false scfg.Hot.Enabled = false } else { // If deal import is to augment an existing Cid, just use the latest storage config. // A Job won't run anyway, so it would only import the deals. scfg = ci.CidInfo.LatestPushedStorageConfig } if _, err = s.PowergateClient.StorageConfig.Apply( ctx, req.Cid, pow.WithStorageConfig(scfg), pow.WithOverride(true), pow.WithImportDealIDs(req.DealIds), pow.WithNoExec(true), ); err != nil { return nil, fmt.Errorf("importing deals: %s", err) } return &pb.ArchivesImportResponse{}, nil } // ArchiveRetrievalLogs prints the logs of a retrieval. func (s *Service) ArchiveRetrievalLogs(req *pb.ArchiveRetrievalLogsRequest, server pb.APIService_ArchiveRetrievalLogsServer) error { account, _ := mdb.AccountFromContext(server.Context()) owner := account.Owner() accKey := owner.Key.String() powToken := owner.PowInfo.Token var err error ctx, cancel := context.WithCancel(server.Context()) defer cancel() ch := make(chan string) go func() { err = s.FilRetrieval.Logs(ctx, accKey, req.Id, powToken, ch) close(ch) }() for s := range ch { if err := server.Send(&pb.ArchiveRetrievalLogsResponse{Msg: s}); err != nil { return err } } if err != nil { return fmt.Errorf("watching retrieval logs: %s", err) } return nil } func toPbRetrievalStatus(s retrieval.Status) pb.ArchiveRetrievalStatus { switch s { case retrieval.StatusQueued: return pb.ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_QUEUED case retrieval.StatusExecuting: return pb.ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_EXECUTING case retrieval.StatusMoveToBucket: return pb.ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_MOVETOBUCKET case retrieval.StatusSuccess: return pb.ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_SUCCESS case retrieval.StatusFailed: return pb.ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_FAILED default: return pb.ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_UNSPECIFIED } } ================================================ FILE: buckets/archive/events.go ================================================ package archive type TrackedJobType int const ( TrackedJobTypeArchive TrackedJobType = iota TrackedJobTypeRetrieval ) type TrackedJobStatus int const ( TrackedJobStatusQueued TrackedJobStatus = iota TrackedJobStatusExecuting TrackedJobStatusSuccess TrackedJobStatusFailed ) type JobEvent struct { JobID string Type TrackedJobType Status TrackedJobStatus AccKey string // Only set if Status=Failed FailureCause string } ================================================ FILE: buckets/archive/retrieval/retrieval.go ================================================ package retrieval import ( "context" "encoding/json" "fmt" "strconv" "sync" "time" "github.com/gogo/status" "github.com/ipfs/go-cid" "github.com/ipfs/go-datastore" "github.com/ipfs/go-datastore/query" logging "github.com/ipfs/go-log/v2" "github.com/textileio/go-threads/core/thread" pow "github.com/textileio/powergate/v2/api/client" powc "github.com/textileio/powergate/v2/api/client" userPb "github.com/textileio/powergate/v2/api/gen/powergate/user/v1" "github.com/textileio/textile/v2/api/common" "github.com/textileio/textile/v2/buckets/archive" "google.golang.org/grpc/codes" ) const ( ipfsAddTimeoutDefault = 500 // seconds buckCreationTimeout = time.Minute * 30 maxConcurrentBucketCreation = 10 ) var ( log = logging.Logger("fil-retrieval") CITest = false ) // BucketCreator provides creating bucket functionality. type BucketCreator interface { // CreateBucket creates a bucket with the provided information. CreateBucket(ctx context.Context, threadID thread.ID, threadToken thread.Token, buckName string, buckPrivate bool, dataCid cid.Cid) error } // TrackerRegistrator manages retrieval Job tracking. type TrackerRetrievalRegistrator interface { // TrackRetrieval tracks JobID job. TrackRetrieval(ctx context.Context, accKey, jobID, powToken string) error } type Status int const ( StatusQueued Status = iota StatusExecuting StatusMoveToBucket StatusSuccess StatusFailed ) type Type int const ( TypeNewBucket Type = iota TypeExistingBucket ) type Retrieval struct { Type Type AccountKey string PowToken string JobID string Cid cid.Cid Selector string Status Status FailureCause string CreatedAt int64 // If Type == RetrievalTypeNewBucket DbID thread.ID DbToken thread.Token Name string Private bool // If Type == RetrievalTypeExistingBucket BuckKey string BuckPath string } // FilRetrieval manages Retrievals from Accounts in // go-datastore. type FilRetrieval struct { ds datastore.TxnDatastore bc BucketCreator trr TrackerRetrievalRegistrator pgc *powc.Client jfe <-chan archive.JobEvent internalSession string // daemon vars lock sync.Mutex started bool daemonWork chan struct{} ctx context.Context cancel context.CancelFunc closedChan chan struct{} closed bool } func NewFilRetrieval( ds datastore.TxnDatastore, pgc *powc.Client, trr TrackerRetrievalRegistrator, jfe <-chan archive.JobEvent, is string, ) (*FilRetrieval, error) { ctx, cancel := context.WithCancel(context.Background()) fr := &FilRetrieval{ ds: ds, pgc: pgc, trr: trr, jfe: jfe, internalSession: is, ctx: ctx, cancel: cancel, closedChan: make(chan struct{}), daemonWork: make(chan struct{}, 1), } return fr, nil } func (fr *FilRetrieval) SetBucketCreator(bc BucketCreator) { fr.lock.Lock() defer fr.lock.Unlock() fr.bc = bc } func (fr *FilRetrieval) RunDaemon() { fr.lock.Lock() defer fr.lock.Unlock() if !fr.started { go fr.daemon() fr.started = true } } // CreateForNewBucket creates a queued Retrieval to bootstrap a new bucket // with the provided information, only if the retrieval succeeds. func (fr *FilRetrieval) CreateForNewBucket( ctx context.Context, accKey string, dbID thread.ID, dbToken thread.Token, buckName string, buckPrivate bool, dataCid cid.Cid, powToken string, ) (string, error) { if powToken == "" { return "", fmt.Errorf("powergate token can't be empty") } if accKey == "" { return "", fmt.Errorf("account key can't be empty") } jobID, err := fr.createRetrieval(ctx, dataCid, accKey, powToken) if err != nil { return "", fmt.Errorf("creating retrieval in Powergate: %s", err) } r := Retrieval{ Type: TypeNewBucket, AccountKey: accKey, PowToken: powToken, JobID: jobID, Cid: dataCid, Selector: "", Status: StatusQueued, CreatedAt: time.Now().Unix(), DbID: dbID, DbToken: dbToken, Name: buckName, Private: buckPrivate, } if err := fr.save(nil, r); err != nil { return "", fmt.Errorf("saving retrieval request: %s", err) } return jobID, nil } func (fr *FilRetrieval) createRetrieval(ctx context.Context, c cid.Cid, accKey, powToken string) (string, error) { // # Step 1. // Check that we have imported DealIDs for that Cid. Fail fast mechanism. ctx = context.WithValue(ctx, pow.AuthKey, powToken) r, err := fr.pgc.StorageInfo.List(ctx, c.String()) if err != nil { return "", fmt.Errorf("getting archived cids: %s", err) } if len(r.StorageInfo) == 0 { return "", fmt.Errorf("no data is available for this cid") } if len(r.StorageInfo[0].Cold.Filecoin.Proposals) == 0 { return "", fmt.Errorf("there aren't known deals to retrieve from Filecoin") } // # Step 2. // Check that hot-storage is disabled. If it's enabled, then this data // is already hot in Powergate. No need to do a Filecoin retrieval, we can // directly jump to the bucket creation. The data is already available in // go-ipfs from Powergate, which is connected with go-ipfs from Hub. // It can be considered that the data is in the ipfs network, so // a user can do `hub buck init --cid` (without --unfreeze). // In the future, we can think if make sense to let this case behave as an // automatic call to the above CLI command. // // Note (07/01/21): This is just for future coverage. In the current use-case // this situation shouldn't happen, since after unfreezing from Filecoin we // disable the Cid from hot-storage (so can be GCed). But if in a future use-case // we enable the user to keep that unfreezed data hot (for whatever reason), // then already leverage that future feature. if r.StorageInfo[0].Hot.Enabled { return "", fmt.Errorf("no need to unfreeze, the cid is already in the IPFS network") } // # Step 3. // At this point we're sure we have imported DealIDs and the data isn't // in hot-storage. We proceed to pushing the current StorageConfig with // hot-storage enabled. This will signal attempting a retrieval. // Get the base storage-config to modify. var notFound bool ci, err := fr.pgc.Data.CidInfo(ctx, c.String()) if err != nil { sc, ok := status.FromError(err) if !ok || sc.Code() != codes.NotFound { return "", fmt.Errorf("getting latest storage-config: %s", err) } notFound = true } var sc *userPb.StorageConfig if notFound { // If no storage-config exist for this Cid, then the user // had Remove or Replace the storage-config. // We ne need a storage-config to do the retrieval, so we // use the default one but with cold-storage disabled as // to avoid any other cold-storage work that might be // enabled as default. dfsc, err := fr.pgc.StorageConfig.Default(ctx) if err != nil { return "", fmt.Errorf("no storage-config, getting default: %s", err) } sc := dfsc.DefaultStorageConfig sc.Cold.Enabled = false } else { sc = ci.CidInfo.LatestPushedStorageConfig // Cover some bad configuration. if sc.Hot.Ipfs.AddTimeout == 0 { sc.Hot.Ipfs.AddTimeout = ipfsAddTimeoutDefault } } // Flag only used for tests, to speed-up Filecoin unfreezing // behaviour. Under normal circumstances, this timeout would be // in the order of minutes to give a good chance of finding the // data in the IPFS network. if CITest { // Flag only used in CI test. sc.Hot.Ipfs.AddTimeout = 3 } sc.Hot.Enabled = true sc.Hot.AllowUnfreeze = true opts := []pow.ApplyOption{pow.WithStorageConfig(sc), pow.WithOverride(true)} a, err := fr.pgc.StorageConfig.Apply(ctx, c.String(), opts...) if err != nil { return "", fmt.Errorf("applying new storage-config: %s", err) } createdJobID := a.JobId // # Step 4. // Powergate is doing it's retrieval work. Register this JobID to track the // status in Tracker. When Tracker updates the Job status, it will signal in // fr.jfe channel, so the retrieval process can continue with further phases. if err := fr.trr.TrackRetrieval(ctx, accKey, createdJobID, powToken); err != nil { return "", fmt.Errorf("tracking retrieval job: %s", err) } return createdJobID, nil } // Close closes gracefully all background work that // is being executed. func (fr *FilRetrieval) Close() error { if fr.closed { return nil } fr.cancel() <-fr.closedChan return nil } func (fr *FilRetrieval) daemon() { defer func() { close(fr.closedChan) }() fr.daemonWork <- struct{}{} // Force first run. for { select { case <-fr.ctx.Done(): return case <-fr.daemonWork: fr.processQueuedMoveToBucket() case ju := <-fr.jfe: if ju.Type != archive.TrackedJobTypeRetrieval { log.Debugf("ignoring non-retrieval job status update") // We're not interested in other jobs type events. continue } log.Debugf("processing retrieval job status update: %#v", ju) fr.updateRetrievalStatus(ju) } } } // updateRetrievalStatus updates the status and continues with the process. // If `successful` is true, its status is changed to RetrievalStatusMoveToBucket, // and it continues with the process of copying the data to the bucket. // If `successful` is false, its status is changed to RetrievalStatusFailed and the // FailureCause is set to `failureCause`. func (fr *FilRetrieval) updateRetrievalStatus(ju archive.JobEvent) { r, err := fr.GetByAccountAndID(ju.AccKey, ju.JobID) if err != nil { // go-datastore is unavailable, which is a very rare-case. // keep a log fo what should have happened in case we wan't to recover this // case manually. log.Errorf("getting retrieval from store (accKey:%s, jobID:%s, status:%d, failureCause: %s): %s", ju.AccKey, ju.JobID, ju.Status, ju.FailureCause, err) return } switch ju.Status { case archive.TrackedJobStatusFailed: r.Status = StatusFailed r.FailureCause = ju.FailureCause case archive.TrackedJobStatusExecuting: r.Status = StatusExecuting case archive.TrackedJobStatusSuccess: r.Status = StatusMoveToBucket default: log.Errorf("unknown job event status: %d", ju.Status) return } txn, err := fr.ds.NewTransaction(false) if err != nil { log.Errorf("creating txn (accKey:%s, jobID:%s, status:%d, failureCause: %s): %s", ju.AccKey, ju.JobID, ju.Status, ju.FailureCause, err) return } defer txn.Discard() // Save Retrieval with new status *and* insert this retrieval // in the special MoveToBucket stage, to jump into next phase // handeled by the daemon(). if err := fr.save(txn, r); err != nil { log.Errorf("saving to datastore (accKey:%s, jobID:%s, status:%d, failureCause: %s): %s", ju.AccKey, ju.JobID, ju.Type, ju.FailureCause, err) return } // If the retrieval switched to executing, or failed we're done. if ju.Status == archive.TrackedJobStatusSuccess { // We know the Cid data is available (Success), move to next phase to move the data // to the bucket. We do it in phases as to avoid failing all the retrieval if the process // crashes, or shutdowns. When is spinned up again, we can recover the process to move the data // to the bucket without having retrievals stuck or forcing the user to create a new retrieval // starting from zero. // // The daemon() will take these retrievals, and continue with the process. After it finishes, // it will be removed from the pending list (reached final status). key := dsMoveToBucketQueueKey(ju.AccKey, ju.JobID) if err := txn.Put(key, []byte{}); err != nil { log.Errorf("inserting into move-to-bucket queue (accKey:%s, jobID:%s, status:%d, failureCause: %s): %s", ju.AccKey, ju.JobID, ju.Status, ju.FailureCause, err) return } } if err := txn.Commit(); err != nil { log.Errorf("commiting txn (accKey:%s, jobID:%s, type:%s, failureCause: %s): %s", ju.AccKey, ju.JobID, ju.Type, ju.FailureCause, err) return } // Signal daemon that new work exist. select { case fr.daemonWork <- struct{}{}: default: } } func (fr *FilRetrieval) processQueuedMoveToBucket() { prefixKey := dsMoveToBucketQueueBaseKey() q := query.Query{Prefix: prefixKey.String()} qr, err := fr.ds.Query(q) if err != nil { log.Errorf("querying datastore for pending move-to-bucket: %s", err) return } defer qr.Close() lim := make(chan struct{}, maxConcurrentBucketCreation) for item := range qr.Next() { if item.Error != nil { log.Errorf("getting next item result: %s", err) break } lim <- struct{}{} item := item go func() { defer func() { <-lim }() key := datastore.NewKey(item.Key) accKey := key.Namespaces()[2] jobID := key.Namespaces()[3] r, err := fr.GetByAccountAndID(accKey, jobID) if err != nil { log.Errorf("get move-to-bucket retrieval: %s", err) return } if err := fr.processMoveToBucket(r); err != nil { log.Errorf("processing move-to-bucket: %s", err) r.Status = StatusFailed r.FailureCause = err.Error() } else { r.Status = StatusSuccess } txn, err := fr.ds.NewTransaction(false) if err != nil { log.Errorf("creating txn: %s", err) return } if err := fr.save(txn, r); err != nil { txn.Discard() log.Errorf("saving finalized status: %s", err) return } if err := txn.Delete(key); err != nil { txn.Discard() log.Errorf("deleting from move-to-bucket queue: %s", err) return } if err := txn.Commit(); err != nil { txn.Discard() log.Errorf("committing transaction: %s", err) } }() } for i := 0; i < maxConcurrentBucketCreation; i++ { lim <- struct{}{} } } func (fr *FilRetrieval) processMoveToBucket(r Retrieval) error { switch r.Type { case TypeNewBucket: // # Step 1. // Create the bucket. ctx, cancel := context.WithTimeout(context.Background(), buckCreationTimeout) defer cancel() ctx = common.NewSessionContext(ctx, fr.internalSession) if err := fr.bc.CreateBucket(ctx, r.DbID, r.DbToken, r.Name, r.Private, r.Cid); err != nil { return fmt.Errorf("creating bucket: %s", err) } // # Step 2. // Now that the bucket was bootstraped, we're ready to push a new StorageConfig // disabling hot-storage. We don't need to hold the data in Powergate anymore. ctx = context.WithValue(ctx, pow.AuthKey, r.PowToken) ci, err := fr.pgc.Data.CidInfo(ctx, r.Cid.String()) if err != nil { return fmt.Errorf("getting latest storage-config: %s", err) } sc := ci.CidInfo.LatestPushedStorageConfig sc.Hot.Enabled = false sc.Hot.AllowUnfreeze = false opts := []pow.ApplyOption{pow.WithStorageConfig(sc), pow.WithOverride(true)} _, err = fr.pgc.StorageConfig.Apply(ctx, r.Cid.String(), opts...) if err != nil { log.Errorf("applying new storage-config: %s", err) } // Note: Notice that we're ignoring the JobID or error for Apply(). // At this point the bucket was created, and all is fine for the user. // // Disabling hot-storage is rather uninteresting. It's a change that // will most probably be executed correctly since it's only unpinning from go-ipfs. // Even if this failed for whatever reason its kind of independant of // the retrieval success; since the bucket got created correctly and // all is ready now for the user. // // If we think this should require attention, we can create some // process thatkeeps track of that job in the background but completely // unattached from the retrieval use-case. This sounds more like something // that an external daemon should do. default: return fmt.Errorf("retrieval type %d not implemented", r.Type) } return nil } func (fr *FilRetrieval) save(txn datastore.Txn, r Retrieval) error { if len(r.AccountKey) == 0 || len(r.JobID) == 0 { return fmt.Errorf("account key and job-id can't be empty") } key := dsAccountAndIDKey(r.AccountKey, r.JobID) buf, err := json.Marshal(r) if err != nil { return fmt.Errorf("mashaling retrieval: %s", err) } dsWriter := datastore.Write(fr.ds) if txn != nil { dsWriter = txn } if err := dsWriter.Put(key, buf); err != nil { return fmt.Errorf("saving in datastore: %s", err) } return nil } func (fr *FilRetrieval) GetAllByAccount(accKey string) ([]Retrieval, error) { q := query.Query{ Prefix: dsAccountKey(accKey).String(), } res, err := fr.ds.Query(q) if err != nil { return nil, fmt.Errorf("initiating query: %s", err) } defer res.Close() var ret []Retrieval for it := range res.Next() { if it.Error != nil { return nil, fmt.Errorf("fetching query item: %s", it.Error) } r := Retrieval{} if err := json.Unmarshal(it.Entry.Value, &r); err != nil { return nil, fmt.Errorf("unmarshaling retrieval: %s", err) } ret = append(ret, r) } return ret, nil } func (fr *FilRetrieval) GetByAccountAndID(accKey string, jobID string) (Retrieval, error) { key := dsAccountAndIDKey(accKey, jobID) b, err := fr.ds.Get(key) if err != nil { return Retrieval{}, fmt.Errorf("get retrieval: %s", err) } r := Retrieval{} if err := json.Unmarshal(b, &r); err != nil { return Retrieval{}, fmt.Errorf("unmarshaling retrieval: %s", err) } return r, nil } func (fr *FilRetrieval) Logs(ctx context.Context, accKey string, jobID string, powToken string, ch chan<- string) error { r, err := fr.GetByAccountAndID(accKey, jobID) if err != nil { return fmt.Errorf("get retrieval for logs: %s", err) } // This should never happen. All retrievals are created with a JobID // value. Paranoid check. if len(r.JobID) == 0 { return fmt.Errorf("job-id is empty") } ctx = context.WithValue(ctx, powc.AuthKey, powToken) ctx, cancel := context.WithCancel(ctx) defer cancel() logsCh := make(chan powc.WatchLogsEvent) if err := fr.pgc.Data.WatchLogs( ctx, logsCh, r.Cid.String(), powc.WithJobIDFilter(r.JobID), powc.WithHistory(true), ); err != nil { return fmt.Errorf("start watching job logs: %s", err) } for le := range logsCh { if le.Err != nil { return le.Err } timestamp := time.Unix(le.Res.LogEntry.Time, 0) ch <- fmt.Sprintf("%s: %s", timestamp.Format("2006-01-02 15:04:05"), le.Res.LogEntry.Message) } return nil } // Datastore keys // Requests: /retrievals// -> json(Request) // MoveToBucketQueue: /movetobucket/// -> Empty func dsAccountKey(accKey string) datastore.Key { return datastore.NewKey("retrieval").ChildString(accKey) } func dsAccountAndIDKey(accKey, jobID string) datastore.Key { return dsAccountKey(accKey).ChildString(jobID) } func dsMoveToBucketQueueBaseKey() datastore.Key { key := datastore.NewKey("movetobucket") return key } func dsMoveToBucketQueueKey(accKey, jobID string) datastore.Key { key := dsMoveToBucketQueueBaseKey() key = key.ChildString(strconv.FormatInt(time.Now().Unix(), 10)) key = key.ChildString(accKey) key = key.ChildString(jobID) return key } ================================================ FILE: buckets/archive/tracker/tracker.go ================================================ package tracker import ( "context" "fmt" "strings" "sync" "time" "github.com/filecoin-project/go-fil-markets/storagemarket" "github.com/ipfs/go-cid" logger "github.com/ipfs/go-log/v2" "github.com/textileio/go-threads/core/thread" powc "github.com/textileio/powergate/v2/api/client" userPb "github.com/textileio/powergate/v2/api/gen/powergate/user/v1" "github.com/textileio/textile/v2/api/common" "github.com/textileio/textile/v2/buckets/archive" mdb "github.com/textileio/textile/v2/mongodb" tdb "github.com/textileio/textile/v2/threaddb" ) const ( // maxConcurrent is the maximum amount of concurrent // tracked jobs that are processed in parallel. maxConcurrent = 20 ) var ( // CheckInterval is the frequency in which new ready-to-check // tracked jobs are queried. CheckInterval = time.Second * 15 log = logger.Logger("job-tracker") ) // Tracker tracks Powergate jobs to their final status. // Tracked jobs corresponds to Archives or Retrievals. Depending // of the case, is what logic is applied when the Job reach a final // status. type Tracker struct { lock sync.Mutex ctx context.Context cancel context.CancelFunc closed chan struct{} internalSession string colls *mdb.Collections buckets *tdb.Buckets pgClient *powc.Client jfe chan<- archive.JobEvent jobPollIntervalSlow time.Duration jobPollIntervalFast time.Duration } // New returns a *Tracker. func New( colls *mdb.Collections, buckets *tdb.Buckets, pgClient *powc.Client, internalSession string, jobPollIntervalSlow time.Duration, jobPollIntervalFast time.Duration, jfe chan<- archive.JobEvent, ) (*Tracker, error) { ctx, cancel := context.WithCancel(context.Background()) t := &Tracker{ ctx: ctx, cancel: cancel, closed: make(chan struct{}), internalSession: internalSession, colls: colls, buckets: buckets, pgClient: pgClient, jfe: jfe, jobPollIntervalSlow: jobPollIntervalSlow, jobPollIntervalFast: jobPollIntervalFast, } go t.run() return t, nil } // TrackArchive registers a new tracking for a Job, which corresponds // to an bucket Archive action. func (t *Tracker) TrackArchive( ctx context.Context, dbID thread.ID, dbToken thread.Token, bucketKey string, jid string, bucketRoot cid.Cid, owner thread.PubKey, ) error { if err := t.colls.ArchiveTracking.CreateArchive(ctx, dbID, dbToken, bucketKey, jid, bucketRoot, owner); err != nil { return fmt.Errorf("saving tracking archive information: %s", err) } return nil } // TrackRetrieval registers a new tracking for a Job, which corresponds // to a Retrieval. func (t *Tracker) TrackRetrieval(ctx context.Context, accKey, jobID, powToken string) error { if err := t.colls.ArchiveTracking.CreateRetrieval(ctx, accKey, jobID, powToken); err != nil { return fmt.Errorf("saving tracking retrieval information: %s", err) } return nil } // Close closes the module gracefully. func (t *Tracker) Close() error { t.cancel() <-t.closed return nil } // run is the main daemon logic. It checks on a defined interval // all non-finalized tracked jobs. func (t *Tracker) run() { defer close(t.closed) for { select { case <-t.ctx.Done(): log.Info("shutting down archive tracker daemon") return case <-time.After(CheckInterval): t.checkPendingTrackings() } } } // checkPendingTrackings scans for pending trackings in `maxConcurrent` // batches until all are handeled. func (t *Tracker) checkPendingTrackings() { for { archives, err := t.colls.ArchiveTracking.GetReadyToCheck(t.ctx, maxConcurrent) if err != nil { log.Errorf("getting tracked archives: %s", err) break } log.Debugf("got %d ready archives to check", len(archives)) if len(archives) == 0 { break } var wg sync.WaitGroup wg.Add(len(archives)) for _, a := range archives { go func(a *mdb.TrackedJob) { defer wg.Done() if err := t.processTrackedJob(a); err != nil { log.Errorf("processing tracked archive: %s", err) } }(a) } wg.Wait() } } // processTrackedJob checks the status of the Job in Powergate, which // corresponds to bucket Archive action. // - If Job was successful: change its status as to not be tracked anymore, // and call corresponding logic depending if was created for an Archive or Retrieval. // - If Job failed: change its status to not being tracked anymore. // - If encountered a transient error: It will reschedule the tracked job to // be evaluated in a further iteration. func (t *Tracker) processTrackedJob(a *mdb.TrackedJob) error { ctx, cancel := context.WithTimeout(t.ctx, time.Second*10) defer cancel() var rescheduleDuration time.Duration var finCause string var err error switch a.Type { case archive.TrackedJobTypeArchive: // TODO: Unfortunately, we can't use a.PowToken to avoid // this `t.colls.Accounts` boilerplate to get it. Mostly // because a.PowToken was a field created when we implemented // Retrievals; so *most of existing mdb.TrackedJob* of type // TrackedJobTypeArchive have that value empty, but have // set `a.Owner`. // // Whenever we do the migration to go-datastore, we could include // populating all a.PowToken with using this below logic, // and after we know all `mdb.TrackedJob` have a.PowToken set, // we can delete this `t.cools.Accounts.Get` and just use // `a.PowToken` (as is used in `case mdb.TrackedJobTypeRetrieval`. // We should also change `Tracker.TrackArchive` to receive // a `PowToken string` instead of `owner thread.PublicKey`, and // just save `PowToken` to make `a.PowToken` available from that // moment forward. account, err := t.colls.Accounts.Get(ctx, a.Owner) if err != nil { return fmt.Errorf("getting account: %s", err) } if account.PowInfo == nil { err := t.colls.ArchiveTracking.Finalize(ctx, a.JID, "no powergate info found") if err != nil { return fmt.Errorf("finalizing errored/rescheduled job tracking: %s", err) } } ctx = context.WithValue(ctx, powc.AuthKey, account.PowInfo.Token) rescheduleDuration, finCause, err = t.trackArchiveProgress( ctx, a.BucketKey, a.DbID, a.DbToken, a.JID, a.BucketRoot, ) case archive.TrackedJobTypeRetrieval: ctx = context.WithValue(ctx, powc.AuthKey, a.PowToken) rescheduleDuration, finCause, err = t.trackRetrievalProgress(ctx, a.AccKey, a.JID) default: return fmt.Errorf("unkown tracked job type %d", a.Type) } if err != nil || rescheduleDuration == 0 { if err != nil { finCause = err.Error() } log.Infof("tracking archive finalized with cause: %s", finCause) if err := t.colls.ArchiveTracking.Finalize(ctx, a.JID, finCause); err != nil { return fmt.Errorf("finalizing errored/rescheduled archive tracking: %s", err) } } log.Infof("rescheduling tracking archive with job %s, cause %s", a.JID, finCause) err = t.colls.ArchiveTracking.Reschedule(ctx, a.JID, rescheduleDuration, finCause) if err != nil { return fmt.Errorf("rescheduling tracked archive: %s", err) } return nil } // trackRetrievalProgress queries the current archive status. // The return values have the same semantics as `trackArchiveProgress` func (t *Tracker) trackRetrievalProgress(ctx context.Context, accKey, jid string) (time.Duration, string, error) { log.Debugf("querying archive status of job %s", jid) defer log.Debugf("finished querying retrieval status of job %s", jid) // Step 1: Get the Job status. res, err := t.pgClient.StorageJobs.Get(ctx, jid) if err != nil { // if error specifies that the auth token isn't found, powergate must have been reset. // return the error as fatal so the archive will be untracked if strings.Contains(err.Error(), "auth token not found") { return 0, "", err } return t.jobPollIntervalSlow, fmt.Sprintf("getting current job %s for retrieval: %s", jid, err), nil } // Step 2: Notify `JobEvent` listeners about job changing status. var ( rescheduleDuration time.Duration message string status archive.TrackedJobStatus ) switch res.StorageJob.Status { case userPb.JobStatus_JOB_STATUS_SUCCESS: rescheduleDuration = 0 message = "success" status = archive.TrackedJobStatusSuccess case userPb.JobStatus_JOB_STATUS_CANCELED: rescheduleDuration = 0 message = "canceled" status = archive.TrackedJobStatusFailed case userPb.JobStatus_JOB_STATUS_FAILED: rescheduleDuration = 0 message = "job failed" status = archive.TrackedJobStatusFailed case userPb.JobStatus_JOB_STATUS_EXECUTING: rescheduleDuration = t.jobPollIntervalFast message = "non-final status" status = archive.TrackedJobStatusExecuting default: return 0, "", fmt.Errorf("unknown storage-job status: %d", res.StorageJob.Status) } t.jfe <- archive.JobEvent{ JobID: jid, Type: archive.TrackedJobTypeRetrieval, Status: status, AccKey: accKey, FailureCause: message, } return rescheduleDuration, message, nil } // trackArchiveProgress queries the current archive status. // If a fatal error in tracking happens, it will return an error, which indicates the archive should be untracked. // If the archive didn't reach a final status yet, or a possibly recoverable error (by retrying) happens, // it will return (duration > 0, "retry cause", nil) and the archive query should be rescheduled for duration in the future. // If the archive reach final status, it will return (duration == 0, "", nil) and the tracking can be considered done. func (t *Tracker) trackArchiveProgress( ctx context.Context, buckKey string, dbID thread.ID, dbToken thread.Token, jid string, bucketRoot cid.Cid, ) (time.Duration, string, error) { log.Debugf("querying archive status of job %s", jid) defer log.Debugf("finished querying archive status of job %s", jid) // Step 1: Get the Job status. res, err := t.pgClient.StorageJobs.Get(ctx, jid) if err != nil { // if error specifies that the auth token isn't found, powergate must have been reset. // return the error as fatal so the archive will be untracked if strings.Contains(err.Error(), "auth token not found") { return 0, "", err } return t.jobPollIntervalSlow, fmt.Sprintf("getting current job %s for bucket %s: %s", jid, buckKey, err), nil } // Step 2: On job success, save Deal data in the underlying Bucket thread. On // failure save the error message. if res.StorageJob.Status == userPb.JobStatus_JOB_STATUS_SUCCESS { if err := t.saveDealsInBucket(ctx, buckKey, dbID, dbToken, bucketRoot); err != nil { return t.jobPollIntervalSlow, fmt.Sprintf("saving deal data in archive: %s", err), nil } } // Step 3: Update status on Mongo for the archive. if err := t.updateArchiveStatus(ctx, buckKey, res.StorageJob, false, ""); err != nil { return t.jobPollIntervalSlow, fmt.Sprintf("updating archive status: %s", err), nil } rescheduleDuration := t.jobPollIntervalFast message := "non-final status" if isJobStatusFinal(res.StorageJob.Status) { message = "reached final status" rescheduleDuration = 0 // Finalize tracking. } if rescheduleDuration > 0 { for _, dealInfo := range res.StorageJob.DealInfo { if dealInfo.StateId == storagemarket.StorageDealSealing { rescheduleDuration = t.jobPollIntervalSlow break } } } return rescheduleDuration, message, nil } // updateArchiveStatus save the last known job status. It also receives an // _abort_ flag which indicates that the provided newJobStatus might not be // final. For example, if tracking the Job status changes errored by some network // condition, we have only the last known Job status. Powergate would continue doing // its work until a final status is reached; it only means we aren't sure how this // archive really finished. // To track for this situation, we use the _aborted_ and _abortMsg_ parameters. // An archive with _aborted_ true should eventually be re-queried to understand // how it finished (if wanted). func (t *Tracker) updateArchiveStatus( ctx context.Context, buckKey string, job *userPb.StorageJob, aborted bool, abortMsg string, ) error { t.lock.Lock() defer t.lock.Unlock() ba, err := t.colls.BucketArchives.GetOrCreate(ctx, buckKey) if err != nil { return fmt.Errorf("getting BucketArchive data: %s", err) } archiveToUpdate := &ba.Archives.Current if archiveToUpdate.JobID != job.Id { for i := range ba.Archives.History { if ba.Archives.History[i].JobID == job.Id { archiveToUpdate = &ba.Archives.History[i] break } } } archiveToUpdate.Status = int(job.Status) archiveToUpdate.Aborted = aborted archiveToUpdate.AbortedMsg = abortMsg archiveToUpdate.FailureMsg = prepareFailureMsg(job) dealInfo := make([]mdb.DealInfo, len(job.DealInfo)) for i, info := range job.DealInfo { dealInfo[i] = mdb.DealInfo{ ProposalCid: info.ProposalCid, StateID: info.StateId, StateName: info.StateName, Miner: info.Miner, PieceCID: info.PieceCid, Size: info.Size, PricePerEpoch: info.PricePerEpoch, StartEpoch: info.StartEpoch, Duration: info.Duration, DealID: info.DealId, ActivationEpoch: info.ActivationEpoch, Message: info.Message, } } archiveToUpdate.DealInfo = dealInfo if err := t.colls.BucketArchives.Replace(ctx, ba); err != nil { return fmt.Errorf("updating bucket archives status: %s", err) } return nil } func (t *Tracker) saveDealsInBucket( ctx context.Context, buckKey string, dbID thread.ID, dbToken thread.Token, c cid.Cid, ) error { opts := tdb.WithToken(dbToken) ctx = common.NewSessionContext(ctx, t.internalSession) buck := &tdb.Bucket{} if err := t.buckets.Get(ctx, dbID, buckKey, &buck, opts); err != nil { return fmt.Errorf("getting bucket for save deals: %s", err) } res, err := t.pgClient.Data.CidInfo(ctx, c.String()) if err != nil { return fmt.Errorf("getting cid info: %s", err) } proposals := res.CidInfo.CurrentStorageInfo.Cold.Filecoin.Proposals deals := make([]tdb.Deal, len(proposals)) for i, p := range proposals { deals[i] = tdb.Deal{ Miner: p.Miner, } } buck.Archives.Current = tdb.Archive{ Cid: c.String(), Deals: deals, } buck.UpdatedAt = time.Now().UnixNano() if err = t.buckets.Save(ctx, dbID, buck, opts); err != nil { return fmt.Errorf("saving deals in thread: %s", err) } return nil } func prepareFailureMsg(job *userPb.StorageJob) string { if job.ErrorCause == "" { return "" } var b strings.Builder _, _ = b.WriteString(job.ErrorCause) for i, de := range job.DealErrors { _, _ = b.WriteString(fmt.Sprintf( "\nDeal error %d: Proposal %s with miner %s, %s", i, de.ProposalCid, de.Miner, de.Message)) } return b.String() } func isJobStatusFinal(js userPb.JobStatus) bool { return js == userPb.JobStatus_JOB_STATUS_SUCCESS || js == userPb.JobStatus_JOB_STATUS_CANCELED || js == userPb.JobStatus_JOB_STATUS_FAILED } ================================================ FILE: buckets/buckets.go ================================================ package buckets import ( "context" "errors" "fmt" "strings" "github.com/textileio/go-threads/core/thread" pb "github.com/textileio/textile/v2/api/bucketsd/pb" ) const ( // CollectionName is the name of the threaddb collection used for buckets. CollectionName = "buckets" // SeedName is the file name reserved for a random bucket seed. SeedName = ".textileseed" ) var ( // ErrNonFastForward is returned when an update in non-fast-forward. ErrNonFastForward = fmt.Errorf("update is non-fast-forward") // ErrNoCurrentArchive is returned when not status about the last archive // can be retrieved, since the bucket was never archived. ErrNoCurrentArchive = fmt.Errorf("the bucket was never archived") // ErrZeroBalance is returned when archiving a bucket which // underlying Account Powergate user balance is zero. ErrZeroBalance = errors.New("wallet FIL balance is zero, if recently created wait 30s") ) type ctxKey string // BucketOwner provides owner context to the bucket service. type BucketOwner struct { StorageUsed int64 StorageAvailable int64 StorageDelta int64 } func NewBucketOwnerContext(ctx context.Context, owner *BucketOwner) context.Context { return context.WithValue(ctx, ctxKey("bucketOwner"), owner) } func BucketOwnerFromContext(ctx context.Context) (*BucketOwner, bool) { owner, ok := ctx.Value(ctxKey("bucketOwner")).(*BucketOwner) return owner, ok } // Role describes an access role for a bucket item. type Role int const ( None Role = iota Reader Writer Admin ) // NewRoleFromString returns the role associated with the given string. func NewRoleFromString(s string) (Role, error) { switch strings.ToLower(s) { case "none": return None, nil case "reader": return Reader, nil case "writer": return Writer, nil case "admin": return Admin, nil default: return None, fmt.Errorf("invalid role: %s", s) } } // String returns the string representation of the role. func (r Role) String() string { switch r { case None: return "None" case Reader: return "Reader" case Writer: return "Writer" case Admin: return "Admin" default: return "Invalid" } } // RolesToPb maps native type roles to protobuf type roles. func RolesToPb(in map[string]Role) (map[string]pb.PathAccessRole, error) { roles := make(map[string]pb.PathAccessRole) for k, r := range in { var pr pb.PathAccessRole switch r { case None: pr = pb.PathAccessRole_PATH_ACCESS_ROLE_UNSPECIFIED case Reader: pr = pb.PathAccessRole_PATH_ACCESS_ROLE_READER case Writer: pr = pb.PathAccessRole_PATH_ACCESS_ROLE_WRITER case Admin: pr = pb.PathAccessRole_PATH_ACCESS_ROLE_ADMIN default: return nil, fmt.Errorf("unknown path access role %d", r) } roles[k] = pr } return roles, nil } // RolesFromPb maps protobuf type roles to native type roles. func RolesFromPb(in map[string]pb.PathAccessRole) (map[string]Role, error) { roles := make(map[string]Role) for k, pr := range in { if k != "*" { pk := &thread.Libp2pPubKey{} if err := pk.UnmarshalString(k); err != nil { return nil, fmt.Errorf("unmarshaling role public key: %s", err) } } var r Role switch pr { case pb.PathAccessRole_PATH_ACCESS_ROLE_UNSPECIFIED: r = None case pb.PathAccessRole_PATH_ACCESS_ROLE_READER: r = Reader case pb.PathAccessRole_PATH_ACCESS_ROLE_WRITER: r = Writer case pb.PathAccessRole_PATH_ACCESS_ROLE_ADMIN: r = Admin default: return nil, fmt.Errorf("unknown path access role %d", pr) } roles[k] = r } return roles, nil } ================================================ FILE: buckets/local/access.go ================================================ package local import ( "context" "encoding/json" "fmt" "github.com/textileio/go-threads/core/thread" "github.com/textileio/textile/v2/buckets" ) // PushPathAccessRoles updates path access roles by merging the pushed roles with existing roles // and returns the merged roles. // roles is a map of string marshaled public keys to path roles. A non-nil error is returned // if the map keys are not unmarshalable to public keys. // To delete a role for a public key, set its value to buckets.None. func (b *Bucket) PushPathAccessRoles( ctx context.Context, pth string, roles map[string]buckets.Role, ) (merged map[string]buckets.Role, err error) { ctx, err = b.Context(ctx) if err != nil { return } err = b.clients.Buckets.PushPathAccessRoles(ctx, b.Key(), pth, roles) if err != nil { return } return b.clients.Buckets.PullPathAccessRoles(ctx, b.Key(), pth) } // PullPathAccessRoles returns access roles for a path. func (b *Bucket) PullPathAccessRoles(ctx context.Context, pth string) (roles map[string]buckets.Role, err error) { ctx, err = b.Context(ctx) if err != nil { return } return b.clients.Buckets.PullPathAccessRoles(ctx, b.Key(), pth) } // PathInvite wraps information needed to collaborate on a bucket path. type PathInvite struct { Thread string `json:"thread"` Key string `json:"key"` Path string `json:"path"` } // SendPathInvite sends a message containing a bucket key and path, // which can be used to access a shared file / folder. func (b *Bucket) SendPathInvite(ctx context.Context, from thread.Identity, to thread.PubKey, pth string) error { if b.clients.Users == nil { return fmt.Errorf("hub is required to send invites") } thrd, err := b.Thread() if err != nil { return err } msg, err := json.Marshal(&PathInvite{ Thread: thrd.String(), Key: b.Key(), Path: pth, }) if err != nil { return err } _, err = b.clients.Users.SendMessage(ctx, from, to, msg) return err } ================================================ FILE: buckets/local/add.go ================================================ package local import ( "context" "fmt" "os" "path/filepath" "strings" "github.com/ipfs/go-cid" "github.com/ipfs/interface-go-ipfs-core/path" "github.com/textileio/textile/v2/api/bucketsd/client" "golang.org/x/sync/errgroup" ) // AddRemoteCid stages the Unixfs dag at cid in the local bucket, // optionally allowing the caller to select a merge strategy. func (b *Bucket) AddRemoteCid(ctx context.Context, c cid.Cid, dest string, opts ...AddOption) error { b.Lock() defer b.Unlock() ctx, err := b.Context(ctx) if err != nil { return err } args := &addOptions{} for _, opt := range opts { opt(args) } return b.mergeIpfsPath(ctx, path.IpfsPath(c), dest, args.merge, args.events) } func (b *Bucket) mergeIpfsPath( ctx context.Context, ipfsBasePth path.Path, dest string, merge SelectMergeFunc, events chan<- Event, ) error { ok, err := b.containsPath(dest) if err != nil { return err } else if !ok { return fmt.Errorf("destination %s is not in bucket path", dest) } folderReplace, toAdd, err := b.listMergePath(ctx, ipfsBasePth, "", dest, merge) if err != nil { return err } // Remove all the folders that were decided to be replaced. for _, fr := range folderReplace { if err := os.RemoveAll(fr); err != nil { return err } } // Add files that are missing, or were decided to be overwritten. if len(toAdd) > 0 { progress := handleAllPullProgress(toAdd, events) defer close(progress) eg, gctx := errgroup.WithContext(ctx) for _, o := range toAdd { o := o eg.Go(func() error { if gctx.Err() != nil { return nil } if err := os.Remove(o.path); err != nil && !os.IsNotExist(err) { return err } trimmedDest := strings.TrimPrefix(o.path, dest) return b.getIpfsFile( gctx, path.Join(ipfsBasePth, trimmedDest), o.path, o.size, o.cid, events, progress, ) }) } if err := eg.Wait(); err != nil { return err } } return nil } // listMergePath walks the local bucket and the remote IPFS UnixFS DAG asking // the client if wants to (replace, merge, ignore) matching folders, and if wants // to (overwrite, ignore) matching files. Any non-matching files or folders in the // IPFS UnixFS DAG will be added locally. // The first return value is a slice of paths of folders that were decided to be // replaced completely (not merged). The second return value are a list of files // that should be added locally. If one of them exist, can be understood that should // be overwritten. func (b *Bucket) listMergePath( ctx context.Context, ipfsBasePth path.Path, ipfsRelPath, dest string, merge SelectMergeFunc, ) ([]string, []object, error) { // List remote IPFS UnixFS path level rep, err := b.clients.Buckets.ListIpfsPath(ctx, path.Join(ipfsBasePth, ipfsRelPath)) if err != nil { return nil, nil, err } // If its a dir, ask if should be ignored, replaced, or merged. if rep.Item.IsDir { var replacedFolders []string var toAdd []object var folderExists bool localFolderPath := filepath.Join(dest, ipfsRelPath) if _, err := os.Stat(localFolderPath); err == nil { folderExists = true } if folderExists && merge != nil { ms, err := merge(fmt.Sprintf("Merge strategy for %s", localFolderPath), true) if err != nil { return nil, nil, err } switch ms { case Skip: return nil, nil, nil case Merge: break case Replace: replacedFolders = append(replacedFolders, localFolderPath) merge = nil } } for _, i := range rep.Item.Items { nestFolderReplace, nestAdd, err := b.listMergePath( ctx, ipfsBasePth, filepath.Join(ipfsRelPath, i.Name), dest, merge, ) if err != nil { return nil, nil, err } replacedFolders = append(replacedFolders, nestFolderReplace...) toAdd = append(toAdd, nestAdd...) } return replacedFolders, toAdd, nil } // If it's a file and it exists, confirm whether or not it should be overwritten. pth := filepath.Join(dest, ipfsRelPath) if _, err := os.Stat(pth); err == nil && merge != nil { ms, err := merge(fmt.Sprintf("Overwrite %s", pth), false) if err != nil { return nil, nil, err } switch ms { case Skip: return nil, nil, nil case Merge: return nil, nil, fmt.Errorf("cannot merge files") case Replace: break } } else if err != nil && !os.IsNotExist(err) { return nil, nil, err } c, err := cid.Decode(rep.Item.Cid) if err != nil { return nil, nil, err } o := object{path: pth, name: rep.Item.Name, size: rep.Item.Size, cid: c} return nil, []object{o}, nil } func (b *Bucket) getIpfsFile( ctx context.Context, ipfsPath path.Path, filePath string, size int64, c cid.Cid, events chan<- Event, progress chan<- int64, ) error { if err := os.MkdirAll(filepath.Dir(filePath), os.ModePerm); err != nil { return err } file, err := os.Create(filePath) if err != nil { return err } defer file.Close() prog, finish := handlePullProgress(progress, size) defer finish() if err := b.clients.Buckets.PullIpfsPath(ctx, ipfsPath, file, client.WithProgress(prog)); err != nil { return err } if events != nil { events <- Event{ Type: EventFileComplete, Path: filePath, Cid: c, Size: size, Complete: size, } } return nil } ================================================ FILE: buckets/local/archive.go ================================================ package local import ( "context" "fmt" "strings" powPb "github.com/textileio/powergate/v2/api/gen/powergate/user/v1" "github.com/textileio/textile/v2/api/bucketsd/client" pb "github.com/textileio/textile/v2/api/bucketsd/pb" ) // ArchiveConfig is the desired state of a Cid in the Filecoin network. type ArchiveConfig struct { // RepFactor (ignored in Filecoin mainnet) indicates the desired amount of active deals // with different miners to store the data. While making deals // the other attributes of FilConfig are considered for miner selection. RepFactor int `json:"repFactor"` // DealMinDuration indicates the duration to be used when making new deals. DealMinDuration int64 `json:"dealMinDuration"` // ExcludedMiners (ignored in Filecoin mainnet) is a set of miner addresses won't be ever be selected // when making new deals, even if they comply to other filters. ExcludedMiners []string `json:"excludedMiners"` // TrustedMiners (ignored in Filecoin mainnet) is a set of miner addresses which will be forcibly used // when making new deals. An empty/nil list disables this feature. TrustedMiners []string `json:"trustedMiners"` // CountryCodes (ignored in Filecoin mainnet) indicates that new deals should select miners on specific // countries. CountryCodes []string `json:"countryCodes"` // Renew indicates deal-renewal configuration. Renew ArchiveRenew `json:"renew"` // MaxPrice is the maximum price that will be spent to store the data MaxPrice uint64 `json:"maxPrice"` // FastRetrieval indicates that created deals should enable the // fast retrieval feature. FastRetrieval bool `json:"fastRetrieval"` // DealStartOffset indicates how many epochs in the future impose a // deadline to new deals being active on-chain. This value might influence // if miners accept deals, since they should seal fast enough to satisfy // this constraint. DealStartOffset int64 `json:"dealStartOffset"` // verifiedDeal indicates that new deals will be verified-deals, using // available data-cap from the wallet address. VerifiedDeal bool `json:"verifiedDeal"` } // ArchiveRenew contains renew configuration for a ArchiveConfig. type ArchiveRenew struct { // Enabled indicates that deal-renewal is enabled for this Cid. Enabled bool `json:"enabled"` // Threshold indicates how many epochs before expiring should trigger // deal renewal. e.g: 100 epoch before expiring. Threshold int `json:"threshold"` } // DefaultArchiveConfig gets the default archive config for the specified Bucket. func (b *Bucket) DefaultArchiveConfig(ctx context.Context) (config ArchiveConfig, err error) { b.Lock() defer b.Unlock() ctx, err = b.Context(ctx) if err != nil { return } pbConfig, err := b.clients.Buckets.DefaultArchiveConfig(ctx, b.Key()) if err != nil { return } if pbConfig == nil { return config, fmt.Errorf("no archive config in response") } config = fromPbArchiveConfig(pbConfig) return } // Addresses returns information about the Filecoin address associated with the account. func (b *Bucket) Addresses(ctx context.Context) (*powPb.AddressesResponse, error) { b.Lock() defer b.Unlock() ctx, err := b.Context(ctx) if err != nil { return nil, fmt.Errorf("getting context: %s", err) } ar, err := b.clients.Filecoin.Addresses(ctx) if err != nil { return nil, fmt.Errorf("getting addresses: %s", err) } return ar, nil } func fromPbArchiveConfig(pbConfig *pb.ArchiveConfig) ArchiveConfig { config := ArchiveConfig{ RepFactor: int(pbConfig.RepFactor), DealMinDuration: pbConfig.DealMinDuration, ExcludedMiners: pbConfig.ExcludedMiners, TrustedMiners: pbConfig.TrustedMiners, CountryCodes: pbConfig.CountryCodes, MaxPrice: pbConfig.MaxPrice, FastRetrieval: pbConfig.FastRetrieval, DealStartOffset: pbConfig.DealStartOffset, VerifiedDeal: pbConfig.VerifiedDeal, } if pbConfig.Renew != nil { config.Renew = ArchiveRenew{ Enabled: pbConfig.Renew.Enabled, Threshold: int(pbConfig.Renew.Threshold), } } return config } // SetDefaultArchiveConfig sets the default archive config for the specified Bucket. func (b *Bucket) SetDefaultArchiveConfig(ctx context.Context, config ArchiveConfig) (err error) { b.Lock() defer b.Unlock() ctx, err = b.Context(ctx) if err != nil { return } err = b.clients.Buckets.SetDefaultArchiveConfig(ctx, b.Key(), toPbArchiveConfig(config)) return } func toPbArchiveConfig(config ArchiveConfig) *pb.ArchiveConfig { return &pb.ArchiveConfig{ RepFactor: int32(config.RepFactor), DealMinDuration: config.DealMinDuration, ExcludedMiners: config.ExcludedMiners, TrustedMiners: config.TrustedMiners, CountryCodes: config.CountryCodes, Renew: &pb.ArchiveRenew{ Enabled: config.Renew.Enabled, Threshold: int32(config.Renew.Threshold), }, MaxPrice: config.MaxPrice, FastRetrieval: config.FastRetrieval, DealStartOffset: config.DealStartOffset, VerifiedDeal: config.VerifiedDeal, } } type archiveRemoteOptions struct { archiveConfig *ArchiveConfig skipAutomaticVerifiedDeal bool } type ArchiveRemoteOption func(*archiveRemoteOptions) // WithArchiveConfig allows you to provide a custom ArchiveConfig for a single call to ArchiveRemote. func WithArchiveConfig(config ArchiveConfig) ArchiveRemoteOption { return func(opts *archiveRemoteOptions) { opts.archiveConfig = &config } } // WithSkipAutomaticVerifiedDeal allows to skip backend logic to automatically set // the verified deal flag for making the archive. func WithSkipAutomaticVerifiedDeal(enabled bool) ArchiveRemoteOption { return func(opts *archiveRemoteOptions) { opts.skipAutomaticVerifiedDeal = enabled } } // ArchiveRemote requests an archive of the current remote bucket. func (b *Bucket) ArchiveRemote(ctx context.Context, opts ...ArchiveRemoteOption) error { b.Lock() defer b.Unlock() options := &archiveRemoteOptions{} for _, opt := range opts { opt(options) } var clientOpts []client.ArchiveOption if options.archiveConfig != nil { clientOpts = append(clientOpts, client.WithArchiveConfig(toPbArchiveConfig(*options.archiveConfig))) } if options.skipAutomaticVerifiedDeal { clientOpts = append(clientOpts, client.WithSkipAutomaticVerifiedDeal(true)) } ctx, err := b.Context(ctx) if err != nil { return err } return b.clients.Buckets.Archive(ctx, b.Key(), clientOpts...) } // ArchiveStatusMessage is used to wrap an archive status message. type ArchiveStatusMessage struct { Type ArchiveMessageType Message string Error error InactivityClose bool } // ArchiveMessageType is the type of status message. type ArchiveMessageType int const ( // ArchiveMessage accompanies an informational message. ArchiveMessage ArchiveMessageType = iota // ArchiveError accompanies an error state. ArchiveError ) // Archives returns information about current and historical archives. func (b *Bucket) Archives(ctx context.Context) (*pb.ArchivesResponse, error) { b.Lock() defer b.Unlock() ctx, err := b.Context(ctx) if err != nil { return nil, err } key := b.Key() return b.clients.Buckets.Archives(ctx, key) } // ArchiveWatch delivers messages about the archive status. func (b *Bucket) ArchiveWatch(ctx context.Context) (<-chan ArchiveStatusMessage, error) { b.Lock() defer b.Unlock() ctx, err := b.Context(ctx) if err != nil { return nil, err } key := b.Key() msgs := make(chan ArchiveStatusMessage) go func() { defer close(msgs) ch := make(chan string) wCtx, cancel := context.WithCancel(ctx) defer cancel() var err error go func() { err = b.clients.Buckets.ArchiveWatch(wCtx, key, ch) close(ch) }() for msg := range ch { msgs <- ArchiveStatusMessage{Type: ArchiveMessage, Message: "\t " + msg} } if err != nil { if strings.Contains(err.Error(), "RST_STREAM") { msgs <- ArchiveStatusMessage{Type: ArchiveError, InactivityClose: true} return } msgs <- ArchiveStatusMessage{Type: ArchiveError, Error: err} } }() return msgs, nil } ================================================ FILE: buckets/local/bucket.go ================================================ package local import ( "context" "errors" "fmt" "io" "os" "path/filepath" "strings" "sync" "time" "github.com/ipfs/go-cid" "github.com/ipfs/interface-go-ipfs-core/options" "github.com/ipfs/interface-go-ipfs-core/path" "github.com/textileio/go-threads/core/thread" "github.com/textileio/go-threads/db" pb "github.com/textileio/textile/v2/api/bucketsd/pb" "github.com/textileio/textile/v2/api/common" "github.com/textileio/textile/v2/buckets" "github.com/textileio/textile/v2/cmd" "github.com/textileio/textile/v2/util" ) var ( // ErrUpToDate indicates there are no locally staged changes. ErrUpToDate = errors.New("everything up-to-date") // ErrAborted indicates the caller aborted the operation via a confirm function. ErrAborted = errors.New("operation aborted by caller") ) // Event describes a path event that occurred. // These events can be used to display live info during path uploads/downloads. type Event struct { // Type of event. Type EventType // Path relative to the bucket's cwd. Path string // Cid of associated Path. Cid cid.Cid // Size of the total operation or completed file. Size int64 // Complete is the amount of Size that is complete (useful for upload/download progress). Complete int64 } // EventType is the type of path event. type EventType int const ( // EventProgress indicates a file has made some progress uploading/downloading. EventProgress EventType = iota // EventFileComplete indicates a file has completed uploading/downloading. EventFileComplete // EventFileRemoved indicates a file has been removed. EventFileRemoved ) // Bucket is a local-first object storage and synchronization model built // on ThreadDB, IPFS, and Filecoin. // A bucket represents a dynamic Unixfs directory with auto-updating // IPNS resolution, website rendering, and Filecoin archivng. // // Private buckets are fully encrypted using AES-CTR + AES-512 HMAC (see https://github.com/textileio/dcrypto for more). // Both Unixfs node metadata (size, links, etc.) and node data (files) are obfuscated by encryption. // The AES and HMAC keys used for bucket encryption are stored in the ThreadDB collection instance. // This setup allows for bucket access to inherit from thread ACL rules. // // Additionally, files can be further protected by password-based encryption before they are added to the bucket. // See EncryptLocalPath and DecryptLocalPath for more. type Bucket struct { cwd string conf *cmd.Config clients *cmd.Clients auth AuthFunc repo *Repo links *Links retrID string pushBlock chan struct{} sync.Mutex } // Key returns the bucket's unique key identifier, which is also an IPNS public key. func (b *Bucket) Key() string { return b.conf.Viper.GetString("key") } // Thread returns the bucket's thread ID. func (b *Bucket) Thread() (id thread.ID, err error) { ids := b.conf.Viper.GetString("thread") if ids == "" { return thread.Undef, nil } return thread.Decode(ids) } // Path returns the bucket's top-level local filesystem path. func (b *Bucket) Path() (string, error) { conf := b.conf.Viper.ConfigFileUsed() if conf == "" { return b.cwd, nil } return filepath.Dir(filepath.Dir(conf)), nil } // Cwd returns the bucket's local current working directory. func (b *Bucket) Cwd() string { return b.cwd } // ConfDir returns the bucket's local configuration directory path. func (b *Bucket) ConfDir() string { return b.conf.Dir } // Context returns an authorized context for the bucket. func (b *Bucket) Context(ctx context.Context) (context.Context, error) { id, err := b.Thread() if err != nil { return nil, err } ctx = common.NewThreadIDContext(ctx, id) if b.auth != nil { ctx = b.auth(ctx) } return ctx, nil } // LocalSize returns the cumalative size of the bucket's local files. func (b *Bucket) LocalSize() (int64, error) { if b.repo == nil { return 0, nil } bp, err := b.Path() if err != nil { return 0, err } ig, err := IgnoreFile(bp) if err != nil { return 0, err } var size int64 err = filepath.Walk(bp, func(n string, info os.FileInfo, err error) error { if err != nil { return fmt.Errorf("getting fileinfo of %s: %s", n, err) } if !info.IsDir() { f := strings.TrimPrefix(n, bp+string(os.PathSeparator)) if Ignore(n, ig) || (strings.HasPrefix(f, b.conf.Dir) && f != buckets.SeedName) { return nil } size += info.Size() } return err }) return size, err } // RetrievalID returns the retrieval-id if the bucket creation // was bootstrapped from a Filecoin archive. It only has a non-empty // value in this use-case. func (b *Bucket) RetrievalID() string { return b.retrID } // Info wraps info about a bucket. type Info struct { Thread thread.ID `json:"thread"` Key string `json:"key"` Owner string `json:"owner,omitempty"` Name string `json:"name,omitempty"` Version int `json:"version"` LinkKey string `json:"link_key,omitempty"` Path Path `json:"path"` Metadata map[string]Metadata `json:"metadata,omitempty"` Archives *Archives `json:"archives,omitempty"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // Path wraps path.Resolved so it can be JSON-marshalable. type Path struct { path.Resolved } func (p Path) MarshalJSON() ([]byte, error) { return []byte("\"" + p.String() + "\""), nil } // Metadata wraps metadata about a bucket item. type Metadata struct { Key string `json:"key,omitempty"` Roles map[string]buckets.Role `json:"roles,omitempty"` UpdatedAt time.Time `json:"updated_at"` } // Archives contains info about bucket Filecoin archives. type Archives struct { Current Archive `json:"current"` History []Archive `json:"history,omitempty"` } // Archive is a single Filecoin archive containing a list of deals. type Archive struct { Cid string `json:"cid"` Deals []Deal `json:"deals"` } // Deal contains info about an archive's Filecoin deal. type Deal struct { ProposalCid string `json:"proposal_cid"` Miner string `json:"miner"` } // Info returns info about a bucket from the remote. func (b *Bucket) Info(ctx context.Context) (info Info, err error) { ctx, err = b.Context(ctx) if err != nil { return } rep, err := b.clients.Buckets.Root(ctx, b.Key()) if err != nil { return } return pbRootToInfo(rep.Root) } func pbRootToInfo(r *pb.Root) (info Info, err error) { name := "unnamed" if r.Name != "" { name = r.Name } id, err := thread.Decode(r.Thread) if err != nil { return } pth, err := util.NewResolvedPath(r.Path) if err != nil { return } md, err := pbMetadataToInfo(r.PathMetadata) if err != nil { return } return Info{ Thread: id, Key: r.Key, Owner: r.Owner, Name: name, Version: int(r.Version), LinkKey: r.LinkKey, Path: Path{pth}, Metadata: md, Archives: pbArchivesToInfo(r.Archives), CreatedAt: time.Unix(0, r.CreatedAt), UpdatedAt: time.Unix(0, r.UpdatedAt), }, nil } func pbMetadataToInfo(pbm map[string]*pb.Metadata) (map[string]Metadata, error) { if pbm == nil { return nil, nil } md := make(map[string]Metadata) for p, m := range pbm { roles, err := buckets.RolesFromPb(m.Roles) if err != nil { return nil, err } md[p] = Metadata{ Key: m.Key, Roles: roles, UpdatedAt: time.Unix(0, m.UpdatedAt), } } return md, nil } func pbArchivesToInfo(pba *pb.Archives) *Archives { if pba == nil || pba.Current.Cid == "" { return nil } archives := &Archives{ Current: Archive{ Cid: pba.Current.Cid, Deals: pbDealsToInfo(pba.Current.DealInfo), }, } if len(pba.History) == 0 { return archives } archives.History = make([]Archive, len(pba.History)) for i, a := range pba.History { archives.History[i] = Archive{ Cid: a.Cid, Deals: pbDealsToInfo(a.DealInfo), } } return archives } func pbDealsToInfo(pbd []*pb.DealInfo) []Deal { deals := make([]Deal, len(pbd)) for i, d := range pbd { deals[i] = Deal{ ProposalCid: d.ProposalCid, Miner: d.Miner, } } return deals } // Roots wraps local and remote root cids. // If the bucket is not private (encrypted), these will be the same. type Roots struct { Local cid.Cid `json:"local"` Remote cid.Cid `json:"remote"` } // Roots returns the bucket's current local and remote root cids. func (b *Bucket) Roots(ctx context.Context) (roots Roots, err error) { var lc, rc cid.Cid if b.repo != nil { lc, rc, err = b.repo.Root() if err != nil { return } } if !rc.Defined() { rc, err = b.getRemoteRoot(ctx) if err != nil { return } } return Roots{Local: lc, Remote: rc}, nil } // Links wraps remote link info for a bucket. type Links struct { // URL is the thread URL, which maps to a ThreadDB collection instance. URL string `json:"url"` // WWW is the URL at which the bucket will be rendered as a website (requires remote DNS configuration). WWW string `json:"www"` // IPNS is the bucket IPNS address. IPNS string `json:"ipns"` } // RemoteLinks returns the remote links for the bucket. func (b *Bucket) RemoteLinks(ctx context.Context, pth string) (links Links, err error) { if b.links != nil { return *b.links, nil } ctx, err = b.Context(ctx) if err != nil { return } res, err := b.clients.Buckets.Links(ctx, b.Key(), pth) if err != nil { return } links = Links{URL: res.Url, WWW: res.Www, IPNS: res.Ipns} b.links = &links return links, err } // DBInfo returns info about the bucket's ThreadDB. // This info can be used to add replicas or additional peers to the bucket. func (b *Bucket) DBInfo(ctx context.Context) (info db.Info, cc db.CollectionConfig, err error) { ctx, err = b.Context(ctx) if err != nil { return } id, err := b.Thread() if err != nil { return } info, err = b.clients.Threads.GetDBInfo(ctx, id) if err != nil { return } cc, err = b.clients.Threads.GetCollectionInfo(ctx, id, buckets.CollectionName) if err != nil { return } return info, cc, nil } // CatRemotePath writes the content of the remote path to writer. func (b *Bucket) CatRemotePath(ctx context.Context, pth string, w io.Writer) error { ctx, err := b.Context(ctx) if err != nil { return err } return b.clients.Buckets.PullPath(ctx, b.Key(), pth, w) } // Destroy completely deletes the local and remote bucket. func (b *Bucket) Destroy(ctx context.Context) error { b.Lock() defer b.Unlock() bp, err := b.Path() if err != nil { return err } ctx, err = b.Context(ctx) if err != nil { return err } if err := b.clients.Buckets.Remove(ctx, b.Key()); err != nil { cmd.Fatal(err) } _ = os.RemoveAll(filepath.Join(bp, buckets.SeedName)) _ = os.RemoveAll(filepath.Join(bp, b.conf.Dir)) return nil } func (b *Bucket) loadLocalRepo(ctx context.Context, pth, name string, setCidVersion bool) error { r, err := NewRepo(pth, name, options.BalancedLayout) if err != nil { return err } b.repo = r if setCidVersion { if err = b.setRepoCidVersion(ctx); err != nil { return err } } return nil } func (b *Bucket) setRepoCidVersion(ctx context.Context) error { if b.repo == nil { return nil } r, err := b.Roots(ctx) if err != nil { return err } b.repo.SetCidVersion(int(r.Remote.Version())) return nil } func (b *Bucket) containsPath(pth string) (c bool, err error) { bp, err := b.Path() if err != nil { return } ar, err := filepath.Abs(bp) if err != nil { return } ap, err := filepath.Abs(pth) if err != nil { return } return strings.HasPrefix(ap, ar), nil } func (b *Bucket) getRemoteRoot(ctx context.Context) (cid.Cid, error) { ctx, err := b.Context(ctx) if err != nil { return cid.Undef, err } rr, err := b.clients.Buckets.Root(ctx, b.Key()) if err != nil { return cid.Undef, err } rp, err := util.NewResolvedPath(rr.Root.Path) if err != nil { return cid.Undef, err } return rp.Cid(), nil } ================================================ FILE: buckets/local/bucket_test.go ================================================ package local_test import ( "bytes" "context" "crypto/rand" "errors" "fmt" "io" "os" "path/filepath" "sync" "testing" "time" du "github.com/ipfs/go-merkledag/dagutils" "github.com/libp2p/go-libp2p-core/crypto" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/textileio/dcrypto" "github.com/textileio/go-threads/core/thread" "github.com/textileio/go-threads/db" tutil "github.com/textileio/go-threads/util" "github.com/textileio/textile/v2/api/apitest" bucks "github.com/textileio/textile/v2/buckets" . "github.com/textileio/textile/v2/buckets/local" "github.com/textileio/textile/v2/cmd" ) func TestBucket(t *testing.T) { buckets := setup(t) conf := getConf(t, buckets) buck, err := buckets.NewBucket(context.Background(), conf, WithName("bucky")) require.NoError(t, err) t.Run("Key", func(t *testing.T) { assert.NotEmpty(t, buck.Key()) }) t.Run("Thread", func(t *testing.T) { tid, err := buck.Thread() require.NoError(t, err) assert.Equal(t, conf.Thread, tid) }) t.Run("Path", func(t *testing.T) { bp, err := buck.Path() require.NoError(t, err) assert.Equal(t, conf.Path, bp) }) t.Run("LocalSize", func(t *testing.T) { addRandomFile(t, buck, "file", 256) addRandomFile(t, buck, "dir/file", 256) size, err := buck.LocalSize() require.NoError(t, err) assert.Equal(t, 512+32, int(size)) // Account for seed size }) t.Run("Info", func(t *testing.T) { info, err := buck.Info(context.Background()) require.NoError(t, err) assert.NotEmpty(t, info.Key) assert.Equal(t, info.Name, "bucky") assert.NotEmpty(t, info.Path) assert.Equal(t, info.Thread, conf.Thread) assert.NotEmpty(t, info.CreatedAt) assert.NotEmpty(t, info.UpdatedAt) }) t.Run("Roots", func(t *testing.T) { roots, err := buck.Roots(context.Background()) require.NoError(t, err) assert.True(t, roots.Local.Defined()) assert.True(t, roots.Remote.Defined()) }) t.Run("RemoteLinks", func(t *testing.T) { links, err := buck.RemoteLinks(context.Background(), "") require.NoError(t, err) assert.NotEmpty(t, links.URL) assert.NotEmpty(t, links.IPNS) }) t.Run("DBInfo", func(t *testing.T) { dbinfo, cc, err := buck.DBInfo(context.Background()) require.NoError(t, err) assert.True(t, dbinfo.Key.Defined()) assert.NotEmpty(t, dbinfo.Addrs) assert.NotEmpty(t, cc.Name) assert.NotEmpty(t, cc.Schema) assert.NotEmpty(t, cc.WriteValidator) assert.NotEmpty(t, cc.ReadFilter) assert.NotEmpty(t, cc.Indexes) }) t.Run("Destroy", func(t *testing.T) { err = buck.Destroy(context.Background()) require.NoError(t, err) // Ensure the local bucket was removed _, err = buckets.GetLocalBucket(context.Background(), conf) require.Error(t, err) // Ensure the remote bucket was removed list, err := buckets.RemoteBuckets(context.Background(), thread.Undef) require.NoError(t, err) assert.Len(t, list, 0) }) t.Run("EncryptLocalPath", func(t *testing.T) { fpth := addRandomFile(t, buck, "plaintext", 1024) key, err := dcrypto.NewKey() require.NoError(t, err) var buf bytes.Buffer err = buck.EncryptLocalPath(fpth, key, &buf) require.NoError(t, err) }) t.Run("DecryptLocalPath", func(t *testing.T) { fpth := addRandomFile(t, buck, "plaintext", 1024) cipher := filepath.Join(filepath.Dir(fpth), "ciphertext") f, err := os.Create(cipher) require.NoError(t, err) key, err := dcrypto.NewKey() require.NoError(t, err) err = buck.EncryptLocalPath(fpth, key, f) require.NoError(t, err) f.Close() var buf bytes.Buffer err = buck.DecryptLocalPath(cipher, []byte("badpass"), &buf) require.Error(t, err) err = buck.DecryptLocalPath(cipher, key, &buf) require.NoError(t, err) assert.Equal(t, 1024, buf.Len()) }) t.Run("EncryptLocalPathWithPassword", func(t *testing.T) { fpth := addRandomFile(t, buck, "plaintext", 1024) var buf bytes.Buffer err = buck.EncryptLocalPathWithPassword(fpth, "shhhhh!", &buf) require.NoError(t, err) }) t.Run("DecryptLocalPathWithPassword", func(t *testing.T) { fpth := addRandomFile(t, buck, "plaintext", 1024) cipher := filepath.Join(filepath.Dir(fpth), "ciphertext") f, err := os.Create(cipher) require.NoError(t, err) err = buck.EncryptLocalPathWithPassword(fpth, "shhhhh!", f) require.NoError(t, err) f.Close() var buf bytes.Buffer err = buck.DecryptLocalPathWithPassword(cipher, "badpass", &buf) require.Error(t, err) err = buck.DecryptLocalPathWithPassword(cipher, "shhhhh!", &buf) require.NoError(t, err) assert.Equal(t, 1024, buf.Len()) }) } func TestBucket_PushLocal(t *testing.T) { buckets := setup(t) buck, err := buckets.NewBucket(context.Background(), getConf(t, buckets)) require.NoError(t, err) _, err = buck.PushLocal(context.Background()) require.Error(t, err) assert.True(t, errors.Is(err, ErrUpToDate)) addRandomFile(t, buck, "file", 1024) roots, err := buck.PushLocal(context.Background()) require.NoError(t, err) assert.True(t, roots.Local.Defined()) assert.True(t, roots.Remote.Defined()) _, err = buck.PushLocal(context.Background()) require.Error(t, err) assert.True(t, errors.Is(err, ErrUpToDate)) } func TestBucket_PullRemote(t *testing.T) { buckets := setup(t) buck, err := buckets.NewBucket(context.Background(), getConf(t, buckets)) require.NoError(t, err) _, err = buck.PullRemote(context.Background()) require.Error(t, err) assert.True(t, errors.Is(err, ErrUpToDate)) fpth := addRandomFile(t, buck, "dir/file", 1024) _, err = buck.PushLocal(context.Background()) require.NoError(t, err) // Delete the file locally err = os.RemoveAll(fpth) require.NoError(t, err) roots, err := buck.PullRemote(context.Background()) require.NoError(t, err) assert.True(t, roots.Local.Defined()) assert.True(t, roots.Remote.Defined()) // The local removal should be maintained diff, err := buck.DiffLocal() require.NoError(t, err) assert.Len(t, diff, 1) if len(diff) > 0 { assert.Equal(t, diff[0].Type, du.Remove) } // Pulling hard should reset the local to the exact state of the remote _, err = buck.PullRemote(context.Background(), WithHard(true)) require.NoError(t, err) _, err = buck.PullRemote(context.Background()) require.Error(t, err) assert.True(t, errors.Is(err, ErrUpToDate)) // Create another bucket to test an edge case where, // 1. A file is removed from the remote via local bucket 1 // 2. The same file is modified in local bucket 2 // 3. Local bucket 2 pulls hard on the remote // 4. The bucket should only report 1 removal event, not one from the remote // and one from the removal of the local change. conf2 := Config{Path: newDir(t)} conf2.Key = buck.Key() conf2.Thread, err = buck.Thread() require.NoError(t, err) _, err = buckets.NewBucket(context.Background(), conf2) require.NoError(t, err) // Use a bucket from a nested folder to test if the relative path matching is working buck2, err := buckets.GetLocalBucket(context.Background(), Config{Path: filepath.Join(conf2.Path, "dir")}) require.NoError(t, err) // Delete the file locally from the first bucket err = os.RemoveAll(fpth) require.NoError(t, err) _, err = buck.PushLocal(context.Background()) require.NoError(t, err) // Stage a modification to the same file in the second bucket addRandomFile(t, buck2, "dir/file", 1024) // Pull the remote, the local change should be cleared // with only one remove event events := make(chan Event) defer close(events) ec := &eventCollector{} go ec.collect(events) _, err = buck2.PullRemote(context.Background(), WithHard(true), WithEvents(events)) require.NoError(t, err) ec.check(t, 0, 1) } func TestBucket_AddRemoteCid(t *testing.T) { buckets := setup(t) conf := getConf(t, buckets) buck, err := buckets.NewBucket(context.Background(), conf) require.NoError(t, err) pth := createIpfsFolder(t) err = buck.AddRemoteCid(context.Background(), pth.Cid(), conf.Path) require.NoError(t, err) bp, err := buck.Path() require.NoError(t, err) _, err = os.Stat(filepath.Join(bp, "file1.txt")) require.NoError(t, err) _, err = os.Stat(filepath.Join(bp, "folder1", "file2.txt")) require.NoError(t, err) } func TestBucket_RemotePaths(t *testing.T) { buckets := setup(t) buck, err := buckets.NewBucket(context.Background(), getConf(t, buckets)) require.NoError(t, err) t.Run("ListRemotePath", func(t *testing.T) { items, err := buck.ListRemotePath(context.Background(), "") require.NoError(t, err) assert.Len(t, items, 1) addRandomFile(t, buck, "dir/file", 1024) _, err = buck.PushLocal(context.Background()) require.NoError(t, err) items, err = buck.ListRemotePath(context.Background(), "") require.NoError(t, err) assert.Len(t, items, 2) items, err = buck.ListRemotePath(context.Background(), "dir") require.NoError(t, err) assert.Len(t, items, 1) }) t.Run("CatRemotePath", func(t *testing.T) { var buf bytes.Buffer err = buck.CatRemotePath(context.Background(), "dir/file", &buf) require.NoError(t, err) assert.Equal(t, 1024, buf.Len()) }) t.Run("DecryptRemotePath", func(t *testing.T) { fpth := addRandomFile(t, buck, "plaintext", 1024) cipher := filepath.Join(filepath.Dir(fpth), "ciphertext") f, err := os.Create(cipher) require.NoError(t, err) defer f.Close() key, err := dcrypto.NewKey() require.NoError(t, err) err = buck.EncryptLocalPath(fpth, key, f) require.NoError(t, err) err = os.RemoveAll(fpth) require.NoError(t, err) _, err = buck.PushLocal(context.Background()) require.NoError(t, err) var buf2 bytes.Buffer err = buck.DecryptRemotePath(context.Background(), "ciphertext", []byte("badpass"), &buf2) require.Error(t, err) err = buck.DecryptRemotePath(context.Background(), "ciphertext", key, &buf2) require.NoError(t, err) assert.Equal(t, 1024, buf2.Len()) }) t.Run("DecryptRemotePathWithPassword", func(t *testing.T) { fpth := addRandomFile(t, buck, "plaintext", 1024) cipher := filepath.Join(filepath.Dir(fpth), "ciphertext") f, err := os.Create(cipher) require.NoError(t, err) defer f.Close() err = buck.EncryptLocalPathWithPassword(fpth, "shhhhh!", f) require.NoError(t, err) err = os.RemoveAll(fpth) require.NoError(t, err) _, err = buck.PushLocal(context.Background()) require.NoError(t, err) var buf2 bytes.Buffer err = buck.DecryptRemotePathWithPassword(context.Background(), "ciphertext", "badpass", &buf2) require.Error(t, err) err = buck.DecryptRemotePathWithPassword(context.Background(), "ciphertext", "shhhhh!", &buf2) require.NoError(t, err) assert.Equal(t, 1024, buf2.Len()) }) } func TestBucket_DiffLocal(t *testing.T) { buckets := setup(t) conf := getConf(t, buckets) buck, err := buckets.NewBucket(context.Background(), conf) require.NoError(t, err) addRandomFile(t, buck, "file1", 256) fpth := addRandomFile(t, buck, "folder/file2", 256) diff, err := buck.DiffLocal() require.NoError(t, err) assert.Len(t, diff, 2) assert.Equal(t, diff[0].Type, du.Add) // Test diff from a nested folder buck2, err := buckets.GetLocalBucket(context.Background(), Config{Path: filepath.Join(conf.Path, "folder")}) require.NoError(t, err) diff, err = buck2.DiffLocal() require.NoError(t, err) assert.Len(t, diff, 2) assert.Equal(t, diff[0].Type, du.Add) _, err = buck.PushLocal(context.Background()) require.NoError(t, err) diff, err = buck.DiffLocal() require.NoError(t, err) assert.Len(t, diff, 0) addRandomFile(t, buck, "file1", 256) diff, err = buck.DiffLocal() require.NoError(t, err) assert.Len(t, diff, 1) assert.Equal(t, diff[0].Type, du.Mod) _, err = buck.PushLocal(context.Background()) require.NoError(t, err) diff, err = buck.DiffLocal() require.NoError(t, err) assert.Len(t, diff, 0) err = os.RemoveAll(fpth) require.NoError(t, err) diff, err = buck.DiffLocal() require.NoError(t, err) assert.Len(t, diff, 1) assert.Equal(t, diff[0].Type, du.Remove) _, err = buck.PushLocal(context.Background()) require.NoError(t, err) diff, err = buck.DiffLocal() require.NoError(t, err) assert.Len(t, diff, 0) } func TestBucket_Watch(t *testing.T) { tconf := apitest.DefaultTextileConfig(t) tconf.Hub = false stopTextile1 := apitest.MakeTextileWithConfig(t, tconf, apitest.WithoutAutoShutdown()) target, err := tutil.TCPAddrFromMultiAddr(tconf.AddrAPI) require.NoError(t, err) clients := cmd.NewClients(target, false, "") buckets1 := NewBuckets(clients, DefaultConfConfig()) defer clients.Close() conf := getConf(t, buckets1) buck1, err := buckets1.NewBucket(context.Background(), conf) require.NoError(t, err) events := make(chan Event) defer close(events) ec := &eventCollector{} go ec.collect(events) ctx, cancel := context.WithCancel(context.Background()) defer cancel() var onlineStateCount, offlineStateCount int var wg sync.WaitGroup wg.Add(1) go func() { defer wg.Done() state, err := buck1.Watch(ctx, WithWatchEvents(events), WithOffline(true)) require.NoError(t, err) for s := range state { fmt.Println(fmt.Sprintf("received watch state: %s", s.State)) switch s.State { case cmd.Online: onlineStateCount++ case cmd.Offline: offlineStateCount++ } } }() // Add a file to the first bucket addRandomFile(t, buck1, "file1", 512) // Wait a sec while the watcher kicks off a watch cycle time.Sleep(time.Second * 5) // Watch should have handled the diff _, err = buck1.PushLocal(context.Background()) require.Error(t, err) assert.True(t, errors.Is(err, ErrUpToDate)) // Create the same bucket from a different daemon buckets2 := setup(t) tid, err := buck1.Thread() require.NoError(t, err) dbinfo, err := buckets1.Clients().Threads.GetDBInfo(context.Background(), tid) require.NoError(t, err) cc, err := buckets1.Clients().Threads.GetCollectionInfo(context.Background(), tid, bucks.CollectionName) require.NoError(t, err) err = buckets2.Clients().Threads.NewDBFromAddr( context.Background(), dbinfo.Addrs[0], dbinfo.Key, db.WithNewManagedName(dbinfo.Name), db.WithNewManagedCollections(cc), db.WithNewManagedBackfillBlock(true)) require.NoError(t, err) // Wait a sec while the bucket is backfilled time.Sleep(time.Second * 5) buck2, err := buckets2.NewBucket(context.Background(), Config{ Path: newDir(t), Key: buck1.Key(), Thread: tid, }) require.NoError(t, err) // Add another file to the second bucket addRandomFile(t, buck2, "file2", 512) _, err = buck2.PushLocal(context.Background()) require.NoError(t, err) // Wait a sec while the remote event is handled time.Sleep(time.Second * 5) // Watch should have handled the remote diff _, err = buck1.PullRemote(context.Background()) require.Error(t, err) assert.True(t, errors.Is(err, ErrUpToDate)) bp, err := buck1.Path() require.NoError(t, err) _, err = os.Stat(filepath.Join(bp, "file2")) require.NoError(t, err) ec.check(t, 2, 0) // Stop and restart the first bucket's remote stopTextile1() stopTextile1Again := apitest.MakeTextileWithConfig(t, tconf, apitest.WithoutAutoShutdown()) time.Sleep(time.Second * 10) // Wait a sec for good measure stopTextile1Again() cancel() // Stop watching wg.Wait() assert.Equal(t, 2, onlineStateCount) // 1 for the initial start, 1 for the restart assert.Greater(t, offlineStateCount, 0) // At least one, but could be more as watch retries } func TestBucket_AccessRoles(t *testing.T) { buckets := setup(t) buck, err := buckets.NewBucket(context.Background(), getConf(t, buckets)) require.NoError(t, err) addRandomFile(t, buck, "file", 1024) _, err = buck.PushLocal(context.Background()) require.NoError(t, err) roles, err := buck.PullPathAccessRoles(context.Background(), "file") require.NoError(t, err) assert.Len(t, roles, 0) _, rpk, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) reader := thread.NewLibp2pPubKey(rpk).String() _, wpk, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) writer := thread.NewLibp2pPubKey(wpk).String() all, err := buck.PushPathAccessRoles(context.Background(), "file", map[string]bucks.Role{ reader: bucks.Reader, writer: bucks.Writer, }) require.NoError(t, err) assert.Len(t, all, 2) assert.Equal(t, bucks.Reader, all[reader]) assert.Equal(t, bucks.Writer, all[writer]) all, err = buck.PushPathAccessRoles(context.Background(), "file", map[string]bucks.Role{ reader: bucks.None, }) require.NoError(t, err) assert.Len(t, all, 1) _, ok := all[reader] assert.False(t, ok) } func addRandomFile(t *testing.T, buck *Bucket, pth string, size int64) string { bp, err := buck.Path() require.NoError(t, err) name := filepath.Join(bp, pth) err = os.MkdirAll(filepath.Dir(name), os.ModePerm) require.NoError(t, err) fa, err := os.Create(filepath.Join(bp, pth)) require.NoError(t, err) defer fa.Close() _, err = io.CopyN(fa, rand.Reader, size) require.NoError(t, err) return name } ================================================ FILE: buckets/local/buckets.go ================================================ package local import ( "context" "errors" "os" "path/filepath" "github.com/ipfs/go-cid" "github.com/spf13/cobra" "github.com/textileio/go-threads/core/thread" "github.com/textileio/textile/v2/api/bucketsd/client" "github.com/textileio/textile/v2/api/common" "github.com/textileio/textile/v2/buckets" "github.com/textileio/textile/v2/cmd" "github.com/textileio/textile/v2/util" ) var ( // ErrNotABucket indicates the given path is not within a bucket. ErrNotABucket = errors.New("not a bucket (or any of the parent directories): .textile") // ErrBucketExists is used during initialization to indicate the path already contains a bucket. ErrBucketExists = errors.New("bucket is already initialized") // ErrThreadRequired indicates the operation requires a thread ID but none was given. ErrThreadRequired = errors.New("thread ID is required") flags = map[string]cmd.Flag{ "key": {Key: "key", DefValue: ""}, "thread": {Key: "thread", DefValue: ""}, } ) // DefaultConfConfig returns the default ConfConfig. func DefaultConfConfig() cmd.ConfConfig { return cmd.ConfConfig{ Dir: ".textile", Name: "config", Type: "yaml", EnvPrefix: "BUCK", } } // Buckets is used to create new individual buckets based on the provided clients and config. type Buckets struct { config cmd.ConfConfig clients *cmd.Clients auth AuthFunc } // NewBuckets creates Buckets from clients and config. func NewBuckets(clients *cmd.Clients, config cmd.ConfConfig) *Buckets { return &Buckets{clients: clients, config: config} } // AuthFunc is a function that's used to add additional context information // to the outgoing API requests. type AuthFunc func(context.Context) context.Context // NewBucketsWithAuth creates Buckets from clients and config and auth. func NewBucketsWithAuth(clients *cmd.Clients, config cmd.ConfConfig, auth AuthFunc) *Buckets { return &Buckets{clients: clients, config: config, auth: auth} } // Context gets a context wrapped with auth if it exists. func (b *Buckets) Context(ctx context.Context) context.Context { if b.auth != nil { ctx = b.auth(ctx) } return ctx } // Clients returns the underlying clients object. func (b *Buckets) Clients() *cmd.Clients { return b.clients } // Config contains details for a new local bucket. type Config struct { // Path is the path in which the new bucket should be created (required). Path string // Key is a key of an existing bucket (optional). // It's value may be inflated from a --key flag or {EnvPrefix}_KEY env variable. Key string // Thread is the thread ID of the target thread (required). // It's value may be inflated from a --thread flag or {EnvPrefix}_THREAD env variable. Thread thread.ID } // NewConfigFromCmd returns a config by inflating values from the given cobra command and path. // First, flags for "key" and "thread" are used if they exist. // If still unset, the env vars {EnvPrefix}_KEY and {EnvPrefix}_THREAD are used. func (b *Buckets) NewConfigFromCmd(c *cobra.Command, pth string) (conf Config, err error) { conf.Path = pth conf.Key = cmd.GetFlagOrEnvValue(c, "key", b.config.EnvPrefix) id := cmd.GetFlagOrEnvValue(c, "thread", b.config.EnvPrefix) if id != "" { conf.Thread, err = thread.Decode(id) if err != nil { return conf, err } } if conf.Key != "" && !conf.Thread.Defined() { return conf, ErrThreadRequired } return conf, nil } // NewBucket initializes a new bucket from the config. // A local blockstore is created that's used to sync local changes with the remote. // By default, this will be an unencrypted, unnamed, empty bucket. // The remote bucket will also be created if it doesn't already exist. // See NewOption for more info. // If the Unfreeze flag is set, the bucket gets created async thus `*Bucket` return // value will nil (i.e: the method return will be (nil, nil)) func (b *Buckets) NewBucket(ctx context.Context, conf Config, opts ...NewOption) (buck *Bucket, err error) { args := &newOptions{} for _, opt := range opts { opt(args) } // Ensure we're not going to overwrite an existing local config cwd, err := filepath.Abs(conf.Path) if err != nil { return } bc, found, err := b.config.NewConfig(cwd, flags, false) if err != nil { return } if found { return nil, ErrBucketExists } // Check config values if !conf.Thread.Defined() { return nil, ErrThreadRequired } bc.Viper.Set("thread", conf.Thread.String()) bc.Viper.Set("key", conf.Key) buck = &Bucket{ cwd: cwd, conf: bc, clients: b.clients, auth: b.auth, pushBlock: make(chan struct{}, 1), } ctx, err = buck.Context(ctx) if err != nil { return nil, err } initRemote := conf.Key == "" if initRemote { rep, err := b.clients.Buckets.Create( ctx, client.WithName(args.name), client.WithPrivate(args.private), client.WithCid(args.fromCid), client.WithUnfreeze(args.unfreeze)) if err != nil { return nil, err } // If we're unfreezing, we simply return since the // bucket will get created async if the Filecoin retrieval // is successful. The user will `[hub] buck init -e` in the future // to pull the new bucket. if args.unfreeze { buck.retrID = rep.RetrievalId return buck, nil } buck.conf.Viper.Set("key", rep.Root.Key) seed := filepath.Join(cwd, buckets.SeedName) file, err := os.Create(seed) if err != nil { return nil, err } _, err = file.Write(rep.Seed) if err != nil { file.Close() return nil, err } file.Close() if err = buck.loadLocalRepo(ctx, cwd, b.repoName(), false); err != nil { return nil, err } if err = buck.repo.SaveFile(ctx, seed, buckets.SeedName); err != nil { return nil, err } sc, err := cid.Decode(rep.SeedCid) if err != nil { return nil, err } if err = buck.repo.SetRemotePath(buckets.SeedName, sc); err != nil { return nil, err } rp, err := util.NewResolvedPath(rep.Root.Path) if err != nil { return nil, err } if err = buck.repo.SetRemotePath("", rp.Cid()); err != nil { return nil, err } buck.links = &Links{URL: rep.Links.Url, WWW: rep.Links.Www, IPNS: rep.Links.Ipns} } else { if err := buck.loadLocalRepo(ctx, cwd, b.repoName(), true); err != nil { return nil, err } r, err := buck.Roots(ctx) if err != nil { return nil, err } if err = buck.repo.SetRemotePath("", r.Remote); err != nil { return nil, err } if _, err = buck.RemoteLinks(ctx, ""); err != nil { return nil, err } } // Write the local config to disk dir := filepath.Join(cwd, buck.conf.Dir) if err = os.MkdirAll(dir, os.ModePerm); err != nil { return } config := filepath.Join(dir, buck.conf.Name+".yml") if err = buck.conf.Viper.WriteConfigAs(config); err != nil { return } cfile, err := filepath.Abs(config) if err != nil { return } buck.conf.Viper.SetConfigFile(cfile) // Pull remote bucket contents if !initRemote || args.fromCid.Defined() { if err := buck.repo.Save(ctx); err != nil { return nil, err } switch args.strategy { case Soft, Hybrid: diff, missing, remove, err := buck.diffPath(ctx, "", cwd, args.strategy == Hybrid) if err != nil { return nil, err } if err = stashChanges(diff); err != nil { return nil, err } if _, err = buck.handleChanges(ctx, missing, remove, args.events); err != nil { return nil, err } if err := buck.repo.Save(ctx); err != nil { return nil, err } if err = applyChanges(diff); err != nil { return nil, err } case Hard: if _, err := buck.getPath(ctx, "", cwd, nil, false, args.events); err != nil { return nil, err } if err := buck.repo.Save(ctx); err != nil { return nil, err } } } return buck, nil } func (b *Buckets) repoName() string { return filepath.Join(b.config.Dir, "repo") } // GetLocalBucket loads and returns the bucket at path if it exists. func (b *Buckets) GetLocalBucket(ctx context.Context, conf Config) (*Bucket, error) { cwd, err := filepath.Abs(conf.Path) if err != nil { return nil, err } bc, found, err := b.config.NewConfig(cwd, flags, false) if err != nil { return nil, err } if conf.Thread.Defined() { bc.Viper.Set("thread", conf.Thread.String()) } if conf.Key != "" { bc.Viper.Set("key", conf.Key) } if bc.Viper.Get("thread") == nil || bc.Viper.Get("key") == nil { return nil, ErrNotABucket } cmd.ExpandConfigVars(bc.Viper, bc.Flags) buck := &Bucket{ cwd: cwd, conf: bc, clients: b.clients, auth: b.auth, pushBlock: make(chan struct{}, 1), } if found { bp, err := buck.Path() if err != nil { return nil, err } if err = buck.loadLocalRepo(ctx, bp, b.repoName(), true); err != nil { return nil, err } } return buck, nil } // RemoteBuckets lists all existing remote buckets in the thread. // If id is not defined, this will return buckets from all threads. // In a hub context, this will only list buckets that the context // has access to. func (b *Buckets) RemoteBuckets(ctx context.Context, id thread.ID) (list []Info, err error) { ctx = b.Context(ctx) var threads []cmd.Thread if id.Defined() { threads = []cmd.Thread{{ID: id}} } else { threads = b.clients.ListThreads(ctx, true) } for _, t := range threads { ctx = common.NewThreadIDContext(ctx, t.ID) res, err := b.clients.Buckets.List(ctx) if err != nil { return nil, err } for _, root := range res.Roots { info, err := pbRootToInfo(root) if err != nil { return nil, err } list = append(list, info) } } return list, nil } ================================================ FILE: buckets/local/buckets_test.go ================================================ package local_test import ( "context" "io/ioutil" "os" "path/filepath" "sync" "testing" "time" ipfsfiles "github.com/ipfs/go-ipfs-files" httpapi "github.com/ipfs/go-ipfs-http-client" "github.com/ipfs/interface-go-ipfs-core/path" "github.com/spf13/cobra" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/textileio/go-threads/core/thread" tutil "github.com/textileio/go-threads/util" "github.com/textileio/textile/v2/api/apitest" . "github.com/textileio/textile/v2/buckets/local" "github.com/textileio/textile/v2/cmd" "github.com/textileio/textile/v2/util" ) func TestMain(m *testing.M) { cleanup := func() {} if os.Getenv("SKIP_SERVICES") != "true" { cleanup = apitest.StartServices() } exitVal := m.Run() cleanup() os.Exit(exitVal) } func TestBuckets_NewBucket(t *testing.T) { buckets := setup(t) t.Run("new bucket", func(t *testing.T) { conf := getConf(t, buckets) buck, err := buckets.NewBucket(context.Background(), conf) require.NoError(t, err) assert.NotEmpty(t, buck) info, err := buck.Info(context.Background()) require.NoError(t, err) assert.NotEmpty(t, info) reloaded, err := buckets.GetLocalBucket(context.Background(), conf) require.NoError(t, err) assert.NotEmpty(t, reloaded) }) t.Run("new named bucket", func(t *testing.T) { conf := getConf(t, buckets) buck, err := buckets.NewBucket(context.Background(), conf, WithName("bucky")) require.NoError(t, err) assert.NotEmpty(t, buck) info, err := buck.Info(context.Background()) require.NoError(t, err) assert.Equal(t, "bucky", info.Name) reloaded, err := buckets.GetLocalBucket(context.Background(), conf) require.NoError(t, err) assert.NotEmpty(t, reloaded) }) t.Run("new private bucket", func(t *testing.T) { conf := getConf(t, buckets) buck, err := buckets.NewBucket(context.Background(), conf, WithPrivate(true)) require.NoError(t, err) assert.NotEmpty(t, buck) info, err := buck.Info(context.Background()) require.NoError(t, err) assert.NotEmpty(t, info) reloaded, err := buckets.GetLocalBucket(context.Background(), conf) require.NoError(t, err) assert.NotEmpty(t, reloaded) }) t.Run("new bootstrapped bucket", func(t *testing.T) { conf := getConf(t, buckets) pth := createIpfsFolder(t) events := make(chan Event) defer close(events) ec := &eventCollector{} go ec.collect(events) buck, err := buckets.NewBucket(context.Background(), conf, WithCid(pth.Cid()), WithInitEvents(events)) require.NoError(t, err) assert.NotEmpty(t, buck) ec.check(t, 2, 0) info, err := buck.Info(context.Background()) require.NoError(t, err) assert.NotEmpty(t, info) items, err := buck.ListRemotePath(context.Background(), "") require.NoError(t, err) assert.Len(t, items, 3) bp, err := buck.Path() require.NoError(t, err) _, err = os.Stat(filepath.Join(bp, "file1.txt")) require.NoError(t, err) _, err = os.Stat(filepath.Join(bp, "folder1", "file2.txt")) require.NoError(t, err) reloaded, err := buckets.GetLocalBucket(context.Background(), conf) require.NoError(t, err) assert.NotEmpty(t, reloaded) }) t.Run("new bucket from existing", func(t *testing.T) { conf := getConf(t, buckets) buck, err := buckets.NewBucket(context.Background(), conf) require.NoError(t, err) assert.NotEmpty(t, buck) addRandomFile(t, buck, "file1", 256) addRandomFile(t, buck, "folder/file2", 256) _, err = buck.PushLocal(context.Background()) require.NoError(t, err) conf2 := Config{Path: newDir(t)} conf2.Key = buck.Key() conf2.Thread, err = buck.Thread() require.NoError(t, err) buck2, err := buckets.NewBucket(context.Background(), conf2) require.NoError(t, err) require.NotEmpty(t, buck2) items, err := buck2.ListRemotePath(context.Background(), "") require.NoError(t, err) assert.Len(t, items, 3) bp, err := buck.Path() require.NoError(t, err) _, err = os.Stat(filepath.Join(bp, "file1")) require.NoError(t, err) _, err = os.Stat(filepath.Join(bp, "folder", "file2")) require.NoError(t, err) reloaded, err := buckets.GetLocalBucket(context.Background(), conf) require.NoError(t, err) assert.NotEmpty(t, reloaded) }) t.Run("list remote buckets", func(t *testing.T) { list, err := buckets.RemoteBuckets(context.Background(), thread.Undef) require.NoError(t, err) assert.Len(t, list, 5) }) } func TestBuckets_NewConfigFromCmd(t *testing.T) { buckets := setup(t) t.Run("no flags", func(t *testing.T) { c := initCmd(t, buckets, "", thread.Undef, false, false) err := c.Execute() require.NoError(t, err) }) t.Run("with flags and no values", func(t *testing.T) { c := initCmd(t, buckets, "", thread.Undef, true, false) err := c.Execute() require.NoError(t, err) }) t.Run("with flags and default values", func(t *testing.T) { key := "mykey" tid := thread.NewIDV1(thread.Raw, 32) c := initCmd(t, buckets, key, tid, true, true) err := c.Execute() require.NoError(t, err) }) t.Run("with flags and set values", func(t *testing.T) { key := "mykey" tid := thread.NewIDV1(thread.Raw, 32) c := initCmd(t, buckets, key, tid, true, false) err := c.PersistentFlags().Set("key", key) require.NoError(t, err) err = c.PersistentFlags().Set("thread", tid.String()) require.NoError(t, err) err = c.Execute() require.NoError(t, err) }) t.Run("no flags and env values", func(t *testing.T) { key := "mykey" tid := thread.NewIDV1(thread.Raw, 32) c := initCmd(t, buckets, key, tid, false, false) err := os.Setenv("BUCK_KEY", key) require.NoError(t, err) err = os.Setenv("BUCK_THREAD", tid.String()) require.NoError(t, err) err = c.Execute() require.NoError(t, err) }) t.Run("with flags and env values", func(t *testing.T) { key := "mykey" tid := thread.NewIDV1(thread.Raw, 32) c := initCmd(t, buckets, key, tid, true, false) err := os.Setenv("BUCK_KEY", key) require.NoError(t, err) err = os.Setenv("BUCK_THREAD", tid.String()) require.NoError(t, err) err = c.Execute() require.NoError(t, err) }) t.Run("with key and no thread", func(t *testing.T) { dir := newDir(t) c := &cobra.Command{ Use: "init", Run: func(c *cobra.Command, args []string) { _, err := buckets.NewConfigFromCmd(c, dir) require.Error(t, err) assert.Equal(t, ErrThreadRequired, err) }, } err := os.Setenv("BUCK_KEY", "mykey") require.NoError(t, err) err = os.Setenv("BUCK_THREAD", "") require.NoError(t, err) err = c.Execute() require.NoError(t, err) }) } func initCmd(t *testing.T, buckets *Buckets, key string, tid thread.ID, addFlags, setDefaults bool) *cobra.Command { dir := newDir(t) c := &cobra.Command{ Use: "init", Run: func(c *cobra.Command, args []string) { conf, err := buckets.NewConfigFromCmd(c, dir) require.NoError(t, err) assert.Equal(t, dir, conf.Path) assert.Equal(t, key, conf.Key) if tid.Defined() { assert.Equal(t, tid, conf.Thread) } else { assert.Equal(t, thread.Undef, conf.Thread) } }, } var dkey, dtid string if setDefaults { dkey = key dtid = tid.String() } if addFlags { c.PersistentFlags().String("key", dkey, "") c.PersistentFlags().String("thread", dtid, "") } return c } func setup(t *testing.T) *Buckets { conf := apitest.DefaultTextileConfig(t) conf.Hub = false apitest.MakeTextileWithConfig(t, conf) target, err := tutil.TCPAddrFromMultiAddr(conf.AddrAPI) require.NoError(t, err) clients := cmd.NewClients(target, false, "") t.Cleanup(func() { clients.Close() }) return NewBuckets(clients, DefaultConfConfig()) } func getConf(t *testing.T, bucks *Buckets) Config { id := thread.NewIDV1(thread.Raw, 32) err := bucks.Clients().Threads.NewDB(context.Background(), id) require.NoError(t, err) return Config{ Path: newDir(t), Thread: id, } } func newDir(t *testing.T) string { dir, err := ioutil.TempDir("", "") require.NoError(t, err) t.Cleanup(func() { _ = os.RemoveAll(dir) }) return dir } func createIpfsFolder(t *testing.T) (pth path.Resolved) { ipfs, err := httpapi.NewApi(apitest.GetIPFSApiAddr()) require.NoError(t, err) pth, err = ipfs.Unixfs().Add( context.Background(), ipfsfiles.NewMapDirectory(map[string]ipfsfiles.Node{ "file1.txt": ipfsfiles.NewBytesFile(util.GenerateRandomBytes(1024)), "folder1": ipfsfiles.NewMapDirectory(map[string]ipfsfiles.Node{ "file2.txt": ipfsfiles.NewBytesFile(util.GenerateRandomBytes(512)), }), }), ) require.NoError(t, err) return pth } type eventCollector struct { fileCompletes int fileRemoves int sync.Mutex } func (c *eventCollector) collect(events chan Event) { for e := range events { c.Lock() switch e.Type { case EventFileComplete: c.fileCompletes++ case EventFileRemoved: c.fileRemoves++ } c.Unlock() } } func (c *eventCollector) check(t *testing.T, numFilesAdded, numFilesRemoved int) { time.Sleep(5 * time.Second) c.Lock() defer c.Unlock() assert.Equal(t, numFilesAdded, c.fileCompletes) assert.Equal(t, numFilesRemoved, c.fileRemoves) } ================================================ FILE: buckets/local/crypto.go ================================================ package local import ( "context" "fmt" "io" "os" "github.com/textileio/dcrypto" ) // EncryptLocalPath encrypts the file at path with key, writing the result to the writer. // Encryption is AES-CTR + AES-512 HMAC. func (b *Bucket) EncryptLocalPath(pth string, key []byte, w io.Writer) error { return encryptLocalPath(pth, key, dcrypto.NewEncrypter, w) } // DecryptLocalPath decrypts the file at path with key, writing the result to the writer. // Encryption is AES-CTR + AES-512 HMAC. func (b *Bucket) DecryptLocalPath(pth string, key []byte, w io.Writer) error { return decryptLocalPath(pth, key, dcrypto.NewDecrypter, w) } // EncryptLocalPathWithPassword encrypts the file at path with password, writing the result to the writer. // Encryption is AES-CTR + AES-512 HMAC. // https://godoc.org/golang.org/x/crypto/scrypt is used to derive the keys from the password. func (b *Bucket) EncryptLocalPathWithPassword(pth, password string, w io.Writer) error { return encryptLocalPath(pth, []byte(password), dcrypto.NewEncrypterWithPassword, w) } // DecryptLocalPathWithPassword decrypts the file at path with password, writing the result to the writer. // Encryption is AES-CTR + AES-512 HMAC. // https://godoc.org/golang.org/x/crypto/scrypt is used to derive the keys from the password. func (b *Bucket) DecryptLocalPathWithPassword(pth, password string, w io.Writer) error { return decryptLocalPath(pth, []byte(password), dcrypto.NewDecrypterWithPassword, w) } type encryptFunc func(io.Reader, []byte) (io.Reader, error) type decryptFunc func(io.Reader, []byte) (io.ReadCloser, error) func encryptLocalPath(pth string, keyOrPassword []byte, fn encryptFunc, w io.Writer) error { file, err := os.Open(pth) if err != nil { return err } defer file.Close() info, err := file.Stat() if err != nil { return err } if info.IsDir() { return fmt.Errorf("path %s is not a file", pth) } r, err := fn(file, keyOrPassword) if err != nil { return err } if _, err := io.Copy(w, r); err != nil { return err } return nil } func decryptLocalPath(pth string, keyOrPassword []byte, fn decryptFunc, w io.Writer) error { file, err := os.Open(pth) if err != nil { return err } defer file.Close() info, err := file.Stat() if err != nil { return err } if info.IsDir() { return fmt.Errorf("path %s is not a file", pth) } r, err := fn(file, keyOrPassword) if err != nil { return err } if _, err := io.Copy(w, r); err != nil { return err } return nil } // DecryptRemotePath decrypts the file at the remote path with password, writing the result to the writer. // Encryption is AES-CTR + AES-512 HMAC. func (b *Bucket) DecryptRemotePath(ctx context.Context, pth string, key []byte, w io.Writer) error { return b.decryptRemotePath(ctx, pth, key, dcrypto.NewDecrypter, w) } // DecryptRemotePathWithPassword decrypts the file at the remote path with password, writing the result to the writer. // Encryption is AES-CTR + AES-512 HMAC. // https://godoc.org/golang.org/x/crypto/scrypt is used to derive the keys from the password. func (b *Bucket) DecryptRemotePathWithPassword(ctx context.Context, pth, password string, w io.Writer) error { return b.decryptRemotePath(ctx, pth, []byte(password), dcrypto.NewDecrypterWithPassword, w) } func (b *Bucket) decryptRemotePath( ctx context.Context, pth string, keyOrPassword []byte, fn decryptFunc, w io.Writer, ) error { ctx, err := b.Context(ctx) if err != nil { return err } errs := make(chan error) reader, writer := io.Pipe() go func() { defer writer.Close() if err := b.clients.Buckets.PullPath(ctx, b.Key(), pth, writer); err != nil { errs <- err } }() go func() { defer close(errs) r, err := fn(reader, keyOrPassword) if err != nil { errs <- err return } defer r.Close() if _, err := io.Copy(w, r); err != nil { errs <- err return } }() return <-errs } ================================================ FILE: buckets/local/diff.go ================================================ package local import ( "context" "os" "path/filepath" "runtime" "strings" du "github.com/ipfs/go-merkledag/dagutils" aurora2 "github.com/logrusorgru/aurora" "github.com/textileio/textile/v2/buckets" "github.com/textileio/textile/v2/cmd" ) var aurora = aurora2.NewAurora(runtime.GOOS != "windows") // Change describes a local bucket change. type Change struct { Type du.ChangeType Name string // Absolute file name Path string // File name relative to the bucket root Rel string // File name relative to the bucket current working directory } // ChangeType returns a string representation of a change type. func ChangeType(t du.ChangeType) string { switch t { case du.Mod: return "modified:" case du.Add: return "new file:" case du.Remove: return "deleted: " default: return "" } } // ChangeColor returns an appropriate color for the given change type. func ChangeColor(t du.ChangeType) func(arg interface{}) aurora2.Value { switch t { case du.Mod: return aurora.Yellow case du.Add: return aurora.Green case du.Remove: return aurora.Red default: return nil } } // DiffLocal returns a list of locally staged bucket file changes. func (b *Bucket) DiffLocal() ([]Change, error) { if b.repo == nil { return nil, ErrNotABucket } bp, err := b.Path() if err != nil { return nil, err } ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() diff, err := b.repo.Diff(ctx, bp) if err != nil { return nil, err } var all []Change if len(diff) == 0 { return all, nil } for _, c := range diff { fp := filepath.Join(bp, c.Path) switch c.Type { case du.Mod, du.Add: names, err := b.walkPath(fp) if err != nil { return nil, err } for _, n := range names { p := strings.TrimPrefix(n, bp+string(os.PathSeparator)) r, err := filepath.Rel(b.cwd, n) if err != nil { return nil, err } all = append(all, Change{Type: c.Type, Name: n, Path: p, Rel: r}) } case du.Remove: r, err := filepath.Rel(b.cwd, fp) if err != nil { return nil, err } all = append(all, Change{Type: c.Type, Name: fp, Path: c.Path, Rel: r}) } } return all, nil } func (b *Bucket) walkPath(pth string) (names []string, err error) { bp, err := b.Path() if err != nil { return } ig, err := IgnoreFile(bp) if err != nil { return } err = filepath.Walk(pth, func(n string, info os.FileInfo, err error) error { if err != nil { return err } if !info.IsDir() { f := strings.TrimPrefix(n, pth+string(os.PathSeparator)) if Ignore(n, ig) || f == buckets.SeedName || strings.HasPrefix(f, b.conf.Dir) || strings.HasSuffix(f, PatchExt) { return nil } names = append(names, n) } return nil }) if err != nil { return } return names, nil } ================================================ FILE: buckets/local/list.go ================================================ package local import ( "context" "errors" "fmt" "path/filepath" "github.com/ipfs/go-cid" pb "github.com/textileio/textile/v2/api/bucketsd/pb" ) var errEmptyItem = fmt.Errorf("item is empty") // BucketItem describes an item (file/directory) in a bucket. type BucketItem struct { Cid cid.Cid `json:"cid"` Name string `json:"name"` Path string `json:"path"` Size int64 `json:"size"` IsDir bool `json:"is_dir"` Items []BucketItem `json:"items"` ItemsCount int `json:"items_count"` } // ListRemotePath returns a list of all bucket items under path. func (b *Bucket) ListRemotePath(ctx context.Context, pth string) (items []BucketItem, err error) { pth = filepath.ToSlash(pth) if pth == "." || pth == "/" || pth == "./" { pth = "" } ctx, err = b.Context(ctx) if err != nil { return } rep, err := b.clients.Buckets.ListPath(ctx, b.Key(), pth) if err != nil { return } if len(rep.Item.Items) > 0 { items = make([]BucketItem, len(rep.Item.Items)) for j, k := range rep.Item.Items { ii, err := pbItemToItem(k) if err != nil { return items, err } items[j] = ii } } else if !rep.Item.IsDir { items = make([]BucketItem, 1) item, err := pbItemToItem(rep.Item) if err != nil { return items, err } items[0] = item } return items, nil } func pbItemToItem(pi *pb.PathItem) (item BucketItem, err error) { if pi.Cid == "" { return item, errEmptyItem } c, err := cid.Decode(pi.Cid) if err != nil { return } items := make([]BucketItem, len(pi.Items)) for j, k := range pi.Items { ii, err := pbItemToItem(k) if errors.Is(err, errEmptyItem) { items = nil break } else if err != nil { return item, err } items[j] = ii } return BucketItem{ Cid: c, Name: pi.Name, Path: pi.Path, Size: pi.Size, IsDir: pi.IsDir, Items: items, ItemsCount: int(pi.ItemsCount), }, nil } ================================================ FILE: buckets/local/options.go ================================================ package local import ( cid "github.com/ipfs/go-cid" ) type newOptions struct { name string private bool fromCid cid.Cid strategy InitStrategy events chan<- Event unfreeze bool } // NewOption is used when creating a new bucket. type NewOption func(*newOptions) // WithName sets a name for the bucket. func WithName(name string) NewOption { return func(args *newOptions) { args.name = name } } // WithPrivate specifies that an encryption key will be used for the bucket. func WithPrivate(private bool) NewOption { return func(args *newOptions) { args.private = private } } // WithCid indicates an inited bucket should be boostraped with a particular UnixFS DAG. func WithCid(c cid.Cid) NewOption { return func(args *newOptions) { args.fromCid = c } } // WithUnfreeze indicates that the bucket should be bootstrapped from Filecoin. func WithUnfreeze(enabled bool) NewOption { return func(args *newOptions) { args.unfreeze = enabled } } // InitStrategy describes the type of init strategy. type InitStrategy int const ( // Hybrid indicates locally staged changes should be accepted, excluding deletions. Hybrid InitStrategy = iota // Soft indicates locally staged changes should be accepted, including deletions. Soft // Hard indicates locally staged changes should be discarded. Hard ) // WithStrategy allows for selecting the init strategy. Hybrid is the default. func WithStrategy(strategy InitStrategy) NewOption { return func(args *newOptions) { args.strategy = strategy } } // WithInitEvents allows the caller to receive events when pulling // files from an existing bucket on initialization. func WithInitEvents(ch chan<- Event) NewOption { return func(args *newOptions) { args.events = ch } } type pathOptions struct { confirm ConfirmDiffFunc force bool hard bool events chan<- Event } // PathOption is used when pushing or pulling bucket paths. type PathOption func(*pathOptions) // ConfirmDiffFunc is a caller-provided function which presents a list of bucket changes. type ConfirmDiffFunc func([]Change) bool // WithConfirm allows the caller to confirm a list of bucket changes. func WithConfirm(f ConfirmDiffFunc) PathOption { return func(args *pathOptions) { args.confirm = f } } // WithForce indicates all remote files should be pulled even if they already exist. func WithForce(b bool) PathOption { return func(args *pathOptions) { args.force = b } } // WithHard indicates locally staged changes should be discarded. func WithHard(b bool) PathOption { return func(args *pathOptions) { args.hard = b } } // WithEvents allows the caller to receive events when pushing or pulling files. func WithEvents(ch chan<- Event) PathOption { return func(args *pathOptions) { args.events = ch } } type addOptions struct { merge SelectMergeFunc events chan<- Event } // SelectMergeFunc is a caller-provided function which is used to select a merge strategy. type SelectMergeFunc func(description string, isDir bool) (MergeStrategy, error) // MergeStrategy describes the type of path merge strategy. type MergeStrategy string const ( // Skip skips the path merge. Skip MergeStrategy = "Skip" // Merge attempts to merge the paths (directories only). Merge = "Merge" // Replace replaces the old path with the new path. Replace = "Replace" ) // AddOption is used when staging a remote Unixfs dag cid in a local bucket. type AddOption func(*addOptions) // WithSelectMerge allows the caller to select the path merge strategy. func WithSelectMerge(f SelectMergeFunc) AddOption { return func(args *addOptions) { args.merge = f } } // WithAddEvents allows the caller to receive events when staging files from a remote Unixfs dag. func WithAddEvents(ch chan<- Event) AddOption { return func(args *addOptions) { args.events = ch } } type watchOptions struct { offline bool events chan<- Event } // WatchOption is used when watching a bucket for changes. type WatchOption func(*watchOptions) // WithOffline will keep watching for bucket changes while the local network is offline. func WithOffline(offline bool) WatchOption { return func(args *watchOptions) { args.offline = offline } } // WithWatchEvents allows the caller to receive events when watching a bucket for changes. func WithWatchEvents(ch chan<- Event) WatchOption { return func(args *watchOptions) { args.events = ch } } ================================================ FILE: buckets/local/pull.go ================================================ package local import ( "context" "errors" "os" "path/filepath" "strings" "sync" cid "github.com/ipfs/go-cid" ds "github.com/ipfs/go-datastore" du "github.com/ipfs/go-merkledag/dagutils" "github.com/textileio/textile/v2/api/bucketsd/client" "github.com/textileio/textile/v2/buckets" "golang.org/x/sync/errgroup" ) // MaxPullConcurrency is the maximum number of files that can be pulled concurrently. var MaxPullConcurrency = 10 // PullRemote pulls remote files. // By default, only missing files are pulled. See PathOption for more info. func (b *Bucket) PullRemote(ctx context.Context, opts ...PathOption) (roots Roots, err error) { b.Lock() defer b.Unlock() ctx, err = b.Context(ctx) if err != nil { return } args := &pathOptions{} for _, opt := range opts { opt(args) } diff, err := b.DiffLocal() if errors.Is(err, ErrNotABucket) { args.force = true } else if err != nil { return } if args.confirm != nil && args.hard && len(diff) > 0 { if ok := args.confirm(diff); !ok { return roots, ErrAborted } } // Stash local modifications and additions if not pulling hard if !args.hard { if err := stashChanges(diff); err != nil { return roots, err } } bp, err := b.Path() if err != nil { return } changes, err := b.getPath(ctx, "", bp, diff, args.force, args.events) if err != nil { return } if changes == 0 { return roots, ErrUpToDate } if b.repo != nil { if err := b.repo.Save(ctx); err != nil { return roots, err } rc, err := b.getRemoteRoot(ctx) if err != nil { return roots, err } if err := b.repo.SetRemotePath("", rc); err != nil { return roots, err } } // Re-apply local changes if not pulling hard if !args.hard { if err := applyChanges(diff); err != nil { return roots, err } } return b.Roots(ctx) } func (b *Bucket) getPath( ctx context.Context, pth, dest string, diff []Change, force bool, events chan<- Event, ) (changes int, err error) { all, missing, err := b.listPath(ctx, pth, dest, force) if err != nil { return } remove := make(map[string]string) list, err := b.walkPath(dest) if err != nil { return } loop: for _, n := range list { for _, r := range all { if r.name == n { continue loop } } p := strings.TrimPrefix(n, dest+string(os.PathSeparator)) remove[p] = n } looop: for _, l := range diff { for _, r := range all { if strings.HasPrefix(r.path, l.Path) { continue looop } } if _, ok := remove[l.Path]; !ok { remove[l.Path] = l.Name } } return b.handleChanges(ctx, missing, remove, events) } func (b *Bucket) handleChanges( ctx context.Context, missing []object, remove map[string]string, events chan<- Event, ) (count int, err error) { count = len(missing) count += len(remove) if count == 0 { return } if len(missing) > 0 { progress := handleAllPullProgress(missing, events) defer close(progress) eg, gctx := errgroup.WithContext(context.Background()) lim := make(chan struct{}, MaxPullConcurrency) for _, o := range missing { lim <- struct{}{} o := o eg.Go(func() error { defer func() { <-lim }() if gctx.Err() != nil { return nil } return b.getFile(ctx, b.Key(), o, events, progress) }) } for i := 0; i < cap(lim); i++ { lim <- struct{}{} } if err := eg.Wait(); err != nil { return count, err } } if len(remove) > 0 { for p, n := range remove { // The file may have been modified locally, in which case it will have been moved to a patch. // So, we just ignore the error here. _ = os.RemoveAll(n) if events != nil { rel, err := filepath.Rel(b.cwd, n) if err != nil { return count, err } events <- Event{ Type: EventFileRemoved, Path: rel, } } if b.repo != nil { if err := b.repo.RemovePath(ctx, p); err != nil { return count, err } } } } return count, nil } func (b *Bucket) diffPath( ctx context.Context, pth, dest string, ignoreDeletions bool, ) (diff []Change, missing []object, remove map[string]string, err error) { all, missing, err := b.listPath(ctx, pth, dest, false) if err != nil { return } remove = make(map[string]string) list, err := b.walkPath(dest) if err != nil { return } loop: for _, n := range list { for _, r := range all { if r.name == n { continue loop } } p := strings.TrimPrefix(n, dest+string(os.PathSeparator)) r, err := filepath.Rel(b.cwd, n) if err != nil { return nil, nil, nil, err } diff = append(diff, Change{Type: du.Add, Name: n, Path: p, Rel: r}) remove[p] = n } for _, o := range missing { if o.path == buckets.SeedName { continue } var ct du.ChangeType if _, err = os.Stat(o.name); err == nil { ct = du.Mod } else if os.IsNotExist(err) { if ignoreDeletions { continue } ct = du.Remove } else { return } r, err := filepath.Rel(b.cwd, o.name) if err != nil { return nil, nil, nil, err } diff = append(diff, Change{Type: ct, Name: o.name, Path: o.path, Rel: r}) } return diff, missing, remove, nil } type object struct { path string name string cid cid.Cid size int64 } func (b *Bucket) listPath( ctx context.Context, pth, dest string, force bool, ) (all, missing []object, err error) { rep, err := b.clients.Buckets.ListPath(ctx, b.Key(), pth) if err != nil { return } if rep.Item.IsDir { for _, i := range rep.Item.Items { a, m, err := b.listPath(ctx, filepath.Join(pth, filepath.Base(i.Path)), dest, force) if err != nil { return nil, nil, err } all = append(all, a...) missing = append(missing, m...) } } else { name := filepath.Join(dest, pth) c, err := cid.Decode(rep.Item.Cid) if err != nil { return nil, nil, err } o := object{path: pth, name: name, size: rep.Item.Size, cid: c} all = append(all, o) if !force && b.repo != nil { c, err := cid.Decode(rep.Item.Cid) if err != nil { return nil, nil, err } lc, err := b.repo.HashFile(name) if err == nil && lc.Equals(c) { // File exists, skip it return all, missing, nil } else { match, err := b.repo.MatchPath(pth, lc, c) if err != nil { if !errors.Is(err, ds.ErrNotFound) { return nil, nil, err } } else if match { // File exists, skip it return all, missing, nil } } } missing = append(missing, o) } return all, missing, nil } func (b *Bucket) getFile(ctx context.Context, key string, o object, events chan<- Event, progress chan<- int64) error { if err := os.MkdirAll(filepath.Dir(o.name), os.ModePerm); err != nil { return err } file, err := os.Create(o.name) if err != nil { return err } defer file.Close() rel, err := filepath.Rel(b.cwd, o.name) if err != nil { return err } prog, finish := handlePullProgress(progress, o.size) defer finish() if err := b.clients.Buckets.PullPath(ctx, key, o.path, file, client.WithProgress(prog)); err != nil { return err } if b.repo != nil { if err := b.repo.SetRemotePath(o.path, o.cid); err != nil { return err } } if events != nil { events <- Event{ Type: EventFileComplete, Path: rel, Cid: o.cid, Size: o.size, } } return nil } func handlePullProgress(global chan<- int64, fsize int64) (chan<- int64, func()) { progress := make(chan int64) var current int64 var done bool var lk sync.Mutex go func() { for p := range progress { lk.Lock() if !done { diff := p - current global <- diff current = p } lk.Unlock() } }() doneFn := func() { lk.Lock() global <- fsize - current done = true close(progress) lk.Unlock() } return progress, doneFn } func handleAllPullProgress(os []object, events chan<- Event) chan<- int64 { var total int64 for _, o := range os { total += o.size } progress := make(chan int64) go func() { var complete int64 for p := range progress { complete += p if events != nil { events <- Event{ Type: EventProgress, Size: total, Complete: complete, } } } }() return progress } ================================================ FILE: buckets/local/push.go ================================================ package local import ( "context" "errors" "os" "path/filepath" "strings" du "github.com/ipfs/go-merkledag/dagutils" "github.com/ipfs/interface-go-ipfs-core/path" "github.com/textileio/textile/v2/api/bucketsd/client" ) // PushLocal pushes local files. // By default, only staged changes are pushed. See PathOption for more info. func (b *Bucket) PushLocal(ctx context.Context, opts ...PathOption) (roots Roots, err error) { b.Lock() defer b.Unlock() ctx, err = b.Context(ctx) if err != nil { return } args := &pathOptions{} for _, opt := range opts { opt(args) } diff, err := b.DiffLocal() if errors.Is(err, ErrNotABucket) { args.force = true } else if err != nil { return } bp, err := b.Path() if err != nil { return roots, err } if args.force { // Reset the diff to show all files as additions var reset []Change names, err := b.walkPath(bp) if err != nil { return roots, err } for _, n := range names { r, err := filepath.Rel(b.cwd, n) if err != nil { return roots, err } p := strings.TrimPrefix(n, bp+string(os.PathSeparator)) reset = append(reset, Change{Type: du.Add, Name: n, Path: p, Rel: r}) } // Add unique additions loop: for _, c := range reset { for _, x := range diff { if c.Path == x.Path { continue loop } } diff = append(diff, c) } } if len(diff) == 0 { return roots, ErrUpToDate } if args.confirm != nil { if ok := args.confirm(diff); !ok { return roots, ErrAborted } } r, err := b.Roots(ctx) if err != nil { return } xr := path.IpfsPath(r.Remote) var rm, add []Change key := b.Key() for _, c := range diff { switch c.Type { case du.Mod, du.Add: add = append(add, c) case du.Remove: rm = append(rm, c) } } xr, err = b.AddRemoteFiles(ctx, key, xr, add, args.force, args.events) if err != nil { return roots, err } if len(rm) > 0 { for _, c := range rm { var err error xr, err = b.RemoveRemoteFile(ctx, key, xr, c, args.force, args.events) if err != nil { return roots, err } } } if b.repo != nil { if err := b.repo.Save(ctx); err != nil { return roots, err } rc, err := b.getRemoteRoot(ctx) if err != nil { return roots, err } if err := b.repo.SetRemotePath("", rc); err != nil { return roots, err } } return b.Roots(ctx) } type pendingFile struct { path string rel string } // AddRemoteFiles applies "add" and "modify" changes to a remote bucket. // See PathOption for more info. func (b *Bucket) AddRemoteFiles( ctx context.Context, key string, xroot path.Resolved, changes []Change, force bool, events chan<- Event, ) (root path.Resolved, err error) { progress := make(chan int64) defer close(progress) files := make(map[string]pendingFile) opts := []client.Option{client.WithProgress(progress)} if !force { opts = append(opts, client.WithFastForwardOnly(xroot)) } q, err := b.clients.Buckets.PushPaths(ctx, key, opts...) if err != nil { return nil, err } defer func() { if cerr := q.Close(); cerr != nil && err == nil { err = cerr } }() for _, c := range changes { file := pendingFile{ path: c.Path, rel: c.Rel, } pth := filepath.ToSlash(c.Path) files[pth] = file if err := q.AddFile(file.path, c.Name); err != nil { return nil, err } } size := q.Size() go func() { for p := range progress { var u int64 if p > size { u = size } else { u = p } if events != nil { events <- Event{ Type: EventProgress, Size: size, Complete: u, } } } }() for q.Next() { if q.Err() != nil { return nil, q.Err() } file := files[q.Current.Path] root = q.Current.Root if b.repo != nil { if err := b.repo.SetRemotePath(file.path, q.Current.Cid); err != nil { return nil, err } } if events != nil { events <- Event{ Type: EventFileComplete, Path: file.rel, Cid: q.Current.Cid, Size: q.Current.Size, } } } return root, nil } // RemoveRemoteFile applies a "remove" change to a remote bucket. // See PathOption for more info. func (b *Bucket) RemoveRemoteFile( ctx context.Context, key string, xroot path.Resolved, c Change, force bool, events chan<- Event, ) (path.Resolved, error) { var opts []client.Option if !force { opts = append(opts, client.WithFastForwardOnly(xroot)) } root, err := b.clients.Buckets.RemovePath(ctx, key, c.Path, opts...) if err != nil { if !strings.HasSuffix(err.Error(), "no link by that name") { return nil, err } } if b.repo != nil { if err := b.repo.RemovePath(ctx, c.Path); err != nil { return nil, err } } if events != nil { events <- Event{ Type: EventFileRemoved, Path: c.Rel, } } return root, nil } ================================================ FILE: buckets/local/repo.go ================================================ package local import ( "bytes" "context" "encoding/gob" "errors" "fmt" "io" "os" "path" "path/filepath" "strings" bserv "github.com/ipfs/go-blockservice" "github.com/ipfs/go-cid" ds "github.com/ipfs/go-datastore" flatfs "github.com/ipfs/go-ds-flatfs" bstore "github.com/ipfs/go-ipfs-blockstore" chunker "github.com/ipfs/go-ipfs-chunker" dshelp "github.com/ipfs/go-ipfs-ds-help" offline "github.com/ipfs/go-ipfs-exchange-offline" cbor "github.com/ipfs/go-ipld-cbor" ipld "github.com/ipfs/go-ipld-format" md "github.com/ipfs/go-merkledag" du "github.com/ipfs/go-merkledag/dagutils" "github.com/ipfs/go-unixfs" "github.com/ipfs/go-unixfs/importer/balanced" "github.com/ipfs/go-unixfs/importer/helpers" "github.com/ipfs/go-unixfs/importer/trickle" options "github.com/ipfs/interface-go-ipfs-core/options" mh "github.com/multiformats/go-multihash" ignore "github.com/sabhiram/go-gitignore" ) func init() { bstore.BlockPrefix = ds.NewKey("") ipld.Register(cid.DagProtobuf, md.DecodeProtobufBlock) ipld.Register(cid.Raw, md.DecodeRawBlock) ipld.Register(cid.DagCBOR, cbor.DecodeBlock) gob.Register(pathMap{}) } var ( // PatchExt is used to ignore tmp files during a pull. PatchExt = ".buckpatch" // ignoredFilenames is a list of default ignored file names. ignoredFilenames = []string{ ".DS_Store", } ) // pathMap hold details about a local path map. type pathMap struct { Local cid.Cid Remote cid.Cid } // Repo tracks a local bucket tree structure. type Repo struct { path string name string ds ds.Batching bsrv bserv.BlockService dag ipld.DAGService layout options.Layout cidver int } // NewRepo creates a new bucket with the given path. func NewRepo(pth, name string, layout options.Layout) (*Repo, error) { repo := filepath.Join(pth, name) if err := os.MkdirAll(repo, os.ModePerm); err != nil { return nil, err } bd, err := flatfs.CreateOrOpen(repo, flatfs.NextToLast(2), true) if err != nil { return nil, err } bs := bstore.NewBlockstore(bd) bsrv := bserv.New(bs, offline.Exchange(bs)) return &Repo{ path: pth, name: name, ds: bd, bsrv: bsrv, dag: md.NewDAGService(bsrv), layout: layout, cidver: 1, }, nil } // Path returns the repo path. func (b *Repo) Path() string { return filepath.Join(b.path, b.name) } // Root returns the local and remote root cids. func (b *Repo) Root() (local, remote cid.Cid, err error) { k, err := getPathKey("") if err != nil { return } pm, err := b.getPathMap(k) if errors.Is(err, ds.ErrNotFound) { return local, remote, nil } else if err != nil { return } return pm.Local, pm.Remote, nil } // getPathKey returns a flatfs safe hash of a file path. func getPathKey(pth string) (key ds.Key, err error) { hash, err := mh.Encode([]byte(filepath.Clean(pth)), mh.SHA2_256) if err != nil { return } return dshelp.MultihashToDsKey(hash), nil } // GetPathMap returns details about a local path. func (b *Repo) GetPathMap(pth string) (local, remote cid.Cid, err error) { k, err := getPathKey(pth) if err != nil { return } pm, err := b.getPathMap(k) if err != nil { return } return pm.Local, pm.Remote, nil } // getPathMap returns details about a local path by key. func (b *Repo) getPathMap(k ds.Key) (m pathMap, err error) { v, err := b.ds.Get(k) if err != nil { return } dec := gob.NewDecoder(bytes.NewReader(v)) var pm pathMap if err = dec.Decode(&pm); err != nil { return } return pm, nil } // CidVersion gets the repo cid version (0 or 1). func (b *Repo) CidVersion() int { return b.cidver } // SetCidVersion set the repo cid version (0 or 1). // The default version is 1. func (b *Repo) SetCidVersion(v int) { b.cidver = v } // Save saves the bucket as a node describing the file tree at the current path. func (b *Repo) Save(ctx context.Context) error { _, maps, err := b.recursiveAddPath(ctx, b.path, b.dag) if err != nil { return err } for p, c := range maps { if err := b.setLocalPath(p, c); err != nil { return err } } return nil } // setLocalPath sets the local cid for an existing path map. func (b *Repo) setLocalPath(pth string, local cid.Cid) error { k, err := getPathKey(pth) if err != nil { return err } xm, err := b.getPathMap(k) if errors.Is(err, ds.ErrNotFound) { return b.putPathMap(k, pathMap{Local: local}) } if err != nil { return err } xm.Local = local return b.putPathMap(k, xm) } // putPathMap saves a path map under key. func (b *Repo) putPathMap(k ds.Key, pm pathMap) error { var buf bytes.Buffer enc := gob.NewEncoder(&buf) if err := enc.Encode(pm); err != nil { return err } return b.ds.Put(k, buf.Bytes()) } // recursiveAddPath walks path and adds files to the dag service. // This method returns the resulting root node and a list of path maps. func (b *Repo) recursiveAddPath( ctx context.Context, pth string, dag ipld.DAGService, ) (ipld.Node, map[string]cid.Cid, error) { root := unixfs.EmptyDirNode() prefix, err := md.PrefixForCidVersion(b.cidver) if err != nil { return nil, nil, err } root.SetCidBuilder(prefix) editor := du.NewDagEditor(root, dag) maps := make(map[string]cid.Cid) abs, err := filepath.Abs(pth) if err != nil { return nil, nil, err } ig, err := IgnoreFile(b.path) if err != nil { return nil, nil, err } if err = filepath.Walk(abs, func(n string, info os.FileInfo, err error) error { if err != nil { return err } if !info.IsDir() { if Ignore(n, ig) { return nil } p := n n = strings.TrimPrefix(n, abs+string(os.PathSeparator)) if strings.HasPrefix(n, filepath.Dir(b.name)+string(os.PathSeparator)) || strings.HasSuffix(n, PatchExt) { return nil } file, err := os.Open(p) if err != nil { return err } defer file.Close() nd, err := addFile(editor.GetDagService(), b.layout, prefix, file) if err != nil { return err } if err = editor.InsertNodeAtPath(ctx, n, nd, unixfs.EmptyDirNode); err != nil { return err } maps[strings.TrimPrefix(p, abs+string(os.PathSeparator))] = nd.Cid() } return nil }); err != nil { return nil, nil, err } en := editor.GetNode() if err := copyLinks(ctx, en, editor.GetDagService(), dag); err != nil { return nil, nil, err } maps[strings.TrimPrefix(pth, b.path)] = en.Cid() return en, maps, nil } // copyLinks recursively adds all link nodes in node to the dag service. // Data-nodes are ignored. // Modified from https://github.com/ipfs/go-merkledag/blob/master/dagutils/utils.go#L210 func copyLinks(ctx context.Context, nd ipld.Node, from, to ipld.DAGService) error { err := to.Add(ctx, nd) if err != nil { return err } for _, lnk := range nd.Links() { if lnk.Name == "" { continue } child, err := lnk.GetNode(ctx, from) if err != nil { if err == ipld.ErrNotFound { // not found means we didnt modify it, and it should // already be in the target datastore continue } return err } err = copyLinks(ctx, child, from, to) if err != nil { return err } } return nil } // SaveFile saves the file at path to the repo. func (b *Repo) SaveFile(ctx context.Context, pth string, name string) error { r, err := os.Open(pth) if err != nil { return err } defer r.Close() root := unixfs.EmptyDirNode() prefix, err := md.PrefixForCidVersion(b.cidver) if err != nil { return err } root.SetCidBuilder(prefix) editor := du.NewDagEditor(root, b.dag) f, err := addFile(editor.GetDagService(), b.layout, prefix, r) if err != nil { return err } if err = editor.InsertNodeAtPath(ctx, name, f, unixfs.EmptyDirNode); err != nil { return err } n := editor.GetNode() if err := copyLinks(ctx, n, editor.GetDagService(), b.dag); err != nil { return err } if err := b.setLocalPath(pth, n.Cid()); err != nil { return err } return b.setLocalPath("", n.Cid()) } // HashFile returns the cid of the file at path. // This method does not alter the bucket. func (b *Repo) HashFile(pth string) (cid.Cid, error) { r, err := os.Open(pth) if err != nil { return cid.Undef, err } defer r.Close() prefix, err := md.PrefixForCidVersion(b.cidver) if err != nil { return cid.Undef, err } n, err := addFile(du.NewMemoryDagService(), b.layout, prefix, r) if err != nil { return cid.Undef, err } return n.Cid(), nil } // GetNode returns the node at cid from the bucket. func (b *Repo) GetNode(ctx context.Context, c cid.Cid) (ipld.Node, error) { return b.dag.Get(ctx, c) } // Diff returns a list of changes that are present in path compared to the bucket. func (b *Repo) Diff(ctx context.Context, pth string) (diff []*du.Change, err error) { tmp := du.NewMemoryDagService() var an ipld.Node lc, _, err := b.Root() if err != nil { return } if lc.Defined() { an, err = b.dag.Get(ctx, lc) if err != nil { return } } else { an = unixfs.EmptyDirNode() } if err = copyLinks(ctx, an, b.dag, tmp); err != nil { return } if err = tmp.Add(ctx, an); err != nil { return } bn, _, err := b.recursiveAddPath(ctx, pth, tmp) if err != nil { return } return Diff(ctx, tmp, an, bn) } // SetRemotePath sets or creates a mapping from a local path to a remote cid. func (b *Repo) SetRemotePath(pth string, remote cid.Cid) error { k, err := getPathKey(pth) if err != nil { return err } xm, err := b.getPathMap(k) if errors.Is(err, ds.ErrNotFound) { return b.putPathMap(k, pathMap{Remote: remote}) } if err != nil { return err } xm.Remote = remote return b.putPathMap(k, xm) } // MatchPath returns whether or not the path exists and has matching local and remote cids. func (b *Repo) MatchPath(pth string, local, remote cid.Cid) (bool, error) { k, err := getPathKey(pth) if err != nil { return false, err } m, err := b.getPathMap(k) if err != nil { return false, err } if m.Local.Defined() && m.Local.Equals(local) && m.Remote.Equals(remote) { return true, nil } return false, nil } // RemovePath removes a local path map from the store. func (b *Repo) RemovePath(ctx context.Context, pth string) error { k, err := getPathKey(pth) if err != nil { return err } pm, err := b.getPathMap(k) if errors.Is(err, ds.ErrNotFound) { return nil } if err != nil { return err } if err := b.dag.Remove(ctx, pm.Local); err != nil { if !errors.Is(err, ipld.ErrNotFound) { return err } } return b.ds.Delete(k) } // Close closes the store and blocks service. func (b *Repo) Close() error { if err := b.ds.Close(); err != nil { return err } if err := b.bsrv.Close(); err != nil { return err } return nil } // Ignore returns true if the path contains an ignored file. func Ignore(pth string, ig *ignore.GitIgnore) bool { for _, n := range ignoredFilenames { if strings.HasSuffix(pth, n) { return true } } if ig != nil { return ig.MatchesPath(pth) } return false } // IgnoreFile returns the ignore file at path if it exists func IgnoreFile(pth string) (*ignore.GitIgnore, error) { ig, err := ignore.CompileIgnoreFile(filepath.Join(pth, ".buckignore")) if errors.Is(err, os.ErrNotExist) { return nil, nil } else if err != nil { return nil, err } return ig, nil } // addFile chunks reader with layout and adds blocks to the dag service. // SHA2-256 is used as the hash function and CidV1 as the cid version. func addFile(dag ipld.DAGService, layout options.Layout, prefix cid.Prefix, r io.Reader) (ipld.Node, error) { dbp := helpers.DagBuilderParams{ Dagserv: dag, RawLeaves: true, Maxlinks: helpers.DefaultLinksPerBlock, NoCopy: false, CidBuilder: prefix, } chnk, err := chunker.FromString(r, "default") if err != nil { return nil, err } dbh, err := dbp.New(chnk) if err != nil { return nil, err } var n ipld.Node switch layout { case options.TrickleLayout: n, err = trickle.Layout(dbh) case options.BalancedLayout: n, err = balanced.Layout(dbh) default: return nil, fmt.Errorf("invalid layout") } return n, err } // Diff returns a set of changes that transform node 'a' into node 'b'. // Modified from https://github.com/ipfs/go-merkledag/blob/master/dagutils/diff.go#L104 // It only traverses links in the following cases: // 1. two node's links number are greater than 0. // 2. both of two nodes are ProtoNode. // 3. neither of the nodes is a file node, which contains only unnamed raw blocks // Otherwise, it compares the cid and emits a Mod change object. func Diff(ctx context.Context, ds ipld.DAGService, a, b ipld.Node) ([]*du.Change, error) { // Base case where both nodes are leaves, just compare // their CIDs. if len(a.Links()) == 0 && len(b.Links()) == 0 { return getChange(a, b) } var out []*du.Change cleanA, okA := a.Copy().(*md.ProtoNode) cleanB, okB := b.Copy().(*md.ProtoNode) if !okA || !okB { return getChange(a, b) } if isFileNode(cleanA) || isFileNode(cleanB) { return []*du.Change{ { Type: du.Mod, Before: a.Cid(), After: b.Cid(), }, }, nil } // strip out unchanged stuff for _, lnk := range a.Links() { l, _, err := b.ResolveLink([]string{lnk.Name}) if err == nil { if l.Cid.Equals(lnk.Cid) { // no change... ignore it } else { anode, err := lnk.GetNode(ctx, ds) if err != nil { return nil, err } bnode, err := l.GetNode(ctx, ds) if err != nil { return nil, err } sub, err := Diff(ctx, ds, anode, bnode) if err != nil { return nil, err } for _, subc := range sub { subc.Path = path.Join(lnk.Name, subc.Path) out = append(out, subc) } } _ = cleanA.RemoveNodeLink(l.Name) _ = cleanB.RemoveNodeLink(l.Name) } } for _, lnk := range cleanA.Links() { out = append(out, &du.Change{ Type: du.Remove, Path: lnk.Name, Before: lnk.Cid, }) } for _, lnk := range cleanB.Links() { out = append(out, &du.Change{ Type: du.Add, Path: lnk.Name, After: lnk.Cid, }) } return out, nil } // getChange copied from https://github.com/ipfs/go-merkledag/blob/master/dagutils/diff.go#L203 func getChange(a, b ipld.Node) ([]*du.Change, error) { if a.Cid().Equals(b.Cid()) { return []*du.Change{}, nil } return []*du.Change{ { Type: du.Mod, Before: a.Cid(), After: b.Cid(), }, }, nil } func isFileNode(n ipld.Node) bool { for _, l := range n.Links() { if l.Name == "" { return true } } return false } func stashChanges(diff []Change) error { for _, c := range diff { switch c.Type { case du.Mod, du.Add: if err := os.Rename(c.Name, c.Name+PatchExt); err != nil { return err } } } return nil } func applyChanges(diff []Change) error { for _, c := range diff { switch c.Type { case du.Mod, du.Add: if err := os.Rename(c.Name+PatchExt, c.Name); err != nil { return err } case du.Remove: // If the file was also deleted on the remote, // the local deletion will already have been handled by getPath. // So, we just ignore the error here. _ = os.RemoveAll(c.Name) } } return nil } ================================================ FILE: buckets/local/repo_test.go ================================================ package local_test import ( "context" "crypto/rand" "io" "io/ioutil" "os" "path/filepath" "testing" "github.com/ipfs/go-cid" ipld "github.com/ipfs/go-ipld-format" du "github.com/ipfs/go-merkledag/dagutils" "github.com/ipfs/interface-go-ipfs-core/options" mh "github.com/multiformats/go-multihash" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" . "github.com/textileio/textile/v2/buckets/local" ) func TestNewRepo(t *testing.T) { makeRepo(t, "testdata/a", options.BalancedLayout) } func TestRepo_SetCidVersion(t *testing.T) { repo0 := makeRepo(t, "testdata/a", options.BalancedLayout) repo0.SetCidVersion(0) err := repo0.Save(context.Background()) require.NoError(t, err) lc0, _, err := repo0.Root() require.NoError(t, err) assert.True(t, lc0.Defined()) assert.Equal(t, 0, repo0.CidVersion()) assert.Equal(t, 0, int(lc0.Version())) repo0.Close() repo1 := makeRepo(t, "testdata/a", options.BalancedLayout) defer repo1.Close() repo1.SetCidVersion(1) err = repo1.Save(context.Background()) require.NoError(t, err) lc1, _, err := repo1.Root() require.NoError(t, err) assert.True(t, lc1.Defined()) assert.Equal(t, 1, repo1.CidVersion()) assert.Equal(t, 1, int(lc1.Version())) } func TestRepo_Save(t *testing.T) { repo := makeRepo(t, "testdata/a", options.BalancedLayout) err := repo.Save(context.Background()) require.NoError(t, err) lc, _, err := repo.Root() require.NoError(t, err) assert.True(t, lc.Defined()) repo.Close() repo2 := makeRepo(t, "testdata/a", options.BalancedLayout) defer repo2.Close() n, err := repo2.GetNode(context.Background(), lc) require.NoError(t, err) checkLinks(t, repo2, n) diff, err := repo2.Diff(context.Background(), "testdata/a") require.NoError(t, err) require.Empty(t, diff) } func TestRepo_SaveFile(t *testing.T) { repo := makeRepo(t, "testdata/c", options.BalancedLayout) err := repo.SaveFile(context.Background(), "testdata/c/one.jpg", "one.jpg") require.NoError(t, err) lc, _, err := repo.Root() require.NoError(t, err) assert.True(t, lc.Defined()) repo.Close() repo2 := makeRepo(t, "testdata/c", options.BalancedLayout) defer repo2.Close() n, err := repo2.GetNode(context.Background(), lc) require.NoError(t, err) checkLinks(t, repo2, n) diff, err := repo2.Diff(context.Background(), "testdata/c") require.NoError(t, err) require.Equal(t, 1, len(diff)) } func checkLinks(t *testing.T, repo *Repo, n ipld.Node) { for _, l := range n.Links() { ln, err := repo.GetNode(context.Background(), l.Cid) if l.Name == "" { // Data node should not have been saved require.Error(t, err) } else { require.NoError(t, err) checkLinks(t, repo, ln) } } } func TestRepo_HashFile(t *testing.T) { repo := makeRepo(t, "testdata/c", options.BalancedLayout) defer repo.Close() c, err := repo.HashFile("testdata/c/one.jpg") require.NoError(t, err) assert.NotEmpty(t, c) } func TestRepo_Diff(t *testing.T) { t.Run("raw files", func(t *testing.T) { repo := makeRepo(t, "testdata/a", options.BalancedLayout) defer repo.Close() err := repo.Save(context.Background()) require.NoError(t, err) diffa, err := repo.Diff(context.Background(), "testdata/a") require.NoError(t, err) assert.Empty(t, diffa) diffb, err := repo.Diff(context.Background(), "testdata/b") require.NoError(t, err) assert.NotEmpty(t, diffb) assert.Equal(t, 6, len(diffb)) changes := []*du.Change{ {Path: "foo.txt", Type: du.Mod}, {Path: "one/two/boo.txt", Type: du.Remove}, {Path: "one/buz.txt", Type: du.Remove}, {Path: "one/muz.txt", Type: du.Add}, {Path: "one/three", Type: du.Add}, {Path: "bar.txt", Type: du.Remove}, } for i, c := range diffb { assert.Equal(t, changes[i].Path, c.Path) assert.Equal(t, changes[i].Type, c.Type) } }) t.Run("proto files", func(t *testing.T) { var dirs []string t.Cleanup(func() { for _, d := range dirs { _ = os.RemoveAll(d) } }) dira, err := ioutil.TempDir("", "") require.NoError(t, err) dirs = append(dirs, dira) repo := makeRepo(t, dira, options.BalancedLayout) defer repo.Close() // Add a file large enough to have multiple raw node chunks fa, err := os.Create(filepath.Join(dira, "file")) require.NoError(t, err) defer fa.Close() _, err = io.CopyN(fa, rand.Reader, 1000*1024) require.NoError(t, err) err = repo.Save(context.Background()) require.NoError(t, err) diffa, err := repo.Diff(context.Background(), dira) require.NoError(t, err) assert.Empty(t, diffa) // Create another dir with a file of the same name. // We should see the file as modified in the diff. dirb, err := ioutil.TempDir("", "") require.NoError(t, err) dirs = append(dirs, dirb) fb, err := os.Create(filepath.Join(dirb, "file")) require.NoError(t, err) defer fb.Close() _, err = io.CopyN(fb, rand.Reader, 1000*1024) require.NoError(t, err) diffb, err := repo.Diff(context.Background(), dirb) require.NoError(t, err) assert.NotEmpty(t, diffb) assert.Equal(t, 1, len(diffb)) changes := []*du.Change{ {Path: filepath.Base(fa.Name()), Type: du.Mod}, } for i, c := range diffb { assert.Equal(t, changes[i].Path, c.Path) assert.Equal(t, changes[i].Type, c.Type) } // Create another dir with a nested dir of the same name as the original file. // We should see the file as modified in the diff. dirc, err := ioutil.TempDir("", "") require.NoError(t, err) dirs = append(dirs, dirc) err = os.MkdirAll(filepath.Join(dirc, "file"), os.ModePerm) require.NoError(t, err) fc, err := os.Create(filepath.Join(dirc, "file", "file")) require.NoError(t, err) defer fc.Close() _, err = io.CopyN(fb, rand.Reader, 1000*1024) require.NoError(t, err) diffc, err := repo.Diff(context.Background(), dirc) require.NoError(t, err) assert.NotEmpty(t, diffc) assert.Equal(t, 1, len(diffc)) for i, c := range diffc { assert.Equal(t, changes[i].Path, c.Path) assert.Equal(t, changes[i].Type, c.Type) } }) } func TestRepo_Get(t *testing.T) { repo := makeRepo(t, "testdata/a", options.BalancedLayout) defer repo.Close() err := repo.Save(context.Background()) require.NoError(t, err) lc, _, err := repo.Root() require.NoError(t, err) assert.True(t, lc.Defined()) n, err := repo.GetNode(context.Background(), lc) require.NoError(t, err) assert.Equal(t, lc, n.Cid()) } func TestRepo_SetRemotePath(t *testing.T) { repo := makeRepo(t, "testdata/a", options.BalancedLayout) defer repo.Close() err := repo.Save(context.Background()) require.NoError(t, err) lc, _, err := repo.Root() require.NoError(t, err) assert.True(t, lc.Defined()) err = repo.SetRemotePath("", lc) require.NoError(t, err) } func TestRepo_MatchPath(t *testing.T) { repo := makeRepo(t, "testdata/a", options.BalancedLayout) defer repo.Close() err := repo.Save(context.Background()) require.NoError(t, err) lc, _, err := repo.Root() require.NoError(t, err) assert.True(t, lc.Defined()) rc := makeCid(t, "remote") err = repo.SetRemotePath("", rc) require.NoError(t, err) match, err := repo.MatchPath("", lc, rc) require.NoError(t, err) assert.True(t, match) } func TestRepo_RemovePath(t *testing.T) { repo := makeRepo(t, "testdata/a", options.BalancedLayout) defer repo.Close() err := repo.SetRemotePath("path/to/file", makeCid(t, "remote")) require.NoError(t, err) err = repo.RemovePath(context.Background(), "path/to/file") require.NoError(t, err) _, _, err = repo.GetPathMap("path/to/file") require.Error(t, err) } func makeRepo(t *testing.T, root string, layout options.Layout) *Repo { repo, err := NewRepo(root, ".textile/repo", layout) require.NoError(t, err) t.Cleanup(func() { err := os.RemoveAll(repo.Path()) require.NoError(t, err) }) return repo } func makeCid(t *testing.T, s string) cid.Cid { h1, err := mh.Sum([]byte(s), mh.SHA2_256, -1) if err != nil { t.Fatal(err) } return cid.NewCidV1(0x55, h1) } ================================================ FILE: buckets/local/testdata/a/bar.txt ================================================ Astonishment across the centuries the sky calls to us with pretty stories for which there's little good evidence courage of our questions billions upon billions? Another world great turbulent clouds a still more glorious dawn awaits courage of our questions Tunguska event how far away. Two ghostly white figures in coveralls and helmets are soflty dancing ship of the imagination star stuff harvesting star light from which we spring citizens of distant epochs something incredible is waiting to be known. ================================================ FILE: buckets/local/testdata/a/foo.txt ================================================ Radio telescope with pretty stories for which there's little good evidence the sky calls to us something incredible is waiting to be known Rig Veda science. From which we spring the only home we've ever known concept of the number one the carbon in our apple pies Orion's sword extraordinary claims require extraordinary evidence. The ash of stellar alchemy encyclopaedia galactica across the centuries with pretty stories for which there's little good evidence a very small stage in a vast cosmic arena a very small stage in a vast cosmic arena? ================================================ FILE: buckets/local/testdata/a/one/baz.txt ================================================ Orion's sword great turbulent clouds brain is the seed of intelligence made in the interiors of collapsing stars cosmos white dwarf. Rig Veda ship of the imagination shores of the cosmic ocean rich in heavy atoms shores of the cosmic ocean courage of our questions. Kindling the energy hidden in matter permanence of the stars the only home we've ever known how far away citizens of distant epochs shores of the cosmic ocean. ================================================ FILE: buckets/local/testdata/a/one/buz.txt ================================================ Extraplanetary as a patch of light encyclopaedia galactica cosmos the ash of stellar alchemy quasar. Intelligent beings vanquish the impossible hundreds of thousands gathered by gravity permanence of the stars Rig Veda? Extraordinary claims require extraordinary evidence courage of our questions invent the universe the only home we've ever known a very small stage in a vast cosmic arena made in the interiors of collapsing stars. Dream of the mind's eye two ghostly white figures in coveralls and helmets are soflty dancing a mote of dust suspended in a sunbeam the carbon in our apple pies the sky calls to us a still more glorious dawn awaits? ================================================ FILE: buckets/local/testdata/a/one/two/boo.txt ================================================ Billions upon billions something incredible is waiting to be known star stuff harvesting star light Sea of Tranquility of brilliant syntheses billions upon billions. The carbon in our apple pies are creatures of the cosmos tendrils of gossamer clouds vanquish the impossible rich in mystery a mote of dust suspended in a sunbeam. The ash of stellar alchemy a still more glorious dawn awaits how far away a very small stage in a vast cosmic arena invent the universe bits of moving fluff and billions upon billions upon billions upon billions upon billions upon billions upon billions. ================================================ FILE: buckets/local/testdata/a/one/two/fuz.txt ================================================ Shores of the cosmic ocean extraordinary claims require extraordinary evidence cosmic ocean as a patch of light the only home we've ever known courage of our questions. Hydrogen atoms rings of Uranus a very small stage in a vast cosmic arena with pretty stories for which there's little good evidence great turbulent clouds permanence of the stars. With pretty stories for which there's little good evidence a mote of dust suspended in a sunbeam a mote of dust suspended in a sunbeam hearts of the stars from which we spring globular star cluster. ================================================ FILE: buckets/local/testdata/b/foo.txt ================================================ Laws of physics prime number the carbon in our apple pies dream of the mind's eye emerged into consciousness finite but unbounded. Encyclopaedia galactica globular star cluster a very small stage in a vast cosmic arena Orion's sword something incredible is waiting to be known astonishment. Bits of moving fluff gathered by gravity tendrils of gossamer clouds birth two ghostly white figures in coveralls and helmets are soflty dancing citizens of distant epochs and billions upon billions upon billions upon billions upon billions upon billions upon billions. ================================================ FILE: buckets/local/testdata/b/one/baz.txt ================================================ Orion's sword great turbulent clouds brain is the seed of intelligence made in the interiors of collapsing stars cosmos white dwarf. Rig Veda ship of the imagination shores of the cosmic ocean rich in heavy atoms shores of the cosmic ocean courage of our questions. Kindling the energy hidden in matter permanence of the stars the only home we've ever known how far away citizens of distant epochs shores of the cosmic ocean. ================================================ FILE: buckets/local/testdata/b/one/muz.txt ================================================ Extraplanetary as a patch of light encyclopaedia galactica cosmos the ash of stellar alchemy quasar. Intelligent beings vanquish the impossible hundreds of thousands gathered by gravity permanence of the stars Rig Veda? Extraordinary claims require extraordinary evidence courage of our questions invent the universe the only home we've ever known a very small stage in a vast cosmic arena made in the interiors of collapsing stars. Dream of the mind's eye two ghostly white figures in coveralls and helmets are soflty dancing a mote of dust suspended in a sunbeam the carbon in our apple pies the sky calls to us a still more glorious dawn awaits? ================================================ FILE: buckets/local/testdata/b/one/three/far.txt ================================================ Decipherment take root and flourish white dwarf Hypatia something incredible is waiting to be known concept of the number one. Two ghostly white figures in coveralls and helmets are soflty dancing prime number courage of our questions the sky calls to us vanquish the impossible across the centuries. Descended from astronomers the sky calls to us rich in heavy atoms a still more glorious dawn awaits dream of the mind's eye descended from astronomers and billions upon billions upon billions upon billions upon billions upon billions upon billions. ================================================ FILE: buckets/local/testdata/b/one/two/fuz.txt ================================================ Shores of the cosmic ocean extraordinary claims require extraordinary evidence cosmic ocean as a patch of light the only home we've ever known courage of our questions. Hydrogen atoms rings of Uranus a very small stage in a vast cosmic arena with pretty stories for which there's little good evidence great turbulent clouds permanence of the stars. With pretty stories for which there's little good evidence a mote of dust suspended in a sunbeam a mote of dust suspended in a sunbeam hearts of the stars from which we spring globular star cluster. ================================================ FILE: buckets/local/watch.go ================================================ package local import ( "context" "errors" "time" "github.com/radovskyb/watcher" "github.com/textileio/go-threads/api/client" "github.com/textileio/textile/v2/buckets" "github.com/textileio/textile/v2/cmd" ) const ( fileSystemWatchInterval = time.Millisecond * 100 reconnectInterval = time.Second * 5 ) // Watch watches for and auto-pushes local bucket changes at an interval, // and listens for and auto-pulls remote changes as they arrive. // Use the WithOffline option to keep watching during network interruptions. // Returns a channel of watch connectivity states. // Cancel context to stop watching. func (b *Bucket) Watch(ctx context.Context, opts ...WatchOption) (<-chan cmd.WatchState, error) { ctx, err := b.Context(ctx) if err != nil { return nil, err } args := &watchOptions{} for _, opt := range opts { opt(args) } if !args.offline { return b.watchWhileConnected(ctx, args.events) } return cmd.Watch(ctx, func(ctx context.Context) (<-chan cmd.WatchState, error) { return b.watchWhileConnected(ctx, args.events) }, reconnectInterval) } // watchWhileConnected will watch until context is canceled or an error occurs. func (b *Bucket) watchWhileConnected(ctx context.Context, pevents chan<- Event) (<-chan cmd.WatchState, error) { id, err := b.Thread() if err != nil { return nil, err } bp, err := b.Path() if err != nil { return nil, err } state := make(chan cmd.WatchState) go func() { defer close(state) w := watcher.New() defer w.Close() w.SetMaxEvents(1) if err := w.AddRecursive(bp); err != nil { state <- cmd.WatchState{Err: err, Aborted: true} return } // Start listening for remote changes events, err := b.clients.Threads.Listen(ctx, id, []client.ListenOption{{ Type: client.ListenAll, InstanceID: b.Key(), }}) if err != nil { state <- cmd.WatchState{Err: err, Aborted: !cmd.IsConnectionError(err)} return } errs := make(chan error) go func() { for e := range events { if e.Err != nil { errs <- e.Err // events will close on error } else if err := b.watchPull(ctx, pevents); err != nil { errs <- err return } } }() // Start listening for local changes go func() { if err := w.Start(fileSystemWatchInterval); err != nil { errs <- err } }() go func() { for { select { case <-w.Event: if err := b.watchPush(ctx, pevents); err != nil { errs <- err } case err := <-w.Error: errs <- err case <-w.Closed: return } } }() // Manually sync once on startup if err := b.watchPush(ctx, pevents); err != nil { state <- cmd.WatchState{Err: err, Aborted: !cmd.IsConnectionError(err)} return } // If we made it here, we must be online state <- cmd.WatchState{State: cmd.Online} for { select { case err := <-errs: state <- cmd.WatchState{Err: err, Aborted: !cmd.IsConnectionError(err)} return case <-ctx.Done(): return } } }() return state, nil } func (b *Bucket) watchPush(ctx context.Context, events chan<- Event) error { b.pushBlock <- struct{}{} defer func() { <-b.pushBlock }() if _, err := b.PushLocal(ctx, WithEvents(events)); errors.Is(err, ErrUpToDate) { return nil } else if errors.Is(err, buckets.ErrNonFastForward) { // Pull remote changes if _, err = b.PullRemote(ctx, WithEvents(events)); err != nil { return err } // Now try pushing again if _, err = b.PushLocal(ctx, WithEvents(events)); err != nil { return err } } else if err != nil { return err } return nil } func (b *Bucket) watchPull(ctx context.Context, events chan<- Event) error { select { case b.pushBlock <- struct{}{}: if _, err := b.PullRemote(ctx, WithEvents(events)); !errors.Is(err, ErrUpToDate) { <-b.pushBlock return err } <-b.pushBlock default: // Ignore if there's a push in progress } return nil } ================================================ FILE: buf.yaml ================================================ version: v1beta1 build: roots: - . excludes: - api/bucketsd/pb/javascript - api/hubd/pb/javascript - api/usersd/pb/javascript lint: use: - DEFAULT except: - PACKAGE_VERSION_SUFFIX ignore_only: ENUM_ZERO_VALUE_SUFFIX: - api/mindexd/pb/mindexd.proto ENUM_VALUE_PREFIX: - api/mindexd/pb/mindexd.proto ignore: - api/mindexd/pb/google - api/mindexd/pb/protoc-gen-openapiv2 breaking: use: - FILE ================================================ FILE: buildinfo/buildinfo.go ================================================ package buildinfo import "fmt" var ( // GitCommit is set by govvv at build time. GitCommit = "" // GitBranch is set by govvv at build time. GitBranch = "" // GitState is set by govvv at build time. GitState = "" // GitSummary is set by govvv at build time. GitSummary = "" // BuildDate is set by govvv at build time. BuildDate = "" // Version is set by govvv at build time. Version = "git" ) // Summary prints a summary of all build info. func Summary() string { return fmt.Sprintf( "\tversion:\t%s\n\tbuild date:\t%s\n\tgit summary:\t%s\n\tgit branch:\t%s\n\tgit commit:\t%s\n\tgit state:\t%s", Version, BuildDate, GitSummary, GitBranch, GitCommit, GitState, ) } ================================================ FILE: buildtools/install_protoc.bash ================================================ #!/bin/bash set -eo pipefail if [ ! -d ./protoc ]; then OS=$(uname) if [ $OS = "Darwin" ]; then OS="osx" fi VERSION=3.13.0 ZIPNAME=protoc-$VERSION-$OS-x86_64 DOWNLOADLINK=https://github.com/protocolbuffers/protobuf/releases/download/v$VERSION/$ZIPNAME.zip curl -LO $DOWNLOADLINK unzip $ZIPNAME.zip -d protoc rm $ZIPNAME.zip fi if [ ! -d ./protoc-gen-go ]; then git clone --single-branch --depth 1 --branch "v1.4.3" https://github.com/golang/protobuf.git cd protobuf go build -o ../protoc-gen-go/protoc-gen-go ./protoc-gen-go cd .. rm -rf protobuf fi ================================================ FILE: cmd/buck/cli/add.go ================================================ package cli import ( "context" "github.com/ipfs/go-cid" "github.com/manifoldco/promptui" "github.com/spf13/cobra" "github.com/textileio/textile/v2/buckets/local" "github.com/textileio/textile/v2/cmd" ) var addCmd = &cobra.Command{ Use: "add [cid] [path]", Short: "Adds a UnixFs DAG locally at path", Long: `Adds a UnixFs DAG locally at path, merging with existing content.`, Args: cobra.ExactArgs(2), Run: func(c *cobra.Command, args []string) { yes, err := c.Flags().GetBool("yes") cmd.ErrCheck(err) target, err := cid.Decode(args[0]) cmd.ErrCheck(err) conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.PushTimeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) events := make(chan local.Event) defer close(events) go handleEvents(events) err = buck.AddRemoteCid( ctx, target, args[1], local.WithSelectMerge(getSelectMergeStrategy(yes)), local.WithAddEvents(events), ) cmd.ErrCheck(err) cmd.Success("Merged %s with %s", target, args[1]) }, } func getSelectMergeStrategy(auto bool) local.SelectMergeFunc { return func(desc string, isDir bool) (s local.MergeStrategy, err error) { if isDir { if auto { return local.Merge, nil } prompt := promptui.Select{ Label: desc, Items: []local.MergeStrategy{local.Skip, local.Merge, local.Replace}, } _, res, err := prompt.Run() if err != nil { return s, err } return local.MergeStrategy(res), nil } else { if auto { return local.Replace, nil } prompt := promptui.Prompt{ Label: desc, IsConfirm: true, } if _, err := prompt.Run(); err != nil { return local.Skip, nil } return local.Replace, nil } } } ================================================ FILE: cmd/buck/cli/archive.go ================================================ package cli import ( "bytes" "context" "encoding/json" "fmt" "io" "math/big" "os" "github.com/manifoldco/promptui" "github.com/spf13/cobra" "github.com/textileio/textile/v2/buckets/local" "github.com/textileio/textile/v2/cmd" "google.golang.org/protobuf/encoding/protojson" ) var defaultArchiveConfigCmd = &cobra.Command{ Use: "default-config", Short: "Print the default archive storage configuration for the specified Bucket.", Long: `Print the default archive storage configuration for the specified Bucket.`, Args: cobra.NoArgs, Run: func(c *cobra.Command, args []string) { conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) config, err := buck.DefaultArchiveConfig(ctx) cmd.ErrCheck(err) bytes, err := json.MarshalIndent(config, "", " ") cmd.ErrCheck(err) cmd.Message("%s", string(bytes)) }, } var setDefaultArchiveConfigCmd = &cobra.Command{ Use: "set-default-config [(optional)file]", Short: "Set the default archive storage configuration for the specified Bucket.", Long: `Set the default archive storage configuration for the specified Bucket from a file, stdin, or flags. If flags are specified, this command updates the current default storage-config with the *explicitly set* flags. Flags that aren't explicitly set won't set the default value, and thus keep the original value in the storage-config. If a file or stdin is used, the storage-config will be completely overridden by the provided one.`, Example: "hub buck archive set-default-config --rep-factor=3 --fast-retrieval --verified-deal --trusted-miners=f08240,f023467,f09848", Args: cobra.RangeArgs(0, 1), Run: func(c *cobra.Command, args []string) { var config local.ArchiveConfig conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) stdIn, err := c.Flags().GetBool("stdin") cmd.ErrCheck(err) if stdIn { // Read config json from stdin reader := c.InOrStdin() buf := new(bytes.Buffer) _, err := buf.ReadFrom(reader) cmd.ErrCheck(err) cmd.ErrCheck(json.Unmarshal(buf.Bytes(), &config)) } else if len(args) > 0 { // Read config json from path file, err := os.Open(args[0]) defer func() { err := file.Close() cmd.ErrCheck(err) }() reader := file cmd.ErrCheck(err) buf := new(bytes.Buffer) _, err = buf.ReadFrom(reader) cmd.ErrCheck(err) cmd.ErrCheck(json.Unmarshal(buf.Bytes(), &config)) } else { ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) config, err = buck.DefaultArchiveConfig(ctx) cmd.ErrCheck(err) if c.Flags().Changed("rep-factor") { repFactor, err := c.Flags().GetInt("rep-factor") cmd.ErrCheck(err) config.RepFactor = repFactor } if c.Flags().Changed("deal-min-duration") { dealMinDuration, err := c.Flags().GetInt64("deal-min-duration") cmd.ErrCheck(err) config.DealMinDuration = dealMinDuration } if c.Flags().Changed("max-price") { maxPrice, err := c.Flags().GetUint64("max-price") cmd.ErrCheck(err) config.MaxPrice = maxPrice } if c.Flags().Changed("excluded-miners") { excludedMiners, err := c.Flags().GetStringSlice("excluded-miners") cmd.ErrCheck(err) config.ExcludedMiners = excludedMiners } if c.Flags().Changed("trusted-miners") { trustedMiners, err := c.Flags().GetStringSlice("trusted-miners") cmd.ErrCheck(err) config.TrustedMiners = trustedMiners } if c.Flags().Changed("country-codes") { countryCodes, err := c.Flags().GetStringSlice("country-codes") cmd.ErrCheck(err) config.CountryCodes = countryCodes } if c.Flags().Changed("fast-retrieval") { fastRetrieval, err := c.Flags().GetBool("fast-retrieval") cmd.ErrCheck(err) config.FastRetrieval = fastRetrieval } if c.Flags().Changed("verified-deal") { verifiedDeal, err := c.Flags().GetBool("verified-deal") cmd.ErrCheck(err) config.VerifiedDeal = verifiedDeal } if c.Flags().Changed("deal-start-offset") { dealStartOffset, err := c.Flags().GetInt64("deal-start-offset") cmd.ErrCheck(err) config.DealStartOffset = dealStartOffset } } ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) err = buck.SetDefaultArchiveConfig(ctx, config) cmd.ErrCheck(err) cmd.Success("Bucket default archive config updated") }, } var archiveCmd = &cobra.Command{ Use: "archive", Short: "Create a Filecoin archive", Long: `Creates a Filecoin archive from the remote bucket root. Pass in a custom archive storage config via the --file flag or stdin to override the default archive storage configuration.`, Args: cobra.NoArgs, Run: func(c *cobra.Command, args []string) { yes, err := c.Flags().GetBool("yes") cmd.ErrCheck(err) if !yes { cmd.Warn("The archive will be done in the Filecoin Mainnet. Use with caution.") prompt := promptui.Prompt{ Label: "Proceed", IsConfirm: true, } if _, err := prompt.Run(); err != nil { cmd.End("") } fmt.Println("") } conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) diff, err := buck.DiffLocal() cmd.ErrCheck(err) if len(diff) != 0 && !yes { cmd.Warn("You have unpushed local changes. Are you sure you want to archive the last pushed bucket?") prompt := promptui.Prompt{ Label: "Proceed", IsConfirm: true, } if _, err := prompt.Run(); err != nil { cmd.End("") } fmt.Println("") } var reader io.Reader if c.Flags().Changed("file") { configPath, err := c.Flags().GetString("file") cmd.ErrCheck(err) file, err := os.Open(configPath) defer func() { err := file.Close() cmd.ErrCheck(err) }() cmd.ErrCheck(err) reader = file } else { stat, _ := os.Stdin.Stat() // stdin is being piped in (not being read from terminal) if (stat.Mode() & os.ModeCharDevice) == 0 { reader = c.InOrStdin() } } opts := []local.ArchiveRemoteOption{local.WithSkipAutomaticVerifiedDeal(true)} config := local.ArchiveConfig{} if reader != nil { buf := new(bytes.Buffer) _, err := buf.ReadFrom(reader) cmd.ErrCheck(err) cmd.ErrCheck(json.Unmarshal(buf.Bytes(), &config)) } else { config, err = buck.DefaultArchiveConfig(ctx) cmd.ErrCheck(err) } addrs, err := buck.Addresses(ctx) cmd.ErrCheck(err) if len(addrs.Addresses) != 1 { cmd.Fatal(fmt.Errorf("There should be exactly one wallet address but there are %d", len(addrs.Addresses))) } addrInfo := addrs.Addresses[0] balance, ok := big.NewInt(0).SetString(addrInfo.Balance, 10) if !ok { cmd.Fatal(fmt.Errorf("parsing current balance")) } if balance.Cmp(big.NewInt(0)) == 0 { cmd.Warn("The wallet address balance is zero, you may need to add some funds!") } skipVerifiedDealOverride, err := c.Flags().GetBool("skip-verified-deal-override") cmd.ErrCheck(err) if !skipVerifiedDealOverride { if !config.VerifiedDeal && addrInfo.VerifiedClientInfo != nil { remainingDataCap, ok := big.NewInt(0).SetString(addrInfo.VerifiedClientInfo.RemainingDatacapBytes, 10) if !ok { cmd.Fatal(fmt.Errorf("Parsing remaining datacap")) } if remainingDataCap.Cmp(big.NewInt(0)) > 0 { // If the default storage-config is !verified-deal, but the client // is verified, then help him set this value automatically. cmd.Message("The Filecoin wallet is verified, enabling verified deals automatically.") config.VerifiedDeal = true } else { cmd.Message("The Filecoin wallet is verified, but the remaining data-cap is zero.") } } else if !config.VerifiedDeal && addrInfo.VerifiedClientInfo == nil { // If the client isn't verified, we can't tune its storage-config // to get a verified deal. Explain how to get automatically verified. cmd.Warn("The Filecoin wallet address isn't verified, which can potentially lead to paying high-prices for storage.") cmd.Message("You can get verified automatically using your GitHub account at https://verify.glif.io") } else if config.VerifiedDeal && addrInfo.VerifiedClientInfo == nil { // Explain to the user that despite she has set the verifiedDeal // attribute in it's storage config, it needs to get verified first. cmd.Warn("Despite the storage-config has verified-deals enabled, the Filecoin wallet address isn't verified.") cmd.Message("You can get verified automatically using your GitHub account at https://verify.glif.io") } } if !config.VerifiedDeal && !yes { cmd.Warn("Are you sure you want to archive with an unverified deal?") prompt := promptui.Prompt{ Label: "Proceed", IsConfirm: true, } if _, err := prompt.Run(); err != nil { cmd.End("") } fmt.Println("") } if len(config.TrustedMiners) == 0 && !yes { cmd.Message("The storage-config trusted miners list is empty, which can lead to unreliable and high-cost Filecoin deal making.") cmd.Message("You can discover reliable miners by exploring: `hub fil query` and `hub fil calculate`.") cmd.Warn("Are you sure want to use potentially unreliable miners?") prompt := promptui.Prompt{ Label: "Proceed", IsConfirm: true, } if _, err := prompt.Run(); err != nil { cmd.End("") } fmt.Println("") } if config.MaxPrice == 0 && !yes { cmd.Warn("The storage-config doesn't specify a limit to pay for storage price") cmd.Message("You can set a limit with `hub buck set-storage-config --set-max-price`") cmd.Warn("Are you sure you want to make a deal without a max-price limit?") prompt := promptui.Prompt{ Label: "Proceed", IsConfirm: true, } if _, err := prompt.Run(); err != nil { cmd.End("") } fmt.Println("") } opts = append(opts, local.WithArchiveConfig(config)) err = buck.ArchiveRemote(ctx, opts...) cmd.ErrCheck(err) cmd.Success("Archive queued successfully") }, } var archiveLsCmd = &cobra.Command{ Use: "list", Short: "Shows information about current and historical archives.", Long: `Shows information about current and historical archives.`, Args: cobra.NoArgs, Run: func(c *cobra.Command, args []string) { conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) res, err := buck.Archives(ctx) cmd.ErrCheck(err) json, err := protojson.MarshalOptions{Multiline: true, Indent: " ", EmitUnpopulated: true}.Marshal(res) cmd.ErrCheck(err) cmd.Success("\n%v", string(json)) }, } var archiveWatchCmd = &cobra.Command{ Use: "watch", Short: "Watch the status of the most recent bucket archive.", Long: `Watch the status of the most recent bucket archive.`, Args: cobra.NoArgs, Run: func(c *cobra.Command, args []string) { conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.ArchiveWatchTimeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) msgs, err := buck.ArchiveWatch(ctx) cmd.ErrCheck(err) for m := range msgs { switch m.Type { case local.ArchiveMessage: cmd.Message(m.Message) case local.ArchiveError: if m.InactivityClose { cmd.Warn("No news from this job for a long-time. Re-run the command if you're still interested!") break } cmd.Fatal(m.Error) } } }, } ================================================ FILE: cmd/buck/cli/cli.go ================================================ package cli import ( "context" "os" "runtime" "strconv" aurora2 "github.com/logrusorgru/aurora" "github.com/manifoldco/promptui" "github.com/spf13/cobra" "github.com/textileio/textile/v2/buckets/local" "github.com/textileio/textile/v2/cmd" ) const Name = "buck" var bucks *local.Buckets var aurora = aurora2.NewAurora(runtime.GOOS != "windows") type Format string const ( DefaultFormat Format = "default" JSONFormat = "json" ) func Init(baseCmd *cobra.Command) { baseCmd.AddCommand( initCmd, getCmd, existingCmd, linksCmd, rootCmd, statusCmd, lsCmd, pushCmd, pullCmd, addCmd, watchCmd, catCmd, destroyCmd, encryptCmd, decryptCmd, archiveCmd, rolesCmd, remoteCmd, ) archiveCmd.AddCommand(defaultArchiveConfigCmd, setDefaultArchiveConfigCmd, archiveWatchCmd, archiveLsCmd) rolesCmd.AddCommand(rolesGrantCmd, rolesLsCmd) baseCmd.PersistentFlags().String("key", "", "Bucket key") baseCmd.PersistentFlags().String("thread", "", "Thread ID") initCmd.Flags().StringP("name", "n", "", "Bucket name") initCmd.Flags().BoolP("private", "p", false, "Obfuscates files and folders with encryption") initCmd.Flags().String("cid", "", "Bootstrap the bucket with a UnixFS Cid from the IPFS network") initCmd.Flags().BoolP("existing", "e", false, "Interactively select an existing remote bucket if true") initCmd.Flags().Bool("soft", false, "Accepts all local changes, including deletions, if true") initCmd.Flags().Bool("hard", false, "Discards all local changes if true") initCmd.Flags().BoolP("yes", "y", false, "Skips the confirmation prompt if true") initCmd.Flags().BoolP("quiet", "q", false, "Write minimal output") initCmd.Flags().Bool("unfreeze", false, "Unfreeze --cid from a known or imported deals in Filecoin.") pushCmd.Flags().BoolP("force", "f", false, "Allows non-fast-forward updates if true") pushCmd.Flags().BoolP("yes", "y", false, "Skips the confirmation prompt if true") pushCmd.Flags().BoolP("quiet", "q", false, "Write minimal output") pullCmd.Flags().BoolP("force", "f", false, "Force pull all remote files if true") pullCmd.Flags().Bool("hard", false, "Discards local changes if true") pullCmd.Flags().BoolP("yes", "y", false, "Skips the confirmation prompt if true") pullCmd.Flags().BoolP("quiet", "q", false, "Write minimal output") addCmd.Flags().BoolP("yes", "y", false, "Skips confirmations prompts to always overwrite files and merge folders") encryptCmd.Flags().StringP("password", "p", "", "Encryption password") decryptCmd.Flags().StringP("password", "p", "", "Decryption password") archiveCmd.Flags().StringP("file", "f", "", "Optional path to a file containing archive config json that will override the default") archiveCmd.Flags().BoolP("yes", "y", false, "Skips the confirmation prompt if true") archiveCmd.Flags().Bool("skip-verified-deal-override", false, "Skips automatic set of verified-deal in storage-config") setDefaultArchiveConfigCmd.Flags().IntP("rep-factor", "r", 1, "Target number of active deals") setDefaultArchiveConfigCmd.Flags().Int64P("deal-min-duration", "d", 0, "Minimum duration for the deal") setDefaultArchiveConfigCmd.Flags().StringSliceP("excluded-miners", "x", nil, "Miner addresses that should not be used") setDefaultArchiveConfigCmd.Flags().StringSliceP("trusted-miners", "t", nil, "Miner addresses that must be used") setDefaultArchiveConfigCmd.Flags().StringSliceP("country-codes", "c", nil, "Select miners with specific countries") setDefaultArchiveConfigCmd.Flags().Uint64P("max-price", "p", 0, "Maximum price that will be spent per RepFactor in AttoFIL/GiB per Epoch") setDefaultArchiveConfigCmd.Flags().BoolP("fast-retrieval", "f", true, "Created deals should enable the fast retrieval feature") setDefaultArchiveConfigCmd.Flags().BoolP("verified-deal", "v", false, "Deal is originating from a verified client with DataCap") setDefaultArchiveConfigCmd.Flags().Int64P("deal-start-offset", "e", 0, "Epochs in the future impose a deadline for deals to be on-chain") setDefaultArchiveConfigCmd.Flags().BoolP("stdin", "i", false, "Set config from stdin JSON") rolesGrantCmd.Flags().StringP("role", "r", "", "Access role: none, reader, writer, admin") linksCmd.Flags().String("format", "default", "Display URL links in the provided format. Options: [default,json]") remoteCmd.AddCommand(remoteAddCmd) remoteCmd.AddCommand(remoteRemoveCmd) remoteAddCmd.Flags().BoolP("yes", "y", false, "Skips the confirmation prompt if true") remoteAddCmd.Flags().BoolP("quiet", "q", false, "Write minimal output") remoteRemoveCmd.Flags().BoolP("yes", "y", false, "Skips the confirmation prompt if true") remoteRemoveCmd.Flags().BoolP("quiet", "q", false, "Write minimal output") } func SetBucks(b *local.Buckets) { bucks = b } var getCmd = &cobra.Command{ Use: "get", Short: "Get a bucket", Long: `Gets bucket metadata.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) info, err := buck.Info(ctx) cmd.ErrCheck(err) cmd.JSON(info) }, } var existingCmd = &cobra.Command{ Use: "existing", Short: "List buckets", Long: `Lists all buckets.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() list, err := bucks.RemoteBuckets(ctx, conf.Thread) cmd.ErrCheck(err) var data [][]string if len(list) > 0 { for _, item := range list { data = append(data, []string{ item.Name, item.Thread.String(), item.Key, item.Path.Cid().String(), }) } } if len(data) > 0 { cmd.RenderTable([]string{"name", "thread", "key", "root"}, data) } cmd.Message("Found %d buckets", aurora.White(len(data)).Bold()) }, } var statusCmd = &cobra.Command{ Use: "status", Aliases: []string{ "st", }, Short: "Show bucket object changes", Long: `Displays paths that have been added to and paths that have been removed or differ from the local bucket root.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) diff, err := buck.DiffLocal() cmd.ErrCheck(err) if len(diff) == 0 { cmd.End("Everything up-to-date") } for _, c := range diff { cf := local.ChangeColor(c.Type) cmd.Message("%s %s", cf(local.ChangeType(c.Type)), cf(c.Rel)) } }, } var rootCmd = &cobra.Command{ Use: "root", Short: "Show bucket root CIDs", Long: `Shows the local and remote bucket root CIDs (these will differ if the bucket is encrypted).`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) r, err := buck.Roots(ctx) cmd.ErrCheck(err) if r.Local.Defined() { cmd.Message("%s (local)", aurora.White(r.Local).Bold()) } cmd.Message("%s (remote)", aurora.White(r.Remote).Bold()) }, } var linksCmd = &cobra.Command{ Use: "links [path]", Aliases: []string{ "link", }, Short: "Display URL links to a bucket object.", Long: `Displays a thread, IPNS, and website link to a bucket object. Omit path to display the top-level links.`, Args: cobra.MaximumNArgs(1), Run: func(c *cobra.Command, args []string) { conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) var pth string if len(args) > 0 { pth = args[0] } links, err := buck.RemoteLinks(ctx, pth) cmd.ErrCheck(err) format, err := c.Flags().GetString("format") cmd.ErrCheck(err) printLinks(links, Format(format)) }, } func printLinks(reply local.Links, format Format) { switch format { case JSONFormat: cmd.JSON(reply) default: cmd.Message("Your bucket links:") cmd.Message("%s Thread link", aurora.White(reply.URL).Bold()) cmd.Message("%s IPNS link (propagation can be slow)", aurora.White(reply.IPNS).Bold()) if reply.WWW != "" { cmd.Message("%s Bucket website", aurora.White(reply.WWW).Bold()) } } } var lsCmd = &cobra.Command{ Use: "ls [path]", Aliases: []string{ "list", }, Short: "List top-level or nested bucket objects", Long: `Lists top-level or nested bucket objects.`, Args: cobra.MaximumNArgs(1), Run: func(c *cobra.Command, args []string) { conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) var pth string if len(args) > 0 { pth = args[0] } items, err := buck.ListRemotePath(ctx, pth) cmd.ErrCheck(err) var data [][]string if len(items) > 0 { for _, item := range items { var links string if item.IsDir { links = strconv.Itoa(item.ItemsCount) } else { links = "n/a" } data = append(data, []string{ item.Name, formatBytes(item.Size, false), strconv.FormatBool(item.IsDir), links, item.Cid.String(), }) } } if len(data) > 0 { cmd.RenderTable([]string{"name", "size", "dir", "objects", "cid"}, data) } cmd.Message("Found %d objects", aurora.White(len(data)).Bold()) }, } var catCmd = &cobra.Command{ Use: "cat [path]", Short: "Cat bucket objects at path", Long: `Cats bucket objects at path.`, Args: cobra.ExactArgs(1), Run: func(c *cobra.Command, args []string) { conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.PullTimeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) err = buck.CatRemotePath(ctx, args[0], os.Stdout) cmd.ErrCheck(err) }, } var encryptCmd = &cobra.Command{ Use: "encrypt [file] [password]", Short: "Encrypt file with a password", Long: `Encrypts file with a password (WARNING: Password is not recoverable).`, Args: cobra.ExactArgs(2), Run: func(c *cobra.Command, args []string) { conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) err = buck.EncryptLocalPathWithPassword(args[0], args[1], os.Stdout) cmd.ErrCheck(err) }, } var decryptCmd = &cobra.Command{ Use: "decrypt [path] [password]", Short: "Decrypt bucket objects at path with password", Long: `Decrypts bucket objects at path with the given password and writes to stdout.`, Args: cobra.ExactArgs(2), Run: func(c *cobra.Command, args []string) { conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.PullTimeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) err = buck.DecryptRemotePathWithPassword(ctx, args[0], args[1], os.Stdout) cmd.ErrCheck(err) }, } var destroyCmd = &cobra.Command{ Use: "destroy", Short: "Destroy bucket and all objects", Long: `Destroys the bucket and all objects.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) cmd.Warn("%s", aurora.Red( "This action cannot be undone. The bucket and all associated data will be permanently deleted.")) prompt := promptui.Prompt{ Label: "Are you absolutely sure", IsConfirm: true, } if _, err = prompt.Run(); err != nil { cmd.End("") } err = buck.Destroy(ctx) cmd.ErrCheck(err) cmd.Success("Your bucket has been deleted") }, } ================================================ FILE: cmd/buck/cli/init.go ================================================ package cli import ( "context" "errors" "fmt" cid "github.com/ipfs/go-cid" "github.com/manifoldco/promptui" "github.com/spf13/cobra" "github.com/textileio/go-threads/core/thread" "github.com/textileio/go-threads/db" "github.com/textileio/textile/v2/api/common" "github.com/textileio/textile/v2/buckets/local" "github.com/textileio/textile/v2/cmd" ) var initCmd = &cobra.Command{ Use: "init", Short: "Initialize a new or existing bucket", Long: `Initializes a new or existing bucket. A .textile config directory and a seed file will be created in the current working directory. Existing configs will not be overwritten. Use the '--existing' flag to interactively select an existing remote bucket. Use the '--cid' flag to initialize from an existing UnixFS DAG. Use the '--unfreeze' flag to retrieve '--cid' from known or imported deals. By default, if the remote bucket exists, remote objects are pulled and merged with local changes. Use the '--soft' flag to accept all local changes, including deletions. Use the '--hard' flag to discard all local changes. `, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) quiet, err := c.Flags().GetBool("quiet") cmd.ErrCheck(err) existing := conf.Thread.Defined() && conf.Key != "" chooseExisting, err := c.Flags().GetBool("existing") cmd.ErrCheck(err) if existing && chooseExisting { chooseExisting = false // Nothing left to choose } var strategy local.InitStrategy soft, err := c.Flags().GetBool("soft") cmd.ErrCheck(err) hard, err := c.Flags().GetBool("hard") cmd.ErrCheck(err) if soft && hard { cmd.Fatal(errors.New("--soft and --hard cannot by used together")) } if soft { strategy = local.Soft } else if hard { strategy = local.Hard } else { strategy = local.Hybrid } var xcid cid.Cid xcids, err := c.Flags().GetString("cid") cmd.ErrCheck(err) if xcids != "" { xcid, err = cid.Decode(xcids) cmd.ErrCheck(err) } if (existing || chooseExisting) && xcid.Defined() { cmd.Fatal(errors.New("--cid cannot be used with an existing bucket")) } unfreeze, err := c.Flags().GetBool("unfreeze") cmd.ErrCheck(err) if unfreeze && xcid == cid.Undef { cmd.Fatal(errors.New("--unfreeze requires specifying --cid")) } var name string var private bool if !existing && !chooseExisting { if c.Flags().Changed("name") { name, err = c.Flags().GetString("name") cmd.ErrCheck(err) } else { namep := promptui.Prompt{ Label: "Enter a name for your new bucket (optional)", } name, err = namep.Run() if err != nil { cmd.End("") } } if c.Flags().Changed("private") { private, err = c.Flags().GetBool("private") cmd.ErrCheck(err) } else { privp := promptui.Prompt{ Label: "Encrypt bucket contents", IsConfirm: true, } if _, err = privp.Run(); err == nil { private = true } } } if chooseExisting { ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() list, err := bucks.RemoteBuckets(ctx, conf.Thread) cmd.ErrCheck(err) if len(list) == 0 { cmd.Fatal(fmt.Errorf("no existing buckets found")) } prompt := promptui.Select{ Label: "Which existing bucket do you want to init from?", Items: list, Templates: &promptui.SelectTemplates{ Active: fmt.Sprintf(`{{ "%s" | cyan }} {{ .Name | bold }} {{ .Key | faint | bold }}`, promptui.IconSelect), Inactive: `{{ .Name | faint }} {{ .Key | faint | bold }}`, Selected: aurora.Sprintf(aurora.BrightBlack("> Selected bucket {{ .Name | white | bold }}")), }, } index, _, err := prompt.Run() if err != nil { cmd.End("") } selected := list[index] name = selected.Name conf.Thread = selected.Thread conf.Key = selected.Key existing = true } if !conf.Thread.Defined() { ctx, cancel := context.WithTimeout(bucks.Context(context.Background()), cmd.Timeout) defer cancel() selected := bucks.Clients().SelectThread( ctx, "Buckets are written to a threadDB. Select or create a new one", aurora.Sprintf(aurora.BrightBlack("> Selected threadDB {{ .Label | white | bold }}")), true) if selected.Label == "Create new" { if selected.Name == "" { prompt := promptui.Prompt{ Label: "Enter a name for your new threadDB (optional)", } selected.Name, err = prompt.Run() if err != nil { cmd.End("") } } ctx = common.NewThreadNameContext(ctx, selected.Name) conf.Thread = thread.NewIDV1(thread.Raw, 32) err = bucks.Clients().Threads.NewDB(ctx, conf.Thread, db.WithNewManagedName(selected.Name)) cmd.ErrCheck(err) } else { conf.Thread = selected.ID } } ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() var events chan local.Event if !quiet { events = make(chan local.Event) defer close(events) go handleEvents(events) } buck, err := bucks.NewBucket( ctx, conf, local.WithName(name), local.WithPrivate(private), local.WithCid(xcid), local.WithUnfreeze(unfreeze), local.WithStrategy(strategy), local.WithInitEvents(events)) cmd.ErrCheck(err) if unfreeze { cmd.Message("The retrieval-id is: %s", buck.RetrievalID()) cmd.Message("The bucket will be automatically created if the Filecoin retrieval succeeds.") cmd.Message("Track progress using `hub retrievals [ls | logs]`.") return } links, err := buck.RemoteLinks(ctx, "") cmd.ErrCheck(err) printLinks(links, DefaultFormat) var msg string if !existing { msg = "Initialized %s as a new empty bucket" if xcid.Defined() { msg = "Initialized %s as a new bootstrapped bucket" } } else { msg = "Initialized %s from an existing bucket" } bp, err := buck.Path() cmd.ErrCheck(err) cmd.Success(msg, aurora.White(bp).Bold()) }, } ================================================ FILE: cmd/buck/cli/pull.go ================================================ package cli import ( "context" "errors" "github.com/spf13/cobra" "github.com/textileio/textile/v2/buckets/local" "github.com/textileio/textile/v2/cmd" ) var pullCmd = &cobra.Command{ Use: "pull", Short: "Pull bucket object changes", Long: `Pulls paths that have been added to and paths that have been removed or differ from the remote bucket root. Use the '--hard' flag to discard all local changes. Use the '--force' flag to pull all remote objects, even if they already exist locally. `, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { force, err := c.Flags().GetBool("force") cmd.ErrCheck(err) hard, err := c.Flags().GetBool("hard") cmd.ErrCheck(err) yes, err := c.Flags().GetBool("yes") cmd.ErrCheck(err) quiet, err := c.Flags().GetBool("quiet") cmd.ErrCheck(err) conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.PullTimeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) var events chan local.Event if !quiet { events = make(chan local.Event) defer close(events) go handleEvents(events) } roots, err := buck.PullRemote( ctx, local.WithConfirm(getConfirm("Discard %d local changes", yes)), local.WithForce(force), local.WithHard(hard), local.WithEvents(events)) if errors.Is(err, local.ErrAborted) { cmd.End("") } else if errors.Is(err, local.ErrUpToDate) { cmd.End("Everything up-to-date") } else if err != nil { cmd.Fatal(err) } cmd.Message("%s", aurora.White(roots.Remote).Bold()) }, } ================================================ FILE: cmd/buck/cli/push.go ================================================ package cli import ( "context" "errors" "strings" "github.com/spf13/cobra" "github.com/textileio/textile/v2/buckets" "github.com/textileio/textile/v2/buckets/local" "github.com/textileio/textile/v2/cmd" ) const nonFastForwardMsg = "the root of your bucket is behind (try `%s` before pushing again)" var pushCmd = &cobra.Command{ Use: "push", Short: "Push bucket object changes", Long: `Pushes paths that have been added to and paths that have been removed or differ from the local bucket root. Use the '--force' flag to allow a non-fast-forward update. `, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { force, err := c.Flags().GetBool("force") cmd.ErrCheck(err) yes, err := c.Flags().GetBool("yes") cmd.ErrCheck(err) quiet, err := c.Flags().GetBool("quiet") cmd.ErrCheck(err) conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.PushTimeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) var events chan local.Event if !quiet { events = make(chan local.Event) defer close(events) go handleEvents(events) } roots, err := buck.PushLocal( ctx, local.WithConfirm(getConfirm("Push %d changes", yes)), local.WithForce(force), local.WithEvents(events), ) if errors.Is(err, local.ErrAborted) { cmd.End("") } else if errors.Is(err, local.ErrUpToDate) { cmd.End("Everything up-to-date") } else if err != nil && strings.Contains(err.Error(), buckets.ErrNonFastForward.Error()) { cmd.Fatal(errors.New(nonFastForwardMsg), aurora.Cyan("buck pull")) } else if err != nil { cmd.Fatal(err) } cmd.Message("%s", aurora.White(roots.Remote).Bold()) }, } ================================================ FILE: cmd/buck/cli/remote.go ================================================ package cli import ( "context" "errors" "os" "path" "path/filepath" "strings" du "github.com/ipfs/go-merkledag/dagutils" "github.com/spf13/cobra" "github.com/textileio/textile/v2/buckets" "github.com/textileio/textile/v2/buckets/local" "github.com/textileio/textile/v2/cmd" ) var remoteCmd = &cobra.Command{ Use: "remote", Short: "Manage a remote bucket without effecting the local filesystem", Long: `Manages a remote bucket without effecting the local filesystem.`, Args: cobra.ExactArgs(0), } var remoteAddCmd = &cobra.Command{ Use: "add [file/folder] [path]", Short: "Add a file or folder to a remote bucket path", Long: `Adds a file or folder to a remote bucket path. `, Args: cobra.ExactArgs(2), Run: func(c *cobra.Command, args []string) { yes, err := c.Flags().GetBool("yes") cmd.ErrCheck(err) quiet, err := c.Flags().GetBool("quiet") cmd.ErrCheck(err) conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.PushTimeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) bp, err := buck.Path() cmd.ErrCheck(err) ig, err := local.IgnoreFile(bp) cmd.ErrCheck(err) var events chan local.Event if !quiet { events = make(chan local.Event) defer close(events) go handleEvents(events) } src, err := filepath.Abs(args[0]) cmd.ErrCheck(err) var ( pth = filepath.ToSlash(filepath.Clean(args[1])) names []string diff []local.Change ) err = filepath.Walk(src, func(n string, info os.FileInfo, err error) error { if err != nil { return err } if !info.IsDir() { f := strings.TrimPrefix(n, pth+string(os.PathSeparator)) if local.Ignore(n, ig) || strings.Contains(f, buckets.SeedName) || strings.Contains(f, buck.ConfDir()) || strings.HasSuffix(f, local.PatchExt) { return nil } names = append(names, n) } return nil }) cmd.ErrCheck(err) for _, n := range names { r, err := filepath.Rel(buck.Cwd(), n) if err != nil { r = n } p := path.Join(pth, strings.TrimPrefix(filepath.ToSlash(n), filepath.ToSlash(filepath.Dir(src)))) diff = append(diff, local.Change{Type: du.Add, Name: n, Path: p, Rel: r}) } confirm := getConfirm("Push %d changes", yes) if confirm != nil { if ok := confirm(diff); !ok { cmd.End("") } } ctx, err = buck.Context(ctx) cmd.ErrCheck(err) r, err := buck.AddRemoteFiles(ctx, buck.Key(), nil, diff, true, events) if errors.Is(err, local.ErrAborted) { cmd.End("") } else if err != nil { cmd.Fatal(err) } cmd.Message("%s", aurora.White(r.Cid()).Bold()) }, } var remoteRemoveCmd = &cobra.Command{ Use: "rm [path]", Aliases: []string{ "remove", }, Short: "Remove a path from a remote bucket", Long: `Removes a path from a remote bucket. `, Args: cobra.ExactArgs(1), Run: func(c *cobra.Command, args []string) { yes, err := c.Flags().GetBool("yes") cmd.ErrCheck(err) quiet, err := c.Flags().GetBool("quiet") cmd.ErrCheck(err) conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.PushTimeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) var events chan local.Event if !quiet { events = make(chan local.Event) defer close(events) go handleEvents(events) } pth := filepath.Clean(args[0]) change := local.Change{ Type: du.Remove, Name: pth, Path: pth, Rel: pth, } confirm := getConfirm("Push %d changes", yes) if confirm != nil { if ok := confirm([]local.Change{change}); !ok { cmd.End("") } } ctx, err = buck.Context(ctx) cmd.ErrCheck(err) r, err := buck.RemoveRemoteFile(ctx, buck.Key(), nil, change, true, events) if errors.Is(err, local.ErrAborted) { cmd.End("") } else if err != nil { cmd.Fatal(err) } if r != nil { cmd.Message("%s", aurora.White(r.Cid()).Bold()) } }, } ================================================ FILE: cmd/buck/cli/roles.go ================================================ package cli import ( "context" "fmt" "github.com/manifoldco/promptui" "github.com/spf13/cobra" "github.com/textileio/textile/v2/buckets" "github.com/textileio/textile/v2/cmd" ) var rolesCmd = &cobra.Command{ Use: "roles", Aliases: []string{ "role", }, Short: "Object access role management", Long: `Manages remote bucket object access roles.`, Args: cobra.ExactArgs(0), } var rolesGrantCmd = &cobra.Command{ Use: "grant [identity] [path]", Short: "Grant remote object access roles", Long: `Grants remote object access roles to an identity. Identity must be a multibase encoded public key. A "*" value will set the default access role for an object. Access roles: "none": Revokes all access. "reader": Grants read-only access. "writer": Grants read and write access. "admin": Grants read, write, delete and role editing access. `, Args: cobra.RangeArgs(1, 2), Run: func(c *cobra.Command, args []string) { roleStr, err := c.Flags().GetString("role") cmd.ErrCheck(err) conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.PullTimeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) if roleStr == "" { roles := []string{"None", "Reader", "Writer", "Admin"} prompt := promptui.Select{ Label: "Select a role", Items: roles, Templates: &promptui.SelectTemplates{ Active: fmt.Sprintf(`{{ "%s" | cyan }} {{ . | bold }}`, promptui.IconSelect), Inactive: `{{ . | faint }}`, Selected: aurora.Sprintf(aurora.BrightBlack("> Selected role {{ . | white | bold }}")), }, } index, _, err := prompt.Run() if err != nil { cmd.End("") } roleStr = roles[index] } role, err := buckets.NewRoleFromString(roleStr) if err != nil { cmd.Fatal(fmt.Errorf("access role must be one of: none, reader, writer, or admin")) } var pth string if len(args) > 1 { pth = args[1] } res, err := buck.PushPathAccessRoles(ctx, pth, map[string]buckets.Role{args[0]: role}) cmd.ErrCheck(err) var data [][]string if len(res) > 0 { for i, r := range res { data = append(data, []string{i, r.String()}) } } if len(data) > 0 { cmd.RenderTable([]string{"identity", "role"}, data) } cmd.Success("Updated access roles for path %s", aurora.White(pth).Bold()) }, } var rolesLsCmd = &cobra.Command{ Use: "ls [path]", Aliases: []string{ "list", }, Short: "List top-level or nested bucket object access roles", Long: `Lists top-level or nested bucket object access roles.`, Args: cobra.MaximumNArgs(1), Run: func(c *cobra.Command, args []string) { conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.PullTimeout) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) var pth string if len(args) > 0 { pth = args[0] } res, err := buck.PullPathAccessRoles(ctx, pth) cmd.ErrCheck(err) var data [][]string if len(res) > 0 { for i, r := range res { data = append(data, []string{i, r.String()}) } } if len(data) > 0 { cmd.RenderTable([]string{"identity", "role"}, data) } cmd.Message("Found %d access roles", aurora.White(len(data)).Bold()) }, } ================================================ FILE: cmd/buck/cli/util.go ================================================ package cli import ( "fmt" "os" "runtime" pb "github.com/cheggaaa/pb/v3" "github.com/manifoldco/promptui" "github.com/textileio/textile/v2/buckets/local" "github.com/textileio/textile/v2/cmd" ) func getConfirm(label string, auto bool) local.ConfirmDiffFunc { return func(diff []local.Change) bool { if auto { return true } for _, c := range diff { cf := local.ChangeColor(c.Type) cmd.Message("%s %s", cf(local.ChangeType(c.Type)), cf(c.Rel)) } prompt := promptui.Prompt{ Label: fmt.Sprintf(label, len(diff)), IsConfirm: true, } if _, err := prompt.Run(); err != nil { return false } return true } } func handleEvents(events chan local.Event) { var bar *pb.ProgressBar if runtime.GOOS != "windows" { bar = pb.New(0) bar.Set(pb.Bytes, true) tmp := `{{string . "prefix"}}{{counters . }} {{bar . "[" "=" ">" "-" "]"}} {{percent . }} {{etime . }}{{string . "suffix"}}` bar.SetTemplate(pb.ProgressBarTemplate(tmp)) } clear := func() { if bar != nil { _, _ = fmt.Fprintf(os.Stderr, "\033[2K\r") } } for e := range events { switch e.Type { case local.EventProgress: if bar == nil { continue } bar.SetTotal(e.Size) bar.SetCurrent(e.Complete) if !bar.IsStarted() { bar.Start() } bar.Write() case local.EventFileComplete: clear() _, _ = fmt.Fprintf(os.Stdout, "+ %s %s %s\n", e.Cid, e.Path, formatBytes(e.Size, false), ) if bar != nil && bar.IsStarted() { bar.Write() } case local.EventFileRemoved: clear() _, _ = fmt.Fprintf(os.Stdout, "- %s\n", e.Path) if bar != nil && bar.IsStarted() { bar.Write() } } } } // Copied from https://github.com/cheggaaa/pb/blob/master/v3/util.go const ( _KiB = 1024 _MiB = 1048576 _GiB = 1073741824 _TiB = 1099511627776 _kB = 1e3 _MB = 1e6 _GB = 1e9 _TB = 1e12 ) // Copied from https://github.com/cheggaaa/pb/blob/master/v3/util.go func formatBytes(i int64, useSIPrefix bool) (result string) { if !useSIPrefix { switch { case i >= _TiB: result = fmt.Sprintf("%.02f TiB", float64(i)/_TiB) case i >= _GiB: result = fmt.Sprintf("%.02f GiB", float64(i)/_GiB) case i >= _MiB: result = fmt.Sprintf("%.02f MiB", float64(i)/_MiB) case i >= _KiB: result = fmt.Sprintf("%.02f KiB", float64(i)/_KiB) default: result = fmt.Sprintf("%d B", i) } } else { switch { case i >= _TB: result = fmt.Sprintf("%.02f TB", float64(i)/_TB) case i >= _GB: result = fmt.Sprintf("%.02f GB", float64(i)/_GB) case i >= _MB: result = fmt.Sprintf("%.02f MB", float64(i)/_MB) case i >= _kB: result = fmt.Sprintf("%.02f kB", float64(i)/_kB) default: result = fmt.Sprintf("%d B", i) } } return } ================================================ FILE: cmd/buck/cli/watch.go ================================================ package cli import ( "context" "fmt" "os" "github.com/spf13/cobra" "github.com/textileio/textile/v2/buckets/local" "github.com/textileio/textile/v2/cmd" ) var watchCmd = &cobra.Command{ Use: "watch", Short: "Watch auto-pushes local changes to the remote", Long: `Watch auto-pushes local changes to the remote.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { conf, err := bucks.NewConfigFromCmd(c, ".") cmd.ErrCheck(err) ctx, cancel := context.WithCancel(context.Background()) defer cancel() buck, err := bucks.GetLocalBucket(ctx, conf) cmd.ErrCheck(err) bp, err := buck.Path() cmd.ErrCheck(err) events := make(chan local.Event) defer close(events) go handleWatchEvents(events) state, err := buck.Watch(ctx, local.WithWatchEvents(events), local.WithOffline(true)) cmd.ErrCheck(err) for s := range state { switch s.State { case cmd.Online: cmd.Success("Watching %s for changes...", aurora.White(bp).Bold()) case cmd.Offline: if s.Aborted { cmd.Fatal(s.Err) } else { cmd.Message("Not connected. Trying to connect...") } } } }, } func handleWatchEvents(events chan local.Event) { for e := range events { switch e.Type { case local.EventFileComplete: _, _ = fmt.Fprintf(os.Stdout, "+ %s %s %s\n", e.Cid, e.Path, formatBytes(e.Size, false), ) case local.EventFileRemoved: _, _ = fmt.Fprintf(os.Stdout, "- %s\n", e.Path) } } } ================================================ FILE: cmd/buck/main.go ================================================ package main import ( "github.com/spf13/cobra" "github.com/textileio/textile/v2/buckets/local" "github.com/textileio/textile/v2/cmd" buck "github.com/textileio/textile/v2/cmd/buck/cli" ) const defaultTarget = "127.0.0.1:3006" var clients *cmd.Clients func init() { buck.Init(rootCmd) rootCmd.PersistentFlags().String("api", defaultTarget, "API target") } func main() { cmd.ErrCheck(rootCmd.Execute()) } var rootCmd = &cobra.Command{ Use: buck.Name, Short: "Bucket Client", Long: `The Bucket Client. Manages files and folders in an object storage bucket.`, PersistentPreRun: func(c *cobra.Command, args []string) { config := local.DefaultConfConfig() hubTarget := cmd.GetFlagOrEnvValue(c, "api", config.EnvPrefix) minerIndexTarget := cmd.GetFlagOrEnvValue(c, "apimindex", config.EnvPrefix) clients = cmd.NewClients(hubTarget, false, minerIndexTarget) buck.SetBucks(local.NewBuckets(clients, config)) }, PersistentPostRun: func(c *cobra.Command, args []string) { clients.Close() }, Args: cobra.ExactArgs(0), } ================================================ FILE: cmd/buckd/Dockerfile ================================================ FROM golang:1.16.0-buster MAINTAINER Textile # This is (in large part) copied (with love) from # https://hub.docker.com/r/ipfs/go-ipfs/dockerfile # Install deps RUN apt-get update && apt-get install -y \ libssl-dev \ ca-certificates ENV SRC_DIR /textile # Download packages first so they can be cached. COPY go.mod go.sum $SRC_DIR/ RUN cd $SRC_DIR \ && go mod download COPY . $SRC_DIR # Build the thing. RUN cd $SRC_DIR \ && TXTL_BUILD_FLAGS="CGO_ENABLED=0 GOOS=linux" make build-buckd # Get su-exec, a very minimal tool for dropping privileges, # and tini, a very minimal init daemon for containers ENV SUEXEC_VERSION v0.2 ENV TINI_VERSION v0.19.0 RUN set -eux; \ dpkgArch="$(dpkg --print-architecture)"; \ case "${dpkgArch##*-}" in \ "amd64" | "armhf" | "arm64") tiniArch="tini-static-$dpkgArch" ;;\ *) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; \ esac; \ cd /tmp \ && git clone https://github.com/ncopa/su-exec.git \ && cd su-exec \ && git checkout -q $SUEXEC_VERSION \ && make su-exec-static \ && cd /tmp \ && wget -q -O tini https://github.com/krallin/tini/releases/download/$TINI_VERSION/$tiniArch \ && chmod +x tini # Now comes the actual target image, which aims to be as small as possible. FROM busybox:1.31.1-glibc LABEL maintainer="Textile " # Get the textile binary, entrypoint script, and TLS CAs from the build container. ENV SRC_DIR /textile COPY --from=0 $SRC_DIR/buckd /usr/local/bin/buckd COPY --from=0 /tmp/su-exec/su-exec-static /sbin/su-exec COPY --from=0 /tmp/tini /sbin/tini COPY --from=0 /etc/ssl/certs /etc/ssl/certs # This shared lib (part of glibc) doesn't seem to be included with busybox. COPY --from=0 /lib/*-linux-gnu*/libdl.so.2 /lib/ # Copy over SSL libraries. COPY --from=0 /usr/lib/*-linux-gnu*/libssl.so* /usr/lib/ COPY --from=0 /usr/lib/*-linux-gnu*/libcrypto.so* /usr/lib/ # addrApi; can be exposed to the public. EXPOSE 3006 # addrApiProxy; can be exposed to the public. EXPOSE 3007 # addrThreadsHost; must be exposed to the public. EXPOSE 4006 # addrGatewayHost; can be exposed to the public. EXPOSE 8006 # Create the repo directory. ENV BUCKETS_PATH /data/buckets RUN mkdir -p $BUCKETS_PATH \ && adduser -D -h $BUCKETS_PATH -u 1000 -G users buckets \ && chown buckets:users $BUCKETS_PATH # Switch to a non-privileged user. USER buckets # Expose the repo as a volume. # Important this happens after the USER directive so permission are correct. VOLUME $BUCKETS_PATH ENTRYPOINT ["/sbin/tini", "--", "buckd"] CMD ["--repo=/data/buckets"] ================================================ FILE: cmd/buckd/Dockerfile.dev ================================================ FROM golang:1.16.0-buster RUN apt-get update RUN go get github.com/go-delve/delve/cmd/dlv ENV SRC_DIR /textile COPY go.mod go.sum $SRC_DIR/ RUN cd $SRC_DIR \ && go mod download COPY . $SRC_DIR RUN cd $SRC_DIR \ && CGO_ENABLED=0 GOOS=linux go build -gcflags "all=-N -l" -o buckd cmd/buckd/main.go FROM debian:buster LABEL maintainer="Textile " ENV SRC_DIR /textile COPY --from=0 /go/bin/dlv /usr/local/bin/dlv COPY --from=0 $SRC_DIR/buckd /usr/local/bin/buckd EXPOSE 3006 EXPOSE 3007 EXPOSE 4006 EXPOSE 8006 EXPOSE 40000 ENV BUCKETS_PATH /data/buckets RUN adduser --home $BUCKETS_PATH --disabled-login --gecos "" --ingroup users buckets USER buckets VOLUME $BUCKETS_PATH ENTRYPOINT ["dlv", "--listen=0.0.0.0:40000", "--headless=true", "--accept-multiclient", "--continue", "--api-version=2", "exec", "/usr/local/bin/buckd"] CMD ["--", "--repo=/data/buckets"] ================================================ FILE: cmd/buckd/docker-compose-dev.yml ================================================ version: "3" services: buckets: build: context: ../../ dockerfile: ./cmd/buckd/Dockerfile.dev volumes: - "${REPO_PATH}/buckets:/data/buckets" environment: - BUCK_LOG_DEBUG=true - BUCK_ADDR_API=/ip4/0.0.0.0/tcp/3006 - BUCK_ADDR_API_PROXY=/ip4/0.0.0.0/tcp/3007 - BUCK_ADDR_MONGO_URI=mongodb://mongo:27017 - BUCK_ADDR_MONGO_NAME=buckets - BUCK_ADDR_THREADS_HOST=/ip4/0.0.0.0/tcp/4006 - BUCK_ADDR_THREADS_MONGO_URI=mongodb://mongo:27017 - BUCK_ADDR_THREADS_MONGO_NAME=buckets_threads - BUCK_ADDR_GATEWAY_HOST=/ip4/0.0.0.0/tcp/8006 - BUCK_ADDR_GATEWAY_URL - BUCK_ADDR_IPFS_API=/dns4/ipfs/tcp/5001 - BUCK_ADDR_POWERGATE_API - BUCK_GATEWAY_SUBDOMAINS - BUCK_DNS_DOMAIN ports: - "127.0.0.1:3006:3006" - "127.0.0.1:3007:3007" - "4006:4006" - "127.0.0.1:8006:8006" - "127.0.0.1:40000:40000" security_opt: - "seccomp:unconfined" cap_add: - SYS_PTRACE depends_on: - mongo mongo: image: mongo:latest volumes: - "${REPO_PATH}/mongo:/data/db" ports: - "127.0.0.1:27017:27017" command: - /bin/bash - -c - | /usr/bin/mongod --fork --logpath /var/log/mongod.log --bind_ip_all --replSet rs0 mongo --eval 'rs.initiate({_id: "rs0", version: 1, members: [{ _id: 0, host: "mongo:27017" }]})' tail -f /var/log/mongod.log ipfs: image: ipfs/go-ipfs:v0.8.0 volumes: - "${REPO_PATH}/ipfs:/data/ipfs" environment: - IPFS_PROFILE=test ports: - "4001:4001" - "4001:4001/udp" - "127.0.0.1:5001:5001" - "127.0.0.1:8080:8080" ================================================ FILE: cmd/buckd/docker-compose.yml ================================================ version: "3" services: buckets: image: textile/textile:buckets restart: always volumes: - "${REPO_PATH}/buckets:/data/buckets" environment: - BUCK_LOG_DEBUG - BUCK_ADDR_API=/ip4/0.0.0.0/tcp/3006 - BUCK_ADDR_API_PROXY=/ip4/0.0.0.0/tcp/3007 - BUCK_ADDR_MONGO_URI=mongodb://mongo:27017 - BUCK_ADDR_MONGO_NAME - BUCK_ADDR_THREADS_HOST=/ip4/0.0.0.0/tcp/4006 - BUCK_ADDR_THREADS_MONGO_URI - BUCK_ADDR_THREADS_MONGO_NAME - BUCK_ADDR_GATEWAY_HOST=/ip4/0.0.0.0/tcp/8006 - BUCK_ADDR_GATEWAY_URL - BUCK_ADDR_IPFS_API=/dns4/ipfs/tcp/5001 - BUCK_ADDR_POWERGATE_API - BUCK_GATEWAY_SUBDOMAINS - BUCK_DNS_DOMAIN - BUCK_DNS_ZONE_ID - BUCK_DNS_TOKEN ports: - "3006:3006" - "3007:3007" - "4006:4006" - "8006:8006" depends_on: - mongo mongo: image: mongo:latest restart: always volumes: - "${REPO_PATH}/mongo:/data/db" ports: - "127.0.0.1:27017:27017" command: - /bin/bash - -c - | /usr/bin/mongod --fork --logpath /var/log/mongod.log --bind_ip_all --replSet rs0 mongo --eval 'rs.initiate({_id: "rs0", version: 1, members: [{ _id: 0, host: "mongo:27017" }]})' tail -f /var/log/mongod.log ipfs: image: ipfs/go-ipfs:v0.8.0 restart: always volumes: - "${REPO_PATH}/ipfs:/data/ipfs" ports: - "4001:4001" - "4001:4001/udp" - "127.0.0.1:5001:5001" - "8080:8080" ================================================ FILE: cmd/buckd/main.go ================================================ package main import ( "context" "encoding/json" "errors" "fmt" logging "github.com/ipfs/go-log/v2" "github.com/spf13/cobra" "github.com/spf13/viper" "github.com/textileio/go-threads/util" "github.com/textileio/textile/v2/cmd" "github.com/textileio/textile/v2/core" ) const daemonName = "buckd" var ( log = logging.Logger(daemonName) config = &cmd.Config{ Viper: viper.New(), Dir: "." + daemonName, Name: "config", Flags: map[string]cmd.Flag{ "repo": { Key: "repo", DefValue: "${HOME}/." + daemonName + "/repo", }, "debug": { Key: "log.debug", DefValue: false, }, "logFile": { Key: "log.file", DefValue: "", // no log file }, // Addresses "addrApi": { Key: "addr.api", DefValue: "/ip4/127.0.0.1/tcp/3006", }, "addrApiProxy": { Key: "addr.api_proxy", DefValue: "/ip4/127.0.0.1/tcp/3007", }, "addrMongoUri": { Key: "addr.mongo_uri", DefValue: "mongodb://127.0.0.1:27017", }, "addrMongoName": { Key: "addr.mongo_name", DefValue: "buckets", }, "addrThreadsHost": { Key: "addr.threads.host", DefValue: "/ip4/0.0.0.0/tcp/4006", }, "addrThreadsMongoUri": { Key: "addr.threads.mongo_uri", DefValue: "", }, "addrThreadsMongoName": { Key: "addr.threads.mongo_name", DefValue: "", }, "addrGatewayHost": { Key: "addr.gateway.host", DefValue: "/ip4/127.0.0.1/tcp/8006", }, "addrGatewayUrl": { Key: "addr.gateway.url", DefValue: "http://127.0.0.1:8006", }, "addrIpfsApi": { Key: "addr.ipfs.api", DefValue: "/ip4/127.0.0.1/tcp/5001", }, "addrPowergateApi": { Key: "addr.powergate.api", DefValue: "", }, // IPNS "ipnsRepublishSchedule": { Key: "ipns.republish_schedule", DefValue: "0 1 * * *", }, "ipnsRepublishConcurrency": { Key: "ipns.republish_concurrency", DefValue: 100, }, // Gateway "gatewaySubdomains": { Key: "gateway.subdomains", DefValue: false, }, "gatewayMaxEventsPerSec": { Key: "gateway.max_events_per_sec", DefValue: 1000, }, "gatewayMaxBurstSize": { Key: "gateway.max_burst_size", DefValue: 20, }, // Cloudflare // @todo: Change these to cloudflareDnsDomain, etc. "dnsDomain": { Key: "dns.domain", DefValue: "", }, "dnsZoneID": { Key: "dns.zone_id", DefValue: "", }, "dnsToken": { Key: "dns.token", DefValue: "", }, }, EnvPre: "BUCK", Global: true, } ) func init() { cobra.OnInitialize(cmd.InitConfig(config)) cmd.InitConfigCmd(rootCmd, config.Viper, config.Dir) rootCmd.PersistentFlags().StringVar( &config.File, "config", "", "Config file (default ${HOME}/"+config.Dir+"/"+config.Name+".yml)") rootCmd.PersistentFlags().StringP( "repo", "r", config.Flags["repo"].DefValue.(string), "Path to repository") rootCmd.PersistentFlags().BoolP( "debug", "d", config.Flags["debug"].DefValue.(bool), "Enable debug logging") rootCmd.PersistentFlags().String( "logFile", config.Flags["logFile"].DefValue.(string), "Write logs to file") // Addresses rootCmd.PersistentFlags().String( "addrApi", config.Flags["addrApi"].DefValue.(string), "Hub API listen address") rootCmd.PersistentFlags().String( "addrApiProxy", config.Flags["addrApiProxy"].DefValue.(string), "Hub API proxy listen address") rootCmd.PersistentFlags().String( "addrMongoUri", config.Flags["addrMongoUri"].DefValue.(string), "MongoDB connection URI") rootCmd.PersistentFlags().String( "addrMongoName", config.Flags["addrMongoName"].DefValue.(string), "MongoDB database name") rootCmd.PersistentFlags().String( "addrThreadsHost", config.Flags["addrThreadsHost"].DefValue.(string), "Threads peer host listen address") rootCmd.PersistentFlags().String( "addrThreadsMongoUri", config.Flags["addrThreadsMongoUri"].DefValue.(string), "Threads MongoDB connection URI") rootCmd.PersistentFlags().String( "addrThreadsMongoName", config.Flags["addrThreadsMongoName"].DefValue.(string), "Threads MongoDB database name") rootCmd.PersistentFlags().String( "addrGatewayHost", config.Flags["addrGatewayHost"].DefValue.(string), "Local gateway host address") rootCmd.PersistentFlags().String( "addrGatewayUrl", config.Flags["addrGatewayUrl"].DefValue.(string), "Public gateway address") rootCmd.PersistentFlags().String( "addrIpfsApi", config.Flags["addrIpfsApi"].DefValue.(string), "IPFS API address") rootCmd.PersistentFlags().String( "addrPowergateApi", config.Flags["addrPowergateApi"].DefValue.(string), "Powergate API address") // IPNS rootCmd.PersistentFlags().String( "ipnsRepublishSchedule", config.Flags["ipnsRepublishSchedule"].DefValue.(string), "IPNS republishing cron schedule") rootCmd.PersistentFlags().Int( "ipnsRepublishConcurrency", config.Flags["ipnsRepublishConcurrency"].DefValue.(int), "IPNS republishing batch size") // Gateway rootCmd.PersistentFlags().Bool( "gatewaySubdomains", config.Flags["gatewaySubdomains"].DefValue.(bool), "Enable gateway namespace redirects to subdomains") rootCmd.PersistentFlags().Int( "gatewayMaxEventsPerSec", config.Flags["gatewayMaxEventsPerSec"].DefValue.(int), "Gateway max events per second") rootCmd.PersistentFlags().Int( "gatewayMaxBurstSize", config.Flags["gatewayMaxBurstSize"].DefValue.(int), "Gateway gateway max burst size") // Cloudflare rootCmd.PersistentFlags().String( "dnsDomain", config.Flags["dnsDomain"].DefValue.(string), "Root domain for bucket subdomains") rootCmd.PersistentFlags().String( "dnsZoneID", config.Flags["dnsZoneID"].DefValue.(string), "Cloudflare ZoneID for dnsDomain") rootCmd.PersistentFlags().String( "dnsToken", config.Flags["dnsToken"].DefValue.(string), "Cloudflare API Token for dnsDomain") err := cmd.BindFlags(config.Viper, rootCmd, config.Flags) cmd.ErrCheck(err) } func main() { cmd.ErrCheck(rootCmd.Execute()) } var rootCmd = &cobra.Command{ Use: daemonName, Short: "Buckets daemon", Long: `The Buckets daemon.`, PersistentPreRun: func(c *cobra.Command, args []string) { config.Viper.SetConfigType("yaml") cmd.ExpandConfigVars(config.Viper, config.Flags) if config.Viper.GetBool("log.debug") { err := util.SetLogLevels(map[string]logging.LogLevel{ daemonName: logging.LevelDebug, }) cmd.ErrCheck(err) } }, Run: func(c *cobra.Command, args []string) { settings, err := json.MarshalIndent(config.Viper.AllSettings(), "", " ") cmd.ErrCheck(err) log.Debugf("loaded config: %s", string(settings)) debug := config.Viper.GetBool("log.debug") logFile := config.Viper.GetString("log.file") err = cmd.SetupDefaultLoggingConfig(logFile) cmd.ErrCheck(err) addrApi := cmd.AddrFromStr(config.Viper.GetString("addr.api")) addrApiProxy := cmd.AddrFromStr(config.Viper.GetString("addr.api_proxy")) addrMongoUri := config.Viper.GetString("addr.mongo_uri") addrMongoName := config.Viper.GetString("addr.mongo_name") addrThreadsHost := cmd.AddrFromStr(config.Viper.GetString("addr.threads.host")) addrThreadsMongoUri := config.Viper.GetString("addr.threads.mongo_uri") addrThreadsMongoName := config.Viper.GetString("addr.threads.mongo_name") ipnsRepublishSchedule := config.Viper.GetString("ipns.republish_schedule") ipnsRepublishConcurrency := config.Viper.GetInt("ipns.republish_concurrency") addrGatewayHost := cmd.AddrFromStr(config.Viper.GetString("addr.gateway.host")) addrGatewayUrl := config.Viper.GetString("addr.gateway.url") addrIpfsApi := cmd.AddrFromStr(config.Viper.GetString("addr.ipfs.api")) addrPowergateApi := config.Viper.GetString("addr.powergate.api") gatewaySubdomains := config.Viper.GetBool("gateway.subdomains") gatewayMaxEventsPerSec := config.Viper.GetInt("gateway.max_events_per_sec") gatewayMaxBurstSize := config.Viper.GetInt("gateway.max_burst_size") dnsDomain := config.Viper.GetString("dns.domain") dnsZoneID := config.Viper.GetString("dns.zone_id") dnsToken := config.Viper.GetString("dns.token") var opts []core.Option if addrThreadsMongoUri != "" { if addrThreadsMongoName == "" { cmd.Fatal(errors.New("addr.threads.mongo_name is required with addr.threads.mongo_uri")) } opts = append(opts, core.WithMongoThreadsPersistence(addrThreadsMongoUri, addrThreadsMongoName)) } else { opts = append(opts, core.WithBadgerThreadsPersistence(config.Viper.GetString("repo"))) } ctx, cancel := context.WithCancel(context.Background()) defer cancel() textile, err := core.NewTextile(ctx, core.Config{ Debug: debug, AddrAPI: addrApi, AddrAPIProxy: addrApiProxy, AddrMongoURI: addrMongoUri, AddrMongoName: addrMongoName, AddrThreadsHost: addrThreadsHost, AddrGatewayHost: addrGatewayHost, AddrGatewayURL: addrGatewayUrl, AddrIPFSAPI: addrIpfsApi, AddrPowergateAPI: addrPowergateApi, IPNSRepublishSchedule: ipnsRepublishSchedule, IPNSRepublishConcurrency: ipnsRepublishConcurrency, UseSubdomains: gatewaySubdomains, MaxEventsPerSec: gatewayMaxEventsPerSec, MaxBurstSize: gatewayMaxBurstSize, DNSDomain: dnsDomain, DNSZoneID: dnsZoneID, DNSToken: dnsToken, }, opts...) cmd.ErrCheck(err) textile.Bootstrap() fmt.Println("Welcome to Buckets!") fmt.Println("Your peer ID is " + textile.HostID().String()) cmd.HandleInterrupt(func() { if err := textile.Close(); err != nil { fmt.Println(err.Error()) } }) }, } ================================================ FILE: cmd/cmd.go ================================================ package cmd import ( "context" "crypto/tls" "fmt" "strings" "time" "github.com/manifoldco/promptui" "github.com/spf13/viper" tc "github.com/textileio/go-threads/api/client" "github.com/textileio/go-threads/core/thread" bc "github.com/textileio/textile/v2/api/bucketsd/client" "github.com/textileio/textile/v2/api/common" fc "github.com/textileio/textile/v2/api/filecoin/client" hc "github.com/textileio/textile/v2/api/hubd/client" mi "github.com/textileio/textile/v2/api/mindexd/client" uc "github.com/textileio/textile/v2/api/usersd/client" "google.golang.org/grpc" "google.golang.org/grpc/credentials" "google.golang.org/grpc/keepalive" ) var ( // Timeout is the default timeout used for most commands. Timeout = time.Minute * 10 // PushTimeout is the command timeout used when pushing bucket changes. PushTimeout = time.Hour * 24 // PullTimeout is the command timeout used when pulling bucket changes. PullTimeout = time.Hour * 24 // ArchiveWatchTimeout is the command timeout used when watching archive status messages. ArchiveWatchTimeout = time.Hour * 12 // Bold is a styler used to make the output text bold. Bold = promptui.Styler(promptui.FGBold) // Repo organization/repo where client releases are published Repo = "textileio/textile" ) // Flag describes a command flag. type Flag struct { Key string DefValue interface{} } // Config describes a command config params and file info. type Config struct { Viper *viper.Viper File string Dir string Name string Flags map[string]Flag EnvPre string Global bool } // ConfConfig is used to generate new messages configs. type ConfConfig struct { Dir string // Config directory base name Name string // Name of the mailbox config file Type string // Type is the type of config file (yaml/json) EnvPrefix string // A prefix that will be expected on env vars } // NewConfig uses values from ConfConfig to contruct a new config. func (cc ConfConfig) NewConfig(pth string, flags map[string]Flag, global bool) (c *Config, fileExists bool, err error) { v := viper.New() v.SetConfigType(cc.Type) c = &Config{ Viper: v, Dir: cc.Dir, Name: cc.Name, Flags: flags, EnvPre: cc.EnvPrefix, Global: global, } fileExists = FindConfigFile(c, pth) return c, fileExists, nil } // Clients wraps all the possible hubd/buckd clients. type Clients struct { Buckets *bc.Client Threads *tc.Client Hub *hc.Client Users *uc.Client Filecoin *fc.Client MinerIndex *mi.Client } // NewClients returns a new clients object pointing to the target address. // If isHub is true, the hub's admin and user clients are also created. func NewClients(hubTarget string, isHub bool, minerIndexTarget string) *Clients { var hubOpts []grpc.DialOption auth := common.Credentials{} if strings.Contains(hubTarget, "443") { creds := credentials.NewTLS(&tls.Config{}) hubOpts = append(hubOpts, grpc.WithTransportCredentials(creds)) auth.Secure = true } else { hubOpts = append(hubOpts, grpc.WithInsecure()) } hubOpts = append(hubOpts, grpc.WithPerRPCCredentials(auth)) hubOpts = append(hubOpts, grpc.WithKeepaliveParams(keepalive.ClientParameters{ Time: time.Second * 20, Timeout: time.Second * 10, PermitWithoutStream: true, })) c := &Clients{} var err error c.Threads, err = tc.NewClient(hubTarget, hubOpts...) if err != nil { Fatal(err) } c.Buckets, err = bc.NewClient(hubTarget, hubOpts...) if err != nil { Fatal(err) } if isHub { c.Hub, err = hc.NewClient(hubTarget, hubOpts...) if err != nil { Fatal(err) } c.Users, err = uc.NewClient(hubTarget, hubOpts...) if err != nil { Fatal(err) } var minerIndexOpts []grpc.DialOption if strings.Contains(minerIndexTarget, "443") { creds := credentials.NewTLS(&tls.Config{}) minerIndexOpts = append(minerIndexOpts, grpc.WithTransportCredentials(creds)) } else { minerIndexOpts = append(minerIndexOpts, grpc.WithInsecure()) } c.MinerIndex, err = mi.NewClient(minerIndexTarget, minerIndexOpts...) if err != nil { Fatal(err) } } c.Filecoin, err = fc.NewClient(hubTarget, hubOpts...) if err != nil { Fatal(err) } return c } // Close closes all the clients. func (c *Clients) Close() { if c.Threads != nil { if err := c.Threads.Close(); err != nil { Fatal(err) } } if c.Buckets != nil { if err := c.Buckets.Close(); err != nil { Fatal(err) } } if c.Hub != nil { if err := c.Hub.Close(); err != nil { Fatal(err) } } if c.Users != nil { if err := c.Users.Close(); err != nil { Fatal(err) } } } // Thread wraps details about a thread. type Thread struct { ID thread.ID `json:"id"` Label string `json:"label"` Name string `json:"name"` Type string `json:"type"` } // ListThreads returns a list of threads for the context. // In a hub context, this will only list threads that the context // has access to. // dbsOnly filters threads that do not belong to a database. func (c *Clients) ListThreads(ctx context.Context, dbsOnly bool) []Thread { var threads []Thread if c.Users != nil { list, err := c.Users.ListThreads(ctx) if err != nil { Fatal(err) } for _, t := range list.List { if dbsOnly && !t.IsDb { continue } id, err := thread.Cast(t.Id) if err != nil { Fatal(err) } if t.Name == "" { t.Name = "unnamed" } threads = append(threads, Thread{ ID: id, Label: id.String(), Name: t.Name, Type: GetThreadType(t.IsDb), }) } } else { list, err := c.Threads.ListDBs(ctx) if err != nil { Fatal(err) } for id, t := range list { if t.Name == "" { t.Name = "unnamed" } threads = append(threads, Thread{ ID: id, Label: id.String(), Name: t.Name, Type: "db", }) } } return threads } // GetThreadType returns a string representation of the type of a thread. func GetThreadType(isDB bool) string { if isDB { return "db" } else { return "log" } } // SelectThread presents the caller with a choice of threads. func (c *Clients) SelectThread(ctx context.Context, label, successMsg string, dbsOnly bool) Thread { threads := c.ListThreads(ctx, dbsOnly) var name string if len(threads) == 0 { name = "default" } threads = append(threads, Thread{Label: "Create new", Name: name, Type: "db"}) prompt := promptui.Select{ Label: label, Items: threads, Templates: &promptui.SelectTemplates{ Active: fmt.Sprintf(`{{ "%s" | cyan }} {{ .Label | bold }} {{ .Name | faint | bold }}`, promptui.IconSelect), Inactive: `{{ .Label | faint }} {{ .Name | faint | bold }}`, Details: `{{ "(Type:" | faint }} {{ .Type | faint }}{{ ")" | faint }}`, Selected: successMsg, }, } index, _, err := prompt.Run() if err != nil { End("") } return threads[index] } ================================================ FILE: cmd/config.go ================================================ package cmd import ( "fmt" "os" "path/filepath" "strings" "github.com/mitchellh/go-homedir" ma "github.com/multiformats/go-multiaddr" "github.com/spf13/cobra" "github.com/spf13/viper" ) // InitConfigCmd adds a config generator command to the root command. // The command will write the config file to dir. func InitConfigCmd(rootCmd *cobra.Command, v *viper.Viper, dir string) { configCmd := &cobra.Command{ Use: "config", Short: "Config utils", Long: `Config file utilities.`, } rootCmd.AddCommand(configCmd) createCmd := &cobra.Command{ Use: "create", Short: "Create config", Long: `Create a config file.`, Run: func(c *cobra.Command, args []string) { WriteConfig(c, v, dir) }, } configCmd.AddCommand(createCmd) createCmd.Flags().String( "dir", "", "Directory to write config (default ${HOME}/"+dir+")") } const maxSearchHeight = 50 // InitConfig returns a function that can be used to search for and load a config file. func InitConfig(conf *Config) func() { return func() { FindConfigFile(conf, ".") } } // FindConfigFile searches up the path for a config file. // True is returned is a config file was found and successfully loaded. func FindConfigFile(conf *Config, pth string) bool { found := false h := 1 for h <= maxSearchHeight && !found { found = initConfig(conf.Viper, conf.File, pth, conf.Dir, conf.Name, conf.EnvPre, conf.Global) npth := filepath.Dir(pth) if npth == string(os.PathSeparator) && pth == string(os.PathSeparator) { return found } pth = npth h++ } return found } func initConfig(v *viper.Viper, file, pre, cdir, name, envPre string, global bool) bool { if file != "" { v.SetConfigFile(file) } else { v.AddConfigPath(filepath.Join(pre, cdir)) // local config takes priority if global { home, err := homedir.Dir() if err != nil { panic(err) } v.AddConfigPath(filepath.Join(home, cdir)) } v.SetConfigName(name) } v.SetEnvPrefix(envPre) v.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) v.AutomaticEnv() if err := v.ReadInConfig(); err != nil && strings.Contains(err.Error(), "Not Found") { return false } return true } // WriteConfig writes the viper config based on the command. func WriteConfig(c *cobra.Command, v *viper.Viper, name string) { var dir string if !c.Flag("dir").Changed { home, err := homedir.Dir() if err != nil { Fatal(err) } dir = filepath.Join(home, name) if err = os.MkdirAll(dir, os.ModePerm); err != nil { Fatal(err) } } else { dir = c.Flag("dir").Value.String() } filename := filepath.Join(dir, "config.yml") if _, err := os.Stat(filename); err == nil { Fatal(fmt.Errorf("%s already exists", filename)) } if err := v.WriteConfigAs(filename); err != nil { Fatal(err) } } // WriteConfigToHome writes config to the home directory. func WriteConfigToHome(config *Config) { home, err := homedir.Dir() ErrCheck(err) dir := filepath.Join(home, config.Dir) err = os.MkdirAll(dir, os.ModePerm) ErrCheck(err) filename := filepath.Join(dir, config.Name+".yml") err = config.Viper.WriteConfigAs(filename) ErrCheck(err) } // BindFlags binds the flags to the viper config values. func BindFlags(v *viper.Viper, root *cobra.Command, flags map[string]Flag) error { for n, f := range flags { if err := v.BindPFlag(f.Key, root.PersistentFlags().Lookup(n)); err != nil { return err } v.SetDefault(f.Key, f.DefValue) } return nil } // GetFlagOrEnvValue first load a value for the key from the command flags. // If no value was found, the value for the corresponding env variable is returned. func GetFlagOrEnvValue(c *cobra.Command, k, envPre string) (v string) { changed := c.Flags().Changed(k) v, err := c.Flags().GetString(k) if err == nil && changed { return } env := os.Getenv(fmt.Sprintf("%s_%s", envPre, strings.ToUpper(k))) if env != "" { return env } return v } // ExpandConfigVars evaluates the viper config file's expressions. func ExpandConfigVars(v *viper.Viper, flags map[string]Flag) { for _, f := range flags { if f.Key != "" { if str, ok := v.Get(f.Key).(string); ok { v.Set(f.Key, os.ExpandEnv(str)) } } } } // AddrFromStr returns a multiaddress from the string. func AddrFromStr(str string) ma.Multiaddr { addr, err := ma.NewMultiaddr(str) if err != nil { Fatal(err) } return addr } ================================================ FILE: cmd/hub/cli/archives.go ================================================ package cli import ( "strconv" "strings" "github.com/ipfs/go-cid" "github.com/spf13/cobra" "github.com/textileio/textile/v2/cmd" ) var archivesCmd = &cobra.Command{ Use: "archives", Short: "Manages account-wide Filecoin archives.", Long: `Manages account-wide Filecoin archives.`, Args: cobra.ExactArgs(0), } var archivesLsCmd = &cobra.Command{ Use: "ls", Short: "Lists all known archived data in the Filecoin network.", Long: `List all known archive data in the Filecoin network. This includes made bucket archives, or imported deals.`, Args: cobra.NoArgs, Run: func(c *cobra.Command, args []string) { as, err := clients.Users.ArchivesLs(Auth(c.Context())) cmd.ErrCheck(err) if len(as.Archives) > 0 { data := make([][]string, len(as.Archives)) for i, a := range as.Archives { dealIDsStr := make([]string, len(a.Info)) for i, inf := range a.Info { dealIDsStr[i] = strconv.FormatUint(inf.DealId, 10) } data[i] = []string{ a.Cid, strings.Join(dealIDsStr, ","), } } cmd.RenderTable([]string{"Cid", "Deal IDs"}, data) } cmd.Message("Found %d account archives", aurora.White(len(as.Archives)).Bold()) }, } var archivesImportCmd = &cobra.Command{ Use: "import cid [deal-id ...]", Short: "Imports a list of active deal-ids from the Filecoin network for a Cid.", Long: "Imports a list of active deal-ids from the Filecoin network for a Cid. At least one deal-id must be provided. Cids must be UnixFS DAGs.", Args: cobra.MinimumNArgs(2), Run: func(c *cobra.Command, args []string) { dataCid, err := cid.Decode(args[0]) cmd.ErrCheck(err) dealIDs := make([]uint64, len(args)-1) for i := 0; i < len(args)-1; i++ { dealIDs[i], err = strconv.ParseUint(args[i+1], 10, 64) cmd.ErrCheck(err) } err = clients.Users.ArchivesImport(Auth(c.Context()), dataCid, dealIDs) cmd.ErrCheck(err) cmd.Success("Deals imported successfully") }, } ================================================ FILE: cmd/hub/cli/billing.go ================================================ package cli import ( "context" "fmt" "math" "sort" "strconv" "time" "github.com/spf13/cobra" "github.com/textileio/textile/v2/api/billingd/pb" hub "github.com/textileio/textile/v2/api/hubd/client" users "github.com/textileio/textile/v2/api/usersd/client" "github.com/textileio/textile/v2/cmd" "github.com/textileio/textile/v2/util" ) var billingCmd = &cobra.Command{ Use: "billing", Short: "Billing management", Long: `Manages your billing preferences.`, Args: cobra.ExactArgs(0), } var billingSetupCmd = &cobra.Command{ Use: "setup", Short: "Setup usage billing", Long: `Sets up metered usage billing.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() err := clients.Hub.SetupBilling(ctx) cmd.ErrCheck(err) cmd.Success("You have setup metered usage billing. "+ "Use `%s` to manage your subscripton and payment methods.", aurora.Cyan("hub billing portal")) }, } var billingPortalCmd = &cobra.Command{ Use: "portal", Short: "Open billing web portal", Long: `Opens a web portal for managing billing preferences.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() session, err := clients.Hub.GetBillingSession(ctx) cmd.ErrCheck(err) cmd.Message("Please visit the following URL to manage usage billing:") cmd.Message("%s", aurora.White(session.Url).Bold()) }, } var billingUsageCmd = &cobra.Command{ Use: "usage", Short: "Show usage and billing info", Long: `Shows usage and billing information Usage is evaluated daily and invoiced monthly. Use the --user flag to get usage for a dependent user.`, Args: cobra.MaximumNArgs(1), Run: func(c *cobra.Command, args []string) { user, err := c.Flags().GetString("user") cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() info, err := clients.Users.GetUsage(ctx, users.WithPubKey(user)) cmd.ErrCheck(err) cus := info.Customer cmd.Message("Account status: %s", aurora.White(cus.AccountStatus).Bold()) if cus.ParentKey == "" { balance := float64(cus.Balance) / 100 cmd.Message("Account balance: %s%.2f", aurora.White("$").Bold(), aurora.White(balance).Bold()) } cmd.Message("Subscription status: %s", aurora.White(cus.SubscriptionStatus).Bold()) if cus.Dependents > 0 { cmd.Message("Contributing users: %d", aurora.White(cus.Dependents).Bold()) } header := []string{"", "usage", "free quota", "daily cost", "start", "end"} var rows [][]string products := make([]string, len(info.Usage.Usage)) i := 0 for k := range info.Usage.Usage { products[i] = k i++ } sort.Strings(products) for _, k := range products { rows = append(rows, getUsageRow(info.Usage.Usage[k])) } cmd.RenderTable(header, rows) if !cus.Billable && cus.GracePeriodEnd > 0 { if cus.GracePeriodEnd > time.Now().Unix() { ends := time.Unix(cus.GracePeriodEnd, 0).Format("Mon Jan _2 15:04:05 MST") cmd.Warn( "Grace period ending soon. Please add a payment method with `%s` before %s.", aurora.Cyan("hub billing portal"), aurora.Bold(ends)) } else { cmd.Warn( "Grace period ended. Please add a payment method with `%s` to continue using your account.", aurora.Cyan("hub billing portal")) } } }, } func getUsageRow(usage *pb.Usage) []string { var total, free string switch usage.Description { case "ThreadDB reads", "ThreadDB writes": total = strconv.Itoa(int(usage.Total)) free = strconv.Itoa(int(usage.Free)) case "Stored data", "Network egress": total = util.ByteCountDecimal(usage.Total) if usage.Free < 0 { free = util.ByteCountDecimal(-usage.Free) free = "-" + free } else { free = util.ByteCountDecimal(usage.Free) } } return []string{ usage.Description, total, fmt.Sprintf( "%s (%d%%)", free, int(math.Round(100*float64(usage.Free)/float64(usage.Total+usage.Free)))), fmt.Sprintf("$%.4f", usage.Cost), time.Unix(usage.Period.UnixStart, 0).Format("02-Jan-06"), time.Unix(usage.Period.UnixEnd, 0).Format("02-Jan-06"), } } var billingUsersCmd = &cobra.Command{ Use: "users", Short: "list contributing users", Long: `Lists users contributing to billing usage.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { limit, err := c.Flags().GetInt64("limit") cmd.ErrCheck(err) offset, err := c.Flags().GetInt64("offset") cmd.ErrCheck(err) listUsers(limit, offset) }, } func listUsers(limit, offset int64) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() list, err := clients.Hub.ListBillingUsers(ctx, hub.WithLimit(limit), hub.WithOffset(offset)) cmd.ErrCheck(err) if len(list.Users) > 0 { data := make([][]string, len(list.Users)) for i, u := range list.Users { keys := make([]string, 0, len(u.DailyUsage)) for k := range u.DailyUsage { keys = append(keys, k) } sort.Strings(keys) var usage string for i, k := range keys { usage += k + "=" + strconv.Itoa(int(u.DailyUsage[k].Total)) if i != len(keys)-1 { usage += " " } } data[i] = []string{u.Key, usage} } cmd.RenderTable([]string{"user", "usage"}, data) cmd.Message("Next offset: %d", aurora.White(list.NextOffset).Bold()) cmd.Message("Press 'Enter' to show more...") _, _ = fmt.Scanln() listUsers(limit, list.NextOffset) } else { cmd.Message("Found %d users", aurora.White(0).Bold()) } } ================================================ FILE: cmd/hub/cli/buck.go ================================================ package cli import ( "github.com/spf13/cobra" ) var bucketCmd = &cobra.Command{ Use: "buck", Aliases: []string{ "bucket", }, Short: "Manage an object storage bucket", Long: `Manages files and folders in an object storage bucket.`, Args: cobra.ExactArgs(0), } ================================================ FILE: cmd/hub/cli/cli.go ================================================ package cli import ( "context" "fmt" "runtime" "strings" "time" aurora2 "github.com/logrusorgru/aurora" "github.com/spf13/cobra" "github.com/spf13/viper" "github.com/textileio/go-threads/core/thread" "github.com/textileio/textile/v2/api/common" "github.com/textileio/textile/v2/cmd" buck "github.com/textileio/textile/v2/cmd/buck/cli" ) const Name = "hub" var aurora = aurora2.NewAurora(runtime.GOOS != "windows") var ( config = &cmd.Config{ Viper: viper.New(), Dir: ".textile", Name: "auth", Flags: map[string]cmd.Flag{ "api": { Key: "api", DefValue: "api.hub.textile.io:443", }, "apiMinerIndex": { Key: "apiMinerIndex", DefValue: "api.minerindex.hub.textile.io:443", }, "session": { Key: "session", DefValue: "", }, "org": { Key: "org", DefValue: "", }, "apiKey": { Key: "apiKey", DefValue: "", }, "apiSecret": { Key: "apiSecret", DefValue: "", }, "token": { Key: "token", DefValue: "", }, "identity": { Key: "identity", DefValue: "", }, }, EnvPre: strings.ToUpper(Name), Global: true, } clients *cmd.Clients confirmTimeout = time.Hour ) func Init(rootCmd *cobra.Command) { config.Viper.SetConfigType("yaml") rootCmd.AddCommand( initCmd, loginCmd, logoutCmd, whoamiCmd, destroyCmd, updateCmd, versionCmd, orgsCmd, keysCmd, threadsCmd, filCmd, billingCmd, archivesCmd, retrievalsCmd, ) orgsCmd.AddCommand(orgsCreateCmd, orgsLsCmd, orgsMembersCmd, orgsInviteCmd, orgsLeaveCmd, orgsDestroyCmd) keysCmd.AddCommand(keysCreateCmd, keysInvalidateCmd, keysLsCmd) threadsCmd.AddCommand(threadsLsCmd) filCmd.AddCommand(filAddrsCmd, filBalanceCmd, filSignCmd, filVerifyCmd, filInfoCmd, filStorageCmd, filRetrievalsCmd, filIndexCmd) filIndexCmd.AddCommand(filCalculateDealPrice, filGetMinerInfo, filQueryMiners) billingCmd.AddCommand(billingSetupCmd, billingPortalCmd, billingUsageCmd, billingUsersCmd) rootCmd.AddCommand(bucketCmd) buck.Init(bucketCmd) rootCmd.PersistentFlags().String("api", config.Flags["api"].DefValue.(string), "API Hub target") rootCmd.PersistentFlags().String("apiMinerIndex", config.Flags["apiMinerIndex"].DefValue.(string), "API MinerIndex target") rootCmd.PersistentFlags().StringP("session", "s", config.Flags["session"].DefValue.(string), "User session token") rootCmd.PersistentFlags().StringP("org", "o", config.Flags["org"].DefValue.(string), "Org username") rootCmd.PersistentFlags().String("apiKey", config.Flags["apiKey"].DefValue.(string), "User API key") rootCmd.PersistentFlags().String("apiSecret", config.Flags["apiSecret"].DefValue.(string), "User API secret") rootCmd.PersistentFlags().String("token", config.Flags["token"].DefValue.(string), "User identity token") rootCmd.PersistentFlags().String("identity", config.Flags["identity"].DefValue.(string), "User identity") rootCmd.PersistentFlags().Bool("newIdentity", false, "Generate a new user identity") billingUsageCmd.Flags().StringP("user", "u", "", "User multibase encoded public key") billingUsersCmd.Flags().Int64("limit", 25, "Page size (max 1000)") billingUsersCmd.Flags().Int64("offset", 0, "Page offset (returned by each request)") archivesCmd.AddCommand(archivesLsCmd, archivesImportCmd) retrievalsCmd.AddCommand(retrievalsLsCmd, retrievalsLogsCmd) err := cmd.BindFlags(config.Viper, rootCmd, config.Flags) cmd.ErrCheck(err) } func Config() *cmd.Config { return config } func SetClients(c *cmd.Clients) { clients = c } func Auth(ctx context.Context) context.Context { if config.Viper.GetString("apiKey") != "" { ctx = common.NewAPIKeyContext(ctx, config.Viper.GetString("apiKey")) if config.Viper.GetString("apiSecret") != "" { var err error ctx, err = common.CreateAPISigContext( ctx, time.Now().Add(time.Hour), config.Viper.GetString("apiSecret"), ) if err != nil { cmd.Fatal(fmt.Errorf("invalid secret: %w", err)) } } ctx = thread.NewTokenContext(ctx, thread.Token(config.Viper.GetString("token"))) } else { ctx = common.NewSessionContext(ctx, config.Viper.GetString("session")) ctx = common.NewOrgSlugContext(ctx, config.Viper.GetString("org")) } return ctx } ================================================ FILE: cmd/hub/cli/destroy.go ================================================ package cli import ( "context" "fmt" "os" "github.com/manifoldco/promptui" "github.com/spf13/cobra" "github.com/textileio/textile/v2/cmd" ) var destroyCmd = &cobra.Command{ Use: "destroy", Short: "Destroy your account", Long: `Destroys your Hub account and all associated data.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() who, err := clients.Hub.GetSessionInfo(ctx) cmd.ErrCheck(err) cmd.Warn("%s", aurora.Red("Are you absolutely sure? This action cannot be undone.")) cmd.Warn("%s", aurora.Red("Your account and all associated data will be permanently deleted.")) prompt := promptui.Prompt{ Label: fmt.Sprintf("Please type '%s' to confirm", who.Username), Validate: func(s string) error { if s != who.Username { return fmt.Errorf("") } return nil }, } if _, err := prompt.Run(); err != nil { cmd.End("") } err = clients.Hub.DestroyAccount(ctx) cmd.ErrCheck(err) _ = os.RemoveAll(config.Viper.ConfigFileUsed()) cmd.Success("Your account has been deleted") }, } ================================================ FILE: cmd/hub/cli/fil.go ================================================ package cli import ( "context" "encoding/hex" "github.com/spf13/cobra" userPb "github.com/textileio/powergate/v2/api/gen/powergate/user/v1" "github.com/textileio/textile/v2/cmd" "google.golang.org/protobuf/encoding/protojson" ) func init() { filStorageCmd.Flags().BoolP("ascending", "a", false, "sort records ascending, default is sort descending") filStorageCmd.Flags().StringSlice("cids", []string{}, "limit the records to deals for the specified data cids, treated as and AND operation if --addrs is also provided") filStorageCmd.Flags().StringSlice("addrs", []string{}, "limit the records to deals initiated from the specified wallet addresses, treated as and AND operation if --cids is also provided") filStorageCmd.Flags().BoolP("include-pending", "p", false, "include pending deals") filStorageCmd.Flags().BoolP("include-final", "f", true, "include final deals") filRetrievalsCmd.Flags().BoolP("ascending", "a", false, "sort records ascending, default is sort descending") filRetrievalsCmd.Flags().StringSlice("cids", []string{}, "limit the records to deals for the specified data cids, treated as and AND operation if --addrs is also provided") filRetrievalsCmd.Flags().StringSlice("addrs", []string{}, "limit the records to deals initiated from the specified wallet addresses, treated as and AND operation if --cids is also provided") } const addrsWarning = "Funds in this wallet are for network and storage fees only; they cannot be transferred or sold." const addrsGetVerified = "Get your address verified on https://plus.fil.org/landing." var filCmd = &cobra.Command{ Use: "fil", Aliases: []string{"filecoin", "pow"}, Short: "Interact with Filecoin related commands.", Long: `Interact with Filecoin related commands.`, Args: cobra.ExactArgs(0), } var filAddrsCmd = &cobra.Command{ Use: "addrs", Short: "List Filecoin wallet addresses associated with the current account or org", Long: `List Filecoin wallet addresses associated with the current account or org.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() res, err := clients.Filecoin.Addresses(ctx) cmd.ErrCheck(err) json, err := protojson.MarshalOptions{Multiline: true, Indent: " ", EmitUnpopulated: true}.Marshal(res) cmd.ErrCheck(err) cmd.Success("\n%v", string(json)) cmd.Message(addrsWarning) // provide link for verification showVerificationInfo := true for _, addr := range res.Addresses { if addr.VerifiedClientInfo != nil { showVerificationInfo = false } } if showVerificationInfo { cmd.Message(addrsGetVerified) } }, } var filBalanceCmd = &cobra.Command{ Use: "balance [addr]", Short: "Display the FIL balance of a wallet address", Long: `Display the FIL balance of a wallet address.`, Args: cobra.ExactArgs(1), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() res, err := clients.Filecoin.Balance(ctx, args[0]) cmd.ErrCheck(err) json, err := protojson.MarshalOptions{Multiline: true, Indent: " ", EmitUnpopulated: true}.Marshal(res) cmd.ErrCheck(err) cmd.Success("\n%v", string(json)) cmd.Message(addrsWarning) }, } var filSignCmd = &cobra.Command{ Use: "sign [hex-encoded-message]", Short: "Signs a message with user wallet addresses.", Long: "Signs a message using all wallet addresses associated with the user", Args: cobra.ExactArgs(1), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() b, err := hex.DecodeString(args[0]) cmd.ErrCheck(err) res, err := clients.Filecoin.Addresses(ctx) cmd.ErrCheck(err) data := make([][]string, len(res.Addresses)) for i, a := range res.Addresses { signRes, err := clients.Filecoin.SignMessage(ctx, a.Address, b) cmd.ErrCheck(err) data[i] = []string{a.Address, hex.EncodeToString(signRes.Signature)} } cmd.RenderTable([]string{"address", "signature"}, data) }, } var filVerifyCmd = &cobra.Command{ Use: "verify [addr] [hex-encoded-message] [hex-encoded-signature]", Short: "Verifies the signature of a message signed with a user wallet address.", Long: "Verifies the signature of a message signed with a user wallet address.", Args: cobra.ExactArgs(3), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() mb, err := hex.DecodeString(args[1]) cmd.ErrCheck(err) sb, err := hex.DecodeString(args[2]) cmd.ErrCheck(err) res, err := clients.Filecoin.VerifyMessage(ctx, args[0], mb, sb) cmd.ErrCheck(err) json, err := protojson.MarshalOptions{Multiline: true, Indent: " ", EmitUnpopulated: true}.Marshal(res) cmd.ErrCheck(err) cmd.Success("\n%v", string(json)) }, } var filInfoCmd = &cobra.Command{ Use: "info cid", Short: "Get information about the current storage state of a cid", Long: `Get information about the current storage state of a cid`, Args: cobra.ExactArgs(1), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() cid := args[0] res, err := clients.Filecoin.CidInfo(ctx, cid) cmd.ErrCheck(err) json, err := protojson.MarshalOptions{Multiline: true, Indent: " ", EmitUnpopulated: true}.Marshal(res) cmd.ErrCheck(err) cmd.Success("\n%v", string(json)) }, } var filStorageCmd = &cobra.Command{ Use: "storage", Short: "List Filecoin storage deal records associated with the current account or org", Long: `List Filecoin storage deal records associated with the current account or org.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() ascending, err := c.Flags().GetBool("ascending") cmd.ErrCheck(err) cids, err := c.Flags().GetStringSlice("cids") cmd.ErrCheck(err) addrs, err := c.Flags().GetStringSlice("addrs") cmd.ErrCheck(err) pending, err := c.Flags().GetBool("include-pending") cmd.ErrCheck(err) final, err := c.Flags().GetBool("include-final") cmd.ErrCheck(err) conf := &userPb.DealRecordsConfig{ Ascending: ascending, DataCids: cids, FromAddrs: addrs, IncludeFinal: final, IncludePending: pending, } res, err := clients.Filecoin.StorageDealRecords(ctx, conf) cmd.ErrCheck(err) json, err := protojson.MarshalOptions{Multiline: true, Indent: " ", EmitUnpopulated: true}.Marshal(res) cmd.ErrCheck(err) cmd.Success("\n%v", string(json)) }, } var filRetrievalsCmd = &cobra.Command{ Use: "retrievals", Short: "List Filecoin retrieval deal records associated with the current account or org", Long: `List Filecoin retrieval deal records associated with the current account or org.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() ascending, err := c.Flags().GetBool("ascending") cmd.ErrCheck(err) cids, err := c.Flags().GetStringSlice("cids") cmd.ErrCheck(err) addrs, err := c.Flags().GetStringSlice("addrs") cmd.ErrCheck(err) conf := &userPb.DealRecordsConfig{ Ascending: ascending, DataCids: cids, FromAddrs: addrs, } res, err := clients.Filecoin.RetrievalDealRecords(ctx, conf) cmd.ErrCheck(err) json, err := protojson.MarshalOptions{Multiline: true, Indent: " ", EmitUnpopulated: true}.Marshal(res) cmd.ErrCheck(err) cmd.Success("\n%v", string(json)) }, } ================================================ FILE: cmd/hub/cli/fil_index.go ================================================ package cli import ( "context" "fmt" "math/big" "strconv" "strings" "time" "github.com/dustin/go-humanize" ccodes "github.com/launchdarkly/go-country-codes" "github.com/spf13/cobra" "github.com/textileio/textile/v2/api/mindexd/pb" "github.com/textileio/textile/v2/cmd" "google.golang.org/protobuf/encoding/protojson" "google.golang.org/protobuf/types/known/timestamppb" ) func init() { filQueryMiners.Flags().Bool("ascending", false, "sort results ascending, default is sort descending") filQueryMiners.Flags().Int64("limit", 10, "maximum results per page") filQueryMiners.Flags().Int64("offset", 0, "number of results to skip") filQueryMiners.Flags().String("sort-field", "textile-deals-last-successful", "sort field") filQueryMiners.Flags().String("sort-textile-region", "", "make the sorting criteria in a specified region") filQueryMiners.Flags().String("filter-miner-location", "", "filter by miner's location") filQueryMiners.Flags().Bool("show-full-details", false, "indicates that the results will contain extended data about miners") filQueryMiners.Flags().Bool("json", false, "indicates that the output should be printed in JSON") filGetMinerInfo.Flags().Bool("json", false, "indicates that output should be printed in JSON") } var m49Table = map[string]string{ "021": "North America", } var filIndexCmd = &cobra.Command{ Use: "index", Aliases: []string{"index", "idx"}, Short: "Interact with the Miner Index.", Long: `Interact with the Miner Index.`, Args: cobra.ExactArgs(0), } var filQueryMiners = &cobra.Command{ Use: "query", Short: "Query miners in the index", Long: `Query miners in the index. The API allows to handle paging with filters and sorting. The sort-field flag can take the following values: - "textile-deals-total-successful": Total successful deals in Textile. - "textile-deals-last-successful": Last successful deal in Textile. - "textile-retrievals-total-successful": Total successful retrievals in Textile. - "textile-retrievals-last-successful": Last successful retrievals in Textile. - "ask-price": Raw ask-price. - "verified-ask-price": Verified ask-price. - "active-sectors": Total active sectors in the network. The default sorting field is "textile-deals-last-successful". The sort-textile-region allows to apply textile-deals-* flags to a specific textile region. An empty value would be interpreted to the aggregate of all regions (default). If the flag --show-full-details is set, an extra set of columns with more details is printed. If the flag --json is set, the output will be printed in JSON and it always contains full details. `, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { ascending, err := c.Flags().GetBool("ascending") cmd.ErrCheck(err) limit, err := c.Flags().GetInt64("limit") cmd.ErrCheck(err) offset, err := c.Flags().GetInt64("offset") cmd.ErrCheck(err) sortField, err := c.Flags().GetString("sort-field") cmd.ErrCheck(err) sortTextileRegion, err := c.Flags().GetString("sort-textile-region") cmd.ErrCheck(err) filterMinerLocation, err := c.Flags().GetString("filter-miner-location") cmd.ErrCheck(err) req := &pb.QueryIndexRequest{ Filters: &pb.QueryIndexRequestFilters{ MinerLocation: filterMinerLocation, }, Sort: &pb.QueryIndexRequestSort{ Ascending: ascending, TextileRegion: sortTextileRegion, Field: mapSortField(sortField), }, Limit: int32(limit), Offset: offset, } ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() res, err := clients.MinerIndex.QueryIndex(ctx, req) cmd.ErrCheck(err) rawJSON, err := c.Flags().GetBool("json") cmd.ErrCheck(err) if rawJSON { json, err := protojson.MarshalOptions{Multiline: true, Indent: " ", EmitUnpopulated: true}.Marshal(res) cmd.ErrCheck(err) fmt.Println(string(json)) return } showFullDetails, err := c.Flags().GetBool("show-full-details") cmd.ErrCheck(err) fmt.Printf("%s\n", aurora.Bold(aurora.Green("-- Results --"))) data := make([][]string, len(res.Miners)) for i, m := range res.Miners { if showFullDetails { data[i] = []string{ m.Miner.MinerAddr, fmt.Sprintf("%s%%", humanize.FtoaWithDigits(m.Miner.Filecoin.RelativePower, 5)), fmt.Sprintf("%s | %s", attoFilToFil(m.Miner.Filecoin.AskPrice), attoFilToFil(m.Miner.Filecoin.AskVerifiedPrice)), fmt.Sprintf("%s | %s", humanize.IBytes(uint64(m.Miner.Filecoin.MinPieceSize)), humanize.IBytes(uint64(m.Miner.Filecoin.MaxPieceSize))), fmt.Sprintf("%s", humanize.IBytes(uint64(m.Miner.Filecoin.SectorSize))), fmt.Sprintf("%d | %d", m.Miner.Filecoin.ActiveSectors, m.Miner.Filecoin.FaultySectors), isoLocationToCountryName(m.Miner.Metadata.Location), fmt.Sprintf("%d | %d", m.Miner.Textile.DealsSummary.Total, m.Miner.Textile.DealsSummary.Failures), fmt.Sprintf("%s", prettyFormatPbTime(m.Miner.Textile.DealsSummary.Last)), fmt.Sprintf("%s", peekAndFormatDealsTransferTimes(m.Miner.Textile)), fmt.Sprintf("%s", peekAndFormatSealingTimes(m.Miner.Textile)), fmt.Sprintf("%s", peekAndFormatRetrievalsTransferTimes(m.Miner.Textile)), fmt.Sprintf("%s", prettyFormatPbTime(m.Miner.Textile.RetrievalsSummary.Last)), } continue } data[i] = []string{ m.Miner.MinerAddr, fmt.Sprintf("%s", attoFilToFil(m.Miner.Filecoin.AskPrice)), fmt.Sprintf("%s", attoFilToFil(m.Miner.Filecoin.AskVerifiedPrice)), isoLocationToCountryName(m.Miner.Metadata.Location), fmt.Sprintf("%s", humanize.IBytes(uint64(m.Miner.Filecoin.MinPieceSize))), fmt.Sprintf("%s", prettyFormatPbTime(m.Miner.Textile.DealsSummary.Last)), fmt.Sprintf("%s", prettyFormatPbTime(m.Miner.Textile.RetrievalsSummary.Last)), } } if showFullDetails { cmd.RenderTable([]string{"miner", "relative power", "raw/verified ask price", "min/max piece size", "sector size", "active/faulty sectors", "location", "textile total/failed deals", "last successful deal", "last deal data-transfer", "last deal sealing-time", "last successful retrieval", "retrieval last data-transfer"}, data) } else { cmd.RenderTable([]string{"miner", "ask-price (FIL/GiB/epoch)", "verified ask-price (FIL/GiB/epoch)", "location", "min-piece-size", "textile-last-deal", "textile-last-retrieval"}, data) } }, } func peekAndFormatDealsTransferTimes(ti *pb.TextileInfo) string { var last *time.Time var lastThroughput *float64 for _, r := range ti.Regions { if len(r.Deals.TailTransfers) > 0 { if last == nil || last.Before(r.Deals.TailTransfers[0].TransferedAt.AsTime()) { lastThroughput = &r.Deals.TailTransfers[0].MibPerSec t := r.Deals.TailTransfers[0].TransferedAt.AsTime() last = &t } } } if last == nil { return "" } return fmt.Sprintf("~%.02f MiB/s (%s)", *lastThroughput, humanize.Time(*last)) } func peekAndFormatRetrievalsTransferTimes(ti *pb.TextileInfo) string { var last *time.Time var lastThroughput *float64 for _, r := range ti.Regions { if len(r.Retrievals.TailTransfers) > 0 { if last == nil || last.Before(r.Retrievals.TailTransfers[0].TransferedAt.AsTime()) { lastThroughput = &r.Retrievals.TailTransfers[0].MibPerSec t := r.Retrievals.TailTransfers[0].TransferedAt.AsTime() last = &t } } } if last == nil { return "" } return fmt.Sprintf("~%.02f MiB/s (%s)", *lastThroughput, humanize.Time(*last)) } func peekAndFormatSealingTimes(ti *pb.TextileInfo) string { var last *time.Time var lastDuration *float64 for _, r := range ti.Regions { if len(r.Deals.TailSealed) > 0 { if last == nil || last.Before(r.Deals.TailSealed[0].SealedAt.AsTime()) { durationHours := time.Duration(time.Second * time.Duration(r.Deals.TailSealed[0].DurationSeconds)).Hours() t := r.Deals.TailSealed[0].SealedAt.AsTime() lastDuration = &durationHours last = &t } } } if last == nil { return "" } return fmt.Sprintf("~%.0f hours (%s)", *lastDuration, humanize.Time(*last)) } var filGetMinerInfo = &cobra.Command{ Use: "get [minerAddr]", Short: "Get miner information", Long: `Get miner information`, Args: cobra.ExactArgs(1), Run: func(c *cobra.Command, args []string) { minerAddr := args[0] ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() res, err := clients.MinerIndex.GetMinerInfo(ctx, minerAddr) cmd.ErrCheck(err) rawJSON, err := c.Flags().GetBool("json") cmd.ErrCheck(err) if rawJSON { json, err := protojson.MarshalOptions{Multiline: true, Indent: " ", EmitUnpopulated: true}.Marshal(res) cmd.ErrCheck(err) fmt.Println(string(json)) return } fmt.Printf("%s\n\n", aurora.Bold("Miner "+res.Info.MinerAddr)) fmt.Printf("%s\n", aurora.Bold(aurora.Green("-- Filecoin --"))) cmd.Message("Relative Power: %s%%", humanize.FtoaWithDigits(res.Info.Filecoin.RelativePower, 5)) cmd.Message("Location: %s", isoLocationToCountryName(res.Info.Metadata.Location)) cmd.Message("Sector size : %s", humanize.IBytes(uint64(res.Info.Filecoin.SectorSize))) cmd.Message("Active sectors: %d", res.Info.Filecoin.ActiveSectors) cmd.Message("Faulty sectors: %d\n", res.Info.Filecoin.FaultySectors) cmd.Message("Unverified Price: %s FIL/GiB/epoch", attoFilToFil(res.Info.Filecoin.AskPrice)) cmd.Message("Verified Price : %s FIL/GiB/epoch\n", attoFilToFil(res.Info.Filecoin.AskPrice)) cmd.Message("Minimum Piece Size: %s", humanize.IBytes(uint64(res.Info.Filecoin.MinPieceSize))) cmd.Message("Maximum Piece Size: %s\n", humanize.IBytes(uint64(res.Info.Filecoin.MaxPieceSize))) fmt.Printf("%s\n", aurora.Bold(aurora.Green("-- Textile --"))) cmd.Message("Total successful deals: %d", res.Info.Textile.DealsSummary.Total) cmd.Message("Last successful deal : %s", prettyFormatPbTime(res.Info.Textile.DealsSummary.Last)) cmd.Message("Total failed deals: %d", res.Info.Textile.DealsSummary.Failures) cmd.Message("Last failed deal : %s\n", prettyFormatPbTime(res.Info.Textile.DealsSummary.LastFailure)) for m49Code, regionData := range res.Info.Textile.Regions { // Deals var dataTransfers [][]string for _, t := range regionData.Deals.TailTransfers { dataTransfers = append(dataTransfers, []string{ fmt.Sprintf("%s", prettyFormatPbTime(t.TransferedAt)), fmt.Sprintf("~%.02f MiB/s", t.MibPerSec), }) } var sealingDuration [][]string for _, s := range regionData.Deals.TailSealed { sealingDuration = append(sealingDuration, []string{ fmt.Sprintf("%s", prettyFormatPbTime(s.SealedAt)), fmt.Sprintf("~%.0f hours", (time.Second * time.Duration(s.DurationSeconds)).Hours()), }) } fmt.Print(aurora.Brown(fmt.Sprintf("%s deals telemetry:\n", m49Table[m49Code]))) cmd.Message("Total successful: %d", regionData.Deals.Total) cmd.Message("Last successful : %s", prettyFormatPbTime(regionData.Deals.Last)) cmd.Message("Total failed : %d", regionData.Deals.Failures) cmd.Message("Last failed : %s\n", prettyFormatPbTime(regionData.Deals.LastFailure)) if len(dataTransfers) > 0 { cmd.RenderTableWithoutNewLines([]string{"date", "datatransfer-speed"}, dataTransfers) fmt.Println() } if len(sealingDuration) > 0 { cmd.RenderTableWithoutNewLines([]string{"date", "sealing-duration"}, sealingDuration) } fmt.Println() // Retrievals var retrTransfers [][]string for _, t := range regionData.Retrievals.TailTransfers { retrTransfers = append(retrTransfers, []string{ fmt.Sprintf("%s", prettyFormatPbTime(t.TransferedAt)), fmt.Sprintf("~%.02f MiB/s", t.MibPerSec), }) } fmt.Print(aurora.Brown(fmt.Sprintf("%s retrievals telemetry:\n", m49Table[m49Code]))) cmd.Message("Total successful: %d", regionData.Retrievals.Total) cmd.Message("Last successful : %s", prettyFormatPbTime(regionData.Retrievals.Last)) cmd.Message("Total failed : %d", regionData.Retrievals.Failures) cmd.Message("Last failed : %s\n", prettyFormatPbTime(regionData.Retrievals.LastFailure)) if len(retrTransfers) > 0 { cmd.RenderTableWithoutNewLines([]string{"date", "transfer-speed"}, retrTransfers) } } }, } var filCalculateDealPrice = &cobra.Command{ Use: "calculate [dataSizeBytes] [durationDays] [minerAddr...]", Short: "Calculate deal prices for a list of miners.", Long: `Calculate deal prices for a list of miners.`, Args: cobra.MinimumNArgs(3), Run: func(c *cobra.Command, args []string) { dataSizeBytes, err := humanize.ParseBytes(args[0]) cmd.ErrCheck(err) durationDays, err := strconv.ParseInt(args[1], 10, 64) cmd.ErrCheck(err) minersAddr := make([]string, len(args)-2) for i := 2; i < len(args); i++ { minersAddr[i-2] = args[i] } ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() res, err := clients.MinerIndex.CalculateDealPrice(ctx, minersAddr, int64(dataSizeBytes), durationDays) cmd.ErrCheck(err) fmt.Printf("%s\n", aurora.Bold(aurora.Green("-- Calculated prices --"))) data := make([][]string, len(res.Results)) for i, p := range res.Results { data[i] = []string{ p.Miner, fmt.Sprintf("%s (%s FIL/GiB/epoch)", attoFilToFil(p.TotalCost), attoFilToFil(p.Price)), fmt.Sprintf("%s (%s FIL/GiB/epoch)", attoFilToFil(p.VerifiedTotalCost), attoFilToFil(p.VerifiedPrice)), } } cmd.Message("Padded size: %s", humanize.IBytes(uint64(res.PaddedSize))) cmd.Message("Duration in epochs: %d", res.DurationEpochs) cmd.RenderTable([]string{"miner", "cost", "verified-client cost"}, data) fmt.Printf("%s\n", aurora.Bold(aurora.Green("-- Buckets --"))) for _, p := range res.Results { cmd.Message("hub buck archive set-default-config --fast-retrieval --trusted-miners %s", p.Miner) cmd.Message("hub buck archive set-default-config --fast-retrieval --verified-deal --trusted-miners %s", p.Miner) fmt.Println() } fmt.Printf("\n%s\n", aurora.Bold(aurora.Green("-- Lotus CLI --"))) for _, p := range res.Results { cmd.Message("lotus client deal --fast-retrieval %s %s %d", p.Miner, p.TotalCost, res.DurationEpochs) cmd.Message("lotus client deal --fast-retrieval --verified-deal %s %s %d", p.Miner, p.VerifiedTotalCost, res.DurationEpochs) fmt.Println() } cmd.Message("Remember that to make verified deals, your wallet address should be verified: https://plus.fil.org/") }, } func attoFilToFil(attoFil string) string { if attoFil == "" { return "" } attoBig, _ := big.NewInt(0).SetString(attoFil, 10) r := new(big.Rat).SetFrac(attoBig, big.NewInt(1_000_000_000_000_000_000)) if r.Sign() == 0 { return "0 FIL" // Note(jsign): do we need to be conservative here about free-cost? } return strings.TrimRight(strings.TrimRight(r.FloatString(18), "0"), ".") + " FIL" } func prettyFormatPbTime(t *timestamppb.Timestamp) string { if t == nil { return "" } ti := t.AsTime() return prettyFormatTime(&ti) } func prettyFormatTime(t *time.Time) string { if t == nil { return "" } return fmt.Sprintf("%s (%s)", t.Format("2006-01-02 15:04:05"), humanize.Time(*t)) } func mapSortField(field string) pb.QueryIndexRequestSortField { switch field { case "textile-deals-total-successful": return pb.QueryIndexRequestSortField_TEXTILE_DEALS_TOTAL_SUCCESSFUL case "textile-deals-last-successful": return pb.QueryIndexRequestSortField_TEXTILE_DEALS_LAST_SUCCESSFUL case "textile-retrievals-total-successful": return pb.QueryIndexRequestSortField_TEXTILE_RETRIEVALS_TOTAL_SUCCESSFUL case "textile-retrievals-last-successful": return pb.QueryIndexRequestSortField_TEXTILE_RETRIEVALS_LAST_SUCCESSFUL case "ask-price": return pb.QueryIndexRequestSortField_ASK_PRICE case "verified-ask-price": return pb.QueryIndexRequestSortField_VERIFIED_ASK_PRICE case "active-sectors": return pb.QueryIndexRequestSortField_ACTIVE_SECTORS default: return pb.QueryIndexRequestSortField_TEXTILE_DEALS_LAST_SUCCESSFUL } } func isoLocationToCountryName(isoCode string) string { c, ok := ccodes.GetByAlpha2(isoCode) if !ok { return isoCode } return c.Name } ================================================ FILE: cmd/hub/cli/init.go ================================================ package cli import ( "context" "fmt" "net/mail" "strings" "github.com/caarlos0/spin" "github.com/manifoldco/promptui" "github.com/spf13/cobra" "github.com/textileio/textile/v2/cmd" ) var initCmd = &cobra.Command{ Use: "init", Short: "Initialize account", Long: `Initializes a new Hub account.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { usernamePrompt := promptui.Prompt{ Label: "Choose a username", Templates: &promptui.PromptTemplates{ Valid: fmt.Sprintf("%s {{ . | bold }}%s ", cmd.Bold(promptui.IconInitial), cmd.Bold(":")), }, } username, err := usernamePrompt.Run() if err != nil { cmd.End("") } ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() err = clients.Hub.IsUsernameAvailable(ctx, username) cmd.ErrCheck(err) emailPrompt := promptui.Prompt{ Label: "Enter your email", Validate: func(email string) error { _, err := mail.ParseAddress(email) return err }, } email, err := emailPrompt.Run() if err != nil { cmd.End("") } cmd.Message("We sent an email to %s. Please follow the steps provided inside it.", aurora.White(email).Bold()) s := spin.New("%s Waiting for your confirmation") s.Start() cctx, ccancel := context.WithTimeout(context.Background(), confirmTimeout) defer ccancel() res, err := clients.Hub.Signup(cctx, username, email) s.Stop() if err != nil { if strings.Contains(err.Error(), "Account exists") { cmd.Fatal(fmt.Errorf("an account with email %s already exists, use `%s login` instead", email, Name)) } else { cmd.Fatal(err) } return } config.Viper.Set("session", res.Session) cmd.WriteConfigToHome(config) fmt.Println(aurora.Sprintf("%s Email confirmed", aurora.Green("✔"))) cmd.Success("Welcome to the Hub. Initialize a new bucket with `%s`.", aurora.Cyan(Name+" buck init")) }, } ================================================ FILE: cmd/hub/cli/keys.go ================================================ package cli import ( "context" "fmt" "strconv" "github.com/manifoldco/promptui" "github.com/spf13/cobra" pb "github.com/textileio/textile/v2/api/hubd/pb" "github.com/textileio/textile/v2/cmd" ) var keysCmd = &cobra.Command{ Use: "keys", Aliases: []string{ "key", }, Short: "API key management", Long: `Manages your API keys.`, Args: cobra.ExactArgs(0), } var keysCreateCmd = &cobra.Command{ Use: "create", Short: "Create an API key and secret", Long: `Creates a new API key and secret. Keys are used by apps and services that leverage buckets or threads. Using the '--org' flag will create a new key under the Organization's account. There are two types of API keys: 1. 'Account' keys provide direct access to developer/org account buckets and threads. 2. 'User Group' keys provide existing non-admin identities (e.g. app users) access to their own buckets and threads, using the resources of the parent account (i.e. the developer or organization). API secrets are used for Signature Authentication, which is a security measure that can prevent outsiders from using your API key. API secrets should be kept safely on a backend server, not in publicly readable client code. However, for development purposes, you may opt-out of Signature Authentication during key creation. `, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() prompt := promptui.Select{ Label: "Select API key type", Items: []string{"account", "user group"}, Templates: &promptui.SelectTemplates{ Active: fmt.Sprintf(`{{ "%s" | cyan }} {{ . | bold }}`, promptui.IconSelect), Inactive: `{{ . | faint }}`, }, } index, keyTypeDesc, err := prompt.Run() if err != nil { cmd.End("") } var secure bool promptSecure := promptui.Prompt{ Label: "Require Signature Authentication (recommended)", IsConfirm: true, } if _, err := promptSecure.Run(); err == nil { secure = true } keyType := pb.KeyType_KEY_TYPE_ACCOUNT if index > 0 { keyType = pb.KeyType_KEY_TYPE_USER } res, err := clients.Hub.CreateKey(ctx, keyType, secure) cmd.ErrCheck(err) cmd.RenderTable([]string{ "key", "secret", "type", "secure"}, [][]string{{res.KeyInfo.Key, res.KeyInfo.Secret, keyTypeDesc, strconv.FormatBool(secure)}}, ) cmd.Success("Created new API key and secret") }, } var keysInvalidateCmd = &cobra.Command{ Use: "invalidate", Short: "Invalidate an API key", Long: `Invalidates an API key. Invalidated keys cannot be used to create new threads.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() selected := selectKey(ctx, "Invalidate key", aurora.Sprintf( aurora.BrightBlack("> Invalidating key {{ .Key | white | bold }}"))) err := clients.Hub.InvalidateKey(ctx, selected.Key) cmd.ErrCheck(err) cmd.Success("Invalidated key %s", aurora.White(selected.Key).Bold()) }, } var keysLsCmd = &cobra.Command{ Use: "ls", Aliases: []string{ "list", }, Short: "List your API keys", Long: `Lists all of your API keys.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() list, err := clients.Hub.ListKeys(ctx) cmd.ErrCheck(err) if len(list.List) > 0 { data := make([][]string, len(list.List)) for i, k := range list.List { secure := strconv.FormatBool(k.Secure) data[i] = []string{ k.Key, k.Secret, keyTypeToString(k.Type), secure, strconv.FormatBool(k.Valid), strconv.Itoa(int(k.Threads)), } } cmd.RenderTable([]string{"key", "secret", "type", "secure", "valid", "threads"}, data) } cmd.Message("Found %d keys", aurora.White(len(list.List)).Bold()) }, } type keyItem struct { Key string Type string Threads int } func selectKey(ctx context.Context, label, successMsg string) *keyItem { list, err := clients.Hub.ListKeys(ctx) cmd.ErrCheck(err) items := make([]*keyItem, 0) for _, k := range list.List { if k.Valid { items = append(items, &keyItem{Key: k.Key, Type: keyTypeToString(k.Type), Threads: int(k.Threads)}) } } if len(items) == 0 { cmd.End("You don't have any valid keys!") } prompt := promptui.Select{ Label: label, Items: items, Templates: &promptui.SelectTemplates{ Active: fmt.Sprintf(`{{ "%s" | cyan }} {{ .Key | bold }} {{ .Type | faint }}`, promptui.IconSelect), Inactive: `{{ .Key | faint }} {{ .Type | faint }}`, Details: `{{ "(Threads:" | faint }} {{ .Threads | faint }}{{ ")" | faint }}`, Selected: successMsg, }, } index, _, err := prompt.Run() if err != nil { cmd.End("") } return items[index] } func keyTypeToString(t pb.KeyType) (s string) { switch t { case pb.KeyType_KEY_TYPE_ACCOUNT: return "account" case pb.KeyType_KEY_TYPE_USER: return "user group" } return } ================================================ FILE: cmd/hub/cli/login.go ================================================ package cli import ( "context" "fmt" "github.com/caarlos0/spin" "github.com/manifoldco/promptui" "github.com/spf13/cobra" "github.com/textileio/textile/v2/cmd" ) var loginCmd = &cobra.Command{ Use: "login", Short: "Login", Long: `Handles login to a Hub account.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { prompt := promptui.Prompt{ Label: "Enter your username or email", } usernameOrEmail, err := prompt.Run() if err != nil { cmd.End("") } cmd.Message("We sent an email to the account address. Please follow the steps provided inside it.") s := spin.New("%s Waiting for your confirmation") s.Start() ctx, cancel := context.WithTimeout(Auth(context.Background()), confirmTimeout) defer cancel() res, err := clients.Hub.Signin(ctx, usernameOrEmail) s.Stop() cmd.ErrCheck(err) config.Viper.Set("session", res.Session) cmd.WriteConfigToHome(config) fmt.Println(aurora.Sprintf("%s Email confirmed", aurora.Green("✔"))) cmd.Success("You are now logged in. Initialize a new bucket with `%s`.", aurora.Cyan(Name+" buck init")) }, } ================================================ FILE: cmd/hub/cli/logout.go ================================================ package cli import ( "context" "os" "github.com/spf13/cobra" "github.com/textileio/textile/v2/cmd" ) var logoutCmd = &cobra.Command{ Use: "logout", Short: "Logout", Long: `Handles logout of a Hub account.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() err := clients.Hub.Signout(ctx) cmd.ErrCheck(err) _ = os.RemoveAll(config.Viper.ConfigFileUsed()) cmd.Success("Bye :)") }, } ================================================ FILE: cmd/hub/cli/orgs.go ================================================ package cli import ( "context" "fmt" "net/mail" "strconv" "github.com/manifoldco/promptui" mbase "github.com/multiformats/go-multibase" "github.com/spf13/cobra" "github.com/textileio/textile/v2/api/common" "github.com/textileio/textile/v2/cmd" ) var orgsCmd = &cobra.Command{ Use: "orgs", Aliases: []string{ "org", }, Short: "Org management", Long: `Manages your organizations.`, Args: cobra.ExactArgs(0), } var orgsCreateCmd = &cobra.Command{ Use: "create", Short: "Create an org", Long: `Creates a new organization.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { namePrompt := promptui.Prompt{ Label: "Choose an org name", Templates: &promptui.PromptTemplates{ Valid: fmt.Sprintf("%s {{ . | bold }}%s ", cmd.Bold(promptui.IconInitial), cmd.Bold(":")), }, } name, err := namePrompt.Run() if err != nil { cmd.End("") } ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() _, err = clients.Hub.IsOrgNameAvailable(ctx, name) cmd.ErrCheck(err) //url := fmt.Sprintf("%s/%s", res.Host, res.Slug) cmd.Message("The name of your Hub account will be %s", aurora.White(name).Bold()) // @todo: Uncomment when dashboard's are live //cmd.Message("Your URL will be %s", aurora.White(url).Bold()) confirmPrompt := promptui.Prompt{ Label: "Please confirm", IsConfirm: true, } if _, err = confirmPrompt.Run(); err != nil { cmd.End("") } res, err := clients.Hub.CreateOrg(ctx, name) cmd.ErrCheck(err) //url = fmt.Sprintf("%s/%s", org.Host, org.Slug) // @todo: Uncomment when dashboard's are live //cmd.Success("Created new org %s with URL %s", aurora.White(org.Name).Bold(), aurora.Underline(url)) cmd.Success("Created new org %s", aurora.White(res.OrgInfo.Name).Bold()) }, } var orgsLsCmd = &cobra.Command{ Use: "ls", Aliases: []string{ "list", }, Short: "List orgs you're a member of", Long: `Lists all the organizations that you're a member of.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() orgs, err := clients.Hub.ListOrgs(ctx) cmd.ErrCheck(err) if len(orgs.List) > 0 { data := make([][]string, len(orgs.List)) for i, o := range orgs.List { key, err := mbase.Encode(mbase.Base32, o.Key) cmd.ErrCheck(err) url := fmt.Sprintf("%s/%s", o.Host, o.Slug) data[i] = []string{o.Name, url, key, strconv.Itoa(len(o.Members))} } cmd.RenderTable([]string{"name", "url", "key", "members"}, data) } cmd.Message("Found %d orgs", aurora.White(len(orgs.List)).Bold()) }, } var orgsMembersCmd = &cobra.Command{ Use: "members", Short: "List org members", Long: `Lists current organization members.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() selected := selectOrg(ctx, "Select org", aurora.Sprintf( aurora.BrightBlack("> Selected org {{ .Name | white | bold }}"))) ctx = common.NewOrgSlugContext(ctx, selected.Slug) res, err := clients.Hub.GetOrg(ctx) cmd.ErrCheck(err) if len(res.OrgInfo.Members) > 0 { data := make([][]string, len(res.OrgInfo.Members)) for i, m := range res.OrgInfo.Members { key, err := mbase.Encode(mbase.Base32, m.Key) cmd.ErrCheck(err) data[i] = []string{m.Username, key} } cmd.RenderTable([]string{"username", "key"}, data) } cmd.Message("Found %d members", aurora.White(len(res.OrgInfo.Members)).Bold()) }, } var orgsInviteCmd = &cobra.Command{ Use: "invite", Short: "Invite members to an org", Long: `Invites a new member to an organization.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() selected := selectOrg(ctx, "Select org", aurora.Sprintf( aurora.BrightBlack("> Selected org {{ .Name | white | bold }}"))) ctx = common.NewOrgSlugContext(ctx, selected.Slug) prompt := promptui.Prompt{ Label: "Enter email to invite", Validate: func(email string) error { _, err := mail.ParseAddress(email) return err }, } email, err := prompt.Run() if err != nil { cmd.End("") } _, err = clients.Hub.InviteToOrg(ctx, email) cmd.ErrCheck(err) cmd.Success("We sent %s an invitation to the %s org", aurora.White(email).Bold(), aurora.White(selected.Name).Bold()) }, } var orgsLeaveCmd = &cobra.Command{ Use: "leave", Short: "Leave an org", Long: `Leaves an organization.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() selected := selectOrg(ctx, "Leave org", aurora.Sprintf( aurora.BrightBlack("> Leaving org {{ .Name | white | bold }}"))) ctx = common.NewOrgSlugContext(ctx, selected.Slug) err := clients.Hub.LeaveOrg(ctx) cmd.ErrCheck(err) cmd.Success("Left org %s", aurora.White(selected.Name).Bold()) }, } var orgsDestroyCmd = &cobra.Command{ Use: "destroy", Short: "Destroy an org", Long: `Destroys an organization and all associated data. You must be the org owner.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() selected := selectOrg(ctx, "Destroy org", aurora.Sprintf( aurora.BrightBlack("> Destroying org {{ .Name | white | bold }}"))) ctx = common.NewOrgSlugContext(ctx, selected.Slug) cmd.Warn("%s", aurora.Red("Are you absolutely sure? This action cannot be undone.")) cmd.Warn("%s", aurora.Red("The org and all associated data will be permanently deleted.")) prompt := promptui.Prompt{ Label: fmt.Sprintf("Please type '%s' to confirm", selected.Name), Validate: func(s string) error { if s != selected.Name { return fmt.Errorf("") } return nil }, } if _, err := prompt.Run(); err != nil { cmd.End("") } err := clients.Hub.RemoveOrg(ctx) cmd.ErrCheck(err) cmd.Success("Org %s has been deleted", aurora.White(selected.Name).Bold()) }, } type orgItem struct { Name string Slug string Members string } func selectOrg(ctx context.Context, label, successMsg string) *orgItem { orgs, err := clients.Hub.ListOrgs(ctx) cmd.ErrCheck(err) items := make([]*orgItem, len(orgs.List)) for i, o := range orgs.List { items[i] = &orgItem{Name: o.Name, Slug: o.Slug, Members: strconv.Itoa(len(o.Members))} } if len(items) == 0 { cmd.End("You're not a member of any orgs!") } prompt := promptui.Select{ Label: label, Items: items, Templates: &promptui.SelectTemplates{ Active: fmt.Sprintf(`{{ "%s" | cyan }} {{ .Name | bold }} {{ .Slug | faint | bold }}`, promptui.IconSelect), Inactive: `{{ .Name | faint }} {{ .Slug | faint | bold }}`, Details: `{{ "(Members:" | faint }} {{ .Members | faint }}{{ ")" | faint }}`, Selected: successMsg, }, } index, _, err := prompt.Run() if err != nil { cmd.End("") } return items[index] } ================================================ FILE: cmd/hub/cli/retrievals.go ================================================ package cli import ( "sort" "strings" "time" "github.com/spf13/cobra" "github.com/textileio/textile/v2/api/usersd/pb" "github.com/textileio/textile/v2/cmd" ) var retrievalsStatusPrettyName = map[pb.ArchiveRetrievalStatus]string{ pb.ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_UNSPECIFIED: "Unspecified", pb.ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_QUEUED: "Queued", pb.ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_EXECUTING: "Executing", pb.ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_MOVETOBUCKET: "Moving to bucket", pb.ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_FAILED: "Failed", pb.ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_CANCELED: "Canceled", pb.ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_SUCCESS: "Success", } var retrievalsCmd = &cobra.Command{ Use: "retrievals", Short: "Manages Filecoin retrievals.", Long: `Manages Filecoin retrievals.`, Args: cobra.ExactArgs(0), } var retrievalsLsCmd = &cobra.Command{ Use: "ls", Short: "List all created Filecoin retrievals.", Long: `List all created Filecoin retrievals.`, Args: cobra.NoArgs, Run: func(c *cobra.Command, args []string) { rs, err := clients.Users.ArchiveRetrievalLs(Auth(c.Context())) cmd.ErrCheck(err) if len(rs.Retrievals) > 0 { sort.Slice(rs.Retrievals, func(i, j int) bool { return rs.Retrievals[i].CreatedAt > rs.Retrievals[j].CreatedAt }) data := make([][]string, len(rs.Retrievals)) for i, r := range rs.Retrievals { data[i] = []string{ r.Id, r.Cid, retrievalsStatusPrettyName[r.Status], time.Unix(r.CreatedAt, 0).Format("02-Jan-06 15:04 -0700"), r.FailureCause, } } cmd.RenderTable([]string{"Id", "Cid", "Status", "Created", "Failure cause"}, data) } cmd.Message("Found %d retrievals", aurora.White(len(rs.Retrievals)).Bold()) }, } var retrievalsLogsCmd = &cobra.Command{ Use: "logs id", Short: "Show the logs of a retrieval.", Long: `Show the logs of a retrieval.`, Args: cobra.ExactArgs(1), Run: func(c *cobra.Command, args []string) { id := args[0] msgs := make(chan string) var err error go func() { err = clients.Users.ArchiveRetrievalLogs(Auth(c.Context()), id, msgs) close(msgs) }() for msg := range msgs { cmd.Message(msg) } if err != nil { // Any stream-based API closes after a perioid // or inacitvity. Show a nice message if that's the case. if strings.Contains(err.Error(), "RST_STREAM") { cmd.Warn("No news from this retrieval for a long-time. Re-run the command if you're still interested!") return } cmd.Fatal(err) } }, } ================================================ FILE: cmd/hub/cli/threads.go ================================================ package cli import ( "context" "github.com/spf13/cobra" "github.com/textileio/textile/v2/cmd" ) var threadsCmd = &cobra.Command{ Use: "threads", Aliases: []string{ "thread", }, Short: "Thread management", Long: `Manages your threads.`, Args: cobra.ExactArgs(0), } var threadsLsCmd = &cobra.Command{ Use: "ls", Aliases: []string{ "list", }, Short: "List your threads", Long: `Lists all of your threads.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() threads := clients.ListThreads(ctx, false) if len(threads) > 0 { data := make([][]string, len(threads)) for i, t := range threads { data[i] = []string{t.ID.String(), t.Name, t.Type} } cmd.RenderTable([]string{"id", "name", "type"}, data) } cmd.Message("Found %d threads", aurora.White(len(threads)).Bold()) }, } ================================================ FILE: cmd/hub/cli/update.go ================================================ package cli import ( "fmt" "os" "github.com/blang/semver" "github.com/caarlos0/spin" su "github.com/rhysd/go-github-selfupdate/selfupdate" "github.com/spf13/cobra" bi "github.com/textileio/textile/v2/buildinfo" "github.com/textileio/textile/v2/cmd" ) func install(assetURL string) error { s := spin.New("%s Downloading release") s.Start() defer s.Stop() exe, err := os.Executable() if err != nil { return err } if err := su.UpdateTo(assetURL, exe); err != nil { return err } return nil } var updateCmd = &cobra.Command{ Use: "update", Short: "Update hub", Long: `Update hub to the latest version.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { latestRelease, err := getLatestRelease() if err != nil { cmd.Fatal(fmt.Errorf("unable to get latest version: %v", err)) } latest := "v" + latestRelease.Version.String() current, err := semver.ParseTolerant(bi.Version) if err != nil { // Overwrite local build if err := install(latestRelease.AssetURL); err != nil { cmd.Fatal(fmt.Errorf("install failed: %v", err)) } else { cmd.Success("hub updated to %s", aurora.Green(latest)) } } else { // Install if not up-to-date if current.LT(latestRelease.Version) { if err = install(latestRelease.AssetURL); err != nil { cmd.Fatal(fmt.Errorf("install failed: %v", err)) } else { cmd.Success("hub updated to %s", aurora.Green(latest)) } } else { cmd.Message("Already up-to-date.") } } }, } ================================================ FILE: cmd/hub/cli/version.go ================================================ package cli import ( "context" "fmt" "runtime" "github.com/blang/semver" "github.com/caarlos0/spin" su "github.com/rhysd/go-github-selfupdate/selfupdate" "github.com/spf13/cobra" bi "github.com/textileio/textile/v2/buildinfo" "github.com/textileio/textile/v2/cmd" ) func getLatestRelease() (*su.Release, error) { s := spin.New("%s Checking for new Hub CLI version") s.Start() defer s.Stop() config := su.Config{ Filters: []string{ "hub_v", }, } updater, err := su.NewUpdater(config) if err != nil { return nil, err } latest, found, err := updater.DetectLatest(cmd.Repo) if err != nil { return nil, err } else if !found { return nil, fmt.Errorf("%s_%s build not found", runtime.GOOS, runtime.GOARCH) } return latest, nil } func getAPIVersion() (string, error) { s := spin.New("%s Checking Hub API version") s.Start() defer s.Stop() ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() res, err := clients.Hub.BuildInfo(ctx) if err != nil { return "", fmt.Errorf("getting API build info: %v", err) } if res.GitSummary == "" { res.GitSummary = "git" } return res.GitSummary, nil } var versionCmd = &cobra.Command{ Use: "version", Short: "Show version info", Long: `Shows version info.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { isGovvvBuild := bi.GitSummary != "" isReleaseBuild := bi.Version != "git" displayVersion := bi.Version if !isReleaseBuild && isGovvvBuild { displayVersion = bi.GitSummary } cmd.Message("%s", aurora.Green(displayVersion)) apiVersion, err := getAPIVersion() if err != nil { cmd.Warn("Unable to get Hub API version: %v", err) } else { cmd.Message("Hub API: %s", apiVersion) } latestRelease, err := getLatestRelease() if err != nil { cmd.Warn("Unable to get latest version: %v", err) } else { latest := "v" + latestRelease.Version.String() current, err := semver.ParseTolerant(bi.Version) if err != nil || current.LT(latestRelease.Version) { // Display message if outdated of we're running a custom build cmd.Message("New version of hub available! %s -> %s. Run %s to update.", aurora.Red(displayVersion), aurora.Cyan(latest), aurora.White("hub update").Bold()) } } }, } ================================================ FILE: cmd/hub/cli/whoami.go ================================================ package cli import ( "context" mbase "github.com/multiformats/go-multibase" "github.com/spf13/cobra" "github.com/textileio/textile/v2/cmd" ) var whoamiCmd = &cobra.Command{ Use: "whoami", Short: "Show current user", Long: `Shows the user for the current session.`, Args: cobra.ExactArgs(0), Run: func(c *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(Auth(context.Background()), cmd.Timeout) defer cancel() who, err := clients.Hub.GetSessionInfo(ctx) cmd.ErrCheck(err) key, err := mbase.Encode(mbase.Base32, who.Key) cmd.ErrCheck(err) cmd.Message("You are %s", aurora.White(who.Username).Bold()) cmd.Message("Your key is %s", aurora.White(key).Bold()) }, } ================================================ FILE: cmd/hub/main.go ================================================ package main import ( "context" "crypto/rand" "errors" "fmt" "strings" "github.com/libp2p/go-libp2p-core/crypto" "github.com/logrusorgru/aurora" mbase "github.com/multiformats/go-multibase" "github.com/spf13/cobra" "github.com/textileio/go-threads/core/thread" "github.com/textileio/textile/v2/buckets/local" "github.com/textileio/textile/v2/cmd" buck "github.com/textileio/textile/v2/cmd/buck/cli" hub "github.com/textileio/textile/v2/cmd/hub/cli" ) var clients *cmd.Clients func init() { cobra.OnInitialize(cmd.InitConfig(hub.Config())) hub.Init(rootCmd) } func main() { cmd.ErrCheck(rootCmd.Execute()) } var rootCmd = &cobra.Command{ Use: hub.Name, Short: "Hub Client", Long: `The Hub Client.`, PersistentPreRun: func(c *cobra.Command, args []string) { cmd.ExpandConfigVars(hub.Config().Viper, hub.Config().Flags) hubTarget := hub.Config().Viper.GetString("api") minerIndexTarget := hub.Config().Viper.GetString("apiMinerIndex") clients = cmd.NewClients(hubTarget, true, minerIndexTarget) hub.SetClients(clients) config := local.DefaultConfConfig() config.EnvPrefix = fmt.Sprintf("%s_%s", strings.ToUpper(hub.Name), strings.ToUpper(buck.Name)) buck.SetBucks(local.NewBucketsWithAuth(clients, config, hub.Auth)) newIdentity, err := c.Flags().GetBool("newIdentity") cmd.ErrCheck(err) if newIdentity { sk, pk, err := crypto.GenerateEd25519Key(rand.Reader) cmd.ErrCheck(err) skb, err := crypto.MarshalPrivateKey(sk) cmd.ErrCheck(err) pkb, err := crypto.MarshalPublicKey(pk) cmd.ErrCheck(err) sks, err := mbase.Encode(mbase.Base32, skb) cmd.ErrCheck(err) pks, err := mbase.Encode(mbase.Base32, pkb) cmd.ErrCheck(err) hub.Config().Viper.Set("identity", sks) hub.Config().Viper.Set("token", "") cmd.WriteConfigToHome(hub.Config()) cmd.Message("Generated new identity with public key %s", aurora.White(pks).Bold()) } if hub.Config().Viper.GetString("identity") != "" && hub.Config().Viper.GetString("token") == "" { _, id, err := mbase.Decode(hub.Config().Viper.GetString("identity")) if err != nil { cmd.Fatal(fmt.Errorf("invalid identity: %w", err)) } sk, err := crypto.UnmarshalPrivateKey(id) cmd.ErrCheck(err) pkb, err := crypto.MarshalPublicKey(sk.GetPublic()) cmd.ErrCheck(err) pks, err := mbase.Encode(mbase.Base32, pkb) cmd.ErrCheck(err) ctx, cancel := context.WithTimeout(context.Background(), cmd.Timeout) defer cancel() tok, err := clients.Threads.GetToken(hub.Auth(ctx), thread.NewLibp2pIdentity(sk)) if err != nil { cmd.Fatal(fmt.Errorf("getting identity token: %w", err)) } hub.Config().Viper.Set("token", string(tok)) cmd.WriteConfigToHome(hub.Config()) cmd.Message("Fetched new identity token for public key %s", aurora.White(pks).Bold()) } if hub.Config().Viper.GetString("session") == "" && hub.Config().Viper.GetString("apiKey") == "" && c.Use != "init" && c.Use != "login" && c.Use != "version" && c.Use != "update" && c.Parent().Use != "index" { msg := "unauthorized! run `%s` or use `%s` to authorize" cmd.Fatal(errors.New(msg), aurora.Cyan(hub.Name+" init|login"), aurora.Cyan("--session")) } }, PersistentPostRun: func(c *cobra.Command, args []string) { clients.Close() }, Args: cobra.ExactArgs(0), } ================================================ FILE: cmd/hubd/Dockerfile ================================================ FROM golang:1.16.0-buster MAINTAINER Textile # This is (in large part) copied (with love) from # https://hub.docker.com/r/ipfs/go-ipfs/dockerfile # Install deps RUN apt-get update && apt-get install -y \ libssl-dev \ ca-certificates ENV SRC_DIR /textile # Download packages first so they can be cached. COPY go.mod go.sum $SRC_DIR/ RUN cd $SRC_DIR \ && go mod download COPY . $SRC_DIR # Build the thing. RUN cd $SRC_DIR \ && TXTL_BUILD_FLAGS="CGO_ENABLED=0 GOOS=linux" make build-hubd # Get su-exec, a very minimal tool for dropping privileges, # and tini, a very minimal init daemon for containers ENV SUEXEC_VERSION v0.2 ENV TINI_VERSION v0.19.0 RUN set -eux; \ dpkgArch="$(dpkg --print-architecture)"; \ case "${dpkgArch##*-}" in \ "amd64" | "armhf" | "arm64") tiniArch="tini-static-$dpkgArch" ;;\ *) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; \ esac; \ cd /tmp \ && git clone https://github.com/ncopa/su-exec.git \ && cd su-exec \ && git checkout -q $SUEXEC_VERSION \ && make su-exec-static \ && cd /tmp \ && wget -q -O tini https://github.com/krallin/tini/releases/download/$TINI_VERSION/$tiniArch \ && chmod +x tini # Now comes the actual target image, which aims to be as small as possible. FROM busybox:1.31.1-glibc LABEL maintainer="Textile " # Get the textile binary, entrypoint script, and TLS CAs from the build container. ENV SRC_DIR /textile COPY --from=0 $SRC_DIR/hubd /usr/local/bin/hubd COPY --from=0 /tmp/su-exec/su-exec-static /sbin/su-exec COPY --from=0 /tmp/tini /sbin/tini COPY --from=0 /etc/ssl/certs /etc/ssl/certs # This shared lib (part of glibc) doesn't seem to be included with busybox. COPY --from=0 /lib/*-linux-gnu*/libdl.so.2 /lib/ # Copy over SSL libraries. COPY --from=0 /usr/lib/*-linux-gnu*/libssl.so* /usr/lib/ COPY --from=0 /usr/lib/*-linux-gnu*/libcrypto.so* /usr/lib/ # addrApi; can be exposed to the public. EXPOSE 3006 # addrApiProxy; can be exposed to the public. EXPOSE 3007 # addrThreadsHost; must be exposed to the public. EXPOSE 4006 # addrGatewayHost; can be exposed to the public. EXPOSE 8006 # Create the repo directory. ENV TEXTILE_PATH /data/textile RUN mkdir -p $TEXTILE_PATH \ && adduser -D -h $TEXTILE_PATH -u 1000 -G users textile \ && chown textile:users $TEXTILE_PATH # Switch to a non-privileged user. USER textile # Expose the repo as a volume. # Important this happens after the USER directive so permission are correct. VOLUME $TEXTILE_PATH ENTRYPOINT ["/sbin/tini", "--", "hubd"] CMD ["--repo=/data/textile"] ================================================ FILE: cmd/hubd/Dockerfile.dev ================================================ FROM golang:1.16.0-buster RUN apt-get update RUN go get github.com/go-delve/delve/cmd/dlv ENV SRC_DIR /textile COPY go.mod go.sum $SRC_DIR/ RUN cd $SRC_DIR \ && go mod download COPY . $SRC_DIR RUN cd $SRC_DIR \ && CGO_ENABLED=0 GOOS=linux go build -gcflags "all=-N -l" -o hubd cmd/hubd/main.go FROM debian:buster LABEL maintainer="Textile " ENV SRC_DIR /textile COPY --from=0 /go/bin/dlv /usr/local/bin/dlv COPY --from=0 $SRC_DIR/hubd /usr/local/bin/hubd EXPOSE 3006 EXPOSE 3007 EXPOSE 4006 EXPOSE 8006 EXPOSE 40000 ENV TEXTILE_PATH /data/textile RUN adduser --home $TEXTILE_PATH --disabled-login --gecos "" --ingroup users textile USER textile VOLUME $TEXTILE_PATH ENTRYPOINT ["dlv", "--listen=0.0.0.0:40000", "--headless=true", "--accept-multiclient", "--continue", "--api-version=2", "exec", "/usr/local/bin/hubd"] CMD ["--", "--repo=/data/textile"] ================================================ FILE: cmd/hubd/docker-compose-dev.yml ================================================ version: "3" services: textile: build: context: ../../ dockerfile: ./cmd/hubd/Dockerfile.dev volumes: - "${REPO_PATH}/textile:/data/textile" environment: - HUB_LOG_DEBUG=true - HUB_ADDR_API=/ip4/0.0.0.0/tcp/3006 - HUB_ADDR_API_PROXY=/ip4/0.0.0.0/tcp/3007 - HUB_ADDR_MONGO_URI=mongodb://mongo:27017 - HUB_ADDR_MONGO_NAME=textile - HUB_ADDR_THREADS_HOST=/ip4/0.0.0.0/tcp/4006 - HUB_ADDR_THREADS_MONGO_URI=mongodb://mongo:27017 - HUB_ADDR_THREADS_MONGO_NAME=textile_threads - HUB_ADDR_GATEWAY_HOST=/ip4/0.0.0.0/tcp/8006 - HUB_ADDR_GATEWAY_URL - HUB_ADDR_IPFS_API=/dns4/ipfs/tcp/5001 - HUB_ADDR_BILLING_API=billing:10006 - HUB_ADDR_POWERGATE_API - HUB_BUCKETS_MAX_SIZE - HUB_THREADS_MAX_NUMBER_PER_OWNER - HUB_IPNS_REPUBLISH_SCHEDULE - HUB_IPNS_REPUBLISH_CONCURRENCY - HUB_GATEWAY_SUBDOMAINS - HUB_CUSTOMERIO_API_KEY - HUB_EMAIL_SESSION_SECRET=hubsession ports: - "127.0.0.1:3006:3006" - "127.0.0.1:3007:3007" - "4006:4006" - "127.0.0.1:8006:8006" - "127.0.0.1:40000:40000" security_opt: - "seccomp:unconfined" cap_add: - SYS_PTRACE depends_on: - mongo billing: build: context: ../../ dockerfile: ./api/billingd/Dockerfile.dev environment: - BILLING_LOG_DEBUG=true - BILLING_ADDR_API=/ip4/0.0.0.0/tcp/10006 - BILLING_ADDR_MONGO_URI=mongodb://mongo:27017 - BILLING_ADDR_MONGO_NAME=textile_billing - BILLING_ADDR_GATEWAY_HOST=/ip4/0.0.0.0/tcp/8010 - BILLING_ADDR_GATEWAY_URL - BILLING_STRIPE_API_KEY - BILLING_STRIPE_WEBHOOK_SECRET - BILLING_SEGMENT_API_KEY - BILLING_SEGMENT_PREFIX ports: - "127.0.0.1:10006:10006" - "127.0.0.1:8010:8010" - "127.0.0.1:40001:40000" security_opt: - "seccomp:unconfined" cap_add: - SYS_PTRACE depends_on: - mongo mongo: image: mongo:latest volumes: - "${REPO_PATH}/mongo:/data/db" ports: - "127.0.0.1:27017:27017" command: - /bin/bash - -c - | /usr/bin/mongod --fork --logpath /var/log/mongod.log --bind_ip_all --replSet rs0 mongo --eval 'rs.initiate({_id: "rs0", version: 1, members: [{ _id: 0, host: "mongo:27017" }]})' tail -f /var/log/mongod.log ipfs: image: ipfs/go-ipfs:v0.8.0 volumes: - "${REPO_PATH}/ipfs:/data/ipfs" environment: - IPFS_PROFILE=test ports: - "4001:4001" - "4001:4001/udp" - "127.0.0.1:5001:5001" - "127.0.0.1:8080:8080" ================================================ FILE: cmd/hubd/docker-compose.yml ================================================ version: "3" services: textile: image: textile/textile:latest restart: always volumes: - "${REPO_PATH}/textile:/data/textile" environment: - HUB_LOG_DEBUG - HUB_ADDR_API=/ip4/0.0.0.0/tcp/3006 - HUB_ADDR_API_PROXY=/ip4/0.0.0.0/tcp/3007 - HUB_ADDR_MONGO_URI=mongodb://mongo:27017 - HUB_ADDR_MONGO_NAME - HUB_ADDR_THREADS_HOST=/ip4/0.0.0.0/tcp/4006 - HUB_ADDR_THREADS_MONGO_URI - HUB_ADDR_THREADS_MONGO_NAME - HUB_ADDR_GATEWAY_HOST=/ip4/0.0.0.0/tcp/8006 - HUB_ADDR_GATEWAY_URL - HUB_ADDR_IPFS_API=/dns4/ipfs/tcp/5001 - HUB_ADDR_BILLING_API=billing:10006 - HUB_ADDR_POWERGATE_API - HUB_BUCKETS_MAX_SIZE - HUB_THREADS_MAX_NUMBER_PER_OWNER - HUB_IPNS_REPUBLISH_SCHEDULE - HUB_IPNS_REPUBLISH_CONCURRENCY - HUB_GATEWAY_SUBDOMAINS - HUB_DNS_DOMAIN - HUB_DNS_ZONE_ID - HUB_DNS_TOKEN - HUB_CUSTOMERIO_API_KEY ports: - "3006:3006" - "3007:3007" - "4006:4006" - "8006:8006" depends_on: - mongo billing: image: textile/textile:billing restart: always environment: - BILLING_LOG_DEBUG - BILLING_ADDR_API=/ip4/0.0.0.0/tcp/10006 - BILLING_ADDR_MONGO_URI=mongodb://mongo:27017 - BILLING_ADDR_MONGO_NAME - BILLING_ADDR_GATEWAY_HOST=/ip4/0.0.0.0/tcp/8010 - BILLING_ADDR_GATEWAY_URL - BILLING_STRIPE_API_KEY - BILLING_STRIPE_WEBHOOK_SECRET - BILLING_SEGMENT_API_KEY - BILLING_SEGMENT_PREFIX ports: - "10006:10006" - "8010:8010" depends_on: - mongo mongo: image: mongo:latest restart: always volumes: - "${REPO_PATH}/mongo:/data/db" ports: - "127.0.0.1:27017:27017" command: - /bin/bash - -c - | /usr/bin/mongod --fork --logpath /var/log/mongod.log --bind_ip_all --replSet rs0 mongo --eval 'rs.initiate({_id: "rs0", version: 1, members: [{ _id: 0, host: "mongo:27017" }]})' tail -f /var/log/mongod.log ipfs: image: ipfs/go-ipfs:v0.8.0 restart: always volumes: - "${REPO_PATH}/ipfs:/data/ipfs" ports: - "4001:4001" - "4001:4001/udp" - "127.0.0.1:5001:5001" - "8080:8080" ================================================ FILE: cmd/hubd/main.go ================================================ package main import ( "context" "encoding/json" "errors" "fmt" "time" logging "github.com/ipfs/go-log/v2" "github.com/spf13/cobra" "github.com/spf13/viper" "github.com/textileio/go-threads/util" "github.com/textileio/textile/v2/cmd" "github.com/textileio/textile/v2/core" ) const ( daemonName = "hubd" mib = 1024 * 1024 gib = 1024 * mib ) var ( log = logging.Logger(daemonName) config = &cmd.Config{ Viper: viper.New(), Dir: "." + daemonName, Name: "config", Flags: map[string]cmd.Flag{ "repo": { Key: "repo", DefValue: "${HOME}/." + daemonName + "/repo", }, "debug": { Key: "log.debug", DefValue: false, }, "logFile": { Key: "log.file", DefValue: "", // no log file }, // Addresses "addrApi": { Key: "addr.api", DefValue: "/ip4/127.0.0.1/tcp/3006", }, "addrApiProxy": { Key: "addr.api_proxy", DefValue: "/ip4/127.0.0.1/tcp/3007", }, "addrMongoUri": { Key: "addr.mongo_uri", DefValue: "mongodb://127.0.0.1:27017", }, "addrMongoName": { Key: "addr.mongo_name", DefValue: "textile", }, "addrThreadsHost": { Key: "addr.threads.host", DefValue: "/ip4/0.0.0.0/tcp/4006", }, "addrThreadsMongoUri": { Key: "addr.threads.mongo_uri", DefValue: "", }, "addrThreadsMongoName": { Key: "addr.threads.mongo_name", DefValue: "", }, "addrGatewayHost": { Key: "addr.gateway.host", DefValue: "/ip4/127.0.0.1/tcp/8006", }, "addrGatewayUrl": { Key: "addr.gateway.url", DefValue: "http://127.0.0.1:8006", }, "addrIpfsApi": { Key: "addr.ipfs.api", DefValue: "/ip4/127.0.0.1/tcp/5001", }, "addrBillingApi": { Key: "addr.billing.api", DefValue: "", }, "addrPowergateApi": { Key: "addr.powergate.api", DefValue: "", }, // Buckets "bucketsArchiveMaxRepFactor": { Key: "buckets.archive_max_rep_factor", DefValue: 4, }, "bucketsArchiveMaxSize": { Key: "buckets.archive_max_size", DefValue: int64(32 * gib), }, "bucketsArchiveMinSize": { Key: "buckets.archive_min_size", DefValue: int64(64 * mib), }, // Threads "threadsMaxNumberPerOwner": { Key: "threads.max_number_per_owner", DefValue: 100, }, // Powergate "powergateAdminToken": { Key: "powergate.admin_token", DefValue: "", }, // Archives "archivesJobPollIntervalSlow": { Key: "archives.job_poll_interval_slow", DefValue: time.Minute * 30, }, "archivesJobPollIntervalFast": { Key: "archives.job_poll_interval_fast", DefValue: time.Minute * 5, }, // IPNS "ipnsRepublishSchedule": { Key: "ipns.republish_schedule", DefValue: "0 1 * * *", }, "ipnsRepublishConcurrency": { Key: "ipns.republish_concurrency", DefValue: 100, }, // Gateway "gatewaySubdomains": { Key: "gateway.subdomains", DefValue: false, }, "gatewayMaxEventsPerSec": { Key: "gateway.max_events_per_sec", DefValue: 1000, }, "gatewayMaxBurstSize": { Key: "gateway.max_burst_size", DefValue: 20, }, // Cloudflare "dnsDomain": { Key: "dns.domain", DefValue: "", }, "dnsZoneID": { Key: "dns.zone_id", DefValue: "", }, "dnsToken": { Key: "dns.token", DefValue: "", }, // Customer.io "customerioApiKey": { Key: "customerio.api_key", DefValue: "", }, "customerioInviteTmpl": { Key: "customerio.invite_template", DefValue: "2", }, "customerioConfirmTmpl": { Key: "customerio.confirm_template", DefValue: "3", }, "emailSessionSecret": { Key: "email.session_secret", DefValue: "", }, }, EnvPre: "HUB", Global: true, } ) func init() { cobra.OnInitialize(cmd.InitConfig(config)) cmd.InitConfigCmd(rootCmd, config.Viper, config.Dir) rootCmd.PersistentFlags().StringVar( &config.File, "config", "", "Config file (default ${HOME}/"+config.Dir+"/"+config.Name+".yml)") rootCmd.PersistentFlags().StringP( "repo", "r", config.Flags["repo"].DefValue.(string), "Path to repository") rootCmd.PersistentFlags().BoolP( "debug", "d", config.Flags["debug"].DefValue.(bool), "Enable debug logging") rootCmd.PersistentFlags().String( "logFile", config.Flags["logFile"].DefValue.(string), "Write logs to file") // Addresses rootCmd.PersistentFlags().String( "addrApi", config.Flags["addrApi"].DefValue.(string), "Hub API listen address") rootCmd.PersistentFlags().String( "addrApiProxy", config.Flags["addrApiProxy"].DefValue.(string), "Hub API proxy listen address") rootCmd.PersistentFlags().String( "addrMongoUri", config.Flags["addrMongoUri"].DefValue.(string), "MongoDB connection URI") rootCmd.PersistentFlags().String( "addrMongoName", config.Flags["addrMongoName"].DefValue.(string), "MongoDB database name") rootCmd.PersistentFlags().String( "addrThreadsHost", config.Flags["addrThreadsHost"].DefValue.(string), "Threads peer host listen address") rootCmd.PersistentFlags().String( "addrThreadsMongoUri", config.Flags["addrThreadsMongoUri"].DefValue.(string), "Threads MongoDB connection URI") rootCmd.PersistentFlags().String( "addrThreadsMongoName", config.Flags["addrThreadsMongoName"].DefValue.(string), "Threads MongoDB database name") rootCmd.PersistentFlags().String( "addrGatewayHost", config.Flags["addrGatewayHost"].DefValue.(string), "Local gateway host address") rootCmd.PersistentFlags().String( "addrGatewayUrl", config.Flags["addrGatewayUrl"].DefValue.(string), "Public gateway address") rootCmd.PersistentFlags().String( "addrIpfsApi", config.Flags["addrIpfsApi"].DefValue.(string), "IPFS API address") rootCmd.PersistentFlags().String( "addrBillingApi", config.Flags["addrBillingApi"].DefValue.(string), "Billing API address") rootCmd.PersistentFlags().String( "addrPowergateApi", config.Flags["addrPowergateApi"].DefValue.(string), "Powergate API address") // Buckets rootCmd.PersistentFlags().Int( "bucketsArchiveMaxRepFactor", config.Flags["bucketsArchiveMaxRepFactor"].DefValue.(int), "Bucket archive max replication factor") rootCmd.PersistentFlags().Int64( "bucketsArchiveMaxSize", config.Flags["bucketsArchiveMaxSize"].DefValue.(int64), "Bucket archive max size") rootCmd.PersistentFlags().Int64( "bucketsArchiveMinSize", config.Flags["bucketsArchiveMinSize"].DefValue.(int64), "Bucket archive min size") // Threads rootCmd.PersistentFlags().Int( "threadsMaxNumberPerOwner", config.Flags["threadsMaxNumberPerOwner"].DefValue.(int), "Max number threads per owner") // Powergate rootCmd.PersistentFlags().String( "powergateAdminToken", config.Flags["powergateAdminToken"].DefValue.(string), "Auth token for Powergate admin APIs") // Archives // @todo: Move these under the powergate namespace rootCmd.PersistentFlags().Duration( "archivesJobPollIntervalSlow", config.Flags["archivesJobPollIntervalSlow"].DefValue.(time.Duration), "How frequently to check archive job status for arcives with deals in the sealing state") rootCmd.PersistentFlags().Duration( "archivesJobPollIntervalFast", config.Flags["archivesJobPollIntervalFast"].DefValue.(time.Duration), "How frequently to check archive job status for arcives with deals in non-sealing states") // IPNS rootCmd.PersistentFlags().String( "ipnsRepublishSchedule", config.Flags["ipnsRepublishSchedule"].DefValue.(string), "IPNS republishing cron schedule") rootCmd.PersistentFlags().Int( "ipnsRepublishConcurrency", config.Flags["ipnsRepublishConcurrency"].DefValue.(int), "IPNS republishing batch size") // Gateway rootCmd.PersistentFlags().Bool( "gatewaySubdomains", config.Flags["gatewaySubdomains"].DefValue.(bool), "Enable gateway namespace redirects to subdomains") rootCmd.PersistentFlags().Int( "gatewayMaxEventsPerSec", config.Flags["gatewayMaxEventsPerSec"].DefValue.(int), "Gateway max events per second") rootCmd.PersistentFlags().Int( "gatewayMaxBurstSize", config.Flags["gatewayMaxBurstSize"].DefValue.(int), "Gateway gateway max burst size") // Cloudflare // @todo: Change these to cloudflareDnsDomain, etc. rootCmd.PersistentFlags().String( "dnsDomain", config.Flags["dnsDomain"].DefValue.(string), "Root domain for bucket subdomains") rootCmd.PersistentFlags().String( "dnsZoneID", config.Flags["dnsZoneID"].DefValue.(string), "Cloudflare ZoneID for dnsDomain") rootCmd.PersistentFlags().String( "dnsToken", config.Flags["dnsToken"].DefValue.(string), "Cloudflare API Token for dnsDomain") // Customer.io rootCmd.PersistentFlags().String( "customerioApiKey", config.Flags["customerioApiKey"].DefValue.(string), "Customer.io API key for sending emails") rootCmd.PersistentFlags().String( "customerioConfirmTmpl", config.Flags["customerioConfirmTmpl"].DefValue.(string), "Template ID for confirmation emails") rootCmd.PersistentFlags().String( "customerioInviteTmpl", config.Flags["customerioInviteTmpl"].DefValue.(string), "Template ID for invite emails") // @todo: Change this to the customerio namespace rootCmd.PersistentFlags().String( "emailSessionSecret", config.Flags["emailSessionSecret"].DefValue.(string), "Session secret to use when testing email APIs") err := cmd.BindFlags(config.Viper, rootCmd, config.Flags) cmd.ErrCheck(err) } func main() { cmd.ErrCheck(rootCmd.Execute()) } var rootCmd = &cobra.Command{ Use: daemonName, Short: "Hub daemon", Long: `The Hub daemon.`, PersistentPreRun: func(c *cobra.Command, args []string) { config.Viper.SetConfigType("yaml") cmd.ExpandConfigVars(config.Viper, config.Flags) if config.Viper.GetBool("log.debug") { err := util.SetLogLevels(map[string]logging.LogLevel{ daemonName: logging.LevelDebug, }) cmd.ErrCheck(err) } }, Run: func(c *cobra.Command, args []string) { settings, err := json.MarshalIndent(config.Viper.AllSettings(), "", " ") cmd.ErrCheck(err) log.Debugf("loaded config: %s", string(settings)) debug := config.Viper.GetBool("log.debug") logFile := config.Viper.GetString("log.file") err = cmd.SetupDefaultLoggingConfig(logFile) cmd.ErrCheck(err) // Addresses addrApi := cmd.AddrFromStr(config.Viper.GetString("addr.api")) addrApiProxy := cmd.AddrFromStr(config.Viper.GetString("addr.api_proxy")) addrMongoUri := config.Viper.GetString("addr.mongo_uri") addrMongoName := config.Viper.GetString("addr.mongo_name") addrThreadsHost := cmd.AddrFromStr(config.Viper.GetString("addr.threads.host")) addrThreadsMongoUri := config.Viper.GetString("addr.threads.mongo_uri") addrThreadsMongoName := config.Viper.GetString("addr.threads.mongo_name") addrGatewayHost := cmd.AddrFromStr(config.Viper.GetString("addr.gateway.host")) addrGatewayUrl := config.Viper.GetString("addr.gateway.url") addrIpfsApi := cmd.AddrFromStr(config.Viper.GetString("addr.ipfs.api")) addrBillingApi := config.Viper.GetString("addr.billing.api") addrPowergateApi := config.Viper.GetString("addr.powergate.api") // Buckets bucketsArchiveMaxRepFactor := config.Viper.GetInt("buckets.archive_max_rep_factor") bucketsArchiveMaxSize := config.Viper.GetInt64("buckets.archive_max_size") bucketsArchiveMinSize := config.Viper.GetInt64("buckets.archive_min_size") // Threads threadsMaxNumberPerOwner := config.Viper.GetInt("threads.max_number_per_owner") // Powergate powergateAdminToken := config.Viper.GetString("powergate.admin_token") // Archives archivesJobPollIntervalSlow := config.Viper.GetDuration("archives.job_poll_interval_slow") archivesJobPollIntervalFast := config.Viper.GetDuration("archives.job_poll_interval_fast") // IPNS ipnsRepublishSchedule := config.Viper.GetString("ipns.republish_schedule") ipnsRepublishConcurrency := config.Viper.GetInt("ipns.republish_concurrency") // Gateway gatewaySubdomains := config.Viper.GetBool("gateway.subdomains") gatewayMaxEventsPerSec := config.Viper.GetInt("gateway.max_events_per_sec") gatewayMaxBurstSize := config.Viper.GetInt("gateway.max_burst_size") // Cloudflare dnsDomain := config.Viper.GetString("dns.domain") dnsZoneID := config.Viper.GetString("dns.zone_id") dnsToken := config.Viper.GetString("dns.token") // Customer.io customerioApiKey := config.Viper.GetString("customerio.api_key") customerioConfirmTmpl := config.Viper.GetString("customerio.confirm_template") customerioInviteTmpl := config.Viper.GetString("customerio.invite_template") emailSessionSecret := config.Viper.GetString("email.session_secret") var opts []core.Option if addrThreadsMongoUri != "" { if addrThreadsMongoName == "" { cmd.Fatal(errors.New("addr.threads.mongo_name is required with addr.threads.mongo_uri")) } opts = append(opts, core.WithMongoThreadsPersistence(addrThreadsMongoUri, addrThreadsMongoName)) } else { opts = append(opts, core.WithBadgerThreadsPersistence(config.Viper.GetString("repo"))) } ctx, cancel := context.WithCancel(context.Background()) defer cancel() textile, err := core.NewTextile(ctx, core.Config{ Hub: true, Debug: debug, // Addresses AddrAPI: addrApi, AddrAPIProxy: addrApiProxy, AddrMongoURI: addrMongoUri, AddrMongoName: addrMongoName, AddrThreadsHost: addrThreadsHost, AddrGatewayHost: addrGatewayHost, AddrGatewayURL: addrGatewayUrl, AddrIPFSAPI: addrIpfsApi, AddrBillingAPI: addrBillingApi, AddrPowergateAPI: addrPowergateApi, // Buckets MaxBucketArchiveRepFactor: bucketsArchiveMaxRepFactor, MaxBucketArchiveSize: bucketsArchiveMaxSize, MinBucketArchiveSize: bucketsArchiveMinSize, // Threads MaxNumberThreadsPerOwner: threadsMaxNumberPerOwner, // Powergate PowergateAdminToken: powergateAdminToken, // Archives ArchiveJobPollIntervalSlow: archivesJobPollIntervalSlow, ArchiveJobPollIntervalFast: archivesJobPollIntervalFast, // IPNS IPNSRepublishSchedule: ipnsRepublishSchedule, IPNSRepublishConcurrency: ipnsRepublishConcurrency, // Gateway UseSubdomains: gatewaySubdomains, MaxEventsPerSec: gatewayMaxEventsPerSec, MaxBurstSize: gatewayMaxBurstSize, // Cloudflare DNSDomain: dnsDomain, DNSZoneID: dnsZoneID, DNSToken: dnsToken, // Customer.io CustomerioConfirmTmpl: customerioConfirmTmpl, CustomerioInviteTmpl: customerioInviteTmpl, CustomerioAPIKey: customerioApiKey, EmailSessionSecret: emailSessionSecret, }, opts...) cmd.ErrCheck(err) textile.Bootstrap() fmt.Println("Welcome to the Hub!") fmt.Println("Your peer ID is " + textile.HostID().String()) cmd.HandleInterrupt(func() { if err := textile.Close(); err != nil { fmt.Println(err.Error()) } }) }, } ================================================ FILE: cmd/output.go ================================================ package cmd import ( "encoding/json" "fmt" "os" "os/signal" "path/filepath" "runtime" "strings" logging "github.com/ipfs/go-log/v2" aurora2 "github.com/logrusorgru/aurora" "github.com/olekukonko/tablewriter" "github.com/textileio/textile/v2/api/billingd/common" "github.com/textileio/textile/v2/api/bucketsd" "google.golang.org/grpc/status" ) var aurora = aurora2.NewAurora(runtime.GOOS != "windows") func Message(format string, args ...interface{}) { if format == "" { return } fmt.Println(aurora.Sprintf(aurora.BrightBlack("> "+format), args...)) } func Warn(format string, args ...interface{}) { if format == "" { return } fmt.Println(aurora.Sprintf(aurora.Yellow("> Warning! %s"), aurora.Sprintf(aurora.BrightBlack(format), args...))) } func Success(format string, args ...interface{}) { fmt.Println(aurora.Sprintf(aurora.Cyan("> Success! %s"), aurora.Sprintf(aurora.BrightBlack(format), args...))) } func JSON(data interface{}) { bytes, err := json.MarshalIndent(data, "", " ") ErrCheck(err) fmt.Println(aurora.BrightBlack(string(bytes))) } func End(format string, args ...interface{}) { Message(format, args...) os.Exit(0) } func Error(err error, args ...interface{}) { var msg string stat, ok := status.FromError(err) if ok { msg = stat.Message() } else { msg = err.Error() } words := strings.SplitN(msg, " ", 2) words[0] = strings.Title(words[0]) msg = strings.Join(words, " ") // @todo: Clean this up somehow? if strings.Contains(strings.ToLower(msg), common.ErrExceedsFreeQuota.Error()) || strings.Contains(strings.ToLower(msg), bucketsd.ErrStorageQuotaExhausted.Error()) { fmt.Println(aurora.Sprintf(aurora.Red("> Error! %s %s"), aurora.Sprintf(aurora.BrightBlack(msg), args...), aurora.Sprintf(aurora.BrightBlack("(use `%s` to add a payment method)"), aurora.Cyan("hub billing portal")))) } else if strings.Contains(strings.ToLower(msg), common.ErrSubscriptionCanceled.Error()) { fmt.Println(aurora.Sprintf(aurora.Red("> Error! %s %s"), aurora.Sprintf(aurora.BrightBlack(msg), args...), aurora.Sprintf(aurora.BrightBlack("(use `%s` to re-enable billing)"), aurora.Cyan("hub billing setup")))) } else if strings.Contains(strings.ToLower(msg), common.ErrSubscriptionPaymentRequired.Error()) { fmt.Println(aurora.Sprintf(aurora.Red("> Error! %s %s"), aurora.Sprintf(aurora.BrightBlack(msg), args...), aurora.Sprintf(aurora.BrightBlack("(use `%s` to make a payment)"), aurora.Cyan("hub billing portal")))) } else { fmt.Println(aurora.Sprintf(aurora.Red("> Error! %s"), aurora.Sprintf(aurora.BrightBlack(msg), args...))) } } func Fatal(err error, args ...interface{}) { Error(err, args...) os.Exit(1) } func ErrCheck(err error, args ...interface{}) { if err != nil { Fatal(err, args...) } } func RenderTable(header []string, data [][]string) { fmt.Println() RenderTableWithoutNewLines(header, data) fmt.Println() } func RenderTableWithoutNewLines(header []string, data [][]string) { table := tablewriter.NewWriter(os.Stdout) table.SetHeader(header) table.SetAutoWrapText(false) table.SetAutoFormatHeaders(true) table.SetHeaderAlignment(tablewriter.ALIGN_LEFT) table.SetAlignment(tablewriter.ALIGN_LEFT) table.SetCenterSeparator("") table.SetColumnSeparator("") table.SetRowSeparator("") table.SetHeaderLine(false) table.SetBorder(false) table.SetTablePadding("\t") table.SetNoWhiteSpace(false) headersColors := make([]tablewriter.Colors, len(header)) for i := range headersColors { headersColors[i] = tablewriter.Colors{tablewriter.FgHiBlackColor} } table.SetHeaderColor(headersColors...) table.AppendBulk(data) table.Render() } func HandleInterrupt(stop func()) { quit := make(chan os.Signal) signal.Notify(quit, os.Interrupt) <-quit fmt.Println("Gracefully stopping... (press Ctrl+C again to force)") stop() os.Exit(1) } func SetupDefaultLoggingConfig(file string) error { if file != "" { if err := os.MkdirAll(filepath.Dir(file), os.ModePerm); err != nil { return err } } c := logging.Config{ Format: logging.ColorizedOutput, Stderr: true, File: file, Level: logging.LevelError, } logging.SetupLogging(c) return nil } ================================================ FILE: cmd/watch.go ================================================ package cmd import ( "context" "strings" "time" backoff "github.com/cenkalti/backoff/v4" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) // WatchState is used to inform Watch callers about the connection state. type WatchState struct { // State of the watch connection (online/offline). State ConnectionState // Err returned by the watch operation. Err error // Aborted indicates whether or not the associated error aborted the watch. // (Connectivity related errors do not abort the watch.) Aborted bool } // ConnectionState indicates an online/offline state. type ConnectionState int const ( // Offline indicates the remote is currently not reachable. Offline ConnectionState = iota // Online indicates a connection with the remote has been established. Online ) func (cs ConnectionState) String() string { switch cs { case Online: return "online" case Offline: return "offline" default: return "unknown state" } } // WatchFunc is a function wrapper for a function used by Watch. type WatchFunc func(context.Context) (<-chan WatchState, error) // Watch calls watchFunc until it returns an error. // Normally, watchFunc would block while doing work that can fail, // e.g., the local network goes offline. // If watchFunc return an error, it will be called // again at the given interval so long as the returned error is non-fatal. // Returns a channel of watch connectivity states. // Cancel context to stop watching. func Watch(ctx context.Context, watchFunc WatchFunc, reconnectInterval time.Duration) (<-chan WatchState, error) { bc := backoff.NewConstantBackOff(reconnectInterval) outerState := make(chan WatchState) go func() { defer close(outerState) err := backoff.Retry(func() error { state, err := watchFunc(ctx) if err != nil { outerState <- WatchState{Err: err, Aborted: true} return nil // Stop retrying } for s := range state { outerState <- s if s.Err != nil { if s.Aborted { return nil // Stop retrying } else { return s.Err // Connection error, keep trying } } } return nil }, bc) if err != nil { outerState <- WatchState{Err: err, Aborted: true} } }() return outerState, nil } // IsConnectionError returns true if the error is related to a dropped connection. func IsConnectionError(err error) bool { return status.Code(err) == codes.Unavailable || strings.Contains(err.Error(), "RST_STREAM") } ================================================ FILE: core/auth_interceptor.go ================================================ package core import ( "context" "errors" "time" "github.com/golang-jwt/jwt" "github.com/textileio/go-threads/core/thread" "github.com/textileio/textile/v2/api/common" mdb "github.com/textileio/textile/v2/mongodb" "go.mongodb.org/mongo-driver/mongo" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) // authFunc is used by hubd's authentication interceptor. func (t *Textile) authFunc(ctx context.Context) (context.Context, error) { method, _ := grpc.Method(ctx) for _, ignored := range authIgnoredMethods { if method == ignored { return ctx, nil } } for _, block := range blockMethods { if method == block { return nil, status.Error(codes.PermissionDenied, "Method is not accessible") } } if threadID, ok := common.ThreadIDFromMD(ctx); ok { ctx = common.NewThreadIDContext(ctx, threadID) } if threadName, ok := common.ThreadNameFromMD(ctx); ok { ctx = common.NewThreadNameContext(ctx, threadName) } if token, err := thread.NewTokenFromMD(ctx); err != nil { return nil, err } else { ctx = thread.NewTokenContext(ctx, token) } return t.newAuthCtx(ctx, method, true) } // noAuthFunc is used by buckd's auth interceptor. func (t *Textile) noAuthFunc(ctx context.Context) (context.Context, error) { if threadID, ok := common.ThreadIDFromMD(ctx); ok { ctx = common.NewThreadIDContext(ctx, threadID) } if threadToken, err := thread.NewTokenFromMD(ctx); err != nil { return nil, err } else { ctx = thread.NewTokenContext(ctx, threadToken) } return ctx, nil } // authFunc ensures requests are authorized and attaches account // information for downstream handlers. func (t *Textile) newAuthCtx(ctx context.Context, method string, touchSession bool) (context.Context, error) { sid, ok := common.SessionFromMD(ctx) if ok { ctx = common.NewSessionContext(ctx, sid) if sid == t.internalHubSession { return ctx, nil } session, err := t.collections.Sessions.Get(ctx, sid) if err != nil { return ctx, status.Error(codes.Unauthenticated, "Invalid session") } if time.Now().After(session.ExpiresAt) { return ctx, status.Error(codes.Unauthenticated, "Expired session") } if touchSession { if err := t.collections.Sessions.Touch(ctx, session.ID); err != nil { return ctx, err } } ctx = mdb.NewSessionContext(ctx, session) dev, err := t.collections.Accounts.Get(ctx, session.Owner) if err != nil { return ctx, status.Error(codes.NotFound, "User not found") } var org *mdb.Account orgSlug, ok := common.OrgSlugFromMD(ctx) if ok { isMember, err := t.collections.Accounts.IsMember(ctx, orgSlug, dev.Key) if err != nil { return ctx, err } if !isMember { return ctx, status.Error(codes.PermissionDenied, "User is not an org member") } else { var err error org, err = t.collections.Accounts.GetByUsername(ctx, orgSlug) if err != nil { return ctx, status.Error(codes.NotFound, "Org not found") } ctx = common.NewOrgSlugContext(ctx, orgSlug) ctx = thread.NewTokenContext(ctx, org.Token) } } else { ctx = thread.NewTokenContext(ctx, dev.Token) } ctx = mdb.NewAccountContext(ctx, dev, org) } else if k, ok := common.APIKeyFromMD(ctx); ok { key, err := t.collections.APIKeys.Get(ctx, k) if err != nil || !key.Valid { return ctx, status.Error(codes.NotFound, "API key not found or is invalid") } ctx = common.NewAPIKeyContext(ctx, k) if key.Secure { msg, sig, ok := common.APISigFromMD(ctx) if !ok { return ctx, status.Error(codes.Unauthenticated, "API key signature required") } else { ctx = common.NewAPISigContext(ctx, msg, sig) if !common.ValidateAPISigContext(ctx, key.Secret) { return ctx, status.Error(codes.Unauthenticated, "Bad API key signature") } } } switch key.Type { case mdb.AccountKey: acc, err := t.collections.Accounts.Get(ctx, key.Owner) if err != nil { return ctx, status.Error(codes.NotFound, "Account not found") } switch acc.Type { case mdb.Dev: ctx = mdb.NewAccountContext(ctx, acc, nil) case mdb.Org: ctx = mdb.NewAccountContext(ctx, nil, acc) } ctx = thread.NewTokenContext(ctx, acc.Token) case mdb.UserKey: token, ok := thread.TokenFromContext(ctx) if ok { var claims jwt.StandardClaims if _, _, err = new(jwt.Parser).ParseUnverified(string(token), &claims); err != nil { return ctx, status.Error(codes.PermissionDenied, "Bad authorization") } ukey := &thread.Libp2pPubKey{} if err = ukey.UnmarshalString(claims.Subject); err != nil { return ctx, err } user, err := t.collections.Accounts.Get(ctx, ukey) if err != nil && !errors.Is(err, mongo.ErrNoDocuments) { return ctx, err } if user == nil { // Attach a temp user context that will be accessible in the next interceptor. user = &mdb.Account{Key: ukey, Type: mdb.User} } ctx = mdb.NewAccountContext(ctx, user, nil) } else if method != "/threads.pb.API/GetToken" && method != "/threads.net.pb.API/GetToken" { return ctx, status.Error(codes.Unauthenticated, "Token required") } } ctx = mdb.NewAPIKeyContext(ctx, key) } else { return ctx, status.Error(codes.Unauthenticated, "Session or API key required") } return ctx, nil } ================================================ FILE: core/core.go ================================================ package core import ( "context" "errors" "fmt" "net" "net/http" "time" grpcm "github.com/grpc-ecosystem/go-grpc-middleware" auth "github.com/grpc-ecosystem/go-grpc-middleware/auth" "github.com/improbable-eng/grpc-web/go/grpcweb" "github.com/ipfs/go-datastore" ktipfs "github.com/ipfs/go-datastore/keytransform" httpapi "github.com/ipfs/go-ipfs-http-client" logging "github.com/ipfs/go-log/v2" caopts "github.com/ipfs/interface-go-ipfs-core/options" "github.com/jhump/protoreflect/desc" "github.com/jhump/protoreflect/dynamic/grpcdynamic" connmgr "github.com/libp2p/go-libp2p-core/connmgr" "github.com/libp2p/go-libp2p-core/peer" ma "github.com/multiformats/go-multiaddr" mongods "github.com/textileio/go-ds-mongo" dbapi "github.com/textileio/go-threads/api" threads "github.com/textileio/go-threads/api/client" dbpb "github.com/textileio/go-threads/api/pb" "github.com/textileio/go-threads/broadcast" tc "github.com/textileio/go-threads/common" kt "github.com/textileio/go-threads/db/keytransform" netapi "github.com/textileio/go-threads/net/api" netclient "github.com/textileio/go-threads/net/api/client" netpb "github.com/textileio/go-threads/net/api/pb" nutil "github.com/textileio/go-threads/net/util" tutil "github.com/textileio/go-threads/util" pow "github.com/textileio/powergate/v2/api/client" userPb "github.com/textileio/powergate/v2/api/gen/powergate/user/v1" billing "github.com/textileio/textile/v2/api/billingd/client" "github.com/textileio/textile/v2/api/bucketsd" bpb "github.com/textileio/textile/v2/api/bucketsd/pb" "github.com/textileio/textile/v2/api/common" "github.com/textileio/textile/v2/api/hubd" hpb "github.com/textileio/textile/v2/api/hubd/pb" "github.com/textileio/textile/v2/api/usersd" upb "github.com/textileio/textile/v2/api/usersd/pb" "github.com/textileio/textile/v2/buckets/archive" "github.com/textileio/textile/v2/buckets/archive/retrieval" "github.com/textileio/textile/v2/buckets/archive/tracker" "github.com/textileio/textile/v2/dns" "github.com/textileio/textile/v2/email" "github.com/textileio/textile/v2/gateway" "github.com/textileio/textile/v2/ipns" mdb "github.com/textileio/textile/v2/mongodb" tdb "github.com/textileio/textile/v2/threaddb" "github.com/textileio/textile/v2/util" "google.golang.org/grpc" "google.golang.org/grpc/health" healthpb "google.golang.org/grpc/health/grpc_health_v1" "google.golang.org/grpc/keepalive" ) var ( // ErrTooManyThreadsPerOwner indicates that the maximum amount of threads // are created for an owner. ErrTooManyThreadsPerOwner = errors.New("number of threads per owner exceeds quota") log = logging.Logger("core") // authIgnoredMethods are not intercepted by the auth interceptor. authIgnoredMethods = []string{ "/api.hubd.pb.APIService/Signup", "/api.hubd.pb.APIService/Signin", "/api.hubd.pb.APIService/IsUsernameAvailable", "/grpc.health.v1.Health/Check", } // usageIgnoredMethods are not intercepted by the usage interceptor. usageIgnoredMethods = []string{ "/api.hubd.pb.APIService/Signout", "/api.hubd.pb.APIService/DestroyAccount", "/api.hubd.pb.APIService/SetupBilling", "/api.hubd.pb.APIService/GetBillingSession", } // blockMethods are always blocked by auth. blockMethods = []string{ "/threads.pb.API/ListDBs", // we don't want anyone to list all dbs "/threads.net.pb.API/Subscribe", // there is no way to limit this API to thread owners } powergateServiceName = "powergate.user.v1.UserService" // ToDo: Add support for streaming methods and double check the list for completeness. // allowedPowMethods are methods allowed to be directly proxied through to powergate service. allowedPowMethods = map[string][]string{ powergateServiceName: { "Addresses", "Balance", "SignMessage", "VerifyMessage", "CidInfo", "StorageDealRecords", "RetrievalDealRecords", }, } // allowedCrossUserMethods are methods allowed to be called by users who do not own the target thread. allowedCrossUserMethods = []string{ "/threads.pb.API/Create", "/threads.pb.API/Verify", "/threads.pb.API/Save", "/threads.pb.API/Delete", "/threads.pb.API/Has", "/threads.pb.API/Find", "/threads.pb.API/FindByID", "/threads.pb.API/ReadTransaction", "/threads.pb.API/WriteTransaction", "/threads.pb.API/Listen", "/api.bucketsd.pb.APIService/Root", "/api.bucketsd.pb.APIService/Links", "/api.bucketsd.pb.APIService/ListPath", "/api.bucketsd.pb.APIService/PushPath", "/api.bucketsd.pb.APIService/PullPath", "/api.bucketsd.pb.APIService/SetPath", "/api.bucketsd.pb.APIService/MovePath", "/api.bucketsd.pb.APIService/RemovePath", "/api.bucketsd.pb.APIService/PullPathAccessRoles", "/api.bucketsd.pb.APIService/PushPathAccessRoles", } ) type Textile struct { collections *mdb.Collections tn tc.NetBoostrapper ts kt.TxnDatastoreExtended th *threads.Client thn *netclient.Client bc *billing.Client pc *pow.Client bucks *tdb.Buckets mail *tdb.Mail archiveTracker *tracker.Tracker filRetrieval *retrieval.FilRetrieval buckLocks *nutil.SemaphorePool ipnsm *ipns.Manager dnsm *dns.Manager server *grpc.Server proxy *http.Server gateway *gateway.Gateway internalHubSession string emailSessionBus *broadcast.Broadcaster conf Config } type Config struct { Hub bool Debug bool // Addresses AddrAPI ma.Multiaddr AddrAPIProxy ma.Multiaddr AddrMongoURI string AddrMongoName string AddrThreadsHost ma.Multiaddr AddrGatewayHost ma.Multiaddr AddrGatewayURL string AddrIPFSAPI ma.Multiaddr AddrBillingAPI string AddrPowergateAPI string // Buckets MaxBucketArchiveRepFactor int MaxBucketArchiveSize int64 MinBucketArchiveSize int64 // Threads MaxNumberThreadsPerOwner int ThreadsConnManager connmgr.ConnManager // IPNS IPNSRepublishSchedule string IPNSRepublishConcurrency int // Powergate PowergateAdminToken string // Archives ArchiveJobPollIntervalSlow time.Duration ArchiveJobPollIntervalFast time.Duration // Gateway UseSubdomains bool MaxEventsPerSec int MaxBurstSize int // Cloudflare DNSDomain string DNSZoneID string DNSToken string // Customer.io CustomerioAPIKey string CustomerioConfirmTmpl string CustomerioInviteTmpl string EmailSessionSecret string } func NewTextile(ctx context.Context, conf Config, opts ...Option) (*Textile, error) { var args Options for _, opt := range opts { opt(&args) } if conf.Debug { if err := tutil.SetLogLevels(map[string]logging.LogLevel{ "core": logging.LevelDebug, "hubapi": logging.LevelDebug, "bucketsapi": logging.LevelDebug, "usersapi": logging.LevelDebug, "job-tracker": logging.LevelDebug, "fil-retrieval": logging.LevelDebug, "billing.client": logging.LevelDebug, }); err != nil { return nil, err } } t := &Textile{ conf: conf, internalHubSession: util.MakeToken(32), } // Configure clients ipfsapi, err := httpapi.NewApi(conf.AddrIPFSAPI) if err != nil { return nil, err } // Don't allow using textile as a gateway to non-bucket files ic, err := ipfsapi.WithOptions(caopts.Api.FetchBlocks(false)) if err != nil { return nil, err } if conf.AddrPowergateAPI != "" { if t.pc, err = pow.NewClient(conf.AddrPowergateAPI); err != nil { return nil, err } } if conf.DNSToken != "" { t.dnsm, err = dns.NewManager(conf.DNSDomain, conf.DNSZoneID, conf.DNSToken, conf.Debug) if err != nil { return nil, err } } t.collections, err = mdb.NewCollections(ctx, conf.AddrMongoURI, conf.AddrMongoName, conf.Hub) if err != nil { return nil, err } t.ipnsm, err = ipns.NewManager(t.collections.IPNSKeys, ic.Key(), ic.Name(), conf.IPNSRepublishConcurrency, conf.Debug) if err != nil { return nil, err } // Configure threads netOptions := []tc.NetOption{ tc.WithNetHostAddr(conf.AddrThreadsHost), tc.WithNoNetPulling(true), tc.WithNoExchangeEdgesMigration(true), tc.WithNetDebug(conf.Debug), } if args.ThreadsMongoUri != "" { netOptions = append(netOptions, tc.WithNetMongoPersistence(args.ThreadsMongoUri, args.ThreadsMongoDB)) } else { netOptions = append(netOptions, tc.WithNetBadgerPersistence(args.ThreadsBadgerRepoPath)) } if conf.ThreadsConnManager != nil { netOptions = append(netOptions, tc.WithConnectionManager(conf.ThreadsConnManager)) } t.tn, err = tc.DefaultNetwork(netOptions...) if err != nil { return nil, err } // Configure gRPC server target, err := tutil.TCPAddrFromMultiAddr(conf.AddrAPI) if err != nil { return nil, err } // Start threads clients t.th, err = threads.NewClient(target, grpc.WithInsecure(), grpc.WithPerRPCCredentials(common.Credentials{})) if err != nil { return nil, err } t.thn, err = netclient.NewClient(target, grpc.WithInsecure(), grpc.WithPerRPCCredentials(common.Credentials{})) if err != nil { return nil, err } t.bucks, err = tdb.NewBuckets(t.th, t.pc, t.collections.BucketArchives) if err != nil { return nil, err } t.mail, err = tdb.NewMail(t.th) if err != nil { return nil, err } // Configure gRPC services if args.ThreadsMongoUri != "" { t.ts, err = mongods.New( ctx, args.ThreadsMongoUri, args.ThreadsMongoDB, mongods.WithCollName("eventstore"), ) if err != nil { return nil, err } } else { t.ts, err = tutil.NewBadgerDatastore(args.ThreadsBadgerRepoPath, "eventstore", false) if err != nil { return nil, err } } ts, err := dbapi.NewService(t.ts, t.tn, dbapi.Config{ Debug: conf.Debug, }) if err != nil { return nil, err } ns, err := netapi.NewService(t.tn, netapi.Config{ Debug: conf.Debug, }) if err != nil { return nil, err } // Configure a billing client if conf.AddrBillingAPI != "" { t.bc, err = billing.NewClient(conf.AddrBillingAPI, grpc.WithInsecure()) if err != nil { return nil, err } } jobFinalizedEvents := make(chan archive.JobEvent) if t.pc != nil { t.archiveTracker, err = tracker.New( t.collections, t.bucks, t.pc, t.internalHubSession, conf.ArchiveJobPollIntervalSlow, conf.ArchiveJobPollIntervalFast, jobFinalizedEvents, ) if err != nil { return nil, err } filRetrievalDS := kt.WrapTxnDatastore(t.ts, ktipfs.PrefixTransform{ Prefix: datastore.NewKey("buckets/filretrieval"), }) t.filRetrieval, err = retrieval.NewFilRetrieval(filRetrievalDS, t.pc, t.archiveTracker, jobFinalizedEvents, t.internalHubSession) if err != nil { return nil, err } } var hs *hubd.Service var us *usersd.Service if conf.Hub { cio, err := email.NewClient( email.Config{ ConfirmTmpl: conf.CustomerioConfirmTmpl, InviteTmpl: conf.CustomerioInviteTmpl, APIKey: conf.CustomerioAPIKey, Debug: conf.Debug, }, ) if err != nil { return nil, err } t.emailSessionBus = broadcast.NewBroadcaster(0) hs = &hubd.Service{ Collections: t.collections, Threads: t.th, ThreadsNet: t.thn, GatewayURL: conf.AddrGatewayURL, EmailClient: cio, EmailSessionBus: t.emailSessionBus, EmailSessionSecret: conf.EmailSessionSecret, IPFSClient: ic, IPNSManager: t.ipnsm, BillingClient: t.bc, PowergateClient: t.pc, PowergateAdminToken: conf.PowergateAdminToken, } us = &usersd.Service{ Collections: t.collections, Mail: t.mail, BillingClient: t.bc, FilRetrieval: t.filRetrieval, PowergateClient: t.pc, } } t.buckLocks = nutil.NewSemaphorePool(1) bs := &bucketsd.Service{ Collections: t.collections, Buckets: t.bucks, GatewayURL: conf.AddrGatewayURL, GatewayBucketsHost: conf.DNSDomain, IPFSClient: ic, IPNSManager: t.ipnsm, PowergateClient: t.pc, PowergateAdminToken: conf.PowergateAdminToken, ArchiveTracker: t.archiveTracker, Semaphores: t.buckLocks, MaxBucketArchiveRepFactor: conf.MaxBucketArchiveRepFactor, MaxBucketArchiveSize: conf.MaxBucketArchiveSize, MinBucketArchiveSize: conf.MinBucketArchiveSize, FilRetrieval: t.filRetrieval, } if t.filRetrieval != nil { // We can avoid the chicken-egg-problem of below line in the future. // For more info, see "TODO(**)" in buckd/service.go t.filRetrieval.SetBucketCreator(bs) t.filRetrieval.RunDaemon() } // Start serving ptarget, err := tutil.TCPAddrFromMultiAddr(conf.AddrAPIProxy) if err != nil { return nil, err } var grpcopts []grpc.ServerOption if conf.Hub { var powStub *grpcdynamic.Stub var powergateServiceDesc *desc.ServiceDescriptor if conf.AddrPowergateAPI != "" { if powStub, err = createPowStub(conf.AddrPowergateAPI); err != nil { return nil, err } if powergateServiceDesc, err = createServiceDesciptor( "powergate/user/v1/user.proto", powergateServiceName, ); err != nil { return nil, err } } grpcopts = []grpc.ServerOption{ grpcm.WithUnaryServerChain( auth.UnaryServerInterceptor(t.authFunc), unaryServerInterceptor(t.preUsageFunc, t.postUsageFunc), t.threadInterceptor(), powInterceptor( powergateServiceName, allowedPowMethods[powergateServiceName], powergateServiceDesc, powStub, t.pc, conf.PowergateAdminToken, t.collections, ), ), grpcm.WithStreamServerChain( auth.StreamServerInterceptor(t.authFunc), streamServerInterceptor(t.preUsageFunc, t.postUsageFunc), ), grpc.StatsHandler(&StatsHandler{t: t}), } } else { grpcopts = []grpc.ServerOption{ grpcm.WithUnaryServerChain(auth.UnaryServerInterceptor(t.noAuthFunc)), grpcm.WithStreamServerChain(auth.StreamServerInterceptor(t.noAuthFunc)), grpc.KeepaliveParams(keepalive.ServerParameters{ Time: time.Second * 20, Timeout: time.Second * 10, }), grpc.KeepaliveEnforcementPolicy(keepalive.EnforcementPolicy{ MinTime: time.Second * 20, PermitWithoutStream: true, }), } } t.server = grpc.NewServer(grpcopts...) listener, err := net.Listen("tcp", target) if err != nil { return nil, err } go func() { healthpb.RegisterHealthServer(t.server, health.NewServer()) dbpb.RegisterAPIServer(t.server, ts) netpb.RegisterAPIServer(t.server, ns) if conf.Hub { hpb.RegisterAPIServiceServer(t.server, hs) upb.RegisterAPIServiceServer(t.server, us) userPb.RegisterUserServiceServer(t.server, &userPb.UnimplementedUserServiceServer{}) } bpb.RegisterAPIServiceServer(t.server, bs) if err := t.server.Serve(listener); err != nil && !errors.Is(err, grpc.ErrServerStopped) { log.Fatalf("serve error: %v", err) } if err := ts.Close(); err != nil { log.Fatalf("error closing thread service: %v", err) } }() webrpc := grpcweb.WrapServer( t.server, grpcweb.WithOriginFunc(func(origin string) bool { return true }), grpcweb.WithAllowedRequestHeaders([]string{"Origin"}), grpcweb.WithWebsockets(true), grpcweb.WithWebsocketOriginFunc(func(req *http.Request) bool { return true })) t.proxy = &http.Server{ Addr: ptarget, } t.proxy.Handler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if webrpc.IsGrpcWebRequest(r) || webrpc.IsAcceptableGrpcCorsRequest(r) || webrpc.IsGrpcWebSocketRequest(r) { webrpc.ServeHTTP(w, r) } }) go func() { if err := t.proxy.ListenAndServe(); err != nil && err != http.ErrServerClosed { log.Fatalf("proxy error: %v", err) } }() // Configure gateway t.gateway, err = gateway.NewGateway(gateway.Config{ Addr: conf.AddrGatewayHost, URL: conf.AddrGatewayURL, Subdomains: conf.UseSubdomains, BucketsDomain: conf.DNSDomain, APIAddr: conf.AddrAPI, APISession: t.internalHubSession, Collections: t.collections, IPFSClient: ic, EmailSessionBus: t.emailSessionBus, MaxEventsPerSec: conf.MaxEventsPerSec, MaxBurstSize: conf.MaxBurstSize, Hub: conf.Hub, Debug: conf.Debug, }) if err != nil { return nil, err } t.gateway.Start() // Start republishing ipns keys if err := t.ipnsm.StartRepublishing(conf.IPNSRepublishSchedule); err != nil { return nil, err } log.Info("started") return t, nil } func (t *Textile) Bootstrap() { t.tn.Bootstrap(tutil.DefaultBoostrapPeers()) } func (t *Textile) Close() error { if t.emailSessionBus != nil { t.emailSessionBus.Discard() } log.Info("session bus was discarded") if err := t.gateway.Stop(); err != nil { return err } t.buckLocks.Stop() log.Info("locking buckets") ctx, cancel := context.WithTimeout(context.Background(), time.Second) defer cancel() if err := t.proxy.Shutdown(ctx); err != nil { return err } log.Info("gRPC proxy was shutdown") stopped := make(chan struct{}) go func() { t.server.GracefulStop() close(stopped) }() timer := time.NewTimer(10 * time.Second) select { case <-timer.C: t.server.Stop() case <-stopped: timer.Stop() } log.Info("gRPC was shutdown") if t.filRetrieval != nil { log.Info("closing fil-retrieval module") if err := t.filRetrieval.Close(); err != nil { log.Errorf("closing fil-retrieval module: %s", err) } else { log.Info("fil-retrieval was shutdown") } } if err := t.th.Close(); err != nil { return err } if t.bc != nil { if err := t.bc.Close(); err != nil { return err } } if t.pc != nil { if err := t.pc.Close(); err != nil { return err } } log.Info("local clients were shutdown") t.ipnsm.Close() if t.archiveTracker != nil { if err := t.archiveTracker.Close(); err != nil { return err } } if err := t.bucks.Close(); err != nil { return err } log.Info("buckets was shutdown") if err := t.tn.Close(); err != nil { return err } if err := t.ts.Close(); err != nil { return err } log.Info("threads was shutdown") if err := t.collections.Close(); err != nil { return err } log.Info("mongo collections were shutdown") return nil } func (t *Textile) HostID() peer.ID { return t.tn.Host().ID() } func createServiceDesciptor(file string, serviceName string) (*desc.ServiceDescriptor, error) { fileDesc, err := desc.LoadFileDescriptor(file) if err != nil { return nil, err } serviceDesc := fileDesc.FindService(serviceName) if serviceDesc == nil { return nil, fmt.Errorf("no service description found") } return serviceDesc, nil } ================================================ FILE: core/options.go ================================================ package core type Options struct { ThreadsBadgerRepoPath string ThreadsMongoUri string ThreadsMongoDB string } type Option func(*Options) func WithBadgerThreadsPersistence(repoPath string) Option { return func(o *Options) { o.ThreadsBadgerRepoPath = repoPath } } func WithMongoThreadsPersistence(uri, db string) Option { return func(o *Options) { o.ThreadsMongoUri = uri o.ThreadsMongoDB = db } } ================================================ FILE: core/pow_interceptor.go ================================================ package core import ( "context" "fmt" "strings" "github.com/golang/protobuf/proto" "github.com/jhump/protoreflect/desc" "github.com/jhump/protoreflect/dynamic" "github.com/jhump/protoreflect/dynamic/grpcdynamic" powc "github.com/textileio/powergate/v2/api/client" mdb "github.com/textileio/textile/v2/mongodb" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) // powInterceptor handles hubd-proxied Powergate requests. func powInterceptor( serviceName string, allowedMethods []string, serviceDesc *desc.ServiceDescriptor, stub *grpcdynamic.Stub, pc *powc.Client, powAdminToken string, c *mdb.Collections, ) grpc.UnaryServerInterceptor { return func( ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler, ) (interface{}, error) { methodParts := strings.Split(info.FullMethod, "/") if len(methodParts) != 3 { return nil, status.Errorf(codes.Internal, "error parsing method string %s", info.FullMethod) } methodServiceName := methodParts[1] methodName := methodParts[2] if methodServiceName != serviceName { return handler(ctx, req) } if pc == nil { return nil, status.Error(codes.Internal, "Powergate isn't enabled in Hub") } isAllowedMethod := false for _, method := range allowedMethods { if method == methodName { isAllowedMethod = true break } } if !isAllowedMethod { return nil, status.Errorf(codes.PermissionDenied, "method not allowed: %s", info.FullMethod) } account, ok := mdb.AccountFromContext(ctx) if !ok { // Should not happen at this point in the interceptor chain return nil, status.Errorf(codes.FailedPrecondition, "account is required") } createNewUser := func() error { ctxAdmin := context.WithValue(ctx, powc.AdminKey, powAdminToken) res, err := pc.Admin.Users.Create(ctxAdmin) if err != nil { return fmt.Errorf("creating new powergate integration: %v", err) } _, err = c.Accounts.UpdatePowInfo(ctx, account.Owner().Key, &mdb.PowInfo{ ID: res.User.Id, Token: res.User.Token, }) if err != nil { return fmt.Errorf("updating user/account with new powergate information: %v", err) } return nil } tryAgain := fmt.Errorf("powergate newly integrated into your account, " + "please try again in 30 seconds to allow time for setup to complete") // Case where account/user was created before powergate was enabled. // create a user for them. if account.Owner().PowInfo == nil { if err := createNewUser(); err != nil { return nil, err } return nil, tryAgain } powCtx := context.WithValue(ctx, powc.AuthKey, account.Owner().PowInfo.Token) methodDesc := serviceDesc.FindMethodByName(methodName) if methodDesc == nil { return nil, status.Errorf(codes.Internal, "no method found for %s", methodName) } res, err := stub.InvokeRpc(powCtx, methodDesc, req.(proto.Message)) if err != nil { if !strings.Contains(err.Error(), "auth token not found") { return nil, err } else { // case where the auth token is no longer valid because powergate was reset. // create a new user for them. if err := createNewUser(); err != nil { return nil, err } return nil, tryAgain } } return res, nil } } func createPowStub(target string) (*grpcdynamic.Stub, error) { pgConn, err := powc.CreateClientConn(target) if err != nil { return &grpcdynamic.Stub{}, err } s := grpcdynamic.NewStubWithMessageFactory(pgConn, dynamic.NewMessageFactoryWithDefaults()) return &s, nil } ================================================ FILE: core/stats_handler.go ================================================ package core import ( "context" "time" tpb "github.com/textileio/go-threads/api/pb" "github.com/textileio/go-threads/core/thread" hpb "github.com/textileio/textile/v2/api/hubd/pb" mdb "github.com/textileio/textile/v2/mongodb" "google.golang.org/grpc/stats" ) type StatsHandler struct { t *Textile } var _ stats.Handler = (*StatsHandler)(nil) var statsTimeout = time.Hour // HandleRPC accounts for customer usage across services. func (h *StatsHandler) HandleRPC(ctx context.Context, st stats.RPCStats) { if h.t.bc == nil { return } switch st := st.(type) { case *stats.OutPayload: if getStats(ctx) == nil { return } // Handle payload types. egress := int64(st.WireLength) var reads, writes int64 var pl interface{} switch spl := st.Payload.(type) { case *tpb.ReadTransactionReply: pl = spl.Option case *tpb.WriteTransactionReply: pl = spl.Option default: pl = spl } switch pl := pl.(type) { // Don't charge for usage when customer is trying to add a payment method, cancel subscription, etc. case *hpb.GetBillingSessionResponse: egress = 0 // Account for threaddb reads and writes case *tpb.CreateReply: if pl.InstanceIDs != nil { writes = int64(len(pl.InstanceIDs)) } case *tpb.WriteTransactionReply_CreateReply: if pl.CreateReply.TransactionError == "" { writes = 1 } case *tpb.VerifyReply: if pl.TransactionError == "" { reads = 1 } case *tpb.WriteTransactionReply_VerifyReply: if pl.VerifyReply.TransactionError == "" { reads = 1 } case *tpb.SaveReply: if pl.TransactionError == "" { writes = 1 } case *tpb.WriteTransactionReply_SaveReply: if pl.SaveReply.TransactionError == "" { writes = 1 } case *tpb.DeleteReply: if pl.TransactionError == "" { writes = 1 } case *tpb.WriteTransactionReply_DeleteReply: if pl.DeleteReply.TransactionError == "" { writes = 1 } case *tpb.HasReply: if pl.TransactionError == "" { reads = 1 } case *tpb.ReadTransactionReply_HasReply: if pl.HasReply.TransactionError == "" { reads = 1 } case *tpb.WriteTransactionReply_HasReply: if pl.HasReply.TransactionError == "" { reads = 1 } case *tpb.FindReply: if pl.Instances != nil { reads = int64(len(pl.Instances)) } case *tpb.ReadTransactionReply_FindReply: if pl.FindReply.Instances != nil { reads = int64(len(pl.FindReply.Instances)) } case *tpb.WriteTransactionReply_FindReply: if pl.FindReply.Instances != nil { reads = int64(len(pl.FindReply.Instances)) } case *tpb.FindByIDReply: if pl.TransactionError == "" { reads = 1 } case *tpb.ReadTransactionReply_FindByIDReply: if pl.FindByIDReply.TransactionError == "" { reads = 1 } case *tpb.WriteTransactionReply_FindByIDReply: if pl.FindByIDReply.TransactionError == "" { reads = 1 } case *tpb.ListenReply: if pl.Instance != nil { reads = 1 } } ctx = handleStats(ctx, egress, reads, writes) case *stats.End: // Record usage rs := getStats(ctx) if rs == nil { return } go func() { ctx, cancel := context.WithTimeout(context.Background(), statsTimeout) defer cancel() if rs.egress > 0 || rs.reads > 0 || rs.writes > 0 { if _, err := h.t.bc.IncCustomerUsage( ctx, rs.key, map[string]int64{ "network_egress": rs.egress, "instance_reads": rs.reads, "instance_writes": rs.writes, }, ); err != nil { log.Errorf("stats: inc customer usage: %v", err) } } }() } } type statsCtxKey string type requestStats struct { key thread.PubKey egress int64 reads int64 writes int64 } func (h *StatsHandler) TagRPC(ctx context.Context, info *stats.RPCTagInfo) context.Context { if h.t.bc == nil { return ctx } for _, ignored := range authIgnoredMethods { if info.FullMethodName == ignored { return ctx } } token, err := thread.NewTokenFromMD(ctx) if err != nil { return ctx } else { ctx = thread.NewTokenContext(ctx, token) } ctx, err = h.t.newAuthCtx(ctx, info.FullMethodName, false) if err != nil { return ctx } account, ok := mdb.AccountFromContext(ctx) if !ok { return ctx } return context.WithValue(ctx, statsCtxKey("requestStats"), &requestStats{ key: account.Owner().Key, }) } func handleStats(ctx context.Context, egress, reads, writes int64) context.Context { rs := getStats(ctx) if rs == nil { return ctx } rs.egress += egress rs.reads += reads rs.writes += writes return context.WithValue(ctx, statsCtxKey("requestStats"), rs) } func getStats(ctx context.Context) *requestStats { rs, _ := ctx.Value(statsCtxKey("requestStats")).(*requestStats) return rs } func (h *StatsHandler) HandleConn(context.Context, stats.ConnStats) {} func (h *StatsHandler) TagConn(ctx context.Context, _ *stats.ConnTagInfo) context.Context { return ctx } ================================================ FILE: core/thread_interceptor.go ================================================ package core import ( "context" "errors" ma "github.com/multiformats/go-multiaddr" dbpb "github.com/textileio/go-threads/api/pb" "github.com/textileio/go-threads/core/thread" netpb "github.com/textileio/go-threads/net/api/pb" "github.com/textileio/textile/v2/api/common" mdb "github.com/textileio/textile/v2/mongodb" "go.mongodb.org/mongo-driver/mongo" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) // threadInterceptor monitors for thread creation and deletion. // Textile tracks threads against dev, org, and user accounts. // Users must supply a valid API key from a dev/org. func (t *Textile) threadInterceptor() grpc.UnaryServerInterceptor { return func( ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler, ) (interface{}, error) { method, _ := grpc.Method(ctx) for _, ignored := range authIgnoredMethods { if method == ignored { return handler(ctx, req) } } for _, block := range blockMethods { if method == block { return nil, status.Error(codes.PermissionDenied, "Method is not accessible") } } if sid, ok := common.SessionFromContext(ctx); ok && sid == t.internalHubSession { return handler(ctx, req) } account, ok := mdb.AccountFromContext(ctx) if !ok { // Should not happen at this point in the interceptor chain return nil, status.Errorf(codes.FailedPrecondition, "account is required") } var newID thread.ID var isDB bool var err error switch method { case "/threads.pb.API/NewDB": newID, err = thread.Cast(req.(*dbpb.NewDBRequest).DbID) if err != nil { return nil, err } isDB = true case "/threads.pb.API/NewDBFromAddr": addr, err := ma.NewMultiaddrBytes(req.(*dbpb.NewDBFromAddrRequest).Addr) if err != nil { return nil, err } newID, err = thread.FromAddr(addr) if err != nil { return nil, err } isDB = true case "/threads.net.pb.API/CreateThread": newID, err = thread.Cast(req.(*netpb.CreateThreadRequest).ThreadID) if err != nil { return nil, err } case "/threads.net.pb.API/AddThread": addr, err := ma.NewMultiaddrBytes(req.(*netpb.AddThreadRequest).Addr) if err != nil { return nil, err } newID, err = thread.FromAddr(addr) if err != nil { return nil, err } default: // If we're dealing with an existing thread, make sure that the owner // owns the thread directly or via an API key. // Hub APIs that deal with threads require the id to be passed in the context. // go-threads APIs take the ID as a request param, which means we have to // extract it from the request. threadIDFromCtx, _ := common.ThreadIDFromContext(ctx) threadIDFromReq, err := getThreadIDFromRequest(method, req) if err != nil { return nil, err } ids := []thread.ID{threadIDFromCtx, threadIDFromReq} if err := t.checkThreadOwner(ctx, method, ids, account); err != nil { return nil, err } } // Preemptively track the new thread ID for the owner. // This needs to happen before the request is handled in case there's a conflict // with the owner and thread name. if newID.Defined() { thds, err := t.collections.Threads.ListByOwner(ctx, account.Owner().Key) if err != nil { return nil, err } if t.conf.MaxNumberThreadsPerOwner > 0 && len(thds) >= t.conf.MaxNumberThreadsPerOwner { return nil, ErrTooManyThreadsPerOwner } if _, err := t.collections.Threads.Create(ctx, newID, account.Owner().Key, isDB); err != nil { return nil, err } } // Track the thread ID marked for deletion. var deleteID thread.ID switch method { case "/threads.pb.API/DeleteDB": deleteID, err = thread.Cast(req.(*dbpb.DeleteDBRequest).DbID) if err != nil { return nil, err } keys, err := t.collections.IPNSKeys.ListByThreadID(ctx, deleteID) if err != nil { return nil, err } if len(keys) != 0 { return nil, status.Error(codes.FailedPrecondition, "DB not empty (delete buckets first)") } case "/threads.net.pb.API/DeleteThread": deleteID, err = thread.Cast(req.(*netpb.DeleteThreadRequest).ThreadID) if err != nil { return nil, err } } // Let the request pass through. res, err := handler(ctx, req) if err != nil { // Clean up the new thread if there was an error. if newID.Defined() { if err := t.collections.Threads.Delete(ctx, newID, account.Owner().Key); err != nil { log.Errorf("error deleting thread %s: %v", newID, err) } } return res, err } // Clean up the tracked thread if it was deleted. if deleteID.Defined() { if err := t.collections.Threads.Delete(ctx, deleteID, account.Owner().Key); err != nil { return nil, err } } return res, nil } } func (t *Textile) checkThreadOwner( ctx context.Context, method string, threadIDs []thread.ID, account *mdb.AccountCtx, ) error { for _, id := range threadIDs { if !id.Defined() { continue } th, err := t.collections.Threads.Get(ctx, id, account.Owner().Key) if err != nil && errors.Is(err, mongo.ErrNoDocuments) { // Allow non-owners to interact with a limited set of APIs. var isAllowed bool for _, m := range allowedCrossUserMethods { if method == m { isAllowed = true break } } if !isAllowed { return status.Error(codes.PermissionDenied, "User does not own thread") } } else if err != nil { return err } if th != nil { key, _ := mdb.APIKeyFromContext(ctx) if key != nil && key.Type == mdb.UserKey { // Extra user check for user API keys. if key.Key != th.Key { return status.Error(codes.PermissionDenied, "Bad API key") } } } } return nil } func getThreadIDFromRequest(method string, req interface{}) (thread.ID, error) { var id thread.ID var err error switch method { case "/threads.pb.API/GetDBInfo": id, err = thread.Cast(req.(*dbpb.GetDBInfoRequest).DbID) case "/threads.pb.API/DeleteDB": id, err = thread.Cast(req.(*dbpb.DeleteDBRequest).DbID) case "/threads.pb.API/NewCollection": id, err = thread.Cast(req.(*dbpb.NewCollectionRequest).DbID) case "/threads.pb.API/UpdateCollection": id, err = thread.Cast(req.(*dbpb.UpdateCollectionRequest).DbID) case "/threads.pb.API/DeleteCollection": id, err = thread.Cast(req.(*dbpb.DeleteCollectionRequest).DbID) case "/threads.pb.API/GetCollectionInfo": id, err = thread.Cast(req.(*dbpb.GetCollectionInfoRequest).DbID) case "/threads.pb.API/GetCollectionIndexes": id, err = thread.Cast(req.(*dbpb.GetCollectionIndexesRequest).DbID) case "/threads.pb.API/ListCollections": id, err = thread.Cast(req.(*dbpb.ListCollectionsRequest).DbID) case "/threads.net.pb.API/GetThread": id, err = thread.Cast(req.(*netpb.GetThreadRequest).ThreadID) case "/threads.net.pb.API/PullThread": id, err = thread.Cast(req.(*netpb.PullThreadRequest).ThreadID) case "/threads.net.pb.API/DeleteThread": id, err = thread.Cast(req.(*netpb.DeleteThreadRequest).ThreadID) case "/threads.net.pb.API/AddReplicator": id, err = thread.Cast(req.(*netpb.AddReplicatorRequest).ThreadID) case "/threads.net.pb.API/CreateRecord": id, err = thread.Cast(req.(*netpb.CreateRecordRequest).ThreadID) case "/threads.net.pb.API/AddRecord": id, err = thread.Cast(req.(*netpb.AddRecordRequest).ThreadID) case "/threads.net.pb.API/GetRecord": id, err = thread.Cast(req.(*netpb.GetRecordRequest).ThreadID) } return id, err } ================================================ FILE: core/thread_interceptor_test.go ================================================ package core_test import ( "context" "crypto/rand" "os" "testing" "github.com/ipfs/go-cid" cbornode "github.com/ipfs/go-ipld-cbor" "github.com/libp2p/go-libp2p-core/crypto" "github.com/libp2p/go-libp2p-core/peer" ma "github.com/multiformats/go-multiaddr" mh "github.com/multiformats/go-multihash" "github.com/stretchr/testify/require" "github.com/textileio/crypto/symmetric" tc "github.com/textileio/go-threads/api/client" "github.com/textileio/go-threads/cbor" coredb "github.com/textileio/go-threads/core/db" "github.com/textileio/go-threads/core/thread" "github.com/textileio/go-threads/db" nc "github.com/textileio/go-threads/net/api/client" tutil "github.com/textileio/go-threads/util" "github.com/textileio/textile/v2/api/apitest" "github.com/textileio/textile/v2/api/common" hc "github.com/textileio/textile/v2/api/hubd/client" "github.com/textileio/textile/v2/core" "google.golang.org/grpc" ) func TestMain(m *testing.M) { cleanup := func() {} if os.Getenv("SKIP_SERVICES") != "true" { cleanup = apitest.StartServices() } exitVal := m.Run() cleanup() os.Exit(exitVal) } func Test_ThreadsDB(t *testing.T) { t.Parallel() conf, hub, threads, _ := setup(t, nil) ctx := context.Background() dev1 := apitest.Signup(t, hub, conf, apitest.NewUsername(), apitest.NewEmail()) dev2 := apitest.Signup(t, hub, conf, apitest.NewUsername(), apitest.NewEmail()) ctx1 := common.NewSessionContext(ctx, dev1.Session) ctx2 := common.NewSessionContext(ctx, dev2.Session) // dev1 creates a thread id := thread.NewIDV1(thread.Raw, 32) err := threads.NewDB(ctx1, id, db.WithNewManagedCollections(collectionCongig)) require.NoError(t, err) // dev1 creates an instance _, err = threads.Create(ctx1, id, "Dogs", tc.Instances{&Dog{Name: "Fido", Comments: []Comment{}}}) require.NoError(t, err) // dev2 create an instance (should be fine, this can be controlled with write validator) _, err = threads.Create(ctx2, id, "Dogs", tc.Instances{&Dog{Name: "Fido", Comments: []Comment{}}}) require.NoError(t, err) // dev2 attempts all the blocked methods _, err = threads.GetDBInfo(ctx2, id) require.Error(t, err) err = threads.DeleteDB(ctx2, id) require.Error(t, err) _, err = threads.ListDBs(ctx2) require.Error(t, err) err = threads.NewCollection(ctx2, id, collectionCongig) require.Error(t, err) err = threads.UpdateCollection(ctx2, id, collectionCongig) require.Error(t, err) err = threads.DeleteCollection(ctx2, id, "Dogs") require.Error(t, err) _, err = threads.GetCollectionInfo(ctx2, id, "Dogs") require.Error(t, err) _, err = threads.GetCollectionIndexes(ctx2, id, "Dogs") require.Error(t, err) _, err = threads.ListCollections(ctx2, id) require.Error(t, err) } func TestClient_ThreadsNet(t *testing.T) { t.Parallel() conf, hub, _, net := setup(t, nil) ctx := context.Background() dev1 := apitest.Signup(t, hub, conf, apitest.NewUsername(), apitest.NewEmail()) dev2 := apitest.Signup(t, hub, conf, apitest.NewUsername(), apitest.NewEmail()) ctx1 := common.NewSessionContext(ctx, dev1.Session) ctx2 := common.NewSessionContext(ctx, dev2.Session) // dev1 creates a thread id := thread.NewIDV1(thread.Raw, 32) _, err := net.CreateThread(ctx1, id) require.NoError(t, err) // dev1 creates a record body, err := cbornode.WrapObject(map[string]interface{}{ "foo": "bar", "baz": []byte("howdy"), }, mh.SHA2_256, -1) require.NoError(t, err) _, err = net.CreateRecord(ctx1, id, body) require.NoError(t, err) // dev2 attempts all the blocked methods _, err = net.GetThread(ctx2, id) require.Error(t, err) err = net.PullThread(ctx2, id) require.Error(t, err) err = net.DeleteThread(ctx2, id) require.Error(t, err) sk, _, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) pid, err := peer.IDFromPrivateKey(sk) require.NoError(t, err) addr, err := ma.NewMultiaddr("/p2p/" + pid.String()) require.NoError(t, err) _, err = net.AddReplicator(ctx2, id, addr) require.Error(t, err) _, err = net.CreateRecord(ctx2, id, body) require.Error(t, err) event, err := cbor.CreateEvent(context.Background(), nil, body, symmetric.New()) if err != nil { t.Fatal(err) } rec, err := cbor.CreateRecord(context.Background(), nil, cbor.CreateRecordConfig{ Block: event, Prev: cid.Undef, Key: sk, PubKey: thread.NewLibp2pIdentity(sk).GetPublic(), ServiceKey: thread.NewRandomServiceKey().Service(), }) require.NoError(t, err) err = net.AddRecord(ctx2, id, pid, rec) require.Error(t, err) _, err = net.GetRecord(ctx2, id, cid.Cid{}) require.Error(t, err) } func setup(t *testing.T, conf *core.Config) (core.Config, *hc.Client, *tc.Client, *nc.Client) { if conf == nil { tmp := apitest.DefaultTextileConfig(t) conf = &tmp } return setupWithConf(t, *conf) } func setupWithConf(t *testing.T, conf core.Config) (core.Config, *hc.Client, *tc.Client, *nc.Client) { apitest.MakeTextileWithConfig(t, conf) target, err := tutil.TCPAddrFromMultiAddr(conf.AddrAPI) require.NoError(t, err) opts := []grpc.DialOption{grpc.WithInsecure(), grpc.WithPerRPCCredentials(common.Credentials{})} hubclient, err := hc.NewClient(target, opts...) require.NoError(t, err) threadsclient, err := tc.NewClient(target, opts...) require.NoError(t, err) threadsnetclient, err := nc.NewClient(target, opts...) require.NoError(t, err) t.Cleanup(func() { require.NoError(t, err) err = threadsclient.Close() require.NoError(t, err) }) return conf, hubclient, threadsclient, threadsnetclient } type Comment struct { Body string } type Dog struct { ID coredb.InstanceID `json:"_id"` Name string Comments []Comment } var collectionCongig = db.CollectionConfig{ Name: "Dogs", Schema: tutil.SchemaFromInstance(&Dog{}, false), WriteValidator: ` var type = event.patch.type var patch = event.patch.json_patch switch (type) { case "delete": return false default: if (patch.Name !== "Fido" && patch.Name != "Clyde") { return false } return true } `, ReadFilter: ` instance.Name = "Clyde" return instance `, } ================================================ FILE: core/usage_interceptor.go ================================================ package core import ( "context" "errors" "fmt" "math" "strings" "time" grpcm "github.com/grpc-ecosystem/go-grpc-middleware" powc "github.com/textileio/powergate/v2/api/client" "github.com/textileio/textile/v2/api/billingd/analytics" billing "github.com/textileio/textile/v2/api/billingd/client" "github.com/textileio/textile/v2/api/billingd/common" "github.com/textileio/textile/v2/api/billingd/pb" "github.com/textileio/textile/v2/buckets" mdb "github.com/textileio/textile/v2/mongodb" "github.com/textileio/textile/v2/util" "go.mongodb.org/mongo-driver/mongo" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) type preFunc func(ctx context.Context, method string) (context.Context, error) type postFunc func(ctx context.Context, method string) error func unaryServerInterceptor(pre preFunc, post postFunc) grpc.UnaryServerInterceptor { return func( ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler, ) (interface{}, error) { newCtx, err := pre(ctx, info.FullMethod) if err != nil { return nil, err } res, err := handler(newCtx, req) if err != nil { perr := post(newCtx, info.FullMethod) if perr != nil { log.Errorf("unaryServerInterceptor postFunc: %v", err) } return nil, err } if err := post(newCtx, info.FullMethod); err != nil { return nil, err } return res, nil } } func streamServerInterceptor(pre preFunc, post postFunc) grpc.StreamServerInterceptor { return func( srv interface{}, stream grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler, ) error { newCtx, err := pre(stream.Context(), info.FullMethod) if err != nil { return err } wrapped := grpcm.WrapServerStream(stream) wrapped.WrappedContext = newCtx if err := handler(srv, wrapped); err != nil { perr := post(newCtx, info.FullMethod) if perr != nil { log.Errorf("streamServerInterceptor postFunc: %v", err) } return err } return post(newCtx, info.FullMethod) } } func (t *Textile) preUsageFunc(ctx context.Context, method string) (context.Context, error) { if t.bc == nil { return ctx, nil } for _, ignored := range authIgnoredMethods { if method == ignored { return ctx, nil } } for _, ignored := range usageIgnoredMethods { if method == ignored { return ctx, nil } } account, ok := mdb.AccountFromContext(ctx) if !ok { return ctx, nil } now := time.Now() // Collect new users. if account.User != nil && account.User.CreatedAt.IsZero() && account.User.Type == mdb.User { var powInfo *mdb.PowInfo if t.pc != nil { ctxAdmin := context.WithValue(ctx, powc.AdminKey, t.conf.PowergateAdminToken) res, err := t.pc.Admin.Users.Create(ctxAdmin) if err != nil { return ctx, err } powInfo = &mdb.PowInfo{ID: res.User.Id, Token: res.User.Token} } user, err := t.collections.Accounts.CreateUser(ctx, account.User.Key, powInfo) if err != nil { return ctx, err } ctx = mdb.NewAccountContext(ctx, user, account.Org) account, _ = mdb.AccountFromContext(ctx) } // Collect new customers. cus, err := t.bc.GetCustomer(ctx, account.Owner().Key) if err != nil { if strings.Contains(err.Error(), mongo.ErrNoDocuments.Error()) { email, err := t.getAccountCtxEmail(ctx, account) if err != nil { return ctx, err } var opts []billing.Option if account.Owner().Type == mdb.User { key, ok := mdb.APIKeyFromContext(ctx) if !ok { return ctx, status.Error(codes.PermissionDenied, "Bad API key") } parent, err := t.collections.Accounts.Get(ctx, key.Owner) if err != nil { return nil, fmt.Errorf("parent for %s not found: %s", account.Owner().Key, key.Owner) } email, err := t.getAccountCtxEmail(ctx, mdb.AccountCtxForAccount(parent)) if err != nil { return ctx, err } opts = append(opts, billing.WithParent(parent.Key, email, parent.Type)) } if _, err := t.bc.CreateCustomer( ctx, account.Owner().Key, email, account.Owner().Username, account.Owner().Type, opts..., ); err != nil { return ctx, err } cus, err = t.bc.GetCustomer(ctx, account.Owner().Key) if err != nil { return ctx, err } } else { return ctx, err } } if err := common.StatusCheck(cus.SubscriptionStatus); err != nil { return ctx, status.Error(codes.FailedPrecondition, err.Error()) } if usageExhausted(cus, "network_egress", now) { err = fmt.Errorf("network egress exhausted: %v", common.ErrExceedsFreeQuota) return ctx, status.Error(codes.ResourceExhausted, err.Error()) } // @todo: Attach egress info that can be used to fail-fast in PullPath? switch method { case "/api.bucketsd.pb.APIService/Create", "/api.bucketsd.pb.APIService/PushPath", "/api.bucketsd.pb.APIService/PushPaths", "/api.bucketsd.pb.APIService/SetPath", "/api.bucketsd.pb.APIService/MovePath", "/api.bucketsd.pb.APIService/Remove", "/api.bucketsd.pb.APIService/RemovePath", "/api.bucketsd.pb.APIService/PushPathAccessRoles": owner := &buckets.BucketOwner{ StorageUsed: cus.DailyUsage["stored_data"].Total, } if cus.Billable { // Customer is paying for storage, quota is unbounded owner.StorageAvailable = int64(math.MaxInt64) } else if now.Unix() < cus.GracePeriodEnd { // Customer is in grace period, quota is grace owner.StorageAvailable = cus.DailyUsage["stored_data"].Grace } else if cus.GracePeriodEnd == 0 { // Customer has not started grace period, but there's no way to start the grace period _after_ // a successful request, so we use grace quota here and let the post usage handler start the // grace period in the event the request exceeds the free quota owner.StorageAvailable = cus.DailyUsage["stored_data"].Grace } else { // Customer's grace period has expired, fall back to free quota. owner.StorageAvailable = cus.DailyUsage["stored_data"].Free } ctx = buckets.NewBucketOwnerContext(ctx, owner) case "/threads.pb.API/Verify", "/threads.pb.API/Has", "/threads.pb.API/Find", "/threads.pb.API/FindByID", "/threads.pb.API/ReadTransaction", "/threads.pb.API/Listen": if usageExhausted(cus, "instance_reads", now) { err = fmt.Errorf("threaddb reads exhausted: %v", common.ErrExceedsFreeQuota) return ctx, status.Error(codes.ResourceExhausted, err.Error()) } case "/threads.pb.API/Create", "/threads.pb.API/Save", "/threads.pb.API/Delete", "/threads.pb.API/WriteTransaction": if usageExhausted(cus, "instance_writes", now) { err = fmt.Errorf("threaddb writes exhausted: %v", common.ErrExceedsFreeQuota) return ctx, status.Error(codes.ResourceExhausted, err.Error()) } } return ctx, nil } func usageExhausted(cus *pb.GetCustomerResponse, key string, now time.Time) bool { if !cus.Billable && cus.DailyUsage[key].Free == 0 { if now.Unix() >= cus.GracePeriodEnd { return true // Grace period ended } else if cus.DailyUsage[key].Grace == 0 { return true // Still in grace period, but reached the hard cap } } return false } func (t *Textile) postUsageFunc(ctx context.Context, method string) error { if t.bc == nil { return nil } for _, ignored := range authIgnoredMethods { if method == ignored { return nil } } account, ok := mdb.AccountFromContext(ctx) if !ok { return nil } owner, ok := buckets.BucketOwnerFromContext(ctx) if !ok { return nil } switch method { case "/api.bucketsd.pb.APIService/Create", "/api.bucketsd.pb.APIService/PushPath", "/api.bucketsd.pb.APIService/PushPaths", "/api.bucketsd.pb.APIService/SetPath", "/api.bucketsd.pb.APIService/MovePath", "/api.bucketsd.pb.APIService/Remove", "/api.bucketsd.pb.APIService/RemovePath", "/api.bucketsd.pb.APIService/PushPathAccessRoles": // If the main context is canceled, we still want to be able to record usage. sctx, cancel := context.WithTimeout(util.NewClonedContext(ctx), time.Second*10) defer cancel() if _, err := t.bc.IncCustomerUsage( sctx, account.Owner().Key, map[string]int64{ "stored_data": owner.StorageDelta, }, ); err != nil { log.Infof("postUsageFunc: %v", err) } } if t.bc != nil { payload := map[string]string{} if account.User != nil { payload["member"] = account.User.Key.String() payload["member_username"] = account.User.Username payload["member_email"] = account.User.Email } switch method { case "/api.bucketsd.pb.APIService/Create": t.bc.TrackEvent(ctx, account.Owner().Key, account.Owner().Type, true, analytics.BucketCreated, payload) case "/api.bucketsd.pb.APIService/Archive": t.bc.TrackEvent(ctx, account.Owner().Key, account.Owner().Type, true, analytics.BucketArchiveCreated, payload) case "/threads.pb.API/NewDB": t.bc.TrackEvent(ctx, account.Owner().Key, account.Owner().Type, true, analytics.ThreadDbCreated, payload) } } return nil } func (t *Textile) getAccountCtxEmail(ctx context.Context, account *mdb.AccountCtx) (string, error) { if account.User != nil { return account.User.Email, nil } if account.Org == nil { return "", errors.New("invalid account context") } for _, m := range account.Org.Members { if m.Role == mdb.OrgOwner { owner, err := t.collections.Accounts.Get(ctx, m.Key) if err != nil { log.Errorf("getting org owner: %v", err) continue } return owner.Email, nil } } return "", errors.New("could not resolve email for org") } ================================================ FILE: dist/install.tmpl ================================================ #!/usr/bin/env bash set -Eeuo pipefail # From https://github.com/ipfs/go-ipfs/blob/ccef991a194beaedf009b1d0702b1150db3da0a6/cmd/ipfs/dist/install.sh # # Installation script for textile. It tries to move $bin in one of the # directories stored in $binpaths. INSTALL_DIR="$(dirname "$0")" file="$INSTALL_DIR/{{ .Env.TXTL_FILE }}" binpaths="/usr/local/bin /usr/bin" # This variable contains a nonzero length string in case the script fails # because of missing write permissions. is_write_perm_missing="" for binpath in $binpaths; do if mv "$file" "$binpath/$file" 2>/dev/null; then echo "Moved $file to $binpath" exit 0 else if test -d "$binpath" && ! test -w "$binpath"; then is_write_perm_missing=1 fi fi done echo "We cannot install $file in one of the directories $binpaths" if test -n "$is_write_perm_missing"; then echo "It seems that we do not have the necessary write permissions." echo "Perhaps try running this script as a privileged user:" echo echo " sudo $0" echo fi exit 1 ================================================ FILE: dns/dns.go ================================================ package dns import ( "fmt" cf "github.com/cloudflare/cloudflare-go" logging "github.com/ipfs/go-log/v2" "github.com/textileio/go-threads/util" ) var ( log = logging.Logger("dns") ) const IPFSGateway = "cloudflare-ipfs.com" // Manager wraps a CloudflareClient client. type Manager struct { Domain string api *cf.API zoneID string } // NewManager return a cloudflare-backed dns updating client. func NewManager(domain string, zoneID string, token string, debug bool) (*Manager, error) { if debug { if err := util.SetLogLevels(map[string]logging.LogLevel{ "dns": logging.LevelDebug, }); err != nil { return nil, err } } api, err := cf.NewWithAPIToken(token) if err != nil { return nil, err } return &Manager{ Domain: domain, api: api, zoneID: zoneID, }, nil } // NewCNAME enters a new dns record for a CNAME. func (m *Manager) NewCNAME(name string, target string) (*cf.DNSRecord, error) { res, err := m.api.CreateDNSRecord(m.zoneID, cf.DNSRecord{ Type: "CNAME", Name: name, Content: target, Proxied: false, }) if err != nil { return nil, err } log.Debugf("created CNAME record %s -> %s", name, target) return &res.Result, nil } // NewTXT enters a new dns record for a TXT. func (m *Manager) NewTXT(name string, content string) (*cf.DNSRecord, error) { res, err := m.api.CreateDNSRecord(m.zoneID, cf.DNSRecord{ Type: "TXT", Name: name, Content: content, }) if err != nil { return nil, err } log.Debugf("created TXT record %s -> %s", name, content) return &res.Result, nil } // NewDNSLink enters a two dns records to enable DNS link. func (m *Manager) NewDNSLink(subdomain string, hash string) ([]*cf.DNSRecord, error) { cname, err := m.NewCNAME(subdomain, IPFSGateway) if err != nil { return nil, err } name := CreateDNSLinkName(subdomain) content := CreateDNSLinkContent(hash) txt, err := m.NewTXT(name, content) if err != nil { // Cleanup the orphaned cname record _ = m.DeleteRecord(cname.ID) return nil, err } log.Debugf("created DNSLink record %s -> %s", subdomain, hash) return []*cf.DNSRecord{cname, txt}, nil } // UpdateRecord updates an existing record. func (m *Manager) UpdateRecord(id, rtype, name, content string) error { if err := m.api.UpdateDNSRecord(m.zoneID, id, cf.DNSRecord{ Type: rtype, Name: name, Content: content, }); err != nil { return err } log.Debugf("updated record %s -> %s", name, content) return nil } // Delete removes a record by ID from dns. func (m *Manager) DeleteRecord(id string) error { if err := m.api.DeleteDNSRecord(m.zoneID, id); err != nil { return err } log.Debugf("deleted record %s", id) return nil } // CreateDNSLinkName converts a subdomain into the Name format for dnslink TXT entries. func CreateDNSLinkName(subdomain string) string { return fmt.Sprintf("_dnslink.%s", subdomain) } // CreateDNSLinkContent converts a hash into the Content format for dnslink TXT entries. func CreateDNSLinkContent(hash string) string { return fmt.Sprintf("dnslink=/ipfs/%s", hash) } ================================================ FILE: email/email.go ================================================ package email import ( "context" "fmt" cio "github.com/customerio/go-customerio" logging "github.com/ipfs/go-log/v2" "github.com/textileio/go-threads/util" ) var log = logging.Logger("email") type Client struct { inviteTmpl string confirmTmpl string client *cio.APIClient } type Config struct { ConfirmTmpl string InviteTmpl string APIKey string Debug bool } func NewClient(conf Config) (*Client, error) { if conf.Debug { if err := util.SetLogLevels(map[string]logging.LogLevel{ "email": logging.LevelDebug, }); err != nil { return nil, err } } var client *cio.APIClient if conf.APIKey != "" { client = cio.NewAPIClient(conf.APIKey) } return &Client{ inviteTmpl: conf.InviteTmpl, confirmTmpl: conf.ConfirmTmpl, client: client, }, nil } // ConfirmAddress sends a confirmation link to a recipient. func (c *Client) ConfirmAddress(ctx context.Context, id, username, email, url, secret string) error { if c.client == nil { return nil } request := cio.SendEmailRequest{ To: email, TransactionalMessageID: c.confirmTmpl, Identifiers: map[string]string{ "id": id, "confirmation": "true", }, MessageData: map[string]interface{}{ "link": fmt.Sprintf("%s/confirm/%s", url, secret), "username": username, }, } if _, err := c.client.SendEmail(ctx, &request); err != nil { return err } log.Debugf("sent confirm address for %s to %s", username, email) return nil } // InviteAddress sends a confirmation link to a recipient. func (c *Client) InviteAddress(ctx context.Context, id, org, from, to, url, token string) error { if c.client == nil { return nil } request := cio.SendEmailRequest{ To: to, TransactionalMessageID: c.inviteTmpl, Identifiers: map[string]string{ "id": id, "email": from, }, MessageData: map[string]interface{}{ "link": fmt.Sprintf("%s/consent/%s", url, token), "org": org, "from": from, }, } if _, err := c.client.SendEmail(ctx, &request); err != nil { return err } log.Debug("sent invite to %s from %s to %s", org, from, to) return nil } ================================================ FILE: gateway/Makefile ================================================ ASSET_DIRS = $(shell find ./public/ -type d) ASSET_FILES = $(shell find ./public/ -type f -name '*') assets.go: ./public/ $(ASSET_DIRS) $(ASSET_FILES) go-assets-builder . -p gateway -o assets.go ================================================ FILE: gateway/assets.go ================================================ package gateway import ( "time" "github.com/textileio/go-assets" ) var _Assetsd049223eb2ab91ac66001a116d54e31249bb6996 = "\x00\x01\x00\x00\x00\r\x00\x80\x00\x03\x00PFFTM\x8d\x96\xb6\x16\x00\x02\x02\f\x00\x00\x00\x1cGDEF\x00*\x01\xbf\x00\x02\x01\xec\x00\x00\x00\x1eOS/2B\x0fV\x9a\x00\x00\x01X\x00\x00\x00`cmap\xf2\xaa\xef\xe1\x00\x00\b\x9c\x00\x00\x05\xdagasp\xff\xff\x00\x03\x00\x02\x01\xe4\x00\x00\x00\bglyf\x94:\x85a\x00\x00\x11\xec\x00\x01\xd5\xe4head\x17\a\x912\x00\x00\x00\xdc\x00\x00\x006hhea\x046\x03\xeb\x00\x00\x01\x14\x00\x00\x00$hmtxKc\x06\x89\x00\x00\x01\xb8\x00\x00\x06\xe4loca\xa2\xe5\x11V\x00\x00\x0ex\x00\x00\x03tmaxp\x02\"\x03O\x00\x00\x018\x00\x00\x00 name\x8e\x97\xb2\xcd\x00\x01\xe7\xd0\x00\x00\x05\x85post\x13,\xe7\x97\x00\x01\xedX\x00\x00\x14\x89\x00\x01\x00\x00\x01J\xc0\x83\xa8[\xf7\xb6_\x0f<\xf5\x00\v\x02\x00\x00\x00\x00\x00\xda\x15\xc8\v\x00\x00\x00\x00\xda\x15\xc8\x11\xff\xee\xff\xb6\x02\x85\x01\xe0\x00\x00\x00\b\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x01\xc0\xff\xc0\x00\x00\x02\x80\xff\xee\xff\xf1\x02\x85\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xb9\x00\x01\x00\x00\x01\xb9\x03L\x00'\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x01\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00\x04\x01\xeb\x01\x90\x00\x05\x00\x00\x01L\x01f\x00\x00\x00G\x01L\x01f\x00\x00\x00\xf5\x00\x19\x00\x84\x00\x00\x02\x00\x05\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00PfEd\x00\x80\xf0\x81\xf9I\x01\xc0\xff\xc0\x00.\x01\xcc\x00T\x00\x00\x00\x01\x00\x00\x00\x00\x01:\x01\xa5\x00\x00\x00 \x00\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\b\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x80\x00\f\x01\xc0\x00\x00\x01\xe0\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x01\x80\x00\x03\x02@\x00\x0e\x01\x80\xff\xff\x01\xc0\x00\x00\x02\x10\x00\x00\x01\x80\x00\x02\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xf0\x00\x00\x02\x00\x00\x06\x01@\x00\a\x01\xc0\x00\x00\x01\x80\x00\x03\x01\xc0\x00\x00\x02@\x00\x00\x01\xc0\x00\t\x02\x00\x00\b\x01\xc0\x00\x00\x01p\x00\x00\x01\xc0\x00\x00\x01\xf0\x00\x00\x02@\x00\x12\x02\x00\x00\x00\x02\x00\x00\b\x01\x80\x00\x00\x01\xc0\x00\x11\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\b\x01\xc0\x00\x00\x01\xc0\x00\x15\x01\xe8\x00\x00\x02\x00\x00\b\x01\xc0\x00\x00\x01\xf0\x00\b\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02@\x00\a\x01\xc0\x00 \x01\xc0\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x01\xf0\x00\x00\x01\xc0\x00\x00\x01\xf0\x00\x00\x01@\x00\x00\x02\x80\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\n\x01\xf0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x15\x01\xc0\x00\a\x02@\x00\r\x02\x00\x00\x01\x02\x00\x00\x18\x01\x80\x00\x01\x01\x80\x00\x00\x01\xc0\x00\x06\x02@\x00\x00\x02@\x00\x00\x02@\x00\x00\x02@\x00\x00\x02@\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x01\xc0\x00.\x01\xc0\x00\x00\x02@\x00\r\x01\xc0\x00\x13\x01\xc0\x00\x00\x02@\x00\x06\x02\x80\x00\x06\x01\xc0\x00\x00\x02\x00\x00\x04\x02\x80\x00\x00\x01\x80\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02@\xff\xff\x02\x80\x00\x00\x01\xf0\x00\x00\x02@\x00\x00\x02@\x00\x00\x01\xf0\x00\x00\x02\x00\x00\x00\x02\x00\x00\t\x02@\xff\xf9\x01@\x00\x01\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x00\x00\b\x01\xf0\x00\x00\x02\x00\x00\x02\x01\xf0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x1f\x01\xc0\x00\x06\x01\xc0\x00\x11\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x0e\x02\x00\x00\x19\x01\xd8\x00\x00\x01\xc0\x00\b\x02\x00\x00\x12\x02\x80\x00\x00\x02\x00\x00\b\x02\x80\x00\x01\x01\x80\x00\x00\x01\xc0\x00 \x01@\x00\x19\x02\x00\xff\xfd\x02\x00\x00\x14\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00 \x01\xc0\xff\xff\x01\xc0\x00\x00\x01\xf0\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xe0\x00 \x01\xc0\x00\x04\x01\xc0\x00\x00\x02\x00\x00\x00\x01\xf0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\n\x01\xc0\x00\a\x02@\x00\x02\x01\xf0\x00\x00\x01\xf0\x00\x00\x02\x00\x00\b\x01\x80\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\xff\xff\x01\xc0\x00\x00\x01\xc0\x00\x18\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\xff\xf9\x01\xc0\x00\x00\x01\xc0\x00\x10\x02\x80\xff\xfe\x02\x00\x00\b\x01\xc0\x00\x00\x02\x80\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x02\x00\xff\xfc\x02\x80\xff\xfe\x01\xc0\x00\x00\x02\x00\x00\b\x01\xf0\xff\xf0\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x01\x01\xc0\x00\x00\x01L\x00\x00\x02h\x00\x00\x02\x80\xff\xfc\x01\x80\x00\x00\x01\xb8\x00\x00\x02@\x00\x16\x02\x00\x00\x00\x01\xe0\xff\xff\x02\x00\x00\b\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xa0\x00\x00\x02\x80\xff\xfc\x01\xe0\x00\x00\x01\xc0\x00\x00\x01\xa0\x00\x00\x01\xe0\xff\xfc\x02\x80\x00\x00\x01@\x00\x16\x02\x00\x00\b\x01\x80\x00\x00\x01\x80\x00\x00\x02\x00\x00\b\x01\xc0\xff\xf1\x02P\x00\b\x01\x90\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x1c\x02\x00\x00\x00\x02\x00\x00\x19\x01\x80\x00 \x01\x80\x00\x02\x01\x00\x00\f\x01\xc0\x00\x00\x02\x00\x00\x00\x01\xc0\xff\xf5\x02\x00\x00\x19\x01\xc0\x00\x00\x01\x80\xff\xf9\x02\x00\x00\x17\x01\xf0\xff\xef\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x00\x02\x00\x00\a\x01\xc0\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x02\x01@\x00\x00\x02\x00\x00\x0e\x02 \x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x01\x90\x00\x00\x01\xf0\x00\x00\x02@\x00\b\x02\x00\x00\x00\x01\xc0\x00\x12\x01\xf0\x00\x00\x02\x80\x00\x00\x02@\xff\xfa\x01\xb0\xff\xfe\x01\xc0\xff\xfb\x01\xc0\x00\x00\x01\xf0\x00\x00\x01\xc0\x00\x00\x01\xf0\x00\x00\x02@\x00\x00\x01\xf0\x00\x00\x01\xc0\x00\x00\x01\xcc\x00\x00\x01\xf0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x04\x01\xb8\xff\xfc\x01\xc0\x00\x00\x02@\x00\x00\x02\x00\x00\x12\x02\x80\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x00\x02\x80\x00\a\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\f\x01\xc0\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\b\x02\x00\x00\x06\x01\x00\x00\x02\x01@\x00\x12\x02\x80\xff\xfd\x02@\x00\x00\x01\x80\x00\x19\x02\x80\x00\x00\x02\x00\x00\b\x02\x00\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfe\x01\xc0\x00\x00\x01\xc0\x00\x10\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x03\x01\x80\x00\x10\x02\x80\x00\x00\x01\x80\x00\a\x02\x80\x00\x00\x01\x80\x00\v\x01\xc0\x00\a\x02\x80\x00\x0e\x02@\x00\x00\x01@\x00\b\x01\xbe\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\f\x02@\x00\x00\x01\x80\xff\xf3\x02\x80\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x0e\x01\xc0\x00\x0e\x02E\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x01\xf0\x00\x00\x01@\x00\x19\x01\xf0\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x1b\x01\xf0\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xf0\x00\x00\x02\x00\x00\x1c\x02\x00\x00\x01\x01\xc0\x00\v\x01\xf0\x00\x00\x01\x80\x00\x0e\x01\xc0\x00\x13\x02\x00\x00\b\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x01\xf0\x00\x00\x02\x00\x00\x17\x01@\x00\x0e\x02\x80\x00\x00\x02\x00\x00\x1c\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x00\xff\xfe\x01\x80\x00\x12\x01\xc0\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02@\x00\x17\x02@\x00\x02\x02\x00\x00\x19\x02\x00\x00\x02\x02\x00\xff\xfe\x02\x00\x00\x17\x01\xc0\x00\x00\x02\x00\xff\xfb\x02\x80\x00\x00\x02\x00\x00\x18\x02\x80\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x14\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xf0\x00\x00\x02\x80\xff\xfe\x01\x97\xff\xff\x02\x00\x00\x00\x02\x00\x00\t\x01\xc0\x00\x15\x02\x80\xff\xfe\x01\xf0\x00\x00\x01\x80\x00\x04\x02@\x00\x1b\x01\xf0\x00\x00\x01\xc0\x00\x03\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\f\x02\x00\x00\x15\x01\x80\x00\x00\x02\x00\x00\a\x02\x80\xff\xfd\x02\x00\x00\x00\x02\x00\x00\b\x02\x00\x00\x02\x02\x00\x00\x1d\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\f\x02@\x00\a\x02@\x00\a\x02\x00\x00\b\x01\xc0\x00\x00\x01\xfe\x00\x06\x02\x00\x00\f\x02@\x00 \x01\xc0\x00\x01\x01\xc0\x00\x00\x02@\x00\x0f\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x1c\x00\x01\x00\x00\x00\x00\x04\xd4\x00\x03\x00\x01\x00\x00\x00\x1c\x00\x04\x04\xb8\x00\x00\x01*\x01\x00\x00\a\x00*\xf0\x82\xf0\x8c\xf0\x92\xf0\x9b\xf0\xd5\xf0\xe1\xf1\x13\xf16\xf1<\xf1Z\xf1i\xf1n\xf1q\xf1t\xf1~\xf1\x81\xf1\x84\xf1\x8d\xf1\x94\xf1\x98\xf1\x9b\xf1\x9e\xf1\xaa\xf1\xb7\xf1\xbe\xf1\xcc\xf1\xd7\xf1\xe9\xf1\xee\xf1\xf5\xf2\x03\xf2\t\xf2\x0e\xf2\x16\xf22\xf27\xf2>\xf2L\xf2^\xf2k\xf2n\xf2p\xf2~\xf2\x82\xf2\x8a\xf2\x94\xf2\x99\xf2\xa6\xf2\xae\xf2\xb4\xf2\xb8\xf2\xc6\xf2\xda\xf2\xde\xf2\xe0\xf3\\\xf3u\xf3}\xf3\x80\xf3\x85\xf3\x88\xf3\x8f\xf3\x97\xf3\x9a\xf3\x9f\xf3\xa4\xf3\xb2\xf3\xbd\xf3\xc0\xf3\xc4\xf3\xc8\xf3\xcc\xf3\xd0\xf3\xdc\xf3\xdf\xf3\xe4\xf3\xec\xf3\xef\xf3\xf3\xf3\xf9\xf3\xfe\xf4\x05\xf4\r\xf4\x17\xf4!\xf4#\xf41\xf4M\xf4R\xf4W\xf4Y\xf4\xd5\xf4\xe5\xf4\xf9\xf5\x14\xf5\x92\xf5\x9e\xf5\xa3\xf5\xa8\xf5\xb2\xf5\xb5\xf5\xbe\xf5\xc6\xf5\xcc\xf5\xcf\xf5\xf1\xf5\xf7\xf5\xfa\xf6\x0f\xf6\x12\xf6?\xf6B\xf6\x9d\xf6\xaf\xf6\xca\xf6\xcc\xf6\xdc\xf7\x04\xf71\xf7]\xf7x\xf7{\xf7\x85\xf7\x89\xf7\x8d\xf7\x91\xf7\x99\xf7\xb1\xf7\xb3\xf7\xbc\xf7\xc6\xf7\xd3\xf7\xd6\xf7\xe1\xf7\xe3\xf8=\xf8B\xf8\x9e\xf8\xa6\xf8\xca\xf8\xd2\xf8\xe1\xf8\xe8\xf9\a\xf9\x13\xf9\x1a\xf9\x1e\xf9I\xff\xff\x00\x00\xf0\x81\xf0\x8c\xf0\x92\xf0\x99\xf0\xd2\xf0\xe1\xf1\x13\xf16\xf1;\xf1Z\xf1g\xf1k\xf1p\xf1s\xf1y\xf1\x80\xf1\x84\xf1\x89\xf1\x94\xf1\x98\xf1\x9a\xf1\x9e\xf1\xa0\xf1\xb4\xf1\xbc\xf1\xca\xf1\xd0\xf1\xe7\xf1\xed\xf1\xf0\xf2\x02\xf2\b\xf2\r\xf2\x10\xf21\xf27\xf2:\xf2K\xf2^\xf2`\xf2m\xf2p\xf2|\xf2\x80\xf2\x84\xf2\x93\xf2\x96\xf2\xa5\xf2\xa9\xf2\xb0\xf2\xb8\xf2\xc4\xf2\xd5\xf2\xdd\xf2\xe0\xf3\\\xf3h\xf3x\xf3\u007f\xf3\x83\xf3\x88\xf3\x8b\xf3\x91\xf3\x99\xf3\x9d\xf3\xa1\xf3\xa6\xf3\xb4\xf3\xc0\xf3\xc3\xf3\xc6\xf3\xca\xf3\xd0\xf3\xd2\xf3\xdf\xf3\xe1\xf3\xe6\xf3\xee\xf3\xf3\xf3\xf5\xf3\xfe\xf4\x02\xf4\a\xf4\x11\xf4\x19\xf4#\xf4%\xf4M\xf4R\xf4W\xf4Y\xf4\xd5\xf4\xe4\xf4\xe7\xf5\n\xf5\x92\xf5\x9e\xf5\xa3\xf5\xa8\xf5\xb2\xf5\xb5\xf5\xbe\xf5\xc6\xf5\xcc\xf5\xcf\xf5\xf1\xf5\xf7\xf5\xfa\xf6\x0f\xf6\x12\xf6?\xf6B\xf6\x9d\xf6\xaf\xf6\xc9\xf6\xcc\xf6\xdc\xf7\x04\xf70\xf7]\xf7x\xf7z\xf7\x85\xf7\x89\xf7\x8d\xf7\x90\xf7\x97\xf7\xaf\xf7\xb3\xf7\xbb\xf7\xc6\xf7\xd3\xf7\xd6\xf7\xdf\xf7\xe3\xf84\xf8?\xf8\x9e\xf8\xa6\xf8\xca\xf8\xd2\xf8\xe1\xf8\xe8\xf9\a\xf9\x13\xf9\x1a\xf9\x1e\xf9I\xff\xff\x0f\x82\x0fy\x0ft\x0fn\x0f8\x0f-\x0e\xfc\x0e\xda\x0e\xd6\x0e\xb9\x0e\xad\x0e\xac\x0e\xab\x0e\xaa\x0e\xa6\x0e\xa5\x0e\xa3\x0e\x9f\x0e\x99\x0e\x96\x0e\x95\x0e\x93\x0e\x92\x0e\x89\x0e\x85\x0ez\x0ew\x0eh\x0ee\x0ed\x0eX\x0eT\x0eQ\x0eP\x0e6\x0e2\x0e0\x0e$\x0e\x13\x0e\x12\x0e\x11\x0e\x10\x0e\x05\x0e\x04\x0e\x03\r\xfb\r\xfa\r\xef\r\xed\r\xec\r\xe9\r\xde\r\xd0\r\xce\r\xcd\rR\rG\rE\rD\rB\r@\r>\r=\r<\r:\r9\r8\r7\r5\r3\r2\r1\r.\r-\r+\r*\r)\r(\r%\r$\r \r\x1d\r\x1c\r\x19\r\x18\r\x17\r\x16\f\xfb\f\xf7\f\xf3\f\xf2\fw\fi\fh\fX\v\xdb\v\xd0\v\xcc\v\xc8\v\xbf\v\xbd\v\xb5\v\xae\v\xa9\v\xa7\v\x86\v\x81\v\u007f\vk\vi\v=\v;\n\xe1\n\xd0\n\xb7\n\xb6\n\xa7\n\x80\nU\n*\n\x10\n\x0f\n\x06\n\x03\n\x00\t\xfe\t\xf9\t\xe4\t\xe3\t\xdc\t\xd3\t\xc7\t\xc5\t\xbd\t\xbc\tl\tk\t\x10\t\t\b\xe6\b\xdf\b\xd1\b\xcb\b\xad\b\xa2\b\x9c\b\x99\bo\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x06\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x02\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Z\x00\x8e\x00\xdc\x01\xa0\x01\xe8\x02\x14\x02\xda\x03B\x03\xb6\x04\x04\x04<\x04x\x04\xec\x05\x10\x058\x05X\x05\xca\x06\n\x06B\x06\x90\x06\xb8\x06\xec\a\x80\a\xb4\a\xd6\b\x04\b@\b\x8e\b\xd0\b\xee\t4\v\f\vr\v\xe0\f<\f\x88\f\xba\r\"\r\xbc\r\xf0\x0ef\x0e\x96\x0e\xe8\x0fd\x0f\xe0\x10\x0e\x10<\x10h\x10\xe6\x11p\x11\xbe\x12\x02\x12P\x12\x8e\x12\xee\x14\x06\x14\x86\x15\x1e\x15p\x15\xd4\x16:\x16\xa8\x17\f\x17.\x18*\x18l\x18\xb8\x19x\x1a\x00\x1a\xd6\x1b\x80\x1c*\x1cP\x1c\x98\x1c\xe6\x1d^\x1d\xde\x1e\b\x1e\x88\x1e\xf0\x1f6\x1f\xb4!F\"\x06$\n$\xf2%\xaa&\x1c&\xa0'\x04'\xbe'\xec)\x10)>)\x84)\xde*Z+x+\xb8,.,\x86,\xf4-\x1e-^-~0\x180b0\xe01l1\xbe2\x1e2J2\x823:3\x9e4\b4J4\xb85\xd46\x1e6\xfa767\x967\xe68\xae9>9R9\x909\xaa:\x18:\x94:\xd2;\x16;8;\xbc<2\x0e>j>\xb6?D?\xc4@0@\xacA>A\xd2BlB\xb8CTC\xa6D\xceE\x14EjF\"FnG\x12GFG`HhH\xdaIVJ\x04J\x8eJ\xc8K\x0eL8L\xa4M\x10M\x8aNlN\x98O\nOnP\x9aQ\x0eQ~R^R\xb8S\x04STTjT\xb4UFU\xc0V\x16V\xa8W\x18W~W\xbcX\bX:X\xfeY\xd2Y\xfeZ*\\v\\\xf8]d]\xa2^*^R^t^\xd2_D_\xba_\xdca(a\\a\x80a\xe0b\x14b~dbd\xa6eZe\x8ee\xfef`f~f\xaag\x16i\xd8k(k\\l\x0elLl\xa8m m|p8p\xc2q\x12qrr(rtr\xa8sZs\xf0tTt|u\x1euXu\xc8u\xe4v\x10vJvvw\x0ew\x9ew\xd4xZyPy\xc8z`z~z\xce{>|\xa2}\x00}T}\xcc~\x12~\x8a\u007f\n\u007fP\u007fڀ\n\x80\x82\x80\xe8\x81\x0e\x814\x81\xb6\x82\f\x82p\x82\u0383\xf8\x84H\x850\x85Z\x85\x96\x85\xb6\x86^\x87\x00\x88\x96\x89\x04\x89\xfa\x8aJ\x8a\U0010b08cF\x8c\xba\x8d<\x8d^\x8dr\x8e\x18\x8eƏ \x90\xa6\x91*\x92\x8c\x92\xb4\x93\xac\x95@\x95^\x95\x82\x96\x80\x98\x18\x98X\x98v\x99\\\x99v\x9a\x1a\x9aL\x9a\x82\x9c\"\x9d\xbe\x9dԞ\x04\x9e6\x9e\x84\x9e\x9e\x9fJ\xa0\x06\xa0B\xa0ġ\xa6\xa2\n\xa2L\xa2\xae\xa3\x1a\xa3n\xa3\xa0\xa3\xf4\xa4H\xa4\xa2\xa4\xf8\xa5\x94\xa62\xa6\x8a\xa6\xe0\xa7n\xa8B\xa8Ʃ0\xa9\xba\xaaV\xaa\xf0\xab\x1c\xabĬ\xc0\xadd\xaf\xf6\xb4X\xb5\x04\xb5T\xb6 \xb7\\\xb8(\xb9̺\f\xbaP\xba\x8e\xba\xe2\xbbX\xbbȼ<\xbc\xe4\xbd\x18\xbd\x80\xbd\xac\xbd\xe2\xbe(\xbe\xf6\xbfN\xc2\xe2Þ\xc7>ɴ\xca\fʎ\xcb\"\xce\xc8\xce\xea\xd1\xc0\xd1\xdc\xd2\x02\xd26Ҝ\xd32Ӟ\xd4\x18\xd4V\xd4\xd8\xd5\xf6\xd6,֔\xd7\b\xd70\u05ec\xd9\xcc\xda\x18\xdaVچ\xdbN\xdb\xc6\xdc\\\xdc\xcaݦ\xde\x16\xdf0ߌ\xdf\xe8\xe0&\xe0\xce\xe1\x88\xe3V\xe3\xa6\xe4\\\xe4\xf0\xe5l\xe5\xb2\xe6\x14\xe6\xc0\xe7.\xe7\xa0\xe7\xde\xe8\x88\xe9\x00\xe9\xba\xea2\xea\x8a\xea\xc4\xea\xf2\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00;\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0567\x06\a67\x06\a&#\"\x06\x17&'\x06\x15\x14\x1e\x01\x17&'\x15\x14\x16\x17\x06'\x1e\x013\x06#\"'\x1632>\x0154\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01/\x13\x0e\x13\x13\x15\b\x14\x16\x13\x1c\x1f(\aS5\t\b\x0e\b\x10\x0e\x1e\x17\x0e\x10\x06\"\x15$-\t\a.79X)\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x9f\x0e\x14\b\x02\r\x17\f\x04\x150!\x05@\x0f\x12\n\x15\x12\x06\x01\b\x01\x18$\x05\x03\x02\x14\x19\x1c\x01\x1e:T-\x05\x00\x00\x00\x01\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00$\x00\x00\x012\x16\x15\x11\x14\x06+\x01537#54;\x015&#\"\x0e\x01\x1d\x01#\x153\x15#\"&5\x11463\x01\x90\x14\x1c\x1c\x14\x89:\vE(\x1f\x1c\x1b\x1d)\x18??\x89\x14\x1c\x1c\x14\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x98H/&=\x05\x16,\x1e7H\x98\x1c\x14\x01`\x14\x1c\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x14\x00\x1c\x005\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x1335#\x156264&\"\x06\x14\x0154.\x02#\"\x06\a#5#\x15354632\x1e\x02\x1d\x01\x01\xa0\r\x13\x13\r\xfe\x80\r\x13\x13\rg\x01C\x11 \x17\x17 \x16\x01@\x06\x10!\x18\x17!\a\x01@C\x10\x17\f\x10\x05\x02\x01\xa0\x13\r\xfe\x80\r\x13\x13\r\x01\x80\r\x13\xfe\x80\xd6\xd6\xf3\x17\x1f\x17\x17\x1f\xfe\xf6u\x18\"\x1d\x0f\x14\x0e\x1d\xd6j\x19\x1e\n\x14\x0f\fh\x00\x00\x00\t\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00V\x00[\x00c\x00i\x00p\x00w\x00}\x00\x85\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x13>\x0154&#\"\x06\x15\x14\x16\x17\x1654&5\x0e\x01\".\x01'&'0'43\x16\x17\x16767.\x03547&76\x16\x1f\x0162\x17>\x02\x17\x16\a\x16\x15\x14\x0e\x02\a\x16\x15\x1c\x01\x15\x14&\x06&36\a4#\"\x15\x1432&\x06'&6\x17'6&\a\x06\x17\x16'6'&\a\x06\x16&6'&\x06\x17'6'\"\a\x06\x17\x16\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\xe52=aEE]>2\f\x01\x02\x06\x11\x0e\x0e\x03\a\v\a\b\x10\t\x11 \x02\b\x12\x14\x19\v\x10\t\n\x06\x17\t\b\x14+\x14\x04\v\x19\x06\n\b\x11\f\x1a\x14\x12\vS\a\x01\x03\x04\f\x04\x04\x04\x04\r\x02\x03\x04\x02\x03\t\x01\x05\x02\x01\x02\x03\a\x02\x02\x02\x02\x02\x04\x06\x03\x02\x02\x03\x02\x04\x01\x02\x02\x01\x01\x03\x02\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\x80\x11W7D]]D7W\x11\x02\n\x01 \b\x01\x01\x03\n\t\x13\x05\a\x03\x01\x10\x1d\x0f\x0f\a\x02\x05\x0e\x1e\x16\x16\x11\x14\x19\x02\t\x05\x05\x05\x05\x02\a\n\x02\x18\x15\x12\x15\x16\x1e\x0e\x05\x02\t\x15\x0e)\x01\n@\x01\x05\x01\x05\x03\x03\x02\x06\x05\x01\x01\x05\x01\x02\x01\x06\x02\x02\x03\x02\v\x01\x03\x03\x02\x01\x05\t\x03\x02\x02\x03\x02\a\x01\x02\x01\x01\x01\x02\x00\x00\x00\x01\x00\x00\xff\xf0\x02\x00\x01\x90\x000\x00\x00\x01\x16\x15\x14\x0e\x02#\"'\x16327\"&'\x16327.\x02=\x01\x16\x17&547\x1e\x01\x17&54632\x1767\x06\a67\x06\x01\xcb\x01(ItFXI\v\x0eI:#5\n\n\t\x0e\x0e\x18&\x16\x16\x19/\x0f'q@\x02=+.\x1f$\x1f\f\"\x1e\x1e\x16\x01(\x04\t5iW6/\x01-)\x1f\x01\x03\x05\x1e+\x19\x02\r\x01 8\x1c\x191:\x03\f\f+>!\a\x12%\x15\x04\r \x00\x01\x00\b\xff\xcb\x01\xf8\x01\xb8\x00\x1e\x00\x00%\x14\x06\a537#54;\x015&#\"\x0e\x01\x1d\x01#\x153\x15.\x015462\x16\x01\xf8xY:\vE(\x1f\x1c\x1b\x1d)\x18??Yx\x91Α\xc0\\\x8b\x0e\xadH/&=\x05\x16,\x1e7H\xad\x0e\x8b\\g\x91\x91\x00\b\x00\x00\xff\xd3\x01\xf0\x01\xb8\x00\a\x00\x0e\x00\x14\x00e\x00m\x00u\x00}\x00\x84\x00\x007\x14#\x065436\x066\x17\x16\a\x06'72\x16\a\x06&\x132\x1e\x01\x15\x14\x06\a\x06&5<\x0154'>\x0454&'6'&\x06\x0f\x01&\"\a.\x02\a\x06\x17\x06\x15\x14\x1e\x03\x17\x06\a\x0e\x01&'.\x01/\x01\"\x17\x1e\x01\x1f\x01\x1e\x022?\x01\x14\x16\x15\x14\x06'.\x01546\x036\x17\x16\a\x06'&'6\x17\x16\a\x06'&\x176\x17\x16\a\x06'&'6\x17\x16\a\x06&\xa6\x05\x06\x05\x06!\x03\x05\x05\x01\x01\x05(\x05\x01\x05\x05\x01GDtC]K\b\t\x11\x16\x18$\x13\x0e\f\x0e\f\x0e\n\"\r\f\x1fA\x1e\x05\x12%\t\x0f\f\x17\x0e\x12\"\x19\x15\r\x03\n\x15 \n\x06\x13\a\x06\x16\x14\a\x0e\x03\x04\x04\x14\x18\x16\a\a\x01\t\bL^\x8d,\x02\x03\x03\x02\x02\x03\x03\t\x02\x03\x03\x01\x01\x03\x04\"\x02\x04\x04\x02\x03\x04\x04\t\x03\x03\x03\x03\x03\x053\x04\x01\x05\x03\x01\x04\b\x02\x01\x04\x04\x02\a\x06\x02\x01\b\x01\x80@pDS\x83\x19\x02\b\x06\x01?\x14 \x0e\x03\x04\x0e\x16(\x1c\x13\x18\x0f\x1f%\x03\r\b\t\t\t\x04\v\x0f\x03%\x1f\x19!\x1c(\x16\x0e\x05\x02\f\x16\x04\x04\f\x11\v\r\x01\x01\x0f\x04\x12\a\b\f\x10\x04\x01\x01\f0\x01\x06\b\x02\x19\x83Sh\x8c\xfe\xa7\x02\x03\x03\x02\x02\x03\x03\n\x02\x01\x02\x02\x03\x02\x02!\x03\x04\x04\x03\x03\x04\x04\x11\x03\x05\x04\x02\x02\t\x00\x01\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00J\x00\x00\x00\x14\x06#\"'6?\x01\x1e\x0132654&#\"\x06\x15\x14\x16\x17\x167>\x0176'&54632\x16\x15\x14\x0e\x01#\"&7>\x0254.\x01#\"\x06\x15\x14\x1e\x04\x15\x17\x06\a\x06\x17.\x015462\x01\xf0\x91g&#\x18\x06\x10\x06 \x137IXALW\x1c\x16\a\x01\x01\x05\x01\x01\x03\x12=3.:\x15$\x15\x13\x16\x04\x02\f\x06\x06\x0f\n\x13\x1a\x01\x01\x02\x01\x02\x01\x19\x05\x05\x05GW\x91\xce\x01'Α\v(\x19;\f\x10YA=RX>\x1d9\n\x03\x06\x02\x17\x03\x04\x03\x17\"+A9,!4\x1d\x1b\x12\n$\x1b\n\t\x10\t\"\x1a\x04\t\a\a\x04\x04\x01\x01g\x14\x19.\x1b~Ng\x91\x00\x01\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00R\x00\x00\x01\x11\x14\x06+\x016?\x01\x1e\x0132>\x0154&#\"\x06\x15\x14\x16\x17\x1674676'&54632\x16\x15\x14\x0e\x01#\"&7>\x0254'&\a\x06\x15\x14\x1e\x02\x1f\x01\x0e\x05\x16\x1f\x01#\"&5\x11463!2\x16\x01\xc0\x1c\x14\xf6\x16\x06\x0f\x06 \x12%:!WAKW\x1c\x16\a\x01\x06\x01\x01\x03\x12=2-:\x15#\x16\x12\x16\x04\x02\v\a\x19\x1b\x0f\b\x01\x02\x02\x01\x01\x05\r\x05\a\x01\x01\x01\x01\x03Y\x14\x1c\x1c\x14\x01`\x14\x1c\x01p\xfe\xa0\x14\x1c$\x17;\f\x10(F*=QW>\x1c8\v\x03\a\x01\x16\x04\x04\x03\x17!+@8, 4\x1c\x1a\x12\v#\x1b\t\x1e\x04\x04\x1c\x0f\x14\x06\f\t\x06\x02\x02\x157\x14 \f\x16\x11\r\x01\x1c\x14\x01`\x14\x1c\x1c\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00+\x007\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x132654'#\x153\x0e\x01#\".\x0154632\x177&#\"\x06\x14\x16%5#5#\x15#\x153\x1535\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14t+5\x02^9\x03\x1c\x1a\x11\x1c\x11$\x1a\x18\x10\x1b\x1c');;\x01\x05\x1d\x1d\x1d\x1d\x1d\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xbc6,\b\b\"\x0f\x1c\x11\x1d\x11\x1a%\x0f\x1a\x1a;R;R\x1d\x1d\x1d\x1d\x1d\x1d\x00\x02\x00\f\x00\x00\x02t\x01\x80\x00\x1b\x00'\x00\x00%\x16\x15\x14\x06#\"&4632\x17\a&#\"\x0e\x01\x15\x14\x163267#5\x053\x15#\x15#5#5353\x01\x82\x03fRPppPK54\x1e. 7 F126\x05m\x01n888778\xdc\x11\x0fSip\xa0p22\x1d 8!2G6\x1cC\a88888\x00\x03\x00\x00\x00\x00\x01\xc0\x01\xc0\x00\x03\x00\x0f\x00(\x00\x003#\x113'\"&4632\x1e\x01\x14\x0e\x01\x01#54.\x02#\"\x06\x1d\x01#\x113\x153>\x0132\x1e\x02\x15d]].\x16 \x16\x0e\x19\x0f\x0f\x19\x01|]\x02\b\x15\x11!\x17]Z\x01\n. \"-\x17\t\x01+) , \x0e\x19\x1d\x19\x0f\xfe\xac\x92\x11\x15\x1b\x0e*#\x94\x01+)\x14\x1d\x15)0!\x00\x00\x04\x00\x00\x00\x00\x01\xe0\x01\x80\x00\n\x003\x00L\x00T\x00\x006\x14\x06#\".\x015462\x05\x14\a\x0e\x05#*\x01.\x04'&547&5472\x16\x17632\x17>\x013\x16\x15\x14\a\x16\a4&#\"\a\x06\"'&#\"\x06\x15\x14\x1e\x03;\x012>\x02&2\x16\x14\x06\"&4\xba\x13\x12\f\x11\a\x13#\x019\x12\t\x1b) 7\x18\x1c\x1c\x0f6\x18-\x18\x1c\b\x14*\b\x0e#1\x19*/*&\x191\"\x0f\b'@(\"\f,\x150\x15+\r\"(\x13\x1c*&\x180\x1e0/\x1ad#\x13\x13#\x14\x8a&$\x14\x18\v\x13$\x04;$\x13\x1b\x10\t\x03\x01\x03\x04\v\x10\x19\x10(7A0\x18\x19\x17\x1d\x10\x14\n\t\x14\x0f\x1d\x17\x19\x17.w#0\x06\x03\x03\x060#\x19&\x15\r\x04\a\x14+V$&$$&\x00\x00\x01\x00\x00\x00\x05\x02\n\x01{\x00\x13\x00\x00%#76&+\x01\x03#\x13#\x03#\x13'!2\x17\x16\a\x01\xcda4\x03\x10\x101$%\r\x05\xf3\x10\x13\xfe\xea\x01\x16\xfe\xea\x01\x16`--=\x00\x02\x00\x00\xff\xe0\x01\x80\x01\xa0\x00\x04\x00\x15\x00\x00\x11!\x03\a'\x017#\x173\x0f\x01/\x01#\x1f\x013?\x01#'\x01\x80#\x9d\x9d\x01\x11\x05\xf1\f\xa7\x0656\x04/\x06c\x01a\x0e\xb0\x04\x01\xa0\xfet44\x01\f0\x92>\x0e\x0e&L\x1b\x1b\x951\x00\x01\x00\x00\xff\xe0\x01\xe0\x01\xa0\x00\x0f\x00\x00\x01\x03\a'73\a\x17?\x01!7!7!7\x01\xe0@\xdf\xc1\x14R\bt\x86\x13\xfe\xb3\x10\x01M\v\xfe\xb2\x11\x01\xa0\xfe\x90PP_),,aR5R\x00\x03\x00\x03\xff\xc0\x01\x84\x01\xc0\x00.\x00A\x00T\x00\x00%\x16\a\x0e\x01\a\x15#5\"#\x15#5\"#723\x16>\x0175.\x01\a\"#5\x16753\x156353\x15\x1e\x04\x17\x16'\x152\x1662>\x0454.\x04\x06\a2\x16>\x0654.\x04\x06#\x016M\a\x06GB1\x19\r1\tX\n\x03\a\x11\r\f\x01\x03\x17\x1d\x05\x03T\r1\x19\r1\x13 \x1d\x14\r\x01\x06\xce\x01\x13\n\x15\x0e\x13\f\v\x06\t\x12\x11\x1b\x0f\x1a\x01\x01\x17\f\x19\x10\x16\x0e\r\a\v\x15\x13!\x10 \x01\xcd\x12R5,\x04DCCD:\x01\x01\b\b\xd9\x10\a\x014\x01\x01ON\x01MO\x02\a\f\x12\x1b\x10:T`\x01\x01\x03\x04\b\n\x0e\t\f\x11\v\x06\x02\x01\x01\xfb\x01\x01\x01\x03\x04\t\n\x10\n\r\x13\v\b\x02\x01\x01\x00\x00\x00\x00\x02\x00\x0e\x00\x00\x022\x01\x80\x00$\x00'\x00\x00\x01\x1e\x03\x1d\x01\x14\a\x0e\x01\a\x0e\x01\a#\"'&'.\x01'547>\x017>\x01732\x17\x1e\x01\x057'\x02&\x03\x05\x02\x01\v\x05\x1a\x12\x13j,,\xab*'\n\x05\x05\x01\v\x05\x1a\x12\x13j,,\xab*\x12\x1a\xfeǏ\x8f\x01D\f$#\x1e\n\tZ+\x11\x1a\x05\x05\x05\x01\v\v%\x13C\x17\x18Y+\x12\x1a\x05\x05\x05\x01\v\x05\x1a\xe8RQ\x00\x02\xff\xfe\xff\xdf\x01\x82\x01\xa0\x00\x10\x00#\x00\x0070\a\x06+\x01\"&?\x01'&6;\x012\x17%\a\x17\x16\x06+\x01\"/\x01>\x0276;\x012\x16\xa3F\b\nA\x06\x05\x02E,\x03\x06\x06A\v\a\x01\t\x90[\x03\x05\x06B\v\a\\\x01\x1fH)\a\nB\x06\x05\xee|\f\t\x05zL\x05\t\fV\xfd\xa7\x05\t\f\xa9\x026\u007fH\f\t\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00 \x001\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x132767'&+\x01\"\x06\x1f\x01\a\x06\x163%6&+\x01\"\a\x06\a\x17\x16;\x0126/\x01\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\\\b\x050\x02 \x05\b.\x05\x03\x02\x1f1\x02\x04\x04\x01\n\x02\x04\x04/\a\x05f\x02B\x05\b/\x04\x04\x02B\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xe0\tU\x037\t\x06\x046W\x04\x06\xd6\x04\x06\t\xb3\x03x\t\x06\x04w\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x02\x10\x01\xa0\x00\a\x00\v\x00\x13\x00\x00\x01\a\x17\a'7'7\x117\x17\a57'7\x17\a\x17\a\x01\b\x84\x84\x84\x84\x84\x84\x84\x84\x84\x84\x84\x84\x84\x84\x84\x84\x84\x01LUTTUTTT\xfe\x94UUT\xc4TTTTUTT\x00\x00\x06\x00\x02\xff\xe0\x01~\x01\xa0\x00\x03\x00\a\x00\v\x00\x0f\x00\x13\x00\x1b\x00\x00%\a'?\x01\a'7\x17\a'?\x01\x17\a'\x13\x15#5\x1753\x15!53\x15\x01#\t\xc3\b\xf7\x1a\x99\x19z\x10\xb6\x11\x85w w4\xc8\xf0(\xfe\x99(\x89')'.\x1f\x81\x1e\xa8$T%\x93\xa0\x18\xa0\xfe\xd0((Px\xa0\xa0x\x00\x00\x00\x00\x05\xff\xff\xff\xe0\x01\xc1\x01\xa1\x00\a\x00\x0f\x00\x17\x003\x00k\x00\x00\x122\x16\x14\x06\"&4\x16264&\"\x06\x146\x14\x06\"&462\x17\x16\x14\a\x0e\x01\a\x06\"'&'.\x025&47676762\x17\x1e\x01\x03>\x02<\x04.\x01'&'.\x02*\x01#*\x02\x0e\x01\a\x06\a\x0e\x02\x1c\x01\x15\x1c\x02\x1e\x02\x17\x16\x17\x1e\x02:\x013:\x02>\x0176\xb0`CC`CT>,,>,\xdd\x0f\x16\x10\x10\x16\\\x01\x01\x03C=\x1b\x82\x1b=!\r\x10\a\x02\x02\x03!!=\x1b\x82\x1b=C-\x03\x04\x02\x02\x04\x03\f\x1f\b\x19#\x15)\x02\x02(\x16#\x19\b\x1f\f\x03\x04\x02\x01\x02\x04\x02\r\x1e\b\x19#\x15)\x02\x03'\x16#\x19\b\x1f\x013C`CC`{,>,,>\xa2\x16\x10\x10\x16\x0f6\x1b\x82\x1b=C\x02\x02\x02\x03!\f \x1e\x14\x1b\x82\x1c\x0176;\x012\x1d\x0132\x1d\x01\x14+\x01\x15\x14\x1676\x17\x16\x1f\x01\x16\x016\f5!*>\x1e\r/\n\v*(\x03\x01\x0fF\nT\n\nT#!\t\x04\x05\x02\x16\x04 \r\x13\x1c.,\x17\x90\nD\f\x04\x0eB%\x10\ns\nR\n\x85\x1b\x15\f\x04\x02\x01\a@\n\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x007\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x016/\x01&'&\a\x06&=\x0132=\x014+\x0154+\x01\"\a\x06\a\x06\x1d\x01\x14;\x01\x15\x14\x1e\x0232\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01\x0e\x02\x02\x0e\x01\x03\x03\x05\x15\x164\x06\x064\x06,\t\x01\x041\a\x06\x1e\b\x13&\x1b*\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\x94\x02\a(\x04\x01\x01\x02\b\r\x11S\x064\x06H\x06\n8\x11\x03\a+\x06Z\x0e\x1c\x1c\x12\x00\x02\x00\x03\xff\xdf\x01}\x01\xa0\x00\x1f\x00(\x00\x00%\x14\x17\x0e\x01\a\"&#\"\x06#\x06.\x01'&54672\x1632>\x02\x17\x16\x17\x06'\x06'&7>\x017\x16\x01?=\f: \x0e.\x11\x11/\v\x161\x1d\b\x0eE.\x0f8\x06\x04\x15\x16\x1d\f9\x1c38 %\x04\x1d\f&\x12\x03\xb3?\x1d&P\x01\x12\x12\x0126\x16*'?F\x01\x14\a\t\x06\x01\x05(\x1en&\x03( \x0e\x14\x01(\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00\a\x00\v\x00\x0f\x00\x00\x117\x15#\x1553\x15\x1753\x15\x037\x15#\xb8\xb8\xb8\x14\xf4\xf4\xf4\xf4\x01b\x1a\xb2\xac\x96\xb0\x02\xb2\xd4\x01\x9e\"\xd6\x00\x00\x00\x03\x00\x00\x00@\x02@\x01\x86\x00\a\x00\x0f\x00-\x00\x00$\"&462\x16\x14\x04\"&462\x16\x14?\x01654#\"\x0f\x01.\x02#\"\x06\a'&#\"\x15\x14\x1f\x01\x0e\x01\a!.\x01\x01\xae\x13\x0e\x0e\x13\x0f\xfe\xe8\x13\x0f\x0f\x13\x0e\xfa0\x02\n\x06\x031\x10,-\x12\x1bH\x181\x03\x06\n\x020?N\x06\x02@\x06N\x92\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x83S\x02\x03\n\x05U\b\f\a\x10\vU\x05\n\x03\x02S\"xIIx\x00\x00\n\x00\t\xff\xbd\x01\xb5\x01\xc1\x00\v\x00\x19\x00k\x00~\x00\x90\x00\xa8\x00\xc4\x01\n\x01)\x01C\x00\x00\x13#'476\x17\x16\x14#\"&\a\"5476\x172\x06\a\"10\x06\x13\x16\x15\x06\a\x0e\x02\a\x06\a\x06'&'\x06&\a\"\x0e\x02#\x06\a\x06'.\x02'&'&76'&5476767>\x017&767674.\x01>\x0232\x1e\x02\x06\x17\x06\x1e\x01\x17\x16\x17\x16\a\x16\x17\x16\x17\x16\x17\x16\x03\x06\x17\x16\x17&63\x1e\x01\a\"\a\x16\x176'&\"\a\"\x06\x1760'&672\x1e\x01\x15676&\a\x06\x17\x16\x17\x1e\x023\x1667676'.\x01'&#\"\a\"\x036&/\x01&'&\a\x0e\x01\a\x06\a\x06\a\x06\x17\x16\a\x06\x17\x1e\x02\x17\x1665\x16676567676\x17\x16\a36'6'&'\"\x17\x1e\x01\a&#&'&'\x06\a\x0e\x02\a\x06'.\x01'&'\x0e\x04\a\x06\a&76\a\x06\a\x06\x17\x16\x17\x16\x17\x16\a\x06#\x16%4'.\x02'&\a\x0e\x01'&'\"1\x06\a\x06\a\x14\a\x06\x17\x16767>\x02\x03&72\x161\x16\x17\x1632767>\x01\x172\a\x06\a\x06#\"'&\xdd\x02\x02\x01\x02\x04\x03\x03\x01\x02\x16\x03\x03\x04\x02\x01\x01\x02\x01\x02\xdc\x10\x01\r\x05\x17\x11\x06\x16\x1b\x1b\r\x01\x01\f%\a\a\x0f\n\f\x04\a\x13\x19\x1f\b\x15\x18\x06\x0f\x05\x05\a\x02\x03\x01\x03\x05\r\x0e\x04\x01\v\x04\x04\n\x0f+\x14\x03\x02\x01\b\x0f!\x19\x17 \r\b\x01\x01\x01\f\n\f!\r\x11\r\x02\x02\x02\x02\a\x04\x04\xc1\x05\x02\b\x05\x02\b\x06\x06\x06\x03\x01\x03\t\x03\x0f\n\b\x1d0\x0e\x06\f\x06\x01\x05\x01\x06\x03\x05\x02\x04\x06\x01\f\x16\x06\x02\x03\f\x03\r\b\x06\n\x1a\x02\x12\x04\x05\x0f\x04\x0f\x04\x0e\f\f\x0f\x01\n\x01(\x02\x14\n\f\n\b\x02\t\x03\x06\r\v\x04\x03\x02\x03\x02\a\x04\x03\x19$\f\x182\x1f9\x1b\x06\x02\x03\x05\x10\x03#\x1c\x05\x05\x06%\x04\x05\b\x1b\x04\a\r\x13\t\x06\x05\x05\x12\x19\r\a\x0f\x02\x05\a\x02\x18\x12\x01\t\x03\x02\x04\x01\x05\v\b\f\x02\r\x01\x18\x1b\f\x04\x16\x05\x05\x05\x06\x13\x19\r\v\x03\x04\r\n\x01\x06\x0e\x04\x05\x04\x04\a\x10\x06\x17\t\x11\x02\x01\n\x04\x02\x02\n\x06\x05\v\x17\x18\x14\t \x15\xff\x04\x03\x01\x03\x05\x03\f\f\f\x12\x02\f\x02\x03\x01\x04\a\a\b\x14\v\x0e\x0e\x03\x01E\x01\x01\x01\x01\x02\x01\x03\x02\x02\x01\x02\x01\x02\x02\x01\x01\x02\xfe\xe9\x12\f\n\b\x02\v\f\a\x1a\x02\x02\x19\x03\x04\x01\x06\x01\x03\x02\x02\x10\x04\x06\x11\x04\x04\x03\x01\x03\t\v\x15\x05\x10\b\x04\a\x05\n\x05\x05\x03\x02\x0f\x03\x18\x1d.3\x1c%\x05 \x19\"\x17\x10\x13\x1d#\"\x0e\x0e\x1c\x10\x0e(#*%\x01\x01\x01\x02\x05\x11\x10\x019\v\v\x02\x03\t\x0f\x01\x12\t\x04\x03\x02\x11\x17\x10\x05)\v\x05\x01\x05\x16\x01\x06\t\x05\x03\x02\x0e\x13<\x05\b\b\a\x02\v\x04\x01\x0f\x01\x05\r\f\x06\x02\x05\x02\t\x0e\xfe\xa8\v5\x04$\x0e\x02\x02\t\x02\r\x03\x05\x05\x04\a\x06\x0e\x12\x06\x13\b\x06\x04\x05\x06\x0f\b2\x11\x06\x13\x15\b\x1c\f\x15\x06\x1c\x10\f\x0e\x14\x0f\x11\x13#\x18\a\f1\x18\x02\x1f!.2\n\x05\x01\x02\x05\x01\x0e\x0f\x01\b\x01\x02\x03\v\x19\x1a\x14\x1b\x04\x1f\x1f 3\x16\x01$\x18\x13\x10\x12\f\x0e\x12\x0f\n\t\f\x04\t\x10\x04\x12\x10\x03\x06\x01\a\v\x02\x04\x19\x05\x10\v\x1c\x03&\x17\r\x15\x02\x02\x17\v\x11\f\x01#\x04\x03\x05\x05\x02\n\n\x02\b\x01\x05\x01\x06\a\x04\n\n\x03\x00\a\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x11\x00\x1a\x00\"\x00.\x006\x00<\x00\x00\x122\x16\x14\x06\"&4%\x0e\x02\a\x16\x176\x17&'.\x01\a\x16\x17>\x02'\x0e\x02\a\x167&\a\x14\x17>\x027&'\x06'\x14\x17\x1e\x017&'\x0e\x01\x1767&\a\x16\x99Α\x91Α\x01\x9c\x06\x13:#\t\tIK\x01G'd3+$\"7\x11\xe1\x1e0!\x06^e$\xa47\x116H%\a\nlnR.t3\r =Y\xe6M\x0e?E\x1d\x01\xb8\x91Α\x91\xce\x1f\b\x14*\x0e\x14\x16\n\x10JR#\x19\f9C\f&\x13(\x0e,9!\x01\x1bA\x86R<\x1e8.\n\x12\x12 \x02\x03\xaa%\x0e\x17MS\x14K.4Z\x14\vP\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc1\x01\xa0\x00\x1b\x00S\x00\x00%\x16\x15\x14\x06#\"'\x06#\"&547&54632\x17632\x16\x15\x14\a2654'&'.\x035432\x1e\x0132>\x0254&\"\x06\x15\x14\x1e\a\x17\x1e\x02\x15\x14\x06#\".\x02#\"\x06\x15\x14\x16\x01\xa9\x17B.&\x1e\x16\x16Ux\x04\x17B.&\x1e\x16\x16Ux\xc7-C[\x05\v\x11\x0e\x11\x05*\x14\x19\x13\v\a\f\a\x05DWA\x03\t\b\x12\t\x19\n\x1f\x05\x11\f\r\x18\x13\x12\x1c\r\x13\n\x0e\x0fG\x94\x1e&.B\x17\x04xU\x15\x17\x1e&.B\x17\x04xU\x15r-)9\x15\x01\x02\x04\x04\a\b\a\x16\x10\x11\x05\t\v\a\x18\x1f()\v\x12\x0e\n\n\x06\a\x03\a\x01\x05\x03\v\t\f\x0f\x0e\x11\x0e\x11\r\x1b&\x00\x02\x00\x00\xff\xb6\x01t\x01\xbd\x00\x16\x00?\x00\x00\x012\x16\x0f\x01\x0e\x03+\x01\"\a\x06\a\x06'&5\x11463\x056&+\x01\"\x06\x15\x11\x14?\x01>\x01;\x012>\x017676&+\x01\"&=\x014>\x02;\x012>\x025\x01C\x1d\x14\a0\x02\x04\t\x11\rS\x04\x03\x02\x81\r\x14\x12\x19\x19\x01\x01\x01\b\a\xdb\a\t\x02Y\a\t\vI\x05\a\x04\x01\x04\a\x02\n\aZ\t\v\x03\x05\b\x04j\x03\x06\x05\x03\x01\xbd !\xf3\t\b\x10\a\x03\x03\x95\x0f\b\a\x17\x01\xb2\x11\x1dJ\a\v\v\x06\xfe\xad\x02\x02l\b\x05\x05\x06\x02\x16%\a\v\f\t\r\x04\b\x05\x03\x03\x03\x05\x03\x00\x00\x00\x03\xff\xff\xff\xe0\x01\xc0\x01\xa0\x00\x12\x00#\x005\x00\x00\x012\x16\x15\x11\x14\x0e\x01#!\"&54=\x01463\x1354&+\x01\"\x06\x1d\x01\x14\x1e\x01;\x0126754&+\x01\"\x0e\x01\x1d\x01\x14\x1e\x01;\x0126\x01\x88\x17!\x0f\x1a\x0f\xfe\xb0\x17!!\x17\x8d\x10\vS\v\x10\b\f\aS\v\x10\xc1\x10\vQ\a\r\a\b\f\aQ\v\x10\x01\xa0!\x17\xfe\xb0\x0f\x1a\x0f!\x17\xab}(\x17!\xfe\xad\xfe\v\x10\x10\v\xfe\b\f\a\x10{\x8e\v\x10\b\f\a\x8e\b\f\a\x10\x00\x00\x00\x02\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x1b\x00\x00\x122\x16\x14\x06\"&4\x05>\x02&'&\x06\a\x0e\x01'.\x01\a\x0e\x01\x16\x1f\x01\x91Α\x91Α\x01k\x03\x05\x01\f\v\x17!\f\f&\f\f\"\x17\x0e\n\x06\x05q\x01\xb8\x91Α\x91\xceQ\x05\x10\x15\x16\b\v\t\x0e\r\x01\x0e\x0e\t\v\n \x17\a\x99\x00\x00\x00\x00\x01\x00\x12\x00 \x024\x01`\x00M\x00\x00\x01\x0e\x02\a\x06\x14\x170\x1e\x04\x17\x16+\x01\".\x03'&#\"\x06\x15\x16\x15\x14\x06#\"&'.\x0254;\x012\x16\x17\x1e\x01326=\x01.\x0354>\x01;\x012\x1d\x01\x1427>\x01?\x016;\x012\x02!\x03)\"\x01\x06\x06\r\x12\x16\x13\x0f\x03\a\x1b;\a\n\f\n\x14\n(\x13\f\x04\x01\x10\x1b/`$\"-\x0e\x14;\v\v\x04\x15=\x10\x06\x05\x01\b\b\a\x04\a\x04]\x10\x13\x12\x13$\t\t\a\x12;\x18\x01J\x0fD3\x01\t\b\n\x0e\x12\x18\x17\x18\b\x19\x04\n\f\x16\n&\x0e!\x10\n\f\v84.[0\n\x11\n\r=`\t\rW\x0e\x14\t\n\x04\x04\x06\x04\x16t\x11\x12\x15<\x14\x13\x11\x00\x00\a\x00\x00\x00\x01\x02\t\x01\xa8\x00\r\x00&\x000\x00>\x00J\x00T\x00\\\x00\x00\x016&\a\x06&676\x16\a\x0e\x01&\x03\"&547676\x17\x16\a\x0676\x16\a\x06\x16\x17\x16\a\x06\a\x066.\x01\a\x0e\x01\x1e\x0176\x136\x1e\x01\a\x06&76&\a\x06&6\x03\x0e\x01'.\x017>\x01\x17\x1e\x01'&\x06\a\x06\x1e\x01>\x01&7&\a\x06\x17\x1676\x01\x97\x06\x19\x12\v\f\x05\n&3\f\x03\x13\r\xbdU\x82LH<,\x03\x01\x06\x03\x0f\x017\x13\"'>\x017\x1e\x01\x17\x067.\x03=\x01\x1e\x01\x15\x14\xd6RB:6^:)?8-?\v\v?-7\u007f!6'\x16Xv\x01\x17R\x85 EZ=iE\n\xfe\x14\x1e\x1cQ..Q\x1c\x1eX\x0f3?M)\x9d\x0f\x8a\\Z\x00\x00\x01\xff\xff\xff\xca\x01\x80\x01\xb6\x00R\x00\x00%\x0e\x02&/\x01\x0e\x01#\"43267\x0e\x01.\x01'>\x01\x1e\x02\x1767\x0e\x01\".\x05'6\x1e\x02\x1f\x0165.\x0367\x1e\x02\x06\x0f\x01\x1c\x01\x154>\x042\x17\x0e\x03/\x01\x06\a>\x03\x16\x01\x80\x0f21-\x0e\x0e\x1fa9\f\f0Q\x1d\x13%/,\x0f\x1f7%\x1f\x11\a\x0f\a\x02\x06\x13\x13\x1a\x17\x17\x12\f\x02$4#\x15\x04\x05\x03\x04\x0e\x1d\x0f\x05\x13#&\x05\x05\x06\x05\x04\r\x0f\x18\x1a#\x13\x01\x1e*)\x0e\x0e\a\r\x03\r&&7\x87&'\x02\n\b\a>H\x18;3\a\x04\t-'\r\x06\n\x15\x15\f$,\x01\x01\x01\x04\b\x10\x14\x1f\x14\r\x06\x1c\x1f\r\f\"\x13\x03\v$$6\x1a\r*+(\f\r\x01\x19\a\x02\x06\x11\x0f\x10\b\a%2\x11\x06\x02\x02)%\x04\f\x17\v\n\x00\x00\x04\x00\x11\xff\xc0\x01\xaf\x01\xc0\x00\f\x00\x10\x00\x14\x00\x1e\x00\x007!\x15\x14\x06+\x01\a5#\"&=\x02!\x15%5!\x15'2\x16\x1d\x01!5463\x12\x01\x9c&\x1b\x13W\xb0\x1b&\x01\x9c\xfed\x01\x9cA\x1b&\xfed&\x1bt\x16\x1d'ZZ'\x1d-UUnUU\xc7(\x1c\x16\x16\x1c(\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x004\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x056'&\a6\x16\a\x06\a\x06&'.\x01\a\"\x0e\x03\a\x17632\x1e\x02\x17\x16\x17\x163276\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01P\x032B\x18\x0f!\x03\x01\x14\x1b\x18\x10\x04\x17\x13\x06\x10\x15\x0f\x1d\a\x0f\x15\x04\a\n\f\t\b\a\x04\x13\x1c-A@\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x96?\x01\x03N\t\t\x16\x10 *\x1ef\x1c\x19\x02\b\x11\r\x1a\x06\x13\x0f\f#\x1c!\x19\x0e3TR\x00\x00\x00\b\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\b\x00\x14\x00\x1d\x00+\x004\x00B\x00K\x00W\x00\x007\x14\x06\"&46;\x01\x17462\x16\x1d\x01\x14\x06\"&5\x13\"&462\x16\x1d\x01\a2\x16\x14\x06+\x01\"&54>\x013\x05462\x16\x14\x06+\x01'\x14\x06\"&=\x014632\x1e\x01\x15\x032\x16\x14\x06\"&=\x017\"&46;\x012\x16\x14\x06#^\x1c&\x1c\x1c\x13/\x18\x1b'\x1c\x1c'\x1b/\x14\x1b\x1b'\x1c/\x13\x1c\x1c\x13v\x13\x1c\r\x15\r\x013\x1c&\x1c\x1c\x13/\x18\x1b'\x1c\x1c\x13\r\x16\f/\x14\x1b\x1b'\x1c/\x13\x1c\x1c\x13v\x13\x1c\x1c\x13\x85\x14\x1b\x1b'\x1c/\x13\x1c\x1c\x13v\x13\x1c\x1c\x13\x013\x1c&\x1c\x1c\x13/\x18\x1b'\x1c\x1c\x13\r\x16\f/\x14\x1b\x1b'\x1c/\x13\x1c\x1c\x13v\x13\x1c\r\x15\r\xfe\xcd\x1c&\x1c\x1c\x13/\x18\x1b'\x1c\x1c'\x1b\x00\x00\x00\x00\x06\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\x05\x00/\x007\x00A\x00I\x00Q\x00\x00\x1b\x01.\x0154\x05\x14\x0f\x01'76&\a\x06#'&\x06\x163\x163\x17\a'76&\a\x06#\"#>\x0132\x17\"#\"\x06\x15\x14\x17\x16\a\x17\x16\x17\x06#\"'\x13\x16\x15\x14\x06\a76546\x14\x06\"&462\x124&\"\x06\x14\x162>e6B\x01e\x10\x16L\x18\b\x01\t\"\x168\x06\x05\x04\x05\v\f!/M\x18\t\x02\b#\x16\x06\b\x1d^7S=\x02\x01\x0f\x15\x15\x12\x8cA\x01\x01#$\x1e\x1e\xf7\x1a:0A\x10<\x91Α\x91Ά\x8bċ\x8b\xc4\x01\x17\xfe\xea\x1ag>-\"\x114G\xe5\x02\x01\x11\x01\x02\x02\x01\t\t\x02[\x8c\xe7\x02\x01\x11\x01\x02,48\x17\x0f\x10\"\x1e:\xb3\x01\x02\f\t\x012/7:b\x1c\xbc($\f\vΑ\x91Α\xfe\xa6ċ\x8bċ\x00\x00\x00\x00\x02\x00\x00\xff\xf0\x01\xc0\x01\x90\x00\x11\x00\x1a\x00\x00%\a.\x015467\x15\x0e\x01\x15\x14\x16\x17\x117\x117'7&'5\x16\x177\x01\x10DWumS7EM:D\xb1\x83%\x1e(E3#\x10 \bR85Q\n+\t8$&:\a\x01T!\xfe\x80\x8d\x1d\x14\x12\a+\b\x1f\x13\x00\x01\x00\x15\xff\xc0\x01\xab\x01\xc0\x00\x1c\x00\x007\x17&#\"\a7.\x05'\x16327\x16\x17>\x027\x16327\x06\xfc\x04\x17\t\t\x18\x04\v \x18 \x1b \x10\x0f\x13\x10\x12 g\t;/\x14\x0f\x12\x13\x0f%\x9c\xdc\x04\x04\xdc\x139*7-3\x17\x04\x049\xa9\x0f`O$\x04\x044\x00\x00\x00\x01\x00\x00\xff\xc8\x01\xe8\x01\xb8\x00\x1c\x00\x00%\x14\x06#\"&4632\x17\a.\x01\x0e\x01\x15\x14\x1632>\x027#53\x16\x01\xe8\x85kg\x91\x91gaEC YM7Z@#7\x1f\x11\x03\x8d\xec\x04\xbaj\x88\x91ΑAA\x1f\v!M2A\\\x17#\"\x0fV\x16\x00\x05\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\b\x00\x10\x00;\x00I\x00U\x00\x006\"&5462\x16\x14$\x14\x06\"&462\x17\"\a&'7\x17\x14\x16264&#\"\a'&\x0f\x01\x06\a&#\"\x06\x16\x17\x06\x15\x14\x1632>\x0254'>\x01&\a6\x17\x16\a\x06\"'&76\x17\x1e\x0172\x16\x15\x14\x06\"&54>\x01\xd4\x15\x0e\x0e\x15\x0e\x01\x16\x91Α\x91\xce\r\x0e\n$2\x118\x0e\x15\x0e\x0e\v\x0f\a=\x05\x02\x132$\t\x0f\x10\x13\x06\x0f\x02N6\x1b1$\x14\x01\x0f\x05\x13U\x04\x04\x05\x05\x11L\x11\x05\x05\x04\x04\rC\x15\v\x0e\x0e\x15\x0e\x06\f\x8e\x0f\n\n\x0f\x0f\x14\x8aΑ\x91Α\xcf\n\x19\x02N\f\v\x0e\x0f\x14\x0f\x0e\x0e\x01\x06V\x02\x19\n\x18\x1f\b\a\b(7\x0f\x19$\x13\b\b\a\x1f\x18t\x04\x04\x05\x04\x11\x11\x04\x05\x04\x04\r\x01Y\x0f\n\n\x0f\x0f\n\a\v\a\x00\x00\x00\x05\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\r\x00\x19\x00%\x005\x00`\x00\x00%\x16\a\x06\"'&76\x17\x16276'\x14\x06#\"&54632\x1672\x16\x15\x14\x06#\"&5467\x11\x14\x06#!\"&5\x11463!2\x16\a\"\a&'7\x17\x14\x1e\x013264&#\"\a'&\x0f\x01\x06\a&#\"\x06\x16\x17\x06\x15\x14\x1632654'>\x01&\x01\x1b\x05\x05\x12R\x12\x05\x05\x04\x05\x0eH\x0e\x05W\x10\v\v\x0f\x0f\v\v\x10[\v\x0f\x0f\v\v\x10\x10\xb0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1cd\x0e\v'6\x13;\b\f\a\v\x10\x10\v\x10\bB\x05\x02\x146&\v\x0f\x12\x15\a\x10\x02T:;S\x02\x10\a\x15f\x04\x05\x12\x12\x05\x04\x05\x05\x0e\x0e\x051\v\x0f\x0f\v\v\x10\x10\x10\x10\v\v\x0f\x0f\v\v\x10\xb9\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xa1\n\x1b\x01U\x0e\a\f\a\x0f\x16\x10\x0f\x0f\x01\x06]\x02\x1b\v\x1a!\b\b\t*<<*\n\a\b!\x1a\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00%\x009\x00\x00\x122\x16\x14\x06\"&4\x162\x16\x1d\x01\x17754&\"\x06\x1d\x01\x14\x06\"&=\x01#\x15\x14\x16326=\x014\x1705#\x15\x14\x06\"&=\x01\a'\x15\x14\x1632>\x01\x99Α\x91Α\xf1\x0e\v\x17\",>,\n\x0f\n:,\x1f\x1f,\xba:\n\x0f\n\"\x17,\x1f\x14#\x14\x01\xb8\x91Α\x91\xce!\n\a\x15\n\n\x17\x1e+*\x1el\b\n\n\b-.\x1f,+\x1fk\aq.0\a\n\n\a/\n\v/\x1f+\x14#\x00\x02\x00\x00\xff\xff\x01\xf7\x01\x80\x00\x10\x001\x00\x00%\x15\x14\x06\"&=\x01\x177\x15\x14\x1626=\x01'54&\"\x06\x1d\x01\x14\x06#\"&=\x013\x15\x14\x1632>\x02=\x01462\x16\x1d\x01\a\x01\xf7B]B\"4\x0f\x16\x10\x8b\x0f\x17\x0fB/.BV\x10\v\x05\n\a\x04C[C4\xb6F.BA.F\x10\x10G\v\x0f\x0f\vH:\x1f\v\x10\x10\v\xa0.AB.FE\v\x0f\x04\a\n\x05\xa3-?@-$\x0f\x00\x00\x02\x00\x00\xff\xdf\x01\xc1\x01\xa0\x00%\x003\x00\x00\x01\x16\x15\x11\x14\x06#!\"'&'&'.\x025\x11463!2\x172\x16\x17\x1e\x01\x17\x16\x17\x16\x17\x16\x17\x16\x035#5#\"\x06\x1d\x013\x15326\x01\xbe\x02\x1c\x14\xfe\xa0\x06\x06\v\t\x02\x02\x03\x06\x03\x1c\x14\x01`\x06\x06\x03\x05\x03\x02\x04\x01\x04\x03\x03\x02\x02\x01\x01\x1e\xc0\xb0\a\t\xc0\xb0\a\t\x01|\x05\a\xfe\xa0\x14\x1c\x01\x03\b\x02\x02\x04\n\f\x06\x01`\x14\x1c\x02\x02\x02\x01\x03\x01\x03\x04\x02\x04\x04\x04\x03\xfe\x93\xb0\xc0\t\a\xb0\xc0\t\x00\x00\x00\b\x00\x00\x00 \x02\x00\x01`\x00\x05\x00\t\x00\x11\x00\x15\x00\x1d\x00!\x00%\x00)\x00\x00\x1353\x15#5\x175#\x15%3\x15#535#75#\x15\a53\x15#535'\x1535'3\x15#\x153\x15#R3\x85R\x1f\x01H\x85\x85RRR\x1fͅ\x85R\x1f\x1f\x9a4444\x01\x14L\xfb\xaf\x86]]\x86\xf4)\x1c)]])\xaf\xf4)\x1c\x86]]u3\x19\xaf\x00\x00\x00\x00\x05\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\t\x00\x13\x00#\x002\x00B\x00\x00\x12\x14\x06#\"'5632\x172\x16\x14\x06#\"'567\x11\x14\x06#!\"&5\x11463!2\x16\x052654.\x01#\"\a#\x1575\x1e\x014&#\"\a\x06\a\x06\a\x1575\x1632\xcd\x12\r\v\a\a\v\rG\r\x13\x13\r\v\x06\a\xc8\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xf9\x1f+\x14\"\x14\x12\x11-3\x0e\xad+\x1e\x06\x04\x06\r\x16\x1e4\f\x10\x1f\x01!\x1f\x17\x04D\x04i\x16\x1f\x17\x04D\x04\xa2\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xc3/ \x16%\x15\t\xce\n3\x05:B.\x01\x13\x0e\x17\x02\x9c\n3\x05\x00\b\x00\a\xff\xb9\x029\x01\xc0\x00\x06\x00\x12\x00@\x00D\x00\xb6\x00\xba\x00\xbe\x00\xcb\x00\x007\a'2632\x172\x1e\x03\x17\x06/\x01>\x01\x03&\x06\a67>\x037\x1e\x027\x15367>\b?\x01\x06\a\x06\a\"\x0e\x03\a\x1e\x01\x15\x14\a&7\a\x155\x03\x1e\x02\x17\x0e\x02\a.\x03#\x06\a\x16\x17\x1e\t\x1d\x01\x16\a&\x06'<\x017465&\a\x0e\x01#\".\x02'&'\x06#\"&54?\x01.\x01>\x0232632\x17632\x16\x0f\x01\x15\x14\x1632654.\x02547'6'632\x1e\x03\x177\x0e\x02\x1d\x016\x1e\x03\a3\x17\a'7\x17\a\x17>\x023\x161\x14\x0e\x03#\xf4\x1c\x01\x03\f\x04\x05\x8d\x03\a\t\x06\a\x0137\a\v6\x18\x03I\x17\b\x12\n\x12\b\x14\x03\x04\t\n\b\aG#\b\r\f\a\n\x04\n\x03\f\x03\x02\x01\f,g\x03\b\b\b\a\x03\x01\f\a\x12\xd2\x01;\n\x1a\x11\x14\x0e#,\n\x12\x15\t\"\x1e\x03\x02\x02\x02\x02\t\x04\x06\x03\x04\x02\x03\x01\x01\x01\v\a?\b\x01!\a\x06\n,\x11\x06\x15\x14\x17\x06\x02\x06\x89\v\x04\a\t\x8c\x02\x02\b\x05\v\x01\x01\a\x01\t\x050\x02\v\x02\n5/\x06\x0e)\r\x10\r\x02\x13\x10\x05\x17\x12\x12\x12\r\x03\n\x04\x0e\x01\x12\x10\x16'\x1d\x1d\x13\xb8\t\x03\fE\x0e\x1f\x14<\a\x16\x12\f\x01\n\x10\x0f\x10\x01\xca\x06\x05\x04\xc9\t\x10\f\x11\x01\x13\t-\b\f\x01\v\x04\x03\v\x0f\a\x03\x0e\b\x17\x03\x03\r\b\x01\x16\x1b\x1b\a\n\v\a\r\x04\x11\x05\x16\x04\x03\x10\x18\\\x19\x02\x01\x01\x03\x02\x05\x0f\x02\x04\x05\x14\xb3\x01\x01\x01\xfe\x83\x10\x1f\x0f\x12\t\x10\x11\x05\x0fPK<\x01\x01\x01\x03\x02\a\x03\x06\x03\x06\x04\a\a\b\x06\t\r3\x01\t\x05\x06\x1b\t\x03!\a\x01\b\x0f\x1b\x18\x1c\x1e\x04\x02\a \x06\x05\n\x02\x1e\x05\x06\x05\x02\x02\x04\x0e\n\x14\x02\f\x04\b4.\x0e\n\n\x01\x05\a\x05\x05\x06\x10\"\x05\x02\n\a\x1b\t\a\x0e\n\x02\x05\x06\x01\r\x14#\x1bC\x18\x03\xb1\x043\x0e^\x01\x04\x02\x05\x02\x04\x03\x03\x02\x00\x00\x00\x00\x04\x00 \xff\xe0\x01\xa0\x01\xa0\x00\x18\x00(\x00:\x00T\x00\x00\x01\x1e\x03\x15\x14\x06#\"&54>\x0276767\x16\x17\x1e\x01\x136'&\a\x06#\"&/\x01\"\x06\x17\x166'\x0e\x01\x17\x167632\x1e\x0276&'&\"\x17\x1676'&#\"\x06#\".\x01#\"\x0e\x01\x16\x17\x16>\x02\x172\x16\x01@\t\x18&\x19pNNt\x1a&\x1c\t(\r\x13\x03 \x0f\v+\r\x05\x04\x02\x03\x13$\x0f\x1a\x05\x05\x05\x05\x03\x15P&\b\x13\x04\x03\t\x0e\r\t\n\x02\x03\x02\x06\a\x05\x05\x19V\x17\r\x0f\x10\a\f\n=\v\n\"+\x15\x18#\x0e\a\x0e\x133(*\t\n0\x01M\x05\x16,E'RhmQ%D*\x17\x05\x16\v\x0e#&\n\a\x14\xfe\xb4\x05\x04\x01\x02\x0e\a\x03\x04\t\x03\x12\x06D\x03\x10\x06\x03\b\v\x06\a\x04\x01\x05\x10\x03\x04\x14\x02%*\x15\b*\x18\x19\x1a\"$\n\x0e\n\x17\x18\x011\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa1\x00\x18\x001\x00J\x00e\x00\x00\x134632\x16\x176\x17\a&\"\x06\x14\x1f\x01\a.\x01'.\x017.\x01\x1767>\x01\x17>\x0132\x16\x15\x14\x06\a\x16\a'64&\"\a\x06\a\x17\x1e\x01\x15\x14\x06#\".\x01'\x06&'7\x16264/\x017\x16\x17\x16\a\x0e\x01\a\x06'\x0e\x02#\"&5467&7\x17\x06\x14\x17\x162767\x01#\x18\x17!\x046*,\x11\x1c\x15\nd,3!\x10\x14\r\b\x14\x1a\x81V\x0e\x136\x19\x03\"\x17\x18#\x1e\x16\x10-,\x0f\x16\x1e\v\nZ\xde\x16\x1e#\x19\x0e\x19\x11\x03\x199\x14,\x10\x1c\x16\vd-[\b(b0'\f(7\x03\x10\x19\x0e\x19#\x1a\x14\x0e,,\x0e\n\v\x1f\nY\v\x01d\x19#\x1d\x15\f*,\x0e\x16\x1e\vd,2\"\x10\x136\x1a\x04!_U\x0e\x14\r\b\x16\x1e#\x19\x17!\x048--\x10\x1c\x16\v\nZl\x03!\x17\x19#\r\x16\r\b\x0e\x16,\x0e\x16\x1e\vd,[\t(\x010'\f(\x0e\x0e\x15\f#\x19\x15!\x047,-\x10\x1c\v\v\vX\f\x00\x00\x06\x00\x00\x00\v\x02@\x01u\x00\v\x00\x12\x00\x19\x00\x1d\x003\x009\x00\x007\x16\x15\x14\x06+\x01\x1132\x15\x14'\x153254#\x17254+\x01\x15%#53\x17\x14\a#\x14\x1632>\x0173\x06#\"&54632\x16\a3&#\"\x06\xe8AH5\xac\xa7q\xcaO/5\n:8U\x01\xba\x90\x908\x01\xb9!\x1e\v\x17\x13\x03>\x1c\\\x017\x11\x14\x06#!\"&5\x11463!2\x16\a35#\a4'654+\x01\x1532674&\"\x06\x15\x14\x1e\x02327#\x0e\x01#\"534\xba\x1f-.\x1e\a\x1a+(\x1d\x84\x1c\x03?\x01\x11\x97\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xb0NN+#\x1a>Z]\x1d'\x97$?(\n\x12\x1b\x102\x10\"\x03\x12\t\"d\x9b\x1947\x17--\x1e\x0e\x10\x9a\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c}\x13\x81)\n\r\x180\xc0\x1c+ +* \x10\x1b\x13\v/\b\n#\a\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00!\x002\x00:\x00B\x00\x00%\x14\x0e\x01#\"&'\x17\x1e\x01326'7\x16654&\"\x06\x1d\x01\a&\a'>\x0132\x16\x05\x16>\x01&/\x016\x17\x16\x17\x16\x0e\x01'&'6\"&462\x16\x14\x06264&\"\x06\x14\x01\xf0BsCU\x84\x16_\x05&\x1a\x1d*\x01T(87M7;\x18\x14\x85\b\x8ebg\x91\xfe\xac\x0f\x1d\r\r\x0e \x14\x13\x14\t\b\x11(\x15\x12\t\xe63%%3%R'\x1b\x1b'\x1b\xc0CsBeO'\x18 +\x1e<\x018''66'\x01V\x01\r7`\x84\x91\xe7\x06\f\x1e\x1d\x06\r\b\b\t\x14\x14(\x11\b\b\x12v$4$$4\x15\x1c&\x1c\x1c&\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x006\x00>\x00I\x00\x00>\x01&/\x016\x17\x1e\x01\x0e\x01'&'\x17\x16\x132\x16\x15\x11\x14\x06#!\"&=\x01\x17\x1e\x02326'7\x16654&\"\x06\x1d\x01\a&\a'5463\x04\"&462\x16\x14\a264&\"\x06\x15\x14\x1e\x01\xb3\f\v\x0e\x1e\x12\x12\x13\x10\x10&\x13\x11\b\x1d\x0e\xf8\x14\x1c\x1c\x14\xfe\xa0\x14\x1cY\x03\x12\x1c\x10\x1b'\x01O%53I38\x16\x12u\x1c\x14\x01\x140\"\"0#;\x13\x19\x19%\x1a\f\x14N\x1b\x1c\x06\f\a\a\b&&\x0f\b\a\x11\f\x06\x01^\x1c\x14\xfe\xa0\x14\x1c\x1c\x14q%\x0f\x18\x0e(\x1d8\x014%$33$\x01Q\x02\r0\xa1\x14\x1c\xde\"0\"\"0\x14\x1a$\x1a\x1a\x12\f\x14\f\x00\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x19\x00.\x00C\x00\x00\x122\x16\x14\x06\"&4\x052654'&\a\x06\x15\x14\x163276\x17\x1672654'&#\"\a\x06\x15\x14\x163276\x16\x17\x1672654'&#\"\a\x06\x15\x14\x163276\x16\x17\x16\x91Α\x91Α\x01]\x06\t\n`\x8d\r\b\a\x02\n|S\x06 \b\v\vMd20\x10\f\b\x02\n?\u007f0\b$\t\x0e\rR{B4\x11\r\n\x03\n<\xa85\x06\x01\xb8\x91Α\x91\xce\xdc\t\x06\v\x069\x1f\x03\x0e\x06\t\x02\x1a2\x04B\v\b\r\a-\r\x05\x10\b\v\x02\x10\x11\x1c\x04L\r\n\x0f\b0\x10\x05\x12\n\x0e\x02\x12\x10\x1f\x04\x00\x00\x00\x00\x01\x00\x00\xff\xc0\x01@\x01\xc0\x00\x14\x00\x00\x01\a\x173\x15#\x0f\x010\a#57'#53?\x023\x01@b\a[\xa1\r,\t]]\aV\x9c\x0e+\tb\x01c\xb3\n\x80\tT\t]\xb4\t\x80\tT\t\x00\x00\x0e\x00\x00\x005\x02\x80\x01K\x00\v\x00\x17\x00#\x00-\x009\x00D\x00N\x00`\x00u\x00\x80\x00\x93\x00\x9f\x00\xab\x00\xb6\x00\x007\x17\a\x14#\"5'743272\x15\x17\a\x14#\"5'7472\x15\x17\a\x14#\"5'74\x062\x1f\x01\a\x06\"5'?\x012\x1f\x01\a\x06#\"5'7462\x15\x17\a\x14#\"5'762\x15\x17\a\x14\"5'?\x01\x16\x15\x17\a\x14#\"5/\x017547632\a\x16\x15\x17\a\x15\x14\a\x06#\"'&5'?\x014762\x062\x1f\x01\a\x06#\"5'7\x052\x16\x15\x14\x06+\x01&=\x0147632\x16\x176%2\x15\x17\a\x14#\"5'74'2\x1f\x01\a\x06#\"5'74\x162\x15\x17\a\x14#\"5'7o\x06\x06\x04\x04\x06\x06\x04\x04\x16\x05\x05\x05\x05\x05\x05\x05\x1e\x06\x05\x05\x06\x05\x05\x05\x94\x04\x01\x05\x05\x01\x04\x05\x05\x1a\x02\x01\a\a\x01\x02\x03\x06\x06\x19\x06\a\a\x03\x03\x06\x06\x19\a\a\a\a\x06\x06\xf5\x04\x04\x04\b\t\x02\x02\x04\x03\x02\x04\x02\x19\x04\x03\x03\x03\x02\x03\x04\x03\x01\x03\x02\x01\x03\x03\x04s\v\x01\x05\x05\x01\x05\x06\x05\x05\x01~!..!\xda\t\b\x18\x1a7O\x05\x0f\xfe\xe7\a\x04\x04\a\b\x03\x03.\x06\x01\x04\x04\x01\x06\x06\x04\x04\x1a\x0e\x04\x04\a\a\x04\x04\xc0AE\x04\x04EA\x04)\x05iE\x05\x05Ei\x05\x18\x05\x82D\x05\x05D\x82\x05`\x03##\x03\x03##\x19\x0399\x02\x0389\x03\v\x03DB\x03\x03BD\x05\x03FD\x04\x04DFr\x02\x05\xb2@\b\b \xb1\x01\x04\x03\x02\x11\x02\x05\xa3:\a\x03\x02\x03\x03\x02\x03B\xa1\x01\x05\x02\x01\x18\x06\x8cC\x06\x06C\x8c8/ !.\x01\t\xf9\a\x03\tI6\a<\b\x89A\b\bA\x89\b\b\a\x91C\a\aC\x91\a\x04\a\x8dC\a\aC\x8d\x00\x00\x00\x01\x00\x00\xff\xde\x01\x82\x01\x9c\x00+\x00\x00%\x15\x06#\x0e\x02'.\x04'3\x1e\x01\x1767.\x0154632\x1e\x01\x06\a\x0e\x01&'654#\"\x06\x15\x14\x16\x01\x80\x1b\x19\x19O*\x16\v\x1b+%$\nJ\r;+-\x1f%+7/(0\n\x06\n\x06\x10\"\b\b\x1c\x0e\x11L\xc14\x064\\\x18\r\x06\x18;K~Km\x8b5,>\x13N12A)<:\x16\x01\x02\n\r\x1b\x16.\x1a\x18:9\x00\x00\x00\b\x00\x00\xff\xbc\x02\x01\x01\xc4\x00\x11\x00\x15\x00\x19\x00\x1c\x00 \x00$\x00(\x00+\x00\x00\x01\x16\x1d\x01\x14\x0f\x01\x06/\x01&=\x014?\x016\x1f\x01\x15\x177'\a\x177\a\x157\x175'\a?\x01'\a\x177'\a75\a\x01\xf6\n\n\xea\f\f\xea\n\n\xea\f\f\n_MجM_\xbe7\x87_M\xc2NNNd\xacM_\xbe7\x01 \x06\f\x9c\f\x06\x9c\b\b\x9c\x06\f\x9c\f\x06\x9c\b\b;g?3ss3?5J%\xc1g?3\x1a444\xc1s3?5J%\x00\x03\xff\xff\x00\x00\x02A\x01\x82\x00$\x00I\x00\u007f\x00\x00%\x1e\x01\a\x0e\x03#\x06#\"'.\x01'&676'&76\x170\x1767>\x01\x1e\x01\x17\x16\x17\x16\x176&'&5.\x04\x06\a\x06\a\x0e\x01*\x01&'&\a\x06\x17\x16\a\x0e\x01\x17\x163\x165236'\x0e\x01#\"'.\x01'&\a\x0e\x01\x1e\x0167>\x0176\x16\a\x0e\x01'.\x015676\x17\x1e\x01\x17\x16676.\x02\a\x0e\x01\a\x06&76\x17\x1e\x01\x01\xff\"\x1f\t\x04\x14\x1c$\x14#\xd9J\x11$;\n\v\x17\x1d\x06\x01\x06'&/\b\x19(\"MD7\r\x04\x05\x01\x1b\x1d\x15+\n\x01\x15\"/26\x17(\x15\x02\x04\x05\x02\b\x01&\"#\b\x03\r\x1d\x13\x0e\x1bD\xa4\x9a\x10+;\x04'\x18\x19\x13\bI\x0f\x1e\x1e\x0e\x06\x0f\x18!\x0f\x02\b\x03\x06\f\x05\r,\x16\x16\x1b\x03!%\x1e\x1aB\x0f\x13'\v\n\b\x1c$\x11\x01\b\x02\b\t\x04\"1\x18\x18\xd3\x13D$\x13 \x17\r\x01\x01\x01.\"#C\x17\x04\x051\x1c\x1c\x13\x04)\x17\x13\x05\x196%\t(\b\x9f$X\x14\x05\v\x1e6%\x19\t\t\r\x16(\x04\x04\x05\x01\x14\x17\x18'\x0f\b\x13B\x1f<\x02\x02\x01s\x17 \x12\aL\n\x17\x1b\f!\x1b\x13\x01\r\x02\t\x02\x05\a\t\x13\x11\a\a&\x19&\x12\x15\x17\x14H\t\f\n\x13\x12%\x15\x04\x11\x01\t\x01\x05\n\x05/\x13\b,\x00\x00\x00\x01\x00\n\xff\xc8\x01\xf5\x01\xb8\x00[\x00\x00\x05\"&7>\x01721\x0e\x03\x16\x17\x1e\x02>\x02?\x01>\x02.\x02/\x01.\x01/\x017\x1e\x03\x1f\x016&/\x017\x17\x0e\x01\a\x15>\x05?\x01\x17\x0e\x01\x0f\x01\x0e\x01\x16\x17\x1e\x02>\x02?\x01>\x01.\x01/\x0165\x1e\x03\x17\x16\x06\x01\x00g\x8f\x03\x02<7\x01\x04\x13\x19\v\x11\x1c\n\x15\x11\x10\f\t\x02\x03\b\b\x01\x03\x05\x06\x02\x02\x04\x17\t\n\x1d\a\x0e\n\b\x02\x02\x01\v\x06\x06-,\t\v\x01\x02\b\b\t\a\x06\x01\x02\x1d\r\x16\x06\x05\b\n\x06\r\x06\x11\x10\x11\x0e\v\x03\x03\x1d\x13\x0e\x16\v\v\x01\x19\x1e(\x14\x01\x01\x888\x96h\x017\x15\"\a\x17\x06\a\x0567\x17\x0e\x01\a527'676\x14\x06\"&462\x124&\"\x06\x14\x162\x13\x16\x14\a'67'654'7&'\a\x17\x06\"'7&'\a&'7&47'67\x1767'632\x17\a\x16\x177\x16\x17\a\x16\x14\a\x17\x06\a'\x06\x01 \x10\x12:a\x1e\x10\n\n\x12)=\xe6\a\a\x10\x1b\x1b\x10\b\x06\x17\n\n\x89\x05\x13\x0f:b\x1d\x10\b\f\x12);\n\n\x10\x1ea:\x12\x10\x05=)\x01$\f\b\x10\x1db:\x0f\x13\x05=)o\x91Α\x91΅\x8aĊ\x8a\xc4c\x1b\x1b\x10\b\x06\x17\n\n\x17\x06\b\xa7\r\x0e\x1a\x0e\r\x19\x0f4\x12\t@\x03\x03@\t\x124\x10\x18\r\f\x0f\x0e\r\r\x18\x104\x12\t@\x03\x03@\t\x124\x10\x01\x8a\x03\x13\x0290\t\x10\v\x0f.\f\xf4\x11\x0f\t2991\t\x0f\x10\a\x1c\x1f\x1e\x1dw\x18\x03\x13\x0290\t\r\x0e\x10/\x01-\v\x10\t09\x02\x13\x03\x18\f.\xff\x0e\r\t09\x02\x13\x03\x18\f/\xdeΑ\x91Α\xfe\xa6Ċ\x8aĊ\x01W2r1\t\x0e\x11\a\x1d\x1e\x1f\x1c\a\x10\x10\xa9C\x03\x03C\x05\x12,\x15\x19\x16\f\x18\f\x16\x19\x15,\x12\x05C\x03\x03C\x05\x12,\x15\x19\x16\f\x18\f\x16\x19\x15,\x12\x00\a\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\n\x00\x12\x00\"\x00*\x00K\x00]\x00}\x00\x007\x16\x17\x1e\x01\x15\x14\x06&5472\x16\x06#\"&6%\x11\x14\x06#!\"&5\x11463!2\x16\a\x143254#\"\a#.\x01\x06\x15\x14\x17\x06\x15\x14\x17\x06\x15\x1432>\x0154&'\x1e\x01654'7\x17'\"=\x01#\a\x16\x17\x1e\x01\x1d\x01\x14\x06\a\x1537'\x0e\x01.\x01541535#\"545#\x0e\x01\a\x15232\x1d\x02\x14\x1632e\a\r\x19\x0e!!#\x0e\f\f\x0f\x10\f\r\x01O\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xe3\x17\x17\x17\x17\x161\x0f$\x1f\x16\x17\v\x0e@\x16\x1f\x10 0\t\x05\b\n!\x1f\t\x17U\r\x054\x03\x03\x04\a\x03\x03\x0eHe\a\x0e\x10\a\x01&$\x02\x18\x02\x0f\x11\x04\x06\n\x13\x17\x14r\x01\x01\x01\x03\x06\n\b\b\b\x06|\x16\x16\x16\x16\x8a\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1cY\x17\x17\x16D\x02\x01\x1a\x18\x1b\v\x15\n\f\x04\x0e\f \v\x14\x0f\x17\f\x03\x01\x0e\x01\x02\x17\x16\x0e\f\x01X\x02\x05i\x14\x01\x01\x03\x02\x03K\x04\x01\x02\x14\n\x16\x03\x02\v\x06\x04\x01=\x19\x10\r\n\x15\x13\x02\x16\x02\x01B\x16\x13\x00\x00\x00\x00\x06\x00\x00\xff\xf1\x02\x00\x01\x8f\x00'\x004\x00<\x00R\x00]\x00\u007f\x00\x00\x13\x15\a\x16\x15\x14\x0e\x02&'\a\x16\x17\x1e\x05\x15\x14\x06#\"547&5467&54>\x02\x1f\x014&'\"&\"'\x06\x15\x14\x166'26&#\"\x06\x16\x17527>\x04=\x014&'73\x15\x14\x163\x17\x15'\".\x015432\x15\x14\x06\x17\x06#\"&=\x024&\a\"#5>\x0373\x16;\x01\x15#\x150\x15\x14\x1e\x0267\xd8%\x0f\x14\x1c\"\x1b\n\r\b\x0f\x1c\x1a%\x0f\x11\x05:5f\x16\x11\x0f\x16#\x1d)-\x0f\x10\x16(\x06\b\r\x05\v453\x19\x13\x13\x18\x18\x15\x13\x9e\x05\x06\x06\x04\x05\x01\x01\x05\x17\x05T\x02\x05\x14?\f\x10\t%%\x14\xcf!!$\x1f\x04\f\t\a\x0e\x13\r\a\x02&\x02\x029=\x01\x06\v\x19\x12\x01\"#\x03\x13\x16\x16\x1f\x0e\x05\x02\x02\x15\x01\x01\x01\x02\x05\b\r\x13\r#&2\x15\x15\a\x14\n\x13\x14\x11,\x1d&\n\x03\x05\xf2\t\x05\x03\x01\x01\r\t\x0e\v\r\x95$##$d \x01\x01\x01\x01\x02\x02\x03w\x06\x03\b!\xa9\x05\x03\x03 \xf4\t\x10\f##\x12\x13\xe4\x11\x1f#j\x01\x03\x01\x01%\x01\t\x10\x17\x11>)a\x01\x05\b\x0e\x06\x01\x06\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00\x04\x00\x14\x00\x00\x11!\x11!7\x177#\x0e\x02\a.\x03'#\x17\x153\x01\xc0\xfe@\x15\xdaQ#\x18\x17\v\x02\x02\t\a\x17\x13%P\x1f\x01\xa0\xfe@\xfb6\x9b-/\x1c\x06\x05\x16\x110\"\x99g\x00\x00\x00\x02\x00\x15\xff\xbe\x01g\x01\xc0\x00\x10\x00-\x00\x00\x17\x16\x06'&67&632\x16\x15\x14\x06'\x06\x132\x16\x15\x14\x06'&6\x17\x16654&#\"\x0e\x02\x17\x16\x06\"'&>\x02H\x01\x1d\x01\t77\f \x1f\x16!;\x1ck\x88Eb{Q\x0f\a\x0e>jP9%>\"\a\x12\x04\n\x10\x04\x17\t'M0\x0f\x02\x0e_\xa19\x1b3!\x17!\x1f\x13s\x01DbENe\x11\x04\x1c\x03\x10RC9P$9G#\b\x0e\t(VG-\x00\x00\x00\x00\x01\x00\a\xff\xbf\x01\xb9\x01\xc0\x002\x00\x00$\x06.\x02/\x01\x14\x06\a\x1e\x03\a\x06\"'\x06\"'&67.\x015\x0e\x06'\"&6767&632\x16\a\x16\x17\x1e\x01\x01\xb5\x06\f\f\v\x04\x03\x1a\x19\b\x0f\x12\b\x03\x0fn##m\x10\x06 \x14\x19\x1a\x01\x02\a\b\t\b\a\x03\x03\x04\a\n\a!\x03QRQR\x03!\a\n\a\x1c\x01\v\x0f\x10\x06\x05\x197\x15\x03\x06\t\f\x05\b\x04\x04\b\n\x12\a\x157\x19\x01\x04\v\n\f\t\x06\x01\x130 \x19Q^yx_Q\x19 0\x00\x00\x00\x00\x06\x00\r\xff\xdf\x023\x01\xa0\x00\x14\x00\x1e\x00(\x006\x00G\x00S\x00\x00\x01\"\x06\x15\x14\x17\x06#\"'\a7&54632\x16\x17&'\"\x06\x14\x163264&\a264&#\"\x06\x14\x16\x05\x14\a\x17'\x06#\"&4632\x16\a2>\x0154.\x02#\"\x06\x15\x14\x1e\x0232>\x0154&#\"\x06\x14\x16\x01\x81E`\x06\n\b\x131D\x13NrQGq\f\tr\f\x12\x12\f\v\r\r\x94\v\x0e\x0e\v\v\x12\x12\x01\xaeD\x0f6(\x12F``FBc\xdb\a\v\x06\x03\x06\n\x05\a\f\x03\x05\ao\a\v\x06\x0e\n\a\f\f\x01\x18Z@\x14\x14\x01\t\";7ME`N;\x015\r\x16\r\r\x16\r0\r\x16\r\r\x16\r\x9c=40\x1d\nSuST!\x06\t\x05\x03\a\x06\x03\f\a\x04\a\x06\x03\x06\t\x05\a\f\f\x0f\f\x00\x00\x00\x04\x00\x01\xff\xb7\x01\xff\x01\xc0\x00\a\x00\x0f\x00F\x00^\x00\x00\x122\x16\x14\x06\"&462\x16\x14\x06\"&4\x176\x16\a\x06\a\x16\a\x06'&7<\x065\"&#\x1c\x06\x15\x16\a\x06'&7&'&6\x172\x16\x175463!2\x1e\x01\x1d\x01\a54.\x01#!\"\x06\x1d\x01\x1e\x01636\x17\x16\x176\x172\x166\xa23$$3$\xb43$$3%\xdb\v\f\a#G\x1e6\"(&\x01\x03\t\x02\x01&(\"6\x1fH#\a\f\v\x01\x05\x01\x1b\x13\x01g\f\x15\r\x19\b\x11\x10\xfe\xc3\x18\x11\x1fB)\x14\x13\b\n\n\x02 \x13*D\x01&!0\"\"0!!0\"\"09\b\x0f\v*\x1ef4!\v\n*\x01\x06\v\x0e\x11\x12\x13\b\x03\b\x13\x12\x12\x0f\f\x06\x01)\v\v!4g\x1d+\n\x0f\b\x03\x01\xc6\x15\x1d\r\x17\x0e\xc6\x0f\xbf\x10\x14\t\x13\x1a\xc1\x10\x0e\x02\x01\b\n\b\x1b\x02\x02\x0f\x00\x00\x04\x00\x18\xff\xc0\x01\xe8\x01\xc0\x00\x03\x00\a\x00\x10\x00\x18\x00\x00\x01\x15#5#\x15#5'!\x11\a#\a5#\x11\x055!\x113\x1573\x01\x87&D'}\x01o\xaeMat\x01\xa9\xfe\xcbWDM\x01Ynnnng\xff\x00\xa5[[\x01J\x93\xc9\xfe\xee@@\x00\x05\x00\x01\xff\xbf\x01\u007f\x01\xc0\x00\x12\x00\"\x003\x00F\x00V\x00\x007\x17\x16\x06\x0f\x01\x06#\"&'&547>\x0132\x17&54?\x016\x16\x15\a\x14\x06#\"#&7&6\x1f\x01\x1e\x01\x15\x14\a\x0e\x01\a\x06#\"'7\x16\x15\x14\x0e\x02\x0f\x01\x06&?\x01632\x17\x1e\x01%67232\x16\x1d\x01\x14\x06/\x01&54+d\x0e\x03\x10l\x02\x03\t\r\x01\x01\n\x02\r\a\x051\n\x06J\v\x1d\x04\x0e\t\x02\x02+m\b\x14\x0fi\a\t\x02\b\x1f\x0e\x06\t\f\aZ\x02\x03\x05\x06\x03k\x0f\x13\t>\a\f\t\x06\x0e\x1d\xfe\xc95;\x01\x01\n\r\"\th\x03\xd01\a \x04\x1a\x01\f\b\v\f \x1e\a\t\xf2\a\f\t\aR\f\f\x10o\t\r\b\x86\x0e\x19\x05\"\x02\r\a\x05\x05\x10(\v\x05\n\xe3\x05\x05\x03\a\x06\x05\x01\x1e\x05\x1a\x0e[\v\x06\f)\xbf\x19\x05\r\n\xd0\x12\t\x0f\xb5\x05\x06\x0f\x00\x00\x00\x02\xff\xff\xff\xdd\x01\x8a\x01\xa3\x00\"\x00K\x00\x007\x14\x0e\x04\a\x06+\x01\"&7\x13>\x013262\x1e\x02\x17\x1e\x01\a\x06\a\"&\x0e\x027\x16\a\x06#*\x03\x0e\x04\x15\x06\a\x06+\x01\"&76763:\x02>\x067676o\x04\x04\x04\x04\x04\x01\x01\x02K\x05\b\x01;\x01\v\b\x1cH\x19$\x0f\x12\n*\x14\x12\x1fm\b\x1f\v\x11\a\xf4$\f\x16y\x01\a\x02\x06\x02\x04\x02\x03\x02\x0e\x01\x03\x0e@\x05\x06\x01\x04\x17\x01\n\x01 \v \x10\x1e\x12\x19\x10\x11\x06\x06\x03\x01\x98\x04\x15\x19\x1d\x1a\x17\x06\x02\b\x06\x01s\b\t\x01\x01\x03\x04\x04\x11O,Y\x02\x01\x01\x04\v\x87\x1bBp\x01\x02\x03\x04\x06\x04W\x04\x0f\b\x05\x1e\x8c\t\x02\x04\a\v\x0f\x15\x1b\x11\x12\x10\x03\x00\x04\x00\x06\xff\xe0\x01\xb8\x01\xa0\x00\n\x00\x15\x00\x1b\x00)\x00\x00\x13\x16\x17\x06\a&'>\x01&4\a2\x17\x16\x17#&'&6373\x16\x17#&\x13\x16\x15\x14\a&'&'&6;\x012\x9d5\x1f\f\x13\x19\x1f\x02\x02\x010\b\x057\x1ch\x1f<\x03\x04\x05\x8dm~\x11r\n|\x1f\x19\x11J\x06\x14\x01\x04\x04Y\f\x01AUM21c2\r\x1e\x18\">\x06LvnM\x04\tX\xae¦\x01\x0enfja\x8a\x85JH\x04\x06\x00\x00\x00\x00\x06\x00\x00\xff\xe0\x02@\x01\xa0\x00\b\x00\x18\x00%\x00)\x00H\x00S\x00\x00%\x16\x17#70>\x01?\x01\x11\x14\x06#!\"&5\x11463!2\x16\x017#\a/\x01&'#\a\x16\x1f\x0137#\a74'&5636\x1f\x017&#\"\x0e\x01\x15\x06\x17\x16\x15\x06#\"/\x01\a\x16\x1726\x17'#\"\x0f\x013673\x17\x01\xd6\b\x01!\x10\x02\x02\x01m\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe0\x14\x1c\xfeX@+'\x04\x0e\x03\x10@\x01\x17\x13$\x89\x19(\x19\xb4\"\x17\x01\x17\x0f\x0e\x04\x05\x10\x14\x13\x1f\x11\x01$\x15\x01\x17\x13\x13\x05\x06\x11\x1c\x1f'\x8d \x0f\x05<*\a\x014\x05\xd9&\a+\x05\b\x02\x8a\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xfe\xf1\x9bj\x16G\f\x01\x03\x06\v\x87\x9b\x9b2\x1a\x11\v\b\r\x01\a\x01!\a\r\x18\x0e\x19\x12\n\t\x0f\b\x03#\b\x01\x1d\x1a\x9b\r\x8e\x13\x04\x17\x00\x00\x17\x00\x00\xff\xdf\x02@\x01\x9f\x00\x03\x00\t\x00\r\x00\x13\x004\x00B\x00R\x00^\x00d\x00\x8d\x00\x9b\x00\xaf\x00\xc0\x00\xcd\x00\xd8\x00\xe5\x00\xf0\x00\xfb\x01\x05\x01\r\x01-\x019\x01F\x00\x00$\x14\"4!2\x14#\"462\x17#72\x14#\"4\x172\x150\x061\x141\"1\"1\"1\"1&1<\x011434130303\x1610\a030410+\x01\x1535\x173\x13\x11\x14\x06#!\"&5\x11463!2\x16\x04\x14\x16327&67&#\"\x1764'\x06\x14\a4#\"\a&#\"\a5#\x153<\x03>\x0232\x16\x15\x14\x153<\x02>\x0332\x16\x15\x14\x1537#\x15&#\"\x06\x14\x16327\x15374&542\x177&\x06\x15\x14\x16\x15\x14\"'\a\x1663'\x06=\x0135#5#\x15#\x153\x15\x14\x16734#\"\x06\x15\x14\x167'\x06&7&\a5#\x153546\x17\x1646\x177&\x06\x15\x14\x167'\x067#\x15&\x06\x15\x14\x167\x1537&\a5#\x153546\x177#\x15&\x06\x14\x167\x1537\x153535#\x15\x1745&1&0#\"0#\x061\x061\x14\x15\x141\x143\x1623210606107#\a'#\x155\x1737\x15374&#\"\a\x1e\x01\a\x16326\x01\xe3\x17\xfe\xe0\v\v\vx\x11\x01\x13u\f\f\vu\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x02\x01\x01\x01J\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe0\x14\x1c\xfe\x00Q9*#7\x016#*9\x8f555Y\x0f\t\x04\x04\b\a\x04\b\b\x02\x02\x03\x02\x06\x03\a\x01\x01\x02\x03\x03\x05\x03\b-\b\x05\a\b\n\n\b\b\x04\b(\x17\x0e\x05\x03\a\x17\x17\x10\x05\x04\t\x18#\x02\f\r\r\b\b\b\x13\x11\x1b\x11\b\n\x19\t\x04\x06\x0f:\n\x05\b\b\n\x02\x0e\r\a\x04\t\x18\x19\b\x04\a5\b\x06\x18\x18\x06\b\"\n\x05\b\b\n\x03*\b\x06\x18\x19\x05\b\b\x01\x01\x04\b\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x04\x02\x01\x02\x01\x02\x01\x01\x02\x04Q9*#6\x017#*9Q1\x17\x17\x17\x17\x01\t\b\x17\x17\x1a\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x03\x01\x01\x01Z\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1cfsQ\x17-\x8d,\x18\xf7)\x87))\x87v\x0f\a\a\x05\x04%\x03\t\x05\x06\x03\x03\x02\n\f\x06\x03\x03\t\x05\x06\x03\x03\x02\n\f\x06\x03%\x04\x05\v\x11\v\x06\x05\v\t\x04\x03\x04\x03\x06\x06\x04\n\b\x05\x02\x05\x04\x06\x06\x04\a\a\v\x11\a\v\v\a\x11\f\x03\x11\x17\v\b\x0f\b\t\x06\x06\x03\x1d\x04\b\x04%\x15\b\x03\x03\x13\x11\x05\x05\a\a\t\r\x0e\t\b\x06\x05 \x04\b\t\r\x0e\t\t\x05%\x05\t\x04%\x15\a\x04\x03\x17\x13\b\t\x1b\t\t\x05\u007f\x05\x05\x01\x01|\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01~\x04\x04\x05\x04\x04\x04\x04U:Q\x17-\x8d-\x17Q\x00\x00\x00\f\x00\x00\xff\xe0\x02@\x01\xa0\x00\x06\x00\x16\x00'\x003\x00:\x00B\x00S\x00k\x00u\x00y\x00\x81\x00\x8b\x00\x00%\x14+\x0153272\x16\x15\x11\x14\x06#!\"&5\x11463\x05\x15353\x173'654.\x03*\x01#\x1535#535#535+\x01\x1737#\a&\"\x06\x14\x16264'&\x0e\x01\x15\x14\x1e\x0275\x06&546\x17\a\"'\a\x16654&'&546\x177&\x06\x15\x14\x17\x1e\x01\x06\a2654.\x01+\x01\x1535#\x15\x055\x0e\x01\a!26%\x16\x14\a\x06+\x01532\x02\b\x0f\x05\x05\x0f\b\x14\x1c\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xb4\x10\x02\x16\x14\x1a\x13\x03\b\x06\r\x05\x10:-\x1d\x1c\x1c\x1dr\x11#\b$\x12\x16;%\x1a\x1a%\x1a^\x10\x1c\x13\v\x12\x17\v\x0e! \x0fa\f\x06\n\r,\n\x0e\f\x11\b\b\x0e$\x15\v\x06\bl\x16\x17\f\x14\r\x17[\x10\x01\xb53\xf3z\x01\x91\x06\t\xfe*\t\t\a\x0f\x04\x04\x0f\xfc\r\x19\x98\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x8bR!!#\x03\x14\x06\b\x06\x03\x01R\x0e\x16\x0e\x12\x0eTT7:\x1a%\x1a\x1a%\x14\a\x06\x18\x0f\f\x14\n\x02\x06\x13\x0e\x0e\x13\x12\x0f\x0e/\n\n\x13\t\x16\n\n\x05\x05\x06\a\x03\b\v\r\n\x11\x10\a\x04\f\b\r\x19\x10\f\x13\nRRR\xb4\x91 i\x17\t\xf7\a\x1a\b\x066\x00\x15\xff\xff\xff\xe0\x02A\x01\xa0\x00\x13\x00\x1a\x00.\x007\x00:\x00A\x00M\x00N\x00`\x00g\x00{\x00~\x011\x01I\x01a\x01m\x01x\x01y\x01\x9c\x01\x9f\x01\xa3\x00\x00\x01\x14\a\x16\x1d\x01#<\x02.\x02+\x01\x15#532\a254+\x01\x15\x172\x15\x14\x0e\x03*\x01#\x15#'\a#53\x177\a7'#\x153\x15#\x15\x175\a7254+\x01\x15'#\x153\x15#\x153\x15#53\x05\a\x14\a\x16\x1d\x01#54.\x01+\x01\a#532\a254+\x01\x15'#5\a#'\x15#'#\a#73\x1753\x1773\a3'\x05:\x02>\x017\x15\x14\x06#!\"&=\x013673\x16\x1735\x16\x173>\x027\x153523\x14\x1735\x16;\x01673\x16\x152\x16\x1735\x1e\x01\x1735#\x15&'#\x15&'#\"1#\"\a5#\x15.\x04*\x03+\x02\x06\a.\x01'#\x15.\x01'#\x0e\x01\a5463!2\x16\x1d\x01\"#\"\a5*\x02\x0e\x02\a5#\x15.\x02\"&*\x02#\x15&+\x01\x0e\x03\a.\x03'#\x15367\x1e\x01\x17346527\x1c\x01\x153<\x01523\x14\x15\x14\x15272?\x01\"\x15\x14\x1e\x01\x17\x15\x06+\x0173254&\"&54;\x01\x15\a254&\x06&54;\x01\x15#\"\x15\x14\x166\x16\x15\x14+\x015'#\x153\x15#\x15\x17\x15#53'63023\a\"'&47'3\x15*\x03\x0e\x03\x15\x14;\x0173\x1753\x1753\x15#'\x15#'#\a#\"54\x17\a3'3\x15#\x01E\f\v\x10\x02\x03\x06\x04\x12\x10'\x1b\x1d\v\v\x15\x04\x1c\x03\a\a\v\x06\r\x02!\x14\x15BC\x14\x153\x13\x12)$$j\x19?\n\n\x15\v'&&'77\x01I\xc3\v\n\x10\x03\x06\x06\x11\x01\x10'\x1b\x1d\v\v\x14\x99\x10\x18\x0f\x18\"\x06#\x06\x12\x1e\x18\x1c\x1b\x16\x14\x1b\x94\x17\f\x01\xd3\x06\x18\n\x0f\b\x04\x1c\x14\xfe \x14\x1c\x1b\x02\x04\x13\x04\x035\x01\x04\x1d\x01\x02\x01\x01\x88\b\x01\x01B\v\x13\x1b\x02\x04\x13\x03\x01\x01\x024\a\x05\x02)(\x05\x06+\x03\x06 \x03\x1b\x13\f(\x02\x03\x05\x03\a\x05\v\a\x10\x05\fg\x05\a\x02\v\x01.\x05\x03\x01(\x02\x10\x05\x1c\x14\x01\xe0\x14\x1c\x04\x06#\t\t\x16\b\f\x05\a\x02O\x02\x04\x05\a\x06\r\n\x14\b\n\x0f:\x01\x04\x05\x04\x01\x04\x06\x02\x02\x02SR\x06\n\a\x06\x030\x01\x17\v'\b\x02\x93\x06\x01\x03$\t\x0f\x14\x04\x06\x11 \x01 \b\r\x10\x0e\x18!W\t\x0e\x10\r\x18!\x1f\t\x0e\x10\r\x1a \n'&&'889\x01\a\x02\x01\b\x02\x01\x01\x16\x10\x10\x02\t\x04\a\x03\x05\x02\x01\x10\a\x18\x18\x1c\x1a\x1d\x11\x18\x1f\"\a\"\x06\x13!L\f\x17p\x11\x11\x01\x18\x0e\x04\x04\x0f\r\x02\t\x04\x05\x03\x02\x19E\x1e\b\a\x0fZ\x16\x06\t\x05\x03\x01\x17\x17\x17E\x16\x166\x14\x14\f\x0f\r\t8\x1b\x03\t\b\x11\x88\f\x0e\x0e\x0eEj \x0e\x05\x04\x0e\x0e\f\x05\x06\x02\x19E\x1d\b\a\x0fP6666\x0f\x0fEBB//(\x1c\xbb\x01\x03\x02Z\x14\x1c\x1c\x14\xcc\x06\t\t\x06\v\x02\t\x02\x03\x04\x02\v\x19\v\x0e\t\t\x06\t\a\x01\x04\x03\x16\f\a\x03\\\x13\t\n\x15\b\r\t\t\x05\x01\x01\x01\x01\x01\f\x12\x03\x18\x03\x15\n\a\x04\x04&\fn\x14\x1c\x1c\x14\xaf\x05\x05\x01\x01\x02\x02\x06\x05\x01\x01\x02\x01\x06\x06\x02\x05\x04\x06\x01\x05\x06\x02\x03\x02]\a\v\b\a\x03\b\b\a\a\b\x10\x06\n\a\t\x01\x03\t\r\x03\x02<\a\x05\x01\x01\x06\x1a\t\x0f\x06\x05\x02\n\v\x14\x0e(\x06\x05\x03\x01\n\v\x15\x0f\a\x04\x02\x01\n\v\x16\x0f(\f\x0f\r\x01\x0eE^\x01\x11\x01\x01\r\f\x0f\x0f\x02\x03\x04\a\x04\x147BB11E44\x0f\x0f\"#\f\x1c(E\x00\x00\v\x00\x00\xff\xe0\x02@\x01\xa0\x00\t\x00\x13\x00\x1c\x00,\x00A\x00X\x00r\x00\x87\x00\x9e\x00\xab\x00\xb5\x00\x007\x14\x06#\"54632'2\x16\a\x06+\x01743!2\x17\x14+\x017437\x11\x14\x06#!\"&5\x11463!2\x16\x054+\x01\"\x0f\x01\x06;\x012?\x0146:\x023267#\"\a&#\"\x06\x15\x14\x16327\x06\x15\x14;\x012?\x014\x177454+\x01\"\x0f\x01'&+\x01\"\x150\x1e\x01\x17\x06\x15\x14;\x01274+\x01\"\x0f\x01\x14;\x012?\x01>\x01:\x021267#\"\a&#\"\x06\x15\x14\x16327\x14\x15\x14;\x012?\x01474+\x01\"\x15\a\x15\x14;\x0127'2\x15\x14\x06#\"546\xba\f\n\x10\r\t\x10j\v\t\x02\x02\x14\b\x05\x03\x01 \x12\x01\x16\b\x04\x03\xd8\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe0\x14\x1c\xfe@\"(\x05\x01\x10\x01\x04\x13\x05\x01\x04\x03\x05\x04\x05\x01\x16\x18T\x12\x04\x01\a\x10\x12\x1a\x12\x0e\x10\v\x01\x03\x11\x04\x02\n%@\x03\x13\x03\x02\x1a\v\x02\x04\x12\x04\n\v\x01\x15\x03\x13\x03\xa1\"(\x05\x01\x10\x03\x15\x03\x01\x04\x01\x03\x04\x04\x06\x16\x18T\x12\x04\x01\x06\x11\x13\x19\x11\x0f\x10\n\x03\x11\x04\x02\n,\x03\x13\x03\x10\x03\x11\x04\x01J\x10\f\n\x10\r\xbe\t\r\x0f\t\r!\x05\n\x0e\x1b\x02\v\x12\x1b\x02\x82\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\x9b\x1c\x05f\x04\x06\x1a\x02\x03\x18\r\b\n\x1b\x13\x0e\x12\f\x03\x03\x04\x06@\x04b\\\x01\x01\x04\x03'&\x04\x04\x1d\x1f\x02\x1d\x03\x03n\x1c\x05f\x04\x03\x1d\x02\x03\x18\r\b\n\x1b\x13\x0e\x12\f\x05\x01\x04\x06@\x04!\x04\x03h\x01\x03\x061\x0f\t\r\x0f\n\f\x00\n\x00\x00\xff\xe0\x02@\x01\xa0\x00\a\x00\x13\x00#\x00@\x00P\x00Z\x00^\x00b\x00q\x00\x87\x00\x00%2\x16\x15#4>\x01\a2\x1e\x01\x15\x14\x06#\"'5672\x16\x15\x11\x14\x06#!\"&5\x11463\x174.\x015432\x175&#\"\x0e\x01\x15\x14\x1e\x01\x15\x14#\"'\x15\x1632675#5\a\x15\x14\x163275\x06&=\x01\x175&\a'#\x15356\x175#\x1575\a\x15\x172654&#\"\a'#\x1575\x167454&#\"\x0e\x02\x15\x14\x1e\x013275\x06#\"'\x01\xec\b\n$\x05\tq\x06\n\x06\f\n\n\a\x06\xa4\x14\x1c\x1c\x14\xfe \x14\x1c\x1c\x14J\x1b\x1b\f\x12\x11\x10\x13\x0e\x16\f\x1b\x1b\x0e\x11\x15\x12\x14\x17\x1bE\x1b#\x15\x10\x11\b\x03\x18e\x14\n\x02\x1f$\n=$$$n\x15\x1c\x1d\x14\x0f\f\x02 $\r\xad\x1b\x18\r\x14\x0e\b\x10\x1a\x11\x17\x11\x10\x13\x1a\x02\xe3\v\f\b\v\x04\x02\t\x0f\t\x0f\x13\a5\a\xbf\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xf9\x12\x13\b\x06\a\t\"\x06\t\x13\f\x11\x12\t\x06\t\f\"\b\x15L\x1e\x1f\br\x0f\x15\x05\x1c\x03\x03\r3\x03!\a\x12\v}U\rb}}\x8f\x1d\a\x1d\x8a! \x1e\"\v\t\xa6\b(\t3\b\x05\x1d$\n\x11\x18\x0e\x15\x1d\x0e\t\x1d\b\x15\x00\x00\x00\x00\x01\x00\x00\x001\x02\x00\x01O\x00X\x00\x007\x0e\x04#\"&54632\x1e\x05\x17\x16\x17\x1e\x023254.\x05'&54632\x17\a&#\"\x0e\x01\x15\x14\x16\x17\x1e\t\x15\x14#\"&'.\a#\"\x06\x15\x14\x1e\x0126?\x01\xe2\x01\x06\x12\x14#\x12>BD@\x17%\x1a\x17\x0e\x10\a\b\x05\x02\b\x15)\x1c=\x03\n\b\x12\n\x1a\x05D<-^\a;\x03+\r\x12\n\x0e\x13\x02\x1c\x05\x19\a\x14\x06\r\x05\x04zFE\x10\x03\r\x04\f\b\x0e\x0f\x14\f\x1f)\x11 (&\t\tQ\x01\x05\n\b\aFCFM\a\v\x17\x11%\x16\x18\x0e\b\x17\x1f\x14\x1f\x06\v\b\x05\x06\x03\x05\x02\x10<-'J\a#\a\x0e\n\x0e\x10\x04\x01\x06\x01\a\x04\t\b\r\x0e\x13\nQ60\t(\x0e\x1f\n\x13\x06\x06/3\x1b*\x16\x11\b\t\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00g\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01254.\b1&5432\x177&#\"\x06\x15\x14\x172\x1e\b\x15\x14#\"'.\t#\"\x06\x15\x14\x1e\x01326?\x01'\x06#\"&54632\x1e\x06\x17\x1e\x04\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01\x04L\x03\x02\t\x04\f\x04\x10\x03\x13\x15\x1a\x1b\x02$\x04:\x1d%+\x03\n\x06\b\x05\x06\x04\x04\x02\x02&.\x10\x01\t\x02\t\x04\n\b\x0e\x0e\x12\v(+\x13#\x1a\x12\x1f\x06\x06\v\x14\x1c\x13\x18\x1a\x13\a\r\t\t\x05\a\x03\b\x02\x03\n\x0f\x15\x1d\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xc73\x06\f\t\b\x05\x06\x02\x04\x01\x04\x05\x10\x14\x16\x04/\x19\x1c%\v\x02\x02\x02\x02\x02\x03\x03\x04\x05\x03\x13.\x03\x1c\x06\x17\x05\x11\x04\n\x03\x030,\x1c&\x14\n\x05\x04 \x15\x1f\x1a \x1e\x04\x04\f\a\x13\b\x1a\x05\v\x12\x11\v\a\x00\x03\x00\x00\xff\xc8\x02\x80\x01\xb8\x00\x1d\x00;\x00G\x00\x00\x012\x16\x14\x06+\x01\x16\x15\x14\x06#\"&'#\"&46;\x01&54632\x16\x17\a4'!\"&463!.\x01#\"\x06\x15\x14\x17!2\x16\x14\x06#!\x1e\x01326%32\x16\x14\x06+\x01\"&46\x02h\n\x0e\x0e\n5\x05\x91gL|\x1dC\n\x0e\x0e\n5\x05\x91gL|\x1d\x1d\x06\xfe\xd6\n\x0e\x0e\n\x01\x18\x1a^8Su\x06\x01*\n\x0e\x0e\n\xfe\xe8\x1a^8Su\xfe\xd0\xd0\n\x0e\x0e\n\xd0\n\x0e\x0e\x01 \x0e\x14\x0e\x17\x19g\x91TD\x0e\x14\x0e\x17\x19g\x91TD`\x18\x18\x0e\x14\x0e/9uS\x18\x18\x0e\x14\x0e/9uk\x0e\x14\x0e\x0e\x14\x0e\x00\x06\x00.\xff\xc0\x01\x92\x01\xc0\x00'\x00/\x008\x00E\x00\x81\x00\x87\x00\x00%\x1e\x01\x15\x14\x06#\"&547&54632\x17&54>\x0232\x17\x16\x17>\x0432\x16\x15\x14\x0f\x01\x17654#\"\a\x14\x176\x17'&\a\x06\a\"\x0e\x01\x15\x14\x1632654&\x17>\x01&'.\x01#\"\x0e\x01\x15\x147232\x17\x06\a\x06\a\x0e\x01\x15\x14\x16\x150\x061&'\"#\x16\x06#\"&7\x1e\x0432654&#\"\x06\x17\x1e\x0132'\x16\x1767&\x01[!\x16iVF_3\b\x1f\x12\b\f/\x06\v\x11\f%7\x02\x01\x01\x12\x10\x17\x1a\r\x14\x17P!\"/\v\x10\xbf.\x06\x1d\"\x17\x10\b\x02\x04\t\a=\x0f\x05\x060\xa5\x1a\x15\x06\n\x10Y!\b\b\x01r\x04\x02\x0f\x02\b\x13\x13\b\x13\x19\v\x02(\x02\x02\n\x04\x17\x13\x1e1\x15\x06\x10\a\n\a\x05\x03\t.\t\x0f\x10\v\x11C-A6\a\x02\v\t\x1d\xe9\b0&Xs\\99\x0e\x16\b\x12#\x05\x85\x1d\v\x13\x0e\b\xa6\x05\x01\x023%/\x1a\x1c\x15\x1f\x13^\x06\x82\x12\x10\x04\x1dx\x04\x03eC\x05\x02\xd1\a\n\x04\x11Q\b\x04\x0f\\\xba\x1cP:\b\x0e\x10\x05\x04\x05(\x01\x15\b\b\a\x06\r'\x14\b!\t\a\x02;\x0e\x1cA\x16\t\x15\t\n\x03\x05\x04\n?$!)/\xaf\x14\x05\f\a\x06\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x02\x00\x12\x00\x19\x00\x00\x13\x17#%\x11\x14\x06#!\"&5\x11463!2\x16\v\x01#\x0337\x17\xe0+V\x01\v\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1cA_\x80_[p\x18\x01)\xa0\xe7\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xfe\xa7\x01*\xfe\xd6[[\x00\x00\x17\x00\r\xff\xcf\x023\x01\xb1\x00J\x00M\x00R\x00_\x00f\x00i\x00n\x00q\x00u\x00z\x00\x83\x00\x87\x00\x8e\x00\x94\x00\x99\x00\x9c\x00\xa1\x00\xa8\x00\xb0\x00\xb6\x00\xb9\x00\xbe\x00\xc8\x00\x00%\x16\x15\x14\x0f\x01\x16\x15\x14\x0f\x01\x16\x15\x14\x0e\x01#\"'#\x06\"'#\x06#\"&547'&547'&54?\x014&14?\x01&54>\x0132\x17362\x173632\x1e\x01\x15\x14\a\x172\x16\x15\x14\a\x015#75\a\x16\x1575'\x06#\a\x14\x15\x14\a\x170\x1775\a\x141\x14\a75\a\x055\a\x177\x0f\x013'7'\a\x1f\x0137'7\a\x177&=\x01'&'#\a\x17'#\x177#\x06\"\a\x157'\"\x0f\x01\x15\x177'\a\x157\a\x1537'\a37#\x15\x17\x16\x173'#\a362?\x01#\x176?\x02#747'\a74547'\a\x1767\x02&\f\f7\x01\f4\x01\x04\a\x04\a\x04k\x05\x0e\x05j\x05\a\x06\t\x014\f\x017\f\f6\x01\t8\x01\x05\a\x04\a\x04j\x05\x0e\x05j\x05\a\x04\a\x04\x018\x06\b\x02\xfe\xa6,,-\x01,3\x03\x044\x018\x043,\x02.,\x01rb@#\xbd\f\x17\fPSPY\x11|\x06D\"uSb\x02:\x01\f\x04\xa69\nh3\x94K\x04\fx63\x01\x01\x01)O<<$$k\x11R#\x01[c\x01\x03\x84i\\&\\a\x04\f|\x12sZ\x02\x01\x11#\x16\x16\x01\x11\x04V\x01.#\x15\x01\x03\xcf\x02\r\f\x03_\x03\x02\f\x03Z\x02\x02\x04\a\x04\x04\x05\x05\x05\t\x06\x02\x04Y\x03\f\x02\x03_\x03\f\r\x02\\\x01\x01\n\x04a\x03\x02\x04\a\x04\x06\x06\x06\x06\x04\a\x04\x02\x03`\t\x06\x03\x04\xfe\xd7L\b30\x02\x01?\\4\x02Z\x01\x03\x02\x02`\x02\x9cH\x10\x01\x04\x04!\x017\x16\x13\x16\x17&'\x06\a67\x067\x0e\x01\a&'>\x017\x16\x06\x06\x83\\\x18\x19\\\x8c\x01gq\xa7!\x18\x15!\xa5p\x1b$\x12\x1074(-Cy\x06\x06U\x82#\x1f\x1a\"\x9ag\f\x8a\x1a\x1a\\\x83\x05$\x8da!\xa9r\x13\x1ep\xa7!\x13\xfe\xe90>\x0e\x14\x19\a}B-k#\x84V\x04\vh\x9d\"\x1b\x00\x00\x00\x03\x00\x06\x00\x00\x02:\x01\x80\x00\x0e\x00%\x00:\x00\x00\x01\x17#&\a&#\"\a\x13632\x176\x13\"'&#\"\a&#\"\a\x06+\x01\x13632\x17632\x17\v\x01&#\"\a&#\"\a\x03>\x0232\x17632\x16\x01\x83\x0f\v8/-:8C\x1f,0=*)\xf0$\"75>))>57#\"\x01*>G@**@G>\x01\"/6>))>6/\"\x1d!1\x188//8#9\x01Q\xf9\x01\x1d\x1c\x1c\x01\x02\x13+)\xfe\xb1\x10\x19))\x19\x10\x01]#\x1d\x1d#\xfe\xd0\x01\x18\x15&&\x15\xfe\xe8\f\f\t\x1d\x1d\x10\x00\x00\x00\x05\x00\x06\xff\xe0\x02z\x01\xa0\x00\x1c\x00,\x00<\x00M\x00]\x00\x00%\x1e\x01\x15\x14\x06#!\"&5467&54>\x0132\x17>\x0132\x16\x15\x14\x0554&+\x01\"\x06\x1d\x01\x14\x16;\x0126754&+\x01\"\x06\x1d\x01\x14\x16;\x0126754.\x01+\x01\"\x06\x1d\x01\x14\x16;\x0126754&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x02\x1c)5I2\xfe\x822I' \x03\x16'\x17\x1f\x18\x0e[:Ec\xfe\xa8\t\x06\x1f\a\t\t\a\x1f\x06\tY\t\x06\x1f\x06\t\t\x06\x1f\x06\tZ\x04\a\x04\x1f\a\t\t\a\x1f\x06\tW\t\x06\x1d\x06\t\t\x06\x1d\x06\t\xd3\nC+3HH3$<\x0f\v\f\x17&\x17\x158HcE\x14\xb6o\a\t\t\ao\x06\t\t\x06\x84\x06\t\t\x06\x84\x06\t\t\x06\xa3\x04\a\x04\t\x06\xa3\x06\t\t\x06\xe1\x06\n\n\x06\xe1\x06\t\t\x00'\x00\x00\xff\xc3\x01\xc0\x01\xbd\x00\x03\x00\a\x00\v\x00\x0f\x00\x13\x00\x17\x00\x1b\x00\x1f\x00#\x00'\x00+\x00/\x003\x007\x00;\x00?\x00C\x00G\x00M\x00U\x00u\x00y\x00}\x00\x81\x00\x86\x00\x8b\x00\x8f\x00\x93\x00\x97\x00\x9b\x00\x9f\x00\xa3\x00\xa7\x00\xab\x00\xaf\x00\xb3\x00\xb7\x00\xbd\x00\xc1\x00\x00?\x01\x17\a\x177\x17\a?\x01\x17\x0f\x017\x17\a'7\x17\a\x177\x17\x0f\x017\x17\a?\x01\x17\a\x03\x15#5#\x15#5#\x15#53\x15#53\x15#53\x15#5#\x15#53\x15#5\x01\x15#57\x15#5\a\x15#53\x15\x16\"&462\x16\x14'\x14\x166\x16\x15\x14#\"'\a\x1632654&\x06&5432\x1737&#\"\x0e\x01'\x15#5\x0553\x15%\x15#5\x03!\x11\a'%\x11!\x11\x17\x135!\x15\x17\x15#5\x17\x15#57\x15#5\x0553\x15'53\x15'\x15#5\x1753\x15\a53\x15'\x15#53\x15#5\x175#53\x15'\x15#5d\x04\x1f\x04\b\x05\x1e\x04\x8e\x1e\x04\x1e\x89\x05\x1e\x05\x95\x05\x1e\x04\xb5\x1e\x05\x1f,\x1f\x05\x1fr\x1f\x04\x1f\xb9\"\r\"\r\"\xaf!\x80\"Q\"=!\xaf\"\xfe\xc1\vQ\"$\v\"\xb8L66L5\x8b\x18\x1d\x18!\x1c\b\t\x13\x1c\x13 \x19\x1d\x19\x1e\x1b\t\x01\b\x1d\x0f\f\x14\x11y\v\x01a\v\xfe\x9f\v*\x01\xc0\xe2\xde\x01\xa3\xfez\xc1\xc5\xfez\x18\v\v\v\x80\"\x01\x03\v\v\v\xbd!\xd3\v\v\v\x8e!Q\"u\x17\"/\"&\n\x0e\n\x04\n\r\n\x1b\x0e\n\x0e\x15\n\x0e\nB\n\x0e\t\x19\r\n\r\b\x0e\n\x0e>\x0e\n\r\x01g\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\xfe\xd0\"\"\xd8\v\v\v\x17\"\v\xe45L55L:\x0f\f\x02\x05\b\x0f\x0f\x12\f\x0e\x11\x10\x0e\x02\x03\a\x0f\r\x10\f\x04\x0fI\"\"\xcf\"\"M!!\x010\xfejbb\x13\x01\x0e\xfe\xf2U\x01\x80;;\x82!!+!!\x82\v\v\xa3!!+!!x\v\vM\"\"\x82\"\"\xcf\v\v\v\v\"\x17\v\"\"\v\v\x00\x00\x00\x00\x03\x00\x04\x00\x00\x01\xfc\x01\x80\x00\x1a\x00\"\x00*\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1e\x01\x1d\x0135463\x02264&\"\x06\x14\x16264&\"\x06\x14\x01\xe1\v\x10\x10\v\xfe>\v\x10\x10\vj\a\f\a\xba\x0f\v\xfd7''7'\xfc7''7'\x01\x80\x0f\v\xfe\xb4\v\x0f\x0f\v\x01L\v\x0f\a\f\a((\v\x0f\xfe\xdc'7''7''7''7\x00\x00\x00\x01\x00\x00\x00\x04\x02\x80\x01|\x00Y\x00\x00%\x14\x06#\".\x06#\"\x0e\x01\x1e\x01327>\x0332\x16\x15\x14\a\x0e\x01#\"&54>\x0132\x1e\x0632>\x01.\x01#\"\x06#\"&54654&#\"\x0e\x01#\"&547632\x1e\x02\x15\x14\a632\x16\x02\x80D2\x1d6()!)'5\x1d*9\r\x0e<+C;\x01\a\x06\x06\x02\x05\x06\x12 S(@Z)F*!<,,\"'%.\x19\x1c&\t\t%\x1a\t!\x05\x06\n\x06C2\x18(\x17\x02\x05\x06\b&@\x1e3%\x15\x01\x12\x12.Bw1B\x16#-/,$\x15,>>,*\x01\a\x05\x04\a\x04\b\x10\x1c\"R?*E&\x15\",/,\"\x16\x1d))\x1d\v\t\x06\x06\x18\x062A\x12\x13\a\x05\x05\t,\x15%3\x1d\f\t\x05>\x00\x00\x00\x00\x01\x00\x00\xff\xc6\x01\x80\x01\xba\x00@\x00\x00\x132\x16\x15\x14\x0e\x02#\"&'\x0e\x06\a\x06\"'&54>\x017&5476\x17\x16\x15\x14\x06\x15\x14\x1632>\x0254&#\"\x06\x15\x14\x16\x15\x14\x06#\"&546\xccIk\x13$=&\x14(\t\x03\v\x03\t\a\r\x0f\v\x03\x01\x03\x04\r\x1b\x02\n%\x1e\x12\t\x1a\x1b\x13\x18&\x13\tA50Pd\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00 \x00H\x00\x00\x01\x16\x15\x14\x06#\"'\a7&54632\x032656'&\"\x06\x15\x14\x1f\x01\a7\x17\x167\x16\x17\x16\a\x0e\x01\a\x06'&'&54763232\x17\x161\x16\a\x0e\x02\x17\x1e\x01\x17\x167676\x17\x16\x01}C\x84\\91v \x1e\x82\\\\\\Ln\x0196\x98m\x1d\x04\x13F\a+\x98\n\x01\x03\a\x03\x19\t\x1a)1-\x17\x13\a\b\b\x03\t\x03\x11\x03\x02\x04\f\x02\x02\x0e!\x1c\b\x04\r\x05\x04\b\b\x01_CZ\\\x82\x1b\x1fs3<\\\x82\xfeimLJ86lL5-\aD\x12\x04\x1a\x8b\x05\x02\x06\x15\b\x11\x01\x04\x12\x15?\x1f\x1a\x19\x16\x06\t)\x06\x04\t\r\x02\x06\x1a\x1a\x0e\x04\x05\x0f\a\x06\x03\x03\x00\x00\x00\x02\x00\x00\xff\xe0\x01\x80\x01\xa0\x00\x16\x00\x19\x00\x00\x01\a3\x15#\a3\x15#\a'#53'#53'3\x1737\x037#\x01\x8000D\x0eRgYYgR\x0eD00@Q^Q\x80\x1b6\x01\xa0p0 0\xd0\xd00 0p\xc0\xc0\xfe\xd0@\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00(\x00\x00\x11!\x11!\x015#\a'#\x15\x17\x16\a\x15\x16\x0f\x01\x1535'&75\x1737\x15\x14\x0f\x01\x1535'&75&7\x01\xc0\xfe@\x01tS;DW\x1c\x05\x01\x01\x05 Z \x05\x01O\tC\x02\x18v\x18\x03\x01\x01\x03\x01\xa0\xfe@\x01V\x05\x94\x94\x05\"\x04\x06\x85\a\x06&\x05\x05&\x06\as\xab\xab\x89\x04\x02\x18\x05\x05\x17\x03\x04\xa9\x04\x03\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00\x0f\x00\x00\x01\x11!\x11\x137#\a\x06\a/\x01#\x17\x153\x01\xc0\xfe@\xecN!.\a\x06\f-#L\x1e\x01\xa0\xfe@\x01\xc0\xff\x00\x92[\x0e\r\x1b[\x90^\x00\x00\x18\xff\xfe\xff\xcd\x02B\x01\xb8\x00\x8d\x00\x98\x00\xa2\x00\xab\x00\xb5\x00\xbf\x00\xc9\x00\xd5\x00\xe0\x00\xeb\x00\xf8\x01\x02\x01'\x018\x01I\x01[\x01n\x01z\x01\x81\x01\x8e\x01\x9c\x01\xa8\x01\xb4\x01\xbf\x00\x00%\x16\a\x16\x06\a\x06'\x06'\x06'.\x01567&6\x1767&\x176746\x176\x175\".\x01'&7>\x0176\x172\x17263&'&'45&'&676\x16\x17\x14\x1e\x026\x166\x166\x1767&\a6767&'6\x17\x16\x17\x16:\x01>\x045>\x01\x17\x16\x17\x16\a\x06\a\x15\"\a\x06\a2\x163636\x17\x1e\x01\x17\x16\x17\x16\a\x0e\x01#\x14\x156\x176\x16\x15\x16\x176\x16\a\x16\x176\x16'\x16\x176&'.\x01\x06\x15\x14\a\x06\a\x16\a6767&'\"#\x16\x17276&\x0567&54&\a\x0e\x01\x17\x16\x17&7&'\x06\a\x16\x1767\x06\x0f\x015\x06\x17\x167\"\x0e\x01\x15\x14\x162654&\x17&#\x16\x17\x16327>\x01'\"#\x06\x16\x17\x162764\a64'*\x01\x06#\x0e\x01\x17\x1e\x01'\x06\x16\x17\x167>\x017\x06\a\x16\a\x16\x17>\x017&7.\x02#\x06\a\x06'&'\x06\a\x06'\x0e\x02\a\x06'\x06'&'&'\x06\a65.\x02'&\x06\x17\x1e\x03\x1726'\x16\x1767&'\x06\a\x06\x16\a\x06\a\x06\a\x06\x05.\x04'\x06\a\x06'&'\x06\a\x155\x16767#65&'&'&7&5&'\x06\a\x16\x176&\a\x0e\x01\a\x14\x163>\x01\x03.\x01\a>\x01\x16\x016\x16\a\x0e\x02\a\x06&5467\"&7\x16654'6\x16\x15\x14\x06\a4>\x0176\x16\a\x06\a\x06&%\x1e\x01\x15\x14\x06'.\x01'&6\a\x1e\x01\a\x14\x06'&'&6\x02=\x02\x01\x013\x17\x1e\r\xb9\x9b\x0e\x1d\x173\x01\x01\x04\x02\b\x04\a\x04\x0f\a\t\r\x04\x10\v\a\x13\x12\x02\b!\x01\t\x05\n\x04\x11\x04\x03\v\x03\x04\x04\a\x12(\x0f\x10\b\x15\x06\x0f\x01\x01\x01\x01\x01\x03\x03\x06\x06\x04\r\x0e\v!\x1c\x1d'%\r/\xa1T\x1a\x10\b\v\b\x05\x03\x02\x01\x01\x01\x0f\a\x13\x05\x05\x11\x0f'\x13\a\x04\x04\x03\v\x03\x03\x12\x04\n\x05\t\x01\x15\x04\x02\x02\x04\x1e\f\v\x10\x04\r\t\a\b\x05\x02\b\x03\b\x02N\x16\b\x01\a\b\x03\a\x04\a\x04\n\x15\b\x12\b\x03\x02\x024\b\x04\f\x03\x05\x06\x05\t\xfeP\b\x16\x03\b\x06\a\b\v\b\x12\a\x14\n\x04\x1b\x03\x032\x04\x10\x05\n\f\r\a\b\xbd\x15#\x14-?,,T\x06\"\x04\x02\x02\x04\x02\x03\v\v5\x1d\x1c\x01\x02\x03\b#\b\x03J\x03\x01\a\x17\x14\b\x02\x01\x05\t$a\x05\f\x0f\b\x02\x01\x02\x02\x118\x05\rKQ/K*\n\x02\x04\t\n\x03\n\x14\v\x06\x02\x03\x03\x15\x1d\x0f\x02\b\a\n1\x06\x01\x18\x0e\x06\x05\x02\x10\x1d\x01\x03\n\x0e\a\x122\x02\x05\x0e\x10\x11\a\x0e\x17\x06\x0f\x0255+7\x01\x06\x01\b\x02\x03\f\x03\x05\x01\x01S\r\x14\x18\x16\x19\f\x14\x16\x02\x02\x11\x1298\x8f\xb1\x02\x0f\x01\x01\x04\x04\v\x04\x02\b\x01\x04\x03717\xa3\x022\x12\n\x13\x05\x19\x10\x0e$\xb2\x1bB!\f<4\xfe\xd8\v\f\x05\x02\f\x10\x05\r\x14%\xe5\x18 \x05\n%\x11\x190\x1f\xf4\v\x0e\x04\x06\x06\x02\x06\v\a\x0f\x01\xb1\r%\x14\r\t\x17\x04\x04\f\v\a\x17\x01\x0f\x06\r\x05\x02\x06\x1b\a\x04\x17)\x01\x02\x19\x06\x06\x18\x01\x01)\x17\x06\x05\a\a\x03\a\a\x11\b\x05\x04\v\x01\x06\x03\t\x14\b\x11\v\"\x0e\x04\n\x02\x03\r\b\x01\x03\x02\v\x01\x01\x01\x01\x11\x12G\x0f\x04\x06\b\x02\t\x01\b\x01\x06\x02\x05\x04\x02\f\b\x01\x05\x1c\x0f\x13\x04\x05\v\"G\x17%\x01\x03\x01\b\x02\n\x02\a\a\x05\x0e\"$\x13\x11\x01\x03\v\x02\x03\x02\t\f\x02\x01\n\x05\t\x11\v\v\x11\x13\r\a\b\x02\x06\x01\v\x04\x05\x04\x06\a\b\x06\x03\a\xf7\t\x1b\n!\b\x03\x02\x03\x03\b\r\x04\x02\x18'\x04\b\x04\x04(\x02\x1f!\x01\x12$\r\x1b\t\a\a\x05\x01\x05\b!&\b\x04'\x18\x02\x04\t(\x05\x11\"\x1d\x01\x04\x05\x01\x19\x1c\x01\xa3\x15#\x14 -- \x1f-\xaf\x01\x12\x18\x11\x01\x06#\x12\a \x02\x04\x03\x05\x1d.\x06&\n\x01\n$\x05\x04\x016\x10 \a\x04\t\x04(\b\x01 \b\x05O\x1b\r4*\x04\a\x01\x01\x01!\x06\x04\f\x03\r\a\x02\x02\x05\x06\x06\x01\x01\x05\x10\x18\r\a\v\b\n\x02\xae\x04\x04\r\x16\x11\x02\x06&\x16\a\x0e\t\x06\x01\x10O\x1b\x19\x1f\x10\x176\x01\x02\x02\a\x04\x06\x03\x03\x03\x17R\a\v\f\n\t\x04\t\a\x01\x01\x05\b\x10\"\x01\x01\x06\x12\x1b\x19\x15\x14\x02\x05\x02\x06\x06\x05\x01\x01\x01\x023\x19\x11%\x16&\x06\x03 \x13\x11\x14\x01\x15\x01\x8a\x1d\r\x13\x1c\x0f \xfe\x92\x01\x17\t\x05\v\n\x01\x04\n\t\f\x1e\xb1#\x19\x10\n\x11\x11\x05\n\x1c\x1a\x15\x1c\xf3\x04\v\t\x01\x01\x0e\x05\f\x05\x02\aH\x01\x1e\f\t\n\x04\x02\x12\a\t\x17+\x01\x12\x06\x05\a\x02\x05\f\x05\x0e\x00\x00\x00\x03\x00\x00\xff\xd9\x02\x84\x01\xa7\x00\a\x00\x0f\x000\x00\x00$\x14\x06\"&462\"2\x16\x14\x06\"&4\x012\x1e\x04\x0e\x03\a\x06\a>\x03.\x01\a\x06.\x06'\x1e\x02\x01\xa7\x1a&\x1b\x1b&\xf7&\x1b\x1b&\x1a\x01Q';(\x1e\b\x06\x12\f'\x18\x1b3\x1c\f3&\x14\x17XQ:aB9\x1f\x1e\f\x13\x03*e\x9e\x1a&\x1a\x1a&\x1b\x1b&\x1a\x1a&\x01)\x02\b\x06\x11\v\x1a\x10#\x15\x17,\x19\x168%'\x17\r\x01\x01\b\f\x17\x12\x1e\x11 \x05,)\x0e\x00\x00\x00\x00\a\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00#\x003\x00?\x00O\x00W\x00_\x00\x00\x122\x16\x14\x06\"&4\x17#\x15\x14;\x012=\x014>\x01\x1e\x01\x1d\x01\x14;\x012=\x014&#\"\x0e\x01\x1754&+\x01\"\x06\x1d\x01\x14\x16;\x0126'\x15\x14+\x01\"=\x014;\x012\x17\x14\a\x15\x14+\x01\"=\x01&5462\x16\x022\x16\x14\x06\"&4\x12264&\"\x06\x14\xa0\xb0}}\xb0}t\x01\t\x12\t\x19%$\x1a\t\x11\t9(\x1a-\x1a\xef\v\a\xf8\a\v\v\a\xf8\a\v\xf8\x05\t\x04\x04\t\x05\x8d\x11\t\x12\t\x12\x15\x1e\x14\x8aΑ\x91Α\x99\xbe\x87\x87\xbe\x87\x01\x95}\xb0}}\xb0\b\x1b\t\t\x1b\x17 \b\b \x17\x1b\t\t\x1b(9\x1a-\xe6\x8e\a\n\n\a\x8e\a\v\v\x90\x85\x04\x04\x85\x055\x15\n\x1f\t\t\x1f\n\x15\x0e\x15\x15\x01\r\x91Α\x91\xce\xfe\xb3\x87\xbe\x87\x87\xbe\x00\x06\x00\x00\xff\xe0\x02@\x01\xa0\x00\b\x00\x10\x00 \x00;\x00N\x00c\x00\x00%531\x16\x15\x14\a\"\x17\x16\x14\a\x06#527\x11\x14\x06#!\"&5\x11463!2\x16\x05#\x14\x16\x14\x0e\x03#\"'\x15\x1e\x0223\x172>\x044&7.\x01\x0e\x01\x15\x14\x1e\x01675\x0e\x01&46\x16\x1f\x014.\x04'>\x0154.\x01'+\x01\x15326\x01\xb0&\r\r\x01\x05\x0e\x0e\x02((h\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe0\x14\x1c\xfev9\x01\x01\x04\b\x0e\n\x1b\x1e\b\x15\x10\x0f\x04\x04\x12\x1b\x12\f\x06\x02\x01\xb2\x1973!\"65\x17\x181\"\"1\x18\xb8\x03\x04\a\t\n\x05\x0e\x10\t\x11\vu\x03{\x12\x18\xcc \x03\r\x0e\x02\x14\x03\x1d\x02\x01#\xb8\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\x84\v \x11\x17\v\v\x05\x0f\x1c\x03\x03\x02\x01\x06\x06\x10\f\x1b\x11%\x06\a\x02\t!\x1a\x1b!\b\x03\x06\x1c\r\x04\x172\x17\x04\r=\x04\b\a\x06\x04\x02\x01\x02\x11\v\n\x0e\a\x01\x80\x12\x00\x00\x00\x00\x05\x00\x00\xff\xe0\x02@\x01\xa0\x00\a\x00\r\x00\x17\x00'\x006\x00\x00\x122\x16\x14\x06\"&4\x175\x0e\x01\x14\x16\x17>\x0154.\x03'72\x16\x15\x11\x14\x06#!\"&5\x11463\x012654&+\x01\"\x0e\x01\x15\x14\x163\xa7\x92gg\x92g\x88 ((p\x1f(\a\f\x12\x16\f\xf8\x14\x1c\x1c\x14\xfe \x14\x1c\x1c\x14\x01\x1aOywQ[5X4rO\x01pg\x91hh\x91\xb1\xd0\f9F8\r\r8#\x0e\x1b\x17\x14\x10\x04x\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe`qMTn0Z8Np\x00\x00\x04\x00\x00\xff\xc7\x01\xf0\x01\xb8\x00\x14\x00)\x008\x00D\x00\x007\a&#\"\x14327\x17\x06#\".\x0254632\x17\a&#\"\x14327\x17\x06#\".\x0254632'2\x16\x15\x14\x0e\x02#\"&54>\x01\x132654&#\"\x06\x15\x14\x16\xf6!\n\x12!!\x16\t\x1e\x15,\n\x16\x1a\x10-\x1c.\xa3!\t\x13!!\x16\t\x1f\x16+\v\x16\x19\x10-\x1b.yi\x8f)EZ0f\x92?sFQzvUVuw\xe9\x11\x14X\x15\x0f'\x06\x0e\"\x17(%$\x11\x14X\x15\x0f'\x06\x0e!\x18(%\xab\x90h6^?%\x91gBrD\xfe=sXUvzQSx\x00\x00\x00\x00\x02\x00\x00\x00\f\x02\x00\x01t\x00\v\x00\x17\x00\x007\x17\a'7\x17\a'\a\x177'7\x17\a'7\x177'\a\x17\a'\xb3gg\xb3\xb3-\x1a\x13\x80\x804M\xb3\xb3\xb3-\x1a\x13\x80\x804M\x19g\xdagf\xb3\xb3-\x19\x13\x80\x804L\xb3\xb3\xb3-\x19\x13\x80\x804L\x1ag\x00\x03\x00\t\xff\xc8\x01\xf9\x01\xb8\x00\a\x00\x13\x00\x1f\x00\x00\x122\x16\x14\x06\"&4\x177'\a\x17\a'7\x177'\a\x177'\a\x177'7\x17\a'\a\x9aΑ\x91Α\xc7JM\x185\x1bMM\v\x19#~\xe0~~JM\x185\x1aNN\v\x18\x01\xb8\x91Α\x91\xce\xe6KN\x195\x1aMM\v\x18$~|~~KN\x195\x1aMM\v\x18\x00\x00\n\xff\xf8\x00\x0f\x02G\x01k\x00\n\x00\x15\x003\x00;\x00M\x00U\x00]\x00j\x00u\x00}\x00\x007\x14\x0e\x01#\"&462\x16%2\x1e\x01\x15\x14\x06\"&46\x17\x06&'\a'\x0e\x01'.\x017&'3>\x01323232\x16\x173\x06\a\x16\x06$4&\"\x06\x14\x1627>\x017.\x01#\"#\"#\"\x06\a2\x1e\x02\x04.\x01\x0e\x01\x1e\x016$\x14\x06\"&462\x1754&#\"\x0e\x01\x15\x14\x1626%\x14\x0e\x01#\"&462\x16\x064&\"\x06\x14\x162\xa6\x06\v\a\t\x0f\x0f\x13\x0e\x01\t\a\v\x06\x0e\x14\x0e\x0ed/w%\x1f\x1e$s/0\x12#\t\x13Z$o+\x03\x04\x04\x03)m$`\x13\n#\x0f\xfe\xccC_DD_`\x04P7\x1bN\x1e\x02\x03\x01\x02\x1eP\x1b\x1c2%\x18\x01\x0e!VZ(!WY\xfe\xd2*;**;\x11\x1b\x14\f\x16\f\x1b'\x1b\x01:\x14 \x14\x1d**;)\x18\x1b'\x1b\x1b'\xa7\x06\v\x06\x0e\x13\x0e\x0e\x0e\x06\v\a\t\x0e\x0e\x13\x0e\x8b%\x0f//.-\x0f\"#v0\x1f\x1b\x16 \x16\x1a\x1f/u\x1f_CC_D~7L\x02\v\x11\x10\f\x16#1+Y(!VZ(!{;**;*H\x01\x13\x1b\f\x16\r\x13\x1b\x1b\x13\x13!\x13*;**1'\x1b\x1b'\x1b\x00\x00\x00\x00\x03\x00\x01\xff\xbb\x01<\x01\xc0\x00(\x004\x00@\x00\x00%\x06\a\x1f\x01\x16\x0e\x01'&'\a\x06.\x017617&'.\x017>\x01\x17\x1e\x0226?\x016\x16\x17\x1e\x01\x0e\x01%4632\x1e\x01\x15\x14\x06\"&7\x14\x162654&#\"\x0e\x01\x01\x13!9\x15L\r\f\x1f\x0f\x149L\r#\t\fL\x15; \x1b\x10\t\x06\x1b\x15\x04\x10140\n\v\x15\x1b\a\x03\x02\f\x0e\xfe\xfdL6#<#LlLB&4&&\x1a\x11\x1e\x11r\x15\x06\x15L\r#\t\v\x149L\r\f\x1f\x0fM\x14\x06\x15\x12\x17\x12\r\a\x0e\x03\n\x10\x0e\b\a\x0e\a\r\v\f\x10\v\xc36L#;$5LL5\x1a%%\x1a\x1b%\x11\x1d\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\a\x00\x17\x00\x1f\x00D\x00\x006462\x16\x14\x06\"7\x11\x14\x06#!\"&5\x11463!2\x16\x04\x14\x16264&\"\x17.\x01\a\x06#\"&/\x01&\x06\a\x06\x1e\x01\x17\x16\x17\a\x14\a\x06\x16?\x01\x16\x17\x166/\x0267>\x01\xb8\x18 \x18\x18 \xf0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xcf/D//D\u007f\x04\x10\x0e\x16%\x10\x1e\a\x06\x0e\x10\x04\x06\x06\t\f\x14%\r0\r\x1c\r0$\f\r\x1c\r/\r#\x15\x11\n\xfe!\x18\x18!\x17\x89\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1cSD//C0\xac\b\x04\b\x12\t\x04\x05\b\x04\b\a\x0e\b\b\r\x04\f\x01/\r\x1d\r0$\f\r\x1c\x0e0\f\x04\r\v\x0f\x00\x00\x00\x00\x02\x00\x00\xff\xf0\x01\xc0\x01\x80\x00\x0e\x00+\x00\x00\x012\x16\x1d\x01\x14\x06#\"&=\x01463\x1367>\x0154&#\"\x06\a\x06\a&'.\x01#\"\x06\x15\x14\x16\x17\x16\x17\x162\x01\x98\x11\x17\x83]]\x83\x18\x11\xcd\x18\")\x0f\x12\f\n\x10\"\x1b\x13\x13\x1c \x10\n\r\x12\x0f*\"\x18\t\x18\x01\x80\x18\x11\x87]\x83\x83]\x87\x11\x18\xfe\xf4\x17 '\x12\v\f\x12\f!\x1a\x12\x13\x1b\x1f\f\x12\f\v\x11( \x17\t\x00\x01\xff\xff\xff\xf1\x02\x80\x01\x8f\x00L\x00\x00\x01\x15\x06\a\x0e\x03\a#'\x0e\x01\a\x14&1.\x01'.\x01\a<\x0153\x15\x0e\x01\x17\x1e\x01\x17>\x027.\x01'5\x15\x0e\x01\x17\x1e\x01\x17676.\x01#<\x015:\x023\x15\x06\x0f\x01\x1e\x01\x17\x13.\x01#5\x02\x80'\x11\x06+&2\x12\x0eR\aJ\x12\x0f\x17a\x17\n0\x12\xa2\x12 \x06\aj\r\a\x1d!\x06\x05;\b\v-\x8e\x10\x13\x06\t\x1e\t\x1d\x13\x05\x06\x14\x11\x11<)\x05&\x14;\x03@\x02z\x05\x1e\f\x01\x8d\f\x01(\rcZs)\xc1\x0e\x8e%\x01\x017\xda8\x160\x01\x02\n\x02\r\x01\x14\x0e\x0e\xf6\x1c\r8=\r\n\x87\x0f\x13\x0e\r\x01\r\f\x14B\x137.\n\r\x06\x02\n\x02\r\x02\x1e{\t\x8f\x04\x01\x1a\x0f\r\x0e\x00\x00\x11\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\x02\x00\n\x00\x1c\x00.\x006\x00F\x00R\x00Z\x00l\x00~\x00\x8c\x00\x94\x00\xa6\x00\xb2\x00\xb6\x00\xc8\x00\xd0\x00\x00%\a7&2\x16\x14\x06\"&4\x05\x06\x15\x14\x17\x163237654'&#\"\a'\x14\x15\x14\x17\x1632?\x01654'&#\"\a&\"\x1d\x01\x142=\x01\a\x06\x15\x14\x1f\x01\x1632545'&#\"\x0e\x01\x14\x1f\x01\x16264/\x01&\x06\x14;\x0124+\x01\x17654'&#\"#\a\x06\x15\x14\x17\x1632?\x01654/\x01&#\"\a\x06\x15\x14\x1f\x01232\x17454#\"\x0f\x01\x06\x15\x14327\x1754\"\x1d\x01\x1427654/\x01&#\"\a\x06\x15\x14\x15\x17\x1632>\x014/\x01&\"\x06\x14\x1f\x01\x16'7\x0f\x01%654/\x01\"#\"\a\x06\x15\x14\x1f\x01\x1632724+\x01\"\x143\x01\x13mGTΑ\x91Α\x01\x94\x05\x01\x02\x05\x02\x01\x0f\x05\x01\x02\x05\x02\x01q\x05\x01\x02\x05\x02\x06\x01\x05\x01\x02\x05\x029\x10\x10S\x05\x01\x06\x02\x05\b\a\x02\x05\x02>\x05\x02\f\x02\a\x04\x02\v\x03B\b\x10\b\b\x10 \x05\x01\x02\x05\x02\x01\x0f\x05\x01\x02\x05\x02\x01\x13\x01\x05\x0f\x01\x02\x05\x02\x01\x05\x0f\x01\x02\x05`\b\x05\x02\x06\x01\b\x05\x02I\x10\x10C\x05\x01\x06\x02\x05\x02\x01\x05\a\x02\x05\x02>\x05\x02\f\x02\a\x04\x02\v\x03dt\xb0t\x01G\x01\x05\x0f\x01\x02\x05\x02\x01\x05\x0f\x01\x02\x05\t\b\b\x10\b\b\xadGm\xe5\x91Α\x91\xce\x1e\x02\x05\x02\x01\x05\a\x02\x05\x02\x01\x05\x01S\x01\x02\x05\x02\x01\x05\x0f\x01\x02\x05\x02\x01\x05\x13\b\x10\b\b\x10\a\x02\x05\x02\x01\x0f\x05\b\x01\x02\x0f\x05)\x05\x06\x03\v\x02\x04\a\x02\f\x02\x85\x10\x10Q\x02\x05\x02\x01\x05\a\x02\x05\x02\x01\x05\x01\x8e\x01\x02\x05\x02\x06\x01\x05\x01\x02\x05\x02\a\xdc\x02\x01\b\x05\x0f\x01\x02\b\x05\v\x10\b\b\x10\b\x0f\x02\x05\x02\x01\x0f\x05\x01\x02\x05\x02\x01\x0f\x05)\x05\x06\x03\v\x02\x04\a\x02\f\x02o\xb0t\xb0G\x01\x02\x05\x02\a\x05\x01\x02\x05\x02\x06\x01H\x10\x10\x00\x00\x00\x04\x00\x00\xff\xc4\x02\x01\x01\xb9\x00\r\x00\x18\x00\"\x00,\x00\x007'>\x0132\x17\x16\x17'&\x0e\x02\x174>\x0132\x16\x14\x06\"&%\x16\x06\a\x06'76&'\a\x1e\x017\a.\x01547\x84M#f7C:@!\xcd\x16)#\x1b\x19\x17&\x17#11F1\x01;!\x00\x00\x00\x01\x00\x02\xff\xc8\x01\xf8\x01\xb8\x00\xac\x00\x00%\x14\x15\x14\x0e\x01#\"&'4&5&7>\x017\x06\a67>\x01\x17\x0e\x01\x17\x16\x17&67>\x01\x17\"\x06\a\x06\x150\x15\x14\x16\x17\x166764'&'.\x01\a0#\"\a0#\a\x06\a9\x03>\x013676;\x012\x170230\x163\x16\x17\x16\x17\x16\x17\x16\x17\x16\x17\x16\x170\x16\x170\x1f\x01\x16\x142\x161\x16\x15\x17\x14\x170\x170\x17\x142\x142\x161\x14\x16\x1f\x01\x15\x16\x15\x16\x14\x16\x14\x17\x141\x16\x17\x16\x17\x14\x16\x170\x150\x16\x14\x1e\x011\x15\x16\x150\x161\x14\x170\x15\x14\x16\x141\x1f\x01\x16\x17\x15\x14\x01\xf8BsC\\\x8a\x0f\x01\b\x18\b\x1d\r\x17\x03\x11-%\\\x13*=\t\x03\t\b\x02\v\f\x1f\f\x04\f\x03\x06\x0f\v$`\x1b\x12\x16\f\x0f#a0\x01\x02\x03\x01\x06\x1d\x15\x01\x01\x01\x1f4\x16\x17\v\x13\x13\x02\x01\x04\x01\x1d\x1b\x05\x02\r\f\x06\x06\n\b\r\v\x02\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x03\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x05\x02\xcf\x05\tCsBuY\x02\x06\x02C9\x14%\x06,(9\"\x1b\a\x13\x0eb:\x15\x13\x121\x11\x11\r\x02\x13\x06\x0e\x10\x01\x0e#\n!\x11)\x1aV$\x12\x0e\"\x1c\t\x01\x02\x06\r\x01\x01\x1d\n\x05\x04\x01\a\r\x02\x02\x06\t\x05\x04\b\t\r\x0e\x03\x01\x01\x02\x01\x01\x02\x01\x01\x02\x01\x01\x02\x01\x01\x02\x02\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x06\x06\x01\x02\x01\x01\x02\x01\x01\x03\x01\x02\x02\x01\x01\x02\x01\x01\x02\x01\x04\x01\x14\x15\x05\x01\x00\x00\x02\x00\x00\xff\xd0\x01\xf1\x01\xc0\x00\x17\x00%\x00\x00\x01\"\x0e\x01\x16\x17\x16327\x06#\"#.\x01546;\x012\x17&\x13\x06&'>\x014&'>\x01\x17\x16\x14\x01:=`*\r&=W5.F_\b\x04c\x89\x91g\x01^F-0\x1fG\x1e*76+\x1fG\x1fO\x01\x9fJk~0K\x1e?\x05\x8fdg\x91?\x1e\xfes\x13\x03\x15\x10b~b\x10\x15\x03\x13J\xd9\x00\x04\x00\x00\xff\xbe\x02\t\x01\xca\x00!\x00*\x002\x00<\x00\x00\x01\x16\a!\x14\x1e\x01673\x0e\x01#\"'\x0e\x01.\x01546767\x06\a>\x01\x176\x16\x15\x14\x05\x0e\x01\x1e\x0267&734.\x01#\"\x067\x16\x17654.\x01#\"\x01\xe3&\v\xfe\xb7/?D\x13y\x18wJF \">5\x1f\x1a\x129O5E\x13\x89Qap\xfeI\x12\r\t\x17#)\x17IY\xcf\x1e/\x1a*=\xb7C-\x0f\x0e\x19\x0f\x1b\x01 DI$3\x10\x18 DN\x0f\x11\x11\x03&# Q gF\x16OUk\x05+\x199'\xec%9!\x13\x02\f\r*\xbe\x1b,\x186\x93\x1aJ&\x1e\x10\x18\x0e\x00\x00\x00\x00\x02\x00\x00\xff\xdf\x02\x00\x01\xa0\x00\x14\x002\x00\x007\x1e\x02\x17#\"&5\x1146;\x01\x06\a\x0e\x02\x1e\x01%2\x16\x15\x11\x14\x06+\x016'\a\x06\a\x06'.\x01'.\x0167676\x177&'-\v\n\x1c\x14P\x0e\x14\x14\x0e:\x15\x10\r\x0e\x03\a\x06\x01\xb8\x0e\x14\x14\x0e4>\x05\x89\x037#\x17\x0e\x15\x0e\n\a\x03\x05\r$6\x1c\x89\x14 \x8f/*A\x15\x14\x0e\x01|\x0e\x14\x13\x19\x140#>\x1b\xec\x14\x0e\xfe\x84\x0e\x14=g\x1e>\v\b\x13\f3E/;\x17\v\x1b\a\f7\x1d3!\x00\x00\x00\x00\x04\x00\x1f\xff\xc1\x01\xa3\x01\xb7\x00J\x00_\x00q\x00\x8d\x00\x007&676\x1e\x01\x175>\x0132\x16\x15\x14\x06'&6\x172>\x0154&\x06\a\x0e\x03\x1c\x02\x15\x166764'&#\"\a\x06\a#\x06'&=\x014;\x012\x14+\x01\x153>\x01\x1e\x01\x15\x14\x0e\x02.\x01\x134>\x02\x1e\x02\x17\x16\x0e\x01#\".\x02\x06\a\x06&\x136\x16\a\x0e\x01.\x01'&6\x16\x15\x1e\x036'47'&>\x0132\x1776\x16\x0f\x01\x17\x16\x06#\"'\x06\a\x06#\"'&g\x05\x02\v\v\x05\r\x0e\x019((:O2\b\t\b\x1d$\x18*8\x13\x05\x06\x05\x02'Z &&'77&\x0f\x06\x01\x06\x0e\x0e\n\xf2\b\b\xe0\x01%eU;%9HD<0\x12\x1d%,-.\x13\x04\x06\n\x02\x01\x16%0C#\x06\t\xe3\x06\x14\x051\x81oT\t\x01\x0f\x0f\n5IRR\x93\x14\x12\x03\x04\t\x02\x02\x14\x12\x04\x10\x04\x12\x11\x05\v\x05\x02\x14\x04\x06\t\x03\x04\x05\x05h\n\t\x04\x03\x06\x1e\x10^%79(1;\x0f\x03\x1c\x03\t\x1e\x1a\x1d&\x01\x16\x06\t\x0f\f\x1b\x16/\x13\x18\f &m'&&\x0f\t\n\x03\x04\b\xbb\n\x1e\x85(\x13\"Q5*E'\r\x0e1\x01*\x05\b\a\x03\x05\f\x19\x13\x04\n\b\x11\x15\x11\x02\r\x03\x12\xfe\xba\x06\x14\x061\x1a&_?\x05\a\x03\x050J%\b\x1e\x8c\x03\x14\x12\x03\b\a\x14\x12\x05\x10\x05\x12\x11\x06\r\x14\x04\x06\n\x05\x05\x00\x00\x04\x00\x06\xff\xe0\x01\xbb\x01\xa0\x00-\x006\x00N\x00d\x00\x00\x01<\x03.\x05#*\x01\x0e\x02\a'4632\x1e\x02\x1d\x01\x14\x16\x1f\x01\a&'\x0e\x02.\x0154>\x03\x175\x06\x15\x14\x17\x1676\x17\x0e\x02#\".\x01'&62\x17\x1e\x04>\x0176\x16\x14\x17\x06\a\x06&7>\x01'&\a\x06&>\x0376\x17\x16\x06\x01\x01\x01\x02\x04\x05\b\t\x06\x02\x05\x0f\r\x0f\x04JI>\x1f.\x18\v\x10\b\b9&\a\r.2-\x1d\x1a%3%\x12T\x1c\x1d\x11\n\x88\a$T/0^3\x10\x03\x01\x05\x02\x18\x167&@9J'\x03\x06$\t\f\x04\x05\x02\x06\v\x04\x06*\r\x02\x05\b\n\v\x05&\b\x02\x04\x01\x1d\x04\x0f\a\r\x06\t\x05\x06\x02\x02\x06\t\x14\x0e\a(@\x12\x1c\x19\v\x93\r\x1a\a\a8$\v\x15\x19\x02\x10+ \x1d,\x18\x0f\x05W)\x037\x1d\t\n\x1a\x0f\x8b\t\x1b\x1f))\x13\x04\x05\x01\x0e\r\x1a\n\v\a\x13\x12\x01\x01\a\a\x15\n\x04\x03\x05\v&\x06\a\x04\x01\x03\x04\x04\x04\x03\x01\x04\n\x04\x1b\x00\x00\x00\x01\x00\x11\xff\xe0\x01\xb0\x01\xa0\x00\t\x00\x00%#\x15#\x113\x15\x05\x11#\x01\x14i\x9am\x012\x9cu\x95\x01\xc0hV\xfe\xfe\x00\x01\x00\x00\xff\xfc\x01\xc4\x01\x83\x00&\x00\x00\x01\x06\a\x06#\"'&'.\x03#\"\a'>\x0476\x17\x16\x17\x16?\x01676&\x06\a6\x17\x16\x01\xc0\x03Y[?'\x1b\x06\t\f\f\x11\x0f\t\x05\x1e\x15\n(\x15\x1e\x16\t4\f\x18\x12\x10\"\x02\x1c\x02\x02\x15\x1d\x0f!]E\x01&ArwI\x13#-)0\x11\x15\x1b\b%\x12\x18\n\x01\x05L\x97\x10\x0f5\x02-\x17\x15\x13\x03\x06l\x03\x02\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00\n\x00\x00\x11!\x11!%'7#\x17\a\x17\x01\xc0\xfe@\x01<@@\xb8@@\\\x01\xa0\xfe@{\xb8VV\xb8Y\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00,\x00?\x00N\x00\x00\x11!\x11!\x132\x1e\x01\x1574&#\"\x0e\x01\x1d\x01#\x1532\x1d\x01\x14\x0f\x01\x1535'&74=\x0137#4754>\x01\x1735'\"454=\x01#\a\x17\x16\x1d\x01\x14\x0f\x01?\x01'#'#\a#\a\x17\a\x177\x177\x01\xc0\xfe@\xbb\x06\a\x033#\x1e\x1a!\x12\x1c\x16\x06\a\x15\x83,\x04\x018\vD\x01\x02\bSg\x10\x03P\a\x19\x06\a\x15Q\x16\x04\x1b\x10\t\x10\x1b\x04\x16\t\a \x1f\a\x01\xa0\xfe@\x013\x04\n\t\x06\x1f\x16\x0e\x1f\x19\x15%\x03o\a\x01\x02\x1a\x19\x04\x01\x03\x02\x02q%\x02\x02\x18\n\n\a\xf2\x19\x03\x02\x01\x03\x01\x98\x1e\x06\x02\x06l\x06\x01\x03\xe7\x18\n\x1c\x1c\n\x18!\b\x11\x11\b\x00\x00\x00\x04\x00\x0e\xff\xe0\x01\xf2\x01\xa2\x00*\x009\x00G\x00T\x00\x00%2\x16\x06\a\x16\x15\x14\x06#\".\x01547.\x01632\x176?\x016\x1f\x01632\x16\x14\x06#\"&5'\a\x16\x176\x05\x14\x1632>\x0254&#\"\x0e\x01\x176'&\a\x06\"'&\a\x06\x17\x16272>\x0154&#\"\x06\x15\x14\x16\x01\xb8\x1b\x1e\t\x18\x03{X9a8\x03\x19\t\x1e\x1b\x16\x109O\x1f\x02\ta\f\x17\x11\x17\x17\x11\x10\x17X\x1cP9\x10\xfe\xdf\x18\x10\b\x0f\n\x06\x17\x10\v\x12\v\xd7\a\a\a\a\x15k\x15\x06\a\a\a\x1by\x1b\v\x12\v\x18\x10\x10\x17\x17\xf4&1\f\v\x0e?Y)E*\r\v\r0'\x10(\x03\x8a\t\x02\x16\x16\x17!\x17\x17\x10\x14}\x03'\x0fi\x10\x17\x06\v\x0e\b\x11\x17\v\x12h\x06\a\a\a\x15\x15\a\a\a\x06\x1cR\n\x12\v\x11\x17\x18\x10\x10\x17\x00\x00\x00\x00\x02\x00\x19\xff\xc8\x01\xe7\x01\xb9\x00\x02\x00'\x00\x00701\x05\x15!\x1e\x0267\x15\x0e\x01\"'.\x015&7\x06\a36.\x02'#\x0e\x01\a>\x0132\x16\x17\x16\x1a\x01\xcc\xfe\xc6\x01>W\\\x1e\x19Nb'4D\x02z\x1a\b\xb0\x03\x13\x1e\x1f\v\fGq$\fzc@h\x1e\x1d\xdc\x104-6\t\x13\x16i\x0f\x15\x0f\x14b6\x839!.\x1e+\x14\v\x01\x02G4]\u007f;64\x00\x00\x03\x00\x00\xff\xc8\x01\xd8\x01\xb8\x00\b\x00\x16\x00-\x00\x00%2\x16\x06+\x01\x15#5\x17\x0e\x02#\"&4632\x16\x17\a\x17'\x06#\"&54632\x177.\x01#\"\x06\x14\x16326\x01\xa6\x0f\r\f\x10\v\x1aW\x15AX2g\x91\x91gGp#\xba\x9a=+O>WW>H-;\x1f]7[\x81\x81[:b\xf5\x1a\x1b,a\x96.C&\x91ΑIAmn\x1fHW>>W?#/5\x81\xb6\x81;\x00\x00\x00\x04\x00\b\xff\xe0\x01\xb8\x01\xa0\x00\x03\x00\a\x00\v\x00\x0f\x00\x00%\x17\x15'\x13\a'7\x17\a'5\x137\a#\x01d%\x85\xb4S\x9a\x17}\xfa.*\xfa}\xd6\xce\x18\xd6T\x01A\x86`&\x8f:\x1e\xd6\xfe\xfa:\xc9\x00\x03\x00\x12\xff\xc0\x01\xee\x01\xc3\x00Y\x00e\x00q\x00\x00%2\x1d\x01#54&\"\x06\x1d\x01#54;\x012\x1d\x01354;\x012\x1d\x01354;\x012\x1d\x0135435&46\x16\x14\a\x15632\x1632632\x1d\x01\x14#\"&#\"\a\x152\x1d\x01354;\x012\x1d\x01354;\x012\x1d\x013543%54+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012\x01\xe9\x05\xb7\"*\"\xb7\x05\x1b\x05$\x05\x1b\x05$\x05\x1b\x05%\v\t\x10\x10\n\r\v\x06\x16\x05\x05\x11\x02\x04\x1b\x06\x14\x06\v\x0f\f%\x04\x1c\x04%\x05\x1b\x05$\x05\xfe\xfb\x05\x1b\x05\x05\x1b\x05\x93\x05\x1b\x05\x05\x1b\x05\xa0\x04\xdc`\x1a\x1d\x1d\x1a`\xdc\x04\x04 \xb2\x04\x04 \x04\x04 \x04p\x04\x14\b\b\x14\x04\x05\x03\x04\x04\x04<\b\x04\x04&\x04 \x04\x04 \x04\x04\xb2 \x04\x05@\x04\x04@\x05\x05@\x04\x04@\x05\x00\x00\x00\x01\x00\x00\xff\xfc\x02\x82\x01\x84\x00Y\x00\x00$\x14\x0f\x01\x06#\"'&=\x01#\x1e\x02;\x0154;\x012\x1d\x01\x14+\x01\"=\x01#\".\x02+\x01\x0e\x01#\"&4632\x16\x172\x16>\x057>\x03\x1723>\x0132\x1e\x02\x15\x14\x0e\x01#\"&'#\"\x0e\x01\a!546\x1f\x01\x02\x82\x05Y\x03\x02\x02\x02\x05\xee\b\x1a\x16\r\x1b\tY\t\tY\t\x1b\x19'\x14\x1a\x0ee\x06&\x19\x1d**\x1d\x19&\x06\x05\x11\x05\f\x04\t\b\t\x06\x0e\x15\x19\x12\x14\a\x04\x06\x1b\x11\v\x14\x0e\t\x0f\x18\x0f\x11\x1b\x06\x1e\r\x16\x1a\t\x016\t\x05Y\xc5\n\x035\x01\x01\x02\x05$\r<\"\x1b\t\tY\t\t\x1b,6,\x17\x1e*:*\x1e\x17\x01\x01\x01\x05\b\x0e\x13\r\x1f\"\x0f\x03\x01\x10\x14\t\x0e\x14\v\x0e\x19\x0e\x14\x0f!<\r#\x05\x06\x036\x00\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x19\x00\x00$\x14\x06+\x015326\x14\x06\"&462\x164&+\x01\x153532\x01F\x16\x0fFF\x0fȑΑ\x91\xce\x113$x2F$\xf5\x1f\x16J\x1dΑ\x91Α\xf7H3\xf8J\x00\x00\x04\x00\x01\x00\x04\x02\x80\x01|\x00\x13\x007\x00F\x00U\x00\x00%\x1e\x02\x15\x14\x06#!\"&5467>\x0132\x16\a2>\x0254&'\x06\a\x0e\x01&7654&#\"\x06\a\x16\x17\x16\x0e\x01'&#\"\x06\x14\x163$\x14\a\x06#\"&764'&>\x01\x17\x06\x14\a\x06#\"&764'&>\x01\x17\x01\xa8\x15\"\x148'\xfe\xde/B7*\x11X6A`\x0e\v\x13\x0e\t\x13\x0f\x02\x04\x04\x18\x11\x05\x06J4%?\x0f\x1e\x16\n\b\x15\v\x15\x1d\x1d**\x1d\x02\r%\a\v\f\f\a\x1e\x1e\b\f\x16\t\"\x1b\x06\v\r\f\a\x14\x14\a\f\x15\t\xe4\x04\x1b'\x16'8C.+?\x063?X\xd0\b\x0e\x13\v\x10\x1b\x06\r\r\f\x04\x10\r\x14\x144J)!\b\x16\t\x17\x06\b\x15);)x\x878\t\x16\v-l-\v\x15\x02\vIa(\t\x16\v\x1cH\x1d\n\x16\x01\n\x00\x00\x02\x00\x00\xff\xd3\x01\x82\x01\xad\x00\x1b\x00:\x00\x007&54636\x1e\x02\x17\a'7&\a\"\x06\x15\x1476\x17\x16\x06\a\x06&%\x1e\x02\x0e\x01\a\x06#\x06/\x017\x17\a\x16327654\a\x06'&746\x176*\x18^I\"<5\x11\x143%\x1b8C)G\x1d!\x17\x13\x01\x13\x16G\x01(\n\r\x02\a\x16\x104RmR\x0f=#!@P_\x1a\x02\x1d\"\x16\x14\x01*\x1d&\xc3\x1d3IP\x01\r\x1f\f\x0fH\x18'%\x01*#\x18\t\a\x15\x136\x13\x17\x05\x14\f$*+)\x0f,\x01I\x0eH\x1c'0A\x06\x06\x18\b\b\x16\x12\x1b\x1d(\x02\x01\x00\x04\x00 \xff\xc0\x01\xa0\x01\xc0\x00\x02\x00\x05\x00\x1a\x00&\x00\x00\x01\a'\x117\x177\x14\x0e\x04#\".\x024>\x0232\x1e\x02\a7'\x15'\a\x17\a\x177\x177\x01%+\x01\x01*|\v\x18\x1e,.\x1e.C9\x1d\x1d7D-,B3\x1a\x9eO}J\x1b]]\x1bJ\x02\u007f\x01\x15+V\xfe\xf9V+Y3O7&\x15\t\x166f\x95i8\x18\x189gKX\x87\xb1I\x1a^\\\x1bI\xaa\x80\x00\x00\x00\x03\x00\x19\xff\xc0\x01'\x01\xc0\x00\v\x00\x0e\x00\x11\x00\x007\x17\a'\a'7'7\x175\x17#'\x1d\x027\xc4b\x94\x03V\x1fll\x1fV\x92422\xbcg\x95\xc6V ll VΝ2djd2\x00\x00\x00\x05\xff\xfc\xff\xd2\x02\x04\x01\xae\x00\x06\x00\v\x00\x0e\x00\x13\x00\x19\x00\x00\x13\x161#762\x037\x13'&73\x03%\x16\x0f\x01\x13'\x17#762i9\x848\x03\x0ef\x1d\xe2\xf8\v\xa5\xbc^\x00\xff\x04\v\xf8\xe288\x849\x02\x0e\x01\xa7\xaf\xaf\a\xfe\xf2X\xfeڸ\te\xfe\xda\xce\r\t\xb8\x01&\xaf\xaf\xaf\a\x00\x00\x04\x00\x14\xff\xe0\x01\xec\x01\xa0\x00\x1d\x00!\x00)\x00-\x00\x00%\x1e\x01\x0e\x01#\"&'*\x01#\x0e\x01#\".\x0167.\x01>\x022\x1e\x02\x06%35#\x175\x06&'\x15\x1e\x01'35#\x01\xcf\x14\x04\x1a7#\x1e7\x0f\x05\x14\x05\x0f7\x1e#7\x1a\x04\x14\x17\x05!=ZfZ=!\x05\xfe\x95**\xd9-e)&lm\xa6\xa6~\x188/\x1f\x1a\x18\x18\x1a\x1f/8\x18&TJ;##;JT-:\x90\x17\x10\x12 \x19\"\x12j:\x00\x00\x00\t\x00\x00\xff\xdf\x01\xc0\x01\xa0\x00\x0f\x00 \x00$\x00(\x00+\x00/\x003\x006\x00:\x00\x00\x01\x11\x14\x06#!\"&5\x11463!2\x16\x03\x114+\x01\a'\a'#\"\x15\x11\x143!2\x01\x15#5\x17\x15#5?\x01#\x05\x15#5\x17\x15#5?\x01#\x13\x15#5\x01\xc0\x19\x12\xfe\x96\x12\x19\x19\x12\x01j\x12\x19%\x06\to==o\t\x06\x06\x01j\x06\xfe\xfbIIIT6v\x01\x12\xc4\xc4\xc4p@v\x8ac\x01u\xfe\x96\x12\x19\x19\x12\x01j\x12\x19\x19\xfe\x84\x01j\x06K22K\x06\xfe\x96\x06\x01\x01%%J&&\x93,u%%J&&\x93,\xfe\xf6%%\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x19\x001\x00\x00\x112\x1e\x04\x0e\x01\x15\x17#'\"\x0e\x02.\x02'.\x04\x17&\x06\x1f\x01\x1e\x02\x17\x16\x17\x1656'&'&'.\x04V\x85P5\x15\a\x06\aQ\x1aF\x06\x1b\x17! %&\x13\x1a#\x18\x0e\x1aD\x17\x02\n\t\x16$\x0f\x12GI&\x01\r\r\a%6\x0e\f\x1d\x19(\x01\xa0\x1c,>=E10\x05RG\x05\x03\x03\x04\t\x14\x0f\x15.A9l\x03\n\x04\b\a\x0f,\x1c!\x89\x1f\x10\x01\x01\t\b\x06\x1bg\x1a\x15,\x19\x1f\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00i\x00\x00\x13\x14\a\x06\a\x06#\"&54676327\x11\x14\x06#!\"&5\x11463!2\x16\x064&'&#\"\x0e\x05\a'>\x0154#\"\x0e\x02\x14\x1e\x023232\x15\x061\x06\a\x06/\x014>\x0314&#\"\x0e\x02\x15\x14\x1e\x013267>\x044>\x017632\x17\xfd\x04\t\b\x01\r\x10\x0e\x13\x13\b\x06\r\xc3\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c@\x16\x04\x05\x04\x05\t\t\x06\v\x04\r\x01\x01\x01\x0eD\x19+\x1a\x0e\f\x16 \x15\x01\x02\x04\x01\a\x1d\x10\x03\x01\x06\b\b\x06\x1d\a\b\r\b\x04\r\x18\x10\"3\t\x02\x03\x01\x02\x01\x01\x02\x01!\x19\x05 \x01+\n\x10,(\x05\x1c\x12\x190\n\x043\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xd3\b\"\x01\x03\x01\x03\x02\x06\x01\b\x01\x01\a?\x11?\x18%*) \x15\f\x01\x01<\v\x06\x0e\x04\a\r\b\x06\x04\x05\f\n\x10\x11\a\x10\x19\x0e8$\x06\f\b\x06\x04\x03\x01\x01\x01\x11\x05\x00\x00\x02\x00 \xff\xc0\x01\xc0\x01\xc0\x00H\x00a\x00\x00%\x1e\x01\x15\x14#&#\"\a\x0e\b\a\x0e\x01#\"&54632\x16\x15\x14\x0e\x04\x15\x14\x17\x167674\"#\"&54>\x0132\x1e\x01\x15\x14\x06\a\x17>\a32'654.\x02#\"\a\x0e\x01\x15\x14\x1e\x013:\x02>\x0276\x01\x97\x06#\a2\t(5\x02\x02\x01\x01\x02\x01\x02\x03\x04\x02\x0fR6(.\x1d\x17\f/\a\n\f\n\x06\x13\x1c\x16\x10\x06\x02\tBI%R6$0\x19\x16\x02\x01\x03\x11\x06\x0f\b\x0e\n\x0e\a\x06\xa6\x05\x01\x03\t\a\v\v\x1f\x1f\b\x17\x12\x01\x06\x04\x05\x03\x02\x01\r\xed\x027\a\x05\b\x1b\x01\x01\x03\x02\x06\x06\n\f\x11\n8Y1'\x196\x13\b\x01\x04\a\v\f\x11\t\x14\x02\x01*\x1e-\x04GB-XA\x14-$\x1cf\n\x01\x02\t\x04\b\x03\x05\x02\x02P\x1a\x11\x06\t\t\x04\x06\x11M(\x12\x1e\x19\x01\x01\x03\x03?\x00\x00\x03\xff\xfe\xff\xbf\x01\xbd\x01\xc0\x00\x05\x001\x00F\x00\x00\x01\x15&'\x1e\x01\x1767\x1e\x01\x06\a\x06\"'.\x01>\x0132\x17\x06\a&#\"\x06\x15\x14\x1e\x01\x17>\x0354'\x16\x15\x14\x0f\x01\x16654\x13\x1e\x01\x06#\"'6767\x0e\x01\a&547>\x02\x01\x14\x19.\x1f%$\x16\x14\r\x03\x19\x1b3\x9e3(\x10&Y;!\x1d\v\x02\x17\x1a:N\x1c3!#1\x17\t\x01\x13m\x04;Ob\x19\x02/&\x1c\x1bK\x19\x06\x01\x0fB%\f\x14\r0*\x01*\x01JM\x14X\xa4\x04\r\x1fCJ\x1d88*p^B\v\x15\x16\tT:\";'\x06\x0eAUM'\x18\f79\x89D\x01\x01R;\x1e\x01\x1f$cI\x1a)+\r\a!2\b\x13\x14\x1e\x14\f\x0e\x19\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00@\x00U\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x13>\x01'\x06\a\x16\x15\x14\x06'3654'5.\x02'\x16\x17\x14\x15\x14\x0e\x02\a.\x0154632\x1767&#\"\x0e\x01\x16\x17\x162726&'\x0e\x02\a\x06\x15\x14\x17>\x017\x14\a\x06\a\x16\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\xe9\x19\n\f\r\x0e\a1%\x02D\v\x02\n\x14\r\x1d\x10\x06\x0e\x1f\x16\x1e'1$\x10\x0e\x02\a\x13\x14%8\x18\v\x18 c<\x18\x1d\x01\x10\b\x1a\x1e\b\r\b\x17)\t\x04\x10.\x10\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xa3\x1bH\x1a\a\x03\x10\x14%3\x01+U$\"\x01\x11#!\t1.\a\x0f\x19/6(\t\x060 $5\x06\x0e\r\a);F\x1a#\xb6.>\x17\x13\x0f\t\a\r\x13\r\v\x05\x1f\x14\x04\b\x1b\x1a\x10\x00\x02\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00h\x00\x00\x122\x16\x14\x06\"&4\x056'.\x04'#&76763654'&\a\x06\a\"'6'.\x02#0\"1\"\x0e\x02\a\x06\x17\x06#\"'&\x0e\x01\x15\x06\x17\x1e\x03\x17\x16\a\x0e\x04\a\x06\x15\x16\x17\x1e\x03\x17\x1632632\x17\x167\x167632\x16327>\x0276\x91Α\x91Α\x01\xa2\x03\b\r\x18\x0e\r\x03\x01\x01\x03\x02\x02\x11\x04\x01\x11\n\b\x06\b\a\x03\x02\x03\a\b\x1b \x12\x06\b\x11\x1b\x19\a\b\x04\x03\x04\a\t\x04\t\b\x03\x14\x01\t\x06\x06\x02\x02\x04\x01\x04\f\x0f\x17\r\x06\x01,\x01\x01\x01\x01\x01\x01\a\x02\x11\a\x12\x13\x1c\x15\x16\x1b\x13\x12\b\x10\x02\a\x01\x01\x02\x01\x01'\x01\xb8\x91Α\x91\xce\xc2\t\x02\x02\x0e\r\x12\a\x03\b\x05\x06\x05\x02\a\n\b\x04\x02\x02\x04\x01\x02<\x11\x12\x18\f\x03\n\x18\x11\x11<\x02\x04\x02\x02\x06\x04\v\a\x01\x03\x02\x05\x02\x05\b\x03\a\x12\x0e\r\x02\x01\a\x0e\a\x01\x03\x05\x05\x02\x06\x03\x0e\x13\x01\x01\x13\x0e\x03\x06\x02\b\x05\x01\x06\x00\x01\xff\xff\xff\xcd\x02\x02\x01\xb1\x00l\x00\x00%\x06\a\x14\x0e\x01\a\x06#\"&#\"\x06\a\x06'\x06'.\x01#\"\x06#\"'.\x025.\x02'0547>\x067056'.\x03'&7>\x01\x17\x16327&47>\x0330232\x1e\x01\x17\x16\x14\a\x163276\x17\x16\x15\x14\a\x06\a\x06\a\x06\x17\x141\x1e\x04\x17\x1e\x01\x01\xff\b<\x02\x03\x01\x03\t\x04\x18\v\x13\x14\x12(\"\x1e*\x12\x14\x13\n\x1a\x03\t\x03\x01\x03\x02\x10\x18\x1c\x01\t\x0e\x1b\x13\x12\v\t\x03\x01\x06\x03\x02\n\t\x0e\x01\x1d\x03\x02\x17\b\x0e\n\x06\x04\x03\b\f%(\x1a\f\t\x01\x1b/)\f\b\x03\x04\x05\n\f\n\v\x0f\x1a\x02\x05\x19\x04\x03\x06\x01\x06\x13\x15$\x13\x05\x057\x12\t\x01\b\v\x04\t\x05\t\f\x1d\x02\x03\x1e\f\t\x05\t\x03\f\b\x01\x02\x06\x0f\t\x01\t\x01\x03\v\x0f\x12\x0f\x10\x06\x02\x01\v\a\x05\a\x03\x04\x01\f\x10\t\n\x04\x06\x02\x18I\x13\x1a$\x0f\x05\x12%\x1b\x13I\x18\x02\x06\x05\x05\x05\r\x0e\v\x01\x01\b\n\a\v\x01\x04\v\x1a\x15\x15\x03\x01\t\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00n\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x016'.\x065#&76763654'&\a\x06\a\"'6'.\x01#0\"1\"\x0e\x02\a\x06\x17\x06#\"'&\x06\a\x06\x170\x1e\x01\x17\x16\a\x0e\x04\a\x06\x15\x16\x17\x1e\x02\x17\x1632632\x17\x167\x167632\x16327>\x0276\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01Z\x03\b\n\x12\f\f\a\a\x02\x01\x03\x02\x02\x11\x04\x01\x11\n\b\x06\b\a\x03\x02\x03\a\f.\x1b\x06\b\x11\x1b\x19\a\b\x04\x03\x04\a\t\x05\x0f\x01\x03\x14\x0e\b\x02\x02\x04\x01\x04\f\x0f\x17\r\x06\x01,\x01\x01\x02\x01\x01\a\x02\x11\a\x12\x13\x1c\x15\x16\x1b\x13\x12\b\x10\x02\a\x01\x01\x02\x01\x01'\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xc5\t\x02\x01\b\n\f\n\v\x03\x02\b\x05\x06\x05\x02\a\n\b\x04\x02\x02\x04\x01\x02<\x11\x1a\x1c\x03\n\x18\x11\x11<\x02\x04\x03\a\x06\v\a\x05\x05\x03\x05\b\x03\a\x12\x0e\r\x02\x01\a\x0e\a\x01\x05\b\x02\x06\x03\x0e\x13\x01\x01\x13\x0e\x03\x06\x02\b\x05\x01\x06\x00\x02\x00 \xff\xe0\x01\xd5\x01\xab\x00&\x000\x00\x00\x016\x16\a\x06\a\x0e\x04\a\x1e\x0132654&'67\x1e\x02\x15\x14\x06\"&4632\x1e\x01\x176\x0167&#\"\x06\x15\x14\x16\x01\xc8\a\x06\x06o\x0f\n\x1c$&3\x16\x114\x13Ih\x1a\x13\a\n\x10\x1b\x10z\xaczzV\x0f%%\fB\xfe\xe6\\d%(Ih$\x01\xa9\x02\x0e\x04JV6?\x1d\x11#\x1d\t\x0ehI\x1cE\x14\x0f\r\x1127\x17Vzz\xacz\a\f\b7\xfe\x8e\xc7^\x12hI\"O\x00\x00\x00\x00\x06\x00\x04\xff\xc0\x01\xbc\x01\xc0\x00\x00\x00G\x00M\x00S\x00Y\x00c\x00\x00?\x012\x17\a7\x16\x17\a7\x16\x17\a7\x16\x17\a7\x16\x15\x14\a'\x17\x06\a'\x17\x06\a'\x17\x06\a'\x17\x06\"'7\a&'7\a&'7\a&'7\a&547\x17'67\x17'67\x17'67\x17'6\x17\x11\a'\x117\x17'\a\x15\x177\x03\x17\x15\a'5$\"\x06\x15\x14\x162654\r\xd3\f\n\x04\x16\x15\x13\x1d-\x11\r2=\n\x06@D\x01\x01C@\x06\v=2\f\x12-\x1d\x11\x17\x16\x04\v\x16\v\x04\x16\x15\x13\x1e-\x11\x0e3=\f\x05@D\x01\x01D@\x05\f=3\r\x12-\x1e\x13\x15\x16\x03\n\xe6\xdb\xdb\xdb\xca\xca\xca\xca\xcaʼ\xbc\xbc\x01\x01\x8abb\x8abۄ\x01D@\x05\f=3\r\x12-\x1e\x12\x17\x16\x04\t\r\r\t\x04\x16\x15\x13\x1d-\x11\x0e3=\v\x06AE\x01\x01D@\x05\f=3\f\x13-\x1e\x14\x15\x16\x04\r\t\v\v\x04\x17\x14\x14\x1e-\x11\x0e3>\v\x05@D\x01\x1f\xff\x00\x80\x80\x01\x00\x80\x8auu\xebvv\x01Pm\xdbnn\xda;bFEccEF\x00\x00\x03\x00\x00\xff\xd4\x01\xc0\x01\xac\x00\x13\x00.\x009\x00\x00\x133\a#\"\x06\x1d\x01\x14\x163\x15#\"&=\x014>\x0173\x0e\t\a\x06\a5>\x01574&'&'3\x177\x11#673\x114'7\x16[\xba\a\xb3\x1d++)\f%6\x18*\xfeC\x13(\x18\x1a\x0f\x10\n\n\t\t\a\x1e0!\x1f\x01\n\x1c\x1a\x13>2\xe6\xd6\n\x02\xb71\a=\x01t\x13)\x1d\xce\x1d)\x135%\xcd\x18)\x1882i@E&(\x15\x15\r\f\x06\x1f\x023\x05.\x18\x01\v\x1bGA1\x9d\x89\xfe\xd6\x0e\x05\x01\x17.\x11\x12\x14\x00\n\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\n\x00X\x00c\x00u\x00\x84\x00\x92\x00\x9e\x00\xaa\x00\xc9\x00\xd8\x00\x00\x12462\x16\x15\x14\x0e\x01#\"\x05\x14\x06\a\x0e\x01\a#\x15\x14\x0e\x01#\"'\x06\"'\x06\"'\x06#\".\x015\x06#\"'67&'\x167&'&54>\x0232\x1767>\x01761>\x0132\x17632\x17\x16\x14\a\x16\x15\x14\a\x16\x17632\x17\x16$\x14\x162654.\x01#\"\x1747\x0e\x01\x1e\x01327654#\"\a\x06&\a4&\"\x06\x1d\x01\x14\x1e\x02326574.\x01#\"\x06\x1d\x01\x14\x1626574&\"\x06\x1d\x01\x14\x1626574&\"\x06\x1d\x01\x14\x162657\x0e\x02#\"&547\x06\x15\x14\x16\x17632\x1762\x1762\x17632\x17>\x0174&#\"\a\x0632>\x01\x1e\x01\a6\xd0\n\x10\t\x04\b\x05\b\x01&\x13\x11\x11N\x1a\x01\b\r\b\x10\t\t \t\b \t\t\x10\t\r\a\x1a\x1f\"\x1a\x0f\x0f \x14$\x1f6\x0e\a\t\x12$\x17\x11\x06\x06\x06\x01\x06\x01\x15\x19G'\n\b\x11\x19\x17\x11\x01\r\x10\x05-\f\a\n\r\x0f\x1a\xfe\xbc\x12\x1c\x13\b\x0f\n\x0e \b\x13\a\x14-\x1e \x1c\x04\x15\x05\b47)\f\x11\f\x03\x06\a\x04\t\f1\x05\n\x05\t\f\f\x11\f1\v\x11\f\f\x11\v2\f\x11\v\v\x11\fM\x10/?!FZ\x06\x1e%\"\t\x11\x10\t\t \b\t \t\t\x10\x11\b &\f3)-\")R\x06\x1e\x15\x17\b\x03-\x01_\x11\r\r\b\x06\t\a\x8a O\x13\x12-\b \t\x0e\b\x0e\x0e\x0e\x0e\x0e\x0e\t\x0f\t\x14\x17\x01\x05\t\x1b\b\x137!\x10\x1e\x1525$\x0f\b\a\x01\x06\x01\" &\x01\x12\x10\x02\x04\x0e\x05\a\x02\x05(D\b\x0e\x16t\x1d\x17\x17\x0f\t\x10\v\x8d\x19!\x1dB6#\x14\x0e\b\x16\x02\n\x1a\xcf\t\f\f\t \x05\a\x06\x04\r\t \x06\t\x06\f\t \t\r\r\t \t\f\f\t \t\r\r\t \t\f\f\t \t\r\r\t\xc3\x1e.\x1biH\x19\x192>.V\x1d\x11\x0f\x0f\x0f\x0f\x0f\x0f\x10\x1bN\x8f*?$\x89\x05\x02\x05\x14\x13)\x00\x00\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00%\x001\x00\x00\x122\x16\x14\x06\"&4\x172>\x0154'#\x153\x0e\x01#\".\x0254632\x177&#\"\x06\x14\x16%35#5#\x15#\x153\x153\x91Α\x91Α\xb1#7\x1d\x02uF\x03)\x1a\x10\x1c\x15\f- \x1e\x14!\"13II\x01\x1a##$$$$\x01\xb8\x91Α\x91\xce\xe3\x1f7#\v\n+\x18\x1d\r\x15\x1c\x10 .\x13! IfIj$##$#\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00=\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0154#\"\x06#\"'&#\"\a\x06\a5654&\"\x06\x15\x14\x17\x15\x14\x1632756=\x01627632\x163276\x01\x8e\x14\x1e\x1e\x14\xfe\xa4\x14\x1e\x1e\x14\x01.\b\x01(\r\b\x05%\x18\x1c\"\x02\x03\r\x14\x1c\x13\r\f\b\x0f\x04\x01\x01\x02\x01&\x1d\x11*\r\x16 \a\x01\xa0\x1e\x14\xfe\xa4\x14\x1e\x1e\x14\x01\\\x14\x1e\xfe\xe4\x8c\b\x10\x02\x0e\x0e\x02\x01\x13\t\x11\x0e\x13\x13\x0e\x10\n\xdb\b\f\x0e\x01\x01\x04-\x01\x01\x11\x11\x0e\x03\x00\v\x00\n\xff\xc0\x01\xb6\x01\xc0\x00B\x00F\x00J\x00N\x00R\x00V\x00Z\x00c\x00g\x00o\x00s\x00\x00%\x16\a\x14#\a\x06/\x01\a\x14#\a\x06/\x01\x17\x14#\a\x06#&1'&'&?\x01&5'&?\x01&/\x01&?\x0123\x17\x16\x15\x17\x14\x0f\x01\x172\x15\x1776\x1f\x0174?\x016\x1f\x01\x16\x0f\x01\x177\x03\a\x177'\x17/\x01\x13\x17/\x01\x1f\x01/\x01\x177'\a7\x175'\x14\x0f\x01\x17\x16?\x01\a\x17?\x01'\a\x17\x16\x0f\x01?\x01\x0f\x01\x01\xb5\x01\n\x017\x02\x02\x14\x02\x01C\x02\x02\x1c\x02\x01T\x01\x01\x02A\x02\x0f\x01\x02\x12\x1b\x15\x01\x03\x1b&\x01\x1b\x01\x03{\x02\x01Z\x02\x06\x02\"$\x02\x01#\x01\x02\x18\x01\x01;\x02\x01F\x01\xcce\x0e[\fy\x14j\xbaI\x13P9@\rF+:\n>NO\x04U\\\x1b\x1e\x01\x16\x18\x02_\x04B\x01X\x06@\x01)\x02\x01\x02J\b3\x05\xde\x01H\x02,\x01\x01\x0e!\x026\x02\x02\x18.\x02C\x01\x01E\x01N\x02\x01\v\x19\x01d\x02\x02\r\x1d\x02\x85\x02\x01',\x01\x02\x84\x02\x01\x11\x19\x02#\x15\x01\x01\x10 \x01\x01$\x01\x01&\x02\x059a=\x01\x11/\x867\x049\x851\xfe\xef=^:\xd1=D<\x83>F=,\x17D\x17\a\x01\x0f\x14\x01\x01C/DJC(\x1e\x1b\x01\x02\"\x1b?$A\x00\x00\x00\x02\x00\a\xff\xe0\x01\xba\x01\xa0\x00\x1a\x004\x00\x00%\x16\x0e\x02#\"'\x06.\x0154632\x16\x15\x14\a\x1632>\x025'654&#\"\x06\x15\x14\x16327.\x03#\"\a'632\x16\x01\xb8\x01\x05\x10(\x1c;%:tKxNOwJ\x17\x1a\b\r\a\x05r\x11588338\x13\x0e\a\f\x11\x15\r\v\b\r\x1b+!)=\t\x1b\"\x17>\x10(dAUpoV_:$\x06\n\n\x05:%?PNNPON\x05\r\x12\x14\n\x04\x18\x17\x1b\x00\x00\x00\x00\x05\x00\x02\x00\x00\x02>\x01\x80\x00\x18\x00\x1a\x00\x1c\x00W\x00p\x00\x00\x13\x06\x15\x16\x17\x16\x15\x14\a\x06#\"'&'467632\x17\x16\x15\x14\x13\x17357\x16>\x017\x1e\x01\x0e\x02\a>\x01'0\x0e\x01.\x037>\x01.\x01/\x01\x0e\x02\a\x0e\x01\x14\x1e\x01\x17.\x0367>\x05/\x01\x1e\x03\x0e\x027\x1e\x01\x15\x06\a\x06#\"'&547674'&547632aA\x01C\r\x04\x03\x05\x0f\x1d4\x02\x1e \x17\r\x05\x03\x04~\x01]\x03\b\v\n\x01\x18\v\x0e\x1f\x10\a\n\x1a\x0e\b\v\x0e\f\t\x03\x02\x02\x01\x03\x04\x02\x01\b\x11\x10\x03\x10\x0e\t\b\x04\a\x11\x1c\r\n\x15\x10\x18\r\b\x02\x01\x01\x01\x18!\f\x06\x05\x03\x03\xb3 \x1e\x024\x1d\x0f\x05\x03\x04\rC\x01A\x10\x04\x03\x05\r\x01`?[e@\f\t\x03\x05\x04$Aa1J%\x1a\x03\x04\x03\x06\xfe\xac\x01\x01\x9e\x02\f\x12\x02\x1f>('\f\x04\a4\x11\x01\x01\x01\x06\f\x15\x10\r\x19\x10\f\x02\x03\x11\x1a\x18\x05\x1b,\x1b\x15\b\x02\x04\r#%9\x1d\x17*\x1f\x1b\x12\r\x03\x03\x13) \x17\x14\b\xaa%J1b@$\x04\x05\x03\t\f@e[?\x10\x06\x03\x04\x03\x00\x00\x00\x00\x02\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x1d\x00\x00\x122\x16\x14\x06\"&4\x056&\x0f\x01\x0e\x01\x1f\x0176\x17\x16\x0f\x022?\x01\x17\x167\x91Α\x91Α\x01r\x02\v\b\xef\r\x01\v=\x8e\x06\x03\x01\x02s\x05\a\x06\x1e>\x12\x04\x01\xb8\x91Α\x91\xce\x19\f\v\x03]\x04\f\x03\x13Y\x04\x03\x01\x02h?\x06\x1d.\n\x14\x00\x00\x00\x02\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\v\x00\x00\x122\x16\x14\x06\"&4\x057#\a\x91Α\x91Α\x01(U\xb5U\x01\xb8\x91Α\x91ε\x9c\x9c\x00\x00\x00\x00\a\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\v\x00\x13\x00\x1b\x00.\x006\x00>\x00\xb2\x00\x00%\x16\x0f\x01\x06/\x01&?\x016\x17'\x06'&76\x17\x16\a6\x17\x16\a\x06'&7.\x0176\x172\x1e\x06\x0e\x01\a\x0e\x017&\x0e\x01\x17\x1676\x16\x14\x06\"&462\x136&'.\x01\a>\x01;\x014'>\x014&5'676&'&\x0e\x01\a\x0e\x01\x1e\x01\x17.\x01'&7&'\"\a>\x01374'&\"\a41\x06\x16\x17\x06\a\x0e\x03\x0f\x01\x0e\x01\x17\x14\x17\x06\a\x06\x167670.\x01#63\x166=\x014'\x16\a\x14\x0e\x02\a#\x0e\x05\x16\x17&'\x06\x17\x166767\x16\x17\x16\x01-\b\b\n\b\b\v\a\a\n\b\t\x14\x05\x06\x05\x05\x06\x05\x05\x1f\x05\x05\x06\x06\x05\x05\x06N\x10\n\x0f\x1a!\x01\x06\x02\x05\x02\x04\x01\x01\x01\x02\x02\t)!\x04\v\x04\x04\x06\n\b\x82\x91Α\x91\xceO\x01\x19\x01\v\x19\x13\x05\f\x03\x04\n\x01\x01\x01\x01\x1a\x04\x02\x1d\x17\v\x15\x11\x05\t\x02\n\x0e\t\r\x17\x04\b\x11\x05\x03\x0e\v\x05\r\x04\x03\x03\x04\x16\x06\x04\t\f\a\x06\x06\x10\x0e\r\x03\x04\x192\x05\x02\x03\x05\n\f\x10\x17\r\x03\b\x05'\a\x04\x04\v\x1d\x01\x04\x04\x04\x02\x01\x01\b\a\b\x06\x04\x01\x02\t\x01/\x17\x13]\x0e.\x12\x12('\xec\b\b\n\t\t\n\t\b\n\b\b\t\x05\x05\x05\x05\x06\x06\x05\v\x06\x06\x05\x05\x05\x05\x05\x13\f$\x14\x1e\x1f\x06\x02\x06\x02\a\x03\a\x05\a\x03\x12\f7\x05\x05\v\x05\b\x06\a\x02Α\x91Α\xfe\xdd\n\x0e\x02\x14\x0f\x04\x03\x03\f\f\x04\a\x05\x05\x01\x01\x0e\x1d\x17%\x03\x01\x05\r\t\x0e\x1c\x14\x0f\x04\x01\x12\x0f\x1e \x05\x03\x05\a\a\x01\r\b\t\f\x01\a;\x15\x04\x06\x03\x0f\x10\x10\x05\x06\t3\x13\x05\x03\x03\x05\v\x15\a\v\x14\x02\x02\t\x01\x11\t\n\x1c\r\x1c!\x05\b\x05\x03\x01\x02\x0e\f\x11\x11\x12\x12\b\x0e\b5\f\nn*\x1c%#\x19\x17\x00\x00\x00\x01\x00\x00\xff\xe0\x01\x80\x01\xa0\x00X\x00\x00%\x06\a&\a5>\b56'4.\b'5\x047\a#.\b+\x01\"\x06\x1d\x0172>\b73\x06\x14\x17#.\x06'&#\x15\x14;\x012>\x067\x01\x80\n\x06\xab\xc5\x05\x11\b\f\x05\a\x03\x03\x01\x05\x05\x01\x02\x03\x03\a\x05\v\b\x10\x05\x01\x03h\b\x17\x01\x05\x03\x05\x04\x06\x06\t\n\x06\x89\a\x03X\x05\x06\x06\x05\x03\x03\x02\x03\x02\x04\x02\x19\x03\x02\x1a\x01\x05\x02\x04\x04\b\t\a\x15C-Y\f\x13\r\x0e\x06\f\x05\x0f\x03d\x0154&#\"\a\x06\a>\x01\x1f\x01\x16\a&\x06\a\x16\x17\x166?\x016\x17\x16\a\x06\a\x06'\x1e\x03\x1f\x01\x16\x01\x9768\x06\x04\x06\x1173\f\b\x12\x16\t\tFm\x12\x01\x01\x01\x02\r\b\t\x02\v\x1c \x03\x02D\b)#\x01\x02\x15\n!\a\r\a\r{\xa7\v\b\n\b\x1e\x01\x03)\x06\b\x01\x01\x14\x01\x10S7\x02\x01\x03\f\x1f\x1a\x1d\a\x05\xe80;qPJ6\b\x04\x18I\x19\x18\x16\x01;J$\t\x120_\x18\x17\x13\x02\x04\r3@!-\n\"!\x1f\n\t$\x01\x82\x1cm>!\x134D\x1c\b\x03\x06\x02UB\x134\x11\x10\x03\x11\x0fA\x1a\x19\x1a\f\x16\x05\b%\"2(\x1d\x18\r\x069\x9a\x10\x15\v\x06f\x0f\r\a\x13-\r\r\x14N4J\b\x01\x02\a\x19\x1b)\x16\x01l\x18^8Pr1\x0e\x19\x13\x11\x01\x02\x01\x1b\x05\x1b\x1fN \x02\x1a\x0f\x0e\x0e\x12\x18\x06\x18\t\x05\x01\x18'\x17\x10\x03\x03\x06\x00\x00\x03\x00\x00\xff\xe0\x01\xc1\x01\xa0\x00\x10\x007\x00\\\x00\x00\x012\x1e\x01\x15\x11\x14\x06#!\"&5\x11463\x126&'.\x0114\"&'&\x06\x17\x16\x17\x1e\x01\x0e\x01'.\x01\"04&'&\x06\x0f\x01\x06\x17\x16767\x16\x136&\"\x0f\x01&\x0e\x01\x16\x17\x1e\x013\x140\x16\x17\x166/\x01.\x01>\x01\x17\x1e\x0112\x14\x16\x17\x1676\x01a\x1a,\x198'\xfe\xfe'88'\xbb*\x16$\x04\x05\x01\x04\x04\x13\x15\x12\t\n\x14\r\x18/\x14\x05\x04\x01\x05\x04\b\x11\x04\x10\t\x0e\x12\x11\x01\x01$|\a\x0e\x16\b\x05%Q)\x15%\x04\x04\x01\x05\x04\x13\x15\x12\x13\x15\f\x18/\x14\x05\x04\x01\x04\x05\x0f\v\x02\x01\xa0\x19,\x1a\xfe\xfe'88'\x01\x02'8\xfe\x9fIQ\x15\x03\x02\x01\x02\x03\v&\v\x05\x05\f/)\r\f\x03\x02\x01\x02\x03\x04\x04\b\x1b\x11\v\x0f\x1a\x02\x01\x14\x01\n\f\x15\v\b\x14\x16HQ\x15\x03\x02\x01\x02\x03\v&\v\n\f/)\r\f\x03\x02\x01\x02\x03\a\v\x02\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x12\x00\x1f\x00\x00\x01\a\x16\a\x0e\x01\a\x0e\x02\a7&7>\x017>\x01\a6&'&\x0e\x01\a\x06\x16\x17\x166\x01\xc0W?\x06\x04_E#ZZ#W?\x05\x04`E0\xae4\x04P<'D,\x02\x03P<;Z\x01\xa0W>VFe\t\x05\f\v\x05W=WFe\t\x06\x17\xe4;X\x04\x02\"@'\x01\x16\x17\x16\x0e\x01.\x01676\x1e\x01\x056\x16\x17\x16\x06\a\x06&'&>\x017\x16\a\x06'&6&6\x1e\x01\x06\a\x06.\x01\x17\x16\x06\a\x06'\x0e\x01'0\x06\x15\x06&'&'.\x0167&67>\x01\x176\x16\a\x1e\x01\a.\x01'&6'&'\"\a\x06'&#&\a\x06'&'&\x0e\x01\a\x0e\x04\x15\x06\x16767>\x0176\x17\x16\a\x14\x06\a\x06\x1667>\x037632\a\x14\x06\a\x06\x1e\x01\x17\x1e\x026\x176\x16\x17\x16\x0e\x01.\x016a\x04\x14\x04\n\x9b\f\b\b\f\v\t\a?\x17\x03\x02\v\x05\b\x01\x8a\x0f\x03\n\x12\x0f\x03\x05\x05\x011\x0f\x12\x04\x05\x04\x10\x11\x05\x05\xc6\v\x0e\b\x03\x05\x06\x0e\a\x01m\x05\n\x01\x01\x06\x06\x05\n\x01\x01\x02\x06+\x03\n\v\x02\x02\x14T\f\x0f\t\x03\x06\x06\x10\b\x03\x14\x10\x1f\x19\x1f\tF\x1b\x03\x1eE\x15\x0e\x01\x1f&\x04\x18\x15#'\x14f*3T\x04\x1f\r^\x02(\x01\x02+\x01\x04\x1e\r\b\a\x05\f\a\r\x0e\x0e\x06\x0f\t\b\x13\x11\x05\x03\n\v\t\b\a\x18\x14\x10\t\x02)\x02\x05\t\b\x02\x1c\x01\x01\x0e\x14\x06\x01\x0f\x11\x0f\x01\x06\x06\t\x02%\x02\x02\x05\r\t\x05\x14\x15\x0e\x04\b\x13\x06\x05\x03\x10\x13\v\x04,\x15\x04\x15\x02P\t\f\f\b\t\f\f\x01\xd9\x05\f\v\x03\x01\x05\x05\xd4\v\x12\x0f\x04\v\x12\b\a\xae\t\x04\b\b\x12\t\x04\b\bL\b\x02\f\x0e\x04\x03\x02\v\xae\x01\a\x05\x06\n\x01\x01\x06\x06\x04\a\x059\t\x03\x02\n\n\x04<\t\x03\r\x10\x04\x04\x02\rw!K\x15\x12\x01$\x15\x18\x02\x01\x14\r\x1d\x15\x1a\x052?\x16#J\x062$ \x11A5\n@`\n\x06\v\x11b\r\x1d\x01\x05\x04\x05\f\x03\f\f\x03\a\x04\x03\x03\f\b\x06\x1c\"\x1c\x1b\x02\x14\x1c\x01\x01\x10\x04k\x02\n\x05\x04\v\x05F\x03\v\n\x06\v\x02\x1f\"\x1e\x02\b\v\x05K\b\n\x14\x10\x05\x02\x04\x01\tS\x06\x04\b\b\x13\v\x04\x0f\x14\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00-\x00=\x00M\x00\x00\x012\x16\a\x15\x14\a\x06#\"&#\"\a\x06#\x15\x14\a\x15\x06#\"&=\x01&5462\x16\x15\x14\a\x1527632\x17\x1632672\x16\x15\x11\x14\x06#!\"&5\x11463\x01\x114&#!\"\x06\x15\x11\x14\x163!26\x01S\x04\x05\x01\a\x1e\x16\r(\x11\x1a'\x01\x02\x01\x04\x0e\b\f\r\x13\x1b\x13\f\x01\x03#\x19\x19\"\x06\a\r&<\x14\x1e\x1e\x14\xfe\xa4\x14\x1e\x1e\x14\x01j\b\x06\xfe\xa4\x06\b\b\x06\x01\\\x06\b\x01\x15\x04\x03\x87\x04\x03\x0e\x10\x11\x01,\x03\x02\x01\x0e\f\b\xd4\n\x10\r\x13\x13\r\x11\t\x12\x02\r\r\x03\x10\x8b\x1e\x14\xfe\xa4\x14\x1e\x1e\x14\x01\\\x14\x1e\xfer\x01\\\x06\b\b\x06\xfe\xa4\x05\t\b\x00\x00\x03\x00\x18\xff\xbb\x01\xaa\x01\xc0\x00)\x004\x00E\x00\x00%\a\x0e\x01&?\x01\a\x16\x15\x14\a'>\x01.\x01#\"\a'6?\x01'\a\x06.\x01?\x016\x17\x161\x1e\x01\x0f\x0176\x16&\"&4632\x1e\x01\x15\x14\x0327\x17\x0e\x01.\x02547\x17\x0e\x01\x1e\x01\x01\xa8\r\x02\x1f\x1d\x01\n)\x10*'\x14\b\x161\x1f'\x1d'#.L+3\x0f \a\rD\x10\x13\x8c\f\x05\v:j\x0e\x13-*\x1e\x1e\x15\x0e\x17\x0e\xe6\x1e\x1a'\x1dFA6!!(\x10\x02\x18/\xc0\x9d\x13\r\x12\x13z\x02 $>-'\x17<2#\x1a' \bV\x19.\r\r\x1f\x0e=\x0e\vQ\b \fC\x06\x01\x14\x8c\x1e*\x1e\x0e\x17\x0e\x15\xfe\x80\x11(\x17\x0e\x12'A&5*'\x188.\x1e\x00\x00\x00\x03\xff\xff\xff\xef\x02\x85\x01\x91\x00\x1a\x001\x00S\x00\x00%0\x0e\x011\a\x06\x15\x14\x16\x15\x06#\x06547>\x0673\x1f\x01&\x02'.\x01623632\x16\x17\x16\x17\x16\a\x0e\x01\a\x06&7\x16\a\x0e\x01\a\x0e\x01.\x02#.\x02#&5&7067672\x1f\x01\x16?\x01\x1e\x02\x01B.,]\a\x01r\x01\x12\x02\x01vy\b\a\x06\x05\x02\x013\xa0\x03\xe9\x04\x05\x01\b\b\n::\x13\f\a\x11\xbf\x0f\b\x02q\x03\a\x0f\x90\n\b\x02z\x02\x05\t\x0f\x06\x12\x01\x03\x99\x97\x01\x04\x01\f\x93\x03\x05\t\a;9\x13\x11v\x05\x13\r\xc4*)\"\x03\x06\x01\x18\x03%\x06\x03\x01\x04\x01tx\a\x06\x03\x02\x01By\x03\x01+\x04\a\a\x03\x01\x04\t\x15\xe3\x13\x04\x01/\x01\x05\x03\t\x02\x06\x01L\x01\x02\x02\x01\x01\x04\x01\"\"\x02\x02\x03\x046\x01\x02\x01\nJ\x16\b4\x01\x04\x03\x00\x00\x06\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00A\x00X\x00|\x00\x88\x00\x9e\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x17\x16\a\x0e\x02\a\x0e\x01\x17\x1e\x01676\x17\x1e\x01\x17\x1e\x0176'.\x016'<\x02.\x04'&\a\x0e\x02\x17\x16\x17\x1667>\x01\x054&*\x01#\"#\"&\x0e\x01\x15\x06\x1e\x0163!2\x1626\x1354\a*\x02#\"\x06\x1d\x01.\x01\x0e\x02\a\x06\x17\x1e\x02676762\x17\x1e\x016325'\x0e\x01&'&7>\x01\x17\x1e\x01\x050&\".\x055&7676\x16\x15\x14\x15\x16\x06\x01\xe2\x12\f\f\x12\xfe;\x12\v\f\x11\x95\x0e\x02\x01';\x0f\x15\x15\x02\x031C\x1c\b\x04\x01\x02\x01\x05#\a\x05\x03\x06\x03\x01\x01\x01\x02\x05\b\v\b@=\t\x16\b\x0e\a\x10\x06\b\x03\t7\x013\x04\x03\t\x01\xc6\xc6\x01\t\x03\x04\x01\x04\x04\t\x01\x01\x8b\x01\t\x04\x04\x04\x0e\x01\x03\x04\x01\x14\x06\x17*\x1d\x19\r\x04\x19\t\x06 )-\x14\x01\x02\x02\x05\x03\x04\v\x12\x03\b4\t%#\t\x17\x18\f5\x10\x0e\x01\xfe\xd3\x06\x03\a\x03\x06\x04\x03\x02\x01\x15\x04E\x05\x03\x01&\x01\xa0\f\x12\xfe|\x13\v\v\x12\x01\x86\x11\f\xbc\n\x12\b\a\b\a\v'\x16\x1f!\x03\x12\x06\x05\x01\x04\x01\a\x05\x05\x04\x06\x0e\"\x1a\x0f\t\x1f\x0e\x19\v\x11\t\t\x04\x1a\x1f\x05\x1a\x1b\x06\x04\x02\x02\x03\a\x18\x0f\xed\x05\x05\x01\x01\x05\x05\x05\x05\x01\x01\x01\x05\x01Z\x01\x0f\x01\a\x13G\r\a\b\x11\x11\t22!.\x13\x02\v\x01\x01\x02\x05\x06\x02\x02\x0e;\x17\x10\x0f\x1332\x1a\x02\x17\x13H-\x01\x02\x02\x03\x04\x05\x06\x04\x15\x05\x01\x0e\x01\x04\x04\x02\x01\x19\"\x00\x00\x02\xff\xf8\xff\xe0\x02\x01\x01\x8b\x00\a\x00\x18\x00\x00\x12\x0e\x01&>\x02\x16\x05\x16\x15\x14\x0e\x01#\"&'>\x017\x16\x17\x166\xc6MU,\x18MU,\x01!\x01I}J=l&5V\x19\r$7\x9b\x01\bk4!bj4 ^\r\fK~J4-\x0eF13\x17!T\x00\x06\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\a\x00\x11\x00\"\x004\x00E\x00M\x00\x00\x122\x16\x14\x06\"&4\x176'&'\"\x1d\x01\x14?\x012\x1e\x01\x15\x11\x14\x06#!\"&5\x11463\x173\x15\x147632\x17\x16=\x014&+\x01\"\x06\a\x06\x14\x1f\x01\x16767676/\x01&\"\a\x16264&\"\x06\x14\xc0J44J4\x98\x02\x01\x14)\x03\x04\x9c\x10\x1b\x10#\x18\xfe\xb6\x18##\x18\u007f\x01\x03\x13\x14\x14\x13\x03\f\b-\b\fT\x06\x06\b\x02\x02\a\b\a\n\x03\x03\a\x06\x10\x06BiJJiJ\x01\t4J44J\x04\x01\x02$\x02\x03C\x04\x02\xee\x10\x1b\x10\xfe\xb6\x18##\x18\x01J\x18#U\x0f\x04\x01\x05\x05\x01\x04\x0f\b\f\f-\x05\x10\x06\b\x02\x03\t\b\b\a\x02\x02\b\x05\x05\xfeJiJJi\x00\x00\x00\x02\x00\x10\xff\xe0\x01\xb1\x01\xa0\x003\x00I\x00\x00\x132\x16\x15\x11\x14\a\"#\"'&=\x01\x0e\x01#\".\x035<\x02>\x047>\x01754.\x02#\"\x06\a\x06&'&'&76\x135\x0e\x01\a\x0e\x06\x1c\x02\x15\x14\x1e\x0232\xf0a_\x05\x03@5\x06\a\x1fX\"\x1f0\x19\x10\x05\x01\x02\x05\x06\n\a\x16\x99D\x02\v\x18\x15(V\x1b\x04\r\x03\x04\x06\x03\nL\x9e\x1fE\x14\x03\x05\x03\x03\x02\x01\x01\x04\v\x1a\x12(\x01\xa0I?\xfe\xd7\a\x02\x02\x01\b\x19\x11\x19\x12\x1a\x1f\x16\a\x01\x10\f\x14\x0f\x13\x0e\f\x03\t\x1e\t&\x15\x14\x17\t\x1d\x12\x04\x03\a\b\x1f\x0e\x067\xfe\xa4k\x03\x14\v\x01\x05\x04\a\x05\a\x05\a\x05\x05\x02\x05\r\x10\n\x00\v\xff\xfd\x000\x02\x80\x01N\x00\x11\x00\x15\x00G\x00V\x00_\x00c\x00f\x00\xa6\x00\xaf\x00\xc4\x00\xc7\x00\x00%\x0f\x027\x0f\x027\x0f\x017\x0f\x01'7\x177\a?\x01\a\x05'\x0f\x017\x06\a\x06&7>\x0172\x1e\x051?\x016\x17?\x01\x0f\x027\x0f\x027\a?\x01\x177\a?\x01\x0f\x03'\x0f\x01'\a&\a\"\x0e\x02\a\x06\x1676?\x026&\x0f\x012>\x02\x177\x06\a7'\a/\x01\x0f\x02?\x01\x17?\x01\x17?\x01\a>\x0276\x1e\a1?\x016\x17'7\x17?\x01\x0f\x027'\x16\a\x17\a'\x0f\x017\x0e\x06#\x06'\x0f\x01'\a767676'&\x0f\x01\x1676767\a?\x02\a&'&#\x06\a\x06\a\x06\a7'\x02\x80\x03#\x02#\x03#\x02\"\x03@\f/ \x18\x1f\r x\r\x1c\r\xfe\xdb\x13\x04\x1c\x03\x15$\x1a!\x02\x02%\x1d\b\r\n\a\x06\x03\x04\x03'%\x05\x03A\x03$\x02$\x02%\x02%\x026\x18 \t\x16\x03K\x03\x18\n:\x04(\b\xaa\x1b\t\x11\a\f\t\x06\x01\x01\x0f\x0f\x10\r\x1b;\x01\f\x0f\x03\a\a\n\x04\x16\x06\a\x15\x9d\b\x0f\x93\x04(\b 9\x18\x1f\n\x1b&\x06\x1d\x04\x06\t\x1e\x12\a\f\t\b\x06\x05\x03\x02\x02\x03'\x1a\v\x05 \r\x17\x1f+\x05\x1d\x05\x10\x02\"\x1a%\x13\x04\x1c\x03\x01\x05\x04\b\b\v\x0e\t)\x0e\x04\x19&\x06\xdc\x0f\x06\a\x01\x01\x04\x06\x11p\b\r\a\x06\b\a\"\x03?\x01\x1f\a\x04\a\x06\v\v\v\x02\x01\xc1\x18\b\xd2\x1c\x03\x12\x03\x1d\x02\x14\x02\x1a\x04qs\x02v\x02PS\x80x\x02x\x12$&\x01\x1d\"\x02\x01 \x1b\x18(\x02\x02\x04\x05\a\x05\x06\x1f\x02\x03\x1b\x1b\x04\x1c\x02\x12\x02\x1b\x03\x14\x03\x15u\x02oV\x02\x1c\x05\x1c\x02\\\x03\x0f\x02\x10>\x02\x11\x01\x06\n\v\x06\r\x13\x01\x01\x12\x01&\t\x04\x01\x1c\x01\x03\aB<\x12\t\f&(M\x11\x02\x13\x02z\x02fh\x02?B\x02)\f\r\x15\x01\x01\x02\x03\x04\x05\x05\x05\x04\x03 \x03\x02\f\f\x02+.\x02N-\x02-+$\x0e'\x02%'\x02 \x01\b\x05\b\x06\x06\x04\x03*(\x02?BO\x01\x03\x04\b\b\x03\x03\x01@\t\x01\x01\x03\x05\t\x02\x18\x04\f\x02\x06\x02\x03\x01\b\n\x0f\x0e\x11\x01&\x00\x00\x05\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\x19\x00\"\x007\x00?\x00K\x00\x00\x017>\x01\x1e\x01\x0f\x0132\x16\a#\"&46;\x017'&>\x01\x16\x17\x0f\x01\x0e\x01.\x01?\x016732\x16\x14\x06+\x01\x17\x16\x0e\x01&'.\x01'&67\x16&2\x16\x14\x06\"&4\x054&#\"\x06\x15\x14\x16326\x01\x00\t\x04\x11\x0e\x05\x05W?\x0f\x0f\a\xb9\t\f\f\t4B\x14\x05\x05\x0e\x11\x04F\x13\x05\x10\x0f\x04\x04\x0f\x18\xb95\t\f\f\t\x1d\x14\x04\x05\x0e\x11\x04\x112\b\v\a\v\f\x91Α\x91Α\x01\xd0\u007fYZ~\u007fYZ~\x01G\x10\a\x05\t\x10\b\x97\x1c\r\f\x11\fs$\b\x10\t\x05\a\xea\"\a\x05\t\x10\b\x19\a+\f\x11\f\"\b\x10\t\x05\a\x1fV\x0e\x17%\t\x15\xba\x91Α\x91\xcegZ~\u007fYZ~\u007f\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x18\x002\x00G\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x137&\x0f\x01\x06\x1e\x01676&+\x0176.\x01\x06\x0f\x01'.\x01\x0e\x01\x1f\x01\a#\"\x06\x14\x163!264&+\x01&'\x0e\x01\x17\x1e\x01\x17\x1e\x01>\x01/\x01\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14O\x13\x0f\x18\x0f\x04\x05\x0e\x10\x8f\a\x0f\x0f>V\x04\x04\x0f\x10\x04\t\t\x04\x10\x0e\x04\x04\x14A3\b\f\f\b\x01\x18\b\f\f\b4\x10+\v\a\v\t3\x0e\x04\x10\x0e\x05\x04\x14\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xa0!\x13\b\x18\b\x10\b\x04=\r\x1b\x95\a\x10\b\x04\a\x0f\x0f\a\x04\b\x10\a#r\v\x11\f\f\x11\v\x1cJ\b$\x17\x10X\x18\b\x04\b\x10\b!\x00\x00\x00\x00\t\x00\x00\x00V\x02\x80\x01\x00\x00!\x00,\x00A\x00M\x00a\x00n\x00\x8a\x00\x94\x00\xab\x00\x0072\x16\x1754#\"\x0e\x02\a#47632\x17\x16\x1d\x01#7#\x0e\x02#\"&546\x172654&#\"\x15\x14\x1673\a3>\x0132\x17\x16\x15\x14\a\x06#\"&'#\x15#74&#\"\x06\x15\x14\x1632673\a>\x0132\x17\x16\x15\x14\a\x06#\"&'#\x15#74&#\"\x06\x15\x14\x1e\x01326747632\x16\x1d\x01#\x14\x15\x14\x1e\x0132653\x15\x14\a\x06#\"'&7454&#\"\x06\a\x1573\a3632\x16\x15\x14\x15#454&#\"\a\x06\x1d\x01#*\x11\r\x04\x12\x04\x05\x04\x01\x01&\x06\t%,\n\x04'\x02\x01\x03\b\x0e\v\x17\x12\x14'\n\a\b\f\x11\bZ&\x01\x01\x06\x0f\x10\x15\v\f\f\t\x18\x0f\x0f\x04\x01'Q\b\r\r\b\b\x0e\f\b:&\x01\a\x0f\x10\x15\n\r\f\t\x18\x10\x0f\x03\x01'Q\b\r\r\b\x04\b\t\r\b5\r\f! \x18L\x04\b\b\v\a&\a\n#&\f\fM\b\f\v\x06\x01]'\x02\x01\t\x14\x11\x0e#\x04\x06\n\x03\x01'\xd1\x06\t\x17\x10\x01\x03\x05\x04\x12\x06\f\x13\t\x0fL\x13\b\b\x04\x11\x14\x13\x110\x05\b\a\x05\f\b\x05_\x15\r\b\t\v%(\r\n\t\fFl\x15\f\v\x12\x15\r\fO\x15\r\b\t\v%(\r\n\t\fFl\x15\f\v\x12\x0f\r\x06\f\x16#\v\v\x18 \v\x02\x03\b\n\x04\x06\b\x02\x10\t\r\f\v3\x02\x02\t\x06\x06\t\x04.\x14\x14\x13\x18\x05\x05\x02\x02\f\b\t\x04\tD\x00\x00\x00\x02\x00\x00\xff\xf4\x02A\x01\x95\x00/\x007\x00\x00%\x06\a\x17#'\x06\a\x17#7\x06'\a#7&74767\x06\a\x06\a\x06\x16\x17\x13\x17676&'&\a\x06\a>\x01\x17\x1e\x02\x15\x06\a67'\a\x16?\x01\x02\x06\x15\x1cIf.\x19\x1d!\x88\x17$!\x16e\"E\x01*;f\x1d!1\x1e+\f2\xbe\x97\x13\x10I:rkrTWZ\xdd`6M&\x01\xf5\x1b\x1bOf!$!\x8b\x16\x12nG\n\b5%\x04\x01\"3\x1c7)*= \n\x15\x19!.S\x16\x01\x1e\xe3\x0f\x10N\x88\x11\x11\x1f\x0e,2.\x0e\b'7!9\x8c\b\fz\x9f\x01\x065\x00\x05\x00\x00\xff\xfa\x02\x80\x01\x86\x00\x05\x00\x13\x00\x1c\x00*\x00+\x00\x00%\x15\x05%5\x057.\x01\a\x06\a#>\x0132\x1e\x01\x17\x05632\x17\a&#\"'\x06\a>\x0132\x16\x17\a'.\x01\x06\x05\x02\x80\xfe\xc0\xfe\xc0\x01@~6\xa9D\x05\x02\x01\x1d[5#B5\x13\xfe\xf4#<<#.\"4\x1f\x94\x0e\x15)\x85MM\x85)1\x011\x92\x9e\x01\x93\xf86\xc8\xc86ȀG\x158\x04\x02*2\x17)\x1c111\x1d0o\v\x16?II?\x1e\x01DA\x14T\x00\x00\x00\x00\x02\xff\xfb\xff\xe0\x02\x05\x01\xa0\x00\x0f\x000\x00\x00\x012\x16\a\x03\x0e\x01#!\"&7\x13>\x013\x137/\x01>\x0316.\x02\a\x06\a/\x01\x0f\x01\x1f\x01\x06\a'\a\x1f\x017'67\x17\x01\xc5\x1d\"\x059\x051\x1d\xfe\xc8\x1d\"\x059\x051\x1d\xfe\x06_\x04\a\r\b\a\x06\x02\x0e\x12\x05\x0f\x13\x05g\t\x13E\x15\x15\f:\x104)\x12\x16\x11\x19s\x01\xa0)\x1d\xfe\xcc\x1d))\x1d\x014\x1d)\xfe\xa5\bw\a\x05\n\x06\x05\x05\x12\x10\x05\x05\x0e\x12\x04q\x05\x1dd\x1d\x16\r\x1f\x100=\r@\v\x10n\x00\x00\x06\xff\xfd\xff\xff\x02\x85\x01\x81\x001\x00>\x00f\x00\xa3\x00\xb8\x00\xc8\x00\x007\x14\x1e\x01\x15\x14\x0f\x01\x06#*\x01&'\x0e\x02#\"1\x06&7&6\x172\x1756&\a\"\a\x06#&47>\x013232\x17\x16\x15\x14\x0f\x0126765&#&\x06\x17\x06\x16\x17\x06/\x01&5\"54;\x016\x1f\x0176\x1736\x1f\x0176\x173:\x01\x16\x15\x06\a\x06'#\x06/\x01\a\x06'\x05\"'&=\x014\x17\x16\x17\x167>\x01'.\x06'.\x025&632\x1e\x01\x17\x16\x1d\x01\x14#.\x02#\"\x0e\x02\x15\x14\x17\x1e\x06\x17\x16\a\x06\a\x0e\x01#\"#\"&'&6\x17\x1e\x01;\x012676\x166&\a\x06&7>\x01\x16\x17\x16\x06\a\x06&7\xb4\x05\x06\x04\r\x02\x03\x02\x02\v\x06\x06\x15\x18\n\x01\x13)\x02\x02,\x1c\x15\x1a\x03\x19\x16\x15\x19\x06\x05\x05\x02\x05(\x15\x03\x04\x1b\x16\x12\x01V\x16\x18\x03\x02\x14\x13\x0f\x1c\x01\x01\x11\xb9\n\x032\x01\x01\x04\x17\n\x02$!\x02\v\x11\v\x02!%\x02\v\x13\x01\x02\x03\x014\x02\v\x12\v\x02!!\x02\v\x00\xff!\x18\b\t\x13\n#\x16\t\x03\a\x02\x04\x06\x03\n\x06\x10\x06\a\x0f\x16\x01'\x1f\b\x15\x17\x04\x02\x05\x02\x0e\x15\f\x04\v\x0f\t\x1e\x04\x14\x05\r\x04\t\x05\x03\x14\x0f\x12\v3\x8dC\x02\x01K\xb87\x05\x06\x06=\xb9F\x014\x8e/\n\t\x1e\x12I\x05\x01\x04\x134&\x05\a\x16\x19\x04\a\x02\xf5\n\x10\v\x02\x04\x02\t\x02\r\f\b\r\b\x01\x1a\x1f\x1c\"\x02\x06\x10\x14\x1a\x03\n\x02\x01\x13\x04\x05\r\x11\x14\x1b\x03\x03e\x13\v\b\x13\x05\x01\x0f\x12\r\x12\x16\x01\v\xa5\x04\x04\x01\x04\x01\v\x8d\x8d\v\x01\x01\v\x8f\x8f\v\x01\x04\x04\x02\xa8\f\x01\x01\f\x89\x89\f\x02\x06\f\x04\b\v\t\x03\b\x02\a\f\x05\x17\a\x02\x02\x03\x02\x03\x02\x05\x02\x01\b\x1a\x11\x16\"\x03\a\x06\x03\x04\n\a\x01\x05\x05\x01\x04\v\t\x13\b\x01\x06\x01\x05\x02\x05\x06\x03\x19\x1f#h&)G2\x04\b\x03#1\x1d\x14\x04\x0e\x10\x17\t\x01\a\x04\f\t\x06\x05\tM\x15\x03\x03\x04\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00#\x004\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0154&+\x01\"\a#5#\x15353\x16;\x0126'\x15\x14\x06+\x01\".\x01=\x0146;\x012\x16\x01\xa0\r\x13\x13\r\xfe\x80\r\x13\x13\r\x01@(@\x11@\x06\x01@@\x01\r9\x11@(@\x0e\x18.\x0f\x12\v\x15\x17.\x18\x0e\x01\xa0\x13\r\xfe\x80\r\x13\x13\r\x01\x80\r\x13\xfe\xff#*('K\xe8#'(H\x17\x13\x0f\x05\x10\x0e\x14\x14\x0f\x0f\x00\x00\x04\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00?\x00R\x00g\x00\x00\x00\x14\x06\"&462\x176'7'\a&'7'\a&/\x01\a02\x1e\x0221\x16\x0f\x01\x1630\"'\a\x06'&1\a\x17\x1e\x033\a\x177\x16\x17\a\x177\x16676'6\a\x0e\x03\".\x03#72\x1e\x057\x0e\x04&\".\x02'72\x1e\x06\x01\xf8\x91Α\x91\xce\x03\a=\v\x1b\v\b\x0e\v\x1b\v\f\x06%\a\x02\x05\x05\x05\x02\x0e\x01\r\x02\x01\x02\x01\x12\x03\t\x14\r#\x02\x06\x04\x05\x02\v\x1b\f\n\v\v\x1b\f\"3\v\x0f(\x1d9\x01\x06\t\n\r\n\x0e\a\r\x01\x0f\x01\x12\n\x12\n\v\x03\a\x02\x04\x06\b\b\n\a\n\x06\t\x01\x0e\x01\f\a\r\a\f\x03\x05\x01'Α\x91Α\xd5*\x15-\x06+\x02\x03,\a-\x02\x02\t\x1d\x01\x01\x02\x04\f3\x01\x01H\b\x02\x05\x1f\t\x01\x01\x01\x02-\a,\x02\x03-\x06-\t\x10\x1d-\x15\a6\x05\b\x04\x03\x01\x03\x02\x03<\x04\x03\x06\a\t\rQ\x05\x06\x05\x02\x01\x01\x03\x01\x02\x016\x03\x02\x04\x04\a\a\v\x00\x05\xff\xef\xff\xd7\x02\x00\x01\xc1\x00\r\x00\x1b\x00)\x005\x00O\x00\x00\x1362\x17\x16\x0e\x01'&\"\a\x06.\x01\x13.\x017>\x01\x16\a\x06\x16\x17\x1e\x01\x067\x06&67>\x01'&6\x16\x17\x16\x06'\x14\x06\"&=\x01462\x16\x15746\x16\x1d\x01\x14\x06#\"&=\x0146\x16\x15\x06\x1e\x0232>\x02NG\xc8I\x06\x05\x10\b?\xae>\a\x11\x04i`b\x19\x02\x11\r\x02\x16UT\n\x04\r\x8b\t\f\x03\nOR\x12\x03\x0e\x11\x02\x15^\x9b\b\f\t\t\f\tG\x10\x10E11E\x10\x10\x01\x02\x0e%\"!%\x0f\x02\x01}CG\a\x11\x04\a=:\a\x06\x0f\xfee\x1d\xad`\n\x04\f\tT\x97\x1a\x03\x11\r\x05\x03\f\x12\x03\x1a\x92Q\n\f\x04\n]\xa81\x06\t\t\x06H\x06\t\t\x06\xc5\n\b\b\nG0++0G\n\b\b\n!1!\x11\x10 2\x00\x00\x00\x00\a\x00\x00\x00\r\x02\x00\x01s\x00\b\x00\x11\x00\x19\x00!\x00)\x002\x00:\x00\x00\x13\x14\x06+\x01732\x1672\x16\x15\x14\x06+\x017\a2\x16\x15\x14+\x01732\x16\x15\x14+\x017%2\x16\x15\x14+\x017\x172\x1e\x01\x15\x14+\x017\a2\x16\a\x14+\x017\xa6\"&G\x15D\x1d\x19~\x1d\x19!%F\x12\x87\x1c\x1aIF\x15\xf8\x1c\x1aGF\x13\x01\x01\x1d\x19FF\x12(\x14\x19\tFF\x12y\x1c\x1a\x01FF\x13\x01K\x14\x1dY\x19\x19\x19\x0f\x14\x1dY\x83\x19\x0f1Y\x19\x0f1Y6\x19\x0f1Y\x8a\x0e\x11\t1Y6\x18\x101Y\x00\x00\x00\x04\x00\x00\xff\xdf\x01\xc1\x01\xa1\x00\x10\x00\x1f\x00>\x00`\x00\x007>\x02232\x17\x16\x15\x14\a\x06\"'.\x01\x172\x16\x17\x16\x06\x0f\x02\"'.\x0176\x05\x0e\x02\a\x06#\"'&'&'&'&547>\x0176 \x17\x16\x17\x1e\x01\x15\x14'&'.\x01'&54'&'&'\"\a\x06\a\x06\a\x14\x17\x1e\x01\x17\x1e\x0176767>\x01\xa2\x02\x03\t\n\r\x1c\x04\b\a\x039\x03\b\x04C)\x0f\x04\x06\x02\a\t04\x04\b\x03\a\x04\x01\x17\x02\r\x16\x0e\b\xa5\xa5\a\f\n\v\x06\a\x03\x02\x02\x05\x1b\x13\x05\x01I\x06!\x0f\x05\x02V\x02\x06\x02\x1b\x04\b\x19\x13\x16\x05\"2\x11+\v\x01\x01\x04\a%\x15\av\t\x1d\x15\x10\x06\x02\x01\xfc\x02\x02\x01\x02\x04\n\b\x05\x02\x01\x02\x11X\x02\x03\x05\x10\x04\x01\x01\x02\x03\x11\x05\x05\x83\x0e\x17\x11\x03\x02\x02\x03\a\a\t\n\f\a\xa7\xa6\a\x13\x1a\x05\x01\x01\a\x1e\v \x89\xa2\xb1\b\x03\x01\x01\x03\x04\x0e\x1f\x1a\x12\a\x01\x01\a\x10.\x06:G\x0e\x16 \x04\x01\x01\x01\x04\x16\x10\x17\aS\x00\x00\x03\xff\xff\xff\xdf\x01\xc1\x01\xa1\x00&\x006\x00G\x00\x00%\x16\x06\a\x06\a\x0e\x02\a\x06\"'.\x01'.\x01567>\x017>\x013\x16\x17\x16\x17\x16\x17\x14\x17\x1e\x01\x17\x16%\x06\x16\x17\x16327654'&#\"\x06\x17>\x01'.\x01#\"\x06\a\x06\x17\x16\x17\x16?\x01\x01\xbf\x01\x01\x03\n\x19\f\x19\x1d\x10\x0e\xbf\v\";\v\x05\x02\x01\x02\t- \x12'48\a%\x1d(\x01\f\a,\x03\n\xfe\xc0\t\b\f\x06--\x05\f\r\x06.$\x11\xba\v\x03\t\x06\x18CB\x1a\x06\n\x02\x02\r\aTM\xe1\x05\x86\f%\x19\r\x11\n\x02\x02\x02\a3%\x0f-L^\n#5\r\a\x03\x01\x02\v\x1e)2\x16\a\x05\x01\x02\x052\t\x1c\x04\x01\x03\b\x0e\x0f\a\x03\x02\xce\x06\x19\b\x06\x02\x02\x04\n\r\x0e\x05\x03\x01\x01\x00\x00\x11\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00\a\x00\v\x00\x0f\x00\x13\x00\x17\x00\x1b\x00\x1f\x00#\x00'\x00+\x00/\x003\x007\x00;\x00?\x00C\x00\x00\x113\x15#75#\x1573\x15#75#\x1573\x15#75#\x15\x053\x15#75#\x1573\x15#75#\x1573\x15#75#\x15\x053\x15#75#\x1573\x15#75#\x1573\x15#\x80\x80xp\x98\x80\x80xp\x98\x80\x80xp\xfe\xb8\x80\x80xp\x98\x80\x80xp\x98\x80\x80xp\xfe\xb8\x80\x80xp\x98\x80\x80xp\x98\x80\x80\x01\xa0\x80\bppx\x80\bppx\x80\bpp(\x80\bppx\x80\bppx\x80\bpp(\x80\bppx\x80\bppx\x80\x00\x00\x00\x00\x03\x00\x01\xff\xc2\x01\xfb\x01\xbb\x00\a\x00\x17\x00#\x00\x00$\x0e\x01.\x01>\x01\x16\x03.\x027>\x017>\x01\x1e\x02\x17\x16\x0676.\x03'\x0e\x01\x17\x166\x01L\x06)5!\x06)58Gs8\t\bK8/fYH+\x02\x03\x9cH\b\x1e5K;\x1c+\x11\x1a3\x8f\xce5!\x05*5!\x06\xfe\xd1\x04P~F@e\x1b\x16\x04$>]4m\x97\xb9\"C2.\x1b\n)\xbau\f;\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x1b\x00\x1f\x00'\x00/\x00\x00\x016\x1e\x01\x0f\x01\x16\a\x06\"&476\x177&#\"\x06\x17&54632\x17\x066&\x06&2\x16\x14\x06\"&4\x16264&\"\x06\x14\x01>\x03\a\x02\x02L\x02\n\b\x17\x11\b\n\r\x1a\x1b$'7\x01\x01L5-'U\x14\x14\x14I\xba\x83\x83\xba\x83\x9e\x84^^\x84^\x01&\x03\x02\a\x04X\x0e\n\b\x11\x17\b\n\x01\x14\x198*\t\v6N\"q\x14\x14\x14߃\xba\x83\x83\xba\xfd^\x84^^\x84\x00\x00\x00\x02\x00\x00\xff\xc8\x01M\x01\xb8\x00\n\x00 \x00\x00%\x14\x0e\x01#\"&462\x16'\"\x06\x15\x14\x06\"&54632654632\x16\x14\x06\x01L\x16'\x17\"22E1T\".0G12\"#)5##--\x1c\x17&\x171F11\xd1-#\"..\"#5)#\"21F1\x00\x00\x00\x06\x00\x00\xff\xff\x02q\x01\x82\x00)\x00X\x00h\x00u\x00\x81\x00\x90\x00\x007#\"&=\x0146;\x01\x15\x14;\x012>\x01=\x014#67>\x0176\x1e\x02\x17\x1e\x01\a\x0e\x01#\x0e\x01'\x06&7\x1e\x017>\x0176/\x01\x16\x06\a6.\x01'&\a\x16\x17.\x01\x06\a\x0e\x01\x17\x1e\b\x17&67\x06\x1e\x027&'#\"&=\x0146;\x012\x16\x1d\x01\x14\x06'\"=\x014;\x012\x16\x1d\x01\x14#754;\x012\x1d\x01\x14+\x01\"\a\x15\x14\x06+\x01\"&=\x0146;\x012\x951\x05\a\a\x04/\x13\x14\x06\t\x05\x0f\x12\x1b\v.*\x1475/\v62\f\nG2$q%;Q\xdd\x069\x1d\x1d,\a\b\x12\n\x01\x19\x18\x1f\b7$>4R\x14\x0e60\x12\x1b \x02\x01\x03\x06\x05\n\x05\v\x05\v\x01\x05\f\x16\r\b&>(D\xeb(\x06\n\n\x06(\a\t\t}\n\n\x1c\x04\x06\n\x82\t\x16\t\t\x16\tp\a\x04\x1a\x04\a\a\x04\x19\f\x90\a\x05(\x05\a\a\x10\x05\t\x05\x15\x13\x0f\t,5\r\b\x04\x0f+\x1f\x11Y1+9%\x02\"\x03>,%\x1c\x06\x06)\x1d&\"\x14\x14.\v#@/\x04\t4\bC\x17\x1a\x02\x06\x0e3\x1d\b\x0e\f\n\n\x06\b\x04\a\x01\x169\x0e\x163$\x0f\r\x1e\xa1\n\x06(\x06\n\n\x06(\x06\n(\n\x1c\n\x06\x04\x1c\n\x19\x16\t\t\x16\tT\x18\x05\a\a\x05\x18\x05\a\x00\x00\x00\x00\x06\xff\xfb\x00\u007f\x02\x81\x01\r\x00\x1c\x002\x00S\x00^\x00w\x00\x9b\x00\x007\x16\x0e\x02+\x0176;\x0126'&+\x01\a\x06+\x0176;\x012\x1e\x02\a\"\x06\x16;\x012\x1e\x01\x15\a#\"&7>\x01;\x01\a\x06#72\x16\x0f\x01\x06+\x01\".\x01>\x01;\x01\a\x06+\x01\"\x14;\x012?\x016+\x01\"&?\x01%2\x16\x15\a\x0e\x01#763\a2\x1e\x01\x0f\x01\x06+\x01\"&576&+\x01\a\x06+\x01\"&?\x01\x173\a\x06+\x01\"&?\x01>\x02;\x012\x16\x0f\x01\x06+\x0176;\x012?\x016+\x01\"\x0f\x01\x06\xd2\x03\x05\x0e\x16\r \x06\x03\v\v\t\v\x02\x03\x0f\x14\x1a\x03\v\x19#\x03\v%\t\x11\r\n\x9a\f\n\n\f\v\x02\x04\x01\b\f\x19 \a\x05\x1c\x12(\x06\x03\f\xe5\x0f\x11\x03\x0e\x05\x139\f\x10\x03\x04\x10\f0\x04\x03\v\x15\x04\x04#\x04\x01\t\x01\x03:\a\t\x02\x03\x01\x9a\x03\x04\x1b\x04\x19\x10$\x02\b\xd9\x11\x1a\f\x05\t\x02\b\x13\x03\x04\v\x03\f\t\x14\x11\x02\b\x13\x04\x04\x01\x1a\x93I\x05\x04\vB\x0f\x11\x04\n\x03\v\x10\t/\x0f\x11\x04\x03\x04\x135\x03\x03\v\x16\x03\x01\x01\x01\x05!\a\x01\b\x02\xe4\v\x17\x13\r\x18\v\x0e\t\x0e_\v\x82\v\x06\v\x0f%\x13\x13\x02\x04\x02\x1a(\x19\x14\x15\x17\v#\x17\x0e4\x12\x0e\x12\x13\r\r\v\b\x06\x1f\x06\v\a\x0e\"\x05\x03c\x0f\x13\x85\b#\x12\x1f\x10!\b\x05\x03(\t\x0f@\b\x05\x03bJ\x15\v\x17\x0e(\b\x0e\a\x16\x0e\f\x12\r\v\x03\x02\x05\x06\x1e\x06\x00\x00\x02\x00\x00\xff\xe0\x01\x80\x01\xa0\x00\x04\x00\x18\x00\x00\x11!\x03\a'\x01#\x173\x0f\x01\x171\x17\x0f\x01/\x01#\x1f\x01?\x01#7\x01\x80#\x9d\x9d\x01\x16\xf2\x06{\ap\x04\xa6\x0465\x031\x06cb\ros\x01\xa0\xfet44\x01\x01\x01X\x16A#_5g\x91\x91g5_#A\x16\r6\x1d*>>*\x13&\x1e\x8eR#&+\x91Α+&#R\x17\x1f>T>\x0e\x19\x00\x00\x00\x06\x00\x16\xff\xbb\x02*\x01\xc3\x00.\x00y\x00\xab\x01\f\x01\x96\x01\x9c\x00\x00\x13&7\x16\x1767\x06\x17676\x17\x16\x17\x16\a\x06\a.\x01'&'&76'&'&\x06\a\x06\x17\x14\x15\x06\x170\x1d\x01&'\x06\x17&\x050\x17&\a\x06\a\x06\a&'&\a\x06\x0f\x01\x141.\x01'241676727\"#\x06\a\x06\a0\a0'67\x161\x06\x15\x06\a\x06327>\x047213\"\a\x06\a\x06\x16767676\x17\x16\a\x16\a\x06\a\x06'&'4.\x015\x06\x1701&'&'&7\x06\a67\x16\a\x06\x1767\x06\a6\x17\x06\a\x06\x17\x163276761\x167\x16\x17\x16\x06\a\x06'\"#\x167\x14\x06\a\x06\a\x06&'0'\x0e\x01\x17\"'\"#.\x0176&'.\x03'&'&'4'.\x02'&7\x16\x17:\x01\x163\x16\x17\x16\x17\x16\x1702\x17\x16\x17\x1e\x02\x17\x163\x166'45\x16\x15\x1e\x01\a\"\a\x163\x167>\x01'&'6%&'6\x17&7\x16\x17\x1e\x01\x17\x16\x174&5&'&5&76767\x16\x17\x16\x17\x16\x17\x16\x17&'&'&'&767\x161\x1e\x01\x17\x16\x17\x16\x17\x16\a\x14\x17\x16\x1567\x16\x0e\x02\a6'&'6'&\x06\a2\x17\x06\x15\x06\x167263\x06\x15\x14\x167\x0e\x01'67\x06\a'676&'&\a67&'67.\x01\x06\a\x16\x17\x06\a4>\x0256'&'&\a\"#>\x0276\x17\x1e\x027&R\x01\x0e\x01\x03\t\"\x04\x01\x15\x17\x15\x158\x0e\a\x0f\t\f\x01\x04\x01\x1c\t\x02\x02\f\x02\x02\n\v\x1f\v\x10\x05\x06\x03 \v\r\x06\x14\x01\xd4\x02\x12\x1b\x0f\v\x02\x06\x10\x02%\x19\x1b\x14\x01\x02\x1a\t\x01\")\x1a\x1a\x03\x02\f\x01\x1c\x1f\x16\x0e\x01\x01\x10)\x01\x03\x04\x01\x02\x04\x04\x06\x03\r\a\n\n\x06\x01\x03\x01\x01\r\x02\x02\x03\x03\x05\x03\x10\r\x14\x14\x17\xda\x02\x01,H+#\x1e\x12\x02\x03\x01\x02\t\x01\x11\a\f\x14\v\r\x0f)\x04\x01\x06\x01\x1b%\n\x01\x17\x17 \a\b\x11\x11 \x10\x12\x1a\x12\x02\x06\xd1 \v\a\t\x0f\x18!\x01\x01\x18\x1b\x05\x01\x11\x1a\x1e0\a\x01\t\x02\v\x01\x01\x01\x01\x10\x12\x01\x02\x04\v\x06\x0e\n\x0f\x05\x0e\x03\x01\x01\b\x02\x04\x06\x01\x10\b\x04\x13\x01\x06\x04\x02\f\x02\x02\x01\x02\b\v\x03\v\t\t\x13\x18\a\t\n\r\x0f\x03\a\n\x06\a\x01\a\x01\x01\x17\x10\f\x03\t\x06\r\f\xfe\x8b\x06\x10\x17\x11\n\x05\a\x11\x06\"\x06\x01\t\x02\a\x10\x03\x05\x04\x01\x03\x01\x03\x03\x11\b\x1a\x13\x06\x03\x01\x06\x12\f\x11\x04\x01\x02\x06\x01\x01\x01\x03\x12\x17\x04\x02\x12\a\b\x02\x01\n\t\a\x02\x04\a\f\x06\x02\x13\x02\x15\v\n\x14 \x06\x10\b\x06\x02\x06\x05\x01\x02\x01\x03\v\x04\x01 \f\f\x04\n\t\x01\a\x04\x06\x0f\x10\x0f\v\t\x17\f\f\x13\x1b\x05\x15\"\n\x04\x13 \x1e\x01\x01\x01\x01\x01\x02\x11\t\x0f\x02\x01\a\x13\x15\x06\b|\x01\a\n\x06\b\x01]\x1e\x12\r\b)\x18\v\x06\x12\x04\x04\x05\r;\x1e%\x13\x10\x01\x04\x01\x1b\n\x02\x02\x15\x17\x10\n\f\x01\v\x12\x1a\x03\x01\x16\x14\x01\x01\x10$\x1c\x1a\x14X\x02\x04\x05\x04\x05\x01\x04\x06\x01\b\x1c\x1e-\x02\x01\x01\x16\x03\x01.\x19\x0f\x03\x01\x03\x11\r\x11\x02\x01-\x1d\x01\x04\x01\b\x02\x05\x04\x03\v\x05\x06\x04\x01\x01\t\x03\x03\x05\x01\x01\x01\x06\x01\x01\t\t\xc1\x01\x03V\r\a\x10\r\x17\x01\x02\x04\x01\n\f\t\x01\x15\x1f15\x06\v+*\x03\x05\x1f\r\x1c\x10\x10\x16\x16\b!\x1f$\x1b\x1b\v\x12\x1e\x03\x05\x10\v\x1c\x11%\f\x14\x02\x11\a\x01\x05\x01\x0f\x05\x05\x1e \a\a\x1f\x0f\x01\a\x1b\x12\x10\x1e\n\x04\f\b\r\x04\v\x0e\x04\n\t\x06\x01\x04\x04\x02\r\x11\x12\x03\x01\x02\f\t\x01\b\x01\x01\x01\a\b\x10\x13\x06\b\x01\x14\r\x01\x01\x05\x01\n!\r\n\x01\x02\v\b\x1b\v\x06\x06\x02\xa7\v\n\x01\x05\x12\x15\x10\v\x04\x14\x06\x01\n\x01\x04\x01\x0f\n\x02\x03\x11\x14\x05\v\x04\x03\x1c\x12\b\x19\x12\b\x04\x01\x10\x12\v\x10\x04\a\x10\x0e\x01\x02\v\x0f\x16\x15\x04\x02\x11\x0e\x0f\x0f\x01\x01\x04\n\x03\v\a\x12\x11\r\x03\x18\x03\x01\x02\x14\x02\x02\x04\x03\x03\x12\x01\x05\b\x04\x02\x10\x02\a\x02\x02\t\x12\x01\b\n\x01\x02\x01\x05\b\x10\x17\x01\x01\x06\x16\f\x04\x03\f\x02\x01\x01\f\v\x01\x03\t\x1b\x02\x04\x03\x04\x02\a\x06\x0f\x02\x01\x03\a\v\v\x05\x06\x12\b\v\x06\x01\x11\x00\x00\x06\x00\x00\x00\x00\x02\x00\x01\x80\x00\x10\x00\x1c\x00.\x00:\x00J\x00Z\x00\x00\x013\x15#5\x0e\x01'.\x0154676\x16\x17\a\x14\x162654&#\"\x0e\x01'3\x15#5\x0e\x01'.\x0254676\x16\x17\a\x14\x162654.\x01#\"\x06%!\"\x06\x15\x11\x14\x163!265\x114&'2\x16\x15\x11\x14\x06#!\"&5\x11463\x01~44\x0e-\x0f\x14\x18\x17\x14\x0e.\x0f@\x12\x1d\x13\x13\x0e\n\x0f\b\x8244\r.\x0e\r\x14\f\x17\x15\x0e-\x0f@\x13\x1c\x13\b\x10\t\x0e\x13\x01D\xfe\x80\r\x13\x13\r\x01\x80\r\x13\x13\r\x1a&&\x1a\xfe\x80\x1a&&\x1a\x018\xf0\x15\x11\x06\b\t&\x19\x17'\t\b\x05\x10:\x0e\x13\x14\r\r\x14\n\x0f\x9a\xf0\x15\x11\x06\b\x06\x15\x1d\x10\x17'\t\b\x05\x10:\x0e\x13\x14\r\b\x0f\n\x14\xbd\x13\r\xff\x00\r\x13\x13\r\x01\x00\r\x13 &\x1a\xff\x00\x1a&&\x1a\x01\x00\x1a&\x00\x04\xff\xfe\xff\xbf\x01\xe0\x01\xc1\x00\x18\x00\x1d\x00G\x00L\x00\x00\x17767>\x05454'.\x02'3\x14\a\x0e\x01\a\x067#73\x06'\x15#\a#\".\x035&\x06\x17\x16\x17#\".\x027547;\x012\x1e\x02\x15\x14254'32\x1e\x02\a\x176&\x06\xce\x1f\x17\x0e\a\r\b\x06\x02\x02\x0e\x03\x03\x06\x03O\n\t4\"\v\xa0w\x11\xb0\x1bZJ!\x06\x0f\x16\f\a\x02\x01\x14\x01\x03\x17[\f!&\x19\x01\x0fR\x01\x03\r\x14\x0e\x14\x10T&6\x19\n\x85@\a\x18$@&\x01\x06\x04\v\v\r\n\t\x05\x01\x04\x10\x03\x04\a\x033\x19\x15+\x05\x01\xa8\x1f\x1f\xe0\xa97\f\x0f\x14\t\x03\n\x02\n#\x16\f\x18/\x1f\xd5\x10\x01\x01\a\x14\x10\n\n\x1b\x11\x19)$J\x1e\x16\x1f\x03\x00\x00\x04\x00\b\xff\xc8\x02\x01\x01\xc1\x00\x03\x00\a\x00\"\x00'\x00\x00\x1753\x15'3\x15#%\x16\x0e\x02#512>\x01'.\x01'&\x0e\x01\x15#4>\x02\x17\x1e\x01\x031#53WJ\x88>>\x01\xd3\x15\x19Bj<3P\x1c\x11\v-\x1e7]<`6[v@8S\xda__\"JJ\x87=\xe7@v[6`<]7\x1e-\v\x11\x1cQ2\x0232\"2\x16\x14\x06\"&4%\x11&'\x17!\"&5\x11463!2\x16\x034&/\x01.\x03+\x01\a\x1e\x01\x1f\x01.\x01\x0f\x0167'\"\a\x0e\x02\x15\x1e\x02367.\x01/\x01\x1e\x021\x1e\x01767\x06\a\x172>\x027\x01)\x0f\v\a\f\a\x04\a\n\x05\vs\x16\x0f\x0f\x16\x0f\x01(:=\x0e\xfe\xdd\x15\x1f\x1f\x15\x01X\x15\x1fI\x12\n\t\n\x17\x11\x0e\x04\x04\x03\x13 \x06\x06,h+\x0f\x15.\x02#%\x04\f\x15\x02\v(\x19\n\a\x0e\x17\x04\x04\x02\x05\x04\"S+\x0f\x0e\r!\x11\x10\x1b\x11\r\x02\xd9\x18\x11\b\r\b\x06\n\b\x04\x10\x18\x11\x11\x18\xb2\xfe5390\x1f\x16\x01Z\x16\x1f\x1f\xfe\xf8$K\x13\x13\b\v\x05\x03\x04\x06\x11\x05\x05\x19\x02\x13\b\x14\x0e\x03\x1b\b\x1aO$\x05\f\x16\v\n\x04\x0f\x06\x05\x01\x03\x02\x13\a\x11\x05\n\x15\n\x14\t\v\v\x04\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\n\x00\x17\x00\x00\x132\x16\x14\x06+\x014546\x13264&\"\x06\x15\x14\x17\a7\x16\xe2\\\x82\x82\\\xe2\x86Z5KKjK\x0f\x17R\x19\x01\xa0\x84\xb7\x85\xe0\x04[\x81\xfe\xa0KjKK5!\x1cK\x14\f\x00\x00\x00\x02\x00\x00\xff\xbf\x01\x90\x01\xc0\x00\x02\x00\x14\x00\x00\x01#5\x173\x15\x14+\x01\x1132\x17\x15&+\x01\x11325\x01\x8e\x8e0`ӽ\xbd\x12\x11\x0f\x12__q\x01 \x8c\xac~\xc2\x02\x00\x03T\x02\xfe\xafd\x00\x00\x00\n\xff\xfb\xff\xdf\x02\x80\x01\xa0\x00\x03\x00\a\x00\v\x00\x0f\x00\x13\x00-\x001\x005\x009\x00=\x00\x00%#535\x15#5\x17\x15#5'\x15#53\x15#5\x05\x17\x06\x15\x06'\x0e\x01#\"'.\x017!27&6?\x01\x17\x16\x176\x16%\x15#53\x15#53\x15#5'\x15#5\x01^BBB\x90BZB\x90B\x01W\r\b\x19C)\xa9vn8\x1b\x17\x06\x01\xb3\x1c\x15\x0f\x04\x0e\t\x0e%\x05\x13+\xfe\fB\x90B\x90B\fB\xd4;\x91==\x91;;H<<<\x02'.\x01\a\x0e\x01\a\x1e\x03\x15\x14\x06#\"&76767>\x01\x1e\x03\x17\x1e\x01\x06\a\x06\a35\x17\x157$4&\"\x06\x14\x162\a3676&/\x01&'\x16\x17\x16\a\x06\x01\xe0\x90\xfe\xb0YH\x03\x06\x15\x17\x14\x03\x040\x1f\a\x13\x01\v\x12\f\a!\x18\x1b\"\x04\x04\x0e!H\x1b)(\x18\x17\b\x03\x0f\x12\x04\x11\"M[\"/\xfe\xe5\r\x12\x0e\x0e\x12'sZ&\x10\x02\n\t#0\x0f\n\x14162R@]R\x03\a\x18\x1c/\x12\x17\x17\f\x03\x10\x06\x01\v\x0f\x13\v\x17\"*\x19\x19\x174\x0f\x04\x02\f\t\x10\a\x03\x10.>\x1d>XA76\x1b\xe3\x13\r\r\x13\r\xc4bD!3\x0f\x0f$\x02\f\x184=B\x00\x00\x00\b\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x06\x00\r\x00\x16\x00#\x00)\x001\x00A\x00I\x00\x007>\x017\x16\x17\x067\x06\a&'6\x16\a>\x027\x16\x17\x06&7\x0e\x02\a&5045\x167\x16\x176\x17\x06\a&'67\x16\x17&\a&7\x11\x14\x06#!\"&5\x11463!2\x16\x024&\"\x06\x14\x162Z\a(\x1d\x1a\x19C\xa5\x162\x17\x1c!@\x95\b\x1c.\x1a\x15\b KE\x18.#\f#DI\a'-(\t2\a'4\x18\x1e\x01/0\x06\xbc\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c@^\x84^^\x84\xdc\x1f3\x0e$,\x11K\x1f\x12+%\a\x10\xe8\x0f \x1e\t71\x0e\t\x83\a\x1d$\x14(4\x03\x01\x02\x15\x0e\x19\a\r:\".d\x16 %0\v\x06\x0e\x9c\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xfe\xfa\x84^^\x84^\x00\x00\x00\x00\x01\x00\x00\xff\xe0\x01\xa0\x01\xa0\x00\x16\x00\x00\x1132\x17\x16\x15\x14\x0e\x02+\x01532654&+\x01\x15#\xabrE> <_:\xab\xabV_dQk@\x01\xa0F?[*P@&@a?@`7\x00\x00\b\xff\xfb\xff\xc7\x01\xe1\x01\xb9\x00\r\x00\x19\x00$\x00,\x00\xb5\x00\xc6\x00\xd9\x00\xe8\x00\x00\x01>\x01\x172\x1e\x02\a&\x0e\x02&#&676\x16\x17\x16\x06.\x02\x162\x16\x14\x06#\".\x0154&2\x16\x14\x06\"&4\x05\x06'\x06\a\x14323\x167.\x01670\x1e\x01\x17>\x02\x1e\x01\x06\a636\x17\x16\a\"\a\x06\a\x17\x16\x06'\x14\x06&5\a\x14\"5\x06&?\x01\"\x0e\x011\"&4632\x1e\x013&'\x06'&676767.\x03'\x06547>\x023>\x03367.\x01>\x01\x1e\x01\x17>\x02\x1e\x01\x06\a\x16\x17\x1e\x01\x172\x1e\x01\x15\x16\x15\x06'\x14\x06\a\x16\x17\x1e\a\x14%6.\x02\a\x06\a\x06\x16\x17\x1667>\x02\x174.\x01'&\"\a\"\x0e\x02\a2\x1632>\x017&'&\x0e\x01\x15\x14\x16\x17\x1e\x017>\x01\x019\x01\x18\f\x01\x06\n\x04\x02\t\x10\x0e\v\x06\xc9\x05\x14\x06\r\x1a\x01\x01\a\f\x10\x11\xbf\r\t\t\a\x04\a\x05\x96\r\n\n\r\t\x01N\v5\x14j\x02\b\x0e!@\b\x06\x03\x02\b\n\x03\x04\x0e\v\x03\x01\x03\a\b\x02\x05\x04\x03\t\x02--H\x01\x02\x1b\x03\r\x0f\x01\x1c\x06\x16\x01\x02\x11\x1d\x10\b\b\b\b\x01\x0f \x0fb\x119\v\x06\x18\"\n\x05\x01\x01\x05\x05\x02\x02\x02\x17\x02\x01\x05\x06\x01\x02\x10\x1f\x15\x15$-\a\x01\x04\x02\v\f\x02\x03\t\a\x02\x02\x03\x056*\"(\x03\x01\a\x05\x02\x01\x16\x05\x04\x04\x01\x05\x0e\t\f\a\b\x04\x03\xfe\xef\x01\r\x16\x1d\x0f'\a\b\x12\r\aG\t\x04\a\x043\x06\x05\x04\x01\b\x02\x03\x05\x03\x04\x02\t\x0e\x01\x01\x05\b\x8d\x06(\x15#\x16\b\x05\tH\x06\f\x15\x01\x90\n\x04\x05\x03\x05\x05\x02\x02\x02\x03\x02\x05\x03\f\x01\x05\x04\n\b\x05\x02\x04\x02l\t\x0e\t\x04\b\x04\a\t\t\x0e\t\t\x0e\x9a\x1b\x1ch\x14\x01\x02\n\x06\x13\f\x01\x01\x06\x05\x06\a\x02\x02\v\x10\a\x02\x02\b\x06\x01\v\n\x02\f\x0e\x06\x0e\t\b\a\v\x05\x0e\x0e\n\a\f\f\x02\x01\n\f\n\x01\x02\x19]\x1d\x1c\x0f\x1a\x16\a\x04\n\t\a\x10\v\x14\a\x04\x1b\f\x03\x01\x01\x01\v\x0e\a\x02(\t\b\x14\v\x02\x04\f\b\x04\x05\x02\x01\b\r\x04\x05.\x01\x0e\x13\x01\x01\x01\x03\f\x1a\x03\x02%\t\x11\x13\x04\t\x06\t\x06\a\a\b\a\x9f\x10\x13\x05\x02\x02\x01\r\x0fO\a\x04\x01\n\x05\x1a\x1c1\x02\x14\t\x01\x01\x01\t\t\x0e\x05\t\x05\bU\r\x01\x01\x01\x13\x15\x0f.\a\n\x02\x05\x06O\x00\x00\x00\x04\x00\x00\xff\xf5\x02\x80\x01\x8b\x00\x06\x00\r\x00\x0e\x00\x1e\x00\x00\x13\x06\x15\x14\x17#\x11\x052\x16\x17#>\x01%13\x11#67'\x06\a.\x015!456WANd\x01E#-\x01\xaa\x033\x01\nTQ \x1a`AWGD\x01u\x03\x01\x8aOq\x81S\x01\x94\t.%$/\t\xfek\"/0i\x01\x01jY\x10\b_\x00\x01\x00\x16\xff\xc0\x01*\x01\xc0\x00\x17\x00\x00%#\x15#5#5354>\x0132\x16\x1f\x01\x15#\"\x06\x1d\x013\x01\x17KdQQ\x1e7$\x10$\n\n(\x1c\x19Y\xa0\xe0\xe0]F(8\x1d\x03\x02\x01O\x1d\x15<\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00'\x00B\x00\x00\x012\x16\x15\x14\x0e\x01'&*\x02\x0e\x05\a\x06#\"&5<\x01&<\x01.\x03'&54>\x02\x176&\x0f\x01\x06\"/\x01&#\"\x0f\x01\x06\x1e\x01?\x0162\x1f\x01\x16327\x01\x01i\x8e`\x93L\x02\x02\x02\x04\x03\x05\x05\n\b\x0f\a\x04\x04\b\f\x01\x01\x01\x02\x01\x02N'B\\\xc9\x05\x0e\bO\x04\n\x04:\n\f\x15\vI\x03\x05\n\x05O\x04\n\x04:\n\f\x15\v\x01\xb8\x89hT{-\x15\x01\x01\x02\x03\x04\x04\x06\x03\x02\v\b\a\x0e\t\t\x05\x05\x03\x03\x02\x01Fl3Z?%\xb9\b\r\x06;\x03\x03,\a\x11t\x05\v\x03\x03<\x03\x03,\a\x11\x00\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\v\x00\x15\x00\x1b\x00#\x00\x00\x01#\x15#\x15#535353\a3\x15#\x15#5353\x17\x15#\x15#5\x01!\x15#\x15#\x15#\x01\x80@\x80\xc0\xa6\x80Z\x1a\x1a\x80\xc0\xa6\x80\x1a@\x1a\xfe\xda\x01\x80\x80\x80\x80\x01\x00\x80\x80\x1a\x80\x80@\x9a\x80\x1a\x80@\x1a@Z\x01\xa6\x80\x80\x80\x00\x00\x00\x00\x03\x00\x00\xff\xdd\x01\x80\x01\x8d\x00)\x00<\x00K\x00\x0073\a#\x15\x14\x15\x06\x1f\x01\x15#576=\x014+\x015354632\x16\x15\a4&#\"\x0e\x01\x1d\x01\x14\x0e\x01\x14\x01#576=\x014/\x0173\x15\x14\x15\x06\x16\x1f\x01\x03\x17\a'\a'7'7373\x173\x17r]\x0fM\x01\x06;\xb3\x1d\t\b\x1e&55*/E\n\r\f\f\x02\x01\x01\x01\x0f\x8d\x1c\v\n!\tn\x01\x02\x03\x16\x1e\f\n*+\n\f\x1e\x05&\x15\r\x15&\x05\xe03\x9e\x02\x03\x04\x01\x06\"#\x03\x01\n\x9c\x033\x1d2.\x1f*\b\x13\r\n\x0e\x0e \x01\x02\x02\x01\xfe\xfd\"\x04\x01\t\x94\b\x03\t(\xd0\x02\x04\x02\x01\x01\x04\x019-\n\x16\x16\n-%\n&&\x0e\x00\x00\x00\x04\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\v\x00\x17\x01Q\x01\xb5\x00\x0072\x1d\x01\x14+\x01\"=\x014;\x012\x1d\x01\x14+\x01\"=\x01437\x16\x15\x14\x15\x14\x15\x14\x150\x141\a0\x141\x14\x15\x1c\x01\x06\x150\x141\x06\x150\x141\a0\x15\x14\a\x1c\x01\x15\"\x140\x06\x1c\x01\x06\x1c\x01\x061\x14\a\x14\x15\"\x141\x06\x15\x06\a\x14\a0\x06\x14\x061\x0f\x01\x15\x06\x15\a\"\a\x1c\x01\x0e\x01\x15\x061\x14\x06\a1\x06\a\x141\x0e\x01\x150\a\x06\x14\x0610\x06\x15\x061\x14\x06\x15#\x06\a0*\x02\x06*\x021\x06#*\x031\"#\"\x06*\x01#\"#0\"1*\x01#\"#*\x02#0*\x01&*\x051&#\"#*\x011&#*\x01#&'05&'4.\x01#04'.\x015.\x0114\"5&'014&5&4&4&4&5'\"&<\x01/\x010&1&54'4&'45\"41&54&<\x01&41&5<\x01&<\x01&504'41'041&5041<\x01545&504145041<\x01'45<\x0154767676767676767632\x17\x16\x170\x161\x16\x17\x16\x17\x16\x0354+\x01\"\x1d\x01#54+\x01\"\x1d\x01#54+\x01\"\x1d\x01#54#5632\x1632=\x014#\"\x06#\"&#\"\a5654\"\x15\x14\x17\x15\"\x1d\x01#54+\x01\"\x1d\x01#54+\x01\"\x1d\x01#54+\x01\"\x1d\x01\x16\x17\x16\x17\x16\x17546\x16\x1d\x0167676\xd0\x04\x04\x16\x04\x04\x8c\x04\x04\x16\x04\x04\x9a.\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x04\x03\x01\x01\x01\x02\x01\x02\x01\x02\x01;e\x02\x01\x02\x01\x02\x01\x02\x02\x01\x01\x02\x01\x02\x02\x01\x01\x02\x01\x01\x01\x01\x03\x02\x01\x04\x01\x04\x02\x01\x02\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x02\x01\x02\x01\x01\x02\x01\x02\x01\x01\x01d<\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x03\x04\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01.\x03\x04\b\b\x04\x04\x06\x03\a\a\x03\x02*3\x18\x1a\x19\x193+\x04\b\x06\x12\x0f\x03\x06\x04\x16\x04\x1d\x04\x16\x04\x1d\x04\x16\x04\x1d\n\f\t\x05\x10\x05\x16\x04\x02\r\x04\x04\x12\x05\b\v\b\x1a\b\n\x1d\x04\x16\x04\x1d\x04\x16\x04\x1d\x04\x16\x04\x0e\x14\x1f(\x15\x16,,\x16\x15(\x1f\x14\xd3\x044\x03\x034\x04\x044\x03\x034\x04}AO\x04\x02\x01\x01\x01\x03\x02\x01\x02\x03\x01\x02\x01\x02\x01\x02\x03\x01\x02\x06\x01\x02\x02\x01\x01\x01\x03\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x02\x02\x01\x02\x03\x02\x01\x02\x01\x02\x03\x01\x01\x02\x01\x03\x02\x01\x01\x01\x02\x01\x01\x01\x02\x01\b\x04\x01\x01\x02\x01\x01\x03\x01\x01\x02\x01\x01\x01\x02\x01V\x11\x01\x01\x01\x01\x01\x01\x11S\x01\x02\x01\x01\x01\x02\x01\x01\x02\x01\x01\x01\x02\x01\x01\x04\b\x01\x02\x01\x01\x01\x02\x01\x01\x01\x02\x01\x02\x02\x01\x01\x01\x03\x02\x02\x01\x02\x01\x01\x03\x01\x02\x01\x02\x02\x01\x01\x01\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x01\x01\x03\x01\x01\x06\x02\x03\x01\x02\x01\x02\x01\x01\x01\x02\x02\x02\x02\x02\x02\x01\x02\x01\x01\x01\x01\x04\x01OA\x04\x05\n\b\x04\x05\x05\x03\x05\x06\x02\x01\x1e\v\x05\x05\n\x1f\x03\x06\x05\x10\x13\x03\xfe\xf6H\x04\x04\x1a\x90\x04\x04\x1a\x1a\x04\x04\x1a\x1a\x04\x1e\x03\x03\x061\x03\x03\x03\x02\x04\x03\b\r\r\b\x03Z\x04\x1a\x1a\x04\x04\x1a\x1a\x04\x04\x90\x1a\x04\x04H\x17\x13\x1f\x11\t\x05L\x1c\x17\x17\x1cL\x05\t\x11\x1f\x13\x00\x03\xff\xf0\xff\xe3\x01\xcb\x01\xac\x00\t\x00\x0f\x00(\x00\x00\x01>\x01\x16\x06\a\x06.\x02'\x06\a&76\x0567\x16\x15\x14\x06\"&54>\x0132\x17\x06\a&\x06\x17\x1e\x0176\x010\x0fm\x1e5\x0f\t%#\x0e\xb90\x1c1\x15\x14\x01}\x06\x05\x1b~\xb3~:c;4/\t\n\x14\t\x0e\x11M\x0f\b\x01`\x0f5\x1em\x0f\t\x0e#%%\x1e1U\x15\x14\x99\n\t19Y\u007f\u007fY;c:\x19\x05\x06\x03\x1c\x18!4\x0f\b\x00\x03\x00\b\xff\xc4\x02H\x01\xc0\x00l\x00w\x00\x83\x00\x00\x01\x16\x15\x14\x06\a5\x06'\x15.\x015476\x17\x16\a\x06\x15\x14\x16\x175&'\x15.\x0254676\x17\x16\a\x0e\x01\x15\x14\x16\x175.\x02547.\x03=\x0146723\x1e\x01\x1d\x01\x14\x0e\x03\a\x16\x15\x14\x06\a\x15>\x0154&'&76\x17\x1e\x02\x15\x14\x06\a5\x06\a\x15>\x0254'&76\x06\"\x06\x15\x14\x1e\x013264\a2>\x0254&\"\x06\x14\x16\x026\x12\xa1s\f\fs\xa1\x12\x05\v\n\x04\x11\x84b\v\f5T1E9\v\x05\x05\n4>N>\a\v\a\x12\x03\x0f\x0f\fd\x1d\x04\x04\x1dd\b\v\f\v\x03\x12\x0e\v>N>4\n\x05\x05\v&8 iQ\f\v@i=\x11\x04\n\v\xb9\x14\x0e\a\n\a\n\x0e\xa4\x05\t\x06\x04\x0e\x14\x0e\x0e\x01J15t\xa7\x04\x92\x01\x01\x92\x04\xa7t51\v\x05\x04\n-1d\x95\r|\x02\x04h\rDc8Dr \x06\v\n\x05\x1dg>Eo\x19\\\x03\t\x0e\b\x14\n\x1b \b\t\b\x0f\x1e\x85\x02\x02\x85\x1e\x0f\x06\b\a\f\x1d\x16\n\x14\f\x12\x04\\\x19pE=g\x1d\x05\n\v\x06\x15@S-V\x84\x13h\x04\x02|\bJrC0-\n\x04\x05\xa9\r\n\a\v\x06\x0e\x14\"\x04\x06\t\x05\n\x0e\x0e\x14\x0e\x00\x02\x00\x00\xff\xe0\x01\x90\x01\xa0\x00\x19\x00\"\x00\x00%2\x1e\x02\x17\x06#\"&54632\x17\a&\"\x06\x14\x16327572\x16\x1d\x01&+\x015\x01D\x13\x1c\x0e\x06\x01Dg]\x80\x81\\[A?&nNN74&\x01%3\x184v\x80\x10\x1a\x17\rR\x84\\]\x83B?'NpN$\"q50\x1e*Y\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x10\x00 \x00L\x00\x00\x01\x16\x0e\x01\a\x0e\x01'.\x017>\x0132\x1e\x017\x11\x14\x06#!\"&5\x11463!2\x16\a45#\x15\"'.\x01#\"\x06\a\x06\x15\x1e\x017670703\x1c\x01\x15\x14\a\x06\a\x06'&'4+\x01\x16\x17\x1e\x0176\x01,\x03\x06\x12\x0f\x10*\r\x1a\x17\x02\x03,\x1d\x17!\x13\x97!\x17\xfe\xb0\x17!!\x17\x01P\x17!v\x1d\x01\x01\b(\x1c&4\n\x06\x01<4.\x17\x01\x01\a\f!\x1b\x1a#\x06\x02\x1b\x01\a\x11O!C\x01\x01\x14%!\v\v\x02\a\r5 *-\x14\"O\xfe\xb0\x17!!\x17\x01P\x17!!\xf8\"\xb7(\x01\x12\x1c*$\x15\x18:<\x02\x02,\x02\x04\x1a\x04\x19\x13 \a\x06\a\n \x01\x11\f\x1d\x13\n\x11\x00\x00\x00\x02\x00\x1c\xff\xbf\x01c\x01\xc1\x000\x00?\x00\x0073232\x15\x16\x17\x167676564/\x01\x14\x06\x15\x0e\x01\a\x06.\x01'47>\x0132\x1e\x01\x17\x16753\x13\x06\a\x06.\x01'&\x13\"\x06\a\x06\x16\x17\x1667>\x01'.\x01+\x02\x1a\r\x03\n5'*2\x12\v\x01\x01\x01\x02\x117\"3L+\x02\t\x10O;\x1c2\x1e\b\x01\x01,\x01\x01f%IE\x11\v\x90+D\x04\x03\"(\x14A\x18\"\x1b\a\a<-\x030\x0f\v\t\v1\x1c'\a*\x03\x01\x01\x03\x01 #\x02\x02'Q;% 7@\x17\x1e\x11\x03\x01=\xfe\xb4\x89\x19\a\x01\"\x1d\x13\x01\x89EA1Q\x13\v\x03\x11\x17U.8@\x00\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x03\x00\a\x00\v\x00\x00%\x033\x13\x05!\a!\x13\x17\x03'\x01S\xa4\xa2\xa3\xfe\xd6\x016Q\xfe\xca!S\x9cQ\x85\x01\x1b\xfe\xe5\x17\x8e\x01\x9d\x8e\xfe\xf1\x8e\x00\x00\x04\x00\x19\xff\xc0\x01\xe8\x01\xc0\x00\x02\x00\t\x00\x10\x00\x13\x00\x00%'\x05%\t\x01&5\x114\x05\x1e\x01\x0f\x01'7\x017\x17\x01E\xdc\x01\x18\xfe\xae\x01\x01\xfe\xff\x16\x01\xbf\x0e\x01\x0e\x0354'\x1e\x02\x15\x14\x0e\x027\x16\x15\x14\a\x061\"&5>\x0254'\x0e\x02#\".\x045470>\x0254/\x01\x1e\x01p\x02\x02\x06\x02\b\x02\v\x02\x03\r\x0e\f\x11\x05O\x15\x18\x15\x1e,+\x1e\x01\x04\x12\x12!(!\xce\x02C\x03\x04 \x05\x0e\x17\t\x01\x1c\x1c\x01\x01\x03\x04\x04\x04\x02\x03\x13\x14\x11\x03\x04\x13D\x93\x05\v\a\v\x05\r\x02\x0f\x01\x02\x04\x12\x14\x1e\f\x19\x16\x02\x0f\x05\x1f8\x12\x19*\x17 >105\x19\x05\x05\x02\x17,\x15\x1b9)6\x0f\r\fCF\x02-\b\x06\x154\x12\x11\x10\x0e,\x1d\x03\x06\b\t\v\x05\b\b\x1b *\x0f\n\a\a\aP\x00\x12\x00\x02\xff\xc0\x01~\x01\xc1\x00&\x00-\x00O\x00V\x00d\x00\xf2\x01\x04\x01\x11\x01#\x010\x01\x9c\x01\xa8\x01\xae\x01\xba\x01\xc0\x01\xcd\x01\xd7\x01\xe5\x00\x00\x1367&'6\x17\x1e\x01?\x01\x14\x06#\x16\x0e\x02\x0f\x0164>\x014'&'\x06.\x01'&'\x06\a4.\x017\x06\x16\x17\x167&\x17\"&5\x1676\x17\x06\a\x16\x17\x14\x06\x0f\x01&'\x06\a\x0e\x02&'\x06\a\x06\x16\x1f\x01.\x027\x06\a\x167>\x01\a2\x16\a\x06\a\x06\"'&'&637\x1e\x02\a\x06\a\x06\a\x06#\"'&'.\x01'&6?\x01\x16\x17654&'&'.\x0254746165>\x01'&767674765&'.\x02#'7632\x17\x16\x1763&670\x14\x1e\x01\x1767\x06\x17>\x013\x17\x0e\x02\x17\x16\x1767632\x1e\x01\x15\x17\a\"\x0e\x01\a\x06\x15\x06\x17\x14\x152\x17\x16\x17\x16\x0e\x01\a\x06\x16\x17\x16\x172\x17\x16\x15\x14\x0e\x01\a\x06#\x0e\x01\x15\x14\x176\x03\x06\a\x16\x17\x16\x1767632\x1767&#\"\x17\"\a\x06\a\x16\x1767>\x0176%272\x17\x16\x176767&'&#\"\a\x16\x17&'&#\x16\x17\x1e\x01\x17\x16\x176\a\x16\x17\x16\a\x16\x176767\x06\a6;\x012\x17&'\x16\x17\x16\x1767&76767>\x0254/\x010&5\x16\x17&'&7\x14\x15676'&'&#\"\a\x06\x0f\x01767&'&\"\a\x06\a\x16\x1f\x01'&'&#\"\a\x06\a\x06\x17\x16\x1745\x16\a\x0e\x01\x0f\x0167\x06\x0f\x01\x06\x15\x14\x16\x17\x16\a\x163&?\x0167&'\x06\x16\x17\x16\x17&'\"\x17276'&+\x01\"\x06\x17\x16767\x06#\x067>\x01'\x06\a\x16\x17\x161\x16\a2'\"&/\x01\x16327\x06\x17\x1e\x01\a\x06\a\x06\"'&'&63=\x01\x06\a\x06.%\a\x12\x05\x06\r\t\x01\x03\x04\x04\x02\x02\x01\x02\x01\x01\x01\x02\t\x18\x11\x05\f\x01\x03\x01\x02\x03\x1d\x03\x03\x06\x12\x14\fn\t\r\x13\x11%.\x06\a\x06\x01\x02\x02\x01\x01\x03\x02\v\x03\f\x10\x11\a\x02\x01\x01\x01\x01\x02\x02\x05\b? \f\x13\x12\a\x03\x89\x06\x05\x01\x04\t\x05\r\x05\n\x04\x02\x06\a\xda\x03\n\f\x04\a(\x14/\x18((\x17/\x15\x13\x18\x04\x04\v\a\a\x03\x16\x03\t\x03\x03\x05\r\r\x0f\x10\x02\x04\x03\x01\x02\x11\x05\x03\v\b\f\x01\x01\x01\x02\x03\x0f\n\x01\f\b\x12\x1c\f\f\x1b\x17\x04\x02\x01\x15\b\x01\x03\x03\x04#\x06\b\t\x11\x04\x04\x02\x04\x05\x02\x05\x04\x17\x1b\f\f\r\x17\n\b\f\x01\n\x0e\x04\x02\x01\x02\f\b\v\x03\x02\x06\x06\x02\x02\x01\x03\x01\x03\x01\x01\x10\x0f\r\r\a\x01\x03\t\x04\x15(\x15\x11\x02\x03\x04\x03\x06\x0e\r\x10\x05\x04\x05\x05\f\r\t\r\v\t\t\x04\x06\x04\x05\a\x03\x02\x03\x01\xfe\xe9\x04\x05\x10\f\x0f\x06\x05\x02\x02\x03\x11\x15\b\t\r\f\x051\x04\t\b\f\x02\x01\x03\x02\x03\x05\a\x03\x19\x12\x01\x02\x05\x0f\x18\x04\x02\x11\t\x06\x11\x06\x06t\a\x05\x11\x06\v\x0f\x02\x04\x18\x0f\x05\x02\x01\x12\a\x01\n\n\v\t\x01\x02\x02\x01\f\x04\x03\b\x01\x01\f\x03\x01\x06\x05\n\x0e\x13\x1a&\x06\x04\x16\x1f\x05\x11 T \x11\x05 \x15\x04\x06&\x1a\x13\x0e\t\x06\x06\x01\x03\f\x01\x01\b\x03\x02\a\x03\x04\x02\x01\x01\x01\x01\b\x0f\x0f\x06\x15\x12(\a\v\x01\x05\x03=\x0e\x05\x015\r\x12\x06\x06\tf>\x17\x05\x06\x06\x13v\x13\f\x05\x17\x8f\x12\r\n\t\x06F\b\x01\x05\x0e<\x03\x04\x01\v\a)\x8c\x06\r\x04\x04\r\x0e\x0e\r\x0e1\x06\x06\x02\x04\n\x05\r\x05\t\x04\x01\x05\x06\x01\x03\t\x03\x02\x02\v+\t\x04\x02\x02\b\v\x05\t\b\a\x02\x02\x01\x02\x06\x06\b\x03\x04\x04\t\x02\b\x05\r\x15\x06\n\x01\x03\n\x06\x06\x18\x05\r\f\x12\x1b\v\b\n\x13+\v\x02\x03\x02\t\x05\t\x03\x02\t\a\x15\r\x03\a\x05\x03\x06\x05\x03\x06\v\x05\x04\x02\a\x114\x12\x12\f\r\x05\x18\xe0\x06\x04\n\n\x04\x04\t\t\x06\x06e\x03\n%\x15(\x0f-\x04\x14\x14\x04-\a\x1b\x15\x15$\a\a\x1a\x12\x1b#\n\x0e\x02\x02\x03\a\b\x12\v\x10\v\x01\x01\x03\x02\x06\x1d\x02\x14\x13\f\x05\x04\x01\x02\x04\x05\x03\t\x02\x06\t\x03\x02\t\x12\x04\b\x1f\x02\x12\x1d\x01\n\a\t\x01\x1c\f\x11\x14\b\b\x01\x02\t\x14\a\x01\x02\x1f\b\x04\t\a\x01\n\x02\x03\t\x06\x02\t\x03\x05\x04\x02\x04\x06\f\b\x14\t\x02\x02\x1d\x06\x02\x03\x01\f\x10\n\x13\b\a\x04\x03\x0e\n#\x1b\x12\x011\x06\x1a\x01\x01\x02\x02\f\v\t\x01\x03\x02\x05\x15\a\a\x0f\x06\x06\x02\x01\x05\x19\x05\x01\r\x01\t\v\f\x03\x01\x01\x01\x1a\x06\x03\x05\x02+\x0f\a\a\x02\x01\x06\x18\x05\x01\x02\x06\xa9\n\x18\x193\x06\x01\a\x060\x0e+.\x01\x01.+\x11-\x06\a\x01\x063\x19\x18\n\x04\x01\x05\x06\r\x06\v\a\x01\x01\x01\r\x02\x0f\x1d\x19\x12\x06\b\x01\x01\x0f\v\x06\x02\x03\x06\b\x1e\x04\x06!\x0e\x06\t\x0f\x0f\t\x06\x0e!\x06\x04\x1e\b\x06\x03\x02\x06\v\x0f\x01\x01\b\x06\x12\x19\r\x16\x05\x04\x02\r\x01\x01\x01\a\v\t\r\b\x04\x92\x1d\x14\f\x01\x05\x05\x03*\x02+9\x12\b\t\x0f0@\x10\b\a\x0f\x10@\x18\b\x12\x02\x0f<\x0e+\x02*\x03\x05\x05\x01\f\x14\xf6\t\x05\x04\b\b\x12\xe6\x01\x05\x05\n\b\x05\x05\n\t\x04\x06\x00\x04\x00\f\xff\xc0\x00\xf6\x01\xc3\x00\r\x00\xcf\x00\xe3\x00\xf0\x00\x007\x0f\x01\x14\x06#\".\x015/\x01\x162\x03\x1667\a\x06\a\x06#\"527654&\x06\a\x06\a654#\"\a\x06\a\x14\a0\a\x06#\"76746767476'&#\"\a\x06\a\x06\a\x0647>\x0176'&#\"\a\x06\a\x06\a\x06\a\x06#\"7676'0#&\a\x06\a\x06\x17\x16327\x06\x167\x14\x161\x167670\a\x0e\x01\x15\x14\x17\x16767464676767676\x17\x14\a\x06\x15\x14\x16767\a\x0e\x02\".\x01/\x01\x1632767\x06\a\x14\x17\x1632767>\x0254&\x06\x0f\x01\x06\a\x06#\"'&7>\x0176\x17\x1632'.\x01\a\x0e\x01\a7\x14\x06&54632\x17?\x016\x17\x16\a\x15\x0f\x01\x16\a4'\a\x14\"=\x013\x06\x15\x142\xd2\x0e\x05%\x1a\x11\x1d\x11\x06\x0f\x1fi\xa6\x17\xb6\x17\x0f\f\x04\a\x01\x03\x01\x05\r\x06\f\a\x03\x02\x01\x04\x01\x02\x02\x03\x02\x01\x10\a\x02\x01\x02\a\n\x03\x02\x02\x01\x01\x02\x02\x01\x05\x02\x19\x01\x04\x03\a\x03\x01\x05\x01\x02\x02\x02\x02\x03\x02\x01\x01\x01\x04\x05\x06\x04\x03\x04\x02\x02\b\x02\x03\x01\x05\x03\x04\x03\a\x02\x02\a\x0e\b\x03\x0e\t\x01\x02\f\a\b\x01\x0f\x01\x02\x02\x04\x02\x02\x01\x02\x02\x03\x06\x04\x05\x04\x04\n\x02\x05\x0e\r\x04\a\r\v\x01\x16+-*\x16\x01\b\x03\x05\t\f\x03\x04\a\x01\x01\x01\x02\x04\x02\x02\x06\x02\x06\x02\x04\x05\x01\x05\x04\t\n\x06\x03\x02\x03\x04\x04\x10\t\v\x06\x04\x03\x06\x02\x01\x12\n\r\x16\x05\xd9ttD0\x0f\v\r=\x03\a\b\x039\nDF\x02\x01\x16\x01\x04\x1c9\x19P\a\t\x04\b\x04P\x19\r\x01\n\r\x01\f\x88\v\x03\x05\x02\x06\x10\a\x04\x05\x02\x06\x03\x02\x03\x03\x04\x01\x03\t\x01\x04\x01\x11\x06\x04\x12\x02\x17\a\x05\x04\x01\x01\x04\x02\x01\x05@\x04\x03\x01\x03\b\b\x03\v\x02\x05\x02\x02\x05\x03\x02\x05\b\t\x04\x02\t\x05\x0f\x06\x02\x02\x06\t\a\x13\x05\x05\x0f\x0e\x03\t\x01\x01\t\x05\x03\b\x03!\x02\x02\x02\x01\x02\x01\x02\x03\x01\x01\x01\a\x04\b\x0e\t\x06\a\x03\a\x04\x03\x05\x13\x03\x06\x02\x02\x03\f_\x02\b\a\a\b\x02P\x02\f\x02\x04\x15\x04\x05\x01\x02\b\x06\x14\b\x0f\a\x04\x03\x03\x02\x04\x0f\a\t\n\x03\a\r\x0e\x1d\x06\b\v\a\t\a\n\x04\x06 \x11\x86\n\b\b\n\x06\n\x011@\x03\x06\a\x02\x01<)\x04\x0f\x01\x01\x01\x02\x02\x01\x01\x01\x04\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x10\x00 \x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\a\x177#\x0e\x02\a.\x03'#\x17\x153\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x1b\xdaQ#\x18\x17\v\x02\x02\t\a\x17\x13%P\x1f\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xc56\x9b-/\x1c\x06\x05\x16\x110\"\x99g\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x10\x00\x83\x00\x00\x01\x1e\x02\x17\x11\x0e\x01\a!.\x01'\x11>\x017\x012&#&'.\x01=\x014>\x0176&#\"\x06#\"&#\"\x06\x170\x1e\x05\x15\x14\a\x14\x0e\x01+\x01\".\x015&54>\x0516&#\"\x06#\"&#\"\x06\x17\x1e\x01\x1d\x01\x14\x06\a\x06\a\"\x063262\x16324'&'.\x0146546;\x012\x16\x15\x14\x16\x14\x06\a\x06\a\x06\x143262\x16\x01\xbb\x02\x13\x1e\x12\x1b'\x02\xfe\x8c\x05'\x1c\x1c)\x03\x01N\x06\x01\x05\x0e\b\x05\x03\t\v\t\x06\x03\x04\x12\x15\x12\x10\x11\x10\x03\x03\x05\x06\x03\a\x04\x05\x02\x01\x01\a\x04n\x04\a\x01\x01\x02\x05\x04\a\x03\x06\x05\x03\x03\x10\x11\x10\x12\x15\x12\x04\x03\x06\x0e\x0f\x03\x05\b\x0e\x05\x01\x06\x12\x13$\x15\x11\x04\x04\x14\x05\x03\x03\x01\b\x05p\x05\b\x01\x03\x03\x04\x15\x04\x04\x11\x15$\x13\x01\xc0\x12\x1f\x14\x03\xfe\x8e\x03(\x1b\x1b&\x04\x01s\x03)\x1c\xfek\v\x05\t\t1Fe\n\x0e\x06\x02\x02\n\x02\x02\t\x02\x01\x02\x04\x05\b\f\a:\v\x01\x06\x06\x06\x06\x01\v:\a\f\b\x05\x04\x02\x01\x02\t\x02\x02\n\x02\x03\x0e\x0feF1\t\t\x05\v\x02\x02\t\x01\a\x06\x05\x1f\x1c+\x06\x04\t\t\x04\x06+\x1c\x1f\x05\x06\a\x01\t\x02\x02\x00\x00\x00\x01\xff\xf4\xff\xd0\x01\xc5\x01\xc0\x00$\x00\x00\x01\x1e\x01\a\x0e\x01\a>\x01&'\x16\a\x06'&'\x0e\x01\x16\x17&'&67>\x01.\x01/\x01\x1e\x04\x01\x9f\x17\x0e\v\fO:\x1b\r # \x1f\x19&\x1c\x15\x03\a\x02\ro\"\x19*>$!\x06\x10\t\n\t\x1eTHN\x01\x1e(_-.R\x12&`J\b7-#\x06\x04\x1f\v\x1dA\x19\x10M\aI06L\x1a2\x05\a\x11\v\f\f\v\"\x17\x022\",8}(\x1d\x13\x1f\x13)9\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\a\x005\x00E\x00Q\x00\x00\x122\x16\x14\x06\"&4\x17654\a\"\a\"\a\x06\x15\x06\x16\a\x06\a\x06\a\x06\x16\x17\x167676547676\x15\x14\x15\x16\x06\a\x06\a\x06\x16\x17\x1676\x132\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x132>\x014.\x01#\"\x06\x14\x16\x99\x8ded\x8ee\xfb\x01\t\x01r\x03\x04\x03\x01\x01\x03\x02\x06\x1e\b\v\n\x10\x11\x0e\f\x03\x01\aX\x04\b\x01\x05\x06\x1e\b\b\x01\t\v\x15\x16/+<<+\xf2+<<+y4Y33Y4Pqq\x01pe\x8dee\x8d\x8b\x04\xa3\n\x01\x15\x03\x02\x04\x02\x83\x01\x03\x01\x05\b\n\x1e\x03\x03\t\x06\r\x06q\a\x01\x10\x01\x02\b\x13\x19\"\x06\x01\x05\a\b\x16\a\t\x04\x04\x014<+\xf2+<<+\xf2+<\xfed4XiX4q\x9fq\x00\x00\x01\xff\xf8\xff\xda\x01\x81\x01\xa2\x00=\x00\x00%\x0e\x01\a\x06'.\x017>\x02767>\x015&54\x0f\x01\x0e\x01\x15\x14\x15\x16\a0\x15\x06\a\x0e\x01'.\x017>\x027676\x0276763636\x15\x14\x15\x14\a\x14\x01~\x05\x1d\x15*\x17\x11\x02\x11\b\x1a\x11\x19\v\x05\x04\x01\x01\x11\xb9\b\x06\x01\x03\x06\x18\r&\r \x13\x16\b\x1b\x11\x19\v\x05\x05\x01\x01\x01\x06\x06\a\xe6\x03\x12\x02<\x14\x18\x04\b\x12\x0f,\x0f\b\n\x04\x04\x02\x06\x04\x1243&\x0f\x03#\x01\a\b7Jc\v\x01\x1b\f\a\x06\x02\x06<\x15\b\n\x03\x05\x02\x05\a\x00\xff\b\t\x04\x06+\x01\x13Sl\x8a\b\x01\x00\x17\x00\x17\xff\xc0\x01\xe9\x01\xc4\x00L\x00c\x00s\x00\xb9\x00\xcd\x00\xd9\x00\xe1\x00\xeb\x00\xfa\x00\xfd\x01\x02\x01 \x012\x017\x01P\x01Z\x01g\x01\x81\x01\xa8\x01\xc1\x01\xca\x01\xd1\x01\xe2\x00\x00%\x16\a\x06\a!&'45.\x03'&>\x01767656.\x01'&'&'.\x017>\x0274.\x015&7>\x057676\x16\x17\x1e\x03\x17\x1e\x01\a\x06\a\x0e\x02\x1e\x02\x17\x1e\x03\x01\x0e\x01\a>\x0136\x167>\x027>\x0272>\x015&\a\x06\x176\x16\x1526.\x025&6'\x06\x17\x16\x17\x16\x176\x17&'&'\x1e\x02\x17\x167676'&'.\x01\a&>\x01\x17.\x06'.\x01\a\x06\a\x1e\x01\x0e\x01\a\x14\x16\x17\x06'&'&\x06\a\x06\x167>\x013\x16\x0e\x02\x15\x06\x17\x06\x16\a\x16\x176'4&'&\x0e\x01\a\x16\x156\x17\x06'>\x017\x0e\x02'\x14\"\x15\x16\x17\x1676'&\a\x06'465.\x02'\x06\x16\a30'&'&'\".\x01\a\x06\a\x16\x174173&'\"7<\x025&#>\x017<\x015\"'&'&\x0e\x02\x17\x14\x17\x16\x17\x167>\x01\x177\x06&#&\x06'\x0e\x02\a\x16\x17342\x15;\x01&\a\x0676'4.\x01'.\x01'\x0e\x02\a6\x17\x16\a\x1e\x01\x17\x06\a36\x03>\x01\x17\x1e\x01\a&\a&\x17>\x017&721\x16\x17\x0e\x01&'&7\x1e\x01\x17\x14\x1e\x03\x14\a\x0e\x01\a\x06&72\x1e\x03>\x01\x17\x1e\x02\x17\x16>\x027>\x01.\x02'.\x0256\x17\x14\x15\x16\x17\x1e\x02\x17\x16\x06\x15\x0e\x02'.\x01'.\x02#\"\x0e\x02\x1c\x02\x15.\x017&\x0e\x02\a6\x16\x17\x16\x05\x06\a&7>\x03\a\x167\x16\x15\x06&\x17\x06\a\x0e\x01'.\x02'&'&3\x1e\x016\x01\xe7\x01\n\b\x06\xfeZ\x01\x01\x02\x05\x04\x03\x01\x01\a\x14\x03\n.\x1b\x02\x03\b\x01\a\x01\x19\x0e\v\b\a\x01\x03\x02\x01\x01\x02\x02 \x03\t\n\x12\v\x16\x05\v\x1d%g\x1e\a\x11\x0f\x0e\x04\x13\x02\x0f\x06\x05\x01\b\x05\x01\f\x11\x01\x02\f\a\a\xfe\xe7\x1c4\t\x04\x12\x06\x01\v\x01\x04\t\b\x03\x03\a\b\x02\x01\x05\x03\x03k\x0e\x04\x14*\x03\x04\x01\x01\x03\x03\v\a\"\x10\t\x11\x0f6\x06\x1e\x10\x18\x1a\x01\x11\x11#\x15-6\a\x12,\x05\x02\a\a \r\x02\t\x10\n\x02\b\x05\b\x06\b\a\x05\x1cF\x1fC\x10\x04\x01\x04\x05\x01\b\x01\x06\x15\a\x12\x10\x17\x01\x01\x1b\x12\x05\x0e\x05\x03\x03\x05\x05\x01\xe1\x01\x01\x01\x16\x1d\x05\x01\x05\x05\x06\x13\x15\x03\x03\n\t\x0f\x13\x03\x0e\x05\x06\x1b\x0e\f\x02\x10\n\x10\x02\x03\v\x05\a\x01e\x03\x05\x13\r\x04\a\"\x9d\xb4\x02\a\x01*\x0f\x01\f\f\x01)=\b\xf7\b\t\x01\x02\x01\n\v\f\x03\x0f\x04\x06\x10\x15\x17\a\a\x02\x01\x01\v\x03\x02\v\x17\a\x169\x01\x06\x10\x03\x03\x0e\x05\x01\x02\x02\x01\x04\x05\x11\f\x17$\x0e\x15\x01S\x05\x01\a\r\x01\x05\x15\a\x03\b\b\x02\x16\x06\x06\n\x01\t\x01\x01\x01\x1c\a\xf1\x05\x1c\f\a\t\x04#\x13\t\xbe\x04\x16\x04\n\x01\x01\x11\x04\x02\x16\x13`\x14\x05\x01\v\x06\x04\x02\x02\x01\x01\x01\b\x03\r\x1f\b\x02\x06\x05\x06\x06\x05\x05\x1d\x01\x02\x04\x05\a\x11\r\x11\x04\x03\x01\x02\x03\a\x01\r\v\x0e\x06\x02\v$\x01\x06\x03\x01\x01\x06\x0e\x12!\x10\x06\x02\xc4\x03\x05\x05\x04\x02\x04\x02\x01\x06\x02\x04\x02\x04\x02\x04\x01\x03%\x03\x01\x01*\x15!\x01\x01\b\x10\n\x0f\x89\x178\x02\x1c/V\x03\x06\v%\x0f\x05\b\t\x01\x01\x02\v\x0e\x06 %\x17\a!\x1a\x15\x01\x03\x01\x01\x04\x0e\n\r\x05\t\v\t\x02\a\x1b\x10\x02\x04\n\f\x02\x0f\x0f\x04\x15\x11-\x16\x01\x03\x04\x02\x03\b\b\x03?\x0f\t\x11\v\r\x06\f\x04\x06\v\x0e\b\x17\x05\x0f\x11\x12\a(|0\x15\v\x02\x0e\n\x06\f\x0e\x01\x02\n\a\t\x01\x83\b\"\x15\x01\x06\x01\x02\x01\x01\v\x0f\x03\x03\x06\x05\x03\x02\x03\x02\x03^\x104\f\x14\x16\x04\x06\x05\t\x02\x0fF\r\x03\xe0$\x19\x14\x04\x0e\a\x06\x1a\x1d\x14\x18\x14\x1c\a\x0f'\x04\x1a?^2\r\x0e\f\n\b\f\x03\x02\x02\v\x06\t\a\a\x06\x02\x11\v\f!%\n\x18\x12\x1a\t\t\x1f\b\t\x01!\x02\x02\x16\x10\x13)\x02\x01\n\x04\a\x05\x06\x02\x04\x88\x02\n\x04\x06\x01\a\x10\v\x17\x03\x03\b\x0e\x02\t\x01\x03\x05\x02\x12\x03\f\x03\x01\a\x01\x04\x01\x01\f \x05\x0e\r\x02\x01\x05\x02\b\x03\f\x02\x01\x01\x02\x03\x06\x11;\a\x16\x0e\x14\n\x0f\r\x01\x10/\x11\x1a\x01\x05\x01\x03\x15\x01\x04\x04\x01\x06\x02\x03\x02\x01\x03\x01\t\f\x04\x01\b\r\x10\x06\a\x1e\t\x01\x02\f\x04\x13\x16\r\x01\v\x01\a\x02\x01\x02\x03\x01\x05\a\x06\x06\x15\n\x06 \x16\x03\x04\b\n\x01\x04\x16\x06\x04\a\x06\x03\v& \x13\x04\t\x03\x01\x02\x15\x01Z\f\x15\x01\x02\n\x06\b)\x02/\x02\x01\x03\x1b\n#\x06\a\n\x04\t\x1f\x0e\x01\x1b\x05\x01\x03\x02\x04\x03\x05\x02\x03\x06\x01\x04\t\f\x01\x01\x01\x01\x01\x02D\x02\v\a\x01\x01\x04\x05\t\x01\x04\a\a\x03\b\x01\x10\x0e\x1f\x0e\x04\v\x02\x01\x18'\x02\x05\x03\x01\x05\x11\x02\t\n\b\x02\x05\x12\x11\x01\v\t\x02\x05\x04\t\x05\t\x01\x05\x1b\b\x02\x02\x02\x03\x01\x16\b\x15\x06$(\x01\x0f\x04\x01\x05\x06\b\n\f\x02\x05\x0f\x01\x0e\x1e\t\x02\x04\x02\x06\x03\b\x0e\x01\x01\x02\n\x0f\x0e\x01\x00\x00\x04\xff\xee\xff\xb6\x02\x02\x01\xb8\x00\v\x00\"\x00>\x00[\x00\x00\x01\x1e\x01\x0e\x01.\x017>\x0132\x1367\"\x0e\x02\a\x0e\x04\x1e\x021\x16\x17\x16326'\x16\x176&'&\x06\a\x06\x17>\x0376\a\x06\a\x0e\x04\a\x06\x167\x1e\x01\a\x15\x0f\x0167>\x0432\x17\x1e\x01\x0e\x02\x0f\x010\x17676\x01zX/lȯ/6#q?Fp\b\x06\x02G3C\x12\v\x0f\t\x04\x01\x02\x02\x05\a\x11\v\t7a\xab3\xb3\t57K\xac/+\x0f\x05\x14&F-)\x03\x02\f\x02\x13\n\x11\x0f\x06\x11!\xe2\n\n\x01.\xaa\"\x1f\x05\x14\v\x0f\f\x05\x05\x05\x05\x04\x05\x05\v\x013\x06\t\x10?\x01\x936ȯ/l\xc8W8>\xfe\x98\f\x0e\x01\x02\b\x06\x04\n\b\v\a\f\x04\v\x12\x19\x016\x86\x01\x04>u\".)KEP\x14&/ \x03\x03\x10\t\a\x02\n\a\v\x0e\b\x14\x1b6\x03\b\x02\x03\x17\x02\v\x15\x03\r\a\t\x03\x02\x03\x06\x06\x03\x06\x01\"\x02\x01\t!\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00\x10\x006\x00\x00\x11!\x11!75#\x15\x14#\"'\a\x16326\x172654&/\x01.\x0154>\x0132\x177&#\"\x06\x14\x16\x1f\x01\x1e\x03\x15\x14\x06#\"'\a\x16\x01\xc0\xfe@\xf4*\x17\x0f\f\"\x12-\x1d\"c\x1f'\x1b\x1d\n\x0f\v\x05\t\x06\x11\n!\x13)\x1c\"\x1a\x19\n\t\t\n\x03\x10\r\x19\x10\"\x15\x01\xa0\xfe@c\x8f\x8f\x1a\x15\x14' \x1f\x1c\x19\x1c\r\x04\a\n\t\x05\b\x05\x12\x15\" 0\x1d\n\x05\x04\x04\a\b\x05\t\f\x1a\x14+\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1c\x00B\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x135#\x15\x14#\"'\a\x16326\x172654&/\x01.\x0154>\x0132\x177&#\"\x06\x14\x16\x1f\x01\x1e\x03\x15\x14\x06#\"'\a\x16\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\xc4*\x17\x0f\f\"\x12-\x1d\"c\x1f'\x1b\x1d\n\x0f\v\x05\t\x06\x11\n!\x13)\x1c\"\x1a\x19\n\t\t\n\x03\x10\r\x19\x10\"\x15\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xa3\x8f\x8f\x1a\x15\x14' \x1f\x1c\x19\x1c\r\x04\a\n\t\x05\b\x05\x12\x15\" 0\x1d\n\x05\x04\x04\a\b\x05\t\f\x1a\x14+\x00\x00\x00\a\x00\x00\xff\xc8\x02\x00\x01\xb8\x00\x18\x00.\x00D\x00\\\x00h\x00u\x00v\x00\x00?\x01\x16\x17\x167\x1e\x02\x17\x06'&'2\x06\a\x16\x06#\"&546%\x16\a\x06\a0\x1616\x17\x16\x14\x06\"'&7'676'%\x16\a\x17\x06\a\x06\a\x06\x17\a&767'\x06'&>\x01\x16%2\x16\x14\x06#\"'\a&'&\a'6\x17\x16\x177&54>\x01\a2\x17\x1e\x01\x0e\x01.\x017>\x01\a\x16\x17\a3'654&'\x0e\x017@<1N/'\x03\t\b\x011;C3\x01$\x03\a\x1d\x18\x15\x1b)\x01z\x1e\x02\x01/\x18\x0f\v\b\x12\x19\t\n\x03-?\x02\x01\x16\xfe\xdb\v\x03.\x0f\b'\x02\x01\x15\x16\x1d\x01\x02.\x1a\x0f\v\b\x01\x11\x19\x01r\x13\x1c\x1c\x13\v\x05?1N/'\x151;C3)\x02\r\x16\xc3\a\t;H\x0e^uH\a\aQ\x04\x01\x1f\vJ\v \"\x18\x18\":';B\x02\x01\x18\x03\t\t\x01 \x01\x02+#\x03\x17'\x1c\x14\x1a\x1c\xf417D5\x19\x02\v\t\x19\x11\t\v\x0f02J*(}\v\x0f1\v\n,;,&\x1618D5\x1b\x02\v\t\x18\x12\x01$\x1d'\x1c\x02\x01/\x0176&'&\x06\x0f\x01\x01\x90\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xdc\a\n\x0f\b\x13\x15\x05\n\x10\t\x12\x16<\n!\r\v\x01\b1(\b\x02\v\f&\f, \x1c\x14\x01`\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x01.\v\x11\v\x06\x1a\x13\x9b\t\x11\f\a\x17\x16*L\v\x01\f\v\x1e\n?:\n\x1d\n\r\x02\x12@\x00\x01\x00\x00\xff\xdf\x01\x82\x01\xa2\x00\x1f\x00\x00\x13\x157>\x01\x17\x1e\x01\x0f\x01\x17\x16\x06\a\x06&/\x01\x15\x14\x06#\"&5\x114>\x0132\x16\x93S\x16F\x16\x14\x04\x0eK[\x0f\x03\x13\x18>\x12p( $'\x11\"\x17 )\x01NGv \x04\x17\x135\x12ks\x126\x14\x17\x02\x15\x8aL**/%\x01\x1b\x17$\x16*\x00\x00\x00\t\x00\a\xff\xc0\x01\xf9\x01\xc1\x00S\x00W\x00]\x00r\x00x\x00}\x00\x83\x00\x87\x00\x8c\x00\x00\x01\x16\x1d\x01\x14\x0f\x01\x15\x14\x0f\x01\"\a01*\x01#0&1\"1'&5\x114745034625762\x1f\x01\x142\x16\x1503\x14\x161\x14\x1d\x01754506105350>\x011762\x1f\x010\x1701\x16\x143\x1410%\a\x177\x17\x0f\x01\x15?\x01\x155'1&10&10'1&<\x0215/\x01\x11?\x02'\x0f\x01\x055\x0f\x01\x1575/\x01\x15\x17?\x01'\a\x1775\x0f\x01\x01\xf8\x01\x04]\x04\xc0\x01\x01\x01\x02\x01\x01\x01\xc1\x04\x01\x01\x01\x01a\x01\x05\x02`\x01\x01\x01\x01P\x01\x01\x01\x01`\x02\x05\x01a\x01\x01\x01\xfexQQP\b\".!/\\\x01\x01\x01\x01/\"\xb9u;P\\T\x01\b-\x83\xb0.\"/)QQPXQ\"/\x01L\x01\x01n\x04\x035i\x05\x02o\x01\x01o\x02\x05\x01J\x01\x01\x01\x01\x01\x01\x017\x01\x017\x01\x01\x01\x01\x01\x01\x01\xce.i\x01\x01\x01\x01\x01\x01\x017\x02\x027\x01\x01\x01\x01b.//\x0e\x14\x1b\xc9\x14\x1a\xd3\\4\x01\x01\x01\x01\x01\x01\x01\xd7\x1b\x14\xfe\xc9\x04C\".511[\x1aK\\\xdd[\x1b\x13[\x1bV...\x97.[\x13\x1b\x00\x06\xff\xff\xff\xdf\x01\xc1\x01\xa1\x00\x19\x00%\x006\x00R\x00b\x00x\x00\x00%\x15\x14+\x01\"/\x01\x15\x14+\x01\"=\x014;\x012\x1f\x0154;\x012#2\x1d\x01\x14+\x01\"=\x0143\a2\x1d\x01\x14+\x01\"&=\x014;\x012\x1d\x0172\x1d\x01\x14+\x01\x1532\x1d\x01\x14+\x01\x1532\x1d\x01\x14+\x01\"=\x01437\x11\x14\x06#!\"&5\x11463!2\x16\a4&\"\x06\x15\x14\x16\x17\x1e\x01\a\x1c\x01\x1667>\x0276\x01\x10\x03\v\x02\x01!\x03\v\x04\x04\v\x02\x01 \x03\f\x03R\x03\x03\v\x03\x03\x10\x03\x04-\x01\x02\x03\v\x04\xc8\x03\x03\x1f\x1f\x03\x03\x1f\x1f\x03\x03.\x03\x03\xa20\"\xfe\xe3\"/0\"\x01\x1d\"/>_\x87`N;\r\x03\x04\x01\a\x06\n.9\x10\"\xf4G\x03\x01,*\x04\x04G\x03\x01,*\x03\x03G\x03\x03G\x03<\x03\v\x03\x01\x02G\x03\x039<\x03\f\x03\f\x03\f\x03\f\x03\v\x03\x03G\x03W\xfe\xe3\"/0\"\x01\x1d\"/0\x9c6NN61J\b\x03\x0f\x13\x03\x02\a\x02\x02\x04\x1c,\x12'\x00\x00\x03\x00\x00\x00\x06\x02\x00\x01u\x00\t\x00*\x00H\x00\x00\x113\x15\x14\x17\x0e\x01'&5%\x14\x163\x15\".\x01=\x014&\x06\x1d\x013\x15#\x15\x14\a\x06'54632\x16\x173\x15#%53\x15\x14\x06\a\x06'5\x167670\x0e\x04&'&=\x013\x15\x1425N\x1b\f,\x18\x19\x01\xe6\x0f\v\x1c/\x1c\x1a\x1a''\x19\x15\x1e<*%8\b\x1a\x18\xfe\xdaM*#&(\x18\x15 \x03\x02\x06\x06\v\v\x0e\b-M\x18\x01o\xd1+\x12\n\x03\x10\x14'\"\n\x0fM\x1c/\x1cM\x10\x0e\x0e\x10\x17M\a'\x14\x12\x04\xb3+<.#MM\x01\xb2(6\a\a\fF\n\x02\x03\x16\x01\x04\x03\x04\x01\x01\x02\f4\x84q\v\v\x00\x00\x00\x00\x02\x00\x02\xff\xbf\x01\xbe\x01\xc0\x00\t\x00\x13\x00\x00\x01\x11\a\x11'\a\x13'\x117\x13\x11\x17\x11\a'\x117\x11\x17\x01\xbe@\x9e\x9f\x01@\xde ?__? \x01@\xff\x00$\x00\xff\\\\\xff\x00%\x01\x00\x80\xfe\\\x00\xff$\xff\x0077\x01\x00$\xff\x00\x12\x00\x04\x00\x00\xff\xc0\x01@\x01\xc0\x002\x00:\x00B\x00t\x00\x007>\x043\x1e\x02\x17>\x0232\x1e\x03\x15\x1e\x01\x1f\x01\x16\x0e\x01\"\a\x0e\x02\a\".\x03'\a\x06'&/\x01*\x01.\x017\x17#\"4;\x012\x14\a#\"4;\x012\x147\x0e\x01&767>\x0354&\"\x06\x15\x14\x1e\x02\x17\x16\x17\x16\x06&'&'&'.\x0254>\x0132\x16\x15\x14\x0e\x01\a\x06\a\x06v\x01\x03\x02\x02\x04\x02\x03\x05\a\x03\x02\x03\x05\x04\x03\x06\x05\x04\x04\x05\x18\n\n\x01\a\x0f\n\t\x01\x04\x04\x02\x02\x02\x03\x04\x04\x03\t\x03\b\x03\x05\x03\a\n\x1a\n\x05\x8d\x88\x10\x10\x88\x10(X\x10\x10X\x10\x12\x01\x12\x0f\x02\a\b\b\x1e\x0f\rKhK\r\x0f\x1e\b\b\a\x02\x0f\x12\x01\a\x05\t\x0f\x10\x0f\x0f+J+B^\x0f\x0f\x10\x10\b\x05\xd2\x02\v\b\b\x04\x01\f\x12\x05\b. \r\x16\x13\x16\x01\x02\x03\x01\x01\x02\x04\x01\x01\x04\x11\x06\x01\x06\v\f\x0f\x06A\t\x13\x06\x0e\t\x02\x03\x03\xcd @ \x8e\v\x05\v\n,\x0e\x101\x1b(\x143HH3\x14(\x1b1\x10\x0f,\t\v\x05\n'\n\x11\x18\x1b\x1c/\x18*G*[@\x18/\x1c\x1b\x1a\x0f\n\x00\x01\x00\x0e\x00\x00\x01\xf2\x01\x80\x00$\x00\x00\x134/\x0153\x1773\x15\a\x06\x17\x11\x06\x1f\x01\x15#576=\x01\x03#\x03\x15\x06\x1f\x01\x15#576'H\a-\x8cm_\x86'\x05\x01\x01\x05&\xbe'\x04l\x0f\u007f\x01\b3\x903\t\x02\x012\t\a6\b\xee\xee\b%\x04\a\xfe\xf0\a\x04%\b\b&\x04\a\xdc\xfe\xec\x01\x14\xb9\f\t>\b\b>\t\f\x00\x00\x00\x00\x04\x00\x00\xff\xc8\x02+\x01\xb8\x00\x0e\x00\x1d\x00+\x00O\x00\x00\x12\x14\x16\x17\x06#\"&54632\x17\x06\x13>\x01'\x16\x17\x16\x0e\x01&'&'\x1e\x01\x036\x16\x17\x16\x06\a6&'.\x01\a7\x1732\x1d\x01\x14+\x01\"\x1d\x01\x14+\x01\"=\x014+\x01\"=\x014;\x012=\x014;\x012\x1d\x01\x14rnS\x1c\x1eg\x92\x92g\x1e\x1cS\xbb:&\x1d\x11\x0e.\x1b\x83\x9e/\r\b.\x88\xa17\x81&\"\x0e*\x0e\f\x1b b1\x02j(\b\b(\b\b0\b\b(\b\b(\b\b0\b\x01\x1b\xb6\x88\x0e\a\x91gg\x91\a\x0e\xfe\xb9)\x86;\x10\x13B\x9f^\x1cB\x13\x15/\t\x01\x1e)\f1-r+&U#* \r\x01n\b0\b\b(\b\b(\b\b0\b\b(\b\b(\b\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00\a\x00\v\x00\x0f\x00\x00\x113\x15#73\x15#\a3\x15#73\x15#\xd7\xd7\xe9\xd7\xd7\xe9\xd7\xd7\xe9\xd7\xd7\x01\xa0\xd7\xd7\xd7\x12\xd7\xd7\xd7\x00\x01\x00\x00\xff\xf1\x01\xc0\x01\x80\x00\x1c\x00\x00\x11!\x15\x14\x06&=\x014&\x06\a\x15\x14\x06\"&=\x014.\x01\x06\a\x15\x14\x06&5\x01\xc0,,*+\x03\x1e$\x1e\x19 \x1c\x03,,\x01\x80\xcc\x1b\x17\x16\x1c\x18\x1b\x17\x14\x1at\x15\x17\x17\x15\xaf\x14\x18\x02\x14\x13\xef\x1b\x16\x17\x1a\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x10\x00\x1b\x00$\x00\x00\x122\x16\x14\x06\"&4\x1754&\"\x06\x15\x116754&\"\x06\x1d\x01632\x17\x114&\"\x06\x1d\x01\x16\x91Α\x91Α\xa8\x17\"\x17!\xa7\x17\"\x17\x14\x14\x14\x8c\x17\"\x17/\x01\xb8\x91Α\x91\xce\xcf\xe0\x11\x17\x17\x11\xfe\xf0 \x1a\xd6\x11\x17\x17\x11\xd6\x03=\x01\x10\x11\x17\x17\x11\xe0\x10\x00\x00\x00\x00\x02\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\f\x00\x1b\x00\x00%3\x0e\x02#\"&'35\x177\x05#&5462\x16\x15\x14\a#5\a'\x01`l\x15AR,Bq!lhh\xfe\xf8K\r\x91Α\rK\xa1\x9f@$6\x1eA7\x80iiP')g\x91\x91g)'П\x9f\x00\a\xff\xff\xff\xc9\x01\xf1\x01\xa1\x00\x04\x00\x15\x00\x1f\x006\x00G\x00\\\x00h\x00\x00%\x06\a&'7&\"\a&'\x15\x14\x1e\x02>\x02=\x01\x06'\x16\x1762\x1767&\"\a\x16\x1762\x1767\x15\x16\x14\a\x15\x0e\x03.\x01'&47\x17>\x013\x1630\x14\x0e\x05\a\x06#'236\x1e\x03\x17\"'&'.\x064\x17\x16\x17\x06\"'6?\x01\x167\x16\x01*\x16\x1c\x1d\x15\x90*h+\x1f&$:FF:$'\xef\n\n,d,\n\n0\x84\x8a\x19\x19>\xb8>\x18\x1a,,\a>VcU?\x06,,\xd7\t#:\a\x04\x01\x01\x02\x04\x05\b\x05\n\x10\xc4\x04\a\x1a\x16\x1c\v\v\x04$\x1a\x0f\n\x05\b\x05\x04\x02\x01\x01\xa9\x02\x01\x164\x16\x01\x03\x06&&\x04J\x15\t\n\x14\xc8\x1e\x1e\x1a\n\xa1-F%\x11\x11$G-\xa1\n \x05\x06\x17\x17\x06\x06-\x17\x01\aEE\a\x01E\x1cg\x1c\x01:T&\x01&U;\x1cg\x1c\xbe(\x10\x01\a\x03\b\x06\a\a\x06\x03\x065\x01\x01\x05\f\x15\x11\x01\x01\x06\x03\x06\a\a\x06\b\x03\a{\x04\x05\r\r\x06\x04\x06\v\v\x02\x00\x02\x00\x00\xff\xc4\x01\xc0\x01\xc2\x00;\x00j\x00\x00\x16\"/\x01&7676\x1f\x01\x16?\x016=\x014/\x01&\x0f\x01\x06\x1d\x01\x14\x1f\x01\x166=\x014;\x012\x1d\x01\x14\x06#\"/\x01&=\x014?\x016\x1f\x01\x16\x1d\x01\x14\x0f\x017\x14\x06#\"54;\x012\x17\x1e\x013254.\x03'.\x0254632\x17\x14\x06+\x01\"'.\x01#\"\x15\x14\x16\x17\x1e\x01\xea\x14\t>\n\b\x0f\r\x02\x03/\x03\x03\xb9\x02\x03\xb8\x03\x03\xb8\x03\x032\x15\x18\x05\x17\x06\x1d\x1a\x13\x180\x13\x13\xb9\x13\x13\xb9\x14\x14\xb9\x820,b\x06\x17\x05\x01\x03\x19#7\x01\b\r\x19\x12\x1b\"\x14,(V\x06\x03\x03\x18\x04\x01\x04\x19\x1c0\x16).&<\x05%\x05\x03\x05\a\x02\x02\x1c\x02\x02j\x02\x04\xd5\x03\x02j\x02\x02j\x02\x03\xd5\x04\x01\x1e\b\r\x0e\xd2\x06\x06\xd2\x1b\x1f\f\x1c\v\x17\xd5\x16\vk\v\vk\v\x16\xd5\x17\vk\xcd\x1e!D\x05\x04\x14\x11\x1d\x05\x05\x06\x05\x04\x02\x03\n\x18\x14\x1c\x1f@\x03\x03\x04\x13\x0f\x1a\n\t\x06\x06\x18\x00\x00\x00\x05\x00\x00\x00@\x02@\x01 \x00\x03\x00\v\x00\x13\x00\x19\x00%\x00\x00%#53%\x15!\x15#5#5\x17#\x15353\x1537#\x153537#\x15353\x15353\x153\x01 \x01 \xfe\xe0\x80\xa0\xa0\x80@ \xa0\x80@@\xe0\xc0@ \xa0@@\xc0 \xc0 \x80``\x80\xa0 \x80\x80````\x00\x00\x00\x04\x00\x00\x007\x02\x83\x01G\x00\t\x00D\x00N\x00W\x00\x00\x133\a#'\a#73\x17%\x16\x06\a\x1e\x01\a\x0e\x01'.\x02'&5\x06\a\x06#7327676&+\x01\"&7676763\a#\"\a\x06\a\x06\x1e\x01;\x012\x17675&6\x17\x16\a6'\x06\a\x06\x16\x17\x1667676&'&\a\x06\xbb-093\x1f-117\x01\xe7\x03)\x1c\x0e\x03\x0e\x13O%\x0f\x17\x10\x03\x01\a\v\x16\x8b\v\u007f\v\x03\x03\x01\x01\x03\x05X\x18\r\x05\n\a\t\x16\v\x95\n\x85\v\x03\x01\x02\x01\x02\x06\x04X\x1d\x05!=\t=%&i\x04\v1\x14\x12\t\x17\x14%\x1a\x18\v\n\x03\f\x15\v\t\x01 \xa0jj\xa0rs\x13\x1a\x06\x176\x1c&'\t\x04\x10\x18\x0f\x05\x06\x04\x01\x02(\a\a\b\x03\x03\r\x10$\v\r\x02\x01 \a\x03\t\x02\x04\x01\x11$\f\x01\x1e#\a\x06\x82\x17\x19\x06\x15\x13*\x04\x03\x1ah\x04\x06\x06\x10\x02\x05\f\n\x00\x00\x0f\x00\x00\xff\xc8\x01\x90\x01\xb9\x007\x00F\x00N\x00V\x00^\x00f\x00n\x00v\x00~\x00\x86\x00\x8e\x00\x96\x00\x9e\x00\xa6\x00\xb0\x00\x00\x13:\x01\x1e\x06\a4>\x04\x16\x17\x14\x0e\x05'4>\x057\"&\x0e\x02\a.\x04'\x1e\x04\x17\x14.\x01\x01\x14\a\x06\"'&547632\x17\x16\x044&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x14\x162\x164&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x14\x162\x164&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x14\x162\x164&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x14\x1627&'&\"\a\x06\a62X\x02\x06\x12\x11\x17\x13\x14\f\x06\x02\x02\a\n\x11\x14\x1e\x11\x02\x06\t\x0e\x12\x18\x0f\x02\x05\x06\v\r\x13\n\x02\x05\x13\x12\x1a\f\x01\x03\x0f\x13#\x15\x03\v\x1a\x14\x11\x0154\x019 B\xccB (B^^B(\xfe\xe8\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18X\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18X\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18X\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18(\b\b>\xa4>\a\tO\xa2\x01\xb8\x01\x02\a\t\x11\x14\x1e\x12\x01\x05\x0f\v\f\x06\x03\a\x01\x05\x10\v\x10\a\x05\x05\x01\x04\f\n\r\t\a\x01\x01\x03\b\x17\x10\x04\r!\x1a\x16\x02\x01\x04\x10\x16(\x19\x03\b;\xfe\xfcO5005OBB11B\xb6\x18\x10\x10\x18\x10S\x17\x10\x10\x17\x11S\x17\x10\x10\x17\x11t\x18\x10\x10\x18\x10S\x17\x10\x10\x17\x11S\x17\x10\x10\x17\x11t\x18\x10\x10\x18\x10S\x17\x10\x10\x17\x11S\x17\x10\x10\x17\x11t\x18\x10\x10\x18\x10S\x17\x10\x10\x17\x11S\x17\x10\x10\x17\x11D'\x11 \x10(\x0f\x00\x00\n\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\t\x00\f\x00\x10\x00\x13\x00\x1a\x00#\x00/\x009\x00A\x00T\x00\x00\x17\"&4632\x17\x0135#7\x173\x06\a7\x15'\x172\x1d\x01#547\x14\a#\x11\x1e\x03'35#\x15#5#\x15#5#\x17#54#\"\x1d\x0135'\a\x15\x175'57'#\x15353\x16\x06#\"&7'\x0e\x01\x16326\xf8g\x91\x91g\x1f\x1e\xfe\xf5Ε\x95`o)F9\x15\x01\b\x10{\x17\x81!8)\x16\x88E\x0e\x0e\x0e\r\x0eD\x1a\x15\x15E\x01DD\x0e\x0e\x04$\x0e\v\a\v\x0f\x10\t\n\f\b\x02\x13\x12\x19\x118\x91Α\b\xfe\x88 \xd5\xf5?\x1e\xe7\x10\b.\v\n\b\r471\x01M\x0e/:HJ0!\x1e\x1e!\xe9\v\x19\x1a\x19\x0fg\x1e\f\x1e\x11\x06\x1a\x06V\x1b\f\f\x17\x1c\n\n\t\x1e\x19,\x00\x00\x00\x03\x00\b\xff\xe0\x028\x01\xa1\x00\n\x003\x00m\x00\x00%\x14\x06#\"'67>\x01\x16\a45467\x06\x17\x1e\x016765&5\x16654&\a.\x01\a\x06\a\x0e\x01\x15\x14\x1e\x013276'&#\"'4>\x02;\x02>\x053735467;\x012\x16\x1f\x01\x1532\x1732\x16\x1f\x01\x14\x06\a+\x01\a\x14\x06\x0f\x01!\".\x02=\x01'#\"&'\x01\x816\x1d\x0e\x02\x01\x03\x16) \xc3&\x14\x06\x05\x01\x0f\x0f\x05\x06\x03.^O8\x02\x13\t\t\x01,9\n\x11\n\x18\x06\x06\x11\x02\x02\x04\xbe\b\v\v\x04\x04\x1d\x04\x10\x16\x19\x17\x13\x06\x06\x1c\v\x05\x05V\b\v\x01\x01\x1cb\x15\x1f\x11\x13\x01\x01\x13\n\t\x1e\x17\x16\v\f\xfe\xe0\r\x12\t\x05\x17\x1e\x11\x13\x01\xfe&:\x06/I\b\x03\x13^\x01\x03\x12,\x0e\xbd5\x0f\x0f\x02\x06\x06\r(<\v[:4%\x11\v\a\a\a\x15\x17H\x1f\r\x13\f\x15\x13\x04\x01R\v\x0f\a\x04\x0f\x17\x0f\f\x05\x04\x01\x13\b\t\x01\t\x05\x04\x13K\x12\n\t\x11\x13\x01\xda\x13\x16\x02\x01\t\r\r\x05\x04\xda\x12\n\x00\x00\x00\x00\x02\x00\x00\xff\xca\x02\x00\x01\xb6\x00\n\x00\x0e\x00\x00%\x14\x06#\"&4632\x16\x01\x113\x11\x02\x00lLLllLLl\xfe\x00Z\xfdLll\x98mm\xfe\x81\x01\xec\xfe\x14\x00\x00\x00\x00\x03\x00\x12\xff\xc0\x01\xae\x01\xc0\x00\x12\x00\"\x005\x00\x00\x01\x16\x15\x14\a\x0e\x03#\"&'&54632\x032>\x0254&#\"\x06\x15\x14\x1e\x02\x13\x14\x06#\".\x0167\x14\x162654'6\x1e\x01\x01r/mKPn/?@\u007fB-$9\x1a\x05\x15\x1b%\x1a\x1b%B&\x01\x80?WSn\t\x19+\x1c?*mTX~\xfe\x129Qf(PttP(fQ9\x01\x1f,A$5A\x1b\x12\x1b\x1b\x12\x1d\f\t\x1b;\x00\x00\x00\x04\xff\xff\xff\xff\x01\xf1\x01\x81\x00!\x00,\x00A\x00I\x00\x00%\x17\a#\a\x15\a'#\a/\x02\x06/\x0175'73757\x1737\x1f\x022\x15\x17\x0f\x014&\x0e\x01\x1e\x013>\x027\x16\x14\a\x06\a\x06\"'\x15&'&476762\x175\x04\x1e\x0164&\"\x06\x01C\x15\b\x1e\t\x14\x16\r\x14\x14\x02\t\x1d\x01\t\x15\x15\b\x1e\t\x14\x15\x0e\x14\x14\x02\t\x1d\n\x15-\x14\x1a\x11\x01\x13\r\t\x0e\a\xc9\x11\x11^\x018\x9e8)8\x11\x11? 8\x9e8\xfe\xe2Y~ZZ~Y\xba\x15\x14\t \b\x18\x18\b!\t\x01\x02\x14\x15\r\x15\x14\t\x1d\b\x15\x15\t\x1d\t\x01\x14\x15\x04\f\x12\x01\x13\x1a\x11\x01\t\x0e.\x100\x10_\x0187\x01*8\x100\x10?!87\x01\xc9Y\x01Z~YY\x00\x00\x00\t\x00\x00\xff\xe5\x02\x80\x01\x9d\x00F\x00M\x00l\x00\x85\x00\x9d\x00\xb8\x00\xd1\x00\xeb\x00\xff\x00\x007\x06&'.\x01'&'&\a\"#67>\x01\x17\x1e\x04\x17\x1e\x013021\x0e\x01\a\x06'.\x01'&\x0e\x01\x16\x17\x1e\x0170703\x0e\x01'.\x02'&\x06\a\x06\x17\x1e\x061\x06\x03\x1667\x06\a\x16\x13\x06&'&'5\x16\x17\x167>\x01\x1e\x01\x17\x06\a\x06\x17\x1e\x01\x17\x16\x1701&'&\x0676\x17\x16\x17\x16\x15\"\x1545.\x01\a\x06\"&'&74\x17\x16\x17\x16\x17\"\x0e\x02\a\x06'50>\x01767>\x02\x17\x16\x170\x15&'01&\"\a\x0e\x05\a\x06'&1\x1667>\x0476'0'2\x17\x1e\x03\x17\x167:\x016323\x061\x06\a\x06'&\x05\x0e\x01'.\x02'&'616\x17\x1e\x05\x17\x1e\x030\a\x16\x15&'&'61\x16\x17\x1e\x06\x15\x16\xd5\"Q\r\x05\x01\x02\n.\t\t\x02\x01\x01\x01\x1bK\"#8)'4\x1e\x04\r\x02\x02\x02\x19\t\x1d\x17\x03\x1b\t\f\x16\x03\x1c\x19\x1dR\x18\x01\x01\x12?\x1b\x16(&\x0e\x0e$\x02\x01\a\x05\r\f\r\v\b\x06\x05\x9e\n\x19\x01\x14\x11\x01\xc5\x1fD\x18\x0e\x05\"\x15%#\b\x10\v\a\x01\x14\x04\n\x11\bF\x13\a\x03\x1b\r\x0e3\xa2*\x19\x16\n\x05\x01\x05%\x1a\x1b=C\x16\x02\x01\x03\x1a\"'\x90\v\x13\x10\"\x18\x1a\x13\n\r\a\a\x10\r\x11!\x13\x13\x11\t\x1a\x14\"\x0e\x01\x0e\x04\r\t\x0e\a(\x1a\x01\x11\x19\r\x04\x12\t\x10\x10\b)\xee\x03!\x15\a\x0e\t\x0f\x05\x0f\x15\x02\x05\x05\x01\x01\x01\x02\f\x0e$%\x1c\x01\\\x04\x16\x11\x05\n\f\x04\n\x12\x01\x17\x18\x03\x06\x04\x05\x04\x06\x02\x04\t\x05\x06\xd4\x01\x1d\x12\x13\x1d\x01\x18\x0f\x05\t\b\x05\x06\x03\x05\x05h\x0174\x144\x0eD\t\x01\x01\x01\x01\x14\x12\x03\x03\"//%\x05\x01\x01\x02\v\x01\x06\x10\x02\x17\x02\x04\t\x1d,\x10\x11\b\n\x01\x16\x1b\x03\x03&0\t\t\n\x12\f\x0f\n\x10\n\a\x04\x02\x01\x02\x01\x17\n\x05\f\x01\x04\x01\xfe\xa1\x01#\x1b\x0f\b\x01\x15\x06\v\x0e\x03\x02\x03\x03\x02\x04\x04\t\b\x04\x05\x10\x06\x05\b\x01\x01\a\xfc\r\n\t\x1a\r\x0f\x01\x01\x01\x13\x14\t\t\x1d\x1c\x02\x01\x01\x02\x14\a\ai\x10\x15\x16\x05\x06\x01\x01\x03\a\a\x06\x10\x0e\x0e\r\x02\x01\v\x01\x03\x18\x04\b\x01\b\x03\x06\x02\x04\x01\x05\r\x01\x03\x02\a\x02\v\x05\b\x04\x01\x06\x89\x02\b\x03\t\a\v\x03\n\x02\x01\x01\x06\x01\x04\x13\x0f\xd7\x03\x05\x03\x02\a\f\x03\a\x02\x01\x0e\b\x01\x03\x03\x05\x04\x06\x02\x03\x05\x01\x01\x8a\x01\x01\x03\x14\x16\a\x01\x01\x03\x02\x04\x05\x05\b\x03\b\x01\x06\x00\x00\x00\x03\xff\xf9\xff\xe3\x02@\x01\xa0\x00\x17\x00(\x00;\x00\x00%\x0e\x03\x0f\x0257>\x01'&\x0f\x015676\x17\x1e\x01\x14'54'&\x06\x15\x11'\x11\x16\x17\x1e\x01\x15\x14\x06\x05.\x017>\x01?\x02\x15\a\x0e\x01\x17\x16?\x01\x15\x06\x02;\x03\v\n\t\x03\x03͗\r\x03\n\x19\x1fe%'E=\x15\x16\xe6\x12\b\v^6L;/=\xfe\xa5 \x11\x11\b\x1a\t\t\x86a\r\x03\n\x1a\x1f.PL\x04\b\x06\x04\x01\x02I66\x04\f\x03\t\f#8\r\x04\b\x17\a\x12\x11U\x8b\x1f\x05\x03\x0e\r\xfe\xa5\x1d\x01\x9f\n\x19\x15<97*l\t#\v\x06\f\x03\x04/6#\x04\f\x03\t\f\x111\x0f\x00\x00\x00\x05\xff\xfd\xff\xde\x01\xb5\x01\xa3\x00\x11\x00\x17\x00\x1d\x00(\x00-\x00\x00\x01\x1e\x01\x0f\x02\x06&'\x03&67%6\x16\x0f\x01'\a\x1776&\x05\x177'&\x06\x13>\x047'\x13\x1e\x01\x016/\x01\a\x01\x97\x11\f\f\xeb#\b#\x05i\x03\r\v\x01\x10\x0e\x16\b\x0e\n\xbd\xb1\x11\x02\x04\xfe\xea\x9ea\xf9\x04\x05t\x01\x04\v\b\t\x02\u007fS\x01\x06\x01\x13\x06\tjZ\x01P\x01\x1f\r\xe7Q\r\x04\x10\x01\\\x0e\x15\x02-\x02\x17\x11!1\x1f\x10(\x04\x047\xf4\xe6\x17\x01\x06\xfe\xa0\x02\t\x18\x13\x15\x04\xc5\xfe\xed\x03\x01\x01=\x06\x03\t\xd5\x00\x00\x00\x00\x04\xff\xfa\xff\xd8\x01\xc8\x01\xa5\x00\x1a\x00%\x00G\x00V\x00\x00%\x16\a\x0e\x01+\x01\x153\x15\x14\a\x06'&=\x0146;\x0126=\x0132\x02\"\x06\x14\x1632>\x0154'\"\x0e\x01\x1d\x01#\"&'&7>\x01;\x015#54>\x0376\x17\x1e\x01\x1d\x01\x14\x06#'2>\x014.\x01#\"\x06\x15\x14\x1e\x02\x01\xb8\x0f\x0f\t\x17\x16\xa0k5656 \x16k\x1a(((\x83\x11\f\f\b\x06\t\x05\x8a\x12\x1f\x12%\x16\x1c\x06\x0e\x0e\x06$\x18\x93k\x03\a\v\x13\x0e38\x16\x1f\x1f\x16r\x06\t\x05\x05\t\x06\b\f\x03\x06\a\xf8?.\x1c\x1a\x0e)&\x10\x0f\x0f\x10&f\x16 )\x1b0\xfe\xfe\f\x11\f\x06\t\x06\b\xa8\x12\x1f\x111\x1d\x1967\x19\x1d\r)\n\x0e\r\t\a\x03\t\t\x04\x1f\x15f\x16 \x8e\x06\t\v\n\x05\f\b\x04\b\x05\x04\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00/\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x17&6\x173265#\"\x06\x1d\x01265\x17265#\"\x06\x1d\x0126=\x01&6\x17\x01a'88'\xfe\xfe'88'2\x01\x10\t8\x14\x1d\x9a\n\x0e\x14\x1d\xb0\x14\x1d\x9a\n\x0e\x14\x1d\x01\x10\t\x01\xa08'\xfe\xfe'88'\x01\x02'8\xa9\t\x10\x01\x1d\x14\x0e\n\x9a\x1d\x14\x10\x1d\x14\x0e\n\x9a\x1d\x148\t\x10\x01\x00\x00\x00\x02\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00U\x00\x00\x122\x16\x14\x06\"&4\x056#\"#\"\a\x06\a\x063232\a\x06#*\x01#\"\a\x06\a\x0e\x01&7676#*\x01#\"\a\x06\a\x06&767676&#*\x01#\"\a\x06\a\x06\a\x06\x17\x1e\x01\x17\x1632327656323276\x91Α\x91Α\x01\xa3\x04\t|\a\x06\x03\x03\x0e\x04\t<\x10\t\x03\x02\b\r5\r\b\x03\x1e\x02\x01\b\x04\x02\x01\x18\x04\n\x03'\x03\x05\x02\x1d\x01\x03\v\x03\b\t\x1c\r\x02\x04\x05\x04#\x04\x06\x02\b\x1f\x13\a\x02\x03\x02\x19\a\x03\x05.[\x06\x02\x1f\x03\b\x04A\t\x04\x11\x01\xb8\x91Α\x91\xce\x0e\t\x06\b\x1f\t\b\x05\aF\x03\x03\x02\x05\x06\x035\t\x04B\x02\x05\x04\a\x12\x15?\x1d\x04\a\x06\x12F+\x10\x05\x04\x03\x1b\a\x04\x05E\x02\a\b&\x00\x06\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00!\x00@\x00G\x00Q\x00[\x00\x00\x05#\"&=\x0146;\x012\x16\x1d\x01\x14\x06'&#\"\a\x06\a#'#\x1535>\x0132\x1f\x01\x06\a\x06#\"&'365654'&'&'&#\"\x06\x15\x14\x1632767&\x16\a#>\x013\x1e\x013264&#\"\x06\x14\x163264&#\"\x06\x01@\xc05KK5\xc05KK\xb4\t\a\v\b\b\x05\x01\x04\x1c$\x02\r\n\a\tx\x05\t\t\f\x12\x10\x01S\x02\x01\x05\x05\a\b\n\n\n #\x1f\"\x10\x0e\x0f\b(\v\x013\x01\x0e\x0e\\\f\n\n\r\r\n\n\f\f\n\n\r\r\n\n\f K5\xc05KK5\xc05K\xcf\x03\x06\x05\v\x13\x8bZ\b\n\x03F\x03\x04\x03\x12\x11\a\a\x06\x06\x10\v\v\a\x06\x03\x03%%\"'\x05\x04\af\x10\x0f\x0e\x11\x05\f\f\x14\v\vx\f\f\x13\v\v\x00\x03\x00\x00\xff\xc8\x01\xf1\x01\xb8\x00\t\x00%\x00(\x00\x00%\a'76\x16\x1f\x01\x16\x06\x032\x1e\x01\x15\x14\x06#\"/\x01\x057/\x017676/\x01&'&\x0f\x01>\x01\x03&5\x01\x19\xc6\x1c\xbc(\x1a\x05\v\x05\x10BDrB\x92fE:\x17\x01\x1f0\n\xdc]$\x19#\f\n\x0e0\"-\xde\x14\x86{&\xaa9b6\v\a\x11'\x10\x12\x01\x05BsCf\x92#P%\r\"\x1b\x1b\n\x17!)%0\b\x04\r@Sk\xfe\x83>F\x00\x00\x05\x00\x00\xff\xc0\x02A\x01\xc0\x00#\x00:\x00E\x00P\x00[\x00\x00\x01\x1e\x01\x14\x06\a\x0e\x01'\x0e\x01.\x01'>\x04'.\x02676&/\x01>\x02\x16\x176\x16\x03264&\"\x06\x15\x14\x17\x16\a0\x06\a676?\x01\x1632'\"&'46\x16\x1d\x01\x14\x06746\x16\x1d\x01\x16\x0e\x01.\x01\x17\"&'46\x16\x1d\x01\x14\x06\x01\xe6,..,7\x94=!L>(\v\x03\n\x18\x11\v\x04\x12\x1a\v\x18\x1f\x05\x1e\x12\x12\v(?K!>\x93\x89_\x87\x87\xbe\x864\r\x1d\x02\x01\x1b\x19\x14\x10\x14+,\x01n\x0e\x14\x01\"#\x14F\x1f\x19:\x11\x11\a\n\x06\x1d\x1f\r\x18\xfe\xb3WzWW=5),7\x04\x01\x02\r\v\x10\x13\vq\x13\x0e\x16\x12\x11\x15\x01\x0e\x14!\x16\x12\x11\x15\x01\r\x12\x04\x04\x12\x15\x13\x0e\x16\x12\x11\x15\x01\x0e\x14\x00\x00\x00\x00\x02\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x1b\x00\x00\x122\x16\x14\x06\"&4\x01'61\x166/\x01&\"\x0f\x0137\x17#\"\x06\x1f\x01\x91Α\x91Α\x01\x95eJ\x16\x14\x0e\x9e\n\"\n\x94ZUTK\x16\x12\rp\x01\xb8\x91Α\x91\xce\xfe\xedw\x01\x01(\x11\xb9\r\r\xadcc)\x0f\x84\x00\x00\x00\x00\x10\x00\x00\xff\xec\x01\xc0\x01x\x00\x03\x00\a\x00\v\x00\x0f\x00\x13\x00\x17\x00\x1b\x00\x1f\x00#\x00'\x00+\x00/\x003\x007\x00;\x00?\x00\x00\x01'7\x17\x057\x17\a'7\x17\x0f\x01'7\x17'7\x17\x0f\x01'7\x17\a7\x17\x0f\x017\x15\a\x17\a'?\x01\a'7\x17\a'?\x01\x17\a'\x17/\x017'7\x17\a\x177\x17\a?\x01\x17\a\x01^6JN\xff\x00.\"7Z \x11%#\t\x1d\x0e8\x18\t\x1b\x1d\x04\x17\x068\x15\x03\x16\x1d\x14\x15<\x1c\x01\x19+\x1f\x05\x1b!)\b#+\x15.\x0e|G\x187-+\x1c3\x16=5P\x11CBY\x01\".',\x05\x1c\"\x1e\x1d\x16\x1c\x17;#\x12#B\x12\x18\x121\x1c\x0f\x1c \r\"\f\f\n&\t\x16\t/\v\x0f\r)\x0e\x9c\x06@\nH9\x0e6\xd6\x04`\b\xac\x16-\x162\x13W\v\xa5\x1dB\x1a\x00\x00\x00\x04\x00\x00\xff\xd0\x01\xd0\x01\xa0\x00\x05\x00\x14\x00@\x00D\x00\x00\x13\a5\a7\x15'\x0f\x01\x0e\x01\x15\x14\x16\x17\x15.\x01546\x00\x06'0'.\x05'&/\x01\x06\a?\x01>\x0154&'5\x1e\x03\x15\x14\a\x17\x16\x17\x1e\x04\x17\x161\x064\"\x14\xddD66\x10\x01\x0f\x1f&/$:MO\x01\x81\x1e\x0e<\b\f\b\x06\x03\x05\x01\x11)\t&,\x02\x10$-5+\x1f7(\x17\x1d\x0f\x0e&\x03\x11\x05\r\f\a,\x14\x10\x01>҃\x19\xbfs|\x045\f7\"';\a6\b[<\x044\x02\x1b*9 0*\n(\x11\x01\a\x04\b\r\n<\x13\x10\x10\x00\x00\x00\x02\x00\x00\x00\x00\x01\xf0\x01\x80\x00\b\x00\x15\x00\x007\x1e\x02\x17!>\x02'\x1e\x03\x17#.\x03'6X-~w\x0e\xfex2M\x06\r)ps^\x0e`\t5EE\"\x02\xe8\x069m<\x04Me\xca\x06>`\x90L-T?-\rQ\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\r\x00\x15\x00\x00\x05\a'\x06#\"&462\x16\x15\x14\a\x06264&\"\x06\x14\x01\xc0\x1e\x92.\x02?\x01'\x06'\"&'&>\x01?\x01'&>\x0276\x16\x1f\x017'&676\x1e\x02\x1f\x0176\x1e\x01\x06\x0f\x01\x1776\x1e\x01\a7'\a\x01\xbe\x05\x0e\x0e-\x10\x04\r\x0e\x10\x1a\x04\x10^\x10\x03\x04\r\t\x0f\x1a\x05\x104\x05\v\x13\x04\x02\x01\x06\v\a-\x1e5\x05\v\x13\x03\x03\x04\f\n-\x10\x02\x01\x06\v\a\x0f\x1b\x04\x10]\x0f\x05\x0e\x0e\a\x0e\r\n\x02\x10-\x0e\x1b\t\r\x0e.\x1f-\n\x12\x0f\xfb^\x1f]\xb2\x0f\x1b\x04\x0f/\x0f\x1a\x05\x05\x0f\r/ .\n\x13\x0e\x03\x05\x0e\r0\x12\x01\x0e\n\a\x0f\f\n\x02\x0fZ\x11\x01\r\v\n\x12\x0f\x03\x0f/\a\x0f\f\n\x02\x05\x0e\x0e/\x1f/\x0f\x1a\x05\x03\x02\x06\v\a/\x0f\x05\r\x1d\x1b\x05\x0fZ\x0f\x03\x03\r9 Z\x1f\x00\x00\x00\x02\x00\x04\xff\xdc\x01\xbd\x01\xa5\x00\x10\x007\x00\x007&>\x01\x1e\x01\x06\a\x06\x17\x16\x17\x14\a\x0e\x01&\x137&'&\x06\a\x06\x17\x1e\x02\a\x14\x0e\x01'\"'\a\x163\x16>\x0356'.\x0254>\x0132@<\n\x85\xb2w\tC\n!\x16\x01\x04,z\x89\xaa'\x1d/)7\x01\x01\x1e\r/\x1b\x01\x0f\x10\a\x1f\x11(\"2\x06\x10 \x18\x13\x01\x1d\r/\x19\x12\x0e\x06\x1a8B\xb3w\t\x84\xb2<\t\x14\x0e\x05\x03\x01\x13\x05+\x01\x04)\x1a\x01\x01+&$\x13\a\x0f\x10\x0e\n\f\x04\x01\x18*!\x01\x01\t\x0f\"\x17&\x12\b\x0e\x0e\x0e\n\r\x02\x00\x02\xff\xfb\xff\xbe\x01\xbc\x01\xc4\x00\x1f\x00=\x00\x00%\x17\x16\x0f\x01\x0e\x01/\x02&?\x016\x1f\x01\x16?\x016/\x01&\x06/\x01&?\x016\x1f\x017\x16\x0f\x01\x06/\x01&\x0f\x01\x06\x1f\x01\x166\x1f\x01\x16\x0f\x02\x06/\x02&?\x016\x17\x01\u007f,\a\b\xc6\x04\t\x02\x02\xd1\x06\b-\b\x06\x98\a\a]\b\aT\x06\x0f\aD\x06\a:\a\x06\xaa4\a\b-\b\x06\xa1\x06\b\\\a\x06_\x06\x10\x069\a\b\a2\b\a\xab+\x06\b\xce\t\b\x9c*\x06\x06\xa4\x03\x01\x02\x01\xc4\a\x06\"\x06\x06\x94\x06\x06J\x06\x06R\x06\f\x06A\x06\x06,\x05\x06\xa7V\x06\x06$\x06\x06\x9f\a\x06H\x06\x06\\\x06\f\x067\x06\x06\x06'\x06\x06\xa5*\x06\x06\xa2\a\x05\x00\x04\x00\x00\xff\xff\x01\xc0\x01\x80\x00\a\x00 \x002\x00>\x00\x00\x00\x14\x06\"&462\x17\x14\x06#\a\x0e\x01#\".\x02/\x015\x176\x177>\x0132\x1e\x01\x064&#\"\a\x17\x1e\x01\x0e\x01'.\x01'\x163264&#\"\x0e\x01\x15\x14\x1632\x01\x8c$3##3XC/m\x031!\x0e\x1c\x16\x0f\x03:a\x17\x1dG\x01B/\x1f5\x1e\xf5$\x1b\x06\a\x1a\x13\x10\x0f&\x13\x04\x15\x06\x12%\x1b\xf3, \x14$\x14-\x1f \x01(3##3$>/CO!,\n\x12\x19\x0e\x17k'\x0e\x02e/B\x1e5\xf24%\x02\n\b&&\x10\b\x01\t\x02\"\xd9?,\x14#\x15\x1f-\x00\x00\x02\xff\xff\xff\xbf\x02A\x01\xc0\x00\x00\x00\xd4\x00\x00%'\x1e\x04\x14\x15\x14\a\x06\a\"\a\x06'<\x01.\x01'.\x02'.\x01\x0e\x02\a\x0e\x02\a\x06\a\x0e\x02\x15\x0e\x01\a\x0e\x01\x15\x0e\x01\x17\x1e\x01\x170\x1e\x01\x15\x14\x0e\x011\x0e\x02\a\x06\"'&76&*\x01'&'&'&656&7>\x014645&>\x01'\"\x0e\x01'.\x02'&\x06\a\x0e\x02\a\x06\x170\x1e\x01\x17\x1e\x02\x17\x16\x17\x16\a\x06#\"\x06\a\x0e\x01'&'46'.\x02'&54'&7>\x035&\"5.\x016'.\x02767>\x01\x16\x17\x1e\x0167>\x017>\x027>\x012\x163>\x0132\x16\x06\x17\x16307>\x023\x16\x0e\x01\x150\x17\x16\x17\x1e\x03\x022\x06\x04\b\x04\x03\x01\a\x04\x03\x01\r\v\x04\x01\x05\x05\x05\v\r\x03\x03\x04\x04\x02\x04\x01\b\x12\x13\a\x19\t\x02\x04\x04\x03\b\x06\x01\a\x03\x02\x04\x01\t\x02\x04\x05\x05\x06\x03\x02\x01\x01\x04\x1d\x03\x05\x03\x02\x02\x02\x06\x02\x03\x01\x01\x01\x01\t\x03\x02\x01\x01\x02\x01\x01\x02\x01\x01\x04+%\x1d\x14\x1d\x0f\x01\b\x10\x03\x01\x11\x14\x02\a\v\x03\x05\x02\x01\x03\x03\x01\x03\x06\x05\x06\x05\n\x01\x01\x01\x02\x14\a\x06\x01\x01\x02\x01\b\x06\x02\x02\t\x02\x02\x01\x01\x01\x02\x01\x04\x05\x03\x01\x01\x01\x05\x02\x01\x05\x13\x13\x19>5\x06\x1c9\x14\t\x18\x02\x02\x1e,\f\x10\x1d\x10\r\x01\x02\r\x02\x02\x01\x01\x01\x01\x05\v\x03\b\a\x02\x05\t\x0f\x05\x03\x03\x03\x03\x02\x03\xf8N\f\x12\t\a\x03\x02\x02\x04\r\a\x01\x02\x02\v\x02\x05\x04\b\x04\x05\x05\x05\x02\x02\x01\x02\x02\x05\x02\t\x1a\x19\t \x10\x03\x0e\f\x01\t'\x14\x06\x18\x02\b*\n\x02\x04\x02\t\n\x01\x03\x02\x01\x02\x03\x02\x01\x02\x03\x03\f\x05\x05\x01\x02\b\x02\x02\x06$\x01\x0e\x1e\x03\x04\x05\x01\x05\a\b\v\x14\x05\x03\x05\x01\x04\x04\x0e\f\x01\x03\x05\x05\x01$+\b\x16-\a\n\x02\x01\x01\x02\x01\x03\r\b\x02\x03\x04\x01\x02\x03\x03\x02\x03\x01\n\x01\x01\x02\x05\x04\x06,\x11\x1d\t\a\x01\x02\x02\x06\x02\x01\x01$*\b\f\x05\x1d\x11\x0e\x16\x10\x10\v\x02\r\x02\x06\x04\r\x06\b\x02\x01\x19!\x06\n\n\x02\x01\x19\v\v\x04\x05\x05\x02\t\x06\x03\x11\x19\x02\t\x06\x0e\v\t\x02\b\x00\x00\x00\x01\x00\x12\xff\xc0\x01\xee\x01\xc0\x002\x00\x00\x01\x17\x15\x0f\x0663\x177\x0f\x03?\x01\x17?\x02\a7'7'\x17'\x17'\x17'\x17/\x01\x17'\x177'?\x01\x1f\x01\a\x17\x0f\x01\x01\xe0\x04\x19'8P\x11\b\n\x12\x02\x14C]8\x16\a\x15\a\x14Y9\x0e}\x0f\xadR\xa6sf\xfd\x1f|\x8f\x121.\xc3+l\f\x15\x04&\x1d\f\a\b\r\n\x01\x04\x1c\x1c,ND&\x18\f\x04@\x01'\x1b$\x1c\x02J\x05\r.3D\x17\x126\n{\x12l\u007f&Jc&\x12Tz8a\t\x11%\v\x19\x04\x06\f\b\x14\x00\x00\f\xff\xff\x00E\x02\x80\x01a\x00\x0f\x00\x1e\x00@\x00N\x00Z\x00a\x00m\x00t\x00\x8a\x00\xa8\x00\xb0\x00\xbd\x00\x00%\x14\x0e\x01#\"'232654'\x1e\x01%\x14\x17.\x0154632\x17&#\x0e\x01\x177\x163254.\x0154632\x16\x1d\x01#54#\"\x15\x14\x1e\x02\x15\x14\x06#\"&'73\x15\x14\x06\"&=\x013\x15\x1425\x175#532\x16\x14\x06+\x01\x1553254+\x01\x175#532\x16\x14\x06+\x01\x1553254+\x01\x1754+\x01532\x1d\x01\x14;\x012=\x013\x15\x14+\x01\"75#532\x1d\x01#54+\x01\x153\x15#\x15\x14;\x012=\x013\x15\x14+\x01\"7#53\x15#\x15#73\x1773\x15#5\a#'\x15#\x02\x80ApC#$\f\fe\x8e3.5\xfd\xb03.5\x8ee%\"\r\ne\x8e<\t\t\v\r\x14\x14\x10\f\t\x10\x0e\v\r\r\x0f\r\x10\r\b\x0f\x03v\x0f\x12\x1e\x13\x10$\"\b'\f\x10\x10\f\x0f\r\x0e\x0e\r9\b'\f\x0f\x0f\f\x0f\f\x0e\x0e\f9\x03\x05\x0f\t\x02\x13\x02\x0f\t%\b?\b4\b\x0e\x03\x13\x1c\x1c\x03\x13\x03\x0e\b'\b;\x03\a\x02\x02\x06\x02\x02\x02\x03\x02\x02\x02\x02\x01\xba 6\x1f\x05J5+#\x101\x06,\"\x101\x1c0E\x05\x01\x01J]\v\n\n\x06\t\x0e\v\n\x0e\b\t\b\x04\a\t\x05\a\x06\f\n\v\x0e\a\x03M7\x0e\x12\x12\x0e77\x11\x11\x1fH\x0e\x10\x18\x10\x1e+\x0f\x0eHH\x0e\x10\x18\x10\x1e+\x0f\x0e?=\x02\x0e\b>\x02\x02\x06\r\t\t?\x0e\b\r\x05\x02\x16\r\x15\x02\x02\x06\r\tU\x01\x01\x06\a\x05\x05\a\x05\x05\x05\x05\x00\x01\xff\xff\xff\xfc\x01\xc3\x01\x84\x00\x15\x00\x00\x01\x03\x06/\x01\a\x06#?\x016'&\x0f\x01'&67%6\x16\x01\xbfD\b\x1dg2\n\v\b\xbf\a\a\x06\a\xecf\x11\x02\x14\x01\x8d\x0f\x12\x01]\xfe\xc2\"\x10L0\ni\xac\a\x01\x02\x05\x95 \x05\x14\a\x9a\x05\x11\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00(\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x12>\x01'.\x01\"\x06\a354;\x012\x1d\x01\x14+\x01\"=\x01#\x16\x01\x9e\x0e\x14\x14\x0e\xfe\x84\x0e\x14\x14\x0e\x94pG\x06\x05NhN\x05^\aD\a\aD\a^\x06\x01\xa0\x14\x0e\xfe\x84\x0e\x14\x14\x0e\x01|\x0e\x14\xfe\x93\fW84FF4\x14\a\aD\a\a\x148\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xbc\x01\xc0\x00\v\x00\x0f\x00\x00\x01\x11\a'5\x17\x15\x1775'7'\a'7\x01\xbc\xe2\xdaX\x85\x88eW\"XVY\x01@\xff\x00\x80\x80\xd6-uKK\x97:5\x155/7\x00\x00\x17\x00\x00\xff\xe0\x01\x80\x01\xa0\x00\x03\x00\v\x00\x11\x00\x17\x00\x1b\x00\x1f\x00#\x00'\x00+\x00/\x003\x009\x00=\x00A\x00E\x00I\x00O\x00S\x00W\x00]\x00c\x00k\x00o\x00\x00\x16\"'3'\x14\x15#4=\x013\x17\x16\x17#&'7\x16\x17#&'7\x15#57\x15#57\x15#5\x17\x15#5\x17\x15#57\x15#5\x17\x15#5\x05673\x06\a'53\x15\a53\x15'53\x15'3\x15#\x03&'!\x06\a\x0353\x15\a53\x15\x05&'!\x06\a'673\x06\a'53\x15\x14\x15#4=\x013\x15\xfbv0\xd6\xc4gg\x14\x0e\x13\x8a\x06\x04b\x03\x06n\x02\x02fggggggggggggg\x01\r\x06\x03i\x01\x03bgggggggg\xcb\x14\r\x01%\x0e\x12\x19ggg\xfe\xa7\x04\f\x01S\b\nt\x13\rt\a\x02Vggg \xa1\x04\x03\x02\x05\rF\x10\t\f\r#\f\v\v\fE\x11\x11\xad\x05\x05#\x02\x02E\b\bh\x0f\x0fE\n\n#\f\f\xa1\v\f\f\v\xba\n\n%\f\fJ\b\bM\x02\xfeg\x0f\x0f\x10\x0e\x01s\x05\x05\x94\x0f\x0f\xba\x05\x17\x0f\r%\t\x10\x14\x05R\r\r\x02\x05\x03\"\x11\x11\x00\x00\x03\x00\a\xff\xbd\x02y\x01\xc1\x00-\x00I\x00n\x00\x00\x01\x0e\x05\x0f\x01\x06\x0f\x01\x06'.\x01'&?\x016?\x01>\x0476367'432\x17\x16\x17\x16\x0f\x01\x06\x17\x14'&567632\a\x14\x172\x17\x16\x17\x16\a\x06\a\x06'&'&#&56\x01\x16\a\x0e\x02\a\x06/\x01&'&74>\x0476\x17\x1e\x05\x17\x1e\x05\x17\x01\x91\x12\x1f\x11\r\x05\x03\x01\x05\x03\v\x94\r\x15\x1e4\r\t\f\x95\v\x10\x1d\x06\x06\x10\x155\"\x02\x02\x05\x01\x01\x04\v\x0e\x0f\x03\x01\x03\x05\x03\x01\xb2\a\x04\x0e\x0e\f\x03\x01\a\x02\x01\n\x10\x02\x02\x14\x15\x02\x01\f\n\x01\x01\x05\x01\x01\x83\f\t\b\x1e%\x14\x15\f\x95\v\x03\x03\x03\x02\x02\a\t\x12\v\x01\x02\x03\b\x04\x05\x03\x05\x03\x04\x12\x06\f\x05\b\x03\x01\x8e%;\x1f\x17\n\b\x05!\x12\x0f\xd0\x11\x02\x04&\x1b\x13\x11\xd0\x0f\t\x0f\x03\x06\x11\x187\"\b\x03\x02\x04\x04\n\n\v\x03\x01\x01\x01\a\x02\n\x03\x02\v\n\n\b\x03\x02\b\n\x10\x02\x03\x14\x16\x02\x02\x18\x14\x01\x03\x02\a\xfe\x8e\x11\x13\x12\x1e\x12\x03\x02\x11\xd0\x0f\x12\x10\x0e\x03\x04\x06\f\x10\"\x14\x03\x03\x03\t\x04\x05\x03\x03\x02\x02\t\x03\b\x05\a\x05\x00\x00\t\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\t\x00}\x00\x85\x00\x8d\x00\x99\x00\xa5\x00\xb1\x01\v\x01\x1c\x00\x007\x17#&'&761\x14\x05\x06\a\x17'\x06\a\x17'\x06\a\x17'\x06\a\x17'\x06\a\x17'\x06#\a'&'\a7&'\a7&'\a7&'\a7&'\a7&'\a7&545'767'\x1767'\x1767'\x1767'\x1767'\x1767'\x176?\x01\x172\x177\a\x16\x177\a\x16\x177\a\x16\x177\a\x16\x177\a\x16\x177\a\x16\x1f\x01\a\x14\x15\x14\a\x17\x064&\"\x06\x14\x1626\x14\x06\"&462\a\x14\x17\x16\x17654'&5\x06'\x14\x17\x16\x17654'&5\x06\a\x14\x17\x16\x17654'&5\x06\x17&=\x01\x06#\x16\x1d\x01\x14+\x01&'\x06\a\x16\x17\x16\x17#&'\x06\a\x16\x17\x14\x16\x17#.\x01'\x06\a\x16\x17\x14\x161#.\x02547\x06\x15\x14\x16\x15\x14\a&+\x01'&5470\x06\a4&5\x06\a2\x1e\x01\x15\x0e\x01\a\x06\x17\x16\a32\x16\x15673275\x06#\x16\x1d\x01\x14\x16327.\x02'&\x9d\x05\b\x02\x02\x02\x02\x04\x01,\x03\a+-\b\f\"%\f\x10\x19\x1d\x10\x14\x10\x13\x14\x16\a\v\x16\x16\x02\x02\x16\x16\v\a\x16\x14\x13\x0f\x13\x11\x1c\x19\x10\r$\"\f\b-+\b\x0333\x0278\x02\x06:;\x06\t7;\t\f16\f\x0e(.\x0e\x10\x1b\"\x10\x10\f\x13\x11\x11\x04\x04\x11\x10\x14\f\x11\x0f\"\x1b\x0f\x0f.(\x0e\f61\f\t;8\t\x06<:\x06\x0288\x013Jg\x92hh\x92OY\u007fYY\u007f|\x04\x05\x03\x04\x03\x03\n)\x04\x05\x03\x04\x03\x03\n\x13\x04\x05\x03\x04\x03\x03\n\xcd\b\r\x05\t\x05\x12\x02\r\x02\t\x04\x02\x06\x01\t\a\x05\x01\t\x03\x02\x03\x01\t\x01\x06\x01\x02\t\x04\x01\x01\x12\x02\x06\x03\x01\x0e\n\x01\x10\x03\f\v\x06\x02\x05\x01\x04\x01\v\x01\x02\x02\x01\n\x02\a\x04\x03\x05>\x04\v\f\x05k\x06\x18\r\a\n\f\f\f\x02\x02\x04\x03\x01\x12\xa3\x0f\a\x03\x06\x04\x05\x04\x19\x14\x14\x17\x13\x14\x11\x1f\x1b\x12\x0f\" \x0f\v%$\v\x05'&\x06&&\x01\x05&'\x05\n#%\v\x0e\x1f\"\x0f\x11\x1a\x1e\x12\x14\x13\x17\x14\x14\t\x0e\r\r\x06\b\x03\x03\x13\x13\x10\n\x11\x11\x1e\x19\x10\x0e,'\r\n84\n\bA?\a\x04GF\x03\x01HH\x04FG\x04\a?A\b\n48\v\f',\x0e\x10\x19\x1e\x11\x12\v\x10\x13\x13\x03\x03\a\a\f\x0e\x0e!\x92hh\x92g\xef~ZZ~Zy\x03\x02\x03\x05\b\x03\x03\x04\x04\x04\n\x10\x03\x02\x03\x05\b\x03\x03\x04\x04\x04\n\x03\x03\x02\x03\x05\b\x03\x03\x04\x04\x04\vZ\x03\rp\x13\x15\a@\a\x05$\x02\f\x03\x03\x11\x04\x13\r\x03\v\x03\x03\x01\b\x02\x02\x11\x03\x02\f\x03\x03\x01\x01\x05\x10\n\x03\x04\x04\x11\b\x04\x1b\x02\x03\x02\x15\x1c\x0e\x05\x05\a\x06\x01\x01\b\x02\x01\r\x05\x05\x02\x01\r\x03\n\f\a\a\x10\x06\r\b!e\x12\x16\aB\f\b\x02\x01\x01\x01\x01\a\x00\x00\x00\x00\x02\x00\x00\xff\xf8\x01\xc0\x01\xa0\x00;\x00Q\x00\x00\x13>\x03;\x012=\x014632\x1e\x01\x1d\x01\x14\x06+\x01\"\x0e\x02\x15\x14\x15\x0e\x01\"&5&54.\x01+\x01\"&=\x014>\x012\x1e\x01\x1d\x01\x14;\x012\x1e\x02\x12\"'4.\x015&632\x1f\x017632\x16\a\x0e\x01\x15\xe0\x01\x03\t\x16\x0fc \f\t\x06\n\x06!\"d\v\x0e\x06\x02\x01\x0e\x12\x0e\x01\x03\x10\re\"!\x06\n\f\t\x06 c\x10\x15\t\x03\x13$\b11\t\x12\x12\x15\tCC\t\x15\x12\x12\t\x01a\x013\n\r\x14\n\x16\f\t\r\x06\n\x06% \x1e\x04\t\b\x06\x01\x02\n\r\r\n\x02\x01\b\n\t\x1e %\x06\n\x06\x06\n\x06\f\x16\v\x13\r\xfe\xbb\x10\x01UU\x01\x0e\x1e\x14vv\x14\x1e\x0e\x01\xaa\x01\x00\x00\x00\x06\x00\f\xff\xbe\x01\xfa\x01\xc1\x003\x00Z\x00e\x00s\x00\x80\x00\xad\x00\x00\x01\x1e\x01\a\x0e\a#\x0e\x02'\x06\a\x0e\x03\"\x06'.\x035'7#.\a767>\x01;\x01\x1e\x02\x176&'.\x02'*\x01\x0e\x02\a\x06\a\x16\x06\x1e\x02\x17\x06\x15\x14\x16?\x01\x16>\x0172>\x05'\x14\"5&'\"&63\x16\x176&'\"&63\x1e\x01\a\x14\x06&\x17\x14\x06&54&#\"432\x16\a\x0e\x01'.\x01'&'&'.\x01/\x01&676\x17\x16\x17\x16\x17\x16\x0f\x01\x0e\x01\x1d\x01\x1e\x04\x172?\x016\x17\x16\x17\x16\x01\xbc!\x1c\v\x03\r\x10\x15\x13\x16\x0e\x11\x01\a\"J%\x15\t\x03\n\x04\t\x04\n\x02\x04\x06\x02\x01\x01\x01\x01\x15$\x17\x13\t\a\x01\x01\x01\x020\x1ed$#4U \x18\n\x17\x1c\a\x1eI,\x04\x11-)0\x0f)\x02\x01\x02\n\x11(\x1d\x01\b\x04D\x1f@\x1e\x06\x01\x11\r\x16\x11\x12\f\x88\r\x02\x1f\x04\x03\x04\x04+\x16\x01(%\x04\x02\x03\x04*/\x01\x06\a/\x06\aE4\x06\x06:L\v\n\x1c\x0e\x11?\x16\x18\x13\x10\x0e\n\r\x02\x01\x05\x15\x11\x0e\n\f\x06\a\b\t\r\f\x03\x02\x01\x03\r\x11\x1f\x13\t\x05\n\n\x10\x1c\x12\v\x01\x8e\x1d}\\\x17&\x1b\x16\r\n\x05\x04\x03\x06\a\x04\x17\n\x03\v\x04\t\x04\x03\x01\x06\a\a\x02\x024\x06\x15\x1a\x1f \" \x1e\fm0\x1b\x1a\x01\x15\x13\xf6Nm\x18\a\x10\x10\x01\x03\a\x13\x0f([\x12)/)#\bO\a\a\x03\x05O\x02\x05\x06\x02\x04\x05\n\x11\x17#f\a\x06 \x02\a\x06\x028!,\x03\a\x06\x034&\x04\x03\x03\t\x04\x03\x03\x04;C\rK\xa2\x11\x15\x05\x05\"\x11\x13\x18\x15\x19\x11\x1c\x06\x05\x0e\x1c\n\a\v\x0f\a\n\x0e\x11\n\t\x02\a\x03\x02\x03\t\x19\x15\x16\x05\x06\f\r\t\x10\x11\n\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x002\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x056'&\a6\x16\a\x06\a\x06'&'&\a\x0e\x04\a\x17632\x16\x17\x16\x17\x163276\x01\x93\x13\x1a\x1a\x13\xfe\x9a\x13\x1a\x1a\x13\x01L\x032C\x18\x0f!\x03\x01\x14\x1b\f\f\x11\t%\a\x10\x15\x0f\x1e\a\x10\x15\x04\f\x12\x11\a\x03\x14\x1c.B@\x01\xa0\x1a\x13\xfe\x9a\x13\x1a\x1a\x13\x01f\x13\x1a\x95@\x01\x02N\t\t\x16\x11 *\x0e\x0fh8\x04\x01\b\x11\r\x1a\x06\x14\x0f/>\x19\x0e4VR\x00\x00\x00\x00\x03\xff\xff\x00`\x02\x82\x01\x00\x00,\x00U\x00\u007f\x00\x007\"&/\x02.\x02>\x01;\x012\x1e\x03\x1f\x01\x16326?\x02>\x04;\x012\x16\x0f\x02\x14\x0e\x03#!\"&/\x02&;\x012\x1e\x03\x1f\x01\x16326?\x02>\x04;\x012\x16\x0f\x02\x0e\x04#'2\x16\x1f\x02\x16+\x01\".\x04/\x01&#\"\x06\x0f\x02\x14\x0e\x03+\x01\"&?\x02>\x043i\x0f\x17\x04\x057\x01\x01\x01\x01\x06\x06!\x03\x04\x04\x02\x05\x01$\x06\x0f\a\v\x02\x02$\x01\x04\x02\x04\x05\x03!\t\x05\x02\x028\x02\b\n\x10\n\x01h\x0f\x17\x04\x048\v\x15!\x03\x04\x04\x02\x05\x01$\x06\x0f\a\v\x02\x01%\x01\x05\x01\x05\x04\x03!\t\x05\x02\x027\x01\x02\b\n\x10\n\xc5\x0f\x17\x04\x048\n\x14!\x03\x04\x03\x03\x02\x03\x01%\x05\x10\a\v\x01\x02%\x05\x02\x04\x05\x02!\n\x05\x02\x028\x01\x02\b\t\x11\t`\x0f\b\ap\x01\x02\x06\x05\x04\x02\x04\x03\b\x01K\r\a\x03\x03K\x01\b\x03\x04\x02\t\x05\x04p\x01\x04\n\b\a\x0f\b\ap\x12\x02\x04\x03\b\x01K\r\a\x03\x03K\x01\b\x03\x04\x02\t\x05\x04p\x01\x04\n\b\a\xa0\x0f\b\ap\x12\x02\x02\x04\x03\x06\x01K\r\a\x03\x03K\x01\b\x03\x04\x02\t\x05\x04p\x01\x04\n\b\a\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x10\x00B\x00R\x00a\x00\x00\x122\x17\x16\x15\x14\x06#\"/\x01\a7'&54\x176'&'&'&\a\x06\a\x06'.\x01'&>\x0176'.\x02'&'\"#\"\a\x06\x15\x14\x170\x1e\a\x17\x167>\x01\x132\x16\x15\x11\x14\x06#!\"&5\x11463\x132654'&\"\x06\x15\x14\x17\a7\x16\xa9m'(N7$\x1f\x052\r\x03\x14\xd2\x04\x02\x01\a\x16\x05\x06\x03\x03\t\x03\x06\x14\x17\v\x01\x01\t\x03\x02\x02\x01\x04\x06\x02\x02\x06\x03\x05\x06\x05\x0e\x11\x03\x03\x06\a\t\n\n\r\x06\x1e\x12\x06\x12e\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\xb0B^0.\x84]\x15\x16T#\x01E'(56M\x12\x03\r0\x05 &7o\x0e\x05\x01\x03\f\x01\x03\x05\x05\n\x04\x03\n\x13\x12\x05\x01\n\x06\x03\x03\x01\v\x0f\x03\x06\x01\x05\x0f\x12\x14\x15\x05\x04\b\b\b\t\b\a\x03\r\x03\x01\v\x01\x1e\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\x83]A@1.]A+%R\x16\x13\x00\x00\x00\x03\x00\x00\xff\xdf\x01\xc0\x01\xa0\x00/\x00:\x00\x82\x00\x00\x01\x0f\x01\x17\a'\a\x17\a'\x0f\x01#/\x01\a'7'\a'7/\x015?\x01'7\x177'7\x17?\x013\x1f\x017\x17\a\x177\x17\a\x1f\x01\a2>\x0154&\"\x06\x14\x16\x1f\x01\x15\x0f\x01\x17\a'\a\x17\a'\x0f\x01#/\x01\a'7'\a'7/\x015?\x01'7\x177'7\x17?\x013\x17/\x01\x0f\x02\x1f\x01\x15\x0f\x01\x15\a\x0e\x01\x15\x14\x163267;\x01?\x013\x1f\x01?\x02'\x01\xc0\x1d\x02\x15\v\x1d\a\t\x15\x15\v\a\x16\a\f\x13\x14\b\a\x1e\n\x14\x03\x1c\x1c\x03\x14\v\x1c\b\b\x14\x13\f\a\x16\a\v\x15\x13\a\a\x1d\n\x14\x03\x1cw\x0f\x1a\x10\"/!!`/7\x04'\x146\x0e\x11''\x15\r*\r\x16$%\x0f\x0e7\x14&\x0566\x06'\x155\x0f\x0f%$\x17\f*\f\x17\x06\x04\v\x03\x05\x11\x18\x06\x01$/>,%:\b\r\a\x02\x05\x02\x11\x05\x06\x14\x06\x02\x01\x1f\a\f\x13\x14\t\b\x1c\f\x15\x03\x1d\x1d\x03\x15\f\x1b\b\a\x12\x14\f\b\x16\a\v\x15\x13\b\t\x1b\v\x15\x04\x1a\x1a\x04\x15\v\x1c\b\b\x14\x14\v\tB\x0f\x1a\x10\x17!!/!\x11\x0e(\r\x17#&\x10\x0f4\x17(\x0666\x06'\x162\x11\x0f#&\x16\x0e)\x0f\x14'$\x0e\x104\x14'\x064.\x06\x02\x06\x13\x06\x04\x12\x01\x06\x02\x06\r\b:&+>/#\a\x18\x11\x05\x03\f\x04\x06\x00\x00\x00\x05\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\r\x00\x15\x00@\x00J\x00\x00\x122\x16\x14\x06\"&4\x17\x14\x16\x17\x03\x06\x1327&/\x01\a\x16\x13\x177654'&54632\x17&#\"\x0e\x01\a2376\x16\a\x06\a\x177/\x01\"&63\x16376\x16\a\x06\x13>\x0154'\x16\x15\x14\a\x99Α\x91Α\x19E9k\x13\xdf&$\x01\x01DC\x1f?P\x17\x11\x13\x16\x16\x10\x01\x02@W&G9\x14\b\x06<\t\x01\t\f\x0eR0\"\x18\x05\x04\x05\x06%\x15<\t\x01\t\fD3<\x1b\x01\x11\x01\xb8\x91Α\x91\xcegAl\x1c\x01$+\xfe\xf1\r\x01\x02\xbb\xc2\t\x01G\xefJ6\x12\x1e #\x11\x10\x18\x01;\x19-\x1f\x03\x01\x12\x01\x02\x01\xf1\x92_\x03\t\t\x03\x03\x01\x12\x01\x02\xfe\xd6\x1ef=92\v\f%+\x00\x00\x00\x00\x04\x00\x06\xff\xc3\x01\xf9\x01\xbc\x00\x13\x00+\x00A\x00Q\x00\x00%\x16\a\x0e\x01\a\x06'&'.\x01547>\x01\x17\x1e\x01'\x06\a\x06\x17\x16'&'&'&7>\x037>\x01\x17\x16\x17\x16\x05\x16\x14\a\x06\a\x06\a\x06576'&'67632\x1e\x01%'76\x16\x17\"&\x06\a\x06'\".\x02\x01rG\x11\x06;\x1b14;3\x15\rY\x186\x04\aT\xa0Z\x1f\x10\a\x02\x03\x03\x05!\b\x02\x06\x03\v\x10\x14\v\t\b\v\x1b6\x04\x019\x04\x03\x06\r\f\r\x03\x02\x03\v\x1b`+\x16\x16\x0e\x04\x1c#\xfe\xa0\t\x13?y2\n\x141\x1d\x14\x01\x01\x19\x1f)\x82W \v$\t\x0f\x05\x06!\x0e\x0f\f/_\x190\x01\x01R\x94mU-\x13\a\x05\x03\t2G\x13)\x10\" \x1d\f\t\x02\x03\t1\x04A\x11<\x11\x1f\x1b\x1b\x11\x03\x01\a\x12\"Rx(\r\x0e\x1e@\x80\x01\n\x1c\t\x1f\x02\r\x0e\n\x01\f\r\v\x00\x00\x00\x02\x00\x02\xff\xc0\x00\xfe\x01\xc0\x00\f\x00\x14\x00\x007\a#7&546;\x01\x11#5\x11#\"\x06\x15\x14;\x01\x99W@`KU@R7\x1d&2X\x1d\x84\xc4\xd2&gMT\xfe\x00\xc4\x01\x0e8;m\x00\x00\x00\x01\x00\x12\xff\xc0\x01.\x01\xc0\x00\b\x00\x00\x175\x033\x17\x133\x03\x15\x82p8R^4y@\xa6\x01*\xe6\x01\x16\xfe\xa4\xa4\x00\a\xff\xfc\x00<\x02\x80\x01D\x00\a\x00/\x00;\x00C\x00\\\x00g\x00y\x00\x00\x13\x06'&767\x16\a\x16\x170#\x06\x17\x14\x1e\a1\x06\a\x06#\"&#\"\x06#\x06'.\x017672\x1e\x01326732\x1e\x01\x15\x14\x06+\x01\x15#7\x153264&#\x17\"&54?\x0154#\"\a#4>\x0132\x16\x1d\x01#5#\x06'26=\x01\a\x06\x15\x14\x1e\x01\x17\"#5\x1632?\x01'3\x17373\a\x0e\x01u\x0e\x12\x02\x0e\f\x13\x02\x02\x1a\r\x01\x17\x01\x02\x03\x04\x05\x04\x05\x03\x02\x03\v\x12\x0f\a\x14\b\b\x14\x06\x0f\x13\x0f\n\f\x0f\x1c\x06\x0e\f\x03\x03\x1cnI\x13\x1d\x11%\x1d*\x1e\x1e#\x14\x16\x16\x14\x80\x15\x1b6&\x1d\x19\x04\x1b\x0f\x1a\x10\x1a\x1f\x1c\x01\r\x17\x0f\x15\"\x1d\a\fn\b\x03\x05\x04\x13\x06\x033\x1f$\x01#\x1f5\t\x18\x01\"\x11\x02\x11\x0f\x0f\x01\x12!\x02\x13\x0f\x19\x05\n\a\a\x05\x04\x02\x02\x01\x0e\x10\x1a\b\b\x01\x1c\x169\x1b\x1a\x01\x05\x05\v#\x10\x1d\x13\x1c$B\xa9M\x14%\x14\xab\x17\x13&\x04\x02\v\x18\x14\r\x14\v\x19\x15a\x17\x19\x17\x12\r\v\x02\x01\x13\x06\t\x05J\x18\x01\x14\t\x8ess\x95\x1a\x13\x00\x00\b\x00\x00\xff\xe1\x02@\x01\xa1\x00\x05\x00\x0f\x00\x1f\x00'\x00D\x00P\x00j\x00|\x00\x00\x00\x14+\x0153\x174?\x01\x15\x14\x0e\x01#\"7\x11\x14\x06#!\"&5\x11463!2\x16\x05\x1676'\x06\a\x06\x17&5&7&'&\x0e\x01#\"&#\x06\a\x06\x16\x17\x163262\x16327674&+\x01\x153532>\x01\x174.\x01#\"\x0e\x01\x153632\x1d\x01\a\x06\x15\x14\x1e\x01327\x1537#\a#'#\x17\a\x06#\"#\x15\x163267\x01.\x1d\x18\x18M\x14\x17\x06\f\a\x12\xe2\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe0\x14\x1c\xfe@\f\n\t\x01\r\t\n>\x13\x01\x11\n\x11\x06\v\n\x02\x02\x11\x05\x15\n\b\a\v\r\n\x04\x0e\f\x0e\x05\n\f\x06\x8c\x19\x143\x15\x1d\r\x15\fZ\n\x12\f\v\x12\v\x13\x03\x11\x14\x1a&\t\x0f\t\x17\t\x14f\x16\x18\x01\x19\x16$\x02\x04\x0e\x02\x04\x01\a\x10\x11\x06\x01\x0177Z\r\x01\x02\b\x06\n\x06\xd8\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\x8a\x01\v\v\r\x01\n\vW\t\x15\x11\v\x0e\x01\x01\x04\x04\a\x01\x12\x13(\x0f\x13\x06\x06\x12\tB\x14\x18\x88/\v\x15\v\n\x0e\b\a\x0e\t\x0e\x11\b\x01\x03\x1b\b\x0e\a\x11\x10cQQc\x06\x0e\x10\x01\x0e\x12\x00\x04\x00\x19\xff\xbf\x01l\x01\xc1\x00\x10\x00'\x00.\x008\x00\x007\x16\a\x1c\x011\x0e\x01#\"&767672\x13\x16\a\x0e\x01\a\x06\a#&'.\x03'&7632\x17\x16\x03\x11\x0e\x02\x17\x1676&'\x1e\x01\a\x06\a6\xc6\"\x01\x01\x16\x10\x12\x16\x01\x01 \x03\x02\x04\x89\x1f\n\n_3\x02\x02\x03\x01\x05\x1c+3\x1f\x03\x02U*'(%+}\x1b\"\n\x02\x05\xce\r3>\x1a\x17\x01\x02Ac\x14\x1e\x14\x01\x02\x0e\x11\x15\x0f\x13\x1c\x03\x01\x01f5\x03\x01O\x03=\x04\x04=\x04\x04=\x04\x04\x0f\x04\x03\x02%\x03.\x15\x01\x01\x15\x01\x01\x15\x01\x16\xd2$\x02\x04\x02\x13\x02\x02\x13\x02\x02>\x02\x02%\x04\x03=\x04\x04=\x04\x03=\x04Q\f\x01\f\x01\x01\f\x01\f\x01\xfd\x01\x03=\x04\x03>\x04\x04=\x04\x04=\x04K\x01L\x01\x04\x02\v\x02\x01\x01\x03\x01\b\x01\x01!\x01\x01B\x01\x01!\x01\x01!\x01\x01B\x01\x01\t\x03\x05\x04B\x01\x01B\x12\x03\t\x04\aB\a\x04!\x04\x04!\x04\aB\b\x03!\x02B\x14\x15\x02\x01\f\t\a\x02\x02\x0f\x13\x14\x01\x01\x01\v\b\x03\x03\x02\x02\a)\x03\x05\x03\x06\n\x06\x06\x0e\x12\x13\x04\x03\x01\x01\x05\f\x03\x02\x01\x03\x03\a\x03\x03\x90_\x02\x02\x01\x15\x02\x04,\x05\x02\t\x01\x01\t\x02\x05,\x04\x02\x15\x01\x02\x02_\x04\x02$\x01\x01$\x02d\xb1\x04\x02$\x02\x02$\x02\x04G\x04\x03#\x02\x02\t\x02\x04^\x02\x03\x01\x15\x02\x85\x01\r\r\x01\x18\x02\f\x01\x01\f\x02\x18\x15\x01\x02\x02\x12\x02\x01\v\x01\x01\v\x01\x02\x16\x02\x02#\x01\x04\x01\x15\x02\x02#\x02\x04G\x04\x02$\x02\x02$\x02\x04\x11\x04\x06\a\a\x01\x0e\x01\a\a\x01\x0e*\x01\x01\x03\x02#\x02\x02#\x02\x05F\x04\x02$\x02\x02$\x02\x046\x82\x01\x01\x00\x00\x02\x00\b\xff\xcd\x02\x04\x01\xbc\x00-\x00V\x00\x007>\x0176\x16\x17\x16\x06\a\x06'&'&767654&'&\x06\a\x06\x16\x17\x16\a\x06\a\x06'&'.\x064&70\x16\x15\x1e\x01\x17\x167676'&7>\x02\x17\x1e\x01\x15\x14\a\x06\a\x06\x17\x16\x17\x167676'.\x01\a\x0e\x01\b\x02zZf\x9f\x11\x10VR\r\x05\x1b\x1a\x05\f%\x06\x01&\x1b\x1d-\x04\x04\x17\x17\r\x05\x1b\x1b\x04\vX+\x04\a\x05\x04\x02\x02\x02\x01\x15\x01\x05C;\x04\x02\x16\x17\x01\x040\x03\x01-@\x1d\x13\x1b\x01\x05(\x04\x01\x17\x16\x02\x047!5\v\n\x92cRr\xb6c\x89\f\rv`Y\x98!\x06\rFE\f\x05\x11'\x05\x06\x1b*\x02\x03#\x1c\x18+\n\x06\rFF\v\x05\"U\b\x10\x0f\r\x0e\n\r\x06\f\x03\x11\x058b\x1d\x02\x05:;\x04\x03\x1e8 0\n\x11\n/\x16\x05\x06-\x19\x02\x04;:\x05\x02\x1a.IX[x\r\n}\x00\x00\x0f\x00\x00\xff\xda\x02\x00\x01\xa6\x00<\x00J\x00R\x00Z\x00q\x00y\x00\x81\x00\x87\x00\x95\x00\xa4\x00\xb3\x00\xbb\x00\xcb\x00\xda\x00\xe2\x00\x00\x01\x1e\x01\x15\x14\x06\a\x06\a\x16\x17\x16\x0e\x01\a\x06&'&'\x06\a\x0e\x01'.\x01767&'.\x01546767&'&676\x16\x17\x16\x1767>\x01\x17\x1e\x01\a\x06\a\x16'\x06\a\x16\x17\x16\x17676&'&\x06\a&'\x06\a\x16\x17&'\x16\x176767\x06\x17\x16\x17\x16\x17\x163276767&'&'&\"\a\x06\a\x06\x17\x06\a67&'\x06767&'\x16\x17\x16'\x06\a6\x17&'\x0e\x01\x17\x16\x176767&1.\x01\x0367&'\x06\a\x0e\x01\x15\x16\x17\x16\x17\x16\x1767&'&'\x06\a\x06\x16\x17\x1676767\x06#\"'\x16\x176'&'\x06\a\x06\a\x16\x17\x1e\x02767>\x0254&'&'\x06\a\x16\x172&\"&462\x16\x14\x01\xa2*47-\x06\x03\x02\x01\x06\x02\x0f\r\x14;!\b\x05\x05\x06!?\x14\x14\f\b\x02\x02\x05\t+52*\t\t\x02\x01\t\f\x14\x14@\"\x04\x04\a\x06!;\x14\x15\f\n\x01\x01\b\u007f\x06\x06\x17\x14!\"\x01\x01\b\a\r\r0\x8f\x06\b\n\x06\x16\x18\a'\a\t\x06\b\a\b\x18\x06\v\v\v\r\x17\x17\x18\x16\x0e\n\f\n\v\v\v\r\x17.\x17\x0e\n\f\xab\t\a\x18\x17\a\t\b\a\n\x06\x15\x18\a\b\x06_\x10\x0e\x1e\x1e\x0e\x84\f\a\a\x02\x01\"!\x14\x17\a\x1d4%\n\x0e\x0e\n\n\a#*\x02\x10\x18'\az\x05\x05\x18\x13\"\"\x02\x02\x06\a\r\x11\x12\x1f2\x10\r\x0e\x10\x0f\x0f\x0f\x93\x04\a\x01\x02!#\x13\x17\b\x05\x11#\x19\t\x0f\x14\x18'\x15,#\b\a\n\x0e\x0f\n\x03}&\x1b\x1b&\x1b\x01\x0f\x0f)\x17\x17,\x0e\x02\x01\a\a\x1d0$\a\v\x14\x1b\b\x05\x05\x05\x1d\x15\v\v>*\t\t\x01\x03\x0f,\x16\x16*\x0e\x03\x03\b\t*?\f\v\x16\x1f\x04\x04\a\x05\x1d\x14\v\vC-\a\x04\x02R\x05\x06\x19\x1c\x03\b\x04\x06'6\b\a\x14\xef\f\x0f\x18\x15\x05\x02\n\x88\x16\x16\f\x0e\f\x0e\x03J\x16\x13\x14\x13\x01\x01\x15\x13\x14\x14\x16\x13\x13\x13\x02\x02\x14\x13\x15F\x10\n\x03\x05\x17\x15\x0fA\x16\x16\x05\x03\r\r\na\x11\x13\x01\x01\x13N\a3$\n\x05\a\x03\x1c\x19\a\x1a\x15\xfe\xf0\"\x1f\x1f!\x03\x03\f \x0e\x13\v\x12\r\x02d\x04\x05\x1a\x1c\x02\b\b\t$1\a\a\b\f0\x12\x12\x01\x01\x14.\" \x06\x06\a\x03\x1c\x1a\b\x03\x10\x13\x04\x04\f\u007f\b\x16\x16\n\r!\f\x02\x02!\x1e \x1f\x11\x1b&\x1b\x1b&\x00\x00\x00\x00\x04\x00\x00\xff\xd0\x02\x80\x01\xb0\x00\x06\x00\n\x00\x0e\x00\x12\x00\x00\x01\x13#'#\a#73'#\x05\a'\x17%\a'7\x01>\xa4M\x19x\x19NyT)\x02\x01A\x9e\x14\xa8\xfe<\x14\x9e\n\x01\xb0\xfe QQ\x8a\x82\xb1\t8\x10\x108\t\x1f\x00\x00\x00\x00\x06\x00\x00\x007\x02\x80\x01I\x00)\x00P\x00\x82\x00\xaa\x00\xbe\x00\xc3\x00\x00%\x14\x17\x15\x06\x15\x14\x16\x15\x14\x06+\x015352>\x0154&5475&54654&+\x01532\x16\x15\x14\x06\a\x16\x15\x14\x0e\x01#\"'7\x163254'&'&54>\x0232\x17\a&#\"\x15\x14\x1e\x05\x0523\x17\x06#\"=\x01#\"\x06\x15\x14\x16\x15\x14\a\x15\x16\x15\x14\x06\x15\x14\x16;\x01\x15#\"&54654#5654&546;\x01\x15\x147\x16\x15\x14\x0e\x02#\"'7\x163254'&'&54>\x0232\x17\a&#\"\x15\x14\x1e\x05'2\x16\x15\x14\a#\x16327\x17\x06#\".\x015&6\x1534#\"\x02e\x1b\x1b\x03\x13\x16\x14\x06\a\a\x03\x01\x17\x17\x01\x06\v\x06\x14\x16\x13\x03j+\x0e\x1e\x14\"\x1a\x15\x15\x13\x15\x1d\x02\x01*\t\x0f\x17\r\x1c\x1b\x15\x12\x10\x11\x01\x04\x03\a\x04\t\xfe\x9b\x03\x03\x06\n\x0e+\x0e\n\a\x01\x17\x17\x01\a\n\x06\x14\x16\x13\x03\x1b\x1b\x03\x13\x16K\xf0+\t\x10\x18\x10!\x1b\x15\x15\x13\x15\x1d\x02\x01*\t\x10\x16\r\x1d\x1a\x15\x12\x0f\x12\x01\x04\x04\x06\x05\t\x99 #\x02_\x06#\x11\x11\x10\x1a\x1e\x17#\x15\x01-9\x1b\x19\xe5\x16\x01\x1c\x01\x16\n!\f\x19\x14\x19\x01\x04\t\t\t!\n \x05\x02\x05 \n\"\a\x0e\t\x18\x14\x19\f!*\x0e\"\x0e\x17\x0e\x16\x1f\x11\x0e\t\v\x01\x01\x10\x1e\v\x12\r\a\x14\x1c\r\f\x03\x03\x04\x02\x03\x02\x03<\"\x046\x96\t\r\b\"\t \x05\x02\x06\x1f\n\"\b\r\n\x18\x14\x1a\v!\t\x17\x1c\x01\x16\t\"\f\x19\x14\xb2\r;\x0e\"\v\x12\x0e\b\x16\x1f\x11\x0e\t\v\x01\x01\x10\x1e\v\x12\r\a\x14\x1c\r\f\x03\x03\x04\x02\x03\x02\x03D+!\a\f#\n\x1b\x12\x13&\x19%.B\x1f\x00\x00\x00\x00\x06\xff\xfd\xff\xca\x02\x82\x01\xb9\x00\x00\x00\xe4\x00\xf4\x01\a\x01\x11\x01\x19\x00\x00%72\x16\a\x0e\x01\a\x06'47>\x01&'&\a\x16\x15\x16\a\x06\a\x06'&767&'&'\x06\a\x06\a\x16\x17\x16\a\x06\a\x06\a\x06'&7676767&'&'\x06\a\x06\a\x14\x0f\x015\x06#\"&?\x01\x06\a\x0e\x02#\"'.\x01767\x06\a\x06\a\x141\x16\x06\a\x0e\x01'.\x017676727.\x03'&67676\x16\x17\x16\x06\a\x0e\x01'.\x01'&76\x17\x167>\x01'.\x01\a\x0e\x04\a\x06\x1e\x01\x172\x14\x174767>\x012\x16\x0f\x01630>\x012\x17\x16\x170\x0e\x03\a\x0e\x01\x1612767\x1505076767>\x015632\x170\x0e\x01\a\x06\x17\x14\x176767632\x152\x0e\x01\x15\x06\x17\x16\x176\x056'0\x06\"\a\x0e\x01\a\x0e\x02\x17\x16676'&\x06\a\x06\a\x0e\x01\x14\x1e\x01\x172>\x03\x176541\x06\x0f\x02\x167654'\x06\a\x06\x01.\xf9)1\x01\x01\x16\a\x05\x01\x05\x0f\x05\x1e%#\x1b\x05\x01\x18\n\f\v\x06\x14\v\b\x1a\n\x02\x04\x02\x0f\x14\x01\x02\x06\x01\x01\x14\n\v\t\x0e\v\x05\x06\x03\x02\x1c\x06\x04\x02\x04\f\x01\x04\x02\x10\x10\x0f\n\x01\x01\f\v\v\b\x01\x02\b\b\x04\x06\v\x06\n\x05\t\f\x01\x02\a\x0e\n\b\x04\t\x03\x10\x11<\x1e\r\x0e\v\x10M\x01\x02\x01\x01\t-# \x04\x03\x17!9^Bw\v\n;/%H\n\x0f\x13\x03\x03\x03\x03\x05\x14-HW\x10\vhK\"1\x19\x0f\x03\x01\x01\x1f:\v\x01\x01\x14\x11\x1a\v!\x1a\n\x02\x02\x01\x01\x02\x03\x05\x03\x06\x01\x02\x04\x04\x04\x01\x01\x01\x01\x02\x03\x01\x02\x01\x04\x06'\x03\x02\x03\x03\x17\r\x01\x03\x04\x01\x01\x03\b$\x04\x01\x04\x02\x17\x0e\x01\x04\x04\x01\x02\x01\f\x1b\xfer\x1f\f\x02\x01\x01\x02\b\x02\x1b \t\n\b\"\x93\x15\x05\x01\x0f\a\x0e\b\x03\x03\x02\x03\x02\x02\x06\a\x05\ap\x19\x05\x06\x13\x01\x01[\x1a\x02\r\x06\tEW,\x1b\x11\x14\x02\x01\x03\x02\x03\n\x1f$\x04\x04\v\r\n\x16\x12\a\x04\x05\x01\x04\x1d\x17\x15\x14\x06\r\r \x1d\x01\x04\x10\f\x19\x0f\x06\x04\x05\x01\x01\x04\x05\t\x03\"\x06\a\x03\x05\x1b\x03\r\r( \x1e\x10\x01\x01\x02\x01\x13\x1a\r\r\x13\x10\t\t\a\x05\b%\x10\x1a\x11\b\x05\x05\x03\x01\r>\x18\x1b\x19\b\x04%\x1e$&\x01\x01\x01\a \x19)\x14\x117\x1e5\"\x18\x1a*)V\x12\x0f\x03\x06\x05\x11\a\b\x02\x01\x06\x15\x04\tZ\"\x1a\x03\"\x11#\x1a\x1c\x0e\b\x16'+\f\x01\x01\x01\v\t\x0e\x0f\x18\x15\v\v\x02\x02\x02\x01\x03\b\t\x0e\x10\x11\a\x05\n\x05\x06\x03\x04\x01\x01\x01\b\rV\n\x04\r\x02\x06\a\t\r\x05\t\x10\a\x0f:\x11\n\t\x06\a\t\r\x05\t\x10\x06\x18\r\x91\"-\x02\x01\x01\x05\x01\x10\x1f&\x05\x05\fj3\b\x04\x06\b\x10\x19\b\x12\x0f\r\a\x01\a\x0e\f\x122\x0f\x14\x01\a\a\x15\x03\x01\x16\n\x19\x05\x05\v\r\x12\x00\x00\x00\x02\x00\x00\x00\x00\x01\xc0\x01\x80\x00\x06\x00\f\x00\x00\x013\v\x013\x177\a\x1b\x01#\a'\x01e[\xe0\xe0\xb008ਨ6rr\x01\x80\xfe\x80\x01\x80YY \xfe\xe0\x01 \xc6\xc6\x00\x00\x00\x03\x00\x10\xff\xe0\x01\xb0\x01\xa0\x00\x02\x00\b\x00\x0f\x00\x00?\x01\x17'\x17\x03\a'\x03\x01\v\x01373\x17\xba&&&\xd0 \xb0\xb0 \x01R\x82\x820\x1bn\x1a\xb4\\\\\xecJ\xfe\xecbb\x01\x14\xfe\xf4\x01$\xfe\xdcBB\x00\x00\x00\t\x00\x00\x00X\x02\x80\x01(\x00\x06\x00\t\x00\x0f\x00\x13\x00\x1b\x000\x00D\x00\xb9\x00\xbf\x00\x007'#\a#7\x17'\a3\x17'3\x1773\x1753\x157\x15#5#53\x15\x16\x14\x0e\x02\".\x024676762\x17\x16\x17\x16\x17\x064.\x01'&\"\a\x0e\x02\x14\x1e\x01\x17\x1627>\x01\a\x16\x15\x14\x06\"&5475\a\x15\x16\x14\"475\a\x153\x15#5#\x15#535\a\x0e\x01\x0f\x01\x153\x15#5#\x15#535&/\x01\x153\x15#5#\x15#535'\x15\x16\x14\"475'\x15\x16\x15\x14\x06\"&5475'\x17&5&5'\x1743>\x01?\x02#\a#7\x17#'#\x17\x16\x170\x157\a\x14\a\x14\a7\a'37\x173'k\x134\x13\x11>>>\x13']>\x11--\x11\x13\x0f\xc2\x12)d\x86\n\x12\x18\x1c\x18\x12\n\n\t\x05\x10\f\x1c\f\x10\x05\t\x05\v\a\x0e\t\n\x15\t\t\x0e\b\b\x0e\t\t\x15\n\t\x0eW\n\a\n\a\nP\n\x19\n\x1d\x06\x06\x05\x05\x05&\x04\t\x03\x03\x05\x04\x05\x04\x05\v\b&\x06\x06\x05\x06\x06\x1d\n\x18\tP\v\b\n\a\nY\xf3\x01\x01AA\x01\x01\f\x06\x06\x01\x18\x12\x12?>\x11\x13\x18\x01\x17\x03@@\x01\x01\xf3Y\xc9\x12\x01\x02\x12\x14\xa4**\x84\x84c+<\x84``\x80\x80\x80ttt\f\f%\x1c\x18\x12\n\n\x13\x17\x1c\x18\t\x05\a\x05\x05\a\x05\t\f%\x16\x13\x0e\x04\x04\x04\x04\x0e\x13\x16\x12\x0e\x04\x04\x04\x04\x0eD\x01\v\x05\a\a\x05\v\x01\x06\t\x05\x02\x14\x14\x02\x05\x03\x18\x0e\a\a\x0e\x17\x04\x05\a\x01\x01\a\f\x05\x05\f\a\x02\f\x04\x17\x0e\a\a\x0e\x18\x03\x05\x02\x14\x14\x02\x05\t\x06\x01\v\x05\a\a\x05\v\x01\a\n\x0e\x04\x03\x04\x03\b\x02\x01\b\f\x02\x02\x1a)\x83\x83)\x1a\x06\x12\x01\x02\b\x03\x03\x04\x04\x0e\nQ((+\x00\x05\xff\xff\x00y\x02\x81\x01y\x00\xe3\x00\xec\x00\xf8\x01\x0e\x01\x1a\x00\x00%\x14\x06\x0f\x01\x0e\x02'.\x03'5#\a\x0e\x02.\x01=\x01\x0e\x02'.\x01/\x01\x06\a\x06&/\x01\a\x06'.\x01?\x01#\x06\a\x0e\x01+\x01\x06'&6?\x01#\a\x0e\x02'.\x015'\a\"\x0e\x02&'&'&'&4?\x016\x17\x1e\x017367672\x17\x16\x06\x0f\x010\x14\x1e\x02326?\x01>\x017>\x01;\x016\x17\x16\x06\x0f\x01\x177>\x02\x172\x16\x0e\x01\x0f\x01\x17?\x01>\x02\x17\x16\x17\a0\x15\x16\x1726?\x0167>\x05?\x01676\x17\x16\a6\x17\x1e\x01\x0f\x01>\x01?\x014567>\x01\x16\x17\x16\x06\x0f\x01\x1e\x0272>\x02?\x01>\x017>\x01\x1f\x013>\x03?\x01>\x02\x1e\x01\x0f\x01\x06\x17\x166?\x016\x05\x167>\x01'&\x0e\x01%\x06\a>\x04'&\a\x06\x16>\x01.\x01/\x01.\x02\x0e\x03\x1c\x01\x1d\x01\x1e\x0267\x167>\x01/\x01&\a\x0e\x01\x17\x02\x80\x02\x02\x01\x03\n\x19\t\x06\t\x04\x02\x01\x02\x14\x01\x04\v\v\x06\x02\t\x1c\x10\x0e\x14\x04\x03\x15:\f\x16\x06\x05\x12\x16\t\x04\x01\x01\x01\x01\r\a\x03\a\x03\x02\x0f\x04\x01\x02\x03\x02\x02\f\n\f\b\a\x05\x06\x01\x10\x01\x06\x0f\x0e\x11\x05\x10\x04\x11\v\x05\x03\x02\x04\x06\x03\t\x04\x03\x02\x06\x0e\x1b\x15\v\b\x19\x10\x11\x02\x02\b\x05\b\x18\a\b\x01\v\x03\x01\a\x03\x03\t\x01\x01\x03\x02\x02\x01\x15\x01\x05\x0f\a\x05\x03\x02\x03\x02\x02\x02\x01\x1c\x01\x03\n\x04\t\x01\a\x02\x03\x05\n\x03\x03\a\x05\x01\x04\x05\x06\x05\x04\x01\x01\a\x11\x16\a\v0\x0e\r\x12\x04\a\a\x05\x10\x06\x06\a\x1e\x04\x15\x17\x01\x01\x1b\r\x0e\x01\x02\r\t\x06\r\n\t\x03\x02\x01\f\x02\x02\x10\x01\x01\x01\x02\x05\x04\x05\x01\x01\x02\x03\n\a\x03\x01\x01\x04\x0e\x06\x0f\x04\x04\n\xfd\xbf\x06\x0e\n\x05\x06\x04\r\f\x01\x11\x10\x01\x02\x06\x0f\v\b\x02\x04\x12\x01\x13\a\x02\x03\x03\x02\x01\x01\x03\t\b\n\x05\x04\x01\x05\f\nd\x10\n\x05\x01\x02\x02\t\v\x05\x04\x01\xc1\x04\b\x01\x01\x02\x06\b\x02\x02\n\f\f\x04\x04:\x03\t\r\x05\t\x04\x03\x02\a\v\x02\x01\r\x06\x06\x0e\f\x01\a\x03\x04\n\n\x0f\a \r\f\x1a\x18\n\v\x01\f\b\x1b\f\r\x18\x18\x15\x04\x01\x01\t\x03\x04\t\x03\x04\x01\x03\x04\f\x12\x01\x05\x02\b\x04\x04\x05\x05\x02\x02\x01\x13\r \x01\x0f\x15\"\a\b\x02\x04\x03\x02\n\x05\x05\v6\x06\x03\x03\x01\t\x04\x18\n\t\x02$\x03\x06\v\x01\v\x10\x0f\x06\x05\x02\x02-\x01\x04\x05\x01\x03\v5\x16\x05\x01\x05\x03\x02:/\n\x13\x10\x0e\n\a\x02\x02\n\a\b\x1f-=\x0e\b\f(\x0f\x0e\x01\t\x04\x04\x06\x01%\x17\x03\x05\f\x14\x13\x1e\x05\x05\x02\x04\x05\x02\x06\x06\x06\x02\x02\f1\a\x04\x01\x03%\x05\n\b\x06\x01\x02\x01\x03\x04\x02\x0f\a\a\x1f\x01\x01\x05\x03\x03\x04\x10\x02\n\a\x13\x05\x02\x04\x16m7\x10\x03\n\x1c\x17\x1a\x06\x16,\x03\x94\x13\x10\n\a\x02\x01\x01\x01\x01\x03\v\x12\x11\t\a\x02\x01\x01\x01\x01\x03\"\x01\x0f\a\r\x03\x03\v\x14\t\x10\x03\x00\x00\x00\x01\x00\x03\xff\xc0\x01\xbd\x01\xc0\x00.\x00\x00%\x14\a\x06#\"&#\"\a\x0e\x01#\x15\x14\x06#\"&5\x11&5462\x16\x15\x14\a\x152>\x0432\x1632632\x16\x15\x01\xbc\r7%\x16H\x1d2B\x01\x04\x01\x14\x0e\x0e\x14\x17\"/\"\x17\x01\v\x0f\x17\x17\x1d\r%P\n\x17C\x02\x06\tY\b\x06\x17\x1c\x1d\x01\x01N\x10\x13\x14\x0f\x01w\x11\x1c\x17\"\"\x17\x1d\x10 \x05\x06\a\x06\x05\x1c\x1c\b\x06\x00\x04\x00\x10\xff\xc0\x01p\x01\xc0\x00\x03\x00\a\x00\v\x00\x0f\x00\x007#\x113\x17\x11#\x113\x11#\x113\x15#5B22e3\x983\x972~\x01BL\xfeL\x01\xb4\xfeL\x01\xb4\xf7\xf7\x00\x00\n\x00\x00\x00L\x02\x80\x01)\x00\x03\x00\t\x00\x13\x00\x17\x00\x1b\x00?\x00G\x00\x9b\x00\xa3\x00\xab\x00\x0075\x16\x177\x163\x06'7$\"&5462\x16\x15\x14\a53\x15#57\x15'\x1e\x02\x14\x15\x14\x15\x1c\x01\x0e\x01\a\x0e\x03+\x01\x06'.\x0245454>\x03;\x016\a54\"\x1d\x01\x142'\x1e\x02\x14\x15\x1c\x03\x0e\x05\a\x0e\x03#'\x06'.\x024547&'\x15632\x16\x1d\x01&'54#\"\x1d\x01'&'\x15\x16\x17\x16\x17\x15#5.\x046?\x01>\x01\x177\x15\x16\x1767>\x033\x176'7&\a\x0e\x01\x16\x1f\x0154\"\x1d\x01\x142\x90\x13\x14\x13&&)6\x13\x01\xa5\x18\x11\x11\x19\x10::\x84:Y\a\a\x03\x03\b\x06\x05\x0e\r\v\x04\x03 \x12\a\a\x03\x01\b\x10\x19\b\t \x15\x16\x16k\a\a\x03\x01\x01\x02\x02\x04\x04\x03\x05\x0e\r\v\x04\x03 \x12\a\a\x03\t#A\r\x1a\x13\x15\x1e\x1b\v\v\x04!\x15\x12\x15\t\n:\x11\x1a\x0e\a\x01\x01\x01\x01\a2)\x16@&\x03\x03\x05\x0e\r\v\x04\x03 \xf8\x1d.\x12\x03\x02\x12\x16\xe3\x16\x16`\x10\n\a\x06\r\v\x12\x01x\x11\f\f\r\r\f\f\x89nn\xa8\x1b\xc3w\x06\f\x11\x05\f\x01\x03\b\t\x0e\f\x06\x05\a\x03\x02\x01\x12\a\f\x11\x05\f\x01\x03\v\v\x12\x10\t\x02Z(\v\v(\rT\x06\f\x11\x05\f\x01\t\x02\b\x03\a\x03\a\x04\x06\x02\x05\b\x03\x02\x01\x02\x13\x06\f\x11\x05\f\x1e\x0e\x1a 6\x16\x16\x10^\f\x121\x0f\x13\x1d\x03\x1b\x18\x1f\x10\x10\a\x06\x1dJ\x10\x1d\x16\x12\r\t\x02\x01\x0f\x01\x0f\n\x15\x1f\x1e\x03\x03\x05\b\x03\x02\x01\x02\x1e\x0e\x11\x0f\x03\r'\x189(\v\v(\r\x00\x00\x00\x02\x00\a\xff\xc0\x01y\x01\xc0\x00\x05\x00\v\x00\x00\x1b\x01#'\a#!3\a'3\x17\x9e\x97Y>>Y\x01.CoqD-\x01\xc0\xfe\xdctt\xdc\xdcX\x00\x00\x00\t\x00\x00\x00<\x02\x80\x01D\x00\x11\x00\x1b\x00\x1f\x00>\x00R\x00Y\x00h\x00s\x00w\x00\x00\x13\x153\x15#\x15\x14\x16267\x15\x06#\"&=\x01\x176\x17\x15&\a\x15#537\x15\a5\x05\x14\x1e\x02\x15\x14\x0e\x01#\"'5\x163254.\x0254632\x17\x15&#\"\x05\x14\a#\x16327\x15\x06#\".\x0154632\x16\a34&#\"\x06'2\x16\x15\x14\x06#\"'\x0f\x0153\x176\x172654&#\"\a\x17\x16\a53\x15\xa5\"\"\t\f\n\x03\v\x14\x14\x1a\x84\f\x19\x15\r,&_,\xfe\xff\x15\x1a\x15\x10\x1c\x13\x19\x17\x1a\x17\x11\x15\x1a\x15!\x1b\x18\x14\x15\x17\x0f\x02S\x01W\x03 \x18\x14\x15\x1d\x16 \x13%\x1f\x1e\"X.\r\t\n\x0eq\x19$#\x1a\x10\x0f\x01,'\x02\x10\t\f\x0f\x0f\f\x0e\b\x01\br,\x01/&&?\t\n\x02\x01\"\x06\x18\x14\x8e*\x16\t)\a\x10g\x99;$\n$^\a\t\a\x17\x12\x0f\x16\v\v(\x0f\v\a\n\b\x15\x11\x17\x1b\b*\v+\t\a\x1a\t!\f\x11$\x1a#..\x13\x0e\x0f\x0f3+%((\f2\n\xcd\v\x0e{\x18\x12\x12\x17\bB\t!\x99\x99\x00\x00\x00\x00\x01\x00\v\xff\xbf\x01v\x01\xc0\x00\"\x00\x00\x13\x14\x1e\x04\x15\x14\x06#\"&'5\x163254.\x0454632\x17\x15&#\"\x9b!090 l\\\"[\x1fTH7 090 iXLBDJ1\x01%\x0e\x16\x0e\x18\x1e;(KO\x13\r\x81.#\x10\x18\x0f\x18\x1d8%KV\x1a\x86$\x00\x00\x00\x00\x02\x00\a\xff\xe0\x01\xb9\x01\xa0\x00\x15\x00#\x00\x00\x13\x14\x1e\x02327\x0e\x01#\".\x01547>\x027\x0672\x15\x14\x0e\x01#\".\x02546\xb3\x1c)3\x14\f\a&R\x1b$Y;\t\r:F$\x0e{\x8a\x1c%\r\x12%\x1d\x12\x12\x01r\x19YW@\x02\x0176\x17\x1e\x01\a\x06\a\x06\a\x06\a\x06\a\"+\x01\"#&#&'&'.\x01'4'\x1323\x161\x16\x17\x16\a\x06\a\x06\a\x06'&'\x15\x141\x06#\"#&50=\x0146;\x012\x17\x14\x17\x1430>\x01767\a0\x150\x141\x15\x14\x17\x163\x167654'&'&\a\x067232\x163\x16\x17\x16\x17\x16\x150\x1d\x01\x14\x15\x06#\"#\"'4'\"\x15\x0e\x01'&'&7676\x17\x16\x1721450454&'&\a\x06\a\x065<\x01547676362\x17<\x01=\x014#\"&'\"#\"\a\x06\a\x06\x14\x17\x16\x17\x167676\x05\x150\x06\a\x06\a\x06\a\x06\a\"&747676'4'&'&\a\x06\"\x06\a\"+\x01\"5&1476767632\x17\x16\x17\x16'0\x170?\x014656;\x022\a\x14\a\x06\a\x06\a\x06'\"'&5<\x01\x17:\x01\x17232767>\x0176'&'&5&3232\x17\x16\x15\x16\x0e\x03\a\x1c\x03=B ((\a\a\x18\x1d#_!\x05\x04\x05\x03\x04\x04\x05+9%&\x1b\x1a\x02\x01\x15\x01\x01\x04\a\x1a\x19)'\"U\x1b\x04\x9e\x06\x02\n\x1f\r\t\x01\x01\t\x0f\x1d\"\x1b\x01\x01\x01\x04\v\n\x05\x03\x05\v\a\x01\x01\x01\x03\x03\x01\x11\x15+\x01\x13\x13!\t\x04\x05\b\x19\x18\x16\x01\xcd\b\x04\x02\a\x02\r\t\x10\x03\x01\x01\x04\b\b\x05\x01\x02\x01\x13,\x10\x12\x03\x02\x06\t\x14\x0e\x14\x10\x10\x01\n\f\x11\x14\x05\x13\a\x06\x0e\x03\x0f\x0e\x01\x02#\x02\x01\x13\x05\x03\x04\t\b\r\x04\x01\x01\x03\n\a\t\x14\x12\x01\x01\x04\x01\x01\a\x12\x06\x06\x02\x03\x02\x03\x01\x01\f\x04\x04\x01\a\b\a\x0e\x14\x03\t\b\x03\x01\x01\x01\x03\x01\x01\x02\x02\x10\x18\r\x0e\x06\x06\v\n\b\x83\x01\b#\x01\x02\x05\x01\x14\x04\x01\x01#$\x04\x05\r\x1a\t\b\b\x05\x02\x05\x01\x02\x03\x05\x05\v\x05\x01\x06\x02\x02\x02\x1e\x1d\x02\x01\x04\b\x0f\x04\x02\x06\x14{\x06\x04\x0f\x02\x1e\x10\a\x05\x05\x01\x03\x04\x19\x0e\x02\x01\x01\t\x04\x04\x03\x1e\x12\f\x06\x04\x01\x01\x01\x04\a\x0e\f3\x18\x01\x05\x01\x06\x02\x06\x1f\x14\x1d\x19\x14\x1d\x05\a\x16\x01\x01I\x02\x06\x01\x05\x02\xd2\x05\x03\a\x02\x06\x01\x03\x01\x01\r\x02)**\x01\x02\x01\r\x02\x1e\f\x13\x13\x0e\x18\x02\x01\x0f\x01(\x01\x02\x05\n\x15\x06\x06\x01j\x01\x02\x04\x05\x02\t\x01\x0f\a\t\n\x16\x11\r\x12\a\x05\x01\x01\x04\x01\x01\x13\x05\n\r\x02\x03\x04\x01\x05\x02\a\x02\x06\x02\x06\x02\x04\x01\x04\x01\x80\x03\n\x01\x0f\x02\x03\x01\x03\x04\v\x05\n\x05\t\x04\x03\x01\x02\r\x01\u007f\x12\b\x02\"\x16\a\x06\x02\x01\x02\x02\x02\x01\x1e\x0f\x0f\t\b\x02\x02\x01\x01\x02\x01\x01\x01\x02\x01\x02\x01\x02\x01\f\x04\x03\x01\x01\x03\x02u\x02\x16d\x01\x02\x01\x05\x04\x03\x03ZY\n\t\x16\x01\x02\x01\b\x05\n\x01\x01\x01\x03\v\x04\x0f\x03\x06\x06IH\x03\x04\x04\x05\x0f\x025\x00\b\x00\x00\xff\xe0\x02@\x01\xa0\x00\x12\x00(\x008\x00r\x00\xb3\x00\xe3\x01\x0e\x017\x00\x0070=\x01476\x17\x16\x17\x16\x15\x14\a\x06'\"'&\x17.\x017676\x172\x1632\x1d\x01\x1c\x03#\x06\a\x06%\x11\x14\x06#!\"&5\x11463!2\x16\a\x16\x17\x1e\x01\x17\x16\a\x0e\x01\a\x06\a\x06#0&#\"\x14\x15\x14\x17\x163\x1676767674#0\"1\"\a\x14\x06\x15\a\x06\a45.\x01'&'&#\"#\"\a\x16\x17\x166761\x16\x15\x16323250=\x014'&'&'\"&+\x01\"1\x06\a\x06\a\x06\x15\x1c\x01\x15\x147676\x17\x16\x17\x16\x15\x1c\x02\x150\x15\"1&'&\a\x06\a\x06'\x15\x14\x15\x14323254=\x010\x161\x16767656'&'\"'+\x010\x061\x06\a\x06\a\x06\a054&5&+\x01\"\x05&\a\x06\a\x06\a\x06'&'&'&'&\a\x15\x16\x17\x16\x17\x16\x17\x16\x17230;\x0121676767676&7&'&'&\a\x06\a\x06\a\x14\x15\x1432376\x172\x17\x1e\x01\a\x06\a\x061\x14\x163676767674}\x01\x12\x14\x15\a\x04\x03\b\x1c\x0f\x10\x01\x9b\b\x05\x02\x03\v\t\f\x04\x0e\x02\x02\x01\x0f\x10\b\x01\"\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe0\x14\x1c\xd0\x01\x01\x04$\n\x02\x02\x01\x05\x02\x04\t\x06\a\x05\x01\x04\x06\t\x05\x16\v\x05\x03\x14'\x01\x01\x04\x10\x05\x02\x01\x1d\x03\x04\x06\x15\x06\x02\x03\x02\x04\f\a\x03~\x03\x0f\x0e%\x0f\x01\x02\x01\x03\a\a\x04\x01\x02\x0e\a\v\x01\x06\x02\n\x02\x0e\v\x02\f\x05\x06\x0e\x05\x12\x0e\t\x05\x04\x01\x0e\r\x10\f\x11\a\x06\x8d\x04\t\t\x04\x02\x16\x1d\x18\f\t\x01\b\v\x19\x02\x04\x02\b\x03\x11\x0f\x01\x02\x02\x01\x01\x01\x06\t\a\x01\x8b\x03\x05AH\x16\x15((\x1b\x1a92\x02\x18\x05\x03\x03\x016D #\x15\x15\x06\x03\x02\x12\x02\x16\x17 \x1f/$\x06\x02\x03\x02.\x01\a\a\n\x11\x10\x14\x0e\x02\x01\x03\x01\x01\x13\x12\v\x05\a\x06\x01\x03\x04\n\x01\x02\x02\x02\x02\b\x02\x0f\x06\x01\x01\xf6$#\x02\x01\f\x01\x02\x14\v\x11\x0f\n\x1a\x02\v\x02\r\x03\x10\b\n\x03\x03\x01\x03\x02\f\x01\x05\x04\x04\v\x02\x01\x8b\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c,\x03\x02\tY\x18\x05\x05\x03\f\x04\b\x03\x01\x01\b\x04\a\x01\x01\x01\x13\b\a2e\x02\x02\x04\x04\x01\x02\x01T\b\n\x01\x01\x0f<\x0f\x06\b\x04j\x12\t\a\x06\f\x01\a\x02\x04\x04\x02Y\x05\x06\x11\b\x04\x02\x01\x01\x03\x01\x04\x01\x05\x02\x05\x02\x05\x01\x04\x01\x03\x02\x01\x06\x05\b\x03\a\t\x02\x01\x03\x01\x01\x04\a\x0e\vT\xaf\x02\x01\x04\x04\x01\x02<\x01\x13\x06\x05\x18\x10\x15\x18\x12\x1a\x05\x01\x01\x02\n\x01\x02\x01\x01\x01\x02\x04\x01\x06\xef\x01\x02\x1b\t\x02\x01\x01\x05\x04\x06\x0e\x19\x01\r\x03\x05\x02\x04\x010\x19\v\x06\x03\x02\x01\x03\x05\n\x0f\x19\x04\x02\x03\b\x1d\x04\x03\x02\x01\x01\x03\x03\n\x01\x02\x01\x02\x02\x03\x01\x01\x02\x01\x0f\f\x0f\x17\x02\x02\x02\x01\x01\b\x03\x13\x1c\x03\x06\x05\x00\x02\x00\b\xff\xc0\x018\x01\xc0\x00\x03\x00\a\x00\x00%\a'\x13\x117\a'\x018\x98\x98\x98\x98\x98\x98\xbb]]\x01\x05\xfe\x81\\\xdd\xdd\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xbf\x01\x9e\x00\x0f\x00\x16\x00\x1d\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x17\x1537#\a5\x133'#\x1535\x01\x82\x19##\x18\xfe\xb9\x19##\x19\x1b\xbcQo>BvX\xc0`\x01\x9e#\x19\xfe\xba\x19##\x18\x01G\x19#W\x84\x84tt\xfe\xf0\x83\x83r\x00\x00\x00\x05\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x13\x00\x17\x00\x1b\x00\x1f\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x135#\x1535#\x1575#\x1575#\x15\x01\xaa\t\r\r\t\xfel\t\r\r\t\x8e(\xc8xxxxx\x01\xa0\r\t\xfel\t\r\r\t\x01\x94\t\r\xfe\xbc\xc8\xc8((P((P((\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x02\x00\x12\x002\x00\x007\x17\a%\x11\x14\x06#!\"&5\x11463!2\x16\a4'&'.\x01+\x01\"\a\x06\a\x0e\x01\x1d\x01\x14\x17\x16\x17\x1e\x01;\x012767>\x015\xbb__\x01\x05\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c*\b\x06\x1a\fG\x1e\x1dr\x1c\x1a\x06\x04\x04\b\x06\x1a\fG\x1e\x1dr\x1c\x1a\x06\x04\x04\xf666\xe6\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xc4;\x1d\x1a\x06\x04\x04\b\x06\x1a\r,\x10\x0f<\x1c\x1a\x06\x04\x04\b\a\x19\f,\x10\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00\v\x00\x00\x11!\x11!\x015!\x113535\x01\xc0\xfe@\x01f\xfe\xf4YZ\x01\xa0\xfe@\x01\rY\xfe\xf4YZ\x00\x00\x00\x00\x06\x00\x00\x00\b\x02\x84\x01x\x00\v\x00/\x00[\x00n\x00z\x00\x82\x00\x00\x13\x15\x14+\x01\"=\x014;\x012\a\x16\x1d\x01\x14+\x01\"&=\x016/\x01\"\x0e\x03\x1d\x01\x14+\x01\"5\x114;\x012\x1d\x01632\x05\x16\a\x06\a#\x06#\"'&=\x0146\x17\x163276/\x01&'&7632\x172\x1d\x01\x14'&\"\a\x06\x16\x1f\x01\x16'2\x16\x14\x06#\"'\x15\x14+\x01\"=\x014>\x02\x172654.\x01#\"\x06\x14\x16&2\x16\x14\x06\"&4\xfc\x03)\x03\x03)\x03`\x1c\x02\x1c\x06\n\x01\x18\x17\r\x14\b\x04\x01\x02)\x03\x03)\x02\x17\x1b$\x01\xf7\b\x05\t$\x01\x0e\x16\x19\x17\x0f\x03\x02\x19!\x1f\x06\x05\x125 \x05\x06\x1c\x15&\x1c\x1b\x02\x04!+\b\x05\x01\x06:\x19\xf9.?@-!\x19\x02)\x03\x17# \x0e\x1a$\x10\x1d\x11\x1a$$\x86\x18\x11\x11\x18\x11\x01\"\xc9\x03\x03\xc9\x03\r\x14#\x88\x03\t\a{\x12\x06\x03\x06\x06\v\x02\x02\x88\x03\x03\x01\x17\x02\x02Q\v\x80\x13\x14#\v\x04\b\x05\x10\"\x02\x01\x01\x13\x0e\r\b\x18\x0e\x1d\x1f\x17\x0f\n\x02-\x05\x03\r\a\x03\n\x03\x19\vi?[?\x13Y\x03\x03\xb8\x1d+\x16\t\xab%\x1a\x11\x1c\x11%3%\xf9\x11\x18\x11\x11\x18\x00\a\x00\x00\x00\x17\x02\x80\x01i\x00\a\x00\x18\x00.\x00?\x00f\x00{\x00\x8d\x00\x00\x00\"\x06\x14\x16264%2\x1e\x01\x14\x0e\x01\".\x0154>\x04\a6<\x01.\x04*\x01#\a:\x02>\x05\a732\x17\x16\x06\a\x0e\x05\"#\a73\a262\x1e\x03\x17\x1e\x03\x0e\x04\a#67>\x01'.\x03*\x04#\a#%64.\x05*\x01#\a:\x02>\x04\a732\x17\x16\x06\a\x0e\x04\"\x06\"#\a\x01\xbe\xfc\xb1\xb1\xfc\xb1\xfe\xd1W\x93VV\x93\xae\x93V\x17);GR:\x01\x05\x03\b\x05\f\x06\x0f\x03\x0e\x02\x12\x05\x0e\x05\n\x05\x06\x04x!G \x0e\x0e\b\x14\x05\n\r\b\x13\x06\x1a\x03\t\x95%\t\x04\x12\t\x0e\t\n\b\x03\x02\x04\x01\x01\x01\x01\x04\x03\x05\x03%\x03\x05\a\x01\x03\x01\x02\x03\x04\x05\x04\b\x06\n\x04\x13%\x00\xff\x01\x01\x04\x03\b\x05\f\x06\x0f\x03\x0e\x02\x14\x05\x0f\x05\v\x05\x06x!G \x0e\x0e\t\x13\x04\n\a\r\x06\x12\x06\x17\x03\t\x01X[z[[zk-M\\M--M.\x17,$ \x15\f\x9a\x05\t\a\x05\x04\x02\x01\x01G\x01\x02\x03\x06\a\ve\xa8\x10\x106\x12\x05\a\x04\x02\x01\x01,\xd5-\x01\x01\x01\x03\x03\x03\x03\x04\a\x06\f\t\x13\x0f\x1b\v\x0f\x17\"\x0f\x05\x01\x01\x01\x01`?\x05\t\a\x05\x04\x02\x01\x01G\x02\x02\x06\a\fd\xa8\x10\x106\x12\x04\x06\x05\x02\x02\x01,\x00\x00\x00\x03\x00\f\xff\xc8\x01\xf6\x01\xb8\x00\x1d\x00\x1f\x00'\x00\x00\x05\x16\x17\x06#\"#\"&462\x16\x15\x14\a&'6.\x02#\"\x06\x15\x14\x1e\x0137\x1562\x16\x14\x06\"&4\x01:\n\x03\"#\x01\x01e\x8f\x8fˏ\x14\x02\t\x04\x16*?\"B]+I+\x01%R::R:\x1b\n\x02\n\x8fˏ\x8ff3.\x03\f\"A0\x1e]A+I+\x01\x01\xa9:R::R\x00\a\x00\x00\xff\xee\x02@\x01\x92\x00!\x00-\x009\x00E\x00Q\x00]\x00i\x00\x00\x01\x1e\x01\x1d\x01\x14\x06+\x01\"\x06\a\x06\"'.\x02+\x01\"&=\x0146;\x012\x16\x17>\x013\x0354+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x0554+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x02\x10\x14\x1c\x1c\x14ZI>\f\x01\x04\x01\b\x1c=2Z\x14\x1c\x1c\x14\x8c$8\b\b8$\x92\x03\xa1\x03\x03\xa0\x04\x03\xa1\x03\x03\xa0\x04\x03\xa1\x03\x03\xa0\x04\x01\x03\x03\xa0\x04\x04\xa0\x03\x03\xa0\x04\x04\xa0\x03\x03\xa0\x04\x04\xa0\x03\x01\x92\x01\x1c\x14\xf5\x14\x1c#(\x02\x02\x1b\x1f\x11\x1c\x14\xf6\x13\x1d.##.\xfe\xf6\x17\x03\x03\x17\x03@\x17\x03\x03\x17\x03@\x17\x03\x03\x17\x04v\x17\x04\x04\x17\x03@\x17\x04\x04\x17\x03@\x17\x03\x03\x17\x04\x00\b\xff\xf2\xff\xbc\x01\x89\x01\xc0\x00\x12\x00'\x00=\x00O\x00h\x00v\x00\x82\x00\x92\x00\x00%\x06'&767>\x01;\x010\a\x06\x17\x16?\x01\x06'.\x0367>\x03'0\x17\x16\a\x0e\x01\x1e\x027\x0e\x02\x1e\x01\x17\x16\x17\x16\x06\x0f\x01>\x03&'&76\x136'&'\"\a\x06\a676\x17\x16\a\x06\a6\x17\x16\a\x06'&'&7672\x17\"\a\x06\a\x14\x17\x1667>\x01/\x010\a\x06\x17\x167\x16\x17\x06'&76\x17>\x01?\x01\x0e\x01'&'\x1667\x16\x17\x06'&767\x0e\x02\x14\x16\x17\x16\x01\x16Of9\x04\x01\b\x14(\v\n)\x1d%)RM\r`\x10\x16\x15\t\x01\a\v0%\x16\a\n\x15R\x17\x15\x06\f\x16w %\x11\x02\a\t\x03\x01\v\x0f\x0f\x0f\x01\x04\b\x04\x04\a=e\x1a\x14C\n\x06\x16\x04\x05\x05\x06\x04\x05!\x14\x14\x19\x15/\x010\x1b'G\x8822+\x1a\x19!\v\x04\a\v\x1e\x02\x05)\xcd.\x0e\b\x03\xe3\x05\x02\x1546\x0e\x0fEF$\x02\x01\xcb\x1f&\x04\x03\x02\x98S4\x14(\x89\r\t\fYK$\x03\x02\x19\x01\x02\x04\t\nB\x87\x15\t\x05\f\x03\x04\n\t\f\r\x05\x05\x06\v\x06\x19\x0f\x16\x1a\x16\x17\n\x10(\x1c2\x1d\x107@\x13\"\x1e\x17\x1e\xa6\x12\x1d\x14\x17\r\r\x03\x02\x15 \n\n\x01\x04\f\f\x11\bG2\f\xfe\xf9##\x14\x02\x01\x01\x02\x05\x02\f\x18\x17\x1c\x16\r\x01<\f\x10\x1c\x06\x03\b\a\x11\x12\x01\x03\x02\a\t\x03\x02\x10\x02\x0e\x05\n\x03-\x06\a\x02\x06\n\b\x05\x1e\x11\b\r\tZ\x06\x0f\x04\x04\x1d\x17\x06\x03\n\b\x01\x97\t\x04\x1a\x0f\a\r\t\b\x01\x02\x06\x05\x05\x01\a\x00\x00\x00\x00\x01\x00\x00\xff\xd8\x02\x80\x01\xa8\x00G\x00\x00\x01\x0e\x04\x15\x0e\x01\a\x0e\x021\x06\a&\x0e\x06\a7>\x04\x16\x170\x161\x16\x0f\x01\x06'&\x0e\x02\a\".\x0154327>\x0132\x1e\x03\x1770>\x027>\x02\x02\x80\x17\"\x14\v\b\x03\x0e\a\x05\x19$\r\x1d\x14&\x1c'\x13,\f5\x06+\x0e:\x193'<#\x02\a\x045\x05\t)bBU\x1c!1\x10\x02&A5f7\x03\n\x1b\x16\x18\x05\x1c\x11\x12\"\x12\x172\x1a\x01\xa7\x0f\x1d\x19\x11\x11\x01\x05B\r\n\x14\x14\t7\x01\x04\x03\x0f\x06\x18\a \x04\x11\x05\x18\t\x0e\x03\x01\x05\x01\x04\x06`\b\x02\t\x04\v\f\x01\x11\x10\x02\x02\x0ffX\x01\a\v\x1a\x111!\"4\x16\x1e(\x0e\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\x0e\x00\x14\x00 \x00-\x00\x00%\x15#\x15#5#546;\x012\x17\x16'42\x15\x14\"72\x16\x15\x14\x06#\"&546\x17\"\x06\x15\x14\x1632>\x0154&\x01;\x1cM\x1d\n\x06f\x06\x05\x05fEE#i\x8f\x94df\x92\x8ejVuwT4]:v\xfefxxf\x06\n\x05\x059##\"\x9d\x90hk\x8d\x91ge\x93-zQSx2^;Uv\x00\x00\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00)\x00B\x00\x00\x132\x16\x15\x14\x06#\"&546\a\x06\x15\x14\x1632>\x057'\x0e\x01\a\x15#5\"'7\x1e\x0174'&7\"\a\x17>\x01753\x15\x16\x17\a&\a\x06\x17\x16\x1f\x01654'&\xf8i\x8f\x94df\x92\x8eV\vxS\x19/\"\x1f\x13\x11\x04\x02]\x06'\x18\x1d)\"\"\x19=\x01\a\x1c\x01j@_\a$\x14\x1d\"\x1c #\x1c\x10\t0-\u007f\x06;;\x01\xb8\x8fik\x8d\x92fe\x93\xb5\x1f$Sw\v\x11\x18\x13\x17\x06\x04)\x19\x1c\x02&&\x1e\"\x16\x01\x19\n\x06\f\xde]+\x16\x15\x01''\x01\x15\"\x19\x0f\b\r\x15\x149\x1a\x1bV:<\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\x0e\x001\x003\x00M\x00\x00\x132\x16\x15\x14\x0e\x03#\"&546\x132>\x03741'#\x16327\x17\x06#\"&'#53<\x015#53'\x06\x15\x14\x167#7\x17654&#\"\a\x1767632\x17\a&#\"\a\x06\a\x173\x15\xf8i\x8f\x1a0>J&f\x92\x8ej!<%\"\n\x05\x80[\f8\x1b\x14\n\x1c%-G\b\x1b\x17\x17\x04A\vxC\x01N\x88\x06vUl>Q\a\a&:\"\x1c\v\x18\x16!\x13\x04\x04\x1cF\x01\xb8\x8fi+N<,\x17\x92fe\x93\xfe=\x15\x19#\x0f\b\x0182\v.\x1050\x1e\t\t\x01\x1e\x1d\x1f#Sx\xbf\x13<\x19\x1cUv]$\v\t*\f0\n\x16\x05\t\r\x1e\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00!\x00%\x00:\x00\x00\x132\x16\x15\x14\x06#\"&546\x1327'\x15#\x15#5#535'#53'\x06\x15\x14\x167'\a\x157\x17654&#\"\x0e\x02\a\x17'3\x1f\x0173\a3\xf8i\x8f\x94df\x92\x8ejlDR@=@@\x06:\x1c\u007f\tx\xab7\x03@e\bvU :*\x1e\vQ\x1bB(\x17+B?&\x01\xb8\x90hk\x8d\x92fe\x93\xfe=c$$88'\x12\f'8\x1c Sx\x8a\x18\x06\x123-\x1c\x1fUv\x11\x1f\x1f\x13$3V\n`t\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00\x18\x00\x1c\x00 \x00\x00\x132\x16\x15\x14\x06#\"&546\x17\"\x06\x15\x14\x1632>\x0154&\x17\x15#5\x17\x15#5\xf8i\x8f\x94df\x92\x8ejVuwT4]:v\t\xb4\xb4\xb4\x01\xb8\x90hk\x8d\x91ge\x93-zQSx2^;Uv\x90++P**\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00#\x007\x00\x00\x122\x16\x14\x06\"&4\x132>\x017&'\x14\x1e\x01327\x17\x06#\".\x02547'\x06\x1e\x02703654&#\"\x06\a\x17632\x17\a&\x06\a\x91Α\x91Α\xf8%E5\x12\x01\xd9\v\x19\x12\x15\x0f$!.\x14&'\x18\x04O\x13\x133X\xf5\x01\awS4Y\x1bJ!D. (\x0e0\r\x01\xb8\x91Α\x91\xce\xfe\xcf\x1b/\x1f\x01`\x11 \x17\x11,\x1d\f\x1b4#\x11\x10#0`L0\x96\x1a\x1aSw2*!4\x1c)\x10\x04\x18\x00\x00\x00\x00\x06\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00\x18\x00\x1e\x00(\x004\x00;\x00\x00\x132\x16\x15\x14\x06#\"&546\x132>\x0154&#\"\x06\x15\x14\x16\x132\x14+\x015\x17254.\x02+\x01\x15'2\x15\x14\x0e\x02+\x01\x15#5\x1726&+\x01\x15\xf8i\x8f\x94df\x92\x8ej4]:vUVuw\x99FF56\"\t\x0f\x06\x05\x13^2\x03\n\x19\x13\x1b\"?\r\f\f\x0e\x1c\x01\xb8\x90hk\x8d\x91ge\x93\xfe=2^;UvzQSx\x01\x11\x89\x89l'\x0f\x12\x06\x01Ol.\x06\f\x12\v,\x89C\x15\x14)\x00\x06\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00\x18\x00,\x003\x007\x00;\x00\x00\x132\x16\x15\x14\x06#\"&546\x17\"\x06\x15\x14\x1632>\x0154&\x1f\x01\x15\x0e\x02#\".\x01'\a'57457\x17\x15\a5#5'\x15\x17?\x01'\a\x175\a\x15\xf8i\x8f\x94df\x92\x8ejVuwT4]:vM\x05\x03 \x1e\x02\x03:D\t@?;C\x98\x15\x01qq\b(%'Y-\x01\xb8\x90hk\x8d\x91ge\x93-zQSx2^;Uv\xcf\x03F\x01\x0e\r\x18\x1c\x04\x1b\x1c@\x18\x01F\x1d>>f,\x02.-/:\x10\x10\x115+\x13+\x00\x00\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00\x18\x00<\x00\x00\x132\x16\x15\x14\x06#\"&546\x17\"\x06\x15\x14\x1632>\x0154&\a>\x0332\x1e\x02\x15\x14\x0e\x01#\".\x01'3\x1632654.\x03#\"\a3\a'\xf8i\x8f\x94df\x92\x8ejVuwT4]:v\xc3\x04\x1b$\x1c\x0e#5\x1b\f\x1b<*\x16+'\x05>\x034\x16$\v\r\x14\b\x052\x06\x1211\x01\xb8\x90hk\x8d\x91ge\x93-zQSx2^;Uv\xa8\x1d*\x12\a\x1b++\x16!;(\x0f.$.(+\x17\"\x0f\b\x01,11\x00\x00\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00\x18\x00s\x00\x00\x132\x16\x15\x14\x06#\"&546\x17\"\x06\x15\x14\x1632>\x0154&\a2\x16\x15\x17742\x15\x14\x177632\x15\x1776;\x01\x15#\a\x06&/\x01\a\x06#\"'4'\a\x06#\"'4'\a\x14\"5'\x06\x15\x06#\"'0&5'\a\x06#\"/\x01\x06+\x015376\x16\x1f\x0174632\x15\x1774>\x012\x1e\x01\x15\x1776\xf8i\x8f\x94df\x92\x8ejVuwT4]:vQ\x04\b\x06\x05\x15\x06\x06\x01\t\n\f\x05\x03\b:3\x13\x03\x10\x01\x04\b\x01\t\n\x01\x06\x05\x02\t\t\x01\x06\x06\x15\x06\x05\x02\t\t\x01\x01\x06\x05\x01\n\b\x02\v\x04\a4-\x0e\x03\x0f\x02\x03\b\x06\x05\n\x05\a\x05\x04\x02\x04\x06\x05\x06\x01\x01\xb8\x90hk\x8d\x91ge\x93-zQSx2^;Uv5\x05\x06l<\n\n\x02P@\n\ta\r\a\x16,\b\x02\t \\\n\n\x01LH\t\t\x01W_\f\fWT\x01\n\n\x01\x01Y9\t\tL\b\x15\x1c\a\x02\b\x14b\x04\x06\fE\\\x05\x05\x01\x01\x05\x05Pb\n\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00\x18\x00_\x00s\x00\x00\x132\x16\x15\x14\x06#\"&546\x17\"\x06\x15\x14\x1632>\x0154&\x173\x15#\a\x06&/\x01\a\x06\"/\x01\a\x06\"5'\a\x14\"/\x01\a\x06\"/\x01\a\x06\"/\x01\x06+\x015376\x16\x1f\x01762\x1f\x01742\x1f\x01762\x15\x177>\x01\x1f\x01742\x1f\x0176\a24+\x0154\"\x1d\x01#\"\x14;\x01\x15\x142=\x01\xf8i\x8f\x94df\x92\x8ejVuwT4]:v\x16;3\x12\x03\x12\x01\x03\x06\x01\x16\x01\x04\x05\x01\x16\x05\x05\x16\x01\x05\x04\x01\x16\x01\x05\x04\x01\x15\x01\v\x03\a3+\x0e\x03\x11\x02\x01\b\x01\x15\x01\x04\x06\x16\x01\x04\x05\x01\x16\x06\x04\x01\x15\x01\x05\x05\x15\x02\v\x04\x02F\b\b\x15\x10\x15\b\b\x15\x10\x01\xb8\x90hk\x8d\x91ge\x93-zQSx2^;Uv\xcd\x17,\b\x03\b\x17S\v\v@:\v\vHQ\v\vIF\v\vN+\v\nI\x06\x17\x1c\a\x02\t\fZ\n\n9P\v\vCT\v\v^-\n\x01\vE3\v\n]\t\b\x06\x10\x15\b\b\x15\x10\x15\b\b\x15\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00\x18\x004\x00<\x00@\x00\x00\x132\x16\x15\x14\x06#\"&546\x17\"\x06\x15\x14\x1632>\x0154&\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01#\".\x02=\x014732\x1e\x01\x1d\x01\a354735#\x17#\x153\xf8i\x8f\x94df\x92\x8ejVuwT4]:v\x10\x06\b\b\x06\x87\x05\b6\x03\x05\x04\x02\f\x89\x03\a\x03\x87)\f7l\xb0ll\x01\xb8\x90hk\x8d\x91ge\x93-zQSx2^;Uv\x84\b\x06\xb6\x06\b\b\x066\x02\x03\x06\x02\xb7\v\x03\x04\x06\x046se\f\x02(C\x9c\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00\x18\x00(\x001\x009\x00\x00\x132\x16\x15\x14\x06#\"&546\x17\"\x06\x15\x14\x1632>\x0154&\x062\x1e\x02\x14\x0e\x02\".\x024>\x01\x17\"\x15\x14\x1776'&\x17\a\x06\x163254\xf8i\x8f\x94df\x92\x8ejVuwT4]:vr:*\x16\t\t\x16*:*\x16\t\t\x16G,\x026\b\v\x05%=\t\x10\r,\x01\xb8\x90hk\x8d\x91ge\x93-zQSx2^;Uv<\x1a+/6/+\x1a\x1a+/6/+\x1cY\x14\x0ed\r\t\x01.i\r\x0eY\x19\x00\x00\x00\x00\x05\x00\x00\x00?\x02\x80\x01A\x009\x00A\x00M\x00a\x00f\x00\x00\x013\a#7'\x16\x1d\x01\x14\x17#&5\x06#\"&547\x0e\x01#\"'\x14\a#6=\x013\x15632\x16\x15\x14\a672354#\"\a#632\x17'3\x17\x04264&\"\x06\x1475\"\a\x06\x15\x14\x1e\x01326%\x1e\x01673\x0e\x02#\"&54632\x16\x1d\x01'.\x01\x06\a\x02^\"c$\x1c=\x05\x01\x1e\x01\x15)\x1d \x01\x06(\x1b'\x14\x01 \x02 \x14&\x1e.\x02\nC\x12\x18)!\x02\"\x04C0\x10\v%7\xfe\xb6-\x1c\x1c-\x1b\xfb\x18\x10/\a\x10\f\x19\x1b\xfed\x01)+\x06!\x03\x19\x1d\x11*)*)$+\"\x01--\x04\x01\x02\xc26t\n\x0eB\x0f\v\t\v\x1a\x1a\x13\x05\x04\x18\x1e\x19\t\n\x16\v\xa9P\x18($\t\b!\x02\x04!\x16+\x1a\x14m\x0f\x1e0\x1e\x1e0\x12\x03\x01\x01\x18\a\v\b\x1a\x15\x1b\x18\f\x11\x10\x16\b)!$*&&\b\x15\x1a\x16\x15\x1b\x00\x00\x00\x05\x00\x0e\xff\xdc\x01\xb2\x01\xa0\x00\a\x00O\x00`\x00\x8b\x00\x93\x00\x00$2\x16\x14\x06\"&47\x16\x15\x14\a\x06'.\x017654'\"\x15\x061\x0e\x01'&\x06\a7\a\x16\x17\x16\a\x06'&'\a54>\x02767'.\x01?\x0147632\x172\x176?\x01\x17\x06\x176\x17\x1e\x02\x14\a\x16\x17\x16'67'&\x0f\x01\x14\x163\x17&545'7\x17654/\x01&#\"\a\x06\x15\x14\x1f\x01\a\x06\x15\x14\x17\x16\x17\x1632?\x01\x17\a\x06\x15\x14\x1f\x01\x1632?\x01\x17\x1632\x062\x16\x14\x06\"&4\x01\x17\x0f\n\n\x0f\v\x82$\x0f\x05\r\x05\x05\x01\x0f\x02\x01\x01\r.\x1a<\x84,\x18.\x03\f\a\n\r\a\n\x05\x17\x02\v\x1b\x17\x14\x1a\t\x15\x1c\x01\x03\x0f\r\x16\x02(\x04\x04\b\x10\x06\x17\r\x03\x0e\x13\x0e\x19\x0e\x06\n\t7\xe0\x03\x04\x1d\f\x01\x02\x06\x05\x17\x01\r\x02\xa4\x04\x02R\x03\x04\x04\x03\x04\x02\x13\x11\x03\x02\x01\x03\x02\x03\x03\x02\x11\x0e\"\x03\x01\x10\x03\x03\x03\x02#\t\x04\x04\x04l\x0f\n\n\x0f\v\x1d\v\x0e\v\v\x0e\x9f5:0'\r\x02\x01\n\x05&,\x0e\x0e\x01\x02\x13\f\a\x11\x17!K<\x1c\x19\x10\x04\x06\r\x12\x13\x1d!\x1d\"70\x17\x15\x0e\x01\x01\x1e\x15$\x12\x0f\r\x02\x01\f\x16\b\x0e\x19\n\x01\x06\x05\x18\x1e\x1f\x0e\x04\x04\x18]\n\n\x01\x01\f%\x05\a\x02\x06\x06\x04\x04\x01\x15\xad\x03\x05\x03\x03`\x04\x03\x03\x04\x03\x03\x16\r\x03\x03\x03\x02\x01\x03\x03\x02\r\x11\x1b\x02\x04\x02\x02\x13\x03\x02\x1b\v\x04t\v\x0e\v\v\x0e\x00\x00\x00\x00\x02\x00\x0e\xff\xdd\x01\xb2\x01\xa1\x004\x00`\x00\x00\x01\x16\a\x0e\x01\a\x06'\x14\x17\x1e\x03\x172>\x0473\x17\x06\a\x06'.\x0645454>\x02?\x0162\x17\x1e\x04\a<\x03.\x03'&\x06\x0f\x01'.\x01\a\x0e\x03\x1c\x02\x1535476\x17\x16\x1d\x0135476\x17\x16\x1d\x01\x01\xb1\x01\n\x05A)fM\x01\x02\x10\x1d\x17\x14\b\x11\x0f\x0e\n\b\x03\x02\x01\x1c316\x14\x1f\x16\x0f\n\x06\x02\r\x13\x13\x06\a.\xc5/\x03\b\x16\x11\x0eK\x01\x02\x05\x06\x05\x12D\x11\f\f\x11D\x12\x06\x06\x05\x02/\x18\x18\f\x04.\x1a\x17\v\x04\x01\rH2\x18,\x05\f\x13\a\a\x11\x17\n\x03\x01\x01\x02\x02\x02\x02\x01%\x0f\x03\x02\x0e\x05\x13\x1e\x1c-\x1f7\x1d\x1d\f\x06\x1b.\x1b\x13\x03\x04\x15\x15\x02\x05\x14\x1a.\x98\x12-\x18\x1d\x0e\x12\v\n\x06\x16\x01\x1b\x14\x14\x1a\x02\x16\x06\v\x12\r \x174\x14r\x1f\x05\x06\x19\v\r??$\a\x06\x16\b\fr\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x02E\x01\xa0\x00\x13\x002\x00E\x00K\x00\x00%\x14\a\x17#'\x06\a\x15#5.\x0154632\x1e\x01\x05\x14\x16\x1753:\x01\x1e\x04\x15\x14\x0e\x02\x0f\x01\x16\x17\x16\x17654&#\"\x06\x172\x162>\x0354.\x04*\x01\x06#\a\x1527&#\x02EXCp(!%cf\x89\xaaxO\x86N\xfe-E8\xc7\x02\a\x13\x11\x15\x0f\n\x12\x19\x1a\t\t\x12\n\x03\x04Ft`[\x82\xe1\b\x19\r\x13\t\n\x04\x02\x05\x05\v\t\x0f\f\x15\b\x01\x1c\x17\r\v\xddR9rK\t\x04>>\flGQr4ZC'A\x10\xd0\x04\x06\r\x12\x1d\x12\x18%\x12\v\x01\x01\x06\x05\x01\x03#HBCN]\x01\x01\x03\x06\v\b\x06\b\x06\x04\x02\x02\x01\x80\x16\x03\x13\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00<\x00_\x00i\x00\x00\x11!\x11!%5\"'&'>\x0154&#\"\x06'\x152\x162\x1e\x02\x14\x16\x1d\x01\x14\x06\x14\x0e\x04#\x1523235\".\x054=\x01\x163\x16\x17\x1e\x0172>\x03<\x011#\x153\x14#\"=\x014632\x16\x1f\x0174.\x01#\"\x06\x1d\x01\x14\x16\a\"'5632\x15\x14\x06\x01\xc0\xfe@\x01\x06\r\x0e\x17\x13\x11\x16\x1f\x19\x02<\t\x02\a\x02\x06\x01\x03\x01\x01\x03\x02\x05\x02\a\x02\x1e\x04\x11\x12\x02\t\x02\x06\x02\x03\x01\x06\x0f\x17\x13\v$\x1a\b\f\a\x05\x02\x1e\x12\x16\x12\r\a\x06\n\x02\x02\n\x03\x10\v\x11\x11\x10d\n\n\x06\x10%\x15\x01\xa0\xfe@r\a\x0f\x19!\x04\x1c\x10\x16\x18\x02\x01\b\x02\x02\x02\x03\x04\a\x04m\x05\x06\x04\x04\x02\x01\x01\x01\b\b\x01\x01\x01\x02\x03\x05\x06\x05.\x01*\x15\r\x06\x8c\x02\b\x05\x0e\x03\x11\n\x1b\x17\x1b\t\v\x06\x04\x03\b\x02\x05\n\x13\v \x0e\x12-\x01E\x01#\x10\x14\x00\x00\x04\x00\x00\xff\xbc\x02\x00\x01\xe0\x00\x0e\x00#\x00[\x00g\x00\x007\x06\a\x06'&'&7>\x01\x17\x16\x17\x16\x17\x16\x17\x14\x0e\x01\a\x06'&'47>\x0376327\x14\a\x0e\x01'&5<\x025&'&\"\x0e\x01\a\x0e\x01\x16\a\x06#\x06&=\x0176767676'&7676\x170\x17\x16\a\x06\x17\x1e\x01\x17\x16\x17\x16\a'.\x0167276\x17\x16\x06\xf4\x03\x13\v3\x1d\x0e\x16\a\x04\x1a\x10\x1c$#\xca\v\x01\x10\x0f\x10(f4\x012,E%\x11\x05\x01\x04\x02?\x01\x03 \x12\t\x03d(\\N;\b\x03\x01\x01\x01\x01\v\x17\x1d\x01\x03\x16\x05\x01\t\x1e\x04\x03\x04\a,:\x90m\x01\x0e\b\x01\x03\r\x17\x04\x01\x05\x1a\x9f4\x0e\x0f\x12!\x01\x04Q\x02\x01!e\x11\a\x04\x03\x02\x16\"(\x12\r\b\x0e!!%\b\x18\x17$\x0e\f\x1f\x04\x03\a\a\x04\x03\x1e,\x1e\x0e\x04y.\x06\x12\x16\x03\x03\f\t\"\x1d\fs7\x16%G.\r\x1f+'\v\x01\x1b\x17\x15\x1a\x18\n\x03\x051+\x05\x04\a\b1\x12,i\x01\f\v\x01\x04\x117\x16\x04\x02\r\xa1\b\x04\x10\x1c\r\x02 *\x1a%\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00c\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%\x06\a'\x17\x06\a'\x17\x06\a'\x17\x06\"'7\a&'7\a&'7\a&'7\a&47\x17'67\x17'67\x17'67\x17'62\x17\a7\x16\x17\a7\x16\x17\a7\x16\x17\a7\x16\x14\a'\x91Α\x91Α\x95ƍ\x8dƍ\x95\xb6\x81\x81\xb6\x81\x84\xb0||\xb0|\x01\x8e\x06\x0eJ=\x10\x157$\x17\x19\x1c\x05\r\x1a\r\x04\x1b\x1a\x17$6\x16\x10>J\x0e\x06MR\x02\x02SN\x06\x0eJ=\x10\x157$\x17\x19\x1b\x04\r\x1a\r\x05\x1c\x19\x17$7\x15\x10=J\r\aNS\x01\x01R\x01\xb8\x91Α\x91\xce\xfe\xa9\x8dƍ\x8d\xc6\x01?\x81\xb6\x81\x81\xb6\xfe\xd1|\xb0||\xb0'\x19\x17$7\x15\x10=J\x0e\x06NS\x02\x02SN\x06\x0eJ>\x11\x157$\x17\x19\x1c\x05\r\x1a\r\x04\x1b\x1a\x17$6\x16\x10>J\x0e\x06MR\x02\x02RM\x06\x0eJ>\x10\x166#\x16\x1a\x1b\x04\r\x1a\r\x05\x00\x00\x04\x00\x19\xff\xc0\x01'\x01\xc0\x00\x03\x00\v\x00\x0f\x00\x17\x00\x00\x13\a'?\x01\x15\a\x17\x15/\x01?\x02\x17\x0f\x015\x1f\x01\x0f\x0157`$##T))\x1433d#$$T\x1533\x15)\x01\x1c,,+y\xd3--\xd3\xc6::\"++,\x03\xd3\xc6::\xc6\xd3-\x00\v\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x16\x00\x1c\x00D\x00L\x00R\x00X\x00^\x00d\x00j\x00\x00\x04\"&462\x16\x14\x02\"\x06\x14\x16264'\x16\x17\a.\x01/\x01\x15\x06\a'6\x173\x15\x16\x177\x17\a\x16\x173\x15#\x06\a\x17\a'\x06\a\x15#5&'\a'7&'#5367'7\x176?\x01\x16\x17#.\x02'%\x17\x06\a#6\a3\x16\x17\a&%3\x06\a'6\x05\x16\x17\x15&'7\x17\x06\a56\x01_Α\x91Α\x98\xc0\x87\x87\xc0\x87\xcb8-\x12\x0f1\x138.%\x12-D \x0e\r;\x16;\t\x03RR\x03\t;\x16;\r\x0e \x0e\r;\x16;\t\x03RR\x03\t;\x16;\f\x0f\xb8\"\b\x19\x02\n\x0f\b\xfe\xc2\x12\x1c\a\x19\b\b\x19\a\x1c\x12\"\x01\x83\x19\b\"\x12\x1c\xfe\xdf%.8-\xf0\x12-8.8\x91Α\x91\xce\x01N\x87\xc0\x87\x87\xc0r\b\"\x12\f\x14\x03\x19\x19\a\x1c\x12\"+R\x03\t;\x16;\r\x0e\x1f\x0f\r;\x16;\t\x03RR\x04\b;\x16;\r\x0e \x0e\r;\x16;\t\x034-8\f \x1d\n\x12\x12%.8p.%\x12-88-\x12%L\x1c\a\x19\b\"\x12\x12\"\b\x19\a\x00\x00\x00\x00\b\x00\x00\xff\xe3\x02\x00\x01\x9f\x00\x1a\x002\x00J\x00s\x00{\x00\x83\x00\x8b\x00\xaf\x00\x00\x133\x15\x1e\x01\x17&=\x014'&'&\"\a\x06\a\x06\x17\x15\x14\a>\x027\a\x06\a\x06\a\x06#C\x1626&'67\x1e\x016&'67\x16\x17\x0e\x01\x1667\x16\x17\x0e\x01\x1627\x16\x17\"\a\"'&'.\x012\x1d\x01\x14\x1632\x1e\x01\x17\x15\x06\a.\x01#\x0e\x01\a\x06\"'.\x02#\"\x06\a&'5>\x02326=\x01\x16\"\x06\x14\x16264&2\x16\x14\x06\"&46\"\x06\x14\x16264\a2\x17\x16\x173\x1627367632\x17\x06\a&#\x0e\x01\a\x15\x06\"'5.\x01'\"\a&'6\xfa\f\n\x0e\x01\x13\x03\x01\x01\x03\b\x03\x01\x01\x03\x01\x14\x01\x06\v\a\x1a\x03\x01&\b\r\x1c\f\x0e\x03\t\v\x15\a\v\v\r\x11\b\x12\f\x01\a\rO\x0f\r\a\x01\f\x12\b\x11\r\v\v\a\x15\v\t\x03\x0e\f\x1c\r\b&\x01)\f=!(&?\x0f\x0e\x13\n:(!1\t\f\x18\f\x06\x19&\x16(:\n\x13\x0e\x0f?&(!=\x17\"\x18\x18\"\x187\x1c\x13\x13\x1c\x13,\x16\x10\x10\x16\x10\x8e\x1b\x16\x17\x1a\x01\b\x10\b\x01\x1a\x17\x16\x1b\x14\n\x02\x05\x0e\r\x1f*\x06\x10 \x10\x06*\x1f\r\x0e\x05\x02\n\x01\x9f\x1b\x0fxP\x1a\x16\x11\b\b\x04\x02\x03\x03\x02\x04\b\b\x11\x16\x1a5[=\ny!'\x13)\x04\x06\x16\x14\x06\v\x12\a\x12\r\f\v\a\x16\f\x06\x03\x03\x06\f\x16\a\v\f\r\x12\a\x12\v\x06\x14\x16\x06\x04)\x13&\x19\x14\x11\x1f@\x01\x0e\x0e\x02\x1a\x16\x11\x18\x01\x17\x11\x03\x03\v\x12\f\x18\x11\x16\x1a\x02\x0e\x0e\x01@\x1f\x11L\x18\"\x18\x18\"\x10\x13\x1c\x13\x13\x1c\r\x10\x16\x10\x10\x163\n\x1d\x04\x01\x01\x04\x1d\n\x02\x13\n\x04\x01+\x1f\x05\x03\x03\x05\x1f+\x01\x04\n\x13\x02\x00\x00\x00\x00\x01\x00\x00\xff\xde\x01\xc1\x01\xa6\x00r\x00\x00%>\x027\x14\x0e\x05\a#.\x05/\x01\x1e\x01\x1f\x01.\x02>\x02?\x01\x0e\x01\x1e\x01\x1f\x01.\x01>\x01?\x01\x0e\x01\x1e\x01\x1f\x01\x0e\x01\x1e\x03\x1f\x0167\a7'7'\x17\x12=\x01\x155\x15\x14\x137\a\x17\a\x17&'\x17>\x03&'>\x03&'\x1e\x05\x06\a>\x034'\x1e\x03\x06\x01\x8e\x03\n\x1b\n\x02\f\x11#,F*\x04*E-\"\x12\v\x01\x02\v\x18\b\a\x14\x17\x05\x02\n\n\x04\x04\f\x01\x11\x15\b\t\x1d\n\x1d&\x10\x10\x1b\x12\x0e\x15\n\n\x11\v\t\x15\x1b\x17\t\b\x01\x01\"\x18??\x14\x1f\b\b\x1f\x14??\x18\x1e\x04\x02\x06\x14,\x19\x02\x18\x04\r\x1b\n\x11\x1b\x03\f\x1e\x18\x16\a\x10\x16\x04\v\x19\x0e\f\x03\t\x11\x03\x17J\x02\t(\x1b\x04\r&#+\x1e\x16\x01\x01\x15!''!\n\n\x1b'\x06\x06\x195,* \x19\x06\a\x185)#\t\t0[>0\v\v\x1460+\r\f!<-'\x1a\x13\x04\x04\x11D$0\t\t7.\x01.\x05\x03\x01\x01\x03\x06\xfe\xd3.7\t\t0 \x04U\x03\v*1P-\x05\x101-7\x14\x02\b\x1b\x1f13D#\x03\r&'5\x19\x05\x1044J\x00\x05\x00\x1b\xff\xbf\x01\xa6\x01\xc0\x01{\x01\x94\x01\xb0\x01\xc5\x01\xd7\x00\x00\x17&76567<\x01'45&'&54545&567>\x01767>\x01�\x06\a\x06\a\x06\x14\x1e\x01\x15\x14\x15\x06\a\x14\a\x14\a\x06'&5&'&7674'&'&\a\x06\a\x15\x17\x16\x17\x16\x15\x14\x17\x16\x06\x17\x16\x17\x14\x17\x16\x15\x14\a\x06\x15\x14\x15\x06\a\x06'&676567>\x0175'&'&/\x017<\x015/\x01.\x02454'&'\"'&'&?\x01'&'&'414767676\x16\x17\x16\a\x06\x15\x14\x17\x16\x17\x16\x17\x16\x17\x16\x17\x16367654'45&5&'&'&'&'&'&'&'&/\x015'7>\x0132\x17\x16\x14\a\x06\a\x14\a\x06\x15\x16\x17\x1e\x01\a\x06\x15\x17674&'&76\x172763676\x17\x1e\x01\x17\x1e\x01?\x0132?\x01\x17\x1e\x01\x06\x17\x16\x17\x16\x15\x16\a\x06\x15\x06\x15\x06\a\x06#\"\x15\x06\a\x06\a\x06\a\x06\a\x06\a\x06\a\x0e\x01\a\x06\x16\x17\x16\a\x06\x17\x16\a\x06\x15\x14\x16367>\x01767676767467676\x15\x14\x15\x06\a\x15\x1f\x01\x15\x14\x17\x15\a\x06\a\x06\a\x06\x0f\x02\x06\a\x06\x15\x141\x14\x17\x16\x17\x1e\x01\x14\a\x06#\"\a\x06\x15\x06\a\x06\x17\x16\x0f\x01\x15\x14\x17\x16\x15\x06\x17\x14\x1e\x01\x1d\x01\a\x0e\x027&54'&54'&5476\x15\x16\x17\x16\x14\a\x06\x15\x16\a\x06'.\x01'4'4'&54'&436\x1f\x01\x15\x06\x15\x14\x06\a\x06\x0f\x010\x03\x1e\x04\x17\x16\x17\x06\a\x06\x1e\x017\x06&'.\x016\x17\x166'&'67\x1e\x04\x17\x16\x0e\x01&\xe8\x02\x01\x01\x02\x02\x01\x01\x02\x01\x04\x01\x01\x05\a\x02\x01\x03\x01\x01\x01\x01\x04\x06\f\x01\x01\x01\x03\x01\x01\x01\x02\x01\x01\x01\x01\x02\x05\x04\x01\x01\b\b\x02\x03\x02\x02\x01\x02\t\x05\x04\x02\x01\x01\x02\x01\x01\x02\x02\x01\x02\x01\x02\x01\v\x04\x02\x02\x01\x01\x02\x01\x01\x01\x02\x02\v\v\x02\x02\x01\x01\x04\x02\x02\x02\x01\x01\a\n\x0e\f\x02\x02\x02\x01\x02\x01\x01\x04\x02\x01\x03\x01\x05\x06\x02\x06\x01\x02\x02\x01\x03\x04\v\x02\x02\x11\x06\b\x02\x03\x03\x02\x01\x02\x02\x01\x04\x01\x03\x02\x02\n\b\x06\x01\x05\x04\x01\x01\x01\t\x03\x02\x01\a\a\b\a\n\x02\x01\x01\x01\x01\x05\x02\x05\a\x05\x01\x03\x01\v\a\x02\x0f\x01\x02\b\x04\x05\x02\x05\x04\x04\x03\x03\x04\x02\x03\x06\x03\x03\x05\x04\x05\n\v\x05\x04\x03\x02\x05\x02\x01\x01\x01\x01\x01\x03\a\x01\x06\t\v\x05\x04\x02\x02\x03\x02\x01\x01\x02\x01\x03\x04\x06\x02\x01\x02\x01\x02\x01\x01\x02\x02\x02\x04\x02\x02\x01\x03\x02\x02\x03\x01\x05\a\x05\x05\x05\x05\t\x06\t\x04\x05\x01\x01\x04\x05\x01\x01\x04\x05\x01\x06\f\x05\x03\x01\x04\x05\x02\a\a\x02\x05\x02\x01\x01\x01\x02\x01\x01\x03\x04\x01\x01\x01\x01\x01\x03\x05\x10\x04\x02\x04\x01\x02\x01\x01\x01\x02\a\a\x1e\x01\x02\x01\x02\x03\x05\x05\x01\x02\x04\x02\x01\x01\x03\x01I\x01\x02\x01\x01\x01\x03\x01\x01\x01\x02\t\x05\x01\x01\x01\x01\x01\x01W\x05\t\x04\x03\x04\x03\x13\x04D\b\x0e\x02)!\nI\x0f\x0e\x02&\xf9+\x1e\x1a\x1b%\x05\x19\x19&\x11\v\x01\x01\x01\x19#%@\a\x12\x16\x06\x14\x02\x01\x1c\x04\x05\x10\x13\x05\x03\t\x02\x02\x04\x05\x17\n\a\x03\b\x1f\x05\b\a\x03\b\x05\x06\x04\t\x04\x02\x05\x01\t\x05\x03\x03\x02\x06\x04\x04\x03\x02\x01\x02\x02\x03\x03\b\x0f\x06\x03\x02\x03\a\a\x04\x05\x03\x04\x12\f\x03\n\t\t\x0f\x15\x04\x01\x01\x04\x04\x05\x05\x05\f\b\x06\v8\x06\x03\x12\x1a\x02\x02\v\x04\f\x1b\t\x03\x0f\x14\x10\x04\x11\x11\x04\x04\f\v\x02\x03\v\f'\b\t\x04\x04\x02\t\a\f\v\x01\x02\x01\x0e\f\x01\x03\a\x05\x03\x02\x02\x05\b\x01\x02\x01\x04\a\x17\x06\x03\x03\x05\x06\f\x06\x06\x04\x03\x06\x04\x01\x02\x10\x01\x01\f\f\x01\x01\x01\x03\t\t\x03\x02\x02\x04\x0f\x01\x04\f\r\x04\x03\x05\x01\x04\x03\x01\x01\x01\x05\a\x05\r\r\x06\a\x04\x02\x01\x06\x01\x01\x02\x01\b\x03\x03\x04\x03\x03\x04\v\x03\x01\x03\x14\x06\x05\x02\x02\x05\x0e\x06\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x02\x03\x03\x02\x01\x02\t\x06\x03\x03\x03\x02\x02\x05\x02\x05\x04\x02\x01\r\x04\x06\x01\x02\x02\x01\x03\x02\x01\x01\x01\x03\x02\x05\x01\x01\x02\x01\x01\x06\x03\x06\x05\x04\x05\x04\x05\x04\x05\x06\x05\x01\v\b\x06\x03\x03\x03\x03\x02\x04\a\f\x16\x04\a\x04\b\x03\x05\b\x03\x05\x06\b\a\x04\x04\t\b\x03\x02\a\v\n\a\x01\x06\x0e\b\x06\x06\x02\x04\x06\x01\x03\x04\x02\x02\x02\x02\x11\x05\f\x15\x04\x05\x05\v\x11\x06\t\x0e\x03\x06\x04\x05\x10\x15&\x06\x03\a\b\x13\x13\x03\x01\a\x04-\x01\x0e\x17\v\x04\r\x17\x04\x05\x10\x05\x04\x04\x03\x03\a\x10\f\f\b\x14 \t\x04%\x05\v\x05\x04\x03\x06\x03\x10\x05\x01\a\x04\x18\x02\t\x06\x06\x06\t\b\a\r\x1f\x01\x01\x01\v\x03\x06\x03\x02\x02\x01\x06\v9\x0e\x1b,\x17\a\x17\x03\x19\x15:L\x93\x058'\x1d'\x1c\x19\x11, %\f\a\x19%\x0e\x03\x00\x00\x00\t\xff\xff\xff\xc5\x01\xf1\x01\xb7\x00\u007f\x00\xd3\x01\x1b\x01^\x02^\x02\x9a\x02\xd2\x03\x12\x03K\x00\x00\x13232\x172\x17\x162\x163\x16\x17\x16\x17\x16\x17\x16\x170\x16\x17\x16\x17\x16\x17\x14\x17\x16\x15\x16\x15\x14\x06\a\x1c\x01\x06\x15\x06\a\x06\a\x06\a\x06\a\x06\a\x06\a\x06\a\x06\a\x06#\x06#\"'\"'*\x01&#&#&'&'&'&'&'&'&'&'4&54&45&547<\x0165<\x01656167>\x01567676767672636212\x17\"\a\x06\a\x06\a\x06\a\x06\a\x06\a\x14\a\x06\a\x06\a\x06\x15\x14\x17\x16\x17\x16\x17\x16\x17\x16\x17\x16\x17\x16\x17\x16\x17\x16\x17:\x013\x1672676767676767676767676'4&1&'&'&'&'&'\"#'&\a67\x0e\x01\a\x06\a\x06\a\x06\a\x06\x17\x14\x17\x16\x17\x1e\x01\x17\x16\x17\x16\x17\x14\x15\x1c\x01\x15\x1c\x01\x15\x16\x14\x15\x1c\x01\x15\x1c\x02\x15\x14\x15\"#\"'&'&'&'.\x015&'&'&7676767\x16\x17\x16\x17\x1e\x01\x17\x16\x15\x16\x17\x16\x15\x14\a\x06\a\x06\a\x06\a\x06\a\x06\a\"'041465<\x015<\x015<\x015456767676767654'&'&'&'0&\a67\x06\a\x06\a\x06\x15\x14\x17\x16\x17\x16\x17\x16\x17\x16\x17\x16\x15\x1c\x01\x15\x14\x15\x14\x17\x1e\x013676745<\x015<\x015<\x01645<\x015<\x035<\x0154545\x1c\x011\x16\x15\x14\x16\x14\x15\x14\x16\x14\x16\x14\x17\x16\x17\x16\x17\x16\x17\x16\x1721\x16747676767636\x17\x1632367676?\x02\x06\a0\a\x06\a\x06\a\x06\a\x06'&'&'&'\x16\x17\x16\x17\x16\x17\x163\x06\a\x06\a\x06\a\"#\"'&'.\x01'&'676767\x06\a\x06\a\x06'&'&'&'&'.\x01'\x1e\x02\x17\x16\x17\x16\x172\x163032327636\x17\x16\x17\x16\x17\x14\x16\x17\x16\x17\x16\x1767676767464567<\x015<\x01545<\x0154'&'&'&'&'\"'4767676761\x14\x1d\x01\x14\x150#4&'<\x01'\"#*\x01#\"#\"#41>\x0112676345\"'.\x02#4):\x0136\x1670254>\x0172\x15\x1e\x01\x17\x14\x161\x1663\x163230\x15\"\a\"\x15\"\a0\a\x06\x152\x172\x16\x172\x14\x150#*\x01#\"#\x14\a\x15\x0e\x01\x14\a\"14=\x014\a61\x06\a\x06\x15\x16\x17\x16\x17\x16\x17\x16\x17\x16\x17\x16\x172\x163\x16\x17\x16\x17\x16\x17\x14\x15\x06\a\x06#\"'&'&'&'&'&'&'.\x0150'&'67<\x027676%\x16\x17\x16\x17\x16\x170\x15\x14\a\x06\a\x06\a\x06\a\x06\a\x06\a\x06#&'\"/\x01476767676767676367676747654'&\xec\n\f\x05\x06\x02\r\x01\x03\x03\x01\n\x0e\x12\x12(\x1f\x1f\x12\x03\x01\x04\x03\a\x03\x01\x01\x01\x01\x01\x01\x02\x01\x06\f\x18+\x1a\x1f\v\b\t\x02\v\t\x06\b\f\x04\b\f\f\b\x06\x04\x01\x03\x03\x01\v\x02\b\x04\v\x0f\x11\r\x05\x02\x10\x105\x17\x05\x03\x01\x02\x01\x01\x01\x01\x01\x01\x02\x05\n\x01\x03\f\x12\x1e+\r\n\x17\x1a\x01\n\x01\x06\x01\x02\b\x02\x0e\f\x0f\n\f\x15\x13\x11\x0e\b\x04\b\a\a+\x0e\x03\x02\x01\x01\x01\x02\x03\x01\t\x15\f\x12\x18\x1f\r\t\v\x05\x11\x11\x01\x06\x02\x15\x14\x01\n\x03\t\x01\n\x03(!\x18\x12\x03\a\x05\x04\x04\x03\t\x05\x04\x02\x02\x01\x01\x03\v\t\r\x14\x1a'/\v\r\x02\x05\x04\vu\x13\x19\x01\a\x02\x11\r\v\x06\x05\x02\x02\x01\v\b\x0e\x02\v\x02\x04\x03\x04\x02\x01\x02\x01\x10\x10\n\a\t\a\t\a\x03\x01\x02\x01\x06\x02\x01\x01\x01\x06\x04\x04\n\x11\t\xbb\x02\x06\v\a\x15\x1f\t\x04\n\x01\x01\x04\x04\x04\x06\x05\v\x0f\x10\x13\x05\x06\x04\x02\x01\x01\x03\x04\r\t\x06\f\a\x04\x02\x01\x04\x02\x05\x06\b\x0f\x14\x04f\x02\x01\x01\x01\x05\x02\x02\x01\x01\a\x04\x03\x01\x05\a\x02\x04\x02\x01\x03\x02\x02\x01\x02\x01\x01\x01\x01\x01\x01\x01\x03\x02\x02\x02\x04\x06\x02\x04\x01\x01\x01\x01\x05\b\x01\x01\x02\x04\x05\x04\x06\x0e\a\x04\x06\x05\r\f\t\x06\x11\r\x02\x02\x01\x03\x05\b\t\x06\b\v\v\r\r\x04\a\x02\x06\x04\x05\x03\x05\b\x06\x06\a\x01\x03\x01\x03\r\x11 \"\a\a\v\x04\x10\x11\x11\x1b\v\x05\x01\n\t\t\a\x03\x03\x06\x05\x06\a\b\n\f\v\x05\a\f\r\x04\a\x01\x02\x01\x02\x03\x03\x01\x0f\x0e\x0e\v\x01\a\x01\b\t\a\x02\b\x03\x04\x06\x05\a\x05\x03\x03\x02\x01\x02\x01\x02\x01\x01\x01\x02\x03\x03\x02\x02\x03\x01\x02\x01\x02\x01\x02\x02\a\x06\x06\x06\a\x01\x04\x01\x03\x04\x02\x03\x06&\x01\x01\x02\x01\x01\x01\x04\x02\n\x03\x01\x01\x02\x01\x01\x03\x02\a\x02\x03\x01\x01\x03\x01\x04\x03\x02\x04\x01\x03\n\x02\x02\a\x01\x01\x01\x02\x06\x01\x01\x01\x01\x01\x01\x06\x01\x06\t\x01\x01\x01\x03\x01\x03\t\x01\x01\x02\x01\x02\n\x03\x01\x05\x02\v\x02\x04\x01\x01\x01\x01\x01\x01\xba\x03\x02\x01\x01\x02\f\x06\x05\v\t\a\b\b\x02\a\t\x01\b\x02\b\x05\a\x03\x02\x01\v\t\x05\b\x0e\x10\a\x04\f\v\x05\x03\r\t\x04\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x05\x01t\x01\x02\x04\x02\f\x01\x03\x02\x01\a\v\r\x13\t\t\n\b\n\n\f\v\x01\x01\x04\x01\x02\x04\x03\x06\x03\x05\x02\n\v\n\x0f\f\x04\x01\x06\x04\n\a\x03\x01\x01\x02\x01\x01\x01\xb6\x01\x01\x01\x01\x02\x03\x05\t\x12\x1f\x1f'\x06\x01\v\t\x13\x13\x05\x04\x06\x06\t\x10\b\r\x04\x01\x03\x03\x01\f\x04\x1c\x192#\x16\r\x05\x03\x02\x01\x03\x02\x01\x01\x02\x01\x01\x01\x01\x02\x02\x01\x03\x05\a\a\x03\x01\n\f,A\r\x0e\x06\f\x02\x05\x01\x01\x04\x05\x01\v\x12\x06\x04\x02\x03\x04\x01\x01\x03\x03\x01\f\x1a\x16\x02\x06\x01\x1a\x15&\x19\a\x04\n\x05\x01\x01\x01\x01\x18\x02\x01\x03\x05\n\a\n\x06\x03\x06\x06\x01\x06-<\r\r\f\x0f\f\t\b\r\f\x02#\x1f\x13\x11\x17\x10\x06\x03\x04\x01\x05\x03\x02\x02\x01\x01\x01\x01\x02\x01\v\x19\x12\x17\x04\t\a\t\a\x06\x12\x13\x11\x0e\x12\x17\x02\t\x1e\x1a\x17\x14\x1d\x15\x1f\v\x03\x02\x01\x012\r\b\x01\x04\x01\n\x0e\f\r\v\v\a\a\x14\x13\x0f\r\x01\t\x02\x04\x03\x06\x05\x02\a\x02\n\x01\x02\a\x01\x02\x04\x02\x03\f\x02\x01\x03\x03\x02\x03\x02\a\x05\x05\a\a\v\r\x06\x02\x02\x03\x01\x0e\x11\n\x03\x18\x17\r\v\x15\x11\t\x1c\x01\x02\x04\x04\n\x1e\x13\b\x01\x16\x19\x05\t\x11\x11\r\t\v\b\x10\v\f\x03\x01\x01\x01\x06\x02\a\x02\x04\x0e\x03\x01\x05\x01\x03\n\x03\b\x01\x03\x04\b\n\a\a\r\x0f\n\b\x06\b\v\f\a\t\n\n\x0f\f\x02:\x02\x02\x02\x01\x06\a\a\x03\x05\x03\v\n\x05\x02\x01\x02\x04\x02\x03\x06$\x94%\x03\x01\x01\x03\x03\x03\x01\x02\x02\x03\x01\x05\x02\t\x02\x02\f\x03\x02\a\x04\b\x02\x02\r\x03\x02\a\x04\b\x02\x03\f\x03\x02\x03\x04\x03\x01\x04\x06\x05\x01\x04\x04\x01\x01\a\x03\x05\x04\x02\x13\b\b\x06\x0e\t\x03\x04\x01\x01\x01\x02\n\r\x03\x01\x02\x02\x02\x01\x03\x01\x01\x05\x04\x04\n\x11\x02\x03\x04\x06\b\x10\f\a\a\v\x04\x06\x02\x01\x02\x01\x03\x02\x04\x03\x05\a\x04\x04\x01\x01\x01\x02\t\a\x0e\x02\x01\x01\x04\x05\f\a\x04\x01\x01\x05\x04\a\x03\x04\x04\x02\x03\x02\x02\x01\x02\a\x04\x06\r\x15\x06\r\x01\x04\x01\x01\x03\x03\x01\x10\t\t\x02\x01\x01\x01\x02\x02\x03\a\x04\x05\x01\x05\x02\x03\x03\x02\x01\x01\x02\x03\n\v\t\a\x15\x02\x04\x05\x01\x19\a\x01\x04\x01\x02\t\x02\x04\x03\x03\n\x02\b\f\v\a\n\v\t\x05\a\x02\x01\x02\x06\f\v\x05\a\n\x06\x01\x01\x05&\x04\x01\x02\b\x01\x01\x03\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x05\x05\x03\x01\x01\b\x02\x01\x03\x01\x01\x01\x01\x01\x01\x03\x01\x01\x01\x01\x03\x01\x01\x01\x01\x02\x02\x02\x04\x04\x01\x01\x04&\x05,\x06\n\r\n\r \x1a\n\a\x0e\a\a\x04\x04\x01\x02\x03\x02\x03\x06\a\v\x03\x06\x02\x01\x04\x02\x01\x05\x03\x02\x06\b\x05\x03\x0e\x14\n\a\b\x04\x02\x06\x01\x06\b\t\f\x06\x01\x04\x03\x01\n\a\x10\x18\x01\x04\n\x04\x1d\x1e\x05\f\x10\a\x04\x18\x12\x14\v\x06\x03\x04\x02\x01\x01\x04\x01\x01\x01\x04\t\a\b\x04\x03\x02\x01\x02\x03\x04\a\f\x05\a\x05\x0e\x13\v\x05\x02\a\v\a\r\a\r\x00\x02\x00\x00\xff\xc5\x02\x01\x01\xba\x00j\x00p\x00\x00\x136\x176\x17&\a\x06\a67676\x17\x06\a\x06\a\x06\a\x06\x17\x16327676765&\a\x06\a\x06'\x167>\x0476767\x06\a\x06\a\x06\a\x0e\x01\a\x06\x17\x16\x17\x167676'4&45\x16\x17\x16\a\x0e\x01\a>\x017654'\x16\x17\x14\x15\x06\a\x06\a\x06&'.\x01'&'5>\x01\x056767\x06`I\\*,(!B.\x04\f\x1d\x1c\x17%$\a6!\x17\x01\x01\x15\f\x0f\x05\x05\x15\x17\x14\f\x02\x05\x01\x11\x13#\x1b\x15\x11\x06\v\f\t\f\x04*/1!-\x02\x11\x17\x01\r\x0e\x1e\b\x0f\x04\x03\x12\x11\x1a0!\x1f\x02\x01\x0e\x02\x03\x04\x01\x06\x01\r\x17\x03\x02\x10\x1e\x06\x05\x19(M;\x867\x195\x0e\x16\x03\x033\x01\b\b\b\t\x01\x12\x01\x819\x03\x01\x10\b\x06\b3\x01\x05\r\x02\x02\x04\a\x03\x11-!\" \f\b\x01\x03\r\f\f\x02\v\x01\x01\n\x05\v\n\x03\b\x03\a\b\b\n\x03 \x17\x17\x01'\x02\x10\x1d\x02\b\n#\x0f!\x1f\x19\n\v\x06\v-*6\x03\t\a\x04$\x19\x12\x19\x06\x15\x06\x0f/\x13\x0f\x0e($/<\x13\x144-I#\x1c\b\"\x0f:\x1a,1\x1f4^0\x02\x03\x03\b\n\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00!\x00)\x001\x00\x00\x11\x17'\x1762\x177\a7\a7\a\x16\a\x17'\x17'\x17'\x06'\a7\a7\a7&47'\x176\"\x06\x14\x16264&2\x16\x14\x06\"&4w\f[\r\x1a\r[\fwF;F\x05\x05F;Fw\f[\x1a\x1a[\fwF;F\x03\x03F;\xcdgHIfI\xa0H44H4\x01\xa0F;F\x03\x03F;Fw\f[\x1a\x1a[\fwF;F\x05\x05F;Fw\f[\r\x1a\r[\f\x13HgIIf%4H44H\x00\x00\x00\r\x00\x00\xff\xc7\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1d\x00+\x005\x00?\x00I\x00S\x00[\x00i\x00q\x00\x85\x00\x8f\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%#\x153\x15#\x15#5#'353\a#535#\x15#\x173\x15353'7\a\x17'\a7'7'\a\x17'\a7'7'\x177\x17\a\x17'\a7'7'\x177\a\x17'\a7'7'\x17&2\x16\x14\x06\"&4\x05#535#\x15#\x173\x15353'\"\x06\a353&\x022654'\x15#\x153\x15#\x15#5#'\x06\x15\x14?\x01\a\x17'\a7'7'\x91Α\x91Α\x97\u008a\x8a\u008a\x01\x86\x92TT0v%\x9b\xc2IS\x91\xac\x90\x14|\x1bS\xa2\x16\x0f\x0f\x16\f\x02\x17\x17\x02\x11\t\r\a\x01\x0e\x0e\x01\b\f\x9c\t\t\r\a\x01\x0e\x0e\x01\ax\x0f\x0f\x15\v\x01\x16\x16\x02\f켅\x85\xbc\x85\x01BT\x92Ɲ(u4T_Fp\x15\x9d\xc8?\xb3\xb0}1\x92TT@s,\t\x91\x17\x11\x0f\x15\r\x04\x18\x18\x02\x01\xb7\x91Α\x91\xce\xfe\xae\x8a\u008a\x8a¿#/\xc4\xc5.R\\8\x18P\x18\xc6\xc6]\t\x12\x12\t\x14\x18\x05\x06\x18\x02\n\x06\r\x0f\x03\x04\r\f\x06\x9d\v\n\x05\f\x0e\x03\x04\x0e\fR\x11\x11\t\x14\x17\x05\x05\x17\x14\xa7\x85\xbc\x85\x85\xbc!\x1f3R2\xc5\xc4\xccRARA\xfeU}XM<3\x13?\xc4\xc58\x1d XF\t\x11\x13\v\x15\x18\x06\x04\x18\x00\v\x00\x1c\xff\xc0\x01\xe5\x01\xc0\x00\x96\x00\x9b\x00\xa1\x00\xa6\x00\xac\x00\xb2\x00\xb7\x00\xbd\x00\xc2\x00\xc8\x00\xce\x00\x00\x05\a'\a'\a\x15.\x04'4.\x04'6'\x0e\x01\a\x17\x06\x177\x177\x177\a'\a'\a4&467\a&7\a467>\x01'.\x01'\x1e\x01\x06\a.\x0167\x16\x1f\x02'\a\x1f\x017\x1f\x01\a\x177'?\x01\x17?\x01'\a?\x0167\x1e\x01\x06\a.\x0167\x0e\x01\a\x06\x16\x17\x1e\x02\x15'\x16\a'\x1e\x01\x14\x06\x15'\a'\a'\x177\x177\x176'7.\x01'\x06\x17\x0e\x05\a\x0e\x04\a5'\a7'67\x067\x06\a&'67'67\x167\x16\x17&'6'\x16\x17\x06\a4\a&'\x16\x17'\x16\x17\x06\a&'47\x16\x17'\x16\x17\x06\a67\x06\x15&'6\x01\f\f\v\v\x05\x05\x06\t\x05\x02\x03\x01\x03\x03\v\x0f\x1e\x13\x0f\r\x19\x1f\a\x1e\x12\x05\x1c\x06\x12\t\x13\x1a\t\x19\a\x1a\x02\x05\x06\x1a\x04\v\x16'\x17\x11'\x02\x02\x17\x12\x14\x01\x11\n\x03\x06\x01\bY\x05:\x03k\a\x11,\x10\x1c\x04\x15 !\x15\x03\x1c\x10,\x12\al\x04:\x04Y\b\x01\x06\x03\n\x11\x02\x14\x12\x18\x01\x02'\x11\x0f\x1d\x11\x16\f\x04\x1a\x05\x05\x02\x1a\a\x19\b\x1b\x14\b\x13\x06\x1b\x05\x12\x1e\x06\x1f\x1a\f\x0f\x14\x1d\x10\n\x03\x03\x01\x01\x02\x03\x05\b\x06\x05\x06E\x10\n\t\x01\x1a\x01\x01\x0f\x06\b(\x18\n\b\x06\x03\x1a\x04\x19\f\a\x02!\r'\x05\xed\x02\x02\t\v,\x0e\b\x05\x10\x01\x19\x05\b\v\x1c\x01\x06\v\x1a\x04\x1c\x02\x05'\x0e\x18\x15\x15\x0f\f\a\x1e\x02\x10\x17\x16\x1c\x06\x03\x1e\x10 \x18\x1f\r((\x03\x15\x1e\b&\"\a\"\a!\a\x15\x1c\x05#\x0e\x03\x1c\x12\x1a\t\x05\x14%\n\x14%\x02\x01 \x13\x0f\x1d\x05\x10\"\x13\x04\b!=\x1c2b']<\a\x04&\x051x\x10\x10\x10\x10x1\x05&\x04\a<]'b2\x1c=!\b\x04\x13\"\x10\x05\x1d\x0f\x13 \x01\x01\x13\x1a\r\n%\x14\x05\t\x1a\x12\x1c\x03\x0e#\x05\x1c\x15\a!\a\"\a\"&\b\x1e\x15\x03((\r\x1f\x18 \x10\x1e\x03\x06\x1d\x15\x18\x0f\x02\x1e\a\fn\v\x06\x06\x11,\x14\f\x04\x03\b\v\a\r\x0e\x0f>\x11'\t\x02\x0fL\x04\x18\f\x02\n\x8b\x06\x11\x06\x06'\x11\b\x03\x04\f\x0e\x13\x0f\x0e\rJ\x1e\x0f\x01\n'? \n\x02\f\x18\x00\x00\x00\x00\x04\x00\x01\xff\xbf\x01\xff\x01\xc1\x00#\x00M\x00q\x00\x93\x00\x007\x16\x15\x14\x06\"&4632\x17.\x014>\x04?\x01\a\x0e\x01\x1e\x01\x17\x1e\x013:\x011\x15\x06\x13>\x01\x1e\x01\x1f\x01'.\x01\x0e\x03\a\x0e\x01\x150\x14\x15#&7\"#\"&54>\x0432\x16\x17\x16\x15\x14\x05\x06#\"#\x1e\x01\x0e\x01\x0f\x017>\x01.\x02'.\x01#\"\a56\x17&5462\x16\x15\x14\x0e\x01\x0312\x16\x14\x06#\".\x01'&5\x0e\x01.\x01/\x01\x17\x1e\x01>\x027>\x015<\x0113\x16L\x01\x16 \x16\x16\x10\x03\x02\f\r\b\x0e\x10\x11\x0e\x04\x04\b\x18\b\x19\x1d\x12\x0eM)\x01\x04u$\x1f=,#\b\t[\v\x12\x0f\f\n\x06\x02$4\x16\x016\x02\x01\x10\x16\x03\x04\a\t\n\x05\n\x14\x04\x04\x010\b\b\x02\x02\x18\a\x17\x1e\r\x0e\t\x13\f\t\x17\x18\x0e\x0eM'\x01\bpH\x01\x17\x1f\x16\x06\nx\x10\x16\x16\x10\x06\x0e\v\x03\x03 >-$\b\t[\f\x15\x0f\x0e\a\x04%6\x13\x02N\x03\x02\x10\x16\x16\x1f\x17\x01\x12$\x1e\x1e\x17\x15\x10\v\x03\x03\\\x0e\x1a\x11\v\x04&6\x13\x02\x01}\x15\x04\x18\x1d\r\r\t\x10\x0e\x05\x0e\x18\x14\f\x0eM'\x02\x01wG\x16\x10\x05\n\b\a\x05\x03\r\b\b\t\x02\x89\x03 ?.$\t\t[\f\x15\x0f\x0e\b\x03%4\x01\x17\x011\x03\x02\x10\x16\x16\x10\x06\x0e\v\xfe\xfa\x17\x1f\x16\x06\n\x05\a\a\x16\x06\x17\x1e\r\r\b\x13\f\t\x18\x18\x0e\x0eM(\x01\x05m\x00\x00\x00\x00\v\x00\v\xff\xdf\x01\xb4\x01\xa3\x00\f\x00\x1d\x00+\x003\x009\x00^\x00\x90\x00\x9a\x00\xb0\x01\n\x01)\x00\x00%&'&76\x1e\x01\x17\x16\a&\"\a&#\x0e\x02'47632\x17\x1e\x02\x06\a2\x1e\x01\x06'\"#\"\a\x06'&6\x17\x06\"&76\x1e\x0162\x16\x06\"&\a3\x16\x141\x0e\x01&'46&'&#\"\a\x0e\x03#\".\x014>\x0276\x16\x17\x16\x06\x17\x16%2\x16\x15\x14\a\x0e\x02.\x02'\"&'4547'&>\x05\x170\x1e\x01176\x16\x15\x14\a\x1e\x03\x14\x15\x16\x17\x16\a\x16\x0526'.\x01\x06\x17\x1e\x01'67>\x05?\x01&'&\x0e\x01\a\x06\x17\x16\x176\x05\x17\x06'\x16\x17\x166720\x15\x0e\x01'&6\x17\x1676'&'&'&'&'4'&'&#\"\a\"\a\x06#.\x01#'\"\x06\a\x06\x1e\x02\x17\x16\x15\x14\a\x0e\x01\x17\x16\x17\x1e\x0176767676.\x01\a&'\x06\a\x0e\x01&\x06\a\x1e\x0227'5\x15\x143>\x022\x17241&#\"15674#\x06\a\"1675#\x06\x01K\x04\x02\x04\b\x03\x04\x03\x01\x03\x03\x02\x058\t\b\x05\r\x03\x02\x06\b\n\x06\x06\x04\a\x02\x02\x10\x05\b\x03\x01\x04\x03\x03\a\x06\x04\x01\x02\b=\x02\b\x06\x02\x02\b\x06\n\b\x02\x03\a\x03\xd4\x03\x01\x02\n\t\x01\x04\x01\x05\x03\x04\a\x04\x01\x02\x01\x02\x01\x01\x01\x01\x01\x02\x03\x02\x04\x18\a\x04\n\x03\x02\x012\x06\n\t\r3=E>4\x0e\x18)\x03\x05\x0f\x0e\x01\x1a(22,\x0e\f\v\r,?\"\b\t\x04\x01 \t\x13\x10\x04\xfe\xc7\x15\x11\x04\x05,&\x03\x02\x1e\x01 >\a\x0e\r\f\t\a\x02\x02\x12\x06\x108<\x171\x10\x02\x0e\r\x01\x06\x01\x1c+\x01\x0f\x17J\x1f\x01\x16q\x11\t\x0e\x0f9,'\x03\x01\x04\a\x13\b\x02\t\x01\x01\x01\v\x04\x05\x02\x02\x06\b\x0f\x13\x04\x0f\x04\x05\x0f\x1b\x02\x02\x06\b\r\x01\x02\x02\x0f\n\x06\x01\x02\x0eH(\v\n\x11\x0e\x15\x05\x01\x05\x05\x03\x02\x05\x15\x1e\x17(\x13\f\x02\t\x15\x11\x0e\x04\x94\x01\a\x13((\x1d\x01\x13\x16\x01\x03\x05\x01\x1a\x17\x01\x01\x04\x01\x1d\xcc\x06\t\x12\x01\x01\x04\a\x06\v\a\x01\t\x04\x01\x03\x01\x01\x03\x04\x06\x02\x02\x05\x05\x02\x02\x02\x04\x02\x01\x02\x02\x01\x03\x06\x10\x03\x06\x04\x03\x01\x06\x11\b\b\bG\x01\x01\x04\x02\a\b\x03\r\t\x03\x02\x05\x02\x05\x03\x02\x02\x03\x03\x05\x04\x05\x02\a\x01\f\b\x18\x03\x04\x12\r\f\x13\x17 -\x15\x01\x15/ #\x19\x04\x04\r\r\f\f,37,!\x06\f\v\v\x05\x12\x0f\x1e\x1e#\a\x14\x14\x12\x10\x02\t\n\x14\x17\v:\"\x18\x1e\x11\x1e\x1d\x12\x1bqT1\x05\v\t\b\x06\x04\x01\x01\x16\x01\x05\x1b6!F\x1e\x04\v\x13a\x02\r\x0e\v\x06\n\x0f\x15\x01\x1f\x10\x19\x0e\x1e\x02\a\x14\x12\x14\x06\x04\a\x05\x02\x01\x03\v\v\x11\x1b\a\x03\x01\a\f\x01\x01\x01\x17\x11\f\x15\f\x0e\x02\x02\x03\x02\x02\x10-\x14\x05\x05\x1f\x19\r\x04\x05\t\x0e\x16\x1d\t\t\x01\x01\r\f\x11\t\x06\x03\x04\x02\a\x03\x04\x01\x01\xc1\x01\x01\x01\x05\n\x10\x04\x02\v\x01\x04\x04\x01\x02\x0f\x06\a\x01\x0f\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\x05\x00\r\x00'\x00\x00?\x01\x17\x15\a'\x022\x16\x14\x06\"&4\x015'5'5'\a\x15\a\x15\a\x15\x17757\x17\x15\x17757\x17\x15\x17\xd6\"!!\"EΑ\x91Α\x01\x89;<\x1a\x1a<;\x1a\x1a!\"\x1a\x1a\"!\x1a\xee\"\"B!!\x01\f\x91Α\x91\xce\xfe\xf3W;X\x01\x132>\x0154&\"\x06\x14\x16\xeb\x17\x10\x10\x17\x10j\x10\x17\x0f\a\f\b\v?$B/\x1di\x93h-\x15P $=#MnNN\x95\x10\x17\x0f\x0f\x17\x17\x17\x10\x10\v\b\f\a\xc2\x1c/B#JggJ\x01O\xe3!#\xfe\xcc#=$6MMmM\x00\x00\x02\x00\x13\xff\xe0\x01\xae\x01\xa0\x00\n\x00(\x00\x00%\x14\x0e\x01#\"&462\x16\x17\x15#.\x0154675\x17\a5\x0e\x01\x15\x14\x1e\x012>\x0154.\x01'7\x1e\x01\x01\"\x12\x1e\x12\x1b&&6'\x8b\xd2SuoPmm\x01&'*\x01#\x15353\x173'2\x16\x06+\x015'2\x16\x06+\x0157\"\x0e\x01\x16326&\x062\x16\x06\"&\xcb\x12\x12\xbf\x05\b\x05\x12\xbf\x12\x12\xb9\b\n\n\bl\b \b\x13\x1d\x17\x13\x13u\x1f\x12\f\x13\x16\b \b\x13\x12\x1e\x17*\v\t\t\v\x1dC\n\t\t\n \xe1\x18\x1c\x01\x1c\x19!\x1b\x1b6*\x11\x11*\x11\x01\xb8\n\nl\x03\n\f\x06\xd9\x15\nm\n\nm\x04\x12\t\xd9\t\x12\x04\\f\x1e$$e#\x04 \x1d\x01f\"\"T\x10\x11!\x01\x13\x13&\x13!(!55\x12#$$\x00\x00\x00\x02\x00\x00\x00\x01\x02\x01\x01\u007f\x00.\x00S\x00\x00\x012\x16\x15\x14\x06\a\x0e\x02\a\x06#\"'\x06#\"'.\a4&54632\x16\x17>\x0232\x1e\x02\x17>\x01\x17654.\x01#\"\x0f\x01#'&\"\x0f\x01#'&#\"\x06\x15\x14\x1f\x01\x1632?\x013\x17\x16327\x01\xa9&1\n\x1d\a\t\x0f\a\x1aC=\x19\x19=C\x1a\t\x15\f\r\a\a\x03\x04\x013%\x1e-\b\t$\x1b\r\n\x14\x1a\x17\x06\b.8\b\n\x11\v\x1d\a,\x01-\n:\n-\x01,\a\x1d\x10\x16\bA\x0e !\v'\x01(\n\" \x0e\x01~/$\r N\x13\x17+\x13F66E\x1b7\"#\x14\x15\v\v\b\a\x05 -#\x1d\x1a\x1f\a\x04\f\x1c\x14\x1d#s\x18\x04\v\x10\b\x1d\x8c\x89 \x89\x8c\x1d\x11\f\r\x16\xaf%\"uu\"%\x00\x00\x04\x00\x00\x00?\x02\x80\x01B\x00\x12\x00:\x00U\x00q\x00\x00\x010\x15\x14\x0e\x01\a\x0e\x01\x0f\x01467>\x0223\a>\x01\x17\a\x06'.\x01'.\x02'&\"\a\x0e\x02\a\x0e\x01\a\x0e\x01+\x01'6\x16\x1f\x017>\x012\x16\x1f\x017\x1d\x01\x14\x06\a\x0e\x01'#5<\x03>\x037>\x027>\x017\x1f\x01\x06'&'&\a\x06\a\x0e\x01#'7'6\x17\x16\x17\x16767>\x01\x1f\x01\x01\x89\x01\x0e\r\x05\b\x01\x02\a\n\x03\a\a\a\x02r\x04 \x13B\x15\v\f\f\x06\x03\x0f\f\x01\x03\t\x03\x01\f\x0f\x03\x06\f\f\x05\x10\x06\x05B\x13 \x04#\x1c\x06\x16)\x16\x06\x1c\x96\x06\v\x05\r\x05\x04\x01\x02\x03\x04\x03\x02\a\x06\x03\x04\a\x01\xa5S$\x12\v*\x06\a+\t\b\x1b\n\tSS#\x11\v+\a\x06,\v\a\x1a\n\t\x01<\x02\t\v\x11\x05\x01\x05\x02\x01\x17\x15\x05\x01\x02\x01#\x13\x12\x02\xf8\x01\x05\x06\x11\x18\f=1\x02\v\v\x021>\v\x18\x11\x06\x02\x02\xf8\x02\x12\x13\x85m\x19\x17\x17\x19m\x80\t\x97\x16\x11\x05\x03\x02\x01\x98\x02\n\x03\a\x02\x05\x02\x03\x01\x01\x04\x02\x02\x02\x06\x02S{\x04\x0f\n=\n\n>\t\a\x05\x01{|\x06\x10\t?\n\n?\t\a\x05\x01\x01\x00\x00\x02\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x1d\x00\x00\x122\x16\x14\x06\"&4\x056&'&\x06\a\x0e\x01\"&'.\x01\a\x0e\x01\x17\x1e\x0126\x91Α\x91Α\x01\x88\x02\x06\x06\x06\n\x01\vARA\v\x01\n\x06\x05\x06\x01\rPfP\x01\xb8\x91Α\x91Ό\x05\v\x01\x02\x06\x06'33'\x06\x05\x01\x01\n\x061??\x00\x00\x00\x02\x00\x17\xff\xc0\x01\xe9\x01\xc0\x00\x11\x00L\x00\x00\x01\x16\x14\x0e\x01#\".\x01'&4>\x0132\x1e\x01\x0226'&<\x0174#\"#\"\x15\x16\x15#6=\x01276&#\"\x0e\x051\x163\x15\x16\a\x143:\x01325&53\x14\x16\x15\x06\x15\"\a\x06\x01\xde\n\x15\xbd\x16\x0ega\a\v\x16\xbc\x16\x0egb\x9e\x06%\x02\x02\x10\x01\x02\x05\r\x14\x04\x01P\x02\x10\x01\x02%\x03\x01\x05\b\b\b\x06\x03\x02\x10\x02\x02\x05\x06\x15\x04\x06\x02P\x01\x01\x11\x01\x02\x01@\x13\xda&m5?\f\x13\xda&m5?\xfe\xd6$\x02\x02\b\x18\x1bVB\x05\x05%/i\x01\x03\x02\x02$\x04\x06\b\b\a\x05\x02\x03ta\x06\x06\x1b-\x01\x03\x010'\x02\x02\x00\x00\x00\x00\x01\x00\x0e\xff\xbf\x012\x01\xc0\x00\x1d\x00\x00\x05\x17\x06+\x01\"/\x01\a\x15\x14+\x01\"5\x114;\x012\x15\x1176;\x012\x16\x0f\x01\x010\x02\x01\x05C\x06\x05n\x1f\b3\b\b3\b\x84\x05\x06E\x05\x03\x03\x8c6\a\x03\x05\x8d\x1el\b\b\x01\xf0\b\b\xfeΆ\x06\t\x02\x87\x00\x03\x00\x00\xff\xfb\x02\x81\x01\x85\x00\x0f\x00\x1b\x00\"\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x015#\a'#\x1535\x177\x15\x177#5#\x15#\x02R\x13\x1b\x1b\x13\xfd\xdc\x13\x1b\x1b\x13\x01$=>=>>>=\xc5\\>==\x01\x85\x1b\x13\xfe\xd2\x13\x1b\x1b\x13\x01.\x13\x1b\xfe\xd2\xd2MM\xd2xMMx\x03lii\x00\x00\x05\x00\x1c\xff\xc0\x01\xe5\x01\xc0\x00\r\x00\x16\x00\x1c\x00#\x00'\x00\x00\x05#'\x15\a#\x1173\x17573\x11\x01\x1175\x1337#\x01\x1375'\x15\a\x13\x013\x11#\x11\x03\x1f\x01\x11\a\x01\x9f_lVb(m{Wa\xfeCH\xd7U4N\xfe\xc44POI \x016SPߌHH@\x9b\\?\x01\xe2\x1e\xb0q?\xfe2\x01\xab\xfe35\xf9\xfe\xcc'\x01\xc2\xfe\x17;er\xdd5\x01\xeb\xfeF\x01\xba\xfe\xc3\x01=\xb5f\x01\x165\x00\x06\x00\x00\x00+\x02\x81\x01Q\x00\x06\x00\r\x00G\x00T\x00`\x00\x93\x00\x00\x133\x15#\a'#75#\x153\x177'2\x16\x1d\x01#\x06\a7\x16\x17\x1e\x02\x0e\x02\x1d\x01'\x0e\x01\x0f\x01\x06'67#6;\x0165#\x06\a\x06\a>\x037>\x0137\x06\a32\x16\x1d\x01#\x14\a%'67>\x01\x1e\x03\x1f\x01\x06'\x1e\x03\x1f\x01\a'>\x02\x17\x16+\x01\x15\x14\x0e\x01#\"'&'\x1e\x0123\x166=\x01#\"&/\x0135\"\a\x06'&'26?\x02\x16\x14\x0f\x01\x06\a\x06#\x15036\xabz1*\b\x17aI\f\x05\x1cZ\x03\x04=\x02\x06\x0f\b\x1c\x02\x02\x01\x01\x01\x016\x06\x12\x06\x06\x15\x1e@\aB\x04\f4\x02\x1d\x01\x04\v\x1a\x06\v\a\x06\x01\x03\x10\a\x06\b\x05X\x05\x043\x02\x01\xd0\x13\x1e\x06\x02\x05\x05\x06\x04\x04\x01\x01\x18\xab\x02\t\n\b\x03\x02\x13)\x02\x05\x10\xe7\x01\nz\n\x14\x0f\r\r\f\a\x05\x11\r\x06\v\x0el\n\r\x01\x02\x86\x13&)\b\r\x03\x1et,+\x17\x06\x03\x02\x1c<\x10\a\x02o\x01,\xda\x1a\x1a\x18\xaa\xaa\x12\x12^\v\x06\x06\x14\x15\f\t!\x03\a\b\a\a\x05\x02\x01A\x16\"\a\x06\x13\t1L\x17\x173\x03\f\x13\x03\f\x1c\x12\x12\x02\n\v\x01\x15\x14\v\x06\x05'#\x02\x0e(\t\x02\x02\x01\x01\x03\x02\x01\x01 !\x02\v\r\f\x04\x04\x0e:\x01\x03\x03L\x18I\x0e\x15\v\a\a\x0f\x01\x01\x01\f\nG\f\x05\x06d\x03\x01\x02\x04\x10\t\x04\x05\x04\x03\x10\a\a\x02\x03\x01e\x01\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x005\x00>\x00\x00\x012\x16\x1d\x01.\x01'>\x01?\x01#535#5#\x15#\x153\x15#\x153\x06\a&#\"\x06\x17\x1e\x013267\x16\x17\x14\x0e\x01#!\"&5\x11463\x03&632\x17\x06#\"\x01z\x1d)\x18d\x19\n\x14\x04\x04Xmm3nn\\\xb2\n\x11Q.:-\x04\x03.0-M\x1aKa\x13 \x13\xfe\xcc\x1d))\x1d\x17\x01#-\"K7?C\x01\xa0)\x1d\xeb\b$\t\x14-\r\r\x1f\x1333\x13\x1f\x11\x1e\x1e\x19/#\x1d/-$\"6\x13 \x13)\x1d\x014\x1d)\xfe\xdd\x12! I\x00\x0f\xff\xfd\xff\xc0\x01\xfd\x01\xc0\x00d\x00\x93\x00\x9e\x01#\x01n\x01\xe9\x01\xec\x01\xfe\x02\a\x02\x19\x02'\x021\x02U\x02k\x02\x8c\x00\x00%\x16\x17\x16\x17\a'\x06\a\x14\x06#\"'&54&5\a&7461/\x01>\x0336767\a'767'36\x17&'&547\x16\x17673\a6\x17\x0e\x03\a\x16\x17'\x16\x17\x16\x17>\x03\x1e\x01\x17\x1c\x04\x16\x14\x16\x15676\x172\x16\x17\x1e\x01\x06#\a\x16\x17'&\a\x16\x17\x16\x0f\x01\x16\x173&47\x16\x1767\a2\x176#\a&5�\x15\x14\x17\a&'&\x0e\x02#\x1627\a\x17\"/\x01\a\x16\x1767676'&\x05\x06\a\x177\x16\x1767\x17\a6\x17\a\x1e\a\x17'\x1e\x03\x176=\x01&'\x16\x17/\x04\x16\x177'7*\x02\x0e\x03\a#67654'&'&'&#\"'\x15\x06\a#\a&?\x01#7\"ȼ\x1636323\x17\x156767'\"\a'5767\"\x06\a\x06\a'\x17\x15\"'&#\"#\x16\x177\x06\a\x06\a?\x01\a7\a\x06\a\x01>\x014.\x015\x06#\x17\a&'\x1e\x01\x17\x06'\x17\a.\x03#\x06'\x0e\x01\".\x01'\x16\x17&'47\x16\x17&'\x17\x06'&'3\x1e\x0667.\x03'\x17'\x16\x17'\x16\x172>\x037\x17'2\x17&/\x01?\x01&+\x0157\a'\x17\a'#\x17\x15\a\x0e\x02\a7\a\x15\x06\a7\a6\x17.\x02'\x16\x17\a&'\x17.\x01\a'7\a7\x06\a#6'\x14\a\x06\a.\x01\x06\a2\x1e\x022\x160\x16\x14\x16\x17\x0e\x02\a7\x17\x1e\x017'\x17\a\x16\x17\x16327'\x1e\b\x15'7\x17'\x173'\x17'7\x176767/\x01\a\x17'\x16\x17\x06\a\x06#\x06\a7\x06#\"#'67&7\x16\x17\x16\a\x06'&6\x17\x1e\x016'.\x01\a\x06\x156\x17\a\x06\x177\x15\x06'&'&632\x17\x0e\x01\x17\x14\x0e\x017'52\x17&#\"#5\a\x16\x17\x0e\x01#63'6\x16\x1747674>\x017632\x17\x16\x15\a\x16\a\x06\a\x17.\x037\x06\a\x1f\x01\x163230765654'&\a\x06\a\x06\x17\a6?\x01\x17#&\a\x06\x173\x06'&'&547\x06\a&'6\x1f\x01\a\x06\x1e\x0176\x01\xe8\x05\x02\x06\x03\x03\r\t\a\x82]\\BA\x01\x14\a(\x01\x1d\x03\x02\f\t\f\x06\v\x10\x02\x05\b\x01\x01\x10\x1f!\x04\x17\x1a\x04\x04\x03\x03\a\b\x05\x1d\x02\f-5\x03\r\b\f\a\x1c\x06\x18\x16\x03#!\x04\x11\x06\r\n\x0f\t\x01\x02\f\x0e\x13\v\t\t\x01\x06\x02\x05\x01\a\x17\to\x14\b\f\x01\x02\f\x05\a\x02\x02\x01\x02\x0e\x02\x17 \x12\x1a\x14\x04\x01\x05\x03\x01\t\x02\x02\x05\x04\x03\f\n\x0e\x04\a\r\a\x17\x04\x11\x05(\x14\x10\f\t\x03\x02\x01\x01\x05\x04\xfe\xe6\v\x02\r\x01\n\x02\v\f\x01\a\x0e\x0e\v\x03\n\x03\x06\x03\x05\x03\x04\x02\f\x05)\x16/\x1a\x0e\x01\x11\b\x03\x12\x01\x01\x01\x01\x19\b\x02\x17\a\x01\a\x05\b\b\b\t\x04\x02\v\x05\x03\x0e\t\x15\n\n\x03\x03\x06\r\x10\t\x02\x05\x02\x06\v\x04\x02\x01\x04\x01\x02\x01\x05\x01\x05\x05\x02\x02\x03\f\v\x1f\x12\x15( \x02\x02\x03\x04\x02\x0f\x03\x01\x05\r\b\t\a\x06\x0f\x01\x02\x06\x12\a\x04\x10\x0e\x13\x04\n\x05\r\x02\b\x02\x01\x14\x02\x02\x01\x04\x1e\x02\n\x01\x11\v\x04\r\r\v\x18\x03\x04\x02\b\b\x06\x028:\x03\n\x1e\x1b$\x0e\x170\a\r\x01\x1d@8\r\x10\x04\x06\x13\x11\x01\x02\x05\x12\x12\x1d\x1c'&\x17\x0f\x17\v\x0f\x02\x11\v\x12\x14\x1e\x13,\x01\x04\a\f\x16\x81\t\r\n\f\r\x0e\x1b\x01\x18\x10\x11\x12\x0e)\r\x04\x03\x06\n\x06\x0e\x04\f\x0e\x05\x01\x01\n\v\t/\x11\x12 6\x15\x03\x0e\x02\x02\f,\x18\a\x1e\x04\x03\t\x16\x05\x06\v\x02\x01\x04\x01\x02\x01\x13 \t\r\x04\n\x05\x06\x02\x04\x03\x03\x01\x10\v\x0f\t\x16\x02\nI,\x1a,\x01\x04\n\x1e\x1f\x10\x10!\x06\v\t\a\a\x05\x05\x03\x04\a\x01\x13\t\x15\x02\x04\a\x0e\x01\b+&+\x1c\x03\x03\x13\x0f\xfb\a\v\a\n\x02\x01\f\x06\b\t\t\x04\x03\x01\x1d\x12\a\x02\t\x05\x16\v\f\x0e\x0e\x05\x05\x03\x10\v\x03\x06\x13\x02\x03\a\x06\x01\x01\x03\x01\x027\x04\x02\x02\x05\x06\x03\x02\x02\x01\x04\x04\x04'\x04\x16\x06\v\f\x02\x01F\x01\x04\x0f\r\x02\b\x10\a\x06\n\x04\x02\x03\x03\t\x0e\x06\x04\x04\x03\x02\x01\r\v\x02\x02\r\x03\v\r\x05\f\r\x02\x01\x05\a\x04\x04\x02\x02\x06\b\x01\x04\x04\x06\b\b\x04(\x03\v\b\a\f\x02\x0e\x11\x01\a\t \x11\x18\x03\x03\x01\t\x06\x04\x02\x0f\x11\x01\x06\x01\x01\n\t\x03\xce\x06\a\x11\x11\x01\x0f\x0e\v\\x<=Z\x01\x03\x01\x16-#\x01\x02\x01\x04\x01\x05\x04\x04\x16\x12\t\x11\x04\x01\t&\x1d\x0e\x06\x06\a\f\x06\x06\a\a\a\x15\x18\x16-\x1b\x0f\x03\r\a\b\x02\b\a\a\x14\x05\x02\v\x02\n\x02\x04\x03\x06\x06\x05\t\x05\x04\x01\x02\x01\x02\x01\n\a\t\x0f\x11\n\x01\x10\x0e\x12\x17\x16\x8a\r\x05\v\t\f\n\x04\n\r\v\x01\x03\b\f\v\n\x10\b\x14\v\x11\b\n\x01\a\a\x06\x12\n\a\x02\a\t\x01\x01\x06\x04\x11 \f\n\x15\x04\x04\x02\x05\x02\t\a !*\x05\x1b\x11\v\a\x04\x02\v\x06\x05\b\x01\x04\x01\x03\x02\x03\x04\x05\x04\x02\x03\x1a\v\x12\x06\x16\x01\x01\x04\x10\x01\x02\x10\x01\x01\x01\x01\n\x12\x1f\x12\x06\x01\x02\x03\x06\x04\x16\x18\x0e\x0e\x1d\x1c\x14\x0f\b\x06\x01\x01\x03\x02\r\x03\x04\x05\v\x03\x01\x01\x02\x01\x02\x01\x01\x01\x02\x04\x15\x01\x13\x02\x05\a\r\f\x16\b\b\a\x1d$\x01\x02\x01\x02\x06\x01\x04\x10\f&\x01\n\x05\f\x03\f\x03\xfe\xb4\f\x12\x14\b\x1b\x04\n\x0f\x01\x05\n\x0f\f\x04\v\x17\x17\x03\b\x0f\n\x06\x11\x1c\x01\x02\x05\x13\x10<\x17\x10\v\x03\a\x1d\x1f\x17\x06\x15\x02\x03\v\x0e\x03\x06\x11\r\x13\n\v\x02\x03\a\x16\x0f\x19\x04\b\x18\x19\x14\x11)\x12\x01\x02\x04\n\xdd\r!\x03\x11\x0f\x17\x03\x02\x04\x03\r\x14\x12\x10\x01\x05\x05\x02\x1b\x0e$,\x10\x10\x03\x01\x18\x0f\x16\x15\x14\x01\x05\x16\x0f\x04\x18\x10\x01,\x1a\x03\t\t\x02\x03\b\x06\x0e\x04\x05\x01\t\n\x02\x01\x01\n\x03\x03\x05\x02\x01\x01\x01\x01\x01\x01\x01\b\a\x1b\x1c\x16\x10+/\x06\x17\x17\x03\x01\x03\t\x03\x15\x01\x04\x04\x05\x06\x04\a\x02\x06\x01\x1d\x03\x1c\x1b\x0e\x04\x04\x10\x03\a\f\x1c 0\tH\x02\v\x06\r\x06\n\x05\x01\r\x02\r\x03\x02\x03\r\x06v\x05\t%\v\f\x0f\x1003\v\b\n\r\x19\x10\x04\x04\x15\f\a\x01\x03\x03\x01\x05\x0f\n\x01\x03\a\x0e\x04\x01\x04\x01\x06\b\x012\x03\x02\x0e\x06\x031\x02\x05\x03\t\x10\a\x01\x01\x06\f\f\v\x03\x01\a\v\x03\x03\x01\x01\x01\b\x11\x18\x11\v\x05\x01\x03\x04\v\x17\x06\x14\x06\x03\x01\b\t\x0e\x02\x02\v\n\f\x03\x02\t\aC\x06\a\x01\x01\b\x06\r\a\x17\t\x04\a\x11\v\n\a\x06\x01\n\a\x03\a\x03\x02\x01\x02\f\r\x02\x01\x00\x00\x02\x00\x12\xff\xc0\x01m\x01\xc0\x00p\x00\x88\x00\x00\x05\x1e\x01\x17!\"76743\x16765&54'&'\x0e\x02\a\x163\x15#67436\x1727>\x017>\a46'4&#*\x01#.\x01'&3!\x06\a\x14\x0e\x02#\"#\x06\a\x0e\x01\x17\x16\x17\x16\x17\x1e\x01\x1723\x16\x17#5232'0&'&\a\x06\a\x06\x15\x16\x1c\x01\x15\x16\x17\x1632\x16&\x162>\x03767&'.\x03'+\x01\x06\a\x16\x17\x16\x01e\x01\x05\x01\xfe\xaf\x06\x01\x01\x04\ar\b\x0f\x01\x04\a)\x02\x06\x05\x03\x02\"s\x03\x01\x05\n\x10\x05\x02\a\x1e\x1e\x05\b\x06\x05\x03\x03\x01\x02\x01\x01\x19\r\x0f7\x1f\x05\x01\x01\x01\x06\x01S\x02\x01\x02\x01\x01\x040\x0e,\f\n\f\x03\a\x1e\r\x12\x1a\r\x0e\x01\x13\x01\x03t\x1a\x05\x05\x02\v\x02\x03\x06\x0f\x16\x06\x01\x01\x14\rd\x06\x03\xb3\t\t\t\v\t\v\x04\x02\x02\x10\x03\x03\b\x06\a\x03\x02\b\v(\x03\x03\a\x14\x04\x1f\t\x06\n\x1d\x06\x01\x04\x06\x11k\x16\x05\x01\x02\n\x05\r\r\x05\x03\x1c\x14\x05\x03\x01\x01\x05\x10IH\v\x14\r\x0e\x06\t\x02\x06\x01\x05\x01\f\n\x1a\x11\x03\x05\v\x05\x04\v\n\t\x01\x01\x01\x10\n\x15D\x1f-<\x16\x01\x06\x15\x1b\x04\x19\x06\x05\x02\x04\x05\x02\x06\x19@'\x01\x14\x03\x03\x01\xc9\x03\x03\x03\x03\x03\x01\x01\x01)\n\b\x17\x15\x17\b\x1ch\x02\x01\x02\x00\x00\x10\x00\x00\xff\xc0\x01\xbf\x01\xc0\x00\x1d\x00\xa1\x00\xec\x01\x19\x01Z\x01\xa3\x01\xe3\x02\x03\x02&\x02G\x02\xfa\x03\a\x03\x1a\x03!\x03-\x031\x00\x00\x13\x16\x17\x16\x15\x14\x15\x14\a\x0e\x02\a#.\x045\"=\x014547>\x017\a\x06\a\x17\x06'0.\x01#\x150>\x0116\x172\x15\x06\a\x06;\x012=\x01'#\"'&'&#\"\x15\x16\x15\x16\x172\x14\a*\x01&543:\x0165654'&\"#&72\x17\x1e\x01\a0\x141\x1e\x02\x17\x1e\x01\x172=\x014\x17\x163272\x150\x16\x15\x14;\x01&'272\x17\x1e\x0215\x06\a\"5&'4327&'\x17&'0.\x01'\x0e\x02#\"#6\x17272\x15\x14\x15\x06'&'4&'\"\x150\x161\x143\x16\x17\x16\x17\x16\x0e\x01\a\x06'&672=\x01674#\"#\"\x06\a\x06'676\x17\x16\x1725654#&546\x17\x16\x06\a\x06\x1d\x01\x17\x1432'>\x01\x1e\x023\x16\a\x14\a\x14\a\"=\x01&'&\a\x06\x15\x14\x167>\x0232\x150\x15\x0e\x02\x14\x061\x0e\x01&'&6\x17#\"'>\x015454'\"572\x17\x1e\x01\a\x06\a\x16\x17\x16725454'\"4732\a#\x06\x15\x14\x17\x1432\a#*\x01#\"'&'&*\x01\x15\x16\x15\x1432\x17\x06%\x06\a&+\x01\"#&76'&'4#\"#\"#\x061\x06\a\x14\x166\x17\x16\a0+\x01\"72676742\x17\x1e\x01\x17\x16325454'\"7032\x16\a#\"\x15\x1c\x01\x15\x16;\x01276\a\"'67236\x16\x15\x14\a\x14\"54&#&#\"\x1d\x01\x147636\x15\x14\x06'05&#&\x06\x15\x14\x15\x1c\x02\x163\x166762\x15\x14\a\x14#\"#\"43656'\x16\x15\x1c\x021\x06\"54'&\x06\x17\x1e\x01767456\x17\x14\a\x06'.\x0176\x172\x16\a\x06\x15\x14\x15\x163\x16>\x0176\x15\x16\x06\"+\x01\"&3656'4'\"43:\x01'\x1432\x14#\"#\"4;\x01265454'\"#&6323\x16\a0#\x06\x15\x06\x03:\x013>\x017+\x8d\"\x150\x1c\x01\x16\x1c\x02\x15\x14\a\x06\a\x06'&1&541474+\x01\x1e\x02'\x143\x16676&'&\"\a\x14\x17\x14\x17\x14\x06&565\x06\x16\x17\x163276&/\x01\"\x14326&\x06\x143\x16645.\x01\x06\x15\x14\x17'\x06\a\xe2\xd4\x05\x04\x04\tgi\x02\x03\x16=81\x1e\x02\x03\v\xcb\x06\taa\x1f\b\x03\f\r\x01 \x01\b\x01.\x16\x01\x02\xbb\x02\x06\r\f\t\b\x0e\x02\x0f\x02\x01\x01\t\x03\x02\x02\x1e\x04\x02\x01\x04\x02\x01\x05\x01\x03\x01\x03\x050\b\f\x01\x10\x01\x03\x03\x01\x15\a\r\x01\x02\x05\x06\x06\x06\x02\x01\x02\xba()\x01\x06\x02\x01\x03'#\x10Z\x01\x01\x02\x01\x04c4\x90W\n\x02&(\x04\x04*'\x01\x01\b+_\x03\x03\x02\x02\x01\x01\x01\n\x1b\x01\x04\x01\x04\x05\n\x02\x01\x04\x10\r\x1c\x06\x04\r\n\x02\x02\x02\x01\x03\x06\x13\n\x02\x03\x01\x01\x02\x01\x02\x05!\x01\x01\x01\t\x14\a\x05\x01\x06\x02\x01\x01\x13\xb8\x06\n\v\b\r\x05\x04\x01\x01\x01\x04\x03\x19\"\n\x03\x1c\x1a\f\n\x01\x02\x03\x01\x01\x01\x01\x01+.\x03\x02\x15e\x13\x02\x01\x01\x05\x03\x04\x03\x16\b\a\a\x06\x02\x04\t\b\x04\x06\x02\x03\x03\x03\x13\x05\x04\x01\x04\x01\x05\x04\x02\x02\x05\x15\x05\t\v\x03\x01\x01\x04\x04\x01\x03\x03\x01\x01\x01\x11\x03\x02+\a\x01\x02\x01\x02\x01\x01\x01\x01\x03\x02\x03\x03\x04\x04\x02\x02\x03\x04\x06\x03\x04\x02\x02\x1a\x02\x01\x04\x04\x02\x12\x01\x02\x01\x01\x13\x03\x02\x05\x04\x06\x03\x03\x16\x02\x01\x02\x02\x03\x01\x02\x01\x0e\x02\x02g\x03\x01\x02\x01!\x04\x01\x01\x01\x03\x04\x06\x04\x02\x01\x01\x0f\x01\x03\x02\x02\x01\x02\f\x01\x02\x02\v\x03\x02\x01\x02\x01\x05\"\x01\x02\x02\x04\x01\x05\x03\x01\x03\a\x12\x0f\x05\x04\x12\a\x05\x02\x02\x01\x06\x15\v\x0f\x01\t\r\x01\x02\x01\x03\x05\x01\x03\n\a\x01\x01\x02\x01\x03\x01\x02&\x01\x01\x02\x05\x01\x01\x06\x01\x02\x01\x12\x1c\x06\x02\x02\x0e\b\x02\x02\x01\x02\x01\x03\x01\x01\x02\x01\x02\x14\x01\x02\x03\x01\x03\x01$\x01\x02\x01\a\xb6\b(\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\r\x01\x01\f\x02\x01\x02\xb7\x01YeV\x03\b\x0f\x03\x05\a\v\x03\v\x02j\x01\f\r\x01\v\x03\x0f\x03\x04\n\x05\x04\x01\t\f\b\b\x04\x04\x03U\x02\x06\x06\x01\a\x06\xd4\x06\x02\x04\x01\xc0{\x02\x01\x05}~\x04\x01\x06:<\x01\r# \x1c\x11\x01\x02\x01\xe2\x1b\x03\x02\x06t\x03\x1487\f\x06\x01\x05\x05\xe687\x02\x01\x01O&\x01\x01\t\x01\r\n\x13\x02\x01\x1b\x06\x04\x01\x04\x01\x01\x02\x02\x02\x02\rC\f\x01\x01\x02\x03\x05\a\x1b\x13\x02\x01\x04\x04\x01\x19\x06\x02\x01\v\x02\x01\x01\x02\x02\x1a\x01\x01FG\x01\x01\x06C=\xe6\x05#\x01\x03\x03\x01'\x1eS\x97\x01\x03AG\x06\x06JBJ7\x01\x02\x14\x01\x02\x02\x02\x03\x04\x02\x01\x01z\x01\x02\x02\a\r\a\x0f\x0e\x01\x01\x19\r\x14\x03\x02\x01H1\x01\x03\x05\x05\x04\t\t\x03\x01\x01\x01\x02\x16\b\x02\x05\t\v\t\b\x06\x0e\x04\x02\x02\x01\x1e\x01\t\x02\x01\x01\x01\x02\x01\x03\x13\x05\x01\x01\x06\x01\x0f\x03\x04\x1e\a\n\x14!\x02\x01\n\n\x03\x01\x03\x06\x04\x04\x02\x06\x04\x17\x1d\x15\"R\x01\x02\x01\x04\v\x1d\x04\x01\x01\x02\x01\x01\x0e\a\x03\x04\f\b\x04\x01\x02\x04%\x06\x01\x02\x01\x03\x01\x04&\x05\x02\x03\x0f\x04\x01\x02\x01\x03\x05\n\x01\x02\n\n\x01\x01\x01\x01\x02\x02\x04\x06\x02\x01\x05\x06\x02\x01\x01\x01\x01\x02\x03\a\x05)\x01\x01\x01\x01/\x04\x02\x04\x02(\x03\x01\x03\x02\x01\x03\x01'\x01\x03\x04\x04E\x02\x01\x01\x01\x01\x01\x03\b\x01\x02\x03\x01\x01\x02\x10\x02\x01\x01\x01\x03\b\x06\x03\x02\x03\x01\x01\x06\x02\x03\x04\x03\x03\x01\x01\x02\x04\x02\x02\x05\x05\x02\x03\x01\x023n\x01\x04\x02\x05\x02\x02\x02\a\x02\x05\x16\r\n\x06\x02\x01\x05\x01\x01\x02\x04\v\x01\x03\x06\b\x1f\x06\x0eq\x03\x01\x03\x02!\b\x04\x01\x01\x05\x01\x04\x05\x06\x06\x03\x02\x01\x1c\x14\x03\x01\x03:\x04\x03\x03\x05\x10\x0e\v\x03\x01\x01\x02\x02\x01\x01\x02\x04\xfe\xc6\x05g\x05\x01\x05\b\n\v\t\a\x01\x04\x03\x02\x1f\x02\x02\x1f\x05\x05\x01\n&\x02\x013:\xba\x03\x02\x02\a\v\x19\x03\x01\x02\x01\x1a\x0f\x18\x05\x02\x06\x04$\x03\x05&\x06\x01\b\x06\x1b\x06\xc6\x0f\b\ae\x05\x01\x06\a\x01\x05\x05\x01\x01\x02\x17\x10\x06\n\x00\x15\x00\x00\x00Z\x02\x80\x01&\x00\"\x00'\x00[\x00r\x00~\x00\x83\x00\x9a\x00\xe2\x00\xe6\x00\xfc\x01\x17\x01'\x01<\x01J\x01X\x01_\x01l\x01\x88\x01\x98\x01\xab\x01\xd0\x00\x00%\".\x015&\x14\x17&7'\a46?\x01\x16\x14\x06\x1567\x06\x156\x17\x06\x16327\x1e\x01\x17\x066\x14\a6'\x17\x14\x06'\x167\x06&5\x06\x17&'46&'.\x01<\x01.\x015\x14\x172\x163\x16\x15\x14\x170\x16\x17\x1e\x023\x166'\x1e\x01\a\x1674'6\x16'67&\a67\a2>\x013\a0?\x012\x17&\a&\a&\x172\x16\x15\x14#\"'75'6\x17\x1654\a%'4>\x01\x172\x15\x14\a&16&#\"\x06\x17\x06\x17&'\x06\x176'3&7\x1e\x01\x174'&7\x14\x16\x15&'&'&7\x14\x16\a\x16\x1527\x16\a6&\a5&\a6\x17\x063\x153\x06#65\x06#6'&\a67\"'6\x17&\a2\x17\x06\a61&\a>\x02\x17&'\x16\x17707\x15&#\a&#\x16\a\x06'5063632\x17\x05\x1e\x01\x14\x15\x14\a\x0e\x04*\x02#75'35'32\x16\x15\x14'\x152\x162>\x02=\x014.\x02#\"\a:\x03>\x045#54.\x02*\x02#\x17\x153\a#75'3\x17#\x153\a72\x1e\x02\x0e\x02#\".\x01>\x01\x1726&\"\x06\x16'\x15\x17#75'3\a\x177'3'&'\x1632\x170\x0e\x02\x1563\x06\x157\x06\x17\x06+\x01676=\x014\x17\x150:\x02>\x024.\x02\"&\x06\x173\a\x15#.\x01'\x15\x17#75'3\x1e\x01\x175'\x1e\x02\x15\x14\x0e\x01#6'254.\x02*\x02#\x15&\a63&\a67\x06\a4'&'\x16\x01:\x05\a\x04\x03\x01\v\x06\x01\x02\x05\x02\x02\x01\x01\x03\b\x02\x04\x04\b\x03\b\b\x06\x01\x06\x01\t$\x05\x02\x02\x0f\b\x06\x05\x04\x03\x14\x05\x05\x06\x01\x01\x04\a\x02\x02\x04\x01\x03\x01\x03\x01\x01\x01\x05\x02\x01\x04\x04\x01\x04\x05\x01\x03\x01\x03\t\x01\x05\x05\b'\v\r\v\t\x02\b\x01\x01\x03\x05\x02\x03\x02\x06\b\x05\b\x05\r\t\x05\xf1\x1b!;\x18\x1c\b\b\x1b\b//\xfe\xfa\x04\x01\n\t\x11\x05\b\x03\x03\x05\x03\x04\x01\x02\x01\x05\x02\x03\x01\x01\x06\a\x02\x01\x02\v\x01\x04\x03\x04\x0e\x01\x06\x02\x01\x01\x02\x0f\x01\x02\x02\x01\x01\x06\x01\x04\x03\x01\n\x03\x02\x02\x03\x03\x03\x06\x03\x01\x02\x05\x04\x03\x05\x01\x05\x02\x03\x04\x05\b\x05\x02\x02\x06\x05\x01\x01\a\x01\x05\x04\x1a\x01\x03\x01*\x01\x02\x02\x03\x05\x03\x02\x05\x06\x01\x01\x01\x01\x03\x04\x03\x02\xfe\xe3\n\t\n\x02\x05\x05\t\a\x0e\f\x17\t\b\v\v\b8\x0e\x179\x01\b\x06\a\x04\x03\x02\b\a\b\x03\x01\x02\b\x04\x06\x03\x04\x03\x02\x01\x01\x02\x04\x05\a\x05\b\x01e<\x0eQ\a\aI\x0e4%\x0e\xbf\x10\x18\r\x06\x06\f\x19\x10\x16\x1d\x06\a\x1d\x15\x13\x0e\x0f#\x0f\x0fJ\a*\a,-\x06\x15\x14\x06*I\b\x01\a!\x19\a\x03\x03\x04\x03\x06\n\x03\x02\x01\v\x0f#\x04\x04\x02\x13\x05\x03\x06\x03\x04\x02\x02\x04\x03\x06\x03\x05\xe5'\a\x16\x02,\x02\a'\a\a\x1f\x02)\x03r\x0f\x11\x02\x04\x12\x0f\a\t\x13\x01\x04\x04\x05\x03\x05\x01\x04\x03\x03\x03\t\x06\x01\x03\x03\x03\x03\b\x02\a\xce\x04\x03\x01\x03\x04\x01\n\x10\x02\x02\x04\a\x02\x01\x01\x01\x04\x03\x05\x03\x03\x04\x05\x02\t\x12\v\x01\x05\x01\x12\x19\a\x01\x05\x04\n\x05\x06\x01\x04\x02\x06\x03\t\x05\x04\x02\x05\x03\a\x03\x05\x02\x03\x03\x02\x03\x02\x03\x03\x01\x01\x01\x02\x01\x01\x01\x01\x01\x03\x04\x03\x04\x03\x02\b\x02\x02\a\x05\x01\x01\a\x0e\x0f\x01\x01\n\b\x05\x04\x02\x04\x04\x01\x01\a\x03\x05\b\x18\x043\x1b\x161\x02\bN\b\x02L\x06! \x05d\a\x03\b\t\x01\x10\b\x06\b\x04\n\x06\x04\x04\x04\x03\x06\x04\v\x03\x02\x02\x04\x03\x06\x03\x04\x02\a\x04\x05\r\x02\x04\x05\x02\x01\x04\x03\x04\x0f\x05\x01\x01\x02\a\x03\x03\x03\x01\x04\x03\x04\x01\x01\x04\x05\x05\x01\x03\x01\x03\x05\x04\x03\x04\x02\x01\x03\x01\x02\x05\x01\x01\x05\x05\x03\x01\x01\x03\x02\x06\x03\x01\x04\x04\x01\x01\x12\x01\x01\x03\x05\x02\x01\x01\x10\x02\x04\x02l\x03\f\x04\x06\f\x06\x01\x02\x01\x01\x01\t \x0f\x1d\t\v\x0e\x10\x18\x15\x01\x01\x02\x04\x03\x02\x04\x04\x01\x01<\x01\x01\x01\x02\x03\x02\x04\x02\x04\x02\x01\x03\x10\x15\tM\b\x15\x0f\x15<\v\x12\x15\x15\x12\v\x15\x1d\x1d\x15N\x1c\x1c\x1c\x1c\t\x13\t\t\x13B\a&&\aU\x06\t\x04\x17\x02\x02\x03\x01\x01\x06\x0e\x03\x06\x06\b\x01\x03\x02\x04'\x05\x04\"\x03\x03\a\b\a\x03\x03\x01\x01O\tU\a,\x050\b\tL\t\x04'\b*i\x01\x10\f\x05\x05\r\x10\t\b\x11\x04\a\x03\x03\x04\x01\x01\x02\x03\x06\x02\x03\x01\x03\b\x02\x06\t\x04\x00\x05\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\t\x00\x19\x00#\x005\x00>\x00\x006\x16\x1d\x01\x14\x06+\x0153%2\x16\x15\x11\x14\x06#!\"&5\x11463\x1354&+\x01\x1532675#\"\x06\x1d\x01\x14\x16735#535#5\x177#\a'#\x17\x1e\x01r\f\f\x06\x11\x11\x01(\x12\x1a\x1a\x12\xfe\x98\x12\x1a\x1a\x12n\x17\x180/\x19\x17e?\t\v\f\t>5 \x9d&!\x1d\x1e &\b\x1d\xf4\t\bF\t\bh\xac\x1a\x12\xfe\x98\x12\x1a\x1a\x12\x01h\x12\x1a\xfe\xfdG\x11\x1e\xa5\x1dj\x1e\f\t}\b\f\x01\x1d&\x1e&s\x91rr\x91\x13\x03\x00\x00\x05\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x03\x00!\x00G\x00K\x00O\x00\x00\x01\x17\a'3\x16\x1767\x1e\x01\x1767&'&7>\x01\x17\x16\x17672&1&'&\x06\a\x06\x1767.\x04'\x0e\x02\a.\x01'\x061\x06\a\x06\x17\x1e\x01\x17\x16\a\x0e\x01'&'\x06\a\x16\x17\x166\x03\t\x023\x177'\x01\x00\xdf\xdf\xdf7\x16\x13:\x04\x06\x19\x06\x0f\x15\n\x1a\x02\x02\f \r\b)\x19\b\x01\x01\"\x1c\x19A\x1eJ\xd4D!\x04\t\b\b\b\x04\a\x18\x15\t\a\x19\x06\x02\x1c\x04\x02\x03\x06\x17\x03\x03\x03\r!\x0e\x06&\t\x1b5\x14\x15=*\x01\x00\xff\x00\xff\x00\x10\xf0\xf0\xf0\x01\x9f\xdf\xdf\xdf\x15\x149\x04\x06\x19\a\x0f\x14\n\x1a\x03\x02\f\x03\n\x06&\x1a\t\x03&\x15\x14\b\x1eK|D!\x04\b\b\b\b\x04\a\x17\x15\t\a\x1a\x05\x01\x1c\x04\x02\x03\x06\x17\x03\x04\x03\f\x01\v\x05%\t\x1b6\r\x0e\t\x01\u007f\xff\x00\xff\x00\x01\x00\xf0\xf0\xf0\x00\x00\x05\x00\x00\x00\t\x02\x82\x01x\x00\x04\x00\x0f\x002\x00K\x00^\x00\x00\x01\x16\x17\a6\a6\x17\x16\a\x06\a\x06\a'6%\x16\x15\x16\x0e\x01'\x14\x06\a\x06#\"&/\x0145467'&54>\x01\x1767676\x16\x17\a>\x017>\x01.\x01#0#\"\a\x06\a\x177\x17\a\x177'\a'7\x177'\a'\x06\a\x177\x0f\x01\x177'\a?\x01\x17\a\x01\xa6\x04\x15(\x0e\xcd\x15\x06\x06\x15\x06\a\n\x18\x05\x17\x01Wb\x01o\xb3o\v\tw\x04\v\x10\x01\x04\n\b\x02QV\x8dR\x05\x0eO9\n\x12\x05\xf2\r\x1e\b\b\x04\b\x1b\x14\x01\vX2$\x04\x15\v\x14\x04s\x04\x15\x020\xddm\x04\x15C=J\x04\x11!\x15\x04q\x04\x13\x04:\x06\x0f\x01\x1c\t.\v>/\x05\x11\x14\v\x03\x02\x03\x06.\x06\x1f18'8\v\x16\n\x10\x03\x1f\x0e\v,\x02\x01\b\x0f\x03\x12-2$3\x13\a\r\x04\x15\x0f\x03\t\t\xd0\x03\x13\v\r$!\x17\x18\r\n,\x05s\x05,\x1e-\x06\x18\r\v\x1d-\x06\x91\x10\x14,\x04~\x06,\x1e'\x05\x12\x0f\x0e\x04\x00\x1a\x00\x00\x00\x03\x02\x81\x01}\x00\x06\x00\x1c\x00%\x00W\x00a\x00h\x00\x91\x00\xa9\x00\xd9\x01\x02\x01*\x01=\x01U\x01`\x01\u007f\x01\x9a\x01\xb5\x01\xc6\x01\xe8\x02W\x02\\\x02b\x02y\x02\x84\x02\x8c\x02\x94\x00\x0076\x17\x16\a\x06&\x05654&'&\a#6'76\x17\x1e\x01\a\x06\a\"10'4?\x01\x06\a\x06#&'2\x16\x17\x06\a\x16\a#4'\x06\a\x16\x15\x14\a5654'\x16\x17\x06\a&'\x16\x15\x14\a654&#\"\x06\a#.\x01/\x01>\x04\x036'&\a\x0e\x01\x17\x1e\x017\x17'\a\x177'\x17>\x0215\x06.\x01'675&'\x06\a#&'5676\x177.\x01#5\x06\a\x156\x17\x1e\x03\x06\x1575\".\x01'56\x175'#\x06\a\x1734>\x013\x16\a\x1507&'.\x01'&7\"\a\x152\x1f\x01#0\x06\a4/\x015\"\a2\x17\x14\x1e\x01\x15\x16\a67&'4.\x011767\x17\x16\x17\x156767#\x0e\x01'4.\x0156\x17461#\x06\a#&56\x173&'5\x06\a#\x16\x17\x14\x1e\x01\x17\a\x1563765\x16\x17\x1635\"'&'474656'.\x01\x06#\a\x176\x17\x16\a\x0e\x03\a\x0e\x01\x17\x1672\x17<\x0115&\x06\a\x06\x167507\x06&7>\x017\x16\x15\a\x06#\a\x16\x177.\x0176\x177.\x02\x0f\x017&#\x17\x1676&'&\a\x06\x1e\x01\x17&561\"&'\x1d\x01\x06\x0f\x012\x17\x16157>\x0172\x170\x15\a\x152\x1e\x01'\x06\x163\x16>\x011\a\x16\x177&67>\x027&'\a\x16\x0f\x01&\x06\x1775.\x01\a\x06\x17\x16\a\x06\"&7#\x06\x15\x1e\x0176'&762\x16\x177&'\a2\x17\x06\x0f\x02\x174767\x16?\x01.\x02\x0e\x01\x1e\x023\x16\a\x06'45'\a\x1e\x023654&54\x17\x16\a\x14\a73.\x02#&\a7\a'7'\"\a'\x170#&7'\x0e\x01\a'\x17\a'\x16\x17\a'\a\x17\a7\a'\a\x17\a'\a\x17&'.\x01?\x01'\x06\a\x17>\x02\x17032\x16\x17\x16\x177'\x17\a7\x16\x17'\a0\x17\x16\x06\a\x1767'\x06'&/\x02\x17\a67'\a\x06\a7\"\a\x17'7\a6\x17\x1e\x03%\x1763'\x17\a'>\x01\x16'2\x1e\x03\x15\x14\a#54.\x02#\"\a#&'56\x05\x0e\x02#\"7>\x01\x17\x16\a\x16\a\x06'&76\x17567\x06\x15\"&\xdb\v\v\n\n\v\x16\x01\\\x049+aW\x01\x01\x05\x01Yc.:\x02\x01\x04\x01\xa4\a\x0f\x01\x01\x02\t\b3o\xa9\v\x03\x06\x01\x01\x01\x02\b\b\x04\x10\f\x0e\x04\x03\x16\x05\x04\a\f\x1c\x16I9E|,\x01\x1cr6\x01\b\x19CIo*\x11\f\r\x12\b\x02\x05\x06\x10\v\x02\x04\x0e\x19\f\v\t\x01\x04\x04\x01\x02\x05\x04\x05\x06\x01\x01\x03\b\x01\x04\x01\x06\x06\x03\x02\x01\x01\x02\x01\x11\t\x03\x02\x04\b\x03\x03\x018\x01\x02\x06\x06\n\x03\x03\x01\x17\x05\x01\x01\x05\x04\x01\r\x017\x02\x01\x01\x04\x01\x01\x01\x02\t\x02\x01\x03\x01\n\x03\x01\x02\x03\b\x02\x01\x04\x05\x01\x01\b\x02\x02\x01\x02\x02\x01\t\x03\x01\x02\x01\x04&\x01\x01\x01\x01\r\x02\x01\x01\a\x03\x01\x01\x02\b\x01\x01\r\x03\x01\x01\x01\x0e\v\x01\x02\x01\x02\x02\x01\x01\x10\a\v\a\x02\x02\x12\x03\x04\x01\x01\x01\x01\x02\x01\x01\x02\x0e\x15\r\x05\x03\x0e\r\x06\x04\x02\a\a\t\x03\x06\x04\x04\x06\f\x05+\v\x10\x02\x02\x14\b\x02\x05\x12\x02\x02\x0f\v\x05\x05\x01\a\x01\x13\x12\x01\t\x01\x05\t\f\v\x01\x03\b\x03\x0f\x01\x0e\r\v\x0e\x04\x02\x06\x06\x0e\x05\x02\x02\a.\x01\x01\x01\x05\x02\x06\b\x03\x02\x02\x02\x01\x01\x02\x01\x01\x06\x02\x01\x03\x04\x04\n\x06\x0e\x02\x05\x02\x02\x0e\x04\x02\x03\x03\v\x02\x03\x06\x03\a\x10\x02\a\x02\b\x02\x18\x15\x03\x03\n\x02\x02\x04\x03\x01\x01\x04\x04\x01\x01\x02\x02\v\x02\x03\x04\x03\x01\x01\x03\x03\x16\x01\x04\t\x03\x04\x02\x03\x06\x02\x01\x06\x01\x04\x05\x03\x1d\b\x01\x04\f\f\x05\x01\x03\x04\x01\x02\x06\b\x02\x03\x05\x02\x04\v\x04\r\a\a\x05\x01\x02&\x01\x0fHL%CA\x15\"\t\a\x03\x03\x04\f\r\x01\x10\v\x03\x02\x13\v\x17;\x05\x11\x02\x03\x1d\x1e\x11\x0e\f_\x04\x01\r\x05\x04\x1a(\x13\f\x11\x1a\n\x03\b\x04\x1b\x1f\x05\x01\x03\a\x02\x01\x04\f!$\x1c\f\x1c$\x05*\x1e\x03\"\x02\x17\x01\x02\x05\x03\x12\x15\x01\n\x02\x02\x13\n\x02=\r\x17\x1b\x01\x05\x01\x12\x16\x1e%\x04\x19[UCB-K+\x17\xfem\x03\a\x04\t\x8b\v\x16\x03\x11\v\x1bAnI3\x17\x01\x01,MsB<2\x01\b\x0e7\x01\x0f\x04\a\x04\x03\b\x02\x01\n\x06\n@\b\x03\x03\t\t\x03\x04 \x04\x03\x01\x02\x03f\t\x10\x0f\b\t\x1fD\x0e\a\x19(\x03\x06P\v\n\x02G\v\x05,\x1d\f\b\xb6\b\a\v\x1b\x03\a\x01\xa1sR\x02\x03\v\x05\x06\t\x05\a\n\x10\x1c\n\x01\f\x14\x19\x10\b\n\x15)\t\a\x0f\x17\x1c\x14\x13\x1c\x1f1G9Si\x0e\x02\t\x192&\x1e\xfe\xde\x0f\x10\x13\r\x06\x14\a\a\x03\x8e\b\x05\x1b\x1d\x06G\x87\x01\x02\x03\x01\x01\x01\b\b\x04\x01\x01\x03\x02\x02\x06\t\x01\x01\x06\x02\x01\x01\x01\x01\x03\x01\t\a\x01\x01\x03\a\f\x04\x06\x01\x02 \x01\x01\x0e\x0f\x01\x03\x01\x01\x05\n\x03\x06\x02\x03\x02\x1e\x02\x01\x16\x01\x03\x03\x15\x02\x03\x02\x02\x01\x04\t\x03\x01\x01\x04\x04\x05\x03\x04\x01\f\r\x01\x03\x02\x03\x01\x01\x03\x01\x06\x06\x01\x03\x01\x01\t\x04\x05\x02\b\x03\x03\x03\x03\x01\x01\x06\x05\x01\x01\x01\x02\x03\x01\x01\x06\x04\x03\x03\x03\x02\x01\x01\x02\x01\x03\x03\n\n\x03\x04\x01\x04-\x04\x02\x04\x04\x01\x05\x01\x02\x04\x0e\a\x01\x14\x02\t\x03\t\b\x01\x10\x03\x0e\t\x05\x06\x02\x05\x03\x04\x03\x06\x11\t\v\x01\x12\x01\x04\x01\x06\a\t\f\f\x05\x01\x06\b\x06\f\n\x04P\x01\x037\a\x05\x03\x04\x05\x02\x0f\x1d\a\x06\v\x01\x03\x04\x01\v\x12\ay\x03\x0f\x06\v\x02\x05\x0f\x05\b\a\n\x01\x02\x1a\x02\x01\x01\x02\n\n\x02\x01\x01\x01\x03\x01\x04\x01\x03\a\x02\x01\x01\x01Y\x0f%\x01\x02\x02\a\x06\x02\x04\x04\f\x1e\a\b\x10\a\a\x0e\x04\x05\x06\x1a\n\x01\\\x03\x01\x05\x01\x04\x03\x06\x06\x03\x02\x05\x02\x04\x01\x04\x01\x04\x05\x05\a\x01\x01\x03\x10\x04\x03\x06\x04\x02\x06\v\x01\x01\x04\x02\x02\b\b\x02*\n\x03\x06\t\x02\b\v\t\t\t\x01\x02\v\x03\x03\x02\x0e\x02\x03\x06\x02\x0f\x04\x15\x02\a\x03\x03\x06\x01\x06\a/B\x1b\x01%=A\x15\x02\b\x02\x1d=\b\v\v\x01\x05\x04\f+\x02\x0e\x04\x10\r$\t*\x05\x1d\n\x03\x04\x18\r\x1f\n;\f\x12\x1b\r\x06\a\a\x13\x18\x06\x01\x02\x03\x01\n\x1e!\x19\b^+\rXF\tD\x05;\b\x02\x03\x05\b\a\x05\x02\x06\x047\x05\b%+\x06\x04\x1b\x02\x15\x01P\t\x10\x13\x15\t'\x01\x01\x1f/#b\t\x02\b(&\x11\f\v\x02|\x1f2=;\x1b\x10\x03\n(P@(\x0e\b\x04\x01\x0e\xaa\x10\x10\x03\x0f\n\x18\x01\x017\x02\f\r\x02\x02\r\r\x18\x01\x06\x04\v\x01\x01\x00\x00\x02\x00\x17\xff\xc0\x02)\x01\xc0\x00\a\x00\r\x00\x00%\v\x01'\x1b\x0173\x05\x1b\x01#\x03\a\x01\xd1\xce\xcc \xec\xce7 \xfeF\x96\xec!\xcbv'\x01a\xfe\xa0\x01\x01\x97\xfe\x9e_j\x01\x02\xfek\x01]\xca\x00\x00\x00\x00\x1a\x00\x02\xff\xbf\x02A\x01\xc8\x00\t\x00\x13\x002\x00N\x00e\x00m\x00\x82\x00\x85\x00\x99\x00\xb6\x00\xc2\x00\xca\x00\xe1\x00\xe9\x00\xfa\x01\x02\x01\f\x01Q\x01l\x01\u007f\x01\xe2\x01\xf9\x02\x03\x02\r\x020\x02:\x00\x00?\x01'37\x173\a\x17'\x177'37\x173\a\x17'\a2\x16\x15\x14#\"=\x01432\x15\x14+\x01\"54\"\x1d\x01\x142545<\x0163\a2\x1d\x01\x14+\x01\"=\x014\x1732\x1d\x01\x14+\x01\x1532\x1d\x01\x14+\x01\x15'\x17\x16+\x01\"5'#\x15\x14+\x01\"=\x014;\x012\x1d\x01\x14'54+\x01\x15327\x17\x16+\x01\"5'#\a\x14+\x02\"?\x014;\x012\a3'\x17\x14+\x01\"=\x01#\"=\x014;\x012\x1d\x01\x14+\x01\x172\x1d\x01\x14+\x01\"=\x014;\x012\x1d\x02\x14+\x01\x1532\x1d\x01\x14+\x01\x15'2\x1d\x01\x14+\x01\"=\x0143\x1754\"\x1d\x01\x142'\x17\x16+\x01\"5'#\x15\x14+\x01\"=\x014;\x012\x1d\x01\x14'2=\x014+\x01\x1572\x1d\x01\x14+\x01\x153\x14+\x01\"=\x0143\x1754+\x01\x1532\a3\a\x17'\a7'3?\x01\x1e\x01\x0e\x01\a\x16\a\x06#\"&'&'\x06\x16\x17\x1e\x02>\x017\x16\x17\x0e\x03&'.\x017.\x035467&7632\x16\x17\x16\x176&'.\x01\"\x0e\x01\a&'>\x01\x1e\x01\a\x16%\x0e\x02\x14\x1e\x0416767\x16\x17\x06\a632\x17.\x01#\"\x016'\x06\a\x06\a&'67\x06#\"'\x1e\x0132767>\x02.\x01'&'\x06\a\x06\a&'67&'\x16\x17\x06\a.\x03'&#\"\a\x06\a\x06\a&'67\x06\a\x16\x17\x06\a&#&'\x0e\x02\x16\x17670327\x163\x06\a\x16\x17&'27\x16\x17\x16\x17\x163276727\x16\x17\x06\a67&'675\x163\x16'32\x1d\x01\x14+\x01\"=\x014;\x012\x1d\x01\x142=\x0143\a3\a\x17'\a7'37\a\x17\a\x17'\a7'?\x022\x1d\x02\x14+\x01\"=\x024;\x022\x1d\x011\x14+\x02\x15;\x012\x1d\x01\x14+\x02\x157\x173\a\x17'\a7'3\xfb\x02\x06\a\x02\x03\a\x06\x02\x06:\x02\x06\b\x02\x02\b\x06\x02\x06a\x03\x01\x11\x11\x11\x11\x04\x03\x04\f\f\x02\x02N\x04\x04\x16\x03\x03\x16\x04\x04\x0e\v\x04\x04\v\x1c\b\x02\x05\x03\x04\b\x05\x04\x04\x03\x03\x0e\x11\f\x06\x05\x05\x06P\v\x01\x04\x04\x04\x02\f\x02\x03\x01\x03\x04\x01\v\x04\a\x04\f\t\x05U\x04\x03\x04\a\x04\x04\x19\x04\x04\a\xf8\x02\x02\x17\x02\x02\x17\x02\x02\x13\x10\x02\x02\x10J\x0f\x0f\x01\x0f\x0f\v\x15\x15.\n\x01\x02\x02\x02\v\v\x02\x01\x02\x02\x0e\x0f\x10\v\v\n`\x0f\x0f\v\x01\x02\x02\x02\x02\x18\n\n\n\n\xc9\a\x06\x02\x06\x06\x03\x06\a\x02\xe6--\a=8\x19\x19\x0f \"b2-(\x0e\v\x13\x02\x05\x17\x19*\x17\x06\x05\x13#\x1d\x1a\x15\t\x18\r\x0f\x0e\x1c1\x1fA7\x18\x18\x10 \"a3+*\r\n\x13\x03\a\x16\x19)\x17\x05\x05(I3\v\x0e\x12\xfe\xb2\x04\x04\x02\x02\x02\x03\x02\x02*+\x17\x1b\x05\x05\x16\x14\x1b\x1b\x14\x14.X\x1d\x18\x01&\x15\x16%0\x17\x1c\x05\x05\x17\x13\x1a\x1b\x14\x14-X\x1e\x17\x15T\x16\x02\x02\x01\f$\x1e\x11\x12\x05\a\x06\x03\x03\x04\b\x06 (\x12\x11\a\x04\x04\b\x05\x0f\n\x19\x19 \x1f\x12\x11\x06\x04\x01\x05\x0f\x12( \x06\t\x01\x01\x05\n\a\x054:\x049:\x06\a\x01\x03\x03\x02\x06\b\x06$$\x11\x10\b\x04\x02\x01\x11\x14\x19\x19\x1f\x1f\x12\x10\a\x04\x03\x03\x0f\x11$$\x06\t\x03\x03\x03\a\am\x01\x02\x0f\x01\x0f\x02\x01\x02\x14\x02\f\a\x06\x02\x06\x05\x02\x06\a\x02\x1c\a\x06\x02\x06\x05\x02\x06\a\x02\b\x02\x02\x17\x02\x02\x16\x01\x01\x01\x01\x13\x10\x01\x01\x01\x01\x10\f\x03\a\x06\x02\x06\x05\x02\x06\a\xec\a\x04\a\a\x04\a\x04\x04\a\x04\a\a\x04\a\x046\x04\n\x0e\x0e(\x0e\x0e\f\n\x06\x06$\x06\x06\x01\x02\x04\x03\x02\x12\x03\x03\x03\x03<\x04\x01\x03\x03\x03\x13\x03\x03\x03\x14\x13\x18\x04\x03\x17\x17\x03\x03;\x04\x0e\f\t\v\t\x06\x15\x1b;\x04\x03\f\f\x03\x04;\x03*\x1d2\x03\x036\x04\x02\x03\x03\x02\x045\x02\x01\x01\x01@\x01\x01\x01\x01\x01\x1a\x02\x01\x02\x1b?\x0e(\x0e\x0e(\x0e4$\f\f$\v\x19\x1b\x02\x01\x1b\x1b\x01\x01@\x01\x0e\t\v\x01\v\a\v\x1d!\x0e\n\x0e\x1b\x01\x01@\x01\x17\b\v\x1e3\x04\a\x04\x04\a\x04\a\x81\x1100/\x10[+\x1cHF\x04\t?@\v\x01\x03\x01\t\x1b\x16\x05\x05\x12\x1a\x0e\x05\x03\x05\x0eN>\x03\v\x16$\x14\x1e2\x0f[+\x1cGG\x04\t>A\v\x01\x03\b\x1b\x16\x05\x05'\x1e\x1cQ;\x04\x80\x06\x11\x11\x13\x11\x10\x0e\n\a\v\x04\"\x1e\x05\x05\x19\x1c\x02\x01>@\xfe6'T\n\x05\"\x1e\x05\x05\x19\x1c\x02\x01>@\x9e\x18'\x04\x06\x17\x13\x1b\v\a\x04\x13\x14\x01\x05\x03\x02\x16\x16\b\x04\x1b\x1d\x02\x05\x05\v\n\x17\x0f\x02\x03\x1a\x1f\x02\x06\x05\x03\x1c\x1b\x04\t\x15\x16\x01\x01\x05\x11\x13\x0f+--\x10\x14\x14\x01\x01\x16\x15\b\x04\x1a\x1d\x03\x01\x01\x1e\x1b\x02\x03\x1a\x1d\x04\x02\x01\x1d\x19\x04\t\x15\x15\x01\x02\x01\x06\x12_\x014\x0e\x0e4\x01\x012\v\v2\x01U\x04\a\x04\x04\a\x04\a\x0e\x01\x04\a\x04\x04\a\x04\x01\x06\x18\x01\x01\x01\x01\x01?\x01\x01\x01\x01\x02\x1a\x02\x01\x02\x1bd\a\x04\a\x04\x04\a\x04\x00\x00\x03\x00\x19\x00\x00\x01\xe7\x01\x80\x00\x02\x00\x05\x00\n\x00\x00\x013\x11\x01\x03\x11\x1f\x01#'#\x01<\xaa\xfeު\xe6lJ\x1eO\x01\x80\xfe\x80\x01\x80\xfe\x80\x01\x80\x8e\xf2M\x00\x00\x00\x00\x03\x00\x02\xff\xe0\x02\b\x01\xa0\x00\x06\x00\x0f\x00\x12\x00\x007!\x17!\"&'%\x16\x0f\x01\x0132\x16\x17\a#7\x02\x01;;\xfe\xe3\r\x1b\x06\x01\xc9\x11\x13)\xfe\xffX\r\x1b\x06=\xe7tGg\x11\vf\x1b G\x01\xc0\x10\v\xf5\xc8\x00\x00\x00\x02\xff\xfd\xff\xbf\x02\x03\x01\xc1\x00\f\x00\x1f\x00\x007\x1e\x01\a\x06+\x01\"&?\x01>\x01762\x17\x13\x16\x06+\x01\"'.\x05>\x01\x982\x1e\x1d\x04\t\xaf\b\t\x04}\x04\x0fb\x06\x10\x04\xf0\x04\t\b\xae\t\x05\t'\x15\x1f\f\t\t\x19\xd46\x9b;\b\x0e\b\xfb\b\x01\xde\b\b\xfe\x1e\b\x0e\b\x12J*H3G\x1b\x05\n\x02\r<\a\r\x05\aZ\x00\x00\x00\x10\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00\a\x00\x0f\x00\x17\x00\x1b\x00#\x00+\x003\x007\x00;\x00C\x00G\x00K\x00O\x00W\x00_\x00\x00\x01\x17\a5\a73\x15'7\x17#\x15\a'5\x0f\x01#\x15'7\x153?\x01\x17\x15\x17\a5#'735%53\a\x17\x15#'%\x15'\a#57'\x03#'7'57\x1f\x01\x15#7'53\x177\x15\a'\x17\a#5\a'53\x17\a'357\x17\x15'\x17#5\x1773\x15\x01\"\x1fLv -#78-\v\v\x12\v\x8088\x80ZL B8\x80\n\n\x80\xfe\xb9P [\x10Z\x01\x1c Z\x0fZ\x1fd- M\x8b!L\xd0N\x1fZ\x0fZ L/\x1f-\x93!mj87,\v\vz P!Z\x10\x01^\x1fMl\x1f\x1flv88\x80\n\n\x80\xa8\n-78-\nM -\x157-\n\v-\x18N\x1f[\x0f[.N [\x0f[\x1f\xfe\xc4 LG- MdO Z\x10[[- Mj l/ -\x9477\x80\v\v\x80* O [\x10\x00\x00\x00\x00\x02\xff\xfa\xff\xc3\x02\x06\x01\xbd\x00#\x00F\x00\x00767>\x05\x16\x17\x16\x17\x1e\x01\x0f\x01\x15\x0e\x01'&'.\x04\x0e\x02\a\x06/\x01&\x01\x06\a\x0e\x04\"&'&'.\x01?\x01>\x01\x17\x16\x17\x1e\x02>\x027076\x1f\x01\x16\x02\x03\x05\x0e\x11($\x02\a53\a3613\a373\x15'3\x15#\a73\x15'3\a#73\a3\x173\a#\"&7\xee\x16;\x16\xfe\xd7V\x04R\xadD\x16#d)3\a\x04\x01\n\x04\x01F>(>\xfeM\x04[\xce\x05\ap\x15u\x15\x10\a\x0e-\t\x04\x01\x04\x04\xcdN\x05\xfa\x16;\x16\xa3\x05ZIIM\t\x04R\xfa:'\x90(:\x16\x1a8\x85\x16^\x11\r\a\x93\x1e\x1e\x12\x06\x12\x1e7\x05\x01\x0e\x05\a5<\x06\x06\x1b\x06\x1b\x19\n\x12\x05\x02\x05\x067\x06\x06\x1e\x1e\x06\x06\x1e\x06\f\x06\x06N55\x1e\x1e\x1e\x0e\a\x00\x00\x00\x00\x01\x00\x18\xff\xdf\x01\xe8\x01\xa1\x00.\x00\x007\"\x061\"&5064.\x01'&>\x01\x1e\x0112506162\x1e\x0232>\x011\x1e\x010\x06\a0\x16\x150\x06#0&\xfc\x01X\x01VWAG\x02\x01 \x01HI\x01\x02\x01g\x02\x02\x02\x01\x01EE\x01\x1f\x8c\x01SV\x01Y]w<\x01~\x02\x16\x17\x01\x01e\x01\x18\x18\x02\x95\x01\x01NN\x18\x17\x01f0\x01z\x01?}\x00\x00\x06\x00\x00\x00Z\x02\x80\x01 \x004\x008\x00?\x00K\x00R\x00^\x00\x00%\x17#'\a#5#\x06#\"&'#\x14\x1673\x0e\x01&547#\x15#53\x15#\x153\x15>\x01\x16\x17>\x0132\x17353\x15#\x153\x1773\x053.\x01\x1626&#\"\x06\x175#535#535#\x1573\x157'\x15#\x1f\x013'7#\a'#\x17\a3\x02J6@\x17\x16\xd4\x01\f\x16\x18\"\x02V#\v*\r@5\x0211m<7\f32\t\x06\x1e\x15\x16\r\x01\x978w\x16\x16>\xfe\f/\x04&\x84!\r\x0e\x0f\x10\x0e\xc58878_18228\x8a\x1b(.-&\x1a\x1a(..&\xa4=\x19\x19\f\x13\"\x17\x12\f\x10!\x10%#\n\bM\xb8)\x1a\x18\x15\x10\x17\x1c\x14\x19\x0fL1\x10\x18\x18+\x13\x01E \x1f\x1f3\x1e,\x1c\"\x1f\xa7(.99,\"\x1e42\x1d\x1d33\x00\x00\x00\x00\x16\xff\xff\xff\xdf\x01\xc1\x01\xa1\x00\v\x00\x12\x00\x18\x00\x1d\x00$\x00*\x000\x006\x00<\x00B\x00I\x00O\x00U\x00\x89\x00\x8e\x00\x95\x00\x9b\x00\xa1\x00\xa7\x00\xad\x00\xb3\x00\xb9\x00\x00\x122\x16\x0e\x01+\x01\"&=\x016\x054/\x01\x15\x14\a'\x16\x1f\x01.\x01\a\x06\a\x176'\x06\a\x17&57'\x06\a\x1767'\x06\a\x1767'\x06\a\x1767'\x06\a\x1767'\x06\a\x17&5\a\x14\x1f\x01547'\x1e\x01\x17&/\x01\x1767'\x06726&+\x01\"=\x0146\x17\x16>\x0154&'&+\x01\"\x06\x1d\x01#\"\x06\x16;\x012\x16\x1d\x01\x14\x06#\"&#\x0e\x01\x15\x14\x163\x166=\x01367'\x06\x1767'\x16\x17\a\x1767'\x06\a\x1767'\x06\a\x1767'\x06\a\x1767'\x14\a\x17'\x16\x1f\x016765'\x06\a\x84\xba\x83\x01\x83]\xaa\x17\x1f\x01\x01\x8a\x037\x04\x02\x03\x017\a\"\xe7\b\b\b\x03\x10\a\a\x1b\x02\x01\x1e\x06\x05#\a\a5\x06\x04\"\x05\x061\x05\x03$\x03\x04.\x03\x03'\x01\x03.\x02\x024\x061\x037\x038\x06\"\x12\x03\x01;@\x04\x06H\x02\xfd\x0f\r\r\x0f\"\b+\x17\a\x0e\t\v\t\n\n\x01+>*\x10\r\r\x10!\x03\x06!\x17\x05\b\x03\n\x0e\x0e\x06.OB\t\b\t\x03\x10\b\x06\x1b\x02\x01\x01\x1d\x06\x06$\x05\t6\x05\x05#\x05\x050\x05\x04$\x03\x05.\x04\x03(\x0326\a\x01)\x03\x03\x02@\x04\x06\x01\xa0\x84\xb9\x83 \x16\xab\\\x1a\v\v8\x01\a\b!\x04\x066\x13%\x91\x01\x02\t\a\x01\x02\x04\x1b\x06\a\b\x04\x03\x04$\x03\x02\x1c\x04\x05#\x05\x04\x17\x06\x04$\x06\x05\x15\x06\x06(\b\a\x14\x06\b6\r\x0e\x01\f\n8\x01\b\x06 \x13%\b\x04\x05\\@\x05\x03I\t,\x18\x19\t/\x1d\x1f\x05\x02\x06\f\b\t\x0e\x01\x02=,8\x18\x19\x06\x03/\x17!\x02\x01\x0e\n\n\x0e\n>38\x01\x02\b\x06\x01\x02\x03\x1c\x06\a\b\x04\x03\x04$\x03\x02\x1d\x05\x04#\x05\x03\x17\x05\x05$\x06\x05\x15\x06\x06(\b\b\x055\f\x0e*\b\f\t\bA\x06\x04\x00\x00\x00\x00\x02\x00\x14\xff\xc0\x01k\x01\xc0\x00\x1c\x00$\x00\x00\x01#\x11\x14\x06\"&463\"&463\".\x01546;\x012\x16\x15\x14\x0e\x01\"2\x16\x14\x06\"&4\x01\x15U2G22##22#\x17'\x172#\xab#2\x17':F22F2\x01\x15\xff\x00#22G22F2\x17(\x17#22#\x18'\x172F22F\x00\a\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x00A\x00I\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x17\x15\x142=\x014\"\a\x15\x142=\x014\"\a\x15\x142=\x014\"\a\x15\x142=\x014\"\x05>\x01.\x01\"\a\x06\"'&\"\x0e\x01\x16\x17\x166754\"\x1d\x01\x142\x01\x88\x17!!\x17\xfe\xb0\x17!!\x17\xe4\x1e\x1eK\x1e\x1eK\x1e\x1eJ\x1e\x1e\x01C\x04\x02\x04\a\n\x040\xb62\x04\n\a\x04\x02\x04:\xcd<\x1e\x1e\x01\xa0!\x17\xfe\xb0\x17!!\x17\x01P\x17!R\xc8\x0e\x0e\xc8\x0f\b\xd8\x0f\x0f\xd8\x0f\x16\xc8\x0e\x0e\xc8\x0f-\x86\x0f\x0f\x86\x0f\xf3\x04\n\a\x06\x04))\x04\x06\a\n\x040\x01\x8d\x86\x0f\x0f\x86\x0f\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1a\x00N\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x174&\x06\x15\x14\x1632>\x01\x1727'\x06#&5676.\x02\x06\a7#\a3\a\x06\a\x06547#\a3\x06\a\x14\x1667\a37676\x17\x16\a\x0e\x03\x1e\x02\x01\x97\x11\x18\x18\x11\xfe\x92\x11\x18\x18\x11\x87\x1b\x1b\x10\f\x03\v\f\x9d&\x0f\x12\v\f\t\x01\x0e\a\a\x1a\x1e\"\f\tD\n \x14\r\x1a\x12!M\t \x17\x01\".\x0f\b-\x1a\t\x19\x15\x06\x03\x04\x01\b\x03\x05\x03\a\x12\x01\xa0\x18\x11\xfe\x92\x11\x18\x18\x11\x01n\x11\x18r\x11\r\r\x11\v\x10\x03\x0e\xdd4\a\x1e\x01\f\x065\x19&\x12\x01\x17\x15($O\x1e\x04\x03\x0e\b\x82$]\v\x17\x16\x10\x19 g$\x04\x03\x14\n\f\x03\x1a\x0e\x19\x0f\x10\b\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xf0\x01\xc0\x00\x11\x00\x15\x00\x00%\x16\x14\x0f\x01?\x02\a&'&4767\x1e\x01\a7'\a\x01\xea\x06\x06I\x01\x01\x01\xac\x1c\xd6\x06\x06M\xa5&\xaa\xd0LLL\xce\x06\x10\x06J\x01\x01\x02\xac\x1d\xd5\x06\x10\x06M\xa5&\xaa|LLL\x00\x02\xff\xfd\x00\n\x02\x82\x01s\x00C\x00R\x00\x00%\x16\x06\a\x0e\x01.\x01'&76'&\a\x06\x17\x14\x17\x15\x16\x06'\x06&756'&\a\x06\x17\x16\x15\x16\x06'.\x01676\x17>\x01'&63\x1e\x0332>\x0372\x16\a\x06\x16\x176\x052654&+\x01\"\x06\x15\x14\x1e\x013\x02q\x10\x02\x0e\x0e#\x1f\x18\x01\x02\a\x171+-1\x10\x01\x14(''(\x15\x121+,1\x13\x01\x10)$\x1c\x1c\x03\v\x19\x1c\x1f\x10\n\x1255\x19)\x14\x1d\x0f\x0e\x16\x13\x15\"\x1555\x12\v\x11\x1f\x1d\xfe\xe4\x1d\"%\x1a\x01\x1a%\r\x1e\x14{\x12;\f\x0e\b\n\x1c\x14\x11\x100\x16\x13\x10\x12,\x02\x01\x01\x1fA\x01\x01@ \x01-\x13\x11\x12\x15/\x02\x01\";\x05\x03,-\v\x19\x03\x0120-V\x01\x19\x1f\x19\x10\x18\x18\x11\x01V-02\x01\x03\x01(\x17\x1a%%\x1a\x0e\x1c\x15\x00\x00\x00\x0e\xff\xfe\xff\xc0\x01\x99\x01\xc2\x00l\x00t\x00|\x00\xc6\x00\xd2\x01\x19\x01 \x01*\x016\x01>\x01K\x01W\x01c\x01m\x00\x00%\x1e\x01\x06\a\x06\a\x0e\x01\a\x06\a\x06+\x01\"'&'.\x01'&'.\x016?\x014>\x017&'&'&7&7&7&7&6\x17636\x176\x17632\x1e\x01362\x16\x176\x173\x16\x17673076\x17462\x172>\x01\x16\x176\x176\x172\x176\x16\a\x16\a\x16\a\x16\a\x16\a\x06\a\x06\a\x1e\x01\x15'6.\x01\a\x06\x17\x16\x06>\x01.\x01\x0e\x01\x16\x03\x0e\x01\x16\x1767\x06\a\x1e\x037&'>\x017&'67\"'67&'67\x06'67\x06'467\x06'67\"#\"57&\a&7\x06\a&461\x06\a&7\x06\a&7\x06\a&5\x06\a&\a&\x06\x15\x14\x16\x172656&'\x1e\x01\x17\x06\a\x16>\x017&'\x16\x17>\x01&'\x06\a&'\x14\a&'\x16\a&'\x16\a&'0\x16\x06\x15&'\x16\a&\a\x17\x16#\x16\x17\x06'\x1e\x01\x17\x06'\x16\x17\x06'\x16\x17\x06\a\x16\x17\x06#\x16\x17\x06\x17&\x06\x17\x1676\a\x1676'&\a\x0e\x01\x16\x176&'.\x01\a\x06\x14\x17\x1e\x01&\x16>\x01.\x01\x0e\x01\x1726'4&\a&\x06\x15\x14\x1e\x01754&\"\x06\x1d\x01\x14\x1626\x176&'&\a\x0e\x01\x17\x1e\x0167>\x01&'&\a\x06\x17\x16\x01t\x0f\x15\x03\x13\x01\n\x04%\x0e\x1b\x19\x1c$\x01$\x1c\x19\x1c\r%\x04\n\x01\x13\x03\x15\x0f\x04\x0e\x12\x0e\x0f\x02\x0f\x02\x0f\x01\v\x03\n\x04\b\a\x05\t\f\x06\x13\x04\f\b\x0f\x04\x04\x02\x05\x06\x01\a\x04\a\x02\v\v\x06\x16\n\t\x16\a\x01\t\f\t\x03\a\x01\b\x04\x06\x04\x0e\b\v\x05\x13\x05\r\t\x05\a\b\x04\n\x03\v\x01\x0f\x02\x0f\x02\x0f\x16\x18\x12\x01\x17%\x17\f+/:%\x06\x1d.$\x06\x1c\x03\n\x0e\x02\x10)=D\x1a\x03\x11\x16\x10\b\x06\x01\x02\x14\x05\x05\x02\x14\x04\x06\x04\x14\x04\t\x01\v\b\b\x02\x0f\x01\b\x03\f\x02\t\x01\x02\a\x02\a\x0f\x06\t\x11\x03\a\f\n\x01\x06\r\n\x03\x05\t\n\x04\x03\n\x06\x02\x03\x0e\x02$\x13\"\x1e\x18\x18\x1d\x01$\x8d\x05\x14\x02\x01\x06\v\x17\x1c\x03\x19D=)\x0f\x03\x0f\t\x02\x01\x0e\x03\x02\x06\n\x03\x04\v\t\x06\x03\v\f\x06\x01\n\f\a\x03\x11\n\x06\x01\x19\b\x02\x01\n\x03\v\x01\x04\a\x01\x0f\x03\a\b\v\x01\t\x04\x13\x03\a\x05\x14\x027#1\x02\x01.+p\t\a\x0f\x06\x04\b\x15\x0e\ng\n\a\r\x10!\f\t\v\x10-%%.\x1d\x06%.\x1c~\x14&\x01%\x13\x13(\x10\x1cI#1\"#1\"R\r\x02\t\x15&\x0e\v\n\b\x16\x1e#\f\n\x0e\x15\b\x03\b\x0f\t\xd8\n%2\x15\b\x1c\x1d$\x03\x15\t\x1c\x1c\t\x15\x03$\x1d\x1c\b\x152%\n\x06\x16 \x11\t\x04\t\x04\f\n\t\b\n\v\t\n\v\b\x0e\x01\b\x06\x02\b\x05\x03\x01\x03\x01\x04\x01\x02\n\r\x1f\x1f\r\x01\n\x03\x01\x04\x01\x03\x01\x01\x02\x05\b\x02\x06\b\x01\x0e\b\v\n\t\v\n\b\t\n\f\x04\t\x04\r# \x02\x17\"\x0e\x04\x02%'^\x17/+\r\x18/*\x01\x1f\n\x19\x1e\a!\x14#\x1b\v\x0f\x05\x02\x01\x02\x03\x01\x02\x03\x01\x03\x06\x04\x02\n\x04\x01\x01\a\b\x01\x02\x0f\x02\x03\x03\x02\t\x06\x01\x01\b\n\x01\x06\x02\x05\x03\x06\x01\x04\x02\x01\x06\x02\a\x03\a\x03\t\x05\x04\x05\b\x02\a\x02\x0f\x01l\x01\x17\n\v\x12\x01\x10\v\r\x16\r\x03\x02\x01\x03\x02\x01\x02\x10\x0f\x1c\"\x14!\a\x1e\x19\n\a\x01\x0f\x02\a\x02\b\x05\x04\x05\t\x03\a\x03\a\x02\x06\x01\x02\x03\x02\x06\x03\x05\x02\x06\x01\n\b\x01\x01\x06\t\x02\x03\x03\x02\x0f\x02\x01\b\a\x01\x01\x04\n\x02\x04\x06\x03\x19\x06&$\x0e(%\xb6\x04\x14% \x0e\x01\v)$l\b*\x10\x11\x0f\a\x05'\x13\x17\r\x8b\x17\r+.\x18\r+\xea\x1a\t\t\v\x01\x01\x0e\t\x04\x10\r~\x01\x16\x1f \x16\x01\x16\x1f \x15\x13-\b\x10*\x10.\n\x04\x02\x10Y\n$)\f\x02\r\x1f'\x14\x00\x02\x00\x00\xff\xfe\x02\x00\x01\x82\x00\x1b\x005\x00\x00%\x15254'.\x02'.\x01#\"\x06#\"&#\"\a\x06\x15\x14\x1e\x037\x16\x15\x14\x06#\".\x01547\x0e\x03\x15\x14\x1e\x0132654&\x01VR\x15\x03\x06\x11\x10\x16B\f\b\x15\n\t\x1f\b\x17\f\x1a\x16*6I}\x057+\x0154&\"\x06\x01\xabR;\b\x06`\x06\b;Rw\xa8w\xfe\xf1\x1c()\x1c+3+\xf5=q\x13f\x06\b\b\x06f\x13q=TwwT\x1a#\b\b#\x1a %%\x00\x04\xff\xfd\x00\x1e\x02}\x01b\x00k\x00w\x00\x88\x00\x8c\x00\x00\x017\x16\x17\x16\x17\x14\a\x0e\x02&'\x16\x17\x16367\x17\x06\a\x0e\x02#\".\x01\x0e\x01\a\x06\x17#.\x04#\"\x06\x16\x17#.\x02'&\x06\x17\x1e\x01676&'&\x06\x15\x14\x1e\x0132>\x0136\x16\x15\x14\a\x06#\"&'47>\x01\x17\x1e\x01\a\x0e\x02'&'&'&767>\x03\x17\x16\x1f\x01\x14\x166&'0#\"\x0e\x0272\x16\x15\x14#\x14\x06#\".\x0154632\x0624\"\x01\xd7\x01[&\x12\x11\x04\r\x13\"0\x1f\n\x017\x1b\x19\x19\x04\x04\x03\x03\x134\x1d\n\x1d\x10\x11\t\x02\x04\x171\x02\f\t\x10\x18\x10\x18\x17\x02\x02.\t%&\x1266\x15\n*&\t\x0f\x13\x18\n\x10\x06\x05\x01\x04\x04\x03\x01\x05\f\r\b\b\x0f\x1a\x01\x16\r$\x14\x16\x10\x06\x06\x1a$\x163\x1b\f\x05\t\x0e\x1aJ$D33\x11?I<.$\x12\x19\x01\a\x0e\n\x06&\v\x0f\x01\x0f\v\a\f\a\x0f\v\x01\a\x17\x17\x01Y\x01\r\x16\n<\x02\x04\t\a\x03\x14\x15\x18\x01\x1d\x01\x0f\x02\x10\x02\x03\v\x0e\x03\x02\x02\v\t\x18 \x04\x1a\r\x11\b\x1c\x1e\n /\x16\x03\tE&\x15\x12\x06\f\x13-\x02\x01\t\t\x05\a\x02\x01\x01\x01\a\b\v\x03\x03\x17\x13\x19\x0f\b\x01\v\x0e0\x15\x12\x1a\v\x02\x04(\x11\x13$#>0\x16\x1b\a\x03\x02\x02\x184\x1a\x14\"/\x01\x06\n\r\x12\x10\n\x01\v\x0f\a\f\b\n\x10\x1d\x10\x00\x00\x00\a\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1d\x00)\x001\x00>\x00J\x00\x00\x122\x16\x14\x06\"&4$\x06\x1e\x01>\x01.\x01\a2654.\x01#\"\x06\x15\x14\x1e\x01\x17\x16\x177&47'\x06\a\x16\x14\x16>\x01.\x01\x0e\x01\x16767'\x0e\x01'\a\x167>\x02?\x01&'\x06&'&\a\x176\x16\x91Α\x91Α\x013\r\a\x17\x19\x0e\a\x17\xf6\x0e\x12\b\x0f\t\r\x12\b\x0f%\r+\x18''\x18+\r\x10\xc9\x17\a\x0e\x19\x17\a\r%%\x04.\x04R+\x17/2\x02\x13\x1a\b.\x04%\x14%\x032/\x17+R\x01\xb8\x91Α\x91\xce?\x16\x1a\r\a\x17\x19\r\xcd\x13\r\t\x0e\t\x13\r\t\x0e\t\x032\x1d(\x1b^\x1b(\x1d2\x0e+\x97\r\x19\x17\a\r\x1a\x16E$4\x01//\x14)\x17\x0e\x0e\x14\x05e\x014$\b\x16\x15\x0e\x17)\x150\x00\x00\x06\x00\x04\xff\xe0\x01|\x01\xa2\x00\x0e\x00'\x00;\x00F\x00S\x00k\x00\x00753\x15\x0e\x01\"&=\x013\x15\x14\x166'>\x01\x17\x15\x14\x0e\a\a.\b5!5&\x0e\x02\a\x15\x14\x1e\x03\x17>\x05'>\x01\x1e\x01\x15\x14\x06'\x15#7\x1e\x01>\x0254.\x02\x06\a\x1746\x17\x15&\x06\x15\x06\x1e\x02\x15\x0e\x01'5\x166'4.\x02g!\b\x1e#\x19!\x0e\x0e_J\xd2[\x06\b\x14\r!\x11,\x14\x1a\x1a\x16*\x13\x1f\x0e\x14\b\x06\x01f'\\TY%\x0f\x151,*\"'-\x17\x15\b\xd2\v $\x1a/\x19!!\x03\x05\r\n\b\a\t\f\a\x04O;\x15\r#\x01\x11\x15\x10\x017\x1b\x0f$\x01\x10\x13\x11\x91{\x8e\x05\b\x1a\x1agh\x0e\v\x03\xe7(\x04,\xdd\x11\x1e\x18\x18\x10\x15\v\x14\t\f\v\n\x14\v\x15\x10\x18\x18\x1e\x11\xd8\x06\x04\x0f+!\u007f\x1a(\x1c\x1f\x16\x12\x0f\x13\x19\x16\x1d\"\x81\x06\x06\x05'\"3#\bE_\x01\x01\x01\t\x18\x13\x12\x17\n\x02\x02\x01\x0e\x1d\x14\x11\x1d\x0e\x01\x0f\t\r\n\x18\x11\x1f\x14\x11\x1e\x0e\x02\x11\t\x0f\t\x16\x00\x00\x00\x00\x03\x00\x1b\x00 \x02%\x01`\x00\x1b\x005\x00H\x00\x00%\x06'&5>\x06.\x01#&\x0e\x01'4>\x0176;\x012\x16\a\x0e\x06\a723$\x17#\x17>\x017\x16\a\x0e\x04%!\x03!$7>\x03&'.\x01#.\x01'&\x01\xcc\x02\x01\x01\x01\x02\x01\x02\x01\x01\x01\x01\x02\x01\a/\x1e\x04\x0e\x13\x05\b\x03\x1b\x16\a\x82\r\x1a%\x1c:'Y\x1f4\x1c4\x01\x00\x02\xc4\x1e%f\"\x1b\x01\x01\n\x11\x17!\xfe\xf1\x01\xc6D\xfeY\x01\x92\x05\x01\x05\n\x05\x01\x06\x04\x13\x1d\x01Q\x86H\xce\x04\x02\x01\x01\x02\x05\x04\x05\x04\x04\x04\x02\x02\x02\x02\x02\x02\x01\x02\x04\x02\b\x125\x05\n\x10\r\x1d\x13,\x10\xf6\x01\x18]\x11#\x02\x01\x05\x01\x02\x03\x05\t\xa2\xfe\xc0\x9e\x02\x02\a\x13\x10\x13\x05\x05\x02\v\x16\x1c\x0f\x00\x00\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00Q\x00Y\x00\x94\x00\x00%\x0e\x02\a\x06\a\x06\a\x06'&>\x02?\x01&/\x01\x14\x0e\x01\a\x06'&7\x06'.\x0167&7.\x0276767>\x013\x17076\x17\x1e\x03\x1f\x017\x16\a\x0e\x03\a\"\x1e\x01\x17\x1e\x01\x0612\x1667632\x166\x14\x06\"&462\x13.\x01#\x06\a\x06\a6'676&'&\a&'&\"&\"\x0e\x02\a\x06\a\x06\a\x06\a\x06\x17\x06\x17\x0e\x01\x1e\x01\x17\x06\x17\x167\x16327676767>\x02\x01\x8a\x10\x1d$\x17\x03\a\x150\x12\x04\x02\x01\x03\x04\x02\x01\x04\x04\x02\x03\x04\x03\f\x17\n\v\x06\x05\x04\x04\a\r\a/\x02\x05\v\x05\x05\x04\v\x04\n\x17\a\a\v\a\x06\x01\x04\x05\x04\x01\x02\x0f\r\b\x02\b\a\t\x01\x01\t\x0e\x05\x05\x01\x03\x02\x06\x12\v\x1b\x12\f\x03\\\x91Α\x91\xceB\x02\x0f\v\x16\x1f\a\x05\x03 \x12\x05\x04\x04\a\x06\x0f\t\x06\x01\x02\x06\x05\b\b\b\x04\x1c\x13\x02\b\n\a\b\x0f%\x01\f\b\x05\x06\x03\x02\x0e\x18\x14\n\x14/\x1a\b\a\"\x1c\x14\x11\a\t\x04g\x04\x11\x14\a\x04\x01\x05\x01\x01\t\x04\a\x06\x03\x01\x01\x03\x04\x01\x02\f\n\x03\f\v\x06\x0e\x04\a\a\x10\x1c\v5!\x02\t\x18\b\r\x01\x04\x05\n\t\x01\x17\v\x03\x01\a\t\b\x03\x03\x05\x1a'\v\x14\v\x0e\x02\a\x14\x0e\f\x1b\x10\x01\b\x06\x11\x14\xbeΑ\x91Α\xfe\xbd\n\r\x01\x13\x04\x02/ \x1a\x1b\x10-\x0e\v\x04\x14\x04\x01\x02\x03\x06\r\t\x02\x15\x02\x03\x04\x13\x15\x18\"1\f\x1c\x16\x0e\x03\x11\a\r\n\n\x06\x02\x05\f\x11\x0e\x04\x01\t\v\x00\x00\x03\x00\x03\xff\xdf\x01\xbd\x01\xa0\x00\t\x001\x00K\x00\x007676'&\a\x06\x17\x16\x17>\x01'&'.\x03#\"\x0e\x06\a\x0e\x01\a\x06\x16767&'&632\x1e\x02\x06\a\x1670\x1e\x01\x15\x16\x06#\"'\x06#\"&767>\x0132\x1e\x04\xe0%\b\f#\x1e\x18\x16\t\a\xb0\x1b\x14\n\x1eU\t\x06\x11\x10\f\x06\v\b\t\x05\b\x03\b\x01\x01j\t\x0e/&'.,\n\t))\x14\"\x15\x02\x1c\x1eBd\t\b\x12;179971;\x12\vj\x12$\x1f\x0f\x0e\x19\x12&(K.%-\x10\x0e\x14\x13$$x\v2\x19J\xa5\x13\f\x16\a\x03\x03\b\x06\f\x06\x10\x03\x01\xd9\x18%;\x05\x0438,);\x10\".C%I\x9f\x13\x13\x022P>>P2 \xd5%$\x02\x13\x1dEU\x00\x00\x00\t\x00\x00\xff\xc0\x02\x00\x01\xc2\x00?\x00G\x00O\x00W\x00\x9b\x00\xa6\x00\xae\x00\xb7\x00\xb8\x00\x00%\x1e\x02\x14\a\x06'\x06\a\x16\x17\"'&'&'\x0e\x01'&7\x06'&'&767&'\"\a6767&6\x17\x16\x17676\x17\x16\x17\x16\x17\x16\x1767\x16\a\x06\a\x1e\x01\a\x06\a>\x02'&'\x16\a\x06\x17\x167&'\x067\x16'&'\x06\a\x16\a676'&'47\x16\x17\x16\x17.\x02#2\x1e\x01\x1767&'&\a\x14\x17\x06\a&'\x06\x15.\x0167&'\x16\x17\x16\x1767\x16\x17\x06\a\x06\a\x162>\x061\x0e\x02#\x16\x13.\x02\a\"\x0e\x02\a6\a&'&\a2\x17&\a\x0e\x01\x16\x17\x1627&\x17\x01\xc1\x15\x1e\f\x06\x19{\x1f%'\x18\x03\x06\x04\x04\x1b\x1d 4\x04\a\x104#\x11\x06\b\b\t&\x16\x04W\x19\x04\x0e%8\x02\x16\x10\x0e\x0f\x01\x18\v\x10\x13\x16\x1c!4)+\x05\x04\x04\n\x1a!\x1d\t\tl!%\t\x01\x02/\x02\xb9\x10\x16\x11\x1b\v\n\x0f\xc9\x1a\x02\x03\x1f\v\v\x11\x8a1$\x1b\x02Dc\x02\x14\x14;8\a\x15\r\x01\x03\r\x18\t\r\v4A0!\"\x05\x0e\x1f\x0e\x14\x01\x02\a\n\x14\x13\x03\x1c\x16\"DA\x06\n\v\x0e'.\a\v\v\t\b\a\x05\x03\x02\x01\f\x1f\x13\b$\x04\x10\x1d\b\x06\r\v\a\x01$H\a\b\x15\x03\x15\x15\x02\x1d\x0e\t\x02\x01\x06+$&\xb7\xde\r\x1c\x18\x15\a%\x05+\x1aH\x14\x03\x03\x04\x1c/\x15\x04\x0f\x0e\x19\x1d\b\x04\x0f\x10\x1f&;2,\n\a\x03\t\x02&.\x02\x02\x18:\x1a\r\x02\x02\x16\x1b>\x05\x12D \a\x0e$1\x11*\f\rj\x02\f\f\b\x1d\x1d+i\x1a\x03\x03\x0f\x12\x14\f\xa3\x01\x10\x12\x13\x13\x12\b\xbd 5)''\x12\b\r\x03\x04\v\x14\x0f\x17\t\x05\x16\x11\x11\x10\x1b\x03\x03\x14O_\x02\x06JO\x1d\x1f\x02\x0e \x10\x03\x01::+\x12'M\x04\b\x10\x0f.&\x01\x01\x02\x02\x03\x02\x02\x01\x02\t\n\x13\x01\x0e\x06\x16\x1c\x01\t\x12\x1e\x13\x17\x05\f\x01\x023\x01\x13\x90\x1b'\n\x01\r\x12\x14\x17\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\f\x00\x19\x00)\x00B\x00\x00%\x14\x0e\x02+\x01532\x1e\x02'#532\x1e\x01\x15\x14\x0e\x02\"7\x11\x14\x06#!\"&5\x11463!2\x16\a4'565<\x01.\x03+\x01\x11:\x0362>\x0176\x01$\v\x13\t\x05QQ\x0f\x14\a\x022KK\x10\x13\x04\t\t\x0e\x05\xcc,\x1f\xfe\xd6\x1f,,\x1f\x01*\x1f,n1%\x04\n\x10\x1c\x13\u007f\x13.\x17\x1b\f\x0f\b\t\x045\x88\x0f\x13\x06\x01Q\t\x10\nDH\f\x0e\t\v\x0f\a\x04\x84\xfe\xd6\x1f,,\x1f\x01*\x1f,,\xf29\n\x01\x10(\x04\x06\x13\r\x0f\b\xfe\xfa\x01\x02\x02\x01\x10\x00\x00\x03\x00\f\xff\xe0\x01\xb4\x01\xa1\x00\x15\x00+\x009\x00\x00%\a\x06\"/\x01&?\x0162\x1f\x01\x162?\x0162\x1f\x01\x16'\x16\x0f\x01\x06\"/\x01&?\x0162\x1f\x01\x162?\x0162\x17%&?\x0162\x1f\x01\x16\x0f\x01\x06\"'\x01\xac\xc5\x03\b\x03\xc5\a\a/\x04\a\x04\x87\x03\b\x03\x87\x04\a\x04/\a\a\a\a\xc5\x03\b\x03\xc5\a\a/\x04\a\x04\x87\x03\b\x03\x87\x04\a\x04\xfe\x97\a\a\xc5\x03\b\x03\xc5\a\a\xc5\x03\b\x03Ca\x02\x02a\x04\x04\x17\x02\x02C\x02\x02C\x02\x02\x17\x04\x85\x04\x03b\x02\x02b\x03\x04\x17\x02\x02C\x01\x01C\x02\x02[\x03\x03[\x01\x01[\x03\x03[\x01\x01\x00\x04\x00\x15\x00\x00\x01\xeb\x01\x80\x00\x12\x00\x18\x00#\x00+\x00\x00\x012\x16\x15\x11\x14\x06+\x0153\x11!\x15#5463\x032\x16\x1d\x01#5\x1532\x16\x15#14\x1e\x01\x15#4&#\x01\xc0\x12\x19\x19\x12\x95\x95\xfe\x80+\x19\x12+\x1b%@\x01=X+?,a\x8a+pP\x01\x80\x19\x12\xfe\xd6\x12\x19+\x01*@@\x12\x19\xfe\xc0%\x1a\x01\x96\x01W>->\x80\x01\x89aPp\x00\x03\x00\x00\xff\xdf\x01\x81\x01\xa3\x00\x1a\x00x\x00\x82\x00\x00\x13\x16#*\x06\x0e\x01\"\a#7\x15\x06\x14\x0e\x01\x1c\x05\x13&6\x172\x16\a\x0e\x02\x15\x14\x16326514.\x01'0.\x06'\x0e\x02\a&\x06&'&'&'467:\x0462>\x027>\x015454>\x01\x17\x16\x1f\x012\x1e\x06\x17\x1e\x01\x06#\x0e\a+\x01\"&7\x06\x17\x1e\x0172'.\x01y\x01\x17\t\x13\f\r\a\b\x04\x04\x03\x03\x01\x01m\x01\x01\x01O\v\"\x1d\r\x06\v\x01\x0f\t\x15\n\x13\x1b\x06\x17\x13\t\b\r\v\f\b\x06\x01\x03\b\x14\f\b\x1f6\x14\x13\t\n\x01\x0e\v\n\x17\x0e\x10\t\t\x06\x05\x04\x03\x02\x06\x02\a\x19\x15 \x05A\x01\x0f\a\x11\t\x0e\b\b\x01\n\x04\x05\x01\x02\v\x0e\x11\x11\x11\x0f\v\x04\x03\x12(H\x03\x04\t\x1f\x05\x05\x02\x03(\x01<\x16\x01\x01\x01o\x01\x01\x03\x03\x05\x04\b\a\r\f\x14\xfe\xc3\x1c1\x01\x19\x06\x01\x03\a\b\f\r\x1b\x13\b\x13\x18\x04\x02\x01\x04\x05\a\n\x0e\a\f\x19\x1d\x03\x01\x03\x13\x14\x0f+.\x10\r\x12\x01\x01\x02\x01\x03\x01\x06\x13(\x17\x0f\x06\v\n\x03\x05\x1a\v\x03\x01\x05\x04\t\v\x0f\n6wA\x13\x1e\x16\x11\n\a\x03\x01\x13\xe2\x06\x01\x04\x03\x01\a\x10\x05\x00\x04\x00\a\xff\xdf\x01\xf9\x01\xa0\x00)\x00H\x00y\x00\x87\x00\x00\x13632\x17\x1e\x01\x1d\x01\x14\x06#\"&5\x14\x06\"&5\x14\x0e\x01#\".\x015\x14\x06\"&5\x14\x06#\"&=\x0146\x17\x1e\x0132327\x1627\x1e\x017\x1e\x01\x14\x06\a\x06 '.\x0167\x1667\x162\x06\"\x0e\x05\a\x0e\x01\x1e\x033>\x015\x167\x14\x16\x17:\x01>\x034&'.\x06\"\x0e\x01\a&\"\a.\x01\x17\x16\x17'\x15\x14'\"15\a>\x017H \x98iO\x101\x1f\x11\x15\x1e\x1d)\x1d\x0e\x17\x0e\x0e\x17\x0e\x1d)\x1d\x1e\x15\x11\x1f1\x94\a\x1d\x0e\x01\x01#\x11\x10C\x11\t$\v\x01\x03\v\v;\xfe\xfb<\x0e\n\x03\x03\v$\t\x11C\x0f\x15\x12\x0f\n\f\x05\v\x02\x04\x03\x04\x05\r\n\t\x1e#NN#\x1e\a\b\n\x06\a\x02\x03\x03\x02\v\x05\f\n\x0f\x12\x15\f\x12\t\x16,\x16\t\x12G,\b\x1d\x17\x17\x1d\x03\x1a\f\x01\x9d\x03\x03\t8\n\x15\x14\x1f\x1e\x14\x14\x1e\x1e\x14\r\x17\x0e\x0e\x17\r\x14\x1e\x1e\x14\x14\x1e\x1f\x14\x15\n8}\f\x11\x1d\x1d\x1d\x10\x10\x04\x13G[M\v\x0e\x0e\x0e{f\x1e\x04\x0f\x11\x1d\x19\b\x13\x10\"\x12)\b\x10\x16\r\t\x03\x01\x01%\x19\r\r\x19%\x01\x02\x03\x06\n\r\x12\f\b)\x12\"\x10\x13\b\x01\t\n\x03\x03\n\t/)\x0e\x01\x19\x01\x01\x19\x01\x06\x1c\v\x00\x00\x00\x0f\xff\xfc\xff\xdf\x02\x80\x01\xa0\x00\x03\x00\x0f\x00\x19\x00E\x00h\x00\x89\x00\x95\x00\xb3\x00\xdc\x01\n\x01\x16\x010\x01L\x01k\x01o\x00\x007#6236\x15\x14#\"'&5462\a6\x17\x15\x06'&=\x014%\x14\x06'\x0e\x02'\x0e\x02.\x02'\x06.\x0267&>\x0232\x16\x17632\x1e\x06\x176\x1e\x02\x054'&56\x16\x172506350'&\x06\x15\x14\x17\x16\x15\x14#\"'&\x0f\x01\x141\x16327\"\a\x141\x141\x17\x16130>\x0132\x16\x15&\x06\x15\x141\x14\x17\x1676=\x014.\x0174+\x01\"\x1d\x01\x14;\x01257&#\"\a\x06\x15\x14\x17\x1632765'4#\x06#\"53250<\x01.\x01\x17254'&5432\x17;\x01'06150'&#\"\x06\x15\x14\x17\x16\x15\x14#\"'41\"\x15\a\x143\x1674+\x0147632572'&\a\x06\a#\"\x15\a\x14;\x01\x06\a\x06\a\"#\"\a0\x061\x063\x1676767325\x17&#\"\a\x06\x17\x1632767&\a54+\x01\"\x1d\x01\x14;\x012=\x01476\x17256750\x17/\x01\x06#\"43212\x17\x165656#&\a\x06\x15\x14327617&#\"\a\x06\x15\x141\x1432765'4#\x06#\"532505<\x02.\x012\x17#\xf9\x1a\x01\x18\x8a\x0e\x0e\v\x03\x01\b\x04\xf1\x06\x0f\x0f\x06\x03\x01\xf5e@\n&6\x1f\n#)-(\"\b#:\x1f\t\x1c\x1d\x0e\t\x1e8\"\x19:\x0f\"/\b\x10\x0e\x0e\r\v\n\t\x04#E8\"\xfd\xf8\x11\x0e\x01\x11\a\x02\x02\x01\x01\t \x12\r\t\v\b\x01\x01\x02\b\x0f\x15 \x0e\a\x02\x01\x01\x04\b\x05\x06\x06\x16\x0f\a\r\x19\x03\x01\v$\x01\n\x01\x01\n\x018\a\v\x0e\a\x06\a\a\x10\r\x05\x01\x03\x01\b\b\x10%\x01\x01\x03\"\x16\x12\r\b\t\b\x01\x01\x01\x03\x01\b\f\t\v\x11\x0e\n\n\t\x01\x03\x01\bP\x01\f\x05\x01\v\x01\x03\x01\x01\x0f\n\x05\x03\b\x01\x02\x02\b\t\x02\x02\x03\t\x01\x01\x01\x02\x01\x01\t\t\b\x04\x02\t\f\x026\x06\x13\x14\x05\x04\x04\x06\x13\x15\x04\x04*\x0f\a\x01\n\x01\x01\n\x01\x04\x05\t\x01\x02\x01/\x02\x02\x04\a\x11\x10\x01\x06\x05\x01\x02\x01\x01\x10\f\x10\x1d\b\a\x016\x05\x12\x15\x04\x02\x1e\r\x05\x01\x03\x01\b\a\x11%\x01\x01$\x18\x01\x1a\xca\x0e\x01\x15\x14\f\x04\x04\n\n\x18\x05\x03\x11\x03\x04\x03\x04\x01\x04\x1aBT\x0e\x13\x1b\v\x0f\x17!\x0e\x01\x10#\x17\a\x1919:\x11\x1e>2 \x1d\x14#\x02\x04\x06\b\t\v\f\x06\x10\n#?D\f\x05\x06\x03\a\x01\x04\x01\a\x01\x01\a\x06\x0e\f\x05\x05\x04\a\x06\x01\x01\b\x01\a=\x05\x01\x01\a\x01\x02\x02\x04\t\x02\n\t\x01\t\x05\t\a\x01\x01\"\x05\a\n\x15\x01\x01O\x01\x012\a\t\a\x0e\x0e\a\b\x03\x01\x01\a\x01\x03\x11\x01\x03\x05\x06\a2\x12\f\x05\x06\x03\a\x05\x01\a\x01\x01\x05\n\b\f\x05\x05\x04\a\x06\x01\x01\b\x01\a:\x01\b\x05\x01\x01\b\x01\x06\n\x06\x0e\x01\b\x014\x03\a\x01\x01\a\x02\x03\x03\x03\n\x066\x01\b\x12\x12\f\f\x12\x12\f\x1d\x04\n\x05\x01\x018\x01\x01\x1c\f\x03\x05\x02\x01\x04\x04\x015\a\x01\x02'\x01\x01\x01\x05\x03\x01\x05\x05\b\x14\x1e\x03\x01(\x10\x12\x06\x05\x01\x1d\x03\x01\x01\a\x01\x03\x11\x01\x01\x01\x02\x04\x05\b\x0e\x00\x00\x00\x00\x02\x00\x00\x00 \x02\x00\x01`\x00 \x00:\x00\x007#\"&46;\x012\x16\x14\x06+\x01\"\x14;\x012\x16\x14\x06+\x01\"&46;\x0126&\x17>\x01732>\x01=\x014&+\x0164'32\x16\x1d\x01\x14\x0e\x01#\xd6r);;)\x85\x10\x18\x18\x10\x87\x14\x14r);;)\xac\x11\x17\x17\x11\xae\f\v\vH\x12\x1e\x03A\x05\t\x05\v\bv\x0f\x0f\x89!.\x15$\x16\x98;R;\x17\"\x17(;R;\x17\"\x17\x14\x14x\f/\x15\x05\t\x06x\b\f\x11.\x11/!\xa0\x16%\x15\x00\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x80\x00\x00\x122\x16\x14\x06\"&4%>\x01'4&\a*\x01\x0e\x06\a0.\x03\x06\a\x0e\x01\x17\x1e\x05\x14\a\x06'&74676&\x06\a\x06\x16\x17\x16676/\x01&76\x17\x1e\x02\x17\x06\a\x0e\x01\a\x06#\".\x0176&\a\"\x06\x17\x14\x16767>\x0274>\x015\x16>\x0256&\a\x14\x1e\x01\a\x06'>\x0536\x15\x16\x06\x15\x14\x16\x99Α\x91Α\x01~\n\n\x01\x19\x14\x02\x03\v\t\x0f\r\x0f\x0e\x0e\x06\x0f\r\x17\x14\x1b\r\x10\x06\x13\x03\t\x03\x05\x02\x02\x01\a\x1b\x13\x02\x04\x02\x04\x0f\x14\x04\x04\x12\x19\x1e1\x04\x03\x18\r\x0f\r\v\x15\n\x10\x12\x05\n\b\n\x12\x11\f\n\x02\x05\x01\x06\f\v\x10\t\x10\x01\x17\x12'!\x11\x17\t\a\x01\x01\x12\x1f\x12\n\x01\x1e\x03\x06\x01\x05\x10\x1d\x04\x03\b\a\f\x0f\n\f\x01\a\v\x01\xb8\x91Α\x91\xce\x01\x01\x0f\b\r\x10\x01\x02\x03\b\n\x10\x14\x1d\x11\x0e\n\f\x04\x05\t\r*\x19\x03\t\x03\a\x04\x06\x05\x03\x17\x06\x05\v\x01\a\x05\f\x10\x03\f\r\x1e\a\n\x1a\x18\x16\x1c\x0e\x0f\x10\r\x05\x03\v\x11\x04!144\x0e\t\x02\x05\x05\x06\x1d\x01\x0f\v\x0e\x11\x01\x01'\x147'$\x02\x03\x05\x02\x02\x05\v\x0e\a\x12\x02\x0e\x04\n\x06\x05\n\x04\x16\x0e#\x0f\x14\b\x01\b\x02\f\x05\b\t\x00\x05\x00\x02\xff\xe0\x02\x02\x01\xa0\x00&\x00E\x00K\x00Q\x00d\x00\x00%\x16\x06\a\x16\x06#\"&'*\x03'\x0e\x01#\"#.\x017&'&632>\x027>\x0232\x16\x03>\x0276.\x02#\"\x06\a\x0e\x04#\x16\x176\x16\x17\x1623>\x0132&46\x16\x14\x06646\x16\x14\x06\a&6\x16\x17\x1e\x017>\x0176\x16\a\x0e\x01\a\"&\x01\xf6\v>>\n\x1f\x1b\x15\x1e\x01\x02\x16\x18\x18\x04\x01\x1e\x15\x01\x01\x1a\x1d\b?%\t\x0e\x10\x11\x10\x04\x03\x03\tBY0N|t\x15&\x1e\a\x0f\x145P,@n\f\x02\x03\x04\f\x1b\x15\"<\x122\f\nH\x06\x06\x1b\r\x12\x9a\x1a\x19\x19[\x19\x1a\x1a\x94\x02\f\x0e\x02\x03$\x19\x19#\x04\x03\x19\x03\x05.( 3\xf6@r\x1e\x19-\x1d\x14\x01\x15\x1d\x01*\x19\x161\r\x1d\x14\x192\x0f-I'`\xfe\xfc\t\x1e)\x16.S>%M;\v*\x1e \x10-\x14\x11\t\x16\x01\f\x10\xad!\x0e\x0e!\r\r!\x0e\x0e!\r)\b\t\x04\b\x11\x1b\x01\x01\x19\x11\f\x06\f\x16(\x01%\x00\x00\x00\x00\x04\x00\x1d\xff\xff\x01\xe3\x01\x81\x00\x0e\x00\x1e\x000\x00V\x00\x00\x01\x0e\x01'&6727632\x16\x15\x14\a\x16\x15\x14\x0e\x01#\"'\"'.\x0176\x167\x1e\x01\x15\x14\x0e\x01\a\".\x02'&63:\x01%&54632\x1f\x0137632\x16\x15\x14\a\x03\x0e\x01+\x01\"'.\x01546303\x163267\x01\xa6*P\b\b_\x13\x02\x01\x03\x03\n\r\b\b\x06\n\a\x03\x03\x01\x02\x13_\b\bPT\b\n\x05\t\x05\x15-*\x1c\x02\x04v\x16\x01\x02\xfeO\x01\x0e\v\x0f\aQ\x01M\x06\x10\n\x0e\x01n\x10&'\x01\v\f\x06\t\f\t\x01\a\a\x16\x19\v\x01(\x17!\x06\x05I\v\x01\x01\x0e\t\v\xe0\a\v\a\n\x06\x01\x01\vH\x06\x05!n\x02\r\b\x05\n\x06\x01\x02\x05\a\x05\b\x12\x8c\x04\x04\n\x0f\x0e\xcd\xcb\x0f\x0e\t\x04\x03\xfe\xef*&\x02\x02\f\x06\t\r\x01\x1b \x00\x01\xff\xff\xff\xe0\x01\xc1\x01\xa0\x00+\x00\x00%\x16\x14\x0f\x01\x06\"/\x01&4?\x01\x17\x06\x16\x17\x15\x0e\x01\x17\x16276&'5\x17\x06\x1676&\a'6&\a'762\x17\x01\xb8\b\b\xc3\t\x17\t\xc4\b\b\x872\x05\t\x0f\x11\a\r\n\x1c\n\f\x03\x12/\v/\x14\x13\x1d\x1a2\a\x1e\x143(\t\x18\b\xd4\t\x17\t\xc3\b\b\xc4\t\x17\t\x863\n\x1d\x06{\a$\r\n\n\t%\tz.\x1a\x1f\x13\x14.\t2\x14\x1e\a4)\b\b\x00\x06\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x06\x00\n\x001\x00=\x00A\x00E\x00\x007\x14+\x015327\x11!\x11\x134.\x01'.\x025432\x15;\x014&#\"\x06\x15\x14\x16\x17\x1e\x01\x15\x14#\"5#\x15\x06\x1632>\x0174&+\x01\x153532>\x01\x177#\a7#\a3\xf5\x16\x13\x13\x16\xcb\xfe@\x97\t\x14\x11\v\v\x04\x14\x15\x1e\x01\x1a\x19\x15 \x15\x1e\r\t\x14\x19\x1f\x01\"\x17\x0f\x17\r~\x1c\x1a4!\x13\x10\x17\x0f\x151\x1f0\x88\x1f0\x1e\xd8\x15*\xb3\xfe@\x01\xc0\xff\x00\v\x10\r\x05\x04\x05\x06\x04\x0e\x12\x11\x19\x13\x13\x10\x13\n\x04\b\a\x0e\x16\x01\x16\x17\t\x11D\x14\x19\x8a/\v\x14N\x8a\x8a\x8a\x8a\x00\x00\a\x00\f\xff\xc7\x01\xf4\x01\xb8\x006\x00C\x00N\x00V\x00a\x00n\x00w\x00\x00%3\x0e\x01#\"&54632\x16\x17#.\x01#\"\x06\x15\x14\x1e\x01\x1754&#\".\x015467>\x01\x16\x172\x1e\x01\x15\x14\x06#\"\x0e\x02\x1d\x01>\x01'\x16\x0e\x02\a\x1632>\x0154\a>\x02&'\x0e\x03\x16'\"\a\x16\x1767&\a3\x0e\x01\x1e\x01\x17>\x01.\x01\a327.\x037\x06\x15\x14\x16\x173\x16\x1767&'\x06\x01\xda\x19\x13|`t\x84\x84t`|\x14\x19\x13nVju1_C'$\x1e-\x184-\x0fIJ\x10\x1e,\x175.\x12\x1c\x13\nQhd\x04\x04\a$\x1d\x13+\x18!\x11\x92\x19\x1d\x05\x01\x01\x15\x1b\t\x03\x02\x0e+\x13+\x13\x13*\x13r\x01\x02\x01\x05\x1d\x19\x02\x01\x05\x1d)\x01*\x13\x1a\"\f\x04\x04@&Y\x01\x15\f\f\x16\x17\v\fvS[\x84tt\x84[SHMujEb6\x021$'\x17-\x1f.4\x01\x1f\x1a\x18!\x18-\x1e/4\n\x13\x1c\x121\x03L\xda\b$%\"\x06\x1b\x11!\x18D\\\x04\x1b%\x15\b\x03\x14\x18\x1d\x0f\x8e\x1c\b##\b\x1c3\a\x17$\x1b\x04\b\x16$\x1c\x90\x1b\x05\x1d#&\x0e\x06D$&\r\v\x17\x17\v\r\x15\x16\x00\x06\x00\a\xff\xe0\x029\x01\xa0\x00\a\x00\x1b\x00%\x005\x00<\x00H\x00\x00\x122\x16\x14\x06\"&4\x1767.\x0254>\x0132\x17676&+\x01\x03%\a'#\a37\x1737\x177#7#\a\x1e\x01\x15\x14\x0e\x01#\"'\a'2\a\x06+\x01?\x01232\x1e\x01\a\x0e\x01+\x017\xac褤\xe8\xa4\xc3X\x1d\x11\x1d\x11\x15#\x15\t\b\x01\x01\x05%.\x86M\x01&\t\x0f \x1a%\b\v$\x16r\x15h5\\\x16\x17\x1c\x15#\x15\x06\x05\x10_\x1f\a\a\x1f\x19\x0e.\x01\x02\v\t\a\x02\x03\x17\x0e\x15\f\x01\xa0\x83\xba\x83\x83\xba\xe2\x01<\x04\x15 \x12\x14#\x14\x02\x04\x03#&\xfeݸ%%Z##Z\xb6T\xcdR\b'\x18\x15#\x14\x01=x\x1e\x1b9c\x01\b\t\v\x130\x00\x00\x00\x06\x00\a\x00`\x029\x01!\x00\f\x00\x1b\x00&\x00<\x00F\x00P\x00\x00\x133\x1773\x17#'\a#'\a#%2\x1e\x03\x17\x14\x0e\x02\a+\x015\x172>\x0354&/\x01\x17\x1e\x02\x14\x0e\x02+\x0253:\x01\x1e\x02\x17\x16\x15\x14'\x1530>\x015.\x01#\a6\x16654&\a#\x15\x11/*)-\r.\x04\x1a-\x1c\x05,\x01#\x04\r \x19\x14\x01\x13\x1c\x1c\n\n0/\x02\a\x10\f\n\x18\v\f\xee\x04\v\x13\x12\x19\x1a\t\t.4\x02\a\x12\x0e\r\x01\x01<\f\x02\x02\x02\b\x03\x04\x02\x12\x16\x15\n\n\x01 vv\xc0MMPP\xc0\x02\v\x12'\x1a\x1b(\x12\n\x01\xc0\x93\x02\x06\n\x15\r\x14\x1a\x02\x02\x1c\x01\x06\x1d&\x1b\f\x06\xc0\x04\x06\x0e\n\x04\x05\x10\x12\x15\x02\a\x03\x05\x04m\x01\x03\v\f\f\v\x01\x12\x00\x00\x05\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\n\x00\x12\x00\x16\x00\x1e\x00(\x00\x00\x012\x16\x15\x14\x0e\x02+\x015&2\x16\x14\x06\"&4\x175#\x156264&\"\x06\x14\x172654.\x01+\x01\x15\x01')+\a\x11#\x18/`Α\x91Α\xa7\x1e\a\x10\f\f\x10\v\x9f1=\x164$Q\x01\x04,!\v\x18\x1a\x10\x9a\xb4\x91Α\x91\xce\xd8\xd0\xd0\xe7\f\x10\f\f\x10\xf3>*\x1a. \xd0\x00\x00\x02\x00\x00\xff\xe0\x01\xc1\x01\xa1\x00E\x00w\x00\x00\x01\x14\x1d\x01\x14\x15\x14\x06\a\x0e\x01\a\x0e\x01#\"+\x01\"#\"&'.\x01'.\x0154=\x01454>\x017676767>\x017232;\x01232\x16\x17\x1e\a\x17\x1e\x01\x15\x14\a\x1676'&'656&'\x1e\x01\a\x06\a&'&'\x17\x16\x17.\x02'\x16\x17\x16\x17\x0e\x01'&'\x1e\x01\x17\x167367>\x02\x1e\x01\x01\xc0\x05\a\x06\x18\v\r\x1e\x0f\a\x06\xc8\b\x05\x0f\x1e\r\v\x18\x06\a\x05\x05\x0e\n\x03\x03\b\n\x04\x03\n\x16\v\x03\x05\a\x06\xc8\b\x05\x0f\x1e\r\x03\x06\x05\x06\x06\x05\x05\x04\x01\a\x05F\x02\x02\a\x19\x04\x05\x01\x0e;:\x1a\x13\n\x02\x02\x03\x04LS,\x1c\x19\r/9\x15\t\nN?\x1eP+\x15\x12\x10>\x1bQA\x01\x03\x02\x06\x0e\x12\x10\x10\x01$\v\x05\xb8\b\x05\x0f\x1e\r\v\x18\x06\a\x05\x05\a\x06\x18\v\r\x1e\x0f\a\x06\xc8\b\x05\x0f\x1e\x1a\v\x02\x03\a\x05\x02\x01\x04\x04\x01\x05\a\x01\x04\x05\x05\x06\x06\x05\x06\x03\r\x1e\x0f\a\xf7\x04\b (\a\x05\x05\x017v\"#N$\x06\x06\x01\x03/S<#\x1a\a!-\x13\x0e\fc0\x13\x01\x14\t\x0e\x1a5\v#\"\x02\x01\x04\x04\x02\x05\r\x00\x00\x00\x02\x00\x06\xff\xc8\x01\xf8\x01\xb9\x00\f\x00W\x00\x00\x122\x16\x15\x14\x0e\x03#\"&4\x05654'4'&'&5&+\x01\a\x06\x151\x15\x17\x16\x17\x16\x15\x14\a\x0e\x04#\x06#\"+\x01\"#\"'.\x01'&5476?\x01514/\x01\"\a\x06\a\x06\a\x06\x15\x06\x14\x17\x1e\x0273\x16>\x01\x99͑\x19.=L(g\x91\x01\x89\x01\x01\x03\x02\x04\x01\x01\x04\x01 \x04\x01\x03\x02\x03\b\x02\x05\x06\a\b\x03\x19\x1a\x03\x04\n\x04\x03\x1a\x18\n\x12\x04\b\x03\x02\x03\x01\x04 \x04\x01\x01\x01\x03\x03\x03\x01\x01\x01\x1a=7\x047=\x1a\x01\xb8\x92f)K=.\x19\x92\xcdy\b\b\a\b\x16\x16\x0e\x12\a\x01\x04\x05\x01\x04\x01\t\r\x14\x15\x15)\x13\x04\x06\x06\x05\x04\x06\x06\x01\x0f\t\x13)\x15\x15\x14\r\t\x01\x04\x01\x05\x04\x01\a\x11\x0f\x16\x16\b\x0f\b)0\x16\x01\x01\x160\x00\x02\x00\f\xff\xc8\x01\xfa\x01\xc0\x00\x00\x00\x85\x00\x00\x13\x05\x16\a\x06\x15\x0e\x01#\"&=\x016505656567676767>\x011\x06\x1767\x06\x15\x14\x17\x16\x17\x16\x17\x1e\x02\x15\x0e\x01#\"\x0e\x02\x0f\x01\x1e\x01\x17\x16\x17\x16\x17\x163\x16>\x01&'6\x17&'&#&'\"'&'\"'&'�&1&#\"1\"#\a\x06\a\x15\"#\"'454767>\x0179\x0130\x15\x16\x17\x16\x17\x16\x17\x1e\x01\x175&'\x1e\x01\x83\x01_\x18\b\x01\x0f\x88Ze\x8f\x01\x01\x01\x02\x02\t\x18\n\r\v\r\x01\a\x03\v\x1c\x1f\x04\x05\x03\x03\x03\x0e\a\x1e\x16\x01\x17\x06\x13\x1f\x10\v\x02\x01\x02 \x17\x02\x02\x04\x04\x0f\x10,9\x0e\x1a\x1f\x1f\x1c\x10\x1b\x02\x01\x02\x03\x01\x01\x03\x02\x01\x02\x02\x02\x03\x03\x02\x11\x11\x01\x03\x03\x01\x17\x14\x01\x01\x04\x02\x03\x17\x1a\x05(%\x01\x02\x02\x01\x02\x02\x03\rT\x10\x06\x13\r\x1c\x01E.8B\t\x01Ws\x8ee\x02\x04\x04\x01\b\x06\x02\x03\f\v(\"\x0e\r\v\t\x01\x04/\x0e\x1f\x0e\x0e\x0f\x0f\x10\x02\x02\x03\r\b\x10\v\x01\x04\x17\b\r\f\x04\x05\x19*\f\x01\x01\x02\x01\x06\x02.?B\x10\x05\x13\x1b\x11\x01\x02\x01\x01\x01\x02\x01\x01\x01\x01\x01\x05\x01\x01\t\x01\x04\x01\x01\x04\x02\v\x01!D\x16\x01\x05\x04\x03\x02\x04\x06\x14a(\x01$&\a$\x00\x00\x00\x00\t\x00 \xff\xe0\x02'\x01\xa0\x00\a\x00\v\x00\x12\x00)\x005\x00=\x00I\x00R\x00V\x00\x00\x122\x16\x14\x06\"&4\x1753\x157\x14+\x01532\x173\x06+\x01532>\x0254&+\x01532\x17#5#\a5#535#535#\x15;\x01'#\a373'2\x1e\x03\x15\x14\x06#!\x11\x012654&+\x01\x11\x013\x17#i)\x1d\x1d)\x1c\tOI\x13\x0e\x0e\x13\xc99\x03\xc1_\x0e\n\x0f\v\x05\x16\x13\x0e_\xb9\v\"\x17m\"\x1e\x1e 7\x83\x18\x1c \x1c\x18\x05\x1ec>^5 \n\x82y\xfe\xf4\x01\fpvym\xf7\x01K\x01\a\x10\x01\x1b\x1d)\x1d\x1d)荍\xd4\x18.D\xa6\xa6\x06\f\x11\v\x15\x18S\x98E[\x16\r\x17\n\x17[[[\x11\xd3\x1f.@6\x1cmt\x01\xc0\xfeUgeee\xfej\x01\t\x1a\x00\x00\x00\x00\x02\x00\x01\xff\xdf\x01\xbf\x01\xa0\x00\x1f\x00@\x00\x00%3\x0e\x02\x15\x14\x17\x16\x15\x06#0#&'&#\"#\x06#\"&4632\x1e\x01\x15\x14'654#/\x01&\"\x0f\x02\"\x15\x14\x1f\x01\a\x14\x15\x1432?\x01\x17\x1632545'\x01\x8f\x01\x06\n\x06\x12\x01\x01\x04\x013\x1c\x03\x03\x01\x02&)\\\x82\x82\\\x017>\x027>\x027>\x057 \x01F1\x01GE\x881Y\x01XF1\xfe\xb7\r3\x15\v/#\r\x12\x18\x15\b\b\x1f\"%!\x1b\b\x1d<\x01H1F\x16Z9f\x01\x0f\xfe\xb71F\x11&\v\x05\x14\x13\f\x124H\x11\x14) \x1d\x15\x10\x04\x00\x00\x04\x00\x0f\xff\xce\x01\xf3\x01\xb2\x00\v\x00\x0f\x00\x13\x00\x17\x00\x00%\a\x17\a/\x01#'73?\x01\x0f\x0137\x03\x17'#\x057'\a\x01\xf2\x1e\x1e5\xc5\x1d;\x90\x90;\x1d\xc5\xddm\xadW\x97\x97W\xad\x01.**W\xf222\xbf32\x8c\x8c23ml\x91\xfe\xd3&\x92z\x92\x92\x92\x00\x00\x00\x00\x1c\x01V\x00\x01\x00\x00\x00\x00\x00\x00\x00\x1a\x006\x00\x01\x00\x00\x00\x00\x00\x01\x00\x1d\x00\x8d\x00\x01\x00\x00\x00\x00\x00\x02\x00\a\x00\xbb\x00\x01\x00\x00\x00\x00\x00\x03\x00$\x01\r\x00\x01\x00\x00\x00\x00\x00\x04\x00\x1d\x01n\x00\x01\x00\x00\x00\x00\x00\x05\x00&\x01\xda\x00\x01\x00\x00\x00\x00\x00\x06\x00\x1a\x027\x00\x01\x00\x00\x00\x00\x00\n\x00,\x02\xac\x00\x01\x00\x00\x00\x00\x00\v\x00\x17\x03\t\x00\x01\x00\x00\x00\x00\x00\x10\x00\x15\x03M\x00\x01\x00\x00\x00\x00\x00\x11\x00\a\x03s\x00\x01\x00\x00\x00\x00\x00\x12\x00\x1d\x03\xb7\x00\x01\x00\x00\x00\x00\x00\x15\x00\x15\x04\x01\x00\x01\x00\x00\x00\x00\x00\x16\x00\a\x04'\x00\x03\x00\x01\x04\t\x00\x00\x004\x00\x00\x00\x03\x00\x01\x04\t\x00\x01\x00:\x00Q\x00\x03\x00\x01\x04\t\x00\x02\x00\x0e\x00\xab\x00\x03\x00\x01\x04\t\x00\x03\x00H\x00\xc3\x00\x03\x00\x01\x04\t\x00\x04\x00:\x012\x00\x03\x00\x01\x04\t\x00\x05\x00L\x01\x8c\x00\x03\x00\x01\x04\t\x00\x06\x004\x02\x01\x00\x03\x00\x01\x04\t\x00\n\x00X\x02R\x00\x03\x00\x01\x04\t\x00\v\x00.\x02\xd9\x00\x03\x00\x01\x04\t\x00\x10\x00*\x03!\x00\x03\x00\x01\x04\t\x00\x11\x00\x0e\x03c\x00\x03\x00\x01\x04\t\x00\x12\x00:\x03{\x00\x03\x00\x01\x04\t\x00\x15\x00*\x03\xd5\x00\x03\x00\x01\x04\t\x00\x16\x00\x0e\x04\x17\x00C\x00o\x00p\x00y\x00r\x00i\x00g\x00h\x00t\x00 \x00(\x00c\x00)\x00 \x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00\x00Copyright (c) Font Awesome\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00B\x00r\x00a\x00n\x00d\x00s\x00 \x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Font Awesome 5 Brands Regular\x00\x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Regular\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00B\x00r\x00a\x00n\x00d\x00s\x00 \x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00-\x005\x00.\x001\x002\x00.\x000\x00\x00Font Awesome 5 Brands Regular-5.12.0\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00B\x00r\x00a\x00n\x00d\x00s\x00 \x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Font Awesome 5 Brands Regular\x00\x003\x003\x000\x00.\x007\x005\x002\x00 \x00(\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x00v\x00e\x00r\x00s\x00i\x00o\x00n\x00:\x00 \x005\x00.\x001\x002\x00.\x000\x00)\x00\x00330.752 (Font Awesome version: 5.12.0)\x00\x00F\x00o\x00n\x00t\x00A\x00w\x00e\x00s\x00o\x00m\x00e\x005\x00B\x00r\x00a\x00n\x00d\x00s\x00-\x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00FontAwesome5Brands-Regular\x00\x00T\x00h\x00e\x00 \x00w\x00e\x00b\x00'\x00s\x00 \x00m\x00o\x00s\x00t\x00 \x00p\x00o\x00p\x00u\x00l\x00a\x00r\x00 \x00i\x00c\x00o\x00n\x00 \x00s\x00e\x00t\x00 \x00a\x00n\x00d\x00 \x00t\x00o\x00o\x00l\x00k\x00i\x00t\x00.\x00\x00The web's most popular icon set and toolkit.\x00\x00h\x00t\x00t\x00p\x00s\x00:\x00/\x00/\x00f\x00o\x00n\x00t\x00a\x00w\x00e\x00s\x00o\x00m\x00e\x00.\x00c\x00o\x00m\x00\x00https://fontawesome.com\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00B\x00r\x00a\x00n\x00d\x00s\x00\x00Font Awesome 5 Brands\x00\x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Regular\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00B\x00r\x00a\x00n\x00d\x00s\x00 \x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Font Awesome 5 Brands Regular\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00B\x00r\x00a\x00n\x00d\x00s\x00\x00Font Awesome 5 Brands\x00\x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Regular\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\xff\xdb\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xb9\x00\x00\x00\x01\x00\x02\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01\a\x01\b\x01\t\x01\n\x01\v\x01\f\x01\r\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x00\xd2\x01\x1e\x01\x1f\x01 \x01!\x01\"\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01+\x01,\x01-\x01.\x01/\x010\x011\x012\x013\x014\x015\x016\x017\x018\x019\x01:\x01;\x01<\x01=\x01>\x01?\x01@\x01A\x01B\x01C\x01D\x01E\x01F\x01G\x01H\x01I\x01J\x01K\x01L\x01M\x01N\x01O\x01P\x01Q\x01R\x01S\x01T\x01U\x01V\x01W\x01X\x01Y\x01Z\x01[\x01\\\x01]\x01^\x01_\x01`\x01a\x01b\x01c\x01d\x01e\x01f\x01g\x01h\x01i\x01j\x01k\x01l\x01m\x01n\x01o\x01p\x01q\x01r\x01s\x01t\x01u\x01v\x01w\x01x\x01y\x01z\x01{\x01|\x01}\x01~\x01\u007f\x01\x80\x01\x81\x01\x82\x01\x83\x01\x84\x01\x85\x01\x86\x01\x87\x01\x88\x01\x89\x01\x8a\x01\x8b\x01\x8c\x01\x8d\x01\x8e\x01\x8f\x01\x90\x01\x91\x01\x92\x01\x93\x01\x94\x01\x95\x01\x96\x01\x97\x01\x98\x01\x99\x01\x9a\x01\x9b\x01\x9c\x01\x9d\x01\x9e\x01\x9f\x01\xa0\x01\xa1\x01\xa2\x01\xa3\x01\xa4\x01\xa5\x01\xa6\x01\xa7\x01\xa8\x01\xa9\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xae\x01\xaf\x01\xb0\x01\xb1\x01\xb2\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xb8\x01\xb9\x01\xba\x01\xbb\x01\xbc\x01\xbd\x01\xbe\x01\xbf\x01\xc0\x01\xc1\x01\xc2\x01\xc3\x01\xc4\x01\xc5\x01\xc6\x01\xc7\x01\xc8\x01\xc9\x01\xca\x01\xcb\x01\xcc\x01\xcd\x01\xce\x01\xcf\x01\xd0\x01\xd1\x01\xd2\x01\xd3\x01\xd4\x01\xd5\x01\xd6\x01\xd7\x01\xd8\x01\xd9\x01\xda\x01\xdb\x01\xdc\x01\xdd\x01\xde\x01\xdf\x01\xe0\x01\xe1\x01\xe2\x01\xe3\x01\xe4\x01\xe5\x01\xe6\x01\xe7\x01\xe8\x01\xe9\x01\xea\x01\xeb\x01\xec\x01\xed\x01\xee\x01\xef\x01\xf0\x01\xf1\x01\xf2\x01\xf3\x01\xf4\x01\xf5\x01\xf6\x01\xf7\x01\xf8\x01\xf9\x01\xfa\x01\xfb\x01\xfc\x01\xfd\x01\xfe\x01\xff\x02\x00\x02\x01\x02\x02\x02\x03\x02\x04\x02\x05\x02\x06\x02\a\x02\b\x02\t\x02\n\x02\v\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\"\x02#\x02$\x02%\x02&\x02'\x02(\x02)\x02*\x02+\x02,\x02-\x02.\x02/\x020\x021\x022\x00\x1f\x023\x024\x025\x026\x027\x028\x029\x02:\x02;\x02<\x02=\x02>\x02?\x02@\x02A\x02B\x02C\x02D\x02E\x02F\x02G\x02H\x02I\x02J\x02K\x02L\x02M\x02N\x02O\x02P\x02Q\x02R\x02S\x02T\x02U\x02V\x02W\x02X\x02Y\x02Z\x02[\x02\\\x02]\x02^\x02_\x02`\x02a\x02b\x02c\x02d\x02e\x02f\x02g\x02h\x02i\x02j\x02k\x02l\x02m\x02n\x02o\x02p\x02q\x02r\x02s\x02t\x02u\x02v\x02w\x02x\x02y\x02z\x02{\x02|\x02}\x02~\x02\u007f\x02\x80\x02\x81\x02\x82\x02\x83\x02\x84\x02\x85\x02\x86\x02\x87\x02\x88\x02\x89\x02\x8a\x02\x8b\x02\x8c\x02\x8d\x02\x8e\x02\x8f\x02\x90\x02\x91\x02\x92\x02\x93\x02\x94\x02\x95\x02\x96\x02\x97\x02\x98\x02\x99\x02\x9a\x02\x9b\x02\x9c\x02\x9d\x02\x9e\x02\x9f\x02\xa0\x02\xa1\x02\xa2\x02\xa3\x02\xa4\x02\xa5\x02\xa6\x02\xa7\x02\xa8\x02\xa9\x02\xaa\x02\xab\x02\xac\x02\xad\x02\xae\x02\xaf\x02\xb0\x02\xb1\x02\xb2\x02\xb3\x02\xb4\x02\xb5\x0etwitter-square\x0ffacebook-square\blinkedin\rgithub-square\atwitter\bfacebook\x06github\tpinterest\x10pinterest-square\x12google-plus-square\rgoogle-plus-g\vlinkedin-in\ngithub-alt\x06maxcdn\x05html5\x04css3\x03btc\ayoutube\x04xing\vxing-square\adropbox\x0estack-overflow\tinstagram\x06flickr\x03adn\tbitbucket\x06tumblr\rtumblr-square\awindows\aandroid\x05linux\bdribbble\x05skype\nfoursquare\x06trello\bgratipay\x02vk\x05weibo\x06renren\tpagelines\x0estack-exchange\fvimeo-square\x05slack\twordpress\x06openid\x05yahoo\x06google\x06reddit\rreddit-square\x12stumbleupon-circle\vstumbleupon\tdelicious\x04digg\rpied-piper-pp\x0epied-piper-alt\x06drupal\x06joomla\abehance\x0ebehance-square\x05steam\fsteam-square\aspotify\ndeviantart\nsoundcloud\x04vine\acodepen\bjsfiddle\x05rebel\x06empire\ngit-square\x03git\vhacker-news\rtencent-weibo\x02qq\x06weixin\nslideshare\x06twitch\x04yelp\x06paypal\rgoogle-wallet\acc-visa\rcc-mastercard\vcc-discover\acc-amex\tcc-paypal\tcc-stripe\x06lastfm\rlastfm-square\aioxhost\tangellist\nbuysellads\x0econnectdevelop\bdashcube\bforumbee\aleanpub\x06sellsy\fshirtsinbulk\vsimplybuilt\bskyatlas\vpinterest-p\bwhatsapp\aviacoin\x06medium\fy-combinator\roptin-monster\bopencart\fexpeditedssl\x06cc-jcb\x0ecc-diners-club\x10creative-commons\x02gg\tgg-circle\vtripadvisor\rodnoklassniki\x14odnoklassniki-square\nget-pocket\vwikipedia-w\x06safari\x06chrome\afirefox\x05opera\x11internet-explorer\x06contao\x05500px\x06amazon\x05houzz\avimeo-v\tblack-tie\tfonticons\freddit-alien\x04edge\bcodiepie\x04modx\ffort-awesome\x03usb\fproduct-hunt\bmixcloud\x06scribd\tbluetooth\vbluetooth-b\x06gitlab\nwpbeginner\awpforms\x06envira\x05glide\aglide-g\x06viadeo\rviadeo-square\bsnapchat\x0esnapchat-ghost\x0fsnapchat-square\npied-piper\vfirst-order\x05yoast\tthemeisle\vgoogle-plus\ffont-awesome\x06linode\x05quora\x0efree-code-camp\btelegram\bbandcamp\x04grav\x04etsy\x04imdb\aravelry\bsellcast\vsuperpowers\nwpexplorer\x06meetup\x10font-awesome-alt\x0faccessible-icon\baccusoft\badversal\x0eaffiliatetheme\aalgolia\x06amilia\rangrycreative\tapp-store\rapp-store-ios\x05apper\nasymmetrik\aaudible\aavianex\x03aws\tbimobject\abitcoin\x04bity\nblackberry\ablogger\tblogger-b\x10buromobelexperte\ncentercode\ncloudscale\ncloudsmith\fcloudversify\x06cpanel\bcss3-alt\ncuttlefish\ad-and-d\tdeploydog\adeskpro\rdigital-ocean\adiscord\tdiscourse\x06dochub\x06docker\rdraft2digital\x0fdribbble-square\x06dyalog\nearlybirds\x06erlang\nfacebook-f\x12facebook-messenger\nfirstdraft\ffonticons-fi\x10fort-awesome-alt\afreebsd\tgitkraken\x06gofore\tgoodreads\vgoodreads-g\fgoogle-drive\vgoogle-play\bgripfire\x05grunt\x04gulp\x12hacker-news-square\rhire-a-helper\x06hotjar\ahubspot\x06itunes\vitunes-note\ajenkins\x05joget\x02js\tjs-square\x06keycdn\vkickstarter\rkickstarter-k\alaravel\x04line\x04lyft\amagento\amedapps\bmedium-m\x05medrt\tmicrosoft\x03mix\x06mizuni\x06monero\anapster\anode-js\x03npm\x03ns8\vnutritionix\x05page4\x06palfed\apatreon\tperiscope\vphabricator\x11phoenix-framework\vplaystation\x06pushed\x06python\tred-river\awpressr\x06replyd\tresolving\nrocketchat\arockrms\x06schlix\vsearchengin\fservicestack\asistrix\nslack-hash\aspeakap\nstaylinked\fsteam-symbol\fsticker-mule\fstudiovinari\x06supple\x0etelegram-plane\x04uber\x05uikit\vuniregistry\auntappd\bussunnah\x06vaadin\x05viber\x05vimeo\x03vnv\x0fwhatsapp-square\x05whmcs\x10wordpress-simple\x04xbox\x06yandex\x14yandex-international\tapple-pay\fcc-apple-pay\x03fly\x04node\x03osi\x05react\fautoprefixer\x04sass\x05vuejs\aangular\x06aviato\x05ember\x11font-awesome-flag\x06gitter\x05hooli\x06strava\x06stripe\bstripe-s\x05typo3\namazon-pay\rcc-amazon-pay\bethereum\x06korvue\telementor\x0eyoutube-square\tflipboard\x04hips\x03php\tquinscape\x06readme\x04java\x0epied-piper-hat\x13creative-commons-by\x13creative-commons-nc\x16creative-commons-nc-eu\x16creative-commons-nc-jp\x13creative-commons-nd\x13creative-commons-pd\x17creative-commons-pd-alt\x16creative-commons-remix\x13creative-commons-sa\x19creative-commons-sampling\x1ecreative-commons-sampling-plus\x16creative-commons-share\x15creative-commons-zero\x04ebay\akeybase\bmastodon\tr-project\fresearchgate\tteamspeak\x0ffirst-order-alt\afulcrum\x11galactic-republic\x0fgalactic-senate\njedi-order\vmandalorian\fold-republic\x10phoenix-squadron\x04sith\x10trade-federation\x13wolf-pack-battalion\bhornbill\tmailchimp\bmegaport\x06nimblr\x03rev\bshopware\vsquarespace\athemeco\x06weebly\x03wix\x04ello\nhackerrank\x06kaggle\bmarkdown\x04neos\x05zhihu\x06alipay\fthe-red-yeti\x19acquisitions-incorporated\rcritical-role\x0ed-and-d-beyond\x03dev\x14fantasy-flight-games\fpenny-arcade\x14wizards-of-the-coast\vthink-peaks\vreacteurope\x05adobe\nartstation\tatlassian\x13canadian-maple-leaf\x06centos\nconfluence\x03dhl\bdiaspora\x05fedex\x06fedora\x05figma\bintercom\binvision\x04jira\bmendeley\fraspberry-pi\x06redhat\x06sketch\nsourcetree\x04suse\x06ubuntu\x03ups\x04usps\x04yarn\x06airbnb\nbattle-net\tbootstrap\x06buffer\nchromecast\bevernote\aitch-io\nsalesforce\fspeaker-deck\asymfony\x04waze\x06yammer\agit-alt\tstackpath\rcotton-bureau\vbuy-n-large\x03mdb\x05orcid\x05swift\aumbraco\x0ffirefox-browser\x05ideal\tmicroblog\x11pied-piper-square\x05unity\x00\x00\x00\x00\x00\x00\x01\xff\xff\x00\x02\x00\x01\x00\x00\x00\f\x00\x00\x00\x16\x00\x00\x00\x02\x00\x01\x00\x03\x01\xb8\x00\x02\x00\x04\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\xd9k%\xf9\x00\x00\x00\x00\xda\x15\xc8\v\x00\x00\x00\x00\xda\x15\xc8\x11" var _Assets9af9b32d4979a14fbf6f85fef5e28a54c6ceb4d8 = "package gateway\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"mime\"\n\t\"net/http\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/gin-gonic/gin\"\n\tassets \"github.com/textileio/go-assets\"\n\t\"github.com/textileio/go-threads/core/thread\"\n\t\"github.com/textileio/go-threads/db\"\n\t\"github.com/textileio/textile/v2/api/bucketsd/client\"\n\t\"github.com/textileio/textile/v2/api/common\"\n\t\"github.com/textileio/textile/v2/buckets\"\n\tmdb \"github.com/textileio/textile/v2/mongodb\"\n\ttdb \"github.com/textileio/textile/v2/threaddb\"\n\t\"github.com/textileio/textile/v2/util\"\n)\n\ntype fileSystem struct {\n\t*assets.FileSystem\n}\n\nfunc (f *fileSystem) Exists(prefix, path string) bool {\n\tpth := strings.TrimPrefix(path, prefix)\n\tif pth == \"/\" {\n\t\treturn false\n\t}\n\t_, ok := f.Files[pth]\n\treturn ok\n}\n\nfunc (g *Gateway) renderBucket(c *gin.Context, ctx context.Context, threadID thread.ID, token thread.Token) {\n\trep, err := g.buckets.List(ctx)\n\tif err != nil {\n\t\trenderError(c, http.StatusBadRequest, err)\n\t\treturn\n\t}\n\tlinks := make([]link, len(rep.Roots))\n\tfor i, r := range rep.Roots {\n\t\tvar name string\n\t\tif r.Name != \"\" {\n\t\t\tname = r.Name\n\t\t} else {\n\t\t\tname = r.Key\n\t\t}\n\t\tp := path.Join(\"thread\", threadID.String(), buckets.CollectionName, r.Key)\n\t\tif token.Defined() {\n\t\t\tp += \"?token=\" + string(token)\n\t\t}\n\t\tlinks[i] = link{\n\t\t\tName: name,\n\t\t\tPath: p,\n\t\t\tSize: \"\",\n\t\t\tLinks: \"\",\n\t\t}\n\t}\n\tc.HTML(http.StatusOK, \"/public/html/unixfs.gohtml\", gin.H{\n\t\t\"Title\": \"Index of \" + path.Join(\"/thread\", threadID.String(), buckets.CollectionName),\n\t\t\"Root\": \"/\",\n\t\t\"Path\": \"\",\n\t\t\"Updated\": \"\",\n\t\t\"Back\": \"\",\n\t\t\"Links\": links,\n\t})\n}\n\nfunc (g *Gateway) renderBucketPath(c *gin.Context, ctx context.Context, threadID thread.ID, collection, id, pth string, token thread.Token) {\n\tvar buck tdb.Bucket\n\tif err := g.threads.FindByID(ctx, threadID, collection, id, &buck, db.WithTxnToken(token)); err != nil {\n\t\trender404(c)\n\t\treturn\n\t}\n\trep, err := g.buckets.ListPath(ctx, buck.Key, pth)\n\tif err != nil {\n\t\trender404(c)\n\t\treturn\n\t}\n\tif !rep.Item.IsDir {\n\t\tif err := g.buckets.PullPath(ctx, buck.Key, pth, c.Writer); err != nil {\n\t\t\trender404(c)\n\t\t}\n\t} else {\n\t\tvar base string\n\t\tif g.subdomains {\n\t\t\tbase = buckets.CollectionName\n\t\t} else {\n\t\t\tbase = path.Join(\"thread\", threadID.String(), buckets.CollectionName)\n\t\t}\n\t\tvar links []link\n\t\tfor _, item := range rep.Item.Items {\n\t\t\tpth := path.Join(base, strings.Replace(item.Path, rep.Root.Path, rep.Root.Key, 1))\n\t\t\tif token.Defined() {\n\t\t\t\tpth += \"?token=\" + string(token)\n\t\t\t}\n\t\t\tlinks = append(links, link{\n\t\t\t\tName: item.Name,\n\t\t\t\tPath: pth,\n\t\t\t\tSize: util.ByteCountDecimal(item.Size),\n\t\t\t\tLinks: strconv.Itoa(len(item.Items)),\n\t\t\t})\n\t\t}\n\t\tvar name string\n\t\tif rep.Root.Name != \"\" {\n\t\t\tname = rep.Root.Name\n\t\t} else {\n\t\t\tname = rep.Root.Key\n\t\t}\n\t\troot := strings.Replace(rep.Item.Path, rep.Root.Path, name, 1)\n\t\tback := path.Dir(path.Join(base, strings.Replace(rep.Item.Path, rep.Root.Path, rep.Root.Key, 1)))\n\t\tif token.Defined() {\n\t\t\tback += \"?token=\" + string(token)\n\t\t}\n\t\tc.HTML(http.StatusOK, \"/public/html/unixfs.gohtml\", gin.H{\n\t\t\t\"Title\": \"Index of /\" + root,\n\t\t\t\"Root\": \"/\" + root,\n\t\t\t\"Path\": rep.Item.Path,\n\t\t\t\"Updated\": time.Unix(0, rep.Root.UpdatedAt).String(),\n\t\t\t\"Back\": back,\n\t\t\t\"Links\": links,\n\t\t})\n\t}\n}\n\ntype serveBucketFS interface {\n\tGetThread(ctx context.Context, key string) (thread.ID, error)\n\tExists(ctx context.Context, bucket, pth string) (bool, string)\n\tWrite(ctx context.Context, bucket, pth string, writer io.Writer) error\n\tValidHost() string\n}\n\ntype bucketFS struct {\n\tclient *client.Client\n\tkeys *mdb.IPNSKeys\n\tsession string\n\thost string\n}\n\nfunc serveBucket(fs serveBucketFS) gin.HandlerFunc {\n\treturn func(c *gin.Context) {\n\t\tkey, err := bucketFromHost(c.Request.Host, fs.ValidHost())\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tctx, cancel := context.WithTimeout(context.Background(), handlerTimeout)\n\t\tdefer cancel()\n\t\tthreadID, err := fs.GetThread(ctx, key)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tctx = common.NewThreadIDContext(ctx, threadID)\n\t\ttoken := thread.Token(c.Query(\"token\"))\n\t\tif token.Defined() {\n\t\t\tctx = thread.NewTokenContext(ctx, token)\n\t\t}\n\n\t\texists, target := fs.Exists(ctx, key, c.Request.URL.Path)\n\t\tif exists {\n\t\t\tc.Writer.WriteHeader(http.StatusOK)\n\t\t\tctype := mime.TypeByExtension(filepath.Ext(c.Request.URL.Path))\n\t\t\tif ctype == \"\" {\n\t\t\t\tctype = \"application/octet-stream\"\n\t\t\t}\n\t\t\tc.Writer.Header().Set(\"Content-Type\", ctype)\n\t\t\tif err := fs.Write(ctx, key, c.Request.URL.Path, c.Writer); err != nil {\n\t\t\t\trenderError(c, http.StatusInternalServerError, err)\n\t\t\t} else {\n\t\t\t\tc.Abort()\n\t\t\t}\n\t\t} else if target != \"\" {\n\t\t\tcontent := path.Join(c.Request.URL.Path, target)\n\t\t\tctype := mime.TypeByExtension(filepath.Ext(content))\n\t\t\tc.Writer.WriteHeader(http.StatusOK)\n\t\t\tc.Writer.Header().Set(\"Content-Type\", ctype)\n\t\t\tif err := fs.Write(ctx, key, content, c.Writer); err != nil {\n\t\t\t\trenderError(c, http.StatusInternalServerError, err)\n\t\t\t} else {\n\t\t\t\tc.Abort()\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (f *bucketFS) GetThread(ctx context.Context, bkey string) (id thread.ID, err error) {\n\tkey, err := f.keys.GetByCid(ctx, bkey)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn key.ThreadID, nil\n}\n\nfunc (f *bucketFS) Exists(ctx context.Context, key, pth string) (ok bool, name string) {\n\tif key == \"\" || pth == \"/\" {\n\t\treturn\n\t}\n\tctx = common.NewSessionContext(ctx, f.session)\n\trep, err := f.client.ListPath(ctx, key, pth)\n\tif err != nil {\n\t\treturn\n\t}\n\tif rep.Item.IsDir {\n\t\tfor _, item := range rep.Item.Items {\n\t\t\tif item.Name == \"index.html\" {\n\t\t\t\treturn false, item.Name\n\t\t\t}\n\t\t}\n\t\treturn\n\t}\n\treturn true, \"\"\n}\n\nfunc (f *bucketFS) Write(ctx context.Context, key, pth string, writer io.Writer) error {\n\tctx = common.NewSessionContext(ctx, f.session)\n\treturn f.client.PullPath(ctx, key, pth, writer)\n}\n\nfunc (f *bucketFS) ValidHost() string {\n\treturn f.host\n}\n\n// renderWWWBucket renders a bucket as a website.\nfunc (g *Gateway) renderWWWBucket(c *gin.Context, key string) {\n\tctx, cancel := context.WithTimeout(common.NewSessionContext(context.Background(), g.apiSession), handlerTimeout)\n\tdefer cancel()\n\tipnskey, err := g.collections.IPNSKeys.GetByCid(ctx, key)\n\tif err != nil {\n\t\trender404(c)\n\t\treturn\n\t}\n\tctx = common.NewThreadIDContext(ctx, ipnskey.ThreadID)\n\ttoken := thread.Token(c.Query(\"token\"))\n\tif token.Defined() {\n\t\tctx = thread.NewTokenContext(ctx, token)\n\t}\n\n\tbuck := &tdb.Bucket{}\n\tif err := g.threads.FindByID(ctx, ipnskey.ThreadID, buckets.CollectionName, key, &buck, db.WithTxnToken(token)); err != nil {\n\t\trender404(c)\n\t\treturn\n\t}\n\trep, err := g.buckets.ListPath(ctx, buck.Key, \"\")\n\tif err != nil {\n\t\trender404(c)\n\t\treturn\n\t}\n\tfor _, item := range rep.Item.Items {\n\t\tif item.Name == \"index.html\" {\n\t\t\tc.Writer.WriteHeader(http.StatusOK)\n\t\t\tc.Writer.Header().Set(\"Content-Type\", \"text/html\")\n\t\t\tif err := g.buckets.PullPath(ctx, buck.Key, item.Name, c.Writer); err != nil {\n\t\t\t\trender404(c)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}\n\trenderError(c, http.StatusNotFound, fmt.Errorf(\"an index.html file was not found in this bucket\"))\n}\n\nfunc bucketFromHost(host, valid string) (key string, err error) {\n\tparts := strings.SplitN(host, \".\", 2)\n\thostport := parts[len(parts)-1]\n\thostparts := strings.SplitN(hostport, \":\", 2)\n\tif hostparts[0] != valid || valid == \"\" {\n\t\terr = fmt.Errorf(\"invalid bucket host\")\n\t\treturn\n\t}\n\treturn parts[0], nil\n}\n" var _Assetsd05f64fbc9bda08199115722ef3368a3ded9a593 = "{{template \"header\" .Title}}\n
\n {{ if ne .Root \"\" }}{{.Root}}: {{ end }}{{.Path}}\n
\n\n{{ if ne .Updated \"\" }}\n
Updated {{.Updated}}
\n{{ end }}\n{{template \"footer\"}}\n" var _Assetsd13d7a53abf40be3e0fd76e8a51bb4835b035bb0 = "\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\b\x06\x00\x00\x00\x1f\xf3\xffa\x00\x00\x02\x17IDAT8\x8d\x85\xd3?h\x13a\x18\xc7\xf1\x97`\xba(d-\xd4E\x04c:$H\xcd\x16H\xa2c\xd1%\x8b\"V\xb1\x10\xa9D\xa4\xb4\x15Z\b\x884 mc;T\xdc\x04\x1dD\xa4\xa9P{W\x9aAb.\x91\x98\xbb\xfcAs-N\x82\x834\xd88\xd4,1\xe9}\x1d.1M\xda\xe8\xc1\x03\xc7\xfb\xbeχ\x17\x9e\xdf+D\x8f\x8f\xa28CƵNƵ\x8e*\xec\xbd\xce\x1dnԄ\xad\xfe\xb1?\xfahz\xa9\xf6`l\x87}\xa9\b\x89\xe9\x1aj\u007f\x14M\xd8z7\",\xa8\xd6 \xcaHy~\xfc\v\x1e\xdfo<\xbe:K\x13e\f\xa9\x04\x1b\n(#eTk\x10\x84\xa5\xb39+\xbc\xa4\xfd\x056c \x95@\xfe\f\xca\x15\x90u\xb3n\x85\x9b\xeb:\xc4c\x90\xf6\x17\xc8\no\x1bH\a*H%XQ!\xa6\xc2\xe6U\f\xa5\x8f\xbd\xd5m\xb3\x06/\xb1wcּ\x89\xac\x83\\\x82T\xe0g\x1bPFM\xe0N\x04\xec^\xb0{i\xd8\xfd8\xdc4\xcb`\xd9\xf9\x8c\xb9\xe07\xf6\xa5歒\xa3]\x80\xac\x83T\xc2h\"\a\x81\xe5s/`\xf0\x02\xee\xf3\xbf\b߮\x98\xc8Q\x80!\xe9,N|\x85\xa9S\x1d@mm\vd\x1d\xb7\xa7\x81Í\x89\xbc\xef\x02\fI'\x12\xdaeȳ\a9Ac\xeatO\xc0ᆗ\v\x93\x9d@$\xb4\x8bÍ\t\xe4\x05FN\xf08\x1c1\x81\xbbQ8룑죡Yhh\x16\f\xedx\x1bx\xbd8Yi\xc9-\xe0 R[ۂ{\xf3\x90:f\xee\xa5.C\xf2f\x1b\xa8/\x9c\xacT\x87\x02T\xdflS}\x95\a\x97\a\xc6\x1f\u0086\x8a!g\xdb\xe3\xd3N\x98\xcd\xf2\xa7\xae1f\x85\x97\xe7\x03\x05\xe21X\xcd\xc1ج\x19\x1c\xa9dμ\xf5\xaf\\\x83\xf8\n|\xb8X \u007f H\u007f\xa3\x9c\xb3\x06\xdf>\t\x95\x87\x87\xbf\xf3\xf4\xfeN;}\xb2ތ\xf2\xf52\xb9#\xa2\xdc\x01i\xc2\xf6\xe3\xdd@\x94\xc4L\r\xb9\br\x11\x123\xff\u007fL\x87 U\xd8\xc98%2N\xe9_\xcf\xf9\x0fb\x85\x18@\x16\xc7I_\x00\x00\x00\x00IEND\xaeB`\x82" var _Assets9ec4cdb6b9a1b4a014c65fbde9dbb7ca62e478ab = "wOFF\x00\x01\x00\x00\x00\x00A\xa0\x00\r\x00\x00\x00\x00\x85,\x01J\xc0\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00FFTM\x00\x00\x010\x00\x00\x00\x1b\x00\x00\x00\x1c\x8d\x96\xb6\x16GDEF\x00\x00\x01L\x00\x00\x00\x1e\x00\x00\x00\x1e\x00*\x00\xa0OS/2\x00\x00\x01l\x00\x00\x00L\x00\x00\x00`A\x92S\x1bcmap\x00\x00\x01\xb8\x00\x00\x01\xdc\x00\x00\x03\xdaǠ\xc8\xf4gasp\x00\x00\x03\x94\x00\x00\x00\b\x00\x00\x00\b\xff\xff\x00\x03glyf\x00\x00\x03\x9c\x00\x005F\x00\x00n\xc0Dڭ\xd9head\x00\x008\xe4\x00\x00\x003\x00\x00\x006\x17\a\x91\x1ehhea\x00\x009\x18\x00\x00\x00\x1f\x00\x00\x00$\x045\x02\xd1hmtx\x00\x0098\x00\x00\x00\xae\x00\x00\x02T\x12\xb0\x00tloca\x00\x009\xe8\x00\x00\x016\x00\x00\x016\xe8\x01\xcbFmaxp\x00\x00; \x00\x00\x00\x1f\x00\x00\x00 \x00\xea\x00\xafname\x00\x00;@\x00\x00\x02\x13\x00\x00\x05[2\xd74(post\x00\x00=T\x00\x00\x04I\x00\x00\a\xab\xfciA\xbbx\x9cc```d\x00\x82\x9b٪?A\xf4-\xd1\x13\xdcPZ\x10\x00D\xd7\x05\xee\x00\x00\x01\x00\x00\x00\f\x00\x00\x00\x16\x00\x00\x00\x02\x00\x01\x00\x03\x00\x99\x00\x02\x00\x04\x00\x00\x00\x02\x00\x00\x00\x00x\x9cc`a|\xcb8\x81\x81\x95\x81\x81ч1\x8d\x81\x81\xc1\x1dJ\u007fe\x90dha``b`ef\xc0\n\x02\xd2\\S\x18\x1a>\xb0|=\xc1x\xe0\xff\x01\x06=\xc63\f!@aF\x90\x1c\xa3\x15\xe3R \xa5\xc0\xc0\b\x00{5\x0e6x\x9c\xd5\xd2\xcdK\x94q\x10\a\xf0\xdf>n\nϳ3c\x10\xbd\xe1)ɵ\\\xc7\xf5|\x81\xafq\x137s+?\xe3>\xfe\xc4_\xd9\xe7\uf712\x85\xb2\\\nd\xad\x94\xc8F\xd9*\xdbd\x87\x1c\x90\xc3R/W\xa5M\xfa奼\x93Q\x99\x94i\x99QW\xb7h\xa9F\xf5\xa0\x9eИ^\xd4\xcb\xfaX\x9f\xe8S\xed\xd2\x1e}\xa5\x1f\xf4\x9b\xef\xf8E~ԏ\xfb\x83\xc9\xfcd[r\xd8\uec556f/\xd9\xdb6n\xdbm\xa7\xed\xb1}\xe9\xb41\x1cβ\xee\xcdXOͳ\xb6\x04\xd6\xdey֥\u007fXKe\xbbD吜\x97\xc6\xc0ڝe\xdd\x14Xw\x05\xd6cZ3k\xed\xf8e\xedց\x8cu_\x96\xb5ƞ\xb17l\x8b}\xf4\xdbJiJ\xd1\x14\x8d\xd3\x18\xbd\xa7\x17\xd4K\x1dt\x8f\x9a\xe9\x0e5\xd1M\xbaN\rt\x85\xceQ-Ũ\x9a\xf6S\x19\x15\xd3:ZC\xab\xa8\x88\x16S>\x11\xce\xe0\x17\xfc\x8c\xe38\x8a#8\x8c\xaf\xb1\x1d\x13\u0600\xa71\x86UX\x81\xe5\xb8\x1bw\xe2\x06\xcc\xc30\xa4\xe0\aL\xc2\x04\f\xc1[x\b\x0f\xe0>$\xa0\x15nA#\x9c\x85#\xb0\x19\x96E\x06\"\xf1H\xa5\xf7ܻ\xeb\x15z\x8b\xbc\x1c7\xedN\xbbS\xee\x88\xfb\xd1\x1dr\a\xe7~\xe3\u007f\xa9P\xaeɀCN0\x9c샿\f\xfa\a\xf5\x13\xfb~3S\x00\x00\x00\x01\xff\xff\x00\x02x\x9c\xa5}\v\x94\x1cWu`\xbd\xfa\xbcW\xbf\xae\xeeꮮ\xea\xe9\xe9\xe9\xe9\u007f\xcf\u007fz\xfa;\xd2|4\xfaX\x96\xad\x914\xb6\xc6B\xfe\x8fma\tc\x8306x\x8d\xc1\x130\xc4\x01Cd\xa3u\x8cC\x96\x01\x02\xc7K\x9cDkX\x02\x06\x12\x01Yp\b\x10\aH6\x87\xc3&:\xe4s\xd8\x1c6q\x80l\f\v={߫\xea\xeeꞞ\x91I䞪z\xaf^\xbd\xba\xf7\xbe\xfb\xee\xef\xddW\xe6\xf8͟m\xfe\r\x8f\xd1Ǹ0\x97\xe38\x94D8\x88pf\x1aM\xa1z\xa3n;\x8bȩW\x8b\x05\xa8,N!\x82\xadad7\xd0\xd7r1{\xf0\xf7C\x13\xa1\xdf\x1f\xb4c\xb9\xf1\xfb\xc7\xc6\uedc6r\xc9c\x89l6q,\x99\x1b\xba \bh}\xf8\xba\xa3\x89\xe7B\xa1\xe7\x12\xc7V\x87s\xcaؘr)\xf9\xaaL\f\x0fe\xb3C8\x96yU\xf29Q\xe48\x8e炛\xcf\xf33\xe8\x8b\\\x8c˰\xf7\a\x91c\xe3ixWa\x0f*\x16\xea{\xf8zy\x98oL\xd3z\xd2p\xf8\x90\xa5\x1bw\r\b)\xf3\x1d\xef0S\xc2\xc0]\x86n=\xb1W\x19Q\xf6\x92S\xefY\\|\xcf)硇\x90\xc5\x17\x8c\xd3OD\x1c\xe5\xc0\x015\x16y\xe2\xb4Q\xe0\xedG\xc2\xe1G>r\xbb\xf5\xb6\xb7Y\xb7\xbfg\xdf>\x0e\u07bdy\x11\xc1\u007f\\\x04\xde;ƕ9._\xb6\x87\x90\x85\xb3\xe9La\x01U땲]\xae;\xb5j!\x9b\xc1\xd9\f=\x0e\xa1z\xa6P\xad\x97m\xab\x90\xc1\x16ܭ\xa2ݍc\t\xab\xb9a%\x8e5\x02\x95j\xf5\xf6JVؕL\xee\x12\xb2\x95\x1f>\xb0\xba\xfa\xc0ꙕ\xd9ٕ\xd9s\xc7\x1aq+\x91\xb0\xe2\x8dc\xa1\xd0F<[\t\x85*\xd9\xf8\x85U\xda䃳\xb4\t'p\xf2\xe6\v\xe8e\xf4\x19\x8epAn\x98\xe3\xc2\xf0\x1a\f\xaf\v\xc3k\xe8\xeb\xa4\"\x85j\x0e\x95\x87\x80>0D\x1f\xf8\xe6\xe3\x8f\u007f\xf3\xf1\x8f}\xfc\xfe\xfb?~?\xc2\xd7IzJ߯\x900A\x9fy\x9c\xdei\xfe\xf9\xfd\xf4V`QĿ\xad\xeb\xef+\x115\xae\x02\xb99\x19\xf0\xbe\xc4sh\x03\xde2\xc8\x15\xb9\n\xb7\x87\xbb\x92;ƽ\nh_\xb6\xa3\xa6\x8b\u007f\xcd\x04\xfcQ\x19NP\x82\xcaJ>j\x8d\xa3\x8c\v@m\x9bk\xcc\xe0\xad{pw\xce\xe8E\x8a{s\x8d\x1e\xd1\xd3\x187\xef\xc6\x18ݥ\xbf\xa0\xf7\xfc~\x1eMF\xbb\u007fh\xc3%.<\aO7\xcfb\xb4\n\x8f?\x8bo\x8a\xe9zL_\xf5\x1d\x15\xf6\xc4\xfd\xbe#\xe3-\x18c\xc0\xf5K\xdc\b7K\xf1\x03\x86\x86\x11&\xeep\x92\xa8\x85\x01v\xc0\xb5P\xab֝$r\xac\xa8E\xe8\xb0Gj\xad\x16\xb4T)\xa3\x95\x89\xbd\xb1q{a\u007f\xfe\xb4\xbdw\x8fBBD\x89%\xa3f\x9c狣\xf9\xd3O^1\x97\xbc3\xb9k\xb2\xbaLO\xe8lBM\xc4_\x8a\x1b#\xa9\xa1\xe3DQ\bz\xd2HD\x13\b\xc5LA\x90I0\xb5ɽ\x94J\xa5~\x10Ky\xf0\xa1u\xe0A\x15\xb8Х\u007f\x910\xd2{\x84o\xa0\x15+q\xf1\"\xe0\x9f\xc2\xcd\x1f\xe2s\b.\x9b\xa5\xb3g)I\x9b\xab\xe8M@\x8dw\xafR^\xa6\x9d\xa1u6\xa6Ynj\xe7\xb1l\x8d\x8cSkԇ\x11\xfd\x8b\xf6\x1b\xa2]\x19\xc7\xc98\xf2\x88,\x8f< \xcb'\xd1:4\xb8\xc4\x1a\xa4\xe0\xe5\x170L\x15\n\xd3\xcb\x0em\xf7\xdfJ\xadv+\x9c;\xb7\xf8\xbd0\xa7\x130\xb3\xa6\xb9\x06\xcc-\x97\xf4\x1d\x80\xd2e\xca\xc4\xe3\xc8Lת\rw\xb2#\x98\xe8ȶH1\x88\x1a\x91b\x01\xe6{\xa3\x8e\x9eH\x89j\x9b\t\u0092(\xa6x\xe1Gh\xedC͟\xde`%x\x15\x11\xb3\x14\x1e7\xef\xdb\xfd<\xd9\xfb\xff\xc6e2\xbc{\x98\x9cN\x89\"~\xbc\xc55*<\xd1ܸW\xf8z\xf3\xa7*\x9f\xb0n\x80'\xccqs\xa6\xb4\xfb\xf9\xbd\x04\xa9\xe3\x84=\xc2\xf5̿\xf1\xad\xf3/Oش\xa3\x82i\x1a1Ѵ\ay䳻\xe6\xe2\xd4\xe2\xa2,;\xb2\xb2\xb8\xa8\xc0I\xee*uO\xce\xc7\xfb5\xf1JtH\xb7\x95\t9O\xfc\x10\x17\xa2\x16$\x8e\v\a:\xcc\x00\x99W\x94g\x15\xf9FE\x81\xae\xe7\xde'+\u07bbos\xe5\x82\"\xff\x8e\xa2\xdc\xc8^\xb8\xf0^Y\x811\xf3\xbfk\x96[\xeaC\x01\xcb\xe0\xe9\x18\xd2I\x033~\x91o,\nL<\x1a.M\x1at\xb6\xb4\x84@\x17I*v\xc2&ҔD䰪˲\"\f\x045SW\x88\x92Pp~\xa9\xb0g\xef@f` \xd3M\x9cw;)#$c\x89\x10Iѭ\x10\xc1\x12<.\xe9!\xa2k\n\x89\x12\xb5^\xfd\x1c}h\x80щ\xf2\xff\x12\xf0\xbf\t\xdc?\u0378\x9f\x82\x01\x9c\x05\xb3\xb7^\xab\x16\xeb\x12\U00015072\x99)\x18\xb7jc\x11\x1a\x90r\xbd1\x852\x98$y\x94\x9a\u07bb\xf7\xe6\xbdb\xc0p\xd2$\x88&\x05a\xec\xa9\x1b\xe7_\u007f\"A/>\xfdԏ\xaf~8\x9f\u007f\xf8\xfc\xc3\xf9\xd8\xd57\xa2\x124\xdc;\x15\n\x92\xb4c\x04\xa4\xdb@\x16\xac\xdc6y\xac\xc6η\xfd\xf3\x91\xfd\xfb\x8f\x1c\xd9?\xb17\xcbI\x9b\x9b0\a~\x85\xe9\x97\x01\x18\xbb\nw\x90\xe3$;j\xc1\x88e3E\x04\xc0\xc1\xa8UʎD\xa9\xe60\x99TldH\x11\x8a \x8a\x00\\\f\xd7\x00\xa1Pn8\xec&\xc0]\x87K\x92D\xfc\x83XTE\x19\x8b\xbf\xf8\x84w\x81$M\x9f\xdc\xcb_ώg\a\x87\xa7kU\x17~{\xb8\x10\x0f\xe7\x1f\xbe\x9aU\xdd\xf8\xd4X\xbbƑ\x80\xa2:<\xf9m\xef\xe2}\xfc\x9e\xc9{\xe1\xef<\xc9E\\\x84F3\xc9\xc1\xf4\xfe#\xcdKPs\xdbJ\xa7\x82\xe9\x10Wwj\x9c\xc3(>\a:\xe44\xf7z\x8ekd3--e5:\xaa!\xea\xf8\xae\xc96\xd7\xfe6\r\x9f\xf0\x9aC5\xb7\xc7J\xeb\\\xb6\x053\r\x92,]>?\xa2\xeb#\xfa\x9a\xbe\xfd\xe9\xa2Wj\t\x91\x12\x14\xd6\xe1\xafd%J\xcd\r\xaaQ6\xdc\x16\xba\xee\x9d\xe1\xf7\xa8\xef\xda\xfd}\xaf\xa3\x87\xaa\xba^\xa5\u007f\x89\xe6\x13h\xac\xf9\x97\x98\xe37\xff\x9f\xa7S#\\\xc1\x9b70\xc6t\xd4\x1a0K`\xa8%w\nE\xc1|\x82q\xad\xef\x81\x01~\xf2;O>y\xd7\xf4\xd4ޫC\xba\xca\a\x1dRC܉\a\x1f|\xf6\xc1\x11K\x95\xf5\xe4\xa0\xe5\x14\xd0\x06\x14\x8d\xa9!\x8d7\xf3\xe1ك'\xfe\xef-\x8f\xdcr˾ʘ\x9d\xb0\xa2\xaa\x15 \xba+\xf6[\xb2?\x02\xb2\x9fr\xbe_\xcc\x02\xb9\x86Q\xa4\x96\x05{.k\xfa\x85\xfc\xfb\x03J\xe3\xe2W\xe1\xf0\x18ZJXm\xb1\xae4\x9a/]\x82\xc3%oN\x1d\x82~\xa3`\x1f\x15\x98uDY\xb7ݱS\xa1\xaf\xcaGaփ\b\x1fG\xc5l\x065҄\x0f%\x12\xc1\x15c\xb0y\x96\xf6\xb9\xb1\x04Tk\xae\xec1\x06Q\f\xff\xdeһ0:\xb7\xd2|\xe7\x91K3\xb1u\xc7}#\xbc\xbdt\xd7\xff>\xe3\x8c\xe1\xa5\xe6\xa5\xf5uN\xf2\xe9\xb2a\xe0\xac\x03\xdc*\xbc۵\xc8\xe6<\xec<\x01\xd4.g+=eg\v\x15@\x1b6z\x1a\xa1\xf7J\xb2,\xd9\xf4\xf0\x97\xed\xab\xab\xdbW\xbfK\x95w\xb3\x14\x880}\xbfЮ_\x93\xa5\u007f\xa0gv\xf8J\xfb\xf0.\xefPb\xcd#\x01\xb4\u009e\xbfX\x92\xa5\x83\xf4\x16\x1c8\x81\xf1\xc9\x15\xc0'Y\xae\xce\x1d\x01\xbc\x92<غ\x1e\xab\x14\v.\xc7\xd4)\xc30\xa1\x90DQ+\xefP\x11\xe6g\x9e\x86\x04\x12\xadP\x04Q\x02r\x17nRfr\nӈ\xb7HDC\xaa\x1e\xdc;\x9fL.\x9d\x8e\x05\x8d\xb9}A]\x8d\x9a\x13\x0f\x9eX:\x13;\xfc\xea\xe6a+6\xb0\xf7\xd6[\xdf~k2\x16\x14E;\x8a\x1eH.͠\xe9k\xcb3\xd7\x0e\xc4,3j\x8bbp\xd1\x18\f -Q$\xf5\t^(&4+;\xde\xd8wK}B\xb9~\xbe1#\xe2}7\xed\xdb7\x95\x1d\x8a\xa5\b!\xc6\xf4P67\xa7\xc9\xfc\xc8\x15\x13R\x19\x8b\x9a\x01\x95`\xd6p\x88\xda\xf4(\xc5d\x1f\x97\x8f\xfa,\xf9J\x94Z\xf1(\xe57\xdd-j\xb4\xefi\x1cP\x1c\xebq\xb0ԅ\xe8#\xe1\x03\xd4H\a\xb9\xbe\xf9\xf3\xcd\xcf\xf3\"\xfac\xa0\xd7^\xee\x1a\xe89\x89@\x8a\xdb\x06.`\x82\xa7@\xff\xa0\xc2\"\xb6\xc1Oq\xea\x05\xb8Q0D\x1bn\xd8Po\x97\x17\x11̽B\xbd\x005\x06}j\nʠ#џ\x8di\x01\x91\x97E\xb5\xb8x`vv$/\xdb\xf5-55u\xc24+\xf5\xf9\x83\aR\x02F\x1a\x94\x82c#\x95\xf2\xdcP\x86\x967xU\x19]\x93P\xc0\x04\xf3㾆\x8c>;V\xb7\xe5\xfc\xc8\xec\xec\x81ł&ʼ\x18жԼ&<\xaej\b\v\xa9\x03\a\xe7\xeb\x15\x13J\x8a\x88I:\x91aE3\x80\xa4\xb5QE\xe5\x03r\xe3>\x82\x00S\x89\xd9\xe9K\xc0+!\xf0\x8cR܄k\xc1\x02K\xf8\xcd:'3\x84`\xf6e\xcd\xf2\x02JG\xadJ\xc3g\x8e;\xbek>\x14\xb0\x030\xf7StR\x82\xf5}\tL\xb7\x14~\xb7~H\x87\xdfE*\xee\x1e\xd5\xd1\x06\xb4\xe9H\xb9\x12\x1e\x1b\xc3 ?\xf1\t|\xca'\b9\x176O\xdfFA\xb7\rqyn\x12\xc6\xd9\xef<\xedA\x8b\x88\x9ax\xa0e\xd2\xc5H-\x1d\xcdyfA\xcb<\xe0\x1b\x8a\v\x8e\xf2\x1a\xec\xa8\xc8P\x1d\xdc\xfcӣ\xe8\x13G_\xd3\x04\xbe\x89\xc4#\x91\xf8\x11v\xfc\x8e\x1e\xfc5\nү\x05\xf5\xdfPt]\x19<{\x96ʉ#\xf4\x9e\xf7\xa3\xb2ʓ\xbfe\xee:\xeef\xd7\xfa\x05ce\x1cab\xc3\xd0Sy1\x8e\xfcb\x03\x84Wc\xa6\x0e\xf6K\x85\xb6$\x0e5\x12\xa0I\x15N\xae9\x03\xffE\x93<\xb4,.\"\xfa\xc3U\xd7\xe5C\xbf\x9b\x99\t8I3\xc7c\xd1B\xb5\xa9h\xe6\xb8*(\x81\xa5@$\x02\aEP\xa2\xa6\"\x86\xf5xh\xac̟0\xa2Q\xe3C\x83\x13\xa2\x1a\x924+5h\x8e\x8dE\xa2\v\xaa\xae\xc8\x06R\u007ffX\x86a\xa1\xfaL\xc6L:\x01]\xcd\f\x8dTFdS\xff\aݔc\x11\x03\xe7\"\xe1霮\xbd)j\x18Q2ae\xcda9l\xe7\xc4\v\xbc\x15^ \xa9`\xa0\xa0\xbe\x9bv`\xb8vb\a\xff\x13\xdc-\x1cW\xa3H\xbaR\x84J\x18gƞC\x14\xedd\xcb~\x03a\xcd\xc8Q,4\nE*t,h\x81m\x87\xfe\xa0]\xbdQ\xa3\xe2h\x8a\xcff\xa2\x96\x1d\x05\x92\xf0\xa2gr\xcedN\xf0\xe5\xb1P\\\x0f\x8b\x8a\x19U(\xeeDS$\x17{\xf5x&:UC\x96\x88\xf9\\f\xa6\x145n\x84\xa1\x95\x15]]\x88Ɩ\xad\xc1\x94\xa5I!U\x9c\x18\xfc\x10\t(\x18=\xcd\x10\xf8\xdb̌\xa6\xe7\xa6Ñ\x1c6\"1Y\"\x1a\xa64\x00j\feT}&cD\xd5B \x98\"\v\x05\xfe\x82\x98\xb3\xc3\U000b0675&\x88\xa4\x06\x9e`$\xf4\xf0w푊;\xfe\x11\x869\x1aB\xb6C\x1d;\x8a4\\\xc3\xc9\xe5\x05`\x82\x06\x18\x853\x80\xa1Ȉ\xe44\xaa\xae\u007fO\xbd\xbe\xa8E\xed/\xf8\xaf\xb2\x88\xa0%\x99B\xf4g{\xf8\xdf5\x93\xb1\x8bvk\xbc\xe4\x80\xec\r\x18\x89\x9b\x11\xb5\xff\x88\x15\xba\x06\fݓ\x99\x81\x1ez\x19H1\x14\x1f\a\x05\xd4`4Ї\x85\xac\xe5X\x0f\aq]\xf8\xcfpǹ\x1b9Ρ8ReR\xab.\n\xa0Pf\xea\vȯ\xfc\xc0\xf5e\xb3\x95\xe0\"\xa6np\xb1\f\r@\x8e\xd2\x1f4\x03\x96\xa0\x13\xc0\xe0A\xa2\x94Af[v\x98\xe1^\xc8|\xc1\x1d,5b\xc6\t\x1d-\x97_/7V\xd1\x0f0P\x97\\\xde\tD\x83j\xa0\xcd<\xad\x89\xf3\x8aYLjz\x8c\xc3\xf9b8\x83\xe0g\xee\xe2\xf6\xc1\xccgn\xef8j\xfb\xf6\xae\xf9\xc8\xe6\xbc\x00B2K)\x93uC\x1a\xdd\xc5H\xad\n>\f<\x89\x9e3\x12֊g\x14\xc1\xf9Y˸\x0f\x83@\xbc\x1aSc\xf1\xa4j܅\xf1w\xf9\x12\x0f\xce\xe7\xdb\f\xab\xf9\x13\x10\x95Lf.\xb1\v\xa3\xb9\x88\xc7\xe0a\xdc\xfc:^\xc3_3ԓ\xf4\nq*\x0f\x8f,yr\x1d`\xde\x00_%\n~f\x05lg\x0fj\x9fo\xec\x90l\xb4\x12\xa1>\xfbt\v\x95\x16\x9c-\xef\xdd\xf6\xbc2\x06\xae'\xb6u\xcb8\xba\xbe\xfe \xe6\x8f\x1a\xea\x05\xd5\x18\xc3\xf8]\x87\xaa\xd5C\xd5+\x99+\x8f\x16]p]\xf9ndV\x9a/a$\xf2\xfc\xd1S\xaaa\xa8gh`\xe5\x85*m\xbf\xcc\\z7>\xe1\xc2\x1a\xf4l\xcbmc\n\xe8\x1c\xb3-]0n`A\x1a\xbc]\xf4Ƴ-]\x1b/E#o\xbd=K\xe9\xa8\xedXI\xbeR^\xe4k`\xf0\xa4k\xc0\x8dbfJ\x00\xa1\xd4\x15\xaa\xd8h\xaeeO%\fpb\x1d#q*\xdb\\C\x1bك\xfc\x80\x11\x8f\xc5\x06\x06\x8c\x01\xfe`\xb6;lQ\x1aM\x1cE\x0e\xd5#\x0e:\x9a\xf8\xb7\xe7\x13\rd\xabABBj\x145\x12\x9d\xb9\xb4\x06<\x15\x04\xcd\x06\x1c\x15q\xady0\xbf\x98GY\x17j\x15\xe6\xc4\xc1\x98\x00\xbfD\x98\xfe\x00\x8d\x91\xa5\xdeYݍ\x16F-*?\xa2\xd9)\xbeH\x9f\xb8@-\xc1x\x01f\xf8\xecȆ\x10\x93\x94\xa3\x8a\x14\x13V\xae:=a\f\x93\x12\x1f\x19O\x1d\xaeU\x97S\xe3\x11\xbe$E,y\xe2\xd5\xe8,\xb4-\xc4\xe9c#\xb3\xcdw\x8e\x8fKb\x9e\x90\xbc\x88^<}վr\xa8\xe6\x10\xb20\x93+\xd5\x0e_]/\xe5f\x16\x00\xfc\xfc\x90Z\xdew\xe5k(\xfc\xd4\xefD_\x04\xf8\xf3\xc0[\xbb\xa8^\x8e2\xcaN\xc14\x00\x10\x81\xa0U\x10\xef4<7\x84\x92\xbc+\xec\xa44\xc09Ì\xcc\x12\xccv\xc0\xb3b\xa1?P\xc2Fs]\t\xca\n⃦uh\x16Tm~w\xda2\x83|\xf3}hv\x02L\xc1wW\v\xeb'T\x1dl䠬\xabH\b\xc6\xf6O\xec>\xa1E\xe9\xa4\x06\x19\xb8\xaf0\xb1?\x16\x14\xc8\xdc)4\x05f#:\xf5\xa7\xf9A\xe0#\x8el\xf1\x1f\x0fs\xb7qo\x05\xef\xd1s\xf0\xa8\xe1R\xe98\x92\xd9./\xd1W\xefD\xd3\xf4\t\xdf$\xb7\x99w\x185+\xe5|\xdb[4\xb3\x9d)\xd4\xc8R_\x05\xac\xa6,\xfcYs0\xb9\xa0\xcd\x02<\x03\x9d\xae\xbb\x16\xcec\xccҹ\xcf-,\xb3\xc2c\xcd%\x98Z\xeaIC=\xab\x1a \x01,\xbdy\xee,\xdc8\xbb\xc4j\x96\x9e\x8f\x83]\x13\xc7\xd8=}\xddg.\xad\xb2s\xd5-<\x94\xcb\xe9\xe8-\x8a>B\xe7ۈ\xae4߉\xf6\xeb\xfa~tk\x8cV\xc4J\xed\x1e\xd8\xc9\xd3\xebl\xfe\r\x82\xa4\xa0Q4j\xd2yf\x9d\xe7h\xb7]\xe2F\xb7\x04\x01\x0f\xb957\xd3e\xb4\xa6\x9f\xd4S\xf0\xe7\x9d\xd6\xfc\x13\xb3\xe4N\xd6U\xfc\xa2\xaf\x85~\xf2|\xa7\x05ut\xbd\xa9\v\xd3\xd6\x1f'\xda\x12#\xea\n\xfbt\xc5s<\x9b\xf6\x05\xf4\x92\xf7\xac\xc3\xfc\xbb-=\xb4B\xec\xb6w&\x8b\b\xac~\x9c)\x16\xc0\xaaw\xec\xf2\xe3\xbe7\xbc\x93\xd9\u007f\xefe\xc7\x04\xb6\x82<\x9e>?\x8d\xf9\xa0\x85\xd3wv\xbf\xfd\x8eH\xc7`\xbcI\xe6\x03\x16ٵ\x8bX\x01^.\xf6\x85\xab\xb4=\\-\xf9\x8b\xcb\x0eu6\xc0Nʸ\xde\xc5V\xc0\xdeȎ\xaf\u007f\xdb(\xe6\x89\f\xe3zm\x9c\xc1\xd8\x0f\xb2Iv\xbcg\x86\x80R\xe6\xe5\xe1a\x06\"\xd7\x17\xb6>\xb1\xc9^\xd8\x1cz\xa6\x1c\x0f\xac\xb0\x1dX\x8c\t/\xd0\xc3\xf6\xf0\xbc\xd5hۘF\xdb\xe6\xef\xac\x1b\x1c\xe6^\xc5\xdd\xc1\xbd\x9e{\v\xf7\xab\xdc\xfb\xb9\x0fq\xbf\xd3GG\xf8\xb80\xbfM\xacg\xbbki\x9b\xeb_\xb6\x9f\xedbO|\x88i\x12\xe6\x13\xa1\x1f\xc8͔,\xa3Kr\xf3\t=\xa1\xc3o\xadߩy\xc1=\xa3u\xaf\xbc\xbeCc\xeft\xbb\xfeW:\xfcz\xe3\xe7\b^\u05fc$\xbf[w[\xf5\xfe^\xe7\xbb~t\x9b6\xee\xefy]\x0f\xe9\xadX\x90'W\x87a\x84z\xc7bK\x18\x8d\xda\x17\xe9\x1e\xdd݊\x8e1\u05cf\x81\xbc%\xecE\x159\v{\xf9\xe2\xd3:gq\t\xaak\xa8f\x9c\xa2fs\xdd\x11=WO\xf4lGt\x9f\xae_PBZLGU?\xc3}\x8b$ȫE!\xa0\xbch\x18\xc4\xf6q\xabO\xfei\x8c縆O\xf6\xef$\xef\xee\xd6\xf5\x1f\xe8\xfa\xdd}\xa5\xdco\x83|\x83\xdf\xd7\xfb\x8b7\xdf;\x83\\\x04tS\x1f\x8eN\x9by⋺\x0f#\xbb\xcb\xfaYkn\xa0\xf9\xaeȻ\xad\xf4\x9aB\xb4я:\x01\xf8\xc7\x14h\xe3\xd9\x1e\xfc^\xf4'@\xcb2w=\xb5\v)=Ao\x19\bL\n\\\xf4t8\xd3ߎ\xd0(F3\x86\b\xc6\xc6\x14Z\x94\x1aN\xbdg\x89ť\x13ue\x81\xe5]\xba\x00\xf5\xf8\xb2a\x9cs\xe6f\xc6e\xad\x9e\x18\x99\xcc%k\xa5\xab\xe6\x9c̹s\xe9\xd2\xfcX!\xb2HD9\x14\x1f\x1e\x1d\x8d\x0fh*\xd6[P?\xa2\xcbVX\x10N0\n\xa2\x8c1\x02}\f\xa4\xeab$\x15K\x8d\x9a\x03\x87'\xe7F\xd2fPؕ\x8a\xd9\xcd?\xf7t\x93\xab\x06P\xac[9u\xc6]\xe5\xe24\xde٨\x94\xbdՕz~\aV{\xebWd\x8c\xef\x90\xe5;\x804\x87\xfb2\xdcKA\x89ޗ\x82\xeb۰\xdc\xd6w\xe7\xc1/a\xdce\xe3\x1d\xd5\xfa\xfe\xce\xcb\xef\xef\xfb\xees\xadw_z\xc5寮\x05/\xa6dG;\xbc\xfbB\xabg\x14\xea\xfb\xe6\x9b}t\x19\xdca\xae\xd1\xf5\xcf/\x82/d\xc1\x98\xf7\xf8A,x]\x8c\ni\xd3u\xd3нFK\x84~\xdd2\xa6\x96_D\xa93\xaa\xb1\x81n\x01\xb7\xe6S\xae;\x00nͽ\xcb\xcbT\xb8\x82C\xc3t\xa7\xbb\xbeJ\xed\xccQn\x82\xaby6\x94'G\x88gkB\xa9\x92\xef}\xb3]\x04\x17\xcc{\xb5\x89R\xfa3:\xfd\xb1\x03\xb2|\x80\xac\x1a\xeb\xcb\"\x05\xe4\x05&\x8fW]\xb1\xfcy\x1fH\xab\xc6|\v\xa6\xe6Z\x1bo\xa0:7ŭr7Q\xb9I\xe3T|v\x8c\xadPe\xdbQ\n\x00\x84\xae\xb2\xf1n\x94\x8a\x864\xa2\xd4\x1e*\xfa\xc2USB\x96\x867\x05\xb0\v˶\x1b\xaf\x12[\xb1\xaao\x91\x90d#\xa7R\x10B\xc2\xe4\x15Ӧ`j\xcc߾C\x8e\r\xaa\x82>48YQr\xb1\x11\xfbp\x10i$h\x87\xce\f!I\x89\x18\xb2\x11\"\t{P\xd5\x06\xee)\xe4\x97T]m~\x8e\xd9\x01\x1fN'sÉ\xb1\x01\xcbR\x8dH\xe0\xa5@\x84\xa4\xb2\x8a\xb8{\xbaZs\x9c\x81\xa2\x1d?\x1a\x1cUc\x86\x11\v\uf2a8ZX\x95\xe5+C$?\x14{\xbe\xb0\x8fd\xaek\x19\x12~\xdc\xeb4V\xc1\xfc\x93qļ\x14\xba<\a\xbflO\xa8n\x11UvS\xb3\xde\x012\x89\xadt\b\xa8\xa5\xdeV\xbdP\xa4?x\x00\x83\xcbL\x97\xce\xe0G\xdd\xc6j\xa1\x86\xbee\x94s9\xa5298\xa4\vZI%j؍7\xe8\x8a\x16\x9c\xbar\x12\xc82;\x8bl)Լ\xd9\r\xcdܮ\x86\xc1\x1b\xd4PP\x06\xac\x97\xf2\x85{\x064=3\"\x87\fٌ\xca\xfc\xd0\xdf\xc4♪\xe3ԪӻEm\x8f\x12bD\x90-\xab21\x9cK\x9ea4\x1a\xd6\u008a\x11SG\x83\xa1\f\xd9Wx>[\x97CWʪe\x04\"\xbb\xc2\u07ba8\x02~\x1fa+\xac\x87<\x8d\tx\xb1u\xe5L;\xeb\xa5\xca\x02\xe6T\xbb\x94\xe9\xc1\x0e\xf2\x8db\x83\x14I\xd1!4\t\xa6\xe1\x14z\xa3\x00\xff\x14\x0e\xcf\x1bb0\x18\xbdr$0\xae\x8f\\\x19M\x8a\xc6<\xabKB\x95>\xe1UՎ\x1c\t\xdfX\xad\xde\x18\xf6\xceϟXX8\xb1p\xcdT:=\x95\xfe\xbe>\xae\x8f^\x19\r\x06\xdbO\xda\aG\xdd:ڙi\xba\x9d=\\k?~\x13=\xff\xdb\x02\xed\xe3\x8e4\xed\x83\xda \x0e\x8c\xefO`|m*M$f\x83\x96aPh\x18\x1e|K@\x06.\x04ʠ\x95r\xbd\x81\xa9\x83\xdc( \xe7\xae'\x9f\xbc+\xe6Dm%2\x9c\xbfm\x11\xa4L\xee\xcc܉\a\x1f7xM\xdf\xd1'\xfe\fuC\x9a\x87\\o\xf8\xbf\xa0\x0e\xee\x1d\xdd\xd0\xe0\x16\xb8\x03\xdc\xd5t\x15hg-\x11q\x17\xd4\b.\x16\x98\xa9T\xa0Yl 8\x9c:\xb1\x16Q\x0372\x16\\W\t\xdc)b\xban\x94D\x8dm4\xcb\xcfT\xd5\x1c\x18\x0e\u058b\x83:/M\x85\xac\x00\x16r\x82\xa4\xea\x03\x95ϒ\xa0\x1c?\xca#AHN\xaaa=\xf0\x80\x14\x8d\x1a\x11~[U\xd4|I\x1e\x06\xf1{\xc0$\x01;\x96\x98*E\x82|\xc4\x18\x1b\x0e\x92\x1b\x91d\x1a\x03\x9f2,\x8c3\x8f\x9a|\xc0\xc9\x06\x05\x8c\xb0\x88Z6\x91\x9f\x06\xd7^\x0ew\x87\xa9\b\xd7\xe2+\x16\xa6\x91\x17\xa7*\xd2@\x14\x93\xa5 e\x1d\xb0 ٥\x93@3@\xa0mp\xff^Hļ:\xc0\xab1\x95'\x9a \x84ye@兀!\xf0\xb2d\xaa<\x18P\x82\x12Py\a!k{\xbc_\x14\x89X\xb8]Q\x86\xc6MY9\xa4(Zc\xd6\xc0\x8a\xba& \x01C\xf5m\xf4|\x9b\xda\x0f\xd7}\x97ŵ\fR\x93\x80U\xccp-\xbaH\xbb\v\x8d.z\x80[e\x1b\xe4\xbeC\x88\x98զ\xc0\"\x1d\"\x02?\xa8\x9b\x02\\\x10qʭ\x11\x95\x88b\td[\xa4.\xe8x\xc1<\x8au,4\x06\x87\xe1t\x94^\x87G\xec\x1c\xf6\xfcu?\x1eun\xf1\xb2\x1c\xcb&\x1c]\xb1\xc2`\x00\xb8\xb1\xaa\x06[\xf4\x1dG\xdb pH\xbf\"\x91\x15\xb1\xa6\x04Ր\x1c\xe4\x89\x14\xd3K1-\x10\xd0b۳\xe0\a\x9f\xd1\xf3CZ8\xa0a\x89G\xd3\x12\xb9#\xe8\x18[\xe1\x1d\xa1\xb1\x8f\xcb\xc1\xdb\xce\x1bk\xa9\xa1m\xc0LѤ\xb0\x93\xb2\x1c\xfb\xe3\x91Db$\xb1=l\xe7\x96Z-\xd7_Jж \xc1[p\t Q5\x90\xa9i.\xc7̀\xd6\\\xe6V@\xfeU\xa2\xd9F4[#p\x86_\xad\xd1\v\xb1C:\xd6\x1b\xdcϚ\rǦ\t@\xc0!\xb5\n\x18\n\x98\xdaPS\xe0ʀ\x8e\xa0\x1d\xad\xa7RK\xa9\x14=|ˏJ\x92\x99v\xa5\xd4\xca\x13a!\x10\x0f\r\fK\x91\x94\xadN\x0eF\x94`\xd8P\x96R(\x95ZO\xb1\u007f\xc9.\xdc\n-\xd4B\xa1\xe6\xdaW^\x15\x1a\n\x17c\xb7\xa5R\xef\ni$@\xe0\xa7}:\x95\xf2٧.\xed\xa7A\xc6]\x8e\xf6T\xa1e[\xc6\x11\x88\xb6(K\xcf]t3\x86\xa6\xb6\xe3\x17\xf0\x03r\t\x9aJ\x95\xc8I\xc1QBT%\xa6[\x96\x16ߞɛς\xca\xcb\x11iV\x94s\x18\xcb\xd7\x13\x8b\xa8\x83X\x8d\xee\x8ejr\xcc7_/\xb6\xe5\xf3\xe5\xe6\xab\xeb\x9d\xfa\xd63Z\x01\xdbm`\xfe{bY\xa4\xa6\xcbgd\x9d\x1d\xb6\x05\xf5\x1b\xb2\xac\x9d\xd5d\xb9\x9a\xf7Z\xear\x9e\xc3m\xfe\xa1y\xcdE\xe0\xeay\x9aq\xd1`I,\x99\x96\xf7\x1e\x85⎬C٦\x9dc\xe7xN\x19\xab\xa8A\xe1I\x8cMA\x14\x84]\x84\xec\"\xd8\xc48\xfd\x8b\xad̳\xf1\x91\x98\"4x\x85\x1d\xd3\xf0\x04&\x9d\xf6w`\x02~u\x1d\xe3:!a\x84\xf1\xd0_\xf7g\xa3\xe6\xda\xcf\b\xaf|^\x11\xe8Q>\x06O\x11\xe2{\x8a\x03|;\xf6\x87\x01\xb6\xd7\x10`=\x0e\xc3\xe4E\x06%\xbb\xdc(\xe2\xa2\xe7C\x97)Ӏ\xcbAc\x97N\xdd!\xd8r@O\xa2\xd3\xcc$i~x\xfa\xect\xad\\~;\xb3C\xde=4T\x8bF\x83n\xd5\xffb\x85Yf\xa6\x1c`\xd7\xd71\xfb\xc5\xf1\xdf\xf6ڲ\xb5\x88\xe6\xe6\x1f\xf2\x12\xfa\x13\xf0\xe8c0\u007f\xa9GO\x04L\xd8\x00\xd0|\x8d\x05j\xee\x839[t\"\x92C\xcd\\\x84>\x13/\x8b\xf3\xa2\xa5\xe9\xaarv\xdc\x18Mݛ\x10\xe3\xcf\xe4\xf3\u007f1\xd7\\\xbb\xfb\xdbZT~\f=o\xa4\x93͇\x1c\r\vSs\xa6\x98\xb0WK\xda|\xf0\xbb\xe5`\x0e\xbd\xe3\xa5\xc9\xcf*\x11\xfdkT\x9f\xe0\xcd\x1fn\xbe\xc0\x8b@\x8f\x107\xc0\xa5\x80\x03\xa6\xa8\xf7\x87l\xec\xa6\xda\x15\xa8z\x00mI\xa8\x8dP\xa4\xb9\xa6\x85\"\x89\x02(\x98\x80l\xab\t\r\x80І\xb1\x06\x85\x92%\xe8\xefR\xb7\xdcV(\x1e{d\x80\x9d\xab\xb7\x1eڭKQT\xbcr`\xa2\x9a_\x98^\xba\xf2/\xe7\v\xea\x95K7\x8fǮ,\xa2\xfc\xabw/\xd9\x13\xc7\xc6Q\xe0\xf6?H\xe9\xb7\x1c\xa1DZ\xa3\xff\x1aRǦ\xf3\xf6\xf2\u008f\xaaV\xfc\xeai\xfb\xadV\xb5fO_ݼ\xb4x\xb5\x93\xdfS\xbd*\x12)-\xc0\xec\xe7\x94v\x9c\xd5\xcd\x1b\x1c\xf7\xac\xbe\xe3ܭ}\"z\xe0\x19\t\x16]ǤQ)\x8b\xf8\xe3c\xe0\xbdֈ\xcfJ\xf4\xaf\xad\xb4[\xd1Ȑ\xaf\x9egA\xe1f\xc8I\x1b\xea\xb84\x10\\\n\x85Х\xe6\x1aZ`1ȻW\x1ep3E.\xeag\xf4\x9e\x1fZ\x87\xe7.\xa8F\xdaA!\xe8#\xdc\xfc\x8c,\xbf\xbcɡT\xf3\a\xa2\xf8\x00\xd8\u007f\xf0[\x19\x19y\x8c%k\xbb\xbf\x0f\xb2\xe3<;\x02\xa3n\xfet\xf3\xb3\xfc\xaf\xa2\xaf\x82\xacO\xba\xf9\xa7\x12\x9dhEw\xe6E*N\x9a%t\xd6\x1b\x8bb\xcd\xc1,Sҿ\x8c\xe5\x14\xdd%,\x81-^\x19\x88\u007fPWUU\xff\xc5'\xd8i\xfdӋ\xcd\x1f\x18a\x05\xf1\xb2\x12R\x94)\xe5\xa1\xccPa\xb8\xe0\xaeh\x19s¾\xa9xa\xddL:j@\xd7U\xf4mvj\x9e/E\x02P\xe2\x155\x1e\x1f\x8be\x0f\xfc}dh@\xee\xacm5\nӎ\x8d\xa6\xf65\xd7\xf2\x83f\xd2\xdc\xe2\x03T\xfb\xe4\xf0{k\xf2\xe0\xcc:n*h\x91\xa5\xcfF\xa93\x04\xfc?L\xdd\xe0\xee\xcc\xd9\xd1=\v\xc7rK#s\x05\x91\x0f\x13-\x91\x8e\xe5\xc2c\xb9\\RTE0\xbb\xba\x02\xf7\xa1\xd1k\xe6\x8bK\xf9\xac(\t\u0090\xa6\xd8Ѽ\x9d)\x0f\x8aH\x1c\x14E\xb1'G\xbc\xc2\x1d\xdey=\xb7A\xbd4\xea\x9b\xd9L\xfe\x15\v\x98\xf9n\x00`\xdfz\xa7_\x02\xf9\x17\x051~\xed\xd2\xdek\a\x04\xde\x14qriaX\x12\xbf%\b\x83n\x1d\n\x8b\xd2\xf0\xd2b\x12l\xddm2\xcbO\x88bB\xaaOOU\x85\x01\xb0\xb3\xb1\x18\x8bf\xf2Π\x84\a\xb7\xa9\xa7s\xc7˃\xa1\xb3\xa6\x02:i\x8e;\xc6\xdd\xe1f\xa6\x82,\xaf\xb4\xd9?\xdd\t\x02\x99\x9d\x8c\xd5tk*й\x93\x86?\xb3\x96\x05\xff(\x1b-\xb2F\xec!\xd6\t4\xac\x14\u06ddu:\xa0\xcf9О\xaeҡ\x9f\xd0`\xd1!\xbdy\x91fY\xb9\xd7h\t\x0eK\xa9&X\x1a\xe8b\n\x14\x15܄\u007fP\x1d\xa3\x1b V\xe9\xe13\xe7\xd6f\xf5e\xb4\xb4\xc9\xf9\x9e\xf3]3+\xa5Ɍ\x8e%\xa8\x87\u007f\x9b\xecx\x91:hUv\x88\x9d={\xe1\xec\xb2N\xd54\xb3\xa3\xdc<\xb2\xfd E\x0e\x03=\x8e\x03=^\xcb\xfd*\xf7\x1e\xee\xd7i\xa41ڡJ\xb6C\x95Z\xd7u\x1b\xc1JGXD+~j\t\xf0'\xc1C\x11\xf8s\xd8\x1d\xf6\x94K\x8a\n\xf8\x9cP\x9f\xf7\xaa\xfc/\xac\xb8\x9dV\x1c\xefY\xbe\xeaby\x89!|\xb2\x83v\xa7\xe2\x12\xc5\xff\"E\xff\x12\xbd\xc5\x0e\xeb)4\xcb|S\xb8\u007f\x92\xd6U\xe1\xfe\xa5\x8d\xce\xe31v\xdcZ\x91Jmr\xcc|Cp\xfa+\x1dZ\xe8\xf4p\x1ez\xdfh\xbd\x9f6\xa5d\xa7M|1\x06/f\x99\xb7|i\xb1̉\x16\x1a\xd9Hڬ\xb0\x05it\xd1X\xf5g]\xac//\xaf47.\x81F?E#\x87^ \xc1j\xfe\xf62\n57\xc0Zh\xe7 \x00\x1f_\x04\r0B\xe5\x887SYZ\x8b\u007f9\xa7^\x89\xf4\xe6\xb4\xf8R2ؔ,A\xe7\x17\xbd\x8b\xefb\x98ec\x18\xa3\xf3\x98&\xa5`\xb6\x9b\xe4bw\xfeJ\xb3\xe4K_AUְ\x93\x17\xb1\xce\xf2\n\xc6\xc1\x0e\xe7h\xfaP\x12\xb9\x83\tod\x1cR\xa5\t\xeb.\xbb\x00%\xd8\r\x1a\x03\x01\x98hj\x01:[\x9e\x9e.\x8b\xc0\xf5O\xe9\xba\xe8]#P\x1fͯ\x1f\xbe\xeb0\xfcй=oL&߸\xc7\xd5\x0f\xfe\xeb\xe5\xbb\xef^n\xae\xd1ck\x9d\x8b\xce\xf3\x0fs\xa3\xdcYfU\f1W\xb7\x95\xf43/\x15\xaa\xe0\xfd2\x13\x93m`\x03{Ǧ;\xb9p\xc7\xf6,`_&q\x9f\x02\xb3\x11[\xa5a\x9a\xe5\xae\x05n\xfe|\xf3\x8f\x80O\xbf\b\xcd|I\x97[\xf9\xcc\x14\x0f\xec\xc6Sӏ\xd9xnz|\xa3\x9e\x84\x81dK#Iީ\x93z\xa1\xb5PXh\xef_\xc5t\xfd\xacu\xe1F\x82\rD1\x9a\xe3\xcb\xf5\x06\xfaW\x8d߭\\5\xf6Z\xa4'\x13q\xe5&\xaca+1\x12\x13F\x12(\xedD\vqѐ\x04{8\x84\x83\xb1\xa84\x1e\x14\xed\x848 \f\xf2C\x82\x9d\x10RB\\\x9c\x06\xcfC\x1c\x17\x12bJ\x1c\x8aJ9U\x11\xabZ\x02\xab7\x06\xc6M\xf4\xda\xf8\x14F\xcbᨬ\xfchd7т\xca\t\x1c\xb1\x94\xa1hR\xbeVS\x13\xe3\x82 \xc6ư\x14H\x98u'4\x18\x12\x94\x01\x93\xbf6\x14!\xa13\x06\t\xbcnjȡ\xdf\f\x04>\x13$V\xf0c\x86l\xbc&$Y\xc1\a39I\x14J\xba\x16\xd7O\xe8fn\x00\x18\x1b\xe6\xb7\x1b\x1bNr\xb7\x80\x14\\\xe7\x1e\xdbv\x96S\x86\xad\xc3<\x97\x18\xfet\x94]\x96\xa7\xf2\xb0\xbd\xd6Ԟ\xe6l\xf9\x9e\x95z\xee\x15\x9dv\x8e\x15K\xae\x86\xa9թ\xc0^\xb9\xedK\xa0;ӻ\xf8A)\xef<\x97\xb1\xeear\xa1\xd8(\x02e'\x9b?%Q\x82\xef\xc1\xcasAa\x10\x85#\"\x91ZRB\x94\xc5pX\"\xa2''\x0e\xc8\x18c\x99\a\x83\x16N\xcbP\x90\x14E\x82\xcb\xc3\x066\xe0\x87\x02\xfaHvU&ov\x86\x12O3\xe1\xf1\xe1D\xb1\x98\xb8Z\x8a\xa9ڛU1\xac>-\a\xdf\xcc\xf3\xabt\x8aA\xcf\n\x89ҫ(\bMY\xcc\xd2\xcb,\xab\xfd}z\xf9/ H\xae]\xa3\xf3pM\xc0\xa2\x00'v\xcd\x0e\xa1\xd0Z\x88\xa3\xfb\xa4]zgi\x865\xaa\xb3\xb4\xe2\x0e\xa9\x1ḅ\xa4LY\xf4\b\xfe\xca4N\x87?\x83\xec\xec\x0e\x0e\xba+:2\xc0\xa8\xf7\x8db\xa4\x91\xa8\xcdj\xb1\x84\x95\x1f&\x11\x05\xa4\x83\x95-u\x8bV*\x00tM\x9cÉ\b^BxP\x97\x1b\x92\xf6\rJ]\xc4\x11#k\x1fd4\xca\xdc>3\xfe\xf8ЬF\xa4\x81ȱ[\xa8\xc4:)\x98O\x1e\xa4\xd8wK\xa2\x96tR?\x18\x14\xec\xd0\xc7\x05\x81H\xb6\x1a\xbc]\x01br=\xfb\x04ي\xea\x16/Ƕ<\xaad\xbbc=Q\x8b\xd8\xc52\r\xbb\x81%\xd3\xe5\xe6\xd4y\x01\v\xe3D(\xa5\x88T\x14eYW\xbaT\xf9\x8a\xe96k*r\xbd.+\xa6LOrWi}{\x90\xaf\xea\xd7\xde+5_)\x1e4\xff\xa9\xf1\xca3\xa0v\xca\xe7\xe9Έ\x1a~\x9f\"\x1ff\x89=\x13\xafg\x89=;\xa6H\xfd\xc9\xfbd\xe50K\xf1\x99|\x9d\x9b\xe2\xc3⦮nN\x83%=\xe6\xedV\x05(\r\xe4\x99\x1f,>\x05\xe0.\"\xb6A\x94\x82$\x99\x8e\x89\x1a\x15\x93H&ɚ|\t\xab\x92*=\xa5¿g?!\b]\xa5\xe6'כ/>\f\x86\xfa\xa5\x87\x11\xdaPH\xf3\xe3XW\xf9\x9a ,\xecA\nA7tJ\xbb\x9bߟB\xc9\xe6?L\xa3\xe4D\x13\xa5\xa7\x9b\xdf\xef\xe8a\x8e\xadߎ\xf9<\x0f\n\x15s5Zi}\xd4f\xc0p\x0f$Vt\x0f\f|\x1d]\x8c\x17\n\xf1so\x15D}\x8d^\xa1s\xf0\xf6u*P\xce\xed\x0fl\x10\x05],ě\x97\xe2\x85[x}\x15\xee\xa6\xe2\x85\xe6\x06J\xb1]r\x97\x882_V\xbd<\xa0\xee=\xcf}2D\xf3=\x11d\xd2S\xee\x92,#\n)\xd1w\xc0\xe1l\xe7\xb2[\xa8|t\x83Vw\x1f\xfa\xee\xbf\xe6zRڜ\x9e7\xa3\x97\xfd\xdd~\xb2\xd3\x1d*\xfa`z\xc0\xff\x12\xba\x06\xb0ɯ\xa3u\xd0+\xe3\xdc2w'\xf7:\xa0z\x85\x86\x9fkYL\xf5K\x91\xadg\x82?\x93ebլ\xb8\xebw\\K\xda\xd6\xddX*\xdd`\x87\xe8\xa7*\xe8\xd6\x01\xc7f{LݿZ\x96\xd9~\xc0^\x16\xabo\xcdd\xa7\x95<\xc0\x93\xff\xb4\x14\x88\xec\x16丞5#I;\xe2\xcc9\xd7)\x8a\xa1,\xbd\xa9\x14r\xfe\xd61\x9b\xd7\x18\xb4\x88\x9e\x94\xf0\xddJxrH\xb1x\xbb\xb8\v\thq,q\x9b\x9eVCyEIư\xf4\xc8\xe4\x82 \xac\x06\xf5\xbd2\xc1Q\xd2\xd05M\xd3\x03\xa7E\xf1u\xee\xe3K\x9b\\$\x10PSA\x85\xc4B&\x1fY\xa6\x95\\)\x14j\xbe\xa4\x06\x14%\x00\xb2\xfdU\xc4\x14\x82\x8a=\x17\xcd\xf2\x8b\xeb'U1\x10I\x115\x17\x91\xf0U닼6\x8f-\x99 \\\xd1\xc0!W\xf5\xe3\xa2Xb\xcfu\xfb\xccC\xa0\x93\xd6zV#h\xd8P*'E\xc7\x06{\xb7X(\x82Q\x991x\xba\xcb\x05\xc4-\b\xab\"]K4\xa4\xac\xbbŀE\x1cm\xa7\xcc6 \x88t\x15\xd9A\xffl\xba\xe1\xad\xf0ȭBX\x8f\x9a6\xdd\x14\xa3\x87\x85S\x12\u007fM\x15\r\x1aN\xc81\x06\xd1\xf4\t\x9ez\xd7)Ym\x84\xdcf\xaa>0`\xc4Q\xa8\xa1\xcaAYi\x84hS\x19\a\xf4\xa0\x16\x10B\rE\xa6\xe5\xe6Ϙ\x00!v0}X\b\xaa\x06X:rP\t\nǚ_h\xf2\xfc\xbeQG\xd5u%\x96?\x88\x84&\xfe\x92J&u\xb7\x11ݵ\xc0\xeb\x93D\x05+`\"\x00\x8d$\xa2\xc9:\x1f\x98 \x8a\u007foL\x91\xe9\x97C4\x02\xd6\n\xbd\xb4\xcf\xdd9\x11T~C=\x95ୌb\xd2\xfe\x16\n\xdd\t\xd4\xda9\xfb)\xcb\xd2u\xf6\u05ca.\xd0聥\xaf4/>_-\x80\xf3\xfd\xb4\x12(&\xc4x0\x18\x17\x13ŀ\x82RK A\x97\\9\xef.m\xb8\x82\xb5\xf9\"\xdd\xc2\xf1b\x81>\xf4qM\x8e\xc42\xb2\x9c\x89Ed\x8d\xed\x11p\xe5d\x90\xedl\xa6\xeb7\x87\xe8^\xe0~\xf9\x98;B\xdb\x15\x14\xdf\xe6\xba+\x15\xf8R3\xd5\x17\x8bEY>\xdb\xfd\xeb\x97\xd6ya+2KrH\x86_\xf7\xa9Onw\xc6\x1f3nM\xceB[\xfa5\n\xae( y\x9a\xfeŶ\x99\xb8\x1f\xa9\xa9\x94_d\x9f\x99Yf\xab\xac\r&j~\xef\xfcll*\x99\x1c\x1a\x9e\x1c@\xf9\x80\x161\xab>\x0f\xdbK\xa7\xf4\t\xf9\x15\x10_u\x96\\\xfb\x00\x1eӟ\xd1\xe9\xea\x83ճ\xb1\x84:\v1\x96=ۼ\x1b\x1c\xc0\x9c\xae\xe7ܤ\xcan\xfb;\xb3\xd5\x13h\xb4\xbdN/S\u007f\x0e\xf9\x8d\xffg\xc0\xc2\xd8/c\xe9\x94,\x9f\x92\xb0\xbc\xbf\xdb\xea\xff\xaa\xae\xdf\x17t\xef\x05\xfb\xbc\xab\xee}\xc1,\xe7\xa5L4\xdcXB+\x9f\x94\xbeUfݡi\xd6\xddd\xa7\xb7\xfb\xf4\xeb}P|\xaf\x1b\x88-~Ef\xab_\xc1\xd6\xed;y\xf8\x94\xb4ݮE\xd7˺\x9c\x8b\u07b7myW+#\x84o}C\xca\xf3\xeb\xbc\xfd\x06\x14G/\x11\xc4\xed\xf0S\xdd\x1d\xce\xfaq\xfe\xb6\x1f\f\x8e#\x9b\xbf\xd8\xfc#~\xbfg/8`\xb5%Y\xd6\x16\xc7\xd2\xe9\xc1pϸ\xab\xf9\x15)\xeb\x80\xcf])fI\xa5A\x9cb\xc5i\x90F\x16\xbd\x88ExE\xf3\x87\x82.4\u007f\bo\x14\b:\xb2\xabz\xa0\xf9o\xd5/U\xbf\xb6\xe7@\xf5\xd4\x03\a*\xb7\xddf>PE\x17\xa5\xf3\x844\u007fG\x14\xd1u\x84\x9c\x97Jk\xec߹\x8d\x8d\x1f\xffxc\x83\xf3ֺ\xa9OE\xc0ǮqW@\xb1\xfd\xcd3\xe0W\xb6\x05\x94\xad\x17\x01X\x15\x18Yo3h9\xb2E\xab\xc2E\x1a*\xa2p#]\xad\xa3\x18\xb3\xb3\x1e\x05\xbdl\x10\x1c\x14yY\x10\x05\x1e\xf4\xf4\x92\xfc2ՙ\xbf\xa0:3\xc0\x97\x06\xf34)`0\x8f6\xf2\xa8D?\x99rӝ!\xf9\xa4,\xaa\x82\xc8\xf3\x86\x80\x1a\xd0\x01\x02_\xa8\xc9\xda#з͗6\xe8\x03\xec\xe0\xfb\x9e\x03]\xab\xdf\x1a\xc7\xe8\xdaUW\xdc\xe1\xbbd\xddր\xfb\xe1\xbd\xf3\xf8\xee\x85\x05E\xb1e\x05N\xb2\xad(]\xa5^[\xc1Kp\xfe?\xfd\xdaz%\x1a\x8bn}\xffȵc\xc7i\xce\xe3\xd6\xef\x00\xba\xe7\xc2+\xfa:\xd2;\x98\xdd\xe1?>\u007f\xd9\xef%\xbd\xe4\xdb\xe3\xe9\xfe\xbe|\xf9\x0f(u\xdb\xe0\xd4\xc6ݵU\xce\xe4\xbav\xa06\xea\x05\x0f\x9f\x06ݓ@\xc9N\xb9\x89b\xf3xWP\xb3k?j\x1a\xff\x16\x83j\xdd\xca\v(\x88U\xad\xa0+`5\xf0\x91x\xb7X\xca\xf9\xf6\xa6\x16\xe5\xbd\f\x8f\xd1XX\x96%\x05\xfeI\xb2\xac[\xea\x16\xb8S\xae\x87\xb7e_h\xcf\x1e\xd5=\xc8\xfb,\x9a\xb7\x10FѪS\xdb\xc5vw\xb7S\x14y`\x1f?\x1a\xef\xbf+\xe3n_\x8d,F\xd8\xf6\xd5\"\x80$%\x14\x15\x9bꊢ\n\xd2sXU\x12\x12T\x86%\x9e\x17\x89\xb4ҳ\xa1tp\xd4\xdd\xd4j\xdblS\xeb\x1b(\xcb\xd3o\xc0\x99\x11U\x88\t\xa6j.ELAVdZoJ\n8\xf84\x97\xbf\x1b\xbfq\xf6\x8dʭ\xf8\xb9[&2\xee~\x89\xaa\xbbY\xa2\xecn\xa9\xa8\xbb'\xab_\x13\xec\xf5\xe3\xc7\xf3Y=\x84\xc3a\x1c\xd2\xe9\xd1\u007f}~K\x8d{\xfdvפ\xef\xc2\xf5\xb5۴]ޮ\xf3G<\xf3\x9e\xe5\xaet\xef\xf3-\xb2/'\xd2]\xb6[\xf9\xb1\xc7Glϭ\xd6Wvz\xea\xb7\xdb\x0f\x8c\bKߛg~c\x81\xa9\xe9\x93,\xeb\xaf\xe6\xaba\xc9\xf9\xeb[7\n\u007f\x99\xb5\xbc\x86\xb9\x91\x13L};\xac\xb7u_\xcd\xdb\xdb\x1b\x88\xb7\xeec\x9e\xec3\x9e.\xfc\xbb\xf9\xd6\x16k:\xbd(\xf3\xc2\xe4\xeabʧشx\x17\x9bPG\xe7\x17$\x14Pf\xaa3J\x00I\xdd0\x9e\xebȂ\x9b3\x83\x8a.\x04\x83\x82\xae\xd0o\x10\x04\xfa\xecE\xafs\v\xdc^\xd0\x16WqG\xb8U\xba7\xe9\xb2{ӻ\xbfGƲX,\xbbҨ\xb1\x8f\xc9\xd0R\x83\xe6\xc3\xf8Ε2[x\x03-\xbb\xdd>vf\xb61_)6\xa2\x90X\x8c(gJ\xa5\xd2Y\xf8;3\x12\xa3\xb6kl\xfb\x9d\xedل\xc5\x1cR8\xac\xc5d\xa2\x8c\xc4\x14\"\x8f\xc4b\xed_L\x8e)\xc3p#\xd6G\xee\xf5\x8b\xb4\xb2\xcd:\xeeW\x13\xeb \xf9\n=\xf8w\xf1R\x99\xe8\xbctd4^\x1f\x11x\x9d\x8c\xbe\xfd\x11\x1fR\xdd g\x04U\xceLY\x05[V\x85\xc0Q\x1f\xfc]|\x12`\xdf2\x1d\xa7\xf2\xb8A\x85o\xb1ޠ\xf2\xcc\xc1NW\xa9\xd0\x17f\x96\xe1\t\x10\xbf E\xa9k\x16tOo\xe8*}e+\xf4\xd7\x1e\x91\x18\xec/\x80b\xcbd\xec-\xc7\xefnEc*C\xb1\xd8B\xcf*\xb5:.G\xcf\"\xe8\f\xb1\xe2W\"\x8d\x02\xfb8e\xa7bG\x12\u007f\x99 $kF\x90D\xb2<\n\bJ\xa0\x10P\x84\xa7\t\xe2\xb3\x05_\xc5\x0e\xc4?\xc1\x13\xdd\x0eCWI\"bӶM\xcc\xf3$9\xda)\xb6\xf1\xfa*\xdbS5\x0eX\xdd@\xf76\xb1TL\x9a\xc3(\xb4\x91qwv\xd5[\x80\x17=L\x1a\xaena\xbb\xc00\xa1\x9fGa)A\xd5b9\xd7j\xd6&\x01\xfa\xe6\xc4\xf0\x14!S\xff\x1a\xaf\x17E\x86\xe1(\xc3x\xad\x85\n\xf6p;\xa5S\x94N\xef\xdfm\b\xe5\xdd\xc7)m\xb4x\xf3\x87^\x8b.\x92\xa0Tf q\x85\xa6]\x91\x18h\xfe\x93\x95w(\xd6\x01A#\x99\xa9O\b\x92\x1f\xe3\x89\xfc\xc8iJ\xeaL\"\x9c\xa2\x84:\x9e\x1e\x16ܻ>\nu\xf3\xe70\xf3\xf3\x0e\x80\x9f\xd7\xc5s\xd3\xee\xb7\xe6hz\x82\x1b(\xc0\r\xaac\xb1\xbb \xcf\xf2\x16\xeaI\xbe\x97o\xd1\xed]\x1cx\xf6`Ȑ\xa4\xb8\x01Nt\xcc\b\x99\xa2\xc5\xffw\xc9\b\x1d\x94yK4CJX\x17\xc0\xf76t\xf5G>\xf6\xf8u\x1f?.\x86š`\x80\xb62B\xbc\x10\x87\a\x0f\x04\x87\xc40/\x1f\f\xc5\x05\x84\r\x85\xf0\ba\xf5B\xd7&\xe8^\x1e\x9e\xe0v_\x9e\x87\xa9U\xc1\xf6*R}[a[\x17\xeb\x0e[_ؙw?\x1f \xe941\xe4\x15\x8cW\xfe\x8e\x1e\x14LhM`\av\x9d\x0e\xca##rP*\t\x86Pb\a\x89Ȭ\n|\x8f&\xf8\x1e<\xfa\"\xa7\xb1\x9d\x14s\xdc\xd5\xdc\xf5\xdc\x19\x90\x1du\x1aۧ\x184\xea\r`@\x96\xf7\xedr\"\xe0\x91\xaf7܌p\x90'\xd4\x15\xa0\x9fzc\xfbƨtǢ\xfb\x8d\xe2\xc24\x0fX\xf2\x19fZW\xeca\x9e\x0ej\x9d\x8e\xaem\xf0l\xdd\xff~\x89 =\x12\x9a΄\"\xa3\x83\xd6p\xa2q\xe8\xf4|\x8dH\xd3\xf5㻧,\xf4\x96!+\x17\xdbu\xd5\xe9J\x89\xe0\xd1\xc9\xe3\xbbgB\xfb;\xed\x9b\xff\xa4\xf2\x0e\xaf \x15IU\x95Wo\xa8*\x82\x04\x15\xaaW.LEĠ\x18\xb1v\xaf\x0ecD\nK\x88H\xd7FB\x99\xe9P\xa4\x8eɁ\xa7\xeaW\rF\x13\x89\xb9ɇ\x1f\xc1\xf8\x8a\x8f\xec\xba*\x1aIXs\xa5_[\xed4{\xa3Jn\x80ޫ\x12\xb2x\xc7\x16\xa4N\xe9\xect\x1e|\xb2\xe1\xd5\xddQ\v^a\xf5\xeah\xbawie\xbb\xf1o\xf1z\xb1\xd1\xfeD\xbb\xff\xcb\xedy\xb7\xc0\"d\xfe︣>,\xd1\xe2\xf8\xcf\xe1\xb8 H\xd9 \x0f\xe6}V\x12\x848F\xb28<,\xcaHtK\x02\x16X\xd1\u05ee\x1f\xaf\xb8\x13\xe0\xcalLT\x904,\xc1\x0f)b,+I|(\xc4KGYA\x90\x10\xa2%\xa9ӊ~\x97hss\xf3\x05\xfeW\x00\u007f\xbaߒz\x8e\xfb\xc1\x0exM7\x0fI\x94\x1cE\x17}b;\x8c\x14\xf5F\x12\x95\xeb\xf9\x02Y\xe4\xe9\x0e\xe4\x02\xa1\x1f\x16\xb6[4bOo\x91\x8b\x85-\xd2\xcf\xc7D\xfc\x116v:\x1dƻ\xb5p\xf6\xee\xb7ݝ\rk\x03\xb7\xde{k\xf3\xa3Z\x11_q\xcf\xdb\xee\xb9\x02\x17t\xed\xec\xf9\xb3\u007fۢ\x1f\x13\x95\x91^I\xf9?\xfa\tŋ\x1d\xf6p\xdfw-}\xf5J*X\x9e\x9b+\aS3ss\xbf\x8b\xe4\xc5;\xe7\xe6\xeeܣ\xa0Ckk/\xbb4er\xf3\xa1n\xb1\x99\xd9QF\x12\xe0\"\x9aQ\xe0\xb3a\xa5Z\xb1\x93\xa2\x15tS\xdfa&\xb1\xdd\xdc\xd4\a\x04\xca, ?\xe5H\xb4\xbd\x06R\xef\xb2\xdb\xd1lX\x8b\xf2\x02o\xf0\xbc\x10\xd5\xc2\xf9x8i&f\xe6\x80\x15\xe6fD\xa7\xa3?D\xe7\v̾\xf8\xa4\xdf\x14ٜP$M\xd3\t\xd15MR\xc6\xe3Es\x88\fܺ\x8b\xae~\xec\xbau\xc0\xd0&\xacX\v\xe5\x985\xa1\xfd\xd8o\xa5\xf4\xe2w\x88\xbb\xee?\x86_\xd8\xf6\xa6\x0e\x95\x9e\xc4\xfd\xe8\a\x9b4\xce/\x8b)(\f*C\x15*P\xcfS\xa1\xeaI\xd9\u007f\x1f\xd6(\xbcU\xe0z5\x9c\xf7\x1d/\x97\x0e&7\xc0\xa5\xb9Qn\x06\xfc4\xba;\x99}\xc2\xda\xef\x18o\xe7\xb0\xfc\a\x88\xf6T \x1e\xe1]OZS\xe1a!\xff\xd1-\xdė~I\xf2!]\xb5t\xcf\xd5Ɗ\x1c\x8eU\xb789\u007f\xf8\xef!\xa4\u007fN\x04\x99l\x99\xa4\x99S\\w\xfc\xa0\xde\xe2q\xa7K\xc6n\xf9\xe2Iu\xa4\x15Bp\x11\xbf\x811\xe6\xd3]\xd2\xf4\x19\xbf\xa0\xd5ca\x19\xf0\xa1H\xc9J8Ǹx\xd5',=\x8f\xbf\x9f\x1d@\xc7t\x17\xcd\"m\xf1\xb7c\x11jё\xac\xab\x0e\xab.Ӳ3X\x84I\xa1\x17ږ\xaf\xfa\x9b\f\xc8g\xb2\xd9\xd1$\xc2<\xc2f4j\x8a\"=b\xc4\xe3\xd0`X\xfb\x90\x1fd͝\xac!\x06\xeb\x1blðC\x83\bc\x81(\x03`\xbbh\xd6\x14\xb78\x10\x97A\xb0\xde\xddA\xfd\x19\x10\xaa\xba\xa0\xeaT\xd0\x06\\9\x1b\xf2c\xc2퀲T\xf0?ˣ\x91\xb6\xe5-\t\xaeL=\xe7\xc7l\xf82t\xf8\xcf\xfeǓ\x1e\xfe?\a\xfc\xd3\xccR=\xc6\xddM\xf7+\xec\x80^%)4Z\x84\x11*\x9e\xfb\xed\x89]\xa9e\xc4.\xba\xcb`t\x1e\xda\xec\xd3\xf4Uo\xfd\xb4\x90\x05UXs\xe3\xe5\x952*\xed\x80\xf8A\x8fwy=d\xa9nD\xece6l\xe8\x06b\x86\x8f\xab\x82#\x90\xb0n&DA\x0e\r\u007fX㧫`\x9c\x9f>\xfd\xb8\xa9\xc9$\xa82\xfb|\xf21;h\xd8\xc1A\x9e\x06\x97\xdaԀ3Uw@\x8ceU\xa5\xe12%\xa4a\x16>\xd3\a#\x91\xc1\xf0G\xc2i\xc9\xe6\x95\xe3\xba\x13\xe2\xf9HH\xe1\xa5\xe0\xcc\ba\xde\xf8\xe9\xa9\t!\xa0\r\xa7\x98?\xd1\xff\xdbk\xbe\x98\x05\xe7\xed\xa5\xacg\xbac\x9ct_\xba\x9b8\v\xb3\u05cb\xb6\xa0ô\xcb\xfb/\xf8\xd4\xd0G\b\x182WL\x19SW\x80\x99\xd3\xf3?m\xb9\xff\a>ms\\\xc1\x93\xf3\xf3\x93X\xd9\x1a\xabd\xfb\x85{\xe1\t\xf7\xb0'\x8d\x9d0\x83í$;\xc0w\xae\x9b\x1b\xdfO\x0fYVGm\x8a\xef\xef\x041*\x01빖\x01e\xbd,=\x8c\xb6\xaa\x8etP\xe8\xc1!\x01\xf2\xa5\xb1\x15\x87H[\x19\xb2O@\x15\xda\x1e\xc6N\xd0\u007f\xb2\xe5M\xc8\x06\xf9\xb1\xd2\xf1.\xce\xef\b\xb7\xd8Vo\xa0\xd9n\x97|\xfa\xee\xda6\xd4\xdd0\xa7\xfb\xc3\x1c\xee\xd5y\xe8\x15pē\xf1\xb6\x0e\xf3\xa2\xc1w_\x9e;P\xae\xa3\xa4X<\xb8\xdc\xc3(\xe2\x16\xbe\xed\x13\x19\xeegQ\xb9\x12\xeb\xb5[\xad\xa5.\xc9ڎՐ\x9e\xf7P]\xb1\xbf_\x9c\xd6\x17\xaf\x04\xc7\xdf\v6W\x1b\xa0\xd8[\x11Kb\xf5\xde\xdb6f\xc9Ϗ\x8d͏52N\x98\a\x85̇\x97\xc6h\xc5A\xa7]qq\x9b\x80\xe5缆\xa6\xa5\x8b\"\xbd-\x8a\xbaeN\xb3\xee\x0e\x99NW\xfd\xf9V\xe0\xd2?\xf6i\xae\xd2c˶\x13q\xbc,{\xb0Nj\xee\xfa\xa8\xdf\xf8\xa1\x82\xb4ޫ\xea\xbbM\xd9Gg\x01\xc4Yx\xe3䝓p\xfcd\x10+\xba'!#\xf1\x00\bȳ=:\u007f\x91}\xb2\xc7C\xf0_v\xafP\xcbce\xf7\xbd\x14\xfc\xdf\x18\x18\xf8\rz.{*_\xa1K\x06\xb1\xf0\x98\u007f\x11!|\xc0\v<\xe3\xae1Lr\x05n\xaa\xdf\nH\xa3\xbd\x92\xc0\xe4}+\x10\xd8b\x1f\xc2bAl\xe4\xfcc\xf5\xe2|\x01d\xb3\x1c\xc1\xb1\x02\x00\xb4\xd7\xf7\xf5\xc9wa\x9c\x1b\xc8\f\xf4$wO\xc9\x16\xc6<\x19\x02\n,\xf9>C\xb9\"\xcb3\x113\x163#[e`\xff8[\xcf7C\x8b\x04\xf7\x84ں\x86\xa3\xd8\x13]F\xbd\xdf\x12\xfd\xe8V\x17*P\xd8\xf0\xc7ب\xbbՍL\xbc\xeb+\xa3\xef\xed\xf5\x92\xec|w̭\xbf\xbe)\xee0s\xbbc\xe5~\xf8\u007f\x8f\xadL\x84|1\xf2n\xd0\xe6\xd8ؿe\x9b\xb8kK.\xcf\xf6\x99\xc7~?\x05[>\xd1\xec\v\xd5O\xa1\x1ej\xee\x0ft|\x92\xf7u\\\x92\x15\xfe\xd0~\t\xa9${oV\x94\xa5\xde\xc8\xfd\x97\xfc\x9eG\xc5\xe7x\x94\xae\xae\x17Y \x9f\x17U\\\xfc\xffT\xf9\xb0\x99\x00\x00x\x9cc`d``\xf4:МsS\xb6+\x9e\xdf\xe6+\x037\x13\x03\b\xdc\x12=\xc1\r\xa5\x05\xff\xbf\xf9\xbf\x93\xa9\x9d\xf1$\x90\xcb\xc1\x00\x96\x06\x00\x87\xc0\r\xb2\x00x\x9cc`d``<\xf0\xff\x00\x03\x03S\xc3\xff7@\xb2\x9d\x01(\x82\x02&\x00\x00\x8f\xe7\x06\t\x00x\x9c\x8dQ\xc1\r\xc20\ft\xf2\xea\x8f'\xebt\x14F\xf1h\x0e\x94\xd8s\xec\xddk\x99\x9f\xbc\xf9\xd3\xe7\xe2\xd1;\xafY\xba\x86i\xdcI\u074b<[-\xddK\xf4\xf0\x1f\xd8̾\xdbo\xba\xab\xc5O\xe7\x05\x9d\x9c[\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00|\x00\xc4\x00\xf8\x01n\x01\xbe\x01\xe2\x02*\x02\x84\x02\xce\x03\x04\x03b\x03\xac\x04\x1a\x04\xa2\x04\xe0\x05\f\x05H\x05\xb6\x06*\x06N\x06\xcc\a\x1a\ab\a\xe2\bb\b\xe2\t^\t\xb8\n\x0e\n:\n\x88\n\xe8\v:\v\xce\f\x18\f6\f\x82\f\xd0\r\x14\r\xe6\x0e\x1e\x0eN\x0e\x88\x0e\xc6\x0fD\x0f\x84\x0f\xc2\x10\x00\x10>\x10n\x10\xba\x118\x11\xb6\x12(\x12f\x12\xa4\x12\xce\x13L\x13\xce\x14D\x14\xa8\x15\x00\x15L\x15\xbe\x16\x1c\x16l\x16\xe4\x17.\x17l\x17\xc8\x18D\x18\xa6\x18\xf4\x19f\x19\xf0\x1a\x98\x1a\xca\x1b\x14\x1bZ\x1b\xec\x1ch\x1c\xea\x1dD\x1d\xdc\x1e\x94\x1f\x18\x1ff\x1f\xbc \x02 f \xb8!\b!H!\x8e!\xc0\"d\"\xec#L#\xbe$\x0e$h$\xd4$\xfc%\x14%N&@&\xa4'\b'N'\x84'\xba'\xf0(&(j(\xca)\")\x80)\xdc*L*\xc4+4+|+\xfc,H,\xa4-\x10-\x98.\x06.d/\x06/\x860*0\x9a1\x1e1\xb42\n2n2\xee3\x8e3\xd6484\x924\xea5\x1e5\x906\x006X6\xc67\x047`\x00\x00x\x9cc`d``\x98Ű\x86\x81\x8f\x01\x04\x98\x80\x98\x91\x01$\xe6\x00\xe63\x00\x00$\x85\x01\x9a\x00x\x9c\xb5\x92\xcfN\x13Q\x18\xc5ϝ)\x10 !\x80\x01\x8duquQ\xda\xc4N\xff\xe0\x94\xa4;\x82v\xe5F\x82ƍ&C\x19\xda\tm\xefd\xe6B\x83o\xe0^\x1f\xc1\ap\xe1҅;_\xc1\x870\xc6\a0\xf1\xcc\xf4\x13\xac\x01b\x8ct\x92{\u007f\xf7\xde\xd3\xef|g\xe6\x02\xb8\xa3\x9eAa\U000bb356\xb0B\x11\xaf\x85\x1d\xccჰ\x8b{\xca\x15.\xa0\xa8^\nϠ\xa4>\v\xcf\xe2\x96sWx\x01\xf7\x9d7\u008b\xb8\xe9|\x17^\xc6\r\xb7!\xbc\x829\xf7\xa9\xf0*\x8a\xee[\xe15j\xbe\b\xafS\xf3\x83\xee\xaa0\xcfՃ\xbc\x93\x8c\x15;~\"\xec`\t\xef\x84]<\xc4G\xe1\x02Z\xaa$<\x83\xc7\xea\x95\xf0,\xea\xea\x9b\xf0\x02\x9e;m\xe1Ex\xce'\xe1e\x94\xdcy\xe1\x15,\xb9\x8f\x84W\xd1r_\b\xafQ\xf3^x\x9d\x9a\xaf\u0601A\x8cS$\x88\xd0C\x1f\x16\x1aetQ\xe1\xdc\xe1\xd9(\xdf\xd9\xc6\x18!R\xae\x87\x9c\xb1c\xe2\xd3$\xea\xf5\xad.w+\xbacFVo\x8f\xc3\xd4\fyvٟ4\xfc\xbcdB\xceV\xbb\x1c{8\xc6\x00\x01\xf7\xf0{\x11\xed\xebN\x12\x86z7\xec\x1d\x0f\x02\x1e\xfe\xa1=\xdb\xff7\xaf*O=4\xd0\xe4X\xbfҹ\xea{\x8d\xa6W\xbf\x9eP\x9b|\xeala\x8b5\x9a\xf9[\xbf\xdc\xe5\x84c\xc2u\x94+ڹ\xefy\x84\n\x8bmֽ-\xbf\xa9\xcbS\x96'a\x92Ff\xd4֓\x1c\x95\xf3 \xd3\x06\xfeY\x84\xeaE\x11\xa4\x9c\x9f\xf5_=\xeb\u007f\x8f\xb7%\xeb-+\xb4\x8f\r\x16\xd3,f8g\t\xe2\xfc^\xfd*\xa3\xd9y7\xb7\xd6<\x0fsE\xc0\xd5\x01g\xcb}C\xdd\x115\x96y\xb0\xd7\x0f\xf58\xdc\xdfH\xf5ФV\xc7&\xce\fu\xd45#\x9d\x86V\a\xa3\x03m\x8d\x19\x1cE\x96\xea\xec\xcaZZ\xa5|-5>\x87\x920\x98J\xe8\xe5\xf6Cʭ\x8d\xd3v\xadv\xc8\\\xc1$\x97\xd75ÿ\xfd\xc4\x17}\xd2\xff}?\xaf\xbe6\xd7\xd0\xe7Oȓ\xf9\xaf\x00x\x9cmTgw\xe36\x10Ԝ$\x9b\x94d\xcb\xf6\xe5.\xb9\xf4ޙ\xde{\xef\xbd\xf7\x04$W$N A\x03\xa0e9\xbd'w\xe9\xedC\xfeZ~L\x02\x80\xb4l?G\xef\t\xdcY\x80\xcb\xc1b\x06\x9d#\x1d\xff\xfb\xf7\x9fΉ\xce\xff\xfd\xfe\xb6\u007ft\x8e\xe0\b\xba衏%,#@\x88\x01\x86\x18a\x05\xab\x18c\r\xeb\xd8\xc0Q\x9c\x81c8\x8e3q\x16N\xe0l\x9c\x83sq\x1e\xce\xc7\x05\xb8\x10\x17\xe1b\\\x82Kq\x19.\xc7\x15\xb8\x12W\xe1j\\\x83k\x11\xe1:\\\x8f\x1bp#n\xc2\u0378\x05\xb7\xe26\u070e;p'\xee\xc2ݸ\a\xf7\xe2>\u070f\a\xf0 \x1e\xc2\xc3x\x04\x8f\xe21<\x8e'\xf0$\x9e\xea\x9c\xc6\xd3x\x06\xcf\xe29<\x8f\x17\xf0\"^\xc2\xcbx\x05\xaf\xe25\xbc\xde9\x857\xf0&\xde\xc2\xdbx\a\xef\xe2=\xbc\x8f\x0f\xc0\x10#A\n\xc2\x04\x19rp\x9c\xc4\x14\x02\x05JHT\u0604\x82\x86A\x8d-̰\x8d9v\xf0!>\xc2\xc7\xf8\x04\x9f\xe23|\x8e/\xf0%\xbe\xc2\xd7\xf8\x06\xdf\xe2;|\x8fS8\x8d\x1f\xf0#~\xc2\xcf\xf8\x05\xbf\xe27\xfc\x8e?\xf0'\xfe\xea\xe7Ĕ\xe9i\xc3T\xaf֤\xfa\x89\x90\xc94\x10\\\x9b\x88\tӛ\b\x96\x05\xb1\x94ӂ\xa9i\x9f\x17,\xa3\x1e\xa5܌\f/HG\tW\x89\xa0Q\x92S2m\xc1x\xb3&m\xb8,[ܥ9\x85\xf6\x1fi\xc1t>J\x98\xa02e\xcaU_NdQPi\x96&R\xa4\xa4\x86\xcd#\x92\x15\x95a\x92[^Q\xccT\xd0.ҡ#\x19\xe5LL\xfa\x82\nY\x0e\x13\xe5\x98D\tSi7Oӵ\x9c\x95iTI^\x9aH\xf1,7\xe3}\tA\x13\xb3\xb2\x0f\xd7\xd5\xfe\xd9T\xce\xca^\"\xabyO\xb3-Zқ5S\x14P\xb9E\u0092\t\x85\xab\x16\xd7\"\xee\xc5$D\x90K]q\xc3İ\x12\xb5\x8e\x9a\xc5K\xcdf\xfb\xba\xe0v\x9c([\xb0[P\x1eLi\x1eKK0\xd8ݷ}\x89\xcdw\xfbV\xf0rQ\xa1mb\v\xb4\xdd>\xb5\xc0\xb5\xa9bZ\xaf\u06dd\x92i\x93\x9e\xf3\xf8@\xa6\xae6\x0e`߄\xde\xc4\x12\n\xdc\xe0:\x1e\x9a\xbc.bm\x97\x0e\xdbȕ\xe9\xea\xba\xec\x15R\x96\a\xbf\xe0z6H\xa5i\xd9\x06q\xcdE\xcaˬ\xa9V\xa5\x93\xd0\a3\xa9ҁ\x8fh;!1nf匔on3\xe5\x953jh\xa8$\xe7[\xd4\xe4Y\x9drل[<%ٔLd\xea\xba>q{(\xb3a\xc5*+\v۸\x92\x96&\xb5\x89\xa5\bK\x9ai\x9f\x1e\xb8#i\xb4\xb5n\xb5\xab)\xb5\x82\xa8\x9c\xfe\xec\x9b#\x19\x9f\xa4\xc4D\x99\x92u\xb5ڂ\xba\xf4phE\x9aL\xe7Q)\r9\u0557\x14\xe6\xb2V\x99\xad\xa4C\xaf\re\x9d0hT\xe2\xbe\xd4\xc8G'\\k\xa9\xf4\xd0#\xc1w\xec\xe16\x8bte\u05cf\xf6Te\xb95\x80XB+\v\xdd;Ѭ.\x90W\xc0\x1e\xf4\xaeڃ^\x12݂U\xc3\xd6\x04\xee\fG\x15\xb3Nm\x0f\xc5\xeeBVm\xecY[\xe1LieW\xba\xdeK#\x96\xa6\x8a\xb4\x8e\x9c\x8f\x17\xc0\xd9f\xe8,\xbf{\xbc<\xb5vK3Z機\x1c\xcfxi\xd5\x11\x15l\x9b\x17|\x87\x16\x98\x97\x1e\xaf\xb6\xd8V3RQ\xa8K9\xb3\xd7ŔB\xa3\xeci8\xaaK\xfe\xd8u\x98\b^y\x1b\x1cc\xcaZ\xc3M\xb5_\xf5\xfa;\x9cu\xd2;~(\xeb\x05}\xf4P\xba\xae\xba\x19\x15\xab\xf6J\xa0y\x14s+\aץ\x96\x9d\xd7\xc4h\xb7}V\xcdz\xe0=\x1a\xd9\xf9i\x9fY-\xcc\xfb)\xdfٙ/O\xec\xc1\xe4d\xa5\xec\xcc\xeb\x1b\xb7\x9c)\xbb\x81\x84z\xf6Y\x06n\xf0\x1e\xf2AL\xac\x18/\xa2Hψ\x99\xa1\xc7\xfeF\xd5Ml\x9dd\x95\xb0\xbe/\x8e\x8c\x9dփ&c\x16\xa1\xcf6\xef\x18Yf5m\xec\x8b\xdbW\xd7\xf6\xa7\x1c\xfd\x86\x89\x8bzS\xab\xca\xd0\r\r1\x1f\xb9\x89\x86M_\xb0:\xcb\a~\xf4\vFM\xd8\xd4m\U000fe8bd\xb3\xa2\xd8\x1am\xba\xe6\"%\x85\xb06\x8a\xec\xf5\xad\x975\xb3\xbaP\xf3\xc0=\x1dݶ\x8f\xae\\\xa0kU)\xae\xa9o\xb8\xbd\x94\xff\x03\"\xa7\x81\x90\x00\x00\x00" var _Assets0d82f92ba8c7e829dd63af485d6dfd5cfee1968d = "Z\x03\x02\x00(\x02\x02\x00\x01\x00\x02\x00\x00\x00\x00\x00\x02\x00\x05\x03\x00\x00\x00\x00\x00\x00\x01\x00\x90\x01\x00\x00\x00\x00LP\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00f\xb4X\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00:\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00B\x00r\x00a\x00n\x00d\x00s\x00 \x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00\x00\x0e\x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00\x00L\x003\x003\x000\x00.\x007\x005\x002\x00 \x00(\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x00v\x00e\x00r\x00s\x00i\x00o\x00n\x00:\x00 \x005\x00.\x001\x002\x00.\x000\x00)\x00\x00\x00:\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00B\x00r\x00a\x00n\x00d\x00s\x00 \x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\r\x00\x80\x00\x03\x00PFFTM\x8d\x96\xb6\x16\x00\x02\x02\f\x00\x00\x00\x1cGDEF\x00*\x01\xbf\x00\x02\x01\xec\x00\x00\x00\x1eOS/2B\x0fV\x9a\x00\x00\x01X\x00\x00\x00`cmap\xf2\xaa\xef\xe1\x00\x00\b\x9c\x00\x00\x05\xdagasp\xff\xff\x00\x03\x00\x02\x01\xe4\x00\x00\x00\bglyf\x94:\x85a\x00\x00\x11\xec\x00\x01\xd5\xe4head\x17\a\x912\x00\x00\x00\xdc\x00\x00\x006hhea\x046\x03\xeb\x00\x00\x01\x14\x00\x00\x00$hmtxKc\x06\x89\x00\x00\x01\xb8\x00\x00\x06\xe4loca\xa2\xe5\x11V\x00\x00\x0ex\x00\x00\x03tmaxp\x02\"\x03O\x00\x00\x018\x00\x00\x00 name\x8e\x97\xb2\xcd\x00\x01\xe7\xd0\x00\x00\x05\x85post\x13,\xe7\x97\x00\x01\xedX\x00\x00\x14\x89\x00\x01\x00\x00\x01J\xc0\x83\xa8X\xb4f_\x0f<\xf5\x00\v\x02\x00\x00\x00\x00\x00\xda\x15\xc8\v\x00\x00\x00\x00\xda\x15\xc8\x11\xff\xee\xff\xb6\x02\x85\x01\xe0\x00\x00\x00\b\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x01\xc0\xff\xc0\x00\x00\x02\x80\xff\xee\xff\xf1\x02\x85\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xb9\x00\x01\x00\x00\x01\xb9\x03L\x00'\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x01\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00\x04\x01\xeb\x01\x90\x00\x05\x00\x00\x01L\x01f\x00\x00\x00G\x01L\x01f\x00\x00\x00\xf5\x00\x19\x00\x84\x00\x00\x02\x00\x05\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00PfEd\x00\x80\xf0\x81\xf9I\x01\xc0\xff\xc0\x00.\x01\xcc\x00T\x00\x00\x00\x01\x00\x00\x00\x00\x01:\x01\xa5\x00\x00\x00 \x00\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\b\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x80\x00\f\x01\xc0\x00\x00\x01\xe0\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x01\x80\x00\x03\x02@\x00\x0e\x01\x80\xff\xff\x01\xc0\x00\x00\x02\x10\x00\x00\x01\x80\x00\x02\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xf0\x00\x00\x02\x00\x00\x06\x01@\x00\a\x01\xc0\x00\x00\x01\x80\x00\x03\x01\xc0\x00\x00\x02@\x00\x00\x01\xc0\x00\t\x02\x00\x00\b\x01\xc0\x00\x00\x01p\x00\x00\x01\xc0\x00\x00\x01\xf0\x00\x00\x02@\x00\x12\x02\x00\x00\x00\x02\x00\x00\b\x01\x80\x00\x00\x01\xc0\x00\x11\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\b\x01\xc0\x00\x00\x01\xc0\x00\x15\x01\xe8\x00\x00\x02\x00\x00\b\x01\xc0\x00\x00\x01\xf0\x00\b\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02@\x00\a\x01\xc0\x00 \x01\xc0\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x01\xf0\x00\x00\x01\xc0\x00\x00\x01\xf0\x00\x00\x01@\x00\x00\x02\x80\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\n\x01\xf0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x15\x01\xc0\x00\a\x02@\x00\r\x02\x00\x00\x01\x02\x00\x00\x18\x01\x80\x00\x01\x01\x80\x00\x00\x01\xc0\x00\x06\x02@\x00\x00\x02@\x00\x00\x02@\x00\x00\x02@\x00\x00\x02@\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x01\xc0\x00.\x01\xc0\x00\x00\x02@\x00\r\x01\xc0\x00\x13\x01\xc0\x00\x00\x02@\x00\x06\x02\x80\x00\x06\x01\xc0\x00\x00\x02\x00\x00\x04\x02\x80\x00\x00\x01\x80\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02@\xff\xff\x02\x80\x00\x00\x01\xf0\x00\x00\x02@\x00\x00\x02@\x00\x00\x01\xf0\x00\x00\x02\x00\x00\x00\x02\x00\x00\t\x02@\xff\xf9\x01@\x00\x01\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x00\x00\b\x01\xf0\x00\x00\x02\x00\x00\x02\x01\xf0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x1f\x01\xc0\x00\x06\x01\xc0\x00\x11\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x0e\x02\x00\x00\x19\x01\xd8\x00\x00\x01\xc0\x00\b\x02\x00\x00\x12\x02\x80\x00\x00\x02\x00\x00\b\x02\x80\x00\x01\x01\x80\x00\x00\x01\xc0\x00 \x01@\x00\x19\x02\x00\xff\xfd\x02\x00\x00\x14\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00 \x01\xc0\xff\xff\x01\xc0\x00\x00\x01\xf0\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xe0\x00 \x01\xc0\x00\x04\x01\xc0\x00\x00\x02\x00\x00\x00\x01\xf0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\n\x01\xc0\x00\a\x02@\x00\x02\x01\xf0\x00\x00\x01\xf0\x00\x00\x02\x00\x00\b\x01\x80\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\xff\xff\x01\xc0\x00\x00\x01\xc0\x00\x18\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\xff\xf9\x01\xc0\x00\x00\x01\xc0\x00\x10\x02\x80\xff\xfe\x02\x00\x00\b\x01\xc0\x00\x00\x02\x80\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x02\x00\xff\xfc\x02\x80\xff\xfe\x01\xc0\x00\x00\x02\x00\x00\b\x01\xf0\xff\xf0\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x01\x01\xc0\x00\x00\x01L\x00\x00\x02h\x00\x00\x02\x80\xff\xfc\x01\x80\x00\x00\x01\xb8\x00\x00\x02@\x00\x16\x02\x00\x00\x00\x01\xe0\xff\xff\x02\x00\x00\b\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xa0\x00\x00\x02\x80\xff\xfc\x01\xe0\x00\x00\x01\xc0\x00\x00\x01\xa0\x00\x00\x01\xe0\xff\xfc\x02\x80\x00\x00\x01@\x00\x16\x02\x00\x00\b\x01\x80\x00\x00\x01\x80\x00\x00\x02\x00\x00\b\x01\xc0\xff\xf1\x02P\x00\b\x01\x90\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x1c\x02\x00\x00\x00\x02\x00\x00\x19\x01\x80\x00 \x01\x80\x00\x02\x01\x00\x00\f\x01\xc0\x00\x00\x02\x00\x00\x00\x01\xc0\xff\xf5\x02\x00\x00\x19\x01\xc0\x00\x00\x01\x80\xff\xf9\x02\x00\x00\x17\x01\xf0\xff\xef\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x00\x02\x00\x00\a\x01\xc0\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x02\x01@\x00\x00\x02\x00\x00\x0e\x02 \x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x01\x90\x00\x00\x01\xf0\x00\x00\x02@\x00\b\x02\x00\x00\x00\x01\xc0\x00\x12\x01\xf0\x00\x00\x02\x80\x00\x00\x02@\xff\xfa\x01\xb0\xff\xfe\x01\xc0\xff\xfb\x01\xc0\x00\x00\x01\xf0\x00\x00\x01\xc0\x00\x00\x01\xf0\x00\x00\x02@\x00\x00\x01\xf0\x00\x00\x01\xc0\x00\x00\x01\xcc\x00\x00\x01\xf0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x04\x01\xb8\xff\xfc\x01\xc0\x00\x00\x02@\x00\x00\x02\x00\x00\x12\x02\x80\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x00\x02\x80\x00\a\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\f\x01\xc0\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\b\x02\x00\x00\x06\x01\x00\x00\x02\x01@\x00\x12\x02\x80\xff\xfd\x02@\x00\x00\x01\x80\x00\x19\x02\x80\x00\x00\x02\x00\x00\b\x02\x00\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfe\x01\xc0\x00\x00\x01\xc0\x00\x10\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x03\x01\x80\x00\x10\x02\x80\x00\x00\x01\x80\x00\a\x02\x80\x00\x00\x01\x80\x00\v\x01\xc0\x00\a\x02\x80\x00\x0e\x02@\x00\x00\x01@\x00\b\x01\xbe\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\f\x02@\x00\x00\x01\x80\xff\xf3\x02\x80\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x0e\x01\xc0\x00\x0e\x02E\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x01\xf0\x00\x00\x01@\x00\x19\x01\xf0\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x1b\x01\xf0\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xf0\x00\x00\x02\x00\x00\x1c\x02\x00\x00\x01\x01\xc0\x00\v\x01\xf0\x00\x00\x01\x80\x00\x0e\x01\xc0\x00\x13\x02\x00\x00\b\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x01\xf0\x00\x00\x02\x00\x00\x17\x01@\x00\x0e\x02\x80\x00\x00\x02\x00\x00\x1c\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x00\xff\xfe\x01\x80\x00\x12\x01\xc0\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02@\x00\x17\x02@\x00\x02\x02\x00\x00\x19\x02\x00\x00\x02\x02\x00\xff\xfe\x02\x00\x00\x17\x01\xc0\x00\x00\x02\x00\xff\xfb\x02\x80\x00\x00\x02\x00\x00\x18\x02\x80\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x14\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xf0\x00\x00\x02\x80\xff\xfe\x01\x97\xff\xff\x02\x00\x00\x00\x02\x00\x00\t\x01\xc0\x00\x15\x02\x80\xff\xfe\x01\xf0\x00\x00\x01\x80\x00\x04\x02@\x00\x1b\x01\xf0\x00\x00\x01\xc0\x00\x03\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\f\x02\x00\x00\x15\x01\x80\x00\x00\x02\x00\x00\a\x02\x80\xff\xfd\x02\x00\x00\x00\x02\x00\x00\b\x02\x00\x00\x02\x02\x00\x00\x1d\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\f\x02@\x00\a\x02@\x00\a\x02\x00\x00\b\x01\xc0\x00\x00\x01\xfe\x00\x06\x02\x00\x00\f\x02@\x00 \x01\xc0\x00\x01\x01\xc0\x00\x00\x02@\x00\x0f\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x1c\x00\x01\x00\x00\x00\x00\x04\xd4\x00\x03\x00\x01\x00\x00\x00\x1c\x00\x04\x04\xb8\x00\x00\x01*\x01\x00\x00\a\x00*\xf0\x82\xf0\x8c\xf0\x92\xf0\x9b\xf0\xd5\xf0\xe1\xf1\x13\xf16\xf1<\xf1Z\xf1i\xf1n\xf1q\xf1t\xf1~\xf1\x81\xf1\x84\xf1\x8d\xf1\x94\xf1\x98\xf1\x9b\xf1\x9e\xf1\xaa\xf1\xb7\xf1\xbe\xf1\xcc\xf1\xd7\xf1\xe9\xf1\xee\xf1\xf5\xf2\x03\xf2\t\xf2\x0e\xf2\x16\xf22\xf27\xf2>\xf2L\xf2^\xf2k\xf2n\xf2p\xf2~\xf2\x82\xf2\x8a\xf2\x94\xf2\x99\xf2\xa6\xf2\xae\xf2\xb4\xf2\xb8\xf2\xc6\xf2\xda\xf2\xde\xf2\xe0\xf3\\\xf3u\xf3}\xf3\x80\xf3\x85\xf3\x88\xf3\x8f\xf3\x97\xf3\x9a\xf3\x9f\xf3\xa4\xf3\xb2\xf3\xbd\xf3\xc0\xf3\xc4\xf3\xc8\xf3\xcc\xf3\xd0\xf3\xdc\xf3\xdf\xf3\xe4\xf3\xec\xf3\xef\xf3\xf3\xf3\xf9\xf3\xfe\xf4\x05\xf4\r\xf4\x17\xf4!\xf4#\xf41\xf4M\xf4R\xf4W\xf4Y\xf4\xd5\xf4\xe5\xf4\xf9\xf5\x14\xf5\x92\xf5\x9e\xf5\xa3\xf5\xa8\xf5\xb2\xf5\xb5\xf5\xbe\xf5\xc6\xf5\xcc\xf5\xcf\xf5\xf1\xf5\xf7\xf5\xfa\xf6\x0f\xf6\x12\xf6?\xf6B\xf6\x9d\xf6\xaf\xf6\xca\xf6\xcc\xf6\xdc\xf7\x04\xf71\xf7]\xf7x\xf7{\xf7\x85\xf7\x89\xf7\x8d\xf7\x91\xf7\x99\xf7\xb1\xf7\xb3\xf7\xbc\xf7\xc6\xf7\xd3\xf7\xd6\xf7\xe1\xf7\xe3\xf8=\xf8B\xf8\x9e\xf8\xa6\xf8\xca\xf8\xd2\xf8\xe1\xf8\xe8\xf9\a\xf9\x13\xf9\x1a\xf9\x1e\xf9I\xff\xff\x00\x00\xf0\x81\xf0\x8c\xf0\x92\xf0\x99\xf0\xd2\xf0\xe1\xf1\x13\xf16\xf1;\xf1Z\xf1g\xf1k\xf1p\xf1s\xf1y\xf1\x80\xf1\x84\xf1\x89\xf1\x94\xf1\x98\xf1\x9a\xf1\x9e\xf1\xa0\xf1\xb4\xf1\xbc\xf1\xca\xf1\xd0\xf1\xe7\xf1\xed\xf1\xf0\xf2\x02\xf2\b\xf2\r\xf2\x10\xf21\xf27\xf2:\xf2K\xf2^\xf2`\xf2m\xf2p\xf2|\xf2\x80\xf2\x84\xf2\x93\xf2\x96\xf2\xa5\xf2\xa9\xf2\xb0\xf2\xb8\xf2\xc4\xf2\xd5\xf2\xdd\xf2\xe0\xf3\\\xf3h\xf3x\xf3\u007f\xf3\x83\xf3\x88\xf3\x8b\xf3\x91\xf3\x99\xf3\x9d\xf3\xa1\xf3\xa6\xf3\xb4\xf3\xc0\xf3\xc3\xf3\xc6\xf3\xca\xf3\xd0\xf3\xd2\xf3\xdf\xf3\xe1\xf3\xe6\xf3\xee\xf3\xf3\xf3\xf5\xf3\xfe\xf4\x02\xf4\a\xf4\x11\xf4\x19\xf4#\xf4%\xf4M\xf4R\xf4W\xf4Y\xf4\xd5\xf4\xe4\xf4\xe7\xf5\n\xf5\x92\xf5\x9e\xf5\xa3\xf5\xa8\xf5\xb2\xf5\xb5\xf5\xbe\xf5\xc6\xf5\xcc\xf5\xcf\xf5\xf1\xf5\xf7\xf5\xfa\xf6\x0f\xf6\x12\xf6?\xf6B\xf6\x9d\xf6\xaf\xf6\xc9\xf6\xcc\xf6\xdc\xf7\x04\xf70\xf7]\xf7x\xf7z\xf7\x85\xf7\x89\xf7\x8d\xf7\x90\xf7\x97\xf7\xaf\xf7\xb3\xf7\xbb\xf7\xc6\xf7\xd3\xf7\xd6\xf7\xdf\xf7\xe3\xf84\xf8?\xf8\x9e\xf8\xa6\xf8\xca\xf8\xd2\xf8\xe1\xf8\xe8\xf9\a\xf9\x13\xf9\x1a\xf9\x1e\xf9I\xff\xff\x0f\x82\x0fy\x0ft\x0fn\x0f8\x0f-\x0e\xfc\x0e\xda\x0e\xd6\x0e\xb9\x0e\xad\x0e\xac\x0e\xab\x0e\xaa\x0e\xa6\x0e\xa5\x0e\xa3\x0e\x9f\x0e\x99\x0e\x96\x0e\x95\x0e\x93\x0e\x92\x0e\x89\x0e\x85\x0ez\x0ew\x0eh\x0ee\x0ed\x0eX\x0eT\x0eQ\x0eP\x0e6\x0e2\x0e0\x0e$\x0e\x13\x0e\x12\x0e\x11\x0e\x10\x0e\x05\x0e\x04\x0e\x03\r\xfb\r\xfa\r\xef\r\xed\r\xec\r\xe9\r\xde\r\xd0\r\xce\r\xcd\rR\rG\rE\rD\rB\r@\r>\r=\r<\r:\r9\r8\r7\r5\r3\r2\r1\r.\r-\r+\r*\r)\r(\r%\r$\r \r\x1d\r\x1c\r\x19\r\x18\r\x17\r\x16\f\xfb\f\xf7\f\xf3\f\xf2\fw\fi\fh\fX\v\xdb\v\xd0\v\xcc\v\xc8\v\xbf\v\xbd\v\xb5\v\xae\v\xa9\v\xa7\v\x86\v\x81\v\u007f\vk\vi\v=\v;\n\xe1\n\xd0\n\xb7\n\xb6\n\xa7\n\x80\nU\n*\n\x10\n\x0f\n\x06\n\x03\n\x00\t\xfe\t\xf9\t\xe4\t\xe3\t\xdc\t\xd3\t\xc7\t\xc5\t\xbd\t\xbc\tl\tk\t\x10\t\t\b\xe6\b\xdf\b\xd1\b\xcb\b\xad\b\xa2\b\x9c\b\x99\bo\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x06\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x02\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Z\x00\x8e\x00\xdc\x01\xa0\x01\xe8\x02\x14\x02\xda\x03B\x03\xb6\x04\x04\x04<\x04x\x04\xec\x05\x10\x058\x05X\x05\xca\x06\n\x06B\x06\x90\x06\xb8\x06\xec\a\x80\a\xb4\a\xd6\b\x04\b@\b\x8e\b\xd0\b\xee\t4\v\f\vr\v\xe0\f<\f\x88\f\xba\r\"\r\xbc\r\xf0\x0ef\x0e\x96\x0e\xe8\x0fd\x0f\xe0\x10\x0e\x10<\x10h\x10\xe6\x11p\x11\xbe\x12\x02\x12P\x12\x8e\x12\xee\x14\x06\x14\x86\x15\x1e\x15p\x15\xd4\x16:\x16\xa8\x17\f\x17.\x18*\x18l\x18\xb8\x19x\x1a\x00\x1a\xd6\x1b\x80\x1c*\x1cP\x1c\x98\x1c\xe6\x1d^\x1d\xde\x1e\b\x1e\x88\x1e\xf0\x1f6\x1f\xb4!F\"\x06$\n$\xf2%\xaa&\x1c&\xa0'\x04'\xbe'\xec)\x10)>)\x84)\xde*Z+x+\xb8,.,\x86,\xf4-\x1e-^-~0\x180b0\xe01l1\xbe2\x1e2J2\x823:3\x9e4\b4J4\xb85\xd46\x1e6\xfa767\x967\xe68\xae9>9R9\x909\xaa:\x18:\x94:\xd2;\x16;8;\xbc<2\x0e>j>\xb6?D?\xc4@0@\xacA>A\xd2BlB\xb8CTC\xa6D\xceE\x14EjF\"FnG\x12GFG`HhH\xdaIVJ\x04J\x8eJ\xc8K\x0eL8L\xa4M\x10M\x8aNlN\x98O\nOnP\x9aQ\x0eQ~R^R\xb8S\x04STTjT\xb4UFU\xc0V\x16V\xa8W\x18W~W\xbcX\bX:X\xfeY\xd2Y\xfeZ*\\v\\\xf8]d]\xa2^*^R^t^\xd2_D_\xba_\xdca(a\\a\x80a\xe0b\x14b~dbd\xa6eZe\x8ee\xfef`f~f\xaag\x16i\xd8k(k\\l\x0elLl\xa8m m|p8p\xc2q\x12qrr(rtr\xa8sZs\xf0tTt|u\x1euXu\xc8u\xe4v\x10vJvvw\x0ew\x9ew\xd4xZyPy\xc8z`z~z\xce{>|\xa2}\x00}T}\xcc~\x12~\x8a\u007f\n\u007fP\u007fڀ\n\x80\x82\x80\xe8\x81\x0e\x814\x81\xb6\x82\f\x82p\x82\u0383\xf8\x84H\x850\x85Z\x85\x96\x85\xb6\x86^\x87\x00\x88\x96\x89\x04\x89\xfa\x8aJ\x8a\U0010b08cF\x8c\xba\x8d<\x8d^\x8dr\x8e\x18\x8eƏ \x90\xa6\x91*\x92\x8c\x92\xb4\x93\xac\x95@\x95^\x95\x82\x96\x80\x98\x18\x98X\x98v\x99\\\x99v\x9a\x1a\x9aL\x9a\x82\x9c\"\x9d\xbe\x9dԞ\x04\x9e6\x9e\x84\x9e\x9e\x9fJ\xa0\x06\xa0B\xa0ġ\xa6\xa2\n\xa2L\xa2\xae\xa3\x1a\xa3n\xa3\xa0\xa3\xf4\xa4H\xa4\xa2\xa4\xf8\xa5\x94\xa62\xa6\x8a\xa6\xe0\xa7n\xa8B\xa8Ʃ0\xa9\xba\xaaV\xaa\xf0\xab\x1c\xabĬ\xc0\xadd\xaf\xf6\xb4X\xb5\x04\xb5T\xb6 \xb7\\\xb8(\xb9̺\f\xbaP\xba\x8e\xba\xe2\xbbX\xbbȼ<\xbc\xe4\xbd\x18\xbd\x80\xbd\xac\xbd\xe2\xbe(\xbe\xf6\xbfN\xc2\xe2Þ\xc7>ɴ\xca\fʎ\xcb\"\xce\xc8\xce\xea\xd1\xc0\xd1\xdc\xd2\x02\xd26Ҝ\xd32Ӟ\xd4\x18\xd4V\xd4\xd8\xd5\xf6\xd6,֔\xd7\b\xd70\u05ec\xd9\xcc\xda\x18\xdaVچ\xdbN\xdb\xc6\xdc\\\xdc\xcaݦ\xde\x16\xdf0ߌ\xdf\xe8\xe0&\xe0\xce\xe1\x88\xe3V\xe3\xa6\xe4\\\xe4\xf0\xe5l\xe5\xb2\xe6\x14\xe6\xc0\xe7.\xe7\xa0\xe7\xde\xe8\x88\xe9\x00\xe9\xba\xea2\xea\x8a\xea\xc4\xea\xf2\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00;\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0567\x06\a67\x06\a&#\"\x06\x17&'\x06\x15\x14\x1e\x01\x17&'\x15\x14\x16\x17\x06'\x1e\x013\x06#\"'\x1632>\x0154\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01/\x13\x0e\x13\x13\x15\b\x14\x16\x13\x1c\x1f(\aS5\t\b\x0e\b\x10\x0e\x1e\x17\x0e\x10\x06\"\x15$-\t\a.79X)\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x9f\x0e\x14\b\x02\r\x17\f\x04\x150!\x05@\x0f\x12\n\x15\x12\x06\x01\b\x01\x18$\x05\x03\x02\x14\x19\x1c\x01\x1e:T-\x05\x00\x00\x00\x01\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00$\x00\x00\x012\x16\x15\x11\x14\x06+\x01537#54;\x015&#\"\x0e\x01\x1d\x01#\x153\x15#\"&5\x11463\x01\x90\x14\x1c\x1c\x14\x89:\vE(\x1f\x1c\x1b\x1d)\x18??\x89\x14\x1c\x1c\x14\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x98H/&=\x05\x16,\x1e7H\x98\x1c\x14\x01`\x14\x1c\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x14\x00\x1c\x005\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x1335#\x156264&\"\x06\x14\x0154.\x02#\"\x06\a#5#\x15354632\x1e\x02\x1d\x01\x01\xa0\r\x13\x13\r\xfe\x80\r\x13\x13\rg\x01C\x11 \x17\x17 \x16\x01@\x06\x10!\x18\x17!\a\x01@C\x10\x17\f\x10\x05\x02\x01\xa0\x13\r\xfe\x80\r\x13\x13\r\x01\x80\r\x13\xfe\x80\xd6\xd6\xf3\x17\x1f\x17\x17\x1f\xfe\xf6u\x18\"\x1d\x0f\x14\x0e\x1d\xd6j\x19\x1e\n\x14\x0f\fh\x00\x00\x00\t\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00V\x00[\x00c\x00i\x00p\x00w\x00}\x00\x85\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x13>\x0154&#\"\x06\x15\x14\x16\x17\x1654&5\x0e\x01\".\x01'&'0'43\x16\x17\x16767.\x03547&76\x16\x1f\x0162\x17>\x02\x17\x16\a\x16\x15\x14\x0e\x02\a\x16\x15\x1c\x01\x15\x14&\x06&36\a4#\"\x15\x1432&\x06'&6\x17'6&\a\x06\x17\x16'6'&\a\x06\x16&6'&\x06\x17'6'\"\a\x06\x17\x16\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\xe52=aEE]>2\f\x01\x02\x06\x11\x0e\x0e\x03\a\v\a\b\x10\t\x11 \x02\b\x12\x14\x19\v\x10\t\n\x06\x17\t\b\x14+\x14\x04\v\x19\x06\n\b\x11\f\x1a\x14\x12\vS\a\x01\x03\x04\f\x04\x04\x04\x04\r\x02\x03\x04\x02\x03\t\x01\x05\x02\x01\x02\x03\a\x02\x02\x02\x02\x02\x04\x06\x03\x02\x02\x03\x02\x04\x01\x02\x02\x01\x01\x03\x02\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\x80\x11W7D]]D7W\x11\x02\n\x01 \b\x01\x01\x03\n\t\x13\x05\a\x03\x01\x10\x1d\x0f\x0f\a\x02\x05\x0e\x1e\x16\x16\x11\x14\x19\x02\t\x05\x05\x05\x05\x02\a\n\x02\x18\x15\x12\x15\x16\x1e\x0e\x05\x02\t\x15\x0e)\x01\n@\x01\x05\x01\x05\x03\x03\x02\x06\x05\x01\x01\x05\x01\x02\x01\x06\x02\x02\x03\x02\v\x01\x03\x03\x02\x01\x05\t\x03\x02\x02\x03\x02\a\x01\x02\x01\x01\x01\x02\x00\x00\x00\x01\x00\x00\xff\xf0\x02\x00\x01\x90\x000\x00\x00\x01\x16\x15\x14\x0e\x02#\"'\x16327\"&'\x16327.\x02=\x01\x16\x17&547\x1e\x01\x17&54632\x1767\x06\a67\x06\x01\xcb\x01(ItFXI\v\x0eI:#5\n\n\t\x0e\x0e\x18&\x16\x16\x19/\x0f'q@\x02=+.\x1f$\x1f\f\"\x1e\x1e\x16\x01(\x04\t5iW6/\x01-)\x1f\x01\x03\x05\x1e+\x19\x02\r\x01 8\x1c\x191:\x03\f\f+>!\a\x12%\x15\x04\r \x00\x01\x00\b\xff\xcb\x01\xf8\x01\xb8\x00\x1e\x00\x00%\x14\x06\a537#54;\x015&#\"\x0e\x01\x1d\x01#\x153\x15.\x015462\x16\x01\xf8xY:\vE(\x1f\x1c\x1b\x1d)\x18??Yx\x91Α\xc0\\\x8b\x0e\xadH/&=\x05\x16,\x1e7H\xad\x0e\x8b\\g\x91\x91\x00\b\x00\x00\xff\xd3\x01\xf0\x01\xb8\x00\a\x00\x0e\x00\x14\x00e\x00m\x00u\x00}\x00\x84\x00\x007\x14#\x065436\x066\x17\x16\a\x06'72\x16\a\x06&\x132\x1e\x01\x15\x14\x06\a\x06&5<\x0154'>\x0454&'6'&\x06\x0f\x01&\"\a.\x02\a\x06\x17\x06\x15\x14\x1e\x03\x17\x06\a\x0e\x01&'.\x01/\x01\"\x17\x1e\x01\x1f\x01\x1e\x022?\x01\x14\x16\x15\x14\x06'.\x01546\x036\x17\x16\a\x06'&'6\x17\x16\a\x06'&\x176\x17\x16\a\x06'&'6\x17\x16\a\x06&\xa6\x05\x06\x05\x06!\x03\x05\x05\x01\x01\x05(\x05\x01\x05\x05\x01GDtC]K\b\t\x11\x16\x18$\x13\x0e\f\x0e\f\x0e\n\"\r\f\x1fA\x1e\x05\x12%\t\x0f\f\x17\x0e\x12\"\x19\x15\r\x03\n\x15 \n\x06\x13\a\x06\x16\x14\a\x0e\x03\x04\x04\x14\x18\x16\a\a\x01\t\bL^\x8d,\x02\x03\x03\x02\x02\x03\x03\t\x02\x03\x03\x01\x01\x03\x04\"\x02\x04\x04\x02\x03\x04\x04\t\x03\x03\x03\x03\x03\x053\x04\x01\x05\x03\x01\x04\b\x02\x01\x04\x04\x02\a\x06\x02\x01\b\x01\x80@pDS\x83\x19\x02\b\x06\x01?\x14 \x0e\x03\x04\x0e\x16(\x1c\x13\x18\x0f\x1f%\x03\r\b\t\t\t\x04\v\x0f\x03%\x1f\x19!\x1c(\x16\x0e\x05\x02\f\x16\x04\x04\f\x11\v\r\x01\x01\x0f\x04\x12\a\b\f\x10\x04\x01\x01\f0\x01\x06\b\x02\x19\x83Sh\x8c\xfe\xa7\x02\x03\x03\x02\x02\x03\x03\n\x02\x01\x02\x02\x03\x02\x02!\x03\x04\x04\x03\x03\x04\x04\x11\x03\x05\x04\x02\x02\t\x00\x01\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00J\x00\x00\x00\x14\x06#\"'6?\x01\x1e\x0132654&#\"\x06\x15\x14\x16\x17\x167>\x0176'&54632\x16\x15\x14\x0e\x01#\"&7>\x0254.\x01#\"\x06\x15\x14\x1e\x04\x15\x17\x06\a\x06\x17.\x015462\x01\xf0\x91g&#\x18\x06\x10\x06 \x137IXALW\x1c\x16\a\x01\x01\x05\x01\x01\x03\x12=3.:\x15$\x15\x13\x16\x04\x02\f\x06\x06\x0f\n\x13\x1a\x01\x01\x02\x01\x02\x01\x19\x05\x05\x05GW\x91\xce\x01'Α\v(\x19;\f\x10YA=RX>\x1d9\n\x03\x06\x02\x17\x03\x04\x03\x17\"+A9,!4\x1d\x1b\x12\n$\x1b\n\t\x10\t\"\x1a\x04\t\a\a\x04\x04\x01\x01g\x14\x19.\x1b~Ng\x91\x00\x01\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00R\x00\x00\x01\x11\x14\x06+\x016?\x01\x1e\x0132>\x0154&#\"\x06\x15\x14\x16\x17\x1674676'&54632\x16\x15\x14\x0e\x01#\"&7>\x0254'&\a\x06\x15\x14\x1e\x02\x1f\x01\x0e\x05\x16\x1f\x01#\"&5\x11463!2\x16\x01\xc0\x1c\x14\xf6\x16\x06\x0f\x06 \x12%:!WAKW\x1c\x16\a\x01\x06\x01\x01\x03\x12=2-:\x15#\x16\x12\x16\x04\x02\v\a\x19\x1b\x0f\b\x01\x02\x02\x01\x01\x05\r\x05\a\x01\x01\x01\x01\x03Y\x14\x1c\x1c\x14\x01`\x14\x1c\x01p\xfe\xa0\x14\x1c$\x17;\f\x10(F*=QW>\x1c8\v\x03\a\x01\x16\x04\x04\x03\x17!+@8, 4\x1c\x1a\x12\v#\x1b\t\x1e\x04\x04\x1c\x0f\x14\x06\f\t\x06\x02\x02\x157\x14 \f\x16\x11\r\x01\x1c\x14\x01`\x14\x1c\x1c\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00+\x007\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x132654'#\x153\x0e\x01#\".\x0154632\x177&#\"\x06\x14\x16%5#5#\x15#\x153\x1535\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14t+5\x02^9\x03\x1c\x1a\x11\x1c\x11$\x1a\x18\x10\x1b\x1c');;\x01\x05\x1d\x1d\x1d\x1d\x1d\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xbc6,\b\b\"\x0f\x1c\x11\x1d\x11\x1a%\x0f\x1a\x1a;R;R\x1d\x1d\x1d\x1d\x1d\x1d\x00\x02\x00\f\x00\x00\x02t\x01\x80\x00\x1b\x00'\x00\x00%\x16\x15\x14\x06#\"&4632\x17\a&#\"\x0e\x01\x15\x14\x163267#5\x053\x15#\x15#5#5353\x01\x82\x03fRPppPK54\x1e. 7 F126\x05m\x01n888778\xdc\x11\x0fSip\xa0p22\x1d 8!2G6\x1cC\a88888\x00\x03\x00\x00\x00\x00\x01\xc0\x01\xc0\x00\x03\x00\x0f\x00(\x00\x003#\x113'\"&4632\x1e\x01\x14\x0e\x01\x01#54.\x02#\"\x06\x1d\x01#\x113\x153>\x0132\x1e\x02\x15d]].\x16 \x16\x0e\x19\x0f\x0f\x19\x01|]\x02\b\x15\x11!\x17]Z\x01\n. \"-\x17\t\x01+) , \x0e\x19\x1d\x19\x0f\xfe\xac\x92\x11\x15\x1b\x0e*#\x94\x01+)\x14\x1d\x15)0!\x00\x00\x04\x00\x00\x00\x00\x01\xe0\x01\x80\x00\n\x003\x00L\x00T\x00\x006\x14\x06#\".\x015462\x05\x14\a\x0e\x05#*\x01.\x04'&547&5472\x16\x17632\x17>\x013\x16\x15\x14\a\x16\a4&#\"\a\x06\"'&#\"\x06\x15\x14\x1e\x03;\x012>\x02&2\x16\x14\x06\"&4\xba\x13\x12\f\x11\a\x13#\x019\x12\t\x1b) 7\x18\x1c\x1c\x0f6\x18-\x18\x1c\b\x14*\b\x0e#1\x19*/*&\x191\"\x0f\b'@(\"\f,\x150\x15+\r\"(\x13\x1c*&\x180\x1e0/\x1ad#\x13\x13#\x14\x8a&$\x14\x18\v\x13$\x04;$\x13\x1b\x10\t\x03\x01\x03\x04\v\x10\x19\x10(7A0\x18\x19\x17\x1d\x10\x14\n\t\x14\x0f\x1d\x17\x19\x17.w#0\x06\x03\x03\x060#\x19&\x15\r\x04\a\x14+V$&$$&\x00\x00\x01\x00\x00\x00\x05\x02\n\x01{\x00\x13\x00\x00%#76&+\x01\x03#\x13#\x03#\x13'!2\x17\x16\a\x01\xcda4\x03\x10\x101$%\r\x05\xf3\x10\x13\xfe\xea\x01\x16\xfe\xea\x01\x16`--=\x00\x02\x00\x00\xff\xe0\x01\x80\x01\xa0\x00\x04\x00\x15\x00\x00\x11!\x03\a'\x017#\x173\x0f\x01/\x01#\x1f\x013?\x01#'\x01\x80#\x9d\x9d\x01\x11\x05\xf1\f\xa7\x0656\x04/\x06c\x01a\x0e\xb0\x04\x01\xa0\xfet44\x01\f0\x92>\x0e\x0e&L\x1b\x1b\x951\x00\x01\x00\x00\xff\xe0\x01\xe0\x01\xa0\x00\x0f\x00\x00\x01\x03\a'73\a\x17?\x01!7!7!7\x01\xe0@\xdf\xc1\x14R\bt\x86\x13\xfe\xb3\x10\x01M\v\xfe\xb2\x11\x01\xa0\xfe\x90PP_),,aR5R\x00\x03\x00\x03\xff\xc0\x01\x84\x01\xc0\x00.\x00A\x00T\x00\x00%\x16\a\x0e\x01\a\x15#5\"#\x15#5\"#723\x16>\x0175.\x01\a\"#5\x16753\x156353\x15\x1e\x04\x17\x16'\x152\x1662>\x0454.\x04\x06\a2\x16>\x0654.\x04\x06#\x016M\a\x06GB1\x19\r1\tX\n\x03\a\x11\r\f\x01\x03\x17\x1d\x05\x03T\r1\x19\r1\x13 \x1d\x14\r\x01\x06\xce\x01\x13\n\x15\x0e\x13\f\v\x06\t\x12\x11\x1b\x0f\x1a\x01\x01\x17\f\x19\x10\x16\x0e\r\a\v\x15\x13!\x10 \x01\xcd\x12R5,\x04DCCD:\x01\x01\b\b\xd9\x10\a\x014\x01\x01ON\x01MO\x02\a\f\x12\x1b\x10:T`\x01\x01\x03\x04\b\n\x0e\t\f\x11\v\x06\x02\x01\x01\xfb\x01\x01\x01\x03\x04\t\n\x10\n\r\x13\v\b\x02\x01\x01\x00\x00\x00\x00\x02\x00\x0e\x00\x00\x022\x01\x80\x00$\x00'\x00\x00\x01\x1e\x03\x1d\x01\x14\a\x0e\x01\a\x0e\x01\a#\"'&'.\x01'547>\x017>\x01732\x17\x1e\x01\x057'\x02&\x03\x05\x02\x01\v\x05\x1a\x12\x13j,,\xab*'\n\x05\x05\x01\v\x05\x1a\x12\x13j,,\xab*\x12\x1a\xfeǏ\x8f\x01D\f$#\x1e\n\tZ+\x11\x1a\x05\x05\x05\x01\v\v%\x13C\x17\x18Y+\x12\x1a\x05\x05\x05\x01\v\x05\x1a\xe8RQ\x00\x02\xff\xfe\xff\xdf\x01\x82\x01\xa0\x00\x10\x00#\x00\x0070\a\x06+\x01\"&?\x01'&6;\x012\x17%\a\x17\x16\x06+\x01\"/\x01>\x0276;\x012\x16\xa3F\b\nA\x06\x05\x02E,\x03\x06\x06A\v\a\x01\t\x90[\x03\x05\x06B\v\a\\\x01\x1fH)\a\nB\x06\x05\xee|\f\t\x05zL\x05\t\fV\xfd\xa7\x05\t\f\xa9\x026\u007fH\f\t\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00 \x001\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x132767'&+\x01\"\x06\x1f\x01\a\x06\x163%6&+\x01\"\a\x06\a\x17\x16;\x0126/\x01\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\\\b\x050\x02 \x05\b.\x05\x03\x02\x1f1\x02\x04\x04\x01\n\x02\x04\x04/\a\x05f\x02B\x05\b/\x04\x04\x02B\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xe0\tU\x037\t\x06\x046W\x04\x06\xd6\x04\x06\t\xb3\x03x\t\x06\x04w\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x02\x10\x01\xa0\x00\a\x00\v\x00\x13\x00\x00\x01\a\x17\a'7'7\x117\x17\a57'7\x17\a\x17\a\x01\b\x84\x84\x84\x84\x84\x84\x84\x84\x84\x84\x84\x84\x84\x84\x84\x84\x84\x01LUTTUTTT\xfe\x94UUT\xc4TTTTUTT\x00\x00\x06\x00\x02\xff\xe0\x01~\x01\xa0\x00\x03\x00\a\x00\v\x00\x0f\x00\x13\x00\x1b\x00\x00%\a'?\x01\a'7\x17\a'?\x01\x17\a'\x13\x15#5\x1753\x15!53\x15\x01#\t\xc3\b\xf7\x1a\x99\x19z\x10\xb6\x11\x85w w4\xc8\xf0(\xfe\x99(\x89')'.\x1f\x81\x1e\xa8$T%\x93\xa0\x18\xa0\xfe\xd0((Px\xa0\xa0x\x00\x00\x00\x00\x05\xff\xff\xff\xe0\x01\xc1\x01\xa1\x00\a\x00\x0f\x00\x17\x003\x00k\x00\x00\x122\x16\x14\x06\"&4\x16264&\"\x06\x146\x14\x06\"&462\x17\x16\x14\a\x0e\x01\a\x06\"'&'.\x025&47676762\x17\x1e\x01\x03>\x02<\x04.\x01'&'.\x02*\x01#*\x02\x0e\x01\a\x06\a\x0e\x02\x1c\x01\x15\x1c\x02\x1e\x02\x17\x16\x17\x1e\x02:\x013:\x02>\x0176\xb0`CC`CT>,,>,\xdd\x0f\x16\x10\x10\x16\\\x01\x01\x03C=\x1b\x82\x1b=!\r\x10\a\x02\x02\x03!!=\x1b\x82\x1b=C-\x03\x04\x02\x02\x04\x03\f\x1f\b\x19#\x15)\x02\x02(\x16#\x19\b\x1f\f\x03\x04\x02\x01\x02\x04\x02\r\x1e\b\x19#\x15)\x02\x03'\x16#\x19\b\x1f\x013C`CC`{,>,,>\xa2\x16\x10\x10\x16\x0f6\x1b\x82\x1b=C\x02\x02\x02\x03!\f \x1e\x14\x1b\x82\x1c\x0176;\x012\x1d\x0132\x1d\x01\x14+\x01\x15\x14\x1676\x17\x16\x1f\x01\x16\x016\f5!*>\x1e\r/\n\v*(\x03\x01\x0fF\nT\n\nT#!\t\x04\x05\x02\x16\x04 \r\x13\x1c.,\x17\x90\nD\f\x04\x0eB%\x10\ns\nR\n\x85\x1b\x15\f\x04\x02\x01\a@\n\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x007\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x016/\x01&'&\a\x06&=\x0132=\x014+\x0154+\x01\"\a\x06\a\x06\x1d\x01\x14;\x01\x15\x14\x1e\x0232\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01\x0e\x02\x02\x0e\x01\x03\x03\x05\x15\x164\x06\x064\x06,\t\x01\x041\a\x06\x1e\b\x13&\x1b*\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\x94\x02\a(\x04\x01\x01\x02\b\r\x11S\x064\x06H\x06\n8\x11\x03\a+\x06Z\x0e\x1c\x1c\x12\x00\x02\x00\x03\xff\xdf\x01}\x01\xa0\x00\x1f\x00(\x00\x00%\x14\x17\x0e\x01\a\"&#\"\x06#\x06.\x01'&54672\x1632>\x02\x17\x16\x17\x06'\x06'&7>\x017\x16\x01?=\f: \x0e.\x11\x11/\v\x161\x1d\b\x0eE.\x0f8\x06\x04\x15\x16\x1d\f9\x1c38 %\x04\x1d\f&\x12\x03\xb3?\x1d&P\x01\x12\x12\x0126\x16*'?F\x01\x14\a\t\x06\x01\x05(\x1en&\x03( \x0e\x14\x01(\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00\a\x00\v\x00\x0f\x00\x00\x117\x15#\x1553\x15\x1753\x15\x037\x15#\xb8\xb8\xb8\x14\xf4\xf4\xf4\xf4\x01b\x1a\xb2\xac\x96\xb0\x02\xb2\xd4\x01\x9e\"\xd6\x00\x00\x00\x03\x00\x00\x00@\x02@\x01\x86\x00\a\x00\x0f\x00-\x00\x00$\"&462\x16\x14\x04\"&462\x16\x14?\x01654#\"\x0f\x01.\x02#\"\x06\a'&#\"\x15\x14\x1f\x01\x0e\x01\a!.\x01\x01\xae\x13\x0e\x0e\x13\x0f\xfe\xe8\x13\x0f\x0f\x13\x0e\xfa0\x02\n\x06\x031\x10,-\x12\x1bH\x181\x03\x06\n\x020?N\x06\x02@\x06N\x92\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x83S\x02\x03\n\x05U\b\f\a\x10\vU\x05\n\x03\x02S\"xIIx\x00\x00\n\x00\t\xff\xbd\x01\xb5\x01\xc1\x00\v\x00\x19\x00k\x00~\x00\x90\x00\xa8\x00\xc4\x01\n\x01)\x01C\x00\x00\x13#'476\x17\x16\x14#\"&\a\"5476\x172\x06\a\"10\x06\x13\x16\x15\x06\a\x0e\x02\a\x06\a\x06'&'\x06&\a\"\x0e\x02#\x06\a\x06'.\x02'&'&76'&5476767>\x017&767674.\x01>\x0232\x1e\x02\x06\x17\x06\x1e\x01\x17\x16\x17\x16\a\x16\x17\x16\x17\x16\x17\x16\x03\x06\x17\x16\x17&63\x1e\x01\a\"\a\x16\x176'&\"\a\"\x06\x1760'&672\x1e\x01\x15676&\a\x06\x17\x16\x17\x1e\x023\x1667676'.\x01'&#\"\a\"\x036&/\x01&'&\a\x0e\x01\a\x06\a\x06\a\x06\x17\x16\a\x06\x17\x1e\x02\x17\x1665\x16676567676\x17\x16\a36'6'&'\"\x17\x1e\x01\a&#&'&'\x06\a\x0e\x02\a\x06'.\x01'&'\x0e\x04\a\x06\a&76\a\x06\a\x06\x17\x16\x17\x16\x17\x16\a\x06#\x16%4'.\x02'&\a\x0e\x01'&'\"1\x06\a\x06\a\x14\a\x06\x17\x16767>\x02\x03&72\x161\x16\x17\x1632767>\x01\x172\a\x06\a\x06#\"'&\xdd\x02\x02\x01\x02\x04\x03\x03\x01\x02\x16\x03\x03\x04\x02\x01\x01\x02\x01\x02\xdc\x10\x01\r\x05\x17\x11\x06\x16\x1b\x1b\r\x01\x01\f%\a\a\x0f\n\f\x04\a\x13\x19\x1f\b\x15\x18\x06\x0f\x05\x05\a\x02\x03\x01\x03\x05\r\x0e\x04\x01\v\x04\x04\n\x0f+\x14\x03\x02\x01\b\x0f!\x19\x17 \r\b\x01\x01\x01\f\n\f!\r\x11\r\x02\x02\x02\x02\a\x04\x04\xc1\x05\x02\b\x05\x02\b\x06\x06\x06\x03\x01\x03\t\x03\x0f\n\b\x1d0\x0e\x06\f\x06\x01\x05\x01\x06\x03\x05\x02\x04\x06\x01\f\x16\x06\x02\x03\f\x03\r\b\x06\n\x1a\x02\x12\x04\x05\x0f\x04\x0f\x04\x0e\f\f\x0f\x01\n\x01(\x02\x14\n\f\n\b\x02\t\x03\x06\r\v\x04\x03\x02\x03\x02\a\x04\x03\x19$\f\x182\x1f9\x1b\x06\x02\x03\x05\x10\x03#\x1c\x05\x05\x06%\x04\x05\b\x1b\x04\a\r\x13\t\x06\x05\x05\x12\x19\r\a\x0f\x02\x05\a\x02\x18\x12\x01\t\x03\x02\x04\x01\x05\v\b\f\x02\r\x01\x18\x1b\f\x04\x16\x05\x05\x05\x06\x13\x19\r\v\x03\x04\r\n\x01\x06\x0e\x04\x05\x04\x04\a\x10\x06\x17\t\x11\x02\x01\n\x04\x02\x02\n\x06\x05\v\x17\x18\x14\t \x15\xff\x04\x03\x01\x03\x05\x03\f\f\f\x12\x02\f\x02\x03\x01\x04\a\a\b\x14\v\x0e\x0e\x03\x01E\x01\x01\x01\x01\x02\x01\x03\x02\x02\x01\x02\x01\x02\x02\x01\x01\x02\xfe\xe9\x12\f\n\b\x02\v\f\a\x1a\x02\x02\x19\x03\x04\x01\x06\x01\x03\x02\x02\x10\x04\x06\x11\x04\x04\x03\x01\x03\t\v\x15\x05\x10\b\x04\a\x05\n\x05\x05\x03\x02\x0f\x03\x18\x1d.3\x1c%\x05 \x19\"\x17\x10\x13\x1d#\"\x0e\x0e\x1c\x10\x0e(#*%\x01\x01\x01\x02\x05\x11\x10\x019\v\v\x02\x03\t\x0f\x01\x12\t\x04\x03\x02\x11\x17\x10\x05)\v\x05\x01\x05\x16\x01\x06\t\x05\x03\x02\x0e\x13<\x05\b\b\a\x02\v\x04\x01\x0f\x01\x05\r\f\x06\x02\x05\x02\t\x0e\xfe\xa8\v5\x04$\x0e\x02\x02\t\x02\r\x03\x05\x05\x04\a\x06\x0e\x12\x06\x13\b\x06\x04\x05\x06\x0f\b2\x11\x06\x13\x15\b\x1c\f\x15\x06\x1c\x10\f\x0e\x14\x0f\x11\x13#\x18\a\f1\x18\x02\x1f!.2\n\x05\x01\x02\x05\x01\x0e\x0f\x01\b\x01\x02\x03\v\x19\x1a\x14\x1b\x04\x1f\x1f 3\x16\x01$\x18\x13\x10\x12\f\x0e\x12\x0f\n\t\f\x04\t\x10\x04\x12\x10\x03\x06\x01\a\v\x02\x04\x19\x05\x10\v\x1c\x03&\x17\r\x15\x02\x02\x17\v\x11\f\x01#\x04\x03\x05\x05\x02\n\n\x02\b\x01\x05\x01\x06\a\x04\n\n\x03\x00\a\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x11\x00\x1a\x00\"\x00.\x006\x00<\x00\x00\x122\x16\x14\x06\"&4%\x0e\x02\a\x16\x176\x17&'.\x01\a\x16\x17>\x02'\x0e\x02\a\x167&\a\x14\x17>\x027&'\x06'\x14\x17\x1e\x017&'\x0e\x01\x1767&\a\x16\x99Α\x91Α\x01\x9c\x06\x13:#\t\tIK\x01G'd3+$\"7\x11\xe1\x1e0!\x06^e$\xa47\x116H%\a\nlnR.t3\r =Y\xe6M\x0e?E\x1d\x01\xb8\x91Α\x91\xce\x1f\b\x14*\x0e\x14\x16\n\x10JR#\x19\f9C\f&\x13(\x0e,9!\x01\x1bA\x86R<\x1e8.\n\x12\x12 \x02\x03\xaa%\x0e\x17MS\x14K.4Z\x14\vP\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc1\x01\xa0\x00\x1b\x00S\x00\x00%\x16\x15\x14\x06#\"'\x06#\"&547&54632\x17632\x16\x15\x14\a2654'&'.\x035432\x1e\x0132>\x0254&\"\x06\x15\x14\x1e\a\x17\x1e\x02\x15\x14\x06#\".\x02#\"\x06\x15\x14\x16\x01\xa9\x17B.&\x1e\x16\x16Ux\x04\x17B.&\x1e\x16\x16Ux\xc7-C[\x05\v\x11\x0e\x11\x05*\x14\x19\x13\v\a\f\a\x05DWA\x03\t\b\x12\t\x19\n\x1f\x05\x11\f\r\x18\x13\x12\x1c\r\x13\n\x0e\x0fG\x94\x1e&.B\x17\x04xU\x15\x17\x1e&.B\x17\x04xU\x15r-)9\x15\x01\x02\x04\x04\a\b\a\x16\x10\x11\x05\t\v\a\x18\x1f()\v\x12\x0e\n\n\x06\a\x03\a\x01\x05\x03\v\t\f\x0f\x0e\x11\x0e\x11\r\x1b&\x00\x02\x00\x00\xff\xb6\x01t\x01\xbd\x00\x16\x00?\x00\x00\x012\x16\x0f\x01\x0e\x03+\x01\"\a\x06\a\x06'&5\x11463\x056&+\x01\"\x06\x15\x11\x14?\x01>\x01;\x012>\x017676&+\x01\"&=\x014>\x02;\x012>\x025\x01C\x1d\x14\a0\x02\x04\t\x11\rS\x04\x03\x02\x81\r\x14\x12\x19\x19\x01\x01\x01\b\a\xdb\a\t\x02Y\a\t\vI\x05\a\x04\x01\x04\a\x02\n\aZ\t\v\x03\x05\b\x04j\x03\x06\x05\x03\x01\xbd !\xf3\t\b\x10\a\x03\x03\x95\x0f\b\a\x17\x01\xb2\x11\x1dJ\a\v\v\x06\xfe\xad\x02\x02l\b\x05\x05\x06\x02\x16%\a\v\f\t\r\x04\b\x05\x03\x03\x03\x05\x03\x00\x00\x00\x03\xff\xff\xff\xe0\x01\xc0\x01\xa0\x00\x12\x00#\x005\x00\x00\x012\x16\x15\x11\x14\x0e\x01#!\"&54=\x01463\x1354&+\x01\"\x06\x1d\x01\x14\x1e\x01;\x0126754&+\x01\"\x0e\x01\x1d\x01\x14\x1e\x01;\x0126\x01\x88\x17!\x0f\x1a\x0f\xfe\xb0\x17!!\x17\x8d\x10\vS\v\x10\b\f\aS\v\x10\xc1\x10\vQ\a\r\a\b\f\aQ\v\x10\x01\xa0!\x17\xfe\xb0\x0f\x1a\x0f!\x17\xab}(\x17!\xfe\xad\xfe\v\x10\x10\v\xfe\b\f\a\x10{\x8e\v\x10\b\f\a\x8e\b\f\a\x10\x00\x00\x00\x02\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x1b\x00\x00\x122\x16\x14\x06\"&4\x05>\x02&'&\x06\a\x0e\x01'.\x01\a\x0e\x01\x16\x1f\x01\x91Α\x91Α\x01k\x03\x05\x01\f\v\x17!\f\f&\f\f\"\x17\x0e\n\x06\x05q\x01\xb8\x91Α\x91\xceQ\x05\x10\x15\x16\b\v\t\x0e\r\x01\x0e\x0e\t\v\n \x17\a\x99\x00\x00\x00\x00\x01\x00\x12\x00 \x024\x01`\x00M\x00\x00\x01\x0e\x02\a\x06\x14\x170\x1e\x04\x17\x16+\x01\".\x03'&#\"\x06\x15\x16\x15\x14\x06#\"&'.\x0254;\x012\x16\x17\x1e\x01326=\x01.\x0354>\x01;\x012\x1d\x01\x1427>\x01?\x016;\x012\x02!\x03)\"\x01\x06\x06\r\x12\x16\x13\x0f\x03\a\x1b;\a\n\f\n\x14\n(\x13\f\x04\x01\x10\x1b/`$\"-\x0e\x14;\v\v\x04\x15=\x10\x06\x05\x01\b\b\a\x04\a\x04]\x10\x13\x12\x13$\t\t\a\x12;\x18\x01J\x0fD3\x01\t\b\n\x0e\x12\x18\x17\x18\b\x19\x04\n\f\x16\n&\x0e!\x10\n\f\v84.[0\n\x11\n\r=`\t\rW\x0e\x14\t\n\x04\x04\x06\x04\x16t\x11\x12\x15<\x14\x13\x11\x00\x00\a\x00\x00\x00\x01\x02\t\x01\xa8\x00\r\x00&\x000\x00>\x00J\x00T\x00\\\x00\x00\x016&\a\x06&676\x16\a\x0e\x01&\x03\"&547676\x17\x16\a\x0676\x16\a\x06\x16\x17\x16\a\x06\a\x066.\x01\a\x0e\x01\x1e\x0176\x136\x1e\x01\a\x06&76&\a\x06&6\x03\x0e\x01'.\x017>\x01\x17\x1e\x01'&\x06\a\x06\x1e\x01>\x01&7&\a\x06\x17\x1676\x01\x97\x06\x19\x12\v\f\x05\n&3\f\x03\x13\r\xbdU\x82LH<,\x03\x01\x06\x03\x0f\x017\x13\"'>\x017\x1e\x01\x17\x067.\x03=\x01\x1e\x01\x15\x14\xd6RB:6^:)?8-?\v\v?-7\u007f!6'\x16Xv\x01\x17R\x85 EZ=iE\n\xfe\x14\x1e\x1cQ..Q\x1c\x1eX\x0f3?M)\x9d\x0f\x8a\\Z\x00\x00\x01\xff\xff\xff\xca\x01\x80\x01\xb6\x00R\x00\x00%\x0e\x02&/\x01\x0e\x01#\"43267\x0e\x01.\x01'>\x01\x1e\x02\x1767\x0e\x01\".\x05'6\x1e\x02\x1f\x0165.\x0367\x1e\x02\x06\x0f\x01\x1c\x01\x154>\x042\x17\x0e\x03/\x01\x06\a>\x03\x16\x01\x80\x0f21-\x0e\x0e\x1fa9\f\f0Q\x1d\x13%/,\x0f\x1f7%\x1f\x11\a\x0f\a\x02\x06\x13\x13\x1a\x17\x17\x12\f\x02$4#\x15\x04\x05\x03\x04\x0e\x1d\x0f\x05\x13#&\x05\x05\x06\x05\x04\r\x0f\x18\x1a#\x13\x01\x1e*)\x0e\x0e\a\r\x03\r&&7\x87&'\x02\n\b\a>H\x18;3\a\x04\t-'\r\x06\n\x15\x15\f$,\x01\x01\x01\x04\b\x10\x14\x1f\x14\r\x06\x1c\x1f\r\f\"\x13\x03\v$$6\x1a\r*+(\f\r\x01\x19\a\x02\x06\x11\x0f\x10\b\a%2\x11\x06\x02\x02)%\x04\f\x17\v\n\x00\x00\x04\x00\x11\xff\xc0\x01\xaf\x01\xc0\x00\f\x00\x10\x00\x14\x00\x1e\x00\x007!\x15\x14\x06+\x01\a5#\"&=\x02!\x15%5!\x15'2\x16\x1d\x01!5463\x12\x01\x9c&\x1b\x13W\xb0\x1b&\x01\x9c\xfed\x01\x9cA\x1b&\xfed&\x1bt\x16\x1d'ZZ'\x1d-UUnUU\xc7(\x1c\x16\x16\x1c(\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x004\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x056'&\a6\x16\a\x06\a\x06&'.\x01\a\"\x0e\x03\a\x17632\x1e\x02\x17\x16\x17\x163276\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01P\x032B\x18\x0f!\x03\x01\x14\x1b\x18\x10\x04\x17\x13\x06\x10\x15\x0f\x1d\a\x0f\x15\x04\a\n\f\t\b\a\x04\x13\x1c-A@\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x96?\x01\x03N\t\t\x16\x10 *\x1ef\x1c\x19\x02\b\x11\r\x1a\x06\x13\x0f\f#\x1c!\x19\x0e3TR\x00\x00\x00\b\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\b\x00\x14\x00\x1d\x00+\x004\x00B\x00K\x00W\x00\x007\x14\x06\"&46;\x01\x17462\x16\x1d\x01\x14\x06\"&5\x13\"&462\x16\x1d\x01\a2\x16\x14\x06+\x01\"&54>\x013\x05462\x16\x14\x06+\x01'\x14\x06\"&=\x014632\x1e\x01\x15\x032\x16\x14\x06\"&=\x017\"&46;\x012\x16\x14\x06#^\x1c&\x1c\x1c\x13/\x18\x1b'\x1c\x1c'\x1b/\x14\x1b\x1b'\x1c/\x13\x1c\x1c\x13v\x13\x1c\r\x15\r\x013\x1c&\x1c\x1c\x13/\x18\x1b'\x1c\x1c\x13\r\x16\f/\x14\x1b\x1b'\x1c/\x13\x1c\x1c\x13v\x13\x1c\x1c\x13\x85\x14\x1b\x1b'\x1c/\x13\x1c\x1c\x13v\x13\x1c\x1c\x13\x013\x1c&\x1c\x1c\x13/\x18\x1b'\x1c\x1c\x13\r\x16\f/\x14\x1b\x1b'\x1c/\x13\x1c\x1c\x13v\x13\x1c\r\x15\r\xfe\xcd\x1c&\x1c\x1c\x13/\x18\x1b'\x1c\x1c'\x1b\x00\x00\x00\x00\x06\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\x05\x00/\x007\x00A\x00I\x00Q\x00\x00\x1b\x01.\x0154\x05\x14\x0f\x01'76&\a\x06#'&\x06\x163\x163\x17\a'76&\a\x06#\"#>\x0132\x17\"#\"\x06\x15\x14\x17\x16\a\x17\x16\x17\x06#\"'\x13\x16\x15\x14\x06\a76546\x14\x06\"&462\x124&\"\x06\x14\x162>e6B\x01e\x10\x16L\x18\b\x01\t\"\x168\x06\x05\x04\x05\v\f!/M\x18\t\x02\b#\x16\x06\b\x1d^7S=\x02\x01\x0f\x15\x15\x12\x8cA\x01\x01#$\x1e\x1e\xf7\x1a:0A\x10<\x91Α\x91Ά\x8bċ\x8b\xc4\x01\x17\xfe\xea\x1ag>-\"\x114G\xe5\x02\x01\x11\x01\x02\x02\x01\t\t\x02[\x8c\xe7\x02\x01\x11\x01\x02,48\x17\x0f\x10\"\x1e:\xb3\x01\x02\f\t\x012/7:b\x1c\xbc($\f\vΑ\x91Α\xfe\xa6ċ\x8bċ\x00\x00\x00\x00\x02\x00\x00\xff\xf0\x01\xc0\x01\x90\x00\x11\x00\x1a\x00\x00%\a.\x015467\x15\x0e\x01\x15\x14\x16\x17\x117\x117'7&'5\x16\x177\x01\x10DWumS7EM:D\xb1\x83%\x1e(E3#\x10 \bR85Q\n+\t8$&:\a\x01T!\xfe\x80\x8d\x1d\x14\x12\a+\b\x1f\x13\x00\x01\x00\x15\xff\xc0\x01\xab\x01\xc0\x00\x1c\x00\x007\x17&#\"\a7.\x05'\x16327\x16\x17>\x027\x16327\x06\xfc\x04\x17\t\t\x18\x04\v \x18 \x1b \x10\x0f\x13\x10\x12 g\t;/\x14\x0f\x12\x13\x0f%\x9c\xdc\x04\x04\xdc\x139*7-3\x17\x04\x049\xa9\x0f`O$\x04\x044\x00\x00\x00\x01\x00\x00\xff\xc8\x01\xe8\x01\xb8\x00\x1c\x00\x00%\x14\x06#\"&4632\x17\a.\x01\x0e\x01\x15\x14\x1632>\x027#53\x16\x01\xe8\x85kg\x91\x91gaEC YM7Z@#7\x1f\x11\x03\x8d\xec\x04\xbaj\x88\x91ΑAA\x1f\v!M2A\\\x17#\"\x0fV\x16\x00\x05\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\b\x00\x10\x00;\x00I\x00U\x00\x006\"&5462\x16\x14$\x14\x06\"&462\x17\"\a&'7\x17\x14\x16264&#\"\a'&\x0f\x01\x06\a&#\"\x06\x16\x17\x06\x15\x14\x1632>\x0254'>\x01&\a6\x17\x16\a\x06\"'&76\x17\x1e\x0172\x16\x15\x14\x06\"&54>\x01\xd4\x15\x0e\x0e\x15\x0e\x01\x16\x91Α\x91\xce\r\x0e\n$2\x118\x0e\x15\x0e\x0e\v\x0f\a=\x05\x02\x132$\t\x0f\x10\x13\x06\x0f\x02N6\x1b1$\x14\x01\x0f\x05\x13U\x04\x04\x05\x05\x11L\x11\x05\x05\x04\x04\rC\x15\v\x0e\x0e\x15\x0e\x06\f\x8e\x0f\n\n\x0f\x0f\x14\x8aΑ\x91Α\xcf\n\x19\x02N\f\v\x0e\x0f\x14\x0f\x0e\x0e\x01\x06V\x02\x19\n\x18\x1f\b\a\b(7\x0f\x19$\x13\b\b\a\x1f\x18t\x04\x04\x05\x04\x11\x11\x04\x05\x04\x04\r\x01Y\x0f\n\n\x0f\x0f\n\a\v\a\x00\x00\x00\x05\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\r\x00\x19\x00%\x005\x00`\x00\x00%\x16\a\x06\"'&76\x17\x16276'\x14\x06#\"&54632\x1672\x16\x15\x14\x06#\"&5467\x11\x14\x06#!\"&5\x11463!2\x16\a\"\a&'7\x17\x14\x1e\x013264&#\"\a'&\x0f\x01\x06\a&#\"\x06\x16\x17\x06\x15\x14\x1632654'>\x01&\x01\x1b\x05\x05\x12R\x12\x05\x05\x04\x05\x0eH\x0e\x05W\x10\v\v\x0f\x0f\v\v\x10[\v\x0f\x0f\v\v\x10\x10\xb0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1cd\x0e\v'6\x13;\b\f\a\v\x10\x10\v\x10\bB\x05\x02\x146&\v\x0f\x12\x15\a\x10\x02T:;S\x02\x10\a\x15f\x04\x05\x12\x12\x05\x04\x05\x05\x0e\x0e\x051\v\x0f\x0f\v\v\x10\x10\x10\x10\v\v\x0f\x0f\v\v\x10\xb9\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xa1\n\x1b\x01U\x0e\a\f\a\x0f\x16\x10\x0f\x0f\x01\x06]\x02\x1b\v\x1a!\b\b\t*<<*\n\a\b!\x1a\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00%\x009\x00\x00\x122\x16\x14\x06\"&4\x162\x16\x1d\x01\x17754&\"\x06\x1d\x01\x14\x06\"&=\x01#\x15\x14\x16326=\x014\x1705#\x15\x14\x06\"&=\x01\a'\x15\x14\x1632>\x01\x99Α\x91Α\xf1\x0e\v\x17\",>,\n\x0f\n:,\x1f\x1f,\xba:\n\x0f\n\"\x17,\x1f\x14#\x14\x01\xb8\x91Α\x91\xce!\n\a\x15\n\n\x17\x1e+*\x1el\b\n\n\b-.\x1f,+\x1fk\aq.0\a\n\n\a/\n\v/\x1f+\x14#\x00\x02\x00\x00\xff\xff\x01\xf7\x01\x80\x00\x10\x001\x00\x00%\x15\x14\x06\"&=\x01\x177\x15\x14\x1626=\x01'54&\"\x06\x1d\x01\x14\x06#\"&=\x013\x15\x14\x1632>\x02=\x01462\x16\x1d\x01\a\x01\xf7B]B\"4\x0f\x16\x10\x8b\x0f\x17\x0fB/.BV\x10\v\x05\n\a\x04C[C4\xb6F.BA.F\x10\x10G\v\x0f\x0f\vH:\x1f\v\x10\x10\v\xa0.AB.FE\v\x0f\x04\a\n\x05\xa3-?@-$\x0f\x00\x00\x02\x00\x00\xff\xdf\x01\xc1\x01\xa0\x00%\x003\x00\x00\x01\x16\x15\x11\x14\x06#!\"'&'&'.\x025\x11463!2\x172\x16\x17\x1e\x01\x17\x16\x17\x16\x17\x16\x17\x16\x035#5#\"\x06\x1d\x013\x15326\x01\xbe\x02\x1c\x14\xfe\xa0\x06\x06\v\t\x02\x02\x03\x06\x03\x1c\x14\x01`\x06\x06\x03\x05\x03\x02\x04\x01\x04\x03\x03\x02\x02\x01\x01\x1e\xc0\xb0\a\t\xc0\xb0\a\t\x01|\x05\a\xfe\xa0\x14\x1c\x01\x03\b\x02\x02\x04\n\f\x06\x01`\x14\x1c\x02\x02\x02\x01\x03\x01\x03\x04\x02\x04\x04\x04\x03\xfe\x93\xb0\xc0\t\a\xb0\xc0\t\x00\x00\x00\b\x00\x00\x00 \x02\x00\x01`\x00\x05\x00\t\x00\x11\x00\x15\x00\x1d\x00!\x00%\x00)\x00\x00\x1353\x15#5\x175#\x15%3\x15#535#75#\x15\a53\x15#535'\x1535'3\x15#\x153\x15#R3\x85R\x1f\x01H\x85\x85RRR\x1fͅ\x85R\x1f\x1f\x9a4444\x01\x14L\xfb\xaf\x86]]\x86\xf4)\x1c)]])\xaf\xf4)\x1c\x86]]u3\x19\xaf\x00\x00\x00\x00\x05\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\t\x00\x13\x00#\x002\x00B\x00\x00\x12\x14\x06#\"'5632\x172\x16\x14\x06#\"'567\x11\x14\x06#!\"&5\x11463!2\x16\x052654.\x01#\"\a#\x1575\x1e\x014&#\"\a\x06\a\x06\a\x1575\x1632\xcd\x12\r\v\a\a\v\rG\r\x13\x13\r\v\x06\a\xc8\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xf9\x1f+\x14\"\x14\x12\x11-3\x0e\xad+\x1e\x06\x04\x06\r\x16\x1e4\f\x10\x1f\x01!\x1f\x17\x04D\x04i\x16\x1f\x17\x04D\x04\xa2\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xc3/ \x16%\x15\t\xce\n3\x05:B.\x01\x13\x0e\x17\x02\x9c\n3\x05\x00\b\x00\a\xff\xb9\x029\x01\xc0\x00\x06\x00\x12\x00@\x00D\x00\xb6\x00\xba\x00\xbe\x00\xcb\x00\x007\a'2632\x172\x1e\x03\x17\x06/\x01>\x01\x03&\x06\a67>\x037\x1e\x027\x15367>\b?\x01\x06\a\x06\a\"\x0e\x03\a\x1e\x01\x15\x14\a&7\a\x155\x03\x1e\x02\x17\x0e\x02\a.\x03#\x06\a\x16\x17\x1e\t\x1d\x01\x16\a&\x06'<\x017465&\a\x0e\x01#\".\x02'&'\x06#\"&54?\x01.\x01>\x0232632\x17632\x16\x0f\x01\x15\x14\x1632654.\x02547'6'632\x1e\x03\x177\x0e\x02\x1d\x016\x1e\x03\a3\x17\a'7\x17\a\x17>\x023\x161\x14\x0e\x03#\xf4\x1c\x01\x03\f\x04\x05\x8d\x03\a\t\x06\a\x0137\a\v6\x18\x03I\x17\b\x12\n\x12\b\x14\x03\x04\t\n\b\aG#\b\r\f\a\n\x04\n\x03\f\x03\x02\x01\f,g\x03\b\b\b\a\x03\x01\f\a\x12\xd2\x01;\n\x1a\x11\x14\x0e#,\n\x12\x15\t\"\x1e\x03\x02\x02\x02\x02\t\x04\x06\x03\x04\x02\x03\x01\x01\x01\v\a?\b\x01!\a\x06\n,\x11\x06\x15\x14\x17\x06\x02\x06\x89\v\x04\a\t\x8c\x02\x02\b\x05\v\x01\x01\a\x01\t\x050\x02\v\x02\n5/\x06\x0e)\r\x10\r\x02\x13\x10\x05\x17\x12\x12\x12\r\x03\n\x04\x0e\x01\x12\x10\x16'\x1d\x1d\x13\xb8\t\x03\fE\x0e\x1f\x14<\a\x16\x12\f\x01\n\x10\x0f\x10\x01\xca\x06\x05\x04\xc9\t\x10\f\x11\x01\x13\t-\b\f\x01\v\x04\x03\v\x0f\a\x03\x0e\b\x17\x03\x03\r\b\x01\x16\x1b\x1b\a\n\v\a\r\x04\x11\x05\x16\x04\x03\x10\x18\\\x19\x02\x01\x01\x03\x02\x05\x0f\x02\x04\x05\x14\xb3\x01\x01\x01\xfe\x83\x10\x1f\x0f\x12\t\x10\x11\x05\x0fPK<\x01\x01\x01\x03\x02\a\x03\x06\x03\x06\x04\a\a\b\x06\t\r3\x01\t\x05\x06\x1b\t\x03!\a\x01\b\x0f\x1b\x18\x1c\x1e\x04\x02\a \x06\x05\n\x02\x1e\x05\x06\x05\x02\x02\x04\x0e\n\x14\x02\f\x04\b4.\x0e\n\n\x01\x05\a\x05\x05\x06\x10\"\x05\x02\n\a\x1b\t\a\x0e\n\x02\x05\x06\x01\r\x14#\x1bC\x18\x03\xb1\x043\x0e^\x01\x04\x02\x05\x02\x04\x03\x03\x02\x00\x00\x00\x00\x04\x00 \xff\xe0\x01\xa0\x01\xa0\x00\x18\x00(\x00:\x00T\x00\x00\x01\x1e\x03\x15\x14\x06#\"&54>\x0276767\x16\x17\x1e\x01\x136'&\a\x06#\"&/\x01\"\x06\x17\x166'\x0e\x01\x17\x167632\x1e\x0276&'&\"\x17\x1676'&#\"\x06#\".\x01#\"\x0e\x01\x16\x17\x16>\x02\x172\x16\x01@\t\x18&\x19pNNt\x1a&\x1c\t(\r\x13\x03 \x0f\v+\r\x05\x04\x02\x03\x13$\x0f\x1a\x05\x05\x05\x05\x03\x15P&\b\x13\x04\x03\t\x0e\r\t\n\x02\x03\x02\x06\a\x05\x05\x19V\x17\r\x0f\x10\a\f\n=\v\n\"+\x15\x18#\x0e\a\x0e\x133(*\t\n0\x01M\x05\x16,E'RhmQ%D*\x17\x05\x16\v\x0e#&\n\a\x14\xfe\xb4\x05\x04\x01\x02\x0e\a\x03\x04\t\x03\x12\x06D\x03\x10\x06\x03\b\v\x06\a\x04\x01\x05\x10\x03\x04\x14\x02%*\x15\b*\x18\x19\x1a\"$\n\x0e\n\x17\x18\x011\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa1\x00\x18\x001\x00J\x00e\x00\x00\x134632\x16\x176\x17\a&\"\x06\x14\x1f\x01\a.\x01'.\x017.\x01\x1767>\x01\x17>\x0132\x16\x15\x14\x06\a\x16\a'64&\"\a\x06\a\x17\x1e\x01\x15\x14\x06#\".\x01'\x06&'7\x16264/\x017\x16\x17\x16\a\x0e\x01\a\x06'\x0e\x02#\"&5467&7\x17\x06\x14\x17\x162767\x01#\x18\x17!\x046*,\x11\x1c\x15\nd,3!\x10\x14\r\b\x14\x1a\x81V\x0e\x136\x19\x03\"\x17\x18#\x1e\x16\x10-,\x0f\x16\x1e\v\nZ\xde\x16\x1e#\x19\x0e\x19\x11\x03\x199\x14,\x10\x1c\x16\vd-[\b(b0'\f(7\x03\x10\x19\x0e\x19#\x1a\x14\x0e,,\x0e\n\v\x1f\nY\v\x01d\x19#\x1d\x15\f*,\x0e\x16\x1e\vd,2\"\x10\x136\x1a\x04!_U\x0e\x14\r\b\x16\x1e#\x19\x17!\x048--\x10\x1c\x16\v\nZl\x03!\x17\x19#\r\x16\r\b\x0e\x16,\x0e\x16\x1e\vd,[\t(\x010'\f(\x0e\x0e\x15\f#\x19\x15!\x047,-\x10\x1c\v\v\vX\f\x00\x00\x06\x00\x00\x00\v\x02@\x01u\x00\v\x00\x12\x00\x19\x00\x1d\x003\x009\x00\x007\x16\x15\x14\x06+\x01\x1132\x15\x14'\x153254#\x17254+\x01\x15%#53\x17\x14\a#\x14\x1632>\x0173\x06#\"&54632\x16\a3&#\"\x06\xe8AH5\xac\xa7q\xcaO/5\n:8U\x01\xba\x90\x908\x01\xb9!\x1e\v\x17\x13\x03>\x1c\\\x017\x11\x14\x06#!\"&5\x11463!2\x16\a35#\a4'654+\x01\x1532674&\"\x06\x15\x14\x1e\x02327#\x0e\x01#\"534\xba\x1f-.\x1e\a\x1a+(\x1d\x84\x1c\x03?\x01\x11\x97\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xb0NN+#\x1a>Z]\x1d'\x97$?(\n\x12\x1b\x102\x10\"\x03\x12\t\"d\x9b\x1947\x17--\x1e\x0e\x10\x9a\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c}\x13\x81)\n\r\x180\xc0\x1c+ +* \x10\x1b\x13\v/\b\n#\a\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00!\x002\x00:\x00B\x00\x00%\x14\x0e\x01#\"&'\x17\x1e\x01326'7\x16654&\"\x06\x1d\x01\a&\a'>\x0132\x16\x05\x16>\x01&/\x016\x17\x16\x17\x16\x0e\x01'&'6\"&462\x16\x14\x06264&\"\x06\x14\x01\xf0BsCU\x84\x16_\x05&\x1a\x1d*\x01T(87M7;\x18\x14\x85\b\x8ebg\x91\xfe\xac\x0f\x1d\r\r\x0e \x14\x13\x14\t\b\x11(\x15\x12\t\xe63%%3%R'\x1b\x1b'\x1b\xc0CsBeO'\x18 +\x1e<\x018''66'\x01V\x01\r7`\x84\x91\xe7\x06\f\x1e\x1d\x06\r\b\b\t\x14\x14(\x11\b\b\x12v$4$$4\x15\x1c&\x1c\x1c&\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x006\x00>\x00I\x00\x00>\x01&/\x016\x17\x1e\x01\x0e\x01'&'\x17\x16\x132\x16\x15\x11\x14\x06#!\"&=\x01\x17\x1e\x02326'7\x16654&\"\x06\x1d\x01\a&\a'5463\x04\"&462\x16\x14\a264&\"\x06\x15\x14\x1e\x01\xb3\f\v\x0e\x1e\x12\x12\x13\x10\x10&\x13\x11\b\x1d\x0e\xf8\x14\x1c\x1c\x14\xfe\xa0\x14\x1cY\x03\x12\x1c\x10\x1b'\x01O%53I38\x16\x12u\x1c\x14\x01\x140\"\"0#;\x13\x19\x19%\x1a\f\x14N\x1b\x1c\x06\f\a\a\b&&\x0f\b\a\x11\f\x06\x01^\x1c\x14\xfe\xa0\x14\x1c\x1c\x14q%\x0f\x18\x0e(\x1d8\x014%$33$\x01Q\x02\r0\xa1\x14\x1c\xde\"0\"\"0\x14\x1a$\x1a\x1a\x12\f\x14\f\x00\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x19\x00.\x00C\x00\x00\x122\x16\x14\x06\"&4\x052654'&\a\x06\x15\x14\x163276\x17\x1672654'&#\"\a\x06\x15\x14\x163276\x16\x17\x1672654'&#\"\a\x06\x15\x14\x163276\x16\x17\x16\x91Α\x91Α\x01]\x06\t\n`\x8d\r\b\a\x02\n|S\x06 \b\v\vMd20\x10\f\b\x02\n?\u007f0\b$\t\x0e\rR{B4\x11\r\n\x03\n<\xa85\x06\x01\xb8\x91Α\x91\xce\xdc\t\x06\v\x069\x1f\x03\x0e\x06\t\x02\x1a2\x04B\v\b\r\a-\r\x05\x10\b\v\x02\x10\x11\x1c\x04L\r\n\x0f\b0\x10\x05\x12\n\x0e\x02\x12\x10\x1f\x04\x00\x00\x00\x00\x01\x00\x00\xff\xc0\x01@\x01\xc0\x00\x14\x00\x00\x01\a\x173\x15#\x0f\x010\a#57'#53?\x023\x01@b\a[\xa1\r,\t]]\aV\x9c\x0e+\tb\x01c\xb3\n\x80\tT\t]\xb4\t\x80\tT\t\x00\x00\x0e\x00\x00\x005\x02\x80\x01K\x00\v\x00\x17\x00#\x00-\x009\x00D\x00N\x00`\x00u\x00\x80\x00\x93\x00\x9f\x00\xab\x00\xb6\x00\x007\x17\a\x14#\"5'743272\x15\x17\a\x14#\"5'7472\x15\x17\a\x14#\"5'74\x062\x1f\x01\a\x06\"5'?\x012\x1f\x01\a\x06#\"5'7462\x15\x17\a\x14#\"5'762\x15\x17\a\x14\"5'?\x01\x16\x15\x17\a\x14#\"5/\x017547632\a\x16\x15\x17\a\x15\x14\a\x06#\"'&5'?\x014762\x062\x1f\x01\a\x06#\"5'7\x052\x16\x15\x14\x06+\x01&=\x0147632\x16\x176%2\x15\x17\a\x14#\"5'74'2\x1f\x01\a\x06#\"5'74\x162\x15\x17\a\x14#\"5'7o\x06\x06\x04\x04\x06\x06\x04\x04\x16\x05\x05\x05\x05\x05\x05\x05\x1e\x06\x05\x05\x06\x05\x05\x05\x94\x04\x01\x05\x05\x01\x04\x05\x05\x1a\x02\x01\a\a\x01\x02\x03\x06\x06\x19\x06\a\a\x03\x03\x06\x06\x19\a\a\a\a\x06\x06\xf5\x04\x04\x04\b\t\x02\x02\x04\x03\x02\x04\x02\x19\x04\x03\x03\x03\x02\x03\x04\x03\x01\x03\x02\x01\x03\x03\x04s\v\x01\x05\x05\x01\x05\x06\x05\x05\x01~!..!\xda\t\b\x18\x1a7O\x05\x0f\xfe\xe7\a\x04\x04\a\b\x03\x03.\x06\x01\x04\x04\x01\x06\x06\x04\x04\x1a\x0e\x04\x04\a\a\x04\x04\xc0AE\x04\x04EA\x04)\x05iE\x05\x05Ei\x05\x18\x05\x82D\x05\x05D\x82\x05`\x03##\x03\x03##\x19\x0399\x02\x0389\x03\v\x03DB\x03\x03BD\x05\x03FD\x04\x04DFr\x02\x05\xb2@\b\b \xb1\x01\x04\x03\x02\x11\x02\x05\xa3:\a\x03\x02\x03\x03\x02\x03B\xa1\x01\x05\x02\x01\x18\x06\x8cC\x06\x06C\x8c8/ !.\x01\t\xf9\a\x03\tI6\a<\b\x89A\b\bA\x89\b\b\a\x91C\a\aC\x91\a\x04\a\x8dC\a\aC\x8d\x00\x00\x00\x01\x00\x00\xff\xde\x01\x82\x01\x9c\x00+\x00\x00%\x15\x06#\x0e\x02'.\x04'3\x1e\x01\x1767.\x0154632\x1e\x01\x06\a\x0e\x01&'654#\"\x06\x15\x14\x16\x01\x80\x1b\x19\x19O*\x16\v\x1b+%$\nJ\r;+-\x1f%+7/(0\n\x06\n\x06\x10\"\b\b\x1c\x0e\x11L\xc14\x064\\\x18\r\x06\x18;K~Km\x8b5,>\x13N12A)<:\x16\x01\x02\n\r\x1b\x16.\x1a\x18:9\x00\x00\x00\b\x00\x00\xff\xbc\x02\x01\x01\xc4\x00\x11\x00\x15\x00\x19\x00\x1c\x00 \x00$\x00(\x00+\x00\x00\x01\x16\x1d\x01\x14\x0f\x01\x06/\x01&=\x014?\x016\x1f\x01\x15\x177'\a\x177\a\x157\x175'\a?\x01'\a\x177'\a75\a\x01\xf6\n\n\xea\f\f\xea\n\n\xea\f\f\n_MجM_\xbe7\x87_M\xc2NNNd\xacM_\xbe7\x01 \x06\f\x9c\f\x06\x9c\b\b\x9c\x06\f\x9c\f\x06\x9c\b\b;g?3ss3?5J%\xc1g?3\x1a444\xc1s3?5J%\x00\x03\xff\xff\x00\x00\x02A\x01\x82\x00$\x00I\x00\u007f\x00\x00%\x1e\x01\a\x0e\x03#\x06#\"'.\x01'&676'&76\x170\x1767>\x01\x1e\x01\x17\x16\x17\x16\x176&'&5.\x04\x06\a\x06\a\x0e\x01*\x01&'&\a\x06\x17\x16\a\x0e\x01\x17\x163\x165236'\x0e\x01#\"'.\x01'&\a\x0e\x01\x1e\x0167>\x0176\x16\a\x0e\x01'.\x015676\x17\x1e\x01\x17\x16676.\x02\a\x0e\x01\a\x06&76\x17\x1e\x01\x01\xff\"\x1f\t\x04\x14\x1c$\x14#\xd9J\x11$;\n\v\x17\x1d\x06\x01\x06'&/\b\x19(\"MD7\r\x04\x05\x01\x1b\x1d\x15+\n\x01\x15\"/26\x17(\x15\x02\x04\x05\x02\b\x01&\"#\b\x03\r\x1d\x13\x0e\x1bD\xa4\x9a\x10+;\x04'\x18\x19\x13\bI\x0f\x1e\x1e\x0e\x06\x0f\x18!\x0f\x02\b\x03\x06\f\x05\r,\x16\x16\x1b\x03!%\x1e\x1aB\x0f\x13'\v\n\b\x1c$\x11\x01\b\x02\b\t\x04\"1\x18\x18\xd3\x13D$\x13 \x17\r\x01\x01\x01.\"#C\x17\x04\x051\x1c\x1c\x13\x04)\x17\x13\x05\x196%\t(\b\x9f$X\x14\x05\v\x1e6%\x19\t\t\r\x16(\x04\x04\x05\x01\x14\x17\x18'\x0f\b\x13B\x1f<\x02\x02\x01s\x17 \x12\aL\n\x17\x1b\f!\x1b\x13\x01\r\x02\t\x02\x05\a\t\x13\x11\a\a&\x19&\x12\x15\x17\x14H\t\f\n\x13\x12%\x15\x04\x11\x01\t\x01\x05\n\x05/\x13\b,\x00\x00\x00\x01\x00\n\xff\xc8\x01\xf5\x01\xb8\x00[\x00\x00\x05\"&7>\x01721\x0e\x03\x16\x17\x1e\x02>\x02?\x01>\x02.\x02/\x01.\x01/\x017\x1e\x03\x1f\x016&/\x017\x17\x0e\x01\a\x15>\x05?\x01\x17\x0e\x01\x0f\x01\x0e\x01\x16\x17\x1e\x02>\x02?\x01>\x01.\x01/\x0165\x1e\x03\x17\x16\x06\x01\x00g\x8f\x03\x02<7\x01\x04\x13\x19\v\x11\x1c\n\x15\x11\x10\f\t\x02\x03\b\b\x01\x03\x05\x06\x02\x02\x04\x17\t\n\x1d\a\x0e\n\b\x02\x02\x01\v\x06\x06-,\t\v\x01\x02\b\b\t\a\x06\x01\x02\x1d\r\x16\x06\x05\b\n\x06\r\x06\x11\x10\x11\x0e\v\x03\x03\x1d\x13\x0e\x16\v\v\x01\x19\x1e(\x14\x01\x01\x888\x96h\x017\x15\"\a\x17\x06\a\x0567\x17\x0e\x01\a527'676\x14\x06\"&462\x124&\"\x06\x14\x162\x13\x16\x14\a'67'654'7&'\a\x17\x06\"'7&'\a&'7&47'67\x1767'632\x17\a\x16\x177\x16\x17\a\x16\x14\a\x17\x06\a'\x06\x01 \x10\x12:a\x1e\x10\n\n\x12)=\xe6\a\a\x10\x1b\x1b\x10\b\x06\x17\n\n\x89\x05\x13\x0f:b\x1d\x10\b\f\x12);\n\n\x10\x1ea:\x12\x10\x05=)\x01$\f\b\x10\x1db:\x0f\x13\x05=)o\x91Α\x91΅\x8aĊ\x8a\xc4c\x1b\x1b\x10\b\x06\x17\n\n\x17\x06\b\xa7\r\x0e\x1a\x0e\r\x19\x0f4\x12\t@\x03\x03@\t\x124\x10\x18\r\f\x0f\x0e\r\r\x18\x104\x12\t@\x03\x03@\t\x124\x10\x01\x8a\x03\x13\x0290\t\x10\v\x0f.\f\xf4\x11\x0f\t2991\t\x0f\x10\a\x1c\x1f\x1e\x1dw\x18\x03\x13\x0290\t\r\x0e\x10/\x01-\v\x10\t09\x02\x13\x03\x18\f.\xff\x0e\r\t09\x02\x13\x03\x18\f/\xdeΑ\x91Α\xfe\xa6Ċ\x8aĊ\x01W2r1\t\x0e\x11\a\x1d\x1e\x1f\x1c\a\x10\x10\xa9C\x03\x03C\x05\x12,\x15\x19\x16\f\x18\f\x16\x19\x15,\x12\x05C\x03\x03C\x05\x12,\x15\x19\x16\f\x18\f\x16\x19\x15,\x12\x00\a\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\n\x00\x12\x00\"\x00*\x00K\x00]\x00}\x00\x007\x16\x17\x1e\x01\x15\x14\x06&5472\x16\x06#\"&6%\x11\x14\x06#!\"&5\x11463!2\x16\a\x143254#\"\a#.\x01\x06\x15\x14\x17\x06\x15\x14\x17\x06\x15\x1432>\x0154&'\x1e\x01654'7\x17'\"=\x01#\a\x16\x17\x1e\x01\x1d\x01\x14\x06\a\x1537'\x0e\x01.\x01541535#\"545#\x0e\x01\a\x15232\x1d\x02\x14\x1632e\a\r\x19\x0e!!#\x0e\f\f\x0f\x10\f\r\x01O\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xe3\x17\x17\x17\x17\x161\x0f$\x1f\x16\x17\v\x0e@\x16\x1f\x10 0\t\x05\b\n!\x1f\t\x17U\r\x054\x03\x03\x04\a\x03\x03\x0eHe\a\x0e\x10\a\x01&$\x02\x18\x02\x0f\x11\x04\x06\n\x13\x17\x14r\x01\x01\x01\x03\x06\n\b\b\b\x06|\x16\x16\x16\x16\x8a\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1cY\x17\x17\x16D\x02\x01\x1a\x18\x1b\v\x15\n\f\x04\x0e\f \v\x14\x0f\x17\f\x03\x01\x0e\x01\x02\x17\x16\x0e\f\x01X\x02\x05i\x14\x01\x01\x03\x02\x03K\x04\x01\x02\x14\n\x16\x03\x02\v\x06\x04\x01=\x19\x10\r\n\x15\x13\x02\x16\x02\x01B\x16\x13\x00\x00\x00\x00\x06\x00\x00\xff\xf1\x02\x00\x01\x8f\x00'\x004\x00<\x00R\x00]\x00\u007f\x00\x00\x13\x15\a\x16\x15\x14\x0e\x02&'\a\x16\x17\x1e\x05\x15\x14\x06#\"547&5467&54>\x02\x1f\x014&'\"&\"'\x06\x15\x14\x166'26&#\"\x06\x16\x17527>\x04=\x014&'73\x15\x14\x163\x17\x15'\".\x015432\x15\x14\x06\x17\x06#\"&=\x024&\a\"#5>\x0373\x16;\x01\x15#\x150\x15\x14\x1e\x0267\xd8%\x0f\x14\x1c\"\x1b\n\r\b\x0f\x1c\x1a%\x0f\x11\x05:5f\x16\x11\x0f\x16#\x1d)-\x0f\x10\x16(\x06\b\r\x05\v453\x19\x13\x13\x18\x18\x15\x13\x9e\x05\x06\x06\x04\x05\x01\x01\x05\x17\x05T\x02\x05\x14?\f\x10\t%%\x14\xcf!!$\x1f\x04\f\t\a\x0e\x13\r\a\x02&\x02\x029=\x01\x06\v\x19\x12\x01\"#\x03\x13\x16\x16\x1f\x0e\x05\x02\x02\x15\x01\x01\x01\x02\x05\b\r\x13\r#&2\x15\x15\a\x14\n\x13\x14\x11,\x1d&\n\x03\x05\xf2\t\x05\x03\x01\x01\r\t\x0e\v\r\x95$##$d \x01\x01\x01\x01\x02\x02\x03w\x06\x03\b!\xa9\x05\x03\x03 \xf4\t\x10\f##\x12\x13\xe4\x11\x1f#j\x01\x03\x01\x01%\x01\t\x10\x17\x11>)a\x01\x05\b\x0e\x06\x01\x06\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00\x04\x00\x14\x00\x00\x11!\x11!7\x177#\x0e\x02\a.\x03'#\x17\x153\x01\xc0\xfe@\x15\xdaQ#\x18\x17\v\x02\x02\t\a\x17\x13%P\x1f\x01\xa0\xfe@\xfb6\x9b-/\x1c\x06\x05\x16\x110\"\x99g\x00\x00\x00\x02\x00\x15\xff\xbe\x01g\x01\xc0\x00\x10\x00-\x00\x00\x17\x16\x06'&67&632\x16\x15\x14\x06'\x06\x132\x16\x15\x14\x06'&6\x17\x16654&#\"\x0e\x02\x17\x16\x06\"'&>\x02H\x01\x1d\x01\t77\f \x1f\x16!;\x1ck\x88Eb{Q\x0f\a\x0e>jP9%>\"\a\x12\x04\n\x10\x04\x17\t'M0\x0f\x02\x0e_\xa19\x1b3!\x17!\x1f\x13s\x01DbENe\x11\x04\x1c\x03\x10RC9P$9G#\b\x0e\t(VG-\x00\x00\x00\x00\x01\x00\a\xff\xbf\x01\xb9\x01\xc0\x002\x00\x00$\x06.\x02/\x01\x14\x06\a\x1e\x03\a\x06\"'\x06\"'&67.\x015\x0e\x06'\"&6767&632\x16\a\x16\x17\x1e\x01\x01\xb5\x06\f\f\v\x04\x03\x1a\x19\b\x0f\x12\b\x03\x0fn##m\x10\x06 \x14\x19\x1a\x01\x02\a\b\t\b\a\x03\x03\x04\a\n\a!\x03QRQR\x03!\a\n\a\x1c\x01\v\x0f\x10\x06\x05\x197\x15\x03\x06\t\f\x05\b\x04\x04\b\n\x12\a\x157\x19\x01\x04\v\n\f\t\x06\x01\x130 \x19Q^yx_Q\x19 0\x00\x00\x00\x00\x06\x00\r\xff\xdf\x023\x01\xa0\x00\x14\x00\x1e\x00(\x006\x00G\x00S\x00\x00\x01\"\x06\x15\x14\x17\x06#\"'\a7&54632\x16\x17&'\"\x06\x14\x163264&\a264&#\"\x06\x14\x16\x05\x14\a\x17'\x06#\"&4632\x16\a2>\x0154.\x02#\"\x06\x15\x14\x1e\x0232>\x0154&#\"\x06\x14\x16\x01\x81E`\x06\n\b\x131D\x13NrQGq\f\tr\f\x12\x12\f\v\r\r\x94\v\x0e\x0e\v\v\x12\x12\x01\xaeD\x0f6(\x12F``FBc\xdb\a\v\x06\x03\x06\n\x05\a\f\x03\x05\ao\a\v\x06\x0e\n\a\f\f\x01\x18Z@\x14\x14\x01\t\";7ME`N;\x015\r\x16\r\r\x16\r0\r\x16\r\r\x16\r\x9c=40\x1d\nSuST!\x06\t\x05\x03\a\x06\x03\f\a\x04\a\x06\x03\x06\t\x05\a\f\f\x0f\f\x00\x00\x00\x04\x00\x01\xff\xb7\x01\xff\x01\xc0\x00\a\x00\x0f\x00F\x00^\x00\x00\x122\x16\x14\x06\"&462\x16\x14\x06\"&4\x176\x16\a\x06\a\x16\a\x06'&7<\x065\"&#\x1c\x06\x15\x16\a\x06'&7&'&6\x172\x16\x175463!2\x1e\x01\x1d\x01\a54.\x01#!\"\x06\x1d\x01\x1e\x01636\x17\x16\x176\x172\x166\xa23$$3$\xb43$$3%\xdb\v\f\a#G\x1e6\"(&\x01\x03\t\x02\x01&(\"6\x1fH#\a\f\v\x01\x05\x01\x1b\x13\x01g\f\x15\r\x19\b\x11\x10\xfe\xc3\x18\x11\x1fB)\x14\x13\b\n\n\x02 \x13*D\x01&!0\"\"0!!0\"\"09\b\x0f\v*\x1ef4!\v\n*\x01\x06\v\x0e\x11\x12\x13\b\x03\b\x13\x12\x12\x0f\f\x06\x01)\v\v!4g\x1d+\n\x0f\b\x03\x01\xc6\x15\x1d\r\x17\x0e\xc6\x0f\xbf\x10\x14\t\x13\x1a\xc1\x10\x0e\x02\x01\b\n\b\x1b\x02\x02\x0f\x00\x00\x04\x00\x18\xff\xc0\x01\xe8\x01\xc0\x00\x03\x00\a\x00\x10\x00\x18\x00\x00\x01\x15#5#\x15#5'!\x11\a#\a5#\x11\x055!\x113\x1573\x01\x87&D'}\x01o\xaeMat\x01\xa9\xfe\xcbWDM\x01Ynnnng\xff\x00\xa5[[\x01J\x93\xc9\xfe\xee@@\x00\x05\x00\x01\xff\xbf\x01\u007f\x01\xc0\x00\x12\x00\"\x003\x00F\x00V\x00\x007\x17\x16\x06\x0f\x01\x06#\"&'&547>\x0132\x17&54?\x016\x16\x15\a\x14\x06#\"#&7&6\x1f\x01\x1e\x01\x15\x14\a\x0e\x01\a\x06#\"'7\x16\x15\x14\x0e\x02\x0f\x01\x06&?\x01632\x17\x1e\x01%67232\x16\x1d\x01\x14\x06/\x01&54+d\x0e\x03\x10l\x02\x03\t\r\x01\x01\n\x02\r\a\x051\n\x06J\v\x1d\x04\x0e\t\x02\x02+m\b\x14\x0fi\a\t\x02\b\x1f\x0e\x06\t\f\aZ\x02\x03\x05\x06\x03k\x0f\x13\t>\a\f\t\x06\x0e\x1d\xfe\xc95;\x01\x01\n\r\"\th\x03\xd01\a \x04\x1a\x01\f\b\v\f \x1e\a\t\xf2\a\f\t\aR\f\f\x10o\t\r\b\x86\x0e\x19\x05\"\x02\r\a\x05\x05\x10(\v\x05\n\xe3\x05\x05\x03\a\x06\x05\x01\x1e\x05\x1a\x0e[\v\x06\f)\xbf\x19\x05\r\n\xd0\x12\t\x0f\xb5\x05\x06\x0f\x00\x00\x00\x02\xff\xff\xff\xdd\x01\x8a\x01\xa3\x00\"\x00K\x00\x007\x14\x0e\x04\a\x06+\x01\"&7\x13>\x013262\x1e\x02\x17\x1e\x01\a\x06\a\"&\x0e\x027\x16\a\x06#*\x03\x0e\x04\x15\x06\a\x06+\x01\"&76763:\x02>\x067676o\x04\x04\x04\x04\x04\x01\x01\x02K\x05\b\x01;\x01\v\b\x1cH\x19$\x0f\x12\n*\x14\x12\x1fm\b\x1f\v\x11\a\xf4$\f\x16y\x01\a\x02\x06\x02\x04\x02\x03\x02\x0e\x01\x03\x0e@\x05\x06\x01\x04\x17\x01\n\x01 \v \x10\x1e\x12\x19\x10\x11\x06\x06\x03\x01\x98\x04\x15\x19\x1d\x1a\x17\x06\x02\b\x06\x01s\b\t\x01\x01\x03\x04\x04\x11O,Y\x02\x01\x01\x04\v\x87\x1bBp\x01\x02\x03\x04\x06\x04W\x04\x0f\b\x05\x1e\x8c\t\x02\x04\a\v\x0f\x15\x1b\x11\x12\x10\x03\x00\x04\x00\x06\xff\xe0\x01\xb8\x01\xa0\x00\n\x00\x15\x00\x1b\x00)\x00\x00\x13\x16\x17\x06\a&'>\x01&4\a2\x17\x16\x17#&'&6373\x16\x17#&\x13\x16\x15\x14\a&'&'&6;\x012\x9d5\x1f\f\x13\x19\x1f\x02\x02\x010\b\x057\x1ch\x1f<\x03\x04\x05\x8dm~\x11r\n|\x1f\x19\x11J\x06\x14\x01\x04\x04Y\f\x01AUM21c2\r\x1e\x18\">\x06LvnM\x04\tX\xae¦\x01\x0enfja\x8a\x85JH\x04\x06\x00\x00\x00\x00\x06\x00\x00\xff\xe0\x02@\x01\xa0\x00\b\x00\x18\x00%\x00)\x00H\x00S\x00\x00%\x16\x17#70>\x01?\x01\x11\x14\x06#!\"&5\x11463!2\x16\x017#\a/\x01&'#\a\x16\x1f\x0137#\a74'&5636\x1f\x017&#\"\x0e\x01\x15\x06\x17\x16\x15\x06#\"/\x01\a\x16\x1726\x17'#\"\x0f\x013673\x17\x01\xd6\b\x01!\x10\x02\x02\x01m\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe0\x14\x1c\xfeX@+'\x04\x0e\x03\x10@\x01\x17\x13$\x89\x19(\x19\xb4\"\x17\x01\x17\x0f\x0e\x04\x05\x10\x14\x13\x1f\x11\x01$\x15\x01\x17\x13\x13\x05\x06\x11\x1c\x1f'\x8d \x0f\x05<*\a\x014\x05\xd9&\a+\x05\b\x02\x8a\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xfe\xf1\x9bj\x16G\f\x01\x03\x06\v\x87\x9b\x9b2\x1a\x11\v\b\r\x01\a\x01!\a\r\x18\x0e\x19\x12\n\t\x0f\b\x03#\b\x01\x1d\x1a\x9b\r\x8e\x13\x04\x17\x00\x00\x17\x00\x00\xff\xdf\x02@\x01\x9f\x00\x03\x00\t\x00\r\x00\x13\x004\x00B\x00R\x00^\x00d\x00\x8d\x00\x9b\x00\xaf\x00\xc0\x00\xcd\x00\xd8\x00\xe5\x00\xf0\x00\xfb\x01\x05\x01\r\x01-\x019\x01F\x00\x00$\x14\"4!2\x14#\"462\x17#72\x14#\"4\x172\x150\x061\x141\"1\"1\"1\"1&1<\x011434130303\x1610\a030410+\x01\x1535\x173\x13\x11\x14\x06#!\"&5\x11463!2\x16\x04\x14\x16327&67&#\"\x1764'\x06\x14\a4#\"\a&#\"\a5#\x153<\x03>\x0232\x16\x15\x14\x153<\x02>\x0332\x16\x15\x14\x1537#\x15&#\"\x06\x14\x16327\x15374&542\x177&\x06\x15\x14\x16\x15\x14\"'\a\x1663'\x06=\x0135#5#\x15#\x153\x15\x14\x16734#\"\x06\x15\x14\x167'\x06&7&\a5#\x153546\x17\x1646\x177&\x06\x15\x14\x167'\x067#\x15&\x06\x15\x14\x167\x1537&\a5#\x153546\x177#\x15&\x06\x14\x167\x1537\x153535#\x15\x1745&1&0#\"0#\x061\x061\x14\x15\x141\x143\x1623210606107#\a'#\x155\x1737\x15374&#\"\a\x1e\x01\a\x16326\x01\xe3\x17\xfe\xe0\v\v\vx\x11\x01\x13u\f\f\vu\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x02\x01\x01\x01J\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe0\x14\x1c\xfe\x00Q9*#7\x016#*9\x8f555Y\x0f\t\x04\x04\b\a\x04\b\b\x02\x02\x03\x02\x06\x03\a\x01\x01\x02\x03\x03\x05\x03\b-\b\x05\a\b\n\n\b\b\x04\b(\x17\x0e\x05\x03\a\x17\x17\x10\x05\x04\t\x18#\x02\f\r\r\b\b\b\x13\x11\x1b\x11\b\n\x19\t\x04\x06\x0f:\n\x05\b\b\n\x02\x0e\r\a\x04\t\x18\x19\b\x04\a5\b\x06\x18\x18\x06\b\"\n\x05\b\b\n\x03*\b\x06\x18\x19\x05\b\b\x01\x01\x04\b\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x04\x02\x01\x02\x01\x02\x01\x01\x02\x04Q9*#6\x017#*9Q1\x17\x17\x17\x17\x01\t\b\x17\x17\x1a\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x03\x01\x01\x01Z\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1cfsQ\x17-\x8d,\x18\xf7)\x87))\x87v\x0f\a\a\x05\x04%\x03\t\x05\x06\x03\x03\x02\n\f\x06\x03\x03\t\x05\x06\x03\x03\x02\n\f\x06\x03%\x04\x05\v\x11\v\x06\x05\v\t\x04\x03\x04\x03\x06\x06\x04\n\b\x05\x02\x05\x04\x06\x06\x04\a\a\v\x11\a\v\v\a\x11\f\x03\x11\x17\v\b\x0f\b\t\x06\x06\x03\x1d\x04\b\x04%\x15\b\x03\x03\x13\x11\x05\x05\a\a\t\r\x0e\t\b\x06\x05 \x04\b\t\r\x0e\t\t\x05%\x05\t\x04%\x15\a\x04\x03\x17\x13\b\t\x1b\t\t\x05\u007f\x05\x05\x01\x01|\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01~\x04\x04\x05\x04\x04\x04\x04U:Q\x17-\x8d-\x17Q\x00\x00\x00\f\x00\x00\xff\xe0\x02@\x01\xa0\x00\x06\x00\x16\x00'\x003\x00:\x00B\x00S\x00k\x00u\x00y\x00\x81\x00\x8b\x00\x00%\x14+\x0153272\x16\x15\x11\x14\x06#!\"&5\x11463\x05\x15353\x173'654.\x03*\x01#\x1535#535#535+\x01\x1737#\a&\"\x06\x14\x16264'&\x0e\x01\x15\x14\x1e\x0275\x06&546\x17\a\"'\a\x16654&'&546\x177&\x06\x15\x14\x17\x1e\x01\x06\a2654.\x01+\x01\x1535#\x15\x055\x0e\x01\a!26%\x16\x14\a\x06+\x01532\x02\b\x0f\x05\x05\x0f\b\x14\x1c\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xb4\x10\x02\x16\x14\x1a\x13\x03\b\x06\r\x05\x10:-\x1d\x1c\x1c\x1dr\x11#\b$\x12\x16;%\x1a\x1a%\x1a^\x10\x1c\x13\v\x12\x17\v\x0e! \x0fa\f\x06\n\r,\n\x0e\f\x11\b\b\x0e$\x15\v\x06\bl\x16\x17\f\x14\r\x17[\x10\x01\xb53\xf3z\x01\x91\x06\t\xfe*\t\t\a\x0f\x04\x04\x0f\xfc\r\x19\x98\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x8bR!!#\x03\x14\x06\b\x06\x03\x01R\x0e\x16\x0e\x12\x0eTT7:\x1a%\x1a\x1a%\x14\a\x06\x18\x0f\f\x14\n\x02\x06\x13\x0e\x0e\x13\x12\x0f\x0e/\n\n\x13\t\x16\n\n\x05\x05\x06\a\x03\b\v\r\n\x11\x10\a\x04\f\b\r\x19\x10\f\x13\nRRR\xb4\x91 i\x17\t\xf7\a\x1a\b\x066\x00\x15\xff\xff\xff\xe0\x02A\x01\xa0\x00\x13\x00\x1a\x00.\x007\x00:\x00A\x00M\x00N\x00`\x00g\x00{\x00~\x011\x01I\x01a\x01m\x01x\x01y\x01\x9c\x01\x9f\x01\xa3\x00\x00\x01\x14\a\x16\x1d\x01#<\x02.\x02+\x01\x15#532\a254+\x01\x15\x172\x15\x14\x0e\x03*\x01#\x15#'\a#53\x177\a7'#\x153\x15#\x15\x175\a7254+\x01\x15'#\x153\x15#\x153\x15#53\x05\a\x14\a\x16\x1d\x01#54.\x01+\x01\a#532\a254+\x01\x15'#5\a#'\x15#'#\a#73\x1753\x1773\a3'\x05:\x02>\x017\x15\x14\x06#!\"&=\x013673\x16\x1735\x16\x173>\x027\x153523\x14\x1735\x16;\x01673\x16\x152\x16\x1735\x1e\x01\x1735#\x15&'#\x15&'#\"1#\"\a5#\x15.\x04*\x03+\x02\x06\a.\x01'#\x15.\x01'#\x0e\x01\a5463!2\x16\x1d\x01\"#\"\a5*\x02\x0e\x02\a5#\x15.\x02\"&*\x02#\x15&+\x01\x0e\x03\a.\x03'#\x15367\x1e\x01\x17346527\x1c\x01\x153<\x01523\x14\x15\x14\x15272?\x01\"\x15\x14\x1e\x01\x17\x15\x06+\x0173254&\"&54;\x01\x15\a254&\x06&54;\x01\x15#\"\x15\x14\x166\x16\x15\x14+\x015'#\x153\x15#\x15\x17\x15#53'63023\a\"'&47'3\x15*\x03\x0e\x03\x15\x14;\x0173\x1753\x1753\x15#'\x15#'#\a#\"54\x17\a3'3\x15#\x01E\f\v\x10\x02\x03\x06\x04\x12\x10'\x1b\x1d\v\v\x15\x04\x1c\x03\a\a\v\x06\r\x02!\x14\x15BC\x14\x153\x13\x12)$$j\x19?\n\n\x15\v'&&'77\x01I\xc3\v\n\x10\x03\x06\x06\x11\x01\x10'\x1b\x1d\v\v\x14\x99\x10\x18\x0f\x18\"\x06#\x06\x12\x1e\x18\x1c\x1b\x16\x14\x1b\x94\x17\f\x01\xd3\x06\x18\n\x0f\b\x04\x1c\x14\xfe \x14\x1c\x1b\x02\x04\x13\x04\x035\x01\x04\x1d\x01\x02\x01\x01\x88\b\x01\x01B\v\x13\x1b\x02\x04\x13\x03\x01\x01\x024\a\x05\x02)(\x05\x06+\x03\x06 \x03\x1b\x13\f(\x02\x03\x05\x03\a\x05\v\a\x10\x05\fg\x05\a\x02\v\x01.\x05\x03\x01(\x02\x10\x05\x1c\x14\x01\xe0\x14\x1c\x04\x06#\t\t\x16\b\f\x05\a\x02O\x02\x04\x05\a\x06\r\n\x14\b\n\x0f:\x01\x04\x05\x04\x01\x04\x06\x02\x02\x02SR\x06\n\a\x06\x030\x01\x17\v'\b\x02\x93\x06\x01\x03$\t\x0f\x14\x04\x06\x11 \x01 \b\r\x10\x0e\x18!W\t\x0e\x10\r\x18!\x1f\t\x0e\x10\r\x1a \n'&&'889\x01\a\x02\x01\b\x02\x01\x01\x16\x10\x10\x02\t\x04\a\x03\x05\x02\x01\x10\a\x18\x18\x1c\x1a\x1d\x11\x18\x1f\"\a\"\x06\x13!L\f\x17p\x11\x11\x01\x18\x0e\x04\x04\x0f\r\x02\t\x04\x05\x03\x02\x19E\x1e\b\a\x0fZ\x16\x06\t\x05\x03\x01\x17\x17\x17E\x16\x166\x14\x14\f\x0f\r\t8\x1b\x03\t\b\x11\x88\f\x0e\x0e\x0eEj \x0e\x05\x04\x0e\x0e\f\x05\x06\x02\x19E\x1d\b\a\x0fP6666\x0f\x0fEBB//(\x1c\xbb\x01\x03\x02Z\x14\x1c\x1c\x14\xcc\x06\t\t\x06\v\x02\t\x02\x03\x04\x02\v\x19\v\x0e\t\t\x06\t\a\x01\x04\x03\x16\f\a\x03\\\x13\t\n\x15\b\r\t\t\x05\x01\x01\x01\x01\x01\f\x12\x03\x18\x03\x15\n\a\x04\x04&\fn\x14\x1c\x1c\x14\xaf\x05\x05\x01\x01\x02\x02\x06\x05\x01\x01\x02\x01\x06\x06\x02\x05\x04\x06\x01\x05\x06\x02\x03\x02]\a\v\b\a\x03\b\b\a\a\b\x10\x06\n\a\t\x01\x03\t\r\x03\x02<\a\x05\x01\x01\x06\x1a\t\x0f\x06\x05\x02\n\v\x14\x0e(\x06\x05\x03\x01\n\v\x15\x0f\a\x04\x02\x01\n\v\x16\x0f(\f\x0f\r\x01\x0eE^\x01\x11\x01\x01\r\f\x0f\x0f\x02\x03\x04\a\x04\x147BB11E44\x0f\x0f\"#\f\x1c(E\x00\x00\v\x00\x00\xff\xe0\x02@\x01\xa0\x00\t\x00\x13\x00\x1c\x00,\x00A\x00X\x00r\x00\x87\x00\x9e\x00\xab\x00\xb5\x00\x007\x14\x06#\"54632'2\x16\a\x06+\x01743!2\x17\x14+\x017437\x11\x14\x06#!\"&5\x11463!2\x16\x054+\x01\"\x0f\x01\x06;\x012?\x0146:\x023267#\"\a&#\"\x06\x15\x14\x16327\x06\x15\x14;\x012?\x014\x177454+\x01\"\x0f\x01'&+\x01\"\x150\x1e\x01\x17\x06\x15\x14;\x01274+\x01\"\x0f\x01\x14;\x012?\x01>\x01:\x021267#\"\a&#\"\x06\x15\x14\x16327\x14\x15\x14;\x012?\x01474+\x01\"\x15\a\x15\x14;\x0127'2\x15\x14\x06#\"546\xba\f\n\x10\r\t\x10j\v\t\x02\x02\x14\b\x05\x03\x01 \x12\x01\x16\b\x04\x03\xd8\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe0\x14\x1c\xfe@\"(\x05\x01\x10\x01\x04\x13\x05\x01\x04\x03\x05\x04\x05\x01\x16\x18T\x12\x04\x01\a\x10\x12\x1a\x12\x0e\x10\v\x01\x03\x11\x04\x02\n%@\x03\x13\x03\x02\x1a\v\x02\x04\x12\x04\n\v\x01\x15\x03\x13\x03\xa1\"(\x05\x01\x10\x03\x15\x03\x01\x04\x01\x03\x04\x04\x06\x16\x18T\x12\x04\x01\x06\x11\x13\x19\x11\x0f\x10\n\x03\x11\x04\x02\n,\x03\x13\x03\x10\x03\x11\x04\x01J\x10\f\n\x10\r\xbe\t\r\x0f\t\r!\x05\n\x0e\x1b\x02\v\x12\x1b\x02\x82\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\x9b\x1c\x05f\x04\x06\x1a\x02\x03\x18\r\b\n\x1b\x13\x0e\x12\f\x03\x03\x04\x06@\x04b\\\x01\x01\x04\x03'&\x04\x04\x1d\x1f\x02\x1d\x03\x03n\x1c\x05f\x04\x03\x1d\x02\x03\x18\r\b\n\x1b\x13\x0e\x12\f\x05\x01\x04\x06@\x04!\x04\x03h\x01\x03\x061\x0f\t\r\x0f\n\f\x00\n\x00\x00\xff\xe0\x02@\x01\xa0\x00\a\x00\x13\x00#\x00@\x00P\x00Z\x00^\x00b\x00q\x00\x87\x00\x00%2\x16\x15#4>\x01\a2\x1e\x01\x15\x14\x06#\"'5672\x16\x15\x11\x14\x06#!\"&5\x11463\x174.\x015432\x175&#\"\x0e\x01\x15\x14\x1e\x01\x15\x14#\"'\x15\x1632675#5\a\x15\x14\x163275\x06&=\x01\x175&\a'#\x15356\x175#\x1575\a\x15\x172654&#\"\a'#\x1575\x167454&#\"\x0e\x02\x15\x14\x1e\x013275\x06#\"'\x01\xec\b\n$\x05\tq\x06\n\x06\f\n\n\a\x06\xa4\x14\x1c\x1c\x14\xfe \x14\x1c\x1c\x14J\x1b\x1b\f\x12\x11\x10\x13\x0e\x16\f\x1b\x1b\x0e\x11\x15\x12\x14\x17\x1bE\x1b#\x15\x10\x11\b\x03\x18e\x14\n\x02\x1f$\n=$$$n\x15\x1c\x1d\x14\x0f\f\x02 $\r\xad\x1b\x18\r\x14\x0e\b\x10\x1a\x11\x17\x11\x10\x13\x1a\x02\xe3\v\f\b\v\x04\x02\t\x0f\t\x0f\x13\a5\a\xbf\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xf9\x12\x13\b\x06\a\t\"\x06\t\x13\f\x11\x12\t\x06\t\f\"\b\x15L\x1e\x1f\br\x0f\x15\x05\x1c\x03\x03\r3\x03!\a\x12\v}U\rb}}\x8f\x1d\a\x1d\x8a! \x1e\"\v\t\xa6\b(\t3\b\x05\x1d$\n\x11\x18\x0e\x15\x1d\x0e\t\x1d\b\x15\x00\x00\x00\x00\x01\x00\x00\x001\x02\x00\x01O\x00X\x00\x007\x0e\x04#\"&54632\x1e\x05\x17\x16\x17\x1e\x023254.\x05'&54632\x17\a&#\"\x0e\x01\x15\x14\x16\x17\x1e\t\x15\x14#\"&'.\a#\"\x06\x15\x14\x1e\x0126?\x01\xe2\x01\x06\x12\x14#\x12>BD@\x17%\x1a\x17\x0e\x10\a\b\x05\x02\b\x15)\x1c=\x03\n\b\x12\n\x1a\x05D<-^\a;\x03+\r\x12\n\x0e\x13\x02\x1c\x05\x19\a\x14\x06\r\x05\x04zFE\x10\x03\r\x04\f\b\x0e\x0f\x14\f\x1f)\x11 (&\t\tQ\x01\x05\n\b\aFCFM\a\v\x17\x11%\x16\x18\x0e\b\x17\x1f\x14\x1f\x06\v\b\x05\x06\x03\x05\x02\x10<-'J\a#\a\x0e\n\x0e\x10\x04\x01\x06\x01\a\x04\t\b\r\x0e\x13\nQ60\t(\x0e\x1f\n\x13\x06\x06/3\x1b*\x16\x11\b\t\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00g\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01254.\b1&5432\x177&#\"\x06\x15\x14\x172\x1e\b\x15\x14#\"'.\t#\"\x06\x15\x14\x1e\x01326?\x01'\x06#\"&54632\x1e\x06\x17\x1e\x04\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01\x04L\x03\x02\t\x04\f\x04\x10\x03\x13\x15\x1a\x1b\x02$\x04:\x1d%+\x03\n\x06\b\x05\x06\x04\x04\x02\x02&.\x10\x01\t\x02\t\x04\n\b\x0e\x0e\x12\v(+\x13#\x1a\x12\x1f\x06\x06\v\x14\x1c\x13\x18\x1a\x13\a\r\t\t\x05\a\x03\b\x02\x03\n\x0f\x15\x1d\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xc73\x06\f\t\b\x05\x06\x02\x04\x01\x04\x05\x10\x14\x16\x04/\x19\x1c%\v\x02\x02\x02\x02\x02\x03\x03\x04\x05\x03\x13.\x03\x1c\x06\x17\x05\x11\x04\n\x03\x030,\x1c&\x14\n\x05\x04 \x15\x1f\x1a \x1e\x04\x04\f\a\x13\b\x1a\x05\v\x12\x11\v\a\x00\x03\x00\x00\xff\xc8\x02\x80\x01\xb8\x00\x1d\x00;\x00G\x00\x00\x012\x16\x14\x06+\x01\x16\x15\x14\x06#\"&'#\"&46;\x01&54632\x16\x17\a4'!\"&463!.\x01#\"\x06\x15\x14\x17!2\x16\x14\x06#!\x1e\x01326%32\x16\x14\x06+\x01\"&46\x02h\n\x0e\x0e\n5\x05\x91gL|\x1dC\n\x0e\x0e\n5\x05\x91gL|\x1d\x1d\x06\xfe\xd6\n\x0e\x0e\n\x01\x18\x1a^8Su\x06\x01*\n\x0e\x0e\n\xfe\xe8\x1a^8Su\xfe\xd0\xd0\n\x0e\x0e\n\xd0\n\x0e\x0e\x01 \x0e\x14\x0e\x17\x19g\x91TD\x0e\x14\x0e\x17\x19g\x91TD`\x18\x18\x0e\x14\x0e/9uS\x18\x18\x0e\x14\x0e/9uk\x0e\x14\x0e\x0e\x14\x0e\x00\x06\x00.\xff\xc0\x01\x92\x01\xc0\x00'\x00/\x008\x00E\x00\x81\x00\x87\x00\x00%\x1e\x01\x15\x14\x06#\"&547&54632\x17&54>\x0232\x17\x16\x17>\x0432\x16\x15\x14\x0f\x01\x17654#\"\a\x14\x176\x17'&\a\x06\a\"\x0e\x01\x15\x14\x1632654&\x17>\x01&'.\x01#\"\x0e\x01\x15\x147232\x17\x06\a\x06\a\x0e\x01\x15\x14\x16\x150\x061&'\"#\x16\x06#\"&7\x1e\x0432654&#\"\x06\x17\x1e\x0132'\x16\x1767&\x01[!\x16iVF_3\b\x1f\x12\b\f/\x06\v\x11\f%7\x02\x01\x01\x12\x10\x17\x1a\r\x14\x17P!\"/\v\x10\xbf.\x06\x1d\"\x17\x10\b\x02\x04\t\a=\x0f\x05\x060\xa5\x1a\x15\x06\n\x10Y!\b\b\x01r\x04\x02\x0f\x02\b\x13\x13\b\x13\x19\v\x02(\x02\x02\n\x04\x17\x13\x1e1\x15\x06\x10\a\n\a\x05\x03\t.\t\x0f\x10\v\x11C-A6\a\x02\v\t\x1d\xe9\b0&Xs\\99\x0e\x16\b\x12#\x05\x85\x1d\v\x13\x0e\b\xa6\x05\x01\x023%/\x1a\x1c\x15\x1f\x13^\x06\x82\x12\x10\x04\x1dx\x04\x03eC\x05\x02\xd1\a\n\x04\x11Q\b\x04\x0f\\\xba\x1cP:\b\x0e\x10\x05\x04\x05(\x01\x15\b\b\a\x06\r'\x14\b!\t\a\x02;\x0e\x1cA\x16\t\x15\t\n\x03\x05\x04\n?$!)/\xaf\x14\x05\f\a\x06\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x02\x00\x12\x00\x19\x00\x00\x13\x17#%\x11\x14\x06#!\"&5\x11463!2\x16\v\x01#\x0337\x17\xe0+V\x01\v\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1cA_\x80_[p\x18\x01)\xa0\xe7\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xfe\xa7\x01*\xfe\xd6[[\x00\x00\x17\x00\r\xff\xcf\x023\x01\xb1\x00J\x00M\x00R\x00_\x00f\x00i\x00n\x00q\x00u\x00z\x00\x83\x00\x87\x00\x8e\x00\x94\x00\x99\x00\x9c\x00\xa1\x00\xa8\x00\xb0\x00\xb6\x00\xb9\x00\xbe\x00\xc8\x00\x00%\x16\x15\x14\x0f\x01\x16\x15\x14\x0f\x01\x16\x15\x14\x0e\x01#\"'#\x06\"'#\x06#\"&547'&547'&54?\x014&14?\x01&54>\x0132\x17362\x173632\x1e\x01\x15\x14\a\x172\x16\x15\x14\a\x015#75\a\x16\x1575'\x06#\a\x14\x15\x14\a\x170\x1775\a\x141\x14\a75\a\x055\a\x177\x0f\x013'7'\a\x1f\x0137'7\a\x177&=\x01'&'#\a\x17'#\x177#\x06\"\a\x157'\"\x0f\x01\x15\x177'\a\x157\a\x1537'\a37#\x15\x17\x16\x173'#\a362?\x01#\x176?\x02#747'\a74547'\a\x1767\x02&\f\f7\x01\f4\x01\x04\a\x04\a\x04k\x05\x0e\x05j\x05\a\x06\t\x014\f\x017\f\f6\x01\t8\x01\x05\a\x04\a\x04j\x05\x0e\x05j\x05\a\x04\a\x04\x018\x06\b\x02\xfe\xa6,,-\x01,3\x03\x044\x018\x043,\x02.,\x01rb@#\xbd\f\x17\fPSPY\x11|\x06D\"uSb\x02:\x01\f\x04\xa69\nh3\x94K\x04\fx63\x01\x01\x01)O<<$$k\x11R#\x01[c\x01\x03\x84i\\&\\a\x04\f|\x12sZ\x02\x01\x11#\x16\x16\x01\x11\x04V\x01.#\x15\x01\x03\xcf\x02\r\f\x03_\x03\x02\f\x03Z\x02\x02\x04\a\x04\x04\x05\x05\x05\t\x06\x02\x04Y\x03\f\x02\x03_\x03\f\r\x02\\\x01\x01\n\x04a\x03\x02\x04\a\x04\x06\x06\x06\x06\x04\a\x04\x02\x03`\t\x06\x03\x04\xfe\xd7L\b30\x02\x01?\\4\x02Z\x01\x03\x02\x02`\x02\x9cH\x10\x01\x04\x04!\x017\x16\x13\x16\x17&'\x06\a67\x067\x0e\x01\a&'>\x017\x16\x06\x06\x83\\\x18\x19\\\x8c\x01gq\xa7!\x18\x15!\xa5p\x1b$\x12\x1074(-Cy\x06\x06U\x82#\x1f\x1a\"\x9ag\f\x8a\x1a\x1a\\\x83\x05$\x8da!\xa9r\x13\x1ep\xa7!\x13\xfe\xe90>\x0e\x14\x19\a}B-k#\x84V\x04\vh\x9d\"\x1b\x00\x00\x00\x03\x00\x06\x00\x00\x02:\x01\x80\x00\x0e\x00%\x00:\x00\x00\x01\x17#&\a&#\"\a\x13632\x176\x13\"'&#\"\a&#\"\a\x06+\x01\x13632\x17632\x17\v\x01&#\"\a&#\"\a\x03>\x0232\x17632\x16\x01\x83\x0f\v8/-:8C\x1f,0=*)\xf0$\"75>))>57#\"\x01*>G@**@G>\x01\"/6>))>6/\"\x1d!1\x188//8#9\x01Q\xf9\x01\x1d\x1c\x1c\x01\x02\x13+)\xfe\xb1\x10\x19))\x19\x10\x01]#\x1d\x1d#\xfe\xd0\x01\x18\x15&&\x15\xfe\xe8\f\f\t\x1d\x1d\x10\x00\x00\x00\x05\x00\x06\xff\xe0\x02z\x01\xa0\x00\x1c\x00,\x00<\x00M\x00]\x00\x00%\x1e\x01\x15\x14\x06#!\"&5467&54>\x0132\x17>\x0132\x16\x15\x14\x0554&+\x01\"\x06\x1d\x01\x14\x16;\x0126754&+\x01\"\x06\x1d\x01\x14\x16;\x0126754.\x01+\x01\"\x06\x1d\x01\x14\x16;\x0126754&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x02\x1c)5I2\xfe\x822I' \x03\x16'\x17\x1f\x18\x0e[:Ec\xfe\xa8\t\x06\x1f\a\t\t\a\x1f\x06\tY\t\x06\x1f\x06\t\t\x06\x1f\x06\tZ\x04\a\x04\x1f\a\t\t\a\x1f\x06\tW\t\x06\x1d\x06\t\t\x06\x1d\x06\t\xd3\nC+3HH3$<\x0f\v\f\x17&\x17\x158HcE\x14\xb6o\a\t\t\ao\x06\t\t\x06\x84\x06\t\t\x06\x84\x06\t\t\x06\xa3\x04\a\x04\t\x06\xa3\x06\t\t\x06\xe1\x06\n\n\x06\xe1\x06\t\t\x00'\x00\x00\xff\xc3\x01\xc0\x01\xbd\x00\x03\x00\a\x00\v\x00\x0f\x00\x13\x00\x17\x00\x1b\x00\x1f\x00#\x00'\x00+\x00/\x003\x007\x00;\x00?\x00C\x00G\x00M\x00U\x00u\x00y\x00}\x00\x81\x00\x86\x00\x8b\x00\x8f\x00\x93\x00\x97\x00\x9b\x00\x9f\x00\xa3\x00\xa7\x00\xab\x00\xaf\x00\xb3\x00\xb7\x00\xbd\x00\xc1\x00\x00?\x01\x17\a\x177\x17\a?\x01\x17\x0f\x017\x17\a'7\x17\a\x177\x17\x0f\x017\x17\a?\x01\x17\a\x03\x15#5#\x15#5#\x15#53\x15#53\x15#53\x15#5#\x15#53\x15#5\x01\x15#57\x15#5\a\x15#53\x15\x16\"&462\x16\x14'\x14\x166\x16\x15\x14#\"'\a\x1632654&\x06&5432\x1737&#\"\x0e\x01'\x15#5\x0553\x15%\x15#5\x03!\x11\a'%\x11!\x11\x17\x135!\x15\x17\x15#5\x17\x15#57\x15#5\x0553\x15'53\x15'\x15#5\x1753\x15\a53\x15'\x15#53\x15#5\x175#53\x15'\x15#5d\x04\x1f\x04\b\x05\x1e\x04\x8e\x1e\x04\x1e\x89\x05\x1e\x05\x95\x05\x1e\x04\xb5\x1e\x05\x1f,\x1f\x05\x1fr\x1f\x04\x1f\xb9\"\r\"\r\"\xaf!\x80\"Q\"=!\xaf\"\xfe\xc1\vQ\"$\v\"\xb8L66L5\x8b\x18\x1d\x18!\x1c\b\t\x13\x1c\x13 \x19\x1d\x19\x1e\x1b\t\x01\b\x1d\x0f\f\x14\x11y\v\x01a\v\xfe\x9f\v*\x01\xc0\xe2\xde\x01\xa3\xfez\xc1\xc5\xfez\x18\v\v\v\x80\"\x01\x03\v\v\v\xbd!\xd3\v\v\v\x8e!Q\"u\x17\"/\"&\n\x0e\n\x04\n\r\n\x1b\x0e\n\x0e\x15\n\x0e\nB\n\x0e\t\x19\r\n\r\b\x0e\n\x0e>\x0e\n\r\x01g\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\xfe\xd0\"\"\xd8\v\v\v\x17\"\v\xe45L55L:\x0f\f\x02\x05\b\x0f\x0f\x12\f\x0e\x11\x10\x0e\x02\x03\a\x0f\r\x10\f\x04\x0fI\"\"\xcf\"\"M!!\x010\xfejbb\x13\x01\x0e\xfe\xf2U\x01\x80;;\x82!!+!!\x82\v\v\xa3!!+!!x\v\vM\"\"\x82\"\"\xcf\v\v\v\v\"\x17\v\"\"\v\v\x00\x00\x00\x00\x03\x00\x04\x00\x00\x01\xfc\x01\x80\x00\x1a\x00\"\x00*\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1e\x01\x1d\x0135463\x02264&\"\x06\x14\x16264&\"\x06\x14\x01\xe1\v\x10\x10\v\xfe>\v\x10\x10\vj\a\f\a\xba\x0f\v\xfd7''7'\xfc7''7'\x01\x80\x0f\v\xfe\xb4\v\x0f\x0f\v\x01L\v\x0f\a\f\a((\v\x0f\xfe\xdc'7''7''7''7\x00\x00\x00\x01\x00\x00\x00\x04\x02\x80\x01|\x00Y\x00\x00%\x14\x06#\".\x06#\"\x0e\x01\x1e\x01327>\x0332\x16\x15\x14\a\x0e\x01#\"&54>\x0132\x1e\x0632>\x01.\x01#\"\x06#\"&54654&#\"\x0e\x01#\"&547632\x1e\x02\x15\x14\a632\x16\x02\x80D2\x1d6()!)'5\x1d*9\r\x0e<+C;\x01\a\x06\x06\x02\x05\x06\x12 S(@Z)F*!<,,\"'%.\x19\x1c&\t\t%\x1a\t!\x05\x06\n\x06C2\x18(\x17\x02\x05\x06\b&@\x1e3%\x15\x01\x12\x12.Bw1B\x16#-/,$\x15,>>,*\x01\a\x05\x04\a\x04\b\x10\x1c\"R?*E&\x15\",/,\"\x16\x1d))\x1d\v\t\x06\x06\x18\x062A\x12\x13\a\x05\x05\t,\x15%3\x1d\f\t\x05>\x00\x00\x00\x00\x01\x00\x00\xff\xc6\x01\x80\x01\xba\x00@\x00\x00\x132\x16\x15\x14\x0e\x02#\"&'\x0e\x06\a\x06\"'&54>\x017&5476\x17\x16\x15\x14\x06\x15\x14\x1632>\x0254&#\"\x06\x15\x14\x16\x15\x14\x06#\"&546\xccIk\x13$=&\x14(\t\x03\v\x03\t\a\r\x0f\v\x03\x01\x03\x04\r\x1b\x02\n%\x1e\x12\t\x1a\x1b\x13\x18&\x13\tA50Pd\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00 \x00H\x00\x00\x01\x16\x15\x14\x06#\"'\a7&54632\x032656'&\"\x06\x15\x14\x1f\x01\a7\x17\x167\x16\x17\x16\a\x0e\x01\a\x06'&'&54763232\x17\x161\x16\a\x0e\x02\x17\x1e\x01\x17\x167676\x17\x16\x01}C\x84\\91v \x1e\x82\\\\\\Ln\x0196\x98m\x1d\x04\x13F\a+\x98\n\x01\x03\a\x03\x19\t\x1a)1-\x17\x13\a\b\b\x03\t\x03\x11\x03\x02\x04\f\x02\x02\x0e!\x1c\b\x04\r\x05\x04\b\b\x01_CZ\\\x82\x1b\x1fs3<\\\x82\xfeimLJ86lL5-\aD\x12\x04\x1a\x8b\x05\x02\x06\x15\b\x11\x01\x04\x12\x15?\x1f\x1a\x19\x16\x06\t)\x06\x04\t\r\x02\x06\x1a\x1a\x0e\x04\x05\x0f\a\x06\x03\x03\x00\x00\x00\x02\x00\x00\xff\xe0\x01\x80\x01\xa0\x00\x16\x00\x19\x00\x00\x01\a3\x15#\a3\x15#\a'#53'#53'3\x1737\x037#\x01\x8000D\x0eRgYYgR\x0eD00@Q^Q\x80\x1b6\x01\xa0p0 0\xd0\xd00 0p\xc0\xc0\xfe\xd0@\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00(\x00\x00\x11!\x11!\x015#\a'#\x15\x17\x16\a\x15\x16\x0f\x01\x1535'&75\x1737\x15\x14\x0f\x01\x1535'&75&7\x01\xc0\xfe@\x01tS;DW\x1c\x05\x01\x01\x05 Z \x05\x01O\tC\x02\x18v\x18\x03\x01\x01\x03\x01\xa0\xfe@\x01V\x05\x94\x94\x05\"\x04\x06\x85\a\x06&\x05\x05&\x06\as\xab\xab\x89\x04\x02\x18\x05\x05\x17\x03\x04\xa9\x04\x03\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00\x0f\x00\x00\x01\x11!\x11\x137#\a\x06\a/\x01#\x17\x153\x01\xc0\xfe@\xecN!.\a\x06\f-#L\x1e\x01\xa0\xfe@\x01\xc0\xff\x00\x92[\x0e\r\x1b[\x90^\x00\x00\x18\xff\xfe\xff\xcd\x02B\x01\xb8\x00\x8d\x00\x98\x00\xa2\x00\xab\x00\xb5\x00\xbf\x00\xc9\x00\xd5\x00\xe0\x00\xeb\x00\xf8\x01\x02\x01'\x018\x01I\x01[\x01n\x01z\x01\x81\x01\x8e\x01\x9c\x01\xa8\x01\xb4\x01\xbf\x00\x00%\x16\a\x16\x06\a\x06'\x06'\x06'.\x01567&6\x1767&\x176746\x176\x175\".\x01'&7>\x0176\x172\x17263&'&'45&'&676\x16\x17\x14\x1e\x026\x166\x166\x1767&\a6767&'6\x17\x16\x17\x16:\x01>\x045>\x01\x17\x16\x17\x16\a\x06\a\x15\"\a\x06\a2\x163636\x17\x1e\x01\x17\x16\x17\x16\a\x0e\x01#\x14\x156\x176\x16\x15\x16\x176\x16\a\x16\x176\x16'\x16\x176&'.\x01\x06\x15\x14\a\x06\a\x16\a6767&'\"#\x16\x17276&\x0567&54&\a\x0e\x01\x17\x16\x17&7&'\x06\a\x16\x1767\x06\x0f\x015\x06\x17\x167\"\x0e\x01\x15\x14\x162654&\x17&#\x16\x17\x16327>\x01'\"#\x06\x16\x17\x162764\a64'*\x01\x06#\x0e\x01\x17\x1e\x01'\x06\x16\x17\x167>\x017\x06\a\x16\a\x16\x17>\x017&7.\x02#\x06\a\x06'&'\x06\a\x06'\x0e\x02\a\x06'\x06'&'&'\x06\a65.\x02'&\x06\x17\x1e\x03\x1726'\x16\x1767&'\x06\a\x06\x16\a\x06\a\x06\a\x06\x05.\x04'\x06\a\x06'&'\x06\a\x155\x16767#65&'&'&7&5&'\x06\a\x16\x176&\a\x0e\x01\a\x14\x163>\x01\x03.\x01\a>\x01\x16\x016\x16\a\x0e\x02\a\x06&5467\"&7\x16654'6\x16\x15\x14\x06\a4>\x0176\x16\a\x06\a\x06&%\x1e\x01\x15\x14\x06'.\x01'&6\a\x1e\x01\a\x14\x06'&'&6\x02=\x02\x01\x013\x17\x1e\r\xb9\x9b\x0e\x1d\x173\x01\x01\x04\x02\b\x04\a\x04\x0f\a\t\r\x04\x10\v\a\x13\x12\x02\b!\x01\t\x05\n\x04\x11\x04\x03\v\x03\x04\x04\a\x12(\x0f\x10\b\x15\x06\x0f\x01\x01\x01\x01\x01\x03\x03\x06\x06\x04\r\x0e\v!\x1c\x1d'%\r/\xa1T\x1a\x10\b\v\b\x05\x03\x02\x01\x01\x01\x0f\a\x13\x05\x05\x11\x0f'\x13\a\x04\x04\x03\v\x03\x03\x12\x04\n\x05\t\x01\x15\x04\x02\x02\x04\x1e\f\v\x10\x04\r\t\a\b\x05\x02\b\x03\b\x02N\x16\b\x01\a\b\x03\a\x04\a\x04\n\x15\b\x12\b\x03\x02\x024\b\x04\f\x03\x05\x06\x05\t\xfeP\b\x16\x03\b\x06\a\b\v\b\x12\a\x14\n\x04\x1b\x03\x032\x04\x10\x05\n\f\r\a\b\xbd\x15#\x14-?,,T\x06\"\x04\x02\x02\x04\x02\x03\v\v5\x1d\x1c\x01\x02\x03\b#\b\x03J\x03\x01\a\x17\x14\b\x02\x01\x05\t$a\x05\f\x0f\b\x02\x01\x02\x02\x118\x05\rKQ/K*\n\x02\x04\t\n\x03\n\x14\v\x06\x02\x03\x03\x15\x1d\x0f\x02\b\a\n1\x06\x01\x18\x0e\x06\x05\x02\x10\x1d\x01\x03\n\x0e\a\x122\x02\x05\x0e\x10\x11\a\x0e\x17\x06\x0f\x0255+7\x01\x06\x01\b\x02\x03\f\x03\x05\x01\x01S\r\x14\x18\x16\x19\f\x14\x16\x02\x02\x11\x1298\x8f\xb1\x02\x0f\x01\x01\x04\x04\v\x04\x02\b\x01\x04\x03717\xa3\x022\x12\n\x13\x05\x19\x10\x0e$\xb2\x1bB!\f<4\xfe\xd8\v\f\x05\x02\f\x10\x05\r\x14%\xe5\x18 \x05\n%\x11\x190\x1f\xf4\v\x0e\x04\x06\x06\x02\x06\v\a\x0f\x01\xb1\r%\x14\r\t\x17\x04\x04\f\v\a\x17\x01\x0f\x06\r\x05\x02\x06\x1b\a\x04\x17)\x01\x02\x19\x06\x06\x18\x01\x01)\x17\x06\x05\a\a\x03\a\a\x11\b\x05\x04\v\x01\x06\x03\t\x14\b\x11\v\"\x0e\x04\n\x02\x03\r\b\x01\x03\x02\v\x01\x01\x01\x01\x11\x12G\x0f\x04\x06\b\x02\t\x01\b\x01\x06\x02\x05\x04\x02\f\b\x01\x05\x1c\x0f\x13\x04\x05\v\"G\x17%\x01\x03\x01\b\x02\n\x02\a\a\x05\x0e\"$\x13\x11\x01\x03\v\x02\x03\x02\t\f\x02\x01\n\x05\t\x11\v\v\x11\x13\r\a\b\x02\x06\x01\v\x04\x05\x04\x06\a\b\x06\x03\a\xf7\t\x1b\n!\b\x03\x02\x03\x03\b\r\x04\x02\x18'\x04\b\x04\x04(\x02\x1f!\x01\x12$\r\x1b\t\a\a\x05\x01\x05\b!&\b\x04'\x18\x02\x04\t(\x05\x11\"\x1d\x01\x04\x05\x01\x19\x1c\x01\xa3\x15#\x14 -- \x1f-\xaf\x01\x12\x18\x11\x01\x06#\x12\a \x02\x04\x03\x05\x1d.\x06&\n\x01\n$\x05\x04\x016\x10 \a\x04\t\x04(\b\x01 \b\x05O\x1b\r4*\x04\a\x01\x01\x01!\x06\x04\f\x03\r\a\x02\x02\x05\x06\x06\x01\x01\x05\x10\x18\r\a\v\b\n\x02\xae\x04\x04\r\x16\x11\x02\x06&\x16\a\x0e\t\x06\x01\x10O\x1b\x19\x1f\x10\x176\x01\x02\x02\a\x04\x06\x03\x03\x03\x17R\a\v\f\n\t\x04\t\a\x01\x01\x05\b\x10\"\x01\x01\x06\x12\x1b\x19\x15\x14\x02\x05\x02\x06\x06\x05\x01\x01\x01\x023\x19\x11%\x16&\x06\x03 \x13\x11\x14\x01\x15\x01\x8a\x1d\r\x13\x1c\x0f \xfe\x92\x01\x17\t\x05\v\n\x01\x04\n\t\f\x1e\xb1#\x19\x10\n\x11\x11\x05\n\x1c\x1a\x15\x1c\xf3\x04\v\t\x01\x01\x0e\x05\f\x05\x02\aH\x01\x1e\f\t\n\x04\x02\x12\a\t\x17+\x01\x12\x06\x05\a\x02\x05\f\x05\x0e\x00\x00\x00\x03\x00\x00\xff\xd9\x02\x84\x01\xa7\x00\a\x00\x0f\x000\x00\x00$\x14\x06\"&462\"2\x16\x14\x06\"&4\x012\x1e\x04\x0e\x03\a\x06\a>\x03.\x01\a\x06.\x06'\x1e\x02\x01\xa7\x1a&\x1b\x1b&\xf7&\x1b\x1b&\x1a\x01Q';(\x1e\b\x06\x12\f'\x18\x1b3\x1c\f3&\x14\x17XQ:aB9\x1f\x1e\f\x13\x03*e\x9e\x1a&\x1a\x1a&\x1b\x1b&\x1a\x1a&\x01)\x02\b\x06\x11\v\x1a\x10#\x15\x17,\x19\x168%'\x17\r\x01\x01\b\f\x17\x12\x1e\x11 \x05,)\x0e\x00\x00\x00\x00\a\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00#\x003\x00?\x00O\x00W\x00_\x00\x00\x122\x16\x14\x06\"&4\x17#\x15\x14;\x012=\x014>\x01\x1e\x01\x1d\x01\x14;\x012=\x014&#\"\x0e\x01\x1754&+\x01\"\x06\x1d\x01\x14\x16;\x0126'\x15\x14+\x01\"=\x014;\x012\x17\x14\a\x15\x14+\x01\"=\x01&5462\x16\x022\x16\x14\x06\"&4\x12264&\"\x06\x14\xa0\xb0}}\xb0}t\x01\t\x12\t\x19%$\x1a\t\x11\t9(\x1a-\x1a\xef\v\a\xf8\a\v\v\a\xf8\a\v\xf8\x05\t\x04\x04\t\x05\x8d\x11\t\x12\t\x12\x15\x1e\x14\x8aΑ\x91Α\x99\xbe\x87\x87\xbe\x87\x01\x95}\xb0}}\xb0\b\x1b\t\t\x1b\x17 \b\b \x17\x1b\t\t\x1b(9\x1a-\xe6\x8e\a\n\n\a\x8e\a\v\v\x90\x85\x04\x04\x85\x055\x15\n\x1f\t\t\x1f\n\x15\x0e\x15\x15\x01\r\x91Α\x91\xce\xfe\xb3\x87\xbe\x87\x87\xbe\x00\x06\x00\x00\xff\xe0\x02@\x01\xa0\x00\b\x00\x10\x00 \x00;\x00N\x00c\x00\x00%531\x16\x15\x14\a\"\x17\x16\x14\a\x06#527\x11\x14\x06#!\"&5\x11463!2\x16\x05#\x14\x16\x14\x0e\x03#\"'\x15\x1e\x0223\x172>\x044&7.\x01\x0e\x01\x15\x14\x1e\x01675\x0e\x01&46\x16\x1f\x014.\x04'>\x0154.\x01'+\x01\x15326\x01\xb0&\r\r\x01\x05\x0e\x0e\x02((h\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe0\x14\x1c\xfev9\x01\x01\x04\b\x0e\n\x1b\x1e\b\x15\x10\x0f\x04\x04\x12\x1b\x12\f\x06\x02\x01\xb2\x1973!\"65\x17\x181\"\"1\x18\xb8\x03\x04\a\t\n\x05\x0e\x10\t\x11\vu\x03{\x12\x18\xcc \x03\r\x0e\x02\x14\x03\x1d\x02\x01#\xb8\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\x84\v \x11\x17\v\v\x05\x0f\x1c\x03\x03\x02\x01\x06\x06\x10\f\x1b\x11%\x06\a\x02\t!\x1a\x1b!\b\x03\x06\x1c\r\x04\x172\x17\x04\r=\x04\b\a\x06\x04\x02\x01\x02\x11\v\n\x0e\a\x01\x80\x12\x00\x00\x00\x00\x05\x00\x00\xff\xe0\x02@\x01\xa0\x00\a\x00\r\x00\x17\x00'\x006\x00\x00\x122\x16\x14\x06\"&4\x175\x0e\x01\x14\x16\x17>\x0154.\x03'72\x16\x15\x11\x14\x06#!\"&5\x11463\x012654&+\x01\"\x0e\x01\x15\x14\x163\xa7\x92gg\x92g\x88 ((p\x1f(\a\f\x12\x16\f\xf8\x14\x1c\x1c\x14\xfe \x14\x1c\x1c\x14\x01\x1aOywQ[5X4rO\x01pg\x91hh\x91\xb1\xd0\f9F8\r\r8#\x0e\x1b\x17\x14\x10\x04x\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe`qMTn0Z8Np\x00\x00\x04\x00\x00\xff\xc7\x01\xf0\x01\xb8\x00\x14\x00)\x008\x00D\x00\x007\a&#\"\x14327\x17\x06#\".\x0254632\x17\a&#\"\x14327\x17\x06#\".\x0254632'2\x16\x15\x14\x0e\x02#\"&54>\x01\x132654&#\"\x06\x15\x14\x16\xf6!\n\x12!!\x16\t\x1e\x15,\n\x16\x1a\x10-\x1c.\xa3!\t\x13!!\x16\t\x1f\x16+\v\x16\x19\x10-\x1b.yi\x8f)EZ0f\x92?sFQzvUVuw\xe9\x11\x14X\x15\x0f'\x06\x0e\"\x17(%$\x11\x14X\x15\x0f'\x06\x0e!\x18(%\xab\x90h6^?%\x91gBrD\xfe=sXUvzQSx\x00\x00\x00\x00\x02\x00\x00\x00\f\x02\x00\x01t\x00\v\x00\x17\x00\x007\x17\a'7\x17\a'\a\x177'7\x17\a'7\x177'\a\x17\a'\xb3gg\xb3\xb3-\x1a\x13\x80\x804M\xb3\xb3\xb3-\x1a\x13\x80\x804M\x19g\xdagf\xb3\xb3-\x19\x13\x80\x804L\xb3\xb3\xb3-\x19\x13\x80\x804L\x1ag\x00\x03\x00\t\xff\xc8\x01\xf9\x01\xb8\x00\a\x00\x13\x00\x1f\x00\x00\x122\x16\x14\x06\"&4\x177'\a\x17\a'7\x177'\a\x177'\a\x177'7\x17\a'\a\x9aΑ\x91Α\xc7JM\x185\x1bMM\v\x19#~\xe0~~JM\x185\x1aNN\v\x18\x01\xb8\x91Α\x91\xce\xe6KN\x195\x1aMM\v\x18$~|~~KN\x195\x1aMM\v\x18\x00\x00\n\xff\xf8\x00\x0f\x02G\x01k\x00\n\x00\x15\x003\x00;\x00M\x00U\x00]\x00j\x00u\x00}\x00\x007\x14\x0e\x01#\"&462\x16%2\x1e\x01\x15\x14\x06\"&46\x17\x06&'\a'\x0e\x01'.\x017&'3>\x01323232\x16\x173\x06\a\x16\x06$4&\"\x06\x14\x1627>\x017.\x01#\"#\"#\"\x06\a2\x1e\x02\x04.\x01\x0e\x01\x1e\x016$\x14\x06\"&462\x1754&#\"\x0e\x01\x15\x14\x1626%\x14\x0e\x01#\"&462\x16\x064&\"\x06\x14\x162\xa6\x06\v\a\t\x0f\x0f\x13\x0e\x01\t\a\v\x06\x0e\x14\x0e\x0ed/w%\x1f\x1e$s/0\x12#\t\x13Z$o+\x03\x04\x04\x03)m$`\x13\n#\x0f\xfe\xccC_DD_`\x04P7\x1bN\x1e\x02\x03\x01\x02\x1eP\x1b\x1c2%\x18\x01\x0e!VZ(!WY\xfe\xd2*;**;\x11\x1b\x14\f\x16\f\x1b'\x1b\x01:\x14 \x14\x1d**;)\x18\x1b'\x1b\x1b'\xa7\x06\v\x06\x0e\x13\x0e\x0e\x0e\x06\v\a\t\x0e\x0e\x13\x0e\x8b%\x0f//.-\x0f\"#v0\x1f\x1b\x16 \x16\x1a\x1f/u\x1f_CC_D~7L\x02\v\x11\x10\f\x16#1+Y(!VZ(!{;**;*H\x01\x13\x1b\f\x16\r\x13\x1b\x1b\x13\x13!\x13*;**1'\x1b\x1b'\x1b\x00\x00\x00\x00\x03\x00\x01\xff\xbb\x01<\x01\xc0\x00(\x004\x00@\x00\x00%\x06\a\x1f\x01\x16\x0e\x01'&'\a\x06.\x017617&'.\x017>\x01\x17\x1e\x0226?\x016\x16\x17\x1e\x01\x0e\x01%4632\x1e\x01\x15\x14\x06\"&7\x14\x162654&#\"\x0e\x01\x01\x13!9\x15L\r\f\x1f\x0f\x149L\r#\t\fL\x15; \x1b\x10\t\x06\x1b\x15\x04\x10140\n\v\x15\x1b\a\x03\x02\f\x0e\xfe\xfdL6#<#LlLB&4&&\x1a\x11\x1e\x11r\x15\x06\x15L\r#\t\v\x149L\r\f\x1f\x0fM\x14\x06\x15\x12\x17\x12\r\a\x0e\x03\n\x10\x0e\b\a\x0e\a\r\v\f\x10\v\xc36L#;$5LL5\x1a%%\x1a\x1b%\x11\x1d\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\a\x00\x17\x00\x1f\x00D\x00\x006462\x16\x14\x06\"7\x11\x14\x06#!\"&5\x11463!2\x16\x04\x14\x16264&\"\x17.\x01\a\x06#\"&/\x01&\x06\a\x06\x1e\x01\x17\x16\x17\a\x14\a\x06\x16?\x01\x16\x17\x166/\x0267>\x01\xb8\x18 \x18\x18 \xf0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xcf/D//D\u007f\x04\x10\x0e\x16%\x10\x1e\a\x06\x0e\x10\x04\x06\x06\t\f\x14%\r0\r\x1c\r0$\f\r\x1c\r/\r#\x15\x11\n\xfe!\x18\x18!\x17\x89\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1cSD//C0\xac\b\x04\b\x12\t\x04\x05\b\x04\b\a\x0e\b\b\r\x04\f\x01/\r\x1d\r0$\f\r\x1c\x0e0\f\x04\r\v\x0f\x00\x00\x00\x00\x02\x00\x00\xff\xf0\x01\xc0\x01\x80\x00\x0e\x00+\x00\x00\x012\x16\x1d\x01\x14\x06#\"&=\x01463\x1367>\x0154&#\"\x06\a\x06\a&'.\x01#\"\x06\x15\x14\x16\x17\x16\x17\x162\x01\x98\x11\x17\x83]]\x83\x18\x11\xcd\x18\")\x0f\x12\f\n\x10\"\x1b\x13\x13\x1c \x10\n\r\x12\x0f*\"\x18\t\x18\x01\x80\x18\x11\x87]\x83\x83]\x87\x11\x18\xfe\xf4\x17 '\x12\v\f\x12\f!\x1a\x12\x13\x1b\x1f\f\x12\f\v\x11( \x17\t\x00\x01\xff\xff\xff\xf1\x02\x80\x01\x8f\x00L\x00\x00\x01\x15\x06\a\x0e\x03\a#'\x0e\x01\a\x14&1.\x01'.\x01\a<\x0153\x15\x0e\x01\x17\x1e\x01\x17>\x027.\x01'5\x15\x0e\x01\x17\x1e\x01\x17676.\x01#<\x015:\x023\x15\x06\x0f\x01\x1e\x01\x17\x13.\x01#5\x02\x80'\x11\x06+&2\x12\x0eR\aJ\x12\x0f\x17a\x17\n0\x12\xa2\x12 \x06\aj\r\a\x1d!\x06\x05;\b\v-\x8e\x10\x13\x06\t\x1e\t\x1d\x13\x05\x06\x14\x11\x11<)\x05&\x14;\x03@\x02z\x05\x1e\f\x01\x8d\f\x01(\rcZs)\xc1\x0e\x8e%\x01\x017\xda8\x160\x01\x02\n\x02\r\x01\x14\x0e\x0e\xf6\x1c\r8=\r\n\x87\x0f\x13\x0e\r\x01\r\f\x14B\x137.\n\r\x06\x02\n\x02\r\x02\x1e{\t\x8f\x04\x01\x1a\x0f\r\x0e\x00\x00\x11\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\x02\x00\n\x00\x1c\x00.\x006\x00F\x00R\x00Z\x00l\x00~\x00\x8c\x00\x94\x00\xa6\x00\xb2\x00\xb6\x00\xc8\x00\xd0\x00\x00%\a7&2\x16\x14\x06\"&4\x05\x06\x15\x14\x17\x163237654'&#\"\a'\x14\x15\x14\x17\x1632?\x01654'&#\"\a&\"\x1d\x01\x142=\x01\a\x06\x15\x14\x1f\x01\x1632545'&#\"\x0e\x01\x14\x1f\x01\x16264/\x01&\x06\x14;\x0124+\x01\x17654'&#\"#\a\x06\x15\x14\x17\x1632?\x01654/\x01&#\"\a\x06\x15\x14\x1f\x01232\x17454#\"\x0f\x01\x06\x15\x14327\x1754\"\x1d\x01\x1427654/\x01&#\"\a\x06\x15\x14\x15\x17\x1632>\x014/\x01&\"\x06\x14\x1f\x01\x16'7\x0f\x01%654/\x01\"#\"\a\x06\x15\x14\x1f\x01\x1632724+\x01\"\x143\x01\x13mGTΑ\x91Α\x01\x94\x05\x01\x02\x05\x02\x01\x0f\x05\x01\x02\x05\x02\x01q\x05\x01\x02\x05\x02\x06\x01\x05\x01\x02\x05\x029\x10\x10S\x05\x01\x06\x02\x05\b\a\x02\x05\x02>\x05\x02\f\x02\a\x04\x02\v\x03B\b\x10\b\b\x10 \x05\x01\x02\x05\x02\x01\x0f\x05\x01\x02\x05\x02\x01\x13\x01\x05\x0f\x01\x02\x05\x02\x01\x05\x0f\x01\x02\x05`\b\x05\x02\x06\x01\b\x05\x02I\x10\x10C\x05\x01\x06\x02\x05\x02\x01\x05\a\x02\x05\x02>\x05\x02\f\x02\a\x04\x02\v\x03dt\xb0t\x01G\x01\x05\x0f\x01\x02\x05\x02\x01\x05\x0f\x01\x02\x05\t\b\b\x10\b\b\xadGm\xe5\x91Α\x91\xce\x1e\x02\x05\x02\x01\x05\a\x02\x05\x02\x01\x05\x01S\x01\x02\x05\x02\x01\x05\x0f\x01\x02\x05\x02\x01\x05\x13\b\x10\b\b\x10\a\x02\x05\x02\x01\x0f\x05\b\x01\x02\x0f\x05)\x05\x06\x03\v\x02\x04\a\x02\f\x02\x85\x10\x10Q\x02\x05\x02\x01\x05\a\x02\x05\x02\x01\x05\x01\x8e\x01\x02\x05\x02\x06\x01\x05\x01\x02\x05\x02\a\xdc\x02\x01\b\x05\x0f\x01\x02\b\x05\v\x10\b\b\x10\b\x0f\x02\x05\x02\x01\x0f\x05\x01\x02\x05\x02\x01\x0f\x05)\x05\x06\x03\v\x02\x04\a\x02\f\x02o\xb0t\xb0G\x01\x02\x05\x02\a\x05\x01\x02\x05\x02\x06\x01H\x10\x10\x00\x00\x00\x04\x00\x00\xff\xc4\x02\x01\x01\xb9\x00\r\x00\x18\x00\"\x00,\x00\x007'>\x0132\x17\x16\x17'&\x0e\x02\x174>\x0132\x16\x14\x06\"&%\x16\x06\a\x06'76&'\a\x1e\x017\a.\x01547\x84M#f7C:@!\xcd\x16)#\x1b\x19\x17&\x17#11F1\x01;!\x00\x00\x00\x01\x00\x02\xff\xc8\x01\xf8\x01\xb8\x00\xac\x00\x00%\x14\x15\x14\x0e\x01#\"&'4&5&7>\x017\x06\a67>\x01\x17\x0e\x01\x17\x16\x17&67>\x01\x17\"\x06\a\x06\x150\x15\x14\x16\x17\x166764'&'.\x01\a0#\"\a0#\a\x06\a9\x03>\x013676;\x012\x170230\x163\x16\x17\x16\x17\x16\x17\x16\x17\x16\x17\x16\x170\x16\x170\x1f\x01\x16\x142\x161\x16\x15\x17\x14\x170\x170\x17\x142\x142\x161\x14\x16\x1f\x01\x15\x16\x15\x16\x14\x16\x14\x17\x141\x16\x17\x16\x17\x14\x16\x170\x150\x16\x14\x1e\x011\x15\x16\x150\x161\x14\x170\x15\x14\x16\x141\x1f\x01\x16\x17\x15\x14\x01\xf8BsC\\\x8a\x0f\x01\b\x18\b\x1d\r\x17\x03\x11-%\\\x13*=\t\x03\t\b\x02\v\f\x1f\f\x04\f\x03\x06\x0f\v$`\x1b\x12\x16\f\x0f#a0\x01\x02\x03\x01\x06\x1d\x15\x01\x01\x01\x1f4\x16\x17\v\x13\x13\x02\x01\x04\x01\x1d\x1b\x05\x02\r\f\x06\x06\n\b\r\v\x02\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x03\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x05\x02\xcf\x05\tCsBuY\x02\x06\x02C9\x14%\x06,(9\"\x1b\a\x13\x0eb:\x15\x13\x121\x11\x11\r\x02\x13\x06\x0e\x10\x01\x0e#\n!\x11)\x1aV$\x12\x0e\"\x1c\t\x01\x02\x06\r\x01\x01\x1d\n\x05\x04\x01\a\r\x02\x02\x06\t\x05\x04\b\t\r\x0e\x03\x01\x01\x02\x01\x01\x02\x01\x01\x02\x01\x01\x02\x01\x01\x02\x02\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x06\x06\x01\x02\x01\x01\x02\x01\x01\x03\x01\x02\x02\x01\x01\x02\x01\x01\x02\x01\x04\x01\x14\x15\x05\x01\x00\x00\x02\x00\x00\xff\xd0\x01\xf1\x01\xc0\x00\x17\x00%\x00\x00\x01\"\x0e\x01\x16\x17\x16327\x06#\"#.\x01546;\x012\x17&\x13\x06&'>\x014&'>\x01\x17\x16\x14\x01:=`*\r&=W5.F_\b\x04c\x89\x91g\x01^F-0\x1fG\x1e*76+\x1fG\x1fO\x01\x9fJk~0K\x1e?\x05\x8fdg\x91?\x1e\xfes\x13\x03\x15\x10b~b\x10\x15\x03\x13J\xd9\x00\x04\x00\x00\xff\xbe\x02\t\x01\xca\x00!\x00*\x002\x00<\x00\x00\x01\x16\a!\x14\x1e\x01673\x0e\x01#\"'\x0e\x01.\x01546767\x06\a>\x01\x176\x16\x15\x14\x05\x0e\x01\x1e\x0267&734.\x01#\"\x067\x16\x17654.\x01#\"\x01\xe3&\v\xfe\xb7/?D\x13y\x18wJF \">5\x1f\x1a\x129O5E\x13\x89Qap\xfeI\x12\r\t\x17#)\x17IY\xcf\x1e/\x1a*=\xb7C-\x0f\x0e\x19\x0f\x1b\x01 DI$3\x10\x18 DN\x0f\x11\x11\x03&# Q gF\x16OUk\x05+\x199'\xec%9!\x13\x02\f\r*\xbe\x1b,\x186\x93\x1aJ&\x1e\x10\x18\x0e\x00\x00\x00\x00\x02\x00\x00\xff\xdf\x02\x00\x01\xa0\x00\x14\x002\x00\x007\x1e\x02\x17#\"&5\x1146;\x01\x06\a\x0e\x02\x1e\x01%2\x16\x15\x11\x14\x06+\x016'\a\x06\a\x06'.\x01'.\x0167676\x177&'-\v\n\x1c\x14P\x0e\x14\x14\x0e:\x15\x10\r\x0e\x03\a\x06\x01\xb8\x0e\x14\x14\x0e4>\x05\x89\x037#\x17\x0e\x15\x0e\n\a\x03\x05\r$6\x1c\x89\x14 \x8f/*A\x15\x14\x0e\x01|\x0e\x14\x13\x19\x140#>\x1b\xec\x14\x0e\xfe\x84\x0e\x14=g\x1e>\v\b\x13\f3E/;\x17\v\x1b\a\f7\x1d3!\x00\x00\x00\x00\x04\x00\x1f\xff\xc1\x01\xa3\x01\xb7\x00J\x00_\x00q\x00\x8d\x00\x007&676\x1e\x01\x175>\x0132\x16\x15\x14\x06'&6\x172>\x0154&\x06\a\x0e\x03\x1c\x02\x15\x166764'&#\"\a\x06\a#\x06'&=\x014;\x012\x14+\x01\x153>\x01\x1e\x01\x15\x14\x0e\x02.\x01\x134>\x02\x1e\x02\x17\x16\x0e\x01#\".\x02\x06\a\x06&\x136\x16\a\x0e\x01.\x01'&6\x16\x15\x1e\x036'47'&>\x0132\x1776\x16\x0f\x01\x17\x16\x06#\"'\x06\a\x06#\"'&g\x05\x02\v\v\x05\r\x0e\x019((:O2\b\t\b\x1d$\x18*8\x13\x05\x06\x05\x02'Z &&'77&\x0f\x06\x01\x06\x0e\x0e\n\xf2\b\b\xe0\x01%eU;%9HD<0\x12\x1d%,-.\x13\x04\x06\n\x02\x01\x16%0C#\x06\t\xe3\x06\x14\x051\x81oT\t\x01\x0f\x0f\n5IRR\x93\x14\x12\x03\x04\t\x02\x02\x14\x12\x04\x10\x04\x12\x11\x05\v\x05\x02\x14\x04\x06\t\x03\x04\x05\x05h\n\t\x04\x03\x06\x1e\x10^%79(1;\x0f\x03\x1c\x03\t\x1e\x1a\x1d&\x01\x16\x06\t\x0f\f\x1b\x16/\x13\x18\f &m'&&\x0f\t\n\x03\x04\b\xbb\n\x1e\x85(\x13\"Q5*E'\r\x0e1\x01*\x05\b\a\x03\x05\f\x19\x13\x04\n\b\x11\x15\x11\x02\r\x03\x12\xfe\xba\x06\x14\x061\x1a&_?\x05\a\x03\x050J%\b\x1e\x8c\x03\x14\x12\x03\b\a\x14\x12\x05\x10\x05\x12\x11\x06\r\x14\x04\x06\n\x05\x05\x00\x00\x04\x00\x06\xff\xe0\x01\xbb\x01\xa0\x00-\x006\x00N\x00d\x00\x00\x01<\x03.\x05#*\x01\x0e\x02\a'4632\x1e\x02\x1d\x01\x14\x16\x1f\x01\a&'\x0e\x02.\x0154>\x03\x175\x06\x15\x14\x17\x1676\x17\x0e\x02#\".\x01'&62\x17\x1e\x04>\x0176\x16\x14\x17\x06\a\x06&7>\x01'&\a\x06&>\x0376\x17\x16\x06\x01\x01\x01\x02\x04\x05\b\t\x06\x02\x05\x0f\r\x0f\x04JI>\x1f.\x18\v\x10\b\b9&\a\r.2-\x1d\x1a%3%\x12T\x1c\x1d\x11\n\x88\a$T/0^3\x10\x03\x01\x05\x02\x18\x167&@9J'\x03\x06$\t\f\x04\x05\x02\x06\v\x04\x06*\r\x02\x05\b\n\v\x05&\b\x02\x04\x01\x1d\x04\x0f\a\r\x06\t\x05\x06\x02\x02\x06\t\x14\x0e\a(@\x12\x1c\x19\v\x93\r\x1a\a\a8$\v\x15\x19\x02\x10+ \x1d,\x18\x0f\x05W)\x037\x1d\t\n\x1a\x0f\x8b\t\x1b\x1f))\x13\x04\x05\x01\x0e\r\x1a\n\v\a\x13\x12\x01\x01\a\a\x15\n\x04\x03\x05\v&\x06\a\x04\x01\x03\x04\x04\x04\x03\x01\x04\n\x04\x1b\x00\x00\x00\x01\x00\x11\xff\xe0\x01\xb0\x01\xa0\x00\t\x00\x00%#\x15#\x113\x15\x05\x11#\x01\x14i\x9am\x012\x9cu\x95\x01\xc0hV\xfe\xfe\x00\x01\x00\x00\xff\xfc\x01\xc4\x01\x83\x00&\x00\x00\x01\x06\a\x06#\"'&'.\x03#\"\a'>\x0476\x17\x16\x17\x16?\x01676&\x06\a6\x17\x16\x01\xc0\x03Y[?'\x1b\x06\t\f\f\x11\x0f\t\x05\x1e\x15\n(\x15\x1e\x16\t4\f\x18\x12\x10\"\x02\x1c\x02\x02\x15\x1d\x0f!]E\x01&ArwI\x13#-)0\x11\x15\x1b\b%\x12\x18\n\x01\x05L\x97\x10\x0f5\x02-\x17\x15\x13\x03\x06l\x03\x02\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00\n\x00\x00\x11!\x11!%'7#\x17\a\x17\x01\xc0\xfe@\x01<@@\xb8@@\\\x01\xa0\xfe@{\xb8VV\xb8Y\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00,\x00?\x00N\x00\x00\x11!\x11!\x132\x1e\x01\x1574&#\"\x0e\x01\x1d\x01#\x1532\x1d\x01\x14\x0f\x01\x1535'&74=\x0137#4754>\x01\x1735'\"454=\x01#\a\x17\x16\x1d\x01\x14\x0f\x01?\x01'#'#\a#\a\x17\a\x177\x177\x01\xc0\xfe@\xbb\x06\a\x033#\x1e\x1a!\x12\x1c\x16\x06\a\x15\x83,\x04\x018\vD\x01\x02\bSg\x10\x03P\a\x19\x06\a\x15Q\x16\x04\x1b\x10\t\x10\x1b\x04\x16\t\a \x1f\a\x01\xa0\xfe@\x013\x04\n\t\x06\x1f\x16\x0e\x1f\x19\x15%\x03o\a\x01\x02\x1a\x19\x04\x01\x03\x02\x02q%\x02\x02\x18\n\n\a\xf2\x19\x03\x02\x01\x03\x01\x98\x1e\x06\x02\x06l\x06\x01\x03\xe7\x18\n\x1c\x1c\n\x18!\b\x11\x11\b\x00\x00\x00\x04\x00\x0e\xff\xe0\x01\xf2\x01\xa2\x00*\x009\x00G\x00T\x00\x00%2\x16\x06\a\x16\x15\x14\x06#\".\x01547.\x01632\x176?\x016\x1f\x01632\x16\x14\x06#\"&5'\a\x16\x176\x05\x14\x1632>\x0254&#\"\x0e\x01\x176'&\a\x06\"'&\a\x06\x17\x16272>\x0154&#\"\x06\x15\x14\x16\x01\xb8\x1b\x1e\t\x18\x03{X9a8\x03\x19\t\x1e\x1b\x16\x109O\x1f\x02\ta\f\x17\x11\x17\x17\x11\x10\x17X\x1cP9\x10\xfe\xdf\x18\x10\b\x0f\n\x06\x17\x10\v\x12\v\xd7\a\a\a\a\x15k\x15\x06\a\a\a\x1by\x1b\v\x12\v\x18\x10\x10\x17\x17\xf4&1\f\v\x0e?Y)E*\r\v\r0'\x10(\x03\x8a\t\x02\x16\x16\x17!\x17\x17\x10\x14}\x03'\x0fi\x10\x17\x06\v\x0e\b\x11\x17\v\x12h\x06\a\a\a\x15\x15\a\a\a\x06\x1cR\n\x12\v\x11\x17\x18\x10\x10\x17\x00\x00\x00\x00\x02\x00\x19\xff\xc8\x01\xe7\x01\xb9\x00\x02\x00'\x00\x00701\x05\x15!\x1e\x0267\x15\x0e\x01\"'.\x015&7\x06\a36.\x02'#\x0e\x01\a>\x0132\x16\x17\x16\x1a\x01\xcc\xfe\xc6\x01>W\\\x1e\x19Nb'4D\x02z\x1a\b\xb0\x03\x13\x1e\x1f\v\fGq$\fzc@h\x1e\x1d\xdc\x104-6\t\x13\x16i\x0f\x15\x0f\x14b6\x839!.\x1e+\x14\v\x01\x02G4]\u007f;64\x00\x00\x03\x00\x00\xff\xc8\x01\xd8\x01\xb8\x00\b\x00\x16\x00-\x00\x00%2\x16\x06+\x01\x15#5\x17\x0e\x02#\"&4632\x16\x17\a\x17'\x06#\"&54632\x177.\x01#\"\x06\x14\x16326\x01\xa6\x0f\r\f\x10\v\x1aW\x15AX2g\x91\x91gGp#\xba\x9a=+O>WW>H-;\x1f]7[\x81\x81[:b\xf5\x1a\x1b,a\x96.C&\x91ΑIAmn\x1fHW>>W?#/5\x81\xb6\x81;\x00\x00\x00\x04\x00\b\xff\xe0\x01\xb8\x01\xa0\x00\x03\x00\a\x00\v\x00\x0f\x00\x00%\x17\x15'\x13\a'7\x17\a'5\x137\a#\x01d%\x85\xb4S\x9a\x17}\xfa.*\xfa}\xd6\xce\x18\xd6T\x01A\x86`&\x8f:\x1e\xd6\xfe\xfa:\xc9\x00\x03\x00\x12\xff\xc0\x01\xee\x01\xc3\x00Y\x00e\x00q\x00\x00%2\x1d\x01#54&\"\x06\x1d\x01#54;\x012\x1d\x01354;\x012\x1d\x01354;\x012\x1d\x0135435&46\x16\x14\a\x15632\x1632632\x1d\x01\x14#\"&#\"\a\x152\x1d\x01354;\x012\x1d\x01354;\x012\x1d\x013543%54+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012\x01\xe9\x05\xb7\"*\"\xb7\x05\x1b\x05$\x05\x1b\x05$\x05\x1b\x05%\v\t\x10\x10\n\r\v\x06\x16\x05\x05\x11\x02\x04\x1b\x06\x14\x06\v\x0f\f%\x04\x1c\x04%\x05\x1b\x05$\x05\xfe\xfb\x05\x1b\x05\x05\x1b\x05\x93\x05\x1b\x05\x05\x1b\x05\xa0\x04\xdc`\x1a\x1d\x1d\x1a`\xdc\x04\x04 \xb2\x04\x04 \x04\x04 \x04p\x04\x14\b\b\x14\x04\x05\x03\x04\x04\x04<\b\x04\x04&\x04 \x04\x04 \x04\x04\xb2 \x04\x05@\x04\x04@\x05\x05@\x04\x04@\x05\x00\x00\x00\x01\x00\x00\xff\xfc\x02\x82\x01\x84\x00Y\x00\x00$\x14\x0f\x01\x06#\"'&=\x01#\x1e\x02;\x0154;\x012\x1d\x01\x14+\x01\"=\x01#\".\x02+\x01\x0e\x01#\"&4632\x16\x172\x16>\x057>\x03\x1723>\x0132\x1e\x02\x15\x14\x0e\x01#\"&'#\"\x0e\x01\a!546\x1f\x01\x02\x82\x05Y\x03\x02\x02\x02\x05\xee\b\x1a\x16\r\x1b\tY\t\tY\t\x1b\x19'\x14\x1a\x0ee\x06&\x19\x1d**\x1d\x19&\x06\x05\x11\x05\f\x04\t\b\t\x06\x0e\x15\x19\x12\x14\a\x04\x06\x1b\x11\v\x14\x0e\t\x0f\x18\x0f\x11\x1b\x06\x1e\r\x16\x1a\t\x016\t\x05Y\xc5\n\x035\x01\x01\x02\x05$\r<\"\x1b\t\tY\t\t\x1b,6,\x17\x1e*:*\x1e\x17\x01\x01\x01\x05\b\x0e\x13\r\x1f\"\x0f\x03\x01\x10\x14\t\x0e\x14\v\x0e\x19\x0e\x14\x0f!<\r#\x05\x06\x036\x00\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x19\x00\x00$\x14\x06+\x015326\x14\x06\"&462\x164&+\x01\x153532\x01F\x16\x0fFF\x0fȑΑ\x91\xce\x113$x2F$\xf5\x1f\x16J\x1dΑ\x91Α\xf7H3\xf8J\x00\x00\x04\x00\x01\x00\x04\x02\x80\x01|\x00\x13\x007\x00F\x00U\x00\x00%\x1e\x02\x15\x14\x06#!\"&5467>\x0132\x16\a2>\x0254&'\x06\a\x0e\x01&7654&#\"\x06\a\x16\x17\x16\x0e\x01'&#\"\x06\x14\x163$\x14\a\x06#\"&764'&>\x01\x17\x06\x14\a\x06#\"&764'&>\x01\x17\x01\xa8\x15\"\x148'\xfe\xde/B7*\x11X6A`\x0e\v\x13\x0e\t\x13\x0f\x02\x04\x04\x18\x11\x05\x06J4%?\x0f\x1e\x16\n\b\x15\v\x15\x1d\x1d**\x1d\x02\r%\a\v\f\f\a\x1e\x1e\b\f\x16\t\"\x1b\x06\v\r\f\a\x14\x14\a\f\x15\t\xe4\x04\x1b'\x16'8C.+?\x063?X\xd0\b\x0e\x13\v\x10\x1b\x06\r\r\f\x04\x10\r\x14\x144J)!\b\x16\t\x17\x06\b\x15);)x\x878\t\x16\v-l-\v\x15\x02\vIa(\t\x16\v\x1cH\x1d\n\x16\x01\n\x00\x00\x02\x00\x00\xff\xd3\x01\x82\x01\xad\x00\x1b\x00:\x00\x007&54636\x1e\x02\x17\a'7&\a\"\x06\x15\x1476\x17\x16\x06\a\x06&%\x1e\x02\x0e\x01\a\x06#\x06/\x017\x17\a\x16327654\a\x06'&746\x176*\x18^I\"<5\x11\x143%\x1b8C)G\x1d!\x17\x13\x01\x13\x16G\x01(\n\r\x02\a\x16\x104RmR\x0f=#!@P_\x1a\x02\x1d\"\x16\x14\x01*\x1d&\xc3\x1d3IP\x01\r\x1f\f\x0fH\x18'%\x01*#\x18\t\a\x15\x136\x13\x17\x05\x14\f$*+)\x0f,\x01I\x0eH\x1c'0A\x06\x06\x18\b\b\x16\x12\x1b\x1d(\x02\x01\x00\x04\x00 \xff\xc0\x01\xa0\x01\xc0\x00\x02\x00\x05\x00\x1a\x00&\x00\x00\x01\a'\x117\x177\x14\x0e\x04#\".\x024>\x0232\x1e\x02\a7'\x15'\a\x17\a\x177\x177\x01%+\x01\x01*|\v\x18\x1e,.\x1e.C9\x1d\x1d7D-,B3\x1a\x9eO}J\x1b]]\x1bJ\x02\u007f\x01\x15+V\xfe\xf9V+Y3O7&\x15\t\x166f\x95i8\x18\x189gKX\x87\xb1I\x1a^\\\x1bI\xaa\x80\x00\x00\x00\x03\x00\x19\xff\xc0\x01'\x01\xc0\x00\v\x00\x0e\x00\x11\x00\x007\x17\a'\a'7'7\x175\x17#'\x1d\x027\xc4b\x94\x03V\x1fll\x1fV\x92422\xbcg\x95\xc6V ll VΝ2djd2\x00\x00\x00\x05\xff\xfc\xff\xd2\x02\x04\x01\xae\x00\x06\x00\v\x00\x0e\x00\x13\x00\x19\x00\x00\x13\x161#762\x037\x13'&73\x03%\x16\x0f\x01\x13'\x17#762i9\x848\x03\x0ef\x1d\xe2\xf8\v\xa5\xbc^\x00\xff\x04\v\xf8\xe288\x849\x02\x0e\x01\xa7\xaf\xaf\a\xfe\xf2X\xfeڸ\te\xfe\xda\xce\r\t\xb8\x01&\xaf\xaf\xaf\a\x00\x00\x04\x00\x14\xff\xe0\x01\xec\x01\xa0\x00\x1d\x00!\x00)\x00-\x00\x00%\x1e\x01\x0e\x01#\"&'*\x01#\x0e\x01#\".\x0167.\x01>\x022\x1e\x02\x06%35#\x175\x06&'\x15\x1e\x01'35#\x01\xcf\x14\x04\x1a7#\x1e7\x0f\x05\x14\x05\x0f7\x1e#7\x1a\x04\x14\x17\x05!=ZfZ=!\x05\xfe\x95**\xd9-e)&lm\xa6\xa6~\x188/\x1f\x1a\x18\x18\x1a\x1f/8\x18&TJ;##;JT-:\x90\x17\x10\x12 \x19\"\x12j:\x00\x00\x00\t\x00\x00\xff\xdf\x01\xc0\x01\xa0\x00\x0f\x00 \x00$\x00(\x00+\x00/\x003\x006\x00:\x00\x00\x01\x11\x14\x06#!\"&5\x11463!2\x16\x03\x114+\x01\a'\a'#\"\x15\x11\x143!2\x01\x15#5\x17\x15#5?\x01#\x05\x15#5\x17\x15#5?\x01#\x13\x15#5\x01\xc0\x19\x12\xfe\x96\x12\x19\x19\x12\x01j\x12\x19%\x06\to==o\t\x06\x06\x01j\x06\xfe\xfbIIIT6v\x01\x12\xc4\xc4\xc4p@v\x8ac\x01u\xfe\x96\x12\x19\x19\x12\x01j\x12\x19\x19\xfe\x84\x01j\x06K22K\x06\xfe\x96\x06\x01\x01%%J&&\x93,u%%J&&\x93,\xfe\xf6%%\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x19\x001\x00\x00\x112\x1e\x04\x0e\x01\x15\x17#'\"\x0e\x02.\x02'.\x04\x17&\x06\x1f\x01\x1e\x02\x17\x16\x17\x1656'&'&'.\x04V\x85P5\x15\a\x06\aQ\x1aF\x06\x1b\x17! %&\x13\x1a#\x18\x0e\x1aD\x17\x02\n\t\x16$\x0f\x12GI&\x01\r\r\a%6\x0e\f\x1d\x19(\x01\xa0\x1c,>=E10\x05RG\x05\x03\x03\x04\t\x14\x0f\x15.A9l\x03\n\x04\b\a\x0f,\x1c!\x89\x1f\x10\x01\x01\t\b\x06\x1bg\x1a\x15,\x19\x1f\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00i\x00\x00\x13\x14\a\x06\a\x06#\"&54676327\x11\x14\x06#!\"&5\x11463!2\x16\x064&'&#\"\x0e\x05\a'>\x0154#\"\x0e\x02\x14\x1e\x023232\x15\x061\x06\a\x06/\x014>\x0314&#\"\x0e\x02\x15\x14\x1e\x013267>\x044>\x017632\x17\xfd\x04\t\b\x01\r\x10\x0e\x13\x13\b\x06\r\xc3\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c@\x16\x04\x05\x04\x05\t\t\x06\v\x04\r\x01\x01\x01\x0eD\x19+\x1a\x0e\f\x16 \x15\x01\x02\x04\x01\a\x1d\x10\x03\x01\x06\b\b\x06\x1d\a\b\r\b\x04\r\x18\x10\"3\t\x02\x03\x01\x02\x01\x01\x02\x01!\x19\x05 \x01+\n\x10,(\x05\x1c\x12\x190\n\x043\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xd3\b\"\x01\x03\x01\x03\x02\x06\x01\b\x01\x01\a?\x11?\x18%*) \x15\f\x01\x01<\v\x06\x0e\x04\a\r\b\x06\x04\x05\f\n\x10\x11\a\x10\x19\x0e8$\x06\f\b\x06\x04\x03\x01\x01\x01\x11\x05\x00\x00\x02\x00 \xff\xc0\x01\xc0\x01\xc0\x00H\x00a\x00\x00%\x1e\x01\x15\x14#&#\"\a\x0e\b\a\x0e\x01#\"&54632\x16\x15\x14\x0e\x04\x15\x14\x17\x167674\"#\"&54>\x0132\x1e\x01\x15\x14\x06\a\x17>\a32'654.\x02#\"\a\x0e\x01\x15\x14\x1e\x013:\x02>\x0276\x01\x97\x06#\a2\t(5\x02\x02\x01\x01\x02\x01\x02\x03\x04\x02\x0fR6(.\x1d\x17\f/\a\n\f\n\x06\x13\x1c\x16\x10\x06\x02\tBI%R6$0\x19\x16\x02\x01\x03\x11\x06\x0f\b\x0e\n\x0e\a\x06\xa6\x05\x01\x03\t\a\v\v\x1f\x1f\b\x17\x12\x01\x06\x04\x05\x03\x02\x01\r\xed\x027\a\x05\b\x1b\x01\x01\x03\x02\x06\x06\n\f\x11\n8Y1'\x196\x13\b\x01\x04\a\v\f\x11\t\x14\x02\x01*\x1e-\x04GB-XA\x14-$\x1cf\n\x01\x02\t\x04\b\x03\x05\x02\x02P\x1a\x11\x06\t\t\x04\x06\x11M(\x12\x1e\x19\x01\x01\x03\x03?\x00\x00\x03\xff\xfe\xff\xbf\x01\xbd\x01\xc0\x00\x05\x001\x00F\x00\x00\x01\x15&'\x1e\x01\x1767\x1e\x01\x06\a\x06\"'.\x01>\x0132\x17\x06\a&#\"\x06\x15\x14\x1e\x01\x17>\x0354'\x16\x15\x14\x0f\x01\x16654\x13\x1e\x01\x06#\"'6767\x0e\x01\a&547>\x02\x01\x14\x19.\x1f%$\x16\x14\r\x03\x19\x1b3\x9e3(\x10&Y;!\x1d\v\x02\x17\x1a:N\x1c3!#1\x17\t\x01\x13m\x04;Ob\x19\x02/&\x1c\x1bK\x19\x06\x01\x0fB%\f\x14\r0*\x01*\x01JM\x14X\xa4\x04\r\x1fCJ\x1d88*p^B\v\x15\x16\tT:\";'\x06\x0eAUM'\x18\f79\x89D\x01\x01R;\x1e\x01\x1f$cI\x1a)+\r\a!2\b\x13\x14\x1e\x14\f\x0e\x19\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00@\x00U\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x13>\x01'\x06\a\x16\x15\x14\x06'3654'5.\x02'\x16\x17\x14\x15\x14\x0e\x02\a.\x0154632\x1767&#\"\x0e\x01\x16\x17\x162726&'\x0e\x02\a\x06\x15\x14\x17>\x017\x14\a\x06\a\x16\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\xe9\x19\n\f\r\x0e\a1%\x02D\v\x02\n\x14\r\x1d\x10\x06\x0e\x1f\x16\x1e'1$\x10\x0e\x02\a\x13\x14%8\x18\v\x18 c<\x18\x1d\x01\x10\b\x1a\x1e\b\r\b\x17)\t\x04\x10.\x10\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xa3\x1bH\x1a\a\x03\x10\x14%3\x01+U$\"\x01\x11#!\t1.\a\x0f\x19/6(\t\x060 $5\x06\x0e\r\a);F\x1a#\xb6.>\x17\x13\x0f\t\a\r\x13\r\v\x05\x1f\x14\x04\b\x1b\x1a\x10\x00\x02\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00h\x00\x00\x122\x16\x14\x06\"&4\x056'.\x04'#&76763654'&\a\x06\a\"'6'.\x02#0\"1\"\x0e\x02\a\x06\x17\x06#\"'&\x0e\x01\x15\x06\x17\x1e\x03\x17\x16\a\x0e\x04\a\x06\x15\x16\x17\x1e\x03\x17\x1632632\x17\x167\x167632\x16327>\x0276\x91Α\x91Α\x01\xa2\x03\b\r\x18\x0e\r\x03\x01\x01\x03\x02\x02\x11\x04\x01\x11\n\b\x06\b\a\x03\x02\x03\a\b\x1b \x12\x06\b\x11\x1b\x19\a\b\x04\x03\x04\a\t\x04\t\b\x03\x14\x01\t\x06\x06\x02\x02\x04\x01\x04\f\x0f\x17\r\x06\x01,\x01\x01\x01\x01\x01\x01\a\x02\x11\a\x12\x13\x1c\x15\x16\x1b\x13\x12\b\x10\x02\a\x01\x01\x02\x01\x01'\x01\xb8\x91Α\x91\xce\xc2\t\x02\x02\x0e\r\x12\a\x03\b\x05\x06\x05\x02\a\n\b\x04\x02\x02\x04\x01\x02<\x11\x12\x18\f\x03\n\x18\x11\x11<\x02\x04\x02\x02\x06\x04\v\a\x01\x03\x02\x05\x02\x05\b\x03\a\x12\x0e\r\x02\x01\a\x0e\a\x01\x03\x05\x05\x02\x06\x03\x0e\x13\x01\x01\x13\x0e\x03\x06\x02\b\x05\x01\x06\x00\x01\xff\xff\xff\xcd\x02\x02\x01\xb1\x00l\x00\x00%\x06\a\x14\x0e\x01\a\x06#\"&#\"\x06\a\x06'\x06'.\x01#\"\x06#\"'.\x025.\x02'0547>\x067056'.\x03'&7>\x01\x17\x16327&47>\x0330232\x1e\x01\x17\x16\x14\a\x163276\x17\x16\x15\x14\a\x06\a\x06\a\x06\x17\x141\x1e\x04\x17\x1e\x01\x01\xff\b<\x02\x03\x01\x03\t\x04\x18\v\x13\x14\x12(\"\x1e*\x12\x14\x13\n\x1a\x03\t\x03\x01\x03\x02\x10\x18\x1c\x01\t\x0e\x1b\x13\x12\v\t\x03\x01\x06\x03\x02\n\t\x0e\x01\x1d\x03\x02\x17\b\x0e\n\x06\x04\x03\b\f%(\x1a\f\t\x01\x1b/)\f\b\x03\x04\x05\n\f\n\v\x0f\x1a\x02\x05\x19\x04\x03\x06\x01\x06\x13\x15$\x13\x05\x057\x12\t\x01\b\v\x04\t\x05\t\f\x1d\x02\x03\x1e\f\t\x05\t\x03\f\b\x01\x02\x06\x0f\t\x01\t\x01\x03\v\x0f\x12\x0f\x10\x06\x02\x01\v\a\x05\a\x03\x04\x01\f\x10\t\n\x04\x06\x02\x18I\x13\x1a$\x0f\x05\x12%\x1b\x13I\x18\x02\x06\x05\x05\x05\r\x0e\v\x01\x01\b\n\a\v\x01\x04\v\x1a\x15\x15\x03\x01\t\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00n\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x016'.\x065#&76763654'&\a\x06\a\"'6'.\x01#0\"1\"\x0e\x02\a\x06\x17\x06#\"'&\x06\a\x06\x170\x1e\x01\x17\x16\a\x0e\x04\a\x06\x15\x16\x17\x1e\x02\x17\x1632632\x17\x167\x167632\x16327>\x0276\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01Z\x03\b\n\x12\f\f\a\a\x02\x01\x03\x02\x02\x11\x04\x01\x11\n\b\x06\b\a\x03\x02\x03\a\f.\x1b\x06\b\x11\x1b\x19\a\b\x04\x03\x04\a\t\x05\x0f\x01\x03\x14\x0e\b\x02\x02\x04\x01\x04\f\x0f\x17\r\x06\x01,\x01\x01\x02\x01\x01\a\x02\x11\a\x12\x13\x1c\x15\x16\x1b\x13\x12\b\x10\x02\a\x01\x01\x02\x01\x01'\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xc5\t\x02\x01\b\n\f\n\v\x03\x02\b\x05\x06\x05\x02\a\n\b\x04\x02\x02\x04\x01\x02<\x11\x1a\x1c\x03\n\x18\x11\x11<\x02\x04\x03\a\x06\v\a\x05\x05\x03\x05\b\x03\a\x12\x0e\r\x02\x01\a\x0e\a\x01\x05\b\x02\x06\x03\x0e\x13\x01\x01\x13\x0e\x03\x06\x02\b\x05\x01\x06\x00\x02\x00 \xff\xe0\x01\xd5\x01\xab\x00&\x000\x00\x00\x016\x16\a\x06\a\x0e\x04\a\x1e\x0132654&'67\x1e\x02\x15\x14\x06\"&4632\x1e\x01\x176\x0167&#\"\x06\x15\x14\x16\x01\xc8\a\x06\x06o\x0f\n\x1c$&3\x16\x114\x13Ih\x1a\x13\a\n\x10\x1b\x10z\xaczzV\x0f%%\fB\xfe\xe6\\d%(Ih$\x01\xa9\x02\x0e\x04JV6?\x1d\x11#\x1d\t\x0ehI\x1cE\x14\x0f\r\x1127\x17Vzz\xacz\a\f\b7\xfe\x8e\xc7^\x12hI\"O\x00\x00\x00\x00\x06\x00\x04\xff\xc0\x01\xbc\x01\xc0\x00\x00\x00G\x00M\x00S\x00Y\x00c\x00\x00?\x012\x17\a7\x16\x17\a7\x16\x17\a7\x16\x17\a7\x16\x15\x14\a'\x17\x06\a'\x17\x06\a'\x17\x06\a'\x17\x06\"'7\a&'7\a&'7\a&'7\a&547\x17'67\x17'67\x17'67\x17'6\x17\x11\a'\x117\x17'\a\x15\x177\x03\x17\x15\a'5$\"\x06\x15\x14\x162654\r\xd3\f\n\x04\x16\x15\x13\x1d-\x11\r2=\n\x06@D\x01\x01C@\x06\v=2\f\x12-\x1d\x11\x17\x16\x04\v\x16\v\x04\x16\x15\x13\x1e-\x11\x0e3=\f\x05@D\x01\x01D@\x05\f=3\r\x12-\x1e\x13\x15\x16\x03\n\xe6\xdb\xdb\xdb\xca\xca\xca\xca\xcaʼ\xbc\xbc\x01\x01\x8abb\x8abۄ\x01D@\x05\f=3\r\x12-\x1e\x12\x17\x16\x04\t\r\r\t\x04\x16\x15\x13\x1d-\x11\x0e3=\v\x06AE\x01\x01D@\x05\f=3\f\x13-\x1e\x14\x15\x16\x04\r\t\v\v\x04\x17\x14\x14\x1e-\x11\x0e3>\v\x05@D\x01\x1f\xff\x00\x80\x80\x01\x00\x80\x8auu\xebvv\x01Pm\xdbnn\xda;bFEccEF\x00\x00\x03\x00\x00\xff\xd4\x01\xc0\x01\xac\x00\x13\x00.\x009\x00\x00\x133\a#\"\x06\x1d\x01\x14\x163\x15#\"&=\x014>\x0173\x0e\t\a\x06\a5>\x01574&'&'3\x177\x11#673\x114'7\x16[\xba\a\xb3\x1d++)\f%6\x18*\xfeC\x13(\x18\x1a\x0f\x10\n\n\t\t\a\x1e0!\x1f\x01\n\x1c\x1a\x13>2\xe6\xd6\n\x02\xb71\a=\x01t\x13)\x1d\xce\x1d)\x135%\xcd\x18)\x1882i@E&(\x15\x15\r\f\x06\x1f\x023\x05.\x18\x01\v\x1bGA1\x9d\x89\xfe\xd6\x0e\x05\x01\x17.\x11\x12\x14\x00\n\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\n\x00X\x00c\x00u\x00\x84\x00\x92\x00\x9e\x00\xaa\x00\xc9\x00\xd8\x00\x00\x12462\x16\x15\x14\x0e\x01#\"\x05\x14\x06\a\x0e\x01\a#\x15\x14\x0e\x01#\"'\x06\"'\x06\"'\x06#\".\x015\x06#\"'67&'\x167&'&54>\x0232\x1767>\x01761>\x0132\x17632\x17\x16\x14\a\x16\x15\x14\a\x16\x17632\x17\x16$\x14\x162654.\x01#\"\x1747\x0e\x01\x1e\x01327654#\"\a\x06&\a4&\"\x06\x1d\x01\x14\x1e\x02326574.\x01#\"\x06\x1d\x01\x14\x1626574&\"\x06\x1d\x01\x14\x1626574&\"\x06\x1d\x01\x14\x162657\x0e\x02#\"&547\x06\x15\x14\x16\x17632\x1762\x1762\x17632\x17>\x0174&#\"\a\x0632>\x01\x1e\x01\a6\xd0\n\x10\t\x04\b\x05\b\x01&\x13\x11\x11N\x1a\x01\b\r\b\x10\t\t \t\b \t\t\x10\t\r\a\x1a\x1f\"\x1a\x0f\x0f \x14$\x1f6\x0e\a\t\x12$\x17\x11\x06\x06\x06\x01\x06\x01\x15\x19G'\n\b\x11\x19\x17\x11\x01\r\x10\x05-\f\a\n\r\x0f\x1a\xfe\xbc\x12\x1c\x13\b\x0f\n\x0e \b\x13\a\x14-\x1e \x1c\x04\x15\x05\b47)\f\x11\f\x03\x06\a\x04\t\f1\x05\n\x05\t\f\f\x11\f1\v\x11\f\f\x11\v2\f\x11\v\v\x11\fM\x10/?!FZ\x06\x1e%\"\t\x11\x10\t\t \b\t \t\t\x10\x11\b &\f3)-\")R\x06\x1e\x15\x17\b\x03-\x01_\x11\r\r\b\x06\t\a\x8a O\x13\x12-\b \t\x0e\b\x0e\x0e\x0e\x0e\x0e\x0e\t\x0f\t\x14\x17\x01\x05\t\x1b\b\x137!\x10\x1e\x1525$\x0f\b\a\x01\x06\x01\" &\x01\x12\x10\x02\x04\x0e\x05\a\x02\x05(D\b\x0e\x16t\x1d\x17\x17\x0f\t\x10\v\x8d\x19!\x1dB6#\x14\x0e\b\x16\x02\n\x1a\xcf\t\f\f\t \x05\a\x06\x04\r\t \x06\t\x06\f\t \t\r\r\t \t\f\f\t \t\r\r\t \t\f\f\t \t\r\r\t\xc3\x1e.\x1biH\x19\x192>.V\x1d\x11\x0f\x0f\x0f\x0f\x0f\x0f\x10\x1bN\x8f*?$\x89\x05\x02\x05\x14\x13)\x00\x00\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00%\x001\x00\x00\x122\x16\x14\x06\"&4\x172>\x0154'#\x153\x0e\x01#\".\x0254632\x177&#\"\x06\x14\x16%35#5#\x15#\x153\x153\x91Α\x91Α\xb1#7\x1d\x02uF\x03)\x1a\x10\x1c\x15\f- \x1e\x14!\"13II\x01\x1a##$$$$\x01\xb8\x91Α\x91\xce\xe3\x1f7#\v\n+\x18\x1d\r\x15\x1c\x10 .\x13! IfIj$##$#\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00=\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0154#\"\x06#\"'&#\"\a\x06\a5654&\"\x06\x15\x14\x17\x15\x14\x1632756=\x01627632\x163276\x01\x8e\x14\x1e\x1e\x14\xfe\xa4\x14\x1e\x1e\x14\x01.\b\x01(\r\b\x05%\x18\x1c\"\x02\x03\r\x14\x1c\x13\r\f\b\x0f\x04\x01\x01\x02\x01&\x1d\x11*\r\x16 \a\x01\xa0\x1e\x14\xfe\xa4\x14\x1e\x1e\x14\x01\\\x14\x1e\xfe\xe4\x8c\b\x10\x02\x0e\x0e\x02\x01\x13\t\x11\x0e\x13\x13\x0e\x10\n\xdb\b\f\x0e\x01\x01\x04-\x01\x01\x11\x11\x0e\x03\x00\v\x00\n\xff\xc0\x01\xb6\x01\xc0\x00B\x00F\x00J\x00N\x00R\x00V\x00Z\x00c\x00g\x00o\x00s\x00\x00%\x16\a\x14#\a\x06/\x01\a\x14#\a\x06/\x01\x17\x14#\a\x06#&1'&'&?\x01&5'&?\x01&/\x01&?\x0123\x17\x16\x15\x17\x14\x0f\x01\x172\x15\x1776\x1f\x0174?\x016\x1f\x01\x16\x0f\x01\x177\x03\a\x177'\x17/\x01\x13\x17/\x01\x1f\x01/\x01\x177'\a7\x175'\x14\x0f\x01\x17\x16?\x01\a\x17?\x01'\a\x17\x16\x0f\x01?\x01\x0f\x01\x01\xb5\x01\n\x017\x02\x02\x14\x02\x01C\x02\x02\x1c\x02\x01T\x01\x01\x02A\x02\x0f\x01\x02\x12\x1b\x15\x01\x03\x1b&\x01\x1b\x01\x03{\x02\x01Z\x02\x06\x02\"$\x02\x01#\x01\x02\x18\x01\x01;\x02\x01F\x01\xcce\x0e[\fy\x14j\xbaI\x13P9@\rF+:\n>NO\x04U\\\x1b\x1e\x01\x16\x18\x02_\x04B\x01X\x06@\x01)\x02\x01\x02J\b3\x05\xde\x01H\x02,\x01\x01\x0e!\x026\x02\x02\x18.\x02C\x01\x01E\x01N\x02\x01\v\x19\x01d\x02\x02\r\x1d\x02\x85\x02\x01',\x01\x02\x84\x02\x01\x11\x19\x02#\x15\x01\x01\x10 \x01\x01$\x01\x01&\x02\x059a=\x01\x11/\x867\x049\x851\xfe\xef=^:\xd1=D<\x83>F=,\x17D\x17\a\x01\x0f\x14\x01\x01C/DJC(\x1e\x1b\x01\x02\"\x1b?$A\x00\x00\x00\x02\x00\a\xff\xe0\x01\xba\x01\xa0\x00\x1a\x004\x00\x00%\x16\x0e\x02#\"'\x06.\x0154632\x16\x15\x14\a\x1632>\x025'654&#\"\x06\x15\x14\x16327.\x03#\"\a'632\x16\x01\xb8\x01\x05\x10(\x1c;%:tKxNOwJ\x17\x1a\b\r\a\x05r\x11588338\x13\x0e\a\f\x11\x15\r\v\b\r\x1b+!)=\t\x1b\"\x17>\x10(dAUpoV_:$\x06\n\n\x05:%?PNNPON\x05\r\x12\x14\n\x04\x18\x17\x1b\x00\x00\x00\x00\x05\x00\x02\x00\x00\x02>\x01\x80\x00\x18\x00\x1a\x00\x1c\x00W\x00p\x00\x00\x13\x06\x15\x16\x17\x16\x15\x14\a\x06#\"'&'467632\x17\x16\x15\x14\x13\x17357\x16>\x017\x1e\x01\x0e\x02\a>\x01'0\x0e\x01.\x037>\x01.\x01/\x01\x0e\x02\a\x0e\x01\x14\x1e\x01\x17.\x0367>\x05/\x01\x1e\x03\x0e\x027\x1e\x01\x15\x06\a\x06#\"'&547674'&547632aA\x01C\r\x04\x03\x05\x0f\x1d4\x02\x1e \x17\r\x05\x03\x04~\x01]\x03\b\v\n\x01\x18\v\x0e\x1f\x10\a\n\x1a\x0e\b\v\x0e\f\t\x03\x02\x02\x01\x03\x04\x02\x01\b\x11\x10\x03\x10\x0e\t\b\x04\a\x11\x1c\r\n\x15\x10\x18\r\b\x02\x01\x01\x01\x18!\f\x06\x05\x03\x03\xb3 \x1e\x024\x1d\x0f\x05\x03\x04\rC\x01A\x10\x04\x03\x05\r\x01`?[e@\f\t\x03\x05\x04$Aa1J%\x1a\x03\x04\x03\x06\xfe\xac\x01\x01\x9e\x02\f\x12\x02\x1f>('\f\x04\a4\x11\x01\x01\x01\x06\f\x15\x10\r\x19\x10\f\x02\x03\x11\x1a\x18\x05\x1b,\x1b\x15\b\x02\x04\r#%9\x1d\x17*\x1f\x1b\x12\r\x03\x03\x13) \x17\x14\b\xaa%J1b@$\x04\x05\x03\t\f@e[?\x10\x06\x03\x04\x03\x00\x00\x00\x00\x02\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x1d\x00\x00\x122\x16\x14\x06\"&4\x056&\x0f\x01\x0e\x01\x1f\x0176\x17\x16\x0f\x022?\x01\x17\x167\x91Α\x91Α\x01r\x02\v\b\xef\r\x01\v=\x8e\x06\x03\x01\x02s\x05\a\x06\x1e>\x12\x04\x01\xb8\x91Α\x91\xce\x19\f\v\x03]\x04\f\x03\x13Y\x04\x03\x01\x02h?\x06\x1d.\n\x14\x00\x00\x00\x02\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\v\x00\x00\x122\x16\x14\x06\"&4\x057#\a\x91Α\x91Α\x01(U\xb5U\x01\xb8\x91Α\x91ε\x9c\x9c\x00\x00\x00\x00\a\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\v\x00\x13\x00\x1b\x00.\x006\x00>\x00\xb2\x00\x00%\x16\x0f\x01\x06/\x01&?\x016\x17'\x06'&76\x17\x16\a6\x17\x16\a\x06'&7.\x0176\x172\x1e\x06\x0e\x01\a\x0e\x017&\x0e\x01\x17\x1676\x16\x14\x06\"&462\x136&'.\x01\a>\x01;\x014'>\x014&5'676&'&\x0e\x01\a\x0e\x01\x1e\x01\x17.\x01'&7&'\"\a>\x01374'&\"\a41\x06\x16\x17\x06\a\x0e\x03\x0f\x01\x0e\x01\x17\x14\x17\x06\a\x06\x167670.\x01#63\x166=\x014'\x16\a\x14\x0e\x02\a#\x0e\x05\x16\x17&'\x06\x17\x166767\x16\x17\x16\x01-\b\b\n\b\b\v\a\a\n\b\t\x14\x05\x06\x05\x05\x06\x05\x05\x1f\x05\x05\x06\x06\x05\x05\x06N\x10\n\x0f\x1a!\x01\x06\x02\x05\x02\x04\x01\x01\x01\x02\x02\t)!\x04\v\x04\x04\x06\n\b\x82\x91Α\x91\xceO\x01\x19\x01\v\x19\x13\x05\f\x03\x04\n\x01\x01\x01\x01\x1a\x04\x02\x1d\x17\v\x15\x11\x05\t\x02\n\x0e\t\r\x17\x04\b\x11\x05\x03\x0e\v\x05\r\x04\x03\x03\x04\x16\x06\x04\t\f\a\x06\x06\x10\x0e\r\x03\x04\x192\x05\x02\x03\x05\n\f\x10\x17\r\x03\b\x05'\a\x04\x04\v\x1d\x01\x04\x04\x04\x02\x01\x01\b\a\b\x06\x04\x01\x02\t\x01/\x17\x13]\x0e.\x12\x12('\xec\b\b\n\t\t\n\t\b\n\b\b\t\x05\x05\x05\x05\x06\x06\x05\v\x06\x06\x05\x05\x05\x05\x05\x13\f$\x14\x1e\x1f\x06\x02\x06\x02\a\x03\a\x05\a\x03\x12\f7\x05\x05\v\x05\b\x06\a\x02Α\x91Α\xfe\xdd\n\x0e\x02\x14\x0f\x04\x03\x03\f\f\x04\a\x05\x05\x01\x01\x0e\x1d\x17%\x03\x01\x05\r\t\x0e\x1c\x14\x0f\x04\x01\x12\x0f\x1e \x05\x03\x05\a\a\x01\r\b\t\f\x01\a;\x15\x04\x06\x03\x0f\x10\x10\x05\x06\t3\x13\x05\x03\x03\x05\v\x15\a\v\x14\x02\x02\t\x01\x11\t\n\x1c\r\x1c!\x05\b\x05\x03\x01\x02\x0e\f\x11\x11\x12\x12\b\x0e\b5\f\nn*\x1c%#\x19\x17\x00\x00\x00\x01\x00\x00\xff\xe0\x01\x80\x01\xa0\x00X\x00\x00%\x06\a&\a5>\b56'4.\b'5\x047\a#.\b+\x01\"\x06\x1d\x0172>\b73\x06\x14\x17#.\x06'&#\x15\x14;\x012>\x067\x01\x80\n\x06\xab\xc5\x05\x11\b\f\x05\a\x03\x03\x01\x05\x05\x01\x02\x03\x03\a\x05\v\b\x10\x05\x01\x03h\b\x17\x01\x05\x03\x05\x04\x06\x06\t\n\x06\x89\a\x03X\x05\x06\x06\x05\x03\x03\x02\x03\x02\x04\x02\x19\x03\x02\x1a\x01\x05\x02\x04\x04\b\t\a\x15C-Y\f\x13\r\x0e\x06\f\x05\x0f\x03d\x0154&#\"\a\x06\a>\x01\x1f\x01\x16\a&\x06\a\x16\x17\x166?\x016\x17\x16\a\x06\a\x06'\x1e\x03\x1f\x01\x16\x01\x9768\x06\x04\x06\x1173\f\b\x12\x16\t\tFm\x12\x01\x01\x01\x02\r\b\t\x02\v\x1c \x03\x02D\b)#\x01\x02\x15\n!\a\r\a\r{\xa7\v\b\n\b\x1e\x01\x03)\x06\b\x01\x01\x14\x01\x10S7\x02\x01\x03\f\x1f\x1a\x1d\a\x05\xe80;qPJ6\b\x04\x18I\x19\x18\x16\x01;J$\t\x120_\x18\x17\x13\x02\x04\r3@!-\n\"!\x1f\n\t$\x01\x82\x1cm>!\x134D\x1c\b\x03\x06\x02UB\x134\x11\x10\x03\x11\x0fA\x1a\x19\x1a\f\x16\x05\b%\"2(\x1d\x18\r\x069\x9a\x10\x15\v\x06f\x0f\r\a\x13-\r\r\x14N4J\b\x01\x02\a\x19\x1b)\x16\x01l\x18^8Pr1\x0e\x19\x13\x11\x01\x02\x01\x1b\x05\x1b\x1fN \x02\x1a\x0f\x0e\x0e\x12\x18\x06\x18\t\x05\x01\x18'\x17\x10\x03\x03\x06\x00\x00\x03\x00\x00\xff\xe0\x01\xc1\x01\xa0\x00\x10\x007\x00\\\x00\x00\x012\x1e\x01\x15\x11\x14\x06#!\"&5\x11463\x126&'.\x0114\"&'&\x06\x17\x16\x17\x1e\x01\x0e\x01'.\x01\"04&'&\x06\x0f\x01\x06\x17\x16767\x16\x136&\"\x0f\x01&\x0e\x01\x16\x17\x1e\x013\x140\x16\x17\x166/\x01.\x01>\x01\x17\x1e\x0112\x14\x16\x17\x1676\x01a\x1a,\x198'\xfe\xfe'88'\xbb*\x16$\x04\x05\x01\x04\x04\x13\x15\x12\t\n\x14\r\x18/\x14\x05\x04\x01\x05\x04\b\x11\x04\x10\t\x0e\x12\x11\x01\x01$|\a\x0e\x16\b\x05%Q)\x15%\x04\x04\x01\x05\x04\x13\x15\x12\x13\x15\f\x18/\x14\x05\x04\x01\x04\x05\x0f\v\x02\x01\xa0\x19,\x1a\xfe\xfe'88'\x01\x02'8\xfe\x9fIQ\x15\x03\x02\x01\x02\x03\v&\v\x05\x05\f/)\r\f\x03\x02\x01\x02\x03\x04\x04\b\x1b\x11\v\x0f\x1a\x02\x01\x14\x01\n\f\x15\v\b\x14\x16HQ\x15\x03\x02\x01\x02\x03\v&\v\n\f/)\r\f\x03\x02\x01\x02\x03\a\v\x02\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x12\x00\x1f\x00\x00\x01\a\x16\a\x0e\x01\a\x0e\x02\a7&7>\x017>\x01\a6&'&\x0e\x01\a\x06\x16\x17\x166\x01\xc0W?\x06\x04_E#ZZ#W?\x05\x04`E0\xae4\x04P<'D,\x02\x03P<;Z\x01\xa0W>VFe\t\x05\f\v\x05W=WFe\t\x06\x17\xe4;X\x04\x02\"@'\x01\x16\x17\x16\x0e\x01.\x01676\x1e\x01\x056\x16\x17\x16\x06\a\x06&'&>\x017\x16\a\x06'&6&6\x1e\x01\x06\a\x06.\x01\x17\x16\x06\a\x06'\x0e\x01'0\x06\x15\x06&'&'.\x0167&67>\x01\x176\x16\a\x1e\x01\a.\x01'&6'&'\"\a\x06'&#&\a\x06'&'&\x0e\x01\a\x0e\x04\x15\x06\x16767>\x0176\x17\x16\a\x14\x06\a\x06\x1667>\x037632\a\x14\x06\a\x06\x1e\x01\x17\x1e\x026\x176\x16\x17\x16\x0e\x01.\x016a\x04\x14\x04\n\x9b\f\b\b\f\v\t\a?\x17\x03\x02\v\x05\b\x01\x8a\x0f\x03\n\x12\x0f\x03\x05\x05\x011\x0f\x12\x04\x05\x04\x10\x11\x05\x05\xc6\v\x0e\b\x03\x05\x06\x0e\a\x01m\x05\n\x01\x01\x06\x06\x05\n\x01\x01\x02\x06+\x03\n\v\x02\x02\x14T\f\x0f\t\x03\x06\x06\x10\b\x03\x14\x10\x1f\x19\x1f\tF\x1b\x03\x1eE\x15\x0e\x01\x1f&\x04\x18\x15#'\x14f*3T\x04\x1f\r^\x02(\x01\x02+\x01\x04\x1e\r\b\a\x05\f\a\r\x0e\x0e\x06\x0f\t\b\x13\x11\x05\x03\n\v\t\b\a\x18\x14\x10\t\x02)\x02\x05\t\b\x02\x1c\x01\x01\x0e\x14\x06\x01\x0f\x11\x0f\x01\x06\x06\t\x02%\x02\x02\x05\r\t\x05\x14\x15\x0e\x04\b\x13\x06\x05\x03\x10\x13\v\x04,\x15\x04\x15\x02P\t\f\f\b\t\f\f\x01\xd9\x05\f\v\x03\x01\x05\x05\xd4\v\x12\x0f\x04\v\x12\b\a\xae\t\x04\b\b\x12\t\x04\b\bL\b\x02\f\x0e\x04\x03\x02\v\xae\x01\a\x05\x06\n\x01\x01\x06\x06\x04\a\x059\t\x03\x02\n\n\x04<\t\x03\r\x10\x04\x04\x02\rw!K\x15\x12\x01$\x15\x18\x02\x01\x14\r\x1d\x15\x1a\x052?\x16#J\x062$ \x11A5\n@`\n\x06\v\x11b\r\x1d\x01\x05\x04\x05\f\x03\f\f\x03\a\x04\x03\x03\f\b\x06\x1c\"\x1c\x1b\x02\x14\x1c\x01\x01\x10\x04k\x02\n\x05\x04\v\x05F\x03\v\n\x06\v\x02\x1f\"\x1e\x02\b\v\x05K\b\n\x14\x10\x05\x02\x04\x01\tS\x06\x04\b\b\x13\v\x04\x0f\x14\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00-\x00=\x00M\x00\x00\x012\x16\a\x15\x14\a\x06#\"&#\"\a\x06#\x15\x14\a\x15\x06#\"&=\x01&5462\x16\x15\x14\a\x1527632\x17\x1632672\x16\x15\x11\x14\x06#!\"&5\x11463\x01\x114&#!\"\x06\x15\x11\x14\x163!26\x01S\x04\x05\x01\a\x1e\x16\r(\x11\x1a'\x01\x02\x01\x04\x0e\b\f\r\x13\x1b\x13\f\x01\x03#\x19\x19\"\x06\a\r&<\x14\x1e\x1e\x14\xfe\xa4\x14\x1e\x1e\x14\x01j\b\x06\xfe\xa4\x06\b\b\x06\x01\\\x06\b\x01\x15\x04\x03\x87\x04\x03\x0e\x10\x11\x01,\x03\x02\x01\x0e\f\b\xd4\n\x10\r\x13\x13\r\x11\t\x12\x02\r\r\x03\x10\x8b\x1e\x14\xfe\xa4\x14\x1e\x1e\x14\x01\\\x14\x1e\xfer\x01\\\x06\b\b\x06\xfe\xa4\x05\t\b\x00\x00\x03\x00\x18\xff\xbb\x01\xaa\x01\xc0\x00)\x004\x00E\x00\x00%\a\x0e\x01&?\x01\a\x16\x15\x14\a'>\x01.\x01#\"\a'6?\x01'\a\x06.\x01?\x016\x17\x161\x1e\x01\x0f\x0176\x16&\"&4632\x1e\x01\x15\x14\x0327\x17\x0e\x01.\x02547\x17\x0e\x01\x1e\x01\x01\xa8\r\x02\x1f\x1d\x01\n)\x10*'\x14\b\x161\x1f'\x1d'#.L+3\x0f \a\rD\x10\x13\x8c\f\x05\v:j\x0e\x13-*\x1e\x1e\x15\x0e\x17\x0e\xe6\x1e\x1a'\x1dFA6!!(\x10\x02\x18/\xc0\x9d\x13\r\x12\x13z\x02 $>-'\x17<2#\x1a' \bV\x19.\r\r\x1f\x0e=\x0e\vQ\b \fC\x06\x01\x14\x8c\x1e*\x1e\x0e\x17\x0e\x15\xfe\x80\x11(\x17\x0e\x12'A&5*'\x188.\x1e\x00\x00\x00\x03\xff\xff\xff\xef\x02\x85\x01\x91\x00\x1a\x001\x00S\x00\x00%0\x0e\x011\a\x06\x15\x14\x16\x15\x06#\x06547>\x0673\x1f\x01&\x02'.\x01623632\x16\x17\x16\x17\x16\a\x0e\x01\a\x06&7\x16\a\x0e\x01\a\x0e\x01.\x02#.\x02#&5&7067672\x1f\x01\x16?\x01\x1e\x02\x01B.,]\a\x01r\x01\x12\x02\x01vy\b\a\x06\x05\x02\x013\xa0\x03\xe9\x04\x05\x01\b\b\n::\x13\f\a\x11\xbf\x0f\b\x02q\x03\a\x0f\x90\n\b\x02z\x02\x05\t\x0f\x06\x12\x01\x03\x99\x97\x01\x04\x01\f\x93\x03\x05\t\a;9\x13\x11v\x05\x13\r\xc4*)\"\x03\x06\x01\x18\x03%\x06\x03\x01\x04\x01tx\a\x06\x03\x02\x01By\x03\x01+\x04\a\a\x03\x01\x04\t\x15\xe3\x13\x04\x01/\x01\x05\x03\t\x02\x06\x01L\x01\x02\x02\x01\x01\x04\x01\"\"\x02\x02\x03\x046\x01\x02\x01\nJ\x16\b4\x01\x04\x03\x00\x00\x06\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00A\x00X\x00|\x00\x88\x00\x9e\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x17\x16\a\x0e\x02\a\x0e\x01\x17\x1e\x01676\x17\x1e\x01\x17\x1e\x0176'.\x016'<\x02.\x04'&\a\x0e\x02\x17\x16\x17\x1667>\x01\x054&*\x01#\"#\"&\x0e\x01\x15\x06\x1e\x0163!2\x1626\x1354\a*\x02#\"\x06\x1d\x01.\x01\x0e\x02\a\x06\x17\x1e\x02676762\x17\x1e\x016325'\x0e\x01&'&7>\x01\x17\x1e\x01\x050&\".\x055&7676\x16\x15\x14\x15\x16\x06\x01\xe2\x12\f\f\x12\xfe;\x12\v\f\x11\x95\x0e\x02\x01';\x0f\x15\x15\x02\x031C\x1c\b\x04\x01\x02\x01\x05#\a\x05\x03\x06\x03\x01\x01\x01\x02\x05\b\v\b@=\t\x16\b\x0e\a\x10\x06\b\x03\t7\x013\x04\x03\t\x01\xc6\xc6\x01\t\x03\x04\x01\x04\x04\t\x01\x01\x8b\x01\t\x04\x04\x04\x0e\x01\x03\x04\x01\x14\x06\x17*\x1d\x19\r\x04\x19\t\x06 )-\x14\x01\x02\x02\x05\x03\x04\v\x12\x03\b4\t%#\t\x17\x18\f5\x10\x0e\x01\xfe\xd3\x06\x03\a\x03\x06\x04\x03\x02\x01\x15\x04E\x05\x03\x01&\x01\xa0\f\x12\xfe|\x13\v\v\x12\x01\x86\x11\f\xbc\n\x12\b\a\b\a\v'\x16\x1f!\x03\x12\x06\x05\x01\x04\x01\a\x05\x05\x04\x06\x0e\"\x1a\x0f\t\x1f\x0e\x19\v\x11\t\t\x04\x1a\x1f\x05\x1a\x1b\x06\x04\x02\x02\x03\a\x18\x0f\xed\x05\x05\x01\x01\x05\x05\x05\x05\x01\x01\x01\x05\x01Z\x01\x0f\x01\a\x13G\r\a\b\x11\x11\t22!.\x13\x02\v\x01\x01\x02\x05\x06\x02\x02\x0e;\x17\x10\x0f\x1332\x1a\x02\x17\x13H-\x01\x02\x02\x03\x04\x05\x06\x04\x15\x05\x01\x0e\x01\x04\x04\x02\x01\x19\"\x00\x00\x02\xff\xf8\xff\xe0\x02\x01\x01\x8b\x00\a\x00\x18\x00\x00\x12\x0e\x01&>\x02\x16\x05\x16\x15\x14\x0e\x01#\"&'>\x017\x16\x17\x166\xc6MU,\x18MU,\x01!\x01I}J=l&5V\x19\r$7\x9b\x01\bk4!bj4 ^\r\fK~J4-\x0eF13\x17!T\x00\x06\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\a\x00\x11\x00\"\x004\x00E\x00M\x00\x00\x122\x16\x14\x06\"&4\x176'&'\"\x1d\x01\x14?\x012\x1e\x01\x15\x11\x14\x06#!\"&5\x11463\x173\x15\x147632\x17\x16=\x014&+\x01\"\x06\a\x06\x14\x1f\x01\x16767676/\x01&\"\a\x16264&\"\x06\x14\xc0J44J4\x98\x02\x01\x14)\x03\x04\x9c\x10\x1b\x10#\x18\xfe\xb6\x18##\x18\u007f\x01\x03\x13\x14\x14\x13\x03\f\b-\b\fT\x06\x06\b\x02\x02\a\b\a\n\x03\x03\a\x06\x10\x06BiJJiJ\x01\t4J44J\x04\x01\x02$\x02\x03C\x04\x02\xee\x10\x1b\x10\xfe\xb6\x18##\x18\x01J\x18#U\x0f\x04\x01\x05\x05\x01\x04\x0f\b\f\f-\x05\x10\x06\b\x02\x03\t\b\b\a\x02\x02\b\x05\x05\xfeJiJJi\x00\x00\x00\x02\x00\x10\xff\xe0\x01\xb1\x01\xa0\x003\x00I\x00\x00\x132\x16\x15\x11\x14\a\"#\"'&=\x01\x0e\x01#\".\x035<\x02>\x047>\x01754.\x02#\"\x06\a\x06&'&'&76\x135\x0e\x01\a\x0e\x06\x1c\x02\x15\x14\x1e\x0232\xf0a_\x05\x03@5\x06\a\x1fX\"\x1f0\x19\x10\x05\x01\x02\x05\x06\n\a\x16\x99D\x02\v\x18\x15(V\x1b\x04\r\x03\x04\x06\x03\nL\x9e\x1fE\x14\x03\x05\x03\x03\x02\x01\x01\x04\v\x1a\x12(\x01\xa0I?\xfe\xd7\a\x02\x02\x01\b\x19\x11\x19\x12\x1a\x1f\x16\a\x01\x10\f\x14\x0f\x13\x0e\f\x03\t\x1e\t&\x15\x14\x17\t\x1d\x12\x04\x03\a\b\x1f\x0e\x067\xfe\xa4k\x03\x14\v\x01\x05\x04\a\x05\a\x05\a\x05\x05\x02\x05\r\x10\n\x00\v\xff\xfd\x000\x02\x80\x01N\x00\x11\x00\x15\x00G\x00V\x00_\x00c\x00f\x00\xa6\x00\xaf\x00\xc4\x00\xc7\x00\x00%\x0f\x027\x0f\x027\x0f\x017\x0f\x01'7\x177\a?\x01\a\x05'\x0f\x017\x06\a\x06&7>\x0172\x1e\x051?\x016\x17?\x01\x0f\x027\x0f\x027\a?\x01\x177\a?\x01\x0f\x03'\x0f\x01'\a&\a\"\x0e\x02\a\x06\x1676?\x026&\x0f\x012>\x02\x177\x06\a7'\a/\x01\x0f\x02?\x01\x17?\x01\x17?\x01\a>\x0276\x1e\a1?\x016\x17'7\x17?\x01\x0f\x027'\x16\a\x17\a'\x0f\x017\x0e\x06#\x06'\x0f\x01'\a767676'&\x0f\x01\x1676767\a?\x02\a&'&#\x06\a\x06\a\x06\a7'\x02\x80\x03#\x02#\x03#\x02\"\x03@\f/ \x18\x1f\r x\r\x1c\r\xfe\xdb\x13\x04\x1c\x03\x15$\x1a!\x02\x02%\x1d\b\r\n\a\x06\x03\x04\x03'%\x05\x03A\x03$\x02$\x02%\x02%\x026\x18 \t\x16\x03K\x03\x18\n:\x04(\b\xaa\x1b\t\x11\a\f\t\x06\x01\x01\x0f\x0f\x10\r\x1b;\x01\f\x0f\x03\a\a\n\x04\x16\x06\a\x15\x9d\b\x0f\x93\x04(\b 9\x18\x1f\n\x1b&\x06\x1d\x04\x06\t\x1e\x12\a\f\t\b\x06\x05\x03\x02\x02\x03'\x1a\v\x05 \r\x17\x1f+\x05\x1d\x05\x10\x02\"\x1a%\x13\x04\x1c\x03\x01\x05\x04\b\b\v\x0e\t)\x0e\x04\x19&\x06\xdc\x0f\x06\a\x01\x01\x04\x06\x11p\b\r\a\x06\b\a\"\x03?\x01\x1f\a\x04\a\x06\v\v\v\x02\x01\xc1\x18\b\xd2\x1c\x03\x12\x03\x1d\x02\x14\x02\x1a\x04qs\x02v\x02PS\x80x\x02x\x12$&\x01\x1d\"\x02\x01 \x1b\x18(\x02\x02\x04\x05\a\x05\x06\x1f\x02\x03\x1b\x1b\x04\x1c\x02\x12\x02\x1b\x03\x14\x03\x15u\x02oV\x02\x1c\x05\x1c\x02\\\x03\x0f\x02\x10>\x02\x11\x01\x06\n\v\x06\r\x13\x01\x01\x12\x01&\t\x04\x01\x1c\x01\x03\aB<\x12\t\f&(M\x11\x02\x13\x02z\x02fh\x02?B\x02)\f\r\x15\x01\x01\x02\x03\x04\x05\x05\x05\x04\x03 \x03\x02\f\f\x02+.\x02N-\x02-+$\x0e'\x02%'\x02 \x01\b\x05\b\x06\x06\x04\x03*(\x02?BO\x01\x03\x04\b\b\x03\x03\x01@\t\x01\x01\x03\x05\t\x02\x18\x04\f\x02\x06\x02\x03\x01\b\n\x0f\x0e\x11\x01&\x00\x00\x05\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\x19\x00\"\x007\x00?\x00K\x00\x00\x017>\x01\x1e\x01\x0f\x0132\x16\a#\"&46;\x017'&>\x01\x16\x17\x0f\x01\x0e\x01.\x01?\x016732\x16\x14\x06+\x01\x17\x16\x0e\x01&'.\x01'&67\x16&2\x16\x14\x06\"&4\x054&#\"\x06\x15\x14\x16326\x01\x00\t\x04\x11\x0e\x05\x05W?\x0f\x0f\a\xb9\t\f\f\t4B\x14\x05\x05\x0e\x11\x04F\x13\x05\x10\x0f\x04\x04\x0f\x18\xb95\t\f\f\t\x1d\x14\x04\x05\x0e\x11\x04\x112\b\v\a\v\f\x91Α\x91Α\x01\xd0\u007fYZ~\u007fYZ~\x01G\x10\a\x05\t\x10\b\x97\x1c\r\f\x11\fs$\b\x10\t\x05\a\xea\"\a\x05\t\x10\b\x19\a+\f\x11\f\"\b\x10\t\x05\a\x1fV\x0e\x17%\t\x15\xba\x91Α\x91\xcegZ~\u007fYZ~\u007f\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x18\x002\x00G\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x137&\x0f\x01\x06\x1e\x01676&+\x0176.\x01\x06\x0f\x01'.\x01\x0e\x01\x1f\x01\a#\"\x06\x14\x163!264&+\x01&'\x0e\x01\x17\x1e\x01\x17\x1e\x01>\x01/\x01\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14O\x13\x0f\x18\x0f\x04\x05\x0e\x10\x8f\a\x0f\x0f>V\x04\x04\x0f\x10\x04\t\t\x04\x10\x0e\x04\x04\x14A3\b\f\f\b\x01\x18\b\f\f\b4\x10+\v\a\v\t3\x0e\x04\x10\x0e\x05\x04\x14\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xa0!\x13\b\x18\b\x10\b\x04=\r\x1b\x95\a\x10\b\x04\a\x0f\x0f\a\x04\b\x10\a#r\v\x11\f\f\x11\v\x1cJ\b$\x17\x10X\x18\b\x04\b\x10\b!\x00\x00\x00\x00\t\x00\x00\x00V\x02\x80\x01\x00\x00!\x00,\x00A\x00M\x00a\x00n\x00\x8a\x00\x94\x00\xab\x00\x0072\x16\x1754#\"\x0e\x02\a#47632\x17\x16\x1d\x01#7#\x0e\x02#\"&546\x172654&#\"\x15\x14\x1673\a3>\x0132\x17\x16\x15\x14\a\x06#\"&'#\x15#74&#\"\x06\x15\x14\x1632673\a>\x0132\x17\x16\x15\x14\a\x06#\"&'#\x15#74&#\"\x06\x15\x14\x1e\x01326747632\x16\x1d\x01#\x14\x15\x14\x1e\x0132653\x15\x14\a\x06#\"'&7454&#\"\x06\a\x1573\a3632\x16\x15\x14\x15#454&#\"\a\x06\x1d\x01#*\x11\r\x04\x12\x04\x05\x04\x01\x01&\x06\t%,\n\x04'\x02\x01\x03\b\x0e\v\x17\x12\x14'\n\a\b\f\x11\bZ&\x01\x01\x06\x0f\x10\x15\v\f\f\t\x18\x0f\x0f\x04\x01'Q\b\r\r\b\b\x0e\f\b:&\x01\a\x0f\x10\x15\n\r\f\t\x18\x10\x0f\x03\x01'Q\b\r\r\b\x04\b\t\r\b5\r\f! \x18L\x04\b\b\v\a&\a\n#&\f\fM\b\f\v\x06\x01]'\x02\x01\t\x14\x11\x0e#\x04\x06\n\x03\x01'\xd1\x06\t\x17\x10\x01\x03\x05\x04\x12\x06\f\x13\t\x0fL\x13\b\b\x04\x11\x14\x13\x110\x05\b\a\x05\f\b\x05_\x15\r\b\t\v%(\r\n\t\fFl\x15\f\v\x12\x15\r\fO\x15\r\b\t\v%(\r\n\t\fFl\x15\f\v\x12\x0f\r\x06\f\x16#\v\v\x18 \v\x02\x03\b\n\x04\x06\b\x02\x10\t\r\f\v3\x02\x02\t\x06\x06\t\x04.\x14\x14\x13\x18\x05\x05\x02\x02\f\b\t\x04\tD\x00\x00\x00\x02\x00\x00\xff\xf4\x02A\x01\x95\x00/\x007\x00\x00%\x06\a\x17#'\x06\a\x17#7\x06'\a#7&74767\x06\a\x06\a\x06\x16\x17\x13\x17676&'&\a\x06\a>\x01\x17\x1e\x02\x15\x06\a67'\a\x16?\x01\x02\x06\x15\x1cIf.\x19\x1d!\x88\x17$!\x16e\"E\x01*;f\x1d!1\x1e+\f2\xbe\x97\x13\x10I:rkrTWZ\xdd`6M&\x01\xf5\x1b\x1bOf!$!\x8b\x16\x12nG\n\b5%\x04\x01\"3\x1c7)*= \n\x15\x19!.S\x16\x01\x1e\xe3\x0f\x10N\x88\x11\x11\x1f\x0e,2.\x0e\b'7!9\x8c\b\fz\x9f\x01\x065\x00\x05\x00\x00\xff\xfa\x02\x80\x01\x86\x00\x05\x00\x13\x00\x1c\x00*\x00+\x00\x00%\x15\x05%5\x057.\x01\a\x06\a#>\x0132\x1e\x01\x17\x05632\x17\a&#\"'\x06\a>\x0132\x16\x17\a'.\x01\x06\x05\x02\x80\xfe\xc0\xfe\xc0\x01@~6\xa9D\x05\x02\x01\x1d[5#B5\x13\xfe\xf4#<<#.\"4\x1f\x94\x0e\x15)\x85MM\x85)1\x011\x92\x9e\x01\x93\xf86\xc8\xc86ȀG\x158\x04\x02*2\x17)\x1c111\x1d0o\v\x16?II?\x1e\x01DA\x14T\x00\x00\x00\x00\x02\xff\xfb\xff\xe0\x02\x05\x01\xa0\x00\x0f\x000\x00\x00\x012\x16\a\x03\x0e\x01#!\"&7\x13>\x013\x137/\x01>\x0316.\x02\a\x06\a/\x01\x0f\x01\x1f\x01\x06\a'\a\x1f\x017'67\x17\x01\xc5\x1d\"\x059\x051\x1d\xfe\xc8\x1d\"\x059\x051\x1d\xfe\x06_\x04\a\r\b\a\x06\x02\x0e\x12\x05\x0f\x13\x05g\t\x13E\x15\x15\f:\x104)\x12\x16\x11\x19s\x01\xa0)\x1d\xfe\xcc\x1d))\x1d\x014\x1d)\xfe\xa5\bw\a\x05\n\x06\x05\x05\x12\x10\x05\x05\x0e\x12\x04q\x05\x1dd\x1d\x16\r\x1f\x100=\r@\v\x10n\x00\x00\x06\xff\xfd\xff\xff\x02\x85\x01\x81\x001\x00>\x00f\x00\xa3\x00\xb8\x00\xc8\x00\x007\x14\x1e\x01\x15\x14\x0f\x01\x06#*\x01&'\x0e\x02#\"1\x06&7&6\x172\x1756&\a\"\a\x06#&47>\x013232\x17\x16\x15\x14\x0f\x0126765&#&\x06\x17\x06\x16\x17\x06/\x01&5\"54;\x016\x1f\x0176\x1736\x1f\x0176\x173:\x01\x16\x15\x06\a\x06'#\x06/\x01\a\x06'\x05\"'&=\x014\x17\x16\x17\x167>\x01'.\x06'.\x025&632\x1e\x01\x17\x16\x1d\x01\x14#.\x02#\"\x0e\x02\x15\x14\x17\x1e\x06\x17\x16\a\x06\a\x0e\x01#\"#\"&'&6\x17\x1e\x01;\x012676\x166&\a\x06&7>\x01\x16\x17\x16\x06\a\x06&7\xb4\x05\x06\x04\r\x02\x03\x02\x02\v\x06\x06\x15\x18\n\x01\x13)\x02\x02,\x1c\x15\x1a\x03\x19\x16\x15\x19\x06\x05\x05\x02\x05(\x15\x03\x04\x1b\x16\x12\x01V\x16\x18\x03\x02\x14\x13\x0f\x1c\x01\x01\x11\xb9\n\x032\x01\x01\x04\x17\n\x02$!\x02\v\x11\v\x02!%\x02\v\x13\x01\x02\x03\x014\x02\v\x12\v\x02!!\x02\v\x00\xff!\x18\b\t\x13\n#\x16\t\x03\a\x02\x04\x06\x03\n\x06\x10\x06\a\x0f\x16\x01'\x1f\b\x15\x17\x04\x02\x05\x02\x0e\x15\f\x04\v\x0f\t\x1e\x04\x14\x05\r\x04\t\x05\x03\x14\x0f\x12\v3\x8dC\x02\x01K\xb87\x05\x06\x06=\xb9F\x014\x8e/\n\t\x1e\x12I\x05\x01\x04\x134&\x05\a\x16\x19\x04\a\x02\xf5\n\x10\v\x02\x04\x02\t\x02\r\f\b\r\b\x01\x1a\x1f\x1c\"\x02\x06\x10\x14\x1a\x03\n\x02\x01\x13\x04\x05\r\x11\x14\x1b\x03\x03e\x13\v\b\x13\x05\x01\x0f\x12\r\x12\x16\x01\v\xa5\x04\x04\x01\x04\x01\v\x8d\x8d\v\x01\x01\v\x8f\x8f\v\x01\x04\x04\x02\xa8\f\x01\x01\f\x89\x89\f\x02\x06\f\x04\b\v\t\x03\b\x02\a\f\x05\x17\a\x02\x02\x03\x02\x03\x02\x05\x02\x01\b\x1a\x11\x16\"\x03\a\x06\x03\x04\n\a\x01\x05\x05\x01\x04\v\t\x13\b\x01\x06\x01\x05\x02\x05\x06\x03\x19\x1f#h&)G2\x04\b\x03#1\x1d\x14\x04\x0e\x10\x17\t\x01\a\x04\f\t\x06\x05\tM\x15\x03\x03\x04\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00#\x004\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0154&+\x01\"\a#5#\x15353\x16;\x0126'\x15\x14\x06+\x01\".\x01=\x0146;\x012\x16\x01\xa0\r\x13\x13\r\xfe\x80\r\x13\x13\r\x01@(@\x11@\x06\x01@@\x01\r9\x11@(@\x0e\x18.\x0f\x12\v\x15\x17.\x18\x0e\x01\xa0\x13\r\xfe\x80\r\x13\x13\r\x01\x80\r\x13\xfe\xff#*('K\xe8#'(H\x17\x13\x0f\x05\x10\x0e\x14\x14\x0f\x0f\x00\x00\x04\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00?\x00R\x00g\x00\x00\x00\x14\x06\"&462\x176'7'\a&'7'\a&/\x01\a02\x1e\x0221\x16\x0f\x01\x1630\"'\a\x06'&1\a\x17\x1e\x033\a\x177\x16\x17\a\x177\x16676'6\a\x0e\x03\".\x03#72\x1e\x057\x0e\x04&\".\x02'72\x1e\x06\x01\xf8\x91Α\x91\xce\x03\a=\v\x1b\v\b\x0e\v\x1b\v\f\x06%\a\x02\x05\x05\x05\x02\x0e\x01\r\x02\x01\x02\x01\x12\x03\t\x14\r#\x02\x06\x04\x05\x02\v\x1b\f\n\v\v\x1b\f\"3\v\x0f(\x1d9\x01\x06\t\n\r\n\x0e\a\r\x01\x0f\x01\x12\n\x12\n\v\x03\a\x02\x04\x06\b\b\n\a\n\x06\t\x01\x0e\x01\f\a\r\a\f\x03\x05\x01'Α\x91Α\xd5*\x15-\x06+\x02\x03,\a-\x02\x02\t\x1d\x01\x01\x02\x04\f3\x01\x01H\b\x02\x05\x1f\t\x01\x01\x01\x02-\a,\x02\x03-\x06-\t\x10\x1d-\x15\a6\x05\b\x04\x03\x01\x03\x02\x03<\x04\x03\x06\a\t\rQ\x05\x06\x05\x02\x01\x01\x03\x01\x02\x016\x03\x02\x04\x04\a\a\v\x00\x05\xff\xef\xff\xd7\x02\x00\x01\xc1\x00\r\x00\x1b\x00)\x005\x00O\x00\x00\x1362\x17\x16\x0e\x01'&\"\a\x06.\x01\x13.\x017>\x01\x16\a\x06\x16\x17\x1e\x01\x067\x06&67>\x01'&6\x16\x17\x16\x06'\x14\x06\"&=\x01462\x16\x15746\x16\x1d\x01\x14\x06#\"&=\x0146\x16\x15\x06\x1e\x0232>\x02NG\xc8I\x06\x05\x10\b?\xae>\a\x11\x04i`b\x19\x02\x11\r\x02\x16UT\n\x04\r\x8b\t\f\x03\nOR\x12\x03\x0e\x11\x02\x15^\x9b\b\f\t\t\f\tG\x10\x10E11E\x10\x10\x01\x02\x0e%\"!%\x0f\x02\x01}CG\a\x11\x04\a=:\a\x06\x0f\xfee\x1d\xad`\n\x04\f\tT\x97\x1a\x03\x11\r\x05\x03\f\x12\x03\x1a\x92Q\n\f\x04\n]\xa81\x06\t\t\x06H\x06\t\t\x06\xc5\n\b\b\nG0++0G\n\b\b\n!1!\x11\x10 2\x00\x00\x00\x00\a\x00\x00\x00\r\x02\x00\x01s\x00\b\x00\x11\x00\x19\x00!\x00)\x002\x00:\x00\x00\x13\x14\x06+\x01732\x1672\x16\x15\x14\x06+\x017\a2\x16\x15\x14+\x01732\x16\x15\x14+\x017%2\x16\x15\x14+\x017\x172\x1e\x01\x15\x14+\x017\a2\x16\a\x14+\x017\xa6\"&G\x15D\x1d\x19~\x1d\x19!%F\x12\x87\x1c\x1aIF\x15\xf8\x1c\x1aGF\x13\x01\x01\x1d\x19FF\x12(\x14\x19\tFF\x12y\x1c\x1a\x01FF\x13\x01K\x14\x1dY\x19\x19\x19\x0f\x14\x1dY\x83\x19\x0f1Y\x19\x0f1Y6\x19\x0f1Y\x8a\x0e\x11\t1Y6\x18\x101Y\x00\x00\x00\x04\x00\x00\xff\xdf\x01\xc1\x01\xa1\x00\x10\x00\x1f\x00>\x00`\x00\x007>\x02232\x17\x16\x15\x14\a\x06\"'.\x01\x172\x16\x17\x16\x06\x0f\x02\"'.\x0176\x05\x0e\x02\a\x06#\"'&'&'&'&547>\x0176 \x17\x16\x17\x1e\x01\x15\x14'&'.\x01'&54'&'&'\"\a\x06\a\x06\a\x14\x17\x1e\x01\x17\x1e\x0176767>\x01\xa2\x02\x03\t\n\r\x1c\x04\b\a\x039\x03\b\x04C)\x0f\x04\x06\x02\a\t04\x04\b\x03\a\x04\x01\x17\x02\r\x16\x0e\b\xa5\xa5\a\f\n\v\x06\a\x03\x02\x02\x05\x1b\x13\x05\x01I\x06!\x0f\x05\x02V\x02\x06\x02\x1b\x04\b\x19\x13\x16\x05\"2\x11+\v\x01\x01\x04\a%\x15\av\t\x1d\x15\x10\x06\x02\x01\xfc\x02\x02\x01\x02\x04\n\b\x05\x02\x01\x02\x11X\x02\x03\x05\x10\x04\x01\x01\x02\x03\x11\x05\x05\x83\x0e\x17\x11\x03\x02\x02\x03\a\a\t\n\f\a\xa7\xa6\a\x13\x1a\x05\x01\x01\a\x1e\v \x89\xa2\xb1\b\x03\x01\x01\x03\x04\x0e\x1f\x1a\x12\a\x01\x01\a\x10.\x06:G\x0e\x16 \x04\x01\x01\x01\x04\x16\x10\x17\aS\x00\x00\x03\xff\xff\xff\xdf\x01\xc1\x01\xa1\x00&\x006\x00G\x00\x00%\x16\x06\a\x06\a\x0e\x02\a\x06\"'.\x01'.\x01567>\x017>\x013\x16\x17\x16\x17\x16\x17\x14\x17\x1e\x01\x17\x16%\x06\x16\x17\x16327654'&#\"\x06\x17>\x01'.\x01#\"\x06\a\x06\x17\x16\x17\x16?\x01\x01\xbf\x01\x01\x03\n\x19\f\x19\x1d\x10\x0e\xbf\v\";\v\x05\x02\x01\x02\t- \x12'48\a%\x1d(\x01\f\a,\x03\n\xfe\xc0\t\b\f\x06--\x05\f\r\x06.$\x11\xba\v\x03\t\x06\x18CB\x1a\x06\n\x02\x02\r\aTM\xe1\x05\x86\f%\x19\r\x11\n\x02\x02\x02\a3%\x0f-L^\n#5\r\a\x03\x01\x02\v\x1e)2\x16\a\x05\x01\x02\x052\t\x1c\x04\x01\x03\b\x0e\x0f\a\x03\x02\xce\x06\x19\b\x06\x02\x02\x04\n\r\x0e\x05\x03\x01\x01\x00\x00\x11\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00\a\x00\v\x00\x0f\x00\x13\x00\x17\x00\x1b\x00\x1f\x00#\x00'\x00+\x00/\x003\x007\x00;\x00?\x00C\x00\x00\x113\x15#75#\x1573\x15#75#\x1573\x15#75#\x15\x053\x15#75#\x1573\x15#75#\x1573\x15#75#\x15\x053\x15#75#\x1573\x15#75#\x1573\x15#\x80\x80xp\x98\x80\x80xp\x98\x80\x80xp\xfe\xb8\x80\x80xp\x98\x80\x80xp\x98\x80\x80xp\xfe\xb8\x80\x80xp\x98\x80\x80xp\x98\x80\x80\x01\xa0\x80\bppx\x80\bppx\x80\bpp(\x80\bppx\x80\bppx\x80\bpp(\x80\bppx\x80\bppx\x80\x00\x00\x00\x00\x03\x00\x01\xff\xc2\x01\xfb\x01\xbb\x00\a\x00\x17\x00#\x00\x00$\x0e\x01.\x01>\x01\x16\x03.\x027>\x017>\x01\x1e\x02\x17\x16\x0676.\x03'\x0e\x01\x17\x166\x01L\x06)5!\x06)58Gs8\t\bK8/fYH+\x02\x03\x9cH\b\x1e5K;\x1c+\x11\x1a3\x8f\xce5!\x05*5!\x06\xfe\xd1\x04P~F@e\x1b\x16\x04$>]4m\x97\xb9\"C2.\x1b\n)\xbau\f;\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x1b\x00\x1f\x00'\x00/\x00\x00\x016\x1e\x01\x0f\x01\x16\a\x06\"&476\x177&#\"\x06\x17&54632\x17\x066&\x06&2\x16\x14\x06\"&4\x16264&\"\x06\x14\x01>\x03\a\x02\x02L\x02\n\b\x17\x11\b\n\r\x1a\x1b$'7\x01\x01L5-'U\x14\x14\x14I\xba\x83\x83\xba\x83\x9e\x84^^\x84^\x01&\x03\x02\a\x04X\x0e\n\b\x11\x17\b\n\x01\x14\x198*\t\v6N\"q\x14\x14\x14߃\xba\x83\x83\xba\xfd^\x84^^\x84\x00\x00\x00\x02\x00\x00\xff\xc8\x01M\x01\xb8\x00\n\x00 \x00\x00%\x14\x0e\x01#\"&462\x16'\"\x06\x15\x14\x06\"&54632654632\x16\x14\x06\x01L\x16'\x17\"22E1T\".0G12\"#)5##--\x1c\x17&\x171F11\xd1-#\"..\"#5)#\"21F1\x00\x00\x00\x06\x00\x00\xff\xff\x02q\x01\x82\x00)\x00X\x00h\x00u\x00\x81\x00\x90\x00\x007#\"&=\x0146;\x01\x15\x14;\x012>\x01=\x014#67>\x0176\x1e\x02\x17\x1e\x01\a\x0e\x01#\x0e\x01'\x06&7\x1e\x017>\x0176/\x01\x16\x06\a6.\x01'&\a\x16\x17.\x01\x06\a\x0e\x01\x17\x1e\b\x17&67\x06\x1e\x027&'#\"&=\x0146;\x012\x16\x1d\x01\x14\x06'\"=\x014;\x012\x16\x1d\x01\x14#754;\x012\x1d\x01\x14+\x01\"\a\x15\x14\x06+\x01\"&=\x0146;\x012\x951\x05\a\a\x04/\x13\x14\x06\t\x05\x0f\x12\x1b\v.*\x1475/\v62\f\nG2$q%;Q\xdd\x069\x1d\x1d,\a\b\x12\n\x01\x19\x18\x1f\b7$>4R\x14\x0e60\x12\x1b \x02\x01\x03\x06\x05\n\x05\v\x05\v\x01\x05\f\x16\r\b&>(D\xeb(\x06\n\n\x06(\a\t\t}\n\n\x1c\x04\x06\n\x82\t\x16\t\t\x16\tp\a\x04\x1a\x04\a\a\x04\x19\f\x90\a\x05(\x05\a\a\x10\x05\t\x05\x15\x13\x0f\t,5\r\b\x04\x0f+\x1f\x11Y1+9%\x02\"\x03>,%\x1c\x06\x06)\x1d&\"\x14\x14.\v#@/\x04\t4\bC\x17\x1a\x02\x06\x0e3\x1d\b\x0e\f\n\n\x06\b\x04\a\x01\x169\x0e\x163$\x0f\r\x1e\xa1\n\x06(\x06\n\n\x06(\x06\n(\n\x1c\n\x06\x04\x1c\n\x19\x16\t\t\x16\tT\x18\x05\a\a\x05\x18\x05\a\x00\x00\x00\x00\x06\xff\xfb\x00\u007f\x02\x81\x01\r\x00\x1c\x002\x00S\x00^\x00w\x00\x9b\x00\x007\x16\x0e\x02+\x0176;\x0126'&+\x01\a\x06+\x0176;\x012\x1e\x02\a\"\x06\x16;\x012\x1e\x01\x15\a#\"&7>\x01;\x01\a\x06#72\x16\x0f\x01\x06+\x01\".\x01>\x01;\x01\a\x06+\x01\"\x14;\x012?\x016+\x01\"&?\x01%2\x16\x15\a\x0e\x01#763\a2\x1e\x01\x0f\x01\x06+\x01\"&576&+\x01\a\x06+\x01\"&?\x01\x173\a\x06+\x01\"&?\x01>\x02;\x012\x16\x0f\x01\x06+\x0176;\x012?\x016+\x01\"\x0f\x01\x06\xd2\x03\x05\x0e\x16\r \x06\x03\v\v\t\v\x02\x03\x0f\x14\x1a\x03\v\x19#\x03\v%\t\x11\r\n\x9a\f\n\n\f\v\x02\x04\x01\b\f\x19 \a\x05\x1c\x12(\x06\x03\f\xe5\x0f\x11\x03\x0e\x05\x139\f\x10\x03\x04\x10\f0\x04\x03\v\x15\x04\x04#\x04\x01\t\x01\x03:\a\t\x02\x03\x01\x9a\x03\x04\x1b\x04\x19\x10$\x02\b\xd9\x11\x1a\f\x05\t\x02\b\x13\x03\x04\v\x03\f\t\x14\x11\x02\b\x13\x04\x04\x01\x1a\x93I\x05\x04\vB\x0f\x11\x04\n\x03\v\x10\t/\x0f\x11\x04\x03\x04\x135\x03\x03\v\x16\x03\x01\x01\x01\x05!\a\x01\b\x02\xe4\v\x17\x13\r\x18\v\x0e\t\x0e_\v\x82\v\x06\v\x0f%\x13\x13\x02\x04\x02\x1a(\x19\x14\x15\x17\v#\x17\x0e4\x12\x0e\x12\x13\r\r\v\b\x06\x1f\x06\v\a\x0e\"\x05\x03c\x0f\x13\x85\b#\x12\x1f\x10!\b\x05\x03(\t\x0f@\b\x05\x03bJ\x15\v\x17\x0e(\b\x0e\a\x16\x0e\f\x12\r\v\x03\x02\x05\x06\x1e\x06\x00\x00\x02\x00\x00\xff\xe0\x01\x80\x01\xa0\x00\x04\x00\x18\x00\x00\x11!\x03\a'\x01#\x173\x0f\x01\x171\x17\x0f\x01/\x01#\x1f\x01?\x01#7\x01\x80#\x9d\x9d\x01\x16\xf2\x06{\ap\x04\xa6\x0465\x031\x06cb\ros\x01\xa0\xfet44\x01\x01\x01X\x16A#_5g\x91\x91g5_#A\x16\r6\x1d*>>*\x13&\x1e\x8eR#&+\x91Α+&#R\x17\x1f>T>\x0e\x19\x00\x00\x00\x06\x00\x16\xff\xbb\x02*\x01\xc3\x00.\x00y\x00\xab\x01\f\x01\x96\x01\x9c\x00\x00\x13&7\x16\x1767\x06\x17676\x17\x16\x17\x16\a\x06\a.\x01'&'&76'&'&\x06\a\x06\x17\x14\x15\x06\x170\x1d\x01&'\x06\x17&\x050\x17&\a\x06\a\x06\a&'&\a\x06\x0f\x01\x141.\x01'241676727\"#\x06\a\x06\a0\a0'67\x161\x06\x15\x06\a\x06327>\x047213\"\a\x06\a\x06\x16767676\x17\x16\a\x16\a\x06\a\x06'&'4.\x015\x06\x1701&'&'&7\x06\a67\x16\a\x06\x1767\x06\a6\x17\x06\a\x06\x17\x163276761\x167\x16\x17\x16\x06\a\x06'\"#\x167\x14\x06\a\x06\a\x06&'0'\x0e\x01\x17\"'\"#.\x0176&'.\x03'&'&'4'.\x02'&7\x16\x17:\x01\x163\x16\x17\x16\x17\x16\x1702\x17\x16\x17\x1e\x02\x17\x163\x166'45\x16\x15\x1e\x01\a\"\a\x163\x167>\x01'&'6%&'6\x17&7\x16\x17\x1e\x01\x17\x16\x174&5&'&5&76767\x16\x17\x16\x17\x16\x17\x16\x17&'&'&'&767\x161\x1e\x01\x17\x16\x17\x16\x17\x16\a\x14\x17\x16\x1567\x16\x0e\x02\a6'&'6'&\x06\a2\x17\x06\x15\x06\x167263\x06\x15\x14\x167\x0e\x01'67\x06\a'676&'&\a67&'67.\x01\x06\a\x16\x17\x06\a4>\x0256'&'&\a\"#>\x0276\x17\x1e\x027&R\x01\x0e\x01\x03\t\"\x04\x01\x15\x17\x15\x158\x0e\a\x0f\t\f\x01\x04\x01\x1c\t\x02\x02\f\x02\x02\n\v\x1f\v\x10\x05\x06\x03 \v\r\x06\x14\x01\xd4\x02\x12\x1b\x0f\v\x02\x06\x10\x02%\x19\x1b\x14\x01\x02\x1a\t\x01\")\x1a\x1a\x03\x02\f\x01\x1c\x1f\x16\x0e\x01\x01\x10)\x01\x03\x04\x01\x02\x04\x04\x06\x03\r\a\n\n\x06\x01\x03\x01\x01\r\x02\x02\x03\x03\x05\x03\x10\r\x14\x14\x17\xda\x02\x01,H+#\x1e\x12\x02\x03\x01\x02\t\x01\x11\a\f\x14\v\r\x0f)\x04\x01\x06\x01\x1b%\n\x01\x17\x17 \a\b\x11\x11 \x10\x12\x1a\x12\x02\x06\xd1 \v\a\t\x0f\x18!\x01\x01\x18\x1b\x05\x01\x11\x1a\x1e0\a\x01\t\x02\v\x01\x01\x01\x01\x10\x12\x01\x02\x04\v\x06\x0e\n\x0f\x05\x0e\x03\x01\x01\b\x02\x04\x06\x01\x10\b\x04\x13\x01\x06\x04\x02\f\x02\x02\x01\x02\b\v\x03\v\t\t\x13\x18\a\t\n\r\x0f\x03\a\n\x06\a\x01\a\x01\x01\x17\x10\f\x03\t\x06\r\f\xfe\x8b\x06\x10\x17\x11\n\x05\a\x11\x06\"\x06\x01\t\x02\a\x10\x03\x05\x04\x01\x03\x01\x03\x03\x11\b\x1a\x13\x06\x03\x01\x06\x12\f\x11\x04\x01\x02\x06\x01\x01\x01\x03\x12\x17\x04\x02\x12\a\b\x02\x01\n\t\a\x02\x04\a\f\x06\x02\x13\x02\x15\v\n\x14 \x06\x10\b\x06\x02\x06\x05\x01\x02\x01\x03\v\x04\x01 \f\f\x04\n\t\x01\a\x04\x06\x0f\x10\x0f\v\t\x17\f\f\x13\x1b\x05\x15\"\n\x04\x13 \x1e\x01\x01\x01\x01\x01\x02\x11\t\x0f\x02\x01\a\x13\x15\x06\b|\x01\a\n\x06\b\x01]\x1e\x12\r\b)\x18\v\x06\x12\x04\x04\x05\r;\x1e%\x13\x10\x01\x04\x01\x1b\n\x02\x02\x15\x17\x10\n\f\x01\v\x12\x1a\x03\x01\x16\x14\x01\x01\x10$\x1c\x1a\x14X\x02\x04\x05\x04\x05\x01\x04\x06\x01\b\x1c\x1e-\x02\x01\x01\x16\x03\x01.\x19\x0f\x03\x01\x03\x11\r\x11\x02\x01-\x1d\x01\x04\x01\b\x02\x05\x04\x03\v\x05\x06\x04\x01\x01\t\x03\x03\x05\x01\x01\x01\x06\x01\x01\t\t\xc1\x01\x03V\r\a\x10\r\x17\x01\x02\x04\x01\n\f\t\x01\x15\x1f15\x06\v+*\x03\x05\x1f\r\x1c\x10\x10\x16\x16\b!\x1f$\x1b\x1b\v\x12\x1e\x03\x05\x10\v\x1c\x11%\f\x14\x02\x11\a\x01\x05\x01\x0f\x05\x05\x1e \a\a\x1f\x0f\x01\a\x1b\x12\x10\x1e\n\x04\f\b\r\x04\v\x0e\x04\n\t\x06\x01\x04\x04\x02\r\x11\x12\x03\x01\x02\f\t\x01\b\x01\x01\x01\a\b\x10\x13\x06\b\x01\x14\r\x01\x01\x05\x01\n!\r\n\x01\x02\v\b\x1b\v\x06\x06\x02\xa7\v\n\x01\x05\x12\x15\x10\v\x04\x14\x06\x01\n\x01\x04\x01\x0f\n\x02\x03\x11\x14\x05\v\x04\x03\x1c\x12\b\x19\x12\b\x04\x01\x10\x12\v\x10\x04\a\x10\x0e\x01\x02\v\x0f\x16\x15\x04\x02\x11\x0e\x0f\x0f\x01\x01\x04\n\x03\v\a\x12\x11\r\x03\x18\x03\x01\x02\x14\x02\x02\x04\x03\x03\x12\x01\x05\b\x04\x02\x10\x02\a\x02\x02\t\x12\x01\b\n\x01\x02\x01\x05\b\x10\x17\x01\x01\x06\x16\f\x04\x03\f\x02\x01\x01\f\v\x01\x03\t\x1b\x02\x04\x03\x04\x02\a\x06\x0f\x02\x01\x03\a\v\v\x05\x06\x12\b\v\x06\x01\x11\x00\x00\x06\x00\x00\x00\x00\x02\x00\x01\x80\x00\x10\x00\x1c\x00.\x00:\x00J\x00Z\x00\x00\x013\x15#5\x0e\x01'.\x0154676\x16\x17\a\x14\x162654&#\"\x0e\x01'3\x15#5\x0e\x01'.\x0254676\x16\x17\a\x14\x162654.\x01#\"\x06%!\"\x06\x15\x11\x14\x163!265\x114&'2\x16\x15\x11\x14\x06#!\"&5\x11463\x01~44\x0e-\x0f\x14\x18\x17\x14\x0e.\x0f@\x12\x1d\x13\x13\x0e\n\x0f\b\x8244\r.\x0e\r\x14\f\x17\x15\x0e-\x0f@\x13\x1c\x13\b\x10\t\x0e\x13\x01D\xfe\x80\r\x13\x13\r\x01\x80\r\x13\x13\r\x1a&&\x1a\xfe\x80\x1a&&\x1a\x018\xf0\x15\x11\x06\b\t&\x19\x17'\t\b\x05\x10:\x0e\x13\x14\r\r\x14\n\x0f\x9a\xf0\x15\x11\x06\b\x06\x15\x1d\x10\x17'\t\b\x05\x10:\x0e\x13\x14\r\b\x0f\n\x14\xbd\x13\r\xff\x00\r\x13\x13\r\x01\x00\r\x13 &\x1a\xff\x00\x1a&&\x1a\x01\x00\x1a&\x00\x04\xff\xfe\xff\xbf\x01\xe0\x01\xc1\x00\x18\x00\x1d\x00G\x00L\x00\x00\x17767>\x05454'.\x02'3\x14\a\x0e\x01\a\x067#73\x06'\x15#\a#\".\x035&\x06\x17\x16\x17#\".\x027547;\x012\x1e\x02\x15\x14254'32\x1e\x02\a\x176&\x06\xce\x1f\x17\x0e\a\r\b\x06\x02\x02\x0e\x03\x03\x06\x03O\n\t4\"\v\xa0w\x11\xb0\x1bZJ!\x06\x0f\x16\f\a\x02\x01\x14\x01\x03\x17[\f!&\x19\x01\x0fR\x01\x03\r\x14\x0e\x14\x10T&6\x19\n\x85@\a\x18$@&\x01\x06\x04\v\v\r\n\t\x05\x01\x04\x10\x03\x04\a\x033\x19\x15+\x05\x01\xa8\x1f\x1f\xe0\xa97\f\x0f\x14\t\x03\n\x02\n#\x16\f\x18/\x1f\xd5\x10\x01\x01\a\x14\x10\n\n\x1b\x11\x19)$J\x1e\x16\x1f\x03\x00\x00\x04\x00\b\xff\xc8\x02\x01\x01\xc1\x00\x03\x00\a\x00\"\x00'\x00\x00\x1753\x15'3\x15#%\x16\x0e\x02#512>\x01'.\x01'&\x0e\x01\x15#4>\x02\x17\x1e\x01\x031#53WJ\x88>>\x01\xd3\x15\x19Bj<3P\x1c\x11\v-\x1e7]<`6[v@8S\xda__\"JJ\x87=\xe7@v[6`<]7\x1e-\v\x11\x1cQ2\x0232\"2\x16\x14\x06\"&4%\x11&'\x17!\"&5\x11463!2\x16\x034&/\x01.\x03+\x01\a\x1e\x01\x1f\x01.\x01\x0f\x0167'\"\a\x0e\x02\x15\x1e\x02367.\x01/\x01\x1e\x021\x1e\x01767\x06\a\x172>\x027\x01)\x0f\v\a\f\a\x04\a\n\x05\vs\x16\x0f\x0f\x16\x0f\x01(:=\x0e\xfe\xdd\x15\x1f\x1f\x15\x01X\x15\x1fI\x12\n\t\n\x17\x11\x0e\x04\x04\x03\x13 \x06\x06,h+\x0f\x15.\x02#%\x04\f\x15\x02\v(\x19\n\a\x0e\x17\x04\x04\x02\x05\x04\"S+\x0f\x0e\r!\x11\x10\x1b\x11\r\x02\xd9\x18\x11\b\r\b\x06\n\b\x04\x10\x18\x11\x11\x18\xb2\xfe5390\x1f\x16\x01Z\x16\x1f\x1f\xfe\xf8$K\x13\x13\b\v\x05\x03\x04\x06\x11\x05\x05\x19\x02\x13\b\x14\x0e\x03\x1b\b\x1aO$\x05\f\x16\v\n\x04\x0f\x06\x05\x01\x03\x02\x13\a\x11\x05\n\x15\n\x14\t\v\v\x04\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\n\x00\x17\x00\x00\x132\x16\x14\x06+\x014546\x13264&\"\x06\x15\x14\x17\a7\x16\xe2\\\x82\x82\\\xe2\x86Z5KKjK\x0f\x17R\x19\x01\xa0\x84\xb7\x85\xe0\x04[\x81\xfe\xa0KjKK5!\x1cK\x14\f\x00\x00\x00\x02\x00\x00\xff\xbf\x01\x90\x01\xc0\x00\x02\x00\x14\x00\x00\x01#5\x173\x15\x14+\x01\x1132\x17\x15&+\x01\x11325\x01\x8e\x8e0`ӽ\xbd\x12\x11\x0f\x12__q\x01 \x8c\xac~\xc2\x02\x00\x03T\x02\xfe\xafd\x00\x00\x00\n\xff\xfb\xff\xdf\x02\x80\x01\xa0\x00\x03\x00\a\x00\v\x00\x0f\x00\x13\x00-\x001\x005\x009\x00=\x00\x00%#535\x15#5\x17\x15#5'\x15#53\x15#5\x05\x17\x06\x15\x06'\x0e\x01#\"'.\x017!27&6?\x01\x17\x16\x176\x16%\x15#53\x15#53\x15#5'\x15#5\x01^BBB\x90BZB\x90B\x01W\r\b\x19C)\xa9vn8\x1b\x17\x06\x01\xb3\x1c\x15\x0f\x04\x0e\t\x0e%\x05\x13+\xfe\fB\x90B\x90B\fB\xd4;\x91==\x91;;H<<<\x02'.\x01\a\x0e\x01\a\x1e\x03\x15\x14\x06#\"&76767>\x01\x1e\x03\x17\x1e\x01\x06\a\x06\a35\x17\x157$4&\"\x06\x14\x162\a3676&/\x01&'\x16\x17\x16\a\x06\x01\xe0\x90\xfe\xb0YH\x03\x06\x15\x17\x14\x03\x040\x1f\a\x13\x01\v\x12\f\a!\x18\x1b\"\x04\x04\x0e!H\x1b)(\x18\x17\b\x03\x0f\x12\x04\x11\"M[\"/\xfe\xe5\r\x12\x0e\x0e\x12'sZ&\x10\x02\n\t#0\x0f\n\x14162R@]R\x03\a\x18\x1c/\x12\x17\x17\f\x03\x10\x06\x01\v\x0f\x13\v\x17\"*\x19\x19\x174\x0f\x04\x02\f\t\x10\a\x03\x10.>\x1d>XA76\x1b\xe3\x13\r\r\x13\r\xc4bD!3\x0f\x0f$\x02\f\x184=B\x00\x00\x00\b\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x06\x00\r\x00\x16\x00#\x00)\x001\x00A\x00I\x00\x007>\x017\x16\x17\x067\x06\a&'6\x16\a>\x027\x16\x17\x06&7\x0e\x02\a&5045\x167\x16\x176\x17\x06\a&'67\x16\x17&\a&7\x11\x14\x06#!\"&5\x11463!2\x16\x024&\"\x06\x14\x162Z\a(\x1d\x1a\x19C\xa5\x162\x17\x1c!@\x95\b\x1c.\x1a\x15\b KE\x18.#\f#DI\a'-(\t2\a'4\x18\x1e\x01/0\x06\xbc\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c@^\x84^^\x84\xdc\x1f3\x0e$,\x11K\x1f\x12+%\a\x10\xe8\x0f \x1e\t71\x0e\t\x83\a\x1d$\x14(4\x03\x01\x02\x15\x0e\x19\a\r:\".d\x16 %0\v\x06\x0e\x9c\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xfe\xfa\x84^^\x84^\x00\x00\x00\x00\x01\x00\x00\xff\xe0\x01\xa0\x01\xa0\x00\x16\x00\x00\x1132\x17\x16\x15\x14\x0e\x02+\x01532654&+\x01\x15#\xabrE> <_:\xab\xabV_dQk@\x01\xa0F?[*P@&@a?@`7\x00\x00\b\xff\xfb\xff\xc7\x01\xe1\x01\xb9\x00\r\x00\x19\x00$\x00,\x00\xb5\x00\xc6\x00\xd9\x00\xe8\x00\x00\x01>\x01\x172\x1e\x02\a&\x0e\x02&#&676\x16\x17\x16\x06.\x02\x162\x16\x14\x06#\".\x0154&2\x16\x14\x06\"&4\x05\x06'\x06\a\x14323\x167.\x01670\x1e\x01\x17>\x02\x1e\x01\x06\a636\x17\x16\a\"\a\x06\a\x17\x16\x06'\x14\x06&5\a\x14\"5\x06&?\x01\"\x0e\x011\"&4632\x1e\x013&'\x06'&676767.\x03'\x06547>\x023>\x03367.\x01>\x01\x1e\x01\x17>\x02\x1e\x01\x06\a\x16\x17\x1e\x01\x172\x1e\x01\x15\x16\x15\x06'\x14\x06\a\x16\x17\x1e\a\x14%6.\x02\a\x06\a\x06\x16\x17\x1667>\x02\x174.\x01'&\"\a\"\x0e\x02\a2\x1632>\x017&'&\x0e\x01\x15\x14\x16\x17\x1e\x017>\x01\x019\x01\x18\f\x01\x06\n\x04\x02\t\x10\x0e\v\x06\xc9\x05\x14\x06\r\x1a\x01\x01\a\f\x10\x11\xbf\r\t\t\a\x04\a\x05\x96\r\n\n\r\t\x01N\v5\x14j\x02\b\x0e!@\b\x06\x03\x02\b\n\x03\x04\x0e\v\x03\x01\x03\a\b\x02\x05\x04\x03\t\x02--H\x01\x02\x1b\x03\r\x0f\x01\x1c\x06\x16\x01\x02\x11\x1d\x10\b\b\b\b\x01\x0f \x0fb\x119\v\x06\x18\"\n\x05\x01\x01\x05\x05\x02\x02\x02\x17\x02\x01\x05\x06\x01\x02\x10\x1f\x15\x15$-\a\x01\x04\x02\v\f\x02\x03\t\a\x02\x02\x03\x056*\"(\x03\x01\a\x05\x02\x01\x16\x05\x04\x04\x01\x05\x0e\t\f\a\b\x04\x03\xfe\xef\x01\r\x16\x1d\x0f'\a\b\x12\r\aG\t\x04\a\x043\x06\x05\x04\x01\b\x02\x03\x05\x03\x04\x02\t\x0e\x01\x01\x05\b\x8d\x06(\x15#\x16\b\x05\tH\x06\f\x15\x01\x90\n\x04\x05\x03\x05\x05\x02\x02\x02\x03\x02\x05\x03\f\x01\x05\x04\n\b\x05\x02\x04\x02l\t\x0e\t\x04\b\x04\a\t\t\x0e\t\t\x0e\x9a\x1b\x1ch\x14\x01\x02\n\x06\x13\f\x01\x01\x06\x05\x06\a\x02\x02\v\x10\a\x02\x02\b\x06\x01\v\n\x02\f\x0e\x06\x0e\t\b\a\v\x05\x0e\x0e\n\a\f\f\x02\x01\n\f\n\x01\x02\x19]\x1d\x1c\x0f\x1a\x16\a\x04\n\t\a\x10\v\x14\a\x04\x1b\f\x03\x01\x01\x01\v\x0e\a\x02(\t\b\x14\v\x02\x04\f\b\x04\x05\x02\x01\b\r\x04\x05.\x01\x0e\x13\x01\x01\x01\x03\f\x1a\x03\x02%\t\x11\x13\x04\t\x06\t\x06\a\a\b\a\x9f\x10\x13\x05\x02\x02\x01\r\x0fO\a\x04\x01\n\x05\x1a\x1c1\x02\x14\t\x01\x01\x01\t\t\x0e\x05\t\x05\bU\r\x01\x01\x01\x13\x15\x0f.\a\n\x02\x05\x06O\x00\x00\x00\x04\x00\x00\xff\xf5\x02\x80\x01\x8b\x00\x06\x00\r\x00\x0e\x00\x1e\x00\x00\x13\x06\x15\x14\x17#\x11\x052\x16\x17#>\x01%13\x11#67'\x06\a.\x015!456WANd\x01E#-\x01\xaa\x033\x01\nTQ \x1a`AWGD\x01u\x03\x01\x8aOq\x81S\x01\x94\t.%$/\t\xfek\"/0i\x01\x01jY\x10\b_\x00\x01\x00\x16\xff\xc0\x01*\x01\xc0\x00\x17\x00\x00%#\x15#5#5354>\x0132\x16\x1f\x01\x15#\"\x06\x1d\x013\x01\x17KdQQ\x1e7$\x10$\n\n(\x1c\x19Y\xa0\xe0\xe0]F(8\x1d\x03\x02\x01O\x1d\x15<\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00'\x00B\x00\x00\x012\x16\x15\x14\x0e\x01'&*\x02\x0e\x05\a\x06#\"&5<\x01&<\x01.\x03'&54>\x02\x176&\x0f\x01\x06\"/\x01&#\"\x0f\x01\x06\x1e\x01?\x0162\x1f\x01\x16327\x01\x01i\x8e`\x93L\x02\x02\x02\x04\x03\x05\x05\n\b\x0f\a\x04\x04\b\f\x01\x01\x01\x02\x01\x02N'B\\\xc9\x05\x0e\bO\x04\n\x04:\n\f\x15\vI\x03\x05\n\x05O\x04\n\x04:\n\f\x15\v\x01\xb8\x89hT{-\x15\x01\x01\x02\x03\x04\x04\x06\x03\x02\v\b\a\x0e\t\t\x05\x05\x03\x03\x02\x01Fl3Z?%\xb9\b\r\x06;\x03\x03,\a\x11t\x05\v\x03\x03<\x03\x03,\a\x11\x00\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\v\x00\x15\x00\x1b\x00#\x00\x00\x01#\x15#\x15#535353\a3\x15#\x15#5353\x17\x15#\x15#5\x01!\x15#\x15#\x15#\x01\x80@\x80\xc0\xa6\x80Z\x1a\x1a\x80\xc0\xa6\x80\x1a@\x1a\xfe\xda\x01\x80\x80\x80\x80\x01\x00\x80\x80\x1a\x80\x80@\x9a\x80\x1a\x80@\x1a@Z\x01\xa6\x80\x80\x80\x00\x00\x00\x00\x03\x00\x00\xff\xdd\x01\x80\x01\x8d\x00)\x00<\x00K\x00\x0073\a#\x15\x14\x15\x06\x1f\x01\x15#576=\x014+\x015354632\x16\x15\a4&#\"\x0e\x01\x1d\x01\x14\x0e\x01\x14\x01#576=\x014/\x0173\x15\x14\x15\x06\x16\x1f\x01\x03\x17\a'\a'7'7373\x173\x17r]\x0fM\x01\x06;\xb3\x1d\t\b\x1e&55*/E\n\r\f\f\x02\x01\x01\x01\x0f\x8d\x1c\v\n!\tn\x01\x02\x03\x16\x1e\f\n*+\n\f\x1e\x05&\x15\r\x15&\x05\xe03\x9e\x02\x03\x04\x01\x06\"#\x03\x01\n\x9c\x033\x1d2.\x1f*\b\x13\r\n\x0e\x0e \x01\x02\x02\x01\xfe\xfd\"\x04\x01\t\x94\b\x03\t(\xd0\x02\x04\x02\x01\x01\x04\x019-\n\x16\x16\n-%\n&&\x0e\x00\x00\x00\x04\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\v\x00\x17\x01Q\x01\xb5\x00\x0072\x1d\x01\x14+\x01\"=\x014;\x012\x1d\x01\x14+\x01\"=\x01437\x16\x15\x14\x15\x14\x15\x14\x150\x141\a0\x141\x14\x15\x1c\x01\x06\x150\x141\x06\x150\x141\a0\x15\x14\a\x1c\x01\x15\"\x140\x06\x1c\x01\x06\x1c\x01\x061\x14\a\x14\x15\"\x141\x06\x15\x06\a\x14\a0\x06\x14\x061\x0f\x01\x15\x06\x15\a\"\a\x1c\x01\x0e\x01\x15\x061\x14\x06\a1\x06\a\x141\x0e\x01\x150\a\x06\x14\x0610\x06\x15\x061\x14\x06\x15#\x06\a0*\x02\x06*\x021\x06#*\x031\"#\"\x06*\x01#\"#0\"1*\x01#\"#*\x02#0*\x01&*\x051&#\"#*\x011&#*\x01#&'05&'4.\x01#04'.\x015.\x0114\"5&'014&5&4&4&4&5'\"&<\x01/\x010&1&54'4&'45\"41&54&<\x01&41&5<\x01&<\x01&504'41'041&5041<\x01545&504145041<\x01'45<\x0154767676767676767632\x17\x16\x170\x161\x16\x17\x16\x17\x16\x0354+\x01\"\x1d\x01#54+\x01\"\x1d\x01#54+\x01\"\x1d\x01#54#5632\x1632=\x014#\"\x06#\"&#\"\a5654\"\x15\x14\x17\x15\"\x1d\x01#54+\x01\"\x1d\x01#54+\x01\"\x1d\x01#54+\x01\"\x1d\x01\x16\x17\x16\x17\x16\x17546\x16\x1d\x0167676\xd0\x04\x04\x16\x04\x04\x8c\x04\x04\x16\x04\x04\x9a.\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x04\x03\x01\x01\x01\x02\x01\x02\x01\x02\x01;e\x02\x01\x02\x01\x02\x01\x02\x02\x01\x01\x02\x01\x02\x02\x01\x01\x02\x01\x01\x01\x01\x03\x02\x01\x04\x01\x04\x02\x01\x02\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x02\x01\x02\x01\x01\x02\x01\x02\x01\x01\x01d<\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x03\x04\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01.\x03\x04\b\b\x04\x04\x06\x03\a\a\x03\x02*3\x18\x1a\x19\x193+\x04\b\x06\x12\x0f\x03\x06\x04\x16\x04\x1d\x04\x16\x04\x1d\x04\x16\x04\x1d\n\f\t\x05\x10\x05\x16\x04\x02\r\x04\x04\x12\x05\b\v\b\x1a\b\n\x1d\x04\x16\x04\x1d\x04\x16\x04\x1d\x04\x16\x04\x0e\x14\x1f(\x15\x16,,\x16\x15(\x1f\x14\xd3\x044\x03\x034\x04\x044\x03\x034\x04}AO\x04\x02\x01\x01\x01\x03\x02\x01\x02\x03\x01\x02\x01\x02\x01\x02\x03\x01\x02\x06\x01\x02\x02\x01\x01\x01\x03\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x02\x02\x01\x02\x03\x02\x01\x02\x01\x02\x03\x01\x01\x02\x01\x03\x02\x01\x01\x01\x02\x01\x01\x01\x02\x01\b\x04\x01\x01\x02\x01\x01\x03\x01\x01\x02\x01\x01\x01\x02\x01V\x11\x01\x01\x01\x01\x01\x01\x11S\x01\x02\x01\x01\x01\x02\x01\x01\x02\x01\x01\x01\x02\x01\x01\x04\b\x01\x02\x01\x01\x01\x02\x01\x01\x01\x02\x01\x02\x02\x01\x01\x01\x03\x02\x02\x01\x02\x01\x01\x03\x01\x02\x01\x02\x02\x01\x01\x01\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x01\x01\x03\x01\x01\x06\x02\x03\x01\x02\x01\x02\x01\x01\x01\x02\x02\x02\x02\x02\x02\x01\x02\x01\x01\x01\x01\x04\x01OA\x04\x05\n\b\x04\x05\x05\x03\x05\x06\x02\x01\x1e\v\x05\x05\n\x1f\x03\x06\x05\x10\x13\x03\xfe\xf6H\x04\x04\x1a\x90\x04\x04\x1a\x1a\x04\x04\x1a\x1a\x04\x1e\x03\x03\x061\x03\x03\x03\x02\x04\x03\b\r\r\b\x03Z\x04\x1a\x1a\x04\x04\x1a\x1a\x04\x04\x90\x1a\x04\x04H\x17\x13\x1f\x11\t\x05L\x1c\x17\x17\x1cL\x05\t\x11\x1f\x13\x00\x03\xff\xf0\xff\xe3\x01\xcb\x01\xac\x00\t\x00\x0f\x00(\x00\x00\x01>\x01\x16\x06\a\x06.\x02'\x06\a&76\x0567\x16\x15\x14\x06\"&54>\x0132\x17\x06\a&\x06\x17\x1e\x0176\x010\x0fm\x1e5\x0f\t%#\x0e\xb90\x1c1\x15\x14\x01}\x06\x05\x1b~\xb3~:c;4/\t\n\x14\t\x0e\x11M\x0f\b\x01`\x0f5\x1em\x0f\t\x0e#%%\x1e1U\x15\x14\x99\n\t19Y\u007f\u007fY;c:\x19\x05\x06\x03\x1c\x18!4\x0f\b\x00\x03\x00\b\xff\xc4\x02H\x01\xc0\x00l\x00w\x00\x83\x00\x00\x01\x16\x15\x14\x06\a5\x06'\x15.\x015476\x17\x16\a\x06\x15\x14\x16\x175&'\x15.\x0254676\x17\x16\a\x0e\x01\x15\x14\x16\x175.\x02547.\x03=\x0146723\x1e\x01\x1d\x01\x14\x0e\x03\a\x16\x15\x14\x06\a\x15>\x0154&'&76\x17\x1e\x02\x15\x14\x06\a5\x06\a\x15>\x0254'&76\x06\"\x06\x15\x14\x1e\x013264\a2>\x0254&\"\x06\x14\x16\x026\x12\xa1s\f\fs\xa1\x12\x05\v\n\x04\x11\x84b\v\f5T1E9\v\x05\x05\n4>N>\a\v\a\x12\x03\x0f\x0f\fd\x1d\x04\x04\x1dd\b\v\f\v\x03\x12\x0e\v>N>4\n\x05\x05\v&8 iQ\f\v@i=\x11\x04\n\v\xb9\x14\x0e\a\n\a\n\x0e\xa4\x05\t\x06\x04\x0e\x14\x0e\x0e\x01J15t\xa7\x04\x92\x01\x01\x92\x04\xa7t51\v\x05\x04\n-1d\x95\r|\x02\x04h\rDc8Dr \x06\v\n\x05\x1dg>Eo\x19\\\x03\t\x0e\b\x14\n\x1b \b\t\b\x0f\x1e\x85\x02\x02\x85\x1e\x0f\x06\b\a\f\x1d\x16\n\x14\f\x12\x04\\\x19pE=g\x1d\x05\n\v\x06\x15@S-V\x84\x13h\x04\x02|\bJrC0-\n\x04\x05\xa9\r\n\a\v\x06\x0e\x14\"\x04\x06\t\x05\n\x0e\x0e\x14\x0e\x00\x02\x00\x00\xff\xe0\x01\x90\x01\xa0\x00\x19\x00\"\x00\x00%2\x1e\x02\x17\x06#\"&54632\x17\a&\"\x06\x14\x16327572\x16\x1d\x01&+\x015\x01D\x13\x1c\x0e\x06\x01Dg]\x80\x81\\[A?&nNN74&\x01%3\x184v\x80\x10\x1a\x17\rR\x84\\]\x83B?'NpN$\"q50\x1e*Y\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x10\x00 \x00L\x00\x00\x01\x16\x0e\x01\a\x0e\x01'.\x017>\x0132\x1e\x017\x11\x14\x06#!\"&5\x11463!2\x16\a45#\x15\"'.\x01#\"\x06\a\x06\x15\x1e\x017670703\x1c\x01\x15\x14\a\x06\a\x06'&'4+\x01\x16\x17\x1e\x0176\x01,\x03\x06\x12\x0f\x10*\r\x1a\x17\x02\x03,\x1d\x17!\x13\x97!\x17\xfe\xb0\x17!!\x17\x01P\x17!v\x1d\x01\x01\b(\x1c&4\n\x06\x01<4.\x17\x01\x01\a\f!\x1b\x1a#\x06\x02\x1b\x01\a\x11O!C\x01\x01\x14%!\v\v\x02\a\r5 *-\x14\"O\xfe\xb0\x17!!\x17\x01P\x17!!\xf8\"\xb7(\x01\x12\x1c*$\x15\x18:<\x02\x02,\x02\x04\x1a\x04\x19\x13 \a\x06\a\n \x01\x11\f\x1d\x13\n\x11\x00\x00\x00\x02\x00\x1c\xff\xbf\x01c\x01\xc1\x000\x00?\x00\x0073232\x15\x16\x17\x167676564/\x01\x14\x06\x15\x0e\x01\a\x06.\x01'47>\x0132\x1e\x01\x17\x16753\x13\x06\a\x06.\x01'&\x13\"\x06\a\x06\x16\x17\x1667>\x01'.\x01+\x02\x1a\r\x03\n5'*2\x12\v\x01\x01\x01\x02\x117\"3L+\x02\t\x10O;\x1c2\x1e\b\x01\x01,\x01\x01f%IE\x11\v\x90+D\x04\x03\"(\x14A\x18\"\x1b\a\a<-\x030\x0f\v\t\v1\x1c'\a*\x03\x01\x01\x03\x01 #\x02\x02'Q;% 7@\x17\x1e\x11\x03\x01=\xfe\xb4\x89\x19\a\x01\"\x1d\x13\x01\x89EA1Q\x13\v\x03\x11\x17U.8@\x00\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x03\x00\a\x00\v\x00\x00%\x033\x13\x05!\a!\x13\x17\x03'\x01S\xa4\xa2\xa3\xfe\xd6\x016Q\xfe\xca!S\x9cQ\x85\x01\x1b\xfe\xe5\x17\x8e\x01\x9d\x8e\xfe\xf1\x8e\x00\x00\x04\x00\x19\xff\xc0\x01\xe8\x01\xc0\x00\x02\x00\t\x00\x10\x00\x13\x00\x00%'\x05%\t\x01&5\x114\x05\x1e\x01\x0f\x01'7\x017\x17\x01E\xdc\x01\x18\xfe\xae\x01\x01\xfe\xff\x16\x01\xbf\x0e\x01\x0e\x0354'\x1e\x02\x15\x14\x0e\x027\x16\x15\x14\a\x061\"&5>\x0254'\x0e\x02#\".\x045470>\x0254/\x01\x1e\x01p\x02\x02\x06\x02\b\x02\v\x02\x03\r\x0e\f\x11\x05O\x15\x18\x15\x1e,+\x1e\x01\x04\x12\x12!(!\xce\x02C\x03\x04 \x05\x0e\x17\t\x01\x1c\x1c\x01\x01\x03\x04\x04\x04\x02\x03\x13\x14\x11\x03\x04\x13D\x93\x05\v\a\v\x05\r\x02\x0f\x01\x02\x04\x12\x14\x1e\f\x19\x16\x02\x0f\x05\x1f8\x12\x19*\x17 >105\x19\x05\x05\x02\x17,\x15\x1b9)6\x0f\r\fCF\x02-\b\x06\x154\x12\x11\x10\x0e,\x1d\x03\x06\b\t\v\x05\b\b\x1b *\x0f\n\a\a\aP\x00\x12\x00\x02\xff\xc0\x01~\x01\xc1\x00&\x00-\x00O\x00V\x00d\x00\xf2\x01\x04\x01\x11\x01#\x010\x01\x9c\x01\xa8\x01\xae\x01\xba\x01\xc0\x01\xcd\x01\xd7\x01\xe5\x00\x00\x1367&'6\x17\x1e\x01?\x01\x14\x06#\x16\x0e\x02\x0f\x0164>\x014'&'\x06.\x01'&'\x06\a4.\x017\x06\x16\x17\x167&\x17\"&5\x1676\x17\x06\a\x16\x17\x14\x06\x0f\x01&'\x06\a\x0e\x02&'\x06\a\x06\x16\x1f\x01.\x027\x06\a\x167>\x01\a2\x16\a\x06\a\x06\"'&'&637\x1e\x02\a\x06\a\x06\a\x06#\"'&'.\x01'&6?\x01\x16\x17654&'&'.\x0254746165>\x01'&767674765&'.\x02#'7632\x17\x16\x1763&670\x14\x1e\x01\x1767\x06\x17>\x013\x17\x0e\x02\x17\x16\x1767632\x1e\x01\x15\x17\a\"\x0e\x01\a\x06\x15\x06\x17\x14\x152\x17\x16\x17\x16\x0e\x01\a\x06\x16\x17\x16\x172\x17\x16\x15\x14\x0e\x01\a\x06#\x0e\x01\x15\x14\x176\x03\x06\a\x16\x17\x16\x1767632\x1767&#\"\x17\"\a\x06\a\x16\x1767>\x0176%272\x17\x16\x176767&'&#\"\a\x16\x17&'&#\x16\x17\x1e\x01\x17\x16\x176\a\x16\x17\x16\a\x16\x176767\x06\a6;\x012\x17&'\x16\x17\x16\x1767&76767>\x0254/\x010&5\x16\x17&'&7\x14\x15676'&'&#\"\a\x06\x0f\x01767&'&\"\a\x06\a\x16\x1f\x01'&'&#\"\a\x06\a\x06\x17\x16\x1745\x16\a\x0e\x01\x0f\x0167\x06\x0f\x01\x06\x15\x14\x16\x17\x16\a\x163&?\x0167&'\x06\x16\x17\x16\x17&'\"\x17276'&+\x01\"\x06\x17\x16767\x06#\x067>\x01'\x06\a\x16\x17\x161\x16\a2'\"&/\x01\x16327\x06\x17\x1e\x01\a\x06\a\x06\"'&'&63=\x01\x06\a\x06.%\a\x12\x05\x06\r\t\x01\x03\x04\x04\x02\x02\x01\x02\x01\x01\x01\x02\t\x18\x11\x05\f\x01\x03\x01\x02\x03\x1d\x03\x03\x06\x12\x14\fn\t\r\x13\x11%.\x06\a\x06\x01\x02\x02\x01\x01\x03\x02\v\x03\f\x10\x11\a\x02\x01\x01\x01\x01\x02\x02\x05\b? \f\x13\x12\a\x03\x89\x06\x05\x01\x04\t\x05\r\x05\n\x04\x02\x06\a\xda\x03\n\f\x04\a(\x14/\x18((\x17/\x15\x13\x18\x04\x04\v\a\a\x03\x16\x03\t\x03\x03\x05\r\r\x0f\x10\x02\x04\x03\x01\x02\x11\x05\x03\v\b\f\x01\x01\x01\x02\x03\x0f\n\x01\f\b\x12\x1c\f\f\x1b\x17\x04\x02\x01\x15\b\x01\x03\x03\x04#\x06\b\t\x11\x04\x04\x02\x04\x05\x02\x05\x04\x17\x1b\f\f\r\x17\n\b\f\x01\n\x0e\x04\x02\x01\x02\f\b\v\x03\x02\x06\x06\x02\x02\x01\x03\x01\x03\x01\x01\x10\x0f\r\r\a\x01\x03\t\x04\x15(\x15\x11\x02\x03\x04\x03\x06\x0e\r\x10\x05\x04\x05\x05\f\r\t\r\v\t\t\x04\x06\x04\x05\a\x03\x02\x03\x01\xfe\xe9\x04\x05\x10\f\x0f\x06\x05\x02\x02\x03\x11\x15\b\t\r\f\x051\x04\t\b\f\x02\x01\x03\x02\x03\x05\a\x03\x19\x12\x01\x02\x05\x0f\x18\x04\x02\x11\t\x06\x11\x06\x06t\a\x05\x11\x06\v\x0f\x02\x04\x18\x0f\x05\x02\x01\x12\a\x01\n\n\v\t\x01\x02\x02\x01\f\x04\x03\b\x01\x01\f\x03\x01\x06\x05\n\x0e\x13\x1a&\x06\x04\x16\x1f\x05\x11 T \x11\x05 \x15\x04\x06&\x1a\x13\x0e\t\x06\x06\x01\x03\f\x01\x01\b\x03\x02\a\x03\x04\x02\x01\x01\x01\x01\b\x0f\x0f\x06\x15\x12(\a\v\x01\x05\x03=\x0e\x05\x015\r\x12\x06\x06\tf>\x17\x05\x06\x06\x13v\x13\f\x05\x17\x8f\x12\r\n\t\x06F\b\x01\x05\x0e<\x03\x04\x01\v\a)\x8c\x06\r\x04\x04\r\x0e\x0e\r\x0e1\x06\x06\x02\x04\n\x05\r\x05\t\x04\x01\x05\x06\x01\x03\t\x03\x02\x02\v+\t\x04\x02\x02\b\v\x05\t\b\a\x02\x02\x01\x02\x06\x06\b\x03\x04\x04\t\x02\b\x05\r\x15\x06\n\x01\x03\n\x06\x06\x18\x05\r\f\x12\x1b\v\b\n\x13+\v\x02\x03\x02\t\x05\t\x03\x02\t\a\x15\r\x03\a\x05\x03\x06\x05\x03\x06\v\x05\x04\x02\a\x114\x12\x12\f\r\x05\x18\xe0\x06\x04\n\n\x04\x04\t\t\x06\x06e\x03\n%\x15(\x0f-\x04\x14\x14\x04-\a\x1b\x15\x15$\a\a\x1a\x12\x1b#\n\x0e\x02\x02\x03\a\b\x12\v\x10\v\x01\x01\x03\x02\x06\x1d\x02\x14\x13\f\x05\x04\x01\x02\x04\x05\x03\t\x02\x06\t\x03\x02\t\x12\x04\b\x1f\x02\x12\x1d\x01\n\a\t\x01\x1c\f\x11\x14\b\b\x01\x02\t\x14\a\x01\x02\x1f\b\x04\t\a\x01\n\x02\x03\t\x06\x02\t\x03\x05\x04\x02\x04\x06\f\b\x14\t\x02\x02\x1d\x06\x02\x03\x01\f\x10\n\x13\b\a\x04\x03\x0e\n#\x1b\x12\x011\x06\x1a\x01\x01\x02\x02\f\v\t\x01\x03\x02\x05\x15\a\a\x0f\x06\x06\x02\x01\x05\x19\x05\x01\r\x01\t\v\f\x03\x01\x01\x01\x1a\x06\x03\x05\x02+\x0f\a\a\x02\x01\x06\x18\x05\x01\x02\x06\xa9\n\x18\x193\x06\x01\a\x060\x0e+.\x01\x01.+\x11-\x06\a\x01\x063\x19\x18\n\x04\x01\x05\x06\r\x06\v\a\x01\x01\x01\r\x02\x0f\x1d\x19\x12\x06\b\x01\x01\x0f\v\x06\x02\x03\x06\b\x1e\x04\x06!\x0e\x06\t\x0f\x0f\t\x06\x0e!\x06\x04\x1e\b\x06\x03\x02\x06\v\x0f\x01\x01\b\x06\x12\x19\r\x16\x05\x04\x02\r\x01\x01\x01\a\v\t\r\b\x04\x92\x1d\x14\f\x01\x05\x05\x03*\x02+9\x12\b\t\x0f0@\x10\b\a\x0f\x10@\x18\b\x12\x02\x0f<\x0e+\x02*\x03\x05\x05\x01\f\x14\xf6\t\x05\x04\b\b\x12\xe6\x01\x05\x05\n\b\x05\x05\n\t\x04\x06\x00\x04\x00\f\xff\xc0\x00\xf6\x01\xc3\x00\r\x00\xcf\x00\xe3\x00\xf0\x00\x007\x0f\x01\x14\x06#\".\x015/\x01\x162\x03\x1667\a\x06\a\x06#\"527654&\x06\a\x06\a654#\"\a\x06\a\x14\a0\a\x06#\"76746767476'&#\"\a\x06\a\x06\a\x0647>\x0176'&#\"\a\x06\a\x06\a\x06\a\x06#\"7676'0#&\a\x06\a\x06\x17\x16327\x06\x167\x14\x161\x167670\a\x0e\x01\x15\x14\x17\x16767464676767676\x17\x14\a\x06\x15\x14\x16767\a\x0e\x02\".\x01/\x01\x1632767\x06\a\x14\x17\x1632767>\x0254&\x06\x0f\x01\x06\a\x06#\"'&7>\x0176\x17\x1632'.\x01\a\x0e\x01\a7\x14\x06&54632\x17?\x016\x17\x16\a\x15\x0f\x01\x16\a4'\a\x14\"=\x013\x06\x15\x142\xd2\x0e\x05%\x1a\x11\x1d\x11\x06\x0f\x1fi\xa6\x17\xb6\x17\x0f\f\x04\a\x01\x03\x01\x05\r\x06\f\a\x03\x02\x01\x04\x01\x02\x02\x03\x02\x01\x10\a\x02\x01\x02\a\n\x03\x02\x02\x01\x01\x02\x02\x01\x05\x02\x19\x01\x04\x03\a\x03\x01\x05\x01\x02\x02\x02\x02\x03\x02\x01\x01\x01\x04\x05\x06\x04\x03\x04\x02\x02\b\x02\x03\x01\x05\x03\x04\x03\a\x02\x02\a\x0e\b\x03\x0e\t\x01\x02\f\a\b\x01\x0f\x01\x02\x02\x04\x02\x02\x01\x02\x02\x03\x06\x04\x05\x04\x04\n\x02\x05\x0e\r\x04\a\r\v\x01\x16+-*\x16\x01\b\x03\x05\t\f\x03\x04\a\x01\x01\x01\x02\x04\x02\x02\x06\x02\x06\x02\x04\x05\x01\x05\x04\t\n\x06\x03\x02\x03\x04\x04\x10\t\v\x06\x04\x03\x06\x02\x01\x12\n\r\x16\x05\xd9ttD0\x0f\v\r=\x03\a\b\x039\nDF\x02\x01\x16\x01\x04\x1c9\x19P\a\t\x04\b\x04P\x19\r\x01\n\r\x01\f\x88\v\x03\x05\x02\x06\x10\a\x04\x05\x02\x06\x03\x02\x03\x03\x04\x01\x03\t\x01\x04\x01\x11\x06\x04\x12\x02\x17\a\x05\x04\x01\x01\x04\x02\x01\x05@\x04\x03\x01\x03\b\b\x03\v\x02\x05\x02\x02\x05\x03\x02\x05\b\t\x04\x02\t\x05\x0f\x06\x02\x02\x06\t\a\x13\x05\x05\x0f\x0e\x03\t\x01\x01\t\x05\x03\b\x03!\x02\x02\x02\x01\x02\x01\x02\x03\x01\x01\x01\a\x04\b\x0e\t\x06\a\x03\a\x04\x03\x05\x13\x03\x06\x02\x02\x03\f_\x02\b\a\a\b\x02P\x02\f\x02\x04\x15\x04\x05\x01\x02\b\x06\x14\b\x0f\a\x04\x03\x03\x02\x04\x0f\a\t\n\x03\a\r\x0e\x1d\x06\b\v\a\t\a\n\x04\x06 \x11\x86\n\b\b\n\x06\n\x011@\x03\x06\a\x02\x01<)\x04\x0f\x01\x01\x01\x02\x02\x01\x01\x01\x04\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x10\x00 \x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\a\x177#\x0e\x02\a.\x03'#\x17\x153\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x1b\xdaQ#\x18\x17\v\x02\x02\t\a\x17\x13%P\x1f\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xc56\x9b-/\x1c\x06\x05\x16\x110\"\x99g\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x10\x00\x83\x00\x00\x01\x1e\x02\x17\x11\x0e\x01\a!.\x01'\x11>\x017\x012&#&'.\x01=\x014>\x0176&#\"\x06#\"&#\"\x06\x170\x1e\x05\x15\x14\a\x14\x0e\x01+\x01\".\x015&54>\x0516&#\"\x06#\"&#\"\x06\x17\x1e\x01\x1d\x01\x14\x06\a\x06\a\"\x063262\x16324'&'.\x0146546;\x012\x16\x15\x14\x16\x14\x06\a\x06\a\x06\x143262\x16\x01\xbb\x02\x13\x1e\x12\x1b'\x02\xfe\x8c\x05'\x1c\x1c)\x03\x01N\x06\x01\x05\x0e\b\x05\x03\t\v\t\x06\x03\x04\x12\x15\x12\x10\x11\x10\x03\x03\x05\x06\x03\a\x04\x05\x02\x01\x01\a\x04n\x04\a\x01\x01\x02\x05\x04\a\x03\x06\x05\x03\x03\x10\x11\x10\x12\x15\x12\x04\x03\x06\x0e\x0f\x03\x05\b\x0e\x05\x01\x06\x12\x13$\x15\x11\x04\x04\x14\x05\x03\x03\x01\b\x05p\x05\b\x01\x03\x03\x04\x15\x04\x04\x11\x15$\x13\x01\xc0\x12\x1f\x14\x03\xfe\x8e\x03(\x1b\x1b&\x04\x01s\x03)\x1c\xfek\v\x05\t\t1Fe\n\x0e\x06\x02\x02\n\x02\x02\t\x02\x01\x02\x04\x05\b\f\a:\v\x01\x06\x06\x06\x06\x01\v:\a\f\b\x05\x04\x02\x01\x02\t\x02\x02\n\x02\x03\x0e\x0feF1\t\t\x05\v\x02\x02\t\x01\a\x06\x05\x1f\x1c+\x06\x04\t\t\x04\x06+\x1c\x1f\x05\x06\a\x01\t\x02\x02\x00\x00\x00\x01\xff\xf4\xff\xd0\x01\xc5\x01\xc0\x00$\x00\x00\x01\x1e\x01\a\x0e\x01\a>\x01&'\x16\a\x06'&'\x0e\x01\x16\x17&'&67>\x01.\x01/\x01\x1e\x04\x01\x9f\x17\x0e\v\fO:\x1b\r # \x1f\x19&\x1c\x15\x03\a\x02\ro\"\x19*>$!\x06\x10\t\n\t\x1eTHN\x01\x1e(_-.R\x12&`J\b7-#\x06\x04\x1f\v\x1dA\x19\x10M\aI06L\x1a2\x05\a\x11\v\f\f\v\"\x17\x022\",8}(\x1d\x13\x1f\x13)9\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\a\x005\x00E\x00Q\x00\x00\x122\x16\x14\x06\"&4\x17654\a\"\a\"\a\x06\x15\x06\x16\a\x06\a\x06\a\x06\x16\x17\x167676547676\x15\x14\x15\x16\x06\a\x06\a\x06\x16\x17\x1676\x132\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x132>\x014.\x01#\"\x06\x14\x16\x99\x8ded\x8ee\xfb\x01\t\x01r\x03\x04\x03\x01\x01\x03\x02\x06\x1e\b\v\n\x10\x11\x0e\f\x03\x01\aX\x04\b\x01\x05\x06\x1e\b\b\x01\t\v\x15\x16/+<<+\xf2+<<+y4Y33Y4Pqq\x01pe\x8dee\x8d\x8b\x04\xa3\n\x01\x15\x03\x02\x04\x02\x83\x01\x03\x01\x05\b\n\x1e\x03\x03\t\x06\r\x06q\a\x01\x10\x01\x02\b\x13\x19\"\x06\x01\x05\a\b\x16\a\t\x04\x04\x014<+\xf2+<<+\xf2+<\xfed4XiX4q\x9fq\x00\x00\x01\xff\xf8\xff\xda\x01\x81\x01\xa2\x00=\x00\x00%\x0e\x01\a\x06'.\x017>\x02767>\x015&54\x0f\x01\x0e\x01\x15\x14\x15\x16\a0\x15\x06\a\x0e\x01'.\x017>\x027676\x0276763636\x15\x14\x15\x14\a\x14\x01~\x05\x1d\x15*\x17\x11\x02\x11\b\x1a\x11\x19\v\x05\x04\x01\x01\x11\xb9\b\x06\x01\x03\x06\x18\r&\r \x13\x16\b\x1b\x11\x19\v\x05\x05\x01\x01\x01\x06\x06\a\xe6\x03\x12\x02<\x14\x18\x04\b\x12\x0f,\x0f\b\n\x04\x04\x02\x06\x04\x1243&\x0f\x03#\x01\a\b7Jc\v\x01\x1b\f\a\x06\x02\x06<\x15\b\n\x03\x05\x02\x05\a\x00\xff\b\t\x04\x06+\x01\x13Sl\x8a\b\x01\x00\x17\x00\x17\xff\xc0\x01\xe9\x01\xc4\x00L\x00c\x00s\x00\xb9\x00\xcd\x00\xd9\x00\xe1\x00\xeb\x00\xfa\x00\xfd\x01\x02\x01 \x012\x017\x01P\x01Z\x01g\x01\x81\x01\xa8\x01\xc1\x01\xca\x01\xd1\x01\xe2\x00\x00%\x16\a\x06\a!&'45.\x03'&>\x01767656.\x01'&'&'.\x017>\x0274.\x015&7>\x057676\x16\x17\x1e\x03\x17\x1e\x01\a\x06\a\x0e\x02\x1e\x02\x17\x1e\x03\x01\x0e\x01\a>\x0136\x167>\x027>\x0272>\x015&\a\x06\x176\x16\x1526.\x025&6'\x06\x17\x16\x17\x16\x176\x17&'&'\x1e\x02\x17\x167676'&'.\x01\a&>\x01\x17.\x06'.\x01\a\x06\a\x1e\x01\x0e\x01\a\x14\x16\x17\x06'&'&\x06\a\x06\x167>\x013\x16\x0e\x02\x15\x06\x17\x06\x16\a\x16\x176'4&'&\x0e\x01\a\x16\x156\x17\x06'>\x017\x0e\x02'\x14\"\x15\x16\x17\x1676'&\a\x06'465.\x02'\x06\x16\a30'&'&'\".\x01\a\x06\a\x16\x174173&'\"7<\x025&#>\x017<\x015\"'&'&\x0e\x02\x17\x14\x17\x16\x17\x167>\x01\x177\x06&#&\x06'\x0e\x02\a\x16\x17342\x15;\x01&\a\x0676'4.\x01'.\x01'\x0e\x02\a6\x17\x16\a\x1e\x01\x17\x06\a36\x03>\x01\x17\x1e\x01\a&\a&\x17>\x017&721\x16\x17\x0e\x01&'&7\x1e\x01\x17\x14\x1e\x03\x14\a\x0e\x01\a\x06&72\x1e\x03>\x01\x17\x1e\x02\x17\x16>\x027>\x01.\x02'.\x0256\x17\x14\x15\x16\x17\x1e\x02\x17\x16\x06\x15\x0e\x02'.\x01'.\x02#\"\x0e\x02\x1c\x02\x15.\x017&\x0e\x02\a6\x16\x17\x16\x05\x06\a&7>\x03\a\x167\x16\x15\x06&\x17\x06\a\x0e\x01'.\x02'&'&3\x1e\x016\x01\xe7\x01\n\b\x06\xfeZ\x01\x01\x02\x05\x04\x03\x01\x01\a\x14\x03\n.\x1b\x02\x03\b\x01\a\x01\x19\x0e\v\b\a\x01\x03\x02\x01\x01\x02\x02 \x03\t\n\x12\v\x16\x05\v\x1d%g\x1e\a\x11\x0f\x0e\x04\x13\x02\x0f\x06\x05\x01\b\x05\x01\f\x11\x01\x02\f\a\a\xfe\xe7\x1c4\t\x04\x12\x06\x01\v\x01\x04\t\b\x03\x03\a\b\x02\x01\x05\x03\x03k\x0e\x04\x14*\x03\x04\x01\x01\x03\x03\v\a\"\x10\t\x11\x0f6\x06\x1e\x10\x18\x1a\x01\x11\x11#\x15-6\a\x12,\x05\x02\a\a \r\x02\t\x10\n\x02\b\x05\b\x06\b\a\x05\x1cF\x1fC\x10\x04\x01\x04\x05\x01\b\x01\x06\x15\a\x12\x10\x17\x01\x01\x1b\x12\x05\x0e\x05\x03\x03\x05\x05\x01\xe1\x01\x01\x01\x16\x1d\x05\x01\x05\x05\x06\x13\x15\x03\x03\n\t\x0f\x13\x03\x0e\x05\x06\x1b\x0e\f\x02\x10\n\x10\x02\x03\v\x05\a\x01e\x03\x05\x13\r\x04\a\"\x9d\xb4\x02\a\x01*\x0f\x01\f\f\x01)=\b\xf7\b\t\x01\x02\x01\n\v\f\x03\x0f\x04\x06\x10\x15\x17\a\a\x02\x01\x01\v\x03\x02\v\x17\a\x169\x01\x06\x10\x03\x03\x0e\x05\x01\x02\x02\x01\x04\x05\x11\f\x17$\x0e\x15\x01S\x05\x01\a\r\x01\x05\x15\a\x03\b\b\x02\x16\x06\x06\n\x01\t\x01\x01\x01\x1c\a\xf1\x05\x1c\f\a\t\x04#\x13\t\xbe\x04\x16\x04\n\x01\x01\x11\x04\x02\x16\x13`\x14\x05\x01\v\x06\x04\x02\x02\x01\x01\x01\b\x03\r\x1f\b\x02\x06\x05\x06\x06\x05\x05\x1d\x01\x02\x04\x05\a\x11\r\x11\x04\x03\x01\x02\x03\a\x01\r\v\x0e\x06\x02\v$\x01\x06\x03\x01\x01\x06\x0e\x12!\x10\x06\x02\xc4\x03\x05\x05\x04\x02\x04\x02\x01\x06\x02\x04\x02\x04\x02\x04\x01\x03%\x03\x01\x01*\x15!\x01\x01\b\x10\n\x0f\x89\x178\x02\x1c/V\x03\x06\v%\x0f\x05\b\t\x01\x01\x02\v\x0e\x06 %\x17\a!\x1a\x15\x01\x03\x01\x01\x04\x0e\n\r\x05\t\v\t\x02\a\x1b\x10\x02\x04\n\f\x02\x0f\x0f\x04\x15\x11-\x16\x01\x03\x04\x02\x03\b\b\x03?\x0f\t\x11\v\r\x06\f\x04\x06\v\x0e\b\x17\x05\x0f\x11\x12\a(|0\x15\v\x02\x0e\n\x06\f\x0e\x01\x02\n\a\t\x01\x83\b\"\x15\x01\x06\x01\x02\x01\x01\v\x0f\x03\x03\x06\x05\x03\x02\x03\x02\x03^\x104\f\x14\x16\x04\x06\x05\t\x02\x0fF\r\x03\xe0$\x19\x14\x04\x0e\a\x06\x1a\x1d\x14\x18\x14\x1c\a\x0f'\x04\x1a?^2\r\x0e\f\n\b\f\x03\x02\x02\v\x06\t\a\a\x06\x02\x11\v\f!%\n\x18\x12\x1a\t\t\x1f\b\t\x01!\x02\x02\x16\x10\x13)\x02\x01\n\x04\a\x05\x06\x02\x04\x88\x02\n\x04\x06\x01\a\x10\v\x17\x03\x03\b\x0e\x02\t\x01\x03\x05\x02\x12\x03\f\x03\x01\a\x01\x04\x01\x01\f \x05\x0e\r\x02\x01\x05\x02\b\x03\f\x02\x01\x01\x02\x03\x06\x11;\a\x16\x0e\x14\n\x0f\r\x01\x10/\x11\x1a\x01\x05\x01\x03\x15\x01\x04\x04\x01\x06\x02\x03\x02\x01\x03\x01\t\f\x04\x01\b\r\x10\x06\a\x1e\t\x01\x02\f\x04\x13\x16\r\x01\v\x01\a\x02\x01\x02\x03\x01\x05\a\x06\x06\x15\n\x06 \x16\x03\x04\b\n\x01\x04\x16\x06\x04\a\x06\x03\v& \x13\x04\t\x03\x01\x02\x15\x01Z\f\x15\x01\x02\n\x06\b)\x02/\x02\x01\x03\x1b\n#\x06\a\n\x04\t\x1f\x0e\x01\x1b\x05\x01\x03\x02\x04\x03\x05\x02\x03\x06\x01\x04\t\f\x01\x01\x01\x01\x01\x02D\x02\v\a\x01\x01\x04\x05\t\x01\x04\a\a\x03\b\x01\x10\x0e\x1f\x0e\x04\v\x02\x01\x18'\x02\x05\x03\x01\x05\x11\x02\t\n\b\x02\x05\x12\x11\x01\v\t\x02\x05\x04\t\x05\t\x01\x05\x1b\b\x02\x02\x02\x03\x01\x16\b\x15\x06$(\x01\x0f\x04\x01\x05\x06\b\n\f\x02\x05\x0f\x01\x0e\x1e\t\x02\x04\x02\x06\x03\b\x0e\x01\x01\x02\n\x0f\x0e\x01\x00\x00\x04\xff\xee\xff\xb6\x02\x02\x01\xb8\x00\v\x00\"\x00>\x00[\x00\x00\x01\x1e\x01\x0e\x01.\x017>\x0132\x1367\"\x0e\x02\a\x0e\x04\x1e\x021\x16\x17\x16326'\x16\x176&'&\x06\a\x06\x17>\x0376\a\x06\a\x0e\x04\a\x06\x167\x1e\x01\a\x15\x0f\x0167>\x0432\x17\x1e\x01\x0e\x02\x0f\x010\x17676\x01zX/lȯ/6#q?Fp\b\x06\x02G3C\x12\v\x0f\t\x04\x01\x02\x02\x05\a\x11\v\t7a\xab3\xb3\t57K\xac/+\x0f\x05\x14&F-)\x03\x02\f\x02\x13\n\x11\x0f\x06\x11!\xe2\n\n\x01.\xaa\"\x1f\x05\x14\v\x0f\f\x05\x05\x05\x05\x04\x05\x05\v\x013\x06\t\x10?\x01\x936ȯ/l\xc8W8>\xfe\x98\f\x0e\x01\x02\b\x06\x04\n\b\v\a\f\x04\v\x12\x19\x016\x86\x01\x04>u\".)KEP\x14&/ \x03\x03\x10\t\a\x02\n\a\v\x0e\b\x14\x1b6\x03\b\x02\x03\x17\x02\v\x15\x03\r\a\t\x03\x02\x03\x06\x06\x03\x06\x01\"\x02\x01\t!\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00\x10\x006\x00\x00\x11!\x11!75#\x15\x14#\"'\a\x16326\x172654&/\x01.\x0154>\x0132\x177&#\"\x06\x14\x16\x1f\x01\x1e\x03\x15\x14\x06#\"'\a\x16\x01\xc0\xfe@\xf4*\x17\x0f\f\"\x12-\x1d\"c\x1f'\x1b\x1d\n\x0f\v\x05\t\x06\x11\n!\x13)\x1c\"\x1a\x19\n\t\t\n\x03\x10\r\x19\x10\"\x15\x01\xa0\xfe@c\x8f\x8f\x1a\x15\x14' \x1f\x1c\x19\x1c\r\x04\a\n\t\x05\b\x05\x12\x15\" 0\x1d\n\x05\x04\x04\a\b\x05\t\f\x1a\x14+\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1c\x00B\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x135#\x15\x14#\"'\a\x16326\x172654&/\x01.\x0154>\x0132\x177&#\"\x06\x14\x16\x1f\x01\x1e\x03\x15\x14\x06#\"'\a\x16\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\xc4*\x17\x0f\f\"\x12-\x1d\"c\x1f'\x1b\x1d\n\x0f\v\x05\t\x06\x11\n!\x13)\x1c\"\x1a\x19\n\t\t\n\x03\x10\r\x19\x10\"\x15\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xa3\x8f\x8f\x1a\x15\x14' \x1f\x1c\x19\x1c\r\x04\a\n\t\x05\b\x05\x12\x15\" 0\x1d\n\x05\x04\x04\a\b\x05\t\f\x1a\x14+\x00\x00\x00\a\x00\x00\xff\xc8\x02\x00\x01\xb8\x00\x18\x00.\x00D\x00\\\x00h\x00u\x00v\x00\x00?\x01\x16\x17\x167\x1e\x02\x17\x06'&'2\x06\a\x16\x06#\"&546%\x16\a\x06\a0\x1616\x17\x16\x14\x06\"'&7'676'%\x16\a\x17\x06\a\x06\a\x06\x17\a&767'\x06'&>\x01\x16%2\x16\x14\x06#\"'\a&'&\a'6\x17\x16\x177&54>\x01\a2\x17\x1e\x01\x0e\x01.\x017>\x01\a\x16\x17\a3'654&'\x0e\x017@<1N/'\x03\t\b\x011;C3\x01$\x03\a\x1d\x18\x15\x1b)\x01z\x1e\x02\x01/\x18\x0f\v\b\x12\x19\t\n\x03-?\x02\x01\x16\xfe\xdb\v\x03.\x0f\b'\x02\x01\x15\x16\x1d\x01\x02.\x1a\x0f\v\b\x01\x11\x19\x01r\x13\x1c\x1c\x13\v\x05?1N/'\x151;C3)\x02\r\x16\xc3\a\t;H\x0e^uH\a\aQ\x04\x01\x1f\vJ\v \"\x18\x18\":';B\x02\x01\x18\x03\t\t\x01 \x01\x02+#\x03\x17'\x1c\x14\x1a\x1c\xf417D5\x19\x02\v\t\x19\x11\t\v\x0f02J*(}\v\x0f1\v\n,;,&\x1618D5\x1b\x02\v\t\x18\x12\x01$\x1d'\x1c\x02\x01/\x0176&'&\x06\x0f\x01\x01\x90\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xdc\a\n\x0f\b\x13\x15\x05\n\x10\t\x12\x16<\n!\r\v\x01\b1(\b\x02\v\f&\f, \x1c\x14\x01`\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x01.\v\x11\v\x06\x1a\x13\x9b\t\x11\f\a\x17\x16*L\v\x01\f\v\x1e\n?:\n\x1d\n\r\x02\x12@\x00\x01\x00\x00\xff\xdf\x01\x82\x01\xa2\x00\x1f\x00\x00\x13\x157>\x01\x17\x1e\x01\x0f\x01\x17\x16\x06\a\x06&/\x01\x15\x14\x06#\"&5\x114>\x0132\x16\x93S\x16F\x16\x14\x04\x0eK[\x0f\x03\x13\x18>\x12p( $'\x11\"\x17 )\x01NGv \x04\x17\x135\x12ks\x126\x14\x17\x02\x15\x8aL**/%\x01\x1b\x17$\x16*\x00\x00\x00\t\x00\a\xff\xc0\x01\xf9\x01\xc1\x00S\x00W\x00]\x00r\x00x\x00}\x00\x83\x00\x87\x00\x8c\x00\x00\x01\x16\x1d\x01\x14\x0f\x01\x15\x14\x0f\x01\"\a01*\x01#0&1\"1'&5\x114745034625762\x1f\x01\x142\x16\x1503\x14\x161\x14\x1d\x01754506105350>\x011762\x1f\x010\x1701\x16\x143\x1410%\a\x177\x17\x0f\x01\x15?\x01\x155'1&10&10'1&<\x0215/\x01\x11?\x02'\x0f\x01\x055\x0f\x01\x1575/\x01\x15\x17?\x01'\a\x1775\x0f\x01\x01\xf8\x01\x04]\x04\xc0\x01\x01\x01\x02\x01\x01\x01\xc1\x04\x01\x01\x01\x01a\x01\x05\x02`\x01\x01\x01\x01P\x01\x01\x01\x01`\x02\x05\x01a\x01\x01\x01\xfexQQP\b\".!/\\\x01\x01\x01\x01/\"\xb9u;P\\T\x01\b-\x83\xb0.\"/)QQPXQ\"/\x01L\x01\x01n\x04\x035i\x05\x02o\x01\x01o\x02\x05\x01J\x01\x01\x01\x01\x01\x01\x017\x01\x017\x01\x01\x01\x01\x01\x01\x01\xce.i\x01\x01\x01\x01\x01\x01\x017\x02\x027\x01\x01\x01\x01b.//\x0e\x14\x1b\xc9\x14\x1a\xd3\\4\x01\x01\x01\x01\x01\x01\x01\xd7\x1b\x14\xfe\xc9\x04C\".511[\x1aK\\\xdd[\x1b\x13[\x1bV...\x97.[\x13\x1b\x00\x06\xff\xff\xff\xdf\x01\xc1\x01\xa1\x00\x19\x00%\x006\x00R\x00b\x00x\x00\x00%\x15\x14+\x01\"/\x01\x15\x14+\x01\"=\x014;\x012\x1f\x0154;\x012#2\x1d\x01\x14+\x01\"=\x0143\a2\x1d\x01\x14+\x01\"&=\x014;\x012\x1d\x0172\x1d\x01\x14+\x01\x1532\x1d\x01\x14+\x01\x1532\x1d\x01\x14+\x01\"=\x01437\x11\x14\x06#!\"&5\x11463!2\x16\a4&\"\x06\x15\x14\x16\x17\x1e\x01\a\x1c\x01\x1667>\x0276\x01\x10\x03\v\x02\x01!\x03\v\x04\x04\v\x02\x01 \x03\f\x03R\x03\x03\v\x03\x03\x10\x03\x04-\x01\x02\x03\v\x04\xc8\x03\x03\x1f\x1f\x03\x03\x1f\x1f\x03\x03.\x03\x03\xa20\"\xfe\xe3\"/0\"\x01\x1d\"/>_\x87`N;\r\x03\x04\x01\a\x06\n.9\x10\"\xf4G\x03\x01,*\x04\x04G\x03\x01,*\x03\x03G\x03\x03G\x03<\x03\v\x03\x01\x02G\x03\x039<\x03\f\x03\f\x03\f\x03\f\x03\v\x03\x03G\x03W\xfe\xe3\"/0\"\x01\x1d\"/0\x9c6NN61J\b\x03\x0f\x13\x03\x02\a\x02\x02\x04\x1c,\x12'\x00\x00\x03\x00\x00\x00\x06\x02\x00\x01u\x00\t\x00*\x00H\x00\x00\x113\x15\x14\x17\x0e\x01'&5%\x14\x163\x15\".\x01=\x014&\x06\x1d\x013\x15#\x15\x14\a\x06'54632\x16\x173\x15#%53\x15\x14\x06\a\x06'5\x167670\x0e\x04&'&=\x013\x15\x1425N\x1b\f,\x18\x19\x01\xe6\x0f\v\x1c/\x1c\x1a\x1a''\x19\x15\x1e<*%8\b\x1a\x18\xfe\xdaM*#&(\x18\x15 \x03\x02\x06\x06\v\v\x0e\b-M\x18\x01o\xd1+\x12\n\x03\x10\x14'\"\n\x0fM\x1c/\x1cM\x10\x0e\x0e\x10\x17M\a'\x14\x12\x04\xb3+<.#MM\x01\xb2(6\a\a\fF\n\x02\x03\x16\x01\x04\x03\x04\x01\x01\x02\f4\x84q\v\v\x00\x00\x00\x00\x02\x00\x02\xff\xbf\x01\xbe\x01\xc0\x00\t\x00\x13\x00\x00\x01\x11\a\x11'\a\x13'\x117\x13\x11\x17\x11\a'\x117\x11\x17\x01\xbe@\x9e\x9f\x01@\xde ?__? \x01@\xff\x00$\x00\xff\\\\\xff\x00%\x01\x00\x80\xfe\\\x00\xff$\xff\x0077\x01\x00$\xff\x00\x12\x00\x04\x00\x00\xff\xc0\x01@\x01\xc0\x002\x00:\x00B\x00t\x00\x007>\x043\x1e\x02\x17>\x0232\x1e\x03\x15\x1e\x01\x1f\x01\x16\x0e\x01\"\a\x0e\x02\a\".\x03'\a\x06'&/\x01*\x01.\x017\x17#\"4;\x012\x14\a#\"4;\x012\x147\x0e\x01&767>\x0354&\"\x06\x15\x14\x1e\x02\x17\x16\x17\x16\x06&'&'&'.\x0254>\x0132\x16\x15\x14\x0e\x01\a\x06\a\x06v\x01\x03\x02\x02\x04\x02\x03\x05\a\x03\x02\x03\x05\x04\x03\x06\x05\x04\x04\x05\x18\n\n\x01\a\x0f\n\t\x01\x04\x04\x02\x02\x02\x03\x04\x04\x03\t\x03\b\x03\x05\x03\a\n\x1a\n\x05\x8d\x88\x10\x10\x88\x10(X\x10\x10X\x10\x12\x01\x12\x0f\x02\a\b\b\x1e\x0f\rKhK\r\x0f\x1e\b\b\a\x02\x0f\x12\x01\a\x05\t\x0f\x10\x0f\x0f+J+B^\x0f\x0f\x10\x10\b\x05\xd2\x02\v\b\b\x04\x01\f\x12\x05\b. \r\x16\x13\x16\x01\x02\x03\x01\x01\x02\x04\x01\x01\x04\x11\x06\x01\x06\v\f\x0f\x06A\t\x13\x06\x0e\t\x02\x03\x03\xcd @ \x8e\v\x05\v\n,\x0e\x101\x1b(\x143HH3\x14(\x1b1\x10\x0f,\t\v\x05\n'\n\x11\x18\x1b\x1c/\x18*G*[@\x18/\x1c\x1b\x1a\x0f\n\x00\x01\x00\x0e\x00\x00\x01\xf2\x01\x80\x00$\x00\x00\x134/\x0153\x1773\x15\a\x06\x17\x11\x06\x1f\x01\x15#576=\x01\x03#\x03\x15\x06\x1f\x01\x15#576'H\a-\x8cm_\x86'\x05\x01\x01\x05&\xbe'\x04l\x0f\u007f\x01\b3\x903\t\x02\x012\t\a6\b\xee\xee\b%\x04\a\xfe\xf0\a\x04%\b\b&\x04\a\xdc\xfe\xec\x01\x14\xb9\f\t>\b\b>\t\f\x00\x00\x00\x00\x04\x00\x00\xff\xc8\x02+\x01\xb8\x00\x0e\x00\x1d\x00+\x00O\x00\x00\x12\x14\x16\x17\x06#\"&54632\x17\x06\x13>\x01'\x16\x17\x16\x0e\x01&'&'\x1e\x01\x036\x16\x17\x16\x06\a6&'.\x01\a7\x1732\x1d\x01\x14+\x01\"\x1d\x01\x14+\x01\"=\x014+\x01\"=\x014;\x012=\x014;\x012\x1d\x01\x14rnS\x1c\x1eg\x92\x92g\x1e\x1cS\xbb:&\x1d\x11\x0e.\x1b\x83\x9e/\r\b.\x88\xa17\x81&\"\x0e*\x0e\f\x1b b1\x02j(\b\b(\b\b0\b\b(\b\b(\b\b0\b\x01\x1b\xb6\x88\x0e\a\x91gg\x91\a\x0e\xfe\xb9)\x86;\x10\x13B\x9f^\x1cB\x13\x15/\t\x01\x1e)\f1-r+&U#* \r\x01n\b0\b\b(\b\b(\b\b0\b\b(\b\b(\b\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00\a\x00\v\x00\x0f\x00\x00\x113\x15#73\x15#\a3\x15#73\x15#\xd7\xd7\xe9\xd7\xd7\xe9\xd7\xd7\xe9\xd7\xd7\x01\xa0\xd7\xd7\xd7\x12\xd7\xd7\xd7\x00\x01\x00\x00\xff\xf1\x01\xc0\x01\x80\x00\x1c\x00\x00\x11!\x15\x14\x06&=\x014&\x06\a\x15\x14\x06\"&=\x014.\x01\x06\a\x15\x14\x06&5\x01\xc0,,*+\x03\x1e$\x1e\x19 \x1c\x03,,\x01\x80\xcc\x1b\x17\x16\x1c\x18\x1b\x17\x14\x1at\x15\x17\x17\x15\xaf\x14\x18\x02\x14\x13\xef\x1b\x16\x17\x1a\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x10\x00\x1b\x00$\x00\x00\x122\x16\x14\x06\"&4\x1754&\"\x06\x15\x116754&\"\x06\x1d\x01632\x17\x114&\"\x06\x1d\x01\x16\x91Α\x91Α\xa8\x17\"\x17!\xa7\x17\"\x17\x14\x14\x14\x8c\x17\"\x17/\x01\xb8\x91Α\x91\xce\xcf\xe0\x11\x17\x17\x11\xfe\xf0 \x1a\xd6\x11\x17\x17\x11\xd6\x03=\x01\x10\x11\x17\x17\x11\xe0\x10\x00\x00\x00\x00\x02\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\f\x00\x1b\x00\x00%3\x0e\x02#\"&'35\x177\x05#&5462\x16\x15\x14\a#5\a'\x01`l\x15AR,Bq!lhh\xfe\xf8K\r\x91Α\rK\xa1\x9f@$6\x1eA7\x80iiP')g\x91\x91g)'П\x9f\x00\a\xff\xff\xff\xc9\x01\xf1\x01\xa1\x00\x04\x00\x15\x00\x1f\x006\x00G\x00\\\x00h\x00\x00%\x06\a&'7&\"\a&'\x15\x14\x1e\x02>\x02=\x01\x06'\x16\x1762\x1767&\"\a\x16\x1762\x1767\x15\x16\x14\a\x15\x0e\x03.\x01'&47\x17>\x013\x1630\x14\x0e\x05\a\x06#'236\x1e\x03\x17\"'&'.\x064\x17\x16\x17\x06\"'6?\x01\x167\x16\x01*\x16\x1c\x1d\x15\x90*h+\x1f&$:FF:$'\xef\n\n,d,\n\n0\x84\x8a\x19\x19>\xb8>\x18\x1a,,\a>VcU?\x06,,\xd7\t#:\a\x04\x01\x01\x02\x04\x05\b\x05\n\x10\xc4\x04\a\x1a\x16\x1c\v\v\x04$\x1a\x0f\n\x05\b\x05\x04\x02\x01\x01\xa9\x02\x01\x164\x16\x01\x03\x06&&\x04J\x15\t\n\x14\xc8\x1e\x1e\x1a\n\xa1-F%\x11\x11$G-\xa1\n \x05\x06\x17\x17\x06\x06-\x17\x01\aEE\a\x01E\x1cg\x1c\x01:T&\x01&U;\x1cg\x1c\xbe(\x10\x01\a\x03\b\x06\a\a\x06\x03\x065\x01\x01\x05\f\x15\x11\x01\x01\x06\x03\x06\a\a\x06\b\x03\a{\x04\x05\r\r\x06\x04\x06\v\v\x02\x00\x02\x00\x00\xff\xc4\x01\xc0\x01\xc2\x00;\x00j\x00\x00\x16\"/\x01&7676\x1f\x01\x16?\x016=\x014/\x01&\x0f\x01\x06\x1d\x01\x14\x1f\x01\x166=\x014;\x012\x1d\x01\x14\x06#\"/\x01&=\x014?\x016\x1f\x01\x16\x1d\x01\x14\x0f\x017\x14\x06#\"54;\x012\x17\x1e\x013254.\x03'.\x0254632\x17\x14\x06+\x01\"'.\x01#\"\x15\x14\x16\x17\x1e\x01\xea\x14\t>\n\b\x0f\r\x02\x03/\x03\x03\xb9\x02\x03\xb8\x03\x03\xb8\x03\x032\x15\x18\x05\x17\x06\x1d\x1a\x13\x180\x13\x13\xb9\x13\x13\xb9\x14\x14\xb9\x820,b\x06\x17\x05\x01\x03\x19#7\x01\b\r\x19\x12\x1b\"\x14,(V\x06\x03\x03\x18\x04\x01\x04\x19\x1c0\x16).&<\x05%\x05\x03\x05\a\x02\x02\x1c\x02\x02j\x02\x04\xd5\x03\x02j\x02\x02j\x02\x03\xd5\x04\x01\x1e\b\r\x0e\xd2\x06\x06\xd2\x1b\x1f\f\x1c\v\x17\xd5\x16\vk\v\vk\v\x16\xd5\x17\vk\xcd\x1e!D\x05\x04\x14\x11\x1d\x05\x05\x06\x05\x04\x02\x03\n\x18\x14\x1c\x1f@\x03\x03\x04\x13\x0f\x1a\n\t\x06\x06\x18\x00\x00\x00\x05\x00\x00\x00@\x02@\x01 \x00\x03\x00\v\x00\x13\x00\x19\x00%\x00\x00%#53%\x15!\x15#5#5\x17#\x15353\x1537#\x153537#\x15353\x15353\x153\x01 \x01 \xfe\xe0\x80\xa0\xa0\x80@ \xa0\x80@@\xe0\xc0@ \xa0@@\xc0 \xc0 \x80``\x80\xa0 \x80\x80````\x00\x00\x00\x04\x00\x00\x007\x02\x83\x01G\x00\t\x00D\x00N\x00W\x00\x00\x133\a#'\a#73\x17%\x16\x06\a\x1e\x01\a\x0e\x01'.\x02'&5\x06\a\x06#7327676&+\x01\"&7676763\a#\"\a\x06\a\x06\x1e\x01;\x012\x17675&6\x17\x16\a6'\x06\a\x06\x16\x17\x1667676&'&\a\x06\xbb-093\x1f-117\x01\xe7\x03)\x1c\x0e\x03\x0e\x13O%\x0f\x17\x10\x03\x01\a\v\x16\x8b\v\u007f\v\x03\x03\x01\x01\x03\x05X\x18\r\x05\n\a\t\x16\v\x95\n\x85\v\x03\x01\x02\x01\x02\x06\x04X\x1d\x05!=\t=%&i\x04\v1\x14\x12\t\x17\x14%\x1a\x18\v\n\x03\f\x15\v\t\x01 \xa0jj\xa0rs\x13\x1a\x06\x176\x1c&'\t\x04\x10\x18\x0f\x05\x06\x04\x01\x02(\a\a\b\x03\x03\r\x10$\v\r\x02\x01 \a\x03\t\x02\x04\x01\x11$\f\x01\x1e#\a\x06\x82\x17\x19\x06\x15\x13*\x04\x03\x1ah\x04\x06\x06\x10\x02\x05\f\n\x00\x00\x0f\x00\x00\xff\xc8\x01\x90\x01\xb9\x007\x00F\x00N\x00V\x00^\x00f\x00n\x00v\x00~\x00\x86\x00\x8e\x00\x96\x00\x9e\x00\xa6\x00\xb0\x00\x00\x13:\x01\x1e\x06\a4>\x04\x16\x17\x14\x0e\x05'4>\x057\"&\x0e\x02\a.\x04'\x1e\x04\x17\x14.\x01\x01\x14\a\x06\"'&547632\x17\x16\x044&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x14\x162\x164&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x14\x162\x164&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x14\x162\x164&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x14\x1627&'&\"\a\x06\a62X\x02\x06\x12\x11\x17\x13\x14\f\x06\x02\x02\a\n\x11\x14\x1e\x11\x02\x06\t\x0e\x12\x18\x0f\x02\x05\x06\v\r\x13\n\x02\x05\x13\x12\x1a\f\x01\x03\x0f\x13#\x15\x03\v\x1a\x14\x11\x0154\x019 B\xccB (B^^B(\xfe\xe8\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18X\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18X\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18X\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18\x10\x10\x18(\b\b>\xa4>\a\tO\xa2\x01\xb8\x01\x02\a\t\x11\x14\x1e\x12\x01\x05\x0f\v\f\x06\x03\a\x01\x05\x10\v\x10\a\x05\x05\x01\x04\f\n\r\t\a\x01\x01\x03\b\x17\x10\x04\r!\x1a\x16\x02\x01\x04\x10\x16(\x19\x03\b;\xfe\xfcO5005OBB11B\xb6\x18\x10\x10\x18\x10S\x17\x10\x10\x17\x11S\x17\x10\x10\x17\x11t\x18\x10\x10\x18\x10S\x17\x10\x10\x17\x11S\x17\x10\x10\x17\x11t\x18\x10\x10\x18\x10S\x17\x10\x10\x17\x11S\x17\x10\x10\x17\x11t\x18\x10\x10\x18\x10S\x17\x10\x10\x17\x11S\x17\x10\x10\x17\x11D'\x11 \x10(\x0f\x00\x00\n\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\t\x00\f\x00\x10\x00\x13\x00\x1a\x00#\x00/\x009\x00A\x00T\x00\x00\x17\"&4632\x17\x0135#7\x173\x06\a7\x15'\x172\x1d\x01#547\x14\a#\x11\x1e\x03'35#\x15#5#\x15#5#\x17#54#\"\x1d\x0135'\a\x15\x175'57'#\x15353\x16\x06#\"&7'\x0e\x01\x16326\xf8g\x91\x91g\x1f\x1e\xfe\xf5Ε\x95`o)F9\x15\x01\b\x10{\x17\x81!8)\x16\x88E\x0e\x0e\x0e\r\x0eD\x1a\x15\x15E\x01DD\x0e\x0e\x04$\x0e\v\a\v\x0f\x10\t\n\f\b\x02\x13\x12\x19\x118\x91Α\b\xfe\x88 \xd5\xf5?\x1e\xe7\x10\b.\v\n\b\r471\x01M\x0e/:HJ0!\x1e\x1e!\xe9\v\x19\x1a\x19\x0fg\x1e\f\x1e\x11\x06\x1a\x06V\x1b\f\f\x17\x1c\n\n\t\x1e\x19,\x00\x00\x00\x03\x00\b\xff\xe0\x028\x01\xa1\x00\n\x003\x00m\x00\x00%\x14\x06#\"'67>\x01\x16\a45467\x06\x17\x1e\x016765&5\x16654&\a.\x01\a\x06\a\x0e\x01\x15\x14\x1e\x013276'&#\"'4>\x02;\x02>\x053735467;\x012\x16\x1f\x01\x1532\x1732\x16\x1f\x01\x14\x06\a+\x01\a\x14\x06\x0f\x01!\".\x02=\x01'#\"&'\x01\x816\x1d\x0e\x02\x01\x03\x16) \xc3&\x14\x06\x05\x01\x0f\x0f\x05\x06\x03.^O8\x02\x13\t\t\x01,9\n\x11\n\x18\x06\x06\x11\x02\x02\x04\xbe\b\v\v\x04\x04\x1d\x04\x10\x16\x19\x17\x13\x06\x06\x1c\v\x05\x05V\b\v\x01\x01\x1cb\x15\x1f\x11\x13\x01\x01\x13\n\t\x1e\x17\x16\v\f\xfe\xe0\r\x12\t\x05\x17\x1e\x11\x13\x01\xfe&:\x06/I\b\x03\x13^\x01\x03\x12,\x0e\xbd5\x0f\x0f\x02\x06\x06\r(<\v[:4%\x11\v\a\a\a\x15\x17H\x1f\r\x13\f\x15\x13\x04\x01R\v\x0f\a\x04\x0f\x17\x0f\f\x05\x04\x01\x13\b\t\x01\t\x05\x04\x13K\x12\n\t\x11\x13\x01\xda\x13\x16\x02\x01\t\r\r\x05\x04\xda\x12\n\x00\x00\x00\x00\x02\x00\x00\xff\xca\x02\x00\x01\xb6\x00\n\x00\x0e\x00\x00%\x14\x06#\"&4632\x16\x01\x113\x11\x02\x00lLLllLLl\xfe\x00Z\xfdLll\x98mm\xfe\x81\x01\xec\xfe\x14\x00\x00\x00\x00\x03\x00\x12\xff\xc0\x01\xae\x01\xc0\x00\x12\x00\"\x005\x00\x00\x01\x16\x15\x14\a\x0e\x03#\"&'&54632\x032>\x0254&#\"\x06\x15\x14\x1e\x02\x13\x14\x06#\".\x0167\x14\x162654'6\x1e\x01\x01r/mKPn/?@\u007fB-$9\x1a\x05\x15\x1b%\x1a\x1b%B&\x01\x80?WSn\t\x19+\x1c?*mTX~\xfe\x129Qf(PttP(fQ9\x01\x1f,A$5A\x1b\x12\x1b\x1b\x12\x1d\f\t\x1b;\x00\x00\x00\x04\xff\xff\xff\xff\x01\xf1\x01\x81\x00!\x00,\x00A\x00I\x00\x00%\x17\a#\a\x15\a'#\a/\x02\x06/\x0175'73757\x1737\x1f\x022\x15\x17\x0f\x014&\x0e\x01\x1e\x013>\x027\x16\x14\a\x06\a\x06\"'\x15&'&476762\x175\x04\x1e\x0164&\"\x06\x01C\x15\b\x1e\t\x14\x16\r\x14\x14\x02\t\x1d\x01\t\x15\x15\b\x1e\t\x14\x15\x0e\x14\x14\x02\t\x1d\n\x15-\x14\x1a\x11\x01\x13\r\t\x0e\a\xc9\x11\x11^\x018\x9e8)8\x11\x11? 8\x9e8\xfe\xe2Y~ZZ~Y\xba\x15\x14\t \b\x18\x18\b!\t\x01\x02\x14\x15\r\x15\x14\t\x1d\b\x15\x15\t\x1d\t\x01\x14\x15\x04\f\x12\x01\x13\x1a\x11\x01\t\x0e.\x100\x10_\x0187\x01*8\x100\x10?!87\x01\xc9Y\x01Z~YY\x00\x00\x00\t\x00\x00\xff\xe5\x02\x80\x01\x9d\x00F\x00M\x00l\x00\x85\x00\x9d\x00\xb8\x00\xd1\x00\xeb\x00\xff\x00\x007\x06&'.\x01'&'&\a\"#67>\x01\x17\x1e\x04\x17\x1e\x013021\x0e\x01\a\x06'.\x01'&\x0e\x01\x16\x17\x1e\x0170703\x0e\x01'.\x02'&\x06\a\x06\x17\x1e\x061\x06\x03\x1667\x06\a\x16\x13\x06&'&'5\x16\x17\x167>\x01\x1e\x01\x17\x06\a\x06\x17\x1e\x01\x17\x16\x1701&'&\x0676\x17\x16\x17\x16\x15\"\x1545.\x01\a\x06\"&'&74\x17\x16\x17\x16\x17\"\x0e\x02\a\x06'50>\x01767>\x02\x17\x16\x170\x15&'01&\"\a\x0e\x05\a\x06'&1\x1667>\x0476'0'2\x17\x1e\x03\x17\x167:\x016323\x061\x06\a\x06'&\x05\x0e\x01'.\x02'&'616\x17\x1e\x05\x17\x1e\x030\a\x16\x15&'&'61\x16\x17\x1e\x06\x15\x16\xd5\"Q\r\x05\x01\x02\n.\t\t\x02\x01\x01\x01\x1bK\"#8)'4\x1e\x04\r\x02\x02\x02\x19\t\x1d\x17\x03\x1b\t\f\x16\x03\x1c\x19\x1dR\x18\x01\x01\x12?\x1b\x16(&\x0e\x0e$\x02\x01\a\x05\r\f\r\v\b\x06\x05\x9e\n\x19\x01\x14\x11\x01\xc5\x1fD\x18\x0e\x05\"\x15%#\b\x10\v\a\x01\x14\x04\n\x11\bF\x13\a\x03\x1b\r\x0e3\xa2*\x19\x16\n\x05\x01\x05%\x1a\x1b=C\x16\x02\x01\x03\x1a\"'\x90\v\x13\x10\"\x18\x1a\x13\n\r\a\a\x10\r\x11!\x13\x13\x11\t\x1a\x14\"\x0e\x01\x0e\x04\r\t\x0e\a(\x1a\x01\x11\x19\r\x04\x12\t\x10\x10\b)\xee\x03!\x15\a\x0e\t\x0f\x05\x0f\x15\x02\x05\x05\x01\x01\x01\x02\f\x0e$%\x1c\x01\\\x04\x16\x11\x05\n\f\x04\n\x12\x01\x17\x18\x03\x06\x04\x05\x04\x06\x02\x04\t\x05\x06\xd4\x01\x1d\x12\x13\x1d\x01\x18\x0f\x05\t\b\x05\x06\x03\x05\x05h\x0174\x144\x0eD\t\x01\x01\x01\x01\x14\x12\x03\x03\"//%\x05\x01\x01\x02\v\x01\x06\x10\x02\x17\x02\x04\t\x1d,\x10\x11\b\n\x01\x16\x1b\x03\x03&0\t\t\n\x12\f\x0f\n\x10\n\a\x04\x02\x01\x02\x01\x17\n\x05\f\x01\x04\x01\xfe\xa1\x01#\x1b\x0f\b\x01\x15\x06\v\x0e\x03\x02\x03\x03\x02\x04\x04\t\b\x04\x05\x10\x06\x05\b\x01\x01\a\xfc\r\n\t\x1a\r\x0f\x01\x01\x01\x13\x14\t\t\x1d\x1c\x02\x01\x01\x02\x14\a\ai\x10\x15\x16\x05\x06\x01\x01\x03\a\a\x06\x10\x0e\x0e\r\x02\x01\v\x01\x03\x18\x04\b\x01\b\x03\x06\x02\x04\x01\x05\r\x01\x03\x02\a\x02\v\x05\b\x04\x01\x06\x89\x02\b\x03\t\a\v\x03\n\x02\x01\x01\x06\x01\x04\x13\x0f\xd7\x03\x05\x03\x02\a\f\x03\a\x02\x01\x0e\b\x01\x03\x03\x05\x04\x06\x02\x03\x05\x01\x01\x8a\x01\x01\x03\x14\x16\a\x01\x01\x03\x02\x04\x05\x05\b\x03\b\x01\x06\x00\x00\x00\x03\xff\xf9\xff\xe3\x02@\x01\xa0\x00\x17\x00(\x00;\x00\x00%\x0e\x03\x0f\x0257>\x01'&\x0f\x015676\x17\x1e\x01\x14'54'&\x06\x15\x11'\x11\x16\x17\x1e\x01\x15\x14\x06\x05.\x017>\x01?\x02\x15\a\x0e\x01\x17\x16?\x01\x15\x06\x02;\x03\v\n\t\x03\x03͗\r\x03\n\x19\x1fe%'E=\x15\x16\xe6\x12\b\v^6L;/=\xfe\xa5 \x11\x11\b\x1a\t\t\x86a\r\x03\n\x1a\x1f.PL\x04\b\x06\x04\x01\x02I66\x04\f\x03\t\f#8\r\x04\b\x17\a\x12\x11U\x8b\x1f\x05\x03\x0e\r\xfe\xa5\x1d\x01\x9f\n\x19\x15<97*l\t#\v\x06\f\x03\x04/6#\x04\f\x03\t\f\x111\x0f\x00\x00\x00\x05\xff\xfd\xff\xde\x01\xb5\x01\xa3\x00\x11\x00\x17\x00\x1d\x00(\x00-\x00\x00\x01\x1e\x01\x0f\x02\x06&'\x03&67%6\x16\x0f\x01'\a\x1776&\x05\x177'&\x06\x13>\x047'\x13\x1e\x01\x016/\x01\a\x01\x97\x11\f\f\xeb#\b#\x05i\x03\r\v\x01\x10\x0e\x16\b\x0e\n\xbd\xb1\x11\x02\x04\xfe\xea\x9ea\xf9\x04\x05t\x01\x04\v\b\t\x02\u007fS\x01\x06\x01\x13\x06\tjZ\x01P\x01\x1f\r\xe7Q\r\x04\x10\x01\\\x0e\x15\x02-\x02\x17\x11!1\x1f\x10(\x04\x047\xf4\xe6\x17\x01\x06\xfe\xa0\x02\t\x18\x13\x15\x04\xc5\xfe\xed\x03\x01\x01=\x06\x03\t\xd5\x00\x00\x00\x00\x04\xff\xfa\xff\xd8\x01\xc8\x01\xa5\x00\x1a\x00%\x00G\x00V\x00\x00%\x16\a\x0e\x01+\x01\x153\x15\x14\a\x06'&=\x0146;\x0126=\x0132\x02\"\x06\x14\x1632>\x0154'\"\x0e\x01\x1d\x01#\"&'&7>\x01;\x015#54>\x0376\x17\x1e\x01\x1d\x01\x14\x06#'2>\x014.\x01#\"\x06\x15\x14\x1e\x02\x01\xb8\x0f\x0f\t\x17\x16\xa0k5656 \x16k\x1a(((\x83\x11\f\f\b\x06\t\x05\x8a\x12\x1f\x12%\x16\x1c\x06\x0e\x0e\x06$\x18\x93k\x03\a\v\x13\x0e38\x16\x1f\x1f\x16r\x06\t\x05\x05\t\x06\b\f\x03\x06\a\xf8?.\x1c\x1a\x0e)&\x10\x0f\x0f\x10&f\x16 )\x1b0\xfe\xfe\f\x11\f\x06\t\x06\b\xa8\x12\x1f\x111\x1d\x1967\x19\x1d\r)\n\x0e\r\t\a\x03\t\t\x04\x1f\x15f\x16 \x8e\x06\t\v\n\x05\f\b\x04\b\x05\x04\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00/\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x17&6\x173265#\"\x06\x1d\x01265\x17265#\"\x06\x1d\x0126=\x01&6\x17\x01a'88'\xfe\xfe'88'2\x01\x10\t8\x14\x1d\x9a\n\x0e\x14\x1d\xb0\x14\x1d\x9a\n\x0e\x14\x1d\x01\x10\t\x01\xa08'\xfe\xfe'88'\x01\x02'8\xa9\t\x10\x01\x1d\x14\x0e\n\x9a\x1d\x14\x10\x1d\x14\x0e\n\x9a\x1d\x148\t\x10\x01\x00\x00\x00\x02\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00U\x00\x00\x122\x16\x14\x06\"&4\x056#\"#\"\a\x06\a\x063232\a\x06#*\x01#\"\a\x06\a\x0e\x01&7676#*\x01#\"\a\x06\a\x06&767676&#*\x01#\"\a\x06\a\x06\a\x06\x17\x1e\x01\x17\x1632327656323276\x91Α\x91Α\x01\xa3\x04\t|\a\x06\x03\x03\x0e\x04\t<\x10\t\x03\x02\b\r5\r\b\x03\x1e\x02\x01\b\x04\x02\x01\x18\x04\n\x03'\x03\x05\x02\x1d\x01\x03\v\x03\b\t\x1c\r\x02\x04\x05\x04#\x04\x06\x02\b\x1f\x13\a\x02\x03\x02\x19\a\x03\x05.[\x06\x02\x1f\x03\b\x04A\t\x04\x11\x01\xb8\x91Α\x91\xce\x0e\t\x06\b\x1f\t\b\x05\aF\x03\x03\x02\x05\x06\x035\t\x04B\x02\x05\x04\a\x12\x15?\x1d\x04\a\x06\x12F+\x10\x05\x04\x03\x1b\a\x04\x05E\x02\a\b&\x00\x06\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00!\x00@\x00G\x00Q\x00[\x00\x00\x05#\"&=\x0146;\x012\x16\x1d\x01\x14\x06'&#\"\a\x06\a#'#\x1535>\x0132\x1f\x01\x06\a\x06#\"&'365654'&'&'&#\"\x06\x15\x14\x1632767&\x16\a#>\x013\x1e\x013264&#\"\x06\x14\x163264&#\"\x06\x01@\xc05KK5\xc05KK\xb4\t\a\v\b\b\x05\x01\x04\x1c$\x02\r\n\a\tx\x05\t\t\f\x12\x10\x01S\x02\x01\x05\x05\a\b\n\n\n #\x1f\"\x10\x0e\x0f\b(\v\x013\x01\x0e\x0e\\\f\n\n\r\r\n\n\f\f\n\n\r\r\n\n\f K5\xc05KK5\xc05K\xcf\x03\x06\x05\v\x13\x8bZ\b\n\x03F\x03\x04\x03\x12\x11\a\a\x06\x06\x10\v\v\a\x06\x03\x03%%\"'\x05\x04\af\x10\x0f\x0e\x11\x05\f\f\x14\v\vx\f\f\x13\v\v\x00\x03\x00\x00\xff\xc8\x01\xf1\x01\xb8\x00\t\x00%\x00(\x00\x00%\a'76\x16\x1f\x01\x16\x06\x032\x1e\x01\x15\x14\x06#\"/\x01\x057/\x017676/\x01&'&\x0f\x01>\x01\x03&5\x01\x19\xc6\x1c\xbc(\x1a\x05\v\x05\x10BDrB\x92fE:\x17\x01\x1f0\n\xdc]$\x19#\f\n\x0e0\"-\xde\x14\x86{&\xaa9b6\v\a\x11'\x10\x12\x01\x05BsCf\x92#P%\r\"\x1b\x1b\n\x17!)%0\b\x04\r@Sk\xfe\x83>F\x00\x00\x05\x00\x00\xff\xc0\x02A\x01\xc0\x00#\x00:\x00E\x00P\x00[\x00\x00\x01\x1e\x01\x14\x06\a\x0e\x01'\x0e\x01.\x01'>\x04'.\x02676&/\x01>\x02\x16\x176\x16\x03264&\"\x06\x15\x14\x17\x16\a0\x06\a676?\x01\x1632'\"&'46\x16\x1d\x01\x14\x06746\x16\x1d\x01\x16\x0e\x01.\x01\x17\"&'46\x16\x1d\x01\x14\x06\x01\xe6,..,7\x94=!L>(\v\x03\n\x18\x11\v\x04\x12\x1a\v\x18\x1f\x05\x1e\x12\x12\v(?K!>\x93\x89_\x87\x87\xbe\x864\r\x1d\x02\x01\x1b\x19\x14\x10\x14+,\x01n\x0e\x14\x01\"#\x14F\x1f\x19:\x11\x11\a\n\x06\x1d\x1f\r\x18\xfe\xb3WzWW=5),7\x04\x01\x02\r\v\x10\x13\vq\x13\x0e\x16\x12\x11\x15\x01\x0e\x14!\x16\x12\x11\x15\x01\r\x12\x04\x04\x12\x15\x13\x0e\x16\x12\x11\x15\x01\x0e\x14\x00\x00\x00\x00\x02\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x1b\x00\x00\x122\x16\x14\x06\"&4\x01'61\x166/\x01&\"\x0f\x0137\x17#\"\x06\x1f\x01\x91Α\x91Α\x01\x95eJ\x16\x14\x0e\x9e\n\"\n\x94ZUTK\x16\x12\rp\x01\xb8\x91Α\x91\xce\xfe\xedw\x01\x01(\x11\xb9\r\r\xadcc)\x0f\x84\x00\x00\x00\x00\x10\x00\x00\xff\xec\x01\xc0\x01x\x00\x03\x00\a\x00\v\x00\x0f\x00\x13\x00\x17\x00\x1b\x00\x1f\x00#\x00'\x00+\x00/\x003\x007\x00;\x00?\x00\x00\x01'7\x17\x057\x17\a'7\x17\x0f\x01'7\x17'7\x17\x0f\x01'7\x17\a7\x17\x0f\x017\x15\a\x17\a'?\x01\a'7\x17\a'?\x01\x17\a'\x17/\x017'7\x17\a\x177\x17\a?\x01\x17\a\x01^6JN\xff\x00.\"7Z \x11%#\t\x1d\x0e8\x18\t\x1b\x1d\x04\x17\x068\x15\x03\x16\x1d\x14\x15<\x1c\x01\x19+\x1f\x05\x1b!)\b#+\x15.\x0e|G\x187-+\x1c3\x16=5P\x11CBY\x01\".',\x05\x1c\"\x1e\x1d\x16\x1c\x17;#\x12#B\x12\x18\x121\x1c\x0f\x1c \r\"\f\f\n&\t\x16\t/\v\x0f\r)\x0e\x9c\x06@\nH9\x0e6\xd6\x04`\b\xac\x16-\x162\x13W\v\xa5\x1dB\x1a\x00\x00\x00\x04\x00\x00\xff\xd0\x01\xd0\x01\xa0\x00\x05\x00\x14\x00@\x00D\x00\x00\x13\a5\a7\x15'\x0f\x01\x0e\x01\x15\x14\x16\x17\x15.\x01546\x00\x06'0'.\x05'&/\x01\x06\a?\x01>\x0154&'5\x1e\x03\x15\x14\a\x17\x16\x17\x1e\x04\x17\x161\x064\"\x14\xddD66\x10\x01\x0f\x1f&/$:MO\x01\x81\x1e\x0e<\b\f\b\x06\x03\x05\x01\x11)\t&,\x02\x10$-5+\x1f7(\x17\x1d\x0f\x0e&\x03\x11\x05\r\f\a,\x14\x10\x01>҃\x19\xbfs|\x045\f7\"';\a6\b[<\x044\x02\x1b*9 0*\n(\x11\x01\a\x04\b\r\n<\x13\x10\x10\x00\x00\x00\x02\x00\x00\x00\x00\x01\xf0\x01\x80\x00\b\x00\x15\x00\x007\x1e\x02\x17!>\x02'\x1e\x03\x17#.\x03'6X-~w\x0e\xfex2M\x06\r)ps^\x0e`\t5EE\"\x02\xe8\x069m<\x04Me\xca\x06>`\x90L-T?-\rQ\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\r\x00\x15\x00\x00\x05\a'\x06#\"&462\x16\x15\x14\a\x06264&\"\x06\x14\x01\xc0\x1e\x92.\x02?\x01'\x06'\"&'&>\x01?\x01'&>\x0276\x16\x1f\x017'&676\x1e\x02\x1f\x0176\x1e\x01\x06\x0f\x01\x1776\x1e\x01\a7'\a\x01\xbe\x05\x0e\x0e-\x10\x04\r\x0e\x10\x1a\x04\x10^\x10\x03\x04\r\t\x0f\x1a\x05\x104\x05\v\x13\x04\x02\x01\x06\v\a-\x1e5\x05\v\x13\x03\x03\x04\f\n-\x10\x02\x01\x06\v\a\x0f\x1b\x04\x10]\x0f\x05\x0e\x0e\a\x0e\r\n\x02\x10-\x0e\x1b\t\r\x0e.\x1f-\n\x12\x0f\xfb^\x1f]\xb2\x0f\x1b\x04\x0f/\x0f\x1a\x05\x05\x0f\r/ .\n\x13\x0e\x03\x05\x0e\r0\x12\x01\x0e\n\a\x0f\f\n\x02\x0fZ\x11\x01\r\v\n\x12\x0f\x03\x0f/\a\x0f\f\n\x02\x05\x0e\x0e/\x1f/\x0f\x1a\x05\x03\x02\x06\v\a/\x0f\x05\r\x1d\x1b\x05\x0fZ\x0f\x03\x03\r9 Z\x1f\x00\x00\x00\x02\x00\x04\xff\xdc\x01\xbd\x01\xa5\x00\x10\x007\x00\x007&>\x01\x1e\x01\x06\a\x06\x17\x16\x17\x14\a\x0e\x01&\x137&'&\x06\a\x06\x17\x1e\x02\a\x14\x0e\x01'\"'\a\x163\x16>\x0356'.\x0254>\x0132@<\n\x85\xb2w\tC\n!\x16\x01\x04,z\x89\xaa'\x1d/)7\x01\x01\x1e\r/\x1b\x01\x0f\x10\a\x1f\x11(\"2\x06\x10 \x18\x13\x01\x1d\r/\x19\x12\x0e\x06\x1a8B\xb3w\t\x84\xb2<\t\x14\x0e\x05\x03\x01\x13\x05+\x01\x04)\x1a\x01\x01+&$\x13\a\x0f\x10\x0e\n\f\x04\x01\x18*!\x01\x01\t\x0f\"\x17&\x12\b\x0e\x0e\x0e\n\r\x02\x00\x02\xff\xfb\xff\xbe\x01\xbc\x01\xc4\x00\x1f\x00=\x00\x00%\x17\x16\x0f\x01\x0e\x01/\x02&?\x016\x1f\x01\x16?\x016/\x01&\x06/\x01&?\x016\x1f\x017\x16\x0f\x01\x06/\x01&\x0f\x01\x06\x1f\x01\x166\x1f\x01\x16\x0f\x02\x06/\x02&?\x016\x17\x01\u007f,\a\b\xc6\x04\t\x02\x02\xd1\x06\b-\b\x06\x98\a\a]\b\aT\x06\x0f\aD\x06\a:\a\x06\xaa4\a\b-\b\x06\xa1\x06\b\\\a\x06_\x06\x10\x069\a\b\a2\b\a\xab+\x06\b\xce\t\b\x9c*\x06\x06\xa4\x03\x01\x02\x01\xc4\a\x06\"\x06\x06\x94\x06\x06J\x06\x06R\x06\f\x06A\x06\x06,\x05\x06\xa7V\x06\x06$\x06\x06\x9f\a\x06H\x06\x06\\\x06\f\x067\x06\x06\x06'\x06\x06\xa5*\x06\x06\xa2\a\x05\x00\x04\x00\x00\xff\xff\x01\xc0\x01\x80\x00\a\x00 \x002\x00>\x00\x00\x00\x14\x06\"&462\x17\x14\x06#\a\x0e\x01#\".\x02/\x015\x176\x177>\x0132\x1e\x01\x064&#\"\a\x17\x1e\x01\x0e\x01'.\x01'\x163264&#\"\x0e\x01\x15\x14\x1632\x01\x8c$3##3XC/m\x031!\x0e\x1c\x16\x0f\x03:a\x17\x1dG\x01B/\x1f5\x1e\xf5$\x1b\x06\a\x1a\x13\x10\x0f&\x13\x04\x15\x06\x12%\x1b\xf3, \x14$\x14-\x1f \x01(3##3$>/CO!,\n\x12\x19\x0e\x17k'\x0e\x02e/B\x1e5\xf24%\x02\n\b&&\x10\b\x01\t\x02\"\xd9?,\x14#\x15\x1f-\x00\x00\x02\xff\xff\xff\xbf\x02A\x01\xc0\x00\x00\x00\xd4\x00\x00%'\x1e\x04\x14\x15\x14\a\x06\a\"\a\x06'<\x01.\x01'.\x02'.\x01\x0e\x02\a\x0e\x02\a\x06\a\x0e\x02\x15\x0e\x01\a\x0e\x01\x15\x0e\x01\x17\x1e\x01\x170\x1e\x01\x15\x14\x0e\x011\x0e\x02\a\x06\"'&76&*\x01'&'&'&656&7>\x014645&>\x01'\"\x0e\x01'.\x02'&\x06\a\x0e\x02\a\x06\x170\x1e\x01\x17\x1e\x02\x17\x16\x17\x16\a\x06#\"\x06\a\x0e\x01'&'46'.\x02'&54'&7>\x035&\"5.\x016'.\x02767>\x01\x16\x17\x1e\x0167>\x017>\x027>\x012\x163>\x0132\x16\x06\x17\x16307>\x023\x16\x0e\x01\x150\x17\x16\x17\x1e\x03\x022\x06\x04\b\x04\x03\x01\a\x04\x03\x01\r\v\x04\x01\x05\x05\x05\v\r\x03\x03\x04\x04\x02\x04\x01\b\x12\x13\a\x19\t\x02\x04\x04\x03\b\x06\x01\a\x03\x02\x04\x01\t\x02\x04\x05\x05\x06\x03\x02\x01\x01\x04\x1d\x03\x05\x03\x02\x02\x02\x06\x02\x03\x01\x01\x01\x01\t\x03\x02\x01\x01\x02\x01\x01\x02\x01\x01\x04+%\x1d\x14\x1d\x0f\x01\b\x10\x03\x01\x11\x14\x02\a\v\x03\x05\x02\x01\x03\x03\x01\x03\x06\x05\x06\x05\n\x01\x01\x01\x02\x14\a\x06\x01\x01\x02\x01\b\x06\x02\x02\t\x02\x02\x01\x01\x01\x02\x01\x04\x05\x03\x01\x01\x01\x05\x02\x01\x05\x13\x13\x19>5\x06\x1c9\x14\t\x18\x02\x02\x1e,\f\x10\x1d\x10\r\x01\x02\r\x02\x02\x01\x01\x01\x01\x05\v\x03\b\a\x02\x05\t\x0f\x05\x03\x03\x03\x03\x02\x03\xf8N\f\x12\t\a\x03\x02\x02\x04\r\a\x01\x02\x02\v\x02\x05\x04\b\x04\x05\x05\x05\x02\x02\x01\x02\x02\x05\x02\t\x1a\x19\t \x10\x03\x0e\f\x01\t'\x14\x06\x18\x02\b*\n\x02\x04\x02\t\n\x01\x03\x02\x01\x02\x03\x02\x01\x02\x03\x03\f\x05\x05\x01\x02\b\x02\x02\x06$\x01\x0e\x1e\x03\x04\x05\x01\x05\a\b\v\x14\x05\x03\x05\x01\x04\x04\x0e\f\x01\x03\x05\x05\x01$+\b\x16-\a\n\x02\x01\x01\x02\x01\x03\r\b\x02\x03\x04\x01\x02\x03\x03\x02\x03\x01\n\x01\x01\x02\x05\x04\x06,\x11\x1d\t\a\x01\x02\x02\x06\x02\x01\x01$*\b\f\x05\x1d\x11\x0e\x16\x10\x10\v\x02\r\x02\x06\x04\r\x06\b\x02\x01\x19!\x06\n\n\x02\x01\x19\v\v\x04\x05\x05\x02\t\x06\x03\x11\x19\x02\t\x06\x0e\v\t\x02\b\x00\x00\x00\x01\x00\x12\xff\xc0\x01\xee\x01\xc0\x002\x00\x00\x01\x17\x15\x0f\x0663\x177\x0f\x03?\x01\x17?\x02\a7'7'\x17'\x17'\x17'\x17/\x01\x17'\x177'?\x01\x1f\x01\a\x17\x0f\x01\x01\xe0\x04\x19'8P\x11\b\n\x12\x02\x14C]8\x16\a\x15\a\x14Y9\x0e}\x0f\xadR\xa6sf\xfd\x1f|\x8f\x121.\xc3+l\f\x15\x04&\x1d\f\a\b\r\n\x01\x04\x1c\x1c,ND&\x18\f\x04@\x01'\x1b$\x1c\x02J\x05\r.3D\x17\x126\n{\x12l\u007f&Jc&\x12Tz8a\t\x11%\v\x19\x04\x06\f\b\x14\x00\x00\f\xff\xff\x00E\x02\x80\x01a\x00\x0f\x00\x1e\x00@\x00N\x00Z\x00a\x00m\x00t\x00\x8a\x00\xa8\x00\xb0\x00\xbd\x00\x00%\x14\x0e\x01#\"'232654'\x1e\x01%\x14\x17.\x0154632\x17&#\x0e\x01\x177\x163254.\x0154632\x16\x1d\x01#54#\"\x15\x14\x1e\x02\x15\x14\x06#\"&'73\x15\x14\x06\"&=\x013\x15\x1425\x175#532\x16\x14\x06+\x01\x1553254+\x01\x175#532\x16\x14\x06+\x01\x1553254+\x01\x1754+\x01532\x1d\x01\x14;\x012=\x013\x15\x14+\x01\"75#532\x1d\x01#54+\x01\x153\x15#\x15\x14;\x012=\x013\x15\x14+\x01\"7#53\x15#\x15#73\x1773\x15#5\a#'\x15#\x02\x80ApC#$\f\fe\x8e3.5\xfd\xb03.5\x8ee%\"\r\ne\x8e<\t\t\v\r\x14\x14\x10\f\t\x10\x0e\v\r\r\x0f\r\x10\r\b\x0f\x03v\x0f\x12\x1e\x13\x10$\"\b'\f\x10\x10\f\x0f\r\x0e\x0e\r9\b'\f\x0f\x0f\f\x0f\f\x0e\x0e\f9\x03\x05\x0f\t\x02\x13\x02\x0f\t%\b?\b4\b\x0e\x03\x13\x1c\x1c\x03\x13\x03\x0e\b'\b;\x03\a\x02\x02\x06\x02\x02\x02\x03\x02\x02\x02\x02\x01\xba 6\x1f\x05J5+#\x101\x06,\"\x101\x1c0E\x05\x01\x01J]\v\n\n\x06\t\x0e\v\n\x0e\b\t\b\x04\a\t\x05\a\x06\f\n\v\x0e\a\x03M7\x0e\x12\x12\x0e77\x11\x11\x1fH\x0e\x10\x18\x10\x1e+\x0f\x0eHH\x0e\x10\x18\x10\x1e+\x0f\x0e?=\x02\x0e\b>\x02\x02\x06\r\t\t?\x0e\b\r\x05\x02\x16\r\x15\x02\x02\x06\r\tU\x01\x01\x06\a\x05\x05\a\x05\x05\x05\x05\x00\x01\xff\xff\xff\xfc\x01\xc3\x01\x84\x00\x15\x00\x00\x01\x03\x06/\x01\a\x06#?\x016'&\x0f\x01'&67%6\x16\x01\xbfD\b\x1dg2\n\v\b\xbf\a\a\x06\a\xecf\x11\x02\x14\x01\x8d\x0f\x12\x01]\xfe\xc2\"\x10L0\ni\xac\a\x01\x02\x05\x95 \x05\x14\a\x9a\x05\x11\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00(\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x12>\x01'.\x01\"\x06\a354;\x012\x1d\x01\x14+\x01\"=\x01#\x16\x01\x9e\x0e\x14\x14\x0e\xfe\x84\x0e\x14\x14\x0e\x94pG\x06\x05NhN\x05^\aD\a\aD\a^\x06\x01\xa0\x14\x0e\xfe\x84\x0e\x14\x14\x0e\x01|\x0e\x14\xfe\x93\fW84FF4\x14\a\aD\a\a\x148\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xbc\x01\xc0\x00\v\x00\x0f\x00\x00\x01\x11\a'5\x17\x15\x1775'7'\a'7\x01\xbc\xe2\xdaX\x85\x88eW\"XVY\x01@\xff\x00\x80\x80\xd6-uKK\x97:5\x155/7\x00\x00\x17\x00\x00\xff\xe0\x01\x80\x01\xa0\x00\x03\x00\v\x00\x11\x00\x17\x00\x1b\x00\x1f\x00#\x00'\x00+\x00/\x003\x009\x00=\x00A\x00E\x00I\x00O\x00S\x00W\x00]\x00c\x00k\x00o\x00\x00\x16\"'3'\x14\x15#4=\x013\x17\x16\x17#&'7\x16\x17#&'7\x15#57\x15#57\x15#5\x17\x15#5\x17\x15#57\x15#5\x17\x15#5\x05673\x06\a'53\x15\a53\x15'53\x15'3\x15#\x03&'!\x06\a\x0353\x15\a53\x15\x05&'!\x06\a'673\x06\a'53\x15\x14\x15#4=\x013\x15\xfbv0\xd6\xc4gg\x14\x0e\x13\x8a\x06\x04b\x03\x06n\x02\x02fggggggggggggg\x01\r\x06\x03i\x01\x03bgggggggg\xcb\x14\r\x01%\x0e\x12\x19ggg\xfe\xa7\x04\f\x01S\b\nt\x13\rt\a\x02Vggg \xa1\x04\x03\x02\x05\rF\x10\t\f\r#\f\v\v\fE\x11\x11\xad\x05\x05#\x02\x02E\b\bh\x0f\x0fE\n\n#\f\f\xa1\v\f\f\v\xba\n\n%\f\fJ\b\bM\x02\xfeg\x0f\x0f\x10\x0e\x01s\x05\x05\x94\x0f\x0f\xba\x05\x17\x0f\r%\t\x10\x14\x05R\r\r\x02\x05\x03\"\x11\x11\x00\x00\x03\x00\a\xff\xbd\x02y\x01\xc1\x00-\x00I\x00n\x00\x00\x01\x0e\x05\x0f\x01\x06\x0f\x01\x06'.\x01'&?\x016?\x01>\x0476367'432\x17\x16\x17\x16\x0f\x01\x06\x17\x14'&567632\a\x14\x172\x17\x16\x17\x16\a\x06\a\x06'&'&#&56\x01\x16\a\x0e\x02\a\x06/\x01&'&74>\x0476\x17\x1e\x05\x17\x1e\x05\x17\x01\x91\x12\x1f\x11\r\x05\x03\x01\x05\x03\v\x94\r\x15\x1e4\r\t\f\x95\v\x10\x1d\x06\x06\x10\x155\"\x02\x02\x05\x01\x01\x04\v\x0e\x0f\x03\x01\x03\x05\x03\x01\xb2\a\x04\x0e\x0e\f\x03\x01\a\x02\x01\n\x10\x02\x02\x14\x15\x02\x01\f\n\x01\x01\x05\x01\x01\x83\f\t\b\x1e%\x14\x15\f\x95\v\x03\x03\x03\x02\x02\a\t\x12\v\x01\x02\x03\b\x04\x05\x03\x05\x03\x04\x12\x06\f\x05\b\x03\x01\x8e%;\x1f\x17\n\b\x05!\x12\x0f\xd0\x11\x02\x04&\x1b\x13\x11\xd0\x0f\t\x0f\x03\x06\x11\x187\"\b\x03\x02\x04\x04\n\n\v\x03\x01\x01\x01\a\x02\n\x03\x02\v\n\n\b\x03\x02\b\n\x10\x02\x03\x14\x16\x02\x02\x18\x14\x01\x03\x02\a\xfe\x8e\x11\x13\x12\x1e\x12\x03\x02\x11\xd0\x0f\x12\x10\x0e\x03\x04\x06\f\x10\"\x14\x03\x03\x03\t\x04\x05\x03\x03\x02\x02\t\x03\b\x05\a\x05\x00\x00\t\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\t\x00}\x00\x85\x00\x8d\x00\x99\x00\xa5\x00\xb1\x01\v\x01\x1c\x00\x007\x17#&'&761\x14\x05\x06\a\x17'\x06\a\x17'\x06\a\x17'\x06\a\x17'\x06\a\x17'\x06#\a'&'\a7&'\a7&'\a7&'\a7&'\a7&'\a7&545'767'\x1767'\x1767'\x1767'\x1767'\x1767'\x176?\x01\x172\x177\a\x16\x177\a\x16\x177\a\x16\x177\a\x16\x177\a\x16\x177\a\x16\x1f\x01\a\x14\x15\x14\a\x17\x064&\"\x06\x14\x1626\x14\x06\"&462\a\x14\x17\x16\x17654'&5\x06'\x14\x17\x16\x17654'&5\x06\a\x14\x17\x16\x17654'&5\x06\x17&=\x01\x06#\x16\x1d\x01\x14+\x01&'\x06\a\x16\x17\x16\x17#&'\x06\a\x16\x17\x14\x16\x17#.\x01'\x06\a\x16\x17\x14\x161#.\x02547\x06\x15\x14\x16\x15\x14\a&+\x01'&5470\x06\a4&5\x06\a2\x1e\x01\x15\x0e\x01\a\x06\x17\x16\a32\x16\x15673275\x06#\x16\x1d\x01\x14\x16327.\x02'&\x9d\x05\b\x02\x02\x02\x02\x04\x01,\x03\a+-\b\f\"%\f\x10\x19\x1d\x10\x14\x10\x13\x14\x16\a\v\x16\x16\x02\x02\x16\x16\v\a\x16\x14\x13\x0f\x13\x11\x1c\x19\x10\r$\"\f\b-+\b\x0333\x0278\x02\x06:;\x06\t7;\t\f16\f\x0e(.\x0e\x10\x1b\"\x10\x10\f\x13\x11\x11\x04\x04\x11\x10\x14\f\x11\x0f\"\x1b\x0f\x0f.(\x0e\f61\f\t;8\t\x06<:\x06\x0288\x013Jg\x92hh\x92OY\u007fYY\u007f|\x04\x05\x03\x04\x03\x03\n)\x04\x05\x03\x04\x03\x03\n\x13\x04\x05\x03\x04\x03\x03\n\xcd\b\r\x05\t\x05\x12\x02\r\x02\t\x04\x02\x06\x01\t\a\x05\x01\t\x03\x02\x03\x01\t\x01\x06\x01\x02\t\x04\x01\x01\x12\x02\x06\x03\x01\x0e\n\x01\x10\x03\f\v\x06\x02\x05\x01\x04\x01\v\x01\x02\x02\x01\n\x02\a\x04\x03\x05>\x04\v\f\x05k\x06\x18\r\a\n\f\f\f\x02\x02\x04\x03\x01\x12\xa3\x0f\a\x03\x06\x04\x05\x04\x19\x14\x14\x17\x13\x14\x11\x1f\x1b\x12\x0f\" \x0f\v%$\v\x05'&\x06&&\x01\x05&'\x05\n#%\v\x0e\x1f\"\x0f\x11\x1a\x1e\x12\x14\x13\x17\x14\x14\t\x0e\r\r\x06\b\x03\x03\x13\x13\x10\n\x11\x11\x1e\x19\x10\x0e,'\r\n84\n\bA?\a\x04GF\x03\x01HH\x04FG\x04\a?A\b\n48\v\f',\x0e\x10\x19\x1e\x11\x12\v\x10\x13\x13\x03\x03\a\a\f\x0e\x0e!\x92hh\x92g\xef~ZZ~Zy\x03\x02\x03\x05\b\x03\x03\x04\x04\x04\n\x10\x03\x02\x03\x05\b\x03\x03\x04\x04\x04\n\x03\x03\x02\x03\x05\b\x03\x03\x04\x04\x04\vZ\x03\rp\x13\x15\a@\a\x05$\x02\f\x03\x03\x11\x04\x13\r\x03\v\x03\x03\x01\b\x02\x02\x11\x03\x02\f\x03\x03\x01\x01\x05\x10\n\x03\x04\x04\x11\b\x04\x1b\x02\x03\x02\x15\x1c\x0e\x05\x05\a\x06\x01\x01\b\x02\x01\r\x05\x05\x02\x01\r\x03\n\f\a\a\x10\x06\r\b!e\x12\x16\aB\f\b\x02\x01\x01\x01\x01\a\x00\x00\x00\x00\x02\x00\x00\xff\xf8\x01\xc0\x01\xa0\x00;\x00Q\x00\x00\x13>\x03;\x012=\x014632\x1e\x01\x1d\x01\x14\x06+\x01\"\x0e\x02\x15\x14\x15\x0e\x01\"&5&54.\x01+\x01\"&=\x014>\x012\x1e\x01\x1d\x01\x14;\x012\x1e\x02\x12\"'4.\x015&632\x1f\x017632\x16\a\x0e\x01\x15\xe0\x01\x03\t\x16\x0fc \f\t\x06\n\x06!\"d\v\x0e\x06\x02\x01\x0e\x12\x0e\x01\x03\x10\re\"!\x06\n\f\t\x06 c\x10\x15\t\x03\x13$\b11\t\x12\x12\x15\tCC\t\x15\x12\x12\t\x01a\x013\n\r\x14\n\x16\f\t\r\x06\n\x06% \x1e\x04\t\b\x06\x01\x02\n\r\r\n\x02\x01\b\n\t\x1e %\x06\n\x06\x06\n\x06\f\x16\v\x13\r\xfe\xbb\x10\x01UU\x01\x0e\x1e\x14vv\x14\x1e\x0e\x01\xaa\x01\x00\x00\x00\x06\x00\f\xff\xbe\x01\xfa\x01\xc1\x003\x00Z\x00e\x00s\x00\x80\x00\xad\x00\x00\x01\x1e\x01\a\x0e\a#\x0e\x02'\x06\a\x0e\x03\"\x06'.\x035'7#.\a767>\x01;\x01\x1e\x02\x176&'.\x02'*\x01\x0e\x02\a\x06\a\x16\x06\x1e\x02\x17\x06\x15\x14\x16?\x01\x16>\x0172>\x05'\x14\"5&'\"&63\x16\x176&'\"&63\x1e\x01\a\x14\x06&\x17\x14\x06&54&#\"432\x16\a\x0e\x01'.\x01'&'&'.\x01/\x01&676\x17\x16\x17\x16\x17\x16\x0f\x01\x0e\x01\x1d\x01\x1e\x04\x172?\x016\x17\x16\x17\x16\x01\xbc!\x1c\v\x03\r\x10\x15\x13\x16\x0e\x11\x01\a\"J%\x15\t\x03\n\x04\t\x04\n\x02\x04\x06\x02\x01\x01\x01\x01\x15$\x17\x13\t\a\x01\x01\x01\x020\x1ed$#4U \x18\n\x17\x1c\a\x1eI,\x04\x11-)0\x0f)\x02\x01\x02\n\x11(\x1d\x01\b\x04D\x1f@\x1e\x06\x01\x11\r\x16\x11\x12\f\x88\r\x02\x1f\x04\x03\x04\x04+\x16\x01(%\x04\x02\x03\x04*/\x01\x06\a/\x06\aE4\x06\x06:L\v\n\x1c\x0e\x11?\x16\x18\x13\x10\x0e\n\r\x02\x01\x05\x15\x11\x0e\n\f\x06\a\b\t\r\f\x03\x02\x01\x03\r\x11\x1f\x13\t\x05\n\n\x10\x1c\x12\v\x01\x8e\x1d}\\\x17&\x1b\x16\r\n\x05\x04\x03\x06\a\x04\x17\n\x03\v\x04\t\x04\x03\x01\x06\a\a\x02\x024\x06\x15\x1a\x1f \" \x1e\fm0\x1b\x1a\x01\x15\x13\xf6Nm\x18\a\x10\x10\x01\x03\a\x13\x0f([\x12)/)#\bO\a\a\x03\x05O\x02\x05\x06\x02\x04\x05\n\x11\x17#f\a\x06 \x02\a\x06\x028!,\x03\a\x06\x034&\x04\x03\x03\t\x04\x03\x03\x04;C\rK\xa2\x11\x15\x05\x05\"\x11\x13\x18\x15\x19\x11\x1c\x06\x05\x0e\x1c\n\a\v\x0f\a\n\x0e\x11\n\t\x02\a\x03\x02\x03\t\x19\x15\x16\x05\x06\f\r\t\x10\x11\n\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x002\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x056'&\a6\x16\a\x06\a\x06'&'&\a\x0e\x04\a\x17632\x16\x17\x16\x17\x163276\x01\x93\x13\x1a\x1a\x13\xfe\x9a\x13\x1a\x1a\x13\x01L\x032C\x18\x0f!\x03\x01\x14\x1b\f\f\x11\t%\a\x10\x15\x0f\x1e\a\x10\x15\x04\f\x12\x11\a\x03\x14\x1c.B@\x01\xa0\x1a\x13\xfe\x9a\x13\x1a\x1a\x13\x01f\x13\x1a\x95@\x01\x02N\t\t\x16\x11 *\x0e\x0fh8\x04\x01\b\x11\r\x1a\x06\x14\x0f/>\x19\x0e4VR\x00\x00\x00\x00\x03\xff\xff\x00`\x02\x82\x01\x00\x00,\x00U\x00\u007f\x00\x007\"&/\x02.\x02>\x01;\x012\x1e\x03\x1f\x01\x16326?\x02>\x04;\x012\x16\x0f\x02\x14\x0e\x03#!\"&/\x02&;\x012\x1e\x03\x1f\x01\x16326?\x02>\x04;\x012\x16\x0f\x02\x0e\x04#'2\x16\x1f\x02\x16+\x01\".\x04/\x01&#\"\x06\x0f\x02\x14\x0e\x03+\x01\"&?\x02>\x043i\x0f\x17\x04\x057\x01\x01\x01\x01\x06\x06!\x03\x04\x04\x02\x05\x01$\x06\x0f\a\v\x02\x02$\x01\x04\x02\x04\x05\x03!\t\x05\x02\x028\x02\b\n\x10\n\x01h\x0f\x17\x04\x048\v\x15!\x03\x04\x04\x02\x05\x01$\x06\x0f\a\v\x02\x01%\x01\x05\x01\x05\x04\x03!\t\x05\x02\x027\x01\x02\b\n\x10\n\xc5\x0f\x17\x04\x048\n\x14!\x03\x04\x03\x03\x02\x03\x01%\x05\x10\a\v\x01\x02%\x05\x02\x04\x05\x02!\n\x05\x02\x028\x01\x02\b\t\x11\t`\x0f\b\ap\x01\x02\x06\x05\x04\x02\x04\x03\b\x01K\r\a\x03\x03K\x01\b\x03\x04\x02\t\x05\x04p\x01\x04\n\b\a\x0f\b\ap\x12\x02\x04\x03\b\x01K\r\a\x03\x03K\x01\b\x03\x04\x02\t\x05\x04p\x01\x04\n\b\a\xa0\x0f\b\ap\x12\x02\x02\x04\x03\x06\x01K\r\a\x03\x03K\x01\b\x03\x04\x02\t\x05\x04p\x01\x04\n\b\a\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x10\x00B\x00R\x00a\x00\x00\x122\x17\x16\x15\x14\x06#\"/\x01\a7'&54\x176'&'&'&\a\x06\a\x06'.\x01'&>\x0176'.\x02'&'\"#\"\a\x06\x15\x14\x170\x1e\a\x17\x167>\x01\x132\x16\x15\x11\x14\x06#!\"&5\x11463\x132654'&\"\x06\x15\x14\x17\a7\x16\xa9m'(N7$\x1f\x052\r\x03\x14\xd2\x04\x02\x01\a\x16\x05\x06\x03\x03\t\x03\x06\x14\x17\v\x01\x01\t\x03\x02\x02\x01\x04\x06\x02\x02\x06\x03\x05\x06\x05\x0e\x11\x03\x03\x06\a\t\n\n\r\x06\x1e\x12\x06\x12e\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\xb0B^0.\x84]\x15\x16T#\x01E'(56M\x12\x03\r0\x05 &7o\x0e\x05\x01\x03\f\x01\x03\x05\x05\n\x04\x03\n\x13\x12\x05\x01\n\x06\x03\x03\x01\v\x0f\x03\x06\x01\x05\x0f\x12\x14\x15\x05\x04\b\b\b\t\b\a\x03\r\x03\x01\v\x01\x1e\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\x83]A@1.]A+%R\x16\x13\x00\x00\x00\x03\x00\x00\xff\xdf\x01\xc0\x01\xa0\x00/\x00:\x00\x82\x00\x00\x01\x0f\x01\x17\a'\a\x17\a'\x0f\x01#/\x01\a'7'\a'7/\x015?\x01'7\x177'7\x17?\x013\x1f\x017\x17\a\x177\x17\a\x1f\x01\a2>\x0154&\"\x06\x14\x16\x1f\x01\x15\x0f\x01\x17\a'\a\x17\a'\x0f\x01#/\x01\a'7'\a'7/\x015?\x01'7\x177'7\x17?\x013\x17/\x01\x0f\x02\x1f\x01\x15\x0f\x01\x15\a\x0e\x01\x15\x14\x163267;\x01?\x013\x1f\x01?\x02'\x01\xc0\x1d\x02\x15\v\x1d\a\t\x15\x15\v\a\x16\a\f\x13\x14\b\a\x1e\n\x14\x03\x1c\x1c\x03\x14\v\x1c\b\b\x14\x13\f\a\x16\a\v\x15\x13\a\a\x1d\n\x14\x03\x1cw\x0f\x1a\x10\"/!!`/7\x04'\x146\x0e\x11''\x15\r*\r\x16$%\x0f\x0e7\x14&\x0566\x06'\x155\x0f\x0f%$\x17\f*\f\x17\x06\x04\v\x03\x05\x11\x18\x06\x01$/>,%:\b\r\a\x02\x05\x02\x11\x05\x06\x14\x06\x02\x01\x1f\a\f\x13\x14\t\b\x1c\f\x15\x03\x1d\x1d\x03\x15\f\x1b\b\a\x12\x14\f\b\x16\a\v\x15\x13\b\t\x1b\v\x15\x04\x1a\x1a\x04\x15\v\x1c\b\b\x14\x14\v\tB\x0f\x1a\x10\x17!!/!\x11\x0e(\r\x17#&\x10\x0f4\x17(\x0666\x06'\x162\x11\x0f#&\x16\x0e)\x0f\x14'$\x0e\x104\x14'\x064.\x06\x02\x06\x13\x06\x04\x12\x01\x06\x02\x06\r\b:&+>/#\a\x18\x11\x05\x03\f\x04\x06\x00\x00\x00\x05\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\r\x00\x15\x00@\x00J\x00\x00\x122\x16\x14\x06\"&4\x17\x14\x16\x17\x03\x06\x1327&/\x01\a\x16\x13\x177654'&54632\x17&#\"\x0e\x01\a2376\x16\a\x06\a\x177/\x01\"&63\x16376\x16\a\x06\x13>\x0154'\x16\x15\x14\a\x99Α\x91Α\x19E9k\x13\xdf&$\x01\x01DC\x1f?P\x17\x11\x13\x16\x16\x10\x01\x02@W&G9\x14\b\x06<\t\x01\t\f\x0eR0\"\x18\x05\x04\x05\x06%\x15<\t\x01\t\fD3<\x1b\x01\x11\x01\xb8\x91Α\x91\xcegAl\x1c\x01$+\xfe\xf1\r\x01\x02\xbb\xc2\t\x01G\xefJ6\x12\x1e #\x11\x10\x18\x01;\x19-\x1f\x03\x01\x12\x01\x02\x01\xf1\x92_\x03\t\t\x03\x03\x01\x12\x01\x02\xfe\xd6\x1ef=92\v\f%+\x00\x00\x00\x00\x04\x00\x06\xff\xc3\x01\xf9\x01\xbc\x00\x13\x00+\x00A\x00Q\x00\x00%\x16\a\x0e\x01\a\x06'&'.\x01547>\x01\x17\x1e\x01'\x06\a\x06\x17\x16'&'&'&7>\x037>\x01\x17\x16\x17\x16\x05\x16\x14\a\x06\a\x06\a\x06576'&'67632\x1e\x01%'76\x16\x17\"&\x06\a\x06'\".\x02\x01rG\x11\x06;\x1b14;3\x15\rY\x186\x04\aT\xa0Z\x1f\x10\a\x02\x03\x03\x05!\b\x02\x06\x03\v\x10\x14\v\t\b\v\x1b6\x04\x019\x04\x03\x06\r\f\r\x03\x02\x03\v\x1b`+\x16\x16\x0e\x04\x1c#\xfe\xa0\t\x13?y2\n\x141\x1d\x14\x01\x01\x19\x1f)\x82W \v$\t\x0f\x05\x06!\x0e\x0f\f/_\x190\x01\x01R\x94mU-\x13\a\x05\x03\t2G\x13)\x10\" \x1d\f\t\x02\x03\t1\x04A\x11<\x11\x1f\x1b\x1b\x11\x03\x01\a\x12\"Rx(\r\x0e\x1e@\x80\x01\n\x1c\t\x1f\x02\r\x0e\n\x01\f\r\v\x00\x00\x00\x02\x00\x02\xff\xc0\x00\xfe\x01\xc0\x00\f\x00\x14\x00\x007\a#7&546;\x01\x11#5\x11#\"\x06\x15\x14;\x01\x99W@`KU@R7\x1d&2X\x1d\x84\xc4\xd2&gMT\xfe\x00\xc4\x01\x0e8;m\x00\x00\x00\x01\x00\x12\xff\xc0\x01.\x01\xc0\x00\b\x00\x00\x175\x033\x17\x133\x03\x15\x82p8R^4y@\xa6\x01*\xe6\x01\x16\xfe\xa4\xa4\x00\a\xff\xfc\x00<\x02\x80\x01D\x00\a\x00/\x00;\x00C\x00\\\x00g\x00y\x00\x00\x13\x06'&767\x16\a\x16\x170#\x06\x17\x14\x1e\a1\x06\a\x06#\"&#\"\x06#\x06'.\x017672\x1e\x01326732\x1e\x01\x15\x14\x06+\x01\x15#7\x153264&#\x17\"&54?\x0154#\"\a#4>\x0132\x16\x1d\x01#5#\x06'26=\x01\a\x06\x15\x14\x1e\x01\x17\"#5\x1632?\x01'3\x17373\a\x0e\x01u\x0e\x12\x02\x0e\f\x13\x02\x02\x1a\r\x01\x17\x01\x02\x03\x04\x05\x04\x05\x03\x02\x03\v\x12\x0f\a\x14\b\b\x14\x06\x0f\x13\x0f\n\f\x0f\x1c\x06\x0e\f\x03\x03\x1cnI\x13\x1d\x11%\x1d*\x1e\x1e#\x14\x16\x16\x14\x80\x15\x1b6&\x1d\x19\x04\x1b\x0f\x1a\x10\x1a\x1f\x1c\x01\r\x17\x0f\x15\"\x1d\a\fn\b\x03\x05\x04\x13\x06\x033\x1f$\x01#\x1f5\t\x18\x01\"\x11\x02\x11\x0f\x0f\x01\x12!\x02\x13\x0f\x19\x05\n\a\a\x05\x04\x02\x02\x01\x0e\x10\x1a\b\b\x01\x1c\x169\x1b\x1a\x01\x05\x05\v#\x10\x1d\x13\x1c$B\xa9M\x14%\x14\xab\x17\x13&\x04\x02\v\x18\x14\r\x14\v\x19\x15a\x17\x19\x17\x12\r\v\x02\x01\x13\x06\t\x05J\x18\x01\x14\t\x8ess\x95\x1a\x13\x00\x00\b\x00\x00\xff\xe1\x02@\x01\xa1\x00\x05\x00\x0f\x00\x1f\x00'\x00D\x00P\x00j\x00|\x00\x00\x00\x14+\x0153\x174?\x01\x15\x14\x0e\x01#\"7\x11\x14\x06#!\"&5\x11463!2\x16\x05\x1676'\x06\a\x06\x17&5&7&'&\x0e\x01#\"&#\x06\a\x06\x16\x17\x163262\x16327674&+\x01\x153532>\x01\x174.\x01#\"\x0e\x01\x153632\x1d\x01\a\x06\x15\x14\x1e\x01327\x1537#\a#'#\x17\a\x06#\"#\x15\x163267\x01.\x1d\x18\x18M\x14\x17\x06\f\a\x12\xe2\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe0\x14\x1c\xfe@\f\n\t\x01\r\t\n>\x13\x01\x11\n\x11\x06\v\n\x02\x02\x11\x05\x15\n\b\a\v\r\n\x04\x0e\f\x0e\x05\n\f\x06\x8c\x19\x143\x15\x1d\r\x15\fZ\n\x12\f\v\x12\v\x13\x03\x11\x14\x1a&\t\x0f\t\x17\t\x14f\x16\x18\x01\x19\x16$\x02\x04\x0e\x02\x04\x01\a\x10\x11\x06\x01\x0177Z\r\x01\x02\b\x06\n\x06\xd8\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\x8a\x01\v\v\r\x01\n\vW\t\x15\x11\v\x0e\x01\x01\x04\x04\a\x01\x12\x13(\x0f\x13\x06\x06\x12\tB\x14\x18\x88/\v\x15\v\n\x0e\b\a\x0e\t\x0e\x11\b\x01\x03\x1b\b\x0e\a\x11\x10cQQc\x06\x0e\x10\x01\x0e\x12\x00\x04\x00\x19\xff\xbf\x01l\x01\xc1\x00\x10\x00'\x00.\x008\x00\x007\x16\a\x1c\x011\x0e\x01#\"&767672\x13\x16\a\x0e\x01\a\x06\a#&'.\x03'&7632\x17\x16\x03\x11\x0e\x02\x17\x1676&'\x1e\x01\a\x06\a6\xc6\"\x01\x01\x16\x10\x12\x16\x01\x01 \x03\x02\x04\x89\x1f\n\n_3\x02\x02\x03\x01\x05\x1c+3\x1f\x03\x02U*'(%+}\x1b\"\n\x02\x05\xce\r3>\x1a\x17\x01\x02Ac\x14\x1e\x14\x01\x02\x0e\x11\x15\x0f\x13\x1c\x03\x01\x01f5\x03\x01O\x03=\x04\x04=\x04\x04=\x04\x04\x0f\x04\x03\x02%\x03.\x15\x01\x01\x15\x01\x01\x15\x01\x16\xd2$\x02\x04\x02\x13\x02\x02\x13\x02\x02>\x02\x02%\x04\x03=\x04\x04=\x04\x03=\x04Q\f\x01\f\x01\x01\f\x01\f\x01\xfd\x01\x03=\x04\x03>\x04\x04=\x04\x04=\x04K\x01L\x01\x04\x02\v\x02\x01\x01\x03\x01\b\x01\x01!\x01\x01B\x01\x01!\x01\x01!\x01\x01B\x01\x01\t\x03\x05\x04B\x01\x01B\x12\x03\t\x04\aB\a\x04!\x04\x04!\x04\aB\b\x03!\x02B\x14\x15\x02\x01\f\t\a\x02\x02\x0f\x13\x14\x01\x01\x01\v\b\x03\x03\x02\x02\a)\x03\x05\x03\x06\n\x06\x06\x0e\x12\x13\x04\x03\x01\x01\x05\f\x03\x02\x01\x03\x03\a\x03\x03\x90_\x02\x02\x01\x15\x02\x04,\x05\x02\t\x01\x01\t\x02\x05,\x04\x02\x15\x01\x02\x02_\x04\x02$\x01\x01$\x02d\xb1\x04\x02$\x02\x02$\x02\x04G\x04\x03#\x02\x02\t\x02\x04^\x02\x03\x01\x15\x02\x85\x01\r\r\x01\x18\x02\f\x01\x01\f\x02\x18\x15\x01\x02\x02\x12\x02\x01\v\x01\x01\v\x01\x02\x16\x02\x02#\x01\x04\x01\x15\x02\x02#\x02\x04G\x04\x02$\x02\x02$\x02\x04\x11\x04\x06\a\a\x01\x0e\x01\a\a\x01\x0e*\x01\x01\x03\x02#\x02\x02#\x02\x05F\x04\x02$\x02\x02$\x02\x046\x82\x01\x01\x00\x00\x02\x00\b\xff\xcd\x02\x04\x01\xbc\x00-\x00V\x00\x007>\x0176\x16\x17\x16\x06\a\x06'&'&767654&'&\x06\a\x06\x16\x17\x16\a\x06\a\x06'&'.\x064&70\x16\x15\x1e\x01\x17\x167676'&7>\x02\x17\x1e\x01\x15\x14\a\x06\a\x06\x17\x16\x17\x167676'.\x01\a\x0e\x01\b\x02zZf\x9f\x11\x10VR\r\x05\x1b\x1a\x05\f%\x06\x01&\x1b\x1d-\x04\x04\x17\x17\r\x05\x1b\x1b\x04\vX+\x04\a\x05\x04\x02\x02\x02\x01\x15\x01\x05C;\x04\x02\x16\x17\x01\x040\x03\x01-@\x1d\x13\x1b\x01\x05(\x04\x01\x17\x16\x02\x047!5\v\n\x92cRr\xb6c\x89\f\rv`Y\x98!\x06\rFE\f\x05\x11'\x05\x06\x1b*\x02\x03#\x1c\x18+\n\x06\rFF\v\x05\"U\b\x10\x0f\r\x0e\n\r\x06\f\x03\x11\x058b\x1d\x02\x05:;\x04\x03\x1e8 0\n\x11\n/\x16\x05\x06-\x19\x02\x04;:\x05\x02\x1a.IX[x\r\n}\x00\x00\x0f\x00\x00\xff\xda\x02\x00\x01\xa6\x00<\x00J\x00R\x00Z\x00q\x00y\x00\x81\x00\x87\x00\x95\x00\xa4\x00\xb3\x00\xbb\x00\xcb\x00\xda\x00\xe2\x00\x00\x01\x1e\x01\x15\x14\x06\a\x06\a\x16\x17\x16\x0e\x01\a\x06&'&'\x06\a\x0e\x01'.\x01767&'.\x01546767&'&676\x16\x17\x16\x1767>\x01\x17\x1e\x01\a\x06\a\x16'\x06\a\x16\x17\x16\x17676&'&\x06\a&'\x06\a\x16\x17&'\x16\x176767\x06\x17\x16\x17\x16\x17\x163276767&'&'&\"\a\x06\a\x06\x17\x06\a67&'\x06767&'\x16\x17\x16'\x06\a6\x17&'\x0e\x01\x17\x16\x176767&1.\x01\x0367&'\x06\a\x0e\x01\x15\x16\x17\x16\x17\x16\x1767&'&'\x06\a\x06\x16\x17\x1676767\x06#\"'\x16\x176'&'\x06\a\x06\a\x16\x17\x1e\x02767>\x0254&'&'\x06\a\x16\x172&\"&462\x16\x14\x01\xa2*47-\x06\x03\x02\x01\x06\x02\x0f\r\x14;!\b\x05\x05\x06!?\x14\x14\f\b\x02\x02\x05\t+52*\t\t\x02\x01\t\f\x14\x14@\"\x04\x04\a\x06!;\x14\x15\f\n\x01\x01\b\u007f\x06\x06\x17\x14!\"\x01\x01\b\a\r\r0\x8f\x06\b\n\x06\x16\x18\a'\a\t\x06\b\a\b\x18\x06\v\v\v\r\x17\x17\x18\x16\x0e\n\f\n\v\v\v\r\x17.\x17\x0e\n\f\xab\t\a\x18\x17\a\t\b\a\n\x06\x15\x18\a\b\x06_\x10\x0e\x1e\x1e\x0e\x84\f\a\a\x02\x01\"!\x14\x17\a\x1d4%\n\x0e\x0e\n\n\a#*\x02\x10\x18'\az\x05\x05\x18\x13\"\"\x02\x02\x06\a\r\x11\x12\x1f2\x10\r\x0e\x10\x0f\x0f\x0f\x93\x04\a\x01\x02!#\x13\x17\b\x05\x11#\x19\t\x0f\x14\x18'\x15,#\b\a\n\x0e\x0f\n\x03}&\x1b\x1b&\x1b\x01\x0f\x0f)\x17\x17,\x0e\x02\x01\a\a\x1d0$\a\v\x14\x1b\b\x05\x05\x05\x1d\x15\v\v>*\t\t\x01\x03\x0f,\x16\x16*\x0e\x03\x03\b\t*?\f\v\x16\x1f\x04\x04\a\x05\x1d\x14\v\vC-\a\x04\x02R\x05\x06\x19\x1c\x03\b\x04\x06'6\b\a\x14\xef\f\x0f\x18\x15\x05\x02\n\x88\x16\x16\f\x0e\f\x0e\x03J\x16\x13\x14\x13\x01\x01\x15\x13\x14\x14\x16\x13\x13\x13\x02\x02\x14\x13\x15F\x10\n\x03\x05\x17\x15\x0fA\x16\x16\x05\x03\r\r\na\x11\x13\x01\x01\x13N\a3$\n\x05\a\x03\x1c\x19\a\x1a\x15\xfe\xf0\"\x1f\x1f!\x03\x03\f \x0e\x13\v\x12\r\x02d\x04\x05\x1a\x1c\x02\b\b\t$1\a\a\b\f0\x12\x12\x01\x01\x14.\" \x06\x06\a\x03\x1c\x1a\b\x03\x10\x13\x04\x04\f\u007f\b\x16\x16\n\r!\f\x02\x02!\x1e \x1f\x11\x1b&\x1b\x1b&\x00\x00\x00\x00\x04\x00\x00\xff\xd0\x02\x80\x01\xb0\x00\x06\x00\n\x00\x0e\x00\x12\x00\x00\x01\x13#'#\a#73'#\x05\a'\x17%\a'7\x01>\xa4M\x19x\x19NyT)\x02\x01A\x9e\x14\xa8\xfe<\x14\x9e\n\x01\xb0\xfe QQ\x8a\x82\xb1\t8\x10\x108\t\x1f\x00\x00\x00\x00\x06\x00\x00\x007\x02\x80\x01I\x00)\x00P\x00\x82\x00\xaa\x00\xbe\x00\xc3\x00\x00%\x14\x17\x15\x06\x15\x14\x16\x15\x14\x06+\x015352>\x0154&5475&54654&+\x01532\x16\x15\x14\x06\a\x16\x15\x14\x0e\x01#\"'7\x163254'&'&54>\x0232\x17\a&#\"\x15\x14\x1e\x05\x0523\x17\x06#\"=\x01#\"\x06\x15\x14\x16\x15\x14\a\x15\x16\x15\x14\x06\x15\x14\x16;\x01\x15#\"&54654#5654&546;\x01\x15\x147\x16\x15\x14\x0e\x02#\"'7\x163254'&'&54>\x0232\x17\a&#\"\x15\x14\x1e\x05'2\x16\x15\x14\a#\x16327\x17\x06#\".\x015&6\x1534#\"\x02e\x1b\x1b\x03\x13\x16\x14\x06\a\a\x03\x01\x17\x17\x01\x06\v\x06\x14\x16\x13\x03j+\x0e\x1e\x14\"\x1a\x15\x15\x13\x15\x1d\x02\x01*\t\x0f\x17\r\x1c\x1b\x15\x12\x10\x11\x01\x04\x03\a\x04\t\xfe\x9b\x03\x03\x06\n\x0e+\x0e\n\a\x01\x17\x17\x01\a\n\x06\x14\x16\x13\x03\x1b\x1b\x03\x13\x16K\xf0+\t\x10\x18\x10!\x1b\x15\x15\x13\x15\x1d\x02\x01*\t\x10\x16\r\x1d\x1a\x15\x12\x0f\x12\x01\x04\x04\x06\x05\t\x99 #\x02_\x06#\x11\x11\x10\x1a\x1e\x17#\x15\x01-9\x1b\x19\xe5\x16\x01\x1c\x01\x16\n!\f\x19\x14\x19\x01\x04\t\t\t!\n \x05\x02\x05 \n\"\a\x0e\t\x18\x14\x19\f!*\x0e\"\x0e\x17\x0e\x16\x1f\x11\x0e\t\v\x01\x01\x10\x1e\v\x12\r\a\x14\x1c\r\f\x03\x03\x04\x02\x03\x02\x03<\"\x046\x96\t\r\b\"\t \x05\x02\x06\x1f\n\"\b\r\n\x18\x14\x1a\v!\t\x17\x1c\x01\x16\t\"\f\x19\x14\xb2\r;\x0e\"\v\x12\x0e\b\x16\x1f\x11\x0e\t\v\x01\x01\x10\x1e\v\x12\r\a\x14\x1c\r\f\x03\x03\x04\x02\x03\x02\x03D+!\a\f#\n\x1b\x12\x13&\x19%.B\x1f\x00\x00\x00\x00\x06\xff\xfd\xff\xca\x02\x82\x01\xb9\x00\x00\x00\xe4\x00\xf4\x01\a\x01\x11\x01\x19\x00\x00%72\x16\a\x0e\x01\a\x06'47>\x01&'&\a\x16\x15\x16\a\x06\a\x06'&767&'&'\x06\a\x06\a\x16\x17\x16\a\x06\a\x06\a\x06'&7676767&'&'\x06\a\x06\a\x14\x0f\x015\x06#\"&?\x01\x06\a\x0e\x02#\"'.\x01767\x06\a\x06\a\x141\x16\x06\a\x0e\x01'.\x017676727.\x03'&67676\x16\x17\x16\x06\a\x0e\x01'.\x01'&76\x17\x167>\x01'.\x01\a\x0e\x04\a\x06\x1e\x01\x172\x14\x174767>\x012\x16\x0f\x01630>\x012\x17\x16\x170\x0e\x03\a\x0e\x01\x1612767\x1505076767>\x015632\x170\x0e\x01\a\x06\x17\x14\x176767632\x152\x0e\x01\x15\x06\x17\x16\x176\x056'0\x06\"\a\x0e\x01\a\x0e\x02\x17\x16676'&\x06\a\x06\a\x0e\x01\x14\x1e\x01\x172>\x03\x176541\x06\x0f\x02\x167654'\x06\a\x06\x01.\xf9)1\x01\x01\x16\a\x05\x01\x05\x0f\x05\x1e%#\x1b\x05\x01\x18\n\f\v\x06\x14\v\b\x1a\n\x02\x04\x02\x0f\x14\x01\x02\x06\x01\x01\x14\n\v\t\x0e\v\x05\x06\x03\x02\x1c\x06\x04\x02\x04\f\x01\x04\x02\x10\x10\x0f\n\x01\x01\f\v\v\b\x01\x02\b\b\x04\x06\v\x06\n\x05\t\f\x01\x02\a\x0e\n\b\x04\t\x03\x10\x11<\x1e\r\x0e\v\x10M\x01\x02\x01\x01\t-# \x04\x03\x17!9^Bw\v\n;/%H\n\x0f\x13\x03\x03\x03\x03\x05\x14-HW\x10\vhK\"1\x19\x0f\x03\x01\x01\x1f:\v\x01\x01\x14\x11\x1a\v!\x1a\n\x02\x02\x01\x01\x02\x03\x05\x03\x06\x01\x02\x04\x04\x04\x01\x01\x01\x01\x02\x03\x01\x02\x01\x04\x06'\x03\x02\x03\x03\x17\r\x01\x03\x04\x01\x01\x03\b$\x04\x01\x04\x02\x17\x0e\x01\x04\x04\x01\x02\x01\f\x1b\xfer\x1f\f\x02\x01\x01\x02\b\x02\x1b \t\n\b\"\x93\x15\x05\x01\x0f\a\x0e\b\x03\x03\x02\x03\x02\x02\x06\a\x05\ap\x19\x05\x06\x13\x01\x01[\x1a\x02\r\x06\tEW,\x1b\x11\x14\x02\x01\x03\x02\x03\n\x1f$\x04\x04\v\r\n\x16\x12\a\x04\x05\x01\x04\x1d\x17\x15\x14\x06\r\r \x1d\x01\x04\x10\f\x19\x0f\x06\x04\x05\x01\x01\x04\x05\t\x03\"\x06\a\x03\x05\x1b\x03\r\r( \x1e\x10\x01\x01\x02\x01\x13\x1a\r\r\x13\x10\t\t\a\x05\b%\x10\x1a\x11\b\x05\x05\x03\x01\r>\x18\x1b\x19\b\x04%\x1e$&\x01\x01\x01\a \x19)\x14\x117\x1e5\"\x18\x1a*)V\x12\x0f\x03\x06\x05\x11\a\b\x02\x01\x06\x15\x04\tZ\"\x1a\x03\"\x11#\x1a\x1c\x0e\b\x16'+\f\x01\x01\x01\v\t\x0e\x0f\x18\x15\v\v\x02\x02\x02\x01\x03\b\t\x0e\x10\x11\a\x05\n\x05\x06\x03\x04\x01\x01\x01\b\rV\n\x04\r\x02\x06\a\t\r\x05\t\x10\a\x0f:\x11\n\t\x06\a\t\r\x05\t\x10\x06\x18\r\x91\"-\x02\x01\x01\x05\x01\x10\x1f&\x05\x05\fj3\b\x04\x06\b\x10\x19\b\x12\x0f\r\a\x01\a\x0e\f\x122\x0f\x14\x01\a\a\x15\x03\x01\x16\n\x19\x05\x05\v\r\x12\x00\x00\x00\x02\x00\x00\x00\x00\x01\xc0\x01\x80\x00\x06\x00\f\x00\x00\x013\v\x013\x177\a\x1b\x01#\a'\x01e[\xe0\xe0\xb008ਨ6rr\x01\x80\xfe\x80\x01\x80YY \xfe\xe0\x01 \xc6\xc6\x00\x00\x00\x03\x00\x10\xff\xe0\x01\xb0\x01\xa0\x00\x02\x00\b\x00\x0f\x00\x00?\x01\x17'\x17\x03\a'\x03\x01\v\x01373\x17\xba&&&\xd0 \xb0\xb0 \x01R\x82\x820\x1bn\x1a\xb4\\\\\xecJ\xfe\xecbb\x01\x14\xfe\xf4\x01$\xfe\xdcBB\x00\x00\x00\t\x00\x00\x00X\x02\x80\x01(\x00\x06\x00\t\x00\x0f\x00\x13\x00\x1b\x000\x00D\x00\xb9\x00\xbf\x00\x007'#\a#7\x17'\a3\x17'3\x1773\x1753\x157\x15#5#53\x15\x16\x14\x0e\x02\".\x024676762\x17\x16\x17\x16\x17\x064.\x01'&\"\a\x0e\x02\x14\x1e\x01\x17\x1627>\x01\a\x16\x15\x14\x06\"&5475\a\x15\x16\x14\"475\a\x153\x15#5#\x15#535\a\x0e\x01\x0f\x01\x153\x15#5#\x15#535&/\x01\x153\x15#5#\x15#535'\x15\x16\x14\"475'\x15\x16\x15\x14\x06\"&5475'\x17&5&5'\x1743>\x01?\x02#\a#7\x17#'#\x17\x16\x170\x157\a\x14\a\x14\a7\a'37\x173'k\x134\x13\x11>>>\x13']>\x11--\x11\x13\x0f\xc2\x12)d\x86\n\x12\x18\x1c\x18\x12\n\n\t\x05\x10\f\x1c\f\x10\x05\t\x05\v\a\x0e\t\n\x15\t\t\x0e\b\b\x0e\t\t\x15\n\t\x0eW\n\a\n\a\nP\n\x19\n\x1d\x06\x06\x05\x05\x05&\x04\t\x03\x03\x05\x04\x05\x04\x05\v\b&\x06\x06\x05\x06\x06\x1d\n\x18\tP\v\b\n\a\nY\xf3\x01\x01AA\x01\x01\f\x06\x06\x01\x18\x12\x12?>\x11\x13\x18\x01\x17\x03@@\x01\x01\xf3Y\xc9\x12\x01\x02\x12\x14\xa4**\x84\x84c+<\x84``\x80\x80\x80ttt\f\f%\x1c\x18\x12\n\n\x13\x17\x1c\x18\t\x05\a\x05\x05\a\x05\t\f%\x16\x13\x0e\x04\x04\x04\x04\x0e\x13\x16\x12\x0e\x04\x04\x04\x04\x0eD\x01\v\x05\a\a\x05\v\x01\x06\t\x05\x02\x14\x14\x02\x05\x03\x18\x0e\a\a\x0e\x17\x04\x05\a\x01\x01\a\f\x05\x05\f\a\x02\f\x04\x17\x0e\a\a\x0e\x18\x03\x05\x02\x14\x14\x02\x05\t\x06\x01\v\x05\a\a\x05\v\x01\a\n\x0e\x04\x03\x04\x03\b\x02\x01\b\f\x02\x02\x1a)\x83\x83)\x1a\x06\x12\x01\x02\b\x03\x03\x04\x04\x0e\nQ((+\x00\x05\xff\xff\x00y\x02\x81\x01y\x00\xe3\x00\xec\x00\xf8\x01\x0e\x01\x1a\x00\x00%\x14\x06\x0f\x01\x0e\x02'.\x03'5#\a\x0e\x02.\x01=\x01\x0e\x02'.\x01/\x01\x06\a\x06&/\x01\a\x06'.\x01?\x01#\x06\a\x0e\x01+\x01\x06'&6?\x01#\a\x0e\x02'.\x015'\a\"\x0e\x02&'&'&'&4?\x016\x17\x1e\x017367672\x17\x16\x06\x0f\x010\x14\x1e\x02326?\x01>\x017>\x01;\x016\x17\x16\x06\x0f\x01\x177>\x02\x172\x16\x0e\x01\x0f\x01\x17?\x01>\x02\x17\x16\x17\a0\x15\x16\x1726?\x0167>\x05?\x01676\x17\x16\a6\x17\x1e\x01\x0f\x01>\x01?\x014567>\x01\x16\x17\x16\x06\x0f\x01\x1e\x0272>\x02?\x01>\x017>\x01\x1f\x013>\x03?\x01>\x02\x1e\x01\x0f\x01\x06\x17\x166?\x016\x05\x167>\x01'&\x0e\x01%\x06\a>\x04'&\a\x06\x16>\x01.\x01/\x01.\x02\x0e\x03\x1c\x01\x1d\x01\x1e\x0267\x167>\x01/\x01&\a\x0e\x01\x17\x02\x80\x02\x02\x01\x03\n\x19\t\x06\t\x04\x02\x01\x02\x14\x01\x04\v\v\x06\x02\t\x1c\x10\x0e\x14\x04\x03\x15:\f\x16\x06\x05\x12\x16\t\x04\x01\x01\x01\x01\r\a\x03\a\x03\x02\x0f\x04\x01\x02\x03\x02\x02\f\n\f\b\a\x05\x06\x01\x10\x01\x06\x0f\x0e\x11\x05\x10\x04\x11\v\x05\x03\x02\x04\x06\x03\t\x04\x03\x02\x06\x0e\x1b\x15\v\b\x19\x10\x11\x02\x02\b\x05\b\x18\a\b\x01\v\x03\x01\a\x03\x03\t\x01\x01\x03\x02\x02\x01\x15\x01\x05\x0f\a\x05\x03\x02\x03\x02\x02\x02\x01\x1c\x01\x03\n\x04\t\x01\a\x02\x03\x05\n\x03\x03\a\x05\x01\x04\x05\x06\x05\x04\x01\x01\a\x11\x16\a\v0\x0e\r\x12\x04\a\a\x05\x10\x06\x06\a\x1e\x04\x15\x17\x01\x01\x1b\r\x0e\x01\x02\r\t\x06\r\n\t\x03\x02\x01\f\x02\x02\x10\x01\x01\x01\x02\x05\x04\x05\x01\x01\x02\x03\n\a\x03\x01\x01\x04\x0e\x06\x0f\x04\x04\n\xfd\xbf\x06\x0e\n\x05\x06\x04\r\f\x01\x11\x10\x01\x02\x06\x0f\v\b\x02\x04\x12\x01\x13\a\x02\x03\x03\x02\x01\x01\x03\t\b\n\x05\x04\x01\x05\f\nd\x10\n\x05\x01\x02\x02\t\v\x05\x04\x01\xc1\x04\b\x01\x01\x02\x06\b\x02\x02\n\f\f\x04\x04:\x03\t\r\x05\t\x04\x03\x02\a\v\x02\x01\r\x06\x06\x0e\f\x01\a\x03\x04\n\n\x0f\a \r\f\x1a\x18\n\v\x01\f\b\x1b\f\r\x18\x18\x15\x04\x01\x01\t\x03\x04\t\x03\x04\x01\x03\x04\f\x12\x01\x05\x02\b\x04\x04\x05\x05\x02\x02\x01\x13\r \x01\x0f\x15\"\a\b\x02\x04\x03\x02\n\x05\x05\v6\x06\x03\x03\x01\t\x04\x18\n\t\x02$\x03\x06\v\x01\v\x10\x0f\x06\x05\x02\x02-\x01\x04\x05\x01\x03\v5\x16\x05\x01\x05\x03\x02:/\n\x13\x10\x0e\n\a\x02\x02\n\a\b\x1f-=\x0e\b\f(\x0f\x0e\x01\t\x04\x04\x06\x01%\x17\x03\x05\f\x14\x13\x1e\x05\x05\x02\x04\x05\x02\x06\x06\x06\x02\x02\f1\a\x04\x01\x03%\x05\n\b\x06\x01\x02\x01\x03\x04\x02\x0f\a\a\x1f\x01\x01\x05\x03\x03\x04\x10\x02\n\a\x13\x05\x02\x04\x16m7\x10\x03\n\x1c\x17\x1a\x06\x16,\x03\x94\x13\x10\n\a\x02\x01\x01\x01\x01\x03\v\x12\x11\t\a\x02\x01\x01\x01\x01\x03\"\x01\x0f\a\r\x03\x03\v\x14\t\x10\x03\x00\x00\x00\x01\x00\x03\xff\xc0\x01\xbd\x01\xc0\x00.\x00\x00%\x14\a\x06#\"&#\"\a\x0e\x01#\x15\x14\x06#\"&5\x11&5462\x16\x15\x14\a\x152>\x0432\x1632632\x16\x15\x01\xbc\r7%\x16H\x1d2B\x01\x04\x01\x14\x0e\x0e\x14\x17\"/\"\x17\x01\v\x0f\x17\x17\x1d\r%P\n\x17C\x02\x06\tY\b\x06\x17\x1c\x1d\x01\x01N\x10\x13\x14\x0f\x01w\x11\x1c\x17\"\"\x17\x1d\x10 \x05\x06\a\x06\x05\x1c\x1c\b\x06\x00\x04\x00\x10\xff\xc0\x01p\x01\xc0\x00\x03\x00\a\x00\v\x00\x0f\x00\x007#\x113\x17\x11#\x113\x11#\x113\x15#5B22e3\x983\x972~\x01BL\xfeL\x01\xb4\xfeL\x01\xb4\xf7\xf7\x00\x00\n\x00\x00\x00L\x02\x80\x01)\x00\x03\x00\t\x00\x13\x00\x17\x00\x1b\x00?\x00G\x00\x9b\x00\xa3\x00\xab\x00\x0075\x16\x177\x163\x06'7$\"&5462\x16\x15\x14\a53\x15#57\x15'\x1e\x02\x14\x15\x14\x15\x1c\x01\x0e\x01\a\x0e\x03+\x01\x06'.\x0245454>\x03;\x016\a54\"\x1d\x01\x142'\x1e\x02\x14\x15\x1c\x03\x0e\x05\a\x0e\x03#'\x06'.\x024547&'\x15632\x16\x1d\x01&'54#\"\x1d\x01'&'\x15\x16\x17\x16\x17\x15#5.\x046?\x01>\x01\x177\x15\x16\x1767>\x033\x176'7&\a\x0e\x01\x16\x1f\x0154\"\x1d\x01\x142\x90\x13\x14\x13&&)6\x13\x01\xa5\x18\x11\x11\x19\x10::\x84:Y\a\a\x03\x03\b\x06\x05\x0e\r\v\x04\x03 \x12\a\a\x03\x01\b\x10\x19\b\t \x15\x16\x16k\a\a\x03\x01\x01\x02\x02\x04\x04\x03\x05\x0e\r\v\x04\x03 \x12\a\a\x03\t#A\r\x1a\x13\x15\x1e\x1b\v\v\x04!\x15\x12\x15\t\n:\x11\x1a\x0e\a\x01\x01\x01\x01\a2)\x16@&\x03\x03\x05\x0e\r\v\x04\x03 \xf8\x1d.\x12\x03\x02\x12\x16\xe3\x16\x16`\x10\n\a\x06\r\v\x12\x01x\x11\f\f\r\r\f\f\x89nn\xa8\x1b\xc3w\x06\f\x11\x05\f\x01\x03\b\t\x0e\f\x06\x05\a\x03\x02\x01\x12\a\f\x11\x05\f\x01\x03\v\v\x12\x10\t\x02Z(\v\v(\rT\x06\f\x11\x05\f\x01\t\x02\b\x03\a\x03\a\x04\x06\x02\x05\b\x03\x02\x01\x02\x13\x06\f\x11\x05\f\x1e\x0e\x1a 6\x16\x16\x10^\f\x121\x0f\x13\x1d\x03\x1b\x18\x1f\x10\x10\a\x06\x1dJ\x10\x1d\x16\x12\r\t\x02\x01\x0f\x01\x0f\n\x15\x1f\x1e\x03\x03\x05\b\x03\x02\x01\x02\x1e\x0e\x11\x0f\x03\r'\x189(\v\v(\r\x00\x00\x00\x02\x00\a\xff\xc0\x01y\x01\xc0\x00\x05\x00\v\x00\x00\x1b\x01#'\a#!3\a'3\x17\x9e\x97Y>>Y\x01.CoqD-\x01\xc0\xfe\xdctt\xdc\xdcX\x00\x00\x00\t\x00\x00\x00<\x02\x80\x01D\x00\x11\x00\x1b\x00\x1f\x00>\x00R\x00Y\x00h\x00s\x00w\x00\x00\x13\x153\x15#\x15\x14\x16267\x15\x06#\"&=\x01\x176\x17\x15&\a\x15#537\x15\a5\x05\x14\x1e\x02\x15\x14\x0e\x01#\"'5\x163254.\x0254632\x17\x15&#\"\x05\x14\a#\x16327\x15\x06#\".\x0154632\x16\a34&#\"\x06'2\x16\x15\x14\x06#\"'\x0f\x0153\x176\x172654&#\"\a\x17\x16\a53\x15\xa5\"\"\t\f\n\x03\v\x14\x14\x1a\x84\f\x19\x15\r,&_,\xfe\xff\x15\x1a\x15\x10\x1c\x13\x19\x17\x1a\x17\x11\x15\x1a\x15!\x1b\x18\x14\x15\x17\x0f\x02S\x01W\x03 \x18\x14\x15\x1d\x16 \x13%\x1f\x1e\"X.\r\t\n\x0eq\x19$#\x1a\x10\x0f\x01,'\x02\x10\t\f\x0f\x0f\f\x0e\b\x01\br,\x01/&&?\t\n\x02\x01\"\x06\x18\x14\x8e*\x16\t)\a\x10g\x99;$\n$^\a\t\a\x17\x12\x0f\x16\v\v(\x0f\v\a\n\b\x15\x11\x17\x1b\b*\v+\t\a\x1a\t!\f\x11$\x1a#..\x13\x0e\x0f\x0f3+%((\f2\n\xcd\v\x0e{\x18\x12\x12\x17\bB\t!\x99\x99\x00\x00\x00\x00\x01\x00\v\xff\xbf\x01v\x01\xc0\x00\"\x00\x00\x13\x14\x1e\x04\x15\x14\x06#\"&'5\x163254.\x0454632\x17\x15&#\"\x9b!090 l\\\"[\x1fTH7 090 iXLBDJ1\x01%\x0e\x16\x0e\x18\x1e;(KO\x13\r\x81.#\x10\x18\x0f\x18\x1d8%KV\x1a\x86$\x00\x00\x00\x00\x02\x00\a\xff\xe0\x01\xb9\x01\xa0\x00\x15\x00#\x00\x00\x13\x14\x1e\x02327\x0e\x01#\".\x01547>\x027\x0672\x15\x14\x0e\x01#\".\x02546\xb3\x1c)3\x14\f\a&R\x1b$Y;\t\r:F$\x0e{\x8a\x1c%\r\x12%\x1d\x12\x12\x01r\x19YW@\x02\x0176\x17\x1e\x01\a\x06\a\x06\a\x06\a\x06\a\"+\x01\"#&#&'&'.\x01'4'\x1323\x161\x16\x17\x16\a\x06\a\x06\a\x06'&'\x15\x141\x06#\"#&50=\x0146;\x012\x17\x14\x17\x1430>\x01767\a0\x150\x141\x15\x14\x17\x163\x167654'&'&\a\x067232\x163\x16\x17\x16\x17\x16\x150\x1d\x01\x14\x15\x06#\"#\"'4'\"\x15\x0e\x01'&'&7676\x17\x16\x1721450454&'&\a\x06\a\x065<\x01547676362\x17<\x01=\x014#\"&'\"#\"\a\x06\a\x06\x14\x17\x16\x17\x167676\x05\x150\x06\a\x06\a\x06\a\x06\a\"&747676'4'&'&\a\x06\"\x06\a\"+\x01\"5&1476767632\x17\x16\x17\x16'0\x170?\x014656;\x022\a\x14\a\x06\a\x06\a\x06'\"'&5<\x01\x17:\x01\x17232767>\x0176'&'&5&3232\x17\x16\x15\x16\x0e\x03\a\x1c\x03=B ((\a\a\x18\x1d#_!\x05\x04\x05\x03\x04\x04\x05+9%&\x1b\x1a\x02\x01\x15\x01\x01\x04\a\x1a\x19)'\"U\x1b\x04\x9e\x06\x02\n\x1f\r\t\x01\x01\t\x0f\x1d\"\x1b\x01\x01\x01\x04\v\n\x05\x03\x05\v\a\x01\x01\x01\x03\x03\x01\x11\x15+\x01\x13\x13!\t\x04\x05\b\x19\x18\x16\x01\xcd\b\x04\x02\a\x02\r\t\x10\x03\x01\x01\x04\b\b\x05\x01\x02\x01\x13,\x10\x12\x03\x02\x06\t\x14\x0e\x14\x10\x10\x01\n\f\x11\x14\x05\x13\a\x06\x0e\x03\x0f\x0e\x01\x02#\x02\x01\x13\x05\x03\x04\t\b\r\x04\x01\x01\x03\n\a\t\x14\x12\x01\x01\x04\x01\x01\a\x12\x06\x06\x02\x03\x02\x03\x01\x01\f\x04\x04\x01\a\b\a\x0e\x14\x03\t\b\x03\x01\x01\x01\x03\x01\x01\x02\x02\x10\x18\r\x0e\x06\x06\v\n\b\x83\x01\b#\x01\x02\x05\x01\x14\x04\x01\x01#$\x04\x05\r\x1a\t\b\b\x05\x02\x05\x01\x02\x03\x05\x05\v\x05\x01\x06\x02\x02\x02\x1e\x1d\x02\x01\x04\b\x0f\x04\x02\x06\x14{\x06\x04\x0f\x02\x1e\x10\a\x05\x05\x01\x03\x04\x19\x0e\x02\x01\x01\t\x04\x04\x03\x1e\x12\f\x06\x04\x01\x01\x01\x04\a\x0e\f3\x18\x01\x05\x01\x06\x02\x06\x1f\x14\x1d\x19\x14\x1d\x05\a\x16\x01\x01I\x02\x06\x01\x05\x02\xd2\x05\x03\a\x02\x06\x01\x03\x01\x01\r\x02)**\x01\x02\x01\r\x02\x1e\f\x13\x13\x0e\x18\x02\x01\x0f\x01(\x01\x02\x05\n\x15\x06\x06\x01j\x01\x02\x04\x05\x02\t\x01\x0f\a\t\n\x16\x11\r\x12\a\x05\x01\x01\x04\x01\x01\x13\x05\n\r\x02\x03\x04\x01\x05\x02\a\x02\x06\x02\x06\x02\x04\x01\x04\x01\x80\x03\n\x01\x0f\x02\x03\x01\x03\x04\v\x05\n\x05\t\x04\x03\x01\x02\r\x01\u007f\x12\b\x02\"\x16\a\x06\x02\x01\x02\x02\x02\x01\x1e\x0f\x0f\t\b\x02\x02\x01\x01\x02\x01\x01\x01\x02\x01\x02\x01\x02\x01\f\x04\x03\x01\x01\x03\x02u\x02\x16d\x01\x02\x01\x05\x04\x03\x03ZY\n\t\x16\x01\x02\x01\b\x05\n\x01\x01\x01\x03\v\x04\x0f\x03\x06\x06IH\x03\x04\x04\x05\x0f\x025\x00\b\x00\x00\xff\xe0\x02@\x01\xa0\x00\x12\x00(\x008\x00r\x00\xb3\x00\xe3\x01\x0e\x017\x00\x0070=\x01476\x17\x16\x17\x16\x15\x14\a\x06'\"'&\x17.\x017676\x172\x1632\x1d\x01\x1c\x03#\x06\a\x06%\x11\x14\x06#!\"&5\x11463!2\x16\a\x16\x17\x1e\x01\x17\x16\a\x0e\x01\a\x06\a\x06#0&#\"\x14\x15\x14\x17\x163\x1676767674#0\"1\"\a\x14\x06\x15\a\x06\a45.\x01'&'&#\"#\"\a\x16\x17\x166761\x16\x15\x16323250=\x014'&'&'\"&+\x01\"1\x06\a\x06\a\x06\x15\x1c\x01\x15\x147676\x17\x16\x17\x16\x15\x1c\x02\x150\x15\"1&'&\a\x06\a\x06'\x15\x14\x15\x14323254=\x010\x161\x16767656'&'\"'+\x010\x061\x06\a\x06\a\x06\a054&5&+\x01\"\x05&\a\x06\a\x06\a\x06'&'&'&'&\a\x15\x16\x17\x16\x17\x16\x17\x16\x17230;\x0121676767676&7&'&'&\a\x06\a\x06\a\x14\x15\x1432376\x172\x17\x1e\x01\a\x06\a\x061\x14\x163676767674}\x01\x12\x14\x15\a\x04\x03\b\x1c\x0f\x10\x01\x9b\b\x05\x02\x03\v\t\f\x04\x0e\x02\x02\x01\x0f\x10\b\x01\"\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe0\x14\x1c\xd0\x01\x01\x04$\n\x02\x02\x01\x05\x02\x04\t\x06\a\x05\x01\x04\x06\t\x05\x16\v\x05\x03\x14'\x01\x01\x04\x10\x05\x02\x01\x1d\x03\x04\x06\x15\x06\x02\x03\x02\x04\f\a\x03~\x03\x0f\x0e%\x0f\x01\x02\x01\x03\a\a\x04\x01\x02\x0e\a\v\x01\x06\x02\n\x02\x0e\v\x02\f\x05\x06\x0e\x05\x12\x0e\t\x05\x04\x01\x0e\r\x10\f\x11\a\x06\x8d\x04\t\t\x04\x02\x16\x1d\x18\f\t\x01\b\v\x19\x02\x04\x02\b\x03\x11\x0f\x01\x02\x02\x01\x01\x01\x06\t\a\x01\x8b\x03\x05AH\x16\x15((\x1b\x1a92\x02\x18\x05\x03\x03\x016D #\x15\x15\x06\x03\x02\x12\x02\x16\x17 \x1f/$\x06\x02\x03\x02.\x01\a\a\n\x11\x10\x14\x0e\x02\x01\x03\x01\x01\x13\x12\v\x05\a\x06\x01\x03\x04\n\x01\x02\x02\x02\x02\b\x02\x0f\x06\x01\x01\xf6$#\x02\x01\f\x01\x02\x14\v\x11\x0f\n\x1a\x02\v\x02\r\x03\x10\b\n\x03\x03\x01\x03\x02\f\x01\x05\x04\x04\v\x02\x01\x8b\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c,\x03\x02\tY\x18\x05\x05\x03\f\x04\b\x03\x01\x01\b\x04\a\x01\x01\x01\x13\b\a2e\x02\x02\x04\x04\x01\x02\x01T\b\n\x01\x01\x0f<\x0f\x06\b\x04j\x12\t\a\x06\f\x01\a\x02\x04\x04\x02Y\x05\x06\x11\b\x04\x02\x01\x01\x03\x01\x04\x01\x05\x02\x05\x02\x05\x01\x04\x01\x03\x02\x01\x06\x05\b\x03\a\t\x02\x01\x03\x01\x01\x04\a\x0e\vT\xaf\x02\x01\x04\x04\x01\x02<\x01\x13\x06\x05\x18\x10\x15\x18\x12\x1a\x05\x01\x01\x02\n\x01\x02\x01\x01\x01\x02\x04\x01\x06\xef\x01\x02\x1b\t\x02\x01\x01\x05\x04\x06\x0e\x19\x01\r\x03\x05\x02\x04\x010\x19\v\x06\x03\x02\x01\x03\x05\n\x0f\x19\x04\x02\x03\b\x1d\x04\x03\x02\x01\x01\x03\x03\n\x01\x02\x01\x02\x02\x03\x01\x01\x02\x01\x0f\f\x0f\x17\x02\x02\x02\x01\x01\b\x03\x13\x1c\x03\x06\x05\x00\x02\x00\b\xff\xc0\x018\x01\xc0\x00\x03\x00\a\x00\x00%\a'\x13\x117\a'\x018\x98\x98\x98\x98\x98\x98\xbb]]\x01\x05\xfe\x81\\\xdd\xdd\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xbf\x01\x9e\x00\x0f\x00\x16\x00\x1d\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x17\x1537#\a5\x133'#\x1535\x01\x82\x19##\x18\xfe\xb9\x19##\x19\x1b\xbcQo>BvX\xc0`\x01\x9e#\x19\xfe\xba\x19##\x18\x01G\x19#W\x84\x84tt\xfe\xf0\x83\x83r\x00\x00\x00\x05\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x13\x00\x17\x00\x1b\x00\x1f\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x135#\x1535#\x1575#\x1575#\x15\x01\xaa\t\r\r\t\xfel\t\r\r\t\x8e(\xc8xxxxx\x01\xa0\r\t\xfel\t\r\r\t\x01\x94\t\r\xfe\xbc\xc8\xc8((P((P((\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x02\x00\x12\x002\x00\x007\x17\a%\x11\x14\x06#!\"&5\x11463!2\x16\a4'&'.\x01+\x01\"\a\x06\a\x0e\x01\x1d\x01\x14\x17\x16\x17\x1e\x01;\x012767>\x015\xbb__\x01\x05\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c*\b\x06\x1a\fG\x1e\x1dr\x1c\x1a\x06\x04\x04\b\x06\x1a\fG\x1e\x1dr\x1c\x1a\x06\x04\x04\xf666\xe6\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xc4;\x1d\x1a\x06\x04\x04\b\x06\x1a\r,\x10\x0f<\x1c\x1a\x06\x04\x04\b\a\x19\f,\x10\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00\v\x00\x00\x11!\x11!\x015!\x113535\x01\xc0\xfe@\x01f\xfe\xf4YZ\x01\xa0\xfe@\x01\rY\xfe\xf4YZ\x00\x00\x00\x00\x06\x00\x00\x00\b\x02\x84\x01x\x00\v\x00/\x00[\x00n\x00z\x00\x82\x00\x00\x13\x15\x14+\x01\"=\x014;\x012\a\x16\x1d\x01\x14+\x01\"&=\x016/\x01\"\x0e\x03\x1d\x01\x14+\x01\"5\x114;\x012\x1d\x01632\x05\x16\a\x06\a#\x06#\"'&=\x0146\x17\x163276/\x01&'&7632\x172\x1d\x01\x14'&\"\a\x06\x16\x1f\x01\x16'2\x16\x14\x06#\"'\x15\x14+\x01\"=\x014>\x02\x172654.\x01#\"\x06\x14\x16&2\x16\x14\x06\"&4\xfc\x03)\x03\x03)\x03`\x1c\x02\x1c\x06\n\x01\x18\x17\r\x14\b\x04\x01\x02)\x03\x03)\x02\x17\x1b$\x01\xf7\b\x05\t$\x01\x0e\x16\x19\x17\x0f\x03\x02\x19!\x1f\x06\x05\x125 \x05\x06\x1c\x15&\x1c\x1b\x02\x04!+\b\x05\x01\x06:\x19\xf9.?@-!\x19\x02)\x03\x17# \x0e\x1a$\x10\x1d\x11\x1a$$\x86\x18\x11\x11\x18\x11\x01\"\xc9\x03\x03\xc9\x03\r\x14#\x88\x03\t\a{\x12\x06\x03\x06\x06\v\x02\x02\x88\x03\x03\x01\x17\x02\x02Q\v\x80\x13\x14#\v\x04\b\x05\x10\"\x02\x01\x01\x13\x0e\r\b\x18\x0e\x1d\x1f\x17\x0f\n\x02-\x05\x03\r\a\x03\n\x03\x19\vi?[?\x13Y\x03\x03\xb8\x1d+\x16\t\xab%\x1a\x11\x1c\x11%3%\xf9\x11\x18\x11\x11\x18\x00\a\x00\x00\x00\x17\x02\x80\x01i\x00\a\x00\x18\x00.\x00?\x00f\x00{\x00\x8d\x00\x00\x00\"\x06\x14\x16264%2\x1e\x01\x14\x0e\x01\".\x0154>\x04\a6<\x01.\x04*\x01#\a:\x02>\x05\a732\x17\x16\x06\a\x0e\x05\"#\a73\a262\x1e\x03\x17\x1e\x03\x0e\x04\a#67>\x01'.\x03*\x04#\a#%64.\x05*\x01#\a:\x02>\x04\a732\x17\x16\x06\a\x0e\x04\"\x06\"#\a\x01\xbe\xfc\xb1\xb1\xfc\xb1\xfe\xd1W\x93VV\x93\xae\x93V\x17);GR:\x01\x05\x03\b\x05\f\x06\x0f\x03\x0e\x02\x12\x05\x0e\x05\n\x05\x06\x04x!G \x0e\x0e\b\x14\x05\n\r\b\x13\x06\x1a\x03\t\x95%\t\x04\x12\t\x0e\t\n\b\x03\x02\x04\x01\x01\x01\x01\x04\x03\x05\x03%\x03\x05\a\x01\x03\x01\x02\x03\x04\x05\x04\b\x06\n\x04\x13%\x00\xff\x01\x01\x04\x03\b\x05\f\x06\x0f\x03\x0e\x02\x14\x05\x0f\x05\v\x05\x06x!G \x0e\x0e\t\x13\x04\n\a\r\x06\x12\x06\x17\x03\t\x01X[z[[zk-M\\M--M.\x17,$ \x15\f\x9a\x05\t\a\x05\x04\x02\x01\x01G\x01\x02\x03\x06\a\ve\xa8\x10\x106\x12\x05\a\x04\x02\x01\x01,\xd5-\x01\x01\x01\x03\x03\x03\x03\x04\a\x06\f\t\x13\x0f\x1b\v\x0f\x17\"\x0f\x05\x01\x01\x01\x01`?\x05\t\a\x05\x04\x02\x01\x01G\x02\x02\x06\a\fd\xa8\x10\x106\x12\x04\x06\x05\x02\x02\x01,\x00\x00\x00\x03\x00\f\xff\xc8\x01\xf6\x01\xb8\x00\x1d\x00\x1f\x00'\x00\x00\x05\x16\x17\x06#\"#\"&462\x16\x15\x14\a&'6.\x02#\"\x06\x15\x14\x1e\x0137\x1562\x16\x14\x06\"&4\x01:\n\x03\"#\x01\x01e\x8f\x8fˏ\x14\x02\t\x04\x16*?\"B]+I+\x01%R::R:\x1b\n\x02\n\x8fˏ\x8ff3.\x03\f\"A0\x1e]A+I+\x01\x01\xa9:R::R\x00\a\x00\x00\xff\xee\x02@\x01\x92\x00!\x00-\x009\x00E\x00Q\x00]\x00i\x00\x00\x01\x1e\x01\x1d\x01\x14\x06+\x01\"\x06\a\x06\"'.\x02+\x01\"&=\x0146;\x012\x16\x17>\x013\x0354+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x0554+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x02\x10\x14\x1c\x1c\x14ZI>\f\x01\x04\x01\b\x1c=2Z\x14\x1c\x1c\x14\x8c$8\b\b8$\x92\x03\xa1\x03\x03\xa0\x04\x03\xa1\x03\x03\xa0\x04\x03\xa1\x03\x03\xa0\x04\x01\x03\x03\xa0\x04\x04\xa0\x03\x03\xa0\x04\x04\xa0\x03\x03\xa0\x04\x04\xa0\x03\x01\x92\x01\x1c\x14\xf5\x14\x1c#(\x02\x02\x1b\x1f\x11\x1c\x14\xf6\x13\x1d.##.\xfe\xf6\x17\x03\x03\x17\x03@\x17\x03\x03\x17\x03@\x17\x03\x03\x17\x04v\x17\x04\x04\x17\x03@\x17\x04\x04\x17\x03@\x17\x03\x03\x17\x04\x00\b\xff\xf2\xff\xbc\x01\x89\x01\xc0\x00\x12\x00'\x00=\x00O\x00h\x00v\x00\x82\x00\x92\x00\x00%\x06'&767>\x01;\x010\a\x06\x17\x16?\x01\x06'.\x0367>\x03'0\x17\x16\a\x0e\x01\x1e\x027\x0e\x02\x1e\x01\x17\x16\x17\x16\x06\x0f\x01>\x03&'&76\x136'&'\"\a\x06\a676\x17\x16\a\x06\a6\x17\x16\a\x06'&'&7672\x17\"\a\x06\a\x14\x17\x1667>\x01/\x010\a\x06\x17\x167\x16\x17\x06'&76\x17>\x01?\x01\x0e\x01'&'\x1667\x16\x17\x06'&767\x0e\x02\x14\x16\x17\x16\x01\x16Of9\x04\x01\b\x14(\v\n)\x1d%)RM\r`\x10\x16\x15\t\x01\a\v0%\x16\a\n\x15R\x17\x15\x06\f\x16w %\x11\x02\a\t\x03\x01\v\x0f\x0f\x0f\x01\x04\b\x04\x04\a=e\x1a\x14C\n\x06\x16\x04\x05\x05\x06\x04\x05!\x14\x14\x19\x15/\x010\x1b'G\x8822+\x1a\x19!\v\x04\a\v\x1e\x02\x05)\xcd.\x0e\b\x03\xe3\x05\x02\x1546\x0e\x0fEF$\x02\x01\xcb\x1f&\x04\x03\x02\x98S4\x14(\x89\r\t\fYK$\x03\x02\x19\x01\x02\x04\t\nB\x87\x15\t\x05\f\x03\x04\n\t\f\r\x05\x05\x06\v\x06\x19\x0f\x16\x1a\x16\x17\n\x10(\x1c2\x1d\x107@\x13\"\x1e\x17\x1e\xa6\x12\x1d\x14\x17\r\r\x03\x02\x15 \n\n\x01\x04\f\f\x11\bG2\f\xfe\xf9##\x14\x02\x01\x01\x02\x05\x02\f\x18\x17\x1c\x16\r\x01<\f\x10\x1c\x06\x03\b\a\x11\x12\x01\x03\x02\a\t\x03\x02\x10\x02\x0e\x05\n\x03-\x06\a\x02\x06\n\b\x05\x1e\x11\b\r\tZ\x06\x0f\x04\x04\x1d\x17\x06\x03\n\b\x01\x97\t\x04\x1a\x0f\a\r\t\b\x01\x02\x06\x05\x05\x01\a\x00\x00\x00\x00\x01\x00\x00\xff\xd8\x02\x80\x01\xa8\x00G\x00\x00\x01\x0e\x04\x15\x0e\x01\a\x0e\x021\x06\a&\x0e\x06\a7>\x04\x16\x170\x161\x16\x0f\x01\x06'&\x0e\x02\a\".\x0154327>\x0132\x1e\x03\x1770>\x027>\x02\x02\x80\x17\"\x14\v\b\x03\x0e\a\x05\x19$\r\x1d\x14&\x1c'\x13,\f5\x06+\x0e:\x193'<#\x02\a\x045\x05\t)bBU\x1c!1\x10\x02&A5f7\x03\n\x1b\x16\x18\x05\x1c\x11\x12\"\x12\x172\x1a\x01\xa7\x0f\x1d\x19\x11\x11\x01\x05B\r\n\x14\x14\t7\x01\x04\x03\x0f\x06\x18\a \x04\x11\x05\x18\t\x0e\x03\x01\x05\x01\x04\x06`\b\x02\t\x04\v\f\x01\x11\x10\x02\x02\x0ffX\x01\a\v\x1a\x111!\"4\x16\x1e(\x0e\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\x0e\x00\x14\x00 \x00-\x00\x00%\x15#\x15#5#546;\x012\x17\x16'42\x15\x14\"72\x16\x15\x14\x06#\"&546\x17\"\x06\x15\x14\x1632>\x0154&\x01;\x1cM\x1d\n\x06f\x06\x05\x05fEE#i\x8f\x94df\x92\x8ejVuwT4]:v\xfefxxf\x06\n\x05\x059##\"\x9d\x90hk\x8d\x91ge\x93-zQSx2^;Uv\x00\x00\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00)\x00B\x00\x00\x132\x16\x15\x14\x06#\"&546\a\x06\x15\x14\x1632>\x057'\x0e\x01\a\x15#5\"'7\x1e\x0174'&7\"\a\x17>\x01753\x15\x16\x17\a&\a\x06\x17\x16\x1f\x01654'&\xf8i\x8f\x94df\x92\x8eV\vxS\x19/\"\x1f\x13\x11\x04\x02]\x06'\x18\x1d)\"\"\x19=\x01\a\x1c\x01j@_\a$\x14\x1d\"\x1c #\x1c\x10\t0-\u007f\x06;;\x01\xb8\x8fik\x8d\x92fe\x93\xb5\x1f$Sw\v\x11\x18\x13\x17\x06\x04)\x19\x1c\x02&&\x1e\"\x16\x01\x19\n\x06\f\xde]+\x16\x15\x01''\x01\x15\"\x19\x0f\b\r\x15\x149\x1a\x1bV:<\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\x0e\x001\x003\x00M\x00\x00\x132\x16\x15\x14\x0e\x03#\"&546\x132>\x03741'#\x16327\x17\x06#\"&'#53<\x015#53'\x06\x15\x14\x167#7\x17654&#\"\a\x1767632\x17\a&#\"\a\x06\a\x173\x15\xf8i\x8f\x1a0>J&f\x92\x8ej!<%\"\n\x05\x80[\f8\x1b\x14\n\x1c%-G\b\x1b\x17\x17\x04A\vxC\x01N\x88\x06vUl>Q\a\a&:\"\x1c\v\x18\x16!\x13\x04\x04\x1cF\x01\xb8\x8fi+N<,\x17\x92fe\x93\xfe=\x15\x19#\x0f\b\x0182\v.\x1050\x1e\t\t\x01\x1e\x1d\x1f#Sx\xbf\x13<\x19\x1cUv]$\v\t*\f0\n\x16\x05\t\r\x1e\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00!\x00%\x00:\x00\x00\x132\x16\x15\x14\x06#\"&546\x1327'\x15#\x15#5#535'#53'\x06\x15\x14\x167'\a\x157\x17654&#\"\x0e\x02\a\x17'3\x1f\x0173\a3\xf8i\x8f\x94df\x92\x8ejlDR@=@@\x06:\x1c\u007f\tx\xab7\x03@e\bvU :*\x1e\vQ\x1bB(\x17+B?&\x01\xb8\x90hk\x8d\x92fe\x93\xfe=c$$88'\x12\f'8\x1c Sx\x8a\x18\x06\x123-\x1c\x1fUv\x11\x1f\x1f\x13$3V\n`t\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00\x18\x00\x1c\x00 \x00\x00\x132\x16\x15\x14\x06#\"&546\x17\"\x06\x15\x14\x1632>\x0154&\x17\x15#5\x17\x15#5\xf8i\x8f\x94df\x92\x8ejVuwT4]:v\t\xb4\xb4\xb4\x01\xb8\x90hk\x8d\x91ge\x93-zQSx2^;Uv\x90++P**\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00#\x007\x00\x00\x122\x16\x14\x06\"&4\x132>\x017&'\x14\x1e\x01327\x17\x06#\".\x02547'\x06\x1e\x02703654&#\"\x06\a\x17632\x17\a&\x06\a\x91Α\x91Α\xf8%E5\x12\x01\xd9\v\x19\x12\x15\x0f$!.\x14&'\x18\x04O\x13\x133X\xf5\x01\awS4Y\x1bJ!D. (\x0e0\r\x01\xb8\x91Α\x91\xce\xfe\xcf\x1b/\x1f\x01`\x11 \x17\x11,\x1d\f\x1b4#\x11\x10#0`L0\x96\x1a\x1aSw2*!4\x1c)\x10\x04\x18\x00\x00\x00\x00\x06\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00\x18\x00\x1e\x00(\x004\x00;\x00\x00\x132\x16\x15\x14\x06#\"&546\x132>\x0154&#\"\x06\x15\x14\x16\x132\x14+\x015\x17254.\x02+\x01\x15'2\x15\x14\x0e\x02+\x01\x15#5\x1726&+\x01\x15\xf8i\x8f\x94df\x92\x8ej4]:vUVuw\x99FF56\"\t\x0f\x06\x05\x13^2\x03\n\x19\x13\x1b\"?\r\f\f\x0e\x1c\x01\xb8\x90hk\x8d\x91ge\x93\xfe=2^;UvzQSx\x01\x11\x89\x89l'\x0f\x12\x06\x01Ol.\x06\f\x12\v,\x89C\x15\x14)\x00\x06\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00\x18\x00,\x003\x007\x00;\x00\x00\x132\x16\x15\x14\x06#\"&546\x17\"\x06\x15\x14\x1632>\x0154&\x1f\x01\x15\x0e\x02#\".\x01'\a'57457\x17\x15\a5#5'\x15\x17?\x01'\a\x175\a\x15\xf8i\x8f\x94df\x92\x8ejVuwT4]:vM\x05\x03 \x1e\x02\x03:D\t@?;C\x98\x15\x01qq\b(%'Y-\x01\xb8\x90hk\x8d\x91ge\x93-zQSx2^;Uv\xcf\x03F\x01\x0e\r\x18\x1c\x04\x1b\x1c@\x18\x01F\x1d>>f,\x02.-/:\x10\x10\x115+\x13+\x00\x00\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00\x18\x00<\x00\x00\x132\x16\x15\x14\x06#\"&546\x17\"\x06\x15\x14\x1632>\x0154&\a>\x0332\x1e\x02\x15\x14\x0e\x01#\".\x01'3\x1632654.\x03#\"\a3\a'\xf8i\x8f\x94df\x92\x8ejVuwT4]:v\xc3\x04\x1b$\x1c\x0e#5\x1b\f\x1b<*\x16+'\x05>\x034\x16$\v\r\x14\b\x052\x06\x1211\x01\xb8\x90hk\x8d\x91ge\x93-zQSx2^;Uv\xa8\x1d*\x12\a\x1b++\x16!;(\x0f.$.(+\x17\"\x0f\b\x01,11\x00\x00\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00\x18\x00s\x00\x00\x132\x16\x15\x14\x06#\"&546\x17\"\x06\x15\x14\x1632>\x0154&\a2\x16\x15\x17742\x15\x14\x177632\x15\x1776;\x01\x15#\a\x06&/\x01\a\x06#\"'4'\a\x06#\"'4'\a\x14\"5'\x06\x15\x06#\"'0&5'\a\x06#\"/\x01\x06+\x015376\x16\x1f\x0174632\x15\x1774>\x012\x1e\x01\x15\x1776\xf8i\x8f\x94df\x92\x8ejVuwT4]:vQ\x04\b\x06\x05\x15\x06\x06\x01\t\n\f\x05\x03\b:3\x13\x03\x10\x01\x04\b\x01\t\n\x01\x06\x05\x02\t\t\x01\x06\x06\x15\x06\x05\x02\t\t\x01\x01\x06\x05\x01\n\b\x02\v\x04\a4-\x0e\x03\x0f\x02\x03\b\x06\x05\n\x05\a\x05\x04\x02\x04\x06\x05\x06\x01\x01\xb8\x90hk\x8d\x91ge\x93-zQSx2^;Uv5\x05\x06l<\n\n\x02P@\n\ta\r\a\x16,\b\x02\t \\\n\n\x01LH\t\t\x01W_\f\fWT\x01\n\n\x01\x01Y9\t\tL\b\x15\x1c\a\x02\b\x14b\x04\x06\fE\\\x05\x05\x01\x01\x05\x05Pb\n\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00\x18\x00_\x00s\x00\x00\x132\x16\x15\x14\x06#\"&546\x17\"\x06\x15\x14\x1632>\x0154&\x173\x15#\a\x06&/\x01\a\x06\"/\x01\a\x06\"5'\a\x14\"/\x01\a\x06\"/\x01\a\x06\"/\x01\x06+\x015376\x16\x1f\x01762\x1f\x01742\x1f\x01762\x15\x177>\x01\x1f\x01742\x1f\x0176\a24+\x0154\"\x1d\x01#\"\x14;\x01\x15\x142=\x01\xf8i\x8f\x94df\x92\x8ejVuwT4]:v\x16;3\x12\x03\x12\x01\x03\x06\x01\x16\x01\x04\x05\x01\x16\x05\x05\x16\x01\x05\x04\x01\x16\x01\x05\x04\x01\x15\x01\v\x03\a3+\x0e\x03\x11\x02\x01\b\x01\x15\x01\x04\x06\x16\x01\x04\x05\x01\x16\x06\x04\x01\x15\x01\x05\x05\x15\x02\v\x04\x02F\b\b\x15\x10\x15\b\b\x15\x10\x01\xb8\x90hk\x8d\x91ge\x93-zQSx2^;Uv\xcd\x17,\b\x03\b\x17S\v\v@:\v\vHQ\v\vIF\v\vN+\v\nI\x06\x17\x1c\a\x02\t\fZ\n\n9P\v\vCT\v\v^-\n\x01\vE3\v\n]\t\b\x06\x10\x15\b\b\x15\x10\x15\b\b\x15\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00\x18\x004\x00<\x00@\x00\x00\x132\x16\x15\x14\x06#\"&546\x17\"\x06\x15\x14\x1632>\x0154&\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01#\".\x02=\x014732\x1e\x01\x1d\x01\a354735#\x17#\x153\xf8i\x8f\x94df\x92\x8ejVuwT4]:v\x10\x06\b\b\x06\x87\x05\b6\x03\x05\x04\x02\f\x89\x03\a\x03\x87)\f7l\xb0ll\x01\xb8\x90hk\x8d\x91ge\x93-zQSx2^;Uv\x84\b\x06\xb6\x06\b\b\x066\x02\x03\x06\x02\xb7\v\x03\x04\x06\x046se\f\x02(C\x9c\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\v\x00\x18\x00(\x001\x009\x00\x00\x132\x16\x15\x14\x06#\"&546\x17\"\x06\x15\x14\x1632>\x0154&\x062\x1e\x02\x14\x0e\x02\".\x024>\x01\x17\"\x15\x14\x1776'&\x17\a\x06\x163254\xf8i\x8f\x94df\x92\x8ejVuwT4]:vr:*\x16\t\t\x16*:*\x16\t\t\x16G,\x026\b\v\x05%=\t\x10\r,\x01\xb8\x90hk\x8d\x91ge\x93-zQSx2^;Uv<\x1a+/6/+\x1a\x1a+/6/+\x1cY\x14\x0ed\r\t\x01.i\r\x0eY\x19\x00\x00\x00\x00\x05\x00\x00\x00?\x02\x80\x01A\x009\x00A\x00M\x00a\x00f\x00\x00\x013\a#7'\x16\x1d\x01\x14\x17#&5\x06#\"&547\x0e\x01#\"'\x14\a#6=\x013\x15632\x16\x15\x14\a672354#\"\a#632\x17'3\x17\x04264&\"\x06\x1475\"\a\x06\x15\x14\x1e\x01326%\x1e\x01673\x0e\x02#\"&54632\x16\x1d\x01'.\x01\x06\a\x02^\"c$\x1c=\x05\x01\x1e\x01\x15)\x1d \x01\x06(\x1b'\x14\x01 \x02 \x14&\x1e.\x02\nC\x12\x18)!\x02\"\x04C0\x10\v%7\xfe\xb6-\x1c\x1c-\x1b\xfb\x18\x10/\a\x10\f\x19\x1b\xfed\x01)+\x06!\x03\x19\x1d\x11*)*)$+\"\x01--\x04\x01\x02\xc26t\n\x0eB\x0f\v\t\v\x1a\x1a\x13\x05\x04\x18\x1e\x19\t\n\x16\v\xa9P\x18($\t\b!\x02\x04!\x16+\x1a\x14m\x0f\x1e0\x1e\x1e0\x12\x03\x01\x01\x18\a\v\b\x1a\x15\x1b\x18\f\x11\x10\x16\b)!$*&&\b\x15\x1a\x16\x15\x1b\x00\x00\x00\x05\x00\x0e\xff\xdc\x01\xb2\x01\xa0\x00\a\x00O\x00`\x00\x8b\x00\x93\x00\x00$2\x16\x14\x06\"&47\x16\x15\x14\a\x06'.\x017654'\"\x15\x061\x0e\x01'&\x06\a7\a\x16\x17\x16\a\x06'&'\a54>\x02767'.\x01?\x0147632\x172\x176?\x01\x17\x06\x176\x17\x1e\x02\x14\a\x16\x17\x16'67'&\x0f\x01\x14\x163\x17&545'7\x17654/\x01&#\"\a\x06\x15\x14\x1f\x01\a\x06\x15\x14\x17\x16\x17\x1632?\x01\x17\a\x06\x15\x14\x1f\x01\x1632?\x01\x17\x1632\x062\x16\x14\x06\"&4\x01\x17\x0f\n\n\x0f\v\x82$\x0f\x05\r\x05\x05\x01\x0f\x02\x01\x01\r.\x1a<\x84,\x18.\x03\f\a\n\r\a\n\x05\x17\x02\v\x1b\x17\x14\x1a\t\x15\x1c\x01\x03\x0f\r\x16\x02(\x04\x04\b\x10\x06\x17\r\x03\x0e\x13\x0e\x19\x0e\x06\n\t7\xe0\x03\x04\x1d\f\x01\x02\x06\x05\x17\x01\r\x02\xa4\x04\x02R\x03\x04\x04\x03\x04\x02\x13\x11\x03\x02\x01\x03\x02\x03\x03\x02\x11\x0e\"\x03\x01\x10\x03\x03\x03\x02#\t\x04\x04\x04l\x0f\n\n\x0f\v\x1d\v\x0e\v\v\x0e\x9f5:0'\r\x02\x01\n\x05&,\x0e\x0e\x01\x02\x13\f\a\x11\x17!K<\x1c\x19\x10\x04\x06\r\x12\x13\x1d!\x1d\"70\x17\x15\x0e\x01\x01\x1e\x15$\x12\x0f\r\x02\x01\f\x16\b\x0e\x19\n\x01\x06\x05\x18\x1e\x1f\x0e\x04\x04\x18]\n\n\x01\x01\f%\x05\a\x02\x06\x06\x04\x04\x01\x15\xad\x03\x05\x03\x03`\x04\x03\x03\x04\x03\x03\x16\r\x03\x03\x03\x02\x01\x03\x03\x02\r\x11\x1b\x02\x04\x02\x02\x13\x03\x02\x1b\v\x04t\v\x0e\v\v\x0e\x00\x00\x00\x00\x02\x00\x0e\xff\xdd\x01\xb2\x01\xa1\x004\x00`\x00\x00\x01\x16\a\x0e\x01\a\x06'\x14\x17\x1e\x03\x172>\x0473\x17\x06\a\x06'.\x0645454>\x02?\x0162\x17\x1e\x04\a<\x03.\x03'&\x06\x0f\x01'.\x01\a\x0e\x03\x1c\x02\x1535476\x17\x16\x1d\x0135476\x17\x16\x1d\x01\x01\xb1\x01\n\x05A)fM\x01\x02\x10\x1d\x17\x14\b\x11\x0f\x0e\n\b\x03\x02\x01\x1c316\x14\x1f\x16\x0f\n\x06\x02\r\x13\x13\x06\a.\xc5/\x03\b\x16\x11\x0eK\x01\x02\x05\x06\x05\x12D\x11\f\f\x11D\x12\x06\x06\x05\x02/\x18\x18\f\x04.\x1a\x17\v\x04\x01\rH2\x18,\x05\f\x13\a\a\x11\x17\n\x03\x01\x01\x02\x02\x02\x02\x01%\x0f\x03\x02\x0e\x05\x13\x1e\x1c-\x1f7\x1d\x1d\f\x06\x1b.\x1b\x13\x03\x04\x15\x15\x02\x05\x14\x1a.\x98\x12-\x18\x1d\x0e\x12\v\n\x06\x16\x01\x1b\x14\x14\x1a\x02\x16\x06\v\x12\r \x174\x14r\x1f\x05\x06\x19\v\r??$\a\x06\x16\b\fr\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x02E\x01\xa0\x00\x13\x002\x00E\x00K\x00\x00%\x14\a\x17#'\x06\a\x15#5.\x0154632\x1e\x01\x05\x14\x16\x1753:\x01\x1e\x04\x15\x14\x0e\x02\x0f\x01\x16\x17\x16\x17654&#\"\x06\x172\x162>\x0354.\x04*\x01\x06#\a\x1527&#\x02EXCp(!%cf\x89\xaaxO\x86N\xfe-E8\xc7\x02\a\x13\x11\x15\x0f\n\x12\x19\x1a\t\t\x12\n\x03\x04Ft`[\x82\xe1\b\x19\r\x13\t\n\x04\x02\x05\x05\v\t\x0f\f\x15\b\x01\x1c\x17\r\v\xddR9rK\t\x04>>\flGQr4ZC'A\x10\xd0\x04\x06\r\x12\x1d\x12\x18%\x12\v\x01\x01\x06\x05\x01\x03#HBCN]\x01\x01\x03\x06\v\b\x06\b\x06\x04\x02\x02\x01\x80\x16\x03\x13\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00<\x00_\x00i\x00\x00\x11!\x11!%5\"'&'>\x0154&#\"\x06'\x152\x162\x1e\x02\x14\x16\x1d\x01\x14\x06\x14\x0e\x04#\x1523235\".\x054=\x01\x163\x16\x17\x1e\x0172>\x03<\x011#\x153\x14#\"=\x014632\x16\x1f\x0174.\x01#\"\x06\x1d\x01\x14\x16\a\"'5632\x15\x14\x06\x01\xc0\xfe@\x01\x06\r\x0e\x17\x13\x11\x16\x1f\x19\x02<\t\x02\a\x02\x06\x01\x03\x01\x01\x03\x02\x05\x02\a\x02\x1e\x04\x11\x12\x02\t\x02\x06\x02\x03\x01\x06\x0f\x17\x13\v$\x1a\b\f\a\x05\x02\x1e\x12\x16\x12\r\a\x06\n\x02\x02\n\x03\x10\v\x11\x11\x10d\n\n\x06\x10%\x15\x01\xa0\xfe@r\a\x0f\x19!\x04\x1c\x10\x16\x18\x02\x01\b\x02\x02\x02\x03\x04\a\x04m\x05\x06\x04\x04\x02\x01\x01\x01\b\b\x01\x01\x01\x02\x03\x05\x06\x05.\x01*\x15\r\x06\x8c\x02\b\x05\x0e\x03\x11\n\x1b\x17\x1b\t\v\x06\x04\x03\b\x02\x05\n\x13\v \x0e\x12-\x01E\x01#\x10\x14\x00\x00\x04\x00\x00\xff\xbc\x02\x00\x01\xe0\x00\x0e\x00#\x00[\x00g\x00\x007\x06\a\x06'&'&7>\x01\x17\x16\x17\x16\x17\x16\x17\x14\x0e\x01\a\x06'&'47>\x0376327\x14\a\x0e\x01'&5<\x025&'&\"\x0e\x01\a\x0e\x01\x16\a\x06#\x06&=\x0176767676'&7676\x170\x17\x16\a\x06\x17\x1e\x01\x17\x16\x17\x16\a'.\x0167276\x17\x16\x06\xf4\x03\x13\v3\x1d\x0e\x16\a\x04\x1a\x10\x1c$#\xca\v\x01\x10\x0f\x10(f4\x012,E%\x11\x05\x01\x04\x02?\x01\x03 \x12\t\x03d(\\N;\b\x03\x01\x01\x01\x01\v\x17\x1d\x01\x03\x16\x05\x01\t\x1e\x04\x03\x04\a,:\x90m\x01\x0e\b\x01\x03\r\x17\x04\x01\x05\x1a\x9f4\x0e\x0f\x12!\x01\x04Q\x02\x01!e\x11\a\x04\x03\x02\x16\"(\x12\r\b\x0e!!%\b\x18\x17$\x0e\f\x1f\x04\x03\a\a\x04\x03\x1e,\x1e\x0e\x04y.\x06\x12\x16\x03\x03\f\t\"\x1d\fs7\x16%G.\r\x1f+'\v\x01\x1b\x17\x15\x1a\x18\n\x03\x051+\x05\x04\a\b1\x12,i\x01\f\v\x01\x04\x117\x16\x04\x02\r\xa1\b\x04\x10\x1c\r\x02 *\x1a%\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00c\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%\x06\a'\x17\x06\a'\x17\x06\a'\x17\x06\"'7\a&'7\a&'7\a&'7\a&47\x17'67\x17'67\x17'67\x17'62\x17\a7\x16\x17\a7\x16\x17\a7\x16\x17\a7\x16\x14\a'\x91Α\x91Α\x95ƍ\x8dƍ\x95\xb6\x81\x81\xb6\x81\x84\xb0||\xb0|\x01\x8e\x06\x0eJ=\x10\x157$\x17\x19\x1c\x05\r\x1a\r\x04\x1b\x1a\x17$6\x16\x10>J\x0e\x06MR\x02\x02SN\x06\x0eJ=\x10\x157$\x17\x19\x1b\x04\r\x1a\r\x05\x1c\x19\x17$7\x15\x10=J\r\aNS\x01\x01R\x01\xb8\x91Α\x91\xce\xfe\xa9\x8dƍ\x8d\xc6\x01?\x81\xb6\x81\x81\xb6\xfe\xd1|\xb0||\xb0'\x19\x17$7\x15\x10=J\x0e\x06NS\x02\x02SN\x06\x0eJ>\x11\x157$\x17\x19\x1c\x05\r\x1a\r\x04\x1b\x1a\x17$6\x16\x10>J\x0e\x06MR\x02\x02RM\x06\x0eJ>\x10\x166#\x16\x1a\x1b\x04\r\x1a\r\x05\x00\x00\x04\x00\x19\xff\xc0\x01'\x01\xc0\x00\x03\x00\v\x00\x0f\x00\x17\x00\x00\x13\a'?\x01\x15\a\x17\x15/\x01?\x02\x17\x0f\x015\x1f\x01\x0f\x0157`$##T))\x1433d#$$T\x1533\x15)\x01\x1c,,+y\xd3--\xd3\xc6::\"++,\x03\xd3\xc6::\xc6\xd3-\x00\v\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x16\x00\x1c\x00D\x00L\x00R\x00X\x00^\x00d\x00j\x00\x00\x04\"&462\x16\x14\x02\"\x06\x14\x16264'\x16\x17\a.\x01/\x01\x15\x06\a'6\x173\x15\x16\x177\x17\a\x16\x173\x15#\x06\a\x17\a'\x06\a\x15#5&'\a'7&'#5367'7\x176?\x01\x16\x17#.\x02'%\x17\x06\a#6\a3\x16\x17\a&%3\x06\a'6\x05\x16\x17\x15&'7\x17\x06\a56\x01_Α\x91Α\x98\xc0\x87\x87\xc0\x87\xcb8-\x12\x0f1\x138.%\x12-D \x0e\r;\x16;\t\x03RR\x03\t;\x16;\r\x0e \x0e\r;\x16;\t\x03RR\x03\t;\x16;\f\x0f\xb8\"\b\x19\x02\n\x0f\b\xfe\xc2\x12\x1c\a\x19\b\b\x19\a\x1c\x12\"\x01\x83\x19\b\"\x12\x1c\xfe\xdf%.8-\xf0\x12-8.8\x91Α\x91\xce\x01N\x87\xc0\x87\x87\xc0r\b\"\x12\f\x14\x03\x19\x19\a\x1c\x12\"+R\x03\t;\x16;\r\x0e\x1f\x0f\r;\x16;\t\x03RR\x04\b;\x16;\r\x0e \x0e\r;\x16;\t\x034-8\f \x1d\n\x12\x12%.8p.%\x12-88-\x12%L\x1c\a\x19\b\"\x12\x12\"\b\x19\a\x00\x00\x00\x00\b\x00\x00\xff\xe3\x02\x00\x01\x9f\x00\x1a\x002\x00J\x00s\x00{\x00\x83\x00\x8b\x00\xaf\x00\x00\x133\x15\x1e\x01\x17&=\x014'&'&\"\a\x06\a\x06\x17\x15\x14\a>\x027\a\x06\a\x06\a\x06#C\x1626&'67\x1e\x016&'67\x16\x17\x0e\x01\x1667\x16\x17\x0e\x01\x1627\x16\x17\"\a\"'&'.\x012\x1d\x01\x14\x1632\x1e\x01\x17\x15\x06\a.\x01#\x0e\x01\a\x06\"'.\x02#\"\x06\a&'5>\x02326=\x01\x16\"\x06\x14\x16264&2\x16\x14\x06\"&46\"\x06\x14\x16264\a2\x17\x16\x173\x1627367632\x17\x06\a&#\x0e\x01\a\x15\x06\"'5.\x01'\"\a&'6\xfa\f\n\x0e\x01\x13\x03\x01\x01\x03\b\x03\x01\x01\x03\x01\x14\x01\x06\v\a\x1a\x03\x01&\b\r\x1c\f\x0e\x03\t\v\x15\a\v\v\r\x11\b\x12\f\x01\a\rO\x0f\r\a\x01\f\x12\b\x11\r\v\v\a\x15\v\t\x03\x0e\f\x1c\r\b&\x01)\f=!(&?\x0f\x0e\x13\n:(!1\t\f\x18\f\x06\x19&\x16(:\n\x13\x0e\x0f?&(!=\x17\"\x18\x18\"\x187\x1c\x13\x13\x1c\x13,\x16\x10\x10\x16\x10\x8e\x1b\x16\x17\x1a\x01\b\x10\b\x01\x1a\x17\x16\x1b\x14\n\x02\x05\x0e\r\x1f*\x06\x10 \x10\x06*\x1f\r\x0e\x05\x02\n\x01\x9f\x1b\x0fxP\x1a\x16\x11\b\b\x04\x02\x03\x03\x02\x04\b\b\x11\x16\x1a5[=\ny!'\x13)\x04\x06\x16\x14\x06\v\x12\a\x12\r\f\v\a\x16\f\x06\x03\x03\x06\f\x16\a\v\f\r\x12\a\x12\v\x06\x14\x16\x06\x04)\x13&\x19\x14\x11\x1f@\x01\x0e\x0e\x02\x1a\x16\x11\x18\x01\x17\x11\x03\x03\v\x12\f\x18\x11\x16\x1a\x02\x0e\x0e\x01@\x1f\x11L\x18\"\x18\x18\"\x10\x13\x1c\x13\x13\x1c\r\x10\x16\x10\x10\x163\n\x1d\x04\x01\x01\x04\x1d\n\x02\x13\n\x04\x01+\x1f\x05\x03\x03\x05\x1f+\x01\x04\n\x13\x02\x00\x00\x00\x00\x01\x00\x00\xff\xde\x01\xc1\x01\xa6\x00r\x00\x00%>\x027\x14\x0e\x05\a#.\x05/\x01\x1e\x01\x1f\x01.\x02>\x02?\x01\x0e\x01\x1e\x01\x1f\x01.\x01>\x01?\x01\x0e\x01\x1e\x01\x1f\x01\x0e\x01\x1e\x03\x1f\x0167\a7'7'\x17\x12=\x01\x155\x15\x14\x137\a\x17\a\x17&'\x17>\x03&'>\x03&'\x1e\x05\x06\a>\x034'\x1e\x03\x06\x01\x8e\x03\n\x1b\n\x02\f\x11#,F*\x04*E-\"\x12\v\x01\x02\v\x18\b\a\x14\x17\x05\x02\n\n\x04\x04\f\x01\x11\x15\b\t\x1d\n\x1d&\x10\x10\x1b\x12\x0e\x15\n\n\x11\v\t\x15\x1b\x17\t\b\x01\x01\"\x18??\x14\x1f\b\b\x1f\x14??\x18\x1e\x04\x02\x06\x14,\x19\x02\x18\x04\r\x1b\n\x11\x1b\x03\f\x1e\x18\x16\a\x10\x16\x04\v\x19\x0e\f\x03\t\x11\x03\x17J\x02\t(\x1b\x04\r&#+\x1e\x16\x01\x01\x15!''!\n\n\x1b'\x06\x06\x195,* \x19\x06\a\x185)#\t\t0[>0\v\v\x1460+\r\f!<-'\x1a\x13\x04\x04\x11D$0\t\t7.\x01.\x05\x03\x01\x01\x03\x06\xfe\xd3.7\t\t0 \x04U\x03\v*1P-\x05\x101-7\x14\x02\b\x1b\x1f13D#\x03\r&'5\x19\x05\x1044J\x00\x05\x00\x1b\xff\xbf\x01\xa6\x01\xc0\x01{\x01\x94\x01\xb0\x01\xc5\x01\xd7\x00\x00\x17&76567<\x01'45&'&54545&567>\x01767>\x01�\x06\a\x06\a\x06\x14\x1e\x01\x15\x14\x15\x06\a\x14\a\x14\a\x06'&5&'&7674'&'&\a\x06\a\x15\x17\x16\x17\x16\x15\x14\x17\x16\x06\x17\x16\x17\x14\x17\x16\x15\x14\a\x06\x15\x14\x15\x06\a\x06'&676567>\x0175'&'&/\x017<\x015/\x01.\x02454'&'\"'&'&?\x01'&'&'414767676\x16\x17\x16\a\x06\x15\x14\x17\x16\x17\x16\x17\x16\x17\x16\x17\x16367654'45&5&'&'&'&'&'&'&'&/\x015'7>\x0132\x17\x16\x14\a\x06\a\x14\a\x06\x15\x16\x17\x1e\x01\a\x06\x15\x17674&'&76\x172763676\x17\x1e\x01\x17\x1e\x01?\x0132?\x01\x17\x1e\x01\x06\x17\x16\x17\x16\x15\x16\a\x06\x15\x06\x15\x06\a\x06#\"\x15\x06\a\x06\a\x06\a\x06\a\x06\a\x06\a\x0e\x01\a\x06\x16\x17\x16\a\x06\x17\x16\a\x06\x15\x14\x16367>\x01767676767467676\x15\x14\x15\x06\a\x15\x1f\x01\x15\x14\x17\x15\a\x06\a\x06\a\x06\x0f\x02\x06\a\x06\x15\x141\x14\x17\x16\x17\x1e\x01\x14\a\x06#\"\a\x06\x15\x06\a\x06\x17\x16\x0f\x01\x15\x14\x17\x16\x15\x06\x17\x14\x1e\x01\x1d\x01\a\x0e\x027&54'&54'&5476\x15\x16\x17\x16\x14\a\x06\x15\x16\a\x06'.\x01'4'4'&54'&436\x1f\x01\x15\x06\x15\x14\x06\a\x06\x0f\x010\x03\x1e\x04\x17\x16\x17\x06\a\x06\x1e\x017\x06&'.\x016\x17\x166'&'67\x1e\x04\x17\x16\x0e\x01&\xe8\x02\x01\x01\x02\x02\x01\x01\x02\x01\x04\x01\x01\x05\a\x02\x01\x03\x01\x01\x01\x01\x04\x06\f\x01\x01\x01\x03\x01\x01\x01\x02\x01\x01\x01\x01\x02\x05\x04\x01\x01\b\b\x02\x03\x02\x02\x01\x02\t\x05\x04\x02\x01\x01\x02\x01\x01\x02\x02\x01\x02\x01\x02\x01\v\x04\x02\x02\x01\x01\x02\x01\x01\x01\x02\x02\v\v\x02\x02\x01\x01\x04\x02\x02\x02\x01\x01\a\n\x0e\f\x02\x02\x02\x01\x02\x01\x01\x04\x02\x01\x03\x01\x05\x06\x02\x06\x01\x02\x02\x01\x03\x04\v\x02\x02\x11\x06\b\x02\x03\x03\x02\x01\x02\x02\x01\x04\x01\x03\x02\x02\n\b\x06\x01\x05\x04\x01\x01\x01\t\x03\x02\x01\a\a\b\a\n\x02\x01\x01\x01\x01\x05\x02\x05\a\x05\x01\x03\x01\v\a\x02\x0f\x01\x02\b\x04\x05\x02\x05\x04\x04\x03\x03\x04\x02\x03\x06\x03\x03\x05\x04\x05\n\v\x05\x04\x03\x02\x05\x02\x01\x01\x01\x01\x01\x03\a\x01\x06\t\v\x05\x04\x02\x02\x03\x02\x01\x01\x02\x01\x03\x04\x06\x02\x01\x02\x01\x02\x01\x01\x02\x02\x02\x04\x02\x02\x01\x03\x02\x02\x03\x01\x05\a\x05\x05\x05\x05\t\x06\t\x04\x05\x01\x01\x04\x05\x01\x01\x04\x05\x01\x06\f\x05\x03\x01\x04\x05\x02\a\a\x02\x05\x02\x01\x01\x01\x02\x01\x01\x03\x04\x01\x01\x01\x01\x01\x03\x05\x10\x04\x02\x04\x01\x02\x01\x01\x01\x02\a\a\x1e\x01\x02\x01\x02\x03\x05\x05\x01\x02\x04\x02\x01\x01\x03\x01I\x01\x02\x01\x01\x01\x03\x01\x01\x01\x02\t\x05\x01\x01\x01\x01\x01\x01W\x05\t\x04\x03\x04\x03\x13\x04D\b\x0e\x02)!\nI\x0f\x0e\x02&\xf9+\x1e\x1a\x1b%\x05\x19\x19&\x11\v\x01\x01\x01\x19#%@\a\x12\x16\x06\x14\x02\x01\x1c\x04\x05\x10\x13\x05\x03\t\x02\x02\x04\x05\x17\n\a\x03\b\x1f\x05\b\a\x03\b\x05\x06\x04\t\x04\x02\x05\x01\t\x05\x03\x03\x02\x06\x04\x04\x03\x02\x01\x02\x02\x03\x03\b\x0f\x06\x03\x02\x03\a\a\x04\x05\x03\x04\x12\f\x03\n\t\t\x0f\x15\x04\x01\x01\x04\x04\x05\x05\x05\f\b\x06\v8\x06\x03\x12\x1a\x02\x02\v\x04\f\x1b\t\x03\x0f\x14\x10\x04\x11\x11\x04\x04\f\v\x02\x03\v\f'\b\t\x04\x04\x02\t\a\f\v\x01\x02\x01\x0e\f\x01\x03\a\x05\x03\x02\x02\x05\b\x01\x02\x01\x04\a\x17\x06\x03\x03\x05\x06\f\x06\x06\x04\x03\x06\x04\x01\x02\x10\x01\x01\f\f\x01\x01\x01\x03\t\t\x03\x02\x02\x04\x0f\x01\x04\f\r\x04\x03\x05\x01\x04\x03\x01\x01\x01\x05\a\x05\r\r\x06\a\x04\x02\x01\x06\x01\x01\x02\x01\b\x03\x03\x04\x03\x03\x04\v\x03\x01\x03\x14\x06\x05\x02\x02\x05\x0e\x06\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x02\x03\x03\x02\x01\x02\t\x06\x03\x03\x03\x02\x02\x05\x02\x05\x04\x02\x01\r\x04\x06\x01\x02\x02\x01\x03\x02\x01\x01\x01\x03\x02\x05\x01\x01\x02\x01\x01\x06\x03\x06\x05\x04\x05\x04\x05\x04\x05\x06\x05\x01\v\b\x06\x03\x03\x03\x03\x02\x04\a\f\x16\x04\a\x04\b\x03\x05\b\x03\x05\x06\b\a\x04\x04\t\b\x03\x02\a\v\n\a\x01\x06\x0e\b\x06\x06\x02\x04\x06\x01\x03\x04\x02\x02\x02\x02\x11\x05\f\x15\x04\x05\x05\v\x11\x06\t\x0e\x03\x06\x04\x05\x10\x15&\x06\x03\a\b\x13\x13\x03\x01\a\x04-\x01\x0e\x17\v\x04\r\x17\x04\x05\x10\x05\x04\x04\x03\x03\a\x10\f\f\b\x14 \t\x04%\x05\v\x05\x04\x03\x06\x03\x10\x05\x01\a\x04\x18\x02\t\x06\x06\x06\t\b\a\r\x1f\x01\x01\x01\v\x03\x06\x03\x02\x02\x01\x06\v9\x0e\x1b,\x17\a\x17\x03\x19\x15:L\x93\x058'\x1d'\x1c\x19\x11, %\f\a\x19%\x0e\x03\x00\x00\x00\t\xff\xff\xff\xc5\x01\xf1\x01\xb7\x00\u007f\x00\xd3\x01\x1b\x01^\x02^\x02\x9a\x02\xd2\x03\x12\x03K\x00\x00\x13232\x172\x17\x162\x163\x16\x17\x16\x17\x16\x17\x16\x170\x16\x17\x16\x17\x16\x17\x14\x17\x16\x15\x16\x15\x14\x06\a\x1c\x01\x06\x15\x06\a\x06\a\x06\a\x06\a\x06\a\x06\a\x06\a\x06\a\x06#\x06#\"'\"'*\x01&#&#&'&'&'&'&'&'&'&'4&54&45&547<\x0165<\x01656167>\x01567676767672636212\x17\"\a\x06\a\x06\a\x06\a\x06\a\x06\a\x14\a\x06\a\x06\a\x06\x15\x14\x17\x16\x17\x16\x17\x16\x17\x16\x17\x16\x17\x16\x17\x16\x17\x16\x17:\x013\x1672676767676767676767676'4&1&'&'&'&'&'\"#'&\a67\x0e\x01\a\x06\a\x06\a\x06\a\x06\x17\x14\x17\x16\x17\x1e\x01\x17\x16\x17\x16\x17\x14\x15\x1c\x01\x15\x1c\x01\x15\x16\x14\x15\x1c\x01\x15\x1c\x02\x15\x14\x15\"#\"'&'&'&'.\x015&'&'&7676767\x16\x17\x16\x17\x1e\x01\x17\x16\x15\x16\x17\x16\x15\x14\a\x06\a\x06\a\x06\a\x06\a\x06\a\"'041465<\x015<\x015<\x015456767676767654'&'&'&'0&\a67\x06\a\x06\a\x06\x15\x14\x17\x16\x17\x16\x17\x16\x17\x16\x17\x16\x15\x1c\x01\x15\x14\x15\x14\x17\x1e\x013676745<\x015<\x015<\x01645<\x015<\x035<\x0154545\x1c\x011\x16\x15\x14\x16\x14\x15\x14\x16\x14\x16\x14\x17\x16\x17\x16\x17\x16\x17\x16\x1721\x16747676767636\x17\x1632367676?\x02\x06\a0\a\x06\a\x06\a\x06\a\x06'&'&'&'\x16\x17\x16\x17\x16\x17\x163\x06\a\x06\a\x06\a\"#\"'&'.\x01'&'676767\x06\a\x06\a\x06'&'&'&'&'.\x01'\x1e\x02\x17\x16\x17\x16\x172\x163032327636\x17\x16\x17\x16\x17\x14\x16\x17\x16\x17\x16\x1767676767464567<\x015<\x01545<\x0154'&'&'&'&'\"'4767676761\x14\x1d\x01\x14\x150#4&'<\x01'\"#*\x01#\"#\"#41>\x0112676345\"'.\x02#4):\x0136\x1670254>\x0172\x15\x1e\x01\x17\x14\x161\x1663\x163230\x15\"\a\"\x15\"\a0\a\x06\x152\x172\x16\x172\x14\x150#*\x01#\"#\x14\a\x15\x0e\x01\x14\a\"14=\x014\a61\x06\a\x06\x15\x16\x17\x16\x17\x16\x17\x16\x17\x16\x17\x16\x172\x163\x16\x17\x16\x17\x16\x17\x14\x15\x06\a\x06#\"'&'&'&'&'&'&'.\x0150'&'67<\x027676%\x16\x17\x16\x17\x16\x170\x15\x14\a\x06\a\x06\a\x06\a\x06\a\x06\a\x06#&'\"/\x01476767676767676367676747654'&\xec\n\f\x05\x06\x02\r\x01\x03\x03\x01\n\x0e\x12\x12(\x1f\x1f\x12\x03\x01\x04\x03\a\x03\x01\x01\x01\x01\x01\x01\x02\x01\x06\f\x18+\x1a\x1f\v\b\t\x02\v\t\x06\b\f\x04\b\f\f\b\x06\x04\x01\x03\x03\x01\v\x02\b\x04\v\x0f\x11\r\x05\x02\x10\x105\x17\x05\x03\x01\x02\x01\x01\x01\x01\x01\x01\x02\x05\n\x01\x03\f\x12\x1e+\r\n\x17\x1a\x01\n\x01\x06\x01\x02\b\x02\x0e\f\x0f\n\f\x15\x13\x11\x0e\b\x04\b\a\a+\x0e\x03\x02\x01\x01\x01\x02\x03\x01\t\x15\f\x12\x18\x1f\r\t\v\x05\x11\x11\x01\x06\x02\x15\x14\x01\n\x03\t\x01\n\x03(!\x18\x12\x03\a\x05\x04\x04\x03\t\x05\x04\x02\x02\x01\x01\x03\v\t\r\x14\x1a'/\v\r\x02\x05\x04\vu\x13\x19\x01\a\x02\x11\r\v\x06\x05\x02\x02\x01\v\b\x0e\x02\v\x02\x04\x03\x04\x02\x01\x02\x01\x10\x10\n\a\t\a\t\a\x03\x01\x02\x01\x06\x02\x01\x01\x01\x06\x04\x04\n\x11\t\xbb\x02\x06\v\a\x15\x1f\t\x04\n\x01\x01\x04\x04\x04\x06\x05\v\x0f\x10\x13\x05\x06\x04\x02\x01\x01\x03\x04\r\t\x06\f\a\x04\x02\x01\x04\x02\x05\x06\b\x0f\x14\x04f\x02\x01\x01\x01\x05\x02\x02\x01\x01\a\x04\x03\x01\x05\a\x02\x04\x02\x01\x03\x02\x02\x01\x02\x01\x01\x01\x01\x01\x01\x01\x03\x02\x02\x02\x04\x06\x02\x04\x01\x01\x01\x01\x05\b\x01\x01\x02\x04\x05\x04\x06\x0e\a\x04\x06\x05\r\f\t\x06\x11\r\x02\x02\x01\x03\x05\b\t\x06\b\v\v\r\r\x04\a\x02\x06\x04\x05\x03\x05\b\x06\x06\a\x01\x03\x01\x03\r\x11 \"\a\a\v\x04\x10\x11\x11\x1b\v\x05\x01\n\t\t\a\x03\x03\x06\x05\x06\a\b\n\f\v\x05\a\f\r\x04\a\x01\x02\x01\x02\x03\x03\x01\x0f\x0e\x0e\v\x01\a\x01\b\t\a\x02\b\x03\x04\x06\x05\a\x05\x03\x03\x02\x01\x02\x01\x02\x01\x01\x01\x02\x03\x03\x02\x02\x03\x01\x02\x01\x02\x01\x02\x02\a\x06\x06\x06\a\x01\x04\x01\x03\x04\x02\x03\x06&\x01\x01\x02\x01\x01\x01\x04\x02\n\x03\x01\x01\x02\x01\x01\x03\x02\a\x02\x03\x01\x01\x03\x01\x04\x03\x02\x04\x01\x03\n\x02\x02\a\x01\x01\x01\x02\x06\x01\x01\x01\x01\x01\x01\x06\x01\x06\t\x01\x01\x01\x03\x01\x03\t\x01\x01\x02\x01\x02\n\x03\x01\x05\x02\v\x02\x04\x01\x01\x01\x01\x01\x01\xba\x03\x02\x01\x01\x02\f\x06\x05\v\t\a\b\b\x02\a\t\x01\b\x02\b\x05\a\x03\x02\x01\v\t\x05\b\x0e\x10\a\x04\f\v\x05\x03\r\t\x04\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x05\x01t\x01\x02\x04\x02\f\x01\x03\x02\x01\a\v\r\x13\t\t\n\b\n\n\f\v\x01\x01\x04\x01\x02\x04\x03\x06\x03\x05\x02\n\v\n\x0f\f\x04\x01\x06\x04\n\a\x03\x01\x01\x02\x01\x01\x01\xb6\x01\x01\x01\x01\x02\x03\x05\t\x12\x1f\x1f'\x06\x01\v\t\x13\x13\x05\x04\x06\x06\t\x10\b\r\x04\x01\x03\x03\x01\f\x04\x1c\x192#\x16\r\x05\x03\x02\x01\x03\x02\x01\x01\x02\x01\x01\x01\x01\x02\x02\x01\x03\x05\a\a\x03\x01\n\f,A\r\x0e\x06\f\x02\x05\x01\x01\x04\x05\x01\v\x12\x06\x04\x02\x03\x04\x01\x01\x03\x03\x01\f\x1a\x16\x02\x06\x01\x1a\x15&\x19\a\x04\n\x05\x01\x01\x01\x01\x18\x02\x01\x03\x05\n\a\n\x06\x03\x06\x06\x01\x06-<\r\r\f\x0f\f\t\b\r\f\x02#\x1f\x13\x11\x17\x10\x06\x03\x04\x01\x05\x03\x02\x02\x01\x01\x01\x01\x02\x01\v\x19\x12\x17\x04\t\a\t\a\x06\x12\x13\x11\x0e\x12\x17\x02\t\x1e\x1a\x17\x14\x1d\x15\x1f\v\x03\x02\x01\x012\r\b\x01\x04\x01\n\x0e\f\r\v\v\a\a\x14\x13\x0f\r\x01\t\x02\x04\x03\x06\x05\x02\a\x02\n\x01\x02\a\x01\x02\x04\x02\x03\f\x02\x01\x03\x03\x02\x03\x02\a\x05\x05\a\a\v\r\x06\x02\x02\x03\x01\x0e\x11\n\x03\x18\x17\r\v\x15\x11\t\x1c\x01\x02\x04\x04\n\x1e\x13\b\x01\x16\x19\x05\t\x11\x11\r\t\v\b\x10\v\f\x03\x01\x01\x01\x06\x02\a\x02\x04\x0e\x03\x01\x05\x01\x03\n\x03\b\x01\x03\x04\b\n\a\a\r\x0f\n\b\x06\b\v\f\a\t\n\n\x0f\f\x02:\x02\x02\x02\x01\x06\a\a\x03\x05\x03\v\n\x05\x02\x01\x02\x04\x02\x03\x06$\x94%\x03\x01\x01\x03\x03\x03\x01\x02\x02\x03\x01\x05\x02\t\x02\x02\f\x03\x02\a\x04\b\x02\x02\r\x03\x02\a\x04\b\x02\x03\f\x03\x02\x03\x04\x03\x01\x04\x06\x05\x01\x04\x04\x01\x01\a\x03\x05\x04\x02\x13\b\b\x06\x0e\t\x03\x04\x01\x01\x01\x02\n\r\x03\x01\x02\x02\x02\x01\x03\x01\x01\x05\x04\x04\n\x11\x02\x03\x04\x06\b\x10\f\a\a\v\x04\x06\x02\x01\x02\x01\x03\x02\x04\x03\x05\a\x04\x04\x01\x01\x01\x02\t\a\x0e\x02\x01\x01\x04\x05\f\a\x04\x01\x01\x05\x04\a\x03\x04\x04\x02\x03\x02\x02\x01\x02\a\x04\x06\r\x15\x06\r\x01\x04\x01\x01\x03\x03\x01\x10\t\t\x02\x01\x01\x01\x02\x02\x03\a\x04\x05\x01\x05\x02\x03\x03\x02\x01\x01\x02\x03\n\v\t\a\x15\x02\x04\x05\x01\x19\a\x01\x04\x01\x02\t\x02\x04\x03\x03\n\x02\b\f\v\a\n\v\t\x05\a\x02\x01\x02\x06\f\v\x05\a\n\x06\x01\x01\x05&\x04\x01\x02\b\x01\x01\x03\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x05\x05\x03\x01\x01\b\x02\x01\x03\x01\x01\x01\x01\x01\x01\x03\x01\x01\x01\x01\x03\x01\x01\x01\x01\x02\x02\x02\x04\x04\x01\x01\x04&\x05,\x06\n\r\n\r \x1a\n\a\x0e\a\a\x04\x04\x01\x02\x03\x02\x03\x06\a\v\x03\x06\x02\x01\x04\x02\x01\x05\x03\x02\x06\b\x05\x03\x0e\x14\n\a\b\x04\x02\x06\x01\x06\b\t\f\x06\x01\x04\x03\x01\n\a\x10\x18\x01\x04\n\x04\x1d\x1e\x05\f\x10\a\x04\x18\x12\x14\v\x06\x03\x04\x02\x01\x01\x04\x01\x01\x01\x04\t\a\b\x04\x03\x02\x01\x02\x03\x04\a\f\x05\a\x05\x0e\x13\v\x05\x02\a\v\a\r\a\r\x00\x02\x00\x00\xff\xc5\x02\x01\x01\xba\x00j\x00p\x00\x00\x136\x176\x17&\a\x06\a67676\x17\x06\a\x06\a\x06\a\x06\x17\x16327676765&\a\x06\a\x06'\x167>\x0476767\x06\a\x06\a\x06\a\x0e\x01\a\x06\x17\x16\x17\x167676'4&45\x16\x17\x16\a\x0e\x01\a>\x017654'\x16\x17\x14\x15\x06\a\x06\a\x06&'.\x01'&'5>\x01\x056767\x06`I\\*,(!B.\x04\f\x1d\x1c\x17%$\a6!\x17\x01\x01\x15\f\x0f\x05\x05\x15\x17\x14\f\x02\x05\x01\x11\x13#\x1b\x15\x11\x06\v\f\t\f\x04*/1!-\x02\x11\x17\x01\r\x0e\x1e\b\x0f\x04\x03\x12\x11\x1a0!\x1f\x02\x01\x0e\x02\x03\x04\x01\x06\x01\r\x17\x03\x02\x10\x1e\x06\x05\x19(M;\x867\x195\x0e\x16\x03\x033\x01\b\b\b\t\x01\x12\x01\x819\x03\x01\x10\b\x06\b3\x01\x05\r\x02\x02\x04\a\x03\x11-!\" \f\b\x01\x03\r\f\f\x02\v\x01\x01\n\x05\v\n\x03\b\x03\a\b\b\n\x03 \x17\x17\x01'\x02\x10\x1d\x02\b\n#\x0f!\x1f\x19\n\v\x06\v-*6\x03\t\a\x04$\x19\x12\x19\x06\x15\x06\x0f/\x13\x0f\x0e($/<\x13\x144-I#\x1c\b\"\x0f:\x1a,1\x1f4^0\x02\x03\x03\b\n\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00!\x00)\x001\x00\x00\x11\x17'\x1762\x177\a7\a7\a\x16\a\x17'\x17'\x17'\x06'\a7\a7\a7&47'\x176\"\x06\x14\x16264&2\x16\x14\x06\"&4w\f[\r\x1a\r[\fwF;F\x05\x05F;Fw\f[\x1a\x1a[\fwF;F\x03\x03F;\xcdgHIfI\xa0H44H4\x01\xa0F;F\x03\x03F;Fw\f[\x1a\x1a[\fwF;F\x05\x05F;Fw\f[\r\x1a\r[\f\x13HgIIf%4H44H\x00\x00\x00\r\x00\x00\xff\xc7\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1d\x00+\x005\x00?\x00I\x00S\x00[\x00i\x00q\x00\x85\x00\x8f\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%#\x153\x15#\x15#5#'353\a#535#\x15#\x173\x15353'7\a\x17'\a7'7'\a\x17'\a7'7'\x177\x17\a\x17'\a7'7'\x177\a\x17'\a7'7'\x17&2\x16\x14\x06\"&4\x05#535#\x15#\x173\x15353'\"\x06\a353&\x022654'\x15#\x153\x15#\x15#5#'\x06\x15\x14?\x01\a\x17'\a7'7'\x91Α\x91Α\x97\u008a\x8a\u008a\x01\x86\x92TT0v%\x9b\xc2IS\x91\xac\x90\x14|\x1bS\xa2\x16\x0f\x0f\x16\f\x02\x17\x17\x02\x11\t\r\a\x01\x0e\x0e\x01\b\f\x9c\t\t\r\a\x01\x0e\x0e\x01\ax\x0f\x0f\x15\v\x01\x16\x16\x02\f켅\x85\xbc\x85\x01BT\x92Ɲ(u4T_Fp\x15\x9d\xc8?\xb3\xb0}1\x92TT@s,\t\x91\x17\x11\x0f\x15\r\x04\x18\x18\x02\x01\xb7\x91Α\x91\xce\xfe\xae\x8a\u008a\x8a¿#/\xc4\xc5.R\\8\x18P\x18\xc6\xc6]\t\x12\x12\t\x14\x18\x05\x06\x18\x02\n\x06\r\x0f\x03\x04\r\f\x06\x9d\v\n\x05\f\x0e\x03\x04\x0e\fR\x11\x11\t\x14\x17\x05\x05\x17\x14\xa7\x85\xbc\x85\x85\xbc!\x1f3R2\xc5\xc4\xccRARA\xfeU}XM<3\x13?\xc4\xc58\x1d XF\t\x11\x13\v\x15\x18\x06\x04\x18\x00\v\x00\x1c\xff\xc0\x01\xe5\x01\xc0\x00\x96\x00\x9b\x00\xa1\x00\xa6\x00\xac\x00\xb2\x00\xb7\x00\xbd\x00\xc2\x00\xc8\x00\xce\x00\x00\x05\a'\a'\a\x15.\x04'4.\x04'6'\x0e\x01\a\x17\x06\x177\x177\x177\a'\a'\a4&467\a&7\a467>\x01'.\x01'\x1e\x01\x06\a.\x0167\x16\x1f\x02'\a\x1f\x017\x1f\x01\a\x177'?\x01\x17?\x01'\a?\x0167\x1e\x01\x06\a.\x0167\x0e\x01\a\x06\x16\x17\x1e\x02\x15'\x16\a'\x1e\x01\x14\x06\x15'\a'\a'\x177\x177\x176'7.\x01'\x06\x17\x0e\x05\a\x0e\x04\a5'\a7'67\x067\x06\a&'67'67\x167\x16\x17&'6'\x16\x17\x06\a4\a&'\x16\x17'\x16\x17\x06\a&'47\x16\x17'\x16\x17\x06\a67\x06\x15&'6\x01\f\f\v\v\x05\x05\x06\t\x05\x02\x03\x01\x03\x03\v\x0f\x1e\x13\x0f\r\x19\x1f\a\x1e\x12\x05\x1c\x06\x12\t\x13\x1a\t\x19\a\x1a\x02\x05\x06\x1a\x04\v\x16'\x17\x11'\x02\x02\x17\x12\x14\x01\x11\n\x03\x06\x01\bY\x05:\x03k\a\x11,\x10\x1c\x04\x15 !\x15\x03\x1c\x10,\x12\al\x04:\x04Y\b\x01\x06\x03\n\x11\x02\x14\x12\x18\x01\x02'\x11\x0f\x1d\x11\x16\f\x04\x1a\x05\x05\x02\x1a\a\x19\b\x1b\x14\b\x13\x06\x1b\x05\x12\x1e\x06\x1f\x1a\f\x0f\x14\x1d\x10\n\x03\x03\x01\x01\x02\x03\x05\b\x06\x05\x06E\x10\n\t\x01\x1a\x01\x01\x0f\x06\b(\x18\n\b\x06\x03\x1a\x04\x19\f\a\x02!\r'\x05\xed\x02\x02\t\v,\x0e\b\x05\x10\x01\x19\x05\b\v\x1c\x01\x06\v\x1a\x04\x1c\x02\x05'\x0e\x18\x15\x15\x0f\f\a\x1e\x02\x10\x17\x16\x1c\x06\x03\x1e\x10 \x18\x1f\r((\x03\x15\x1e\b&\"\a\"\a!\a\x15\x1c\x05#\x0e\x03\x1c\x12\x1a\t\x05\x14%\n\x14%\x02\x01 \x13\x0f\x1d\x05\x10\"\x13\x04\b!=\x1c2b']<\a\x04&\x051x\x10\x10\x10\x10x1\x05&\x04\a<]'b2\x1c=!\b\x04\x13\"\x10\x05\x1d\x0f\x13 \x01\x01\x13\x1a\r\n%\x14\x05\t\x1a\x12\x1c\x03\x0e#\x05\x1c\x15\a!\a\"\a\"&\b\x1e\x15\x03((\r\x1f\x18 \x10\x1e\x03\x06\x1d\x15\x18\x0f\x02\x1e\a\fn\v\x06\x06\x11,\x14\f\x04\x03\b\v\a\r\x0e\x0f>\x11'\t\x02\x0fL\x04\x18\f\x02\n\x8b\x06\x11\x06\x06'\x11\b\x03\x04\f\x0e\x13\x0f\x0e\rJ\x1e\x0f\x01\n'? \n\x02\f\x18\x00\x00\x00\x00\x04\x00\x01\xff\xbf\x01\xff\x01\xc1\x00#\x00M\x00q\x00\x93\x00\x007\x16\x15\x14\x06\"&4632\x17.\x014>\x04?\x01\a\x0e\x01\x1e\x01\x17\x1e\x013:\x011\x15\x06\x13>\x01\x1e\x01\x1f\x01'.\x01\x0e\x03\a\x0e\x01\x150\x14\x15#&7\"#\"&54>\x0432\x16\x17\x16\x15\x14\x05\x06#\"#\x1e\x01\x0e\x01\x0f\x017>\x01.\x02'.\x01#\"\a56\x17&5462\x16\x15\x14\x0e\x01\x0312\x16\x14\x06#\".\x01'&5\x0e\x01.\x01/\x01\x17\x1e\x01>\x027>\x015<\x0113\x16L\x01\x16 \x16\x16\x10\x03\x02\f\r\b\x0e\x10\x11\x0e\x04\x04\b\x18\b\x19\x1d\x12\x0eM)\x01\x04u$\x1f=,#\b\t[\v\x12\x0f\f\n\x06\x02$4\x16\x016\x02\x01\x10\x16\x03\x04\a\t\n\x05\n\x14\x04\x04\x010\b\b\x02\x02\x18\a\x17\x1e\r\x0e\t\x13\f\t\x17\x18\x0e\x0eM'\x01\bpH\x01\x17\x1f\x16\x06\nx\x10\x16\x16\x10\x06\x0e\v\x03\x03 >-$\b\t[\f\x15\x0f\x0e\a\x04%6\x13\x02N\x03\x02\x10\x16\x16\x1f\x17\x01\x12$\x1e\x1e\x17\x15\x10\v\x03\x03\\\x0e\x1a\x11\v\x04&6\x13\x02\x01}\x15\x04\x18\x1d\r\r\t\x10\x0e\x05\x0e\x18\x14\f\x0eM'\x02\x01wG\x16\x10\x05\n\b\a\x05\x03\r\b\b\t\x02\x89\x03 ?.$\t\t[\f\x15\x0f\x0e\b\x03%4\x01\x17\x011\x03\x02\x10\x16\x16\x10\x06\x0e\v\xfe\xfa\x17\x1f\x16\x06\n\x05\a\a\x16\x06\x17\x1e\r\r\b\x13\f\t\x18\x18\x0e\x0eM(\x01\x05m\x00\x00\x00\x00\v\x00\v\xff\xdf\x01\xb4\x01\xa3\x00\f\x00\x1d\x00+\x003\x009\x00^\x00\x90\x00\x9a\x00\xb0\x01\n\x01)\x00\x00%&'&76\x1e\x01\x17\x16\a&\"\a&#\x0e\x02'47632\x17\x1e\x02\x06\a2\x1e\x01\x06'\"#\"\a\x06'&6\x17\x06\"&76\x1e\x0162\x16\x06\"&\a3\x16\x141\x0e\x01&'46&'&#\"\a\x0e\x03#\".\x014>\x0276\x16\x17\x16\x06\x17\x16%2\x16\x15\x14\a\x0e\x02.\x02'\"&'4547'&>\x05\x170\x1e\x01176\x16\x15\x14\a\x1e\x03\x14\x15\x16\x17\x16\a\x16\x0526'.\x01\x06\x17\x1e\x01'67>\x05?\x01&'&\x0e\x01\a\x06\x17\x16\x176\x05\x17\x06'\x16\x17\x166720\x15\x0e\x01'&6\x17\x1676'&'&'&'&'4'&'&#\"\a\"\a\x06#.\x01#'\"\x06\a\x06\x1e\x02\x17\x16\x15\x14\a\x0e\x01\x17\x16\x17\x1e\x0176767676.\x01\a&'\x06\a\x0e\x01&\x06\a\x1e\x0227'5\x15\x143>\x022\x17241&#\"15674#\x06\a\"1675#\x06\x01K\x04\x02\x04\b\x03\x04\x03\x01\x03\x03\x02\x058\t\b\x05\r\x03\x02\x06\b\n\x06\x06\x04\a\x02\x02\x10\x05\b\x03\x01\x04\x03\x03\a\x06\x04\x01\x02\b=\x02\b\x06\x02\x02\b\x06\n\b\x02\x03\a\x03\xd4\x03\x01\x02\n\t\x01\x04\x01\x05\x03\x04\a\x04\x01\x02\x01\x02\x01\x01\x01\x01\x01\x02\x03\x02\x04\x18\a\x04\n\x03\x02\x012\x06\n\t\r3=E>4\x0e\x18)\x03\x05\x0f\x0e\x01\x1a(22,\x0e\f\v\r,?\"\b\t\x04\x01 \t\x13\x10\x04\xfe\xc7\x15\x11\x04\x05,&\x03\x02\x1e\x01 >\a\x0e\r\f\t\a\x02\x02\x12\x06\x108<\x171\x10\x02\x0e\r\x01\x06\x01\x1c+\x01\x0f\x17J\x1f\x01\x16q\x11\t\x0e\x0f9,'\x03\x01\x04\a\x13\b\x02\t\x01\x01\x01\v\x04\x05\x02\x02\x06\b\x0f\x13\x04\x0f\x04\x05\x0f\x1b\x02\x02\x06\b\r\x01\x02\x02\x0f\n\x06\x01\x02\x0eH(\v\n\x11\x0e\x15\x05\x01\x05\x05\x03\x02\x05\x15\x1e\x17(\x13\f\x02\t\x15\x11\x0e\x04\x94\x01\a\x13((\x1d\x01\x13\x16\x01\x03\x05\x01\x1a\x17\x01\x01\x04\x01\x1d\xcc\x06\t\x12\x01\x01\x04\a\x06\v\a\x01\t\x04\x01\x03\x01\x01\x03\x04\x06\x02\x02\x05\x05\x02\x02\x02\x04\x02\x01\x02\x02\x01\x03\x06\x10\x03\x06\x04\x03\x01\x06\x11\b\b\bG\x01\x01\x04\x02\a\b\x03\r\t\x03\x02\x05\x02\x05\x03\x02\x02\x03\x03\x05\x04\x05\x02\a\x01\f\b\x18\x03\x04\x12\r\f\x13\x17 -\x15\x01\x15/ #\x19\x04\x04\r\r\f\f,37,!\x06\f\v\v\x05\x12\x0f\x1e\x1e#\a\x14\x14\x12\x10\x02\t\n\x14\x17\v:\"\x18\x1e\x11\x1e\x1d\x12\x1bqT1\x05\v\t\b\x06\x04\x01\x01\x16\x01\x05\x1b6!F\x1e\x04\v\x13a\x02\r\x0e\v\x06\n\x0f\x15\x01\x1f\x10\x19\x0e\x1e\x02\a\x14\x12\x14\x06\x04\a\x05\x02\x01\x03\v\v\x11\x1b\a\x03\x01\a\f\x01\x01\x01\x17\x11\f\x15\f\x0e\x02\x02\x03\x02\x02\x10-\x14\x05\x05\x1f\x19\r\x04\x05\t\x0e\x16\x1d\t\t\x01\x01\r\f\x11\t\x06\x03\x04\x02\a\x03\x04\x01\x01\xc1\x01\x01\x01\x05\n\x10\x04\x02\v\x01\x04\x04\x01\x02\x0f\x06\a\x01\x0f\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\x05\x00\r\x00'\x00\x00?\x01\x17\x15\a'\x022\x16\x14\x06\"&4\x015'5'5'\a\x15\a\x15\a\x15\x17757\x17\x15\x17757\x17\x15\x17\xd6\"!!\"EΑ\x91Α\x01\x89;<\x1a\x1a<;\x1a\x1a!\"\x1a\x1a\"!\x1a\xee\"\"B!!\x01\f\x91Α\x91\xce\xfe\xf3W;X\x01\x132>\x0154&\"\x06\x14\x16\xeb\x17\x10\x10\x17\x10j\x10\x17\x0f\a\f\b\v?$B/\x1di\x93h-\x15P $=#MnNN\x95\x10\x17\x0f\x0f\x17\x17\x17\x10\x10\v\b\f\a\xc2\x1c/B#JggJ\x01O\xe3!#\xfe\xcc#=$6MMmM\x00\x00\x02\x00\x13\xff\xe0\x01\xae\x01\xa0\x00\n\x00(\x00\x00%\x14\x0e\x01#\"&462\x16\x17\x15#.\x0154675\x17\a5\x0e\x01\x15\x14\x1e\x012>\x0154.\x01'7\x1e\x01\x01\"\x12\x1e\x12\x1b&&6'\x8b\xd2SuoPmm\x01&'*\x01#\x15353\x173'2\x16\x06+\x015'2\x16\x06+\x0157\"\x0e\x01\x16326&\x062\x16\x06\"&\xcb\x12\x12\xbf\x05\b\x05\x12\xbf\x12\x12\xb9\b\n\n\bl\b \b\x13\x1d\x17\x13\x13u\x1f\x12\f\x13\x16\b \b\x13\x12\x1e\x17*\v\t\t\v\x1dC\n\t\t\n \xe1\x18\x1c\x01\x1c\x19!\x1b\x1b6*\x11\x11*\x11\x01\xb8\n\nl\x03\n\f\x06\xd9\x15\nm\n\nm\x04\x12\t\xd9\t\x12\x04\\f\x1e$$e#\x04 \x1d\x01f\"\"T\x10\x11!\x01\x13\x13&\x13!(!55\x12#$$\x00\x00\x00\x02\x00\x00\x00\x01\x02\x01\x01\u007f\x00.\x00S\x00\x00\x012\x16\x15\x14\x06\a\x0e\x02\a\x06#\"'\x06#\"'.\a4&54632\x16\x17>\x0232\x1e\x02\x17>\x01\x17654.\x01#\"\x0f\x01#'&\"\x0f\x01#'&#\"\x06\x15\x14\x1f\x01\x1632?\x013\x17\x16327\x01\xa9&1\n\x1d\a\t\x0f\a\x1aC=\x19\x19=C\x1a\t\x15\f\r\a\a\x03\x04\x013%\x1e-\b\t$\x1b\r\n\x14\x1a\x17\x06\b.8\b\n\x11\v\x1d\a,\x01-\n:\n-\x01,\a\x1d\x10\x16\bA\x0e !\v'\x01(\n\" \x0e\x01~/$\r N\x13\x17+\x13F66E\x1b7\"#\x14\x15\v\v\b\a\x05 -#\x1d\x1a\x1f\a\x04\f\x1c\x14\x1d#s\x18\x04\v\x10\b\x1d\x8c\x89 \x89\x8c\x1d\x11\f\r\x16\xaf%\"uu\"%\x00\x00\x04\x00\x00\x00?\x02\x80\x01B\x00\x12\x00:\x00U\x00q\x00\x00\x010\x15\x14\x0e\x01\a\x0e\x01\x0f\x01467>\x0223\a>\x01\x17\a\x06'.\x01'.\x02'&\"\a\x0e\x02\a\x0e\x01\a\x0e\x01+\x01'6\x16\x1f\x017>\x012\x16\x1f\x017\x1d\x01\x14\x06\a\x0e\x01'#5<\x03>\x037>\x027>\x017\x1f\x01\x06'&'&\a\x06\a\x0e\x01#'7'6\x17\x16\x17\x16767>\x01\x1f\x01\x01\x89\x01\x0e\r\x05\b\x01\x02\a\n\x03\a\a\a\x02r\x04 \x13B\x15\v\f\f\x06\x03\x0f\f\x01\x03\t\x03\x01\f\x0f\x03\x06\f\f\x05\x10\x06\x05B\x13 \x04#\x1c\x06\x16)\x16\x06\x1c\x96\x06\v\x05\r\x05\x04\x01\x02\x03\x04\x03\x02\a\x06\x03\x04\a\x01\xa5S$\x12\v*\x06\a+\t\b\x1b\n\tSS#\x11\v+\a\x06,\v\a\x1a\n\t\x01<\x02\t\v\x11\x05\x01\x05\x02\x01\x17\x15\x05\x01\x02\x01#\x13\x12\x02\xf8\x01\x05\x06\x11\x18\f=1\x02\v\v\x021>\v\x18\x11\x06\x02\x02\xf8\x02\x12\x13\x85m\x19\x17\x17\x19m\x80\t\x97\x16\x11\x05\x03\x02\x01\x98\x02\n\x03\a\x02\x05\x02\x03\x01\x01\x04\x02\x02\x02\x06\x02S{\x04\x0f\n=\n\n>\t\a\x05\x01{|\x06\x10\t?\n\n?\t\a\x05\x01\x01\x00\x00\x02\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x1d\x00\x00\x122\x16\x14\x06\"&4\x056&'&\x06\a\x0e\x01\"&'.\x01\a\x0e\x01\x17\x1e\x0126\x91Α\x91Α\x01\x88\x02\x06\x06\x06\n\x01\vARA\v\x01\n\x06\x05\x06\x01\rPfP\x01\xb8\x91Α\x91Ό\x05\v\x01\x02\x06\x06'33'\x06\x05\x01\x01\n\x061??\x00\x00\x00\x02\x00\x17\xff\xc0\x01\xe9\x01\xc0\x00\x11\x00L\x00\x00\x01\x16\x14\x0e\x01#\".\x01'&4>\x0132\x1e\x01\x0226'&<\x0174#\"#\"\x15\x16\x15#6=\x01276&#\"\x0e\x051\x163\x15\x16\a\x143:\x01325&53\x14\x16\x15\x06\x15\"\a\x06\x01\xde\n\x15\xbd\x16\x0ega\a\v\x16\xbc\x16\x0egb\x9e\x06%\x02\x02\x10\x01\x02\x05\r\x14\x04\x01P\x02\x10\x01\x02%\x03\x01\x05\b\b\b\x06\x03\x02\x10\x02\x02\x05\x06\x15\x04\x06\x02P\x01\x01\x11\x01\x02\x01@\x13\xda&m5?\f\x13\xda&m5?\xfe\xd6$\x02\x02\b\x18\x1bVB\x05\x05%/i\x01\x03\x02\x02$\x04\x06\b\b\a\x05\x02\x03ta\x06\x06\x1b-\x01\x03\x010'\x02\x02\x00\x00\x00\x00\x01\x00\x0e\xff\xbf\x012\x01\xc0\x00\x1d\x00\x00\x05\x17\x06+\x01\"/\x01\a\x15\x14+\x01\"5\x114;\x012\x15\x1176;\x012\x16\x0f\x01\x010\x02\x01\x05C\x06\x05n\x1f\b3\b\b3\b\x84\x05\x06E\x05\x03\x03\x8c6\a\x03\x05\x8d\x1el\b\b\x01\xf0\b\b\xfeΆ\x06\t\x02\x87\x00\x03\x00\x00\xff\xfb\x02\x81\x01\x85\x00\x0f\x00\x1b\x00\"\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x015#\a'#\x1535\x177\x15\x177#5#\x15#\x02R\x13\x1b\x1b\x13\xfd\xdc\x13\x1b\x1b\x13\x01$=>=>>>=\xc5\\>==\x01\x85\x1b\x13\xfe\xd2\x13\x1b\x1b\x13\x01.\x13\x1b\xfe\xd2\xd2MM\xd2xMMx\x03lii\x00\x00\x05\x00\x1c\xff\xc0\x01\xe5\x01\xc0\x00\r\x00\x16\x00\x1c\x00#\x00'\x00\x00\x05#'\x15\a#\x1173\x17573\x11\x01\x1175\x1337#\x01\x1375'\x15\a\x13\x013\x11#\x11\x03\x1f\x01\x11\a\x01\x9f_lVb(m{Wa\xfeCH\xd7U4N\xfe\xc44POI \x016SPߌHH@\x9b\\?\x01\xe2\x1e\xb0q?\xfe2\x01\xab\xfe35\xf9\xfe\xcc'\x01\xc2\xfe\x17;er\xdd5\x01\xeb\xfeF\x01\xba\xfe\xc3\x01=\xb5f\x01\x165\x00\x06\x00\x00\x00+\x02\x81\x01Q\x00\x06\x00\r\x00G\x00T\x00`\x00\x93\x00\x00\x133\x15#\a'#75#\x153\x177'2\x16\x1d\x01#\x06\a7\x16\x17\x1e\x02\x0e\x02\x1d\x01'\x0e\x01\x0f\x01\x06'67#6;\x0165#\x06\a\x06\a>\x037>\x0137\x06\a32\x16\x1d\x01#\x14\a%'67>\x01\x1e\x03\x1f\x01\x06'\x1e\x03\x1f\x01\a'>\x02\x17\x16+\x01\x15\x14\x0e\x01#\"'&'\x1e\x0123\x166=\x01#\"&/\x0135\"\a\x06'&'26?\x02\x16\x14\x0f\x01\x06\a\x06#\x15036\xabz1*\b\x17aI\f\x05\x1cZ\x03\x04=\x02\x06\x0f\b\x1c\x02\x02\x01\x01\x01\x016\x06\x12\x06\x06\x15\x1e@\aB\x04\f4\x02\x1d\x01\x04\v\x1a\x06\v\a\x06\x01\x03\x10\a\x06\b\x05X\x05\x043\x02\x01\xd0\x13\x1e\x06\x02\x05\x05\x06\x04\x04\x01\x01\x18\xab\x02\t\n\b\x03\x02\x13)\x02\x05\x10\xe7\x01\nz\n\x14\x0f\r\r\f\a\x05\x11\r\x06\v\x0el\n\r\x01\x02\x86\x13&)\b\r\x03\x1et,+\x17\x06\x03\x02\x1c<\x10\a\x02o\x01,\xda\x1a\x1a\x18\xaa\xaa\x12\x12^\v\x06\x06\x14\x15\f\t!\x03\a\b\a\a\x05\x02\x01A\x16\"\a\x06\x13\t1L\x17\x173\x03\f\x13\x03\f\x1c\x12\x12\x02\n\v\x01\x15\x14\v\x06\x05'#\x02\x0e(\t\x02\x02\x01\x01\x03\x02\x01\x01 !\x02\v\r\f\x04\x04\x0e:\x01\x03\x03L\x18I\x0e\x15\v\a\a\x0f\x01\x01\x01\f\nG\f\x05\x06d\x03\x01\x02\x04\x10\t\x04\x05\x04\x03\x10\a\a\x02\x03\x01e\x01\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x005\x00>\x00\x00\x012\x16\x1d\x01.\x01'>\x01?\x01#535#5#\x15#\x153\x15#\x153\x06\a&#\"\x06\x17\x1e\x013267\x16\x17\x14\x0e\x01#!\"&5\x11463\x03&632\x17\x06#\"\x01z\x1d)\x18d\x19\n\x14\x04\x04Xmm3nn\\\xb2\n\x11Q.:-\x04\x03.0-M\x1aKa\x13 \x13\xfe\xcc\x1d))\x1d\x17\x01#-\"K7?C\x01\xa0)\x1d\xeb\b$\t\x14-\r\r\x1f\x1333\x13\x1f\x11\x1e\x1e\x19/#\x1d/-$\"6\x13 \x13)\x1d\x014\x1d)\xfe\xdd\x12! I\x00\x0f\xff\xfd\xff\xc0\x01\xfd\x01\xc0\x00d\x00\x93\x00\x9e\x01#\x01n\x01\xe9\x01\xec\x01\xfe\x02\a\x02\x19\x02'\x021\x02U\x02k\x02\x8c\x00\x00%\x16\x17\x16\x17\a'\x06\a\x14\x06#\"'&54&5\a&7461/\x01>\x0336767\a'767'36\x17&'&547\x16\x17673\a6\x17\x0e\x03\a\x16\x17'\x16\x17\x16\x17>\x03\x1e\x01\x17\x1c\x04\x16\x14\x16\x15676\x172\x16\x17\x1e\x01\x06#\a\x16\x17'&\a\x16\x17\x16\x0f\x01\x16\x173&47\x16\x1767\a2\x176#\a&5�\x15\x14\x17\a&'&\x0e\x02#\x1627\a\x17\"/\x01\a\x16\x1767676'&\x05\x06\a\x177\x16\x1767\x17\a6\x17\a\x1e\a\x17'\x1e\x03\x176=\x01&'\x16\x17/\x04\x16\x177'7*\x02\x0e\x03\a#67654'&'&'&#\"'\x15\x06\a#\a&?\x01#7\"ȼ\x1636323\x17\x156767'\"\a'5767\"\x06\a\x06\a'\x17\x15\"'&#\"#\x16\x177\x06\a\x06\a?\x01\a7\a\x06\a\x01>\x014.\x015\x06#\x17\a&'\x1e\x01\x17\x06'\x17\a.\x03#\x06'\x0e\x01\".\x01'\x16\x17&'47\x16\x17&'\x17\x06'&'3\x1e\x0667.\x03'\x17'\x16\x17'\x16\x172>\x037\x17'2\x17&/\x01?\x01&+\x0157\a'\x17\a'#\x17\x15\a\x0e\x02\a7\a\x15\x06\a7\a6\x17.\x02'\x16\x17\a&'\x17.\x01\a'7\a7\x06\a#6'\x14\a\x06\a.\x01\x06\a2\x1e\x022\x160\x16\x14\x16\x17\x0e\x02\a7\x17\x1e\x017'\x17\a\x16\x17\x16327'\x1e\b\x15'7\x17'\x173'\x17'7\x176767/\x01\a\x17'\x16\x17\x06\a\x06#\x06\a7\x06#\"#'67&7\x16\x17\x16\a\x06'&6\x17\x1e\x016'.\x01\a\x06\x156\x17\a\x06\x177\x15\x06'&'&632\x17\x0e\x01\x17\x14\x0e\x017'52\x17&#\"#5\a\x16\x17\x0e\x01#63'6\x16\x1747674>\x017632\x17\x16\x15\a\x16\a\x06\a\x17.\x037\x06\a\x1f\x01\x163230765654'&\a\x06\a\x06\x17\a6?\x01\x17#&\a\x06\x173\x06'&'&547\x06\a&'6\x1f\x01\a\x06\x1e\x0176\x01\xe8\x05\x02\x06\x03\x03\r\t\a\x82]\\BA\x01\x14\a(\x01\x1d\x03\x02\f\t\f\x06\v\x10\x02\x05\b\x01\x01\x10\x1f!\x04\x17\x1a\x04\x04\x03\x03\a\b\x05\x1d\x02\f-5\x03\r\b\f\a\x1c\x06\x18\x16\x03#!\x04\x11\x06\r\n\x0f\t\x01\x02\f\x0e\x13\v\t\t\x01\x06\x02\x05\x01\a\x17\to\x14\b\f\x01\x02\f\x05\a\x02\x02\x01\x02\x0e\x02\x17 \x12\x1a\x14\x04\x01\x05\x03\x01\t\x02\x02\x05\x04\x03\f\n\x0e\x04\a\r\a\x17\x04\x11\x05(\x14\x10\f\t\x03\x02\x01\x01\x05\x04\xfe\xe6\v\x02\r\x01\n\x02\v\f\x01\a\x0e\x0e\v\x03\n\x03\x06\x03\x05\x03\x04\x02\f\x05)\x16/\x1a\x0e\x01\x11\b\x03\x12\x01\x01\x01\x01\x19\b\x02\x17\a\x01\a\x05\b\b\b\t\x04\x02\v\x05\x03\x0e\t\x15\n\n\x03\x03\x06\r\x10\t\x02\x05\x02\x06\v\x04\x02\x01\x04\x01\x02\x01\x05\x01\x05\x05\x02\x02\x03\f\v\x1f\x12\x15( \x02\x02\x03\x04\x02\x0f\x03\x01\x05\r\b\t\a\x06\x0f\x01\x02\x06\x12\a\x04\x10\x0e\x13\x04\n\x05\r\x02\b\x02\x01\x14\x02\x02\x01\x04\x1e\x02\n\x01\x11\v\x04\r\r\v\x18\x03\x04\x02\b\b\x06\x028:\x03\n\x1e\x1b$\x0e\x170\a\r\x01\x1d@8\r\x10\x04\x06\x13\x11\x01\x02\x05\x12\x12\x1d\x1c'&\x17\x0f\x17\v\x0f\x02\x11\v\x12\x14\x1e\x13,\x01\x04\a\f\x16\x81\t\r\n\f\r\x0e\x1b\x01\x18\x10\x11\x12\x0e)\r\x04\x03\x06\n\x06\x0e\x04\f\x0e\x05\x01\x01\n\v\t/\x11\x12 6\x15\x03\x0e\x02\x02\f,\x18\a\x1e\x04\x03\t\x16\x05\x06\v\x02\x01\x04\x01\x02\x01\x13 \t\r\x04\n\x05\x06\x02\x04\x03\x03\x01\x10\v\x0f\t\x16\x02\nI,\x1a,\x01\x04\n\x1e\x1f\x10\x10!\x06\v\t\a\a\x05\x05\x03\x04\a\x01\x13\t\x15\x02\x04\a\x0e\x01\b+&+\x1c\x03\x03\x13\x0f\xfb\a\v\a\n\x02\x01\f\x06\b\t\t\x04\x03\x01\x1d\x12\a\x02\t\x05\x16\v\f\x0e\x0e\x05\x05\x03\x10\v\x03\x06\x13\x02\x03\a\x06\x01\x01\x03\x01\x027\x04\x02\x02\x05\x06\x03\x02\x02\x01\x04\x04\x04'\x04\x16\x06\v\f\x02\x01F\x01\x04\x0f\r\x02\b\x10\a\x06\n\x04\x02\x03\x03\t\x0e\x06\x04\x04\x03\x02\x01\r\v\x02\x02\r\x03\v\r\x05\f\r\x02\x01\x05\a\x04\x04\x02\x02\x06\b\x01\x04\x04\x06\b\b\x04(\x03\v\b\a\f\x02\x0e\x11\x01\a\t \x11\x18\x03\x03\x01\t\x06\x04\x02\x0f\x11\x01\x06\x01\x01\n\t\x03\xce\x06\a\x11\x11\x01\x0f\x0e\v\\x<=Z\x01\x03\x01\x16-#\x01\x02\x01\x04\x01\x05\x04\x04\x16\x12\t\x11\x04\x01\t&\x1d\x0e\x06\x06\a\f\x06\x06\a\a\a\x15\x18\x16-\x1b\x0f\x03\r\a\b\x02\b\a\a\x14\x05\x02\v\x02\n\x02\x04\x03\x06\x06\x05\t\x05\x04\x01\x02\x01\x02\x01\n\a\t\x0f\x11\n\x01\x10\x0e\x12\x17\x16\x8a\r\x05\v\t\f\n\x04\n\r\v\x01\x03\b\f\v\n\x10\b\x14\v\x11\b\n\x01\a\a\x06\x12\n\a\x02\a\t\x01\x01\x06\x04\x11 \f\n\x15\x04\x04\x02\x05\x02\t\a !*\x05\x1b\x11\v\a\x04\x02\v\x06\x05\b\x01\x04\x01\x03\x02\x03\x04\x05\x04\x02\x03\x1a\v\x12\x06\x16\x01\x01\x04\x10\x01\x02\x10\x01\x01\x01\x01\n\x12\x1f\x12\x06\x01\x02\x03\x06\x04\x16\x18\x0e\x0e\x1d\x1c\x14\x0f\b\x06\x01\x01\x03\x02\r\x03\x04\x05\v\x03\x01\x01\x02\x01\x02\x01\x01\x01\x02\x04\x15\x01\x13\x02\x05\a\r\f\x16\b\b\a\x1d$\x01\x02\x01\x02\x06\x01\x04\x10\f&\x01\n\x05\f\x03\f\x03\xfe\xb4\f\x12\x14\b\x1b\x04\n\x0f\x01\x05\n\x0f\f\x04\v\x17\x17\x03\b\x0f\n\x06\x11\x1c\x01\x02\x05\x13\x10<\x17\x10\v\x03\a\x1d\x1f\x17\x06\x15\x02\x03\v\x0e\x03\x06\x11\r\x13\n\v\x02\x03\a\x16\x0f\x19\x04\b\x18\x19\x14\x11)\x12\x01\x02\x04\n\xdd\r!\x03\x11\x0f\x17\x03\x02\x04\x03\r\x14\x12\x10\x01\x05\x05\x02\x1b\x0e$,\x10\x10\x03\x01\x18\x0f\x16\x15\x14\x01\x05\x16\x0f\x04\x18\x10\x01,\x1a\x03\t\t\x02\x03\b\x06\x0e\x04\x05\x01\t\n\x02\x01\x01\n\x03\x03\x05\x02\x01\x01\x01\x01\x01\x01\x01\b\a\x1b\x1c\x16\x10+/\x06\x17\x17\x03\x01\x03\t\x03\x15\x01\x04\x04\x05\x06\x04\a\x02\x06\x01\x1d\x03\x1c\x1b\x0e\x04\x04\x10\x03\a\f\x1c 0\tH\x02\v\x06\r\x06\n\x05\x01\r\x02\r\x03\x02\x03\r\x06v\x05\t%\v\f\x0f\x1003\v\b\n\r\x19\x10\x04\x04\x15\f\a\x01\x03\x03\x01\x05\x0f\n\x01\x03\a\x0e\x04\x01\x04\x01\x06\b\x012\x03\x02\x0e\x06\x031\x02\x05\x03\t\x10\a\x01\x01\x06\f\f\v\x03\x01\a\v\x03\x03\x01\x01\x01\b\x11\x18\x11\v\x05\x01\x03\x04\v\x17\x06\x14\x06\x03\x01\b\t\x0e\x02\x02\v\n\f\x03\x02\t\aC\x06\a\x01\x01\b\x06\r\a\x17\t\x04\a\x11\v\n\a\x06\x01\n\a\x03\a\x03\x02\x01\x02\f\r\x02\x01\x00\x00\x02\x00\x12\xff\xc0\x01m\x01\xc0\x00p\x00\x88\x00\x00\x05\x1e\x01\x17!\"76743\x16765&54'&'\x0e\x02\a\x163\x15#67436\x1727>\x017>\a46'4&#*\x01#.\x01'&3!\x06\a\x14\x0e\x02#\"#\x06\a\x0e\x01\x17\x16\x17\x16\x17\x1e\x01\x1723\x16\x17#5232'0&'&\a\x06\a\x06\x15\x16\x1c\x01\x15\x16\x17\x1632\x16&\x162>\x03767&'.\x03'+\x01\x06\a\x16\x17\x16\x01e\x01\x05\x01\xfe\xaf\x06\x01\x01\x04\ar\b\x0f\x01\x04\a)\x02\x06\x05\x03\x02\"s\x03\x01\x05\n\x10\x05\x02\a\x1e\x1e\x05\b\x06\x05\x03\x03\x01\x02\x01\x01\x19\r\x0f7\x1f\x05\x01\x01\x01\x06\x01S\x02\x01\x02\x01\x01\x040\x0e,\f\n\f\x03\a\x1e\r\x12\x1a\r\x0e\x01\x13\x01\x03t\x1a\x05\x05\x02\v\x02\x03\x06\x0f\x16\x06\x01\x01\x14\rd\x06\x03\xb3\t\t\t\v\t\v\x04\x02\x02\x10\x03\x03\b\x06\a\x03\x02\b\v(\x03\x03\a\x14\x04\x1f\t\x06\n\x1d\x06\x01\x04\x06\x11k\x16\x05\x01\x02\n\x05\r\r\x05\x03\x1c\x14\x05\x03\x01\x01\x05\x10IH\v\x14\r\x0e\x06\t\x02\x06\x01\x05\x01\f\n\x1a\x11\x03\x05\v\x05\x04\v\n\t\x01\x01\x01\x10\n\x15D\x1f-<\x16\x01\x06\x15\x1b\x04\x19\x06\x05\x02\x04\x05\x02\x06\x19@'\x01\x14\x03\x03\x01\xc9\x03\x03\x03\x03\x03\x01\x01\x01)\n\b\x17\x15\x17\b\x1ch\x02\x01\x02\x00\x00\x10\x00\x00\xff\xc0\x01\xbf\x01\xc0\x00\x1d\x00\xa1\x00\xec\x01\x19\x01Z\x01\xa3\x01\xe3\x02\x03\x02&\x02G\x02\xfa\x03\a\x03\x1a\x03!\x03-\x031\x00\x00\x13\x16\x17\x16\x15\x14\x15\x14\a\x0e\x02\a#.\x045\"=\x014547>\x017\a\x06\a\x17\x06'0.\x01#\x150>\x0116\x172\x15\x06\a\x06;\x012=\x01'#\"'&'&#\"\x15\x16\x15\x16\x172\x14\a*\x01&543:\x0165654'&\"#&72\x17\x1e\x01\a0\x141\x1e\x02\x17\x1e\x01\x172=\x014\x17\x163272\x150\x16\x15\x14;\x01&'272\x17\x1e\x0215\x06\a\"5&'4327&'\x17&'0.\x01'\x0e\x02#\"#6\x17272\x15\x14\x15\x06'&'4&'\"\x150\x161\x143\x16\x17\x16\x17\x16\x0e\x01\a\x06'&672=\x01674#\"#\"\x06\a\x06'676\x17\x16\x1725654#&546\x17\x16\x06\a\x06\x1d\x01\x17\x1432'>\x01\x1e\x023\x16\a\x14\a\x14\a\"=\x01&'&\a\x06\x15\x14\x167>\x0232\x150\x15\x0e\x02\x14\x061\x0e\x01&'&6\x17#\"'>\x015454'\"572\x17\x1e\x01\a\x06\a\x16\x17\x16725454'\"4732\a#\x06\x15\x14\x17\x1432\a#*\x01#\"'&'&*\x01\x15\x16\x15\x1432\x17\x06%\x06\a&+\x01\"#&76'&'4#\"#\"#\x061\x06\a\x14\x166\x17\x16\a0+\x01\"72676742\x17\x1e\x01\x17\x16325454'\"7032\x16\a#\"\x15\x1c\x01\x15\x16;\x01276\a\"'67236\x16\x15\x14\a\x14\"54&#&#\"\x1d\x01\x147636\x15\x14\x06'05&#&\x06\x15\x14\x15\x1c\x02\x163\x166762\x15\x14\a\x14#\"#\"43656'\x16\x15\x1c\x021\x06\"54'&\x06\x17\x1e\x01767456\x17\x14\a\x06'.\x0176\x172\x16\a\x06\x15\x14\x15\x163\x16>\x0176\x15\x16\x06\"+\x01\"&3656'4'\"43:\x01'\x1432\x14#\"#\"4;\x01265454'\"#&6323\x16\a0#\x06\x15\x06\x03:\x013>\x017+\x8d\"\x150\x1c\x01\x16\x1c\x02\x15\x14\a\x06\a\x06'&1&541474+\x01\x1e\x02'\x143\x16676&'&\"\a\x14\x17\x14\x17\x14\x06&565\x06\x16\x17\x163276&/\x01\"\x14326&\x06\x143\x16645.\x01\x06\x15\x14\x17'\x06\a\xe2\xd4\x05\x04\x04\tgi\x02\x03\x16=81\x1e\x02\x03\v\xcb\x06\taa\x1f\b\x03\f\r\x01 \x01\b\x01.\x16\x01\x02\xbb\x02\x06\r\f\t\b\x0e\x02\x0f\x02\x01\x01\t\x03\x02\x02\x1e\x04\x02\x01\x04\x02\x01\x05\x01\x03\x01\x03\x050\b\f\x01\x10\x01\x03\x03\x01\x15\a\r\x01\x02\x05\x06\x06\x06\x02\x01\x02\xba()\x01\x06\x02\x01\x03'#\x10Z\x01\x01\x02\x01\x04c4\x90W\n\x02&(\x04\x04*'\x01\x01\b+_\x03\x03\x02\x02\x01\x01\x01\n\x1b\x01\x04\x01\x04\x05\n\x02\x01\x04\x10\r\x1c\x06\x04\r\n\x02\x02\x02\x01\x03\x06\x13\n\x02\x03\x01\x01\x02\x01\x02\x05!\x01\x01\x01\t\x14\a\x05\x01\x06\x02\x01\x01\x13\xb8\x06\n\v\b\r\x05\x04\x01\x01\x01\x04\x03\x19\"\n\x03\x1c\x1a\f\n\x01\x02\x03\x01\x01\x01\x01\x01+.\x03\x02\x15e\x13\x02\x01\x01\x05\x03\x04\x03\x16\b\a\a\x06\x02\x04\t\b\x04\x06\x02\x03\x03\x03\x13\x05\x04\x01\x04\x01\x05\x04\x02\x02\x05\x15\x05\t\v\x03\x01\x01\x04\x04\x01\x03\x03\x01\x01\x01\x11\x03\x02+\a\x01\x02\x01\x02\x01\x01\x01\x01\x03\x02\x03\x03\x04\x04\x02\x02\x03\x04\x06\x03\x04\x02\x02\x1a\x02\x01\x04\x04\x02\x12\x01\x02\x01\x01\x13\x03\x02\x05\x04\x06\x03\x03\x16\x02\x01\x02\x02\x03\x01\x02\x01\x0e\x02\x02g\x03\x01\x02\x01!\x04\x01\x01\x01\x03\x04\x06\x04\x02\x01\x01\x0f\x01\x03\x02\x02\x01\x02\f\x01\x02\x02\v\x03\x02\x01\x02\x01\x05\"\x01\x02\x02\x04\x01\x05\x03\x01\x03\a\x12\x0f\x05\x04\x12\a\x05\x02\x02\x01\x06\x15\v\x0f\x01\t\r\x01\x02\x01\x03\x05\x01\x03\n\a\x01\x01\x02\x01\x03\x01\x02&\x01\x01\x02\x05\x01\x01\x06\x01\x02\x01\x12\x1c\x06\x02\x02\x0e\b\x02\x02\x01\x02\x01\x03\x01\x01\x02\x01\x02\x14\x01\x02\x03\x01\x03\x01$\x01\x02\x01\a\xb6\b(\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\r\x01\x01\f\x02\x01\x02\xb7\x01YeV\x03\b\x0f\x03\x05\a\v\x03\v\x02j\x01\f\r\x01\v\x03\x0f\x03\x04\n\x05\x04\x01\t\f\b\b\x04\x04\x03U\x02\x06\x06\x01\a\x06\xd4\x06\x02\x04\x01\xc0{\x02\x01\x05}~\x04\x01\x06:<\x01\r# \x1c\x11\x01\x02\x01\xe2\x1b\x03\x02\x06t\x03\x1487\f\x06\x01\x05\x05\xe687\x02\x01\x01O&\x01\x01\t\x01\r\n\x13\x02\x01\x1b\x06\x04\x01\x04\x01\x01\x02\x02\x02\x02\rC\f\x01\x01\x02\x03\x05\a\x1b\x13\x02\x01\x04\x04\x01\x19\x06\x02\x01\v\x02\x01\x01\x02\x02\x1a\x01\x01FG\x01\x01\x06C=\xe6\x05#\x01\x03\x03\x01'\x1eS\x97\x01\x03AG\x06\x06JBJ7\x01\x02\x14\x01\x02\x02\x02\x03\x04\x02\x01\x01z\x01\x02\x02\a\r\a\x0f\x0e\x01\x01\x19\r\x14\x03\x02\x01H1\x01\x03\x05\x05\x04\t\t\x03\x01\x01\x01\x02\x16\b\x02\x05\t\v\t\b\x06\x0e\x04\x02\x02\x01\x1e\x01\t\x02\x01\x01\x01\x02\x01\x03\x13\x05\x01\x01\x06\x01\x0f\x03\x04\x1e\a\n\x14!\x02\x01\n\n\x03\x01\x03\x06\x04\x04\x02\x06\x04\x17\x1d\x15\"R\x01\x02\x01\x04\v\x1d\x04\x01\x01\x02\x01\x01\x0e\a\x03\x04\f\b\x04\x01\x02\x04%\x06\x01\x02\x01\x03\x01\x04&\x05\x02\x03\x0f\x04\x01\x02\x01\x03\x05\n\x01\x02\n\n\x01\x01\x01\x01\x02\x02\x04\x06\x02\x01\x05\x06\x02\x01\x01\x01\x01\x02\x03\a\x05)\x01\x01\x01\x01/\x04\x02\x04\x02(\x03\x01\x03\x02\x01\x03\x01'\x01\x03\x04\x04E\x02\x01\x01\x01\x01\x01\x03\b\x01\x02\x03\x01\x01\x02\x10\x02\x01\x01\x01\x03\b\x06\x03\x02\x03\x01\x01\x06\x02\x03\x04\x03\x03\x01\x01\x02\x04\x02\x02\x05\x05\x02\x03\x01\x023n\x01\x04\x02\x05\x02\x02\x02\a\x02\x05\x16\r\n\x06\x02\x01\x05\x01\x01\x02\x04\v\x01\x03\x06\b\x1f\x06\x0eq\x03\x01\x03\x02!\b\x04\x01\x01\x05\x01\x04\x05\x06\x06\x03\x02\x01\x1c\x14\x03\x01\x03:\x04\x03\x03\x05\x10\x0e\v\x03\x01\x01\x02\x02\x01\x01\x02\x04\xfe\xc6\x05g\x05\x01\x05\b\n\v\t\a\x01\x04\x03\x02\x1f\x02\x02\x1f\x05\x05\x01\n&\x02\x013:\xba\x03\x02\x02\a\v\x19\x03\x01\x02\x01\x1a\x0f\x18\x05\x02\x06\x04$\x03\x05&\x06\x01\b\x06\x1b\x06\xc6\x0f\b\ae\x05\x01\x06\a\x01\x05\x05\x01\x01\x02\x17\x10\x06\n\x00\x15\x00\x00\x00Z\x02\x80\x01&\x00\"\x00'\x00[\x00r\x00~\x00\x83\x00\x9a\x00\xe2\x00\xe6\x00\xfc\x01\x17\x01'\x01<\x01J\x01X\x01_\x01l\x01\x88\x01\x98\x01\xab\x01\xd0\x00\x00%\".\x015&\x14\x17&7'\a46?\x01\x16\x14\x06\x1567\x06\x156\x17\x06\x16327\x1e\x01\x17\x066\x14\a6'\x17\x14\x06'\x167\x06&5\x06\x17&'46&'.\x01<\x01.\x015\x14\x172\x163\x16\x15\x14\x170\x16\x17\x1e\x023\x166'\x1e\x01\a\x1674'6\x16'67&\a67\a2>\x013\a0?\x012\x17&\a&\a&\x172\x16\x15\x14#\"'75'6\x17\x1654\a%'4>\x01\x172\x15\x14\a&16&#\"\x06\x17\x06\x17&'\x06\x176'3&7\x1e\x01\x174'&7\x14\x16\x15&'&'&7\x14\x16\a\x16\x1527\x16\a6&\a5&\a6\x17\x063\x153\x06#65\x06#6'&\a67\"'6\x17&\a2\x17\x06\a61&\a>\x02\x17&'\x16\x17707\x15&#\a&#\x16\a\x06'5063632\x17\x05\x1e\x01\x14\x15\x14\a\x0e\x04*\x02#75'35'32\x16\x15\x14'\x152\x162>\x02=\x014.\x02#\"\a:\x03>\x045#54.\x02*\x02#\x17\x153\a#75'3\x17#\x153\a72\x1e\x02\x0e\x02#\".\x01>\x01\x1726&\"\x06\x16'\x15\x17#75'3\a\x177'3'&'\x1632\x170\x0e\x02\x1563\x06\x157\x06\x17\x06+\x01676=\x014\x17\x150:\x02>\x024.\x02\"&\x06\x173\a\x15#.\x01'\x15\x17#75'3\x1e\x01\x175'\x1e\x02\x15\x14\x0e\x01#6'254.\x02*\x02#\x15&\a63&\a67\x06\a4'&'\x16\x01:\x05\a\x04\x03\x01\v\x06\x01\x02\x05\x02\x02\x01\x01\x03\b\x02\x04\x04\b\x03\b\b\x06\x01\x06\x01\t$\x05\x02\x02\x0f\b\x06\x05\x04\x03\x14\x05\x05\x06\x01\x01\x04\a\x02\x02\x04\x01\x03\x01\x03\x01\x01\x01\x05\x02\x01\x04\x04\x01\x04\x05\x01\x03\x01\x03\t\x01\x05\x05\b'\v\r\v\t\x02\b\x01\x01\x03\x05\x02\x03\x02\x06\b\x05\b\x05\r\t\x05\xf1\x1b!;\x18\x1c\b\b\x1b\b//\xfe\xfa\x04\x01\n\t\x11\x05\b\x03\x03\x05\x03\x04\x01\x02\x01\x05\x02\x03\x01\x01\x06\a\x02\x01\x02\v\x01\x04\x03\x04\x0e\x01\x06\x02\x01\x01\x02\x0f\x01\x02\x02\x01\x01\x06\x01\x04\x03\x01\n\x03\x02\x02\x03\x03\x03\x06\x03\x01\x02\x05\x04\x03\x05\x01\x05\x02\x03\x04\x05\b\x05\x02\x02\x06\x05\x01\x01\a\x01\x05\x04\x1a\x01\x03\x01*\x01\x02\x02\x03\x05\x03\x02\x05\x06\x01\x01\x01\x01\x03\x04\x03\x02\xfe\xe3\n\t\n\x02\x05\x05\t\a\x0e\f\x17\t\b\v\v\b8\x0e\x179\x01\b\x06\a\x04\x03\x02\b\a\b\x03\x01\x02\b\x04\x06\x03\x04\x03\x02\x01\x01\x02\x04\x05\a\x05\b\x01e<\x0eQ\a\aI\x0e4%\x0e\xbf\x10\x18\r\x06\x06\f\x19\x10\x16\x1d\x06\a\x1d\x15\x13\x0e\x0f#\x0f\x0fJ\a*\a,-\x06\x15\x14\x06*I\b\x01\a!\x19\a\x03\x03\x04\x03\x06\n\x03\x02\x01\v\x0f#\x04\x04\x02\x13\x05\x03\x06\x03\x04\x02\x02\x04\x03\x06\x03\x05\xe5'\a\x16\x02,\x02\a'\a\a\x1f\x02)\x03r\x0f\x11\x02\x04\x12\x0f\a\t\x13\x01\x04\x04\x05\x03\x05\x01\x04\x03\x03\x03\t\x06\x01\x03\x03\x03\x03\b\x02\a\xce\x04\x03\x01\x03\x04\x01\n\x10\x02\x02\x04\a\x02\x01\x01\x01\x04\x03\x05\x03\x03\x04\x05\x02\t\x12\v\x01\x05\x01\x12\x19\a\x01\x05\x04\n\x05\x06\x01\x04\x02\x06\x03\t\x05\x04\x02\x05\x03\a\x03\x05\x02\x03\x03\x02\x03\x02\x03\x03\x01\x01\x01\x02\x01\x01\x01\x01\x01\x03\x04\x03\x04\x03\x02\b\x02\x02\a\x05\x01\x01\a\x0e\x0f\x01\x01\n\b\x05\x04\x02\x04\x04\x01\x01\a\x03\x05\b\x18\x043\x1b\x161\x02\bN\b\x02L\x06! \x05d\a\x03\b\t\x01\x10\b\x06\b\x04\n\x06\x04\x04\x04\x03\x06\x04\v\x03\x02\x02\x04\x03\x06\x03\x04\x02\a\x04\x05\r\x02\x04\x05\x02\x01\x04\x03\x04\x0f\x05\x01\x01\x02\a\x03\x03\x03\x01\x04\x03\x04\x01\x01\x04\x05\x05\x01\x03\x01\x03\x05\x04\x03\x04\x02\x01\x03\x01\x02\x05\x01\x01\x05\x05\x03\x01\x01\x03\x02\x06\x03\x01\x04\x04\x01\x01\x12\x01\x01\x03\x05\x02\x01\x01\x10\x02\x04\x02l\x03\f\x04\x06\f\x06\x01\x02\x01\x01\x01\t \x0f\x1d\t\v\x0e\x10\x18\x15\x01\x01\x02\x04\x03\x02\x04\x04\x01\x01<\x01\x01\x01\x02\x03\x02\x04\x02\x04\x02\x01\x03\x10\x15\tM\b\x15\x0f\x15<\v\x12\x15\x15\x12\v\x15\x1d\x1d\x15N\x1c\x1c\x1c\x1c\t\x13\t\t\x13B\a&&\aU\x06\t\x04\x17\x02\x02\x03\x01\x01\x06\x0e\x03\x06\x06\b\x01\x03\x02\x04'\x05\x04\"\x03\x03\a\b\a\x03\x03\x01\x01O\tU\a,\x050\b\tL\t\x04'\b*i\x01\x10\f\x05\x05\r\x10\t\b\x11\x04\a\x03\x03\x04\x01\x01\x02\x03\x06\x02\x03\x01\x03\b\x02\x06\t\x04\x00\x05\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\t\x00\x19\x00#\x005\x00>\x00\x006\x16\x1d\x01\x14\x06+\x0153%2\x16\x15\x11\x14\x06#!\"&5\x11463\x1354&+\x01\x1532675#\"\x06\x1d\x01\x14\x16735#535#5\x177#\a'#\x17\x1e\x01r\f\f\x06\x11\x11\x01(\x12\x1a\x1a\x12\xfe\x98\x12\x1a\x1a\x12n\x17\x180/\x19\x17e?\t\v\f\t>5 \x9d&!\x1d\x1e &\b\x1d\xf4\t\bF\t\bh\xac\x1a\x12\xfe\x98\x12\x1a\x1a\x12\x01h\x12\x1a\xfe\xfdG\x11\x1e\xa5\x1dj\x1e\f\t}\b\f\x01\x1d&\x1e&s\x91rr\x91\x13\x03\x00\x00\x05\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x03\x00!\x00G\x00K\x00O\x00\x00\x01\x17\a'3\x16\x1767\x1e\x01\x1767&'&7>\x01\x17\x16\x17672&1&'&\x06\a\x06\x1767.\x04'\x0e\x02\a.\x01'\x061\x06\a\x06\x17\x1e\x01\x17\x16\a\x0e\x01'&'\x06\a\x16\x17\x166\x03\t\x023\x177'\x01\x00\xdf\xdf\xdf7\x16\x13:\x04\x06\x19\x06\x0f\x15\n\x1a\x02\x02\f \r\b)\x19\b\x01\x01\"\x1c\x19A\x1eJ\xd4D!\x04\t\b\b\b\x04\a\x18\x15\t\a\x19\x06\x02\x1c\x04\x02\x03\x06\x17\x03\x03\x03\r!\x0e\x06&\t\x1b5\x14\x15=*\x01\x00\xff\x00\xff\x00\x10\xf0\xf0\xf0\x01\x9f\xdf\xdf\xdf\x15\x149\x04\x06\x19\a\x0f\x14\n\x1a\x03\x02\f\x03\n\x06&\x1a\t\x03&\x15\x14\b\x1eK|D!\x04\b\b\b\b\x04\a\x17\x15\t\a\x1a\x05\x01\x1c\x04\x02\x03\x06\x17\x03\x04\x03\f\x01\v\x05%\t\x1b6\r\x0e\t\x01\u007f\xff\x00\xff\x00\x01\x00\xf0\xf0\xf0\x00\x00\x05\x00\x00\x00\t\x02\x82\x01x\x00\x04\x00\x0f\x002\x00K\x00^\x00\x00\x01\x16\x17\a6\a6\x17\x16\a\x06\a\x06\a'6%\x16\x15\x16\x0e\x01'\x14\x06\a\x06#\"&/\x0145467'&54>\x01\x1767676\x16\x17\a>\x017>\x01.\x01#0#\"\a\x06\a\x177\x17\a\x177'\a'7\x177'\a'\x06\a\x177\x0f\x01\x177'\a?\x01\x17\a\x01\xa6\x04\x15(\x0e\xcd\x15\x06\x06\x15\x06\a\n\x18\x05\x17\x01Wb\x01o\xb3o\v\tw\x04\v\x10\x01\x04\n\b\x02QV\x8dR\x05\x0eO9\n\x12\x05\xf2\r\x1e\b\b\x04\b\x1b\x14\x01\vX2$\x04\x15\v\x14\x04s\x04\x15\x020\xddm\x04\x15C=J\x04\x11!\x15\x04q\x04\x13\x04:\x06\x0f\x01\x1c\t.\v>/\x05\x11\x14\v\x03\x02\x03\x06.\x06\x1f18'8\v\x16\n\x10\x03\x1f\x0e\v,\x02\x01\b\x0f\x03\x12-2$3\x13\a\r\x04\x15\x0f\x03\t\t\xd0\x03\x13\v\r$!\x17\x18\r\n,\x05s\x05,\x1e-\x06\x18\r\v\x1d-\x06\x91\x10\x14,\x04~\x06,\x1e'\x05\x12\x0f\x0e\x04\x00\x1a\x00\x00\x00\x03\x02\x81\x01}\x00\x06\x00\x1c\x00%\x00W\x00a\x00h\x00\x91\x00\xa9\x00\xd9\x01\x02\x01*\x01=\x01U\x01`\x01\u007f\x01\x9a\x01\xb5\x01\xc6\x01\xe8\x02W\x02\\\x02b\x02y\x02\x84\x02\x8c\x02\x94\x00\x0076\x17\x16\a\x06&\x05654&'&\a#6'76\x17\x1e\x01\a\x06\a\"10'4?\x01\x06\a\x06#&'2\x16\x17\x06\a\x16\a#4'\x06\a\x16\x15\x14\a5654'\x16\x17\x06\a&'\x16\x15\x14\a654&#\"\x06\a#.\x01/\x01>\x04\x036'&\a\x0e\x01\x17\x1e\x017\x17'\a\x177'\x17>\x0215\x06.\x01'675&'\x06\a#&'5676\x177.\x01#5\x06\a\x156\x17\x1e\x03\x06\x1575\".\x01'56\x175'#\x06\a\x1734>\x013\x16\a\x1507&'.\x01'&7\"\a\x152\x1f\x01#0\x06\a4/\x015\"\a2\x17\x14\x1e\x01\x15\x16\a67&'4.\x011767\x17\x16\x17\x156767#\x0e\x01'4.\x0156\x17461#\x06\a#&56\x173&'5\x06\a#\x16\x17\x14\x1e\x01\x17\a\x1563765\x16\x17\x1635\"'&'474656'.\x01\x06#\a\x176\x17\x16\a\x0e\x03\a\x0e\x01\x17\x1672\x17<\x0115&\x06\a\x06\x167507\x06&7>\x017\x16\x15\a\x06#\a\x16\x177.\x0176\x177.\x02\x0f\x017&#\x17\x1676&'&\a\x06\x1e\x01\x17&561\"&'\x1d\x01\x06\x0f\x012\x17\x16157>\x0172\x170\x15\a\x152\x1e\x01'\x06\x163\x16>\x011\a\x16\x177&67>\x027&'\a\x16\x0f\x01&\x06\x1775.\x01\a\x06\x17\x16\a\x06\"&7#\x06\x15\x1e\x0176'&762\x16\x177&'\a2\x17\x06\x0f\x02\x174767\x16?\x01.\x02\x0e\x01\x1e\x023\x16\a\x06'45'\a\x1e\x023654&54\x17\x16\a\x14\a73.\x02#&\a7\a'7'\"\a'\x170#&7'\x0e\x01\a'\x17\a'\x16\x17\a'\a\x17\a7\a'\a\x17\a'\a\x17&'.\x01?\x01'\x06\a\x17>\x02\x17032\x16\x17\x16\x177'\x17\a7\x16\x17'\a0\x17\x16\x06\a\x1767'\x06'&/\x02\x17\a67'\a\x06\a7\"\a\x17'7\a6\x17\x1e\x03%\x1763'\x17\a'>\x01\x16'2\x1e\x03\x15\x14\a#54.\x02#\"\a#&'56\x05\x0e\x02#\"7>\x01\x17\x16\a\x16\a\x06'&76\x17567\x06\x15\"&\xdb\v\v\n\n\v\x16\x01\\\x049+aW\x01\x01\x05\x01Yc.:\x02\x01\x04\x01\xa4\a\x0f\x01\x01\x02\t\b3o\xa9\v\x03\x06\x01\x01\x01\x02\b\b\x04\x10\f\x0e\x04\x03\x16\x05\x04\a\f\x1c\x16I9E|,\x01\x1cr6\x01\b\x19CIo*\x11\f\r\x12\b\x02\x05\x06\x10\v\x02\x04\x0e\x19\f\v\t\x01\x04\x04\x01\x02\x05\x04\x05\x06\x01\x01\x03\b\x01\x04\x01\x06\x06\x03\x02\x01\x01\x02\x01\x11\t\x03\x02\x04\b\x03\x03\x018\x01\x02\x06\x06\n\x03\x03\x01\x17\x05\x01\x01\x05\x04\x01\r\x017\x02\x01\x01\x04\x01\x01\x01\x02\t\x02\x01\x03\x01\n\x03\x01\x02\x03\b\x02\x01\x04\x05\x01\x01\b\x02\x02\x01\x02\x02\x01\t\x03\x01\x02\x01\x04&\x01\x01\x01\x01\r\x02\x01\x01\a\x03\x01\x01\x02\b\x01\x01\r\x03\x01\x01\x01\x0e\v\x01\x02\x01\x02\x02\x01\x01\x10\a\v\a\x02\x02\x12\x03\x04\x01\x01\x01\x01\x02\x01\x01\x02\x0e\x15\r\x05\x03\x0e\r\x06\x04\x02\a\a\t\x03\x06\x04\x04\x06\f\x05+\v\x10\x02\x02\x14\b\x02\x05\x12\x02\x02\x0f\v\x05\x05\x01\a\x01\x13\x12\x01\t\x01\x05\t\f\v\x01\x03\b\x03\x0f\x01\x0e\r\v\x0e\x04\x02\x06\x06\x0e\x05\x02\x02\a.\x01\x01\x01\x05\x02\x06\b\x03\x02\x02\x02\x01\x01\x02\x01\x01\x06\x02\x01\x03\x04\x04\n\x06\x0e\x02\x05\x02\x02\x0e\x04\x02\x03\x03\v\x02\x03\x06\x03\a\x10\x02\a\x02\b\x02\x18\x15\x03\x03\n\x02\x02\x04\x03\x01\x01\x04\x04\x01\x01\x02\x02\v\x02\x03\x04\x03\x01\x01\x03\x03\x16\x01\x04\t\x03\x04\x02\x03\x06\x02\x01\x06\x01\x04\x05\x03\x1d\b\x01\x04\f\f\x05\x01\x03\x04\x01\x02\x06\b\x02\x03\x05\x02\x04\v\x04\r\a\a\x05\x01\x02&\x01\x0fHL%CA\x15\"\t\a\x03\x03\x04\f\r\x01\x10\v\x03\x02\x13\v\x17;\x05\x11\x02\x03\x1d\x1e\x11\x0e\f_\x04\x01\r\x05\x04\x1a(\x13\f\x11\x1a\n\x03\b\x04\x1b\x1f\x05\x01\x03\a\x02\x01\x04\f!$\x1c\f\x1c$\x05*\x1e\x03\"\x02\x17\x01\x02\x05\x03\x12\x15\x01\n\x02\x02\x13\n\x02=\r\x17\x1b\x01\x05\x01\x12\x16\x1e%\x04\x19[UCB-K+\x17\xfem\x03\a\x04\t\x8b\v\x16\x03\x11\v\x1bAnI3\x17\x01\x01,MsB<2\x01\b\x0e7\x01\x0f\x04\a\x04\x03\b\x02\x01\n\x06\n@\b\x03\x03\t\t\x03\x04 \x04\x03\x01\x02\x03f\t\x10\x0f\b\t\x1fD\x0e\a\x19(\x03\x06P\v\n\x02G\v\x05,\x1d\f\b\xb6\b\a\v\x1b\x03\a\x01\xa1sR\x02\x03\v\x05\x06\t\x05\a\n\x10\x1c\n\x01\f\x14\x19\x10\b\n\x15)\t\a\x0f\x17\x1c\x14\x13\x1c\x1f1G9Si\x0e\x02\t\x192&\x1e\xfe\xde\x0f\x10\x13\r\x06\x14\a\a\x03\x8e\b\x05\x1b\x1d\x06G\x87\x01\x02\x03\x01\x01\x01\b\b\x04\x01\x01\x03\x02\x02\x06\t\x01\x01\x06\x02\x01\x01\x01\x01\x03\x01\t\a\x01\x01\x03\a\f\x04\x06\x01\x02 \x01\x01\x0e\x0f\x01\x03\x01\x01\x05\n\x03\x06\x02\x03\x02\x1e\x02\x01\x16\x01\x03\x03\x15\x02\x03\x02\x02\x01\x04\t\x03\x01\x01\x04\x04\x05\x03\x04\x01\f\r\x01\x03\x02\x03\x01\x01\x03\x01\x06\x06\x01\x03\x01\x01\t\x04\x05\x02\b\x03\x03\x03\x03\x01\x01\x06\x05\x01\x01\x01\x02\x03\x01\x01\x06\x04\x03\x03\x03\x02\x01\x01\x02\x01\x03\x03\n\n\x03\x04\x01\x04-\x04\x02\x04\x04\x01\x05\x01\x02\x04\x0e\a\x01\x14\x02\t\x03\t\b\x01\x10\x03\x0e\t\x05\x06\x02\x05\x03\x04\x03\x06\x11\t\v\x01\x12\x01\x04\x01\x06\a\t\f\f\x05\x01\x06\b\x06\f\n\x04P\x01\x037\a\x05\x03\x04\x05\x02\x0f\x1d\a\x06\v\x01\x03\x04\x01\v\x12\ay\x03\x0f\x06\v\x02\x05\x0f\x05\b\a\n\x01\x02\x1a\x02\x01\x01\x02\n\n\x02\x01\x01\x01\x03\x01\x04\x01\x03\a\x02\x01\x01\x01Y\x0f%\x01\x02\x02\a\x06\x02\x04\x04\f\x1e\a\b\x10\a\a\x0e\x04\x05\x06\x1a\n\x01\\\x03\x01\x05\x01\x04\x03\x06\x06\x03\x02\x05\x02\x04\x01\x04\x01\x04\x05\x05\a\x01\x01\x03\x10\x04\x03\x06\x04\x02\x06\v\x01\x01\x04\x02\x02\b\b\x02*\n\x03\x06\t\x02\b\v\t\t\t\x01\x02\v\x03\x03\x02\x0e\x02\x03\x06\x02\x0f\x04\x15\x02\a\x03\x03\x06\x01\x06\a/B\x1b\x01%=A\x15\x02\b\x02\x1d=\b\v\v\x01\x05\x04\f+\x02\x0e\x04\x10\r$\t*\x05\x1d\n\x03\x04\x18\r\x1f\n;\f\x12\x1b\r\x06\a\a\x13\x18\x06\x01\x02\x03\x01\n\x1e!\x19\b^+\rXF\tD\x05;\b\x02\x03\x05\b\a\x05\x02\x06\x047\x05\b%+\x06\x04\x1b\x02\x15\x01P\t\x10\x13\x15\t'\x01\x01\x1f/#b\t\x02\b(&\x11\f\v\x02|\x1f2=;\x1b\x10\x03\n(P@(\x0e\b\x04\x01\x0e\xaa\x10\x10\x03\x0f\n\x18\x01\x017\x02\f\r\x02\x02\r\r\x18\x01\x06\x04\v\x01\x01\x00\x00\x02\x00\x17\xff\xc0\x02)\x01\xc0\x00\a\x00\r\x00\x00%\v\x01'\x1b\x0173\x05\x1b\x01#\x03\a\x01\xd1\xce\xcc \xec\xce7 \xfeF\x96\xec!\xcbv'\x01a\xfe\xa0\x01\x01\x97\xfe\x9e_j\x01\x02\xfek\x01]\xca\x00\x00\x00\x00\x1a\x00\x02\xff\xbf\x02A\x01\xc8\x00\t\x00\x13\x002\x00N\x00e\x00m\x00\x82\x00\x85\x00\x99\x00\xb6\x00\xc2\x00\xca\x00\xe1\x00\xe9\x00\xfa\x01\x02\x01\f\x01Q\x01l\x01\u007f\x01\xe2\x01\xf9\x02\x03\x02\r\x020\x02:\x00\x00?\x01'37\x173\a\x17'\x177'37\x173\a\x17'\a2\x16\x15\x14#\"=\x01432\x15\x14+\x01\"54\"\x1d\x01\x142545<\x0163\a2\x1d\x01\x14+\x01\"=\x014\x1732\x1d\x01\x14+\x01\x1532\x1d\x01\x14+\x01\x15'\x17\x16+\x01\"5'#\x15\x14+\x01\"=\x014;\x012\x1d\x01\x14'54+\x01\x15327\x17\x16+\x01\"5'#\a\x14+\x02\"?\x014;\x012\a3'\x17\x14+\x01\"=\x01#\"=\x014;\x012\x1d\x01\x14+\x01\x172\x1d\x01\x14+\x01\"=\x014;\x012\x1d\x02\x14+\x01\x1532\x1d\x01\x14+\x01\x15'2\x1d\x01\x14+\x01\"=\x0143\x1754\"\x1d\x01\x142'\x17\x16+\x01\"5'#\x15\x14+\x01\"=\x014;\x012\x1d\x01\x14'2=\x014+\x01\x1572\x1d\x01\x14+\x01\x153\x14+\x01\"=\x0143\x1754+\x01\x1532\a3\a\x17'\a7'3?\x01\x1e\x01\x0e\x01\a\x16\a\x06#\"&'&'\x06\x16\x17\x1e\x02>\x017\x16\x17\x0e\x03&'.\x017.\x035467&7632\x16\x17\x16\x176&'.\x01\"\x0e\x01\a&'>\x01\x1e\x01\a\x16%\x0e\x02\x14\x1e\x0416767\x16\x17\x06\a632\x17.\x01#\"\x016'\x06\a\x06\a&'67\x06#\"'\x1e\x0132767>\x02.\x01'&'\x06\a\x06\a&'67&'\x16\x17\x06\a.\x03'&#\"\a\x06\a\x06\a&'67\x06\a\x16\x17\x06\a&#&'\x0e\x02\x16\x17670327\x163\x06\a\x16\x17&'27\x16\x17\x16\x17\x163276727\x16\x17\x06\a67&'675\x163\x16'32\x1d\x01\x14+\x01\"=\x014;\x012\x1d\x01\x142=\x0143\a3\a\x17'\a7'37\a\x17\a\x17'\a7'?\x022\x1d\x02\x14+\x01\"=\x024;\x022\x1d\x011\x14+\x02\x15;\x012\x1d\x01\x14+\x02\x157\x173\a\x17'\a7'3\xfb\x02\x06\a\x02\x03\a\x06\x02\x06:\x02\x06\b\x02\x02\b\x06\x02\x06a\x03\x01\x11\x11\x11\x11\x04\x03\x04\f\f\x02\x02N\x04\x04\x16\x03\x03\x16\x04\x04\x0e\v\x04\x04\v\x1c\b\x02\x05\x03\x04\b\x05\x04\x04\x03\x03\x0e\x11\f\x06\x05\x05\x06P\v\x01\x04\x04\x04\x02\f\x02\x03\x01\x03\x04\x01\v\x04\a\x04\f\t\x05U\x04\x03\x04\a\x04\x04\x19\x04\x04\a\xf8\x02\x02\x17\x02\x02\x17\x02\x02\x13\x10\x02\x02\x10J\x0f\x0f\x01\x0f\x0f\v\x15\x15.\n\x01\x02\x02\x02\v\v\x02\x01\x02\x02\x0e\x0f\x10\v\v\n`\x0f\x0f\v\x01\x02\x02\x02\x02\x18\n\n\n\n\xc9\a\x06\x02\x06\x06\x03\x06\a\x02\xe6--\a=8\x19\x19\x0f \"b2-(\x0e\v\x13\x02\x05\x17\x19*\x17\x06\x05\x13#\x1d\x1a\x15\t\x18\r\x0f\x0e\x1c1\x1fA7\x18\x18\x10 \"a3+*\r\n\x13\x03\a\x16\x19)\x17\x05\x05(I3\v\x0e\x12\xfe\xb2\x04\x04\x02\x02\x02\x03\x02\x02*+\x17\x1b\x05\x05\x16\x14\x1b\x1b\x14\x14.X\x1d\x18\x01&\x15\x16%0\x17\x1c\x05\x05\x17\x13\x1a\x1b\x14\x14-X\x1e\x17\x15T\x16\x02\x02\x01\f$\x1e\x11\x12\x05\a\x06\x03\x03\x04\b\x06 (\x12\x11\a\x04\x04\b\x05\x0f\n\x19\x19 \x1f\x12\x11\x06\x04\x01\x05\x0f\x12( \x06\t\x01\x01\x05\n\a\x054:\x049:\x06\a\x01\x03\x03\x02\x06\b\x06$$\x11\x10\b\x04\x02\x01\x11\x14\x19\x19\x1f\x1f\x12\x10\a\x04\x03\x03\x0f\x11$$\x06\t\x03\x03\x03\a\am\x01\x02\x0f\x01\x0f\x02\x01\x02\x14\x02\f\a\x06\x02\x06\x05\x02\x06\a\x02\x1c\a\x06\x02\x06\x05\x02\x06\a\x02\b\x02\x02\x17\x02\x02\x16\x01\x01\x01\x01\x13\x10\x01\x01\x01\x01\x10\f\x03\a\x06\x02\x06\x05\x02\x06\a\xec\a\x04\a\a\x04\a\x04\x04\a\x04\a\a\x04\a\x046\x04\n\x0e\x0e(\x0e\x0e\f\n\x06\x06$\x06\x06\x01\x02\x04\x03\x02\x12\x03\x03\x03\x03<\x04\x01\x03\x03\x03\x13\x03\x03\x03\x14\x13\x18\x04\x03\x17\x17\x03\x03;\x04\x0e\f\t\v\t\x06\x15\x1b;\x04\x03\f\f\x03\x04;\x03*\x1d2\x03\x036\x04\x02\x03\x03\x02\x045\x02\x01\x01\x01@\x01\x01\x01\x01\x01\x1a\x02\x01\x02\x1b?\x0e(\x0e\x0e(\x0e4$\f\f$\v\x19\x1b\x02\x01\x1b\x1b\x01\x01@\x01\x0e\t\v\x01\v\a\v\x1d!\x0e\n\x0e\x1b\x01\x01@\x01\x17\b\v\x1e3\x04\a\x04\x04\a\x04\a\x81\x1100/\x10[+\x1cHF\x04\t?@\v\x01\x03\x01\t\x1b\x16\x05\x05\x12\x1a\x0e\x05\x03\x05\x0eN>\x03\v\x16$\x14\x1e2\x0f[+\x1cGG\x04\t>A\v\x01\x03\b\x1b\x16\x05\x05'\x1e\x1cQ;\x04\x80\x06\x11\x11\x13\x11\x10\x0e\n\a\v\x04\"\x1e\x05\x05\x19\x1c\x02\x01>@\xfe6'T\n\x05\"\x1e\x05\x05\x19\x1c\x02\x01>@\x9e\x18'\x04\x06\x17\x13\x1b\v\a\x04\x13\x14\x01\x05\x03\x02\x16\x16\b\x04\x1b\x1d\x02\x05\x05\v\n\x17\x0f\x02\x03\x1a\x1f\x02\x06\x05\x03\x1c\x1b\x04\t\x15\x16\x01\x01\x05\x11\x13\x0f+--\x10\x14\x14\x01\x01\x16\x15\b\x04\x1a\x1d\x03\x01\x01\x1e\x1b\x02\x03\x1a\x1d\x04\x02\x01\x1d\x19\x04\t\x15\x15\x01\x02\x01\x06\x12_\x014\x0e\x0e4\x01\x012\v\v2\x01U\x04\a\x04\x04\a\x04\a\x0e\x01\x04\a\x04\x04\a\x04\x01\x06\x18\x01\x01\x01\x01\x01?\x01\x01\x01\x01\x02\x1a\x02\x01\x02\x1bd\a\x04\a\x04\x04\a\x04\x00\x00\x03\x00\x19\x00\x00\x01\xe7\x01\x80\x00\x02\x00\x05\x00\n\x00\x00\x013\x11\x01\x03\x11\x1f\x01#'#\x01<\xaa\xfeު\xe6lJ\x1eO\x01\x80\xfe\x80\x01\x80\xfe\x80\x01\x80\x8e\xf2M\x00\x00\x00\x00\x03\x00\x02\xff\xe0\x02\b\x01\xa0\x00\x06\x00\x0f\x00\x12\x00\x007!\x17!\"&'%\x16\x0f\x01\x0132\x16\x17\a#7\x02\x01;;\xfe\xe3\r\x1b\x06\x01\xc9\x11\x13)\xfe\xffX\r\x1b\x06=\xe7tGg\x11\vf\x1b G\x01\xc0\x10\v\xf5\xc8\x00\x00\x00\x02\xff\xfd\xff\xbf\x02\x03\x01\xc1\x00\f\x00\x1f\x00\x007\x1e\x01\a\x06+\x01\"&?\x01>\x01762\x17\x13\x16\x06+\x01\"'.\x05>\x01\x982\x1e\x1d\x04\t\xaf\b\t\x04}\x04\x0fb\x06\x10\x04\xf0\x04\t\b\xae\t\x05\t'\x15\x1f\f\t\t\x19\xd46\x9b;\b\x0e\b\xfb\b\x01\xde\b\b\xfe\x1e\b\x0e\b\x12J*H3G\x1b\x05\n\x02\r<\a\r\x05\aZ\x00\x00\x00\x10\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x03\x00\a\x00\x0f\x00\x17\x00\x1b\x00#\x00+\x003\x007\x00;\x00C\x00G\x00K\x00O\x00W\x00_\x00\x00\x01\x17\a5\a73\x15'7\x17#\x15\a'5\x0f\x01#\x15'7\x153?\x01\x17\x15\x17\a5#'735%53\a\x17\x15#'%\x15'\a#57'\x03#'7'57\x1f\x01\x15#7'53\x177\x15\a'\x17\a#5\a'53\x17\a'357\x17\x15'\x17#5\x1773\x15\x01\"\x1fLv -#78-\v\v\x12\v\x8088\x80ZL B8\x80\n\n\x80\xfe\xb9P [\x10Z\x01\x1c Z\x0fZ\x1fd- M\x8b!L\xd0N\x1fZ\x0fZ L/\x1f-\x93!mj87,\v\vz P!Z\x10\x01^\x1fMl\x1f\x1flv88\x80\n\n\x80\xa8\n-78-\nM -\x157-\n\v-\x18N\x1f[\x0f[.N [\x0f[\x1f\xfe\xc4 LG- MdO Z\x10[[- Mj l/ -\x9477\x80\v\v\x80* O [\x10\x00\x00\x00\x00\x02\xff\xfa\xff\xc3\x02\x06\x01\xbd\x00#\x00F\x00\x00767>\x05\x16\x17\x16\x17\x1e\x01\x0f\x01\x15\x0e\x01'&'.\x04\x0e\x02\a\x06/\x01&\x01\x06\a\x0e\x04\"&'&'.\x01?\x01>\x01\x17\x16\x17\x1e\x02>\x027076\x1f\x01\x16\x02\x03\x05\x0e\x11($\x02\a53\a3613\a373\x15'3\x15#\a73\x15'3\a#73\a3\x173\a#\"&7\xee\x16;\x16\xfe\xd7V\x04R\xadD\x16#d)3\a\x04\x01\n\x04\x01F>(>\xfeM\x04[\xce\x05\ap\x15u\x15\x10\a\x0e-\t\x04\x01\x04\x04\xcdN\x05\xfa\x16;\x16\xa3\x05ZIIM\t\x04R\xfa:'\x90(:\x16\x1a8\x85\x16^\x11\r\a\x93\x1e\x1e\x12\x06\x12\x1e7\x05\x01\x0e\x05\a5<\x06\x06\x1b\x06\x1b\x19\n\x12\x05\x02\x05\x067\x06\x06\x1e\x1e\x06\x06\x1e\x06\f\x06\x06N55\x1e\x1e\x1e\x0e\a\x00\x00\x00\x00\x01\x00\x18\xff\xdf\x01\xe8\x01\xa1\x00.\x00\x007\"\x061\"&5064.\x01'&>\x01\x1e\x0112506162\x1e\x0232>\x011\x1e\x010\x06\a0\x16\x150\x06#0&\xfc\x01X\x01VWAG\x02\x01 \x01HI\x01\x02\x01g\x02\x02\x02\x01\x01EE\x01\x1f\x8c\x01SV\x01Y]w<\x01~\x02\x16\x17\x01\x01e\x01\x18\x18\x02\x95\x01\x01NN\x18\x17\x01f0\x01z\x01?}\x00\x00\x06\x00\x00\x00Z\x02\x80\x01 \x004\x008\x00?\x00K\x00R\x00^\x00\x00%\x17#'\a#5#\x06#\"&'#\x14\x1673\x0e\x01&547#\x15#53\x15#\x153\x15>\x01\x16\x17>\x0132\x17353\x15#\x153\x1773\x053.\x01\x1626&#\"\x06\x175#535#535#\x1573\x157'\x15#\x1f\x013'7#\a'#\x17\a3\x02J6@\x17\x16\xd4\x01\f\x16\x18\"\x02V#\v*\r@5\x0211m<7\f32\t\x06\x1e\x15\x16\r\x01\x978w\x16\x16>\xfe\f/\x04&\x84!\r\x0e\x0f\x10\x0e\xc58878_18228\x8a\x1b(.-&\x1a\x1a(..&\xa4=\x19\x19\f\x13\"\x17\x12\f\x10!\x10%#\n\bM\xb8)\x1a\x18\x15\x10\x17\x1c\x14\x19\x0fL1\x10\x18\x18+\x13\x01E \x1f\x1f3\x1e,\x1c\"\x1f\xa7(.99,\"\x1e42\x1d\x1d33\x00\x00\x00\x00\x16\xff\xff\xff\xdf\x01\xc1\x01\xa1\x00\v\x00\x12\x00\x18\x00\x1d\x00$\x00*\x000\x006\x00<\x00B\x00I\x00O\x00U\x00\x89\x00\x8e\x00\x95\x00\x9b\x00\xa1\x00\xa7\x00\xad\x00\xb3\x00\xb9\x00\x00\x122\x16\x0e\x01+\x01\"&=\x016\x054/\x01\x15\x14\a'\x16\x1f\x01.\x01\a\x06\a\x176'\x06\a\x17&57'\x06\a\x1767'\x06\a\x1767'\x06\a\x1767'\x06\a\x1767'\x06\a\x17&5\a\x14\x1f\x01547'\x1e\x01\x17&/\x01\x1767'\x06726&+\x01\"=\x0146\x17\x16>\x0154&'&+\x01\"\x06\x1d\x01#\"\x06\x16;\x012\x16\x1d\x01\x14\x06#\"&#\x0e\x01\x15\x14\x163\x166=\x01367'\x06\x1767'\x16\x17\a\x1767'\x06\a\x1767'\x06\a\x1767'\x06\a\x1767'\x14\a\x17'\x16\x1f\x016765'\x06\a\x84\xba\x83\x01\x83]\xaa\x17\x1f\x01\x01\x8a\x037\x04\x02\x03\x017\a\"\xe7\b\b\b\x03\x10\a\a\x1b\x02\x01\x1e\x06\x05#\a\a5\x06\x04\"\x05\x061\x05\x03$\x03\x04.\x03\x03'\x01\x03.\x02\x024\x061\x037\x038\x06\"\x12\x03\x01;@\x04\x06H\x02\xfd\x0f\r\r\x0f\"\b+\x17\a\x0e\t\v\t\n\n\x01+>*\x10\r\r\x10!\x03\x06!\x17\x05\b\x03\n\x0e\x0e\x06.OB\t\b\t\x03\x10\b\x06\x1b\x02\x01\x01\x1d\x06\x06$\x05\t6\x05\x05#\x05\x050\x05\x04$\x03\x05.\x04\x03(\x0326\a\x01)\x03\x03\x02@\x04\x06\x01\xa0\x84\xb9\x83 \x16\xab\\\x1a\v\v8\x01\a\b!\x04\x066\x13%\x91\x01\x02\t\a\x01\x02\x04\x1b\x06\a\b\x04\x03\x04$\x03\x02\x1c\x04\x05#\x05\x04\x17\x06\x04$\x06\x05\x15\x06\x06(\b\a\x14\x06\b6\r\x0e\x01\f\n8\x01\b\x06 \x13%\b\x04\x05\\@\x05\x03I\t,\x18\x19\t/\x1d\x1f\x05\x02\x06\f\b\t\x0e\x01\x02=,8\x18\x19\x06\x03/\x17!\x02\x01\x0e\n\n\x0e\n>38\x01\x02\b\x06\x01\x02\x03\x1c\x06\a\b\x04\x03\x04$\x03\x02\x1d\x05\x04#\x05\x03\x17\x05\x05$\x06\x05\x15\x06\x06(\b\b\x055\f\x0e*\b\f\t\bA\x06\x04\x00\x00\x00\x00\x02\x00\x14\xff\xc0\x01k\x01\xc0\x00\x1c\x00$\x00\x00\x01#\x11\x14\x06\"&463\"&463\".\x01546;\x012\x16\x15\x14\x0e\x01\"2\x16\x14\x06\"&4\x01\x15U2G22##22#\x17'\x172#\xab#2\x17':F22F2\x01\x15\xff\x00#22G22F2\x17(\x17#22#\x18'\x172F22F\x00\a\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x00A\x00I\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x17\x15\x142=\x014\"\a\x15\x142=\x014\"\a\x15\x142=\x014\"\a\x15\x142=\x014\"\x05>\x01.\x01\"\a\x06\"'&\"\x0e\x01\x16\x17\x166754\"\x1d\x01\x142\x01\x88\x17!!\x17\xfe\xb0\x17!!\x17\xe4\x1e\x1eK\x1e\x1eK\x1e\x1eJ\x1e\x1e\x01C\x04\x02\x04\a\n\x040\xb62\x04\n\a\x04\x02\x04:\xcd<\x1e\x1e\x01\xa0!\x17\xfe\xb0\x17!!\x17\x01P\x17!R\xc8\x0e\x0e\xc8\x0f\b\xd8\x0f\x0f\xd8\x0f\x16\xc8\x0e\x0e\xc8\x0f-\x86\x0f\x0f\x86\x0f\xf3\x04\n\a\x06\x04))\x04\x06\a\n\x040\x01\x8d\x86\x0f\x0f\x86\x0f\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1a\x00N\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x174&\x06\x15\x14\x1632>\x01\x1727'\x06#&5676.\x02\x06\a7#\a3\a\x06\a\x06547#\a3\x06\a\x14\x1667\a37676\x17\x16\a\x0e\x03\x1e\x02\x01\x97\x11\x18\x18\x11\xfe\x92\x11\x18\x18\x11\x87\x1b\x1b\x10\f\x03\v\f\x9d&\x0f\x12\v\f\t\x01\x0e\a\a\x1a\x1e\"\f\tD\n \x14\r\x1a\x12!M\t \x17\x01\".\x0f\b-\x1a\t\x19\x15\x06\x03\x04\x01\b\x03\x05\x03\a\x12\x01\xa0\x18\x11\xfe\x92\x11\x18\x18\x11\x01n\x11\x18r\x11\r\r\x11\v\x10\x03\x0e\xdd4\a\x1e\x01\f\x065\x19&\x12\x01\x17\x15($O\x1e\x04\x03\x0e\b\x82$]\v\x17\x16\x10\x19 g$\x04\x03\x14\n\f\x03\x1a\x0e\x19\x0f\x10\b\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xf0\x01\xc0\x00\x11\x00\x15\x00\x00%\x16\x14\x0f\x01?\x02\a&'&4767\x1e\x01\a7'\a\x01\xea\x06\x06I\x01\x01\x01\xac\x1c\xd6\x06\x06M\xa5&\xaa\xd0LLL\xce\x06\x10\x06J\x01\x01\x02\xac\x1d\xd5\x06\x10\x06M\xa5&\xaa|LLL\x00\x02\xff\xfd\x00\n\x02\x82\x01s\x00C\x00R\x00\x00%\x16\x06\a\x0e\x01.\x01'&76'&\a\x06\x17\x14\x17\x15\x16\x06'\x06&756'&\a\x06\x17\x16\x15\x16\x06'.\x01676\x17>\x01'&63\x1e\x0332>\x0372\x16\a\x06\x16\x176\x052654&+\x01\"\x06\x15\x14\x1e\x013\x02q\x10\x02\x0e\x0e#\x1f\x18\x01\x02\a\x171+-1\x10\x01\x14(''(\x15\x121+,1\x13\x01\x10)$\x1c\x1c\x03\v\x19\x1c\x1f\x10\n\x1255\x19)\x14\x1d\x0f\x0e\x16\x13\x15\"\x1555\x12\v\x11\x1f\x1d\xfe\xe4\x1d\"%\x1a\x01\x1a%\r\x1e\x14{\x12;\f\x0e\b\n\x1c\x14\x11\x100\x16\x13\x10\x12,\x02\x01\x01\x1fA\x01\x01@ \x01-\x13\x11\x12\x15/\x02\x01\";\x05\x03,-\v\x19\x03\x0120-V\x01\x19\x1f\x19\x10\x18\x18\x11\x01V-02\x01\x03\x01(\x17\x1a%%\x1a\x0e\x1c\x15\x00\x00\x00\x0e\xff\xfe\xff\xc0\x01\x99\x01\xc2\x00l\x00t\x00|\x00\xc6\x00\xd2\x01\x19\x01 \x01*\x016\x01>\x01K\x01W\x01c\x01m\x00\x00%\x1e\x01\x06\a\x06\a\x0e\x01\a\x06\a\x06+\x01\"'&'.\x01'&'.\x016?\x014>\x017&'&'&7&7&7&7&6\x17636\x176\x17632\x1e\x01362\x16\x176\x173\x16\x17673076\x17462\x172>\x01\x16\x176\x176\x172\x176\x16\a\x16\a\x16\a\x16\a\x16\a\x06\a\x06\a\x1e\x01\x15'6.\x01\a\x06\x17\x16\x06>\x01.\x01\x0e\x01\x16\x03\x0e\x01\x16\x1767\x06\a\x1e\x037&'>\x017&'67\"'67&'67\x06'67\x06'467\x06'67\"#\"57&\a&7\x06\a&461\x06\a&7\x06\a&7\x06\a&5\x06\a&\a&\x06\x15\x14\x16\x172656&'\x1e\x01\x17\x06\a\x16>\x017&'\x16\x17>\x01&'\x06\a&'\x14\a&'\x16\a&'\x16\a&'0\x16\x06\x15&'\x16\a&\a\x17\x16#\x16\x17\x06'\x1e\x01\x17\x06'\x16\x17\x06'\x16\x17\x06\a\x16\x17\x06#\x16\x17\x06\x17&\x06\x17\x1676\a\x1676'&\a\x0e\x01\x16\x176&'.\x01\a\x06\x14\x17\x1e\x01&\x16>\x01.\x01\x0e\x01\x1726'4&\a&\x06\x15\x14\x1e\x01754&\"\x06\x1d\x01\x14\x1626\x176&'&\a\x0e\x01\x17\x1e\x0167>\x01&'&\a\x06\x17\x16\x01t\x0f\x15\x03\x13\x01\n\x04%\x0e\x1b\x19\x1c$\x01$\x1c\x19\x1c\r%\x04\n\x01\x13\x03\x15\x0f\x04\x0e\x12\x0e\x0f\x02\x0f\x02\x0f\x01\v\x03\n\x04\b\a\x05\t\f\x06\x13\x04\f\b\x0f\x04\x04\x02\x05\x06\x01\a\x04\a\x02\v\v\x06\x16\n\t\x16\a\x01\t\f\t\x03\a\x01\b\x04\x06\x04\x0e\b\v\x05\x13\x05\r\t\x05\a\b\x04\n\x03\v\x01\x0f\x02\x0f\x02\x0f\x16\x18\x12\x01\x17%\x17\f+/:%\x06\x1d.$\x06\x1c\x03\n\x0e\x02\x10)=D\x1a\x03\x11\x16\x10\b\x06\x01\x02\x14\x05\x05\x02\x14\x04\x06\x04\x14\x04\t\x01\v\b\b\x02\x0f\x01\b\x03\f\x02\t\x01\x02\a\x02\a\x0f\x06\t\x11\x03\a\f\n\x01\x06\r\n\x03\x05\t\n\x04\x03\n\x06\x02\x03\x0e\x02$\x13\"\x1e\x18\x18\x1d\x01$\x8d\x05\x14\x02\x01\x06\v\x17\x1c\x03\x19D=)\x0f\x03\x0f\t\x02\x01\x0e\x03\x02\x06\n\x03\x04\v\t\x06\x03\v\f\x06\x01\n\f\a\x03\x11\n\x06\x01\x19\b\x02\x01\n\x03\v\x01\x04\a\x01\x0f\x03\a\b\v\x01\t\x04\x13\x03\a\x05\x14\x027#1\x02\x01.+p\t\a\x0f\x06\x04\b\x15\x0e\ng\n\a\r\x10!\f\t\v\x10-%%.\x1d\x06%.\x1c~\x14&\x01%\x13\x13(\x10\x1cI#1\"#1\"R\r\x02\t\x15&\x0e\v\n\b\x16\x1e#\f\n\x0e\x15\b\x03\b\x0f\t\xd8\n%2\x15\b\x1c\x1d$\x03\x15\t\x1c\x1c\t\x15\x03$\x1d\x1c\b\x152%\n\x06\x16 \x11\t\x04\t\x04\f\n\t\b\n\v\t\n\v\b\x0e\x01\b\x06\x02\b\x05\x03\x01\x03\x01\x04\x01\x02\n\r\x1f\x1f\r\x01\n\x03\x01\x04\x01\x03\x01\x01\x02\x05\b\x02\x06\b\x01\x0e\b\v\n\t\v\n\b\t\n\f\x04\t\x04\r# \x02\x17\"\x0e\x04\x02%'^\x17/+\r\x18/*\x01\x1f\n\x19\x1e\a!\x14#\x1b\v\x0f\x05\x02\x01\x02\x03\x01\x02\x03\x01\x03\x06\x04\x02\n\x04\x01\x01\a\b\x01\x02\x0f\x02\x03\x03\x02\t\x06\x01\x01\b\n\x01\x06\x02\x05\x03\x06\x01\x04\x02\x01\x06\x02\a\x03\a\x03\t\x05\x04\x05\b\x02\a\x02\x0f\x01l\x01\x17\n\v\x12\x01\x10\v\r\x16\r\x03\x02\x01\x03\x02\x01\x02\x10\x0f\x1c\"\x14!\a\x1e\x19\n\a\x01\x0f\x02\a\x02\b\x05\x04\x05\t\x03\a\x03\a\x02\x06\x01\x02\x03\x02\x06\x03\x05\x02\x06\x01\n\b\x01\x01\x06\t\x02\x03\x03\x02\x0f\x02\x01\b\a\x01\x01\x04\n\x02\x04\x06\x03\x19\x06&$\x0e(%\xb6\x04\x14% \x0e\x01\v)$l\b*\x10\x11\x0f\a\x05'\x13\x17\r\x8b\x17\r+.\x18\r+\xea\x1a\t\t\v\x01\x01\x0e\t\x04\x10\r~\x01\x16\x1f \x16\x01\x16\x1f \x15\x13-\b\x10*\x10.\n\x04\x02\x10Y\n$)\f\x02\r\x1f'\x14\x00\x02\x00\x00\xff\xfe\x02\x00\x01\x82\x00\x1b\x005\x00\x00%\x15254'.\x02'.\x01#\"\x06#\"&#\"\a\x06\x15\x14\x1e\x037\x16\x15\x14\x06#\".\x01547\x0e\x03\x15\x14\x1e\x0132654&\x01VR\x15\x03\x06\x11\x10\x16B\f\b\x15\n\t\x1f\b\x17\f\x1a\x16*6I}\x057+\x0154&\"\x06\x01\xabR;\b\x06`\x06\b;Rw\xa8w\xfe\xf1\x1c()\x1c+3+\xf5=q\x13f\x06\b\b\x06f\x13q=TwwT\x1a#\b\b#\x1a %%\x00\x04\xff\xfd\x00\x1e\x02}\x01b\x00k\x00w\x00\x88\x00\x8c\x00\x00\x017\x16\x17\x16\x17\x14\a\x0e\x02&'\x16\x17\x16367\x17\x06\a\x0e\x02#\".\x01\x0e\x01\a\x06\x17#.\x04#\"\x06\x16\x17#.\x02'&\x06\x17\x1e\x01676&'&\x06\x15\x14\x1e\x0132>\x0136\x16\x15\x14\a\x06#\"&'47>\x01\x17\x1e\x01\a\x0e\x02'&'&'&767>\x03\x17\x16\x1f\x01\x14\x166&'0#\"\x0e\x0272\x16\x15\x14#\x14\x06#\".\x0154632\x0624\"\x01\xd7\x01[&\x12\x11\x04\r\x13\"0\x1f\n\x017\x1b\x19\x19\x04\x04\x03\x03\x134\x1d\n\x1d\x10\x11\t\x02\x04\x171\x02\f\t\x10\x18\x10\x18\x17\x02\x02.\t%&\x1266\x15\n*&\t\x0f\x13\x18\n\x10\x06\x05\x01\x04\x04\x03\x01\x05\f\r\b\b\x0f\x1a\x01\x16\r$\x14\x16\x10\x06\x06\x1a$\x163\x1b\f\x05\t\x0e\x1aJ$D33\x11?I<.$\x12\x19\x01\a\x0e\n\x06&\v\x0f\x01\x0f\v\a\f\a\x0f\v\x01\a\x17\x17\x01Y\x01\r\x16\n<\x02\x04\t\a\x03\x14\x15\x18\x01\x1d\x01\x0f\x02\x10\x02\x03\v\x0e\x03\x02\x02\v\t\x18 \x04\x1a\r\x11\b\x1c\x1e\n /\x16\x03\tE&\x15\x12\x06\f\x13-\x02\x01\t\t\x05\a\x02\x01\x01\x01\a\b\v\x03\x03\x17\x13\x19\x0f\b\x01\v\x0e0\x15\x12\x1a\v\x02\x04(\x11\x13$#>0\x16\x1b\a\x03\x02\x02\x184\x1a\x14\"/\x01\x06\n\r\x12\x10\n\x01\v\x0f\a\f\b\n\x10\x1d\x10\x00\x00\x00\a\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1d\x00)\x001\x00>\x00J\x00\x00\x122\x16\x14\x06\"&4$\x06\x1e\x01>\x01.\x01\a2654.\x01#\"\x06\x15\x14\x1e\x01\x17\x16\x177&47'\x06\a\x16\x14\x16>\x01.\x01\x0e\x01\x16767'\x0e\x01'\a\x167>\x02?\x01&'\x06&'&\a\x176\x16\x91Α\x91Α\x013\r\a\x17\x19\x0e\a\x17\xf6\x0e\x12\b\x0f\t\r\x12\b\x0f%\r+\x18''\x18+\r\x10\xc9\x17\a\x0e\x19\x17\a\r%%\x04.\x04R+\x17/2\x02\x13\x1a\b.\x04%\x14%\x032/\x17+R\x01\xb8\x91Α\x91\xce?\x16\x1a\r\a\x17\x19\r\xcd\x13\r\t\x0e\t\x13\r\t\x0e\t\x032\x1d(\x1b^\x1b(\x1d2\x0e+\x97\r\x19\x17\a\r\x1a\x16E$4\x01//\x14)\x17\x0e\x0e\x14\x05e\x014$\b\x16\x15\x0e\x17)\x150\x00\x00\x06\x00\x04\xff\xe0\x01|\x01\xa2\x00\x0e\x00'\x00;\x00F\x00S\x00k\x00\x00753\x15\x0e\x01\"&=\x013\x15\x14\x166'>\x01\x17\x15\x14\x0e\a\a.\b5!5&\x0e\x02\a\x15\x14\x1e\x03\x17>\x05'>\x01\x1e\x01\x15\x14\x06'\x15#7\x1e\x01>\x0254.\x02\x06\a\x1746\x17\x15&\x06\x15\x06\x1e\x02\x15\x0e\x01'5\x166'4.\x02g!\b\x1e#\x19!\x0e\x0e_J\xd2[\x06\b\x14\r!\x11,\x14\x1a\x1a\x16*\x13\x1f\x0e\x14\b\x06\x01f'\\TY%\x0f\x151,*\"'-\x17\x15\b\xd2\v $\x1a/\x19!!\x03\x05\r\n\b\a\t\f\a\x04O;\x15\r#\x01\x11\x15\x10\x017\x1b\x0f$\x01\x10\x13\x11\x91{\x8e\x05\b\x1a\x1agh\x0e\v\x03\xe7(\x04,\xdd\x11\x1e\x18\x18\x10\x15\v\x14\t\f\v\n\x14\v\x15\x10\x18\x18\x1e\x11\xd8\x06\x04\x0f+!\u007f\x1a(\x1c\x1f\x16\x12\x0f\x13\x19\x16\x1d\"\x81\x06\x06\x05'\"3#\bE_\x01\x01\x01\t\x18\x13\x12\x17\n\x02\x02\x01\x0e\x1d\x14\x11\x1d\x0e\x01\x0f\t\r\n\x18\x11\x1f\x14\x11\x1e\x0e\x02\x11\t\x0f\t\x16\x00\x00\x00\x00\x03\x00\x1b\x00 \x02%\x01`\x00\x1b\x005\x00H\x00\x00%\x06'&5>\x06.\x01#&\x0e\x01'4>\x0176;\x012\x16\a\x0e\x06\a723$\x17#\x17>\x017\x16\a\x0e\x04%!\x03!$7>\x03&'.\x01#.\x01'&\x01\xcc\x02\x01\x01\x01\x02\x01\x02\x01\x01\x01\x01\x02\x01\a/\x1e\x04\x0e\x13\x05\b\x03\x1b\x16\a\x82\r\x1a%\x1c:'Y\x1f4\x1c4\x01\x00\x02\xc4\x1e%f\"\x1b\x01\x01\n\x11\x17!\xfe\xf1\x01\xc6D\xfeY\x01\x92\x05\x01\x05\n\x05\x01\x06\x04\x13\x1d\x01Q\x86H\xce\x04\x02\x01\x01\x02\x05\x04\x05\x04\x04\x04\x02\x02\x02\x02\x02\x02\x01\x02\x04\x02\b\x125\x05\n\x10\r\x1d\x13,\x10\xf6\x01\x18]\x11#\x02\x01\x05\x01\x02\x03\x05\t\xa2\xfe\xc0\x9e\x02\x02\a\x13\x10\x13\x05\x05\x02\v\x16\x1c\x0f\x00\x00\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00Q\x00Y\x00\x94\x00\x00%\x0e\x02\a\x06\a\x06\a\x06'&>\x02?\x01&/\x01\x14\x0e\x01\a\x06'&7\x06'.\x0167&7.\x0276767>\x013\x17076\x17\x1e\x03\x1f\x017\x16\a\x0e\x03\a\"\x1e\x01\x17\x1e\x01\x0612\x1667632\x166\x14\x06\"&462\x13.\x01#\x06\a\x06\a6'676&'&\a&'&\"&\"\x0e\x02\a\x06\a\x06\a\x06\a\x06\x17\x06\x17\x0e\x01\x1e\x01\x17\x06\x17\x167\x16327676767>\x02\x01\x8a\x10\x1d$\x17\x03\a\x150\x12\x04\x02\x01\x03\x04\x02\x01\x04\x04\x02\x03\x04\x03\f\x17\n\v\x06\x05\x04\x04\a\r\a/\x02\x05\v\x05\x05\x04\v\x04\n\x17\a\a\v\a\x06\x01\x04\x05\x04\x01\x02\x0f\r\b\x02\b\a\t\x01\x01\t\x0e\x05\x05\x01\x03\x02\x06\x12\v\x1b\x12\f\x03\\\x91Α\x91\xceB\x02\x0f\v\x16\x1f\a\x05\x03 \x12\x05\x04\x04\a\x06\x0f\t\x06\x01\x02\x06\x05\b\b\b\x04\x1c\x13\x02\b\n\a\b\x0f%\x01\f\b\x05\x06\x03\x02\x0e\x18\x14\n\x14/\x1a\b\a\"\x1c\x14\x11\a\t\x04g\x04\x11\x14\a\x04\x01\x05\x01\x01\t\x04\a\x06\x03\x01\x01\x03\x04\x01\x02\f\n\x03\f\v\x06\x0e\x04\a\a\x10\x1c\v5!\x02\t\x18\b\r\x01\x04\x05\n\t\x01\x17\v\x03\x01\a\t\b\x03\x03\x05\x1a'\v\x14\v\x0e\x02\a\x14\x0e\f\x1b\x10\x01\b\x06\x11\x14\xbeΑ\x91Α\xfe\xbd\n\r\x01\x13\x04\x02/ \x1a\x1b\x10-\x0e\v\x04\x14\x04\x01\x02\x03\x06\r\t\x02\x15\x02\x03\x04\x13\x15\x18\"1\f\x1c\x16\x0e\x03\x11\a\r\n\n\x06\x02\x05\f\x11\x0e\x04\x01\t\v\x00\x00\x03\x00\x03\xff\xdf\x01\xbd\x01\xa0\x00\t\x001\x00K\x00\x007676'&\a\x06\x17\x16\x17>\x01'&'.\x03#\"\x0e\x06\a\x0e\x01\a\x06\x16767&'&632\x1e\x02\x06\a\x1670\x1e\x01\x15\x16\x06#\"'\x06#\"&767>\x0132\x1e\x04\xe0%\b\f#\x1e\x18\x16\t\a\xb0\x1b\x14\n\x1eU\t\x06\x11\x10\f\x06\v\b\t\x05\b\x03\b\x01\x01j\t\x0e/&'.,\n\t))\x14\"\x15\x02\x1c\x1eBd\t\b\x12;179971;\x12\vj\x12$\x1f\x0f\x0e\x19\x12&(K.%-\x10\x0e\x14\x13$$x\v2\x19J\xa5\x13\f\x16\a\x03\x03\b\x06\f\x06\x10\x03\x01\xd9\x18%;\x05\x0438,);\x10\".C%I\x9f\x13\x13\x022P>>P2 \xd5%$\x02\x13\x1dEU\x00\x00\x00\t\x00\x00\xff\xc0\x02\x00\x01\xc2\x00?\x00G\x00O\x00W\x00\x9b\x00\xa6\x00\xae\x00\xb7\x00\xb8\x00\x00%\x1e\x02\x14\a\x06'\x06\a\x16\x17\"'&'&'\x0e\x01'&7\x06'&'&767&'\"\a6767&6\x17\x16\x17676\x17\x16\x17\x16\x17\x16\x1767\x16\a\x06\a\x1e\x01\a\x06\a>\x02'&'\x16\a\x06\x17\x167&'\x067\x16'&'\x06\a\x16\a676'&'47\x16\x17\x16\x17.\x02#2\x1e\x01\x1767&'&\a\x14\x17\x06\a&'\x06\x15.\x0167&'\x16\x17\x16\x1767\x16\x17\x06\a\x06\a\x162>\x061\x0e\x02#\x16\x13.\x02\a\"\x0e\x02\a6\a&'&\a2\x17&\a\x0e\x01\x16\x17\x1627&\x17\x01\xc1\x15\x1e\f\x06\x19{\x1f%'\x18\x03\x06\x04\x04\x1b\x1d 4\x04\a\x104#\x11\x06\b\b\t&\x16\x04W\x19\x04\x0e%8\x02\x16\x10\x0e\x0f\x01\x18\v\x10\x13\x16\x1c!4)+\x05\x04\x04\n\x1a!\x1d\t\tl!%\t\x01\x02/\x02\xb9\x10\x16\x11\x1b\v\n\x0f\xc9\x1a\x02\x03\x1f\v\v\x11\x8a1$\x1b\x02Dc\x02\x14\x14;8\a\x15\r\x01\x03\r\x18\t\r\v4A0!\"\x05\x0e\x1f\x0e\x14\x01\x02\a\n\x14\x13\x03\x1c\x16\"DA\x06\n\v\x0e'.\a\v\v\t\b\a\x05\x03\x02\x01\f\x1f\x13\b$\x04\x10\x1d\b\x06\r\v\a\x01$H\a\b\x15\x03\x15\x15\x02\x1d\x0e\t\x02\x01\x06+$&\xb7\xde\r\x1c\x18\x15\a%\x05+\x1aH\x14\x03\x03\x04\x1c/\x15\x04\x0f\x0e\x19\x1d\b\x04\x0f\x10\x1f&;2,\n\a\x03\t\x02&.\x02\x02\x18:\x1a\r\x02\x02\x16\x1b>\x05\x12D \a\x0e$1\x11*\f\rj\x02\f\f\b\x1d\x1d+i\x1a\x03\x03\x0f\x12\x14\f\xa3\x01\x10\x12\x13\x13\x12\b\xbd 5)''\x12\b\r\x03\x04\v\x14\x0f\x17\t\x05\x16\x11\x11\x10\x1b\x03\x03\x14O_\x02\x06JO\x1d\x1f\x02\x0e \x10\x03\x01::+\x12'M\x04\b\x10\x0f.&\x01\x01\x02\x02\x03\x02\x02\x01\x02\t\n\x13\x01\x0e\x06\x16\x1c\x01\t\x12\x1e\x13\x17\x05\f\x01\x023\x01\x13\x90\x1b'\n\x01\r\x12\x14\x17\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\f\x00\x19\x00)\x00B\x00\x00%\x14\x0e\x02+\x01532\x1e\x02'#532\x1e\x01\x15\x14\x0e\x02\"7\x11\x14\x06#!\"&5\x11463!2\x16\a4'565<\x01.\x03+\x01\x11:\x0362>\x0176\x01$\v\x13\t\x05QQ\x0f\x14\a\x022KK\x10\x13\x04\t\t\x0e\x05\xcc,\x1f\xfe\xd6\x1f,,\x1f\x01*\x1f,n1%\x04\n\x10\x1c\x13\u007f\x13.\x17\x1b\f\x0f\b\t\x045\x88\x0f\x13\x06\x01Q\t\x10\nDH\f\x0e\t\v\x0f\a\x04\x84\xfe\xd6\x1f,,\x1f\x01*\x1f,,\xf29\n\x01\x10(\x04\x06\x13\r\x0f\b\xfe\xfa\x01\x02\x02\x01\x10\x00\x00\x03\x00\f\xff\xe0\x01\xb4\x01\xa1\x00\x15\x00+\x009\x00\x00%\a\x06\"/\x01&?\x0162\x1f\x01\x162?\x0162\x1f\x01\x16'\x16\x0f\x01\x06\"/\x01&?\x0162\x1f\x01\x162?\x0162\x17%&?\x0162\x1f\x01\x16\x0f\x01\x06\"'\x01\xac\xc5\x03\b\x03\xc5\a\a/\x04\a\x04\x87\x03\b\x03\x87\x04\a\x04/\a\a\a\a\xc5\x03\b\x03\xc5\a\a/\x04\a\x04\x87\x03\b\x03\x87\x04\a\x04\xfe\x97\a\a\xc5\x03\b\x03\xc5\a\a\xc5\x03\b\x03Ca\x02\x02a\x04\x04\x17\x02\x02C\x02\x02C\x02\x02\x17\x04\x85\x04\x03b\x02\x02b\x03\x04\x17\x02\x02C\x01\x01C\x02\x02[\x03\x03[\x01\x01[\x03\x03[\x01\x01\x00\x04\x00\x15\x00\x00\x01\xeb\x01\x80\x00\x12\x00\x18\x00#\x00+\x00\x00\x012\x16\x15\x11\x14\x06+\x0153\x11!\x15#5463\x032\x16\x1d\x01#5\x1532\x16\x15#14\x1e\x01\x15#4&#\x01\xc0\x12\x19\x19\x12\x95\x95\xfe\x80+\x19\x12+\x1b%@\x01=X+?,a\x8a+pP\x01\x80\x19\x12\xfe\xd6\x12\x19+\x01*@@\x12\x19\xfe\xc0%\x1a\x01\x96\x01W>->\x80\x01\x89aPp\x00\x03\x00\x00\xff\xdf\x01\x81\x01\xa3\x00\x1a\x00x\x00\x82\x00\x00\x13\x16#*\x06\x0e\x01\"\a#7\x15\x06\x14\x0e\x01\x1c\x05\x13&6\x172\x16\a\x0e\x02\x15\x14\x16326514.\x01'0.\x06'\x0e\x02\a&\x06&'&'&'467:\x0462>\x027>\x015454>\x01\x17\x16\x1f\x012\x1e\x06\x17\x1e\x01\x06#\x0e\a+\x01\"&7\x06\x17\x1e\x0172'.\x01y\x01\x17\t\x13\f\r\a\b\x04\x04\x03\x03\x01\x01m\x01\x01\x01O\v\"\x1d\r\x06\v\x01\x0f\t\x15\n\x13\x1b\x06\x17\x13\t\b\r\v\f\b\x06\x01\x03\b\x14\f\b\x1f6\x14\x13\t\n\x01\x0e\v\n\x17\x0e\x10\t\t\x06\x05\x04\x03\x02\x06\x02\a\x19\x15 \x05A\x01\x0f\a\x11\t\x0e\b\b\x01\n\x04\x05\x01\x02\v\x0e\x11\x11\x11\x0f\v\x04\x03\x12(H\x03\x04\t\x1f\x05\x05\x02\x03(\x01<\x16\x01\x01\x01o\x01\x01\x03\x03\x05\x04\b\a\r\f\x14\xfe\xc3\x1c1\x01\x19\x06\x01\x03\a\b\f\r\x1b\x13\b\x13\x18\x04\x02\x01\x04\x05\a\n\x0e\a\f\x19\x1d\x03\x01\x03\x13\x14\x0f+.\x10\r\x12\x01\x01\x02\x01\x03\x01\x06\x13(\x17\x0f\x06\v\n\x03\x05\x1a\v\x03\x01\x05\x04\t\v\x0f\n6wA\x13\x1e\x16\x11\n\a\x03\x01\x13\xe2\x06\x01\x04\x03\x01\a\x10\x05\x00\x04\x00\a\xff\xdf\x01\xf9\x01\xa0\x00)\x00H\x00y\x00\x87\x00\x00\x13632\x17\x1e\x01\x1d\x01\x14\x06#\"&5\x14\x06\"&5\x14\x0e\x01#\".\x015\x14\x06\"&5\x14\x06#\"&=\x0146\x17\x1e\x0132327\x1627\x1e\x017\x1e\x01\x14\x06\a\x06 '.\x0167\x1667\x162\x06\"\x0e\x05\a\x0e\x01\x1e\x033>\x015\x167\x14\x16\x17:\x01>\x034&'.\x06\"\x0e\x01\a&\"\a.\x01\x17\x16\x17'\x15\x14'\"15\a>\x017H \x98iO\x101\x1f\x11\x15\x1e\x1d)\x1d\x0e\x17\x0e\x0e\x17\x0e\x1d)\x1d\x1e\x15\x11\x1f1\x94\a\x1d\x0e\x01\x01#\x11\x10C\x11\t$\v\x01\x03\v\v;\xfe\xfb<\x0e\n\x03\x03\v$\t\x11C\x0f\x15\x12\x0f\n\f\x05\v\x02\x04\x03\x04\x05\r\n\t\x1e#NN#\x1e\a\b\n\x06\a\x02\x03\x03\x02\v\x05\f\n\x0f\x12\x15\f\x12\t\x16,\x16\t\x12G,\b\x1d\x17\x17\x1d\x03\x1a\f\x01\x9d\x03\x03\t8\n\x15\x14\x1f\x1e\x14\x14\x1e\x1e\x14\r\x17\x0e\x0e\x17\r\x14\x1e\x1e\x14\x14\x1e\x1f\x14\x15\n8}\f\x11\x1d\x1d\x1d\x10\x10\x04\x13G[M\v\x0e\x0e\x0e{f\x1e\x04\x0f\x11\x1d\x19\b\x13\x10\"\x12)\b\x10\x16\r\t\x03\x01\x01%\x19\r\r\x19%\x01\x02\x03\x06\n\r\x12\f\b)\x12\"\x10\x13\b\x01\t\n\x03\x03\n\t/)\x0e\x01\x19\x01\x01\x19\x01\x06\x1c\v\x00\x00\x00\x0f\xff\xfc\xff\xdf\x02\x80\x01\xa0\x00\x03\x00\x0f\x00\x19\x00E\x00h\x00\x89\x00\x95\x00\xb3\x00\xdc\x01\n\x01\x16\x010\x01L\x01k\x01o\x00\x007#6236\x15\x14#\"'&5462\a6\x17\x15\x06'&=\x014%\x14\x06'\x0e\x02'\x0e\x02.\x02'\x06.\x0267&>\x0232\x16\x17632\x1e\x06\x176\x1e\x02\x054'&56\x16\x172506350'&\x06\x15\x14\x17\x16\x15\x14#\"'&\x0f\x01\x141\x16327\"\a\x141\x141\x17\x16130>\x0132\x16\x15&\x06\x15\x141\x14\x17\x1676=\x014.\x0174+\x01\"\x1d\x01\x14;\x01257&#\"\a\x06\x15\x14\x17\x1632765'4#\x06#\"53250<\x01.\x01\x17254'&5432\x17;\x01'06150'&#\"\x06\x15\x14\x17\x16\x15\x14#\"'41\"\x15\a\x143\x1674+\x0147632572'&\a\x06\a#\"\x15\a\x14;\x01\x06\a\x06\a\"#\"\a0\x061\x063\x1676767325\x17&#\"\a\x06\x17\x1632767&\a54+\x01\"\x1d\x01\x14;\x012=\x01476\x17256750\x17/\x01\x06#\"43212\x17\x165656#&\a\x06\x15\x14327617&#\"\a\x06\x15\x141\x1432765'4#\x06#\"532505<\x02.\x012\x17#\xf9\x1a\x01\x18\x8a\x0e\x0e\v\x03\x01\b\x04\xf1\x06\x0f\x0f\x06\x03\x01\xf5e@\n&6\x1f\n#)-(\"\b#:\x1f\t\x1c\x1d\x0e\t\x1e8\"\x19:\x0f\"/\b\x10\x0e\x0e\r\v\n\t\x04#E8\"\xfd\xf8\x11\x0e\x01\x11\a\x02\x02\x01\x01\t \x12\r\t\v\b\x01\x01\x02\b\x0f\x15 \x0e\a\x02\x01\x01\x04\b\x05\x06\x06\x16\x0f\a\r\x19\x03\x01\v$\x01\n\x01\x01\n\x018\a\v\x0e\a\x06\a\a\x10\r\x05\x01\x03\x01\b\b\x10%\x01\x01\x03\"\x16\x12\r\b\t\b\x01\x01\x01\x03\x01\b\f\t\v\x11\x0e\n\n\t\x01\x03\x01\bP\x01\f\x05\x01\v\x01\x03\x01\x01\x0f\n\x05\x03\b\x01\x02\x02\b\t\x02\x02\x03\t\x01\x01\x01\x02\x01\x01\t\t\b\x04\x02\t\f\x026\x06\x13\x14\x05\x04\x04\x06\x13\x15\x04\x04*\x0f\a\x01\n\x01\x01\n\x01\x04\x05\t\x01\x02\x01/\x02\x02\x04\a\x11\x10\x01\x06\x05\x01\x02\x01\x01\x10\f\x10\x1d\b\a\x016\x05\x12\x15\x04\x02\x1e\r\x05\x01\x03\x01\b\a\x11%\x01\x01$\x18\x01\x1a\xca\x0e\x01\x15\x14\f\x04\x04\n\n\x18\x05\x03\x11\x03\x04\x03\x04\x01\x04\x1aBT\x0e\x13\x1b\v\x0f\x17!\x0e\x01\x10#\x17\a\x1919:\x11\x1e>2 \x1d\x14#\x02\x04\x06\b\t\v\f\x06\x10\n#?D\f\x05\x06\x03\a\x01\x04\x01\a\x01\x01\a\x06\x0e\f\x05\x05\x04\a\x06\x01\x01\b\x01\a=\x05\x01\x01\a\x01\x02\x02\x04\t\x02\n\t\x01\t\x05\t\a\x01\x01\"\x05\a\n\x15\x01\x01O\x01\x012\a\t\a\x0e\x0e\a\b\x03\x01\x01\a\x01\x03\x11\x01\x03\x05\x06\a2\x12\f\x05\x06\x03\a\x05\x01\a\x01\x01\x05\n\b\f\x05\x05\x04\a\x06\x01\x01\b\x01\a:\x01\b\x05\x01\x01\b\x01\x06\n\x06\x0e\x01\b\x014\x03\a\x01\x01\a\x02\x03\x03\x03\n\x066\x01\b\x12\x12\f\f\x12\x12\f\x1d\x04\n\x05\x01\x018\x01\x01\x1c\f\x03\x05\x02\x01\x04\x04\x015\a\x01\x02'\x01\x01\x01\x05\x03\x01\x05\x05\b\x14\x1e\x03\x01(\x10\x12\x06\x05\x01\x1d\x03\x01\x01\a\x01\x03\x11\x01\x01\x01\x02\x04\x05\b\x0e\x00\x00\x00\x00\x02\x00\x00\x00 \x02\x00\x01`\x00 \x00:\x00\x007#\"&46;\x012\x16\x14\x06+\x01\"\x14;\x012\x16\x14\x06+\x01\"&46;\x0126&\x17>\x01732>\x01=\x014&+\x0164'32\x16\x1d\x01\x14\x0e\x01#\xd6r);;)\x85\x10\x18\x18\x10\x87\x14\x14r);;)\xac\x11\x17\x17\x11\xae\f\v\vH\x12\x1e\x03A\x05\t\x05\v\bv\x0f\x0f\x89!.\x15$\x16\x98;R;\x17\"\x17(;R;\x17\"\x17\x14\x14x\f/\x15\x05\t\x06x\b\f\x11.\x11/!\xa0\x16%\x15\x00\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x80\x00\x00\x122\x16\x14\x06\"&4%>\x01'4&\a*\x01\x0e\x06\a0.\x03\x06\a\x0e\x01\x17\x1e\x05\x14\a\x06'&74676&\x06\a\x06\x16\x17\x16676/\x01&76\x17\x1e\x02\x17\x06\a\x0e\x01\a\x06#\".\x0176&\a\"\x06\x17\x14\x16767>\x0274>\x015\x16>\x0256&\a\x14\x1e\x01\a\x06'>\x0536\x15\x16\x06\x15\x14\x16\x99Α\x91Α\x01~\n\n\x01\x19\x14\x02\x03\v\t\x0f\r\x0f\x0e\x0e\x06\x0f\r\x17\x14\x1b\r\x10\x06\x13\x03\t\x03\x05\x02\x02\x01\a\x1b\x13\x02\x04\x02\x04\x0f\x14\x04\x04\x12\x19\x1e1\x04\x03\x18\r\x0f\r\v\x15\n\x10\x12\x05\n\b\n\x12\x11\f\n\x02\x05\x01\x06\f\v\x10\t\x10\x01\x17\x12'!\x11\x17\t\a\x01\x01\x12\x1f\x12\n\x01\x1e\x03\x06\x01\x05\x10\x1d\x04\x03\b\a\f\x0f\n\f\x01\a\v\x01\xb8\x91Α\x91\xce\x01\x01\x0f\b\r\x10\x01\x02\x03\b\n\x10\x14\x1d\x11\x0e\n\f\x04\x05\t\r*\x19\x03\t\x03\a\x04\x06\x05\x03\x17\x06\x05\v\x01\a\x05\f\x10\x03\f\r\x1e\a\n\x1a\x18\x16\x1c\x0e\x0f\x10\r\x05\x03\v\x11\x04!144\x0e\t\x02\x05\x05\x06\x1d\x01\x0f\v\x0e\x11\x01\x01'\x147'$\x02\x03\x05\x02\x02\x05\v\x0e\a\x12\x02\x0e\x04\n\x06\x05\n\x04\x16\x0e#\x0f\x14\b\x01\b\x02\f\x05\b\t\x00\x05\x00\x02\xff\xe0\x02\x02\x01\xa0\x00&\x00E\x00K\x00Q\x00d\x00\x00%\x16\x06\a\x16\x06#\"&'*\x03'\x0e\x01#\"#.\x017&'&632>\x027>\x0232\x16\x03>\x0276.\x02#\"\x06\a\x0e\x04#\x16\x176\x16\x17\x1623>\x0132&46\x16\x14\x06646\x16\x14\x06\a&6\x16\x17\x1e\x017>\x0176\x16\a\x0e\x01\a\"&\x01\xf6\v>>\n\x1f\x1b\x15\x1e\x01\x02\x16\x18\x18\x04\x01\x1e\x15\x01\x01\x1a\x1d\b?%\t\x0e\x10\x11\x10\x04\x03\x03\tBY0N|t\x15&\x1e\a\x0f\x145P,@n\f\x02\x03\x04\f\x1b\x15\"<\x122\f\nH\x06\x06\x1b\r\x12\x9a\x1a\x19\x19[\x19\x1a\x1a\x94\x02\f\x0e\x02\x03$\x19\x19#\x04\x03\x19\x03\x05.( 3\xf6@r\x1e\x19-\x1d\x14\x01\x15\x1d\x01*\x19\x161\r\x1d\x14\x192\x0f-I'`\xfe\xfc\t\x1e)\x16.S>%M;\v*\x1e \x10-\x14\x11\t\x16\x01\f\x10\xad!\x0e\x0e!\r\r!\x0e\x0e!\r)\b\t\x04\b\x11\x1b\x01\x01\x19\x11\f\x06\f\x16(\x01%\x00\x00\x00\x00\x04\x00\x1d\xff\xff\x01\xe3\x01\x81\x00\x0e\x00\x1e\x000\x00V\x00\x00\x01\x0e\x01'&6727632\x16\x15\x14\a\x16\x15\x14\x0e\x01#\"'\"'.\x0176\x167\x1e\x01\x15\x14\x0e\x01\a\".\x02'&63:\x01%&54632\x1f\x0137632\x16\x15\x14\a\x03\x0e\x01+\x01\"'.\x01546303\x163267\x01\xa6*P\b\b_\x13\x02\x01\x03\x03\n\r\b\b\x06\n\a\x03\x03\x01\x02\x13_\b\bPT\b\n\x05\t\x05\x15-*\x1c\x02\x04v\x16\x01\x02\xfeO\x01\x0e\v\x0f\aQ\x01M\x06\x10\n\x0e\x01n\x10&'\x01\v\f\x06\t\f\t\x01\a\a\x16\x19\v\x01(\x17!\x06\x05I\v\x01\x01\x0e\t\v\xe0\a\v\a\n\x06\x01\x01\vH\x06\x05!n\x02\r\b\x05\n\x06\x01\x02\x05\a\x05\b\x12\x8c\x04\x04\n\x0f\x0e\xcd\xcb\x0f\x0e\t\x04\x03\xfe\xef*&\x02\x02\f\x06\t\r\x01\x1b \x00\x01\xff\xff\xff\xe0\x01\xc1\x01\xa0\x00+\x00\x00%\x16\x14\x0f\x01\x06\"/\x01&4?\x01\x17\x06\x16\x17\x15\x0e\x01\x17\x16276&'5\x17\x06\x1676&\a'6&\a'762\x17\x01\xb8\b\b\xc3\t\x17\t\xc4\b\b\x872\x05\t\x0f\x11\a\r\n\x1c\n\f\x03\x12/\v/\x14\x13\x1d\x1a2\a\x1e\x143(\t\x18\b\xd4\t\x17\t\xc3\b\b\xc4\t\x17\t\x863\n\x1d\x06{\a$\r\n\n\t%\tz.\x1a\x1f\x13\x14.\t2\x14\x1e\a4)\b\b\x00\x06\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x06\x00\n\x001\x00=\x00A\x00E\x00\x007\x14+\x015327\x11!\x11\x134.\x01'.\x025432\x15;\x014&#\"\x06\x15\x14\x16\x17\x1e\x01\x15\x14#\"5#\x15\x06\x1632>\x0174&+\x01\x153532>\x01\x177#\a7#\a3\xf5\x16\x13\x13\x16\xcb\xfe@\x97\t\x14\x11\v\v\x04\x14\x15\x1e\x01\x1a\x19\x15 \x15\x1e\r\t\x14\x19\x1f\x01\"\x17\x0f\x17\r~\x1c\x1a4!\x13\x10\x17\x0f\x151\x1f0\x88\x1f0\x1e\xd8\x15*\xb3\xfe@\x01\xc0\xff\x00\v\x10\r\x05\x04\x05\x06\x04\x0e\x12\x11\x19\x13\x13\x10\x13\n\x04\b\a\x0e\x16\x01\x16\x17\t\x11D\x14\x19\x8a/\v\x14N\x8a\x8a\x8a\x8a\x00\x00\a\x00\f\xff\xc7\x01\xf4\x01\xb8\x006\x00C\x00N\x00V\x00a\x00n\x00w\x00\x00%3\x0e\x01#\"&54632\x16\x17#.\x01#\"\x06\x15\x14\x1e\x01\x1754&#\".\x015467>\x01\x16\x172\x1e\x01\x15\x14\x06#\"\x0e\x02\x1d\x01>\x01'\x16\x0e\x02\a\x1632>\x0154\a>\x02&'\x0e\x03\x16'\"\a\x16\x1767&\a3\x0e\x01\x1e\x01\x17>\x01.\x01\a327.\x037\x06\x15\x14\x16\x173\x16\x1767&'\x06\x01\xda\x19\x13|`t\x84\x84t`|\x14\x19\x13nVju1_C'$\x1e-\x184-\x0fIJ\x10\x1e,\x175.\x12\x1c\x13\nQhd\x04\x04\a$\x1d\x13+\x18!\x11\x92\x19\x1d\x05\x01\x01\x15\x1b\t\x03\x02\x0e+\x13+\x13\x13*\x13r\x01\x02\x01\x05\x1d\x19\x02\x01\x05\x1d)\x01*\x13\x1a\"\f\x04\x04@&Y\x01\x15\f\f\x16\x17\v\fvS[\x84tt\x84[SHMujEb6\x021$'\x17-\x1f.4\x01\x1f\x1a\x18!\x18-\x1e/4\n\x13\x1c\x121\x03L\xda\b$%\"\x06\x1b\x11!\x18D\\\x04\x1b%\x15\b\x03\x14\x18\x1d\x0f\x8e\x1c\b##\b\x1c3\a\x17$\x1b\x04\b\x16$\x1c\x90\x1b\x05\x1d#&\x0e\x06D$&\r\v\x17\x17\v\r\x15\x16\x00\x06\x00\a\xff\xe0\x029\x01\xa0\x00\a\x00\x1b\x00%\x005\x00<\x00H\x00\x00\x122\x16\x14\x06\"&4\x1767.\x0254>\x0132\x17676&+\x01\x03%\a'#\a37\x1737\x177#7#\a\x1e\x01\x15\x14\x0e\x01#\"'\a'2\a\x06+\x01?\x01232\x1e\x01\a\x0e\x01+\x017\xac褤\xe8\xa4\xc3X\x1d\x11\x1d\x11\x15#\x15\t\b\x01\x01\x05%.\x86M\x01&\t\x0f \x1a%\b\v$\x16r\x15h5\\\x16\x17\x1c\x15#\x15\x06\x05\x10_\x1f\a\a\x1f\x19\x0e.\x01\x02\v\t\a\x02\x03\x17\x0e\x15\f\x01\xa0\x83\xba\x83\x83\xba\xe2\x01<\x04\x15 \x12\x14#\x14\x02\x04\x03#&\xfeݸ%%Z##Z\xb6T\xcdR\b'\x18\x15#\x14\x01=x\x1e\x1b9c\x01\b\t\v\x130\x00\x00\x00\x06\x00\a\x00`\x029\x01!\x00\f\x00\x1b\x00&\x00<\x00F\x00P\x00\x00\x133\x1773\x17#'\a#'\a#%2\x1e\x03\x17\x14\x0e\x02\a+\x015\x172>\x0354&/\x01\x17\x1e\x02\x14\x0e\x02+\x0253:\x01\x1e\x02\x17\x16\x15\x14'\x1530>\x015.\x01#\a6\x16654&\a#\x15\x11/*)-\r.\x04\x1a-\x1c\x05,\x01#\x04\r \x19\x14\x01\x13\x1c\x1c\n\n0/\x02\a\x10\f\n\x18\v\f\xee\x04\v\x13\x12\x19\x1a\t\t.4\x02\a\x12\x0e\r\x01\x01<\f\x02\x02\x02\b\x03\x04\x02\x12\x16\x15\n\n\x01 vv\xc0MMPP\xc0\x02\v\x12'\x1a\x1b(\x12\n\x01\xc0\x93\x02\x06\n\x15\r\x14\x1a\x02\x02\x1c\x01\x06\x1d&\x1b\f\x06\xc0\x04\x06\x0e\n\x04\x05\x10\x12\x15\x02\a\x03\x05\x04m\x01\x03\v\f\f\v\x01\x12\x00\x00\x05\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\n\x00\x12\x00\x16\x00\x1e\x00(\x00\x00\x012\x16\x15\x14\x0e\x02+\x015&2\x16\x14\x06\"&4\x175#\x156264&\"\x06\x14\x172654.\x01+\x01\x15\x01')+\a\x11#\x18/`Α\x91Α\xa7\x1e\a\x10\f\f\x10\v\x9f1=\x164$Q\x01\x04,!\v\x18\x1a\x10\x9a\xb4\x91Α\x91\xce\xd8\xd0\xd0\xe7\f\x10\f\f\x10\xf3>*\x1a. \xd0\x00\x00\x02\x00\x00\xff\xe0\x01\xc1\x01\xa1\x00E\x00w\x00\x00\x01\x14\x1d\x01\x14\x15\x14\x06\a\x0e\x01\a\x0e\x01#\"+\x01\"#\"&'.\x01'.\x0154=\x01454>\x017676767>\x017232;\x01232\x16\x17\x1e\a\x17\x1e\x01\x15\x14\a\x1676'&'656&'\x1e\x01\a\x06\a&'&'\x17\x16\x17.\x02'\x16\x17\x16\x17\x0e\x01'&'\x1e\x01\x17\x167367>\x02\x1e\x01\x01\xc0\x05\a\x06\x18\v\r\x1e\x0f\a\x06\xc8\b\x05\x0f\x1e\r\v\x18\x06\a\x05\x05\x0e\n\x03\x03\b\n\x04\x03\n\x16\v\x03\x05\a\x06\xc8\b\x05\x0f\x1e\r\x03\x06\x05\x06\x06\x05\x05\x04\x01\a\x05F\x02\x02\a\x19\x04\x05\x01\x0e;:\x1a\x13\n\x02\x02\x03\x04LS,\x1c\x19\r/9\x15\t\nN?\x1eP+\x15\x12\x10>\x1bQA\x01\x03\x02\x06\x0e\x12\x10\x10\x01$\v\x05\xb8\b\x05\x0f\x1e\r\v\x18\x06\a\x05\x05\a\x06\x18\v\r\x1e\x0f\a\x06\xc8\b\x05\x0f\x1e\x1a\v\x02\x03\a\x05\x02\x01\x04\x04\x01\x05\a\x01\x04\x05\x05\x06\x06\x05\x06\x03\r\x1e\x0f\a\xf7\x04\b (\a\x05\x05\x017v\"#N$\x06\x06\x01\x03/S<#\x1a\a!-\x13\x0e\fc0\x13\x01\x14\t\x0e\x1a5\v#\"\x02\x01\x04\x04\x02\x05\r\x00\x00\x00\x02\x00\x06\xff\xc8\x01\xf8\x01\xb9\x00\f\x00W\x00\x00\x122\x16\x15\x14\x0e\x03#\"&4\x05654'4'&'&5&+\x01\a\x06\x151\x15\x17\x16\x17\x16\x15\x14\a\x0e\x04#\x06#\"+\x01\"#\"'.\x01'&5476?\x01514/\x01\"\a\x06\a\x06\a\x06\x15\x06\x14\x17\x1e\x0273\x16>\x01\x99͑\x19.=L(g\x91\x01\x89\x01\x01\x03\x02\x04\x01\x01\x04\x01 \x04\x01\x03\x02\x03\b\x02\x05\x06\a\b\x03\x19\x1a\x03\x04\n\x04\x03\x1a\x18\n\x12\x04\b\x03\x02\x03\x01\x04 \x04\x01\x01\x01\x03\x03\x03\x01\x01\x01\x1a=7\x047=\x1a\x01\xb8\x92f)K=.\x19\x92\xcdy\b\b\a\b\x16\x16\x0e\x12\a\x01\x04\x05\x01\x04\x01\t\r\x14\x15\x15)\x13\x04\x06\x06\x05\x04\x06\x06\x01\x0f\t\x13)\x15\x15\x14\r\t\x01\x04\x01\x05\x04\x01\a\x11\x0f\x16\x16\b\x0f\b)0\x16\x01\x01\x160\x00\x02\x00\f\xff\xc8\x01\xfa\x01\xc0\x00\x00\x00\x85\x00\x00\x13\x05\x16\a\x06\x15\x0e\x01#\"&=\x016505656567676767>\x011\x06\x1767\x06\x15\x14\x17\x16\x17\x16\x17\x1e\x02\x15\x0e\x01#\"\x0e\x02\x0f\x01\x1e\x01\x17\x16\x17\x16\x17\x163\x16>\x01&'6\x17&'&#&'\"'&'\"'&'�&1&#\"1\"#\a\x06\a\x15\"#\"'454767>\x0179\x0130\x15\x16\x17\x16\x17\x16\x17\x1e\x01\x175&'\x1e\x01\x83\x01_\x18\b\x01\x0f\x88Ze\x8f\x01\x01\x01\x02\x02\t\x18\n\r\v\r\x01\a\x03\v\x1c\x1f\x04\x05\x03\x03\x03\x0e\a\x1e\x16\x01\x17\x06\x13\x1f\x10\v\x02\x01\x02 \x17\x02\x02\x04\x04\x0f\x10,9\x0e\x1a\x1f\x1f\x1c\x10\x1b\x02\x01\x02\x03\x01\x01\x03\x02\x01\x02\x02\x02\x03\x03\x02\x11\x11\x01\x03\x03\x01\x17\x14\x01\x01\x04\x02\x03\x17\x1a\x05(%\x01\x02\x02\x01\x02\x02\x03\rT\x10\x06\x13\r\x1c\x01E.8B\t\x01Ws\x8ee\x02\x04\x04\x01\b\x06\x02\x03\f\v(\"\x0e\r\v\t\x01\x04/\x0e\x1f\x0e\x0e\x0f\x0f\x10\x02\x02\x03\r\b\x10\v\x01\x04\x17\b\r\f\x04\x05\x19*\f\x01\x01\x02\x01\x06\x02.?B\x10\x05\x13\x1b\x11\x01\x02\x01\x01\x01\x02\x01\x01\x01\x01\x01\x05\x01\x01\t\x01\x04\x01\x01\x04\x02\v\x01!D\x16\x01\x05\x04\x03\x02\x04\x06\x14a(\x01$&\a$\x00\x00\x00\x00\t\x00 \xff\xe0\x02'\x01\xa0\x00\a\x00\v\x00\x12\x00)\x005\x00=\x00I\x00R\x00V\x00\x00\x122\x16\x14\x06\"&4\x1753\x157\x14+\x01532\x173\x06+\x01532>\x0254&+\x01532\x17#5#\a5#535#535#\x15;\x01'#\a373'2\x1e\x03\x15\x14\x06#!\x11\x012654&+\x01\x11\x013\x17#i)\x1d\x1d)\x1c\tOI\x13\x0e\x0e\x13\xc99\x03\xc1_\x0e\n\x0f\v\x05\x16\x13\x0e_\xb9\v\"\x17m\"\x1e\x1e 7\x83\x18\x1c \x1c\x18\x05\x1ec>^5 \n\x82y\xfe\xf4\x01\fpvym\xf7\x01K\x01\a\x10\x01\x1b\x1d)\x1d\x1d)荍\xd4\x18.D\xa6\xa6\x06\f\x11\v\x15\x18S\x98E[\x16\r\x17\n\x17[[[\x11\xd3\x1f.@6\x1cmt\x01\xc0\xfeUgeee\xfej\x01\t\x1a\x00\x00\x00\x00\x02\x00\x01\xff\xdf\x01\xbf\x01\xa0\x00\x1f\x00@\x00\x00%3\x0e\x02\x15\x14\x17\x16\x15\x06#0#&'&#\"#\x06#\"&4632\x1e\x01\x15\x14'654#/\x01&\"\x0f\x02\"\x15\x14\x1f\x01\a\x14\x15\x1432?\x01\x17\x1632545'\x01\x8f\x01\x06\n\x06\x12\x01\x01\x04\x013\x1c\x03\x03\x01\x02&)\\\x82\x82\\\x017>\x027>\x027>\x057 \x01F1\x01GE\x881Y\x01XF1\xfe\xb7\r3\x15\v/#\r\x12\x18\x15\b\b\x1f\"%!\x1b\b\x1d<\x01H1F\x16Z9f\x01\x0f\xfe\xb71F\x11&\v\x05\x14\x13\f\x124H\x11\x14) \x1d\x15\x10\x04\x00\x00\x04\x00\x0f\xff\xce\x01\xf3\x01\xb2\x00\v\x00\x0f\x00\x13\x00\x17\x00\x00%\a\x17\a/\x01#'73?\x01\x0f\x0137\x03\x17'#\x057'\a\x01\xf2\x1e\x1e5\xc5\x1d;\x90\x90;\x1d\xc5\xddm\xadW\x97\x97W\xad\x01.**W\xf222\xbf32\x8c\x8c23ml\x91\xfe\xd3&\x92z\x92\x92\x92\x00\x00\x00\x00\x1c\x01V\x00\x01\x00\x00\x00\x00\x00\x00\x00\x1a\x006\x00\x01\x00\x00\x00\x00\x00\x01\x00\x1d\x00\x8d\x00\x01\x00\x00\x00\x00\x00\x02\x00\a\x00\xbb\x00\x01\x00\x00\x00\x00\x00\x03\x00$\x01\r\x00\x01\x00\x00\x00\x00\x00\x04\x00\x1d\x01n\x00\x01\x00\x00\x00\x00\x00\x05\x00&\x01\xda\x00\x01\x00\x00\x00\x00\x00\x06\x00\x1a\x027\x00\x01\x00\x00\x00\x00\x00\n\x00,\x02\xac\x00\x01\x00\x00\x00\x00\x00\v\x00\x17\x03\t\x00\x01\x00\x00\x00\x00\x00\x10\x00\x15\x03M\x00\x01\x00\x00\x00\x00\x00\x11\x00\a\x03s\x00\x01\x00\x00\x00\x00\x00\x12\x00\x1d\x03\xb7\x00\x01\x00\x00\x00\x00\x00\x15\x00\x15\x04\x01\x00\x01\x00\x00\x00\x00\x00\x16\x00\a\x04'\x00\x03\x00\x01\x04\t\x00\x00\x004\x00\x00\x00\x03\x00\x01\x04\t\x00\x01\x00:\x00Q\x00\x03\x00\x01\x04\t\x00\x02\x00\x0e\x00\xab\x00\x03\x00\x01\x04\t\x00\x03\x00H\x00\xc3\x00\x03\x00\x01\x04\t\x00\x04\x00:\x012\x00\x03\x00\x01\x04\t\x00\x05\x00L\x01\x8c\x00\x03\x00\x01\x04\t\x00\x06\x004\x02\x01\x00\x03\x00\x01\x04\t\x00\n\x00X\x02R\x00\x03\x00\x01\x04\t\x00\v\x00.\x02\xd9\x00\x03\x00\x01\x04\t\x00\x10\x00*\x03!\x00\x03\x00\x01\x04\t\x00\x11\x00\x0e\x03c\x00\x03\x00\x01\x04\t\x00\x12\x00:\x03{\x00\x03\x00\x01\x04\t\x00\x15\x00*\x03\xd5\x00\x03\x00\x01\x04\t\x00\x16\x00\x0e\x04\x17\x00C\x00o\x00p\x00y\x00r\x00i\x00g\x00h\x00t\x00 \x00(\x00c\x00)\x00 \x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00\x00Copyright (c) Font Awesome\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00B\x00r\x00a\x00n\x00d\x00s\x00 \x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Font Awesome 5 Brands Regular\x00\x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Regular\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00B\x00r\x00a\x00n\x00d\x00s\x00 \x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00-\x005\x00.\x001\x002\x00.\x000\x00\x00Font Awesome 5 Brands Regular-5.12.0\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00B\x00r\x00a\x00n\x00d\x00s\x00 \x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Font Awesome 5 Brands Regular\x00\x003\x003\x000\x00.\x007\x005\x002\x00 \x00(\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x00v\x00e\x00r\x00s\x00i\x00o\x00n\x00:\x00 \x005\x00.\x001\x002\x00.\x000\x00)\x00\x00330.752 (Font Awesome version: 5.12.0)\x00\x00F\x00o\x00n\x00t\x00A\x00w\x00e\x00s\x00o\x00m\x00e\x005\x00B\x00r\x00a\x00n\x00d\x00s\x00-\x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00FontAwesome5Brands-Regular\x00\x00T\x00h\x00e\x00 \x00w\x00e\x00b\x00'\x00s\x00 \x00m\x00o\x00s\x00t\x00 \x00p\x00o\x00p\x00u\x00l\x00a\x00r\x00 \x00i\x00c\x00o\x00n\x00 \x00s\x00e\x00t\x00 \x00a\x00n\x00d\x00 \x00t\x00o\x00o\x00l\x00k\x00i\x00t\x00.\x00\x00The web's most popular icon set and toolkit.\x00\x00h\x00t\x00t\x00p\x00s\x00:\x00/\x00/\x00f\x00o\x00n\x00t\x00a\x00w\x00e\x00s\x00o\x00m\x00e\x00.\x00c\x00o\x00m\x00\x00https://fontawesome.com\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00B\x00r\x00a\x00n\x00d\x00s\x00\x00Font Awesome 5 Brands\x00\x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Regular\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00B\x00r\x00a\x00n\x00d\x00s\x00 \x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Font Awesome 5 Brands Regular\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00B\x00r\x00a\x00n\x00d\x00s\x00\x00Font Awesome 5 Brands\x00\x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Regular\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\xff\xdb\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xb9\x00\x00\x00\x01\x00\x02\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01\a\x01\b\x01\t\x01\n\x01\v\x01\f\x01\r\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x00\xd2\x01\x1e\x01\x1f\x01 \x01!\x01\"\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01+\x01,\x01-\x01.\x01/\x010\x011\x012\x013\x014\x015\x016\x017\x018\x019\x01:\x01;\x01<\x01=\x01>\x01?\x01@\x01A\x01B\x01C\x01D\x01E\x01F\x01G\x01H\x01I\x01J\x01K\x01L\x01M\x01N\x01O\x01P\x01Q\x01R\x01S\x01T\x01U\x01V\x01W\x01X\x01Y\x01Z\x01[\x01\\\x01]\x01^\x01_\x01`\x01a\x01b\x01c\x01d\x01e\x01f\x01g\x01h\x01i\x01j\x01k\x01l\x01m\x01n\x01o\x01p\x01q\x01r\x01s\x01t\x01u\x01v\x01w\x01x\x01y\x01z\x01{\x01|\x01}\x01~\x01\u007f\x01\x80\x01\x81\x01\x82\x01\x83\x01\x84\x01\x85\x01\x86\x01\x87\x01\x88\x01\x89\x01\x8a\x01\x8b\x01\x8c\x01\x8d\x01\x8e\x01\x8f\x01\x90\x01\x91\x01\x92\x01\x93\x01\x94\x01\x95\x01\x96\x01\x97\x01\x98\x01\x99\x01\x9a\x01\x9b\x01\x9c\x01\x9d\x01\x9e\x01\x9f\x01\xa0\x01\xa1\x01\xa2\x01\xa3\x01\xa4\x01\xa5\x01\xa6\x01\xa7\x01\xa8\x01\xa9\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xae\x01\xaf\x01\xb0\x01\xb1\x01\xb2\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xb8\x01\xb9\x01\xba\x01\xbb\x01\xbc\x01\xbd\x01\xbe\x01\xbf\x01\xc0\x01\xc1\x01\xc2\x01\xc3\x01\xc4\x01\xc5\x01\xc6\x01\xc7\x01\xc8\x01\xc9\x01\xca\x01\xcb\x01\xcc\x01\xcd\x01\xce\x01\xcf\x01\xd0\x01\xd1\x01\xd2\x01\xd3\x01\xd4\x01\xd5\x01\xd6\x01\xd7\x01\xd8\x01\xd9\x01\xda\x01\xdb\x01\xdc\x01\xdd\x01\xde\x01\xdf\x01\xe0\x01\xe1\x01\xe2\x01\xe3\x01\xe4\x01\xe5\x01\xe6\x01\xe7\x01\xe8\x01\xe9\x01\xea\x01\xeb\x01\xec\x01\xed\x01\xee\x01\xef\x01\xf0\x01\xf1\x01\xf2\x01\xf3\x01\xf4\x01\xf5\x01\xf6\x01\xf7\x01\xf8\x01\xf9\x01\xfa\x01\xfb\x01\xfc\x01\xfd\x01\xfe\x01\xff\x02\x00\x02\x01\x02\x02\x02\x03\x02\x04\x02\x05\x02\x06\x02\a\x02\b\x02\t\x02\n\x02\v\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\"\x02#\x02$\x02%\x02&\x02'\x02(\x02)\x02*\x02+\x02,\x02-\x02.\x02/\x020\x021\x022\x00\x1f\x023\x024\x025\x026\x027\x028\x029\x02:\x02;\x02<\x02=\x02>\x02?\x02@\x02A\x02B\x02C\x02D\x02E\x02F\x02G\x02H\x02I\x02J\x02K\x02L\x02M\x02N\x02O\x02P\x02Q\x02R\x02S\x02T\x02U\x02V\x02W\x02X\x02Y\x02Z\x02[\x02\\\x02]\x02^\x02_\x02`\x02a\x02b\x02c\x02d\x02e\x02f\x02g\x02h\x02i\x02j\x02k\x02l\x02m\x02n\x02o\x02p\x02q\x02r\x02s\x02t\x02u\x02v\x02w\x02x\x02y\x02z\x02{\x02|\x02}\x02~\x02\u007f\x02\x80\x02\x81\x02\x82\x02\x83\x02\x84\x02\x85\x02\x86\x02\x87\x02\x88\x02\x89\x02\x8a\x02\x8b\x02\x8c\x02\x8d\x02\x8e\x02\x8f\x02\x90\x02\x91\x02\x92\x02\x93\x02\x94\x02\x95\x02\x96\x02\x97\x02\x98\x02\x99\x02\x9a\x02\x9b\x02\x9c\x02\x9d\x02\x9e\x02\x9f\x02\xa0\x02\xa1\x02\xa2\x02\xa3\x02\xa4\x02\xa5\x02\xa6\x02\xa7\x02\xa8\x02\xa9\x02\xaa\x02\xab\x02\xac\x02\xad\x02\xae\x02\xaf\x02\xb0\x02\xb1\x02\xb2\x02\xb3\x02\xb4\x02\xb5\x0etwitter-square\x0ffacebook-square\blinkedin\rgithub-square\atwitter\bfacebook\x06github\tpinterest\x10pinterest-square\x12google-plus-square\rgoogle-plus-g\vlinkedin-in\ngithub-alt\x06maxcdn\x05html5\x04css3\x03btc\ayoutube\x04xing\vxing-square\adropbox\x0estack-overflow\tinstagram\x06flickr\x03adn\tbitbucket\x06tumblr\rtumblr-square\awindows\aandroid\x05linux\bdribbble\x05skype\nfoursquare\x06trello\bgratipay\x02vk\x05weibo\x06renren\tpagelines\x0estack-exchange\fvimeo-square\x05slack\twordpress\x06openid\x05yahoo\x06google\x06reddit\rreddit-square\x12stumbleupon-circle\vstumbleupon\tdelicious\x04digg\rpied-piper-pp\x0epied-piper-alt\x06drupal\x06joomla\abehance\x0ebehance-square\x05steam\fsteam-square\aspotify\ndeviantart\nsoundcloud\x04vine\acodepen\bjsfiddle\x05rebel\x06empire\ngit-square\x03git\vhacker-news\rtencent-weibo\x02qq\x06weixin\nslideshare\x06twitch\x04yelp\x06paypal\rgoogle-wallet\acc-visa\rcc-mastercard\vcc-discover\acc-amex\tcc-paypal\tcc-stripe\x06lastfm\rlastfm-square\aioxhost\tangellist\nbuysellads\x0econnectdevelop\bdashcube\bforumbee\aleanpub\x06sellsy\fshirtsinbulk\vsimplybuilt\bskyatlas\vpinterest-p\bwhatsapp\aviacoin\x06medium\fy-combinator\roptin-monster\bopencart\fexpeditedssl\x06cc-jcb\x0ecc-diners-club\x10creative-commons\x02gg\tgg-circle\vtripadvisor\rodnoklassniki\x14odnoklassniki-square\nget-pocket\vwikipedia-w\x06safari\x06chrome\afirefox\x05opera\x11internet-explorer\x06contao\x05500px\x06amazon\x05houzz\avimeo-v\tblack-tie\tfonticons\freddit-alien\x04edge\bcodiepie\x04modx\ffort-awesome\x03usb\fproduct-hunt\bmixcloud\x06scribd\tbluetooth\vbluetooth-b\x06gitlab\nwpbeginner\awpforms\x06envira\x05glide\aglide-g\x06viadeo\rviadeo-square\bsnapchat\x0esnapchat-ghost\x0fsnapchat-square\npied-piper\vfirst-order\x05yoast\tthemeisle\vgoogle-plus\ffont-awesome\x06linode\x05quora\x0efree-code-camp\btelegram\bbandcamp\x04grav\x04etsy\x04imdb\aravelry\bsellcast\vsuperpowers\nwpexplorer\x06meetup\x10font-awesome-alt\x0faccessible-icon\baccusoft\badversal\x0eaffiliatetheme\aalgolia\x06amilia\rangrycreative\tapp-store\rapp-store-ios\x05apper\nasymmetrik\aaudible\aavianex\x03aws\tbimobject\abitcoin\x04bity\nblackberry\ablogger\tblogger-b\x10buromobelexperte\ncentercode\ncloudscale\ncloudsmith\fcloudversify\x06cpanel\bcss3-alt\ncuttlefish\ad-and-d\tdeploydog\adeskpro\rdigital-ocean\adiscord\tdiscourse\x06dochub\x06docker\rdraft2digital\x0fdribbble-square\x06dyalog\nearlybirds\x06erlang\nfacebook-f\x12facebook-messenger\nfirstdraft\ffonticons-fi\x10fort-awesome-alt\afreebsd\tgitkraken\x06gofore\tgoodreads\vgoodreads-g\fgoogle-drive\vgoogle-play\bgripfire\x05grunt\x04gulp\x12hacker-news-square\rhire-a-helper\x06hotjar\ahubspot\x06itunes\vitunes-note\ajenkins\x05joget\x02js\tjs-square\x06keycdn\vkickstarter\rkickstarter-k\alaravel\x04line\x04lyft\amagento\amedapps\bmedium-m\x05medrt\tmicrosoft\x03mix\x06mizuni\x06monero\anapster\anode-js\x03npm\x03ns8\vnutritionix\x05page4\x06palfed\apatreon\tperiscope\vphabricator\x11phoenix-framework\vplaystation\x06pushed\x06python\tred-river\awpressr\x06replyd\tresolving\nrocketchat\arockrms\x06schlix\vsearchengin\fservicestack\asistrix\nslack-hash\aspeakap\nstaylinked\fsteam-symbol\fsticker-mule\fstudiovinari\x06supple\x0etelegram-plane\x04uber\x05uikit\vuniregistry\auntappd\bussunnah\x06vaadin\x05viber\x05vimeo\x03vnv\x0fwhatsapp-square\x05whmcs\x10wordpress-simple\x04xbox\x06yandex\x14yandex-international\tapple-pay\fcc-apple-pay\x03fly\x04node\x03osi\x05react\fautoprefixer\x04sass\x05vuejs\aangular\x06aviato\x05ember\x11font-awesome-flag\x06gitter\x05hooli\x06strava\x06stripe\bstripe-s\x05typo3\namazon-pay\rcc-amazon-pay\bethereum\x06korvue\telementor\x0eyoutube-square\tflipboard\x04hips\x03php\tquinscape\x06readme\x04java\x0epied-piper-hat\x13creative-commons-by\x13creative-commons-nc\x16creative-commons-nc-eu\x16creative-commons-nc-jp\x13creative-commons-nd\x13creative-commons-pd\x17creative-commons-pd-alt\x16creative-commons-remix\x13creative-commons-sa\x19creative-commons-sampling\x1ecreative-commons-sampling-plus\x16creative-commons-share\x15creative-commons-zero\x04ebay\akeybase\bmastodon\tr-project\fresearchgate\tteamspeak\x0ffirst-order-alt\afulcrum\x11galactic-republic\x0fgalactic-senate\njedi-order\vmandalorian\fold-republic\x10phoenix-squadron\x04sith\x10trade-federation\x13wolf-pack-battalion\bhornbill\tmailchimp\bmegaport\x06nimblr\x03rev\bshopware\vsquarespace\athemeco\x06weebly\x03wix\x04ello\nhackerrank\x06kaggle\bmarkdown\x04neos\x05zhihu\x06alipay\fthe-red-yeti\x19acquisitions-incorporated\rcritical-role\x0ed-and-d-beyond\x03dev\x14fantasy-flight-games\fpenny-arcade\x14wizards-of-the-coast\vthink-peaks\vreacteurope\x05adobe\nartstation\tatlassian\x13canadian-maple-leaf\x06centos\nconfluence\x03dhl\bdiaspora\x05fedex\x06fedora\x05figma\bintercom\binvision\x04jira\bmendeley\fraspberry-pi\x06redhat\x06sketch\nsourcetree\x04suse\x06ubuntu\x03ups\x04usps\x04yarn\x06airbnb\nbattle-net\tbootstrap\x06buffer\nchromecast\bevernote\aitch-io\nsalesforce\fspeaker-deck\asymfony\x04waze\x06yammer\agit-alt\tstackpath\rcotton-bureau\vbuy-n-large\x03mdb\x05orcid\x05swift\aumbraco\x0ffirefox-browser\x05ideal\tmicroblog\x11pied-piper-square\x05unity\x00\x00\x00\x00\x00\x00\x01\xff\xff\x00\x02\x00\x01\x00\x00\x00\f\x00\x00\x00\x16\x00\x00\x00\x02\x00\x01\x00\x03\x01\xb8\x00\x02\x00\x04\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\xd9k%\xf9\x00\x00\x00\x00\xda\x15\xc8\v\x00\x00\x00\x00\xda\x15\xc8\x11" var _Assets88d58097382a74c60911983bc1037b4ca4d863cc = "wOF2\x00\x01\x00\x00\x00\x01(\xa0\x00\r\x00\x00\x00\x02\x02(\x00\x01(G\x01J\xc0\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00?FFTM\x1c\x1a\x1e\x06`\x00\x8bZ\x11\b\n\x87\xabd\x85\xe1\r\x016\x02$\x03\x8dd\v\x86t\x00\x04 \x05\x8b\x05\a\xa9\t[t\x98q\x06dž[t\x1e\xaanC\x00\x80g\xd6\xd4M\xe3~\x06\xc7y\xb7\x03I)\xe6\r\x17\x1d\x8da\xe3\x00`\xfe\x9d~\xf6\xff\xff\xff/H\x1ac\xac\xdb\xd4\x1d\x80@jjUY_\xbd\xc9\x1dE\x82 ʕ2xV\x1cK\xb5d\xcdt\x9aN5\xce\vƠ\xc5\n\xf8\xcc\xcf4Q\ra\xddV\xdb5\x91\xdc\xf5\x12,\x14A \v\x88\bD\x04\"\x82%\xe1\xd6\xcbn^\x8b\xad\x16\xc9\b\xea(\x10_\xb7k\xe9\x14\xbb\xd4[2\xafp\x1f\xdcymN\xbd\x8e\xf3\xc3R\xe6O\x9a\xd5_\xa0\x8f\xf2da\xc7\xcb\t\x1c\x92l3A\x85f~\x8c\xcc_\\4\xd2Wz\xcbQ\x96t\xa0c\xc4`.G\xc7y\xea\xb5]\xc5De\x12\x95z\x92PR\xf5\x9cc\x80&7\xc1!\x97\t4\x80\xb9\x84\x00rh\x1e\xb2\xc01\x9b\xfap\xa1\xd4E\x02\x99\xb2H\x16\xb9\x91\b\u007f\xdb\x04\x85\xbbE\xf6\xb1DCo7~\xfd>X\xbc\x1f\xbfOY\xe0\xc7\xdbp\xdaȼx)V-\xbf\xb9\x06x\xb1\x85\xecN\xcf\xff\xf4\xdb\xfb\x12\x1c\x87\xc7h@\x97\xe2\x8a\x0f\xffO\xfb\xb5\xf3\xee|\x93\x15\x9b\xf5F\xb3$\xde\xd4Z\x85\x90)\x91ؠ\x04\x1a\xd4\xe1\xff\x89{ڹ\xff\xef\xee\xecDK\t\xa4I\x86\x01\xc7\x19&\x92e\x14\a\xd4\xf3\xe3\xf3\xaaW\xd5Y\xf2,܈\xbf\x00n +Y\x00\xa7\xf4\xac\x95\xf4\xe8g\xe1#\x8f\xd4\xc85\xe9\xfd\x9btu\xec0\x14\x06Ҹ)p\x92\xb6\x03$h'\xff\xff\xdd\xd43\x9b%8\\\x9ck\xbc\xc7A\x04\xc1\"\xf4=\xbe}\xfeC[\x95?\xa3\x92T*\x95ԥ\xc6\xe9\x99\x1e\xa0%>\xc6}\x00\x8cL\x9c!\xa4N\"G\x1fd\x8e\x1d:\xfb\xc8\xe6\xd4A\xf4ö\x8d\xbd\x053\x1a\xa6l)V\x81=\xeb\xff\xff~\xbd\xbe\xb3\xbe;\xf7\x8f\x9by/\fB\xd5#\r\x04Tx\xf9\n\xf3\xb6\xdd\xdb^\x18\bw\xb0\xc0?iY\xd1\xf2\t\xab\nU\xb5%Zɲ\x8d!\x10\xb2\xddJ\xaf\x8f\xcf\x06\xe6\x19j\xde2\xe8\x8bhP/(\x180\\f\xab\xeeūZ\xb4,\"\x04\x19\x02Y\x82\xdc\xec༐G\x1cD4\f۶\x1eg\xfd\n\xab\xd1Ɗk\v$ \x00<\xb2iU%=Və\xc0KlX`\xb4\xbb\xbad+\xb1<\xf7\xafp\x83\xb4;\xedN\a$\xeb\x8e\r\a\xc8\x1f\x1dH~\xe0\x9d\xaf|\xe7\xf7U\xf3vU3\xbb\n7(\x10\xbao\xdf\x00\b\x8c\x90D2\x0e\xe4g\x1c;\x18kcYgF\xf3\xe3\xa4Ŧ{\xdb}\xfe\xae\xc2\r\n\x84\x9b%!\x82\x84P\xc4\x19\x1bcb\xf7\xed\x1fV3s\xf6\xff\xffϕ~R\xbc\x93\xe2A\x95d\xc0I\x839\x04\xa6\x0fhs\"\b\f\xfb\xff\x93\xcd\xf6\xbdY\xbe\xb7\xbd \xa8\xee2\b\n\x1a\xd2qA\xa3;\xe06&\\0\xb0D\xf3u\xf5R\x95\xee\xfe\xcf\xc1v9\xbbN\xc0\x04\xcf[\xe3q$y\x8f\x06\xa0{C\x1b\x02\x03\xdb\xed\x1d\t\xdfl\xd9\xffW݀\x99\x92t\xbfi\\\xec\xfc\x87y\xb7\x15\xf6\x01tc,\u007fY\xa4CO\xa9Z\xb6\xe0G~\x96\xde9\xe9\x1c\xf2\xf4\xa9h\xdcT\x1e\u05eevA\x05,(\xc9\x04u\t\xe4\a\x92\x97H\xf1\x03!\xe8~H\xe9>\xe4P9\xa5\xca\xe3jAJ6p\x11+^\x00..\xc4\x0f\x00\xe5\x008\x02\x8e\xa9\xbaW\xe5\x10r\xe9\\\x94\xaeJ\x17%\xe8(9\xa5\xb6p[}\xe8\xfc~\xb5\xd7\xe9Ta\x10\xaa\xad\xf2\x8cǙ\xbf\xf7r\x99䱴vw4\u05cb*]18\x1c\x92A8t\xebҢu\xbc\xe5\xe7\xd5\xd4jAɁ\xdeK\xb2/%\xf9\xa2.\xbb(}[\xb4[\x94\xd74x\xff\x03\xc3\xf9\xffcH\"\fE\x00341\x18\xca\xc4\f%\x13\xc0P&\x00J\xa6\xe8DK\x1btY\x97\xb5\xf9B\b\x03\x80\x94\x88\x19\xd2&\x06\n\x1c\xc9\xf6Y\x94\xbc)\x16ͮ\xab\v!\x17\xe5^\xd3\\\xd1\xd6\a\x99\xbe\xaf\xedH\xed\xdf\x1dJR\xaf8v\nTݴI\x86^;Ɛ\x1e\xc3CJ)\"\xf3\x9d\xd5o\x16\x97\xd3\xfeW\x972\xd4\x12k\b\xcf\x18B\x88\xe5_.:Ȝe\x00\xb5j{\x05\xc3Rf \x11\xc2\x14\x11p\xa1\xb2\x1c\xed\xfd8lӊ\xc9\xf0b\xc1\x02\x11\xbd\xca\xe3\xb3%\xdc*\x03\xee\xdf\u05fb\x98\x94kW\xc1+#\xc9$\x19Y\xaeز\x8a\x9c\xf8\u007f\\\x81\xa0k\x86\xb7\x0f\xb3A\x80\x01|\xcf\xf3\x15\x02\xfc\xd4\xe3\xfe\x14O\xd5z*`t@\b'\x05\x84K\xb1!\x88\xe8w\a\xc4`C\x9b\tΗ\xf7\xfb\x1f\u007f[ \\cxܨ\x87\x99\x96b\xf0\xf1g?\xb5\xa3\xdb\xf4\xca\v\xc2(\xebBg\xc1z\xeds\xbb\xdey}Q\xf4\x9a{\t\xd5\xf99N\x00kE\x90\xe2E\x88\xd7\xf5\xa8'<\xf3\xdd\xdf\x13\x18\x04\x10F&\x15\x8c\xa1\x9e&&\xd1\t\x04\x8d\x84\x86\x89C\x86&\x03v\xdc\xe6\x0f\xde\xf3WV\xccr\xf9Vm\xa0\x11ƛk\x95c\xacs\x92]\x12J\xea&,X\xb3\xe5\xc2\xdf}\xe8\xe3\xb2knb\x1d\xc1a\xb1\xa9\x19\xb9EU\xea7\xeaDg\xbaЕ\xee\xf7\xa8\xe7\xbd\xedC\xfaMS\x98]\x96Snsg\x92ɦZ\xc2\x1cK[\xc6n\xee\xc5\xfeέ{C\xe7\\x\xa9\xab\\\xfd\x06\xb7\xb8\vw\xf9>\xe5j\xf1\xdb/\u007f\xfej\xc9\xcb\x179\xe3\x96l\xeb\xce\xed\xc2\xeeC\xe5\x1f\xcb\xd1f\xbc)\xfa\xcc0h\x81\xedv:\xe4\x94\xebny\xe2Y\xe1\x19[ښ\xceu\xad'\xbd>\xb6\xb08\xff\xae\xc7Q\xcc\x1f\x0f6\xddE\u007f\x97H\xa8R\x19U\xd4\xd1\xc8X:lWl5d\xc4\xd6B\x1ds5\x01\xae\x16\tQ6\xd1c^\xc1\xb06\xb1\xa7\xbc\xf2\x05\xb3\xdf\xcb\x01\x14\xc0\xd2\xf5\xfa\xe2\xbbA\x02\xd6 f\xdb\x1e\x05\xe7\xf9l+`\xed\x17Г4>\xad\x88bb\xc4K\x03\x00\x87\x89\x051\xb2\xdc\xf6\xdeD'\x01\xa6\x1e\f\x98y\x146۱L\xc1\x9b\xb2'\x9cq\xb0\x92\xd8b\x1a\x10 \x95\xb6t\xcar/\xb7\xa5\xfa|\xf0a\xdf[* rR5C\x9c\t\x84,c!\x80\xac~KޜLx\v]\xb8n\x94\xd8s\xa5\x83UZ\x81v`\x8dVڢQ\x9a\xa2\x10\xff\xccgM5\x16I\x02\xa2\xc1\x99t>\xad\xcd$0B|\xfb\x8e\xa4\xadF\xc1\x1a\xf8\x8f\x9e\x9cw\x8a\xec}\xa0uJy\xc16Df\x8f8\xc7NX\x10\x1dʨ\xa8АdU\x95qG\xe8\xa4\xe0'\x98#\x06\x8f\xdbFe\xc1u6~Na\x9e\xa3\xb0dqĜ!\xc7\xe8\x89\xfe\xa8\x1cF\xfcP$:R\x98Y\xeb\x82A\xc1&\xb2\xc7ߤ_\x13aO\x06[#&\x83;E\xc6\xfc\xe51\x93i\xbf\xe6\xe3\xa13\xc9\xdeq\x06\x00\xcaZ\xb5\xbb\xb9i\x176\xfe1\x9fn\xfb*\x1b;\x02\xc5\xf8\x972HO\xd2w֗<\x1e\b\xdf|\xae\x91\x87%#eJOr\xddR\x18n\xb6\xce&n\xba1\x84\r\x89em]\x0f8\xf4d9{\x15Le\xb4\x01=\xe4\xd4IM\xf3\t\xd1)\xe2\xc9:\xcb\xe2\n\xf8\x8f\xeb\x18\x9dw!Ӊ\x9aT\xf1\xf5C@4L\xd7\xc8]\xcepDB\xa4@YDŽ\x85߾ꡐ\"\x8b\xf5\xe2#;m\a\xa3vX\x0eR\x91\x1b\xe3\xf5\xc8/2\xa1#>/\xf9\xd4\xd2\xfd;\xb5j\xfc\x05cY\x16\fd{\xe0B\xc4\xe7!m\xce&\xd8\xe6\xdc\xfb۩d\x8b\xc8֯\xbe\x9e`\xa8\xa5e\x004\xa6\xa4t\x8aXc\x10\x0e\xba5}\x17\x91\xe5·\xd3\xf5\xfal\xd3ǰ/\xcb\xfd\xed\x9dt\"ّ\u007f\x8c\x06w\xa9\x1c\xd4\x12\xd0\xe1\x16c\xebsC\x82c\x1e橱t}\xed!7\xab6\xdf\xc8˾:ؾ\x11\x11\x1bD\x13\xb3\f%\u05cb\x05\x80\x9d͓\xadR\xf7\xfe%\x05\xa15\xcaX\xab\f`U~\xcf\xfc˽\xe6\xc3\xe80Ԩ\x15\xbe\x8ahLN0-m\xe6aY\xc7\xc3\xfd\xfa\xde\xf0\xe4JQ\xcb\xd5;G\xbb\xdb\x00b\xed\xc1\xa0^%3@^\xed\x15\x8c\x98\xea\xb4Y\xe5\x93>.\x98\xa5\\Tu\xdeF\x96Ǚ\xe1\xc0\x936[\xf6\x87\\C\xc5\x01\x00\xbb\x92\x83!\xb6\x1cJ\v\xc0aՙw\xd0#\x84Сޔ8\xbc\x8a\\j|\x9cv\xf1\xc2^9-\f\\YRV]fd\xb3\xf7\x01A\x1e\xb4f\v\r\xb8\xffh0\xd8F\xc2\xd5w\xbe|\xf7]\x95\xff\xd8D\xdf\xfbҍ\\\xbe}\xe5+f\x81\xa3\xf6\x18\tP\x82%\xfdI\x1bǍhj\xb5\xb3Z\x84\x14ѬO\xa8~{jp\x88>\xf3~\xb2l\xeb\x1c\xf0~\u007f\xf7\xb19\\\x17[\xa3\x0e\xeb\xfc\xdaD\xd8Fg,X{5\xf0\xe9E\xf7١\xff\xc5\xf9x\x95\xbb<Ҫ\x9e\u007fk0\xf9\xf9-\x9f;Onϖ\xf3\xcfG\n˰\xd4g\r\xeb\xe61\xd4#\xa9b\xb4\xa1\x93bMB\xb9\x83\xc9\x06\x80\xf6˶\xb0\xb5;!\xbb=8\xda\xde*\x06~:\x1a\xa5\xc57\xb4i<\xaaQ\x86h\xda5X\xa9r\xcc\xd8`Bz0*>i\x88\x96\xa4\x94\xb6N\x85\xe26\x00n\a\xa8\xf0\xa0UY-\x01\x18@@\xcfJ\xec\xe1\x05\xb0l\x90\xa8\xd1\xff\v#\x1e\xa4\xca\xd9\xda1c\x14d\x8a\xe7(\xfe,\x87\xfb\xd9\xd7\x10\x9f\xf2#K\x8c\x81\x99\xba\xe111Q\x03\x94\xfe\xab\x9c\x001\xda\xf6\xcc\xda҇A7,^\xc6k\xb45\xbc\x9d\x13\x1f\xff\x1e]/\x04i\xeb:\x16\xc6\xe3\xe8}ڙ\x1eG`\xda[\xcey\xb2}\xc0\xc3n\n\xf3!\xfehsjL\x91I\xbe\xb1ga\x93\x01.\x05\x8f>8,I,\x87\xcc\xd7D\x1e\x01\xe9\xe1I8\xef\xfd\x02\xc16\x8c\xec`v\xa0\x9ad\xd0`\xfe\x8e\x06\x00\x9d\xd8\x13\xc9u\xe5v\xe8Ö_V\x97V\xf2\xb9\x01\xf7\xd4F\xdc\xfd\xfcx#\x00j9\x113\xc4\xea\x10X\xb2\xa5~Bd\xeb\x84R\r\xe1\xed*\x1dY\t=\x0e\xb8\x8c\xf8d_(\x03\x03\xf9\xb6\xa6\xefy\xce3\x12\xaczg\xe3e2\x8f\x9e2\xfdbq\xb2\xc1\xfdh\xc1\xd7\x18}CI\xe6VhL\xfe\x12\xd6\xf2\x01b\fH\xe6\x90nu\x88\"q\x8eS&\xbd\f'ڲ\x98\x97\xdac\x01ȧynQ\xad\x13\rY\xb7\x94dZ\x80jU\r\x10\xe0g\xb8\xc1\xb6\x1d\xaa\x10\x89\b\xc0R\x86I\x93\xab\x15\x02E\xc6L\x91\xa5㈰*L\x8dɜ\x87r\xac\x18D\x17\xb1>S/\x83r\x90\x97ۇ`K\xe6z0\xb3_\xca\x1a\xf1\xa7\xf9\x0e\xeb\xe8\xa0R\x9f\xaa\xac欈ɖ\x88\x1b*\x88ԓ\\\xa0h\x1fS\xd6=!\x01\xf6v$\xb9ԦN$\xf0B\xc0\x9fr\x10W\xa1Ꜯ\xf6R\xf7A\xe1l\x84\xd6\xd1i\x87\x03j\x9f`=\xdb\x04,,\xee\xd5C\xc8@\xb3\xe9Q\x9b\xdd\xd0\xc4\x1a\xd5d\xabN\xb5\xe7/\b\x04\x87!-P\xae\x12S\xee>\u007f0\xa7\xab\xffw\x13\xf3\x84\x89\xe5\xfcK\xb2\xa5\x94\xa1\x8b\x1e\f\x91s#2k{va\xbd\x01\xdc\xcf\xe5^\xfd>/\x95\x00\xe5$W\x04\x92\xef\x10ӱ?\x1eN\fk\xe7\xbc\xe8\xcfs_\x8d\uf5af\xf7\x9d](3\x00\x02T\xab\xde\xca2\x93E\xbfTL\xb8\xceڳ\x98\xf8\x0e\x82Y\x80\xd3.\x01\xf8\xc6=M\xa0'\xfb\x88\xaf\xddώY``\nS9\xe9e\x9f\x818\x88\xb8\xfc\xc5\r\xb7\xf8\xdf.\x01\x12\xacw!\v\xb6\x19\x83\x10f\f#3\x95\xf9lا\xaa\xab\x95\x17\n\xefS\x16\xfazѤ\x8d\xc8>\x1e\xb8\xbf\xa3\xb4u\xb0#\x9e\xdcs\x81qE\xee\xb5\xf4Iq$\xee\x1eW\xaf\x1fC\f\xdf\xe2n\xdd\xd0\xea\xe2\xde=\x15\xe2\xe6\xc5ѵw>\xdaO\x0e㙥E]z\x93Zp8;\x12\xcfo\x1d\xd8\xf5wMc;\x9b\x90Û/^ވ\x1caU\xda:g\xd3Ey\xbd\xe3iEG\xb6\x91\x96\f\xc8\xed\x98\x18\x84\x01\x89\xf9\x8eFx\xa1\xbd6U{\xa0\x90\r,\x13\xc3\n\x1e\x95\x97\xd4}\x91\xd3\x1d\u05c8-\x9f\xfa\xd6\x17\xa4\xadܠ\xbbjbyX˝d\xcaO\xb3\x85\x9d\\\x88\xa1\xb8;\xc8\xe3\xf2>\x91\xd1\x1fI\aA3\x18͖\xc7Uj'\xeb\x06\x8a\xde_DV\xbd\rȃґ\x9bk\x15\"\xbdeK\xc6xX\xa8\x1f\xdd\xf0\xf19\xe4N\xeb\xcd'\xd6k\ny\x10\xf4\xaa-\xa4\xbaR\xe8\x1c24\x02I\xea\xd2\x1c\xce\x19I\x1fo\xa7\xa4bP!b\\\x9e\xacwG\xbd\xa2[q\x98\x1e\xf3\x9c\xef\xe0M \x14d\xa8\xc0a\xff\xe1IWtUGz\x0f\xe3\x87\xc9\xfd\xe8\xc6ݖ\xb8اA\xe2wn\xc73\xdb<\xfe\xd1\x18\xd5\v\x98\x06\xfd{\x17\xb6\xafT~\xef\x8e\\\xe0\xc6^\xcc;\xbb\x05\xa7\x85R4\x9b$\x92t=\xae0\xcf@u;\x8a\x04\xc5\xe5](1\xb1u/M\x95\xeam\x9e\xb6\xbaJI\xe5yx\xa5p\xed̀\x1eE$]{\x8b\xa1\xe1K|\xa15\x12q\xd5p\x00\xe3Tl\xb4;\xc5\x1f\a\x10\xfa\xa9\x88\xa4\x9d\xfe\x86\xf8\xfc\xc2\x010\xbc\xd0<\x1f\xa4\xb1\xecR\x80\xe0!\x90\xff\xf2\xb7~\xc8\x14\xe9\xab\x19\xb8ŵ\x82\x1dR\x8cH\xde\x06\xe3\xc8\x03\x1e\xb9\x13\xc8\xed\xab\xb0\xd9(\x0e{\xad-Δfŵz\x9cVےO\xe4\xfc\xed\x95\xe0\xee\x8c\xcaz\xb1W\x9e*\xf5\xf2\x9dm\x82\x9a\xa5\xad\xe1\xc5!\xa4\xc0\xca\xe27\xa0\fEZ\xa5\x1a*\x824\xcbQ\xf8=5O\x1c05\xb4\x96V\xd0P\xea\xdf\xc2(\xa3d\x95v\x18\xe1\xd4!\x90 \"Q_\xf3\x8f\xe6\x19\xcd& PphBb\xba{\xe3\xa8x\x067\xcfJ\x19\x9cq\x90\xefTA\xec\xc6D\x96\x9b/+\x8a\x0f:\x84\xa6ǖ\x0e\x11\xf220/\xd0\xd1\x19TA\fƙ\xf6Ɍ,d\xe2\"\x92Zd\x91\x00J\xb3\x92Q\x9d\xba\xab\xc9eN\xc1)\xc9X\xa8\x14\rD\x13\xab\xaa\xf0r{\x87\xb8\x96\x90(bY\xb5\xd5I\x13z\xc7\x10\x19\xd1\xf0\aˁ\xee\xfb\xe5$;\xa1c\xf6`0\xf3%\x1d\xbc:\xcb\xf2ݗ\xc3#>&\xe2\x8b\xce;m\xa7\xb9!\x13\xceV\xb2j̞\b:\xe1\xcf\xc8\xc8i\xc98R\xa6\xd2\x1c@\xe4%\xf5֥\n+\x01\xd8:\x85p\x89\x95\xca\x11\x00Vk\xa1$\xe8\xe1AW\x00j\xd6\xd6}\x17\x15\xd2\n\xbcҶ³\xaa\x82\xa4\xb8M\u007f\xce\x17ڠ\x92\x1e\b\xd8P(A\x00\x16Ր\x10\xc9\xf1H\xeb\xb9\xedu6\xeas\\\x81y=r<܈{\x18\x81j%\xb7\xc3>\xc0~\xe1\xa9:\x8f>aCH;\xa9\x84\xaeU\xe3\x12\x0ez\xb5X\x97\x05\x97\xeb\b\xebL\x8f\a\xa6\xa0k\xf0oi\xfc\xc8\x00\x9f\xa4\\\b\xaa%B\xc77c\xc9\x0f\xb2\xcb\x15\x00!9\x98z08\x00\x81C\x94\xb4\x92|x\xc0\xf2\xbasU\xc2B\x15 \xda\xe8\xfc\x14\xda\xdf\xd0\xf5\x9a\xcb\xfa\x03P\xa5\x1e\xbc\tC\xd3=\x81\xb5={\x93\xc6`\x183\xc0\x9f\xcbe i\x14\xbf\xfd\xc9P+5\xf3PH\xd9x\xdc|\xbcn>\x1c?\xee\xdf\x1f\xcc@\xbd|\"\x8e\xb3\xe5\xc3~\xf6G\xa6x0\xa5&B\xadn\xcbb\x030x8O\x8b\x98\x98\xc1At\xe3\xa3p}#\x8d\xcd%\xd5'\xbc\xff\xf6\x89\x82\xa6Ӈ\x9f\xad\xbfxv\xc3t\xefLj\x81R\xba2_?y\xf8\x85\xea\xd9\xf5\xd3\vj\x8c\x82H\x1a\xfe}\xba,z\x83_n\x9f\xa6\xda\x12\xcc\xeap\xf7\xb9\x8d\xde\xde\xce6:\xbe/L\x97\xbem\xd3a\xfd\xfe\xfa\x98\xdd\xf9!\xd6\x17\xa7o\xf0\xdd\xe0v\xa5\x1b\xa4\xb0\x0f\xa5\x8f\xc0<\xf4ظ'4\x89\xf7\xb5\xad\xb9]\xe6.\x9c\x96\xd3\x12\xd50\xc9P\xad\x99\xe9q\xe8\x97\xd5\u007fY\xdc\xf5\x1b\x10\xa9\x89Z\xc7E\xb4\x06\xb01\x01\xa1Z\xe0\x13\x8a\x9e\xa7\x8e8>\xbd౬\x8e?\xfbb\xfe^{.\xe7pίa@U; \x16\xd4:\x82\xdc\xf08\xf6\xc48D8T\x8f5\xa6\x81c}e\x92\x19{\xbe\x83C\"\x84\x03\xa3\x95\x88\x1e= \x10\x17\x1d9\x1ct\"\x85\a\x1a\x8djF7\xfb\xb4\xf6\xe4<\xe8\xe9\x89\x167\x01 \b 2r%\r\x04\x89\xa8\x99\x81\x9d\xa6\xa3mZqv\xa5\xe7\x90\x14\x81\x8f\v\x13\xfc]\xb1\xeb&b\x9d\xe7[AW\x96\xc0\"\xfa6\xbe\x95\xa5\xfe\xabJ1{ '\xb7O\xae\xb3@\xda\xde3Ow@\x9cp\x06\xa1\vҒ6\x02A|\xc1\xc2\xfc\x8bD\x9a\x1e\x05\x81Z#j\xe0\x9e\xa05\xfa\a\x14\vo'\x1f\x9c\xae\x1b\xdd\xf9\xb1\xd4\x1d[\xf5_F\xe7\xd3\x12\xb3\xbbg7NK\xba\xbc\xe6S\xf99\x82\xfe\xc08˃!\x82Ӈ\x0f\xcf\xdf|\x96^=\x02\"I\x1c\xafO\xad\x0e#iƁ\x15\xfc\x18\n?t\xe3'\x92e\x1a\x98\xed\"\xcc\xe7\x8bS\xa0j\xb1ĸ\x88\xbc\xc2\xf7\xe0\xceٍR+\xf1\x15\x9b\xfdlqyr\v\x04\x82\xd2\xdb\u05ca\xd5@\r\xf8\xbdt\x9d\x86\xb1\xfb\xfc\xd3W\x05l\xd5^\x99\xdaӍ\xb2(\x1c\xbb\xaa\xcfnE\x8eҩ\xa6\xeb\xec~\xfcaZE\x83{\xbd\xb4W\x12]t\xc4\xfc3]l\xd9\xd6\xf5\x19\xd9rz\xe4\n\xbb\x1anz\xaf\xc8\xc8H\xb4\t\xd97\xb2\xd7Qlj\xff\xb2ߣ\xceC\x88\x935A\xa6\xab\x80l\x90i\xe1\xea[\xd5\xe7I:\xbb\xf7\r\x10w-m\x18\x81\xec\xfdy\xe4_4\xaf\xad\xc43f\xb4\xf6=\x1b\x9f\x98\xd0\xcf(\x9b+\xfe\xb7\\\x9d\x9fi@\xe4f\x15\xf3\x9d4䨝\xbb\xd2\xcf]V\x81\xbeԨ\\mX\xa1Ƣ~+{\xbd\x97\xfd\x83\xf4\xf1\x8f\xd5\u2d6a\x87\xb4\x90\x82\xf5\x13\x80\xa7k\x99d\xbd\x9cq(\x13<\x1f\xa4m\xe5\x8f\xe7\x02\x13\x8eR\x809\x044H\xfb\a\x84\x1a\xb9\xb1\x02\xb0Y\x87\x85\xd0hT\xc2\xe6\x13B\xa0a\xebZ!\x9c\x03@c\xa4\xa0,\xf7nu`h,\xa0,zJ\xd3\xc6\xe1\x1a\xa0[\x1d7\xbc\x89S\xb4\xee\xd9\xdaH_\xbc\x96Q)!\x1a\x1b\xeb\x10k\xa7\xa7\x14\x841\xa0R\t\x03\xe0\x97\x97L\xaf\x1dJ\xae\x1c\x04f\xe4\xbc\xf3\x81y5:l\xde\x1a\xc7A\x18\x90\xc9X~\xd2@\x9eS\x88\xd8\x1a\x15\xb2\xa2\xe3˾}\x1b\a \xf0U\x96\xba\xe9v\xbc\xeb\xefJ\x15\x15\xa5\x97W2\xa4zq\xf8\r\xcb\x01\x96\xac\xc9c\xbd)}$=[\xbf\x15\x87M-\x01\x17\x185h\xe7wH\x97\x17\x8fD/\x8a\x84\x97\xd2~\xe8\xdf\xdbv\\)\xbb\xfe\xfd[(k\x8b\x10\xfe\xa0\x1b2-\x8f\xdb\x0f!\xf6\"\xac\xea{\xfd\xcc\x1b\xcb\xc5\x1dG\x81daKŀ, ^\xf6\x0f\xc9K\u007f\x82\\Ռj\xfb@\x9a@\x04\xd0/yR\xd8\a\xaf\xafC\x1c\x92\xa0\x98\xd7<\x9a\xe4\xcf\x16I\xb9`\xb2Yd\xffٻ\x1f\xddO\x1e\xc67\u05cd\x03\x96\xb8i\x8f\xd6oN\xf4G\xe5\xee\xeb\x80J\xb6I\xe2f\xbc\xfb\xfeO|oh,)ĺbh\xc0\x13\xd5\x1d\xe0\xb6<(\xfdI\x96r\xea\x15\x8clZKz\x86D\xb5Me\xc25{\x88\xc8\x1e0Uq\x1f\xef\xbe\xcc\xe39\xd4\xfa\xf6\x06\xcbU?\xe3<=\xa2\xb7\x8f\x8fWp\xa3\x88\u007fA\xd3\x11\xb5\x86\x8c\xb4\x1a\xf1\xdd\xdf\x1c\x01\xec1\xf3\xbc\x96!\xce\xceQk4\xd0^\x9b\xa8\x8c\xbf\x8cȬu\x15\xb3H\xcb\f\xb0.I\xfd\x99\x12\x16\\hm\xb4\x9bn\xe3\\\xb4\xa7\v\xe0\x88\x05w\xa8e\xea\x9d \xa4@|\xdc\xe7v\xf6?\xddn\xfcS\xf2%\x83\x1b\xcfgy\xf7S\x03\rL@\v\xb9\x17~\x12Z\x180\x88\x0eN\x10D\x01\xcbo\v90\xd6\xf0tEr\xff\x87+\xb1\xce~\xa7\u05ed#:\xdfw\xd6~\xe3\x12\x89H\b:&\x02\xf6<\x06-\xa6\x148\x1e\xe6k\xe7\x10`\x95i%N\xd1cA\x1b\x10\x91\xa7\x9a\x82\x96 dGvT-\x04U\xfc\t\xd7v\xad\r;\xa06\u007fK\xbbB\xfd6e\xef\xa0ה@!\x15\xd8\xd6\xfej\xc1\x03\xfc_\x15N\xcf\x06\xe0\x91\xa1\xc0\x19\x0e\x01\xe2a\x869\x90\fd\x84\x11\xb6\x00\xd8\xe2\x14)}$\xc7\x1e\xe0YU\x86\x00\xd6p|\xc4g\x8d\xa9o\xe5\xeao\xd3үl\x88\xb3z\x1fB(O{\x0f>\xd6\xe1\n\xdd%\t[G\xc2#%2\xa5\xee\u007f\xdb=\x15-\xd2U<\xa5\xa6\xfe\x8e\xa9\xb5)\x1e\x03:\xe4'֮m\x02\xe8\x96t\x12\u00ad\xfbM\x94f\xa2\x97y\x00\xe7\xd3\a\xda\xf8\xbd \xbb\xa3\xbe\x8b>B\t\x96\xcd\t\x82@ًs\x86t\xf0JE\x8bH\x95H\xd7ԔB\xa7\x89\xe2\xb8=^\xf9\xbcR\xb6\x88\x17@p\xec\xca+\x92u\x01l\"\xb7MV\x04\xb9\v\xa5\x8f\x8e\xb2,\xe1~\xf4\x1e\xb0\xea\x88 \x8f%\x91\x8bǰ\xcdkg\"\x1d\xf3^\x1b\xd0%\xc0\x05\xb7%\xb5!\xa4:\xa8ecĭ\x93\xe1\xb5\n\xaa9:\xd9\x049;j!d\x13)\xc7\x18L=Ni\x86\xea\x110n\x8ay4\xe9\xcc\x10*c\t\x02&\xc6>\x90\xc0\n\x16\xc8\a>\x80i\x00.x\xfe\xbe@\x83\xb8`9T\x86y\x00\xa8\xb8\a\xffu\b\x905\x19\x80\xbc\x81#\b\x958\x00\x0e`\x9ew\x19J\xd1_\xe2\xad@Íms\xe0\xc8\xf3\xd9\x02#R\xbbBF\xc1\xd8\xc5@\xd8[\x02\x1c\x0ea\xe4\xd8\x01\x88\xa1\x85\x92C\bg\x0fv\x19H\x9dpx\xb4\x92\xab%ɔu\xc1\x87\r\x13\xb7\xb5\xdfC\xf0\xf7\xb7.\xbe\xc0!\xf2\xfd\x81N\xd5TZ\x0e\xf9\x89u\xb5\x14\xe3E\xf9\"\u007f)p\"\xaet\x0295\xa2d\aX-'w\x0eK^\x0e\a\xfd\x03\xfa\xf5\xc2=\x82^\x98i\xa0\xff\xb7\x1eF\xa0\xa2\xdbʹ\x14\xd9k?\xd1\xd2\n\xaa\x9fLk\xd1{\xd6\xc0\xf7\x1b\x00\x96i*\xc4f\xe6k\xa8\x16 \x16\x8c\xa2\xc4M\x93\xf0\xf0,l\x8a6\x98\xe0r\xa6c\xdcX8&\x81\xa2CA\\\x03ܓ\x141\xe3\x18\x94\r\x01\x83\xd1\xcc2\xbe\x98W\xb2L\xc1ɹH\x88\xaa:\xb6\xe6\xe5\x8d\x1a\xd56\xe5\xd9y\x17),\x89ϲrc\xc2\x0e\xdc+\xdd\xf9͓\x9b.\x18\x81\x1c\x82Qe\xabr\x0exs\xa2\xb4\xe8\n\xa1\xd2\x00\xe7o;\xbd\xd0\x1e\x16*\x14\x85o\xd5\x06\xbe\x93\x9c}۷\x9f\xf4DpJ\x9bi\xf0\xc9F\xfe\xa0\x05\x89P\x16D\xa3\xd1\xd1^\xae\r\x01\xe3\x15\b\xab\x9c\xbbL\x81\xf2\xbd\xf4\ufd4c\x8ct\a\xc2Jf\x05\x15{\x15\x16\x1a\xda6\xf5}\xee\xc5)\xad\xf3*\xb9\xa1fw\xe7U\xb6_\xb9\x12ז\xec5\x91\xeb̬\xb7j\xb3\xd1+\xdd\x06\xba\x12]\xc76|\xab\xe4 \xe5G{G\xa1\xfa{\x02\xdb?\x92\xeaG\x1b\t\x87\xcdp`\x80\xad\x84]\xcfiy@/\xfel\x93\x06hZ\xf6t\xfa\U00082453|E\xb0 L\xc0\x83C\n\xa5\xae\xe4\xa0\x14yܤ{\x01?\"\xce\u007f>*\xbf]7\xa1\xcc\xcb\xe9\x80T\xb2K?\xf115Y\xe5a\x06 \xfe\x93W\x18If\t(X\xb0\x13\xe1\x8d\x1a\x05]\x01Nk\x88\xda\x1a2|\x90\x19$\x88\xd8^\u007f\x82t\f\x9e\x93`\x1f\xa7R\xd4w(9\xa0\xc5%\xecÖ\\\x84v\x1bk\xe9F\x15\xe7j\xe8\xce8λ\u07b7\x91C;'\x1e\xb6\x1fXz\xb0\x974\x9c\x18\xb7\xa6\x02\xf1\xc1\x19\xefK\x03\xe7>\x00<\xe9ڬ\x045\x06\xb5-\x19.\xa20\")\xf8ɏѮ\x80\x9f\xc8xA\xdcz\xd8\xe3\x9a\u007f\xea\x95\xdc\v\xe4\xe1%\xec`j\x9e\a\x9e\xaa\r;CW\x88^\xb8\xdff͡p\x92\x83\xb4\xcb\x13\xcd[7\x17\x0f>\x9a_\x1d\x9f\xf0\xbag\xbd\xaf,\f\x9b\xcc\x05\xf4\xed\xe0:\xa2\xfd\xc9GX\xe7\xb7o\xaa\x89g\x88\xe7\x1e ^\xed\"o\x15Ur\x1aռ\xf1\xe1쇽\x85\xa9\x0f;\x9bou\xcc_~ճs\xe9\xf6\x8e\xd6\u007f\xca\xd1\x18\x10J\xe9^a\xb9\x10\xf0-\xfayF\xe7\x8c\xf1\xa7\xb1\xd0\xf2LB\xa1\xe3Y\u0530\x15\xe2\x02\xe2hd\x1c k\xe5\x1b\xed\n1\x0f\xe7\xd2\xf8\xc8c#z\xf0p\xea\xa0\xfb\xa5\xf3\xd5\xfb\xec2\xd1jO\xfd\xfb؞v\aЮN\xa0lj\xf36b\xb3\x9a\x1a\x84md\x98W\xc8l\xbdm'\x9b\x94+%ia\x05\x04\b7\x94\x87\\\xc9Ư\x8a%f*f(B=\xf05r\xb6ՉR\xa4\n\xd2\x0e\n\xb6\xbc\x83H\xb5\xa2\x91\xff\x9e\xd43W\n\xfd\xeb\xea\xa2<\u007f\xc0ö\u007f\xfc\x8bC\x87?\xc0\xfaL\x05\xa9\x1aM\x9c\x00\xc6\xca\xef\xf7yי\xd2\xce\xden~\xb0\xf5#\x9654l\xf5\xc9|D\xe1\xdb\x04\x8d\xcb\x02rE*\xe8\xe1\xf4ѽ\x10O\x0f\xe6Mf.\x10\x8d\x90\xe7)\x05\xac\x14b\xb2*\xa1#\xae\xfefv^z\xce}\xc9VkR\xf2#\x81\xd4\x06a\xec뾾y4y\xbf\xd6)|\xba\xf1'\x8c\xbd\x1f\xad\xd9^m\xcbC\x8a\x19\xe8b~\xe6\xd9T\x1b\xa2\xc2XXt\x11&\x022(\xd9jU\xe5\x1d\xa08\xe73\xd0(\xfc&\xc6\x12\xf2ڐeam\x1eB7\x14J\aQ\xf3\xb0G\x12#\x81S\xc0ƽ\x8a\x9bN\x168r\xcc02\xc1\xb7|\x9f\xfeM\xa5,J&%\xfb\\$\xc0\x0f3\x92\xbc\xe8j\xc9\x1a\xb2\xb8P\xbe\x84\x85\x93&\xe6)$RU\xa8\xd9hc\xccOrл\xd3Tk\x95\x19\x15$|\x90K\xd3\x1cK\x12R\xd4\v@\xba\x1d\x8dw\xac\x8dI\x9a\x98\xd0\xd60F\xa9\x894p\xd1T\f\xcf\x15\xe3qC\x11 Z\xaa\x82\vEI\x9d\x1fNܕ-\xf0\xa4K\x11\xe2\x01\x8c\x9b\x16Y^dRF\x80\xab\xb7\x86\xaa4'\xce_Vh2\xacy\xb6\xf8\x17Y\xf9\x18\\!\xcc\u007f\x1e\xcd\xf9\n\xb1|\b\xaf5\xf2@\x1cX͢\xd7N^\x94\xbd\xf4\x11`? 4\xc9&X\x9c\x97~K\xa1X\x83N{\x05\x13\x0eX\x85\x95\x8c\xf3\x84\x1bS\x04\xb8u\xd7\xf9U$#:Hlj\x93\xdc\xf2\xa6\x01\x8c\u0601r\x92\x01\x1e|h\xc6\x052v\xb3\x19\xe6z\xc1\xe5\x8b\x00ү&ݙ&\xd9\xe7\x8d\xf5/\x81\x80t\rY\xf1\f\xb5\x81̹\xd7\xe4\xb2\xf0p\xb5\x81\x03\x9e\xe5\xad\x06\xe4\xc0_P\x8a\xff0\xfb\x94f/\xd3\xd0툞*;wڃ\xc1\xec\xd9\xeb-\\#\x8a\x92\xa0\r\xd8\tս>n\xb6\xdfwl\t\xba\x13\t\x1a\x80\x83\xaefh\xa1\xcd\x06\x00/5>\x87=\x14Q\xac\x91\xfeo\xc8]K\x13\xdc\xfc=\x10o\xe9_\xae\x1f\xcf\xed\xdcܟ\xdf\xfa&\x9f\xbd{xqyM\x1e*\xf5\xe6̙b\xc9[\x89D\x92Tji\x01\xa7A\xf3˧\xf7\x16bD~\x8b\xb6\xe1قJD\x9f\x1aN\x0f.\xf0Yw\x84\xd1%˛\xd5\xd3\xc5?\x95e\xfe\xd1Ә@\x8ac2f\x00\xa2\xb2\x8a\xeb\xf7lQ\xebYd\xb9Z\x94\x19\xa1\x8b\x87;\x80-\x9b\xaa^\xd4i\xbd/\xe3ݰ\xfc\xf5\xd9=\xc0\xde\x1b/sf\xf3\xe7;\x9d\x8b72A;\xbd\x98\xb9\x01P\r\x8f!\xe0\xb8\xfc\xf9C\xe6\xe2\xf7\xeecZ\xfd\xd4\xfa\xfe\xb6\x97\rG\xcd<6\x9c5\x0f@}\xdf\xd1\xf1:\xa2\xaf\x94\x9f^Al7\xbb\"\x80s:3\x98{\xba\x8f\x8b\xfab\xdd\"\xc3AIxg\xb3\xe7L\xb1l;ӓ#\xcfVJ\x9e{_\xc6>OJdǾ(\xba^\xad\xf2>\xa8\x14\x95\xc9/+\x8e]/z\x8d$&G٬\xf5\xa3B7H\xb09\x18;ul7\x1e{0\x18O\xcb\xf6N\x8a%\x9c\x92T\xednf+\xfe\x17\xca\x12\xe2\xf7\xd2F9@\x04J\x9c>,E\xffS)!\xa4\xd4\xff\xb2\xba\x97x\x1e\x87\xfc ,\xd2\xd9\xea\xc5㎜\xaf\xb8\xfd\xa5\x9f>.\xf4\x04\x9e\xfd\xb5خ\xf7\xb93D\xf9\x86wS{\x9d\x16\xa14\xe6\xaeL\xb1\xfe|\f\xecW\xf8\x99\xb4 ٝ߸k\xbe\xe7$4\n\xc1=\x12?L\x02R\xd8D\x94\xa9*\x0f\x03Z*N9\xfe9\xe8\xe9\x8b{\x14\x97\xf9\x02۴*}\x19V\xa2\x06`\xde>\xff\xd2\xd9\xedƇ\xee\x14?\xd3,\xb6\xcbm\x8d\xb5k\xedg\xd7J\x18\xfd\xbd\xf1\xf6\x11\x885\xdbc\xb9\xe9\x1cN(\xf8~\xb0\"\xdd\x1f\xc8\x00\x02,v\t\x93\x00?z͢\x81\x99\"˗\xa4MJ\xba\xdc\x1fc\xd5H\x04\xa0\x16T\xd5\xdbE_&\xbeO\xc0\tK\x8c\x0e\x11\xd4T\x00P\xc4\u008d\x86 y\xb5п\xb9\x97\x87\x9fu\x81\x88\xc0\f\x19\x1a\x1b\x10p\xa2\xbcئ\xd7#\x1f\xa7\xf0\xd4\xd8\xc5!\x06\xd2e\x8d*\xea\x16\xfa:\x1e\xe1.^\x97\x8b8\x87\xe0\x0f2\x82\x9b\x19@_\xf6\x99y(،\xbd*\x95\x85\xef\xd0v#c\x92\xa5\xe3a)\x00\xa8\x17\\\x81\u0ad1\xfd,ź\xf1-\r\x97\xd7\xd7\xfb\xdf\xd6\x19\x8a\xbcq?u\xbf8#A\xbea\xd1k\x83>\u007f5\xb1I\xae\xb9\x8fo9\x80e\x0f%\x15\xa2\r\xfb\xfa$zs\vW\x05\xb6\x10\x94\xb2\x93\xe2\xf9\xedg\xf2\x99\bm\xd0_\x98\xff\xf4\xc5n\x99\x1eN\xe7\xef\x94:\x9b|\xbc\xdfg\xf1\x93\xd7o\\\xa8K\xf6x\xeb&5\u007f\x05\x98E\x85\x1dxR\x00r|\b\x92N\xa9h\xbds\xfd\xf9K=\xcc2\xfa~\xbe\x13u\x1at1\x8d\x83\xf2\xbc_\x0f(Vg\x96\x90\xc9\xd5.Q\xe7W\xe2\xe5\xc6\xddtd~\xf1\xb0\x90,\x9e\xd0OW\xabV?\xa6\xa3\f~\xec\xad\xe5\xb3~\x85\x13:\xaa\u007fx\x13\xab$F\xd6\xdeV\x94V\x1c\xfb\xda\x15\x9b\xf3׆\x8d@\x90)`\xe3Q\xc5%4ބ\x02n\x06\xda\a6\xd6\xc3\x00\xcc6\x8d\x9ar\x85+\xf3*\f\xe5P\x06\x91\xd2\x10\xad\x94\xf8l\xb4\xfa\xf4\x00k\rN\x19\xbc\\\xbc!\xea\xfc\x9eG\x05\r\x1a.\xe2K\xb0\x0fC3X\xc3\xdf\n\xbe\x02\xae\v\xed\x80\x19\xb9O}\x04h+\n\xb1c\xa9o\x17g\x84\x12^\x82\xca\x13o\xa4.\x19y|\xc1\xdeW\xc1'|a\xc8n\xdc[6l\xc5b\x82\xe21\x96\xaf\xcc6O\x9f\xec@(/\xc7\xce_\x92\xa4o\xe2&\xf1\xa4~xݞ\xc3.\xd5\x02λ l\x19\xbbϱO\u009bj(\x89\x18\x8b\xb9\x9d\xac3\x81\xaf\xf3d\xd7I\x96\a\xdeFh0V\x8dZ\x10\xf4\xfc\xaa\xb0-I\x8c\xdc\xec2\x1e 4\xda뽡\xfa\xff]`\x14\xb8\x93\x8c\xb2\a\a*\xbf\xd0`{)\xec\xbfx(\xbduB\xda'\xf2\f\xdd\xf2<\xec\xe7\u07b5\xb6\x1dj\\Z\xe2y\x14A\xb7\\|\x9f\xadp\xe5y\xdc\r\xbd\xa6\xa0\x9e\x81\x81\xa8\x92\x13@\x97\x9d/\x9f#\xdc9[l\x1d\b^\x1b1\xb5w\xf6}\xdcX\xe9\xf8\x8c\xeed \xd0l\xb4r\x1dz\x11.JX\xad\xb8_h\xb1\xe8\x81\xfaߝ\x00ĺ^\x0e\xbeA\x8d\x96\x86n\xcf\xe8\x03\x9d\xe0q\x16\xc9Rn\xd7\xc3_^\x1f\xcf\xf8g\xc6^\x12\x15\x03\xacA\xa9u\xebVs\xe0\xe0\xc2\xce\xf6>~\x83\x1e1\xd7;}\xeeO\\\x95\x0eft\xcb\xed\xbc|:\x1c̝s\xffF\xcfx~|\xe9\xdc\xfa\x8e\x02\xf9\x12W\xf2\xf5\xbbW\xf2Y\x92Ȃ\x1ds\xecq\xcf\xd1\x13y73ṓ\x0e\x14\x9a\x02m\xd5k\r\xa0k\x11=\x11\xcd\xd8ܳ\xb7'#\xfe\xb4\x15scֺ\xbd?\xfc\xaa\x15T\xa1\x1c\xab΅\xa3\x1bK\x03\x8a\x88\xcb\x10K6\x92\xe0ۃ!c+a\xdaY;fs\xfc.\x8f\xdcLݷ\x14@r\x16\xfa\x0f\x85\t\xe0Ez\x8fڃ\x91\x99\x8crL\xe4\xe7\xcb\xf2\xd0>1 \x1b\xee\x88\xecSsr>j\xef_\x1fQ\xb4\x14Tk\xed\xe5_\x1f\xd1\x1e,\x8cغ\x9b\xd6\x0f\x97盂ԇ2\ru\xa2~όխ\x8e\xcb\xce\x05&\x84X{\r\xba\xfa.\xe0\x12O\xda&R\xdaB!iv\xa8yl,\x1b\x95\xa1\xbd\x85\xf6\r36j\xb2A\x98\xcd)\xb9\x19\xa5\xa0\x93f\x1c\n\xb7\xc0\xe6\xc2@\xfaޜ1d\xad\x84VV\x92\x88\xfc\x0fݍ\x0f\x06^\x9bf\x9c)Y\xa1\xb3\x1f\f\fR\x85 \xd8\n\xc0v:FzM/&\x02\xb1<\xe9g^\x8f\xcb\xe9\xad\xd3\xf7\xbcy!#\x8c{)\r\x02A\xc0\xeb\x8aM\xde\u007fĬ/\x1e\xf2ʰ\x00\xcc?\xbd?(\xf79\xa6\xe8\x9eG_\xc4\x17\x97da1\n\xf5ڳ\xbd\xb8Y5\xbb\xbfI\xb5\xd3\x17$\x9eB\xb1\xd1\xf0\x8cڮpl)\xce\x16\xe3\x15\x04#\x02D\xb1{\xb9\xb4\xdfH\x84\xb0\xd3\xe0\xac\xc2\x0e\x9e\x85.a\x84\x9b\xc8{\t\t\x88\xcc\xf8\xa8ũ\t|\xa2;f\xcb**\n\x18\x18\xaf{۳\xf1E!jzt;\xed\x19\xacN\xe4g\xca\x15\xa2ċ\xc2P\xb8\x90\x84\xe0\xdciW\xa4T\x16\x04`e.\xcdX\x01)\x90\x06\xfd\xec\xe9i\xab\x10)m=\xe8&~\xa7\\Jo\x83e \x81\x1f\xa2\x02\xea\x8b\xc5Y\x9c\x9eL,hP\xdb\xf1\xe7\x84\xefv\xf6\xed\xce\xdbA0e\xef)u\xb6\x99c\x89Cr\xfb\xfez\xfd~\xbe\xf8\x85=\xdcYd\x9eۇ\xd2}\xdbl\xa8(\u0083\f\f\x1cy\xe7t\x04\x96\xcfj:\x9d\x0f\xf8uM\x03i\xfb\xb9\n\xf0\b+\xd6\xce<\xe0\x84M\x11\xfb1\xe3\xb0쓩\x92\xf4\"\x97,\xbd;zZ\x92\x03\xde\xe1O\xec$\xabn'\xa8\xfe\xd1CE\x886\x01\xf6\xa2\xf2pt\xf8\x9a\xbd\xd7\xc0\xe2T\xa6-\x92}\xcb\x11\xed\xd8\x1c\x82\a\x8a\x92\x06\xebؘɋe\x05\xabR\xed\xf2f\rC\xcdt\xa9[\xb7\xb7\xf7\r\xf2\xa3\x9e\x14\xc6)\xbe\xd0\xdcp\x8e\xddj7\xc3\xf8\x88۰D\xed\x01z\xd3\xd9Z\xd9\xfa{v{{y\x9ee&\\L\xc0\xfd\xfa\x85v\xdb\x03>\xe1\xd2U.`\xac*\xe7\xba\x14\xfaB\xd0\x1f\xbd\x82\"\xf1\x0fD\xfc\xe4\x8dV~\x89\x1cQZb\x89#\x98\xab\xb8\xa7\xe9\x8c`\x01\xabb0\xf7O\xf2h\xb1\xdf9\roG\x8c\xc1x\xfd\x97I\xf0\x0f\xc7\x13\x16\xf2\xc0\xdc\xe6\xb4=`\xad\x82g\xacc\au'\x9f\xdd\x1b\xd11\x90V\xe3\\\xb0\xcfi\x85\x98\"\xacU\x130\nQ\xc2x\xbb+u\r\x18t\x9a\xaf\x03\x82\xea\x06\xa9\xe9*/\x95\x93\x0fqj\x80y\xd6\x1a\x12n\xc4\x12˙\xae)'b_d\x8a4\xb61\xb6xzm\xf6\xb6=&f\xab𨇧\f\x9a_\xea\xd8\xfcw\xee\x13\x00_\x02:루\uf596ڎ]j-Ѹ\x843\x10\x95\x1f\xbe\xf4{\xa0\xbf\xda\x17\aa\x836/\xe6\x14*\u007fB\x11K\u007fAB\x1c\xecxj\xc8\xe5\\î\xc4Ɇ$\xea\x1a\x0e\xe0\x1bi\xe6z\xd9\x01c\x83IXsOe\xbc\x9e\xf9,\x9e\x1d\xe0\x8bNq\x1f:\xa6B9\xbeݭ\xc9l9\b\xee\x1b\x98k\xa7\xbc\xa5\xb1{\x17\xb2<\xf3\t\x81\fs_\xd27\xeb\x8b\xecv\xed;IM1R\xcb\xe5a\x8f\x9c\rTa\x1f>\x87L'\xcdL\xb72\x8f\xc4\xe0\xa8\xd0Ks\xb3\x9dlB\x9e\xcct'\x92\xbd\xb3\x9aj\x1bs\xa7O\x96\xd4+\xf26%q\xef\xf0s\xad\x86H\x01\xc24\xefqe\x88\xb4X\xd8?\x1e\x91J\xe2\xd815qO\x95\x16\x15\xe6k\xd3\\'\xceَ\x85\xac\xa2Tm\x80\xa5\xaf\x8df.\x9eC\xa7C\x94 \xdf\xee\xfa\x97?\xe7\xffD\x86\x82tcQ\x8e\xde\xf2\x89惔\xdc\x1b\xd4\xfb\xf1\xa3\xf0\xed\xa4\xb6\xa3\xff/g\x14\xb1\x88l\xbd\x14\x18+B\u0590\xee\xe4\x0eq\xf5\x0f\xd1\x1b\xfb\xaf\xa7\xbb\x8f\x15⡦\xfc\xdfc\xfb\x9eW\xd2p\xfbnS\xed\xff\xe9\xff\xb9\xed\x04S\xc3ׄ\xf1\xb6\x1d\xb6\x94l\x9ftKA\x81\xa0\x98\xb4\xff\xe5u\xe4\xce5\n\x99u\x17,\x1eI݅z\\\x94B\\\xf9Yi\xae\xfc\xb1\xb6EҚe\xd7\xeas\x19/nO\xe81\xa7i\x94\x82\xf2\xa2\xa0,I\xec(\x85õ\"ڇy\x14N\v\u007f\x90\x88\xd8\x00\xd9j.m\xa8*\xe1q\xa5f\x9fyQ|\x10\x99|UӸrKK4\x04\xc9\x11\x1fKN\x01Ҙ\xe1\xce 6A\x03X\xc1\xa8h\xfe\xa0\xc6\xdbF\xacM\x9c\x89\x9fD鈰I\x94\xaa\x13\xf5\xcc\xef6\x97\xfd\xa8\xa7\xc9\xcb>wa\xf9\xee\x8b\x1f\"\x16/\xecLFg>\x11\xedBG\xda\x1c\xc1TC\xdf+z\xd7a$E\x05_\xeb\xca\xf9n\xac>(\x88\v竷\x0e\xcefr\xf7>\x04q\xb8&\xee\xd1\xdc\xe1\x9c\xea\x9d\xfcMiۑ\xfc\xff\x9a\xa4|\xaa\xfe\xc1\x92\xd4r\x12\x02\xb1\x01*\xc4\xec_\xa2p\xae\x91y\xa0P\x86\x99\xcb\xd4b\xae/\x05/X\x91lY@\xbd\xcf \xcb\xc0\xfa\xebF\xbe\xd2M\xfe\xd4%h\xb6\vnhf\xb4X\xb2\xec\xf8\xc4s\xf3\xb3Y\xe8f\x84\x8ch\x9d=kI\x95\x00QX\xabѥ\xf5\x89\r\xc9\xd4o\x9a\x9e(\xdb^B\xe8\xcd\xe3j\x9e\xe1g\a\xe7V\xcfN\xf3\xa0xD([%\xf8qw\xfd\xa4\xf7\xf9\xc9\xecY I~(U\xe2\ued86\xa9\xc5\x1eK\x01\xe8v\xffY\x88\a\xba\xea\xb7[\x88X\xac\x1c{\xacW\xde9\xfd\xad\xfe3\xba\x91ء̖&\x14\x10<\xdabfr\xbb\x9cq\xb25\x91\a\x8c@\xf5\x8d*B\xf8\x92M\x80\x14\xc1_`\tsU\x88#\x8c\x125\xe8\x934\x17\xac$\xf2| \x8b\xb6\x97E\x01\xd0d\xe9}\xdc\xeb*\xe5>=\xdb\xc6yPL9\xe2\x93Es1N\xc3\r\x17\xa5\n\xa4\xad\x95\xfei\xcfxf\xf21\xdfE\xcflw-\xc73\xba\xcb\xfev\uf411_\x19Ϸ\xeb`\x95q\x85\xfbx\xd8;\xb9\x99\xdd\xef\xe5%\x1e\x19\xd9nL1\xec\x8b\xf5q\xe2\x1au\x83\xee\xee\x0e5\xcd\xf9\xd9ϴ\xc2=\x91Vb\xf0RՈF\x86\xdc\xdcx\xc6 \x9e\xdc\xf5a\x9e0\xa4\xf5j\xccҖٳC]kx̲\x87\x8cё\x85\xf1\xd3\xe3!K\xe2nZ\xfe8\xf2\xa8}d\xeb\xf7\xaf\x91\xe1o\x8a\xe8\x1b\xf9+\xdcP\x8c\x90g\xc3N\xf6\xec\xc84\xd7\x1dk\xd1DZ\x86\xc4\xe5κWi_\x93\u007fD\b\xe7\xf4\xfe\x8eGQ^~\x8f\x14\xa6\xe1\xf6\xc0L\x97t\x82\xaa\xadj*Ϟ\xaaޑ}uc\x8f\x90\xd6{.\x05\xb4PΠä\xa6\xa1Ӷ0\x04\xaa\v\xda]\x8b\x17\\\x98\xefb\x12\x9f\xf4\x9e\xcfxP\xa2\xf5i\xdc\xeb|X}\xb1\xb7\xaf\xec\u007f\xd2x\x85\xcf7\\\xe6d\xc9Sw\rB\xd1uI\xd1)u\xc9%r\xe3\xc3]5^3\xf0\x1cъ\xa2\x1f\f\x1dC\xb3\x92\x84\xc5q\xd0\xf4\xe9P\x9bf\xa3?P\x06\xa0\x1ch\xdeT\xc2*\x1d\xdf\xfa\xf8Ѳf\xb8D\xb9م^ \x9a\xbc\x14!p(h\xe0\x15\xf4%\x18EV\xb8\r\xccr\x04\xf0|AX h\x9e\x16\xb4gq\x83\x9bn\x9e>K\x98>UjՄ@ \x12\x1d\x8b(P\xa7=\xe2C\xd4\xca,\xd8\xdf\bt\xfe\fo$M\xdfJ\x1cb\x83\x94\xde.'\x1c<\xe3\xa0\xf8\xb0\xf4\x9dK\xeb\x95\v\xfb\xd2\xc3P\xc0\xa7\xccOlb>\x9d\x1a\x0etڎ\x06\xe9\x98&d\xa3\xe5o\\?\\\x18R\xeci\xfe\xadL\x10Y\xf5M!\x91#\x12#d_\xb0\x12\xee\xb2\xc5\\j\x9f9*)\x13\xd8x\x16j\x9c\xa9>\a\x06\xd7O5y4b\x19(!0\xb8Қ\xe2\x97\x14)\xb2\xe9\xff\x9dª\u17fa\xeb\xa1\xedn\x8f\x15\xe7\x8eš\xa4X3!\xa8RO4#]\xd3H0\x0e=\xb6\x17.\x1aym\xb1p\xd0\x06\xb8\xbe\xbds\xa6\xb4Y>\xb7)\x9eHW\x8e\xbd3\f\xbe\xa6F\x15\xa6qvw¤\xcd\x10\x16\x1e\xc0I-4\x9e\x1e߾\x90\xa9\x1e\xe8\xf6Uq\xc6u\x1d\x9ag\xa0:?\x98\x85\xfbX\b\x9e-\x8f\xf9\u007fQ/\x8b\v\xe2\x9ai{\x96Zn\x17hB\x19\xdd!8 \u070f\xbd\x13\xab\xaap\x9eS\ac\xa3^\x84n\xe5\xb7\xdc\u007f\xdb\xdf\"\a<\xb5\x1a?\xe5\xaaM\xf5\x97\xafW\xda:((\xee0\xf3;\xa8\x19\xa1\"4\xae4\x83}\x82\xb4U\x86\xa1Vm/*30\xf9Ϧٛkn^ңC\xf7\xde|p\xf4\xd1\x1b\vc5l\x96\xac\x1a\xa0\xcb\xcbI\x8c\x04o4\xf6\x84\xdfd7c\xba\xa3\xdb|@[!\t\x84\xcbX\xb3ק\x1a!M\xff\xc4\xf9\xe1\xd93\xf3\xaa\xab\xd4(,8be-i\xee\bS\xbb\x82\xdd\xe4C`\x80=}\x9e\xfb\xc1}\xc4\x03\x97T\x15TMX$\x9bG+\xab\xf1\x93]\xfd\xf2\xfc~\xa0V(Ǩ=\xe7\xe5>T|\xee\xf7\\\xf5\xb4\xdf8\xb6\xaf\xb62X\xbe\xf3a\xe5\xd1\xfa\x11M\x9f_K\xe7\xf7\xbbx\x17\xa5\xf4\xee8\xbe\xfd\xe0\r[.\"\x14\x8a9\x89U1u\xb7!\xdd\xf9h\x04\xe1I\xf61^Z1\xe4a5\xab\xa4\xaf\xd3\\\x9a\t\xb9q\xa1\xfa\xd5ٲv\xa2\xaa9e>\xc0\x1c\n\xef\xf5\xb3e\x15F\x05\x1a\xc5\x1e\x1e\xa9z\x97\x8b\x92\xc3,FQ@\x84l\xc2ڛ\x8d\xa4\xe8\xa7]?:\xfa\xb1\x97\xe3\x817Þ[\x95\xfdA\x9cԡ\xb2\u086f\x0f\aq\xe9=t\xfc\xa3\x8d\xb5\xce==\xaf\x91=\xc2/\xf5\x14ڀ\x89=\f\x1d\xdfT\xe0\x1e\xd3d@7\xa1\xd4\xf6萤Ͻqo\x1aks\xb5\x99\xe6\x916\xce\x02\xedX\x95\xb9\x93H\x86bB\x8aیx\x96Slg\xe3\xac\x00c^\x02\xbd\x19ٷ\xba=#ii\x00\x01B\xac_l\x1eq|\x98\xfb\xac\x03\xf8\xf3lei\xaeм\x98g$\x91\xacq\x16a\x04X\x15\xcc\xe0u\xb4\x86!x\x91\xa01\xccU\x99\x85\x8ddH\xba\x13eY*\a\x91J\x18\xe4\x871ud\x15iB#Yo-\xc8ԫ\xc1\x12&\x10\v\xa8\b\xe2\x05/-n\xc6\xdf\x11\xab̭a\x98\xb8\x85\x1bR\x90\x19\xc1i>\xb2VR\xc2\xd2F\rJej\xa1\x06\x8b\x1ba\xea=\x86t\xe6\x10A\x11\xccoE53\x98\x15\xa8\x90\xb1\xb2\x89\x9a\xc6\xc0\xa5\xd6ZE\x80\xd4\xd0e\xe6@D\x14C\x9ddV0)\x16\xb5\x8f\x11ͼ([\x14¨v!\n\x95N\xab\xd9A\xa5\xeat\xce\x06\xc2\xee:\x97\xf7\x80\xc6\xda\x06݀(\x96\xf4%\x85\x99.\xf8a\xa8_t=\xcaIvg=|\x9d\xe4z\xaac\xb6\xb7|\xbf\x17\xf0\xb7Zs\xd3\xf6uv\n\xf3\xd6\x18\xafA\xd8\xf63\xf1\x8b2x\xd6$\xee\xba\x06\x9d\xa7\xd0\xe0V\x00r\x93\xe6JV\xf8\xf8\xfc\xb0o\x06\xdc\xc6Q\xbe=@\x04\xc8\xd9\xd1\xef\xe7\xf7O\xfe\xd8\xef\x1f\a&CT\x94\xe4\x8d.\\\xc70\xa6\xba\xebp\xd9\xe8\x99\x10 \xfbTisO\xe5\x82Iȏ\xdc]\xe0\x8c ]\xfd\xf4\xc2\xd4FYRij\x17~\xdex\x10\xba%\xf2\x86έڍ\x93^\xddQ\xbb\xafm\x0f\x06\x9d\xe5I7\x9c\x82\xea%\by\xa6\n\xa76\xbbRa\xf89\x19f\x1e\x8f\x1fo\xd1V\xf4'\a\x96\x16r\x0fт\x8c\xbe_2 \xeb{Ks\x16\n\x83C\xfe[\x8e\xa6A\xc8K\x1c\xe1\x15BF\x1c\xb8$\x83\xf1\xb5k\x02|r\xa3\a\xb8\x96\x06\xb1ݑ\xd5V\xf7\x8b{tk\xb8ڸ+\xd6A\x84q\x89\xc1\xca*g\xdeY>j\x9ek\x0f\xa0\x89\b\xe1\aw%\xf7\xfbY\xfek\xde\xe1\xf4\xb1Pזp\xf5\xe9[_\x10\x1b/\xc0\xa9\xff\xe8\xecHLdӉ\xbd\xca\x1bw\xd8ݟ\xc0\xec\xca\xe7C\x9e\xfd\x94[<:\xe4ͫK\xc7\x06\xbf\x10^\xbe\x18\xaf\x1c\xcc\a<\u007fr\xbf\U000c0fc9\x01<\xe6xzp\xea\xf6'\xf3\xee\xf3\xd2\xe2p\u007f\x9c\xc0\xe6\xca?\x18\x89\x8doBt:ʴO\xc2i\x80\x89\xf8e@\x9d\xa2CZ\xea\x10\x92\xe8\xe3d\xeehn\x11\n\xe7\x9a+\xdd\x12\xef\v:X\xef6q\xf1\x93\xf1\xf5!\x11Xx\xe7\nս\x96\xd2\x12w\xdbZ\x832\x92\xe2D\x8dw\xed\x9al\xb2\x10\x0e\xba~\b\xb1\xad\xbd\xb0i@{\xb5$k\xf5ث\x1e\xa4\xe5\x1d2͜\xa4\x16lB\xf1\x94\x15N۪?'}\\\xe7;/\xbc3\xda\xdb\xe8jiE\x80\xb6 \xe61\xa9\xa4{Dw\xb9\xde4\xd8%\x90\xf80}$C\xfeC96)D͔iY|+\xa4\x89r\xfd\x15\vC\x12&\x16\xa7\xcd!\xc0\xb1\xca\xed\xb8\xf7yk\xe9\x95cr\x89^\x1b\vc29\xd1\xf1\xf0\xa9\x93N \xea\x1f\xbd\x87\xb5A5\xc0;ӊ\x0e\xf7`\x8a\x11Ϝ\x18\xae\x83\n\x108ʏ1\xa4\xaej\x8a\x05\r\x16\xf25\x85\x98\xf1\x85\xb4:\xd2\x11]\x95Xy\u007fa\xca\x03\xc2\xd4~\x91\xcc\x11\xf4e\t\xc1\x1f\xa4\x80\r0\x98K\f3\x15\xf2$\x92s\x84\xf2\t\x9303\xa9\x9cD\xc0\xa4`I`o1\t\xa1c\xc1\xbd\x05u\xa8\\\xa8k\xe1\x01\x19\x80\xc2@\x03;\xe6^q\x17d@ju0\x85\x1fľ0*q&\x98c⽲q媵\xbdS\x95\x12\xa4Q\x95\xaf\xe9\xbcs\xe5L\xb5\x02K'p-\x91\x1e\xc0\xc0*\r'Oeu\xa4ܙ\xae\xd4:]\x98f\xb0s&\xf4\xd6ڨt\xe68=-\fx\xfcpw\xbaz|\\\xea\xcc0_\t\xe9ĄM\xd2i e\xb5\xbb\x98X\xfcov61S\x96\x82\xa4\xd7I\xa6H\x16\x00\t5sf<2+\xe9\xaa1{\x12Ye\xd2\xcc\xe5\x00\xac\xb4.\x03\xb2\x9d\xd3x\x91\x1cCQ\x93u\n@\x15\x8d8,+\xe6\x893]{#K\xb5\x88\xf1X#\xc81n\"\xb6ŴxB\xe3\xe2*\xeaq3\xdd\xcas\"\\k\u038dO{\xf1\x17L/\xbe\x01\xfa\x82\x1c;\xbd\xee@\x1d\xd6\xf9Ak\xdah\xd9\xfcn\aaے؉{\x13\t\x1d\x02K\xb7\xdb!o:\x06\xcf\xdf4\x06c\x92K\xdc\xfa\x82L<\x9e\x17\xfa9\x89\xbcG[\x89=\x19w\x8be\xdd\\\xeaM>^\x99\xc1\x12\xb0\xeb\v\xf1\xb0=y\xd8F\xaf\xc8|\x0f\xcd\xc0\xef\xa7\x03\xc8MP'\xef\xbeD\x04M\x02\x82\xa2\xd4\x00\xb7I\xb0\x05x\xf4\xda\xc3\xe6\xf6\x81\xb0w \xf8\xfe\xde#\x8e\x00\x1b \xefAi\xa0(\xf4\ue84a\xb7\x00\\\x1e\xed\xc1Z\xc0m%M\xe6\xc4\x06籥=_\xc8\x04Ǿ\x02:\xf0>fb\xd0n\x98r@\xa4rc\xa8Qa\xa5\x8eR\xb0\xa8l\x9fBG*\x88\xe6\x15\x8b\t\xa8P\xc3@@RM\xa9⏛\x99\xc2\xe2\xc6D\xf3ϰ\xb9\x90\xa4\xd5(\x93;\x9d\xfa\xf8\xc2x{Fj\xffX\xd9\xef\xa5Kګ\x95\xb2\x80\x06\xc26A\xf1\x915\bf\x83\xdbJJCr\x86Ȇ\x935\xbfO\xbe\xa7\xa2\xc4x\xba\xac\xa5o-e\x93q\x96;\xaa'DFH;\x16\xd9jY1MBa\x10\x80S\x01\xaa\x89\x8cU\x03\xa9\xa90\u007f\x1d`\x1aE\x81\x93\xed|\x93\x17]t\xca\xdc\vH\xf3\x84\x98U02\xd5\xd9\xd0\xfc\x9d\xe6z\x91\xceۅ\xc9b\x827\x88\x11\x82\xa2O2\xdb5\xb7\xe8\x014\x99/\xf3\xfa\x91\x98$iK#\xc90Ҋ\xdf\xcdg\x11\x17\xb0\xf8&-P\x90(\xe5Ҽ\x00\xf0I\x06#D#\x9fr\xf8\x9aE\x85r}\x04)\x8e\xd6\xd86C\xaa$P}\x88\x84\x93\fT\xd1a\xc0\xf9),\t\xed\x16\x9erO\xf3GQX\xf8\xc3\xc4$\xa6\x1c}RU\xcf\f\x82V\xbc*\x0f(z\xbc\xc4\xf5\x8b\x98\u007fl\x982\xdaU\x8a]\x89\xc5c\a7~\x81Q\xdb_\x97l70\\ۊ\xee\x14i\xceo\x1b\x184\xb4\x88\xd2$B\x10\xe1\xdas%\x89\x119\xe7ec\x1f\xa0h+\xe43J\xa0\xab\xe8?%\xb8GX`\xb9_\xa2\xccb\xcb\xcd\vR\v\tɛJ\xea\xec&\xb4>\xaa\xe3*\xcbC\x05\x89\x01\x88\xb0/\x9a\xc7\xc9Iá\x97&\xf3\x98\b\xa14Ο\xbd(\v\x04\x9b\x13\xef\x14\x84ހQ\x1b\xa1ۉ\xfc\xf8l\xd6\xe9K_\xa1\xfe\x16\x10\xe3\xc6\xfa\x84H\xe6\xf8!\x18\xa7\x80\b\xc4_\xcbw.\xa6\xd3\xeb-\x86/4w;/\xd6\xeeȮ\x9b\xad\xa4?GJfFw\xc0|\x02\x81c\xcd\x1arF\x90\xe4\xf6[D\b3g\xaa\x16g\xfa\xee9\xb0\x12\xf6&\xbc\xb6[\bD\t\xa5NZ+\x05\\2\xaa\xc7{\xd6Y\x94\x85(C0\xc0_\x96\xb1\xb5\x98\x84\xeb\xf1\xecr\xaa*+G\x16\xae\x1fv\x01ի\xc0\x98}\x9e\xae\xdb\xf8\xe9\xc8\x01ve\xebJsN\x98\xa2x\bK!\xad\xc4WY\x02ʦ\xc00d\xe03\xe1\xaf\xf2\x17~\xee\xa8\"\xf5\x06\br:\x05\xb2\r\a\xab-QiһGjv\x9d\xb9Rr\x89M*\xb7s\xad\xd7\xde\xdeg\\\xf9\x9a\xdd-H\v\xa4=\xd1\xdd\u07b8=H\x0f\xc3X\xcb2\x145\x82\xc2|\x81\xba\x18\xaf\x8eY\xab$*U\xb8\x03\x12\v\x93\x99\xac;\f\x06A\xd0P(\xb3\xd6\xd04,B\x11Y\xac\x18\xaf\f\x01Wj\xc8mǰ5\xb1=K\xd9:S\xcaa\xf7\x93đ\xb0\xc1\x8a\xa9\xbcl\x06d\x94\xc4e\x01\x90\x95\x05\x12d\x93\xc8\"E\x8b\x97\u007f\xd3\x13Jf\xc1\xa0'\"\xb5\x83H\x14\xbc`\x80\x971\x99=\xac?s\xff\xaa\xe1$\x83\x92\x80؍ox\x99Pb\xff\b9\xdc\xd1)\xd7\xf0+\n\xcdf\xda\xe6X#\xf1\xa5F(\x14V\xb4\xd61o\x92\xa9\x84\x1bU\xd2x[\xa4\x80B\x05\xe8\xceϔ\xab\xa2J6\x99\xea\xd3\x00N\x01\xb46꺎`\x14\xb3\x8d.\xce,\x8c\x93\xc9\x15\x9d\x14W\x10\xbcz\x1c@\n\x15\xc1^Mĩu\xba5\x92B(ś \x97\xdcd\xae\xe2g\x00x\xd9j`\x98\x94\x10+e;\xf4\xde`\xedX\x90!\xcd\xd6\x1e\xdd\u0603jN\x9aB\x1c6\xb7B\x94h\xbcco\xee=\x92G^q\xa3\xe4\xbb\x12P\xe6\xdf\a\xc2vG\x02\x87\x98{g\x15k'\xc8q@\u007f\xe4\xa6`\xd9Hٳ\xf7\x10\x9fD\x8ba\xed\x94eb\xa5\xb5\xa1\xe5gx}\xcfg\x1f\fh\xef\xec\xf6\x89>\xa9\x8f\xd7\xea]LV\xc0\xe4Wyg\xb6r`8!{P(\xfa\xf3\x84\x89_x\xc7\x1b\xc7\xfeU\x92_\n\xb2y\xa0~\xf4\xd8\xc3Ó\xe9\x13\x82QcU\xcf\xe2L\x14\xba1`\xfd\xa9\x13\u007f\xd4Fk.*\x88F;\xd1tg\x83\x85S\xf7R2g\x1e\xc1\x87\x06\t\xfe\xe4Q\xbe\xfb\xfb\xffb!\xa1\xe8\x9bwd\xdd.f\"\xb6\x0eQ\u007f\x1a&\xd9\xc6m\u007f\xbe\xf7?.\xeaL\xeb\x9d_L\x83\xbe\x94\x16Z\xb7;\xbe\xd3\xeb\xf7T\xfb\xb5\x18\x1at\xe0\a\xea\xf3Y\xd9\voG0#$\x122\x94P@8\xcc\x1d\x19\xf7\xf0̩S\x18\x15\x11\x05~d\x85\xe1VB\v4B{\xa2E\x12d\xc9/+\x1aP\t\x93\xafZ\x88\xef|\xd1\xda\xd4\x148{\x16\x98V\xb7]\x04`\xa6\n\x94\x05v\xf2\xcc\xdfxz\xcf\x1a\xd3\xc6\xe36\r\xfeS\x03\xef\xfa\xd0\xf3\xa8S\xb3Z\xff\xf9\xec\x82!\xa0\xd2\xd3/\xeb\x91EP94\x1cW\xa6\x82h:\x8c%\xb2:\xd3|X[\u007f\xc3&\xf4\xae\x93\x1aʎ\xf0\xad\u05fc\xf3Qh\xfb/\x01\\\t\xd6G\xedj9\xa9\xaa\xf0z=Ƿ+\xa1\xb9\f\xae\x15\x11Cw\xf2\x9f\x11\xbd<\x8fdIߗ\xbb\x13f˪\xf2R\xf0\r\xc7}h\xe7\x8a\xe0F\xe96&\xc4s\xb7\xac3xg\xb0H\xeb^i\xdcӬ_%\x99\x13/E\x17\xe4\xe9#\xa2E5)L\x82P5\xa8\x89\xf5b_䈹a\xd88\x1d\xa0\x90\xac\xaa\xff\vن!4\x9dnp~T\xee\xc1\x87\xdf~!\u007f\x81p\x18E\xc3\xf3,ͥ\xf5]\x85{\xeb\x040\x9fub\x02Ӓ\xfd\n\xb2(\xb3\xa7\x05}!Y灅\xe74\xb4&\xcdBJo\x1aN\x9b.\xd8\u007f\xb9\x92\xe6\xeap\xc8\x1c.~\xafW\x14\xd9\xfd\xee\x9aX\x9a\xdbJ6\u007f/'\xb7\xe2\x91Ơoi0\xe39[tl\xbb\x8e\xed\x9f1\x93\r#\xb2\x00+&s\x95G\xc0=9w\x9a\xdb^w\x8cD=v\xbf\x99w欒\xe0cIG-}\xe4\xbdv\xe8-\x96\xb3\xebW\xed\xf7\xac-\x99\xf4N\xd9(:G)D\x93\x0fȐ\x05\x8dM\x9e7\xcar\xb4\x1d\xfe\xa8=a\x88\xe4\xbd\xd4\x1f5\xb4\xb7]\xa4\x1bя\x99?\b'\x859\xf1he\x19k\xfe\x8f\x8c\xdbqe\xbalr=\xf8\xe9`iS%\f\xdf.\xbe\xe40\xe2U\xab\xb6yW\x15\xc8\xf1\xd0#\x0e\x90\xe6ሹ\xb71\x89\xc9\x152\xd6U\xe8\xbb\xe0\x05\xa1y\x16*\xe2\v \xe8\x1f[\x9d\xaf\xee\xeaJ\x16\xdek\xeb]V\xd41\x83\xd6\xcc0|\xaf\xa2\tG\xf1T\xd2\xf3D4F\xe5\xe3\x03\x05\x0f;\b\xc3R\xd6J\x98\x0eh}\xbf\xb75\xb3\x90\x13\xa8X\xf5Lh\t\x13X3\xe1Yx4[l\\\xe7EY\x92ޓAr\xbb\xb3\x10W\xa8]0\xc1HrtP}\x12\xa2d\xa1=\xa6l!\xed\xd2\xd1\xf2K\xabB\xccn_1\x17^\r\xf4\xec,\xf70\xdf\\\x18\x16;aE(s\xc9\xea:\xaa\xf9#\x16yޑ\xdan\xdbz\xb8\x89\xb4\xaa\x12\xf6\xed\x83o\xb5RU5GR\xbb\xcb\xf3\x11\xcazq\xd0\x15\xbf~\xd9*\x8e\x0f\xbb\xecs\bﺪ:\xfa\a*\xc4n\xb2{\xf3\xff\vW\xf36\n\xe7sϺ\xb304\xf1(\xfc\xbb\x8d\xf9'\x8c\xa4\u009f\x93\bv\x0e3f#\x9e8n\xfd\xe5\x9d?\x1f\xb3)Kaj\x9c\x18\x1e\x91\x89Z\x03\x82u\xc8\xddM\xba\u007fYU\xb2\xae]Q](\xad\xcd\xc4kD\xd6\xf0\xaa\xcd\xc5DB<\x1d\x0f\x13(\xbdfx\x1b\xee\\w\xd2\xd9Zg-\xb3\x1a\xcb\x1b\x95|v] \xb9\xa9\xc8,.\x1a-\xefS\r\x86^\xe3\x8a\xd9T\x03vt\xecأ\x9a\xdfE\v\x19\xe9Ss\xfe6l;\af)\xf49*TF\xb2e\x17\x97:?\x01l\xe8\xde_\xdbT\xfb\xc6\xc1^\xe7\xbd\xd3\xfe#\x86\xfc\xdc$n\xbe\xbc\xa2K\xc8\xe8\xad,\f\x92\xc7\xce\xf1\f\"`\xaa\x8c\x8a\x85\x11\xd6d\xfb*\xb0\x9c\xc7\x1cZ%\\1\xb34\x02\xf3\xc5\xf1\xa0_\xcd\v\x1f|\xb9\xc2\xc2\x1f\f\x8d\x81\x91\xfd\x8cO\xbf,\x83\xf1\xcf\xfd?{\x1b\xcc\xffJ\x89.Fyw\x90L\xef\xf0\xb8\x82\xda\xee#\xef\xa4\x03\xbd?\xef\xdf\xff \x83R!\x82\xd8ļ@}\xa6fv0l%9\xc9%^\xff\x96-\xf7\x1f\x9eh\xc6!QQ&\xc4o\xb0\xa3s\x03o\xe6\x83\"1\xf3\x12\x8bMbd\x8br\x02&&\tS\t\x97\x8c~\xe6\x837\xd99\xa0\x04\x06\xef8\xcay\x88\xb9\r\x97\xb4u\xaa\xe7\xa8f\xb6\x1e\xe4\x05\xed\x9b7\xe9`\x1d6%\xa8\xcb\xf5e\x88g\xad\xab[ \xb8\xe88`V\xe0\x9c+\x99\xe6H\x06-\x1dy%\x1c\xa1\xbbu\xa6\x9c\x81\xe8\xf2\xf21\x15\x18\xae\x96\"\x16\x18'\x9e x\xd3I5\xc3p\xf1\xa1M\x11\xffT\xecǬcC-4\x97\x86\x0fߛ\x9c\xcc\x15\xbdhj\xfa\x02\t\x91l\xf9\x1b\xfa\xf41\xe0\xc5\x0f\xcb{c\xeeh\xcf\x03&\x15TXg\xc1\xb0]\xd4з\xd3\xc7\xfc\xb1j\xe8[\xba\xd79p\xc8v\xf6i\xf5\x17\x81\xda\\\xdcf]\xf6E:\xbc\x99\xc9-\xfa\x87v\xf2\xccPܕ\x0e\f\xee\xe2\xc3\xfa#\x8f\x16\x9c,\xab\xc6\xf1\u007f';\x88\xd5\x1e\xe0\xaa\xee\\(\x87N\x84\xc8\xe1lG\x05$<-m\xfd\xb8VDI\x93\xe5\x90d]\x1ca\xe3\x87n\xe97<\x9f\xc6 \xd7T+@nD\xca\xfa\xc1\x90\x18z\x157\x8c\xa10\x11_\x06\xb0\xb0ܽ\xa0\xc7L\x90G5\x9f\xe4\xeb\x15Jg\xf9\xfbyV\xbf\"\xb1\xbd@\x80b\xcf#\xa6->\x81%Ӗg\\\x92J\x8aOG8\x12\t\xae}\x98Ŝ\xc2J\x1c\v\x8c\xb9v\xbdgkH\xf0\tF1zH\x1aW]\xa7\x8d\xb7\x1b\x96n\xa8\xc7\tȄ\x8d\x81\xfb\x1b\xcd|\xabﵺ\ae\xf5N\xdcZ7\xe2\xa7a\xfb\xd8\b\"\xb3\xb2=rhq\xa2?\xee\xa7z\xe1+x\xe3\x83d\r1\xf8\x8d\xa8\xaf\xc6/n\x98\xacW\xab=n?|\xf6\xa6\x94=|\xfc\x84\xde|\xd7\x11\x9f\xf1\x05P\xbd\xc0\x8d\xb9\xe3R`eU\xfc\xe4\x06\x96\xab\xfa\x8cr\x99t\u007f?\xfbE\xa2Z5E0\xa7\xb4\xc9\xde\u007f[\xc3U\xb8X\xeb\x85*D\x1f\xabPX\xa1`\ueb8a9u\xfe\xaa;Y\x9a\xfa`\xa42\xecV\xb2\xc5\xe39+{\xd5\x1a6\f\vL]3F\xacI\xb8\xc8\x19?4靘\x89\x8ek\xaf\xd9SG\xaf\x9e\xf8\xabc\x06\x94\xf7n\x19\xbc\xae`\xab\a\x9a\xdf\x03~\x180\x1e\x1d\x03\x8e\xff\xf7\x94)?\xb5L\xfa-M\xb8OƽÛ?A\xbc\xad\x98\xad@S\xfbHm\xe14\xbd\x1c\xa4/\xe1:H\xa2\xb0ג\xe9\xbc\xf8Lk\xa6\xceKj=9Pge\xd2:\xe6\xee\"\xe9=\xe0\x8f\x0f\tK\a\xab\xf8ư\xe8@\x9b\x0f\xd9*3]\xcfo\xa6j3U,\xedm\xf7_\xd2\xe0\xd8\xc8\xd4<\xb7蠇\xd1\xd0\x1c\x9cspR\xb7r\xef\xc4Q>\x0e\xec$\xb2fz\xa8\xb5\x94\x82\xc0\xe9\x82\n\xb2\x1a\xab\xe6\xc5\xfeD\xffE\xb8^\u008d\x1a\x850\xac\xca\xe7\xf6p\xd2m{\x04w\xca\xf4\xb8\x01t\xbc\xd2\xecyI|\x97\x90\xeb*~Q\xd3\xe0\\\v\x1fT\x18G\xae7\xbc\x8c\x9c\xfb\x00\f\x9e\x80\xd4tS\x12\xe7\x13\x93\xfc\xbe\u009a\xa2\xff\xef\xcd\xe6\x131\xea?\xfeBj\x1a\xe2KPV\xcch\xa9\xb1M\xbd,\"\xb6\t)\xb5tj\xf3~FS\v\x0e\xfb\xb4\x95\xfe)\fegQ\xe8h[\x11`\xd2\xc2\u008f\xe8{\x16\xbas4\xb6\xfd\xac\xf9\x0eT\xa56\xa1$i\x12\xa8\x06\x96bt\xa2\xaa\x12\xe7x\xbe%(u\xcd:\xf61\xe4\x86g\xb5~<*\xdb3\xc0\xeaX\xd9\xc7xX\xd6B\x84\x04T\x12\xc0\x8e47Ѥ~\xbf\x1aDήrA\x0e\xe1\xf6\"\"\xb1^\xe8̪:o\u0530\xf5ց\xe7\nx\xf9\x91\xe6NjUi(IC\x88\x1d\x13\x1d\xa9\x9a\t\xa35\xdc\xfc\xd6^p\xca\xd6n\xc7\by\x84\x8f{\xf6\xed1\xe2q\xd3\xfbJ\xcd:׳\xe2-\xf7:\xee\x9e\xeb\xae\\\x94Fyt\xb2DI\xa9\x99\u007f\xe2M\xa9\x13\x9an\x89|\xda{\xf3Kq\xa3\xff\xb6\x19\xf2\x9f\"\xf4HPϣMk7\x91\x04\x05t\x98\xb1\xe2\x11\x12\n\xd69\u009a\x1eև\xe7^\x81\by?\x04ԟ\x01\x02\xb9LJ\x0f\x9c\a\xe3ѓ\x14;\xb7j\xe1\x8a9\x8d\xfc\x97\\\x13_\xbd\x84x\x1c\x98\x1dj`\xca\xe7\xf9\xb1\x8a\x18\xb0:\xcd\xc7\v\xe1')\x1ai\xc1\x88\xf8\xeerc|\x1c^;\x9a\xeeoK\xeb\xe4\xddAWă[\xe4g\xe6j\xec\xfdQ@\x14\xad\x9e\xb4]\x1dt\x87lW\xa6\x93d,\x99i)\x16I*\x89a\xe8\b\xde-\xa5\xe1\xc9\xed\x82ۂ\x84A\xe9\xa2#qis\x99\xed\x16\xc6\xc7s\xac\xb9<\xb7\xdb\xdd\xeep\xbb\x9aK,>\x19:/ߟg\xc6\xe0\x81*\U0005fa06\xbb\x86\x05\"\xcdg\xb5.W\x9f\x8d3.\xdc\r\xb0\x8e\x96\x15\x8e\xa0\xc2%X\x18\x89\x12\x9d\x11h\x16\x81\xa59B3\xe7\xef\x93L\xdc=\x83\xfar\xa1\xca\x11Wގ\x1d\xf5\x99\xb6~\xac\xf5B\xa3t\xa4\x10g\xd8\xceęw\xcf<>\x84\x9c.\v\xe3\xe0\xb1\xe6CG\x9ah\xdfH\xbbp`t\xe4Է<6\xa6r\uf72dw\xfd͕\x1c\x02\xbe~\xad\x9f\xffݥ:\xe2ҵ\x82_\xbb1\xfa\xab\x0f\x0f\x84[8+V\xe4D\x1a\xd9K\xf4\xd7vV\xdc\a\xa3\xd7?9\xe2\xf2\xd5^\xf6\xf7\x17\x95\xdf^\xac`S\xbf\x8d\xe5\xa0\"ϦM\x04E\xda\x14\\\b\xe3\xc4\xf0\xe1\x86\xdf!h]4\xd9[I\xf9\b\x10\xa4\t\xb5\xeaL\xa5\"WJ\x03\x0e0\xba\x9d\x14\x03j\x02\x92\"_\xab\x8f\x95\x02\xa5\x82H\xb4\xb4b\xb19P$v$E\xc3\xedh\xacL[*q>\xf0\xc24\xeb\xb25n\x84\xa4\x13\x98K#ȏl\xe0\"\x81\xfe\xb0\xa8\x18]\xe1h\xda/\x06\xecޭ\xdc\xfecה\x03\x05\xf3\xb2R6\xf0\x1e2\xb3\x10bp:\xeaC\xe2\xf9l^U\xa6\x92q\xfd\xb2R\x97\x98&1FG\fԇQ{{\xb9,v+y\x8e\xc9x'\xc5\xe1\x1by\x9aNT\x91\xda\xd7\x15u\xecȽ\xc6M;\x99\xdf9x0\x1c\x02\xa4\x8eZ\xcfNZ\xba\xe3\xdb\xd3Z\xbf\xa9\baZPʫ\x9d\x13\x8d\xfd\x1f\xbc\xba~\b\v\xe1\xbe\x0f\xb1\xea\xa8\aJ!{\xbb\\\xbe,\xb6\xcbW\x8c>v\xd5\xf2\x98y\x04\xe1\x848B\b\x85l\b\xfd]\xd2\xdcӴ(a\x1aW.\xfe\x0e\x8cܻ\xe30\xb5\xfa힢\xda\an^\x98с\x0f\xaf\xa5\x81\xc4\xd2\xda3\x81\xc1\xa6\x86\x8e\x9db\x92uV|\xa3\xeb+\x1d\x14K\x86\xb1E5'\x05//\xf0\xfd\x11DQ\x04\x96\x9b\xe0\xdf\xe8h\xd5Kot+>\xb1\xe5^\x1ce\x1f>\x87\x19\xb1\xd2\xfb\xa4\x03X\xd9\xef\x11h\x8d\xd1)\xd13\xb6^\x92\xf2\xee\x97M\x85ŝ\xcd$\xe2\xed\x14\xe2\xa3\a\xc9\x16>(\xbe\xf7\xc1\xdc\x14)e\n$k\x94I\x06\xe5X\xb1\x90gF\xae\xc2\n\xd0\xe2\xe5\xbc\xc9sV\x89\xe7q\x96V\xcc\f\xb5\xb2Ej\xda!\x83\xe8\r\x13\x1f\xb0\a\xc1\x9b\xe07\xa3\xe7\x8f\\&'\xa6\xde7\x0e\xa0C\x85sg\x0e\xe7.\x1e\xbb\x90\xbb\f\xaf\xad{\u007f\xec\x12?t\xf6\xbcu\x18\x0f\x17\x18\xc9\x10Z\x02S\x048\xeb߃^-֫\x98\x8di>\xaeD\xb9ř\xd9\f]eE>~\xf9\xa6\x9e$\x16\xdaKӁ\xbe\x05Q^\x82\xb0\xef\xf6?!\xc6\xef\xf2\x1a\xbfQ\xd4\x10H\xe0\xd9\xc3B\x18\xc7?e\x10\xf7\x1e\x02\x8e\xdcJ\xf2\xf0\"]\xf7\xbcekK\x05\xf0:\xaf|\x98\xb0!\xa9g\x91\x11\xfb\x8a\xa5\xa3\xbcT\xae4k*\xbe\xc0\x99\xc4\xef\xc4B6\xc0\xa612f\xdbV\x85\xd5{eɵ^\x10\xb9\x8dj\xbf\x9eΙj7'\xa1O\xeau\xfb\xea\xfc\x86\xb0L\xe15\x00\a\xc1Y\x96\x167\xa1\xd5-\xa4\x9c\xadd\xa8\xc8J4\xcf\ny\xa7B\f\xfe\xf6J6e,\xa7\xad'iZZ\xa5Nh\xc7\xd6\"\xc5c\vH\x81_j\xd9S\x0eB\x1fp\xe5m\x18 f\xac\xa0\x11\x83\x9b\x10\xcaHݲ^\x06;\xdc\x04H\x1b(d\x19VދpAx\x9f\xdf\xe0\xff]\xe4\xc8\xe2\xad\xd9\xe0\x9a\xb5\xe3\n\xf4B\xce\f\b8%\x9cZT \xf7Ķ\x9cg\xe2\x05J\xb0tJIf/h!`\xb1\xd5)\x03\xa9⺁\x11E\x81\x05\xb4\xb5N9\xf6\xcc\x1b\xb6\x92!KR\x15\x88\xa8J\x81\xbf\x1fme\x84\x0f\x97\x0f\b\xe8\xac\xc2\\O\xaf\xf4\xf2r\xad\ab)\xf6d\xde\xd0*8\xe6\x1bX\xa7־\u07b5\xf8\xfd\xa1\xc0\x887\x06\xf5V\x12\x1e\x92IK\xb1\x19ű۴&\xf9u܁\xbbv\xf0\xca\x17פ6\x11Y\xb80\xb8\xab\xf4*\x9e\xc7S\xf5\x04\xec\x80¯A\x14b\x15a\xb8A\x81\x99\xfbI\x92P\xfe~\\\x01\xbf\x89\x93H[\xaa\x99\xc5M\xae\x0f\xa2\xa9P\u007fz\xe6\xc1\t~\x8f:fA+\x8eXT\xdf\x11o\a\v\xf8>8\vq\x13?\x03\x0fp莉ߖ\xf0D\x88\x8e\x85\x97v\x1e\x97\xf0d\x00G\xebA\xbaT2\xf5=\x94\xabүU\xbf\x87?\u007f\x96\xedE\xb0\x17\x01\x19q\x02T\x87\xf6om\v\xe0\xe5\x03Ik\xc8R\a\x0f\x1d\x18\x13I/7Cl̈o\x8c\xf2\x1dS\xbd\xdc\xedܤV\x91\xcc\x12\xee\x06\x8b\xddX\xd6\xc4\xf3d\x0e\xf9\xfd\x93\xcc\xd6\x0fgO\xdf*\xbcg\xb68\xa9O\x01]9\x81\xfc\xf9\xf8\x84\x8d\x15\x19\x8av\xefO\xc0\x8br\v\x137\xbf\x8d\xf9\xf3!b@V\xafw\x13\xef|\x919\xb1\xfeK\x88W\xf6j\xa8\xf9\xbb\xe3\xea\xf7*R\xe6\x1b\u007fd\x8a$\f\x04] \xadR\xef\x14\xf3\xbe1\xbb\xa3'\x13bq\xa60\xc9M\xb2̙\xe7N\x92eQ\x81eeyÑ\xd8ʕ\xe1\xa0bQ\xe7\n\xe4\x16\xa69\xf0\xb2|Y@\x8an\x9c\xa9\xccԅ[\x9fG:\x98\xecT\b~\xfe|\xa1\x91OG\x80t\x9f\x88\xeeFy?\xd1a\xde.\xf7'\x80\xd4oSaU\x9fey@d\x89\xd3\xc8\x11\xeb\x8e7\x8bH\x8b\xadZ\xb3W\xed\xdcE^\xf9\x03b\xf5L\x92\xd5\x03\x1a\xe9\xc5E[\x1f\x91%Cʖ\xda\xe6\xa0\xf3\xdd~7\xffO\xbei\xe4\x80\x05\x11\xae\xcb\xd0\n5\x17\x01\xce&\xb6Čg(#\xad\xcdOz~\xbef\xf9d\xef\xf0\x82\xcc\x10cM\xd5K\xc7\xda\n!̬\xbf\xd0x\xff\x94A\xab\x13\xd1\xd4\r\xa3\xf0\bN\x92\xbaH\v\xa2h\"[y\a\xb2lU\x9c\xe7\xeb\x9bh\xba=\xa6zO@\xac\x05,ko\x17ݵ\x8d\xbb\xfdT\x14\x1eq6\x8a\u007f\xd6}\xfa!0ɹq\xf8\x83\xbe\x81\xa0+6\x00\x81|VI\x19\xb1\xd8`\"M\x84\u007f8Љ\x8e\xe5\tBFꙘ\b\xe2@D\x88y\x04\x93K\x92Ѣ\xceT\xc0t\x04L\xb7:\xf7퓴*\x8bw\xd2\x1c\x1d\x8d\xa1}JH\xa5'l\x14\x84\x05q\xe6\x86o\xe6!>\xb1\x1aP\xb0\\\xfc\bTЯC\x8a\xde\x11\xa0\x12Fx0[}\xbb<\"E\x82\x8bH\xde\xdd&\xdc\f\xef\x1b\x16V\x06\xaa\xd1dRkŖA\x05\x01#9F\xa4\xb7\xe2\x98\x15\xcf\xd9\xcd\x03q>53-2VU\xac4\x8d\x9d\xfd\xd3l\x93\xd5\xceڋ\x8e\xa0\x8f\xc9\xddx\x80\x81O\x13\x19\x94e\xa4\xc3\xc0\xbdhA\xb7S\x98\nƟ\xb9\x8e\xb4.a\"\x10\x1e\x97\x9f\x84\x91f=\x89@\xee\xe6\xa6\r\x99\x9f(G\r\x10\x19\xea\x17\xc5\xc3B\xa03~a\xce\xde\xeaUv\xe6>υ\x12\x1cWr\x98%\xbf\xc7Ek/\xff\xf1n\x88\xf6\xa2l++\xc1\xf1eG\x04\x89l˛\x86\xf1\xb1\u007f\xf2\x05:\xe2\x16\n\xf8\xc3l\xa2\xfd\xc2v\x0el\xd2\xd5f\xb7y\x11$b\xe8\xbaյ\x87\xaa\x19\x10\xd2\xd3\x1ai\xe8\x99jue*\xa8\xe5X\xa8\xb7\x03\xc0+\n\xb4\xa7)Jm7xfi\x9a\xac\xe0T\x102I:H\xd7]\xcdZ\x05\xc7EUt蘖AZ&L\xa5|\xa4\x85\xf4H\x00\xf2\xa0C{wG\xb9\x91h7Q[Uv\xee\x03\xa6\xc5\x02:\\\xf7\x00ީp\xa7\xee&]t\xa44\xads \u007f\xebt\x10\xe7\xe7\xf1Z\x8bN\x95\xa2N\xfd\xef\xc8\xedl\x8blv\x9b\x00J\t\x9c\x1e\x81d\xefN\xe78\xc9ˍɲ(\x12\n\xc9>\xc4#\x1a\xe1̀\xa0[>yx\xb3\x13\xd1\x06!\xab\x98\a孠\xb7\xbc\xa0\xd2hh\xed\xef[:J\xb0҉[\x8c\xa8\xccR\x12\x11\xcc\x00B\xc5%sv\x03\xffx}\xf6?7\xea@'\xb5\x824ꝷ\xc0f2\x8f\x02݄@\xbe\xa0\xf4\xc52\xa9\"\x06\x81\xea\n[\x0f+v\xd2\x121\x1f\xf0%\xf4\x1d\xc0\x94\xac\xf3\xb6\xf9\xbak\xf4[s\xedM\x19\xa8m\xccl\x97\x8dw\x85膅\xc5N)\\\xf2}\xcf\x06f\xc1Ӫ\x8bws\xafz\x1dwv\xdb\x00q\xf0XP\xfeƛ\x1f\x9154\xc2Ʋ\xb4LF\x8fL\xbd6 \xbd\x8bM\xfa\xa6Q\x126BV8\f\xbfu\xadzQ\x83=P0[Z\xbbA\xe6\x81 \x0e\xf1\u007f\bbհ,\xc3\r\xf5\xac\xf1=Uڛ\xd8 \x14\xaew\x06ەdG\xc6!\xaeiG7\x00uI\x12\xc8,\xe9l\xb9\xad{\xefܾ\xcc\xcf7\xb2fB\xb5\xd9?y\xf7N\f/\x8fc\f\x11\xa7\xef\xe5\x1e\xc3\xe2_\xa4\xa5p\xf3\x1f\xda\x06O\x93\xd3G\xefY\x00\xf3 \x9d\x90iA\x9f\xd2\xc2\xeca\xe1\x955H\xed\xa28$\x02Y\xbd\xda\x1d\xcf\r\x85<\xa0\x8c\x96\x85\xfeD\u007fP\x94\xec\x93\b'\xb8'\xa1\x8b4\xe8\x94\xf7\x103\x04\x8c\xceU\b\xb6\xf7$\x15\x1e\x16C{]Y\xe7\x02`>T\x8e\x16x'\xcf\x10,-\x94\x06xz\xc1\xd4\xe5O<\xc0\x80\x00^Cd\x92)\xf0j\xbdM\x1e*\x01Ἠh6\x9a\xacx\x03\xdex\x88X\v\x97(\x00\v\xe6\x11\xdb\xea\xb5A\xc0?N@h\xa3١\xfa0re\x00\xb6R\xb9\xcb\x0f\xaf\x8f:\xa9\xabaژ\xcc\vh\xe9|#\xd6\x02M\xf8\x05\xd9'-\n:\xb3{Ƶb\x12\xc0f.J\xb2\n\xb7m\x10k\f^T\x88\xe9\xa09܀\x89wc\xe5w.\x014<\xf1\x14\b9\xed\xbf\x8b\xfc'RP\xe7\xf5ōW\xf8\\\xaa\x977\x06\x0e\xdfԙ\xe5\x8d\xd9!{T\x84˛\xe4\xf0\xe3\xf9\xa9\x9e\x17\xa5.\xf5\x97E\xa9\xf9\xe9œ\xeb\xe9t\xc5n\xae\xe4\xf9\"l>\x99\xe7\xf8\x02\xad\x9e\xedx\xb9\n\x1e\xf3\xeaf\x9d\x88\x16\x8e\v2\xf37\xb2\xb8\x8b\xcdq\xfe\xb0\x18\xa7\x96Q\xefW:\x93\x9a*\x92\x13A{G\xba\x9c\x9aÀ\x80\xb9\xd3@:d}\xceN\xb5\xa9\xbd*\xd1\\\xb6\x97\xf2\xe9I\v\xb4\xdb\xc8\xd2\xe8w\xf9\x93y\x96\t\x8f\r\xe8\xae!\x1e/\xd7+\xefrm\xde6\xce\xea?N\xbe\xbc\xf9|@JH\xc4\x17\xac\x1fc\xa6\xd5s_lś\x9c\xeb\xe0\x04\xb0Y\xf7\xf5`\xed\xe8\xb5R\xe7\xd5I\xe7\xc7ڄ\xca\xf27CWF\x820ԗ\xc3\x18\xa7a\x8a?YC\f\x9a3U\x12w\xa67/Vҽ\x0e;\xb0\xf2\x1b\x16\x863\x17{\xbf\x84$+=e\a\xfd\x9d\xb1\x89\xe1\x9dҩ\xd3\xd5\xe9t\xedtЀ\xf8\xf2\xa7\x18\x91b\tً\xfa\x8f\xbb\x0f\xbd\x96pH\xcf`Y\a\x9bv\xee\xa8\x05\xd9\a\xe0r%j\xe9\x1b\xdc\xd2\xcdЩ\xfc\x8f\x17\x14|\x1b\xcb<\xd0F,\x02\x99\xc6 3\x8f.j/\xb4\x9e\x9b\xa8G\x9c\xbbT\x05\x1f\xfc\xf83\xf4ۭS\x9d\xe0=\xec\xec\xf0\xb0\xe1V\x01Kݛ\xa5n\a\xff\xa2N?\x96\xc8U^1\xf2\xe7\x9f\xa3\xc8\x01_\xaa\xe3\n\x02\xd6y\x19\xbf\xf1P\xb4O9nHX\xc1\xa6\xc1g\xb3S:\xba\x97\xa3g-\x958\x1f\xce\xd6(\x1e\xc7\xc7;E\xd0\xd7?\xb3\xa1\xee\x84\xe3\xb5=\xdc\xec\nfe\a0{\xf6\xe0\xd9YZ\xad\xb4ףōr\xb1ؙH\x1e3\xeaC\xed8\xbf'\xd7\x1f\xe4O*\xe5\xa8Y\xa2@\u007f]!\xc8\xdb\nח\xbapv@\xf6\xedq\xc3By\x12\xbf\xfc\xa1Hj&\x83<6\xcfs\xc1ʼB\xa7E\x91\xae\x8c&խ<\x8c\xc3\xde-R\xc9>D+E\xe2l\x1d\x18X\xfbXE\xd6Z\xfc\xb3ih\x99Z\xb1h\xf1\x10*\xf2Ke\x15\xb1\xb0\xb1\xf2W\xc6`\x19\xfe\xaa\x84\x1b\x8a\x1b\xfe8\x06\av\xfb[\xa6q\x11Gy\x80]\x93&\xae\x97n\x18\xd0\rc\x03.\x97\xb9\xa5ѬC\xc5\xf9-\a\xb3b\xde\xe0\xaa\xfbȔW\x06\xbfD\x048\xcb=A\xe2\xee\x88 \xd4\r\x9e\xb0\xf5\xf0R\x84\xa1\xba3\xdah\xde\aC^\x0fqo\x8c\x19\xf1\xafWM\xa8\xa4H\x80&\x0f\xbaH\v\xfbw\xb9:\xb5\xe8|\x12yO\xc0Z£k><݉3\xe1\x17]\xe3}G\x1e\x88\xb3\x8f\x88>\u007f1\xf7\x81\xcdE\xc0q\xeeh\xf0\xe5\xe8M\x97\v\xeelD\xbe\xb7d\xfa_-eox\xbd\xac\xefe>\x86ӧ߿\xe0\x81\xd3\xe7A85\xad\xe7Ο\xb3\xa1<\xb8o\xf0ܿ\xefë\ue7ea\x17\x1f\u007flg\xf4\x98z\x9e\xbd\x04ޞ:\xf1Ա!\xa3\x1f\x94>\x97\xd4\x06\x94\x92\x9b\xc5/\x051,\xccٍ\xf2W\x8aY\x90\v\xfe~\xe5\vͣ\xbd\x83\x96\xaa\x17\xfc\xaf\xa5\x95!\xeb\xaem?q\xf4\xd8\xfe\xac\xfd\xf4\xb9\x13k߮u\x18o7\x16\x95v/\x9a\xefMې%\xb4\r{\xd8\x05|y\x9c!\x8a\xf7ң\x96??\xb4\x9a]\xf1\x19\xcd\xf2\x18\xf9\x823\v[r\x1c{H\xa1j[]dG}R\x9dd\x15Ql\xfe\xcc\xfcv*Z\xa2w\xb5\xf1\x86ψ\x8b\xe9s\xf4\xe3o~\b\x99\xfa'\x92צ휩\x9f\xdd\xc4z\am`_Py\xf30\x8a\x9dbx\x92}<\xd1f˴e\xa4\xed\xce%\x99CcBhеc@\xc8\xe6\xc0k\x8f\"\x94\xe3\xd96\xaa\xe1\x84\xd8\u07bf\xbf\xbe,[\x8f\a\x0f\x1e\x1c\xee\xb2[[\xa5Z\xff\xe1\xee^Yj\xef\xbd\x16`\b\xde\x1b\\}\xa8\xbd\xee\xfd\x9d\t\xbc\xaaq\xff\x0e\x16\v\xaa5\xbcsc\x97\xaf\x1c<\xfa\xff\xa0\x01\x82\xbb\xf9\xf2\xf1K\x17\xf7\xf4Y\xa0;\x8f^\xba\xeec\xfd\xd2ދ\x8fW \xeb\x85g.{\x82p\xf6\xe2\x1eJ\xd6O)\x9f\xc1\x19\xa7\xd5XSFpV\x83SH\x00\xf0q\xd6N\xa2Ҏ\x99\xf0\x98Vd\v\x02\x8cH\tnx\x926\td\x8c\xaa\xbcNQ\xa8 \x87\x00\xe46\x00\xb4x\x96\xee3\x84|\xa8\x89\xe9c.\x0f\x02h\xa6\xb3x\x8eP\x85P\xb9\xf7\xb2P\x83\x82@q\x8f\xb0\xb0\x01Qh!1\x8c\xcd6\x99\x84\xa9\x9ey\xd2t!\xe3\xd0X\xc5Ǹ\x99\x00\xa2R?\r\xa6\x1b\xe0,6\xa8\xe6\xbc1\xd8\xc1̥=\x1cqOe&È\b\x84\x06\x01DiU\x00K\x9c\x05!\x1b8\xf51ྚ\x97\x97xj,5j\x14\bj\x84\x91\x9c:\x8e\x02[\x06\xc5\xc6@\xcc\xf8݊)\x12'5\x06\xb8\xa6\xd9\b\xa4\xbc\xd4oR\x9f\x1e>S8\xc7y\xc4/w,qI\xb1d/\a\x03Uh\r\x00\x80\xc2\x1cq\x82o\x06jn\x17\x1d\x1a\xf1\xc2\xd9\x0f\xe3A0\xbdsC{\x8f\xbe\xd1~?\xab\xb4\xf6\x16;\x96\x92\x95\xe3\x93M\x8dE5ź\xac\xbf0\xd7J\xad\xa3\xf2 \x94f#@\x83\x92*\xfc\\=\x96\xf9\xec\\\xd3(\xb2\x83\"\"\x13\xee\x0f\x9d\x14\x86\x8e\x00(\xdf1\x89I\xb2\x16\xfa\xb0\xb8\f<\xe7\xf6P\xe0,ϢQY>{M\x1de\xae\xb5*\x11\x88I\xa2\xe5Fs\x8d\x88\u07bf\x1307}s\xa5\xa4\xd42\xe7k\xa7\xa9#\xb5\xb0\xf4$m\x0e\xcev*7\xe1,\x9f\xf1,'\x154\vo\xdb.\xafO\x10S\xa8Vve\x81\xc0\xf8D\x908\x93\xbf\x99\xa8U\xd6}\x11\xd7 \x9f\aJ\x9a~\x1c\x82r\x90s\xc4\xd2<]Z\xa9\xde\x10\xae\xd3\xeb\"\xe8`\x95L\xb1\xcb\x06<\x92D\xf6\x8e\a\xa7\xeb!ͬ\x84\xd3YR\x90j¼1;\xa6\xe3\x8a\xe6D\b\x1a\xc5\xda\xe4X\xf8j\xe0\xafJ\xf19\x80\xad\x0f\xb8DrD\nUJ\u009f\xd00q\x99\x12\xc3<\x0f\x1c\xcf\xc9U\xde\xe3\x82\xc8\xf9#\x96IL\x92\xe2h\xab\xf9xYY\xc1ի\x10z\xf5\xfbH\x0e\xce)F\x99\x82)\x15`J\xf8?AUV\xe4\x01\x89\v6\x8b\xb7\x06\xab8wc+ZM1\x198\x93\f[\xc0\x06\fA\xb1\f8d\x98\x81\xe0\x02,\x1a471\xa0ޞ,\xb1\x8cBE\xaaH-#D\x9b\xa1A\x04\u0600\xa4U\xea\x1c\x80\x92(\b\x9f\f\x18\x1aRM\x13\u007fV\xa4%\x06\x88\bU{\x80a3\xcclȯ\xb1\u007fcTpI\xac\xbe\xa5L\xb2\xdc\x05^uf\x19s)\x14_iv\xd9g\x12߂\x9a\x87\x84\x85\x9d\xe4I\xa9H\xab\xa6{\x8ds\x9e{\xc5!<=\xa1\x83S\xfd\xf1\xe1D\xe1N\xaeNuɓ\x91\x85\xa1\xd8D,\xa3\xc3\x19f\xd2\x04\xd1(\x14\x16\xf3Yz\xe3\xecs{\x93\xe4E \xb0\x82\xf5[\xfc\xd4\xc2\x1a\\X>$U\f\xb7\xb2\xd4&\xd4\x13aP\x88\x91Ń\x02<;2$O\xd4\xda\xf2mp\xe9\x90y7m\x05\xfd\xaa\xe4\u007f\x19lutD\xd1\x01Ͼfz\x99\xe0\xb2\xd8-n\xb3\xe0\x1f\xb6\xbd˚\a:\xbc\xb4\xba㬨z\xef\xda;o\x01-r\x98\x90\xcebf\xecuL\xa0q\x00\xed5\xda]\x99l!\x93/X9\x832\xc2\x19g\x94;\xe4v\xdc{e\"\xabM#F\xbc\xeb\x82\x1eb\"?a\xf8\aOC|i\xa4\xb1\xf4b\x17\xe0\xcd\x16Cv\x99\xc9\xe4\b#\x80T!\x9de\x9dMZ\x8e\x1a#y\xb73\xbd2<+d\x15sƈ\x11\xd4\xe3RO\xd5G\xa7\x82\xd6ԏ\x9f\x9d\x1e\xf5G\xc5\xc2\x1ci\xf1\xb9\xfe\x88^\x15[5\xcf\xf3\x13\x8eaN\x16\xbc\x93\xf4\x82\xc5l\xef\xde*Ono#\xf5\xf7\xc6y\x17\xe3\xad!\xf6\x16bg!3#kQ&v\x86\n\x99\xb29\n\xf4\xa5c\xb3\x81\x8dև\xe7\xb3\xccd\x18\x90o=\x9a\x8cxL\xf3x,&\xc4xrFs<\xdc\x1a.\x19\xbb\xbdl\x97H\x9brH/\xd4(\x10*H\x8e4\\of4NƠ\x9e\xc8<\x04\x16\xad\x8bD\xd3Ÿ\xd4p\xadמݬ.\xea\xe1\\\x82\x15A\xf5k\xb3\xf3\xec\xf6m\xaa\xb9\xaam\xc2J\xc3n\f\xcc\x17y\xc8U\x95^\x94\xee<\xb2E\b\x98\x01\x82ވ\xea\xdeG\xc7\xeb4\\u=m~\x80H̔\x8ae5\x85y¤G`$\xd4+\xb4\xfe\xf9\xce\x1dv\x9dZ˗\xa5\x1e\xa4\x10\x01\x84\x81C,\xe5,-!\xa1\xf0W\bE1>\\\x9f\xa4\b\x06xH\xa6\xfd\xd1\xcbH\xff*\x84\x8eL/S\xbb\xdahbg>D\xe1Xjw\xcd\x04x\x14L%\x86\xb6y\xb0J8\xab\x0f\x8b1\xf1\x8bW\xea͇\xa0\xda\xef}\f\xc4]\xb5\xf4\xd2k\x1f?\xde\xf4Ii\xa1\xd9\xf9\x05pn0\xffh$Z\xad\f~\xab\x1f\x9e?y\xddMz\xd3\xc9&s\xbd\x1b\xe83\xfa\xedS\xcf0\x804\x9b\xa95'\x90\x16iI\a\xe2]\\\xfc}62\xbc\xc3\x19\x13`\xb0\x99̥\xf9\x80i\x02\xcaJ\xd6a\xb7\x03\xb5\x949\x00\x02\xf3^\v&\x89ͼ\xe2\x9d<+\x87ĚF\xbe\xde\x18\xb4\xdf\xcf\x1fBp\xb8tNӡ\x0e`\x89\b\xad\xe0\x12\xcd\r\xa5p&\xd4\xb8\u007fp\x886\xa9\x01%\x13\xc8XC=4\x1ap7n\x84f\xc3\x14\xa9\xbb9\rBu\xc9*!\x12\tO\xadOA\xbe\xdbD$\x15\xc6*\xfd؆\x98\x8cT\x90\xa2\xc3\x03\x8dnƓG9\xdcy\\h\xd8]A\xa7[\xf8\x99[}\x1c\xfa\xd0S\x12\x1b\xf0l?k\xd5T3\xf6\x87\x1d7t\xab\xb0f\x11\xdcfj]\xf7J6>\x02\xcd A>d\x14eİ\x95\xaa\xa4\xbbG\xdc\xecb\x18ƻ6A\x9d\xdao[\xd2G\xa7ñ\x85*\x8f\x9f\xdeO\xff\xcd\xf5f\x90\xcdִ\x87\x1c\xd6\xc1\xa7\xd1-\x8e\xff\xb1\x13\xa1dO)\xed\x1f\xd1RUju\xa7\xe7ހ\xd5r\x86\x88\xb3\xa7m\xc7a\x82\b]\x96;\x86Ppj\xf1\x82\xd4p\x82i~\x1b5\xcbs\xdea|\xa9\xf2\x16\xee\x98\xd2LA\xccf\x15{h\xe7\x12\x80\x04,\xe8L\x8f\xf6Nq'-\n\tP\xccFV4\xbc\xa2\xbaF(\x8d\xdc\xd5ˆm\x82,ܛ\xa4\xb6\n4\xd2ʚ\x8a\xcc\fu\xeb0#\x00\xa8Sg$\xd8T\xa6HO\xd10\xf7\x9e!\xb3\xc2p;}[\x1f\xaa\xe5k\x94y\x8dh\xea\xc8 \x93\\\xb9U\x9f\r3hy\x01\xe9\f\x1b\x1doe\xf7\x97\xb94\x85\x8cV\x8c\x19\x1c\x14\x18e$3\xc32\bQ\xdcCPflZ\x88\xe8)%5\x01\xdep\xec\x1c)`\tl\xab\xeb\xe9\xc2`\x9e\xa3\x86\xd6\xd0VS\x9bQ[ \xb0&\xba\xff\x94\x863\bd\xf3\xc8\x13E\x00\x9a\xf7\xb1\xdc͐\xaaR\v\x04Uթ\xd5\xcf\x00\xe0\xb1\xe4\xc3^\t\x18O\xaf\xc8@\\?\xef\xa5k\x81\x15\x18\xebLh2\x05\x9b\x9e\xbe\x0e\x82\x14\xb9~\xea\n\xb4\x1d\x11kS\x85\n\xb5\x12\xd6\x15\x9d0\x11\x01,\xc9\x14f\x81\xf4\x91\a\x949\xc7\x1b\xd7l\x16G\x18\x89\x90\x9e\x1d\x89D\x1e\xb8\xd6z\x99ˈp\xd5\xcdI\x1a\x98\xe2\x12K\xa2\x15\xd6E\xe13\x85\xb3\xad\x18s\x8d\vo\xde\x17\x02\x94\xcc}H\xfd8\xe3\x02\x10,aFY\x88&\xabת\xa45GD(0o\xa0\n\xfc\xccE\xa4\fq3\x1f+\xab\x84\xadf\xa5]\xa8 (\x0e\x93\x1d\xdd9A\x817\x00\x01\x10\"\x91\x1e\xd4\\\x99\xe5\x12\xb9T)\xfa\x8e\xc0\x8a\xad\x1a\xe2\x04\U00060b15p*\xfe\xbf#\x02\xffZG\xaa\xa4\x96u\xec\v\xc0\xfc\xc86\xe4\xfd\x042\xc0R\xd86\x15\x1d\x95ȳD21\x9d\xb6\xaf3\x85(\x1c\x91\x15\xc2\xc1\x1d\x18\x17\x84\x13\x12\xea\x1c\x86\xbe\x92v\x978F\f9s\x87p\\An\x85\xcaA\xf6\x89\xb8K\x02\xad=\xe9\x1b\xd1p\xa8S\xa8mtU()މ\x90Y\xcd\x17\x8c\x1c\xda\x10i\x15YWq\xfc\xc5\xda\xe6\xe6\x1c\x80ʑO|\xe04\xa3D䒱\xfc\x01s\"̝H{\xd5\r\xb8\x17Q\"\x94!Go\t\x10\v\x1ed\x1d\xa7\a1\xfe\xaf,Оr8D\xb0(IA\x01x\x802\xb3U蝒\x11\x17R\x98_\xe5\x17\x12\x11T\x1c\t+4\x15a\n\xb8\xe2\x14\x15\b)\v*I1\xa6D4\x05\xc2n\xbc^ʐ\x18\x9e\xf2\x02n\x10\xea*\x94\b03Ъ`\xd1\u007ffw \xc0%\x8el \xc3\xcbS\xa2\x96\xe0\xba\x11\xa5\xc7\x01eՎI\x1e\xd0C\xb1*\xf8cDj\x0f\x80GC\xc8Y\xb4Bo\x90U\xf3\xccхQ\x94\xab\xae\xaa\xdd'Y>5j\x88C\x97\xabG\xc7\x18vs\x86XY)\x94,\x1a\x1c\xc1\xac\xa0\x80\xbc\xe0!\xd4LC~:\x8e9ř\xc0\xae\x02+\xdf\xe7\xa8\xd7\xc1\xb0\xdc#\xd3\xcdZV *Y\x98Nߩr\xc2\x18\x9eʁHF\f\xd3\x01\x9a\x1f\x1e9!\xb6\vhUl\xb3)踏kg\xb3.Q2\x96n\xa6\xfao\x06\xc6\xf2\v\xa5\x9f-\xec\x11W\xa8L&\x00\x81\xf3\x1d\xae\x15\xfcQ\xeebh\r\xe9d\x9cx\xcaϿ,\xa1>\x03\\s\xbe0\xd7?\xf4>\x14\u007f\xcc\x14\xcf6\xd3H\x13\xb5\x9d\xec\xe8\x1bw\xed*\x8b\xab+n\x1c\xea̎\xc0M,\x98\x108DT|(\x80\xd0z\x9fF\xd00\x94\xf9\xa4\xc1-\xf2\xf5\xb2\xe6\xa5ݥ\x04\xa2\xfd\xb0|\xd0r\x8cg\x8b,#7\xe9H\xd3\xee\xcf\xe4\xd7A\xdb\xce_\xa1D\xbc<\x03\xfaO2\xc4\xcbʘX\x05\xf3\xee\xfcE\xff\xf4\x03Q\x10\xaeD\xebţ\xec\xea\x84\x02Ab\x05L6\x01d\x83\xeeB\xda\x1c\"\xa6\u05ca\x9dގ\xe5\x13\xd6P\xd5]\xbd|\xa3\x02\v\x15K\r\xa8\x12ʰ\xc62%\xee:\xcb\x01\x97n\xcd\xccMŀX\x8a\x99\x9a3\xf5jA\xda\"1\x98\x14\x1e#\xce1(\xfb\x1b\xa6&CMRÁ\xf6jB\f\xf9WbTg\xe2\x8a\x18\x9a\xd6P\xb0\xab\xda.\f\x89\xee\xfa,\x1c\x8491\xa9\x1c4\x9a\xd7$5x\x92\xb9%\xc4cO\xa1R\x83\a\a\xeb/\xb5\x153\xa9\xdc$D\x0e`|P\xc3\xfaC\x01\v\x8c\x98\xe4\xb2\x01\x85\x91\xaad\x97N\x16\xe0)\xa6!\xc0\xf5i\x19\x80\xe5\x86<-m\x06\x1cښu\x88`M\xa0n\xcb\xfc\xc3\xfa\xc5\xe8t\xe8\xe4\x15\x1axo0$\x01i\xbfOp\x06\xa9\xd80\x9c8\x11Eh\r\xad\xb5\xa6\x12\xfc\x89\x95v\n\v*i\x0f]\xe9\x11˳l\xa3\x899\x92\xecQ\xcd\xc0\x83Ju\x15?$t\xda\x12 \xe4(#9\xb2a1\xb6v\xf2\u0087!\n\x8e\x05\xab\x19\xb3+\xf3\x00\x93\xb0&Z|\x81\xa8\x03(\x12A\xde\xc6O\xac\xed\x12=!\xaf\xdb9\xceB\xb2\xef`\x802wE\x13gnd/\x92N\x1d3\x86\x89G\x18ɒ\xf2\xf8\tUn+\xed\xb1n\xb1\xa6\xe5&\x89%\u007f\xbc\x95\u007f\xb1牗\xf8B\x12\x9c@\x81\xf5\xd8\xe5\xae`\xf4\x9e\xcbn\f\xbd\xe3\xf6\x91\xaa\x11\x85㵲g\xef;\xfd\x92\xfb\xe7\xef\xd64\xae\x9d\xa1\xb2\xeeة\x85\xcab\x00\xb1\xa0\x1f(\x8ax\xd1ʙ\xf9\xacu\xb8\xe2\xe1\xdc \xfc<\xbe\xbb\"\xce%Ss\x00\xa5\x9a}\xdc\xdc9}Syn\xbe\x00\xcd\x1am0\xcc)&\x94]\xbaiڑ\x14=_\x1aV\xcdG\x00\xaa\xe1\xae\xc5\v\xbc\xea+\x16\x9c\x8d\xaa\x184`\"+\x91\xdf\xc3\x1e$\x91Va>(\xa8\xde\xd1\xd7\xee\xaf\x11iP\xe0/\x8d\x8f\r\xd99Dzg\xb5\xa8\xda\xd9Dg\xed\xcc4\xd6\xdbW*\x87\xb3\xf6\xc6\xfc$]\x01\a\xb2Jx\xa1\xf4F\xe5t\x864\xdbnK\xdb7̽\xad\xbd\xed\xf7gF=1\xe2\x80\xf5'n\xdf\x1e\xa2\xacۋ\r\xa4\xcd'U\xd5p9HQ\xfb\xdd\xdf\xdf\xca\xdb\x18\xf7gX\t흺7ȒJ\xaa\xf5-b\xdb\xe9\x1bQ\x95\xe2\xbb\x01\x8d$\x9f\xb4,<\x9c\\\xf6F\x8b\xbdz\\_)Ŀ_\xee\xde$\vDJ\xa7҃o\xf4K\x99כ\xf4\xb3.\x8b\xf3QY\x883@\x88e\xf9r\xa2UZ\xf1\x8a\x14\\\"\x1a\xcd\xe2s\x0fV\xbaF\x92u\xa3i\xee\xe1\xbb}\xef\x1fc\x8a\x95X\x1c\xf18\xd3;\xd5α\x06m\x95zh+\x9d\xfcןP\\\x1cL\xa69\xe6\xa6\xc4\x13מ\x8a\n\x11\xbb\xaaȚA\x83:\xe7\xf9i\xac\x06\xf814&\x13\xfa)\x82\x19r\x8c@kQ\xc8\xdc\x15mL\xb3,B\x96tD\x8e\xe1\xcf˷zE\xff\x1f8\xb6\xc8G\xaa?I\xf5\xd4I\xadӈ\xe8#\xa9\xbf\x95,\x1d\\PG\xd4Q퀠\x83\x03\xb3\x04\x03Z\x850\xfc\x06gš\xa5Y\xb8A\x91\xef\u007f\xe3\xc3\xf5HO\x8e\x92\xc5\xec\xd9\x188\xf7}P\xfbx\xf8\xfd}\x02t:n\x1f\xb7\xa1\x99\xc4\xc0N? \xa82hW\x11\x98\x9a\x06V\x1d\a\xc1}\xa4:\xc7p\x1ey\xcc\x01d\x13\x98\xb0\x11\xea\xc4\xd7h\xc2s\xf1\x94c͚t!\x8b\u0098\xeb\x8c!hN~\xe5\xbd?\xc5ؠ \x1cG\xf0\x84\x87a\x93\xe6\xd9\xf2\xa3\x8b\xf7\x1e\xbc\xdd\xdd\xd39\x94\xe8\x83T0\x15\xd6\x1f\xbf{↙\xcf;\xb8B\xf5o@\xe2\xa7߹\xb7\xed\xf9g\xf3T\xca[Ch>\xbd\xfd\xfa\xe4\xddՆ\xe4L\x03\xe9\x9d\xc4\xc5\xefp\x15y\xfc<\xf2K\x1c\t\x10\x98Uw1WEP\v\xe4\x938\xaa\xe1\x1e\x14r\x96kbr\x15/\xc7WÜ\x84ǪW\xe4p䐤7\xeb\xfb\x13 5̀\x1cW\xb0)\br^\xf3K\x17\xf7\xbc7\xe8M\x05_u\xf4&\xf4\xfcRmoH,\xfc\xa2\xe0\xa1\xf0\xc2ŋ\xaa\xb93\xc4\xc1}\x99\xc98\xf7\x1a(K\xfc2\x01e5\x95\x8c=}\x87wRh\xdc\xd7\x15\x94\xf9\tI\x1dS\xf3\v\x82\xfc\xf1\xe2\xdew]>\xf9\xed\x97\x19\r3\xc2p\x98\x92OQ\xa9\x1d^\xfb\x8a\xcf\xf5\xedC\x90\xb1û\xfa\xca:\xe9\xa2\u007f\x12P!^m\xbe/\xe1\xe4\xeaj\x9ed\xed\\\x82\x9b\xe1\xefQh\x8c\xa5o5\xdf.\xadIN\x9b\x1b\xf8v5n\x94a\x02}x\xa6\x8a2,\x87\xb3\xc5e\xb3\xee\x1cFC\xd8\xee\x1a9\x84\xb7\xd2cC\xf4\x12i\xec\xc1\xdeS\x83$\xa6\tT\xbd\xdc\xdaz\x86>\xfa\\a\xbb\xefR\xa0'|뷾\xbc\xe6a\xef\x16\xc2\xfak\xea\xb2\xf9\xf2\xf5\xf5\xf1'\x11A\x8dV\\\xe9\xfeX2\x8dwj\xeaI/\x82\x9b\xef+\xe5\xbd=\xdd1\xab\xbb_XJ\xf1bk\xb1P\xea\xacV\x17c\x9d\xf4\xd4\x1f\f\xabo\xdd`J\xee)\x88\xa2\xae\xbcC5\x00\x99x\x17\x9bF\x13\xb1s\xb9,\xd3~/e\xed;G\xda\v\x1a+\xed\xf2U8\xb141\x86 \xb9%\xad*\x91\xd5\xb8\x03՜\xb6\xff:\xccc\xab\xb6\x9a\x18wD\xbd\xe2\n\x82N\xe5\x10H\xf2:K!\xc2F\x19āP\xe0A\xaa\xf0#\xa4\ri\x97O\x04\xbd\xa1\xee@ٞb\x8b\x80`\xa7\xd5m\xf7\xe9(7\nv\x94\x99`\xeeƆ\x94F\xac\"%\xa9I\x94(t\xccT\xd8у\x04M@\x1f\x8ek\xfd\x17\x11\xbc\xb0mc\xbe\x91#\x92\xcf\xef\x04\xbc\xc8\xe9c\x04\xbf\x9bl\\߾y\xb4{~\xbc\x1f\xe8\x1d\x96\x8f\a\xe5\xba@֡9^6[\xe9E\x90-ry\x0e\xe6\t[mx)\xd9cD$\x1eNf\x8d\b\xe1\x92:\xcbh\x88\x143yh\x18k\xef\xd9;\x92'\x80\x01\xf1\x91/\x10\xc0(I\xe0\x9e\xac\x95\xaai\x9c\xb4\xed\xaa\xff\xde\xe57\xd0\xd1f\xa2\xa8\x8c\x02I\xfe\xfe\x9d\xd3/o\a?}\xe6\xc9\x01\xf4\xaf\x9cn\xae\xca\xf2p\xfb\xf0[\xf3\xf1Щ\xad+\xbc܆o\xdfy?\xdf\xee=\x1a<\xbd\x93pW\xa9\"\xaf{\v\xe9\xa7\x13M\rW\xcd\xe6f]9yP\xb6ϛ\xa5[\x16\x05t\xb0\u007f%\x1d\xf9\xe7\x82y\u07b9]\x1d\xec\\<\x9d\xaap\xe7\xa7\xe9SvG\x86\xa5\x99\xf4\xbe\x84\xfb\xbdh\x83A\xf0G\xc1\xa0u\xe1\xad:\x17\xedoESn\xf6\xa4j\x963`\x04\xcbq\x8as2\xafW,u+\x0fNk/\v\xec_\xbd}K\xa4\xa3\b?\rX\xceG\xa9]\x10\x0f\x00\\ww7+\x8f,\xca\xe8\x9ax۶\xcc\x036v\xa0\xbb\x1e\x00\xc9\xc7s)\x03\xdbS\xcce)\xa4\x15\x88\x03#U\xea\xbb\x17L\x96\x900\xd7Q\xbd\x80\"\xed\xa6\x1a\xaf\rA\x95\x88)\x93~\xb7\x01\xc9Vw\x82.\x91\x95\x1b\x8b\xa4d\vg\xb0Q\xee\xe4y\x91\x89\x84\xa7\x84n'\bÞ\xedL\x9c\xdd\xfe\t\xecRp\x19\xe1\xae\x03\x14\x11\xa1-vt\xcb~\x91>(x\x19`\xe0z\xb0\xa9\xc4\xe4r\xc4\xf46\x92\x90`\xca\xc7ɓ\xc8&\x86\xc2\xec\xb6\t\x10\xeb%\x16\x84<#\x88D\n\x88X\xee\x9f\x1cv\xff\x93xm\x011\x034\xc1\xca\xf3Y\" \xf9t\xceT\xc3\xc2\xcd\xe0C\x97\t\xe6\xfd&P\x14a\x81\x05eG\xce\r\x86\x1f\xe4\x9eQ\x8a\xd6\xcc2\xfe\xe1;I\xc9\xf2\xa8\x1aU\t\x1ePQ\xff\x1bKq\n>N-i\x14A\xb5ַ\x91\xf0)\xe9\xfd\xa0\ayE\xbfB1\xe6\xe7\xd7\x12\xd6,\xdb\x031p(\x87iR\xb9\xa6\xa9\x10\xe6\x1f\xc3\xe3\xb8\b\xe3Bɥ֬\x10\xc5z\xc3\xe2\x8fPVv\x15g\x13\xe5\x82\xea\an\xdf\x1f\xecN\x82\x9a\xeb\xa8\x04\x89\xde@\x8ee\x9dG{_\x94\xda\x03\x03\xb6\x1efm\x14\xd2\"\x142\xbd\xe7K\xaf\n\x883\x98=\xbb\x13\xcf\xea\"\xca=\xc5\xc7sܕD\xcb{\xfdgSԈ\xb5]>\xa7\x1b\x8au\xad\x85j\xe7\xa8\xff\x93\x1b\x16b\x1c\xdf/\vf\x95\xfc\xfdZ\xe7\x97\x00F\xaat\x94\x06\x9d\x93uT\xdd\\\xdcԄ\xb4\xa5dk\\\xed\xf4\xb9\x85\xf1\xee\xf7\xd4\xcb\xf6jlR\x9a\xd3|\xf9\x98\xc0\xa7\b\xde\xfer`q\xc2\xf1\x91\x83\xea\xf1IC\xd2Ċ\xee\xee\x16\x9b4\xc0\xfa~\x87|8\xbf+9a\u007f\xe9\aNX\xcb\xfd\x8a \xde~\xa4\x04:\xfa\"\xad\x91\x91\xcfs\x1b\xbb/\x8e\xcc\xf3խ\x8dν\xc1\xfb\x8d\xfe\x98\xbb\xa0#\x1a9\x12\xf5\xfe:\x82\xe3^5#\x1a\xd1\xcdT\xc1\u0382a+\xe2\x86\u007fá\xbb\xf5\xe4\xf8\x99,r=\"\xb3\xbc\x88\x13\xfe\xd5#\xa5\x19j\r\xe5\xbe\x18u\xa1\x8e\xab\xd1\x1dv\x96ʈ6\xcb\x1d\x86\xcdy&\xf4\xa4\x19\xceo\xdf\x1f\xb4\xb0v\x8e\x00v\xb5\xbcW02Gf\xa7\xaa\xd8;\xba<ٶ\xed\xb4\xba\xb3\x18\xf2Ep\x9f\x89\x1d+\xe5\xf6\xee\xae~\b\xd8\v\x0e \x1f)s\xb1\x96\xc0\xc2de\xd9_\x8e\"\"\x8e2o\xecKo&\xebGbem\x1a\xc6^\f\x81C\xcfHC\xa1J!;\xe2F\x99\x18\xf96\xaaX\xc4\"t\xa5o\x9a\xa6\x8b\x1ad\xcdRK\xa26\x1c\xea_\x8c\xd1\xfd\x9a\xf6\xee|-ב\xb2\x18\x9bU%'\x18:\xec+\x84\r\xaf\xa8\x8c\xf7\x80\xacd\xbfh\xb5\x806Z\xe0:\x81p\xb9\x03X\xe3\xc3\fb\xdf\r\xd9N\x1d\xb8@\xa0\xdfA\xdc{\x17\xb1\x18\x85%S\x8d\x03\x1f\xb5))q*\xdb\x14\\V\aM\x1d\x83h\x94\xa8&WGk,\xbc\x9c\x90\xea\x17\x84Nk\xfb\x8d\x9bgLj1|\x19)]|~{\bbc\xf6\xcbWJ\xb4\xffa\x11\xe9hM3\x1e*\vɛۣ̈\x9f\xac[k\xff\x99\xb4A;\x8d\x91\xb3L\xe6ȱ0#\xdf.\xc0\x04\xd4d\x96\xa6\x92\x01~\\\xe6\t\xbdw\b>\xed|\xc6=\x02\xfc|H\x80ľ\x02\xe0>ͭ\xbeӰ\xbfy{\xb1\xf9/o\xd8\x00\x16\x05b~\x02\x04\xd6䍱\xcc?N\xc3Mڱ@wz\xab\x16\xdb\x1e=\x14\xd5F\xa7\xb6:|\xaa\xe3\x9dW\xcd'\x1dU)-\x13B\x97\"h\x13\x82\x02\x86\xb4\x89\xbaM\x03\x1bH\xe5\x03rQ\xab\x91\x0e\x9b\x90=\x88\xb6\tM\x92\x88\xb9x\fW\xff\x19\xbb\x8b\x19\xc0\xc2\xe2m:\xf6\xafW\xc2|\x14\x1e_l!\x99\xc6,c\xaf9|\xeb\xb0\x1b\x93\xf7.Yg\xd0vٓ\x82\x01K\x1d^\x83f9\xadf\x82\x12\x02G@\u007f\xf7Q\x1b`\t\x19\x02Y\xe9s\x19\x02\r\xf5\xb4d;$мj\xbbM\xa5v\xfdF\xff\x925\x9c<>M\x16\xea\xfc*\xd6\x0f\xdb\xff\x06}ߢ\xff*\xc7;\x17\xba\xf3\xe8&\x94\xad](o\xabo\x1d?a\xbb\a\x91\xab|ȳ\rkS,\xb5\xaf\xe5~\xd1\x0eVg-c\x1ed柽\xf7}\x97\xfa\\w\x97ķ\x84:\xe5\x02Q{\xbe\x035e&\x9d\xd0t\xb5\xf9\xe3m\xc8y\xbd\xf8ڧZ.+\xd4\a\x9f\xff 08-\xd8\xc3\xe9\x83\x06\x91\xaf\xb6o~\b!\xca\xe2\xe7\xe6!\n\xdf\xe5\"\x9c2\xde502:r~\xdf\x1b\xbf8\xb8s\x19\xd9C\xee8\xfa\x1f\xbc\xb4\x1dz\xd3t\v\xfe,.\x15\x95\x8aSE\x91\xf8f\xae\xfd?\n\x97\x83\xac\x81\xe2\xf5\xb7L\x95\xbc\xff9\xa4\xbf#\xae\xa4r\x90\xc1O\xc4\xe7\xedpXj\xa09?\xdbb\xc9\xce6\a\x86\xa7\xc2\xdb\t@\xc5\xc16ڵ\xbb\x1e\x85\xab@)R\xf8x\v\xe9߄\x16\x9av\xc6f6\xfbc\xf7|{\xf9\xe4&\xad\x97V\xb5\xa6\xcf>\xaf\t\xb2\xb1\u007f[\xa2\xa5\xadcQe\xaa%2`\xd43\xf6\x8b')&\x96\xe8\xe3\xd6h\xf2\xb2x\xe38\xb9\xd2`߃|\xda6\x92\xc2\xd7\xf2\xb9?\xd7\xefw\xf7\xdc\xe0\u0600\xaa\x16\xf2x\xb0\xf6\x9e\x98\xea,)w\xd8jkGR\xa7-Π\xba\xef+\xae\xfd.Q[\xac*uJ\\\x8d\xa9\x06S\bP\xa0\x10\x02A\xa03\xc7+\xe7\x0e\xfbW\xe6/;e\xc6k\xe1\xeb\x99\xe3\x9d9C4\xe6\xb8\x04\x9a\xa4B6;\xc7+\xd3\x13\x1a\xbe/\x96\x9e(\x9f%\x01O\xf6\xb9\xc9\xe8$d\x19Q\x93ɂ\x90\xa1\x8c\xae\r\xb3~\x14\xd6\t\x04TG\xe3\xb9\xf6}큁\x86e\xad<\xce}\x19\xb5{\x81\x9f2\xbd\x9b\xe2y\xcb\xe1\xb5\xd4D\xb6\xc8ڥ\xa4\xddF\u007f\xe3j\xb2\xa7]\xc6S\xecZ\xec\xe4\xfa\xbb~{\xb6\xb0(E&sk\x04\x1a7\xf0*\xaaM\xf3\xd9\xef3\xac\ne\x15\x84\xb0\x9c\x12@\xc5;\xaf)\",\xfe\x02\x18\xe9\x90N_\xac\xe9\u007fhab\xd2'\xe2\xe0ڜ\x84\x1c\x9d\x1f:\xae\x90\x0f\xe5\xf3ɳ\xb7\xf9\x83\xf7\x97E\xd6>L\x1aMb\xe4:\xda\x1a\xbd\xa6x\xd1\xf3\x13\xa8\xd5\t\xab\x12a;\xd0]\x88\xa7a\xec\xc9V/\x03\xb2Xe\xe2\x91M*3\xbei\x01\x92\a\xa7\xf6b\xaf\xf8\x95\x8e\xa2\x89\xd6\tF\x93T\x89\x1d\xe4I\xaa$ɷ\xf3\xaas\xd4\xe6\x8b\xce|H\x1f`]\x93\xed]\x9f\x837v\xf0\xd1\xcb\x1f\x0f\x80\u007f`\xfe\xb6\x8e\xcf\xce;gk\t\xa6\x15\xb1\xee\xd0\xc7\xef!\xf0\x99\xbcLt2\x01\x9f\xb9A\xbf\x80)\xaf@\x1d\xf1\u07b8\xb0r\xb6\x11\x15\xc6836\x18\xcc\xdf*\x98\v\x82^ʹϴ\x81\x15\xef\x80e\xfcxB\bS\xce4\x8f\xf5\x8a\x93\xa7cB\xc4y\xb8\xfaY\xffe\xae\x91Gc\xc2\xc4yY\xeb\xa0O\xa2&yDU\x11\u0098\xf2\xfc'\xcc\x12\xe1\xa2\xfd\x92\xe9ߢq\xa3\xd0\n\xc6\v\xffT\x86\x0e\x85\xbf)\x92\xfaa\xa3Kv\xd0\r\xadѸ\xd1(\x1d\xc3\xd0\x02\xb0\x95\xdd\xc9\xddN\xb6S\x12\x9c\xd5*\x9c\xf6\x9e\x98u\xa3t\x03i\xef\xd4c\x1e-\xdf|\x96\xce\xef\x981v\xed\x97\xddN\xd4\xfa\xa1\x96e߳A\x1a?\x8f3\x1e\x1f\x92\xda1\x05\x83U\xa2\x1a\x88\xd8\xd7\xdfh$'\x93\xe2E\x8e\xe3\xe9\xb1/|\xe25\xe4\x8cgfB\\\x12X7\\\xe3\xe6k0\xf8\xba\xddr\xb2SZ[SX\x01Ɩs\xaa\xde\xc7\xe8\xed\x19\x9c\xc9\xd4/G^\u0094a\xedJ\xe6,1\x11\xbb\xab<\x16\xeb4\xb9\xa6\xe9\xdd=\x89\x92\x19cyS\xa6\x0e\xbdԣ\x8e\x9d\xc3\x1b'1迍\xfa\x10(\x8f\xc9.\xab\x02\x84\x0f\t#\xf3\xfd>s\x03gaLN\x94\x87\xde1\xfbR \x9b\xb3\x83\xd6\xcf\x03\x15\x98\xe5\xd8\xffa\xb7bj\x11JzU\xd9db\x05\xbaS\a\xe9\x8a\xd9\v\xb1S\xf1\x0f\xe0M(ws\x03j.\xb2\xc6(G\x82M\xcb8\xc0a\xa3~\xb1\x94\x1aUō\x13=$i\xbf\xe3'\xf1\x17;a\xe1\xa70~\x0f\x96\x11?\u007f\xce4\f\xb1c_\xac\xc2\xdelf\xaa\xcf\v\x03\xdb\xed7c\xa5M\x9e\x84:\xbe\xb6\x12\xf7\xcc!\xdbo\xbfq+\xef.K\xb5\xd6\xcd\a\xe2\x18_\x0f\x13\x1d4\xe1\x9a\xc1EZ\x9a\xdb+\xf7r\x97P\xec\xf0\xfeE\xba\x05\xcd\fR\xb8\x84J \xfd\xe3\xf2\xcb\v\xd4\b\xbd3\x1f\x11\x14f(q}X|X\x1e\x8c\x89&7\x92\x17\xb6U\xa0\xa8\xae\b5\x03f7\xd1\x184yhwW>=\x94\vv\x93\xab\xa73\x96\xfff\x1cL\xf3\xd8\xe9)\xbdp\bQ\xdf\x19\x17n\x8a\x8b\x8b\x8aڹÍ\xecT>?\x10-\x10\xb35\x0e\x03C+\xff\xc7\xe4\xa3)\xc7\xd5䪿\xfd\xb5фU\xdc5\xd3\xc2K\xf6Qd\xfcr\xc49P\x15\xf6\xca\x1dW\x92\x8d\x9aCz\x97\u007f\xee\x14\x9f;\xb7\xff\xf6\xf7\x83\x85`8-=\xc3\x18\\\xb6әߕ\x16\xdd=\x1c\x1d\x03n\xb2\x1d\xf6\xc9\x06Q\xb093\\W\x9ec^\xe0\xf1&r\xe2\xf9\b\xdb\xe6\xcd\x03w\xbefR\x1a\xa5f\f+\xdes\t\xc1[ܗ\x9d\tڧ\xbe`Cgo\xdfz\x97\x1f\x15L\xe2\x92\xfcm!\xc7\xdcL\xaf\x0f\xbd|[\x12\xf3\x1c5\xefY\x15lc\x88\x87\xcbj\x19\x87\x19a:\xafİ8\tC\xfd\xfb\xf1g\x16O\xef\x8cب\xacx(\x06\x8bЍ\xbeo\x9f'sC]\x1d\x98r\xf5j\xf9\t\xd9\xf9\xd4\xcc\n@k\\\xcc\x16\xa6\xba0R32\xb7\xb9\xa4\n}R\x16\xa7,\xaa\x11\xdf\x1f\xfaS.i\x02\xf6b\xb6 \xcd\xe5X\xe6\\\xd2\x1c_\u0600p$\xbc\xc6\xf9\xa8\x91\xeb'R\xbbB\xcb%\x98\xef\xc1\xb7gK\x9e&\xa2\xf8E;\xa6ו\x87K\x05>zg\xa4\x1d\xe4Lf\x1ep;\xe0~\x90\xe17\x89\xb1Q\xae\xd6\xc28辑\xe1\xabfnt\xd3/\xf6{\xc58\x80x\xf9\x19\xe4\x93q\xe4l_\xc2\x17\xc4 g\xef\"O\xbfO\xb9\x1f`\x80\xf1\xecbV\x86\xa14§XB\xfb²\xc6=\xaf\xaf\x03\x1d4v\xbd-:\b\xbd\x9c\xa4g\xfaN\x8f\u007fY\xdf\x01\xd7I\xd8\x18\xdc\xf9\x1cM\xa0\xf34\x02\xa8V\xaal\x10N\x0f\xd6\xef\x00P\x86\xdc\xf5η\xc0\xd2\xc0\x90\xe0\x82\u007f\xf5\a\xbf\xcbI\a\x8a\xdd\xe1S2NL\x9b\xb6\xa4\x0f\xa8\x16\x93(\x15\xbb\xc8\x1e\xa4\xab\xb69\xf0\x19\xe5\xe6@\xb9[|\xf0\xdcd\x93\xb8c[\u007f\x97\xc0t\xb5\xc5ˌ\x1d%\x05\u007f\xedE\xfe\xaf\b/6\xae\xad^\xf1c\xec\xb7M\x9f\xbf\xfd\x9b\x013~\x94\xae\x9b\x19\x92盨yFg<3\x81W\xfb+'\xf7T]\xfa\xd2(+0\xeb\x8d\xfa\x9f\xe9\x84*q@\xbcڐ\x91\xa5\x97\x95>\x85F\xcdH}\xab\x03\x97f\xb0\x1e\x12\xa4\x87\xf32LV_\x94\x94H\xafQ\xf6\x05\xd1\xe0\x84\xf1\xc4w\x91\xaf\x91\x87DK\xcdE=\x8b\x9eB\v\xea\xa3\xca\uee6f\xd88\x8f\x84\x80\x00\x17J\x90\x86\x81þLtOn\xd4h\xcc&\x10\x0fLf\x8d\xe6\x82\x110Ӊ>\x1a!\xf0\x99{\x00\xbf\xc4d\xa69hf\x93\xd6\xfc \xfa\x819՟\xf8\xd3@|\x1f\xe6C\xea\xd7,U\x86\xba\xc8\xcf+xm_~\xfe+\x14\x8dP\ueaf4ѓ7c\xcb\xec\x17\xa4\xe1\xa7\xfd\x97\x01\x9ed\xa0\x04Y\x8cl{\xe6\x06\xaa\x1a\x93\xff\x9d\x83W:CCB\x1d\xa1J\x02\xfb{~\xcc\xe1Т\x8f:e=\xd6V\xc1\xe3\xb8\x1e\x88\xd8\xefZ\x8d\xdbG݇\xcb\n\xf1\x15\x1d\x14\x89\x0e\x88\xaa\xb0O\xd6\x01\xdf\x10\u007f,\xa2\x80\x1dͫ\xf4\x9bH\x9925\xf8\xf5\xba\xf5\x18g&Ǡ\xf7\xb5\x8a\"\xa3\x88߲\u007f\x12\xa3\xa7\x05\x8b\x88\x1f8\x1f\x88#\xbe\x06\xbd\x9fK\xd6ךj\x89l]\xe8\xe1\xd2`\xf4J\x1fcD\x961\xd2G\x1e\x01\x9e\x19\xcf\xc4Fz\fLtE\x0f\x8d&\xcb\xf0\xc2\xe8\u05f7\x1a\x19\x92\xc0j\x90-\x930\x18H\x84\xb0z\xdb\xe8\xe86\xecf\xacL\f\xec\x8cxͿS\xb6ڧ\xe4\x88r\xa2\xa6L\xf9:\xc5\xd3!p\xd8=\xe6\a]\xf0\xd8\xca\xf0\xaeh\x83\v\x9a\xb4\x1a-O\xbbU\v^\x15\x8b\xd8db\x91\xb9\x88h\xb2\x96\x93}\"72\xd1\xf9\xef\x82N/ϸ aΈ\xb6\x88\xd9Z&\x93\x8e\xf3\xb9䩹\xb1)ظ\xd9\x15\xe3︘zuq\xb0f\x17,\x02?\xbdލ\";Q\xac\xff\fr\xf6\xac\xac| -\xaf^\x9b\xc5!Ȣ\x11s'\xb1\x87\x84\xad\x01Ru\xff\xbc:6\xd6\xcaW\xb6\x9c=P\xbaX3 \xdf-\xa3S\xf7ze\x95r\x91\xf5uu\x85\x12\xd4a\x04-f\\-\xe0\x01\x81\x90\t˖R\x02w\xfc\xb6\xcdve&\xe1&\xba\xb8\x8aa\x98N\x9b\xaaN\x91\xea\x18n\x18,\x06OZ\x91\xff\xba\t\xe3\xc2!\x01ߚ\xb6\xf4\x00\r\x13\x15Z㤥\xf6\x8a\x88\xa8\x12\xb4\xd49]\xc8d5\x19\x96CP\x04\x89\t\u007f#\x88\x8c\xc18\x94\xf0\fc\x9eA\x91\xce~|\x1e˘\x8a_\xa1\xe2+G{Ϻ-\f\xbaE\x8e\xf9\x84\xc6ت\x8f\x1fS\xee5\xe2Sv\x98\xb7]\u007f\x1a\x1e\x9a\x93螺P\x00\xef\xf8\xfc\xf4\x13\x80\xeb\xe2'7gq\xcd\xee\x8eڲ\xc4\xc4\xc6j\xbb\x82g\xca\xd8\xf3\xfb\xd7\xce9\x1f\xe9_\u007f\xacYI\xaa4k`\x89\x8f\x9c:\xd7hB\x97K\rIh\x9f\xa9\xc1O'\xed\xf9\x9d,\xcea\xcb\xe0\xe4Z\xa3\x89\x97\xc2(8\xf1\xc7\xd7Y$\xe9,Q\xe2\xaccq=\xaf\x16\xdd\xf5\xf1l\x99\xd7A\xf8\x1e\xa1\x88'\xe5rHڬ\x05\a\xc9q\x16ׅEE\a%Я\x83'\xc7j\x06:rS\x92\x1fȲ{\x14B\x0eW\xca\xe3\\q~\xbfp\xe8\x83 \xc5uÂ\x8c\x8c\aU\x8e+\x1c\x9e\x94G\xe9Gg\xf6\xcc\xd0\x1d\xfc\x1fEPTt>3\xb3\xad\xb5\x00\xfc\xfa\xd1\xc1\xd6\x1a\x9f\xaf\xd3)\xae?j\xb1\x064\xb7\x0e\x1ez$X\xb8A\xb40=m#xuMO\x8b\xd6Dit\x9b\x8a\xd6֧k\xce&8\x93\xfc\xbc\x1e\xc2no\x81O$\x99:w\xc1\x9e\xe3ɭ\x13\x12\x19\x89\xca\x0eO\xcf\xc5\\\xff\x88\xcc\xd1\x1ca\xd5\\\xa58$r\xac\x18^H\xdf\x00\xab\u007fJ\xddy\x89\x00\xef\xf1\x16c\xd1wGL\x86\x86\x06\x83)\xa5\xbb\x98\x95\x98\xeb\x16\x95\xc7\x17.$\u05ce\xadkuw/I(q\x87\x8a\xea\xeb\xc2&\a`g\x0eu\x17\x1e\x89\x88\x9d/_\x9c\xbfx\xe1\xe6\u007f\x81\xeeAݍ؞2N\xe7\x8bf\x8dIk\x82);\xd3\xfd\xc8\vة`G\u0081\x8d7\xef\xb1\xd9\xee\u007f\xfd\xd5\xe2\x8e\xe9y\xe5\xe6\xf7\x9c\x88\x99\xaaO\x97\xfbr~\x83]\xcaH\x93\v\xf4&\x85\\\x1a#\x95C\x05Q\xbb\xa0\xc9o\xb9S\x96\xf1\xc0\x9f&\xbc\xf7\x12\xff\x95\x8c>y\x9fb\x01\x9d\xf4H\xe8\xa9>@\xd9\xf70\x9b1\x86]yA\xfd\xae\xc7(\xdcR\x1eo\x1b\xcfs\xa8\x9c\"\x03\xee~\x9c\xe9\xeex\xefb\xf5\u007f_e\xdcS8\xbc\xed\xc3$\xf8\xdfFY\x1c\xfe*\xc1\xf2\xa2\xddo\xbc1\x12\xa5J\xe7\td\xdb\xf6\xb5\xd4ɵ \xb2\xb0`GEV\xc7\xf23^NЛ\x93\x93\xbd\xb3<\xb5c\xf1\x1d\xa5\xb3\xb7\x10\x8c9\xb2\xcbX\x90\x15S\x1e,\x81\x05\xc7\x15M\x8c\xd1ٴ\x981\xa0)\xd2\xd9\xec-\x8eѵ4\xc28#\x17\xb90l\xc7L\x8a\xc3aL\xc9$ڋ\xf1\xecـ\til\"[9\xc2E\xb8\x10\xe1\xdd\xc4B,\xb2\x9e'\\\t\x17\xa1\xf3}\xbeE\x9f\xec\xa6\x1d(\xae\xcf\x1f\xed\xb8\x86\x91x^\xe0<+(\xc7wS\xe5\xe3'\x13\xfb\x0e,\xe2\xd3t\x0eϱ3\xe3a\x99TO\xfc\xff\xe0\xbad\x16\x13\x8c\x87\x1e\x90\xf4 \xfb\xcf/T\xc7_\x9f\aЫ\x86\xa1Oٔ\x1b\xf3\x93ӎ\xa2ٜ\\\x99ؿP\x82\xac\xa4\xfa\xeb\xcc\xe8b|\xd7\xc5O\x95h\nh\xbc\x1bO\x8e\x90M\x92\xd3\xfa\x14\xb2SN\xc2\x10\xb6K9Lp[\"3>e\xb3#~c.\x1f\xd9\x1a\xef\rv\xb9\xd8\x0e\x1cު\x93\xf3\xe6Nnx\xc1\x1d/\u007f5F&\xab\xf9\x9e\xf1)`\xf2\\\x1e`T\x8e\x9d\xdeV\"Ff߰\xac\\lC̈\xb69\xec\xf6VD\x8bn+_V\v:8\x96\xbc\f=\xd39\x80ӄ\x88[\x99\x10\x90`\xa9ϳG\xd5%\x1c\xe8\xa8ג\xe2\xec\x02\x92\xe1U\xf6\x85a?\xe2U\xf6}\xa2\xc1\x88\u07fc(ܤ\xf9\x90=\x96n\xcds4\xb7\x89Z\x8d\x85\xce\xdf\xc5\xd8\xc3\xe9h\x92\\?\x84\xe6O`irIa\xed\xa2\x1e\xfe\u007f\x04\xfe\x04\xf5\x04X\xae\xd0\xf8\xfb\xab4*\xff\x9db\xb5e\x1b\xfc\u007f\x0fZ{\xb8\xd2\xd3*\x14\x968\xe1q\x19x\xe0\ffEe\xe0\xc8:\x84\xa0\xa9t\xaa\x91\x03a\xear\xd8\xe9Z\x1a%PV\x1c^\v\x85\xd1)\xd6&F\x19\xa9\xea\x05\xca\v3\x8f\xc0\x8d8y<\x17\x11{\xfa\x83\x81\xbc\x96)n]0\x8f\xff\x891h\xa2\xa0\x8d\xe9c\xdcƘǸ\x8f\x99PZ\v6\xafJ\xc8\xcf\xccj\x8a]7tVGOӛ\"\x13\x80\xf2r\x91\xff-\xbf/U<\x18)\xbe\x82\x95\x8c\xfa\xed\xec3X\xe6\xffa.Il\xa8\xb0o<\x0f#\x17\x88W\xf1\x18\xdfS=eb\xd0\xf3rIA?\x96Y\u05fc\xfa=\x19o\x9c\xd3\xfc\x94\x99\xbap,I\x16W\n\x9f{\xce\bϬ$\x89\xf5\xff;\x13p8z\x15\x04ҫ\x84\vt\xee̲]r\x8c\x05-\x98\x87\xca-\f\v\x0e@\x03\xaed\xfd\xac\xa8\x0f{/.\xae\f\xf0\xfc\x9f2\x86\a\x18\x89.\xae\xe9Րpm\x049\xf7\xa7\xa9!Đ\xadv,\xc4cN\x0e\xd0e,\x94\xa9\x81\x8c2\aY#\x1do\x9f\x8e\x93@7\xfc\xf0\xe5M\xfe̯R\xb4\xda\x0f\x81n\xd3k\x93]㷋\xb9\x85O\x04B\xac\xe7\x1f\\I~\x9cKs\xb9kMh\xbc,\b}SZ\xcd\xc4\xcd\xf0\xd1\x06\xfc\xe1\xf1\xe4\xdf[VZ\xc9͇\xfbb&\xa3+\xb4(d\x1em6\xa27\xee4c\xdc\u007f\x02&\a\x9a_\xeev\u007f\f\x15\x9dk)\xd7\xed\xf7r\xabБK3>\xea\x11]鲩}܅\x1e\xb1~\xa7\x8a\x0fW⌎k\xb7\xfc\xf5ߘ\x8c\xb7X\xb3\x10\xa8\xc0\x9b\x1d\x9a\xbbс=\"\xaa\xee\xe7\x89\x16\x8a\xa9Ucg(\v\x91\xb9\xa5\xe0\xa9\u007f\xe9͈\x89\x0e\x03\xab\xec\a4\x9c\xb6\bkt\x18\r\x8eE<\b\xfe\xa5(\xdd\x02\xd4 w\x1a\xf8F\xb4\x15\u0088$&\xdc\x05U4GMׯ\x92F\x9b-X\xe9V\r\xfa\xb3ܕ\xc13\xbf\x95\xf7D\xc7Tz3\xd5\"\xe6\xe7\xe3\xf8\\*\xf8\x04\"2NU%\b.\xcd\xc8\x11\xde\x10exo$\x9bD\xe1y\x1c-\xe6\x85\xfd\xb4\x858!\x8f\t\xcb\xc5\x0eB\xcda_I\x11A\xe8\xc4L\x8e\xe8\xa64\xca\xd8{\x88\x8a\x89\xff\v\xf2'(\xf0\x82b\xf4 \x17\x0e\r\xb7\x1fg\xd9ԫKy\xbax8\xca\u007f2\x9b\xb0\x9d~\x8dv\xa28`j\x1bټ\xb9UW\x9c\x84\xa3\x8dk\xf9\xd2&\xb4`\xdd\x19\xed\xac\xce\xef\x90\xce\xc5i\x8dm.\xbd\xd1h\x81_\xcd\xc0E\xa0\xc0\xafH},ɝJ?$\xbf\x93_%r\x15&\x1a0\xaa\x01\xa1\x98\xd4\x15%\x95ɎV\xbb\xbdg6\x1b\xc0\xfeE\xb6\xb0\x18f\xe1\x05\x9e\xb7EbJ\x03wNs\xc0\x12\x84\x8d9$ebܛ\x1d\xa3h9\xc4\xe1C\x11\xb2\x05\x14\x01]Hi\xa0I\x9d8\xaf\x93\x9e\xba^\xb1@\bJ\x0e\xe3\xdbnw*i%\xaf`5\xe3\x01Y\xa3\xff|\x97\xefK\xcaXpl\x1f\x9b\xb0\xe0\xc6.\f\x8fh\x1dw?\x98\x06[Wf\xb5V\x91\xec\xe50iG0\x99\xe3\xc8r\xc0\x8e];\a\xfd>\x97\x8fe\x0fb6\xdf\xfc\xb6\x91\xdfSB\xa5\x01(*(\xe6Pv\xae\xa4\x9a`\x04\x1eŔ\xdaQ*\x0f\xb6\xb8\xbb\\\xcc>\x1b\x88,*2C\xc0\xc6x\x14\x17\x8e`L\b\x8e$\xc0j\xb4\x98t\x16\x85\x8c\xe1I\x92S\xe5\xe4\n\\ᴧ\x04\x11G`\xd1\b=\xee$7\n\x13t\xa7\x04Z\x02\xa3+\x8e\x89(\xab\x86)f\x98\x84V\xd81\n\x8e\xda.\x17n &u~\x12\x1c\xd0L]\x1c ͕\xe5Z,5\xbe\xd8\xe9\n\x85]-\x13\\;R\x1c'.\x1e\xe0\x9cҵ>\xd5\xd4-\xb39\xaf\xbal\x85Z\xa1/\xcf\x00\x85\xf1\xa0\x120l\x8e\x11\xc0`\n\x8b\xf7j\xc8\xd7Z2\x00Qs\xed\xf3Jմ\xe9\xa9Zys\x86-e\xbaN\x90K{BLe\xb2\x1e\xd4[\x99\x81\x97\x99qVe\x9bz\x0f\x1ee\xabH&\xa9\xda/\x95\v(\a\xeea\xcay\xd73\xd1.\x1c\t\xb6)\xdc\x14&\xfbC|\xd4$Y\x05n\x97\xa5\br#y(\xb7^Q\x95\xda\x195\r\xfbg5x\xfc\x02\xcf;\xee\x16d.E\xe2E\x01\x03\x11M;j\xc0=V\xe4\xd95\u007f^l\x93\xa2\x9bu\x81c\xa7\xe5+\x06\xab\xd3mnH\x119v\xf1\xfb\xd7\x06\x9b\xd3mI\x14y\xfa\xbaV\xb0\xc7\xea\x96=YDlI6\xb5\x9a\vK\n\vg \x1ea\xe8\xc1\b\x99\xa6\xfd+[2\xbf\n\xef\x0ek\x1c\xb5\xca\xfc\x92L1\x13{*\xa0\x948?\xca\xf5,\xf0\xb4hn\x8f\xb7\xd2p\xc2qC\x8aR\xa2\xa0'\xff}<\x9f\\\x92l\x11_\x15\xe59\xbaa}L\xbcU\x98\x88\x89\xaeJ\xaa](\xc2䭵eo\xf3\x9f\xdd\x1f\xe7Ie\xd4\xd2E\xa8\xc6\xd8\x18\xeca\x94\x81\xbd\xbf֨R~\x8e\xac\xee\xd7\xfe\xa3@V<\x80\t%\n\xb5\xddI\x93ڮ\x9b\x06@\x89F\xd4݇5\xaaR\x8an\xfb\x0fT\x11b\x997r\xbd?\xe3Rb#x\x1cx(\xe5\xd0\xe8\xee͊\xb6\xf5Q\xc0\"\xdfʀ?B\xa1@,\xb3\x80\x18E\x96\xe9G\x85?\xc2l\xac?\x99\xa4W\xc0\x9b\xa7\xb8\xfd\xa4$a\xe2`\x1d\xc4\xed\xcd\xc5[\x8e\x11\xa4\xee\xbcԕ\x87\xab\x86\xad1?\xe8+\xd6bx\xa3*x~aP\x9a\x8e\x91\x94\x03\xeb0\xa2Y\xa9\x94r\x98\x9cU\xe68W\x17\x91{\x03\xb5X\xa65\t\xa4\r\xe4\x9cN\x84;\u007f\x90/\x9a(OY\x1cV\xb0n_\x98(\x9b)\f\x10\xd6\xf4\xb1\xb6\x89]\x8f2\xa9Oq\xc5k\x02=\xcelR\xe3X\xfc!.y̅V\x8a\xed\xef%4\x0e.\xfe7\x06\x9f\t\x9e\xd8@2/Ѝ\x1ea\xb0\x98\xac\xa6x=Ǻ\xb0\xf4\xcaג\xd6\x04NKb\xb7 \\\x84I\xdf\xd3\xc4\x1a\x9am0Q\xc7e\xed\xf1\xc9\xc5T\xdc-\xf5\"\xdbo'\x98ߗ\xc1\xbb\xf5S\x8b\x82\xd2.$\xa8\t\xd5˭fݯ\xe2\xe9\xf0\xc3c\xaf\xbdБ\x12oָ\xe0\u007f\xf1\xb0\xf5\xf46\x83\x05\x02YX\xa5\xc1d8{\xb4\xbbU_\xc42`\x86\x99|\x17\x96&\"D\x18-Pl@n\xb3\xd7\x1b\xecj5\x83\x89Ԓ}\xffG\xdcȚ\xaa\x1dh\xbc{\x8dNL}\xd8[\xa0\x90\xf1\xe9\u007f$;\xb7j\x05\x8cI|\xf1\x12\x06\xf6\xb9\xee\xe9\xd6B\xf7\xb1L\xe5\xe0\xe3\xd8S\xa0LDx\x97\xf9\x80\x90Wʻ1{\xf9\xcb\xe2\xc7;\x05&\x93\xa5(\xc8\xe3\xa6)\x11\xaf\xac\U000ce720 gS\x93s\x9e\xf6\xab\xbc\xc2Ť\xdb\xca@\xe6k\xec\xcc\xe4\xf4\xf2\x86TknVp\xb0O3N\xfd\x90\x8e{\xd4w\xb2\x90X\xf3\x10\xd6\xe8\xcb_\xcd\x04\x90\xfa\xf3\x98\x05d\xeb<\x96(\x89.\xcea\xf9v\xd2a\xa2|\x12\x19\x9f\xd5\xea<&)f\x1b\xbf\xd6C\x17P\x1b+P\xca8\x1b\x955R\xcb\xe8i\xab\xf6/b&e\xcc\xfb\xbf\x89\xea\x16\x16\x11\x96\xda\vP\xd8b\xedwwk\xf6\x9e\xcač\xe0\x91\x1d\xd4\xf3\x11\xd2\xf8y\fW\u007f\xbd%\xfdk\xf9\x82B4Y\x8f\x92\xde\xc3[~\x1a\xc1\x85G\xf9\x18t[\x8a\x98\x1b\xa7\x9e\x04\x8f<\x94\xcbR\t\x9f\xd6H\xf3\xfa\xf4\\ώ\xa8f\xd5fr2\x81\xe2\xd2v\xb2\xf1X@.\x027RM\x06\x84i~\a\x8aϙg\xa6\x14\xcf5c\xb9\xcd\x18Lr\x8aW\x06\xe3\xfc\x16\xb4LGuY\x10B\x84\xc1\xc0|\x04\xa6\xa5X\xf9\xbc\xb9\x16J\xc90\x85\xa5\x1d\xf9(\x8c\vfb\x96rDk\xf6\x88\xf7ޫ\xb9\f\xc1\xc9l\x99\x04\xe5\xa3\r\x04C\xc1L\xa0R/\x8a>\x02!\xaa]\b\xf3\x8a\xad\xe7@m]\x91F\xe9\x9aC\xa3\a9{\x92쎴$gz\x16\x98\x90e\xb2J\x1e5\x8d\u007f\xda[P\xcc@\xc1\x98\x0e\xb0\x03u8\xb4\x1f\xbft\xb6bX\x17\xa7%\xf5\xa3(\xa7\x02B\xc8朖\x98|8\xb4!^\xa7\n\xad\x82\xaa륗\xa0\xa9-E\x99@܍\x983-\xd7-A.ВVpJMcF\x16\fH\x99\xf64\x04\x82\xdc\xfa*\x04\x00ɚ,]i\x01b`M+)ۨHr{\ue5a4x\xe1nu\xf3\n\x84\xae\xc9\xc7\xe3o~\x8d\x1b\"{M\xb7\x90=\b\xbd%\x83\x9f\xddՕ͝\x9c%\x9b\xde_\x9a_'^\xb3N\\ߐ \xae]\xb5\xa6V\xbcB\xc6\x16\xfd_\xa3i;e\x9c\xd0f\xc8Fϭ\x93vvKS\x9e-\x94\xfc\xf2\xbd;K%\a@\x97\x8d\xf2;\xb1\xe7\xeb\xf3!AF\x17W\xe8\x98\u007f\xf8\xc2\xde\x0f\x89rQ\xb9.\xa2\xb77BW\xee'\x85Ҧ_\x8b\xd2/^\xac\x8f\xba\x06\xfc$\x9c\xe7\x01\x11S\xa6D\x04<\x97p\xce\x13\x05g\xe1۷A\xb2Y\xc0\xe5Z\x9f\xd6襉\x8eROROC\x1ay\xd5O%\xc9Q_\xca\x115\xddΌ\n\xb1\x14\x16Z\x98i\xbbk\xb1\x9b1\x89\xa3\r{\x03\xc7$f\xd3\xd1\xeb1&\b\xba\x94T\x06\xfaP\x8eB\xe7}1\x87\xa4\xa9\xe8\x0f0[0\xf1,\xfa\x000\xf1:A\x91\"\xf8]pc\xcc\xfd\xe0\x19\xfc\a\xc1\x0fz\x991\x0fbf\x1b\xe6\x86\x05\xed\xe2ޏy\xbb\xf7]̻\xfa\xf0w\xc1o\xf7\x95\x12<\x92\x89)\xfe,>Y 1\xc7O\v\xa6\xae8݄\xb3\xb8\xe3&uz\t\x18\xff\xd3Z\x8d\xb4\xba\xb0\x96\x04W?\xb4\xe6\x15\xaa1Ǽ\xb4\xdcS\xb2\xf5\x92h\"^Bt\xa7\xf9\x8d\xce}R\xf0\xa0`\x05\x9d\xb2\x91r*\xf9D{\xe8\xd4PN\xa7-\xba\x1f\nk:}\x9f\x87\x0f\x1a\xa4O\xb7\x12݆\x8b\xf1\x9e\x04i\xad(\f]ңj\xc7\xd4\"7'|\xf4d-E\xd7ډ\xff\x12\xab`\xdf\x19eUs\xf9Ǫ\xb0\xa9Oy\x10\xbf%\xfe-\v,\x15\xe6\xfd\xeb\xa6z\r\xb4\xb7\xa8L\x06\xb50\xa5\xa1\x9frc\x91Y\xa8\x9c~\xf1\xc1A/\xd3zP\x9a\xecD\xb0\x06*$\xfe\xe5\x90x\xe83\xec\x91J\x0f\xb3E\xa1\x94\xec\xda~е\xcap\x93'\xc8\xee\xed\x8d\xe7\xe3%\xc6\xed\xc5p\x8d\\vX\xaf\xe6\xd6\x17\xe2;\xce\xd8\xd2izW\xb9\xd9($\tV\xd5\xd7\x10\x0e\xce\uf3e9̊\x91\xd3M\xc1Gݘ\r\x1d^\x1b\xbdgT\x9f~\xb1E\x02y\xaeû\x8cűe\xdc!\xb1\u007f\xd2}\xd6t:\x83\x17\xcbhU\xa5\xcb͓t\xb0\xb5\xfa`]XRB\x18\xa7\n\x12\xb6bl\x0f\xf9\xdb\xc6\x15\x81\t\xb9Fcfvwgv0aq\x82\xa8\xe1ZXv\xe7\xed\xb6쬹\xf15\xd5\xf1 \xa6'e~uU\xbc\xeeB\x00\xddd\xa1\x15\xad\x9f7m6\xe4\xebt\xef\xe8\x18\xeeD\xbd6\x86\xcfS\x94\xe0\x04\"\xa6\n\xc8\xc7\b:Dc\xdd\xc5?Ө\xbdd\xd554\x80\xf6e~\xb5\xfe\xfe\xe6G\x0e\xff\xb2\xf4\xcbƗ\xf9;\x1e\x99\xfd\xfd\xfdj\xf5\xb6#\xb9Y\xd4\xee\xb75એFc\n\xba\xb6h\xd84\x9c\x86>jBo\xc0\x94\xfc\x82\x9e\xca~\xb1`\x16Nހ\x0f\xdf߇R\xfa\xd1KZ\x85\ay\x1f҃\x8e,#\xfd;ě_\t\x83\x12\x9f̚\xec\x03ޙ\xb2\xb8Y\xb9\xae \x8c\xcfFr\xa9\xadW\xcf\xecC\xefG\xbf5\x9a\xef\xc1A\xd3|{C@\xa9\xff\xab\xe2n\xe2)\xdd\xe7uLl\x8a̯'\x93-\x86\xa10Z r\x04\x99\x1d\xa8\x84!\xe8\xb9\xf6\t[:\xd9\xf9\x02\x8b\x05\xc4#\x9f$٩:\u007f{\x04u\xe2R\xa1\xe9ğ#\x12\xa7u\xee\xd7\x1e\xa2\x10\xd69\x90\x88\xb9O\x8b}\f&ĵ|\xa46W\xa5F\x1e@\xa6\xaa\xa1\x83\xfa>T\xb9\x9f\xcf\xf7\xbfF2\xf1\xf7|\xca\x1b%\x0e\x167Zح\x8a\x06v·\xf4q\xf8\xd6~i\x81\x1a)\xcc\xcf\x19\x8cja\xb4\xca\x18\x1c\x15\x8e\x9e\x14\xa3\xa3\xa1\ueb64\xe5MnX\xd6SWV\xb7\xba\x95Q\x1a8\xa8Y\xe7.\x87U\xff\xe9\x87wA\xe7\xaa\xea\x0e\xad`\xc9\xd5L\xf1\x85\xc8Cb\xd1!\xe7\x16\x9bTŁQX?\xbc\xc2 \x14`\x12ݍ\xb2\x06\xb90\xc6G\xe1\x86\xe7\x1d~\\\f)\x1e\xf4\xcf\xd7%\x1dy\xd9\xc8E:\x1c\xa0=\xeaDl\xa2\x8d\xff6V\xb3`\x98\xed\xdf1\x80\x1c̢֭{\xbb\x19\x8e>g5\xe7\x0f\xa0f\xf2+\xdf̌\xe2}\x12lF\xd2\xcc]W\nX\xf2\x82\xf5\xc1\x0ft\xab\xf9\x066\xf9KnbҚ\x12`\x87\x96h\x8a\x1dR#\xa6\xa6\xfaT\xc8\xf8\x8cޝA\xa90\x8cr\xdcR\x0f\xc1\xcd\xe8#4\xfek\x88Z\x03\xda\xe5:V\x13\x80\xfc\xeeB\\\xebA9\x05\x8f\x0f\xf9\x19i\xdd\xf0\x15\xed\xf6\xbeM\x06\x12>q8ҽfdO4\xf3\xc0\xdf\xc1\xe3\xc1x㤏\xb7q?G/\x8b\xa1\xd1P[\xfe\x8de\xbd\xf9\xf2\x99\xde\u007f\xc7ߖ\xc3\xccZU\xf0r[\xd4h\x02I\x1c\xf3\\gA@О\r\xf9\x05h\xf6\xa9\xfdD\x1c3\a\xac\xe1\xb9-p[\xef\xb6\xc1\xed;D\xeb\xb5\x1b\xd8\xe6ᾼ\xf5f]&\xefHa\xd3\x1a\xaf}\xbbݓ\x03J\xd3HQ4\x90\x8f\r\x196>y\xb0\xcdO\xbe\xa8\xd8c\t\x19\xdd9{ۄ\tˎ\x8dXp\x89\xa2*u9fE\x05.\xe3,\"\x8arj\xaf\a\xff\xec\xe2\xf7/fb\xef\xc3\xfeΊ7c\xefW\xea\xb9\xff\xfb-SPL\xa4t\x03\x9a\x8a\xec&-\v\x9f\xe8\xed\x15%ư(\xc5\t\xda>\xd2ݠ\xc3\xe7\xc7\x1f\x9e:u9\xbd\xc0\xd6\xf3b7p\x8cl>\rE.\n\xaf\xc2\x1e2\x8f\xb2\xbd\x97\x8c\xae\xeb\xeb\x0e&Z\x14\xaeh\xf9\r\x82\xeb=A\x83\xf1\x13\x95\xfa\xd5լ#Y|\x1a\xea(zc\x81\a\xe0\xbb\xc0i\xc6\x12\xc1\x04\xa4=\x9b\x8d\\\xf9x\x18*%\xbf\xa4{P\u007f\xf5#Q\x1a\u008c4#\a\xc6\xd3\xeb\xc1\x9aڡ\xd2\xd2\xc1Ҳ!\xa6\xd7`϶+\xff\xb6Y[kI_\xb7\xca(s\x1fc\xe4\xed\xfc\xde_\xdbk\xb6!=\xa5\xb99%\xb5i\xac\xdd\xd9\xd2\nv\xdc-\xd5^%;\xeeqa\xbe\xb4\xfd\xf9h\xe2\xe3v\xec0>w_i)X\xd0Ĭp\xeaELl|B\x9by}<\xf38\x1bzd\x13'>\x1a?\xb1\x13\x91X\x90\xb0\x00\xb8V\xb0z\rf\xeaa\xac\xf8\r\xc3#\x1e\xe0L\xfc\xe1L\xac8\xa8b\xc2\x0f\x8a\xa6=o\xa1L\xfe\xf6AX\x03\xe5\x83ϴf\xbf\x99\xcaL\xdd\x18\x91W\u007f:\xed\xb4\xf9\"]\xbe\xe7R_ʢ\x1c\xd7<\xa31ϴl\xa8)/ob@R\\\xc1\x86\x04\xd8\x15A\x00'L\xa1> `\x19\xeb\xc8\xe9zz\x8a{\x86\xd8=E\x9c\x91\xea\x9e.\xf6\x19\x17\xba\x80\xc5\xc0Q\x90v?\x934\xed8y\x8ft\xdf\x10Lg\xf8\u007ff\nm\x17\xf5չo`4\x00\xbd\x1e\xb5\xc1\x1c\x17wa\xc7\xeb?5\xbd\x8a>\xaf\x99\x87\xe3\xe2\x81i\xf5\xd7\x03\xdf\xd6f\xafIP\xffM\xcd\xfdg^\xa9\xaf\xa9V\xba\x1c\xf9\x1dq& ..@\xb6C)\xd7\x15W\x9d\xc72h\xf9^\x97\xacM\xe6\xbb|\xachWH\xe8\xf1\xff%\xad\xe2VI\x8b\xf8C\xef\x05W\xc6\xdfa~ߛb\xfa`\x9e\xb41\xf0\xcbm\xbb\x02\xbeS\x94|\xfbKAjN\xcf\xde0\xd3y\xe8\xdfW\x0f]\xf8\xa59x\xe1\xe0\xc5\x0f\xe7e\xf1\x84;\xc0\xbcvZ\x19\xad'\xa7\xab+\a\x06\xa5\x87\xd6J\xbb@\\\"\x9a\xfa\x84h\xa4\x91\b\xff\xca\xeb%\xd2\x03?\xffEd\x1a\x89\xf8x\x9e\xa8\xa5\x97\v\xd6\xf4\x93Z\xb1ӕ\x85\x8a\fU\x03\x97b\x1f\xad\x89\x99\xc1\x84\x1e\x83\xd2\xfc\xbbes~\t\x82\x80XA\x96\xbf\xe4\xd4T\xfcu\xbe\xfa4izL\xc8\xd4I+|(3\xc9\xdfgfu\v\r]\xa7|b\xb2u4\x82\x8f\v-\xcc\x13M\xb6\x87\x87\x8c\U000c8709\xce0\xc6\xf2\x12\xef\x93\xccH\xddTm\xb5V;\x9f\xe7\xf7x\xc3B\x03\x1a#+\x1aç\xea\xf8\xa8\xc7\x01a\x16B\bfm\x01\xa3\xf4:\x18'$k0\x18\x15-L\xb4 \x00^\x80\xb9\x86\xb7\xcd\x18\xf5)\x1a6\x87W\x1e\x90\x18&/.8\xd1F/\xa9\xce\xf0\x87\xffd\xcc2\xe8S겙\xffC\x80 \xccXy^9a\xbe_\x98\"`\xa4\x9e!|\x95\x14\x8diܺ\xb5q̷Z}\xe9\xb7\xfa;W(\xf3lN@\x83/⛽J\xfc\x02M\x03_u\xc3\x05Bt\xab|d\x1a\xa7$\x95#\x03Va3BƋ\x1d\xa1[\x92|\xbe\xc6 ox\xb0\x1b\xd1x\xe4bg@\xbcǼ\x88\t\x19\xbd/\x87\xc7N\x04\xdf/\xa1\xc5\xee\xa17\x86\xec\xbe&J\x13f\x98\x0f/m\xcaEm\xf4\xf0\x98\xef\xa1J\fqm\x98\xde \f\x9a\xc8\x17ΩSX\xd2\x13]\\\xd8~\x8c\xb2\f\xe2\xff\x83\x9aԒ\xc0\xc0\x94\xf7\xe9P\xf3\xc5\xeb\xb8\x13\x04\xe9G\\\x82pm\nT\xd6IO\x96\x84\xd8tJ\xb9yj\x14)b:\xe2\xe7\x89v\xbc`\xdcu\xfe\x8eT\x931\x0f\x01\xd1\xe2\x8fF(\xb3\xa6\xf3\xa9%Ec\x01\x1d\xbc1\ng\xeeLԧO\xd1wjc\xa2\xe5vlu\xfc\xd0td\x8e\"\r\x9c\x8a\xc0\xfb7\xbd\xf6\xd78\rX6\xa1qNNJ\x1f\x92\x16\x17\x03 @Yx\x13s\xe6Z\xea;1\x98}r\xe6Yx\f&\xb5<2Btu\xfc:\xe2\x0e\xf2\x1f--=\xce\xca\x13wh\x97ω\x85\x8b\xa2|ʹTO'\xa2 ~\xdfY\xfc\x1d=\xd3\xcaC\x9c\xae~\xfe9\x1e\x1e\x9fe(&\xafʮ\xc8\xf8gj\f\xbd@l\xc3\xe6\xaf߯123W\xebR\x87G\xe9\xa6\xc6\xe1\x15z\xe7XF\b`4U\xccY8ZS\xaeJA\xdc\x06\x8e(\x10\xc1\xa6\xfa̖Hw~\xb4\xa3\xeb\xd0>\xea5<\xbb\x1c;\xaf\xc9p;\xa3CK\xact\xcc\x15\xfdd\xd2\x0e\xb1\x99\xc6c/\xc4Uوb\xa8ו\x86\x8e\x8b\xdc\x1b\x99\xb2/\xa0\rd\xa5[\f\x1ePc:\xd2\xf0\xbeD\x85+\x9f\x9c\x10\xc3\x12(\xd8\x18r\x03\xdf\x1a\xe2w\xf3v\xfa#\xe4\xdb\xde\xc2Uf\x048\xa5\x98%\x8eOe\xbc\xcfH\f\x04\xf6\xdaj\xa6\xd81\xf3\xb9ְ\xed\xa5\xe7\xa6\x05\xbb\xfc\x8b\xff\xd7\x15\x9c\xd6Q\xf6\xf1q\x19\xd8\xfb\xc5\xe5f\xc7x%%r\\zzp\xbeG\xa0YIV\xf6Ϻ\xe5\xc2\xfe\xb5)\x11\x91\xd0\xc7\xed\xccg\xed\xe6\xd0J%\xa54\xb8\x14Nc\xb8LHBl\xfc).\x87[`܋\x8598\xa5\x14&\xf2\x97\xdf*+)\xad\xac\xb9ʜz\xde\xc2o\x1c˷\x13c\x96\x13\x95\x16\x18.˛Q)\xe0\xdd\x03\xe0<57\x84t3\x157\x8d~\xb3bf\x02\xb3p\x8c\xc6T\x10\x00u\x8d\r\x1a\x98\xb8\xcdGy\xfd\xcf\x11R)\xd4c\xd5\x10\xb3\xc7N*җ\x85\xdc<\x0eV\u007f\xa5\x9e=\x00\x13ٕ\x19[\x90:'AoLS\xa8\xfb\x97\xac<\xaa6Z\xaa\xdf_\xbd\xa0\xe6\x922*)\"55\x02\xe2\xa2/\xadx\x9f\xad\r\xcc\xea\xe8\xd8\xd3\fd\x85\x14\x84\x80\xa2\x8bQ\xb7&;w\xea\x1dS\x16\xe4\x95L\x98\xf9\xf7\x98\a\xb7<\xd1k[&\x9c\xb9\x05^/Cӫ{\xf3\xf9\x02\xa5\x80\x9f\xbf\xf7>\x8a\xb9\x18Փv(\xbb\x89\x19\xdf\xca\f=\x83\xcc\xef߭óag\f\\-c\x83\xcbk\x8c\x13\\\\\x0eg\xf8(\xd9蚦q\x94a\x89\xf9c\x9eҔ\x06uB\x90I\xa7\xdb\x0e6\x1a\xad}\x9e\x10n\xca\xd51\x96C,\xe9ە\x8b\xaaM.\x97(6/\x01\xdf7b\xe6\xe5\xddj\xeej\x98\x11\x13\xbf\xafh_|̌\x06\x86\x82\xdbr7\xadZ7\xfd\xbd\xd0L\xd5\xcfӒ\"o%\x8d\x18\xf4\xa0\x9bh~=\x91\xaa\xac\xccu%\xdb\x16\xf5\a\xc8\xd0S\x8c\xe9:P\xf2U\x94B-\x8d\xb5R_\x14\x9c \xdc\x0f\u007f\x8b\x96\xca\xdb~\xa8c\xadrp\xcf3\x13?\x80\xed\xde\xea.\xf53\x18}\xbd\xc6\xccA4F\x04\x18\xf2\xd2\xc8\xff%\xa6<\xe8\"\xca\xca\x17\x82\xb0\xd0Fj\x95\x93\xa9\x8d\x89\xd1*^?\xbe\x9d2\xbfŲ\xd6,\x14\xce\x0f\x9d/$\xb5\xf6D\x95\x13\x8d\xbb+\xefW\xdf\x1f\xb7\xcb>M\x12]\xb06\x9dh\xfaqghtX\xc5n}\x1f\xf0<6A\x13\x93\x93\x14\x03\x1fJ$NPGE\xadi2\x02O\xab\xa7\x8c{\x06\xd3)EKS\xad\xa8\x14Ƣ\xe3\xbc\xca\xf4\x9f\xa1\x8ej`\x8f~\x17\x16\xe5\x85\xf9u?\x8f\xa7ga\xb8\xa79)*\x82p\xdeQ\x1b\x9037\x80\x14lw|\xe1\xf8t\r!\xb1\xe5\xe6\xae;\xae\xbeF\xd6\x14A\xc9\x1cAy\x99\x89\xe3\xe3m\xe0x\xf0J\x97\xc4&\xa6M\x98\xba=&z}vNvֆ\x98h\xe8\xbeI\xed\xe0\xf8\xc1\x82\xd2\xe1و\xb3))\x1f\xaax\xeeátip\xb1\x96V\\YL\x03\xb3\xd7\x04m\x01\x93\x03\xb7\xb8QJ\xc8qiO\x14\xdf\xf7\xae[U|(G\xf1\xf3bغ\x1b|&\x02\xb7\x98\xca\xe4\xa0-l\nxmb`\xe0\xd212\u05caWh+\xfaU\x85\xabl\xcc\xd2\xc0\xc0\x12T\xad8\xe6\\\x86\xb44\x1f\xffs\xe2\x18Tm\xa5\xb72Dyg\x16\xe7r1m\x16\xcf^E\xab\xaeX\x13\xb2\x06\x1ci\xaa\xa4\xf7\xd2!F>\xbe\x12\xc3\xe1\xc7\xc4\x1e=Z9<\x87\xa9\x04e\x14\xf8b\x14\xd11n\xfdG'\xe7PV\v\xadIqBq<\xc6\xed\x84[\xedп-}x_\x91\x02\x8c\xa4NvI\xf2J\x88\xc7\x14\xdbj\xd1Q;\xdfb\xc5\xdcU\x88\xf8\xa9\xdc\xe9;ۇ\xa3\xbfë2!\xe60\xe6M\xcd\r}\x03[{\xa3]\xf3 t\xeetI\xac\xae\xf4\xee\xae\xf3\xbd\x93\xc0\u007fEB\xe4\xf4V\x94\t\xbeG\xe7\xf9yF.\x1a1\xa63ꋠ;\xa2D^\xc3U\xfb\x8d(6\xd0e_\xed\u007f\x1a\x00\xcc{\xb4H3o\xed컞G\x92\xffeA\x98\x02BU\xe7\xfe\xf2A\xf2\xd3\xfb\x9b\x9d\x00\xfd\nVx\xa9\xdd\x1f+\x9f\x9b\bKݻY^X\x1b!H\x06\x80\x87\xfe\x19\xcc}kw\xc32\xde!\xa6N\x84a\x04\xd8XL\x86?\xef\x95==\xc0\xe3\x8a;\xef$\x87\xf4!\x0e:v\x1fXd\xc3[\xdd\xdb2\xfe\xcfFa1\\n5\xfa\xc8\xd3\xec\xfa\x00\xf9\x97~\xb9\x80U\xc2\x03\x12\\\xedg\r7\x06\xafb\xb9\xc3I14\x8c\x90:\x885\x1c~\xec\x1a\xefA\x9fXN\x878\x1a\xd4\xe9\x88\xd7\x00\xc3\x13rV\xf8\xc4?\x93\xa7\xc9V:\xc3.!\xc2ΘM\xeeK\xdd\xc7Ro\xf0\xe5\xa4\x1bB%\xe7V\xb1\xca\xf9!\t\xce\x10\xe9\x017t\x96_\xcfN\xc6U\xa5p\x89\xc9c\xfa\xaaM\xfe#\x89\xf6P\xd7\x02\xd7n\xa8}T\xb4\x9b`}\xacǴl\xcc5\x83*j\a\xd3Us\xfe\xff\xf9M\xa0?D\xbcΞ\x86/{\xf2ԵZ\xa6\x02\x11đ\xf4\x14\xf9rH\xde\xee\u007ff\xf4\u007f\xac%\xa6\xe5\xe6\xab\xf4\x9b\xb5b9*I\xbe)\xacvc*\xda\xc6\x11J\x96}.\n\xddͽH\xfe\xb5a靖\v\f\xf2\xf2Ιݨ\x82?\xef\xf6\xff\xbc\xc3\xd1\xf2\xa3\x1e\xf5G'\xde?ꆀ\x14+\v\x15\x00N\x12v\xd4\xdb\x1b\xf3\x91JF~\xfd\xda\u007fU\x80A\x02\xbe\xaf'\xbf.T\x82\xe2\aU\x9dͨ\xf4|\xd0eO\xa61\x03\x11\xf9G\xdfU\x1f\xb5aM\x8f\x01\x04\xa5\xc0x\x8cy5k\x87\u07b6\u0087\x8e\xfb\x11\xc13pP\xd4\x05~\x06\xd4\xef\x83\x1c\xe9\xc8T\x91.2h\x85.\x13hז\xb8\x041\b;\x91b*\xcep@?4\x1f\xc6!\x10\a\xaem\xf0\xa5m\x99\xa5\x80\x10LMf\xce\xed\xba\x0e\xce\xfbq+\x1ao\x12\xb8@JL\xc3~Ӥ\xd9$$\x82\xeb\x83\xc9\a\x1ab\xdcUh\xe9\xf8\xecU\xcf\xc9\xe6\xfd\xb0\xbe'\xd8-\x13Bdj\x9aY+\xd5\x0f\xd5\u007f\u007ff\x84x\xd4\x0fp\xf6\x1f\xac\xa8\xa4'\xf0\n\xf6\xdfs\xe1D\xe3K4w\xf9\x1bMt\ue8a1\x1c\\CN\xaf+\xc8q\x8e\x89\xa1\xd4\xef:\x1cf\x93f\xe3\xc6k1ee1\x02\x9eY6f\xf1\xc7\x03\xdf\x1c\xa9c\xc7nZ\xae,\x95ZZ\xb9\xd7\x10\xc0\xab\xcf:U\x94c\xf0 \x98\x02\xa9,\x11\x90\u07b9\xd6M\x1aFFf\x9a\xbd.\x1c#\x9d\x16\\\x1cL\xfd˄\x14L&!L~I^qA\xb0Mx\xec\x02\xa1˦G\x16\x8f\xb0G\xa6\x8fs\xff\x18\xf1\xa2\xf7ŝ\xe6\x8cQ4H\xab\xe4W\xd3\u038bޣ`\x1f(\xcdy\x88\xc8\xf0\vW\xf0{\xbb\xa1\x989\xdbw\xb6\x89\xf67g\x9b;$\x1d\xac\xbew\xb0\x06\xf3;\b\x99VP`\xb5\x14\x14n|\xa1\xc5\n2\x1b\x0f\x14\xee\x14\xae\x13^\x1a.\xf6d\x90|u\x8a\x8bܶy\xff\x17\x98$\xee\xe5\xed<\xf3\x8b\xef\xb3g\xf7O/y\xf8I\x83\xfa\x86\v\x88\xfb]\xac<\xbd8B\xb5\xf8E\xaf\xf2\xd6\x12\xe9\xc8\xdc\xcb\xf1\x05m\xc7\xc1\xe5\\\xdab\xb8\x1f\xc7\x05\xb5\xa0\x05E\x9f\x98\x9e\x88\x80\x04\xefy\x90\x8e\x9fx\x1a'Ϙ!\x9e11\xce\u0380\xf1g\xc6\xe0w\x88\xa4s\x1f?\xffQ\x14\xf84\xf5J\xad+\xab\x93\xa9\xe1\xd0r\xd3RA\n0\x80YV\x85;\xa1\x0e\x8a\xe1P!\xd4ů<\xc2|\x9a\x18)#\x98\xde\xcd15v\xf5Y\xefFŷ\xffI0\x8b\xfayu\xde\x18\x83\ue62bxg8\x8e\xcdB\xd7\aWx\\\u009f\xa0\x1d\xc4\xebh\xb7\x94\"\x94x\bo\xc1D\xcfA\x8b&p#\xda\xf4 \xfcF\x1a\x107\xe1\x13\xb1\xd0F\x806\xa1\xf4W\x1d\xfb\xff\x9b?%\u058c\xf2h^\xfa\xd5\b_y\x8a\xa0\x83\x06Ϝ)\x9e\x14\xb0nn\x98\xd6\xfe\x8f\"\x81x\xb3\xd2\xd7Ӈ\xe1\xd1\xeb\xc0\\6\x147J\xcfT\x1c\xa3۞\xcaƜ\x92\x11y\xcd^V\xf7~>|\xc8|\x10\x16_\x14\xbb\xaaA\xa2J\x13\x1d]\xda\x1e\xc0\xab\x90\xc9e\x82\\\x0e\x9f1\x18Z\xc6|\xc0\xcc\x0e\x80\x8fK?N\x80\xdaɂ!\x81+\x10\xd2Č34\x8aZ \xa5\xc0g\xef\xe1N\xe0,\xe1\x10\xa0Y\x00\xa3\xa8\x906@\xb6\xff_\bv=\x00\xf82\x04T\xc1p8\x8c\x80\x8c:\x1am\xaf\x10\x019\x8d\x00\x92A\xd0\fS\x12 \x99\xbf\x0e\xb2\x16A\xeeM\xd9P\xecdH\x1fW\xa5q\x19^0\x02ݍ\x90\xe1 \x84\x82-\ar;\x15\xc0!\x18\x94(\xa0\xf3\xa8\xce r~f\x18\x11n\xf3eL\xa9\b؏,\x0f\xa2ON\xf2\x0f\x82\xff#\xe5X\x82\x95W\x16\xe3#\xf7\x12\xba\x12Ñ\x96\xe4\xb0,\xaf5\xe6[X\xd4\xd2\b\xe7\x02d\xd8\xe0\v\"i1\xe8\xf0w\xf24\x18\xa2\xc5\xf0'\xc9Pz\xb07\f\x17\xfb\xa9E\x10\x9a\xb0\xac\xd1=\xb6Ȑ\xd2Z\x9b\x98\xd42&5/&\xb8\x88\x8f;Y\x11\x93K8T\xa4M\x9b\x10\x14\xa4N\xb0%\xf5[\x9dA\x8c\x1b\xd5ۑ\x15dC\xe3\xe95^\x92i ?O\x1f\x91\x05\x8a\x8d\x91\xe7\xf1D+CS\x8fk\xf4P\xabJ\x18\xf3\xb5\x82̤\x1a$f\xa2\x13\xe4@xI\xfd\xc6Ah\xf5\xe6\xdb/\xff\xed\x98;|\x05ԍ\\\xd9=].\x12\xe0\xfcBi\x88:\xfcoI\xff\xdcs\x99ܪ*\"\x1d;1?\xfe\xdb\xd8K\xe3h$\x04\xa2\x01\xf7l\x9eU\xe6\xbec\xfdWa\x8c\n*\x88^\xc9\t\xf4\u007f\x87\x9f-\xa1@\xbdb\xa1\x05 8jW;\xa7cr\xef\nѦ\xcdi\xe9\x84|j\x1d\x89R\xfc\x10th\xa6̸\x03I\x8d\xb7\"9F\x01\xdd\x1e\xc6>Q8b&\x95\x0f\xb9\f?\xec\x1e-\x88\x98H-\xf6P\uec9eB馔Bv\x16\x84\xf2\xa7\xed*Jq\xfc|tY\xae\xeb\xa5\x1bѪǼp\u05f7\xb9ǁ\xa4\x1e=\x9b\xf7\xfb\xf1R܃\xe7\x01\xba W\rC\xb0j^\x9dM\x059\x86\xb0\x1fWyf\xd7ܽǤ\xb7\x95\x82\xf6\xa2E\xe8\xb2\xfb\xd1ϣc\x83\x88\x9ec\x86\"\xa9\"T\v\xff\x8b\ua95c\xd5++0,\xaf\xff\xac\xe7!\xf8Y\x06~\x95\x03\x19I5\x04e\xa7N\x1d\xc2l\xc1z\xb9\xbb\xd2\x10,\x1a=F|)`xsT,\x1eb\xa2\x11\xcacQŎpMKg\xbe\xc14\xdd\xdd'\x83\xe4=}?yo\xf43\xb7\x83\xb2\xaf\xf8'\xe22;$\x1dC\x1d^U\xe9R\xaf\x0ea\n\xb1\xceFlh\xf4@K\xa3\xbe\xc1+\x92j\xe3\xe1/\x90\b8\xef,\x94\x13\xa5{\t\xc6-JQ\x87+v\vɾ(K\x05\x11ƊY\x1d\xcb!\f\xd7\xc5J(\x1cNJ'3\x0e\xed\xee\xcc\n\xac\xce\xf1w \xf3#^{\x1bXv\xbcX:?\x99f\x80\x14@\xf5\xb9\xbaY\xf4\x91\xc3\"\xbd'\xd7\xc4\x1b?E\x8e\xb5\x86\x06\xb1\xf3_\xac>9.h͂\xadM\v\x9b\x85%\x94̍\x8e\t$c\x0eJ\xf8\xe2\x88)C \xf7\x9e\xd7\vϔ\xe8_U}\x0f\xc9\t\xb2\xd5\xd5\xdbbm\x13\x83\x1a\xa2\xe1\x8ez\x1b\xe1\xae\x18~\x04nR\xe2\xa7\\ޤ\x1a\x1fZ\xe0I\xf7\x1f\xa8S\xf3ؘ\uf1bat \u007f\x19\u007f\xdft>\xe2¶\x1b6\xfb@\xbeg4˦U\x1b\x00\x04\x81l\xa5\x85?yv襶\xb7\xa1F\x15\x84 \x94݈,\xf8\xb3\xe3wW<\xa0\x9c\xf1\xf8y\x97\xd9\xe3\xa2L6\x96G\x14\xd3fV\xab @!\xe2\xb4g\xdca\x8e\xf5\x9c\r\xbf\xdc@\xbbsN\x9e\x9a\xfa\x0e]OJZ\x8a\u0378\xa4fb\xb3\x94Ԑ\xfa\x16\xd5@Jf\x9a\xb6\xe5\x97\xcdlͳ\x90\xa4\xb4\x9d\x05&\xc9\x11\xb6WR\xea\xce\x15\x19\t\xe0\x97\xe7\x8d9s\x96O\xd4\xfckzW\xf7\x81\xae\xaelģT\xb9W\"\xf9\x90\xdd7\x87\x1a\xe8\xf0/\xa2d\xcf\xcd\xc81\tr]\xc6\u05f7\v&\x93\xa0\x9aw;e\x14\xe4{i5\xda\xc1\x85I\xfbƏ\u07fbnzUĝb/\xfe\n}\x13j\xcb\xf5?%K\x19\xe3\xff\xa3\xa2\xac\xfe\x9b_3\x02\xa3T?\x90ee'\xe3\xd6^\x1d\xefcr\\\xad\xacެ\x9f\x8bb\xcdQ\xfd\x1c4\xb1\u05ed\xf3\x18Z\xce\xe3i\x9c\xa1\xfb\x9e\xf6\xfb9\x9d\x9f& \x96\xf8\xa9\x13?\xee|\xdcma\xae\x05\x12蒙Tu\x19\xff\xb1=\xa2\xd9(\x8d)Q\x95Ȗ\x89\x9dz\xed\x1f\x97s\xf2x\xcd\x049\xbd\x804\xee\x02yQ\x87\xf9 \xf6̽{\x8e\x97\xdd\rRb\x99o\xd1\xf2\xe9\xe3\x10\x1d+\xfc?\xcebxT\xd2b&7\xf2Ѯ\x12\x84tE\x97\t}\v}\x035rb,K\x9a\xc8\xe1\x99.O6h\xf4w\x905\x8beiQ\xd2\u007fd[4\xc0\xc1DE\xf0&T\xfb\xbbl\xf2\x1a\x85\x9f\x0f\x10\x99\x04`\xbcY8\x81\xbb|\x16&{\\R\xb2\xf2\x04\x1drg\xf2x\x02\a\xd64s\xec\xb4#\xb8\xacbF6\xa6\x9f\x03I\xb6T\xb1\v\xad=B\xba\x8d\xfe\xf6(B\\\xb6\xf6\x97o\xff\x1bs\xd1\x14\xf6\xbfr\xba\r\xecM\xda\x18l\xac@_\x90yOW>\xf0,\x82E\xb9\xfeM\x8a\xed\x93vׁ\xb2S\x16rPI\x15\xeb\xddt\xf8%\xbfq&\xbe\x03\x86\xe3\xe0\xee>\x90-)\xc4\x00Oz\x93 \x1b\x01\r57\xb6\xb5\xb6\x948\f0\x94\x1dZ\xd6&}\xad\xd4X1}\x824\x1c\xc2\xd8Y\x8e:\xf9\xf4i#\\\xe7+.~:\v\xb7\xad\x19\x1e\x1b\a\x1b:\x1f\xdb\x18\x90\xbeW2W\x02\x050~\x04\f\xe9Ć\x0e\xec}A1\n\xec\xe2\x1c\xbd\xec\x18x\xb2\x8c~\x90>\x99q\x80~\x92\xbe\x81>\x95v\x906\xfb\xe0]\x1a\xb6\xfb\x9e\x97\xb1V\x96/0\"\x8e6k\x01\x03X\xe5\xc5&E\x8e\x04o\x16\x13\xcdBl\xb0m]\xe3ߗ&g\x8c\xbbY\xf4\xc9\xde\xe0\xd63F\xfd\x16}`\xf5\r\xbcp\n\x1a\x10k\xd14\xd7\xdf\x01\xdd\b\r\xa0rI3X.@\x84\x82\xb5\x81\x11U=\xf7t\xc7hPg\xa7\xed\xff\xae\xa3!\x00\xa6\xa1\x93\xf2\x96Ӑ\x82\xb9hc\x92oWa\xfd~÷k \xca\xdb\x1bؐmn\x87F\xceB\xd1b\xbf\x99\x1c\xf4\xa20\b\xd5\xe8$\xb6jn\xb2f\x1b\xa7 \xbebo\xd9\x11q\x0e\xc9XY>qBLlx\x95&;!\xc5\xd2q, \u007f\xa1\x13\x1c\xc1M\xcca6n\x1eR\x86\x9c\xb5H\x12\xa1\x81[\xdf\xc1[\xff\x91c\xb9R.T\x9e\x94\fY\xa8\x9e\xc4d\xca\xc5(K\x8esYl\xa8\xd3;\x19Ni\xa5\xd1\xcb[\xcb\xe6J$e\xc9p\xb2\xe1\xff\x8a\x98\x98\xa5\x0f\xc1\x87e\x05\xb9ё\x9e\xd8\x10\t\xe6\xd9\xf3q1\xd7ҸRѧ\xbe\x9f%X\x90\x8d$!\x9c\xb3\xa80}\xbeЄK\xb61ִ\xb1ql\xc9R\xa0C\xa15\xdf\x03\"O\x1b\x8a\xb4&\xb6\xeb\xac똦@\x13\rz)S\xa5\x93\x19\xd8\xd1^D\xbf\x1e\x16&\xbe/Ҋ\x86\xc7\xfcn\x9999:!al\xecL2\xf2\x9b\x06\xf5K\x18CNpb\x99\x90\x1b\x1f\xa4\x89\xc7\xc5\x17\xaa\xa1\xf0OfZnK@\xf1\xd9\xe6b\x90L{\xc44\xbf\x93\x98J\xeb&{\x9b\x8b\xe2-\x87\x96\xfe\x8a\xec\x17\xe4\x11ni\xa8\x01;\xbfJS\xa6\"h\xe0\x1c\r\x89\xf1\x83Yi\xf1\xad\x04@z\x9f\xab\xcb\xf6\xed\xac9\xb0\xac\xcf\xc1곣\x83\x1a\xc3<\x81\x85\xa4\xae(\xc3\x05\x89\xeb;\xd9\rJ\x0eC\xcbx|\x182\xc2\x13\xac\x01\xa5j\x15\x92\x02P\xea\x18\xe6\xcb\xfa\xc5\xfd\xfc\x11\xda\b_\xb3\xd4\x18\x10\xf6Rȹ\xc7e\x84>\xe2\"\xee\xed\x12\x97\xe5?\x99{EV\xff8 \xaes\x1ft˚\xecVJS9$C\xf6\xaf\xf6\xfcW\x194t[\".ܭ\xa3\xa3$\x9eɗ\xcd$:\xf2l\x1a^{\xcb_\xa7?\xa1\x9al\x91\x06\xbd\xa7\x13f\xf9\xfa=L\b\xa8|\xdcZ`Js\x1c\xdb\xe7o\x85r\x87\x04φg>ƽ\x14\xcb\v\x0e_9\xf4\xe4\xc5\xd5\x1e=)\xf5&\xe3\xa0s\x81@x\xa2\xd0\t\xe2\x01\x18\xe9P[+\xb6\xe7B浮.\xf9(w\x97R\x10w1\xb9Ì\x1f.\xb4\x04\xfaZ\x91}S\x02'\xe2J\xd6\xc4\x16\x8f{Q\x82l\xf2F\x85+\xb3\x19\x88\xf9\xb7\u038d\xdaW/4\x1ab}6\xec_\a\xef\xe75y\xcd\f\x01\xe1\ni\x01\x9b\x11\x97&\\\xd0\xca\x01\x9c\xd6\x05\xa3\xc3\xeb\xe4\xeeex\xc1\x90_\x99\xa0\xf3)H\xae\xd3\xf4\x05\xd1\x0f/\x19\x97;\xb0\xe4\xbf\xf599\xcb\x14\x88s\x19\x86\xa4C\n[a\vp^\x91ޗI\xff\x8f\"{\xbcL\xd4{eR\x83L6j\x1d\x05\xb3g\xa9\xd0\xdd,u\xbc\xb1\xd3Ѽ\xac11\xeb\xa3\xd16\x8d\x9ap\xef\xc6\x1b\x8b\x03\x8b\x12\xff\xdcbS\xa5o[h\rRk\xeb\xa0\xd0A[\xf8}\xaf\xe4\xe9'O\xee\xabn\xa6\r#\x87\xc6=m\x1f\xa3\xb9\xa3\xb1c\xb5\xf0\xad\x8cO\xac͟\xe3\xb0Y\xd3b\x16X֚\xd6\x00˾\x9c\x93\r·\x13L\xc2?G<0\xfb0#\x81ߢH\xb6Lp'Hq\x8cH\xeb\xa9|\xc4Z.\x1b/\x02\xf1\x86Zn,r\xb1\xb4\x9b)\x86b\x8c\xe8\xf5gJ\xeb\xb5l\xb2ި$\x1ać\xb8>TkL\xae\x92\x18\xe3\xe9\x9c\x1e\xf5\x89\xec\xe5\xa5\v\xe4\xa4\xedC$\x03\x0e\x10\xbc\xcc\x18\xf3[\xb9i\x17\xdd#UI\xfaXJ\xe5\xb2.\x19\x18\xc1\xa4\u007f$\xea\xffH\xfeqJ\xa2\x8d\n\xd4K\xd9\xcdhR\xc4oe\xfb,\x90 sIl{D\x17,\x9b\xcc\xc1\xbd-\xa5\r\x1eN\xea\xe0\xe04\x84\xe4\x1e\x8f\xc3x\xabE\xbb\ti.\x8ei\x1b\x8a\x891\x87\x10\xc3\x16n\xfc\x1e\xf7\xcd\xdf\xc4\xd1\x166>C\xc5\xd0y+\x89v\x82\x8127\xcfV\xd9^\xc5qC\xb1B?\xe7\x8e/\xac\xf5\r\a\xabAXn\xbcB\x85\xaeh\x17\x14\bH\xdbj\x1bT m\x06ˮ\x97*r\x95\xba\x96\nN\xf7\xf6\xaaB/e\xd9O\xe5\n\x95\x0f\x92\x1f(\x199w\x80=\x9b\xfc:)e3'\x04\x1d\xea0\x99'\xfc^\xf3\xbc\xeb\bЀ\x03}4\xda.\xb6h\xc1\xc6\xc7\x1b>U \xa1\xde\v \xf8\xff\xbd\xf3\x19\x9a\xebi\x80\xc6X\xf5l\x15\xec\xfc\v\x8e\x9a\xbe9\f\x02$\xcf\xe9\x92\xfc\x17\u07fbt\b)\x1b\xe1\xd8\xe3\xec+\x00B\xe8\xbf~\x00dP\x01X)\xad\xf5\x9c+\x9e3l\x83\x10\x01t\x8eN\x97\x8b\xf5\xe2\xbfF\xfd\x83\xca\xef\x8e\u0088\x8c\xfa(\xd2\xdd~\xf7ِ\xe2\x85D\x17\x02\xbd\x00\xb5\xe0\x88v\xf5\xb9?\xfbԨ\x16\xe3\x03I\xcb\xd0]\xb3>\x8ei$H\xba\xcc\x1f\x14\xd2A\xf2\x15\xea\x9f\x1b\xf3'\xbfi\x84\xd4\xcaz\ue18a\x11e\xe7\x8d\xffk\x01f\xa3\xeb\x16\b\x01\xfcʇ\x12ǯwޛ\xf7\xd6\xf4\xbb\x0fR\x14\x17\xcb\x1a'\xf4w\x9dJ\nq~|ԅ\v8u\x80\xa8\x8fL\xed\xf1k(\xe9!\x9cz\xe6\rA'\xec\xb3UCs\x10\xd4\xf6\xe7^崔\x93ۛ\xd6d\xfe\x9d\x8f\xdaf\xae%\xd4j)\xa0\x0f\xd2`\xc1\x1f\x12d0\a\x95N<\x19P\xff^I\x9a\f\xe4\xd1\x0ePs\xb8\xc4\x19\x00\x92\xd0(V\xb1\x86\x06\xd7Lr\x85\xd0\x0eºJ\xb6*\xff\x90\xa3\f8bX9\xa8\xfa\xe2\x80\x1b쐵\xd1\x04)0\x1a\xf3\aT\xb8\x1f\xb6\xed\r\x1e\xe8\x04Ły/?>^=\xa5j\xe7\x0e\xaf\xe5z\xbd\xcbB\u007f\xe9\x8f\xdf\x11Dh\x0e\xc7\x12`\xe0)\x02\xba\xd3c\x93\x9b\xc7Ӱsw\xd9\xea\xc0\xc4@\xedG-\xeb\xca\xc9WA\xcdQۜpv\xff\xc6ܱ\xac\xb9&\xbcP:\x85\xcf`\x17\xb9\x90T\xa4\xb7A\xb1\xff\xbc4\xb0\x02ϔ!\x8b\x94\x95\a9\xb2\xc9\x050\xc7۔\xbc\x04\x9e(\x85Z\x83\x90j\x14kpq\xa1?\"\xf2\xf6\x94}%-\x01\xeeX\xf9\x0e\xea\x99\xe4\xa3O\xf2\xab'\xd1\x12O\x15YA\x9f\xb6\"T\x8c\xa8-\xf7\a8\x99\x94\xa7\x863\xf1oCP\xdcߟ\x9c]\xa7\x17;X\xd4U\xa5}QP\xddqf\"H\xed\xd3'\xd6w&8\x8ag\x9bq\xde\xf3\xa8\xfbe\xbex\x01\xd5ͱ\u007fZ\x9a\xe7\xa7/O\x05V`\xaa\xc8h\x86q\xb8\x05\xb1\x97\xc5=.~lϱ[=nW\xcba\xf5\xe0@\x92\x87\xa0\x9f\x15\x96\x01\xc0ފ\x19\xbd\xe5\xc9y\u31bc\xe3\x980\x02S=d\x1cn|Q\xa8B\tO\xe1x\xb3 2\x8aU\x90'Y\xaa5n\x19\x86\x88,\xf9\x99}Q\xf7\x9b\x13CԄ\xec[\xe7\x92l#э\xf2\xd8!cb\xe8(\v\xda\u007f\x05k\x00\xe2(\u007f\x8d\xb4$s\x19\u007f\xa1\x06\xae\xe1z=?S\xb1\xba\x83\xb7\x10\xd4?\xcay\x9a\xb0\x14AH\xf4\xb0t\xa7\xecX\a\xe16\xa4\x90\x90\xe3&T'\xe8\x94\xef\x95f\xacv\x1b\xd9\xf8\xa4\x90\xa2\xc3\xc8\"3\x1e\x92\xee\x1c\xc1\xef\xc4m\xc7m\x1as\x05AA֝\u00a0C\v\xe6\xac^p\xe8F\x8c\x9b\x85\\\x92\x9c\x00.\x97\xc4\xf70\xf7\x18Ĝ\xfaN\xac\x9d\xe3\xeca\xcbN~\x96\x19\x81bjH-\x86\u007fc\xbfr\x92\x018z\x88\xea\x15_\xc8I\x89\xac\x84\x14\x983\x96k\fd\xd8:N\x03Z\x00Vw_%=\xa0\xd1\x1d\xf8\xe2\xa7.\xe3\xa6\xc3`\x1a_\xc0xpG\xb5&\x85m\xe5\x90c%<\x87\x05\xac0\x0e\xe1)\x05\x17\xa5i\x8f\xae\x0eX-\x841&\xf0R\x1bw\xa4->\xd8$0\xc2\u007fV\x9f\x90\x84\xe9K\xec\x00Z\x05\xa1[\b'\x1c\xbf&S\x98 G\xf5`\xbd3\x13\x815\x0e\xa1\xbbS\xb2\xf42\xed\xd8V\x8d6YZ\\\"\x81\x97(\x9b\xf8\xbcɞ[\x80\x1a4'\x8b\x9eJ\xd1b9\xcd\xc6%46~@ٓ\xff\t\x96\x12\x8e\xe1ُh;\x17 \x14\x9fAQ\x95\t\aP}\x82)\xd6$\xf4M%\xe0\xb1`\xf7a\x1b\xca\xdfT\xbf\xaf\x8bN\x8e\x17\xec\xd9#\x88O\x8e\xae{\xaf\x06~y\ufaf5\x0f\xb4\xd5\xef{\x13\xa47\xf6\xc9\xff\xdf\xe6\x9fl\xd6L\x98\x9f\x11=\x12\x9c1q\xd2\xce\x18\xcf\b\r.,\f\x0eվ\x9e\xe4\xe0r\x8b\x06\xca\xc5\xc9\x16\xfc\x84\xb4.\x15W0\x11\x14*\x014uũ\x94\xa3\u007fy%\xb7\xaeG\xac_n\xb6\x82\x9fX\xa1\xb6\x1e\xfb\x89\x12)k\xce\xeai\x1c\b}\xca\xc6\f\x8fM^\x03\x10\x00ڤ`o\x940\xb7P2\xf7\xf7\xad\b-m<\xb4\xc0AF\xca\xfe\xd2rn\xd7^\xd5d\u007f\x16\x06\x1d\x00\xfe\xd3&I\xa5%Mt(\xe4Ax\xe6\xe6<҄\x0e\xb3\x919\x8c\xa6\xe2QR\xc9|:\xf5\xfdn\xdcGΜ[\u007f\x8d]\x8c\xe4IF\xe9\xa5\xd4\"\xdea\xd4\f\xa5\xba\xe6߳\x9c韷\xd1\xc6Y\xdaR[J\f\xdb,\x84\xaf\x8c\xe2\xaf\xc1\xd8@\x05N\\\xcd7\x05\xf3i\x9fJ\xa8\xf8^\x9a\xfe.ڛl\xb6 ȵ\x1eH$\xf5\xa7\xacTCi\xd8\xe1\x9e \xf1\x80\xb6O~\"\x91\xde3\xda\xd6\\\xd9\ta\xf8k\xd9\xd7x\xef\xe5\xfab\xa83\f\xff\xe3\xa0~T]\x02/\x0e\xd9\x05\xd8%\xe4\x1d\u007f@'\x0f\x81Y\x97\xea\xbe\xf1 \xb4\b\x8fTh'D)\x1c&\xb9?TA\x04\xb8\xdf\xe3\x8a\xf2\xcb\x04T\xc6?\xe4\x01/\xaf*rL!E\xffD\xeao\x1a\x00\x8d\x0e\xb4V\x1a\xc6\xc89\x92nĠk\x12-\b:\xeb%`\xb2\x94\xc8Z\x9a\xe9\x99)yC\xc8\xcd\b\x04q\x9d\x1f3\xe2vm+\xe8ӹ{t\xfe櫲\xa9\x17\xe2\xcb\x18γg\xc8\xf2p\x13&\x81\r\xc9P\xb6\xc2@0\xc0\x8b\xf5\xe3\xaf\xc7#\xa2A\x1b\xbe4\bLPl\xbe>\x1f\xf9<\xce\xef\xc5\xd8=e\xe0\xf2懔\xdaX\x04\xdc\x13\x00\xd5y\x00*\x8a\xdf\xe6a\u007fH\xa6\x1d\x87ű\xd1(\x1c\xb0\"E&B]l MES\x03E\x94\x1c\x9d\xe6\x8d\x02\x14\xd2\xf3\xf3\x9cW\xbd\xf8y\xbdL\xea\x91w)B\x0f\xfbJ\xc3\vc\xeb\f\x00h\xeb)-\xff\xe8\xc1ء4\x9d\xef\xe9\xaa-\xa7}\xb7T\x9d\xb7\x13]\xaa{]x\xa4\xb5\xb6l|\x0e\xa2\x14I\x8cXۡ?zB0.-\x16\x14\xe0F\xf0\x05\xad\xba\rS\xc4;\x90Cڦ\x82X\x9f\x8d\x1e\xbe\xb1J3eJD\x97k\x11\x1d\xeb\xf2\xe3\xee\xa1y\xce%|\x93\x86\x94>\xd0\r̓ț\xeb\xa1؏\x8dak^\xef@\xb3PXg1\xae\x06\x12`\xef\xf8qm\xb8\xac\x13_\ng)g\xf19\xd4G\x19l\x1f\xa1\xa8P$\x1a#\xe0m\xbc0\xfcr=\x9e\x95\xad\xc7(\xdbP\xee4\x81\xc8\u007fq\xdf\xec\xee\xee\xb9\xeeh\xf1/r\xcc\x1f18\xe1\xa3\xce%~<\xdb\x0f\xaf|;\xe0oH\x80\xae\x95I{\xdb\x00u\xc4\b\xa5C\xb6\xa7\xf4\x14\x97\xb5\x91ɟ>\xf6\xcb\x1560=\am\xe0Ɇ6\x1e\xcc\xeb]\xe8{\xf9\tT!6&M\xd8\xe0{\xe5ϱU|bI\xfd(\x16\"\x97\x17:jaa\xa0^\xc68\xe4~\x90A\f}\xe5\xaf\xf71Uj\xa1|\xe8\xd9\xc8ƙ\xcef\x1f+\xc7\x0e\xac\x8d\xca&/\x9a\x11\xddD9Ӭ\xb2\xc4fA.!߭\x8c]\xf9\xd1˃\xeb\xea\xe0e`\x96\xe8VӺ{>\xc4\xd6\xfd/pZ\x05c\x11>x\xeb7Qm`+C\xe3\x16\x82\xf3\x1b\xc8\xcb\xcc˖\t\xd6\x1f\xb2o?\x02\x86\x12\xa2\xde\xc7\xd1h\v\xb2![{5\xb62\xb3\xe1\x89B\xd6r\x95Y\xdb\x17\xaf\x1c+\x96\x8fQ\xb8p\x906\x87\xb8\x0f|\x8f\x03\xd0\x02\x9a=][\x81\x0e<;\xe6u\fq,-\x87N\x8dQ\xa1'\xbe\x9a\x00\x82\xe1\xad\xf9\x00-\xcf\f\xb8̏]K\x1c\xf9Z\x92O\x05\xf4\n\x03\xc8\xe7\xf2\x02hh\x92\x1e\xf3\xa6\xf4\x14\xd8|l\xbeI\xbe\x13\x19\xbf\x9fE~q=;K\x03\x18\xd6\xd1\xec[\u007f2\x02\xf7!\x17\x85\x97'\xf9di\x9d\xfeX\xff\xb4\xb3]\xb1\xd9[\xefg\xfdN\xcf\xfa\xd3#eüO\x92O\xda\xdcE\x98E\xff\x13P\u007f\x8aB\x12\x03F\x86tJ\f\x94\x96\x11\xaa\x1b\xf9\x97\x12I\x8c\xa4\x86\x10t\x8c\xe1\xffR\ai\x16\xc8\xd8jdA(\x82\x03\"\x1f\xbfe\xc1\xea\n\xd7\n\x1f\xffe\xaa\x80\xfa\x97\rҾݷ\x14\xf7\x14\x89n\xd1\xcfj\xbf\xfb\xa2\xb8\x8e\x11\xfb\xf4\xb5\xed\xc4\xe4d,\xf6\xb0&煤\xe1\xca~\xfbȜeS\x88\xc9\xd8\tZ\x14\xd5\x14\xafG\xbe\x02\r\x1d\xb3\xa6\x94w\x06\xacC\xe7\xaa}E\xea\x18^Y\xe3\xea9~\xdb\xcd\x1b\xfb@\xda^\x04'Cw\xaa\xff\xce\x1c\x1ad]\xb0\x90\x98w\x11\x03֙\xd3\x1e\xb1\x9b\x9eCZeƦ3n\x03\x88\xa0\x873\xf7\b2\xf3\x9a\xa7\xc2 ^\xb9L\x87\x15HYQ\x10r\xca\xcf\x06\xbf\v)\xff\x9adt7\x18\xfcss\x87\xcc\xdd\xc0\xd9\xcd\xfdň\xd4\x1a\x87|\x1e\xfeQ\xfdeJk\xb4_\x93\xbb\xa9\xa5\xeeѪG\xb5=\x89\x94\x83\xe0{\xe0^EWt\x9b\xd0\xff\x9ax\xce\xec\x1by_kgZ\x84A/\xe1(\xb2`\x90d\xc1\xb4<'0\xbf3\x81\xbcz\v+\xaa'\xc6\xe2Oq\x9b\x13̙\x96j\xe4s>1\xc6\xc6\xe2\xf3,T\xd4m\x12\x92\xe2+\xdaM\xfeMd}\x92\v\xc5h\x98w7U\xbeq\xc1\xfe6\xa1\a\x9dGD\x03\xff'g\b)63.o\xec\xfa|&\a\"\xea\xb4p\xf4\xd3fʷO,)\xe4\x94q\xbf\xe7d\x86h\x13\xe5u|\xb7\xa9SQ\x8f\x05E\x89\xc8ۉ\x92\xb3\u0381\x941}\xc6N\\}\xf7J\x14\x8d\x9f\xf0-wz\xb1\f\x13\x8dc\xe0\xeeգ\x1b\xa6A\x14\xd1\xe2\n\x99\xb1\"\x9a\x04/(\x9e\x01|\x82\xfd.#e\xf961\xd9yS<\x9a>\x90\xab\xad\x14\xfd\xff\xbf\x9b\xaa\xaax(ί\xaa\x96\xe9W\xffZ\xfd6\xf3-\xa8o?\x9c\xe6\xb4הGW\x8e\xa78K\"\xfevT'\xa7\x8f\x9b\x98\xeat\xbc\xa3\x9c\v\xb7\xf9\x96xت\x1b\xe3l5\x8d6\x8f\xdb\xd2\bۏI\xae\xde\x06\xbd\x8f\xbc{6*8\x91\xbeA\xb1\x90.\xdc\x18m\xe0g\x02\xe3~s\xa3k\xaf80\x8d\\P\x00\xf7\x8eB\x83\xd7[\xd0T*\f4Sr\v\x05\xc7\x14\xb4\xc3|\x9c\x14\x18F\x88\xbai\xe0N\xcd\x19\x1f\xaa\xdf2\xa3\x05\xb4.m\x81\xb6\xb4\xb2\xc9o?r\xd8\xf8s\xe9\xe9\x13AFƤ\x8c\xf4I_+\x037\xca`[\xc0q\x132^\x8c\xbc\xdd\xd1q\xe2SY\x19K\xa3K\xebg\x8e\xd1\xde\xf0\x1fE \x13(\xd3:N\xd6J\xd6t\xeeL\xf7>8kԎ]\x86\xbeDۗ+έvܹ\x13L#.\xa8\xb8\xbc\xff\xd4\xcaz\x1b0,a/\x98L\xf4\x13\xf4|\xeec\x93t\xdc\xc3(\xc8Z\x12\xeb\xd3\xf0iE!\x94\x933\x1f\xbb\xb0\x045\xbaK\x8e\xf2\xda\xd1+n\xcb\xff\xbd\xad/}A<\x15xW\x86#\xf3ׅ\x1b\x05Y4\x00\xb9w\xb0Kg\x95\x13G\xff\xccj\x9a#\x86\xd0\xf6S\xa5%\xbfΛ\x8cn\x9d\x80`\xdd<\x004\xd2\xdb\xe0\xb6\xfad\xe7\xf5\xfc\xa6\xc5\x00 ֞R\xf1'\u007f\xff\xa9gʻ^ \x91D\x15ޙ\xfa\xa7\xf1\x0f\x03\x82\x05\xa1\x82*\xa3\xddW4\xc6\xc3Y\xb7\xd4Ɉ\xd0\xee\x83\xea\xb94\x00jZ\xc5\x0e\xb5Y\x93BSO\xd6\xdb\xc0\xf5>\x00\x9da(N\x01P\xf7\xd4\xd0\xdddN\x93FA%($N\xb6vN\xb7Xr!:`\xae\xee\xb8\xd7P\xef\x9bbiP|\x91\x19\xfb\x82\xd5N{\x91<]\xc4l\xd8L\x9e6C\xb0,#\x8e\xbb\xeaMp\xe0\xd9̪\x1f\bi\xf1\xad]\xddS|\x03\xf2\xa5\xc4~\x99\xff\xe6\x8a*\x89\x82v'\x81Ç\xfe|)\xb5M\x90%\x95g\xf9\x9cXN\xcd|=\xb5\xee\xca\xc0!\xd7mT^\xcba\x05,\xf9\xd2\xfa\xe2\a\xdb\xdfҘ\a\x15\xde\xd30\x991鄃\x8e\x88\xaaa)]\x15\xb8\xe6\xcb`\xef\xf7o\xdfM\xaf`\x8fP楹%\xe5&湕\xb2\u007f\xb1*~\x9b\x8b\xbf\x87G\x17\xa4\x9c\xb0\x958nC4Fز\x96\xfeĕ\xa6R\xb0\x0f\xa5\u07fc\x95\x1e\xc6\x1d&\xcfK#d\xcd_\xe7vͣ\xcd\xf9\x9eU\xca\xfe\xc0\xae\x9fA\xf4\x11\x12+\xd6c\x84\x138\x9aRW\x04\xf2\x97\xf5:d\xa1\x86j\x1d\xee\xff\"\x88y\x81\xb9\x90\xf0.a\xbfrޭT\x1d\nr8\xfe\x19\x05\xb3\x82\\(\xae\xe49_\xca\xc3\xee\xa5q2>Ŋ3噄\xe4x\v\x1dћ\xcbB,*$\x90\x14´8\x03\x94tȭ~\xf2\xe1\v\x8c\x004\xf5R\xce\xd6\xebjQ\xd62e\xf4i\xa52\xf4\xa8i\x18k\x82\x19\x91,АX\xc0\xd0u\xa2\xd1֕3Љn\xd8y\xa9\vkX\xbc(\x16ʎ\x9b.\xcf\xe4\x9c%\xf0\xebZ-\xc6\xee.\x92\xfa\x03p\xb2\xb1\x8c\x93'Ɩ6\x0f\r\x11\xf4$\x85\xf4\xa5\x14\xbe\xf1\xacŽd+%\xc7t\x812\x8d\x9e H\xaf0\xcfU\xf2\xa9\xb6\xd5.\f\xfb\x01w\xfd\xc9 \x97\x82\x83\xbaqs\xf5k\x92>\x19PŽ\x06C\x83\xa9tp\xb0\xd42\xc4Nr\x95\xff7x\x8f\x9f\xcd\x0f\x9e*\xde7\xfb\xd1wƅ\a\x91\fǔ\xcaq\x13r\xac\xe0\x85\xf3\xa0O\x92=\x14\x0f\x16\rs.P+]7Ǯ\x91\xce\x1fG8\x18I\x1f\xdc̱\xbc\x8f\xbe\v\xc3kƾ\x88\x15P\xae\x0eqz\xe3\U000e698e+\v\x0eOI\r\xd7\x05\x9d?\x05\x18`y\u007fȯ\xf76xC\xd7\xf7P\xb2MvÊ\xcc9Gؐ\xf2Ҍ\xafkLWg2펿\x9dC|6\xbd\xb8%\x06\x00[\xe0\x15q\x96\xec[,]<\xbc)3\xb9\xd0Y\x18\xc7\xe6^\xaa\xed\x069\x92\x9c\x18\xb7\x04\xaf_\xf4\x1e\xad&C\xf0\x17Ѫ\xec:z-\xd0P߳|4tLV{\xbc$\xeb|\xb0[\xf4\xee}\x94\xad[\xdeFo\x16/\x9a\xd2\uea4c\x8a~ps\xfcM+ґW\xe6\xbdq\xf5!\x85\xfd\x9865\x89 \xaf2\n\f\x86t\x1e\xb8\x1an\xbaڝ\xae;\xdcH]\x81\xfc\xf8M\xaa\xd4\xfdπ\x80y\xf1\x99aa\x89\x19\x1dk\x1f\xdc\x00\a\x9b\x0f\xb4f(\xe2\x11l\xc6̌\x1d\xec\x8fAg\x15ʄ\x95\xda'\x95c\xcb\xc5\xfeg\xff\xb8m\x13cL\xa7\x0fU\x1c\x04jX\xf4A㫓\x13\x83Z\xaa\xef\xf52\xe2\xe3ѝ\xa4\x97\xa6Ԇ7\xe4\xe5\xcc\"W\xe6\xf7k\x9d\xe6\b\xb3\xb7\x00\xb2\x81#\x00n?\x1c\x1c\xbe\x19f.(\xec\x0f\xd37\xd4\x1a\xf8\xef\x01\xd7\xca؇\xa4\xb9\n\xa6\xa2\x1a\xfc\xb6=\xf1\xf7\xeb\x97~F\x9c\xbd\xf1ui\xd8\xcf\x1c\xd1\xff\x9e\xea\x8b]ϗ\xc4\xff\n\xe8\x89Ycؔi\xf7\x15\\\x12f\xe8\xf5\xc4\xcctO\xd5\xe1\xa1K?\xcd!\xf9|s\xf8\xcfl\xd7\xf7\x89wo\x14^=\xb9\x90\xfd\xf3ҍM\xfd\xe7n7\x82\"\xb303\xcd\xd2,\x8f<\xa6e\x85\x15H\xbd2\xc7\xf0]J̴2Z\xe9&\xf4,\xd6\xedA\xcc\xc2\xddŸYB\xf7,\xaa'\xd2]L\x98%u{H\xb3\x8cƑL\xaf\nbz\xdb~S$)\xd9]\x81Q\xbd\xaa\f1\xeb\xe5\xf9\x11\x97\x14\x8f\x84\xdc\x06\xafh\x87\a\xe2\xa6'\xb5{\x9c\x93\x167\xca=.7\x151S\xec\xe4Y&\xccf\x11O\x00ւ\x81\x19\xcc?)/ĸ\xa3\x82\xee-×G\r\xd7u纶;\xbc\xe5\xc7k\x8e\x94\x8fQV\x1a\a\x11\x06B\xa9\xe1\xca\x1fJ\xc4%<\x05\f>\x8ao\xc7EW\xee\x92\bO\xda0\xbf\xef\x17\x8d\xae\xb1РLJ\x01\x14\xc6ܺ\xfam\xc9=0\xa8\r\x9b\xfb[\xe2\xe7\x83\xd4lU\xb3h+\x11\xaa\xa7Mc\x96\x1a%*\xaec\xaf\xb9E\x0e\x16\xafH\xc4\xd9U\x16C\vP\x19NYњc\x8d\xdb\\c\xb7\xff\\{\xf9g\xc8WYHr\xe9\xea\x146\x8beK^]\x9a\x1c,}\xae$\x9f\xec\xfcy*X\xb8\xbd\xf1ؚF\x99\x87\x8f\x80\xcc\t\xed}tDz\xf5\xb6\x8e\x9au\xb3~#6<}\xb7\xf5\xfa\xdd\xef|\xbd\xeb\xb7/\x86RՂ@\xa4\xcc\x19\xe5\v\xc3\xf2a\r\xf9ԕ\xaf\u007f\xf5\xc7\xf5\xd6\xdf\x0f\xa6\x12\x9f\x99\xb5nb\x87\xfd\xc02\a\xbd\xa1\x01\xcb\x1bMY\x15\xe2\xa1Ҳ\xa12\xf6\xb1J\x87\x12\xdfOJ\xcfhg\xa5\x8fp|\x1b2\x10\x96\a\"\x89\u05cb\xda7K{\x12\xa9%\xfb/d4\x90{Π\xd7c\x83ˇg\xaa\xf59\xe5\xc6l5J\xc4\xf6*\xbcգB\n\x88\x10\xc5V\x0fb@H\xb5\xceL#\x94\\\x10\xe8~L\xe0gb|`\x06cvT\x02\xa0\x00\xa3\a\xc1j\xc5\xe86u\xce\xd8\xe4\xd2\t\xf4a\xee\xe9\xb2y\\O\xd7i~\x17\x1f6>n4*\xb2_Gv\xf4\xbeZ\xcc\x1cl\xb6t\xe8v\xe3\xd3V6q\xbb\x9a9\x9fn\xf2t\x1a.5q8\xc0\xe2U\xf5\xaa\x04 \xa4\xfdn\xea\xf2\x98t\x1f\u05fc˸\xa1\x993\xda\xf5\x0ey\xe2\xbaL\xb58i\r\xf8\xeb\xfcX0\x14\xaf\xda\x06Ë[̠M\x8d\x1fB\x93\xd7\x03:1dt\xad\x94\xa6%\x9f\xfd\xb3\x96\xd9|\x99@\xbb\xad\x82\x8b\x94n\xf1\xec\xcf\xd9Lw\xa8\xfez;\x87\x81@I\xee\x9cQ\xb7\xb4YL\x06\x98\xff\xff\x17\xf1\x92\xbc\xfe:돎_\xc4I\xf6\xf9\x8fw\xbf_N=B\x953\x1b\u007f\xfcv\x13L\x05\xe7\x1dBߋh8\x96\xefˍL\xfe\xe0gY\r\x91盁\xfdئ.\xde\xc4%~@\x93\xf3\xe8\x81F\xb4\xc2H\xed>\xba\xfd#4\xadi\xff\x1c~\xddӱ\xc5\xe1\\\xce\xc4\x15UN\xe2b\t\a\x06v\xdd@}`kp\xffzg\xe0<\v\x95\x10\x87\u007fs\xe1\xe1Ԋ\x89\x1dg\xf7I\xd8H\x04\xc2\xe3\f\xea\x139\u07b2h\xf1\x8f#\xf0z0\xb4\x8c\xb1\x80Q:\x92\xc5\xcd\xf6\x83\x8d\xd0\xcf90`\xce\xdf\x0e\xc3e=\xa6\xfc\xb6\xbb%_\x14\x8c\xae\xe4r\x1f\x8d\xc0א21V\x9eG]\x10h\r\xa8\x05\x10C91n\xa4JC\x8f\x02\xb2\xd8l*\xbf\x86N?D \x90\xae1 \xdd\xf8h&#\xb0\x16\xd2\xc6\xce\xfbF(\xc7\xe6\x02\x1e\x17\xb0\x9c\x85\x19E\xc8\xef\x1d\x85\x88\xa8\xa0o10\xf7IJ\xf1^\x83L\xbcDFW\x80\xa4\xd8x\x18\xbb\x06\xa1\x1e\x01*\xa3{'\x84\x9b\x00q\u007f\xa8\xea\xc1\x88\xe0^sMi\xab. !>P\xfe\xc4(\xb8,\x8ft\v\xbc:&\x9c\tڳ\xf4\x0e\xb9\xbcO\xe6\b.\\\x8eB[\x14t:(ʥ\xb3lH\x861?\xa43Q I\x96V\xd63\u007f\xde)\xc7}\xba\x8d_,\xbco\x89\xdb:\xc1\x98\x93m\xd0\u007f|09{\xbb\xc1\xcb̲;YR\xf0\xac\xeb)\x17\xe3\xca3e\xd3\xe3\xcc+\xaa\xd9\xd5;\xe4\xa1\xe3\xcan\rj\xbc\xf6\xb2\xf7(\xb5+\xf6\xb6\x8d\v\x91\xef\xac`W\xac4+\xab\xcaN\x0fk\x94\xfbZ\f\xd4;\xfe\x869\xb0\x1f\xf0\x0fΙ\xf0;\x8f\xea\x80B]\xdeCdw\x99\xe5\xa4\xf2dJ\x80\xe5ɕ1\xea\x14K\x8eg\xae\xb3Ԕ\xf0\xe1\x99)\xa0d\xa7\xf2\xb7\x12\xbbn\x85\xc2\x04A\xb3\x1dc\f\xfc\xc3\xcd끷bi\x03\x99gG!P\xb1#\xd4\xc9\xfa\x15\x85\xa9\xe7\x96\x1a\xccU\xd3+eʇ\x94\xe40\x00\x91\x03ƣ\xaf#\xacI\xef\xd91h\xd5\xd5\xcfA\x83\xd3`\b\xfe'\xcd\xcd\xca\xed\x8f\xc0avt@\x03ۯ\xd8?\xfa\rJr\x1bЅј0\xcb\x1cv&O\x9fВ\xf0\xe0\xe5\x04\xa3\x82\x00z;\xad\xa9ԩ+\xd7QrW\x8b\x13.\x91F\xa7\xe7\xb6\xe5\xf9\xe7;\xedˆ3\xaa]\x93\xff+d˥\xd1\x10o\xa5\xa7\xfb-\xffu}co\xfd\x8au6M\x90\xde?L\x9c{\xee\xc0\xa8\x14bK\x96\xf3\xedy\xadk\xb3s(\xf47\xbf\xbc\xf6\x0e\xcf7m\xb8\x04\x82\x8at1\x18\xc0\x8do\xa7\x81\xf9ݩ\xc7\xf5yWc\x15e\t\xc9N\xbd\x03\x04\x9e\xa0ĻqBk҅`m\xe4\x9aZ\xcf \xfb\x8b\x1c\x96\xb6-k\x15h\x92\\\xa1\xc1\x0f\x0f\x8b\xe7m\x8c\x83\xc7\x00\xb4\x00\xc7xn\x01f\x8dA\x02\x83\xac\xad<*6\x10\x87\v\xc4<\xf6z1\xff\xc0\x1f\xdb0\x97w!Ɂ\x1ai\f\xe32I\x13\x98\x84J\xa3\xabp]\x82\x8c\xe9T8\x99\xed\x1bXk\x18nN;\xd1)\xe4i\\\xc8\xcf\x16\xc2\xfc\u05ec\x02\x01\a:SJ\r\x91\r\xb4Q\x06\xa6|WM\f\x8ep\xf5(\xcd類!\x925@\x9e\x06\x91vv_\x03\xf0\x01\x05Bn 7>\x83\xec/\xc0q\x19\xbb\xb1\xea\x93ۯ\xe5l\xfd}\xdb\x16N#\x9d\xea[\x18\x9e\xea\xc1\x02\xd2\xed\xc0\xb6r\x18\x811h\xfd`Cٖc\x04z\x93\xf4\x06Zڞ>\xdd\xc0\xecajzY~Br\xec\xae\f\x82\xb4\x84C\"\xb27\xe35\x1f\x1a\x93\x86\x1bp\xb8\xe0f\xbc\xc4;:\xccQ\xb6v\xb5\xdb\x1dQpF\xed\xdev\xdbx3\xa62\xe2eS5:ˈ'\x80\x91)*\xabuf\xfc\x97G\xa6\x9b\xbb>\xbe\xf5\x8e\x96~]\x96\t*>\xf0Pv(!\x98\t\xadu\x99\xc3)\xa9\x93\x0f\xad\x1cWzP\xd9\x1bK\xcb\xce\xe7\x9fϞqu\x9b\xbd\x82\x83\xd2\xe0\xd2\xf6\x0e4\x96\x10w\xba[\x0ef\x03z\v`\x18Q\x18\xa4\x01\f\xa8\xa4\x9f\x17\x16\xd30`\x1eCXU\xb8\xf6\xdfk\xf90_;\\\xbb\x04\x98\x14j\x86\x95\xf4\x905>ц\xb1\x00\xe0RU\x91\x0f\xad\xb5h\xb1.\r\x10\xe0\x1b\x8a\x95-\x02i?\xfd\xfa\x9e\xd9$\xa9\x86\xd0.\xa9K\xec\x8aW5\xed\x12\xc6 ë\x912\x82u\x8cIr2@\x8c\x18o\x99\x89\x03\xa8XB3Y\xe0wD\xe5\xdf\xdd,\x93\x06r\xe5\x00\x9e\xb9\x85\xe7d|\x1c\xba$\x99\xdcq\x94\xba\x9f\v\x04\x1a)-\xa3\xd9g\x02\x81\xcf\x03\xb4\x05{\xe4bw\xd6z@U\x10\x8c\xaa91T\"\x98\x86\xf0\xeb\x0e\x8f\x05\x15\xcb\xe92\xa8\x8a\xedX\xb9(S\xb98\xe0>\x03\xa0w䞕*4\xca\x1e\x03\xd4\x17\x82\x19\xad\x01Dj\xe2\xef4\x10\xc6\x19t_\f\xb0\xd2\x19\x9c5\x81Ñʵ\x88\x10\u007f\x1cڗm\x8e^g\x10\xbb\x8cw4\xc3yԦ\xfayv\xf1\xc9x\xbe\x85g\x8eۥOEq\xae\xe6\xe5ǎ\x85\x06VV\xd8\x00\x87mȪ4\x8929\xb061L\xc8\x13`\fa\x04\xd0e\xe1\x82M*fF%2\xfb\x1fw\xea\u007f\xff\x1e\xf5\xdc\xc2F\xb3\xaa\xa5*\xe4\xdcf\xa6\xaa\x82\x9c[Nh\x14\xa7nk-$U\x8b\xbd+\xc1r\xca\x1dA\x1cN\xd5E\xbb\x98\x8d\x99\x9e\xf8\xecT\xc8JB\u007f\xb19\x99\xf4qH\xc8oc\xb9\\}ז86\x9b\xb7\xa4\xab\x8b\x83\xdbr84\xe4/W\x8d\xa64\x99t($\x96\x18\xbe\rCzWۓS\xcaC\x11\x0e\u0096t\x9d>\xf5e\xe6\xfb\xacI\xf3\x92\x93\xeb+\xdczJ\xa6dM\xac\x9a\u0600\xae8\xbcb\xe5\xb1|\x0e\xd7vch\xe7\xf0\xfd\xf6\xbd\xe2X\x81o\xc1\xf5\xa1]\x1b,\xb3*\x1a\x8aK'O\xc2\x04w\xa5\x98\x1b\xaa'd\xe4\xe6\u007f\xbcv\xe5ʵ\xee\x84=\x85E<\x94\x1d\x8f\x9d]\n\xcej\xe5\xd4m\x0f\x1f\x0e\f\x15z-\xa3\xa8\u007f\xd6W\x17\x8c-2\x99\xc7z\xd18\x1c\xae3\xff\x14\xc6\xf1\x95\xe8\xd3\xd1+0\xf5ڳ!\x1fU-\xda\xc6y2*Z\x8dT\xcf`\xf7\x1bƤ\xd6\x12\v\xc1tī\xbe`\xe0\xc1\x87\xa5ȕ\xb2\xdb\x06P\x0e·\xae|\x94\xc0\xb5\xb5E=\xb1\xad/٣\x13\x11<\xb2\x04Wp\x0f\xf59j\xc1\xf1\xe8\x1d\xa0\xf89{D0\xc2&\xe8\xc6\x18/\x9b\xc9\xc3\x00ߑ\x8a\x17\x91\xa4w\":u\x02\xf0\xe6&\x03紲e<\x92>\xc7s\xb3\x94\xf2\xe6\x03\xa6tN\xa2\x9e\xc1\xa2\x88/\xc3`\x99+q\xed\xdbRrܡ8\x01L#\x11\x9c\xe3.Tu\x15\x97\x02\xe5\xea\x1d\x94\x8c\xfc\xb9\x14i\xb6I\x00\x91N\xb4+\xf1^\x82i\x8e$\xe1\x13u\xd1\xe1\nqo\xbc\xfb\xa3\x8c\xdbA\xfe.d\xb3\x94\xb8\xf6\xff~X\xb2\x9a\xee\xfd\xffk \xc7\xef؛\xaa\xce:\x02\x0eC\xd7|\x93X)\xc1\xbaf:d4\xfc\x9f\x83\xae\x1c\xa9\x85\x87:o\f\x16\xb9\xf0\x80\x8f\xf9G\xaa'QB\xb5\x05z\x04\x0e\u007f\x91x\xdd$\xdb\x10O`\xbd\xbbw\xae\xb2i6\xb5\xcc\x1ef\x85\t>\x84\x01F\x1eQ\x98\xb0k\xe5\xe4+#\xa6d\x0f\xfa\xf6\x94\x00\xba\xf6\x00b\\\xdc\xf7_\xef\xee\x84\x10\xc01\xa2a\x991\xae\xaf=(}\rF*\u07b4\x8b\x1a\xd3z{v\x93\x1aB7\xf9|'\a\x99C\xa9a(a4\xbfz\x8c?\xbe\xd0ơ\xf0P8\x0e-$\xb2\xc77\xcd\x18xr\b\xd0 $7\xc1[\u007fn\x98\xdd\xe42Ta\x8cB~R\xf6\xa8\xcd]B\x8dK\x86\x11\r\xd7\xc7\x15Ԫf2!T\x9a*G\xa0\xa9\xac\x05<\xb4\xf5\xe5\xecNPܞ\xf5\xa8ݏ\xb3\xcd/=0\xfd\x91hm[@\xfd\xc9\a\x80\xfd;\x15Y\x1d\xdf\\\x8e\x111\xb6\x16\x80\x95\xb1\x13\xd7\xca\xd0\xf2\xe7\x1b\xc6\xf0\f\xa0r\xa5\xa7֓\x16\xde=\xca\x17*ݳC\xcfB\x9aw\x1e\xfai\xf4\xf6\x0e\xea\xc0\xd1\xc6&z\x93'\xa9ӸA.\x98G\x1b+\x18K\x9f\x8b\xde^\xf3\xb7]\x82]ߊ{\xe3V\xb1\v\x1ft\x0f\xb3\xba\xbb\x1f4\xb0믶nְ\xa1T\xd3\x00\x91uK\xdd\xcc0\x8c\x99\"\xb0mL\x1es\x10}\x86\x8b1soWc\xbe>\x1dI~\x87j>\xba\x82\x88\xfc\xa5\x02\xab\f8\xaf\xa6M\x96t\xfa#\xd5\xe9\x8fFX[\x9a:\xbf\xf1\bkj=ZX\xd6\xd9D8\xac@\xb4\x132\x80#)1\\(\x82K\xbe\xccG\xa7'\xfa\xb2\x984\xe8i \x9b\xed\xdfE\xe8Dl\xa6\x18\xbdӊK%\x15\x89\xf8줜\x98\x00\b\xaa\xc04\x8e\xd9\xf4߃\xd3.\x81cj\xf4?\x9cN\f\x14\xdfR\x9b\xab\x90x\xf3\x89\x1b\x90v\xa2\x13sv\xce\x14\t\x8d\xb8\x8d\xcd\xf8\x88@A̘@\v\x80d\xe9p\x81/\x06\x13q\xc5\xf6\\\xad\x1e\xd6S\xab\xef\xce5&\xab\x8e\uf1ab\xbfQ\xe9\x19o\u058ce\xe9\\\x10\xf4\xe1B\x91\xa7\x1b\r qG\xc3B\x83?\x1e\x8b\x80@p\xdbP\x91\xe4\xe3R+I\xa5O[\x19\x1d\x89\x00'\xd2qgK\x15\xec(\x17\xa1\xda \x00~(\x11VS(\x1ajk\xbe\x80C\xf3\xa3q\x84\xb5bhՋҒ\x13d_\x92\v\x81ctA`z0(4QmT\x17\xc7\xed\xd2\xec\x9a\x0f\xf5\xcd\xfb\xae\xfe\x0e\xf6\xe7\xc1\x9e\x01\x8al\xb7iv\xf1\xaaV.0\x92\xe0\xfd\xc7V\a\xf7\x8e\t\x193y\xdd\xc2\xe3\xe9-%Ub4\tB\xe2\xf0>\xe3S̷\x8e-G\x91\x8fJ\xa9u}\x88\x84\xfa_\xbd8\xf1\x935Ã\xc8&z\x90ٕNBE<\x02\x87\xc0\xd0\xd9\x1a\x9d\xc4|\x9b8\xad\u007f\xa2\xa3np\xd7\x19\x9ezQ\xc0I>\xc3\x02\xe7\xde[\xae\xa2\x12\x89\f\xa1\x9a\x10%\x12%M\x9d#\f\x89\xa5\xdev\xb3\x80$@`\x01<3\x83\xf53G*\xddp\xbc\uf44bW\\\xa5\x02v\xdaӠ0\xca\xc0\xedG\xe6\xca2\xc2\x1b\xad\x96\xe1k\x1as\xaf\xee\x9e\xd9;\r\xac\xf2u\x93V \"\xf1}\xa4mb\xe9j&s\x1esf\xb7\xe7\xee^O\xeb\xe52\xef\x05n\xb9!\xf2\xfdr0\x03[>\xd7J\xa7\xfe\xf5\x14\x83W鱔C#bc\xe6\x99i\x1c\x82\v7P\x19ˡ:\x94xL\x9a\xa7\x98\x1b$\x89\x13\xb2?\xca\xf8\xb2\x04\x91\xab0\x8d\xeeK\xb9\x84\x97\x1e֩y!\n\x0fw>\xfc\xe6\xb1!\xb0g!\xff\xe3Ƒ>\xa3\xd3_\x92䰹\x1f\x85\xdaz\xf5}\x99\xfbЩ$3\xfbg\xd3?\u007f\xa6VΛ<\xdd3U\xfdzmmVy\x81W\xfe\xed\xdfM\u007f\xff櫜]\xdfT\x15\x8a\xd9\x18\xf1N\f\xa0c\xbd1\xae\xa6Ԇ\xd1Vc۴\xeaɮ\xa4\xa6UEw\xe6:\x86^[T\xa2漳\x9c\xb657\xc5\xd5XfR+_U\x8ac\xec\xf1ȴ\xdc\xd7q\xd2}>D\xfd\xf5\xe7E\xa9<\xdfs\xc6\xdb\xe24\x85\xfc\xc1Ԝ\x9c\xf0Ck+\xeb\x0f\rc\xb0\x01\xf8\xf9\xe1\xc1\x8d\u05fb\xea\xb2\xef\x81\xdc\xdb\x19\x87\xb7\xa1\xaf\x97\xba\x8d\xc2\xe0\xd7'؇\x11*\x10\x88Q\x83\x14d\b_d\x1ef\xe09\xcc\x00\x90GG\xc6н\xa8\x153u\x80Q\xa6\x06Cc5mR\xffڞ\x16\xf4\xaa\xbb@q+>\xbd\xfe\x8f$\xc6!\x98\v\x98PA`\x14;\x01F=\xf6{\x8cO\x9e\xbe6\xff\xb2\xff\xfb\x9fZ\xea\xf1\x1a\x93n;\x8as\x82Im<氼\xfa\x92\xfe\x91\x19a\xcf\x1a\"\x81\x05c\xf0\x04\t\x15\xfb\x9e+\xa2\x12M\xdd\xd1>\x10\x88Cd\xb5\x8axh\xb35\xd4+:v\a\xac\xf6̄\t\x82\xd0\xd6\xdbz!\xa0\x8b=:\x88\x9c`\x840R\xe4\xbf\x16\x9e1sё\xed\xbd\xeb\x16!@\x8b\xa5\x1d脕\xc5\x1c%\x04{\x9a\xbdMc\xca\xcf\x0e\x8b\xbd=\x02\x93\x82\x98!LX\xf0\xe0Dr\x05$\xb5ŗǕ\xa94ƴ,\xd4ڂs\xd1ʿP\x92\x17#\x97?\xd4Q\xa4XҖ\x1d\xb5\xfc\t\xfb\x8d}S\x1ci\a\xd7\x1d\xa1\x17\xb1\xdeWF`\x94\u0097?\xfcڽ\xb5\xe6K\xf5\xbf^\x18\n\xbdM{\xacV\\\xa9\x15\xac\x8b\xf2(\bQ\x81\xf2\xd1\x01\x16=X\x96\x1cH\xee\x04\xa0\x14Ɉi\x80ٸڔ1\x00-\x95-\xb6\x14\x8d\x1ay\xb2j\x8e\xfb\xf37-o\x10\xec\x98\x10\x9e\xc7\"\xc3͌\xc9ou,\x87(\x960\xba\xb0B~$ȰP=z)H\u007f}\xa0$W \xbc\x88\xb7\xaa\xd2\xc5яW\xb9\xeb\xa7\xdeT\xfb0\xf6]\x10Ÿ\tx\\\x18$5'\x17\xed\xbd\xc5\xc6\xf7\u07b7\x1e\xfb\xb1\x80t\x04_dS\xe7\x8fZ4\x95q\"\xbf\xf5[q(\x18[&T\a{\x16\x1d\xda5\xe4\x94W\x86\x93\xb0\x17\xcd49\xff\xf4\x85C\x1cAX\xc5(Z\xf8\xf3\x17\xdf\x06\xd5*\x1e\xc7U\xd2\xde6\x8c\xb2\xb2\xaf\xd4E\xe1\xe6&\xc1#\x8f\xb0\xb6\xa89c\xc2n@X\xc1\xb2ܯ~8\r\xc1\x18*xj\xcft\xa1\x03]\xb3gڞ\xab\xa5\xc0\xbd=\xc6\x13\x13:[Ǿܨ\x8f'\x8f\x9f:\xf9\x90\xad\xbb6\xbc\xb1\xc9@]\xd2\xd85ڝ\xdf\x00\xd6/ÿ\x8a\xdf9\xca\x0f\x99\xcex\x9c\xc9\xd26\x8f\xd6$1\x0f\x0e\xfcբ\xeb\x17\x84\xfa\xa4'ʦy\x1e\x0f\x9d\x901g\xa7\x15\x99\x10߰wNFX(L\x1d\xb7\xc2\xd467=4֗'SBj6\x06Ӝ\x99\t\xfe\x95\x9cE\x92\xb4\x8aId3\x8d\x8f\xc8z\x918\x8eۋ]\x01\x8b\xdb\xc9y\x8bC \xccB\xb7\xa8\x03O-\xc6\xd5s]\xe4\xdf\xda\x1bL]!\xd0%6\xaf\xec9,E\xe8r\x97D\x94\x13ω\xfa?>wO\xa2\x9b`=\x02g\xb1lc\xc6\x12#\xbef\xef\xb4\x1f\xb3}\xdfg\xfd\xf4\x91tePPyBX\xa9\xf8A\xbe\x9f\xaf\xe5\xd3\xfe\x1d\xa5\xeda\x1a\xed\x94\x1fN \x94\xfc\x96\xf6߶\xccqa\xa52\xdfʴ!\xef\x94\xf8l\xc0淬\xbc\xe2˩\xea\xdejeډc\xf6\xa1D\xbe\xd8[\xaf߆\xb1\x10S)V\xd9\x05Ð%5\xa4\xb5X\xbc6J\xfc\xe8Q\xb3\xca<\xf7x\xbd\xd8\xc6G\xde8\xfb\x86\xa2\x1f%\x8b\x17:\x86\x1a\xa4t\r\x86\x19\x84\xec\xfeO;O\xe1k-\xa0$!X쏦\x02'Qu\xa6\xe2g\x04J\xe4r\xe9\xadhe\x1f\x18V[\xb3Z\x8b8\xcc\x14\x89fN\xf1Q;\xddơ6\b\xe6/\x90\xf0d\x10t\xdd<\xf3\xfc\xb2j\xa9&\x9c>]\xc5\xd2/{'56\n\xd4RFG+\xbd\x00\x94t\xafc\x81 \x05\xd4m\xfe\a\x99\u007f\xe5\x8dbf̵\xbd\x10\x85\xe5'Gՙz\xf5o\x8cC\xcc~\xf9Ć\x86\x89\xf2A\xbc\x83\x90\x03\x81ҕ\x8d\xa0\x82Z\x84\x0e\xe0\xc5\xf2˦\x0eBG\x90A\xc0\xe2A\f\xc8\xcc>\x90mj\"\xb3\x04\xb7>\x14\xb1pL\x1bQB7^0O\xb6\xa3\xab\xa4\xb3yܟ)1S0s\x1e\xfe^i\xaf\x06ˬ\xf6\xc8BCΞ\x9c\x96՟\xaa\x90\xf6\xf9\xfdR\xe8\xae\x0f\u007f\xfc\x014\xe3C\xfd\xcb¬ŪE\fL\xd83䴣\x82A\xbb\xd6@,ȟny\v\xfe\xddXku\xe9A\xab\x8e5\x03\x9d\x80\x98\xcd\x1f\xb8\xc5E\x86n\xb9\x00\xbd{c\xac\xf4\xa97\xb0\xb0\r\xba\x8c\xdb\xcf\xcdB\v\x1c(\xc0\xbd\x9c\xf1\"W#\x13\xccc;\xd0\xd9cZ{\x01iw\xef\xcet^,%?\x93\xdb\x03h:\xf4\xfa\x01\x03\x06\xadY3F\x104R\a%\x99B\xf3c\xba5\xe0\xcc)\u007f\xe7\x8e1\x8a\xbd{\x92\x9c#7\xe6\xf5\xfa\x14n\xcb%=\xa0H\xa7͋\xea\xec-@\x86\xa4:\xc3\x11\t\xf8\x85\x10\x95\xe4 %\xb7\xab$-\x109\xbc&s\xac~\x1b\x004\x06\xab\x86\xb3\x04\x84\xfc_*hKh\x13\x96b\xf6aF\xb5\xe2\xe2\x92 \x99E&\xb5H\x17\xbf98W5\xdc_\xfc\xd6\xe0\xc3Kf\fUx\xbf+x\xf5\xc9\xdalUpNhJs3\xf8\xbe\xb7b\xe6L\x91*0\xf6\x1a,}-\xa7\xec\xda\"w\xb6\xb68y\u007f¯\xa4\x18\x1d#\xdb#\xbd\xaa\xdeM\xe8\xe6)\xa4M\x19\xc5I%\a\xc1\x83\xca\xc8\xec\\e\x89\xd6\xdf]\xe8\x0e\xef\xfa\xe4q\xf8{\xff\xd7㓂2\\R\xd7o\xa4u4/^¿\xf7b\xd8n\xf4\xac\xaf8&\xd9\x15M_\x1a\x05\xa15\x81Yۃ\\B\x96\x1cQ\xf8X\xb5\xed.\xae\x1c<\x1e⸢\xf4\x82-2gk\xab\xf104\x89\xde\x13\x9a.\x88U\x9d)\xd5\xe1\xd96YeyF\x88\xf4\xe0ֱl\x89B\x1bt\xc8\xeaJ\xbb;A]t\t\xabM\x85v\x99\\\x1f\x14\x1e\xa4w\xd7ӳB\xdc\x05\x93\x02\xa7\x8b\xfd\xaa\xb2\xa1\xafLA\xff\\\xec=^4\xbe\x19\xc5\x03K\x1f\xae\xb0\xc9V\x18\xddS*\x94yƈF\xb7\x8f\x93\x949\xef%\xee\x16\xaf]^;\x93\x94\xbb\x94݁\xdfʾ\xfb\x15f~\xa2+x;\x8f\xb6u*\x9dcY\x8fCI\xa3\xacY\x95\x8d2Zd\xa2ԏ\x9e\xa7\x8eK\xf3\xfb:\a@sb\x9d--Nm\xbaj}\x8c\x18Y<\xea߶G_N\a\xf9\xaccAu\xbf\xce\xf9+\xf5\xf9\xb0\xb5Ϫ\xeb\xd3UIݩk_\xd8\xd0ڔ\x9c*\xb5/&c\xdb4\x86\x8b\xb7\xb4/\xc2H~t'%.-\xfa_\xc9\xc7_2Z\xc5\xff\xdfG\x90=&\x97\xee\u007f\xbeү\x85JÂy\xe1\x11\xcc\x12o\b\xf7d\xf9\xd4\xf9\x8emO\xcaO\xd7z\x1d\xf3\xa2\xf5\x95\xf9\xb1\xb5a\xebU{(މ\x1b\x0e\xb0%\x1b\xf6*\xd9[jL\x11>Zv\xa0\x17g\xf9\xa5\xc0:t\xf64:\x00T&\xc1\xa6}\xd7\xc0w\x8d\xfe\xca9U\xd4\xd7/|\xe0\x1c9\xff\xe1\xb3\x1bx\xb5>\xdd\xdd\xfc?\x8e\xdbw\xcc\xea=}\x0e\x8f\x06\xceaO\xbf\xae\xdf\xe7\x8aw\x1e^\xe9\xb5N_\xd9?\xf3\xba\xbe\xf9\x18\t\at~ɞU\xfb_\x14\xfeΗ\xf6#xM\x13\xc3}\xf3\x8e\xbe\u007f\xd4?zU\xc3\v\xfa#\x17\x1b\xf5\xea\xafg\x9b\xd3\xd1fn7\xf4\xcbTӭ'S\xd1\xc3#x\xd1\xd7\x04\x8f\xd5\x03\xb3\tx\xee*U\x8e\x1e\xaf\xedi\xb3\xfbE\xa17\xf0\xf6-W\xb9\xcb\xfa\x05\xf7\xbb\xab\xbb\xf0ʴ\xf1\xfa\xbd\xeb\xee6\xc1\xfd\xbb\xbej\xe9\xdd\xcb\xcd\x03\x8d\x82UŜ\xfc\xb8H2\xb4}\x10\xd3\xcf=\x06\xa3\x9bП\xe1\xf3\xf3\x91\xa1l\x16\xe2q\xe2\xb1>d\x87\x0f\x95\xbf\xb1\xc1\xb3\x84t4Уz\xab\xb1zq5\xadq\xeaCC\x16d\xce\f\x98\x99\xb9@Q\xb7\xbaxg0\x85\xba\xa2\t\xeb\xf4\ta\xe5\xfd\xff\x9b\x9ea\xc2\x039\x90\xa7\xfd\xa8|wXc\f%l\x91\x12\x04CE\x9a\xf0o\x06\x9a4\xaerq\x0f\u008b\xba\x8dx\x9f\xd8\x16\xe8\xe6z[\x8ew\f\x1b!Չr\xa7IX\xd2\x10\x93\xff\xdf+\x15\x01\xd51\x94\xacg\xfc\u007f\xf3\xd9\xec\xff\x0f\r\xe9\xfc\xfe1\x17;\xf77R\xcc}\x8b\x98\x84M\x1bm\x12\xbf)\xa7i\xca^\x89|\x81\xa7|\xb5\x1b\xce*\x9e=\x11\x02\xd8\x02\xea~\xca~\xea\xfd\x94\xb5K\xb5!\xfe/\xe3\x8f\xeacP\x9fxS\xe2AΣ3\xf7\xe6n\xebfo\xe3\xc4\xde\xf3\xdaW;|\xb2z\xd0X-\x11\xd2\xd6l-\xd5.\xe9\xd0\xff\x86\xf2\xaa\xef/\xb0\x11\xbdԿ⯴\x9a3\x9eW\x147z\x1e\x88r\x86\xbb\xcb\x1ee{\x06\x8fn#Z\x8b\x8b\xe96\xc6Qz\x8a\xb9r\x93\x1aM\xd4\xea<\x19\x8az\xb2QD\xf5\x91<\x84(HJ\x97F\x18/\xf0%(\f?Z\x96O\x9f\xa6A\xd1y\v\xa3Ӳ\xd0\x11\x12*\x1b\x8c\xd2{M.!V\xa9XN\xfe\xf5l\xa1?\x0e}pu\xb0^\x8c\xa0'\xa5Ќܧ9o\x16粅B\x12\xe7:\xaf\x94:\x8an\x9c|.ir\xe2ߍ\x9dG\xf7\xe1\n\xc9\xca\xc4\f\v\xcb\x04\b\x8f\xec\xc4G\xc0V\x9fi\x10\x889Z\xa6_\x83\xa8\xa9y_\b\xf9\xbaQ\x91\xf2\xb9%\xab\x03I}\xc8|ߑ\x16d\xac\xafs\x8f\xc5E&\x14E\x94\x107WE\xd9\xd7\u05f7%M\xd1$d\\3\xba\x9b\xf5\xedWN#x/\xab\xfa`1\xfdJ\x1a>+\xd88\xd6l\xb1\xda\"\x8d66\x1a\xf3\xb3:\x13\x1eg\xe3\x06\xc8\xfa\xba9!8\xceQbZ\xdeI5\x06\x05\xb4\x86-(\bf\xc4H\xe6\xaf]\x88\x8a;\x8eH\u007f\xc6\xc2\x1a@\r\x9b\x99\xa3l\xf6\b>\xe6\xfe\x96撠\xe28\u07b2\xf9\xba\x80\xbd(!\xbc\xb4\xf72~\xea\xf9\xbc\u007f\xfe9\xc4z\x14\xbbx\x11\xd8\xd8o]_\xd8\xdd\b\x80\x89\xd1\xfe\xfau\xc0;l\x16#\x00\x84\xe33\xbf\t\xf8\xf4f\xfb#\rTW\x13\xb2\xbf\x03\x9a\xb2R{yd1\xe6\x90d\xef\xef\x93l\x85\xd4H\x8dzӔ[\xba}\xf2YH\xaf=\x06\xbc\x8a\x9cLہq\x9a\x02q\x84\xc9؊E\x8c)˗8\\\xb6\xc0\xca'c\x9e\x02ʫ}\x82\x00C\xa9\x8c\xc8<=\xb8\x94\x01\x10옜\x87\xf1\xfb\x92%Z\x92\xaa\x81Q\xddR^h\xb1i\bi\x842\xabK\xe0$\aGTQ\x81\xfbs\\\xb1\x021k\x16\x82\x14M{\xe0~E\x95\x8c)\x82\x90\xa3)N\xdeh@\xd0*\xbd{BV\xedT\x05\xc8u\x00\xc2\xc8˕֫5\xd4\xe6b\x1c\xf5\xe4\x1d\x92\x15K\xb4ǕAd$\x13\xd1I0\xd0\t\xc8\xeb\x8a\xdb\xd1W\x87\"j${\xd7'[MƮ\ue17c\xa4 \x0e!\x802\x95D\xda\xc3$\x1d\xc3\xc1\x0e\x1b\xfb\x00\xac\xab\xf2B8䧺\xee\x97\xf5\xa8\xee\x0e\x06\u0092!\x1cЕr\x1b.,`\xea\xee\xa4\x00\xd3\a\x0f3h(\x8a\xae\x02\x92\x91'P'#\x05\xc9\f۬Z\xaef%\x8cK\xc2r:_\xd2\x1e\x86^h\xb0\xe1\xc6\x85b:l\xbb\xc8t\xf6~\xfb-\x1b\xf9PQj\xbb\x87%\xc9\x02A\x16\x8c\x04\b\x06\x17\x99\xf6D\xef\xc1]_\xaf\xea[+\x1f\\\x1b\xed9J{\x8c\xc6\x1e\xce\x0f^\xf4\x1e\xc0\xbd\xfe\x83\x1fc^\b\xc3\u007f\xfcUi\x0fVe1\x17\xa6\x00\x8c\x06I\xe5\b&\x04<\x87\x10\xaa\x98\x03>x\xd2\xfaƽ/\f\xcfى\x0e@\x14d\x01᷌\x1f\f\x1f+N\xe3\xae,V/\ue0ae\a\xff\xe7\x1dg\xb0\x18\x05>.\x03\xd6M>&/\xf9\xeelס \xc5\xc0\xe1P\x00\x86\xf5\x01tP_.\xf4ڽ\xb3K\v\xf3}k\xc3\xfex\x85\xc3\x02ʺo\xe3sa;\x17|y\xf04\x82\xf9G\x16\x0527\xa1i\xb0x\xfe\x81\xe9\x13c\xed\x9c\xf5\xe0\xea\xab\xf2\xbdJ\x8e'ϊy,\x01\xe6\x01(&FZ\x04!\x98`\f\xf2\xaf;;7vo\x9d\xef\x03\xac`\x98!\x8b\x98o\x18W\xb4\x13\xedx\xca%W\x1f\xea\xa8\xf8f]\x01\xec\x12\xa8\xa8\xf8\xc7\x15N-{\xf8\xcb\u007f\x93\xc1(\x95\x11\x870\x87\xa9\x99\x00\x03\"\x11\x01\xb0\xb7्\rO/\x18\xe3`\x82a\xac\xbd\xbcyٷcQ\xa0k\x8c\x02\x80J\xd8v°4'\u05cdBEJ6\x97\xb4\xd3G\x00T\xec\xc12\x84\x17eX\x01\x1b\t所\xb1Ia(\"F)\xa1\x04(b\xbe\xaf\x96\x02p\x84R\xf08\x1c\xb6\xf1Mj\xce\xefx\xb6\x8e\x8a\x95\x18)\x81\x10\x8d^lEq\xecԣ\x83\xb5\xe2)E%>T\xd6~cÒ\xfb\x0f\x9d=\xea\xdf&\xd7\x04\"\x9e\xe2%\xb5\xb5\xad\x88 \xf79\xee\x1f\x85\xe7\r\xfe\xef\t}\xe0\xee\b\x1a^?\xd8\xed\xf1ֆj\xdaz\x87\x8f\xde\x1d\xe9z\xfay\xdd|\xa4!\xd9\xe3A\xdfݹ\xb3\x1cZ\x01\t\"\x8f{tZ\x1dj/\xf5&\x81\x15T\xac \x04jZ\xbaӞ\x84\t\x03'\a\x14\xe2^I\t\x91\xb0\xe0\x92\xec\xef.\xd7Q\xd7\xd0\x06~\xcc2\x8a\xac\xc9\xcd\xf5\b\x01Kfl\x04\u0601\x80 \xa0X\"?\x00!C:\xc2m\xf23\xfcR\x1d\xf9u\f~\x00)\xa4\xe4V4o\xa7\xd6\x1a\x86\x97b\x84\xa2PT\xd4A\xac\x1c\x00Y\x97\xf0,Fx;3\b\x88a\xc3\xdeV\x04\f\x84>\xf0܄d\xf6d\x86\x0f\xc5\x18ES\xe2\x93ͥ\x0fm\xec^\xb8Pn[\a\xbd\xb8\xaf\xa4;]e\x18\x0e\xad\r\n\xe6\x9f\xdb\x03\xc7\xef)\xf6\x9c\x1f\x1ccw\xe4\xdf\xcc\x021^00\xa0\x04\x89\xf6)\v\x1dH\x1b\xa3=mB\xcc8\xdaNf\x1dxN\xb9aݎ\xdea\xe9\xc8!@~ \x8c\x8a\x9c\xf9\xeeN\xa9\x01\x1e\\1\xfc\xf2\xa0\x16j\xc8]R\xa8Da.\x967qF4\xb3#:(\v1|\xa4\x15\x1d\xe2/\xfaﺰ\xbd\xc0\x14Ph#\xb5\x82\xa5\xf2q*\v\x86\xabC\x0f҈A\x84OJ_o\xc4\xd6ܽ\xb7g\xbfz\xd9K\fz\x81F\x9d\x0f/\u07bd6\xe9q\x84\a\x8f\xb0\xeb\x1f\xe3\x17,\xa4\xc0\xd3K\\I\x10\xba\x8e\xbd6F\xeaJI\xfd\xe9a\x16\x83i\xeaw\x8f\x8e\x97n\x9c\x82m\xbb9\xe6n\x96X$S\xe7`G\xf76tac\xd0H\x8b\xe5@\xa6\xe5\x18\xffX\xe6)o\xb1XZ6Z2cb\x06\xd8\xf1\x16\xdb\xf3̞͉\xde|o \xbb@/\x8b\x8a*{!p\xb1t\x99\xd7~\xac\xafoi\xe3\x94\xc3C\xb2d\xbf\xe4\x13\xfe'[\x12\x169\x8eEg9\x83\x06\xb9\x9bl\x03\x81\x13N\xb9\x9cr.\xcfN\u007f\xf2$}'\xa7\xb8\x84\x03m9YM\xb9x\x9d\xb4\xe2\xf8\xa2\xc5\xd3\xfaNT\x91\xef\r \xcf\xeb\xb7?~\x1c\xbd\x12SW\xc7\xde\xf9f͡ɓ\x819\x838Y4\xa49\xe5XR\xdf|R{\"9\xf7\xbc\xb5\xd6\xce\xd4/q\x9c\x89\xd0\xef\xd8\xf0\x8bJ&\xd2\x13\x889\xdb\x19ɑ\xc9'\xf4'\x1b\xf7\xf6\x8b\xd3\a,\xe5\xe0i\xec\x89\xc0\xe6\xfc\xf9\xc7\x04\xd1\xf1\xe8\xaa-qVW\xfb,+\xcb\vM\xb2Fo}\xf5\xd0\xfb\xd5\xe9\xae\xe75\xb7Y\x86=vv\x87\xdb\xec\xe9\x93\v\x97 ]jL\xfalͪ\ffq\x01\xa8\xa5\xbbV3#!\xbc\xc3\xddFZѤB\xb5\xedFL\x9f\x1bZ\x8a<\xfe\xf5\b\xb2\u007f\xca/K\x12\xee?\xf2\xf58\xa3\xb4*\x149}7\xb2\xadI5\x9e\x14M\x19F(\xd71'P\xd4\x1b\xc0\xe3cxS\xf3\xa3\x9a\xd9\xd11t\x17\xe4텓ǯ\n\xa8s\xb3\xaf1\xb0n\xe7<\x1f\xda\xfb*\xec\xd2\xf7e~>\b\x16\x97\x145\xc9\xeej\xcd2\xd7\xfc3g\nX\x844|\xe4h\x1dײxb\xae\xcf@@\xef\xf61P%y\xb1\xca@\xf8z\x1a\v\x9e\xb2zϕV\xe3\x17\xe2\x10#q\xe2&\x97\x18r\xcbȂ\x80\xc3\"Bh\xdem\x10\x97\x80\xc0r\xbd8E\x94\n#\xe5\xa3\xc7]'\xde\xfaJ}G\xad\xc6N[5\xb6\xe3\x1c\xe3f\xbc\xce\x13\xa2Hk\x82\xbc+\x9f\x1f\xdf\xeb=\xa1?\x13\xf7\xb0\xf0\xf9o\xf3\x9c.\xe1\x9axw\x80\x00;j\xd1Y\x11 \xd7\xc3贂\xd2\xc9Chi\\A \x1e\x8f\xde܀\xc3x͂\x9a\xebg\xee\xe0\xa6f\xec\x9aY\xd3z\xedF\xbc\xc6\x1d\xeaqԂ(\xff\xf0\xaav\x89R`̌\xfd\xadh$\xa7\xae+\xdfX/w\xc3\xfer\xf3T8}\x1b\xb1\xc7\xe2^\xdf.\vO\xd0\xc5{@\fi\xd0|\x14{^\xc7UՉ5n\xe8\xf4d\x18\xbdt\x10\x17<#\x86\x91\xb5\x8b\t\\u\xa0\x98I\xfb\x84\xee\xf5B~B\xf8\x1fj\x80\xde|\x99\x8e\xab\xd7\xe8u)\x038G\n6\xe5\x92\x15\x89\x00i\x83S\xb1d\x9c\x10v\xa3\xf8\\\xb0b\x054K\xc0\x84jI\xb4\x80\xba\xaa\xc0yR\x86\x8a\x86\xb9\x8d\xa4m\xbc\xec}\xc2\fnD<\xe2vy\xa0\xa8\xa9\xea\xab{\xc4\xed-.\xf0\xee{\xe0\xc0\x06pb\xfb{WWzK\xb7\x06\x92\xf1\xef}\xb2o!A\xc1,\xa8`Ҷ\x1co\xda\xef\xa0N\xe4\xbcR\xfc\xfb\x99\xbdS\x8a`\x98e\xfb:nw\xbe\xbf\xe5\u007f\xc6\xef\xc7Э\xf0\xf4f\xc2'\x151\x94\x8f!\x04-=Ta\xe8\xc1\x93\xa9;\vd\xe8\x9cny=\xdcE0 \xe9n5\x1a\xcbܒ\xaf\x18\xfe\x8fQA\xcbݰK\xf2\xf8\x8b\x90B\xb0\xf2\xddb'\xca\xfa^\x14w\xc2\xcaٸw-\xf1\xb8\xf2\xa0X\x10\xa7\xbfS\xd2 \xdb\xce\xee2\x01\x8a\u007f\xc7(4\xfa\xbc\xe8Lk\xf78\x0ea\x94Ά\x10x#\x10l\x1b\x03!\x96\x0f\xf0\x1a\xb8\xf9\x8e\x06\x85\x11l&\x965\xa2^R\xe3\xfd\xe9\aㆆ\xe2\x0e\xa6oH\x1b\x1e6\x00\xd8 Ea \x05\u007f\xce\xe6\xfc\xe2?\x05\xa1\x82\xadR\xfc@\x14\xe6=\x863L8-7\xb8\xbc\x17\x18d\xb1\xe5\xa5\xc3e\xa5\xb1I\xdeO\xf5IR\x91F~\xcc[\x1e\x10\x1f?&!\xbe&\x06\x81d\x13]x\x85\xee\x92\x12\x90\x1aP:\x8du\xed\x9a\x03Z\xd4ﴏiNB'Ϗhx\x8fݎ\x8cp\xa5gt\xb4gJ\x94\xe7\xde\x00%GF\x1cw\xe5\xb62\x03\fc\x1eMq\x91\x00\xe8\xe9\x19G=\xf2\xe4\xbf\x03\x88\xd2G\x04\x00\xea\\f\x8b\x15;G\xf3\x93\x04z\xae\r ۮ\x12\x8c\xa3%\x8c\x01\xfd\xf7{\x80\xfb\xff\xff$\x16\x10`\xba\x9d\x17\x1d\x1d\x06\xc0\xfe\xf2ŋ/4\x91\x1a\xbd\xd0\xd2\xf2\xde\xf3\xe1\x82\x05\xef=.x\xbe[\xbc\xb8\x8c\xf5\x90\xf9\xa5\xf5=\xb3tɒC\x8e\v\xad\xcck\xa0\xf5\x01\xea\xc2\xfe\xc8%qǖ\xbe\xda\b\x89mQ*\xe0j[\xbe\xe6\xd7\xff\xf3\xf9/0\x9f\xa7\x8f\xa73\xe2\\hLl\x11\xbd\x82\xb8\x03\xa0\xee\x8b8\u007f|C\x8b\x9b\x9a3il\n\xa2\xe7V\xf1\xa0\xeb*\xf5\xa3\xaao\xb5\xe7\x90ܫ?[N~U9\x94dPK`\xc1\xb1\xfd\x95\xf6\u0097%[^3\xb0\xf7p5W<\xb6C\xfe\xb6\x9d\x19\x1d\xf7\xfbG\t\xc7F\x1f\xaeA\xf4\xfeD\xa3#\xafv\x1f\x8d\x14'\x13\xea\xf0;\xe1;\xef%Q1\xec\xd92\xe59R\xfe9%Qv[\x04\x1f\xdc\xdfP~G%\xedIIp\xaeB\xa0B\x02\xc8\xc8\xf3s\xd7\t\xd46\xbd\r\xe1GbHG\xdf\xd7\xfc9=E\xb40\xdaw\xf7\xdc=\b\xff\xf6;\"\xf83*z\xa8\xbb\xb8\xc4d\x95\xe8\xa0\xf98ck\x02\"\xa7\xe3\x11b\xc9\x03Y[\x8fx \xca\xdc\u007f\xfe\x83\x9e\u007f\xb8b6\f=m\x9fЅ\xa7\x04\xce\bJ\xa0\xc5룓7\x1c|\xf8(ɨ\xfc\xbe\xde;ݏ!cU\xa5\x02\x84\a\xa1\x13\xe6\xf8\xd3\xd9\t\x18\xa2\xc9H?W\xe0/P#\xec3V\xdf*\xcddJ\xfcP\xee\x87g\x10k\xe4Rۀ\x8e\xe4J\x97B\x1b\u007fw\xa8QDFЋ#\x1c\xf8\x9c|\xe4\x98\xe9\xc0)\x16\xb2\xa4\xdd\x1f\x851jl\xa3\x006\x8c\x19\xeb\xa8o\vp7*\xd6\xd4\xe5\xefE\xbcA\xe2\xba\xc5ߑKt%\x81g\x03\x19\x01\xf4\x97\b\x88\x82\xe1\xb6N1(f '\v\xd5\x1c\x13\xc7q|/j|A\x03\x95l\xb4\xbf\xad\x8f\x99\x1d/\xa7K\x05\x8d2\x14a\xc3\x1f\x99\xf5\x06a\xb40*\xb61;A\xe1\x01ـ\"\xe3\x16\xb2\xa5 1\x06 (W\x1b\x8b\xa2\xb1\xa2@\xfd\xe6#\xdb\x06\x8ex\x16\vM\x97\x04\x8bN^\x814\x96\xb4ȅ\x8ff\x1aZǒ۟%\xdb1B0\x05\"\xd9g\x8a1\xfa\xb13]\xf8u+\xec\x1f\u007f\x18\xfe\xe1\xe9ޒ\\\xea\x8e\x10\x1ep/\x93\x88\v\xc0\x93#\xd7\xc7\x19\xfcѫV\xa3\xfc\x1bJ\x83\xcbCa\xe4\xf43\xed\xc4\v\x10\xc6\xf0\xa1\v\xd2}\xf8\\\xa3\xa3;?0?\xe0M\xb3\x18\xec:\x01}\n\xbe\xa3^\xbf\"\xe8\x01Ț\\\x8f\xf0\t\fb\xd4d\xbci\xd9EłA\xe2\xc8\x00\xa12N\xf0\xe3ފ\x80*\xd8\x181\x06\x11\x01wؿ\xe81\xe9G\x84\x11\xf2zQy\xc9i\x00\x03\x96\x83\x1cW\x8d1\x12\x01\xf0S)%\xa9\xa5\x10\xc5ȗ\x1c\xceD\x9f~]\xf4\x00`\x15\x80\xb6'\x8f\xbf\xa5\xa6a\xf7\xb0\x8a|\xc1\x94Ҽ\xbc\xb4\x8a\xe4\x10\x80\x90^ђOt\x8c\xad\xa0\x00`\xbam\x04\x00\x91e\b \x10\xda\x1d\xc7M\xf8\xe7ԑ\xa6q\xcfm\xc7\x18\xa0L\x06 \x9c\xb6ݚD\x04gxMB\x80\x99\x80a\xbdh(\x9cUb\xaaU0\x98\x00\xb4Dž\xeaᑞ\xd3̏5\n\x88r0j\x9dv{\xb2d=\xb2\xed\xc8>\x11\x13\xe2\x01\x11\xe4\x1b\x04;\xf4\xa6\xb75\xd4Y\xada\x04Aj\x88\xa7:\x05\xb7\xbd\xa7\xf5\xfa\x065\xe7\xc6\xfe\x9c(\xc6\xd4\xc7\xe9\x04\xeb\x1a\xcb\x06?M\xa6\x98Q\x153\x1b\x13\xff\xe3E@)`&QrX\x16\xd3\xe4\x11\x1e0\xc8\b\x80\xf80&\x84R\x19Y}\xd8\x1f\xd5\xfd\n±\x18\xd3|\xab\x13\x01Fh\x94Wa\x94\xe2T\x12%\x1ed\xc7 \x13b!\x050\x06\xb3\xa6u\x17\x13\f\"7E\b\b\x0f\x04\x13?\xe7ǀe\x8c\xaeA:\x11l*\xc2R?\x82\xcacB\t\x91\xf1\x88[\x03\x8c\x19\x8a\xcc\x03\x98`?\xc6\xf4z\xddІ\x118˷Y?\xa9\n\xb6\xb5\x05\xad\x00\n1DÇ?\xa3l8\x0f\x16#\xb0\x1e\xc6n\x81\x90\xe1V\x8a4\xc6|\x80\x93\x01\xe3\x10\x18\b\x89\x02\xc1\xa0>I9 \x98\x05\xb1*`*\x9b\rD\a\x90!o\xfew\xa1#\xd01\xf1\x8e\x01\f\x9dǻ\x17\xa5\x02?\x88\x01\x10\xfb?X\xf4\f\x0f\x14\xc3k\x00'Q]\x06Hb\x18?\x8e&\xaa;\xc7\xd4?IH\xef\a\xc9\x13g\x1f\xd4\r\n̉\xb1\xf0\xec\xe8Y\x14!w\xf9>ѩT\x96'm0\x9c\x15,\x02-H\xae\xebd8ZOc\xa6\xd1\x19\x05|\xc9>\xd36\x06\x8d9\xcf:\xb2\xc1C\xd1}3A\xa1\xa5\x8a\x8c\x80\x90\xa4>\x95\xe6\x06\x96\xba\x05a*\xaa\x03k\v\xf9\xa0U\xfb\x82-\x8eF\x02\xbel\xb18RM\t\x97ݩ\xa8\x04g\x03!:\xe8\x800 \x14\x84Qv\x0edG\xb0\x9bw\xaf\xe5X0\xb8\xe4\xfa\xff\x9c\x1a\xd9\xe2XD\xc0\x1d\xc1^$G\x85Ҿ\xe2\x177E\xbe\xcfvI\xf6\xc0X\xe7\xd1\xfe\xc9\xfd\a\xf8\xcaO\xdc\xfaǬ#\x9f\xf0{\a\x14Y(\xe9G\xde4F\xf2\x88F\xc26\xaf\x84\xaby\x85\xa8\x871\r$簫\x98\xd4)\x88\xa8\xf4[*\x03\x06\xae\x06g\xeb\x14\xefб\x9c0\x92\xc4\xe9\x04\xe1p\xae7LBX\xcf\x0e\xf6\x16c9ZL\x11nEa\xd5.\xac\x93\x1d\b\xb2*\x93\xa0\a\x17W\xaf\xc3\x19\x01x)Q\xe2\xe6m\xbf\x91r\xc6]r(8\xd0j6:ĥ\xfa\u007f\f\xf1K\v\xcds\xcd\xf2&\x1b\xf4p\xad\x01/\xc1T\xebi\x15\x88\x01\v\x94\xd3\xfd\xba\x821P\xac\x05\x82<\x13\xa0\x13\xcb\xe3\xe0\xc8\r{yBY\xcc\r-\xd5w\xf9p(<\xeehr\xf2\xf6i0\xfbDv\xf5\tf\x02\xe3\xde\x1bٛ718m\xb6\xb2\x9c\xe1e\xf0I\xb5\xe8R\x95\xd1\xc9\u0378\x0e7\xaf\x14H$jH\xe7vQ<6\xf4=T\xaf_MC\xa50\xaf\a\xa0\t\xe7\xc9f\xe3\xec\xd9R\x8c\x1e|\x9e\xe8^\x9e\xc2f\x1fd\xfa\x97\xbd\xbe\xde\xe3\xcbE\x8c\xa9\xee\xca\xfa\xf2\xc7T\x17c\xe3\x12\xa9\xb371h(.;\x1bM\x18P\xbf.A\xaeK\x81<\xba\x14\xe7^\xcc-\x02\xf5_\xf6\xe1J\xc5\xc71\xcal\x9a\xfbF\xfa\x02z9\xa4V\x83(Sj\xb8\xfe\xab\xfdx\xd5\xc5\x15\xae\x91\xf8\a\xf0\xab\x84\x13\x1d\x11B\x9d\x9b\xd8U춸A1 \x11\xd4\v\xeb\xc5G\xd6p\f\xfcZ\xfa\x90\xa7\x16\x98,\x9b\xafI\xe9M}oZ\xb0\x80N;\xf8\xf9\xa5\xe6)}m\x10F\xb6]\xddz\xec\xbb1\xb1\xd7ǛL@\xd3\xd3Z[\xae)m1\xf7\x96\xf6%\xc3ࠆ&M)\x95ʤ\xe7\xc1\xef\xc9ɽ\x1b,a\tg<'\xfd\x1a\xed#\x1f|\x00V\xbb\x04%\x8c{p\xc1\xd7ls\xc6:\n\x86\x9a\x13JR]\v\xfc\x830\v\nv\x10\x16\xd8\b\x0fw\xb5\xb8\xa2\f\xff\x10\xc6b\x10\xeeh\xa0ټ\xd5\xf2\x14u?ݎ\xa9\xba\x94Ȝ9č\xfet\xf9صq\x134uk\x98\x0024:\x04\xc1\xa1fB_nh\x830\xcc\xc2\xf9\xef>a~\x1c\xb3!\xe3\xc0\xe5\x18F(R_e\t\xad\x13\x06\xc8UKs\x9e\x81\xdfK\xd6m]:o]n\x96)\x1c\x1b\xb3iE>\xbaa\n$U@Si!\xe1\xf2\"\x01\xb1\x00\x10Z\xb9\x1b\xd7\xfd%\x01\xdbŞ\xec\x91\xdau\r\x84j\xb7\x83@\x81s.j\t\x86\x05\u007fC'\x98\xbcG\x81\x9e\xc9\xd1A\xa5\x879\x82\x9d\x0e\x81(\xda?\xd82\u07ba\x0fr\xd5ԗ\xe7@K7\x1bUъ1BO\t\xe5\xd9c\x82f\x865\xf53a\x88\xa3\xfd\xbd\u007f7\xa1\x942\b\x1bQ\xebl\x04H.+\x88D\x01\x83{1\x14\"\xa8\xaf\xd6e\x84T\x00a#\xe8j\xfe\n\xaf\x0f\xe15\x00\xf2\x8c\x16خC\x12\xcc\t3\xc0\xe1\x00\x9c\a@]0ƹ\x80\x01\xaf\x05LR\x019\xaa\x11\x8d\x91>L`l\x15`\xe8\x93\xcb,\xd8l\b\xadӑ\x93\xb0@#ƀ\xcf\xc8\xc0(\xb4\xea\x18#\x90{4g\xcfx\x00\x03\\8\x002&11\x98\xc0O\xfc\x83\x1dX\xd3d\xc2(\x02b\xe6@\xc3\x02v\xbe\x15$O\xf1\xbc{.Y\xa7t\xb6\x0fz\xea\xfd\x85S\x8f\xb0\x03\xb0p\xc3\xe1_\x9d\xae\xb1\x8b\x00\xd9\xcal\xae\x98\x8f\xa4)AR\xca\xf1ԣѵ檍\xc7\xefG\x8d\x16\xea_\u009b&i\xe9\xc5\t\xb6\xa9\u0557'3\x1d\xddW\x10\x8b\bB2\xe0\xe6en,˘\xc5HCP\x83x\x05@\xf7\x93\xa6;\xea\xccrHA\xf67\x02\x9a7\xe3!{\xca\xf3\xef3\xfd\u007f\xb4N۲\x98\x1e\xeb4\x0f$\rkj\x9e\x0f\x03\xcd\x05\xd0@\x1bђr\x93\x11\"\x9e\x99${\x83\x97*\xbe\xa92\xaaE@A\x99\xfb\xa5e\x88\xbc'\x8e\x96I\xa9\x85\xe0\x8c\xf6\xc6\x12➤d\x1f\xa6\xa7-\xb4\x13\xf3\xeda\x06\xb6\x06\x00\xf1\xdb(C\x1c_a\x04zy\xbcD?\xb9\xc0\x1d\x19x\xfa\x02\x80~۠\x84\xe5+\xab6\x18\xc8\xda\xe8\v\xd7qWv\xe5\n\x82\x11\xcfE\x85-\x1d\xab<\b\xed_\xach\tX\xf1\xca\x02$\x850\x80\xe8\x93d\xff\x13{]rB\xe2=ӄ\x16\x0f\x89\x89\t*\xb1JXα\xa2\xb6\xb1\x18n\xb39'Ε\xac$\x84\xa8lKr\x8d\x8e\xec\xcad&\xe3\xc2\xc9\x060\x1a뺥p\xa8\xc0\xa3\x00\xb5i\x9a\xfbj\x9b\x17\xe1\x00\u007f\xbc\xa1\xc65Z\xe5]\xe9\x02#@J\xcdH\x8a\x8flp7\x86\t\xa1\xfeK\xd0\xf5\xe6\xfb\"k\xd5H!A\xdcc\x1b\xf8\xd6\xeb\xe5\xdd\xd9\xe9\x1d\xf6\x1d\xca\xf3\x12\x00\xeb\xe8\x8a\xdb\xc5\xfc\xf3y\x1f\xdf̽X\x10\x90+\xde_1\a\xfaj\xb6\xe4\\v\xf3Y\xf0\xcf\x1b\xb6\x93\xf3x{2_\xbb\xb9\x1d\xc9\nv\xbb\xb0\xaaҚG\x88dV\x14s\xaaXi\xa4\x84J\x9c\x91K\x82\x18\xc0\x94(x\x92B\x89\x12\xd4\u03a2qT\xb7ki\xb3fP:\x18\xac\xc7\xfa5&!K\x98\x83Psv,%f\xef\x8a\xe2S\"\xc71\x1b\xe3\xa6\xc4ޏ\xcaS\xe22\xba@\x80\x05\xf5R\x9e>)V\xd5\x05&\x00.\x9f\"ń\xc6\xfc\xf3\x17k\xf2\xbf\xe5b\f\x80\x1d\x18\x82\x12\xe4\xb3X\x8b\x95m\xa4\x18ˮ\x8a\t\x96\xe8\rX\x80U8\x94d\xb4\x19\x93\f\xb6\xb7\xf7\xa3K0\xdcop\x011/\xe5f\x8bY4|o0\xf0\xa9\x94\xe2g\xea\x16\xb3d\xb6\xb8\xc4p\xe0\xa2d\x89`\x90\xa4\x84\x9e\xac\xf0\x9fQg\x80\xe0tˊ@\xbf\xe8\x18\xbd\\{\xa9\x9d\x9b9\xed\x8dXZ\x10\xa5\xb2\x1co{\xb8U\t\x1b\xf3{\x17\x96$\x9b%\x9e\x17g\x1b'O$Mzw\xed\x00\xfa#\xa6\xab^5\x86\x939\xee_\xb14ߪ\xb6\xae\x9c\u007f\x11\x1fT\x8a\v\xd9=\xd3J\xcc\xe6\x96h\xa1\x17\xc1\xf6;#\xa1]\xe7\x0f3`\x91\x0f\x8f\r\xf6\xaf,\xd8l6\xa7\x87.wa\xfa?H\x8b\x14r\x15g\xad,g\xccׂ\xdf\xcc\xe6r\xafA\x04s\xf1\xed˕\xc3\\\xe2\xe4\xa42X\x98\x1d!\xbfc4c\x91M.U5\xa7|o\xe4\x93\n\xb4\xdaq1/\x97v\xf2\xc4Oy\x14\xbb\x0ee|\xc3o\xfc\x91<\x05\x003\xa1\xd5\x18\xb10\xac\u007f\x99\xb3\b@D\fc\x9a\x93\x035\xf8\xff\x045\fLE\x9d<\xd1S\xde\u007fX\x8dD\xfc\x16\x97\x13\x94\xcbA@\x912\xcf\xd6\xc5\xdez\xd7\xcb\u007f?.\x9c,u!\x16\xb9m\x14\xe6hl\xfb\x86\x0eI\xfb\xfa\xf6\x8e\x173\xaa>\xc5\n\xe3\x93\x00T\x1a\x1aR*$\x8fd\x9e)!\x8c\xf6\xb0\x82#\xe9\xe4\x873þ\xbej<\r\xe6]g\t\x17\x9e\v\xc4o\xc5\r\x05N\xf8'\xf0q\xc1\x8348\xf0Ó\xc0\x19\xb8\xff\xe0\xcb:\xddbb\\\xa3v\xe0J\xa7s\xa3A{^22n(\x971(\xa1\xa0\xeb\\ѥ\x04\xb3\xa4\x9ceJ\x14 \x93˳1w\xc53\x8d\u007f\x0f\xd5\xc7|\b\x95\x14\xef\xe1\xf0;\xaf\xce^\x93\xa5LRDEe\xadi\xe1\xb7\x12\x1c{\x8ak\xce1c\xea\x17\xbb\xb8ů\xc2tg\x00I\xce\xfb\xb8\xf8\xeafן>\xd5\xd2\xe6\xb2V\x9f\x8e\xf5\xeb;hk\x87\xe0Ӣ\x95g\xe0+\xe3\u007f\xf9\x18\x98-_z\x16,\xec\xf0\xb1r\x12m?33\xa9rF\xa6\x8bO⯕\xa0Z:\xd9\xfb\xa2P\x9f_UqӬ>Ը\xf8\xcbEI\x89\x1f22`\x94IQ\xa6ϯ\xcaxߊ\x0f>\xd5C\xbeT\x9f\x9a\x8a\xe1\x96R\xef\x8e\r\x1b:\xc6z\xfe\x8a&9\xfe\xa9\x00\xc3@\x93E\xddį\n\xda\xfb8\x95\xf1\xbd\xc2\xdd\x11\xa7P\xd5C\xbe㎓\x95\x85\"\x8d\f\\i$,\xdd\t@\x19\f%\b>\x033\xc7\xcc\x06ȵ\x04L\xf7\x03\xc81\x16B\xf5\x11\x10h\x9a\x00bVf\xeb\xcb\xd3o\x90`\a\x9bKc\xa7ҽ\xb6*G\u007f\x99e\x04\x8e*A\xb5\xaf\xc63\x8c\x1f\xc8\xdd\xe5Ǟ\xee\xbc\xc3b_\x82\xaa橂\xe0ִ\xb4\x88/J?\xb5\xad\xdb,\xb9\xfc\x90*?<\xa1v\r\xf2\x0e\x12\x04J\x83Dyk\xb1\x85\xbe\\\xeeG\x88\xf4I6{\\?\xea\xb6x\xb1ǵkn`pف\xaen\xb0\xaf\xab+g\x03\xe7\x03{#\xc8\xea\xe3\x11\x95e\x10\x1f\b\xcb\xd0%\x85̗\x03u\xf5mn\x1f\v\x8a6\xb0\xb0\xd8\xeb\x0e\x93\xac\xb0 Ω\xa5\x9b\x9d\x98\x12\x99F\xa1\xbd\xa1P\x94a\x93\xaf\xb38\xbal\n2\xa6\x95A\x82\xa2\xdd\xc1\xe4\xc8P!Y\xbf\xb4\x8e\xa8h\xee\u007f^\xd4\xd3g\xa8\x1e\x1c\xdeO\xb8\xa5\xb8\xe0\xe6t\x9c\xb8\xb9c\x90\x00^\xf7\xbd\x83\x94🞃%\xc8\x14\xe4h\x0ep\xa0\xeb\x91\xc3\x0f\b\xd2\x03̕\xc4pM\x90\xb1\xa3\xbeG\xf1\xb1ޱ\x91\x85\xc1\x1ew85\xc6\xcel\xb3Ij6~3k5\n\xf3\r\x9d\xa2\x15\x97\xc2L\xae\"oq\xf7\xe2\xe2\"\xf5:'`2S\x80\x8c\x16\xc5p\xb2\xcdYg\x9eSZƑ\x816B\x19\xb7\xb44\xc4J\x13\xba\xfe\x86\xbf\xe32\xd8g\xf63\x94\x04\xca\x19jB,\xf6퉨`^,\xcb\xd2\x1e\xe3=\x15\x82\r4~\xd6\xf0\x02J\b9?\xf6p5\x84\x92\x00\x9ef\xd9\x05\x10\xda\xef\xf0\xd2\xc1\xeee\xb4V\xda\x18\xe0ͩ\xf5\xb4M\x9bh\xc4_\x15\xe4\x8a\xdf\x16\xdfw{\xc6\xdeL\x1a \xb1\x1b\xe5%\x83Wػz\xcc\xc3bF\xe2\xc5a:\x05'\xeeL\xe8\x16\xb3\xb3\t\x0e֣\xd7\xed>\xbc\xd2\xeen\xa3\xd33\x141\xd6'ڷ\x96\x03\xbe\xb8\x98\x02\xa7D\xc7\x00\x00=\xb0\xf1\xd0\xcd\x1b\xba\x1a\xf1\xf1\xabV\xa5\xac_\u007fy|\x1c\xef\x02P7\xee\x13\xff\xde\x03\xf7?\xc6#\xe5\xdaZ\xf4\xc1\xcb\xd0_\x18\xc0\x04w}~~{\x12\x14\x87\x18\t\x17\xb7\xa3F\x01\xfc0M\xbb\xe3\xa0\xf7\x86\xde\x1d\x8f?-\x13hSt\x1d\xbd\x11g\xa8\xe6\x99)Q\xb0^\xf7_C\xb0\x15\xbav\xcc\x05\b9\x1c\xbe\x99\x0f\xb1\xc1\xa2\xbcr\x83\t\x1ao\xffa\x96ȱ\xb7\x86\x99\xae\xad\xea=(\x87\x92N\xf4\xee:f\n[\x84Mr\x9b\xffб\x1f\xc1w\x9eq\x9f\xb9\xfc\x81\xbb\xc7sa\xd0\xd8ʨ\x19\xdb\xd2\x18\xba\xed\xad\xcf\xd5(\x1c\xac\x81Zi\x87\xbc|=f\xfa\x1d3\xb3\xb1\b\xf5\xed\x80\x06\x91\xad\xd0緩n\xb4.\xb70\xa2FgDU\x8e\rZ\xe8\xb9\x16\xf7\x85\v\x85?ɲ\x1b\xc44Lۤ\xa2\xed\xab^\x06\xe7Xs\xcf\xdd\x0f\xccݏH\xd8wG\xf8\xad\xe3\xb8I\xbaPI\xa9\xfb\xa1Ύ\x90\x03F=]\xa7\xc1\x04\xc6h:\xc0\x9a\xd6:\xda{\xa8σx\x82\xd5\x018\x15\b\xde\x02\xf5kQ\x9e\xaem\xc3\x10ԣ\xa3s\xa5֮\xf9Z\xd9\xec4\x1a\xd6\xfd\x1e,\xab\x12\xb3\t\x86\xd7븗\x89Ƽ\x9bH\xe1\x00\x8c\xa8\x1e)8\xe2;\xdd$9\xde\xf1\xd2\xe7u\x1f\x1b<\x94`\x95\xc6\xd92\xed\xba\xaeT\xe9\x9a\xed \x05 \xb6o/\x91\xa2\xb6\xa5\x00\xdeX\x0e\x18P\xac\x83\xb2ۡo%\xf9\xadk@\x87\xc6S\x82\x8d\xe4\xd1\xcb\x15h\xcd\xf4֪\xda\xdd\xddE\xcf\xf3\xc2\xebb\xef\f\x97Vͫ\xb8\xfc\x91\xf2\xd8d\xf7\x15\xdf^\x95O\xb3\xde?\x97\x13u\xff\xc0\xc4?\x98\x198q\xa2.\x9e\x88\xa7\xffߌ\x9e\b\xd9G\xa9Dl\xa9\xa5ٙ\xc7\x04=I\x19\x8f6/h\xb4?\x92\xa6\xef\x1f\xbe\x13W\xef=\xe9e7HY\x01ՌF[\xa7)3ɿe\x1a\xb8$!\"\x89\xdf\xe2\x1cGy1(\xa1\xf9\xb6\x8chx\x82Ђ\x8e[\xe0\x15V\xeb\xf1\x83G(\f\xdep\xf1`x֥\xaf\vIpZB<\xf8\xbb\x80\x8b0\xa1\x02\xbd.\xab\xab\x1f\xb3~\xeaТ\xfd\xe3>\xebv\x02D5\xba\xafyB\xd0v9\xada\xb8\xb0\xe9\x95\x01\x1c\x1coɑ·&\x04/`\xfaͩ/v\xd9\x16\x8e\xcc\xef\r\x01\xef\xc7&4\x1d\xf2{p\xb7\xd1梭\xad\x1bT\xf3\x851ɫ\xba\xb2п\x1a1+\x1az,\xe3\x15\xed\b4\xe7Nύ?\x93\x8b\xae\xed]\xd4;͓)2\b]\x8c7\f\xd1EKAW\x03B\tIR\x05Θ\x11\xa8:\xbf\x8ei[+n05\"\xea\xd5.\x81\xc2\xec\x9e\fF\x1f\xc4\xdf\xdb\xcbJ\x9d<\x0e\xf5e\x8c[T#\xb2F\xad\xd9x\xe9kND͏0wdn\xfb\xa4)\x99\xf6д\xbe\x80k\xd1\xf5\xac\x9cOW_\xe1\x97m\xfa$I9@\xce\xedT\x9a\x92\x02\u0087\a\xc0\xd9\xe9\xfdU\x15P\xe5tl\xdc[\xfe\xbe\xf2\xbf\x1d\x88\xff,\x1f~sfŀH\xf2t\xc5r\xec\x96C\xd4\xdcul\x93[!\r'Pk64\x8e\xb1\x9e\x81ȉ\xe6\x8eѭ!zď$I\x92k\xb8\xe9\x1aC\x9e\x1c&\x82\x84\xb5\xcb\xd4b\xcf\xfd\x994\x93\x9b>\xde9o\xebÚ\x9b\xf9đ\xce\xfa\xc2G\xffi\xc3\x13\u007f0\x1add\xdd_\xe7\xeb0\xe7\x96\xd7 \xf2\xa3P\xf3\xea\fR\x96\x9e.\x98\xf5\xfbT\x1e\x98\xee\xa5r\xeea\x03o\x0f\xf5\xa0\xa2\x03]\xad\x9dN-\xac\xe5\xa9Lq\xd1q\xb0W8\x9e8s\xeau\xf4+\xddJ\xd1A\x11\xa4P\xf3)\x18\x0f%y\xa00\xea\xc5?\xf72\xda1\x9a/\xc7e\x1b\xb5\xb7\xd3?\tl4\x9eȗ\xe0$\xb3\xa2\xa8\xe8\xa5\n\xab\x9aj\xd4\x01\xe0j\xc4\xcb\"\xcc\xfa\xa2\xc2\x13\x05\x0e\xfb\x15\x14\xdeI\x8c\x13K\xca3\v\vOd\x1a\xfaO\xa8R\xf0l;\xbd\x97\xae\x84#\xe6x\xcdQv\xe8\xbd\xf4z\xcb\"]\xcc|H?\x17\x82\xf0\xb4\xd4\b/\x90\xf5λ#\x1f\xf4\xf5\x16x\xd9jkm\xa0-\x14\xcd\xc13Hd,\xee\b0\x14\t`\xfe\x18\b]\xb3\xfc\xe6\xc1a\xc9$fb\xd8Fx\x94ܴ\x1a<\x9d\x8a3\xc6\x13\xb4\r\f Ԕ\xc9\xc0ں\xe3\xab\xf6\x8c\xcd\xc1d\xb4\x85\xed\xa8{\xea\xd0\xf8N[B5]\x1d!8(0\xbe\x03\x13\xf2\x97\xc2)t\x0f\x0e\x15S\xd9g\xfc\x1a\xa3'\xc0\xd3|\xd4\xe0\x9dq\x93\xf0\xbb\x90KPAH\xdd|\x13\u0e67#(Bo\x88z\xa2\xf0\xef~\xaaG\xdb\xfd\x9a@\xd4\xe2\xcf\xf3+\x12\x11\xbf\xf3\x04\x16\xf3=\x8d\xf5\x80ɼ\xe8y\x91I\xbeUC1\xd7\xdc\"\xeb\\\xc0|\xc0\xa2\xbdg\xb2\b\xd8\xe1\tU\xa3\x14\x80d\xa4\xff\"\xa4[\"W\"\xb05\x8bP\xb5a3\xfa\x99\a\xf8\xe5\x88.\x9f\x95\x11\x1d\xa4\xc8k\x16\xe7\xe9\xb2\xed\x86u\x9cHEX\xf4\xb1\x01\xfc\x059/\x81\xe40\x8a\x91_\xc1\n\x83\x8e\x12\x1eY\xe2\xc5Ygؾ\xec)\x87\xb5\x8d\xdb\xe7\xf0v\xf4q\xad\xbe\xfb&\x8e\xf2\xa0|\x0e\x88\x19U,:\x00~\xbc擹Ӯ\xb0\x98\x14\xa2\x17\xc2N\xa8\xb4\x8c~\xcfI~J{ꔢ\x80\xfe\xcc3\x16;\xff\x1f\xca\xcc|?W\xee\x93<\x94\x8c\xb0\xcdZ\xf6\xcbKf\x80\x13\xc1\xc0R\xac\xe9\x16\u007f\x049\xd0\xf5\xea\xec\x87\xeb\xf7m\xe0\xdd\xd9*ͪ3\xffexH{\xa5V\x06\v\x8d\xbb\x0f\xcb\xf9P\xbe5\xf4\x83:4L8\xf5.\xbe\xc07\xfe\xe2\xfb˛\xccC\xffȦ\x81\xbaa\x06\xf9\t\x02\x0eѺ\xe3\x9b>\x8a\xff\x12̭r>\x86to,B`\x8a\x95\x8f\xf9K\xb0\xf0\xba\x0f\xaa\x99\x15\xffq\\\xe7\xd30f\xe7+\xc2\x11\x1c\xccc½\u0bff\x1e\x0e\xaf\u007f0\xff\xad\v\xeb>\x12\u06dd\\\u007f\xd4U\x16\x04\xc3g\xdb^\xe8\xfb\xefô/A\x12\xdf~Ct\xba\x9b\u007f\xe2\xf8\xbcFd\xf9\x8c;%\xef\x18\x8e\x84$\xb9\xb7\xbe&\xfe\x00\xdf3\xfc\xc8V\x96`'\xcc\xdd=\x10\x8d\x99\xf60YݷI\xb2d\x86\xa4?\x93\xe4\x1eZ\"Y<\xec\xc1\xd9w\x9d#\x0e\xe9\xe8\xf0\xf0\xf7\x9a\xe2e\xb9]'\x96\x83\xd5\xees\x93\xc4\xcdM\xb9\xd1J\x04ґ\xd2y\xbc\x81\u007f\xbfeXҼ\vKt\x90\xd3s\xa3\x9a\x9b\x92\xc4Κ\xfa\xc58V\xb1A\xcf::{\x0f3\xb0\x99Ɔ\xf0\x91\xe9\x05\x9b\xfdK?-\x8e^\x80\xaa^΅\t\xef\xe2)\xbe^\xfe;\xc5\x1d2\x1c\xb5OLjO\xe3\x11\xb4\xf2\xf6\xad[\xc1\xde\xebm\x9c\xb6c\xc7z8=Ǐ\xaf\xe8N\x9dB\x8f\xe9\u007f1\x1e\xd3\xf1\xea\x02\xc1\x82}r\xee\xb8w\xeb߫e\x17\xe7ӊ\x1e\x04\xc8\xdaz\xb8\xad\xe0\xebm\x16\x9b\xa1d\xb0\xcf\xed\x18Us\xe7\xfe\"\xce\nC\x1dZ\xa5C\x99\xad6\xba+\xa4\xec\xe5\xb1>3`\xe3\xdd\xe3=X\xb35\x86-\x82\x98\xddA\x9d}j\xa2\x89\xb9\x8f\xaf\x9d&\xf1c\xc0\x95Ϙ\t\xfe}\"\xbf\xbe\x1eq%\xae\xe0n3\x8f\xee\x18\x9f\x99\xdf\xd4\xdd\xdd\x04\xb9\xfc;\f\x18\x0e\x1e=\xaa&>\xb5\xb2\xa9\xa9\xd2\xe2_\x90\xab3B\x81\xa4R\xb9\xeb\xa9\t\"_\xcd\xe8\xfbh^\f\xe7\xa3\xeb\xdejW?\x93/}\xbft\x11]eC̪,\xba\x1b\xa8)V\x9dTzq\x01\xe0\x9a\a\xb3\xbaϙQ|\xf8P\x8f\xb7+y\xc8\xcbk\xadT:ϫ^\rٹ\xc8\xcb\xdd\x1ct\xe4\x15\x8fYPz\xfal\xc1\x0e]\xf8_fyJ:\t&>\xb6'\xb3z\xd5n\xb0q\xd9\xeb\x95]\a\xc2J\x0e\x1c{\x92\x06\xce#\x9f\xa7\xaaV\xa3\x8c\x85\xef%8\\\xe2;5^\xaa\xd8;\xf9\xb9\x98\x97\xa1hX!ge\xd4\xeff:˵\x17\xb2Y\xf6\xb2=\\\x16\xc9-\x03L\xf0\xef\xdcVQM\xa5\x88wǧ\x10\u0086\x812\xae\xb2\x90b{\x16\xc0\"?\xcff\x8ff\x1fҳ\xbeȪ\x98x\x1f\x97$ԔL\xe9\x11\xd4\xe9\u007f:\x03\xf0\xae\x94\xed\xfb\a\b\xfeS\xbeC\x88\xb6_\xf6\xcf&[\x97-\xdf\xfe\xce\xc5\u007f\xb5\xb7\x1b\u007f\xfa\x1c\xbc8\xea\x94\x16\xc1ko\\\xc4\x13&\x1fe\x91\x90\xc2FZ\x17\"\xc9|\x99\x9eI2N\x1c&\xa8\xc8\r\x99\xf6\x80\x848K\x1c\xed\xf4[\x98\xb7\xb3\xb2T\xae\xb9}\xc5\xf5\n\xe6S\xf8\xa0`~#\xbc\xf4s\u0892\x9f\x13)\xb7_\x01GdD\xf6\x04\x8eY&\xcd\xcfl]}\xea\x06\x95\xe7\xce\x19\x1e\xf5\xf2\xa9խ\x99\xd5\tk\x99te\xa1D\xda2[%\x1ev\x8e \x99kV\xec4'\xff\x14|R\x87 q\xb2\xe4W\x06\xa7\xb6'\xc0\x8c\x827C\x9a\a\x87\xe8\t\xc3,\x96X\x1d\xe7\xebp\x1c\xdc\xd1wj\x91<\xee\x0f\x0f\xdd:\xa9\xfd\xbb\x8bI\xe0Py\xfc\x1f\x97\xef\x8fz\x82np˵\x97\x94\x9f\xff.\xd7\xf8\xf3\x03ۺӜ\x13\xaf\x9e\x8f\xe3\xa6κ-9\u07fb\x94\x17x\xde\xee\x8b\x0fp@(\xfc\xec\xa7\b\x84L-ɖ֧\x95\xd4w.$\x1bb\x8b\xb5Ӕ\xc4.\x1eN(\xecK\xb3%i\x99\x02 \xea\xff\x99\x12\xc4\xe9\xa3|v\xde\xc2\vw\x9e\xcdG\xb5\x9e\xbd\x13y\xc5-Y\xfd|H\x00sæ\xbe\xa9]7\x0fuaB\x11\xf0\xfe\xda\xef\x8a\xdd\xd4{\xfb\xab\x1b\u0381i`\xd4C'\xbf\t\xb7X\xa6\xb8ݞ\xab\xb3\x1eM\x85H7\xa7}\xf6\xf7Y\x8d:\xff\x98'\xcb\x01\xff'\xf2ѡ\xf7x\xa1\xef>\xde\xf1\xe7\x88\f\x8a\x0eHW@\x16\x89N\x90\x8c\xa8\x02\x88\x10\xd4\x1a\x04\x00T\x83\xa6\xdds\x87\x83)\x91\x12\x84\x00\x81UÊ\xe6{\xae6\xff7\xa8\xf5\x11\U00069760\x9c\xefyA\xb0\xf3\x90'\xee\xb3\x19I3\xa2\xafs\x19\x94Qf\xed\x9c)\x18q\xf8h\xde\x1a\x8a\xf4\xc9F=\xd1\xd6Ƞ\xd4\xce\xdcO\xd8#\xb5p\xaa3\xd9Rr\x82Õ\xa0;\x02\xb3\xba\xb9.\x99\xe24\x98\xabw-\xbc\x16\x91\xe3\x9a\xf0k\x97\xa0\xa6\xb3q,\xe9\x14\xf1\xfe\xba\xe6Ғ\x92\xb6\xe2\x9a\xefscq0G\x063S\xa0\x86\x1d)\xf8x\aHkE\xc6q)\x12\xf0\x8c\xb4!\x1b\xdc\xfa\xa6/;\xac4 $'0\xaa1\x97\x86\xe4\xb82pD\x90\x12\x99\nQ\x10\xc7\x11\xe5V\xa6\x19R5\xb1|\xef:\x18\xc1q\x00\xd6b\xf0߿\xa8\xa9q%\x16U\x94\x99Փ\x81k\xeaJ\xa3T \xa3\xf1\x98QE\xec\xaag\xd2\xf3\xb4FfT]\xe3kQ<\xea\xe1F\xf0\xe9\xd3\xebW\xb5\x87O\xa8\x8f\x86Κ\xeeD\xe8\xd1K\xc7\xfd\xea\xea\xaaͩ\x03s\xbd\xe7*R\a7\xfb\x8c\xf5\x1c\x04\xbc\x82\x00\x00*\xee\xfc\x98;\xa60\xea\xa8^\x89\ai\xfe\xb3S\x13\x9eF\xfb\x97l\xba[5\xbbhjjb\x1e\xfe\xd1}W~*\x1c;\x02\x9eO\x02\x84\xc8{\x93\xbe\xcc\xfaP\xd44/\xf4t%\x17\xa8@\xcb\x13NɖF5\xa06$S\xfb\xf3\x1a!5l\xcc\x1f\xb8BT\\R\xf3\x15*Be\xaa\xa4\vYn\xaeoC>8c\xd36\xb9\x0e\xec\xee(\xa8P\xb2\xd0\xd4Tj/\xb2\xd2\xea]\x83\xda\xd1d`\\\x89.PkEڣ;r\xbdQC\x8f\\\x9e\x93\x00=\x9f\xc4\xff\x1c\x85T;\x05\x13\xad\x11\xf79Y.\xed8(ٴ\x02\xe1\xc7k\xb1\xc8\xfaA\xf4hР^y\n\xe5r\x05\xa6\x14\x86\xf6\x1bn\xa8L\x85T\x99\xfd|@\xad\xff\xda\"\x9b\x99\xf6\xd5\f\xf8\xda\xd5J\x89\x1a\x02\xcdP\x95>\xd8\t\x8d\xc8F\xf6\xf2\x9b\x12P\x17\xb4Z\x13\xb6ԩm\xeb-Qx\xb6\xa5\xb5H-d\x94\x1aT\x8c\x96\xaf\xb8\x96\a4\x8fw\xea\t\xab'L\x9a\x850\x8d($\xe5\nz\xd3\a\x99\xda\x1f8\fO/ \x00\xf2\xd5FN\xb7\x17\t%#\xd2\x14\xb2$\xf1\x15\x92\xef\x85z#\xffz\xc8pai\x82\x15μ6GZ\xa49ى\x9dr\xe8\x9a\x01\xe2\u007f\xac\x8b\xfc\x91\xff\xe74\xf3\x1bJ\xadmL7EJR\xac\xa9eH4B\xa0\x1e\x1a\xd3V\xe5\xd1b\x9e\xc2J\xadnt\x8aLֳ\xa1\xb7\xd4ok\x83+\x90D\xb4[\a\xccM\xc5\xc9\xdbNJ\x04o\xae\x04\x10\x92zutu\x86/\xd7\x12\x86\x8a\xbcs\xfe\xee!2\xac\xd7\aŇ\xd3*\x98\x8e\x15KF\xe0\x86I\xab\xa1\xb1$o\xf5\xbd\xb3\x1b\x19ϵ(%=\xd4\x00\u007f%@\xe2@\xa3\xbb\xdb\xff\t\xa0r\xe1c!B:\xa3\xe9\xd9(Q\xb3\vf{\xd9\x15\x99N\x1bX\x82y%]Td\x15\xf3CBJ6\x8a\xa9\x84\xfb\xdf]Hv\xf0X\xf5\x15{q[a<\xf2\xb3G\xf3\xd6\f\x81\x94\xe6\xe1\xc4f&\xbe\"\x1b\x87\x16\x8a4Ԇ\x84\xd1\nR氷\xd5B6\x19\xb0\x94\xd9\x12\xc2T\xa3\x1f\x80\xdd6\x17\xa5u\xf4\x81\xf6\xcbԨ\x93\x15\b\x19\xb9\xbbrvƲ\xda?w[\xb9j\x0f\xcf:K\x8dgJ\xa7\xa9^\xdc\x11g\xc3V\x8b\xf4#\xb5ի7t\xa8\x13\b\x90\x8c3Jgd\x1e`\a\xadߪ\n\x06\b\x0f\xdb\"\xd5Ac\xb5\xa7\x86\xfe\xd1p\x14m2{\x81\xc5R\x89N\x14J\x99\xb8\xa3$3?\xa6\xbaH\xa6\xdb\x1cJAx\x85\xceMnU\x19\xbd\u007f\xd0ְ\xdb\xd8\x11\xa3u$U\x87\x1b0O\x8bN]\x93U*\xd3\x12\xb9\x91\xd0\xdf ^ڦ\xa8e\xa5\xb7\x14d\xbc\xa560\x96\xbfB\xa5\\\x9e\xd64/ӡE\xeb\xeb\xd3L\x1ezp\x1d8\xf5\x1b4\xfau\xcb\xdav?Ї\x11\x11\x8e:g6f\xcd\xfa\x02\x98\xc9t\x1fa\x16Q\"\xb3\xce|\xe4+G\xcc\xf9\xa5GJ\xc6\xdfi\xa5\xfe\f\xd7\x1a\x91e\xb8\xc2M\a$\x11\xedA\x18xg\x18\x132\x96\xae\x18#\xe2\xb7\x1ae\xd4h'\xeaܦp˓\xac\x94z\xc0\x16\xb4\xd2Hz\xa3 gO+qY:\x91\xe3\xbeZ2y\xd6\xef\x19\u007f\xb0\xef\t\xa9Q\xc5(\xd4Yȑ\xcb\xd9#VmR\xf9\x18\xf0yt\xf8ń\xeb\u007fd\xca5\x18\x99\xd7i\xf9\x8a\x13z\xe3\x14\xd2NvL\xae\x86\x02\xfe\b֯t4r/\xdb\xd0T\xd1\xca\\_Ҩ\x1fI%\x95\xd8\x1dK\xdd\u007fn+\xa5\xe2\n\xb5\x89\xcca$\x8eO\xb1\x18\xf4Ϲ\x97\x0e\xd4\xe3,\xe4\b0oԙ|d\xbc{\xa5\xe1HA\x97\x164\x02Y\xe8\xadS\xc42V\xd2G=\xea\xfd\x97\xd1\xeaN\xb6[\fl\xf0\x0fL\xa2\xb2t\x12\xb5[nV\x85\x81?\xc3\x1d\xe7rŔ\x1e\x83\f\x1f\xc5\x19\x98\x1d\x1d\x92\x8b\v\xd7\xfc\xf3ƿ\xc8\xc2\xe3\xa7\xf9\x82ٝ\xf8\uf3f73\xca8\xe6R\xcd\x14՛\xf4\xa1}\xd4\xe4tرѨ\x03\x85\xd5\xdcN\x88\xef`F;!#\x9dM\xe1VfZ,\x97A\xcb\xfa\xc5\xd4G\x8c\x1e\x02\x93e}\x17MX\u007f\xb25\xf4\xa3\xfcI\x19\x971\xf0E~$\xb7~-\xb5J\x0f:1\xa3iL\aU9\x03E\xbb\xc4\xf1\xa5&\x86;\xa7l\xd4\f\xc60!\f\x8b%=O\xba\x9b\x80m#T6\x11F\xeaJ\xff\xedx\xc2\"\x91\x19\x8f0D\xb9U\xb6\x9bf\xa8\xaf\xcb\xe0\x15-u\x10\xe4\xd1O.\x19\xe6Ә\u007f\x17\vDC+]\xe1\x9ea\xa7(\xfd-\x1b\x06\xef\xfd\x89\x8c\xa1DZ\x8eu\x8e\xae\xfd\xf6|\x98\f\x06\xb1\xa9\xadY\xffKRbT`uTd\xe5\xaa8U\n;\xc7\x15\xb3\xd5^\xaf\xea\x1d\x8b\xa3\xc8[\xb7&H\xc7\x11Vn\xb9\xce\xd4T\fpK\xf4\xb5!L\xd4\xc7b\xf3C2\x16\xf0\x8a5fs\xdaPh6$\x13\b,\xe0`#\xea\x85\x1f\x86\xd8\xd51\x9f\xb2\xeeC\xb9\xc8,\xce\xceD\x18\x1d:\xbc\x0f3va#\xbd\xfb\x80\xb76\xf7c\xce\x13\xeb\xbct\"_@\xeb_Zw\xeb\x1fV\x06c\x19\xf3\xed\xf0\x11\x19\x10rU\xd9&\x91\xf1\xf2l\x03\x8dg3vg\xac5\x0e\x05\x91\xf2\xd9a\xaf\xac\xcb<\xbd\xca\rۮ\\\x9d\x1b\x1f?W^\xf0jL8\xaf'\x82\t\x89J\x8c\xf6G\x85\xc2\u007f6\xcd\xeb\xd9*'՜\xbb\xb1A\xe8\xc9\xea\xfd\x93\x92\x13\xc2\xc7Ҁ\xe9v\xf0\x18Q\xa8\xf2DGR\xd6M\n'\x96\xb1\v\xa2\xe1\xba\xcb\xc8(-\x0e\x9e/B%7\xb48\u007f'\xba\xab ԛ\xf92\xf7\xf3\x0e\xe3\xe7\xbc\xcf\xcaukV\xe2\xcd\xe6\xf1dI\xa7\xf0t\xf5\xb5W\xf3\xd1-ԅ1\xa3A\xef\x9a\xdby\x8f0E\xf4,\xdeoݨ1~w\x8b\xc1\a\xa2:\x1e\xf4Y\xcdU\x9ed?\x00B0\x82b8AR4\xc3r\xbc J\xb2\xa2j\xbaaZ\xb6\xe3z~\x10Fq\x92fyQVu\xd3v\xfd0N\xf3\xb2n\xfbq^\xf7\xf3~?\x02 \x8a\xe1\x04I\xd1\f\xcb\xf1\x82(Ɋ\xaa\xe9\x86iَ\xeb\xf9A\x18\xc5I\x9a\xe5EY\xd5M\xdb\xf5\xc38\xcd˺9\xb8ѓ͠\xde\xff\u007f\x90\xe2M,`\x16y8\xd7\xd8W\xe6\a\"\xe7[\xa4m\xc7\xec\xd7ץ\xe8\xef_\xedua\x1fjr0\xc0\xeeQT{\xbf\x8b\xafo\xfam\x14Y\x13\xbc\xa5\xa3\xba\xbf\xd3m*Nh\xe6|\xce\xe3|\xbf \x99S{\x85\x98۔{\xfa\xf7{\x8a\xfa\xcfw\x98\xa1\xbbu\xd81\xa3ye^\xa7S\xa9R\xf9٥\xcc\xf2\xba{Rx\xf8\xfe\x84.I>\x86\xdcM/~Uڝ4\x0e\x0f\xbd\xc0\x91\a\xa4\xcdGx\xc0ܜ\xfb\x9c\xf4v)e\xb3\xfc0G\xf9\xa8\x1d\xb0\x95\nǶ2\x1f\xaf\x9e\x9dgm\x9c\xd0\xfa\xfd,\x18E\x87\xc6\x1d\xceMGJ\xd2G'\xe3B\xe7\x97}o\x0fx\x167\x90\x97\x9b\ff+\x12gԒ\xed\x10^a\xa3\xbc⺹C\n\xd4[o\xe8\xac\xe1HcQ\xd4\xea\xfa@\x0e\xb8\xe3\xb6Mĵ\xd6\n7\x10#\xdb\xedR\xc2.\xf3\x8a\u007f\xea8\x8adO\xac!ar\xff\x13\x0f\x8cā\xe5\xa8\rs]oFDo\\\xa0\xde\xca݁\xda\xfb*ُB\xc9\x15ɞ\xa8Cl\x94\x03\xeeױR\xb6\x13\xb4_ϥ\xd6ڃ\x0f1^Α\xf1d\xcaFj\xa3\xeb\xc81$\xf6%6\x9b\x19\x1d)\xa2 \xf7%\x16\x8e1\xa1\x1d\x98\x91\\\xb8\n+H.\xe6C.\xebbS\xb2\xf0\x80\xfa\x86\x8fz\x9b\xc8\x01\xd9<>\xad/\x8f\xffN\x9d\u007fq\x1e\x1d.\xb2\r\xfb\xd3O6\\͍T\x1c\x98)\x94\xe8+\xebPJ\xb0\x8ev\xbf\xb9\xd2M\x89S\xaa\x06\r\xa4q24\x98k`\x13\x14\xf9 \xecx\rBjt\xdf\xc6M\xb9\xc0U\xab\xb6\xec\xb7K\xa9\xbe\xa1\xac\xd7&ՆN\x8cI\x89\xab\x8d8Ϻ\xde_\x8a\xf5N\xca\x19\xc1\"\x9eHRz\xb6\xba\x85cF/\xd2c\x9f\x81\xae\x82r9f\xf7\xf2.\xeby\xf5\xcaj\x95\xf3|\xa4\xc7\xe4\xdcK:\xf9\xd48Y\xef\xf7\x93,Q\x9dxj߭?\x95\xacR)\xdd&\x05\xe1\xec\x14\x91\x8f\xfdz\xaf$\xfb̙L\xf4ևq\xf6*\xb9\xaey\xfb>\x90\x03\xa9]ë \xb2!֚\xdc\xc4.a\xbe\xb7\xc1\x00\x19Z=\xa5c~'\x05\x19?\x91\x13J;\xfb%\x9eCJt\x85\xf0Ѣ\xf8\xe4\x9a\xff\xa7\u007fdy$\xaa5\xf3\x83\xbfw\x888\xf2\x8e\x11\xe6M\xc4L\x9e\x8e\x1dB|\xd3\xe4\x8fs[H\xd9QU\xd9\xd1\t\x15\x8b\xbc\xda>\xa0\xf4M#G3\xeeDx\x95$\nu\xa4l$\xed\u007f\xff/{9\xb8\xe8Sr\x9bt|~v\xc2c\xec\x019\xc7\xe5'c\x102\xc2\xd8\xd5z\x15\x90\xa1 1r\x13\x8e\x15=)2\n\xa3Q\xc5\xd7U\xa4.\x82\x05S\xec\xb2b\xbe\x9aK<\x82\xf9td\xeb\x95/\xc6u;ߕ\xe7H\xfd\t\aLĶ\xe9\xaex\x94}ى\xe6\xf1\x8c\x19+\xe7\f\xedΠ\xd9w\xaf.\xf4'+\xb5\xb1qDw\xde\xc0G\xb7I\x11r\x1b\x97\xe4\xec\xe9ީ\x84\x8d\xec~S|d\xaa\x89\xb7\xbf\"\x1eW\x89\xe9?\xed$\xd4j\xbek\x84\xb6\xb7\xa8\xda0+vpM\x98$+$\xefޜ\xcbUf\x89h\x1fS\x94\xee\xe2\x80'\xe3 \x9eh/\xfdDª\xb4\xf7h9NI\xf3\x19\xfblBֳ\xc9W\x9c\xbbQ~$={GJ\x81\xaaM>\v\xb4\xc8\a\xb4&}\xac\x9b~)\x05\xec(\xefH{zH\xf6\x06{@\xad<'x\u0090\xdeX\xf8\xa8\xb2X\x0f\xc7\x13Z)\xdd\xe1\xdf\u0089\xc9P\x0f\xa7\x83\xb6\xca\xdcpp\x05\x9ct\x83\xbe\xeaɔ\x97\x1b`\x14\xef&\x8a\xdb\xdd\xf1Yjk\xe8\r\x1d!\xce}\x87)?:\x98\xb1\xb8a;x0e\xbc.\xf0\xac\x03r\x97\xf9+\x82uH\v¹Q\xd4s\xa4\x9f\x1df\xa8\x9e\x1d6YW\xe8\xd0w{|\xc7C\xc5C\x1e$\xbc\n\xd40\x12\xb2A\x83\xc45\xa2\x91c5P\xea\u007f\xedζ]\xf1[S\xc2r:\x1a\x94\x91z\x03\xf6A\xfb\x0e\xc9F\x9af\t\v\u05ed\xe3\x15r\xf4<0J\x923\xca\xda1꣨ܘ+\x1b%\xdf\x03(wJ\x8a(\t\xba&\x1dZ\xe1Xa;\xe6\xd1&\x0f荝\x16\xfbG\xfc\xf17M%\xb2\xcd\x1f\xc2\U0005b4acc0M\xe7\xcc\x1a\xab\v\x9e(\xaf\xa3\xc9?*\xdf>R\x14\xb5\"\xafБ\xc5p\xae\x13W\x91z+/\xfc\xce7\xa86\xf9:q`\xaeq\x88\xb4\x87\xd2\x03\xd9Ea\\\x16C\x94D\x05\xc5:\xdd\xeb>^\xd9\xf3bV~R\xeb_5\x9d}t.\v+\xda\xe8G\xb6&\xceT\xbe\xd5\x04%\xeb\xe1\x8e$*<\xf8\x84T\xa0.ɾ\x92viε\x88\xb9\x9cGF\x9d.\xd7\xec\x9b\x18\xba\x82\xfc\xe0\\ۢ\x15\xf6\xa5\xc4P\xb2\xf9+u\x17\xce\x10\xf3t1<\xaa\x91\x1a\xf4\xf6l\xfb\xab\xab\xc6\xf6/\xa6\xa9\xcch\xea{\xb1NmE6\xe9\x14\x91J\xa9\xbd\xecս\xb6\xea+\xa26(\x83J\x95\xc5.ʗS~\x1e\x99\x9d*C\xa5kV\xaaU\u05ee)\u0097zic\x1f\xef\xe7\xf8߷6M\xd9X2\xbfZ\xb3\x15\xff\xfah\x96\x16\xc4\xce\xcc\x14\x92\a\x83r\rR0Y\xa5Y9\x90\x89~c\x9b\x00?ɋҎ\x0f\xd1\xc7ԂF5\xca&\xd6٬\x1b\xa2\xb3\xb7m\x9e\x1b\x03ѷ5\x92O\xb1\x8aZ\xd5\r\x94tF\xdbh\x95\xf4伎CJ\xb7\xc2F\xd6=\xa6u\xaf\x14߷į\xc9A\x1a6\xe4\x95\xf3աO\x0e\x801\xd1\xceYM\xf95\x02\x97+\xf0\x89\xea\xd6\xf9\x00=\xa8\x8c\x9etº\x92\xa5\xe0\x9c\xfb,IǸ3-=\x12\xc05\x1c\x91\xe5ə\x94\x9d\xcfR\x12\ue4a8\xec\x19\x8c2\x9a\xb5A\xdb\xc5\a۴:+Vt7tv\xab\x1b\x95\x12\xfb\x15\xf5ș6\xb7\x8d\"\xe7v3.\xd6\n'.\xbb?\xdf\fe\xc9vyܩ{\xa8\xef\x10\x8by]\xbb\r\x9a\xd7M^\xee\xb6\x1c\xf1\xfa\xfe\"y-\x84\xdbQ\xa1\xa4n.\x93\xe0\x8d\xce+\xed\xfe\xcfm\xbeH;\x9b\xa6\x88K\x0fn\a(\xd8\x15\xa6IQ,\xfc\x826n\xb5\xb6{\xe2k\xed\xa0\u007f\n\xff1\x1d<\x98L\xdap\xcd\xd0o\x94dC\x12\xad椧A\xdb$I\xec<\x95\x9et\xf9\n.\xe8Wzo\xe7\xbb\xc8?\xbf\xeaAT\x06\x04jV9^J\x1fr\x83\xe2\xd8\xdd%}\x1e\x18BÎl\xa2w\xe8,b\xe2\xbf\xcf \x8d\xcb,\xa4\xb1I,\xf5b\xb5\f\x8fɹ\x06*p\x03\x14w4Şd%\xbe\xcdD\xf6\x1d<\xf8\x11<\x9e\xde7\xd4\u008f?\xb2\x0f\xc7\xfc{+%\xf59\xe2\xe0\rY\xfc\xe9\xedxH\x96\xe5w1\xb0\xf3\xebGr\xfa\xa5\xff\xab\xb7\x97\xc4y\xfd3\x10\xeb\xd3'\xc9\x1f۟g\xff\xa1?\xf0\x13*M\xd8\xe8\xec.\x9c3U\xf4j\xd5$\nap5\x95\xaf\bv\x9d`\xae\x8a\xaed\x18&h\x17\x9b\xf5o\xba]P\xac\xd7?S\xd0c\xff&R\xa2`\x1c\xfc@9\xe6\xc4\xe1ͳ\x91#\x93a,\x88\x9c\xe8\x05'\xb5\x1c)\x892\xe5ko1\xfe\xf8\xbb\xc4@\xdd_,\xaa\xe4\xc6i\xdb\xfbT\x8a\xf0\x82\bev\xe7\xbb#i\xf9\b\x86\x87G2\xa3d\xbd\xf3}\x92\xe6\x99S\x1a\xd48\x85\x8d\xf7\xd2+V*\xa2\xe6\x1a\xf79\xe9e\xe0\xd9{\x95\xf2A\x8a\x89\xc1|\xb5P@\xa7ӯ$\x88;\xc0\x9c\xce\xcb\xe1\xab\t-\xc9(\xdb\x13\x94\xf2\xc3]\xb6\xae\tK\x83\xe9#\xcaGn\x1a\xa4\xb6\xcf\xca\xdb\xe1\xa01\xdf\x15\x99\x15~ \xfa\x1bƿ@\xf8\xff\xc1UffW\x9fs\x10-\xa2d\x887rĩ\x81\x92\x1f\x92pׯ\x1f8\x8f8%\xc7\v\xe3\xf9\xbdP6\xaa\xa7\x97\xc4\xebf>Ҏz5\xe4|z\xd0@\x11\xdf\x1f\xfe$\x8d\xd5\xf7\xc5#L$\xa1jӬ\x9c\x1f\x9e\xf0D\xf0Y\xf0n\xf0p\xf0s\xf0u\xf0|\xf0\x80\xf0\x86\xf0\x89\xf0\x94\xf0\x9d\xf0\xa0\xf0\xa7\xf0\xc5\xf0\xc8\xf0\xe0\xf0\xeb\xf0\xf3\xf0\xf8\xf0\xfe\xf1\x11\xf1\x1a\xf1\x1c\xf13\xf1D\xf1F\xf1J\xf1N\xf1R\xf1\\\xf1e\xf1\x86\xf1\x92\xf1\xad\xf1\xc9\xf1\xcd\xf1\xd8\xf1\xe3\xf1\xea\xf1\xf6\xf1\xf9\xf2\n\xf2I\xf2M\xf2[\xf2]\xf2t\xf2z\xf2\x8b\xf2\x8d\xf2\xb6\xf2\xb9\xf2\xbb\xf2\xbd\xf2\xc2\xf2\xd2\xf2\xdc\xf2\xed\xf3\x02\xf3(\xf3[\xf3\xa5\xf3\xd1\xf4\x10\xf4\xad\xf4\xda\xf5V\xf5g\xf5z\xf5\x8c\xf5\x9c\xf5\xa5\xf5\xb4\xf5\xb8\xf5\xc2\xf5\xc8\xff\xff\x00\x00\xf0\x04\xf0\a\xf0\x17\xf0\"\xf0$\xf0.\xf0>\xf0D\xf0W\xf0n\xf0p\xf0s\xf0u\xf0{\xf0\x80\xf0\x86\xf0\x89\xf0\x94\xf0\x9d\xf0\xa0\xf0\xa4\xf0\xc5\xf0\xc7\xf0\xe0\xf0\xeb\xf0\xf3\xf0\xf8\xf0\xfe\xf1\x11\xf1\x18\xf1\x1c\xf13\xf1D\xf1F\xf1J\xf1M\xf1P\xf1[\xf1d\xf1\x85\xf1\x91\xf1\xad\xf1\xc1\xf1\xcd\xf1\xd8\xf1\xe3\xf1\xea\xf1\xf6\xf1\xf9\xf2\n\xf2G\xf2M\xf2T\xf2]\xf2q\xf2y\xf2\x8b\xf2\x8d\xf2\xb5\xf2\xb9\xf2\xbb\xf2\xbd\xf2\xc1\xf2\xd0\xf2\xdc\xf2\xed\xf3\x02\xf3(\xf3X\xf3\xa5\xf3\xd1\xf4\x10\xf4\xad\xf4\xda\xf5V\xf5g\xf5y\xf5\u007f\xf5\x96\xf5\xa4\xf5\xb3\xf5\xb8\xf5\xc2\xf5\xc8\xff\xff\x0f\xff\x0f\xfe\x0f\xef\x0f\xe5\x0f\xe4\x0f\xdb\x0f\xcc\x0f\xc7\x0f\xb5\x0f\xa1\x0f\xa0\x0f\x9e\x0f\x9d\x0f\x98\x0f\x95\x0f\x90\x0f\x8e\x0f\x84\x0f|\x0fz\x0fw\x0fZ\x0fY\x0fB\x0f8\x0f1\x0f-\x0f(\x0f\x16\x0f\x10\x0f\x0f\x0e\xf9\x0e\xe9\x0e\xe8\x0e\xe5\x0e\xe3\x0e\xe2\x0e\xda\x0e\xd3\x0e\xb4\x0e\xaa\x0e\x90\x0e}\x0ez\x0ep\x0ef\x0e`\x0eU\x0eS\x0eC\x0e\a\x0e\x04\r\xfe\r\xfd\r\xea\r\xe6\r\xd6\r\xd5\r\xae\r\xac\r\xab\r\xaa\r\xa7\r\x9a\r\x91\r\x81\rm\rH\r\x19\f\xd0\f\xa5\fg\v\xcb\v\x9f\v$\v\x14\v\x03\n\xff\n\xf6\n\xef\n\xe2\n\xdf\n\xd6\n\xd1\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x06\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x02\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00|\x00\xc4\x00\xf8\x01n\x01\xbe\x01\xe2\x02*\x02\x84\x02\xce\x03\x04\x03b\x03\xac\x04\x1a\x04\xa2\x04\xe0\x05\f\x05H\x05\xb6\x06*\x06N\x06\xcc\a\x1a\ab\a\xe2\bb\b\xe2\t^\t\xb8\n\x0e\n:\n\x88\n\xe8\v:\v\xce\f\x18\f6\f\x82\f\xd0\r\x14\r\xe6\x0e\x1e\x0eN\x0e\x88\x0e\xc6\x0fD\x0f\x84\x0f\xc2\x10\x00\x10>\x10n\x10\xba\x118\x11\xb6\x12(\x12f\x12\xa4\x12\xce\x13L\x13\xce\x14D\x14\xa8\x15\x00\x15L\x15\xbe\x16\x1c\x16l\x16\xe4\x17.\x17l\x17\xc8\x18D\x18\xa6\x18\xf4\x19f\x19\xf0\x1a\x98\x1a\xca\x1b\x14\x1bZ\x1b\xec\x1ch\x1c\xea\x1dD\x1d\xdc\x1e\x94\x1f\x18\x1ff\x1f\xbc \x02 f \xb8!\b!H!\x8e!\xc0\"d\"\xec#L#\xbe$\x0e$h$\xd4$\xfc%\x14%N&@&\xa4'\b'N'\x84'\xba'\xf0(&(j(\xca)\")\x80)\xdc*L*\xc4+4+|+\xfc,H,\xa4-\x10-\x98.\x06.d/\x06/\x860*0\x9a1\x1e1\xb42\n2n2\xee3\x8e3\xd6484\x924\xea5\x1e5\x906\x006X6\xc67\x047`\x00\x00\x00\x02\xff\xfa\xff\xdf\x02\x06\x01\xa5\x00\x12\x00$\x00\x00\x01\x1e\x01\x06\x0f\x01\x06\"/\x01.\x01676\x16\x17>\x01\x1764'&\x06\x0f\x01'.\x01\a\x06\x14\x1f\x01\x167\x01\xca$\x18\x16\x1b\xaf\x10,\x10\xaf\x1b\x16\x18$+u**u\x14\x1d$\x1eO\x1c##\x1cO\x1e$\x1d\xb0\x03\x03\x01\x80\x1fUN\x1c\xb2\x10\x10\xb2\x1cOT\x1f$\t**\t\xe0\x1eW\"\x18\x06\x1d##\x1d\x06\x18\"W\x1e\xb2\x04\x04\x00\x00\x00\x02\x00\x0f\xff\xba\x021\x01\xc1\x00\x18\x00\"\x00\x00\x01\x1e\x01\x0f\x01\x17\x16\x06/\x01\a\x06&?\x01'&6?\x0262\x1f\x027/\x01\x0f\x01\x17\a7\x17\x02\x10\x14\f\x0ej\x19\x03 \x11\x83\x83\x11 \x03\x19j\x0e\f\x14\x92A\t(\tA\ad\x8b>>\x8bd\x17||\x01\x14\x02&\x0eg\x92\x13\x17\tDD\n\x18\x13\x92g\x0e&\x02\x16\x84\x12\x12\x84\xa2b\x14~~\x14b\x8bBB\x00\x04\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x13\x00\"\x00*\x002\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x014632\x1626\x1754&#\"\x06#\"&#\"\x06\x1d\x016\"&462\x16\x14&\"\x06\x14\x16264\x01:7O\x1c\x14\xfe\xa0\x14\x1cO7\r344b3#\x039\x1e\x1e9\x03#3\xecxTTxThP88P8\x90O7\x1a\x14\x1c\x1c\x14\x1a7O\x10\x10\xa0\x1a#3\x10\x103#\x1a\xb0TxTTx\x9c8P88P\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x1f\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14\x05'&=\x014;\x012\x1d\x01\x17\x16\x0f\x01\x06\x99Α\x91Α\xa5\xa6uu\xa6u\x01\x06U\x05\f \fC\t\a\x12\a\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\r>\x04\x06\xa4\f\f\x8e0\a\n\x1a\n\x00\x00\x00\x00\b\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x1b\x00'\x003\x00?\x00G\x00O\x00W\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0125\x114#!\"\x15\x11\x143%\x15\x14+\x01\"=\x014;\x0125\x15\x14+\x01\"=\x014;\x0125\x15\x14+\x01\"=\x014;\x012\x06\x14\x06\"&462\x16\x14\x06\"&462\x16\x14\x06\"&462\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\x9a\x06\x06\xfel\x06\x06\x01j\f\xc8\f\f\xc8\f\f\xc8\f\f\xc8\f\f\xc8\f\f\xc8\f\xfc\x15\x1e\x15\x15\x1e\x15\x15\x1e\x15\x15\x1e\x15\x15\x1e\x15\x15\x1e\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfep\x06\x01T\x06\x06\xfe\xac\x06\\\x18\f\f\x18\fT\x18\f\f\x18\fT\x18\f\f\x18\f\t\x1e\x15\x15\x1e\x15u\x1e\x15\x15\x1e\x15u\x1e\x15\x15\x1e\x15\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc2\x00(\x008\x00\x00\x01276\x16\x1d\x01\x14\a\x06#\"&#\"\a\x15\x14\x06+\x01\"&5\x11&546\x17\x1e\x01\x17\x14\x15\x14\a632\x16\x135\x06#\"&#\"\a\x15632\x1632\x01P,A\x18+\x16=C%g\x16A?\t\a\x10\a\t\x18\x1e\x15\x11\x1a\x02\x02')%g\x96E;\x1ef\x1e9-4L\x1ef\x1e9\x01p\x1c\n\x1c\x1a\xf0\x1a\x0e( \x1dS\a\t\t\a\x01\x96\x0e\x1c\x15\x1c\x01\x01\x18\x11\x03\x03\b\a\x0f \xff\x00\xf0 \xe8\x18 \x00\x00\x02\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\n\x00\x13\x00\x00\x012\x16\x15\x11'\a\x11463\x01\x114#!\"\x15\x117\x01P\x14\x1c\xc0\xc0\x1c\x14\x01 \x06\xfe\xec\x06\x90\x01\xc0\x1c\x14\xfe0pp\x01\xd0\x14\x1c\xfeT\x01v\x06\x06\xfe\x8aT\x00\x04\x00\x00\x00\x00\x02\x00\x01\x80\x00\x0f\x00\x1b\x00#\x00.\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0125\x114#!\"\x15\x11\x14362\x16\x14\x06\"&4\x17576\x1f\x0176\x1f\x01\x15\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\x9a\x06\x06\xfel\x06\x069\"\x17\x17\"\x17\b(\b\b(x\b\bX\x01\x80\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c\xfe\xb0\x06\x01\x14\x06\x06\xfe\xec\x06\xf8\x17\"\x17\x17\"\xb10(\b\b(x\b\bXP\x00\x00\x04\x00\x00\xff\xc0\x02A\x01\xc1\x00\x1c\x00*\x00/\x007\x00\x00%76\x16\x1d\x01\x14\x06#!\"&5\x11463!2\x16\x0f\x01\x06+\x01\x11!547\x01\a\x06&?\x01\x0162\x1f\x01\x16\x14\a'\x0f\x017\x13'&\x0f\x01\x1776\x01\x92 \x04\n\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01\x12\x05\x04\x04 \x02\x03\xf2\x01`\x9f\xfe\xf9Z\x14\x1c\x02\n\x01\a\x110\x12+\x11t:\xba\aA\xfb+\b\a\x1f:\x1f\ag \x04\x04\x06\x91\x14\x1c\x1c\x14\x01`\x14\x1c\n\x04 \x02\xfe\xa0r\x03\xcc\xfe\xf9\n\x02\x1c\x14Z\x01\a\x11\x11+\x1110:\xbaA\a\x01\n+\a\a\x1f:\x1f\a\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00+\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%\a\x17\x16\x0f\x01\x06/\x01\a\x06/\x01&?\x01'&?\x016\x1f\x0176\x1f\x01\x16\x99Α\x91Α\xa5\xa6uu\xa6u\x01.>>\b\b\x17\b\t>>\t\b\x17\b\b>>\b\b\x17\b\t>>\t\b\x17\b\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x91>>\t\b\x17\b\b>>\b\b\x17\b\t>>\t\b\x17\b\b>>\b\b\x17\b\x00\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x1f\x00\x00\x122\x16\x14\x06\"&4$\"\x06\x14\x16264\a\x16\x0f\x01\x06/\x01&?\x016\x1f\x0176\x17\x99Α\x91Α\x01K\xa6uu\xa6u<\t\t\xac\t\b[\t\t\x17\b\t;\x8e\b\t\x01\xb8\x91Α\x91\xceau\xa6uu\xa6\r\t\b\xab\t\t[\t\b\x17\b\b=\x8d\b\t\x00\x04\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x008\x00@\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%\x14\x0e\x02\x1d\x01\x14\x06+\x01\"&=\x014>\x027>\x0354&#\"\x0e\x01\a\x06/\x01&7632\x16\x06\x14\x06\"&462\x99Α\x91Α\xa5\xa6uu\xa6u\x013\x16\x1c\x16\a\x05.\x05\a\b\x12\n\f\b\b\t\x03\x19\x0f\v\x11\f\t\a\t\x1c\t\x06%@&?A\x19\"\x19\x19\"\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x8a\x17 \x0e\x10\b\x06\x05\a\a\x05\t\f\x14\x10\a\x06\x05\x05\a\b\x05\f\x10\a\f\v\t\a\x15\a\n64\xbb\"\x19\x19\"\x19\x00\x00\x00\x03\x00\x00\x00\x00\x02@\x01\x80\x00\x11\x00#\x00/\x00\x00\x012\x16\x14\x06\"&547\x1632654'6\x05\x16\x14\a\x0e\x01#\".\x01'&47>\x012\x16\a267.\x01\"\x06\a\x1e\x02\x01 /AA]A\x04\r\x0e\x17!\a\x0f\x01-\x03\x03*\x98[\x027&54\x05264&\"\x06\x15\x14\x1f\x01\a\x06\a6?\x01\x17\x16\x96Ԗ\x96j/.AJ\x10\f\n\x02\x0f\x17\a5\x01\x00Vzz\xacz(\x14\n\b\f\x1e\x1b\x14\x17&\x01\xa0z\xacz\x0e.\x1d\v\x02\x11%\x128FV\xf6^\x84^^B3*\x16\x1c\x14\x15\n\x14\r\a\f\x00\x00\x00\x00\x02\x00\x00\x00\x00\x02\x00\x01\x80\x00\x13\x00\x1b\x00\x00\x012\x16\x1d\x01\x14\x06#!\"&5\x1146;\x012\x1f\x01\x135#\"/\x01#\x11\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\x93\r\t7\xc0\xc7\r\t7\x8c\x01@\x1c\x14\xe0\x14\x1c\x1c\x14\x01 \x14\x1c\t7\xfe\xf0\xe0\t7\xfe\xe0\x00\x03\x00\x00\x00\x00\x02H\x01\x80\x00\x15\x00\"\x00&\x00\x00%2\x16\x0f\x01\x06#!\"&5\x1146;\x01\x1732\x16\x1d\x01%\x15763!54+\x01'#\"\x017!\a\x02\x10\x1c\x1c\x0fP\x0e\x1b\xfep\x14\x1c\x1c\x14\xa0@\xa0\x14\x1c\xfeP?\x0e\x1b\x01\x18\x06\xae@\x86\x06\x01\x90P\xfe\x85M\xe01\x18\x80\x17\x1c\x14\x01 \x14\x1c@\x1c\x140j\xe9h\x17*\x06@\xfe\xe0\x80\x80\x00\x05\x00\x00\x00\x00\x02\x00\x01\x80\x00\x0f\x00\x1f\x00/\x00D\x00T\x00\x00%\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06#3\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\x172\x16\x1d\x01\x14\x06#!\"&5\x1146;\x012\x16\x15\x117\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\x01\x8d\x05\b\b\x05\x16\x05\b\b\x05\xd6\x05\b\b\x05\x16\x05\b\b\x05J\x05\b\b\x05\x16\x05\b\b\x05\xad\a\t\t\a\xfe0\r\x13\t\a\x10\a\t=\x05\b\b\x05\x16\x05\b\b\x05`\b\x05\xe6\x05\b\b\x05\xe6\x05\b\b\x05\xc6\x05\b\b\x05\xc6\x05\b\b\x05\x86\x05\b\b\x05\x86\x05\b0\t\a\x10\a\t\x13\r\x01P\a\t\t\a\xfe\xc00\b\x05F\x05\b\b\x05F\x05\b\x00\x03\xff\xfb\xff\xe0\x02E\x01\xa0\x00#\x006\x00M\x00\x00%\x1e\x02\x17\x16\x06#\"'\x06#\"&'&'\x06#\"&767&54632\x16\x17\x1e\x01\x15\x14%\x17\x163264&\"\x06\x15\x14\x1f\x01\a\x06\a67\x05654&'\x16\x15\x14\x0e\x01\a\x1632?\x01\x17\x16\x17&/\x01\x02\x14\a\x13\v\x01\n\f\x0fA<\x1e\x1e@g\x18\x0f\x0e;B\x0f\f\n\x15\x11,zV@h\x18Ke\xfeK\x14\x18\x19A__\x82_\x1e\x18\x0f\x04\x04\x16\x15\x01x\x1e@1\x01/R21R\x19\x18\x14\x11\x15\x16\x04\x04\x0f>\x0e\x1b\r\x01\v\x1c'\a6,\x02\x03'\x1c\v\x14#+7B^6,\tY<71\x04\x06B\\BB.#\x1d\x18 \a\a\a\x0e/\x1d#$;\v\b\x02(E,\x052\x06\x04\v\x0e\a\a\a \x00\x00\x00\x01\x00\x0f\xff\xba\x01 \x01\xc0\x00\x13\x00\x00%\x15\a\x06&?\x01'&6?\x0263\x15\x0f\x01\x17\a\x01 \x83\x11 \x03\x19j\x0e\f\x14\x92A\t\x14>\x8bd\x17?7D\t\x17\x14\x91g\x0e&\x03\x15\x84\x12D~\x14b\x8b\x00\x00\x03\xff\xfc\xff\xbc\x02\x04\x01\xc4\x00#\x00A\x00Q\x00\x00\x00\x1e\x01\a\x0e\x01\x16\x0e\x06&\x06\a\x06.\x027>\x01&>\x06\x16676\x176&\a\x0e\x01&\x0e\x04\x16\x06\a\x06\x167>\x01\x162>\x017>\x02&6&\x16\x06\a\x0e\x01\a\x0e\x01.\x017>\x0176\x01\xcf*\v\r\x04\x02\b\x04\n'>D88(%\b\x166*\v\r\x04\x02\b\x04\n'>D88(%\b\x165\n,\x11\x1136&\v\x04\b\x02\x04\r\v*6\x16\b%(88D>&\v\x04\b\x02\x04\ri\x12+\n\v\x01\x06\x03 DF<63\x11\x12+\n\t\x04\x06\a!\x1c\"F<63\x11\x11\r\x01\x05`)\t\n\x02\r\b7t\a\x01\x00\x00\x00\x05\x00\x00\xff\xe0\x02@\x01\xa0\x00\x10\x00\x18\x00 \x00,\x008\x00\x00\x012\x1e\x01\x15\x11\x14\x06#!\"&5\x11463\x17\"\x1d\x01!54#\x112=\x01!\x15\x1437\x15\x14+\x01\"=\x014;\x012\x17\x15\x14+\x01\"=\x014;\x012\x02\x10\r\x16\r\x1c\x14\xfe \x14\x1c\x1c\x14\x06\x06\x01\xe0\x06\x06\xfe \x06\x8a\fH\f\fH\f\xc0\f\x88\f\f\x88\f\x01\xa0\r\x16\r\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c0\x06**\x06\xfe\xa0\x06\xaa\xaa\x06d(\f\f(\f\f(\f\f(\f\x00\x00\x00\x00\x05\x00\x00\x00\x00\x02@\x01\x80\x00\x15\x00\x19\x00\x1d\x00%\x00-\x00\x00%\x16\x1d\x01\x14\x06#!\"&=\x014?\x01>\x013!2\x16\x17\x05\a!'\x135!\x15$\x14\x06\"&462\x06\x14\x06\"&462\x027\t\x1c\x14\xfe \x14\x1c\ti\x06\x17\n\x01\x0e\n\x17\x06\xfe\xcbN\x01\xaaNi\xfe \x01\xc0\x13\x1a\x13\x13\x1aM\x13\x1a\x13\x13\x1a\xd4\f\x0f\x89\x14\x1c\x1c\x14\x89\x0f\f\x97\t\f\f\t\x1bpp\xfe\xe0\x80\x80M\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x002\x00U\x00]\x00\x00\x012\x16\x15\x14\x0e\x02+\x01\x06\a\x16\a\x0e\x01+\x01\"&+\x01\x06+\x01\"&=\x0146;\x012\x17327167>\x0332\x16\x15\x14\a\x172654&+\x014654#\"\x0e\x01\a\x06\a\x06\a\x15\x1e\x02;\x012'>\x01'>\x01'\x064&\"\x06\x14\x162\x01\xad\"1\r\x17\x1e\x11$\x02\x06\x04\x14\x015.\x15\"S\n\x03\t\r@\r\x13\x13\r@\r\t\x03\t\x15\x11\t\x04\x12\f\x1a\x10*2\x02V\x0e\x15\x15\x0e\x9f\x1b,\x04\n\x10\x05\v\x14 \x1b\x11**\x13\x15=\n\f\t\b\x0e\x01\n\xfa\x0e\x14\x0e\x0e\x14\x0161\"\x11\x1e\x17\r\f\n\"\x1d(3(\b\x11\f\xe6\f\x11\b\x18\x13\x0e\x06$\x13\x12/$\f\vv\x15\x0e\x0e\x15\a,\x14#\x11\x1f\b\x12\x16$\x04\xb0\x02\x14\x12=\a \x0f\r&\n\x8a\x14\x0e\x0e\x14\x0e\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x002\x00V\x00^\x00\x00546;\x01&54632\x1e\x02\x17\x16\x171\x16;\x016;\x012\x1e\x02\x1d\x01\x14\x06+\x01\"'#\"\x06+\x01\"&'&7&'#\"&7\x14\x16;\x01\x06\x16\x17\x06\x16\x17\x06;\x012675&'&'.\x02#\"\x15\x14\x16\x15#\"\x0e\x02\x04\"\x06\x14\x162641\"V\x022*\x10\x1a\f\x12\x04\t\x11\x15\t\x03\t\r@\a\v\t\x05\x13\r@\r\t\x03\nS\"\x15.5\x01\x14\x04\x06\x02$\"10\x15\x0e[\n\x01\x0e\b\t\f\n=\x15\x18L\x14\x1b \x14\v\x05\x10\n\x04,\x1b\x9f\a\r\t\x06\x01\x9a\x14\x0e\x0e\x14\x0e\xe3\"1\v\f$/\x12\x13$\x06\x0e\x13\x18\b\x05\a\v\x06\xe6\f\x11\b(3(\x1d\"\n\f1\"\x0e\x15\n&\r\x0f \a=&\x02\xb0\x04$\x16\x12\b\x1f\x11#\x14,\a\x05\n\r\x92\x0e\x14\x0e\x0e\x14\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x003\x00U\x00]\x00\x00\x134632\x1e\x01\x1d\x01\x16\x176\x17\x1e\x01\x1d\x01\x14\x06\x1d\x01\x16\x1d\x01\x14\x0e\x01+\x01\"&=\x014754'1&'.\x0454632\x1774&#\"\x06\x1d\x01\"&#\"\x15\x14\x1e\x01\x17\x16\x17\x16\x173>\x01=\x014\a.\x01\a.\x01\a\x16\"\x06\x14\x16264j1\"\x16'\x16\f\n\"\x1d(3(\b\b\r\b\xe6\f\x11\b\x18\x13\x0e\a\x1a\x11\x13\n/$\f\vv\x15\x0e\x0e\x15\a,\x14#\x11\x1f\b\x12\x16$\x04\xb0\x02&=\a \x0f\r&\n\x8a\x14\x0e\x0e\x14\x0e\x01m\"1\x16'\x16$\x02\x06\x04\x14\x015.\x15\"S\n\x03\t\r@\t\x0e\t\x13\r@\r\t\x03\t\x15\x11\t\x04\r\n\x0f\x15\r*2\x02V\x0e\x15\x15\x0e\x9f\x1b,\x04\n\x10\x05\v\x14 \x1b\x14L\x18\x15=\n\f\t\b\x0e\x01\n\xfa\x0e\x14\x0e\x0e\x14\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x001\x00S\x00[\x00\x00\x17\"&=\x01\x06#\"&54>\x0376716=\x01&=\x0146;\x012\x16\x1d\x01\x14\a\x15\x14\x16\x1d\x01\x14\x06\a\x06'\x06\a\x15\x14\x06'26=\x01\x1667\x1667\x16=\x014&'#\x06\a\x06\a\x0e\x02\x15\x143263\x15\x14\x16\x12\x14\x16264&\"\xbd\"1\v\f$/\n\x13\x11\x1a\a\x0e\x13\x18\b\x11\f\xe6\f\x11\b(3(\x1d\"\n\f1\"\x0e\x15\n&\r\x0f \a=&\x02\xb0\x04$\x16\x12\b\x1f\x11#\x14,\a\x15\x99\x0e\x14\x0e\x0e\x14@1\"V\x022*\r\x15\x0f\n\r\x04\t\x11\x15\t\x03\t\r@\r\x13\x13\r@\r\t\x03\nS\"\x15.5\x01\x14\x04\x06\x02$\"10\x15\x0e[\n\x01\x0e\b\t\f\n=\x15\x18L\x14\x1b \x14\v\x05\x10\n\x04,\x1b\x9f\x0e\x15\x01\x9a\x14\x0e\x0e\x14\x0e\x00\x00\x04\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1b\x00*\x009\x00B\x00\x00\x01\x16\x15\x11\x14\x06+\x01\x15\x14\x06+\x01\"&5\x1146;\x01546;\x012\x17\x032=\x01#\"&=\x01#\"\x15\x11\x143%2=\x01#\"&=\x01#\"\x15\x11\x143\x1354/\x01&+\x01\x15\x01\xb2\x0e\x1c\x14P\x1c\x14\xe0\x14\x1c\x1c\x14P\x1c\x14\xac\x14\x0et\x06`\x14\x1cJ\x06\x06\x01T\x06X\n\x0ej\x06\x06\xda\x020\x02\x02\n\x01~\x0e\x14\xfe\xf4\x14\x1c0\x14\x1c\x1c\x14\x01@\x14\x1c0\x14\x1c\x0e\xfe>\x06*\x1c\x14\xe0\x06\xfe\xcc\x06`\x06\xca\x0e\nX\x06\xfe\xcc\x06\x01\x00\n\x02\x020\x02@\x00\x00\x05\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x11\x00\x15\x00+\x003\x00;\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x11463!2\x17\a#\x153\x1325\x114/\x01\x15\x14\x06+\x01\"&=\x01#\"\x15\x11\x14362\x16\x14\x06\"&4\x16264&\"\x06\x14\x01\xb2\x0e\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01\f\x14\x0eN\x80\x80z\x06\x02N\x0e\n\xb0\n\x0e*\x06\x06\x86H44H4G\"\x17\x17\"\x17\x01>\x0e\x14\xfe\xf4\x14\x1c\x1c\x14\x01`\x14\x1c\x0e\"P\xfe\xf0\x06\x01\x04\x02\x02Nd\n\x0e\x0e\nh\x06\xfe\xac\x06\xc84H44HL\x17\"\x17\x17\"\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1b\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0125\x114#!\"\x15\x11\x143\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01Z\x06\x06\xfe\xac\x06\x06\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfep\x06\x01T\x06\x06\xfe\xac\x06\x00\x03\x00\x00\x00\x00\x02\x00\x01\x80\x00\x0f\x00 \x002\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x05!\x15\x16\x17\x14\x1e\x0232>\x02567\x05!5\x06\a\x0e\x04\".\x03'&'\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\xfe`#d\x1c\x0e\x17\b\b\x17\x0e\x1cd#\xfe`\x01\xa0#F\x02\x19\x0e\x1a\x18\x18\x19\x19\x0e\x19\x02F#\x01\x80\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c0)\x1cN\x01\x17\t\f\f\t\x17\x01N\x1c\xf7\xba\x1c7\x01\x16\n\x0f\a\a\x10\n\x15\x017\x1c\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01`\x01\xc0\x00\x0f\x00\x1d\x00B\x00\x00\x132\x16\x14\x06#\"\x06\x15\x14\x06\"&546\x0353\x15\x14\x0f\x01\x06+\x01\"/\x01&\x132\x16\x15\x14\a\x0e\x01\a#4767654&#\"\x06\x15\x14\x17\x16\x17\x16\x15#.\x02'&546\xb0\a\t\t\a\x1a&\t\x0e\t8(\xa0\x03\x18\x05\tN\t\x05\x18\x03PIg,\x0e\x1f\a0\x02\x13+ K54L +\x13\x020\x05\x13\x14\b,e\x01p\t\x0e\t&\x1a\a\t\t\a(8\xfe\x85++\x05\x04%\a\a%\x04\x01\xd0gIB2\x105\x17\a\a=1$05KJ60$1=\a\a\x10%\x1d\n2BGi\x00\x00\x00\x03\xff\xff\xff\xc0\x01\xc1\x01\xc0\x00%\x003\x009\x00\x00%\x16\x15\x14\x06#!\".\x0154767>\x0254675462\x16\x1d\x01\x1e\x02\x15\x14\x1e\x01\x17\x16\x05!&5414&\"\x06\x150\x15\x14\x16\"&53\x14\x01\xb7\t\x12\x0e\xfe\x80\t\x0f\b\t\x01\x02\x0f\x11\x14H8\x13\x1a\x13%:!\x14\x11\x0f\x02\xfe\x8e\x018,B\\B\x8a4&\x80V\n\f\r\x13\t\x0f\b\f\n\x01\x03\x0f\x18C,:V\v\x15\r\x13\x13\r\x15\a,B&,C\x18\x0f\x03\a;d\x01.BB.\x01d\xcb%\x1b\x1b\x00\x00\x00\a\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\v\x00\x17\x00#\x00/\x00K\x00a\x00}\x00\x00754;\x012\x1d\x01\x14+\x01\"3\"=\x014;\x012\x1d\x01\x14#\a\x14+\x01\"=\x014;\x012\x15\x17\"=\x014;\x012\x1d\x01\x14#\x17\x15!54;\x01\x1146;\x01546;\x012\x16\x1d\x0132\x16\x15\x1132%354;\x012\x1d\x013\x11#\x15\x14\x06+\x01\"&=\x01#7#54+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132=\x014\x80\f(\f\f(\f\x8c\f\f(\f\ft\f(\f\f(\fL\f\f(\f\f\x8c\xfe@\f\x14\x0e\nX\x0e\np\n\x0eX\n\x0e\x14\f\xfe\x90p\f(\fp@\x0e\np\n\x0e@\xba\x1a\x06\x14\x06\x1a\x06\x06\x1a\x06\x14\x06\x1a\x06\xcc(\f\f(\f\f(\f\f(\fT\f\f(\f\f4\f(\f\f(\f|$$\f\x01{\t\f(\n\x0e\x0e\n(\f\t\xfe\x85\x01C\f\fC\x01_\x18\n\x0e\x0e\n\x180\x1a\x06\x06\x1a\x06\x14\x06\x1a\x06\x06\x1a\x06\x14\x06\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x1b\x00+\x007\x00\x00%\x15\x14+\x01\x15\x14+\x01\"=\x01#\"=\x014;\x0154;\x012\x1d\x01327\x11\x14\x06#!\"&5\x11463!2\x16\x03\x114#!\"\x15\x11\x143!2\x01`\fX\f \fX\f\fX\f \fX\f`\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c0\x06\xfe\xac\x06\x06\x01T\x06\xd0 \fX\f\fX\f \fX\f\fX\x94\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xfe\x92\x01T\x06\x06\xfe\xac\x06\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14\x99Α\x91Α\xa5\xa6uu\xa6u\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00/\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x146\"&462\x16\x14\x16\"&462\x16\x14\a>\x01\x1e\x01\a\x06\"'&>\x01\x16\x17\x162\x91Α\x91Α\xa5\xa6uu\xa6u\x85\x1a\x13\x13\x1a\x13\x8d\x1a\x13\x13\x1a\x13\x1c\x06\x14\x0f\x02\x06/\x94/\x06\x02\x0f\x14\x06!f\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6c\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\\\b\x02\r\x14\a99\a\x14\r\x02\b'\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x000\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x146\"&462\x16\x1462\x16\x14\x06\"&4\x062\x17\x16\x06\a\x06&'&\"\a\x0e\x01.\x017\x91Α\x91Α\xa5\xa6uu\xa6u\x85\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13o~)\x06\x02\a\b\x14\x06\x1aR\x1a\x06\x14\x0f\x02\x06\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6c\x13\x1a\x13\x13\x1a-\x13\x1a\x13\x13\x1am1\a\x14\x06\a\x02\b\x1f\x1f\b\x02\r\x14\a\x00\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00+\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x146\"&462\x16\x1462\x16\x14\x06\"&4\x172\x16\x14\x06+\x01\"&463\x91Α\x91Α\xa5\xa6uu\xa6u\x85\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13(\n\x0e\x0e\n\xb0\n\x0e\x0e\n\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6c\x13\x1a\x13\x13\x1a-\x13\x1a\x13\x13\x1a}\x0e\x14\x0e\x0e\x14\x0e\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x02@\x01\x80\x00\x0f\x00\x1b\x00'\x003\x00?\x00K\x00W\x00c\x00o\x00{\x00\x87\x00\x93\x00\x9f\x00\xab\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01\x114#!\"\x15\x11\x143!2%\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x05\x14+\x01\"=\x014;\x012\x15\x05\x14+\x01\"=\x014;\x012\x15%\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\a\x14+\x01\"=\x014;\x012\x15\x02\x10\x14\x1c\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe8\b\xfe \b\b\x01\xe0\b\xfe\x92\f\x1c\f\f\x1c\f`\f\x1c\f\f\x1c\f`\f\x1c\f\f\x1c\f`\f\x1c\f\f\x1c\f\xfe\xb0\f\x1c\f\f\x1c\f\x01\x80\f\x1c\f\f\x1c\f\xfe\x80\f\x1c\f\f\x1c\f`\f\x1c\f\f\x1c\f`\f\x1c\f\f\x1c\f`\f\x1c\f\f\x1c\f`\f\x1c\f\f\x1c\fb\f\xd8\f\f\xd8\f\x01\x80\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c\xfe\xb0\x01 \b\b\xfe\xe0\b\x8a\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\fn\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x88\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\f\xba\f\f\x10\f\f\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1f\x00'\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x0154;\x012\x1d\x01354;\x012\x1d\x01\x1325\x11!\x11\x143\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x140\f(\f\x80\f(\f*\x06\xfe\xa0\x06\x01\x80\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c4\f\f44\f\f4\xfep\x06\x01*\xfe\xd6\x06\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\f\x00\x14\x00\x1c\x00\x00%\x16\x14\x0f\x01\x06.\x01=\x0146\x17\x04\x14\x06\"&462\x04\x14\x16264&\"\x01t\f\f\xb0\t\x10\v\x18\f\x014\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\xd2\a\x1c\ae\x04\x03\r\t\xd0\x0e\x0e\a\x16Α\x91Α\xa5\xa6uu\xa6u\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\v\x00\x1b\x00'\x00\x007\"=\x014;\x012\x1d\x01\x14#7\x11\x14\x06#!\"&5\x11463!2\x16\x03\x114#!\"\x15\x11\x143!2l\f\f\xe8\f\fl\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c0\x06\xfe\xac\x06\x06\x01T\x06\xa4\f \f\f \f\xcc\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xfe\x92\x01T\x06\x06\xfe\xac\x06\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x13\x00#\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01\x11!\x11%\a\x06/\x01&?\x016\x1f\x0176\x1f\x01\x16\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\xfe\xa0\x01<\xac\t\b[\t\t\x17\b\t;\x8e\b\t\x16\t\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfep\x01`\xfe\xa0\xf2\xab\t\t[\t\b\x17\b\b=\x8c\t\t\x16\t\x00\x00\x03\x00\x00\xff\xc0\x02A\x01\xc9\x00\x1c\x002\x00Y\x00\x00\x01\x16\x14\x0f\x01\x06&=\x01\x0e\x01\x14\x17\x16\x06'.\x015476767546\x17\x037'\x15\"\x0e\x04\x15\x14\x17.\x01>\x057\x17676\x16\x1d\x01\x14\x06#!\"&5\x1146;\x012\x1d\x01\x14\a\x06\a\x06+\x01\"\x15\x11\x143!2=\x014\x022\x0e\x0e\x90\x17;1+\b\v6\x1c(-$\x1e50I;\x17\"\x90\x90!0<*&\x13>\a\x04\b\x10\x1a\x1f))\x1a\x19\v\n\x06\f\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x84\f\b\x14\x12\x03\x03V\x06\x06\x01T\x06\x01\"\x0e(\x0e\x90\x17\x19 6\x04\x13 \x18 )\x11\x19K-;(!\x11\x0f\x039 \x18\x16\xfe\xbe\x90\x90h\x03\b\x11\x19)\x1aA'\x16%\x1c\x16\x0f\n\a\x02\x01\xbc\x03\x06\x04\a\a+\x14\x1c\x1c\x14\x01`\x14\x1c\f\x04\t\x03\b\n\x02\x06\xfe\xac\x06\x06\x1a\t\x00\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\r\x00\x15\x00\x1d\x00%\x00\x00\x016\x16\x0f\x01\x06\x0f\x01\x06&?\x0167\x1664&\"\x06\x14\x16\x022\x16\x14\x06\"&4\x12264&\"\x06\x14\x01\\\f\x14\x06B\x05\v\x90\f\x14\x06B\x05\v9\x13\x13\x1a\x13\x13ZΑ\x91Α\xa5\xa6uu\xa6u\x01>\x06\x14\f\x90\v\x05B\x06\x14\f\x90\v\x05\\\x13\x1a\x13\x13\x1a\x13\x01\x18\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\n\x00\x1a\x00&\x00\x00732\x16\x0f\x01\x06/\x01&6%\x11\x14\x06#!\"&5\x11463!2\x16\x03\x114#!\"\x15\x11\x143!2}\xc6\b\x06\x06c\b\bc\x06\x06\x01K\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c0\x06\xfe\xac\x06\x06\x01T\x06\xf0\x0f\x05c\b\bc\x05\x0f\x80\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xfe\x92\x01T\x06\x06\xfe\xac\x06\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\n\x00\x1a\x00&\x00\x00%#\"&?\x016\x1f\x01\x16\x067\x11\x14\x06#!\"&5\x11463!2\x16\x03\x114#!\"\x15\x11\x143!2\x01C\xc6\b\x06\x06c\b\bc\x06\x06u\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c0\x06\xfe\xac\x06\x06\x01T\x06\x90\x0f\x05c\b\bc\x05\x0f\xe0\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xfe\x92\x01T\x06\x06\xfe\xac\x06\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\n\x00\x1a\x00&\x00\x007546\x1f\x01\x16\x0f\x01\x06&\x01\x11\x14\x06#!\"&5\x11463!2\x16\x03\x114#!\"\x15\x11\x143!2\xb0\x0f\x05c\b\bc\x05\x0f\x01\x10\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c0\x06\xfe\xac\x06\x06\x01T\x06]\xc6\b\x06\x06c\b\bc\x06\x06\x01\x1b\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xfe\x92\x01T\x06\x06\xfe\xac\x06\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc1\x00\x11\x00\x14\x00\x1d\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01'\x15\x03!\x11#\"&=\x01#\x01r\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e.L\xd0\x01 h\n\x0e\xa0\x01^\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0erLL\xfe\xb0\x01 \x0e\nh\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\v\x00\x17\x00)\x00,\x005\x00\x00%\x15\x14+\x01\"=\x014;\x012\a2\x1d\x01\x14+\x01\"=\x0143%\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01\x16'\x153\x13\x11#\"&=\x01#\x11\x01 \f\xa8\f\f\xa8\f\f\f\f\xa8\f\f\x01\x14\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0eT\x0e\x80L\x04h\n\x0e\xa0\xc8\x1c\f\f\x1c\fT\f\x1c\f\f\x1c\f\xbc\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0eT\x0e\x027>\x0232\x16\x15\x14\a32\x1e\x01\x15\x14\a>\x01'2654&+\x014654.\x03#\x0e\x01\a\x0e\x03+\x01\x152\x16;\x012'>\x01\x044&\"\x06\x14\x162\x01\xd2\a\x10\x05\x16\x01\x173&\x03\x10\x03-E/\x11\x03\x11\v@\r\x13\x13\rc\b\x18\x1b\n\x03\f\x1d\x1b-3\t$\x18(\x16K\x0f\x01\v\a\x0f\x16\x10h\x1d\x01\x05\t\x13\x0e\b\x0e\x10\a\x1c\x16\x1b\n\v\x19m&%@\n\f\n\xfe\xbb\x0e\x14\x0e\x0e\x14\xa1!\x1e$\x1f\x1c*\x19\x14\x14\n\x0e\x13\r\xf0\r\x13\a #\t\x04:/45\x17\x17\x19'\x16\x1aN\x0f)\n\x18\x0e\x0e\x18\x129\x13\n\v\x12\n\b\bG\x10\a%\x1d\x18\xba&B\a\"U\x14\x0e\x0e\x14\x0e\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xe0\x01\xc0\x00.\x006\x00[\x00\x00%\x16\x15\x14\x06+\x01\x16\x15\x14\x06#\".\x01'.\x01'#\x06+\x01\"&=\x0146;\x012\x1732>\x013:\x0132\x16\x17\x16\a\x16\x04264&\"\x06\x14\x052>\x0154&'6&'6+\x01\"\x06#\x1532\x1e\x01\x17\x1e\x01\x172>\x0254&5\x01\xd2\x0e2$$\t3-\x1b\x1d\f\x03\v0\n\a\n\x12@\r\x13\x13\r@\f\t\v\x0f.G-\x03\x10\x0388\x01\x16\x05\x10\xfe]\x14\x0e\x0e\x14\x0e\x01b\n\x12\n\x0f\a\v\x01\x0f\b\n\f\n@%&m\x19\v\f\"(\b\x10\x0e\b\x11\x15\b\x02\x1d\xdf\x18\x1a\"4\x17\x1754/:\x04\v?\t\x10\x13\r\xf0\r\x13\b\x14\x143,\x1f$\x1eh\x0e\x14\x0e\x0e\x14\x1f\v\x12\t\x0e\x18\n)\x0f\x10\"\aB&\xba#6\b\x10G\b\n\x14\x0e\r\x139\x12\x00\x04\x00\x00\xff\xc0\x02\x01\x01\xc1\x00(\x008\x00@\x00H\x00\x00%\x16\x14\x0f\x01\x17\x16\a\x06/\x01\a\x06\"/\x01\a\x06&?\x01'&4?\x01'&6\x1f\x01762\x1f\x0176\x16\x0f\x027'7\a'\a'\x17\a\x17\a7\x177\x17&2\x16\x14\x06\"&4\x16264&\"\x06\x14\x01\xee\x12\x12<\x0e\x04\x0f\x0f\x15G(\r+\f(G\x15\x1e\x04\x0e<\x12\x12<\x0e\x04\x1e\x15G(\f,\f(G\x15\x1e\x04\x0e5MM\x12[44[\x12MM\x12[44[\xbaV==V=Q.!!.!\xe2\f+\f)G\x15\x0f\x0f\x04\x0e<\x12\x12<\x0e\x04\x1e\x16F)\f+\f)G\x15\x1e\x04\x0e<\x11\x11<\x0e\x04\x1e\x15G\u007f54[\x12MM\x12[44\\\x12MM\x12\xf7=V==Vc!.!!.\x00\x00\x02\x00\x17\xff\xc0\x01\xf4\x01\xc0\x00\x16\x00&\x00\x00\x05\"&4632\x17\x1e\x01\x06\a\x0e\x01\x15\x14\x1676\x16\a\x0e\x01\x03\"\x06\x14\x163267\x06&5467&\x01\x17j\x96\x96j\x18\x17\x15\x16\t\x13\x1f%a>!\"\x15$h;VzzV0U\x1dT\x842*\x13@\x96Ԗ\x04\x04#(\n\x12>$?P\f\x069\x1a-2\x01\xd0z\xacz)$\x10mU2T\x18\x03\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\n\x00\x1a\x00&\x00\x00\x01\x15\x14\x06/\x01&?\x016\x167\x11\x14\x06#!\"&5\x11463!2\x16\x03\x114#!\"\x15\x11\x143!2\x01\x10\x0f\x05c\b\bc\x05\x0f\xb0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c0\x06\xfe\xac\x06\x06\x01T\x06\x01#\xc6\b\x06\x06c\b\bc\x06\x06E\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xfe\x92\x01T\x06\x06\xfe\xac\x06\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x00\x00\"\x06\x14\x16264$2\x16\x14\x06\"&4\x162\x16\x14\x06\"&4\x01S\xa6uu\xa6u\xfe\xd1Α\x91Α\xd7B//B/\x01\x88u\xa6uu\xa6\xa5\x91Α\x91\xce\x17/B//B\x00\x00\x00\x00\b\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\v\x00\x17\x00#\x00/\x00;\x00G\x00Y\x00e\x00\x00\x1354;\x012\x1d\x01\x14+\x01\"3\"=\x014;\x012\x1d\x01\x14#\a\"=\x014;\x012\x1d\x01\x14#3\"=\x014;\x012\x1d\x01\x14#\a\x14+\x01\"=\x014;\x012\x15\x17\"=\x014;\x012\x1d\x01\x14#\x17\x15!54;\x01\x11463!2\x16\x15\x1132%354;\x012\x1d\x013\x11%\x80\f(\f\f(\f\x8c\f\f(\f\f\xa8\f\f(\f\fX\f\f(\f\ft\f(\f\f(\fL\f\f(\f\f\x8c\xfe@\f\x14\x0e\n\x01P\n\x0e\x14\f\xfe\x90p\f(\fp\xfe\xe0\x01,(\f\f(\f\f(\f\f(\f`\f(\f\f(\f\f(\f\f(\fT\f\f(\f\f4\f(\f\f(\f|$$\f\x01\xb8\n\x0e\x0e\n\xfeH\x01C\f\fC\x01\x9e\x01\x00\x00\x00\x00\b\x00\x00\xff\xc0\x01\x80\x01\xc1\x00\x11\x00\x14\x00\x1d\x007\x00=\x00D\x00J\x00Q\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01'\x15\x03!\x11#\"&=\x01#\x13\x16\x06#\"'\x06\a\x06'&76767&76\x16\x17\x16\a\x16\x176\a\x14>\x017\x067\"\x14\x16\x1764\a67&'\x06\x176&\a\x1e\x017\x01r\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e.L\xd0\x01 h\n\x0e\xa0\xfa\n\n\x11\x19\x1f\x0f6'\x1b\f\x02\x05.\x10\x14\r\x06\x03$\x03\x05\n\f\x193\xb9\a\x0f\b\x1aN\x02\x01\x03\x03\x1e-\n\x12\f\rx\x05\x15\x15\x0e\x13\x02\x01^\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0erLL\xfe\xb0\x01 \x0e\nh\xfe\xf0\b\x1f\x11\x03\x11D\x11\a\r\x16\x18\x1c.0\x13\x0f\x02\x13\x0e*\x1f\x0f\a[\x01\x05\x11\x0e\x19\xb4\x0e\x14\x06\x06\"\x88\x11\x02\r\x17#\x0f\x03\x06\x01\x06\x04\x01\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc1\x00\x11\x00\x14\x00\x1d\x00R\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01'\x15\x03!\x11#\"&=\x01#\x1732\x1e\x01\x15\x06\a\x06+\x01\"'&/\x01\x14\x0f\x01\x06+\x01\"'.\x02'&6;\x012\x17\x16\x15\x14\x17476;\x012\x17\x16\x17\x1c\x011676\x01r\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e.L\xd0\x01 h\n\x0e\xa0\xdc\x10\x04\x06\x02\n\x19\x02\n\x18\n\x02\a\v\x03\x03\x12\x02\t\x19\n\x02\x03\r\x0e\x03\x02\b\x05\x11\n\x02\x13\x01\x18\x03\t\r\n\x02\x17\x01\x01\x14\x02\x01^\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0erLL\xfe\xb0\x01 \x0e\nh\xd0\x04\a\x04&b\t\t\x1d+\x11\b\tH\t\t\v78\x0e\x06\t\n`\x03\x01\x03\x06b\t\ta\x03\x01\x03\x06a\n\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc1\x00\x11\x00\x14\x00\x1d\x00B\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01'\x15\x03!\x11#\"&=\x01#\x172\x16\a\x06\a\x17\x16\x06+\x01\"'&'\x06\a\x06+\x01\"&?\x01'&6;\x012\x17\x16\x176763\x01r\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e.L\xd0\x01 h\n\x0e\xa0\xd4\a\a\x04#\v.\x04\a\a\x1d\a\x03\x02\x1b\f\x11\x03\a\x1d\a\a\x04..\x04\a\a\x1d\a\x04\t\x13\t\x14\x03\a\x01^\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0erLL\xfe\xb0\x01 \x0e\nh\xb0\f\x06=\x11N\x06\f\x06\x037\x1b\x1f\x06\f\x06NN\x06\f\x06\x12(\x16$\x06\x00\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc1\x00\x11\x00\x14\x00\x1d\x006\x00>\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01'\x15\x03!\x11#\"&=\x01#\x1354;\x012\x16\x15\x14\x0e\x06*\x01#\x15\x14\x06+\x01\"73264&+\x01\x01r\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e.L\xd0\x01 h\n\x0e\xa0H\fE\x1c#\x04\x06\v\t\x0f\n\x10\b\x0f\x02\a\x05\x18\f0\x18\v\r\r\v\x18\x01^\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0erLL\xfe\xb0\x01 \x0e\nh\xfe\x9c\xa8\f%\x1d\v\x12\r\v\x06\x05\x02\x01/\x05\ac\x0f\x17\x0e\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc1\x00\x11\x00\x14\x00\x1d\x00(\x000\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01'\x15\x03!\x11#\"&=\x01#\x13576\x1f\x0176\x1f\x01\x15&2\x16\x14\x06\"&4\x01r\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e.L\xd0\x01 h\n\x0e\xa0 (\b\b(X\b\b\x18\xc4(\x1c\x1c(\x1c\x01^\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0erLL\xfe\xb0\x01 \x0e\nh\xfe\x90@(\b\b(X\b\b\x18\x80\xf0\x1c(\x1c\x1c(\x00\n\x00\x00\xff\xc0\x01\x80\x01\xc1\x00\x03\x00\a\x00\v\x00\x0f\x00!\x00$\x001\x00@\x00L\x00P\x00\x00\x133\x15#7\x15#5\a3\x15#3\x15#57\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x17\a\x153\x13\x11#\"&=\x01#\x15#5#\x117\x17\x16\x0e\x01#\"&?\x0153\x1532\x062654.\x01\"\x0e\x01\x15\x147\x15#5\x80 @ @ \xd2\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e\x1eL\x04h\n\x0e0 P\x92\x12\x03\r\x1a\x10\x19\x1f\x05\x13 \x16\n-\x1b\x13\t\x0f\x12\x0e\t@ \x01 \x80 \x1e\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0e&L\xfe\xb0\x01 \x0e\nh\x10\x10\xfe`\xc6W\x10\x1d\x12'\x18a \x86\x10\v\a\r\a\a\r\a\v\xb6 \x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00\x14\x00\x1d\x00/\x00=\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01'\x15\x03!\x11#\"&=\x01#\x13\x14\x06/\x01#\"&=\x0146;\x0176\x16\x15\x1764'&>\x01\x17\x16\x14\a\x06.\x01\x01r\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e.L\xd0\x01 h\n\x0e\xa0\x90\x0f\x05$\x1c\x05\a\a\x05\x1c$\x05\x0f)\a\a\n\t\x18\f\x14\x14\v\x1a\a\x01^\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0erLL\xfe\xb0\x01 \x0e\nh\xfe\xac\b\x06\x06$\a\x058\x04\b$\x06\x06\bY\a\x14\a\n\x1b\x06\n\x15:\x15\v\b\x18\x00\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00\x14\x00\x1d\x007\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01'\x15\x03!\x11#\"&=\x01#\x176\x16\x1d\x01\x14\x06/\x01\x15\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x01r\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e.L\xd0\x01 h\n\x0e\xa0\xe5\a\x14\x14\a5\f\bh\b\f\f\bh\b\f\x01^\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0erLL\xfe\xb0\x01 \x0e\nh\xcd\b\b\vp\v\b\b4%\b\f\f\bh\b\f\f\b%\x00\x06\x00\x00\xff\xc0\x01\x80\x01\xc1\x00\x12\x00$\x00'\x000\x00<\x00M\x00\x007\x16\x0f\x01\x06#\"/\x01&?\x016\x1f\x01\x15\x16\x0f\x017\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x17\a\x153\x13\x11#\"&=\x01#\x117\x17\x16\x0f\x01\x06/\x01&?\x016\x17&?\x016\x1f\x01\x16\x0f\x01\x06/\x015&?\x01\x96\x06\x06\x11\x03\x04\x03\x039\a\a9\a\x06\x11\x06\x06!\xfd\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e\x1eL\x04h\n\x0e\xa0\xa2\x18\t\x037\x02\t\x18\t\x037\x02!\x06\x06\x11\x06\a9\a\a9\a\x06\x11\x06\x06!c\x06\a\x12\x03\x036\x06\x066\a\a\x12\x01\x06\x06\x1d\xde\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0e&L\xfe\xb0\x01 \x0e\nh\xfe`\xfa\a\x02\t\xbc\t\x03\a\x02\t\xbc\bO\x06\a\x12\a\a6\x06\x066\a\a\x12\x01\x06\x06\x1d\x00\x00\x06\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0e\x00\x16\x00\x1d\x00$\x00+\x00\x00\x04\"&462\x16\x14\x05\x1627'\x06'64&\"\x06\x14\x162\x1764'\a\x16\a'&\"\a\x176\x17\a\x06\x14\x177&7\x01gΑ\x91Α\xfe\xa1/p/522\x82/B//B\x8a\x1d\x1d5\x15\x15\x0f/p/522\xdd\x1d\x1d5\x15\x158\x91Α\x91\xceD\x1d\x1d5\x15\x15UB//B/\x17/p/522\xdd\x1d\x1d5\x15\x15\x0f/p/522\x00\x00\x00\x03\xff\xfe\xff\xbe\x02\x05\x01\xc9\x00\x15\x00\x18\x00!\x00\x00\x016\x16\a\x03\x06\a\x06#\"/\x01\a\x0e\x01&=\x01'.\x017\x177'\x17\x13\x05\x1776\x16\x0f\x01\x01\xb8\x1a2\x04<\x04\x14\v\f\n\tp+\x0e) r\x1c\x04\x1a\xa8%%\xd5;\xfe`l\xd3\v\x15\b\x8c\x01\xba\x0e!\x1e\xfe|\x17\v\x06\x03.;\x11\x04\x1c\x16T0\v<\x0f\xda2\x0f$\x01\x83\xf0-\xb9\t\x13\f\xca\x00\x00\x00\x00\x06\xff\xec\xff\xc8\x02\x04\x01\xb8\x00\x10\x00\x19\x00 \x00'\x00.\x005\x00\x00\x01\x16\x06\a\x06#\"&'&67632\x1e\x01\a6767'\x0f\x01\x177&'\a\x15\x177'\x06\a\x1f\x0175\x037/\x01\a\x16\x1f\x01\x16?\x01'#\a\x01\xe4 ^a&'O\x84\x19 ^a&'4_H:\f\x05\x15\x01'G\x19,4%=/@G\xd6<&\nG@]+\x18G'\x01%e:@\x16,O+\x01\rb\xb7 \f^Mb\xb7 \f*N\xf5\x10\n*/%\x16L=\xf24\x14\x1aJ/\x16}\x1445\x16/J\xfe\xe0>J\x17%?4I\x13\x130==\x00\x00\x00\t\x00\x00\x00\x00\x02@\x01\x80\x00\x13\x00\x19\x00\x1f\x00+\x00/\x00;\x00G\x00S\x00_\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01>\x013\x03\x142=\x01#\x01\x11!\x11\x14\a7\"=\x014;\x012\x1d\x01\x14#'\x1535\a54;\x012\x1d\x01\x14+\x01\"754;\x012\x1d\x01\x14+\x01\"=\x014;\x012\x1d\x01\x14+\x01\"\x1554;\x012\x1d\x01\x14+\x01\"\x02(\n\x0e\x0e\n\xfe\x10\x17!\x0e\n+\x05\x19\x0f@\x10\x10\x01\xe0\xfe`\x01=\f\f\x88\f\flPx\f\x88\f\f\x88\f\xc0\fh\f\fh\f\fh\f\fh\f\fh\f\fh\f\x01\x80\x0e\n\xfe\xb0\n\x0e!\x17\x01\x10\n\x0e\x0e\x12\xfe\xb8\b\b\xf8\xff\x00\x01 \xfe\xe8\x04\x04x\f`\f\f`\fP((\x8c\x18\f\f\x18\f\f\x18\f\f\x18\f\x9c\x18\f\f\x18\f<\x18\f\f\x18\f\x00\x00\x04\xff\xf9\xff\xb9\x02\x87\x01\xc7\x00\v\x00\x1e\x008\x00@\x00\x00\x05\x16\x0f\x01\x06'\x01&?\x016\x17\x133\x17!\"&54767>\x045\x17\x067\"\a'675462\x16\x1d\x01\x1e\x02\x15\x14\x17'&5414&\x03\"&53\x14\x0e\x01\x02z\f\n\n\n\f\xfd\xaa\f\n\n\n\f\x80\xb6>\xfe\xe8\x0e\x12\t\x01\x02\b\t\x10\t\t.\t|\"\x1d&\x1f&\x13\x1a\x13%:!\x0e;\x03B.\x1a&\x80\x11\x1e\x17\n\r\f\f\n\x01\xd3\n\r\f\f\n\xfe\x940\x13\r\f\n\x01\x02\t\n\x1a\x1a*\x18#D\xe5\x13\x1d\x19\b\x15\r\x13\x13\r\x15\a,B&7&/\x17\x16\x01.B\xfe`%\x1b\x11\x1e\x11\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x004\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14\x05\x06#\"&54>\x0132\x17\x16\x15\x14\x0f\x01\x06'&#\"\x0e\x01\x15\x14\x163276\x16\x1f\x01\x16\x15\x14\x99Α\x91Α\xa5\xa6uu\xa6u\x013)?=O$@(;&\x04\x02\x12\a\v\x1c!\x18$\x12*$$\x1e\x04\n\x04\x14\x02\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x10)Q<'@%#\x04\x05\x03\x03\x1d\v\t\x16\x15%\x16\"2\x1b\x04\x01\x04\x1b\x04\x04\x04\x00\x04\x00\x00\x00\x00\x02\x00\x01\x80\x00\x0f\x00\x1b\x003\x00K\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0125\x114#!\"\x15\x11\x1437\x16\a\x0e\x01&546\x16\x17\x16\x0f\x01\x06'&\x06\x15\x14\x1676\x1f\x01\x16\a\x0e\x01&546\x16\x17\x16\x0f\x01\x06'&\x06\x15\x14\x1676\x17\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\x9a\x06\x06\xfel\x06\x06\xc1\x03\x04\x1aR@AR\x19\x03\x02\x11\x04\x06\x1e@=\x1f\x05\x04\xd2\x03\x03\x1bR@AR\x19\x03\x01\x12\x04\x05\x1f@>\x1e\x06\x04\x01\x80\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c\xfe\xb0\x06\x01\x14\x06\x06\xfe\xec\x06V\x04\x04\x1c\x056/.4\x03\x19\x03\x03\x1e\x06\x04\x18\x15\"%\x17\x1b\x05\x06\x1b\x04\x04\x1c\x056/.4\x03\x19\x03\x03\x1e\x06\x04\x18\x15\"%\x17\x1b\x05\x06\x00\t\x00\x00\xff\xe0\x02\x00\x01\xa0\x00+\x00/\x003\x007\x00;\x00O\x00c\x00g\x00o\x00\x00\x01#\x1132\x1d\x01\x14+\x01\"=\x01!\x15\x14+\x01\"=\x014;\x01\x11#\"=\x014;\x012\x1d\x01!54;\x012\x1d\x01\x14'\x1535!\x1535\x115#\x15!5#\x15'\x11#\"=\x01!\x15\x14+\x01\x1132\x1d\x01!543'2\x1d\x01\x14+\x01\"=\x01#\"=\x014;\x012\x1d\x01'\x1535\x175#\x15\x14+\x01\x15\x01\xf4\f\f\f\fH\f\xfe\xc0\fH\f\f\f\f\f\fH\f\x01@\fH\f@ \xfe@ \x01\xc0 \b\f\f\xfe\xc0\f\f\f\f\x01@\f\x18\f\f\xc8\fT\f\f\xc8\f\xb8\x90`8\fL\x01@\xff\x00\fH\f\f\f\f\f\fH\f\x01\x00\fH\f\f\f\f\f\fH\f@ \xfe\x80 @\x01\x00\f\f\f\f\xff\x00\f\f\f\f\xc0\f\xa8\f\f4\f\xa8\f\f4\x18pp\xb0pL\f\x18\x00\x00\x00\x00\n\x00\x00\xff\xe0\x02@\x01\xa0\x00C\x00G\x00K\x00O\x00S\x00g\x00k\x00\x87\x00\x8b\x00\x8f\x00\x00%#\x1532\x1d\x01\x14+\x01\"=\x01#\x15\x14+\x01\"=\x014;\x015#\x15\x14+\x01\"=\x014;\x015#\"=\x014;\x012\x1d\x01354;\x012\x1d\x01\x14+\x01\x15354;\x012\x1d\x01\x14'\x1535\x03\x1535\x055#\x15\x135#\x15\x17354;\x015#\"=\x01#\x15\x14+\x01\x1532\x15\x175#\x15%5#\"=\x01#\x1532\x1d\x01\x14+\x01\"=\x01#\x1532\x1d\x013543\x175#\x15\x135#\x15\x024\f\f\f\fH\f\xe0\fH\f\f\fX\fH\f\f\f\f\f\fH\f\xe0\fH\f\f\fX\fH\f\xe0 \xfe\xc0 @\xe0\f\f\f\f\xe0\f\f\f\f\x80 \x018\f\fX\f\f\fH\fX\f\f\xe0\f4 \xe0\xa0\fH\f\f\f\f\f\fH\f\x18\f\f\fH\f\xa0\fH\f\f\f\f\f\fH\f\x18\f\f\fH\f\xa0 \xff\x00 \x01\x00 \xd8\f\f\xa0\f\f\f\f\xa0\f\x94 @\xa0\f\fX\fH\f\f\f\x18\f\f\f\f@ \x01\x00 \x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x11\x00\x14\x00\x1d\x00\x00%\x14\x0f\x01\x06#!\"&5\x11463!2\x16\x15\x037#\x13!\x113546;\x01\x01\xc0\x0eT\x0e\x14\xfe\xf4\x14\x1c\x1c\x14\x01`\x14\x1c\x80LLP\xfe\xa0\xe0\x0e\nhd\x14\x0eT\x0e\x1c\x14\x01`\x14\x1c\x1c\x14\xfe\xa4L\x01\x10\xfe\xa0h\n\x0e\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x19\x00(\x004\x00\x00\x012\x16\x15\x11\x14\x06+\x01\x15\x14\x06#!\"&5\x1146;\x015463\x132=\x01#\"&=\x01#\"\x15\x11\x143%25\x114#!\"\x15\x11\x143\x01\xd0\x14\x1c\x1c\x140\x1c\x14\xfe\xc0\x14\x1c\x1c\x140\x1c\x14\xda\x06\xe0\x14\x1c*\x06\x06\x01\x94\x06\x06\xfe\xcc\x06\x06\x01\xc0\x1c\x14\xfe\xc0\x14\x1c0\x14\x1c\x1c\x14\x01@\x14\x1c0\x14\x1c\xfe0\x06*\x1c\x14\xe0\x06\xfe\xcc\x06`\x06\x014\x06\x06\xfe\xcc\x06\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00%\x00+\x001\x00\x00\x01\x14\x06\a\x1e\x01\x1532\x1d\x01\x14#!\"=\x014;\x01467.\x015#\"=\x0143!2\x1d\x01\x14#!\x14\x16265\x114&\"\x06\x15\x01p2//2\x04\f\f\xfe\x98\f\f\x042//2\x04\f\f\x01h\f\f\xfe\xccKjKKjK\x01\x90?s\x1e\x1es?\f\x18\f\f\x18\f?s\x1e\x1es?\f\x18\f\f\x18\fLllL\xfe`LllL\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa1\x00)\x00p\x00\x00\x016\x16\x1d\x01\x14\x0f\x01\x06\x15\x14\x06+\x01\"&5<\x05&4&/\x01&=\x0146\x17>\x01\x1762\x176\x16\x1754&\x06\x15\x14\x06+\x01\"&=\x014&\x06\x1d\x01\x14\x06+\x01\"&=\x014&\x06\x1d\x01\x14\x06+\x01\"&=\x014&\x06\x1d\x01\x14\x06#\"/\x01&=\x014&\x06\x1d\x01\x14\x1f\x01\x16\x1d\x01354?\x016\x01\x99$C\t+\x04\x13\r\xfc\r\x13\x01\x01\x01b'8#\x02I$\x16@\x16\x18:H\x1a\x1a\t\a\a\a\t\x1a\x1a\t\a\a\a\t\x1a\x1a\t\a\a\a\t\x1a\x1a\t\a\x06\x05\a\x05\x1a\x1a\x17a\x14\xdc\b+\x05\x01q\x10,(r\x18\x15d\t!\r\x13\x13\r\x04\b\x05\x05\x03\x03\x02\x01\x01\x01U\"49#,\b)(\x14\x17\x17\x0e\r\xcfr\x10\r\r\x0f\a\t\t\a\x1a\x11\r\r\x10\x1b\a\t\t\a(\x10\x0e\r\x10)\a\t\t\a\x1a\x11\r\r\x10t\a\t\x04\x06\x04\b)\x10\r\r\x0f9\x1e\x14U\x11\x1a\n\a\x14\x12d\f\x00\x00\x00\x00\x02\xff\xfc\xff\xbf\x01\xc0\x01\xc1\x00\x1d\x00Y\x00\x00\x016\x16\x1d\x01\x14\x0f\x01\x0e\x01+\x01\"/\x01&676\x17546\x17>\x01\x176\x16\x15\x1754&\x06\x1d\x01\x14\x06+\x01\"&=\x014&\x06\x1d\x01\x14\x06+\x01\"&=\x014&\x06\x1d\x01\x14\x06+\x01\"&=\x014&\x06\x1d\x01\x14\x06/\x01.\x01\x0e\x01\x14\x1f\x01376\x01u\x1d.\x05\x1e\x03\x11\f\xde\x11\nw\x10\b\x16\x1d!3 \x12P\x14\x1f4\x1b\x12\x13\t\a\x06\a\t\x13\x12\t\a\a\x06\n\x12\x12\n\x06\a\a\t\x13\x12\x16\a\x1b\x04\f\n\a\x04s\xca\x1b\x04\x01O\x05)\x1e\x84\x17\x16\x83\v\x0e\r\xa9\x167\x10\x15\f~!(\b$\x02%\b)!ф\f\n\n\rL\a\t\t\a\x9a\f\v\n\f\x9b\a\t\t\a\xbc\f\v\n\f\xbd\a\t\t\a\x99\f\v\n\f\xce\f\a\t&\x06\x03\x04\t\f\x06\xa2w\x11\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa6\x00 \x00]\x00\x00\x05\"&7.\x017#\"&463\x17'.\x01>\x01\x1f\x016\x1f\x01\x16\x1d\x01\x14\x06\x0f\x01\x06#'32?\x016=\x014/\x01&\x0f\x01\x06#\"/\x01&\a\x06\x17\x16\x1f\x01\x16\x1d\x01\x14\x06+\x01\"\x06\x16;\x012\x16\x1d\x01\x14\x06+\x01\"\x06\x16;\x012\x16\x1d\x01\x14\x06#\"\x06\x16\x01\x00\"(\n\x10\x11\x03X\x1f++\x1f^O\x1d\x18\x168\x1d\x91+1b\"\x1d\x17w\a\bFF\x02\x02w\x0f\tb\x0f\n\x16\x05\a\x03\x03\xa6\x17\n\v\x13\x03\x02\x9c\n\t\a\xb6\x10\x0e\x0e\x10\xb6\a\t\t\a\x1c\f\n\n\f\x1c\a\t\t\a\f\n\n 6 \n#\x14+<+\t\x13\v88\x18\v85\x1c7\x13'\xcd\x17%\x05\x1b\x020\x01\x1b\x03\x0f\xcd\v\x057\b\f\x1b\x06\x01@\t\x14\x15\f\x01\x02;\x04\v\f\x06\n\x19\x19\n\x06\a\a\t\x12\x13\t\a\x06\a\t\x13\x12\x00\x02\x00\x00\xff\xe0\x02@\x01\xa0\x00\x1c\x00A\x00\x00%\x16\x1d\x01#5'&+\x01\"&546;\x017#\"&=\x01463!2\x17\x1354/\x01&#!\"\x1d\x01\x14\x16;\x012\x16\x0f\x01\x0e\x02+\x01\"\x06\x15\x14;\x012\x1f\x01\x1e\x01\x1d\x01\x02-\x13\xe0d\x04\x04\x84\x17!4$r\x12\xc4!/!\x17\x01&'\x15v\f\x92\a\r\xfe\xda\b\x13\r\xd5\x13\x16\a\x18\x04\x0e\x12\tr\x11\x17\b\x84\r\rc\x0e\x11\x9d\x1d$|H&\x02!\x17$40/!\b\x17!!\xfe\x91L\x15\x12\xe2\v\b\b\r\x13\x1f\x12@\t\x0e\b\x17\x11\b\x05'\x05\x18\x0f\x18\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x01\x01\xc3\x003\x00g\x00\x00\x01\x16\x15\x14\x0f\x01\x0e\x01+\x02\".\x02/\x01.\x025476\x17'&5467&54676\x1e\x01\x1f\x017>\x0232\x1e\x02\x176\a6&\x06\x0f\x01\x06&?\x016&\x06\x0f\x01\x06\"/\x01.\x01\x06\x1f\x01\x16\x06/\x01.\x01\x06\x1f\x01\x16\x15\x14\x06/\x01&\x0e\x01\x1f\x01\x1e\x01;\x02267\x01\xf5\v\x02:\tI*k\x01\f\x1e\x1c\x1a\t\\\x06\v\x06\x14\x1c(\x18\x03(\x1c\x01!\x17\x15&\x1a\x04\x0e\x05\x03\x16\x1f\x10\x06\x0f\x18\x15\x05+\x0f\x04\x16\x1c\x04\x19\x03\x1b\x02\x1d\x03\x16\x1c\x03 \x03\x1a\x04/\x04\x1c\x16\x04+\x03\x1c\x04 \x04\x1d\x15\x05$\n\t\x044\v\x1c\x06\n[\r+\x11\x01k\x1a.\x06\x01L\x12\x15\b\t\xf2(:\a\v\x0f\tV\x06\x13\x14\t\x1d\x15\x1e\bR\v\n\x1c+\x03\x03\x04\x18*\x06\x05\r\x1c\x116\x17\x10\x1b\x10\x03\t\x19\x11\x02R\x10\x13\a\x10h\x0e\a\r\x8b\x11\x13\b\x10\x9b\r\r\xb8\x0f\a\x14\x0f\xa5\x0e\b\x0ei\x10\x05\x14\x0fz\"$\x05\x04\x030\f\v\x1a\fV\f\x11$\x19\x00\x00\x05\xff\xfc\xff\xc0\x01\xc0\x01\xc0\x00\x1e\x00^\x00p\x00\x80\x00\x8c\x00\x00\x016\x16\x1d\x01\x14\x0f\x01\x0e\x01+\x01\"/\x01&676\x175462\x16\x1d\x016\x176\x16\x05&\x0e\x01\x1f\x01\x16;\x012?\x016=\x014&\x06\x15\x14\x0e\x01+\x01\"&=\x014&\x06\x1d\x01\x14\x06+\x01\".\x01=\x014&\x06\x1d\x01\x14\x0e\x01+\x01\"&=\x014&\x06\x1d\x01\x14\x06'\x17546;\x012\x16\x1d\x01\x14\x0e\x02+\x01\"&7546;\x012\x16\x1d\x01\x14\x06+\x01\"&754;\x012\x1d\x01\x14+\x01\"\x01f!9\x02\x1b\x05%\x17\xb2\"\x14m\x10\b\x16\x1d!'7'!\x17\x15-\xfe\xf9\a\x15\a\x06m\x06\t\xb2\x0f\x03\x1b\x01\x12\x13\x04\a\x05\x06\a\t\x13\x12\t\a\a\x04\b\x04\x12\x12\x05\a\x04\a\a\t\x13\x12\x16\aD\b\x06\x06\x06\b\x02\x04\x05\x03\x06\x06\bL\b\x06\x06\x05\t\t\x05\x06\x06\bK\x0e\x06\x0e\x0e\x06\x0e\x01\r\f(#T\b\aw\x17\x1d\x1c\x9a\x167\x10\x15\f\xa1\x1c''\x1cJ\x05\x18\n\vw\n\x04\x12\n\x9a\b\x0fw\x02\x02T\f\n\n\f\x04\b\x04\t\a\x15\f\n\n\f\x15\a\t\x04\b\x04#\f\n\n\f#\x04\b\x04\t\a\xaf\f\n\n\f\xf1\f\a\tR`\a\t\t\a`\x03\x06\x04\x03\t\a`\a\t\t\a`\a\t\t\a`\x10\x10`\x10\x00\x02\xff\xfa\xff\xc0\x01\xc0\x01\xc0\x00#\x00^\x00\x00\x016\x1e\x01\x1d\x01\x14\x0f\x01\x0e\x01+\x01\"/\x01&7'&676\x1e\x01\x1f\x01'462\x16\x1d\x016\x16\x1754&\x06\x15\x14\x06+\x01\"&=\x014&\x06\x1d\x01\x14\x06+\x01\"&=\x014&\x06\x1d\x01\x14\x06+\x01\"/\x01.\x01\x06\x1f\x01\x16\x15\x14\x0f\x01\x06\x1f\x01\x16;\x012?\x016\x01j\x15(\x19\x02\x1b\x05%\x17\xcd'\x137\x1c58\v\x18\x1c\x14%\x1f\a\x13\t+<+\x14#0\x12\x13\t\a\x06\a\t\x13\x12\t\a\a\x06\n\x19\x19\n\x06\f\v\x04;\x06\x1c\x13\x06@\x01\x06\x1b\f\b7\x05\v\xcd\x0f\x03\x1b\x01\x01\x00\a\x0e#\x16F\b\aw\x17\x1d\"b1+\x91\x1d8\v\a\x05\x19\x13O^\x1f++\x1fX\x03\x11\x96F\f\n\n\f\a\t\t\a\x1c\f\n\n\f\x1c\a\t\t\a\xb6\x10\x0e\x0e\x10\xb6\a\t\n\x9c\x0f\x03\x16\x10\xa6\x03\x03\a\x05\x16\n\x0fb\t\x0fw\x02\x00\x00\x04\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00,\x005\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14\x05\x16\x14\x0e\x01+\x01\"/\x01#\x15\x14\x06+\x01\"&=\x0146;\x012\x15\x14\a\x16'254.\x01+\x01\x15\x99Α\x91Α\xa5\xa6uu\xa6u\x016\x02\x03\x06\x03+\a\x030 \a\x05'\x04\b\b\x04Of(\x02: \x05\x12\x10\x1b\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6#\x03\a\x05\x03\x06ZT\x05\a\a\x05\xf8\x05\aU3\x16\x03)!\n\r\b@\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1b\x00;\x00C\x00\x00%\x15\x14+\x01\x15\x14+\x01\"=\x01#\"=\x014;\x0154;\x012\x1d\x01327\x11\x14\x06#!\"&5\x1146;\x0154;\x012\x1d\x01354;\x012\x1d\x0132\x16\x03\x11!\x11\x143!2\x01P\fL\f\x18\fL\f\fL\f\x18\fL\fp\x1c\x14\xfe\xa0\x14\x1c\x1c\x140\f(\f\x80\f(\f0\x14\x1c0\xfe\xa0\x06\x01T\x06\x9c\x18\fL\f\fL\f\x18\fL\f\fL\xa8\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c4\f\f44\f\f4\x1c\xfe\x92\x01*\xfe\xd6\x06\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\v\x00+\x003\x00\x007\"=\x014;\x012\x1d\x01\x14#7\x11\x14\x06#!\"&5\x1146;\x0154;\x012\x1d\x01354;\x012\x1d\x0132\x16\x03\x11!\x11\x143!2|\f\f\xc8\f\f|\x1c\x14\xfe\xa0\x14\x1c\x1c\x140\f(\f\x80\f(\f0\x14\x1c0\xfe\xa0\x06\x01T\x06x\f\x18\f\f\x18\f\xd8\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c4\f\f44\f\f4\x1c\xfe\x92\x01*\xfe\xd6\x06\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1b\x00;\x00C\x00\x00%\a\x06/\x01\a\x06/\x01&?\x01'&?\x016\x1f\x0176\x1f\x01\x16\x0f\x01\x17\x167\x11\x14\x06#!\"&5\x1146;\x0154;\x012\x1d\x01354;\x012\x1d\x0132\x16\x03\x11!\x11\x143!2\x018\x11\t\b66\b\t\x11\b\b66\b\b\x11\t\b66\b\t\x11\b\b66\b\x80\x1c\x14\xfe\xa0\x14\x1c\x1c\x140\f(\f\x80\f(\f0\x14\x1c0\xfe\xa0\x06\x01T\x06I\x11\b\b66\b\b\x11\t\b66\b\t\x11\b\b66\b\b\x11\t\b66\b\xfe\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c4\f\f44\f\f4\x1c\xfe\x92\x01*\xfe\xd6\x06\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1f\x00'\x007\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x0154;\x012\x1d\x01354;\x012\x1d\x01\x1325\x11!\x11\x143%\a\x06/\x01&?\x016\x1f\x0176\x1f\x01\x16\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x140\f(\f\x80\f(\f*\x06\xfe\xa0\x06\x01\x1f\x8e\t\bK\t\t\x17\b\t,o\b\t\x16\t\x01\x80\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c4\f\f44\f\f4\xfep\x06\x01*\xfe\xd6\x06Ɏ\b\tK\t\b\x17\b\b-n\t\t\x16\t\x00\x00\x00\x04\x00\x00\xff\xe0\x02@\x01\xa0\x00!\x00%\x00*\x00/\x00\x00\x012\x16\x15\x11\x14\x0e\x01\x0f\x01\x06#\"/\x01\a\x06#\"&5\x114>\x01?\x01632\x1f\x0176\x05\x11\x17\x11\x0173\x11\a\x05\x11\a#\x11\x020\x06\n\x05\n\x05\x98\n\n\n\n\xac\xaa\x03\x03\x06\n\x05\n\x05\x98\n\n\n\n\xac\xaa\x03\xfe\xb3\x80\xfe\xd0\u007f\x01\x80\x01\xe0\u007f\x01\x01\xa0\t\a\xfe\xa6\x06\f\n\x025\x03\x03=?\x01\t\a\x01Z\x06\f\n\x025\x03\x03=?\x01:\xfe\xe2.\x01\x1e\xfe\xe6/\x01\x1e,\xfe\x01!/\xfe\xe2\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x16\x00*\x00\x00\x012\x16\x15\x11\x14\x06+\x01\a\x06#\"=\x01#\"&5\x11463\x01\x114&#!\"\x06\x15\x11\x14\x16;\x01\x15?\x01326\x01\xc0\x1a&&\x1a\x90}\x03\x04\f`\x1a&&\x1a\x01\x90\t\a\xfe\x80\a\t\t\a\x90C\r\xa0\a\t\x01\xc0&\x1a\xfe\xe0\x1a&^\x02\fT&\x1a\x01 \x1a&\xfe\xa0\x01 \a\t\t\a\xfe\xe0\a\t<2\n\t\x00\x00\x00\x00\x04\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x1f\x00/\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%\x15\x14\x06+\x01\"&=\x0146;\x012\x16\a\x15\x14\x06+\x01\"&=\x0146;\x012\x16\x99Α\x91Α\xa5\xa6uu\xa6u\x01(\t\a0\a\t\t\a0\a\tp\t\a0\a\t\t\a0\a\t\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\xa3\xa0\a\t\t\a\xa0\a\t\t\a\xa0\a\t\t\a\xa0\a\t\t\x00\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x1f\x00\x00\x00\x14\x06\"&462\x04\x14\x16264&\"\x17\x15\x14\x06+\x01\"&=\x0146;\x012\x16\x01\xf8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\xb3\t\a\xa0\a\t\t\a\xa0\a\t\x01'Α\x91Α\xa5\xa6uu\xa6ux\xa0\a\t\t\a\xa0\a\t\t\x00\x00\x00\x05\x00\x00\xff\xff\x02\x80\x01\x80\x00#\x00+\x00L\x00f\x00n\x00\x00\x013\x11#\"&5#\x06\x0f\x01\x0e\x01'\x06#\"'\x06&/\x01#\x14\x0e\x01+\x01\x11376;\x012\x17\x00264&\"\x06\x14\x056/\x01\a\x0e\x01&'&6?\x01#\"\x06#\a#\x153\x17\x166?\x01\x17\x16?\x01\x17\x16?\x015#'&+\x01\"\x0f\x01\x06\x14\x17\x166?\x016\x1f\x01\x16\x0f\x01\x17\x16\x17\x16264&\"\x06\x14\x02\ay@\r\x13:\x03\b\x1a\f#\x11\x13\x1e\x16\x13\x17;\x17U\t\t\x0e\t@v0\x10\x17\xe3\x17\x11\xfeQ\x0e\t\t\x0e\t\x01\x96\x05\x06l\t\x12-\x1d\t\x14\x02\x16'9\x01\x03\x01>*\x1ca\f!\n\x10%\t\t\x1e\x18\x06\x05\x84-=\x03\x03T\x0f\fA\b\a\x06\x15\a7\f\v\v\v\f\rg\x04\x04n\x0e\t\t\x0e\t\x01@\xff\x00\x13\r\r\n \x0f\t\a\x18\x10\x11\x02\x13L\t\x0e\t\x01\x000\x10\x10\xfe\xf0\n\r\t\t\r\x03\a\x05W\a\x11\x03\x0f\t\x16;\x15#\x02>\x80X\n\x04\r\x13 \a\n$\x13\x05\x06I\x80>\x02\v<\x06\x14\b\a\x01\x063\v\f\f\f\n\fS\x04\x040\n\r\t\t\r\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x1d\x005\x00`\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x114767>\x052\x1e\x04\x17\x16\x1354'&'\".\x02\"\x0e\x02#\x06\a\x06\x1d\x01\x143!2'\x16\a\x06\a\x0e\x05#\".\x03'&'&?\x016\x17\x16\x172\x1e\x0232>\x047676\x17\x01\xef\x11\x1c\x14\xfe`\x14\x1c\x12(_\x03\x12\f\x15\x11\x16\x14\x16\x12\x14\f\x12\x03d\x05\x02Q4\x01\x1b\x0e\x17\x10\x17\x0e\x1b\x01/V\x02\x06\x01\x94\x06 \b\n7\x10\x03\x12\f\x15\x11\x16\n\f\x19\x19\x0e\x1a\x01\x107\n\b\x0f\b\t7\x10\x01\x1b\x0e\x17\b\x06\r\f\x0f\v\r\x03\x107\t\b\x01\x1b\x0e\x17\xfe\xfa\x14\x1c\x1c\x14\x01\a\x16\x0f!K\x03\x0f\n\x0e\b\x06\x06\b\x0f\t\x0f\x03O\xfe\xbd\xfe\x02\x02B)\x17\n\f\f\t\x18%F\x01\x03\xfe\x06\xc2\n\a-\f\x03\x0f\n\x0e\b\x06\a\x10\n\x15\x02\f-\a\n\x12\t\a,\r\x17\n\f\x05\a\v\b\f\x02\r,\a\t\x00\x00\x04\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00'\x00+\x003\x00H\x00\x00\x01#\x1532\x1d\x01\x14+\x01\x1532\x1d\x01\x14+\x01\x15\x14\x06#!\"&5\x11463!2\x16\x1d\x0132\x1d\x01\x14\x03\x11!\x116\"&462\x16\x14\a\"&=\x014632\x1632632\x16\x1d\x01\x14\x06#\x01\xb4\x14\x14\f\f\x14\x14\f\f\x14\x1c\x14\xfe\xc0\x14\x1c\x1c\x14\x01@\x14\x1c\x14\fP\xfe\xc0\xba4&&4&\x9a\t\r'\x1c\x04\x1a\x0f\x0f\x1a\x04\x1c'\r\t\x01 @\f(\f@\f(\f0\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x1c\x140\f(\f\xfe\xd0\x01\xa0\xfe`\xd0&4&&4\xa6\v\b\x13\x18\"\b\b\"\x18\x13\b\v\x00\a\x00\x00\xff\xe0\x02@\x01\xa0\x00\x0f\x00\x13\x00\x1b\x000\x00<\x00H\x00T\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01\x11!\x116\"&462\x16\x14\a\"&=\x014632\x1632632\x16\x1d\x01\x14\x06#7\"=\x014;\x012\x1d\x01\x14#'\"=\x014;\x012\x1d\x01\x14#'\"=\x014;\x012\x1d\x01\x14#\x02\x10\x14\x1c\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe0\xfe \xba4&&4&\x9a\t\r'\x1c\x04\x1a\x0f\x0f\x1a\x04\x1c'\r\t>\b\bp\b\bp\b\bp\b\bp\b\bp\b\b\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfep\x01`\xfe\xa0\xb0&4&&4\xa6\v\b\x13\x18\"\b\b\"\x18\x13\b\v@\b\x10\b\b\x10\b@\b\x10\b\b\x10\b@\b\x10\b\b\x10\b\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\"\x004\x00\x00\x122\x16\x14\x06\"&4\x16264&\"\x06\x14&2\x16\x14\x06\"&4\x1227&'\x06#\"'\x06\a%654&\"\x06\x15\x14\x17632\x162632\xd0P88P8L(\x1c\x1c(\x1c7Α\x91Α\xae\x948\x18.\x1e\x1e\x1d\x1f-\x19\x01%%u\xa6u%)@\x03%$%\x03@\x01X8P88PX\x1c(\x1c\x1c(ԑΑ\x91\xce\xfe\xd10&\x02\n\n\x01'$4@SuuS@44\n\n\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x0f\x00\x13\x00\x1f\x00'\x00<\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01\x11!\x11\x13\"&46;\x012\x16\x14\x06#\x06\"&462\x16\x14\a\"&=\x014632\x1632632\x16\x1d\x01\x14\x06#\x01P\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \xfe\xe0`\a\t\t\a`\a\t\t\a\x164&&4&\x9a\t\r'\x1c\x04\x1a\x0f\x0f\x1a\x04\x1c'\r\t\x01\xc0\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c\xfe0\x01\xa0\xfe`\x01`\t\x0e\t\t\x0e\t\xb0&4&&4\xa6\v\b\x13\x18\"\b\b\"\x18\x13\b\v\x00\x00\x00\x00\x06\x00\x00\xff\xe0\x02@\x01\xa0\x00\x0f\x00$\x000\x00<\x00H\x00P\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01\x11!\x113&54632\x1632632\x16\x15\x14\a7\"=\x014;\x012\x1d\x01\x14#'\"=\x014;\x012\x1d\x01\x14#'\"=\x014;\x012\x1d\x01\x14#\x06\"&462\x16\x14\x02\x10\x14\x1c\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe0\xfe !\x01'\x1c\x04\x1a\x0f\x0f\x1a\x04\x1c'\x019\b\bp\b\bp\b\bp\b\bp\b\bp\b\b\xfe4&&4&\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfep\x01 \xfe\xe0\x04\x12\x18\"\b\b\"\x18\x12\x04P\b\x10\b\b\x10\b@\b\x10\b\b\x10\b@\b\x10\b\b\x10\b`&4&&4\x00\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x17\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x015!\x15\x143!2\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\xfe`\x06\x01\x94\x06\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfev\xea\xea\x06\x00\x00\x01\x00\x00\xff\xe0\x02\x00\x00 \x00\v\x00\x00\x05!\"&463!2\x16\x14\x06\x01\xe0\xfe@\r\x13\x13\r\x01\xc0\r\x13\x13 \x13\x1a\x13\x13\x1a\x13\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x19\x00\x1d\x00&\x00\x00\x012\x16\x15\x11\x14\x06+\x01\x15\x14\x06#!\"&5\x1146;\x015463\x135!\x15%\x11!\x1532\x16\x1d\x01\x01\xd0\x14\x1c\x1c\x140\x1c\x14\xfe\xc0\x14\x1c\x1c\x140\x1c\x14\xe0\xfe\xc0\x01\xa0\xfe\xc0\xe0\x14\x1c\x01\xc0\x1c\x14\xfe\xc0\x14\x1c0\x14\x1c\x1c\x14\x01@\x14\x1c0\x14\x1c\xfe0\xd0\xd0`\x01@0\x1c\x14\xe0\x00\x01\xff\xfa\xff\xc0\x01\xc6\x01\xc0\x00\xa2\x00\x00%\x1e\x01\x0f\x01\x06/\x01\x17\x16\x0e\x01\x0f\x01\x06&/\x02\x15\x17\x16\x0f\x01\x06/\x01\x15\x14\x06+\x01\"&=\x01\a\x06/\x01&4?\x015\x0f\x01\x0e\x01/\x01.\x01?\x01\a\x06&/\x01&?\x01'.\x01?\x01>\x01\x1f\x017'\a\x06&/\x01&6?\x01'&?\x016\x1f\x01'&6?\x016\x16\x1f\x025'&?\x016\x1f\x01546;\x012\x16\x1d\x0176\x1f\x01\x16\x0f\x01\x15?\x01>\x01\x1f\x01\x1e\x01\x0f\x0176\x16\x1f\x01\x16\x0f\x01\x17\x1e\x01\x0f\x01\x0e\x01/\x01\a\x1776\x16\x1f\x01\x16\x06\x0f\x01\x01\xb8\x06\x03\x03\b\b\x0e'\t\x01\x02\x06\x04\x0f\x06\f\x02\x15H;\v\v\f\v\v\x19\t\x06\x10\a\t\x19\v\v\v\x04\x04:H\x15\x02\v\x06\x0f\a\x06\x02\t'\x06\r\x03\b\b\x0e'\"\x06\a\x02\x04\x02\v\x06PHHP\x06\v\x02\x04\x02\a\x06\"'\x0e\b\b\b\x0e'\t\x02\x06\a\x0f\x06\f\x01\x15H:\v\v\f\v\v\x19\t\x06\x10\a\t\x19\v\v\v\v\v:H\x15\x02\v\x06\x0f\a\x06\x02\t(\x05\r\x03\b\b\x0e'\"\x06\a\x02\x04\x02\v\x06PHHP\x06\v\x02\x04\x02\a\x06\"]\x04\f\x06\x0e\x0e\b\x17\"\x05\b\x06\x01\x04\x02\a\x06Q*T;\f\v\v\f\f\x19.\a\t\t\a.\x1a\v\v\f\x04\x0e\x04\x01;\x012\x1e\x01\x1f\x01'\a3'&+\x01\"\x13\x11!\x117\"=\x014;\x012\x1d\x01\x14#\x01\f\f\f\x18\f\f\x8c\a\t\t\a\x10\x1c\x14\xfe\xe0\x14\x1c\x10\a\t\t\aR\"\x06\x18\fd\b\x10\x0e\x04\"\xb2\x12\x8c\x12\x02\x03^\x03\xc2\xfe\xe0L\f\f\x18\f\f \f\xd8\f\f\xd8\f\x01P\t\a\x10\a\t\xfe\xb0\x14\x1c\x1c\x14\x01P\t\a\x10\a\t9\t\x0e\x06\v\x069\x1d\x1d\x1d\x03\xfe`\x01P\xfe\xb00\f\xd8\f\f\xd8\f\x00\x00\x00\x05\x00\x00\xff\xe0\x02@\x01\xa0\x00\x18\x00$\x004\x00<\x00G\x00\x00%\x15\x14\x06#!\"&5\x1146;\x01\x15#\"\x1d\x01\x143!2=\x01\x13!\"\x1d\x01\x143!2=\x01452\x16\x15\x11\x14\x06#!\"&5\x11463\x16\x14\x06\"&462\a76\x1f\x0176\x1f\x01\x15!\x01\xe0\x1c\x14\xfe\x80\x14\x1c\x1c\x14\x10\n\x06\x06\x01t\x06Z\xfe\x8c\x06\x06\x01t\x06\x14\x1c\x1c\x14\xfe\x80\x14\x1c\x1c\x14x\x17\"\x17\x17\"1(\b\b(h\b\bH\xfe\xe0 \x10\x14\x1c\x1c\x14\x01\x00\x14\x1c0\x06\xf4\x06\x06\n\x01P\x06\xf4\x06\x06\xf4\x060\x1c\x14\xff\x00\x14\x1c\x1c\x14\x01\x00\x14\x1c_\"\x17\x17\"\x17\x88(\b\b(h\b\bHP\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x15\x00\x1d\x001\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01462\x16\x15&\"\x06\x14\x16264\x13\x114+\x01\x15\x14+\x01\"=\x01#\"\x15\x11\x143!2\x01P\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14P&4&6\x14\x0e\x0e\x14\x0ex\x06*\f\xa8\f*\x06\x06\x01\x14\x06\x01\x80\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1a&&\x1a\x18\x0e\x14\x0e\x0e\x14\xfel\x01T\x06$\f\f$\x06\xfe\xac\x06\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\"\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x1474;\x012\x1d\x0132\x16\x0f\x01\x06/\x01&6;\x01\x99Α\x91Α\xa5\xa6uu\xa6u\xa8\f(\fC\b\x06\x05d\b\bd\x05\x06\bC\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\xc7\f\ft\x0f\x05d\b\bd\x05\x0f\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\"\x00\x006462\x16\x14\x06\"$4&\"\x06\x14\x1627\x15\x14+\x01\x15\x14\x06/\x01&?\x016\x16\x1d\x0132\b\x91Α\x91\xce\x01/u\xa6uu\xa6-\ft\x0f\x05d\b\bd\x05\x0ft\fYΑ\x91Α\xa5\xa6uu\xa6u\xdc(\fC\b\x06\x05d\b\bd\x05\x06\bC\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\"\x00\x00\x00\x14\x06\"&462\x04\x14\x16264&\"\a54;\x01546\x1f\x01\x16\x0f\x01\x06&=\x01#\"\x01\xf8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6-\ft\x0f\x05d\b\bd\x05\x0ft\f\x01'Α\x91Α\xa5\xa6uu\xa6u\xdc(\fC\b\x06\x05d\b\bd\x05\x06\bC\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\"\x00\x00\x04\"&462\x16\x14\x02\"\x06\x14\x16264\a#\"=\x01#\"&?\x016\x1f\x01\x16\x06+\x01\x15\x14\x01gΑ\x91Α\xa5\xa6uu\xa6u\xb4(\fC\b\x06\x05d\b\bd\x05\x06\bC8\x91Α\x91\xce\x01/u\xa6uu\xa6\xd3\ft\x0f\x05d\b\bd\x05\x0ft\f\x00\x00\a\xff\xfd\xff\xbf\x02C\x01\xc0\x00\x0f\x00\x13\x00\x17\x00\x1b\x00\x1e\x00!\x00$\x00\x00\x012\x1f\x01\x16\a\x01\x06\"'\x01&?\x0163\x05#\x173%\a3'#\a37\a\x17'3\x177\a7#\x01\xd0\x06\x04d\x05\x06\xfe\xec\x03\f\x03\xfe\xec\x06\x05d\x03\a\x01M94D\xfe\xf74\xc24\xca?D4dxD3aa\x11x4\x01\xc0\x05\x94\a\a\xfe\xab\x04\x04\x01U\a\a\x94\x050``````\x90\xa0\xa0\xf3\xf3\xa0\xa0\x00\x00\x04\x00\x00\x00\x00\x02\x80\x01\x80\x00\a\x00%\x005\x00E\x00\x00\x002\x16\x14\x06\"&4\x1754+\x0154+\x01\"\x0f\x01\x06\x15\x14\x1f\x01\x16327\x15#\"\x1d\x01\x14;\x012\x132\x16\x15\x11\x14\x06#!\"&5\x11463\x015\"&5!\x14\x06#\x152\x16\x15!46\x01\x18P88P8\x88\b\x10\b\x0e\a\x06\x0f\x04\x02\b\x03\x04\x03\x02\x10\b\b@\b\xf8\r\x13\x13\r\xfd\xc0\r\x13\x13\r\x020\x1b%\xfe`%\x1b\x1b%\x01\xa0%\x010B\\BB\\f\x10\bX\b\x04\n\x03\x04\x02\x02\x0e\x03\x017\b\x10\b\x01\x00\x13\r\xfe\xc0\r\x13\x13\r\x01@\r\x13\xfe\xf0\xa0%\x1b\x1b%\xa0%\x1b\x1b%\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x1b\x007\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01\x114#!\"\x15\x11\x143!2'\a\x17\x16\x0f\x01\x06/\x01\a\x06/\x01&?\x01'&?\x016\x1f\x0176\x1f\x01\x16\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\x06\xfel\x06\x06\x01\x94\x06l==\t\t\x16\b\t==\t\b\x16\t\t==\t\t\x16\b\t==\t\b\x16\t\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfev\x01T\x06\x06\xfe\xac\x06\xed==\t\b\x16\t\t==\t\t\x16\b\t==\t\b\x16\t\t==\t\t\x16\b\x00\x00\x05\xff\xfb\xff\xe0\x02\x00\x01\xa0\x00\a\x00\x0f\x00\x17\x00+\x00>\x00\x0062\x16\x14\x06\"&462\x16\x14\x06\"&462\x16\x14\x06\"&4&2\x16\x14\x06#\"'\x06#\"&7>\x027&54\x05264&\"\x06\x15\x14\x1f\x01\a\x06\a6?\x01\x17\x16\x83\x1a\x13\x13\x1a\x13\x83\x1a\x13\x13\x1a\x13\x83\x1a\x13\x13\x1a\x13\xbaԖ\x96j/.AJ\x10\f\n\x02\x0f\x17\a5\x01\x00Vzz\xacz(\x14\n\b\f\x1e\x1b\x14\x17&\xf0\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\xc3z\xacz\x0e.\x1d\v\x02\x11%\x128FV\xf6^\x84^^B3*\x16\x1c\x14\x15\n\x14\r\a\f\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1f\x00'\x009\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14$\x1e\x01\a\x06\"'&>\x01\x16\x17\x16276&\"&462\x16\x1472\x16\x17\x16\x06/\x01&\"\x0f\x01\x06&7>\x02\x91Α\x91Α\xa5\xa6uu\xa6u\x016\x0f\x02\x06/\x94/\x06\x02\x0f\x14\x06!f!\x06\x9d\x1a\x13\x13\x1a\x13\x80\x14%\x03\x01\x0f\x06\n\v&\f\t\x06\x0f\x01\x02\x13\x1a\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6$\r\x14\a99\a\x14\r\x02\b''\bA\x13\x1a\x13\x13\x1a)\x18\x12\b\b\x05\t\t\t\t\x05\b\b\f\x14\n\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00 \x003\x00H\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x1462\x17\x16\x06\a\x06&'&\"\a\x0e\x01.\x01?\x01\x14\x06\"&547'.\x01>\x01\x1f\x01\x1e\x01\a\x066\x16\x06\x0f\x01\x16\x15\x14\x06\"&5\"'&>\x02?\x016\x91Α\x91Α\xa5\xa6uu\xa6u\x93j\"\x06\x02\a\b\x14\x06\x13>\x13\x06\x14\x0f\x02\x06'\x13\x1a\x13\x05\x1c\t\n\x06\x11\nP\t\n\x03\x05\xb2\x06\n\t\x1c\x05\x13\x1a\x13\x12\x05\x02\x02\x04\a\x05P\n\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x1b)\a\x14\x06\a\x02\b\x16\x16\b\x02\r\x14\aq\r\x13\x13\r\b\b\t\x03\x11\x13\n\x03\x18\x03\x11\n\x11@\x13\x11\x03\b\t\b\r\x13\x13\r\x11\x05\t\b\a\x01\x18\x03\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00+\x00G\x00O\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x146\x06\"/\x01\a\x06\"&4?\x01'&462\x1f\x01762\x16\x14\x0f\x01\x17\x166\x16\x14\x0f\x01\x17\x16\x14\x06\"/\x01\a\x06\"&4?\x01'&462\x1f\x0176\x062\x16\x14\x06\"&4\x91Α\x91Α\xa5\xa6uu\xa6u\xac\f\x10\x06\x12\x12\x06\x10\f\x06\x12\x12\x06\f\x10\x06\x12\x12\x06\x10\f\x06\x12\x12\x06\x94\f\x06\x12\x12\x06\f\x10\x06\x12\x12\x06\x10\f\x06\x12\x12\x06\f\x10\x06\x12\x12\x06\x824&&4&\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6k\f\x06\x12\x12\x06\f\x10\x06\x12\x12\x06\x10\f\x06\x12\x12\x06\f\x10\x06\x12\x12\x06L\f\x10\x06\x12\x12\x06\x10\f\x06\x12\x12\x06\f\x10\x06\x12\x12\x06\x10\f\x06\x12\x12\x06\x84&4&&4\x00\x00\x00\t\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x007\x00?\x00K\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14$2\x16\x14\x06\"&4\x16264&\"\x06\x1462\x16\x14\x06\"&4&\x14\x06\"&462\x06264&\"\x06\x1462\x16\x14\x06\"&4\x172\x16\x14\x06+\x01\"&463\x91Α\x91Α\xa5\xa6uu\xa6u\x01\aB//B/<(\x1c\x1c(\x1c&\x14\x0e\x0e\x14\x0eX/B//B5(\x1c\x1c(\x1c&\x14\x0e\x0e\x14\x0e\xb8\n\x0e\x0e\n\x80\n\x0e\x0e\n\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\xc3/B//BQ\x1c(\x1c\x1c(,\x0e\x14\x0e\x0e\x14\x17B//B/\x80\x1c(\x1c\x1c(,\x0e\x14\x0e\x0e\x14\x82\x0e\x14\x0e\x0e\x14\x0e\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00-\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x146\x14\x06\"&46:\x02\x16\x14\x06\"&4\x062\x16\x17\x16\x06'&\"\a\x06&76\x91Α\x91Α\xa5\xa6uu\xa6u\x98\x13\x1a\x13\x13\x1a\x86\x1a\x13\x13\x1a\x13N<=\x05\x01\r\t141\t\r\x01\x05\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x90\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a]\"\x1b\t\f\x03\x0f\x0f\x03\f\t\x1b\x00\x00\x00\r\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00/\x006\x00=\x00A\x00E\x00I\x00M\x00T\x00[\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x146\"&462\x16\x14\x16\"&462\x16\x14\a2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x175#\x15\x14\x16375#\"\x06\x1d\x01\x175#\x1575#\x15\x175#\x1575#\x15\x175#\x15326=\x014&+\x01\x15\x91Α\x91Α\xa5\xa6uu\xa6u\x85\x1a\x13\x13\x1a\x13\x8d\x1a\x13\x13\x1a\x13\x10\x14\x1c\x1c\x14\xc0\x14\x1c\x1c\x14\x18(\t\a\x18\x18\a\th000p000h(\x18\a\t\t\a\x18\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6c\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a#\x1c\x14 \x14\x1c\x1c\x14 \x14\x1c`\x18\b\a\t(\x18\t\a\b(\x18\x18(\x18\x18(\x18\x18(\x18\x18\x18\b\x18\t\x1f\b\a\t\x18\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1f\x00'\x00/\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%6\x16\a\x0e\x01#\".\x01'&6\x17\x162&\"&462\x16\x14\x16\"&462\x16\x14\x91Α\x91Α\xa5\xa6uu\xa6u\x012\a\f\x02\x05M)\x1a6(\x03\x02\f\a)\x82\x84\x1a\x13\x13\x1a\x13\x8d\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\"\x03\n\b\".\x14&\x16\b\n\x03\rN\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\r\x00\x1b\x00#\x00+\x009\x00\x007\x06\"'&'6762\x17\x16\x17\x06\x17\x06\"'&'6762\x17\x16\x17\x06&2\x16\x14\x06\"&4\x12264&\"\x06\x14%6\x16\a\x0e\x01\"&'&6\x17\x162\xc8\x05\x15\x06\x0f\x01\x01\x0f\x05\x15\x06\x0f\x01\x01q\x05\x15\x06\x0f\x01\x01\x0f\x05\x15\x06\x0f\x01\x01\xc6Α\x91Α\xa5\xa6uu\xa6u\x012\a\f\x02\x05MRM\x05\x02\f\a)\x82\xc8\t\t\x16\"\"\x16\t\t\x16\"\"\x16\t\t\x16\"\"\x16\t\t\x16\"\"ڑΑ\x91\xce\xfe\xd1u\xa6uu\xa6\"\x03\n\b\"..\"\b\n\x03\r\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1f\x004\x00E\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%6\x16\a\x0e\x01#\".\x01'&6\x17\x162'&7>\x0432\x16\x17\x16\x06/\x01&\"\x0f\x01\x067&7>\x012\x16\x17\x16\x06/\x01&\"\x0f\x01\x06\x91Α\x91Α\xa5\xa6uu\xa6u\x012\a\f\x02\x05M)\x1a6(\x03\x02\f\a)\x82\xc3\a\x01\x01\b\v\x0e\x0f\a\x13#\x02\x01\r\x03\t\r&\r\t\x03\x9a\a\x01\x02#&#\x02\x01\r\x03\t\r&\r\t\x03\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\"\x03\n\b\".\x14&\x16\b\n\x03\rV\x02\a\f\x16\x12\f\a)\x1e\a\x04\x06\x11\x16\x16\x11\x06\x02\x02\a\x1e))\x1e\a\x04\x06\x11\x16\x16\x11\x06\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xc7\x00\n\x00\x1a\x00+\x00E\x00Z\x00\x00\x00\"&5476\x17\x16\x15\x14\x03\".\x01'&6\x17\x16276\x16\a\x0e\x016\x06/\x01&\"\x0f\x01\x06'&7>\x012\x16\x177\x16\x15\x14\x06\"&4632\x17\x06\a&#\"\x06\x14\x162654'2$\"\x0f\x01\x06'&7>\x0432\x16\x17\x16\x06/\x01\x01\xce,\x1f.\a\a.\xf5\x1a6'\x04\x02\f\a)\x82)\a\f\x02\x05M`\r\x03\t\r&\r\t\x03\x06\a\x01\x02#&#\x02d\f\x91Α\x91gC:\x0e\x032:Suu\xa6u\v\x1a\xfe\xec&\r\t\x03\x06\a\x01\x01\b\v\x0e\x0f\a\x13#\x02\x01\r\x03\t\x01 \"\x19\x1cE\v\vE\x1c\x19\xfe\xee\x14%\x17\b\n\x03\r\r\x03\v\a\".\xaa\x03\x05\x11\x16\x16\x11\x06\x02\x02\a\x1e))\x1e,%(g\x91\x91Α\"\x1c\x12 u\xa6uuS!\x1f\x03\x16\x11\x06\x02\x02\a\f\x16\x12\f\a)\x1e\a\x04\x06\x11\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\r\x00\x1f\x004\x00<\x00D\x00\x00%6\x16\a\x0e\x01\"&'&6\x17\x162/\x01.\x017>\x01\x1f\x017>\x01\x17\x1e\x01\x0f\x01\x067\x16\x06\x0f\x01\x06/\x01&676\x1e\x01\x1f\x0176\x1e\x02&2\x16\x14\x06\"&4\x12264&\"\x06\x14\x01b\a\f\x02\x05MRM\x05\x02\f\a)\x82pF\x10\x0e\x05\x05\x1a\x0e\a\x02\x04\x18\x0e\x10\x11\x04\x14\x02\xb5\x05\x0e\x10F\b\x02\x14\x04\x11\x10\t\x12\f\x03\x02\a\x06\x0e\f\n\xf2Α\x91Α\xa5\xa6uu\xa6u\x8f\x03\n\b\"..\"\b\n\x03\r>\x12\x04\x1d\x0f\r\f\x03\x02\a\x0e\x10\x02\x03\x1a\x10F\bD\x0f\x1d\x04\x12\x02\bF\x10\x1a\x03\x01\x06\x0e\t\a\x02\x01\x01\x06\n\xb0\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1f\x00,\x00:\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%6\x16\a\x0e\x01#\".\x01'&6\x17\x162.\x01?\x01'&6\x1f\x01\x16\x14\x0f\x013'&4?\x016\x17\x16\x0f\x01\x17\x16\x06\x91Α\x91Α\xa5\xa6uu\xa6u\x012\a\f\x02\x05M)\x1a6(\x03\x02\f\a)\x82\xbc\r\a!!\a\x0e\bP\x06\x06P\xe4P\x06\x06P\t\x06\a\a!!\a\r\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\"\x03\n\b\".\x14&\x16\b\n\x03\r/\x0f\b((\b\x0f\x050\x03\x0e\x0300\x03\x0e\x030\x05\a\b\b((\b\x0f\x00\a\xff\xfe\xff\xbf\x02\x02\x01\xc1\x00\v\x00\x1d\x00/\x00;\x00J\x00Y\x00h\x00\x0076\x16\a\x06\a\x06\"&4767\x06\a&67632\x17\x06\a&#\"\a\x0e\x01%67\x16\x06\a\x06#\"'67\x16327>\x01'\x06&76762\x16\x14\a\x06\x04\x16\x0f\x01\x06+\x01&/\x02.\x01?\x02\"'&?\x0163\x16\x1f\x02\x1e\x01\x0f\x0167>\x01\x17\x16\x0e\x02'&676u\x05\a\x01\f\x13\x10/\"\x10\x13)\x1b\x14\x1f\x1c7Hg<5\a\x05/6S:.\x14\x01{\x1d\x14$\x189Ig30\a\x06)-S:1\x10C\x05\a\x01\f\x13\x10/\"\x10\x13\xfe\xee\n\x02\x17\x02\t\x01\n\x01\x054\n\x02\nZ4\t\x03\x05\x02\x17\x02\n\n\x01\x054\n\x02\n&.\x13\x04\x0f\x04\x13\x14:T\x1f\x06\x01\a&@\x01\a\x05R\x13\x10\"/\x10\x136\x06\aD\x986I\x1b\x15\x1c\x1c;-\u007f\x84\x06\x06E\xa29I\x15\x13\x1c\x14;0\x89T\x01\a\x05R\x13\x10\"/\x10\x13s\n\aZ\t\x01\n4\x05\x01\x14\x02\x17\x16\x03\x05\aZ\t\x01\n4\x05\x01\x14\x02p/%\a\x01\x06\x1fT:\x15\x14\x04\x0f\x04\x14\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1d\x006\x00P\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%6\x16\a\x0e\x01\"&'&6\x17\x162'7'&6?\x0262\x1f\x02\x1e\x01\x0f\x01\x17\x16\x06/\x01\a\x06&%\x1e\x01\x0f\x01\x17\x16\x0e\x01/\x01\a\x06&?\x01'&6?\x0262\x1f\x01\x91Α\x91Α\xa5\xa6uu\xa6u\x012\a\f\x02\x05MRM\x05\x02\f\a)\x82\xbb\x06\x1a\x03\x03\x05#\x0f\x02\n\x02\x0f#\x05\x03\x03\x1a\x06\x01\b\x04\x1f\x1f\x04\b\x01\x04\x05\x03\x03\x1a\x06\x01\x03\x06\x03\x1f\x1f\x04\b\x01\x06\x1a\x03\x03\x05#\x0f\x02\n\x02\x0f\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\"\x03\n\b\"..\"\b\n\x03\rG#\x18\x04\t\x01\x05\x1f\x05\x05\x1f\x05\x01\t\x04\x18#\x05\x05\x02\x10\x10\x02\x05N\x01\t\x04\x18#\x03\x05\x01\x01\x10\x10\x02\x05\x05#\x18\x04\t\x01\x05\x1f\x05\x05\x1f\x00\x00\x00\a\xff\xff\xff\xc8\x02\x81\x01\xb8\x00\v\x00\x17\x00%\x005\x00C\x00T\x00i\x00\x0076\x16\a\x06\a\x06\"&476\x05\x16\x14\x06\"'&'&6\x17\x16\a\x16\x17\x0e\x01\"&'67\x1e\x0126%&\a>\x022\x1e\x01\x17&\a.\x01\"\x06\x16\"&'&6\x17\x16276\x16\a\x066\x06/\x01&\"\x0f\x01\x06'&7>\x012\x16\x17&\"\x0f\x01\x06'&7>\x0432\x16\x17\x16\x06/\x01u\x05\a\x01\f\x13\x10/\"\x10\x13\x02M\x10\"/\x10\x13\f\x01\a\x05Rl\v\x12#l~l#\x12\v\x19_r_\xfe\xa3\v'\x06Em~mE\x06&\f\vp\x94p\xe3RM\x05\x02\f\a)\x82)\a\f\x02\x05\x13\r\x03\t\r&\r\t\x03\x06\a\x01\x02#&#\x02\xc5&\r\t\x03\x06\a\x01\x01\b\v\x0e\x0f\a\x13#\x02\x01\r\x03\t\xc0\x01\a\x05R\x13\x10\"/\x10\x13\x13\x10/\"\x10\x13R\x05\a\x01\fP \x0f2;;2\x0f 1;;\xad\x01\b>f;;f?\t\x01H``\xf8.\"\b\n\x03\r\r\x03\v\a\"|\x03\x05\x11\x16\x16\x11\x06\x02\x02\a\x1e))\x1e\"\x16\x11\x06\x02\x02\a\f\x16\x12\f\a)\x1e\a\x04\x06\x11\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x1d\x00;\x00C\x00K\x00\x00\x122\x16\x14\x06\"&4\x055'&\x06\x0f\x01\x06\"/\x01.\x01\x0f\x01\x15\x14\x1632>\x01\x17>\x0154&\"\x06\x15\x14\x16\x17&=\x01&'&6\x17\x16276\x16\a\x06\a\x15\x14&2\x16\x14\x06\"&462\x16\x14\x06\"&4\x91Α\x91Α\x018\x12\v\x15\x02\x03\x02\x0e\x02\x02\x03\x15\v\x12%\x1a\x12\x1e\x11\x1c1;u\xa6u;1\x04\x17\x04\x02\f\a)\x82)\a\f\x02\x04\x17\xbd\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xce\xff,\t\x05\v\v\f\a\a\f\v\v\x05\t+\x1a'\x11\x1d\a\x19_9SuuS9_\x19\x0e\v,\x14\x18\b\n\x03\r\r\x03\v\a\x18\x14,\v\xf3\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x1d\x00;\x00H\x00U\x00\x00\x122\x16\x14\x06\"&4\x055'&\x06\x0f\x01\x06\"/\x01.\x01\x0f\x01\x15\x14\x1632>\x01\x17>\x0154&\"\x06\x15\x14\x16\x17&=\x01&'&6\x17\x16276\x16\a\x06\a\x15\x14\x12\x16\x0f\x01\x17\x16\x06/\x01&4?\x01\a\x16\x14\x0f\x01\x06&?\x01'&6\x17\x91Α\x91Α\x018\x12\v\x15\x02\x03\x02\x0e\x02\x02\x03\x15\v\x12%\x1a\x12\x1e\x11\x1c1;u\xa6u;1\x04\x17\x04\x02\f\a)\x82)\a\f\x02\x04\x17\x1a\x0e\a!!\a\r\tP\x06\x06P\x94\x06\x06P\t\r\a!!\a\x0e\b\x01\xb8\x91Α\x91\xce\xff,\t\x05\v\v\f\a\a\f\v\v\x05\t+\x1a'\x11\x1d\a\x19_9SuuS9_\x19\x0e\v,\x14\x18\b\n\x03\r\r\x03\v\a\x18\x14,\v\x01\x12\x0f\b((\b\x0f\x050\x03\x0e\x0300\x03\x0e\x030\x05\x0f\b((\b\x0f\x05\x00\x00\x00\x00\a\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\x11\x00\x19\x00!\x00)\x001\x00G\x00e\x00\x00\x132\x1e\x01\x17\x16\x06/\x01&\"\x0f\x01\x06&7>\x022\x16\x14\x06\"&4\x16264&\"\x06\x1462\x16\x14\x06\"&4&2\x16\x14\x06\"&4\x055'&\x06\x0f\x01\x06\"/\x01.\x01\x0f\x01\x15\x14\x1632>\x01\x17>\x0154&\"\x06\x15\x14\x16\x17&=\x01&'&6\x17\x16276\x16\a\x06\a\x15\x14\x98\r\x1a\x13\x02\x01\x0f\x06\n\v&\v\n\x06\x0f\x01\x03%\xa3B//B/<(\x1c\x1c(\x1c&\x14\x0e\x0e\x14\x0e\x9fΑ\x91Α\x018\x12\v\x15\x02\x03\x02\x0e\x02\x02\x03\x15\v\x12%\x1a\x12\x1e\x11\x1c1;u\xa6u;1\x04\x17\x04\x02\f\a)\x82)\a\f\x02\x04\x17\x01\f\n\x14\f\b\b\x05\t\t\t\t\x06\t\b\x12\x184/B//BQ\x1c(\x1c\x1c(,\x0e\x14\x0e\x0e\x14\xbe\x91Α\x91\xce\xff,\t\x05\v\v\f\a\a\f\v\v\x05\t+\x1a'\x11\x1d\a\x19_9SuuS9_\x19\x0e\v,\x14\x18\b\n\x03\r\r\x03\v\a\x18\x14,\v\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\x0f\x00\x17\x00%\x00-\x005\x00\x00\x002\x16\x17\x16\x06/\x01&\"\x0f\x01\x06&76\x06\"&462\x16\x14\x176\x16\a\x0e\x01\"&'&6\x17\x162\x022\x16\x14\x06\"&4\x12264&\"\x06\x14\x014(%\x03\x01\x0f\x06\n\v&\v\n\x06\x0f\x01\x03Z\x1a\x13\x13\x1a\x13\x9a\a\f\x02\x05MRM\x05\x02\f\a)\x82\xa8Α\x91Α\xa5\xa6uu\xa6u\x01\f\x18\x12\b\t\x06\t\t\t\t\x06\b\t\x12$\x13\x1a\x13\x13\x1aT\x03\n\b\"..\"\b\n\x03\r\x016\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00)\x001\x009\x00A\x00\x00\x122\x16\x14\x06\"&4\x17\x14\a\x16\x15\x14\x06\a#\"'&?\x0164/\x01&4?\x0164/\x01&76\x17\x1e\x03\x022\x16\x14\x06\"&4\x12264&\"\x06\x14$2\x16\x14\x06\"&4\x9b\x1a\x13\x13\x1a\x13\xa8##)\x1e\x01\x06\x02\x01\x06\x11\x15\x15\x11\x04\x04\x11\x15\x15\x11\x06\x01\x02\x06\x10\x1b\x12\v\x9fΑ\x91Α\xa5\xa6uu\xa6u\x01\v\x1a\x13\x13\x1a\x13\x01\x10\x13\x1a\x13\x13\x1aq\x16\x0e\x0e\x16\x10\x1b\x01\x06\x06\x03\a\t\x19\t\a\x02\v\x02\a\t\x1a\b\b\x02\a\a\x01\x01\t\f\x0f\x01%\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\xa3\x13\x1a\x13\x13\x1a\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\x13\x00\x1b\x00#\x00E\x00U\x00\x00\x132\x16\x17\x14\x06/\x01&\"\x0f\x01\x06&7>\x04&2\x16\x14\x06\"&4\x12264&\"\x06\x14%\x14\a\x16\x15\x14\x06\a#\"'&?\x0164/\x01&4?\x0164/\x01&76\x17\x1e\x0362\x16\x17\x14\x06/\x01&\"\x0f\x01\x06&76\xa8\x13#\x02\f\x03\n\f&\r\t\x03\r\x01\x01\b\v\x0e\x0f\x10Α\x91Α\xa5\xa6uu\xa6u\x01\x00##)\x1e\x01\x06\x02\x01\x06\x11\x15\x15\x11\x04\x04\x11\x15\x15\x11\x06\x01\x02\x06\x10\x1b\x12\v\x05&#\x02\f\x03\n\f&\r\t\x03\r\x01\x02\x01()\x1e\a\x04\x06\x11\x16\x16\x11\x05\x03\a\f\x16\x12\f\a\x90\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x1f\x16\x0e\x0e\x16\x10\x1b\x01\x06\x06\x03\a\t\x19\t\a\x02\v\x02\a\t\x1a\b\b\x02\a\a\x01\x01\t\f\x0f\x95)\x1e\a\x04\x06\x11\x16\x16\x11\x05\x03\a\x1e\x00\x05\x00\x00\xff\xc8\x01\xfc\x01\xb8\x00!\x004\x00<\x00O\x00l\x00\x00%\x14\a\x16\x15\x14\x06\a#\"'&?\x0164/\x01&4?\x0164/\x01&763\x1e\x037&\"\x0f\x01\x06&7>\x0332\x16\x17\x16\x06'&462\x16\x14\x06\"\x05\x16\x06\x0f\x01\x06/\x01&>\x0176\x16\x1f\x0176\x16\a\x16\x17\x06#\"&4632\x16\x15\x14\a&#&'654&\"\x06\x14\x1632\x010##)\x1e\x01\x06\x02\x01\x06\x11\x15\x15\x11\x04\x04\x11\x15\x15\x11\x06\x01\x02\x06\x10\x1b\x12\vF\v&\v\n\x06\x0f\x01\x02\f\x10\x14\n\x14%\x03\x01\x0f\x06\xf8\x13\x1a\x13\x13\x1a\x01Z\a\x11\x12S\n\x03\x17\x03\a\x12\f\x11\x1c\x04\x03\b\x10\x1f\xa1\v\x02/4g\x91\x91gg\x91\x11\v\b\a\x0f\nu\xa6uuS-\x8c\x16\x0f\x0e\x16\x0f\x1b\x02\x06\a\x02\b\t\x19\t\a\x02\v\x02\a\t\x19\t\a\x03\x06\a\x01\t\f\x0fL\n\n\t\x05\b\b\t\x10\v\x06\x18\x12\b\b\x05\f\x1b\x13\x13\x1b\x12\xa2\x12!\x05\x16\x02\tS\f\x17\x10\x02\x02\x13\x10\t\x02\x05\x0f1(\a\x15\x91Α\x91g.,\x03\r\v\x1f Suu\xa6u\x00\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00-\x00\x00\x122\x16\x14\x06\"&4\x0064&\"\x06\x14\x166\"&462\x16\x14\x06\"&462\x16\x14\x172\x16\a\x0e\x01+\x01\"&'&63\x91Α\x91Α\x01Kuu\xa6uu\xb0\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13\xa2\a\b\x01\x06E.\x0e.E\x06\x01\b\a\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6u\xe8\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1aS\t\x06-<<-\x06\t\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1f\x00/\x00=\x00\x00\x122\x16\x14\x06\"&4\x0064&\"\x06\x14\x16\x122\x16\x17\x14\x06/\x01&\"\x0f\x01\x06&76\a\x06&7>\x012\x16\x17\x14\x06/\x01&\"\a\x172\x16\a\x0e\x01+\x01\"&'&63\x91Α\x91Α\x01Kuu\xa6uu\x90&#\x02\f\x03\n\f&\r\t\x03\r\x01\x02\x93\x03\r\x01\x02#&#\x02\f\x03\t\r&\r\xe2\a\b\x01\x06E.\x0e.E\x06\x01\b\a\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6u\x010)\x1e\a\x03\x05\x11\x16\x16\x11\x05\x03\a\x1e#\x05\x03\a\x1e))\x1e\a\x03\x05\x11\x16\x16M\t\x06-<<-\x06\t\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1c\x00)\x007\x00\x00\x122\x16\x14\x06\"&4\x0064&\"\x06\x14\x16\x13\x17\x16\x06/\x01&4?\x016\x16\x0f\x01\x06&?\x01'&6\x1f\x01\x16\x14\a\x172\x16\a\x0e\x01+\x01\"&'&63\x91Α\x91Α\x01Kuu\xa6uu\xb3!\a\x0e\bP\x06\x06P\b\x0e\a\xf3\t\r\a!!\a\x0e\bP\x06\x06\x94\a\b\x01\x06E.\x0e.E\x06\x01\b\a\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6u\x01\x04(\b\x0f\x050\x03\x0e\x030\x05\x0f\bb\x05\x0f\b((\b\x0f\x050\x03\x0e\x03R\t\x06-<<-\x06\t\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00!\x00)\x007\x00\x00\x122\x16\x14\x06\"&4\x0064&\"\x06\x14\x16\x122\x1e\x01\x17\x16\x06/\x01&\"\x0f\x01\x06&7>\x01\x06\"&462\x16\x14\x172\x16\a\x0e\x01+\x01\"&'&63\x91Α\x91Α\x01Kuu\xa6uu\x96\x1a\x1a\x13\x02\x01\x0f\x06\n\v&\f\t\x06\x0f\x01\x02\x13l\x1a\x13\x13\x1a\x13\xa2\a\b\x01\x06E.\x0e.E\x06\x01\b\a\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6u\x01$\n\x14\f\b\b\x05\t\t\t\t\x05\b\b\f\x142\x13\x1a\x13\x13\x1aS\t\x06-<<-\x06\t\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x1462\x16\x14\x06\"&462\x16\x14\x06\"&4\x91Α\x91Α\xa5\xa6uu\xa6uk\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\xa3\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x00\x00\x00\a\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00)\x001\x00C\x00O\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14$2\x16\x14\x06\"&4\x162654'\x16\x15\x14\x06\"&547\x06\x15\x14&\x14\x06\"&462\a\x14\x162654'\x16\x15\x14\x06\"&547\x06\x172\x16\x14\x06+\x01\"&463\x91Α\x91Α\xa5\xa6uu\xa6u\x01\x02<**<*7\"\x17\x12\x02\x0e\x14\x0e\x02\x12@*<**\x0232\x16\x1762\x16\x17\x16\x06/\x01&\"\x0f\x01\x06&76\x062\x16\x14\x06\"&4\x91Α\x91Α\x01\x888u\xa6u8\x0e\x14\x0e-f-\x0e\x14\x0e\xb3\x0f\x06\t\f&\v\n\x06\x0f\x01\x02\x13\x1a\r\x14%\x03p(%\x03\x01\x0f\x06\n\v&\v\n\x06\x0f\x01\x03>.!!.!\x01\xb8\x91Α\x91\xce\xf1:PSuuSP:r\n\x0e\x0e\n\x97\x19\x19\x97\n\x0e\x0e\n2\t\x06\t\t\t\t\x06\t\b\f\x14\n\x18\x12*\x18\x12\b\b\x05\t\t\t\t\x05\b\b\x12D&4&&4\x00\x00\x06\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1e\x00&\x00.\x009\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x1472\x17\x16\x06\a\x06&'&#\"&46&\"&462\x16\x1462\x16\x14\x06\"&4\a6\x17\x16\x15\x14\x06\"&54\x91Α\x91Α\xa5\xa6uu\xa6u\xd0<&\a\x02\b\b\x13\x06\x18&\n\x0e\x0eA\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13\x86\x06\x06$\x19\"\x19\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6#.\b\x14\x06\x06\x02\a\x1d\x0e\x14\x0e@\x13\x1a\x13\x13\x1a-\x13\x1a\x13\x13\x1aP\b\b1\x13\x11\x18\x18\x11\x13\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1f\x004\x00E\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%>\x01\x1e\x01\a\x06\"'&>\x01\x16\x17\x162'\a\x06'&7>\x0432\x16\x17\x16\x06/\x01&\"62\x16\x17\x16\x06/\x01&\"\x0f\x01\x06'&76\x91Α\x91Α\xa5\xa6uu\xa6u\x01\x1c\x06\x14\x0f\x02\x06/\x94/\x06\x02\x0f\x14\x06!f\xa3\t\x03\x06\a\x01\x01\b\v\x0e\x0f\a\x13#\x02\x01\r\x03\t\r&\xa0&#\x02\x01\r\x03\t\r&\r\t\x03\x06\a\x01\x02\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x1a\b\x02\r\x14\a99\a\x14\r\x02\b'\x8d\x11\x06\x02\x02\a\f\x16\x12\f\a)\x1e\a\x04\x06\x11\x16%)\x1e\a\x04\x06\x11\x16\x16\x11\x06\x02\x02\a\x1e\x00\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00'\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x1462\x16\x14\x06\"&46\x14\x06\"&46:\x02\x16\x14\x06\"&4\x91Α\x91Α\xa5\xa6uu\xa6u\xae4&&4&\x10\x13\x1a\x13\x13\x1a\x86\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6;&4&&4{\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1c\x00)\x008\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14$\x16\x0f\x01\x17\x16\x06/\x01&4?\x01\x06\x14\x0f\x01\x06&?\x01'&6\x1f\x01\x062\x16\x17\x16\x06'&\"\a\x06.\x0176\x91Α\x91Α\xa5\xa6uu\xa6u\x01C\r\a!!\a\r\tP\x06\x06P\x8e\x06P\t\r\a!!\a\x0e\bP\x02HC\x05\x01\n\a#r#\x04\b\x05\x01\x05\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\xc2\x0f\b((\b\x0f\x050\x03\x0e\x0303\x0e\x030\x05\x0f\b((\b\x0f\x050J6'\t\f\x03\x0f\x0f\x02\x04\n\x06'\x00\x00\x00\x1c\x01V\x00\x01\x00\x00\x00\x00\x00\x00\x00\x1a\x006\x00\x01\x00\x00\x00\x00\x00\x01\x00\x1b\x00\x89\x00\x01\x00\x00\x00\x00\x00\x02\x00\a\x00\xb5\x00\x01\x00\x00\x00\x00\x00\x03\x00\"\x01\x03\x00\x01\x00\x00\x00\x00\x00\x04\x00\x1b\x01^\x00\x01\x00\x00\x00\x00\x00\x05\x00&\x01\xc8\x00\x01\x00\x00\x00\x00\x00\x06\x00\x18\x02!\x00\x01\x00\x00\x00\x00\x00\n\x00,\x02\x94\x00\x01\x00\x00\x00\x00\x00\v\x00\x17\x02\xf1\x00\x01\x00\x00\x00\x00\x00\x10\x00\x13\x031\x00\x01\x00\x00\x00\x00\x00\x11\x00\a\x03U\x00\x01\x00\x00\x00\x00\x00\x12\x00\x1b\x03\x95\x00\x01\x00\x00\x00\x00\x00\x15\x00\x13\x03\xd9\x00\x01\x00\x00\x00\x00\x00\x16\x00\a\x03\xfd\x00\x03\x00\x01\x04\t\x00\x00\x004\x00\x00\x00\x03\x00\x01\x04\t\x00\x01\x006\x00Q\x00\x03\x00\x01\x04\t\x00\x02\x00\x0e\x00\xa5\x00\x03\x00\x01\x04\t\x00\x03\x00D\x00\xbd\x00\x03\x00\x01\x04\t\x00\x04\x006\x01&\x00\x03\x00\x01\x04\t\x00\x05\x00L\x01z\x00\x03\x00\x01\x04\t\x00\x06\x000\x01\xef\x00\x03\x00\x01\x04\t\x00\n\x00X\x02:\x00\x03\x00\x01\x04\t\x00\v\x00.\x02\xc1\x00\x03\x00\x01\x04\t\x00\x10\x00&\x03\t\x00\x03\x00\x01\x04\t\x00\x11\x00\x0e\x03E\x00\x03\x00\x01\x04\t\x00\x12\x006\x03]\x00\x03\x00\x01\x04\t\x00\x15\x00&\x03\xb1\x00\x03\x00\x01\x04\t\x00\x16\x00\x0e\x03\xed\x00C\x00o\x00p\x00y\x00r\x00i\x00g\x00h\x00t\x00 \x00(\x00c\x00)\x00 \x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00\x00Copyright (c) Font Awesome\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00 \x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Font Awesome 5 Free Regular\x00\x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Regular\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00 \x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00-\x005\x00.\x001\x002\x00.\x000\x00\x00Font Awesome 5 Free Regular-5.12.0\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00 \x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Font Awesome 5 Free Regular\x00\x003\x003\x000\x00.\x007\x005\x002\x00 \x00(\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x00v\x00e\x00r\x00s\x00i\x00o\x00n\x00:\x00 \x005\x00.\x001\x002\x00.\x000\x00)\x00\x00330.752 (Font Awesome version: 5.12.0)\x00\x00F\x00o\x00n\x00t\x00A\x00w\x00e\x00s\x00o\x00m\x00e\x005\x00F\x00r\x00e\x00e\x00-\x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00FontAwesome5Free-Regular\x00\x00T\x00h\x00e\x00 \x00w\x00e\x00b\x00'\x00s\x00 \x00m\x00o\x00s\x00t\x00 \x00p\x00o\x00p\x00u\x00l\x00a\x00r\x00 \x00i\x00c\x00o\x00n\x00 \x00s\x00e\x00t\x00 \x00a\x00n\x00d\x00 \x00t\x00o\x00o\x00l\x00k\x00i\x00t\x00.\x00\x00The web's most popular icon set and toolkit.\x00\x00h\x00t\x00t\x00p\x00s\x00:\x00/\x00/\x00f\x00o\x00n\x00t\x00a\x00w\x00e\x00s\x00o\x00m\x00e\x00.\x00c\x00o\x00m\x00\x00https://fontawesome.com\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00\x00Font Awesome 5 Free\x00\x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Regular\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00 \x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Font Awesome 5 Free Regular\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00\x00Font Awesome 5 Free\x00\x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Regular\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\xff\xdb\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x00\x00\x01\x00\x02\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01\a\x01\b\x01\t\x01\n\x01\v\x01\f\x01\r\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01!\x01\"\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01+\x01,\x01-\x01.\x01/\x010\x011\x012\x013\x014\x015\x016\x017\x018\x019\x01:\x01;\x01<\x01=\x01>\x01?\x01@\x01A\x01B\x01C\x01D\x01E\x01F\x01G\x01H\x01I\x01J\x00\x8b\x01K\x01L\x01M\x01N\x01O\x01P\x01Q\x01R\x01S\x01T\x01U\x01V\x01W\x00\x8a\x01X\x01Y\x01Z\x01[\x01\\\x01]\x01^\x01_\x01`\x01a\x01b\x01c\x01d\x01e\x01f\x01g\x01h\x01i\x01j\x01k\x01l\x01m\x01n\x01o\x01p\x01q\x01r\x01s\x01t\x01u\x01v\x01w\x01x\x01y\x01z\x01{\x01|\x01}\x01~\x01\u007f\x01\x80\x01\x81\x01\x82\x01\x83\x01\x84\x01\x85\x01\x86\x01\x87\x01\x88\x01\x89\x01\x8a\x01\x8b\x01\x8c\x01\x8d\x01\x8e\x01\x8f\x01\x90\x01\x91\x01\x92\x01\x93\x01\x94\x01\x95\x01\x96\x05heart\x04star\x04user\x05clock\blist-alt\x04flag\bbookmark\x05image\x04edit\ftimes-circle\fcheck-circle\x0fquestion-circle\x03eye\teye-slash\fcalendar-alt\acomment\x06folder\vfolder-open\tchart-bar\bcomments\tstar-half\x05lemon\vcredit-card\x03hdd\x10hand-point-right\x0fhand-point-left\rhand-point-up\x0fhand-point-down\x04copy\x04save\x06square\benvelope\tlightbulb\x04bell\bhospital\vplus-square\x06circle\x05smile\x05frown\x03meh\bkeyboard\bcalendar\vplay-circle\fminus-square\fcheck-square\fshare-square\acompass\x11caret-square-down\x0fcaret-square-up\x12caret-square-right\x04file\bfile-alt\tthumbs-up\vthumbs-down\x03sun\x04moon\x11caret-square-left\ndot-circle\bbuilding\bfile-pdf\tfile-word\nfile-excel\x0ffile-powerpoint\nfile-image\ffile-archive\nfile-audio\nfile-video\tfile-code\tlife-ring\vpaper-plane\x06futbol\tnewspaper\nbell-slash\x11closed-captioning\fobject-group\x0eobject-ungroup\vsticky-note\x05clone\thourglass\thand-rock\nhand-paper\rhand-scissors\vhand-lizard\nhand-spock\fhand-pointer\nhand-peace\rcalendar-plus\x0ecalendar-minus\x0ecalendar-times\x0ecalendar-check\x03map\vcomment-alt\fpause-circle\vstop-circle\thandshake\renvelope-open\faddress-book\faddress-card\vuser-circle\bid-badge\aid-card\x0fwindow-maximize\x0fwindow-minimize\x0ewindow-restore\tsnowflake\ttrash-alt\x06images\tclipboard\x15arrow-alt-circle-down\x15arrow-alt-circle-left\x16arrow-alt-circle-right\x13arrow-alt-circle-up\x03gem\x0emoney-bill-alt\fwindow-close\fcomment-dots\nsmile-wink\x05angry\x05dizzy\aflushed\nfrown-open\agrimace\x04grin\bgrin-alt\tgrin-beam\x0fgrin-beam-sweat\vgrin-hearts\vgrin-squint\x11grin-squint-tears\ngrin-stars\ngrin-tears\vgrin-tongue\x12grin-tongue-squint\x10grin-tongue-wink\tgrin-wink\x04kiss\tkiss-beam\x0fkiss-wink-heart\x05laugh\nlaugh-beam\flaugh-squint\nlaugh-wink\tmeh-blank\x10meh-rolling-eyes\asad-cry\bsad-tear\nsmile-beam\bsurprise\x05tired\x00\x00\x00\x00\x01\xff\xff\x00\x02\x00\x01\x00\x00\x00\f\x00\x00\x00\x16\x00\x00\x00\x02\x00\x01\x00\x03\x00\x99\x00\x02\x00\x04\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\xd9k%\xf9\x00\x00\x00\x00\xda\x15\xc8\v\x00\x00\x00\x00\xda\x15\xc8\x11" var _Assets20bbcb56854340073ddda797ede16b7f86c7d3a3 = "package gateway\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"strings\"\n\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/textileio/go-threads/core/thread\"\n\t\"github.com/textileio/go-threads/db\"\n\t\"github.com/textileio/textile/v2/api/common\"\n\t\"github.com/textileio/textile/v2/buckets\"\n)\n\n// collectionHandler handles collection requests.\nfunc (g *Gateway) collectionHandler(c *gin.Context) {\n\tthreadID, err := thread.Decode(c.Param(\"thread\"))\n\tif err != nil {\n\t\trenderError(c, http.StatusBadRequest, fmt.Errorf(\"invalid thread ID\"))\n\t\treturn\n\t}\n\tg.renderCollection(c, threadID, c.Param(\"collection\"))\n}\n\n// renderCollection renders all instances in a collection.\nfunc (g *Gateway) renderCollection(c *gin.Context, threadID thread.ID, collection string) {\n\tctx, cancel := context.WithTimeout(common.NewSessionContext(context.Background(), g.apiSession), handlerTimeout)\n\tdefer cancel()\n\tctx = common.NewThreadIDContext(ctx, threadID)\n\ttoken := thread.Token(c.Query(\"token\"))\n\tif token.Defined() {\n\t\tctx = thread.NewTokenContext(ctx, token)\n\t}\n\n\tjsn := c.Query(\"json\") == \"true\"\n\tif collection == buckets.CollectionName && !jsn {\n\t\tg.renderBucket(c, ctx, threadID, token)\n\t\treturn\n\t} else {\n\t\tvar dummy interface{}\n\t\tres, err := g.threads.Find(ctx, threadID, collection, &db.Query{}, &dummy, db.WithTxnToken(token))\n\t\tif err != nil {\n\t\t\trender404(c)\n\t\t\treturn\n\t\t}\n\t\tc.JSON(http.StatusOK, res)\n\t}\n}\n\n// instanceHandler handles collection instance requests.\nfunc (g *Gateway) instanceHandler(c *gin.Context) {\n\tthreadID, err := thread.Decode(c.Param(\"thread\"))\n\tif err != nil {\n\t\trenderError(c, http.StatusBadRequest, fmt.Errorf(\"invalid thread ID\"))\n\t\treturn\n\t}\n\tg.renderInstance(c, threadID, c.Param(\"collection\"), c.Param(\"id\"), c.Param(\"path\"))\n}\n\n// renderInstance renders an instance in a collection.\n// If the collection is buckets, the built-in buckets UI in rendered instead.\n// This can be overridden with the query param json=true.\nfunc (g *Gateway) renderInstance(c *gin.Context, threadID thread.ID, collection, id, pth string) {\n\tpth = strings.TrimPrefix(pth, \"/\")\n\tjsn := c.Query(\"json\") == \"true\"\n\tif (collection != buckets.CollectionName || jsn) && pth != \"\" {\n\t\trender404(c)\n\t\treturn\n\t}\n\n\tctx, cancel := context.WithTimeout(common.NewSessionContext(context.Background(), g.apiSession), handlerTimeout)\n\tdefer cancel()\n\tctx = common.NewThreadIDContext(ctx, threadID)\n\ttoken := thread.Token(c.Query(\"token\"))\n\tif token.Defined() {\n\t\tctx = thread.NewTokenContext(ctx, token)\n\t}\n\n\tif collection == buckets.CollectionName && !jsn {\n\t\tg.renderBucketPath(c, ctx, threadID, collection, id, pth, token)\n\t\treturn\n\t} else {\n\t\tvar res interface{}\n\t\tif err := g.threads.FindByID(ctx, threadID, collection, id, &res, db.WithTxnToken(token)); err != nil {\n\t\t\trender404(c)\n\t\t\treturn\n\t\t}\n\t\tc.JSON(http.StatusOK, res)\n\t}\n}\n" var _Assets4bf0d0667fe4719e513a3edfeb3a25a2377cf2b7 = "{{template \"header\" \"404 Not Found\"}}\n
\n
\n \n
\n
\n

Nothing to see here!

\n
\n
\n{{template \"footer\"}}\n" var _Assets5505a97055e70f2214132a49de39b49ea42721ef = "\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x02\x00\x00\x00\x02\x00\b\x06\x00\x00\x00\xf4x\xd4\xfa\x00\x00 \x00IDATx\x9c\xed\x9dy\x94\x1ceٷ\xef\xc1]Q|U\x14\xdcP\x16C'd\xa7\x93\xccdB\b\x84\xa0\xa0`\x14\x905l\xb2\x88l\xa2\xa2\xaf\xbc\n\n*(*ۄ}O\b!d\x9f\xee\xec\xfb2[W\xf5\x84LE\x10\x97O\xc5\r\x95=\x132\xe9\x9e\xdf\xf7GgB\x92\xd9zy\xaa\xee\xaaz~\xd79\xd79\xfe#g\xd2]\xfd\xdcWwU=%B\b\xb1\x0e@\xf6\x81#\xcf\xc0\x956<%o\xd3\xfe{\b!\x84\x10\xe23p\xe4\xa7p\x05{\x98\x95_h\xff]\x84\x10B\b\xf1\x01dd\x12\x1c\xc9u\x1b\xfeo\x99GVN\xd0\xfe;\t!\x84\x10b\x00x\xb2/\\i\xefc\xf0\xef\xed6x\xb2\xaf\xf6\xdfM\b!\x84\x902\xc0\r\xb2\x0f\x1cYQ\xc2\xe0\xdfӌ\xac\ad\x1f\xed\u007f\a!\x84\x10B\x8a\x04\xae|\xbb\xec\xc1\xdf\xdd\xefi\xff{\b!\x84\x10\xd2\ah\x91\xe1pe\xbb\xc1\xe1_Б\x1d\xc8JR\xfb\xdfG\b!\x84\x90\xdd\x00d\x9f\x12\xcf\xf3\x97k;\xc0\xdb\x06\t!\x84\x10u\xe0ʌ\x00\x06\xff\u07bf\b\xcc\x06\xa4J\xfb\xdfN\b!\x84X\a2\xf2\xf5\xc0\a\u007f\xf7\v\x05/\xd5~\x1d\b!\x84\x10+@\x8b\x1c\fW\xb6\xa9\x0f\xff\xb7\xdc\x0eG\x0e\xd5~]\b!\x84\x90X\xb2s\xfb\xde\x17C0\xf0{;-\xf0on+L\b!\x84\x18\x04\x8eܥ>\xe0\x8b5+\xf7j\xbf^\x84\x10BH\xa4AV\xbe\fW\xf2\xeaC\xbd\x12B\b!E\x01W\xa6\xa8\rLW\x80U7V>\xf8\xf7v\xe5\xcf\x01\xa7J\xef\xdf\xe4\xca\x05\xda\xef+!\x84\x10\xd2#\xd8$\x9f\x85\xd6\xcf\xfd\x8e\x00\x1bN6?\xf8\xf7v\xfd)\x9a\xb7\rnCF\x0e\xd1~\x9f\t!\x84\x10\x11\t\xc1cz\x9b?\x01\xa4\xb3\xfe\x0f\xff]\xb6\x16\xae-\xd0\xfa\xf7\xf2\xb1Ä\x10B\xb4\x81+S\xd5\x06a\xe6}\xc0ҧ\x03\x1c\xfc{\xb9tn\xe1Z\x03\xad\u007f\u007fV\xee\xd7~\xff\t!\x84X\x06\\9i疶:\xc3o\xf5\xf7\xf4\x06\xffޮ\xbeN/\x02\\\xc9Ñ\xafh\x1f\x0f\x84\x10Bb\x0e\x9e\x93\x8f\xc0\xd5ܾ\xb7Z\u007f\xe0\xf7f\xc3Qz\xd7\a\xb8ҎM\xf2Q\xed\xe3\x83\x10BH\xcc\x00\xa4\nY٢\xf6M\xb7\xe5\x00`Q\xa3\xfe\x90\xef\xcfEM@\xcb\xc7\xf5~\x11\xc8\xca\x1f\x01n+L\b!\xc4\x00p\xe4&\xb5\x81\xe6\xbc\x03X\xf6\xa8\xfe`/\xd5e\xd3\x00\xe7]z!\xe0\xc8/\xb4\x8f\x1bB\b!\x11\x05\xadR\v\xcd\xed{\xd7^\xa6?\xc8+u͕\x9a\x11Ё\x8cL\xd0>\x8e\b!\x84D\x04l\x92\xf7i=\xa6\xb7\xd3\x11\xech\x18\xa0?\xb8M\xdb8D\xf3\xfa\x80\xad\xf8\xa7\xbcO\xfb\xb8\"\x84\x10\x12b\xe0\xc8\x12\xado\xac\xffZy \x8e\x9a\xf87\f\x1d\x93\xc7ks~\xab?\xb4M\xbbx5\xd0\xf21\xcd_\x04V\x03R\xa5}\x8c\x11B\b\t\x11p\xe5{Z\x83)\x97\xd9\a\x97^\xb0\x10\x89$vy\xe4\xd8\x1c^y:\x86\x11\x90\xf6\x80\xe5\xf7\x16\x1eM\xac\x15\x02Y\xb9N\xfbx#\x84\x10\xa2\fZe\x10\x1c٦1\x88:\x1d\xc1\x93\xbf\xb9d\x8f\xc1\xbf\xbb\xc9\xda\x1c^\x9d\x1d\xd3\bH{\xc0\xba\xb34O\v\xbc\x89gd\xb0\xf6\xf1G\b!$`vn߫\xf6\x98\u07bf.\xf9l\xaf\x83\u007fw\x87\x8d\xc9\xe3\x8d8\x9e\x0e\xd8ݖO\xeb\xfd\x1a\xe0\xf0\xb1Ä\x10b\rpe\xba\xd6\xc0y}\xc3\xfb\xf1\xf9\x13\x9f+j\xf8w9\xbc&\x87?>\xfa;\xfdA\xed\xa7K\x16\xebn+\xec\xca,\xed\xe3\x92\x10B\x88O\xc0\x91K\xe0\xeam\xdf\xfb\x9doN/i\xf0\xef\xf1K@u\x1e\xcf=\xfc\xbc\xfe\xa0\xf6ە\xbfҋ\x80\xac\xe4\xe1\xc8\xe5\xda\xc7)!\x84\x10C\xc0\x95\x83\xa0\xb4}o\xa7#X|ߩe\x0f\xfe\xbd#\xe0_O>\xa7?\xa4\x83p\xfd\x17u\xb7\x15n\x92\xcfj\x1f\xb7\x84\x10B\xca\x04\x90}\xe0\xca_\xb4\xbeQ\xbe\xb0\xec \f\xad\xdefd\xf8w9tt\x0e/\xc5\xf5\xee\x80nf\x81\xe6Oj\xfe\"\xf0\"\xaf\x0f \x84\x90\x88\x01G\xee\xd4\x1a\x1c\xed\r\xef\xc1W\xbe\xe2\x18\x1d\xfc\xbb;\xa2&\x8f\xff\xcez6\x04\x03: \x97\xce\x012\xef\xd5\v\x01W\xee\xd1>\x9e\t!\x84\xf4\x03\\\xf9*\\\xe9\xd0\x1a\x167]{\x87o\x83\u007fwG\xd5\xe6\xf0J\x9co\x11\xec\xc9U?Ҍ\x80\x1dp\xe4k\xda\xc77!\x84\x90\xbd@F\xef1\xbd\x9d\x8e\xa0q\xc6с\f\xfe\xdd=rl\x0e\xed\xf3B0\x98\x83\xb6a\x9c\xee\xf5\x01\xae\xec\xaf}\xbc\x13B\b\x11\x118Ҭ\xf5\xcd\xf0ŕ\ab\xd4Q/\x05>\xfcw\xbf0\xf0\xf5\xb9[\xf4\x87r\xd0.j\xd4\xdeVx\x13\xb7\x15&\x84\x10%\xe0ʏ\xb5\x06@G\xf3;0\xe5\xacUj\x83\u007f\xef_\x02^\x98\x1e\xf3}\x02zs\xd9\xe3\x80\xf3N\xbd\x10p\xe5gڟ\x03B\b\xb1\x06\xb8r,\xb2:\x8f\xe9\xedt\x04\xb7_\xff\x13\xf5\xa1\xdfS\x04\xfc\xfe\x11\v\xf6\t\xe8\xcd\xd5\xdfҌ\x80\xed\xc8\xc8$\xed\xcf\x05!\x84\xc4\x16d\xe4\xbdP<\xcf\xff܂\xc1ꃾ/\x87\x8e\xc9\xe3%\x9b\xee\x0e\xe8\xc9Ƅ\xde\xf5\x01YيM|\xec0!\x84\x18\x05\xae\xa4\xb4\xbe\xe1\xe5\x9b?\x84ϟ\xf0\x17\xf5\x01_\x8cG\x8c\xce\xe3\xff=f\xe9\xe9\x80.\x17\xaf\x06Z>\xa2\xf9\x8b\xc02\xed\xcf\v!\x84D\x1e\xb4ȷ\x90\x95\xbc\xd6b\xfe\xe6\x92;0i\xd2v\xf5\xc1^\x8a#\xabs\xf8\xcb4\xcb# \xed\x01+\xee\x02\x9c}\xf4B\xc0\x91\xefj\u007f~\b!$r\xa0Y\x92Z\x8f\xe9\x85#\xc0\xba)\xe8X\xe8\xe1\xe4\x13\xcc\xee\xe4\x17\x94G\x8e\xb5p\x9f\x80\xde\\{\xa1\xeec\x87\x1d\x19\xa3\xfdy\"\x84\x90У\xfd\x98^\xb4|\x1cH{\xc8\xd5{\x18{\xd4\x0e\xf5A^\x89#j\xf2xs~\b\x06pX\xd4\xdcVؑv@\xf6\xd1\xfe|\x11BH(\x81#\x8f\xa9-Й\xf7\x02KR@\xdaC\xc7\x02\x0f\x93OlW\x1f\xe0&\x1c^\x93\xc7\xebs,\xdc'\xa07\x97,\x022\xfbꅀ+3\xb4?g\x84\x10\x12\x1a\xe0\xc8\xf9pe\x87ڢ\xbc\xf2\xa7\xbb\x06\xc4\xf6\xf9[p\xcaI\xf1\x18\xfe]\x8e\xaa\xb5\xe9\x01BE\xba\xf2\x16\xcd\b\xc8\xc1\x91\x8b\xb4?w\x84\x10\xa2\x066\xc9\x00(\xdd\xd6\aG\x80\r'\xed1\x14\xda\xe7m\xc1\xb1\x13\xa3u\xc1_\xb1\x1e96\x87\u007f\xda\xf2(\xe1R\xdc\xf0U\xedm\x85\aj\u007f\x0e\t!$0\x00\xa9\x82+\xbfW\xfb\x06\xd6r\x00\x90v\xf7\x18\x04\xdb\xe6m\xc1\x91cs\xea\x83\xdaOGT\xe7\xf0\xaf'-\xdf'\xa0G\xddµ\x1fZ\xc7cV^\xc0\r\xbc>\x80\x10\x12s\x90\x95_\xa8-\xb4\xce;\x81\xa53\xba\r\x807\xe6n\xc1\x98\x88_\xf0W\xacC\xc6\xe4\xf1\xdb\a\u007f\x1f\x82\xa1\x1bB\x97>\x05dޣ\x17\x02\x8eܦ\xfd\xf9$\x84\x10\xe3 +_\x86+\xdb\xd5\x16\xd7\xd5\xdf\xefq\xd1o\x9f\xb7\x05GM\xe8P\x1f\xccA:\xac:\x8fg\x1fb\x04\xf4\xea\xea\xffӋ\x80£\xacO\xd1\xfe\xbc\x12BH\xc5\xc0\x95\x8fC\xf3<\u007fCM\xaf\v\xfd\xb6\xf9[0\xfe\x18\xbb\x86\u007f\x97#jr\xf8\xf7S<\x1dЧ\r\xb5z\xd7\a8ҎM\xf2I\xed\xcf/!\x84\x94\x05\\٠\xf6M\xaa\xe5#\xc0\xa2\x8d\xbd.\xee\x1d\v=\x1c\x17\xd3\v\xfeJ\x89\x00+\x1f%\\\x8a\x8b\x1a\x80\x96\x8f\xea\xfd\"\xe0HF\xfbsL\b!E\x83\x8c\xfcHm\xc1t\x05X~\u007f\x9f\x8bz\xc7B\x0f\xa7\x9d\xbcU}\x00\x87\xc1#\xc7\xe6\xf0*w\f\xec\xdf\xe5\x0f\xe9n+\xec\xcaO\xb4?ׄ\x10\xd2+h\x95\t\xaa\xdb\xf7\xae\xb9\xac߅\x9cÿ\xbb\xa3\xc6\xe5\xf0\xda\x1cF@Q\xae\xb9Jw[\xe1\xac\x1c\xa7\xfd9'\x84\x90] +\x1fDV\xf1<\u007fӐ\xa2\x16\xefm\xf3\xb7X\xff\xb3\u007fo\x8e\x1c\x9b\xc3\xd6y<\x1dP\xb4\x8d\xc3u\xf7\x0f\xf0\xe4Cڟ{B\x88\xe5\xc0\x95YJ\x8b \x90\xd9\x0fX\xbc\xbc\xa8\x05\xbb}\x9e\xbd\x17\xfc\x15눚<\xfe\xc1͂\x8aw\xf1J\xa0\xe5CZ\x11\x00\xb82_\xfb\xf3O\b\xb1\x10\xb8r%\\ɩ-~+n+z\xa1~c\xae}\xb7\xfa\x95\xebȚ\x1c~\xcb[\x04Ksŝz\x11PxT\xf65\xda\xeb\x01!\xc4\x02\x90\x95aм\xado\xfd\xd7JZ\x9c\xb7\xcd߂\xea\xf1vl\xf2c\xcaac\xf2x\xeeaF@ɮ;K\xf7\xb4\xc032R{} \x84\xc4\x10\xfcI\xde\rG^Q\xfb\xa6\xd3|H\xc9\vr\xbb\x05\xdb\xfb\xfa\xe5\xe0\xd1y\xbc4\x8b\x17\x06\x96e\xd3az\xbf\b8\xb2\r\u007f\x95\xf7h\xaf\x17\x84\x90\x98\x00W\xee\xd1[\xd0\xde\x05,\x9d_\xf2\"\xbc}~|\x1f\xec\x13\x94ës\xf8\xc7\f^\x13P\x96K\xeau\xb7\x15\xce\xcaC\xda\xeb\x06!$\xc2\xc0\x95)\xd0ܾw\xd5Me-\xbe\x1d\v=\x9c\x1a\xb3G\xfajy\xe4X>J\xb8\"W\xfe\\/\x02\n\xdb\n_\xa0\xbd\x8e\x10B\"\x04\x1c9\x14\x9a\xe7\xf97N*{\xc1\xcd\xd5{\x98|\"\x87\xbfI\x93\xb59\xbc1\x87\xb7\bV\xe4\x86\x13u\xaf\x0fh\x95\xcfi\xaf+\x84\x90\x90\x03G\xfb1\xbd\xe5/\xb2;\x16z\xa8\xb5\xe4\xa9~A;\xac:\x8f7\xe7+\fθ٬\xf8\xd8aW\xfe\nH\x95\xf6\x1aC\b\t\x19\xc8\xc8\xcdj\v\x93\xb3\x0f\xb0쉊\x16\xd67\xe7o\xc1\xc9'nS\x1f\x94qv\xe4\xd8\x1c^\xe6\xe9\x80\xca]6\x13pޮ\x19\x02\xbf\xd2^o\b!!\x00-r\x02\\ySm1ZsM\xc5\vj\xfb\xbc-8\xfe\xf87\xd5\a\xa4\r\x1eY\x9b\xc3_\xa6\xfdN\u007f\x88\xc6\xc1\xd5\xd7jF\xc0v\xb8r\x92\xf6\xfaC\bQ\x00\x199\x10\xaa\xe7\xf9\xab\x8d,\xa2\xdb\xe6oA5\u007f\xf6\x0f\xd4\x11\xd59\xbc0\x9dw\a\x18s\xa3\xe2c\x87\v\xd7\a|B{=\"\x84\x04\x04\\٨\xf6\xcd#\xf3?@\xda1\xb2p\xb6\xcfۂ\x11\xbc\xcf_\xc5!\xa3\xf3\xf8\x17\xb7\r6\xa8Sx\x84\xb5\xd6\xe7\xd2\x11G{]\"\x84\xf8\b\x1c\xb9\x0e\x9a\xdb\xf7.\xbf\xcf\u0602\xd9>\x8f\xdb\xfbj;tL\x1e\xbf{\xf8\xf9\x10\f\xcf\x18\xb9\xfcA\xbd\b\xc8J\x1e\x8eܠ\xbdN\x11B\f\x82\xac\x8c\x85+\xedJ\xdf,\x80u_\a\xd2m\xc6\x16\xc9\xed\v<|\x81\xe7\xfcC\xe1ȱ9\xfc\xed\t\xfe\x12`ܵ\x97j\x9e\x16\xd8\x06W\xc6k\xaf[\x84\x90\n@V>\bG^V\xfbF\xd1X\xdcczK\xb1c\xa1\x87\xe3\x8e\xe3\xf0\x0f\x93#k\xf8(a\xdfl\x1c\xa6\x17\x02\x8e\xb4c#\x1f;LH\xe4\x80+\v\xd4\x06\u007f\xe6\xbd\xc0\xa2\xf5\xc6\x17\xc3\x1d\v=L\x9a\xc8\xe1\x1fF\x87U\xe7\xb1u.#\xc0\x17\x17m\x002\xef\xd7\xfa5\x00pe\xb1\xf6zF\b)\x02\xb8r)\n[\x80\xea,\x16+\u007f\xe9\xcb\"ر\x80\xdb\xfb\x86\xddQ\xe3rxu6\xf7\t\xf0͕\xbfь\x80\x1dp\xe4r\xed\xf5\x8d\x10\xd2\x03pe(\x1c\xc5\xf3\xfc\xebO\xf1m\xe1۾\xc0\xe3&?\x111Y\x9b\xc3+\xdc,\xc8_ן\xa1{\xdb`FFh\xafw\x84\x10\x11\x81'\xefDV\xfe\xaa\xf6͠\xf9 _\x17\xbb\xed\v<\x8c\x19\xc7\xfb\xfc\xa3\xe4\xb0\xea<^\x9f\xc3\b\xf0\xdd\xe6\x835\u007f\x11x\x11\xab\xe4\xdd\xda\xeb\x1f!ւ\x8c<\xaa\xb6\x008\xef\x00\x96,\xf6u\x81k\x9f\xb7\x055\xdc\xe4'\x92\x0e\x1d\x93\xc7?f<\xab?$\xe3\xee⥀\xf3n\xcd\x10xB{\x1d$\xc4*\xd0*\xa7A\xf51\xbd?\xf2}ak\x9f\xb7\x05\xb5G\xf3>\xff(;\xbc:\x8f\xe7\xb8O@0\xae\xfa\x89^\x048\xd2\x01G\xce\xd2^\x17\t\x895xF\x0e\x86\xa3\xb9}\xefq\x81,f\xdb\x17l\xc18n\xf2\x13\v\x87U\xe7\xf9\xec\x80 \xdd\xf8y\xcd\xeb\x03\xb6\"+\x87i\xaf\x93\x84\xc4\x0e8\xb2E\xad\xf0[>\x12\xd8\x02\xb6c\xa1ǟ\xfdc\xe6\xb0\xea<\xde\xe0-\x82\xc1\xda\xf21\xcd_\x04\xfe\xa0\xbd^\x12\x12\v\xe0ʭp\xa5S\xedü\xf4\xa9\xc0\x16\xad\xed\v\n\xcd\xc7\xf46&\x03_\xa0:\x16z\xf8\xe2\xe7y\x9f\xbf\r\x1eY\x9b\xe3\xe9\x00-\x1b\xc7\xe8\x85@V\xb6\u0093\x03\xb4\xd7WBB\v\\Y\xa3T\xe9@\xe6\x030\xf5\x98\xdeR\x87\xffx^\xedo\x95ê\xf3h\x9f\xdb\xf3\xf1@\xfd\xd6\x01Z\xfeG\xeb\xd7\x00\xc0\x91F\xedu\x96\x90P\x81\xac\xdc\x00\xd5\xc7\xf4>\xa4\xb2\x18\xbd9\u007f\v\x1f\xecc\xa9#j\xf2xi\x16\xf7\tPs٣z\x11\xe0J\x1eY\xb9I{\xdd%D\x15d\xa5\x06Z?\xf7\xbb\x02\xac\xbb@m\x01zs\xfe\x16L8f\xbb\xfa \xa2z&\xf9(a}\xd7^\xac\x19\x02\xed\xd8$\xe3\xb4\xd7aB\x02\x05\xcf\xca\xfb\xe1ʋj\x1f\xbc\xa6\x81\xca\vO\x1bv,\xf4\xd0>\xd7n\xb7.\xf9\xb9\xfaߠ\xed\xf6\xa9ˀ\x19\x1b\xf4\a\xa1\xed6\r\xd6\v\x01G^EF\xf6\xd3^\x97\t\xf1\x1d\xb8\xf2\x94\xde\a\xed\xdd\xc0\xe2\xd5\xea\xc3\x1f\xa96\xfd\x05O\xfb5h:T\xf5\x17\x98\xd0X\x97\x02\x06\x1d\vL[\xab\xff\xb7\xd8\xee\xe2\xb5@\xe6}z!\x90\x95\xb9\xda\xeb3!\xbe\x80\x8c\\\x05Gv\xa8}\xb8Vܡ\xbf\xc0p\xf8\x03\xe9\xcd@S\xa2\xf0\x9e0\x00\n\x010`<0h\"\xf0\xd8\x1a\xfd\xbf\x87\x02+\xa6\xeaE@\xe1\xb1\xc3\xdf\xd5^\xaf\t1\x026K\x02\x9a\xb7\xf5m8I\u007fAI{\x85\xc1o\xfd\xf0o\x03\x1ak\xdfz\u007f\x18\x00o\x05\xc0\x80\xf1\xc0\x90I\xc0SM\xfa\u007f\x13-\xb8~\xb2\xeec\x877\xc9\x11\xda\xeb7!e\x81\x8c\xbc\x03Y\xf9\xa3ZI7\u007fZ\u007f\x01\xe9\xd2\xfa\xc1\xef\x01\xa9\xcd@c\xf5\x9e\xef\x11\x03`\xcf\x00\xe8\xfa%`\x8e\xab\xffwѷl\xfe\xac\xe6/\x02\u007fCZޥ\xbd\x9e\x13R4\xc8ʽ\x8a\x1f\x18`I\xbd\xfe\xa2\xd1e\xaa\rH\x85\xe0\xefP}\r6\x03\x8d\xa3\xbb\xbfO\f\x80\xee\x010`|\u1680\xa7[\xf4\xff6\xfa\x96KҀ\xf36\xbd5͑\x87\xb5\xd7uB\xfa\x04\xaeL\x81+o\xaa}HV\xfdL\u007f\xa1\xd8]~\xf3\aқ\x81\x8d\x93z~\xbf\x18\x00=\a@\xd7逧\x9b\xf5\xff>\xba\xa7+o\x01\xdc*\xad\x10؎Mr\xa1\xf6:O\xc8\x1e\xc0\x95\x83t\x1f\xd3;A\u007fa\xe8&\xcf\xf9#\xdd\x06l8\xa1\xf7\xf7\x8e\x01\xd0{\x00\f\x18\x0f\f9\x9e\xbf\x04\x84Ս\xc7\xea>vx\x93|V{\xdd'D\xe0H\x8b҇\x00h\xf9\x90\xfeBЫ\xb6\x0f\u007f\x0fh\x1e\xde\xf7\xfb\xc7\x00\xe8;\x00v]\x13\x10\xfc\x16մH[\xf6\u05ca\x00\xc0\x91g\xb4\xd7\u007fb)p\xe4\x17p%\xafv\xf0/\x9b\xa9\xff\xe1\xefM\xeb\xbf\xf9o\x06\x9a\x86\xf4\xff\x1e2\x00\xfa\x0f\x80\x01\xe3\x81#\x8e\x03\x1e^\xa1\xff\xb7Ҟ]:K/\x02\\\xe9\x84#\xbfў\a\xc4\x12\xd0\"'\xe8=\xa6\xb7\nX\xf3\x1d\x84\xfa\xdb5\x87?\xd0txq\xef'\x03\xa0\xb8\x00\x180\x1e8b\"\xf0\xc0R\xfd\xbf\x97\xf6b\x1b\xb0\xfa\xfb\x855J'\x04\xdeD\x8b\x9c\xac=\x1fHL\x81+\xfbÑW\xd4J\xb7\xf1\xc8\x10|\xc8\xfbY\x00\xac\x1f\xfemom\xf2\xc3\x00(κTq\x01\xd0u:`\xc6F\xfd\xbf\x99\xf6mC\x0fw\xbc\x04\xf6%IڱY>\xa6=/H\x8c\x80#\x8b\xd5\x0e\xe8\xcc{\x80E!\xbf\x1a\xbak\x93\x1f\xab\x03\xa0\xad\xf0\x8c\x85R\xde[\x06@i\x010`<0\xf0Xn\x16\x14\t3@f_\xbd\x10\xc8\xcaJ\xed\xb9A\"\x0e\\\xf9!\\\xc5\xed{\x97?\x18\x82\x0fr?Z=\xf4\xbb^\x83\xcd@\xe3\x98\xd2\xdf_\x06@\xe9\x01\xd0uM\xc0\xccF\xfd\xbf\x9d\xf6\xef\xf2G\xf4\"\xc0\x91\x1c2\xf2\x13\xed9B\"\x06Z\xa5\x16\x8e\xb4+\x1d\xb4\xc0ڋ\xf4?\xb8\xc5h\xfd\xb7~\xaf0\xfc7\xf6q\xab\x1f\x03\xa0o\xebR\xa5\a\xc0\x80\xf1\xc0\xd0\xe3\xb9O@\x94\\\xf3\r\xbd\xdb\x06\x1dن\xac\x1c\xad=WH\xc8\xc1zy?\\\xf9\x93Z\xb16\x1d\xae\xffA-V\xdb\a\u007f\xdaC\xe1>\xff/\x96\xff~3\x00\xca\x0f\x80\xae͂\xe6e\xf5\xff\r\xb4x\x1b\a鬭\x05\xff\x86F\xf9\x80\xf6\x9c!!\x04\xae\xccP;0\x9d\xb7\x01\x8bW\xea\u007f8\x8b\xb6\r\xa1\xbe\x13!\xa8נ\xa7\xed}\x19\x00\xa5Y\x97*?\x00v\xed\x13\x90\xd1\xffw\xd0\xe2]\xbc\x1apީ\x19\x02\xb3\xb5\xe7\r\t\th\x95\x8b\xe1\xcav\xb5\x83qů\xf5?\x90\xa5j\xfd\xb7\xff\xcd@\xc31\x95\xbf\xf7\f\x80\xca\x03`\xc0x`\xf0\xf1\xc0\xe3k\xf5\xff-\xb44Wܮ\x19\x01\x1dp\xe4r\xed\xf9C\x94@V\x86\xc1U<Ͽ\xfek\xfa\x1f\xc0r\xe4\xf07w\x9b\x13\x03\xc0L\x00\f\x18\x0f\f\x9e\x04<\xb4\\\xff\xdfCKwݙ\xba\x8f\x1d~FFj\xcf#\x12\x10\xc8\xc8;\xe0\xc8f\xb5\xf2l9P\xff\x03W\xae\xd6\x0f\xff6\xa0\xe90s\xc7\x02\x03\xc0\\\x00\xec\xbaE\x90\x17\x06F\xd6\xe6OjE\x00\xe0\xcas\xc8\xc8;\xb4\xe7\x13\xf1\x11\xb8r\x0f\xb2\x8a\xdb\xf7.Y\xa0\xff!+ה\xed\xe7\xfd7\x03͟6{<0\x00\xcc\x06\xc0\x80\xf1@b\x02\xf0h\x94\xae\xa7\xa1{\xb8$\xa5\x19\x01\x9dp\xe5A\xed9E\f\x03GN\x83\xd6cz\x1d\x01V\xfd\x18\x91\x1d\x9e\xbc\xd5\x0fHo\x06\x1aG\x9a?6\x18\x00\xe6\x03`\xc0\xf8\xc2>\x01\x8f\xad\xd6\xff\xb7\xd1\xf2]y\x93\xe6\xb6\xc2\xdb\xe1\xc8Y\xdas\x8bT\b<9\x14\xae\xbc\xaaV\x94\x1b\xbe\xa0\xffA\xaaD\xeb\a\xff\xce\xd7`\xe3$\u007f\x8e\x0f\x06\x80?\x010`\xe7-\x82\xb3x: \xf2n\xf8\xa2\xee\xf5\x01\x199\\{\x8e\x912\x80#\x8dj\x83?\xb3\xaf\xfe\a\xa7b9\xfc\x91n\x03\x1a&\xfaw\x9c0\x00\xfc\v\x80\xae_\x02\xe6s\x9f\x80X\x98\xd9O+\x02\x00G\\\xedyF\x8a\x04\x8e\xdc\x04Grj\a˲\xe9\xfa\x1f\x96J\xe57\u007f \xdd\x06l\x1c\xef\xef\xb1\xc2\x00\xf07\x00\xba\"`6\xf7\t\x88\x85\xcbf\xe8E\x80+y8r\x8b\xf6|#\xbd\x80V9\x1e\xae\xd2cz]\x01\xd6|[\xff\x03bL\xdb\x03\xa0\r\xd8p\x92\xff\xc7\f\x03\xc0\xff\x00\x180\x1e\x18\xfay>@(N\xae\xfe\x1e\xe0\xaa]\x1f\xf0&Z\xe5\x8b\xda\xf3\x8e\xec\x04\x9e\x1c\x00G\xfe\xa16\xf8\x1bj\xf4?\x10&\xb5\xfeۿ\x8f\xe7\xfc\x19\x00ݭK\xf9\x1f\x00]\xd7\x04<\xb1A\xff\xdfK\xcd\xd90N+\x02\x00W\xfe\x8bV\xf9\x84\xf6\xfc\xb3\x1a\xb8\x92V;\x00\x9cw\x02\x8bb\xf6D2\xeb\xaf\xf8o\x03\x1aF\x04w\f1\x00\x82\v\x80\xae\xd3\x013\x18\x01\xb1rQ3\x90y\xaff\b,מ\x83ց\x8c|\a\xaet\xa8\xbd\xe9\xcb\xef\xd5?\xf0\x8dk\xf3\xe0\xf7\x80\xf43@\xd3\xc1\xc1^q\xcc\x00\b6\x00\x06\x8c\a\x06\x1e\x03ܿD\xff\xdfMͺ\xfc~\xcd\b\xd8\x01G~\xa0=\x17c\x0f\xb2R\x03\xcd\xed{\xd7^\xa8\u007f\xa0\xfb\xa1\xd5\xdf\xfa= \xbd\x19h\x1a\x10\xfc1\xc5\x00\b>\x00\x06\x8c/<@\xe8\x01F@,]{\x89\xeem\x83\xae\x1c\xa5='c\a\xd6\xc9\xff +\u007fP+\xbc\xc6\xc1\xfa\a\xb6/\xda\xfe\x93\xff\xceנ\xf1H\x9d\xe3\x8a\x01\xa0\x13\x00]\xa7\x03f6\xe8\xff\xfb\xa9?6\x0eӊ\x00\xc0\x95\xbfb\xa3|H{n\xc6\x02\xb8\xf2(\n[4꼙\x8b\x97\xea\x1f\xcc~h\xfd\xe0\xf7P8\xe7_\xab\xb7P0\x00\xf4\x02`\xc0x`\xf0q|\x94p\x9c]\xbc\xa2\xf0\xa8u\xbd\x10xB{~F\x16\xb8r!4\x1fӻ\xf2W\xfa\a\xb0oھ\xaf\xbf\a\xa46\x03\x1b?\xaf\xb980\x00Ҟn\x00\f\x18\x0f\f9\x1ex\xbaE\xffu\xa0\xfe\xb9\xf26\xa8\xdd6\xe8H\a\\\xb9T{\x9eF\x06\xb82\x10\x8e\xe6cz\xbf\xa2\u007f\xc0\xfa\xaa僿\xeb5X?Yw\xf83\x00\n֥t\x03`\xc0\xf8\xc2>\x01\xdc,(\xfe\xae?U\xef\xfa\x00G\xda\xe1\xc8\x10\xed\xf9\x1aZ\x90\x91\xf7\u0095g\xd4\x16\xe3\xe6\xcf\xe8\x1f\xa0\xbe\xcb\xe1_\xb8\xcf_\xf9\x9b?\x03\xe0-\xebR\xfa\x010`<0x\x120\xd7\xd5\u007f=\xa8\xff6\x1d\xaa\xf7\x99w\xe4Yl\x92\xf7i\xcf\xdb\xd0\x01W\x9eS{S\x96\xce\xd5?(\x03\xd1\xf6\x00P>\xe7\xcf\x00\xe8n]J\u007f\xf8\uf280\xe3\x80'\xd6\xeb\xbf&\xd4\u007f\x97\xcc\u05cc\x80\xbfk\xcf\xdb\xd0\x11x\x008U\xc0\xaa\xeba\xcdP\xb4\xfe\xa2\xbf\xcd@\x83\xd2\xd5\xfe\f\x80ޭK\xe9\x0f\xfe\xdd=\xe28\xee\x13`\x8dm\xc0\xaa\x1b\x83\u007f\xec0\x03\xa0;\x81\x06\xc0Ɖ!8\xf8\x02>\xd0\xd5\xff\x06M7\x03\x8d\n\xf7\xf93\x00\xfa\xb7.\xa5?\xf4\xf7vб\xc0\x03\xcb\xf4_\x1b\x1a\x9c\x1b\x02<-\xc8\x00\xe8N \x01\xd0\xf2a ݪ\u007f\xb0\x05\xa9\xf5\xdf\xfc\xdb\n;\xfci\x0f{\x06@\xcf֥\xf4\a~O\x0e<\x06\x98\xc5\a\b\xd9\xe53@\xcbG\x19\x00\x1a\xf8\x1e\x00˦\x85\xe0\x00\vX\xee\xed\x0f4\f\xd7\x1f\xf4\f\x80ޭK\xe9\x0f\xfb^\u007f\t\x98\bL\xe75\x01ֹ\xec\t\x06@\xd0\xf8\x12\x00\x8e\x00k.\xd7?\xa0\x82\xd6\ua87f\xdbk\x10\xd4S\xfd\x18\x00\xe5[\x97\xd2\x1f\xf4}9\xe4x>J\xd8V\xd7\\\xed\xcfm\x83\f\x80\xee\x18\x0f\x80\x861\xfa\a\x90\x8a\xdc\xe4\a\xa9\xcd\xc0\x86\x93\xf5\a<\x03\xa0\u007f\xebR\xfaC\xbe?\x87\x1e\xcf\x1d\x03mv\xe3X\x06\x80\xdf\x18\r\x80E\xb6~X-\x1f\xfc\xbb>\xb0\xe3\xf5\x87;\x03\xa08\xebR\xfa\x03\xbe\xa8\xd3\x01\xc7\x02\xf3-\xbb~\x88\xee\xa6kn[a\x06@w\x8c\x04\xc0\xf2{Bp\xa0(ɟ\xfdw\xfe\xec\u007f\x9c\xfe`g\x00\x14o]J\u007f\xb8\x17}:`\x12/\f\xb4\xdd\xe5\xf71\x00\xfc\xa0\xe2\x00H;\xfa\a\x87\xaa\xb6\a\xc0\xe6\xf0\x9f\xf3g\x00t\xb7.\xa5?\xd8K\x8a\x80\xe3\x81\xc7V\xeb\xbfnTQ\x97\x01`\x1a\x06@\x05Z\xff\xed_\xf1\x91\xbe\f\x80ʬK\xe9\x0f\xf5R=\xe28`\xda\x1a\xfd\u05ce*\xc9\x000\x0e\x03\xa0LS\xb6_\xf4\xd7\x064}F\xef!\x1f\f\x80ʬK\xe9\x0f\xf4rL\x1c\x03\xccب\xff\xfaQ\x05\x19\x00\xc6a\x00\x94\xaa\xed\xf7\xf8{\b\xed\x0e\u007f\f\x80\xe2\xadK\xe9\x0f\xf3r\x1dt,\xf0 w\f\xb4O\x06\x80q\x18\x00\xa5j\xfb\xf0o\x03\x1a\xaa\xf5\x878\x03\xa02\xebR\xfa\x83\xbc\x12\x87L\x02\xa6\xad\xd3\u007f\x1di\x802\x00\x8c\xc3\x00(V\xdb\u007f\xf2\xf7v^\xed?Q\u007f\x803\x00*\xb7.\xa5?\xc4+u\xf0q|\x94\xb0U2\x00\x8c\xc3\x00(\u0094\a\x0e\xff\xcd@cĿ\xf93\x00\u07b2.\xa5?\xc0M8h\"0ׂ5\x88\x82\x01\xe0\x03\f\x80~\xe4\xf0߹\xc3\xdfI\xfa\x83\x9b\x01`κ\x94\xfe\xf06\xe5\xd0で[\xf4_S\xea\xb3\f\x00\xe30\x00\xfa\x90\xc3\u007f\xe7\xf0\xff\x92\xfe\xd0f\x00\x98\xb5.\xa5?\xb8MG\x00\x9f\x1d\x10s\x19\x00\xc6a\x00\xf4&\xcf\xf9\x17.\xf83\xbc\x1fw\x18d\x00\xc4/\x00\x06\x8c\a\x8e\x98\b̉\xebzD\x19\x00>\xc0\x00\xe8E>\xd2\x17h\x1a\xa4?\xac\x19\x00\xfeX\x97\xd2\x1f\xd8~8\xf0X`:\xef\x0e\x88\xa7\f\x00\xe30\x00\xf6\xd6\xf6\xc1\xef\xa1p\x9f\xff\xc0hn\xf2\xc3\x00(κ\x94\xfe\xb0\xf6\xf3\x97\x80\a\x96\xea\xbf\xc6\u0530\f\x00\xe30\x00v\x97?\xfb\xef\x1a\xfe\xdaC\x9a\x01\xe0\xafu)\xfdA\xedw\x04\xf0\xd9\x011\x93\x01`\x1c\x06\xc0n.\n\xc1ߠm\xc30\xfd\x01\xcd\x00\xf0ߺ\x94\xfe\x90\x0e\"\x02f\xdb\xfa\x88\xf28\xca\x000\x0e\x03\xc0\xe3\xd5\xfei\xafp\xda#\x8a\x0f\xf6a\x00\x94g]J\u007f@\a\x15\x01\xb3\x9a\xf5_oj@\x06\x80q\xac\x0f\x00\x0e\xffx\xde\xea\xc7\x00\xe8ۺ\x94\xfep\x0eʡ\xc73\x02b!\x03\xc08V\a\x80\xf5O\xf4\xf3\n\xc3\u007f\xe3\x17\xf4\x872\x03 X\xebR\xfa\x839H\x87L\xe2-\x82\x91\x97\x01`\x1ck\x03 \xb5S\xed\xbfC\xf55\xd8\x1c\xcf\xfb\xfc\x19\x00\xfd[\x97\xd2\x1f\xcaA\xcb}\x02\".\x03\xc08\xf6\x06\x80\xed\xdf\xfcۀ\x86Z\xfda\xcc\x00б.\xa5?\x905\x1c|\x1cw\f\x8c\xac\f\x00\xe3X\x19\x00\xb6\x0f\xfft\x1b\xb0q\xbc\xfe f\x00\xe8Y\x97\xd2\x1f\xc6Z\x0e9\x1e\x98\xb6V\xff=\xa0%\xca\x000\x8eU\x01\x90j\xe3\xcf\xfe\xe96\xa01\xa6;\xfc1\x00\x8a\xb7.\xa5?\x885=b\"0c\x83\xfe\xfb@K\x90\x01`\x1c\xab\x02ࡕ\xc0\x91'\x03#m\xf6\x8b\xc0\x91\x93\xacv\xcdQ7\xe3\xe8\xa3;\xac\xf6\x98\xa3\xb6\xe1\xa4\xea\x17\xad6\xfb\x85\xfb\xf0\xcf'\x9f\xd3_\x97h\x912\x00\x8ccU\x00\xa4=\xe0\xe7ӀÏ\xd6\xff\x06B\xd5\\6\xfc&$\x92\xa0\xd6ډ\xfa\x9a{\xb0u\xd8)\x18^\x9d\xc3ߟ`\x04DC\x06\x80q\xac\v\x80\xb4\a\xdc\xf4(#\xc0b\x19\x00v[_s\x0f0`<\xb6\x0e;\x05\x89$0\xaav\a^\x9d\xfd[\xfdu\x89\xf6#\x03\xc08V\x06@\xda\x03~>]}\x10Q\x06\x00\r\xd2N,\xab\xbd{\xd7q\xd0\x15\x00\x89$0\xbc&\x8fms=\xfdu\x89\xf6!\x03\xc08\xd6\x06@\xda\x03n\x9b\xa3>\x8c(\x03\x80\x06\xe3ʣ\xa6\xa2s\xb7\xe3`\xf7\x00H$\x81a\xd5y\xbc1w\x8b\xfe\xbaD{\x91\x01`\x1c\xab\x03 \xed\x01\xbf\x99\xad>\x90(\x03\x80\xfak\xfd\xd8{\xbb\x1d\a{\a@\"\t\x8c\x1a\x97\xc3k\xb3\x19\x01\xe1\x94\x01`\x1c\xeb\x03 \xed\x01\xb7\xceT\x1fJ\x94\x01@\xfdq\xf9\xb8\xbb{<\x0ez\n\x80D\x12\x18=.\x87\xd7\xe70\x02\xc2'\x03\xc08\f\x80\x9d\u07b7X}0Q\x06\x005k\xebqw\xf4z\x1c\xf4\x16\x00\x89$0\xbc:\x87\xf6y\x9e\xfe\xbaDw\x93\x01`\x1c\x06\xc0nޓV\x1fN\x94\x01@\u0378\xb4v\xcfs\xfe\xa5\x04@\"\t\x8c\xa8\xc9\xe1Ϗ\xffN\u007f]\xa2;e\x00\x18\x87\x01\xb0\x97\xbfz\x8a\xb7\b\xc6\\\x06@\xfc]X}O\xbf\xc7A\u007f\x01\x90H\x16~\t\xf8\xfd\xa3\xcf\xeb\xafK\x14\f\x00\x1f`\x00\xf4\xe0-O\x00\x03\x18\x01q\x95\x01\x10g;\xb1\xb4vjQ\xc7A1\x01\xd0\x15\x01\xff\x9d\xf5\xac\xfe\xbad\xbd\f\x00\xe30\x00z\x91\xfb\x04\xc4V\x06@|M\xd5\xdc\xdd\xe7\xcf\xfe\xe5\x04@\"\t\f\x1b\x93\xc3+O\xf3\xc2@]\x19\x00\xc6a\x00\xf4b\xca\x03~\xf2\bp\xf8\x04\xf5\x81E\x19\x00\xb4\u007f\x17Tw\xbf\xd5\xcfT\x00$\x92\xc0ȱ9\xbc\xf24w\fԓ\x01`\x1c\x06@?\xde\xfc\x04\xaf\t\x88\x99\f\x80\xf89\xbf\xc4\xe1_N\x00$\x92\xc0\xe8q;x\x8b\xa0\x9a\f\x00\xe30\x00\x8a\xf0\xd6Y\xeaC\x8b2\x00hOvb\xdd\xd1ue\x1d\a\xe5\x04@\"Y\xd8,\xe8M\xde\"\xa8 \x03\xc08\f\x80\"\xbdo\x89\xfa\xe0\xa2\f\x00\xba\xa7\uec77\x15}\xce\xdfT\x00$\x92\x85g\al\xe5\xb6\xc1\x01\xcb\x000\x0e\x03\xa0\x04\xeb\x16\xaa\x0f/\xca\x00\xa0\x05\x17\xd5\xf6\xbc\xc3_\x10\x01\x90H\x02\xa3j\xf9(\xe1`e\x00\x18\x87\x01P\xa2\xb7\xf1\xd9\x01Q\x97\x01\x10}Sc+\x1b\xfe&\x02 \x91\x04\x92cs\xf8\xd3c\xdc,(\x18\x19\x00\xc6a\x00\x94\xe1\xed|\x8a`\x94e\x00D\xd9Nl\x18\xdf\xfb\xf6\xbeA\a@\"Y\xb8E\xf0\xd5ټ;\xc0\u007f\x19\x00\xc6a\x00\x94\xe9\xedsxw@De\x00D\xd5N\xa4\xc7\xf6\xbd\xbd\xafF\x00$\x92\xc0\xe0\xd1y\xfcu\x1a\u007f\t\xf0W\x06\x80q\x18\x00\x15\xf8\xe3\a\x81\x81Ǩ\x0f4\xca\x00\xb0\xc1٣K\xbf\xd5/\xa8\x00H$\x81#krxa:\xaf\t\xf0O\x06\x80q\x18\x00\x15z\xfd\x03@b\x82\xfaP\xa3\f\x808;\xaf\x8c\xfb\xfc\x83\x0e\x80D\xb2pa O\a\xf8%\x03\xc08\f\x00\x03\xfe\xf2I\xf5\xa1F\x19\x00q\xb5\xe9\x183\xe7\xfc\x83\b\x80D\xb2\xb0c\xe0\xf6\xf9\x9e\xfe\xba\x14;\x19\x00\xc6a\x00\x18rjJ}\xb0Q\x06@\xdc\\qT\x9d\xb1s\xfeA\x05@W\x04\xbc\xc1\x1d\x03\r\xcb\x000\x0e\x03\xc0\xa0\xb7\xf1\xee\x80(\xc8\x00\x88\x86\xa9\xb1\xfd?\xd27\xac\x01\x90H\x02c\xc6\xed\xe0\xb3\x03\x8c\xca\x000\x0e\x03\xc0\xb0w\xcdW\x1fp\x94\x01\x10uW\x8e\xab\xf3\xfd8\xf0;\x00\x12I Y\x9bÿg\xf2Q\xc2fd\x00\x18\x87\x01\xe0\x83S\xebՇ\x1ce\x00D\xd5\xd6\xe3\xca\xdf\xde7l\x01\x90H\x02#kr\xf8\xcfS\x8c\x80\xcae\x00\x18\x87\x01\xe0\x93w-\xe0>\x01!\x95\x01\x10^\xd3\x06v\xf8\v[\x00$\x92\xc0\xd019\xfc\xee\xe1\xe7\xf5ץH\xcb\x000\x0e\x03\xc0Goy\x02\xbcE0|2\x00\xc2h'\xe6\x8c1\u007f\xab_X\x02 \x91\x04\x86W\xe7\xf0\xfc#\x8c\x80\xf2e\x00\x18\x87\x01\xe0\xb3?~\x88\x11\x102\x19\x00a\xb3\x13s\xc7\xf8{\xc1_\x18\x02 \x91,\x9c\x0e\xf8\xef,^\x18X\x9e\f\x00\xe30\x00|6\xe5\x15\"\x80\xa7\x03B#\x03 \\.\xab\xf5\xefV\xbf\xb0\x05@\"Y\xb8E\x90\x8f\x12.G\x06\x80q\x18\x00\x01y\xebS\x8c\x80\x90\xc8\x00\b\x8f\xf55\xc1\u007f\xf3\xd7\x0e\x80D\xb2\xb0c\xe0\xeb\xdc'\xa0D\x19\x00\xc6a\x00\x04\xe8\xafg\xa9\x0f?\xca\x00\b\x8b\xf5\x01^\xf0\x17\xb6\x00H$\x811G\xed\xe0fA%\xc9\x000\x0e\x03 `\xefZ\xa0>\x00m\x97\x01\xa0m'\x1a&ܮ~\x1ch\a@\"Y\xd8'`\xdb\x01|\x94\xf0\xde2\x00\x8c\xc3\x00\b\x91\xb7\xcc\x00\x06\xf0\x9a\x00\x06@<\f\xf2\xc1>q\v\x80D\x12\x18=\x8e;\x06\xee)\x03\xc08\f\x80\x9095\xa5\xbe0\xc6]\x06\x80\xff\xb6N\xfc\xb5\xfa\xfb\x1c\xf5\x00H$\x81\xe15yl\x9f\xef\xe9\xafK\xa1\x90\x01`\x1c\x06@\be\x040\x00\"\xec\xcaqw\x85\xf2\x9c\u007f\x14\x03 \x91,l\x16\xc4\xd3\x01\x1e\x18\x00>\xc0\x00\b\xa9w\xccW_ \xe3*\x03\xc0?S!\xbb\xd5/\x0e\x01\x90H\x16\xae\txa\xba\xed\x17\x062\x00\x8c\xc3\x00\b\xb1\xdc,\x88\x01\x10!W\x1eu\x97\xfa{\x1b\xd7\x00H$\v\x8f\x12\xfe\xfb\x136G\x00\x03\xc08\f\x80\x90{wZ}\xa1\x8c\x9b\f\x00\xf36M\xb8=\x12?\xfbG9\x00\x12\xc9\xc2>\x01\xff\x9ei\xeb\xb6\xc1\f\x00\xe30\x00\"\xe0-3\xc0[\x04\x19\x00au^ux\xb6\xf7\x8d{\x00$\x92\xc0\xb01\xb6\xee\x18\xc8\x000\x0e\x03 \"\xde\xf0 0\xf0\x18\xf5E3\x0e2\x00Lى٣\xc3{\x9f\u007f\\\x03 \x91\x04\x92cs\xf8\xfb\f\xdbN\a0\x00\x8c\xc3\x00\x88\x90?y\x98\xcf\x0e`\x00\x84\xc4N,\xae\x99\xaa\xfe^\xda\x1a\x00\x89d\xe1\x01B\xedV=J\x98\x01`\x1c\x06@\x84Ly\xc0\xeds\xd5\x17Ψ\xcb\x00\xa8܍\xe3\xa3w\xce?n\x01\x90H\x02ê\xf3h\xb7f\xb3 \x06\x80q\x18\x00\x11\xf47\xb3\xd5\x17\xcf(\xcb\x00\xa8\xcc\xf4\xd8h\u007f\xf3\x8fS\x00$\x92\x85\x1d\x03_\x9bmC\x040\x00\x8c\xc3\x00\x88\xa8\xb7\xcdQ_@\xa3*\x03\xa0|\x17\xc7d\xf8\xc7)\x00\n\x11\xb0Â͂\x18\x00\xc6a\x00DX\xde\"\xc8\x00\b\xccNd\x8f\r\xff\xf6\xbe\xb6\x06@\"Y\xd86\xf8\x8d9q\xfe%\x80\x01`\x1c\x06@Ľo\x89\xfaB\x1a5\x19\x00\xa5\xbb\xee\xe8;#\u007f\xce?\xee\x01\x90H\x02\xc3\xc6\xe4\xf1\xaf'\xe3\xbaO\x00\x03\xc08\f\x80\x18x\xebS\xbc;\x80\x01\xe0\x9b\v\"z\x9f\xbf\x8d\x01\x90H\x02#jrx>\x96\xfb\x040\x00\x8c\xc3\x00\x88\x89\xbf\x98\x01\x1c>A}Q\x8d\x82\f\x80R\x86\u007ft\xf6\xf6g\x00\xbc\xe5\xf0\xea\x1c^\x98\xfe;\xfduɨ\f\x00\xe30\x00b\xe4O\x1fS_T\xa3 \x03\xa0\x18;\x91\xaa\xa9S\u007f\xaf\x18\x00\xe5;\xac:\x8f\xad\xb1\xda'\x80\x01`\x1c\x06@\x8cLy;\u007f\t\xe0\xe9\x00\x06@e.\x1b\x1b\x8dG\xfa2\x00\xfavxu\x0e\xafΎ\xcb\xdd\x01\f\x00\xe30\x00b\xe8\xcdO\xa8/\xaea\x96\x01з\vc\xfc\xb3\xbfm\x01\x90H\x16n\x11\x8c\xc7>\x01\f\x00\xe30\x00bꯟV_`\xc3*\x03\xa0w\x97\xd5֩\xbf?\f\x00\xf3&ks\xd8\x1a\xf9\x1d\x03\x19\x00\xc6a\x00\xc4\xd8{\xb8O\x00\x03\xa0x7M\xfcu\xec\u007f\xf6\xb75\x00\x12I`xu\x1e\xeds=\xfdu\xa9l\x19\x00\xc6a\x00\xc4ܻS\xea\vm\xd8d\x00twŸ\xbb\xd4\xdf\x17\x06\x80\xff\x8e\xac\xc9Ex\xc7@\x06\x80q\x18\x00\x16x\xebS\xea\x8bm\x98d\x00\xecij\xac\x1d\xe7\xfc\x19\x00\x05G\xd5F\xf5Q\xc2\f\x00\xe30\x00,\xf1\x8ey\xea\vnXd\x00tى\x95\x16~\xf3\xb7=\x00\x12I`Xu\x0e\xffy*j;\x062\x00\x8c\xc3\x00\xb0H>J\x98\x01\xb0\x9b\xcbj\xe3\u007f\xab\x1f\x03\xa0w\x87\x8e\xc9㟑\xfa%\x80\x01`\x1c\x06\x80=\xe6\xea=\xfc\xee\xbb\xd7\x01\x87\xeb/\xbe\f\x00]O?\xf1\r\xe0\xa1\x15V\xfb\xe2\xed\xeb\xd5\xdf\am\x87\x8d\xc9\xe1oOD%\x02\x18\x00\xc6a\x00\xd8a\xbe\xdeÅ\xa7\xbf\x86\x05w}\x13\xb8\xedp\xab#\x80\x01\x00\x9cyr\xbb\xfa1\xa9\xed?\xa7?\xa7\xfe>\x84\xc1Q\xb5Qy\x940\x03\xc08\f\x80\xf8ۙ\xf2p\xcdy\xaf \x91D!\x00\\\x01\xee:\\}\x103\x00\x18\x00\x9a2\x00\xderxu\x1e\xdbB\u007f\x8b \x03\xc08\f\x80\xf8\xfb\x8d3_\xdb\xf5A\xdf\x15\x00\xae\x00\x0f\x1f\xa4>\x8c\x19\x00:2\x00\x18\x00{;\xac:\x8f7B\xbdY\x10\x03\xc08\f\x80\xf8ڙ\xf2\xf0ͳ^\xdd\xe3C\xbeG\x00\xb8\x02<\xf4Y\xf5\x81\xcc\x00\b^\x06\x00\x03\xa0'G\xd5\xe6\xf0jh\xb7\rf\x00\x18\x87\x01\x10O;S\x1e\xfe\xf7\xeb/u\xfb\x80w\v\x00W\x80\xfb>\xa7>\x94\x19\x00\xc1\xca\x00`\x00\xf4\xe6\xa8\xda\\H\x9f\x1d\xc0\x000\x0e\x03 \x9e^=\xe5\x95\x1e?\xdc=\x06\x80+\xc0\xd3\a\xa8\x0ff\x06@p2\x00\x18\x00}9<\x94\x8f\x12f\x00\x18\x87\x01\x10?\xbf~\xfak\xbd~\xb0{\r\x00W\x80\x99\x9fP\x1f\xce\f\x80`d\x000\x00\xfasDM\x0e\xff\xef\xb1ߩ\xbfOo\xc9\x000\x0e\x03 >v,\xf4pީo\xf4\xf9\xa1\xee3\x00\\\x01\xee?4\xf6\xb7\b2\x00\x18\x00H3\x00\x8aqxu\x0e\xbf{\xf8y\xf5\xf7\xaa \x03\xc08\f\x80x\x98\xab\xf7p\xc6\xe4\xad\xfd~\xa0\xfb\r\x00W\x80\xbb\x0f\x8bu\x040\x00\x18\x00H3\x00\x8auؘ\x1c\xfe=3\f\xdb\x063\x00\x8c\xc3\x00\x88\x87\xe7\x9e\xfazQ\x1f\xe6\xa2\x02\xc0\x11\xa0.\xbe\xfb\x040\x00\x18\x00H3\x00Jq\xd8\xe8\x1c^V\xdf,\x88\x01`\x1c\x06@\xb4\xedLy\xb8\xf8\x8c\xde\xcf\xf9\xefmQ\x01\xd0\xe5o\x12@\xe2h\xf5\x81\xcd\x000/\x03\x80\x01P\xaa#j\xf2xy\x96f\x040\x00\x8c\xc3\x00\x88\xae\xf9\x94\x87+{\xb9ڿ7K\n\x00W\x80\xa9\xf1;\x1d\xc0\x00`\x00 \xcd\x00(G\xdd[\x04\x19\x00\xc6a\x00D\xd3Δ\x87\xef_\xf8r\xc9\x1f\xe0\x92\x03\xc0\x15\xe0\x81CՇ6\x03\xc0\xac\f\x00\x06@\xb9&ks\xd86O\xe3=c\x00\x18\x87\x01\x10M\xbfuni\xdf\xfc\xbb,+\x00\\\x01\x9e\xfe\x98\xfa\xe0f\x00\x98\x93\x01\xc0\x00\xa8\xc4\xe1\xd5y\xbc1'\xe8_\x02\x18\x00\xc6a\x00D\xcb|\xca\xc3\xe5g\xbfZ\xf6\a\xb7\xec\x00p\x05\x98~\x90\xfa\xf0f\x00\x98\x91\x01\xc0\x00\xa8\xd4\xe4ؠ\x1f%\xcc\x000\x0e\x03 :v,,\xfd\x9c\xff\xdeV\x14\x00\xae\x00\x0f\x1f\xac>\xc0\x19\x00\x95\xcb\x00`\x00\x98096\x87?<\x1a\xd4>\x01\f\x00\xe30\x00\xa2a>\xe5\xe1\xbcӊ\xbbկ/+\x0e\x00W\x80G\xa2\xfdK\x00\x03\x80\x01\x804\x03\xc0\x94C\xc7\x04u\x8b \x03\xc08\f\x80h\xf8\xb5/\xf7\xbf\xc9O1\x1a\t\x80\xae\b\x88\xe8\xdd\x01\f\x00\x06\x00\xd2\f\x00\x93\x0e\x1e\x9dǟ\x1f\xf7{\xdb`\x06\x80q\x18\x00\xe1v\xc7B\x0fgL\xee{{\xdfR4\x16\x00\x8e\x00\xbfJ\x00\x03\x8fV\x1f\xe8\f\x80\xd2e\x000\x00L;\xb2&\x87\xbfN\xf73\x02\x18\x00\xc6a\x00\x84\xd7\\\xbd\x87+\xce)\xff\x82\xbf\x9e4\x16\x00]\xde:\x10Q\xdb,\x88\x01\xc0\x00@\x9a\x01\xe0\x87ɱ9\xbc:ۯ\xd3\x01\f\x00\xe30\x00\xc2\xeb5\xe7\x95~\x9f\u007f\u007f\x1a\x0f\x00W\x80{\x0fQ\x1f\xea\f\x80\xd2d\x000\x00\xfcrDM\x1e\xdb\xe7\xfb\xf1\x9e1\x00\x8c\xc3\x00\b\xa7W\x97y\x9f\u007f\u007f\xfa\x12\x00\xae\x00OF\xe7Q\xc2\f\x00\x06\x00\xd2\f\x00?\x1dQ\x93\xf3a\x9f\x00\x06\x80q\x18\x00\xe12\x9f\xf2p\xd5\x14\xb3?\xfb\xef\xaeo\x01\xe0\n\xf0H4n\x11d\x000\x00\x90f\x00\xf8\xed\xe8\xda\x1d\x86\xef\x0e`\x00\x18\x87\x01\x10\x1e\xf3\xf5\x1e\xbes\xbe\xf9\x9f\xfdw\xd7\xd7\x00p\x05x\xfc\xb3\xea\x03\x9e\x01п\f\x00\x06@\x10\x1e96\x87\x17\x8d=J\x98\x01`\x1c\x06@x4}\xc1_O\xfa\x1e\x00\xae\x003\xc2}:\x80\x01\xc0\x00@\x9a\x01\x10\x94#\xaaME\x00\x03\xc08\f\x00}\xf3\xf5\x1e\xce=\xb5\xf2M~\x8a1\x90\x00p\x05\x98\xf6\xe9\xd0\xee\x13\xc0\x00`\x00 \xcd\x00\bҡcrx\xf6\xa1Jw\fd\x00\x18\x87\x01\xa0\xeb\x9b\v\xb6`\xf2\x97\xda\x03\xfb \x06\x16\x00\xae\x14\x1e%\x1c\xc2[\x04\x19\x00\f\x00\xa4\x19\x00A;\xac:\x8f\xe7\x1e\xae$\x02\x18\x00\xc6a\x00\xe8\xb9c\xa1\x87sN1\xb7\xc9O1\x06\x1a\x00\xae\x146\vJ\xe8\x0f}\x06\xc0\x9e2\x00\x18\x00\x1a\x8e\xa8\xc9\xe1?O\x95{:\x80\x01`\x1c\x06\x80\x9e\x95<կ\\\x03\x0f\x00G\x80_\r\n\xd5\xe9\x00\x06\x00\x03\x00i\x06\x80\x96#ǖ{\x8b \x03\xc08\f\x80\xe0\xedLy\xb8\xaa§\xfa\x95k\xe0\x01\xd0\x15\x01\xf7\x1e\x12\x9a\b`\x000\x00\x90f\x00h\x9a\xac\xcd\xe1\xb5٥F\x00\x03\xc08\f\x80`ͧ<|\xf7\x02\u007fo\xf5\xebK\x95\x00\xe8\xf2\x81p\xec\x18\xc8\x00`\x00 \xcd\x00\xd0v\xf4\xb8\x1dx\xbd\xa4\b`\x00\x18\x87\x01\x10\x9c\x9d\xca\xc3?\x91T\x0e\x00W\nw\a0\x00\xd4e\x000\x00\xc2\xe0\x91csh\x9f[l\x040\x00\x8c\xc3\x00\b\xce+}\xdc\xe1\xafX\xd5\x03\xc0\x15`\xf6\x81\f\x00e\x19\x00\f\x80\xb08\xa2&\x8f\u007f>\xf9\\\x11\xef\x19\x03\xc08\f\x00\xffݱ\xd0\xc3\xe5\x01l\xf2S\x8c\xa1\b\x00W\x80\xc7>\xcb\x00P\x94\x01\xc0\x00\b\x93#k\x8a\xd9'\x80\x01`\x1c\x06\x80\xbf\xbe\xb9`K\xe0\xb7\xfa\xf5eh\x02\xc0\x95\xc25\x01\n\x17\x062\x00\x18\x00H3\x00\xc2\xe6\xb0\xea<\x9e\u007f\xa4\xaf\b`\x00\x18\x87\x01\xe0\x9f\xf9z/\xd0M~\x8a1T\x01\xe0\n\xf0@\xf0\x0f\x10b\x000\x00\x90f\x00\x84\xd1\xc1\xa3\xf3}<@\x88\x01`\x1c\x06\x80\u007f\x9e{Z0\xdb\xfb\x96b\xe8\x02\xc0\x95\xc2>\x01\x01\xee\x18\xc8\x00`\x00 \xcd\x00\b\xabës\xbd\\\x13\xc0\x000\x0e\x03\xc0\xbc\xf9\xfa\xf0\x9c\xf3\xdf\xdbP\x06\x80+\xc0\xaf\x06\"\xa8\b`\x000\x00\x90f\x00\x84\xd9dm\x0e/\xcf\xda\xfb\x97\x00\x06\x80q\x18\x00fͧ<|\xfb|\x9dM~\x8a1\xb4\x01\xe0\np\xcfa\f\x80\x80d\x000\x00\xc2\xee\xa8ڽw\fd\x00\x18\x87\x01`֫Bp\xab__\x86:\x00\\\x01\x9e\xf4\xffQ\xc2\f\x00\x06\x00\xd2\f\x80(8\xac:\x8f\xed\xf3\xbb\xde3\x06\x80q\x18\x00\xe6\xbc\xfa\xdc\xf0~\xf3\xef2\xf4\x01\xe0\n0\xe3\x93\f\x00\x9fe\x000\x00\xa2\xe2\x91c\xbbN\a0\x00\x8c\xc3\x00\xa8\xdc\\\xbd\x87k\xce\v\xff\xf0O$#\x12\x00\xae\x00\x8f\xfb\xb7m0\x03\x80\x01\xc0\x00\x88\x96\xc9\xda\x1c\xfe:}3\x03\xc04\f\x80\xca\f\xd3&?\xc5\x18\x99\x00pŷ͂\x18\x00\f\x00\x06@\xf4\xac>j+\x03\xc04\f\x80\xca<\xf3+\xe1\xd9\xe4\xa7\x18#\x15\x00\xae\x003?\xce\x00\xf0A\x06\x00\x03 j\x0e\xad\xde\xc6\x000\r\x03\xa0<\xf3)\x0f_\xfb\xf2V\xf5\x0fE\xa9F.\x00\\\x01\xee\xf9\x1cL\xde\"\xc8\x00`\x000\x00\xa2'\x03\xc0\a\x18\x00\xa5۱\xd0\xc3y!\xdc\xe4\xa7\x18#\x19\x00\xae\x14\xf6\t\x18h&\x02\x18\x00\f\x00\x06@\xf4d\x00\xf8\x00\x03\xa04\xf3)\x0fWL\x89\xc6\x05\u007f=\x19\xd9\x00p\x05\xf8\xcd #\xcf\x0e`\x000\x00\x18\x00ѓ\x01\xe0\x03\f\x80Ҽ\xec\xec\xe8\\\xf0ד\x91\x0e\x00W\x80\xc7\x0eb\x00\x18\x90\x01\xc0\x00\x88\x9a\f\x00\x1f`\x00\x14gg\xca\xc3U\x11\xb8Ͽ?#\x1f\x00\xae\x00\x0fUv\x8b \x03\x80\x01\xc0\x00\x88\x9e\f\x00\x1f`\x00\xf4o>\xe5\xe1\xda\v_V\xff\x00\x980\x16\x01\xe0\n\xf0ȡ\f\x80\nd\x000\x00\xa2&\x03\xc0\a\x18\x00}ۙ\xf2pE\x84\xee\xf3\xef\xcf\xd8\x04\x80+\xc0\xccO1\x00ʔ\x01\xc0\x00\x88\x9a\f\x00\x1f`\x00\xf4\xedE\xa7\xbf\xa6~\xe0\x9b4V\x01\xe0\n0\xfbc\f\x802d\x000\x00\xa2&\x03\xc0\a\x18\x00=\x9b\xab\xf70\xe5\xd4h\xde\xeaח\xb1\v\x00W\x80\xfb>W\xd2\xdd\x01\f\x00\x06\x00\x03 z2\x00|\x80\x01\xd0ݎ\x85\xd1\xdc\xe4\xa7\x18c\x19\x00\xae\x146\v*2\x02\x18\x00\f\x00\x06@\xf4d\x00\xf8\x00\x03\xa0\xbb\xe7\x9c\x12\xad\xed}K1\xb6\x01\xe0\np\xc7@\x06@\x912\x00\x18\x00Q\x93\x01\xe0\x03\f\x80=\xbd\xe0k\xf1\xfb\xd9\u007fwc\x1d\x00\xae\x00\xf7$\xfa\xfd%\x80\x01\xc0\x00`\x00DO\x06\x80\x0f0\x00\nv\xa6<\\\x19\x83\xfb\xfc\xfb3\xf6\x01\xe0\n0u@\x9f\x11\xc0\x00`\x000\x00\xa2'\x03\xc0\a\x18\x00\x85\xe1\xff\xbd\x98\xdc\xe7ߟV\x04\x80+\xc0\x83\x871\x00\xfa\x90\x01\xc0\x00\x88\x9a\f\x00\x1f`\x00x\xb8\xf4\xccx\xdd\xeaח\xd6\x04\x80+\xc0S=?J\x98\x01\xc0\x00`\x00DO\x06\x80\x0f\xd8\x1c\x00\x9d)\x0f\x97\x9ca\xcf\xf0O$-\v\x00W\x80\x99\x9fd\x00\xf4 \x03\x80\x01\x105\x19\x00>`k\x00\xe4\xeb=\\\x15\xe1\xa7\xfa\x95\xabu\x01\xe0\np\xff\x00\x06\xc0^2\x00\x18\x00Q\x93\x01\xe0\x036\x06@\xae\xde\xc3\xf9\xa7\xc5\xfbj\xff\u07b42\x00\\\xd9\xe3)\x82\f\x00\x06\x00\x03 z2\x00|\xc0\xc6\x00\x88\xeb&?\xc5hm\x00\xb8\x02<\xfa\x19\x06\xc0N\x19\x00\f\x80\xa8\xc9\x00\xf0\x01\x9b\x02 Wo\xf7\xf0O$-\x0f\x00W\x80\xa9\t,\x1b\xf9S\xf5\xf7A[\x06\x00\x03 j2\x00|\xc0\x96\x00\xc8\xd7{8?\xe6\x9b\xfc\x14\xa3\xf5\x01\xe0\n6M=\r\x83F\xe5\xd5\xdf\vM\xcf\xfa\xc2\xcb\xc0\xe9\xdf\x06\xbe\xf6-k\xddv\xf6\xffb\xd1}_\xa3\x11q\xc9\xfd\xa70\x00LcC\x00t\xa6<\\e\xc1&?\f\x80\xe2]s\xdf\xc5H$;\xd5\xdf\x0f-\xcf<\xb9\x1dx`9p\xf8\x84\xb2\x1e\xa9\x1c\vGOR?\x0ei\x802\x00\xba\x03\v\x02\xe0b\xcbn\xf5c\x00\x14\xa73m2\x06Z\x1a\x01\x85S\x00m;#\xe0h\xfda\xcc\x00\xa0~\xcb\x00\xe8\x0eb\x1c\x00\x9d)\xbb6\xf9a\x00\x94\xae\xf3\xf8)VF\xc0\x1e\xd7\x00ܽ\b\x18p\xb4\xfe@f\x00P?e\x00t\a1\r\x80Δ\x87k-\xd9ޗ\x01P\x99\x8d\x0fOQ\u007f_T\x03 \xed\x01\x0f\xaf\xd2\x1f\xc8\f\x00\xea\xa7\f\x80\xee \xa6\x01p\xc59<\xe7ߓ\f\x80\x9e}~\xee8\xf5\xf7F5\x00\xd2\x1e0\xdb\xd1\x1f\xca\f\x00\xea\x97\f\x80\xee \x86\x01\x10\xf7G\xfaV\"\x03\xa0w\x9f}\xfa\x18\xd8ra`\xaf\xb7\x01\u07bf̞k\x02\x18\x00v\xc9\x00\xe8\x0eb\x14\x00\x1d\v=\x9cs\xca\x1b\xea\x8bk\x98e\x00\xf4m\xd3#gYq\x8b`\x9f\xfb\x00LM\x03\x89c\xf4\a4\x03\x80\x9a\x94\x01\xd0\x1d\xc4$\x00r\xf5\x1eN;\xd9\xeeM~\x8a\x91\x01п\xeb\xee?\x1f\x03\x93\xf1\x8e\x80~7\x02\xbaoi\xfc#\x80\x01`\x97\f\x80\xee &\x01\xc0o\xfe\f\x00\x93\xae\xbd\xff\x92X\xdf\x1d\xd0o\x00\xa4ڀ{\x16\x01\x03\x8f\xd5\x1f\xd4\f\x00jB\x06@w\x10\xf1\x00\xe8Ly\xb8\xe8t\xde\xea\xc7\x000\xefһ\xae\xc4\xe0\xd1\xf1\xfc%\xa0譀\xef\xaaGl\u007f\t`\x00\xd8%\x03\xa0;\x88p\x00\xe4S\x1e.?\xfbU\xf5\xc54J2\x00Js\xed\xfd\xe7\xc7\U0009a012\x9e\x0505\x15\xcf\v\x03\x19\x00v\xc9\x00\xe8\x0e\"\x1a\x00\x9d)\x0f\xdf\xe5}\xfe\f\x80\x00lz\xe4L\xc4\xed\ue012\x1f\x06\xf4غ\xf8E\x00\x03\xc0.\x19\x00\xddAD\x03\xe0\xca)\xbcϟ\x01\x10\x9c\xcfϭQ\u007f\xefT\x03 \xd5\x06\xcch\xd0\x1f\xda\f\x00Z\xae\f\x80\xee b\x01\x90Oy\xb8\xec,\xfe\xec_\xae\f\x80\xf2m\x9b\xf9\x05\xf5\xf7O-\x00\xba\xbco)b\xb3m0\x03\xc0.\x19\x00\xddA\x84\x02\xa0c\xa1\x87\xcb\xcf\xe67\xffJd\x00T\xa6\xfb\xf8\xa9\xb1\xb8;\xa0\xec\x00H{\xc0\xbdK\xe2q:\x80\x01`\x97\f\x80\xee \"\x01\x90Oy8\xf7T\xde\xea\xc7\x00\xd0ם6\x19Q\xbf&\xa0\xa2\x00H{\xc0\xb4\xf5@b\x82\xfe\x10g\x00\xd0be\x00t\a\x11\t\x00n\xf2\xc3\x00\b\x93\xee\xb4ɑ\xbe;\xa0\xe2\x00H\xb5\x15\x9e\"8h\xa2\xfe g\x00\xd0bd\x00t\a!\x0f\x80\x1d\v=\x9c>\x99ß\x01\x10>\x17\xdd\xf9-\f\x1d\x93S\u007fOU\x02\xa0\xcb\xdb\xe7\x01G\x1c\xa7?\xcc\x19\x00\xb4?\x19\x00\xddA\x88\x03 W\xef\u16fcϟ\x01\x10bS\xb7_\x13\xc9͂\x8c\x05@\xda۹Y\xd0\x04\xfd\x81\xce\x00\xa0}\xc9\x00\xe8\x0eB\x1c\x00W\x9f\xcb\v\xfe\x18\x00\xe1w\xe3Cg\xab\xbf\xaf\xaa\x01\x90\xf6\x80'\x1b\xa3wa \x03\xc0.\x19\x00\xddAH\x03\xe0*\xde\xe7\xef\x8b\f\x00\u007f\xfc\xed\xac\x89\x88҅\x81\xc6\x03 \xed\x01\x0f,G\xa4n\x11d\x00\xd8%\x03\xa0;\bY\x00\xe4S\x1e\xae8\x87?\xfb3\x00\xa2\xa7\xfb\xf8)\xea\xef\xafj\x00\xa4\xbd\xc2-\x82ڃ\x9d\x01\x10O\x9b?[\xd9\xff\x9f\x01\xd0\x1d\x84(\x00r\xf5\x1e\xbeş\xfd}\x95\x01\xe0\xaf\xcf\xcc8Y\xfd=V\r\x80\xb4\a<\xb2:\x1a\xa7\x03\x18\x00ѱ\xe9\b \xddR\xd9\u007f\x83\x01\xd0\x1d\x84(\x00x\xc1\x1f\x03 \x0en\x99u,\xc2~:\xc0\xd7\x00H\xb5\x013\"pM\x00\x03 \x1a6\x1d\f\xa47\x01i\xb7\xb2\xff\x0e\x03\xa0;\bA\x00\xe4\xea=L\xe1&?\x81\xc8\x00\b\xc6gf\x9c\x10\xea}\x02|\r\x80.\xefY\x82P?J\x98\x01\x10~\x1b\x87\x00\xe9gv\x1eS\f\x00\xe3@9\x00\xde\\\xb0\x05_>\xb1]}A\xb4E\x06@p\xae\xbd\xff\x02\f\x1e\x1d\xce}\x02\x02\t\x80\xb4\aܹ\x00\x18\x14\xd2}\x02\x18\x00\xe1\xb6q\xd8n\xc3\xdfc\x00\xf8\x01\x14\x03`\xc7B\x0fg\u007f\x95\xdf\xfc\x19\x00\xf15}\xe7\xd58\"\x84\xbf\x04\x04\x16\x00i\x0f\xb8+\x15\xce͂\x18\x00\xe1\xb5頽\x86\xbf\xc7\x00\xf0\x03(\x06\x00\x9f\xea\xc7\x00\xb0\xc1Ew\\\x83A\xa3\xc2uM@\xa0\x01\x90j+tV\xa8\xae\t\b4\x00\xba\xbc{Q\xb8.\fd\x00\x84ϖ\x8f\xa0p\xc1_O\xc7\x10\x03\xc08\b8\x00\xf2)\x0fל\xf7\xb2\xfa\x02h\xab\f\x00=\x9b\x1f934\x8f\x12V\t\x80\xb4W\xb80P{\xf03\x00\xc2i\xf3\x81@\xba\xb5\x8f\xe3\x87\x01`\x1c\x04\x18\x00\x9d\x1c\xfe\xea2\x00t}\xe6\xc9\x13Տ\x01\xd5\x00H{\x85[\x04ðc \x03 <6\u007f\xb2\x8fo\xfe]2\x00\x8c\x83\x00\x03\x80?\xfb\xeb\xcb\x00\xd0\xf7\xf9\xb9\xb5\xeaǁj\x00\xa4=\xe0\xf1u\xfa\x11\xc0\x00\b\x87M\x87\x16\x86{\xbf\xc7\r\x03\xc08\b \x00v,\xe4\x05\u007fa\x91\x01\x10\x0e[\xa7OV=\x1d\xa0\x1e\x00i\x0f\xb8{1p\xf8\x04\x06\x80\xcd6\x8cD\xf7\xab\xfd{\x93\x01`\x1c\xf8\x1c\x00o\xce\xdf\xc2[\xfdB$\x03 <6?r\x86څ\x81\xa1\b\x80\xb4\xb7s\xb3 \xa5\b`\x00\xe8Z\xd2\xf0\xf7\x18\x00~\x00\x1f\x03 W\xefq\x93\x9f\x90\xc9\x00\b\x97M\x8f\x9c\xae\xf2K@h\x02 \xed\x01\x0f.\xd7\xd9,\x88\x01\xa0gӡ%\x0e\u007f\x8f\x01\xe0\a\xf01\x00\xa6\x9c\xc2o\xfea\x93\x01\x10>\x17\xdd\xf1\xed\xc0w\f\fU\x00\xa4ڀ;\x17\x06\xbfY\x10\x03@\xc7\xe6O\xa2\xb8s\xfe{\xcb\x000\x0e|\b\x80\\=\x1f\xec\x13V\x19\x00\xe14u\xe75\x18<:\xb8\xd3\x01\xa1\n\x80.\xef\\\b\f\fp\xb3 \x06@\xf06\x1f\x88\xfe\xaf\xf6\xefM\x06\x80q`8\x00\xf2)>\xd27\xcc2\x00\xc2\xeb\xba\xfb\xcfàd0\x11\x10\xca\x00H{\x85\x1d\x03\x83\xda,\x88\x01\x10\xac-\x1fA\xdf\xf7\xf9\xf7'\x03\xc080\x1c\x00W\x9c\xc3o\xfea\x96\x01\x10n\u007f;k\xa2\xdd\x01\x90\xf6\x80\xa7\x1d\x06@\xdc\xcc|\xa0\x82o\xfe]2\x00\x8c\x03\x83\x01p\xe5\x14~\xf3\x0f\xbb\f\x80\xf0\xbb\xe5\xa9Iv\a@\xda\x03\x1e\\\xc9\x00\x88\x8b\xcd\au\xfb\xa2\xc8\x00\b\t0\x10\x00\xb9z\x0fW\xf3g\xffH\xc8\x00\x88\x86\x9b\xa6\u007f\xc5\xee\x00H{\xc0\xbdK\xe1\xebfA\f\x00\xff\xed\xf6H\xdfJd\x00\x18\a\x15\x06\xc0\x8ez\x97\x17\xfcEH\x06@tl\x9d>\x19\t\x9fn\x11\x8cD\x00\xa4=\xe0\x91\xd5\xfem\x16\xc4\x00\xf0\xd7\xc6!\x06\x87\xbf\xc7\x00\xf0\x03T\x18\x00SN\xf9\xaf\xfaP\xa3\f\x80\xb8\xbae\xd61\xf0#\x02\"\x13\x00\xa96\xe0\xf1\xf5\xf0\xe5Q\xc2\f\x00\xffl<\xd8\xf0\xf0\xf7\x18\x00~\x80\n\x03`X\xcdV\xf5\xa1F\x19\x00qv\xdd\xfd\xe7c\xf0(\xb3\xfb\x04D&\x00\xba\xbck!p\xc4$\x06@\x14l<\x02\x95_\xf0ד\f\x00\xe3\x80\x01`\x95\f\x80h\x9a\xba\xe3\x1a\f1\xb8YP\xe4\x02 \xed\x01\xb7\xcf\a\x06Md\x00\x84٦C`\xfe\x9b\u007f\x97\f\x00\xe3\x80\x01`\x95\f\x80\xe8\xba\xf8\xae\xab1h\x94\x99\xd3\x01\x91\f\x80\xb4W\xd8'\xc0Գ\x03\x18\x00fm\xf90\xfc\xf9\xe6\xdf%\x03\xc08`\x00X%\x03 ں\xd3N\x82\x89k\x02\"\x1b\x00\xa96\xe0\xd15f6\vb\x00\x98\xd3\xd9\x17\xe5m\xef[\x8a\f\x00\xe3\x80\x01`\x95\f\x80\xe8\xdb\xf2\xe8i\x15?@(\xb2\x01\xd0\xe5=K\x18\x00a\xb1\xa2\xed}K\x91\x01`\x1c0\x00\xac\x92\x01\x10\x0f\x9d\xc7N\xb3;\x00\xd2\x1e\xf0\xc02\x06\x80\xb6M\x87\x054\xfc=\x06\x80\x1f\x80\x01`\x95\f\x80\xf8\xf8l\x05\xdb\x06\xc7\"\x00\xd2\x1e0\xc7Aٛ\x051\x00*\xd3\xd7\v\xfez\x92\x01`\x1c0\x00\xac\x92\x01\x10/\x9f\x9f;\x16\xe5\\\x13\x10\x9b\x00H\xb7\x95\xbfY\x10\x03\xa0|\x9b>\x87\xe0\xbe\xf9w\xc9\x000\x0e\x18\x00V\xc9\x00\x88\x9f\r\x0f\x9d\x83A\xa3J{\x8a`|\x02`\xa7S\xd3(y\xb3 \x06@y6\x8c@\xb0\xdf\xfc\xbbd\x00\x18\a\f\x00\xabd\x00\xc4\xd3u\xf7\x9f\x8f#J\x88\x80\xd8\x05@W\x04\f<\x96\x01্\x83\x94\x86\xbf\xc7\x00\xf0\x030\x00\xac\x92\x01\x10_WL\xbd\xc2\xee\x00H{;\xf7\t(\xf2\x97\x00\x06@i\xb6\xec\xaf8\xfc=\x06\x80\x1f\x80\x01`\x95\f\x80x\xbb\ue04b\x8a:\x1d\x10\xdb\x00(%\x02\x18\x00\xc5\xdb\xf2\x11 ݪ\xfc\xde2\x00\x8c\x03\x06\x80U2\x00\xe2\xef\x9a{\xbf\xde\uf381\xb1\x0e\x80\xb4\aܽ\xa8\xff͂\x18\x00\xc5\xd9|\x00\x82\xbf\xe0\xaf'\x19\x00\xc6\x01\x03\xc0*\x19\x00v\xd8\xfc\xc8\x19\xe8\xeb\xee\x80\xd8\a@\xda\x03\x1eZ\xd5w\x040\x00\xfa\xb7\xf9\x00\xe8\u007f\xf3\xef\x92\x01`\x1c0\x00\xac\x92\x01`\x8f\xcfΚ\xd0k\x04X\x11\x00\xe96`f#\x03\xa0\\\x9b?\x0e\xa4\xb3!x\x1f\xbbd\x00\x18\a\f\x00\xabd\x00\xd8\xe5\x96Y\xc7Y\x1c\x00;}hEϛ\x051\x00z7\xd0\x1d\xfe\x8a\x95\x01`\x1c0\x00\xac\x92\x01`\x9f\r\x0f\x9d\xd7\xed\xd9\x01V\x05@\xda\x03\xee[\xd2\xfdt\x00\x03\xa0g\x1b\x87\x86p\xf8{\f\x00?\x00\x03\xc0*\x19\x00v\x9a\x9d\xf6\xe5=\"\xc0\xba\x00H{\x85\x1d\x03w\u007f\x940\x03\xa0\xbb\x8d\x87C\xf7V\xbf\xbed\x00\x18\a\f\x00\xabd\x00ث;m2\xba\xae\t\xb02\x00\xd2m\xc0\xfd\xcbފ\x00\x06\xc0\x9e6\u007f*\xc4\xc3\xdfc\x00\xf8\x01\x18\x00V\xc9\x00\xb0\xdb5\xf7^\x82A\xa3\xf2\x96\x06\xc0N\xef^T\xd81\x90\x01\xf0\x96\xcd\a\x87|\xf8{\f\x00?\x00\x03\xc0*\x19\x00t\xf9\xd4\xcbq\xf6\x97\xdf\b\xc1\x82\xae\xe8\u074b\x80\xea/\xa8\xbf\x17\xa1\xb0\xf9\xd3\x11\x18\xfe\x1e\x03\xc0\x0fPa\x00\x82p^\xf0\xc7\x00\b\x84J\x03\x00GԖ\xf7,n\ro_\x10\x82\x83Xٳ\xae\xd5\u007f\x1f4\xbd\xf4g@\xaaM\xff}дk\xf0\xdb\xfe:\xa4[\xf4\a\xb0\xfa\xf0wB\xf0>\x14+\x03\xc08\f\x00˴9\x00.\xfd\xb9\xddC/ն\xf3߿\xfbk\xd0f\xf1/\x01\x16\a@\xf3\xa7\x11\x9do\xfe]2\x00\x8c\xc3\x00\xb0L[\x03\xe0\xfc\xeb\xf5_{m{\x8b\x1fk\xa3\xc8\xd2\x00\x88\xc4\x05\u007f=\xc9\x000\x0e\x03\xc02m\f\x80\xcb\u007f\xa9\xff\xba\x87]+#\xc0\xc2\x00\x88\xcc\x05\u007f=\xc9\x000\x0e\x03\xc02m\v\x80+~e\xe9p\xdb͢\xff\xfdm\x96\xbdV\x96\x05@S\x02\xd1\x1d\xfe\x1e\x18\x00>\xc0\x00\xb0L\x9b\x02\xe0\xa2\x1b-\x1bh{\x99*c\xa0\x97\xf3\xff\x89\xac\x16\x05@\xe3PD{\xf8{`\x00\xf8\x00\x03\xc02m\t\x00\xdb\xcf\xf9W4\xc8\xf7\xbeP0\xaeZ\x12\x00\xa1|\xb0O92\x00\x8c\xc3\x00\xb0L\x1b\x02\xe0\xfc\xeb-\xfa\x16ۋ\x95\xfe\xfbS6\xdc\x1d`A\x00\xb4|\x1c\xf1\x18\xfe\x1e\x18\x00>\xc0\x00\xb0̸\a\xc09\xd7\x01\xf5\x9b\xf5_gMM\xc5O\xec#*\xe6\x01\xd0r\x00\x90Ά\xe0u6%\x03\xc08\f\x00ˌs\x00\\\xf8c\xfd\xd7W[\xd3\xdf\xdac\x1d\x011\x0e\x80\x96\x03\x80tk\b^c\x932\x00\x8c\xc3\x00\xb0̸\x06\xc0\x85?\xd1\u007fm5\xf5\xf5'\xfb\xb8\x9e\x0e\x88i\x00Dj{\xdfRd\x00\x18\x87\x01`\x99q\f\x80+\u007f\x1d\xf3o\xaaE\xe8\xf7\xbf?\x96\xafo\f\x03\xa0e\u007f\xc4\xef\x9b\u007f\x97\f\x00\xe30\x00,3n\x01p\xd9-1\x1dN%\x18Է\xf3ؽ\xce1\v\x80\xc6#\x10\xfd[\xfd\xfa\x92\x01`\x1c\x06\x80e\xc6)\x00.\xf9\xa9\xfe\xeb\xa9m\xe0C9N\xfb\x04\xc4(\x00\x1aG \xde\xc3\xdf\x03\x03\xc0\a\x18\x00\x96\x19\x97\x00\xb8\xf8&\xfd\xd7RS\xd5\r{\xe2\x12\x011\t\x80\xa6\xcf!\xfe\xc3\xdf\x03\x03\xc0\a\x18\x00\x96\x19\x87\x00\xe0#}C\xf0\xef\x8fC\x04\xc4 \x00\x9a\x0fE\xf8\x020\xe5!\x12?\xb5G\xee}\x8aX\x00Xu\xc1_O2\x00\x8cSq\x00d\x048q\xb8\xfe\xa0`\x00\x14g\x94\x02\xe0\x1b?\xd3\u007f\xbd\xb4\x8d\xca\xf0\xdf\xf5\xf7F\xe8o\x8dR\x004\r\x86]\x17\xfc\xed岙\x80S\xc5\x000M\xc5\x01\xd0冷\x01\x83\xc6\xe9\x0f\r\x06@\xdfF%\x00.\xbb9b\xc3\xc4\x0f#\xfa\xef\x8f\xcc\xfb\x16\x91\x00h:\x04H\xd9\xfaͿ\x15\xc8\xecg\xe6ud\x00t\xc7X\x00tY\xb7\xbf\xfe\xf0`\x00\xf4n\x14\x02\xe0\xf2_Dh\x88\xf8d\xaa\r\x91\r\x80\xb4\x87h\\\x13\x10\x81\x00h\x1c\nk\xbf\xf9o8\xd1\xeck\xc9\x00\xe8\x8e\xf1\x00(\xbc\xd0\xc07\x0f\xd3\x1f$\f\x80\xee\x86=\x00l\u007f\xa4\xef\xae\xc1\x1f\xe5\xe1\xdfe\xd8/\\\fy\x004\x0e\aR\x16\x0e\xffU7T\xfes?\x03\xa08|\t\x80\xddC\xe0\x98\xa4\xfePa\x00\xbce\x98\x03\xc0\xf6\xfb\xfc#\xff\xad\xbf'\xc3\x1c\x01!\x0e\x80\xe6\x83`\xdd7\xff%\xf5\x80\xeb\xc3\xe0g\x00\xf4\x8e\xaf\x01\xd0e\xfd{\x80\xc4Q\xfa\x03\x86\x01\x10\xde\x008\xeb\u007f\x81\xfa\xcd\xfa\xaf\x8f\xaaQ\xf8ټ\f\x19\x00\xa5\xd9\xf2\x01 \xed\x84\xe0\xf5\t\xcaͅ\xeb\x1c\xfc~]\x19\x00\xdd\t$\x00\xba\xfc\xe5\x81\f\x00m\xc3\x18\x00\x17\xdd\xc8\xe1\x1f\xd7\xe1\xdfe(# \x84\x01в?\xac\xba\xd5o\xfd\x19\xc1\xbd\xb6\f\x80\xee\x04\x1a\x00\xae\x14n\x1b\x14Vl\xef\xdb8B\xf3u\xfe;6\xc9G\xb5\xe7mhAFFÕ\x0e\xa52\x03n\xf8\x14\x03 \b\xc3\x10\x00\x97\xfe,DC@K\xcb\xff\xfd\xa90\x9c\x0e\bA\x004\x8c\x8c\xff\xad~k/.\xac\xf1:\xafq\a\xb22V{\xbeF\x068\xf2]\xb8\xb2C\xe5\xcd\xca\b\xf0\xd5!\f\x00?\xd5\x0e\x80\x8bo\xd4\u007f\r4\x8d\xd5}\xfe\x06^\v\xd5\x10T\x0e\x80\x86#\x11\xeb[\xfd\x96=\x1c\xfcy\xfe.\x1d\xc9!+\xd7i\xcf\xd3\xc8\x02G\xd6\xc1\x95N\xb5\x0fLj\x1a\x06\x80\x1fj\x06\xc0E\x1c\xfe\x1c\xfcazM\x14\x03\xa0\xe9\xb0\xf8~\xf3_\xd4\b8o\xd7{m\x1diО\x9f\xb1\x00\x19\xf94\\\xf9\x97\xda\x1b\xf9Ї\x18\x00\xa6\xd5\n\x803\xbf\xcf[\xfd\xac\xb9ڿD\xd5~\tP\n\x80\xe6O!\xb6\xe7\xfc7\x1e\xad7\xf8\xb3\xf2_4\xc8g\xb4\xe7f\xec\x80#\x9f\x87\xe6\xf5\x01\xdf>\x98\x01`J\x8d\x008\xe7\av\x0f\xff]\xb7\xfa\x85\xe0o\t\xab\xb6\x04@\xf3\xc7\x11˫\xfdW\u007fO\xef\xe7~W:\xe0ȗ\xb4\xe7d\xec\x81+7Ñ\x9cZ\b\x9c0\x82\x01P\xa9A\a\xc0\x857\xe8\xff\x9b\xd5\xe5\xf0/\xca\xc0# \xe0\x00h\xd9\x1f\xb1\xbb\xcf\u007f\xe9,\xf8\xba}o\xdf\xe6\xe0\xc8o\xb4\xe7\xa2u\xc0\x11O\xe9\r\a\x1a\xf6)\u007f[a\x06@\xb0\x01\xf0\xcd[\xf4\xff\xbd\xea\xf2'\xff\x92\f4\x02\x02\f\x80\xcc\a\x10\xafo\xfe\x9b\x81̾Z\x83\x1fp\xe59\xed9h5\xc8\xc8\xe1p\xe4\x15\xb5\x03\xe0\xce\xfd\x19\x00\xe5\x18T\x00\\v3\xcfw\x87\xe2V\xb7\b\x1a\xd8q\x13P\x004\u007f\x06\xb1\xda\xdb\u007f×\xf4\x06\xbf#o\xc0\x95\x81\xda\xf3\x8f\xec\x04\x8e|\rZ\xd7\ad\x04\xb8d\x00\x03\xa0\x14\x83\b\x00\xde\xe7\x0f\xde\xeaW\xa1\x81\x1c?\x01\x04@\xe3p\xc4\xe6V\xbf\x95?\xd7=\xcf\xdf*gk\xcf;\xd2\vpd&\\ɫ\x95\xe1\x84$\x03\xa0\x18\xfd\x0e\x80K,\xdf\xdb?큃ߐ\xbe\xff\x82\xe2s\x004\x0e\x8dǭ~KRZC\x1f\xc8J\x1e\x8e\xcc֞o\xa4\b\xe0\xc9;\xe1\xca\xf3j\a\xcb\xd2w1\x00\xfa\xd3\xcf\x00\xb8\xfc\x97\xfc\xe6\x9f\xf2\xc0\x000\xf9z\xfay\x8b\xa0\x8f\x01\xd0t(b\xf1Ϳ\xf9\x93z\xc3ߕ?!-\xefҞk\xa4D\xd0*\xa3\xe0\xca6\xb5\x03\xe7\xe7\x9f`\x00\xf4\xa6_\x01p\xc1\xf5\x1c\xfe\xdc\xe8'b\xaf\xabO\x01\xd04\x18HE\xfc\x82\xbfu\xe7hn\u07fb\x03\xaeTk\xcf1R!p\xe4\x12h^\x1fp\xd6 \x06\xc0\xde\xfa\x11\x00\xe7\xfc@\xffߥ*\a\u007f0\xaf\xb1\xe9\xff\xa6\x0f\x01\x10\xf5o\xfe+\xee\xd2<Ͽ\x03\x19\xb9B{n\x11\xc3 +K\xa0\xb9\xad\xf0\x981\f\x80.M\a\xc09\xff\xab\xffoҔ\xdf\xfa#\xac\xe1\x00h\xfe\b\"{\xab\xdf\xe25ZC\x1f;g\xc3\n\xed9E|\x04\x8d\xf2\x01h>vx\xee\xfb\x18\x00i\xcfl\x00\xf0j\u007fp\x93\x9f\x805z\xbc\x19\f\x80̾\x88\xec\xf6\xbeM\x035\x87\xff?\x90\x91\xfd\xb4\xe7\x13\t\b82\x0e\x9a\xdb\n\xaf\xbdD\xff\x03\xa7\xa9\xa9\x00\xb8\xf8&\xbb\x87\u007f\xaa\rHo\xe6\xf0\xd7z퍼\xee\x86\x02 \xaa\xdb\xfb\xae\xfd\xa6\xf6m}\x13\xb4\xe7\x11Q\x02\x19\xf9>\xb4\x1e;\xecT\x01\xcb\x1f\xd4\xff\x00jh\"\x00.\xf9\xa9\xfe\xbfC[n\xb4#\xe4V\x00\x00\x0f\x9aIDAT\xf2\xa3\xff\xfaW\xfc\xdf1\x10\x00M\x87!r\xc3\u007f\xf9#\xba\x8f\xe9u\xe4z\xed\xf9CB\x02\\iP*\xd0\xc2#+\x175\xe9\u007f \x83\xb4\xd2\x00\xb8\xecf\xfd\u007f\x83\xba\x16\xff\xf2\x11&+\x8e\x80\n\x03\xa0\xe90DꂿE-\x80\xf3n\x9d\xb5\xb6`\x8b\xf6\xbc!!\x04\x199\x10\x8e\xbc\xa8v`6\x8c\xd1\xffp\x06e%\x01p\xe5\xaf\xec\xfe\xd9?\xed\xf1\xdf\x1f6+\xfa%\xa6\x82\x00h:\xa1=gH\xc8AVN\x84\xda\xf5\x01U\xc0\xeak\xf5?\xa8~[n\x00\\\xf8c\xbb\x87߮Ac\xf1k\x10VS^\x99\xc7f\x99\x01\xd08\x12\x91\xf9\xe6\xbf\xfa\a\xba\xe7\xf93\xf2e\xed\xb9B\"\x06\xb2\xf20\\\xa5\xc7\x0e\xbbU\xc0ҧ\xf5?\xb8~YN\x00\\\xf8c\xfd\xbf[[\xde\xee\x17n\xcbz\u007f\xca\b\x80\xa6\xc1\xd1\xd8\xdew\xe9\x1c(>\xa67\x0fW\x1eӞ#$\xe2\xc0U|\xecpf_ \xbdY\xff\x83l\xdaR\x03\xc0\xfaM~\xa6\x97(\x83\xcd2\x04\xaelW\xf9\x108\x02\xac\x9f\xac\xbf\x10\x94j_\x01\xc0\xe1\xbfS\xbe\x06\xb1\xb1\xcf㹏\x00h\x1a\x80P~\xf3_\u007f\x8a\xdecz\x1d\xe9@\xab\f\xd7^\xf7\t\xd9\x03d\xe5j8J\xdb\n\xbb\xfb\x00+\xa6\xea/\f\xc5\xda[\x00\x9c\xff#\xfd\xbfM]\x0e\xfeX\xda\xeb/\x01\xbd\x04@\xe3\xb0\xf0m\xf2\xb3\xfc\xde\xc2Z\xa3\xf3\xad\u007f\a\xb2r\xad\xf6:OH\x9f\xc0\x91%J\x1f\x90\x82\x8bW\xeb/\x14\xfd\xd9S\x00\\\xfa3\xfd\xbfKS\xde\xe3\x1f\u007fS=\xdd\xcd\xd1C\x004\rB\xa8n\xf5[\xbc\xb6\xb0e\xb9֚\xe6\xf01\xbd$B #\xfb\xc1U\xdcV\xb8q\xb0\xfe\xa2ї{\a\xc0%|\xa4/\x03\xc0\x12\xfb\v\x80\xe6\x83\x10\xaa\xe1\xdf8Lo\xf0g\xe5%<#\xff\xa3\xbd\x9e\x13R\x16\xd8$\xa3\xa1v}@\x15\xb0n\x8a\xfe\x02ғ\xbb\a\xc0y?\xb4{\xf8\xef\x1a\xfc\x16\xbf\x06\xb6\xb9\xc7vλ\x05@\xf3!\b\xcd\xc6_k\xcf\u05fb\xad/+ۑ\x95\xb1\xda\xeb7!F\x80+7\xc2Q\xdaVة\x02\x96=\xa6\xbf\xa0\xecnW\x00\x9c\xfb\u007f\xfa\u007f\x8b\xa6\xbc\xd5\xcf^w\x85\xdf\xce\x00h\n\xc97\xffe\xd3\x01G\xed<\u007f\x0eY\xb9E{\xbd&\xc4\x17\xa0\xf9\xd8\xe1\xcc\xfb\x80E\xcd\xfa\vL\xda+\x04\xc0\xb9?\xd4\xff;T\xe5\xb7~\xebM\xed\f\x80\x96\xfd\xa1?\xfc3@f?\xad\xc1\x0f\xf01\xbd\xc4\x06\xe0\xca\xc7\xe1\xc8kZ\x1f\xb4\xadk\xc6b\xe5/\xff\xa2\xeaƫ\xd6a\xe5/\xfe\xac\xfewh\xfa\xf7i\xcf\xf1\x9b?\x05\xd2\x0e\x90vu\xff\x86\x86Z\xbd\xc1\xefH;\x1a\xe5\x93\xda\xeb2!\x81\x82M\xf2y8:\xd7\a\xe4\x9d*\xdcz\xdd\xcdH$A\x03\xb7\x13?\xb8\xe8%\xe49\xfc\xa9\xb6\xab\xaf\xd5ܾw;Z\xe5\x8b\xda\xeb0!\xaa +\x0f\xa1\xf0\xe8\xca\xc0?\x84\x9dN\x15&OΆ`(\xda\xe3\x95g\xbf\x8aN\x0e\u007f\xaa\xe9\xd2yP|Lo'\xb2\xf2\xa8\xf6\xbaKH\xa8\x80+\xbfW\xfa@\xe2?\xab?\xaa>\x18m\xf0\xeas_\xd1_\xfc\xa9ݶ|Tk\xf0\x03\xae\xfcY{\x9d%$\xb4\xc0\x91C\x91\xd5y\xda`\xa7#Xr\xffWՇd\\\xbd\xf1\xb2\xff\xf0\x9b?\xd5s\xc3\x17\xf4\xb6\xef\xcdJ\aZd\x80\xf6\xfaJH$\x80+\xa7C\xe9\xb1\xc3y\xa7\n?\xbc\xfa>\xf5\x81\x19\x1f;\U00043bff\xc4\xe1Ou\\\xf9S\xdd\xc7\xf4\xb6\xca\xd9\xda\xeb)!\x91\x04\xaê\xe2c\x87'\x9d\xf0|\b\x06h\x94\xed\xc47\xcf\xe29\u007f\xaa\xe0\x92\xa5\x80\xf3\x0e\xad\xc1\x0f>\xa6\x97\x10\x03\xe0yy\x17\xb2\xf2\x82\xd6\a\xf9\x8f\xe9\x01!\x18\xa4\xd1\xf4\xd23_\xe3\xf0\xa7\xc1\xdbt\xa8\xde\xe0\xcfʿ\xb0Jޭ\xbdn\x12\x12+\x90\x91\x11P\xdaV\xb8\xd3\x11̼\xedb\xf5\x81\x1a%/8\xedu\xecX\x18\x82a@\xedq\xfd\x19\xba\xb7\xf55KR{\x9d$$\xd6\xc0\x95K\xe1\xea\xcf?P{=\"\x84(\x00G\u0382\xe2c\x87\xaf\xbb\xeaA\xf5\xa1^\xac\xffw\xf1K\xfcٟ\x9as\xe5̀\xbb\x8f\xd6\xe0߁\xac\x9c\xab\xbd\xfe\x10BB\x00\xb2\xf2\xb8\xcaB\xe4\nv\xb4\xbc\x1d'|\xf1\xb7\xea\x03\xbe\xbfo\xfe\xbcϟ\x1aq\xc9\"\xc0y\x97\xce\xe0/\xf8\xa4\xf6zC\b\t\x19\xd8(\xef\x81+\xff\xd0Z\x98\x9e]0X}\xd0\xf7\xe4\xf7/|\x89ß\x9a\xb1)\xa19\xf8\xff\x8b\x8c\xbcW{\x9d!\x84\x84\x18\xdd\xc7\x0eW\xe1\xc9\xdb.Q\x1f\xfa]\xfe\xf0bn\xefK\r\xb8\xfel\xed\xed{\xf9\x98^BH\xf1\xa0U\xbe\x05\xc5\xc7\x0e_v\xe1|\xc5\xe1߉\xef\x9c\xff2\xcf\xf9\xd3\xca\\~\x8f\xde\xe0w$\aG\xae\xd5^G\b!\x11\x06\x8e,TY\xc0\\\xc1\xeb\x1bޏ\xf1\x13_\b|\xf8_t\xfa\xeb\xfaÃF\xd7\xc5k\x80\xcc~:\x83\xbf\xe0\"\xedu\x83\x10\x12\x13\xd0$\x1f\x86#\xedZ\vZffm`\x01p\xc6䭼Տ\x96o\xc3(\xbd\xc1\xef\xc8\x0e\xb8\xb2\xbf\xf6zA\b\x89!pe<\x14\x1f;|\xf7\x8d\xff\xe7\xeb7\xff\x8b\xcfx\r\x1d\vC0Dh\xf4\\s\x85\xe6\xcf\xfd\x1d\xd8$\xc7h\xaf\x0f\x84\x10\v\x80+?\x86Ҷ\u009dN\x15\xa6\x9c\xb9\xca\xf8\xf0\xbf\xe6\xbcW\xf8͟\x96\xee\xb2ǡ\xf8\x98\xdeN\xb8\xf23\xed\xf5\x80\x10b!pe\xbd\xd2\u0087\x17W}\f\xa3\x8ez\xd9H\x00|\xe7|>җ\x96\xe8\xa2F\xa0\xe5cZ\x83\x1fp\xa5I\xfb\xf3O\b\xb1\x1cd\xe4\xd3P\xdaM\xb0\xd3\x11\xac~\xf4Ċ\x86\xff\x8f.\xe1}\xfe\xb4D7\x1e\xa3\xb7}oV:\xd0 \x9f\xd1\xfe\xdc\x13B\xc8.\xd0*\x93\x91\xd5{\xec\xf0O\xbes\x17\x87?\xf5\xd7U7h?\xa6\xf7T\xed\xcf9!\x84\xf4\xca\xce\xc7\x0ek-\x92\xf8\xeaW3E\x9d\xf3\xff\xce\xf9\xdcޗ\x16\xe9\xd29\x80\xf3v\xb5c\x1a\x8eܧ\xfd\xb9&\x84\x90\xa2\x81+\xcfk-\x98\u007f[\xf6i\f\xa9\xde\xd6\xe7\x05\u007f\xeaC\x85F\xc0,\xd0\xfc)\xbd\xc1\xefʟ\x01\xa9\xd2\xfe,\x13BH\xc9\xc0\x91\x04\x14\xb7\x15^x\xf7\x99\xdd\x02\xe0\xe23^\xe3\xd5\xfe\xb4\u007f7\x9c\xa4\xf9s\xffv\xb4\xca \xed\xcf/!\x84T\f\\\xb9\x00\x8a\xdb\n\u007f\xe7\x9bӐHv\xe2\x8c\xc9[y\x9f?\xedە\xbf\xd6\u07be\xf7\x12\xed\xcf+!\x84\x18\a\xaeLW\xfaF\x85\xedM\xefC~qZ\u007f\xc0\xd0p\xbad1\x90\xf9\x80\xd67~ +3\xb5?\x9f\x84\x10\xe2+\xb8A\xf6\x81#\xaf\xa8-\xb4͟\xd6\x1f64\\6\u007fVo\xf0;Ҏ\xa7\xe4mڟKB\b\t\f\xb4\xca(d\xe5M\x9dE\xb7\nX{\x9e\xfe\u087a\xae\xbdH\xf7<\xbf+\xd5ڟCB\bQ\x03\xae|\x1b\xae\xe4t\x16\xe1*`\xc5T\xfdAD\x83u\xf9}Pܾ7\x0fW\xbe\xaf\xfd\xb9#\x84\x90\xd0\x00G\x96(-\xc8@\xcb\a\v\x8fp\xd5\x1eL\xd4_\x17\xad\x05Z>\xa25\xf8\x01GVj\u007f\xce\b!$\x94`\x93\xbc\x0f\x8eζ\xc2p\x04h\x1a\xa8?\xa4\xa8?6\x0e\xd6۾ב\x0e\xac\x97\xf7k\u007f\xbe\b!$\xf4\xa0E\x8e\x83\xd2\xf3\x05\xe0T\x01k\xae\xd6\x1fXԌ\xab\xbf\xab\xbb}\xaf#\x9f\xd7\xfe<\x11BH\xe4@VnBᑧ\n\x8bw\x15\xb0\xecQ\xfd\x01F\xcbs\xd9t\xdd\xed{\xb3r\x8b\xf6\xe7\x87\x10B\"\x0f\\iQ[\xc8[>Zx\xf4\xab\xf6@\xa3Ź\xa8\th>Po\xf0\xbbҪ\xfdy!\x84\x90X\x81\xcd\xf21\xb8Z\xb7\r\n\xd00F\u007f\xb8Ѿm\xa8\xd1;\xcf\xef\xcavd\xe4@\xed\xcf\t!\x84\xc4\x16\xb8r\n4\xaf\x0fX\xf5#\xfdAG\xf7tՍ\x9a\xe7\xf9w\xc0\x95ӵ?\x17\x84\x10b\rp\xe5~\xa5\x05\x1fp\xde\t,\x9d\xab?\xf8lw\xc9\x02 \xf3^\xad\xc1\x0f8\xf2\xb0\xf6\xe7\x80\x10B\xac\x04\"Up\xe5Oj\x03\xa0\xf9\x13@:\xab?\b\xad3[\xd8\xd2Y\xeb}\xcf\xca\v\xb8A\xf6\xd1>\xfe\t!\xc4z\xd0\"\a\xebm+,\xc0\xc6\xe3C0\x14-q×t\xcf\xf3;r\xa8\xf6\xf1N\b!d/\x90\x95\x8b\xa0\xf4\xd8a8U\xc0\xca[\xf5\ad\\]\xf1\x1b\xcd\xf3\xfc9\xb8\xf2\r\xed\xe3\x9b\x10BH?\xc0\x95YJ\x83\x02ȼ\x1fX\xb2T\u007f`\xc6\xc5\xc5ˀ\xcc\a\xb5\x06?\x90\x95\xb9\xda\xc73!\x84\x90\x12\xc0*y;\x1cyCmp4\x1f\xac?<\xa3n\xd3az\x83ߑ\x1d\xc8\xc8;\xb4\x8fcB\b!e\x82gd0\x1cٮ3D\xaa\x80ug\xe8\x0fҨ\xb9\xee\\\xdd\xc7\xf4fe\x98\xf6qK\b!\xc4\x10p\xe4:\x14\x1eŪ0T\xaa\x80\xe5\xf7\xeb\x0fְ\xbb\xfca(>\xa6\xb7\x13\x8e\\\xaf}\x9c\x12B\b\xf1\t\xb8\xb2\\i\xc0\x00-\x1f\xe6c\x87{r\xf1\xba\u0096\xcbZ\xef\x8b+k\xb4\x8fKB\b!\x01\x80g\xe5\xfdP\xdbMP\x80\xa6!\xfaC7,6\rӼ\xad\xaf\x03\x19\xd9O\xfbx$\x84\x10\x120\xc8\xcaX\xb8\x8a\xd7\a\xac\xfd\x86\xfe\x00\xd6r͕\xba\x8f\xe9u\xe5(\xed\xe3\x8f\x10B\x882p\xe5WJ\x83\bp\xde\x06,{B\u007f \a\xe5ҧ\n[)k\xbdޮܮ}\xbc\x11B\b\t\x11\x80T!+\xae\xda`j\xfeD\xe1Q\xb6\xda\x03\xda/\x175io\xdf\xdb\x06p\xfb^B\b!\xbd\x00O\x0eлmP\x80\x86j\xfdamڍG\xebn\u07fb\x85\x8f\xe9%\x84\x10R$p\xe5$h](\xe8V\x01\xab\u007f\xa8?\xb8+uՏ\xa1x[\xdf\x0e\xb8\xf2U\xed\xe3\x88\x10BHD\x81#\x0f*\r0 \xf3\x1e`\xe9|\xfdA^\xaaK\xea\x81̾Z\x83\x1fp\xe5Q\xed\xe3\x86\x10BH\f\xc0S\xf268\xf2/\xb5\x81\xd6\xfc\x19D\xe3\xb1í@\xf3!z\x83ߑ\x97\xb1Jޮ}\xbc\x10B\b\x89\x19\xc8\xc8!\xaa\x8f\x1d^\xff\xc5\x10\f\xf9^\\\xff\x15\xed\xed{\x0f\xd3>>\b!\x84\xc4\x1c8r\x1e\xb4\xb6\x15v\xaa\x80\x95\xbf\xd0\x1f\xf8]\xae\xfc\xb5\xe6\xe0\xef\x84#\x17i\x1f\x0f\x84\x10B,\x03\xae\xccV\x1a|\x85m\x855\x1f;\xbcx\xb9\xf6\xf6\xbd\v\xb4\xdf\u007fB\b!\x16\x03\xc8\xdb\xe1h\xdd- @\xd3!\xc1\x0f\xff\xa6\xcf\xe9\r~G:\xf8\x98^B\b!\xa1\x01\xad2\x1c\xaa\xdb\n_\xe0\xff\xe0_{\xa9\xde\xcf\xfdYَgd\xa4\xf6\xfbL\b!\x84\xf4\b\\\xb9F\xed۱[\x05\xac\x98j~\xf0/\xbf\xb7\xb0e\xb1ֿ++\xd7j\xbf\xaf\x84\x10BHQ\xc0\x95\xf5j\x03\xb3\xe5\x80\xc2#v+\x1d\xfc\x8b\xd6\x17\xb6(\xd6\x1b\xfcM\x80Ti\xbf\x97\x84\x10BHI\xa0Q>\x00W\xf1\xb6\xc1J\x1e;ܨ\xfa\x98\xde\xed|L/!\x84\x90ȃ\xac\x1c\r\xadm\x85\x9d*`\xf5\xb7\x8a\x1f\xfc\xab\xafռ\xado\a\\9V\xfb\xfd\"\x84\x10B\x8c\x02WnT\x1a\xac\x80\xf3n`٣\xbd\x0f\xfeeӀ\xcc\xfb\xb4\x06?\xe0\xcaϵ\xdf\x1fB\b!\xc47p\x83\xec\x03G\x9eU\x1b\xb4͟\x04\x165\xefv\x9e\xbf\x05h>Ho\xf0g\xe5\x0fxJަ\xfd\xbe\x10B\b!\x81\x80\xf5\xf2qh^\x1f\xb0q\"\xb0\xe1\x04\xdd\xf3\xfc\x1b\xe5\x13\xda\xef\x03!\x84\x10\xa2\x02\x1c\x99\fGrj\xdf\xc0\x837\x0fGN\xd3~\xdd\t!\x84\x90P\x00G\xee\t\xc1p\xf6\xdb\a\xb4_gB\b!$t\x00\xf26\xb8\xf2\xdf\x10\fjӾ\x04\xf01\xbd\x84\x10BH\x9f\xa0I>\a\xadm\x85M\xeaH\a6\xc9\x00\xedד\x10B\b\x89\x14p\xe5Bd\x95\x1e;\\\xb9\x97j\xbf~\x84\x10BH\xa4\x81#3C0Ћ\xfd\xd6?G\xfb\xf5\"\x84\x10Bb\x032\xf2\x0edC}Z\xa0\x03\x9e\xbcS\xfbu\"\x84\x10Bb\t\x9e\x91\x91!\v\x81\x0e\xb4IR\xfbu!\x84\x10B\xac\x00Y\xf9_\xf5៑\x1fi\xbf\x0e\x84\x10B\x88u@\xa4\nYY\xa60\xfc\xd7\xe0\x06\xd9G\xfb\xdfO\b!\x84X\r\xfe \xfb\xc1\t\xe4\xb4\xc0v\xfcI>\xa8\xfd\xef%\x84\x10B\xc8n\xa0U&\xa0\xf0H]\xb3\x83ߑ\x1cZe\x92\xf6\xbf\x8f\x10B\b!}\x80\xac\xdcbl\xf8g\xe5\xd7\xda\xff\x1eB\b!\x84\x14\xc9\xcem\x85\xb3\x15|\xeb\xf7\xb8}/!\x84\x10\x12Q\xe0\xca\xc7Qʶ\xc2YَV>\xa6\x97\x10B\b\x89\x05p\xe5\f\xb8}\x00G\xee\xeb\xe1\xe7\xfe\x87\xb5\xff.B\b!\x84\xf8\f o\x87#\u007f\x81+\u007fEFޡ\xfd\xf7\x10B\x82\xe7\xff\x03#\x94\xff00\xd1\xddr\x00\x00\x00\x00IEND\xaeB`\x82" var _Assetsa778db74bb0610978d68bf45c1d84ed40dc5e19e = "\x00\x01\x00\x00\x00\r\x00\x80\x00\x03\x00PFFTM\x8d\x96\xb6\x16\x00\x02\xf4\xd8\x00\x00\x00\x1cGDEF\x00*\x03\xcd\x00\x02\xf4\xb8\x00\x00\x00\x1eOS/2C\x82V\xa0\x00\x00\x01X\x00\x00\x00`cmap\x19M%\xeb\x00\x00\x10\xd4\x00\x00\f\xaegasp\xff\xff\x00\x03\x00\x02\xf4\xb0\x00\x00\x00\bglyfk\x89U\xec\x00\x00,\xa4\x00\x02\x93\xc4head\x17\x15\x91\x1e\x00\x00\x00\xdc\x00\x00\x006hhea\x04C\x06\a\x00\x00\x01\x14\x00\x00\x00$hmtxo\xcd\x02\xe8\x00\x00\x01\xb8\x00\x00\x0f\x1aloca\x04xڴ\x00\x00\x1d\x84\x00\x00\x0f maxp\x04)\x01S\x00\x00\x018\x00\x00\x00 name\x1d\xac'$\x00\x02\xc0h\x00\x00\x05+post7\f\x86\x8f\x00\x02Ŕ\x00\x00/\x19\x00\x01\x00\x00\x01J\xc0\x833f\x864_\x0f<\xf5\x00\v\x02\x00\x00\x00\x00\x00\xda\x15\xc8\v\x00\x00\x00\x00\xda\x15\xc8\x11\xff\xec\xff\xb4\x02\x95\x01\xcd\x00\x00\x00\b\x00\x02\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x01\xc0\xff\xc0\x00\x00\x02\x80\xff\xec\x00\x00\x02\x95\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xc6\x00\x01\x00\x00\x03\xc7\x01P\x00 \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x01\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00\x04\x01\xf9\x03\x84\x00\x05\x00\x00\x01L\x01f\x00\x00\x00G\x01L\x01f\x00\x00\x00\xf5\x00\x19\x00\x84\x00\x00\x02\x00\x05\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00PfEd\x00\x80\xf0\x00\xf9A\x01\xc0\xff\xc0\x00.\x01\xcc\x00T\x00\x00\x00\x01\x00\x00\x00\x00\x01:\x01\xa5\x00\x00\x00 \x00\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x00\x00\x02\x00\xff\xfb\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfe\x02@\x00\x0f\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01`\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\a\x02\x80\x00\x18\x02\x00\x00\x10\x02@\x00\x00\x02\x00\x00\b\x02@\xff\xfc\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\a\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\b\x02\x00\x00\x00\x01\x00\x00\x00\x01\x80\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x12\x01@\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x02\x00\x00\b\x01`\x00\x00\x02@\x00\x00\x01\xc0\x00@\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00@\x01\xc0\xff\xf8\x01@\x00\x1b\x01@\x00\x1b\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\x00\x02\x00\x00\b\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x05\x01\xc0\x00\x05\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x13\x02\x00\x00\b\x02\x00\x00\x00\x02@\xff\xfe\x01\x80\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x02@\xff\xf9\x02@\xff\xff\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\xff\xff\x02\x00\x00\x00\x01\xc0\x00\x05\x01\xc0\x00\x05\x02\x80\x00\x03\x02@\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x80\xff\xfb\x02@\xff\xff\x02@\x00\x0f\x01\x80\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfd\x02\x00\xff\xfd\x01\xc0\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x02@\x00\x00\x02\x00\xff\xfe\x02\x00\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x01\xf0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfc\x02\x00\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x01\xc0\xff\xf5\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfd\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01@\x00\a\x01@\x00\a\x00\xc0\x00\x17\x00\xc0\x00\x00\x02\x00\x00\x00\x01@\x00\r\x01@\x00\r\x01@\x00\r\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01@\x00\x00\x02\x80\x00\x00\x02@\xff\xff\x01\xc0\x00\x00\x01`\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x80\xff\xfa\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x18\x01\xc0\x00\x18\x01@\x00\x00\x01@\x00\x00\x01\x00\x00\x18\x01\x00\x00\x18\x01@\x00\x00\x01@\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x01@\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\b\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x02\x80\x00\x00\x02@\x00\x00\x02\x00\x00\b\x02\x80\x00\x00\x02\x80\xff\xfb\x02@\x00\x00\x02\x00\xff\xfc\x02\x00\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x01\x80\x00\x18\x00\xc0\x00\x00\x00\xc0\x00\x10\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x01`\x00\x00\x02\x80\xff\xfa\x01\xc0\x00\x00\x01\xc0\xff\xff\x02\x00\x00\x00\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02@\xff\xff\x01\xc0\x00\x00\x01\xf0\x00\x00\x02\x00\x00\b\x00\xc0\x00\x18\x01\xc0\x00\x00\x02\x00\x00\b\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x01\xf0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01@\x00\x00\x01@\x00\x00\x01 \xff\xfd\x01@\x00\x00\x01\x80\x00\x13\x01\x80\x00\x00\x02@\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\xc0\xff\xfe\x01\xc0\xff\xfe\x02\x00\xff\xfe\x02\x00\xff\xfe\x01\xc0\xff\xfe\x01\xc0\xff\xfe\x02\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x05\x00\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x1b\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\b\x02\x00\x00\x00\x01\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x10\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x00\x02\x00\xff\xfc\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfd\x02\x00\xff\xff\x02\x00\x00\x00\x01\x80\xff\xfc\x01\xc0\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02\x00\x00\b\x02\x00\x00\a\x02\x00\x00\x00\x02\x00\x00\b\x02\x00\x00\x10\x01\xc0\x00 \x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\b\x02\x00\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x80\xff\xfa\x01\xc0\x00\x00\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02 \xff\xfd\x02\x00\x00\x00\x02@\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x80\xff\xff\x02\x00\x00\x00\x02\x00\xff\xff\x01 \x00\x00\x01\x80\x00\x00\x01 \x00\x00\x01\x80\x00\x00\x01\xe0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x01\x80\x00\x00\x01 \x00\x00\x01\xe0\x00\x00\x01 \x00\x00\x01 \x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01@\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x01\xc0\xff\xfe\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x01\xc0\xff\xfe\x01\xc0\xff\xfd\x02\x80\x00\x00\x02\x00\x00\b\x02\x80\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x01 \x00\x00\x02\x00\xff\xfa\x02@\x00\x00\x02\x00\x00\x00\x02\x00\x00\b\x02\x00\x00\b\x01\xc0\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x01\xc0\xff\xfd\x02\x00\x00\b\x01\x80\x00\x00\x02\x00\x00\x00\x01\x80\xff\xf5\x02\x80\x00\x00\x02\x00\x00\x00\x02\x80\xff\xfb\x02\x00\xff\xfc\x01\xc0\x00\x00\x02@\xff\xf9\x02\x80\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x01\xf0\x00\x00\x01\x80\x00\x00\x02@\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\xff\xfb\x02\x00\x00\x00\x01\xa0\x00\x00\x02\x00\x00\b\x01\xc0\x00\x00\x02\x00\x00\b\x01\xc0\x00\x10\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\a\x02\x00\x00\x00\x02@\x00\x00\x02\x00\xff\xff\x02\x00\xff\xff\x02\x00\xff\xff\x01\x00\x00\r\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\x00\x00\r\x01\xc0\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x01\x00\x00\r\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02@\x00\x00\x01@\xff\xfe\x01@\xff\xfe\x02@\x00\x00\x01\x80\x00\x00\x01`\x00\x00\x01@\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfa\x01\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x10\x01\xc0\x00\x00\x02@\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\xff\xfa\x01\xc0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x02\x00\x00\x00\x01@\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x00\x01@\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x02\x80\x00\x00\x01\xf0\x00\x00\x01\xa0\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfe\x01\xc0\xff\xfe\x02\x80\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x02@\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x01\x80\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x01\x80\x00\x00\x02\x80\x00\x00\x02@\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\xff\xfd\x02\x80\x00\x00\x02\x00\x00\x00\x01\xe0\xff\xfe\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x80\xff\xff\x02\x00\xff\xff\x02\x80\xff\xfa\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\xff\xff\x02@\x00\x00\x02@\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfe\x02\x00\x00\x00\x02\x80\xff\xfe\x02@\xff\xfe\x01\xc0\xff\xff\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xf0\x00\x00\x02\x80\x00\x00\x02\x80\xff\xff\x02\x80\x00\x00\x02\x80\xff\xfa\x01 \xff\xfc\x02\x80\xff\xfa\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfa\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x01\xf0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x01\x80\xff\xfe\x01\xc0\x00\x00\x02\x80\xff\xff\x02\x80\x00\x00\x02@\x00\x00\x01\x80\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfa\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x00\xff\xf8\x01\xc0\x00\x00\x01\x80\x00\x00\x02\x80\x00\x00\x01\x80\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfe\x02\x00\x00\x00\x02@\x00\x00\x01\x00\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02h\xff\xf5\x02\x80\xff\xfb\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x80\xff\xff\x01@\x00\x00\x02\x00\x00\x00\x01\xf0\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x01\x80\xff\xfe\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02@\xff\xfc\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x01\xf0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02@\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x00\xff\xff\x02@\xff\xff\x01\xf0\x00\x00\x01\xf0\x00\x00\x02\x00\xff\xfb\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf8\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x02\x00\x00\x00\x01\xf0\x00\x00\x02\x80\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xc0\x00\x00\x01@\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02 \x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf8\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x02\x80\x00\x00\x02@\x00\x00\x02@\x00\x00\x02\x00\xff\xff\x02\x00\xff\xfe\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\xff\xff\x02\x80\x00\x00\x02\x80\xff\xff\x01\x80\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfa\x01\xf0\x00\x00\x02\x80\x00\x00\x02@\x00\x00\x02\x00\xff\xf5\x02\x00\x00\x00\x02\x00\x00\x00\x02\x18\xff\xfc\x01\x80\x00\x00\x01\xf0\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfa\x01\xf0\x00\x00\x01\xc0\xff\xf6\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfc\x01 \xff\xfc\x01\x80\xff\xfd\x01\xc0\xff\xfd\x01\xc0\xff\xed\x02\x80\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x01\xe0\x00\x00\x02\x00\x00\x00\x02\x80\xff\xff\x02\x80\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xe0\xff\xff\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfe\x01\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x01@\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x80\xff\xfb\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfe\x02@\x00\x10\x01\xc0\x00\x00\x02@\x00\x00\x02\x00\xff\xf4\x02\x00\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x01\xf0\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfb\x02@\x00\x00\x02\x00\x00\x00\x01\xd0\xff\xfb\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x80\xff\xff\x02\x00\x00\x00\x01\xf0\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x01\xc0\xff\xfd\x02@\x00\x00\x02\x80\x00\x00\x01\xe0\xff\xff\x01\xc0\x00\x00\x02@\x00 \x02\x80\xff\xfd\x02\x00\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x02\x80\x00\x00\x02@\x00\x00\x02@\xff\xfa\x01\x80\x00\x00\x02\x80\xff\xf2\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfa\x02\x00\x00\x00\x01\xa0\x00\x00\x02\x80\x00\x00\x01\xc0\xff\xff\x02\x80\xff\xfa\x02@\xff\xfa\x02@\xff\xff\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02\x00\xff\xff\x02@\x00\x00\x02\x80\xff\xfb\x02\x00\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02@\x00\x00\x01\x80\xff\xfe\x02\x00\x00\x00\x02@\xff\xff\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\xff\xfe\x02\x00\xff\xfe\x02\x00\x00\x00\x02\x00\x00\x00\x02@\xff\xff\x02\x80\xff\xff\x02\x00\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfe\x02\x00\xff\xff\x01\xf0\x00\x00\x02\x00\x00\x00\x01\x00\x00 \x02\x00\xff\xfc\x02\x00\xff\xff\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfd\x02@\x00\x00\x01\xc0\xff\xf7\x02\x00\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x02\x80\x00 \x02\x00\x00\x00\x02\x00\xff\xf9\x01\x80\x00\x00\x01\x80\x00\x00\x01\xc0\xff\xfa\x02\x00\xff\xff\x02@\x00\x00\x02\x80\x00\x00\x02\x00\xff\xff\x02\x00\xff\xff\x02\x00\x00\x00\x02\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x02\x00\xff\xff\x01\xc0\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00 \x02\x00\x00\x00\x02\x00\xff\xff\x01\xc0\x00 \x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\xff\xff\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\xff\xfe\x01\xc0\xff\xfe\x02\x00\xff\xfe\x02\x00\xff\xfe\x01\xc0\xff\xfe\x01\xc0\xff\xfe\x02@\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfc\x01\x80\x00\x00\x02\x00\x00\b\x02\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x1c\x00\x01\x00\x00\x00\x00\n\xa4\x00\x03\x00\x01\x00\x00\x00\x1c\x00\x04\n\x88\x00\x00\x02\x9e\x02\x00\x00\b\x00\x9e\xf0\x02\xf0\x05\xf0\x0e\xf0\x13\xf0\x15\xf0\x19\xf0\x1c\xf0\x1e\xf0>\xf0D\xf0N\xf0[\xf0^\xf0n\xf0|\xf0\x80\xf0\x86\xf0\x89\xf0\x8d\xf0\x91\xf0\x95\xf0\x98\xf0\x9e\xf0\xa1\xf0\xae\xf0\xb2\xf0\xce\xf0\xd1\xf0\xde\xf0\xe0\xf0\xe3\xf0\xeb\xf0\xf4\xf0\xfe\xf1\v\xf1\x0e\xf1\x11\xf1\x1c\xf1\x1e\xf1\"\xf1.\xf11\xf15\xf1:\xf1>\xf1D\xf1F\xf1K\xf1N\xf1Y\xf1^\xf1e\xf1\x83\xf1\x88\xf1\x93\xf1\x95\xf1\x97\xf1\x99\xf1\x9d\xf1\xae\xf1\xb0\xf1\xb3\xf1\xbb\xf1\xc9\xf1\xce\xf1\xd8\xf1\xda\xf1\xde\xf1\xe6\xf1\xec\xf1\xf6\xf1\xfe\xf2\x01\xf2\a\xf2\v\xf2\x18\xf2\x1e\xf2-\xf26\xf29\xf2I\xf2N\xf2]\xf2l\xf2w\xf2z\xf2\x8b\xf2\x8d\xf2\x92\xf2\x95\xf2\x9a\xf2\x9e\xf2\xa4\xf2\xa8\xf2\xb6\xf2\xb9\xf2\xbb\xf2\xbd\xf2\xc2\xf2\xce\xf2\xd2\xf2\xdc\xf2\xe5\xf2\xe7\xf2\xea\xf2\xed\xf2\xf2\xf2\xf6\xf2\xf9\xf2\xfe\xf3\x05\xf3\f\xf3\x1e\xf3(\xf38\xf3[\xf3]\xf3`\xf3b\xf3\x82\xf3\xa5\xf3\xbf\xf3\xc1\xf3\xc5\xf3\xc9\xf3\xcd\xf3\xd1\xf3\xdd\xf3\xe0\xf3\xe5\xf3\xed\xf3\xfa\xf3\xfd\xf3\xff\xf4\x06\xf4\x10\xf4\"\xf4$\xf44\xf46\xf4:\xf4<\xf4?\xf4A\xf4C\xf4E\xf4G\xf4K\xf4N\xf4P\xf4S\xf4X\xf4]\xf4_\xf4b\xf4f\xf4m\xf4r\xf4t\xf4y\xf4\u007f\xf4\x82\xf4\x87\xf4\x8b\xf4\x8e\xf4\x94\xf4\x97\xf4\x9e\xf4\xad\xf4\xb3\xf4\xba\xf4\xbe\xf4\xc0\xf4\xc2\xf4\xc4\xf4\xce\xf4\xd3\xf4\xdb\xf4\xdf\xf4\xe3\xf5\t\xf5\x91\xf5\x9d\xf5\xa2\xf5\xa7\xf5\xb1\xf5\xb4\xf5\xb8\xf5\xbd\xf5\xc5\xf5\xcb\xf5\xce\xf5\xd2\xf5\xd7\xf5\xda\xf5\xdc\xf5\xdf\xf5\xe1\xf5\xe4\xf5\xe7\xf5\xeb\xf5\xee\xf5\xfd\xf6\x10\xf6\x13\xf6\x19\xf6\x1f\xf6!\xf60\xf67\xf6<\xf6A\xf6D\xf6G\xf6J\xf6O\xf6Q\xf6U\xf6X\xf6^\xf6b\xf6f\xf6k\xf6m\xf6o\xf6t\xf6v\xf6y\xf6|\xf6\u007f\xf6\x84\xf6\x89\xf6\x96\xf6\x9b\xf6\xa1\xf6\xa7\xf6\xa9\xf6\xad\xf6\xb7\xf6\xbb\xf6\xbe\xf6\xc0\xf6\xc4\xf6\xcf\xf6\xd1\xf6\xd3\xf6\xd5\xf6\xd7\xf6\xd9\xf6\xde\xf6\xe3\xf6\xe6\xf6\xe8\xf6\xed\xf6\xf2\xf6\xfa\xf6\xfc\xf7\x00\xf7\f\xf7\x0e\xf7\x15\xf7\x17\xf7\x1e\xf7\"\xf7)\xf7/\xf7=\xf7@\xf7C\xf7G\xf7M\xf7S\xf7V\xf7[\xf7_\xf7i\xf7k\xf7s\xf7}\xf7\x81\xf7\x84\xf7\x88\xf7\x8c\xf7\x94\xf7\x96\xf7\x9c\xf7\xa0\xf7\xa2\xf7\xa6\xf7\xab\xf7\xae\xf7\xb6\xf7\xba\xf7\xbd\xf7\xc0\xf7\xc2\xf7\xc5\xf7\xca\xf7\xce\xf7\xd0\xf7\xd2\xf7\xda\xf7\xe6\xf7\xec\xf7\xef\xf7\xf2\xf7\xf5\xf7\xf7\xf7\xfb\xf8\a\xf8\x10\xf8\x12\xf8\x16\xf8\x18\xf8*\xf8/\xf8>\xf8J\xf8L\xf8P\xf8S\xf8c\xf8m\xf8y\xf8}\xf8\x82\xf8\x87\xf8\x91\xf8\x97\xf8\xc1\xf8\xcc\xf8\xd9\xf8\xff\xf9A\xff\xff\x00\x00\xf0\x00\xf0\x04\xf0\a\xf0\x10\xf0\x15\xf0\x17\xf0\x1c\xf0\x1e\xf0!\xf0A\xf0H\xf0P\xf0^\xf0`\xf0p\xf0\x80\xf0\x83\xf0\x89\xf0\x8d\xf0\x91\xf0\x93\xf0\x98\xf0\x9c\xf0\xa0\xf0\xa3\xf0\xb0\xf0\xc0\xf0\xd0\xf0\xd6\xf0\xe0\xf0\xe2\xf0\xe7\xf0\xf0\xf0\xf8\xf1\x00\xf1\r\xf1\x10\xf1\x18\xf1\x1e\xf1 \xf1$\xf10\xf13\xf17\xf1=\xf1@\xf1F\xf1J\xf1M\xf1P\xf1[\xf1`\xf1\x82\xf1\x85\xf1\x91\xf1\x95\xf1\x97\xf1\x99\xf1\x9c\xf1\xab\xf1\xb0\xf1\xb2\xf1\xb8\xf1\xc0\xf1\xcd\xf1\xd8\xf1\xda\xf1\xdc\xf1\xe0\xf1\xea\xf1\xf6\xf1\xf8\xf2\x00\xf2\x04\xf2\n\xf2\x17\xf2\x1a\xf2!\xf23\xf28\xf2@\xf2M\xf2Q\xf2l\xf2q\xf2y\xf2\x8b\xf2\x8d\xf2\x90\xf2\x95\xf2\x9a\xf2\x9d\xf2\xa0\xf2\xa7\xf2\xb5\xf2\xb9\xf2\xbb\xf2\xbd\xf2\xc1\xf2\xc7\xf2\xd0\xf2\xdb\xf2\xe5\xf2\xe7\xf2\xea\xf2\xed\xf2\xf1\xf2\xf5\xf2\xf9\xf2\xfe\xf3\x02\xf3\t\xf3\x1e\xf3(\xf37\xf3X\xf3]\xf3`\xf3b\xf3\x81\xf3\xa5\xf3\xbe\xf3\xc1\xf3\xc5\xf3\xc9\xf3\xcd\xf3\xd1\xf3\xdd\xf3\xe0\xf3\xe5\xf3\xed\xf3\xfa\xf3\xfd\xf3\xff\xf4\x06\xf4\x10\xf4\"\xf4$\xf43\xf46\xf49\xf4<\xf4?\xf4A\xf4C\xf4E\xf4G\xf4K\xf4N\xf4P\xf4S\xf4X\xf4\\\xf4_\xf4a\xf4f\xf4h\xf4p\xf4t\xf4w\xf4}\xf4\x81\xf4\x84\xf4\x8b\xf4\x8d\xf4\x90\xf4\x96\xf4\x9e\xf4\xad\xf4\xb3\xf4\xb8\xf4\xbd\xf4\xc0\xf4\xc2\xf4\xc4\xf4\xcd\xf4\xd3\xf4\xd6\xf4\xde\xf4\xe2\xf4\xfa\xf5\x15\xf5\x93\xf5\x9f\xf5\xa4\xf5\xaa\xf5\xb3\xf5\xb6\xf5\xba\xf5\xbf\xf5\xc7\xf5\xcd\xf5\xd0\xf5\xd7\xf5\xda\xf5\xdc\xf5\xde\xf5\xe1\xf5\xe4\xf5\xe7\xf5\xeb\xf5\xee\xf5\xfc\xf6\x10\xf6\x13\xf6\x19\xf6\x1f\xf6!\xf6.\xf67\xf6;\xf6A\xf6D\xf6G\xf6J\xf6O\xf6Q\xf6S\xf6X\xf6]\xf6b\xf6d\xf6i\xf6m\xf6o\xf6t\xf6v\xf6x\xf6{\xf6\u007f\xf6\x81\xf6\x87\xf6\x96\xf6\x98\xf6\xa0\xf6\xa7\xf6\xa9\xf6\xad\xf6\xb6\xf6\xbb\xf6\xbe\xf6\xc0\xf6\xc3\xf6\xcf\xf6\xd1\xf6\xd3\xf6\xd5\xf6\xd7\xf6\xd9\xf6\xdd\xf6\xe2\xf6\xe6\xf6\xe8\xf6\xec\xf6\xf0\xf6\xfa\xf6\xfc\xf6\xff\xf7\v\xf7\x0e\xf7\x14\xf7\x17\xf7\x1e\xf7\"\xf7(\xf7.\xf7;\xf7@\xf7C\xf7G\xf7M\xf7S\xf7V\xf7Z\xf7^\xf7i\xf7k\xf7r\xf7|\xf7\x80\xf7\x83\xf7\x86\xf7\x8c\xf7\x93\xf7\x96\xf7\x9c\xf7\x9f\xf7\xa2\xf7\xa4\xf7\xa9\xf7\xad\xf7\xb5\xf7\xb9\xf7\xbd\xf7\xbf\xf7\xc2\xf7\xc4\xf7\xc9\xf7\xcc\xf7\xd0\xf7\xd2\xf7\xd7\xf7\xe4\xf7\xec\xf7\xef\xf7\xf2\xf7\xf5\xf7\xf7\xf7\xfb\xf8\x05\xf8\x0f\xf8\x12\xf8\x15\xf8\x18\xf8)\xf8/\xf8>\xf8J\xf8L\xf8P\xf8S\xf8c\xf8m\xf8y\xf8{\xf8\x81\xf8\x84\xf8\x91\xf8\x97\xf8\xc0\xf8\xcc\xf8\xd9\xf8\xff\xf9A\xff\xff\x10\x03\x10\x02\x10\x01\x10\x00\x0f\xff\x0f\xfe\x0f\xfc\x0f\xfb\x0f\xf9\x0f\xf7\x0f\xf4\x0f\xf3\x0f\xf1\x0f\xf0\x0f\xef\x0f\xec\x0f\xea\x0f\xe8\x0f\xe5\x0f\xe2\x0f\xe1\x0f\xdf\x0f\xdc\x0f\xdb\x0f\xda\x0f\xd9\x0f\xcc\x0f\xcb\x0f\xc7\x0f\xc6\x0f\xc5\x0f\xc2\x0f\xbe\x0f\xbb\x0f\xba\x0f\xb9\x0f\xb8\x0f\xb2\x0f\xb1\x0f\xb0\x0f\xaf\x0f\xae\x0f\xad\x0f\xac\x0f\xaa\x0f\xa9\x0f\xa8\x0f\xa5\x0f\xa4\x0f\xa3\x0f\xa2\x0f\xa1\x0f\x85\x0f\x84\x0f|\x0f{\x0fz\x0fy\x0fw\x0fj\x0fi\x0fh\x0fd\x0f`\x0f]\x0fT\x0fS\x0fR\x0fQ\x0fN\x0fE\x0fD\x0fC\x0fA\x0f?\x0f4\x0f3\x0f1\x0f,\x0f+\x0f%\x0f\"\x0f \x0f\x12\x0f\x0e\x0f\r\x0e\xfd\x0e\xfc\x0e\xfa\x0e\xf8\x0e\xf4\x0e\xf2\x0e\xf1\x0e\xef\x0e\xe3\x0e\xe1\x0e\xe0\x0e\xdf\x0e\xdc\x0e\xd8\x0e\xd7\x0e\xcf\x0e\xc7\x0e\xc6\x0e\xc4\x0e\xc2\x0e\xbf\x0e\xbd\x0e\xbb\x0e\xb7\x0e\xb4\x0e\xb1\x0e\xa0\x0e\x97\x0e\x89\x0ej\x0ei\x0eg\x0ef\x0eH\x0e&\x0e\x0e\x0e\r\x0e\n\x0e\a\x0e\x04\x0e\x01\r\xf6\r\xf4\r\xf0\r\xe9\r\xdd\r\xdb\r\xda\r\xd4\r\xcb\r\xba\r\xb9\r\xab\r\xaa\r\xa8\r\xa7\r\xa5\r\xa4\r\xa3\r\xa2\r\xa1\r\x9e\r\x9c\r\x9b\r\x99\r\x95\r\x92\r\x91\r\x90\r\x8d\r\x8c\r\x8a\r\x89\r\x87\r\x84\r\x83\r\x82\r\u007f\r~\r}\r|\rv\rh\rc\r_\r]\r\\\r[\rZ\rR\rN\rL\rJ\rH\r2\r'\r&\r%\r$\r\"\r!\r \r\x1f\r\x1e\r\x1d\r\x1c\r\x1b\r\x17\r\x15\r\x14\r\x13\r\x12\r\x10\r\x0e\r\v\r\t\f\xfc\f\xea\f\xe8\f\xe3\f\xde\f\xdd\f\xd1\f\xcb\f\xc8\f\xc4\f\xc2\f\xc0\f\xbe\f\xba\f\xb9\f\xb8\f\xb6\f\xb2\f\xaf\f\xae\f\xac\f\xab\f\xaa\f\xa6\f\xa5\f\xa4\f\xa3\f\xa1\f\xa0\f\x9e\f\x92\f\x91\f\x8d\f\x88\f\x87\f\x84\f|\fy\fw\fv\ft\fj\fi\fh\fg\ff\fe\fb\f_\f]\f\\\fY\fW\fP\fO\fM\fC\fB\f=\f<\f6\f3\f.\f*\f\x1f\f\x1d\f\x1b\f\x18\f\x13\f\x0e\f\f\f\t\f\a\v\xfe\v\xfd\v\xf7\v\xef\v\xed\v\xec\v\xeb\v\xe8\v\xe2\v\xe1\v\xdc\v\xda\v\xd9\v\xd8\v\xd6\v\xd5\v\xcf\v\xcd\v\xcb\v\xca\v\xc9\v\xc8\v\xc5\v\xc4\v\xc3\v\xc2\v\xbe\v\xb5\v\xb0\v\xae\v\xac\v\xaa\v\xa9\v\xa6\v\x9d\v\x96\v\x95\v\x93\v\x92\v\x82\v~\vp\ve\vd\va\v_\vP\vG\v<\v;\v8\v7\v.\v)\v\x01\n\xf7\n\xeb\n\xc6\n\x85\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x02\n\x00\x00\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00L\x00\x00\x00\xb0\x00\x00\x01\x18\x00\x00\x01`\x00\x00\x01\xbc\x00\x00\x02\x14\x00\x00\x03d\x00\x00\x04\x10\x00\x00\x05\x88\x00\x00\x06\x88\x00\x00\x06\xd4\x00\x00\aH\x00\x00\a\xec\x00\x00\bp\x00\x00\t\x18\x00\x00\t\xf0\x00\x00\n\xc4\x00\x00\v\x84\x00\x00\v\xd4\x00\x00\f\x90\x00\x00\r<\x00\x00\r\xa0\x00\x00\x0eD\x00\x00\x0f$\x00\x00\x0f\xf0\x00\x00\x10L\x00\x00\x10\xc0\x00\x00\x11H\x00\x00\x11\x84\x00\x00\x11\xf8\x00\x00\x12\xf0\x00\x00\x13p\x00\x00\x14<\x00\x00\x14\x90\x00\x00\x15\x14\x00\x00\x15\xb0\x00\x00\x15\xdc\x00\x00\x16|\x00\x00\x16\xfc\x00\x00\x17\x84\x00\x00\x18\b\x00\x00\x18p\x00\x00\x198\x00\x00\x19\xfc\x00\x00\x1a\xac\x00\x00\x1b\\\x00\x00\x1c\f\x00\x00\x1c\xbc\x00\x00\x1d\xbc\x00\x00\x1e\x8c\x00\x00\x1f\\\x00\x00\x1f\xb4\x00\x00 (\x00\x00 p\x00\x00 \xa4\x00\x00!\f\x00\x00!\xbc\x00\x00\"\x00\x00\x00\"\\\x00\x00\"\xb0\x00\x00\"\xe4\x00\x00#D\x00\x00#|\x00\x00#\xd0\x00\x00$0\x00\x00$x\x00\x00$\xd4\x00\x00% \x00\x00%l\x00\x00%\xcc\x00\x00&\f\x00\x00&\x88\x00\x00&\xe0\x00\x00'x\x00\x00'\xe8\x00\x00(\xcc\x00\x00) \x00\x00)\x84\x00\x00)\xe8\x00\x00*H\x00\x00*\xac\x00\x00+\x10\x00\x00+\xb8\x00\x00,`\x00\x00,\xc0\x00\x00,\xf8\x00\x00-\xa8\x00\x00.\b\x00\x00.\xc4\x00\x00/<\x00\x00/\xa0\x00\x000,\x00\x001\b\x00\x001t\x00\x001\xf4\x00\x003\x04\x00\x003\xb0\x00\x003\xf8\x00\x004\xa4\x00\x004\xf0\x00\x005<\x00\x006\x00\x00\x006\x88\x00\x006\xc4\x00\x0070\x00\x008\f\x00\x008\xe0\x00\x009\\\x00\x00;\xe0\x00\x00\x8c\x00\x00?8\x00\x00?\x90\x00\x00@\x1c\x00\x00@\x88\x00\x00A\x04\x00\x00A\x94\x00\x00B$\x00\x00B\xb8\x00\x00C|\x00\x00D4\x00\x00D\xe8\x00\x00E\xa0\x00\x00FT\x00\x00F\xc8\x00\x00G<\x00\x00G\xb0\x00\x00H$\x00\x00H\xf0\x00\x00Ip\x00\x00J\x8c\x00\x00J\xcc\x00\x00KD\x00\x00K\xec\x00\x00L\xb8\x00\x00M\xa4\x00\x00M\xfc\x00\x00Nh\x00\x00O\x10\x00\x00O\x90\x00\x00P0\x00\x00P\xac\x00\x00P\xe4\x00\x00Ql\x00\x00R8\x00\x00S\xc0\x00\x00T\xa8\x00\x00UP\x00\x00U\xb8\x00\x00VT\x00\x00W\x00\x00\x00W\x88\x00\x00W\xbc\x00\x00W\xf0\x00\x00X$\x00\x00XT\x00\x00X\xa8\x00\x00X\xfc\x00\x00Y,\x00\x00Y\\\x00\x00Z\x04\x00\x00Z\x80\x00\x00[,\x00\x00[\x84\x00\x00\\\\\x00\x00] \x00\x00]\xc0\x00\x00^L\x00\x00_@\x00\x00`\x18\x00\x00`\x84\x00\x00a\x04\x00\x00a\x80\x00\x00b\x8c\x00\x00cp\x00\x00d8\x00\x00d\xb4\x00\x00eX\x00\x00e\xe4\x00\x00fX\x00\x00f\xe0\x00\x00gl\x00\x00g\xf8\x00\x00h|\x00\x00h\xc8\x00\x00i\x10\x00\x00i\\\x00\x00i\xa4\x00\x00j\x14\x00\x00j\x8c\x00\x00j\xdc\x00\x00k,\x00\x00k\xc0\x00\x00lX\x00\x00m\x04\x00\x00m(\x00\x00m\xac\x00\x00n(\x00\x00n\x8c\x00\x00o0\x00\x00p\xb0\x00\x00q\xb0\x00\x00r$\x00\x00r\xc0\x00\x00sT\x00\x00s\x94\x00\x00t,\x00\x00u\x14\x00\x00u\xe0\x00\x00vt\x00\x00v\xe0\x00\x00w,\x00\x00x\b\x00\x00x\xe0\x00\x00y<\x00\x00z\f\x00\x00z\xac\x00\x00{t\x00\x00{\xec\x00\x00|\xa0\x00\x00}<\x00\x00}\x9c\x00\x00}\xfc\x00\x00~\\\x00\x00~\xc0\x00\x00\u007f\x94\x00\x00\x80\x1c\x00\x00\x80\x84\x00\x00\x80\xd4\x00\x00\x81$\x00\x00\x81\xd0\x00\x00\x82\x1c\x00\x00\x82t\x00\x00\x82\xe0\x00\x00\x83l\x00\x00\x84(\x00\x00\x84\x94\x00\x00\x84\xf0\x00\x00\x85H\x00\x00\x85\xa4\x00\x00\x86d\x00\x00\x86\xf0\x00\x00\x87\xa8\x00\x00\x884\x00\x00\x88\xcc\x00\x00\x89L\x00\x00\x8ah\x00\x00\x8a\xbc\x00\x00\x8b`\x00\x00\x8cD\x00\x00\x8d(\x00\x00\x8e\x10\x00\x00\x8e\xf8\x00\x00\x8f\xe4\x00\x00\x90\xd0\x00\x00\x91\x94\x00\x00\x92\\\x00\x00\x92\xcc\x00\x00\x934\x00\x00\x93\xe8\x00\x00\x94<\x00\x00\x94\xa8\x00\x00\x95h\x00\x00\x95\xc4\x00\x00\x96\x00\x00\x00\x96\xc8\x00\x00\x97h\x00\x00\x98\b\x00\x00\x98\xbc\x00\x00\x99T\x00\x00\x99\xec\x00\x00\x9b\x10\x00\x00\x9c0\x00\x00\x9d \x00\x00\x9d\x9c\x00\x00\x9ed\x00\x00\x9e\xcc\x00\x00\x9f\x80\x00\x00\xa0\x80\x00\x00\xa1\x88\x00\x00\xa2X\x00\x00\xa2\xe8\x00\x00\xa3T\x00\x00\xa4H\x00\x00\xa5\x10\x00\x00\xa5\xc4\x00\x00\xa6l\x00\x00\xa6\xf8\x00\x00\xa7\xcc\x00\x00\xa8\xa0\x00\x00\xa98\x00\x00\xaaD\x00\x00\xaa\xd0\x00\x00\xab@\x00\x00\xab\x98\x00\x00\xac<\x00\x00\xac\xf8\x00\x00\xadX\x00\x00\xaed\x00\x00\xae\xd4\x00\x00\xafp\x00\x00\xb0`\x00\x00\xb0\xf0\x00\x00\xb2\xa0\x00\x00\xb3X\x00\x00\xb3\xd4\x00\x00\xb4\xb0\x00\x00\xb5D\x00\x00\xb6h\x00\x00\xb7\x14\x00\x00\xb7\x80\x00\x00\xb8$\x00\x00\xb8\xec\x00\x00\xb9d\x00\x00\xb9\xe4\x00\x00\xba\xc8\x00\x00\xbb$\x00\x00\xbb\x9c\x00\x00\xbc8\x00\x00\xbc\x98\x00\x00\xbc\xdc\x00\x00\xbe\x04\x00\x00\xbe\xe4\x00\x00\xbf\xa8\x00\x00\xc0D\x00\x00\xc14\x00\x00\xc2\x00\x00\x00\xc2\xc0\x00\x00\xc3\xc0\x00\x00\xc4\xf4\x00\x00Ũ\x00\x00\xc60\x00\x00Ƥ\x00\x00\xc7\f\x00\x00\xc7\xc4\x00\x00\xc8`\x00\x00\xc9T\x00\x00\xca4\x00\x00\xcb\x14\x00\x00\xcb\xec\x00\x00̌\x00\x00\xcd \x00\x00ͨ\x00\x00\xcd\xfc\x00\x00\xce8\x00\x00\xcfH\x00\x00\xcf\xf4\x00\x00Р\x00\x00\xd1\x18\x00\x00Ѩ\x00\x00\xd2t\x00\x00\xd2\xe4\x00\x00\xd3T\x00\x00\xd3\xc4\x00\x00\xd40\x00\x00Ԕ\x00\x00\xd4\xe4\x00\x00ՠ\x00\x00\xd6P\x00\x00\xd7$\x00\x00\xd7x\x00\x00\xd7\xe0\x00\x00\xd8\xf4\x00\x00ـ\x00\x00\xda \x00\x00ڬ\x00\x00\xdb(\x00\x00\xdb\xd0\x00\x00\xdcl\x00\x00\xdc\xf4\x00\x00\xddd\x00\x00\xde8\x00\x00\xde\xdc\x00\x00\xdf`\x00\x00\xe0(\x00\x00\xe0\xa4\x00\x00\xe1\x18\x00\x00\xe1\xcc\x00\x00\xe2`\x00\x00\xe30\x00\x00\xe3\xdc\x00\x00\xe40\x00\x00\xe4\x90\x00\x00\xe54\x00\x00\xe5\x94\x00\x00\xe5\xdc\x00\x00\xe6P\x00\x00\xe6\x9c\x00\x00\xe7\x18\x00\x00\xe7\xf8\x00\x00\xe8\xc4\x00\x00\xe9T\x00\x00\xea0\x00\x00\xea\xf8\x00\x00\xeb\xc4\x00\x00\xec\xc4\x00\x00\xed\xe0\x00\x00\xee\xf8\x00\x00\xf0\x84\x00\x00\xf1p\x00\x00\xf2\xa4\x00\x00\xf3|\x00\x00\xf4\x84\x00\x00\xf5L\x00\x00\xf6\x00\x00\x00\xf6\xd0\x00\x00\xf78\x00\x00\xf7\xd8\x00\x00\xf8\xb8\x00\x00\xf9l\x00\x00\xfa \x00\x00\xfa\xd4\x00\x00\xfb\x88\x00\x00\xfc(\x00\x00\xfe\f\x00\x00\xfe\xe0\x00\x00\xff\xe8\x00\x01\x008\x00\x01\x00p\x00\x01\x00\xec\x00\x01\x02<\x00\x01\x04(\x00\x01\x04x\x00\x01\x05(\x00\x01\x05\xa0\x00\x01\x06h\x00\x01\a\x14\x00\x01\a\x9c\x00\x01\b$\x00\x01\b\xa8\x00\x01\t\x1c\x00\x01\t\xf0\x00\x01\n\x90\x00\x01\v \x00\x01\vl\x00\x01\v\xe4\x00\x01\f$\x00\x01\fd\x00\x01\f\xac\x00\x01\f\xf0\x00\x01\r\x9c\x00\x01\x0e\x14\x00\x01\x0ep\x00\x01\x0e\xc8\x00\x01\x0f \x00\x01\x0ft\x00\x01\x0f\xc8\x00\x01\x10\x1c\x00\x01\x10\xb4\x00\x01\x11(\x00\x01\x11\xac\x00\x01\x128\x00\x01\x12\xc8\x00\x01\x138\x00\x01\x13\x8c\x00\x01\x13\xe0\x00\x01\x14L\x00\x01\x14\xac\x00\x01\x15|\x00\x01\x15\xe8\x00\x01\x16\xb8\x00\x01\x17H\x00\x01\x17\xc8\x00\x01\x180\x00\x01\x18\x98\x00\x01\x19\b\x00\x01\x1a\x00\x00\x01\x1a\x88\x00\x01\x1a\xe0\x00\x01\x1bp\x00\x01\x1b\xf0\x00\x01\x1cp\x00\x01\x1d\b\x00\x01\x1d\xb0\x00\x01\x1e\x18\x00\x01\x1f|\x00\x01 \x10\x00\x01!\x8c\x00\x01\"\x1c\x00\x01\"\xd4\x00\x01#`\x00\x01$4\x00\x01$\xd8\x00\x01%\xac\x00\x01&\xbc\x00\x01'|\x00\x01'\xbc\x00\x01(l\x00\x01(\x88\x00\x01)\f\x00\x01)\xe0\x00\x01+\x18\x00\x01+\xc4\x00\x01, \x00\x01,\xc8\x00\x01-\\\x00\x01-\xa0\x00\x01.4\x00\x01.\xc4\x00\x01/\xb4\x00\x010\xc4\x00\x011\xac\x00\x012p\x00\x013 \x00\x013\xb0\x00\x014L\x00\x014\xd8\x00\x016\x04\x00\x016d\x00\x017\b\x00\x017\xbc\x00\x018h\x00\x018\xe8\x00\x019l\x00\x019\xfc\x00\x01:\xc0\x00\x01;\xb0\x00\x01<\x98\x00\x01=d\x00\x01>\x00\x00\x01>\x88\x00\x01>\xe8\x00\x01?\x90\x00\x01@@\x00\x01@\xd8\x00\x01B\f\x00\x01B\xa4\x00\x01C,\x00\x01C\xa8\x00\x01DD\x00\x01E\\\x00\x01E\xf8\x00\x01Fh\x00\x01G\x14\x00\x01H@\x00\x01I\f\x00\x01I\xc4\x00\x01J\\\x00\x01K\xa8\x00\x01L\x98\x00\x01M(\x00\x01M\xe8\x00\x01N<\x00\x01N\xb0\x00\x01OH\x00\x01O\xb0\x00\x01PT\x00\x01Q \x00\x01Q\xa4\x00\x01R\x00\x00\x01Rp\x00\x01S|\x00\x01T\x04\x00\x01T\x94\x00\x01U\xf0\x00\x01V\x88\x00\x01W(\x00\x01W\xd4\x00\x01X\x90\x00\x01Y\f\x00\x01Y\x94\x00\x01Z<\x00\x01Z\xb0\x00\x01[l\x00\x01[\xcc\x00\x01]p\x00\x01^\x80\x00\x01_\x88\x00\x01`8\x00\x01`\xac\x00\x01a\xec\x00\x01bx\x00\x01b\xe0\x00\x01cx\x00\x01d$\x00\x01d\xd4\x00\x01e8\x00\x01e\xd0\x00\x01f|\x00\x01gh\x00\x01h\x10\x00\x01h\xa4\x00\x01h\xf4\x00\x01i\xb4\x00\x01j0\x00\x01j\x94\x00\x01j\xf4\x00\x01kX\x00\x01k\xd8\x00\x01l8\x00\x01l\xb0\x00\x01mp\x00\x01n,\x00\x01o@\x00\x01o\x98\x00\x01p\x18\x00\x01p\xc8\x00\x01qH\x00\x01r\x04\x00\x01r\\\x00\x01r\xd8\x00\x01s\x9c\x00\x01t\x84\x00\x01uL\x00\x01u\xc4\x00\x01v\x84\x00\x01w\xa8\x00\x01x<\x00\x01x\xe0\x00\x01y\\\x00\x01y\xc8\x00\x01zX\x00\x01{$\x00\x01{\xf8\x00\x01|\xb4\x00\x01}d\x00\x01}\xec\x00\x01~`\x00\x01\u007f\x14\x00\x01\u007fh\x00\x01\x80\b\x00\x01\x80\xac\x00\x01\x81\x84\x00\x01\x82 \x00\x01\x82\x98\x00\x01\x83 \x00\x01\x85T\x00\x01\x86\x18\x00\x01\x86\x94\x00\x01\x87x\x00\x01\x87\xe8\x00\x01\x88\xd4\x00\x01\x89\\\x00\x01\x8aD\x00\x01\x8b\xc8\x00\x01\x8c`\x00\x01\x8d`\x00\x01\x8e\x10\x00\x01\x8e|\x00\x01\x8f\x80\x00\x01\x90|\x00\x01\x91\x04\x00\x01\x91\x88\x00\x01\x92\x00\x00\x01\x92\xc4\x00\x01\x93\x80\x00\x01\x94\b\x00\x01\x95\f\x00\x01\x95\xe0\x00\x01\x96\xb8\x00\x01\x97\x90\x00\x01\x988\x00\x01\x98\xa8\x00\x01\x99\xa4\x00\x01\x9a0\x00\x01\x9a\xc4\x00\x01\x9bX\x00\x01\x9c0\x00\x01\x9dT\x00\x01\x9e0\x00\x01\x9f\x18\x00\x01\x9f\xa4\x00\x01\xa0(\x00\x01\xa0\xc8\x00\x01\xa2t\x00\x01\xa2\xe8\x00\x01\xa3x\x00\x01\xa3\xf8\x00\x01\xa4P\x00\x01\xa5t\x00\x01\xa6\xb4\x00\x01\xa7\xe0\x00\x01\xa8\xb8\x00\x01\xa94\x00\x01\xa9\xdc\x00\x01\xaa\x94\x00\x01\xab\x88\x00\x01\xacL\x00\x01\xac\xf0\x00\x01\xae\x14\x00\x01\xae\xf8\x00\x01\xb00\x00\x01\xb1\f\x00\x01\xb2\f\x00\x01\xb3 \x00\x01\xb3\xbc\x00\x01\xb4\xb0\x00\x01\xb5\xac\x00\x01\xb6X\x00\x01\xb7\x10\x00\x01\xb7x\x00\x01\xb8\xac\x00\x01\xba$\x00\x01\xbb\b\x00\x01\xbb\xac\x00\x01\xbc\x88\x00\x01\xbd\xb0\x00\x01\xbe(\x00\x01\xbe\xe4\x00\x01\xbf\x88\x00\x01\xc0 \x00\x01\xc0\xf8\x00\x01\xc1\x90\x00\x01\xc2<\x00\x01°\x00\x01\xc3\\\x00\x01ì\x00\x01\xc4@\x00\x01\xc4\xc4\x00\x01\xc5H\x00\x01\xc5\xcc\x00\x01Ƭ\x00\x01\xc7\x18\x00\x01ǘ\x00\x01\xc8P\x00\x01\xc8\xe0\x00\x01\xc9x\x00\x01\xca\x14\x00\x01\xca\xec\x00\x01\xcb|\x00\x01\xcc$\x00\x01\xcc\xe0\x00\x01͔\x00\x01\xce\\\x00\x01\xce\xe8\x00\x01\xcf`\x00\x01\xd0L\x00\x01\xd0\xc8\x00\x01\xd1L\x00\x01\xd2\x04\x00\x01\xd2l\x00\x01\xd3\x14\x00\x01\xd4\x18\x00\x01\xd5,\x00\x01՜\x00\x01\xd6D\x00\x01\xd6\xec\x00\x01\u05cc\x00\x01\xd8l\x00\x01\xd8\xe0\x00\x01\xd9H\x00\x01\xd9\xf0\x00\x01ڜ\x00\x01\xdb\xcc\x00\x01ܠ\x00\x01\xdd(\x00\x01\xdd\xf8\x00\x01\xde\xe8\x00\x01ߤ\x00\x01\xe1\x84\x00\x01\xe24\x00\x01\xe3H\x00\x01\xe3\xc0\x00\x01\xe4\xd0\x00\x01\xe5\xac\x00\x01\xe6L\x00\x01\xe7\b\x00\x01\xe7\xc0\x00\x01\xe8H\x00\x01\xe8\xc0\x00\x01\xe9h\x00\x01\xea\xb8\x00\x01\xec0\x00\x01\xed|\x00\x01\xeeD\x00\x01\xf0\xbc\x00\x01\xf1\x8c\x00\x01\xf2d\x00\x01\xf2\xe8\x00\x01\xf3\x9c\x00\x01\xf4P\x00\x01\xf5\xf0\x00\x01\xf6\xdc\x00\x01\xf7\xfc\x00\x01\xf8`\x00\x01\xfa\x10\x00\x01\xfa\xf0\x00\x01\xfbT\x00\x01\xfb\xe4\x00\x01\xfc\xe4\x00\x01\xfe\x04\x00\x01\xfe\xc8\x00\x01\xff\xa0\x00\x02\x01\f\x00\x02\x02\xb4\x00\x02\x03\xc0\x00\x02\x050\x00\x02\x05\xc8\x00\x02\x06\x9c\x00\x02\bl\x00\x02\tH\x00\x02\n\xb0\x00\x02\f\xa8\x00\x02\r\x14\x00\x02\r\xa0\x00\x02\x0eP\x00\x02\x0f\x00\x00\x02\x0f\x84\x00\x02\x10h\x00\x02\x11T\x00\x02\x12\\\x00\x02\x13\f\x00\x02\x13\xac\x00\x02\x14d\x00\x02\x15\x10\x00\x02\x15\xc0\x00\x02\x16\x8c\x00\x02\x17\xac\x00\x02\x18T\x00\x02\x19$\x00\x02\x19\xb8\x00\x02\x1a,\x00\x02\x1b\f\x00\x02\x1c\x1c\x00\x02\x1c\x90\x00\x02\x1dT\x00\x02\x1d\xec\x00\x02\x1e\x9c\x00\x02\x1f\x90\x00\x02 \x8c\x00\x02!\x04\x00\x02!\xac\x00\x02\"\x88\x00\x02#\x18\x00\x02%\x04\x00\x02& \x00\x02'H\x00\x02'\xdc\x00\x02(d\x00\x02*\x90\x00\x02+\x1c\x00\x02,\b\x00\x02,\xc4\x00\x02-\xa8\x00\x02.H\x00\x02/@\x00\x02/\xd0\x00\x020$\x00\x021\x04\x00\x021\xd8\x00\x0228\x00\x023\b\x00\x023\x80\x00\x024`\x00\x024\x98\x00\x026\x14\x00\x026\xf0\x00\x028D\x00\x028\xfc\x00\x029\x84\x00\x02:\x84\x00\x02:\xf8\x00\x02;\xf0\x00\x02=0\x00\x02>\b\x00\x02?4\x00\x02@\xb8\x00\x02BX\x00\x02C\xbc\x00\x02D\x94\x00\x02E\xa8\x00\x02F\x80\x00\x02Gp\x00\x02H\xe0\x00\x02I\xa4\x00\x02J`\x00\x02K\x1c\x00\x02K\xc8\x00\x02ML\x00\x02N\x10\x00\x02N\xd4\x00\x02P(\x00\x02P\xf8\x00\x02Q\x90\x00\x02R(\x00\x02S\f\x00\x02S\xa0\x00\x02UP\x00\x02VP\x00\x02W\x14\x00\x02X(\x00\x02X\xac\x00\x02Y\xf8\x00\x02Z\xd0\x00\x02[$\x00\x02\\\xa4\x00\x02]\x04\x00\x02]d\x00\x02^\f\x00\x02^h\x00\x02_\xa8\x00\x02`P\x00\x02`\xb0\x00\x02a\\\x00\x02a\xc4\x00\x02b\x88\x00\x02c$\x00\x02c\xec\x00\x02d\xdc\x00\x02e\xb8\x00\x02f\x94\x00\x02f\xe8\x00\x02g\x80\x00\x02hh\x00\x02iD\x00\x02j0\x00\x02j\xec\x00\x02l \x00\x02m \x00\x02n\x94\x00\x02o\xc4\x00\x02p\x1c\x00\x02p\xbc\x00\x02q\x8c\x00\x02rD\x00\x02r\xb0\x00\x02s\xb0\x00\x02tL\x00\x02t\x9c\x00\x02t\xe0\x00\x02u\xa4\x00\x02v$\x00\x02v\xc0\x00\x02v\xf0\x00\x02w\xac\x00\x02xX\x00\x02x\xc4\x00\x02y\xd4\x00\x02z4\x00\x02z\xe4\x00\x02{x\x00\x02|\f\x00\x02|\xb8\x00\x02}X\x00\x02}\xf8\x00\x02~\xb0\x00\x02\u007f(\x00\x02\u007f\xf8\x00\x02\x80`\x00\x02\x83\x9c\x00\x02\x84\xf0\x00\x02\x85\x80\x00\x02\x86\xb0\x00\x02\x87 \x00\x02\x87\xb0\x00\x02\x88\xac\x00\x02\x89`\x00\x02\x8a@\x00\x02\x8b$\x00\x02\x8c\b\x00\x02\x8c\xf0\x00\x02\x8d\xdc\x00\x02\x8e\xc8\x00\x02\x8f\xcc\x00\x02\x90D\x00\x02\x90\xdc\x00\x02\x91h\x00\x02\x91\xb4\x00\x02\x92\x1c\x00\x02\x92\xdc\x00\x02\x93\xc4\x00\x01\xff\xfa\xff\xc0\x02\x06\x01\xc0\x00\x17\x00\x00\x01\a\x1532\x16\x15\x14+\x01\"546;\x015'&63!2\x16\x01\xf6\xd68\x11\x17\b\xf0\b\x17\x118\xd6\x10\x11\x17\x01\xbc\x17\x11\x01\x86\xd6\xc0\x17\x11\b\b\x11\x17\xc0\xd6\x10**\x00\x00\x00\x00\x01\x00\x00\xff\xc0\x02\x00\x01\xc0\x00 \x00\x00\x01632\x1e\x01\x15\x11\x14\x06\"&4632\x175\x05\x15\x14\x06\"&4632\x17\x11467\x01\xd6\x05\x05\t\x0e\t8P88(\x10\x10\xff\x008P88(\x10\x10\r\t\x01\xbe\x02\t\x0e\t\xfe\xa0\x1b%%6%\x04\xb9K\xea\x1b%%6%\x04\x01\x05\n\x12\x03\x00\x02\x00\x00\xff\xbf\x02\x00\x01\xc0\x00\x19\x00!\x00\x00%\x16\x14\x0f\x01\x06\"/\x01&=\x01\x06#\"&462\x16\x15\x14\a32\x17&264&\"\x06\x14\x01\xf9\a\a\x1c\a\x14\ad\a8HVzz\xacz,\x10\n\a\xfajKKjK\x05\a\x14\a\x1c\a\ad\a\n\x10,z\xaczzVH8\a\aKjKKj\x00\x00\x01\xff\xfd\xff\xe0\x02\x03\x01\xa4\x00\x12\x00\x00\x01\x1e\x01\x0f\x01\x06\"/\x01&676\x16\x1f\x017>\x01\x01\xce/\x06+\xc1\n\x1a\n\xc1+\x06/)k&\x14\x14&k\x01\x81(|+\xc8\n\n\xc8+|(#\t'\x14\x14'\t\x00\x01\x00\x0f\xff\xba\x021\x01\xc1\x00\x18\x00\x00\x0162\x1f\x02\x1e\x01\x0f\x01\x17\x16\x06/\x01\a\x06&?\x01'&6?\x01\x01\x03\t(\tA\x92\x14\f\x0ej\x19\x03 \x11\x83\x83\x11 \x03\x19j\x0e\f\x14\x92\x01\xae\x12\x12\x84\x16\x02&\x0eg\x92\x13\x17\tDD\n\x18\x13\x92g\x0e&\x02\x16\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\a\x00\x1b\x00\x00$\"&462\x16\x14\a2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x1627\x01\x15jKKjK&7O\x1c\x14\xfe\xa0\x14\x1cO7\x11#L#\xc0KjKKjkO7*\x14\x1c\x1c\x14*7O\x10\x10\x00\x00\x00\x00\t\x00\x00\x00\x00\x02\x00\x01\x80\x00/\x00;\x00G\x00S\x00_\x00k\x00w\x00\x83\x00\x8f\x00\x00\x012\x16\x15\x11\x14\x06+\x0154+\x01\"\x1d\x01!54+\x01\"\x1d\x01#\"&5\x1146;\x01\x15\x14;\x012=\x01!\x15\x14;\x012=\x01\x0154+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x0554+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x1754+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x01\xe8\n\x0e\x0e\n\b\f(\f\xfe\xc0\f(\f\b\n\x0e\x0e\n\b\f(\f\x01@\f(\f\xfe\x80\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\x01\x10\f\xc8\f\f\xc8\f\f\xc8\f\f\xc8\fp\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\x01\x80\x0e\n\xfe\xb0\n\x0e\x14\f\f\x14\x14\f\f\x14\x0e\n\x01P\n\x0e\x14\f\f\x14\x14\f\f\x14\xfe\xcc(\f\f(\fl(\f\f(\fl(\f\f(\f\xc4`\f\f`\f\xb4`\f\f`\f\x8c(\f\f(\fl(\f\f(\fl(\f\f(\f\x00\x00\x04\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00\x00\x0132\x16\x1d\x01\x14\x06+\x01\"&=\x0146#2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x0346;\x012\x16\x1d\x01\x14\x06+\x01\"&5\x05\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\x01(\xc0\n\x0e\x0e\n\xc0\n\x0e\x0eF\n\x0e\x0e\n\xc0\n\x0e\x0e\n\x18\x0e\n\xc0\n\x0e\x0e\n\xc0\n\x0e\x01(\n\x0e\x0e\n\xc0\n\x0e\x0e\n\x01\xa0\x0e\n\xa0\n\x0e\x0e\n\xa0\n\x0e\x0e\n\xa0\n\x0e\x0e\n\xa0\n\x0e\xfe\xf8\n\x0e\x0e\n\xa0\n\x0e\x0e\n\x18\x0e\n\xa0\n\x0e\x0e\n\xa0\n\x0e\x00\x00\t\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00 \x000\x00B\x00R\x00b\x00r\x00\x82\x00\x92\x00\x00\x13\x15\x14\x06+\x01\"&=\x0146;\x012\x16\x17\x14\x0e\x01+\x01\"&=\x0146;\x012\x16\x15746;\x012\x16\x1d\x01\x14\x06+\x01\"&5#\x14\x0e\x02+\x01\"&=\x0146;\x012\x16\x15\a2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\a46;\x012\x16\x1d\x01\x14\x06+\x01\"&5%\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\a\"&=\x0146;\x012\x16\x1d\x01\x14\x06#%46;\x012\x16\x1d\x01\x14\x06+\x01\"&5\x95\x0e\ne\n\x0e\x0e\ne\n\x0e\xb6\a\v\x06f\n\x0e\x0e\nf\n\x0e \x0e\ne\n\x0e\x0e\ne\n\x0e \x04\a\b\x05f\n\x0e\x0e\nf\n\x0e\xce\n\x0e\x0e\ne\n\x0e\x0e\n\x18\x0e\ne\n\x0e\x0e\ne\n\x0e\x01\x83\n\x0e\x0e\ne\n\x0e\x0e\ne\n\x0e\x0e\ne\n\x0e\x0e\n\xfe\xcd\x0e\nf\n\x0e\x0e\nf\n\x0e\x01\x88P\n\x0e\x0e\nP\n\x0e\x0e\xfa\a\v\x06\x0e\nP\n\x0e\x0e\n\xa0\n\x0e\x0e\nP\n\x0e\x0e\n\x05\t\x06\x04\x0e\nP\n\x0e\x0e\n\x88\x0e\nP\n\x0e\x0e\nP\n\x0e\xb8\n\x0e\x0e\nP\n\x0e\x0e\n\x88\x0e\nP\n\x0e\x0e\nP\n\x0e\xa0\x0e\nP\n\x0e\x0e\nP\n\x0eh\n\x0e\x0e\nP\n\x0e\x0e\n\x00\x00\x00\x00\x06\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00O\x00_\x00\x007\x15\x14\x06+\x01\"&=\x0146;\x012\x16\a46;\x012\x16\x1d\x01\x14\x06+\x01\"&5\x132\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x13\"&=\x01463!2\x16\x1d\x01\x14\x06#\x01463!2\x16\x1d\x01\x14\x06#!\"&5\x17\"&=\x01463!2\x16\x1d\x01\x14\x06#\x95\x0e\ne\n\x0e\x0e\ne\n\x0e\x95\x0e\ne\n\x0e\x0e\ne\n\x0e}\n\x0e\x0e\ne\n\x0e\x0e\n\xb5\n\x0e\x0e\n\x01\x1b\n\x0e\x0e\n\xfe\xcd\x0e\n\x01\x1b\n\x0e\x0e\n\xfe\xe5\n\x0e\x18\n\x0e\x0e\n\x01\x1b\n\x0e\x0e\n\xe8P\n\x0e\x0e\nP\n\x0e\x0e\xaa\n\x0e\x0e\nP\n\x0e\x0e\n\x01\xa8\x0e\nP\n\x0e\x0e\nP\n\x0e\xfe@\x0e\nP\n\x0e\x0e\nP\n\x0e\x01\xa8\n\x0e\x0e\nP\n\x0e\x0e\n\xb8\x0e\nP\n\x0e\x0e\nP\n\x0e\x00\x00\x00\x01\x00\x00\x00\x01\x02\x00\x01\u007f\x00\x14\x00\x007'&4?\x0162\x1f\x01762\x1f\x01\x16\x14\a\x01\x06\"\xae\xa7\a\a%\a\x15\bp\xf0\b\x15\a%\a\a\xfe\xd9\a\x16\t\xa6\a\x16\a$\b\bp\xf0\b\b$\a\x16\a\xfe\xda\b\x00\x00\x00\x01\xff\xff\x00\x0f\x01a\x01q\x00#\x00\x007\x17\x16\x14\x0f\x01\x06\"/\x01\a\x06\"/\x01&4?\x01'&4?\x0162\x1f\x01762\x1f\x01\x16\x14\a\xf3d\t\t\x16\n\x1a\tdd\t\x1a\n\x16\t\tdd\t\t\x16\n\x1a\tdd\t\x1a\n\x16\t\t\xc0d\t\x1a\n\x16\t\tdd\t\t\x16\n\x1a\tdd\t\x1a\n\x16\t\tdd\t\t\x16\n\x1a\t\x00\x00\x00\x03\x00\x00\xff\xbf\x02\x00\x01\xc0\x00\x1b\x005\x00=\x00\x00\x01\x15\x14+\x01\x15\x14+\x01\"=\x01#\"=\x014;\x0154;\x012\x1d\x0132\x13\a\x06\"/\x01&=\x01\x06#\"&462\x16\x15\x14\a32\x1f\x01\x16\x14&4&\"\x06\x14\x162\x010\f8\f \f8\f\f8\f \f8\f\xc9\x1c\a\x14\ad\a8HVzz\xacz,\x10\n\ad\a\xa8PpPPp\x01\x00 \f8\f\f8\f \f8\f\f8\xfe\xd7\x1c\a\ad\a\n\x10,z\xaczzVH8\ad\a\x14\xcepPPpP\x00\x03\x00\x00\xff\xbf\x02\x00\x01\xc0\x00\v\x00%\x00-\x00\x00\x01\x15\x14+\x01\"=\x014;\x012\x13\a\x06\"/\x01&=\x01\x06#\"&462\x16\x15\x14\a32\x1f\x01\x16\x14&4&\"\x06\x14\x162\x010\f\xa8\f\f\xa8\f\xc9\x1c\a\x14\ad\a8HVzz\xacz,\x10\n\ad\a\xa8PpPPp\x01\x00 \f\f \f\xfe\xd7\x1c\a\ad\a\n\x10,z\xaczzVH8\ad\a\x14\xcepPPpP\x00\x02\x00\a\xff\xc7\x01\xf8\x01\xc0\x00)\x009\x00\x00\x01\x1e\x01\x15\x14\x06#\".\x0154>\x0176\x16\x1f\x01\x16\x06\a\x0e\x03\x15\x14\x1632654&'.\x01?\x01>\x01\a\x14\x06+\x01\"&=\x0146;\x012\x16\x15\x01\x9008\x91gCrC\x1a. \t\x15\x05\x10\x04\x04\a\x10\x19\x11\nbFEc$ \a\x04\x04\x10\x05\x15_\x0e\n \n\x0e\x0e\n \n\x0e\x01\x8a\"k=g\x91BrD)L>\x17\x06\x05\t\x1c\b\x12\x05\f\x1d\"'\x15EcbG'G\x18\x05\x12\b\x1c\t\x05\xd8\n\x0e\x0e\n\xf0\n\x0e\x0e\n\x00\x00\x05\x00\x18\xff\xc0\x02h\x01\xc0\x00\x0f\x00\x1f\x00/\x00?\x00O\x00\x0072\x16\x1d\x01\x14\x06+\x01\"&=\x01463\a2\x16\x1d\x01\x14\x06+\x01\"&=\x01463%2\x16\x15\x11\x14\x06+\x01\"&5\x1146372\x16\x15\x11\x14\x06+\x01\"&5\x1146372\x16\x15\x11\x14\x06+\x01\"&5\x11463\xd8\a\t\t\a0\a\t\t\aP\a\t\t\a0\a\t\t\a\x010\a\t\t\a0\a\t\t\a\xb0\a\t\t\a0\a\t\t\a\xb0\a\t\t\a0\a\t\t\a\xa0\t\a\xc0\a\t\t\a\xc0\a\t`\t\a`\a\t\t\a`\a\t\xc0\t\a\xfe\xe0\a\t\t\a\x01 \a\t`\t\a\xfe\x80\a\t\t\a\x01\x80\a\t`\t\a\xfe \a\t\t\a\x01\xe0\a\t\x00\x00\x00\x02\x00\x10\xff\xc1\x01\xf0\x01\xbf\x00<\x00D\x00\x00%\x16\a\x06\a\x06/\x01\x06\a\x15\x14\a\x06'&=\x01&'\a\x06'&'&?\x01&47'&7676\x1f\x01675476\x17\x16\x1d\x01\x16\x1776\x17\x16\x17\x16\x0f\x01\x16\a\x06264&\"\x06\x14\x01\xe7\t\x03\x11&\x06\b+\x1b\"\t76\n\"\x1b*\t\x06&\x11\x03\t*\x03\x03*\t\x03\x11&\x06\t*\x1b\"\t77\t\"\x1b*\t\x06&\x11\x03\t*\x06\x06\xdeB//B/\x84\x04\n5)\a\x04\x19\x17\f1\n\x02\f\f\x02\n1\f\x17\x19\x04\a)5\t\x05\x19\x11$\x11\x19\x04\n5)\a\x05\x18\x17\f1\n\x02\f\f\x02\n1\f\x17\x19\x04\a)5\n\x04\x19##-/B//B\x00\x00\x02\xff\xff\xff\xe0\x02A\x01\xa0\x00\x1e\x00D\x00\x00\x0162\x1f\x01\x15\x14\x06+\x01\"&=\x014.\x01+\x01\"\x06\x1d\x01\x14\x06+\x01\"&=\x01%\x16\x15\x14\x0f\x01\x06#\"/\x01&\"\x0f\x01\x06#\"/\x01&54?\x0162\x1f\x01546;\x012\x16\x1d\x01\x01\x18\x04\b\x04\xb8\t\ap\a\t\x04\b\x04@\a\t\t\ap\a\t\x01\xdc\x04\x03\x19\x04\x05\x05\x03\xeb\x04\b\x04\xeb\x03\x04\x06\x04\x19\x03\x04\xfd\x0e\"\rZ\a\x058\x05\a\x01,\x02\x02\x98\xa4\a\t\n\x06`\x04\b\x04\t\a`\x06\n\t\a\xa41\x04\x06\x04\x03\x1f\x05\x03\xc2\x02\x02\xc2\x03\x05\x1f\x03\x04\x06\x04\xd0\v\vJI\x05\a\a\x05\x8b\x00\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x17\x00\x00\x122\x16\x14\x06\"&4\x05\x16?\x016/\x0154+\x01\"\x1d\x01\x14\x17\x99Α\x91Α\x011\n\a\x1c\a\t@\f0\f\x05\x01\xb8\x91Α\x91\xce\xcd\a\t'\n\a.\x8a\f\f\xa8\x06\x04\x00\x00\x00\x03\xff\xfb\x00\x00\x02E\x01\x80\x00\"\x000\x00B\x00\x00%\x16\x06+\x01'4&+\x01\"\x0e\x01\x15\a#\"&7\x136;\x01\a\x14\x16;\x01265'32\x17\x0f\x01\x06\x16;\x0126/\x01&+\x01\"\x172>\x015'4&+\x01\"\x06\x15\a\x14\x1e\x013\x02=\a\x12\x11\xc4\v\t\aD\x04\a\x05\v\xc4\x11\x12\a\x8c\b\x13b\x03\x05\x03\x1e\x03\x05\x03b\x13\b\xad\x04\x01\a\x06(\x06\a\x01\x04\x01\a(\a7\x04\b\x04\x06\t\x06.\x06\t\x06\x04\b\x04-\x10\x1db\x06\b\x04\x06\x04b\x1d\x10\x01@\x13\x17\x04\x05\x05\x04\x17\x134,\x05\b\b\x05,\a\xb0\x05\b\x050\x06\b\b\x060\x05\b\x05\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x15\x00+\x003\x00;\x00\x00\x1332\x16\x1d\x0132\x16\x0f\x01\x06\"/\x01&6;\x01546\x01\x15\x14\x06#!\"&=\x0146;\x01\x17\x162?\x0132\x16\x064&\"\x06\x14\x16264&\"\x06\x14\x162\xd8P\n\x0eX\r\n\t\x98\x06\x10\x06\x98\t\n\rX\x0e\x012\x0e\n\xfe0\n\x0e\x0e\n\x931\x0f*\x0f1\x93\n\x0e|\f\x10\f\f\x10L\f\x10\f\f\x10\x01\xc0\x0e\n\xa8\x19\t\x98\x06\x06\x98\t\x19\xa8\n\x0e\xfe\x88p\n\x0e\x0e\np\n\x0e1\x0f\x0f1\x0ej\x10\f\f\x10\f\f\x10\f\f\x10\f\x00\x02\x00\x00\x00\x00\x02@\x01\x80\x00\x16\x00\x1e\x00\x00%\x16\x1d\x01\x14\x06#!\"&=\x014?\x01>\x023!2\x16\x17\x05\a3\x17373'\x028\b\x1c\x14\xfe \x14\x1c\bj\x04\r\x10\a\x01\f\v\x17\x06\xfe\xd4U{ p {U\xcc\f\x0f\x81\x14\x1c\x1c\x14\x81\x0f\f\x9f\x05\n\x06\r\b+\x80@@\x80\x00\x00\x00\x00\x01\x00\a\xff\xc8\x02\x01\x01\xc0\x00<\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146303\x17.\x01#\"\x06\x14\x163267632\x1f\x01\x16\x15\x14\a\x0e\x03#\".\x0154632\x1e\x01\x17'41463\x01\xf4\x05\a\a\x05\xc8\x05\a\a\x05\x01e\x16U'IggI\x1cD\x14\x04\x04\x05\x04\"\x03\x04\x0e)-.\x14CsB\x92f\x1fIA\x14\x04\a\x05\x01\xc0\a\x05\xc8\x05\a\a\x05/\x05\a\x05 .g\x92g\x1a\x12\x03\x04\"\x03\x05\x06\x03\r\x18\x11\nBrDf\x92\x17)\x17R\x01\x05\a\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00*\x00T\x00\x00\x014146;\x012\x1d\x01\x14\x06+\x01\"&=\x01463\x17.\x01#\"\x06\a\x06+\x01\"&545>\x0132\x1e\x01\x17\x032676;\x012\x16\x15\x14\a\x0e\x01#\"&'\x17\x141\x14\x06+\x01\"=\x0146;\x012\x16\x1d\x01\x14\x06#'\x1e\x01\x01\xb9\a\x05/\f\a\x05\xc8\x05\a\a\x05f\x16U':d\r\x02\n1\x05\a\x11\x89Z\x1fIA\x14\xbd9d\x0e\x02\n1\x05\a\x01\x10\x89Z0n\x1f\x04\a\x05/\f\a\x05\xc8\x05\a\a\x05f\x15V\x01\xb3\x01\x05\a\f\xc8\x05\a\a\x05/\x05\a\x05 .O8\t\a\x05\x01\x01Ws\x17)\x17\xfe\xafO8\t\a\x05\x01\x01Ws3$R\x01\x05\a\f\xc8\x05\a\a\x05/\x05\a\x05 .\x00\x00\x00\a\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x17\x00\x1f\x00'\x003\x00?\x00K\x00\x00\x05!\"&5\x11463!2\x16\x15\x11\x14\x06\x00\"\x06\x14\x16264\x06\"\x06\x14\x16264\x06\"\x06\x14\x16264754+\x01\"\x1d\x01\x14;\x012\x1554+\x01\"\x1d\x01\x14;\x012\x1554+\x01\"\x1d\x01\x14;\x012\x01\xd0\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x1c\xfe\xad\"\x17\x17\"\x17\x17\"\x17\x17\"\x17\x17\"\x17\x17\"\x17\xf8\f\xc8\f\f\xc8\f\f\xc8\f\f\xc8\f\f\xc8\f\f\xc8\f \x1c\x14\x01`\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x01h\x17\"\x17\x17\"I\x17\"\x17\x17\"I\x17\"\x17\x17\"\x9f \f\f \fT \f\f \fT \f\f \f\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x17\x00\x1f\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x015462\x16\x1d\x01#54&\"\x06\x1d\x01\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x18Y~YP*<*\xe0\x1c\x14\xc0\x14\x1c\x1c\x14\xc0\x14\x1cH?YY?HH\x1e**\x1eH\x00\x00\x01\x00\b\xff\xc0\x02\x00\x01\xc1\x00'\x00\x00\x01276\x16\x1d\x01\x14\a\x06#\"&#\"\a\x15\x14\x06+\x01\"&5\x11&546\x17\x1e\x01\x17\x14\x15\x14\a62\x16\x01^0E\x0f\x1e\x0e;?$h\x1a>4\x0e\n\x10\n\x0e\x18\"\x18\x16\x1f\x01\x04!Gh\x01] \a\x12\x12\xf3\x11\t)#\x17^\n\x0e\x0e\n\x01\x82\x11\x1d\x18!\x01\x01\x1e\x15\x02\x02\n\n\f#\x00\x01\x00\x00\xff\xe0\x02\x00\x01\xa0\x001\x00\x00\x122\x16\x1d\x01\x14\x06\x0f\x01\x0e\x01+\x01\"&=\x0146;\x012\x1754&\"\x06\x1d\x016;\x012\x16\x1d\x01\x14\x06+\x01\"&/\x01.\x01=\x014\x96Ԗ\n\b\x0e\x02A-\x18\n\x0e\x0e\n\x18/!q\x9eq!/\x18\n\x0e\x0e\n\x18-A\x02\x0e\b\n\x01\xa0\x96j0\b\x11\x04\a-?\x0e\n\xb0\n\x0e\"\x02OqqO\x02\"\x0e\n\xb0\n\x0e?-\a\x04\x11\b0j\x00\x00\x01\x00\x00\xff\xfc\x01\x00\x01\x84\x00\x11\x00\x00\x136\x16\x15\x11\x14\x06/\x01#\"&=\x0146;\x01\xd7\v\x1e\x1e\vYf\n\x0e\x0e\nf\x01y\v\f\x10\xfe\xb0\x10\f\vY\x0e\n\x90\n\x0e\x00\x02\x00\x00\xff\xfa\x01\x81\x01\x84\x00\x11\x00#\x00\x00\x136\x16\x15\x11\x14\x06/\x01#\"&=\x0146;\x01\x17\x1e\x01\x14\x06\a\x06.\x016764'.\x01>\x01\xd7\v\x1e\x1e\vYf\n\x0e\x0e\nf\xd4\x15\x19\x19\x15\b\x14\t\x05\t\x15\x15\t\x05\t\x14\x01x\v\f\x10\xfe\xb0\x10\f\vY\x0e\n\x90\n\x0e\x13\f)0)\f\x05\x06\x11\x13\x05\f.\f\x05\x13\x11\x06\x00\x00\x00\x04\x00\x00\xff\xce\x02@\x01\xb2\x00\x11\x00'\x00>\x00P\x00\x00\x136\x16\x15\x11\x14\x06/\x01#\"&=\x0146;\x01%\x1e\x01\x14\x06\a\x06.\x0167>\x0254&'.\x01>\x01\x16\x14\x06\a\x06&'&67>\x024.\x01'.\x01>\x01\x17\x16\a\x1e\x01\x14\x06\a\x06.\x016764'.\x01>\x01\xd7\v\x1e\x1e\vYf\n\x0e\x0e\nf\x01B\x02;\x012\x16\x1f\x0132\x16\x064&\"\x06\x14\x1626\x14\x06\"&462\x02\x00\x1c\x14\xfe`\x14\x1c\x1c\x14X\f\x04\r\x12\n~\x0f\x18\x06\fX\x14\x1c\x88FdFFd&4H44H\x010\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c!\t\x0e\b\x11\x0e!\x1c\xd6dFFdF\x9cH44H4\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00-\x000\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x01'#\a32\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x01\x13>\x01;\x012\x16\x17\x13'3'\x01\xb0\a\t\t\a\x80\a\t\t\a\x14\x18\x98\x18\x14\a\t\t\a\x80\a\t\t\a\x17\x83\x03\x12\t0\t\x12\x03\x83\xe8^/ \t\a \a\t\t\a \a\t@@\t\a \a\t\t\a \a\t\x01j\t\r\r\t\xfe\x96\x90\x81\x00\x03\x00\x12\xff\xe0\x01\x84\x01\xa0\x00\x1d\x00%\x00-\x00\x00%\x1e\x01\a\x0e\x01+\x01\"&=\x0146;\x01\x11#\"&=\x0146;\x012\x16\a\x06'\x153264&#\x11264&+\x01\x15\x01M\x1b\x1c\x04\x05R6\xd1\a\t\t\a \a\t\t\a\xc79L\x06\x03\xd3W\x14\x1c\x1c\x14\x18 \x18W\xd2\x15?$4F\t\a0\a\t\x01 \t\a0\a\tT9$a`\x1c(\x1c\xfe\xe0!.!p\x00\x00\x01\x00\x00\xff\xe0\x01@\x01\xa0\x00#\x00\x00\x01\x15\x14\x06+\x01\x0332\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x01\x13#\"&=\x0146;\x012\x16\x01@\t\a?P/\a\t\t\a\xc0\a\t\t\a?P/\a\t\t\a\xc0\a\t\x01\x90 \a\t\xfe\xc0\t\a \a\t\t\a \a\t\x01@\t\a \a\t\t\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x02C\x01\xa0\x00-\x00I\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01#\x1132\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x01\x11#\x15\x14\x06+\x01\"&=\x01463\x012\x16\x0f\x01\x06\"/\x01&6;\x015#\"&?\x0162\x1f\x01\x16\x06+\x01\x15\x010\a\t\t\a \a\t8(\a\t\t\a\xa0\a\t\t\a(8\t\a \a\t\t\a\x02 \v\b\bP\x04\x0e\x04P\b\b\v00\v\b\bP\x04\x0e\x04P\b\b\v0\x01\xa0\t\a`\a\t\t\a \xfe\xd0\t\a \a\t\t\a \a\t\x010 \a\t\t\a`\a\t\xfe\xb0\x14\aP\x05\x05P\a\x14\xe0\x14\aP\x05\x05P\a\x14\xe0\x00\x00\x00\x02\x00\x00\xff\xdd\x01\xc0\x01\xa0\x00-\x00I\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01#\x1532\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015#\x15\x14\x06+\x01\"&=\x01463\x01\x17\x16\x14\x0f\x01\x06&=\x01#\x15\x14\x06/\x01&4?\x016\x16\x1d\x013546\x01\xb0\a\t\t\a \a\tx\x18\a\t\t\a\x80\a\t\t\a\x18x\t\a \a\t\t\a\x01[P\x05\x05P\a\x14\xe0\x14\aP\x05\x05P\a\x14\xe0\x14\x01\xa0\t\aP\a\t\t\a\x10p\t\a \a\t\t\a \a\tp\x10\a\t\t\aP\a\t\xfe\xfbP\x04\x0e\x04P\b\b\v00\v\b\bP\x04\x0e\x04P\b\b\v00\v\b\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00\x007\"&=\x01463!2\x16\x1d\x01\x14\x06#\x01\"&=\x01463!2\x16\x1d\x01\x14\x06#\x172\x16\x1d\x01\x14\x06#!\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\r\x05\b\b\x05\x01\x06\x05\b\b\x05\xfe\xfa\x05\b\b\x05\x01\x06\x05\b\b\x05\x9d\a\t\t\a\xfe`\a\t\t\a\x01\xa0\a\t\t\a\xfe`\a\t\t\a`\b\x05&\x05\b\b\x05&\x05\b\x01\x00\b\x05&\x05\b\b\x05&\x05\b@\t\a \a\t\t\a \a\t\xff\x00\t\a \a\t\t\a \a\t\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00\x00\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x13\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\x11#\"&=\x0146;\x012\x16\x1d\x01\x14\x06\x01\xb0\a\t\t\a\xfe`\a\t\t\a\x01\xa0\a\t\t\a\xfe`\a\t\t\a\\\x05\a\a\x05\xe8\x05\a\a\x05\xe8\x05\a\a\x05\xe8\x05\a\a\x01 \t\a \a\t\t\a \a\t\xff\x00\t\a \a\t\t\a \a\t\x01@\a\x05(\x05\a\a\x05(\x05\a\xff\x00\a\x05(\x05\a\a\x05(\x05\a\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00\x007\"&=\x01463!2\x16\x1d\x01\x14\x06#\x152\x16\x1d\x01\x14\x06#!\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x10\a\t\t\a\x01\xa0\a\t\t\a\a\t\t\a\xfe`\a\t\t\a\x01\xa3\x05\b\b\x05\xfe\xfa\x05\b\b\x05\x01\x06\x05\b\b\x05\xfe\xfa\x05\b\b\x05\xe0\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t\x01\x80\b\x05&\x05\b\b\x05&\x05\b\xff\x00\b\x05&\x05\b\b\x05&\x05\b\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x01463%2\x16\x1d\x01\x14\x06#!\"&=\x01463%2\x16\x1d\x01\x14\x06#!\"&=\x01463%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\xb0\a\t\t\a\xfe`\a\t\t\a\x01\xa0\a\t\t\a\xfe`\a\t\t\a\x01\xa0\a\t\t\a\xfe`\a\t\t\a\x01\xa0\a\t\t\a\xfe`\a\t\t\a \t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t\x00\x06\x00\x00\xff\xf0\x02\x00\x01\x90\x00\x0f\x00\x1f\x00/\x00?\x00O\x00_\x00\x0072\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x132\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x052\x16\x1d\x01\x14\x06#!\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x052\x16\x1d\x01\x14\x06#!\"&=\x01463P\a\t\t\a@\a\t\t\a@\a\t\t\a@\a\t\t\a@\a\t\t\a@\a\t\t\a\x01\xe0\a\t\t\a\xfe\xc0\a\t\t\a\x01@\a\t\t\a\xfe\xc0\a\t\t\a\x01@\a\t\t\a\xfe\xc0\a\t\t\aP\t\a@\a\t\t\a@\a\t\x01@\t\a@\a\t\t\a@\a\t\xa0\t\a@\a\t\t\a@\a\t\xb0\t\a \a\t\t\a \a\t\x01@\t\a \a\t\t\a \a\t\xa0\t\a \a\t\t\a \a\t\x00\x00\x00\x05\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\v\x00\x1b\x00+\x00;\x00K\x00\x007'&4?\x016\x16\x1d\x01\x14\x06\x052\x16\x1d\x01\x14\x06#!\"&=\x01463%2\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06#!\"&=\x01463e`\x05\x05`\a\x14\x14\x01D\a\t\t\a\xfe`\a\t\t\a\x01\xa3\x05\b\b\x05\xe6\x05\b\b\x05\xe6\x05\b\b\x05\xe6\x05\b\b\x05\xe3\a\t\t\a\xfe`\a\t\t\aU`\x04\x0e\x04`\b\b\v\xc0\v\b-\t\a \a\t\t\a \a\t\x80\b\x05&\x05\b\b\x05&\x05\b\x80\b\x05&\x05\b\b\x05&\x05\b\x80\t\a \a\t\t\a \a\t\x00\x00\x00\x05\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\v\x00\x1b\x00+\x00;\x00K\x00\x007\x06&=\x0146\x1f\x01\x16\x14\a\x052\x16\x1d\x01\x14\x06#!\"&=\x01463%2\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06#!\"&=\x01463\x1b\a\x14\x14\a`\x05\x05\x015\a\t\t\a\xfe`\a\t\t\a\x01\xa3\x05\b\b\x05\xe6\x05\b\b\x05\xe6\x05\b\b\x05\xe6\x05\b\b\x05\xe3\a\t\t\a\xfe`\a\t\t\aU\b\b\v\xc0\v\b\b`\x04\x0e\x04\x95\t\a \a\t\t\a \a\t\x80\b\x05&\x05\b\b\x05&\x05\b\x80\b\x05&\x05\b\b\x05&\x05\b\x80\t\a \a\t\t\a \a\t\x00\x00\x00\x02\x00\x00\x00\x00\x02@\x01\x80\x00\x0f\x00\x19\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x056\x16\x15\x11\x14\x06/\x015\x01P\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01\xde\x10\"#\x0fn\x01\x80\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c&\v\x11\x14\xff\x00\x14\x11\vK\x9e\x00\x00\x00\x03\x00\x00\x00\x00\x02\x00\x01\x80\x00\x0f\x00\x17\x00\"\x00\x00)\x01\"&5\x11463!2\x16\x15\x11\x14\x06\x00\"\x06\x14\x16264\a!5'&\x0f\x01'&\x0f\x01\x01\xd0\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x1c\xfe\xa3.!!.!h\x01\x80X\b\b\x888\b\bH\x1c\x14\x01 \x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x01H!.!!.\xe7pX\b\b\x888\b\bH\x00\x00\x00\x00\x01\x00\x00\xff\xbf\x01\x80\x01\xc0\x00\x17\x00\x00\x17.\x065462\x16\x15\x14\x0e\x05\a\x06\"\xac\x18=\x1a\"\v\r\x03p\xa0p\x03\r\v\"\x1a=\x18\a\x1a6#X$5\x16\"\x19\x11PppP\x11\x19\"\x165$X#\n\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\r\x00\x006462\x16\x14\x06\"7264&#\b\x91Α\x91\xcegLllLYΑ\x91Α@l\x98l\x00\x00\x02\x00\x00\xff\xc0\x01`\x01\xc1\x00\x11\x00!\x00\x00\x13\x1e\x03\x15\x14\x06\"&54>\x02762\x03264&#\"&54&\"\x06\x15\x14\x16\xcd\x106,!g\x92g!-5\x10\a-\x17\a\t\t\a!/\t\x0e\tB\x01\xaa4_6I&JhhJ&H8^4\x16\xfe@\t\x0e\t/!\a\t\t\a.B\x00\x00\x00\x03\x00\x00\xff\xc0\x02@\x01\xc0\x00\f\x00\x1a\x007\x00\x00\x01\x17\x16\x0f\x02\x06.\x01?\x0267\x16\x14\x0f\x01\x06/\x01&?\x0162\x17\x034?\x016\x16\x1d\x01\x14\x06#!\"&5\x11463!2\x16\x0f\x01\x06+\x01\x11!\x01\x93Z\a\a\xdb\\\x06\v\x06\x01\n\xdb\a\xa9\v\v$\a\aZ\a\a$\v \f\x84\x04(\x05\x0f\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01\x1e\b\x06\x06(\x03\x05\xe6\x01@\x01mZ\a\a\xdb\n\x01\x06\v\x06\\\xdb\a\x10\f \f#\a\aZ\a\a#\f\f\xfe\xb2\x05\x03(\x06\x06\b\x9e\x14\x1c\x1c\x14\x01`\x14\x1c\x0f\x05(\x04\xfe\xc0\x00\x00\x00\x00\x01\x00@\xff\xda\x01\x80\x01\xa6\x00\x15\x00\x00\x17\x114;\x012\x1d\x0176\x16\x15\x11\x14\x06/\x01\x15\x14+\x01\"@\f0\f\xc4\x0f%%\x0f\xc4\f0\f\x14\x01\xa8\f\f\xb0\xb5\r\x12\x14\xfe\x80\x14\x12\r\xb4\xaf\f\x00\x00\x01\x00\x00\xff\xfa\x02\x00\x01\x86\x00\x1f\x00\x005\x114;\x012\x1d\x0176\x16\x1d\x0176\x16\x15\x11\x14\x06/\x01\x15\x14\x06/\x01\x15\x14+\x01\"\f(\f\xac\x0f%\xac\x0f%%\x0f\xac%\x0f\xac\f(\f\f\x01h\f\f\x98\x9d\r\x12\x14\x84\x9d\r\x12\x14\xfe\xc0\x14\x12\r\x9c\x83\x14\x12\r\x9c\x97\f\x00\x02\x00\x00\xff\xfa\x02\x00\x01\x86\x00\v\x00\x17\x00\x007&4?\x016\x16\x15\x11\x14\x06'7&4?\x016\x16\x15\x11\x14\x06'\f\f\f\xc0\x0f%%\x0f@\f\f\xc0\x0f%%\x0f\xa7\n\x1e\n\xa0\r\x12\x14\xfe\xc0\x14\x12\r\xa0\n\x1e\n\xa0\r\x12\x14\xfe\xc0\x14\x12\r\x00\x00\x00\x01\x00\x00\xff\xb8\x01\xc1\x01\xc8\x00\v\x00\x00%\x16\x14\a\x05\x06&5\x1146\x17\x01\xa8\x18\x18\xfe\xa0\x1713\x15\xe9\x0e6\x0e\xd0\x0e\x1b\x1c\x01\xa0\x1e\x19\x0e\x00\x00\x00\x00\x02\x00\x00\xff\xe1\x01\xc0\x01\xa1\x00\x0f\x00\x1f\x00\x00\x17#\"&5\x1146;\x012\x16\x15\x11\x14\x06%\x14\x06+\x01\"&5\x1146;\x012\x16\x15\x90`\x14\x1c\x1c\x14`\x14\x1c\x1c\x01\x1c\x1c\x14`\x14\x1c\x1c\x14`\x14\x1c\x1f\x1c\x14\x01`\x14\x1c\x1c\x14\xfe\xa0\x14\x1c0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\x14\x00\x00\x00\x01\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x00\x02\x00\x00\xff\xfa\x02\x00\x01\x86\x00\v\x00\x17\x00\x00%\x16\x14\x0f\x01\x06&5\x1146\x17\a\x16\x14\x0f\x01\x06&5\x1146\x17\x01\xf4\f\f\xc0\x0f%%\x0f@\f\f\xc0\x0f%%\x0f\xd9\n\x1e\n\xa0\r\x12\x14\x01@\x14\x12\r\xa0\n\x1e\n\xa0\r\x12\x14\x01@\x14\x12\r\x00\x00\x01\x00\x00\xff\xfa\x02\x00\x01\x86\x00\x1f\x00\x00\x01\x11\x14+\x01\"=\x01\a\x06&=\x01\a\x06&5\x1146\x1f\x01546\x1f\x0154;\x012\x02\x00\f(\f\xac\x0f%\xac\x0f%%\x0f\xac%\x0f\xac\f(\f\x01t\xfe\x98\f\f\x98\x9d\r\x12\x14\x84\x9d\r\x12\x14\x01@\x14\x12\r\x9c\x83\x14\x12\r\x9c\x97\f\x00\x00\x01\x00@\xff\xda\x01\x80\x01\xa6\x00\x15\x00\x00\x01\x11\x14+\x01\"=\x01\a\x06&5\x1146\x1f\x0154;\x012\x01\x80\f0\f\xc4\x0f%%\x0f\xc4\f0\f\x01\x94\xfeX\f\f\xb0\xb5\r\x12\x14\x01\x80\x14\x12\r\xb4\xaf\f\x00\x00\x00\x00\x02\xff\xf7\xff\xe0\x01\xc9\x01\xa0\x00\x0f\x00\x1b\x00\x00%\x15\x14\x06#!\"&=\x01463!2\x16%\"&?\x0162\x1f\x01\x16\x06#\x01\xc0\x13\r\xfe\x80\r\x13\x13\r\x01\x80\r\x13\xfep\x1f\x19\x15\xb0\x0e*\x0e\xb0\x15\x19\x1f@@\r\x13\x13\r@\r\x13\x1339\x17\xc0\x10\x10\xc0\x179\x00\x00\x00\x01\x00\x1b\xff\xe5\x01%\x01\x9b\x00\x14\x00\x00?\x0162\x1f\x01\x1e\x01\x0f\x01\x17\x16\x06\x0f\x01\x06\"/\x01&4#\xc2\a\x14\a\x16\a\x01\a\x9b\x9b\a\x01\a\x16\a\x14\a\xc2\b\xd1\xc2\a\a\x16\a\x14\a\x9b\x9b\a\x14\a\x16\a\a\xc2\a\x14\x00\x00\x00\x01\x00\x1b\xff\xe5\x01%\x01\x9b\x00\x14\x00\x00%\a\x06\"/\x01.\x01?\x01'&6?\x0162\x1f\x01\x16\x14\x01\x1d\xc2\a\x14\a\x16\a\x01\a\x9b\x9b\a\x01\a\x16\a\x14\a\xc2\b\xaf\xc2\a\a\x16\a\x14\a\x9b\x9b\a\x14\a\x16\a\a\xc2\a\x14\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00#\x00\x00\x122\x16\x14\x06\"&4\x0554+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132\x99Α\x91Α\x01\x88\f\\\f8\f\\\f\f\\\f8\f\\\f\x01\xb8\x91Α\x91\u03838\f\\\f\f\\\f8\f\\\f\f\\\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x13\x00\x00\x122\x16\x14\x06\"&4\x17!2=\x014#!\"\x1d\x01\x14\x99Α\x91Αt\x01\b\f\f\xfe\xf8\f\x01\xb8\x91Α\x91Ώ\f8\f\f8\f\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00#\x00\x00\x122\x16\x14\x06\"&4\x05'76/\x01&\x0f\x01'&\x0f\x01\x06\x1f\x01\a\x06\x1f\x01\x16?\x01\x17\x16?\x016\x99Α\x91Α\x01rBB\b\b(\b\tAA\t\b(\b\bBB\b\b(\b\tAA\t\b(\b\x01\xb8\x91Α\x91ΨAA\t\b(\b\bBB\b\b(\b\tAA\t\b(\b\bBB\b\b(\b\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x17\x00\x00\x00\x14\x06\"&462\x0376/\x01&\x0f\x01'&\x0f\x01\x06\x1f\x01\x16\x01\xf8\x91Α\x91΄\xb8\f\f\x16\f\v\x96F\v\f\x16\f\fh\v\x01'Α\x91Α\xfe\x85\xb8\v\v\x17\v\v\x96F\v\v\x17\v\vh\f\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00+\x003\x00\x00\x00\x14\x06\"&462\a\"\a\x06\x1f\x01\x167>\x0232\x16\x15\x14\x06\a\x0e\x02\x1d\x01\x14;\x012=\x014>\x0254&\x06\"\x06\x14\x16264\x01\xf8\x91Α\x91\xce`J+\x06\t#\t\a\v\r\x14\r\x11\x1d\x0f\x11\x12\x11\x14\f8\f\x1a\x1f\x1aH &\x1b\x1b&\x1b\x01'Α\x91ΑR@\t\a\x1a\a\t\r\r\n\x13\x0e\v\r\n\n\f\x1e\x13\x04\f\f\x01\t\x12\x10&\x1a*<\xf8\x1b&\x1b\x1b&\x00\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00'\x00\x00\x122\x16\x14\x06\"&4$\"\x06\x14\x16264\x1754+\x0154+\x01\"\x1d\x01\x14;\x01\x15#\"\x1d\x01\x14;\x012\x99Α\x91Α\x01\t\"\x19\x19\"\x19\x0e\f\f\f@\f\f\f\f\f\fX\f\x01\xb8\x91Α\x91\xce#\x19\"\x19\x19\"\xe5\x18\fd\f\f\x18\f@\f\x18\f\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00(\x00P\x00X\x00\x00%2\x1d\x01\x14+\x01\x0e\x02\a\x15\x14+\x01\"=\x01.\x01'#\"=\x014;\x01>\x01754;\x012\x1d\x01\x1e\x01\x17\a>\x017#\"=\x014;\x01.\x01'\x15\x14+\x01\"=\x01\x0e\x01\a32\x1d\x01\x14+\x01\x1e\x01\x1754;\x012\x154\x14\x06\"&462\x01\xf4\f\f\x1e\a3N.\f(\fFe\v\x1e\f\f\x1e\veF\f(\fFe\v\xb6,?\n)\f\f)\n?,\f(\f,?\n)\f\f)\n?,\f(\f\x13\x1a\x13\x13\x1a\xe0\f(\f.N3\a\x1e\f\f\x1e\veF\f(\fFe\v\x1e\f\f\x1e\veF\xb5\n?,\f(\f,?\n)\f\f)\n?,\f(\f,?\n)\f\fy\x1a\x13\x13\x1a\x13\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\r\x00\x13\x00\x00\x122\x16\x14\x06\"&4\x04.\x01\a\x016\x04\x1e\x017\x01\x06\x99Α\x91Α\x01\xaa`\x884\x01\x01&\xfe\x91`\x884\xfe\xff&\x01\xb8\x91Α\x91\xce\x15`\v&\xfe\xff4\x1c`\v&\x01\x014\x00\x00\x00\x00\x01\xff\xff\xff\xe5\x01\xc0\x01\x9b\x00\x1d\x00\x00%\a\x06\"/\x01&4?\x0162\x1f\x01\x16\x06\x0f\x01!2\x16\x1d\x01\x14\x06#!\x17\x1e\x01\x01\x02\x17\a\x14\a\xc2\a\a\xc2\a\x14\a\x17\a\x01\ax\x01\x1f\n\x0e\x0e\n\xfe\xe1x\a\x01\x03\x16\a\a\xc2\a\x14\a\xc2\a\a\x16\a\x14\as\x0e\n \n\x0es\a\x14\x00\x00\x00\x00\x01\x00\x00\xff\xe5\x01\xc1\x01\x9b\x00\x1d\x00\x00\x13762\x1f\x01\x16\x14\x0f\x01\x06\"/\x01&6?\x01!\"&=\x01463!'.\x01\xbe\x17\a\x14\a\xc2\a\a\xc2\a\x14\a\x17\a\x01\ax\xfe\xe1\n\x0e\x0e\n\x01\x1fx\a\x01\x01}\x16\a\a\xc2\a\x14\a\xc2\a\a\x16\a\x14\as\x0e\n \n\x0es\a\x14\x00\x00\x00\x00\x01\x00\x05\xff\xe0\x01\xbb\x01\xa1\x00\x1d\x00\x007'&4?\x0162\x1f\x01\x16\x14\x0f\x01\x06&/\x01\x11\x14\x06+\x01\"&5\x11\a\x0e\x01#\x16\a\a\xc2\a\x14\a\xc2\a\a\x16\a\x14\as\x0e\n \n\x0es\a\x14\x9e\x17\a\x14\a\xc2\a\a\xc2\a\x14\a\x16\b\x01\ax\xfe\xe1\n\x0e\x0e\n\x01\x1fx\a\x01\x00\x01\x00\x05\xff\xdf\x01\xbb\x01\xa0\x00\x1d\x00\x00%\x17\x16\x14\x0f\x01\x06\"/\x01&4?\x016\x16\x1f\x01\x1146;\x012\x16\x15\x117>\x01\x01\x9d\x16\a\a\xc2\a\x14\a\xc2\a\a\x16\a\x14\as\x0e\n \n\x0es\a\x14\xe2\x17\a\x14\a\xc2\a\a\xc2\a\x14\a\x17\a\x01\ax\x01\x1f\n\x0e\x0e\n\xfe\xe1x\a\x01\x00\x00\x00\x00\x01\x00\x00\xff\xdc\x02\x01\x01\xa5\x00\x1e\x00\x00\x01\x16\x14\x0f\x01\x06&=\x01\x0e\x03\x14\x17\x16\x06'.\x0154>\x037546\x17\x01\xf8\b\b\xb0\f\x1c1D2\x17\r\x04\x15\v#0\x1e2LP4\x1c\f\x01\x02\a\x16\a\x98\n\r\x0fX\x01\v\x19*@+\f\x0e\b\x19U,,B)\x19\t\x01P\x0f\r\n\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x10\x00!\x002\x00C\x00\x00\x11546;\x012\x1d\x01\x14+\x01\x15\x14+\x01\"%4;\x012\x16\x1d\x01\x14+\x01\"=\x01#\"5\x172\x1d\x01\x14\x06+\x01\"=\x014;\x01543\a\x14+\x01\"&=\x014;\x012\x1d\x0132\x15\x0e\n|\f\fT\f(\f\x01 \f|\n\x0e\f(\fT\f\x94\f\x0e\n|\f\fT\f\xec\f|\n\x0e\f(\fT\f\x01\f|\n\x0e\f(\fT\f\x94\f\x0e\n|\f\fT\f\xec\f|\n\x0e\f(\fT\f\x94\f\x0e\n|\f\fT\f\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x10\x00!\x002\x00C\x00\x00\x01#\"&=\x014;\x012\x1d\x0132\x1d\x01\x14%\x14\x06+\x01\"=\x014;\x0154;\x012\x15\x11\x14+\x01\"=\x01#\"=\x014;\x012\x16\x15\x17\x14+\x01\"=\x0146;\x012\x1d\x01\x14+\x01\x01\xb4|\n\x0e\f(\fT\f\xfe\xe0\x0e\n|\f\fT\f(\f\f(\fT\f\f|\n\x0e\xc0\f(\f\x0e\n|\f\fT\x01\x00\x0e\n|\f\fT\f(\f\x18\n\x0e\f(\fT\f\f\xfeX\f\fT\f(\f\x0e\n|\f\f|\n\x0e\f(\f\x00\x00\x01\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00#\x00\x00%2\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\"&=\x0146;\x01546;\x012\x16\x1d\x01\x01\xa0\r\x13\x13\r\x90\x13\r \r\x13\x90\r\x13\x13\r\x90\x13\r \r\x13\xf0\x13\r \r\x13\x90\r\x13\x13\r\x90\x13\r \r\x13\x90\r\x13\x13\r\x90\x00\x01\x00\x00\x00\x90\x01\xc0\x00\xf0\x00\x0f\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\xa0\r\x13\x13\r\xfe\x80\r\x13\x13\r\xf0\x13\r \r\x13\x13\r \r\x13\x00\x00\x00\x00\x01\x00\x13\xff\xc0\x01\xed\x01\xc0\x006\x00\x00%\x1e\x01\x0f\x01\x0e\x01/\x01\x17\x16\x06+\x01\"&?\x01\a\x06&/\x01&6?\x01'.\x01?\x01>\x01\x1f\x01'&>\x01;\x012\x16\x0f\x0176\x16\x1f\x01\x16\x06\x0f\x01\x01\xde\t\x05\x05\x13\x05\x14\b\x8b\x03\x01\x0e\v&\v\x0e\x01\x03\x8b\b\x14\x05\x13\x05\x05\t\x8e\x8e\t\x05\x05\x13\x05\x14\b\x8b\x03\x01\a\v\a&\v\x0e\x01\x03\x8b\b\x14\x05\x13\x05\x05\t\x8er\x05\x13\t\"\t\x05\x06T\xa2\v\x0e\x0e\v\xa2T\x06\x05\t\"\t\x13\x05NN\x05\x13\t\"\t\x05\x06T\xa2\a\v\a\x0e\v\xa2T\x06\x05\t\"\t\x13\x05N\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x1d\x00\x00\x00\x14\x06\"&462\x02\"\x06\x14\x16264'\x17\x14;\x012574&+\x01\"\x06\x01\xf8\x91Α\x91\xceT&\x1b\x1b&\x1bZ\b\f0\f\b\a\x05@\x05\a\x01'Α\x91Α\xfe\xd6\x1b&\x1b\x1b&\xc0\x88\v\v\x88\x06\a\a\x00\x00\x00\x05\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x06\x00\r\x00.\x009\x00C\x00\x00353\x15#\"&\x0553\x15\x14\x06#\x132\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01&54632\x16\x17>\x0132\x16\x15\x14\a!3.\x01#\"\x0e\x01\x15\x14\x163264&#\"\x0e\x01\a \xc0\xa0\r\x13\x01\x00\xc0\x13\r \r\x13\t\a\xfe \a\t\x13\r,\n4$\x1e.\x1b\x1b.\x1e$4\n\xfe\xe4V#!\x12\v\x12\v\x17\xdf\x11\x17\x17\x11\f\x11 \x19\x80\xa0\x13\x13\xa0\x80\r\x13\x01@\x13\rP\a\t\t\aP\r\x13\x13\x15$4 $$ 4$\x14\x145\x1b\v\x12\v\x11\x17\x17\"\x17\a$%\x00\x01\xff\xfd\xff\xbd\x02@\x01\xc1\x00'\x00\x00\x01\x16\x15\x14\x06\a\x06&'\x06\a\x0e\x01.\x017>\x043264&#\"\a&546;\x0126762\x02\"\x1e\x97u8[\x1b5\x13\x05\x19\x18\v\x05\t @Q}G\a\t\t\a\xa9u\x02pPP/O\x18\x05\x13\x01\xb6BN\x83\xb9\t\x06.%,.\f\v\n\x19\f\x15/>0\"\t\x0e\tT\x0e\x06Pp/)\b\x00\x01\x00\x00\xff\xc0\x01\x80\x01\xc4\x00!\x00\x00\x13\x14\x1e\x03\x15\x14\x06\"&5476\x16\x1d\x01\x14\x1632654.\x04676\x16\xd8#11#q\x9eq7\v\x1e%\x1a\x1b&\x13\x1a\x1d\x13\x06\x15\x1a\n\"\x01\xa8\x1c2,2M/OqqON9\f\f\x11U\x1b&%\x1b\x11 \x1a\x1c\"*=%\x0f\n\x00\x00\x03\x00\x00\x00\x00\x02@\x01\x80\x00\x11\x00\x1b\x00-\x00\x00%\x16\x14\a\x0e\x01#\".\x01'&47>\x012\x16\a2654&\"\x06\x14\x1672\x16\x14\x06\"&547\x1632654'6\x02=\x03\x03*\x98[\x0232\x16\x17\x16\x14\a\x0e\x01\a'654&#\"\x06\a\x17654'632\x16\x150\x15\x14\a\x01@\r\r4)%[\x98*\x03\x03\x0e\x17i\x03'@\x01_\x06\x03\x14\x05\b\x05\x04\xfd\xb3\x06\x03\x14\x05\b\x05\x04\x80\x1257\x15[\x98*\x03\x03\r0\x15I\x0eT<\x156\x10I\x02\t\r\r'8\x050\x03)\naP\a\x10\a\x1a\x1dQ%=#:\x05\b\x05\x05\x19\x06\x03\x01\xc7\x05\b\x05\x05\x19\x06\x03c\v\x11\naP\a\x10\a\x18<\x129\x1d\x1f\x02;\x012\x1f\x01\x01\xe0\x1eBB\x1eri\x05\tB\b\t\x021g+\x05\b(\b\t\x01 \x01\t\b(\b\x05+g1\x01\x01\x05\x06\x04B\t\x05i\x01\x00'2'\xb8\b\r\a\xac:\x06\f\bll\b\f\x06:\xac\x03\b\x06\x03\b\xb8\x00\x00\x00\b\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\t\x00\x15\x00!\x00-\x009\x00E\x00Q\x00o\x00\x00\x15\x11!\x11\x14\x06#!\"&%\x15\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"'\x15\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"'\x15\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x012\x16\x1d\x01!546;\x01546;\x012\x16\x1d\x013546;\x012\x16\x1d\x01\x01\xc0\x1c\x14\xfe\xa0\x14\x1c\x01@\f(\f\f(\f\f(\f\f(\f\x80\f(\f\f(\f\f(\f\f(\f\x80\f(\f\f(\f\f(\f\f(\f\x01P\x14\x1c\xfe@\x1c\x140\t\a \a\t\x80\t\a \a\t\x10\x01\x10\xfe\xf0\x14\x1c\x1c\xd8(\f\f(\f\x8c(\f\f(\ft(\f\f(\f\x8c(\f\f(\ft(\f\f(\f\x8c(\f\f(\f\x01@\x1c\x1400\x14\x1c0\a\t\t\a00\a\t\t\a0\x00\x03\x00\x00\xff\xdb\x02\x01\x01\xa5\x00\x13\x00\x1f\x00;\x00\x00%\x16\x14\x0f\x01\x06&=\x01#\"/\x017\x173546\x17%\"=\x014;\x012\x1f\x01\a'!#\a\x06+\x01\"=\x014;\x0176;\x01546\x1f\x01\x16\x14\x0f\x01\x06&5\x01\xf9\a\aP\v\x1e;\x05\x04F55 \x1e\v\xfec\f\fo\x05\x04F55\x01 \xdc\x04\x05o\f\fT\xdc\x04\x05;\x1e\vP\a\aP\v\x1eY\a\x14\aP\v\f\x10(\x04K:9(\x10\f\vg\f8\f\x04K:9\xec\x04\f8\f\xec\x04(\x10\f\vP\a\x14\aP\v\f\x10\x00\x00\x00\x01\xff\xfe\xff\xe0\x02\x00\x01\xa0\x00\x14\x00\x00\x122\x16\x14\x06#\"'\x06#\"&'&>\x027&54\x96Ԗ\x96j83AL\x02\x04\x01\x02\a\x11\x1c\x069\x01\xa0z\xacz\x133\x03\x02\x05\a\x151\x169JV\x00\x00\x00\x00\x03\x00\x00\xff\xd3\x02\x00\x01\xac\x00\x10\x00\x1f\x00?\x00\x00\x13#\"&=\x0146;\x012\x16\x1d\x01\x14\x0e\x01%\x14\x06+\x01\"=\x0146;\x012\x16\x15\a32\x16\x15\x06\x17\x14\x0e\x01\".\x0154546;\x012\x16\x1d\x01\x14\x1626=\x0146\xa4\x98\x05\a\x15\x0fh\x0f\x15\x03\x06\x01Y\a\x05\x98\f\x15\x0fh\x0f\x15\xa4\x98\x05\a\x01\x01Nt{tO\a\x05\x98\x05\a2<2\a\x01,\a\x05P\x0f\x15\x15\x0fP\x03\x06\x03\f\x05\a\fP\x0f\x15\x15\x0f|\a\x05,\tHt;;tG\x051\x05\a\a\x054-44-4\x05\a\x00\x00\x01\x00\x05\x00;\x01\xbb\x01E\x00\x14\x00\x00\x13\x17\x16\x14\x0f\x01\x0e\x01/\x01\a\x06&/\x01&4?\x0162\xf1\xc2\a\a\x16\a\x14\a\x9b\x9b\a\x14\a\x16\a\a\xc2\a\x14\x01=\xc2\a\x14\a\x16\a\x01\a\x9b\x9b\a\x01\a\x16\a\x14\a\xc2\b\x00\x00\x01\x00\x05\x00;\x01\xbb\x01E\x00\x14\x00\x007'&4?\x01>\x01\x1f\x0176\x16\x1f\x01\x16\x14\x0f\x01\x06\"\xcf\xc2\a\a\x16\a\x14\a\x9b\x9b\a\x14\a\x16\a\a\xc2\a\x14C\xc2\a\x14\a\x16\a\x01\a\x9b\x9b\a\x01\a\x16\a\x14\a\xc2\b\x00\x00\x00\x02\x00\x03\xff\xfc\x02}\x01\x84\x00!\x00C\x00\x00%\a\x06\"/\x01&4?\x0162\x1f\x015#\"/\x01&6;\x012\x16\x1d\x01762\x1f\x01\x16\x14\x05\x17\x16\x06+\x01\"&=\x01\a\x06\"/\x01&4?\x0162\x1f\x01\x16\x14\x0f\x01\x06\"/\x01\x1532\x02ve\a\x14\ae\a\a\v\a\x15\a(\xbc\t\b\x10\v\f\x10\xf4\n\x0e(\a\x15\a\v\a\xfe\xf0\x10\v\f\x10\xf4\n\x0e(\a\x15\a\v\a\ae\a\x14\ae\a\a\v\a\x15\a(\xbc\thd\a\ad\a\x14\a\v\a\a+\xb6\a\x10\v\x1e\x0e\n\xde+\a\a\v\a\x14\x16\x10\v\x1e\x0e\n\xde+\a\a\v\a\x14\ad\a\ad\a\x14\a\v\a\a+\xb6\x00\x01\x00\x00\xff\xc0\x02B\x01\xc0\x00.\x00\x00%\x06#!\x17!2\x16\x0f\x01\x16\x15\x14\x06\"&547#\x16\x15\x14\x06\"&547\x03#\"&=\x0146;\x012\x16\x1f\x01!2\x16\a\x02\x10\x04\x13\xfe\xdb\x06\x01\r\v\x0e\x02\x06 !.!\x11\xd2\x11!.!\x1cFF\n\x0e\x0e\ng\b\r\x02\t\x01\x89\f\x0e\x03\x93\x13 \x12\v\x19\x0f#\x17!!\x17\x18\x10\x10\x18\x17!!\x17 \x11\x01W\x0e\n\x10\n\x0e\v\b-\x12\v\x00\x00\x01\x00\x00\x00\x00\x02\x00\x01\x80\x00\x11\x00\x00\x012\x16\x1d\x01\x14\x06#!\"&5\x1146;\x01\x17\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\xa0@\x01@\x1c\x14\xe0\x14\x1c\x1c\x14\x01 \x14\x1c@\x00\x02\x00\x00\x00\x00\x02D\x01\x80\x00\x0f\x00 \x00\x00%\a\x0e\x01#!\"&?\x01>\x013!2\x16%\"\x0e\x01\x0f\x01\x1146;\x01\x1732\x16\x1d\x01\x02=I\a!\x0f\xfep\x0e\x0e\aI\a!\x0f\x01\x90\x0e\x0e\xfeT\x11 \x19\tE\x1c\x14\xa0@\xa0\x14\x1c\x9c|\r\x13\x18\f|\r\x13\x188\f\x15\x0fv\x01\x16\x14\x1c@\x1c\x140\x00\x00\x00\x00\x05\x00\x00\x00\x00\x02\x00\x01\x80\x00\x0f\x00\x1f\x00/\x00?\x00T\x00\x00%\"&=\x0146;\x012\x16\x1d\x01\x14\x06#3\"&=\x0146;\x012\x16\x1d\x01\x14\x06#!\"&=\x0146;\x012\x16\x1d\x01\x14\x06#3\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\x172\x16\x1d\x01\x14\x06#!\"&5\x1146;\x012\x16\x15\x11\x01M\x05\b\b\x05&\x05\b\b\x05:\x05\b\b\x05&\x05\b\b\x05\xfe\xba\x05\b\b\x05&\x05\b\b\x05:\x05\b\b\x05&\x05\b\b\x05\xdd\a\t\t\a\xfe0\r\x13\t\a \a\t\x80\b\x05\x86\x05\b\b\x05\x86\x05\b\b\x05\xe6\x05\b\b\x05\xe6\x05\b\b\x05F\x05\b\b\x05F\x05\b\b\x05\xc6\x05\b\b\x05\xc6\x05\b@\t\a \a\t\x13\r\x01P\a\t\t\a\xfe\xd0\x00\x06\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x1c\x00-\x005\x00=\x00M\x00\x00\x13!2\x16\x15\x11\x14\x06#!\"&5\x1146\x17\"\x06\x1d\x01\x14;\x012=\x014#\x052=\x014&+\x01\"\x0f\x01#\"\x1d\x01\x143\x12264&\"\x06\x1462\x16\x14\x06\"&4\x16265463264&#\"\x06\x15\x140\x01\xa0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\a\t\x06t\x06\x06\x01@\x06\t\a\xfd\x03\x02\x1e\x8a\x06\x06\xa8dFFdFTH44H4!\x0e\t\x13\r\a\t\t\a\x1a&\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c \t\a\n\x06\x06\x14\x06`\x06J\a\t\x03-\x06$\x06\xfe\xf8FdFFd\x8a4H44H4\t\a\r\x13\t\x0e\t&\x1a\a\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc1\x00\"\x00*\x00\x00\x01\x14\x06#\"'\a\x06+\x01\x15\x14\x06+\x01\x15\x14\x06+\x01\"&=\x014?\x01&54>\x0132\x16\x06\x14\x16264&\"\x02\x00gI\x11\x10\x18\a\v%\x0e\n(\x0e\np\n\x0e\a\xa2\t/Q0Ig\xb0\x1c(\x1c\x1c(\x01\x10Ig\x03\x1b\b(\n\x0e(\n\x0e\x0e\nN\n\a\xa2\x1b\x1c0Q/g\x05(\x1c\x1c(\x1c\x00\x00\x00\x06\xff\xfa\xff\xbe\x02\x82\x01\xc3\x00;\x00C\x00\x85\x00\x91\x00\xcd\x00\xd5\x00\x00\x01\a\x06'&'&?\x01&'#\"'&76;\x0167'&7676\x1f\x016\x1776\x17\x16\x17\x16\x0f\x01\x16\x1732\x17\x16\a\x06+\x01\x06\a\x17\x16\a\x06\a\x06/\x01\x06'\x16>\x01'&\x0e\x01\a\x17\x16\a\x06\a\x06/\x01\x06\a\x15\x14\x06\a\x06'.\x01=\x01&'\a\x06'&'&?\x01&7'&7676\x1f\x016754676\x172\x1e\x02\x1d\x01\x16\x1776\x17\x16\x17\x16\x0f\x01\x16\a>\x01.\x01\x06\a\x0e\x01\x1e\x016\x05\a\x06'&'&?\x01&'#\"'&76;\x0167'&7676\x1f\x016\x1776\x17\x16\x17\x16\x0f\x01\x16\x1732\x17\x16\a\x06+\x01\x06\a\x17\x16\a\x06\a\x06/\x01\x06'\x16>\x01'&\x0e\x01\x02\x00\b\x05\n\x12\x0e\b\x05\b\n\x06\x10\v\x01\x04\x04\x01\v\x10\x06\n\b\x05\b\x0e\x12\n\x05\b\x10\x10\b\x05\n\x12\x0e\b\x05\b\n\x06\x10\v\x01\x04\x04\x01\v\x10\x06\n\b\x05\b\x0e\x12\n\x05\b\x10\x1a\x12&\t\r\x12&\tg\"\x11\a\t!\r\x11\x1e\x18\x1e\f\b&&\t\v\x1f\x18\x1d\x11\r \n\a\x11!\x06\x06!\x12\b\n \f\x12\x1d\x19\x1e\v\t&&\x04\a\x06\x03\x1e\x18\x1e\x11\r \n\a\x11\"\x06{\x11\x04\x16#0\x16\x11\x04\x16#0\x01\t\b\x05\n\x12\x0e\b\x05\b\n\x06\x10\v\x01\x04\x04\x01\v\x10\x06\n\b\x05\b\x0e\x12\n\x05\b\x10\x10\b\x05\n\x12\x0e\b\x05\b\n\x06\x10\v\x01\x04\x04\x01\v\x10\x06\n\b\x05\b\x0e\x12\n\x05\b\x10\x1a\x12&\t\r\x12&\t\x01\x01\x0e\t\x03\a\f\a\t\x0e\f\x0f\v\x12\x13\n\x0f\f\x0f\t\x06\f\a\x04\t\x0f\x03\x03\x0f\t\x04\x06\r\x06\t\x0f\f\x0f\n\x13\x12\v\x0f\f\x0e\n\x06\f\a\x03\t\x0e\x03>\x0e\f#\x14\x0e\f#\xae\x11\n\x13\x1a(\x0f\n\x11\x15\v\"\b\x0e\x01\a\a\x01\x0e\b\"\v\x15\x11\n\x0f'\x1b\x13\n\x11 \x1f\x11\n\x13\x1b'\x0f\n\x10\x15\n\"\t\r\x01\a\a\x05\x06\b\x04\"\v\x14\x10\v\x10&\x1c\x13\n\x11\x1f5\x160#\x16\x05\x11\x160#\x16\x05\xa6\x0e\t\x03\a\f\a\t\x0e\f\x0f\v\x12\x13\n\x0f\r\x0e\t\a\f\x06\x04\t\x0f\x03\x03\x0f\t\x04\x06\f\a\t\x0e\r\x0f\n\x13\x12\v\x0f\f\x0e\t\a\f\a\x03\t\x0e\x03>\x0e\f#\x14\x0e\f#\x00\x00\x02\xff\xfe\xff\xe0\x02B\x01\xa0\x00\x13\x00+\x00\x00\x00\x14\x06#\"'\x06#\"&'&767&5462\x13\x16\x17\x16\x06#\"'\x06#\"&'\x1632654'\x1e\x01\x15\x14\x01\xa0zV<3+.\x02\x04\x01\x02\x03\x15\x0f&z\xac\xf4\x0f\x15\x03\x04\x05.+3<@h\x18\x12\x0ec\x8d\x019H\x01B\x84^\x19\x19\x03\x02\x05\x04\x14\")3B^\xfe\x84\"\x14\x04\n\x19\x196,\x02qO\v\t\x12Q13\x00\x00\x00\x00\x01\x00\x0f\xff\xba\x01 \x01\xc0\x00\r\x00\x00\x01\x11\a\x06&?\x01'&6?\x026\x01 \x83\x11 \x03\x19j\x0e\f\x14\x92A\t\x01\xc0\xfeHD\t\x17\x14\x91g\x0e&\x03\x15\x84\x12\x00\x00\x00\x00\x01\x00\x00\xff\xbf\x01\x81\x01\xc0\x00,\x00\x00%\x1e\x02\x15\x14\x06+\x01\x15\x14\x0f\x01\x06\"/\x01&=\x01#\"&546?\x01#\"&=\x01463!2\x16\x1d\x01\x14\x06+\x01\x01*\x19&\x17\x0e\n\x88\x01\x18\x02\n\x02\x18\x01\x88\n\x0e0&\f*\n\x0e\x0e\n\x01\x10\n\x0e\x0e\n*\xea\f -\x19\n\x0eh\x02\x020\x04\x040\x02\x02h\x0e\n$<\x12v\x0e\n0\n\x0e\x0e\n0\n\x0e\x00\x03\x00\x00\xff\xc0\x02@\x01\xc0\x001\x009\x00A\x00\x00\x012\x16\x1d\x01\x14\a\x06\a\x06\a\x1532\x16\x1d\x01\x14#!\"=\x0146;\x015.\x02'&'&=\x0146;\x015463!2\x16\x1d\x01\x05\x16\x17&'#\x15\x14%5#\x06\a676\x02(\n\x0e>0>\x1f%0\x1b%\f\xfe\xd8\f%\x1b0\x04\x0e$\x0e>0>\x0e\nh\x0e\n\x01\x10\n\x0e\xfe\xa3\x13\x17\v\x02@\x01\xc0@\x02\v\x17\x13#\x01\x80\x0e\n88-\"\a4\x16H\x1e\x1a\f\f\f\f\x1a\x1eH\x02\n&\x18\a\"-88\n\x0e(\n\x0e\x0e\n(\x81\r\b)-\x10\x17\x17\x10-)\b\r\x1a\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x15\x00/\x007\x00?\x00\x00%#\"&=\x01#\"&?\x0162\x1f\x01\x16\x06+\x01\x15\x14\x067\x15\x14\x06#!\"&=\x0146;\x01\x15\x14\x16;\x0126=\x0132\x16\x064&\"\x06\x14\x16264&\"\x06\x14\x162\x01(P\n\x0eX\r\n\t\x98\x06\x10\x06\x98\t\n\rX\x0e\xce\x0e\n\xfe0\n\x0e\x0e\n\x88!\x17P\x17!\x88\n\x0e|\f\x10\f\f\x10L\f\x10\f\f\x10@\x0e\n\xa8\x19\t\x98\x06\x06\x98\t\x19\xa8\n\x0e\bp\n\x0e\x0e\np\n\x0e\b\x17!!\x17\b\x0ej\x10\f\f\x10\f\f\x10\f\f\x10\f\x00\x02\xff\xfc\xff\xbc\x02\x04\x01\xc4\x00#\x007\x00\x00\x00\x1e\x01\a\x0e\x01\x16\x0e\x06&\x06\a\x06.\x027>\x01&>\x06\x16676\a>\x01.\x01\a\x0e\x01\a\x14\x1e\x02\x172327>\x01\x01\xd8\"\t\t\b\x02\a\x02\n'BF:;-+\r\x0f+\"\t\t\b\x02\a\x02\n'BF:;-+\r\x0f\xb9\x06\a\x03\v\a4j\x0e\x01\x03\x05\x03\x02\x02\f\x04\n^\x01\xba\"+\x0f\r+-;:FB'\n\x02\a\x02\b\t\t\"+\x0f\r+-;:FB'\n\x02\a\x02\b\tc\x02\v\r\a\x01\x0ej4\x03\a\x05\x04\x01\f,^\x00\x00\x00\x01\xff\xfc\xff\xc0\x02\x00\x01\xc4\x00\x17\x00\x00\x01\x16\x15\x14\x00#\"/\x01&?\x016\x1f\x01>\x017'&?\x016\x17\x01\xed\x13\xfe\xf0\xc0\x13\x04\x18\x05\x13p\x10\f1;[\x1b<\x0e\a0\b\x13\x01\xa7\x04\x13\xc0\xfe\xf0\x13h\x13\b0\a\x0e<\x1b\\:2\v\x11p\x12\x05\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00.\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x132654/\x01\"#\"\x0f\x01\x06\x15\x14\x1f\x01\x06\a'&#\"\x0f\x01\x06\x15\x14\x15\x17\x16\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14.x\xaa\fA\x01\x02\n\x04\x1e\x01\x06%#K\x1f\x05\a\x03\x03F\t\x0f\x03\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\x80\xaax\f\x03\x0f\tF\x03\x03\a\x05\x1fK#%\x06\x01\x1e\x04\n\x02\x01A\f\x00\x00\x01\x00\x00\xff\xc0\x01\xc0\x01\xc1\x00&\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x015462\x16\x1d\x01\x14\x06+\x01\"&=\x014&#\"\x06\x1d\x01\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x18Y}Z\x0e\n \n\x0e+\x1e\x1d*\xc0\x1c\x14\xa0\x14\x1c\x1c\x14\xa0\x14\x1cf@ZY?\x10\n\x0e\x0e\n\x10\x1e*+\x1eg\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x02@\x01\xa0\x00\t\x00\x15\x00!\x00+\x00\x00=\x01!\x15\x14\x06#!\"&7\x15\x14;\x012=\x014+\x01\"\a\x15\x14;\x012=\x014+\x01\"\x01\x15!5463!2\x16\x02@\x1c\x14\xfe \x14\x1c\xc0\f\x88\f\f\x88\f\x80\fH\f\fH\f\x02\x00\xfd\xc0\x1c\x14\x01\xe0\x14\x1c\x10\xb0\xb0\x14\x1c\x1cX(\f\f(\f\f(\f\f(\f\x01\x1000\x14\x1c\x1c\x00\x00\x00\x00\x03\x00\x00\xff\xdf\x01\xc1\x01\xa1\x00\a\x00\x1b\x001\x00\x006\x14\x06\"&462\x17\x14\x06+\x01\"&5.\x01'\"&=\x01463\x1e\x01\x17\x14\x06+\x01\"&5.\x01'\"&=\x01463\x1e\x03\x80%5&&5\xd5\t\a0\a\t\x06wT\x06\t\n\at\xa4\x97\t\a0\a\t\x06ː\x06\t\n\aV\x9dsF;5&&5%o\a\n\t\x06Tw\x06\t\a0\a\t\a\xa4t\a\n\t\x06\x90\xcb\x06\t\a0\a\t\x03Gr\x9d\x00\x00\x00\x04\x00\x00\x00\x00\x02@\x01\x80\x00\x0f\x00\x1e\x00&\x00.\x00\x00%\x15\x14\x06#!\"&=\x01463!2\x16'!\"\a7>\x023!2\x16\x1f\x01&\x06\"\x06\x14\x16264&\"\x06\x14\x16264\x02@\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe0\x14\x1c0\xfe \x10\x0fa\x04\r\x10\a\x01\f\v\x17\x06a\x0f3\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13\x90`\x14\x1c\x1c\x14`\x14\x1c\x1c<\x06\x91\x05\n\x06\r\b\x91\x06`\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02@\x01\xc0\x00,\x004\x00\x00$\x14\a\x15\x14\x06#\"/\x01&+\x01\x06\x15\x14\x17\x16\x06+\x01\"'&547#\"&=\x0146;\x012?\x01632\x16\x1d\x01\a\x11\a\x06#\x152\x17\x02@ \x10\x10\v\tUBU\x1c\x04\x1a\v\x12\x13K\x14\b\x19\x02\"\x1b%%\x1b\xc0UBU\t\v\x10\x10@!TkkT\xf5J\x12\x99\n\x16\aD5\x10\x10+\"\x10#\x115:\x10\x10%\x1b`\x1b%5D\a\x16\n\x99\xc4\x01\x1a\x1aC`C\x00\x00\x01\xff\xfd\xff\xbd\x02\x03\x01\xc3\x00;\x00\x00%\x17\x16\x06\x0f\x01\x17\x16\x06/\x01\a\x0e\x01/\x01\a\x06&/\x01\a\x06&?\x01'.\x01?\x01'&6?\x01'&6\x1f\x017>\x01\x1f\x0176\x16\x1f\x0176\x16\x0f\x01\x17\x1e\x01\a\x01\xcb.\n\b\r?\x12\x04\x14\x0e>\x10\x03\x1c\t--\t\x1c\x03\x10>\x0e\x14\x04\x12?\r\b\n..\n\b\r?\x12\x04\x14\x0e>\x10\x03\x1c\t--\n\x1b\x03\x10>\x0e\x14\x04\x12?\r\b\n\xc0-\n\x1b\x03\x10>\x0e\x14\x04\x12?\x0e\a\n..\n\a\x0e?\x12\x04\x14\x0e>\x10\x03\x1b\n--\n\x1b\x03\x10>\x0e\x14\x04\x12?\x0e\a\n//\n\b\r?\x12\x04\x14\x0e>\x10\x03\x1b\n\x00\x00\x03\x00\x00\x00\x00\x02\x00\x01\x81\x00'\x007\x00?\x00\x00%\x14\x06+\x01\x16\x06\a\x16\x06\a\x16\x0e\x01#*\x01#\"&'.\x01=\x0147>\x017632\x16\a\x06\a32\x16\x05\x15\x14\x06+\x01\"&=\x0146;\x012\x16\x064&\"\x06\x14\x162\x02\x00\x1b\x12d\r\x01\x12\n\f\x0e\x04\x10#\x1a\x01\x0e\x01#G\x12\b\f\x1c\x1fE\b\f\x1c\x1a\x1c\n\x05\t\x95\x12\x1b\xfe`\x0e\n0\n\x0e\x0e\n0\n\x0e\x1c\f\x10\f\f\x10\xf8\x11\x1a\r+\x0f\x12%\b\x18 \x0f$\x03\x01\r\t\xac\x1f\r\r-\x13\x1d+\x18\f\r\x1a\x12\xc0\n\x0e\x0e\n\xc0\n\x0e\x0e\xba\x10\f\f\x10\f\x00\x00\x00\x03\x00\x00\x00\x00\x02\x00\x01\x81\x00&\x006\x00>\x00\x00\x133&'&632\x17\x1e\x01\x17\x16\x1d\x01\x14\x06\a\x0e\x01#*\x01#\"&7.\x017.\x017#\"&546\x0532\x16\x1d\x01\x14\x06+\x01\"&=\x0146\x16264&\"\x06\x14-\x95\t\x05\n\x1c\x1a\x1c\f\bE\x1f\x1c\f\b\x12G#\x01\x0e\x01('\x06\x0e\f\n\x12\x01\rd\x12\x1b\x1b\x01\x9d0\n\x0e\x0e\n0\n\x0e\x0e\x1a\x10\f\f\x10\f\x01$\r\f\x18+\x1d\x13-\r\r\x1f\xac\t\r\x01\x03$$#\b%\x12\x0f+\r\x1a\x11\x12\x1a\x14\x0e\n\xc0\n\x0e\x0e\n\xc0\n\x0e\xd4\f\x10\f\f\x10\x00\x00\x03\xff\xff\xff\xc0\x01\x80\x01\xc0\x00'\x007\x00?\x00\x00\x132\x16\x1d\x016\x16\x176\x16\x176\x16\x15\x1c\x01\x15\x14\x06\a\x14\x0e\x01+\x01\"'.\x01'&546\x17\x16\x17546\x1332\x16\x1d\x01\x14\x06+\x01\"&=\x0146\x16\"\x06\x14\x16264\x88\x11\x1a\r+\x0f\x12%\b#$$\x03\a\n\x06\xac\x1f\r\r-\x13\x1d+\x18\f\r\x1a\x12\xc0\n\x0e\x0e\n\xc0\n\x0e\x0e\xba\x10\f\f\x10\f\x01\xc0\x1b\x12d\r\x01\x12\n\f\x0e\x06'(\x01\x0e\x01#G\x12\x05\n\x05\x1c\x1fE\b\f\x1c\x1a\x1c\n\x05\t\x95\x12\x1b\xfe`\x0e\n0\n\x0e\x0e\n0\n\x0e\x1c\f\x10\f\f\x10\x00\x00\x00\x00\x03\xff\xff\xff\xc0\x01\x80\x01\xc0\x00&\x006\x00>\x00\x00\x175\x06\a\x06&547>\x0176;\x012\x16\x17\x1e\x01\x15\x1c\x01\x15\x14\x06'\x0e\x01'\x0e\x01'\x15\x14\x06#\"&\x13546;\x012\x16\x1d\x01\x14\x06+\x01\"&64&\"\x06\x14\x162\\\r\f\x18+\x1d\x13-\r\r\x1f\xac\t\r\x01\x03$$#\b%\x12\x0f+\r\x1a\x11\x12\x1a\x14\x0e\n\xc0\n\x0e\x0e\n\xc0\n\x0e\xd4\f\x10\f\f\x10\x13\x95\t\x05\n\x1c\x1a\x1c\f\bE\x1f\x1c\f\b\x12G#\x01\x0e\x01('\x06\x0e\f\n\x12\x01\rd\x12\x1b\x1b\x01\x9d0\n\x0e\x0e\n0\n\x0e\x0e\x1a\x10\f\f\x10\f\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00%\x00\x00\x04\"&462\x16\x14\a'326=\x014&+\x01764/\x01&\"\x0f\x01\x06\x14\x1f\x01\x162?\x0164\x01gΑ\x91Α\xdbL\xb7\n\x0e\x0e\n\xb7L\a\a\v\a\x14\a\x84\a\a\x84\a\x14\a\v\a8\x91Α\x91\xce\x01H\x0e\n\x10\n\x0eH\a\x15\a\v\a\a\x85\a\x14\a\x85\a\a\v\a\x15\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00%\x00\x00\x122\x16\x14\x06\"&47\x17#\"\x06\x1d\x01\x14\x16;\x01\a\x06\x14\x1f\x01\x162?\x0164/\x01&\"\x0f\x01\x06\x14\x99Α\x91Α\xdbL\xb7\n\x0e\x0e\n\xb7L\a\a\v\a\x14\a\x84\a\a\x84\a\x14\a\v\a\x01\xb8\x91Α\x91\xce\x01H\x0e\n\x10\n\x0eH\a\x15\a\v\a\a\x85\a\x14\a\x85\a\a\v\a\x15\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00%\x00\x006462\x16\x14\x06\"'7\x15\x14\x16;\x0126=\x01\x17\x162?\x0164/\x01&\"\x0f\x01\x06\x14\x1f\x01\x162\b\x91Α\x91\xce\x01H\x0e\n\x10\n\x0eH\a\x15\a\v\a\a\x85\a\x14\a\x85\a\a\v\a\x15YΑ\x91Α\xdbL\xb7\n\x0e\x0e\n\xb7L\a\a\v\a\x14\a\x84\a\a\x84\a\x14\a\v\a\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00%\x00\x00\x00\x14\x06\"&462\x17\a54&+\x01\"\x06\x1d\x01'&\"\x0f\x01\x06\x14\x1f\x01\x162?\x0164/\x01&\"\x01\xf8\x91Α\x91\xce\x01H\x0e\n\x10\n\x0eH\a\x15\a\v\a\a\x85\a\x14\a\x85\a\a\v\a\x15\x01'Α\x91Α\xdbL\xb7\n\x0e\x0e\n\xb7L\a\a\v\a\x14\a\x84\a\a\x84\a\x14\a\v\a\x00\t\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\x05\x00\r\x00\x13\x00\x19\x00\"\x00+\x001\x007\x00=\x00\x00\x01#>\x012\x16\x06473\x16\x14\a#%#&'\x1e\x01%\x06\a#>\x01\x05\x16\x15\x14\a#64'\a\x14\x17#&473\x06\x173\x0e\x01\"&\x17673\x0e\x01%3\x16\x17.\x01\x01P\xb0\v0:0\xad\x03\xba\x03\x03\xba\x01Bl\x0f#5S\xfe\xea$\x0el\x16S\x01k\t\tr\x03\x03\xfd\x03r\t\tr\x03(\xb0\v0:0\x94$\x0el\x16S\xfe\x9fl\x0f#5S\x01 DTT\xc4@ @ \xa0\\2\x10K[2\\3K\x9e !>!@\x1e\"!>!!\u007fDTTJ2\\3K~\\2\x10K\x00\x00\x00\x02\xff\xff\xff\xbf\x02\x05\x01\xc5\x00\x1c\x00$\x00\x00\x01\x16\x06\a\x0e\x01'\a\x06\"&4?\x01&67>\x01\x17\x1e\x01\x0f\x01\x1f\x0176\x16\x00264&\"\x06\x14\x01\xfc\t\x14\x1b\x1eP&\xd5\x135%\x13\xd5\r\x12\x1d\x1bJ$\a\x03\x05J\vDK\x05\r\xfe<\x14\x0e\x0e\x14\x0e\x01S$I\x1c\x1d\x12\r\xd5\x13%5\x13\xd6%Q\x1d\x1b\x14\t\x02\r\x05KD\vJ\x05\x03\xfe\x8e\x0e\x14\x0e\x0e\x14\x00\x00\x00\x00\x06\x00\x00\xff\xf0\x02\x00\x01\xa1\x00\x15\x00+\x003\x00C\x00S\x00c\x00\x00\x13\x17\x16\x14\x0f\x02\x06\"/\x01&4?\x0162\x1f\x01762\x1f\x01\x16\x14\x0f\x02\x06\"/\x01&4?\x0162\x1f\x01762\x062\x16\x14\x06\"&4%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x052\x16\x1d\x01\x14\x06#!\"&=\x01463\x8c\x11\x03\x03I\x0f\x04\n\x04/\x04\x04\x0f\x04\n\x03\x17@\x03\n\x04\x11\x03\x04H\x0f\x04\n\x04/\x04\x04\x0f\x04\n\x03\x17@\x03\n\\(\x1c\x1c(\x1d\x01\xe1\a\t\t\a\xfe\xe0\a\t\t\a\x01 \a\t\t\a\xfe\xe0\a\t\t\a\x01 \a\t\t\a\xfe\xe0\a\t\t\a\x01\x9c\x10\x04\t\x04H\x10\x03\x030\x03\n\x04\x0f\x04\x04\x16?\x04\xa3\x11\x03\n\x04H\x0f\x04\x04/\x04\t\x04\x10\x03\x03\x16?\x04\xb1\x1c(\x1c\x1c(\f\t\a \a\t\t\a \a\t\x01@\t\a \a\t\t\a \a\t\xa0\t\a \a\t\t\a \a\t\x00\x00\x01\xff\xfb\xff\xbc\x02\x05\x01\xc0\x00\x10\x00\x00\x012\x16\x0f\x01\x11\x14\x06/\x01&=\x01'&63\x01\xe8\x10\f\v\xb9\x1a\fP\n\xb9\v\f\x10\x01\xc0\x1e\v\xb9\xfe\xfa\x0f\r\b8\b\fι\v\x1e\x00\x00\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x13\x00'\x00+\x00\x00%53\x15\x14\x06#!\"&=\x013\x15\x14\x16;\x012672\x16\x1d\x01!546;\x01546;\x012\x16\x1d\x01#5#\x15\x01@\xc0\x1d\x13\xfe`\x13\x1d\xc0\t\a`\a\t\x90\x13\x1d\xfe\x00\x1d\x13P\x1d\x13\xa0\x13\x1d@\x80p0\x90\x13\x1d\x1d\x13\x900\a\t\t\xd7\x1d\x13PP\x13\x1d0\x13\x1d\x1d\x130 \x00\x00\x01\xff\xff\xff\xbf\x02\x00\x01\xc1\x00;\x00\x00%\a\x06\"/\x01&6;\x015#\x15\x14\x06/\x01&4?\x016\x16\x1d\x0135#\"&?\x0162\x1f\x01\x16\x06+\x01\x153546\x1f\x01\x16\x14\x0f\x01\x06&=\x01#\x1532\x16\x01`O\a\x14\aO\v\f\x103e\x1d\fO\a\aO\f\x1de3\x10\r\fO\a\x14\aO\v\f\x103e\x1d\fO\a\aO\f\x1de3\x10\r\x16O\a\aO\f\x1de3\x10\f\vO\a\x14\aO\f\r\x103e\x1d\fO\a\aO\f\x1de3\x10\f\vO\a\x14\aO\f\r\x103e\x1d\x00\x00\x06\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\a\x00\x0f\x00\x1e\x00&\x00:\x00H\x00\x006\"&462\x16\x14\x04\"&462\x16\x14\a2\x16\x1d\x01\x14\x06+\x01.\x02'63*\x01&462\x16\x14\a2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x1627'\x0e\x01\a#\"&=\x0146;\x012z4&&4&\x01\x9a4&&4& \x1a&\x13\rB\x03\x14 \x14\x13\x1a\x92\\BB\\B#0C\x1c\x14\xfe\xe0\x14\x1cC0\t!F!\xd7\x1e(\x05B\r\x13&\x1a@\x1a\xe0&4&&4&&4&&4F&\x1a \r\x13\x17*!\v\x13B\\BB\\bC0\x1d\x14\x1c\x1c\x14\x1d0C\x10\x10\r\x10:#\x13\r \x1a&\x00\x00\x02\xff\xff\xff\xbf\x02\x00\x01\xc1\x00%\x00K\x00\x00\x01\x16\x14\x0f\x01\x06\"&4?\x016\x16\x17\x16\x17\x16\x0f\x01\x0e\x01\x17\x162?\x0164'&'&5&?\x016\x166\x16\x14\x0f\x01\x06&'&'&?\x01>\x01'&\"\x0f\x01\x06\x14\x17\x16\x17\x16\x15\x16\x0f\x01\x06&'&4?\x016\x01G,,D,~Y,&\a\x13\x01\x01\t\x03\a\r\x15\x01\x15\x15<\x15C\x15\x15\x05\x05\a\x01\f\x16\t\x16jY,&\a\x13\x01\x01\t\x03\a\r\x15\x01\x15\x15<\x15C\x15\x15\x05\x05\a\x01\f\x16\t\x16\n,,D,\x01\a-~,D,Y~,&\a\b\n\x1b\x1a\t\a\x0e\x15;\x15\x16\x15C\x15<\x15\x05\x04\x04\b\x12\f\x15\n\x10\xb0Y~,&\a\b\n\x1b\x1a\t\a\x0e\x15;\x15\x16\x15C\x15<\x15\x05\x04\x04\b\x12\f\x15\n\x10\t-~,D,\x00\x00\x01\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\x1c\x00\x00%\x1e\x02\x15\x14\x06#!\"&5467454632\x16\x17632\x16\x15\x14\x02\x1a\x1d.\x1bK5\xfe\x90\x0e\x14\xfe\xf4\x14\x1c\x1c\x14\x01`\x14\x1c\x0e\xfe\x8e%6%%6\x01\f\x04\x04\x03\x04\fh\f\f\x00\x00\x00\x01\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x00\x03\x00\x00\xff\xfc\x01\xc0\x01\x84\x00\x0f\x00\x1f\x00/\x00\x00\x13\"&=\x01463!2\x16\x1d\x01\x14\x06#\x05\"&=\x01463!2\x16\x1d\x01\x14\x06#\x05\"&=\x01463!2\x16\x1d\x01\x14\x06#\x10\a\t\t\a\x01\xa0\a\t\t\a\xfe`\a\t\t\a\x01\xa0\a\t\t\a\xfe`\a\t\t\a\x01\xa0\a\t\t\a\x01<\t\a(\a\t\t\a(\a\t\xa0\t\a(\a\t\t\a(\a\t\xa0\t\a(\a\t\t\a(\a\t\x00\x00\x06\x00\x00\xff\xf0\x02\x00\x01\x90\x00\a\x00\x0f\x00\x17\x00'\x007\x00G\x00\x00\x122\x16\x14\x06\"&4\x162\x16\x14\x06\"&4\x162\x16\x14\x06\"&4%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x052\x16\x1d\x01\x14\x06#!\"&=\x01463\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x1c\x01\xf0\a\t\t\a\xfe\xc0\a\t\t\a\x01@\a\t\t\a\xfe\xc0\a\t\t\a\x01@\a\t\t\a\xfe\xc0\a\t\t\a\x01\x90\x1c(\x1c\x1c(\x84\x1c(\x1c\x1c(\x84\x1c(\x1c\x1c(\f\t\a \a\t\t\a \a\t\x01@\t\a \a\t\t\a \a\t\xa0\t\a \a\t\t\a \a\t\x00\x00\x06\xff\xfc\xff\xe0\x02\x00\x01\xa0\x00*\x00:\x00J\x00Z\x00t\x00\x98\x00\x007\x1e\x01\x15\x14\x06#\"'&?\x016\x17\x163254+\x01\"/\x01&?\x0167#\"=\x014;\x012\x1d\x010\x15\x14\a%2\x16\x1d\x01\x14\x06#!\"&=\x01463%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463'\"=\x014;\x015#\"54?\x016;\x012\x1d\x0132\x1d\x01\x14#\a\"=\x014>\x0254#\"\a\x06/\x01&7632\x1e\x01\x15\x14\x0e\x03\a32\x1d\x01\x14#>\x0e\x0e\x18\x18\x15\x10\t\x06\x06\x05\v\a\b\x0e\x10\x04\b\x05\x01\x03\x06\x06\x05\x06\x17\b\b9\v\x05\x01\xa1\a\t\t\a\xfe\xc0\a\t\t\a\x01@\a\t\t\a\xfe\xc0\a\t\t\a\x01@\a\t\t\a\xfe\xc0\a\t\t\a\xa0\b\b\x10\b\b\x01\b\x02\x05\x18\b\x10\b\bD\f\x10\x13\x10\t\x06\x04\t\a\b\n\a\x0e\x1a\v\x13\x0f\n\r\x0e\v\x01'\b\b/\x04\x13\f\x12\x1a\t\a\t\n\t\x06\x03\b\t\b\x02\a\b\a\x06\x06\b\x10\b\v\x04\x01\a\x06\x9d\t\a \a\t\t\a \a\t\xa0\t\a \a\t\t\a \a\t\xfe\xc0\t\a \a\t\t\a \a\t\xe0\b\x10\b@\b\x02\x02\x10\x04\bX\b\x10\b\xa0\v\x04\x11\x19\f\f\x04\b\x04\b\x06\a\a\b\x13\a\x13\x0e\n\x11\v\t\x06\x03\b\x10\b\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x001\x00T\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01&'&54>\x01;\x012\x16\x1f\x01\x16\x15\x14\x0f\x01\x06#\"'.\x01+\x01\"\x06\x15\x14\x16\x1f\x023\x16\x17\x16\x15\x14\x06+\x01\".\x01/\x01&54?\x01632\x17\x1e\x03;\x012654&\x01\xf0\a\t\t\a\xfe \a\t\t\af\x13\x02\x01!9\"D C\x0f\x01\x01\t+\x03\x04\n\x04\x06\x1a\rB\x12\x1a\x12\rW\x16^\x04\x01\x01H4D\x15.%\n\x01\x01\t+\x03\x04\n\x04\x03\n\f\r\aB\x12\x1a\f\xe0\t\a \a\t\t\a \a\t\x1b\x1d\x06\x06\"9!)\x1e\x01\x03\x04\n\x04\x16\x01\b\f\x10\x1a\x12\r\x18\x04\x1b`\f\f\x06\x063I\x13!\x13\x01\x03\x04\n\x04\x16\x01\b\x06\n\b\x04\x1a\x12\t\x16\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00/\x00?\x00\x00\x13\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\x15\x14\x1626=\x01#\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\x15\x14\x06\"&=\x01\x012\x16\x1d\x01\x14\x06#!\"&=\x01463 \a\t\t\a\x90\a\t\t\a /B/ \a\t\t\a\x90\a\t\t\a ^\x84^\x01p\a\t\t\a\xfe`\a\t\t\a\x01\x80\t\a \a\t\t\a \a\t\xa0!//!\xa0\t\a \a\t\t\a \a\t\xa0B^^B\xa0\xfe\x80\t\a \a\t\t\a \a\t\x00\x00\x00\x05\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x13\x00\x17\x00\x1b\x00\x1f\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x135#\x1575#\x15\x055#\x1575#\x15\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\xb0\xa0\xa0\xa0\x01\x80\xa0\xa0\xa0\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\x80``\xa0``\xa0``\xa0``\x00\x00\x00\x05\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\a\x00\x0f\x00\x17\x00'\x00+\x00\x00\x13/\x01?\x01\x1f\x01\x0f\x01/\x01?\x01\x1f\x01\a\x05\x1f\x01\x0f\x01/\x01?\x01\x16\x14\a\x01\x06\"/\x01&47\x0162\x17\a7'\a\xe0\x10 \x10\x10 \xa0\x1b55\x1b\x1b55\x01E\x1b55\x1b\x1b55b\t\t\xfe\x94\t\x1a\nU\t\t\x01l\t\x1a\n;W3V\x01` \x10\x10 \x10\x10`5\x1b\x1b55\x1b\x1b\xb55\x1b\x1b55\x1b\x1b\xf7\n\x1a\t\xfe\x94\t\tU\n\x1a\t\x01l\t\t\xc2V3W\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc0\x00'\x00/\x007\x00<\x00\x00%2\x16\x1d\x01\x14\x06+\x01\x14\x06\"&5#\x14\x06\"&5#\"&5\x11463!2\x16\x1d\x0132\x1f\x01\x16\x1d\x01\x04264&\"\x06\x14\x04264&\"\x06\x1475'#\x15\x02p\a\t\t\a08P8\x808P8\x10\x14\x1c\x1c\x14\x01@\x14\x1c,\x14\x0ed\x0e\xfe,(\x1c\x1c(\x1c\x01\\(\x1c\x1c(\x1c\x80d,`\t\a \a\t(88((88(\x1c\x14\x01@\x14\x1c\x1c\x140\x0ed\x0e\x14lp\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\xb4\fdp\x00\x00\x00\x06\x00\x00\x00\x00\x02\x80\x01\x80\x00\x0f\x00\x14\x00\x19\x00!\x00&\x00+\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x1334ᒑ#\x16264&\"\x06\x14\x055\"\x06\x1575#\x14\x16\x02`\r\x13\x13\r\xfd\xc0\r\x13\x13\r\x10@%\x1b\x1b%@\xefB//B/\x01`\x1b%@@%\x01\x80\x13\r\xfe\xc0\r\x13\x13\r\x01@\r\x13\xfe\xb0\x1b%\xa0%\x1b\xf08P88Ph@%\x1b\xe0@\x1b%\x00\x00\x01\x00\a\x00W\x019\x01\x00\x00\v\x00\x00\x13!2\x16\x0f\x01\x06\"/\x01&6\x1f\x01\x02\r\n\t\x81\x06\x10\x06\x81\t\n\x01\x00\x19\t\x81\x06\x06\x81\t\x19\x00\x00\x00\x00\x01\x00\a\x00`\x019\x01\t\x00\v\x00\x00%!\"&?\x0162\x1f\x01\x16\x06\x01!\xfe\xfe\r\n\t\x81\x06\x10\x06\x81\t\n`\x19\t\x81\x06\x06\x81\t\x19\x00\x00\x00\x00\x01\x00\x17\x00'\x00\xc0\x01Y\x00\v\x00\x00\x13\x11\x14\x06/\x01&4?\x016\x16\xc0\x19\t\x81\x06\x06\x81\t\x19\x01A\xfe\xfe\r\n\t\x81\x06\x10\x06\x81\t\n\x00\x00\x00\x00\x01\x00\x00\x00'\x00\xa9\x01Y\x00\v\x00\x005\x1146\x1f\x01\x16\x14\x0f\x01\x06&\x19\t\x81\x06\x06\x81\t\x19?\x01\x02\r\n\t\x81\x06\x10\x06\x81\t\n\x00\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x13\x00\x17\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x13\x11#\x11!\x11#\x11\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\xb0\xa0\x01\x80\xa0\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\x80\x01\x00\xff\x00\x01\x00\xff\x00\x00\x00\x02\x00\r\xff\xf8\x013\x01\x88\x00\v\x00\x17\x00\x00732\x16\x0f\x01\x06\"/\x01&6%\x16\x06+\x01\"&?\x0162\x17)\xee\x10\f\vw\a\x14\aw\v\f\x01\x0f\v\f\x10\xee\x10\f\vw\a\x14\a\xa0\x1e\vw\a\aw\v\x1ei\v\x1e\x1e\vw\a\a\x00\x00\x00\x01\x00\r\xff\xf8\x013\x00\xa0\x00\v\x00\x00732\x16\x0f\x01\x06\"/\x01&6)\xee\x10\f\vw\a\x14\aw\v\f\xa0\x1e\vw\a\aw\v\x1e\x00\x00\x01\x00\r\x00\xe0\x014\x01\x88\x00\v\x00\x00%#\"&?\x0162\x1f\x01\x16\x06\x01\x17\xee\x10\f\vw\a\x14\aw\v\f\xe0\x1e\vw\a\aw\v\x1e\x00\x02\x00\x00\x00\x00\x02\x00\x01\x80\x00\x1f\x00:\x00\x00\x016\x16\x1d\x01\x14\x06#!\"&=\x0146\x17\x16\x17\x1e\x0432>\x0476\a\".\x02#&'&=\x01463!2\x16\x1d\x01\x14\a\x06\a\"\x0e\x02\x01\xf6\x03\a\x1c\x14\xfe`\x14\x1c\a\x03!y\x02\x17\x0e\x16\x15\n\t\x12\x10\x12\f\x10\x03v\xd2\b\x17\x0e\x1b\x01z4\t\x1c\x14\x01\xa0\x14\x1c\t1}\x01\x1b\x0e\x17\x01\x01\x03\x04\x04\xcc\x14\x1c\x1c\x14\xcc\x04\x03\x02\x19X\x02\x12\t\r\x06\x05\a\f\t\f\x03Ue\v\t\x15Y(\a\f\x13\x14\x1c\x1c\x14\x13\f\a&[\x15\t\v\x00\x00\x00\x01\x00\x00\xff\xc8\x01\xf9\x01\xc0\x00+\x00\x007#\"&=\x014;\x012\x1d\x01>\x013\x1e\x01\x0e\x01#\"'&?\x016\x17\x163264&#\"\x06\a32\x16\x1d\x01\x14\x06\xd4\xc8\x05\a\f0\f#a6g\x90\x01\x91g_G\n\t\"\b\t2BIggI+J\x19b\x05\a\a\xe0\a\x05\xc8\f\fN'+\x01\x91͑@\t\t\"\b\b,g\x92g'!\a\x050\x05\a\x00\x00\x01\x00\x00\xff\xbf\x02\x00\x01\xc1\x007\x00\x00%\x16\x14\x0f\x01\x06\"/\x01&4?\x01'\a\x17\x16\x14\x0f\x01\x06\"/\x01&4?\x0162\x1f\x017'\a\x06\"/\x01&4?\x0162\x1f\x01\x16\x14\x0f\x01\x17762\x17\x01\xf9\a\a|\b\x13\a\x17\a\a\x06(Q\x06\t\ts\t\x1b\t.\t\ts\t\x1b\t\x06Q(\x05\a\x14\a\x17\a\a}\a\x14\a\x16\a\a\x05q\x05\a\x14\a\xf9\a\x14\a}\a\a\x17\a\x14\a\x05(Q\x06\t\x1b\ts\t\t.\t\x1b\ts\t\t\x06Q(\x06\a\a\x17\a\x13\b|\a\a\x17\a\x14\a\x05q\x05\a\a\x00\x00\x01\xff\xff\xff\xc0\x01D\x01\xc0\x00\x19\x00\x00\x012\x16\a\x03\x06#\"&?\x01#\".\x01?\x01>\x02;\x012\x16\x0f\x01\x01(\x0e\x0e\a\xb0\a\x0e\f\x0e\x03.w\a\f\x06\x01 \x01\a\n\x06\x90\f\x0e\x03*\x01 \x18\f\xfe\xd0\f\x12\f\xc2\b\f\a\xf0\x06\n\x05\x13\v\x82\x00\x00\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x0f\x005\x00E\x00U\x00\x0072\x16\x1d\x01\x14\x06+\x01\"&=\x014637\x15#546;\x015#\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\x1532\x16\x1d\x01#5#\x15#5\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463!2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x80\r\x13\x13\r`\r\x13\x13\rH0\x17\x0f\xca(\r\x13\x13\r\x80\r\x13\x13\r(\xca\x0f\x170\xc00H\r\x13\x13\r`\r\x13\x13\r\x01P\r\x13\x13\r`\r\x13\x13\r`\x13\r`\r\x13\x13\r`\r\x13P0:\x0f\x17@\x13\r`\r\x13\x13\r`\r\x13@\x17\x0f:000P\x13\r`\r\x13\x13\r`\r\x13\x13\r`\r\x13\x13\r`\r\x13\x00\x00\x00\x02\xff\xfe\xff\xc0\x02B\x01\xc0\x00-\x00C\x00\x00%\x16\x06'.\x01\x06\a\x06\"'0.\a#\"\x06\a\x06\"'.\x01\x06\a\x06&7>\x0175462\x16\x1d\x01\x1e\x01\x05632\x17\x15\x14\x06#\"&'&>\x01\x16\x17\x163265\x02@\x01\f\b\x1a57\x19\x04\f\x03\x04\x04\b\b\v\x0e\x0f\x12\t\x1f(\x14\x03\f\x04\x1974\x1b\b\f\x01\x15\x8f\\\x13\x1a\x13\\\x8f\xfe\xd5\x0f\x11\x10\x10/!\x19*\b\x05\f\x19\x17\x05\x04\v\a\t\xa7\b\n\a\x1c\r#+\a\a\a\b\f\v\f\n\b\x05'\"\a\a+$\x0e\x1c\a\n\bcz\n\x12\r\x13\x13\r\x12\nzx\x0e\x0e\x82!/\x1d\x18\r\x18\t\f\f\v\t\a\x00\x04\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x15\x00\x1d\x00/\x008\x00\x00\x13\x15#\"&5\x1146;\x0162\x1732\x16\x1d\x01#\"\x066\"\x06\x14\x16264\x173\x15\x14\x06+\x01\"&5\x1146;\x01\x15\x14\x167\x15#532\x1f\x01\x16\x80h\n\x0e\x0e\nQ\x12J\x12Q\n\x0e\x88\x17!*\x14\x0e\x0e\x14\x0e\xa0h\x0e\n\xf0\n\x0e\x0e\n\x88\x0er`\x06\n\aB\a\x01\b\xe8\x0e\n\x01P\n\x0e \x0e\nH!y\x0e\x14\x0e\x0e\x14\xea\xc8\n\x0e\x0e\n\x010\n\x0eh\n\x0e&\x06`\aB\a\x00\x00\x00\x00\x03\x00\x00\xff\xbf\x01`\x01\xc1\x00\r\x00 \x000\x00\x00\x1753\x15\x14\x0f\x01\x06+\x01\"/\x01&\x034632\x16\x15\x14\a\x06\a0\x15#41&'&7264&#\"\x06\x15\x14\x1626546`\xa0\x05\x11\n\x11>\x11\t\x12\x05`dKJg,%\x0f\xa0\x0f%,\xb0\a\t\t\a.B\t\x0e\t/\x06&&\n\b\x1a\x0e\x0e\x1a\b\x01 GigIB2+0\x01\x010+2\x92\t\x0e\tB.\a\t\t\a!/\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\a\x00\x0f\x00U\x00\x00$\"&462\x16\x14\x06462\x16\x14\x06\"7\x1e\x01\x1d\x01\x14\x06#!\"&=\x01467\x15\x0e\x01\x15\x14\x162654&'5\x16\x17\x1627267\x15\x0e\x01\x1d\x01\x14\x1f\x01\x16?\x016/\x01546\x16\x1d\x01\a\x06\x1f\x01\x16?\x016=\x014&'\x01\x15jKKjK\xf8\x0e\x14\x0e\x0e\x14\xca6J\x1a\x13\xfe\x9a\x13\x1a@0\x11\x17!.!\x16\x12\f\v\x1c:\x1d\x01\x04\x01\x1c$\x0e\x1f\b\x01\x04\x01\b\x1300\x13\b\x01\x04\x01\b \r$\x1c\xc0KjKKj\xfd\x14\x0e\x0e\x14\x0e\x9f\x02N5-\x13\x1a\x1a\x13-1K\bQ\x05\x1d\x13\x17!!\x17\x13\x1d\x05R\x02\x03\n\n\x01\x01.\x05,\x1d,\x0e\x02\x04\x01\a\x10\b\x02\x03\x1b \x19\x19\x1e\x1c\x04\x02\b\x10\a\x01\a\x02\r*\x1d,\x05\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc2\x00B\x00J\x00\x00\x012\x1e\x01\x15\x14\a\x15\x14\x06#\"&'.\x01=\x0146?\x016\x16\x1f\x01\x16\x06\x0f\x01\x15\x14\x16326=\x01'.\x01?\x01>\x02\x1f\x01\x1e\x01\x1d\x01\x14\x06\a\x1e\x02326=\x01&7>\x01\x16264&\"\x06\x14\x01\xbf\x12\x1e\x11 gIGg\x027I\v\b?\n\x10\x02\x03\x02\v\t\x1f9('8\x1f\n\v\x02\x04\x01\b\f\a?\b\vI7\x02\x1e3\x1d.B!\x01\x01$\x14\x0e\t\t\x0e\t\x01P\x11\x1d\x12%\x12qEc_D\vY9\x9b\t\r\x02\f\x02\v\t\x10\n\x10\x02\x06{(8:'z\x06\x02\x10\n\x10\x06\n\x04\x01\r\x02\r\t\x9b9X\f\x1b.\x1a=+q\x12&\x1a%P\t\x0e\t\t\x0e\x00\x00\x00\x04\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\t\x00\r\x00\x17\x00!\x00\x00\x17\x1146;\x012\x16\x15\x11\x03\x1535\x17\x11\x14\x06+\x01\x1132\x16\x01#\"&5\x1146;\x01\x80\x1c\x14\xa0\x14\x1c\xc0\x80\xc0\x1c\x1400\x14\x1c\xfe`0\x14\x1c\x1c\x140 \x01\x90\x14\x1c\x1c\x14\xfep\x01\x80 P\xff\x00\x14\x1c\x01`\x1c\xfe\xbc\x1c\x14\x01\x00\x14\x1c\x00\x00\x00\x02\xff\xff\xff\xc0\x01\xc1\x01\xc0\x00\x05\x00+\x00\x00\x16\"&53\x147\x16\x15\x14\x06#!\".\x0154767>\x0254675462\x16\x1d\x01\x1e\x02\x15\x14\x1e\x01\x17\x16\xfa4&\x80\x97\t\x12\x0e\xfe\x80\t\x0f\b\t\x01\x02\x0f\x11\x14H8\x13\x1a\x13%:!\x14\x11\x0f\x02@%\x1b\x1bq\n\f\r\x13\t\x0f\b\f\n\x01\x03\x0f\x18C,:V\v\x15\r\x13\x13\r\x15\a,B&,C\x18\x0f\x03\x00\x00\x03\xff\xf9\xff\xe0\x02\x80\x01\xa0\x00\x11\x00\x19\x00'\x00\x007\"&=\x01463!2\x16\x14\x06+\x01\x14\x06#\x13#\x153264&\x13!\"'&763!2\a\x06\a\x06\xc0(8\x0e\n\x01\x885KK5 8(\x80 \x1a&&\x16\xfe\x00!\f\t\r\x02\x03\x02H\x0f\x04\x05\x1a\b@8(\xe8\n\x0eKjK(8\x01 \x80&4&\xfe\x80 \x18\a\x01\x17\x1d\t\x03\x00\x00\x00\x00\a\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1b\x00'\x003\x00;\x00G\x00S\x00o\x00\x00\x05\x15!54;\x01\x1146;\x01546;\x012\x16\x1d\x0132\x16\x15\x1132\x03#\"\x1d\x01\x14;\x012=\x014\a32=\x014+\x01\"\x1d\x01\x14\x17#\"\x1d\x013547#\"\x1d\x01\x14;\x012=\x014\a4+\x01\"\x1d\x01\x14;\x0125'3\x15\x14;\x012=\x0132=\x014+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14\x01\xc0\xfe@\f\x14\x0e\nX\x0e\np\n\x0eX\n\x0e\x14\f\x8c(\f\f(\f\xb4(\f\f(\ft(\f@4(\f\f(\f\x80\f(\f\f(\f\n\x1a\x06\x14\x06\x1a\x06\x06\x1a\x06\x14\x06\x1a\x06,\x14\x14\f\x01h\n\x0eH\n\x0e\x0e\nH\x0e\n\xfe\x98\x01 \f(\f\f(\f@\f(\f\f(\f\x80\fTT\f`\f(\f\f(\f\f\f\f(\f\f\xf4\x1a\x06\x06\x1a\x06\x14\x06\x1a\x06\x06\x1a\x06\x14\x06\x00\x00\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00'\x00/\x00K\x00S\x00X\x00\x00%2\x16\x1d\x01\x14\x06+\x01\x14\x06\"&5#\x14\x06\"&5#\"&5\x11463!2\x16\x1d\x0132\x1f\x01\x16\x1d\x01\x04264&\"\x06\x14754+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132\x16264&\"\x06\x1475'#\x15\x02p\a\t\t\a08P8\x808P8\x10\x14\x1c\x1c\x14\x01@\x14\x1c,\x14\x0ed\x0e\xfe,(\x1c\x1c(\x1c\xc0\b8\b0\b8\b\b8\b0\b8\b\x9c(\x1c\x1c(\x1c\x80d,`\t\a \a\t(88((88(\x1c\x14\x01@\x14\x1c\x1c\x140\x0ed\x0e\x14lp\x1c(\x1c\x1c(\xdc0\b8\b\b8\b0\b8\b\b8\xf0\x1c(\x1c\x1c(\xb4\fdp\x00\x05\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\r\x00\x11\x00\x1b\x00%\x00I\x00\x00\x17\x113546;\x012\x16\x1d\x013\x11\x03\x1535\x17\x11\x14\x06+\x01\x1132\x16\x01#\"&5\x1146;\x01\x054&+\x0154&+\x01\"\x06\x1d\x01#\"\x06\x1d\x01\x14\x16;\x01\x15\x14\x16;\x0126=\x013265` \x1c\x14\xa0\x14\x1c \xe0\x80\xc0\x1c\x14\x10\x10\x14\x1c\xfe@\x10\x14\x1c\x1c\x14\x10\x01 \t\a0\t\a \a\t0\a\t\t\a0\t\a \a\t0\a\t \x01`0\x14\x1c\x1c\x140\xfe\xa0\x01\x80 P\xff\x00\x14\x1c\x01`\x1c\xfe\xbc\x1c\x14\x01\x00\x14\x1c\x90\a\t0\a\t\t\a0\t\a \a\t0\a\t\t\a0\t\a\x00\x00\x00\x01\x00\x00\xff\xe0\x02\x80\x01\xa0\x00/\x00\x00%\x16\x14\x0f\x02#\a32\x14+\x01535#\a#'53535'575#5#573\x1735#532\x14+\x01\x173\x17\x02 ``\x800\x18u(\x15\x15s\x100C\"\v\b0@@0\b\v\"C0\x10s\x15\x15(u\x180\xe0\x15\x16\x15\x10\x10\x94\f\f\xa4P\vE\x10\x03\b*\b\x03\x10E\vP\xa4\f\f\x94\x10\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x19\x00\"\x00.\x00:\x00\x00\x012\x16\x1d\x01\x14\x06\x0f\x01\x15\x14\x06#!\"&5\x11463!2\x16\x1d\x01\x1754&+\x01\x1576\x0626=\x014&\"\x06\x1d\x01\x14\x0626=\x014&\"\x06\x1d\x01\x14\x01p!/\x1a\x15Q\x0e\n\xfe\xf0\n\x0e\x0e\n\x01\x10\n\x0e@\t\a07\t\xb7\x0e\t\t\x0e\tW\x0e\t\t\x0e\t\x01`/!\x81\x18'\n$*\n\x0e\x0e\n\x01\x90\n\x0e\x0e\n(с\a\t\xb8\x19\x04E\t\a\xe0\a\t\t\a\xe0\a\t\t\a\xe0\a\t\t\a\xe0\a\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x003\x00\x00\x01\x11\x14\x06#!\"&5\x11463!2\x16\a#\"\x06\x1d\x01#54&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x013\x15\x14\x16;\x0126=\x014&\x01\xc0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1cp \a\t\x80\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\x01p\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1cD\t\aPP\a\t\t\a\xe0\a\t\t\aPP\a\t\t\a\xe0\a\t\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00+\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0554+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01@\f\\\f8\f\\\f\f\\\f8\f\\\f\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfc8\f\\\f\f\\\f8\f\\\f\f\\\x00\x02\x00\x18\x00\x1f\x01\xa9\x01a\x00\x15\x00*\x00\x00?\x0162\x1f\x01\x16\x14\x0f\x01\x17\x1e\x01\x06\x0f\x01\x06\"/\x01&4\a&4?\x0162\x1f\x01\x16\x14\x0f\x01\x17\x16\x14\x0f\x01\x06\"'\xe0\x88\a\x14\a\x16\a\a``\x05\x03\x03\x05\x16\a\x14\a\x88\a\xb9\a\a\x88\a\x14\a\x16\a\a``\a\a\x16\a\x14\aш\a\a\x17\a\x14\a``\x05\f\r\x04\x17\a\a\x88\a\x14\x1b\a\x14\a\x88\a\a\x17\a\x14\a``\a\x14\a\x17\a\a\x00\x02\x00\x18\x00\x1f\x01\xa8\x01a\x00\x14\x00+\x00\x007\a\x06\"/\x01&4?\x01'&4?\x0162\x1f\x01\x16\x147\x16\x14\x0f\x01\x06\"/\x01&4?\x01'&4?\x01>\x012\x16\x17\xe0\x88\a\x14\a\x16\a\a``\a\a\x16\a\x14\a\x88\a\xb9\a\a\x88\a\x14\a\x16\a\a``\a\a\x16\x04\t\t\t\x03\xaf\x88\a\a\x17\a\x14\a``\a\x14\a\x17\a\a\x88\a\x14\x1b\a\x14\a\x88\a\a\x17\a\x14\a``\a\x14\a\x17\x03\x04\x04\x03\x00\x00\x00\x02\xff\xff\xff\xf8\x01A\x01\x88\x00\x14\x00+\x00\x007\x17\x16\x14\x0f\x01\x06\"/\x01\a\x06\"/\x01&4?\x0162'62\x1f\x01\x16\x14\x0f\x01\x06\"/\x01\a\x0e\x01\"&/\x01&47\xb1\x88\a\a\x17\a\x14\a``\a\x14\a\x17\a\a\x88\a\x14\x1b\a\x14\a\x88\a\a\x17\a\x14\a``\x04\t\t\t\x03\x17\a\a\xc0\x88\a\x14\a\x16\a\a``\a\a\x16\a\x14\a\x88\a\xb9\a\a\x88\a\x14\a\x16\a\a``\x04\x03\x03\x04\x16\a\x14\a\x00\x00\x00\x02\xff\xff\xff\xf8\x01A\x01\x88\x00\x14\x00)\x00\x007'&4?\x0162\x1f\x01762\x1f\x01\x16\x14\x0f\x01\x06\"\x17\x06\"/\x01&4?\x0162\x1f\x01762\x1f\x01\x16\x14\a\x8f\x88\a\a\x17\a\x14\a``\a\x14\a\x17\a\a\x88\a\x14\x1b\a\x14\a\x88\a\a\x17\a\x14\a``\a\x14\a\x17\a\a\xc0\x88\a\x14\a\x16\a\a``\a\a\x16\a\x14\a\x88\a\xb9\a\a\x88\a\x14\a\x16\a\a``\a\a\x16\a\x14\a\x00\x01\x00\x18\x00\x1f\x00\xe9\x01a\x00\x15\x00\x00?\x0162\x1f\x01\x16\x14\x0f\x01\x17\x1e\x01\x06\x0f\x01\x06\"/\x01&4 \x88\a\x14\a\x16\a\a``\x05\x03\x03\x05\x16\a\x14\a\x88\aш\a\a\x17\a\x14\a``\x05\f\r\x04\x17\a\a\x88\a\x14\x00\x01\x00\x18\x00\x1f\x00\xe8\x01a\x00\x14\x00\x007\a\x06\"/\x01&4?\x01'&4?\x0162\x1f\x01\x16\x14\xe0\x88\a\x14\a\x16\a\a``\a\a\x16\a\x14\a\x88\a\xaf\x88\a\a\x17\a\x14\a``\a\x14\a\x17\a\a\x88\a\x14\x00\x01\xff\xff\x00X\x01A\x01(\x00\x14\x00\x00\x13\x17\x16\x14\x0f\x01\x06\"/\x01\a\x06\"/\x01&4?\x0162\xb1\x88\a\a\x17\a\x14\a``\a\x14\a\x17\a\a\x88\a\x14\x01 \x88\a\x14\a\x16\a\a``\a\a\x16\a\x14\a\x88\a\x00\x00\x00\x00\x01\xff\xff\x00X\x01@\x01(\x00\x14\x00\x007'&4?\x0162\x1f\x01762\x1f\x01\x16\x14\x0f\x01\x06\"\x8f\x88\a\a\x17\a\x14\a``\a\x14\a\x17\a\a\x88\a\x14`\x88\a\x14\a\x16\a\a``\a\a\x16\a\x14\a\x88\a\x00\x02\x00\x00\xff\xc0\x02@\x01\xc0\x00\x1f\x00#\x00\x00\x012\x16\x15\x11\x14\x06+\x01\x1732\x16\x14\x06#!\"&46;\x017#\"&5\x11463\x01\x11!\x11\x02\x10\x14\x1c\x1c\x14\xc0\x10H\n\x0e\x0e\n\xfe\xf0\n\x0e\x0e\nH\x10\xc0\x14\x1c\x1c\x14\x01\xd0\xfe@\x01\xc0\x1c\x14\xfe\xc0\x14\x1c0\x0e\x14\x0e\x0e\x14\x0e0\x1c\x14\x01@\x14\x1c\xfe\xa0\x01 \xfe\xe0\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x17\x00!\x00%\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x14\x16;\x01267\x13\x11!\x11463!2\x16\x03\x11!\x11\x02p\a\t&\x1a\xfe\x00\x1a&\t\a\xef\x14\r=\x0e\x12\x01\xc2\xfe\x00\x1c\x14\x01\xa0\x14\x1c@\xfe\x80 \t\a\x10\x1a&&\x1a\x10\a\t\v\x15\x11\x0f\x01p\xfe\xb0\x01P\x14\x1c\x1c\xfe\xdc\x01\x00\xff\x00\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x0f\x00\x17\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x12264&\"\x06\x14\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\xa3\x1a\x13\x13\x1a\x13\x01\xc0\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c\xfe \x13\x1a\x13\x13\x1a\x00\x00\x02\x00\x00\xff\xc0\x01@\x01\xc0\x00\x0f\x00\x17\x00\x00\x012\x16\x15\x11\x14\x06+\x01\"&5\x11463\x12264&\"\x06\x14\x01\x10\x14\x1c\x1c\x14\xe0\x14\x1c\x1c\x14c\x1a\x13\x13\x1a\x13\x01\xc0\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c\xfe \x13\x1a\x13\x13\x1a\x00\x00\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x1c\x009\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"\x06\x1d\x01#2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"\x06\x1d\x01\x01\xd0\x14\x1c\x1c\x14\x80\x14\x1c^B\b\n\x0e\x0e\n\b\x1a&\xd0\x14\x1c\x1c\x14\x80\x14\x1c^B\b\n\x0e\x0e\n\b\x1a&\xc0\x1c\x14\x80\x14\x1c\x1c\x14\xf0B^\x0e\n0\n\x0e&\x1a@\x1c\x14\x80\x14\x1c\x1c\x14\xf0B^\x0e\n0\n\x0e&\x1a@\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x1c\x009\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x0126=\x01#\"&=\x01463#2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x0126=\x01#\"&=\x01463\x01\xd0\x14\x1c^B\b\n\x0e\x0e\n\b\x1a&P\x14\x1c\x1c\x14\xa0\x14\x1c^B\b\n\x0e\x0e\n\b\x1a&P\x14\x1c\x1c\x14\x01\xa0\x1c\x14\xf0B^\x0e\n0\n\x0e&\x1a@\x1c\x14\x80\x14\x1c\x1c\x14\xf0B^\x0e\n0\n\x0e&\x1a@\x1c\x14\x80\x14\x1c\x00\x00\x00\x00\a\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\a\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x007\x00\x00\x00\x14\x06\"&462\x022\x16\x14\x06\"&462\x16\x14\x06\"&4 \x14\x06\"&462\x162\x16\x14\x06\"&4$2\x16\x14\x06\"&4\x002\x16\x14\x06\"&4\x010\x1c(\x1c\x1c(((\x1c\x1c(\x1c\xec(\x1c\x1c(\x1c\xfe\xc0\x1c(\x1c\x1c(\x15(\x1c\x1c(\x1c\x01B(\x1c\x1c(\x1c\xfe\xf6(\x1c\x1c(\x1c\x01\xa4(\x1c\x1c(\x1c\xfe`\x1c(\x1c\x1c(\xec\x1c(\x1c\x1c((\x1c\x1c(\x1c\x93\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x01B\x1c(\x1c\x1c(\x00\x01\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x00\x122\x16\x14\x06\"&4\x99Α\x91Α\x01\xb8\x91Α\x91\xce\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00)\x00\x00\x122\x16\x14\x06\"&4\x04\"\x06\x14\x16264&\"\x06\x14\x16264\x1764.\x01\x06\a\x06\"'.\x01\x0e\x01\x14\x17\x162\x91Α\x91Α\x01U\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13\xa3\x04\x06\t\n\x04#n#\x04\n\t\x06\x04-\x8c\x01\xb8\x91Α\x91\xce\x17\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x97\x04\v\a\x05\x02\x05**\x05\x02\x05\a\v\x046\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00%\x00\x00\x122\x16\x14\x06\"&4\x04\"\x06\x14\x16264&\"\x06\x14\x16264\x17\x16>\x01'&\"\a\x06\x1e\x01762\x91Α\x91Α\x01U\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13\x8a\a\x12\x05\x05-\x8c-\x06\a\x11\a#n\x01\xb8\x91Α\x91\xce\x17\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\xc7\b\x04\x10\b66\a\x11\x03\a*\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00\x00\x122\x16\x14\x06\"&4\x16\"\x06\x14\x16264\x1724+\x01\"\x1436264&\"\x06\x14\x91Α\x91Α\xb5\x1a\x13\x13\x1a\x13\x90\x10\x10\xc0\x10\x10\xa3\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xce\x17\x13\x1a\x13\x13\x1a\xad \x80\x13\x1a\x13\x13\x1a\x00\x00\x00\x04\xff\xff\x00 \x02\x81\x01`\x00\x11\x00-\x005\x00=\x00\x00\x012\x16\x14\x06#\"&'#\x0e\x01#\"&463\x1754+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132\x16264&\"\x06\x146264&\"\x06\x14\x01\xe0B^^B\x1cC\x13\\\x13C\x1cB^^BX\f4\f\x18\f4\f\f4\f\x18\f4\f\xc7\"\x17\x17\"\x17W\"\x17\x17\"\x17\x01`^\x84^\x1c\x14\x14\x1c^\x84^\xac\x18\f4\f\f4\f\x18\f4\f\f4@\x17\"\x17\x17\"I\x17\"\x17\x17\"\x00\r\x00\x00\x00\x00\x02@\x01\x80\x00\x0f\x00\x1b\x00'\x003\x00?\x00K\x00W\x00c\x00o\x00{\x00\x87\x00\x93\x00\x9f\x00\x00)\x01\"&5\x11463!2\x16\x15\x11\x14\x06\x0154+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012\x0554+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012\x0554+\x01\"\x1d\x01\x14;\x012%54+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012\x02\x10\xfe \x14\x1c\x1c\x14\x01\xe0\x14\x1c\x1c\xfe\\\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f\xfe\xb0\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f\xfe\xb0\f(\f\f(\f\x01 \f\xe8\f\f\xe8\f`\f(\f\f(\f\x1c\x14\x01 \x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x01\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\fT(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\fT(\f\f(\f\f(\f\f(\f\f(\f\f(\f\x00\x04\x00\b\xff\xc0\x02\x00\x01\xc1\x00\a\x00.\x004\x00X\x00\x00\x13\x1e\x01\x17\x15.\x01'76\x16\x1d\x01\x14\a\x06#\"&#\"\a\x15\x14\x06+\x01\"&5\x11&546\x17\x1e\x02\x17\x16\a62\x1632\a5\x06\a\x156%5\x06\a\x15\x06'5&'\x15&\a5\x06\a\x1567\x156\x17\x15\x16\x175\x167\x15675\x06\a56\xf3\t2\x0f\t2\x0f\xdf\x10\x1e\x0e;?$i\x19>4\x0e\n\x10\n\x0e\x18\"\x18\x0e\x18\x0f\x01\x01\x05!Gh\x1a0\xe4\"(#\x01M'##&\f>&#\x137.\x1c(!\v?&#%% *\x1b\x01\x02\x02\x11\x03D\x02\x11\x03\xbf\a\x12\x12\xf3\x11\t)\"\x16^\n\x0e\x0e\n\x01\x82\x11\x1d\x18!\x01\x01\x0e\x17\x0e\r\v\f#\xe3H\x03\x0fF\r\x8aG\x11\x06H\x06\tD\x02\x14D\v\x05G\x01\x15F\x11\x04F\x03\aD\x02\x14D\v\x05H\x04\x18F\x14\x06G\x04\x00\x00\x02\xff\xff\xff\xe0\x02\x80\x01\x9b\x00\x14\x00$\x00\x00%\a\x06\"/\x01&4?\x01'&4?\x0162\x1f\x01\x16\x14\x05\x14\x06#!\"&=\x01463!2\x16\x15\x01\x02\xc2\a\x14\a\x17\a\a\x9a\x9a\a\a\x17\a\x14\a\xc2\a\x01w\x0e\n\xfe\xd0\n\x0e\x0e\n\x010\n\x0e\xaf\xc2\a\a\x16\a\x14\a\x9b\x9b\a\x14\a\x16\a\a\xc2\a\x14\xbe\n\x0e\x0e\n \n\x0e\x0e\n\x00\x00\x03\xff\xfa\xff\xbd\x02\x86\x01\xc3\x00\v\x00\x1b\x00+\x00\x00\x05'&7\x136\x1f\x01\x16\a\x03\x06'\x06/\x01&?\x016\x1f\x01\x16\x0f\x01\x17\x16\a\x05\x06/\x01&?\x01'&?\x016\x1f\x01\x16\a\x01\x17=\f\x04\x88\x03\f=\f\x04\x88\x04}\b\t\x90\n\n\x90\t\b+\t\t[[\t\t\x01\x1c\t\b+\t\t[[\t\t+\b\t\x90\n\n@\x12\x03\f\x01\xd6\f\x03\x12\x03\f\xfe*\ft\t\b\x87\t\t\x87\b\t.\t\bPP\b\t/\b\t.\t\bPP\b\t.\t\b\x87\t\t\x00\x00\x00\x02\xff\xff\xff\xdc\x02@\x01\xa5\x00\x1a\x000\x00\x00\x1376\x16\x1d\x01\x1e\x03\x15\x14\x06\a\x06&76&'\x15\x14\x06/\x01&4\a&4?\x016\x16\x1d\x01\a\x0e\x01\x151\x14\x16\x1f\x01\x15\x14\x06'\x88\xb0\f\x1c3N>!0#\v\x15\x04\x1c9T\x1c\f\xb0\bx\b\b\xb0\f\x1cm\b\v\v\bm\x1c\f\x01\x02\x98\n\r\x0fS\x04\x15)F/,U\x19\b\x0e\fZR\nT\x0f\r\n\x98\a\x16\x1d\a\x16\a\x98\n\r\x0f\x10^\a\x18\v\v\x18\a^\x10\x0f\r\n\x00\x00\x00\x01\xff\xfb\xff\xbd\x02\t\x01\xc9\x00\x0f\x00\x00\x016\x16\a\x03\x0e\x01.\x01=\x01#\"&67\x01\xbd\x1c/\f\xbf\b \x1e\x17\xb0\x19\x1b\n\x17\x01\xbc\f/\x1c\xfe`\x11\x0e\x06\x1a\x12\xb0%-\v\x00\x00\x00\x00\x01\x00\x00\xff\xc0\x02\a\x01\xc7\x007\x00\x00%2\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&5\x11\a3\x15#\"&5\x11#\"&=\x0146;\x01546;\x012\x16\x15\x117#5376\x1f\x01\x16\x0f\x01\x15\x01\xe8\n\x0e\x0e\n(\x0e\n0\n\x0e\x93s\xe8\n\x0e(\n\x0e\x0e\n(\x0e\n0\n\x0e\x93s\xd3;\v\f\x16\f\f;`\x0e\n0\n\x0e(\n\x0e\x0e\n\x01\x1b\x93`\x0e\n\x01\b\x0e\n0\n\x0e(\n\x0e\x0e\n\xfe\xe5\x93`;\f\f\x16\f\v;\xf3\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x006\x00>\x00F\x00N\x00\x00\x01\x14\x06\a\x06\a\x0e\x02\a\x06\a\x06\a\x1e\x01\x15\x14\x06\"&54>\x0175.\x015462\x16\x15\x14\x06\a\x1567>\x02767.\x025462\x16$\"\x06\x14\x16264\x02264&\"\x06\x14\x12\"\x06\x14\x16264\x01\x80\x1e\x18\x01\x15\r- \x1c2\x10\n\x05\x17\x1c/B/\x0e\x1a\x10\x19\x1f/B/\x1f\x19\x189\x18\x18\x1e\a\v\x01\x11\x1a\x0f/B/\xfe\xd7\x0e\t\t\x0e\t\x17\x0e\t\t\x0e\t\xf7\x0e\t\t\x0e\t\x010\x1a*\b*\x1a\x10\x13\x06\x02\x05\b\x05\b\t)\x19!//!\x12\x1f\x16\x05\xc8\a*\x1b!//!\x1b*\a\x90\v\x06\x02\x03\v\t\r\x18\x05\x16 \x12!///\t\x0e\t\t\x0e\xfe\x89\t\x0e\t\t\x0e\x017\t\x0e\t\t\x0e\x00\x00\x03\xff\xff\xff\xbf\x02\x01\x01\xc1\x00\x17\x00/\x00?\x00\x00%\x16\x0f\x01\x06\"&4?\x016\x1f\x01\x16\x0f\x01\x06\x14\x162?\x016\x17/\x01&?\x0162\x16\x14\x0f\x01\x06/\x01&?\x0164&\"\x0f\x01\x06\x13\x06\"'\x01&4?\x0162\x17\x01\x16\x14\a\x010\t\t-,~Y,-\t\b(\b\b-\x15*<\x15-\b\b\x10(\t\t-,~Y,-\t\b(\b\b-\x15*<\x15-\b\xe2\a\x14\a\xfeG\a\a\x17\a\x14\a\x01\xb9\a\a*\b\t-,Y~,-\t\t(\b\b-\x15<*\x15-\b\b\xdc(\b\t-,Y~,-\t\t(\b\b-\x15<*\x15-\b\xfe\xa1\a\a\x01\xb9\a\x14\a\x17\a\a\xfeG\a\x14\a\x00\x02\x00\x18\xff\xc0\x01z\x01\xc0\x00)\x001\x00\x00\x132\x16\x15\x14\x0e\x03\x1d\x01\x14\x06+\x01\"&=\x014>\x027>\x0154&#\"\x0e\x01\a\x0e\x01/\x01.\x0176\x122\x16\x14\x06\"&4\xcaBn\x1a%%\x1a\x0e\nH\n\x0e\r\x1f\x13\x13\x1b\x16,\x19\x13\x1d\x14\x0f\x06\x13\b+\b\x03\x06?F:((:(\x01\xc0Z@ 1\x1b\x14\x15\v\x06\n\x0e\x0e\n\n\x16\"\x1b\f\v\x0f\x15\x0f\x16\x1c\r\x13\x11\b\x03\x06!\x06\x13\b[\xfe\x8b)9))9\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x00\xc0\x01\xc0\x00\x1e\x00&\x00\x00735#\"&=\x0146;\x012\x16\x1d\x0132\x16\x1d\x01\x14\x06+\x01\"&=\x0146\x122\x16\x14\x06\"&4\x14\x14\x14\b\f\f\bp\b\f\x14\b\f\f\b\x98\b\f\f6<**<*\x18\x90\f\b0\b\f\f\b\xd4\f\b0\b\f\f\b0\b\f\x01\xa8*<**<\x00\x00\x02\x00\x10\xff\xc0\x00\xb0\x01\xc0\x00\a\x00\x17\x00\x006\x14\x06\"&462\x0346;\x012\x16\x15\x03\x14\x06+\x01\"&5\xb0/B//Bh\x0e\n^\n\x0e\x0e\x0e\nB\n\x0e1B//B/\x01G\n\x0f\x0f\n\xfe\xf0\n\r\r\n\x00\x02\x00\x00\x00\x00\x02\x00\x01\xc0\x00\x1f\x00S\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015#\"&54?\x016;\x012\x16\x1d\x01'2\x16\x1d\x01\x14\x06+\x01\a\x1732\x16\x1d\x01\x14\x06+\x01\"/\x01\a\x06+\x01\"&=\x0146;\x017'#\"&=\x0146;\x012\x1f\x01763\x01\xf0\a\t\t\a`\a\t\t\a\x10\x10\a\t\x02\x10\x04\n0\a\t\x90\a\t\t\a!NN!\a\t\t\aC\b\x05PP\x05\bC\a\t\t\a!NN!\a\t\t\aC\b\x05PP\x05\b\x01 \t\a \a\t\t\a \a\t`\t\a\x04\x03 \t\t\a\x90`\t\a0\a\tpp\t\a0\a\t\ass\a\t\a0\a\tpp\t\a0\a\t\ass\a\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\x80\x00\x1f\x00S\x00\x00!2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015#\"&54?\x016;\x012\x16\x1d\x01\x032\x16\x1d\x01\x14\x06+\x01\a\x1732\x16\x1d\x01\x14\x06+\x01\"/\x01\a\x06+\x01\"&=\x0146;\x017'#\"&=\x0146;\x012\x1f\x01763\x01\xf0\a\t\t\a`\a\t\t\a\x10\x10\a\t\x02\x10\x04\n0\a\t\x90\a\t\t\a!NN!\a\t\t\aC\b\x05PP\x05\bC\a\t\t\a!NN!\a\t\t\aC\b\x05PP\x05\b\t\a \a\t\t\a \a\t`\t\a\x04\x03 \t\t\a\x90\x01\x80\t\a0\a\tpp\t\a0\a\t\ass\a\t\a0\a\tpp\t\a0\a\t\ass\a\x00\x02\xff\xff\xff\xe0\x02\x00\x01\xa1\x00\x15\x00\x1a\x00\x00%\a32\x1d\x01\x14#!\"/\x01&47\x0162\x1f\x01\x16\x14%\a\x1737\x01\xf2\x8e\x90\f\f\xfe\x9c\x14\x0e`\x0e\x0e\x01\x00\x0e(\x0e\xa0\x0e\xfe\xc3|PrD\xae\x8e\f(\f\x0e`\x0e(\x0e\x01\x00\x0e\x0e\xa0\x0e(1}PC\x00\x00\x00\x01\x00\x00\xff\xbf\x02@\x01\xc0\x00K\x00\x00%2\x1e\x01\x15\x14\x06#\"&#\"\x0e\x01\x16\x1f\x01\"\x0e\x02.\x0254654&#\"\x0e\x01\x15\x14\x1e\x01\x15\x14\x0e\x01&/\x01\x110\x17\x1654&54632\x16\x15\x14\x06\x15\x14\x1e\x01>\x02?\x010\a\x06326\x02\a\x12\x1b\f\x1d\x1a\x141\x11\x11\x12\x01\x04\x03\x03\n! $\x1f\x19\x0e$#\x1b\x11\x1d\x11\x14\x14%54\x13\x12@p '\x1c\x1a#$\x15#**\"\v\v\x11\x13)\t2\x9f\x13\x1d\x11\x1b#$\x19##\r\f\x04\x03\x04\x02\x06\x10\r\x110\x15\x19\x1d\f\x1a\x12\x12\x1f\x17\t\x14\x14\x01\x04\x04\x04\x01M\n\v2\t2\x17\x1a\x1e\x1d\x1a\x140\x12\x11\x12\x03\x04\f\v\x04\x04Ek\x1f\x00\x00\x00\x02\x00\x00\xff\xc0\x01`\x01\xc0\x00\v\x00<\x00\x006\"&=\x01462\x16\x1d\x01\x1472\x16\x1d\x01\x14\x06\a\x1532\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015.\x01=\x0146;\x012\x16\x1d\x01\x14\x16\x17\x166=\x01463\xd8P88P8@\a\tWA8\a\t\t\a\xa0\a\t\t\a8AW\t\a\x10\a\tB19T\t\a`8(\xa0(88(\xa0(h\t\a0Bc\t\"\t\a\x10\a\t\t\a\x10\a\t\"\tiD(\a\t\t\a*3N\x04\x06M80\a\t\x00\x00\x02\xff\xf9\xff\xb9\x02\x87\x01\xc7\x00%\x00F\x00\x00\x05\x16\x0f\x01\x06'\x01&?\x016\x1f\x0154632\x1e\x01\x1d\x01\x14\a\x176=\x0146;\x012\x16\x1d\x01\x14\x0f\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015.\x01=\x01\x17\x1e\x02\x17\x167\x17\x06\a\x15\x02z\f\t\x14\n\f\xfd\xb3\f\t\x14\n\f\xb38(\x1a,\x1a\x05\x1a\v\t\a\x10\a\t\x14L\a\t\t\a\xa0\a\t\t\a8AW4\x06\x1f/\x1b\a\x0e2\x12\x10\n\n\r\x19\f\t\x01\xc7\n\r\x19\f\t\x8a-(8\x1a,\x1a\xa0\x0e\x10\x14\x18\x1a0\a\t\t\a0*&\x80\t\a\x10\a\t\t\a\x10\a\t\"\tiD\a)\x1a,\x1d\x02\x01\x01'\x06\x02\"\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\r\x00+\x00\x00\x13!2\x15\x11\x14\x06#!\"&5\x114%\x14#!\"=\x0146;\x0154;\x012\x1d\x01354;\x012\x1d\x0132\x16\x15\f\x01\xa8\f\x1c\x14\xfe\xa0\x14\x1c\x01\xc0\f\xfeX\f\x1c\x140\f(\f\x80\f(\f0\x14\x1c\x01\x00\f\xfe\xfc\x14\x1c\x1c\x14\x01\x04\f,\f\f$\x14\x1c4\f\f44\f\f4\x1c\x14\x00\x00\x00\x00\x02\xff\xfe\xff\xc0\x01\xc0\x01\xc0\x008\x00@\x00\x00\x016\x16\x1d\x01\x14\x06/\x01&5#\x15\x1e\x03\x1d\x01\x14\x06+\x01\"&=\x014675*\x02\x0e\x05\a\x0e\x01.\x01767&632\x16\a347\x06264&\"\x06\x14\x01\xb2\x06\b\b\x06\xa8\n(\x0f\x1b\x13\v\x0e\n\x90\n\x0e)\x1f\x04\x1e\x06\x18\x06\x12\a\r\t\x05\x03\x13\x12\b\x04\x1e<\v!\x1e\x1c\"\b:\n\x81\x0e\t\t\x0e\t\x01\xa6\x01\b\x05t\x05\b\x01\x1c\x02\x10\x1b\x04\x12\x18\x1f\x10\xf8\n\x0e\x0e\n\xf7!5\b\x1b\x02\x03\x06\n\r\x13\f\t\b\a\x13\tL\x0f\x1b1-\x1b\x10\x02\x12\t\x0e\t\t\x0e\x00\x00\x02\x00\x00\xff\xc0\x02\x01\x01\xc0\x00,\x004\x00\x00\x01\x16\x15\x14\x06\a\x15\x14\x06\x0f\x01\x06#\"&=\x01\a\x06&/\x01&6?\x01#\".\x0154?\x01>\x02;\x01>\x0132\x17\x16\x06264&\"\x06\x14\x01\xf9\aD<\x10\vb\x05\x06\n\x0e\x16\v\x1a\t3\t\x01\b\x17h\a\v\x06\x031\x04\x0e\x11\bh'dH3 \n\x88\"\x17\x17\"\x17\x01\xad!2Hd'h\r\x19\x051\x03\x0e\nh\x17\t\x01\b3\n\x1b\t\x16\x06\v\a\x06\x05c\a\f\a=C\a\x02\x9f\x17\"\x17\x17\"\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x1c\x00\x00\x04\"&462\x16\x14%\x17\x162?\x0164/\x01764/\x01&\"\x0f\x01\x06\x14\x01gΑ\x91Α\xfe\x96\x88\a\x14\a\x10\b\bee\b\b\x10\b\x13\a\x88\a8\x91Α\x91\xceV\x87\b\b\x10\b\x13\aff\a\x14\a\x10\b\b\x87\a\x14\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x1c\x00\x00\x122\x16\x14\x06\"&4\x05'&\"\x0f\x01\x06\x14\x1f\x01\a\x06\x14\x1f\x01\x162?\x0164\x99Α\x91Α\x01j\x88\a\x14\a\x10\b\bee\b\b\x10\b\x13\a\x88\a\x01\xb8\x91Α\x91\xceV\x87\b\b\x10\b\x13\aff\a\x14\a\x10\b\b\x87\a\x14\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x1c\x00\x006462\x16\x14\x06\"\x13\a\x06\x14\x1f\x01\x162?\x01\x17\x162?\x0164/\x01&\"\b\x91Α\x91\xceV\x87\b\b\x10\b\x13\aff\a\x14\a\x10\b\b\x87\a\x14YΑ\x91Α\x01j\x88\a\x14\a\x10\b\bee\b\b\x10\b\x13\a\x88\a\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x1c\x00\x00\x00\x14\x06\"&462\x03764/\x01&\"\x0f\x01'&\"\x0f\x01\x06\x14\x1f\x01\x162\x01\xf8\x91Α\x91\xceV\x87\b\b\x10\b\x13\aff\a\x14\a\x10\b\b\x87\a\x14\x01'Α\x91Α\xfe\x96\x88\a\x14\a\x10\b\bee\b\b\x10\b\x13\a\x88\a\x00\x00\x00\x00\x02\xff\xfe\xff\xc0\x02B\x01\xc1\x00B\x00J\x00\x007\"&?\x016\x1f\x01\x16\x06+\x01\x1e\x01\x175#\"=\x014;\x015.\x01546\x17\x1e\x01\x15\x14\x06\a\x1532\x16\x1d\x01\x14\x06+\x01\x15>\x017#\"&?\x016\x1f\x01\x16\x06+\x01\x0e\x01\"&'\x00\"\x06\x14\x16264\r\b\x06\x05D\b\bD\x05\x06\b#\x0eR04\f\f4\x1c$9((7$\x1c4\x05\a\a\x0540R\x0e#\b\x06\x05D\b\bD\x05\x06\b \x10\x8e\xaa\x8e\x10\x01\x00\x1a\x13\x13\x1a\x13`\x0f\x05D\b\bD\x05\x0f'1\x06\xbe\f(\f\x05\n2\x1f(9\x01\x018'\x1f2\n\x05\a\x05(\x05\a\xbe\x061'\x0f\x05D\b\bD\x05\x0fIWWI\x01 \x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc1\x00&\x002\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x015462\x16\x1d\x01\x14\x06+\x01\"&=\x014&#\"\x06\x1d\x01\x1754&\"\x06\x1d\x01\x14\x1626\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x18Y}Z\x0e\n \n\x0e+\x1e\x1d*p\x17\"\x17\x17\"\x17\xc0\x1c\x14\xa0\x14\x1c\x1c\x14\xa0\x14\x1cf@ZY?\x10\n\x0e\x0e\n\x10\x1e*+\x1eg\x980\x11\x17\x17\x110\x11\x17\x17\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x1462\x16\x14\x06\"&4\x16264&\"\x06\x14\x91Α\x91Α\xac\x98ll\x98l\x83jKKjKf4&&4&\x01\xb8\x91Α\x91\xce\xfe\xe1l\x98ll\x98\xccKjKKju&4&&4\x00\x00\x00\x03\x00\b\x00x\x01\xf8\x01\b\x00\a\x00\x0f\x00\x17\x00\x00$\x14\x06\"&46:\x02\x16\x14\x06\"&4$2\x16\x14\x06\"&4\x01H*<**\x014&/\x01&\x06\x1d\x01\x14\x167\x99Α\x91Α\x01l\x06\x06\x06\x06\xb0\f\x18\x18\f\x01\xb8\x91Α\x91\xce\u007f\x03\f\f\f\x03k\a\x0e\x0e\xd0\x0e\x0e\a\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1b\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x13!2=\x014#!\"\x1d\x01\x14\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14,\x01\b\f\f\xfe\xf8\f\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xf8\f8\f\f8\f\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00\x00\x05!\"&5\x11463!2\x16\x15\x11\x14\x06'76/\x01&\x0f\x01'&\x0f\x01\x06\x1f\x01\x16\x01\x90\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xe1\xb8\f\f\x16\f\v\x96F\v\f\x16\f\fh\v \x1c\x14\x01`\x14\x1c\x1c\x14\xfe\xa0\x14\x1cb\xb8\v\f\x16\f\f\x96F\f\f\x16\f\vh\v\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1c\x00*\x00\x00\x05!\"&5\x11463!2\x16\x15\x11\x14\x06\x03\x0f\x01\x14\x1e\x013?\x016/\x01&7'&\"\x0f\x01\x06\x1f\x01\x16?\x0164\x01\x90\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xb6\x88\x06\x03\a\x039\x88\x04\x047\x05g\x1e\a\x14\a\x17\x04\x047\x05\x04\x17\a \x1c\x14\x01`\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x01.\x889\x03\a\x03\x06\x88\x04\x048\x04\t\x1e\a\a\x17\x04\x057\x04\x04\x17\a\x14\x00\x00\x00\x02\x00\x00\xff\xc0\x02A\x01\xc5\x00\x1e\x00@\x00\x00\x01\a\x06&=\x01\"\x0e\x02\x14\x17\x16\x06'.\x0154>\x033546\x1f\x01\x16\x14\a46\x17\x163276\x16\x1d\x01\x14\x06#!\"&5\x1146;\x012\x16\a\x06\a\x06+\x01\x11!\x028\x90\v\x1d-?0\x15\f\x04\x14\t\x1f+\x1c-FJ/\x1d\v\x90\b\xc0\b\x06\x05\x05\f\f\x06\n\x1c\x14\xfe\xa0\x14\x1c\x1c\x14y\t\x05\b\x1e\x15\x04\x053\x01@\x01\x0f\x88\v\f\x10H\n\x17';(\f\r\a\x18O)*>&\x16\tH\x10\f\v\x88\a\x14\xd1\x05\b\x01\x01\x04\x02\a\x06Y\x14\x1c\x1c\x14\x01`\x14\x1c\x12\x05\x0f\x16\x04\xfe\xc0\x00\x00\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1e\x00\x00>\x012\x16\x14\x06\"&\x022\x16\x14\x06\"&4\x056.\x01\x0f\x01\x06\x0f\x01\x06\x16?\x0167\xd8\x13\x1a\x13\x13\x1a\x13GΑ\x91Α\x01v\x04\a\x0e\t\x90\v\x05B\x06\x14\f\x90\v\x05\xcd\x13\x13\x1a\x13\x13\x01\x05\x91Α\x91\xce\x03\b\x10\x05\x03B\x05\v\x90\f\x14\x06B\x05\v\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1a\x00\x00\x01\x11\x14\x06#!\"&5\x11463!2\x16\x05\x17\x16?\x016&+\x01\"\x06\x01\xc0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\x9c|\b\b|\x05\x06\b\xf6\b\x06\x01p\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xa0|\b\b|\x05\x0f\x0f\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1a\x00\x005\x11463!2\x16\x15\x11\x14\x06#!\"&%'&\x0f\x01\x06\x16;\x0126\x1c\x14\x01`\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x01d|\b\b|\x05\x06\b\xf6\b\x06\x10\x01`\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\xa0|\b\b|\x05\x0f\x0f\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1a\x00\x00\x13!2\x16\x15\x11\x14\x06#!\"&5\x1146\x1376/\x01&\x06\x1d\x01\x14\x160\x01`\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\xa0|\b\b|\x05\x0f\x0f\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\x9c|\b\b|\x05\x06\b\xf6\b\x06\x00\x00\x00\x00\x01\x00\x00\xff\xe0\x01B\x01\xa0\x00E\x00\x00%\x17\x16\a\x06#\"&'#\"&=\x014;\x01&7#\"&=\x014;\x01>\x0132\x17\x1e\x02\x0f\x01\x06'&#\"\x06\a32\x16\x0f\x01\x06+\x01\x06\x1732\x16\x0f\x01\x06+\x01\x1e\x033276\x017\t\x02\v\x1e\x1fMp\x13\x1e\x05\a\f\x15\x01\x02\x16\x05\a\f!\x16oH\x19\x1b\x04\x05\x02\x01\f\x03\v\x15\x11(>\x10\x8a\x06\a\x01\x06\x02\n\x93\x02\x02\x86\x06\a\x01\x06\x02\nr\b\x18\x1f&\x15\x16\x17\f\",\v\x03\bVF\a\x05\x1c\f\x14\x16\a\x05\x1e\f@P\x05\x01\x04\a\x03,\v\x02\x04(#\t\x06\x1d\n\x13\x17\t\x06\x1c\t\x13 \x16\r\x06\x02\x00\x01\x00\x00\xff\xe0\x01@\x01\xa0\x006\x00\x00%2\x1d\x01\x14#!\"=\x014;\x015#\"=\x014;\x0154632\x17\x16\x0f\x01\x06'&#\"\x0e\x04\x1d\x0132\x1d\x01\x14+\x01\x1535463\x014\f\f\xfe\xd8\f\f$\x1c\f\f\x1cO=7/\t\a\x1d\a\t\x1e\x1b\t\x11\x0e\v\a\x04T\f\fT{\a\x05`\fh\f\f(\f\x80\f(\fB7G#\a\n$\b\x06\x13\x04\b\n\r\x0e\b@\f(\f\u007f3\x05\a\x00\x00\x00\x01\xff\xfc\xff\xc0\x01*\x01\xc0\x00A\x00\x007\x1e\x01\a\x0e\x01\a\x15\x14\x06+\x01\"&=\x01\"'.\x01?\x016\x17\x16;\x012654/\x01.\x01'&6;\x01546;\x012\x16\x1d\x012\x17\x1e\x01\x0f\x01\x06'&+\x01\"\x06\x15\x14\x16\x17\xd1,-\x10\f:$\t\a \a\t0&\x06\x02\x06\"\n\n\x0f\x13B\r\x11\x15g\".\x04\x04A1\x02\t\a \a\t0&\x06\x02\x06\"\n\n\x0f\x13B\r\x11\f\t\xd7\rT-!'\x010\a\t\t\a0\x1e\x05\x0e\x05\"\t\a\n\x11\r\x16\x06\x1e\n4\"1G0\a\t\t\a0\x1e\x05\x0e\x05\"\t\a\n\x11\r\t\x10\x03\x00\x01\x00\x00\xff\xe0\x01@\x01\xa0\x004\x00\x00\x01#\x16\x1732\x1d\x01\x14+\x01\x0e\x01\a\x17\x16\x06+\x01\"/\x01&=\x0146;\x01267#\"=\x014;\x01&+\x01\"&=\x0143!2\x1d\x01\x14\x014I\t\x05;\f\f5\x05L9\x97\x06\x06\bS\x05\x03\xa5\x04\a\x05T\x1f'\x05\x9f\f\f\x92\x14)U\x05\a\f\x01(\f\x01`\x0f\x11\f(\f8F\x02\x8b\x06\x0f\x03\x99\x03\x055\x05\a \x1b\f(\f\x1b\a\x05-\f\f(\f\x00\x01\x00\x13\xff\xe0\x01n\x01\xa0\x00:\x00\x00\x012\x16\x0f\x0132\x1d\x01\x14+\x01\a\x1532\x1d\x01\x14+\x01\x15\x14+\x01\"=\x01#\"=\x014;\x015'#\"=\x014;\x01'&6;\x012\x1f\x0236?\x0163\x01_\a\a\x03P:\f\fX\x14l\f\fl\f8\fl\f\fl\x14X\f\f:P\x03\a\aA\b\x037\x1b\x02\f\x0f7\x03\b\x01\xa0\f\x06\x96\f \f%\x1b\f \f\\\f\f\\\f \f\x1b%\f \f\x96\x06\f\aqH%#q\a\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x01\x80\x01\xa0\x00)\x002\x00\x007#\x1532\x1d\x01\x14+\x01\x15\x14\x06+\x01\"=\x01#\"=\x014;\x015#\"=\x0146;\x0154;\x012\x16\x14\x06'\x1532654&#\xef\\\xa1\f\f\xa1\a\x05;\f4\f\f44\f\a\x054\f\xa3@QQ\x9cM$((#\x80 \f(\f4\x05\a\f4\f(\f \f-\x05\a\xcf\fO\x80Qۖ)#\"(\x00\x00\x00\x06\x00\x00\xff\xe0\x02@\x01\xa0\x00E\x00N\x00R\x00Z\x00d\x00h\x00\x00\x01#\a32\x1d\x01\x14+\x01\a\x06+\x01\"/\x01#\a\x06+\x01\"/\x01#\"=\x014;\x01'#\"=\x014;\x01'&6;\x012\x1f\x01376;\x012\x1f\x01376;\x012\x16\x0f\x0132\x1d\x01\x14\x057#\x1f\x0132>\x01?\x01#\x17;\x01'&'#\x06\a\x177#\x17\x1e\x02136?\x01#\x17\x024?\aF\f\fU*\x02\n9\t\x02+7*\x02\n9\t\x02)T\f\fF\b>\f\f0\x12\x01\a\x06*\n\x02\x11m\x14\x02\t,\n\x02\x14n\x0e\x02\n.\x06\a\x01\x130\f\xfex\f&\v\x06\x01\x01\x01\x03\x1e\bQ\x06\x82\x1a\x02\x03\x02\f\x02\x03\x81\f'\f\x03\x03\x01\x01\x02\x1e\aQ\a\x01\x00 \f(\f\xb7\t\t\xb7\xb7\t\t\xb7\f(\f \f(\fQ\x05\t\tVV\t\tVV\t\t\x05Q\f(\f\x9666/\f\x18\x81 \t\v\f\f\v\u007f66\v\x18\f\x16\x8f \x00\x02\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00\x1a\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x17\x15#532\x1f\x01\x16\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\nȠ\x80\x06\n\ab\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0ez\x06\x80\ab\a\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00\x1d\x00)\x005\x00>\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x1354+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x01254+\x01\"\x1d\x01\x14;\x01257\x15#532\x1f\x01\x16\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8@\f\xa8\f\f\xa8\f\f\xa8\f\f\xa8\f\f\xa8\f\f\xa8\f`\x80\x06\n\ab\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xfe\x8c\b\f\f\b\fL\b\f\f\b\fT\f\f\b\f\fz\x06\x80\ab\a\x00\x00\x04\xff\xfd\xff\xe0\x01\xc0\x01\xa0\x00\x15\x005\x00O\x00R\x00\x0072\x16\x0f\x01\x06\"/\x01&6;\x01\x1146;\x012\x16\x15\x11%2\x16\x1d\x01\x14\x0f\x0132\x16\x1d\x01\x14\x06+\x01\"&=\x014?\x01#\"&=\x014637\x16\x15\x14\x06+\x01\"/\x01#\a\x06+\x01\"&54?\x016;\x012\x17\a3'\xb0\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\x01 \a\t\v=8\a\t\t\a\x80\a\t\v=8\a\t\t\a\x9f\x01\t\a\x19\f\x03\x05G\x04\x04\v\x19\a\t\x01;\x04\v*\v\x044 \x10`\x14\a`\x05\x05`\a\x14\x010\a\t\t\a\xfe\xd0@\t\a\x12\x0e\nF\t\a \a\t\t\a\x12\x0e\nF\t\a \a\tU\x02\x03\a\t\v\r\r\v\t\a\x03\x02\xa0\v\ve0\x00\x00\x00\x00\x04\xff\xfd\xff\xe0\x01\xc0\x01\xa0\x00\x15\x005\x00O\x00R\x00\x00\x13\"&?\x0162\x1f\x01\x16\x06+\x01\x11\x14\x06+\x01\"&5\x11\x052\x16\x1d\x01\x14\x0f\x0132\x16\x1d\x01\x14\x06+\x01\"&=\x014?\x01#\"&=\x014637\x16\x15\x14\x06+\x01\"/\x01#\a\x06+\x01\"&54?\x016;\x012\x17\a3'\x10\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\x01`\a\t\v=8\a\t\t\a\x80\a\t\v=8\a\t\t\a\x9f\x01\t\a\x19\f\x03\x05G\x04\x04\v\x19\a\t\x01;\x04\v*\v\x044 \x10\x01 \x14\a`\x05\x05`\a\x14\xfe\xd0\a\t\t\a\x010\x80\t\a\x12\x0e\nF\t\a \a\t\t\a\x12\x0e\nF\t\a \a\tU\x02\x03\a\t\v\r\r\v\t\a\x03\x02\xa0\v\ve0\x00\x00\x00\x05\xff\xfd\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00%\x005\x00E\x00U\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"&=\x01463'2\x16\x0f\x01\x06\"/\x01&6;\x01\x1146;\x012\x16\x15\x11%2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x010\a\t\t\a@\a\t\t\a@\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\x010\a\t\t\a\xc0\a\t\t\a\x80\a\t\t\a\x80\a\t\t\a\x01\x00\a\t\t\a\xff\x00\a\t\t\a \t\a \a\t\t\a \a\t@\x14\a`\x05\x05`\a\x14\x010\a\t\t\a\xfe\xd0\xc0\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t\x01\x00\t\a \a\t\t\a \a\t\x00\x05\xff\xfd\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00%\x005\x00E\x00U\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x03\"&?\x0162\x1f\x01\x16\x06+\x01\x11\x14\x06+\x01\"&5\x11!2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x010\a\t\t\a@\a\t\t\a\xe0\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\x01p\a\t\t\a\xc0\a\t\t\a\x80\a\t\t\a\x80\a\t\t\a\x01\x00\a\t\t\a\xff\x00\a\t\t\a \t\a \a\t\t\a \a\t\x01\x00\x14\a`\x05\x05`\a\x14\xfe\xd0\a\t\t\a\x010\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t\x01\x00\t\a \a\t\t\a \a\t\x00\x04\xff\xfd\xff\xde\x01\xb1\x01\xa0\x00\x1f\x005\x00=\x00S\x00\x00\x01\"&54?\x016;\x012\x16\x1d\x0132\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015\x176\x16\x1d\x01\x14\x0e\x01\a\x06&/\x01&767.\x017>\x01\x16264&\"\x06\x14\a2\x16\x0f\x01\x06\"/\x01&6;\x01\x1146;\x012\x16\x15\x11\x010\a\t\x02\x10\x04\n0\a\t\x10\a\t\t\a`\a\t\t\a\x10\n(>\x13%\x1e\x06\r\x02\n\x05\r\f\t$+\n\x05 \x10\f\f\x10\f\x9c\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\x01`\t\a\x04\x03 \t\t\ap\t\a \a\t\t\a \a\t@\xa3\v1'\v#2\"\r\x02\x06\x06\x14\x0f\x05\x05\b\x04=&\x12\x1f\\\f\x10\f\f\x10\b\x14\a`\x05\x05`\a\x14\x010\a\t\t\a\xfe\xd0\x00\x04\xff\xfd\xff\xde\x01\xb1\x01\xa0\x00\x15\x00\x1d\x00=\x00S\x00\x00%6\x16\x1d\x01\x14\x0e\x01\a\x06&/\x01&767.\x017>\x01\x16264&\"\x06\x14'\"&54?\x016;\x012\x16\x1d\x0132\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015'\x17\x16\x06+\x01\x11\x14\x06+\x01\"&5\x11#\"&?\x0162\x01J(>\x13%\x1e\x06\r\x02\n\x05\r\f\t$+\n\x05!\x1f\x10\f\f\x10\f\x1c\a\t\x02\x10\x04\n0\a\t\x10\a\t\t\a`\a\t\t\a\x10\xd5P\b\b\v0\t\a \a\t0\v\b\bP\x04\x0e\xbd\v1'\v#2\"\r\x02\x06\x06\x14\x0f\x05\x05\b\x04=&\x12\x1f\\\f\x10\f\f\x10\xf8\t\a\x04\x03 \t\t\ap\t\a \a\t\t\a \a\t@;`\a\x14\xfe\xd0\a\t\t\a\x010\x14\a`\x05\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x01\x01\xc0\x00\x0f\x00\x17\x00D\x00\x0072\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x16264&\"\x06\x14\x01\x14\x06\a32\x16\x15\x14\a#\x16\x06\a\x16\x06\a\x16\a\x0e\x02+\x01\"'&#\"&=\x0147>\x01767632\x1e\x02h\n\x0e\x0e\nP\n\x0e\x0e\n\x1e\x14\x0e\x0e\x14\x0e\x01X \x01e\x19#\x13\x01\b\x04\r\x06\n\f\x06\f\n*!\x1d\x030H#\x11\x05\a\x04\x145\x10\x0e\v\x0e\x14\v\x15\x19\x0f\xe0\x0e\n\xf0\n\x0e\x0e\n\xf0\n\x0e\xf8\x0e\x14\x0e\x0e\x14\x01y\x19?\a#\x17\x1e\x13\x11.\x11\x14)\x0e\x1a\x12\x0e\x0e\x02 \x10\a\x05\xd6\x05\x03\x15M\x0f\x0f,:\x05\x0f$\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x01\x01\xc0\x00\x0f\x00\x17\x00F\x00\x00\x1146;\x012\x16\x1d\x01\x14\x06+\x01\"&56\x14\x16264&\"\x01\"'&'.\x02'&=\x01463276;\x012\x1e\x02\x17\x16\a\x1e\x01\a\x1e\x01\a3\x16\x15\x14\x06+\x01\x1e\x01\x15\x14\x0e\x02\x0e\nP\n\x0e\x0e\nP\n\x0e(\x0e\x14\x0e\x0e\x14\x01\x02\x14\x0e\v\x0e\x0e\x1c\x1f\x10\x04\a\x05\x11#H0\x03\x15\x19$\x18\b\f\x06\f\n\x06\r\x04\b\x01\x13#\x19e\x01 \x0f\x19\x15\x01\x88\n\x0e\x0e\n\xf0\n\x0e\x0e\n2\x14\x0e\x0e\x14\x0e\xfe\xe8:,\x0f\r(+\x11\x03\x05\xd6\x05\a\x10 \x01\x05\r\v\x12\x1a\x0e)\x14\x11.\x11\x13\x1e\x17#\a?\x19\x19$\x0f\x05\x00\x00\x02\x00\x05\xff\xc0\x00\xfb\x01\xc0\x00\a\x00$\x00\x00\x122\x16\x14\x06\"&4\x13\x16\x06+\x01\x15\x14\x06+\x01\"&=\x01#\"&?\x01>\x01;\x01\x16732\x16\x17e6%%6%\xb7\x03\x0e\f8\x0e\n \n\x0e8\f\x0e\x030\x02\r\b\v%%\v\b\r\x02\x01\xc0%6%%6\xfe\xc3\f\x12h\n\x0e\x0e\nh\x12\f\xc0\a\v\x11\x11\v\a\x00\x00\x00\x02\x00\x00\xff\xc0\x00\xc0\x01\xc0\x00\a\x00$\x00\x00\x122\x16\x14\x06\"&4\x172\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\"&=\x0146;\x01\x167E6%%6%p\x14\x1c\x0e\n\x10\x0e\n@\n\x0e\x10\n\x0e\x1c\x14\v%%\x01\xc0%6%%6k\x1c\x14\x88\n\x0e\x88\n\x0e\x0e\n\x88\x0e\n\x88\x14\x1c\x11\x11\x00\x03\xff\xff\xff\xbf\x02\x01\x01\xc1\x00\a\x00/\x007\x00\x00\x122\x16\x14\x06\"&4\x05\x16\x14\x0f\x01\x17\x16\x06/\x01\a\x06\"/\x01\a\x06&?\x01'&4?\x01'&6\x1f\x01762\x1f\x0176\x16\x0f\x01\x0664&\"\x06\x14\x16\xd8P88P8\x01V\n\n^!\x03\x0f\nd0\x04\x16\x05/d\n\x10\x04!^\n\n^!\x04\x0f\vd/\x05\x16\x05/d\n\x10\x04!cKKjKK\x01 8P88P\x18\x05\x16\x05/d\n\x10\x04!^\n\n^!\x04\x0f\vd/\x05\x16\x05/d\n\x10\x04!^\n\n^!\x04\x10\nd\xbfKjKKjK\x00\x00\x00\x00\x01\x00\x1b\xff\xc0\x01\xe8\x01\xc0\x00\x18\x00\x00\x05\".\x0154632\x17\x1e\x01\a\x0e\x01\x15\x14\x1676\x16\a\x0e\x02\x01\x1bEvE\x96j\x18\x17\b\x03\a/7\x92]\b\b\x05\x18>J@EuFj\x96\x04\x02\x10\x05\x1a^6^y\x12\x02\x0f\x06\x1e*\x17\x00\x00\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\t\x00\x15\x00%\x00\x003\x11!\x11\x14\x06#!\"&7\x15\x14;\x012=\x014+\x01\"%2\x16\x1d\x01\x14\x06#!\"&=\x01463 \x01\xc0\x13\r\xfe\x80\r\x13\xa0\fh\f\fh\f\x01 \r\x13\t\a\xfe \a\t\x13\r\x01 \xfe\xe0\r\x13\x13\xe1\b\f\f\b\f\xc0\x13\r0\a\t\t\a0\r\x13\x00\x02\xff\xff\xff\xbf\x02\x01\x01\xc0\x00?\x00E\x00\x00%\x14\x06+\x01\x15\x14\a\x17\x16\x14\x06\"/\x01\x06#54+\x01\"\x1d\x01\"'\a\x06\"&4?\x01&=\x01#\"&546;\x015'&462\x1f\x013762\x16\x14\x0f\x01\x1532\x16\x002\x16\x15#4\x02\x00\x14\r7\x0e=\t\x13\x1a\n6(3\f\x18\f3(6\n\x1a\x13\t=\x0e7\r\x14\x13\r8/\t\x13\x1a\n6\xe66\n\x1a\x13\t/8\r\x13\xfe\xd3\\B\xe0\x9f\r\x12\x10 \x1d<\n\x1a\x13\t7 \xf4\f\f\xf4 7\t\x13\x1a\n<\x1d \x10\x12\r\x0e\x13;.\n\x1a\x13\t77\t\x13\x1a\n.;\x13\x01\x13B..\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1a\x00\x00\x05!\"&5\x11463!2\x16\x15\x11\x14\x06\x03\a\x06\x1f\x01\x166=\x014&\x01\x90\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xa0|\b\b|\x05\x0f\x0f \x1c\x14\x01`\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x01d|\b\b|\x05\x06\b\xf6\b\x06\x00\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x00\x122\x16\x14\x06\"&4\x044&\"\x06\x14\x162\x99Α\x91Α\x01H/B//B\x01\xb8\x91Α\x91ΈB//B/\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x02\x01\xc1\x00-\x00C\x00\x00%\x17\x16\x06\x0f\x01\x06&/\x01#\"&'&54>\x01\x17\x1e\x01\x17\x14\x0e\x01\a\x1732\x16\x1d\x01\x14\x06+\x01\x1732\x16\x1f\x0176\x16'\x17\x0e\x01#\"&5467\x16\x17\x0e\x01\x15\x14\x163267\x01\xf0\x0e\x03\x04\x06A\f\x1a\x06>\x8c\f\x12\x02 \x12\x1f\x12\x19#\x01\x0e\x19\x10\x05\x82\a\t\t\ay\x05\x84\b\x11\x049%\x06\f\xb6\x1a\x15W5Ig=2\x04\x05\x19\x1fB.*?\x06>\x1c\x06\r\x03!\x06\t\f\x86\x10\v\xe1\x04\x12\x1e\x11\x01\x01$\x19\x10\x1d\x12\x02!\t\a \a\t \v\a{\x13\x02\x04\x1c7/:gI7Y\x13\x1b'\x0f3\x1f.B7)\x00\x00\x01\x00\x00\xff\xe0\x01\x81\x01\xa0\x00:\x00\x00%2\x16\x15\x0e\x01+\x01\"=\x01\a\x06&=\x014?\x015\a\x06&=\x014?\x0154;\x012\x1d\x0176\x16\x1d\x01\x14\x0f\x01\x1576\x16\x1d\x01\x14\x0f\x01\x15265463\x01t\x05\a\x04{eP\f1\x06\t\t71\x06\t\t7\f8\f\x81\x06\t\t\x87\x81\x06\t\t\x87Fb\a\x05\xc0\a\x05dp\f\xc1\v\x01\a\x06)\n\x02\f\x1e\v\x01\a\x06)\n\x02\fE\f\f3\x1d\x01\a\x06)\n\x02\x1e\x1e\x1d\x01\a\x06)\n\x02\x1e\x9fMH\x04\a\x00\x00\x02\x00\x00\xff\xe0\x02\x80\x01\xa0\x003\x00<\x00\x00%\x16\x14\a\x06#!\x06\a3\x0e\x04#5#\x15\"&=\x01\"=\x01435\"=\x01435463\x15352\x1e\x03\x17#\x16\x17!2\a26&#\"\x1d\x01\x14\x02Q//4E\xfe\xe2\a\t\xce(B+*7\"\x10\x14\x1c \x1c\x14\x10\"7*+B(\xce\t\a\x01\x1eE5\x0f\f\f\x0f\b\xf0\x164\x16\x18\n\x06\b#$#\x16\x80\x80%\x1b@\x18(\x18\x10\x18(\x18@\x1b%\x80\x80\x16#$#\b\x06\np((\b@\b\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00%\x00=\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x172\x1e\x022>\x0236754&#!\"\x06\x1d\x01\x16\x05\x06\a\x0e\x04\".\x03'&'\x15\x14\x163!265\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x82\x01\x11\b\x0f\n\x0f\b\x11\x01J(\x0e\n\xfe\xf0\n\x0e(\x01\x18\x16I\x01\x10\t\x10\x0f\x10\x0f\x10\b\x11\x01I\x16\x0e\n\x01\x10\n\x0e\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xe6\x0e\x05\a\a\x05\x0e5 \x19\n\x0e\x0e\n\x19 \t\x115\x01\f\x06\t\x04\x04\t\x06\f\x015\x11\x8e\n\x0e\x0e\n\x00\x00\x00\x00\x03\x00\x10\xff\xe0\x01\xf0\x01\xa0\x00\x17\x00%\x009\x00\x00\x01\x15\x14+\x01\x15\x14#!\"=\x01#\"=\x014?\x0162\x1f\x01\x16\x032\x16\x1d\x01\x14#!\"=\x0146373\x15353\x15353\x1532\x1d\x01!54;\x01\x01\xf0\b\x18\f\xfex\f\x18\b\x05\xe8\x01\x04\x01\xe8\x05\x18\n\x0e\b\xfe0\b\x0e\n8@@@@@$\f\xfe`\f$\x01@\x10\b\f\f\f\f\b\x10\x05\x02X\x01\x01X\x02\xfe\xcb\x0e\n\x10\b\b\x10\n\x0e\xf0\xc0\xc0\xc0\xc0\xc0\f\x14\x14\f\x00\x00\x02\x00\x00\x00\x00\x02\x81\x01\x84\x00#\x00.\x00\x00\x01\x16\x14\a\x05\x06/\x01\x06\a\x16\x15\x14\a\x17\x16\x06+\x01\"&?\x01&54767'&47%6\x1f\x017\x17\x14\x06\"&57\x17\x16\x02n\x12\x12\xfe\xe9\x17\x17\xc4\x13\x02\x10\x0e\x1a\x01\t\b8\b\t\x01\x1a\x0e\x10\x01\x110\x12\x12\x01\x17\x17\x17\n\x91\x0ep\xa0p\x0e\x91!\x01'\x06\"\x06U\b\b<\x0e\x17\n\x11\x10\ns\a\f\f\as\n\x10\x12\t\x1a\x15\x0f\x06\"\x06U\b\b\xf7,q\x1b%%\x1bq,\n\x00\x00\x00\x00\x05\x00\x00\x00 \x02\x80\x01`\x00\x05\x00\x0f\x00D\x00N\x00e\x00\x007\x17#?\x01\x16%2\x16\x15\x11\x14\x06#!\x11\x0554+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x06\a&'&\x0f\x02\x06\x17\x16\x17\x06\a\x06\x1f\x01\x16767\x16\x17\x16?\x016'&'6732%463!\x11!\"&57\x06\x1e\x01;\x012?\x013\x17\x16;\x0126/\x01&+\x01\"\a\x98\v&\v\b\x05\x01\xd3\n\x0e\x0e\n\xfe\xe8\x01\x00\f@\f\x10\f@\f\fr\t\x15\t\b\a\t\a\a\v\a\n\v\f\x0e\n\x06\b\x06\v\x12\x11\x10\x14\n\x06\b\x06\n\r\r \v\v\f\xfd\xb0\x0e\n\x01\x18\xfe\xe8\n\x0e;\x01\x02\x06\x04\x17\t\x03\t<\t\x03\t\x17\x06\a\x029\x03\t \t\x03\xd4&&!\x15\x80\x0e\n\xfe\xf0\n\x0e\x01@x\x10\f\x10\f\f\x10\f\x10\f\x15\x16\n\v\t\x06\x04\x04\a\n\r\r\t\t\x06\n\x0e\v\a\v\x0e\r\f\a\v\x0e\n\x06\b\n##l\n\x0e\xfe\xc0\x0e\n8\x04\a\x05\t\x1f\x1f\t\n\x06\xa9\b\b\x00\x00\a\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x15\x00%\x005\x00E\x00U\x00^\x00n\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01\x16\x15\x0354&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x014&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x1754&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x014&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x01#\"&=\x01#\x15'2\x16\x15\x11\x14\x06+\x01\"&5\x11463\x01\xe0\r\x13\x13\r\xfe\xc0\r\x13\x13\r\xf3\r\t.\t\xc0\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t0\a\t\xa0\x80\r\x13\x13\r \r\x13\x13\r\x01 \x13\r\xfe\xe0\r\x13\x13\r\x01\xc0\r\x13\t.\t\r\xfe\x9d \a\t\t\a \a\t\t\x87 \a\t\t\a \a\t\ty \a\t\t\a \a\t\t\x87 \a\t\t\a \a\t\tw@\t\a0\x80@\x13\r\xfe\xc0\r\x13\x13\r\x01@\r\x13\x00\b\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x11\x00\x1d\x00)\x005\x00=\x00I\x00U\x00a\x00\x00\x052\x1d\x01!54;\x01\x11463!2\x16\x15\x11\x01\x15\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x172=\x014+\x01\"\x1d\x01\x143\x1754+\x01\"\x1d\x01754+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x01\xb4\f\xfe@\f\x14\x0e\n\x01P\n\x0e\xfe\xe0\f(\f\f(\f\f(\f\f(\f4\f\f(\f\ft\f(\f\x80\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f \f\x14\x14\f\x01\xc8\n\x0e\x0e\n\xfe8\x01\x94(\f\f(\fl(\f\f(\f\xa0\f(\f\f(\f\xa0T\f\fT\xac(\f\f(\fl(\f\f(\fl(\f\f(\f\x00\x00\x00\x02\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\a\x00)\x00\x00\x12462\x16\x14\x06\"6\x16\x14\x0f\x01\x11\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&5\x11'&462\x1f\x01376x*<**<\xcb\x13\t_\x13\r\x10\r\x13\x10\x13\r\x10\r\x13_\t\x13\x1a\nVfV\n\x01Z<**<*P\x13\x1a\n^\xfe\xf5\r\x13\x13\rpp\r\x13\x13\r\x01\v^\n\x1a\x13\tWW\t\x00\x00\x00\x05\xff\xfb\xff\xe0\x02\x05\x01\xa5\x00\x12\x00\x1d\x00(\x003\x00?\x00\x0062\x1e\x01\x15\x14\x06#\"&#\"\x06#\"&546&\x16\x06\a\x06.\x01'&>\x01\x16\x06.\x01676\x1e\x01\x17\x16\x17\x1e\x01\x0e\x01.\x017>\x02\a.\x01>\x01\x1e\x01\a\x0e\x03\xdaL\\>&\"\x19L\x13\x12M\x19\"&>\x19\x10\x14\x16\x0e\x1e\x17\x05\b\x14,\x9e/-\x12\x14\x18\x0f\x1f\x19\x06\t\xee\x16\x14\x10*,\x14\b\x05\x17\x1e\x8e\x18\x14\x12-/\x14\t\x04\x11\x15\x18\xe0C_&\x1a\x1e\x19\x19\x1e\x1a&_j4-\x05\x03\v\x19\x11\x1a-\n\x1d\f&A7\x06\x04\x0f \x15!\x1f\x05-4\x1d\n-\x1a\x11\x19\v!\x067A&\f7!\x10\x1b\x11\a\x00\x03\x00\x00\xff\xbf\x02\x00\x01\xc1\x00\x13\x00\x19\x00\x1d\x00\x00\x136\x1f\x01\x1e\x01\x1d\x01\x14\x0f\x01\x06/\x01&=\x0146?\x01\a\x15\x1775\x0375\a\xef\x11\x11\xd0\x0e\x11\x1b\xd0\x15\x16\xd0\x1a\x11\x0e\xe1\xc0\xc0\xc0\xa0\xa0\xa0\x01\xba\x06\x06N\x06\x18\x0f\xe1\x1e\rh\v\vh\r\x1e\xe1\x0f\x18\x06\x10H\x02NN\x02\xfe\xe4P\x86B\x00\x00\x00\x00\a\x00\x00\xff\xdb\x02\x00\x01\xa3\x00\x1d\x00!\x00'\x00+\x00/\x003\x007\x00\x00%\x16\x1d\x01\x14\x0f\x01\x06/\x01\a\x06/\x01&=\x014?\x0154?\x016\x1f\x01\x16\x1d\x01\a5\a\x15'\x15\x1775'\x035\a\x157'\a\x17\x055\a\x157'\a\x17\x01\xe9\x17\x14d\x10\x10hh\x10\x10d\x14\x17a\x17d\r\rd\x17\"Uwfff\x12UUfff\x01VUUfff\xc6\t\x19n\x16\n2\b\b44\b\b2\n\x16n\x19\t$l\x19\t&\x05\x05&\t\x19l\x01I$E\x8f\x01))\x01&\xfe\xb7K'O\x9b''*FK'O\x9b''*\x00\x00\x03\xff\xfc\xff\xbd\x02\x00\x01\xc1\x00\x1c\x008\x00U\x00\x007\x16\x06/\x01\a\x06\x16;\x012\x1d\x01\x14+\x01\".\x01?\x01'&6?\x016\x16\x177&\"\x0f\x01\x06/\x01&?\x0162\x1f\x0176\x16\x0f\x01\x0e\x01/\x01.\x01?\x01\x17\x16\x14\x0e\x01+\x01\x15\x14\x06/\x01&?\x016\x16\x1d\x01326/\x01&?\x016\x17\xb9\x02\x12\t(3\n\x12\x134\f\f4$6\t\x123)\t\x03\vn\x06\f\x01|\t$\t\x12\x06\v\"\n\a\x12\x1cj\x1c*(\t\x12\x03\x19\x02\v\x06n\v\x03\t(\xad\x0f\x18-\x1b`\x14\aP\f\fP\a\x14`\x13\x12\n\x1b\a\n\"\n\a\xba\n\r\x06\x19Q\x10!\f(\f0A\"Q\x1a\x05\x15\x03\x19\x02\a\aI\x0f\x0f\x1d\n\x06\x16\x06\n\x1d--B\x19\x06\r\nn\a\a\x02\x19\x03\x15\x05\x1a\x9c\x175+\x1c0\v\b\bP\v\vP\b\b\v0!\x10,\n\a\x15\x06\n\x00\x04\xff\xfe\x00\x00\x02\x02\x01\x80\x007\x00A\x00P\x00a\x00\x00\x012\x16\x0f\x01\x06+\x01\x16\x1d\x01\x14\a\x15\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&=\x01&=\x0147#\"/\x01&6;\x017>\x03;\x012\x16\x1f\x01%\a!'.\x01+\x01\"\x06\a:\x02>\x0354&\"\x06\x14\x16!264&#\"\x0e\x01\x15\x14\x1e\x03:\x01\x01\xf4\x06\a\x01\x06\x03\t\x14\x16\x10\x13\r \r\x13\xff\x00\x13\r \r\x13\x10\x16\x14\t\x03\x06\x01\a\x06<\x11\x06\x15\x1b \x11\x80\"9\f\x11\xfe\xdc\x14\x01\x00\x14\x05\x19\x0e\x80\x0e\x199\x02\r\x06\v\x06\a\x03\"\x1c\x12\x12\x01N\x0e\x12\x12\x0e\t\x17\x10\x03\a\x06\v\x06\r\x01\x10\t\x06\x18\t\x13\x1d0\x18\x126\r\x13\x13\r \r\x13\x13\r6\x12\x180\x1d\x13\t\x18\x06\t*\x0f\x1b\x12\n& *\x1222\r\x11\x11\xaf\x01\x02\x03\x06\x04\x0f!\x12\x1c\x12\x12\x1c\x12\x10\x17\t\x04\x06\x03\x02\x01\x00\x00\x00\x04\x00\x00\xff\xe0\x02\x00\x01\xa0\x001\x009\x00B\x00J\x00\x00%\x1e\x01\x1d\x01\x14\a\x15\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&=\x01&=\x0146?\x01>\x01;\x01546;\x012\x16\x1d\x0132\x16\x17\x04264&\"\x06\x147!'.\x01+\x01\"\a\x04264&\"\x06\x14\x01\xce\x16\x1c \x13\r \r\x13\xff\x00\x13\r \r\x13 \x1c\x16\x16\a+\x1b\v\x13\r\x80\r\x13\v\x1b+\a\xfe\x9b\x1a\x13\x13\x1a\x135\x01\x16\x11\x01\n\x04\xd6\f\x03\x01\r\x1a\x13\x13\x1a\x13\xce\x04#\x170$\x13)\r\x13\x13\r \r\x13\x13\r)\x12%0\x17#\x04U\x1b\" \r\x13\x13\r \"\x1b\xc3\x13\x1a\x13\x13\x1a]C\x05\b\x0e\xb2\x13\x1a\x13\x13\x1a\x00\x00\x00\x01\xff\xfb\xff\xbf\x01\x85\x01\xc1\x00/\x00\x00%\x16\x06+\x01\x15\x17\x16\x06+\x01\"&?\x015#\"&?\x01#\"&?\x01#\"'&?\x01>\x012\x16\x1f\x01\x16\a\x06+\x01\x17\x16\x06+\x01\x01z\n\f\x0f\x89\x1e\x04\t\t`\t\t\x04\x1e\x89\x0f\f\nP\x1f\x0f\f\tO\x1d\x0f\x06\x06\nn\x03\x06\x06\x06\x03n\n\x06\x06\x0f\x1dO\t\f\x0f\x1fF\v\x1b\x181\b\x0f\x0f\b1\x18\x1b\vZ\x1a\v[\x0e\r\vu\x03\x02\x02\x03u\v\r\x0e[\v\x1a\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x0f\x00\x19\x00#\x00\x00\x01\x15\x14\x06#\".\x01=\x014632\x1e\x01\x1d\x01\x14\x06\"&=\x01\x16 \x17\x15\x14\x06\"&=\x01\x16 \x01\xc0\x83]=g<\x83]=g<\x83\xba\x83G\x012G\x83\xba\x83G\x012\x01w.\x1e+\x14!\x14.\x1e+\x14!{g\x1e++\x1eg1og\x1e++\x1eg1\x00\a\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x06\x00\f\x00\x14\x00&\x00B\x00K\x00O\x00\x007.\x01432\x14\a\x16\x17\x06\a6\a67\x0e\x04\x133\x11\x14\x06#!\"&5\x1146;\x01\x15\x14\x16\x17&'6'.\x01\x06\a\x06\x17\x06\a\x0e\x01\x17\x1632767\x16326'&7\x16\x1d\x01#532\x17\x13\x06'6\xb6\x02\x02\x02\x06\x06\x0e\x15\f3\rO\x04\x1f\x06\f\b\x06\x03\xa2\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8\x0e\x02\x1d\x0e\f\x05\x03\x15\x16\x02\x06\x0e\x17\x12\x1d&\f\b\x0e\x19$>\x11$\x1c\x14\n\n\x10O\a\x80\x06\n\a\x18\x06%+\xc0\a\x17\x11(6\x1a\x0f\x02\x14\x18V\v\x1d\n\x0f\t\x05\x01\x01\f\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\x88\n\x0e\xac\x12$/\x11\x0e\v\b\n\x1676 \x0e&\x10\n>\x14\x03\x13\"\t\x0f\xdb\a\n\x06\x80\a\xfe\x9f\a\x10\x01\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00<\x00E\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x13\"\a\x06\x15&'&+\x01\"\a\x06\a&'&+\x01\"\x06\x1f\x01\x16;\x0127673\x16\x17\x16;\x012?\x016.\x01#7\x15#532\x1f\x01\x16\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc89\n\x01\x16\x02\x1c\x02\t\x1d\n\x02\x1c\x02\x01\x13\x02\n\x19\x06\a\x02%\x02\n%\t\x03\x18\x01\x01\x04\x15\x03\t&\n\x02&\x01\x03\x06\x04O\x80\x06\n\ab\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xff\x00\ne\x1c\x0fs\t\ts\b\x1b_\n\t\x06\xa8\t\tc\f\x17X\t\t\xa8\x04\a\x04\x86\x06\x80\ab\a\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x004\x00=\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x176&+\x01\"\x0f\x014'&+\x01\"\x06\x1f\x01\a\x06\x16;\x012767\x16\x17\x16;\x0126/\x017\x15#532\x1f\x01\x16\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8<\x04\a\a#\a\x03%%\x03\a#\a\a\x04<<\x04\a\a#\a\x03\"\x03\x11\x13\x04\a#\a\a\x04<\xa0\x80\x06\n\ab\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xf2\x06\f\x06E\x01D\x06\r\x06]^\x06\f\x06=\b!$\x06\f\x06^\xd6\x06\x80\ab\a\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\a\x00\x10\x00\"\x00=\x00\x0072\x16\x14\x06+\x0157\x16\x1d\x01#532\x17\a\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x134&+\x01\"\x0e\x02\x1d\x01\x14\x16;\x0126=\x01:\x02>\x04\xc2\r\x0e\x0f\r\x1b\xd3\a\x80\x06\n\a7\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc85(!Q\x02\x05\x03\x02\a\x05\x1f\x05\a\x01\x14\f\x17\x10\x13\f\b\xb1\x11\x1b\x11=\xa6\a\n\x06\x80\a\x81\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xfe\xd3!,\x02\x03\x05\x02\xc8\x05\a\a\x059\x02\x06\v\x11\x19\x00\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\b\x00\x1a\x00\"\x00-\x00\x00\x01\x15#532\x1f\x01\x16\a3\x11\x14\x06#!\"&5\x1146;\x01\x15\x14\x16\x06\"\x06\x14\x16264\x175'&\x0f\x01'&\x0f\x01\x15\x01\x80\x80\x06\n\ab\a\x88\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8\x0ej'\x1c\x1c'\x1d\xa0(\b\tg(\b\b(\x01F\x06\x80\ab\a0\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\x88\n\x0e\x10\x1c(\x1c\x1c(\xd4p(\b\bh(\b\b(0\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\b\x00\x14\x00*\x00.\x00O\x00\x00\x01\x16\x1d\x01#532\x17\x022\x1e\x01\x15\x14\x06\"&5467\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x15353\a\x1535\x0226/\x01&+\x01535#535#535#\x15#\x153\x15#\x153\x15#\x15\a\x06\x01y\a\x80\x06\n\a\x9f\x11\x0f\t\x13\x1b\x13\tw\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\nh @\x80 \x192\x1f\x04\x12\x02\n\x16 \x13\x05\x01W\a\n\x06\x80\a\xfe\xb7\a\r\a\v\x10\x10\v\a\r\xcf\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e \xfe\x80&\x19W\n a\x18\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00!\x00/\x00=\x00F\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x0354&\x0f\x01#\"\x1d\x01\x14;\x01\x17\x1667\x06\x1e\x01764'&\x0e\x01\x17\x16\x147&\x0e\x01\x17\x16\x14\a\x06\x1e\x017647\x15#532\x1f\x01\x16\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8@\x0f\x05$\x1c\f\f\x1c$\x05\x0f!\n\t\x18\f\x14\x14\v\x1a\a\t\aO\n\x1b\x06\t\x1b\x1b\v\n\x18\v)@\x80\x06\n\ab\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xfel\x88\b\x06\x06$\f8\f$\x06\x068\v\x1a\x06\t\x15;\x14\v\b\x18\f\a\x13n\n\b\x18\f\x1cN\x1c\v\x1a\x05\t*u\x9f\x06\x80\ab\a\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\b\x00\x1a\x004\x00\x00\x01\x15#532\x1f\x01\x16\a\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x134&\x0f\x0154&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x01\x17\x1665\x01\x80\x80\x06\n\ab\a\xa0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8`\x1e\v7\x0e\np\n\x0e\x0e\np\n\x0e7\v\x1e\x01F\x06\x80\ab\a\x18\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xfe\xe8\x10\f\v7&\n\x0e\x0e\np\n\x0e\x0e\n&7\v\f\x10\x00\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\b\x00\x1a\x003\x00G\x00`\x00\x00\x01\x15#532\x1f\x01\x16\a3\x11\x14\x06#!\"&5\x1146;\x01\x15\x14\x16\a7654/\x017654/\x01&#\"\x0f\x01\x06\x14\x1f\x01\x1632\x17032?\x01454/\x010#\"\x0f\x01\x14\x15\x14\x17764/\x01&#\"\x0f\x01\x06\x15\x14\x1f\x01\a\x06\x15\x14\x1f\x01\x16327\x01\x80\x80\x06\n\ab\a\x88\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8\x0es\x14\x01\x02((\x02\x01\x14\x01\x03\x02\x01A\x02\x02A\x01\x02\x035\x01\x04\x01>\x04\x1c\x01\x04\x01>\x04\xbc\x02\x02A\x01\x02\x03\x01\x14\x01\x02((\x02\x01\x14\x01\x03\x02\x01\x01F\x06\x80\ab\a0\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\x88\n\x0e\xf1\x15\x02\x02\x03\x01$$\x01\x03\x02\x02\x15\x01\x01=\x02\x04\x02=\x011\x04\xd3\x01\x01\x04\x01\b\x04\xd3\x01\x01\x04\x01g\x02\x04\x02=\x01\x01\x15\x02\x02\x03\x01$$\x01\x03\x02\x02\x15\x01\x01\x00\x06\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\r\x00\x15\x00\x1b\x00!\x00'\x00\x00\x122\x16\x14\x06\"&4%&'\a\x16\x17\x06264&\"\x06\x14'\x06\a\x1767\a\x16\x177&'\x1767'\x06\a\x99Α\x91Α\x01\xa6\x14\x1a?\x1c\x11\x96P88P8 \x1a\x14@\x11\x1cm\x14\x1a?\x1c\x11\xee\x1a\x14@\x11\x1c\x01\xb8\x91Α\x91\xce\x19\x1a\x14@\x11\x1c\xa18P88P\xd6\x14\x1a?\x1c\x11\xee\x1a\x14@\x11\x1cm\x14\x1a?\x1c\x11\x00\x00\x00\x01\x00\a\xff\xc7\x01\xf8\x01\xb4\x00#\x00\x00\x0146\x17\x1e\x01\x15\x14\x0e\x01#\"&'4676\x16\x1d\x01\x14\a\x0e\x01\x15\x14\x162654&'&5\x01 \x12\fQiBrCg\x91\x01iQ\v\x13\x12:Ll\x98lL:\x12\x01\x99\f\x0e\x03\x15\x85VCrC\x90gV\x86\x15\x03\x0e\f\x11\x12\x05\x10b?LllL?b\x10\x05\x12\x00\x00\x00\x00\x01\xff\xff\xff\xbb\x02\x03\x01\xc5\x00\x16\x00\x00\x016\x16\a\x03\x0e\x01/\x01\a\x06&=\x01\x136&\a\x05'.\x017\x01\xdc\r\x19\x02H\x02\x15\n}@\n \xf1\x03\b\x04\xfe\xe1j\x0e\x02\r\x01\xbd\a\x11\x0f\xfeP\v\f\x054M\r\v\x11Q\x01%\x05\a\x03\xfd,\x06\x1e\a\x00\x00\x00\x02\x00\b\xff\xc7\x01\xf9\x01\xb8\x00%\x007\x00\x00\x00\x14\x06#\"'.\x01?\x01>\x01\x17\x163264&#\"\a\x17\x16\x06+\x01\"&=\x0146\x1f\x01632\x03\x0e\x01/\x01546;\x012\x16\x1d\x01\x17\x1e\x01\a\x01\xf8\x91gXD\b\x01\b\v\x06\x13\a2@LllLI53\a\b\v\x91\a\t\x14\a2Hcg$\x06\x14\bA\x0e\n\x10\n\x0e)\b\x02\x06\x01'͒7\a\x15\b\v\x06\x01\x05(l\x98l23\a\x14\t\a\x91\v\b\a2E\xfe\xba\b\x03\x063\x88\n\x0e\x0e\nh \x06\x14\b\x00\x01\x00\x10\xff\xe0\x01\xf0\x01\xa0\x00K\x00\x00\x01\x1132\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015#\x1532\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x01\x11#\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\x1535#\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\x01\xc0 \a\t\t\a\xa0\a\t\t\a \xc0 \a\t\t\a\xa0\a\t\t\a \a\t\t\a\xa0\a\t\t\a \xc0 \a\t\t\a\xa0\a\t\t\a\x01`\xfe\xc0\t\a \a\t\t\a \a\t\x80\x80\t\a \a\t\t\a \a\t\x01@\t\a \a\t\t\a \a\t\x80\x80\t\a \a\t\t\a \a\t\x00\x00\x01\x00 \xff\xe0\x01\xc0\x01\xa0\x00!\x00\x00\x01\x15\x14\x06+\x01\x11\x14\x06+\x01\"&5\x11#\x11\x14\x06+\x01\"&=\x01#\"&46;\x012\x16\x01\xc0\t\a0\t\a \a\t \t\a \a\t B^^B\xf0\a\t\x01\x90 \a\t\xfe\x90\a\t\t\a\x01p\xfe\x90\a\t\t\ap^\x84^\t\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00#\x00G\x00k\x00\x00%2\x16\x1d\x01\x14\x06#!\x15\x14\x06+\x01\"&=\x01#\"&=\x0146;\x01546;\x012\x16\x1d\x01%2\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01!\"&=\x01463!546;\x012\x16\x1d\x0172\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\"&=\x0146;\x01546;\x012\x16\x1d\x01\x01\xf0\a\t\t\a\xfe\xb0\t\a \a\tP\a\t\t\aP\t\a \a\t\x01P\a\t\t\aP\t\a \a\t\xfe\xb0\a\t\t\a\x01P\t\a \a\tP\a\t\t\a\xd0\t\a \a\t\xd0\a\t\t\a\xd0\t\a \a\t@\t\a \a\t\x10\a\t\t\a\x10\t\a \a\t\x10\a\t\t\a\x10\xa0\t\a \a\t\x10\a\t\t\a\x10\t\a \a\t\x10\a\t\t\a\x10\xa0\t\a \a\t\x10\a\t\t\a\x10\t\a \a\t\x10\a\t\t\a\x10\x00\x00\x00\x01\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00%\x00\x00%2\x16\x14\x06\"&547'\x06#\"&4632\x177&5462\x16\x14\x06#\"'\a\x16\x14\a\x176\x01`(88P8\x02f\x1a\"(88(\"\x1af\x028P88(\"\x1af\x02\x02f\x1a\x808P88(\v\n@\x158P8\x15@\n\v(88P8\x15@\n\x16\n@\x15\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x005\x00\x00\x01\x11\x14\x06#!\"&5\x11463!2\x16\a\"\a'64'7\x163264&\"\x06\x15\x14\x17\a&#\"\x06\x14\x16327\x17\x06\x15\x14\x16264&\x01\xc0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x90\x16\x10D\x02\x02D\x10\x16\x17!!.!\x02D\x10\x16\x17!!\x17\x16\x10D\x02!.!!\x01p\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xec\x0f)\a\x0e\a)\x0f!.!!\x17\a\a)\x0f!.!\x0f)\a\a\x17!!.!\x00\a\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x17\x00\x1f\x00'\x00/\x007\x00?\x00O\x00\x00\x01\a\x17\x16\x14\x0f\x01\x16\x15\x14\x06\"&4632\x17762\x1f\x01?\x012\x14+\x01\"43&2\x1d\x01\x14\"=\x01\x17\x06&?\x016\x16\x0f\x01'&6\x1f\x01\x16\x06\x1f\x01\x16\x06/\x01&6\x05463264&#\"\x06\x15\x14\x1626\x01\xb84\x1b\a\a\x11\x12z\xaczzV-)\x11\a\x14\a\x1a4M\f\f\x18\f\f0\x18\x18.\b\x12\t\x11\b\x11\bU\x11\b\x11\b\x11\t\x11;\x11\b\x11\b\x11\t\x11\xfe\x9f&\x1a\a\t\t\a(8\t\x0e\t\x01h4\x1b\a\x14\a\x11)-Vzz\xacz\x12\x11\a\a\x1b4\f\x18\x18<\f\x18\f\f\x18+\t\x12\b\x11\t\x12\b\x11\x11\b\x12\t\x11\b\x12\x19\x11\t\x11\t\x11\b\x12\xc0\x1a&\t\x0e\t8(\a\t\t\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00%\x00*\x00\x00\x00\x14\x06\"&462\x17\a'7\x17&'\x17\a'7\x06\a7\x17\a'\x14\x177\x1f\x01\a\x167'?\x01\x176\a'7\x17\a\x01\xf8\x91Α\x91\xcea\x1a?\x11\"'>\x0eKK\x0e>'#\x10?\x1a&\bU%\x1e>>\x1e%U\b&\xf8\x1eNN\x1e\x01'Α\x91Α\xf8\x16:T\x036\x13\x1f**\x1f\x136\x03T:\x16B4\"\vM\x12\x14\x14\x12M\v\"4\x04\\88\\\x00\r\x00\x00\xff\xc0\x02\x05\x01\xcd\x00!\x00-\x009\x00E\x00Q\x00]\x00i\x00u\x00\x81\x00\x8d\x00\x99\x00\xa5\x00\xb1\x00\x00\x13>\x01\x16\x17\x16\x0f\x01\x06#\"/\x01&5417&\a\x170\x15\x14\x0f\x01\x06#\"/\x01&54\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x05\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x05\x14+\x01\"=\x014;\x012\x15\x05\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x05D\xb7\xb7D\n\b+\x05\v\x03\x03W\v\x06``\x06\vW\x03\x03\v\x05+\x03`\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f\xfe\xb0\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f\xfe\xb0\f(\f\f(\f\x01 \f\xe8\f\f\xe8\f`\f(\f\f(\f\x01XD11D\n\rE\b\x01#\x04\r\x01<##<\x01\r\x04#\x01\bE\x05\x05\b\xc7\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f\x88\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f\x88\f\f(\f\f(\f\f(\f\f(\f\f(\f\f\x00\x00\x00\x05\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\t\x00\x1e\x003\x00=\x00A\x00\x00\x01\x15#546;\x012\x16\x0546;\x01\x15#\x15\x14\x06+\x01\"&=\x01>\x04%\x1e\x03\x17\x15\x14\x06+\x01\"&=\x01#532\x1e\x01%2\x16\x1d\x01#5463\x1353\x15\x01\xa0`\t\a@\a\t\xfe\xa0\x13\r` \x13\r`\r\x13\x01\r\x12\x12\r\x01\x81\x01\x13\x17\x14\x01\x13\r`\r\x13 `\t\x0e\t\xfe\xf0\a\t`\t\ap@\x01\x9000\a\t\tw\r\x13\xa0\xa0\r\x13\x13\r,$;)%-\x1a\x1f9)G,,\r\x13\x13\r\xa0\xa0\t\x0ew\t\a00\a\t\xff\x00\xa0\xa0\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\a\x00#\x00+\x00\x00\x01\x15#5462\x16\x172\x16\x1d\x01\x14\x06+\x01\x15\x14\x06\a\x15#5.\x01=\x01#\"&=\x014637\x15#5462\x16\x01@@\x13\x1a\x130\a\t\t\a\x10K5@5K\x10\a\t\t\ap@\x13\x1a\x13\x01\xa0``\r\x13\x13\x8d\t\a \a\t 6\\\vcc\v\\6 \t\a \a\t\x80``\r\x13\x13\x00\x00\a\x00\x00\x00\x00\x02@\x01\x80\x00\x14\x00\x1a\x00&\x002\x00>\x00J\x00V\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x015463\x022=\x01#\x1572=\x014+\x01\"\x1d\x01\x143!2=\x014+\x01\"\x1d\x01\x143'2=\x014+\x01\"\x1d\x01\x143!2=\x014+\x01\"\x1d\x01\x14372=\x014#!\"\x1d\x01\x143\x02(\n\x0e\x1c\x14\xfe(\x17!\x0e\n(\x0e\n(\x10\x10\xf4\f\f\x98\f\f\x01h\f\f\x98\f\f8\f\f\x98\f\f\x01h\f\f\x98\f\f\x98\f\f\xfe\x98\f\f\x01\x80\x0e\n\xfe\xc8\x14\x1c!\x17\x01\x10\n\x0e\b\n\x0e\xfe\xb0\b\xf8\xf8\b\f\b\f\f\b\f\f\b\f\f\b\f`\f\b\f\f\b\f\f\b\f\f\b\f`\f(\f\f(\f\x00\x00\x03\xff\xff\xff\xe0\x02\x81\x01\xaf\x00\x12\x00\x1a\x00,\x00\x00\x01\x16\x14\x0f\x01\x06'& \a\x06/\x01&47>\x01\x16\x022\x16\x14\x06\"&4%\x16\x14\x0f\x01\x06'&\"\a\x06/\x01&4762\x02{\x05\x05\"\v\vn\xfe\xd6n\v\v\"\x05\x05W\xe4\xe4\xff6%%6%\x01\v\x05\x05\"\v\v?\xa8?\v\v\"\x05\x05W\xe8\x01%\x04\x0e\x05\"\v\vdd\v\v\"\x05\x0e\x04Q99\xfe\xea%6%%6y\x05\x0e\x05\"\n\n66\n\n\"\x05\x0e\x05L\x00\x00\a\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x0f\x00\x1f\x00/\x00?\x00O\x00_\x00o\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x1354&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x014&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x1754&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x014&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x1754&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x1154&#!\"\x06\x1d\x01\x14\x163!26\x01\x90\x13\x1d\x1d\x13\xfe\xa0\x13\x1d\x1d\x13P\b\x05&\x05\b\b\x05&\x05\b\b\x05&\x05\b\b\x05&\x05\b\x80\b\x05&\x05\b\b\x05&\x05\b\b\x05&\x05\b\b\x05&\x05\b\x80\b\x05&\x05\b\b\x05&\x05\b\b\x05\xfe\xda\x05\b\b\x05\x01&\x05\b\x01\xc0\x1d\x13\xfe`\x13\x1d\x1d\x13\x01\xa0\x13\x1d\xfeM&\x05\b\b\x05&\x05\b\b\x85&\x05\b\b\x05&\x05\b\b{&\x05\b\b\x05&\x05\b\b\x85&\x05\b\b\x05&\x05\b\b{\xa6\x05\b\b\x05\xa6\x05\b\b\x01\x05f\x05\b\b\x05f\x05\b\b\x00\x00\x03\xff\xf9\xff\xb9\x02\x87\x01\xc7\x00#\x00/\x007\x00\x00\x05\x16\x0f\x01\x06'\x01&?\x016\x1f\x01675462\x16\x1d\x01\x1e\x01\x15\x14\x1e\x01\x17\x16\x17\x16\x15\x14\x061%\x17#\".\x01547>\x02\x17\"&53\x14\x0e\x01\x02z\f\t\x14\n\f\xfd\xb3\f\t\x14\n\f\x91%=\x13\x1a\x138H\x14\x11\x0f\x02\x01\t\x01\xfe~\xd5\xf2\t\x0f\b\t\x0e\f\x16\xa7\x1a&\x80\x11\x1e\n\n\r\x19\f\t\x01\xc7\n\r\x19\f\tp1\r\x15\r\x13\x13\r\x15\vV:,C\x18\x0f\x03\x01\n\f\x01\x03\x88\xa4\t\x0f\b\f\n\x0f\x0e2\xe5%\x1b\x11\x1e\x11\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x17\x00!\x00\x00\x012\x16\x1d\x01\x14\x06#!\"&=\x0146;\x0176;\x012\x1f\x01\x01\x03!\x03\x0e\x01+\x01\"&\x01\xb0\a\t\t\a\xfe`\a\t\t\ax\t\a\x0fr\x0f\a\t\xfe\xfd\x15\x01\x80\x15\x01\x1c\x13\xf6\x13\x1c\x01\xa0\t\a \a\t\t\a \a\t\x13\r\r\x13\xfeM\x01S\xfe\xad\x13\x1a\x1a\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x008\x00\x00\x122\x16\x14\x06\"&4\x05654/\x01.\x01\a\x0e\x04#\"&54632\x17\x166?\x01654'.\x06#\"\x06\x15\x14\x1e\x0132>\x01\x99Α\x91Α\x01m\x03\x02\x19\x03\f\x03\x01\x05\r\x0e\x16\v#'(\"$\x1a\x04\v\x03\x16\x02\x03\x01\x03\v\v\x12\x14\x1a\r>R$C) 8\x11\x01\xb8\x91Α\x91\xce\xca\x04\x04\x04\x03\"\x04\x01\x04\x01\x05\t\b\x060 !+\x18\x04\x02\x04#\x03\x03\x05\x04\x01\x03\b\a\t\x06\x04R=)B&\x18\x10\x00\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00:\x00F\x00\x00\x012\x16\x15\x14\x06#\".\x02'\x0e\x01#\"&54632\x176;\x012\x16\x0f\x01\x06\x16\x17>\x0154&#\"\x06\x14\x163276\x16\x1f\x01\x16\x06\a\x06#\"&46\x132654&#\"\x06\x15\x14\x16\x01\x00j\x8eJL\x0f\x10\x17\x0e\x03\r*\x14,4Q9*\x12\x01\f-\f\x0e\x02\x18\x03\x05\f\x1a jNLllL6-\b\x12\x06\n\a\x04\t=Jg\x91\x91Q\x15%\x12\x11\x17$\x14\x01\xb8|d?T\x01\x06\x0f\f\x11\x1691BV\x16\f\x11\fy\r\x10\x01\x032\x1fJVl\x98l\x1d\x05\x03\a\f\t\x15\x06(\x91Α\xfe\xd0)\x1f\x13\x16) \x13\x15\x00\x02\x00\x00\xff\xc0\x02\x01\x01\xc1\x00\v\x00#\x00\x00?\x01\x17\a\x06+\x01\a'754\x00\x16\x14\x0f\x01\x17\x16\x14\x0f\x01\x06\"/\x01&4?\x0162\x1f\x01763~\x80~\x13\x1b-8 \x01\xa88\x1cM\r\a\a)\a\x14\a\xa2\a\a)\a\x14\a\rM\x1cs~\x80~\x13 8-\x1b\x01`8P\x1cM\r\a\x14\a)\a\a\xa2\a\x14\a)\a\a\rM\x1c\x00\x00\x00\x00\x02\xff\xff\xff\xc0\x02\x00\x01\xc0\x00\x13\x00,\x00\x007\x170\x16\x15\x14\x06#\"&5\x1e\x043276\x012\x16\x15\x14\a\x0e\x01#\"/\x01&54>\a76\xa7X\x01F:@@\x02\f\r\x0e\v\x03\v\x04\x1a\x01j\x16 \x0eUP.\n\f@\t\x01\b\b\x14\x14'%?\x1e\x12\x8bJ\a\x028@XC\x02\t\t\t\x06\nD\x01:\x1c\x16\x13\x1b\x9fa\x035\x13\x14\t\x0e\x10\f\x17\x12#\x1f8\x1b\x10\x00\x05\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00#\x004\x00?\x00J\x00U\x00\x00%\"&\"\x06\"&#\"\x06#\"&\"\x06#546;\x0153\x15353\x15353\x1532\x16\x1d\x01!5262\x16262\x162632\x163\x01\"&54652\x16\x14\x063\"&54652\x16\x14\x063\"&54652\x16\x14\x06\x01\xc0\f'/'\x18'\x18\x17(\v\r'/'\f\x1c\x14\x10@@@@@\x10\x14\x1c\xfe@\x18'\x18'/'\x18'/'\r\v'\x18\xfe\xa0\r\x13 \n\x16\x12r\r\x13 \n\x16\x12r\r\x13 \n\x16\x12@ P\x14\x1c\x90\x90\x90\x90\x90\x90\x1c\x14\xd0` \x01@\x13\r\x0e\x1c\x16%&\x15\x13\r\x0e\x1c\x16%&\x15\x13\r\x0e\x1c\x16%&\x15\x00\x00\x00\x02\x00\x00\x00\x00\x02\x00\x01\x80\x00\x0f\x00\x1b\x00\x00%2\x1d\x01\x14#!\"5\x114;\x012\x15\x11%6\x16\x1f\x01!57>\x01\x1f\x01\x01\xf4\f\f\xfe\x18\f\f(\f\x015\x04\v\x02Z\xfe\x80W\x03\r\x04U@\f(\f\f\x01h\f\f\xfe\xcc\xe0\x04\x03\x05\xbch\x91\x05\x01\x05r\x00\x00\x00\x00\x03\xff\xfc\xff\xbe\x02!\x01\xc1\x00\b\x00\x13\x00#\x00\x00%2\x16\a\x06\a\x06/\x017\x14\x06+\x015463\x1e\x01\x05\x17\x16\x06\a\x06\a\x06&'&676\x16\x15\x02\x10\a\n\x01\f=\v\v\x9f\xde\t\a\xe0\n\aY\x80\xfe\xe6\x9c\x05\x01\x06\x01;\x012\x16\x1d\x013'#\"&=\x0146;\x012\x1f\x016\x05\a3&\a267#\"&?\x01&#\"\x06\x14\x16?\x01#\a\x16\x1f\x01\x16654&#\"\a\x17\x16\x06\x0f\x01\x06&/\x01\x06\x17\x1e\x01\x02\x015K\x01\x01K54K)\x0fV\a\r4\vE,5KL4\x17\x14\x1e1\n\x0e\a\v\aW\a\tr\x0f3\a\t\t\a@\r\aN\x16\xfe\xd3\x18+\x04J\x18(\tQ\x0e\x0e\b-\b\t!//\xc4J\x80\x18$\x06\xfd\"2/!\n\n-\x03\x03\x06\r\x06\r\x03-\x14\x01\x01,\x01\x00M55J\x01\x01K48&\x18\x8b\v*6K64K\b0\x0e\n\x06\v\a\t\a\x10\x18\t\a\x10\a\t\v}\bJ&\x16v\x1a\x16\x19\fI\x02/B/`x( 0`\x020\"!/\x02H\x06\r\x03\t\x03\x03\x06G\x18\x1f\x1f,\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x004\x00<\x00L\x00T\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&=\x01\"&=\x01#\"&=\x0146;\x015462\x16\x1d\x01\x00264&\"\x06\x147!26=\x014&#!\"\x06\x1d\x01\x14\x16\x04264&\"\x06\x14\x01\xe8\n\x0e\x0e\n\b\x0e\f\x06\x13\r \r\x13\xc0\x13\r \r\x13\r\x13\b\n\x0e\x0e\n\b\x82\xbc\x82\xfe\x83\x1a\x13\x13\x1a\x130\x01\x00\r\x13\x13\r\xff\x00\r\x13\x13\x01\x10\x1a\x13\x13\x1a\x13\x01@\x0e\nP\n\x0e\xa6\v\x0f \r\x13\x13\r \r\x13\x13\r \x13\r\xa0\x0e\nP\n\x0e0\"..\"0\xfe\xf0\x13\x1a\x13\x13\x1a]\x13\r\x80\r\x13\x13\r\x80\r\x13p\x13\x1a\x13\x13\x1a\x00\x00\x03\x00\x00\x00\x00\x02\x00\x01\x80\x00\x0f\x00'\x00?\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x17\x06&546\x17\x16?\x016'.\x01\x06\x15\x14\x16676/\x01&\x17\x06&546\x17\x16?\x016'.\x01\x06\x15\x14\x16676/\x01&\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\xaa\x1f=@\x1e\x06\x04\x11\x02\x03\x19RA?S\x1a\x04\x03\x14\x04\xb9\x1e>@\x1f\x05\x04\x12\x01\x03\x19RA@R\x1b\x03\x03\x13\x04\x01\x80\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c\xe0\x1b\x17%\"\x15\x18\x04\x06\x1e\x03\x03\x19\x034./6\x05\x1c\x04\x04\x1b\x06\x05\x1b\x17%\"\x15\x18\x04\x06\x1e\x03\x03\x19\x034./6\x05\x1c\x04\x04\x1b\x06\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x1c\x009\x00\x00\x134&+\x01\x11\x14\x06+\x01\"&5\x1146;\x012\x16\x1d\x01\x14\x06+\x01\"&5\x132\x16\x15\x11\x14\x06+\x01\"&5\x1146;\x012\x16\x1d\x013265\x11463\xf8!\x17p\t\a0\a\t\x0e\n\xa88P\t\a0\a\t\xb8\a\tP8\xa8\n\x0e\t\a0\a\tp\x17!\t\a\x01\x18\x17!\xfe\xa0\a\t\t\a\x01\x98\n\x0eP8\xa8\a\t\t\a\x010\t\a\xfe\xd88P\x0e\n\x01\x18\a\t\t\a\xe0!\x17\x01(\a\t\x00\x00\x02\x00\x00\xff\xbe\x02B\x01\xc0\x003\x00W\x00\x00%!\x17!2\x16\x0f\x01\x16\x15\x14\x06#\"&'&7#\x16\x15\x14\x06'.\x01'4>\x017\x03#\"&=\x0146;\x012\x1e\x01\x1f\x01!2\x16\x0f\x01\x06'#54&+\x01\"\x06\x1d\x01#\"\x06\x1d\x01\x14\x16;\x01\x15\x14\x16;\x0126=\x01326=\x014&\x01\xf9\xfe\xdb\x06\x01\r\v\x0e\x02\x06 !\x18\x16 \x01\x01\x12\xd2\x11#\x18\x15\x1f\x01\x06\r\tFF\n\x0e\x0e\ng\x05\n\a\x01\t\x01\x89\f\x0e\x03/\x04t0\t\a\x10\a\t0\a\t\t\a0\t\a\x10\a\t0\a\t\t\x80 \x12\v\x19\x0f#\x17! \x16\x19\x11\x10\x18\x18!\x01\x01\x1f\x15\v\x14\x0f\x06\x01W\x0e\n\x10\n\x0e\x05\t\x05-\x12\v\xd0\x13\x98(\a\t\t\a(\t\a\x10\a\t(\a\t\t\a(\t\a\x10\a\t\x00\x00\x00\x00\x02\x00\x00\xff\xbe\x02B\x01\xc0\x003\x00F\x00\x00%!\x17!2\x16\x0f\x01\x16\x15\x14\x06#\"&'&7#\x16\x15\x14\x06'.\x01'4>\x017\x03#\"&=\x0146;\x012\x1e\x01\x1f\x01!2\x16\x0f\x01\x06'#54+\x01\"\x1d\x01#\"\x06\x1f\x01\x16?\x016&\x01\xf9\xfe\xdb\x06\x01\r\v\x0e\x02\x06 !\x18\x16 \x01\x01\x12\xd2\x11#\x18\x15\x1f\x01\x06\r\tFF\n\x0e\x0e\ng\x05\n\a\x01\t\x01\x89\f\x0e\x03/\x04y+\f\x18\f+\b\x06\x05D\b\bD\x05\x06\x80 \x12\v\x19\x0f#\x17! \x16\x19\x11\x10\x18\x18!\x01\x01\x1f\x15\v\x14\x0f\x06\x01W\x0e\n\x10\n\x0e\x05\t\x05-\x12\v\xd0\x13\x80<\f\f<\x0f\x05D\b\bD\x05\x0f\x00\x00\x02\x00\x00\xff\xc0\x02\x80\x01\xc0\x00<\x00D\x00\x00%\x1e\x0132\x16\x1d\x01\x14\x06#\"'\x0e\x01+\x01\".\x01'\x06#\"&=\x01463267'&6?\x01546;\x01546;\x012\x16\x1d\x0132\x16\x1d\x01\x17\x1e\x01\a%\x15762\x1f\x015\x01\xf1\x0e=,\n\x0e\x0e\nX7\v0\x1e\x80\x14#\x1b\a7X\n\x0e\x0e\n,>\rF\f\b\x11*\x13\r@\x0e\n\x90\n\x0e@\r\x13*\x11\b\f\xfe\x89v\x05\n\x05vK\")\x0e\n\x10\n\x0e;\x1a!\x0f\x1b\x11;\x0e\n\x10\n\x0e)\"F\r#\x05\x0e\x8c\r\x13(\n\x0e\x0e\n(\x13\r\x8c\x0e\x05#\r\xafX&\x02\x02&X\x00\x00\x00\x04\x00\x00\xff\xc0\x01\xc0\x01\xc2\x002\x006\x00:\x00V\x00\x00%\x1e\x01\x1d\x01\x14\x06#!\"&=\x01467'&6;\x01&5&54767>\x01\x1f\x01\x16?\x016\x16\x17\x16\x17\x16\x15\x14\a\x14\a32\x16\x0f\x017/\x01\x177\x0f\x017475\x06#\"'\x1503\x16\x15\x16\x17\x1e\x0126762\x17\x1e\x01676\x01\x80\x1d#\x1a\x13\xfe\x9a\x13\x1a%\x1e\x19\x04\n\b:\x12@F\x0e\x1b\a\x16\n\x1c\x0e\x0e\x1c\n\x16\a\x1b\x0eF@\x12;\b\n\x03\xe8 \x182\x8a*2\x18J\x06,42.\x01\x05\t\b\x04\x0e\x14\x14\x06\x02\x0e\x02\a\x1d\x16\x06\b\x8c\x12=#-\x13\x1a\x1a\x13-$>\x12<\b\x0e\x1f!\r\x13\x14\r1\"\t\x05\x05\x0e\a\a\x0e\x05\x05\t\"1\r\x14\x13\r!\x1f\x0e\b\xeax( \xc0\xc0 (\xb2\x03\x03\v\x06\x06\v\x03\x03\x19\b\x03\x06\x11\x11\x06\x06\x15\x0f\x05\x06\a\x00\x00\x00\x00\x03\xff\xff\xff\xff\x02\x81\x01\x80\x00H\x00W\x00m\x00\x00\x012\x16\x15\x16\x06'\"&547'\x0e\x02\x17\x16\x06+\x01\x0e\x01#\"&7>\x0176\x177&+\x01\"&546;\x012\x173'#\"&=\x0146;\x012\x1f\x0176;\x012\x16\x1d\x01\x14\x06+\x01\x176\x05267#\"&?\x01&#\"\x06\x14\x16%6&#\"\a\x17\x16\x06\x0f\x01\x06&/\x01\x06\x15\x14\x167>\x01\x02\x014K\x01L64K-\r\x13\x1a\f\x01\x01\x0f\nT\vE,6K\x01\x01H2\x16\x13\f\x10 8\n\x0e\x0e\n8E\x1f\x9a\x14B\a\t\t\aP\x0e\a\x16&\a\v-\n\x0e\x0e\nR \x15\xfe\x95\x18(\tQ\x0e\x0e\a)\x05\a!//\x01\xf1\x020\"\b\b1\x03\x03\x06\r\x06\r\x032\x162\"\x1f+\x01\x00K46L\x01K4;'\x15\x0f)-\x18\n\x0f*6M63H\x02\x01\x06\x14\x19\x0e\n\n\x0e( \t\a\x10\a\t\f&*\b\x0e\n \n\x0e7\a\xd0\x1b\x15\x18\fK\x01/B/L\"2\x02Q\x05\r\x04\b\x03\x03\x06R\x17 \"0\x02\x02+\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x1c\x00$\x00@\x00\x00%\x1e\x01\x15\x14\x06\"&5467\x16\x17\x15\x0e\x02\x15\x14\x162654&'56&\"&462\x16\x14\a\"&=\x0146;\x01\x162732\x16\x1d\x01\x14\x06#\x15\x14\x06+\x01\"&5\x01pAO\x96ԖOA\b\b!3\x1cz\xacz=3\bM6%%6%\x80\r\x13\x1c\x14\f\x11&\x11\f\x14\x1c\x13\r\x13\r@\r\x13v\f.\x1c(88(\x1c.\f\t\x04\x17\x05\x0f\x13\v\x17!!\x17\x10\x1b\a\x17\x04\xd3%6%%6\xe5\x13\r`\x14\x1c\b\b\x1c\x14`\r\x13`\r\x13\x13\r\x00\x00\x00\x02\xff\xfe\xff\xe0\x02\x02\x01\xa1\x00\r\x00)\x00\x00%\x173\a\x06\"/\x0137\x17\x1627\x13\x1e\x01\a#'&\"\x0f\x01'&\"\x0f\x01#&6?\x0162\x1f\x01762\x17\x01@\x16m\xb6\x06\x0f\x05\xb6^\x1e9\x04\x14\x04\xcc$\x04!w\x1c\x04\x14\x041:\x05\x15\x04$f!\x04$\x03&n'\x1c\x1c'n&\xcc,\xba\x06\x06\xbaH\u007f\t\t\x01\r%i(7\t\tb\x82\t\nV(i%\x02((\x1c\x1d''\x00\x00\x00\x02\x00\x00\xff\xe0\x01 \x01\xa0\x00!\x00)\x00\x00\x01\x14\x06\a\x1532\x1d\x01\x14+\x01\x15\x14+\x01\"=\x01#\"=\x014;\x015.\x015462\x16\x06\x14\x16264&\"\x01 ?1$\f\f$\f(\f$\f\f$1?TxT\xe0/B//B\x01\x103N\v4\f(\f$\f\f$\f(\f4\vN3\x0132\x177'&?\x016\x1f\x017'&63\x02264&\"\x06\x14\x01t\x05\a\x0f\x05\x11\x12\x0e\t\t\x1c\t\b\x0e\x12\x16TxT'B'*#\x12\x0f\b\b\x1d\b\t\x0e\x11\x11\x05\x06\b\xb6B//B/\x01\x80\a\x05O\b\x06\x06\x11\x12\x0e\t\b\x1c\t\t\x0e\x12#*KjKKjkO7*\x14\x1c\x1c\x14*7O\x10\x10\x00\x02\x00\x00\x00\x00\x02\x80\x01\x80\x00\a\x00+\x00\x006\"&462\x16\x14%2\x16\x1d\x01\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&5\x1146;\x012\x16\x1d\x0135463\xd1B//B/\x01\x10.B\t\a \a\t\xfe\x00\t\a \a\t\t\a \a\t\xe0\t\a\xc0/B//BQB.\xc0\a\t\t\a00\a\t\t\a\x01`\a\t\t\aА\a\t\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x17\x00'\x00/\x00\x00\x01\x11\x14\x06#\x17\x16\x06#!\"&?\x01\"&5\x1146;\x012\x16\a54&#!\"\x06\x1d\x01\x14\x163!26\x06\"\x06\x14\x16264\x01\xc0N4?\x04\x03\x06\xfe\xd0\x06\x03\x04?4NO1\xc02N0\x0e\n\xfe\xd0\n\x0e\x0e\n\x010\n\x0e\x99.!!.!\x01`\xff\x00'92\x03\v\v\x0329'\x01\x00'99\xafp\n\x0e\x0e\np\n\x0e\x0e6!.!!.\x00\x00\x00\x00\x05\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x17\x00'\x007\x00?\x00G\x00\x00\x01\x11\x14\x06#\x17\x16\x06#!\"&?\x01\"&5\x1146;\x012\x16\a54&+\x01\"\x06\x1d\x01\x14\x16;\x0126754&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x06\"\x06\x14\x16264$\"\x06\x14\x16264\x01\xc0N4?\x04\x03\x06\xfe\xd0\x06\x03\x04?4NO1\xc02N\xf8\x0e\nh\n\x0e\x0e\nh\n\x0e\xc8\x0e\nh\n\x0e\x0e\nh\n\x0e\x1c(\x1c\x1c(\x1c\xfe\xe4(\x1c\x1c(\x1c\x01`\xff\x00'92\x03\v\v\x0329'\x01\x00'99\xafp\n\x0e\x0e\np\n\x0e\x0e\np\n\x0e\x0e\np\n\x0e\x0e.\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x00\x00\x00\x00\x03\x00\x00\x00 \x02\x80\x01`\x00\a\x00!\x00%\x00\x00\x01!\x15!535#72\x16\x1d\x0132\x16\x1d\x01\x14\x06+\x01\x15\x14\x06#!\"&=\x01463\x05\x15!5\x02 \xfe \x01\xe0 \x10\x14\x1c\b\n\x0e\x0e\n\b\x1c\x14\xfe\x00\x14\x1c\x1c\x14\x01\xd0\xfe`\x01 \xc0@@\x80\x1c\x14\x10\x0e\n\x90\n\x0e\x10\x14\x1c\x1c\x14\xe0\x14\x1c`\x80\x80\x00\x00\x00\x03\x00\x00\x00 \x02\x80\x01`\x00\a\x00!\x00%\x00\x00\x01!\x15!535#72\x16\x1d\x0132\x16\x1d\x01\x14\x06+\x01\x15\x14\x06#!\"&=\x01463\x05\x15!5\x02 \xfe \x01\xe0 \x10\x14\x1c\b\n\x0e\x0e\n\b\x1c\x14\xfe\x00\x14\x1c\x1c\x14\x01p\xfe\xc0\x01 \xc0@@\x80\x1c\x14\x10\x0e\n\x90\n\x0e\x10\x14\x1c\x1c\x14\xe0\x14\x1c`\x80\x80\x00\x00\x00\x03\x00\x00\x00 \x02\x80\x01`\x00\a\x00!\x00%\x00\x00\x01!\x15!535#72\x16\x1d\x0132\x16\x1d\x01\x14\x06+\x01\x15\x14\x06#!\"&=\x01463\x05\x15#5\x02 \xfe \x01\xe0 \x10\x14\x1c\b\n\x0e\x0e\n\b\x1c\x14\xfe\x00\x14\x1c\x1c\x14\x01\x10\xe0\x01 \xc0@@\x80\x1c\x14\x10\x0e\n\x90\n\x0e\x10\x14\x1c\x1c\x14\xe0\x14\x1c`\x80\x80\x00\x00\x00\x00\x03\x00\x00\x00 \x02\x80\x01`\x00\a\x00!\x00%\x00\x00\x01!\x15!535#72\x16\x1d\x0132\x16\x1d\x01\x14\x06+\x01\x15\x14\x06#!\"&=\x01463\x17\x15#5\x02 \xfe \x01\xe0 \x10\x14\x1c\b\n\x0e\x0e\n\b\x1c\x14\xfe\x00\x14\x1c\x1c\x14\xb0\x80\x01 \xc0@@\x80\x1c\x14\x10\x0e\n\x90\n\x0e\x10\x14\x1c\x1c\x14\xe0\x14\x1c`\x80\x80\x00\x02\x00\x00\x00 \x02\x80\x01`\x00\a\x00!\x00\x00\x01!\x15!535#72\x16\x1d\x0132\x16\x1d\x01\x14\x06+\x01\x15\x14\x06#!\"&=\x01463\x02 \xfe \x01\xe0 \x10\x14\x1c\b\n\x0e\x0e\n\b\x1c\x14\xfe\x00\x14\x1c\x1c\x14\x01 \xc0@@\x80\x1c\x14\x10\x0e\n\x90\n\x0e\x10\x14\x1c\x1c\x14\xe0\x14\x1c\x00\x00\x00\x00\x01\x00\x00\xff\xbe\x01D\x01\xc4\x00\x15\x00\x00%#\x17\x16\x06\x0f\x01\x06&/\x01\a\x06&5\x1146\x17\x01\x16\x06\x01.j8\x03\x06\a1\a\r\x035W\b\x16\x17\a\x01\x1d\b\tw\x88\a\x0e\x03\x16\x02\x05\a\x81Y\t\n\f\x01\xae\f\t\b\xfe\xdb\b\x17\x00\x01\x00\x00\xff\xbf\x01\x00\x01\xc1\x00H\x00\x00\x01\x14\x06#\"\x1d\x0132\x1d\x01\x14+\x01\x15\x1472\x16\x1d\x01\x14\x06#\".\x01'\x0e\x02#\"&=\x014632=\x01#\"=\x014;\x0154\a\".\x01=\x014>\x0232\x1e\x01\x17>\x0232\x16\x15\x01\x00\a\x05T$\f\f$T\x05\a\a\x05\x17\x1e-\x12\x12.\x1e\x16\x05\a\a\x05T$\f\f$T\x03\x06\x03\x02\x03\x04\x03\x17\x1e-\x12\x12.\x1e\x16\x05\a\x01\x8c\x05\a0p\f(\fp1\x01\a\x05(\x05\a\x03\x12\x11\x12\x12\x02\a\x05(\x05\a0p\f(\fp1\x01\x03\x06\x03(\x02\x05\x03\x02\x03\x12\x11\x12\x12\x02\a\x05\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00,\x008\x00G\x00\x00\x01\x1132\x1d\x01\x14+\x01\"=\x01!\x15\x14+\x01\"=\x014;\x01\x11#\"=\x014;\x012\x1d\x01!54;\x012\x1d\x01\x14+\x01\x05\x14;\x012=\x014+\x01\"\x15\x0554+\x01\x15\x14\x06+\x01\x15\x14;\x012\x01\xe0\x14\f\f(\f\xfe\x80\f(\f\f\x14\x14\f\f(\f\x01\x80\f(\f\f\x14\xfe\x80\f\xa8\f\f\xa8\f\x01@\fT\x0e\nH\f\xa8\f\x01@\xfe\xe0\f(\f\f\x14\x14\f\f(\f\x01@\f(\f\f\x14\x14\f\f(\f\xb4\f\f\x88\f\f\xe8\x88\fH\n\x0e4\f\x00\x00\x00\x02\x00\x00\xff\xe0\x02@\x01\xa0\x00+\x00]\x00\x007\x15\x14+\x01\"=\x014;\x015#\"=\x014;\x012\x1d\x01!54;\x012\x1d\x01\x14+\x01\x1532\x1d\x01\x14+\x01\"=\x017\x1532\x1d\x01\x14+\x01\"=\x01!\x15\x14+\x01\"=\x014;\x0153\x15\x14\x16;\x0126=\x014&+\x015354;\x012\x1d\x01\x14+\x01@\x064\x06\x06\x1a\x1a\x06\x064\x06\x01 \x064\x06\x06\x1a\x1a\x06\x064\x06\xc0\x1a\x06\x064\x06\xfe\xe0\x064\x06\x06\x1a\x88\x0e\n@\n\x0e\x0e\n\bh\x064\x06\x06\x1a\x80\x1a\x06\x064\x06\xc0\x064\x06\x06\x1a\x1a\x06\x064\x06\xc0\x064\x06\x06\x1a@\xa0\x064\x06\x06\x1a\x1a\x06\x064\x06H\b\n\x0e\x0e\n@\n\x0eH\x1a\x06\x064\x06\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x11\x00\x1a\x00\x00%\"\x06\x1d\x01!\"&5\x11463!2\x16\x15\x11\x0f\x01\x06+\x0153\x15\x14\x018\n\x0e\xfe\xf8\n\x0e\x0e\n\x01\x90\n\x0e\ab\a\n\x06\x80\x80\x0e\n\x88\x0e\n\x01\x90\n\x0e\x0e\n\xfe\xf87b\a\x80\x06\n\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x0f\x00!\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x113\x15\x14\x06#!\"&5\x1146;\x01\x15\x14\x16\x01\xd0\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xd0\x1c\x14\xfe\xe0\x14\x1c\x1c\x140/\x01\xc0\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c\xfe`0\x14\x1c\x1c\x14\x01 \x14\x1c\xd0!/\x00\x00\x00\x00\x05\xff\xff\xff\xc0\x02\x80\x01\xc0\x00\x15\x00\x18\x004\x007\x00c\x00\x00%\x14\x06\"&5054676762\x17\x16\x17\x1e\x01\x15\x14'\a3\x05\x14\x0e\x01#\"&505467>\x04762\x17\x16\x17\x1e\x01\x15\x14'3'\x132\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x11&'#\"&=\x0146;\x0162\x1732\x16\x1d\x01\x14\x06+\x01\x06\a\x11\x01\x00KjK\n\x1e\x1a\x13\r<\r\x14\x1a\x1d\n\x80H\x90\x01\xb8\";#5K\n\x1e\x05\x05\v\b\v\x05\r<\r\x14\x1a\x1d\nȐH\x10\a\t\t\a\xfe`\a\t\t\a\xb0&\b\x82\a\t\t\a\x90\x19N\x19\x90\a\t\t\a\x82\b&p!//!\x01\b\x17<4&\x1a\x1a(59\x16\t\x01\xa0\x90\x10\x16%\x15/!\x01\b\x17<\n\n\x15\x10\x16\v\x1a\x1a(59\x16\t\x01\x10\x90\xfe\xf0\t\a \a\t\t\a \a\t\x01'\x10)\t\a \a\t \t\a \a\t)\x10\xfe\xd9\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\x80\x01\xc0\x00*\x000\x00\x00\x012\x16\x1d\x01\x14\x06#\x14\x06\a\x1e\x01\x152\x16\x1d\x01\x14\x06#!\"&=\x01463467.\x025\"&=\x01463\x014&\"\x06\x15\x01h\n\x0e\x0e\nD55D\n\x0e\x0e\n\xfe\xb0\n\x0e\x0e\nD5#7\x1f\n\x0e\x0e\n\x01\x10=V=\x01\xc0\x0e\n\x10\n\x0eCk\x12\x12kC\x0e\n\x10\n\x0e\x0e\n\x10\n\x0eCk\x12\f8O-\x0e\n\x10\n\x0e\xfe@;UU;\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00*\x000\x006\x00\x00\x012\x16\x1d\x01\x14\x06#\x14\x06\a\x1e\x01\x152\x16\x1d\x01\x14\x06#!\"&=\x01463467.\x025\"&=\x01463\x01.\x01\"\x06\a\x1365#\x14\x17\x01h\n\x0e\x0e\nD55D\n\x0e\x0e\n\xfe\xb0\n\x0e\x0e\nD5#7\x1f\n\x0e\x0e\n\x01\x05\r2<2\r\xba\v\xd0\v\x01\xc0\x0e\n\x10\n\x0eCk\x12\x12kC\x0e\n\x10\n\x0e\x0e\n\x10\n\x0eCk\x12\f8O-\x0e\n\x10\n\x0e\xfe\x80$,,$\x01\x00\x1e\"\"\x1e\x00\x00\x02\x00\x00\xff\xc0\x01\x80\x01\xc0\x00*\x000\x00\x00\x01\x14\x06\a\x1e\x01\x152\x16\x1d\x01\x14\x06#!\"&=\x01463467.\x025\"&=\x01463!2\x16\x1d\x01\x14\x0e\x01265#\x14\x01hD55D\n\x0e\x0e\n\xfe\xb0\n\x0e\x0e\nD5#7\x1f\n\x0e\x0e\n\x01P\n\x0e\x0e\xddV=\xd0\x01\x80Ck\x12\x12kC\x0e\n\x10\n\x0e\x0e\n\x10\n\x0eCk\x12\f8O-\x0e\n\x10\n\x0e\x0e\n\x10\n\x0e\x90U;;\x00\x00\x00\x00\x01\x00\x00\xff\xc0\x01\x80\x01\xc0\x00*\x00\x00\x01\x14\x06\a\x1e\x01\x152\x16\x1d\x01\x14\x06#!\"&=\x01463467.\x025\"&=\x01463!2\x16\x1d\x01\x14\x06\x01hD55D\n\x0e\x0e\n\xfe\xb0\n\x0e\x0e\nD5#7\x1f\n\x0e\x0e\n\x01P\n\x0e\x0e\x01\x80Ck\x12\x12kC\x0e\n\x10\n\x0e\x0e\n\x10\n\x0eCk\x12\f8O-\x0e\n\x10\n\x0e\x0e\n\x10\n\x0e\x00\x00\x00\x00\x01\x00\x00\xff\xdf\x02\x00\x01\xa1\x00?\x00\x00\x012\x1e\x01\x1d\x01\x14\x0f\x01\x06\x1d\x01\x14\x0e\x01+\x01\"&=\x014/\x01&=\x014632\x16\x1d\x01\x1754632\x16\x1d\x01354632\x16\x1d\x01354632\x16\x1d\x01346\x01\xd1\r\x15\r\b0\b\x06\v\a\xf0\n\x0e\x10p \x1d\x14\x13\x1c\b\x1d\x14\x13\x1c\b\x1d\x14\x13\x1c\b\x1d\x14\x13\x1c\b\x1d\x01p\x0e\x16\r\x85\x14\x12t\x12\x13\x03\a\v\x06\x0e\n\a\x15\x0ed\x1d+B\x14\x1c\x1d\x140\a\x88\x14\x1c\x1d\x14\x1f0\x14\x1c\x1d\x14/ \x14\x1c\x1d\x14\x1f\x14\x1c\x00\x00\x00\x01\xff\xfd\xff\xc0\x01\xc0\x01\xc1\x008\x00\x00\x012\x1e\x01\x1d\x01\x14\x0f\x01\x0e\x01+\x01\"&/\x01&>\x01\x16\x1f\x0154>\x0132\x16\x1d\x01354>\x0132\x1e\x02\x1d\x01354632\x16\x1d\x013546\x01\x99\n\x13\n\x05\x1b\x03\x1b\x10\xc6\n\x17\x06}\n\x05\x1b!\t \n\x13\n\x11\x18\b\n\x13\n\b\x10\v\x06\b\x17\x10\x11\x18\b\x18\x01@\v\x12\v\x96\x17\x15q\x10\x15\f\b\xac\x0e!\x13\x05\r,\xec\v\x12\v\x18\x11\xaf\xd8\v\x12\v\x06\v\x10\bױ\x10\x18\x18\x11\xb0W\x11\x18\x00\x01\x00\x00\xff\xe0\x02\x00\x01\xa4\x00.\x00\x00\x164635#\"&46;\x015#\"&46;\x015'.\x027>\x01\x1f\x017>\x01\x1f\x01\x1e\x01\x1d\x01\x14\x06\x0f\x01\x06+\x01\"\xd8\x17\x11 \x11\x17\x17\x11 \xd0\x14\x1c\x1c\x14в\f\x10\x03\x04\b$\x13\xbe\x19\t\x1d\rp\b\f\x11\x0e\x88\x04\x05P\x11\t\"\x17\b\x17\"\x17\b\x1c(\x1c\x0eE\x05\x14\x19\r\x12\x10\aK\x1f\f\x05\a@\x05\x14\n\xf0\x0e\x16\x03 \x01\x00\x00\x00\x00\x01\x00\x00\xff\xe0\x02@\x01\xa0\x00&\x00\x00\x0554/\x01&+\x01\"&=\x0146;\x0126?\x016&+\x01\"&=\x01463!2\x16\x17\x13\x16\x1d\x01\x01\x80\vp\f\x0e\x93\n\x0e%\x1b|\b\x12\x03\x16\x03\n\n\xe6\x17!\x0e\n\x01N\n\x18\x06\xa3\x0f =\x0e\aG\a\x0e\n\b\x1b%\f\b3\t\x10!\x17\x10\n\x0e\r\t\xfe\xfd\x17\x1ct\x00\x01\x00\x00\xff\xc0\x02\x00\x01\xc1\x00K\x00\x00\x01\x03\x0e\x01+\x01\"&/\x01&54632\x1f\x014/\x01&54632\x16\x1f\x01\x1632545'&54632\x1e\x01\x1f\x01\x1632?\x01>\x0232\x17\x1e\x01\x0f\x01\x141\x1432?\x01>\x0132\x16\x15\x14\x01\xffD\b<\"\u007f\x167\x10l\r\x17\x11\x10\v=\f*\x02\x17\x11\f\x17\x03&\x01\x06\t3\x01\x17\x11\b\x11\f\x028\x02\b\b\x02&\x02\v\x11\t\x06\x06\x0f\x0f\x03\"\a\x06\x02\x1d\x03\x17\r\x11\x17\x01/\xfe\xe1!/\x16\x0ff\f\x11\x11\x17\v9)(\x90\x05\x06\x11\x17\x11\f}\x06\b\x01\x01\xc4\x05\x05\x11\x17\b\x0e\b\xda\b\b\xb8\t\x0e\t\x02\x05\x1b\x10\xa5\x01\b\x06{\r\x12\x17\x11\x05\x00\x00\x00\x00\x04\xff\xfd\xff\xc0\x01\xc0\x01\xc0\x00-\x001\x005\x009\x00\x00%\x15\x14\x0f\x01\x0e\x01+\x01\"/\x01&>\x01\x16\x1f\x01\x11462\x16\x1d\x0135462\x16\x1d\x0135462\x16\x1d\x013462\x16\x05#\x1537#\x1537#\x153\x01\xc0\x01 \x03\x16\x0e\xd0\x14\f\x80\n\x05\x1b!\t \x17\"\x17\b\x17\"\x17\b\x17\"\x17\b\x17\"\x17\xff\x00\b\bX\b\bX\b\b\xd0`\x05\x04\x88\x0e\x11\x10\xb0\x0e!\x13\x05\r,\x01\x14\x11\x17\x17\x11\xc8(\x11\x17\x17\x11(\x18\x11\x17\x17\x11\x18\x11\x17\x17a`````\x00\x00\x01\xff\xfc\xff\xc0\x01\xc0\x01\xc0\x00-\x00\x00$2\x16\x1d\x01\x14\x0f\x01\x0e\x01+\x01\".\x01/\x01&6?\x01'&>\x01\x16\x1f\x0135462\x16\x1d\x0135462\x16\x1d\x0134\x01\x87\"\x17\x01 \x03\x16\x0e\xf0\x06\x0e\f\x03@\a\x05\f\x1fK\a\x10%$\bE\x0e\x1c(\x1c\b\x17\"\x17\b\xe8\x17\x11P\x05\x04\x88\x0e\x11\x05\n\x05p\r\x1d\t\x19\xbe\x13$\x0f\x10\x12\xb2\xd0\x14\x1c\x1c\x14\xd0 \x11\x17\x17\x11 \x11\x00\x02\x00\x00\x00 \x02\x81\x01`\x00\x19\x00G\x00\x00\x012\x1e\x01\a\x15\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\"&=\x0143\x01\x16+\x01\"/\x015#\x06\x0f\x01\x06+\x01\"/\x02#\x16\x0f\x01\x06+\x01\"&7\x136;\x012\x1f\x0236?\x016;\x012\x17\x01\x05\x03\x05\x04\x01\a\x05U\a\x056\x05\aU\x05\a\f\x02t\x01\r6\v\x01\t\x01\v\a\x1e\x03\t2\t\x02\x1f\x12\x01\x02\x02\t\x01\v6\x06\a\x01\x18\x01\vA\t\x03+\x10\x01\t\b+\x03\tA\v\x01\x01`\x03\x06\x03+\x05\a\xf1\x05\a\a\x05\xf1\a\x05+\f\xfe\xcd\r\v\x856\"\x14U\a\aU6\x1e\x18\x85\v\b\x05\x01(\v\b\u007f5 \x15\u007f\b\v\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00*\x00\x00%\x14+\x01532\x166\x14\x06\"&462\x13&'654+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x013\x17\x16;\x0126\x01\x1d\x1c\x1e\x17\x15\x0eۑΑ\x91\xce\x04+\x01&jG\t\x0f\x0f\t\x17\n\x0e\x1a,\a\x0e\x18\x0e\x0e\xf1\x1d8\f'Α\x91Α\xfe\xa0O\x02\x182Y\x0e\n\xe8\n\x0e\x0e\nHS\r\x18\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x80\x01\xc0\x00#\x00'\x00\x00\x012\x16\x15\x11\x14\x06+\x01\x1532\x16\x1d\x01\x14\x06#!\"&=\x0146;\x015#\"&5\x11463\x01\x11!\x11\x02P\x14\x1c\x1c\x14\xf0\xb0\a\t\t\a\xfe`\a\t\t\a\xb0\xf0\x14\x1c\x1c\x14\x02\x10\xfe\x00\x01\xc0\x1c\x14\xfe\xc0\x14\x1c \t\a \a\t\t\a \a\t \x1c\x14\x01@\x14\x1c\xfe\xa0\x01 \xfe\xe0\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1d\x00+\x00G\x00\x00\x01!\"=\x0146;\x0154;\x012\x1d\x01354;\x012\x1d\x0132\x16\x1d\x01\x14\x05!2\x15\x11\x14\x06#!\"&5\x114\x054+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x01325\x01\xb4\xfeX\f\x1c\x140\f(\f\x80\f(\f0\x14\x1c\xfeL\x01\xa8\f\x1c\x14\xfe\xa0\x14\x1c\x01H\f<\f(\f<\f\f<\f(\f<\f\x01 \f$\x14\x1c4\f\f44\f\f4\x1c\x14$\f \f\xfe\xfc\x14\x1c\x1c\x14\x01\x04\f\x8c\f<\f\f<\f(\f<\f\f<\f\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1d\x00+\x007\x00\x00\x01!\"=\x0146;\x0154;\x012\x1d\x01354;\x012\x1d\x0132\x16\x1d\x01\x14\x05!2\x15\x11\x14\x06#!\"&5\x114\x052=\x014+\x01\"\x1d\x01\x143\x01\xb4\xfeX\f\x1c\x140\f(\f\x80\f(\f0\x14\x1c\xfeL\x01\xa8\f\x1c\x14\xfe\xa0\x14\x1c\x01<\f\f\xb8\f\f\x01 \f$\x14\x1c4\f\f44\f\f4\x1c\x14$\f \f\xfe\xfc\x14\x1c\x1c\x14\x01\x04\f\xc0\f(\f\f(\f\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1d\x00+\x00G\x00\x00\x01!\"=\x0146;\x0154;\x012\x1d\x01354;\x012\x1d\x0132\x16\x1d\x01\x14\x05!2\x15\x11\x14\x06#!\"&5\x114\x0576/\x01&\x0f\x01'&\x0f\x01\x06\x1f\x01\a\x06\x1f\x01\x16?\x01\x17\x16?\x016'\x01\xb4\xfeX\f\x1c\x140\f(\f\x80\f(\f0\x14\x1c\xfeL\x01\xa8\f\x1c\x14\xfe\xa0\x14\x1c\x01\r0\t\t\x1c\b\t00\t\b\x1c\t\t00\t\t\x1c\b\t00\t\b\x1c\t\t\x01 \f$\x14\x1c4\f\f44\f\f4\x1c\x14$\f \f\xfe\xfc\x14\x1c\x1c\x14\x01\x04\f\xa00\t\b\x1c\t\t00\t\t\x1c\b\t00\t\b\x1c\t\t00\t\t\x1c\b\t\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1d\x00+\x00;\x00\x00\x01!\"=\x0146;\x0154;\x012\x1d\x01354;\x012\x1d\x0132\x16\x1d\x01\x14\x05!2\x15\x11\x14\x06#!\"&5\x114\x05'&\x0f\x01'&\x0f\x01\x06\x1f\x01\x16?\x016\x01\xb4\xfeX\f\x1c\x140\f(\f\x80\f(\f0\x14\x1c\xfeL\x01\xa8\f\x1c\x14\xfe\xa0\x14\x1c\x01Y\x1c\b\tj.\b\t\x1c\t\tR\t\b\x8f\t\x01 \f$\x14\x1c4\f\f44\f\f4\x1c\x14$\f \f\xfe\xfc\x14\x1c\x1c\x14\x01\x04\f`\x1c\t\bj/\b\b\x1c\t\bT\b\b\x8e\t\x00\x00\x00\x00\x01\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x19\x00\x00\x016\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x16\x1d\x0176\x16\x1d\x01\x01\xdb\f\x19\x0e\n\xfe0\n\x0e\x0e\np\n\x0e\x8b\f\x19\x01\x1c\b\x0e\x0e\xfe\xf0\n\x0e\x0e\n\x01\x90\n\x0e\x0e\n\xc4X\b\x0e\x0eD\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01 \x01\xc0\x00\t\x00\x11\x00\x1d\x00\x007\x1627\x15\a\x06\"/\x01\x022\x16\x14\x06\"&4724#\"\x06\x15\x142546p\x11\x1e\x11\x16\x04\f\x04\x16\x1cxTTxT\x90\f\f&6\x18(\x83\x03\x03\x9d!\x05\x05!\x01\xdaTxTTx\b\x186&\f\f\x1c(\x00\x00\x00\x00\x03\xff\xf9\xff\xc0\x02\a\x01\xc0\x00\x1a\x00$\x009\x00\x00\x01\x16\x0f\x01\x06#!\"&=\x0146;\x01546;\x012\x16\x1d\x0132\x17\x0353\x15\x14\x06+\x01\"&\x132\x16\x1d\x01\x14\x06#!\"/\x01&?\x016;\x0153\x15\x01\xfb\f\f+\t\x0e\xfe\u007f\n\x0e\x0e\n\xa8\t\a \a\t\x99\x0e\t\xf0@\t\a \a\t\xe8\n\x0e\x0e\n\xfe\u007f\x0e\t+\f\f+\t\x0e\x99@\x01k\v\v,\t\x0e\nP\n\x0e\x10\a\t\t\a\x10\t\xfe9pp\a\t\t\x01\x17\x0e\nP\n\x0e\t,\v\v,\t \x00\x00\x00\x03\x00\x00\xff\xde\x02@\x01\xa1\x00\n\x00\x0e\x00\x1a\x00\x00\x114>\x01?\x01\x11\a\x06&57\x11\x17\x11\x136\x1e\x01\x15\x11\x14\x0e\x01\x0f\x01\x11\x05\n\x05\x8c\x8a\b\x0e\xc0\xc0\xaa\x06\t\a\x05\n\x05\x8c\x01J\x06\f\n\x028\xfe\x80?\x03\n\b0\x01\x80@\xfe\x80\x01\xbf\x02\x03\b\x06\xfe\xa6\x06\f\n\x028\x01\x80\x00\x01\x00\x00\xff\xbd\x02\x00\x01\xc0\x00\x15\x00\x00\x012\x16\x15\x11\x14\x06+\x01\a\x06&=\x01#\"&5\x11463\x01\xc0\x1a&&\x1a\x90}\x06\r`\x1a&&\x1a\x01\xc0&\x1a\xfe\xe0\x1a&^\x04\a\aT&\x1a\x01 \x1a&\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x17\x00'\x00\x00\x122\x16\x14\x06\"&4\x1754&+\x01\"\x06\x1d\x01\x14\x16;\x0126754&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x99Α\x91Α\xe8\t\a0\a\t\t\a0\a\tp\t\a0\a\t\t\a0\a\t\x01\xb8\x91Α\x91η\xa0\a\t\t\a\xa0\a\t\t\a\xa0\a\t\t\a\xa0\a\t\t\x00\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x17\x00\x00\x122\x16\x14\x06\"&4\x0554&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x99Α\x91Α\x01X\t\a\xa0\a\t\t\a\xa0\a\t\x01\xb8\x91Α\x91η\xa0\a\t\t\a\xa0\a\t\t\x00\x00\x04\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x11\x00\x19\x00!\x00)\x00\x00\x013\x11\x14\x06#!\"&5\x1135462\x16\x15#\x15354&\"\x06\x16264&\"\x06\x14\x06264&\"\x06\x14\x01``/!\xfe\xe0!/`KjK\xc0\x80&4&\x96\x14\x0e\x0e\x14\x0e\xb2\x14\x0e\x0e\x14\x0e\x01 \xfe\xf0!//!\x01\x10 5KK5 \x1a&&\x92\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x00\x04\x00\x00\xff\xe0\x02@\x01\xa2\x00*\x006\x00B\x00N\x00\x00%\x15\x14\x06+\x01\a\x0e\x02#!\"&/\x01#\"&=\x0146;\x017>\x01\x1e\x01\x0f\x013'&>\x01\x16\x1f\x0132\x16\x0554&\"\x06\x1d\x01\x14\x1626754&\"\x06\x1d\x01\x14\x1626'54&\"\x06\x1d\x01\x14\x1626\x02@\x0e\n\b\x1a\x02\r\x15\f\xfe\x94\x12\x1b\x03\x1a\b\n\x0e\x0e\nCk\b\x1a\x16\x04\bP\xecP\b\x04\x16\x1a\bkC\n\x0e\xfe\xf8\x0e\x14\x0e\x0e\x14\x0ep\x0e\x14\x0e\x0e\x14\x0e\xe0\x0e\x14\x0e\x0e\x14\x0e\xe8\x10\n\x0e\xb7\v\x13\v\x17\x12\xb7\x0e\n\x10\n\x0e\x93\v\x04\x10\x1a\vmm\v\x1a\x10\x04\v\x93\x0e\xbap\n\x0e\x0e\np\n\x0e\x0e\np\n\x0e\x0e\np\n\x0e\x0e\np\n\x0e\x0e\np\n\x0e\x0e\x00\x00\x00\x00\x02\xff\xff\xff\xe0\x01\xc1\x01\xa0\x00C\x00G\x00\x00\x01\x06+\x01\a32\x16\x0f\x01\x06+\x01\a\x06+\x01\"&?\x01#\a\x06+\x01\"&?\x01#\"&?\x016;\x017#\"&?\x016;\x0176;\x012\x16\x0f\x01376;\x012\x16\x0f\x0132\x16\x0f\x017#\a\x01\xb9\x02\nO\x17K\x05\b\x01\b\x01\nP\x0f\x02\n(\x06\a\x01\x0eb\x10\x01\n)\x06\a\x01\x0fK\x06\a\x01\a\x02\nO\x17K\x05\b\x01\b\x01\nP\x0f\x02\n(\x06\a\x01\x0eb\x10\x01\n)\x06\a\x01\x0fK\x06\a\x01\xba\x17c\x17\x01\n\n\x80\t\x05(\nV\n\t\x05RV\n\t\x05R\t\x05(\n\x80\t\x05(\nV\n\t\x05RV\n\t\x05R\t\x05\xb2\x80\x80\x00\x00\x05\xff\xfc\xff\xc0\x01\xc4\x01\xc0\x00\a\x00\x0f\x00\x17\x00\x1f\x00-\x00\x006\"&462\x16\x14&\"\x06\x14\x16264\x162\x16\x14\x06\"&4\x16264&\"\x06\x14\x1332\x16\a\x01\x06+\x01\"&7\x016\x9e\\BB\\B\\(\x1c\x1c(\x1c\x82\\BB\\B\\(\x1c\x1c(\x1ch \x0e\x0e\b\xfe\x91\a\f\"\x0e\x0e\t\x01p\a\xe0B\\BB\\^\x1c(\x1c\x1c(\xc4B\\BB\\^\x1c(\x1c\x1c(\x01\xa4\x1a\f\xfe0\n\x1a\f\x01\xd0\n\x00\x05\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00G\x00\x00\x00\"\x06\x14\x16264$2\x16\x14\x06\"&462\x16\x14\x06\"&46\"\x06\x14\x16264\x17>\x01.\x01\a\x06\"'&\x0e\x01\x16\x17\x16\x17\x14\x0e\x01\a\x06\x1e\x0167673\x16\x17\x1e\x01>\x01'.\x0256\x01V\xaczz\xacz\xfe\xc9Α\x91Α\xa8\xa0pp\xa0p\xcf\x1e\x15\x15\x1e\x15R\x06\a\x03\v\aHLH\a\v\x03\a\x065\x1d\t\x06\n\x02\x06\x0e\r\x03\x12\x04\n\x04\x12\x03\r\x0e\x06\x02\n\x06\t\x1d\x01\x90z\xaczz\xac\xa2\x91Α\x91\xceYp\xa0pp\xa0D\x15\x1e\x15\x15\x1eM\x01\f\r\a\x02\x11\x11\x02\a\r\v\x02\f\x04/A\x13\x18\a\x0e\x05\x06\x06.!!.\x06\x06\x05\x0e\a\x18\x13A/\x04\x00\x04\x00\x00\xff\xbd\x01\x80\x01\xc0\x00\v\x00\x13\x00\x1b\x00B\x00\x00\x05\x06#\"/\x0167\x17\x16\x15\x14'\x17\x16\x0e\x01&/\x01\x12\"&462\x16\x14\x17\x16\x06\a\x06&/\x01&#\"\x15\x14\x1f\x01\x15\a\x0e\x01.\x01?\x015\a\x15\x14\x06#\"&=\x0176;\x012\x17\x01|\x02\x02\x05\x02}\b\x05~\x01\xf1?\x05\v\x18\x19\x05$\x04$\x1a\x1a$\x1ao\x06\x02\b\a\x14\af\x01\x02\x04\x01\x1fB\x04\x18\x19\f\x056\x10\x0e\n\n\x0e=\a\f \f\a?\x01\x04\xce\x03\a\xd0\x02\x02\x05Ú\f\x19\n\v\fX\x01<\x1a$\x1a\x1a$\xc3\b\x14\x06\x06\x02\b\x81\x02\x04\x02\x01'l\xb5\f\f\t\x18\r\x95\x8c\x14P\n\x0e\x0e\v_O\t\t\x00\x05\x00\x00\x00\x00\x02\x00\x01\x80\x00\x06\x00\x0e\x00\x1e\x007\x00G\x00\x007\x17#767\x1672\x16\x15\x14+\x0157\x11\x14\x06#!\"&5\x11463!2\x16\x05'&+\x01\"\x0f\x01\x06\x1e\x02;\x012?\x013\x17\x16;\x012>\x0174.\x01+\x01\"\x06\x1d\x01\x14\x16;\x0126\xa3\t\x1a\t\x02\x02\x02\xa8\x16\x19/\x0e\xc5\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c\xfe\xf59\x02\t$\b\x039\x01\x01\x03\x05\x03\x1d\t\x03\b4\b\x03\t\x1d\x04\x06\x03\xb7\x18-\x1e9\x05\a\a\x059.5\xd1\x1e\x1e\x06\n\n\x1a\x19\x181b_\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c\x1c\xf4\xa8\b\b\xa8\x03\x06\x04\x03\t\x1e\x1e\t\x05\aT\x1e+\x17\a\x05\xa8\x05\a4\x00\x04\xff\xf4\xff\xc0\x01\x81\x01\xc6\x00!\x003\x00C\x00S\x00\x00\x17.\x01676\x1f\x01\x16\x15\x14\x0f\x01\x06#\"#'\x06\x177232\x1f\x01\x16\x15\x14\x0f\x01\x06#\"\x13\x16\x14\a\x0e\x01/\x01&764'&?\x016\x167\x16\x14\a\x06/\x01&764'&?\x016\a\x16\x14\a\x06/\x01&764'&?\x016a@-.?\n\f@\b\x01 \x04\f\x01\x018 8\x01\x01\f\x04 \x01\b@\x05\x05\a\x91\t\t\x03\v\x05\x06\x06\x04\x04\x04\x04\x06\x06\x05\v_--\b\n\x05\t\b%%\b\t\x05\n&\x1b\x1b\b\n\x06\b\a\x14\x14\a\b\x06\n;@\xab\xab@\n\b(\x05\n\x03\x03Q\v\x06ZZ\x06\vQ\x03\x03\n\x05(\x03\x01\xa1\x10\"\x10\x05\x01\x04\x06\x06\b\a\x10\a\b\x06\x06\x04\x01V6\x8c6\n\t\x06\b\b-t-\b\b\x06\t7#X#\n\t\x06\a\b\x1aB\x1a\b\a\x06\t\x00\x00\f\x00\x00\x00\x00\x02\x80\x01\xa0\x00\a\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x007\x00?\x00G\x00O\x00W\x00_\x00\x006\x14\x06\"&462\x062\x16\x14\x06\"&4\x122\x16\x14\x06\"&4\x162\x16\x14\x06\"&4\x162\x16\x14\x06\"&4\x122\x16\x14\x06\"&4\x042\x16\x14\x06\"&4\x162\x16\x14\x06\"&4\x122\x16\x14\x06\"&4\x162\x16\x14\x06\"&4\x162\x16\x14\x06\"&4\x122\x16\x14\x06\"&4\x80%6%%6(\x1a\x13\x13\x1a\x13\x056%%6%\xd3\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x056%%6%\x01\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x056%%6%\xd3\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\xdb6%%6%\xc0\x13\x1a\x13\x13\x1a\x01s%6%%6\x9b\x13\x1a\x13\x13\x1a\x8d\x13\x1a\x13\x13\x1a\x01s%6%%6\x9b\x13\x1a\x13\x13\x1a\x8d\x13\x1a\x13\x13\x1a\x01s%6%%6\x9b\x13\x1a\x13\x13\x1a\x8d\x13\x1a\x13\x13\x1a\x01S\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x06\x00\x00\xff\xc0\x02\x00\x01\xc1\x00\x13\x008\x00@\x00H\x00`\x00d\x00\x007\x14\x06\"&5462\x16\x15\x14\x06\"&54&\"\x06&2\x16\x15\x14\x0e\x03\x15\x14\x06#\"&4632654>\x0254&\"\x06\x15\x14\x06\"&54\x162\x16\x14\x06\"&4\x062\x16\x14\x06\"&4%\x14\x06\"&54=\x01.\x01'.\x017>\x03\x17\x1e\x01\x17\x14\x05\a'7\xd8\x10\x18\x10/B/\x10\x18\x10\x0e\x14\x0e1\x92g\x0f\x15\x15\x0f?-\f\x10\x10\f\x16\x1e\x17\x1b\x16FdF\x10\x18\x10S\x1a\x13\x13\x1a\x13m\x1a\x13\x13\x1a\x13\x02\x00\x10\x18\x10\x01Q@\v\n\x03\x02\b\t\f\x05Qf\x01\xfe\x99\"P\"\xbc\f\x10\x10\f!//!\f\x10\x10\f\n\x0e\x0e\xa6gI\x1b+\x1a\x14\x13\t-?\x10\x18\x10\x1e\x16\x19%\x13&\x192FF2\f\x10\x10\fI\x85\x13\x1a\x13\x13\x1am\x13\x1a\x13\x13\x1a\xcf\f\x10\x10\f\x02\x01\x01Do\x16\x04\x15\v\x05\t\x04\x01\x02\x1b\x8cV\x03\xb5\"P\"\x00\x00\x00\x04\xff\xfa\xff\xc6\x02\x86\x01\xba\x002\x00A\x00t\x00\x82\x00\x00\x01&\a2\x17\x16\x06#2\x16\a\x0e\x01#'\a\x06&/\x01&?\x02676\x1e\x01\x06\a\x06\a676\x16\x17\x16\x0e\x01\a\x06\a6\x17\x1e\x01\a\x0e\x01\a&#\"\x06\x15\x14\x1e\x0132763&%\x16\x0f\x02\x06\a\x06.\x016767\x06\a\x06&'&>\x01767\x06'.\x017>\x01\x17\x167\"'&63\"&7>\x013\x1776\x16\x17\a\"\a\x06#\x16\x17\x1632654&\x01# !=\x18\a\x10\x0e\x0e\x10\a\v+\x1a^C\a\x0e\x03,\b\x0f:)\nF\b\x16\x0e\x02\b\x14\r\"(\v\x12\x01\x01\x05\f\a\x17\x15-+\n\a\x05\x05\x15%\n\x16\x0f\x14\n\x10\t\x16\n\a\x11\x11\x01p\b\x0f:)\nF\b\x16\x0e\x02\b\x14\r\"(\t\x14\x01\x01\x05\f\a\x17\x15-+\n\a\x05\x05\x15\t !=\x18\a\x10\x0e\x0e\x10\a\v+\x1c\\C\a\x0e\x03\xb9\x16\n\a\x11\x11\a\n\x16\x0f\x14\x15\x01\x03\x10\f3\r\x19\x19\r\x17\x1c\t!\x04\x05\x06Y\x0f\t!JZ9\a\x02\x11\x16\a\x11\x13\x17\x05\x02\x0e\v\a\r\t\x01\x02\r\n\x15\x05\x15\n\n\aA\x15\x15\x0f\n\x11\b\x14\x0f\x014\x10\b!JZ9\a\x02\x11\x16\a\x11\x13\x17\x05\x02\r\f\a\r\t\x01\x02\r\n\x15\x05\x15\n\n\a\x05\x10\f3\r\x19\x19\r\x17\x1c\t!\x04\x05\x06G\x14\x0f\x01\x0f\x14\x15\x0f\x0f\x14\x00\x00\x00\x00\x04\xff\xfb\xff\xc0\x02\x05\x01\xc5\x00\x13\x008\x00D\x00Q\x00\x007\x14\x06\"&5462\x16\x15\x14\x06\"&54&\"\x06&2\x16\x15\x14\x0e\x03\x15\x14\x06#\"&4632654>\x0254&\"\x06\x15\x14\x06\"&54%\x16\x0f\x01\x06/\x01&?\x016\x17\x01\x17\x16\x0f\x01\x06\"/\x01&?\x016\xd8\x10\x18\x10/B/\x10\x18\x10\x0e\x14\x0e1\x92g\x0f\x15\x15\x0f?-\f\x10\x10\f\x16\x1e\x17\x1b\x16FdF\x10\x18\x10\x01\xbc\t\tW\b\t\x1c\b\bW\t\b\xfe\xc9\x1c\t\t\x94\x04\n\x03\x1c\t\t\x94\b\xbc\f\x10\x10\f!//!\f\x10\x10\f\n\x0e\x0e\xa6gI\x1b+\x1a\x14\x13\t-?\x10\x18\x10\x1e\x16\x19%\x13&\x192FF2\f\x10\x10\fI\x9b\b\tW\b\b\x1c\t\bW\t\t\xfe\xc9\x1c\t\b\x94\x04\x04\x1c\b\t\x94\t\x00\x00\x00\x03\xff\xff\xff\xbf\x01\xc0\x01\xc2\x002\x00?\x00k\x00\x00\x1746;\x015#\"&546;\x015#\"&546;\x015#\"&746;\x01'.\x01>\x01\x1f\x01\x16\x1d\x01\x14\x06\x0f\x01\x06+\x01\"&7'&676\x16\x1f\x01\x06\x16\x1f\x017\x141\x14\x0f\x0154/\x01&\a'&676\x16\x1f\x017'&676\x16\x1f\x017'&676\x16\x1f\x01'&>\x01\x16\x15[\x11\r>~\f\x11\x11\v\u007f\x9a\f\x11\x11\f\x9a}\f\x12\x01\x10\f\xa9\x1f\n\x04\x0e\x18\t|\x0e\x0f\fP\x10\x10k\f\x10I%\a\x03\t\t\x18\b\r\r\x02\x0e\v\xf7\r=\x12{\x15\x154\a\x03\t\n\x17\aN\x04^\b\x03\n\t\x17\a_\x05M\b\x03\n\t\x17\bg\x01\x01\x11\x17\x12$\f\x11\x06\x11\f\f\x10\x06\x11\f\v\x11\x06\x11\f\v\x11\x16\a\x18\x13\x03\x06Z\n\x12\x8d\f\x13\x02\x13\x04\x10\xee.\n\x17\a\b\x03\n\x11\v#\n\b\x02\x01\x11\n0\x11\x16\fZ\x0f\x0eC\t\x18\b\a\x03\nc\x03y\n\x18\a\a\x03\tz\x04b\n\x18\a\a\x03\t\x85&\f\x11\x01\x10\f\x00\x00\x00\x02\xff\xf8\xff\xbe\x02@\x01\xc2\x00-\x00E\x00\x00%\x16\x14\a\x06\a\x17\x16\x06\x0f\x01\x06&'\x03\x06\a\x13\x06#\"/\x02\x06\a\x17&'&767'&6?\x016\x16\x1f\x01632\x16\a654&#\"\a\x176\x17\"\x06\x15\x14\x1e\x013265\x16\x06\a\x029\a\a1W+\x05\x03\b\r\b\x14\x06\xfc\x14\x12\xbe\x12\x11\x16\x16)w\x10\r}q<\x0f\x0f1W+\x05\x03\b\r\b\x14\x065(*Y\x95\x88\"P8\x1a\x18\x13*&\x12\x19\v\x14\f\x12\x19\x0e\x05\x12\xd8\v\x1a\vT+:\b\x14\x05\n\x05\x03\b\x01e\t\r\xfe\xf1\x02\x03:\xab\x11\x13\xb2(f\x18\x18T+:\b\x14\x05\n\x05\x03\bH\nW\xbb'38P\t\x1c\r\x14\x19\x12\f\x13\f\x19\x12\x1a=\x19\x00\x00\x00\x00\x06\x00\x00\xff\xfd\x02\x80\x01\x80\x00\x19\x00 \x00(\x00/\x007\x00W\x00\x00\x012\x1f\x01\x15&/\x0176'&\"\x0f\x01\x15\x06&'&475763\x173\x11#\"&5:\x0164&\"\x06\x14\x05\x113\x15\x14\x06#&\"\x06\x14\x16264\x05\x1e\x01\x0f\x01\x0e\x01/\x01\a\x0e\x01/\x01\x0e\x01/\x01#576;\x01\a\x0e\x01\x17\x1e\x01?\x01\x01\xb3\r\t7\x04\x04\x92\x1a\f\n\x05\r\x05P\r\"\n\n\rb\t\r\xc3`@\r\x13)\x0e\t\t\x0e\t\xfd\xc0`\x13\r\t\x0e\t\t\x0e\t\x01\xa4\n\x03\t\t\b\x1b\n\x05 \t\x1f\f\x12\x115\x14[\x127\t\rTR\x16\x02\x14\x14;\x17\x1e\x01\x80\t7\xc2\x05\x03v\x18\v\f\x05\x04I\x01\n\x02\v\f!\v\x01Z\b@\xff\x00\x13\r\t\x0e\t\t\x0e)\x01\x00\xe0\r\x13@\t\x0e\t\t\x0e\n\b\x1a\v\f\n\x03\t\x04&\f\x04\n\x10\x15\x06\x11R\xe07\tK\x14<\x16\x15\x03\x14\x1b\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc1\x00\x1a\x00F\x00\x00\x05\x14\x06#!\"&5\x1147670>\x0232\x1e\x021\x16\x17\x16\x15\a&\a\x06\a0\x0e\x02#\".\x03'&'&\x0f\x01\x06\x15\x14\x17\x16\x17\x1e\x042>\x03767654'\x02\x00\x1c\x14\xfe`\x14\x1c\x12)|\x1c\x0e\x17\b\b\x17\x0e\x1c|)\x12B\x04\a#G\x1c\x0e\x17\b\a\x10\x11\r\x12\x02G#\a\x04\t\x02\x03$F\x02\x16\x0e\x17\x15\x14\x15\x17\x0e\x16\x02F$\x03\x02\x10\x14\x1c\x1c\x14\x01\a\x18\x0e Z\x15\t\v\v\t\x15Z \x0e\x18B\x06\x04\x1b3\x15\t\v\x06\v\t\x0e\x013\x1b\x04\x06\x0e\x02\x02\x04\x03\x1a2\x02\x11\n\r\x06\x06\r\n\x11\x022\x1a\x03\x04\x02\x02\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00'\x00/\x00D\x00\x00\x01#\x1532\x1d\x01\x14+\x01\x1532\x1d\x01\x14+\x01\x15\x14\x06#!\"&5\x11463!2\x16\x1d\x0132\x1d\x01\x14&\"\x06\x14\x16264\x1754&+\x01\x06\"'#\"\x0e\x01\x1d\x01\x14\x16;\x0126\x01\xb4\x14\x14\f\f\x14\x14\f\f\x14\x1c\x14\xfe\xc0\x14\x1c\x1c\x14\x01@\x14\x1c\x14\f\xd64&&4&0'\x1c\x05\x13*\x13\x05\x12\x1f\x12\r\t\xb4\t\r\x01 @\f(\f@\f(\f0\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x1c\x140\f(\f &4&&4\xc7\x13\x18\"\b\b\x0f\x1b\x10\x13\b\v\v\x00\x00\x00\x06\x00\x00\xff\xe0\x02@\x01\xa0\x00\x0f\x00\x17\x00+\x007\x00C\x00O\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x16\"\x06\x14\x16264\x1754&+\x01\x06\"'#\"\x06\x1d\x01\x14\x16;\x0126754+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x02\x10\x14\x1c\x1c\x14\xfe \x14\x1c\x1c\x14\x9a4&&4&0'\x1c\x05\x13*\x13\x05\x1c'\r\t\xb4\t\r\xe0\b\x90\b\b\x90\b\b\x90\b\b\x90\b\b\x90\b\b\x90\b\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c`&4&&4\xc7\x13\x18\"\b\b\"\x18\x13\b\v\v=\x10\b\b\x10\bH\x10\b\b\x10\bH\x10\b\b\x10\b\x00\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1f\x00\x00\x122\x16\x14\x06\"&4$\"\x06\x14\x16264\x0227.\x01#\"\a\x06\"'&#\"\x06\a\x91Α\x91Α\x01\x1cH44H4\xb1\xb29\x0e4 \x03\x04\x15(\x15\x04\x03 4\x0e\x01\xb8\x91Α\x91\xce14H44H\xfe\xdcD\x1b!\x01\a\a\x01!\x1b\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x0f\x00\x1b\x00#\x007\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x17\"\x06\x14\x16;\x01264&#\x06\"\x06\x14\x16264\x1754&+\x01\x06\"'#\"\x06\x1d\x01\x14\x16;\x0126\x01P\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14`\a\t\t\a`\a\t\t\a\x164&&4&0'\x1c\x05\x13*\x13\x05\x1c'\r\t\xb4\t\r\x01\xc0\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c \t\x0e\t\t\x0e\t\x80&4&&4\xc7\x13\x18\"\b\b\"\x18\x13\b\v\v\x00\x00\x00\a\x00\x00\xff\xe0\x02@\x01\xa0\x00\t\x00\x13\x00\x1f\x00+\x007\x00?\x00R\x00\x00\x012\x16\x1d\x01!5463\x03\x11!\x11\x14\x06#!\"&%\x15\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"&\"\x06\x14\x16264\a\x06\x16;\x0126'.\x01+\x01\x06\"'#\"\x0e\x01\x02\x10\x14\x1c\xfd\xc0\x1c\x140\x02@\x1c\x14\xfe \x14\x1c\x01`\b\x90\b\b\x90\b\b\x90\b\b\x90\b\b\x90\b\b\x90\b\x964&&4&\xad\x02\n\b\xba\b\n\x02\x06\"\x15\b\x13*\x13\b\x0e\x19\x12\x01\xa0\x1c\x14\x10\x10\x14\x1c\xfep\x010\xfe\xd0\x14\x1c\x1c\xfc\x10\b\b\x10\bH\x10\b\b\x10\bH\x10\b\b\x10\b\x80&4&&4\xa6\a\r\f\b\x13\x19\b\b\v\x14\x00\x00\x03\xff\xff\xff\xc0\x01\x00\x01\xc0\x00\x12\x003\x00C\x00\x00\x13\x15\x16\x15\x14\x06#0#\"&5475462\x16\x032654.\x06'54&\"\x06\x1d\x01\x0e\a\x15\x14\x1e\x0137\x14\x06\"&5475462\x16\x1d\x01\x16\xe0 K5\x015J 8P8`!/\x02\x02\x06\x03\a\x03\b\x01\x1c(\x1c\x01\b\x03\a\x03\x06\x02\x02\x15%\x15A%6% \x13\x1a\x13 \x01`\xcb%05KL50$\xcb(88\xfeh/!\x06\f\t\v\x06\t\x04\t\x01\xdd\x14\x1c\x1c\x14\xdd\x01\n\x03\t\x06\v\t\v\a\x15%\x16P\x1b%%\x1b%\x12\xe9\r\x13\x13\r\xe9\x12\x00\x03\xff\xff\xff\xc0\x01\x00\x01\xc0\x00\x0f\x00\"\x00C\x00\x007\x14\x06\"&5475462\x16\x1d\x01\x167\x16\x15\x14\x06#0#\"&5475462\x16\x15\x034.\x06'54&\"\x06\x1d\x01\x0e\a\x15\x14\x1e\x01;\x0126\xc0%6% \x13\x1a\x13 K5\x015J 8P8\x10\x02\x02\x06\x03\a\x03\b\x01\x1c(\x1c\x01\b\x03\a\x03\x06\x02\x02\x15%\x15\x01!/@\x1b%%\x1b%\x12\xa9\r\x13\x13\r\xa9\x120%05KL50$\xcb(88(\xfe\xe0\x06\f\t\v\x06\t\x04\t\x01\xdd\x14\x1c\x1c\x14\xdd\x01\n\x03\t\x06\v\t\v\a\x15%\x16/\x00\x00\x03\xff\xff\xff\xc0\x01\x00\x01\xc0\x00\x0f\x00\"\x00C\x00\x007\x14\x06\"&5475462\x16\x1d\x01\x167\x16\x15\x14\x06#0#\"&5475462\x16\x15\x034.\x06'54&\"\x06\x1d\x01\x0e\a\x15\x14\x1e\x01;\x0126\xc0%6% \x13\x1a\x13 K5\x015J 8P8\x10\x02\x02\x06\x03\a\x03\b\x01\x1c(\x1c\x01\b\x03\a\x03\x06\x02\x02\x15%\x15\x01!/@\x1b%%\x1b%\x12i\r\x13\x13\ri\x120%05KL50$\xcb(88(\xfe\xe0\x06\f\t\v\x06\t\x04\t\x01\xdd\x14\x1c\x1c\x14\xdd\x01\n\x03\t\x06\v\t\v\a\x15%\x16/\x00\x00\x03\xff\xff\xff\xc0\x01\x00\x01\xc0\x00\x0f\x00\"\x00C\x00\x007\x14\x06\"&5475462\x16\x1d\x01\x167\x16\x15\x14\x06#0#\"&5475462\x16\x15\x034.\x06'54&\"\x06\x1d\x01\x0e\a\x15\x14\x1e\x01;\x0126\xc0%6% \x13\x1a\x13 K5\x015J 8P8\x10\x02\x02\x06\x03\a\x03\b\x01\x1c(\x1c\x01\b\x03\a\x03\x06\x02\x02\x15%\x15\x01!/@\x1b%%\x1b%\x12)\r\x13\x13\r)\x120%05KL50$\xcb(88(\xfe\xe0\x06\f\t\v\x06\t\x04\t\x01\xdd\x14\x1c\x1c\x14\xdd\x01\n\x03\t\x06\v\t\v\a\x15%\x16/\x00\x00\x03\xff\xff\xff\xc0\x01\x00\x01\xc0\x00\a\x00\x1a\x00;\x00\x006\x14\x06\"&4627\x16\x15\x14\x06#0#\"&5475462\x16\x15\x034.\x06'54&\"\x06\x1d\x01\x0e\a\x15\x14\x1e\x01;\x0126\xc0%6%%6E K5\x015J 8P8\x10\x02\x02\x06\x03\a\x03\b\x01\x1c(\x1c\x01\b\x03\a\x03\x06\x02\x02\x15%\x15\x01!/[6%%6%\x15%05KL50$\xcb(88(\xfe\xe0\x06\f\t\v\x06\t\x04\t\x01\xdd\x14\x1c\x1c\x14\xdd\x01\n\x03\t\x06\v\t\v\a\x15%\x16/\x00\x10\x00\x00\xff\xe0\x02\x00\x01\xa1\x00\a\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x007\x00?\x00G\x00O\x00W\x00_\x00g\x00o\x00w\x00\xab\x00\x00$2\x16\x14\x06\"&462\x16\x14\x06\"&4\x16\"&462\x16\x14\x06\"&462\x16\x14&2\x16\x14\x06\"&46\"&462\x16\x14\x06462\x16\x14\x06\"&2\x16\x14\x06\"&4\x162\x16\x14\x06\"&462\x16\x14\x06\"&4\x062\x16\x14\x06\"&4\x062\x16\x14\x06\"&4\x062\x16\x14\x06\"&4\x062\x16\x14\x06\"&462\x16\x14\x06\"&47\x16\x14\x0f\x01\x06\"/\x01&4?\x01.\x01547'&#\"#\x0e\x01\x15\x11\x14\x06+\x01\"&5\x114632\x16\x1f\x01632\x1e\x01\x17762\x17\x01)\x0e\t\t\x0e\t)\x0e\t\t\x0e\t7\x0e\t\t\x0e\t)\x0e\t\t\x0e\t7\x0e\t\t\x0e\t\x97\x0e\t\t\x0e\t@\t\x0e\t\t\x0e \x0e\t\t\x0e\ti\x0e\t\t\x0e\t)\x0e\t\t\x0e\t7\x0e\t\t\x0e\t\x17\x0e\t\t\x0e\t7\x0e\t\t\x0e\t\x17\x0e\t\t\x0e\tI\x0e\t\t\x0e\t&\x04\x04\xaa\x04\x0e\x04\f\x04\x04\x06\r\x13\x0e\n\x11\x18\x04\x04\x16\x1d\t\a \a\tI2\x152\x0f\n\x1a\x1b\f\x1e\x1b\t\x06\x04\x0e\x04\x80\t\x0e\t\t\x0ei\t\x0e\t\t\x0e7\t\x0e\t\t\x0e)\t\x0e\t\t\x0e7\t\x0e\t\t\x0e)\t\x0e\t\t\x0e \x0e\t\t\x0e\t@\t\x0e\t\t\x0e\x17\t\x0e\t\t\x0e)\t\x0e\t\t\x0e7\t\x0e\t\t\x0e\x17\t\x0e\t\t\x0e7\t\x0e\t\t\x0e\x17\t\x0e\t\t\x0eI\t\x0e\t\t\x0e\xe3\x04\x0e\x04\xaa\x04\x04\f\x04\x0e\x04\x06\r.\x13\x1b\x1a\n\x11\x03$\x17\xfe\xce\a\t\t\a\x01/4M\x15\x0f\n\x0e\t\x0e\t\x06\x04\x04\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc1\x00\x1b\x00M\x00\x0075!\x15\x14\x06\a\x15\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&=\x01.\x01%2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x0154632\x16\x1f\x016\x1762\x1f\x01\x16\x14\x0f\x01\x06\"/\x01&47&7'&\"\x06\x1d\x01 \x01\xc0\x13\r\t\a \a\t\xff\x00\t\a \a\t\r\x13\x01\xd0\a\t\t\a\xfe \a\t\t\a\x10)\x1c\f\x1d\b\x13-#\x05\r\x05\v\x05\x05i\x05\r\x05\v\x05\x05\x1c\x14\x14\x06\x12\f@00\x12)\f)\a\t\t\a\x10\x10\a\t\t\a)\f)\x92\t\a\x10\a\t\t\a\x10\a\t\xbb\x1c)\f\b\x14\x14\x1c\x05\x05\v\x05\r\x05i\x05\x05\v\x05\r\x05#,\x14\x06\f\t\xbb\x00\x04\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\v\x00+\x00Q\x00Y\x00\x00\x05\x06\"'.\x01542\x15\x14\x06'\x16\a\x06\a\x06'&546\x17\x1e\x01\x17\x16\a\x06'&'&7654&\a\x0e\x01\a\x06\x122\x16\x15\x14\x06\a\x06&767>\x0154.\x03#\"\x06\x15\x14\x16\x17\x16\x15\x16\x17\x16\x06'.\x0154\x162\x16\x14\x06\"&4\x01\v\x06J\x06\a\x0e\x80\x0eu\x05\x06\x0e\a\x04\x05.W=9R\x01\x020\x05\x04\a\x0e\x06\x05\x1d;)%5\x02\x02\x05\xba\x83F8\x03\x06\x01\x04\x01%,\x12!+6\x1cIg*$\x03\x01\x04\x01\x06\x039E\xc56%%6%)\x17\x17\x19U\x17,,\x17U\xaf\x05\x04\n\x0f\b\x06+>=U\x02\x02Q9A,\x06\b\x0f\n\x04\x05\x1d()9\x02\x025%+\x01\x03\x83]Bl\x1b\x02\x04\x04\x1b\x14\x18N.\x1d5, \x12gH-N\x18\x02\x03\x13\x19\x04\x04\x02\x1blB]\x1d%6%%6\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x17\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0554#!\"\x1d\x01\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\x90\f\xfe\x98\f\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xa0T\f\fT\x00\x00\x00\x00\x01\x00\x00\xff\xe0\x02\x00\x00`\x00\x0f\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14`\x1c\x14 \x14\x1c\x1c\x14 \x14\x1c\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x11\x00!\x00)\x00\x00\x01\x11\x14\x06+\x0154&+\x015463!2\x16\a\x11\x14\x06#!\"&5\x11463!2\x16\a4+\x01\"\x1d\x013\x02\x00\x1c\x140/!\xd0\x1c\x14\x01 \x14\x1c\x80\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1cD\f\xe4\f\xfc\x01\x90\xfe\xe0\x14\x1c\xd0!/0\x14\x1c\x1c\x94\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c\x1c0\f\f4\x00\x00\x00\x00\t\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x0f\x00\x1f\x00/\x00?\x00O\x00_\x00o\x00\u007f\x00\x8f\x00\x00\x01\x11\x14\x06+\x01\"&5\x1146;\x012\x16\x17\x15\x14+\x01\x15\x14+\x01532\x1d\x0132\x1d\x01\x14+\x01\x15\x14+\x01532\x1d\x0132\x1d\x01\x14+\x01\x15\x14+\x01532\x1d\x0132\x1d\x01\x14+\x01\x15\x14+\x01532\x1d\x0132%3\x15#\"=\x01#\"=\x014;\x015473\x15#\"=\x01#\"=\x014;\x015473\x15#\"=\x01#\"=\x014;\x015473\x15#\"=\x01#\"=\x014;\x0154\x01\xa0\x1c\x14\xe0\x14\x1c\x1c\x14\xe0\x14\x1c`\x06\x12\x06**\x06\x12\x06\x06\x12\x06**\x06\x12\x06\x06\x12\x06**\x06\x12\x06\x06\x12\x06**\x06\x12\x06\xfe\x1e**\x06\x12\x06\x06\x12\x06**\x06\x12\x06\x06\x12\x06**\x06\x12\x06\x06\x12\x06**\x06\x12\x06\x06\x12\x01\x90\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x1cN\f\x06\x06\x060\x06\x06f\f\x06\x06\x060\x06\x06f\f\x06\x06\x060\x06\x06f\f\x06\x06\x060\x06\x06\f0\x06\x06\x06\f\x06\x06\x06`0\x06\x06\x06\f\x06\x06\x06`0\x06\x06\x06\f\x06\x06\x06`0\x06\x06\x06\f\x06\x06\x06\x00\x00\x00\x00\x01\xff\xfa\xff\xc0\x01\xc6\x01\xc0\x00\xa7\x00\x00%\x1e\x01\x0f\x01\x06/\x01\x17\x16\x06\x0f\x01\x06&/\x02\x15\x17\x16\x14\x0f\x01\x06\"/\x01\x15\x14\x06+\x01\"&=\x01\a\x06\"/\x01&4?\x015\x0f\x01\x0e\x01/\x01.\x01?\x01\a\x06/\x01&?\x01'.\x01?\x01>\x01\x1f\x017'\a\x06&/\x01&6?\x01'&?\x016\x1f\x01'&>\x01?\x016\x1e\x01\x1f\x025'&4?\x016\x1f\x01546;\x012\x16\x1d\x01762\x1f\x01\x16\x14\x0f\x01\x15?\x01>\x01\x1f\x01\x1e\x01\x0f\x0176\x1f\x01\x16\x0f\x01\x17\x1e\x01\x0f\x01\x0e\x01/\x01\a\x1776\x16\x1f\x01\x16\x06\x0f\x01\x01\xb8\x06\x03\x03\x10\a\x0e!\x06\x02\x06\x06\x0f\x06\f\x01\x13?5\x05\x05\v\x05\r\x04\x14\n\x06 \a\t\x14\x05\r\x04\f\x05\x056?\x13\x02\v\x06\x0f\x06\x06\x01\a!\x0e\a\x10\b\x0e\"\x1a\a\x06\x02\x04\x01\v\aF@@F\a\v\x01\x04\x02\x06\a\x1a\"\x0e\b\x10\a\x0e!\x06\x02\x03\x05\x04\x0f\x04\b\x06\x01\x13?6\x04\x04\f\v\v\x14\t\a \a\t\x14\x04\x0e\x04\f\x04\x046?\x13\x01\f\x06\x0f\x06\x06\x02\x06!\x0e\a\x10\a\r\"\x1a\a\x06\x02\x04\x01\v\aF@@F\a\v\x01\x04\x02\x06\a\x1ag\x03\r\x05\x1b\r\a\x14\x1a\x06\v\x02\x04\x02\a\x06G$N5\x05\r\x05\v\x05\x05\x13(\a\t\t\a(\x13\x05\x05\v\x05\r\x046N$G\x06\a\x02\x04\x01\f\x06\x1a\x14\a\r\x1b\r\b\x13\a\x02\v\x06\x0f\x06\a\x02\x13%%\x13\x02\a\x06\x0f\x06\v\x02\a\x13\b\r\x1b\r\a\x14\x1a\x04\b\x06\x01\x04\x01\x02\x06\x04G$N5\x05\r\x05\v\f\f\x13(\a\t\t\a(\x13\x05\x05\v\x05\r\x055N$G\x06\a\x02\x04\x02\v\x06\x1a\x14\a\r\x1b\r\b\x13\a\x02\v\x06\x0f\x06\a\x02\x13%%\x13\x02\a\x06\x0f\x06\v\x02\a\x00\x01\xff\xff\xff\xbf\x02\t\x01\xc9\x00\x14\x00\x00\x01\x16\x06\a\x0e\x01'\a\x06\"/\x01&4?\x01&67>\x01\x01\xe0(\x140$X%\xc0\b\x17\t3\b\t\xd7\x15\r$1\x89\x01\xa0*\x891$\r\x15\xd7\t\b3\t\x17\b\xc0%X$0\x14\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xa0\x01\xc1\x00*\x00<\x00\x00\x13\x16\x15\x14\x06\a\x17\x16\x06+\x01\"&?\x01.\x0254762\x17\x15\x1627>\x02562\x17\x16\x17\x1627562\x13.\x01>\x0232\x16\x15\x11\x14\x06+\x01\"&7\xd0\x10% \r\x01\x0f\n@\n\x0f\x01\r\x15\x1f\x11\x10\x02,\x02\x01\x0e\x01\x01\x04\x03\x02,\x02\x01\a\x01\x0e\x01\x02,y,\"\x13*9\x19\n\x0e\x0e\n8\v\x0e\x01\x01\xb1_\"&7\f\xee\n\x0f\x0f\n\xee\b\x1d*\x1a\"_\x0f\x10\x8e\x02\x02\vG;\x01\x10\x10\b\x86\x02\x02\x8e\x10\xfe\xd3#VLB&\x0e\n\xfe0\n\x0e\x10\n\x00\x01\x00\b\xff\xc8\x01\xf9\x01\xb9\x00&\x00\x00\x012\x1e\x01\x15\x14\x06#\"'&?\x016\x17\x1632676&\a\x06\a\x17\x16\x06+\x01\"&=\x0146\x1f\x016\x01\x00CrC\x91g_G\n\t(\b\b0?Fa\x01\x01eEB0*\v\f\x10\x86\n\x0e\x1e\v$G\x01\xb8BsCg\x91@\b\t(\b\a*bEGc\x01\x01,*\v\x1e\x0e\n\x86\x10\f\v$E\x00\x05\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\t\x00\x15\x00!\x00-\x00E\x00\x00\x17\x11!\x11\x14\x06#!\"&\x01\x15\x14\x1626=\x014&\"\x06\a\x15\x14\x1626=\x014&\"\x06\a\x15\x14\x1626=\x014&\"\x06%2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x0176;\x012\x1f\x01 \x01\x80\x1c\x14\xfe\xe0\x14\x1c\x01\x10\t\x0e\t\t\x0e\t`\t\x0e\t\t\x0e\t`\t\x0e\t\t\x0e\t\x01@\a\t\t\a\xfe`\a\t\t\ax\t\a\x0fr\x0f\a\t\x10\x01P\xfe\xb0\x14\x1c\x1c\x01\x14\xe0\a\t\t\a\xe0\a\t\t\a\xe0\a\t\t\a\xe0\a\t\t\a\xe0\a\t\t\a\xe0\a\t\t\xa9\t\a \a\t\t\a \a\t\x13\r\r\x13\x00\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\x1c\x00:\x00\x00\x01&#\"\x06\a\x06+\x01\"&7>\x0132\x1776\x16\x1d\x01\x14\x06+\x01\"&7\x0532\x16\x0f\x01\x1632>\x0176;\x012\x16\a\x0e\x01#\"'\a\x06&=\x0146\x01s1B:[\x0e\x02\n9\x06\a\x01\x11\x89ZcH$\v\x1e\x0e\n\x86\x10\f\v\xfe׆\x10\f\v*1B&D0\t\x02\n9\x06\a\x01\x11\x89ZcH$\v\x1e\x0e\x01;-G8\t\t\x05WsE$\v\f\x10\x86\n\x0e\x1e\vy\x1e\v*-!9%\t\t\x05WsE$\v\f\x10\x86\n\x0e\x00\x00\x02\x00\x10\xff\xc0\x01\xb6\x01\xc0\x00\"\x000\x00\x00%\x14\x06\"&54675#\"=\x014;\x012\x1d\x01\x14+\x01\x15\x16\x1776\x1f\x01\x16\x0f\x02\x16\a54&+\x01\"\x06\x1d\x01\x14;\x012\x01\xb0z\xaczeK\x1c\f\fx\f\f\x1c8,\x1b\t\b\x1c\t\t\x1d\x01\"\xb0\a\x05(\x05\a\f(\f\x90VzzVMu\f\"\f(\f\f(\f\"\t$\x1b\t\t\x1c\b\t\x1d\x013b\x98\x04\b\b\x04\x98\f\x00\x00\x00\x00\x02\x00\x00\xff\xfc\x01\xf8\x01\x84\x00\x15\x001\x00\x00%\a\x06&=\x01#\"&=\x0146;\x01546\x1f\x01\x16\x14\x05\x14+\x01\"&=\x0146;\x012\x1d\x01\x14+\x01\"\x06\x1d\x01\x14\x16;\x012\x15\x01\xf1\xa8\v\x1e\x88\n\x0e\x0e\n\x88\x1e\v\xa8\a\xfe\xc8\fT(88(T\f\fT\r\x13\x13\rT\f\xaf\xa8\v\f\x10`\x0e\n`\n\x0e`\x10\f\v\xa8\a\x14\xaa\f8(\xc0(8\f(\f\x13\r\xc0\r\x13\f\x00\x00\x00\x00\x02\x00\x00\xff\xf4\x02\x00\x01\x80\x00\x1b\x001\x00\x00!#\"=\x014;\x0126=\x014&+\x01\"=\x014;\x012\x16\x1d\x01\x14\x06'\x16\x14\x0f\x01\x06&=\x01#\"&=\x0146;\x01546\x17\x01\xa0T\f\fT\r\x13\x13\rT\f\fT(88W\a\a\xa8\v\x1e\x88\n\x0e\x0e\n\x88\x1e\v\f(\f\x13\r\xc0\r\x13\f(\f8(\xc0(8\xc9\a\x14\a\xa8\v\f\x10`\x0e\n`\n\x0e`\x10\f\v\x00\x00\x01\x00\a\xff\xc8\x01\xf8\x01\xb9\x00$\x00\x00\x012\x1776\x16\x1d\x01\x14\x06+\x01\"&?\x01&'&\x06\x17\x1e\x013276\x1f\x01\x16\a\x06#\"&46\x01\x00dG$\v\x1e\x0e\n\x86\x10\f\v*0BEe\x01\x01aF?0\b\b(\t\nG_g\x91\x92\x01\xb8E$\v\f\x10\x86\n\x0e\x1e\v*,\x01\x01cGEb*\a\b(\t\b@\x91Α\x00\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x000\x008\x00D\x00L\x00\x00%\x1e\x01\x15\x14\x06#!\"&5467&546;\x01&546;\x012654'632\x16\x15\x14\a32\x16\x15\x14\a32\x16\x15\x14$\"\x06\x14\x16264\x176&+\x01\"\x06\x17\x1e\x0126&264&\"\x06\x14\x01\xc3\x1a#*\x1e\xfe\x90\x1e*#\x1a\x1d*\x1e\x0e\x16&\x1a\x10!/\x0f\t\x06(8\x06\x06\x1a&\x16\x0e\x1e*\xfe\xed\x1a\x13\x13\x1a\x13\x80\x01\x05\x04\xb0\x04\x05\x01\b<8<%\x1a\x13\x13\x1a\x13O\x04(\x1b\x1e**\x1e\x1b(\x04\x16#\x1e*\x13\x1d\x1a&/!\x19\x15\x028(\x0f\x11&\x1a\x1d\x13*\x1e#[\x13\x1a\x13\x13\x1ax\x04\a\a\x04\x15 `\x13\x1a\x13\x13\x1a\x00\x04\x00\x00\xff\xe0\x02@\x01\xa0\x00\x11\x00!\x00)\x004\x00\x00%\x15\x14\x06#!\"&5\x1146;\x01\x15\x14\x163%\x14\x06#!\"&5\x11463!2\x16\x15\x044&\"\x06\x14\x162\a\x15!5'&\x0f\x01'&\a\x01\xe0\x1c\x14\xfe\x80\x14\x1c\x1c\x14\x10/!\x01\xb0\x1c\x14\xfe\x80\x14\x1c\x1c\x14\x01\x80\x14\x1c\xfe\xc0\x1c(\x1c\x1c(D\x01`X\b\b\x88(\b\b \x10\x14\x1c\x1c\x14\x01\x00\x14\x1c\xd0!/P\x14\x1c\x1c\x14\x01\x00\x14\x1c\x1c\x14D(\x1c\x1c(\x1c`0pX\b\b\x88(\b\b\x00\x00\x00\x00\x04\xff\xfe\xff\xbe\x02\x01\x01\xc0\x00\r\x00\x19\x00!\x00(\x00\x00\x01\a\x06/\x01&?\x0162\x1f\x01\x16\x14'6\x1f\x01\x16\a\x01\a\x06&?\x016\x16?\x016&\x0f\x025#\a\x1775\x01\xf2.\t\bo\t\t.\x0e(\x0e<\x0e\xe4\t\bo\t\t\xfe\xfaz\f\x12\x02\x16\\\x14\n\x9a\n\x14\n\x9a$$\f @\x012.\t\to\b\t.\x0e\x0e<\x0e(\x1c\t\to\b\t\xfe\xfa\x16\x02\x12\fz \x14\n\x9a\n\x14\n\x9ah0@ \f$\x00\x00\x00\x00\x02\xff\xfe\xff\xbe\x02\x01\x01\xc0\x00\a\x00\x11\x00\x00\x01\x17\x01\a\x06&?\x01\x01\x16\x14\x0f\x01'762\x17\x01#\x80\xfe\xear\f\x10\x01\r\x01\xe5\x0e\x0e9\x809\x0e(\x0e\x01c\x80\xfe\xea\r\x01\x10\fr\x01)\x0e(\x0e9\x809\x0e\x0e\x00\x00\x00\x02\xff\xfe\xff\xbe\x02\x01\x01\xc1\x00\t\x00!\x00\x00\x01\x16\x14\x0f\x01'762\x17\a\x1f\x01\a\x0e\x01\a\x06&7>\x01?\x01'\a\x06/\x01&?\x0162\x01\xf2\x0e\x0e9\x809\x0e(\x0e\xbbUS\xc5\"r/\f\x10\x01\x057\"\x98\x17f\v\f\x16\f\fw\v!\x01v\x0e(\x0e9\x809\x0e\x0e(TS\xc5\"7\x05\x01\x10\f/r\"\x98\x16f\v\v\x17\v\fv\f\x00\x00\x00\x00\x01\x00\r\xff\xdf\x00\xf3\x01\xa0\x00\x13\x00\x00732\x16\x0f\x01\x06\"/\x01&6;\x01\x114;\x012\x15\xa8.\x10\f\vV\a\x14\aV\v\f\x10.\f8\ff\x1e\vV\a\aV\v\x1e\x01.\f\f\x00\x01\xff\xff\x00M\x01\xc0\x013\x00\x13\x00\x007\x15\x14\x06/\x01&4?\x016\x16\x1d\x01!2\x1d\x01\x14#\x86\x1e\vV\a\aV\v\x1e\x01.\f\f\x98.\x10\f\vV\a\x14\aV\v\f\x10.\f8\f\x00\x01\x00\x00\x00M\x01\xc1\x013\x00\x14\x00\x00%546\x1f\x01\x1e\x01\x06\x0f\x01\x06&=\x01!\"=\x0143\x01:\x1e\vV\x05\x03\x03\x05V\v\x1e\xfe\xd2\f\f\xe8.\x10\f\vV\x05\f\f\x05V\v\f\x10.\f8\f\x00\x00\x00\x00\x01\x00\r\xff\xe0\x00\xf3\x01\xa1\x00\x13\x00\x00\x13#\"&?\x0162\x1f\x01\x16\x06+\x01\x11\x14+\x01\"5X.\x10\f\vV\a\x14\aV\v\f\x10.\f8\f\x01\x1a\x1e\vV\a\aV\v\x1e\xfe\xd2\f\f\x00\x00\x00\x00\x01\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00;\x00\x00%\x15\x14\x06+\x01\"&?\x01'\a\x17\x16\x06+\x01\"&=\x0146\x1f\x017'\a\x06&=\x0146;\x012\x16\x0f\x01\x177'&6;\x012\x16\x1d\x01\x14\x06/\x01\a\x1776\x16\x01\xc0\x0e\np\x10\f\v$kk$\v\f\x10p\n\x0e\x1e\v$kk$\v\x1e\x0e\np\x10\f\v$kk$\v\f\x10p\n\x0e\x1e\v$kk$\v\x1ehp\n\x0e\x1e\v$kk$\v\x1e\x0e\np\x10\f\v$kk$\v\f\x10p\n\x0e\x1e\v$kk$\v\x1e\x0e\np\x10\f\v$kk$\v\f\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x15\x00\x1d\x00)\x00\x00\x01\x11\x14\x06#!\"&5\x1146;\x01462\x16\x1532\x16&\"\x06\x14\x16264\x1754+\x01\"\x1d\x01\x14;\x012\x01\x80\x1c\x14\xfe\xe0\x14\x1c\x1c\x14P&4&P\x14\x1c\xb6\x14\x0e\x0e\x14\x0eH\x06\xb4\x06\x06\xb4\x06\x01P\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1a&&\x1a\x1c4\x0e\x14\x0e\x0e\x14d\x14\x06\x06\x14\x06\x00\x00\x01\xff\xff\x00M\x02\x01\x013\x00\x1b\x00\x00\x0146\x1f\x01\x16\x14\x0f\x01\x06&=\x01#\x15\x14\x06/\x01&4?\x016\x16\x1d\x013\x01z\x1e\vV\a\aV\v\x1e\xf4\x1e\vV\a\aV\v\x1e\xf4\x01\x16\x10\f\vV\a\x14\aV\v\f\x10..\x10\f\vV\a\x14\aV\v\f\x10.\x00\x00\x00\x00\x01\x00\r\xff\xbf\x00\xf3\x01\xc1\x00\x1b\x00\x0072\x16\x0f\x01\x06\"/\x01&6;\x015#\"&?\x0162\x1f\x01\x16\x06+\x01\x15\xd6\x10\f\vV\a\x14\aV\v\f\x10..\x10\f\vV\a\x14\aV\v\f\x10.F\x1e\vV\a\aV\v\x1e\xf4\x1e\vV\a\aV\v\x1e\xf4\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x1a\x00\x00\x00\x14\x06\"&462\a\x15#\"\x06\x1f\x01\x16?\x016&+\x0154+\x01\"\x01\xf8\x91Α\x91ΓG\b\x06\x06s\b\bs\x06\x06\bG\f@\f\x01'Α\x91Α\x84t\x0f\x05s\b\bs\x05\x0ft\f\x00\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x1a\x00\x00\x04\"&462\x16\x14'#54&\x0f\x01\x06\x1f\x01\x166=\x0132=\x014\x01gΑ\x91Α\x84t\x0f\x05s\b\bs\x05\x0ft\f8\x91Α\x91ΓG\b\x06\x06s\b\bs\x06\x06\bG\f@\f\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x1a\x00\x00\x122\x16\x14\x06\"&4\x173\x15\x14\x16?\x016/\x01&\x06\x1d\x01#\"\x1d\x01\x14\x99Α\x91Α\x84t\x0f\x05s\b\bs\x05\x0ft\f\x01\xb8\x91Α\x91ΓG\b\x06\x06s\b\bs\x06\x06\bG\f@\f\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x1a\x00\x006462\x16\x14\x06\"75326/\x01&\x0f\x01\x06\x16;\x01\x15\x14;\x012\b\x91Α\x91ΓG\b\x06\x06s\b\bs\x06\x06\bG\f@\fYΑ\x91Α\x84t\x0f\x05s\b\bs\x05\x0ft\f\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x1e\x004\x00\x00%2\x16\x1d\x01\x14\x06#!\"&5\x1146;\x012\x16\x1d\x01\x14\x06+\x01\x11!5463\x132\x16\x1d\x01\x14\x06/\x01\a\x06\"/\x01&4?\x01'&63\x01\xb0\a\t\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\xa0\a\t\t\a\x90\x01@\t\aX\n\x0e\x1e\v$\xf3\a\x14\a\x17\a\a\xf4$\v\f\x10\x80\t\a\x80\x14\x1c\x1c\x14\x01`\x14\x1c\t\a \a\t\xfe\xc0p\a\t\x01@\x0e\n\x80\x10\f\v$\xf4\a\a\x17\a\x14\a\xf3$\v\x1e\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00#\x00\x00\x01\x11\x14\x06#!\"&5\x11463!2\x16\a#\"\x06\x1f\x01\a\x06\x1f\x01\x16?\x01\x17\x166=\x014&\x01\xc0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1cXp\x10\f\v \xc3\t\t\x1f\b\t\xc3 \v\x1e\x0e\x01p\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c$\x1e\v \xc3\t\b\x1f\t\t\xc3 \v\f\x10p\n\x0e\x00\x00\x00\x02\x00\x00\xff\xf3\x02\x00\x01\x8d\x00\x15\x00+\x00\x00\x115463!546\x1f\x01\x16\x14\x0f\x01\x06&=\x01!\"&\x052\x16\x1d\x01\x14\x06#!\x15\x14\x06/\x01&4?\x016\x16\x1d\x01\x0e\n\x01h\x1e\vP\a\aP\v\x1e\xfe\x98\n\x0e\x01\xe8\n\x0e\x0e\n\xfe\x98\x1e\vP\a\aP\v\x1e\x01\x18\x10\n\x0e0\x10\f\vP\a\x14\aP\v\f\x100\x0e\x8e\x0e\n\x10\n\x0e0\x10\f\vP\a\x14\aP\v\f\x100\x00\x00\x00\x02\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\x1c\x001\x00\x00%\x1e\x02\x15\x14\x06#!\"&5467454632\x16\x17632\x16\x15\x14\a6&+\x0154&+\x01\"\x06\x1d\x01#\"\x06\x1f\x01\x167\x02\x1a\x1d.\x1bK5\xfe\x90W\x13h\x13\b0\a\x0e\x89\x04\r\x05\x1a\f\n\x01\xc6\n\r\x19\f\t\xfe\xee$%2\v\x11p\x12\x05\x18\x04\x13\xa0\x80\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x0f\x00\x17\x00+\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x16\"\x06\x14\x16264\x1754&+\x01\x06\"'#\"\x06\x1d\x01\x14\x16;\x0126\x01P\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xaa4&&4&0'\x1c\x05\x13*\x13\x05\x1c'\r\t\xb4\t\r\x01\xc0\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x80&4&&4\xc7\x13\x18\"\b\b\"\x18\x13\b\v\v\x00\x00\x01\xff\xff\xff\xdc\x02\x00\x01\xa5\x00 \x00\x00\x1376\x16\x1d\x01\x1e\x04\x15\x14\x06\a\x06&7>\x01.\x04'\x15\x14\x06/\x01&4\b\xb0\f\x1c4PL2\x1e0#\v\x15\x04\t\x06\a\x15\x1e.6\"\x1c\f\xb0\b\x01\x02\x98\n\r\x0fP\x01\t\x19)B,,U\x19\b\x0e\f\x1f2&\x1d\x13\r\x05\x01X\x0f\r\n\x98\a\x16\x00\x00\x00\x00\x02\x00\x10\xff\xbc\x01\xf0\x01\xc0\x00\x1a\x00\x1f\x00\x00\x01\x1e\x01\x15\x14\x0e\x03\a\x06'.\x0354>\x03?\x0162\x17\x03>\x017'\x01\xd2\x0e\x10\x1e.=9\x1c\x12\x12*M@'\x03\x05\a\t\x06\xc0\b\x14\b\x12Kc\x02\xb0\x01l\x05\x18\x0f?sSC)\v\b\b\x11C_\x82G\x06\v\n\b\a\x02P\x04\x04\xfeF%\xa2lJ\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x0f\x00\x17\x00#\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x12264&\"\x06\x147\x114#!\"\x15\x11\x143!2\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\xa3\x1a\x13\x13\x1a\x13\xd0\f\xfe\xb8\f\f\x01H\f\x01\xc0\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c\xfe \x13\x1a\x13\x13\x1aY\x018\f\f\xfe\xc8\f\x00\x00\x00\a\x00\x00\xff\xe0\x02@\x01\xa0\x00\r\x00\x1e\x00&\x00.\x00B\x00L\x00T\x00\x00\x122\x16\x15\x14\a\x06#!\"'&54%\"\x0e\x01\x15\x14\x1632?\x014761.\x01\x02264&\"\x06\x146264&\"\x06\x14%6.\x02'&\x06\x0f\x01\x0e\x01\x15\x14\x173654'7\x163264&#\"\a\x16264&\"\x06\x14\xa9\xee\xa9'\t\x12\xfeD\x12\t'\x01 \t\x0e\t\x13\r\t\t\t\x02\x01\x03\x10\xd8\x1a\x13\x13\x1a\x13C\x1a\x13\x13\x1a\x13\x01\x17\x01\x01\x04\a\x04\n\x12\x03=\x19#\tn\t\x17L\n\x11\r\x13\x13\r\x05\x06.\x1a\x13\x13\x1a\x13\x01\xa0\xa9wNC\x0f\x0fCNwi\t\x0e\t\r\x13\x06\x1c\x01\x03\x02\v\r\xfe\xe0\x13\x1a\x13\x13\x1a\x8d\x13\x1a\x13\x13\x1a5\x05\n\b\x06\x02\x03\t\t\xb8\x02%\x19\x11\x0f\x0f\x11\x1d\x13\u007f\x0f\x13\x1a\x13\x02\xde\x13\x1a\x13\x13\x1a\x00\x00\x03\x00\x00\x00\x00\x02@\x01\x80\x00\x03\x00\x1f\x00/\x00\x00\x13!\x15!$\x14\x163\x15\x14\x06#!\"&=\x01264ᕗ!2\x16\x1d\x01\"'4&#!\"\x06\x1d\x01\x14\x163!265\x80\x01@\xfe\xc0\x01\x90\x1c\x14\x1c\x14\xfe \x14\x1c\x14\x1c\x1c\x14\x1c\x14\x01\xe0\x14\x1c\x14L\x0e\n\xfe\xb0\n\x0e\x0e\n\x01P\n\x0e\x01 \xc0t(\x1c`\x14\x1c\x1c\x14`\x1c(\x1c`\x14\x1c\x1c\x14`8\n\x0e\x0e\n\xd0\n\x0e\x0e\n\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\a\x00\x1b\x00\x00$\"&462\x16\x14\a2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x1627\x01\x01?\x01>\x01=\x01\a\x06\x0f\x01\x06\x0f\x01\x06#\"'4\"\x06\x14\x16264\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x13\b\v\a\t\x0e\x02\f\x94Oq\xfe\xc0\f\x14\f9\v\x10\x16\n\x03\t\x04\x0f\f\x06\x06\a\x06\x10\f\f\x10\f\x01(\a\t\t\a\xfe\xa0\a\t\t\a\xb0\x03\x11\t\x89\n\a\t\x1c\x04\x04\fpP\xc0\x0f\r\x1d\x17\x06\x1d\x05\x19\r2\v\x05\v\x1e\x0f\x06\x05\x02\x02\xa3\f\x10\f\f\x10\xfe\xcc\t\a \a\t\t\a \a\t\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01@\x01\xa0\x00#\x003\x00\x007.\x015462\x16\x15\x14\x06\a32\x16\x1d\x01\x14\x06+\x01\x15\x14\x17#6=\x01#\"&=\x01463\x172\x16\x1d\x01\x14\x06#!\"&=\x01463i\x16\x1b=V=\x1b\x16\x19\a\t\t\a\x10\x18\xb0\x18\x10\a\t\t\a\xe0\a\t\t\a\xfe\xe0\a\t\t\a\xe0\x0e/\x1b+==+\x1b/\x0e\t\a \a\t\x05P++P\x05\t\a \a\t\xe0\t\a \a\t\t\a \a\t\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\a\x00\x17\x00I\x00\x00\x00\"&462\x16\x14\x132\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\x16\x15\x14\x0f\x01!'&54?\x016\x17\x1e\x01323>\x01546;\x012\x17\x1e\x012676;\x012\x16\x15\x14\x16\x17\x1632676\x17\x01\x17.!!.!x\a\t\t\a\xfe\xa0\a\t\t\a\x01\xa9\a\x02f\xfe\xd0f\x02\a\x1d\f\n\x06\x16\n\x02\x01\x13\x1a\b\x05'\v\x02\x03\x1c \x1c\x03\x02\v'\x05\b\x16\x11\x04\x05\n\x16\x06\n\f\x01P!.!!.\xfe\x8f\t\a \a\t\t\a \a\t\x01\b\x05\b\x04\x04\xd3\xd3\x04\x03\t\x05\x10\b\r\b\v\x01\x1e\x14\x05\b\n\x10\x16\x16\x10\n\b\x05\x12\x1d\x03\x01\v\b\r\b\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xa0\x00#\x00+\x00;\x00\x00\x012\x16\x1d\x01\a\x14\x17!65'546;\x012\x16\x1d\x013546;\x012\x16\x1d\x0135463\x0354&\"\x06\x1d\x01\x172\x16\x1d\x01\x14\x06#!\"&=\x01463\x01p\a\t@\r\xfe\xe6\r@\t\a8\a\t0\t\aP\a\t0\t\aX\x13\x1a\x13\xd0\a\t\t\a\xfe\xa0\a\t\t\a\x01\xa0\t\a\xb0 VJJV \xb0\a\t\t\a00\a\t\t\a00\a\t\xfe\xe0@\r\x13\x13\r@\x80\t\a \a\t\t\a \a\t\x00\x00\x00\x03\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\x17\x00/\x00S\x00\x00\x132\x16\x15\x11\x14\x06+\x01\"&=\x01#\"=\x014;\x015463\x052\x1d\x01\x14+\x01\x15\x14\x06+\x01\"&5\x1146;\x012\x16\x1d\x01'2\x16\x15\x11\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&5\x1146;\x012\x16\x1d\x0135463h\n\x0e\x0e\n0\n\x0e\x18\b\b\x18\x0e\n\x02@\b\b\x18\x0e\n0\n\x0e\x0e\n0\n\x0e\x98\n\x0e\x0e\n0\n\x0e\x80\x0e\n0\n\x0e\x0e\n0\n\x0e\x80\x0e\n\x01`\x0e\n\xfe\xf0\n\x0e\x0e\nh\b0\bh\n\x0e\x80\b0\bh\n\x0e\x0e\n\x01\x10\n\x0e\x0e\nh\xc0\x0e\n\xfep\n\x0e\x0e\n\xa8\xa8\n\x0e\x0e\n\x01\x90\n\x0e\x0e\n\xa8\xa8\n\x0e\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\x06\x00\r\x00\x15\x00Q\x00\x00\x01\x16\x17'\x16\x17\x16\x01&'\x17&'&'>\x017\x17\x0e\x01\a\x13\a'&\x0f\x01\x06\x1f\x01\a'&\x0f\x01\x06\x1f\x01\a'&\x0f\x01\x06\x1f\x01\a\x06\x1f\x01\x16?\x01\x17\x16?\x016/\x017\x17\x16?\x016/\x017\x17\x16?\x016/\x0176/\x01&\x01\xe2\r\x01\x9d63\x1e\xfe4\r\x01\x9d63\x1e\x12\x11\x98g\xd8\x11\x98gf\x1d\x1c\x06\x05\f\x05\x05\x1d\x17\x1c\x06\x06\v\x06\x06\x1c\x16\x1d\x05\x06\v\x06\x06\x1c\x1c\x06\x06\v\x06\x05\x1d\x1c\x06\x05\f\x05\x05\x1d\x17\x1c\x06\x06\v\x06\x06\x1c\x16\x1d\x05\x06\v\x06\x06\x1c\x1c\x06\x06\v\x06\x01\x8445\x9d\x01\x0e\b\xfe[45\x9d\x01\x0e\b\xc6o\x91\x0f\xd9o\x91\x0f\x01T\x1c\x1c\x06\x06\v\x06\x06\x1c\x17\x1d\x05\x05\v\x06\x06\x1c\x17\x1d\x05\x05\f\x05\x06\x1c\x1d\x05\x06\v\x06\x06\x1c\x1c\x06\x06\v\x06\x05\x1d\x16\x1c\x06\x06\v\x06\x06\x1c\x17\x1d\x05\x05\f\x05\x06\x1c\x1d\x05\x06\v\x06\x00\x00\x05\x00\x00\xff\xc0\x01\xa0\x01\xc0\x00\x15\x00#\x00-\x008\x00B\x00\x0073\x14\x06+\x01\"\x06\x1d\x01\x14+\x01\"=\x014&+\x01\"&%\x14\x0e\x02\a#.\x015462\x16\a2654'\x16\x06'\x16\x174'\x16\x0e\x01'\x1632674'\x16\x06'\x16326`\xe0\x13\r\x10\r\x13\f(\f\x13\r\x10\r\x13\x01@\x0e\x1a$\x16\xdc-5z\xacz\xb4\x0e\x13\x16\a\x1d\x14\bH\x16\x05\v\x17\r\b\x17\x0e\x13@\x16\a\x1d\x14\b\x17\x0e\x13 \r\x13\x13\r\x14\f\f\x14\r\x13\x13\xdd\x1b5,&\x0e\x1c]7Vzz\x82\x13\x0e\x17\b\x14\x1d\a\x16/\x17\b\r\x17\n\x04\x16\x14M\x17\b\x14\x1d\a\x16\x14\x00\x02\x00\x00\x00\x00\x02\x00\x01\x80\x00\a\x00\x12\x00\x00<\x0162\x16\x14\x06\"'\x1e\x0167\x15\x14\x06\"&5\x96Ԗ\x96Ԗ7\xc9\xc97\x96Ԗ\xf8P88P8\x0e(\x1e\x1e(n(88(\x00\x03\x00\x00\xff\xbd\x02\x87\x01\xc7\x00\x17\x00#\x005\x00\x00%\x17\x14\x0e\x03\a\x0e\x01/\x016?\x016&\x0f\x0167>\x013\x052\x16\x14\x06\"&54>\x02\x13\x16\x0f\x01\x17\x16\x06\x0f\x01'7>\x01\x1f\x0176\x17\x01\x00W\x03\r\x0f\x1d\x10\x1b\x8565\x04\a_\x03\x06\x04<\x19\x1d\x1bQ\x1c\x01\t\"..C.\f\x16\x1d\x9e\n\f\xe8\"\x03\x04\x06;V\x19\x03\f\x04\"\xe8\r\n\xe7m\x04\x0f($*\r\x15\x11\x02\x02\x17 p\x04\a\x01\x16J\x17\x16\x14\x88/B//!\x11\x1d\x16\f\x01A\r\n\xb1+\x05\f\x01\fm7\x05\x01\x04+\xb2\t\f\x00\x00\x00\x00\x01\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x03\x00\x00\x05!\x11!\x02\x00\xfe\x00\x02\x00@\x02\x00\x00\x00\x03\xff\xff\xff\xbf\x02\t\x01\xc0\x00\n\x00\x1f\x00'\x00\x00%&\x06\a'762\x17\x1e\x01\a\x06\x15\x14\x17&/\x01\a\x06\"/\x01&4?\x01'.\x017\x042\x16\x14\x06\"&4\x01\xf00q\"\xd48?\xb2?/\x18\xf2\x06\v)\x1d$Y\x06\x11\x065\x06\ag#\x1d\t\x15\x01>P88P8\x98 \x14/\xd48??/\x81\x89\x16\x12\x1d\x1a\x05\x1c$g\a\x065\x06\x11\x06Y#\x1dQ\"\xa48P88P\x00\x00\x06\xff\xfd\xff\xc7\x01\xf8\x01\xbd\x00\n\x00\x12\x00\x1c\x00(\x002\x00@\x00\x007\x0e\x01\a.\x01'>\x017\x16'\x0e\x01\a&67\x16\x17&'.\x01'6\x17\x1e\x01\a\x16\x1767\x06\a\x06&'>\x01\a\x167\x0e\x01#\"&'6\x13\x1e\x02\x15\x1c\x01\x15\x06#0#6&\xe7-V\x0f\x0f!\t\x11`D\x15$>_\x19\x0fGE#\xd270\x017%0344\x84LS)(\f\x1eF\x92>\x0e/Ov\x8b\x1d]&\x1dK\x19\n\xca0K*,-\x01\x06'\xcd\x1dp4\x0f/\x13Gr 2O\x1ec?Q\x90&\x1f\xcd\x06\x1b6\x82'\x0e\x062\x8bU(\x01\x01\n1)\x15\x1a+\x12*WR\x14\x19\"\x15\x0f/\x01\x8e\x11D_5\x01\x04\x01\x0eE\x83\x00\x00\x00\x00\b\xff\xfd\xff\xbf\x01\xc0\x01\xc0\x00:\x00B\x00J\x00R\x00Z\x00b\x00j\x00r\x00\x00\x002\x16\x1d\x01\x14\x0f\x01\x0e\x01+\x01\"/\x01&>\x01\x16\x1f\x015462\x16\x1d\x01\x14;\x012=\x01462\x16\x1d\x01\x14;\x012=\x01462\x16\x1d\x01\x14;\x012=\x014\x02264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x146264&\"\x06\x14\x01\x93\x1a\x13\x05\x1b\x03\x1b\x10\xc6\x18\x0f}\n\x05\x1b!\t\x18\x13\x1a\x13\b\x10\b\x13\x1a\x13\b\x10\b\x13\x1a\x13\b\x10\b\xd7\x0e\t\t\x0e\t\t\x0e\t\t\x0e\tI\x0e\t\t\x0e\t\t\x0e\t\t\x0e\tI\x0e\t\t\x0e\t)\x0e\t\t\x0e\t)\x0e\t\t\x0e\t\x01P\x13\r\xb0\x16\x14q\x10\x15\x14\xac\x0e!\x13\x05\r!\xf1\r\x13\x13\r\x98\b\b\xb8\r\x13\x13\r\xb8\b\b\x98\r\x13\x13\r\x98\b\bH\r\xfe\xe3\t\x0e\t\t\x0eW\t\x0e\t\t\x0e\x89\t\x0e\t\t\x0eW\t\x0e\t\t\x0e)\t\x0e\t\t\x0eI\t\x0e\t\t\x0ew\t\x0e\t\t\x0e\x00\x00\x00\x00\a\x00\x00\x00 \x02\x80\x01`\x00\t\x00\x13\x00\x17\x00\x1f\x00'\x00/\x007\x00\x00\x1146;\x01\x11#\"&5\x012\x16\x1d\x01\x14\x06+\x01\x11\x01\x11!\x11&\"\x06\x14\x16264\x06\"\x06\x14\x16264&\"\x06\x14\x16264\x06\"\x06\x14\x16264&\x1a``\x1a&\x02@\x1a&&\x1a`\xfe\xe0\x01\x00F\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0en\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x01 \x1a&\xfe\xc0&\x1a\x01\x00&\x1a\xc0\x1a&\x01@\xfe\xc0\x01@\xfe\xc0\xe8\x0e\x14\x0e\x0e\x14R\x0e\x14\x0e\x0e\x14n\x0e\x14\x0e\x0e\x14R\x0e\x14\x0e\x0e\x14\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\t\x00\x12\x00\x1c\x00\x00\x010\x17#532\x1e\x01\x17'\x15#617>\x013\a!\x15\x14\x06#!\"&5\x01\xfe\x01\xef\x8d\v\x12\x0e\x03\xdb\xef\x013\x05\x19\x10c\x02\x00\x1c\x14\xfe`\x14\x1c\x01\a\a\xc0\b\x0f\n!\xc0\a\x98\x0f\x12\xe0\xf0\x14\x1c\x1c\x14\x00\x00\x03\x00\x00\xff\xc0\x02@\x01\xc0\x00\x14\x00)\x00>\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x01\x157\x175%\"&=\x0146;\x01\x157\x17532\x16\x1d\x01\x14\x06#\a2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x01\x157\x175\x020\a\t\t\a\xe0\a\t\t\aP \xfe\xd0\a\t\t\aP P\a\t\t\a\xa0\a\t\t\a\xe0\a\t\t\aP \xa0\t\a\xc0\a\t\t\a\xc0\a\t`\x15\x15`@\t\a\xc0\a\t`\x15\x15`\t\a\xc0\a\t@\t\a\xc0\a\t\t\a\xc0\a\t`\x15\x15`\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xa0\x00\x19\x00\x1d\x009\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01546;\x012\x16\x1d\x01'\x1535\x1754+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14P\x1c\x14\xa0\x14\x1c\xc0\x80 \b8\b0\b8\b\b8\b0\b8\b\x01@\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c0\x14\x1c\x1c\x140 \xf80\b8\b\b8\b0\b8\b\b8\x00\x02\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\n\x00\x13\x00\x00\x13\x1e\x01\x15\x14\x06\"&546\x122654'\x06\x15\x14\xc0Ukk\xaakj,T6``\x01\xc0M\xa5:^vv^:\xa5\xfe\x8d5*8ii8*\x00\x03\x00\x00\xff\xe0\x02G\x01\xa0\x00\x1d\x00%\x00/\x00\x00%\x16\x06\a\x06#\"/\x01&'\x15\x14\x06\"&=\x014632\x16\x1767632\x17\x0554&\"\x06\x1d\x01\x057'&#\"\a\x0e\x01\x17\x02+\x1b\x10'\x1d$<\"\x83\a\x06B\\BB.-@\x02\r\x1d\x1d$<\"\xfe\xf8\x1c(\x1c\x01#RA\x0f\x1b\x10\f\x12\a\f\x94']\x1b\x151\xbb\n\x0f\x95.BB.\xe0.B>,!\x14\x151\x8fp\x14\x1c\x1c\x14p-:]\x16\t\f)\x11\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x15\x00\x1d\x00-\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01462\x16\x15&\"\x06\x14\x16264\x176/\x01&\x0f\x01'&\x0f\x01\x06\x1f\x01\x167\x01P\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14P&4&6\x14\x0e\x0e\x14\x0ea\t\t\x1c\b\tj.\b\t\x1c\t\tR\t\b\x01\x80\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1a&&\x1a\x18\x0e\x14\x0e\x0e\x14\xda\t\b\x1d\b\bj/\b\b\x1c\t\bT\b\b\x00\x00\x00\b\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x15\x00\x1d\x00%\x00-\x005\x00A\x00M\x00Y\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01462\x16\x15\x02264&\"\x06\x146264&\"\x06\x146264&\"\x06\x146\"\x06\x14\x16264\x1354+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x01P\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14P&4&\xaa\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x82\x14\x0e\x0e\x14\x0eh\b\x90\b\b\x90\b\b\x90\b\b\x90\b\b\x90\b\b\x90\b\x01\x80\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1a&&\x1a\xfe\x98\x0e\x14\x0e\x0e\x14R\x0e\x14\x0e\x0e\x14R\x0e\x14\x0e\x0e\x14\xb2\x0e\x14\x0e\x0e\x14\xfe\x9e\x10\b\b\x10\bh\x10\b\b\x10\bh\x10\b\b\x10\b\x00\x00\a\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\a\x00\x0f\x003\x00;\x00C\x00K\x00[\x00\x00$\"&462\x16\x14&\"&462\x16\x14\x05'&6767\x1665632\x17\x06\x1667\x16\x17\x1e\x01\x0f\x01\x0e\x01'&'\x15#5\x06\a\x06&$\"\x06\x14\x16264&\"\x06\x14\x16264&\"&462\x16\x14\x052\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\xf7\x0e\t\t\x0e\t\x9cH44H4\xfe\xa4\x12\a\x05\f\v\x12\x187VJ\x037.\x03'&6;\x012\x17\x16\x17!676;\x012\x16\a\x0e\x04\a\x06\a3&'67\x1e\x02\x17\x16\x06+\x01\"'&'!\x06\a\x06+\x01\"&\x1367#\x167!\x16\x1736\x03!&'#\x06\x03\x0e B--B \x0e\x03\x01\n\a \x0e\x02\x02\x02\x018\x02\x02\x02\x0e \a\n\x01\x02\n\x1e*M1,\"\u007f\r\x04 \x1b*9\x11\x03\x01\n\a \x0f\x01\x01\x03\xfe\xc8\x02\x02\x02\x0e \a\n\xe1$\x1c\x80\x1c\xa7\xfe\xfa\t\f\xdc\f\xfd\x01\x05\b\r\xdb\f.\x15/DI\x1d\x1dID/\x15\a\v\x0e\b\n\n\b\x0e\v\a\x12(?9@\x19\x16\x1d\f\x02\x11\x13$Z8\x1a\a\v\x0e\x06\f\t\t\x0e\v\x01\x19\x14\x18\x18h\x10\x10\x10\xfe\xd0\x10\x10\x10\x00\x00\x03\x00\x00\xff\xb9\x02B\x01\xc0\x00\x15\x005\x00=\x00\x00%'&>\x01?\x01\x177'76\x1e\x02\x1f\x01\x16\x06\x0f\x01&\x17\x16\x06\x0f\x01\x0e\x01'.\x01'&7\x03#\"&=\x0146;\x012\x17\x13\x16\x1776\x16\x17\x04264&\"\x06\x14\x01&5\x01\x01\x06\x04>!=!=\x03\x06\x06\x04\x01<\x02\x06\x06\xa1\x17\xfe\x02\x06\x06\xd5\x01D-\x1d+\x05\b,\\Y\a\t\t\ap\x17\ad-\x1c\xd6\x06\f\x02\xfe\xb7(\x1c\x1c(\x1c\xaa\xa0\x04\b\a\x01\x14c\x14c\x15\x01\x01\x02\x05\x03\xb5\a\f\x025\x11)\a\v\x03G,8\b\x05,\x1e7#\x01\x15\t\a \a\t\x16\xfe\xd6\x01$G\x02\x06\x06\xa8\x1c(\x1c\x1c(\x00\x00\x02\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x14\x00B\x00\x007\"&5\x1146;\x01\x157\x17532\x16\x15\x11\x14\x06#\x172\x16\x1d\x01\x14\x06+\x01\x16\x15\x14\x06\"&547#\x16\x15\x14\x06\"&547#\"&5\x11#\"&=\x0146;\x012\x16\x15\x11\xd0\a\t\t\a\x9000\x90\a\t\t\a \a\t\t\aS\x03\x1c(\x1c\x03\xc6\x03\x1c(\x1c\x03S\a\t0\a\t\t\a`\a\t\x80\t\a\x01\x00\a\t\x80 \x80\t\a\xff\x00\a\t@\t\a \a\t\t\a\x14\x1c\x1c\x14\b\b\t\a\x14\x1c\x1c\x14\b\b\t\a\x01p\t\a \a\t\t\a\xfe\x90\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\b\x00\x1a\x006\x00\x00\x01\x16\x1d\x01#532\x17\a\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x134+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x01325\x01y\a\x80\x06\n\a7\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8@\b8\b0\b8\b\b8\b0\b8\b\x01W\a\n\x06\x80\a\x81\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xfe\xd8\b8\b\b8\b0\b8\b\b8\b\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00/\x008\x00\x00\x01\x14\x16;\x01\x11\x14\x06#!\"&=\x013\x17\x162?\x01\x173264&+\x01'&\"\x0f\x01'&+\x01\"=\x014;\x01546;\x01\x17\x16\x1d\x01#532\x17\x01 \x0e\n\x88\x0e\n\xfe\xb0\n\x0eF#\x02\n\x029\x16Z\a\t\t\aF#\x02\n\x029\x14\x02\x05\x8d\b\b8\x0e\nș\a\x80\x06\n\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\xa8F\x04\x04r,\t\x0e\tF\x04\x04r(\x04\b\x10\b\xe8\n\x0ei\a\n\x06\x80\a\x00\x00\x04\x00\x00\xff\xe0\x02@\x01\xa0\x00\t\x00\r\x00)\x003\x00\x00\x1146;\x01\x11#\"&5\x17\x11!\x11%\x15\x14;\x01\x15\x14;\x012=\x0132=\x014+\x0154+\x01\"\x1d\x01#\"%2\x16\x15\x11\x14\x06+\x01\x11\x1c\x1400\x14\x1c\x80\x01@\xff\x00\b8\b0\b8\b\b8\b0\b8\b\x01P\x14\x1c\x1c\x140\x01p\x14\x1c\xfe@\x1c\x140\x01\xc0\xfe@\xf80\b8\b\b8\b0\b8\b\b8\xc0\x1c\x14\xfe\xa0\x14\x1c\x01\xc0\x00\b\x00\x00\xff\xc0\x02@\x01\xc0\x00\x19\x00%\x001\x00=\x00I\x00e\x00q\x00}\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01546;\x012\x16\x1d\x01\x0154+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x1754+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012754+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132\x1354+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x02 \r\x13\t\a\xfd\xe0\a\t\x13\r\x80\x13\r\xc0\r\x13\xff\x00\f(\f\f(\f\f(\f\f(\f\xa0\f(\f\f(\f\f(\f\f(\f\x10\x06\x1a\x06\x14\x06\x1a\x06\x06\x1a\x06\x14\x06\x1a\x06\x90\f(\f\f(\f\f(\f\f(\f\x01`\x13\r\xfe\x90\a\t\t\a\x01p\r\x13@\r\x13\x13\r@\xfe\xac(\f\f(\f\x8c(\f\f(\ft(\f\f(\f\x8c(\f\f(\f\xb6\x14\x06\x1a\x06\x06\x1a\x06\x14\x06\x1a\x06\x06\x1a\xfe\xdc(\f\f(\f\x8c(\f\f(\f\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\a\x00#\x00\x00\x122\x16\x14\x06\"&4\x0554+\x01\"\x1d\x01#54+\x01\"\x1d\x01\x14;\x012=\x013\x15\x14;\x012\x96Ԗ\x96Ԗ\x01p\b0\b`\b0\b\b0\b`\b0\b\x01\xc0\x96Ԗ\x96\xd4\xe2\xf0\b\bXX\b\b\xf0\b\bXX\b\x00\x00\x04\x00\x00\xff\xc0\x02@\x01\xc0\x00\x13\x00\x1b\x00.\x008\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01\x1535\x06\"\x06\x14\x16264\x1726'.\x01+\x01\x06\"'#\"\x0e\x01\a\x06\x163\x13\x15#546;\x012\x16\x02\x10\x14\x1c\x1c\x14\xfe \x14\x1c\x1c\x14\x90\xc0F4&&4&\x1d\b\n\x02\x06\"\x15\b\x13*\x13\b\x0e\x19\x12\x04\x02\n\b\x9d\x80\x13\r@\r\x13\x01\x80\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c``\xa0&4&&4\xba\r\a\x13\x19\b\b\v\x14\r\a\r\x01\xa0``\r\x13\x13\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x15\x00\x1d\x009\x00E\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01462\x16\x15&\"\x06\x14\x16264\x1354+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132=\x014+\x01\"\x1d\x01\x14;\x012\x01P\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14P&4&6\x14\x0e\x0e\x14\x0eH\b8\b0\b8\b\b8\b0\b8\b\b\xb0\b\b\xb0\b\x01\x80\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1a&&\x1a\x18\x0e\x14\x0e\x0e\x14\xfe\xde0\b8\b\b8\b0\b8\b\b8\xc8\x10\b\b\x10\b\x00\x00\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x14\x008\x00<\x00@\x00\x007\"&=\x0146;\x01\x157\x17532\x16\x1d\x01\x14\x06#\x17#\x1532\x16\x1d\x01\x14\x06#!\"&=\x0146;\x015#\"&=\x01463!2\x16\x1d\x01\x14\x06\x055#\x15!5#\x15\x90\a\t\t\ap@@p\a\t\t\a\x8000\a\t\t\a\xfd\xa0\a\t\t\a00\a\t\t\a\x02`\a\t\t\xfe\xa9\xa0\x01\x80\xa0\xc0\t\a\xe0\a\t\x80 \x80\t\a\xe0\a\t\x80@\t\a \a\t\t\a \a\t@\t\a \a\t\t\a \a\t@@@@@\x00\x00\x04\x00\x00\xff\xdc\x02D\x01\xa0\x00\v\x00\x13\x00\x1d\x00'\x00\x00\x122\x16\x1d\x01\x14\x06\"&=\x014\x1754&\"\x06\x1d\x017\x17\x16\a\x06.\x027>\x01\x1e\x01\a\x06/\x01&76B\\BB\\B\xa0\x1c(\x1c\xec\xd2\a\a/vT\b\"\x06\xc3S\t#\x05\a\xd3\x06\a/\x01\xa0B.\xe0.BB.\xe0.\x9ep\x14\x1c\x1c\x14p\x1e\xd3\a\x05#\tSv/\a7Tv/\a\a\xd2\a\x06\"\x00\x00\x02\x00\x00\xff\xc0\x01\x80\x01\xc0\x00!\x001\x00\x00\x135!\x11\x14\x06#!\"&=\x0132=\x014+\x01532=\x014+\x01532=\x014#72\x16\x1d\x01\x14\x06#!\"&=\x01463 \x01@\x13\r\xff\x00\r\x13x\b\bxx\b\bxx\b\b\xd0\n\x0e\x0e\n\xfe\xb0\n\x0e\x0e\n\x01\x00@\xfe\xa0\r\x13\x13\r@\b\x10\b@\b\x10\b@\b\x10\b\xc0\x0e\n0\n\x0e\x0e\n0\n\x0e\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x0f\x00\x19\x005\x00\x00\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x13\x11!\x11\x14\x06#!\"&7\x15\x14;\x01\x15\x14;\x012=\x0132=\x014+\x0154+\x01\"\x1d\x01#\"\x01h\n\x0e\x0e\n\xfe\xb0\n\x0e\x0e\n\b\x01@\x13\r\xff\x00\r\x13@\b8\b0\b8\b\b8\b0\b8\b\x01\xc0\x0e\n0\n\x0e\x0e\n0\n\x0e\xfe \x01`\xfe\xa0\r\x13\x13\xc50\b8\b\b8\b0\b8\b\b8\x00\x00\x03\x00\x00\xff\xc0\x02\x80\x01\xc1\x00#\x00?\x00G\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&5\x1146;\x012\x16\x1d\x0135463'\"=\x014;\x012\x1f\x01762\x1f\x0132\x16\x14\x06+\x01'\a\x06\"/\x01\x02\"&462\x16\x14\x02\x10.B\t\a \a\t\xfe\x00\t\a \a\t\t\a \a\t\xc0\t\a\x88\b\b\x8d\x05\x02\x142\x04\x14\x04\x1cf\a\t\t\az\x162\x04\x14\x04\x1cL4&&4&\xe0B.\xa0\a\t\t\a00\a\t\t\a\x01`\a\t\t\a\xf0\x90\a\t\x80\b\x10\b\x04(c\t\t7\t\x0e\t,c\t\t7\xff\x00&4&&4\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc0\x00I\x00Q\x00Y\x00^\x00\x00%2\x16\x1d\x01\x14\x06+\x01\x14\x06\"&5#\x14\x06\"&=\x0132=\x014+\x01\"=\x014;\x012=\x014+\x01\"=\x014;\x012=\x014#!\"=\x014;\x015463!2\x16\x1d\x0132\x1f\x01\x16\x1d\x01\x04264&\"\x06\x14\x04264&\"\x06\x1475'#\x15\x02p\a\t\t\a08P8\x808P8\x98\b\b\xd0\b\b\xf0\b\b\xd0\b\b\xf0\b\b\xfe\xf0\b\b8\x1c\x14\x01\x00\x14\x1c,\x14\x0ed\x0e\xfe,(\x1c\x1c(\x1c\x01\\(\x1c\x1c(\x1c\x80d,`\t\a \a\t(88((88(\x80\b\x10\b\b\x10\b\b\x10\b\b\x10\b\b\x10\b\b\x10\b0\x14\x1c\x1c\x140\x0ed\x0e\x14lp\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\xb4\fdp\x00\x00\x00\x00\x06\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\v\x00#\x003\x007\x00N\x00Z\x00\x00%2\x1d\x01\x14+\x01\"=\x0143\x03\x1e\x01\x1d\x01\x14+\x01\"=\x014&'&=\x014;\x012\x1d\x01\x14\x032\x16\x1d\x01\x14\x06#!\"&=\x01463\x055#\x15\x01\x1e\x01\x1d\x01\x14+\x01\"=\x014'&=\x014;\x012\x1d\x01\x14\x172\x1d\x01\x14+\x01\"=\x0143\x02x\b\b0\b\b\x1f).\b0\b$\x1f\x1d\b0\bp\a\t\t\a\xfe\x80\x14\x1c\x1c\x14\x01`\xb0\x01\b\x1a\x1e\b0\b$<\b0\bX\b\b0\b\b`\b\x90\b\b\x90\b\x01\t\x1bW1\x1e\b\b\x1e&B\x14\x13%>\b\b>\v\xfe\xf1\t\a\x80\a\t\x1c\x14@\x14\x1cp@@\x01B\x129!\x1e\b\b\x1e,\x19*AB\b\b>,\xee\b\x90\b\b\x90\b\x00\x02\xff\xfc\xff\xbc\x02\x04\x01\xc4\x00\x1f\x00>\x00\x00\x137\x17\a\x06/\x01\a\x06/\x01&?\x01'&?\x01\x17\x16?\x016/\x017\x17\x16?\x016'7\x16\x0f\x01\x06/\x01\a\x17\x16\x0f\x01\x06/\x03&?\x016\x1f\x027'&?\x016\x17\xca@\x88\xb6\x1b&@B\x06\x05\f\x05\x05C\a\x04\x1b\x1a8\x05\x06\v\x06\x067-8\x05\x06\v\x06\x06\xfd\x05\x05\f\x05\x06\x1c-I\x06\x06\"\x06\x05\x11\x88\x11\x06\x06\"\x06\x05\x119-\x1c\x06\x06\v\x06\x05\x01\x11A\x88\xb5\x1c\x05\aC\x05\x05\f\x05\x06B@&\x1b\x1b8\x06\x06\v\x06\x067.8\x06\x06\v\x06\x05\x95\x05\x06\v\x06\x06\x1c-J\x05\x06\"\x06\x06\x11\x88\x11\x06\x05\"\x06\x06\x118-\x1c\x06\x05\f\x05\x05\x00\x00\x04\xff\xff\xff\xc0\x02\x84\x01\xc4\x00\v\x00\x1a\x00$\x00.\x00\x00\x122\x16\x17\x16\x06#!\"&56\x052\x16\x15\x0e\x01#\".\x02'463\x00\x1e\x01\a\x06/\x01&76\a\x17\x16\a\x06.\x0276dx[\t\x01\x06\x03\xfe\xd0\x03\x05\t\x01/\x03\x05\t[<\x1e7*\x1c\x05\x05\x03\x02\x1fT\t#\x05\a\xd3\a\a/F\xd3\a\a/vT\t#\x05\x01\x00M:\x03\x06\x06\x03:c\x06\x03:M\x15$1\x1d\x03\x06\x01kTv/\a\a\xd3\a\x05#F\xd3\a\x05#\tTv/\a\x00\x00\x00\x00\x01\xff\xff\xff\xc0\x02\x01\x01\xc3\x00(\x00\x00\x01\x16\x14\x0f\x01#\a\x06\"&4?\x0157\x17\x16?\x016/\x017\x17\x16?\x016/\x017\x17\x16?\x016/\x017>\x01\x01\xdd#\x1c\xfedY\a\x14\x0e\aY-2\x06\x06\v\x06\x062-2\x06\x06\v\x06\x062-2\x06\x05\f\x05\x053.\x1bM\x01\xac!R\x1c\xfdY\a\x0e\x14\aYe.3\x05\x05\f\x05\x062.3\x05\x05\f\x05\x062.3\x05\x05\f\x05\x062.\x1c\x06\x00\x00\x00\x02\xff\xfd\xff\xcf\x01\xe4\x01\xb4\x00\x15\x00\x19\x00\x00\x01\x16\x0f\x01\x06/\x01\a\x06#\"'&6?\x01'&?\x016\x1f\x017'\a\x01\xde\x05\x05\"\x06\x06\v\xf6\x1e+/\x1f\x1b\x06\x1e\xf2\v\x05\x05\"\x06\x06\bFO\x94\x01\x06\x06\x05\"\x06\x06\v\xf6\x1e$ R\x1e\xf1\v\x06\x06\"\x05\x05\xeeEO\x94\x00\x00\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x13\x00\x17\x00'\x00;\x00?\x00\x00\x13\"=\x014;\x012\x1d\x01\x14+\x01\x15\x14\x06\"&=\x013\x1535\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\"=\x014;\x012\x1d\x01\x14+\x01\x15\x14\x06\"&=\x013\x1535H\b\b\xd0\b\b\x18/B/0@\x01\xa0\a\t\t\a\xfd\xa0\a\t\t\a\x01X\b\b\xd0\b\b\x18/B/0@\x01\x80\b0\b\b0\b\xf0!//!\xf0``\xfe\x80\t\a \a\t\t\a \a\t\x01\x80\b0\b\b0\b\xf0!//!\xf0``\x00\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\v\x00\x17\x00#\x00A\x00\x00%2\x1d\x01\x14#!\"=\x0143\x052\x1d\x01\x14#!\"=\x0143%2\x1d\x01\x14#!\"5743%\x16\x15\x11\x14+\x01\"=\x014&#!\"\x06\x1d\x01\x14+\x01\"5\x1147%62\x17\x01\xf8\b\b\xfe\x90\b\b\x01p\b\b\xfe\x90\b\b\x01p\b\b\xfe\x90\b\x01\b\x01\xd9\x1e\bP\b\x13\x0e\xfe\x82\x0e\x13\bP\b\x1e\x01\x10\b\x14\b`\b0\b\b0\b`\b0\b\b0\b\xc0\b0\b\b0\b\x8b\f \xfe\xa9\b\b\xf8\r\x13\x13\r\xf8\b\b\x01W \fq\x04\x04\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x19\x00!\x002\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01\x06\x15\x14\x162654'\x02\"&462\x16\x14'\"\x06\x15\x14\x162654'76.\x01\x06\a\x01\xc0\x1a&&\x1a\xfe\x80\x1a&&\x1a\x1a\x1aq\x9eq\x1ad\x84^^\x84^\xa0\x11\x17\x17\"\x17\v\"\x02\x05\f\f\x03\x01\x80&\x1a\xfe\xc0\x1a&&\x1a\x01@\x1a&-3OqqO3-\xff\x00^\x84^^\x84:\x18\x10\x11\x17\x17\x11\x0f\fO\x06\f\x05\x05\x06\x00\x00\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\a\x00\x0f\x00\x1f\x003\x00}\x00\x0062\x16\x14\x06\"&4\x16\"&462\x16\x14\x132\x16\x1d\x01\x14\x06#!\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x11!\x11'54+\x01532=\x014+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15#\"\x1d\x01\x14;\x01\x15#\"\x1d\x01\x14;\x01\x15#\"\x06\x14\x1626=\x013\x15\x14\x16264&+\x01532=\x014+\x01532\xe9\x0e\t\t\x0e\t\xb7\x0e\t\t\x0e\t\xd0\a\t\t\a\xfd\xa0\a\t\t\a\x02`\a\t\t\a\xfd\xa0\a\t\t\a0\x02\x00`\b\x88h\b\bh\b\x10\bh\b\bh\x88\b\b\x88h\b\bh@\x14\x1c\x1c(\x1c@\x1c(\x1c\x1c\x14@h\b\bh\x88\b@\t\x0e\t\t\x0e\x17\t\x0e\t\t\x0e\x01\x97\t\a \a\t\t\a \a\t\xfe@\t\a \a\t\t\a \a\t\x01`\xfe\xa0\xc8\x10\b \b\x10\b\x18\b\b\x18\b\x10\b \b\x10\b \b\x10\b \x1c(\x1c\x1c\x14\x10\x10\x14\x1c\x1c(\x1c \b\x10\b \x00\x00\x03\xff\xfe\xff\xde\x02\x82\x01\xa2\x00\x17\x00\"\x00-\x00\x00%2?\x01\x15\x14\x06\x0f\x01\x06/\x01.\x01=\x01\x17\x1632?\x01\x17\x167\x16\x06\x0f\x01\x06/\x0176\x17!6\x1f\x01\a\x06/\x01.\x017\x01\xaa\a\x06\x89\x0e\n\xd9\x0f\x10\xd8\n\x0e\x89\x06\a\x1c\x0e@@\x0e\xf0\x04\x06\b\xc6\f\x06\\\xfa\f\x05\xfd\xea\x05\f\xfa\\\x06\f\xc6\b\x06\x04\xc0\x02'\xb2\v\x11\x036\x04\x046\x03\x11\v\xb2'\x02\x17kk\x17p\a\x0e\x028\x04\v\x98 \x01\n\n\x01 \x98\v\x048\x02\x0e\a\x00\x00\x00\x04\xff\xfe\xff\xe0\x02\x00\x01\xa0\x00\x14\x00\x1c\x00$\x00,\x00\x00\x122\x16\x14\x06#\"'\x06#\"&'&>\x027&54\x16264&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x14\x96Ԗ\x96j83AL\x02\x04\x01\x02\a\x11\x1c\x069s\x1a\x13\x13\x1a\x13\x93\x1a\x13\x13\x1a\x13\x93\x1a\x13\x13\x1a\x13\x01\xa0z\xacz\x133\x03\x02\x05\a\x151\x169JVv\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x00\x00\x02\xff\xf9\xff\xb9\x02\x81\x01\xc7\x00\x0f\x00$\x00\x00747\x05\x06#\"'\x06#\"&767&\x05\x1e\x01\x0f\x01\x06'\x01&?\x016\x1f\x01632\x16\x15\x14\a@\t\x01E&(83AL\x05\x04\x03,\v9\x02:\x05\x02\x04\x14\n\f\xfd\xb3\f\t\x14\n\riI`j\x969\xd0\x1a\x1c\xfc\n\x133\n\x044+9\x90\x04\r\x05\x1a\f\n\x01\xc6\n\r\x19\f\tR5zVH:\x00\x00\x00\x02\x00\x00\x00\x00\x02\x80\x01\x80\x00\x11\x009\x00\x0074&+\x01463!2\x16\x15#\"\x06\x1d\x01!%2\x16\x15\x14\a\x15\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&=\x01&546;\x012\x16\x1d\x01!5463\xa0&\x1a 8(\x01@(8 \x1a&\xfe\xc0\x01\xa0\x1a& \t\a@\a\t\xfe\x80\t\a@\a\t &\x1a \r\x13\x01\x80\x13\r\xe0\x1a&(88(&\x1a@`&\x1a$\x13y\a\t\t\a\x10\x10\a\t\t\ay\x13$\x1a&\x13\r``\r\x13\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\a\x00F\x00h\x00\x00$\"&462\x16\x14'\x0e\x01\x15\x14\x16\x1f\x01\x16\x15\x14\x06+\x01\"&\x0f\x01\x06\x14\x17\x16\x17\x15\x14\x16;\x0126=\x01>\x0154&/\x01&546;\x012\x16?\x016&'&'54&+\x01\"\x0e\x01\x15\x132\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x16\x17#\"\x1d\x01\x143!2=\x014+\x0167\x01V\xaczz\xacz\xe6\x19\"\x18\x13?\f\n\a&\n\x10\x06\x10\x04\x05\x13\x18\t\a\v\a\n\x19\"\x18\x14>\f\n\x06'\n\x10\x06\x10\x04\x01\x04\x13\x18\n\x06\f\x04\b\x04\xf6\r\x13\x13\r\xfe@\r\x13\x13\r \x1e+?\n\n\x01l\n\n@,\x1e z\xaczz\xac\xc5\x01$\x1a\x15!\x06\x13\x03\x0e\b\n\n\x06\x10\x04\n\x03\x0e\x01\x11\a\n\n\a\x10\x01$\x1a\x15!\x06\x13\x03\x0e\b\n\n\x06\x10\x04\n\x03\x0e\x01\x11\a\n\x04\b\x05\xfe\xf1\x13\r`\r\x13\x13\r`\r\x13'\x19\b\x10\b\b\x10\b\x19'\x00\x03\xff\xfe\xff\xbf\x02\x00\x01\xc3\x00\t\x00)\x001\x00\x00\x01&'676\x16\x17\x16\x1773\a\x15\x14\x06+\x01\a\x06#&'&6?\x01&'&54762\x17\x1e\x01\x17546\x16264&\"\x06\x14\x01 N5\x11 \a\x13\x02\n,pp ^BMA\n\fk.\x05\x06\b\x90\x16\x11U\x1a\x04\x15\x04\x1e}N/\x1a\x0e\t\t\x0e\t\x01\x19\x10;1%\b\x06\nE8K@\xa0B^8\b\x04H\a\x10\x02$\x10\x11Qh=7\t\nEX\x05\x01\x17\x1e\x01\x0f\x01\x06\"\x05\x16\x06\x0f\x01\x06#!\"&=\x0146;\x0176;\x012\x16\a\x0e\x01+\x01\"\x06\x14\x16;\x012?\x0162\x01\x13m\x17\x03\x1a\x17=\x15\v\v\x16<\x17\x1b\x03\x18m\x06\x0e\x01\x1c\f\x01\f\x97\x12\x16\xfe\x9b\a\t\t\a7/ *\xa0\x0f\x13\x02\x02\x14\fN\a\t\t\av\x17\x11]\t\x18\xc6r\x18H\x16\x14\x05\x16\f\f\x16\x05\x14\x16H\x18r\x06H\n\x1e\ty\x0e\t\a`\a\t&\x1a\x17\x0e\f\x0f\t\x0e\t\x0eJ\b\x00\x00\x00\x02\x00\x00\xff\xc0\x02A\x01\xc0\x00E\x00o\x00\x00\x01.\x01'&67546;\x012\x16\x1d\x01\x16\x17\x16\x15\x14\a\x14\x0f\x01\x06'&+\x01\"\x15\x14\x1f\x01\x1e\x02\x17\x16\x06\a\x15\x14\x0e\x01+\x01\"&=\x01&'&5474?\x016\x17\x16;\x01254'\x17\x16\x15\x14\x0f\x01\x06#!\"&=\x0146;\x017>\x01;\x012\x16\x15\x14\x15\x0e\x01+\x01\"\x06\x14\x16;\x012?\x0162\x01\x0f\x12\x1a\x03\x03 \x19\n\a\x12\a\n\x13\x10\x05\x02\x02\x13\x06\t\x05\x06$\t\a6\f\x14\r\x02\x03 \x19\x05\b\x04\x12\a\n\x13\x10\x05\x02\x02\x13\x06\t\x05\x06$\t\a\xf0\v\f\x97\x12\x16\xfe\x9b\a\t\t\a7/\r,\x11\xa0\r\x13\x02\x14\fN\a\t\t\av\x17\x11]\t\x18\x010\x05\x19\x11\x18%\x02\x12\a\t\t\a\x12\x02\t\x04\x06\x03\x03\x01\x02\x11\x06\x04\x02\b\a\x01\x0f\x03\x0e\x13\v\x18%\x02\x12\x04\b\x04\t\a\x12\x02\t\x04\x06\x03\x03\x01\x02\x11\x06\x04\x02\b\a\x01\xa9\n\x0e\x0f\ny\x0e\t\a`\a\t&\v\x0f\x13\r\x03\x02\f\x0f\t\x0e\t\x0eJ\b\x00\x02\x00\x00\xff\xc0\x02\x80\x01\x80\x00\"\x00E\x00\x007\x17\x16\x1d\x01\x14\x06+\x01\"'&/\x01&=\x01462\x16\x1d\x01\x17\x162?\x016/\x01&>\x01\x16$2\x16\x1d\x01\x14\x0f\x01\x06\a\x06+\x01\"&=\x014?\x01>\x01\x1e\x01\x0f\x01\x06\x1f\x01\x162?\x0154\xcd9\x1a\t\a\x84\f\x03\x03\ai\n\x13\x1a\x13Z\x04\x0e\x05\r\n\b&\b\x03\x16\x1a\x01\x8e\x1a\x13\ni\a\x03\x03\f\x84\a\t\x1a9\b\x1a\x16\x03\b&\b\n\r\x05\x0e\x04Z\xdaM\"+p\a\t\f\f\t\x87\r\x11\xda\r\x13\x13\r\x94l\x06\x05\r\t\v3\v\x1a\x10\x04\x9c\x13\r\xda\x11\r\x87\t\f\f\t\ap+\"M\n\x04\x10\x1a\v3\v\t\r\x05\x06l\x94\r\x00\x00\x00\x00\x02\xff\xfd\xff\xbd\x02\x83\x01\xc3\x00%\x00@\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\x14\x06+\x01\a\x06&/\x01&6?\x0154?\x01\x15\x14\x1626=\x01%\x16\x06\x0f\x0154&+\x01\x15\x14\x06\"&=\x014?\x016;\x0176\x16\x17\x01\xe8\n\x0e\x0e\n\b\x13\r\x10&\x1a\x89g\v\x1a\aP\x06\a\vP\x1fA*<*\x01,\x06\a\vP!\x17\xb8\x17\"\x17\x0f!\x10\x12gg\v\x1a\a\x01\x00\x0e\n0\n\x0e@\r\x13\x1a&<\x06\a\v\x8b\v\x1a\x06.0$\x13'z\x1e**\x1e8%\v\x1a\x06.\x1c\x17!X\x11\x17\x17\x11~\x12\t\x15\n<\x06\a\v\x00\x00\x00\x01\xff\xff\xff\xc0\x02\x01\x01\xc0\x005\x00\x00\x01\x16\x06+\x01\a\x16\x1d\x01\x14\x0e\x01+\x01\"&=\x0147'#\"&7>\x027\x06\x15#\x176;\x015#462\x16\x15#\x1532\x177#4'\x1e\x01\x02\x00\x01\n\a\t\x89\x02\t\x0e\t\x80\r\x13\x02\x89\t\a\n\x01\x04.C)>\x1ct\a\x010pQ^Qp0\x01\at\x1c>?X\x01\x11\a\n\x98\x06\x02\x80\t\x0e\t\x13\r\x80\x02\x06\x98\n\a$A,\x0eDl\x82\x02\x80RnnR\x80\x02\x82lD\x15T\x00\x00\x00\x00\x05\xff\xfd\xff\xbd\x02\x83\x01\xc0\x00\a\x00\x0f\x00\x1a\x00e\x00n\x00\x00\x12\"&462\x16\x14\x04\"&462\x16\x14\x13\x16\x06\a\x06#\"/\x01?\x02\x16\x0f\x02\x0e\x02#\"#.\x01?\x016?\x01'\a\x06\x0f\x01\x06\a#&/\x01&/\x01\a\x17\x16\x1f\x01\x16\x06\a\"#\"&/\x02&?\x01676\x17\x16\x1f\x02546;\x012\x16\x1d\x01?\x01676\x17\x16\x17\x05\x1f\x01\a\x0e\x01.\x017\x94(\x1c\x1c(\x1c\x01d(\x1c\x1c(\x1cN\x05\v\f\x06\x06\x16\b\x1b\x02)\n\a\x16C\n\x01\t\x0e\b\x01\x03\r\x10\x01\n\x03\r+\x11\a\x06\x133\x06\v\xa0\v\x063\x12\a\a\x11+\r\x03\n\x01\x10\r\x03\x01\f\x12\x02\nC\x16\a\x13\a\x1e\x1d\x1b$\r\v\x10\t\a\xa0\a\t\x10\v\r#\x1b\x1e\x1e\a\xfd\xe5)\x02\x1b\x05\x18\x19\v\x05\x01`\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\xfep\f\x19\x05\x02\x14E\x13.d \x19L]\b\r\a\x02\x14\x0e\\\x14\x0f1G\x15\x13\r!\x04\x01\x01\x04!\r\x13\x15G1\x0f\x14\\\x0e\x14\x02\x10\f]L\x19 P \r\f\x0f\x15'\"\n`\a\t\t\a`\n\"'\x15\x0f\f\r \xb4.\x13E\f\v\n\x19\f\x00\x00\x00\x03\xff\xfd\xff\xc0\x02@\x01\xc0\x00C\x00K\x00Z\x00\x00%2\x16\x1d\x01\x14\x06+\x01\x06\a\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&=\x01.\x025#\"&7>\x0232\x1d\x01\x14+\x01\"\x0e\x01\a\x06\x16;\x01>\x01;\x012\x176;\x01\a\x16\x17\x06264&\"\x06\x14'\"\a4&5462\x16\x15\x141&#\x020\a\t\t\a1\r\x12\t\a@\a\t\x80\t\a@\a\t\x13\x1d\x10(\x19\"\x03\x02\x11\x19\x0e\x06\x06\x01\x06\n\a\x02\x02\x0f\v+\vX:\x80\a\x10\x1d, \x13\x18\ri\x0e\t\t\x0e\t\xa0\x17\x18\x018P8\v\x05\xe0\t\a\x80\a\t\x12\rQ\a\t\t\a00\a\t\t\aQ\x0e'0\x1a&\x19\x0e\x17\f\x06\x14\x06\x05\t\x05\f\x117I\x02\"L\x16\x1e@\t\x0e\t\t\x0e\xb7\x06\x01\x04\x01(88(\x01\x01\x00\x00\x00\x00\x02\xff\xfe\xff\xb8\x01\xc2\x01\xc1\x00\b\x00)\x00\x00?\x01\x17\a\x06/\x01.\x01%\x16\x06\x0f\x01\x06'\x03.\x014>\x01?\x016762\x17\x16\x1f\x01\x16\x06\x0f\x01'67&\"\a\x06uO[\x0e\x12D\t\x03\x01\xbb\a\x02\tE\x12\r\xf9\r\f\a\x05\x02,\x06\n\"k\x1f\n\x06,\x11\a\x15\"O4\x04!Z!\x04\x82Xf\x10\f\x1c\x06\x16\b\b\x16\x06\x1c\f\x10\x01\x13\x0f#\x1b\x1b\t\x03I\f\x06\x16\x16\x06\fI\x1c@\x17&W;\x06\x12\x12\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x00&\x00.\x00;\x00C\x00\x00%2\x16\x14\x06#!673264&+\x01\"&46;\x01&5462\x16\x15\x14\x06\x0f\x01#\"\x06\x14\x163\x12\"\x06\x14\x16264\x042\x16\x15\x14\x06\x0f\x01.\x0254\x16264&\"\x06\x14\x01\xa0(88(\xfe\xea\x1b\x15\xe6\r\x13\x13\r`(88(--8P80\x18\x18`\r\x13\x13\rm\x1a\x13\x13\x1a\x13\xfexP80\x18\x18\v 5S\x1a\x13\x13\x1a\x13\x808P8!\x1f\x13\x1a\x138P8@ (88(\x18P\x1c\x1c\x13\x1a\x13\x01\x00\x13\x1a\x13\x13\x1a\xad8(\x18P\x1c\x1c\f&V\x18(H\x13\x1a\x13\x13\x1a\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x1a\x00\x00\x132\x16\x1d\x01\x14\x06+\x01\"&=\x01\"&5%3\x14\x06\a&'>\x03@]\x83\t\a \a\t]\x83\x01\xc0@tU\x10+\x0f)2;\x01`\x83]\x90\a\t\t\a\x90\x83]@V\x80\t=/\x1a*\x1e\x11\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00#\x00'\x00\x00\x012\x16\x1d\x01\x14\x06#!\x11\x14\x06+\x01\"&5\x11#\"&=\x0146;\x01546;\x012\x16\x1d\x01\x135!\x15\x01\xf0\a\t\t\a\xfe\x90\t\a \a\t0\a\t\t\a0\t\a \a\t \x01@\x01\x80\t\a \a\t\xfe\x90\a\t\t\a\x01p\t\a \a\t0\a\t\t\a0\xfe\xc0\xe0\xe0\x00\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\"\x00/\x00\x00<\x0162\x16\x14\x06\"\x124&\"\x06\x14\x1627\x17\x166'.\x03#\"\x06\a\x06\x16?\x0162\a&\x0e\x01\x17\x16276&\a\x06\"\x91Α\x91\xce7\x13\x1a\x13\x13\x1a\xb1\n\x06\x0f\x01\x01\f\x11\x14\n\x14%\x03\x01\x0f\x06\n\v&\xbd\a\x12\x05\x05-\x8c-\n\x19\n#nYΑ\x91Α\x01\x1b\x1a\x13\x13\x1a\x13\x10\t\x06\b\t\t\x10\v\x06\x18\x12\t\b\x06\t\to\b\x04\x10\b66\f\x14\f*\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\a\x00\x19\x00!\x00\x00\x122\x16\x14\x06\"&4\x052\x16\x1d\x01\x14\x06#!\"&462\x16\x15\x14\a&264&\"\x06\x14\xc64&&4&\x01\xd0\a\t\t\a\xfep]\x83\x83\xba\x83C\xc5P88P8\x01\x00&4&&4\xba\t\a \a\t\x83\xba\x83\x83]^B@8P88P\x00\x03\xff\xfe\xff\xbe\x02\x80\x01\xc0\x00\x16\x00)\x001\x00\x007'&>\x01?\x01\x177'72\x1e\x02\x1f\x01\x16\x06\x0f\x01\x06&\x01!\x11\x14\x06#\"&'\x05\x06/\x01&7%\x1146\x12264&\"\x06\x1421\x02\x03\x06\x04M\x19>\x19M\x03\a\x05\x04\x012\x01\x06\a\xd8\a\v\x01L\x01\x00B.-A\x02\xfew\b\x02\r\x02\b\x01Z\x13\x89(\x1c\x1c(\x1cH\xba\x04\b\x06\x02\x14\\\x10]\x15\x01\x03\x05\x03\xb9\a\v\x02:\x02\a\x01~\xfep.B?-l\x02\b.\b\x02^\x01D\r\x13\xfe@\x1c(\x1c\x1c(\x00\x00\x05\x00\x00\xff\xe0\x02\x80\x01\xa0\x00)\x001\x009\x00?\x00G\x00\x00%\x16\x1d\x01\x14\x06+\x01\x16\x15\x14\x06\"&547#\x16\x15\x14\x06#\"'\x06#\"&5\x11463!2\x16\x1d\x0132\x17\x04264&\"\x06\x14\x16264&\"\x06\x14%\x153'&#\x06264&\"\x06\x14\x02m\x13\t\a\x12\x02/B/\x02\xa4\x02/!(\x18\x18(!/\x13\r\x01\xa0\r\x13&\x1a\x13\xfe\x10\x1a\x13\x13\x1a\x13\x93\x1a\x13\x13\x1a\x13\x010\\+\x05\x06\x03\x1a\x13\x13\x1a\x13\xd3\x13\x1aV\a\t\b\b!//!\b\b\b\b!/ /!\x01P\r\x13\x13\r`\x13\xfd\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\xcd0+\x05\xe0\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x02\xff\xf9\xff\xb9\x02\x81\x01\xc7\x00\x1e\x00&\x00\x00\x05\x1e\x01\x0f\x01\x06/\x01\x01'&?\x016\x1f\x0132\x16\x1d\x01\x17576\x16\x15\x11\x14\x06\a%5\x01\x06#!\"&\x02z\x05\x02\x04\x14\n\r\xb2\xfe\x8b%\f\t\x14\n\rN\xf4\x14\x1c n\x10\"\x11\f\xfd\xdd\x01n\r\x11\xfe\xe0\x14\x1c\n\x04\r\x05\x1a\f\t\x8a\x01!\x1c\n\r\x19\f\t=\x1c\x14\xb2\x18\x89K\v\x11\x14\xff\x00\r\x12\x01\x10\xf5\xfe\xe5\n\x1c\x00\x00\x00\x00\x01\xff\xfb\xff\xc0\x01%\x01\xc0\x00\x1e\x00\x00\x172\x16\x15\x14+\x01\"546;\x015.\x01?\x014>\x01;\x012\x16\x15\x17\x16\x06\a\x15\xd8\x11\x17\b\xd0\b\x17\x11(4@\x05\x10\x04\a\x04\xe0\x06\t\x10\x05@4\x10\x17\x11\b\b\x11\x17u\fW7\xb2\x05\x06\x04\b\a\xb27W\fu\x00\x00\x00\x02\xff\xf9\xff\xb9\x02\x81\x01\xc7\x00\x17\x00!\x00\x00\x05\x1e\x01\x0f\x01\x06'\x01&?\x016\x1f\x01>\x0132\x16\x15\x14\x0e\x01\x0f\x013\x17!\"&=\x0146\x02z\x05\x02\x04\x14\n\f\xfd\xb3\f\t\x14\n\r\x87\fM2\x0132\x1e\x02\x1732\x16\x1d\x01\x14\x06+\x01\x0e\x01\"&'7\x15\x14\x16;\x0126=\x014&+\x01\"\x06\x17/\x01?\x01\x1f\x01\a\x17\x1e\x01\x1d\x01\x14\x06+\x0154&+\x01\"\x06\x1d\x01#\"&=\x01467\x162\x062\x16\x14\x06\"&4&2\x16\x1d\x01#54@\a\t\t\a\x0e\x12P0\x18.%\x1e\t\x0e\a\t\t\a\x0e\x12P`P\x12\x1a8(0(8\x1c\x14\x90\x14\x1cH\f$$\f\f$$\x8c3E\x1c\x14P\x13\r\x80\r\x13P\x14\x1cE30p\x0f\x0e\t\t\x0e\tW\x0e\t \xe0\t\a`\a\t+5\x0e\x19$\x15\t\a`\a\t+55+X\x18(88(\x18\x11\x17\x17Y$\f\f$$\f\f\x95\x06L3\n\x14\x1c@\r\x13\x13\r@\x1c\x14\n3L\x06\x1f`\t\x0e\t\t\x0e\t\t\a00\a\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x85\x01\xc0\x00\a\x00\x1b\x00+\x00\x00$\"&462\x16\x14\a2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x1627%\x16\x0f\x01\x06/\x01&?\x016\x1f\x0176\x17\x01\x15jKKjK&7O\x1c\x14\xfe\xa0\x14\x1cO7\x11#L#\x01T\b\t\x8d\b\tQ\t\t\x1c\b\t-i\t\b\xc0KjKKjkO7*\x14\x1c\x1c\x14*7O\x10\x10\x80\b\b\x8d\b\tR\b\t\x1b\t\t-h\b\t\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\a\x00\x17\x00+\x003\x00\x00$2\x16\x14\x06\"&4\x1754+\x0154+\x01\"\x1d\x01\x14;\x012'\x14\x16\x17!\"&=\x0146;\x01\x162732\x17\x06&\"&462\x16\x14\x01\xb4xTTxT\xd0\n&\n\f\n\n<\n\xf0(#\xfe\xa5\x14\x1cO7\x11#L#\x11\v\r\x12+jKKjK\xe0TxTTxB\f\n6\n\nL\n\x10,L\x18\x1c\x14*7O\x10\x10\x02&HKjKKj\x00\x04\x00\x00\xff\xc0\x02\x82\x01\xc0\x00;\x00C\x00K\x00v\x00\x00%\x17\x16\a\x06\a\x06/\x01\x06\a\x15\x14\a\x06'&=\x01&'\a\x06'&'&?\x01&7'&7676\x1f\x01675476\x17\x16\x1d\x01\x16\x1776\x17\x16\x17\x16\x0f\x01\x16\x06264&\"\x06\x14&\"&462\x16\x14\x13\x15\x14\x17\x06#!\"&=\x0146;\x01\x162732\x163\x14\x06\x15\x06\x16\x1f\x01\x06\x17\a\x0e\x01\x17\x16\x17\x1632?\x01\x16\x02b\x1a\x05\x01\n\x18\x04\x05\x19\x11\x14\x06!!\x06\x14\x11\x1a\x05\x04\x17\n\x02\x06\x19\x04\x04\x19\x05\x01\n\x17\x04\x05\x1a\x11\x14\x06!!\x06\x14\x11\x19\x05\x04\x18\n\x01\x05\x1a\x04\x8a(\x1c\x1c(\x1c\xabjKKjKI\x02\f\x0f\xfe\xa0\x14\x1cO7\x11#L#\x11\x02\b\x01\x03\x04\n\f\b\x01\x01\b\f\n\x04\f\x1c\f\x11\n\t\b\x05K\x0f\x03\x06 \x19\x04\x02\x0f\x0e\a\x1e\x06\x01\a\a\x01\x06\x1e\a\x0e\x0f\x02\x04\x19 \x06\x03\x0f\x15\x15\x0f\x03\x06 \x19\x04\x02\x0f\x0e\a\x1e\x06\x01\a\a\x01\x06\x1e\a\x0e\x0f\x02\x04\x19 \x06\x03\x0f\x150\x1c(\x1c\x1c(tKjKKj\xfe\xd3\n\x05\a\b\x1c\x14*7O\x10\x10\x01\x01\x06\x02\r\x1a\a\x04\x04\x04\x05\a\x19\r'\x1f\f\x05\x04\x03\x00\x00\x00\x04\x00\x00\xff\xbf\x02\x80\x01\xc0\x00\a\x00\x1c\x00$\x00/\x00\x00$\"&462\x16\x14\a2\x17\x0f\x03\x06\x17!\"&=\x0146;\x01\x1627\x177\x17\x0f\x01\x06&7%\x16\x14\x0f\x01'?\x0162\x17\x01\x15jKKjK&;)N\b\x01\a\x01\x04\xfe\xed\x14\x1cO7\x11#L#>\x8aG\x89=\b\v\x01\x01\x19\a\a*H\x05%\a\x14\a\xc0KjKKjk.M\b\v=\n\v\x1c\x14*7O\x10\x10\x91\x89G\x8a\a\x01\v\b\xe1\a\x14\a*H\x04&\a\a\x00\x00\x00\x04\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\a\x00\x1b\x00#\x007\x00\x006\"&462\x16\x14\a2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x1627$\"&462\x16\x14\a2\x16\x15\x14\x06+\x0146=\x014'6;\x01\x1627\xee\\BB\\B#0C\x1c\x14\xfe\xe0\x14\x1cC0\t!F!\x01\x04P88P80.B\x1c\x14\xb1\x01(\x1b\x1d\x04\x17*\x17\xc0B\\BB\\bC0\x1d\x14\x1c\x1c\x14\x1d0C\x10\x10 8P88PXB.\x14\x1c\x01\x04\x01'9+\x0f\b\b\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc3\x00\x10\x00:\x00\x00%\x1e\x01\x1d\x01\x14\x06#!\"&=\x01467\x17\x03&4?\x016\x1f\x01\x16\x14\x0f\x01\x16\x15\x14\x06\"&547'\x15\x16\x15\x14\a\x17\x16\x0e\x01+\x01\"&?\x01&5475\x01?6K\x1c\x14\xfe\xa0\x14\x1cK6_\xd2\x0e\x0e\xbe\x14\x14\xbe\x0e\x0e`\x0eKjK\x0eB\f\v\x0f\x01\x01\x04\x03*\x04\x05\x02\x0f\v\f\u007f\x02M6\n\x14\x1c\x1c\x14\n6M\x02_\x01P\x03\x1a\x03.\x04\x04.\x04\x19\x03\x17\x1c\x1d5KK5\x1d\x1c\x105\a\r\f\b>\x04\x06\x04\t\x05>\b\f\r\a;\x00\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\a\x00\x1b\x003\x00;\x00C\x00\x00$\"&462\x16\x14\a\x15\x14\x17!\"&=\x0146;\x01\x162730\x17\x06%2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015462\x16\x1d\x01\x06264&\"\x06\x14754&\"\x06\x1d\x01\x01\x15jKKjK \t\xfe\xe7\x14\x1cO7\x11#L#\x11\x0e\b\x01 \r\x13\x13\r\xe0\r\x13\x13\r /B/]\x1a\x13\x13\x1a\x13@\x13\x1a\x13\xc0KjKKj\x8b\xa0\x11\x0f\x1c\x14*7O\x10\x10\x02\x0e\x10\x13\r\xa0\r\x13\x13\r\xa0\r\x13P!//!P\x90\x13\x1a\x13\x13\x1a}P\r\x13\x13\rP\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x0f\x00\x17\x00+\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x06\"&462\x16\x14\a2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x1627\x02p\a\t\t\a\xc0\a\t\t\a\x9bjKKjK&7O\x1c\x14\xfe\xa0\x14\x1cO7\x11#L#\xf0\t\a \a\t\t\a \a\t0KjKKjkO7*\x14\x1c\x1c\x14*7O\x10\x10\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x10\x00%\x00-\x00\x00%\x1e\x01\x1d\x01\x14\x06#!\"&=\x01467\x17'47&52\x17>\x0332\x16\x14\x06#\"&'\x067\"\x06\x1534&#\x01E4G\x1c\x14\xfe\xa0\x14\x1cG4e\xc0++1\x1d\a\x18\x1d#\x135KK5,C\f\x1cg\r\x13\xa0\x13\r\x9f\x05L4*\x14\x1c\x1c\x14*4L\x05f\xc73\x1d\x1d3(\x10\x1b\x12\vKjK5)\x1e`\x13\r\r\x13\x00\x00\x00\x04\x00\x00\xff\xbd\x02\x80\x01\xc0\x00\x12\x00\x17\x00\x1f\x007\x00\x00%\x16\x15\x14\x0e\x03\a\x06'.\x0154?\x016\x17\a>\x017'&\"&462\x16\x14\a\x14\x16\x17\x06#!\"&=\x0146;\x01\x162732\x1630\x06\x02n\x12\x12\x1c$\"\x11\v\v5P\x12s\v\v\v!;\x04`\xdbjKKjK 7,\t\n\xfe\xa0\x14\x1cO7\x11#L#\x11\x01\x05\x01\x01\xb1\a\x12$@/&\x16\a\x04\x04\x15sN\x12\a-\x04\x04\xec\x0fN:&\x11KjKKjsDm#\x04\x1c\x14*7O\x10\x10\x01\x06\x00\x00\x00\x00\x02\xff\xf9\xff\xb9\x02\x81\x01\xc7\x00\x17\x00!\x00\x00\x05\x1e\x01\x0f\x01\x06'\x01&?\x016\x1f\x01>\x0232\x16\x15\x14\x06\a\x054>\x017\x05!\"&5\x02z\x05\x02\x04\x14\n\f\xfd\xb3\f\t\x14\n\r\x93\x03#8!5K0&\xfe\xf6\x1d3\x1f\x01\x1f\xfe\xa2\x14\x1c\n\x04\r\x05\x1a\f\n\x01\xc6\n\r\x19\f\tr 6\x1fK5)B\r\xae 9%\x06\xde\x1c\x14\x00\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x11\x00\x1d\x00+\x00@\x00\x00%\x16\x14\x0f\x01\x06\"/\x01&=\x0146;\x012\x17\a2>\x014.\x01#\"\x06\x14\x16'\".\x0154632\x1e\x01\x15\x14\x06\x17\x14\x1f\x01\x06#!\"&=\x0146;\x01\x162732\x17\x02w\t\n\\\t\x1b\t[\x12\x12\x0eO\x1b\x12\\\x06\v\a\a\v\x06\n\x0e\x0e\xd6#;\"K5#;\"KK\x1c:\x0f\x17\xfe\xa0\x14\x1cO7\x11#L#\x11\x11\x15S\t\x1b\t]\t\t[\x12\x1bO\r\x13\x13E\a\v\r\v\x06\x0e\x14\x0eX\";#5K\";#5Ko(\x1c:\x13\x1c\x14*7O\x10\x10\x06\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\a\x00\x1d\x00\x00$\"&462\x16\x14\a\x1e\x01\x1d\x01\x14\x06#!\"&=\x01467\x177'3\a\x17\x01\x15jKKjK 5K\x1c\x14\xfe\xa0\x14\x1cK50 ` \xc0KjKKjl\x02N5*\x14\x1c\x1c\x14*5N\x02\xbf\x8888\x88\x00\x00\x00\x06\x00\x00\xff\xe0\x02\x82\x01\xa0\x00;\x00C\x00K\x00b\x00\x85\x00\x93\x00\x00%\x17\x16\a\x06\a\x06/\x01\x06\a\x15\x14\a\x06'&=\x01&'\a\x06'&'&?\x01&7'&7676\x1f\x01675476\x17\x16\x1d\x01\x16\x1776\x17\x16\x17\x16\x0f\x01\x16\x06264&\"\x06\x14$\"&462\x16\x14\x17\"&5462\x16\x15\x14\a\"\x06\a'&#\"\a\x06\a\"\a\x17\x15\x14\x17#\"&=\x0146;\x01\x1632363\x16\x1f\x01\x06\x170#\x06\x17\x16\x17\x163273'\x0e\x01\a#\"&=\x0146;\x012\x02b\x1a\x05\x01\n\x18\x04\x05\x19\x11\x14\x06!!\x06\x14\x11\x1a\x05\x04\x17\n\x02\x06\x19\x04\x04\x19\x05\x01\n\x17\x04\x05\x1a\x11\x14\x06!!\x06\x14\x11\x19\x05\x04\x18\n\x01\x05\x1a\x04\x8a(\x1c\x1c(\x1c\xfe\xba4&&4&\xa0.BA]B\v\x01\x01\x01\b\t\n\x11\f\x17\r\x01\x02f\x06\xff\x14\x1cD/\t!#\x02\x05\x02\x01\x04\x06\b\x01\x01\x01#\n\f\x1c\f\x11\v\x10\x01\xf6\x1e(\x05B\r\x13&\x1a@\x1ak\x0f\x03\x06 \x19\x04\x02\x0f\x0e\a\x1e\x06\x01\a\a\x01\x06\x1e\a\x0e\x0f\x02\x04\x19 \x06\x03\x0f\x15\x15\x0f\x03\x06 \x19\x04\x02\x0f\x0e\a\x1e\x06\x01\a\a\x01\x06\x1e\a\x0e\x0f\x02\x04\x19 \x06\x03\x0f\x150\x1c(\x1c\x1c(t&4&&4FB..BB.\x19\x17\x01\x01\x05\x05\f\x19\"\x01\xc2\n\n\n\x1c\x14\x1d0C\x10\x01\x05\x04\x04\x04\x04\x12 '\x1f\f\t\xac\x10:#\x13\r \x1a&\x00\x00\x00\x00\x05\xff\xff\xff\xc0\x02\x80\x01\xc2\x00*\x00B\x00E\x00[\x00^\x00\x00!2\x16\x1d\x01\x14\x06+\x01\"&5\x11&'\a\x06&/\x01&6?\x01&54632\x1776\x16\x1f\x01\x16\x06\x0f\x01\x06\a\x11%\x14\x0e\x01#\"&505467>\x03762\x17\x16\x17\x16'3'\x05\x16\x17\x1e\x01\x15\x141\x14\x06\"&5054676762\a3'\x02\x10\a\t\t\a\xe0\a\t\a\x06\x8e\x06\f\x02\n\x03\x06\a\x80\x01/!.\x17v\x06\f\x02\n\x03\x06\a\x84\v \x01 \";#5K\n\x1e\x06\a\r\f\a\r<\rS\x01\x01ȐH\xfe\xab\x14\x1a\x1d\nKjK\n\x1e\x1a\x13\r\x00A\x00W\x00Z\x00\x00\x1746;\x01\x11&/\x01.\x01?\x01>\x01\x1f\x01632\x16\x15\x14\a\x17\x1e\x01\x0f\x01\x0e\x02/\x01\x06\a\x11\x14\x06+\x01\"&5'054676762\x17\x16\x17\x16\x15\x14\x06\"&73'\x01054676762\x17\x16\x17\x1e\x01\x15\x141\x14\x06\"&73'`\t\a\xb0 \v\x84\a\x06\x03\n\x02\f\x06v\x17.!/\x01\x80\a\x06\x03\n\x01\a\b\x04\x8e\x06\a\t\a\xe0\a\t`\n\x1c\x1b\x14\r<\rS\x01\x01KjK8\x90H\x01\x00\n\x1d\x1a\x14\r<\r\x13\x1a\x1e\nKjK8\x90H\x10\a\t\x01'\x0e!,\x03\v\a\x1e\x06\x06\x02'(/!\x02\b+\x02\f\x06\x1f\x04\x05\x02\x010\x04\x03\xfe\xa9\a\t\t\a\xc0\x01\t\x1596(\x1a\x1a\xa7\a\x02\x06!//1\x90\xfe\xe0\x01\t\x1695(\x1a\x1a&4<\x17\b\x01!//1\x90\x00\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x0f\x00\x17\x00;\x00?\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x16264&\"\x06\x14\x13\"\x1d\x01\x14;\x01\a#\"\x1d\x01\x14;\x01\a#\"\x1d\x01\x14;\x01\a!'#\"&=\x01463!\a\x053'#\x01\xa0\x1b%\x13\r\xfe\xc0\r\x13%\x1bs\x1a\x13\x13\x1a\x13H\b\b\x9e\x12\x8c\b\b\x84\x12r\b\bi\x11\xff\x00\tg\x14\x1c\x1c\x14\x01\xd0\x11\xfeQQ\vF@%\x1b \r\x13\x13\r \x1b%`\x13\x1a\x13\x13\x1a\x01\x8d\b\x10\b@\b\x10\b@\b\x10\b@`\x1c\x14\xa0\x14\x1c@\x80\x80\x00\x00\x00\x00\x02\x00\x00\xff\xdd\x02@\x01\xa1\x00\x11\x00\"\x00\x00\x016\x16\x15\x11\x14\x06#\x06\a\x06.\x015\x11476\a\x16\x15\x11\x14\x06'&'\"&5\x1146\x17\x16\x02\x1e\x0e\x14\x11\r\x8cO\x05\v\a\aM{\a\x0f\bO\x8c\r\x11\x14\x0e\x9a\x01\xa0\x01\x12\x0e\xfe\xae\f\x12\b'\x03\x02\t\x05\x01l\t\x04//\x04\t\xfe\x94\b\t\x04'\b\x12\f\x01R\x0e\x12\x01\t\x00\x00\x00\x00\x06\x00\x00\xff\xbe\x02\x80\x01\xc0\x00\x11\x00$\x009\x00K\x00i\x00l\x00\x00\x13\"'&476;\x012\x16\a\x06\x14\x17\x16\x06#'\x0e\x01\x16\x17\x16\x06+\x01\"'&476;\x012\x16%\x16\x14\a\x06+\x01\".\x017>\x01&'&>\x01;\x012\a2\x17\x16\x14\a\x06+\x01\"&764'&63\a\x13\x16\x06\x0f\x01\x06&/\x01#\a\x0e\x01/\x01.\x017\x13&54>\x012\x1e\x01\x15\x14\a3'\x97\f\x03\b\b\x03\f\"\b\t\x02\b\b\x02\t\b_\f\x0f\x04\x17\x04\t\t#\n\x04\x1b\x1a\x04\v#\t\t\x02\b\x1a\x1a\x04\v#\x06\t\x01\x02\x16\x05\x0f\f\x03\x02\t\x06#\vy\f\x03\b\b\x03\f\"\b\t\x02\b\b\x02\t\bR\x82\x03\x05\x06\x1e\x06\f\x031\x961\x03\f\x06\x1e\x06\x05\x03\x82\v\x11\x1e\"\x1e\x11p`0\x01\x00\v\x1a6\x1a\v\r\b\x15,\x15\b\r\xa9\x164]+\b\x0f\t9|9\t\x0f\x069|9\t\a\v\x06)[6\x17\x05\v\a@\v\x1a6\x1a\v\r\b\x15,\x15\b\rd\xfe\xc6\x06\f\x02\r\x02\x05\x06vv\x06\x05\x02\r\x02\f\x06\x01:\x10\x14\x11\x1e\x11\x11\x1e\x11\x14\xact\x00\x02\x00\x00\xff\xbd\x02\x87\x01\xc7\x00\x17\x00)\x00\x00%\x17\x14\x0e\x03\a\x0e\x01/\x016?\x016&\x0f\x0167>\x013%\x16\x0f\x01\x17\x16\x06\x0f\x01'7>\x01\x1f\x0176\x17\x01\x00W\x03\r\x0f\x1d\x10\x1b\x8565\x04\a_\x03\x06\x04<\x19\x1d\x1bQ\x1c\x01\x98\t\f\xe8\"\x03\x04\x06;V\x19\x03\f\x04\"\xe8\r\n\xe7m\x04\x0e)$*\r\x15\x11\x02\x02\x17 p\x04\b\x02\x16J\x17\x16\x14\xb9\r\t\xb2+\x05\f\x01\fm6\x06\x02\x05+\xb2\t\f\x00\x02\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\r\x00!\x00\x00\x13\x11#\x11463!2\x16\x15\x11#\x11\x132\x16\x1d\x01\x14\x06#!\"&=\x01463!53\x15`@\x17\x11\x01\xf0\x11\x17@P\a\t\t\a\xfd\xa0\a\t\t\a\x01\x10\xc0\x01\x80\xfe\xa0\x01x\x11\x17\x17\x11\xfe\x88\x01`\xfe\x80\t\a \a\t\t\a \a\t@@\x00\x00\x00\x00\x03\xff\xff\xff\xc0\x02\x80\x01\xc0\x00\x13\x00\x1b\x004\x00\x0072\x16\x15\x14\x06+\x01\"&54632\x17\x16276&\"&462\x16\x14\x012\x16\x15\x11\x14\x06+\x01&'353\x153\x11!\x15ᕗ\xd0/A\x1c\x14\xe0\x14\x1cA/\x04\x03\x15(\x15\x03\x04P88P8\x01P\x14\x1c\x1c\x14\xf5\t\x1eL\x80@\xfe\xa0\x1f!\x1c\x14`B/\x13\x1c\x1c\x13/B\x01\a\a\x01 8P88P\x01\b\x1d\x15\xfe\xc4\x15\x1d&\x1a@@\x01 2\x12.\x15\x1d\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x80\x01\xc0\x00-\x007\x00@\x00\x00%\x16\x1d\x01#54&\"\x06\x1d\x01#54?\x015#\"&=\x0146;\x01546;\x012\x16\x1d\x0132\x16\x1d\x01\x14\x06+\x01\x15\x0546?\x01\x15#\"&5%\x16\x1d\x01\x14\x06+\x015\x01\xd0\x10`%6%`\x10p0\a\t\t\a0\t\a \a\t0\a\t\t\a0\xfe\xa0\v\bmp\a\t\x02m\x13\t\ap\xc9\t\x12\xee`\x1b%%\x1b`\xee\x12\tD3\t\a \a\t0\a\t\t\a0\t\a \a\t3\xd9\t\x11\x03/\xc0\t\a\x81\b\x15d\a\t\xc0\x00\x00\x06\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\t\x00\x11\x00\x1f\x00(\x000\x008\x00\x005\x16 7\x15\x14\x06\"&5\x00\"&462\x16\x14\x05\x1e\x0132>\x017\x15\x14\x06\"&5%567\x15\x14\x0e\x02$2\x16\x14\x06\"&4\x05&'67\x15\x14\x06=\x01\x06=q\x9eq\x01\x8f\x9eqq\x9eq\xfe\x00\x1eh:&H>\x14q\x9eq\x01\xa0?!\x0e\x19#\xfe\xba\xa0pp\xa0p\x01\x9b\f0n37++++\x1a&&\x1a\x01@&4&&4\xd2\x19\x1b\v\x18\x114\x1a&&\x1a)?\v\x18+\t\x10\x0f\v\x93/B//B\t\"\x17\x05%+\x12\x1e\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00\x00\x122\x16\x14\x06\"&4\x174635\"\x06\x15\x16264&\"\x06\x1462\x16\x14\x06\"&4\x91Α\x91ΑX^BOq\x98P88P8S\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xcegB^ qO`8P88PH\x13\x1a\x13\x13\x1a\x00\x02\x00\x00\xff\xbc\x02\x80\x01\xc0\x00)\x001\x00\x00\x012\x16\x15\a\x15\x14\x06\a\x17\x16\x0f\x01\x06/\x01\"#\"+\x01\x17\x16\x0f\x01\x06/\x01#\a\x06&547\x0154632\x17\x06264&\"\x06\x14\x02 (8`M=)\x04\v\x16\f\x04,\x01\x02\x02\x01'&\x04\v\x16\f\x04,ay\x0f\x1d\f\x01t/!'\x19J\x14\x0e\x0e\x14\x0e\x01\xa0%\x1b\x10PAe\x12p\v\x04\b\x04\vxh\v\x04\b\x04\vx=\a\x11\x11\x0f\t\x01%\x15!/ H\x0e\x14\x0e\x0e\x14\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x0f\x00;\x00\x00!2\x16\x1d\x01\x14\x06#!\"&=\x01463\x002\x16\x14\x06#\"'\a!'\x06#\"&462\x16\x15\x14\a\x17\x166?\x01&5462\x16\x15\x14\a\x17\x1e\x01?\x01&54\x02\x10\a\t\t\a\xfe`\a\t\t\a\x01\xcc(\x1c\x1c\x14\x03\x05H\xfe\x80H\x05\x03\x14\x1c\x1c(\x1c\x04H\v\x1b\x06R\x12\x1c(\x1c\x12R\x06\x1a\fH\x04\t\a \a\t\t\a \a\t\x01@\x1c(\x1c\x01\xc1\xc1\x01\x1c(\x1c\x1c\x14\n\n+\a\a\v\x8f\x0f\x16\x14\x1c\x1c\x14\x16\x0f\x8f\v\a\a+\n\n\x14\x00\x00\b\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x10\x00\x18\x00(\x000\x008\x00@\x00H\x00P\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\"&=\x017>\x01'\x06264&\"\x06\x14'\x16\x14\x0f\x01\x06\"/\x01&4?\x0162\x17\x06264&\"\x06\x14\x16264&\"\x06\x146264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x14\x02P\x14\x1c\x1c\x14\xe0\x14\x1c\x88\x12\t\n\x03\x14\x0e\x0e\x14\x0e\x16\x0e\x0e\xaf\x0f(\x0f\xaf\x0e\x0e\xaf\x0f(\x0f\xad\x14\x0e\x0e\x14\x0e\x8e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x8e\x14\x0e\x0e\x14\x0e\x01\x00\x1c\x14\xe0\x14\x1c\x1c\x14.\x89\x121\x16\xb8\x0e\x14\x0e\x0e\x14\xad\x0f(\x0f\xaf\x0e\x0e\xaf\x0f(\x0f\xaf\x0e\x0e\xea\x0e\x14\x0e\x0e\x14\x8e\x0e\x14\x0e\x0e\x14r\x0e\x14\x0e\x0e\x14r\x0e\x14\x0e\x0e\x14\x8e\x0e\x14\x0e\x0e\x14\x00\x06\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x007\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x12264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x146264&\"\x06\x14\x01\x80\x1b%%\x1b\xfe\xc0\x1b%%\x1b3\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x01\xa0%\x1b\xfe\xc0\x1b%%\x1b\x01@\x1b%\xfe\xa0\x13\x1a\x13\x13\x1a\xad\x13\x1a\x13\x13\x1as\x13\x1a\x13\x13\x1as\x13\x1a\x13\x13\x1a\xad\x13\x1a\x13\x13\x1a\x00\x00\x05\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x12264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x146264&\"\x06\x14\x01\x80\x1b%%\x1b\xfe\xc0\x1b%%\x1b3\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\xd3\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x01\xa0%\x1b\xfe\xc0\x1b%%\x1b\x01@\x1b%\xfe\xa0\x13\x1a\x13\x13\x1a\xad\x13\x1a\x13\x13\x1a\xd3\x13\x1a\x13\x13\x1a\xad\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x17\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x12264&\"\x06\x14\x01\x80\x1b%%\x1b\xfe\xc0\x1b%%\x1b\x93\x1a\x13\x13\x1a\x13\x01\xa0%\x1b\xfe\xc0\x1b%%\x1b\x01@\x1b%\xff\x00\x13\x1a\x13\x13\x1a\x00\x00\a\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x007\x00?\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x12264&\"\x06\x146264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x146264&\"\x06\x146264&\"\x06\x14\x01\x80\x1b%%\x1b\xfe\xc0\x1b%%\x1b3\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\xd3\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x01\xa0%\x1b\xfe\xc0\x1b%%\x1b\x01@\x1b%\xfe\xa0\x13\x1a\x13\x13\x1aM\x13\x1a\x13\x13\x1aM\x13\x1a\x13\x13\x1a\xd3\x13\x1a\x13\x13\x1aM\x13\x1a\x13\x13\x1aM\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x17\x00\x1f\x00'\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x16264&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x14\x01\x80\x1b%%\x1b\xfe\xc0\x1b%%\x1b3\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13\x01\xa0%\x1b\xfe\xc0\x1b%%\x1b\x01@\x1b%\xa0\x13\x1a\x13\x13\x1as\x13\x1a\x13\x13\x1as\x13\x1a\x13\x13\x1a\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x17\x00\x1f\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x16264&\"\x06\x14\x16264&\"\x06\x14\x01\x80\x1b%%\x1b\xfe\xc0\x1b%%\x1b3\x1a\x13\x13\x1a\x13\xd3\x1a\x13\x13\x1a\x13\x01\xa0%\x1b\xfe\xc0\x1b%%\x1b\x01@\x1b%\xa0\x13\x1a\x13\x13\x1a\xd3\x13\x1a\x13\x13\x1a\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\a\x00\x0f\x00\x1f\x00\x0062\x16\x14\x06\"&46\"&462\x16\x14\x172\x16\x1d\x01\x14\x06#!\"&=\x01463\xc56%%6%[6%%6%\x80\r\x13\x13\r\xfe\x80\r\x13\x13\r`%6%%6\xe5%6%%6U\x13\r \r\x13\x13\r \r\x13\x00\x02\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x19\x00!\x00\x00!2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x11463!2\x16\x15\x11&264&\"\x06\x14\x02p\a\t\t\a\xfd\xa0\a\t\t\ap\x1c\x14\x01 \x14\x1cm\x1a\x13\x13\x1a\x13\t\a \a\t\t\a \a\t\x01\x8d\x15\x1e\x1e\x15\xfes\xa0\x13\x1a\x13\x13\x1a\x00\x00\x03\x00\x00\xff\xc0\x02\x80\x01\xc3\x00\x10\x00\"\x00*\x00\x00!2\x16\x1d\x01\x14\x06+\x01\x11#532\x16\x15\x11\x036\x16\x15\x11!\"&=\x0146;\x01\x11467\x16264&\"\x06\x14\x02p\a\t\t\a\x90`p\x14\x1c\xe8\x0f\x19\xfe\xb0\a\t\t\aP\x0e\n\x86\x14\x0e\x0e\x14\x0e\t\a \a\t\x01\x80@\x1d\x14\xfe\xb1\x01\xbf\x04\x14\x10\xfe!\t\a \a\t\x01m\v\x12\x03\xed\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x02\x00\x00\x000\x01\xc0\x01P\x00\x0f\x00\x1f\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x01463%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\xa0\r\x13\x13\r\xfe\x80\r\x13\x13\r\x01\x80\r\x13\x13\r\xfe\x80\r\x13\x13\r\x90\x13\r \r\x13\x13\r \r\x13\xc0\x13\r \r\x13\x13\r \r\x13\x00\x00\x00\x01\x00\x00\xff\xc0\x02\x05\x01\xc7\x00\"\x00\x00\x01\x1e\x01\x0f\x013\x06\x0f\x013\x0e\x02&'\a\x06\"&47\x016&\x0f\x01&67>\x017>\x01\x16\x01\xd3'\n!\x83b\b'\x93b\x1bGE:\x16B\a\x14\x0e\a\x01\x04\v\x17\v\xb3\x06\x1d)\a!.,_Q\x01\x93'g9,\b'1\x1a\x1f\b\x04\x06B\a\x0e\x14\a\x01\x03\f\x16\v\xb25t*\x06\"-,!\x13\x00\x00\x00\x02\xff\xff\xff\xe0\x02@\x01\xa0\x009\x00A\x00\x00\x01\x16\x17\x16\x15\x14\x06\x0f\x01\x1732\x16\x15\x14\x06+\x01'6.\x01'&\"\x0f\x01\x06\x16?\x016\x17\x1e\x01\x0f\x0132\x16\x15\x14\x06#!\"&54>\x037>\x012\x16\x06264&\"\x06\x14\x01\xbf:)\x1e\x11\r\x9ab6\r\x13\t\aZw\x02\x11\x11\t\x1bF\x1c#\f\x13\r #& \x14\x13#O\r\x13\t\a\xfe\xd0\x1a&\x1c5HX0\x06,:,S\x14\x0e\x0e\x14\x0e\x01_\x14\x16\x10#\x0e\x1e\aVi\x13\r\a\t~\x18,\x13\x06\x15\x15\x1a\n\x19\t\x19\x1a\x0f\x0eB\x1b0\x13\r\a\t%\x1a1]L<%\x04\x1d%%C\x0e\x14\x0e\x0e\x14\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x0f\x00@\x00D\x00\x00!2\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\x16\x1d\x01\x14\x06'.\x01=\x014&+\x01\x15!\x1146;\x012\x16\x1d\x0132\x16\x1d\x01\x14\x1626=\x01.\x01=\x01'&4?\x0162\x17\a5#\x15\x01P\a\t\t\a\xfe\xc0\a\t\t\a\x01\xdd\x13/!\x1b%\x17\x11\b\xfe\xe0&\x1a\xa0\x1a&\b$4\x0e\x14\x0e\x14\x1c&\x04\x04\f\x04\x0e\x04\x9c\xa0\t\a \a\t\t\a \a\t\x01U\x13\x1b\xdf +\x03\x03,\x1d\x1c\x11\x17p\x01`\x1a&&\x1a\xc04$ \n\x0e\x0e\n\xa1\x03\x1f\x15>&\x04\x0e\x04\f\x04\x04\xa6\x80\x80\x00\x00\x03\x00\x00\xff\xe0\x02@\x01\xa8\x00C\x00P\x00]\x00\x00%\x16\x1d\x01\x14\x06+\x01\"&/\x01#\a\x0e\x01+\x01\"&=\x014?\x01>\x01\x1f\x01\x1e\x01\x0f\x01\x0e\x01/\x01&\a\x06\x0f\x01632\x173632\x17'&'&\x0f\x01\x06&/\x01&6?\x016\x16\x17\x017&#\"\a\x15\x14\x16;\x0126%5&#\"\a\x17\x1e\x01;\x0126\x02>\x02C0%.B\x03\x03$\x03\x03B.%0C\x02-\nC$\x10\x06\x06\x02\x05\x02\f\x06\x0e\x12\x0f\x10\x04'));7J7;))'\x04\x10\x0f\x12\x0e\x06\f\x02\x05\x02\x06\x06\x10$C\n\xfe\xba\x04##%$\x1e\x15%\x14\x1e\x016$%##\x04\x01\x1e\x14%\x15\x1e\xa8\b\bF/C=,'',=C/F\b\b\xb5&%\r\x05\x02\f\x06\x0f\x06\x06\x02\x04\x06\a\t\x11\x9a\f\x1a\x1a\f\x9a\x11\t\a\x06\x04\x02\x06\x06\x0f\x06\f\x02\x05\r%&\xfe\xf1)\r\r%\x15\x1d\x1b\x17%\r\r)\x13\x1b\x1d\x00\x00\x00\x00\x01\xff\xfd\xff\xfd\x01\x81\x01\x83\x00\x17\x00\x00%\x16\x1d\x01\x14\x06\a\x05\x06&/\x01&6?\x01'.\x01?\x01>\x01\x17\x01n\x12\v\a\xfe\xcd\f\x19\x05\x0e\x06\t\f\xdb\xda\r\t\x06\x0e\x05\x19\f\xee\b\x15\"\t\x11\x03\x8f\x06\t\f\x1d\f\x19\x06ff\x05\x19\f\x1d\r\t\x06\x00\x00\x00\x00\x02\x00\x00\xff\xd0\x01\xc0\x01\xb3\x00\x18\x00(\x00\x00\x13.\x03?\x01>\x01\x17\x05\x16\x1d\x01\x14\a\x05\x06&/\x01&6?\x01\x172\x16\x1d\x01\x14\x06#!\"&=\x014637\a\n\x05\x01\x02\f\x05\x1b\r\x01.\x17\x17\xfe\xd3\x0e\x1b\x05\f\x05\r\r\xb0\xc1\n\x0e\x0e\n\xfep\n\x0e\x0e\n\x01T\x03\b\v\r\x06\x1e\f\f\x05x\a\x17\x10\x17\ax\x05\f\f\x1e\r\x18\x04D\xe0\x0e\n0\n\x0e\x0e\n0\n\x0e\x00\x00\x03\xff\xfe\xff\xc0\x02\x81\x01\xc0\x00&\x00,\x00>\x00\x00%\"/\x03&6;\x012\x1f\x0135#\"&=\x01463!2\x16\x1d\x01\x14\x06+\x01\x152\x16\x15\x14\x06#'\x153.\x02\x13\x16\x14\a\x06#!\"&=\x01463!26\x17\x010\x10\nV\xa0 \x01\t\b(\b\x05+а\a\t\t\a\x01\xa0\a\t\t\a\xb0]\x83\x13\r\xa0}\a#4\xbc\x05\x06!#\xfe\xba\a\t\t\a\x01F\r\x17\v@\rs@l\b\f\x06:@\t\a \a\t\t\a \a\t@\x83]\r\x13\xbc|\x1f4#\xfe\xff\x05\x0e\x04\x1e\t\a \a\t\x16\v\x00\x00\x00\x00\x03\x00\x00\x00 \x02\x80\x01`\x00\x11\x00\x1c\x00)\x00\x00\x012\x16\x14\x06#\"'\x06#\"&4632\x176\a27&#\"\x0e\x01\x15\x14\x16!2>\x0354&#\"\a\x16\x01\xd7FccFQFFQFccFQFF\xdd////\x14!\x14+\x01L\f\x16\x12\x0e\a+\x1e///\x01`^\x84^OO^\x84^OO\xe0@@\x11\x1e\x11\x1a&\x06\f\x10\x14\n\x1a&@@\x00\x00\x00\x00\x03\xff\xff\xff\xe0\x02@\x01\xae\x004\x00@\x00D\x00\x00%\x15\x14\a\"#\"/\x01\x06#\"\a\x06\a\x15\x14\x06+\x01\"&=\x01\x06#\"'\x15\x14\x06+\x01\"&=\x01.\x0154>\x0376\x17\x16;\x012\x16\x06264&#\"\x0e\x02\x15\x14\x175\x06\a\x02@\f\x02\x02\n\x04J\f\fLL\x11\x17\t\a\x10\a\t\x0e\x02\x18\x18\t\a\x10\a\t,4\x1c$0\x1a\tTFCP\n.Ew\x14\x0e\x0e\n\x05\t\x06\x04h\x11\x17\xe6\xf6\f\x04\b\x89\x011\v\t;\a\t\t\a1\x01\x066\a\t\t\aJ\x19Y4)D&\x1c\n\x02\x130.=K\x0e\x14\x0e\x04\x06\t\x05\n\xa7c\x11\t\x00\x01\x00\x00\xff\xfd\x01\x83\x01\x83\x00\x17\x00\x00%\x1e\x01\x0f\x01\x0e\x01'%&=\x01467%6\x16\x1f\x01\x16\x06\x0f\x01\x01m\r\t\x06\x0e\x05\x19\f\xfe\xcd\x12\v\a\x013\f\x19\x05\x0e\x06\t\f\xdbZ\x05\x19\f\x1d\r\t\x06\x8f\b\x15\"\t\x11\x03\x8f\x06\t\f\x1d\f\x19\x06f\x00\x00\x00\x02\x00\x00\xff\xd0\x01\xc0\x01\xb3\x00\x16\x00&\x00\x007&=\x0147%6\x16\x1f\x01\x16\x06\x0f\x01\x17\x1e\x01\x0f\x01\x0e\x01'\x172\x16\x1d\x01\x14\x06#!\"&=\x014637\x17\x17\x01.\r\x1b\x05\f\x05\r\r\xb0\xb0\r\r\x05\f\x05\x1b\x0eD\n\x0e\x0e\n\xfep\n\x0e\x0e\n\xea\a\x17\x10\x17\ax\x05\f\f\x1e\f\x18\x05DD\x04\x18\r\x1e\f\f\x05B\x0e\n0\n\x0e\x0e\n0\n\x0e\x00\x00\x00\x00\x05\x00\x00\x00\x00\x02\x80\x01\x80\x00\x18\x00\x1c\x00 \x00$\x00H\x00\x00\x01\x0e\x03\x15\x14\x16\x17\x15!5>\x014&'5463!2\x16\x15\x055#\x1535#\x1535#\x15\x055!\x15#54&\"\x06\x1d\x01#54&\"\x06\x1d\x01#54&\"\x06\x1d\x01#54&\"\x06\x1d\x01\x02\x80\a\f\b\x05\x12\x0e\xfd\x80\x0e\x12\x12\x0e\x13\r\x02@\r\x13\xfe`@\xc0@\xc0@\xfe`\x02\x80@\t\x0e\t\x80\t\x0e\t\x80\t\x0e\t\x80\t\x0e\t\x01=\x02\t\f\x0e\b\x0f\x19\x05cc\x05\x19\x1e\x19\x05#\r\x13\x13\r\xa0\x80\x80\x80\x80\x80\x80\xc0``\x1b\x06\n\n\x06\x1b\x1b\x06\n\n\x06\x1b\x1b\x06\n\n\x06\x1b\x1b\x06\n\n\x06\x1b\x00\x02\xff\xf9\xff\xb9\x02\x87\x01\xc7\x005\x00U\x00\x00\x05\x16\x0f\x01\x06'\x01&?\x016\x1f\x015462\x16\x15#\"\x1d\x01\x14;\x01\x15#\"\x1d\x01\x14;\x01\x15#\x173\x14\a\x176=\x0146;\x012\x16\x1d\x01\x14\x0f\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015.\x01=\x01\x17\x1e\x01\x17\x167\x17\x06\a\x15\x02z\f\t\x14\n\f\xfd\xb3\f\t\x14\n\f\xb38P8U\v\vUU\v\vUU),\x05\x1a\v\t\a\x10\a\t\x14L\a\t\t\a\xa0\a\t\t\a8AW4\n<)\a\x0e2\x10\x12\n\n\r\x19\f\t\x01\xc7\n\r\x19\f\t\x8a-(88(\b\x10\b \b\x10\b \x0e\x10\x14\x18\x1a0\a\t\t\a0*&\x80\t\a\x10\a\t\t\a\x10\a\t\"\tiD\a)(9\x04\x01\x01'\x06\x02\"\x00\x00\x00\x00\x06\x00\x00\xff\xe0\x02\x81\x01\xa1\x00\x1e\x00&\x00,\x004\x00:\x00@\x00\x00\x01\x16\x15\x11\x14\x0e\x01#\"'&#\"\x06#\"'&5\x114632\x17\x1632632\x05\x152>\x027&\x03\x16\x17.\x01#6264&\"\x06\x14\x055\x0e\x01\a\x1675&'\x1e\x01\x02m\x13\t\x0f\b\x05\x06+1>\xf6>?5\x13\x13\r\x05\x06+1>\xf6>?\xfd\xf8\v\x16\x10\f\x02$\x1b\x1e\"\x01%\x1a\xefB//B/\x01`\x14\x1e\x04\x1f\x17\x1a\x1e\x01 \x01\x8a\b\x16\xfe\xc3\t\x0f\b\x02\r>\x16\b\x16\x01=\x0e\x12\x02\r>d=\b\x0e\x13\v\x02\xfe\xea\v\x03\x1a$\x118P88PT:\x03\x1b\x13\x03\xe61\n\x03\x18#\x00\x00\x00\x02\x00\x00\xff\xe0\x02\x81\x01\xa1\x00\x1e\x00&\x00\x00\x01\x16\x15\x11\x14\x0e\x01#\"'&#\"\x06#\"'&5\x114632\x17\x1632632\x00264&\"\x06\x14\x02m\x13\t\x0f\b\x05\x06+1>\xf6>?5\x13\x13\r\x05\x06+1>\xf6>?\xfe\xe7B//B/\x01\x8a\b\x16\xfe\xc3\t\x0f\b\x02\r>\x16\b\x16\x01=\x0e\x12\x02\r>\xfe\xc08P88P\x00\x00\x00\x00\x06\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\t\x00\x19\x00%\x001\x00=\x00G\x00\x001\x11!\x11\x14\x06#!\"&%\x15\x14\x16;\x0126=\x014&+\x01\"\x06\x1d\x01\x14;\x012=\x014+\x01\"%\x15\x143!2=\x014#!\"\x1d\x01\x14;\x012=\x014+\x01\"\x012\x16\x1d\x01!5463\x02\x80\x13\r\xfd\xc0\r\x13\x01\xc0\t\a`\a\t\t\a`\a\t\bp\b\bp\b\xfe\x80\b\x010\b\b\xfe\xd0\b\b\xb0\b\b\xb0\b\x020\a\t\xfd\x80\t\a\x01@\xfe\xc0\r\x13\x13\xdd \a\t\t\a \a\t\t\u007f\x10\b\b\x10\bX\x10\b\b\x10\bh\x10\b\b\x10\b\x01@\t\a00\a\t\x00\x00\x00\x00\x05\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\x0f\x00K\x00W\x00c\x00o\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x132>\x0254&/\x01&546;\x012\x17\x16?\x016'&'54+\x01\"\x1d\x01\x0e\x01\x15\x14\x16\x1f\x01\x16\x15\x14\x06+\x01\"'&\x0f\x01\x06\x17\x16\x17\x15\x14;\x0125754+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012=\x014#!\"\x1d\x01\x143!2\x02`\r\x13\x13\r\xfd\xc0\r\x13\x13\r\x90\t\x10\v\a\x12\x0e-\t\a\x05\x1c\a\x06\x06\x04\f\a\b\x0e\x11\b\x10\b\x12\x19\x12\x0e-\t\a\x05\x1c\a\x06\x06\x04\f\a\b\x0e\x11\b\x10\b\xf0\bp\b\bp\b\xa0\bP\b\bP\b\b\xfe\xf0\b\b\x01\x10\b\x01\xa0\x13\r\xfe\x80\r\x13\x13\r\x01\x80\r\x13\xfe\xd8\b\f\x10\t\x0f\x18\x05\r\x03\n\x05\b\x04\x03\x04\v\a\x05\v\x01\x10\b\b\x10\x01\x1a\x12\x0f\x18\x05\r\x03\n\x05\b\x04\x03\x04\v\a\x05\v\x01\x10\b\b \x10\b\b\x10\b\b\x10\b\b\x10\bh\x10\b\b\x10\b\x00\x01\x00\x00\xff\xb9\x01\xc6\x01\xc7\x003\x00\x00%#\a32\x16\x1d\x01\x14\x06+\x01\a\x06/\x01&?\x01#\"&=\x0146;\x017#\"&=\x01463!76\x1f\x01\x16\x0f\x0132\x16\x1d\x01\x14\x06\x01\xa0bK\xad\r\x13\x13\r\xf7S\t\r\x19\r\n37\r\x13\x13\r\x82K\xcd\r\x13\x13\r\x01\x17R\n\r\x19\r\n4\x18\r\x13\x13\xf0`\x13\r \r\x13j\f\t\x14\t\rC\x13\r \r\x13`\x13\r \r\x13j\f\t\x14\t\rC\x13\r \r\x13\x00\x00\x00\x00\x05\xff\xf7\xff\xba\x02\x00\x01\xcb\x00\x15\x00\x1d\x00%\x00-\x005\x00\x00\x136\x1e\x01\x15\x14\x06+\x01\"\x06\x17\x16\x06\a\x06.\x027>\x01\x02264&\"\x06\x146264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x14\xccP\x8fU&\x1bP&(\x11\x0f\x1a\x1f/hP)\r\x0fn/\x1a\x13\x13\x1a\x133\x1a\x13\x13\x1a\x13\x93\x1a\x13\x13\x1a\x13\x93\x1a\x13\x13\x1a\x13\x01\xbb\x10=\u007fN\x1b&@\"\x1c;\x05\a*P}CJm\xfe\xd4\x13\x1a\x13\x13\x1am\x13\x1a\x13\x13\x1a-\x13\x1a\x13\x13\x1aS\x13\x1a\x13\x13\x1a\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\"\x00*\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x13264&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x0172\x16\x14\x06+\x015\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\xc0(88(`\a\t\t\a \a\t0\r\x13\x13\r0\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xe08P8\t\a\xe0\a\t\t\a0\x80\x13\x1a\x13@\x00\x03\xff\xff\x00\x00\x01\x80\x01\x81\x00\a\x00\x0f\x00\x1f\x00\x00\x12\x06\"&462\x1e\x02\x14\x06\"&467\x16\x14\a\x01\x06\"/\x01&47\x0162\x17\x80%6%%6%\xdb%%6%%F\n\n\xfe\xee\n\x1a\n\x16\n\n\x01\x12\n\x1a\n\x01%%%6%%\xdb%6%%6%\xd5\n\x1a\n\xfe\xee\n\n\x16\n\x1a\n\x01\x12\n\n\x00\x03\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x0f\x00$\x004\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x03\x153\x15#\x15\x17\"\a'#\"&=\x0146;\x012\x16%2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x01\x80\r\x13\x13\r\x80\r\x13\x13\r@\xe0\xe0@$\x13I`\r\x13\x13\r\x80\r\x13\x01\xa0\r\x13\x13\r\x80\r\x13\x13\r\x80\x13\r\x80\r\x13\x13\r\x80\r\x13\x01 @0p \x80\x13\r\x80\r\x13\x13\x13\x13\r\x80\r\x13\x13\r\x80\r\x13\x00\x04\x00\x00\xff\xbd\x01\x80\x01\xc3\x00%\x001\x00=\x00I\x00\x00\x016\x16\x15\x11\x14\x06/\x01\a\x06\"/\x01\a\x06\"/\x01\a\x06&5\x1146\x1f\x01762\x1f\x01762\x1f\x01\x1154+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x01f\b\x12\x12\b&6\x05\n\x0566\x05\n\x056&\b\x12\x12\b&6\x05\n\x0566\x05\n\x056\b\xf0\b\b\xf0\b\b\xf0\b\b\xf0\b\b\xf0\b\b\xf0\b\x01\xbd\x06\t\n\xfe \n\t\x06--\x03\x03--\x03\x03--\x06\t\n\x01\xe0\n\t\x06--\x03\x03--\x03\x03-\xfe\xc8\x10\b\b\x10\bh\x10\b\b\x10\bh\x10\b\b\x10\b\x00\x00\x00\x00\b\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\t\x00!\x00+\x00/\x003\x00=\x00A\x00K\x00\x0073\x15#\"&=\x0146%\x11\x14\x06#!\"&5\x1146;\x015462\x16\x1d\x0132\x16\x054&\"\x06\x14\x16326\a#\x1537#\x15374&\"\x06\x14\x16326\a#\x1537\x15\x14\x06+\x01532\x16 \r\x13\x13\x02\r&\x1a\xfe\xc0\x1a&/!p\x13\x1a\x13p!/\xfe\xe8\x17\"\x17\x17\x11\x11\x17\b@@`@@h\x17\"\x17\x17\x11\x11\x17\b@@\xc0\x13\r \r\x13\xe0\xc0\x13\r\x80\r\x130\xfe\xf0\x1a&&\x1a\x01\x10!/@\r\x13\x13\r@/q\x11\x17\x17\"\x17\x17o \xa0\x11\x17\x17\"\x17\x17o \xa0\x80\r\x13\xc0\x13\x00\x00\x01\xff\xfd\xff\xcd\x02\x83\x01\xb3\x007\x00\x00\x01\x16\x06\a\x01\x06&/\x01&6?\x01\x17\x16?\x016/\x017\x17\x16?\x016/\x017\x17\x16?\x016/\x017\x17\x16?\x016/\x017\x17\x16?\x016/\x0176\x16\x17\x02|\x06\a\v\xfe\x0f\v\x1a\x06P\x06\x06\fE<\x04\a\r\a\x04<8\x1c\x04\x06\x0e\a\x04\x1c7<\x04\a\x0e\a\x04<7\x1c\x04\a\x0e\a\x04\x1c7<\x04\a\r\a\x04;E\v\x1a\x06\x01\x19\v\x1a\x06\xfe\xe6\x06\x06\f\x87\v\x19\a'e\a\x04\b\x04\x06f\x1f/\a\x04\b\x04\x060\x1ff\x06\x03\b\x04\af\x1f/\a\x04\b\x04\x060\x1ff\x06\x03\b\x04\af'\x06\x06\f\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00#\x00G\x00\x007\x15\a&5\x1146;\x012\x16\x1d\x01#\"\x1d\x01\x14;\x01\x15#\"\x1d\x01\x14;\x01\x15#\"\x1d\x01\x143\x052\x16\x1d\x01\x14\x06#!\"'73\x15\x14;\x012=\x013\x15\x14;\x012=\x013\x15\x14;\x012=\x01\xa0\x9e\x02\x13\r`\r\x138\b\b88\b\b88\b\b\x01x\r\x13\x13\r\xfe@\x02\x06\x9f)\b\x10\b@\b\x10\b@\b\x10\b\xa0)\x9f\x06\x02\x01\xc0\r\x13\x13\r \b\x10\b@\b\x10\b@\b\x10\b@\x13\r`\r\x13\x02\x9e8\b\b88\b\b88\b\b8\x00\x00\x00\x00\x01\x00\x00\x00@\x02@\x01@\x007\x00\x00\x012\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x15\x14;\x012=\x013\x15\x14;\x012=\x013\x15\x14;\x012=\x013\x15\x14;\x012=\x013\x15\x14;\x012=\x01\x02 \r\x13\x13\r\xfe\x00\r\x13\x13\r0\b\x10\b@\b\x10\b@\b\x10\b@\b\x10\b@\b\x10\b\x01@\x13\r\xc0\r\x13\x13\r\xc0\r\x13X\b\bXX\b\bXX\b\bXX\b\bXX\b\bX\x00\x00\x00\x01\x00\x00\xff\xc0\x01\x00\x01\xc0\x00/\x00\x0073\x15\x14\x06+\x01\"&5\x1146;\x012\x16\x1d\x01#\"\x1d\x01\x14;\x01\x15#\"\x1d\x01\x14;\x01\x15#\"\x1d\x01\x14;\x01\x15#\"\x1d\x01\x14\xa8X\x13\r\xc0\r\x13\x13\r\xc0\r\x13X\b\bXX\b\bXX\b\bXX\b @\r\x13\x13\r\x01\xc0\r\x13\x13\r@\b\x10\b@\b\x10\b@\b\x10\b@\b\x10\b\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\t\x00\x19\x00/\x007\x00A\x00\x00546;\x01\x11#\"&5\x012\x1d\x01\x14+\x01\"=\x014;\x012\x1d\x017\x16\x15\x11#54&+\x01\"\x06\x1d\x01#\x114?\x0162\x17\x06264&\"\x06\x14%2\x16\x15\x11\x14\x06+\x01\x11\x13\r@P\a\t\x01h\b\b0\b\b\x10\b\xa2\x0e\x80\t\a`\a\t\x80\x0e\xa0\b\x14\b3B//B/\x01p\r\x13\t\aP\xe0\r\x13\xfe\xc0\t\a\x01@\b\x10\b\b@\b\b(@\n\x11\xfe\x8b\x90\a\t\t\a\x90\x01u\x11\nk\x05\x05\xfb/B//B\x11\x13\r\xfe\xf0\a\t\x01@\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\t\x00\x17\x00\x00\x01\x17\a#\a.\x01'75\a62\x16\x14\x0f\x01\x06\"/\x01&47\x01\xc0@`>S\a\x10\vS\xc0\x16>+\x16u\v\x1e\v5\v\v\x01\xc0@\x80S\v\x10\aS>\xb7\x16+>\x16u\v\v5\v\x1e\v\x00\x04\x00\x00\xff\xbd\x02\x80\x01\xc3\x00\a\x00\x0f\x00!\x004\x00\x00\x13\"&46;\x01\x15\x0246;\x01\x15#\"%2\x16\x15\x14\x06\a\x06'&/\x0152>\x0176\x13\x1e\x01\x15\x14\x0e\x01#\"'.\x02#57676\xc0\x1b%%\x1b \xe0%\x1b \x1b\x01,IfHM-4#-:\x1c+\x0f\x130\xd2MH2N/80\x13\x0f+\x1c:-#3\x01 %6%\x80\xfe\xe56%\x80\xc02.&B\x11\n\x04\x02\r\x10\x80\v\t\f \x01\x19\x11B&\x1f,\x15 \f\t\v\x80\x10\r\x02\x04\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00*\x002\x00:\x00\x00\x122\x16\x15\x14\x0e\x01\a\x06\x1f\x01\x16\x0e\x02+\x0154+\x01\"\x1d\x01#54+\x01\"\x1d\x01#\"&?\x016'.\x0154\x16264&\"\x06\x14\x16264&\"\x06\x14\x96Ԗ\x17*\x1d\x11\x03\t\x01\x02\x04\a\x03N\b\x10\b@\b\x10\bN\a\t\x01\t\x03\x11,2\x864&&4&\xe64&&4&\x01\xc0\x83]\"A6\x15\v\x13B\x03\a\x05\x038\b\b88\b\b8\v\aB\x13\v Z4]\xbd&4&&4&&4&&4\x00\x00\x06\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\t\x00\x11\x00\x19\x00\x1d\x00/\x00J\x00\x007546;\x01\x17#\"&\x122\x16\x14\x06\"&4\x0127\x01\x06\x15\x14\x167\x1735\x17654&#\"\a\x1732\x16\x1d\x01\x14\x06+\x01'2\x16\x17\x14\x0e\x02+\x01\"'.\x01#\".\x01'46;\x012\x17\x1e\x01`\t\a\x16`v\a\t6Ԗ\x96Ԗ\x01\x00=2\xfe\xf5$q| 3\x1c$qO=2|\x83\a\t\t\a#,\x18#\x04\x01\x02\x03\x02\x10\a\x01\x02\x12\v\x10\x1c\x11\x03\x05\x03\x11\x06\x01\x02\x12\x90@\a\t`\t\x017\x96Ԗ\x96\xd4\xfe\xd6$\x01\v2=Oq\xc0 o2=Oq$|\t\a@\a\t\xc0\x1f\x18\x01\x04\x02\x02\x06\v\x0f\x0e\x19\x10\x03\x06\x06\v\x0f\x00\x02\xff\xf4\xff\xc0\x02t\x01\xc0\x00\x1a\x003\x00\x00\x01\x16\x06\a\x06#\"'\x06\"'\x06\"'\x06#\"'.\x01?\x0163!2\x17\x032767\x15\x14\x06#!\".\x01=\x01\x16\x17\x16327\x15!5\x16\x02Z\x1a&/\a\a,\x1d\x1eX\x1e\x1eX\x1e\x1d-\x06\a/&\x1aA\t\x12\x01\x94\x12\t\a\t\t\a\t\x13\r\xfe@\t\x0e\t\t\a\t\t\r\x11\x01\x80\x10\x01I(Z\x06\x01!!!!!!\x01\x06Z(h\x0f\x0f\xfe\xef\x01\x01\x03\xc5\r\x13\t\x0e\t\xc5\x03\x01\x01\x04dd\x04\x00\x03\xff\xfa\xff\xc0\x02\x86\x01\xc0\x00\r\x00\x1b\x00%\x00\x00%53\x11\x14\x06#!\"&5\x113\x15%\x16\x06#!\"&?\x0163!2\x17\x03\x113\x11\x14\x06+\x01\"&\x01@@\x13\r\xff\x00\r\x13@\x01\xfb\n\x12\x13\xfd\xc0\x13\x12\vU\t\x11\x01\x96\x11\t%@\t\a \a\t@\xa0\xff\x00\r\x13\x13\r\x01\x00\xa0\xf2\x10\"\"\x10\x80\x0e\x0e\xfe\x1e\x01\x10\xfe\xf0\a\t\t\x00\x00\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x1f\x00/\x00\x00\x13\"&=\x01463!2\x16\x1d\x01\x14\x06#\x172\x16\x1d\x01\x14\x06#!\"&=\x01463\x052\x16\x1d\x01\x14\x06#!\"&=\x01463\x10\a\t\t\a\x01\xa0\a\t\t\a@\a\t\t\a\xfe`\a\t\t\a\x01`\a\t\t\a\xfe`\a\t\t\a\x01@\t\a@\a\t\t\a@\a\tP\t\a@\a\t\t\a@\a\t\xb0\t\a@\a\t\t\a@\a\t\x00\x00\x00\x06\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x03\x00\a\x00\v\x00\x13\x00\xb0\x00\xb4\x00\x007\x17\a'7\a'7\a7\x17\a\x022\x16\x14\x06\"&4\x0564/\x0176/\x01&\x0f\x01'7\x17\x16?\x016/\x0176/\x01&\x0f\x01'&\x0f\x01\x06\x1f\x01\a'76/\x01&\x0f\x01'&\x0f\x01\x06\x1f\x01\a'76/\x01&\x0f\x01'&\x0f\x01\x06\x1f\x01\a\x06\x1f\x01\x16?\x01\x17\a'&\x0f\x01\x06\x1f\x01\a\x06\x1f\x01\x16?\x01\x17\a'&\x0f\x01\x06\x1f\x01\a\x06\x1f\x01\x16?\x01\x17\x16?\x016/\x017\x17\a\x06\x1f\x01\x16?\x01\x17\x16?\x016/\x017\x17\a\x06\x1f\x01\x16?\x01\x17\x16?\x016/\x0176/\x01&\x0f\x01'7\x17\x167'7\x17\a\xbc---\x9e-------jԖ\x96Ԗ\x01\xbb\x02\x02\x1d\x1d\x05\x05\f\x05\x06\x1c.\"\x11\x06\x06\v\x06\x06\x11\x11\x06\x06\v\x06\x06\x11\x11\x05\x06\v\x06\x06\x11\"-\x1c\x06\x06\v\x06\x06\x1c\x1c\x06\x06\v\x06\x06\x1c-\"\x11\x06\x06\v\x06\x05\x11\x11\x06\x06\v\x06\x06\x11\x11\x06\x06\v\x06\x06\x11!-\x1c\x06\x05\f\x05\x05\x1d\x1d\x05\x05\f\x05\x06\x1c.\"\x11\x06\x06\v\x06\x06\x11\x11\x06\x06\v\x06\x06\x11\x11\x05\x06\v\x06\x06\x11\"-\x1c\x06\x06\v\x06\x06\x1c\x1c\x06\x06\v\x06\x06\x1c-\"\x11\x06\x06\v\x06\x05\x11\x11\x06\x06\v\x06\x06\x11\x11\x06\x06\v\x06\x06\x11!-\x1c\x06\x05\x98---\xed---D---\xb5---\x01q\x96Ԗ\x96Ԓ\x03\x06\x03\x1c\x1c\x06\x06\v\x06\x06\x1c-\"\x11\x06\x06\v\x06\x05\x11\x11\x06\x06\v\x06\x06\x11\x11\x06\x06\v\x06\x06\x11!-\x1c\x06\x05\f\x05\x05\x1d\x1d\x05\x05\f\x05\x06\x1c.\"\x11\x06\x06\v\x06\x06\x11\x11\x06\x06\v\x06\x06\x11\x11\x05\x06\v\x06\x06\x11\"-\x1c\x06\x06\v\x06\x06\x1c\x1c\x06\x06\v\x06\x06\x1c-\"\x11\x06\x06\v\x06\x05\x11\x11\x06\x06\v\x06\x06\x11\x11\x06\x06\v\x06\x06\x11!-\x1c\x06\x05\f\x05\x05\x1d\x1d\x05\x05\f\x05\x06\x1c.\"\x11\x06\x06\v\x06\x06\x11\x11\x06\x06\v\x06\x06\x11\x11\x05\x06\v\x06\x06\x11\"-\x1c\x06\x063---\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00+\x00/\x00M\x00\x00%\x16\x1d\x01#54&+\x01\"\x06\x1d\x01#54&+\x01\"\x06\x1d\x01#54?\x016;\x01546;\x012\x16\x1d\x0132\x17'5#\x15\x1753\x15\x14\x06#!\"&=\x013\x15\x14\x16;\x0126=\x013\x15\x14\x16;\x0126\x01\xf7\t\x80\t\a \a\t\x80\t\a \a\t\x80\t.\t\r3\x1c\x14\xa0\x14\x1c3\r\t\x89\x80\xc0\x80\x13\r\xfe@\r\x13\x80\t\a \a\t\x80\t\a \a\t\xe9\t\rS\x10\a\t\t\a\x10\x10\a\t\t\a\x10S\r\t.\tP\x14\x1c\x1c\x14P\t\t@@\xd0\x10`\r\x13\x13\r`\x10\a\t\t\a\x10\x10\a\t\t\x00\x01\xff\xfe\xff\xc0\x02\x82\x01\xc0\x00%\x00\x00\x01\x1e\x01\x0f\x01\x0e\x01/\x01&\x06\x1d\x01\x14\x06#!\"&=\x014&\x0f\x01\x06&/\x01&6?\x01\x1e\x01267\x02w\x06\x04\x039\x03\r\x059\b\x0f\x13\r\xff\x00\r\x13\x0f\b9\x06\f\x039\x03\x04\x06\xc3\x0f?L?\x0f\x01`\x03\r\x06r\x06\x05\x03\x1c\x04\t\t\xfe\r\x13\x13\r\xfe\t\t\x04\x1c\x03\x05\x06r\x06\r\x03`\x15\x1a\x1a\x15\x00\x00\x00\x00\x03\x00\x00\xff\xbd\x01C\x01\xc0\x00\a\x00:\x00I\x00\x00\x12\"&462\x16\x14\x17\x1e\x01\x0e\x01/\x01&/\x01\a\x17\x16\x1f\x01\x16\x0e\x01&/\x01&/\x01&?\x01\a\x06\x0f\x01\x0e\x01.\x01?\x0167>\x0632\x16\x1f\x01\a7\x16\x17\a\x06\x0f\x01\x06\"&4?\x016\xe4(\x1c\x1c(\x1c.\f\t\f\x19\f\x17\x17\t\x05\x11-\v\x04\x16\x03\r\x1a\x17\x03\x12\x04\v<\x17\b\x0f\x1a\f\x05\a\x06\x18\x18\b\x06\x06\x10\"\x04\x15\a\x11\t\x0e\x0e\a#8\f\t\xcd\x14\b(\x0e\x05\t;\n\x1a\x13\t2\n\x01`\x1c(\x1c\x1c(\xb1\x06\x19\x18\b\x06\v\f\x19\x11E2\v\x10Y\r\x17\x06\r\rJ\x0f\fB\x19\"<\v\x04\v\x0e\v\t\f\x19\f\x0e \x0e\x01\t\x03\x06\x02\x03\x01*\"\x1d\x994\n,\"\f\t<\t\x13\x1a\n2\t\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x1c\x00$\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463!2\x16\x15\x14\x06#!\"\x06\x14\x163\x04264&\"\x06\x14\x01\xcd\x15\x1e\x1e\x15\xfes\x1b%%\x1b\x01p\x14\x1c\t\a\xfe\x80\a\t\t\a\x01C\x1a\x13\x13\x1a\x13\x01@\x1c\x14\xff\x00\x14\x1c%\x1b\x01@\x1b%\x1c\x14\a\t\t\x0e\t\xd0\x13\x1a\x13\x13\x1a\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00$\x006\x00O\x00\x00\x122\x16\x14\x06\"&4\x17\x14\x162654':\x0112764.\x01/\x01&\x06\a\x06\x1e\x02\x1f\x01\x06\x17\x16>\x01'&\"\a\x0e\x01\x1e\x0367627>\x01'.\x02\x0f\x01\x0e\x01\x17\x16323\x06\x15\x14\x162654'\x91Α\x91Α\x88\x13\x1a\x13\x02\x01\x01\f\x03\x01\x03\x05\x03P\a\v\x02\x01\x01\x02\x05\x04\x1e\n\xa8\x06\x12\x06\x06\x1fb \x02\x02\x02\x04\x06\a\a\x03\x15Fb\x06\x06\x02\x01\x06\b\x04P\a\x06\x02\x03\f\x01\x01\x02\x13\x1a\x13\n\x01\xb8\x91Α\x91\xceW\r\x13\x13\r\x02\x06\v\x04\x06\x05\x04\x01\x18\x02\x06\x06\x04\x06\x05\x04\x01\n\t\xa8\b\x04\x10\b&&\x03\b\x06\x06\x03\x01\x03\x04\x19\xa2\x02\v\a\x04\x06\x01\x01\x18\x02\v\a\v\x05\x03\r\x13\x13\r\x0e\t\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02@\x01\xc0\x00\"\x002\x00\x00!2\x16\x1d\x01\x14\x06+\x01\"&=\x024&\"\x06\x1d\x01\x14\x06+\x01\"&=\x0146;\x01\x11!\x11\x132\x16\x1d\x01\x14\x06#!\"&=\x01463\x020\a\t\t\a\xa0\a\t8P8\t\a\xa0\a\t\t\a\x10\x02\x00\x10\a\t\t\a\xfd\xe0\a\t\t\a\t\a \a\t\t\a\x10\xa0(88(\xb0\a\t\t\a \a\t\x01`\xfe\xa0\x01\xc0\t\a \a\t\t\a \a\t\x00\t\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x04\x00\t\x00\x11\x00\x16\x00\x1b\x00#\x00:\x00B\x00J\x00\x00%\x06\a6?\x01#&'\x16'\x1e\x02\x17#>\x01\a\x06\a#6\x17&'3\x167\x0e\x01\a.\x02'\x17\x14\a\x06\x14\x17\x16\x1d\x01\x14\x06#!\"&5\x11463!2\x15\x06\"\x06\x14\x16264\x135!\"\x06\x14\x163\x01>\b-\f\x02''\x02\f-V\x04\n\b\x01.\x01\x0f\"\f\x02'\b--\b'\x02L\x01\x0f\a\x04\n\b\x01\xf7\n\x02\x02\n\x0f\v\xfe\xba)77)\x01F\x1a\xabjKKjK \xfe\xe0\r\x13\x12\x0e\xf01\x15\x1d) )\x1d\x15\x1e\x05\x12#\x15\x1e*\x02\x1d)1\x97\x151))\x1e*\a\x05\x12#\x15\x96\x0f\x05\t4\f\n\t\x10\f\x0e7)\x01@)7\x1a&KjKKj\xfe\xcb@\x12\x1c\x12\x00\x00\x04\xff\xfd\xff\xbe\x01\x83\x01\xc5\x00\x14\x00,\x00x\x00\x83\x00\x007\x16327\a\x0e\x01/\x01\a\"&?\x01\x16\x17\x16\x17\x16\x17\x05\x16\x06#'\a\x06&/\x01\x1632767672>\x01367\a\x0e\x01'&\"\a\x06&'.\a'&'.\x01'&764'&7>\x0176767676\x17\x16276\x17\x1e\x01\x17\x16\x17\x1e\x03\x17\x16\a\x06\x14\x17\x16\a\x0e\x01\a\x06\a\x0e\x06&\x14\x162654.\x01#\"a\x16\x1e\x12\x114\x03\x11\x06%4\t\n\x03.\f\r\x03\x06\t\x04\x01!\x03\n\t4%\x06\x11\x034\x11\x12\x1e\x16\x01\x02\x04\t\x02\x02\x03\x02\r\fJ\n\x1c\f\t\x18\t\f\x1c\n\x03\x04\x04\x04\x02\a\x03\t\x03\x16\x06\x06\x05\x0f\x11\x06\x06\x06\x06\x11\x0f\x05\x06\x06\x16\x19\b\x02\n\x11\x16\x15\n\x15\x16\x11\x0f\t\x15\x16\x06\x04\x01\b\x03\n\x11\x06\x06\x06\x06\x11\x0f\x05\x06\x06\x16\x03\n\x03\a\x03\x05\x05\xa87N7\x19+\x1a'U\x15\n\x80\b\x03\x06&\x02\x0e\bp\n\x04\x01\x01\x02\x05Y\b\x0e\x02&\x06\x03\b\x80\n\x15\x01\x02\x05\x02\x01\x01\x04\n\x03\n\x03\a\x06\x06\a\x03\n\x03\x04\x03\x03\x01\x02\x01\x02\x01\x06\x17\x15\t\x10\x11\x16\x16\n\x15\x17\x11\x0f\t\x16\x16\a\x06\b\x01\v\x11\x06\x06\x06\x06\x11\x10\x05\x05\a\x16\x0f\x04\x0e\x03\n\x11\x17\x15\n\x16\x16\x11\x10\t\x15\x17\x06\x01\x02\x01\x03\x01\x04\x05\xc9P88(\x1a,\x1a\x00\x00\x00\x02\xff\xff\x00\x00\x02\x80\x01\x80\x00\x11\x00-\x00\x00\x012\x16\x15\x11\x14\x06#!\"/\x01&4?\x0163\x05'76/\x01&\x0f\x01'&\x0f\x01\x06\x1f\x01\a\x06\x1f\x01\x16?\x01\x17\x16?\x016\x02@\x1b%%\x1b\xfe\x8d\x1a\x13\x97\t\t\x97\x13\x1a\x01\x1e>>\f\f\x16\f\v>>\v\f\x16\f\f>>\f\f\x16\f\v>>\v\f\x16\f\x01\x80%\x1b\xff\x00\x1b%\x13\x96\n\x1a\n\x96\x13\xfe>>\v\f\x16\f\f>>\f\f\x16\f\v>>\v\f\x16\f\f>>\f\f\x16\f\x00\x00\x00\x05\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\x0f\x00'\x007\x00M\x00]\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01463\a\x15\x14\x17\x06\a#>\x017#\x0e\x03#\"&4632\x16\x1f\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x012\x16\x14\x06#\"&'#\x1e\x01\x17#&'6=\x013>\x01\x132\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x01p\r\x13\x13\r`\r\x13\x13\r@\x066\x112\v9*P\x03\f\x0f\x13\n\x1b%%\x1b\x14 \a%\r\x13\x13\r`\r\x13\x13\r\x02\x00\x1b%%\x1b\x14 \aP*9\v2\x116\x06U\a \x14\r\x13\x13\r`\r\x13\x13\r\x01\xa0\x13\r`\r\x13\x13\r`\r\x138H\x0e\f'?0O\x19\t\x0f\n\x06%6%\x16\x12\xe8\x13\r`\r\x13\x13\r`\r\x13\x01\x10%6%\x16\x12\x19O0?'\f\x0eH\x12\x16\xfe\xf0\x13\r`\r\x13\x13\r`\r\x13\x00\x02\x00\x00\xff\xc0\x01\xc7\x01\xc1\x001\x00;\x00\x00\x05#\"'&54675#\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\x15\x16\x177'&?\x016\x1f\x01\x16\x0f\x01\x06/\x01\a\x16\x15\x14\a\x06'\x06\a!&/\x015#\x15\x01.\xdc&\x12\x1a4,\x10\a\t\t\a\xe0\a\t\t\a\x10\x15\x12'\t\f\f\v\v\f4\f\f\v\v\f\t+\x1b\x1a\x12\xdc%\x13\x01\x00\x13%\x18`@!,34Y\x19\x9a\t\a \x06\n\t\a \x06\n\x9a\f\x11'\t\f\v\v\f\f4\f\v\v\f\f\t+.53,!\xfd\x16''\x16\r\xb6\xb6\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\t\x00\x1b\x00#\x00\x00\x012\x16\x1d\x01!5463\x035!\x15\x14\x06+\x01\x15\x14\x06\"&=\x01#\"&\x16\"\x06\x14\x16264\x01`\r\x13\xfe\x80\x13\r \x01\x80%\x1b@%6%@\x1b%\xca\x14\x0e\x0e\x14\x0e\x01\xc0\x13\r\xe0\xe0\r\x13\xfe\xc0 \x1b%@\x1b%%\x1b@%M\x0e\x14\x0e\x0e\x14\x00\x00\x06\x00\x00\xff\xc0\x02\x00\x01\xc0\x004\x00@\x00H\x00R\x00\\\x00d\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&=\x01\"&=\x01#\"&=\x0146;\x015462\x16\x1d\x01%\x15\x14;\x012=\x014+\x01\"\x02264&\"\x06\x1475#\"\x06\x1d\x01\x14\x16;\x0226=\x014&+\x01\x12264&\"\x06\x14\x01\xe8\n\x0e\x0e\n\b\x0e\f\x06\x13\r \r\x13\xc0\x13\r \r\x13\r\x13\b\n\x0e\x0e\n\b\x82\xbc\x82\xfe\xc0\b\xb0\b\b\xb0\b=\x1a\x13\x13\x1a\x13\xa0p\r\x13\x13\r\x90p\r\x13\x13\rps\x1a\x13\x13\x1a\x13\x01@\x0e\nP\n\x0e\xa6\v\x0f \r\x13\x13\r \r\x13\x13\r \x13\r\xa0\x0e\nP\n\x0e0\"..\"08\x10\b\b\x10\b\xfe\xb0\x13\x1a\x13\x13\x1a]\xa0\x13\r`\r\x13\x13\r`\r\x13\xfe\xf0\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x01\xff\xff\xff\xc0\x02\x02\x01\xc0\x00[\x00\x00%\x16\x14\a\x06#\"#\x16\x17\x16\a\x06#\"'&'\x15\x14+\x01\"=\x01\x06\a\x06#\"'&767\"#\"'&4767.\x02'454632\x17\x1e\x02\x170454>\x01762\x17\x1e\x04\x15\x14\x15>\x027632\x17\x16\a\x0e\x02\a\x16\x01\xf7\t\t\x01\x01(\x11\x17\b\xf0\b\x17\x118\xa9\v\f\x11\x01n\x11\f\v\xa9\xc0\x01?\x016\x1f\x01\x16\x1f\x01\x1e\x01\x17\x04264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x14\x01\xfe\a\x13$\x05\x13\x17\nE'*M\x11+\f7\r\x16\x02\f\x02\x0e$\b!\x10E'*M*\x1e7\r\x16\x02\xfe\xb1\x1a\x13\x13\x1a\x133\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13\xc1*'E\n\x17\x13\x05$\x13\a\f\x03\x15\r7\f+\x12L\n\v\x1f\x1dE\x0f\"\b$\x13\a\f\x06\x1f7\f+\x12\xbd\x13\x1a\x13\x13\x1a\x8d\x13\x1a\x13\x13\x1a\x93\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x04\xff\xff\xff\xba\x02\x05\x01\xc5\x00#\x00+\x003\x00;\x00\x00%\x16\x0f\x01\x0e\x02\x0f\x01\x06/\x01.\x01/\x01.\x01/\x01&54?\x01>\x01?\x016\x17\x1e\x013\x14\x16\x04264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x14\x01\xff\x06\x13#\x06\x13\x17\nE'*M\x11+\f7\r\x16\x02\f\x02\x0e$\b!\x10E&*\x01J5J\xfe\xd9\x1a\x13\x13\x1a\x133\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13\xc0*&E\n\x17\x13\x05$\x13\a\f\x03\x15\r7\f+\x12L\n\v\x1f\x1dE\x0f\"\b$\x13\a4J5Jq\x13\x1a\x13\x13\x1a\x8d\x13\x1a\x13\x13\x1a\x93\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x18\x001\x00\x00%2\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&5\x11#532\x16\x15\x11\x01\x113\x15#\"&5\x11#\"&=\x0146;\x01546;\x012\x16\x01\xe8\n\x0e\x0e\n(\x0e\n0\n\x0e\xa0\xe0\r\x13\xfe\xe0\xa0\xe0\r\x13(\n\x0e\x0e\n(\x0e\n0\n\x0e`\x0e\n0\n\x0e(\n\x0e\x0e\n\x01H`\x13\r\xff\x00\x01H\xfe\xb8`\x13\r\x01\x00\x0e\n0\n\x0e(\n\x0e\x0e\x00\x00\b\x00\x00\x00 \x02\x80\x01`\x00\x0f\x00\x1b\x00'\x003\x00?\x00K\x00[\x00g\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0154+\x01\"\x1d\x01\x14;\x012'\x14;\x012=\x014+\x01\"\x15\x17\x14;\x012=\x014+\x01\"\x15\x17\x14;\x012=\x014+\x01\"\x15\x17\x14;\x012=\x014+\x01\"\x15754&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x0554+\x01\"\x1d\x01\x14;\x012\x02`\r\x13\x13\r\xfd\xc0\r\x13\x13\r\x01\x10\b\xe0\b\b\xe0\b\xe8\b\x10\b\b\x10\b@\b\x10\b\b\x10\b@\b\x10\b\b\x10\b@\b\x10\b\b\x10\b(\t\a\xd0\a\t\t\a\xd0\a\t\x01\x10\b\xe0\b\b\xe0\b\x01`\x13\r\xff\x00\r\x13\x13\r\x01\x00\r\x13\xff\x00\b\b\b\b\bH\b\b\x10\b\b\x10\b\b\x10\b\b\x10\b\b\x10\b\b\x10\b\b\x10\b\b00\a\t\t\a0\a\t\ty\b\b\b\b\b\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00!\x00)\x00A\x00\x00\x122\x16\x14\x06\"&4\x1f\x01\x16>\x01/\x017>\x01.\x01\x06\x0f\x01'&\x0e\x01\x1f\x01\a\x06\x1e\x017\x16264&\"\x06\x147'76.\x01\x0f\x01'&\x0e\x01\x1f\x01\a\x06\x1e\x01?\x01\x17\x16>\x01\x91Α\x91Α\x98\x1d\a\x11\x05\a\x1c\x1c\x05\x01\x06\b\n\x04\x1d\x1d\a\x11\x05\a\x1c\x1c\a\x05\x10\bc4&&4&\xd3\x1c\x1c\a\x06\x0f\b\x1d\x1d\a\x11\x05\a\x1c\x1c\a\x05\x10\b\x1d\x1d\a\x11\x05\x01\xb8\x91Α\x91\xce>\x1c\a\x06\x0f\b\x1d\x1d\x04\n\b\x06\x01\x05\x1c\x1c\a\x06\x0f\b\x1d\x1d\a\x11\x04\x06\xad&4&&4\x9d\x1d\x1d\a\x11\x05\a\x1c\x1c\a\x06\x0f\b\x1d\x1d\a\x11\x04\x06\x1c\x1c\a\x06\x0f\x00\x00\x03\x00\x00\xff\xbe\x02\x00\x01\xc0\x00\b\x00@\x00H\x00\x00%\x17\a\x0e\x01/\x0267\x0e\x02#\"'\x0f\x01\x06\".\x015'7&'&6?\x016\x17\x16\x177&5462\x16\x15\x14\a\x17\x06\a'0\"0\"1\a\x1632676\x1f\x01\x1e\x01&\"\x06\x14\x16264\x01\xc97\a\x01\x0e\a67,R\x1bL\\142G6\x03\b\x06\x05\aG!\x17\x03\x03\x06\x1c\f\t\x0e\x14D\f8P8\f4#03\x02\x02C#\"9d\x1f\b\r\x1c\x06\x04\xea\x1a\x13\x13\x1a\x13h`:\b\b\x03\x17_\x11~)= \x13{\x17\x01\x04\x06\x04:|\x1c\"\x06\r\x03\x10\b\r\x15\x12v\x16\x18(88(\x18\x16Y$\rXt\f7/\r\a\x0f\x04\r\xb4\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x003\x00N\x00\x00\x01\x16\x1d\x01\x14\a54&\"\x06\x1d\x01\x06\a54&\"\x06\x1d\x01&'54&\"\x06\x1d\x01&=\x014>\x0332\x177632\x1f\x01\x16\x15\x14\x0f\x012654.\x01'\a\x06#\"/\x01&54?\x01&#\"\x06\x15\x14\x1e\x01\x01\xafQH\x0e\x14\x0e4<\x0e\x14\x0e<4\x0e\x14\x0eH0>R-\x1397n\x04\x05\t\x04\t\x03\a\xf9Vz\x15'\x1av\x05\x04\t\x05\t\x02\aI\x1a\x18Vz8_\x01F\x1d9\xa0. f\n\x0e\x0e\nw\x0f\x02h\n\x0e\x0e\nh\x02\x0fw\n\x0e\x0e\nf .\xa0\x1e-\x16\r\x02\nG\x03\a\r\x04\x05\t\x05\xc5%\x1b\n\x14\x10\x06M\x03\b\r\x04\x05\b\x05/\x02&\x1a\x12\x1d\x11\x00\x00\x05\x00\x00\xff\xe0\x02@\x01\xa0\x00\v\x00\x16\x00 \x00*\x006\x00\x00\x122\x16\x1d\x01\x14\x06\"&=\x014\x176/\x01\x0e\x01\x15\x14\x16\x176\x1627.\x01#\"\x0e\x01\a75&\"\a\x15\x14\x1626\x17>\x0254&'\a\x06\x17\x16\xa9\uea69\xee\xa9\xcd\b\x0f\x1a8DF;\x15<<\x1f\x06\"\x15\x0e\x19\x12\x04} @ &4&/&:!D8\x1a\x0f\b\x06\x01\xa0K5\xc05KK5\xc05S\x1d\x1b,\n&\x16\x17&\n\x10\x19\x03\x14\x19\f\x14\r\x8d\r\x03\x03\r\x1a&&m\a\x15\x1c\x0f\x16&\n,\x1b\x1d\x19\x00\x00\x01\x00\x00\xff\xc0\x02\x00\x01\xc0\x00!\x00\x00\x01\x06\x0f\x013\x06\x0f\x013\x06\a\x0e\x01#\a\x06\"&47\x016&\x0f\x0167>\x06\x02\x00\t-jQ\x0e\x10\x93e:K\x1f? 9\a\x14\x0e\a\x01\x04\v\x17\v\xb3\x02\x04\x052D[OV,\x01\xc0}n5\x19\x1611\b\x03\x049\a\x0e\x14\a\x01\x03\f\x16\v\xb3.\"3W8.\x18\x12\x05\x00\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00\x1d\x00)\x00T\x00]\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\a\x15\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x13\"'.\x01\a'&\"\x0f\x01\x06+\x01\"\x06\x14\x16;\x0126?\x01\x17\x16\x17212?\x0162\x17\x16;\x01264&#\x13\x16\x1d\x01#532\x17\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\nȠ\bP\b\bP\b\bP\b\bP\b\xc1\a\x03\t+\x0e\x0e\x06\"\x06\x12\x03\b\f\a\t\t\a\f\x0e\x17\x04\v\x11\x03\v\x01\n\x04\b\x03\x0e\x03\f\x1b/\a\t\t\aI\a\x80\x06\n\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0eH\x10\b\b\x10\bH\x10\b\b\x10\b\xff\x00\x06\x12\t\f)\x11\x116\b\t\x0e\t\x10\x0e\x1f2\n\x01\t\x0f\x06\x06\x18\t\x0e\t\x01\x17\a\n\x06\x80\a\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00'\x000\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x136&+\x0154&+\x01\"\x06\x1d\x01#\"\x06\x1f\x01\x1627\x13\x16\x1d\x01#532\x17\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8L\b\b\vA\t\a \a\tA\v\b\b`\x05\x0e\x05\xad\a\x80\x06\n\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xfe\xa5\a\x14P\a\t\t\aP\x14\a`\x05\x05\x01R\a\n\x06\x80\a\x00\x03\x00\x00\xff\xc0\x02G\x01\xc0\x00\b\x00\x17\x003\x00\x00\x01\x15#532\x1f\x01\x16\x17\x16\x0f\x01\x06&=\x01#53546\x17\x05\x14\x16;\x01\x15\x14\x06#!\"&5\x1146;\x01\x15\x14\x16;\x01\x15#\"\x06\x15\x01\x80\x80\x06\n\ab\a\xbb\f\f`\a\x14@@\x14\a\xfe\xe5\t\a\xb0\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8\x0e\n\x88\xb0\a\t\x01F\x06\x80\ab\a\xc4\f\f`\b\b\vA@A\v\b\b|\a\t\x88\n\x0e\x0e\n\x01\xd0\n\x0e\x88\n\x0e\x80\t\a\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\t\x00\x12\x003\x00\x0073\x15#\"&=\x0146%\x16\x1d\x01#532\x17\a\x14\x16;\x01\x11\x14\x06#!\"&=\x013\x15\x14\x16?\x016/\x01&\x06\x1d\x01#\x1146;\x01\x10pp\a\t\t\x01\xf0\a\x80\x06\n\a7\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x80\x14\a`\f\f`\a\x14\x80\x0e\nȠ@\t\a \a\t\xb7\a\n\x06\x80\a\x81\n\x0e\xfe\xb8\n\x0e\x0e\n\x88A\v\b\b`\f\f`\b\b\vA\x01\b\n\x0e\x00\x00\x00\x00\a\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x03\x00\f\x00\x1e\x00*\x006\x00B\x00R\x00\x00%\x15#5%\x16\x1d\x01#532\x17\a\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\a\x15\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x0154+\x01\"\x1d\x01\x14;\x01254&+\x01\"\x06\x1d\x01\x14\x16;\x01265\x01 \xc0\x01\x19\a\x80\x06\n\a7\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\nȠ\bP\b\bP\b\bP\b\bP\b\x01\x00\bP\b\bP\b\t\a\xe0\a\t\t\a\xe0\a\t\xc0@@\x97\a\n\x06\x80\a\x81\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0eH\x10\b\b\x10\bH\x10\b\b\x10\b\xfe\xc8\x10\b\b\x10\b\xd0\a\t\t\a`\a\t\t\a\x00\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\b\x00\x1a\x00&\x002\x00m\x00\x00\x01\x16\x1d\x01#532\x17\a\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\a\x15\x14;\x012=\x014+\x01\"\x15\x14;\x012=\x014+\x01\"\x15\x13>\x0154.\x01/\x01&546;\x012\x17\x16?\x016'&'54+\x01\"\x1d\x01\x0e\x01\x15\x14\x16\x1f\x01\x16\x15\x14\x06+\x01\"'&\x0f\x01\x06\x17\x16\x17\x15\x14;\x0125\x01y\a\x80\x06\n\a7\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\nȠ\bP\b\bP\b\bP\b\bP\b\x90\x12\x19\b\x0f\t-\t\a\x05\x1c\a\x06\x06\x04\f\a\b\x0e\x11\b\x10\b\x12\x19\x12\x0e-\t\a\x05\x1c\a\x06\x06\x04\f\a\b\x0e\x11\b\x10\b\x01W\a\n\x06\x80\a\x81\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0eH\x10\b\b\x10\bX\b\b\x10\b\b\xfe\xe8\x01\x1a\x12\n\x12\r\x03\r\x03\n\x05\b\x04\x03\x04\v\a\x05\v\x01\x18\b\b\x18\x01\x1a\x12\x0f\x18\x05\r\x03\n\x05\b\x04\x03\x04\v\a\x05\v\x01\x18\b\b\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00;\x00C\x00L\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x13&\x0f\x01'654&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x013\x17\a\x06\x1f\x01\x16?\x01\x17\x16?\x016/\x0176/\x01#532\x16\x14\x067\x15#532\x1f\x01\x16\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8E\f\v\x1e!!%\x1bP\a\t\t\a\x10\a\t\x13;\x1e\v\v\v\f\v\x1e\x1e\v\f\v\v\v\x1e\x1e\v\v\x8000\a\t\tɀ\x06\n\ab\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xfe\xc5\v\v\x1e!\x12&\x1b%\t\a\xa0\a\t\t\a0;\x1e\f\v\v\f\f\x1e\x1e\f\f\v\v\f\x1e\x1e\v\v7 \t\x0e\t\x96\x06\x80\ab\a\x00\x00\x04\x00\x00\xff\xc0\x02A\x01\xc0\x007\x00@\x00E\x00O\x00\x007\x1e\x01;\x01\x15\x14\x06#!\"&5\x1146;\x01\x15\x14\x16;\x01\x15\a\x15&'.\x01\a'&\"\x0f\x01\x06+\x01\"\x06\x14\x16;\x0126?\x01\x17\x1e\x01?\x0162\x13\x15#532\x1f\x01\x16\a7\x17\a#%\x16\x14\x0f\x01'762\x17\xda\x06\x14\f\x80\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8\x0e\n\x88\x80\x06\x03\t+\x0e\x0e\x06\"\x06\x12\x03\b\f\a\t\t\a\f\x0e\x17\x04\v\x11\x03\x16\x04\b\x03\x0e\xa9\x80\x06\n\ab\a`\xa3D\xa2E\x01\x19\a\a\x1cD\x1c\a\x15\b\x18\v\r(\n\x0e\x0e\n\x01\xd0\n\x0e\x88\n\x0e/\u007fR\x01\x05\x12\t\f)\x11\x116\b\t\x0e\t\x10\x0e\x1f2\n\x02\n\x0f\x06\x01(\x06\x80\ab\a\xeb\xa2D\xa3\xf9\b\x15\a\x1cD\x1c\a\a\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00'\x000\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x1326/\x01&\"\x0f\x01\x06\x16;\x01\x15\x14\x16;\x0126=\x017\x16\x1d\x01#532\x17\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8A\v\b\b`\x05\x0e\x05`\b\b\vA\t\a \a\t\x99\a\x80\x06\n\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xfe\xa0\x14\a`\x05\x05`\a\x14P\a\t\t\aP\xf7\a\n\x06\x80\a\x00\x02\x00\x00\xff\xbf\x02\x00\x01\xc7\x00\x17\x00&\x00\x00%\x16\x14\x0f\x01\x06\"/\x01&4?\x01'&?\x016\x1f\x01762\x17\x137'\a\x17\x16\x14\x06\"/\x01\x0f\x01\x06\a\x01\xf7\t\t\xde\x1cP\x1cu\x1c\x1c_V\f\f\x16\f\vVR\t\x1b\t[1\xa3;;\t\x12\x1b\t;Q\x0e\x05\x02\xe7\t\x1b\t\xde\x1c\x1cu\x1cP\x1c_V\v\f\x16\f\fVR\t\t\xfe\xe90\xa3;;\t\x1b\x12\t;R\r\x05\a\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02@\x01\xc7\x00\n\x00\"\x001\x00\x00%\x16\x15\x14\x06\"&546?\x01\x16\x14\x0f\x01\x06\"/\x01&4?\x01'&?\x016\x1f\x01762\x17\x137'\a\x17\x16\x14\x06\"/\x01\x0f\x01\x06\a\x02\x00@%6% \x10\a\t\t\xde\x1cP\x1cu\x1c\x1c_V\f\f\x16\f\vVR\t\x1b\t[1\xa3;;\t\x12\x1b\t;Q\x0e\x05\x02\x80]#\x1b%%\x1b\x10@\x18\u007f\t\x1b\t\xde\x1c\x1cu\x1cP\x1c_V\v\f\x16\f\fVR\t\t\xfe\xe90\xa3;;\t\x1b\x12\t;R\r\x05\a\x00\x00\x06\xff\xfe\xff\xc0\x02\x01\x01\xc2\x00\r\x00-\x00A\x00\\\x00n\x00\x91\x00\x0062\x16\x15\x16\a\x06#\"&76'47\x1e\x01\x15\x16\a\x0e\x02'.\x0176'4&'\"\x06\x15\x16\a\x0e\x01.\x0176'&6&\x1e\x01\a\x06\x17\x16\a\x14\x0e\x01'.\x0176'&767\x1e\x01\x17\x14\x15\x14\a\x0e\x01'.\x0176'.\x01'\"\a\x06.\x01676\x05\x16\x15\x14\x06#\"&54'&676\x1e\x02'\x16\x0e\x01&'.\x04#&\a\x06\x17\x15\x14\x0e\x01#0#\"&=\x01&76\x172\x1e\x02\xf6\x14\x0e\x02\x1f\x05\x12\x0f\v\x02\x1e\x02\x17+>\x01\f\x01\x04\x0e\t\t\f\x02\v\x01\"\x17\x19\x1e\x01\x0f\x02\x11\x13\v\x02\x0e\x01\x01;I\x0f\x02\x06\x1d\x01\x01\v\x05\x0e\t\t\f\x02\n\x01\x01(\x06\x89Lm\x01\x06\x01\x0e\v\n\r\x02\x06\x01\x01Q9\x12\x10\t\x11\x05\v\t\x18\x01\x12\x06\x0e\n\n\x0e\x05\x02\v\n\x04\n\a\x06'\x06\x04\x10\x14\x05\f\x1e\"&(\x15X<9\x01\a\v\x06\x01\n\r\x01GKl\x1f>60\xca\x0e\nrn\x12\x15\tik\n`\x01<*MK\x04\t\b\x01\x02\x10\nGH\x17 \x01 \x15ML\t\v\x04\x10\nFI)<\x1a\r\x13\b#.><\x03\t\b\x01\x02\x10\n79?1\b:\x01kJ\a\a55\b\x0e\x01\x01\x10\n897O\x01\x04\x02\n\x14\x11\x02\x05z\x1c,\n\x0e\x0f\t'\x17\n\x11\x02\x01\x02\x05\bV\b\x14\v\x03\t\x11\x1c\x16\x10\t\x01<9R\x18\x06\v\x06\x0f\n\x15fHJ\x01\x10\x1d*\x00\x00\x00\x02\xff\xfe\x00 \x02@\x01`\x00\x18\x00$\x00\x00\x012\x1e\x02\x14\x0e\x02#\"&'\a\x06&?\x01'&6\x1f\x01>\x01\x16264&#\"\x0e\x02\x15\x14\x01G0a@((@a0>p&X\t\x14\x02\x19\x19\x02\x14\nW&p\x8c\x13\x0f\x0f\t\x05\t\a\x03\x01`)73\x1a37)<*B\a\v\nnn\n\v\aB*<\xb8\x0e\x14\x0e\x04\x06\t\x05\n\x00\x06\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x00\x00$2\x16\x14\x06\"&4&2\x16\x14\x06\"&462\x16\x14\x06\"&4\x16\x14\x16264&\"\x1724+\x01\"\x1436264&\"\x06\x14\x01N\x14\x0e\x0e\x14\x0e\xb2\x14\x0e\x0e\x14\x0e\x11Α\x91ΑP*<**<\xbe\x10\x10\x80\x10\x10\x82<**<*\xf8\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14ΑΑ\x91\xce)<**<*\xf8 h*<**<\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1f\x00'\x00\x00\x122\x16\x14\x06\"&4\x16\x14\x16264&\"\x17\x166'.\x01#\"\x0e\x01\a\x06\x167626264&\"\x06\x14\x91Α\x91Α\x88\x13\x1a\x13\x13\x1a\xa8\t\r\x01\x05=\x1e\x13(\"\x03\x01\r\t14)\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xce*\x1a\x13\x13\x1a\x13\xd7\x03\f\t\x1b\"\r\x1d\x13\t\f\x03\x0f\x88\x13\x1a\x13\x13\x1a\x00\x00\x00\x02\xff\xfa\xff\xc0\x02\x06\x01\xc0\x00\x17\x00\x1b\x00\x00\x01\a\x1532\x16\x15\x14+\x01\"546;\x015'&63!2\x16\a!\x17!\x01\xf6\xd68\x11\x17\b\xf0\b\x17\x118\xd6\x10\x11\x17\x01\xbc\x17\x11J\xfe\x880\x01\x18\x01\x86\xd6\xc0\x17\x11\b\b\x11\x17\xc0\xd6\x10**\x060\x00\x00\x02\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00j\x00\x00\x122\x16\x14\x06\"&4\x0546;\x01.\x01'\x15\x14\x06+\x01\"\x0f\x01\x06\x0f\x01\x06\x1d\x01\x14\x16;\x012\x1f\x01\x16;\x012\x16\x15\x14\x0f\x01\x06/\x01&+\x01\"\x0f\x01\x06\x1d\x01\x14\x16;\x012\x16\x1d\x01\x14\x17\x1632?\x01676?\x016?\x016=\x014&+\x01\"/\x01&6?\x01632\x1f\x01\x1632?\x0165\x91Α\x91Α\x01\x98\t\a\x12\x0eY;\t\x06\x19\b\x05\b\x03\x06\x0e\f\t\aZ\x06\x05\x06\x05\x06\n\a\t\v/\x06\x06\x0e\f\r\x01\x12\x0f\x1b\x16 \x17\x19\a\t\b\b\x11\x0f\b\r\v\x0e\x04\x01\x04\x01\x02\x13\x03\t\a\b\b\x05\r\x04\x05\a\x03\x02\x03\x04\x04\x13\x03\x05\x04\x03\x0f\t\x01\xb8\x91Α\x91\xceG\a\t:R\t\x15\a\t\a\f\x05\x01\x04\x03\f\x04\a\t\x05\x06\x05\t\x06\f\x03\x10\x02\x03\a\x06\v\x15\x10\x1b\x0e\x17 \t\a\x1d\x13\x11\x0f\f\x14\x10\r\x04\x05\x16\x04\x03\x19\x04\x05\v\a\t\a\x14\x06\x0f\x02\x01\x01\x03\f\x03\x02\b\x04\n\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00_\x00n\x00\x00\x122\x16\x14\x06\"&4\x05654/\x01&+\x01.\x01#\"/\x01&54?\x01632\x1f\x01\x16;\x0126/\x01&54?\x016;\x012?\x016/\x01&?\x026/\x01\x06\a\x15\x14\x06/\x01\x06\a\x16\x17\x16\x1f\x01\x16\x17\x16\x17\x16\x1d\x01\x14\x17\x1e\x01\a\x152?\x01676767\x17654'\a\x06\x0f\x01\x06\x14\x1f\x01\x16\x91Α\x91Α\x01J\x0e\t\x0e\t\rC\x04\x16\x06\x10\x0e\v\a\b\x1f\x03\x02\x06\x05\t\x02\x03\x06\x05\x04\x02\x0f\x01\x02\n\x02\x04\t\x03\x02\b\x06\x06\x04\x06\x06\n\x05\v\v\x1d\f\f\x0f\b\x18G \x19\t\b\n\x01\x0f\x11\x12\x1f\x10\t\v\r\x01\x15\x16\x11\x01\x04\x01\x05\x03_\x1d\x02\x15\r\x06\x04\x13\x04\x04\x12\x05\x01\xb8\x91Α\x91\xce\xd5\x0e\x13\r\t\x0e\t\x02\x1e\a\x06\x03\a\t\x03\n\x01\x04\b\x02\b\x04\x1f\x01\x02\x04\x02\n\x02\x02\b\x06\x06\x04\x06\x06\n\x05\v\v\x1d\x01\x02\v\t\t\x04\f\x1fG&\r\f\t\x01\r\t\t\x11\t\x13 \r\t\v\x1f\n\x1b\x05/\x02\x0e\a\x04\x03d\b\x0f\v/*\x06\x03\x05\x1e\x06\x0e\x06\x1b\b\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x008\x00m\x00\x00\x122\x16\x14\x06\"&4\x17762\x17\x16;\x012=\x014/\x01&4?\x01&#\"\x06\x15\x14\x1732?\x016\x16\x1f\x01\x16;\x0126=\x014/\x01&?\x01632\x1754/\x01&=\x014+\x01\"\x0f\x01\x06+\x01\"/\x01&+\x01\"\x0f\x01\x06\x0f\x01\x06\x1d\x01\x14\x1f\x01\x16;\x01237632\x1f\x01\x16;\x012?\x016\x91Α\x91Α\xed\x11\x01\x06\x01\x02\x05\x03\b\t\v\x04\x033\x1f\x1fSu\x03>\a\x05\x13\x03\b\x02\x17\x04\n\x06\a\t\x05\x05\x06\x06\x05\x05\a\t\xb0\x05\f\x02\x04\x06\x03\x01\x04\x01\x03\x04\x02\x01\x06\x02\x05\f\x03\x02\x18\x02\x03'\x06\x03\f\x04\a\n\x02\x02\x16\x03\x03\v\b\r\x05\x06\x0f\a\x05\t\x05\x01\xb8\x91Α\x91\xce_\x1d\x02\x03\x04\bN\n\x04\x06\x02\t\x03&\nuS\x0f\x11\x05\x13\x03\x01\x04-\t\t\a\t\a\x05\x05\x06\x06\x05\x05f\x18\a\x04\f\x03\x03\r\x04\x03\x0e\x03\x02\r\x05\x01\x11\x02\x01\x10\x02\x06\n\x03\x02\f\x05\x06\x01\b\r\x05\x05\t\x05\x00\x00\x00\x00\r\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0e\x00\x15\x00\x1d\x00!\x00%\x00)\x00-\x001\x005\x00=\x00D\x00K\x00\x00\x122\x16\x14\x06\"&4\x175#\x15\x14\x16375#\"\x06\x1d\x016\x14\x16264&\"\x175#\x1575#\x15\x175#\x1575#\x15\x175#\x1575#\x156264&\"\x06\x14\x175#\x15326=\x014&+\x01\x15\x91Α\x91Α\x90(\x13\r\b\b\r\x13 \x13\x1a\x13\x13\x1a5000p000p000\x1b\x1a\x13\x13\x1a\x13`(\b\r\x13\x13\r\b\x01\xb8\x91Α\x91\xce\xf7(\b\r\x138(\x13\r\b\x95\x1a\x13\x13\x1a\x13\xe0((8((8((8((8((8((h\x13\x1a\x13\x13\x1a\x93\b(\x13%\b\r\x13(\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00&\x00\x00\x122\x16\x14\x06\"&4\x04\"\x06\x14\x16264&\"\x06\x14\x16264\x142676&\a\x06\"'&\x0e\x01\x17\x16\x91Α\x91Α\x01U\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13`Y\a\x01\r\t/\x98/\x06\n\x06\x01\a\x01\xb8\x91Α\x91\xce\x17\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\xed6'\t\f\x03\x0f\x0f\x02\x04\n\x06'\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x15\x00#\x002\x00\x00\x122\x16\x14\x06\"&4%\x06\a\x16\x17\x162767&'&\"\a\x06\a\x16\x17\x162767&'&\"\x122676&\a\x06\"'&\x0e\x01\x17\x16\x91Α\x91Α\x018\x0f\x01\x01\x0f\x06\x15\x05\x0f\x01\x01\x0f\x06\x15\xa5\x0f\x01\x01\x0f\x06\x15\x05\x0f\x01\x01\x0f\x06\x15+`Y\a\x01\r\t/\x98/\x06\n\x06\x01\a\x01\xb8\x91Α\x91\xce\x10\x16!\"\x15\t\t\x16!\"\x15\t\t\x16!\"\x15\t\t\x16!\"\x15\t\xfe\xd06'\t\f\x03\x0f\x0f\x02\x04\n\x06'\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x17\x00+\x009\x00\x00\x122\x16\x14\x06\"&4$\"\x06\a\x14\x16?\x0162\x1f\x01\x166'&'\"\x06\a\x14\x16?\x0162\x1f\x01\x166'.\x04\x122676&\a\x06\"'&\x06\x17\x16\x91Α\x91Α\x01[&#\x02\f\x03\n\f&\r\t\x03\r\x01\x02\xd6\x13#\x02\f\x03\n\f&\r\t\x03\r\x01\x01\b\v\x0e\x0f\x19`Y\a\x01\r\t/\x98/\t\r\x01\a\x01\xb8\x91Α\x91\xce\x01)\x1e\a\x03\x05\x11\x16\x16\x11\x05\x03\a\x1e))\x1e\a\x03\x05\x11\x16\x16\x11\x05\x03\a\f\x16\x12\f\a\xfe\xe86'\t\f\x03\x0f\x0f\x03\f\t'\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf8\x01\xc1\x00\v\x00\x1d\x00-\x00A\x00P\x00\x00\x00\"&54762\x17\x16\x15\x14\a27\x16\x15\x14\x06\"&4632\x17\x06\x15\x14\x16&\"\x06\a\x14\x16?\x0162\x1f\x01\x166'&'\"\x06\a\x14\x16?\x0162\x1f\x01\x166'.\x04\x122676&\a\x06\"'&\x0e\x01\x17\x16\x01\xdc(\x1c*\x02\b\x02*0\t\v\x14\x91Α\x91gJ>\b/L&#\x02\f\x03\n\f&\r\t\x03\r\x01\x02\xd6\x13#\x02\f\x03\n\f&\r\t\x03\r\x01\x01\b\v\x0e\x0f\x19`Y\a\x01\r\t/\x98/\x06\n\x06\x01\a\x01@\x1c\x13\x177\x03\x037\x17\x13<\x0303g\x91\x91Α)\x12\x0e!.\b)\x1e\a\x03\x05\x11\x16\x16\x11\x06\x04\a\x1e))\x1e\a\x03\x05\x11\x16\x16\x11\x06\x04\a\f\x16\x12\f\a\xfe\xe86'\t\f\x03\x0f\x0f\x02\x04\n\x06'\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x19\x00'\x00:\x00\x00\x122\x16\x14\x06\"&4\x17\x06\x16\x1f\x01\x16?\x016&'&\x06\x0f\x01'&\x06\x122676&\a\x06\"'&\x06\x17\x16%>\x01'.\x02\x0f\x01'.\x01\a\x0e\x01\x1f\x01\x167\x91Α\x91ΑZ\x05\x0e\x10F\b\x02\x14\x04\x11\x10\x0e\x18\x04\x02\a\x0e\x1ai`Y\a\x01\r\t/\x98/\t\r\x01\a\x01\x0e\x10\x0e\x05\x04\x0e\x12\t\a\x02\x04\x18\x0e\x10\x11\x04\x14\x02\b\x01\xb8\x91Α\x91\xce\x1f\x0f\x1c\x04\x12\x02\bF\x0f\x1b\x02\x03\x11\r\b\x02\x04\r\xfe\xfb6'\t\f\x03\x0f\x0f\x03\f\t'\x93\x04\x1c\x0f\t\f\x03\x02\x02\b\r\x11\x02\x03\x1b\x0fF\b\x02\x00\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x16\x00#\x001\x00\x00\x122\x16\x14\x06\"&4\x05\x06\x14\x1f\x01\x166/\x01764.\x01\x0f\x01\x17\a\x06\x16?\x0164/\x01&\x06\x122676&\a\x06\"'&\x06\x17\x16\x91Α\x91Α\x01\x1a\x06\x06P\b\x0e\a!!\x03\x06\b\x04\xf3!!\a\x0e\bP\x06\x06P\b\x0eX`Y\a\x01\r\t/\x98/\t\r\x01\a\x01\xb8\x91Α\x91\xce-\x03\x0e\x030\x05\x0f\b((\x04\t\x06\x02\x03\x12((\b\x0f\x050\x03\x0e\x030\x05\x0f\xfe\xf06'\t\f\x03\x0f\x0f\x03\f\t'\x00\x06\xff\xff\xff\xbf\x02\x01\x01\xc1\x00\v\x00\x17\x00/\x00<\x00J\x00Z\x00\x00\x01\"&76762\x16\x14\a\x06\x012\x16\a\x06\a\x06\"&476\x0167\x16\x0e\x02'676&\a\x06\a&>\x02\x17\x06\a\x06\x16'\a\x06\x16?\x016&/\x02.\x01\a\x1e\x01?\x016.\x01\x0f\x01\x06\x16\x1f\x02>\x01'&\x06\a\x0e\x01\a\x0e\x01\x17\x1626\x01\x9a\x05\x06\x01\v\x10\x0e*\x1d\x0e\x11\xfe\x85\x05\x06\x01\v\x10\x0e)\x1e\x0e\x11\x01\u007f!\x18)\x14y\xa8G\a\x05\x02\x19\x17!\x18)\x14y\xa8G\a\x05\x02\x19\x87\x17\x01\t\aZ\n\x02\n4\x05\x01\x14]\x01\x14\x02\x17\x01\x04\a\x05Z\n\x02\n4\xdc\"\x19\x17\x05\x12\x04\x17k,\b\x02\b\x15<@\x01P\x05\x05H\x10\x0e\x1e)\x0e\x11\xfe\xd6\x05\x05H\x10\x0e\x1e)\x0e\x11\x01\n\x05\aG\xa8y\x14)\x19 \x11\x1f\x02\x05\aG\xa8y\x14)\x19 \x11\x1f([\x06\n\x02\x17\x02\x14\x01\x054\n\x02\xf0\n\x02\nZ\x05\a\x04\x01\x17\x02\x14\x01\x05`\"a$\a\x01\b,k\x17\x04\x12\x05\x0f\x1c\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00 \x00.\x00G\x00\x00\x122\x16\x14\x06\"&4\x17\x0e\x01\x1f\x01\a\x06\x16?\x01\x17\x166/\x0176&/\x02&\"\x0f\x01\x122676&\a\x06\"'&\x06\x17\x16%6&/\x02&\"\x0f\x02\x0e\x01\x1f\x01\a\x06\x16?\x01\x17\x166/\x01\x91Α\x91Α_\x05\x03\x03\x1a\x06\x01\a\x05\x1f\x1f\x04\b\x01\x06\x1a\x03\x03\x05#\x0f\x02\n\x02\x0fF`Y\a\x01\r\t/\x98/\t\r\x01\a\x01'\x03\x03\x05#\x0f\x02\n\x02\x0f#\x05\x03\x03\x1a\x06\x01\a\x05\x1f\x1f\x05\a\x01\x06\x01\xb8\x91Α\x91\xce\x10\x01\t\x03\x19#\x04\x06\x02\x11\x11\x02\x06\x04#\x19\x03\t\x01\x05 \x04\x04 \xfe\xf46'\t\f\x03\x0f\x0f\x03\f\t'\xc4\x03\t\x01\x05 \x04\x04 \x05\x01\t\x03\x19#\x04\x06\x02\x11\x11\x02\x06\x04#\x00\x06\xff\xff\xff\xc8\x02\x81\x01\xb8\x00\v\x00\x17\x006\x00F\x00V\x00d\x00\x0072\x16\a\x06\a\x06\"&476\x05\x16\x14\x06\"'&'&6\x17\x16\a\x16\x17\x1e\x011\x0e\x01\"&'?\x01676&\a\x06\a>\x0132\x1e\x01\x17&'&\x06&\"\x06\a\x14\x16?\x0162\x1f\x01\x166'.\x01\"\x06\a\x14\x16?\x0162\x1f\x01\x166'&\x062676&\a\x06\"'&\x06\x17\x16f\x05\x06\x01\v\x10\x0e)\x1e\x0e\x11\x02S\x0e\x1e)\x0e\x11\n\x01\x06\x05Hr\f\x18\x01\x02 s\x88s \x01\x02\x18\f\x02\x19\x17\v\r\n\x8d_?lE\x06\r\v\x14\x1cK&#\x02\f\x03\n\f&\r\t\x03\r\x01\x02\xc3&#\x02\f\x03\n\f&\r\t\x03\r\x01\x02\x16`Y\a\x01\r\t/\x98/\t\r\x01\a\xc0\x05\x05H\x10\x0e\x1e)\x0e\x11\x11\x0e)\x1e\x0e\x11G\x05\x06\x01\v\x03R\x18\x01\x029DD9\x01\x02\x18R\x11\x1f\x02\x02\x02]\u007f:e=\x02\x02\x02\x1cb)\x1e\a\x03\x05\x11\x16\x16\x11\x06\x04\a\x1e))\x1e\a\x03\x05\x11\x16\x16\x11\x06\x04\a\x1e\xef6'\t\f\x03\x0f\x0f\x03\f\t'\x00\x00\x00\x04\x00\x00\xff\xbf\x01\xf0\x01\xb8\x00\x1d\x00%\x00-\x00K\x00\x00\x122\x16\x15\x14\x06\a6=\x01676&\a\x06\"'&\x06\x17\x16\x17\x15\x14\x17.\x0154\x16264&\"\x06\x14\x16264&\"\x06\x14\a:\x01\x1e\x02\x17\x15\x14\x06#\".\x02=\x01636\x16\x1f\x01\x162?\x01>\x02\x91ΑYH\t*\x06\x01\r\t/\x98/\t\r\x01\x06*\tHY\x9b\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13\x03\x01\x01\x02\x04\a\x04&\x1b\r\x17\x11\n\x12\x01\v\x15\x03\x01\x02\x0e\x02\x01\x02\v\x0f\x01\xb8\x91gO~\x1b\x14\x14.\x1b$\t\f\x03\x0f\x0f\x03\f\t$\x1b.\x14\x14\x1b~OgW\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x9a\x02\x01\x04\x02@\x1b%\v\x11\x18\r?\t\x05\v\v\b\a\a\b\a\v\x02\x00\x00\x00\x04\x00\x00\xff\xbf\x01\xf0\x01\xb8\x00\x1d\x00;\x00H\x00U\x00\x00%:\x01\x1e\x02\x17\x15\x14\x06#\".\x02=\x01636\x16\x1f\x01\x162?\x01>\x02\x022\x16\x15\x14\x06\a6=\x01676&\a\x06\"'&\x06\x17\x16\x17\x15\x14\x17.\x0154\x1764/\x01&\x06\x1f\x01\a\x06\x16?\x01'76&\x0f\x01\x06\x14\x1f\x01\x166\x01%\x01\x01\x02\x04\a\x04&\x1b\r\x17\x11\n\x12\x01\v\x15\x03\x01\x02\x0e\x02\x01\x02\v\x0f\x8dΑYH\t*\x06\x01\r\t/\x98/\t\r\x01\x06*\tHY\xd6\x06\x06P\b\x0e\a!!\a\x0e\b\xf3!!\a\r\tP\x06\x06P\b\x0eI\x02\x01\x04\x02@\x1b%\v\x11\x18\r?\t\x05\v\v\b\a\a\b\a\v\x02\x01l\x91gO~\x1b\x14\x14.\x1b$\t\f\x03\x0f\x0f\x03\f\t$\x1b.\x14\x14\x1b~OgA\x03\x0e\x030\x05\x0f\b((\b\x0f\x05\x12((\b\x0f\x050\x03\x0e\x030\x05\x0f\x00\x00\x05\x00\x00\xff\xbf\x01\xf0\x01\xb8\x00\a\x00%\x008\x00@\x00^\x00\x00\x002\x16\x14\x06\"&4&2\x16\x15\x14\x06\a6=\x01676&\a\x06\"'&\x06\x17\x16\x17\x15\x14\x17.\x0154\x17\x166'.\x03#\"\x06\a\x06\x16?\x0162\x17\x16264&\"\x06\x14\x17:\x01\x1e\x02\x17\x15\x14\x06#\".\x02=\x01636\x16\x1f\x01\x162?\x01>\x02\x01N\x14\x0e\x0e\x14\x0e\xafΑYH\t*\x06\x01\r\t/\x98/\t\r\x01\x06*\tHY\xc0\x06\x0f\x01\x01\f\x11\x14\n\x14%\x03\x01\x0f\x06\n\v&\v\x884&&4&\r\x01\x01\x02\x04\a\x04&\x1b\r\x17\x11\n\x12\x01\v\x15\x03\x01\x02\x0e\x02\x01\x02\v\x0f\x01\b\x0e\x14\x0e\x0e\x14\xbe\x91gO~\x1b\x14\x14.\x1b$\t\f\x03\x0f\x0f\x03\f\t$\x1b.\x14\x14\x1b~OgP\x06\b\t\t\x10\v\x06\x18\x12\t\b\x06\t\t\t0&4&&4\x8d\x02\x01\x04\x02@\x1b%\v\x11\x18\r?\t\x05\v\v\b\a\a\b\a\v\x02\x00\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\"\x001\x00\x00<\x0162\x16\x14\x06\"\x124&\"\x06\x14\x1627\x166'.\x03#\"\x06\a\x06\x16?\x0162\x17\a&\x06\x17\x1e\x012676.\x01\a\x06\"\x91Α\x91\xce7\x13\x1a\x13\x13\x1a\xbb\x06\x0f\x01\x01\f\x11\x14\n\x14%\x03\x01\x0f\x06\n\v&\v\xe9\t\r\x01\aY`Y\a\x01\x06\n\x06/\x98YΑ\x91Α\x01\x1b\x1a\x13\x13\x1a\x13\a\x06\t\b\t\x10\v\x06\x18\x12\t\b\x06\t\t\ta\x03\f\t'66'\x06\n\x04\x02\x0f\x00\x00\x06\x00\x00\x00 \x01\xc0\x01`\x00\x0f\x00\x1f\x00/\x00?\x00O\x00_\x00\x0072\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01463%2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01463`\r\x13\x13\r@\r\x13\x13\r\xe0\r\x13\x13\r@\r\x13\x13\r\xe0\r\x13\x13\r@\r\x13\x13\r\xff\x00\r\x13\x13\r@\r\x13\x13\r\xe0\r\x13\x13\r@\r\x13\x13\r\xe0\r\x13\x13\r@\r\x13\x13\r\xa0\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\xc0\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x00\x00\x06\x00\x00\xff\xe0\x01@\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00O\x00_\x00\x00\x132\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463`\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r\x01\x00\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r\x01\xa0\x13\r@\r\x13\x13\r@\r\x13\xa0\x13\r@\r\x13\x13\r@\r\x13\xa0\x13\r@\r\x13\x13\r@\r\x13\x01@\x13\r@\r\x13\x13\r@\r\x13\xa0\x13\r@\r\x13\x13\r@\r\x13\xa0\x13\r@\r\x13\x13\r@\r\x13\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x11\x00\"\x00@\x00\x0072\x16\x1d\x01\x14\x06+\x01\".\x01=\x014>\x01;\x012\x16\x1d\x01\x14\x0e\x01+\x01\"&=\x01463\x022\x16\x17\x15\x14\x06+\x01\"&=\x014&#\"\x0e\x01\x1d\x01\x14\x06+\x01\"&=\x016\xa0\r\x13\x13\r\x10\x11\x1e\x11\x11\x1e\x11\xe0\x1b%\x11\x1e\x11\x10\r\x13\x13\r\xc9Ҕ\x03\t\a\x10\a\tzV8`8\t\a\x10\a\t\x03\xa0\x13\r\x80\r\x13\x11\x1e\x11@\x11\x1e\x11&\x1a@\x11\x1e\x11\x13\r\x80\r\x13\x01\x00\x97ip\a\t\t\apVz8`8p\a\t\t\api\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x0f\x00\x1f\x00F\x00\x007\x15\x14\x06+\x01\"&=\x0146;\x012\x16\x17#\"&=\x0146;\x012\x16\x1d\x01\x14\x06\x022\x16\x17\x15\x14\x06+\x01\"&46;\x012\x16\x153265454&\"\x06\x1d\x01\x14\x06+\x01\"&=\x016\xc0\x13\r\x10\x1b%%\x1b\x10\r\x13\xb0\x10\r\x13\x13\r\x10\x1b%%\xf4Ҕ\x035%\xb6\x14\x1c\x1c\x14 \x14\x1cf\x11\x19z\xacz\t\a\x10\a\t\x03\xf0p\r\x13%\x1b0\x1b%\x13\x9d\x13\rp\r\x13%\x1b0\x1b%\x01`\x97i\xa6%5\x1c(\x1c\x1c\x14\x19\x11\xa4\x02VzzV\x10\a\t\t\a\x10i\x00\x03\x00\x00\xff\xc0\x02!\x01\xc1\x00\x03\x00\x11\x00\x1b\x00\x00\x157\x17\a\x137\x17\a\x06/\x01\a'7'&54%\x1e\x01\x0f\x01'76\x16\x17DC#\x19)\xad#\x10\x16+3`3\r\x02\x01\xa0\x0f\x02\x0f\xaa\xa9\xc7\x10+\x10 FC#\x01\x10#\xad*\x11\a\r3`3+\x05\x06\x10\xac\x10+\x10ǩ\xaa\x0f\x02\x0f\x00\x00\x00\x00\b\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x13\x00'\x00;\x00G\x00S\x00_\x00k\x00s\x00\x00\x01&'&'&6;\x012\x17\x16\x17\x16\x17\x16\x06+\x01\"'&'&'&6;\x012\x17\x16\x17\x16\x17\x16\x06+\x01\"\x172\x16\x1d\x01\x14\x06#!\"&=\x0146;\x012\x1f\x01\a54+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012\x00\"&462\x16\x14\x01\x9e\x05\x1b+\a\x01\n\a\x10\x0e\x02\x05\x1b+\a\x01\n\a\x10\x0en\x05\x1b+\a\x01\n\a\x10\x0e\x02\x05\x1b+\a\x01\n\a\x10\x0e\xac\r\x13%\x1b\xfe\x80\x1b%%\x1b+\x15\x11o\x80\b\x10\b\b\x10\b`\b\x10\b\b\x10\b`\b\x10\b\b\x10\b`\b\x10\b\b\x10\b\xfe\xbb6%%6%\x01\x0e(\x16$>\a\v\x0e(\x16$>\a\v\x0e(\x16$>\a\v\x0e(\x16$>\a\v@\x13\r\xa0\x1b%%\x1b\xe0\x1b%\rS\xb8p\b\bp\b\bp\b\bp\b\bp\b\bp\b\bp\b\bp\b\x01@%6%%6\x00\b\x00\x00\xff\xc0\x02@\x01\xc0\x00-\x00=\x00M\x00]\x00m\x00s\x00\x83\x00\x93\x00\x00\x01#\x1132\x16\x1d\x01\x14\x06+\x0154&+\x01\"\x06\x1d\x01#\"&=\x0146;\x01\x11#\"&=\x01463!2\x16\x1d\x01\x14\x06\x05\x15\x14\x16;\x0126=\x014&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x014&+\x01\"\x06'\x15\x14\x16;\x0126=\x014&+\x01\"\x06\x1726=\x014&+\x01\"\x06\x1d\x01\x14\x163\x1734&\"\x06%54&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x014&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x020\x10\x10\a\t\t\a\xf0\t\a \a\t\xf0\a\t\t\a\x10\x10\a\t\t\a\x02 \a\t\t\xfe\xc9\b\x05&\x05\b\b\x05&\x05\b\b\x05&\x05\b\b\x05&\x05\b\x80\b\x05&\x05\b\b\x05&\x05\b3\x05\b\b\x05&\x05\b\b\x053\xc08P8\x01\x00\b\x05&\x05\b\b\x05&\x05\b\b\x05&\x05\b\b\x05&\x05\b\x01\x80\xfe\x80\t\a \a\tP\a\t\t\aP\t\a \a\t\x01\x80\t\a \a\t\t\a \a\t-&\x05\b\b\x05&\x05\b\be&\x05\b\b\x05&\x05\b\b[&\x05\b\b\x05&\x05\b\b\x98\b\x05&\x05\b\b\x05&\x05\b\x80(88e&\x05\b\b\x05&\x05\b\be&\x05\b\b\x05&\x05\b\b\x00\x00\x00\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x16\x00\x1e\x007\x00D\x00Q\x00\x00\x01&=\x014;\x012\x1d\x01\x14\x17\x1e\x01\x1d\x01\x14+\x01\"=\x014\x056\x1f\x01#\"'6\x01\x1e\x01\x1d\x01\x14+\x01\"=\x014.\x01'&=\x014;\x012\x1d\x01\x14\x032\x1e\x01\x1f\x01#\".\x01/\x012!2\x16\x1d\x01\x14\x06+\x01\"&/\x01\x01\xbc<\b0\b(\x1a\x1e\b0\b\xfe\xe3$\x18qY\x97\x80Z\x01\xcf).\b0\b\x10\x1e\x15\x1d\b0\b\xb7\b\x13\x10\x06vY\b\x13\x10\x06u\x01\x01V\n\x0e\x0e\n\x11\r\x1c\bv\x01\v*AB\b\b>,\x1c\x129!\x1e\b\b\x1e,\x99\x06\x1b\x84P8\x01!\x1bW1\x1e\b\b\x1e\x19/'\r\x13%>\b\b>\v\xfe\xf1\x06\n\x06\x8a\x06\n\x06\x8a\x0e\np\n\x0e\r\t\x8a\x00\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00-\x005\x00\x00\x122\x16\x14\x06\"&4\x16264&\"\x06\x14\x174'654.\x01'&\x06\x1f\x01\x16\x14\x0f\x01\x06\x14\x1f\x01\x16\x14\x0f\x01\x06\x167>\x02264&\"\x06\x14\x91Α\x91Α\x9b\x1a\x13\x13\x1a\x13\xa8##\x11\"\x15\x06\x03\x06\x11\x15\x15\x11\x05\x05\x11\x15\x15\x11\x06\x03\x06\x1f)\v\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xceW\x13\x1a\x13\x13\x1a\xaf\x16\x0e\x0e\x16\n\x13\x0e\x01\x01\r\x03\a\t\x19\t\a\x02\v\x02\a\t\x1a\b\b\x02\x0e\x01\x02\x1b\xab\x13\x1a\x13\x13\x1a\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x17\x005\x00G\x00\x00\x122\x16\x14\x06\"&4\x17\x1665.\x01\"\x06\a\x14\x16?\x0162\x1f\x014'654.\x01'&\x06\x1f\x01\x16\x14\x0f\x01\x06\x14\x1f\x01\x16\x14\x0f\x01\x06\x167>\x017\x1665.\x02#\"\x06\a\x14\x16?\x0162\x17\x91Α\x91Α\xd1\x03\f\x02#&#\x02\f\x03\t\r&\rh##\x11\"\x15\x06\x03\x06\x11\x15\x15\x11\x05\x05\x11\x15\x15\x11\x06\x03\x06\x1f)A\x03\f\x01\x12\x19\f\x13#\x02\f\x03\t\r&\r\x01\xb8\x91Α\x91\xceK\x06\x04\a\x1e))\x1e\a\x03\x05\x11\x16\x16\xb9\x16\x0e\x0e\x16\n\x13\x0e\x01\x01\r\x03\a\t\x19\t\a\x02\v\x02\a\t\x1a\b\b\x02\x0e\x01\x02\x1b\xb7\x06\x04\a\x14!\x12)\x1e\a\x03\x05\x11\x16\x16\x00\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xfc\x01\xb8\x00\x12\x00&\x00.\x00M\x00a\x00\x00%\x16\x06\x0f\x01\x06/\x01&>\x0176\x16\x1f\x0176\x16\a\x16\x15\x06#\"&462\x16\x15\x14\a&#.\x01\a\x06&264&\"\x06\x14\x174'654.\x02'&\x06\x1f\x01\x16\x14\x0f\x01\x0e\x01\x1f\x01\x16\x14\x0f\x01\x06\x167>\x01?\x0162\x1f\x01\x166'.\x03#\"\x0e\x01\a\x06\x16\x01\xf5\a\x11\x12S\n\x03\x17\x03\a\x12\f\x11\x1c\x04\x03\b\x10\x1f\xab\x17/4g\x91\x91Α\x11\v\b\x15T\x17\x11\xa0\x1a\x13\x13\x1a\x13\x98##\n\x13\x1b\x10\x06\x04\a\x11\x15\x15\x11\x04\x01\x05\x11\x15\x15\x11\x06\x03\x06\x1f)\x10\n\v'\v\t\a\x0e\x01\x01\f\x11\x14\n\r\x1a\x13\x02\x01\x0f.\x12!\x05\x16\x02\tS\f\x17\x10\x02\x02\x13\x10\t\x02\x05\x0f\vT\x01\x15\x91Α\x91g.,\x03%\x02#\x1c\u007f\x13\x1a\x13\x13\x1a\xaf\x16\x0e\x0e\x16\b\x0e\r\b\x01\x01\r\x03\a\t\x19\t\a\x02\v\x02\a\t\x1a\b\b\x02\x0e\x01\x02\x1b\xc2\t\t\t\t\x06\b\t\t\x10\v\x06\n\x14\f\t\b\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00%\x00\x00\x122\x16\x14\x06\"&4\x04\"\x06\x14\x16264&\"\x06\x14\x16264\x172676&#!\"\x06\x17\x1e\x013\x91Α\x91Α\x01U\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x1387Q\a\x01\n\a\xfe\xf2\a\n\x01\aQ7\x01\xb8\x91Α\x91\xce\a\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\xfdH6\a\v\v\a6H\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x19\x00.\x00<\x00\x00\x122\x16\x14\x06\"&4\x05\x06\x16?\x0162\x1f\x01\x166'.\x01#\"\x0e\x01\a\x06\x16?\x0162\x1f\x01\x166'.\x04#\"\x0e\x01\x056&#!\"\x06\x17\x1e\x01;\x0126\x91Α\x91Α\x01\x10\x01\r\x03\n\f&\r\t\x03\r\x01\x02#\x13\f\x18\x12\xa2\x01\r\x03\n\f&\r\t\x03\r\x01\x01\b\v\x0e\x0f\a\f\x18\x12\x01\x1d\x01\n\a\xfe\xf2\a\n\x01\aQ7\x107Q\x01\xb8\x91Α\x91\xce6\a\x03\x05\x11\x16\x16\x11\x05\x03\a\x1e)\x12!\x14\a\x03\x05\x11\x16\x16\x11\x05\x03\a\f\x16\x12\f\a\x12!w\a\v\v\a6HH\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x16\x00#\x001\x00\x00\x122\x16\x14\x06\"&4\x05\x06\x14\x1f\x01\x166/\x01764.\x01\x0f\x01\x17\a\x06\x16?\x0164/\x01&\x06\x056&#!\"\x06\x17\x1e\x01;\x0126\x91Α\x91Α\x01\x1a\x06\x06P\b\x0e\a!!\x03\x06\b\x04\xf3!!\a\x0e\bP\x06\x06P\b\x0e\x01\x1f\x01\n\a\xfe\xf2\a\n\x01\aQ7\x107Q\x01\xb8\x91Α\x91\xce\x11\x03\x0e\x030\x05\x0f\b((\x04\t\x06\x02\x03\x12((\b\x0f\x050\x03\x0e\x030\x05\x0f\xae\a\v\v\a6HH\x00\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x19\x00!\x00/\x00\x00\x122\x16\x14\x06\"&4\x05\x06\x16?\x0162\x1f\x01\x166'.\x02#\"\x06&\"\x06\x14\x16264\x176&#!\"\x06\x17\x1e\x01;\x0126\x91Α\x91Α\x01\f\x01\x0f\x06\n\v&\f\t\x06\x0f\x01\x02\x13\x1a\r\x14%Z\x1a\x13\x13\x1a\x13\xc7\x01\n\a\xfe\xf2\a\n\x01\aQ7\x107Q\x01\xb8\x91Α\x91\xce5\b\t\x06\t\t\t\t\x06\t\b\f\x14\n\x18\x1c\x13\x1a\x13\x13\x1a\u007f\a\v\v\a6HH\x00\x00\x00\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\t\x00\x13\x00A\x00L\x00P\x00\x007\"&=\x0146;\x01\x15%\x14\x06+\x01532\x16\x15\x132\x16\x1d\x01\x14\x06+\x01\x16\x15\x14\x06\"&547#\x16\x15\x14\x06\"&547#\"&5\x11#\"&=\x0146;\x012\x16\x15\x11\x01\x15#\x1146;\x012\x16\x15\a5#\x15\xe0\r\x13\x13\r \x01@\x13\r \r\x130\a\t\t\aS\x03\x1c(\x1c\x03\xc6\x03\x1c(\x1c\x03S\a\t0\a\t\t\a`\a\t\x01`\xc0\x1c\x14`\x14\x1c0`\x80\x13\r\xa0\r\x13\xe0 \r\x13\xe0\x13\r\xff\x00\t\a \a\t\b\b\x14\x1c\x1c\x14\b\b\b\b\x14\x1c\x1c\x14\b\b\t\a\x01p\t\a \a\t\t\a\xfe\x90\x01 \xe0\x01\x10\x14\x1c\x1c\x14000\x00\x04\x00\x00\xff\xbf\x02@\x01\xc0\x00\v\x00\x19\x00#\x00/\x00\x00\x122\x16\x15\x14\a\x06\"'&54\a7\x16\x17\x15\a\x06.\x02=\x0146\x162767\x15'5\x16\x17%6\x1e\x01\x1d\x01\x14\x0e\x01\x0f\x01\x11\xechJr\x05\x0e\x05r\x8ew\a\x0e\x8a\x04\b\x06\x04\f\xfe,\x0f!\x1a\xc0\x1a!\x01/\x06\t\a\x05\n\x05\x8c\x01\xc0J4>\x86\x06\x06\x86>4\x8e0\x16\x19\xe9?\x02\x02\x04\a\x04\xfa\t\x12\x8d\x11(%\xf6@\xb6%(\xb6\x02\x03\b\x06\xfa\x06\f\n\x028\x01 \x00\x00\x00\x00\x05\x00\x00\xff\xbf\x02@\x01\xc0\x00\v\x00\x13\x00!\x00+\x007\x00\x00\x122\x16\x15\x14\a\x06\"'&54\x16264&\"\x06\x14\a7\x16\x17\x15\a\x06.\x02=\x0146\x162767\x15'5\x16\x17%6\x1e\x01\x1d\x01\x14\x0e\x01\x0f\x01\x11\xechJr\x05\x0e\x05rm\"\x19\x19\"\x19\xe2w\a\x0e\x8a\x04\b\x06\x04\f\xfe,\x0f!\x1a\xc0\x1a!\x01/\x06\t\a\x05\n\x05\x8c\x01\xc0J4>\x86\x06\x06\x86>4^\x19\"\x19\x19\"I0\x16\x19\xe9?\x02\x02\x04\a\x04\xfa\t\x12\x8d\x11(%\xf6@\xb6%(\xb6\x02\x03\b\x06\xfa\x06\f\n\x028\x01 \x00\x00\x02\xff\xfe\xff\xbe\x02\x01\x01\xc1\x00\v\x00 \x00\x00?\x01\x17\a\x0e\x01\a\x06&7>\x01\x00\x16\x14\x0f\x01'7'\a\x06/\x01&?\x0162\x1f\x0176^K\x80K\"r/\f\x10\x01\x057\x01\x8f5\x1b\xa5\x80b\x13W\f\v\x17\v\vi\v!\f%\x15\x1b\x9eK\x80K\"7\x05\x01\x10\f/r\x01D5K\x1b\xa5\x80b\x14W\v\v\x17\v\vh\f\f$\x15\x1b\x00\x00\x04\xff\xfd\xff\xc0\x02\x03\x01\xc0\x00\t\x00\x13\x00\x1b\x004\x00\x00\x13\x06\a'&6;\x012\x17%2\x16\x0f\x01&'763\x062\x16\x14\x06\"&4\x056&/\x02&\"\x0f\x02\x0e\x01\x1f\x01\a\x06\x16?\x01\x17\x166/\x01\xe0?/o\x06\t\no\x12\n\x01U\n\t\x06o/?E\n\x12ʒgg\x92g\x01\r\x05\x05\a4\x18\x03\x0e\x03\x184\a\x05\x05&\t\x01\f\x06//\x06\f\x01\t\x01=\n+\x9f\b\x11\x10\x10\x11\b\x9f+\ns\x10\xa0g\x92gg\x926\x05\r\x01\b/\a\a/\b\x01\r\x05%4\a\t\x03\x19\x19\x03\t\a4\x00\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x00\x122\x16\x14\x06\"&4\x16264&\"\x06\x14\x16264&\"\x06\x14\x91Α\x91Α\x9b\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xceW\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x19\x00!\x003\x00\x00\x122\x16\x14\x06\"&4\x17\x14\x162654'\x16\x15\x14\x06\"&547\x06\x1724+\x01\"\x14362654'\x16\x15\x14\x06\"&547\x06\x15\x14\x91Α\x91ΑX&4&\"\x02\x13\x1a\x13\x02\"\xe0\x10\x10\x80\x10\x10\x864&\"\x02\x13\x1a\x13\x02\"\x01\xb8\x91Α\x91\xceG\x1a&&\x1a&\x12\x06\x02\r\x13\x13\r\x02\x06\x12\xd6 p&\x1a&\x12\x06\x02\r\x13\x13\r\x02\x06\x12&\x1a\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc7\x00\x0f\x00\x1a\x00*\x00\x00!2\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\x13!\x136?\x016\x1f\x01\x16\a54&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x01p\a\t\t\a\xfe\xa0\a\t\t\a\x01\x11\x1f\xff\x00\x1f\x01\bM\v\vM\b0\b\x05F\x05\b\b\x05F\x05\b\t\a \a\t\t\a \a\t\x01[\xfe\xc5\x01;\f\bL\f\fL\b\xda&\x05\b\b\x05&\x05\b\b\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x03\x01\xc0\x00\t\x00+\x00\x00\x01\a#7632\x17\x1e\x01\a2\x16\x1d\x01\x14\x06+\x01\x14\x06\a\x16\x17\x16\x06+\x01\"&767.\x015#\"&=\x01463\x01\xf6d\x97\xcc\t\f\t\a\x11\x05\x12\a\t\t\a\x10C6\x14\x05\x01\n\a\xe0\a\n\x01\x05\x146C\x10\a\t\t\a\x01\x83c\x99\a\x04\b$\x90\t\a \a\t\x017\x1e\x02\x1f\x01673\x06\x132\x16\x15\x11\x14\x06#!\"&5\x11463\x01264&+\x01\"\x06\x14\x1636264&\"\x06\x147\x16\x17#&\x82\b-\f\x02''\x02\f-V\a\x0f\x01.\x01\x0f\x1e\x01\x0f\a\x04\n\b\x01\x12\f\x02'\bj\r\x13\x13\r\xfe\xa0\x1b%%\x1b\x01\x10\a\t\t\a\xe0\a\t\t\a;jKKjK\xa9-\b'\x02\x01\x101\x15\x1d) )\x1d\x15\x1e\a*\x1e\x1e*h\x1e*\a\x05\x12#\x15f\x1d)1\x01\x01\x13\r\xfe@\r\x13%\x1b\x01\x80\x1b%\xfe`\t\x0e\t\t\x0e\t`KjKKj\x8b\x151)\x00\x00\x02\x00\x00\xff\xc0\x02\a\x01\xcc\x00\x17\x00\x1e\x00\x00?\x01\x17\a\x06\x0f\x01'7\x163264&\"\x06\x15\x14\x17\a'76\x016\x1e\x01\x0f\x01'OTc!\x05\x0f\xb1\x05]\x06\x02\r\x13\x13\x1a\x13\x02]\x05;\x05\x011#]\x16$\xc7b\xa5!cT\x0f\x05;\x05]\x02\x13\x1a\x13\x13\r\x02\x06]\x05\xb1\x0f\x01\x04'\x1eT(\xb7b\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x01\x01\xc1\x00\x1c\x00&\x00\x00\x137\x17\a\x0e\x01\a\x05'7\x163264&\"\x06\x15\x14\x17\a'\x13>\x04%\x16\x14\x0f\x01'762\x17\x89\x97\x80+\x04\x18\r\xfe\xe8\x0f\x96\n\v\x14\x1c\x1c(\x1c\x05\x96\x0f]\x02\a\b\n\v\x01o\x0e\x0e9\x809\x0e(\x0e\x015+\x80\x97\x0e\x19\x05]\x0f\x96\x05\x1c(\x1c\x1c\x14\v\n\x96\x0f\x01\x18\x05\v\t\t\x06B\x0e(\x0e9\x809\x0e\x0e\x00\x00\x00\x04\xff\xfe\xff\xbe\x02\x01\x01\xc1\x00\x12\x00\x1c\x00$\x006\x00\x007'&4?\x0162\x1f\x01\a\x06\x1f\x01\x162?\x01\x1f\x01\a'762\x1f\x01\x16\x14'\x17\x01\a\x06&?\x01%\x16\x14\x0f\x01\x06\"/\x017\x17\a\x06\x1f\x01\x16?\x01md\t\tZ\t\x1b\t\">\x06\x06\v\x02\a\x02>,\xfe.q.\x0e(\x0e-\x0e\xc4q\xfe\xd7k\v\x10\x02\x13\x01\xe4\t\tZ\t\x1b\td\x87,>\x06\x06\v\x06\x05>\xccd\t\x1b\tZ\t\t\">\x05\x06\v\x02\x02>,\x12.q.\x0e\x0e-\x0e(\x1eq\xfe\xd7\x13\x02\x10\vk\f\t\x1b\tZ\t\te\x86,>\x05\x06\v\x06\x06>\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x80\x01\xc2\x00\x0f\x00.\x00\x00!2\x16\x1d\x01\x14\x06#!\"&=\x014637&=\x0146\x1f\x01\x16\x1f\x02'46\x1f\x01\x16\x1f\x02\x16\x17\x16\x06\a\x06'%&'\x02p\a\t\t\a\xfd\xa0\a\t\t\a\x1d\r\r\b'\b\x03\x1cf0\r\bA\t\x03db+\x1c\x1d\r(&+\xfe\xe0\x0e\v\t\a \a\t\t\a \a\t\xf2\v\re\t\t\x02\v\x02\bC\x1c\xa4\b\v\x03\x11\x03\t\xc0\x1b\v\x1d\x1e1\v\v\fN\x04\n\x00\x00\x00\x02\xff\xfe\xff\xc0\x02\x89\x01\xa1\x00\x0f\x001\x00\x00!2\x16\x1d\x01\x14\x06#!\"&=\x014637'&6?\x0162\x1f\x017'&6?\x01632\x1f\x0176\x17\x1e\x01\a\x06\a\x05\x06+\x01\"\x02p\a\t\t\a\xfd\xa0\a\t\t\aAM\x05\x03\b(\x04\b\x04Hh\x9d\x06\x04\bA\x04\x04\x06\x04\xdbc++.\x18\x19\x17,\xfe\xdd\x0e\x10\x82\x0f\t\a \a\t\t\a \a\tkS\x06\x12\x04\x14\x02\x02$4b\a\x12\x04!\x02\x03R2\x16\x03\x031'$\x16\x94\a\x00\x00\x02\x00\x00\xff\xd9\x01\x87\x01\xa0\x00*\x002\x00\x00%\x17\x16\x0f\x01\x06/\x01\a\x06/\x01&?\x01'#\x15\x14\x06+\x01\"&5\x1146;\x012\x16\x15\x14\x06\a\x1776\x1f\x01\x16\a%\x153264&#\x01-N\f\f\x16\f\vNN\v\f\x16\f\fN\x80\x13\t\a \a\t\t\a\x90(80$TN\v\f\x16\f\f\xfe\xc5`\r\x13\x13\r`N\v\f\x16\f\fNN\f\f\x16\f\vN\x80P\a\t\t\a\x01\x00\a\t8($6\x05TN\f\f\x16\f\v\xb2@\x13\x1a\x13\x00\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\x1b\x00.\x006\x00J\x00\x00\x122\x16\x15\x14\x06\a54&\"\x06\x1d\x01\x06\"'54&\"\x06\x1d\x01.\x0154\x1f\x01\x166'.\x03#\"\x06\a\x06\x16?\x0162\x16264&\"\x06\x1476'.\x03#\"\x06\a\x06\x16?\x0162\x1f\x01\x16\x91ΑA7\t\x0e\t.d.\t\x0e\t7A\xb6\n\x06\x0f\x01\x01\f\x11\x14\n\x14%\x03\x01\x0f\x06\n\v&9(\x1c\x1c(\x1c\xc6\a\x01\x01\f\x11\x14\n\x14%\x03\x01\x0f\x06\n\v&\f\t\x06\x01\xb8\x91gBq!\xb4\a\t\t\a\xc5\x13\x13\xc5\a\t\t\a\xb4!qBgG\t\x06\b\t\t\x10\v\x06\x18\x12\t\b\x06\t\t\xc9&4&&4\x90\x03\t\t\x10\v\x06\x18\x12\t\b\x06\t\t\t\t\x06\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1b\x00#\x00.\x00\x00\x122\x16\x14\x06\"&4\x04\"\x06\x14\x16264\x062654'&\"\a\x06\x15\x146264&\"\x06\x14\x17\x16>\x01'&#\"\x1432\x91Α\x91Α\x01U\x1a\x13\x13\x1a\x13\xe4(\x1c*\x02\b\x02*3\x1a\x13\x13\x1a\x13\xca\x06\x13\x05\x05-F\x10\x107\x01\xb8\x91Α\x91\xce\x17\x13\x1a\x13\x13\x1a\xdd\x1c\x13\x177\x03\x037\x17\x13\x94\x13\x1a\x13\x13\x1a\xad\b\x04\x10\b6 \x00\x00\x00\x06\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\x1d\x00!\x00)\x00-\x005\x009\x00\x00%\x16\x1d\x01\x14\x06+\x01\x14\x06\"&5#\x14\x06\"&5#\"&5\x11463!2\x17\x0535#\x12264&\"\x06\x1475#\x15\x16264&\"\x06\x14'3'#\x02u\v\x13\r 8P8\x808P8 \r\x13\x13\r\x01\xaa\x16\x0e\xfeR``L(\x1c\x1c(\x1c\xd0`\xec(\x1c\x1c(\x1c0\x92PB\xed\r\x11o\r\x13(88((88(\x13\r\x01 \r\x13\x11\x8f`\xfe\xb0\x1c(\x1c\x1c(\xd4``\xf0\x1c(\x1c\x1c(\xd4`\x00\x00\x01\xff\xf9\x00\x00\x02\x80\x01\x83\x00=\x00\x00\x012\x16\x1d\x01\x14\x0e\x01#\x0e\x03\a\x06#\"'&7\x06\a\x06#\"&?\x016&\x0f\x01\x06&/\x01&?\x016\x1e\x02\x0f\x01>\x0176\x1e\x01\x14\a\x06\x1e\x01327>\x02\x02o\a\n\x04\a\x04\x0e)\"(\nC#+\x17\x19\x05M\x86\n\r\x13\x10\x05b\a\x19\x0e:\x06\r\x03\x12\b\r7\x1c:&\x13\r*KJ\x15\x13\x15\x04\x01\x03\x02\v\v\x166\nE=\x01\x00\t\a \x04\a\x05\x01\x11\x14\x18\x04\x1e\x19\x1c8=\x87\t\x1e\x0e\xf6\x0e\x15\b'\x04\x03\x06\x1b\r\t%\x11\x05#3\x1dhG6\x01\x01\x13!\x11\b\x12\x17\v\x18\x05'\x1a\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x1b\x00'\x009\x00\x00\x122\x16\x14\x06\"&4\x17\x06\x16?\x0162\x1f\x01\x166'.\x04#\"\x06\x176&\a\x06\"'&\x06\x17\x1627\x166'.\x02#\"\x06\a\x14\x16?\x0162\x17\x91Α\x91Αp\x01\r\x03\n\f&\r\t\x03\r\x01\x01\b\v\x0e\x0f\a\x13#\xf9\n\x19\n#n#\n\x19\n-\x8c3\x03\r\x01\x01\x12\x19\f\x13#\x02\f\x03\t\r&\r\x01\xb8\x91Α\x91\xceF\a\x03\x05\x11\x16\x16\x11\x05\x03\a\f\x16\x12\f\a)\x99\f\x14\f**\f\x14\f6\xac\x05\x03\a\x14!\x12)\x1e\a\x03\x05\x11\x16\x16\x00\x00\x00\b\x00\x00\xff\xbf\x02\x80\x01\xc0\x00\x14\x00(\x00,\x000\x004\x008\x00<\x00@\x00\x00!2\x16\x1d\x01\x14\x06+\x01\"&=\x014>\x01;\x0153\x15\x13\x12\x15\x14\x0e\x01#!\"&54\x13>\x023!2\x16\x05\a3'\x037#\a?\x01#\a\x173'#7\x173'\x033'#\x01\xb0\a\t\t\a\xe0\a\t\x04\b\x040\x80\xc97\t\x0f\t\xfd\xc2\x0e\x137\x01\t\x0e\b\x01\xd2\f\x12\xfe\xbd\n\x8c\n\xc3\vj\x13\x82\n`\x11\x88\xac\v\x96\xb8\ng\x11Fr\x13j\t\a \x06\n\t\a \x04\a\x05 \x01\xa5\xfe\xbd\x02\t\x0e\t\x13\r\x03\x01B\b\f\a\x0f1``\xff\x00pp\xa0``\xa0p\x90``\xff\x00p\x00\x00\x00\x00\x02\xff\xff\xff\xe0\x02A\x01\xa4\x00\x1e\x00,\x00\x00\x012\x15\x14\x0e\x02\a\x06\"'.\x035432\x1e\x02\x17\x16\x1767>\x03\x05&'&'676\x17\x16\x17\x06\a\x06\x028\b\x06\x0f'\x1dS\xe8S\x1d'\x0f\x06\b\x10'?D\x1c+\x17\x17+\x1cD?'\xfe\xf8\x13\x1a\x1a!\x1aF\b\bG\x19\"\x1a\x19\x01\x00\b\x0f%;?\x19QQ\x19?;%\x0f\b\x05\x0f$\x1b'88'\x1b$\x0f\x05o\x1d\x17\x19\x13o=\a\a=o\x13\x1a\x16\x00\x01\xff\xf4\xff\xd7\x02\x03\x01\xa7\x00\"\x00\x00%\x1e\x01\x0f\x01\x06\x0f\x01\x0e\x01/\x01&\x0f\x01\x06&?\x016/\x01&6\x1f\x01\x16?\x016\x16\x1f\x01\x16\x17\x01\xd8%\x06\">\x1c\x02\x05\x03H\x1e6\x19 F&3\x10\x1c\r\x12&\x15)'H!\x15.\x19L\t\x10\a\x1f\xfc\fC\x12\x1f\x0f\x1c>\"\x1a\x17(\x13\a\x0f\t4\x1f9\x1a\x184\x1d9\x03\x06\x02\x16/\x1a\x0f!=\x1b\v\x00\t\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\t\x00\x11\x00!\x00)\x001\x009\x00A\x00I\x00Q\x00\x00\x13\x15#546;\x012\x1e\x012\x16\x14\x06\"&4\a2\x16\x1d\x01\x14\x06#!\"&=\x01463\x12264&\"\x06\x14\x00\"&462\x16\x14\x062\x16\x14\x06\"&4&2\x16\x14\x06\"&462\x16\x14\x06\"&4\x162\x16\x14\x06\"&4\xe0\x80\x13\r@\r\x13\xf3\x1a\x13\x13\x1a\x13\xe0(8\x13\r\xff\x00\r\x138(\x1fB//B/\x01\x9d\x1a\x13\x13\x1a\x13\x8d\x1a\x13\x13\x1a\x13M\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13\x01\xa0``\r\x13\x13m\x13\x1a\x13\x13\x1a\r8(\xe0\r\x13\x13\r\xe0(8\xff\x00/B//B\x01\x11\x13\x1a\x13\x13\x1a3\x13\x1a\x13\x13\x1as\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\xad\x13\x1a\x13\x13\x1a\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc7\x00\x03\x00*\x00\x00\x175!\x15\x032\x16\x1d\x01\x14\x06#!\"&=\x0146;\x0126=\x014'&546\x17\x1e\x01\x17\x16\a\x06\x1d\x01\x14\x163 \x01\xc0@(8\x13\r\xfe@\r\x138(C\f\x11\x17\tD-\x1d+\x06\x05\x0f\x15\x11\f@@@\x01\x008( \r\x13\x13\r (8\x11\f\x01(2\x13\x15,:\b\x05+\x1d \x1c*$\n\f\x11\x00\x00\x02\xff\xfb\xff\xc0\x02\x1d\x01\xc0\x00\x1c\x00'\x00\x00\x01\x1e\x01\x0f\x01\x17\x16\x06#\"/\x01\a\x06#\"&?\x01'&6?\x0262\x1f\x027/\x03\x11\x1f\x01/\x01\x01\xfd\x13\r\x0fj\x19\x03\x14\x0e\b\a\x83\x83\a\b\x0e\x14\x03\x19j\x0f\r\x13\x93A\t(\tA\x19Rr\x19\v3\x16f\x13\x04\x01\x14\x02&\x0eg\x92\x0f\x16\x04DD\x04\x16\x0f\x92g\x0e&\x03\x15\x84\x12\x12\x84\x91Q\x10\x04\x17g\xfe\xc3\f6r\x19\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00#\x00/\x00;\x00I\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&=\x01#\"&=\x01463\x0554+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012'\x15#546;\x012\x16\x1d\x01#5\x01P\x14\x1c\x1c\x14\x10\t\a \a\t\x80\t\a \a\t\x10\x14\x1c\x1c\x14\x01\x10\b\xf0\b\b\xf0\b\b\xf0\b\b\xf0\b\xb00\x1c\x14`\x14\x1c0\x01 \x1c\x14\xe0\x14\x1c\x10\a\t\t\a\x10\x10\a\t\t\a\x10\x1c\x14\xe0\x14\x1c\xd8\x10\b\b\x10\bh\x10\b\b\x10\b\xf0PP\x14\x1c\x1c\x14PP\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00\x00\x122\x16\x14\x06\"&4\x16\x14\x16264&\"\x16264&\"\x06\x146264&\"\x06\x14\x91Α\x91Α\x88\x13\x1a\x13\x13\x1aC4&&4&\x83\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xce*\x1a\x13\x13\x1a\x13\xf0&4&&4\x8a\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x06\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\n\x00\x17\x00%\x00-\x001\x005\x00\x00\x01\x16\x14\x0f\x01\x117362\x1f\x012\x16\x1d\x01\x14\x06#!>\x01?\x01\x03\x11\x14\x06\"&5\x1146;\x012\x16\x02264&\"\x06\x1475#\x1575#\x15\x01\xb3\t\t\xd3K\x01\t\x1a\t\x88\r\x13\x13\r\xfe\xd4\x01\x05\x01\xba\xb58P8\x13\r\x80\r\x13j\x14\x0e\x0e\x14\x0e8@@@\x01\x18\t\x1b\t\xd3\x01\x0fL\t\t\xf3\x13\r\x80\r\x13\x01\x03\x01\xbb\x01 \xfe\x80(88(\x01\x80\r\x13\x13\xfe[\x0e\x14\x0e\x0e\x14\xaa@@\x80@@\x00\x00\x00\x00\x03\x00\x00\x00 \x02\x80\x01h\x00\x1f\x00T\x00\\\x00\x007&'76?\x016\x1f\x01\x1e\x01\x0e\x01/\x01&\x0f\x01\x17\x06\a\x06\"'&+\x01\"\a\x06\"\x052\x16\x1d\x01\x14\x06+\x01\"'\x06\"'\x06\"'\x06+\x01\"&=\x0146;\x01276;\x012\x17\x16276;\x012\x17\x16276;\x012\x17\x163$\"&462\x16\x14\xbe\a\tD\v\x10P(1d\x13\x16\b\"\x13d\a\x06\x12q\x1b\x17\n0\n\x19\x1d\x10\x1d\x19\n0\x01\xa8\a\t\t\a\x10:&&t&&t&&:\x10\a\t\t\a\x10%\x13\x0f\x11\x10\x11\x0f\x13J\x13\x0f\x11\x10\x11\x0f\x13J\x13\x0f\x11\x10\x11\x0f\x13%\xfe1B//B/\x89\a\x05b\x10\v9\x1d\n\x16\x04\"&\x16\x04\x16\x01\x04\rP\x02\x15\t\t\x17\x17\t \t\a \a\t \t\a \a\t\x12\x0e\x0e\x12\x12\x0e\x0e\x12\x12\x0e\x0e\x12`/B//B\x00\x02\x00\x00\xff\xe0\x02\x80\x01\xa0\x004\x00j\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"'\x06\"'\x06\"'\x06+\x01\"&=\x0146;\x01276;\x012\x17\x16276;\x012\x17\x16276;\x012\x17\x163%\"'&'5462\x16\x1d\x01\x14\x06+\x01\"&=\x014&\"\x06\x1d\x0135462\x16\x1d\x01\x14\x06+\x01\"&=\x014&\"\x06\x1d\x01\x06\a\x06#5#\x02p\a\t\t\a\x10:&&t&&t&&:\x10\a\t\t\a\x10%\x13\x0f\x11\x10\x11\x0f\x13J\x13\x0f\x11\x10\x11\x0f\x13J\x13\x0f\x11\x10\x11\x0f\x13%\xfe\x80\x18\n\x0e\x108P8\t\a \a\t\x13\x1a\x13\xc08P8\t\a \a\t\x13\x1a\x13\x10\x0e\n\x18\xc0 \t\a \a\t \t\a \a\t\x12\x0e\x0e\x12\x12\x0e\x0e\x12\x12\x0e\x0e\x12 \t\r\x06\xe4(88(\x10\a\t\t\a\x10\r\x13\x13\r``(88(\x10\a\t\t\a\x10\r\x13\x13\r\xe5\x05\r\t`\x00\x00\x00\x02\xff\xf9\xff\xb9\x02\x87\x01\xc7\x00\x18\x00 \x00\x00\x05\x16\x0f\x01\x06'\x01&?\x016\x1f\x016762\x17\x1e\x03\x15\x14\a%47\x05\x06#\"&\x02z\f\t\x14\n\f\xfd\xb3\f\t\x14\n\f\xbb(\x13\a-\x06\x106,!\x01\xfe\xa1\x13\x01\x112BIg\n\n\r\x19\f\t\x01\xc7\n\r\x19\f\t\x91>@\x16\x164_6I&\x06\v\x11(&\xd3-h\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x16\x00#\x002\x00\x00\x122\x16\x14\x06\"&4\x05\x06\x14\x1f\x01\x166/\x01764.\x01\x0f\x01\x17\a\x06\x16?\x0164/\x01&\x06\x16\"\x06\a\x06\x1e\x01762\x17\x166'&\x91Α\x91Α\x01\x1a\x06\x06P\b\x0e\a!!\x03\x06\b\x04\xf3!!\a\x0e\bP\x06\x06P\b\x0e\xb1RM\x05\x01\x05\t\x04)\x82)\a\v\x01\x05\x01\xb8\x91Α\x91\xce-\x03\x0e\x030\x05\x0f\b((\x04\t\x06\x02\x03\x12((\b\x0f\x050\x03\x0e\x030\x05\x0f\x80>-\x06\v\x05\x02\x11\x11\x03\r\n-\x00\x00\x00\x01\xff\xf5\xff\xc0\x01\xcb\x01\xc9\x003\x00\x00\x01\x16\a\x06\a\x06\x0f\x01\x0e\x01#\".\x01/\x01.\x01\"\x06\x0f\x01\x0e\x01\"&/\x01&'&'&7>\x0176\x1f\x01\x16676/\x01676\x17\x1e\x01\x01\xbc\x0f%\x1e\x06\b\r\b\x02\x11\n\a\f\t\x02\"\x04\x16\x1c\x16\x04\"\x03\x10\x15\x11\x02\b\r\b\x06\x1e%\x0f\b2\" #d\x06\r\x03\t\r\x1d\n\x010)\"2\x01`>1(CS9\"\v\r\x06\n\a\x8b\r\x12\x12\r\x8b\n\r\r\v\"9SC(2=\"3\b\t\x13@\x04\x03\x05\x0e\b\x13\x04\x01#\v\b3\x00\x04\x00\x00\xff\xc0\x02\x82\x01\xc4\x00\t\x00\x12\x00\x1d\x001\x00\x00\x13.\x017>\x01\x17\x0e\x01\a\x17>\x0132\x17\x1e\x01\a7\x1e\x01\a\x14\x06/\x016'&\x132\x16\x1d\x01\x14\x06#!\"&=\x0146;\x017\x17\as\a\x05\x05-\x84G'I\x1b\x1f!`+\r\n.\x18\x1b#:?\x02\x0e\bf\x1b\b\x04\x1d\a\t\t\a\xfd\xe0\a\t\t\a\xedI\x01;\x01&54632\x1e\x01\x15\x14\a32\x1e\x01\x17&264&\"\x06\x14\x01\xfe\a\x1d\x18\xfe`\x18\x1d\aI\x03\x11\v<\x068(\x1a,\x1a\x06<\b\f\t\x02\xc2\x1a\x13\x13\x1a\x13\x02\x19))\x19\x01$\f\x0e\x10\x10(8\x1a,\x1a\x0f\x11\x06\f\b\x1a\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x02\xff\xfb\xff\xc0\x01%\x01\xc0\x00\x1e\x00\"\x00\x00\x172\x16\x15\x14+\x01\"546;\x015.\x01?\x014>\x01;\x012\x16\x15\x17\x16\x06\a\x15\x03\a3'\xd8\x11\x17\b\xd0\b\x17\x11(4@\x05\x10\x04\a\x04\xe0\x06\t\x10\x05@4r\a\xb2\a\x10\x17\x11\b\b\x11\x17u\fW7\xb2\x05\x06\x04\b\a\xb27W\fu\x01\xa0PP\x00\x03\xff\xfc\xff\xc0\x01\x84\x01\xc0\x00/\x007\x00;\x00\x00%\x16\x06+\x01\x1532\x16\x1d\x01\x14\x06#!\"&=\x0146;\x015#\"&?\x01#\"&?\x01&5462\x16\x15\x14\a\x17\x16\x06+\x01&\"\x06\x14\x16264\x13#\x153\x01{\t\f\x0e\x8ap\a\t\t\a\xfe\xe0\a\t\t\ap\x8a\x0e\f\t^1\v\n\ar\x06\x1c(\x1c\x06r\a\n\v1V\x0e\t\t\x0e\t`\xe0\xe0\u007f\n\x15 \t\a`\a\t\t\a`\a\t \x15\na\x13\t~\v\v\x14\x1c\x1c\x14\v\v~\t\x13\xc0\t\x0e\t\t\x0e\xfey \x00\x00\x00\x02\xff\xfc\xff\xbf\x01\xc4\x01\xc0\x00\"\x005\x00\x00\x01\x16\x17\x16\x17\x16\a\x06\a\x06#\"'&\"\a\x06#\"'&'&767676\x17\x16\x17676'\x06\a\x06#'&7676763\x1f\x01\x14\a\x06\x01_'\x19\x16\b\a\b\f$+A\x10\x13\r \r\x13\x10A+$\f\b\a\b\x16\x19'\x18*$\x19\x19$*\x1f\x0e\x17\x10\x13\x0f\x02\x02\x04\x13\x0e\x17\x10\x13\x0f\x01\x05\x06\x01?\a#\x1f/++G0:\n\b\b\n:0G++/\x1f#\a\x04\v\n\x0e\x0e\n\v%\r\x06\x05\x01\x0e\x12$\x13\r\x06\x05\x01\x0f\x13\x10\x17\x00\t\xff\xec\xff\xc0\x01\xd4\x01\xc0\x00\n\x00#\x00+\x006\x00=\x00D\x00L\x00T\x00_\x00\x0072\x1e\x01\x15\x14\x06\"&467\x16\a\x16\a\x06'\x06\"'\x06\".\x01'&7&76\x1762\x176\x01\x167&'&'\x06767\"&#\"\a\x06\x17>\x01\"\a\x16\x1767\x0227&'\x06\a6264&\"\x06\x14\x176'\x06\a\x06\a\x16'6'&#\"\x06#\x16\x17\x16\xe0\t\x0e\t\x13\x1a\x13\x13\xe3\x1e77\x1e\x1dW$|$\v\x15(\"\n\x1e77\x1e\x1dW$|$W\xfe\xa6\a%\x05\x02\v\v\x16,\x03\x04\x01\x04\x01\x1f\a\a\x16\v\x97 \x12\x11\x11\x11\x112 \x12\x11\x11\x11\x11\x01B//B/\xf1\a\x16\v\v\x02\x05%\b\x16\a\a\x1f\x01\x04\x01\x04\x03\v\xe0\t\x0e\t\r\x13\x13\x1a\x13`5KK54\nVV\x01\x04\x15\x125KK54\nVV\n\xfe\xec\f\x01\x16\x12\t\n#\x96\x14\x14\x01\f\r#\n\x86%\x06\a\a\x06\xfe\xa5%\x06\a\a\x06K/B//B?\r#\n\t\x13\x15\x01\x9c#\r\f\x01\x14\x14\t\x00\x00\x00\x00\x01\x00\x00\x00 \x02\x80\x01`\x00O\x00\x00%\x06\x14\x17\x1e\x01\x1d\x01\x14\x06#\"&'4.\x04#!\"\x0e\x06\a\x0e\x01#\"&=\x0146764'.\x01=\x014632\x1e\x01\x17\x14\x1e\x043!2>\x055>\x0132\x16\x1d\x01\x14\x06\x02W\a\a\x13\x16,\x1e\x18'\b\x06\x02\x06\a\n\a\xfe\xee\x05\b\x06\x05\x04\x04\x01\x04\x01\b'\x18\x1e,\x16\x13\a\a\x13\x16,\x1e\x10\x1d\x15\x05\x06\x02\x06\a\n\a\x01\x12\x05\t\a\x05\x05\x01\x06\b'\x18\x1e,\x16\xcb\x03\x10\x03\n$\x15\b\x1e,\x1c\x17\x01\x11\x05\r\x04\x05\x02\x03\a\x04\n\x05\f\x02\x17\x1c,\x1e\b\x15$\n\x03\x10\x03\n$\x15\b\x1e,\r\x17\x0f\x01\x11\x05\r\x04\x05\x02\x06\x04\f\x04\x10\x01\x17\x1c,\x1e\b\x15$\x00\x00\x03\x00\x00\xff\xbe\x02\x01\x01\xc0\x00\a\x00\x18\x00+\x00\x00\x00\x14\x06\"&462\a\x16\x1d\x01\x14\x06'&'.\x01=\x0146\x17\x16%2\x1e\x01\x1d\x01\x14\x06\a\x06\a\x06.\x01=\x01476\x01`8P88P>\x06\r\aF|\v\x0f\x12\f\x88\x01<\b\x0e\b\x0f\v|E\x05\n\x06\x06D\x01\x88P88P8\xf1\x04\b\xf6\a\b\x04#\x06\x01\x0f\v\xdf\f\x10\x01\b\b\a\f\b\xdf\v\x0f\x01\a\"\x03\x02\b\x04\xf6\b\x04)\x00\x02\x00\x00\xff\xc0\x02@\x01\xc0\x00%\x00K\x00\x00\x132\x16\x15\x11\x14\x06#\"&'\x06#\"&547.\x01547&5467&5463021>\x01\x01\x14\x06\a\x16\x15\x14\x06#\"'\x0e\x01#\"&5\x114632\x16\x170212\x16\x15\x14\a\x1e\x01\x15\x14\a\x16\xd0\x1a&*\x1e\x17&\a\a\x05\x1e*\x01\x16\x1b(\b\x1b\x17\x02&\x1a\x02\x06\"\x01\x86\x1b\x16\x01*\x1e\x05\a\a&\x17\x1e*&\x1a\x16\"\x06\x02\x1a&\x02\x17\x1b\b(\x01\xc0&\x1a\xfe\x88\x1e*\x1b\x16\x01*\x1e\a\a\t(\x19.\x17\x11\x12\x19(\t\a\a\x1a&\x15\x1b\xfe\xd0\x19(\t\a\a\x1e*\x01\x16\x1b*\x1e\x01x\x1b%\x1b\x15&\x1a\x06\b\t(\x19\x12\x11\x17\x00\x00\x00\x00\x04\x00\x00\x00\x00\x01\xe0\x01\x80\x00+\x005\x00H\x00Y\x00\x00%\x1e\x01\x1d\x01\x14\a\x15\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&=\x01&=\x0146?\x02>\x03;\x012\x16\x1f\x01%\a!'.\x01+\x01\"\x06\a:\x02>\x0354&#\"\x0e\x02\x15\x14\x16!264&#\"\x0e\x01\x15\x14\x1e\x03:\x01\x01\xb7\x12\x17\x10\x13\r \r\x13\xff\x00\x13\r \r\x13\x10\x17\x12\f\x14\x06\x15\x1b \x11\x80\"9\f\x14\xfe\xd9\x14\x01\x00\x14\x05\x19\x0e\x80\x0e\x199\x02\r\x06\v\x06\a\x03\"\x0e\a\f\b\x05\x12\x01N\x0e\x12\x12\x0e\t\x17\x10\x03\a\x06\v\x06\r\xec\a!\x140\x18\x126\r\x13\x13\r \r\x13\x13\r6\x12\x180\x14!\a\x1c2\x0f\x1b\x12\n& 2\x1a22\r\x11\x11\xaf\x01\x02\x03\x06\x04\x0f!\x05\b\f\a\x0e\x12\x12\x1c\x12\x10\x17\t\x04\x06\x03\x02\x01\x00\x03\x00\x00\x00\x00\x02\x00\x01\x80\x00#\x00/\x00K\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01546;\x012\x16\x1d\x013546;\x012\x16\x1d\x01\x0554+\x01\"\x1d\x01\x14;\x012%54+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132\x01\xe0\r\x13\x13\r\xfe@\r\x13\x13\r \t\a`\a\t\x80\t\a`\a\t\xff\x00\bp\b\bp\b\x01\x00\b(\b\x10\b(\b\b(\b\x10\b(\b\x01@\x13\r\xff\x00\r\x13\x13\r\x01\x00\r\x130\a\t\t\a00\a\t\t\a0\x88\x10\b\b\x10\b\b\x10\b(\b\b(\b\x10\b(\b\b(\x00\x05\xff\xfe\xff\xbb\x02\x84\x01\xc2\x00*\x00f\x00z\x00\x88\x00\x9a\x00\x007\a\x06\x17\a\x06&?\x016/\x01.\x01?\x016/\x01&6\x1f\x01\x16?\x01>\x01\x1f\x01\x16?\x016\x16\x0f\x01\x06\x0f\x02\x0e\x01\x05\a\x06\a\x06\x0f\x01\x06\a\x06/\x01.\x01?\x01'\a\x0e\x01/\x01&'&?\x01&'&?\x01676?\x02676767676\x1f\x01\x16\x17\x16\x17\x16\x1f\x02\x16\x17\x16%&\x0e\x02\a\x06\x1e\x01\x17\x1e\x03>\x0276&\x05'&'&/\x01&#\"\x06\x0f\x01\x17\x16&\x06\a\x16\x06\x1e\x04\x17\x16>\x0276\x8f\f\x05\x02#\x05\v\x02\x0f\x02\nN\x06\x03\x05A\t\a2\x04\a\x06M\n\x01\a\x01\f\x04+\x06\a=\x05\v\x02\v\x05\x03 \v\x18%\x01\xe8\r\x04\r\x04\x05\x0e\x02\x04\r\x14\x1f\r\r\x03\t\xf8\b\x03\x17\r\x1f\x15\x02\x01\x01\x0e\x02\x02\x05\x05\f\b\x1d\t\n\x12 \x05\x06\f\x0f\a\b\x0f\x11\x11\x10{\x11\x0e\x15\x0e\r\x03\a\x03\x10\a\a\xfe}\a\r\n\b\x02\x02\x04\f\t\x02\f\a\n\a\a\x05\x01\x03\x18\x01\x15\x06\x01\x03\t\x16{\x06\a\t\x17\x06 \xacl\x1c)\x04\x01\x02\b\x03\f\x05\r\x02\a\r\n\b\x01\x04\xe3.\x10\x13\x1d\x04\a\x06M\n\x01\a\x01\f\x04+\x06\a=\x05\v\x02\x0f\x02\nN\x06\x03\x05A\t\a2\x04\a\x068\a\x03+\x0e\a$\x9d/\x11\f\x04\x034\a\x05\x10\x05\b\x04\x17\r\x1eC\x1f\r\r\x03\b\x06\x15\x06\a4\x05\x05\x12\x11.\x1e\f\x04\x01\x18+\a\x06\f\a\x04\x03\x05\x01\x01\x05!\x04\t\x0e\x15\x15\x1a5\x1e\f\x12\x13d\x02\x02\x06\n\a\t\x10\v\x03\x01\x03\x02\x02\x01\x01\x05\x04\x0e)\x196\a\a\x15\x05!\x02\v\b+.O\b\x18\x0e\x04\x06\x06\x03\x04\x01\x03\x01\x02\x02\x06\n\a\x0e\x00\x00\x00\x00\x05\x00\x00\xff\xe0\x02\x80\x01\xa0\x00$\x00,\x000\x004\x00<\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\x14\x06\"&5#\x14\x06\"&5#\"&=\x0146?\x01>\x01;\x012\x16\x1f\x01\x04264&\"\x06\x1475#\a;\x01'#\x12264&\"\x06\x14\x02 (8\t\a08P8\x808P80\a\t\x1b\x150\a!\x13\xd6\r\x1d\bm\xfe|(\x1c\x1c(\x1cxM&\xa3\xa6MY\xb4(\x1c\x1c(\x1c\x01\x008(P\a\t(88((88(\t\ap\x16\"\x06z\x12\x16\x0e\n\x88\xf0\x1c(\x1c\x1c(\xd4```\xfe\xb0\x1c(\x1c\x1c(\x00\x00\x03\x00\x00\xff\xc0\x02@\x01\xc0\x00\x0f\x00Q\x00h\x00\x00!2\x16\x1d\x01\x14\x06#!\"&=\x01463\x0132\x16\x1d\x01\x14\x06\a\x15\x14\x06'.\x01=\x014&+\x01\x15!\x1146;\x012\x16\x1d\x0132\x16\x1d\x01\x14\x167>\x01=\x01.\x01=\x0146;\x015462\x16\x1d\x0135462\x16\x15\x056&+\x0176&+\x01\"\x0f\x01\x06\x16;\x01\a\x06\x16327\x01P\a\t\t\a\xfe\xc0\a\t\t\a\x02\x10\x10\a\t\x1f\x192\"\x1d'\x17\x11\b\xfe\xe0%\x1b\xa0\x1b%\b$4\x14\r\n\r\x19\x1f\t\a\x10\t\x0e\t \t\x0e\t\xfe\xe4\x04\a\a:\f\x01\a\x06D\v\x01\x10\x01\b\x05;\x17\x01\a\x06\a\x03\t\a \a\t\t\a \a\t\x01@\t\a \x1a*\bx!.\x03\x03.\x1e\x19\x11\x17p\x01`\x1b%%\x1b\xc04$\x1c\r\x11\x02\x02\x11\vv\b*\x1a \a\t0\a\t\t\a00\a\t\t\a`\x05\v3\x05\b\tk\x05\aS\x05\b\x05\x00\x02\x00\x00\xff\xbf\x02\x00\x01\xc0\x00\x0f\x00'\x00\x00%\x16\x14\x0f\x01\x06\"/\x01&4?\x0162\x1f\x016/\x01&\x06\x1d\x01#\"\x06\x1d\x01\x14;\x012=\x013\x15\x14\x167\x01\xf7\t\t\xe0\n\x1a\n\xe0\t\t\xe0\n\x1a\n{\x06\x06U\x03\np\r\x13\b \b`\n\x03\xd7\n\x1a\n\xe0\t\t\xe0\n\x1a\n\xe0\t\t\xed\x06\x06N\x03\x04\x056\x13\rP\b\b@6\x05\x04\x03\x00\x00\x00\a\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00'\x008\x00@\x00H\x00P\x00X\x00`\x00\x00%2\x16\x14\x06#\"'#\x06#\"&5475&54632\x173632\x16\x14\x06#0#\a\x16\x14\a\x172\x05\x16\x173'\"1\"&46;\x017#\x06\a\x16\x14\x16264&\"64&\"\x06\x14\x162$\"\x06\x14\x16264\x02\x14\x16264&\"\x04264&\"\x06\x14\x01\x80\x1b%%\x1b%\x12\xd2\x12%\x1b% %\x1b%\x12\xd2\x12%\x1b%%\x1b\x01'\b\b'\x01\xfe\xe0\x0f\b\xd0&\x01\x1b%%\x1b\x01&\xd0\b\x0f\xb0\t\x0e\t\t\x0ew\t\x0e\t\t\x0e\xfe\xc0\x0e\t\t\x0e\t \t\x0e\t\t\x0e\x01@\x0e\t\t\x0e\t`%6% %\x1b%\x12\xd2\x12%\x1b% %6%A\x0f \x0fA\t\b\x0f@%6%@\x0f\bb\x0e\t\t\x0e\t\x89\x0e\t\t\x0e\t \t\x0e\t\t\x0e\xfe\xc0\x0e\t\t\x0e\t \t\x0e\t\t\x0e\x00\x00\x00\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x0f\x00\x1f\x007\x00A\x00E\x00\x00%'&?\x016\x1f\x01\x16\x0f\x01\x17\x16\x0f\x01\x067&?\x01'&?\x016\x1f\x01\x16\x0f\x01\x06'\x052\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x14\x16;\x01267\x13\x11!\x11463!2\x16\x03\x11!\x11\x00\xff:\f\f:\v\f\v\v\v$$\v\v\v\fU\v\v$$\v\v\v\f\v:\f\f:\v\f\x01\x06\a\t&\x1a\xfe\x00\x1a&\t\a\xef\x14\r=\x0e\x12\x01\xc2\xfe\x00\x1c\x14\x01\xa0\x14\x1c@\xfe\x80\xba;\v\v;\v\v\f\v\v$$\v\v\f\v\x17\v\v$$\v\v\f\v\v;\v\v;\v\v\x9a\t\a\x10\x1a&&\x1a\x10\a\t\v\x15\x11\x0f\x01p\xfe\xb0\x01P\x14\x1c\x1c\xfe\xdc\x01\x00\xff\x00\x00\x00\x00\x03\xff\xff\xff\xbd\x02\x01\x01\xc1\x00\x0e\x00\x1f\x000\x00\x00\x13&4?\x0162\x1f\x01\x16\x14\x0f\x01\x06'%\x16\x14\x0f\x01\x06/\x01&4?\x01\x17\x162?\x01\x17\x16\x14\x0f\x01\x06/\x01&4?\x01\x17\x162?\x01\f\f\f\xe9\x05\f\x05\xe9\f\f\xe9\v\v\x00\xff\f\f\xe9\v\v\xe9\f\f;\xa1\f\x18\f\xa2:\f\f\xe9\v\v\xe9\f\f:\xa2\f\x18\f\xa2\x01,\x06\x1c\x06j\x02\x02j\x06\x1c\x06j\x05\x05\x12\x06\x1d\x05j\x05\x05j\x05\x1d\x06\x1aI\x05\x05I\x9a\x06\x1c\x06j\x05\x05j\x06\x1c\x06\x1aI\x05\x05I\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00!\x00;\x00G\x00\x007\"&=\x01463546;\x012\x16\x1d\x012\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01\x052\x16\x15\x14\x06#!\"&5463!2644\x16\x15\x14\a%\"=\x014;\x012\x1d\x01\x14#\xa0\r\x13\x13\r\t\a@\a\t\r\x13\x13\r\f\t\a(\a\t\x01$\x14\x1c\t\a\xfe \a\t\x1c\x14\x01\x105KK5Oq1\xfe\x99\b\b\xd0\b\b\x80\x13\r\xe0\r\x13\x10\a\t\t\a\x10\x13\r\xe0\r\x13\x10\a\t\t\a\x10\x80\x1c\x14\a\t\t\a\x14\x1cKjK@qOI7 \b\x10\b\b\x10\b\x00\x00\x00\x00\x03\x00\x00\x00 \x02\x80\x01`\x002\x006\x00A\x00\x00\x016\x16\x1d\x01\x14\x0f\x01\x06#!\"&=\x01'.\x01=\x014>\x0132\x1f\x0135#\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\x1532\x1f\x01\x055'\x15\x0546?\x01\x16\x15\x14\x06\"&\x02v\x04\x06\x02\xd5\t\r\xfe\xed\r\x13F\v\x0f\t\x0e\t\x03\x03\x8a88\a\t\t\a\xa0\a\t\t\a89\x0f\x0e2\xfe\xc00\x01\xf5\x16\n\v+\x19$\x19\x01 \x01\x05\x04\x12\x03\x03\xd6\n\x13\r/\f\x02\x12\f_\b\x0f\t\x01\x190\t\a\x10\a\t\t\a\x10\a\t0\a\x19A?\b>]\n+\x10\x10>\x17\x12\x19\x19\x00\x01\x00\x00\xff\xc0\x02\x00\x01\xc0\x000\x00\x00%\x1e\x01\x15\x14\x06#!\"&5467&546;\x01&546;\x012654'632\x16\x15\x14\a32\x16\x15\x14\a32\x16\x15\x14\x01\xc3\x1a#*\x1e\xfe\x90\x1e*#\x1a\x1d*\x1e\x0e\x16%\x1b\x10!/\x0f\n\x05(8\x06\x06\x1b%\x16\x0e\x1e*O\x04(\x1b\x1e**\x1e\x1b(\x04\x16#\x1e*\x13\x1d\x1b%/!\x19\x15\x028(\x0f\x11%\x1b\x1d\x13*\x1e#\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x06\x01\xc1\x00\a\x00\x17\x00'\x00\x0062\x16\x14\x06\"&4%\x16\x06+\x01\".\x02?\x01>\x012\x16\x17\x132\x16\x1d\x01\x14\x06+\x01\"&=\x01463KjKKjK\x01\xfb\v\x16\x15\xd6\n\x12\b\x02\x06k\x04\x13\x12\x13\x04P\r\x13\x13\r\xa0\r\x13\x13\r\xc0KjKKj\x82\x12%\n\x10\x14\t\xb7\a\v\v\a\xfe\xf2\x13\r\xa0\r\x13\x13\r\xa0\r\x13\x00\x01\xff\xfe\xff\xc0\x01\xe2\x01\xc0\x007\x00\x00%\x1e\x01\x0f\x01\x0e\x01/\x01\x15\x14\x06+\x01\"&=\x01\a\x06&/\x01&6?\x01'.\x01?\x01>\x01\x1f\x01546;\x012\x1e\x02\x1d\x0176\x16\x1f\x01\x16\x06\x0f\x01\x01\xd8\x06\x03\x03 \x03\r\x06\x88\t\a@\a\t\x88\x06\r\x03 \x03\x03\x06\x88\x88\x06\x03\x03 \x03\r\x06\x88\t\a@\x03\x06\x04\x03\x88\x06\r\x03 \x03\x03\x06\x88r\x04\r\x058\x05\x04\x03O\x9d\a\t\t\a\x9dO\x03\x04\x058\x05\r\x04NN\x04\r\x058\x05\x04\x03O\x9d\a\t\x03\x04\x06\x03\x9dO\x03\x04\x058\x05\r\x04N\x00\t\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x0f\x00\x1d\x00+\x009\x00G\x00U\x00c\x00q\x00\u007f\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x1354&+\x01\"\x06\x1d\x01\x14\x1626=\x014&\"\x06\x1d\x01\x14\x16;\x0126\x1754&+\x01\"\x06\x1d\x01\x14\x1626=\x014&\"\x06\x1d\x01\x14\x16;\x0126\x1754&+\x01\"\x06\x1d\x01\x14\x1626=\x014&\"\x06\x1d\x01\x14\x16;\x0126\x1754&+\x01\"\x06\x1d\x01\x14\x1626=\x014&\"\x06\x1d\x01\x14\x16;\x0126\x02 (88(\xfe@(88(@\t\a@\a\t\x1c(\x1c\x1c(\x1c\t\a@\a\t\x90\t\aP\a\t!.!!.!\t\aP\a\t\x90\t\aP\a\t!.!!.!\t\aP\a\t\x80\t\a@\a\t\x1c(\x1c\x1c(\x1c\t\a@\a\t\x01\xc08(\xfe\xc0(88(\x01@(8\xfe\x90@\a\t\t\a@\x14\x1c\x1c\x94@\x14\x1c\x1c\x14@\a\t\tq8\a\t\t\a8\x17!!\x8fX\x17!!\x17X\a\t\tq8\a\t\t\a8\x17!!\x8fX\x17!!\x17X\a\t\ty@\a\t\t\a@\x14\x1c\x1c\x94@\x14\x1c\x1c\x14@\a\t\t\x00\x00\x00\x00\n\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x0f\x00\x1d\x00+\x009\x00G\x00W\x00e\x00s\x00\x81\x00\x8f\x00\x00\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x1754&\"\x06\x1d\x01\x14\x16;\x0126754&\"\x06\x1d\x01\x14\x16;\x0126754&\"\x06\x1d\x01\x14\x16;\x0126754&\"\x06\x1d\x01\x14\x16;\x0126\x152\x16\x1d\x01\x14\x06#!\"&=\x01463\x1754&+\x01\"\x06\x1d\x01\x14\x1626754&+\x01\"\x06\x1d\x01\x14\x1626754&+\x01\"\x06\x1d\x01\x14\x1626754&+\x01\"\x06\x1d\x01\x14\x1626\x02 (8%\x1b\xfe\x00\x1b%8(@\x1c(\x1c\t\a@\a\t\x90!.!\t\aP\a\t\x90!.!\t\aP\a\t\x80\x1c(\x1c\t\a@\a\t\x1b%8(\xfe@(8%\x1b`\t\a@\a\t\x1c(\x1c\x90\t\aP\a\t!.!\x90\t\aP\a\t!.!\x80\t\a@\a\t\x1c(\x1c\x01\xc08(@\x1b%%\x1b@(8\xb0 \x14\x1c\x1c\x14 \a\t\t\a8\x17!!\x178\a\t\t\a8\x17!!\x178\a\t\t\a \x14\x1c\x1c\x14 \a\t\t\x89%\x1b (88( \x1b%P \a\t\t\a \x14\x1c\x1c\x1c\x18\a\t\t\a\x18\x17!!\x17\x18\a\t\t\a\x18\x17!!\x0f \a\t\t\a \x14\x1c\x1c\x00\x00\x00\x00\a\xff\xfd\xff\xbb\x02\x82\x01\xc0\x00\x06\x00(\x006\x00H\x00T\x00\\\x00j\x00\x007\a\x06\a&>\x01\a\x1e\x01\x17\x16\x17\x06#\".\x01/\x01&67632\x17\x16\x17\x06\a\x06\a*\x01#\"\a0\x14\x15\x17\x16\x0e\x01\a\x06&'&5\x1667\x16%\x1e\x02\x0f\x01\x0e\x02.\x02?\x01>\x0176\a\x06\x156\x16\x17676.\x01\x06\x1e\x0167\x06&'\x067676.\x01'&\x06\a\x06\x176\x16\xcf\b \x12\x01\x0e\x1b]\x04F&\r\x1a\a\x03#YJ\x06 \x04\x12\x12gu$$\x1a\x10 \x19\x1e\x16\x01\x03\x01dY\x81\x02\a\x10\v\x10\x1c\x02\x01\x12,\r\x03\x01\x9f\f\x10\x06\x02 \aSaAO6\a \x04\x1d\x15\x9b\x88\x01\x12,\r\x03\x01\x03\x13 \x1c\x1bSF\n.\x83\"\x03\xde\x03\x01\x02\a\x10\v\x10\x1c\x02\x01\x01\x11,\xcb+\v\x14\x10\x1e\x17-\x182\v# \x01$D&\xb3\x15'\n9\x06\x04\x17\x01\x04\x05\x151\x01\x01+\n\x14\x0e\x02\x03\x13\x11\x05\a\t\a\x0f\x06\x1f\a\x15\x1c\r\xb4)H!\vA`)\xb3\x15\x1e\x03\x19\xad\x05\a\t\a\x0f\x06\x05\x11\x1b\x06\x13\xd0\x0f,'\x1c\x17*(O\x06\x05\v\x14\x0e\x01\x03\x13\x10\x05\a\t\b\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00.\x006\x00>\x00F\x00\x00\x01\x14\x0e\x03\a\x153\x14\x0e\x01\a\x0e\x01\"&'.\x01535.\x01535.\x0153546;\x012\x16\x1d\x013\x14\x0e\x01\a\x15\x06264&\"\x06\x146264&\"\x06\x146264&\"\x06\x14\x01\x80\x06\f\x0f\x14\v@\x11\x1f\x13\tF\\F\t\x1e%@\x1c$@\x1c$@\x13\r\xc0\r\x13@\x10\x1d\x13\x94(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x1c\x01\x00\f\x18\x14\x11\r\x04&\x15%\x1b\x06,99,\t2 &\n1\x1f&\n1\x1f \r\x13\x13\r \x14%\x1b\x06&\xe0\x1c(\x1c\x1c(d\x1c(\x1c\x1c(d\x1c(\x1c\x1c(\x00\x00\x00\x06\x00\x00\xff\xc0\x02\x80\x01\xc0\x001\x005\x00\x87\x00\x8f\x00\xe0\x00\xe8\x00\x00%2\x16\x1d\x01\x14\x06+\x01.\x02#\"\x06\a#.\x01\"\x06\a#\"&=\x0146;\x01546;\x01546;\x012\x16\x1f\x0132\x16\x1d\x01%3'#\x012\x1e\x02\x1d\x01\x14\x06+\x01\x06\a\x17\x16\x0f\x01\x06/\x01\x06\a\x15\x14\x06+\x01\"&=\x01&'\a\x06/\x01&?\x01&'#\"&=\x0146;\x0167'&?\x016\x1f\x0167546;\x012\x16\x1d\x01\x16\x1776\x1f\x01\x16\x0f\x01\x16\x17\x06264&\"\x06\x14'2\x16\x1d\x01\x14\x0e\x01+\x01\x06\a\x17\x16\x0f\x01\x06/\x01\x06\a\x15\x14\x06+\x01\"&=\x01&'\a\x06/\x01&?\x01&'#\"&=\x0146;\x0167'&?\x016\x1f\x0167546;\x012\x16\x1d\x01\x16\x1776\x1f\x01\x16\x0f\x01\x16\x17\x06264&\"\x06\x14\x02p\a\t\t\a\x11\x0e'0\x1a&C\x16B\x16CLC\x16\x11\a\t\t\a\x10\t\a\xb0\x13\rq\r\x1d\bSJ\r\x13\xfe\xc0\x843Q\x010\x03\x06\x04\x03\t\a\x05\x03\x06\x04\v\v\x17\v\v\x04\n\v\t\a \a\t\v\n\x04\v\v\x17\v\v\x04\x05\x04\x05\a\t\t\a\x05\x03\x06\x04\v\v\x17\v\v\x04\n\v\t\a \a\t\v\n\x04\v\v\x17\v\v\x04\x05\x04\u007f(\x1c\x1c(\x1c\xa0\a\t\x04\b\x04\x05\x03\x06\x04\v\v\x17\v\v\x04\n\v\t\a \a\t\v\n\x04\v\v\x17\v\v\x04\x05\x04\x05\a\t\t\a\x05\x03\x06\x04\v\v\x17\v\v\x04\n\v\t\a \a\t\v\n\x04\v\v\x17\v\v\x04\x05\x04\u007f(\x1c\x1c(\x1c\xe0\t\a \a\t\x14\x1c\x10\"\x1e\x1e\"\"\x1e\t\a \a\tP\a\t`\r\x13\x0e\nh\x13\r@`@\xfe\xe0\x03\x04\x06\x03 \a\t\v\n\x04\v\v\x17\v\v\x04\x05\x04\x05\a\t\t\a\x05\x03\x06\x04\v\v\x17\v\v\x04\n\v\t\a \a\t\v\n\x04\v\v\x17\v\v\x04\x05\x04\x05\a\t\t\a\x05\x03\x06\x04\v\v\x17\v\v\x04\n\vP\x1c(\x1c\x1c(4\t\a \x04\b\x04\v\n\x04\v\v\x17\v\v\x04\x05\x04\x05\a\t\t\a\x05\x04\x05\x04\v\v\x17\v\v\x04\n\v\t\a \a\t\v\n\x04\v\v\x17\v\v\x04\x05\x04\x05\a\t\t\a\x05\x03\x06\x04\v\v\x17\v\v\x04\n\vP\x1c(\x1c\x1c(\x00\x00\x04\x00\x00\xff\xe0\x02\x80\x01\xa0\x007\x00;\x00C\x00K\x00\x00%2\x16\x1d\x01\x14\x06+\x01\x16\x15\x14\x06\"&547#\x16\x15\x14\x06\"&547#\"&=\x0146;\x01546;\x01546;\x012\x16\x1f\x0132\x16\x1d\x01%\x153'\x02264&\"\x06\x14\x04264&\"\x06\x14\x02p\a\t\t\a2\x02B\\B\x02D\x02B\\B\x022\a\t\t\a\x10\x13\r\xa0\x13\rq\r\x1d\bm0\r\x13\xfe\xc0\x9eM\xd5(\x1c\x1c(\x1c\x01<(\x1c\x1c(\x1c\xa0\t\a \a\t\v\x05.BB.\x05\v\v\x05.BB.\x05\v\t\a \a\t@\r\x13\x80\r\x13\x0e\n\x88\x13\r@\xc0``\xfe\xc0\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x00\x00\x00\x00\x05\x00\x00\x00\x00\x02\x00\x01\x80\x00\x02\x00\n\x00\x1a\x003\x00K\x00\x00?\x01\x1762\x16\x14\x06\"&472\x16\x15\x11\x14\x06#!\"&5\x11463\x1326/\x01.\x01+\x01\"\x0e\x01\x0f\x01\x06\x16;\x012?\x013\x17\x163754&+\x01\"\x06\x1d\x01&#\"\x06\x14\x16327\x16;\x0126\x9e\x12\x12\x94\x14\x0e\x0e\x14\x0e\x88\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\xcb\b\t\x026\x02\x0e\a\x1a\x05\t\a\x026\x02\t\b\x11\f\x03\bF\b\x03\f\xbe\t\a\x10\a\t\f\f\x1e**\x1e\x0f\r\x05\a\x10\a\t\xb055\x10\x0e\x14\x0e\x0e\x14\xce\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c\xfe\xe0\r\b\x9b\a\t\x04\b\x04\x9b\b\r\v\x15\x15\v\x10\xa0\a\t\t\a$\x04*<*\x06\x06\t\x00\x00\x02\x00\x00\xff\xc0\x01@\x01\xc0\x00#\x00/\x00\x00%2\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\"&=\x0146;\x01&5462\x16\x15\x14\a&\"\x06\x15\x14\x16\x17>\x0254\x01(\n\x0e\x0e\n`\x0e\n \n\x0e`\n\x0e\x0e\n-%JlJ%E,\x1a\x1e\x12\v\x15\x10\xc0\x0e\n \n\x0e\x98\n\x0e\x0e\n\x98\x0e\n \n\x0e;5AOOA5;\xb0\"\x1e\x189\x14\f!(\x10\x1e\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x16\x00:\x00B\x00\x00%\x14\a\x06\x14\x17\x16\x1d\x01\x14\x06#!\"&5\x11463!2\x15\x05\x15\x14\x16;\x01\x15\x14\x16;\x0126=\x01326=\x014&+\x0154&+\x01\"\x06\x1d\x01#\"\x06\x135!\"\x06\x14\x163\x01\xc0\n\x02\x02\n\x0f\v\xfe\xba)77)\x01F\x1a\xfe\xd0\t\a0\t\a \a\t0\a\t\t\a0\t\a \a\t0\a\t\xed\xfe\xe3\r\x13\x12\x0eZ\x0f\x05\t4\f\n\t\x10\f\x0e7)\x01@)7\x1av \a\tp\a\t\t\ap\t\a \a\t0\a\t\t\a0\t\xfe\xc9@\x12\x1c\x12\x00\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\a\x00\x17\x00/\x003\x00B\x00\x00$2\x16\x14\x06\"&4\x1754+\x0154+\x01\"\x1d\x01\x14;\x012'\"\a!546;\x01546;\x012\x16\x1d\x0132\x16\x1d\x01&'5#\x15\x17\x06\x15\x14\x17!\"&=\x013\x15\x14\x163\x01\xb4xTTxT\xd0\n&\n\f\n\n<\n@7.\xfeu\x1d\x13P\x1d\x13\xa0\x13\x1dP\x13\x1d\t\xb7\x80\x87\a\x13\xfe\xdd\x13\x1d\xc0\t\a\xe0TxTTxB\f\n6\n\nL\n\xc0 P\x13\x1d0\x13\x1d\x1d\x130\x1d\x131\x01` \xe0\x18\x18*&\x1d\x13\x900\a\t\x00\x00\x00\x00\f\x00\x00\xff\xc0\x02\x80\x01\xc0\x00-\x009\x00E\x00Q\x00]\x00i\x00u\x00\x81\x00\x8d\x00\x99\x00\xa5\x00\xb1\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01546;\x012\x16\x1d\x013546;\x012\x16\x1d\x013546;\x012\x16\x1d\x01\x0554+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x1754+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x1754+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x1354+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x02h\n\x0e\x13\r\xfd\xc0\r\x13\x0e\n(\t\a\x10\a\t@\t\a\x10\a\t@\x0e\n\x90\n\x0e\xfe\xa0\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\x80\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\xa0\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\xa0\f(\f\f(\f\f(\f\f(\f\x01\x00\x0e\n\xfe\xf8\r\x13\x13\r\x01h\n\x0eP\a\t\t\aPP\a\t\t\aPH\n\x0e\x0e\n\xa8\xd4(\f\f(\fl(\f\f(\fl(\f\f(\f\xb4(\f\f(\fl(\f\f(\fl(\f\f(\fT(\f\f(\fl(\f\f(\fl(\f\f(\f\xfe\xec(\f\f(\fl(\f\f(\f\x00\x00\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x14\x00T\x00\x00\x122\x16\x14\x06#\"'\x06#\"547>\x027&54\x05>\x01'.\x01/\x01&54;\x022\x17\x16?\x016&'&'54&+\x01\"\x06\x1d\x01\x0e\x02\x17\x1e\x01\x1f\x01\x16\x15\x14+\x01\"'&\x0f\x01\x06\x16\x17\x16\x17\x15\x14\x16;\x01265\x96Ԗ\x96j83AL\b\x02\x05\x0f\x1d\x069\x01\x18\x17\x1d\x03\x02\x18\x112\x06\t \x01\x05\x05\b\x06\x11\x04\x01\x04\x0e\x12\t\a\x10\a\t\x0f\x18\f\x02\x02\x18\x112\x06\t \x06\x05\b\x06\x11\x04\x01\x04\x0e\x12\t\a\x10\a\t\x01\xa0z\xacz\x133\b\x03\x03\x04\x132\x169JV\xb4\x02%\x18\x11\x19\x05\x0f\x01\a\b\x02\x04\x06\x11\x04\f\x03\t\x02\x12\a\t\t\a\x12\x01\x12\x1c\x10\x11\x19\x05\x0f\x01\a\b\x02\x04\x06\x11\x04\f\x03\t\x02\x12\a\t\t\a\x00\x03\x00\x00\xff\xe0\x02B\x01\xa0\x00\x12\x00O\x00g\x00\x00\x00\x14\x06#\"'\x06#\"54767&5462\x03\x14;\x012=\x01>\x0154.\x02/\x01&54>\x01;\x012\x17\x16?\x016'&'54+\x01\"\x1d\x01\x0e\x01\x15\x14\x16\x1f\x01\x16\x15\x14\x06+\x01\"'&\x0f\x01\x06\x17\x16\x17\x05\x16\x17\x16\x06#\"'\x06#\"&'\x1632654'\x1e\x01\x15\x14\x01\xa0zV<3+.\b\x02\x16\x0e&z\xacf\b\x10\b\x12\x19\x05\b\f\a-\t\x03\x06\x03\x1c\a\x06\x06\x04\f\a\b\x0e\x11\b\x10\b\x12\x19\x12\x0e-\t\a\x05\x1c\a\x06\x06\x04\f\a\b\x0e\x11\x01Z\x0e\x16\x03\x04\x05.+3<@h\x18\x12\x0ec\x8d\x019H\x01B\x84^\x19\x19\b\x03\x03\x17\x1f)3B^\xff\x00\b\b\x10\x01\x1a\x12\b\x0e\v\t\x02\r\x03\n\x03\x06\x04\x04\x03\x04\v\a\x05\v\x01\x10\b\b\x10\x01\x1a\x12\x0f\x18\x05\r\x03\n\x05\b\x04\x03\x04\v\a\x05\v\x01\x8c\x1f\x17\x04\n\x19\x196,\x02qO\n\n\x12P23\x00\x00\x00\x01\x00\x00\xff\xc0\x01\x80\x01\xc0\x00#\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\"&=\x0146;\x01546;\x012\x16\x1d\x01\x01`\r\x13\x13\r`\x13\r@\r\x13`\r\x13\x13\r`\x13\r@\r\x13\x01@\x13\r@\r\x13\xe0\r\x13\x13\r\xe0\x13\r@\r\x13`\r\x13\x13\r`\x00\x00\x00\x00\n\x00\x00\xff\xc0\x02\x01\x01\xc0\x00W\x00]\x00c\x00i\x00o\x00u\x00}\x00\x83\x00\x89\x00\x8f\x00\x00%2\x16\x1d\x01\x14\x06#'\x06\a\x17\x1e\x01\x0f\x01\x06\"/\x01\x06\a\x17\x14\x06+\x01\"&57&'\a\x06\"/\x01&4?\x01&'\a\"&=\x01463\x1767'&4?\x0162\x1f\x0167'46;\x012\x16\x15\a\x16\x17762\x1f\x01\x16\x14\x0f\x01\x16\x17'\a\x16\x177&'\x06\a\x1767#\x06\a\x1767\a\x16\x177&'\x177&'\a\x166264&\"\x06\x14\x1767'\x06\a367'\x06\a?\x01&'\a\x16\x01\xef\a\n\n\a\x11\b$\r\x05\x01\x05\x16\x04\x0e\x05\v/;\x01\t\a\x1e\a\t\x01;/\v\x05\x0e\x04\x16\x04\x05\r$\b\x11\a\n\n\a\x11\b$\r\x05\x04\x16\x04\x0e\x05\v/;\x01\t\a\x1e\a\t\x01;/\v\x05\x0e\x04\x16\x04\x05\r$\b\xc4\x04\x0f\r+\x1eY%\x1e+\r\x0fl\x15\x06@\x03\tL\x06\x151\t\x03C\x04\x0f\r+\x1e2\x1a\x13\x13\x1a\x13:%\x1e+\r\x0fl\x15\x06@\x03\t\f@\x06\x151\t\xdf\t\a\x1e\a\t\x01;/\v\x05\x0e\x04\x16\x04\x05\r$\b\x11\a\n\n\a\x11\b$\r\x05\x04\x16\x04\x0e\x05\v/;\x01\t\a\x1e\a\t\x01;/\v\x05\x0e\x04\x16\x04\x05\r$\b\x11\a\n\n\a\x11\b$\r\x05\x04\x16\x04\x0e\x05\v/;\u007f@\x03\t1\x15\x06\x06\x151\t\x03\x1e%\x04\x0f\rL%\x1e+\r\x0f\x87@\x03\t1\x15w\x13\x1a\x13\x13\x1a\x90\x06\x151\t\x03\x1e%\x04\x0f\rH\x04%\x1e+\r\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc1\x00\x0f\x00\x1f\x00-\x00T\x00\x007\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\a546;\x012\x16\x1d\x01\x14\x06+\x01\"&\x162?\x01\x15\x14\x06#!\"&=\x01\x17%\x16\x1d\x01\a5!\x15'54767546;\x01>\x0532\x1e\x04\x1732\x16\x1d\x01\x16\xb0\a\t\t\a\xa0\a\t\t\a\xb0\t\a\xa0\a\t\t\a\xa0\a\tF4\x15\xd1\x1c\x14\xfe`\x14\x1c\xd1\x01\x1d\x12`\xfe\xc0`\x12\x10\x0e\x1c\x14N\x01\a\x01\x1c\x0e\x17\b\b\x17\x0e\x1c\x01\a\x01N\x14\x1c\x0e\xe8\t\a\x10\a\t\t\a\x10\a\tP\x10\a\t\t\a\x10\a\t\tr\x0f\x97\xd5\x14\x1c\x1c\x14\u0557\xef\x0e\x18\nF\xb9\xb9F\n\x18\x0e\r\n,\x14\x1c\x01\x05\x01\x15\t\v\v\t\x15\x01\x05\x01\x1c\x14,\v\x00\x02\x00\x00\x00\x00\x02\x00\x01\x80\x00\x11\x00!\x00\x00\x012\x16\x1d\x01\x14\x06#!\"&5\x1146;\x01\x1f\x0154&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\xa0@`\t\a\xc0\a\t\t\a\xc0\a\t\x01@\x1c\x14\xe0\x14\x1c\x1c\x14\x01 \x14\x1c@\xa8\x10\a\t\t\a\x10\a\t\t\x00\x00\x02\x00\x00\x00\x00\x02\x00\x01\x80\x00\x11\x005\x00\x00\x012\x16\x1d\x01\x14\x06#!\"&5\x1146;\x01\x1f\x0154&+\x0154&+\x01\"\x06\x1d\x01#\"\x06\x1d\x01\x14\x16;\x01\x15\x14\x16;\x0126=\x01326\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\xa0@`\t\aH\t\a\x10\a\tH\a\t\t\aH\t\a\x10\a\tH\a\t\x01@\x1c\x14\xe0\x14\x1c\x1c\x14\x01 \x14\x1c@\xa8\x10\a\tH\a\t\t\aH\t\a\x10\a\tH\a\t\t\aH\t\x00\x00\x03\xff\xfa\xff\xbc\x02\x80\x01\xc0\x00\x14\x00\x1c\x00Z\x00\x00\x01\x0e\x01\x15\x14\x17\x0e\x01/\x01&=\x01'&63!2\x16\a\x062\x16\x14\x06\"&4\x17>\x0154&/\x01&546;\x012\x17\x16?\x016'&'54+\x01\"\x1d\x01\"\x0e\x02\x15\x14\x16\x1f\x01\x16\x15\x14\x0e\x02+\x01\"'&\x0f\x01\x06\x17\x16\x17\x15\x14;\x0125\x01\xb1?R;\b#\x10P\x10\xb7\x0f\x11\x15\x01\xe0\x15\x11\x0fy\x84^^\x84^\xb0\x12\x19\x12\x0e-\t\a\x05\x1c\a\x06\x06\x04\f\a\b\x0e\x11\b\x10\b\t\x10\v\a\x12\x0e-\t\x02\x03\x05\x02\x1c\a\x06\x06\x04\f\a\b\x0e\x11\b\x10\b\x01\x1a\x10gCQ9\x10\t\v<\f\x14\x9c\xca\x0f''\x0f\x8a^\x84^^\x84\x92\x01\x1a\x12\x0f\x18\x05\r\x03\n\x05\b\x04\x03\x04\v\a\x05\v\x01\x10\b\b\x10\b\f\x10\t\x0f\x18\x05\r\x03\n\x02\x05\x04\x02\x04\x03\x04\v\a\x05\v\x01\x10\b\b\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00e\x00o\x00y\x00\x00%2\x16\x1d\x01\x14\x06+\x015#5#5#\x153\x153\x15#54&+\x01\"\x06\x1d\x01#53535#\x15#\x15#\x15#\"&=\x0146;\x01546;\x01546;\x015462\x16\x1d\x0135462\x16\x1d\x0135462\x16\x1d\x0135462\x16\x1d\x0132\x16\x1d\x0132\x16\x1d\x01'\x15354&+\x01\"\x06\x1754&+\x01\"\x06\x1d\x01\x01\xf0\a\t\t\aP P\t\a@\a\tP P\a\t\t\a\x10\t\a\x10\t\a\x10\t\x0e\t@\t\x0e\t@\t\x0e\t@\t\x0e\t\x10\a\t\x10\a\t\xf80\t\a\x10\a\t8\t\a \a\t`\t\a\x80\a\t\xa0\x80``\x80\xa0P\a\t\t\aP\xa0\x80``\x80\xa0\t\a\x80\a\tp\a\tP\a\tp\a\t\t\a\x10\x10\a\t\t\a\x10\x10\a\t\t\a\x10\x10\a\t\t\ap\t\aP\t\ap\xb000\a\t\t\xb7@\a\t\t\a@\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x001\x00?\x00G\x00\x00%\x16\x15\x14\x0f\x01\x06\"/\x01&5476;\x015462\x16\x1d\x01\x14;\x012=\x01462\x16\x1d\x01\x14;\x012=\x01462\x16\x1d\x0132\x0426?\x01.\x02\"\x06\x0f\x01\x1e\x0162\x16\x14\x06\"&4\x01\xfd\x03\tf8\xb28f\t\x03\b\x15@\x18 \x18\n\x14\n\x18 \x18\n\x14\n\x18 \x18@\x15\xfe\xf300\f\f\x05\x11200\f\f\x05\x11=\x1a\x13\x13\x1a\x13\x8d\x06\a\r\tn<\x017632\x17\x16\x15\x14\a\x06\x15\x14\x17\x16\x15\x14\a\x06\x15\x14\x16\x177\a\x06#\"'&54?\x01'&4?\x01'&5432\x1f\x01\x134312\x15\x137632\x16\x15\x14\x0f\x01\x17\x16\x14\x0f\x01\x17\x16\x15\x14\a\x06#\"/\x01\x17>\x017654.\x01'&547654'&547632\x17\x1e\x01\x17\a3\x161\x14\x0f\x01\x02\x18!\x86Q\x06\aM\u007f\x1f(;\x04\x01\x01/)\t?$\x04\x05\b\x05\x03\x01\n:\a\x06)9+\x02\x1b\x02\x02\x04\x02\x02\x01\x14*\a\a*\x14\x01\b\x02\x02\x1e\f\b\b\v\x1f\x02\x02\x04\x04\x01\x14*\a\a*\x14\x01\x02\x02\x04\x02\x02\x1b\x02%5\b\x02\v\x13\v\x06\a:\n\x01\x03\x04\t\x05\x04$?\t)/\x01\x05;`HX\x04WE;\x13\x14\x05\x05\n\n)+_\x18\x03\a\x04\x05\x03\x03\x19\x1aG+\x05\b\a\x05%7-D\tA\x12\x01\x02\x02\x04\x02\x02!\t\x01\x0e\x01\t!\x02\x02\b\x01\x15\x01 \b\b\xfe\xe0\x15\x01\x04\x04\x02\x02!\t\x01\x0e\x01\t!\x02\x02\x04\x02\x02\x01\x12A\a5%\f\r\x0f# \n\x05\a\b\x05+G\x1b\x18\x03\x03\x05\x04\a\x02\x19`*)\x11\x1a\x1a;\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x16\x00\x1e\x00\xa0\x00\x00%\x06\x14\x17\x16\x1d\x01\x14\x06#!\"&5\x11463!2\x15\x11\x14\a!\"\x06\x14\x163!\x030\x14\x15\x17\x16\x15\x14#\"/\x01\x1e\x01267\a\x06#1\"'&54?\x01<\x0114'\a\x06#\"54?\x01.\x02'\x16\x15\x14\x06\a\x16\x15\x14\x0e\x01\a'\x17\x16312545'764/\x017454#\"#\a'4\"\x15\a'\"#\"\x15\x14\x1f\x01\a\x06\x14\x1f\x01\a\x06\x15\x14\x1632?\x01\a.\x02547.\x01547\x0e\x01\a\x17\x16\x15\x14#\"/\x01\x06\x01\xb6\x02\x02\n\x0f\v\xfe\xba)77)\x01F\x1aC\xfe\xe3\r\x13\x12\x0e\x01\x1d\xfd%\x03\b\x03\x02\x18\t=N=\t\x18\x02\x03\x04\x02\x02\x03%\x05\x15\x03\x03\b\x02\x1b\x04\x10\x12\t\n\x0e\n\x10\f\x14\f\x02\r\x01\x01\x04\t\x12\x03\x03\x12\t\x04\x01\x01\x0e\x05\b\x05\f\x01\x01\x04\x01\b\x12\x03\x03\x12\b\x01\x03\x01\x01\x01\v\x02\f\x14\f\x10\n\x0e\n\r\x1b\a\x1b\x02\b\x03\x03\x15\x05F\t4\f\n\t\x10\f\x0e7)\x01@)7\x1a\xfe\xb4\x0f\v\x12\x1c\x12\x01\x10\x01\x01 \x02\x04\b\x02\x15&11&\x15\x02\x03\x02\x03\x04\x02 \x01\x01\x0e\x12\x16\x02\b\x03\x03\x1a\t\x13\x11\x04\x0f\x12\r\x1c\b\x11\x16\f\x18\x10\x03#\t\x01\x04\x01\x01\x0f\x03\x01\x06\x01\x04\x0e\x01\x01\x04\np\x04\x04o\t\x04\x01\x01\x0e\x04\x01\x06\x01\x03\x0f\x01\x01\x01\x03\x01\a!\x03\x10\x18\f\x16\x11\b\x1c\r\x12\x0f\a\x1d\r\x1a\x03\x03\b\x02\x16\x12\x00\x00\x06\x00\x00\xff\xbf\x02A\x01\xc0\x00\x0f\x00 \x00.\x00=\x00K\x00Y\x00\x00\x01\x16\x1d\x01%&\a\x05546?\x0162\x17\a6\x17\x05\x15\x14\x06\x0f\x01\x06\"/\x01.\x01=\x01\x1754&\x0f\x01\x06\x1d\x01\x14\x16?\x016754&\x0f\x01\x06\x1d\x01\x14\x1e\x01376\x17\x15\x14\x1f\x01\x166=\x014/\x01&\x06'\x15\x14\x1f\x01\x166=\x014/\x01&\x06\x02*\x16\xfe\xf7\x17\x17\xfe\xf7\r\t\xec\x0e \x0e,\x0e\x0e\x01\x12\x0e\v\xf2\n\x16\n\xf2\v\x0e\x80\x06\x04P\x06\x06\x04P\x06\x90\x06\x04`\x06\x03\x05\x02`\x06\xb0\x06P\x04\x06\x06P\x04\x06\x90\x06`\x04\x06\x06`\x04\x06\x01l\a\x171P\a\aP1\n\x11\x03O\x05\x05m\x04\x04R\xe5\v\x11\x036\x02\x026\x03\x11\v\xe5\"\x10\x04\x05\x01\x16\x01\x06\x11\x04\x05\x01\x16\x02-\x11\x04\x05\x02\x1a\x01\x06\x11\x03\x04\x01\x1a\x02\x11\x10\x06\x02\x16\x01\x05\x04\x11\x06\x01\x16\x01\x05$\x11\x06\x02\x1a\x01\x05\x04\x11\x06\x01\x1a\x02\x05\x00\x03\xff\xf3\xff\xbf\x02\v\x01\xc0\x00n\x00v\x00~\x00\x00\x01\x1e\x01\a\x06\x0f\x01\x06/\x01\a\x17612\x16\x15\x14\x0e\x01#\".\x025'\x15\x16\x15\x14\x06\"&5475\a\x0e\x01#\"&4630\x177'\a\x06/\x01&'&676\x17\x16\a\x06\x15\x14\x16\x1f\x015'&?\x01.\x015467'&?\x01\x17\x16\x0f\x01\x1e\x01\x15\x14\x06\a\x17\x16\x0f\x01\x157>\x0154'&5476\a4'\a\x06\x1f\x016'\x14\x1776/\x01\x06\x01\xa082\x10\n\x1f5\b\vP\x1d/\x05\n\x0e\x06\v\a\x04\b\a\x04)\x10\x13\x1a\x13\x10)\x01\r\t\n\x0e\x0e\n\x05/\x1dP\v\b8\x15\n\x19/<\v\t\t\a\x19&!M,\a\x04\b\x1a\x1f\x1e\x19\x06\x04\b;;\a\x04\x05\x19\x1e\x1f\x1a\b\x03\x06,L\"&\x19\x03\x04\tU\x1b\b\r\r\x06\x1d\x80\x1d\x05\x0e\x0e\a\x1b\x01~\x1es?'$=\n\x06*\x14!\x01\x0e\n\a\v\x06\x03\x06\a\x05\x1c\x1e\t\x12\r\x13\x13\r\x12\t\x1e\x1c\t\f\x0e\x14\x0e\x01!\x14*\x06\nA\x18\x19E\x80 \a\t\n\n(/(F\x166\x14$\a\t\x11\x0f3\x1f\x1e3\x0f\v\t\a55\a\t\v\x0f3\x1e\x1f3\x0f\x11\t\a$\x146\x16F(/(\x04\x05\x06\x05\tt \x14\x11&&\f\x13\"\"\x13\f&&\x11\x14\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x11\x00'\x007\x00\x00\x01\x16\x1d\x01\x14\x06#!\"&=\x014?\x0162\x17\a3\x15353\x15353\x1532\x16\x1d\x01!546;\x01\x052\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\xf6\n\t\a\xfe \a\t\n\xeb\x05\f\x05\xcb@`@`@\x10\a\t\xfe@\t\a\x10\x01\xb0\a\t\t\a\xfe \a\t\t\a\x01d\x04\v%\a\t\t\a%\v\x04Z\x02\x02\xbe\xa0\xa0\xa0\xa0\xa0\t\a00\a\t`\t\a \a\t\t\a \a\t\x00\x05\x00\x00\xff\xc0\x02@\x01\xc0\x00\x0f\x00'\x009\x00=\x00L\x00\x00:\x01767\x15\x14\x06#!\"&=\x01\x16\x1772\x16\x1d\x01\x0e\x02\a\"\x06#\".\x01'.\x02'5463%2\x16\x1d\x01\x14\x06+\x015.\x01+\x015463\x055#\x15%\x15#5463!2\x16\x1d\x01#\"\x06\x8b*+ @\x13\r\xff\x00\r\x13@ \xc0\r\x13\a\x17,)\x02\"\t\a\x11\x14\x01),\x17\a\x13\r\x02\x00\r\x13\x13\r\xc0\x03$\x19`\x13\r\x01 @\xfe\xe0`\x13\r\x01@\r\x13\xe0\x1a& \x160\x86\r\x13\x13\r\x860\x16\xa0\x13\r\x13\x06\x12!\x1e\x16\t\x10\x01\x1d\"\x12\x05\x10\r\x13`\x13\r\xc0\r\x13\x86\x19! \r\x13\x80@@` \xc0\r\x13\x13\r`&\x00\f\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\t\x00\x13\x00\x1d\x00'\x002\x00=\x00H\x00S\x00^\x00i\x00t\x00\xb2\x00\x00\x132\x16\x1d\x01#546;\x012\x16\x1d\x01#546;\x012\x16\x1d\x01#546;\x012\x16\x1d\x01#54636\"&546?\x01\x16\x15\x14\x06\"&546?\x01\x16\x15\x14\x06\"&546?\x01\x16\x15\x14\x06\"&546?\x01\x16\x15\x14\x06\"&546?\x01\x16\x15\x14\x06\"&546?\x01\x16\x15\x14\x06\"&546?\x01\x16\x15\x14\x05546;\x012\x16\x1d\x01\x14\x06+\x01\x1532\x16\x1d\x01\x14\x06#!\"&=\x0146;\x015#\"&=\x0146;\x012\x16\x1d\x01\x14\x16;\x01546;\x012\x16\x1d\x01326\x90\a\t@\t\a\x80\a\t@\t\a\xe0\a\t@\t\a\x80\a\t@\t\a}\x1a\x13\x10\b\b s\x1a\x13\x10\b\b s\x1a\x13\x10\b\b s\x1a\x13\x10\b\b s\x1a\x13\x10\b\b s\x1a\x13\x10\b\b s\x1a\x13\x10\b\b \x02\x00\t\a \a\t8(\xc0\xb0\a\t\t\a\xfe`\a\t\t\a\xb0\xc0(8\t\a \a\t\x13\r\xc0\t\a \a\t\xc0\r\x13\x01@\t\a\x90\x90\a\t\t\a\x90\x90\a\t\t\a\x90\x90\a\t\t\a\x90\x90\a\t \x13\r\b \f\f.\x12\r\x13\x13\r\b \f\f.\x12\r\x13\x13\r\b \f\f.\x12\r\x13\x13\r\b \f\f.\x12\r\x13\x13\r\b \f\f.\x12\r\x13\x13\r\b \f\f.\x12\r\x13\x13\r\b \f\f.\x12\rӐ\a\t\t\a\x90(8@\t\a \a\t\t\a \a\t@8(\x90\a\t\t\a\x90\r\x13\xb0\a\t\t\a\xb0\x13\x00\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\t\x00\x18\x00C\x00P\x00\x00\x15\x113\x11\x14\x06+\x01\"&%!&5476?\x01\x17\x16\x17\x16\x15\x14\x152\x16\x1d\x01\x14\x06+\x0154&\"\x06\x1d\x01#54&/\x01\x0e\x02\x1d\x01#54&\"\x06\x1d\x01#\"&=\x01463\x03\x1e\x04\x1d\x01#5467\x80\x13\r@\r\x13\x02C\xfe\x9a\x1dXE+\b\b+EX\r\x13\x13\r \x13\x1a\x13@\x18\f\f\x05\x10\x1b@\x13\x1a\x13 \r\x13\x13\r\x80\x03\b\x16\x11\x0e\x80 \x10 \x01@\xfe\xc0\r\x13\x13\xcd\x1c\x1fC8+5\n\n5+8C\x1f<\x13\r\x80\r\x13@\r\x13\x13\r@H\x15$\a\b\x03\n&\x15H@\r\x13\x13\r@\x13\r\x80\r\x13\x01@\x01\x05\x12\x15!\x12 \x1c0\n\x00\x00\x00\x00\x03\xff\xff\xff\xc0\x02\x00\x01\xc5\x00\x0e\x00h\x00\x84\x00\x00\x01'&4?\x016\x1f\x01\x16\x14\x0f\x01\x06\"\x162\x16\x1d\x01\x14\x06#\".\x025'546\x17\x16326=\x014&\"\x0f\x01\x06+\x01\x16\x15\x14\x06#\".\x02546\x17\x16\x17\x1e\x033264&+\x01&/\x01&6;\x01264&#\"\a\x06/\x01&476\x17\x1e\x02\x17\x16\a32?\x026\x16\x1d\x01\x14\x0e\x04#\".\x05'&6\x17\x1e\x036\x01i\x16\x03\x03\x16\a\a\x16\x03\x03\x16\x03\b\aR;;%\x1b'\x13\n\x01\v\x03#/\v\x15\x15\x1e\n\x19\x1d)\x16\x12K5*A$\x11\v\x04\x01\x03\v\x10!1 \x1a&&\x1a!\t\x04\x10\x04\t\t \x14\x1c\x1c\x14\x11\r\n\n\x1a\x06\x05(8\x16%\x1a\x05\t\x11/\x0f\n\x18q\b\x12\x03\x05\x0f\x15%\x16\x10\x1f\x16\x15\r\v\x04\x01\x06\x13\v\x04\x0e&'5\x01\x83\x16\x03\b\x03\x16\a\a\x16\x03\b\x03\x16\x03\x80;)d$4\r\x13\x13\x06\a&\x06\x03\x04+\x0f\td\x0f\x15\n\x19\x1d\x1f!5K\x1f01\x17\x06\x05\x06\x02\x04\x14\x15\x1f\x0e&4&\x01\b \b\x0f\x1c(\x1c\v\a\a\x14\x04\x0f\x06&\n\x03\x17$\x15'$\n\x19\x9a\x06\t\n$\x03\x06\a\f\t\a\b\f\x10\r\x0f\x06\x02\f\x11\b\x04\b\x0f\x05\r\x00\x00\x03\xff\xff\xff\xc0\x02\x82\x01\xc0\x00\xa5\x00\xad\x00\xb5\x00\x00$\x1e\x01\x0e\x01&\a\x06#\".\x03'&'\x06\a\x1e\x0132\x16\x14\x06#\".\x02'\x06\"'\x0e\x03#\"&463267&'\x06\a\x0e\x02\a\x06#\"'&\x06&'&4>\x017>\x01\x1e\x02\x17\x166767&'\x06#\".\x01'&#\"&4632\x1e\x01\x17\x1632>\x017'.\x015462\x16\x15\x14\a\x1762\x177&5462\x16\x15\x14\x06\x0f\x01\x1e\x02327>\x0232\x16\x14\x06#\"\a\x0e\x02#\"'\x06\a\x16\x17\x1e\x017>\x03\x02\"\x06\x14\x16264$\"\x06\x14\x16264\x02g\x13\b\a\x12\x13\x16\x1f\x15\f\x17\x10\n\x05\x03\x03\x03\x1c!\t \x13\n\x0e\x0e\n\x17(\x19\x0e\x05\r\x10\r\x05\x0e\x19(\x17\n\x0e\x0e\n\x13 \t!\x1c\x03\x03\x04\x06\x15\x0f\v\f\x15\x1f\x16\x13\x12\x03\x02\x04\a\x04\n\x13\x0e\x11\b\b\x16\x13\x06\b\n\x04\x02\x13\x17\x10\x1a\f\b\x0e\b\n\x0e\x0e\n\x10\x1a\f\b\x0e\b\a\x17*\x19\x11\x19#%6%\v\x13\x1b:\x1b\x13\v%6%#\x19\x11\x19*\x17\a\b\x0e\b\f\x1a\x10\n\x0e\x0e\n\b\x0e\b\f\x1a\x10\x18\x12\x02\x04\n\b\x06\x13\x16\b\b\x11\x0e\x8d\x0e\t\t\x0e\t\xfe\xf7\x0e\t\t\x0e\th\a\x12\x13\b\a\x0f\x15\t\x0e\x14\r\v\r\x06\x17\v#8\x0e\x14\x0e\x1c-%\x13\x01\x01\x13%-\x1c\x0e\x14\x0e8#\v\x17\x06\r\x0f\x11\x19\x05\x05\x15\x0f\a\b\t\x05\n\b\a\x01\x04\x01\x03\b\x05\x05\x0f\a\x1a\x1d\x0e\x05\x03\x11\x10\x0e\r\x15\x0e\x14\x0e\x10\x0f\f\x15!4\x11\"\x02%\x19\x1b%%\x1b\x13\x10%\b\b%\x10\x13\x1b%%\x1b\x19%\x02\"\x114!\x15\r\x0e\x10\x0e\x14\x0e\x15\r\x0e\x10\x11\x03\x05\x0e\x1d\x1a\a\x0f\x05\x05\b\x03\x01'\t\x0e\t\t\x0e\t\t\x0e\t\t\x0e\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0e\x00\x12\x00\x16\x00\x1e\x00\x00\x122\x16\x14\x06\"&4\x054&'\x15\x176\a5\a\x167\x1567\x03\x0e\x02\x15\x14\x177\x91Α\x91Α\x01\xb0WA\x81\x17\xd8Y&s3&\x99+E(\x17\x81\x01\xb8\x91Α\x91\xcegCg\v\xa6g)\x86rG\"ir\t\"\x01?\b3N,/)g\x00\x00\x03\x00\x00\xff\xc0\x02\x80\x01\xc7\x00\t\x00\x14\x00/\x00\x00%\x1e\x01\x1d\x01\x14\x06+\x015\x054>\x01?\x01\x15#\"&5%\x16\x1d\x01#54&\"\x06\x1d\x01#54?\x0154?\x016\x1f\x01\x16\x1d\x01\x02m\b\v\t\ap\xfe\x00\x05\t\x05mp\a\t\x01\xd0\x10`%6%`\x100\tL\v\vL\tQ\x03\x11\td\a\t\xc0L\x06\f\t\x02/\xc0\t\a\xf9\t\x12\xee`\x1b%%\x1b`\xee\x12\t\x1ds\x0e\tK\f\fK\t\x0es\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x1354&+\x01\"\x06\x1d\x01\x14\x16;\x0126754&+\x01\"\x06\x1d\x01\x14\x16;\x0126754&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14p\t\a \a\t\t\a \a\t`\t\a \a\t\t\a \a\t`\t\a \a\t\t\a \a\t\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xb0\x80\a\t\t\a\x80\a\t\t\a\xe0\a\t\t\a\xe0\a\t\t\a@\a\t\t\a@\a\t\t\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00\x00%\x14\x06#!\"&5\x11463!2\x16\x15\x05326=\x014&+\x01\"\x06\x1d\x01\x14\x16\x17326=\x014&+\x01\"\x06\x1d\x01\x14\x16\x17326=\x014&+\x01\"\x06\x1d\x01\x14\x16\x01\xc0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xb0\x80\a\t\t\a\x80\a\t\t\a\xe0\a\t\t\a\xe0\a\t\t\a@\a\t\t\a@\a\t\t\x10\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\x14p\t\a \a\t\t\a \a\t`\t\a \a\t\t\a \a\t`\t\a \a\t\t\a \a\t\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\x82\x01\xc0\x00\a\x00(\x00\x00\x00\"&462\x16\x14\a'\a\x17\x16\x06+\x01\"&46;\x01'.\x01?\x01676\x1f\x0176\x1e\x01\x06\x0f\x01\x06&\x01\x1b6%%6%_\x18#n\x13\x15\x1a\xd0\x11\x17\x17\x11\\- \x14\x121\x12&(\x18':\f!\x15\x03\rX\f!\x01@%6%%6\xcf\x1dAn\x131\x17\"\x17#\x14G!\\!\x04\x04\x1e./\n\x03\x19!\vH\n\x03\x00\x00\x02\x00\x00\xff\xc0\x02\x80\x01\xc2\x00)\x00R\x00\x00\x002\x16\x1d\x01\x14\x06\x0f\x01\x06#\"&=\x0146?\x0154?\x0103>\x01\x17\x1e\x01\x0f\x01\x06\x1d\x01\x14\x1626=\x014\x05\x16\x1d\x01\x14\x06#\"/\x01.\x01=\x01462\x16\x1d\x01\x14\x1626=\x014/\x01&676\x16\x1721\x17\x16\x1d\x01\x01\x03\x1a\x13/&\xb3\x04\x04\x10\x10\r\tZ\x10u\x01\a\x19\n\f\x06\aM\x0e\t\x0e\t\x01z\x16\x10\x10\x04\x04\xb3&/\x13\x1a\x13\t\x0e\t\x0eM\a\x06\f\n\x19\a\x01u\x10\x01\x00\x13\r\x80'?\n/\x01\x15\v`\n\x11\x03\x1eQ\x1d\x18\xb0\v\x05\x06\a\x1a\v\x82\x17\x1aM\a\t\t\aP\r\x8f\a\x17`\v\x15\x01/\n?'\x80\r\x13\x13\rP\a\t\t\aM\x1a\x17\x82\v\x1a\x06\a\x06\n\xb0\x18\x1dQ\x00\x00\x00\x04\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x16\x001\x00N\x00V\x00\x00%\x14\a\x06\x14\x17\x16\x1d\x01\x14\x06#!\"&5\x11463!2\x15\x0f\x02\"\x06\x1f\x01\a\x063237\x17232/\x0176&#/\x01&\"'\"\x06\x14\x16327654#0\"#\"&463:\x011\x16324#&\x135!\"\x06\x14\x163\x01\xc0\n\x02\x02\n\x0f\v\xfe\xba)77)\x01F\x1a\x93\v\x19\x02\x01\x01\x12\x04\x01\x04\x01\x01\x16\x16\x01\x01\x04\x01\x04\x12\x01\x01\x02\x19\v\x01\x04;/DD/\x15\x13\x05\a\x03\x01'88'\x01\x03\x01\x02\x06\x06\x14u\xfe\xe3\r\x13\x12\x0eZ\x0f\x05\t4\f\n\t\x10\f\x0e7)\x01@)7\x1ax\x16\x04\x04\x02\x11\x19\x04\f\f\x04\x19\x11\x02\x04\x04\x16\x02CC`C\a\x02\x05\x068N8\x01\x0e\a\xfe\x8d@\x12\x1c\x12\x00\x00\x03\x00\x00\xff\xc0\x02\x01\x01\xc0\x00\x19\x00$\x00_\x00\x00%\x16\x14\x0f\x01\x06\"/\x01&=\x01\x06#\"&462\x16\x15\x14\a32\x17\x042654.\x01#\"\x06\x147\x1e\x01\x15\x14\x06\a\x15\x14+\x01\"=\x01&'&?\x016\x17\x16;\x012654/\x01.\x0154>\x01354;\x012\x1d\x01\x16\x17\x16\x0f\x01\x06'&+\x01\"\x06\x15\x14\x17\x01\xf9\a\a\x1c\a\x14\ad\a8HVzz\xacz,\x10\n\a\xfe\xffxT'B'+C\x03\b\x03CJ\n\x0e\x0e\x14\x0e\x06\f\x05\a\x14\a\x1c\a\ad\a\n\x10,z\xaczzVH8\a\tT<'C&Tx\x9c+\x1f$O\x03\x03O$\x1f5\x0e\x14\x0e\x0e\n\a\v\x06\x00\x00\x00\x00\x04\xff\xfa\xff\xc0\x02\x00\x01\xc0\x00\x10\x00\x1b\x00%\x005\x00\x007\x0e\x01\x17\a\x06#\"&'&6?\x0153\x155\x15#546;\x012\x17\x0672\x16\x1d\x01#5463\x0353\x15\x14\x06\x0f\x01\x06#\"&'&67\xd7(\x16\x16\x15\x1a \x19.\r\x12\x11\x1eW\xa0\xa0\x13\r\x80\x02\x06\b\xc0\r\x13\xc0\x13\r \xc0\x1e\x15s\x1a \x19-\r\x12\x11\x1e\x89\x1e^)\x11\x13\x19\x17!H\x16A\xb0\xa0\xe0 \r\x13\x02\x0e\x10\x13\r \r\x13\xfe\xf0\xb0\xd0\x1a=\x0fW\x13\x19\x17!H\x16\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02G\x01\xc0\x00\x1b\x00;\x00\x00%\x16\x0f\x01\x17\x16\x0f\x01\x06/\x01\a\x06/\x01&?\x01'&?\x016\x1f\x0176\x1772\x16\x1d\x01\x14\x06+\x01\x03\x0e\x01#\"/\x01#\"&=\x0146;\x012\x1f\x01\x13>\x013\x02;\f\f..\f\f\x16\f\v..\v\f\x16\f\f..\f\f\x16\f\v..\v\f\x03\n\x0e\x0e\n\xc3b\x06 \x10\x1f\x12X,\n\x0e\x0e\nQ\x13\n:U\x02\x12\v\xc5\f\v..\v\f\x16\f\f..\f\f\x16\f\v..\v\f\x16\f\f..\f\f\xe5\x0e\n0\n\x0e\xfe\x89\x15\x14\x1c\xa4\x0e\n0\n\x0e\x11j\x01C\v\r\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x02\x01\xc0\x00\x1c\x009\x00\x00\x052\x16\x15\x14\a\x06#\"&4632\x17\x16\a\x06#0&#\"\x06\x14\x163267\x1e\x01\x0f\x01\x17\x16\x06#\"/\x01\a\x06#\"&?\x01'&6?\x0262\x1f\x01\x01T\a\t\v+.j\x96\x96j.,\f\x03\x02\r\a\x02W||W\x02\a\xa3\a\x03\x047\r\x01\a\x04\x02\x03DD\x03\x02\x04\a\x01\r7\x04\x03\aL\"\x03\f\x03\"\x12\t\x06\v\x04\x10\x96Ԗ\x10\x05\r\f\x01|\xae|\x01\xfc\x01\f\x046L\x04\a\x01$$\x01\x06\x05L6\x04\f\x01\vE\x06\x06E\x00\x00\x00\x00\b\xff\xfa\xff\xc0\x01\xd6\x01\xc0\x00\x1d\x00 \x00&\x00)\x00,\x00/\x002\x005\x00\x00%\x17\x16\x06+\x01\a\x06\"/\x01#\"&?\x01'&6;\x01762\x1f\x0132\x16\x0f\x01#\x17\a'#\a\x173\x03\a3\a\x177\a3'\x177#73'\x01\x965\v\x16\x15k8\v*\v8k\x15\x16\v55\v\x16\x15k8\v*\v8k\x15\x16\vB(\x14 5p55p8\x17.\xb8\x14\x14((\x14\x8d\x17.\x90(\x14\xc0Y\x13$^\x12\x12^$\x13YY\x13$^\x12\x12^$\x13\x01!7XXX\x01\x0e&8!!\xb0!\u007f&8!\x00\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc9\x00\t\x00\x13\x00'\x00E\x00\x00762\x1f\x01\x11#547!\x16\x1d\x01#\x11762\x17'\x17\x16\x15\x11#54&\a\x0e\x01\x1d\x01#\x114?\x016\x17'76&+\x01'&\"\x0f\x01#\"\x06\x1f\x01\a\x06\x16;\x01\x17\x162?\x01326F\x04\f\x04&\x80\a\x02r\a\x80&\x04\f\x04\xe6\x80\f`-\x1e\x17\x1e`\f\x80\x14H\x13\x13\x02\x03\x03'\x19\x01\x06\x01\x19'\x03\x03\x02\x13\x13\x02\x03\x03'\x19\x01\x06\x01\x19'\x03\x03\xfb\x05\x05+\xfe\xf0\xe2\n\b\b\n\xe2\x01\x10+\x05\x05\xbef\n\x0f\xfe\x86`\x1d'\x05\x04&\x18]\x01z\x0f\nf\x10\xe8\x1f\x1f\x02\x05(\x02\x02(\x05\x02\x1f\x1f\x02\x05(\x02\x02(\x05\x00\v\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x02\x00\x05\x00\x11\x00\x14\x00\x17\x00\x1b\x00F\x00R\x00U\x00X\x00^\x00\x00%'37\a'$2\x16\x15\x11\x14\x06\"&5\x114\x137\x1737\x17\x05\x11!\x11\x01\x06\x15\x14\x1f\x01\a\x06\x15\x14\x16;\x01\x17\x1632?\x01327654/\x017654&+\x01'\"\x0f\x01#\"$2\x16\x15\x11\x14\x06\"&5\x114\a\x17#\x0f\x01'\x17'73\x17\a\x01@\x12$Q\x12\x13\xfe\x9e(\x1c\x1c(\x1c\xdd\x12\x13|\x13\x12\xfe\xdd\x01\x80\xfe\xc3\x03\x03\x1d\x1d\x03\f\t<\x1d\x06\f\f\x06\x1d<\f\x06\x03\x03\x1d\x1d\x03\f\t<\x1d\x06\f\f\x06\x1d<\f\x01s(\x1c\x1c(\x1c\xe0\x12$,\x13\x12B!!B!!R\x1d\x89\x1f\x1f\xc8\x13\r\xfe@\r\x13\x13\r\x01\xc0\r\xfe\xdb\x1f\x1f\x1f\x1f\x98\x01\xa0\xfe`\x01\x16\x05\x05\x06\x0511\x05\x06\b\r1\n\n1\v\x05\x05\x06\x0511\x05\x06\b\r1\n\n1\xaf\x13\r\xfe@\r\x13\x13\r\x01\xc0\r\u007f\x1d\x1a\x1e\x1eo8888\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x007\x00;\x00?\x00\x00\x01267\x15\x14\x06+\x01\x1532\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&=\x01#\"&=\x0146;\x015#\"&=\x01\x1e\x013\a\x1535\x175#\x15\x01x\x1eP\x1a\x13\r 0\a\t\t\a0\t\a \a\t\xff\x00\t\a \a\t0\a\t\t\a0 \r\x13\x1aP\x1e\b`\xa0`\x01\xa0\x13\r`\r\x13@\t\a \a\t\xf0\a\t\t\a\xf0\xf0\a\t\t\a\xf0\t\a \a\t@\x13\r`\r\x13`@@@@@\x00\x00\x00\x03\xff\xfe\xff\xc0\x02\x82\x01\xc0\x00@\x00D\x00H\x00\x00%\x16\a\x06\x0f\x01\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&=\x01'&'&?\x015'&4?\x015'&6?\x01\x17\x1e\x01\x0f\x01\x15\x17\x16\x14\x0f\x01\x15%\x1535\x05!5!\x02y\b\x01\x01\b7\t\a \a\t\xa0\t\a \a\t\xa0\t\a \a\t7\b\x01\x01\bY7\t\tw\x1b\x06\x03\a\xb7\xb7\a\x03\x06\x1bw\t\t7\xfe\xc0\xc0\xff\x00\x01@\xfe\xc0/\x05\n\b\x04\x140\a\t\t\a00\a\t\t\a00\a\t\t\a0\x14\x04\b\n\x051@\x12\x04\x14\x042@\x10\x06\x10\x04VV\x04\x10\x06\x10@2\x04\x14\x04\x12@\xe0@@\xe0@\x00\x00\x02\x00\x00\xff\xfb\x02\a\x01\x85\x00\x11\x00-\x00\x00\x136\x16\x15\x11\x14\x06/\x01#\"&=\x0146;\x01\x05\x17\x16\x0f\x01\x06/\x01\a\x06/\x01&?\x01'&?\x016\x1f\x0176\x1f\x01\x16\a\xd7\v\x1e\x1e\vYf\n\x0e\x0e\nf\x01P-\f\f\x17\v\v..\v\v\x17\f\f--\f\f\x17\v\v..\v\v\x17\f\f\x01y\v\f\x10\xfe\xb0\x10\f\vY\x0e\n\x90\n\x0e`.\v\v\x17\f\f--\f\f\x17\v\v..\v\v\x17\f\f--\f\f\x17\v\v\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1d\x00%\x00\x00\x122\x16\x14\x06\"&4\x16264&\"\x06\x14&264&#\"\x06\x14\x163\"&462\x16\x14\x06\"&4\x91Α\x91Α\xeb\x1a\x13\x13\x1a\x13\bP88(PppP(8S\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xce\xe7\x13\x1a\x13\x13\x1am8P8p\xa0p8P\xb8\x13\x1a\x13\x13\x1a\x00\x00\x04\xff\xff\xff\xc0\x02@\x01\xc2\x00\x1b\x004\x00D\x00L\x00\x00\x01\"\x1d\x01\x14;\x01\a#\"\x1d\x01\x14;\x01\a#\"\x1d\x01\x14;\x01\a!\x11!\a\x01\x16\x0f\x01\x06&'.\x017>\x01\x1f\x01\x16\x0f\x01\x06/\x01\x06\x1776\x17\x052\x16\x1d\x01\x14\x06#!\"&=\x01463\x16264&\"\x06\x14\x01\x88\b\b\x9e\x12\x8c\b\b\x84\x12r\b\bi\x11\xfe\xe0\x01\x80\x11\xfep\x05\f'\n\x19\aF\x02F\b\x19\v'\f\x05\x1a\x05\f-\x1b\x1b-\f\x05\x01[\x1b%\x13\r\xfe\xa0\r\x13%\x1b\x83\x1a\x13\x13\x1a\x13\x01\x80\b\x10\b@\b\x10\b@\b\x10\b@\x01`@\xfe\xf1\r\a\x18\x06\x03\bM\xcfN\t\x05\a\x18\a\r?\f\x01\x05JJ\x05\x01\fp%\x1b \r\x13\x13\r \x1b%`\x13\x1a\x13\x13\x1a\x00\x00\x00\x06\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\a\x00\x1e\x000\x00L\x00T\x00\\\x00\x00\x00\"&462\x16\x14\x17\x14\a\x06\x14\x17\x16\x1d\x01\x14\x06#!\"&5\x11463!2\x15\x06\"\x06\x15\x14\x17\x15\x14\x16;\x0126=\x01654\a\x06\x1f\x01\a\x06\x1f\x01\x16?\x01\x17\x16?\x016/\x0176/\x01&\x0f\x01'&\a\x175!\"\x06\x14\x163\x12\"&462\x16\x14\x01\x17\x0e\t\t\x0e\t\xa0\n\x02\x02\n\x0f\v\xfe\xba)77)\x01F\x1a\xafB/ \t\a@\a\t \xc3\x03\aGG\a\x03\x06\x03\bbb\b\x03\x06\x03\aFF\a\x03\x06\x03\bbb\b\x03\xfa\xfe\xe3\r\x13\x12\x0ew\x0e\t\t\x0e\t\x018\t\x0e\t\t\x0e\xe7\x0f\x05\t4\f\n\t\x10\f\x0e7)\x01@)7\x1a\x1e&\x1a \x13\r\a\t\t\a\r\x13 \x1a\x81\b\x03\x1e\x1e\x03\b\x0e\b\x03++\x03\b\x0e\b\x03\x1e\x1e\x03\b\x0e\b\x03**\x03\b\xef@\x12\x1c\x12\x018\t\x0e\t\t\x0e\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x80\x01\xc7\x00 \x00#\x00\x00!2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x13'&?\x016\x1f\x0176\x1f\x01\x16\x0f\x01\x13%\a3\x02p\a\t\t\a\xfd\xa0\a\t\t\a\x19\xef5\t\r\x19\r\n))\n\r\x19\r\t5\xef\xfe\xe9t\xe8\t\a \a\t\t\a \a\t\x01JJ\r\t\x13\t\r88\r\t\x13\t\rJ\xfe\xb6\xa0\xa0\x00\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xa0\x00-\x007\x00?\x00G\x00\x00\x01\x1e\x03327\x15\x14\x06+\x01\"&=\x01\a32\x16\x1d\x01\x14\x06+\x01\"&5\x114&\"&4632\x16\x1d\x01>\x03?\x01\x15\x14\x06\"&=\x01\x17\x06264&\"\x06\x14\x16264&\"\x06\x14\x01#\x04\x17!*\x17\x0f\x11\t\a \a\t\x80 \r\x13\t\a\xb0\x1a&\x13\x1a\x13\x13\r(8\x1333\x1c\xab@8P8@\x0f\x0e\t\t\x0e\tY\x0e\t\t\x0e\t\x01\x00\x16&\x1b\x0f\x04\xce\a\t\t\a\x90`\x13\r\x10\a\t&\x1a\x01\x00\r\x13\x13\x1a\x138(V\x1d'\x0e\x04`@\x86(88(\x86@P\t\x0e\t\t\x0e\t\t\x0e\t\t\x0e\x00\x02\xff\xfc\xff\xc0\x01\xc4\x01\xc0\x00\x17\x007\x00\x00\x13\x15#546;\x012\x16\x1d\x01#54'\x15#5#\x15#5\x06\x01\x16\x06#\x15\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&=\x01\"&?\x0163!2\x17p0K5@5K0(000(\x01N\x05\x13\x10\t\a \a\t\xff\x00\t\a \a\t\x10\x14\x06\n\b\x17\x01j\x17\b\x01@\x80\x805KK5\x80\x80.\x17\xc5\xd0\xd0\xc5\x17\xfe\xfc\x0f\x1bp\a\t\t\app\a\t\t\ap\x1b\x0f \x16\x16\x00\x00\x00\x02\x00\x00\xff\xc0\x02B\x01\xc0\x00\x1c\x00<\x00\x00%\x1e\x01\x15\x14\x06+\x01\"&54674&54632\x16\x17632\x16\x15\x1476\x16\a\x06\a&'654&#\"\a&'&54632\x17\x1e\x01\a\x0e\x01\x15\x14\x16\x01W\x1f*/!\xf0(8$\x1d\x018(\x1b,\r\x12\x1a\x1a&\xd5\x06\a\x045T\x11%\x018(\x13\x11\a\n\x02qO\x11\x12\x06\x02\x05#)m_\x02.\x1f!/8(\x1f1\n\x01\x04\x01(8\x1b\x17\x12&\x1a\x11'\x01\v\x05A\x05$\x10\x06\x05(8\a\a\a\r\fPp\x03\x01\r\x03\x14F)F[\x00\x00\x00\x03\x00\x00\xff\xbf\x02\x80\x01\xc0\x00\x1e\x00D\x00Q\x00\x00%\x1e\x01\x15\x14\x06#!\"&54674&454632\x16\x17632\x16\x15\x14\x06%\x16\x17\x06\x0f\x01\x06&?\x01'&4?\x01'&6\x1f\x01762\x1f\x0176\x16\x0f\x01\x06\a&'&\"\x06\x1474632\x16\x17\x06\a\x06\a.\x01\x02?\x1d$8(\xfe\xf0(84%\x01B.\"6\x0e\x10\x12\x1a&\x01\xfeR\x0f\x15\x0f\tL\t\r\x03\x1dS\b\bS\x1d\x03\r\tX)\x05\x12\x05)X\t\r\x03\x1e\x11\r\t\x0e!\\B\x1c1#\x19)\n;\b\f\r\x1d'z\n1\x1f(88(&6\x03\x01\x04\x03\x01.B$\x1e\n&\x1a\x01\x04\x16\x10\b\x0f\x13\x19\x03\r\tX)\x05\x12\x05)X\t\r\x03\x1dS\b\bS\x1d\x03\r\tY\x02\x06\x14\r!B\\.#1\x1b\x17$D\x04\b\x05/\x00\x00\n\xff\xfe\xff\xbe\x01\xe2\x01\xc0\x00\x05\x00\x0e\x00\x17\x00 \x00'\x000\x00:\x00E\x00K\x00O\x00\x007\x17'\"&?\x01\x06&=\x0146\x1f\x01\a&63\x17\x15\x14\x06'\x03'&4?\x016\x16\a\x17#762\x1f\x0176\x16\x1d\x01\x14\x06/\x03&>\x01\x1f\x01\x16\x14\a\x032\x16\x0f\x01\x06\".\x01=\x017\x17\x16\x06#\a'3\a'kl\xd0\x04\x04\x02\x06\x01\x06\x04\x02MA\x03\x02\x03\xcc\a\x04rQ\x02\x02\x97\x05\t\x04=m_\x05\x12\x05_}\x02\x04\x06\x01L\x10P\x02\x02\a\x03\x97\x02\x02\x02\x03\x02\x03\xc3\x02\x04\x03\x02uj\x02\x04\x04\xd0\x19ddd\xe9\xbe\x16\b\x048\x03\x02\x03\xa2\x03\x02\x01.\xe7\x02\x06\x16B\x04\x05\x02\x01Y1\x01\x04\x02b\x03\t\x05\x99\xa8\b\b\xa8\x1d\x01\x02\x03\xa2\x03\x02\x03z\x1b\x8f\x04\a\x02\x02b\x02\x04\x01\xfe\xd5\x06\x02W\x01\x02\x04\x02Bߜ\x04\b\x16Ű\xb0\x00\x03\x00\x00\xff\xbd\x01\xc0\x01\xcb\x00\v\x00\x17\x00#\x00\x00\x01\x16\x14\x0f\x01'&4?\x016\x1f\x016\x16\x1d\x01\x14\x0f\x01\x06&=\x01'46\x1f\x01\x15\x14\x06/\x01&5\x01\xa6\x04\x04\xc6\xc6\x04\x04\xa6 \xb4\x04\b \x98\b\x10\xf0\b\x04\xc4\x10\b\x98 \x01R\x02\n\x02ww\x02\n\x02e\x14\x14\x92\x03\x05\x05\xc6&\x13]\x05\n\n\xe0m\x05\x05\x03t\xe0\n\n\x05]\x13&\x00\x00\x00\x00\x03\x00 \xff\xc0\x02 \x01\xa3\x00\x1e\x004\x00<\x00\x00%\x17\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&=\x01.\x015462\x16\x14\x163%\x15\x14\x06+\x01\x15'546\x1f\x0132\x1e\x01\x1f\x0132\x16\x064&\"\x06\x14\x162\x01*\x96\t\a@\a\t\xa0\t\a@\a\t\x1c$\x13\x1a\x13\x13\r\x01\xa0&\x1a \x80\x14\a\x1c5\x06\v\t\x03\a@\a\tp\t\x0e\t\t\x0e\xe06\xda\a\t\t\app\a\t\t\a\xd6\n1\x1f\r\x13\x13\x1a\x13p \x1a&$.\x96\v\b\b\x1b\x05\b\x05\x0e\t\x0e\x0e\t\t\x0e\t\x00\x03\xff\xfc\xff\xbf\x02\x82\x01\xc0\x00\x10\x00C\x00I\x00\x007\x06&?\x01>\x01\x1f\x01\x15\x14\x17#\"&?\x01\x05\x1e\x01\a\x0e\x01#!\"&547>\x027.\x01=\x01'&4?\x01'&6;\x012\x1f\x01\x16\x15\x14\x0f\x01\x0e\x01+\x01\"/\x01#\x15\x14\x16\x177\x06\x16\x17\x167\x12\f\t\tu\x11*\x12x\x0f\xdf\v\b\b[\x01\u007f #\x02\x03H0\xfe\r\b\n\x0eGU\xbcZ-3<\x04\x04<>\x03\x04\x05\xed\x10\nK\x06\x03\x0f\x03\x11\b\x1f\x0e\t\x1c@\x10\v\x0e\x03\x0e\v\x13\x05\xc0\x01\x16\au\x0e\x02\fW+*)\x14\aEB\x10<#/@\n\b\x0e\x03\x10\x11\x19\x03\x1e_6m\x19\x02\n\x02\x192\x04\n\rc\t\n\b\a\x1c\b\n\t\x17%\f\x19\x06\xae\f\x11\x01\x01\x13\x00\x00\x00\x01\x00\x00\xff\xbf\x02\x03\x01\xc0\x00.\x00\x00\x01\x16\a&\x06\a\x0e\x01\x17\x06#\"+\x01\a\x06\x17\x16\x15\x14\x06\"'&7\x06'&54>\x0132\x17\x16?\x01547>\x0232\x16\x01\xcf3\x02\x1fH\x1a\x1e\x01\x1e\x1d\x1f\x01\x01V(\x0f\t\x04#2\x12\x17\b\"\x16\x12\x10\x1c\x10\f\v\x16\x0f(?\x0e).\x13\x1dF\x01\x8e3I\x11\t\x19\x1eX!\n)\x0e\x16\v\f\x19#\x12\x16\"\b\x17\x12\x19\x10\x1c\x10\x04\t\x0f(VO?\x0e\x17\r\x1d\x00\x00\x00\x00\f\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x10\x00 \x000\x00@\x00P\x00`\x00p\x00\x80\x00\x90\x00\x9a\x00\xa3\x00\xac\x00\x007\x16\a\x06\a\x06+\x01\".\x01767>\x01\x17%\x1e\x01\x0f\x01\x06+\x01\"/\x01&6762\x032\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x13\x16\a\x06\a\x06/\x01.\x017676\x16\x1f\x01\"'&'&?\x016\x16\x17\x16\x17\x16\x06#'\x16\x06\x0f\x01\x06'&'&?\x01>\x01\x17\x16\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463'62\x17\x11\x14+\x01\"5'67\x11\x14+\x01\"5\x13\x16\x17\x15\x14+\x01\"5\x81\v\x05\x05\x01\x02\ra\x05\a\x05\x01\x03\x13\x03\x0e\x06\x01\x11\a\x06\x03%\x04\v*\v\x04%\x03\x06\a\x1f@\xb0\a\t\t\a`\a\t\t\a`\a\t\t\a`\a\t\t\a\xad\x05\v\t\b\t\vS\x06\x03\x05\x1e*\x06\r\x03\xf5\r\x02\x01\x05\x05\vS\x06\x0e\x03\x13\x03\x01\n\a*\x05\x03\x06S\v\t\b\t\v\x05$\x03\r\x06*I\a\t\t\a`\a\t\t\a`\a\t\t\a`\a\t\t\a\xa0\n\f\n\b\x10\b@\f\x14\b\x10\b\x80\x14\f\b\x10\b\xfd\a\r\r\x0e\x0e\x05\a\x05.+\x06\x04\x04\x88\x02\r\x06h\v\vh\x06\r\x02\b\xfe\xe0\t\a@\a\t\t\a@\a\t\x80\t\a@\a\t\t\a@\a\t\x01\x1c\f\b\x06\b\t\a3\x04\x0e\x06$\x18\x03\x05\a\xd6\x0e\x0e\r\r\a3\x04\x04\x06+.\a\n\xa3\x06\x0e\x043\a\t\b\x06\b\fZ\a\x05\x03\x18\xe7\t\a@\a\t\t\a@\a\t\x80\t\a@\a\t\t\a@\a\t\xee\x02\x02\xfe\xda\b\b\xfd\x12\f\xfe\xe5\b\b\x01\x1b\f\x12\xfd\b\b\x00\x00\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00-\x00O\x00h\x00q\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x0354+\x01\"\x06\x1d\x01\x14\x16;\x012=\x014+\x01\"&=\x0146;\x012\x172654/\x01&54;\x012=\x014+\x01\"\x06\x15\x14\x1f\x01\x16\x15\x14+\x01\"\x1d\x01\x14374+\x01\"\x1d\x01\x14\x17\x16276=\x014+\x01\"\x1d\x01\x14\a&57\x16\x1d\x01#532\x17\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8`\b\b\x14\x1c\x1c\x14\b\b\b\b\a\t\t\a\b\b,\x12\x19\x0e\x16\x02\v\f\b\b\f\x12\x19\x0e\x16\x02\v\f\b\b`\b\x10\b$\x05\x0e\x05$\b\x10\b\x10\x10y\a\x80\x06\n\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xfe\xe8\x10\b\x1c\x14 \x14\x1c\b\x10\b\t\a \a\t`\x17\x10\x10\f\x13\x01\x02\a\b\x10\b\x17\x10\x10\f\x13\x01\x02\a\b\x10\bx\b\b\x157'\x05\x05'7\x15\b\b\x15\x1f\x1a\x1a\x1f\xb4\a\n\x06\x80\a\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\v\x00D\x00P\x00`\x00p\x00\x00\x01#\"\a546;\x012\x16\x15\x17\x15\x14\x06\x0f\x01\x15!5'&=\x01\x16;\x0127\x16;\x0127\x16\x17\x06\x0f\x01\x06\x15\x14\x1f\x01\x1632?\x01>\x0272=\x014+\x01\"&546;\x012\x16'&+\x01546;\x012\x16\x15\x05\"&=\x0146;\x012\x16\x1d\x01\x14\x06#3\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\x01\x000\b\b\t\a \a\t\x80\x10\f$\xff\x00\x1b%\b\b \x12\x0e\x0e\x12 \v\v\f\x1b\x15\x1b\x06\x01\x03\x0e\x02\x02\x04\x03\x06\x12\x18 \x16\b\r#\x14\x1c\t\ap\x1a& \x11\x0f \t\a \a\t\xfe\xb0\a\t\t\a \a\t\t\a@\a\t\t\a \a\t\t\a\x01 \x03\x93\a\t\t\a\xf0X\x11'\f$@@\x1b%5N\x03\f\f\x06\x1a\t\x12(\t\x02\x03\x04\x03\b\x02\x04\t\x1b\x1b\x12\x01\b\x10\b\x1c\x14\a\t%?\x06p\a\t\t\a\xb0\t\a\x80\a\t\t\a\x80\a\t\t\a\xa0\a\t\t\a\xa0\a\t\x00\x03\x00\x00\xff\xb9\x01\x80\x01\xc3\x00\x1e\x00&\x00.\x00\x00\x136\x16\x15\x11\x14\x06/\x01&\x0f\x01\x06/\x01&\"\x0f\x01\x06/\x01&\x0f\x01\x06&5\x1146\x16264&\"\x06\x14\x16264&\"\x06\x14\xbaRt\x14\a\x19\f\n+\v\v)\x05\x0e\x05)\v\v+\n\f\x19\a\x14l\a\x1a\x13\x13\x1a\x13\x93\x1a\x13\x13\x1a\x13\x01\xc0\x02qQ\xfe\xf0\v\b\b\x12\t\v0\f\f.\x05\x05.\f\f0\v\t\x12\b\b\v\x01\bPv\xde\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x00\x00\x02\xff\xff\xff\xbf\x02G\x01\xc0\x00\x1b\x00'\x00\x00%\x16\x0f\x01\x06/\x01&?\x01'\x06/\x01&=\x01'62\x1f\x01\x16\a\x1776\x17\x05\x17\x16\x17\a\x06\"&47%\x16\x02;\f\fZ\v\f\x16\f\f\v\x1d$\x1a1\x13Z/\x84/-\x1a\t\x1d\v\v\f\xfe\xf81\x04\a\xee\x124%\x14\x00\xff\x05\xfe\v\fZ\v\v\x17\v\v\f\x1c\t\x1a1\x13\x1a\x13-//-\x1a$\x1d\f\v\v\b1\x04\x05\xff\x14%4\x12\xee\a\x00\x00\x00\x10\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\a\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x00m\x00x\x00\x83\x00\x90\x00\x9b\x00\xa8\x00\xb3\x00\xbe\x00\xc9\x00\xd6\x00\x00\x1332\x1d\x01#54#32\x1d\x01#54;\x012\x1d\x01#54;\x012\x1d\x01#54\x17\x15#54;\x012!32\x1d\x01#54!2\x16\x1d\x01\x14\x06+\x01\x1532\x16\x1d\x01\x14\x06#!\"&=\x0146;\x015#\"&=\x0146;\x012\x16\x1d\x01\x14\x16;\x01546;\x012\x16\x1d\x01326=\x014636\"&546?\x01\x16\x15\x14\x04\"&546?\x01\x16\x15\x14%\".\x01546?\x01\x16\x15\x14\x0e\x01\"&546?\x01\x16\x15\x14\x17\"&546?\x01\x16\x15\x14\x0e\x012\"&546?\x01\x16\x15\x14\x16\"&546?\x01\x16\x15\x14\x16\"&546?\x01\x16\x15\x14\x17\"&546?\x01\x16\x15\x14\x0e\x01\xe8\x10\b 8\x10\b \xe8\x10\b H\x10\b ` \b\x10\b\xfeH\x10\b \x02\x10\a\t8(\xc0\xb0\a\t\t\a\xfe`\a\t\t\a\xb0\xc0(8\t\a \a\t\x13\r\xc0\t\a \a\t\xc0\r\x13\t\a\x1a\x14\x0e\f\x06\x06\x18\xfd\xb2\x14\x0e\f\x06\x06\x18\x01\b\a\v\x06\f\x06\x06\x18\x0e\xd0\x14\x0e\f\x06\x06\x18(\n\x0e\f\x06\x06\x18\x06\vC\x14\x0e\f\x06\x06\x18\x92\x14\x0e\f\x06\x06\x182\x14\x0e\f\x06\x06\x18(\n\x0e\f\x06\x06\x18\x06\v\x01 \bxx\b\bxx\b\bxx\b\bxx\b\bxx\b\bxx\b\t\ap(8@\t\a \a\t\t\a \a\t@8(p\a\t\t\ap\r\x13\xc0\a\t\t\a\xc0\x13\rp\a\t \x10\v\x06\x1b\n\n'\x0e\v\x10\x10\v\x06\x1b\n\n'\x0e\v \a\f\b\x06\x1b\n\n'\x0e\v\x100\x10\v\x06\x1b\n\n'\x0e\v\x10\x10\v\x06\x1b\n\n'\x0e\b\f\a\x10\v\x06\x1b\n\n'\x0e\v\x10\x10\v\x06\x1b\n\n'\x0e\v\x10\x10\v\x06\x1b\n\n'\x0e\v\x10\x10\v\x06\x1b\n\n'\x0e\b\f\a\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x0f\x00$\x00,\x00\x00!2\x16\x1d\x01\x14\x06#!\"&=\x014637\x17#7>\x01?\x01\a\x06\x15\x14\x1f\x01#?\x01/\x01\x0f\x017\a\x1f\x01?\x01/\x01\x01\xf0\a\t\t\a\xfe \a\t\t\a\xb0\x10\x90o\a\x1f\x0f\xbc8\x04\x06V\xd0\x10@@ @\x80 \x10\x10 \x10\t\a \a\t\t\a \a\t@ \xfa\x10\"\tk\xa9\n\n\r\f\xca @@ \xc0\x10\x10 \x10\x10 \x00\x00\x04\xff\xff\xff\xbf\x01\x80\x01\xc0\x00\v\x00\x1b\x00J\x00R\x00\x00\x177\x17\a\x0e\x01#\"'.\x027\x0e\x01/\x01.\x02?\x01>\x01\x17\x1e\x01\a\x172\x16\x15\x11\x14\x06+\x01\"&=\x01#\"/\x01\a\x061\x17\x16\x1d\x01\x14\x06\"&=\x01'&54?\x01>\x0132\x1f\x0135463&\"&462\x16\x14Q#4\x19\x03\x11\v\x04\x04\b\f\x05\x11\x02\v\a@\x04\x06\x03\x01\x1a\b:!\a\a\x02\xe7\a\t\t\a\x10\a\t0\r\n\x16\x14\x01/\x13\x13\x1a\x13W\t\x01\x1b\x05 \x14\x18\x11/#\t\a\\(\x1c\x1c(\x1c\x18\x8a5e\v\r\x01\x02\f\x10\xcd\x06\a\x01\x10\x01\x06\b\x04b\x1f\"\b\x02\v\x06+\t\a\xfe\xc0\a\t\t\a\xf0\t\x17P\x01/\x13\x1aS\r\x13\x13\rSV\n\r\x04\x04k\x14\x19\x11/\x10\a\t@\x1c(\x1c\x1c(\x00\x00\x02\x00\x00\xff\xe0\x02\x80\x01\xa0\x00>\x00F\x00\x00\x012\x1e\x01\x1d\x01\x14\x06#\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&=\x01\x06\"'\x15\x14\x06+\x01\"&=\x014632\x17546;\x012\x16\x1d\x01632\x1e\x01\x17>\x02\x06264&\"\x06\x14\x02E\x11\x1b\x0f\x13\r\t\a \a\t\x80\t\a@\a\t3z3\t\a@\a\tpPI7\x0e\n\x10\n\x0e\x11\x0f\x14#\x1a\b\a\x1f\x1a\x80\x0e\t\t\x0e\t\x01`\x14\x1f\x11\\\r\x13 \a\t\t\a \xb0\a\t\t\aG\x17\x17G\a\t\t\a\xf0B^)1\n\x0e\x0e\n\x0e\x06\x0f\x1b\x11\x03\x0f\tP\t\x0e\t\t\x0e\x00\x00\x00\x02\x00\x00\xff\xc0\x02A\x01\xc0\x00K\x00S\x00\x00\x01\x15\x14\x0e\x01\x0f\x01\x06&/\x02\x150\x15\x14\a\x15\x14\x06+\x01\"&=\x01'\a\x17\x16\x06+\x01\"/\x01&54?\x01&5457\x06\x1d\x01\x14\x06+\x01\"&=\x01463\x156;\x0146;\x012\x16\a\x06\a\x16\x17\x16\x06264&\"\x06\x14\x02@\x05\n\x05!\v\x18\x05\x13\x10 \t\a@\a\t\x86\x18\x1a\x02\t\bB\f\x03\x19\x02\x04\x1a\x1f\x01\x11\t\a\x10\a\t4$\x1d+\xa0K5x\x04\x05\x01\x04\x12\a\x06\tG\x0e\t\t\x0e\t\x01sM\x06\f\n\x02\r\x05\t\v&\af\x01-!\xb2\a\t\t\a\x96\x17@i\b\f\fd\a\b\f\vD\x1d)\x02\x03\x03\r\x138\a\t\t\a8$4\x01!5K\x06\x04\x13\v\b\a\t \t\x0e\t\t\x0e\x00\x00\x00\x02\xff\xf9\xff\xc0\x02G\x01\xc1\x00\x17\x004\x00\x00\x01\x17\x1e\x013\x15\x14\x06+\x01'7'\x17\a\x17#\"&=\x01265%\x16\x0f\x01\x06/\x01&\x0f\x01\x06/\x01&7%62\x1f\x01546;\x012\x16\x1d\x01\x01 \xdb\x01\x03\x01\t\a\xb0(h\x94\x00F\x00N\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\a\x1732\x16\x1d\x01\x14\x06+\x01'\a32\x16\x1d\x01\x14\x06+\x01\"\x06\x14\x16;\x012\x16\x14\x06+\x01\"&'&76=\x0146;\x0176;\x022\x1f\x01\x06\"\x06\x14\x16264\x17267#\a\x177\x02`\r\x138(\x17\\7\x1c\r\x13\t\aPK\x95@\r\x13\t\a\xe0\a\t\t\ap\r\x13\x13\rl\x1e0\x05\a\x1e(pP8\x99\x0f\x11\x14\x01\x1a\x13\r9\x0e\t\t\x0e\t\x10\x0f\x19\x05Mw\x0ef\x01\xa0\x13\r (82n\x13\r\x10\a\t\x90P\x13\r\x10\a\t\t\x0e\t\x13\x1a\x13%\x1d*\x1e&.\x02PpX\b\x13\r\x10\t\x0e\t\t\x0eW\x12\x0e;\x1c7\x00\x03\x00\x00\x00\x00\x02\x00\x01\x80\x00\v\x00\x17\x00\x1d\x00\x00\x122\x16\x1d\x01\x14\x06\"&=\x014$\"\x06\x15\x14\x1762\x17654\x05\x1627&\"\x93ړ\x96Ԗ\x01P\xa0p\vI\xd8I\v\xfe\xb89\x9e9:\x9c\x01\x80R>b;SS;b>\x12/!\r\r**\r\r!Z\x17\x17\x19\x00\x00\x03\x00\x00\xff\xc0\x01\xa0\x01\xc0\x00\a\x00\x15\x00B\x00\x00\x00\"&462\x16\x14\a\x16\x1f\x01\a\x06+\x01\"&46;\x01%2\x16\x14\x06+\x01\"/\x01\a\x17\x1e\x01\x0f\x01\x06#\"'.\x01?\x01'.\x01?\x01'&\x0f\x01\x06.\x016?\x016\x1f\x01\x16\x1f\x01\x01$(\x1c\x1c(\x1c\xce\f\x1a\n\b\r M\r\x13\x13\rC\x01\x1d\r\x13\x13\r6\x1e\r\x14 >\x0e\f\x05\x1f\a\x18\x05\x05\f\f\x03\x1cU\x15\x0f\n%\x0f\r\f(\n\x1a\x10\x03\v'%,G*\x14\x1a\x01`\x1c(\x1c\x1c(\xf9\x1c\x0f\x06\x15\x1d\x13\x1a\x13\x80\x13\x1a\x13\x1b)N$\t\x1e\x0ff\x16\x02\x03\x18\rW2\r.\x16W\x05\x03\n\x1e\b\x03\x15\x1b\b\x1e\x1c\v\x15\v(5\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\n\x00\x1a\x00&\x00\x00\x122\x16\x1d\x01#\"&=\x014\x01\x14\x06\a\x06&5\x114'!2\x16\x15\x11!\x17!2\x16\x15\x14\x06#!265\x1c(\x1cP\a\t\x01\x00\x1e\x17\x1e-\x10\x01P(8\xfe\xe0 \x01P\a\tB.\xfe\xb0(8\x01\xc0\x1c\x14P\t\a@\x14\xfe\u007f\x18&\x04\x05'\x1d\x01p\x1a\x168(\xff\x00 \t\a.B8(\x00\x00\x04\xff\xfe\xff\xbe\x01\xc2\x01\xc0\x00#\x007\x00?\x00G\x00\x00\x05\x1e\x01\x0f\x01\x0e\x01/\x01\a\x06&/\x01&6?\x01'.\x01?\x01>\x01\x1f\x0176\x16\x1f\x01\x16\x06\x0f\x01'.\x015462\x16\x15\x14\x06\a\x17\x16\x06+\x01\"&76\"\x06\x14\x16264&\"\x06\x14\x16264\x01\xb7\x06\x04\x03\x0e\x03\r\x05\xbb\xbb\x05\r\x03\x0e\x03\x04\x06\x8e\x8e\x06\x04\x03\x0e\x03\r\x05\xbb\xbb\x05\r\x03\x0e\x03\x04\x06\x8e\x93 &TxT& \x06\x02\v\b~\b\n\x02\x94\x1a\x13\x13\x1a\x13\x83\x1a\x13\x13\x1a\x13\x05\x03\r\x06\x1c\x06\x04\x03ZZ\x03\x04\x06\x1c\x06\r\x03EE\x03\r\x06\x1c\x06\x04\x03ZZ\x03\x04\x06\x1c\x06\r\x03E\x93\x11:\"5KK5\":\x11\x1a\n\x0f\x0f\n\x97\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x01\xff\xf9\xff\xb9\x02\x87\x01\xc7\x00\v\x00\x00\x05\x01&?\x016\x17\x01\x16\x0f\x01\x06\x02S\xfd\xb3\f\t\x14\n\f\x02M\f\t\x14\n=\x01\xc7\n\r\x19\f\t\xfe9\n\r\x19\f\x00\x00\x03\xff\xf9\xff\xc0\x02G\x01\xc2\x00\x13\x00o\x00\x84\x00\x00\x13'&54?\x01>\x01\x1f\x01\x1e\x01\x0f\x01\x17\x06\x0f\x01#\x05\x16\x0f\x01\x06/\x01#\x17\x16\x1d\x01\x14\x06+\x01\"&=\x01'\x16\x15\x14\x06\"&547\a\x15\x14\x06+\x01\"&=\x014?\x01#\a\x06/\x01&?\x016;\x01'&/\x01&?\x016\x1f\x0237>\x032\x1e\x02\x1f\x013?\x016\x1f\x01\x16\x0f\x01\x06\x0f\x0132\x17/\x01&6?\x016\x1e\x01\x1f\x01\x16\x15\x14\x0f\x02#'&'\x97\x1b\x03\x01\x1a\x02\f\x06\x10\x06\x06\x02\x18\x14\x02\x01\x05\x05\x01\x8c\t\r\r\x0e\t0/=\x05\t\a\x10\a\tJ\x027R7\x02J\t\a\x10\a\t\x05=/0\t\x0e\r\r\t4\n\x11NE\n\a5\t\r\x0e\r\t2=$\n\x02\a\x0f\x1c$\x1c\x0f\a\x02\n$=2\t\r\x0e\r\t5\a\nEN\x11\ns\x18\x02\x06\x06\x10\x04\b\x06\x02\x1a\x01\x03\x1b\x1a\x05\x05\x01\x02\x01\x196\a\a\x05\x05N\x06\x06\x02\x05\x02\f\x06H(\x06\x06\x1a\xad\x0e\t\b\t\rHa\b\tN\a\t\t\aIw\x1e\r(==(\x0e\x1dwI\a\t\t\aN\t\baH\r\t\b\t\x0eO\x0e\x18\x04\tP\x0e\t\b\t\rL\x144\x06\x10\x17\x0f\x0f\x17\x10\x064\x14L\r\t\b\t\x0eP\t\x04\x18\x0e\xacH\x06\f\x02\x05\x01\x01\x06\x04N\x05\x05\a\a6\t\x1a\x06\x06\x00\x00\x00\a\xff\xfe\xff\xc0\x02@\x01\xc0\x00\x1c\x00$\x00,\x004\x00<\x00D\x00L\x00\x00\x13!\x0e\x02\x1d\x01\x14\x0e\x01\a\x06#!\"&7>\a=\x0146\x16264&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x1462\x16\x14\x06\"&4\x16264&\"\x06\x14\x80\x01\x1c\x12\x1b\x0f\b\b\t\a\x17\xfe\xe7\b\n\x03\x03\t\x04\x06\x03\x03\x02\x018\x01\x0e\t\t\x0e\tI\x0e\t\t\x0e\tI\x0e\t\t\x0e\tI\x0e\t\t\x0e\t\xa8P88P8S\x1a\x13\x13\x1a\x13\x01\xc0\x13:J)\xac\x191\x1a\x1a\x16\r\b\t\x1a\r\x13\v\x0f\f\x0e\b\xacPp\xe0\t\x0e\t\t\x0e\t\t\x0e\t\t\x0e\t\t\x0e\t\t\x0e\t\t\x0e\t\t\x0e\xd7p\xa0pp\xa0\x90%6%%6\x00\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\a\x00\x0f\x00m\x00u\x00z\x00\x00$2\x16\x14\x06\"&4\x16264&\"\x06\x14\x132\x16\x1d\x01\x14\x0f\x01&#\"\a#\x15\x14\x06+\x01\x06\a\x17\x16\x14\x0f\x01\x06\"/\x01\x06\a\x15\x14\x06+\x01\"&=\x01&'\a\x06\"/\x01&4?\x01&'#\"&=\x0146;\x0167'&4?\x016\x17546;\x012\x1e\x01\x1f\x01354762\x1f\x01\x16\a\x06\x1d\x01\x00264&\"\x06\x1473'#\x15\x01\xecH44H4N\x14\x0e\x0e\x14\x0eh\r\x13\t3\x19\x1b;$Q\r\t\a\x05\a\x05\x06\x06\x1f\a\x12\x06\x05\x0e\x0f\r\t,\t\r\x0f\x0e\x05\x06\x12\a\x1f\x06\x06\x05\a\x05\a\t\r\r\t\a\x05\a\x05\x06\x06\x1f\x0e\x0f\x1c\x14\x85\t\x12\x0e\x048f\x1e\x04\x0f\x05\x16\t\b\r\xfeoB//B/fn)kp4H44H<\x0e\x14\x0e\x0e\x14\x01\x12\x13\r3\r\t3\f0\x06\t\r\x0f\x0e\x05\x06\x12\a\x1f\x06\x06\x05\a\x05\a\t\r\r\t\a\x05\a\x05\x06\x06\x1f\a\x12\x06\x05\x0e\x0f\r\t,\t\r\x0f\x0e\x05\x06\x12\a\x1f\r\f\x93\x14\x1c\b\r\b\x83(.$\x06\x05\x18\n\n\x11\x16(\xff\x00/B//B\xd1``\x00\x00\a\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x06\x00\n\x00\x14\x00\x19\x00 \x00(\x00<\x00\x00\x01\a#>\x0132\x17#7\x16\x06\"&5473\x16\x15\x14\x0567\x17#'547\x15\"&%2\x16\x14\x06+\x01'72\x16\x1d\x01\x14\x06+\x01654&+\x01'3\x1627\x01\x15ZR\x0f@(\x1b\\gB\x196jK\x02\xfc\x02\xfe\xf0\x0e\x10b\x80P0\x14\x1c\x01\x00\x14\x1c\x1c\x14\r*q7O\x1c\x14P\x10/!F*\a#L#\x01\xb4D$,P2\x15\xcdK5\x03\r\r\x035w\a\x03\xde0*=)\xc0\x1cD\x1c(\x1c`\x80O7*\x14\x1c\x16\x1a!/`\x10\x10\x00\x00\x00\x03\x00\x00\x00\x00\x02\x80\x01\x80\x00\x1c\x00$\x00,\x00\x00\x012\x16\x15\x11\x14\x06+\x01\".\x01/\x01&\"\x0f\x01\x0e\x01+\x01\"&5\x11463\x16264&\"\x06\x14\x04264&\"\x06\x14\x02`\r\x13\x13\r\xa0\r\x17\x11\x06\x1b\r:\r\x1b\b \x13\xa0\r\x13\x13\re6%%6%\x01e6%%6%\x01\x80\x13\r\xfe\xc0\r\x13\t\x11\f=\x1d\x1d=\x11\x15\x13\r\x01@\r\x13\xf0%6%%6%%6%%6\x00\x00\x03\x00\x00\xff\xd9\x02\n\x01\xa4\x00 \x00A\x00[\x00\x0072\x16\x17\x16\x06#\"&'&6;\x012\x17\x1632>\x01'.\x01+\x01\"&=\x014635\"&=\x01463!2676&#\"\a\x06+\x01\".\x017>\x02\x1e\x01\x17\x16\x06#\x172\x16\a\x0e\x01\a\x06&'&6;\x012\x17\x163264&+\x01&'\x9d%9\x04\x06:+#5\x06\x02\n\b \f\x04\a\x17\n\x0f\b\x01\x02\x14\f\x8e\a\t\t\a\a\t\t\a\x01N\f\x14\x02\x02\x13\x0f\x17\a\x04\f \x05\b\x04\x01\x05!26(\x06\t:-06D\r\a/\x1f+H\x0e\x03\n\b\"\n\x04\x0e\x1c\x14\x1c\x1c\x14t\v\x1d\xc0/$,A,\"\a\v\n\x16\n\x12\t\f\x0f\t\a \a\t \t\a \a\t\x0f\f\x0e\x17\x16\n\x05\t\x04\x19'\x11\v(\x1b.G T7\x1e.\x06\n+'\b\r\b\x18\x1c(\x1c&\x1a\x00\x02\x00\x00\xff\xc0\x02\a\x01\xc7\x00\x1b\x00\x1f\x00\x00\x01\x16\x0f\x01\x06'\a\x16\x06\x0f\x01\x06\"/\x01&4?\x01>\x01\x177&?\x016\x17\x017'\a\x01\xfb\f\f\x16\f\vM\x10\x0f\x1c\x9e\x135\x13Z\x13\x13\x9e\x1cN#L\v\v\x17\v\v\xfe\xfczZz\x01w\v\v\x17\v\vL#N\x1c\x9e\x13\x13Z\x135\x13\x9e\x1c\x0f\x10M\v\f\x16\f\f\xfe^zZz\x00\x00\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\a\x00\x0f\x00-\x00W\x00\x0062\x16\x14\x06\"&4$2\x16\x14\x06\"&4'\x16\x14\a\x16\a\x06#\"'\x06\"'\x06#\"'&7&47&6\x1762\x176\x166\x14\x06+\x01&'&#&\"\a\"\a\x06\a#\"&5467&54632\x16\x17632\x16\x15\x14\a:\x0112\x1c(\x1c\x1c(\x1c\x01\xbc(\x1c\x1c(\x1cG\x17\x17\b\x12\f\x11\x05\b\f2\f\a\x06\x11\f\x12\b\x17\x17\b$\x18\f2\f\x19#\x9f8(+\x06\t\x15\x1e\x15<\x15\x1e\x15\t\x06+(8%\x1d\x02B. 5\x0e\x18%!/\x02\x01\x01(`\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x11\f2\f\x19\x11\r\x03\x17\x17\x03\r\x12\x18\f2\f\x19#\b\x17\x17\b$\x9bP8\f\n\x15\x15\x15\x15\t\r8(\x1f2\n\v\n.B!\x1c\x1d/!\t\a\x00\x00\x00\x06\x00\x00\xff\xc0\x02B\x01\xc0\x00\x19\x008\x00E\x00R\x00_\x00l\x00\x00%\x1e\x01\x15\x14\x06#!\"&5467<\x0114632\x17632\x16\x176\x16\a\x06#\"&\"'.\x02'&'>\x0132\x17\x1e\x01\a\x0e\x01\x15\x14\x1e\x02\a\x16\x0f\x01\x06#\"'&?\x01>\x01\a\x16\x0f\x01\x06#\"'&?\x01>\x01\a\x16\x0f\x01\x06#\"'&?\x01>\x01\a\x16\x0f\x01\x06#\"'&?\x01>\x01\x01^\x1d%/!\xff\x00!/%\x1b8(1\x1d\x10\x12\x1d,\xdf\x05\x04\x03+E\x03\x05\x06\x02\x03\x13\x1d\x13\x10+\x03T:\r\r\x05\x02\x05\x1a\x1f\x16%2\xb2\x0e\b$\x05\t\x04\x04\x0e\b%\x03\r[\x0e\b$\x05\t\x04\x04\x0e\b%\x03\r[\x0e\b$\x05\t\x04\x04\x0e\b%\x03\r[\x0e\b$\x05\t\x04\x04\x0e\b%\x03\r\xde\x05,\x1d!//!\x1d,\x05\x01\x01(8(\b%\x1b\x01\b\x045\x01\x01\x13#\x19\a+\x13:P\x02\x01\n\x02\x0f5\x1e\x1a.\x1e\x0e\xbd\b\x0e@\b\x02\b\x0e@\x06\x03\x03\b\x0e@\b\x02\b\x0e@\x06\x03\x03\b\x0e@\b\x02\b\x0e@\x06\x03\x03\b\x0e@\b\x02\b\x0e@\x06\x03\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x1d\x00+\x00;\x00J\x00\x00\x012\x16\x14\x06#!\"&5467&54632\x16\x17632\x16\x15\x14\a:\x01\x0562\x17\x1e\x01\x15\x14\x06\"&546762\x17\x1e\x01\x15\x14\x0e\x01#\"&546762\x17\x1e\x01\x15\x14\x06\"&54>\x01\x01\xa0(88(\xfe\xc0(8%\x1d\x02B. 5\x0e\x18%!/\x02\x01\x01\xfe\xb8\x02\f\x02\x06\"\x1c(\x1c\"\xa6\x02\f\x02\x06\"\r\x16\r\x14\x1c\"\xa6\x02\f\x02\x06\"\x1c(\x1c\x0e\x15\x01@8P88(\x1f2\n\v\n.B!\x1c\x1d/!\t\a\xf6\x06\x06\x152\x11\x15\x1d\x1d\x15\x103\x15\x06\x06\x152\x11\x0e\x17\r\x1d\x15\x103\x15\x06\x06\x152\x11\x15\x1d\x1d\x15\r\x19 \x00\x00\x00\x00\x06\xff\xfe\xff\xc0\x02\x00\x01\xc0\x00\r\x00\x1b\x00)\x007\x00E\x00c\x00\x006\x1e\x01\x0f\x01\x06#\"'.\x01?\x01>\x01\x1e\x01\x0f\x01\x06#\"'.\x01?\x016&\x1e\x01\x0f\x01\x06#\"'.\x01?\x016$\x1e\x01\x0f\x01\x06#\"'.\x01?\x016&\x1e\x01\x0f\x01\x06#\"'.\x01?\x01672\x16\x14\x06#!\"&5467&54632\x16\x17632\x16\x15\x14\a:\x01\xb2\f\x03\x03@\x05\t\x04\x04\x06\x03\x03@\x03m\f\x03\x03@\x05\t\x04\x04\x06\x03\x03@\x03\xb3\f\x03\x03@\x05\t\x04\x04\x06\x03\x03@\x03\x01\x8d\f\x03\x03@\x05\t\x04\x04\x06\x03\x03@\x03S\f\x03\x03@\x05\t\x04\x04\x06\x03\x03@\x03;(88(\xfe\xc0(8%\x1d\x02B. 5\x0e\x18%!/\x02\x01\x01Q\x06\r\x06p\b\x02\x03\r\x06p\x06\x03\x06\r\x06p\b\x02\x03\r\x06p\x06\x03\x06\r\x06p\b\x02\x03\r\x06p\x06\x03\x06\r\x06p\b\x02\x03\r\x06p\x06\x03\x06\r\x06p\b\x02\x03\r\x06p\x06\xf28P88(\x1f2\n\v\n.B!\x1c\x1d/!\t\a\x00\x00\a\xff\xff\xff\xc0\x02@\x01\xc1\x00\x1a\x00E\x00P\x00]\x00j\x00w\x00\x84\x00\x00%\x1e\x01\x15\x14\x06#!\"&5467<\x0114632\x17632\x1e\x01\x05\x16\x17\x06\x15\x14\x161\a\x06&?\x01'&4?\x01'&6\x1f\x01762\x1f\x0176\x16\x0f\x010\"1\"\a&\x06\a\x06\x147\x06\a&54632\x17\x06\x05\x16\x0f\x01\x06#\"'&?\x01>\x01\a\x16\x0f\x01\x06#\"'&?\x01>\x01\a\x16\x0f\x01\x06#\"'&?\x01>\x01\a\x16\x0f\x01\x06#\"'&?\x01>\x01\x01\xfe\x1d%/!\xff\x00!/$\x1c8(1\x1d\x10\x12\x13\"\x16\xfe\x81\x03\a\x06\x01;\b\v\x02\x19G\a\aG\x19\x02\v\bK#\x04\x10\x04#K\b\v\x02\t\x02% \x1cI\x1a\x1cb\x1b\x12\x15&\x1a\x12\x10\x1a\x01D\x0e\b$\x05\t\x04\x04\x0e\b%\x03\r[\x0e\b$\x05\t\x04\x04\x0e\b%\x03\r[\x0e\b$\x05\t\x04\x04\x0e\b%\x03\r[\x0e\b$\x05\t\x04\x04\x0e\b%\x03\r\xde\x05,\x1d!//!\x1d,\x05\x01\x01(8(\b\x11\x1e5\x02\x06\x12\x12\x02\x05\x14\x02\v\bK#\x04\x10\x04#K\b\v\x02\x19G\a\aG\x19\x02\v\b\x1a\x15\x17\x04\x1a\x1cP\x1e\f\x19\x13\x1c\x1a&\n\x1c\xfc\b\x0e@\b\x02\b\x0e@\x06\x03\x03\b\x0e@\b\x02\b\x0e@\x06\x03\x03\b\x0e@\b\x02\b\x0e@\x06\x03\x03\b\x0e@\b\x02\b\x0e@\x06\x03\x00\x05\xff\xfa\xff\xc0\x02\x87\x01\xc5\x001\x00J\x00c\x00|\x00\x90\x00\x00%\x16\x0f\x01\x06'.\a'\x15!'\a\x06+\x01\"/\x01&?\x0167&'.\x0176\x1f\x0176\x16\x17\x16\x06\a\x1732\x16\x17\x056&#/\x01&\"\x0f\x02\"\x06\x1f\x01\a\x14\x16?\x01\x17\x1665'76&#/\x01&\"\x0f\x02\"\x06\x1f\x01\a\x14\x16?\x01\x17\x1665'76&#/\x01&\"\x0f\x02\"\x06\x1f\x01\a\x14\x16?\x01\x17\x1665'\x055!\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&\x02}\t\r\x1b\r\t\x03\b\x04\x06\x03\x04\x04\x05\x03\xfe\xa06&\n\r\x1f\x13\t\x0f\b\vK\x01\x05\b\x03\f\x03\t\x05\a+*\x03\n\x02\f\x04\x0fQ\xec&C\x15\xfe\xbe\x02\x01\x03\x17\n\x02\x06\x01\v\x16\x03\x02\x02\x10\x04\x05\x03\x14\x14\x03\x05\x04\x80\x02\x01\x03\x17\n\x02\x06\x01\v\x16\x03\x02\x02\x10\x04\x05\x03\x14\x14\x03\x05\x04\x80\x02\x01\x03\x17\n\x02\x06\x01\v\x16\x03\x02\x02\x10\x04\x05\x03\x14\x14\x03\x05\x04\xfe\xc8\x01`\t\a@\a\t\xa0\t\a@\a\t\xbf\r\t\x12\t\x0e\x04\r\x05\t\x03\x06\x03\x04\x03Nl#\t\x12\x1c\x12\x10c\x01\x04\x05\x03\f#\r\t\a+*\x03\x01\x04\x11*\x0fQ$ \x0f\x02\x06\x03\x15\x03\x03\x15\x03\x06\x02\x10\x17\x03\x04\x02\n\n\x02\x04\x03\x17\x10\x02\x06\x03\x15\x03\x03\x15\x03\x06\x02\x10\x17\x03\x04\x02\n\n\x02\x04\x03\x17\x10\x02\x06\x03\x15\x03\x03\x15\x03\x06\x02\x10\x17\x03\x04\x02\n\n\x02\x04\x03\x17퐐\a\t\t\aPP\a\t\t\x00\b\x00\x00\xff\xc0\x02\x00\x01\xc5\x00\r\x00\x1f\x001\x00U\x00]\x00e\x00m\x00y\x00\x00\x122\x16\x15\x11\x14\x06+\x01\"&5\x114\x01\x16327\x15\x14\a\x0e\x01.\x01\x06\a5>\x01\x167\x16327\x15\x0e\x01&'.\x01\x06\a5>\x01\x167&'\x15\x16\x17\x16327\x15\x0e\x01&'.\x01\x06\a5>\x01\x1e\x02676\x16\x1d\x01\x0e\x02.\x01\x06264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x147264&\"\x06\x15\x14\x1e\x02\x13\x1a\x13\t\a \a\t\x01,>&3=\x121S?AW3+O-%>&3=+O-%&.T,+O-.\f\t\x05\a5!6H+O-%&.T,1N.1(A(\x11 \x1f4$)\x16\xb1\x0e\t\t\x0e\t\t\x0e\t\t\x0e\tI\x0e\t\t\x0e\t\x10\a\t\t\x0e\t\x03\x04\x06\x01\xc0\x13\r\xfe0\a\t\t\a\x01\xd0\r\xfe\xe3\x10\x18$\x15\b\x15\x03\x13\x11\n\x19E\x13\t\aV\x10\x18>\x12\t\a\t\n\b\b\x11=\x13\t\at\x04\x02!\x01\x02\x10\x1fE\x12\t\a\t\n\b\b\x11\x98\x16\r\v\x0f\r\v\x15\t\x11\x13\x1f\x0e\x10\x05\x04\x05(\t\x0e\t\t\x0e/\t\r\n\n\r9\t\r\n\n\r/\t\r\n\n\x06\x04\x06\x04\x02\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x00)\x001\x00<\x00I\x00\x00\x01\x06\a\x16\x17\x16\x15\x14\a\x06\a\x0e\x01\x15\x0e\x01#\"&546726767632\x17\x16\x1767632\x16\x15\x14\x024&\"\x06\x14\x162'\x14\x0e\x01#\"&462\x1e\x01\x14\x0e\x01\".\x0154632\x16\x01\xff\x1d \x0f\x04\v\x02LB\x01\x02\x18Q!Qr!\x18\x01\x02\x01D\x92\x03\x04\f\x04\x01\x04[a\x02\x03\a\t\xc0KjKKj5\t\x0e\t\r\x13\x13\x1a\x13 \x04\b\b\b\x04\t\a\x04\b\x01\xaba[\x04\x01\x04\v\x04\x04\x92D\x01\x02\x01\x18!rQ!Q\x18\x02\x01BL\x02\v\x03\x10 \x1d\x01\t\a\x03\xfe\x9ejKKjK\xa0\t\x0e\t\x13\x1a\x13\x13Y\b\b\x04\x04\b\x04\a\t\x04\x00\x06\x00\x00\xff\xc0\x02@\x01\xc0\x00\t\x005\x00=\x00R\x00Y\x00f\x00\x00\x1753\x15\x14\x06+\x01\"&\x132\x16\x14\x06+\x01\"/\x01\x15\x17\x16\x1d\x01\x14\x06#\".\x01=\x01'0&5\x15\x14\x06#\".\x01=\x0246;\x012\x1f\x01&\"&462\x16\x14753\x11\x14\x06\"&5\x14\x06#\"&'\x06#\"&?\x01'46;\x01\x15#%2\x16\x15\x11\x14\x06+\x01\"&5\x11\xc0@\t\a \a\t \r\x13\x13\r:\x13\x0e\x15)\a\x13\r\t\x0f\b\x1e\x02\x13\r\t\x0e\t&\x1a\x13\x1a\x13-Y(\x1c\x1c(\x1c\xb0\xc0\x13\x1a\x13\x13\r\r\x12\x01\x06\x1a\x0e\x15\x04\x1f\x80\x13\r @\x01`\r\x13\t\a \a\t0\xb0\xb0\a\t\t\x01\x17\x13\x1a\x13\x0e\x15Q=\r\x108\r\x13\t\x0e\t8+\x01\x01e\r\x13\t\x0e\t\xa0`\x1a&\x13-`\x1c(\x1c\x1c(D \xfe`\r\x13\x13\r\r\x13\x12\f\x1e\x17\x0f\x9b\xdf\r\x13\xc0\xc0\x13\r\xfe0\a\t\t\a\x01\xf0\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x17\x00M\x00\x00%2\x16\x0f\x01\x06#\"&?\x01#\".\x01576;\x012\x16\x0f\x017\x1e\x01\x15\x14\x06+\x0176'&+\x0176&+\x01\"\x06\x0f\x01\x15#\"&5467&546;\x012654'632\x16\x15\x14\a32\x16\x15\x14\x014\a\a\x04X\x03\a\x06\a\x01\x17;\x04\x05\x03\x10\x02\nD\x06\a\x01\x12|\x1f+/!\x1e\b\r\r\r\x19\x10\x06\x06\x1a\x16D\x10\x19\x03\x100!/+\x1f\n&\x1a\x10!/\x0f\t\x06(8\x06\x06\x1a&p\f\x06\x98\x06\t\x06a\x04\x06\x04x\n\t\x06Ao\x02.\x1f!/\x0e\x16\x16\x16\x19\x15\"\x16\x10x\x02/!\x1f.\x02\x10\x11\x1a&/!\x19\x15\x028(\x0f\x11&\x1a\x11\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x02@\x01\xa5\x00\x1e\x00<\x00Z\x00\x00\x016\x1e\x01\x1d\x01\x14\x06+\x01\"&=\x014&'&\x06\x1d\x01\x14\x06+\x01\"&=\x0146\x176\x16\x1d\x01\x14\x06+\x01\"&=\x014&'&\x06\x1d\x01\x14\x06+\x01\"&=\x0146\x176\x1e\x01\x1d\x01\x14\x06+\x01\"&=\x014&\"\x06\x1d\x01\x14\x06+\x01\"&=\x0146\x01\fS\x8eS\t\a \a\toSf\x98\t\a \a\t\x9blW\x82\t\a \a\tB19T\t\a \a\t_N\x1e5 \t\a \a\t\x13\x1a\x13\t\a \a\t+\x01\x9f\x06K\x89Q\x90\a\t\t\a\x88V\x85\v\r\x86e\x90\a\t\t\a\x86t\xaeZ\ftV\x90\a\t\t\a\x8a3N\x04\x06M8\x90\a\t\t\a\x89JrW\x06\x170\x1d\x90\a\t\t\a\x90\r\x13\x13\r\x90\a\t\t\a\x8c#9\x00\x00\x00\x05\x00\x00\xff\xde\x02\x80\x01\xa0\x00\t\x00\"\x00;\x00T\x00\x80\x00\x00\x01\x15!546;\x012\x16\x056&/\x02&\"\x0f\x02\x0e\x01\x1f\x01\a\x06\x16?\x01\x17\x166/\x0176&/\x02&\"\x0f\x02\x0e\x01\x1f\x01\a\x06\x16?\x01\x17\x166/\x0176&/\x02&\"\x0f\x02\x0e\x01\x1f\x01\a\x06\x16?\x01\x17\x166/\x01\x172\x16\x1d\x01\x14\x0e\x01'.\x01=\x01#\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&=\x01!\x15\x14\x1626=\x01463\x02 \xfd\xe0^B\xe0B^\xfe\x90\x03\x02\x04\x1b\r\x01\b\x01\r\x1b\x04\x02\x03\x14\x05\x01\x06\x04\x18\x18\x04\x06\x01\x05\xa4\x03\x02\x04\x1b\r\x01\b\x01\r\x1b\x04\x02\x03\x14\x05\x01\x06\x04\x18\x18\x04\x06\x01\x05\xa4\x03\x02\x04\x1b\r\x01\b\x01\r\x1b\x04\x02\x03\x14\x05\x01\x06\x04\x18\x18\x04\x06\x01\x05\xb4\a\t\x18)\x17\x1f) \t\a`\a\t\xc0\t\a`\a\t\x02 \t\x0e\t\t\a\x01\x00@@B^^,\x02\a\x01\x04\x19\x03\x03\x19\x04\x01\a\x02\x14\x1b\x04\x04\x02\r\r\x02\x04\x04\x1b\x14\x02\a\x01\x04\x19\x03\x03\x19\x04\x01\a\x02\x14\x1b\x04\x04\x02\r\r\x02\x04\x04\x1b\x14\x02\a\x01\x04\x19\x03\x03\x19\x04\x01\a\x02\x14\x1b\x04\x04\x02\r\r\x02\x04\x04\x1b\x82\t\a@\x17'\x14\x02\x041 +p\a\t\t\aPP\a\t\t\a\xb0p\a\t\t\a@\a\t\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x0f\x00\x1f\x00/\x00G\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463!2\x16\x1d\x01\x14\x06#!\"&=\x01463'\"&4632\x17632\x16\x17632\x16\x14\x06+\x01\x06\"'\x02p\a\t\t\a\xfd\xe0\a\t\t\a@\a\t\t\a\x80\a\t\t\a\x02 \a\t\t\a\xfe\xb0\a\t\t\aP\x023!2\x16\x15\x05\x06\x1f\x01\x16?\x016/\x01&\x0f\x01'&\a\x02`\r\x13\x13\r\xfd\xc0\r\x13\x13\r@\x16\n\n\x01\xec\n\n\x16 \xfe\x80\x05\t\f\x06\x01@\r\x13\xfe\xd3\a\aJ\b\a\x81\b\b\x19\b\b_)\b\a\x80\x13\r`\r\x13\x13\r`\r\x13@\b\x10\b\b\x10\b@@\x01@\x06\f\t\x05\x13\r\x8a\b\aK\b\b\u007f\b\a\x1a\b\b^)\b\b\x00\x00\x00\x03\x00\x00\xff\xff\x02@\x01\x81\x00,\x00X\x00\x84\x00\x00%\x1e\x01\x1d\x01\x14\x0e\x01#&'\x06\"'\x06\"'\x0e\x01\a\"&=\x0146767>\x01\x17\x1e\x017>\x01\x17\x1e\x01762\x17\x167\x1e\x01\x1d\x01\x14\x0e\x01#&'\x06\"'\x06\"'\x06\a\"&=\x0146767>\x01\x17\x1e\x017>\x01\x17\x1e\x01762\x17\x167\x1e\x01\x1d\x01\x14\x0e\x01#&'\x06\"'\x06\"'\x06\a\"&=\x0146767>\x01\x17\x1e\x017>\x01\x17\x1e\x01762\x17\x16\x022\x06\b\x05\a\x05+$)l+)l+\x11)\x15\a\n\b\x06!\x18\v\x1a\n\x1dX\x1d\n\x1a\n\x1dY\x1c\v\x1b\n\x19!\x06\b\x05\a\x05+$)l+)l+#,\a\n\b\x06!\x18\v\x1a\n\x1dX\x1d\n\x1a\n\x1dY\x1c\v\x1b\n\x19!\x06\b\x05\a\x05+$)l+)l+#,\a\n\b\x06!\x18\v\x1a\n\x1dX\x1d\n\x1a\n\x1dY\x1c\v\x1b\n\x18@\x01\t\x06 \x04\b\x04\x04\x16\x1a\x1a\x1a\x1a\v\r\x02\t\a \x06\t\x01\x04\x12\t\x02\t\x17\x01\x17\b\x02\t\x17\x01\x17\b\b\x13\x8c\x01\t\x06 \x04\b\x04\x04\x16\x1a\x1a\x1a\x1a\x16\x04\t\a \x06\t\x01\x04\x12\t\x02\t\x17\x01\x17\b\x02\t\x17\x01\x17\b\b\x13\x8c\x01\t\x06 \x04\b\x04\x04\x16\x1a\x1a\x1a\x1a\x16\x04\t\a \x06\t\x01\x04\x12\t\x02\t\x17\x01\x17\b\x02\t\x17\x01\x17\b\b\x13\x00\x00\x00\x00\x04\xff\xfd\xff\xc0\x01\x83\x01\xc0\x00\a\x00\x16\x00%\x00=\x00\x00\x12\"&462\x16\x14\x03\x17\x16\x06\a\x06#\"/\x01&4?\x01\x177\x17\x16\x14\x0f\x01\x06#\"'.\x01?\x01'6\x16\x06\x0f\x01\x06\a\x15#5&/\x01.\x01>\x01\x1f\x01\x162?\x016\xe1B//B/\x85\x1d\n\x05\r\v\r\x14\f0\b\t.=u.\t\b0\f\x14\r\v\r\x05\n\x1d\x19\x93\x13\x05\x0e)\x17\x1f\xa0\x1f\x17)\x0e\x05\x13 \x0e)'b')\x0e\x01 /B//B\xfe\xd8'\r!\n\b\x10@\v\x1b\v9339\v\x1b\v@\x10\b\n!\r' \xf6\x1c \n\x1c\x11\v\x1f\x1f\v\x11\x1c\n \x1c\x05\t\x1d\x1b\x1b\x1d\t\x00\x00\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc3\x00\a\x002\x00:\x00B\x00\x00\x13\x17!4676\x16\x052\x16\x1d\x01\x14\x06+\x01\x15\x14\a\x1e\x01\x15\x14\x06\"&547\x06\"'\x16\x15\x14\x06\"&54>\x017&5!5463\x00264&\"\x06\x14 4&\"\x06\x14\x162\x91o\xff\x000+\f!\x01h\a\t\t\a0<\x1a\"/B/\x04!F!\x04/B/\x10\x1b\x11<\x01\x80&\x1a\xfe\x83\x1a\x13\x13\x1a\x13\x01`\x13\x1a\x13\x13\x1a\x01\xaf\xaf6`\"\n\x06\\\t\a \a\t@K8\x06+\x1c!//!\f\r\t\t\r\f!//!\x12!\x16\x048K@\x1a&\xfe\x90\x13\x1a\x13\x13\x1a\x1a\x13\x13\x1a\x13\x00\x00\x00\x00\x05\xff\xfe\xff\xb6\x02B\x01\xc3\x00\n\x00\x15\x00 \x00g\x00o\x00\x00\x01\"\a&'62\x17\x06\a&\x03.\x01'632\x17\x16\x17\x06767632\x17\x0e\x01\a&7\x16\x17\x16\x06'&'&\x0e\x01\x16\x17\x16\x17\x16\x14\a\x06'&'\x06\a\x06'&4767>\x01.\x01\a\x06\a\x06&76767&5476\x16\a\x06\x15\x14\x1632>\x0154'&6\x17\x16\x15\x14\a\x16\x06264&\"\x06\x14\x01 \x19\x1c\x14\t'V'\t\x14\x1c\x95%,\x03\v\f\f\x0e\x065\x06\xce4\x06\x0f\f\v\v\x03,$\x12k6\x14\x03\f\x04\x0e\x0f+`2\x1a+\x0f\x14\a\a=6\x19\x14\x14\x196>\x06\x06\x15\x0f+\x1a2`+\x0f\x0e\x04\f\x02\x156\x18\x1f\n)\x04\f\x02\aF2!7 \a\x02\f\x04)\n\x1f\xd1(\x1c\x1c(\x1c\x01P\n\x10\x19\x11\x11\x19\x10\n\xfe\xb9\x1bP/\x03\x05C*\x19\x19*C\x05\x03/P\x1b\x12\xe6 =\x06\a\x05\x10\t\x1a\x1bXb\x1a\t\x04\x01\x0e\x01\f \x0f\x19\x19\x0f \f\x01\x0e\x01\x05\b\x1abX\x1b\x1a\b\x11\x05\a\x06= \x0e\x06\x1d\x1b?1\x05\x06\a\x14\x123H!8\"\x12\x14\a\x06\x050@\x1b\x1d\x06\x8f\x1c(\x1c\x1c(\x00\x00\x03\x00\x00\xff\xb4\x02\x01\x01\xc0\x00 \x004\x00I\x00\x007\x1e\x01\a\x0e\x01\a\x06&=\x0146;\x012\x16\x1d\x01\x14\x162654.\x01'&=\x01467\x1e\x01\x17\x14\x06+\x01\"&5.\x01'.\x01=\x0146\x17\x1e\x01\x17\x14\x06+\x01\"&5.\x01'\".\x01=\x0146\xac:D\r\t<)Ej\x0e\n0\n\x0e\x1c(\x1c\b\x0e\t\x11\x110z\xaf\x06\t\a \a\t\x06\x8aa\x06\t\n\aSv\x06\t\a \a\t\x05S9\x04\a\x04\n\xdd\vd=)<\t\x0eWD\xf8\n\x0e\x0e\n\xf8\x14\x1c\x1c\x14\n\x12\x0e\x03\x06\x102\f\x0e\xe1\x06\xafz\a\n\t\x06a\x8b\x05\x01\t\x06 \a\t`\x06vS\a\n\b\a:R\x05\x05\a\x04 \a\n\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\t\x00\x19\x007\x00\x00\x15\x11!\x11\x14\x06#!\"&7\x15\x14\x16;\x0126=\x014&+\x01\"\x06%2\x16\x1d\x01!546;\x01546;\x012\x16\x1d\x013546;\x012\x16\x1d\x01\x01\xc0\x1c\x14\xfe\xa0\x14\x1c@\t\a`\a\t\t\a`\a\t\x01P\x14\x1c\xfe@\x1c\x140\t\a \a\t\x80\t\a \a\t\x10\x01\x10\xfe\xf0\x14\x1c\x1c\xd4`\a\t\t\a`\a\t\t\xc9\x1c\x1400\x14\x1c0\a\t\t\a00\a\t\t\a0\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\t\x00\x19\x007\x00\x00\x15\x11!\x11\x14\x06#!\"&7\x15\x14\x163!26=\x014&#!\"\x06%2\x16\x1d\x01!546;\x01546;\x012\x16\x1d\x013546;\x012\x16\x1d\x01\x01\xc0\x1c\x14\xfe\xa0\x14\x1c@\t\a\x01 \a\t\t\a\xfe\xe0\a\t\x01P\x14\x1c\xfe@\x1c\x140\t\a \a\t\x80\t\a \a\t\x10\x01\x10\xfe\xf0\x14\x1c\x1c\xd4@\a\t\t\a@\a\t\t\xc9\x1c\x1400\x14\x1c0\a\t\t\a00\a\t\t\a0\x00\a\xff\xfd\xff\xc0\x02\f\x01\xc0\x00\"\x00)\x00-\x001\x005\x00;\x00C\x00\x00\x01\x16\x06\a\x05\x06#\"/\x01&67%>\x01'&#\"\x0f\x01\x06#\"/\x01&6?\x01632\x16\a67'\x06\a\x17\x037'\a?\x01'\a?\x01'\a7\x16\x177&'\x1767'\x14\a\x06\a\x01\xf2\x1a)6\xfe\xa4\b\b\x12\n \a\x06\f\x01a\f\x06\a\t\x12\t\b\x1b\b\t\x12\t!\a\a\v\x1c%,.O\x9d\f\x10\x15\x10\x0e\x14\xab\x1f=\x1f\xa8\x1f<\x1f\xab\x1f<\x1fQ\x0e\t-\n\f$\a\x03=\x01\x02\x06\x01d9w!\xcf\x04\x106\f\x1a\x06\xd2\a\x1a\v\x10\x04\x11\x04\x0f7\v\x1a\a\x10\x1718\a\x01>\x03\a=\xfe\xba\x12'\x12\x19\x12'\x12\x1b\x12'\x13\x9f\b\x0e.\r\t\x99\x0e\x10\x14\a\a\b\t\x00\x00\x00\x02\xff\xfd\xff\xbe\x02\x00\x01\xc0\x00\x1d\x00*\x00\x00\x01\x1e\x01\a\x06\x0f\x01'&\a\x06\x14\x1f\x01\a\x06&'&7\x13\x17\x16276/\x01>\x0176\x16\x17\x0e\x01/\x01&67\x1e\x01\x01*.\"\x17\x12'f9\v\v\x05\x051\x86\b\x12\x04\x04\x04\x803\x04\r\x05\f\f7\x1bS\x84\x1eD\x18\x1fX!\b\"\x04&\x1d\x10\x01#\x16b.&\x1329\f\f\x04\x0e\x041B\x04\x06\t\t\n\x01\a2\x05\x05\v\v8 \x13\x10\x0f\x10\x1d&\x04\"\b!X\x1f\x18D\x00\x00\x00\n\xff\xff\xff\xc0\x02\x01\x01\xc0\x00+\x00;\x00K\x00[\x00_\x00o\x00\u007f\x00\x8b\x00\x9b\x00\xab\x00\x00%\x16\x1d\x01\x14\x0e\x02#!\"&=\x014?\x01>\x01;\x015#\"&=\x01463!2\x16\x1d\x01\x14\x06+\x01\x1532\x16\x17\a\x15\x14\x16;\x0126=\x014&+\x01\"\x06\a\"\x06\x1d\x01\x14\x16;\x0126=\x014&#'#\"\x06\x1d\x01\x14\x16;\x0126=\x014&'35#\x1726=\x014&+\x01\"\x06\x1d\x01\x14\x163\x17\x14\x16;\x0126=\x014&+\x01\"\x06\x15\x1754+\x01\"\x1d\x01\x14;\x012754&+\x01\"\x06\x1d\x01\x14\x16;\x0126754&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x01\xff\x01\x05\t\f\x06\xfe@\r\x13\x01\x1b\x01\x12\fU`\a\t\t\a\x01\x00\a\t\t\a`\xf5\f\x11\x02\xcc\t\a\x10\a\t\t\a\x10\a\t \a\t\t\a\x10\a\t\t\a0\x10\a\t\t\a\x10\a\t\t\x8f\xc0\xc0(\a\t\t\a\x10\a\t\t\a \t\a\x10\a\t\t\a\x10\a\t\xd8\b\xb0\b\b\xb0\b\x18\t\a\x10\a\t\t\a\x10\a\t0\t\a\x10\a\t\t\a\x10\a\tE\x05\x05[\a\v\t\x05\x13\r[\x05\x05\xa0\f\x0f@\t\a`\a\t\t\a`\a\t@\x0f\f\x1d\x10\a\t\t\a\x10\a\t\tG\t\a\x10\a\t\t\a\x10\a\tP\t\a\x10\a\t\t\a\x10\a\t\x98 \xe8\t\a\x10\a\t\t\a\x10\a\t@\a\t\t\a\x10\a\t\t\a\x80\x10\b\b\x10\bx\x10\a\t\t\a\x10\a\t\tW\x10\a\t\t\a\x10\a\t\t\x00\x00\x04\x00\x00\xff\xb9\x02\x00\x01\xc0\x00\x15\x00+\x00@\x00V\x00\x0072\x16\x1d\x01\x14\x06/\x01\a\x06\"/\x01&4?\x01'&637\"&=\x0146\x1f\x01762\x1f\x01\x16\x14\x0f\x01\x17\x16\x06#\a\x17\x16\x14\x0f\x01\x06/\x01\a\x06&=\x0146;\x012\x16\a\x016\x16\x1d\x01\x14\x06+\x01\"&?\x01'&4?\x0162\x1f\x01\xc8\n\x0e\x1e\v\x1fc\x05\r\x05\x19\x05\x05c!\v\f\x10\xe0\n\x0e\x1e\v\x1fc\x05\r\x05\x19\x05\x05c!\v\f\x10\x10c\x05\x05\x19\v\fc\x1f\v\x1e\x0e\np\x10\f\v\xfe\xfe\v\x1e\x0e\np\x10\f\v!c\x05\x05\x19\x05\r\x05c\xa0\x0e\np\x10\f\v!c\x05\x05\x19\x05\r\x05c\x1f\v\x1e@\x0e\np\x10\f\v!c\x05\x05\x19\x05\r\x05c\x1f\v\x1e\x88c\x05\r\x05\x19\f\fc!\v\f\x10p\n\x0e\x1e\v\x01\x02\v\f\x10p\n\x0e\x1e\v\x1fc\x05\r\x05\x19\x05\x05c\x00\x00\x00\x05\xff\xfe\xff\xe0\x02B\x01\xa0\x00\b\x00\f\x00\x10\x00\x19\x00C\x00\x00\x01#'32\x1f\x01\x16\x06%\x15#73\x17#5\x05\"&?\x016;\x01\a\x052\x16\x1d\x01\x14\x06+\x01\a\x15\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&=\x01'#\"&=\x0146;\x01'!\a\x020a\x1ac\f\x04\x18\x01\t\xfe\xd8~\x1a\xe8\x1a~\xfe\xe0\b\t\x01\x18\x04\fc\x1a\x01\xbf\a\t\t\a\x1c\x14\t\a \a\t\xfe\xc0\t\a \a\t\x14\x1c\a\t\t\a\x14\x04\x02\x00\x04\x01 \x80\f`\b\f\x80\x80\x80\x80\x80\x80\f\b`\f\x80@\t\a \a\t\xa0\x10\a\t\t\a\x10\x10\a\t\t\a\x10\xa0\t\a \a\t \x00\x00\x00\x00\a\xff\xfe\xff\xe0\x02\x80\x01\xa1\x00\x05\x00\t\x00\x1c\x00%\x00?\x00N\x00^\x00\x00\x01\x06\a#53#\x15#7\x05/\x0132\x1f\x012\x0610'&/\x01\a\x06\a&\x05\"&?\x016;\x01\a\x17\x06\x15\x14\x17#\x15\x14\x06+\x01\"&=\x01'#\"&=\x0146;\x01'%\x1e\x01\x15\x14\x06\"&5467\x16\x176\x17>\x01'&'\a&'\x0e\x01\x15\x14\x1632\x01\xa3\x1d\x19=d\x84~\x1a\x01!\f\fc\r\x02\x18\x01\x01\x01\x01\x01\x15\x15\a\v\x17\xfe'\b\t\x01\x18\x04\fc\x1a\xe451\xd1\t\a \a\t\x14\x1c\a\t\t\a\x14\x04\x02\a%4^\x84^D4(\x1f\x13\x02\x19\f\x0e\x03\x05'?\x05\x1b\x163&\x1d\x01X\x19\x1f\x80\x80\x80H\n>\f`\x02\x01\x01\x01\x13\x13\x06\v\x1b\x1f\f\b`\f\x80 K7H6\x10\a\t\t\a\x10\xa0\t\a \a\t \x1d!`\x1eA]]A&m/$(\x16\xd3\x12?\x1b\a\a/S\x05!(\x13'1\x00\x00\x00\x01\x00\x00\x00\x00\x02\x00\x01\x80\x003\x00\x00\x012\x16\x1d\x01\x14\x06+\x015#\x15#5#\x15#5#\x15#5#\x15#\"&=\x0146;\x01546;\x01546;\x012\x16\x1d\x0132\x16\x1d\x01\x01\xf0\a\t\t\aP @ @ @ P\a\t\t\a0\t\a0\t\a\xe0\a\t0\a\t\x01\x00\t\a\xe0\a\t\x80\x80\x80\x80\x80\x80\x80\x80\t\a\xe0\a\t0\a\t0\a\t\t\a0\t\a0\x00\x00\x00\x00\x06\x00\x00\xff\xc0\x02\x80\x01\xc2\x007\x00>\x00E\x00e\x00o\x00y\x00\x007\x0e\x03\x1d\x01\x14\x17#\"&5\x1146;\x01'&?\x016\x1f\x01'&6?\x016\x16\x1f\x017>\x01\x1f\x01\x1e\x01\x0f\x0176\x16\x1f\x01\x16\x06\x0f\x0132\x17\x06\x0353\x15#\"&\x1753\x15\x14\x06#\x112\x16\x1d\x01#5+\x03\x15#546;\x01&54632\x17632\x16\x15\x14\a#3&#\"\x06\x15\x14\x17\x167654&#\"\a36\xf1\v\x12\r\a\t\xa9\r\x13\x13\r\x1d\x1e\r\t\t\t\x0e \f\x02\x05\x06\x10\x06\f\x02\x14\x14\x02\f\x06\x10\x06\x05\x02\f \x06\r\x04\t\x04\x02\x06\x1e\x1d\x14\t)\x14\xc0\xa0\r\x13\xe0\xc0\x13\r\r\x13\xc0\x0f\x01\x01\x0f\xc0\x13\r\x14\x04( 7!!7 (\x04\xfc5\x15\x18\f\f\t\x03\xcb\t\f\f\x18\x155\x04\xfe\x03\v\x10\x15\v\xe0\x11\x0f\x13\r\x01`\r\x13\x16\t\r\r\r\t\x17\x1f\x06\f\x02\x06\x02\x05\x0666\x06\x05\x02\x06\x02\f\x06\x1f\x17\x04\x02\x06\r\x05\r\x04\x16\x12\x1d\xfe\xaf`\x80\x13\x13\x80`\r\x13\x01 \x13\r`\x80\x80`\r\x13\f\f\x1c,KK,\x1c\v\r0\x0f\t\v\b\x03\x03\b\v\t\x0f0\x02\x00\x03\xff\xfd\xff\xbd\x02\x83\x01\xc3\x009\x00=\x00A\x00\x00%\x16\x0f\x01\x06'&6?\x01'\x06#\"&/\x01\a\x0e\x01#\"'\a\x17\x1e\x01\a\x06/\x01&7>\x01\x1f\x017.\x01?\x01>\x01\x1f\x0176\x16\x1f\x01\x16\x06\a\x1776\x16\x017'\a\x177'\a\x02\u007f\x03\a\xa2\b\x03\x06\r\x0f\x16'\f\x01(?\v\x14\x14\v?(\x01\f'\x16\x0f\r\x06\x03\b\xa2\a\x03\x06\x1e\x10\x16'%\x14\x16W\x06\x17\vrr\v\x17\x06W\x16\x14%'\x16\x10\x1e\xfe\x9b\x13_$\xc8p$_\x0e\a\x03C\x04\b\x0f\x1f\x06\th\x01.'KK'.\x01h\t\x06\x1f\x0f\a\x03C\x03\a\x10\f\x06\tf\x1aW(\x96\n\b\x0400\x04\b\n\x96(W\x1af\t\x06\f\x01\x00G'@..@'\x00\x00\x02\xff\xfe\xff\xe0\x02\x02\x01\xa0\x00\x11\x00\x15\x00\x00\x012\x16\a\x03\x0e\x02#!\".\x01'\x03&63\x05!\x17!\x01\xe0\x0f\x13\x028\x02\x12\x1c\x0f\xfe\xef\x10\x1c\x11\x038\x02\x13\x0f\x01\x9b\xfe\x8a\x1f\x019\x01\xa0\x16\x0e\xfe\x9b\x10\x19\x0e\x0e\x19\x10\x01e\x0e\x16@\xc0\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00c\x00s\x00\x91\x00\x00\x122\x16\x14\x06\"&4\x054&#\"+\x01\a\x06\x1d\x01\x14;\x012=\x01732\x16\x14\x0f\x01\x06\x0f\x01\x06\x15\x14\x0f\x01\x06\x1d\x01\x14\x16;\x012?\x016;\x012\x14;\x012=\x014?\x016=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"\x0f\x01\x06\x14\x16;\x012\x1f\x01\x16\x1d\x01\a\x06\x1f\x01\x16;\x016$\x14\x16;\x012?\x016=\x014&\"\x0f\x01\x13>\x017#\"/\x01&+\x01'&+\x01\"\x0f\x01\x06\x1d\x01\x14\x1f\x01\x16;\x012\x16\x15\x91Α\x91Α\x01\xc0uS\x01\x03\x02\x1d\x03\b\x10\b\x10\x15\x04\a\x03\x1b\x02\x02(\x06\a\x14\x05\t\a\x16\n\x04\n\x02\x05\x03\b\b\x10\b\x06\x1f\v\t\a%\x04\a\a\x04 \x05\x03\n\x03\a\x04\x10\x05\x03\n\x03\f\t\t \x04\a\x14\v\xfe\xc2\a\x04\x10\x05\x03\n\x03\a\t\x03\x1a}5W\x19\r\b\x05\x12\t\r\x13+\f\x11 \f\v+\x16\x12\x16\x10\x14\x14\a\t\x01\xb8\x91Α\x91\xcegSu\x16\x02\x04\x14\b\b\b\x10\a\t\x04\x1a\x02\x01\r\x02\x06\n\b\x14\x04\a\x19\a\t\b\x13\x05\x10\b\x02\x06\x01\v\x04\v\x05\x06\n\a\x05\t\x05\x06\x04\t\x03\n\x06\x04\t\x03\x05\t\f\t\b!\x04\x1f\x91\n\x06\x03\t\x04\x04\x10\x05\a\x04\x19\xfe\xc5\x038-\x05\x11\n%\v\a\x1a\r\x1a\x18\x16\x0e\x11\v\n\x06\x00\x00\x00\x02\x00\x00\x00`\x02\x00\x01 \x00\x0f\x00\x1f\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x01463%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\xf0\a\t\t\a\xfe \a\t\t\a\x01\xe0\a\t\t\a\xfe \a\t\t\a\xa0\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t\x00\x00\x00\x02\x00 \xff\xc0\x00\xe0\x01\xc0\x00\x0f\x00\x1f\x00\x00\x17\x14\x06+\x01\"&5\x1146;\x012\x16\x15\x13\x14\x06+\x01\"&5\x1146;\x012\x16\x15`\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t0\a\t\t\a\x01\xe0\a\t\t\a\xfe \a\t\t\a\x01\xe0\a\t\t\a\x00\x00\x00\x00\x02\xff\xfb\xff\xbb\x02\x00\x01\xc1\x00+\x003\x00\x00\x01\x16\x14\x0f\x01\x06\x0f\x02\x16\x17\x16\a\x06\a\x0e\x01\a\x06\a\x06.\x02767>\x017676\x17\x16\x17?\x016?\x0162\x17\x00264&\"\x06\x14\x01\xf7\t\t/\x06\b$L\x0e\x05\r#\x0e\x14\r\x14\x01\x04\x18#kS\v#\x18&\x0e\x18\x04\x06\x0f\"7\x14\x15L\f\x03\x05/\t\x1b\t\xfe\xe3(\x1c\x1c(\x1c\x01\x99\t\x1b\t/\x05\x03\fL\x15\x147\"\x0f\x06\x04\x18\x0e&\x19\"\vSk#\x18\x04\x01\x13\x0e\x14\x0e#\r\x05\x0eL%\a\x06/\t\t\xfe\xa9\x1c(\x1c\x1c(\x00\x01\xff\xfe\xff\xdf\x02\x02\x01\xa4\x00\x18\x00\x00\x01\x1e\x01\x0f\x01\x06\"/\x01&6?\x01>\x01\x1f\x01\a\x17'7'6\x16\x17\x01\xda$\x04!\xd4\x06\x0f\x05\xd4!\x04$\x03\"b&\x1d`\x900`\"&a\"\x01v%i(\xdb\x05\x05\xdb(i%\x03#\a\x1cW@\x90\x80@h\x1b\a#\x00\x00\x00\x05\xff\xff\xff\xbc\x01\xc2\x01\xc0\x00\a\x00\x0f\x00\x17\x00@\x00j\x00\x00\x12\"&462\x16\x142462\x16\x14\x06\"&\"&462\x16\x14\a\x06\x17\x16\x06\a\x06\a\x0e\x01\x17\x16\x17\x16\x06\a\x06\a\x06&54'&>\x01367>\x01'&'&63676\x16\x172\x16\a\x06\x15\x14\x06'&'.\x017676&'\"'6'&5<\x01546\x17\x16\x17\x1e\x01\a\x06\a\x06\x16\x17\x16\xa4(\x1c\x1c(\x1c@\x1c(\x1c\x1c(((\x1c\x1c(\x1c@\x01\x18\x03\b\a\x17\x16\v\f\x03\x05\t\x03\a\a72\t\x13\x17\x02\x02\a\x05\x16\x17\v\f\x03\x05\t\x03\a\a94\b\x10\xe3\a\b\x04\x16\x13\t27\a\b\x04\t\x05\x03\f\v\x01\x0e\n\t\x14\x10\b49\a\a\x03\t\x05\x03\f\v\x17\x01\x00\x1c(\x1c\x1c((\x1c\x1c(\x1c`\x1c(\x1c\x1c(\xa7=3\a\r\x01\x02\a\x03\x14\f\x17\x15\x06\r\x01\x05\x1d\x05\v\n:2\x05\b\a\x02\a\x04\x14\v\x18\x14\a\r\x06\x1f\x04\t\x8c\r\a1:\v\v\x06\x1c\x05\x01\r\a\x15\x16\f\x14\x04\x03\x14\x13+3\x01\x03\x01\t\n\x05\x1f\x05\x01\r\a\x15\x16\f\x14\x03\a\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x06\x01\xc3\x00/\x007\x00\x00%\x16\x0f\x01\x06+\x01\"/\x01\x06#\"&'.\x01\x0f\x01\x06\x17\x1e\x01\x17\x15\x17\x16\x06+\x01\"&=\x014>\x02?\x016\x17\x16\a\x1e\x02\x17\x06264&\"\x06\x14\x01\xfe\a\x0e.\t\r3\x10\n.\x16\x18\x1d/\f\x01\t\x03\f\x04\x03\x0f7\")\b\x13\x12\xec\r\x13\x10%B0\xca\n\x02\x0e0\x15%\x1c\az\x14\x0e\x0e\x14\x0et\x14\x0f(\t\r@\r \x19\x04\x02\x03\f\x05\x05\x1d&\x02\x01R\x10\x1e\x13\rQ?bU;\x12K\x04\n6\x1c\x04\x16!\x148\x0e\x14\x0e\x0e\x14\x00\x00\x01\xff\xfc\xff\xbf\x02\x03\x01\xc0\x00\x1a\x00\x00\x01\x03\x06\"'\x03\a\x06\"/\x01\a\x06\"/\x01\a\x06\"'\x03&63!2\x16\x01\xffW\x01\x0e\x01B.\x02\f\x02\".\x02\f\x02,$\x02\f\x02W\x04\x13\x10\x01\xc0\x0f\x13\x01\x9a\xfe,\x06\x06\x01l\xac\x06\x06\x85\xc5\x06\x06\xbc}\x05\x05\x01\x12\x0f\x1a\x17\x00\x00\x00\b\x00\x00\xff\xe0\x02@\x01\xa0\x00\x06\x00\v\x00\x0f\x00\x14\x00\x1d\x00'\x000\x008\x00\x00\x01\x15!>\x0132\a\x15#47%\x16\x17#\x1753\x16\x15\a4'3\x15\x14\x06+\x01\x13\x15#.\x01\"\x06\a#5\x0353\x06\x1d\x01#\"&62\x16\x1d\x01#54\x01@\xfe\xf1'~J\x0f\xcf`\x1e\x01Bp?\xaf\x80B\x1e\xa0\x04\xa4\x13\r\x80 2\x11:F:\x112\x80\xa4\x04\x80\r\x13\xf8P8\xc0\x01\x9e~;E\xa0\x80C=\x99\x1a_\xa0\x80=C@\x0e\x12`\r\x13\x01 \x80\x1d##\x1d\x80\xff\x00`\x12\x0e`\x13\xad8(``(\x00\x00\x02\xff\xf6\xff\xc0\x01\xc3\x01\xca\x00\x0f\x00\x1e\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x01463$\x1e\x01\x0f\x01!'&>\x01\x16\x1f\x0176\x01p\a\t\t\a\xfe\xc0\a\t\t\a\x01e(\x05\x11H\xfe\xcb0\x0e@te\r\x1e\x15\x11 \t\a@\a\t\t\a@\a\t\xe2\"5\x14W\xd0:e\x1b@:\x80\x19\x14\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x13\x00(\x00:\x00B\x00\x00\x13&'&'&6;\x012\x17\x16\x17\x16\x17\x16\x06+\x01\"7&'&'4>\x01;\x012\x17\x16\x17\x16\x17\x16\x06+\x01\"\x172\x16\x14\x06+\x01\x14\x06+\x01\"&=\x01463\x05264&+\x01\x15\u007f\x04\x12#\x06\x01\n\a\x11\x0e\x02\x04\x16\x1f\x06\x01\n\a\x11\x0en\x04\x12#\x06\x04\b\x04\x11\x0e\x02\x04\x16\x1f\x06\x01\n\a\x11\x0e\x9f.BB.\x108(\xc0(8\x13\r\x01p\x14\x1c\x1c\x14\x10\x01.\x19\x13#1\a\v\x0e\x1f\x16\x1f,\a\v\x0e\x19\x13#1\x05\b\x05\x0e\x1f\x16\x1f,\a\v B\\B(88(\xc0\r\x13\xa0\x1c(\x1c`\x00\x00\x00\x00\x04\xff\xff\xff\xc8\x01\xf1\x01\x8e\x00\f\x00\x1a\x00\"\x00/\x00\x00%4'7>\x01\x17\x1e\x01\x17\x14\x06#\a\x17\x16\x06\a\x06\"'.\x01?\x01\x162&\"&462\x16\x14%\"&5>\x0176\x16\x1f\x01\x06\x15\x01H&Q\x03\x0e\x06,6\x04\t\a\xbeQ\x03\x03\x067|7\x06\x03\x03Q\x14-\x03(\x1c\x1c(\x1c\xfe\xe8\a\t\x046,\x06\x0e\x03Q&\xc0,\x18\x80\x06\x03\x04 `8\a\nD\x80\x06\r\x03\x1e\x1e\x03\r\x06\x80\f \x1c(\x1c\x1c(\x14\n\a8` \x04\x03\x06\x80\x18,\x00\x00\x00\x06\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\f\x00\x1a\x00&\x00.\x006\x00>\x00\x00%4'7>\x01\x17\x16\x17\x16\x0e\x01#\a\x1627\x17\x16\x06\a\x06\"'.\x017'\"&7676\x16\x1f\x01\x06\x15\x16\"&462\x16\x14\x02\"\x06\x14\x16264\x06\"&462\x16\x14\x018\x1e*\x03\x0f\x064\a\x01\x05\a\x05\xb1\x10$\x10*\x03\x03\x06\"H\"\x06\x03\x03C\a\n\x01\a4\x06\x0f\x03*\x1e\xa7Α\x91Α\xac\x98ll\x98l\xab\x1a\x13\x13\x1a\x13\xc0#\x13C\x06\x02\x04*B\x05\a\x056\n\nC\x06\r\x04\x10\x10\x04\r\x06y\n\aB*\x04\x02\x06C\x13#\xf8\x91Α\x91\xce\x01\x1fl\x98ll\x98l\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x05\x00 \xff\xc0\x02\x83\x01\xc0\x00\a\x00\x0f\x00)\x009\x00V\x00\x00\x12\"&462\x16\x14\x04\"&462\x16\x14\x13\x16\x06+\x01\x15\x14\x06+\x01\"&=\x01#\"&?\x0167\x1627\x16\x17%2\x16\x15\x11\x14\x06+\x01\"&5\x11463\a\x1e\x02\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\"&=\x01467\x162\x9a4&&4&\x01Z4&&4&?\x03\x0f\f7\x0e\n0\n\x0e7\f\x0f\x02.\x06\x18\x188\x18\x18\x06\xfe\xfe\a\t\t\a \a\t\t\a|\f\x14\f\x0e\n\b\x0e\nP\n\x0e\b\n\x0e\x19\x13\x188\x01@&4&&4&&4&&4\xfe\xf8\f\x12h\n\x0e\x0e\nh\x12\f\xb9\x16\x03\x10\x10\x03\x16\xa9\t\a\xfe \a\t\t\a\x01\xe0\a\t\x90\x01\x0e\x15\f\x88\n\x0e\x88\n\x0e\x0e\n\x88\x0e\n\x88\x13\x1b\x02\x10\x00\x00\x03\xff\xff\xff\xbf\x02\x00\x01\xc0\x00@\x00D\x00H\x00\x00%\a\x06\"/\x01\a\x16\x15\x14\x0e\x01\a\x0e\x01/\x01\a\x16\x15\x14\x06\"&4632\x177'&67>\x0332\x177'&4?\x016;\x012\x1f\x01762\x1f\x01\x16\x14\x0f\x01\x17\x16\x14%7'\a\x05'\a\x17\x01\xf7a\t\x1b\tP\n\x11\x06\v\x06\x03\x0f\x05k\x12\x01\x12\x1b\x13\x13\r\x02\x06\x12l\x05\x02\x06\t\x17\x18\x18\n)&\nQ\t\ta\t\r\x01\r\tP0\n\x1c\n/\n\n0Q\t\xfe\xdcIEI\x012EID\x8aa\t\tQ\n&)\r! \f\x06\x02\x05l\x12\x06\x02\r\x13\x13\x1b\x12\x01\x12k\x05\x0f\x03\x05\b\x06\x04\x11\tQ\t\x1b\ta\t\tQ0\n\n/\n\x1c\n0P\t\x1bhIEJ\x9fEIE\x00\x03\xff\xf8\xff\xb8\x02\x01\x01\xc1\x00\x19\x004\x00O\x00\x00\x05\x16\x06\a\x06.\x027>\x01\x1f\x017&5462\x16\x14\x06#\"'\a%\x141\x14\x0e\x01+\x01\"&5.\x01'.\x01=\x014>\x02321\x1e\x01\a0\x15\x14\x0e\x02+\x01\".\x015.\x01'\"&=\x0146321\x1e\x01\x011\x06\x02\a9\x88b\x12\x1f\x04\x10\x05u\x1c\x02\x13\x1a\x13\x13\r\x02\x06\x1b\x01C\x04\b\x04 \x06\n\x06\x8aa\x06\t\x03\x04\x06\x03\x01z\xafZ\x03\x04\x06\x03 \x04\a\x05\x05S9\x06\t\t\a\x01Sv\x0f\x05\x10\x04 \x13b\x889\a\x02\x06t\x1b\x06\x02\r\x13\x13\x1a\x13\x01\x1b+\x01\x04\b\x04\t\x06a\x8b\x05\x01\t\x06 \x03\x06\x04\x03\x06\xafz\x01\x03\x06\x04\x03\x04\a\x04:R\x05\n\x06 \a\t\x06v\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\r\x00\x11\x00\x15\x00\x19\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x117\x175#\x1535#\x1535#\x15\x01@\x1a&&\x1a\xff\x00\x1a&\x80 0\x800\x800\x01\xc0&\x1a\xfe\x80\x1a&&\x1a\x01@\x80\xa0``````\x00\x00\b\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\r\x00\x11\x00\x18\x00\x1f\x00#\x00*\x00.\x005\x00\x00\x1146;\x01\x17\x11\x14\x06#!\"&575#\x15354&+\x01\x1d\x02326=\x01#\x1535#\x15\x14\x16;\x015'\x15!5%\x1535#\"\x06&\x1a\xc0\x80&\x1a\xff\x00\x1a&\xe0@\xa0\x13\r \r\x13\xa0@\xa0\x13\r @\x01\x00\xff\x00@ \r\x13\x01\x80\x1a&\x80\xfe\xc0\x1a&&\x1a\xc0@@ \r\x13@\x80@\x13\r @@ \r\x13@`@@@ @\x13\x00\x00\x05\xff\xf9\xff\xc0\x01\xc0\x01\xc0\x00\a\x00\x18\x00(\x002\x00O\x00\x00\x002\x16\x14\x06\"&4\x122\x16\x15\x14\x06+\x01\"&46;\x01264!6\x17\x16\x14\a\x06\"/\x01&6\x1f\x01\x1627\x16\x1f\x01\a\x06\"&4?\x01\"&46;\x012\x16\x0f\x01\"\x061\x17\x16\x1d\x01\x14\x06\"&=\x01'&6?\x01\x01|(\x1c\x1c(\x1c)\x0e\t\x1c\x14`\a\t\t\a`\a\t\xfe\xf6\v\v\x05\x05\x0e'\x0eD\f\x17\vD\x05\r=\x06\a\x1e\\\t\x1a\x13\t0\r\x13\x13\r\xcd\x1a\x15\x13R\x01\x01=\x0e\x13\x1a\x13N\x14\x02\x15\x15\x01\xc0\x1c(\x1c\x1c(\xfe\\\t\a\x14\x1c\t\x0e\t\t\x0e\f\f\x04\x0e\x04\x0e\x0eD\v\x17\fD\x04\xb8\t\b\x1e\\\t\x13\x1a\n\xd2\x13\x1a\x131\x13S\x01=\x0e\x14Y\r\x13\x13\rSN\x148\x12\x11\x00\x00\x03\xff\xfe\xff\xc0\x02\x00\x01\xc0\x00\a\x00$\x00C\x00\x00\x00\"&462\x16\x14\x12\x16\x14\a\x06#\"'%.\x01>\x01\x1f\x017'&7\x1f\x01\x1e\x01\x0f\x01\x17\x1676\x01'&76\x1f\x017\x16\x15\x1776\x16\x1f\x02\x1e\x01\x0e\x01/\x01&/\x01\a/\x01\x06'\x01\xc4(\x1c\x1c(\x1c\x12\x0e\a\x1a%\x14\x11\xfex\t\x06\t\x13\t\xc6.K\x17\x05k(\r\x03\n1\x88\x19\x14\a\xfe\x9a\x1a\x04\x03\x02\x03#\v\x15>R\x1d0\a\x114\f\t\f\x19\f:\x12\x06\a s/\x13\x18\x01`\x1c(\x1c\x1c(\xfe\x87\x0e\x14\a\x1a\b\xcb\x04\x13\x12\x06\x05fEK\x17\x1f5(\f#\x0eJF\v\x14\a\x01a\x17\x04\x04\x02\x01\x06\x15\v\x18\x1f \f\x1d\x163\x1a\x06\x19\x18\t\x06\x1d\t\x13\x13\r9\x18\x11\f\x00\x00\x04\x00\x00\xff\xc0\x02@\x01\xc0\x00\a\x00.\x00B\x00N\x00\x00\x00\"&462\x16\x14\x122\x16\x15\x14\x06#!\"&46;\x01\x130&5&6?\x016\x1f\x01\x16\x1f\x0132\x16\x15\x14\x0f\x013264\a7'.\x01?\x01'&\x0f\x01\x06\a\x0337\x16\x1f\x01\a37#\"/\x01\a\x17\x1e\x01\x0f\x01\x01d(\x1c\x1c(\x1c\x9e\x14\x0e*\x1e\xfe \n\x0e\x0e\n+6\x02\b\x03\n(%,G*\x14\x1a,\r\x13\x14\x1aF\n\x0e\xec\x19U\x15\x0f\n%\x0f\r\f'\x06\x064\x18>\f\x12\x16+\xcf\x19!\x1e\r\x14 =\x0f\f\x05\x18\x01`\x1c(\x1c\x1c(\xfe\xa4\x0e\n\x1e*\x0e\x14\x0e\x01\x0f\x01\x01\n\x1b\b\x1e\x1c\v\x15\v(5\x13\r\x16\b\xb2\x0e\x14\"Q2\r.\x16W\x05\x03\n\x1e\x04\x02\xfe\xfb\x84\x12\n\r[\xb0\x1b)N$\t\x1e\x0fL\x00\x02\x00\x00\xff\xe0\x02\x83\x01\xa0\x00\x19\x00C\x00\x00%\x16\a\x0e\x01#!\"&=\x01463!2654/\x01&?\x016\x17%5\"&46;\x012\x1e\x03\x17\x1e\x02;\x0126=\x0132\x16\x14\x06#\x15\x14\x06#\x15#5#\x15#5.\x01\x02e\x1d\x02\x02,\x1e\xfd\xfc\a\t\t\a\x02\a\v\x0e\t\n\f\n\n\n\f\xfd\xc5\r\x13\x13\r\x15\x13&\"\x1f\x18\t\x0f/= \x15\x1a&`\r\x13\x13\r8(@\xc0@*6a\x17&\x1d'\t\a\x10\a\t\x0e\v\v\b\a\n\r\f\r\nw\x80\x13\x1a\x13\t\x10\x17\x1f\x11\x1d,\x17&\x1a@\x13\x1a\x13`(80004\vE\x00\x00\x00\x00\x04\xff\xfe\xff\xe0\x02\x00\x01\xa0\x00\x14\x006\x00W\x00y\x00\x00\x122\x16\x14\x06#\"'\x06#\"&'&>\x027&54\x172654/\x01&54;\x012=\x014+\x01\"\x06\x15\x14\x1f\x01\x16\x15\x14+\x01\"\x1d\x01\x143754&+\x01\"\x0f\x01'&+\x01\"\x06\x1d\x01\x14;\x012=\x01\x17\x162?\x01\x15\x14;\x01232654/\x01&54;\x012=\x014+\x01\"\x06\x15\x14\x1f\x01\x16\x15\x14+\x01\"\x1d\x01\x143\x96Ԗ\x96j83AL\x02\x04\x01\x02\a\x11\x1c\x069\x80\x12\x19\x0e\x16\x02\v\f\b\b\f\x12\x19\x0e\x16\x02\v\f\b\b\xcc\t\a\x10\n\x04\x12\x12\x04\n\x10\a\t\b\x10\b\x19\x02\n\x02\x19\b\x10\b0\x12\x19\x0e\x16\x02\v\f\b\b\f\x12\x19\x0e\x16\x02\v\f\b\b\x01\xa0z\xacz\x133\x03\x02\x05\a\x151\x169JV\x96\x17\x10\x10\f\x13\x01\x02\a\b\x10\b\x17\x10\x11\v\x13\x01\x02\a\b\x10\b\bh\a\t\t##\t\t\ah\b\bD8\x04\x048D\b\x17\x10\x10\f\x13\x01\x02\a\b\x10\b\x17\x10\x11\v\x13\x01\x02\a\b\x10\b\x00\x00\x00\x00\x03\xff\xfe\xff\xc0\x02\x02\x01\xc3\x00\a\x00E\x00Q\x00\x00\x00\"&462\x16\x14\a'\a\x17\x16\x0f\x01\x06\a\x17\x1676\x1e\x01\x06\a\x06#\"'%&'&>\x01\x16\x17\x16\x1f\x01&'&6?\x0154?\x01'&/\x01&>\x01\x16\x1f\x02\x16\x1f\x01\x1e\x01\a\x06#\"\a'\x15\x14\x06\x0f\x01\x06\a\x17&7\x01\xc4(\x1c\x1c(\x1c\x13TB4\x19\a\x15\x04\x0eZ\x10\x0e\t\x13\b\a\t\x11\x13\x0f\x0f\xfe\x93!\x10\x04\a\x12\x13\x04\a\x0f&\x06\x02\x05\f\rJ#*\x11\x13\t\x1d\x06\t\x18\x19\x06\x1a?\x19\x15o\v\x04\b\n\x10\v\x99<\x12\x0fU\x02\x06\xaa\x05\x02\x01`\x1c(\x1c\x1c(\xb6?\x1e'\x13\x1ef\x0f\x06\"\x05\a\x04\a\x12\x13\x04\b\x05\x85\f!\t\x12\t\a\t\x0f\x05\x0e\x06\a\r\x17\x04\x195(\x11\x15\x06\x06\x12:\v\x1a\v\b\f4\x15\b\x10S\b\x1b\n\r--\x14\x10\x19\x05\x1c\x01\x01=\n\n\x00\x00\x00\a\xff\xff\xff\xc0\x02\x02\x01\xc1\x00T\x00\\\x00d\x00l\x00t\x00\u007f\x00\x87\x00\x00\x01\x16\x06\x0f\x01\x14\x16\x14\x15\x14\a\x16\x17\x16\x06\a\x06+\x01\"'.\x01547&507'.\x02?\x01>\x01\x1f\x0154>\x02;\x012\x16\x1d\x01\x141\x15\x1767&5462\x16\x15\x14\a\x16\x17704=\x0146;\x012\x16\x1d\x0176\x16\x17$264&\"\x06\x14\x12264&\"\x06\x146264&\"\x06\x146264&\"\x06\x147654&\"\x06\x15\x14\x16\x176264&\"\x06\x14\x01\xff\x02\x05\x06\x87\x01\x04!\b\t#%\x10\x15c\x12\r!&,\x04\x01\x87\x04\x05\x01\x01\x06\x03\f\x06\x1c\x03\x04\x06\x03\x10\a\t8\t\r\x168P8\x16\r\t8\t\a\x10\a\t\x1c\x06\r\x02\xfe\xe0\x0e\t\t\x0e\t)\x0e\t\t\x0e\t\t\x0e\t\t\x0e\t\t\x0e\t\t\x0e\t\x10\x10\t\x0e\t\b\x04\x1d\x0e\t\t\x0e\t\x01(\x06\f\x037\x01\x05\x04\x02\r\x10\"-.Q\x19\f\b\x15C(?,\x10\r\f7\x02\a\b\x04\x0e\x06\x05\x02\f\x1d\x04\x05\x05\x02\t\a.\x01\x01\x17\x0f\f\x1b!(88(\"\x1a\f\x0f\x17\x01\x01.\a\t\t\a\x1d\f\x02\x05\x06*\t\x0e\t\t\x0e\xfe\xe7\t\x0e\t\t\x0e7\t\x0e\t\t\x0e7\t\x0e\t\t\x0eO\x17\t\a\t\t\a\x04\x10\x062\t\x0e\t\t\x0e\x00\a\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\a\x00\x0f\x00\x17\x00\x1f\x00[\x00`\x00l\x00\x0062\x16\x14\x06\"&462\x16\x14\x06\"&462\x16\x14\x06\"&462\x16\x14\x06\"&4\x05\x17\x16\x14\x0f\x01\x06\"/\x01&=\x01#\x16\x15\x14\x06#!\"&54>\x017546;\x01546;\x012\x1f\x01\x16\x1d\x01354?\x0162\x1f\x01\x16\x14\x0f\x01\x06\x1d\x01\x14\x01\x15\x173'\x13264&#!\"\x06\x14\x163n\x14\x0e\x0e\x14\x0e^\x14\x0e\x0e\x14\x0e^\x14\x0e\x0e\x14\x0e^\x14\x0e\x0e\x14\x0e\x01\a$\x05\x05\x16\x05\r\x05%)+\vB.\xff\x00.B\x10\x1d\x13\x1c\x14\x10\x1c\x14\x90 \fO\x05@)%\x05\r\x05\x16\x05\x05$\x17\xfe\x80@zD:\x14\x1c\x1c\x14\xff\x00\x14\x1c\x1c\x14H\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14#%\x05\r\x05\x16\x05\x05$*:\x13\x17\x19.BB.\x16(\x1e\t[\x14\x1cp\x14\x1c\x1d\xb7\f\r3\x13:*$\x05\x05\x16\x05\r\x05%\x16 f \x01S`@\xa0\xfe\x80\x1c(\x1c\x1c(\x1c\x00\x00\x02\x00\x00\xff\xe0\x01\x80\x01\xa0\x00\x13\x00\x1f\x00\x00\x012\x1d\x01\x14+\x01\x15\x14+\x01\"=\x01#\"=\x0143%2\x1d\x01\x14#!\"=\x0143\x01t\f\f\x8c\f8\f\x8c\f\f\x01h\f\f\xfe\x98\f\f\x01 \f8\f\xe4\f\f\xe4\f8\f\x80\f8\f\f8\f\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00%\x001\x009\x00\x00\x01#\x15\x16\x15\x14\x06\a\x17\x16\x06+\x01\"&?\x01.\x015475#\"&=\x01463!2\x16\x1d\x01\x14\x06\x05\x15\x14;\x012=\x014+\x01\"\x16264&\"\x06\x14\x01p\x10 /(\x16\x04\x13\x10\xc0\x10\x13\x04\x16(/ \x10\a\t\t\a\x01`\a\t\t\xfe\xd9\b0\b\b0\b6tRRtR\x01\x90\x9d\x10\x132T\x1aG\x0f\x1a\x1a\x0fG\x1aT2\x13\x10\x9d\t\a\x10\a\t\t\a\x10\a\t\x18\x10\b\b\x10\b\xd0\x13\x1a\x13\x13\x1a\x00\x04\xff\xff\xff\xbf\x02\x05\x01\xc5\x00\x15\x00/\x009\x00A\x00\x00%\x16\x14\x0f\x01\x06\"/\x01.\x017'#'7\x17\x15\x176\x16\x17'\"\a'&7>\x01\x17\x1e\x01\x0f\x01\x1f\x0176\x16\x17\x16\x06\a\x06\a'&\a\x06\x17\a\x06\"&4?\x01\x06264&\"\x06\x14\x01\xf5\v\v5\n\x1f\vu\x11\b\vk>`@\x80k\x140\x114\r\fR\x01*\x1bI%\a\x03\x05J\vDK\x05\r\x02\t\x14\x1b\x13\x19\x13\x1f\x94\a\f|\x135%\x13\x98u\x14\x0e\x0e\x14\x0e4\v\x1e\v5\v\vu\x110\x14k\x80@`>k\v\b\x116\x03R=+\x1b\x14\t\x02\x0e\x04KD\vJ\x05\x03\a$J\x1b\x12\v\x13\x1fR\x1f {\x13%5\x13\x99\xde\x0e\x14\x0e\x0e\x14\x00\x06\xff\xfe\xff\xc0\x02\x02\x01\xc0\x00\a\x00)\x00-\x001\x005\x00=\x00\x00\x00\"&462\x16\x142\x16\x06\x0f\x01\x1532\x16\x1d\x01\x14\x06#!\"&=\x0146;\x015\a\"#\"'&67%6\x015#\x15%\x1535+\x01\x153\x02\"&462\x16\x14\x01-\x1a\x13\x13\x1a\x13\xbe\x03\x06\a\xe4\xb0\r\x13\x13\r\xfe\x80\r\x13\x13\r\xb0\xdc\x02\x02\f\x03\x02\a\x06\x01\xe0\x06\xfe\xbe`\x01\x00`\x80``c\x1a\x13\x13\x1a\x13\x01\x80\x13\x1a\x13\x13\x1a\r\f\x02<\\\x13\r\xe0\r\x13\x13\r\xe0\r\x13S;\f\x06\f\x01\x80\x02\xfe\xa7``````\x01 \x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x0e\x00\x1f\x00\x00\x01\x1e\x01\x15\x14\x06\"&5467\x16\x176\x13>\x01'&'\a&'\x0e\x02\x15\x14\x1632\x01D4H\x83\xba\x83_I9*\x1b\n$\x13\x15\x06\x06:\\\a\x1b\x1c\x12K8+\x01\x8d0\x8c+_\x87\x87_6\xa0D5: \xfe\xc7\x1aY'\t\vCu\b ((\x138E\x00\x00\x00\x00\x02\xff\xff\xff\xc0\x02A\x01\xc0\x00,\x00X\x00\x007\x0e\x03\a\x06\a'&67670767>\x06767632\x1f\x01\x06\a\x0e\x05\a\x0e\x02%\x16\x06\a\x06\a\"\a\x06\a\x0e\x04\a\x06\a\x06#\"/\x0167>\x047>\x027>\x05767\xdb\r\x16\x18\x0e\r5#$\t\x01\n$7\x02E\x1c\x04\x03\x12\x10 #3\x1e\x1b\x0e\b\n\r\t%\x1e.\x13\x16&%\x1a\n\a\a\b\x17\x01L\t\x01\n$7\x01\x01E\x1c\x06\a %C(\x1b\x0e\b\n\r\t%\x1e.\f\f\x16\x11\x17\f\x12\x1a\n\a\x06\t\x17 !\x14\x115#p\r\x12\f\a\x04\x14!#\n\x1b\b\x1e\x15\x01\x17J\v\b$\x18'\x1c\x1f\v\n\n\x06\t%\x1c\x12\a\n\x1a%&\x15\x13\x12\x13!\xd8\n\x1b\b\x1e\x15\x01\x17J\x0f\x126'/\x0f\n\n\x06\t%\x1c\x12\x04\x05\v\v\x13\v\x13&\x15\x13\x12\x13!!\x16\t\x06\x14!\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x16\x002\x00:\x00\x00%\x14\a\x06\x14\x17\x16\x1d\x01\x14\x06#!\"&5\x11463!2\x15\x05\x15\x14;\x01\x15\x14;\x012=\x0132=\x014+\x0154+\x01\"\x1d\x01#\"\x135!\"\x06\x14\x163\x01\xc0\n\x02\x02\n\x0f\v\xfe\xba)77)\x01F\x1a\xfe\xd0\b8\b0\b8\b\b8\b0\b8\b\xed\xfe\xe3\r\x13\x12\x0eZ\x0f\x05\t4\f\n\t\x10\f\x0e7)\x01@)7\x1a\x8e0\b8\b\b8\b0\b8\b\b8\xfe\xe0@\x12\x1c\x12\x00\x00\x01\x00\x00\xff\xc0\x02@\x01\xc0\x00\x18\x00\x00\x012\x1e\x02\x15\x14\x06#\x11\x14\x06#!\"&5\x11\".\x02546\x01 AoH(#\x1d\x15\x0f\xfe\x88\x0f\x15\x0f\x18\x10\t\xa1\x01\xc0\x1f2;\x1d\x18\x1f\xff\x00\r\x13\x13\r\x01\x00\t\x0f\x14\v>k\x00\x00\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa1\x00\t\x00\x12\x00\x005!\x15\x14\x06#!\"&5\x01\x1e\x01\x15!%630\x02\x00\x13\r\xfe@\r\x13\x01,Y{\xfe\x00\x01\x17\b\f\xa0\xa0\r\x13\x13\r\x01\xa0\x05\x81Z\xd9\a\x00\x00\x00\x03\xff\xff\xff\xc0\x02A\x01\xc1\x00\x10\x00,\x00H\x00\x00\x01\x17\x1e\x013\x15\x14\x06#!\"&=\x01265\x0554+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x01327\x16\x15\x14\x0f\x01\x06#\"/\x01&\"\x0f\x01\x06#\"/\x01&547%62\x17\x01 \xdb\x01\x03\x01\t\a\xfe`\a\t\x01\x04\x01;\b8\b0\b8\b\b8\b0\b8\b\xbb\x05\x04\x15\x05\a\a\x04\xe5\x05\f\x05\xe5\x04\a\a\x04\x16\x04\x05\x01\x00\f\x1e\f\x01M\xc1\x01\x02\xb9\a\t\t\a\xb9\x02\x01D0\b8\b\b8\b0\b8\b\b8\x94\x05\a\x06\x05\x18\x05\x04\xca\x04\x04\xca\x04\x05\x18\x05\x06\a\x05\xe2\n\n\x00\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x14\x000\x00\x00\x122\x16\x14\x06#\"'\x06#\"547>\x027&54\x0554+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132\x96Ԗ\x96j83AL\b\x02\x04\x11\x1c\x069\x01`\b8\b0\b8\b\b8\b0\b8\b\x01\xa0z\xacz\x133\b\x03\x03\x03\x151\x16:IVn0\b8\b\b8\b0\b8\b\b8\x00\x00\x03\xff\xff\xff\xbf\x02\x00\x01\xc0\x00\x0f\x00%\x00.\x00\x00\x01\x16\x14\x0f\x01\x06\"/\x01&4?\x0162\x1f\x017\x17\a\x06\x0f\x02\x06\"/\x01&4?\x026?\x01\x17\a\x177'\a\x06\x0f\x0176\x01\xfb\x05\x05\x16\x05\r\x05\xb5\x05\x05\x17\x04\x0e\x04\x027-n\x13\x1bxf\x05\r\x05\x16\x05\x05f\x1b\a\x13n-7\r\nD\n\x06\x02\x13P\t\x01\x06\x04\x0e\x04\x17\x05\x05\xb5\x05\r\x05\x16\x05\x05\xf77-n\x13\a\x1bf\x05\x05\x16\x05\r\x05fx\x1b\x13n-7{\nD\n\x06\tP\x13\x02\x00\x00\x00\x00\x01\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\v\x00\x00\x122\x1e\x01\x15\x14\x06\"&546\x8fb]2p\xa0p2\x01\xc0u\x947PppP7\x94\x00\x00\x00\x00\x06\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\v\x00\x1b\x00'\x00/\x007\x00?\x00\x00%2\x16\x14\x06#!\"&463\x052\x16\x1d\x01\x14\x06#!\"&=\x014637\"&7>\x012\x16\x17\x16\x06#&\"\x06\x14\x16264&\"\x06\x14\x16264\x06\"\x06\x14\x16264\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xb0\a\t&\x1a\xfe\xa0\x1a&\t\a\x1b\x1a\x18\x0f\x1f~\x96~\x1f\x0f\x18\x1a>\x0e\t\t\x0e\t\x89\x0e\t\t\x0e\t\x89\x0e\t\t\x0e\t\xc0\x1c(\x1c\x1c(\x1c\x80\t\a\x10\x1a&&\x1a\x10\a\t\xa04\x182BB2\x184p\t\x0e\t\t\x0e)\t\x0e\t\t\x0e\x17\t\x0e\t\t\x0e\x00\x00\x01\x00 \xff\xc0\x01\xe0\x01\xc1\x00@\x00\x00%\x15\x14\x0e\x01+\x01\"&/\x01&=\x0146?\x01\x15\x142=\x014>\x03376\x1e\x01\x1d\x01\x142=\x0146321\x1e\x01\x1d\x01\x142=\x0146\x1f\x01\x1e\x03\x1d\x01\x17\x1e\x01\x01\xe0\x1e4\x1e\xd7\x13/\r\x1f\v\f\t\x1b\x10\x03\x05\b\n\x05\x1f\b\x10\n\x10\x1c\x14\x01\x14\x1b\x10\x15\r'\x05\b\a\x03$\v\x11\x83S\x1e4\x1e\x13\x0e\x1f\v\x0fJ\t\x14\x04\x0fL\b\b\x93\x05\b\a\x06\x05\x06\x01\x06\f\a \b\b\xc8\x14\x1c\x01\x1d\x14\xc6\b\b \v\x0f\x02\a\x01\x04\x06\b\x042\t\x03\x15\x00\x00\x02\x00\x00\x00\x00\x02\x00\x01\x80\x00\x13\x00#\x00\x00%\x15!5467\x17546;\x012\x16\x1d\x017\x1e\x01\x172\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\xe0\xfe@B5)\t\a`\a\t)5B\x10\a\t\t\a\xfe \a\t\t\a\xa0@@;a\x16Rp\a\t\t\apR\x16a\x9b\t\a \a\t\t\a \a\t\x00\x00\x00\x00\x04\xff\xfe\xff\xbe\x02\x02\x01\xc2\x00\x17\x00A\x00K\x00U\x00\x00\x01\x1e\x03\x15\x14\x06\a\x01\x0e\x01#\"&5467\x01>\x012\x16\a64&\"\a\x06\a\x0e\x01\a\x0e\x01\a\x0e\x01\a\x0e\x01\a\x06\a\x06\x14\x162767>\x017>\x017>\x017>\x0176\x05'.\x01?\x016\x16\x1f\x03\x1e\x01\x0f\x01\x06&/\x01\x01\xe9\x04\t\x06\x04\x0e\t\xfe\xa0\n\"\x0e!/\x0e\n\x01`\n!\x1c!(\x04\t\r\x05\f\x17 '\x06\x04\x18\x17 '\x06\x04\x18\x17 \x14\x04\t\r\x05\f\x17 '\x06\x04\x18\x17 '\x06\x04\x18\x17 \xfe|\v\x13\x02\x11\xd0\x113\x13\v\x9f\v\x13\x02\x11\xd0\x113\x13\v\x01\xa9\x05\x0e\x0f\x10\a\x0e!\n\xfe\xa0\n\x0e/!\x0e\"\n\x01`\t\x0e\x0ei\x05\r\n\x05\f\x04\x06' \x17\x18\x04\x06' \x17\x18\x04\x06\x13\x05\r\n\x05\f\x04\x06' \x17\x18\x04\x06' \x17\x18\x04\x06\xb8\v\x133\x11\xd0\x11\x02\x13\v\x9f\v\x133\x11\xd0\x11\x02\x13\v\x00\x00\x00\x02\x00 \xff\xbf\x01\xa0\x01\xc1\x00\x15\x00\x1d\x00\x00\x012\x16\x14\x06#!\"&46;\x01&5462\x16\x15\x14\a\x03'!\a\x0e\x01\"&\x01p\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01\x01TxT\x01\xacc\x01\x00c\x04\x11\x10\x11\x01 \x1c(\x1c\x1c(\x1c\b\b\x057\x177\x1e\x01\x15\x14\a'#5'632\x176'&54?\x01632\x17\x1e\x01\x06\x01Kk%\x13Kj\x8fL\x17!!\x17\x1d1$\x1d\x18\x14\x18\v5\x83\x15\x1d\x066YK$(\x1e\x1c\x15\x14\x02\x03\x17\x02\x03\x04\x03\n\f\x04\xb9'\"G@)!.!\x14#+2-,\x0e\x18&\x13B\x1d\x11\x169N\"\x17\f+\x1d\x02\x03\x03\x03\x17\x02\x03\r$7\x00\x00\x00\x00\x05\x00\x00\xff\xc0\x02\x01\x01\xc1\x00\x11\x00\x1e\x00&\x00.\x006\x00\x00\x13\x1e\x02\x17\x16\x0e\x01\x0f\x01.\x02'7>\x02\a\x1e\x02\x17\x05\x06#\"&5476264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x14\x9fZ\x9ab\v\x01\x06\v\b9\x04R\x8f]\x0f\x02\n\x0f3X\x86K\x03\xfe\x85\x03\x02\x06\n\x01r\x1a\x13\x13\x1a\x13C\x1a\x13\x13\x1a\x13{\x1a\x13\x13\x1a\x13\x01\xc0\t_\x99Y\b\x0f\v\x02\x10]\x8eP\x029\a\f\x06q\x01J\x85Vi\x01\n\x06\x02\x02L\x13\x1a\x13\x13\x1a\x85\x13\x1a\x13\x13\x1a{\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\t\x00\x1f\x007\x00\x00\x17\x03!\x03\x0e\x01+\x01\"&7\x06\x16;\x01\x15\x14\x16;\x0126=\x01326/\x01&\"\a72\x16\x1d\x01\x14\x06#!\"&=\x0146;\x0176;\x012\x1f\x015\x15\x01\x80\x15\x01\x1c\x13\xf6\x13\x1cE\a\b\v9\t\a \a\t9\v\b\aZ\x04\x0e\x04\xdb\a\t\t\a\xfe`\a\t\t\ax\t\a\x0fr\x0f\a\t\x13\x01S\xfe\xad\x13\x1a\x1a\xc3\b\x15p\a\t\t\ap\x15\b^\x05\x05\xa5\t\a \a\t\t\a \a\t\x13\r\r\x13\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\t\x00\x1f\x007\x00\x00\x17\x11!\x11\x14\x06#!\"&7\x06\x16;\x01\x15\x14\x16;\x0126=\x01326/\x01&\"\a72\x16\x1d\x01\x14\x06#!\"&=\x0146;\x0176;\x012\x1f\x01 \x01\x80\x1c\x14\xfe\xe0\x14\x1c[\a\b\v9\t\a \a\t9\v\b\aZ\x04\x0e\x04\xdb\a\t\t\a\xfe`\a\t\t\ax\t\a\x0fr\x0f\a\t\x10\x01P\xfe\xb0\x14\x1c\x1c\xc1\b\x15p\a\t\t\ap\x15\b^\x05\x05\xa5\t\a \a\t\t\a \a\t\x13\r\r\x13\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x01\xc0\x01\xc1\x00\x0e\x00 \x00<\x00D\x00\x00%\x1e\x01\x15\x14\x06#!\"&5467\x176\"&=\x0146?\x0162\x1f\x01\x1e\x01\x1d\x01\x14'\x15\x14;\x01\x15\x14;\x012=\x0132=\x014+\x0154+\x01\"\x1d\x01#\"\a\x15\x14\x1626=\x01\x01?6K\"\x18\xfe\xb4\x18\"K6_5jK\f\tU\n\x18\nU\t\f\xa8\x05\x16\x05\x10\x05\x16\x05\x05\x16\x05\x10\x05\x16\x05(/B/\x80\x02N6\x18\"\"\x186N\x02_oK5n\t\x12\x03 \x04\x04 \x03\x12\tn5\x9d\x10\x05\x16\x05\x05\x16\x05\x10\x05\x16\x05\x05\x16]\x10!//!\x10\x00\x00\x00\x01\x00\x00\xff\xe0\x02\x80\x01\xa0\x00-\x00\x00\x05#\"&5\x11#\x15\x14\x06+\x01\"&=\x0146;\x01546;\x012\x16\x15\x113546;\x012\x16\x1d\x01\x14\x06+\x01\x15\x14\x06\x01ܘ\x0f\x15`\x15\x0f\x8c\a\t\t\ap\x15\x0f\x98\x0f\x15`\x15\x0f\x8c\a\t\t\ap\x15 \x15\x0f\x01\\\x9c\x0f\x15\t\a \a\t\x9c\x0f\x15\x15\x0f\xfe\xa4\x9c\x0f\x15\t\a \a\t\x9c\x0f\x15\x00\x06\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\a\x00'\x00/\x007\x00?\x00G\x00\x00\x00\"&462\x16\x14\a'\a\x17\x16\x1d\x01\x14\x06\"&=\x01'&54?\x01632\x1f\x0132\x16\x14\x06+\x01\"\x162\x16\x14\x06\"&4\x16264&\"\x06\x14$2\x16\x14\x06\"&4\x16264&\"\x06\x14\x01\xa4(\x1c\x1c(\x1c4);*\x0e\x13\x1a\x13R\x0e\vp\t\f\v\tG5\r\x13\x13\r@\v6jKKjKf4&&4&\xfe\x8bjKKjKf4&&4&\x01`\x1c(\x1c\x1c(\x95!2\x1b\n\x11\x80\r\x13\x13\ro6\n\x11\x0f\t`\b\a9\x13\x1a\x13 KjKKju&4&&4\x9aKjKKju&4&&4\x00\x00\x05\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x13\x00\x17\x00\x1b\x00\x1f\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x05#\x153'#\x153\a35#\x1735#\x01\xa0\r\x13\x13\r\xfe\x80\r\x13\x13\r\x01`\x80\x80\xc0\x80\x80\x80\x80\x80\xc0\x80\x80\x01\xa0\x13\r\xfe\x80\r\x13\x13\r\x01\x80\r\x13@\x80\x80\x80\xc0\x80\x80\x80\x00\x00\x00\x00\x15\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00O\x00_\x00o\x00\u007f\x00\x8f\x00\x9f\x00\xaf\x00\xbf\x00\xcf\x00\xdf\x00\xef\x00\xff\x01\x0f\x01\x1f\x01/\x01?\x01O\x00\x0072\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01463!2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06+\x01\"&=\x01463\a2\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x032\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x132\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x052\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01463\xf0\a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a\xff\x00\a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a\xa0\a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a@\a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a\xfe\xa0\a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a\xe0\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t`\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t\xfe\xe0\t\a \a\t\t\a \a\t\x01\x80\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t`\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t`\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\x00\x00\b\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00O\x00_\x00o\x00\x84\x00\x0072\x16\x1d\x01\x14\x06+\x01\"&=\x01463#2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x132\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06#!\x11\x14\x06+\x01\"&5\x11463\xf0\a\t\t\a \a\t\t\a@\a\t\t\a \a\t\t\a\xe0\a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a\xfe\x90\t\a \a\t\x13\r \t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t`\t\a \a\t\t\a \a\t`\t\a \a\t\t\a \a\t\x01 \t\a \a\t\t\a \a\t`\t\a \a\t\xfe\x90\a\t\t\a\x01\x90\r\x13\x00\x00\x00\x00\x02\xff\xff\xff\xbf\x02\x01\x01\xc1\x00$\x00,\x00\x00\x012\x16\x17\x16\x06/\x01\x16\x15\x14\x0e\x01\a\x06&?\x01\x06#\"&'&6\x1f\x01&54676\x16\x0f\x016\x06264&\"\x06\x14\x01a=Z\b\x01\v\b{\r%A'\b\f\x01\f#*=Z\b\x01\v\b{\rQ<\b\f\x01\f#D\x1a\x13\x13\x1a\x13\x01@Q<\b\f\x01\f#*(E-\x05\x01\v\b{\rQ<\b\f\x01\f#*=Z\b\x01\v\b{\r\xa0\x13\x1a\x13\x13\x1a\x00\x00\x00\x05\xff\xfe\xff\xc0\x02\x02\x01\xc2\x00\x12\x00.\x006\x00L\x00j\x00\x007'&676\x16\x1f\x017>\x01\x17\x1e\x01\x0f\x01\x06\"\x172\x16\x1d\x01\x14\x0e\x02+\x01\"&=\x0146;\x017>\x01;\x012\x16\x1f\x01\x06264&\"\x06\x14%2\x16\x0f\x01\x06\"&?\x01#\"&?\x016;\x012\x16\x0f\x01\x136\x16\x1d\x01\x14\x06\"&4632\x175\a\x15\x14\x06\"&4632\x175467ua\x15\x02\x18\x155\x13\n\n\x135\x15\x18\x02\x15a\x04\x0e\x8c\v\x10\x04\b\n\x05\xea\v\x10\x10\v0\a\x03\x0f\bH\b\x0f\x02\b[,\x1e\x1e,\x1e\x01\x97\b\a\x04\\\x04\r\b\x02\x18>\x06\b\x01\x11\x01\vL\x06\b\x02\x16'\x0e\x14&5%%\x1b\b\bp&5%%\x1b\b\b\x0f\v\xe5c\x16>\x14\x12\x05\x13\v\v\x13\x05\x12\x14>\x16c\x05`\x10\v\x8a\x05\n\b\x04\x10\v\x8a\v\x10\x0e\b\n\n\b\x0e\x94\x1e,\x1e\x1e,V\v\x05\x8b\x05\b\x05S\a\x05k\t\b\x053\x01`\x02\x13\x0f\x90\x14\x1c\x1c(\x1c\x020\x12l\x14\x1c\x1c(\x1c\x02k\f\x12\x02\x00\x00\x00\x00\x01\x00\x00\xff\xc0\x02\x00\x01\xc0\x00#\x00\x00%\x16\x15\x14\x0f\x01\x0e\x02#\"\x0054>\x01?\x01632\x1f\x01\x16\x15\x14\x0f\x01\x1e\x01\x177632\x17\x01\xf1\x0f\x01\x18\x01\a\n\x05\xc0\xfe\xf0\x05\t\x05h\x02\x03\x10\x060\x02\t<\x17h21\b\v\x05\x04V\x06\x10\x03\x02h\x05\t\x05\x01\x10\xc0\x05\n\a\x01\x18\x01\x0fp\x04\x05\v\b12h\x17<\t\x02\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00/\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01454/\x01&#\"\x0f\x01.\x01'7654/\x01&#\"#\a\x06\x15\x14\x16327\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01P\tF\x03\x03\a\x05\x1f\x1fA\x0e&\x05\x01\x1e\x04\n\x02\x01A\f\xaax\f\x03\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xcd\x01\x02\n\x04\x1e\x01\x05&\x0eA\x1f\x1f\x05\a\x03\x03F\t\x0f\x03\fx\xaa\f\x00\x00\x00\b\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x10\x00\x1c\x00(\x004\x00@\x00P\x00X\x00_\x00\x00\x012\x16\x15\x11\x14\x06+\x01\x11#\x15#5463\x1754+\x01\"\x1d\x01\x14;\x012\x0554+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\a2\x16\x15\x11\x14\x06#!\"&5\x11463\x16\"\x06\x14\x16264\x055'\a'\a\x15\x02`\r\x13\x13\r\x80\xc0\xa0\x13\rH\t\x1e\t\t\x1e\t\x01`\t\x1e\t\t\x1e\t\t\x1e\t\t\x1e\t\t\x1e\t\t\x1e\t\xa8\r\x13\x13\r\xfe\x80\r\x13\x13\rM\x1a\x13\x13\x1a\x13\x01\x00`\x80 @\x01\xc0\x13\r\xfe\xc0\r\x13\x01@@`\r\x13g\x1e\t\t\x1e\t\xc7\x1e\t\t\x1e\tq\x1e\t\t\x1e\tq\x1e\t\t\x1e\t0\x13\r\xfe\xe0\r\x13\x13\r\x01 \r\x13@\x13\x1a\x13\x13\x1a\xcd``\x80 @ \x00\x00\x00\x00\x03\x00\x00\xff\xbf\x02\x81\x01\xc0\x00\x13\x00;\x00?\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x017\x17\a\x05\x16\x15\x14\x0f\x01\x06#\"'\x01&54?\x01632\x1f\x015463!2\x16\x1d\x01\x14\x06+\x01\"&=\x01#\a'7#\x15\x01P\a\t\t\a\x80\a\t\t\a \x1bC\t\x015\x06\x03\x14\x05\b\x05\x04\xfd\xb3\x06\x03\x14\x05\b\x05\x04s\t\a\x01\xa0\a\t\t\a \a\tv1C v \t\a \a\t\t\a \a\tP4\x1c*\x05\b\x05\x05\x19\x06\x03\x01\xc7\x05\b\x05\x05\x19\x06\x03Y,\a\t\t\a`\a\t\t\a \x944`\x1d\x00\x00\x04\xff\xfd\xff\xe0\x01\xc0\x01\xa0\x00\x15\x005\x00O\x00R\x00\x0072\x16\x0f\x01\x06\"/\x01&6;\x01\x1146;\x012\x16\x15\x117\"&=\x014?\x01#\"&=\x0146;\x012\x16\x1d\x01\x14\x0f\x0132\x16\x1d\x01\x14\x06#\x17\x16\x15\x14\x06+\x01\"/\x01#\a\x06+\x01\"&54?\x016;\x012\x17\a3'\xb0\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\xa0\a\t\v=8\a\t\t\a\x80\a\t\v=8\a\t\t\a\x1f\x01\t\a\x19\f\x03\x05G\x04\x04\v\x19\a\t\x01;\x04\v*\v\x044 \x10`\x14\a`\x05\x05`\a\x14\x010\a\t\t\a\xfeЀ\t\a\x12\x0e\nF\t\a \a\t\t\a\x12\x0e\nF\t\a \a\t\xeb\x02\x03\a\t\v\r\r\v\t\a\x03\x02\xa0\v\ve0\x00\x04\xff\xfd\xff\xe0\x01\xc0\x01\xa0\x00\x15\x005\x00O\x00R\x00\x00\x13\"&?\x0162\x1f\x01\x16\x06+\x01\x11\x14\x06+\x01\"&5\x11\x17\"&=\x014?\x01#\"&=\x0146;\x012\x16\x1d\x01\x14\x0f\x0132\x16\x1d\x01\x14\x06#\x17\x16\x15\x14\x06+\x01\"/\x01#\a\x06+\x01\"&54?\x016;\x012\x17\a3'\x10\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\xe0\a\t\v=8\a\t\t\a\x80\a\t\v=8\a\t\t\a\x1f\x01\t\a\x19\f\x03\x05G\x04\x04\v\x19\a\t\x01;\x04\v*\v\x044 \x10\x01 \x14\a`\x05\x05`\a\x14\xfe\xd0\a\t\t\a\x010@\t\a\x12\x0e\nF\t\a \a\t\t\a\x12\x0e\nF\t\a \a\t\xeb\x02\x03\a\t\v\r\r\v\t\a\x03\x02\xa0\v\ve0\x00\x00\x00\x00\x05\xff\xfd\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00U\x00\x00\x13\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\a\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\x172\x16\x1d\x01\x14\x06#!\"&=\x014635\"&=\x0146;\x012\x16\x1d\x01\x14\x06#!2\x16\x0f\x01\x06\"/\x01&6;\x01\x1146;\x012\x16\x15\x11\xf0\a\t\t\a@\a\t\t\a@\a\t\t\a\x80\a\t\t\a\x80\a\t\t\a\xff\x00\a\t\t\a\a\t\t\a\xc0\a\t\t\a\xff\x00\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\x01`\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t@\t\a \a\t\t\a \a\t\x14\a`\x05\x05`\a\x14\x010\a\t\t\a\xfe\xd0\x00\x05\xff\xfd\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00U\x00\x00\x13\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\a\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\x172\x16\x1d\x01\x14\x06#!\"&=\x014635\"&=\x0146;\x012\x16\x1d\x01\x14\x06#%\"&?\x0162\x1f\x01\x16\x06+\x01\x11\x14\x06+\x01\"&5\x11\xf0\a\t\t\a@\a\t\t\a@\a\t\t\a\x80\a\t\t\a\x80\a\t\t\a\xff\x00\a\t\t\a\a\t\t\a\xc0\a\t\t\a\xfe`\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\x01`\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t@\t\a \a\t\t\a \a\t\xc0\x14\a`\x05\x05`\a\x14\xfe\xd0\a\t\t\a\x010\x00\x00\x00\x00\x04\xff\xfd\xff\xe0\x01\xb1\x01\xa8\x00\x15\x005\x00J\x00R\x00\x0072\x16\x0f\x01\x06\"/\x01&6;\x01\x1146;\x012\x16\x15\x11\x052\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015#\"&54?\x016;\x012\x16\x1d\x01\x036\x16\x1d\x01\x14\x06\a\x06&/\x01&767.\x017>\x01\x16264&\"\x06\x14\xb0\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\x01\x10\a\t\t\a`\a\t\t\a\x10\x10\a\t\x02\x10\x04\n0\a\t6(>*,\x06\r\x02\n\x05\r\f\t$+\n\x05!\x1f\x10\f\f\x10\f`\x14\a`\x05\x05`\a\x14\x010\a\t\t\a\xfe\xd0@\t\a \a\t\t\a \a\t@\t\a\x04\x03 \t\t\ap\x01}\v1'\v3>\x13\x02\x06\x06\x14\x0f\x05\x05\b\x04=&\x12\x1f\\\f\x10\f\f\x10\x00\x00\x00\x00\x04\xff\xfd\xff\xe0\x01\xb1\x01\xa8\x00\x15\x005\x00J\x00R\x00\x00\x13\x17\x16\x06+\x01\x11\x14\x06+\x01\"&5\x11#\"&?\x0162\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015#\"&54?\x016;\x012\x16\x1d\x01\x036\x16\x1d\x01\x14\x06\a\x06&/\x01&767.\x017>\x01\x16264&\"\x06\x14kP\b\b\v0\t\a \a\t0\v\b\bP\x04\x0e\x01)\a\t\t\a`\a\t\t\a\x10\x10\a\t\x02\x10\x04\n0\a\t6(>*,\x06\r\x02\n\x05\r\f\t$+\n\x05!\x1f\x10\f\f\x10\f\x01\x9b`\a\x14\xfe\xd0\a\t\t\a\x010\x14\a`\x05\xfe\x80\t\a \a\t\t\a \a\t@\t\a\x04\x03 \t\t\ap\x01}\v1'\v3>\x13\x02\x06\x06\x14\x0f\x05\x05\b\x04=&\x12\x1f\\\f\x10\f\f\x10\x00\x00\x00\x06\x00\x00\xff\xc0\x02A\x01\xc0\x00\x17\x00\x1f\x00'\x00D\x00G\x00\\\x00\x00%\"&=\x0146;\x012\x16\x17\x14\x15\x14\a\x1e\x01\x15\x14\x15\x0e\x01#'\x153264&#\a\x153264&#'\x17\x16\x15\x14\x06+\x01\"/\x01#\a\x06+\x01\"&54?\x01>\x02;\x012\x16\a3'\x05\x16\x14\x0f\x01\x06\"/\x01&4?\x0162\x1f\x01762\x17\x01\x10\a\t\t\aK 2\x03\t\n\x0f\x022!3(\n\x0e\x0e\n(8\n\x0e\x0e\n\xd5D\x01\t\a\x19\f\x03\fX\f\x03\f\x19\a\t\x01D\x02\t\r\x06\x1a\t\x12?.\x17\x01\xcb\x05\x05\xd0\x04\x0e\x04p\x05\x05-\x05\r\x057\x98\x04\r\x05\xc0\t\a\xe0\a\t*\x1f\x03\x04\x14\x12\t#\x0e\x02\x03 +\xc80\x0e\x14\x0e`0\x0e\x14\x0e\x82\xd6\x02\x02\a\t\f$$\f\t\a\x02\x02\xd6\x06\n\x06\r\x83E\xc9\x05\r\x05\xd0\x05\x05p\x05\r\x05-\x05\x058\x98\x05\x05\x00\x03\x00\x00\x00 \x02\x80\x01@\x00\x16\x00\x1e\x00&\x00\x00\x012\x16\x14\x06#!\"&462\x16\x15\x14\x06\a3.\x01546\x04\x14\x16264&\"\x04264&\"\x06\x14\x01\xf0\x037632\x01\xeaG\xc6G';\x12\x13\x0f(\x0f\x13\x12;\xb6\a\x01\x03\x0e4Bt\x88tB4\x0e\x03\x01\t\a\x06\x05\x02\b\x1d!47K'6d?7\x11\x04\x05\x06\x05\x97\x17\x17\xe9\x0e\f\f\x0e\xc4\x04\t\x03\x03\a\x1eD5++5D\x1e\a\x03\x03\a\t\x04\x02\a\x13\x11\x15\x0f\n\x13\x18\x1f\r\x04\x04\x00\x00\x00\x02\xff\xfb\xff\xe0\x02\x80\x01\x81\x00\x0f\x00-\x00\x00%\x17\x1e\x033!\"'&7>\x0132\x05\x1e\x03\x15\x14\x06#\".\x03/\x01&#\"\a7>\x01?\x01632\x16\x17\x01\x05b!-9<&\xfd\xde\x16\x0e\x0e\x05\x0fZ:5\x01\x16)=\x1d\x0e\x1c\x14\x1d1$+\x1e\x19b6@\x04\x10\x06\x03\x1d\x13\xbf\a\x06\x17%\x03\x9dU\x1c!\x1f\f\x15\x15\x1aFV\x11\x03 ,$\f\x14\x1c\t\x0e\x1c\x17\x17T+\x02A\x13!\x04)\x01\x1f\x16\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\t\x00\x10\x00\x17\x00\x00=\x01!\x15\x14\x06+\x01\"&\x13\x15#546;\x012\x16\x1d\x01#5\x01\x80^B@B^\xb0\xb0^B@B^\xb0`\x80\x80B^^\x01\xa2\xc0 B^^B \xc0\x00\x00\x00\x00\x04\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00\x00\x122\x16\x14\x06\"&4\x16264&\"\x06\x14\x022\x16\x14\x06\"&4\x16264&\"\x06\x14\xd5V==V=^\x14\x0e\x0e\x14\x0eOΑ\x91Α\xc3jKKjK\x01(=V==VC\x0e\x14\x0e\x0e\x14\x01\x02\x91Α\x91\xce\xe7KjKKj\x00\x00\x00\x05\x00\x00\xff\xe0\x02\x80\x01\xc0\x00\a\x00\"\x00*\x00:\x00D\x00\x00$2\x16\x14\x06\"&4\x172\x16\x1d\x01\x14\x06#!\x14\x06\"&5#\"&5\x11463!2\x16\x1d\x01\x04264&\"\x06\x14754&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x1754&+\x01\"\x06\x1d\x01\x01\x99\x0e\t\t\x0e\t\xe0\a\t\t\a\xfe\xb08P8 \x1a&&\x1a\x01`B^\xfel(\x1c\x1c(\x1cp\x13\r\x80\r\x13\x13\r\x80\r\x13\xc0\x13\r@\r\x13\xf0\t\x0e\t\t\x0eg\t\a \a\t(88(&\x1a\x01\x00\x1a&^B\xa0p\x1c(\x1c\x1c(\xd4@\r\x13\x13\r@\r\x13\x13s\xc0\r\x13\x13\r\xc0\x00\x00\x00\x00\b\x00\x00\xff\xe0\x02\x80\x01\x80\x00\x1a\x00#\x00-\x006\x00>\x00F\x00N\x00V\x00\x00%2\x16\x1d\x01\x14\x06#!.\x01\"\x06\a#\"&5\x11463!2\x16\x1d\x01%54+\x01\"\x1d\x016754+\x01\"\x1d\x0162\x1754+\x01\"\x1d\x01\x16\x1754+\x01\"\x1d\x01354+\x01\"\x1d\x01 2\x16\x14\x06\"&4\x16264&\"\x06\x14\x02p\a\t\t\a\xfe\xae\x06>T>\x062\a\t\t\a\x02\x00\a\t\xfe@\b\x10\b\x0fq\b\x10\b\f\bl\b\x10\b\x11o\b\x10\b\x80\b\x10\b\xfe\xcfB//B/C\x1a\x13\x13\x1a\x13\x80\t\a \a\t)77)\t\a\x01 \a\t\t\a\xf0Ll\b\b\x80\f\x1bY\b\bY\x01(\x80\b\bl\bD\xb8\b\b\xb8\xb8\b\b\xb8/B//BA\x13\x1a\x13\x13\x1a\x00\x00\x00\x1c\x01V\x00\x01\x00\x00\x00\x00\x00\x00\x00\x1a\x006\x00\x01\x00\x00\x00\x00\x00\x01\x00\x19\x00\x85\x00\x01\x00\x00\x00\x00\x00\x02\x00\x05\x00\xab\x00\x01\x00\x00\x00\x00\x00\x03\x00 \x00\xf3\x00\x01\x00\x00\x00\x00\x00\x04\x00\x19\x01H\x00\x01\x00\x00\x00\x00\x00\x05\x00&\x01\xb0\x00\x01\x00\x00\x00\x00\x00\x06\x00\x16\x02\x05\x00\x01\x00\x00\x00\x00\x00\n\x00,\x02v\x00\x01\x00\x00\x00\x00\x00\v\x00\x17\x02\xd3\x00\x01\x00\x00\x00\x00\x00\x10\x00\x13\x03\x13\x00\x01\x00\x00\x00\x00\x00\x11\x00\x05\x033\x00\x01\x00\x00\x00\x00\x00\x12\x00\x19\x03m\x00\x01\x00\x00\x00\x00\x00\x15\x00\x13\x03\xaf\x00\x01\x00\x00\x00\x00\x00\x16\x00\x05\x03\xcf\x00\x03\x00\x01\x04\t\x00\x00\x004\x00\x00\x00\x03\x00\x01\x04\t\x00\x01\x002\x00Q\x00\x03\x00\x01\x04\t\x00\x02\x00\n\x00\x9f\x00\x03\x00\x01\x04\t\x00\x03\x00@\x00\xb1\x00\x03\x00\x01\x04\t\x00\x04\x002\x01\x14\x00\x03\x00\x01\x04\t\x00\x05\x00L\x01b\x00\x03\x00\x01\x04\t\x00\x06\x00,\x01\xd7\x00\x03\x00\x01\x04\t\x00\n\x00X\x02\x1c\x00\x03\x00\x01\x04\t\x00\v\x00.\x02\xa3\x00\x03\x00\x01\x04\t\x00\x10\x00&\x02\xeb\x00\x03\x00\x01\x04\t\x00\x11\x00\n\x03'\x00\x03\x00\x01\x04\t\x00\x12\x002\x039\x00\x03\x00\x01\x04\t\x00\x15\x00&\x03\x87\x00\x03\x00\x01\x04\t\x00\x16\x00\n\x03\xc3\x00C\x00o\x00p\x00y\x00r\x00i\x00g\x00h\x00t\x00 \x00(\x00c\x00)\x00 \x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00\x00Copyright (c) Font Awesome\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00 \x00S\x00o\x00l\x00i\x00d\x00\x00Font Awesome 5 Free Solid\x00\x00S\x00o\x00l\x00i\x00d\x00\x00Solid\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00 \x00S\x00o\x00l\x00i\x00d\x00-\x005\x00.\x001\x002\x00.\x000\x00\x00Font Awesome 5 Free Solid-5.12.0\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00 \x00S\x00o\x00l\x00i\x00d\x00\x00Font Awesome 5 Free Solid\x00\x003\x003\x000\x00.\x007\x005\x002\x00 \x00(\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x00v\x00e\x00r\x00s\x00i\x00o\x00n\x00:\x00 \x005\x00.\x001\x002\x00.\x000\x00)\x00\x00330.752 (Font Awesome version: 5.12.0)\x00\x00F\x00o\x00n\x00t\x00A\x00w\x00e\x00s\x00o\x00m\x00e\x005\x00F\x00r\x00e\x00e\x00-\x00S\x00o\x00l\x00i\x00d\x00\x00FontAwesome5Free-Solid\x00\x00T\x00h\x00e\x00 \x00w\x00e\x00b\x00'\x00s\x00 \x00m\x00o\x00s\x00t\x00 \x00p\x00o\x00p\x00u\x00l\x00a\x00r\x00 \x00i\x00c\x00o\x00n\x00 \x00s\x00e\x00t\x00 \x00a\x00n\x00d\x00 \x00t\x00o\x00o\x00l\x00k\x00i\x00t\x00.\x00\x00The web's most popular icon set and toolkit.\x00\x00h\x00t\x00t\x00p\x00s\x00:\x00/\x00/\x00f\x00o\x00n\x00t\x00a\x00w\x00e\x00s\x00o\x00m\x00e\x00.\x00c\x00o\x00m\x00\x00https://fontawesome.com\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00\x00Font Awesome 5 Free\x00\x00S\x00o\x00l\x00i\x00d\x00\x00Solid\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00 \x00S\x00o\x00l\x00i\x00d\x00\x00Font Awesome 5 Free Solid\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00\x00Font Awesome 5 Free\x00\x00S\x00o\x00l\x00i\x00d\x00\x00Solid\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\xff\xdb\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xc7\x00\x00\x00\x01\x00\x02\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01\a\x01\b\x01\t\x01\n\x01\v\x01\f\x01\r\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01!\x01\"\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01+\x01,\x01-\x01.\x01/\x010\x011\x012\x013\x014\x015\x016\x017\x018\x019\x01:\x01;\x01<\x01=\x01>\x01?\x01@\x01A\x01B\x01C\x01D\x01E\x01F\x01G\x01H\x01I\x01J\x01K\x01L\x01M\x01N\x01O\x01P\x01Q\x01R\x01S\x01T\x01U\x00\x0e\x00\xef\x00\r\x01V\x01W\x01X\x01Y\x01Z\x01[\x01\\\x01]\x01^\x01_\x01`\x01a\x01b\x01c\x01d\x01e\x01f\x01g\x01h\x01i\x01j\x01k\x01l\x01m\x01n\x01o\x01p\x01q\x01r\x01s\x01t\x01u\x01v\x01w\x01x\x01y\x01z\x01{\x01|\x01}\x01~\x01\u007f\x01\x80\x01\x81\x01\x82\x01\x83\x01\x84\x01\x85\x01\x86\x01\x87\x01\x88\x01\x89\x01\x8a\x01\x8b\x01\x8c\x01\x8d\x01\x8e\x01\x8f\x01\x90\x01\x91\x01\x92\x01\x93\x01\x94\x01\x95\x01\x96\x01\x97\x01\x98\x01\x99\x01\x9a\x01\x9b\x01\x9c\x01\x9d\x01\x9e\x01\x9f\x01\xa0\x01\xa1\x01\xa2\x01\xa3\x01\xa4\x01\xa5\x01\xa6\x01\xa7\x01\xa8\x01\xa9\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xae\x01\xaf\x01\xb0\x01\xb1\x01\xb2\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xb8\x01\xb9\x01\xba\x01\xbb\x01\xbc\x01\xbd\x01\xbe\x01\xbf\x01\xc0\x01\xc1\x01\xc2\x01\xc3\x01\xc4\x01\xc5\x01\xc6\x01\xc7\x01\xc8\x01\xc9\x01\xca\x01\xcb\x01\xcc\x01\xcd\x01\xce\x01\xcf\x01\xd0\x01\xd1\x01\xd2\x00\"\x01\xd3\x01\xd4\x01\xd5\x01\xd6\x01\xd7\x01\xd8\x01\xd9\x01\xda\x01\xdb\x01\xdc\x01\xdd\x01\xde\x01\xdf\x01\xe0\x01\xe1\x01\xe2\x01\xe3\x01\xe4\x01\xe5\x01\xe6\x01\xe7\x01\xe8\x01\xe9\x01\xea\x01\xeb\x01\xec\x01\xed\x01\xee\x01\xef\x01\xf0\x01\xf1\x01\xf2\x01\xf3\x01\xf4\x01\xf5\x01\xf6\x01\xf7\x01\xf8\x01\xf9\x01\xfa\x01\xfb\x01\xfc\x01\xfd\x01\xfe\x01\xff\x02\x00\x02\x01\x02\x02\x02\x03\x02\x04\x02\x05\x02\x06\x02\a\x02\b\x02\t\x02\n\x02\v\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\"\x02#\x02$\x02%\x02&\x02'\x02(\x02)\x00\x88\x02*\x02+\x02,\x02-\x02.\x02/\x020\x021\x022\x023\x024\x025\x026\x00\x8b\x00#\x027\x028\x029\x02:\x02;\x02<\x02=\x02>\x02?\x02@\x02A\x02B\x02C\x02D\x02E\x02F\x02G\x02H\x02I\x02J\x02K\x02L\x02M\x02N\x02O\x02P\x02Q\x02R\x02S\x02T\x02U\x02V\x02W\x02X\x02Y\x02Z\x02[\x02\\\x02]\x02^\x02_\x02`\x02a\x02b\x02c\x02d\x02e\x02f\x02g\x02h\x02i\x02j\x02k\x02l\x02m\x02n\x02o\x02p\x02q\x02r\x02s\x00\x8c\x00\x8a\x02t\x02u\x02v\x02w\x02x\x02y\x02z\x02{\x02|\x02}\x02~\x02\u007f\x02\x80\x02\x81\x02\x82\x00\b\x02\x83\x02\x84\x02\x85\x02\x86\x02\x87\x02\x88\x02\x89\x02\x8a\x02\x8b\x02\x8c\x02\x8d\x02\x8e\x02\x8f\x02\x90\x02\x91\x02\x92\x02\x93\x02\x94\x02\x95\x02\x96\x02\x97\x02\x98\x02\x99\x02\x9a\x02\x9b\x02\x9c\x02\x9d\x02\x9e\x02\x9f\x02\xa0\x02\xa1\x02\xa2\x02\xa3\x02\xa4\x02\xa5\x02\xa6\x02\xa7\x02\xa8\x02\xa9\x02\xaa\x02\xab\x02\xac\x02\xad\x02\xae\x02\xaf\x02\xb0\x02\xb1\x02\xb2\x02\xb3\x02\xb4\x02\xb5\x02\xb6\x02\xb7\x02\xb8\x02\xb9\x02\xba\x02\xbb\x02\xbc\x02\xbd\x02\xbe\x02\xbf\x02\xc0\x02\xc1\x02\xc2\x02\xc3\x02\xc4\x02\xc5\x02\xc6\x02\xc7\x02\xc8\x02\xc9\x02\xca\x02\xcb\x02\xcc\x02\xcd\x02\xce\x02\xcf\x02\xd0\x02\xd1\x02\xd2\x02\xd3\x02\xd4\x02\xd5\x02\xd6\x02\xd7\x02\xd8\x02\xd9\x02\xda\x02\xdb\x02\xdc\x02\xdd\x02\xde\x02\xdf\x02\xe0\x02\xe1\x02\xe2\x02\xe3\x02\xe4\x02\xe5\x02\xe6\x02\xe7\x02\xe8\x02\xe9\x02\xea\x02\xeb\x02\xec\x02\xed\x02\xee\x02\xef\x02\xf0\x02\xf1\x02\xf2\x02\xf3\x02\xf4\x02\xf5\x02\xf6\x02\xf7\x02\xf8\x02\xf9\x02\xfa\x02\xfb\x02\xfc\x02\xfd\x02\xfe\x02\xff\x03\x00\x03\x01\x03\x02\x03\x03\x03\x04\x03\x05\x03\x06\x03\a\x03\b\x03\t\x03\n\x03\v\x03\f\x03\r\x03\x0e\x03\x0f\x03\x10\x03\x11\x03\x12\x03\x13\x03\x14\x03\x15\x03\x16\x03\x17\x03\x18\x03\x19\x03\x1a\x03\x1b\x03\x1c\x03\x1d\x03\x1e\x03\x1f\x03 \x03!\x03\"\x03#\x03$\x03%\x03&\x03'\x03(\x03)\x03*\x03+\x03,\x03-\x03.\x03/\x030\x031\x032\x033\x034\x035\x036\x037\x038\x039\x03:\x03;\x03<\x03=\x03>\x03?\x03@\x03A\x03B\x03C\x03D\x00\xb8\x03E\x03F\x03G\x03H\x03I\x03J\x03K\x03L\x03M\x03N\x00\x92\x03O\x03P\x03Q\x03R\x03S\x03T\x03U\x03V\x03W\x03X\x03Y\x03Z\x03[\x03\\\x03]\x03^\x03_\x03`\x03a\x03b\x03c\x03d\x03e\x03f\x03g\x03h\x03i\x03j\x03k\x03l\x03m\x03n\x03o\x03p\x03q\x03r\x03s\x03t\x03u\x03v\x03w\x03x\x03y\x03z\x03{\x03|\x03}\x03~\x03\u007f\x03\x80\x03\x81\x03\x82\x03\x83\x03\x84\x03\x85\x03\x86\x03\x87\x03\x88\x03\x89\x03\x8a\x03\x8b\x03\x8c\x03\x8d\x03\x8e\x03\x8f\x03\x90\x03\x91\x03\x92\x03\x93\x03\x94\x03\x95\x03\x96\x03\x97\x03\x98\x03\x99\x03\x9a\x03\x9b\x03\x9c\x03\x9d\x03\x9e\x03\x9f\x03\xa0\x03\xa1\x03\xa2\x03\xa3\x03\xa4\x03\xa5\x03\xa6\x03\xa7\x03\xa8\x03\xa9\x03\xaa\x03\xab\x03\xac\x03\xad\x03\xae\x03\xaf\x03\xb0\x03\xb1\x03\xb2\x03\xb3\x03\xb4\x03\xb5\x03\xb6\x03\xb7\x03\xb8\x03\xb9\x03\xba\x03\xbb\x03\xbc\x03\xbd\x03\xbe\x03\xbf\x03\xc0\x03\xc1\x03\xc2\x03\xc3\x03\xc4\x03\xc5\x03\xc6\x03\xc7\x03\xc8\x03\xc9\x03\xca\x03\xcb\x03\xcc\x03\xcd\x03\xce\x03\xcf\x03\xd0\x03\xd1\x03\xd2\x03\xd3\x03\xd4\x03\xd5\x03\xd6\x03\xd7\x03\xd8\x03\xd9\x03\xda\x03\xdb\x03\xdc\x03\xdd\x03\xde\x03\xdf\x03\xe0\x03\xe1\x03\xe2\x03\xe3\x03\xe4\x03\xe5\x03\xe6\x03\xe7\x03\xe8\x03\xe9\x03\xea\x03\xeb\x03\xec\x03\xed\x03\xee\x03\xef\x03\xf0\x03\xf1\x03\xf2\x03\xf3\x03\xf4\x03\xf5\x03\xf6\x03\xf7\x03\xf8\x03\xf9\x03\xfa\x03\xfb\x03\xfc\x03\xfd\x03\xfe\x03\xff\x04\x00\x04\x01\x04\x02\x04\x03\x04\x04\x04\x05\x04\x06\x04\a\x04\b\x04\t\x04\n\x04\v\x04\f\x04\r\x04\x0e\x04\x0f\x04\x10\x04\x11\x04\x12\x04\x13\x04\x14\x04\x15\x04\x16\x04\x17\x04\x18\x04\x19\x04\x1a\x04\x1b\x04\x1c\x04\x1d\x04\x1e\x04\x1f\x04 \x04!\x04\"\x04#\x04$\x04%\x04&\x04'\x04(\x04)\x04*\x04+\x04,\x04-\x04.\x04/\x040\x041\x042\x043\x044\x045\x046\x047\x048\x049\x04:\x04;\x04<\x04=\x04>\x04?\x04@\x00\xdd\x04A\x04B\x04C\x00\x12\x04D\x04E\x04F\x04G\x04H\x04I\x04J\x04K\x04L\x04M\x04N\x04O\x04P\x04Q\x04R\x04S\x04T\x04U\x04V\x04W\x04X\x04Y\x04Z\x04[\x04\\\x04]\x04^\x04_\x04`\x04a\x04b\x04c\x04d\x04e\x04f\x04g\x04h\x04i\x04j\x04k\x04l\x04m\x04n\x04o\x04p\x04q\x04r\x04s\x04t\x04u\x04v\x04w\x04x\x04y\x04z\x04{\x04|\x04}\x04~\x04\u007f\x04\x80\x04\x81\x04\x82\x04\x83\x04\x84\x04\x85\x04\x86\x04\x87\x04\x88\x04\x89\x04\x8a\x04\x8b\x04\x8c\x04\x8d\x04\x8e\x04\x8f\x04\x90\x04\x91\x04\x92\x04\x93\x04\x94\x04\x95\x04\x96\x04\x97\x04\x98\x04\x99\x04\x9a\x04\x9b\x04\x9c\x04\x9d\x04\x9e\x04\x9f\x04\xa0\x04\xa1\x04\xa2\x04\xa3\x04\xa4\x04\xa5\x04\xa6\x04\xa7\x04\xa8\x04\xa9\x04\xaa\x04\xab\x04\xac\x04\xad\x04\xae\x04\xaf\x04\xb0\x04\xb1\x04\xb2\x04\xb3\x04\xb4\x04\xb5\x04\xb6\x04\xb7\rglass-martini\x05music\x06search\x05heart\x04star\x04user\x04film\bth-large\x02th\ath-list\x05check\x05times\vsearch-plus\fsearch-minus\tpower-off\x06signal\x03cog\x04home\x05clock\x04road\bdownload\x05inbox\x04redo\x04sync\blist-alt\x04lock\x04flag\nheadphones\nvolume-off\vvolume-down\tvolume-up\x06qrcode\abarcode\x03tag\x04tags\x04book\bbookmark\x05print\x06camera\x04font\x04bold\x06italic\vtext-height\ntext-width\nalign-left\falign-center\valign-right\ralign-justify\x04list\aoutdent\x06indent\x05video\x05image\nmap-marker\x06adjust\x04tint\x04edit\rstep-backward\rfast-backward\bbackward\x04play\x05pause\x04stop\aforward\ffast-forward\fstep-forward\x05eject\fchevron-left\rchevron-right\vplus-circle\fminus-circle\ftimes-circle\fcheck-circle\x0fquestion-circle\vinfo-circle\ncrosshairs\x03ban\narrow-left\varrow-right\barrow-up\narrow-down\x05share\x06expand\bcompress\x12exclamation-circle\x04gift\x04leaf\x04fire\x03eye\teye-slash\x14exclamation-triangle\x05plane\fcalendar-alt\x06random\acomment\x06magnet\nchevron-up\fchevron-down\aretweet\rshopping-cart\x06folder\vfolder-open\tchart-bar\fcamera-retro\x03key\x04cogs\bcomments\tstar-half\tthumbtack\x06trophy\x06upload\x05lemon\x05phone\fphone-square\x06unlock\vcredit-card\x03rss\x03hdd\bbullhorn\vcertificate\x10hand-point-right\x0fhand-point-left\rhand-point-up\x0fhand-point-down\x11arrow-circle-left\x12arrow-circle-right\x0farrow-circle-up\x11arrow-circle-down\x05globe\x06wrench\x05tasks\x06filter\tbriefcase\narrows-alt\x05users\x04link\x05cloud\x05flask\x03cut\x04copy\tpaperclip\x04save\x06square\x04bars\alist-ul\alist-ol\rstrikethrough\tunderline\x05table\x05magic\x05truck\nmoney-bill\ncaret-down\bcaret-up\ncaret-left\vcaret-right\acolumns\x04sort\tsort-down\asort-up\benvelope\x04undo\x05gavel\x04bolt\asitemap\bumbrella\x05paste\tlightbulb\auser-md\vstethoscope\bsuitcase\x04bell\x06coffee\bhospital\tambulance\x06medkit\vfighter-jet\x04beer\bh-square\vplus-square\x11angle-double-left\x12angle-double-right\x0fangle-double-up\x11angle-double-down\nangle-left\vangle-right\bangle-up\nangle-down\adesktop\x06laptop\x06tablet\x06mobile\nquote-left\vquote-right\aspinner\x06circle\x05smile\x05frown\x03meh\agamepad\bkeyboard\x0eflag-checkered\bterminal\x04code\treply-all\x0elocation-arrow\x04crop\vcode-branch\x06unlink\x04info\vexclamation\vsuperscript\tsubscript\x06eraser\fpuzzle-piece\nmicrophone\x10microphone-slash\bcalendar\x11fire-extinguisher\x06rocket\x13chevron-circle-left\x14chevron-circle-right\x11chevron-circle-up\x13chevron-circle-down\x06anchor\nunlock-alt\bbullseye\nellipsis-h\nellipsis-v\nrss-square\vplay-circle\fminus-square\fcheck-square\npen-square\fshare-square\acompass\x11caret-square-down\x0fcaret-square-up\x12caret-square-right\teuro-sign\npound-sign\vdollar-sign\nrupee-sign\byen-sign\nruble-sign\bwon-sign\x04file\bfile-alt\x0fsort-alpha-down\rsort-alpha-up\x10sort-amount-down\x0esort-amount-up\x11sort-numeric-down\x0fsort-numeric-up\tthumbs-up\vthumbs-down\x06female\x04male\x03sun\x04moon\aarchive\x03bug\x11caret-square-left\ndot-circle\nwheelchair\tlira-sign\rspace-shuttle\x0fenvelope-square\nuniversity\x0egraduation-cap\blanguage\x03fax\bbuilding\x05child\x03paw\x04cube\x05cubes\arecycle\x03car\x04taxi\x04tree\bdatabase\bfile-pdf\tfile-word\nfile-excel\x0ffile-powerpoint\nfile-image\ffile-archive\nfile-audio\nfile-video\tfile-code\tlife-ring\fcircle-notch\vpaper-plane\ahistory\aheading\tsliders-h\tshare-alt\x10share-alt-square\x04bomb\x06futbol\x03tty\nbinoculars\x04plug\tnewspaper\x04wifi\ncalculator\nbell-slash\x05trash\veye-dropper\vpaint-brush\rbirthday-cake\nchart-area\tchart-pie\nchart-line\ntoggle-off\ttoggle-on\abicycle\x03bus\x11closed-captioning\vshekel-sign\tcart-plus\x0fcart-arrow-down\x04ship\vuser-secret\nmotorcycle\vstreet-view\theartbeat\x05venus\x04mars\amercury\vtransgender\x0ftransgender-alt\fvenus-double\vmars-double\nvenus-mars\vmars-stroke\rmars-stroke-v\rmars-stroke-h\x06neuter\ngenderless\x06server\tuser-plus\nuser-times\x03bed\x05train\x06subway\fbattery-full\x16battery-three-quarters\fbattery-half\x0fbattery-quarter\rbattery-empty\rmouse-pointer\bi-cursor\fobject-group\x0eobject-ungroup\vsticky-note\x05clone\rbalance-scale\x0fhourglass-start\x0ehourglass-half\rhourglass-end\thourglass\thand-rock\nhand-paper\rhand-scissors\vhand-lizard\nhand-spock\fhand-pointer\nhand-peace\x02tv\rcalendar-plus\x0ecalendar-minus\x0ecalendar-times\x0ecalendar-check\bindustry\amap-pin\tmap-signs\x03map\vcomment-alt\fpause-circle\vstop-circle\fshopping-bag\x0fshopping-basket\ahashtag\x10universal-access\x05blind\x11audio-description\fphone-volume\abraille\x1bassistive-listening-systems#american-sign-language-interpreting\x04deaf\rsign-language\nlow-vision\thandshake\renvelope-open\faddress-book\faddress-card\vuser-circle\bid-badge\aid-card\x10thermometer-full\x1athermometer-three-quarters\x10thermometer-half\x13thermometer-quarter\x11thermometer-empty\x06shower\x04bath\apodcast\x0fwindow-maximize\x0fwindow-minimize\x0ewindow-restore\tmicrochip\tsnowflake\rutensil-spoon\butensils\bundo-alt\ttrash-alt\bsync-alt\tstopwatch\fsign-out-alt\vsign-in-alt\bredo-alt\x03poo\x06images\npencil-alt\x03pen\apen-alt\x13long-arrow-alt-down\x13long-arrow-alt-left\x14long-arrow-alt-right\x11long-arrow-alt-up\x11expand-arrows-alt\tclipboard\farrows-alt-h\farrows-alt-v\x15arrow-alt-circle-down\x15arrow-alt-circle-left\x16arrow-alt-circle-right\x13arrow-alt-circle-up\x11external-link-alt\x18external-link-square-alt\fexchange-alt\x12cloud-download-alt\x10cloud-upload-alt\x03gem\x0elevel-down-alt\flevel-up-alt\tlock-open\x0emap-marker-alt\x0emicrophone-alt\nmobile-alt\x0emoney-bill-alt\vphone-slash\bportrait\x05reply\nshield-alt\ntablet-alt\x0etachometer-alt\nticket-alt\buser-alt\fwindow-close\fcompress-alt\nexpand-alt\rbaseball-ball\x0fbasketball-ball\fbowling-ball\x05chess\fchess-bishop\vchess-board\nchess-king\fchess-knight\nchess-pawn\vchess-queen\nchess-rook\bdumbbell\rfootball-ball\tgolf-ball\vhockey-puck\tquidditch\vsquare-full\ftable-tennis\x0fvolleyball-ball\tallergies\bband-aid\x03box\x05boxes\x11briefcase-medical\x04burn\bcapsules\x0fclipboard-check\x0eclipboard-list\tdiagnoses\x03dna\x05dolly\rdolly-flatbed\ffile-medical\x10file-medical-alt\tfirst-aid\fhospital-alt\x0fhospital-symbol\vid-card-alt\rnotes-medical\x06pallet\x05pills\x13prescription-bottle\x17prescription-bottle-alt\nprocedures\rshipping-fast\asmoking\asyringe\atablets\vthermometer\x04vial\x05vials\twarehouse\x06weight\x05x-ray\bbox-open\fcomment-dots\rcomment-slash\x05couch\x06donate\x04dove\fhand-holding\x12hand-holding-heart\x10hand-holding-usd\x05hands\rhands-helping\rparachute-box\fpeople-carry\npiggy-bank\x06ribbon\x05route\bseedling\x04sign\nsmile-wink\x04tape\rtruck-loading\ftruck-moving\vvideo-slash\nwine-glass\x0euser-alt-slash\x0euser-astronaut\nuser-check\nuser-clock\buser-cog\tuser-edit\fuser-friends\ruser-graduate\tuser-lock\nuser-minus\nuser-ninja\vuser-shield\nuser-slash\buser-tag\buser-tie\tusers-cog\x12balance-scale-left\x13balance-scale-right\ablender\tbook-open\x0fbroadcast-tower\x05broom\nchalkboard\x12chalkboard-teacher\x06church\x05coins\fcompact-disc\x04crow\x05crown\x04dice\tdice-five\tdice-four\bdice-one\bdice-six\ndice-three\bdice-two\vdoor-closed\tdoor-open\x06equals\afeather\x04frog\bgas-pump\aglasses\fgreater-than\x12greater-than-equal\nhelicopter\tkiwi-bird\tless-than\x0fless-than-equal\x06memory\x14microphone-alt-slash\x0fmoney-bill-wave\x13money-bill-wave-alt\vmoney-check\x0fmoney-check-alt\tnot-equal\apalette\aparking\npercentage\x0fproject-diagram\areceipt\x05robot\x05ruler\x0eruler-combined\x10ruler-horizontal\x0eruler-vertical\x06school\vscrewdriver\vshoe-prints\x05skull\vsmoking-ban\x05store\tstore-alt\x06stream\vstroopwafel\atoolbox\x06tshirt\awalking\x06wallet\x05angry\aarchway\x05atlas\x05award\tbackspace\fbezier-curve\x04bong\x05brush\abus-alt\bcannabis\fcheck-double\bcocktail\x0econcierge-bell\x06cookie\vcookie-bite\bcrop-alt\x12digital-tachograph\x05dizzy\x10drafting-compass\x04drum\rdrum-steelpan\vfeather-alt\rfile-contract\rfile-download\vfile-export\vfile-import\ffile-invoice\x13file-invoice-dollar\x11file-prescription\x0efile-signature\vfile-upload\x04fill\tfill-drip\vfingerprint\x04fish\aflushed\nfrown-open\x11glass-martini-alt\fglobe-africa\x0eglobe-americas\nglobe-asia\agrimace\x04grin\bgrin-alt\tgrin-beam\x0fgrin-beam-sweat\vgrin-hearts\vgrin-squint\x11grin-squint-tears\ngrin-stars\ngrin-tears\vgrin-tongue\x12grin-tongue-squint\x10grin-tongue-wink\tgrin-wink\x0fgrip-horizontal\rgrip-vertical\x0eheadphones-alt\aheadset\vhighlighter\ahot-tub\x05hotel\x05joint\x04kiss\tkiss-beam\x0fkiss-wink-heart\x05laugh\nlaugh-beam\flaugh-squint\nlaugh-wink\fluggage-cart\nmap-marked\x0emap-marked-alt\x06marker\x05medal\tmeh-blank\x10meh-rolling-eyes\bmonument\rmortar-pestle\fpaint-roller\bpassport\tpen-fancy\apen-nib\fpencil-ruler\rplane-arrival\x0fplane-departure\fprescription\asad-cry\bsad-tear\vshuttle-van\tsignature\nsmile-beam\vsolar-panel\x03spa\asplotch\tspray-can\x05stamp\rstar-half-alt\x10suitcase-rolling\bsurprise\nswatchbook\aswimmer\rswimming-pool\ntint-slash\x05tired\x05tooth\x0eumbrella-beach\rvector-square\x0eweight-hanging\x0ewine-glass-alt\rair-freshener\tapple-alt\x04atom\x04bone\vbook-reader\x05brain\acar-alt\vcar-battery\tcar-crash\bcar-side\x10charging-station\ndirections\fdraw-polygon\vlaptop-code\vlayer-group\nmicroscope\aoil-can\x04poop\x06shapes\fstar-of-life\x05teeth\nteeth-open\rtheater-masks\rtraffic-light\rtruck-monster\ftruck-pickup\x02ad\x04ankh\x05bible\rbusiness-time\x04city\x0ecomment-dollar\x0fcomments-dollar\x05cross\fdharmachakra\x12envelope-open-text\ffolder-minus\vfolder-plus\rfunnel-dollar\agopuram\x05hamsa\x05bahai\x04jedi\x0ejournal-whills\x05kaaba\x06khanda\blandmark\tmail-bulk\amenorah\x06mosque\x02om\x0epastafarianism\x05peace\x10place-of-worship\x04poll\x06poll-h\x04pray\rpraying-hands\x05quran\rsearch-dollar\x0fsearch-location\x05socks\x0fsquare-root-alt\x11star-and-crescent\rstar-of-david\tsynagogue\x05torah\ntorii-gate\x06vihara\vvolume-mute\byin-yang\rblender-phone\tbook-dead\ncampground\x03cat\x05chair\ncloud-moon\tcloud-sun\bdice-d20\adice-d6\x03dog\x06dragon\x0edrumstick-bite\adungeon\bfile-csv\vfist-raised\x05ghost\x06hammer\bhanukiah\nhat-wizard\x06hiking\x05hippo\x05horse\fhouse-damage\ahryvnia\x04mask\bmountain\rnetwork-wired\x05otter\arunning\x06scroll\x10skull-crossbones\x06spider\ftoilet-paper\atractor\fuser-injured\fvr-cardboard\x04wind\vwine-bottle\x0ecloud-meatball\x0fcloud-moon-rain\ncloud-rain\x13cloud-showers-heavy\x0ecloud-sun-rain\bdemocrat\bflag-usa\x06meteor\fperson-booth\tpoo-storm\arainbow\nrepublican\x04smog\x10temperature-high\x0ftemperature-low\bvote-yea\x05water\x04baby\rbaby-carriage\tbiohazard\x04blog\fcalendar-day\rcalendar-week\ncandy-cane\x06carrot\rcash-register\x13compress-arrows-alt\bdumpster\rdumpster-fire\bethernet\x05gifts\fglass-cheers\rglass-whiskey\fglobe-europe\ngrip-lines\x13grip-lines-vertical\x06guitar\fheart-broken\vholly-berry\nhorse-head\aicicles\x05igloo\x06mitten\amug-hot\tradiation\rradiation-alt\brestroom\tsatellite\x0esatellite-dish\asd-card\bsim-card\askating\x06skiing\rskiing-nordic\x06sleigh\x03sms\fsnowboarding\asnowman\bsnowplow\x05tenge\x06toilet\x05tools\x04tram\bfire-alt\x05bacon\fbook-medical\vbread-slice\x06cheese\x0eclinic-medical\x0fcomment-medical\x06crutch\x03egg\thamburger\x12hand-middle-finger\bhard-hat\x06hotdog\tice-cream\x0elaptop-medical\x05pager\npepper-hot\vpizza-slice\rtrash-restore\x11trash-restore-alt\nuser-nurse\vwave-square\x06biking\nborder-all\vborder-none\fborder-style\x03fan\x05icons\tphone-alt\x10phone-square-alt\vphoto-video\rremove-format\x13sort-alpha-down-alt\x11sort-alpha-up-alt\x14sort-amount-down-alt\x12sort-amount-up-alt\x15sort-numeric-down-alt\x13sort-numeric-up-alt\vspell-check\tvoicemail\nhat-cowboy\x0fhat-cowboy-side\x05mouse\frecord-vinyl\acaravan\atrailer\x00\x00\x00\x00\x00\x00\x01\xff\xff\x00\x02\x00\x01\x00\x00\x00\f\x00\x00\x00\x16\x00\x00\x00\x02\x00\x01\x00\x03\x03\xc6\x00\x02\x00\x04\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\xd9k%\xf9\x00\x00\x00\x00\xda\x15\xc8\v\x00\x00\x00\x00\xda\x15\xc8\x11" var _Assetsb83960ccf65b57d0332e33d148e2165646ceb9bb = "package gateway\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\tgopath \"path\"\n\t\"strings\"\n\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/gin-gonic/gin/render\"\n\tfiles \"github.com/ipfs/go-ipfs-files\"\n\tiface \"github.com/ipfs/interface-go-ipfs-core\"\n\t\"github.com/ipfs/interface-go-ipfs-core/path\"\n\t\"github.com/libp2p/go-libp2p-core/peer\"\n\t\"github.com/textileio/textile/v2/util\"\n)\n\nfunc (g *Gateway) ipfsHandler(c *gin.Context) {\n\tbase := fmt.Sprintf(\"ipfs/%s\", c.Param(\"root\"))\n\tpth := fmt.Sprintf(\"/%s%s\", base, c.Param(\"path\"))\n\tg.renderIPFSPath(c, base, pth)\n}\n\nfunc (g *Gateway) renderIPFSPath(c *gin.Context, base, pth string) {\n\tctx, cancel := context.WithTimeout(context.Background(), handlerTimeout)\n\tdefer cancel()\n\tpth = strings.TrimSuffix(pth, \"/\")\n\tdata, err := g.openPath(ctx, path.New(pth))\n\tif err != nil {\n\t\tif err == iface.ErrIsDir {\n\t\t\tvar root, dir, back string\n\t\t\tparts := strings.Split(pth, \"/\")\n\t\t\tif len(parts) > 2 {\n\t\t\t\troot = strings.Join(parts[:3], \"/\")\n\t\t\t\tdir = strings.Join(parts[3:], \"/\")\n\t\t\t\tback = gopath.Dir(dir)\n\t\t\t}\n\t\t\tif dir == \"\" {\n\t\t\t\tback = \"\"\n\t\t\t}\n\t\t\tif !g.subdomains {\n\t\t\t\tdir = gopath.Join(base, dir)\n\t\t\t\tif back != \"\" {\n\t\t\t\t\tback = gopath.Join(base, back)\n\t\t\t\t}\n\t\t\t}\n\t\t\tlctx, lcancel := context.WithTimeout(context.Background(), handlerTimeout)\n\t\t\tdefer lcancel()\n\t\t\tilinks, err := g.ipfs.Object().Links(lctx, path.New(pth))\n\t\t\tif err != nil {\n\t\t\t\trenderError(c, http.StatusNotFound, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tvar links []link\n\t\t\tfor _, l := range ilinks {\n\t\t\t\tlinks = append(links, link{\n\t\t\t\t\tName: l.Name,\n\t\t\t\t\tPath: gopath.Join(dir, l.Name),\n\t\t\t\t\tSize: util.ByteCountDecimal(int64(l.Size)),\n\t\t\t\t})\n\t\t\t}\n\t\t\tvar index string\n\t\t\tif strings.HasPrefix(base, \"ipns\") {\n\t\t\t\tindex = gopath.Join(\"/\", base, dir)\n\t\t\t} else {\n\t\t\t\tindex = gopath.Join(root, dir)\n\t\t\t}\n\t\t\tif !g.subdomains {\n\t\t\t\tdir = strings.TrimPrefix(strings.Replace(dir, base, \"\", 1), \"/\")\n\t\t\t}\n\t\t\tparams := gin.H{\n\t\t\t\t\"Title\": \"Index of \" + index,\n\t\t\t\t\"Root\": \"/\" + dir,\n\t\t\t\t\"Path\": pth,\n\t\t\t\t\"Updated\": \"\",\n\t\t\t\t\"Back\": strings.TrimPrefix(back, \"/\"),\n\t\t\t\t\"Links\": links,\n\t\t\t}\n\t\t\tc.HTML(http.StatusOK, \"/public/html/unixfs.gohtml\", params)\n\t\t} else {\n\t\t\trenderError(c, http.StatusBadRequest, err)\n\t\t\treturn\n\t\t}\n\t} else {\n\t\tc.Render(200, render.Data{Data: data})\n\t}\n}\n\nfunc (g *Gateway) openPath(ctx context.Context, pth path.Path) ([]byte, error) {\n\tf, err := g.ipfs.Unixfs().Get(ctx, pth)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer f.Close()\n\tvar file files.File\n\tswitch f := f.(type) {\n\tcase files.File:\n\t\tfile = f\n\tcase files.Directory:\n\t\treturn nil, iface.ErrIsDir\n\tdefault:\n\t\treturn nil, iface.ErrNotSupported\n\t}\n\treturn ioutil.ReadAll(file)\n}\n\nfunc (g *Gateway) ipnsHandler(c *gin.Context) {\n\tg.renderIPNSKey(c, c.Param(\"key\"), c.Param(\"path\"))\n}\n\nfunc (g *Gateway) renderIPNSKey(c *gin.Context, key, pth string) {\n\tctx, cancel := context.WithTimeout(context.Background(), handlerTimeout)\n\tdefer cancel()\n\troot, err := g.ipfs.Name().Resolve(ctx, key)\n\tif err != nil {\n\t\trenderError(c, http.StatusNotFound, err)\n\t\treturn\n\t}\n\tbase := fmt.Sprintf(\"ipns/%s\", key)\n\tg.renderIPFSPath(c, base, gopath.Join(root.String(), pth))\n}\n\nfunc (g *Gateway) p2pHandler(c *gin.Context) {\n\tg.renderP2PKey(c, c.Param(\"key\"))\n}\n\nfunc (g *Gateway) renderP2PKey(c *gin.Context, key string) {\n\tpid, err := peer.Decode(key)\n\tif err != nil {\n\t\trenderError(c, http.StatusBadRequest, err)\n\t\treturn\n\t}\n\tctx, cancel := context.WithTimeout(context.Background(), handlerTimeout)\n\tdefer cancel()\n\tinfo, err := g.ipfs.Dht().FindPeer(ctx, pid)\n\tif err != nil {\n\t\trenderError(c, http.StatusNotFound, err)\n\t\treturn\n\t}\n\tc.JSON(http.StatusOK, info)\n}\n\nfunc (g *Gateway) ipldHandler(c *gin.Context) {\n\tpth := fmt.Sprintf(\"%s%s\", c.Param(\"root\"), strings.TrimSuffix(c.Param(\"path\"), \"/\"))\n\tg.renderP2PKey(c, pth)\n}\n\nfunc (g *Gateway) renderIPLDPath(c *gin.Context, pth string) {\n\tctx, cancel := context.WithTimeout(context.Background(), handlerTimeout)\n\tdefer cancel()\n\tnode, err := g.ipfs.Object().Get(ctx, path.New(pth))\n\tif err != nil {\n\t\trenderError(c, http.StatusNotFound, err)\n\t\treturn\n\t}\n\tc.JSON(http.StatusOK, node)\n}\n" var _Assets747353a94cf1b19b7a2e5c9fbc50b3ea0972f088 = "\n\n \n Artboard\n Created with Sketch.\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n" var _Assets8adebf81a81a55248a107972d373b02d60a4d498 = "\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\xc0\x00\x00\x00\xc0\b\x06\x00\x00\x00R\xdcl\a\x00\x00 \x00IDATx\x9c\xed\x9dy\x94\x14\xd5\xf9\xbf_\x90\xdd%\xe2\x12\x15ט\xe8\x80\x11\x03#\x03\x8a\xe2\xa0\x11qCA\x14\x1c\x16Q\x83h\\\x93\x98\x18\xcdbT\xdc\x12\xf3\x8d\x9a\xc4\x18\x04\xc1\x1dD%\xa0L\xcf0+\xb3/]U=\x03\xd3?\x8d\xc6h\x04\x11\xa3FAv\xa1\x9f\xdf\x1f\xb7{\x86ef\xfa\xf6R]\xd5\xd3\xf5\x9e\xf3\x9e\xe39\xeatխ\xcfs\xebs\xef}\xef-\x11/R\x1e \xdd\xf1K\x16\x96\xbc\x8c)Kh\x96,\x16\xcb~N_\x97\x17^\xd8\x1e\x04\xe4$\fy\x00K>\u0092P8\xd7`ȣ\x982\xc8\xe9\xeb\xf3\xc2\v[\x82\xa0\xf4\u0094[\xb0$\x88);\xb1\x84\xbdr'\x96\xfc\x13Sn\xa1V\xfa:}\xbd^x\x91\x94\xa0\\\xfa`\xcai\x98Rڎ\xe8\xdbOS\xaa\xf0\xcbPʥ\x8f\xd3\xd7\xef\x85\x17q\a\x86dc\xca\x1cL٨-\xfe6\b\xb6\x10\x909\x182\xc2\xe9\xfb\xf0\u008b\x98\x82f\xf96\x96<\x8a)\x1fu`wts'\x96\xacŔ'h\x96o;}_^x\xd1i\xd0,\xfb\xd3 \xa3\xb0\xa4E\xa3\x87\ac\u007f0\x0eP\xff\x1c\x1d\x86 ~\x19CP\x0ep\xfa>\xbd\xf0b\x8f\xa0\\z`ʅ\x18\xf2\x1a\x96\xec\x8a.\xfe\x1eP3\x06J\x9e\x86\xe2yPs\x01\x98\xbd\xa3C\x10\x90]X\xb2\x14K.\"(\xbd\x9c\xbeo/\xbc\x10\x9a\xe5\x18\x02\xf2<\x96\xfcWK\xfc\x8d'@韠\xa0\x16|-*\vj\xa1\xf4Ih\xf8\xaeΛ \x14\xfe\xadW\xb0\xe4x\xa7\xefߋ\f\r\f\xf9\x16\x96\xfc\bK\xbeв;\xfe\x83\xa1r\x06\x14ԃ/\xd8A\x9aPy-\xf8\x0fѵE_\x13\x90\x99\xac\x92\xfeN\xb7\x87\x17\x19\x12\x04\xe4`L\x99\x8a%\xc5Q{\xfc\x88\xf0\xab&B\xf1K\xe1\x1e\xbf#\xf1G\xb2\x05\x8a\x16A\xd5\xd5\xe0\xef\xaf\x03\xc2.,Y\x89)\xd7\x12\x90\x83\x9dn\x1f/\xbap`\xca L)\xc0\x94\rZ\xb38\xf5\x83\xa1x>\xf8\f\r\xe1\xb7\xf36(^\x00u\xc3tg\x8c\xbeƔB\f\xc9v\xba\x9d\xbc\xe8B\x01\xd2\rK\x0eǒ\xd9:\x1e\u007f\x97э\xcf\xca\a\xf0\xf5\x8a\xdf\xc4!\xfa\x0e\xb2\xec\x01h<\x02\xcc\xee: \xec\" \x8fa\xc9\xe1\xdc'ݝn?/\xd280\xe4(,\xb9\rSV\xe9\x88\u007f]ɱ\xcc}\xf8.\xc6^\xfc.7O\xfd\x8a\x8f_\xf9g\x92 h\x81\x15>\xa8\xb8\x11\x1a\a\xe8\x0e\x94W\xd1$?\xa5V\x8ev\xba\x1d\xbdH\xb3\bWk^\x86%~,\xd9\x1cMp\xdf\xf8{\xb0\xecoS\x19?!\xc0iglcP\x0e\f\xca\t1y\xfcf>z)Y\x10\x04\xc1\xd7\x04+\x96A\xcd80{ꀰ\x05K\x9a\b\xc8\xe5\x94K\x0f\xa7\xdb\xd5\v\x97\a\x86\xf4Đ\xa30\xe5\xd9\xf0\x9c{\xa7\x02\xdb\xde؋5E\xc7s۬\xd7¢\xdf;C\xdc:\xfd+>}\xf5\x9d$B\x10Β\xa7\xa0\xf1\x18=\x10Խ\xbc\x8c%\x030\xa4\xa7\xd3\xed\xec\x85\v\x83f\xf9\x0e\x01y\x90\x80\xac\xd1\x19t\xbe\xb7|\x10\x8f\xde\xf3\u007f\x9c1\xfa\xb3\x0e\xc4\xdf\x06\xc1MS7\xb0.ivh\xb7,\xa8\x87\x95wA\xc3\xc9z\x03倬ǔ\x87\xf0K\x96\xd3\xed\xed\x85K\x82\xa0\xf4\u0090\x9b\xb1\xe4=,\xd9\x1eMD_\xd7\x1c\xc8\xdf\x1f\xbc\x87\x1f^\xf8oN\x1d\xb1#\x8a\xf8\xdb \xb8z\xc2fּl\x03\x04\xbef(,\x86\x8a[UiEt\x10\xb6\x13\x90\xf7\xb1\xe4g\xdejr\x06\a\xefIo\f\x19H@\xca\u0083\xc6N\xe7\xf3CFo>\xf0\rf\xd2U\xf5\x9a\xa2\xdf\x17\x82\x9b\xa7m\xe0\xd3Ev@\x10\u03a2EP\u007f\x1a\x18}t\xd6\x0fBXR\x8e)\xa7ye\xd7\x19\x14 ݱ\xe4L,y\x1aS\xbe\x8c\xdac\x9a\xdd\t\xd5\xe5P9\xe7\t.\x18\xbb!N\xf1\xb7Ap\xe3\x14\x9b\xecPkZP\xfa{\xa8\xcbQ5G\xd1\xdf\b_a\xc9<,9\x13\xbcm\x99]:@zbʃX\xb2\x16K\xa3L\xd98\x80P\xf9=T\xfe\xc5`̘\xad\t\x8a\xbf\r\x82\xbc\t\x9bl\x86`5\x14V@\xf9\xbd\xe0?Ho\xed@\x95]?\x86Oz;\xfd\x9c\xbcHr`H?\x9ad,\x01\xf9w\xf4\x1e_\xc0\xe8\a5c\b\x15T\xf0\xf6\xfc\u007fq\xde\x0f\xb7'I\xfcm\x10\xfcx\xea\x06\xd6\xdbi\x87Z\a\xcau\xaa\xda\xd4\xd8_\xb7\xbeh=\xa6\\H\xb3\xec\xef\xf4s\xf3\"\xc1\xe0=\xe9M@.& \xafb\xc9\xd7\xd1{\xfc\xbePs>\x94\xfe\x85\x90/@Փ\x1fp\xfe\x98d\x8b\xbf\r\x82Yy\x1b\x93\xb8X\xd6Y\x06T\xe9u\xf5\x85\n\xee\xe8\x10l\" K\xc2\xeb\a\xde\xf8 \x1d\x83*\xe9\x8f%/\xa0J\x87\xa3?\xf4\xc6á\xf4\t(\xa8%\x94\x1f\xa4\xea\xc9\x0f\x183f\x9bM\xe2\xdf\xcd\x0e]\xb1\x89O\x16\xa6\x02\x82\xa0\x9a6-}B\xad\x1f贉%\x9f\x13\x90\x17i\x94#\x9d~\x9e^h\x06\x019\x18K\xae\xc1\x92\xff\xe9ٝoA\xd5T\xd5K\xfa\x82\x84\xf2\x83\xbc=\xff_6\xf6\xfc\xed\xcc\x0e\xa5\xca\x0e\xb5f\x13T^\xaf\xee\xdd\xec\xa67P\x0e\xc8L\x02r0H7\xa7\x9f\xb1\x17\xed\x04\xb5\xd27\\\xa6\\\x81\xc6|>ƁP=\x11\x8a\x16\x82oU\xab\xf8+\x9f\xfc\x90\xf3\xceO\x95\xf8\xdb \xb8!o#kmY'\xe8(W\xab{\xaf\x9a\f\x86\xd6@\xf9\x1b,\xa9 \xd7bH?\xa7\x9f\xb7\x17\xbb\x05\xa6\x9c\x8e%\xa5\x98\xf2\x95V\xaf_7,\\\x9f\xdf\xd8*\x88P~\x90\xca'>dL\xcaz\xfev\xecЄ\x14ڡ\xd6\xf4Cѫ\xe1iS-[\xb4\x01K\xaa\xb1d\x98\xd3\xcf=\xa3\x83Ų\x1f\x86\x1c\x86)\xbf\b?\x94(\xc2\xdfO\xed\xb4ZyG\xab\xdd\xd9]\xfc\xef\xcc\xff\x17\x17\\`\xb7\xe7\x8f\x0e\xc1\xadӿ\xe2\xd3E6\xd4\x0e\xe9آ\x95w\x81\xffP\xd5V\xd1;\x92\x8dXr/5\xf2m\xefX\xc7\x14\a\xef˷\xb0\xe4g\x98\xb2Zk0\xe7?\x14*oT%\xc5{=\xf8P~\x90\x95O|ȹI\x9f\xea\x8c\x1f\x82Yy\x1b\xf9\xcfK\xef:\x00A\x10\n\x8bT[5\x1e\xa9;P~\x1bK\xeeĐÜ\xd6EF\x04\x96\\\x14\xae\xcfߌF\t\x03\xd5\x17Ê\xe5\xe0\xb3\xda\x15\u007f\xe5\x13\x1f\xa6p\xc0\xab\x0f\xc1\xe4\xf1\x9b\x1d\xb0C\x91\xb4TgQ5Ag\x90\x1c\n?\x8b \xa6LpZ\x1f]2(\x97\x1e\x04\xe4\x04L\x99\x8f%ۢ\xbf\x9e{@ñP\xfa8\xf8\x9a\xdb}ȡ\xfc \xff\\\xf0\x1e\x17\x8eu\xda\xf6t\f\xc1\xed\xd7|\xc5\u007f\xed(\xa5\xd6\xce\xd5jڴ\xe1D\xdd\xfd\a;0e\x01\xf5r\x92\xb7\xff IA\x93\x9c\x1c._\xf80\xba\xf0\xbb\xa9\xd2\xe0\x95wA\xe1\xca\x0e\x1fl(?H\xf9\xe3\x1f\xf2Ô\xcf\xf6\xc4\x0e\xc1MS6\xf0\xe1\x8b\x0e١V[T\t忂\x86,\xddi\xd35\x04\xe4\xf7^\xd9u\x82\x81\x9a\xcf\xff'\x96\xec\xd0\xf2\xa3\x95\xd3UipxZ\xb3#\xf1W<\x91\x0e\xe2o\x83`\x92\xa3v(\x92\xabU\xdbV\xceԛ-RGB\xbe\x8b)7:\xad\xa3\xb4\n\x82ҋf\x19\x81\xa5y\x9a\xb2\xd9KMk\x16-\x8e\xfa\x10C\xf9A\xdeu\xb5\xed\xe9\x18\x82;\x1c\xb7C\xbb\xe5\x8ae\xaa\xcd\r\x8d\xd3\xecT\xd6b\xca\x19^\xa1]\x94\xc0\x90\x11\xa82\xe5Ϣ\v\xbf;\xd4\r\x87\xb2\x87\xa2\x1c6\x15\xc9\x16\xd6/|\x87\xbbg\xfe\x8fi\x137ٓW~n\xdfߞ\xb8\x89y\xf7|\xc27\xffhr\x1e\x00_P\xb5y\xd9\xef\xa1n\xa4\xeei\x15\x9fa\xc9\xbbSs>\x94\xfc\x9d\xbdWq\xb5\x01\xb0\xed\xc1WA\xd5Uj\xf5\xb4!+5\x00d\xe5\u0084[\xe1\xa5*煿G6C\xc9\x1c\xa8\xb9H\xd7\x16mǔ%\x98r\xa9\xd3zLY\x10\x90\x13\xb0\xe49,\xf94\xaa\xdd1\x05\x1a\xbe\x03\xa5\u007f\x0e\x9f\xa6\x1c\xe3\x03\xb1\xbd範\x9a\xf3\xda\x1ev*\x01\xc8ʅ13\xe0\x85\n\x17\b\u007f\xefv\xa9S\x9dU\xc3wt\xf7&\xff\x17K\x16\x11\x90\x13\x9c֧m\x11>Tv2\x96Ʊ#f\xb7p\x99\xf2UP\x10G/\x972\xdbs\xf9\x9e\xf3\xe2\xa9\x06 +\x17&\xde\x06\v]f\x87ZۨJMM\x1b\a\xeb\xae\x1f\xacŔ\xebX%\xfd\x91.Rv\x1d\xfe:\xe24,)\xd7\x1b\xe0\xf6R%\xbaE\v\xe3l\xf8T\x88\xbf\x1a\xaa&\xed[4\xe6\x04\x00Y\xb90\xe1\x16\x17ڡݲ\xe8\xf5pٵ\xd6n\xb4\x10\x96\xd4`\xc9\xf4\xb4/\xbb\xa6Q\x86`I>\xea\xe4\x81\xe8v\xa7n(\x14\xbd\x00\x05\xfe\xf8\x1b;\x15⯹\xa0\xfd\x8aI\xa7\x00\xc8ʅ\v\xae\x85\x17]h\x87Z\xdb\xcd\x0fE/\xeb\x96]\x87P\x9bpV\x90\x8ee\u05ec\x96#0\xe5w\x044\xbe\x8ehv\x03\xff\x11\xaa|\xc1g&.|[\xc5_\x0f\xd5\xe3:~\x9d;\t@V.\\q\x1b,\xacq^\xec\x9df@=\xeb\xc6\x01z\x03eS\xb6b\xca}\xd4\xcaѮ\xb7E4ʑ\x18r;\xa6XZv\xc7\u007f$T\xcc\nWk& ܔ\x88\xbf\xa6m\xb6\xa7\xa3\xfbq\x1a\x80\xac\\\x18\u007f3\xbc\xecb;\x14\xc9B\x1fTܢ4\xa0c\x8bLYM@~\xee\xda\xfd\xc94ɹXR\x8d)[5n\bj\xcfS\xdeЗ\x84\x95\xcdT\x88_gj\xcf\r\x00d\xe5\xc2\xd8k\xd3\x03\x02\xdf*\xa5\x81\x9a\x8bt \x00\xb5յ\x06C.qZ\xef\"\x12>e͔\xef\x85˔5^g\xfb\xa9j\xcd\xd2'\x93Ԁ-\xf6\xf7\xfe\x05\xf5P}\x99\xde,\x86[\x00\x88\xac\x13\xbcR\xed\x02\x91kf\xf1ߕ6\xf4N\xb3\x03K\x16\x12\x90\x93\x1cۍ\x86!\xdf\r\xfb\xfc\x0f\xb4\xecN\xc3wa\xe5\xcfc(_\x88A\xfcv=\x94\x82Z\xa8\xbeBwQ\xc7]\x00d\xe5\xc2\xe5?v\xf7\xec\xd0\xdeY\xb8\x12\xca\xefQ\xed\xa8c\x8b,\xf9\x90\x80\xb6\xa5\xafN\xbb\u007f\x83)\xef`\xc8M)9ċF9\x96h_M1E}\xf8\xb9\xfe\a\xe1\xd3\x17\x92\xdcH)\x99퉡\xe7w3\x00\xe9h\x87\"Y\xb4\b\xea\xb3\xc1\xd4:\xedz\x1b\x86\fv\x1e\x00S\x94\xf0\xcb\x1e&\xbe\xaf#j\b\xdf\xee\x01o\xf5e\xb1\x8b\xdf\xcd\x00D쐛\xaaH\xb53\x00e\x8f\xa8\xfd\a\x9dC\xe0\x02\x00\xfc\x87)\x0fWXF\xf2\xecN$S1ୁ\xea\x8bt\x97\xed\xd3\v\x80\xb4\xb4C\x91\\\xad\xc6\ae\xf7\x81\xffp\x97\x02\xe0?$\xec\xf3mj\x84T؞\xaa\xab\xe2\xeb\xf9\xd3\x05\x80\xd6\xda!\xb7/\x96u\x92+|\x1d\x9dm\xea4\x00\x03H~\xaf\x9f*\xf1W\x87Wx5\x0e\x84Jw\x00\"v腕\u038b9\xae\\\xdd\xd1,Q\x17\x04 ?E\xe2\xaf\x19\x1b\xbf\xedIG\x00\xb2rU)u\xbaڡ\xcc\x01 \x05%\xcdU\x93\x13\xef\xf9\xd3\x11\x80\xac\\\xb8\xea\x0e\xf7\x96Rg6\x00\xa9\x98\xed\xa9\n\xd7\xf3'I\xfc\xe9\b@V\xae\xaa\x1dz\xbe\xdc\x05\xc2\xf6\x00P\x992\xdb\xf3\xc3\xe4؞t\a +\x17\xc6\\\x93&\xb5C\x19\x01@*lO;\x9bY2\x19\x80\x88\x1dr\xdbF\xfb\x8c\x02 %\x8b\\UP5\xd1\x1e\xf1\xa7;\x00Y\xb9j\xc5\xd8͛j\xba4\x00o\xad\x82\x9b\x1f\x86\v\xae\xb3/\xc7\xe6\xc1\xc5g\xc0%9\xb6\xe4\xa7\xe3&2e\xc2&[s\xfa\xa8\xf7\x991l\x95mY1\xf1\x95\x14}\xb8\xcf\x03`\xdf|\xdd\x0f\x17^\a\x03G\xdb\xd7\xcb٘k\xbe?\xc5\x05\xc7(ƗCr\xb61'\xfby>\xb2\x86Q{\xd9\x1e-\x00\xac\xf0\xc0xjbv\xc8\x03 q\bn\x9a\x12\xcd\x0ey\x00쓡\xfc \xafw`{\xb4\x010\x05\x8a\xfb\u0095\xf1\xcf\x0ey\x00$\a\x82\xbc\t\x9d\x9d;\xe4\x01\xb0G\xee\\\x1e\xe4\x1f\x0f\xade\xf8\xa8\xf6m\x8f6\x00\x91\xac\xed\x01\x97g\xc7e\x87<\x00\x92\aA\xc7\x1b\xed=\x00\xf6\xe8\xf9\x97>\xbc\x86\xb3Fw\xde\xf3\xc7\x04\x80%P\xd6\a\xa6\x9c\x06\x83b\x83\xc0\x03 \xb9\x10\xcc\xca\xdb\xd8Λ\xc0\x03\xa0U\xfco<\xb8\x96\x11\x1a=\u007f\xcc\x00\x98\x02E}c\x9e\x1d\xf2\x00H>\x04yWlb\xfd\x1e\xa5\xd4\x1e\x00\xad\xb5=\xb1\x88?&\x00\"Y\x17\x9b\x1d\xf2\x00\xb0\a\x82=\xedP\x86\x03\x10\xcaW\x9e_\xd7\xf6$\x04\x80%P\xd6[\xdb\x0ey\x00\xd8\aA۹C\x19\x0e\xc0\xeb\xb3\xf5\x06\xbcI\x03\xc0\x14X\xd1\x0f\xae\x8cn\x87<\x00\xec\x85 o\xc2&\xd6/|;3\x01ع\\\xcd\xf3\xc7j{\x12\x06`\xf7١\xf1\xa7\xd3ٛ\xc0\x03\xc0~\bn\x9d\xfe%_\xae<%\xb3\x00\b\xe5\xab\x15\xde\xce\x16\xb9l\a\xc0\x12UJ=up\x87\x10x\x00؟\xdf\x1f\xbe\x93\xb7\x97\x9d\x96Y\x00,\x9e\xddqyCJ\x010\x05\n\xfbuXJ\xed\x01`\u007f\x9e2|\x17o/\xfbAf\x00\xd0f{b\x1f\xf0\xda\x02@$kz\xc2\xe5\xfb\xda!\x0f\x00\x0f\x80\xa4=\x88\xc8<\xff\xde%ͮ\x00\xc0\x12X\xd9K\x95R\xef\x06\x81\a\x80\a@\xd2\x1e\xc4+\xf7}\x9c\x14\xdbc\x1b\x00\x91١\t\xd9\x1e\x00\x1e\x00\xc9\x03 ٶ\xc76\x00\"Y\xddK\x95R\x0f:\xc7\x03\xc0\x03 1\x00\"\xb5=ɴ=\xb6\x03\x10\xb1C\xd3\a\xb3fp\x9e\a\x80\a@\xfc\xe2\u007f\xf1\xdeuq/r9\n@\xb8\x94zͤ\xcb<\x00<\x00bo\xf4Hm\x8f\x9d\xe2\xb7\x15\x80pn\xa9>\x88iW\xd7\xf2\xfd\xe1\xf6݇\xef\xfa\x128w*\x9c}\xa5-\xb9}\xfc\x04>(8\xc9չ\xbd\xa1W\xd7\x02\xe0\xcdv6\xb0\xa7#\x00X\xc2\x17+\x8f\xe0'\xb3\xde`\xf0\b{\xee\xc7\xf7\xd0\a\xf0\xab\xa7aȅ\tm\xdf\xec0\xcf;\xd3\xf66\xb2)\xd3\x0f\x80P\xbe\x9a\xed\xb1c\xc0\xeb\x14\x00!S\xf8\xb4\xf4hfN/\xb5\a\x80Gר\xafc\xfe\xf6\x19\x0f\x80t\x06`\xe7r5ϟ\xec\xa9N\xa7\x01\x88\xe4\xa6\xea\xfeL\x9b\\\x97t;\xb4\xc7\x18\xe0w\xf3\xe0\xd41\x1e\x00\xe9\b@\xaal\x8fS\x00`\t\x9f\x95\r\xe0\x8eYK\x92j\x87\xf6\x00\xe0\xcdf\xf8\xd5ߒk\x87<\x00\xec\x05 \x94\x1fd\xf1\x03\xd17\xb0w\x05\x00\x94\x1d:\x86\x99\xd3K\xec\x01\xc0\x17L\xbe\x1d\xf2\x00\xb0\x0f\x00'l\x8f\x93\x00Drs\xedA\\\x93W\x95\x14;\xd4\xe14\xe8}\xf3ap\x12\xec\x90\a\x80}\x00,\x8brnOW\x05\x00K\xf8\xac\xechn\xbfai\xc2v\xa8C\x00\xdel\x86{\x92`\x87<\x00\x92\x0f@(?\xc8k\xb3c\xdb\xc0\xde\xd5\x00\b\x99\xc2\xfa\x92\xe3\x98yMbv\xa8Ӆ\xb0eMp\xefܮ\r@\xe31`\xf4K\x1f\x00b9\xb7\xa7+\x03\x10ɭu\xfb3cJE\xdcv(\xeaJp~\vܿ \xfe\xd9!7\x03\xe0?\x14J\xfe\x9a>[\"c=\xb7'\x13\x00\xc0\x12>+?\x8a\xdbf\xbeɩ#bo\x17\xadR\x887\x9b\xe1\xee\xa7\xe0\aq\xd8!\xb7\x02\xd0x$\x94\xfc\r|\xab\xd2\x03\x80\xb6\xe3\n\x9d\xef\xf9\xdd\x06@\xc8\x14>)>\x9e\x99Ӌ\xed\x01 \xbfE١\xdf\xcd\xeb\x1a\x004\x0e\x80\xe2\xf9\xe0k!-N\x85\x88\xf7ܞL\x01 \x92\xdb\xea\xfb1cJl\xb3C1\x17\xc3\xdd7?6;\xe46\x00\xfc\x87B\xc9\xd3a\xf1\a\xdd\x0f@\"\xe7\xf6d\x1a\x00X\xc2\xe7\xe5G\xc6d\x87b\x06\xe0\xcdf\xb8\xe7)};\xe4&\x00\x1a\a\xec%\xfe4\x00\xe0\xb5\x04\xce\xed\xc9D\x00B\xa6\xb0\xae\xf8\x04n\xb8\xa6\xc8\x1e\x00\xf2[`Y\x00\xee{6\xbd\x00hx#\xcc9ƞ|\xe68x#\x1b\xaa/\xb7-7\x16]ϻ\xf3[\xd4\xea\xae\x1d\x10\xf8\x82\xf0\xf7\xa7\xec\x15\u007f\\\xb6'\r\x00`E︾\xadۚ\xe7N\x85\x97\xab\xec{\xb0\xbe L\xfaib\x9bE:ʁ\xa3a\xdcM\xb0\xa0̾k\xcfo\xd97\xed\xf8\x9d\x15>{{\xfe\x84\xc4\xef\x01\xe0N\x00ι\x1a\x9e+\xb3O\x94\xed\x89?\xdd\x00h<.\x01\xdb\xe3\x01\xe0R\x00Fè\xc9\xf0r\xb5}\xd7ܡ\xd8m\x02\xc1\x0e\x00\xfc\xfd\xa1\xf4\xa9$\x88\xdf\x03\xc0=\x00Dl\xcf\xfcR\aĿ\u05ffO&\x04\xc9\x06\xa0\xf1\xa8$\xd8\x1e\x0f\x00\xf7\x01\x90\x9bB\xdb\xd3\xe1\u007f\xe7r\x00\x1a\x8f\x8bq\x91\xcb\x03 =\x008\xe7j\x1bmO<\xa2N\"\b\xc9\x02\xc0\u007fH\x9c\xf3\xfc\x1e\x00\xee\x05`\xe0h\xb8\xf4F\x98_b\xdf5\xc6+\xe4d١d\x00\xd0x\x84fa[W\x02\xa0\xac'\x9c5\xbck\x03\xe0\n\xdb\xe3r\x00\x1a\x8f\xd5(iN \vW\xa8\xdfp\x1d\x00\x96@qo\xf8Q\x16d\x8f\x84\xac\x18\xdf\x06n\a 7\x0f^\xa9q\x9f\xf0\x93\xfd\xb7\x12\x01 \xb2\x81=\xe9\x1dD\v\x14\xd4A\xe9\x9f\xd4V\xc9\xf6\u007f\xdf\x05\x00X\xa2>\x17\xf4\xcaAp\xdd@\x18|v\x17\x00`4\\2\v\x16\xa4b\xb6'I\xc2I\x04\x82x\x01\x88\x9cۓt\xf1\a\xa0\xf4\x0fP7\\i\xab\xe3kp\t\x00\x11\b\xaa\xf6\x83g\xfb\xc3\xd8\xec\xf4\x06 \xf7j%~7\xda\x1e\xb7\x00\xb0ǹ=Il\x9b\x15K\xa0v4\x18\aD\x13\u007f\n\x01\bJ/,\xb9\x13K>\xc0\x92]Q\x1b\xa7\xbe;\xfc\xf2x8\xe3\x8c\xcem\x91\xeb\x00\x18\xadĿ\xb0\xd6^\xe1\xfb\x92\xd8\xf3'\x03\x84X\x01\xd8\xe7ܞD\xb3\x05\n+\xa0ⶎ\xce\x00\xdd;wa\xc9\x1a\x02\xf2s\f\xe9g;\x00\xad \x04\xe4$\x02\xf2 \x96\xfc\aKBQ\xdf\bK\xfb\xc1\x1d'\xc2\xf03\xd3\x03\x00;m\xcf\x1e´\xb1\xb0-\x1e\bb\x01\xa0\xdds{\x12\xc8\xc2\n(\xff\r4\f\xd2\xe9\xf1CX\xf2\x11\xa6\xfc\x01C\x06\xa6L\xf8{@P.=0$\x1bK^\xd3j\xb0\x86nj|pթ\xee\x06 7\x0f\x16\x94\xa4\x97\xedI5\x00\x1d\x9e\xdb\x13g\x16/\x80\xfal0{\xeb\xfd\xbe)\xcb1\xe5t\x16K/GĿw`ʥX\xb2\nKvh\xdd\xc0\x93߆Q\xc3\xdb\xd6\x0e\xdc\x00\xc0\xc0\xb0\xed\xb1k\xb6g\x0fA\xda,\xfcxA\xd0\x01\xa0\xd3s{b\xc9հ\xa2\x10\xaa\xae\xd0}\xeb|\x83)\xab1\xe4*\xa7\xf5\xden`\xc9\x00\f\xb9\x13K\x9a\xa3\xda\"K\xd4\xe2ٯ\x8f\x83sr\xdc\x01\xc0\xa57\xaay~[~?\x85\xbd~4\b:\x13n4\x00\x1a\x8fM\xceTga\xa1\xf2\xf9\x8d\x03t\x84\x1f\u0092 \x96\xdcM\xad\x1c\xed\xb4\xce;\r\x90n\x18\xf2]L\xf9\x13\x96l\x8aޛ\b\xbc\xd5\x17f\x9f\a\x8b+\x9c\x03\xe0\x9c\xab\xd5\noW\xb0=\x89\\Cg\x004\x86\xcf\xedI\xe8\x1e\x9a\xa0\xec>h\xf8\x1e\x98\xfb\xe9\x88\u007f\x1b\xa6<\x8e_\xb2\xb8O\xba;\xad\uf602&\x19\x8e)\xb5\x98\xb2%\xea\x1b\xc1\x14\xa8=\x03V,\x03_ u\x00DlO*J\x9aSm{\xe2\x01\xa1#\x00\x12\xae\xed\t\xc0\x8a\xb7\xa0v\x94\xee\x00w\v\x964\x12\x90\xb3\x9c\xd6qB\xc1{қ\x80\\\x8b%\xd5Z\xb6\xc8\xe8\rUyP\xf4j\n\x00\x18\r\xe3\xec\xb4=A\xe7{\xfdX!h\x0f\x80\xc6\xe3\x12\xf3\xfcEK\xa0j\n\x18\xfb\xebڝ\x06\x9a\xe4:\x9ae\u007f\xa7\xf5\x9b\x94\bۢ\xa3\xb0\xe4ǘ\xf2I\xd4F0\xbb\xabc\xf2*\xaf\x85\x82$\x0eH\xf7\x06`Ԥ\xaeo{:\xbc\xb6\x0e\xe0\xdc\x1b\x80\x98\xcf\xed\xd9-\vj\xa1\xe2&\xf0\x1f\xa5\x9eit\xf1\xaf\xa7I~J\x93\x1c\r\xd2\xcdi\xdd\xda\x12\xd4\xcbI\x18\xb2\x1cS6h٢\x86\x93\xc2\x0f\xc0\x9f<\x00\x06\x8e\xb6\xb9\xa49\xe8>ۣ\v\xe9\xee\x00Ľ\x81݀\xa2\x85\xd0p\xb2\x9e\xdd1e#\x96\x94\x10\x90\x93\x9c\xd6gʂ\x80\\\x8c)\xcb0e\xab\xd6\x1b\xa1\xe6\x02(y\x86\x84\xc6\a\x93~ڶ\x93\xcb.۳Ǿ]\x17\b<\xd6k\x8e\x00\x10\u05f9=\xcdP2\x17j.\xd1\x1d\xe0nǒe\x182\xdei=:\x12\x04\xe5\x10\x02r\x15\x96\xbc\x1b\x1d\x82\xf0@\xacz<\x14\x96\xc7\x0f\xc0\xa8ɩ\xa9\xed\xb1{\x85\xd7N\x00\x1a\x8fQ\x1b\xd8ci\xa3\x82\n\xa8\xbaR=#\xb3[t\xf1\x9b\xf2>\x01\x99BP\x0eA\xba\xa8\xdd\xd1\r\f\xe9\x87)\u007f\xc1\x92ϴ\x06\xca\xfe~\x84\xca\x1ef\xdb[\r|\xf1\xda;\xfay\xddc|\xf1Lml\xffO\f\xb9yi0\xbdz\xfe\xf6@\xf0\x95\xc7f{\n\x1a\xa0\xec\x11\xf0\x1f\xac;\xc0\xfd\x02S\xfe\x8a!\xdfrZw\xae\n\x90n\x04d$\x96\xccŒϣ5f\xc8\u070f\x8f\vF1\xf7\xfe\xb9L\x99\xb8\x9e\xcb.\xde\x1a=\xc7n\xd2\xfb\xef\xe2ș\x93\xbf\xc6z\xfa\xfd\xf4\x15\u007fkj\xbe\xbd\n\x1a\xa0\xec1\xa8=[\xd7\xee|\x81%\xcfaIn\x97\x1d\xe0�\xa4\x1f\x01\x19\x83%\xb5\x1a\x8d\xca\xd75\aR:\xffR.\x1d\xb7ڱ#\x17\xb3G\xeed\xc9Ck\xd9\xf1\xa6\xd3\xe2MQ\x16\x16B\xcdhU\xa6\xac\xf1\x8c0\xc5\u0090\v\b\xca\x01N\xeb+\xad\x02Cnǔu\x98\xb2S\xa7\xa1\xffz\xff\xbd\x9c9\xfa3N\x19\xbe+E\xe2\x0f1\xf4\xcc]̻\xe7\x13Bi\xdf\xf3G\xcb\xd5PP\r+\u007f\xa23\xb3\x03\xaaLy\x1d\xa6\xdc崎\xd2:0e\x10\x96<\x8a%\x1fEk\xf4]f7\x82K\x87\xf0\xd0/\x9f`也\xda\x0e@\xeey;x\xf5\xfe\x8f\xbb\xbe\xf8\v\xaaw+S֚\xcf\xff\x18K\xfe\x0fS\x06e\xfc\x007\x19\x81Oz\xd3,\xa7bɢ\xf0\xd4Y\xa7\x0f`k}_Z\xfe1\x94\x1b\xae\xf5\xc5\xf4\x11\xea\xd8l\xcf.\x96<\xb8\x96\x1do\xb9@\xa0v\xf6\xfa%s\xa0~0\x18}t\x84\xff\r\xa6\xbc\x8a!ټ'\xbd\x9d\xd6M\x97\fL\x99\x84)\xff\t\x83\xd0\xe9\x8c\xd1.\xa3\x1b\x8b\x1e\x9f\xc59\xe7\u007f\xcc\xe0\x11;\x92j{\x9e\xfb\xcd:\x17\bԮl\x86\u0095P9]gJ3\x14~\x16k\xb0\xe4\x1a\xa7\xf5\x91\x11A\xad\x1c\x82)w\xa1Jd\xa3\xf6L\xebK\a\xf0\xd4\x03\xbfe\xccE\xffJ\x18\x80s\xce\xdd\xc1\xa2\xael{\nK\xa0\xf2Ǻe\xca`ɻ\x98r\x17\xf5r\x84ӺȨ\xc0\x90\x9e\x04\xe4\x04\f\x99M\xb4M\xfa\x96\xb0\xbd\xa1\x17\x1f\x16\x9e\xc8\xec_\xfc\x99S\xe3|\x1bd\x8f\xdc\xc5\x1b]\xd6\xf64C\xd9\xfdj\x05\xd8\xec\xa93\xb3\xb3\x05C\xfe\x88_NĐ\x9eN\xeb!\xa3\x03\xbf\x9c\x85%\x86\x0e\b\xbb\xccnT\xbe0\x96q\x97\xaf\xe2\agnշ=#w\xf1\xc2o\xbbb\xcf\x1f\x80\x15\xf9\xe1\xf9|\x8d\x15\\K\xb6\x10\x90\xd54\xc9\xd9N?w/v\v\x9ae\u007f,\xb9\x06S\xaa\xd0ؖ\xf9ee\u007f\x16=>\x8b+\xafll\xf7{\xbc\xbb\x8b\xff\xec\xd1;X\xfc\xc0\xda.&\xfe\xd5P\xb4X\x95)\xeb\xad\xe2~\x83%\xd5\x182ӛ\xcfwi\xb4\x96]7ɭh\xecF\xdbetc]\xc91\xfc\xed\x81_w8[\x94=r\x17\xaf\xcd^\xcb\xf6.\xb5ȵJmG\xf4\x1f\xa1;\xad\xb9\x19K\xeeĐ\xa3\xd2nWV\xa6\x06\x96\x1cN@\x96\x86Km\xa3>\xe45+\x8e\xe7\xba\xe9E\f=kSkϟ=r\x17/\u07bb\xae\v\xf5\xfc&\x94̃\x86\x13u\a\xb8_c\xc92\x1a\xe5X\xa7\x9f\xa7\x17q\x04\xb5\xd2\x17S\xc6a\xc9\xeb:o\x84M\xb5\aP\xf0̕\xdcx\xdd[\x9c{\xfe&^\x9b\xddUlO\x93*%\xaf\xbeXwW\xd6f,Y\x86)WP+}\x9d~\x8e^$\x18\x04\xe4`\x9ad\x12\xa6|\x1c\xed\xe1\x87L\xe1\u007f\x15\x87\xf2肋پ\xdc\xc6\xe3QR\x95\x05\x8dP}E\xb8LY\xa3\xd7\x0f\xc8\x17\x982\x99\xa0\x1c\xe2\xf4s\xf3\"\xc9A\xad\xf4Œ?\xa3*\x13\xa3\x1f\xeb\xe8\xef\x0fe\x0fCA=\xf8V;/f\xedlQ\xd7\\\xfa\x184\x1e\xaa\xd3\xe3\xab2\xe5\x80\xccI\xe9\xf1\x82^\xa4>@\xba\x13\x90\xb3\b\xc8\x1c,\xd9\x10U\x1c\xe6~P7Bռ\xdbuZER\xb3\tJ\xff\bug\x80\xd9C\xa7\xc7\xdfH@\xe6c\xc8ٔK\x0f\xa7\x9f\x8f\x17)\n\xca\xe5\x80\xf0\xb1-u\xe8\xecM6\x0e\x80\xba\x1cu\u0081\xe3\"\xef \x8b\x96\xa8\xf9|\xe3@ݽ\xb8\xf5\x982\x8aj9\xd0\xe9\xe7\xe1\x85C\x11\xb6Ewc\xc9z\xd4\\w\xe7\xc21\x0eT%\xc1\x05U\xe0[\xe5\xbc\xe8}\xab\xc2՚w\x83q\x90\xee|\xfe\xa7Xr\xbf7\xc0\xf5\xa250\xe5{X\xf2\b\x96\xacӚ\"l\xf8\x1e\xac\xbc[\x1d\xfd\xe1\x98\xf8\x1b\xa1\xfc\x1e\xa8\x1f\xa8;\xad\xf9\x19\x96<\x82)\x83\x9cno/\\\x18\x94K\x1f\xfc\x92\x85!\x8b\xf5lQ\x1f\xf5\xc1\xb6\x929\xa9\x17\u007f\xf1|\xa8?E]\x83\x9e\xddY\x86)\x83(\x97>N\xb7\xb3\x17.\x0f\x16\xcb~\xf8%\x0fS\xdeAc\xff\x01f\x0f\xa8\x9a\xa4\xb6\n\xdaj\x8bVAa1TM\x06\xb3\x97N\x8f\xbf\x1dS\xdeǐ)^\xc1\x9a\x171\a\x96\f w\x10\x90\x16\x02Q\xa6MMQ%ĕ7\xa8#\xbf\x93z,J\x8b\xfa\x9b\x157\xab#K\xf4\xce\xd6\f\x12\x90\x9f\xd3,\xc78ݎ^\xa4qp\x9ft\xc7/'\x12\x90ǣB`\x89\xaa\xadi8\x11\xca\x1eJ\x1e\x00\xa5\u007f\x84\x86\xefꞾ\x10\u0092\xa7Y%'\xb2X\xf6s\xba\xfd\xbc\xe8B\x11\xfe\x1aN\r\xea\xe4\xe2\xe8b\xac\xcbQ\x15\x97q\xad\x1f4\xa9\xff\xb7v\x94\xee\x00w+\xa6\xb2\t\x1f\x9e\x00\x00\x01ZIDAT\xd4\xe2O\xf3Ӕ\xbdpw\xb0J\xfac\xc9tL)\xd3\x1a(\xfb\x0fQ\x9e\xbdh\xa1\xbe\xf8\x8b\x16C\xd54\xdd\xf2\x85P\xb8\x04\xfczVI\u007f\xa7\xdbNj\f\t\x82rd\xf8k8_F\xb7E\xa2NY^y\xab\xaa\xcd\xe9P\xfc\x16\xac\xbcM\xd7\xe7\x83*\xf0\xbb\x93&\x97\u007f5ŋ\xae\x1b\xf8\xe5D\xacֲ\xeb\xe8\xc7:6\x9c\f\xc5s\xc1g\xd0v\n\x9b\xd16\xad\xa9\xe3\xf1M\xd9H@\x96\xd3$';}\xff^x\xa1\xbe\x96\x19\x90K\b\xc8\x12-\b\x8c\x9ePs\xa1*Q.^\x005\x17\xa9\x0f\x83\xe8\x89\u007f9\xa6\\\xea\x1d;\xe2\x85날\x1c\x82%\x97a\xc6pڵ\xff0]\xbb\xf3.\xa6L\u0090Ü\xbeO/\xbc\xe84P_\xcb|\x1aS>G\xa7\xec\xba\xe3܅*S\x9e\x8f%\x03\x9c\xbe//\xbc\x88)h\x94\x1c,\x99\x87\xdaZ\x18\xab\xf8\xb7`ɳ\x04d\xa4\xd3\xf7\xe1\x85\x17q\a\xd5r \x96\xe4\xa2\xd6\x0ft\xc5\xdfH\xb3\x9c\xe7\x95){\xd1e\x02\x9f\xf4ƒ_\x86\x8fu\xdc\xd7\x16\xa9U\xe6\xb5X\xf2KoW\x96\x17]6h\x96,,y8,\xf6P8\xd7b\xcac4\xc9\xf7\x9d\xbe>/\xbc\xb0=(\x97\x1e4J\x0e\xa6\xfc\x03S\n\bH\x0eA\xe9\xe5\xf4ueb\xfc\u007fK\x13\xb8F\xdb\x0f\xfc#\x00\x00\x00\x00IEND\xaeB`\x82" var _Assetsaeddafb109d244dccf51e6a0309f04536e6c7eb7 = "\n\n\n\n\nCreated by FontForge 20190801 at Tue Dec 10 16:09:21 2019\n By Robert Madole\nCopyright (c) Font Awesome\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n" var _Assetse5228f4473380f8aaf60204d3214f579490bdba3 = "wOF2\x00\x01\x00\x00\x00\x01)4\x00\r\x00\x00\x00\x02\xf4\xf0\x00\x01(\xd8\x01J\xc0\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00?FFTM\x1c\x1a\x1e\x06`\x00\x99.\x11\b\n\x8a\xa7@\x88\x8f$\x016\x02$\x03\x9e\x1a\v\x9e \x00\x04 \x05\x8a+\a\xde\x19[\xcbX\x92\xc0\xe0fH\x85\xdb\x06\x00Qe\xe7O\xff\xe6\xb3\x11\x11\xe8\x0e\xe6$y\x12\xef,Q\xbdf\x8e\xbb[U\x05\xb2\x03 \xd9\xff\xff\xff\xff\x8b\x92\x89\xc8Vr\x1d\x976i[\xd8\x1c\xa8C\x00E\xd5\xff\u007fE*\x92\xd8L2\xb3\xceŔK\xd4PMj\x14\xefC\xb9\xd3d\xafb\x8f\x0f\tm^\x9e֢\x8e \x14\x01\x15\x01\x15\x01\xc5dDDI?)\xba{w\xf5\f\xa8\b\xa8\b\xa8\b(/\xf1Zk\x8f\xc4\r\x8d\x1a\x11\xae\u038b\x1cjQEyd\x95\xcd\xe3\xd9%{Xٻ\xb8Iou\xe0\xd0gp:\x95\xb9\xb5&\ai\xe0\xed\"\x06L\x11P\x11P\xb1֥\xf6\xab\x84\xecո\xdc\xf4b7\xb9\x16S6ħ;fdr\xd7T\xad\xe3\xa7\xe9\xdf9\xb5\xebw\xfd\xf1\xf8\xa4i\xc3&D_\xe06\xe9uӤ\x10\x93\x90D\x14B\x12\x91\x88\xa4\x90\x14.g\xd9\x14\xb5\xc1U2\xa20\x99ӭ\xb2\xc97\xf8\xa9\xf7-\xe4\x9c\xf0\x83\t\xbbaK\xff\r\xd9t\xfe3F\x91Ko\x81\t\xfb\x84\xc4\x0f\x19 \xaf\xd2\xf3<\xf7\x94\x9e\xde\xd3{\xca\x11\xe5\xb9\xf7\xdeU\xc5\x0f\xc8\x1d\xf8\x96\x17p\xbc\x8f!\xaf\xa7\xb5%D2w\xc2\xe7D\xdb\xc1\xf8K\xf4e\xe8\x9f\xfcGy\xf2\x170\xc6U\x03\b\x1a\r\xe8\xa2}\xa8\xcb\xeb\xd3\xfe\u007f\xbf6s\x9f\xfd\xf5/k\xf2\x12I\xb4ySo\x90\")A\x87Dh[*$B\xe7lB.<\xffo\xf7\xef>3\x1f\xac\"}\xa8\x8d|\x03\xa8\x03\xd0e\xe5̇\x82\xeeWѼ@\xbc\xf3^\x8c\x96\x9a@ՠ\x85w\xe9\x84elo1]%ߔur\xe70_\x89(oݙ\x00\xcb\ue81c\x88\xfc\xab\bx\xe8\xb66\b\xfbzn\xc1\xca\xfe\x0f\x10\x00HD\xbf\xd7\x1d\x0f\x97\x04t\x15\x06!\xe9\xaa\xfa\xf7S\x1ct\x89\xb0\x8b\xf0\xad+\x18_\x9aph\xa2a\x90\xa6\xebn\xd6\xf9u\xdaNS:\x93N)2\x96\x89#-\xa6)0C\x0f\x9f=\x04\xf3b\x1e\xc4<\x98\f:L\x0f\xfd\x0e=\xcc\xe3\xff\xeb\xb4\xe7\xbf\x18\x196\x87\x838\bI\x16X`\x8c\x19\xe7\xf1\x84t\x83g^\n\xa1}E\x1f\x9b\xee\xb5\u007f}ƀ\v}\x95m\xb9\xe0\xe3\xff\xb4\xe9'\xb5R\x1b`;\xe8u\x80\r\x1ct\xfc\x81\x05\x1f\xc8\xf1\u0378\xbaI\xd1\xee\xb6\xd2\xfd\x12\x11\xf4\xa4C(ob\xad\xd6\x1a\xd3\xf9ꬊ\x9fAcb\xad6C\"\x172\xa5\x93\x89\xff\xbe*zw\x98\x0e\xad\xab|-|\t\xf50\xd0\nx)\x16\xf8\a\xdb\x1d\x9bԂf\xef\x1f# \x1a\x82`x~n\xbd\xe5\xff\xeb\xbf5\x1b\xb01\xd8\x18=ؠu\u007fE\xd46`\xa4\xb2Q\x1b\"J\n\x98\x9b\xc90Q\f\xb0\xc0(\xf0\x0e\x8cD\x0f\x8cS\xef\xe4N\xcfh\x8c;=\xbd0.\x8cK@a'j\t\xa4\x89\xc5\xfb\x16\f\xa8\x8e\x1d\xa2\xacX\xddc\xc0\x0f\xe7\xfc(\xf9\xdc8\xed #\xb7}\x10fB\x05\xae@\x17\x1a\x99\xb9Z\xf7K\xd2r̜\xc1#\xbc@K\x84Gb\xe1ZE\xae*\xb3\xea@\x18 u\xfc\xa0\x18\x92\xf4\x11G>\tSgw\xec\xcc>Y`r\xef\x90\x18\xc0\xe0F\v\xfe\x97\xcdRo\x95\xfdߣ=3\xc7\x17\x1aC\xe2\xe9\xe9\xdd\x1d\xd3l\x97v\xa2+\x1d\x04\x89^\xfa_j \x8a\\\x8e9H\x04F\xa8\xdc\xfb\xa9\xea\x03⯀\x14o\xa9\xad^\xb1\xa2\xdf\xf4h;\xe3o\xc3\"\xac\x87\x95G\xcaN\xad\xed\xe7sj\xfcK\xe9N7yh\b\xb4\x1c0$<\x100\x14!p!m6\xd4\x19?\xee\x83\xc5\xc6\xdaZ\xdb{\uec6c@\xc12\x06\x06\x92\x86\x9ad\x18l\xeb\x11\xfe\xff\u007f\xa9\xda\xf7U\xe7\xed\xaaf\xf2\xad*\x06\x87\xd7=\xa4\x98l\xab\x83\xa3\x1c_\xcc\x00a57\x92\xf1\xfaq\xb2\x16^l\x80-0\xb3C\x01\f\xb2\xe4\x193 (\xd8m\xcbV\xa0\xc8ζ;\xdb\x06\x88\x0e\x93\xba\xfdN{\xe2\xff\b\xe2aý\xc0S\xd8\xd0:C>\xf1AM%\xb4\x85\x00\xa2\xc86\xd2+nc\x86\xff\x15\xbfl\xael\x01DLd\x978\xa8\xf7TRӔ\xbeg\x19K\xdfvD\x82M\xc4\xd4\xe1L\x1d\xbfl\xb6\xfc\xff\xaf\xea\x05Ü\x9c\xa1{^\xf6Zۅb+\xc6\x1f!ӒH.w\xfeK\x9d\xff[\vG\x89SL\xc2\xeb\x15^+{\xc2\xebu\xf9~\xa9\xab\xbf\x9c\xb9\xa3\x9143\xbe\xb2g\xc6w\xec\xb1\x18cY\x91c\xd9\x184\x92\xc7H\x16\x0e\x96d\x13!\fg\x18dp\x04\xf9\x9f\xc7oi\xff\x1d Y\xf4sf$\xe4H6&\x92\x8d\x89\x05q\xbe\x8d\xc3+\xa5\x92\xbc\xc6+\xb5\xaf~\xa9\xab\xbe\xab\xab\xe5_\xec\xfb\xf2/\xd6\x1f\xaa\xb5H\xa1\xc2\v闢!\fM\xe3\x97%\xf8\x13\x11v\xee\xd5\x1c\x11*\xc2\xfd\xff\x95j\xd5\x15\x94{\x1a_=fw\xac\xa9\xe9u\xe6\\\xad\x19\u007f\x9a\xfb\x9e.\x88\xff#\"\x99\x11\x19\x99\xcaL\x80\x14\x90\x00)\x18\x92\x03\x80\x94\x04'\x15\x9d\x94H\x82\xacD\x12\x90H\xaa\xaaWd;IU\xf3V\xa5ql\xaf\xf1\"AJ-ReTƯ\xf7\x87\x8bڸZ_\xc7\xf5\xa7\xe3\x1e\xf7p\xde\xd3n-\xffg\xa9JF\t\xac\xbb\x92r\xf5-\xa5v\x0f\x93\xe4\xb7l\xa8E\x81\xc4\xe8\xaf\x15P\xaf\x1f\xdbN/\xfc\xcf\xdb\xf6\b\xaa!蛑F\xf3hw\x9c\xa1dW\x18.\x04\x91LDĝ\x9fw\xedϤ\xd7\xfc\xc3w\xcf!\x87U\xab\xaa\"\xea\x89\xf1\x8c1\"\xf6\xd8O\xeb3\x18\xddb\x9aA%\xc6\x1eD\xb1`\xc1\x92\xb0\xa5\u007f\xddݫ\x87\xccU\x8fm\x8b\xed\x8b\x1e\x16P\x10\xc1\x06\b\x9a@\xca$\x99\x10\xf9\x9f\xd8&\xff\x81\xa3t\x9bl\xef\x88R\x0fڂ\xaf\x882\xda\xc2\xfay/s\xf5O\xb7^k\x9f\xf5<\xbf\xb2J\xb5P\x9a@ m&\xc9\xe8\x8f\xe8\xd6/P\xef{\xfb\xab\xb8z\x8aP\xc6\x14\xdaBW\xd2d\xbf\xe4%\xa82ZEGN_H\x1a\x8a\f+:\xc4\xfd\xfa\xffKu:\x9f\xdfn\xab\xa1\xc8?T*\x95\xf2\x19\xcc0c\f\xd9\xee}\xef\x8e\x00؆\x8fy\x85\xa9\xdf\xf5\xb3\xc1u`\x1a\x92\xaa\xa2\xa9M\xc9 \x1a\xf7je,\u0601\x8f\xfc\u007f\xe5s\xb88\xd4\xcc\x03\xdcö\x19MV\xfe\xf1\xb6\x9d\xcb\xfdA\x9d\xcf\xec7\x9d'\U0007f5c5-\xba\xbdk\rwd\x17\xee`\xe2\x00M\xab\x1a\xd2ly;2<\x9c\x91\x94Q\xcd\xca\xe6\xcf\U0003f584g\xf8\xdeH\x14\x96\x8eӈzハf\xb0\xd5N\x0f\x10\x14\x89%RX\\\x95\xce\u007f\x86T\xae2y\x91OAY\x9bq\u007f|~\xff\xf9\xa7\xef\xbf\x1aN\xa4k\xedѿ\x91|\xb1\\m\xae6\xfb\xfb_\xd5\xfep\xba=\u007f\xd3\x0f\x92E*\x17\xf8\n\x13#^\x1a\x9a\xa5\xb4\xd8\xfdG\xe2\x884\x96@b\xb2ڝ>S\x99b\x8d\xceh\xe1\xff9]\x1e_[\\\x9f\xa2\xb8J\xb2r\xf3{\x15v\xedS8\x9e\x92QR^\xd3\xd2Wo\xbf\xb9\x92@\x90\x12\x80\x9a\x18\x12HB\x83\x16\x00\b\x04\x02\x1a\x16\x01\x15\v\a\x9f\x98\x8a\x9e\x91\x8d;/`p(\x04d,Jz6.\xdc\x00 T,\"2\xaa]\xb6v\xe6\xbc\xc5k7lٹo\x93\xa6Μ\xb7p\xf1\xb2\x15\xab\xd7mں߭\x96\xad\x97b\xfdT\x1ak\x92ZA\x11q\x199%Um}c\v+\x1bGg7O\xef\xfe\x13UR\xd756\xb5tv\xf7\xe2M\xa4\xa6\xa1\xa5\xa3g`jek\xef\xe2\xb9]۳\x9b\xa2Ǎ\x9fo҂\x8ahRh@HTBrFNYECWπ\x90\x88\x84\xa4\x8c\x9c\xbc\xa2\U000aa9b6\xcen\x81p\"5=\xb3\xb0\xb6\xb9\xads_\xf7\xbc\xa2oZG\xf6\xf1\x99|\xa1C\xb7\xbd\xf7\xed\xc8\u0604\x82\xaa\xb6\xae^Mjv\v;\x99\\\xd0\u007f\xba=(GF\x90L\xeal\x96\xcf\x17]\xf9\x12\x14\xbb\xc0՚_M\xbc\xb1\xc1\xe1k\xdc\xe8\xdc\xd2T\xea\x10z\xa8IZ\x0f`<\x9c\xde}\xfc\xfa\xed\x17\xcbXx*\xdb\xe8~\x05\xb3e\x811\u007f\xe0\xee\xf2V\xb9gz6~\xb1\x13\xff\x1bK\xe5de`~|\xfb\xf4\xeeų\xc3n3\x1b\xf5\x1a\xa5B&\x16\t\x05d\x12\x8a\xc0\x80\xab\xddf\xb5\xe8\xb4\x1a\xb5J\xa9\x90I%B\x01\x9f\xc7\x05\x02\xdc9\xec6\x8b\\&\x15rYD\x02\x1e\x87\x06\x01\x01~|y\xf2\xe8\xde\xc9ѵ\xd1\xc0\xd0\x15\xf1\xdbO_}\xf4\xd2\xd9\xd1VUQ^V\x9c\x9f\x97\x16\x8d\x84\x02\xdd:ۛ\x1bjs\x92C\xfbPVR\x1cگ\xf8_5q\xc9\x19\a\xb6\x9d\x84\xb6b\x16G\xb1\u007f\xbc\xbdޟ\r\xd6\xe0i\xc19\x11\x8f\x86\xf9\x98\x19\x9fee\xa4l\xa5T'-N\xe8gs@\xf6!\x9bх\xfaP\xe6]U\x0fva\xd6\xcd\xedxtAP\xf8\v~Y\xe2\xfe\x19i\nu\x00\xde\f\x00%\xb4.!V\xb3\x11[\xc2\xe8\x1ae\xa1\x99C\xa1\x05\x8dn\x12\xb4\x14\xd1=\xd0#+\n\xf45\xb6C\xebR@\xc7T\xbd\xc8Vi\xb211\x87s\x8a,\x11\x99\xa3\xc9\x0e\x8c\x11\xa57\xb5\xc5\xd2\x02\xd00N\x97?\x12\f4\xd19W\xac\x89\x19\xf6rG\x84\xe6\x99i6\x8d\xe4B\xa3\xacf\xb3\x143a\xccB\xdaQM0\xb2\x94\xf1\x88X\xc3\x02\x8c\xbcW\xb0\xc2\xdea\xd98\xab\x0e-K\xbd\xa6\xb9\xd0Mm\xbb|b\xd6\xdax\xf3BC\xa9\xe1\x19\xcf/\rP\x16\xe5\x13e\xb9\xbd\xcb>B\xe8\xb0TwP\xeb:o\x90\xf7\xca\r\xcd\u007f\x88\xaa\xdelNTW\x13\xc7\xe3\xc5js\r\xa5 _\x9eK\xd8UC:)\t\xa4ʪ\x1a[~T\xf9=D>\x88>T\x8b\xfdm\x92\x8e\xda0\xf4-\x80\a\xf5c\xfc\b\x1f\x14p\x05i\xc2\xc4\xf3\t\x90\xa0\xca3\xc3#\xb8/\xd6oa\xfaeB\x01fODo\x8d\x98\xc9\xe1\xfd\xefD\x0f\x1a\x8f\xe6\xbfs\xfc\xf3W\xba\xd4\xfa\x1f\x80\xf1\"\xc1\xa8\x92\xe0\x84|R\xefT\x1e\x8b\xf2\xd7\xf1\xff\x00\xa4J\x81\xf2\x85\xac\xf4\xb0:\xec\xe7\x8b\x0em\xfe\xb9#p^\xe5$q\xe8\xba\xfe*\xb9\x82&\"\xdb\xdfv^\xac:ڭ\xc9\a\xa5\xbeDZ\x13\x01\x8d\xd8\b0\xf7s\xad\xae\xce\x04\x84\xa1\x1b\x96\x9b\"\xc9\\8\xcd(O\x14?\xfaңzLn+\x19\x9b\xb2\xccı\xc9\xf8#\x8b,\x818\x1f]\xefy^X\xb8S\x988\xb0\xdc\xe2\v\xf8.B\xf7\x9b@TϾ\xab\xae\xeb\xf5\x05\x809\x81\xbeɅ'\v\xb0\xfd\xad{\xe9\xe2\xf3{\xccRE\x9b\x85\x8d\x1a\xaeVmT@\u007fh\x97\x85v\xaf^K\xa9\x9b\xfb\xc51\xdf\xd4<4\xe0\x92+\xd2L\x00\xf8\x80\xbc\xa0\x13\\Z\x84\x97e\xdfSz\xcdIV@\x00D\x8c\x9dk`\xb99\x9dP\x96\x01G '\xe4\x1bXYG\xd2\x1f\xebש\xa29A_\xb03\xea%k\xe9\xde;\x9f)\x95\x1d\x12Ugm)O\x1f\xd2t \xfa\xa4\x94Q\xf8\xad\xf4\x82\x98\xd3|>\xf0\xfd\xe1\x0e\x8bt\xa6f\x19e\x90\xd2:\x83B\xa3(t\u007f\x88\xadt\x83\xdc\xda.\x16Z]^\xad\xd2TYŢ\x12\xea\xd0-\xb1\xb5\xdc\x1eܸ\x1a\xf1\xce?\x03\x9c\x92#\xd7eƖ7\f\xdf\x120\xaaL\x04eus\x9aG4\x94U1\xba(>S\"\xa5\x01_\xb2\x12\x0eD\x1e\x91T\x10\"\xf1\xd1\x14\x00ȇcHi\"\xce\x18\x80\x88'\xb4\x81\n\x18\xbbk\xd4\x11\xbe\x9fd\xa8x\xb5\x8a \xb5;\xf5\"\x8e4\xfc\xc4\xfb\xc1\x01\x8f\x12\x80\xee\xca\xcd\x01\xbd\x93\x9en8\xfe\xc0\x02B\x8bA\xc0\x0f/S\x0f\x1ao3\x1a\x15 \xc4\x02fD\x1d]\xbeI\x1b]o\"\x95\x94\xa8,?P\x1f\x82\x8fTL\xa7\xe0\x97r\xca\xec\x8a%0 $-\xce\x15\xc6\v\x12\xd3\xc0i@.Q\xd27\xb4\v\xac2~\xf5(\xc9R\xeaMr\x9c\x16N\x92\\8z\x92V\x1d;˘{\r(\xb3\xfd\x19N\xf3a^p\xb5Z\x12\xff\x93\x9b\xf5\x19\x87qD>I!Đ\x94\xfaE\xfbT\xca\x12!\x9bC\f\x85X@qdl\x84\x8b\xa7\xe2Q\aQW\x8c\xca\xea$\x8dj\xa3\xd1P\x1bF7\x8bi\xbd\xaa\xc5rM\xa2\xd2Н\x88\xee\xa25<\xb2\xb1\xe9\x1en\xb9\xac\x864\x1e\xef\xe83\x12s\xbd\x9av\xc2k\xa1^n\xdd.\x06\xe8Q\xb5\xbac\xb5ǪQm8\xea\x905\xaa4'\xb0\xac\xa8\xbe.\xb5\x0f\x87\x9b\xf0\x91\xaf'\x88\xca4\"\xe1i\xa6H\xa2͘\xb0Ϗ\x83\x01O\xa5\xa5\xb1\xe9\x033D\x8fP1ˑ\xe8@xrI\x13\xb1\x99)\x80\xbf]\xa8?\xa2(]\xccO=R\xa2\x9c\x9aYЕB\xc0\xbcHF2WSHLy\x11\x163}ڇ}\xd6\x06-\x90\xfe\xda2ʻE\x95bN{UGt\xe0PIK+P\x16Aa\xb3\xce^6[{)\xe8\xc5\xd5\b\x1f\x9c\x93|\xbct\\\x13|QT\x18\x97\xaa\xa3yc\xc7/)1\x913\xf3\xe3J||\x11\xd9X\xf5\x94n\x8a\xafg\x01\xe5Ne\"{\x1e\xbd\b0\xbar\xa0\xa6\x1f\x9ackd4\x87\xd0'\x80\xed\xba\xbb\x90Ӥt\x1a\xd1\xc0\xebD\xcf+\v\xe8\xe9DDa\x0e\bm\x9e<\xdf7\r\xbeQ6(\x83\x18@\xfe\xf0\n\x98Ş\x81O\xccIyo\xc3A\x95B(\xe6\x1c\xea=Ӓ\xbaz\xf8bbe\xe9i\x19p\xf8Y\x86\x06\xd5\xf2<|y\xe6z4\x93\x96\x92\xf6\xdc\vT\x1bn\x10\xba\xca;\x8e\xe2\xbd:}\xb0\xfa\xe7\xde\x14m1CT\xc6\xc1\x0e\xcb1\xa4\x9d\x92\x95K\xa0 Hs\xe3\xbeK\xb4\xd1>\x9b\xa7d\x12\x19!|\xdb\xd0א\xe6cS\"\xe1\x93Ti\x1f0\xfd\x9a\x11\x90\xdb\xdbwd]K\x95@\x94\x9b\x19\xe5\xe8\xacv-L\r#\x1c\xc9\x10o3\x17g\xad\xb4\xb3\x97Ҡ6k\n\x83,\x8d\v\xb4^i\xf9\xeehRn\xe6{j*\x11m4@e\xe9\u007f\xadN\x19\x81\x1d\x991\tk*\xa6\x1b\xe4\xebz~_\xc7\v\x11u\x9c\xca\xe9\x00c^\x83\x92TC\xaa\x80Y>B\xe2\x87]\xd8bz\fsRt\x83l:=\xb5k'\xe3:\x88\xb8\xb1\x05\xbe\xe5x&;\xe7\xf5\xa5p%ʳ\xc5\xff\xc2Ӷ\x80\xea`H\x03\xfb\xa8,{\x9cg] \xf6\xb9\xec\xc1uc\xad \a\x9d\xae(\x9a3\xea\xb9̐\xfe\xa8\xf4%\xf8fi\xccu\x0eߺ\xa6b\xcbmo\x18\x8f%u\xae\xd7\x157W͕\x8d\x9c\x1b\xb3}\x85\xdbsc0D <\x03\n\x12,\x86\aR\xb2\x1e\x00X\x0e\xeeF\u007f\xad\x12.1\xa6\x83\x8b*\x82\xcdQ\x95\xca\xc9\xd2c\x9c\xae\xd7R\xf4\x90\"\xfeΜ\x14U\xb3\xcas\x9d\xa5\xa7A\x1aL1V\x1e\xe3\xa9\x00\xbd!u\r\xd8\x19[\xc57\xbdߝ\xf3?\xa9/\xc1W]Y27\xf5\xc9\xc6 \x89\xcbZ\xee\x87\xed\xb3ǜ\xb8\xb4|\xeb\xc0\xf3\x89c%^\xad&\xe1\xe5\xba\xc6\xde\xe8Cvt\xd3\xdc \x06\xa9\x8ceZK\xf3\x15\xe8\x94W\xed\xdaTb[\x95P\xb0\xf3ԍ#C\xa1\xa3\xb8\x1ch\xd5\xd4Zʱ\xe1\x03ј\x8f\xad\x18d\x83i\nOD\xbf;\xec\xa3\x102ԞȢ\x0e\xc3\xe1\xfc\xa4\aiQ\x03\xeae\xa4E\xf5O\xcck\xecP$\xb0\xee\x8b9)\xfbR\xd6p\xe03۱\xfa\xa8\fK\xdau\xab\f\xf4\x93RO\xecnL\x8c\xa8\x02\xa2\xc8ϕ\xe1R}B\xcb1\xc6۴\xb6pRC\xb1\x13\xbe\xf96\xe7zE\x91\xdf㞱oOL\xa5\x05]\x0et\x1a\xcfa\x9b\xd3\vO\xf6\x1c\xe8\xa8\xe5\xed\xb4\x96[\xaf\x9f3\xfd\xd2J\xb5\xbco\x94\xb4\x8f\x00r\x89\xf4{\x93\xc7\x147Vp\xe3o\x8f\xebt\xec˖g\xba$Ƙ\xae\xe5 I\x95\x01P*]W\b\x81\x1a\x18\xf0\x9a\xc0\xe5J\x8d\xb2gM\xd7'\x04iQty\xb1\x81X\xa9\xb2*\x81H\xa6\xe5\x98\xc2 \u007fLK4O\x92\xda[\xa0Q-\xfb\xea%\xd7(\xcc\xe7\xdf\xcb;\xfe~73\x18\t-\xf9\xa0\xde\x0er\x18Xe\x94G\xea\xbb\xfe\xaf\xdcc4\x91j\x02f\x106\x11\x91`\xfaj\x1duM\xb2\xa61\x1d\xba\xd4#}_\xb8\x92y\xad\xd6\xe0\x8b囤(\x8cD\x1d\x90\xe5\xcf4\x93\x84\xa9\x03\xcb\x03\x9dC\xdda0 Ͱ.:\x05㿌\a\x0f\xb1&\xbb\xbc\x85%\x8btJ\xbb\xa4\xc4\x05\xf2\x84\x8cm\xae\x86:\xc7\x18\x95\xaa7'\x04\x83ѐ\xcf\x12SN\xaf\xd5\x0fE\x06B&\xc4\xcd`\x99K\x92\x8d\x81\xe0\xc2\x17*@\x9cB\xbe\xe7\xb3\xfe\xb3\xa2\xe1&\xe6\x14\n\xf0G\xa9\xbf\xc2a\xb5\xa8W\x89:\xc0\x01\x82\x9a\x88\xed\x88\xcd8\xdc\xcd~\xb2B\xe9\xcd~v\x12.7\u007f\x00Nw\x9f\x84ⲻ\x1e\xc7\xd3\x15/|\xd2B2gv>\x8ay\xe7\x1e\x1b\xbe\x15\x9aQ\x05\xec\xfe\x87\xb5K\xdf\xfb\xfcw\x80\x15\xef\u007fR\xa9UCTu\xac\xa5\xc1\xfe1\x1bۍ\xea5\xa0\xcec]ޖ\x9a\x1a\x97w\xb4\xc8%T\xed\x8f\r4\x95\xf7\xb4\xc9zzX\x9e\x82\t\x10\xeb\xabS,\xf0T)Űɞ\xb7y`^\x9d\xf3\x0fB\x8f\x1f4\x99\xdcG\xe7\xe6\xf6\xc3\xec\x14dc\xc6BR7\xb9'7\x1c̬\xceq\x13\"\xd96\x1a>3&\xd6@\xbb\xc1\xf5ѕ\xb4\u05fa\xa2b\x86ܠ\x125\r\xa8\x87\x8f\xe1\xd0,i\xd0(V\x80@\x1am\x1e\x91\x81oz\x9d\xb0v\xaf|\xceq\x19\xd4\xc4Q!\xd2\x03\xde_s\xa4\xc7Rb\x00\x95\x99ǕW\x0fG\x81\xa6\xfb\xac\xaf\xce99\xa9\xefIí3\n2\n\xc4\xceQ0T\xab\xab.\xa9F\xf6\xf7\xe3\x9c-\xce;\xf2.\xcc'T;G\xb7\xf6\xa8\x1e!\x99fr\xef\x0e\x89^\v\tdv9zkG\xfe\x813\x95\xd8\x17v\xf0\x87\xa6\xd5\f:\xc2\xd9|\xa2\xf6\"\u007fr\x15e\x9c\xdfA\xd3!\xb4\x1b\xe97\xde\u007f\xe6b\xf27|\xfc\xcc}\xaa\tf輍\x95۳\xb8\xb5\x04\xeaq\x1f;\xaaL\xe19\rL\x9f\x02\xe5#-\xadG\xe3\x1c\xa6\x80jg`r\xd4-\xf1@-\a\"8ש\xb1\x957ޗM\x95\xf4\xdf+L\x19\x8f\xa6b\xac\xf8\xfeK\x91\xd0\xd1\x1e\xd9\xd7=\xee`NI<\xa8a\x98\x1d\x9eH?f\xff\x92xf\xaf\x91\x146\xf2s\x8e\x9d\xad$\xa1\x13x\x96\x98\xa9\xf6\xa4\xb1p\x13\xe7\xfd=\xeaʮ\x10܍1\xad\xb1\xe1k\xdd\xe8\xc0\xedb\xd6\xe3\x80U&\xe3H\x83\xc9{\xdf\xd6Z\x80$5\x81\xf3\x99)B\xe4j\x91\xee&\x19\x9b\x9cn)0\x1e\x8c\xfb\x82\xba܃\xf4\xd8nS$~\x8c\xab]\xae\xbc\xe8v~p\x19\xd0b48.\xc7ѩ\x9b\x1e\x8az\xcf\xca\rK\xc7F+\xf2A\x90\xf4#\xfdud4\x1am\xac\a\xd4\xc9Z23\xd9\x0f\f\x0f\xf6ǩ\xb4\x96\x1a\xb1\b\xea\xfb\x90\xfbL@u\xaf\x04\x92\xab\xd1\x0fƂ\x1fZ\x8dϙ+\x13|\\A\xf7\x85_BB\xa3\x96\xb2$\xf5j\xb1\xda\xd0\xea\"#\x898T2\xb6+kOT$\x87\x9dI\x11N5)\x14E\xfa\xa6\x06\xe8\xdbA\x00\x85\xf6\x1e\xbd\xdcp%\xd3\xf3\x81\xc6\xd3V\x18\x04\xbc\xa2<\xdcKJ\xb2\xf2\x00\xeeG\xe36(}E\xfeɊ\xd6\xcd^\xb7\x18\xd6\r.\xb1\x00\xbdT\xa0~\xb0\x95\x19\xae\x05\xe4\x83\xc7z盠\r,?B\x9ao\xd0\xe5!\xb5\x9f\xaf\xd0s\x84\x80\x16\xa0\x87JC\xd1[\x87V\xd3'y\x81+\x11T<{u.\x8f\xd4\v\x11\xfeU,!\xf37\x16\xbc\xb7\xcb\x00|\xc0\x88\xc5\xec\x8c$\x96\x01\xfc\xa3\x97\x05\xc9\x03\xf2%\xf7\xdej\xaepgY\x19s3\xd9sr&R*hr`\xfb\xa4r1\x0eUCy\xbe\x99˕&r\xf9\xf1Bޙ\xc5bW\xb5\xa4\x9b\x9e\xd8=aI\xff\x17\x1a\xe5L\xa5\xa7\xc86\xb2va\xd4V\xaa\xab\x1b\xbbwʥ\xe5\xf5\x9d{\x8b\x85\x91\xcfH\xf8\xe0\xdeޢz\xf8\x183\xd5\xebV*\xe0\x90\x98\xfb\xc6\xe0\x96\xaeef3\xfe- \xcd&D\xb1I8\xba\xbb\xb3^aD\xb5\xea\x962\xa5&\xd3\xcd\xf8VF\x18\x90ڵ\xff\xc7\xd3\u007f\xfa\xe6\xbb\x1f\x9c֨\x9d\x1d\xd1Ȧ\xdf\x1eu\xcc\xddq\xee\xab\xfcO\x13\xcb/\xb8\xef\xec\xc1\xe2\xea!C\x93\xaeӎ\x03\xc5ҡ\xe8\b0A\xd6\xcb\xd1h\b\x98\"\x8c\x97\x03\xa6q\x9bg\xf7\xf7\x83\\\xbev\xfdz\xec\xe7|\xf6\xec\xc65\x90w\xc7+\x02WWn\xdcH\xf3\xb9_\xbe\xbc~S\xa0\x82\x9e\xeb\xc2\x17&\x9c\x96\xf9\xaf\x95YTb-\xad\xba\xc8\xefI\xe4x\xae$\x90M}\xefƦU^8E\x18&\xf7\xab\xe8\xb9x\x86\x04P\x89\xb0\xb1\x1a\xebW\x81\x0f\v5\x11UЈM\x8ciq,\xf5hI\x11\xd6xXX\xd9g\x9bZ\x05\x9a\x89\xb4\x9d\x8e\x99\x13[\xbd<\xbb\xb1\xa2\x12.\xbb\x86\xe3\xb8Q\v\xe0n\xe2\xdb\xcd\x01Н!\xa6\x94\"5\xf5k\xfe\xbf\xefijq\xc6\xc77\x88e\xc8QXcv\xc8}\x84)\x8c\xccX;\xfe\xb7\xccU\x13H\xd5F\xf1\xc9\xcc\x1a\x99\xe4\xeaR\x1cZp}\b|~\xf7\xbc\xec\xf1DL\x0e\xf8\xc5\xdb2\x14#7UG$\x13\xaa+n\r\xab\x88ݹ\x84C\x16Ob\x9f]\xb8\x87\x01\fހ6@ݽ\xe3r\xc1^\x06\xbbu\x87\x84Ebڣ\x8a\xfen\x95\x8ai\xb3C\xb5\x9e\x91@\xac`\x01O\xe5\xefy\xfb\x06\xc9yn\x93*k'\xdd\xee܃||\x83wk|X\xad\xe4\v+\xc2Ȅ\x98Ѣ\xb6\xaa\x12]\x1eE\xf8\xfd\x8eme\x8b[lw\x1f1\x90\xb8\xc1v\xfcn\xe6rӞ\x02\xe6^\x11\x98nF\xf3\x97\xe2\x9ds\x9e\xa9ꕙ\xbb9\xads\x95\xccN\xae1ctRޙ\xc9\xde\xe1U\u007f\x9d\b\x1b\xba\xf5\x97S\xa7\xf9\xa5\x8d\xbeȉz<\xac\xe2\v\x93\a\xf0\xc3\v\f\xc6\xc0\x16A\x84\xac\t\xc9\xf0ƴ\xa4\x9e0\xe0\x87\x94\x03<\xe6\xe3z\x90+D\"܊]\x8a\x03\x96\x9a\xab7YNuˡʥ\xf8 \xf6`\xa7i(\x13\x0fj\x82fb\x1b\x19c\x89>M}\t\xf3\x9f0\xe3|Z\xb6Ql\x8f5\xf3\x10M\x1f4V\xcd\xc3dY%\x82\xedo\x11\xff\\\x923\xf1<\xf98\xf9\x95\xad\xae\xc4^)\x8eӒ56kb5\xed\xab\xa61\x90@\x19ː\xfc}\xad\x8b.\x99\x86R\x89->\xc9\xf0\f\xdaj8Ƌ\xf5i\xf0|1u=X\x8ch\x06\xdaɈ\x01\x16\r\xa3\x027l\v\x8a\xab\xa8\xa8Y\x01j\\>0y#@\xb0\x80\x83\x04!\x18\x01\xec\xa8UA\xa8\a\x01\xd5N[hv\xdf\xf8җ\n\xd6\x14\xf3?\xb5]\x1b\x1b3U\x1a]3\x15\x9e\u007f\xbd\xc5\bC3\xabj\x1e\x19\xe7蛬\xa2\xd0d\xb6\xb3\xb3\x00\xbe\xd2\xf5Jٮ\xd9\xc2ʊ+\xfc\x02\xa8ϧ\xe0g\x1b\xdc\xcb\xca\xe5\x94\bVoT+V\x99\x96\x8c\n0@\x97:\xc1\x96\xc7\xe6Eq\xb2\xe4\xee\xdfB\xe2\x9a@\xc5O$L\x1b\xad;PTU]}#R\r\xa1]-\xa4\x9a\x06\xcfuw?\x02\xc1\x12\x03(YU\x1e\xb2\x11\xc2\x15\xa7̒\tIvp\x83\xf9\x99\xb0\xa8\xda\x15\x80\xff\xc4\xed\xd4g\xbe\xf9\x87o\x04\xe5ym\xa9\xb1O\xfb\x86\xdc\xf8c\xb6\xb0\x11\x05`ec_n\xe5ʼn}\xbe\xdc\xd3K\xef\xf6Vn\xd4\x042\x8e\x05*\x19\x10'P\xf2x\xc9x\xa4\xe3\xae}c5\x81)\x8f5\xca\xfe\x11\xb3\x17\rZ\xf6\xa9\x87\x81\xec;\xaa\x97X\xbd<\x19V?QaT\xe2/)Uz\x0f\xc46W\x001^A\x06TL^\xf2\xa0)\f!\x89\xc0\xf6\xa2lIQ\xf3\xb0\xd1]\x98G\n\xb8\xf5\xf84/\x87\xb4\xdf3\xbbC\x0f\x93\x04\xc8;=ޡ귑\x96\xa3\x01Ɂ7N\xfb\xb1\x9cl\xdf\xfe#uM\x1a\xfd\x80\xc0\xa8\xcc\xf3\xf6\x03b\xc1G\x02\xc6\x18\x89q\xc7c\xc2=vǹ\x80\xc2\x14\x13H\xc5\xe0 \xa9\xe9\xb1v\xa7AN`\xdbY\x0e\x93\x19\x1a;O\x05\xed\xb8Qi\x1f\t\f\xab9\xff\xde\x13\xbd\xbb{:ں:\xe9\xf0\xdd{#Cwn/\x80>\xe8\x1b\xc2)\x86\xcd\xf6\xfc\x14ڌ\x8ai\xfa\xec1\xa8\x1f\xb1\xb5\xdf\xf6$\x830\x0f\xa1\x90\xef\xe1/\x9b4\xdd\x11\x1c\xcdő\xd9Kc\x19\x13\xe8\x04\xdbG\xfd4x\xa2\x1e\xf9e=\x8c\x8asUc_k\xc1RW\xe8͓\x15\x8d&FB8hl#\xb8\x84\xb9\x84J\x15\xbc\xd2\xf3-P\xb9\xa7\xcb\xd68?7Z\xd5DG\xce\xed=\xb6\xafB \xfb}\xaa\xa17\xd3=\xe1\xb1\xcc\xc0\r\xc9\xf7\x03\x1c\x0e\xa0[cS\x96\xf1\x9d\x9ef\xaa\x97\x9f\xa5t\r\xc6%bc\x1e\xfb\x91Zײ\x11\xf7\xbf(K\xb7G4\x99\"\x98\xa0\xfe\xa0J,\xc6\xfc\"\xe1K\xe0\x1d\x8f\x8e\x8f\xf1r\xe0\xc7\xee\xac,j\xd1\b\xae\xebh\xc2r\x98\xc2\xc8g\x8aJ\xa6\x00\x16\xfc\xc0\xf4\x93\x160\xe8\x8d\x00{AT\x13\xaeZD\x87W\xde}\xaf]\xb4\xb8\xe9\xfe\x9d\x1f\x90\x18\r\xea7?z\xe6IWXsD\x94%\x8e\xd8J\xb5\xdbi\x1a\x91\xd8ͩ\xee\xb0\xdf,\xaf\xf0p\xdf1\xee\x1d\xb7+\xa5'\xf9\xcdT\xfe\xaf$\xd0\xd1H\x02\t\xa911\x97\x01R\x00:6v\x05\xcaW\x98\xed}\x90Ko\x0e\x98\xa8E\xfcʅϤN\x12\x8bmik\xe6\xa4\xd3\xfe\xf34\xc1N[\x1a\x8e\xa5})\x1d\x8a\t\xed\xb4\xdfn\xee\xc5pF\a\xe6\xda%\xcb\x13\xda\xe9\xd1\xc3\x03\xb2.\x10A\xe4ݺ\xb9\xb7\x83\xd2&\x99\x1fD\x0f\xea\xdf0\x9e)\x06H\xb9+v+\xf1\x95\xc5\x10O\xdcBy\xf9\x84\x03\x9d\xc4\x1e\x95\x9f`\fW\x9c'n\x89\xdd\x00\x89\xd8\xee\xa3o\x19\x94\xd5 \x86\x8cd\xa8\xbb[\u0378\x1cW Y\xb9\x1e\x841`R\xc1\xf2\xb4\x14\xfcX\xb7V\xa0b\x18E\x9a\f\x0f)\u008e\"V?\xf1^-\xfb\x88\xa6\\M\x04J\x9e\xb4\xdci\x9e\xe6\xad-\xae\xa5\xbf\xdd\xda15\xeep\x8a2\x90\x8e\x959\xac\xb0\r\x93\xf6k\xf8\x19ĕ`hl\x88\xc5=\x9dgK\xf61\xc4(\xdau\xa4\x14\a\x1f\x8ec\xb9\x9fI\x10vK\xc5M\xfd\xc36r\xbap\x91\x96m\xdc}\xe1\x87p\x992i\xfd\x88%\xdf\r1\x86|\x005\x14\xe7I\xb9D\x8fވ\xccL0B٥\x11P\xd7H\xcc5u{'\xfae\x86\xc0:\xe7\xca\x17\x8f;\x96u\xea\xac2\x9cj(\xcfx\x84\x82\x13\aS\x8b\x9b;4\xb1\xcbvm\x03\xf5\x9f%\\}\n\x9cT\xea\xab\u007f\x88;\x9c\x1c~\xaa\xbe\xf6\xb8\tĽ\xa8?4\xd7-T4]ׁ7\xd6\x05\xf77\xe6\x18\xecS\x9d\xea\xae0\xf4\xf8gjB\xb6\xfb\xe2$\x85\t\t\x17X&\xb1`\xd0m\xbd\x91m\r\x89i\xafQ\xfa\xf3k\r\x1c\xcdm\x9d_\x18\xf5ǎ\xad\xf0\xef\xec\x95\x17S\xdb_\xaa\x85\xb4?\x1b\xfd\xf7\xb9\x01\x0fk\xb5\xda{u=\x1c\xca\xd0o3\x18ݎJ\xd1/\x1c\xd7\xee\xe9\xfa\x95\xfb\xbf\xd9\xdb'u\xf5c\xed\xeeq=\xffC\xedQI\xbbwB+\u007f\xa4_<\xa5\xdd;\xab\x97\x8e\xebE\xbd=\x84\x17!\x1dp\x9e\xe9۫\x95\x98Cv\a^\x10Ⱥ\x1b\xae,\x90še\xd5\xc0\x82\xe4\tu!\x80\x0f\x12\x96s\xba\x97\xf3\x06$\a\xf4k\x18\x13\x9e\x15F\x99\xa9\xfc\xcc\xf4Y\v\x8d,یE\xceJ\x15\xf73\xb3\xd9ޠ\xc3`tc\xb5\xd4]\xa9=\x99g\x18|\x9f\v[s\x8e\x14\by\x8bi\x91\x9aԒ\xca\xdcu\xb9,\xb7{\x85/j$\xb8\xebxim7\x12za\x03\x1bw:\xa2\x9e\xd4\xce\xfd\xa0h\x9d\xc0|!\xecD\xa8\xaf\xc0\x81\xfaTn\xaa/\xc2c:@̜\x83rV\xc5Jƾ]\xf3m\x9extOlMN\xf0\xc1\x0fWͱU\x9e\x9a\x97\x16\u007f\xbf\xfab\xef=$\xccY\trs{۷F\xccX\x8d\x86\xa5b\x84\xe9np\xfc\x8c\x05\xa6Vu\x84\xf7\x83\xbe\x9f\xcf\r\xcc\x1aQ\xb3\x83,\x19\xea\x8bs8\xb6\xa4^\x99\xaa\xfe\xe9eFG?\xf1\xb2\x14\x1d\xd7:\x12W\x18{S\xe0x\xbe\xd4+\xbc\xbb;\xb0=\x9f\x8d\xb0\x9d\xdb\xfd|\x8f'\xaa\xd1`B\xa93-\xc7\xc0\xb8R\xb8\xe4\xff\xb6\x82\xb6\x84^\x15\x89\x8fH\xf8\xcbט?s\xa7wg0p1'\x15\xf6f\x90 @\xb6\xdf~\xd1\xd3}\xca\xfc^\x1d\xf35\xcc=\xaa\x1dd\x94||랳E\xd0TjT\xef;\x85\x05\xb4\xddD\xe4\xe0\xbe\\\xcczC\xac\xfcd5\x9bB2\xfb\xa5\v\x96ND\b\xc9/\\\x88\x91`\xcc]\xb4\xf9:\x8a 줼\xfc\x11z\xa3\xafq]\xe7\xfaN\x11ă\xf5ڒ\xe3\x9ejy\x16^t\x80\x14\xbe\x81\xf64\xe0Ҏ\x00\a\xb6h\xe5\xe6\xd03\xdd!\xfb\x04{(ꋛ\x85\xf7;\xe2\x03\xfb\xd3E\xd5;\xdb\x03\x93\x9cW\xa8\xbdܦwdy\xbfi\xa5E\x94eO\xc1\x9cvͫV\xb0Lx\xfb\x96Ky\xa0r\xf4\xf6\x84\xa3d\xaeb\xe2\x1dQ\xa2\xa7\x05h\x80n\xbe+\xee\xadϟ@w\x85\xd0\xe5\xf1\xa6\x81\x10(\xc0hj\x81A\x12.Z\n\a\xa7\x1d\x9dgBH\x1a\u0605\xa4\xcf\v\xedr\xa5\xbaV\xe9g\x00\xf2d\xe4\xb9\xf6;ԕ\xdf\xca\xf3\x04\x1d\xf7\xb5\xc0i\xc9\v$>h!\x96\x84VI\xac\x99\x1dܥ3\b\xb6\xa8J\xa8[\x1d\x1c\xd4\xf6\x82\xbe.\xb9\x89\x82O\xf7J\xee\xfe՝\x03\xb7\xc5\x18\xe6\x94<\xb7\\LZ\x96?\x18\xa7*/\xcc)i\xc7,'\x9b\xcf\xf0\xd7o\xb6\xbdL\xb5\x9et~\x06\xfa\xa4\xa0M+\xe67I\x962b\xf6z\x99=\xf1L\x877\xfd\x88\x0eR'\xf7\xf2\xf90\x8fu\xcd\x0f4MjZ\x12\xe8l\xd5X\xcd\xc9o\xe1b\xab\xf1\x1b\xd6m\xfb(\xc6\xc8\xee\xc3bE\xa1\xb4\x9dΘ\xbb\xed!\x00\xef\xcd\x15Z\x97\xf5Ԙ,\xa8\xe7\xf9\x86)\x98\xe6\xd3YT\uf1ec\"~\xc0\v\xf9\x80\v\x97\x8c\vg\x88\xe5u\xb5\x0e\xa3\x8d\x90\xee\x8a\x1b\x12XB\x05\xda\x12\xfbx!T\x91N.\xc3 \xba\xabj\xdft\xffN\xd3\xe4;\xb4O㴎I\xaaN@\xd1Z\xb8\xb5%\\a\x89\x12c\x8a<`\xf8\x12\xc8\x1a\x9f\xeb\x1aJ\xfaϡ\xc8\xdag\x1b\x97\xac~\xbd\xc0O\xb2\xba}\xb8\xc0m~p\xd6K\xf9\xd0k\xf9.\xd7\x17\xb3r\xc3\xceQ\xda/ =\x1d{Y\xbc>\xef\xcdQA\xba\xbc]\t\x14\xaf\xdf\f9\x11\x0eх\xf2T\v\xa6?\xb2\xd7K\xfda\x11\xae4\fS\x8b\xd2\xd2\xf0\x1b\xed\xd1L\xdf\x04b\xed#e\xc3^\xcet_\xe52\xf2\xce\x1d3Y\u007f\xfd\xbe\xbe`մ\x1e\x0f\xbf\xa2\xea\xf7\xaf}\xe3\u007f\x00ȯ\xd4\xc0\x9d\\\xeb\xd5\xcc\xf3\xab\\ml\xe4~s:\xe5Q\xd6\xc7o\xf5\x99\x9d\x81k\x19\xbb\xcfC\xcaȈX\xbc\x85,\xf7z\x82B\xcdw\x85\x86I\a)1Ϻz\x96X\x92\x9dA\x91\xb1N\xe7,\xd6W!\x8e\xfa\x97\xceq\xa3\xac\xc9\x1a\x8e\x8eJl\xd7\x153\x02\x867%P\x94@k\x12m\b\xca\xfd\xbbg\x16A\xc2^\x8c$\xa7&J\x1f\x18ړ\xe3\xb1Z\x94\xdeK\x06\x9d}w\x02e\xa6\xc0\xf0->\xbdgB\xedP\x9d\x9b\x94Vh\x8a\x99\x9c\x91H\xd69\xc7\xf9j]bSdK\xb1\xff\xa2@L\xa3\x82\xaf5\xa0\x16%\x11\xc8'\xc4\x1d4\x8d\x0f\x05ny\xdf\xd6\xdb@j\x88\x01\x9f\x89\x9f\x17h`FQ\xd1\xddϦ[>\x9cy\x19N/\xe2\n\xad\x99@Y\x1fZ\xd7\xf0fa\xa6K\xec\x83\xf9\x9bx\xdb)8OBM\xdf\xfe5(\x8f\xb14\xfb\xb6B\xdcz\xe3\x00@\xdaa}\xcb\xe3y\xca\xcb\xf7\xe8\xe2\xaaq\xfa\x1b\x922 \xdb\xf1\xbd{\x0f\b\b\xaa\x1b\x18\xd7:\xf6\xe7\xbbe\x93N\xf6Ӈ\xf7\xef'1\x03X\x8b\xa5X\xab+W\x9f\xc0\xc1\xba&k_J{\xa2U\xdaft\xd3%\xcdpP\x1e,\x96\x14\xf9\xfd\xa8\xe5\x92\xc4\xedҫI\xd2F=<^Ϗ$\xd6]\xe5\xe5\f\xe3\xaey\xe2\xd1\xc2@\xfcJ\bI\xd9\xe4\xff\xe8\xc4\vfx>\x03\b@\xa8\xa0\xe5\xf4uj\xef\x14\xcc\xd2R\xb1\xc8\x04\x13՟_\xec\x8ev\xc68wζɸ\\Jx\xe33\x9ae\xc5\x15X\x92\f\x98\x94\x1b\xfc \x8a%\x90Wn\xab\xf8\xd6ab\xfd\xbd\xe9ѦTG\xdcG2\xb5A^t\x906\x0f\x86\xe8\xeb\x12\v\x90\x13\xca!ځ2\xa8\x80\xcd^\xd4}\xac;lD\x10\xc5#\xe6\x90\x13\\J\xf6\xa4\xca\x11\xbaܿ\xad\xf2\xaaW3{R_0y\xe9\xf4\xb4\xaf\xa3\xe4\xd86\x13N@\xba\x86ߏ\x11_\xa4\x1a\x00\xd9\xe6\xcbg\xc6$v1S{\x18¿e\x98\xcbm\xdeK\xae=\x98^\x8d\xe00\x84\a_Q\xdd\xf5\xeb\xdbw7\xf2N4T\n\xaf\xa5\x0f\xaf\xdf: }\xbf\xd7\xd8V\x02\xba\xa0]\xa0;T\x14>\xf5\x17\x82j\xc1\xeb\xad^7\xa9닝_\xf2=NI\xfcJ!cLyP\xa7\x10\x0f;\xeaZ\x9b\xc0\x1ce\v\xdey\x02z|\x9c\xcau\x9c\x9e\x1d>:y(\xc6!v\x05\x94LL\x06\a\xf9\xef8\xa9-\xfbh\xbe\xca\xf5\x81ʨwQ\x1d1\xc1lcm\x9b\xa8T\xd9\xe3.\xda\xe4\xfdJL K\xb1Tp\xaaVF\xf4d\x95W?܅!5R\xb0\xbf\x01\x8f\xfa\x04\x8c\xa2!u\xfd\xb0\xb1oq\xb0eX\x85Ă\xafX\x0exi\xcc\xf1D^\xfd!\xf6.\xd7B$\x9d\xb2m\xbd\xf9\x8e\xb2\xf0\xe0d\x89\xb8\xa9l\x96\x843Q\x04OP\xfbY!\xaf\xd7\xe2\xf2f\xc8UB\xa8\x8dIB_\xeb0F\xae\xc2\xec\xb7\xe0\x97\x95\xf6l)\xb7\xf0$\xb1a\xc5\xd8&\x80O|\xc0\x9a\xd7\xe4{\xa4\xee\x1a\xfd\xb8\x8d\xaf\xf6\x96\xaacR\x19ߴ\x8b\U000873825\xf9=\xa21i\xf9\x1b\x06I\xb5rh-\xa7\x06=\xc8>\xf7A9?b@\xf5\x9d\xef#\xfbT\xab\\i\x8aԧ{,O\xee\xb2C\x93\x01j\xe8\xacCy\xb5\x9a\xdc\x1b\xf4\x9ds\xa8\xab\xf0ꉽ\xfa\x14\nt]R&N\xae-B\x0fQ\xf3\x912\xd9S\xe2\xf3\xfa\x8d\xa3]\xb6\x85q:m\xb4\x88\xe1IEӸ\xd2U\x19?\x84\x9dN騭\xb1\x1a\xe9v\x9bqD+\x05\xc0\xd1+\x8e\xaa\x83\x87\a\x12CZJ\xfe\v\xff\x8fz\xbbDz\xd6\x00\xd3ӎU\x02\x82\r\xce\u007f\xd1\x17sg?\x8a\x8c\xbf~\x000\xe1e|3\xd3\xd0\xdf$!ֆ\xf3\xf3\xc0\xfb\x8e\x10\x11\xb4\xf15\xbd\x16\x03C\xfb/]6\xca;\x86O\xcc\xcb\xf7]\xc0B\x97\xbd\xf1\x00&\xfb\xa4g\xba)\x0e\xf1\xc7\x19J\x141y\"\xf9Lj`\x8et\xc3S\x9e\xeaWf\xc9\xe9\xe6\xbco\xec6\x8bi\x84\x81D\x04i\x8f\xc4\xe6\xc4c\u007f\xec0\xf8\xe1#\xe5ߑJ\xa5:Y\xae\xd4\xf4\xd7\xe0\x8b\xfa\xe4\x8bRy\xaaZ\xa3\xe5\xcaL\xa5ʪ\xb5\xe9R9e\x0eY\xff\x83\x80ӌ0S\xeb\x02\xa7\xf0\xc5؏\xa8\xd3y\xc5\x02\x1e\x8b\x00f\x81\x8c\xb5\x18\xb5\u0085\xf9\xb6\x8e`3x\x1b\r\xe2P\x898\xf4\xcb)\xa4\"\x89\xb40\xe5Q\x85\xd2\xf8\x9bOr5\xb4!\xd5db\xb2\x90\x01K\xb0\nyMb[\x8e;}L\x1d_\x19\x10掺J\xadw\xd04\xa9E\xdd\x14,<\xb4 \xc7\xd4\xf6\x1f\xdb\x16L\x82\xa3s3\xbcD0\x14\xf9\x8aP\xf8\xf5\v\xed\u007f\"Q\xa5`\x00\xab\xea\\\xe6f\x80\xa3\xc9\x05PaB\r¨\"ӛ\n\x95`R)\x987\xc7\xcdI\x85B&\xb4\x81\x84$\x05\xaa3Q\b\xcd\x16\xc22\x88\x05\x93~\xa9\x85i\x16\xc6<\x19\x8a\xe8\xd6\xcaш\x8a\xb2\x81\xed\xff\btnf\x17\xcc\tP2\xf6ɰ\xb4\xc1\xf7\u007f\xefxhZ\xbc\xfd\xd9\xe26\xca;\xbe\x99x\x97MF\xd2\xdf:\xc7X\xe8\xdb%\x11!\xce|θ`t\xces\xc0\xc1\xf2q\x80\xdf\x02_\xd3`\x17Ld+\xa4Z\x8f^T\xb4\xbeT[A\u007f6\xdb\xd9C@\x89l\xb2`F\xd4\x01a~\xb7\xdd767Wu\xfb\xd6zҺ]O\xc8*\xe5\x15\xdd/\x84\xc9d\xe4\xc8WEv\xa0\x96\xb9\x1d\xcf0\xa0a\xd5x\x1e\xb6\u007f誅Q\x19\x1ec=\xe6\xe6\xdfk\f\x02c\n\xc2ͺ\x9b\xce/T\x846\tzƆ\xa5\xd0\xf8\x8eI\xdd;\xd9\x01\xea{\xe6\xdf\xd0w\u007f\xd7oj\xe52\x1aG\xf1\x04\xb2N\x81\xfb\xaco\xb0\xa4\x94\x01m\x95u\x9a\x9fk\u007f՛\xc7\xf84!\x0e>\xb42\xc4\x02z\xb7U\xd5\U0005af8f\x9e\x91>c\xabgmO\x9f\xb4\xb46\xab\xc2'\u07b21\xab\r)\x17\xa4${\x86>3&T\x15\xf0Ā/j\xfb\xf5\x01\x0f\xbdT\x05\xa8\xde?);\xff\xb3c\x12\xee\xc0\xe5\xd9m\xf9x\x1cV\x15\b\xc2\xd9R\xb2\xe2mL\xe3VRg\x99d~h\x81\x8d\xb3\\\xa7vG\f\xb1\x1dh{{\xdf\x12\xb1\x95\xa3Gt\xf3\xd9g\xdf\xc3?\xa8\x98\xbeP&\x17\x93U\x8d\x99r\xb4w\xf0\xd3\xdfal\x85\xc2wd\xfa\xd03\xf8t\x0eӻn\x1bE\x93\xbd'}E=\xb3km\xefAr\x04Y1\xe4C\xcbĜ|68螽\xf3k\x90\x1e\x97\x1e͓>i\xacuç\u007f5\x89\x145Tڢ\xd4B2\u058c\xbe\xd8\x15\xa5g\x96\x84Z\xb6Hp\xe1\f`\x9aGװ\x95\x81s-\xc8\x17\xb1fE\xc3I\x94h\x17\x8eM+\xc6\xeb\xf1\xc8|\x91\xec]z\xe4\x13\xb9\xc4bDu\xa9\xb2\x8c\xf6\xaah\r\x99\x0f\xac\xe2\u007f\x9eE쭿2Y\x02\xc7Ic\v\xb9\xf0\xf3\xb8\xb8`\xe6\xf1b;\x95\xc4vh`\x05\xaa\xe2\x80u\xc3\xf4\xcc\xf5\x8e\x8b\x11\xff\xba\xe2B/\xc9)\xf8\x16y\xb9E\x19\xe1m4a\x8c\xdd?\xc8v>\xc6I\x93\x80\xb2|\x9e>\xe9r^\xca\xda\xfbM\xc6\x1c\rp;\x84\xff\ajyx\xaf\xf5\x1f\xf8\xa54»\x04I_Q_\xbaU5\r\xad\xe6\xc8{\x98\xefGq\xd0i\xbc25\xc8#\xe7=\xa9\x88\x8a\xbb\xb2a\x8e\xc5\x12>\x95\x0fe\x96=\xbf\b\xc7\xf11\xe9Q\x93@\xb8~\xcao\x93x\x1f kS}\xe6-\xc15f\xd7\x13K6\xfe\x88h\xb6ޫ\x80\\zBnɴ=\x80\x91\xa08\x8e\xe8+\x1f\xca\xde\xef\x8e_gG\xa7\xc2\xdd0\xf7Kƴ>\x0e9\x020\xe5Q\xef\x1aj\x94\x14\xa0\f=\xce\"\xb1\xa8\xd9\xcd_\x99\x1e}C\b\xbf\xc7[}\xc3ʣ~\f\u007f\x8b\xa9\xbd\xb2\xe2\x11]\x10\x97\x1d\xfal\xe3\xb9:\xf2\xddtٜ\xe7M\xf4\xdfe\xe2v\xaf0\x85\xbeM⤶B\x9fF\x97\f\xa4\x1d\xe5\xe3+\xd9\xfd\xa1\xc0\xbd\xed(z<\x989\x95_[\xceB\x83\x9b\xdb\xf9*\x9d+\x16;r䅠+\x8f\x92\xc8\xf3ʾ$\x9b\xb1\xc1\xa4\xe2B\xc3[\xaf\xaf\xbd\xb9\xbc\x00\xf90Q\x9c\xe8u\x9b\xc4f\tL\xbb\xfd\xf6)\x96\xe9\xd4{E\xbd\x98\"D\xb9\x9aa\xe4\xa0]\xc29\xf1Z\xe9\xd5q\xa4\x9dI\xa2\a9k\xee(\xc9\x1aÊ\x8f\x19Ը\x95\x16\x82'6\x1dH\xfc\x88\xd4\xd8ӆ(\x17\xdaV1\xd5`\x98\x04\xc7j\x1e@\xf2m\x98N\x13ȡ\v\xc3\x11UV\xf4\xa0\xc73\xf9\v\xc5\x0f\x0e\xc9j\x1b\xecbٮ\x15ej\x9f4,\x9f\x96\xf0c\n\xed\x9fT\xe0\x91\x17\x1fi֡\x8f\xae`\xce\x06B\xbd\xcfX4\x12\x92\xe05R\xe2\xb8\xe1\xa8\xeavÐ\xff0֥)\x9c\xae\x16\x8fX\xaeV\xf3e\xfa~=\x89r\xaezHG\x13z\xb2W[\x92\x06\xa7\x05\xf5\x97/WR\xf9\xfe\x02\"\xe6\xd5;\xac\x94-\x82\xf6\xb5\xab\xc4\x03av_\xfexֱ\xb3\x1b/~\xd8F\xea\x94\xd4\x1b\xfd\xd9|\xf7\t\xf4\xba\x13\x12\xefmH\\\x95\x85\x1fO.\x1d2\xd6\x1cH+4\xec\xaa\xe3\f\xe5\xef\xca!˸\xf4-\xa0P\xcdL\x97\xbc~l\xf1\x8b\x9c\x13\xaa,\xd9\xc1\xf6\xae\x8f\xce\xdb~z\x85\x83\xad\x91M}dj\xacT\xac\xdd\xe7R=\x8a&\x98\xbe\x1cehv\x83K(\x12\x9c7\xc1S\nP\x9a\xdf~\x06\x0e3\x8a\x9a\x96>QU\x90\xda\xd1y\xd1\x16\xeb\xd3\xcd\xee0\x18\xac\xd0>\xb05\xb4\x9e\x88\xe3\xa0\x10\xa2\xa5ћ\xed\xf2NG8\xf7\x8a̒T@\xa2\xba?\"\x94XZ]\xecf4\x18\xb9j\x98\xe1\xdf詤[i\x1bBg}\xb4\x80\xe7\xe9r\x11^x\xf1p\x12~\x89\xc1\xd2E\x91I\xec\xc77\xc5\x12\xa4\xb7\x90p\x9eH\xc69\x97\xa5K\u0088\xc8dU\x88#\x90M\xea\"\xbf\x18\x13\x05fd\x8e\x1d\xab\xf3Jͦ\x94c>\x17hG\xc6\xfd~6_.\x10\x94zSZڱ\\$*\xae\xf6p-g\xaa\x01Y\xf6\xfd\x16\xc2s\xc3sC\x84\xb9\x19m\xba$\xa3Ax,\xfc\xa4\f}1\x1d\xe3\x93]\xac:\x02%\xc1\x00e\xf7Z\x88\xf1d\xaap\xdcz\x11ZDm\xe86s:\xc3N\xe5\x95x$t\x01{\xb7[P\xca\x1c\x9e\xc2>\x03ǁ|aW\x80_\x90=%\aQگ-\xa9\xf2H\xdf\xd1\x01\xee\xd3\x1a#\x1f\xcbU\xf3{\xc7whJyމ`g{.\xa5-\x86\xcc=\x95yIui\x94Z\xfb\xed\xd1\xecQ2\x9a\xc9H\xf26\xb3O\xfc҄Y$KUTJ5ƞ\x86\xc1^\x80\xd8,\xd5\xc4h\x88\xc37\xb6\xf5\x880\xbbr\xb4۴,\x03\x04\u007f$\xac\xd0,\x9a\x81ΰZ^c~\x91\xc6\x19\x02`Z\x99B\x81\xfb\xad͂ougU4\xec#\xa7\x1d6\xbb\x92\x95\xe1遞\xe4\v\x8f\xf3$f\xae\xf2l\x865D.\xefɫ^\xf1\xa9n\x97*a'R\xc8B!\xbc{\xa6\xf8D?K\xb9篗S\xa5p\x9dV\xe3<\x8a\xf0\xc7Z\xad\xb8˕)Z@:s\xe9ܕ\xae.\xeeߞb\xe3\xd4\x1bs\x1b}qg\x10\xd6\xe1\x01\xd7(\xdbv\x97\xde\xee\xe5\x06n)\xa8\x1b\x8b҉w\xfa\xa2\v]\xa5\\:\xd4\xcch\x14߿/\x03\xbcN\xb9\xa8氧\x98\xbe\xd3\x13\x9a\x96\x06\xbc\x91V\xd1\f!\xc6eG\xed\xe1\xad\"\xe1e\x10\x93\xa7\xc0a\xdc\vh\x85\x06\xf2SS\xeed\xb6\xaa˘\xd8\x01k\x06\x84\xcbzШ\xab\f\xe92\xeb\x03ã^y\x91\x9av\x8d\xf8G|r\xbd1=\xf8^\xcb\xdcG$ \x96\x9b+\x12\x1f4\x88\xf0\xa0\xb8 \xe6gj\xbadu\\\xeb\xaa\xf1\xf0G\xb2\x97\xb4\xb82iY\xf3\vg\xd0\xc4Q\x9e۽|\xb7\xa1\xcd\xf7%\x99j9\xab\x13\x1a_kM\xb0\xf1\x9a\xe2\x80SU|oB\xd6wh\xa1\xf0`S\xa0\xc8\v\x9bѳ\xf1=y\xd4\u007f\xfe\u007f\x82\xeb$:\xbfn^l-\x9a|jD\x97u\xcd\xd4\xd3\x1f\x81\xee\x99j\xb44\x1f\xefc\x9b\xf2\xc1\xe7\xacc\xbd槒\a5y8\xfc\xc9\xcf\xc6\xe7\xc7\xe0\x16I\x03\x81\x87\x0f\xaa\r\xcc|\xa0B\x82\xbc\xb5FKZ\x93R=\xac\xf5\xb7\xb0\x87\xeb\xb3 \xdalDo\x01\xad\x81fQ[\xad\x9doX墊c\xb2\xcf\u0087g\xa8_\xb4#y\x9b\xb3\x91ɀ3\xd7$0\xb8\r\xa6\x8d\xc4\x02@N\x15?\xc6Lg/\x17\x16u\xe8(\fK9\xcc\xc7\xe3w\xabҗs\x86\x8eZ8;KW8\xf9\xc3\x14\xf3\xb5\xf1\xee{\xea\x92\xd9)@\x97Yp\xf8wR$:\xfc,h\xd9u\x99\x14\x9c0\xa1\xf6RZwQ\xf8%P\x9fI;\x04\v\xe4\xa3<3U9V\bm\x97\x97ls\xfd\x15\x02\x0en/\xa6\xb6pt\x00\xa0\x8c\xf0\xf16!n\xf6\xa1\xb6\x8fDNJ\x94\x88\x1a\x99ۅ\x19}\xad\x99\x06\x94]\xd11*!\x87j\u00902\xcfأ\x87\xe3cU@y\xa2g\xdc\xe9\x11dc\xb6\xe7\t\xb5R2\xf6@\xdf\xdc0F\x91\x85YY\xd5[\x92\xb9Im\x8f\x0f+\xfc\xe7\xf0\xc8\x042\aF\xb1v\xbao\x19\xe3\xfc\xfe\x03a\xb8Y\x9b:\x8a'\xde\xc4\xe9r\x87xf\x88ʹ\xf0\xb3\xdbP\a\xb9k\x88\xad\xaaB\xb8\x81\xa9\xc59M+m\x81\xe9Qlؠ\xb2D\xdbl\xfex\xea\xdcGJ\x96\xeb\x899KN͍~\a\x8e6\x97\x9ee\xb5l\\Y?\x1a\xf7\xba\x81~F\xd3p\x15\xc7\xe0n\x94u7\xba&o8\xf5\x13\x05\xac\x10Ϯ\x9a\x84\x14\xd0I\xa5\x98\x9f`\x8a\x18X \xf14Ĝ\xa2-\xb2\x8c9$\x1c\xf2tY\xba_L\xd2$b\xf0&'\xf3]\xe9\xfbT\xb8E\x90\xd2I\x9f\xb4\xb6\x83@t\xd4\x10\xa3-\a\x8fL\x15;\xb0a\x8e%JU>|\xb9\xc9#\x14}\"\xdcH\xf9c\x8b\x98;\xfb\x1d\x92\xc7\xf5\x86\xe1u\xa02\xf3\xa1\xa6cc\x15w\x1f\xf1\x069NJ\x15\x9c\xa0\xfeԠ\x13\xcc\x1c:\x0f\xa3\xa0R\\r\xe1\x1b\x05ۜ\xed0\xfb\xa1~k\xc1G\x81R\x1a\x04W\xb6\f\xb3\xf2?H1\xb0\x15\x8dJ1\x96\b\xa5\\\x1e\x92=Z\xd6-\xabj\x9fR\x19\n\xe1\x81\xeb\xb7\f\x81R\x9d\x06\x86o\xe9\xdb켘+R\x8d\xd1\xe63~}\xabj\xca\x18}\x13\x8f;\x9dZK\v\"\xc2Vu\xd8F\xe9\t\xea\x1a\xc7\xce\x1ey\x06b\xcf\x13\xa4\x16>\x05f&00\xf3k\xf4\x84*&h\x18\u05fc\\\xcdi\r4E3\x90\xb4\x91\bƐ1\xb5L\xbe\xc7\x13\xb4\x1c\x02\xa8Z\x91a$\x94&\tn\xa1 \x0f \xf0h9\xd7'\xcbB\x8a\xaa9!\xf4+\xbd\x18\xd7\xce\xcd_P\xddf\x02:\x15\xc7~\xfe-\xcf\t\xe8pj\x85\x80\xe7\xa1\xd1Y\x1a:\xec\x91\xda.\xd0\xfa\x1bi\x99K0\xc9Y\x1c\x9f\x1bQ\xb8lnu\a\xb9\xb1\x90\xe9n\xa1\xc5\u0094\x97\x1f\x14\xbbi\x88!\xee7\xf0+\xfe\xcb\x1f-\a\x97\xb0\xa2\xb5 ڧ\x10Y\xaf`\xc7lY\xb4\nc\x11\x81\x13V\xf7\x02\xc3m\x1d\xe4>۬\xe1Ȗ=\xb1! 0\xd9nieSB\x10>\xa47,A}\x1eSH_\xed\xdanB\xb7=1\x83\xefҒZ\xee\xff\x1b\xee,C\xfb\x9e\xb6\x9c\x8cvN\xb57Ke\xebe\xad\fł\b&\xb9מY\xae\xab\x9d\xaa\x99\xe1BF\xc9F&\x99\xb9\t\xf1\xb9\xf6\xe8v\xc1%\x05խ\xfb\x16\xa7u,\xb1\x9ac\xab\x95\v\x00\xcdȼ\xb75\xeb\xe4\xea3\x8a\xb9\x88\x92b\xbd\xb9U\xa6\xefi\x9esc%\f\xef\xbe\x1bo4\xa9&\xb4\xe7\xc6}Ի\xae\xfc\xcc\xc1\x14\xc5\xe7\xd2+\x95\xdfЬ\xe7$7s\x82\xec\x1fLn\xa3\xec\x89T\xe4:\xf5\rL=\xe38\xb4\x8a\xbf;\xd1a\n\xc4ϸ\x9f\xda\xdc::2\x84\xb7S=\xa0\xf9\x11\xc2\b\x92\xad\n\xa0a\xb4@\x8a\x91k\x01\xf7W\x14Z\x1d\xc0}\x9arh\x8dj]\x9d\xd2\x03\xbe\xabB\xc0\x05t;wi*\xf2\x18Y\xad\x9f\x92\xfdW\xce+\x9bt\xacg\x93}\xc46\xcbj\xdbXu\xb6{\xbd\xdc\bd\xf9`\xcff\xd5Ӽt\xa4k\xad\xb6\xaa\u007f\x8b*\xc7\x16=\xd1Yg\xa2\xc6{\x1ar\xae6\xc1\u007f\xe6\tO\xd6Wͳ\x1f\x98WN\x88_y\x8d\xc5{\xa2\xb1z\xe9\xcfwI\xd6\xe6\xe3\xf47\xe1qo\x9a\xfd\xf0\x93\xdcG\xa5\x8e\xf1\xf8\xe6\x88ƕ\x90\xb3\x13\xdfL\x80\xf3~\x9dҎ\xe5T\xe39\xe3\x15~\xee\xcc\xc6-\xa1\x1e\xfc\\h4eh\x90W#\b1\xc3\xff\xfbṖ\x13\xf5\x94\xa4\x05\xd5A\xef\x9eւ\xfdo\xd9\x11\xfe\xae?D~\xa8\x01\xcf(\xa3\xa7\x01`\x18P\xd4\x01\xabw\xa0W\x93 \x1b\u007fѪ\x0e\f-\x19d\x98`d\x9b/E\xe5\x88\xf9`\xcc\x1f\xa3\x13J\xc55$\x01AEu\x9b\x8cuO\xa1\x1f\x1c\x03\xa2\xb1c-Ӹ\x0f\xc2B3\x9ae\xebm\x15\xad47\xf2\x05\x11lW;e\x82Wߢ\x1b\x89{\xd8\xc5\x18*+\xb0\xcd\xe0\x93$\xb89\xdc\x05\xd2\xea\x88b\xbd\x8c\x8e\x9b\xe2\xf8\xf5f7=jla\xd8\xf0\xf0\xe0\xea?Ee\xe4\xfc\xe9\xfa\x9ew\x12=ȠOEߍ*\xa4\x81A`G\xa2j\xf2\x82\"h\x1b\x10\xe7\xfd{C\xd9\xdaP\x9b?㻩:q\xa5\xf6fu\x81g\x10\xeeo\xf1\xe0˙u\x1e=a\x96\xe6\x97/wƠ\xed\xa8U_\xf2\xde\xe7\xf8\x97\xb3\xeeo_>Ͼ*\x16ꞓ\xacf\xd8\\(\"\xe7X\x9b\x85=\xb4ap\xa3\xe1\xe7\xe8Ȳ\x0ey@i\xe4\xban\xf9}\xb7\x1e*sC=}}mT0\x0e\x14ݒ\xd9\xf8\x1d\xb7\xfd\x0e\xaaW\x1eZ=.\xe52\xb4-\xa2\x9b&\xa9\xdbԏ\xe0Vh\xf6\x16ۤ\x9d\xe5\xe55(\xc5ś\xba\x8a\xb4\v\xb7]\xac%\xe80;\x83\xca\u007f\xf4\xb0\x01@㐻\xceG\xb0\xe6\t=\xfd\xeb\xfc\x83\x1f[\xd2kq\x96\xcf\xfc\xaeW\x1d%,\x8bd_W\x133\x87\xa9De:\xf4_\x16A\xd5r/\x0e\xabq.\xf1\u007f\x17>\xac\u007fc\x86\x1bN\xee\xab_\xa5_N\xf3\xbb\xdf\xfb\x15X\x9d\xef\x9ez~\xa4f\x97;\x13\xa5.]\"\xfc\xe7\xe8Yk\xec'\x80\x18腐l\xed\u007f\xfa\xb4\x12\xcb\xca=\xcah\x17\x15\x80\xb4\xb5\xe6\xc6\xf2*\xf5\xbaI6\x03\xfd@n_\xef%\nc\xbc :)\x8d\x88%mm\x14\xce\xeaEŊ~\xbeYi\x9a\xccеW?\xcc5<\x8bG\"\xda:d\\\x13/\x06\xf9gAoX_\xfc\x87\xb7\x99e\xdb@\xc1\x06+\x9aM\xc13\x8e@8\x91\b5\xf0B\x8f\xfeA\u007fŬ\xd7vZڈ\x93%\x12\xdf\xe6\x8a\xfb\x13v7\xaaG\xadk\xb5*շ\xe6;I~\xce\xf3\x9cPk\xed\xe5\xec\x91q\xf2k\xfe\xbcR\xeb^M1\xd3F\xc0\xc0\x8a\xd0<\x96@\xaf\xf3r7\xf5T\xb0bLI\xe2\x1c\u007f\xab\x1b\xeb\xfd\xb1T~\x1fo\xa9\xd4\xec\xfa\xbd\xbc[\x846\t\xee\x17\xe8\xbb\xc5\x1a\xf0\xa4$\aO+JM\xa3\xf3\xab\xf6\xe1Y\xd5\xe4\xd4j\xea25\ny\xc0\x1a\xa4A\x19\xb0\x16\xece\xf6\x87\xec\xf2\xcd\xd7Mi\xef4Q\xbcZ;J.#\xbc\x1a\x03W\xbcY\x82\xb2\xe8A\x0ekFYk\x8e\x8c\xe0喜\x1bR\xe7J8\xf3\x1e\xbb\xc7\uf854\xa4I\xc1\x01Z\xf9s\xcb\xe58^\x18\xe7^^\x84\xbe\xa5\xb2\x8fw\xca\xe3a\xc9lC4l\xfe\xc8\xda1\x9d\xa36\x8f7\x89[GķBL\xb1j%\x9e\x80\x83\xbb\x1e\xad#\xdaU\a\xb6\x04t\xc1\x8e\x1c\x8d>\xc1\xa54\x80ؕ\xfd\x8a\\!}\xae\xf6\xb0\x94Q^\xac\xe7|\x12\xe1\x12l\xad\x9b\x9c\xc5LX\"\x96\xa5\xf9\x1fP\xa3/\xe6\xe8]\xa0\xda&M\xeae^\x88k\x96\xa3\xb4\x06\xa1Q\x03\x05\xc7\x13\x0e\x84\x007@\xd0ꁔ\x03?=\xfdEt\x96n\xe7O\xb5\xf5\x92\xb4\xf6?\xbccU\xdf\x10ʪ\xe1\xc7\xce\xe8\xca\xd8\xf5--\xe8\x04\x19\xd0;\xc9\xd0\xce\xcd\xe9\x05\xce0\v\xf0f\xead\x01S\x00\xee}\xe4D\xd3E0\xbe\xaa\n\xf0z)n\t#\xf6-6۩\xf6^\x970IfG\xa2M\xf2C\xc6fCn\x8ct\xab\x9a\x8eY|\xb8\xc6.,H\xaa\xa5\x15\x1b\r\x1b\xb8\xe6\xc6\xf4\x8bv\xce\x17>\xc8#\x8d\x1e\\M\xfe\x19\x9d\xf6V\xe4C\xe1\xcb`f\x88\xf1\xdc\x01\t\xd2\xd1[\xc1\x86\xe7~z\f\xabq\x89\x1e\xea흼I\xd5yu\xe2\xe2j-:5\xc4'\xa6\x93\x9e\x10\x82\xb9\x02\x8fĘ]\xbe\x17\xe1\x11љ\x17\x9eJ*\xfe\x1a\x98\xa7\xa1\x1d\n\\\xbc\xd9{M{\x88I\xbc\xf7\xe0J\x0eY\xffW\xa4\xa5T\xee\xcc\xe6\x91Q\xa6\x86ɬ1y\r}A:>ϫ\xa6մ\xfa\x05h\x89ıJ\xda'\x02i>\x9b\tN\xe7Db\xc8\x12L\x80\x81ĊGf\xed\x04iqe\x10\x1e֚\x9f~\x05e\x1et߯A\xa2\xe1ka*\xa5%\x9a?\xaaYWI\xa7\x9e\xf4\x13\x88W\xf3\x98\x8aX\x17\xde\xe1k\x0e\x93\vv\xc8\x01ɹJ\xae\xf4\xc7jD\x9d\xda\xd4\xfdtK\xa7k\xf0\x01-s\x01O\xfa\xc7J\x83a\xb1\xda\f\xbbJQ\xb7\x84\xd0\uf04db?\f\x1b\xa9\xf2\x82ٚ\x80\xaa\x96s\x81\xec\x0fp\x16G\x9c.\xef\n2x>'\n\xf4\xa643\xbf\xb0}\xe0\xb3\xc4\xe7\xa1߾\xe5\xba\r\xe6\x14\xb0\xee\x97\xc2\x1c\x13\xbb\x95\x91\xfb\bͭ]W%\x80\v)\x03\x98\xb0P\x06ذ\xa1\x88\xf2\xa4B\xcct\xc7\u058bw\xe0 $E\x19v\x8bB\x15q\x18c\x9a\x9d\xb9\xab\x86\x9a\xf3D\x10]^\x98\xd1o;\x169\x90\x86\xac>y\xc6\xee\xa4t}6\xd5X\xfd\xea\x81y}V\x9f\x14d\xa2\xe6\xe4\u007f\x8f\x8dP\x9e\x10\x85j\x03\xf3e\xb4\x15\xc5ú\xb8\v\x14K\xf7U\b\xe5žrA\x1f\x9b\x06\xd9K\x0fϩ\xaa$\xd0\xd6\xf9\x9e\xfb\x1fz\xf5\x9d\xa8?X\xbd\x1f-'\x1e\x95\xd6b(ٴ\u007f\xf5\xf1}\xf2\fA\xa9H笮Fy\x84\xddp]u\x85\xbdV\x00c\xc9C\x92\x13a\xe6;\xc4\xe1ar\x9d~kJ\x0e\xde{\xda\bA/Y\x8dm\xf4\x82I\xae\xeeTE\xbc\x18qO\xe3\xf0\xabX\r\r\xab\xa4\xe0X\t\x99\xc5r$.K\xfes\x9d.:D\xd10\xf4\x89\x1c\x80\x9a\x88C\xb2&\x9c\xa3\x8a4\xf3(k\xa1S\x05J\xab*\xfc\x96\x00\xa9\x148\xfe\x93\x11]\x10\xfa\vެHE\xa8\x94\xa8\xa1V憐\x80'\xe7\x89\tC\xea\xdf\x02\x94B}\xe9\xe9\xf3\x91\vɚ?\xae#)\xec2\xa5\xd24\trk\x97\x9c#\xae\xf1\xfb.nq_\x82\xa1\xf8\xc3B\xae\xfd|\xb5\x9de\xa2\xcc@\xd2\xee\xca+yᔊ\xc5\xfd\x83g\xfc\xf9\xbeS빵\xb3Ţ\x9b\xfd\xabx\x1b6C\xeb\xe97n\x164\xae\xeb\x8e8\xb4\xb1\x82-\x8c\xf3\x18\r\xc5\xee?\xec8 \xdbwߟRW\xb6E\xdd\x1c\xcd\xd6\xdc6d\v\xa6;O\x9d\x8e\x9f!\x17\bF\xe5\xcc\x01\x8a\xc5s\x9b<\u007f\xa2V̮'D\xf7=\xb4+\xc0X\xf9z9\xc6\u007f\xaf?\xb0N\x1b\xdaM\x92t\xbaF\xba:~K\xfa\xbdx\xbc\xd8\v\xf5\a&E\xaa\xa8\xff\xf0\xb9BmL;rGc\xe8{\x810ŕ\x1b1{y\xc1\x99\xbc\xffv,\xf5\x13F\x04\xe2\x93\xc6ǰ\x02\x1c\x9c\xfaI\x14_\xd6\xfc\xe0q\xb3\xa42\x89\xed\x8c\xec\x84\xcfe+\xaa\xe7\xb0O\xf54\x86\xf0\xc6J\xf5l>\x19\x05\xbb\xc7bRi\x18hJɦ\xfe\x19\x82\xdd\xe2\xc2JI\xb7Y\x96\xc3\xf2Nm\xf3\x92\x9fUb\xe9\x94D\xa2\xb4\xe1\xa52\x13\x8a\x1c\".&G$\xaa%ؓ6\xba\xaeU\xf9\xcfk\xd79\xba\xc6\xdb\x14\xb9\x1d\x1b\xfd\x9c\xe1\xef\x8f/\xb1\x0fJt\xeb\xf76\xaa\xf8\xf07z\xfb\xd0ک\xde\x06u\xfc\x91\xed\x14&<7i\xf6\xc63\xda\xf5\xcfX{\"M\xe2$%\bm+e\xa1\xf4\xd3\x0e\x13[;\xebY\xe9D\x9f\x13\xb1\xb2\x83B\xd3#J[\x8aU\xba\x8b\xaf\x9e}\xe7\xddsg\xde~\x8b\x11\xa6*\xf3ˠ \xa9\xb1\xb9};\x1e\\\xd4Ԃ\xafma\x1e\x05\x8bH~n\xc0;\x87\xfe\a\x13\xd6A\x18\xcek\xea\xe9$\x15e\x8aXl}\x9adi\xa1\v \x9b\xc0rw\xbe\xa0\xe9\xd6\x0f\x04\xfd\xd93\x9d\x92WrJ\xf4井pb\xb6\xbb\x8a\x14A\xf0z\x87b\x0f\xb2r\x16\xa0\xd3\xcek\x9e\xcc'\xb0N\x13\x93\xe4(\xf7\x92t頓6\xf3K\xe6\x93-\xf6\n\x87\x1b\xa8D\x10.\xe9㝧>\xdfyɞtv\xd8\x14\xaeKWX\x06J\xae\x02\xea\xd6\xcb\x03\xf5?36\xf0'\xe8}&\x9e{\xa1h\xa3\x12\xb1\xe4\x9c6=Ǟ0+@40f\x00\xb5y\xd7\xea<\xd7J\x04\xea>T(\u007f\xc3%\x85)Ĩ\xab5\x9d\xd9͈ɤN\xe0k8\xd6\xc7La(\x8d\x1d\x0e\x9c\x99w\xbd\xaa\xc8\xc0\xd3ܕ\x9bg\x0f\xb0\x8eb\x14ݣ\xee\x1d_I[I\xcb\xf8\xa8͐,\x0e\"7\xd7F\xdb\x05\xad7\b\xcaO\xd1ݴ\x93W\xc3_\x81\xa5\x93\xdc\x1atj\xb4\xe7\xbc\xf5\xf6iF<>o\xde\xfe8\xb2\xf0b.\xee\xc8\xc4.k\xb6V\xa8\xe5y\xa6\xeb\x8e0z}8\b$\x96҇\x8f\x83܌\xa7+S\xd9#X\xc5\\\v\xbc\x98\xdfv1L\x06YmS_M\xd4\x13jF8\xf5\xba\x90LƁ\x80\"\x01\xa5\x03\x19`\x9a\x98q>5T\xf4Y\xfat\xed\xfb~\x93|\x91\x8d .\xec\xc3\u007f\\F\x85i\xce)-\x8f\xf4\xa8D\xbc\t\x15\xf7,۸\xeb\x8d\nMKXr|L\xd5kA0\xfeB\x94G`\x18zA!\xce~s\x0e\x1db\xc8D\x87\xc2]n\xa9L]`\n\xfc\xb8\xc79\x87\xf7\xccV\x17\n\x12\xc4\xday\xdd5\xc4UQ\xed\n\xef\xa47\x89\xe4\xc5;<\xa1\x83\x01m\xf7kM4\xbc\xa1f^_\xe74\x13牣\xff\x8b\xb9\xa4\xbeJ\xae\xee~z\xc2c\x02\x81\fo\x88\xd9e3\xab\xcb\fϙfSv\xd6\xf83h ]\xf3z2 \xa5\xf0>2_\xf6-,}h\xbcp\xf2%Wl\xa5GR\x0e|\xea\x14\x8b\xd9F\xe6)%\x1c\x93KӶ\n\bp\xa5K\xadEv?\xf1Z7\xa70\xa3\x88\xfc\xf9\xc3R\x88\x13\x1aFWA\xe1\xe8\\\x13Q\xebldIu\xca=\xd5 \x83\xf5\x05n\bk\xab\xceFI\xec\xf4\x13\x9aBk\x87]U\xa23pZ\x06\x95ʊ\x1ao\xabJ\xd4\xcb\ta\\\xe3\x93A\xbf߬t\x85\xd0\xd4B\xa3>\x86\xf8r\x9b\x00T\xfd\xd7\x05\xe6l-'T\xe9\xdb>\x9f\xf3+>\xcehrzw\xa0\xa8\xe9\xf2\xea\x9c\xc8\xd4z\xa0n\x9dg\xa6\x14!F\xc3!\x94\xbb\x9e-_\xb5>D\x15\x00\xa3\xb3| \xa5\xa7\x00\xa6K\x92\xd8\xcb\x1c\xc3d!\xa6H\x99\x15\xf3\xf6H\xe4\x1f\xf3\xc4a.sHp\xda\xec2B\\a\x01\x9c\x1c\nQ\xc0\x89XA\xf6\x8b|\xc7R\xe56\xee\x8f\xdf\xc8\xcd0\\\xf7\xd8\x06]\xe8nj\x8cΨtX \xa5\x15\xf5\x83,,*\x19\xf0\xcb%\x99\xa6\xad\xb4\x17c=\x8f\xb6浨y\x06\x0e\x16\x95\x86\x93LfZ}\x05\xd13ѻ\x9dG^\xc0\xb9:\x05\x1fY\xb4\x84\x10\xe6\x1c\x0e\xe0PJ\xfb\x05\ue2ba\xdekv\xac\x96\x81:\x17\x94\xbc\xdfx3\x99\xa0$;Gɑؼ\xe8\xe9ʋ\x94rE\xff\x97i\x01'\x17OR\xa8~\x9brM2\x90\x80\x82E\xbe\x1a\xb7}#\xe4\x15\xab<*\x03\x11=<\xe1&^\xec}\xd8^\x9b\xa9d'\x9c\xcd\xe2\x85\"Xj\x04\xcb\xd7G\xfd\x94\x94$r\xc1u\xbb\x8b\xba\x8f\xa2\xb7\x82\x1a9\xe3\x87B\f|\x95\x02\xd5\t\xf0\x9f\xd1$\xbb\xd2v\xd68\xbd\xfc$\xf0\xb19\xb6\x96\xc6\xfcJG\xaf.P\x00\x99\xa1\xbbT?\"ϩN\xf0\x1cW\x05\x9ff\xd3\x0e\xc1ݤ\xf5\xe9\xb9\xd7$\x8e+Τ#]\u007f\xf5\xcdgl8rK-\x98\x97\x83\xa3>\xf3\xc17\xd0\xe1\xcd)\xb7\xbaN\x0f\xd9\xc2H\xab\xd0\v\x14\xf4\x9c\xae\x81s\x8e\x1e\x17\x8dHS\x06TC\x0f\xdb\x01_x\xf3\xc3:0`\x0fb8\x191\xf8fU\xbf\xd9K\xaaǬ\xef|Fb\xdbG\xf6\xffPmUv\x15\x02\xa6]\xfatA\x13dȒn\x90$\x94<\xcdB\xac\xd6\xcc\x15\xcal\xfa=\xbc;\x14\x1e\xafS\xd7$\x13\xa8ۚ2U?R\xf0>8\xd0:o\xb1\x80!]\xb1\xe4\xf9ܡ\"i\x95z\x8a\x8d\x13\xb8\xa1\xee\x99l.;\x04L\xab\xa0\x88̐\x17\xd9\xe6\x00m!\x01\xff\x9f\x9a\xc5\x16\x80\xde\u007f[\x83@\xa0\xd9\x055\x10>\x187\x12\xe0Y\xf2\"K2*Ȃv\xd4x\xa3\xe2\x90\xe0\xaf\x1dQ\xb9?.\xd0\r[\x89\xedP\xa5T\u007f\xab\xe5iy\xa1x}\xd9=\x91\x1b\x93\xadW\x8c/\x93\x03~\xc6\xd5\xf4C3\xf6\xfa\xc4\xea\xf7\xe3\x1bX\x95\xf6\xe0,\x10xBc\x12ZW8\x13\xabR\x18\x86\xd8c\xb2\xf2Y\x06\xaaFHu\v5\x1e\xf2w\x94\\\x12\x1d\x90\xa9\x99\xf6<\xba\x01\x1eaoC\a\x1f\x01ˌ\xe2l\xdbr\xb2\xed[\xf6`ða\xfcT0\x8d(\x8d\x84՞T㹆\xa5*4<\x00aUux}\xc0\xbeY\xd8\xee\x00\xfc\xb5H\xcf}_}.\x80FF~\xcf\x02\xac\x93\xa4o\x8e\x8a\x86\xdf\xefU\x85FR1\x9a\x13\\\x94Ñ@b\xfb!\x0f\x80\x13LB(s\xdf\x1b\x81c\xa8\x11\x87\xbc.q_Z\xfcᝊ\xd9V\xda\xf1G\x11\xca\a\x17\xbd6\t\x87P\xf7\x12/;\x97\xb8\x85ܢ+\xa3\xfd\x85.\xf3(Ud\x16\x16\xf0\x86v\xf6r\xac\xc1\xd5\xc3\xca|\xcaI\x91,[=~\xafo\xf0d\xfa\xef%\x81\x9d2!4\x9fc\xee\xb6\xc3=\xb4\x86\xd2}=\x17D\xda\xe0\x1b\xa8\xffGs\xcbӶ\xd2\x04^\xc2\xcc\x02<\xff\xb6\xcb\xc2$\x8c\xc2R\x9bu.\x1eU\x83\x88y\xb5ET4\xb0\xcc)\x11\xc1\xf5\x97\xa8\xe4f/K\xb6m\xa2\x86\xc9].ts\xdc\xe663)\xb0\x98+\x1c\x05\xea\xf0\xf9\xdeC\xe8ݗ\xbel\xfb\xfb\xafO\xde\xd4\xf5\x9eW:\x14L\x8a\x0f,\xd2\xe7\x16ܻ\x04+.\x9f\xfaZ}\xf8V\x8f\xbc|\x96\x81\xe38lX>(\x85+\x84s\xe9\x8f\xcf\x1a\x9d_\x18\x9a8j\x98\x02p\xa3\xbd\xcez.\xeel$\x91a\xa2\xdb\xfb\x06\x10\xa1\x9f\x82\x80\x8f9\xdd\xc9F\xf00\x87\xab\x01\x89A\xc8\u007f\xee\x04\xfd\xab\x1b\xf1\xb8$ql\xfd/T/\xe4\x8et\xd0\x00\x9c\xc3f-\x81\xc2'\xc9\v 2\xa0*i\x19\xa2\xae\xf3\x11\xb4\v\xc3B\\#\xb3\xb0!&H\x9eb\xba!\x10'jQ^\xca\u007f\xb5̋%DO$i\xf2\xe5\x031V\xa6N\xc05\x10J$u\x04L\xd0'x\n\xb1D\x92\xe9\x1b<\x85x\xec\x9c\xcd\xf7)$\xe3\xe7-\xeb\xa1\xf3\x95dms^hZ\x9e\xa8)\x9d\xcf!\xde'ŸN\x10\xd0\xd4|\x97\xdeU\x90\x80\u007fW\xdeUN\x9b\xc8p\xad\xb0\x81\xfa\x03-\xd6P\xb3}\xd7d\xbb\xd5\xe3\xdd|FŌ\xbf\x88\xa7\x86\xca\xe1K\x9d\x12\x1c\x93\x97\x82\xce)\x1c~\xc7ݕ\xea\xc3\xd66:\x02\xe7OKp\x1a\x1aª\x90\x96\x1df\xd3f\x1aw\fI\x85DZ\x17\x80\t\x1d\xea-\x1bK\xa0iSz\xd2\x01)\xf5X\x97D\x87\xc8oZGd\xb2\x8f\xf4D\xd5\xd6\xd0\xe3\n\x82z\x9eÀ\x8a>\x85\xa6m\xa1l\x1d =\x11\xd0p\x92\x12,P\x82\xf1\xb7\xa0\xee9\xed\x1c\x9e0Vs\xfbuh_\xcb\x1a\xce\xea\xf1\xec\x01\xe3\x95z\xf0k\bY\x17H3ߦf\x1dEJ\xd7!\xf9z\xe6\xf1[\xde\x16\x8f~\xc4}'ﻛT\xdf\x13H\xc5\x04m\xe8w|\"\xbc;C\x95\x92\r\xe1jm\xf5C\xd0a\xf0\x9c\\\xbf\xabȺ\xd9\xe2C\x1d\xc9!nԁ\xd0\x0fY\x05Q\xd7Iu\xf7\xfd\xbb\xfc\xe7\x99\x16{\xb3Y\xbbYc\x9443\x94\xbca\xf9\xb7Ƀ4\xb3\xb3v\x18\xb77\xeeB\x80\xa6]\x19Ǽ\xb33\xc4|\x02\x1e|\xd1b^\x90\xcfr\x1c\xa5\xe9:\xb4\xb0cg\x87\xbbw\xef\x92\xcd\xca_\xb8DY\xb2`>\xd8'\xe9q\xeb\x9d\xd7\xf7\xabV\xf2\xf9\xb1\xff\xe8\x93!1\xcdgo`\xe0l:d\xec$\x05\xc6G\xe8\xa9d\r\a\x9a\xff\x13\x06\xa6\xe5\xf3\xabŠ\x9d\xb4QT\xa1<\xaf\x82\xc7\rr\xe5\x1dq\xe8\xf0ך1\xd8NLE\xe3J\xf3\xbc\x96\xe9Keӣ\x9e@Z\xe0\bGD\x96\x97\x1c\xe6\xbfo\x90\b\xbc%\xb1`\xb3\x10\xca[x\xe9R=\x9a\x85\xb2\xe8@\x81wf\x94ŀ\xf2\t\xac7Eר\xf5A\xc4p\x930\x8f\xa1<\xac\xec\x86zp\x11\xba\x17\x86\xdbe\x90/\xe2$\xc4\xc3\xd6\x11\t\x9a\x1c\xde]c\x1b\f|\xa5\x8bne\xb1:\xdbny-/\r\xfc\xa8F\xad\v1\x8f\xad\xf59!i\xb00\xd4\tP,\t\xe7*^d\xc6\x14\x8f\xca\xd6T\x96Xk:\"Y\x1fc\x04\x97#Qӎ\x18\xf4@u\xc1w\x00\xb2-\xd6e\xe2Ʉ\xaee\x88\xae0\x19iKrt\xda)\xc65\xa4\x89\xf9)S\bAnh\xed\a\fx\xe6@R#a\xba\x02\xafk\xcfg\xd8i\b]ضN*\xc7a+\xfd\xaf\xb7\x92=\xb0\x92\x05[8\x87Ws\xcaR\x12]|6\xfe\xb6\u007f\xa9{\x99\xb4\x14\x1d\x8e\x9dm\xcb1\x11\xf5\xe4\xb3T\xa7㺓}ml\xe5\x99:\x83\xf9\x1d\xb4٧\xc8%K\xb8g\xfb\x8c\xfcY\x16ٟ\xce˿\x1a\x19.\xdb6_\xbf\x9b\x90+\x1f|\x01\xd5[h\xad\x8e]\xae\xdc\xc1\xd0|\b\xd2O\xa7\xe5\"\x84k\x16\x9e\x03\xe7\xf9\xa6\xeb\x02\x8dǤ\xf4\xe8\x1d\xe1̠\xae\x99q\x85W\xef\x03\xa1\xbe\xf4[KB\xad\xa6\xbbsF\xb5\xb9[\xaa\x1bo#\x9c\xbc\x13\x16\xb6\v\r\x97z\x9e\xcdd\x83:\x9dˌ\x0e\xbfyQ\r\x14hB`\xe6d5\xf5\x1b\x87\xeb\xc3\r\xaa\x1e\xac\xc7I\xd9b\xae\xfd\xfe6T\x1c\x16>-\xcb\xdbi\x1e?\x1bE\x97\xbf\x93\xfakB\xeb\xa6\xf0a\x11o\x8d\x1d\x16\xab$\xff\xae\x1cۺRW\x1e\xab\xb3z\x14$\xfe,\xfa\xd2h0X\xd5\xd61!!ܟ\x9b\xb6+^\xf0wz`\xb23^2\xe50\xdc\xc8\x1c\x8c\xebC>\x893\x9a\xb2\r\xaby\xe5*\x96V\x04*8\x80O6\x0f\x87\xa9+W(\xeaq\xbb\xd7Gt\xff\xf9R\fu\x0f\x19,\xb3Ȯ#\x1cݓֳ\xea\xaf\xfdi\x835?LF\xdeu\xaf\xaeR\xb0\x0eIp\xcfat!2\xf9̠\x1f\xe8U\xb7\x17O^\xcc.\xed\xb1\xfa^\xf2\xf9\x92\x9e\xfb\xd7\x1d\xfb\xd0?\xb0\xef\xeb_\xb9\xd1\x10\x98\xd3\rS\x12\xb1\xe9%>\xcb)y\xec\x02+\x02u+`\x1e\xee\xe8\xf3\xcb\xe4'\x042\x8b,\n\xa1C\xe8\x8do\x16g\xa0\x9e\x8d\xcd%w*;\xf3\xce\xe0Wy֙\xc8\xce׀r\x81[,\xb5Z=~^4\x91^\xa9\x1ciy~(\v\xf5\xb7t\xbb(s\x93\xae\xc9G\xb3\xc8(\xa2\xa3\xfaZ\xaa\x15\xbe\x1a͏\x9f(\r\x84D\xe7Z\xc5\xeda_\xd0\xe4\xb1\xeaQ\xeaxNf\xb6F/\x12\n:\xd4T\x9c\r\x9fѧ\xbd\xf5\xc2n\x85\x19\xa1\xeeU\xf5q\xc9\xfb(\xb5ܦ\xfa\x929\xdf0p9\xb70\x84\xc0\xf9O\x90\xedYA5O\xeev4vQ\x0e\xebr\x8dB\xa74\x067\x95\xa2\xb8\x972xn\x00\x0f\xbf0\xaeL\x161\xa5\xd0R^\xb1\x11\x92k}\xe9\x9aA\xd4\xffy\x81\xeeP\x14\x03\xe6\x0fb_\xa9\xa3\x8f\x80\xb7~\xc7#\x8a|2\xed/MW\x8c\x1c\x88\x16\xbf}\xac#\xb4#ӧ\xf3\x85z\xe7\xed\xe1\x93\x16\xac\xb4\x13\r\x0f\xafb/\x12Z[\xf8+\xc5OlL\xc2_Sd\x03\x05\xef\x84\x16\xa7\xfa\x88]ӆ\xa6\xadԴ2\xc1\xf5\xd5Cdm\xafZkZK\xb2\xb9\xcd\x05\x0e\xbcf\xab\xb5\x14&\x0fC\x00\x8e\xb7Z\xd4}\xf7(\xd2\xcc\xf3q\x8a\xb0\xb3\x9a\xcf\\\xf7ǐn\xa2\x9bOf\xb5\x88'\xcf/\xa1\x9c;\x80x\xb5\xa4\xd5J\xfe\xc5N\xb3\xc2{\x03v\x04\xf0\x0es+\xf6z\x16\x8fV\x1b_d\xaf\xd2ʖX\x1f\x9b\x1c\u007f_ ]\xf9\xa4{\x8f\xf2\x9b\xfdʂ\xde\xeb\xd2a\xf1\xf3R\x8a\x891\xf0\xf8\xc5\xe2\x1a\x9d\xb0\x1d\x11\xec՚\xdb\x15\xe1\xbdVq\xeb\xb0e\x90d\xb7Xm\xae\x15x\x85\x91ʁ\xe7R\x83\"\x1fv\xaf\x89\xef\xea\x1aq\xa9\x9c\x85\xcb\xd3©}gy3\x11cL\x18.\x9a-\a\xaf\xf7\t1\xa8xi\x05\xf5R#\xdc\xef?\x9b=0JV\xb2\a\xaaZɑ\xecr\xddY\x15\x9c\xcbO\x889\x87\xc9\xf3\x06\xd7\u0558[\x9d\xe0\u007fjk\x80\\\x96\xfb\xcf\x19\xab\x9f6Iu\x150\xc3-Y>\xc2l3\xb1y\x92@\x96\xf2\xb9\x8f6\xf2a\xbe\xef\xcc\xe1oKw;`\n͈D|R\x9d\xb6f&\xceb<\xf9O\x16\x8c:`\x81\x16N\x96!R\xac)f\xe4\xfe\xb2\x81\x02$\x01\xf9\xb9\xd0\xc7v\x00\x8dE\xab\f\x8b\xe6\xec\x02vĢ\x9b\xe0m\x12eZ\xa4\x94\xe2\xd0nDf\xaf6_\\ZWj\xe1Ӑk\xba\xebH\x96\xf5 @\xa5c\r\xf8ٗ\xf5\xc6\xe0g\x9dkO\x12\xc531\x01{!\x85\xe2\xe4\x05\xb7\xdbmP\xae\xf8\xdc\xf1\xbdx\xb8\x8b\xc6:\x83\xed'L\xfc\xb8?Ѵù'rZ|%\xf7\xabhJh\xa9\xf2;\xac\xea\xf7\x13\xfc\xaa=(U ʠJ\x96j\xac\b\x85)2\a\xc1\xf4f\r\x14\xe9\x14\x0e\xa9\xe7H\xc7\xc7e\x18\x95\x92\x91K\x8b\xd0\x10/\x8e\x1b\xe2\x10\xb6\x16t\xabʑ\xb6\x86\x15ִ#\f7\x17\xfd[=o\x00NjG\xcb\aW\x0eԲ\x9f\x90\x98Q\x16\xe4I|\xfb\xb8\xbezx\xad\xb6u\xaaxb\xa7X<\xb5{L\x16$9_\xe5\xdf\xfb`\t\xe9y\xfe4d5\xcb{8\x18_t\xa4}\xa8ԇ?\xa8ה\x90\xd6\xdd\xdd\xdcGZc\xecc\xd5\xd3}\xd0o\xe0T.\xa7\xf8\xba\xe6\xe43.\t\x90G1U\xfd\xeee\xb5\xb9\u007f\xd4C\x85ko9\x87k/\x15\x8fI\xc8fv\xea[\\\x91pD:\x85%i0\x042\f3\"ev\\\xe9\xfbI\n\x0e\xb8UD\xea`\xcef\tM^\xd8\xc0n\xbeJ\x01K\xb7%\xf3}\xb4Q/\x83_ܣ_\x92k\xcf\x02\x8e\x93\xac\x97\xe7\r\xa1\xce놬^\xb1\xe4\x95\x01ڧ\x03P\x1bDud\xa1B.¦\x88=ͳ\xb9E\t\xb5\x14\x9bv\xa4\x95W\xd3k\x05X7\x83\xaf\t\xd4\xe9)\xedd\x1dP\xb1V\xb8{\xd1\xd8\xf7\xa3֖\x8f\xb68\xc3\x1d#\xde\xd9~\xe6!\xc64\\\xc0C\xdbBF\xd3\xc1\xae\x01.\x86\xb7\"-k\xa7ev\xb4= \xd1h\v\xfd\x15\x1b\x1e\xbf\x06\x1f\xf6\x9cA\t\xe7%\xf4\xfa\xf2\xa3\xc5\xd3Y\x90\xaf\xd2r\xa6[AMp\xe5,r>\x1a4\xd6\xe7\xf2\\\xfe\x9cSB\x11\xe5\xd4\xc5\xe7\xf6\xa5\"c.s\xb3v\xf6B\x1b\xdc\xce\x15\x95m%)%\x03)\xe6\x95\x04n,^\fB\x8a3\xb2Y\xdb@/\xab\x9f\xb8\x05\xe0\xc8K\x83}h.U$\xad\rp\xc2\xc5\x18t\xee\x1eŤ\xf4\xc5\x18q\x9a\f\xb3k\x92\x03\xc9B\xf7\f߂\x99S\x97\x1f\xe8\xfe\xe5\x02\x81]\xd6\xda\x10s\xf1O\x94pgo\x15.\xb1!\b\x91\xeaP\xbf\xdbHbI!\xd5b`Ea\xdf\xe66#Œ|֫\x1a\xa5\\e\xd4L\xd4*\xaa\x90*\x1d\xea\x92\xf8\xb5\x9ac-\x00#W\x03V1\x99ZB\x19ԑPyT<\x1an>\x1b\xc6c\xefs\xb5i\xbf\x03)?\xc0\xa3Ȋ\xe0\x93\x1a\xc0>\x95\xe7\xc6&{_\x88\x90!\\\v\x8c\xaaH%\x17\x0f\xb0a\x89{\fk<\xe8\x1f\u07b5\xd1\n]p}j\xd6\xd5\f\f\x97\x98\xae\xa4\x81%0\xe8\v/\xdaV\xaa3\xb8\xa0\xccj\x00\r\f]\xf1H\xc8到\x9a\x90\xfaݙקks\xb2)\x82\x9fVEK\v\x1c\xc6\xd9\xefP\rC\xd7\x1a\xdagb\b\xed\x1dD\xe2W\xd5(aPn\xb0\xb69\xb5&s\xf9\xb0\xf2\b\n\xc7\x15*\xe1<\x88ɸ[\xa2X!\xd9\x108@\xffaa\xe4\xb7]\xd3O\xf0{\x932\x02^\xb0e\xc1y\x86\xd4\xe1h\xdbFU\xc0\x97\xee\"x~\xb0l_f\xc7\xe9\xcc#:\xb5y\x04'\xfc\xe7\nQ?\xb0\r\xb0+\x03\x96ש\xadY{\tH\xf5 \xa7\xf3eՍ\x14;\x89\xadT$\x89\xa9m\xe3C\x13\xff\x8exT'\xdcl\xbe\x90/g,\x12\x8ai\xa0&\xb6\x1c\x90aN\xe1\xb7\xef\tС݆\x178n\xaco9$\x9c\xa8\xe41\x89\x9e\xb6\x18\n'\x1c\xf8\t\xb8\xd0\xde4\xbf\xac\xa1\xc0\x8e\xcbb>.\xd9?'\xf4tkM\xef\x81\xc6\xe5\x9a_X\xde\u0085\xb6\u009b\x18\xe9\x9e\xddi\x8a:\x13\xcbe\xbf`8\x13\x95\x0e\xb4\xf6\x91ӵ\xab\x8b\x99\xf7\x8c\xca\xf4\xbeU\x0eNg\xa3\xfaf^\x93\xf3\xbc\x99ڋ\x80\xa9\x00\xb3D\xa8热\xf4r\xee\xeb\xfe`\x94Zl.x+\xa2\x17\x96(\xe2^ɂ\xb4Ј\x0fغ\x99\xf5\x8e\xc5\xffQ3\xd56RE\xa3\xa4\xb0x\xf2m걣\xeb\x02\xbb/\xa6\xe6\xc3#CN>\x8350\xb1\x8e\x81\x1f\xca\xf1x\x92\x9e\xeeq$y\x0f\aV\xfa%\xd1P\xe7\x90[\x15\xdc\\Ō~\x12z\v\xe18\x05D\x91\xc2U\x86\xda3c\xdb s\xba9\x0e&\xbc\x935=\xaf\xab\x9a\xc8\xd1+\xb5@\xb2\xa3\x8a\x11\xcb{\xb5\xb3\xef\xa9\xd7Y\x05\xd0\xff\x1b\xd4\xd1\xed\x83FP\xfb\xeb\n\xa6\xc0\xae\xb1\xf6\x8e\x8b\xc5\xcd\\.\x9c\xb9\xa90\xa9\x18\x1b\x84\x1ep\xcbvش\xc2o1;(ޘО\x17\x92\xf2\x9c\xeeb-\x94\xb2\n\xa6\xa8\xe6{\x06[h\xd3\xe1\b\xd3u%\xe4K\xd3\u007f2\vv\x18f\x8b\x0f\x82\x8f\xe6\x88\xc2\xf5\xcf\xcf\xf9mК,\x1ex\xf3ݶ\x025|\xc9W\xf1\xf8\x8c\x05\x8f\x9f\xef\xcc_c\u05fd\xba\x18\b,c\xcc\u007f\xf2\x83\xf6\xac\x1a\x9f\xf82\x17\x8c\xd9\xe7\xcd\x1c=\xc7\xcf\x03\xbbV\xa9o\x97\xaf\xa00J\an\xa0\xa0+\x95G\x8a\xb3\xfa\xd0\xf0\xe52[\xe1=\xb4[\xbb*\x81T\x0fߔ n\xadV\xef\x83֘E\xb51pM$:\"\xa8\xdc\xfdl\xea\xa2x,CD)\xa1ؠ\xc1B\x0e@\xedIɶo\x992$\xb9H\xcb\x03kg\xe4\"\xbc\x9e\x89\xa6^J\xf6W\xf2N\xa4X([NB\xedF\xf0=ٞ\xb68#_\xe9\x8fe\x9ck\xed\xe0\x96\xf8\x87\xc6R\xea[\x93$\x18ovML*\xdc\xe0\xd6\xd9\x02\x03\xedNķ8?ߧ\x811\xc9\x16\xe8/j5 \x97\xe5(S\xb7\xe5|\xe9\xf9\xa9\xff\xd0wEP\x85\x1f\xa9[\xe0\x83\xe0\x89;x\x16\x03\xe4)\xceY\xdaa6T\\\\L\x86\xf62\xb8A\x87\x15a\xc5ǂ\xbf=41qsd\xf4\xe2\xf9\xf1\xa1\xebc\xb1[\xe7\x93\xf1\x8b\xcfj\x86\x04\xd9XA6w\xe5LLA\x12W\xfc\xa1^Z\x1d\x02Y\xc4\xd5~\xed\x1b$\x89\x89\xd0\x12`}\xab\a\xdeQ\xa6x\xb7\xdf ~v\bϙ\x14\x8a\x06cP\x94_\xdb\xfb6\x18\xf0V\xdf\x05\xa4\xb5#\xecm\x1c+\x88\xb9\x12N\x96\xff\x1937\x90H\x01\xff^[c\xc4\xc6\xcb\xcc\xe4R\xb5\x99)K\xa5T\x9c\xd9l\x15\x03\xcd\x012+}\xe5\xf2F=\xb4\x16\x06\xfa\xa9\tӌ\r֊p[EU'䀴\xc0ƥ\x1e\x9c\xf5\xc3$\x8f\x89\xcf\xef\xae=\xd2\x1d4\xf7'A\xce妅j\xf7\f\t\x84\xf9%\r\x05\x9fDt\t\xa6\x9dV\x83\x0ef^\xe1)!}\b/P\xcf\xde\x1aQ\x9d\xf9C\x85y]R\xb4\x11mF\x91-8\xa4PV\x9fB\x89\x1a\b64\xa4%\x9a%-\x85\xaa\t\x05\x9fx\\\xed\xd4/\xec\xe6\xb7o\x91*\x8ex{\xac\x84\xe2\x88UPO\x90p\x1d\xc57i\xfcfW\x1f}\xa7\xc6\xf4(Y\x92\x11\xbe\r\xaf\xe4\x1an\t2\x00\xd7\x1d{\xa5\x98>_\x89\x8e\xc2k\x98\xb7K\x01\xa5й\a\xf8\xdc[\xc8\xcdB\x1b@L3\xe8h\xd8W\xff%\x04*f\xb5u\xf9\xa0\xbfZOW\x82k\x87\xdaK͎\nݬ\x16d\xcb\x03rc\xf1\xa8\x16\xf5i\xd9g\xab\xbf\xa8\"ܗQa\xe0΅?:\x9d\xd9&1\x18\xf0\x83\xb1y\x8cf\x9a\x90\xc4.g\xd3ހ\x04\xaeǭ\xda'\x10\xa3\x86\xef\xd6\xee\xfdIl?\x89DW\xe8\b<\xa1ϡ\xc5R\xaf\x9bO\xb8\x18\xe1Ǖdg`\b9\x16\xa1Q\a\a}\xc1\xa5\xe6c\x98\x9a7\x1d\xf4\u007f\xca\xeb\b\xdaXJĒI\xdd\x06\x0fHg\xed9\x14Z\xbdϊ\xe8A\x94ApmXaS\xa4\"\x95=\x96\xedŐ\xb4\x128\xe3\xd9$\xee\x86\x1d|\xben:|\x96\xc36v\x03\x84JĎ\xfa/u\x1e\\y\xbf\x01\x98\xdd\xdey\xc7\v\x9d4\x1b^\x93\x02jJ٬\xa4N\xbe\xe7\x0e\xd2oX9B,\x11E\x88\x1ettzw2I\x0e\xe08\xa7G\f\xe4\xd6\xd6\xfd\xff\x8f_\xea\xed\r\n%\x8a\x84̛\xe4\xa5\xe3+\xb7\x00\x83J\xb1\xbb\xb1\x92\xe3\x8b\xd9\xe5\xb5\xed|\xb8\x8dn\x1f~]\x95 [\xfeA^\xaa\x16z\x03>okO\xe0P\xf6%s\x87yG\x04\x86\xd9$y.5!ͷ\xa96\xdf\xea\xeb/\x8c}E4C_\xd1.\x0e\xa8\xc4\xecQ\xa1\xb7\xfc\xc6y\xaaM\xa3W;\x15Z8\xad\xe8榦\xbd+<َ\rrT<\x83\xc8Z\x1c\xfckը\xddj\xa0\xbd\xab\x9c(\xf8\xe8\xc0hQ\xbex{ђ\x81@\xcfQ[\xf2\xd8^\xd4\v\x0e\xe3\x98V\"4\xdeS&\xfd\x06\x10\xc0\x92\xd8:\xb5[\x19\xc0Ӹ\x15,\x03\x95wݙ\xb8\xaf\x8fs\xf8%.\x97f\xe9\x92\x17&}v\x88\xf3df\x8d\n\xa5X\xf1a\xfc\x80ï߬_\xe8\xfb*\x87\x83\xf1)\xb1p\xeeDi\xc3~\xaeڳ3\xe3\xb0p\xab\xa4\xa27tY\xf9n\xde\x1e\xc5\xc9\xebەU\xc7\xe3m.!&\xa1\x85\x9a}\x9e\x8d\x9f\xa62\xc9;\xed\xda6\xc3\xe8\x8e\xfd\xa7\x879E\xf5m\x96\x10 ~A\x0em\x1e\x8a\xc1-N\xca\xc3,\xe1\xe1\xa05\x870\x9b\x18N#u$\xa3;\xec\xe2\xe7-\\\xeeb\xb2HC\xe5[LC\xa4\xd4\xf6⁃\xe9N\xb1\x9b\xdbL\xfb\x84\xceP\xcf[w\x99\xac\xd00\x81XF#7\vt,\xe3\x19\xa7caLA\xcd\xd78 \"\x8fF\x95\u007fOk\x96\xb1\\\xf5a\x92\x05\xdb6\x8fsN\x00HB\x97\xec\xc2[x\x1aH\x98dP\x9b\xd7\v1\xad\t\xa8\xc4\b@\x96\xd9\xc3#\xf2û\xc4&+\x82\x00\x83F\xe6\xe9\xc4_\xbf\x126FC\x11v\xf5\x1aY\xb40e\xa5\x11\r\xabk9\x83W\xea$\xfc\xae\xd98\x98\xd0\x16\bk(\xfb\xb4 \xe1\xb6(E{\xaaZ\x9ds%\x84\xa2\x9bH\f\xffD\xcf` \xa1SC7B\xfd\x1e\xe6\x810\x15,\a\xf2\xdcm\xdd{d\xa0H\x19A`h6\x0e\xc7c)RWMX\x82\x9aS\x95\x89O\x01\x02\x82\xaemX\x89C6\xc6\xec\xf9}\xe1\xef\xd4\xf8\xbb\xc8\x16\\\x1c\xa8g.\xb8ڳD\x99\xb8\x87T\b\xe8\xe2qL\x05\xe4\xf8\x90\x9f\x9a\xd5%x\x00\x00Y\xb1\xa3S\xfd4\xc3`3l\xa3\xa6\f\xeb^\xb9\xb6\xa93\xe9\xe3EJ\xd2\xce\xf5\x9d\xc8j|\x1c)\x93\x03\x1aA~\xb4\f++\xa8\xbd\x1a/}\xfc\xf2\xa4\x9c\xd1\xe0\xe4\"7\x99̣\x94\x0e}^\n\xf4\xa4\xe6B\x87{\xda+\xaf\x82\x9f\xed\xf9\x10\x8a\x0ek\a\x95\xe5\xb5!Bx\xf6\xad\x88)\xc0\x10Y^消\x86\x12jl\xf3$\xe2,\xb8NAq\x15\x14\xc9Ȃ\xfb\x06;\xa9\x8eO\x12\xa6k~\xe4}؈S~ʜ+P\x94\x99XKJy\xc8\xf1c\xd6\x18Z\xda\xcc\x1f\x98\x84\xc2Xc\x1c<ŐB\xeb~\x8c*\x8ff\x90ßLM\x82\f1\xe3\\\xa0a6o\x8f\x91\xb0%0`\xd6\xe2\xd0\"\xc0\x81?\xdeO\xb4\x8e\x14\xa5u8\x9dW\xad\xb0\xf4N\x99\xceX\xb8>N\xfct\x15\\mцp\x8aґ\x1dT\xb5\xb8k\x8eB\xf4\x86,,\xd5\t\xfb\x83\xb3Li\xb2s\xa0\x93\xe7\x0fz\x9a\x0e\xd2\t\xe9\x05\xf7\r\xd3rd\x92\x1e\x17\x9e\x05y0Ň\x88q\x0fĝ\xfaג\xad\x0e\xb7\x1e\xcf#\x86\xa66\x13r\u05f8\xf9ԯ\xac\x12T\xe4\xec\x81<\tbseց\xd1d\xb5rx\xbbZVo#护n\xfe\x06\xf7\\\xb9\by|\xe2M\xad+\xd6f\xd1c\xccM\xe6\xf3\xefӢ\xf7\xee\x0e\x0f\xde\x16\x9d]m\x1d=\xdd\xedLLQ\xd9#\xc1\x95%M:\xfc\xa6\xfa\xbb\x11\xc2\xf98\x06\x12\x98\x83\xec:\x1e\xa1\x12\xdf\xdaa\xa0\xc2\a\x1b\xd3\xd7`\x84[\x89o\xa9ڨ(Į\"R\xe8\x82\xf5\xda\xe8\x13\xb5\xf8\x05u\xa7\xb5\xcf\xe8\xfcsT[A\x16\x87ÊW\\\xdd\x0e\x01\xf8n\xe7\xf6\a\xb4\x15\xe4\xc8D+\xdc\xc4\x18\x95nM!*\x98\xf8\x82\xfc\xb1R\xf7\x84N\xaeQ\xaf\xacϖ\x90-\x00\x83\xf9U\x9a\f$\xbd\xad[\xec9\xa3즨\x1e\xaej7+\x14\xe8nYl\xadF\x17hf=o\x8cl7H\xf5\xb1\x06\xd16\xa7}%\xd2\xed\x19図Ǘ5\xe7\xc9\x18CNȀ\xd5fG\xd4\xd69\xbbJ]\x1f6nD\xc1X۴\xd4:\xab\x95dʷ\xeb\xcfY\x99\xdeOHL\xa57w3\xba\x80\xfc\xd8:'\xd9\u007f=ɿfr@m\x87\xcc\x04\fHr\x8a\xc6g\xc8ߢ\x9e@\x87W˕\xdf\xf2\xb5Z\xae\t\x8a\x11\xf2\xcc\xf1\x1dF\xb5\n\xe5\xa9\x19\xba\xf1I\x04e\x87\x82\xb0k<\xa9Q\x8c\f\xe6]\x19\xe7Vk'\x99\x89X\x90\xa7X+\xfe/@\xa2?\x9e\x15\t\x83\xf6\x12\x96\\\xf6S%ܙy\x9a#\xe6·z\xc9wJ\xbd\xe5,\xc5.\xfa[\xb3\xdd\b\x95κ\x90\xeb\xa7\x0f\xa8\x04\x8f\x04\x8f\x1d\xbb\xa6\xb0\x92\x17\x01E\x8a\xe4;]1a\xf5\x979:\xf4/\x14:l\x9c>\u007f\nS\xe4\x1bw'\xd7\"]rҨ\xed\x9a#&I\x9f\xe0\x01\xd4\t\x03\x15\xa2N\xa44\xd8'\xed\xc7\x10\xaf\xf0͇^\xf7\xb4ߢ<\xfdJ\xe3\xef\x145\xc4\xdf\x15\x9adc8\x8a1\xc4[\xaa\xa5}\x12Z\x8d\x85\x9bu\x9c\x1b\x18\x03\x86\x8b{t\x023Oߒ0\xca\x00\x85- u\x87\x87\xa8\aWd\xcf;d\bzݡ\xddoKv\x81\xdc\xf3\xf3\xc5\x18\xb6\xf2D\x19o\x80\xa8\x0f(\xc8\x11\xdf=\xd8i\xb4\x97\xe6Z\x8e܌i\xfd\xfa\xe5\xfbpܧ\x04v\xbf\x89\x04Y\xd2\r@\x9f\xf3\x81/\xd60\xaa\x1e\xa6\x9e¸\xb7\x06:{\x81`\xb2@\xe2\x9c!\xb4\xa1\x94L\xe0\x0f\xc6\"\x0e\xfa\x01\xe7\x8a\xc9Et\xc9z(\xb3\f\xe2S\x90E\xf9m\x9dx?\xe2\b\x921v\u007fL\xa5\x1a\xfe\xa8h\xe59\t \v(\x98\xe1P.j\xd5\x10\x92\"\xe9\xfa\x9d\xf9;\x05G\xecz\xd5\x1f*'\xf71;R\x1b\xf3\xaf\xfe\xde\xf1\x9e\xfa\x82I[\xb8\xdc\a\xcbr\xae]\xae*S\\\x9b\x12W\xc0(\x95\x1ehE\fD\xbcӻ`\xb4TЀC\xd5qՉ:x\xee\xbeo\x9f\x9d\xc0\x06k\x96\xb4\x80[j\xb4\x1e\xe8\x97E\x1dU\xff\xc8mi\n^jV\xa3\xd2o\xb8)\xe6<\xe2\x15\xf9\x8f\xf7\xb7\v\xecf\xa6P\xc8\x1d\xdag\xb2\x8f\xfc\xe5\x83i\xdbq]\xae/\xcbj?_\xff\x93b\xcbq\xb2\xa2};\x02\x0eW\xfc 6\x90\x82\"\x18\xf0\xc5\xe2B\xb5T\xf8\xa6\xa8LQ\x14\x87\xa9\xb5I\x99\x91\xae\xf8\xf8'\xc5R\x0e\xf3;H2l)\xa1\xfa\xf8*fNyle\x863.\xbc\xab\xfe\xe5y\xaak>\x19\xafYz̰m\xce\xf1\v)tj\xf1n\x1fT!\xf5-\xd8:\xd3\xdb\x0e\x84n\xd0j\xb1Խ\x1e)|\xd04\x87\x9b\x9fS*\xa7\xb3\xf1\xd2\xf9\xfd\xe1\f+\xb7o\x89.\x8f\xb9\t\xb3\xeb\xb5tE\xcf!U\xc2P\fK\x18\x9a\x8d>\f\x89\xff\xb7\x06\x96T\x9c\xa1\xb8\x9b\x06\t7I\x91\xe1\x04\xf0\xb5\x17\xf2\xd2`Sn\xc1k\x94\x98\x9b\x02\xdb\xe1\xff}\xab\xa9,&\xd1\xf58\x1f8N3夒\x838\x10\xed\xaf+\x04\x0e\xa9s\xbc\x9bQ}F7>J\xb1\xe2Z\xa3\xa3\u007f\xae['HF`\x11\xc7'_\x035\n\x98\x8b\x10]\xf8\xbc\x9d1t\u0081\xf1P\xf9\xc1\xc2a\x85\x1f,\xe0\xd7+9\xef\xf5\xf0\x18~\x1fYӚ\x88)4\xf1\x0f\xc6\xd7\x02\xd9ɹ\xa2\xa1\xb0%\xfc+\xb4\xc3-\x93ۗ3\f>\x1f\xc7u\xcf\xde\u007fؚ*\x95\r\x9d\tPꁋs\xba\xab\xe5`r\xc5#!\t\x95ka\xf5\x03\x965\xa6\x1e~v\xe4\xabg\xbf\x15GG\xabj\xf5FN\xf1X\xa3n}-\xb8^\xbf\xf8\xbf\x13\xfe_@د\t\xf3\x9b,\xeb9-\x04\xb4\x8bJ\f\x14G\xc2\b\x1b\xa5\x8fK64\xe2\x1fVE\xbd\xc1~\xdc\x10\xb1\xb2{\x97OS\xe0\xc04\x05\x90\xc4\x04\r\x14r7\xa1z\xe4T\xc6 \xa7\x84\x1a.htn1\x8e\x10伐\xcft\x0f\x97d\xf5\fN\x97? \xc1\xa9\x87\x1et\x86\rA\xd78\xe2\xc0\xa9\x16\vQ_g/%ڎ\xf5`\xff\x8a\xe0\x97\x99\xb8\xea;\xb0\x04\xb3\xd2\xef\xb1\x0f9\b\xf9\x13\x15ѡl\xed\xf4\xbd)\x89N8\xd3<\xf0z\x10+\xa3\xc14\x1d\x06,\xb7\xd00\xfd\xe8dž\x842ܢ<2\x02>i\xdb_@i\x92F\xf0Cۿ\xa2\xec\xb7\xc5\x10ׂ\xd0\xe3\xafݐQ\xd0R\xc4\xe6C\x9f\x00\xa3y\x14\x15\xc30\x93E\x85V\x1d\x95\xfd\x9cD\r\x92\xc0<\xd5c\xab\xbc\x05\xb5\xb3/\xceɂ\xf4\xe1MW\xc0\u007fGM\xf5\x14F\u0091\x84\x16\x8a\xe2\x1c:\xd6\xe1\xe5i\xcbi\x1c=G\xf0$M1ʸ\xe0\x87I\xcek\xc9H\xfb~ȷZ6\x8e\xf2\\\xcd2\x9f/\xc8V\xfc\xdf{;\xf0EI\x0e0_R\x9eG\xdf-a7\xe8\xefj\x8f~\xb7\x04\xa5ʈ\x0f\x0e.\xe7\xbb\"}s\xdb\x90\x1d\xb5\xabGv\xd5sܑe\u007f\xa3o\xc6\xfc\xad\xad \xc8\xda\xfb\x0f\xe9\xc9\r\xc0\xfe\x01F\x1ek6.\u007fi\xea}f\xb1\x82\x01~\xb2\f\x9d\xfd@\xaa\x95I`\x8b\x91\x97\xde\xe8\xe4\x1a\x9b\xaf\x1f\xa7\x0f\xca\x19*\x81\x81\b\xfe\xa11O\x82/\xbe>\x147w\x91\xbd\xad8\x9a\x89}v\xe2\xf6\t9<\xa4\x97r#\xc1\x99\xd8U\xb2:v\x84\xf84\"Kd]\xcbI\x0fqo\xbfh&\v\xc7\xc8\u007f\x89\xcaJ\x9e\x1bn\v\xd3\xc2\xe1\xad\xcat\x06\xf8ˋ\xa1\xf8\v\x16\xa7\u007fS!RQ\xb2Yi\n/\xe5\xf9\xfe\x15\xf6^Y\xc8O\xf2\xab5\x81\x04W\x9eX\xc2\xdf\xea\x04\x06\x04\x11\xf0\xc7)V4\u007f\fvj\xfb_'\xab\xf3\x87\xe9\xa0\xe2\xb4QWj\vŒ\x9c&\xfd^\xf1#\xb2!T\xa4\x0f\u007fb2\nj\xbc\xcd\xee\xe6\xde\xfb\xae\a\xb7\xa2b\xf1\xd2\xe9|o{\xb4\xd6\a\xea\xb4\xd6\xfc\xbb\xa4\xf7~\x98a/ح\x9b\x03\xb5e\x9e\xfa\xc9%\xaag\xb1\xa8\xfb\xf71\x12\xd5\xcdn\xde\xe9nn\xee\rK\xdf\x17\xf4\xa2\xdb\xc35\xe3J#\x17\x8e\x9a\xc0cd\x9b(\xe3\x80VR\x1c+\xfdr\x0ew\xc1\xe3G@㵠\x14@\xa8$yh?\xb8\xedvO\f+H\x1f\xf9P\xd4\ue32c\xa6\xea\tk\xf9\x9e3\x13\xa7\xa5\x02mM\xa7\x84S\x1b\xea|&\vr\x9f\x04\n\x89[\xcb\x04ʆ'I\xc0F1,A(\xfe}\xf1h\t\xaf\xe5?N5\x8c\xd87\xc9\x06#\xb3\xa4k\xba\xf9\xe0C쮺\r\xa9\x19f4ٍCƣ7X\xd4C\xb2)\xa2\xc2o\a7\xf6\x90\xedi\xf0~\xfcy\x8b@\xd7\x1c$]\"\x92\xb9\xbe=\x05\xeeA\x96H \x8c,<\x95w\b=\xfaZD\n\xef\xd9[\n\x9a\xae\x05\xb2\x90\x1fe\xb2\xfe\xbd(\xaf\x14\xd8`\x8dO\xf2NtQ\xb3\x10\xa8\xfcsM\xe0H\xa5\x98\xbf\\\x8b \u007f\x83\x80\x95\x81\xd4f'=\x17\n|\x91a\x96\xb7\x98\xacg\r4\xbf\xba\xf4\x88\xecL\xad\x86ڲ-\ntH?\xb4\x8f\x1d\x1eZ\xd1*\xb05\xe1q\xa3\x91\xb8Έt2o=\x96\x81]\xbe\xee\xf7\x1f^\xbc\xbd\xb9)\xee\x88r\x82d\xa6\rtש\x8a[\xd5Ss\xf9ip\xedz\xa3\x0e9ǁ\xeb\xbf\xdc'\xc4%\xbc\x84\xf2\x06(M\x18\xa7-\x88h\xebG\xf1\xd2uj\x10f\x8a\x81ͺ\x11\x91\x19\xf8\xe2;X\xc2i\x00e\x85\xf3gɇ\xf4dE\xaakm\xf5\x8c\xdb(B\x98T\x8a\xed\x8fQw\xc6Ț~\xbf]\x060\xf2ؓ\x0f?K\xab\x8d\xae\x93\x98\x1c\x03\xc9&\xb5\xacb\xecĨ\x87\xf1\x18G}\x95\f\x8ej\"G\xc0\x0e~\xa4e$\x1b\x18\x06l/~\xd9KR\bXԴ\xbd\x94\x8b^\xdaQ\xc7ڻ\x98\xfd\xb2{yr\xdd/f\xb9\\Զ]LK\xdbK\xbe覟ևԅNe\x01\x97\xb1\x8e\xf3\x15$v\x03\"\x84\xae\x9c\xe8\x10\x1c\x88\xd5\xc2KF\xc3t\x97'\x05Ĥ\xe6\xa5\xee\xc0?\xb1\x05\x86\x9c\xeb\x84\xf7h\xa1\f1\xff$\x94\xe5\xcczJ\xf4\xdc\xc1\xb9\x80˧\xb6\xad]s\xef\x84\x00\xb5\x17\xe5/r\xbe\xbc\x84vvAF-A\xc9\xc0\x1a-\n\xa3\x96O[\xf8\x84\xceq\xf9\xc3_m\xec\xcc\xc8!\x8b\x02c/\xc7\x18\x8a/\xffz\xb2\xb7|#D\xe2K\xf6\xea\xec|_\x1a\xa8\xfa\xc3\xc64\x92\x81\x9cX\x8b.> \x1d\xf02Iځ\xd5eɯ8k\x9c\x16\xdeu\xac\xbf\xd2խ\x945g\xc6\xd4\xf7\x87\x86\x9e\x97_\x06\xa2\x0ej\xf5\xbbCJ.G.\xe85%T\xf7*\xb6(R\x1dc\x9el\xc5_\xdbh\xcc\xee\xa9S\x00\xcb\x15\x19\xec<|\x8e6$ߒ\xa9'u\xb6\xbf\xff&\xe8\xc9*\x88\xbc\xab\x85\xdc\xe2\xce\xc3\xf3+~/\x9fĻ7\xee\x84U\xfe\x13\t\x10\xce@n\x10P\xca\xecI5\"\xb2\x8a\xd4\xd1F̾\v\xea\xcb\xe7\xb5\x12\xb6\xe6٩\xa6d?Y\x893\xc8y\x9d|\x11\x85\x18ꍝ\x8b\xd4\xe4\xe6\xe0\x84\xe3\xae\xfbxmZ\xf8\r\xbd\fg\x9d?\xbc%\x8c\x9er\xcc\xccns\xe6qe\xaf8\xc5Z\x19\x85\x12^\xe1ʊ\x1b\xe8\xbe_z\xfb\xf6h\x1c\xd3\xc1\x84\xe1wŵ?|\xdc\xe8\xed\xdb\x13$\xfe\x19>\t\xdc:\xa6%\x90\xee\xad\"\xd9E\xcd\xe6\xe6\x98f\x05\xf2ǩ\x89\xf4\xd7\x01#\x02\xf9\xdc\"\xf0\x03\xef\xe08\x86q\xa6\x8a\n\a\x19\x99\x9b\x9a?{\xf6A-[~\xea\t\x84\xec\xf8\x8bX\x93\x9e\xbe\xd2\x05WF\xbf$\xcc\xed\x1f\xbd\xdc#\xec9\xf6\xfe\uf817\x8bj\xe0|\x95*\xff.\x10\xd8|\xb6P\xb1\x10]\xbc\x96\x1byl|\x9aC\xb0V\xfa\x01^\xa4\x9fz\xd2G\xe9\xcf1Ls\x8c\x1f\x8b\\\xcb\x05\u07b4\x1c#YMlvvl0g\x98c\xc7tp\xc0\x88\x19\x91\x19\x01\xac\x98w\x1a2l\xa1\f\xca\xc9\x00\xe8/\xcfe,\xe4\fs\x9ej\x05.d̝\xb6]\xfd\xd5{\x88J\xa9-\b\t\xces͝\x18\xc4j\x9eJ\xf0y\x84\xe0 \\\x01S\x84.\xe0+\U00076f30\xc04\x87c]\x8fT\x9a\xb7\xde+2\nOP1\xa5\x04bԣ\xf6\xd1\xfb\x1c}\xa3V\xdb`p\xac]\xeb\x10\xa7\xf2PE\f\u0382\x01E\xf8\x83\xbb\xc9y\"\xa8T^L\x95!O\xa8Ⱦ, G\x86;c0H\xbe\xa7\xb18\x9f\xe2\x8c9\xbe\"\xfbn\xe2)@\xf0(gD\xfdPZ\xf4R\x94&k\x18\xb0\x80>5K\x12w\x8eS\xea\xb04y\xa9'\xe7\xc7\xed\x12\xe5H8\x03\xc9\xf3E`\x96\xb8\xc0Q\x8e\x80\xf8\bR5\x85\x85\v:\x1b\x9aTs\xaaoOR\x8fo*\xe8\xdeMi\x10\xff\xf8\x1d\xeb\x0f\xe6\xbd\xfd\x9a\x00\xa7T89\xa6\x94\x8e'A\x0e\x1b:\xb7\xf6\x12\x1f\xb9#y\xb5\xcf>ۜ\xbe\xf9\xe2\x85\xc8\x12\xd2\x00ڑ\xba,X\x1d\xdcN\x193o\xaa\xa2U\x81b*\xd5\xf7\xd1\xcc\xe0\x10\x89\xb7J8\xf1\xc9\xc8\xf8\xdf\t]\x84\x0fM*\x94\xd2@F]\xf9\x94\x04\x17s}\xa4\x0eP&2\x88\xea!\x0f\xa4\xb4Ӥ4t\xc5ڕ!\xaa>\x85\xea{\xcc̦y\xc6=4M\xa3\x1d\x98\x98\x94\x1a\xa8\x1c퓥p\xc6-\x0f`:\xc9\xdc\x05d2\x85Cq\xdf\xf0\xc9\v\x18\xf5S\x87\n9\xc3\xed\xb7+\x8dƣ[\xb6%U\xa5I`\a\xb8eB\xb7vQ\x1cW\xb7\x8b\x13\xd7\xe1/\x9a\xa6\xf0&)Iފ\xd7~_\xae)\rw\x83\x16\xd7v\u007f\xa1\xd2[\x8c1\xdf)]$\x91xF\x97\xe33r\v\xfdo\xd8\xed\x05\x9c\xdeJˑ\bޅ\xbf\x13\x14\xd4\x03h\xa6z4&MD\x89p\x94D\x89J@G\x94:\xd8x$qJ\xc5\x06\xf6iwU(\xe3$\x80AGl\xa24\xb5\x98Lj\xba\xfa\xecQK\x13E\xf9T\x19\xe6\xc0 7\xb3ygH[\xbd\xa0c\x1eA}\x1b\x02\x80\xc1\xb7\x18o2\xe9\xe9\xfa\xc3;cKҊu\x86\xe5\xc0\xd5Fh%\xc81$\x12-\xc2DDk\xab\xa6\xc1Z\xbd\x13Ы\xd7\xfbvYV\xa2!8\b\n\f_\x11\rP\x1fI\x05\x84'\xd9\x13\x8d>\x0ej\xa7K\xc8X\"l\\WD\x04\x06\x83\x1e\x8fbM\x8d\x06-\xa9\x17=\x19\xcc\tQ\xa2\xa9Ѡ%\xf5zAq;\x9bM\x0e\xd8\xc1\xe1\x12\x8dRb\xf5\xa1m5\xff\x98\xf0E$\xf1\xf7ͮ\xf5oljq\xf2\xdd\xda\xea\xf5\xfc\x90\x01/>+\xdeϸ\xeco\x84\x03\xbc5?\xcfH\xdf\x0e\xea\x96&I\xdcSR\u0081\xa5W\xf6\xa3\xbb\xbe\xa0\xa0\xb5\xb5\xbd\xbd\xd5\x02RR\xc0\x96\xd4Ƥ\x82.Ξs\n\xa6\xb9\xae\xae\xaf\xbef\xa6\xe2\xdc\x1eNׇ]4N\x13\x02E\xe1K\x05\x1f\x87&s\xfa\xf4\xee\x95+\x13\xd4n\xfa#\xba\xf4\x98$U\x9e\xeep\xae˄\xd2咔\xcb\xea\xa9\u007fT\x85\xf1F \x0f\xdd\x03\xf9\xbd\xf1#\x05\x85k\xb5`N\xff\xa2\"\x87\xe3\xc1\x83\x12\x92yO1\x81T\xf2\u007f\x91\xdeݱ\x9f1 \x19\x88r8\f\xb3G\rH\x86\x17g\x11\xa2Z\x8d/\xe0\xed\x19\x18Xd\xf6\x85K\xf3Z\xfd\t?\xa2(\xf8\xbc\xbfh\x92~\xe8\xc2\xd1_\xb5\x1c7G\xfb\xeb\x85#\x83:'p\xad.\x15\x88\xdd\x03[\xe72K$\nur\x0elY,Л\xbe\xf7\x00.{O\xf9\x9e\x1a\xe9\xfd\xb2\x89\xa6W\xf3\xe9\x04\xfb\xea\xe7\xc7̷]\x9bA\xf6\xee\xf3Ud\x01s\xb0}\xf7\xf8\x87\x86(B\xbbS\x0e0\x93y\xb2\x9f\xef\xf9>艡\xe1K\n\xcf=>\x8e\u0084\x19\xba\x13h\\\xd5Y\x13%\xf6$\x0f\x8e<\t~\xa2\xbc\xc9\x1e1\xd0֝;\xe7\xe08\xac\x0e\x9cc\xb3\x84+\x94\xd5zٝ;\xd7\xc2\x01\x81ۍ#\n\x80W\xb5}Q\x1c\x95:e\n\x95:\x89t\xe5lZ\r\x9b\x11R䯦\x86}Z\x145m\xad\x99jWi\xedm\x95\xb8M7\x04|\x97\xbbγxΉ\x13\xa7O\xe7\x9f\xee߰\xc1h\xec\xd7^\xfc\xb4\xd39`;a\x9b%}\xb0pYв\xea\x83c\xf14\xe6y:\xe5W\x92\x17e\x12\x1b\xbf\xfb\xcc\x18\xd2ڷ\x1b\x84\xc1)\x89\xe2\x8f\xf2\xfe\xb7Ȱ\xb8a\xa9\xd4#4ў\v\xa8ٯ\x92JE\xa9T\x05W\xc0\xac\xbd\x90\n>?\xb9(\xab\xf9Έ\xcaʊ\xba\xe3\xabz0#\xb9\xb2\x92l\xac \x1b75\x92M\x03\x8e\x1d=\xf5fK\x90\xce\x13\xb4\xe5\xcd)%\xd6/\xe7l\xa1\xf4-2D\xc3\x1e\xe0\xd8l\xed\xe4h\xc0\xe5\x0e\x14M\xdc\x1c\x8f\xad\xba\"\xd6\x0f\xaaj\x17I\xad\x8d\xe2r\xc95(nmt\xe0\xc0\xb1\xff\xec\x9fU\xbb<\xff\xa1\xacN\xa5\xa3\xb1\xf5\xd7\xd3\xd8\xeaP\x82eO\x9fB\xbe\xe3\xc8}Ǵ\xf0Z\x067\x9d:\xc3(\x04\xd9\u0382i\xe8\u05c9Y\xfb\x14\x11y\xa1\xa1>ZA\x86\xc0\x04+͌3\xa7\x80뼊(q\x9a\\^\xde2\x95\xb8\x8b\xaa\xd7\xec\xfa\xe5K\xe2_\xecS\x83=̗D\xfc\x8dM\xa8\xfbU\xc0i\xdd\xc8\xdc\x15\xe9H\x04D>4(\t$\xd9\xd9)\xf7r\x01\xdd\xd3\xc2\xc0\xa3\xc1Kt\xa9~\xa9\xeaY\xcbs\xb1;\xc8\xe3\x149e\x9c\xbc`\x13;KMh\xd2-Y\x95\x85ޖ;'\xd6\xec\x85f\x911\x16\xe5\x06\xc5\xc5C+\x1a\x81\xda)T%\x95\x02\xb5\x13\x1d\x04\x94\xe0\x00\x9aѣ}}4\xe9\x04\xabot\u05ecX\xc3BsI\x912\x9b\x86\xa1\xeb\xb8\x01\xaa\x00\xdf'\xbbv=\xf1\xd5rp\xba\xbc\xf3\x03\xc8,\x8ap\a\x85\xe9x¹\x91:\x98T\xe2\x1fK@\x83}>\xda\xec\xc5\x1bO6ó\x8a\xc3vg\x84e,\x9f\xbd?c\xc9\xff\xff\x19#\xe6\xf9\xa5$\xb9\xde\x03\u0379>\xc4#\xf9$\xcc\xe6\x88\xec\xf0\xb6\x146\xb8\xb3\xc1ۏ\x82\x91fF\x14ݏVv\xf5\xc0C\xa6Ud\x14\x8a\xf2D̈\x9e\xab~E\x99\xeb\xb7{\x81\xb4\xabrD\x1ed\xdad/I\x9a\x19j\xcd>\xaa\xb1\x1f\xa7\xec\xf77I\xb9\xb9I\xc0\xb4\t%'\xbeU\xb4\x9a\xdaL\x9e@Z\xe2I\x843\xccAV\x1c\x01PG;\x1f\xd7!+\xd9d\x0f2\x05\xcau\xbf\xb6\xda\x1cP\xfb{i|\x1eL\b\x883jYT\xe6\xa5U\x17W\xb9\x10\x9d\xc6u\xe6\u007f\xf9\x1fmj\xdc#q\xe0ߏqs\xfeK\x8d\xe3\x10\x90\x15\x17h\x81\xad\x81\x80gd\x83Ɗ˃\xdeO\xbd\a/\xbf\xed\xbd\x1bw\x97\x97vn}$櫕G\xb1@\xdf\xc6\xea\x13)$\x1d\xbc\x92\xa7\x1cp\x1e0\xc2\nx\x05$\x9e\x0e\x16Za\x1c\x90\xf1\x80S9\x80\x85\x8c9x\x1d)\xa5\xfa\x04P*G\x91D\\\xad\xb9\x8be\x8a_\xb9ޢ\xae&\xc3n&\rg\x98\xa3\x1cUJV\\A\x9dҭ\x84\x80\x1f\x85\x0e\x8e\xc3dj\xeb\x18(\x12\t*czZ\xaaD\xd1\xe8\xe1\xb7:\x925X\xb7\xf9@\x92\x87\xbf\xa8\butފN\xb4\x17L\xa6\xed\x882Z\xcd\xec\x83,\xad&N\x8aFeb\xa30\x1c\a~\xc8\xeaI\xcf\akb\xba\t\x0e\x82\x99a`T\x83̌\x93\xe5\x14R\xa6\x1a\xbb\xa9\xd4oܮ\xb9\xb6A\x1485\xab\xa9)a.۲\x9bR\b\x91?pȪ\x0ec'\xb1\xc3\xd4\x04\a\xf8\x90\x94y\x9c\xa04+˜\xc9]\xcd2\xbe\xe3\xf0\xb2\xca\n⣘~\a\xd71\xe7\xf8\x19R\xcb\xc4\xe6\xb3ȟ\xe4q\xf2\xe393?o\xbf\x83\xc3\xe0\xae\xc7\xe1a\xc2@X\x17Ŗ\xd9h\x94\uf105\xff\xfb\xf3A<\xa7R3n0\x04J\x87fȘ\x9f\\}\xcdꄿ\xe6\xaf\xec\xa0~\x17\f,\x10Y`\x83}\x86\x9f\x00iKS\xe7\xd6b\x19\x9d\xf4\xbb\xd3\xe5\xf0\x81X\xe6?KV\x1bf\xf1l\x81\xbb\x06%h\x01o\xc1e\xb0\x16\x00\xf1\t\xb0\x17\x10`\xf2\x02\xca\x05`g\xbe\x04\x04\xc7#\xb8\x12^\xbf\xab-WZKG*\xfb\xc0\x89\x9bL$6W\xcfj46\xa7ҧ\x82\xfeñ\x1e-'\x12\x03\xa8\xda\aU\x9e*s;(\\\x9e\xc6c$\xee\xed\xc9\n\xadB\b0!\xcd\xe1Hc\xfe>\xc7I\x91)\xc8\xe3d\x85\x02\x9bb\x9cMv\xecر\xdc[\x19n6\x87+݅A|ysʌ\x1bY\xb0\x8e\xf7\xb0%u\xfe\x96R\x84B\x8e\x8c\"Q\x90\xd2-\vRg=\xe4u\xa5.\xf8\xfd\xf7~\x87.\xee\xa3Y\xc0\xe6N\xa4\xa8H\xf2\xc9\xf3\xd3Bץ\xce\xff}\x9bOɢ\v\xf0\xa6\xe4\xf8\f!\x95w@ߒ\xae7?\x90\xc2g\xeb\xf3\xf3ݟ\xc1ҟ\x9bGI\xdf~\xd8\\N\x02\xa8\a\xf0\x1b\xb2\xf9\xc3\x17^זܗ\x92\x0e\xba\xf3\xf3\xf1\x95\xd6@\xbc\xf4A\xd3\x13\xf2\xb5\xf7[\xcaIH\xe9\x1c5A\x93#\xfb\xd3,m\x0e\xdes@\x0f\xb5u~j\xcbC.\x98\xac\xb3U\xc0\xa9H!\x1d \x99KfO\xcdOR\xec\x0f\u007f\x04|\xfc\xf5\xcf\nU\xba\xb3#v\xf0\x8f\xb9\xcf\xf4\xfe\xf1\x84\xf0\xfd\x8a$\xd4\x19=\x97I\xafXYo\xa2\xc0\vS̑*\x00\xe8\xc9Ez\xf8\x83\xbf\xa0\x13'^Z\xd4Z\x0e\xbax!\x88z\xb5\xc2V\xebE\x1e'{\xaa\xb1\x18\x17\x9b\xccva\xb0՞\x91,\xe0\x1f\veV\xb0\x06\x95\xf1\r\x00W0\x88\xc0(s\\ܣ\xdf\xee\xfc`LU\x8a\xb2\x84\xd4\xc7?\x1fU\x98%R\xa6Fޏ\xbe{\xe7\xb7Gqq\xee\xa8Z\xe1\xe5\xf3\x8cb\x8a;Թ\xdf\x1bE\xf8#<\x04\xf5\xde\xef\f\r\x02\x11\x10Q\xf6$\xdf@2\x0f\xcc\a*#l\xdeу,\xfb\\\xbds\x88\xb9|\xf5\xb8&Q\xe6\xe6\xd5\xe8\xd6\xf7\xcc+c\xbe,F1\xc5\xec\x1e~\x84i\xeb\x89\v]\xfd6\xd4\x10x\xf5\x0e\x03\xb3\x8f^yv\x9b\x99\xbd\xf3O\x89\x16\xee\xea\xb9\xe1\xca\xd1\xd9\x03\x8b\\\r\f5|{U\xbc\n\xf9m\x0e\x10\x16\x8d\x91\xcd\xcf\xf0z\xd6W\xb6\xf9\xd9mfo\x9d\u007f\xd3KU\xaa\x87\xc1:\x1e\x80\x8c\xfc\x13\x0f\x9b\xfd\xc4 \xb3\x17a\xf1\x92\x0f\x9c\x8a\x84\xcb\xfb\xed6\xa2\x1a|6x\x90\x9f!`\x83\x14\x84%\x8b?\x80\x10\x01\x13\xf6[\b2\x80!\xb2>\"7\x81\xb2\x83\x17Ј\xd3\x11\x90S\xdb[K/\xf13\xe5\xa4s\x8b#i%\xb59\xed k\xb6\xad\x91H\xd64J&K\xfe\xd5\xf8\xfa5\xba'\xbb\x1b%\x81\v\xb6B]iN\x90}\xbe\xf0\xd2\x04\xbfs\x16\xb3S\a\x1e\x99\x98SnݒF\x1b\xa2\xa5\xb7n_d\x9a\xc7\xfa\xd3\xd8qe\xa1\x86\xb4t\xb2^ONO3\x9c\xbfЀ\xda3\x9c\xb6\x94\xe1O\xf2OMy\x1bE\x8e\x82\xfc\xaa7*\xb2\u007f\xd5\xff\xfed\xdcN\xa0uV\xa5\xa4\xd8\xf1Y\x96\xa4\"\xd3R3\xbed(oi\xb9\xaaxJ\xc1\xa5\x91_5Ś\x8d%\xf5\xe6\x06V\x8a\x9c\xed?y\x92\xc8\xd8z\xc2\x14\xbb\x89\xfa\xed\xc0\xeb\x04\x06\x00\x8a\xca\xd1N\xf6\x18\xbb\x0fP\xe7h\r\f\xbb掭\xc1\f\x8c\x12TZ\xe8+Q\x89[\x02\x90Ov\xb6\x83\xe3P\x96\x813\x88\xaa\xaaJ\x85\\=\xbdq\xda\xf0\xd8\xe0Ɔm\xdb\xc1lIm}C=2\x99\x15\x1b\xcbYPFȦ\x93ǿK\x90\n\xd7M\xd1jߕ\xd22\xa5N\xa7\xf4)`\xd0>*\x03\x12#\x99q\x87\xfad\xb6N盒\x842B\x85 \xcf\xe1̂a\xbd~\xb8+\xbe\xa0\x05\xc3VG \x89ܡp|c \x1b\x8cI\x06\x9dΠ\x0f6\x83\xbe\x02\xc6\f\xe7uئ\rZWu\a\x93\x16\xf8=\xbcxs\x8fotzzt=\xc4<\xb5\x88\xe8\xb4\xed\x04\x9cn\xeaT]hZ\x88\xde\xe5\xa3hU\xb0\xc0ޘ\x9c\xc0\xd4\xe0\xa8\xe0\xb5#\xa7\xf9\xcc&\xf8\xb6\x83\xd7A\xc9\xf0\xa6c\xd5\a#\xb2\n\xc8}h\x1f\xb9\x00\xf8\xd0={<\xedm\xc9mM\x8d\x1e;K\xd1j\xfeV* 3\xe0\xcc\nU=\xcb\uee4d;z\xda=\xd5\xc6ԯ\x9a\x95\f:2\xf25\x90A\x9d\x9c\xaa`7\x14\xe8\xeaj\xd8\xe8\xf5b\u007f[\xaa\x83L\xb4ۉd\aX\xb5\x15\x8c:z\xfd\x0e\xb3\x14\x83\xb1\x81\xfd\x87\xf3\xdf\xe5\x1b\xe9\xd6\xd5\xebN\xf7W\r\xf4\xafY\xe7\xf1\xb4:\x8f\x9fz\x1b\xfc\xe6\xb1\xe2\xcdw\xb77g\x04\xa4v\f\f\x0e\x0fT\xf5\x0f\xc4\xe5\x8e-\x00\xbb\x9a\x8ds\xa8\xb9O \x953\xde\xdd\x10cx\xeb\xdeK\xc1\xab\xa4*\xfc\v*V\xa8\xecU,L\x8dBH\x84<\x90\x02\x87\x06\xc0\xa0z{7$\x10`\x86\x9f4E\x8b\xe5-\xfc\x96\x82[<\xcc\xc77nPY\xb3\x05\xdcO\xcb\n\x8bR\xf7\x94\xc3t\x98\x84\xe0\xe1\x14\x8c\xbc \xdfh\xe5\xffWW|\x10\xc5S(x\xc0Cƾ\xad\x01E\xdf\x17\xdf\xfb\xc43\x8b\xa0\f\x80_\x02\b\x02\x18.D\xf4\x87\xad\xef\xa5R\xf0\xccO!\xff\xe0a\x12Q\xd5^ղ\xd1yCH\x91\u007fO'w~}o\x0f6Ё\x00dT\xaf\xf9ia\x8e`o\x02Q\n\xbb\xa5\x06\x89N\xf1\x1a`\xf1\xe4\xc5{$* \xb6\xa4\x97\xa6c\xf5\xb0h\xfc\v\xf9B\xae\xad4\x91b\x97\xa7JIU\x1b\xb87\xd0u.\xdad='.@\xf3\x16\xd21\x00\x10\x98\xe6NQ\xd2\xe7wz3\xb5_\x9f\xc4\f\xcf\xca\xd4\x12Q\xbb\xaf\x0e\xe7\xa9a!\xb0t\bg\xd0e\xef\xb3\xf7\xf6b\xc1ի\x9c\x05$4\xf1W\xb6Ŷ;=}7 \xc3Qyز\x0f\x1dB\xcf\xf4\xe9\x1eaw^\xde$K¹|\xabԚ\x0fD\xb4\vZy\xd3\xf3\n\xb7ԁp\x869\xe8\"\x9b2\x943^Q1Ω\xbdYw\xf9Q\x89H\xce\xe2:B\xad\xa8\b\xad\a\b\xa3ꬓ\x06\x86\t\xadU\xc1\xa9E\xd17ou/\xcd/9\x9bS/j\x9e\xa0\x8a.\bfXZ\xb7\xc7\xed\xb6\"V]\x84\xa7\x1bh\x90\xb6\x82f\x9cԑ\xa2\x03\xc0i\xac\xc8p\x81\x95\xdchpq\n\xf2\xa6hmmiqp\x1cr\xf5\x9f\xa5W\u007f\xd8tQmR\x00_\xe9\xa7\xe2+\xd0\xf6Ə\xf9z4\xc6\xf0\xe5~p[\x01\xb3\xec\xde\x14#\x99\xc4\xf9 :\xf9\x8ftV\xdew\x95pͽݘم\xb1˨lW\x99\xd9\xd4e\x84yŘ\xdd\xf7j\xc0\r\xa9\xfe\x93\xc0lN:[n\x0f\x8eq\x00\xf3,P;\xab\xd3iK\xd6t{\x98\xad\xed\"]#\xad7$M\xee.\xf7\x98CIp\x80\x1f\x9fJ9\x8e\xb9\xf3Z؎l\xc8q䵚\xcdV\x8f\xc8\xd3؈\x1d\xe3\xb2\xd7j6\xb7\x1a]\xb0\xd5\xc5vΛKS\xf9\xe02\xd4\xd7\x1b\x14\x11D\x80\x96ވ\x83\x11\xd3\xe9\xd4\xefB\xc2εB'J\x88\xe2\xb7\x05\x92\xee\x9d\xd4\x1b\xc1A\v\x01F\xcd]\xbd\x17\xd9RLJe\x02\xc3\xc1\xf8\x1aU\xe8\xa0\x1b\x88\n\xf4k\x12\x9b\xa0l\xcccY+\xc5\xe4%\x91Y;\x97\x00\xae\x87N\xb5l\xc9,_\x1eC\x95\x83\x86\xfa\xb9s\x06\xee\xbf\xe4\x90\xc4-\x91rj\xcc\xf2\x8aI\x03-\xa7 N\xf9\xea\xd9%$V\x93\x9c\x9dհI\x1e\xdc\xfa\x9a\x89\xfc\xb7\xa8˼\xbb\xd7\xd6\xd6\xcc\x13\x9e\xe9\x19\tiJ\a\xc0\x8aW\xd5\x04\x1b^\x8b8]lQ\x15\xa9\x1e>\x88\xaa̦=\xbd?U_\xa1a0))\x8f\xc7\xda\x06Y\x02[\x82V\xeb\x00\xc8^\xde''\xa7\x90\xb61'3Wy\xa5\xd8\xc4)\x15\xd5\x19\xe9\xe9\xbc\x1fݡ\xf4\xb7\x00Ӈ\x01rѡ\xc1\xb5hz\x18\x8e\xb7\x8f\xa4\rB\x1f\xffݏ\xd1W\xdb-iY\xd1a\xec\x1e\xb6\x03\xc2\xc3\"5\xe9\x1f-\xf8Zv5\xfc]\xdak\n'\xe7\xd0\xceS\t_a\x94 ~o\xa2O(\xfd\xbb\x1f\xea\x89\x1a\xa8A*\x92|\xfa\x14\xec\xed\xdf\x00i\x88\xf5\x1f\xceт}\x12\x8f\x82\xe3\x06\xd6u*K\xf6[\x83\xd1Q\x9e\x96\xe2(\xc5\xe8kR\v㷐\x0e6\xfc\xb2\xf6oA\x84\xd7\xe0\xc2\x17s\x15\xed\x8a\xc0فs^\xac\x1d\xf4\xd2\x10f\x1f\xb1\xff\xdap\x90\xb4%>\xb5`\xbap<\xc8'\\\x9b\x14Ҁ!\x90\xd4l\x13\xdd\xf3\xe6\x01\x18t\xdex\xa1\x9d#.\x89[2b\x02\xa6\\iWr\x86{\xf5\x98\xe1\xfc\x99\x03\xf0S\xa3\xce\x13\xb9E\x1b\xeb;\xa84\x16\xddMz\xb5\x00\xa6v\x00\xcf\xf7\x10[\x17\x9a\x90b\x9dý\x1e\xe3\xe1&o\x91h\xe5\xa1l\x1d\xf4\x86\x05(T\xb4*^E,\x13\x1d\x19l\xb4\xc4κ\xc4\xf1S\xc2\xea\xc1\xb8\xb9.Ѐ\xb6_Bp\xa9\x8c\x98\xcc\xeeF@c8\xa3\x1c*\x95sɄ\xc2\xd4\xec\x90*\xfc\xbc`5\x87\xbaB\x8c R\x1fѨNnr\xed2\x0fͣ\xaal&*\x17\xe5{;\x95\xf4\x87P\x88-\x88\xb9\\\xebi\xd6U\x1dy\xa8\x84\xe1\xb88\x18\x164\xb7\xbcM\xd0<\xc0.Q\x9e\xdf\x1d\x94\x12\xfb\x93\xf9\x19\x88\x1d\xb9\xed\x88\x1ei@\xc4k\x0e\xc1\x86\xe9\xea\x83<\xfb\x00H6\x0e\xcf\xc6q1&\xd4\xcd]\n.\x95\xdbDEv+u&i\xbf\x11F\x94\xb8\x8f\xc1\x1fqJ\x046\xf6Ku&\xe5n\x84\xda\xe4jW<\xc5\n&\x12\x89\xe7\x11\xe5B\xc1\xc64\xb3\u007fp\xd1\x02v\x82f\x85\xe6\xfaB\xdf\x03NV/>n\xa0g^\x84\xa4·U\xa9\x00\x15kx\xb8:\xfd!\xa52\xbb\xcdy^\xa4.\x06\x1c\x91\xb4\xe6\x9f&\x13\x8fT\xd7ޞ\x1eQ6\xa9\xd9\x10\x12\xaa_\x03\x03tR(\xdbl\xc8\xd56\x81\xb4ݨ\x8f\xeeâ\x16\x93\x16K\xc1N:_\xac\xca\\5_x\xd2jѦZDZ\xe4?\xdfR`\xa6H\x8aI\x02pD}\r\xf7v\x81\x9d`7\xdb\af\"c$\x8cܶ\xec\xe8D.b8\x97\x17\x97\xa5ԉ\x13fy\xaf\xd9$\xa3\x12 \x02\xc8\x03!B\xab\x10\x00\x85\x98{\u007fKQ\xd3&\xd1\x11\xfa\xb9:30\xc6\u058b\xd1\xf8\x83\xd1\x1c\xfeA\xd8\xf9\xa4\xf0\xea\x10\x8c\xcdOO*\x9fg\x81\xee\x05\xfd\xae\x80\rᤖ\x86\xe1\xfb\x81_\xb7\xb1d\xcb1̠\xd9\xf5\xc0\xfb&\x12Эy\x00Q`\xaf\\\xf9\xcb/\x10\x9d\"\xce:\xa1R+\xaa$i#K\xb7jЩBy\xbc\x13C\x87Y\x93/$;7\xaa(\xf9K֪\x83f\x06\xa9\xd7.ɧ\xa8\xbe\\\xe9ڧ㒓mJy\xa6\xf5\xcb|;\xd6\xf1N\xa4\xcb\x13\x8f\xba\xd6\x1cD$\xbd똣\x9d\xae\x89\x04$\x04\xd7\xf9x\xebD\xfeS\xfc\x05\xbd\xb5\x81\x05\x03\x02*U\xadn\x9a\x8b\xbeD\x974\xf4P(?U\x96\x80\xf2Iɋ\x04\xea]\x94dsc\xdbT[Ӕ\xeb~\x9e\xb8\xfc\xd5\x12^\xc9\xc1'\xccB\xe4{\x034>\xfe\xe2\x03\t\xd6\xcfS\xed\xe759\xda\xef\xfa\xfc\x1fi\xd4\xf4\xe9l\b\x95?|\x9f\xcaZ\x90\x1c\x9aّb\x97\xa5\xca\n\r\x87n\x1a\x8a\x03R$\x95\xc9\u05cf$7\x12\r;~\xb0\xee%U\x9f\x92\xfcdž\x94]\x80o\xe6\x05w\x8e\xa7gs\xcf\xe6\x15У\x96\xb3\xb7\x15\x94\x80\f\xc0\x17\x9e;\x9c\xd8~;\xe4\xf048q^S[\xfb\x9ae\xdd\xdd\xee\xdb\xde\xf6\x99\xa7\xbd\u0604\x1d\xdb=\xa2pU\xd5g\x96N0\x89o\x12,2\xd7?\x8bsOb\x8c\b\x8d\xc8S\xec\xcbJ\x14\x15\xc5YrIy\x02\xf6\xa0\xa5\x85\xd7\xea]w\xa8\x83\xd4Nm\xd9G\x01.\xfbZ\x1a\x85Г\x04G\x8f\f\xbf\x19\xfe\xa2\xb7\xfe\xbf\xdb\xd3XCC^\xbb\xb7\xd6\x00+: \x02u\r&\x8b\x88֭k\xb2\xbf\xda<\xac0>\xac\x9b\xfd\x03\xc3\xd6\xe1\xd3\xfd\u007f\x00\xac\x13\xdeo%\xa5];\xff\xfe\x10\xe7\xe3\xfa\x94\xea\x93^Ո0\xd6\xe3\r\u007f^Y\xf6\x93H5\xa2\xe8\xa7e\x9ds\x9664>\xa8>\b\xe17\xbce\x19 E8Āx-r凘N@\x17\xd5\xee\x19+\xa9sc\x9e\x9a\xeb\x85\xc7\fI=I\x86\xb1\xeda\xdc\x11\xa6hU\bOm\x11\xf6\xd1M]\xfb\x84J\xf7\x97@\x19\x1c\x9d\xe1\xf2s2P\\\xd1/\xbf\xee\xb0_\xe7q\u007f\x93\x02\x97\x89\x8dT*>\xa7r\xe3\xa9#!M\xe0T\x80\x85W\xaa\u007f \xb5\x1b\x10\xb0\xed\xe4v\xad3\xb7\x12\x9a\t\xad\xe6}\xa2\xb5\x88B\xf4Î\xc0ϑOŢ\x97\xc2G\xbf%/Ex_bC\x0ew\xdaآ\fE \xaf1\xce'\xe3\x8b~\x10\x1c\xe8='\x01Y\xebf\xc6}\xc3\x1f\a\xedQ\xa9\xfa\x8a\xe3մO\xbb;\xb7\xc0m{\xe3\xab\xf3\xf7w\xb6K;\xc8mU\xd5Оb\x88\x18\xa0,\x8fyH\x84\xabk+t\xa9\xaa\x0fk۷\xa7\xc5\x11\xa8W\xfdi\xd6\xf6eN\x8es\xa2«\xa5\xb2\nb\v\xa7\xc5؉\xb3}\x99\x83줯N\"\x10\xad\x1e\xeb\xb4e\xed\xe6\xb8\x0fX\xe9\x9a^\x06!D\xe0W\xfb\xea$\xd8\xd5\x06\x97\x1a\xf4\xfa\xd6V\xefi(\x85\xfd\xefX\x94\uffc8\xb8\xb1\b\xa7\"\xc5\nO}\xbd3P\x1cy\x8a\xa0\xa6{\u06dd\xfa\x8b\xf7\x16\xe5\x1d\u007f\x0f>\x12F\xea\xaa\xfc~b!L\x80\x8cl-\xd5i8\xeb6)\xeb\xef\t)2\xa3t\x0e\xf8v\x93T\x01Q\xb5\xe8j\xa5\vU5c %\x90\xff葇\xcd\x00E\a\xcdR\x81L\x85\xf1\xfc\xa0\xe8\xe8\xd0*\nqA\x05\x85}#\xc2;\b\xf8\x9c\xe6\xe6\x1c<\xc1\x81\xf7\xa7P\x8e\xe4\xe5%\x16z\xb9\xc9]\xe7\r\x1d\x9a\u007f\x85U\xb8\xb5kqU\x14\xca\xe5\xfa\x98M_\x90SB-\xc9\x19\xac9>\x9f~\x9d>\xff\xf8.ց(\x84\xb4̠\xa0\xcd>-\xbb\xe8\xe7N\xc3\xd6\xe1\x01\"\x1d\xc7l=\xfdN\xc6s,\xac\xbd\xbd\x10'/\xc7-moW\xa9\x9cz\a<\x9e\xbaΦJ\xedЫ\x1c\x0e\x0eл\xafiᅧ\xa4\x86\xfd\xf4!9\xf1DbҲ\x97\xc1\xd9A\xc1g\xbf4r\xd3\xe0\x88T\xe4j\xff\x9a\xfd\x80\x1d\xb9\x9e\x1b.\x17%P\x8fX6\x12\x8b\x82\xde\xc7l\x92\xb6\xf9\xb1QEP\xa1(\xb8S{\x1d\x87H\x93\xf1'8\xd2,llݭEk\xb4\xbbӵkJT\xc7\xe4\x18U\x06\x9f\x8a\u07b9s[[\x1d\xdf/\xfe\x00\x1f\xe0R\xa0\xb4\xd2ґYeo\x85\xe9E\xbe\x17 \xa6\xc1\n\xe1λ\xe2\xac:+\xcb\xe8\xbb\xf7ɽ\xa9T.\x8e\xcb\xd3\xcb|K\xf4\xb3\xcd4\xa5z\xedV\xeay\xd8\xe1\xe0\x1dz\xa6\xe2\xee\xefˉՄ)^\xe4.\x16o\xd9\x1fc\x96\bȍ\x8d\xae\x17S\xb8\xbc\xaaC \x19Q\xc9\xe2p\xd1\x19\xe0\xf6\x06\x13\xf6\xd6\xc5f'O\x8a\xfd~ٴ\vΥ7D$\xdc\xdd\x03\xb5\x93`4\xcf\u0095皫Z\xca僺\xdbgBs\xff\x1d\xdaXR\xfb\xfc35\xcf'\x8fٽ\xf1'\xb6\x8e\x06\xdcxF\x87\x8f\xd7\xcdH%\x9a\x1c\x89\xb5\x16I#\x8b\x16\xeeN[\x8d&\xce\\\xd1)\x19\xc6a\\F\xd6R8\x97 \xdd\xdd\x1dE\x88^F{\x9e\xb8.\xbd\xd7ʵ.!\xc8:\xe5\b+\"\x85\xf5 \xd0t\x99iC\x02a\xbb\xbbP-\xaa\x95am\x95\x8a\xd48E\xeaB1g\x82i\x83l:\xa4\x85\xe51\xf5\xc2\x14\xec\xd1\xef#L\x0e\x83\xf7x\x8ad\x87_\xf4\x8e;\xb9*\xb1\x00iRP\x12\x95\x0e{\xac\xed\xd7l\xa2\xbbPs\xb6\xdbl\xde\xf2`cV@\x9b\xbf\xb4\xd5\x1f$3M]\xb2\xa3l֠\xe3\x02r\xeeV\xebV\x82\u007fP\xb9\x1b\t\x94I\xb8Dh\x06\xc8\xe7#\xee\xafĂ6\xaf\xff\x89U^R\xbe\xaf\x14S?i4\xb7\xfblѡm\xdb0>8e\x8a8\x82\x99\xa7\x8e\xff\x0e!J\xad\xce\xfc\xff\xf1\xc0}\x0eŰ\xfa\a\xe0\t\x00L\xacM\x8bF\x18>\xe7\xfe\xc0\xe3G'~~\x17\xe5\xff(9\b̈\x14\xb1\x12\xc7u\xab\xe7\xcd9Tt\xb6;wtR=F\xea˗zU\x11\xff\xf7\xf2\xfaa\xb5\x01\x14Ӧ\x1d\xe5\xf1\xa4\x90\xef\xa8q\xd5\xd9*[\x1dױ\xbb\x9f\x88\x11\xde\xd70\x05E)\xf0\xd7<\x90\xe3HVW\xc3\x19\xe6x\x10\x8d|P(p\x1eD\xc0\t4%\xbdw\x02s\xeb\xdb4\xad\xfc\xf5\xbc\xf5S\xc3%\x15Ao\xbb*$\x11S\xe3yi\xe1S+$]\xff'H*\xa6\x86\x9b\x9f\x11\xffv\xd7mç\xa6UL\xc4ו\u007f\x91Ec4\x00\xfe\xd08\xcb`hN\xae\xb9ef\U00082286\x88ʟb\xa6Ɣ\xaem\x9b\xc2lX`\x9c\u007f?\x8d\a4\x9aQ\x8aCg\xefS8a&$V<2\xc7\xca*F)MC\xc0V\xd0\"i\xb1\x88\xe4\xd1Վ\xf2\xa8\xbd;ߥ\xfa\xb3\xfc\xeb\xfdS\xe5\xca\uf791u\\}$Ab\xdd;ѥ\xb4\xb8\xc4׳\xaa\x1f\x8d\xe5\xaf\x13\xe3h\xd2P֙\xc9m\x84?\r\xcfM\xa3\xe55\x11\x19\xba\x90\xd2\xcef6}\xb9\xd9CYR\x0e*9\xd6]2i\xe9J\xaaX(~\x8ag\xf9G\xa4U\xebvi\xa5\xad\xdf.\x9d\xe6kT\xd71N\x9c`\xc00\n\xc3'c-|\x81\xa15\xffH\xfe\xb1\x99\x86IS\xbb\xbc\xcaߓ\xf4r\xf1as\xaa\x1a\xfc^\xfa\xe9\a\xe4\x87O\xb3(\xa0 ż\xda\"\b\xc8\x10\x81a\x015S\x1e\xd0\x13\xc00Bо,\x00v@\rZ\xbeځ\b\xc3\xd7\t\xb8\xde\x12\xfb\x16\x1d}\x13\x03\xa8\xd4:\xe1\x14\xa9\xd4\x000 \x9c+\xe5\xf2\xf2\x9c\xce\v\x89a\xbc\xbf\x98\xc8}\xafF\xe2\n8\x0e^Al\xca\xfb\b\xeb\x13\t\xff\xbf\xa5\x0e\xe9Cg\b\xad^T\x17\xd0\xc7z\x11\xad~\xcaF\x02\vo\xec\x91\xef\xa97\xdcp\x85$D\x80NT(\xa9T\x14\xc0\x84A\x97F\x8dK\x8c\x1ds\xaa\x97VT\xec\x9d\xf6\xbc\xb0\x89\xde\xdbP4\xbfx\xaf\x90\xf6o\xe2\xc6\xe2\xf9E\x1b.\u007f\xf5\xfbN\n\xd54}KJ Og\x1f\x8e\x97\x87\xe7\x93\x14\xab\x93V+H|\xe24n\xdc\xfe@\x92\x84\x14\b$@\x17K\xa1`\x1ae\xfe`\x04J1R.i\xb6OԮ\x1d\x8c\xab\xcdrA+\xaa\xecP\xf6\xb9]\x9a\x80\xad{X\x0e\xf6\x00*\x15i\x0e\xaf\xa4\x14\xdbsE\xdc\xc5\x00\xacR\xf5\xae\x1b\xa9M\xbd\xd0\xcb\x06\x0f\xb4\x1eF\x15\x9d\v\xc6\xecצ\xdcrF\xe9T\nKC@\xaaG\xea\x15'\xa5t\xea\x1dUo\xcdw\xb0\xf0npO\xca,\xd1M*\x95\v\xa7J\xbd2\x04lV\xa6\xc0K:U(\xbfx\xbd\x10L\xfb#)\xefƃjtvҩm\u07bf|\xc9Dcf\xfd\xf0fM\x9e\xfb\xb5o^\xd2\x1f[O%\xcdF\xab\x1f\xac\x92̊a\xa2_\xfe\x12\xe3\u0590\xd1\x16\xf0\xfe\x10\x81p-\xeb6\xc4x\xe6{\xf0\x9a3\xbd\xd8\xf5\xb7\xfa>c@\xb7\x9f2FR\xb0#Y(\x10\xdb+\xea5-\xebՂ\xfa\xb3\xd5^3y\xf1\x15\x91\x1f?\x96\xa9\x12V\xb0\x1e\x14ϛ\xe9Um\xf7\xafUS\x85\xec\xe2Eׯ\xf6\xaaE\xd2\xf2\xfc\x8d-\xab1U\n`\x8b\x91\x8c\x99\x9a\x91'7\xe5m\xae\x92S\xe7\t\xb2\x1a5Y\xc1\xc1C^\xdeKۢ̽\b\x1b\x16*6\xc0\x06\xa3\xcc(sǒ\x80\x9d3\x04\x96\xe3Ĺ\xa9\xab\x03V{\x17ݯ\xec\x06N\xf3>Ss&H۶\xd4;H0\x83\xb7\xd72C\xb03`\xc9\xec\x83[~\x8c\x9esUdgS\xaa=}zjlg#\xbd\x03\xd36r6L\x03\x9f\x19\x95\xd0,\x05\n\x12'\xc7G)\xf8-\xe6\xdaJ\x12\xa0QJ\x8f\xf9M\xa0\xf4\xc9\xe1\x90\x14\x05\x84jb\x12\xa94}\xc7_L\xb7t\xe9\bɟ\x19\t\x12[\xb8\xe9\xdf9\xe2>\xc7҈}\x96r\x19\x9e\x81x3\x13\x9bMǟ\xe5tR\xdd\a\x12^Vn\xe9#\xd2\xc0\x95+\xb9\x87\xf9ʀ߃\x82\xbe\xf6\xa0\xdfdJ\xfe\xe1\\n^\xcd\x0e\x11\x85\xc0[A\x11\xed\xa8\xa9<_Zˮ\x9e\xc2Ct\xf8M\xf8;\xd40\xea!\xfd\f\x82\xaa\xdcͧ\x19\x1d\x82뱫Iv\xd2\xea\xd8\xeb\x82\x0e\xc6\xe9ͦ\"1\xe3\xd4\xf2\xecb\x1f\xc6\xd4)\x9bg4K-D\x8b4Z7O\x99\xca\xf0\xf9\xbd\xee\xe5\xa7\x18b@G\x84\xfb.\n\x9e:\xc9\xc1\x1e\xe2('\xcfu\xdaOsw\xbe\xcedeT\xf2L\xcdW\x01\xd8Gy<&\x96\xa8\xb0\xde\xcf>\xe4\u007f9ۚ\xf0k\xd1\x17my\x92\x1d\x94\x82\xddM\xe2!\x8fc\x06\xce\xdd\xfc\x02\rK/\xf0\xb2ީ\x12\u007fc\x1d\x99M\xf7\x9at\x13\x1b\xe5\xcdY\xdb\xfd\u007f\xf6\x03\a\xf9\xeb\xc5\xf2\xed\xf9\xa6>\xe80W\xdc\x04\x99ĭ\xf4\xf6\x155\nH>dA\x14\xcb'\xb3J\xbd\xc8^\xc4jn\xc0>\x01YFR\xf0\xcb)\x98\x18Ζ\xfa@\x97\x93\x05\xb2}8y.>{iq3O\xe2o\xd1\xd3!\u007fH\x16`\xc0\x04\xe8ez\xa7\xda\xe8\xc4)\x89S\r\xbcށ $\x15\x95M\x1f2\xb5\xf7v\x10Ý\xdcI\xbb.zJ\x13M\xba\xb1'\xbc\xda1n\u007fөC\xfd\xe6\xfaY\xb0Z)\a[SL\x89\xe1Z\xe31\x1cj\xd9\xfb\xe0\xa16\x80s\xfd\xd2n\x8f8K\xe24F`c\xd60\xf0\xaa\xa2\xf7f}kk\xbb\xc3\xd9*\xb5(Ae\x87]}4\xb7\xa72\u007f\\\tQ\"D\x11\x14he˷\xfb\xad\xa9\x96,\"\xea\x12\xcb\x1f\b\x02Wԋ8f\xbe\x17\x99'\x11\xb6Ͳ\xa7\x14\xc3\x03\xbb<\xf0\v\xa3\xca;\x173\xf6V\x19_@\x9b;f\x9dT'\xaa\xfa\x9f(\x90\xcb\xc1Ξѳ\xaf`\xc5@\xf6@\u007fO\xf3\xfe\xab*\xcd\xf63\xd3\xfb\xa4\xb4{\xf9A\xb26\xfe\x95\xde\xc8!o<\xb4.8\xb9\x83\xea\xbb\x1fё\xab\xf1\x9d\x1a\x83\xc5!MM\b\x0e\x8bQ\x03-\x042Ҙx\xa6\x1e\xb0\xc1\xa1\x80\xc7\xe3&\xdd\xc0\xec*剕0\xec\xb0K\b\xb6\x8b\x84\x11z\xee\x11\xc4w\xbd\x1d\xa2l\xe8+8\x85\x8bow\xc5\xffO\x19\xaa}mĿ\xaeռT\x00XD\xf59l\xe6T/\xc9\xd7k\x1b\x1atzg\xe7\x1aPڡz\xa9\x99\xb33\x8c\xcadqz3\xcaZ\x91\xd95\xe35\xd3\xcba\x81\aG/\xb9}S\x06\x85\x19\xeb\xe7\xa94\x99[\xfffZ\xde\x05\x04\xb4D\xf9\xfe;-\xe4\xb6\xcf%\xf0Q\xfeM\xe7Zg\xa1>\xa6\x05\xdf\xdao\x95T\xf2\xd1m\xa7\x93\xa6\x95:\x9a(k!\x0f\xb4\x96\x12\xeb`\xa6\x18*\x9c\xfeƂ\xa8Yh\x94'\x8f\xbc\x85\xaa\xd7\xccb\x17\x00\x8aP\t\x05\xc9\xce%\xeeQ\xb7\xbe\xff.\xce\v\xa8\xb9<\xa0\xaa\x97(d#\x86\xf8\x0e\xf2T\x15H\x13dFdmĬ\xdbb\xa6^\a']O|]\x90\x00\xc2TZ~\x14\xaf*\xcdz\xa9\xaa^!]\xff\x81\xbc(f\x84H\xf3,b`1\x82\xd7\xfc\xc2\xfb_\xaf\xe0\xd1yr\xfe\xcf\xe3\xb3\b֩\x14*FeQ\x05\x995s'\xcaTd\x8bC\x80:\xae[\x061l!\x98\x0eجʤP\x05oU\xff,\xc7)x\xd0\xc6l\a\x95|k\x1e\x02*\xf860\x89\xdf\x0f*\xb9\x19g\x1f\xa1`\xf7\xf7\xd0=\x90\xa2U!Db\xf1t\xed\x1f7\xfc\x84䲪n\xdf\xfcC\x1c\xd0\xff\xdc\x12\x9bHn3\xb8\xb6\x1e8\xf0b\xff\v\xe1\x1f.C~ƫ\xdeU\x92\xca\x13ځd:,g\xb7 \x85DK\xb5\x83sͱ4\ufd4aKpD\xc3\xe2{:\xeb\xd01\xa2\x10Ϝ\x14k\xc2t/S\\1X0fҭ]\xbfS\x90\xc8\x1e\x9f\xb5\xec}.\xbc\xb2d)\x93v\xbd%xD\x8a\xa1߶\xa8\x96\xd1Ȩ]\x84=\xcc\xc9qs\xb7\xd8S\xec\x0f\xecS\t\xeb{B\xedW\xfexjw%\xdc`VC\xa3\x04m+3\\e\xfa?m\x8c:#]͏}\x12I\x1e'\xb7O\xa4\v\xeet\xa9\xf1\xa5\xaanI\x0f\xa5\xd5d\xcd+\bM\x9b\x15\x12\xed\xe9\x04\xb3\x97Z\xe8\xf7憦6\x90\x1aB\xa7p\xc1\x96\xd6\xean\xd5\xd8\xfe\xb51\xc5R\xbf7~䵡)\xb2М+9\xe7K\x8f\xe4X:}\x18X!t\xd1\x05\xdeKyL%\x16\xb4-\xd8\f\xebB\xe8\x83\x1d\xb4*\xa5\v\xc3\xce\xd0#U\xcec@\xd7R\xc4\x14\x00\x89\x93\x001\xea~\xa5\x00\x16̠^:\xe7\xc0\x93\x9f/ɤ\u007f\xde͍\xa6\xb1\xa4\x1e\v\x16U\x85G\xbc\xc8\xc1oQ\xf9'D\x9f\xc4?\xb8C\xbe\xdfK}\xb4\x0f\xd6\xe8\xbd\x05?\xe0\xef\x1f\x1c\r\xbe\xf3\x8b+Ǡ\xeez\xe8nj\xe3\x8e8\x93)n\xbf\xc0\x9e\x88`\x19\x85\x0e\x9f\x0f\x05&\xec\xd3\xfa\x00T$\x1a\n~\xb8X\xccdj\xdf\t\x02\x8c\xb0\xc7(\x90ԣo\xf0\x94\xdco\x97~s\x13\xd6W\xe3g]¯E5mR6\x03V+j\xf7\xa2\xea\xce\x15\x9f\xddm\xae\x90$ď:)\xa4\tJ\x01>\xa4\u007fw%\xd4m\xd6\u009a\x03\xef|ݜ\xf0~{M\xe1f\x9a\xd0{\xe7\x8c\xc63\x8d\xf8m+K\xd6PQ\xffG+\xca\xd8\xfa+\xb7\xe1\x1bϴ|^8K\xa6%k\xb5j!\xc0\xd3΅\xfa\x93\xf3\xbdb\x03\xb2\xbe[\x11\xbb\rN\xf0\xf5\xfb\x97\xcd1R\xaf\xef\xa8\xce[\u007f\xf6Ν\xb3\xeb\xf3\xaaw\\7R9\xec\u007f\xfd|\x13\xe1m\x81/\u007f\x12\xb7\xb6\x8a;F\x82Fĭi\x87p9\x94c\xea\xa8\xdb}\xd9M:\x9c\xa7\xb5\x19q\x94f.\x9d[\xf9m\x9e\xb5%\xc3R)\x19\xb5\x99\x90\x91a\x06\xe9\x12/]\f\xef>\x03\x91ސ\xf3\xe2l\x9e\x98\xf4L\x026%\x85i\x96\x1d\xf9$\x89\xe3qQ\x11g|\xb9Y\xa3\xfb\xdd\xc3L\x9fn-rR\xc2P}\xa19\x1f\x92k\xae\t\xe6,\xb1\\\xd5٬HG\xa1\x98k\xfc.\x83\xf9\x9b\x14nP\x9a\x03Bs/g\xd7\xc2\"-\xf9\x12\xa9\x98\xf9\xac\x1f\x88\xc3QJv\x98\xb7bC\xec-\xd6(\xbc\x87>Jik\xe2\xe3\xc3\x0fS\xf8\xb3%\a\xad\a\x1f\xf9Z\xceoʼ\x91\xefp\xae\xe79i g\x98C\x85\xe4\x10i9\x99\xb3\x12\xa8\x89`x\xb9dƱSV\x86QyK}R\xe2\x16\xc4q\xe2\xaeRոj\xa8\xf5\xb8q\x83\x95e\xf1\vS\xb9\xf1\xfeV\a\x84\xabV\xfb\x15\xcct\x0e\x9fq\xcc\xcc\a@PM\xce\"\xab\x03\xea`\xa2,\x97\xabɓ\xb3T\xac\xb4\xc2\x13!\xe2\xedڇb*\xd5\x04\xbf0\x00\xa3!'\xb8\xa5\xedpI\xc12\x93\x19\xe4\xf4\x80\x8fi\x1c\r\x06ȁ\xfa郣\xa4\xb6l\xfeL\xe9\xc8^Q\xf4\x8a\xe4\nz\x94\x17\x99WӪ\xd96\x95_\xf0\x13\xbf\xbd-NApfo\xb2\xb9Ȫ!C\x1a\xeb06\xc6\r\xcfy?\x04~-\rΙHno=\xd3\xee\x91JA\x0f$m\xf2\xf41(\xcd\x03I!\xed\xadc\xadm\xaa\tY\xdeI\xae\xcd\xe8KF\xf2\xd0]\xc0\x8f]i\x9f;\xa5\x04!~R\xe7`\xeąc\xc1\xe3\xe5@ۃ\xdf\x03\x82\x83,\x05\xc2\x19\xa7\xdfM+7\x88/t\xc4Lp\x10܄'ɞը\xb0\x8f1\xd8\xe02\xf1\f\x06\x1e\xb0\x05\xef4\xd8s^\xb4@\xf2\x9f\x95IQ3S\aw^\xf1y\x1a\x19\xf8\xd2NM[(\xfa~\x82\xaa\x99+n\x10p\x10x{s\x18\xe0\xf1\xc8\xd3>\xeci\x1bg\x86\xf9\xb3 )P\xae\xd5\xca\x03\x83e\xcc\u05edmW\xdb<\xe3\x983\xb9\xf4\xeb\xed\x9e\x13S\xb4\xf5\xec\x92}\x95\xf4U\xec\xfa+\x1bH\x18Woʚ\xce\x13\f\x1eg\xb7\u007f\xb4\xd5*ii\xbb]{ҭ\xf7\xec2\xa33e\r\x83Q\x95j\x19\n\xb4\xb55Cut\xae\xc9^ӹV.j\xb3\x05\x822Z\fj\xd5\xebk\xb4Z\x87zu\xbc٨#\xc4\xe9\x9b\x1d6\xf3a\x8c$&\xe5\xe5s\xe3&z\xfa\xe4\x81w]\x10%\x89.\x9c\x9a\xf8Lz]\xfa\x19(\xc3_\xc8\t\xf7h\xcd\x1e\xb7\xec\xf5ĭ\x8a\x02\xd7EZ֗\xb4\xa5\x9c\x86\x88\xa6\x066\x0e*\xde\x03\xbdc\xf7\rq\xff\xab\xab\xf87Dǹ\xcaa\x9f\xe1([<\xf2mİ\xb21\x02\x96\xe8\x8e\x18\xe7*\xe8\x86\xe4ൔ\x8d|\x83\xb0>b7r\x89<\xbd`\xde\xc06t'~\xe5?\xbfR\xd6\x06\x93\x99\xad\xccA\xf8\x9eb\x04\xbf\xef\xb7\xc1w\xe1C\x88\x13\x99\xd4\x0f\xc1\x05\xc5\x0e\xe6v\xa9\x83\tK虜\x12\xf8z\alG\xf2:\xfd\x90\xe1\xe8\x1f\x8a\xa4\x06\x8d\xfcl\xfa\xea\x15\x17/\xd5i\x9a\x8f\x90\xdf\xd1\t7\xda\xc5J\x82\x99\t0\x98D\xdf[\x97|\x9c\xdeu\x03\xe1C\x9f\xec\xf3\xa4\b\xccQ\xf4\x92\u007fD6\xccN6y^\xe1N\xec\x8f\xde\xcd\xe0_\xb8\u07b7\xfe\v\xa9\x8bW\xf5\xff\xf4\xaa\xabL\xa6\x83\x89\xf4_\t:\x11\xb4\x86C4\xf3Q\xed!\xb2y\x04\"\t\xc6`\xa2.\xe0\t3\xb3\x00Cg\xf9\xb1\xf7\xf90̗\x9d\x10|\x06\x93\x88\x96\xe7?G\xf8\xed\xc6\x00G\x88\xc8\xf5\x9e\x13ZF\xf3\xb0o\x02\xa0\x16;\x01'n\x0f3ӯsF\\\x83\xc7\xcapN\xc0y\x05V\x80[+`\x01'\x80\xa7\xf5\x13&G\b\x05\xb6\x0f\x11L\xb4·f\xef\x93{G\xbcu*@SW\x9by\xf2U\xfa\xd9\xf2?\xb25\r\x86C\xf4h\xb0EK(\x13\xd8\xd9p\xbahlH\xaeg\xad\xbfa*\x06\xd8߬\xd4\xcb!\x84Jm\x8a\xa2\xd2b(dxI\ffG\x85O\x9e\x9c\x14E\xe2\xf9\xe6q1>|x\t\x99\x12Ct\xe2\xf9\x81d\x8a\x96\x14\x18\xbc\xe0O̚\xe6\xfd\xb8\x03IZ\n\x19\x04~\xf0\xf1\xf6\x8d\xe3s\x1f>\xc0\x98\x8d\x03g\v\xce\xc6\x14D\x15դ\x90^\x93_\x91_\x93\xf8\t\xc40\u0090\x9cZ\xba\x80~\x17\x98h\xe9S\xbe\x93\f=HH\xf2μ\x89a\x93\x00$\xbb\a\x90\x19\xf2\x01T\xab^d\x89\x15)+\xf8\xa4\xa4_1\x96k3\x18>qĂ9\xf9kmz\v\xa6\xf6Nxڇ\xdb<\x13q\xab\xb6\xe1\xf6ޚ\xb5\x19̍(\xb4\r\xb7\xb5O\x9b\xf6\xb8\xb5}\xd8\xd3n\xc9mo]\xbd\xca\x03\xee\a\x9cXEoC\v;sD\xf1\xe2\xf2\x02\xc2\xf1\x18\x808\x16\xeb\x8b\xddfVS\xd5f\xd1\xfd\x82L\xc8\x1a\x88*\xa0ʭr9\x9bw+\xf8Us\xfa\U001001fe\xf0!\xaeޏ\xbbU\xf6\xd0=o/գhd\xf4\x92g\xe9^H\xf7\f\xb8\x9en\x8f\x04\x95\x80\"\x87\x8c\x1e\xed\x8aXw\xc7\xe4\xc6\xfb\xf0H\x84{D\xe3>\xf0\x85e\x91\x93Xl\xc8\x01\x8aR\xa5$Уs\xde\xd4\xdcKP\x9e]\x1d\x89e\x92^\x1e\xef\xab\xfa\x92@\xab\x8e\xb8\x11鴼\xa0\xf7\x02\xb0\x01QH7\x01%\xa1%\xc4.\xc1_\xc0Qf(\xb4am\xc1\xaa\xfa\x10\x8c\xc5A\xeb\x19Ӄ\xbd\x8e\vϧSkY{\xfd\xba\x03N\xdbtj\xd6\xcd\xe9\xb2\xc5\xcf1\xd5\xfe\xca\xd69\xf1\xb6\xae9g^=y\x1c:\x95\xae\f\xe7\xec\xee\xc8\x19\xaf#\xa9\xce\xf4d\x1cओ\x17\xd9\xc4se\x10\xda\xf0\xad$\xb2\x99n\xad\xe0\x18T\xe3i\x96r\x86\x95D\x0e2D\xba%C\xde\bN'\xad\xa7\x0e\xf1\\\x15\x1c\x02\x96K\xad\xbcQ\xc9T8gs\v/\x18\xe4r\xee\x92\xd0\xefϝym\x1aUJ\xbf\xbf\xa2\xae\xb6\x80\xf6\xe6\x838\xf1!\acv\x9cC\xe7\xbe\xc2>\x94\x0exw\u007f\xab\xf75\xbc\xe9X2\xcd\xd3C\xf7\x96\xa5 \x996\xd3e{Ck,\x19\x17\"`4g\x13o\xea\xad/e>J\xb2\xd2G\xf6孩\xbcM90\x1aq\x01\xccMG\xb0\x04\xf6\xbco\x1a\x93\xe7_\xc3\xf4\xd1ޝ\x9fܓ\xb1\u007f\xf6\xf2\f\xff\x02\\b@\x8fxh3\xcf\x17\xb0gUE:\xab\xdc\x18,\x1e\x8f\x05\xff\xf7\xd7\x1eM\x9c\xeb9\x91\x19\xbd~\xe5\x1f\xb1\t[\xbf2\x14[Rv5UB\xad\x06\xab\xebV\tWq\xbd\xbc\xf6y\xf1<\x82\xc8\bz\xf9\xc5R<\f\xae\x06\x93\xff\x88\xdb\xc7'\x05\xc0\x81[\xd1X\x82\xbf\x0e\xe7CR\xccW\xcfW\x90|\xf0y\xf2㹾s.\xf9\xc6\x17a\xd4~\x98R|\xb8\x1e\x98\x9aL\x84\xf6\x87\xf5\xbf\xed9\U0007164cÊ\xcd\tT\ff\x96\xb8\bS\x9c\x85\xc1P\x13\xc4f,\x8e\xdc\xfcQG\x80:\xfb\xd6H\xd7\x04\xf4\xe9\xad\xd6\xd8\x18$&vu\xe9\xfbJ\xad\xb7\x91Lwv\xb7\xb1\xbd5\xb39\xb3\xb5\xdd\u061d\xbf\xb3p\xe7\xecnk\x8b3^\x17\xefl\xb1v\x03|\xbf\x9a\x8e\x02G~ |\xa3\xae\xf2\xc6fM\xd6J\xe3ǒ\x15\xc3\x03b\xe5\x88a\xe0\xce\x11\xea\x84z\x82ZV#\x14p\xabq\xca=,\xaaᢟ\xd3\xf4ߓ\xc2ބ\x99\x85\xf3\xc6y^\x95;\xad^Q\x9d\xf50Qz)-gI\x10\xa8\xb6V\xe6'\xbe\xfd\xf9\xd7J,\x06\x03\xb2\x8d3\xdf\xefZ\x1f\xcci[<\xa45\v\xabV\x80\xf6\xb6\x8e\xa3L\x93\x89\t\xb46\x13.\x93\x1ak?\xd1\xe9\x9fj\xf7\x0e\b\xa7\xc2:I\xc5-YH\xe1\x82W\x9d\x8a4R\x911\xae\xc5r\x9dۢ<\xcfk\xde\xe1C&f\x9e\xb4\x97e~\xb5{}eZZr\x00\xba\x9e\xc7P3ȝ\x1fI\xbc\xae\x99L &\xbb^\xba\u007fօI\x94u\x96\xec\xe84\xef\x12\xfed\xb2Wn\xe0\\\xbf\xb6&C\x1f\x05\xb2\xe1\xcd\xed\x9e\xfc\xfc⳦\xad5ry\xdabb\x86=\xed]]*\xb2\xffp\xbbg/\xa6\rt\t\xa1\x02\xb7\xc9\xc4\x05T\xe0JeP\\\xc4\xcd\xec\xecS\x80\xebf\xe2|*B\xa1\xbc\xa3\x1ex\xb11\xf6F\xe3ҹE\xf7Y\xab\xa8\xdf\x1f2\xb1\xfe@\xa6S'\n\xdeeM\x93/ko\x9c=\xfa5\xeb\xfe\xbe\x0f\xe99\a\x1e\x17\xaf1y\xa29E\xd9Y*]u`\xfb\xc6\xf2iY\xe5QS\xdbf\an\\V^]:[\x9fY\xb6\xfa\ths,!P\x80\tPA\xa3;5\xc2\x1aen~\xf0\x81\x14\xff毚\xa3\n\xfe\xa9\x8c\xf3>Kg2y9\x1d-\xfd\xef\xce\xcf;T\x1f\x98X\xf5\xf2\xa5u:u\xca\xec\xe0\xa2\xf5\xf9\xed\xa7y*\x1c\xa2\xa1\xb0-dk.\xcbâ\xeeL\xa4*G\xe8~\xa6\x00\xec\xc64\x8f\xe3\xbc:j\xed\xacM\xa7\xb7\x18hzS*\xe6+\xe6\xe6-~_cʊ\xdai\xe75vP\x16\x85A\x84\xf6^\x8d\x02\x98\x9e\xd8\xcdk\x8e\xd2.Ҧ\xa0\xe5+f\xef\xecֿ_\xf1\xc3)1ި,\xb6\xb0\x9e:<\xb4\x1cʠ\xc5;\xcd\xe1H\r\vʊ\xf5\xc3a\xe3p\xb9~\xcb\r\xd3uS/z_\xa3\x18\x1dM\xd0k\xc8\xefLթ\x80\x055\xe44\x02f\xae\xfe;\xfc0\x02)\\]\x12dA\xa8>\x82J}N\xa5\xaa\xff=\xed\x1d\xd1\xfe\x16<\x80\xadYT\"\x91\xc56b\xb02\x98\xa8lL\x87VxF\x11\xaa\x88\xa6[\x96`\xdb8Pp\xa04'4\xe0\xef\xda;\xb8\"n\xb1\xe5\a\xcbq\x02+\xf9\x87lC\xe4\xfb\xa9\xa3\x14P7\U0006ac4a(\x1bu\xba\xc0\x9f\xb25\xfb\aV2w\xaf\xe5\as\ta\x1a\xeeN\xed\xdf\xf3\xee\xb26\x96\x15s'\x13\xf6\x96\x19Y\u007f\xfe\xe9\x99\xca\xf6\x12&s\x8b\xcb6\xb2\xee\xce\xf3\xb3;;Ш\xfcA\xd9`\xc5\xcd\xd99t\aɟU\f\xa5^\x97\xab\x15\x97\x8c\x1f\xc2'\xe3\x9aG\xe2F\x02l\f\xdb\x02@Z\xa4\xe3@#w\xb3zФ\x03\x00i\xf4%\xa2\x1d\xf46\xa5\x9d\xbf\xf8\x81\x80\x8f\x91㞶\x993\xdb=\xe3\xe3\x8a\xf1\xe1q\xc5\x0f\"\xb51\x810\x9b{\x88)\xe2\xce.\x11\xabz$\xf0Q\xb4\xbfS\x1902\xf1O\x00\xd0\xf6r\xb9\xb8\xdc\x06\xea\xd0\x04\x85\xda\xf0\\\x11\xca\xe5q\xb9<\xca\x10\xf0\xdb,\x95\xe1\xe9\xc0\xbcܜ\x9c\x8b\x17\x99\r1\xcf}\xf9f\xc7407m\xaaʠ3\xe9\xd0\xe1\x96Y\x03~`CIxj\xb1Vk\xba\xb2VkF\xe4\xc3é\xf4\\`\xc2\xc2p\xdajv\xd2\xc3\xd3\x1a[_\xdc\x10\x12b\x98%\xd1\xd1\xcf\x17\x9e\x96\x11\xe6\xe1dVU#Q\xaa\x91e\xe3ć\x83{\x88\xd8z\x80\xcb`O\r\x01\xa0ͥ\xe8\x00\xa1\x993|L5\xc7\x10\x90R\xc1!\x12\x8fr\xfb\xc0J\nP\xe5\x13n\xad?õ)\xc0\xad\xdc\x03\xd5\xfa3\\\x88\xa4\xb5\xd2[\xb7\xb89\x05.\xcdkllm\xf5+\xce+\x85S\x9a\xa9T\x94\xca\xcc\xc9.^\xe7|\xda\v#~\x16\x88\x14\"\x90\x04}\x11\"\x988\xfb\xb2\x93]\xee\xc0\x90\arӣY\xeft\xbe\x13E\x87\xb0\x05\x1a\x81vG\x15\xfa\xfd\x0f\x16k\xee\x8fߣ0\x06\x19\x1bW\xe0\u007f\x96\x83&Ο\xf2\xb4\xbfi\xf3D\xd5Ĺ灀\x14p]e\xf7\xb9]\x94\xd5\xe4\xf1\x97\xab\xc8\x04\xa3\x99\xf7\x9bÚry\xb5\xa3\x89\xa2\xadG\x9c\\\xd3\xf5ZJ\x93cڴ\xfe\xfe\xed\xd0\xc6,\x87\x98Gz\x0f\x06/iQo\x95\xa1W\xc92^\x8dۼ\x14P%\xa9\x9a\xf3\x0fF\x87I\xfe_\xe0\x99\x84\xc1ct\xdaY\xbf\xea\xc1\xff\x18\x1dh\xacwֵrZ\x15\xba\xf9\f\x82\"y\x04\xff\xd6\xf4\xa4/\"\xfc\xfcP\xe4\fh\x9co\x04j\t\xaa.\xf2\xd1g\xf3\x10\x9a\xd9\xec\xbc\x01\x94\xd3\x16\xaaf\xf3\tf:%{\x8e\x18D\xe6|t4\xb4>p\nԱh=\xa3hfG4\xd82\xf0\x13=\xa1\xb6)\xd4(b4\x9b\xc0\x89\x035\xaaָu\x8c:p\x8c\xb8\"\x14K0\xe0Cи\xf4\xcc\xc4\x16\x0eͮ\x88\xc0\b\xf5\xa6\xae\x11\xeb^\xae\xb5\xc0\xacF}\xaeN\xfc\xb8\xb5\x12\xf0i\xb7\x83\xc9\xe1\t\x04u\xbcR\xc1\x8b+\x81bI)k\xa2\xdd\x1a\xfbH\x1dd\x87\xe7a_\x18\xd3[o\xaa\xaf3\x8f\xa2\fڙ\x98c+w\u007f\xa2E\x15\xaf\x0f^5\xf9\xc5Q\v\x11\xb2\xecj\x0f\xaa\x15\xa8\xda\xd3X\xa0\\\x9a\xfa\xb9(d,\u007f,D\xf4\xf9T/\x93\x9e\b\xc1e7#\xb1n\x16\xcd^5\x8fD\xb7\xb6DO}tU=%\xb6\\\xe2=\xb2\x90.\xa5\xff%\xde[\xc7bf\xa5\x84\u05fdd\xee\x9dva\x16\x9f\xee\xaf\xc9\xd4\xe3\x86\x13\xfc0Ӹ\x11R\x13\xcdy\xc5\a\xc89\x93\xec\xed\r\x04\xb0\xff;\xd4\xe2\xc3/\xff\xf0տ\xbb\x97 \x16mL]i\x9d\u007f\xbe\xf2\x98 \xed\xd2\x1e3\xdb\x1bn\x97>\xd6=\xd6?\xf6c\x9e\xb1^݆n=\xf5rH\x18\x90h\x1e\xb0\xd6.\v\x18R\t_\x1e\xba\xb2\x050\b\xa4\xa3\xf8v\xe1D\xbd\x97\xef͛\xado\x0e\xbfy\xc3w\xff汲|\x0e,\xb9\xaa*t\xe43\xad\x06+\xb3\xcaQ(\x1d\x83\xcd\xdaI\xbbچ\xbc!\x82\xffkǬu?\xbc\xa1/B\x92m\rz\xb1\xd6?{\xbc\xb4|5ݜ\xbc\xc6 \v\xffn\xac\xeaoB\xcc\xc2\xe4\xffd\x91\xaa\xe5\x8b\xf32\x02s\xc0誡{F\xceZ\xaf\a\xdf\xfd\x94\x9d?˲\x9c}e\x8a\x9f\xdc'\x9d\xb3z\xfbW\xabޥ\xeb\x83J\xa3\xab>\xfb>\x1b\x06x\x82A\xbe\b\xcc1\b\xa5\xb4!\x9e\xbe\xe1\x1a\t~\x98\xf2\xf5\xbf\xdd$Lw\xa2Ŝ\\\x97\x9f\x8c\xef6\xf3\xa4\xd2\xeex\xa3o\x10\x9c/k\xa7ztf\x85\xa0H\x15\xcc-4hP\x13\xed\xa8]f5\x13\x98\x19U+\xc5\x1a\x14d\xe4\xbe,\xae#\x9aE֜1C7\x1d\xf0\x97\b\x1cގ\xae\xa2\xf0\x1f\a=\x90\x8c\xbe%\x82\xa4\x85\xd9\v\x91\xf2'\xe0]Nf\xe9\x9d\f\x8e&\xa8\x00\xec\xcel\xff\xf3OS\x84F\x03\xcd\xd3\xcd\xf6j\xdcYzBX\\\x82\xccJ\x91S\x8et^\x98\xac\xf8#\xf7?]@i^f\xcd\xee\x84ҚY\xfd\xd4-M\x98\xb6;\xa41//8\xceV\x8d\x89\xc4\x05\x83\xe8\xb9{\x19Sj.\x06$!\x8bNO+\xdd\x10\xde$&\x86?\r\xc7ma\xff\x89F/\x98:\xa1\xd5\xf5Y\xfc>ꥡ\x96xt\xca\v\x11rRT=\xd4kU\x8c\xb2\x8e\x954k\xb7\xf6\xfb\x9e\xf63\xad5\xaf}r\xaey\xc0yVmr\xe5\xc2Cjg\x19\xb6v \xd5\u007f$\xf0m䢢-\xc98\xe6\xef\x9e%o\x85\xd5\x19'\xf6x5U\x8b\xad\xe2\xf4$\x037\xf5\xf7\xefo\x9f\x99q9\xb1ZX\xb3~\x83Oy\xc9ӒFچ\xf51\xbe\x17\x18\r\x11\xfc\xd1|{%\x99\n\x8e\x0f},\xd6kS\xc7\xc6\x1c\xabG\xe8q\x00q3$\xa1\xfb\xf0\xbd\xe2\xbc\xf8>t\t\xb4\x99\xc8\xdc\xf4\xb8;S\x03\x1f\xf3v]\x8d|\xb7\xb3+\xae\b\n\xb2\xf72h\x84\x90\xb8:!\x10\xa6\xfeT\xa0:\xe1>\xb1\xd7I\\3\xf2h\xe4\xdf\b\x82\xeb\xda\xc3\x11\x10\xb6I\u074b\x83\xf2\x957%\xe5\x178\xfd\x8b\x12\xb3E\x8dM<\xca+\xb1\xf4\xa9\xed\xff)x\xc59\xb7\x92)\xfa\xd8\xcb\x17\a\xb2Z\x0e\x97p\x8a\x0ee?\xf5\xfc\xaa\x8a\xa0\xd1#\xb7\x93-Ǹ\xa9\xfb\x88\xb9\x88\xc4\xd5\x04\x14\x9d\xee\x89\t\xedT\xc1\t\xf7\xce\\\x05t9\x97\xc1\x81\x97\x14:7\x98\b\x1a\xb5\xf8\xfa\xd6w\xb1X\xfd\x92\xd4\x04Ƹ\xf3\xc2\x00\xb0\xd7eڟ,5\xb2\xc9츆\x92b|\x90U\xed\x8ee\x13V]7.\xee\x95\u007fBw\xf5\xbe\x1a\xc1 \xefaW.cW\xc4(::\x11\xbf\x89\":cw\xcc\x0117X[;.\x9c\xaav\xd3\r&3Ѷ\x97\x97dz\x9b\f\x93a\x1c\xeb\xa4\x13,\x93Y\xe3\xefA\x01\xe6\xd3[\x1b6\xbc;랽;Dg\xa1\xbd\x10DjR\x01\xc1\xd5\xd4\x12\xd0i\x1f\xb5\x1b{\xe7\x18.\xe8}\n\xde\xcak\x86\xe8\x91\xc4\xdb\no\xed\xb5\xbb\x89\x99\xfb\xf5\xf0%\x9b\xe2\x17]\xedW\x10\x18\x1e:\xef\xec\x10ܺ \x13\x1c\xba\xfeF\x81\xf5\xaa\x9d\xba\\J\x94f1\xbaN\x96\xafA\xfbP74\x82L\x92lX\x00\xeaݖd\x1c\x8d_|\xbe\xbb\xe1\xa8\xfc~\x16\x9c\x9b\x03\xcd\xf2\xcd?\x1f\x93\x93\v\xcf\nOv\xdc\xf8.\xbf\xea\x19\x1034\xc3ޢ\x80G\xdbB\x93\xa8m\x82\xae\x8dd\xe7\xd0,X\x88\xbb\"t\x8d\xd0\x13{\x00Ik.&\x85\x9c\xf0$]\x1bX\x1fQ\xe6)\xefF\xf9v\xd7N3\xad\"\xb0c#\xcb\xe38q\xc7\x1d\xb7l\xed\x9c\x12\rʘ\xb8:}謵ʝ31ץ\xc4\xef֖\xf7긮l\xfb\xd9\r5_\x81\xd27F)-\xe4\v/\x0fˏ\x04\xea0_\xb9\xbf\xf6\x87\xf3\xb2\xc9_<\x93)u\xf4\x826t7\xf8e\xb1աC(\xa4]{\xcf\xcf\xed\xf2иSZݗ\xa1\xa1\x05\xaf\x03<\x14pQ\xa9A\xdbۏ\x1d\x1d\xc8\xfb\xa0\xd5\xe5\x19\x86\rF\x9d\xb6.\xba\u007fs\xab\x11\xe2\xe1\x1d\xdf\x00W\u07bf\xeb\r\xf5\xa0Q\xad\xc3c\xa9iyV\xa6\xd5\b&M\x02\xed\xdb\xc9\x15\xb5\xc3\xe3\x1a\xc83\x80ެ\xb2Kf\a֊S⌸\x8e\xf0r)\xa483ɷ\xb2k(s\"\xf9\xd6\xe4^zpCHF\xe3\x8dxA|\xcf\t\x1en\x91\xe4\f\xff\xf7oqa\xa1\x833\xceq\x84\xab\xea\x1bV^\x94j+\x13\x80\x033\xf2\x1b\x1f\xc8$\x80G\xf6F\x03\xb3Fv\x83\u07bf\u007f\x14\x12\xf1\xc3 \xc12\xfeۻ\xcdF#3/\x0fzm4dgwu\x81|ؑ\xb9.\xf1\x82w\xf5\xdf\xec;垒\xb0\x17\xfe\x1cP\x81+'\xf8n\x13\x98zi\xdd:Չ#e\x8c{\xdc[\xfePRPf\x0e\xffD\x93\xd2\x17Х\xb4O3o\x81\xe4!\xa3\xbe=\xef\x04\x14\xf7% Y\x85n \t\xb7\xaa\x86\xf1jWm\xad\x98\x18\xcfr\n\xde\xdb{\xe3\x99N\x84\xe8,+c\xc0/\x9b\x9bq\xf4\xa8\f\xd4\xc3\xcc\xc8q\xbc\x89K\xeb\xda\xc6\xd0k\xd9F62*\xed\xc0\x84.#0\xec\x91T\xc78X]\t$5\xbc\xc43\xb3\xd98%('\xd6Y\x1aQ\t\xa5\x1a5\x9f\xaa\a\x06\x9b(d\xf1\xc8\x0fS\xae\xaf\xbb\x17\xfd\xc3\x1fw\xa3\xd7]\xa7\x1c\xf6\xc8-\x90\xf7\x1dM\r\xf2\xddy[\x173\xb5\xe1\xcb\xd8#\xc5%\x9b\xfe\x12\x0f=d\xc5>\x14ظ,\x8b\x8f|\x19\xdb05f\x90+\xd48\xab\xf4\xaa\xb9\x8e%\x87\x03h\x11\xae0\xfcS\xa4p/\x12\xe2\xfd\xbb\xf17\x8d_\x83\xb4\xc9SmIU\xdbk6\xcc\xceO\xed\x00DJQ(\xe9O\x97\x18\xb6AD{m\xcaҀ\xdfg\xb3az č(\xd2\xec\xdf\x03\xfa\x84\xb0\xa4\xa6C@{@\xeeSꋋn\xb6\x90[/\xfb\xfe0\x1d\xee\x81\xe4俬\x13\xc9d]X=\x13\xea\x80(PO\x14\xc0\xea\x94\xe8\x1b\xa7\x12\x03O!Ea'J*\xbe)\x96\xf0\x9e\xde\xea\x04\x8e\x82\f\x92;\xfb5d\x18\x81ɵ\xd2\xf8Гw\x80X\x9d\xc5H\a_\x9c2/\x92\xe1D]z\xfd\x04\xa7|\x03]\x16\x1a\xbb\x89Z\x83\vK\xa9h\x1f\xec\x1a\u007f\x1bhg\xac\x9e\xb41\x8e\x1b\xefc\x98W\x90\x85O\xf2{\xe3e\x83\\\xb3\xa4T\x9c\xa2\x9d\xdc\xd8\xe6ë\xba\xdc\x19c_\xfc\x15\xdcǐ\xfb\x88&S\xb3\x13\xab\xc2[\xf8\xb4)i\xed\x02\xe0y\xb6\xb6\xc1\x89M\xd9Pq\xd180`=Z\xb1簷^\xfc\x9eX\xe9\xa2\x14\xcf\x19\xdd#8ݒ\xc0?\x17\xb2\xa0nh1^\xbfOz\"\x8e\x85aJ\xac\x8b\xb5\xc4\x00\x12\f\xd9K\x0fO:/\xb4\xfe\x9d\xe0S\x9a\xf0\xb3=x\xbb\xff\x00\x9dqjo\r_\u007f\xc1l\x17\xab\x8d\xc3\xfe\xf1\xab\xbd\x17\x97\xb96$/ʰ\x84\x1a\x12R]\xbdl+\xf3\x01\xec\x9fw}\xd1\xf4h\xbaa\xac{NΜ [ת-\xd3i\x1e0\xb7V/\xab\x0e\t\xa1.\xc9\xc3BB\xd6\xc6e\xce\xee\xb2\x059\x0e\xdb=f\xa0G\x17M_O\x03V\xd65/(\x0eL\x14\x11Z\x85\x1d\x8e\xc4=\x1bkLˋ\xa7\xed1\x85)\x03\xbeG\xe5s\xfa\xd9vƅ\x04l\x06x\xf3\x81\xea`\xe1]\x18\xb8\x80\xf5\n\xff\x17\xcb\xe9xd\xc0\x94\xc4\x1e\x88\xe4\xd9\xc4źI\xab\xee\x91\xdcE\f/\x96\xeb\xd9D\xda\xf5F\xaa0T\x17\xb2j\x92\xbeֻ\xe9\xcdg|\x95\xee\xfa\x1c\xf3\x8cR\xfa\xe4Ի\x95\x98\xb2\xf3\x1a\xef\xda\xeb\x8a\xe7\x05\xb9`.J\xe0\x1d\x15)\xbd+kM\xc6\xfe\x96\xfe\x8c\xf0\x9a\x84\x06\xd6*RE]\xa1.\x834\x05Zy\a\xc6\xe0\xce\xfdA#\x95\xf8\u007fۇ$W\xe6\x84Jr\xfbrk\xaeĻ\xbcr\x9ef߷\xfe\xa4\x12\xda\x1f\xe7p\x18\xaaXD\x9a\xa2\xcb(\xacc\x99\xea\x1e]\xfd\\}i\xc7_v\xdc\xcdd\xed\u007f\xed\xb8\x14\xf0\xf9\xc3Gu\xc2#\xabXBCƜ\x8e\xfd\x19@'\xe5\x13\x9e\xc8sޖ\xfb\xc12\xb0\x1dP2[\xc2.M\b\x15^\\\x85\x0fq\x05\xbd\xb0s\xd0\x18\xe2\xfaj\x8e\xe8)%doAj\x82\x1b\xfa\xed\\\xa8\x84\x951\xeb\x9b\xea\x14)\xb0\xf78\u007f\x16\x06\x87\xc9\xfcf\x14\x03Vڃ\xb6\xc3\x16f\x17\x14W=\x11\xe9EKe\xa7!'w\xa9A$\xba\xf6\x89\xf5\xedaQM*+$\xb5d\x03w\xfa\x8b\r%m\x14J]27;?!\x1aS\x8c\x01\x04o\xed\xe6\xf5e\xffx\x91\x19\xbb\xda\x19vM\x02\x02\x04\x11\xa6\xb9s톨v\"u\x10\xda\x0f\n\x8f6\xf0^m\x15(rR\\\x00\xa2\xa9gŭ\xb8\x19\xbaS\x85\xf7\xe8\f\x9f\xdf\xe4ʃ\xff\xfd\xfc\xa7\x0e\x9f> '\xffB}\xbd\x1c\x83\xc7\xf9\xaeĚ\xa7\xe8SP\x84}\xab\x8c\x11Nr\x88\xd1m}\t\xc3#\xe4h2'\xc5\x0f~i\xed\xde/?3\x93\x97\xb2\xb8e\xf1\x16\xe48[HP_;\x15\x06\xe6\xf4{\x97\xa9\xa5:\xedEM\x05{.\x12\xf3\x95\xa7\u0601\xd6\xc8L\xb6\xa0\xe4\x89`J&\agש\xb1\x91'\x89\xc5ew\xe3\xcb\xf6f\xcc\a\xb3*d\xfbG'{{\xa67\xf0\xbf\xe17\x14M5Ф\x9e\x91¾\xb7\xffu\xa90\x1f9Y|8\xdbj\x80\xf9\xbb\x15\xaf\x9f\xc2\xe5R(\xb4\x19\v\x85\xc3\x1e\xda\xe5B\xe9\xdb\u007f\xd3\xd85\"ƔS\xfa\rD,\xafl\xbe\xca\xe9w\xc0\x95C\x1d͒\f1]Vҟ\x9ca\xce\xe1\x8f\x1d3\xd2{'6p\xc3\fI\x19\xefg\b\xbfbrNpGx^\x8a\xf2\xeb9\x15\xb3\x125\xf9ɌC\x84\xe8\n\xfcSb;\xd4W$k\xf2\x13g\x05gM\xb4ۗU\u007f\x91\x99\xd4z\xcb@\x14A(\x19\x89R~\x1cY\x10\xbb\x92\x1c\x9b\x9d\r\xa0\x944\x1c+]hR+\x05\xe3\xa97\x97\xd0uv;C\x84^\x05\x02E\xabB\t\xc6\x02\xe6qN'\xe7xJ\xe1\x91\xc4\xc4#\u007f\xf8\xafX/3d\xa8\xc8а\xad\xcf]\xda\x1chW\x95!C\xf6\u007f==\xf1$:\x93\xff]+%J\xe89*>]\xb9\xae\xd6\xf6\x95+[=fK\xbb\xe7t\x9bg\xac\xda\xd9\xde\x06\xf6H\x98m\xdfkZ*\x99,\x8fq\\\xb1g\xf2\x8a\x92\xc8o\x19\xa1\x81\x19\x81%>\xec\x82I9\xc7\rN\xd9O~гh\xbb\x8e\xd0ۦҮ\xa6\xc5\xf8\x12\xcdD:\x8fo\fm\xbbVU\xdd\xcb\xcdY\xadV\xafv)\xab>\xd3\xf6\xb2\xd5=\xdaz\t\xba\xedꎈ\xeb\xae\xeao\xf2o\xf7\xa9\xa1d\x02\xef\x04#ܟ}Ll=\x06#\xc3&\xf5\x1co\xc2ᚏw'\x1d\xffb\x98I^Ҥ;ꛑ\xb8*+\xb3\x95\\KJ`\xcfF\x98\xd4\xd9\xe1IN\xf6t\\\xaa\xef\x87\x04O\xbb\xa5v\xa5\xa4\xe8\x8d\xec\xf9\x03\xef\xe8 J\x0e\x1c\u007f6.\xa2\xe0\xd6\xc5\xe7S\x87\n\x88\xb1\x03\xe3\xe7|\xee\x83w\x06;A\xfa(Kzf\f9\xa2s\x92c\xd23-\xa5\xa5ߙn\bo\x9c\rS\xa9\\y\xd3농\xf7Ї2\xf93\xee\xf3Pˈ>N\xa3\xee{\x8d#\xa8p\xc1\xf8T\xce\xeb}T\xda\xf1\xc4Sحxy\x1fs\xb5שw\x80k#Ō\x9b\x1f>\x05\xbc\xc4|\x8fH\xe6)k\xe2;\xab\x99\xf7\xb5\x83PJ3\xb7&\x83\xa3\xd3\r\xdd\xdcrl\x95\x9c\x15\xea\xe4\f\xb5\x19P\x8dUY5rIu\xf0\xa0*\xf2rݜs\xc1\xec#P\x86\xea\xd4'\xcf:l\x87`\x00\x06\xec\xe4\xb1\x02\xc4_Ds_n\x17d05f\xb3x\x8d\xa1\xfd\x18ɿ\xd0\x13\xb2\xe2m\xb2\a\xc8Q\xedI\xa3!\xa6\xf6\xf0b\xf2u\xbdH\f\x8a\x01\xf6\x8f\x95ߺ\x86\b\xd9\x02\xbf\xc6\x15\xe3\xa0\b\xed\x14\xd2g\x92+\x01/|\xc7K\xb9C\x05#\xdaxD\xdd%S<\"Oq1Sd\xa2\xb1\xe8&\x11\xab\xc4@\xdc[C\xab\xd9C$\n\xf5\xbb]\xe0\xbfC\xe8\xbf%\t\xf6$}\xa6b\xb8\xe7{\xfe>5\x98\xc6\b_9]\x9b\x9e\x15}\xec\xf6\xe8)H\x1b\xf1\x85\xb8\xfd\xa3\xfd\xa3~\xcbAϾ\xb7826%\xa4\\\xaf1\x1e\xb9\xc2Q\xedTeB^{1\x80k\x1eOf\x0eW\x9f\xc3 U\xe7\xc8䢉\xd8w\x86^\x17!\xf7\xc7\x12\x10\x8c:w\x9f\xbf\x13\xe0\xfdz/\x82\xf2\t\xf3~\xa0o/+\x8e\x1cTx\xbd\x05幫\"\xbaQB\xb6\xcbJ\xca\\\xc1\x10\xf6\xb8\xe9\nwΒ\xcf\xdc\xdcm\xf2\xe2\xf2\xc5!}\xff\x05\x8a\xd709yKf\\99\x03\xc9r\xf6\x10\xb1\x97I\\m\xde4v\xa7\x84\xa0\xad\x14[5\xe2\xe2\x04H`z\xca\xf7_\xdf\xe2\x90\xf2b\xf96\xee1\xcb,\xb93|\x19cc!WpY\x89l;\xae\xb2A\xb9*\"\xb7\xbc\xe0pjl#\xd6FZ\u007frO\xecWjo)l\t\x92\xaa\x8f\x88\x9d\x10ϿՆ+\xebWȺ\x1en\x84w\b~u\x01\x04\x8a\f\"\xcel\x94\xc4t4R\x81\xf0)+!\xfa\xda\xedbp\xeb%\xe2F\xc54\x06p\xb491\x8bo\xf2\xd7\x19\x9f\xbb,dW2\b\"\xd7#\xe99T\fm\x05\x94-\xd7\xed\xa8&Ԓ*2\xc3\xe7\x84W\x90j\xe1WM\xd9\xf2\x15\x10\rC͡G^\xef\x81\xc1\x02F\r\x9e\x1d3;\x98*\x85W\xf2\x9bC\x9b\xf9+\xe1\xd2\xfd\xc7~\xc0M\xa9\x89]M\xf2'\xc7\xed\x9f\xd7\x1dG\xf1'\xad\x86\b\xdd\xcaG\x9f\xb8\x8c\xcc-\xc4\x17\xbf8\x1e \\F\xf4\xa7\xb4i\xb6\xcda\xa9X\x18/˰<\xb2\x1c\x95)gm$+;j\xd6dȮ\xeck\x90ä]\x97^\xa719u\x03\xf6\x88&\xec\xf8\x93\x86]\x99_\x10\xa9\xd8tr\xe5ɗ\x87\x10\xe2wY*;\xa4\xf6\"lG\xdb\xca+\xea\x1d\xec\xb4\r\xb5\x9bJ\x84\x19\x11t\x14\x05\x16\x14\x81j#\xd8(\x1a\x9a\xbdꂗ$+\x92%\xf9v\xb1&\x88s\x86\x9b\xc4=\xc3y\xbf\xf4~&\xeaFQ\x89=\xea\x99_\xf8T\x18\xb0\\\xf8\xc4zc\xb7\x93Xbq\x99\xbea}\xaaӫ\x86S鮲\xdd#\xf55ֆ\x8f\x16E\xbc\xb5\xee@n%ҭ\x1f\x05!\x97\x88_\x87\b\xebe\xdb)\nWkdF\xbdή\x9e\xf8\xee\xaeS\x98 O!\xdfU\xaa\xadr\xf6*4?C!\xa4'\xab\x83\x8d\xeb\xfa\xea\xc2u+\x98\xdc\xcc\xcd\xf0\xa1\x0f3\xf0\x01!\xac\x195\x89\\\x81\xa3\xbcAIڟ\x92i\x93\xedDzAO\xd3\x02D\xd1,\xb21\xcc\xda\xcc\xcas\x8a\xba\x84]\x05G\x12BZ1X,&P\xe6\xd4\x18\x95\xb5%\xfd8\xcad\x9cl\n\xe0f\xdee\x81k\xd2F\x16\x91HI\xec\xc5_Ք%[qhʨ\x9b\bŕ-ӑ\xe3S\x82\xf7\xee-\xb6\xac\xf6\xe5\xe9\xea9<ߑ\xadx\xe3\xf1\x94\xe0x2\a\x18\x18Z\f,z\x84\xb7{\x98\xee\r\xd8\x13\xbe\xebp\x0f>V<\xfe\xfc\xf3\u05caײ*\xe8\xe0O\x16h\xd5*\xf9\xc9\xd2\x1al?\x1b\x00&\xe4\x02\xbd\x17\xb6\xbeA+Y\a5\x1b\x1be\x9bq\xbf\xb7\x1d\xe4\x8d\x1b\x1e\x06\xbbn·\x84\x99r\xaf@\xa3\x1b\xc7\nb`\xbd\xc7\xd2W\x876\xff%p\x06Q\x8c\xa2\xe2粦+\xaf\xf7\xf5\xa8u\x88\xc3կ\xe2\x9e\xe5H8g\xb9\xabj}\xb3\xd9_W\xa7ێ\xd6s\xcepL/\xbf\xf8a1\xf2\x84O\x96|\x06\xe5\xbbuK\u007f\xe5\x94\xfb8\xa4\x02\xc4\x1c\xbc\xa6kd\x87\x13\xbd>\xc7Ar\xc0\x8bB\xca[\x1d\xeb\x94\xe5\a\x92}\rP\x97U\xabE\x1b\xb18\xeck\x06\x0f\xef\xf0\xa1<年*̣\xe1R\x89\x99\x05\x8e\xf7\xe8Z\xfağN\xbb\xd4c-\xab\x8e\xe9\x85\xf9\x80\xa1\xe2\x96\xf9|\nv\xe9\xee\xe4\xa3A\xa7\x14W>\x05\x95\xfe\xc7\xd6\x06G\x98,\x0eJ)\xcc\x13F\x8a\xa6\xa83R\x12\v\x02\xfe\x98r4\xe1h\x8e\xeeֱ\x1e2DA\xdaGyR\xd1\x13\xc9\xcf\u061d\x19>ސ0W/\xa9S\xa2\xfb\xa6\xedp\x80*@\xc2\xea\xa4\xd8\x11\xf5\x05w\xb2\x95Ș۲\xa75u\x9af\x1b\xf8pr\x84N\xa7\x94\xf5\x86\xd5$\x0f\x90\x87DQ\xe12\xa5N\x17\x91\f\xf3C\x8fn\xd0\x05$\xfdi)\xe1f\x97\x119or\u007f\xfc\xa4\x94\xf7\xac\bJ\x9c\x96>-1h\xc5\xf0*?\xfdȽY.\x15\x9f\xcd-\xb1\xfc\x99\xa4\v\xd8`\xa4Dž\xfa˒d\xdcG\\\x19\xe7A4\x8f\x92\xf9\x87\xc6a\x1fpf\xa6\x02f\xbc\xe3s\xa5\xa4\xbe\xf2\xa8\xd5\xc7<\x19\x8fJ<\xc7\x1eTݯ\xba\xe8)y\x94i_u\xa0a\xdb\xf2M\xe9T\xeeٌ\x81\x8ba\xad\x0e>\xc2w\x84\xb6\xde\x1a\xc88\x9by\xf9\u00a0~\xf4I\xc3\xea\x9a@\a\x91\xad\xd6\xc6^\xcd`\xec\xda\xd7QVD\x1a\xadnM\x82&\xa5\xf5\x0eϛ?\xd3?j\x18\xe4\xb8\xe7\xd2\xfc\x93gzɴ\xaa~p\x1b%\x97O]¦d\x8b1\x1b\xebXTE>z\x12\xf1\xf6m\x04\a4\xf3\x10\xeeɤZEO*\xc8\xc2=\xbe\xb3\x93\x02\x9a\x97\x1f\xa8G\xb0Xrl\x9ag\x88\x9a\x99\xa1$W'\x92/(\"\xafc\x05\xb3b\xc4\xf1\xa7\x9fT\x15\xaa\x83D\xfa\xe8\u007fz\x16沌\x11\xba039ܐԒ~\xf1\xc6\"\x13\x16[\xe3\bd\xe7\xde\nP\xce\xf5\xef\x1c\x01\xdaQ\xab#\xc7\t\x1a\xbe\x8a\x88\x05a\xad\x17\xcfȸ|\x11\x83x\xe1rf*\xa5\xbc\xa5מ\x93\x9c8\xad\xec\xe4\xdc,\x98!\xb8U᮸%\xf0\xad\xd0?\xefU\xf4\xf6\xbaQ\xf7\xe8B\xec\x1d\xb1瀫ED\xec\xa0w\x10E\xeeI\xcc~(b\x12Wm\xa15\xa1\xfdR\x88\x9bN.F\x15\xef\x99\xc5\xf4\x9f\x12țDZ\xfd\x12&X\x0eFN~?i\xb2\xc68\xb5\x8c\xeeG\x9b\x1e\x04T1\x89R\xf0\xdfaa\xa4\x90\xfb\x80E\xd2\v\xdf \x03\x1e~\xf0\xe6&D=\x88\xfa\x9e\xf7\"\xb2\xe7\x06\xf4{ H\xa0\xf1\xe4\x01\x1c:\x9afk\x93\x91Gi\x05\xae\xf2.\x04\x89JH\xac\xab\x80e\x94*FY\xbfgm\xa6 \x1aM-8\x8a\x14\x00\x91'\xaa\x98\x0emM \xe9\xe3@\x1d\x89\xc1\xbf5\xb6\x88Lp\x12\xbc\xa1\xdc\x1c\xd5iG\xf3\x03\x80r\xdf>\xa4\x83e\xa1~+\xde\xf7ɽP\xb9\xb9\xdcl}W\x02\"\x97\xa7\xdb>K}\xb2}̙\xb6\xe2\xca\xe2+[\xa3t\xb1:Ϣt\xdb7\xabf\xbee\xda\x16\x8bۨt\x82\xa3\x01.\x1f61V'\xe5-\xc8\x16YEf\xb9\v\xf3\xcb\xe6\xe7?:\x83L&\xc5<\xaa\x8e\x9e6\xa36<$\x99DQ\xb5\xf2\xfcu\xa16v\xb6\xe8] \xf3#\xe2[Be\x87\x86;s*#\\\xe5\x98\x0e%\np(S\x06z\xf0@\x96\x1bo\xf5\b{\x98L\xec\xb0\n\x12\xc0\xf8\xfcY\x17\xa2F,\xe9\xf2\xb8\x1c\xa5\xa6. \"\xd5e7\xd4\xeae9\x1a\v\x94\x1c\x9d% ?%\vfM\x99\xa2#\xeb>blV\xc75}0\xef\xcef\xcc\xf52\x00$\xee\xda\x125\x02A\x90\x03BgXO3b\xaf?8~=.\x0e籐C3Q\tj\x13c\rg\xafA\xe3H\xaf\xbbc+\x11Ԩ\xfb\xf1\xa6\xf0\xcekφ\x12Ӳ\xe2\xc2\xe3\x06ybeL\xc5\xe5\x8a\xe8Ī\x05_\xc4\xe4\xdem5#3?k\xa2\xcb\xcd\x1e\x13g\xcf\xfc\"\xa6BWvٕPe\x90\aZ\x03\x10\x12\xb4m;\x17\x8b\xc9e\xe2B\xab\x11\x87\x02Ԫ\xb1\xbb\fF\xb1\x96\xedۂ\x1c4\xc4\x010\x87\xa3\xcd]\x00\xf0\xcaB\xd3\xc1\x14\xa2B\a\xd8\x00\nQ\xf7\xd6E?\x04\x0e<\xb1\xa6\xd1|\n95\xf7\x12IU\x19\xa0ء\xb9ϜU/\xcc\xd83\xe4,\xb3\x98\xf7{k\x9a9\xcdQ\u007fS\x82\xca\xea\x10\x9a\x94\x86\x889\xcc(\xa0t\u0086'\xe7\xe4\xd4L\xacW\x9e\xc9#ǭ\x93\xfb'[\x9b\x9b\xfb}\xfb\r\xe0\x04\x14\xc0\xb7n\x89\xfb\x89p9%\x89(d$\xad*2\\\x9e\xa2\xcdD\xbeR\xf9\x8d\xf5\xba\xbd\xfb_\x85L|\xa7\xceD\xceG\x97\x8bEY\x9c\x88\xb8\x89\x90W\xfd\xde\xee\xde1?\xff\xfaҏޢ\xa9R\x1e\xba\xe1\"Y\nk\xb1\xa0\xa51m<9\xdb`\x138\xf2v,\xb3\xdb\xf4\xf8\xe4У\xaai\xf5'\x1cvz-\x8bȺz\xd5XW\xd7\xfc\x88\t\xda\xd7\xdd1`Yf-7V)\x9b\xeb\x9cyg\xce4\xab\xd5\x0e\u007f\xe3\xe4$cy\x1e\xe2\xc7h\xa3\xfe\x86\x04\xc4n\x8aZ\xd5U\xc1\x87W\x1eZ\xae\x9bq\xbe\xb7\xc2\xe4vT\x8eT\xe6r赛U4\x8f\aF\xdd\xe8\xc85\xc4]\xa7\x12\xc3Ә`\x04\xcaI\x92\xc55\xc8.\xeaV4\xbd\"\xfd\x1f\xe9\xfe\xff\x93^5\xad\xc89j8\\R\xcey\xdb\xf3\x9f2\u007fz\x0e~@\xbe\xbf\xeaÆ\x8eyN\xb4\x1f\xab\x99\xeeA\x11ù~\r\xb70\xf4҆\xdaPf\xda\xe4\x81Dmu\xc3/\x9b\x8f\xa4\xcf(n\x9b\xdbV2u\"H\x99ZNXx\xe3:\xe4?\xfb\xd0ʱn\xd5\xec\xb9\xdfex\x06\xba\xec\xcf\xce\xec\x06\xb5\x90\xfb\x90\x03\xbc\x1fpW\x15\xa3\xa9zʂa_A\xf7@\xbak\xa9wD\xe5\x8bo\xcfO\xd4\x02\xb1\\\f\x06\xb8\x06?\xc1\xc1\xac\x99\xf8e{\xb88\x02G\xaf\xbc߽o_\x01\xdbV\xf0\xa2\xfc=\x8bύα\x97\xfb\xa7&\x97\xed\xb0\x14\xf3p\xd6z\xa5\x1f\xacQ\xc1òy\x0e\xce{\x1d\xbd\xbb!\x9b\xc8\xf2-\xa4\xd8\xf1C\xd0\xd8\x1e\"v`\x12F\xe8\x00\x8fH3\xb9\xfe\xe2\x19A]\xa0\xe0\xccE\xab\x8fzm#>\x9c\xf6\x13\xf3\x8c \xb0>t\xe3\xc5\xfa@A\x86\x82\xf6\x93è\x88\x0f\x1b\x18\xeb\x05jQ\x0f\t\xa1\xbe\xa6$\a9\x82P\xb8`\xb2P\xd8/\xc3\x00\xbd\x03\xabQ\t\xcdϛI\a\xa6vy\xbe,\x92\xca\x15\x88\xb5\x1a#I\xdb\x02\xc3\xeaN]\x90\x98\x17\xaa%\x85\x81\xdbH\x91F+6P\xe5\"\xb1|\xf3\x80G\xcaB,\"\xc1^8\x95\x86\xed9||\xa9`\xe9\xf1\xc3=RUT\x14R&Y(\xb1\xe6祾\x05\xd6\xf6\xe4\xbc|\xf0\xbe\xc0j\xcd_ڊl\x06\xeds\xc9F+\x90\xc7\x1b\xf2\xad\x93q\xf3\xa5=\xa0C;\xb2u\xaa\xa2 \xafH\xc9ZI\xb9Do\xd8w\xc5\xec\xccv*\x84+\x0e\b\x03\x01\xc4[\x82\x02LP\x93P\xbaqC\x87\xb0C\x01R\xa1\xcf\u007f\xe3\xe3\x83\x17\xf1\xe3\xe3_\"5\xa9\x80H\x06\x03\x1e\xfdc*\xbd$\x9f\x1e5\x18\x97\xddmV|\U0005331c\xd8]\x14\xe7}Y\xc0KW\u0084`\xfcQ3w\xc7e\x0fF\xd1\xf3K\xe8\xa9ֲ\xf7l\xc6\xf7\xcc \x0e>\x92#[TjU\xe1\xc9ͱ\xb7\x96ؑ}\xe3jFds\x06\xe2\xf0\f\x9f\xee\x1f\x18VI\xe3\xf2\xf4\u007f\x16\xadڂ<\xfc\xd7(\a\xe1\xb9\xf3\x8eۏ\x03T\x19➺\xd3w\xf0\xecS\xb4\xe4\x96c\xd0\x1d\x83\xa5\xf0Uf9\xe5\\\xe1\xfb\xa8\xd6\xc4\x16\xbaP\x92)\xeezz\xa7\xf4Շ\xde\xd1)K\xf5\x8d\f\x9b\x03\x02\xdf\n\x96\xb0\x97|\x91F\"\x1dC\x15\x0e5\x84\x95d\xcc\xc9l\xf2\xa1s\xd3%XH\xedP\xa0\xc7H\xa4\xb4/|\x84\xbe;9\x14l\xdd\x19\x8c\xc5&\xb5t,X嗣 \x01[L\xb4\xa4\xae`^\f+F\xbd&k\xc2\xd5\xe8\x87Ðr\x14^;@\xb0Q\xab\x04\xc1;\x83\xadCW\xc0'\xc4\xc1q\x04\x06\xb6\xb2\xc21\xd5\n\xd4\xcc\xf7_\xb3\xe7\xc7W@\xb4\xb6\xaen\xf8\xf4\x98\x81fplڨ\xa6\x19\xc6N\x0f_\xbb\xa6\xa6\x83\ba\fp\x8e[ \xa3\xcbN\x88\"\xcc\xeaRy\xa4{\xb1\xfc\x173\x8a[\x06G\xd9\x10=\xf8\x00\xab5Zl6\x03\xddp\xd0\xe2\xa177|\xf7\xe9\v\xc3\xc3\xcfmU\xa3E\xb3LK\x89u\n\xe72ZC\x1e\x0e\xf9\rd\x8f;s[\x06\x84^\x8e;I\xbc=N\xb0\xc8y\xdc~\b6[\x90\x9c\x1b\xfe-\x021\xed\xddMV\xb0\x91ȱoѢ\x9eЫ\xe0\xf5$\xc0Z\x06\xeb\a\xe1ddpq\x85S\x11^\xc3o\x9f\xee\x94\xdc\xf0\xeb\xa2\x19I\xb4Ӈʫ\xc5\"f\x84\x87\x18\x12N\xf7\x8f\x03\x8c\xfcw!ތ\v\xe8\xacd\xf7\x8f\x0f\xf4\xf7gul\u007f\xbf\x82\x89s\xc54\x83\xe2[\xb1\xeeʆKp\xa5\xc1=Uq\x12խ8\xe7\x97I\x84kA\x8e9 V\xb0\x96x\xa1n\u007f`\x00#\xd8~\u07b9C\xaf߱\xd3(\xf8\xe4\xe4:\x9e|b\x9b\x0enKH\x05\xd4\x16#6\xb5\xd9bJ]\xf7\x87\x1b\xc4\xf0ۏ\x1e\x91g||\xd8<\xdc܌ݥ\xa5Vk\xa6\x8d\x05k\xb1\x10'\\\xccc\xec\xdc\xd9\xdf\xef\x111E\x9e~\xb3呁\a\x18\x86S\xfc\xb3ė(2\xf1\x91\xb8`\xdb7\x95\xaf_q\xc6ɘ\x06\xdf\x19Z\x16c\xb7\xc0\xa7\x1aSC\xe6\xd9\xfa\x1e\x06\x83\x16.鸸\xbb\xee\x85#^\xe4d\x90\xaf\x12۽\x9epA\v\xf7\f\x01\xd9\u007fЋf\x04\x05\x8e\x03\xa9^\xbf\xb2\n\xce\xd3h\x03\xb8TGGl#L\xaf/\xf0\xc4g\x80\xfe}A\xa1\x02\x8a\u0383\xc6\xfb:\xafy\x15\xc0Ds\xb6\x9b\xf5\xc7B\x92\xbeoa3sv\tW\xe0\xd2ɏI\x81\xc9^}k\x95k+\v\xe4\xd6\x02\xd5\xdfQ\xa9C\x0f\xb9\xb66n\x0182\x19\xb4V\x13O\xd5\x19\x03\x9e\xfc-\x99\vJ\xf2R\xd2Ӧ7\x9d\xf5\xa7\xfc\x05\xf2\x90Ү\xf8\xd0(l\xfc\x10\xba\xca\xc9u\x89E\x05\xdae\t^\x82\x19\xf0\xf1Jؘ\xaf-\xba\xf8\xa8\xae8\xc1~\xcdyM\",\xaeR\x10Ƞ\xe5w.O*䛴\x18\x99\x14\xfd\xec\xc8\xce~D$\x88\x1b\xd0B\xa7.J\x11\x16\x06\xa5\x93\x93\xd9wg\xd1U8\xfd\x9c/{\x9e\xb7\x14\xbe\xba\x88\xaeV\xb4\x9b\x0e\x14\x8c\xab\xf2\"\xd2\bm\x13\xeaL\x00\xa0\b\x8ba\xdd/\xb4\xec\xe7B\x1e\xa2\x17\x9c<7\xc0|\xf30\x15O\x90\x17\x13\rV\x03\x91\xcc\x16B\xdd\xf9֒s\xe7\x18\r\xc3\xfay\xb7MD\xe7O\xf0\xbdҤ(ȇ]\xbf\x80ɘ{a\xf0\x91\n\x1f\x8dc)\xfc\t\x94\xd5g\x14\x86\x93/Dg\x97I\x10\x1c>*DJ\xc0\xfb\xbd\\L\xaemiڭ\xf1\xbf,\xdd\f\xe9#\xa7\x12\x91;{\xca!R\xe3O\x12,Q\xdf\xce\xc4\x11\t\xb1\xec7\x00\x8bg\xf60\xf1$\x1c\xb3\xd5jU5\xa4\xc7\xd0\xdf?6t\x88\xf2\xce\xe2;}n\xb2\xaf8y\xe9ʹ\xddୣ\xe0\xe9'\xb6\x84\xe6\xe9\xff\x96$\xe2\xe6\xd11\x93\x88zii\xc5e_JDڗ9\xea\xb0hz\xb40\xa5Ι\xfe\xb5\x94\x8a!b\xd9\x04\x1c\fg\x93\x17\xef\x89$Ie?\x89s\x9b\x9bs\x19\x92ɐA*\xadg\xd7Ƒ\x89\x90\a\"A\x06\x83պ\u007fb!\xd2`\x95\x00\xd2\x0f\xb3p4<\x9e\x88\xc3N\xc2\xe2\xf0X\xcc\x14\x0e\x81\x8aCꙒ:\v\x91\x8c\xf3\x1bVCd,\xd6*\xc1QZ\xc7\fD\x06d\xf0\x186\xe1k>(\x140MJku$X\xbc~\x84d\xea'\n\xa5⣦Y\x17{BB'\xddi[\a\xe7ddƆ(~\xbd\xb8\xf7\xb5\xbd0\xda1\r\xae\xf0M\xf7\x1bKW\x11\xc1a\xae\x1e\xcbx\x010\xcf\v\xb9\xa9\ue9bb\xe1`\xd2\xc1\x11\xc5>\xa3\xc5 <\xd2\a:\x1c\xd0yL\xfe\xa5;\xe0<\xd1綂\xbd\xdd\x15e֎\x87?\n\xf8\xc5\xf1iyp\x0e\xf0\x00*\x86\xd9\xfc\x8d,\x98\xb5\x91\xcf\xfe\x87\xb4S\xa3r\xf2\xbb|g\xfa\xbd\x06\xba\xdf\xeb\f\x88듓]\xc0#\xd1!F\xc3>[\x8a|\xb3\x1f\xfead6\xf0\xd9\xc6\xc9\xe4\xdfn\xd4'\xf1\xcbnn\xadƋ\U0005996d\xfb\xe3av\xdcC\xd6\xc22~R\xfdw\xbf\x93'\xb3\x8d\xfc\x06\x1e\xd3\xf0\n͡\xe7\x98\"\x9a\x1f;!ȟdm\x88\xfa\x9d\tA\xce\xc7ͦ\x884\xad\x02F\xdb\xc6\\l \xe4\xe1\xc9)\x13\x8f\xa2\xbf\t\x1a\as\xa2BT\x94\xf5Y\t\x168\xe1[\x14\xc9\xec}mm\xfb\xd8Ɋj\x13\xb2\xbal_\xc0\xb2@^1\xa1\xa3\xac\x88\xb7\x96ݩ֓\"\xa7\xbcݝ\xbdxE\xf8\x98\nt\xff\x99|hc\n\xec\x15\xc9H\xec\xf4\x9a\x9a\xe3M\xcc\xe6\xec\xa4\u007f\x84\xfd\xaa(e\xa0\niw\x0e\xaeJ\xfb\xf4i\xe4,\\N\xb7T\x81\x06\xbce\x93\xd9o\x8d\x94f\xd6\xc9/$\xc7\x05\xb0Wh\xab\xce\x03Jh\x93ks\x94\xa4\x10R2ފ\xa6\x90\x1b\xb0\x14K+\xf0\xe0~4\xea=\x95}\x02\x1e\x15\x14K'>\x9bv\x9c#MY\xb9\xc0\xa6\x99\x1eo\xa8\x9crnG\xe4pz\x99\f\xb5\xce+\"Z\xdc7=G\xb4\xe2ڜ\xa6\xc2\xf9)\xc2Ŝ\xf0\u0379ɷl\xee\xe6p\xce\xe2\x14a\xe1|\x93ss\xfe\xec\xfe>\x1cۃ\xc10\x95\x15\x91\xa8(OD\xab\x01\v\xdd4\x02\xcc\xee\xf4`\x88G\xe7A\xbc\xfeg \xa0\x806ȕ\xd3+T\xddF\xe7\x00.{bs\xfa\xb7K$\x90\xa5\xe8.I\xb8\a\xf9\xf9Y\x9f\xb4GL4k\xd2\xfe\xf6\x88\x82\xf5 \xa8+\x8f$&\x15\xdcE\x9c&Z_Aӆ\xfd\xaf\xec\x91\xc9\x15FGn'BQ\x97\xe5M7\xb2>\x1e]l\xc8S햜\xa0\x8ec\xf8\xbfa\x9a\x8d-;\x01\x9d\v\x80\xd4;\x8c\x820\xafӘ(\x93v\x9d\xf9Td\x14\xca\x101\xeeqe\xe2\xc6܍\xd8\xeazx\x8b\xaa\xbf\x05p\xd5\xfc8[l\xac-n\xd3\x0f[\r\xa8\\\xef\x87Kd\x10)\x01\x0f\xc7\x0en\xc5\xf14\x03\xfe\x0f[\x10\xcb\xf7\xca\f\xb2\xe3#dĊ\x92\xe3`z\x98\xbb\xb1\x1d\x9eXK\xa5\x14\x12\xd7\xeb@\x93m\xd4\xe9\xa4\x02Ƣ\x83\a\x83\xde\xe5\x1f\x94\xdalү9D\xa4w\xe0\xad\xf0\xed\x81K\xfb\xf7_:\xf0\xff\x8e\xff\xc1r\xb7\x94=\xbbf\x107C\b\xddGY\xef\f\x03z b@\xcbz\xca\r\xa6\xa7]C\xb8ԙ9\xae\x13\x8d$\xb8N\xfc;ǬB\xca;\xa6\xd5\x1aB{\x9a\xacb\xf4v\xb35\x04J\xb0\xe1\xe2\xb9\xfd\xcb\xd1\xf7\xa3\x83Vks%\xe5\xe5\x92\xdc\xec\xe7C\t\x86)S,瀘cS\xa9\x86\x84\xa1l%N>Ň\x9b\x1b{\xe9xY\x19\x98\x9c\xb21\xd8\xe5\n\xde8\xa9\xed\"\u007fʛ\u007f\xd1:H\xa1Ӫ\xa1\xa4-\xc7\xf8f\n\x9fS\xd3ֽg\xa6\x96\x8fSh\xed\xe5\x8a\n\x8f\xc8ST\x84Y\xe6\xf8)\x9e\x1a&\x145\xc3\xff9W_\xdfQT\xd9\xd8\xfe.\xf8\xd4\xd7+\x145\xac\x1d\x13BV\xcd\x0f\x14\x87m\x15\x95˖\x0e;Nm5\x8e_\x8b\xef\xd6\u07bf}M\xab\"]i\xa8i\b\x14\xe9\xaaD\x11\xbb\xe0\xaf\x1bQd\x91\xa2b\xa4L\xd8\u007f\xe6\x9b\xd19\xc5\x03⬛\a\xbc\xcc9Z\x93\x99c\xf4kj\x8a\x84#S\xfc\x9d\xaa\xade\xf9\x91M\xa8$\x12O\x8cz`)\x8fܳ\xf3F\xfd\xb2\x8acҮ;\xc8\"\x06\x88EYYe\u007f*K\"\xea\x00\xb0ht\xb9\xd8\xf9\x11\x05\x10չ\xa5:\x02ޫss-k\x13\x0e\r\xb1\x06i\x90b\xbb\x0e\xad\xb7\x1f=\xeb\xed_ި\xbc\xf1\xa5r\x15\x8e\xda\xd1z\x9d\xf3X2k\x80,\xee\x8a\xe2\x98\xfa\x18\xa4\xfarM\xb91^\xa0\xf4\xa1\x12\xa5\xfe\xe1Qi\x05Eu\x99\x8c㫃\x05\xfe\xa6\x94/\x93\x11\t\x12\v\x86\xbd=Ȭ\xbb\x81z\xb7A\xb4\"\xf5}\xfay\xd7?[m\xcf(\xc3T\xdb\xc5^\xbbi\xab\xfc\xe5\xed\x1f\xb1\x117יl:0\x90)\xba!\t>\xa6\x12\u007f\xdd\xcdn\xed\xd2\xf9\xf8\x87T\xafH\xc9LZ\xba\xac\x9b\xc6\xfe/\xab\xec\xfd\x8c%w7林\t\xe7]\xa9\x1cZ\x9f#\x1d\vr\xa6'\xa7E\xa3\x12\x9d\x92\t\xf9\xf1\xfa)\xbc\x82\xf5\x06\xf9W\xa1\u05ee3&\xcfn\xb6\xe2Sw\xbb\b*Hv}\xb92j\x80\x18-KZg\xa8\x11dF\xf01\xcdx\xa5\xc4-\xb9\xb2;F\x87%\xadzE\x9aL\x97\xd2p1Zh\xc5\x1d\xf8\x06\xd5W\xa7$\xd9V2\xf7\xf9\tr]\r\xabna/\xc9fGl\xed\xbd\a\xe7\xa9l<\xb1\x86ds\"6\xe3\xc4\x10Ϻ\x1a\xa0g0\xcc\xc8\xfby\xe6\x95\x1c\xf3++\xe0\xca̟\xf3\x180\x8cT\xbe\xd1\xfb\x9f\xde\xebt\xee=]\u007f\xfc\xdeTB3C7vc\xbdf\x1a\x93ZZ\x92\x93\x043Y=K\xc1\x9d\xdf\x19\x04\x1d\xf3\xf1\x17\xa2,\xbf\x14\xaf;\x05\x8b>\x18\xe9\x85\xfe\xff\x9f\xfc\x8a\x9f\x9b\xe9)O!`\x8c\x8f;2\xe8\xee\u007fk~\x06O\x98r\x1d\xbf\x93n(\x9eP\x15\xad\x8a\xa7\xe8sꩉ|'\x9a\xd5\xd1V\xc4\x1a\xad\x8c\x92\xab3\t\xf3\x1c,\xc1F1ؙe\x9c@5\x13\x8a\xebY5z\x8d\x8bT\xe8\xa9\xc0\x15\xa3([\xc4\r\xd5\xc7_\xbe\xd8?\xc5\xf4KZ\x00y\xd6\x0f\xfca\xfb}\xf9z\xc4\xd8m\xe1\xd1t\xb8b\xdeV\x01ӣ\xc3\xe7ͯ\xbf\x94\xae\x1b\x1d\x1fx\xb2\xecI\t:-\xe6\x06\xc6\xe2\xbdQ\x8eI%UѬ\x868`\x00t\x96\xebC\x9ac!b\x9e\f\xe3.\xe5Ɗ\xc1\xb7f\xa5\x99\t9\t\xa5\x195\x84to\xcb\x18¢\x8e#\x1bs\xb7\xca#\xf2ܸ\xc1H\xcf\xc0x\x84\x9e\xf6\xdf\xd3\xc2\x1e\xa1 \x8b;t\xf8\xa8\x98\x9d\xd6b\x82\xa6\xed.\xe3\b\xb1\a\xba`)\x00\x1c\x9b\xecX\xa2/\x1b\xfc\xdb\x147\x8fT\xc1\xf5\xb7\xccr,r\xd9s\xbd\xebM;*\xbb\x95\xdd\xcb|\x10\x9fe\xbb\xb0O|\x14\xee\x04\x9b\xad\xf9\xbd:ᴮ\x9c\xcc\xef5\x13a\xbe\xf6K\x9fH\xb2om\xd7\xca\xf2t:k\xd7k\xa0K,\xe8~\xf4\xfe\xf9\xe1\xdb\\Z\x98\x9a67j7ٳ\x17\u007f>\xea\x16\xd8G\xa9\xbe\x94\xa7;\xe7GT\x85YG\xea\xfa\xa1\x91H.E\x142䆷.\xcd\xe1D\x14\xcc\xe4\x90+'sR&!}I\xa4{\x91\xbb\xfc )\x13\x1cA\xafѻ\x04\x1d\x94s\xa5AH%C\xc7:x~˓,ޖ\xa4\xf8cWп\\\xaa\xb0\xe1\n\x94C\xd0\xdd\xd5\xfe\xda\xc0\xe2\u007f\x92Vhr\xcf\a\xac\xba|\xbe\v|Z\xceg\x81!\r\xcbM\xc6ˋ\x13\x92\xb1\x8eԢ\x83?K2l\xa5!\xb4\xae\xeb\xfc\xb5\xc2b\xe9\xcd-\x93\x17bR\xe0{\x8dU\x01\xc2)P\xda$\xefiMΗ\xff:\xf5\xf21\xf4\x10`\x90ArC\xed\xebz\x9bX\x92\xe3\xdd\v\xb5}\xb4&\xb3\xf7d\x12\xe0/\xa6\xfa\x8a\xa0Op\xa5:\xd5?\x84FI\xb2!\xa389'Ü\x04\x1f[\xc1?\xe7\x15\xfb\xfa\u0378\xd4\xda\xd0K4\x1df \xa8\x1e\xd5q\x94\xbe|\xa0\xd8u\xecP\xda(\x92\xe5\xf4\xa3\x1dS푔u\xd5\r\xf3\x8b\xb3\xcbz\x0e\xa5x\xac\xa8^G\x89\xb4vI15۲\xa7\x92\xa7\xa04ݱ\xa8tA\xcd\x1cJ\xb2\xe6\x80\x16\t\xba,\xb9\x1c\x84h\x0fh\xe6\x89ΩYP\xba\xc8Ѵ9~ժ\xf8\xcd\xcf\x1fU\xfd\xc9~\xea\xc3TI\xe5\xcet\xb6)\x1fHRg^\xe0\x90[\xbf\xb7݊I\x87\xef\xad\v\xf9$\u007f\xeb<^D\x1f\xb7\x89\xb3v\x13\x8b\xf1\x17\xb1\xa7\xa3F\xe6\xfe\x039!\x1b\xfcU\x18%F<\xbd6\xe7\xc0ƥ\x12\xce\xff0\xa7\xda\xc8b\x80@\xd1\rξ\x9b\xecb\xb0\x9fe@\xa1-9\xb5\xd3\xc5~gK\xe5\xbf\x1ft\xb8T\x8e\x94\a\xe5ra\xdfa_\xc1\xf4\x16\x8c\x993\xa5b=\xc4\"4\xe4$\xab\xe2\U00049616\xe9\x02\xe2\x0e077\xc8\xcd\xd9\xc8Xr\xf6l\x17\v\xab\xf4\x198\x9b \x014\x89\xce\xfc\bOz\x97\v\u007f\x80.W\x18\xa5s\t}o(O\xa8\xe2\xa1v(\x11\x82\xef̅\x9fP\xde\xf4\xcd%\x1a\xfctk\v\xf0\x1f\xe0\\\xbd\x02X\x06D\bm\xf3\xed\xf1\xe5\x17W\xd9\tj\x1e\x88X\xb8\xcf+\xbc\xa5\x9e嵯\x9a\a9\xf8\x02\x1b\xd0\xce\u007fi\xc4,\x16\x12\xa1\x89\x97`\xaf*\xe63\xf26Q\x9e\x90'\xcc\xfb\xc0\xdd?Έ\xfc\xea}^\xac\xfa\x16\xb0\xff\r\xcf\xce\x19\xdc|%\xc7\xce\x1b\x8e\x1c\xd6\xfc9Gʽ.\x1d\x1d:ښ\x01\xd1\u007f\xaa%H\xdb\x05\x80C2\xfep\v\xe1\"\xa1\xa8'\xda\xc9\r\xe7M\xf0\n\xc5,\xfar\xf6\xc0\xccggM\xacP\xfd^.=ӫ3\x8bh\x0eѣ\xc1K\x1d\xde\xea\x1aK&}-\x89\x98E8\xac\x0eF\v\x1d\xe7\\Kޗ,\xfd\xfb\xb3\x16\xfd˭\xdf*\xaf\xaat7y\xeak\xea\x97\x17.\x85\xae\xfa\xa8[\x10Z{\xfe\xa5qw\xbf\x91\xde\xe4p\xb4\xe8\xd9\xf9W\x17w\xf2\xffN\xb6\x0e\xffX\xd1\xf8\x1c\x80?\xe7Hp\xf7\xb2n]\f\xaa\f\xfb\xa7\xac|QEٹ\r\xb3y\x02\xcd\xe9E\xc8Ჵv\xbb\x01\x17\xd6\xc6\x11X\x89\xf2%ys$\x16\x88TS\xf0\xf7@\xd8\xf4\xec\x13\xed\x93p\xdcY\xd2#\xe8y\xc4q3q\x12\x00\x99T\"3?\x04p\xba\xfb\xad\xe7\xed0F\xcc.#\xb0\xefо\x99]۾\xb8\xf01l\xebM{\x96̶ko\xa6\xad\xe8H\xf1$:iu\x03C\x83(ل?\xb5\xb7\xf9\xf9\xb0\xce\xcf\xf0\xf5\"\xb0&\xf9\xfe\x11B:o\x9a\xf2\xdc\xdaQJK\xfbOB\xf7\fR\x97\x05\xa1:\xad\"!\x91M]\x03%\x1c\xc6;\x89\x06\n̨\xc1\xb7\x10\x12y96}(\x00|\xbb\xd3!\xecx\xf2\xa4[\xd8-\xab\x92fίVk^\x96\xb4\x8b\x10\x83\x88i2ð\x84\xab\xa3\xf6\x18B\x97\x14`\xd4i\xb6W|C,\x13\xa9\xb7\xfe\xed\xc6o\x16-N\xf4\x05\xbc\x1c] Y\xa0p\x8c\x18~\xb9\xe0\xba\r\x03~+1\xb6\xeb\v^\x0e\x96\xa5\x04\xa8\xc5#WjĚb\x8d.\x14\xfc;\xb5\xf9\xf4\xe9\xcd\xfd\xa7\xcf\xd4ըT\xde2p:\x8f\xa7T\xf5\x9b\xfef\x10z\xa0\xe7\xa6ҡ\x84\x1c\xf3>\xf6j\x9a\x96\xaa\x151\xf1߽\xfb\u007f\xe61\x9f\xa3S̳\x1f\xf59v\xa0/\xf5\xa8\xe0\xe8\x8e\xd4\xf8\x1e+\xc2Mm\xcf\x0e\x13\t\x10\x8cn\xb3\xb2\xcfCDKSg\xf3\x14\xb5\xfe.z'\xea)Ev\xf0GՈ4Jl\xb7c\x1a\xd1!\xe6\x841\x02\x18\x0e\x94yx\x16\x8eu\xebv\a\x8d].\xfe\xa8\x1b);\x9eQm\xf0\xea{$\x9c\xa4C\x10\xa7\xe4>\xf9yJ\x19ϸ#Р\x9a\x8f\x93\xff\x9cB.\xee\x1d\xfc\x8c\xcf\xf2\x04x:\xc9\x05\xb84B8m-\x01\xa7HA\r\x8aڭM\xea\xef\x85;\xf2\xb8w\xc8^.va\xcd\xf1\x98`Vp\x8c\x89Vn\xb7.\xb2\x83;\x83sC\x03>\x06\\\xc8i\xcf\xdev\xe4\xf6m\x83\u03790\xdb\x14\x9a۞\x85(V\x17\xc2\xe5\xa8d\xb8\xb9\x04\x00\xed\x92\x00\x8e\x02IS\x87\xfe&:\\`\xd6K\x90\xa3\xe7\xd6ԟ\xb6\xc9L\xc7\xf5\xd6͙;MjU\x9d&}\xb7H\xd6\xd5\xe6'\x19\x02\x92\x12\x8a\x10\xf8A\x89\xe5\t\x12~\r\xd1?\xa8\xf2=\x9azS\x17\xd1!\xd5\x11\x1eJN\x06T\\\xebl\xa6\xbb\x15\x88\xd2\x1a\x91\xe0\x10\xcb\x05\xeb\xfa\xaa7\xc5\xee\x0e\xdf0\xc1\xd5Ks\xfef3\xc6\xf7N\t\x8d5F\x16\x9f\xef\xb5\xe3\xfc\v\xfd\xd3\xf4V\xf1a5\xcf\xcb\x117+ \xba\xebûq\xb7\xf208Le\xa1\x12\xf0\x18w\xb0W\xc5\u007f;~?\x8c\xe0!\xc1\xf1oe\xdb}\x8f\xffY\xe2->R\x9d\x93b\x97\xa0\xe4l4\xdaV\x1d\xae\xd37\xba͂\xf6\x83\xd6/\x0f\xbc$\xf8\xfda\xe1\xb5\x1c\xba1d\xe3\xc3E<\xaf\xc0\xf1l\x19^X\xf1_\xdf\xef\x87\xc5x\"|\x02`\xe6Zp\xe4i\xd2.9\xca\xc5\xff,[a\x8c\x9b\xc2\xd5W\xdc\xd3JP\xf9)\xa5\xf8\xc3\x06}\x9f\x03\xe5\xfc\xf9\xb5L\xde\xf5\xa4\x1f\xbd\x84\x15\xb2\x00D\x8e{:̛\xd3'\xfc\xe5:\xbf\xa9:\xb0~\x99\xaa\x9a\t\xf5\x11O\x0fA4TCa(\xe68\xd3\xf50Tc[\x12a\x89\x10\xc7\x1e\xe0@$\x04\x17\x1d\xe8v\a=\xaa\xf5\xbb\b[I\x84\x9d\x1b\xf4\xa7\xa7%\xf4ǍcA\xb2zJ\xaf\n<{~l\xe7[i\xd7z\u007f-<\x00\x81(E\t\t\\\x80\x86\x12\x84\x86\xb5#\xea\xb8i\xf4\xa1\x82n\xe1ֵ\xedJ\xe5\x88}{\xa6\xed\x96& !Q\xe4\xa7b\xf9\x0e\x0e\xa7\x8b\x01\xf7k\xb5\u007f\xc3\v-\xd7\xd7bx%?z3\xef\x1e$$,v\xb2\xfb\xf0\xfc\x950\x93\x1aܜ\xdc\x1cL=\xcbH8\x9c\x01G\xa8|\x1d\x1a\x18_\x1a\xb5\x12\x88\xa0]\xe6\"{\xb7\\\xd9m\xf7\rK\x8f֦e\xd7\xf2\xf3\x816:\xdd0\x18\xba\xd6Wp\x8f=\x80~D|\x01\xedL\xff\xa8\x111k$\x01\xb1\xd9\xfb\xce\xfa5\x06\xf5!\x8c\xec;\xcb\xf8EhFb\x9f\xacx6N\xa0\xb9\x8eH\xf7q\x9b\xc4-Y\xf6\xc4)\b\x96\xf9\x8f\xa6\x93\x03e\x1c- \x8cD\xa2\xaaM\"ߵ\x90l\xf7R`j\v\x95\xf3\xbb\xdfvst\x1d\x83u\x1dq\xf04\xf7\xe6>6\xech]\xc1< \f\xe3X\xfa\xef\xcfM\x83\u007f\xa4\xecb ҆\xf75C0I\x82!h\x9b\xac \xd9%\xea\x1e\x93u\"+YO\x1b\x86Ŗ\x89\x89\xd3\xdec\xc8\x05~\xd6\xe6?\xfe^W5\xd1\x02\xc4\vg\xcd9Y\xc6\xff^\xe0d\xb9\xb8\x16\";/\x9a\xf68\xff\tt+Ȥ\nS\x94\x03\xd5\x1f!\xfbә\xf0Ԯ\xb3\xc9r\xf0\xfe1\xd4\r\xf9B3\xa8N\xff\xba\u007f\x01Ju\xe5\x93\xf7\x87}@\xd1A(\xebx\x80\r\xcf\x0f\x1a\xe8\xaa\x17\xfbz\xf2\x1c\xe0\xce\"\xf4M8\xbc\v\v4\xdf_\xe9\xbbUH0\xde\xea\xbb\xf2}mV\xde\x1f\xe1+32\xf2\xb2\xc8+\xc3uˌQdK5G\x1d\xbfƾ\x81\x92\xf2\xc7,\x15\xd8a\xcdd7\x194ipUilPg_\xdfx\xfb\x8e\xb3\xdf\x1e:\xdeo|\x04d\x9b\xf1\x14zJ2\xb2\xc0\xe7\xdf\xfb\xa1\xa4!٠x\x18\x1b\xb1\x98k5\xbd\xd9\xd0\aOr\xcc\xd96\x04\tG\x83\xc6\xd5>:@\xa9\xa9\xb3>\xc8_\x16\xb0\xd3\xef\xadš\xb7\xecw)\xfe6%\xfe\xc3\xd9z\xfc\xab7D\xeeS.\xf1M[\a/\xa5\xa4\a\xd72\xfd\xc4#\fC\x17\x89\xe5\xf8k\xb1s\x01ȟ\x11Bf\ue4f8%\xf6o\xacH}fs浮لt% \xf5\x89;P(:\xbfy\x14\x01T=\xb2\x8c\x11bi\xfd\xc7\xc1.RqK]\xec\xf1Aku\xc1\x9f\x952\x88橚1\xf7\xf0\\\xe5\xf6\xd0 Y#\x17\xbd\x8e\xb4JZ\x91ed2\x87\xcc\xe7\xeb\xf2\xcf˗\xed\xf5:ʥ\xba\x94\x13##\xc9x\xf6\xd2q\xb5\x9a[\xa8\xfce4\xfdX\x99:=\xa7\xe3\xee\xf9\xe9|\\=\xdc\x0f\xc3\xf9\xfaB\xb0\xf9\xb0Q\x83\xab\xbf\x9c\x02\x16K]?;=\xa7L},}t\x06#ș\xa9<>5ѯ&I\x98$\xac\xbd\x1d\x1dWf\x069\xc3\xe7žJ\x89\x1c\xfb\xfd\xf7\xdaȔW\xb1\x89\\\x12\x89\vTH\x92\xb2\xb4\xc0B\x842q\v\xf2}\r\x8a\xfe(\x1c\x81@&Ex\x96O.\x8d\x8d\"\xc0\xc9\xfe\x04\x1c\xb6[\x98\xb2\xb9\x12\x86\xf2\x96Ć\xc5\xe9\xf7c\xd0\x1d\b\x16\xcfd\xe2\xb1\x18e\xb7\x9dn\xefVb\xb00\x8cEnQ\xc40\f(\x92\xc5\xcf\xdd\xd6QM\t\x97\xdfK\x91\x1d\x184\xd9\xd0,\xa21vF\x1cȃ\xe0\xca\xcd)\xa2MX\x1c\xc1?\x86D\x88\x8c\x9bl\xeb\xf0D\x00NX\xd8\x0f\xf6\xe5&\xd4ge2t\xe4D\xb8p\x9f\u007f\x19\x80ǘ\xfc\xf00\x8cc6/\x1d\xcd\x1e]\xda\xcc\xc4\x01;\x96\x8c\xf0~&\f\x06\xb8k\x8d~8\x87#\xc1:\x10\xf7;\xb2x;\x8b\xf6p\xd3;\x1e\xf5\x84\xe60\xeb\n\xc0\x00;<\x06\xb3\x9a%!Jث0\x18U\xf8}|\x1d\x1e\xc6\xe3g\x9e\x9c\x8b`\xa4\x17\x99e-\x88\xde.\xb5\xf1\x80\xf5\xcaÚ\x13T\u07bbM\x0fi\xac\xed\x97\x0e\xd6\x1e`\x05\xaa\xefgԂ\xa8~\xf9\xfcH\xd8\xe4px\xdeH\xf2\xe8\xa2_\xb2oIn\x85\xd4\u07bcɴ\xbcx@r\xebo\xd1kyk\x85?49\xe3\v\x97\x1f\x82\xcfS\x9a\xb8f\"\x13\x88\x965\xa1\xac\x18i\xf3\x9aj\xc2\xf9\xa3X\v\xb1\f\"\b\xd1b\xe2֪\x1b\x98D3\xe8\xbcƟI\xb4ؼ&\x98\x8d72\x0f\x90\x91\xf3#\x1b\xff\xdf\xf8C\xe6\xec=\xa6\xa0\vOQ\xe09\xfa\xe9\xabo\xf8\x8a\xbf\xdf^\xaf\xc8?\xc2Ɉ\xe6ʌ\x8a\x88v\u007f\x02Q\xed\xc9k\x92\xec\xaa\xff\xf2˒\xf3.?\xe9\xf9\x8c۷\xed\xbb\xc0\u05ca.\x8a\xac\xb4\xe0\x95Q\xba~.j\x99t\xfa\xfa,\xdag\xef[\xb4#\x90\aR\xe6r)\x91A\x1b\xa9\xb5bZ\xf4\xe0\xfb\x89\x89\x95\xeb\xe6e\x13\xefG\xea\xe4GdW\x95\r\xad\xc2rI\x10\xac\x01\xd3w\x95U\x96P\x84\t\xd4^\xaam\x99B\xe9e/\xc01\xe2\x17\x868\xdb&\xb1\x8f\xa6\xdbلV`\x86\x90\a\xeaD;\x1f`\x8b\xb2\xbe\xa7\xfa\xb4\xf3\xc4B)\r\x9e\xa8\xa9\xf9\x8fE\xc3֞\xeb뺉뜊\x00L\x1d\xab5-\x80\xb3m\xf6\xe0X\xacߩ\xa1\x04\xd4\x01M\xcb\xca\x1c\xba1\xc7U\xb1\xbe \xd6\x10\xbc{\xf6\xec\xdd\x05\xeb\x8dzqR-\x13\xc9F\x97\x15M\xe56\x1d?\xa1\xfbk\x0f7\x15ݴ6GMإ\x914[\xf0\xd7Y\x12\xb7\xc4{\xe2/P>\xd6*\x85\xa5V\x87c9'R\x98\xe8\xca\xe9\x0f\xaa\f\xd8%\x13\xd5J\xd7\x11\x89r\xe2N\xff\xe0\bJ6\xa9\x92a\xf0\xed\xf1\x8c\x05\xf1|\xbb\x1d\x195\x18\xf5\xd5\x00\x95\xc3\xeeh\x8c\xff\xae?\xe94Iݜ\xcb\xcf\x1d;q\x1f\bK)\xa2H\xe6\xd7\x1b7v\xe52\x8c\xb3f\xe7$w\x19\x96\xe1\"\x18=m\xf5=7\x0e\xcey\x00N\x96\xfcKj2\x0fyYb\x1a\xfb<\x1aS\"٧\xba[Z\x99\tJ\xcb\xe4\r\xe5|y\xe9s.\xb5\xfa\xbf\xae\xcc\xe0P\xd9q\xf2\xa2\x8f\xec\x18\x9a\x99?w\xe5-\xdd(2\xaa\xbb\xb5r._7E\xf6\xc7E\xe4\xe3\xb2\xd0\xc9\xe6\xd4绩\xdc\xe7\xa5r\xbe\x82C\x8eu(\xbb$7\xa0\xe6\xe6\xaf\xccE\xf3\xb6\xa9Y\x12>\xd2{v\xde-ص\x11\xd2\xfb\xc5\xdc[0d\xefrc\x1e\x84O\x94\xd8\xc3ك\x01\xfb\x12\xf6\x05\f\xb25\xa3x\x05,ĸ\xbb\xec\x10|k\xde\xd9^Ľe\xb5?\x01\xc2Ro\x9bW$/mn\x86n\xac\x94s 6ÑHڛlС\xcfw\xa0\xe4\xbdnG\xf5ݥ\x8d\x85ɖ\xc6\xeaF\x85\xa5{\xf2>CT`VhD\xb5\xdb\x01\xfa\x1b\x1b\xfbH]?(&2\x1c2q\x93\b\xfaw(ݓ\x91>0\xe0\xdb\xf0Л\x18C\x85:ӓm\x91\x80\x18\x92'\xe2\x1eJa#\xa2x\x96T\x80\n><9Sݓ#ڞ,\xd1\xe6\xf0'\xf5\xc8T\xfa\xed<):c\x86\x14\x15^\xe7\xa2Vؔ\xf3\u007f\xb0\x93\x11e\t\x92\xdb4\u007f\xc6\xf6S\xd8T\xc9\xd7\x05)\xe1\x026\x13\xfe_F\x81o\x8a\x0e\x87+\xf1ȟ\x14\xfbqpBE>\x16\x9f\x8f̓\x80\xafY\xb2\xe1xQM\xe6\xc2;¬\x1cs\x02f\xda\xec\xd5\xf9|;\xe5O\x04\xaf<\x1c^\xf4&\xd0\x1d{\x19\xb3\xc5\xe7\xb1,\xe1\x9d̅5E\xc76.\x9d\x86\x01\xc3v|\xf4\xb1@\xed3\xb1\xaeu\xcfb,\x0e\x83\xc4\xe1\xf0\x18LI\t\x06\x83\xc7\xc5!\x18\x1cv\xf1\x1e\f>A\x17\xa1\xd7\xd9\xf5\xe5\xe0\xb9r-\x81\b\x01[L`kvk \x06\a8,\x91N\x8cin,\xca\xf7\xe7\x85\u007fj\x81c\x9f\xfe\xcd:\xad,\x90ͤG\xbf\xe1\x16\x9f\xc1\xea@`\x0f\x03p\u007f\x98\xe3\xb4*'\x17\U000ae608\xe4Ec\x0e\xbf\x03\xea\x91P\xeal\xad\xeeG\xaf~\xcb\xe4~q\x80.[\nK\xd5\x1e NS\x93+P7\x88\f\x15\x1f\x03\xb7'\xcf\xe7N-D\xd7I\xbc\xee]B\x90\x94\xdb\xf9\xe8P_\xdfSI\xbd\xf4J\xace\xfe\b\x03\x91n f\f\x8d^\x17>\xcan\xcc\xf7Y~%\x15H8\xc30\x15\xa1A\xd8\xe7\xec$\xd9.\x94\xb5\xe4\xfd\x81\x88E\x05\xbbBu\x13\xb3\xb0;\xe3\xa7\xe5\xe9\x84\xde\x14\xd0\xd6\x03\xf2\x10)\xbb\x06\xc3k\x18\x16sԄ\x8f\x1c\r\x15рɦ`\xee\xdc\xcfY@\x01־\xf3\x1f{\x88\xaa\x8a\x9a\x81s\xe0\xb1\x12\xbd?\n\x90`\xf1UxjF\x95*ĞA\xf63Ȩ2\xe5\x00\xf3\xa9\xbapg.wz\xec\xd4\x1d\xc1;\xd2\x1eO\xe7\xe6\xeeT\x17n\x06iAd\xc2\auA\xfd\x8a\xd39biU\xe1'b\x95\xca\xc0A\x85r傣\xd85\xb1\n%\xc8\xfd\xa5\xa6\xaa\x8b\x11\xf7\xf7dg\xa3\x93\xfc\xbd\x1b)\xb6\u007f\xd7xq\xd6Uu\x8a1\xc7n\xf7\xb9t\xab\xe2\xb6`\xaa}\x0e㔫J\x93\xf22<\x9c\x19\x80\vl\xc7\x101큸\x00\xe6tt\x00[{\a\x98=\xbe\xe1e\x97\x15\x87i\xa3\xb4\xc3\xd2w\xa3G\x01\xbe\xe1\xf3\xc2}\xa5\x9b\xfa\xdc}I\xdc\x00\x021`t4\x80\b\x9f!%\x8d\x16Q\xa9E\xa3I\xd4b\x03\x06\xccԍ\x9f\xfb0\xc1'\v\xbc\x03N\x85\xf9hgB\x90\x0e\x82@\x05\xf15\xb1\xb6ړu[U\xd3JIU\xf7\x0e(6s\"\x8d7\xb4o5\xb1|!\x1bjG{5x\rP\x19\xdfL\x82\x9a*\x1c\xac\xafO)\xac\xa2\t\"5\x17*ѲŜ\xc5-\x91\xe8\xa05\xa2\xe2\xb8\x15\xf2\x8a\b\xeb \xda\x129'\xa8\f\xd5\x82\xf7ccu͏\xa7ma\xc7\xe2\xafq\x05\x17++\x06\xf10`]\xebHr\xe4\x97-\xb82\xb5=\x95\u007f\xfc\xb1gmT3\xe1\x92\xfc\xf7MS\x9a\xff\"?}[Kh\x8e\xba\xd0\xf4\x94\xfcW\xf3Y\x8f\xdf\xe5 J\xda\x10\xfd \xdeH\xf5}\xf5\x8a\xe7\xce)\xa5\xf8\xeaq\xbdu\\\xc9\xf2I\x02\\a\x1b)\xb1\xce\xd3\xd1\xc4\xdd\xed\x013܅:ڕ\xcb\xebA\x87\x96.kn\xa6\xad\x15\xb5\xe6\x87\x04\xbfz2d\xa6\xd4b\xc3\x02\xedD\f+\xb9\xd0\x19K\x81\xcd\xd3g\x11\xc7y0\a4\xf9{z\xb8\xa8\xe8\xe5Nfi\xe0j\\\x0f\xd0\xfa\xb3\x8bB\xdf,y3ֳxl\xa0\xff4\x04\x81\xe4\xe2\xd7\xff\xb3\xd5\x06u\xe4\xff\xaf\x93\x81\x15ljG\x9b\xa4\r\x8e\x03\xe6W\xe6T\xce\x06Ix\x12\xe0\xc9\r\x02\xf9\xd1\xd7\nO\x04?\u007f4:*\x98Fi\x9a\xe9\xb1\xf5r\x9eP\x88\xa7\x8b\x8aZ\xe8\x94,\xc6Z\x01\x89\xa1\xbd%\xf0lȓk\x11\xa2\xe0\"\xafv\x80K\xf6\xea\u007fƯ\xf58\x10\xb1S[nj-\xfeNlP3\xd19\xf3\xaf\xbag\xaf\x86kb\xf7Ǔi%֯\xaeO\xfc\xbd\xcdj:\xf1R\xc1\xa8\x92v\xa8\x05\x95\xc1T\n^\xd90lBƸ{\xed\x13\t\xd6@\x9cWق\xb5PY\r\xf7\xc7\xe0\x1a5\"\x9f\xceD\xeb\xceg\x9b\x00\xf7F+\xcc-Ԏ\x98\x9bo\xed\xa0\xe1q\xc2\x1a\xfd'\x8e\x00\xbc\x0fq\xe1(\xc1\x92w\x039\x88\xb9\xeb\rsJ.F\x86\x87\x91\xb4\x8a\x04Au\xa4\xc8\xe7\xc8S\xd6=\xde\xe9ꦚӪ#\x87\xd0\x11\xe9\x04\xc6\xf0\x80\x15\xf5\xe5o\xba]\x99C3\x80C\xb2\xc8<\xb3Rw\xb7\xa5\xcb>8\x00\x1f\xf6\xee\xf0\x967f\xe3R\x9e˫\x9a\xbf\x02\xd6QC\x04\x15<\x98\x9a\xe0\xa5\xff5\b\x8b\xc3RٍtT\xdc\t\xd8f\xcchH_vr-mx#.J\xe8\xcc\xf7$\xd7d\x86\x80\x16\x0fF\x81\x1f\u007f\xeaC>\xd4\xe2\xd4ty\x12e1 u\x83=\xd7)L$\xe6}\xca達\x81\xd3Ͽ:p\xc0\xebOo)\x18=&\x9e\x1d\xf2=UY\xa4\u07bb\xd2\x03DK\xa5x\xd9\xf1Mo\xeck\a\x894L\xca#YO\xb6\xf89c\x9d\xecY\xa7.\xcbL\xec\xe0Kk>\xab\v\xb6\xef\x97\xcbe\xde^w\xa7G\x10d\xe0\xbbi\xb5\x91\xa9\xbe\xf9\u0094\xd7cbM\xc1\x86\xa1\xc0\xa1\xa5\x05\xa8\xc9\xde\xce2\xf1l\r!i\xa2\xec?J\xe1\xe5\xcb\xe1\x8f:\xa5bu\x94@\xb5{\n\t\x8eq\xb3Q\xf8\xaf\x98\x18\x98\x94\"\x1e\xd9.\xdd.̨\xdan\x9dh\xcf\xe1\x03\x90\a\xaaV\xc4U\xaba\x1f\xd8V\x9cB\xa9\x87\xd5gQ\x12(R\x058:iHU\bR\b\x83V7\xeaָP;:\n\x96\xb6\x0e\xa0\xf9\xad\v\xbf$2f\x867\xaf\x96\x8e\xf45\xebM\xa8\xcaB\x10\xca\xd4\xdf@\xddk}\xff̜6>+\x1c\xfb\x99R\x86\x89\xeb.x\xc9\xe4`\x84ұa\xcb\ve\xe43\x16fe\xb5$<\xac\x8a\x01s\xf0\x83u\x96\xc9\xe5\x89\x1brn1Gb\xf9d\x13\xb3\xaf.\u070fv05\xe8^\x1a\xf6 \xcd/\xa5h\xd9\xf6e\xdd[AH\x17\x1a\xe1\xdf|\x1a\u07be\xa1yL\x92\xb5\x17\xa7\xde\xdb\x05\\1\xbe_\xc7]\xa1y\x93\xde;\x9b\xed[U% h\x0f\x9f\b\x15\xe5\xe7Ef\xbe\xde\x10\x90\xff\xfc\xfc\xa9\xf9\x9b\xd6\xfd\x19\xbcoF\xc6\xe9d\xce\xe6\xd8\xf5 \x80*\x8698Uc΄[p\xbb\xe2\xd6%\x9fz\xe1{\xf3\xc65\x00\r\xfb\x03\xa0\x03B\xad\xb7\xdf.'I\xf6PvAw\xba\b\xac\xee\x82є\x94\xb3\xca`1M\x82\u05ed{W$\x8d\xceMoc}\xb4\xb4\xe8\xe8\xe9\xf59\xbc\x00\xde\xeeյ1e\xab^\x94ġ6i\xe4V\x96\xa5\x01X\xa0\xde#\x87\bx\xaf\xac\a\xaf\x01\x0el\x93\xe4\xa7\xc4r\ti\x84\x15\aW]\xb9|oeDJD\x92=\x85\x94}\xbdt\xd3\xd2Z|h\x8aڜZ\x05\xdd{\xc04\x93\xd9\xcf&\xa5$\xd9#\"RV\u07bb|e\x95*{\x1b3\xdb\xc0\xef\xaaV\x9bV]\xb9{eedƅ\x80.nݏ_\x04|\xf1c\x1d\xb7+\xe0Bd\xc6J~\x84UjSu\x97\x81\x9f\xcd\xdc\xd68\xc0O\xe1\xebf\xa8\xac\xb7\xb2\xbd\xb2\xf0\x04H\xbe\xa7{\xe1G\x85\v0\xf5f\x1d\xa0\xa7\x05\x1d\xf4\xaa\x9f\xddQ\xc5\xf7\x82\xb7\x06*:\x92r\x82\xc3E4\xf8\xa09\xb6\x0eH\x174\xb9TXf\xf7\xdd\xf1d\xef#\x90d9k\x84\x011\x01 \x817\xe2\xb09BVb\xcf;%3iR\x9a\x8a摮\x10%j,D\xd2\x18\tʞa\xb0\xb2\xf2\xdfT\xb1\xac\x86;ϡ\x19:\xd4\xe4\xe4\xe7w\x16T\xbd\xc9?}F6\xe9\xee\xc6<\xfa\xa5\x8b3\xccYJ\xe2?\x8a\x8d]\xe4P\x84ߌf\x18\n:f\x8f\xf2\x14\x9d\x14\x91㯺>Sa\x9bn\a\xde{\x8a\xf49?\xfc\xa3\x10\x95\x98\x9c\xda\xc8%\xd1c\xf4\x03\x13\xc5y\xff덋f\xb4\xdc\xf9\xbdl\xdcm\x8a\b\x9e\xf4i\x943<\xa1G\"\xad\xa0\x05\xd9\xea]\x16\xa2\xb1\xfe\xbb\x8d8\x94\x88H\xa5W\xe4\u007f\xef\f\xca5%\xd0Ρ^\xda\xed\xcf}\x85S\xb3|\x0e\x9d\xb9;_\x93B\xc2G\xc6K\xc4$;_\x8c\xd58A/,\x93\f\b\rӾS\xdes\xa9\xdc<&\x93{Fq\x86\x8b\xb0\xf6p\xd4\x17\xa2_\x9aB\xe3\xcc\t\xbbt\xb4{&\xb0\xcbx,T\xa6\xa9\v\x9cΑS\xc9j\xb1\x93%\x1e^\xe2\xca%\xe6\f\"\xe1\xb7\x10n\x02\xfeF\xdb\x13%\x1e-\x94\x8dL]\xa0\xf6\xab\xb2\xb0\xb0x\xb0fp?_\x90\x9e,\xad@*\xa4+H\xe7\xf77\xa4\v\xa4\xc91HLb\xd3\x05\xe4o!:\x80\r\b\xfbr<\x15\xd73l.\xf3\x19\x10輅V!\xeb\xaf-\xfa\u007f\xce\xec\x9fG\x9ew|\xe5\x95\x1dWV\xf9\xcfS\x17J\xa3\xa3\xf4\xd2l{\xf4\xf4\x9cn\x9a\x98\xbd\xf0\x97\x86\xc1\xf4r\x90=L:,]\x99\xea\xe8\xef\x91v\xb2\x87\xe2ߘͿ\xcau\xfe&-\x9dI\xc0\x95\xafg\x11\xb1\xbbsp\\\xe6D\fN\xef\x17\x1f\xef\xa7\xc7Ÿ\x18?W\xc4\xfe\xdai\xef\xac\x1b\xab\xed3+\xab\x00O*\x94\xd2F\xbcw\b\xb4\x10\xef'r\xd5\xe5\x00.\x1f\x9f\x83\xfd\x1eE\xf2I\n\xe3\xcel\xf8R\x80Ո\x9d\xbc\xc3\xf0O-\xba\x9b\v\rM\xfa~laMG\x16\xfa\xa1e&\xbf\x98\x14_\xa3\xf9\xe4\xba\tY\xd4\a\xf4y(\xb9\x19~\xc7\x16\xbf֨\x17\xe7\r\x05&mYV\xd3=\xb4\x0ez\a-5N\xe6\xff\x87\xa6?fD\xbcLe\x01\xff\xfa\xbd\xed\xe2\xe2\x1f\x94\xbb(xv\xc6Z\xad\x1ex\xf0\xadf\x89\x9f\xa5\xa1\xc1\xe2'1\xb7b\x98 ;sm\x86\x1f\x9e\x9a\x80\xd5\x14\x8b\xed\xde\b\x0e\xf2@\xb8\x912\x9a!N\xdd\xdb\U000c397cv\x10\xe2B8\xb6\tn\x8a\xc5C\x1e\b\xdf\x04\xa8n\xa8\bˉy\xb6\xddi\t\xecq\x83ee-\x92ݧ!\xbd\x9aO\x8a{\x00\x10\xbeJ\xd5|o\x15\xa9\xaf\x9bP\x8a]\n;\n\xef\xf4\xf6A\xbdd\xb4o+\x8a\xf6\x93\x89I\x99*\xa4'O\xf6\xdd\xecz\x8c\x8dcP\xae?\xd6H,\xe1\x1dH\x16\xa1\xe9\xd1\x05\x9bd\x10\xb1\x9a\xc0\xb3'\xe2\xf52<\xa3Ջl\xb0\xfa1ѹ3\x9f}VM\xaf\xf7\x9d\xffe\xce\xe3\x85\x14\xe6\xad\xe5\x19\x90\xa5\x11\x8cV\xac\x92p\xb1\xe2Ϟ\xf52\xfb\x13\x1f\x8e\t\\\xb6\xe7\x10V\xa5\xe7x,\x8d\r\xc3y\xf2g.\xc9!WQ7-\xad\xda\x1cnY\xf3\xe6Ϧ\x17\xe5S\x166\xe5\xff\xe3X\xde+\xb0\xf5\xe71v\xa4\x976d\xe5\xdfN\x9e\b\xaa\xb7\xc0\x13e\xd5P+/0m\x03\fՠ\x1d\x11SO\xf17\xc5u!~<\xe5\xae+X\x18{e\x97\x92\xe7\xa7J\xc7\xe5FΛ\x17\x99\x8bK\xdf\xc56\xe5\x8e,\xbc\xf5\xd6\xe0\xb7,.\xfb\xc1-\t\xa1ڕ̣\xe69=\xa4\xaf\xa2ߨ\x12\x10\ry6\x94\x00\xa4\xb1\xcd\x12\xb9\r\xa1YD\xa6A\xdeAY&\x1d<8I\xa1\x0fb\xce\x15\x92\xba\xeci\x92\xa9\xd4\x04*h\xa7\xca\x1d.\xecޏQ\xee\x97F~\xda\xeb0\xacs\xbe\ue35f\xe2\xe3h\x06\x11>\xfaQ\xe1g˺%`h\xf0;\x8927\x0f\xeeo@0'\xb0\x89<\xd1F\x98\x00\x00\x8f\xf2\x86\xa5a~\x95\xd2\xf0Љ\xd1(1\xc3s\x94hW@h\x87ӑ\x96\xde\xeat/hm\xe9hm-\x9d\xea9\xf2\x82Dhn#J\xf0)\x15\x84]\xd1\x1d\xb5\a~\x8a\"\xaf\xd4Bݐ\x84\xd8f\xc65\xec_\xdb}\xa9\x00\x9c[\xa8\\\xd9B\xb0\u007f\x83h\xd3\"\xc9\n\xb7\xff6dG\xa6\x8d\x8d\xe0\xc9\x13~\xbd\xad,\t\xbc\xb4\x15\xfdj\x1f\x8d321'`\xf9\xbd\xf3\xcdQ\xf7\x96\x8b\xe6LP\x0em\xdfW\xe8\xd6Kkֽ\x0f1\xdd_a\xffY\xdc'\xfeپ\xe2\xbe)\xe4\xcf{+k\xcakV\xde\x03\x9d\xdbg~\x0e\x1a\xeal;N\x11\x9c%\x98\xd2\xe5\x19'6\b\xbd\xc7M\x12\x90\x04'\xc3IԵ?\xeb\xdd\x1e܉\f7wJǼQ\xd0A;\x98\"\x00\x06\xafS\x1a\x8f=\xdf\xeeќZ\x9f\x9c\x1eb\n\xdfI\xa5\xde\"\xe8\xd2\n\xbf\x11\xc4oo\xc5ϩ\x94\x9d\xe1!\xa6\x04f\xcd\v[\x92\xec\xb8\xfaɫ\x036ad\x81WفW*;\xdd~ն:.n\xb5\xed\xa1\x99n6\xbc<\xe0U\x16Y`\x13\x1exy]}\x9c\x9bi\x9b\xffb\xabH\xe3V\x1f\xe3U\xb0TƔ(?\xfbG)\xab\x82wL\xbd\x06\x15m}q}uip\xac-\x0f7\xeb+\xc6<\xc3\x1e\x03mZ\xbe\xe1\x13֝\xf9t\xfd\xc7Cn\x18_D@\xa2\xa8\xb4\x88\xa7\xb3\t\x9f\u007fN\x98\ru\x9c\xe4Ĉ\x04{\xc7r;\xde\xec!J\xa0n\xa2-\x870k\x16!\xc7\xf8\xe6\xb5Ci9\x96%\xf8\xca\x18\xbc\x04\xea\xf9\xa4U\xe8\xa6\xfd\xfe!\x17\xdbo\xba\xc2\xf9\xbcT\x11\xdbEk*\xea\x97P\xc4NJnE\x8b\xb9\xe4\xdb&\x98\xd5\xfb~z\xd11\xfbw\xe7\x82fj\r\x8b\xd4\xd4\xd7Db\xad&\xd6L\xdb;\x92\x1c\x1a\x9e\xad\xdc\x1a{\xfc]\xd6\xefw\x92\xfa\x8d\xcf.=\xdb'xv\xfcY\xbfP\xb3\xfe\xbdy\xfb\xddU\xdfl=\xe9\xdf=#\xe2\x02D\xe4\x17\x82(\xedm\xbf\xb2\x19\xdc\xf2\xaaH\xcf\xc0\x80\x9e\xae\a\x132\x9b\xb8qq\xf1.\xa2\x9f\x9af\xf8'\xac\x956\x98\xc3Z\xccx\xacg\xcc{Q\x80ô\"\xb8\x82\xd2\xcb\f=\xf8g\xc0\x13J\xa0\xf4\x9c\x85+\xd9f\xfb\xa8\xfb\x17\xbe\xe3\t\xcb=jg;\xc0g\xceb`0\x8ci0'\x91\xea=W\x12+I\a\xa6\x99\x9e\xebMI\xfa7\xda$\xa0~A\xa2\xb4K\xbfƶSH_P\x05\xa6\xe8H0\xcaM^\xbeC\xd7\x14X\xfa\xed\x8bB\xb9s\b\xa3x\xbd\x97\x9dn3\xb0\xf7\xb5\x023$w\x16\xbe\xf8\xb6T\u07b8CW.\xb7=|_(\xafJc\xe7\x17\xe4o(r\xeej\x88H\xf5\xbb\x9cEGa\x05\xec\xfc4yU\xe1\xfb\x87\x95\x13\x9eɥr\xcd尺0MM\x0f$\u0090\xf9\xc4V\x8a\x05g\x19L^\xa8ظb\x1f\x19c\xb3\xa6\xc5w$\xbe\x91\x86\x1bqp\xaa\xe9\x8c\xc1a\xbf\xf4\xc3sФ%M\xf8\xe0\x1d$\xff\x03Ld\x9e\x85Hv\xaa\xf4\x90\x17\xe4\x81x\xe4\xd8u\x1c\x02\x8e\xc6\xf9\x82\xb1D\xf3ϻ(\x04b\a$\xc3;\b$B\x15^B\xf0\uf592\xeb<$#\x814\xeci\u007f\xa7\x828\x9fO\xeaԋ\xd2n\u007f\x19\x8f\xf0\xbbR\xf7\xbc\x04]~\xecJ\x1al@:h\xecݧ\x99\x12\xea\xde\x03S\x84\x02\x9e\x8f\xf9o\x0e\a\xea \x02\x99\xe0洞\xb86R\x01\xa4\x9bi\xba\x9eX\xcf\xf6\xb7n\x8f\xc8\xf3&\xaf11#\xe3\x96\xfe\x92\xdf\xe3\xe8\v\xb1\xb4\xe86\xbf\x1arN\x0e\xb9Fښ{\xbdqR\xeekV\xad:+#\xe3\xa8\xdc\xf8ƣ\xe0\x9d\x9f\xf2r\xf7\x86?S`\xeb\xcd\ay\f\x83\xc0\xb3\x04\xeaKYe\xc4\x12\xef|\x9bf͚\bW\xb9r~\xceb;\x91\x05ְ\xcf\x00Q\x19h\x9bu\xcd^j\xa3|\x9e\xbd,\u007f瑐\xe4%\xb2Z{\xa5\xf7\x92`rB\x19\x87\xef X\x1c\xbb\x8e\x04\xa7,\x96\xd7BK'7}\xfa~\x054/\xc6\xdc\xc9\u07b4TTi\xef\xe3\\b\f9\xb2\vs\xa3kQ\x82\n\x83Ð\xfej\x9e\xbc\xc4^+7ym\xeet\x80\xbfM\x15\x8f\xefzh*d\xeb\x93)\x02\x9f\xb7'q\v\xa5\xc3\xea\x80_\xab\x98\x18\x85\xc5\x15\xc6\xfa\x95&\xa5Y4\x8c\xb2\x80\x13\x85\x9d\xb46\xba\xe2\\\x8dV\xcc\xfe\x18\v\x80|\ue6a1IG\xa9\x1eO\x0e\xb8\xab<\xe2\x99\xdf^a\x1e\xf6r?W\x1c\xf8\xd6a\xb7{D\x1e\x93\xb9\x87\x10D3\x0f\x96Ȟ\x19j\xa63\tX\x1aK$\x15\xf9Ѱf\xe6\xf4\x1a\x83o\xce\x12\xe7\xac&r\x90\xb9\xdbl\xf6\x88\xfb\x16i\x18\x1a\xef\x9dX\xec\xdd\xf3\x06\xf2M\x98\r\x1e\x91\xbf35\xd5`HM\x8b\xdc._\xefT\xbd\x01$\xb8\xe7\x89+ִ\xb3\xcaʘ\xed\xafb~367\x9d\xe6\xb63\xf73\xf7\xeb\x821\x80\xe4|\xa8\x84\xd8]\xcc\xf0\xc7\xc9T98\f(\x84\xb8\x8bf\x03^\xdd&\xc1W$\xe3\x8b\x1b<\xb1cD.\x1c\x06\x14D$\x00鰙&\xd0\x13u\xb9Ľv\xa5ݽ\xa0\x81!x\rTҎ~\xd27?A\xc6\x00H\xa2\b\x10ק뮱\xa1 \x83A\tj*\x80\x9a\x01Ԝ\x8a]t\x96\x95j\xfb\xa8\x83\x18r\xc1\xc0;\x1e8\xaeן\xa5\xc6d\xa0\xa7%\x9d(t\x8e\x97\x94x6\xc9\xd9\x11\xf1]%&\xf37BTj\xc9\xc1\x00n\xec\x11\xa7H\x87\x0f\x14\xef\xa2\xe2kQp\xfaa~\x851\xdb\xc69\x8e\x1e\x19\aj\xffzq\xceBْ/\xab\xc2\f\xe9\xe9\x8e\xec\x1au\xebU\xe96eZ\xbbq\xb9\xcaQeߨ\xf2gJd\xbb\xd3\x05\x8f-\xe2\xab\xffVa\xe3\x1fK\xbc\x1fϱ\xad\x82\x9c\xf2\u007f\x1b\xe3^J\xe6\x82\u07bey\xb7\x95p\xc6\xc9\xc3X\x98\xa7\xf4GYB\xa2\xe9@\xc9\xcf\x0e\xde4\x1f\x8fJ\x85n\xa2\x97\x17\xebu(\xd9i\x87_\xfc\x04f|\xeb\xe83r-*\xbc`\xd2\xe2C^S\x82\x8b\xaf\t\x06\xfdг\x15\x17^e\xe3g\x80b\xd3%\xae\xf7q_|\xb1a\x1f\x10e\x9cBi\xdfxj떭\xa7\x12Z\xe8k\xd2rم\xe2\x1f\x17\xb8\u007f\xfd咄{\r\x1c\xf6A\xfaD\x85\x12\xad\xbc]BT\xbd9\xda\xd0\xd3\xe7f]\x1b\x9a͞\x98\xf9\x80\xbf\na\xc0\xfd\xc8q,V\x1c9\x04\x96\xc1G\xfd\r\xedl2\xbbݰ\xde0\xa5\xf7^g\xbd\bֱ\xdc\xc9Z\x9f\x98E38U\x93o\x17\xf9\xfdyg\xf1\xd5c\uf50b!6\xe3y\xed\x12ʻ\xb82\x81\x90\x94\xe6\x05\xfe\x05r3r\x96\xc5`\xf0x,M\x83\x99\xb7JjN\xfd\x87[\xc1\xba\x8c\x97\xe9\x14\x9aa\r\r\xb8,\x8b\x89L\x86pSeG-\xc3>\xf8\x00\xb5\x05w\x12\xab\x87c\x00߲\xfaj\xb1ߨ~{\x14]]\xdd\x02xLxDw\xf1\x19\xb6\\\xe4\x8aG\x15\x85\x14\x029Ѳ\xa9\x97\x91\xfd\x81\x04Q\x1d\x10\xde\x15}N/\x80\x01\x83\xee$7\x95&ʉR\xb5\x81f\xb0\x82\xbf\xbe#\x81\x1d\xb2\xd7\v\x9dE\x83\x8ff\xde\xc7o\x14\x83ԱH=\x95\xbdSr&\xfbx\x06M\x85\xb2\x13:\xf4\x8eGQWI\x1c\x12W\x8e}\xa2:\xbb7ޕ`V\x01\x89\x1f\n\x9e>\x83_\xf9|y\xea\xf3\x95\xa7:]L\xb5\x98\x1e\x88fd\xdb\x04;*\x9b\xaf\xddHų\x97M\xc2Iu\x8f\xa1\xe0Q\xc8f\xde\xec\x00il\xae\xef\xcdI\xbew\xd9\xdf\u007f\U000e67d1N:\xb2\xf8\xf3L\x18\x81\xbb\b\x81ɳ\xd6\x13^Կ\xdf\x02I\xec\xa0\xfa+À\x84\xad\x9cK_y$\x94\xecs\x0e\xb4\xa9*\x10\x1f\x15\xb7\x13_\x13?':\x8a&j\xedF\x85\x05}u%\xeb\x15\x16\xa3\xd6\xce\xd8\f\xb7\xe6\xabߨ^U\xaa\x81\xe8\xd7;l\xb6\x1e\x1fz\xaf\xde\xc1ҿ\xeb\xb1ٺi\u07b4\xc0j5\xad\x83f\x18\xaex\xef\xb0ŴJ\xeb\x8d28\x8e\xc5'\xfa\xa5,`\xb1\x00?m\xff\xf6\xed\xebF \x82.\xc8pF\xc2@0\xea\xc9\x17\x86\x06\xb2ʿ\x01\xbc,b\xc8\b\x19X\xa5\xebC,5ăL\xa9\x04kE\xcc\xf6\xab\x96\xfe\xb2\xe3A\x96\xdfh\x8bP\"ݸk\f\x896kS\xf4.C\xbbg\xcb\f\x8a\x0eNO\xf6KO\x9e\xa6Y\xad\xc8d_\x9cz\x10.\xea놤\xb9\x9f\xa5,\x92鼵>LkaQv\xba_\x8c\xc2w8=\x89\x89\xc3I\x1dz-\xe1\xa5[\x8fĀ\x15\xb4\b\xee)-\xeb&\x17B\xa5\xfd\rkpS,\xabV\x9b\xa6`^\U00076f08\xaa/\x00\x13\nӗ`\xads\xaa%Xb\x0f\x11\x8bi\xc8\xe0j\x01\x97\xc8\u009c9B|\xd6\b\x91W1\x9cw6S\xe2)\x18d\xf1\x94fg\xd1\xd4̹=\x0fvC\xa3b\xea\xf5\x84M[\xb4xԛ\u007f:\xb6\xa4g\xc5\bF\xa5\x82\xb9=f\xe0O\xd4\xe4\xd43kЂg\x92\x0e-\xca\x13w\t\xba\xa4\xbb\xe8\x10if\xf4\xbe\xad\b\x81\xc0\xe3y̥3p\n\x82\xe62B\xc0\x03\xd0\xcd00\xa6طʎ\x95a\x00\xaa>\x18\t`M\xce\xdbY\xb5\u07bdc\xf3}f\xa1\xa1\xbe\xce\x12=21\xf6\xd7\xd9ک\x94e\xc9q\xd1߷\x85Rl/J\xb2\xb9\xe6\x1e\x83^]\xeeY\x17\xf56\x8d;\xb3#.,\xb8F\x94\x99\xefs\xaf\xf1E/n\xed\xb1\xc0\a\xd35\xb2\xf5\x9abۏ\xc0\x1fO\xa9w\xc4\xf6\x97ӈ\xb5\x17\x93X\x92\x10\xf4f\v~\x91a\f\xb6\r\x8e\xa6HY\x8cBŞ\x9eF\xe4\x02!\b\xde`ƀ\xc4\x13\xdb ̀\xf1\xe1\xcb\tLpR\x91y.4P?\x87r>X\x11`@C+\xebOC\x949\xa1\xc1fgM2\x17\x9d\xf8R\xad\xef\x87N\x1c\xf6\xc2~]\xe6!5i\r\xd2͛\xa5\x06m\x93\x8f\xd1^\xae\xa6\xaf\xb0Q&\\\x96\x13\xe2[\xbb\b?+8\x8c\xa2\x9c\x11\xf8\x13\x9c\n\xffğ_\xdc\x15:\xfeV\xe8F+\\\xa3.Y\xae\xa6\xb5r\xf89\x93\x89-x\xa4\x06\xa6d\x12O\xaeW\x8e\xdc\xf6]\x14\xa3\x93S\x12\x9d\xa1\xc8\x10\xc1\r\xca:f\xedt\xe4\xe9\xd4g;\xc0\a\xeb\v\x04\x87\xe1;\xf1\xd5\xeb\t\xaff\xf95@H[\x86:\xf9\b\x0e)\x8d\xa8c\x13(\xedCeN'\x8f\xd2F!D\x12\xf1\x1f\xb6)\n\x83%/6\xfaHp\x90\xe1\xc5k\x14}\\j\x80pX\x1fc\x1c\x19\x8bA釩/oY\x152\x1c\x04\xc1O̍\x8e\xa2}\xaf\xc3\xd6\xe2\xf0%\x91\xdeնK\xaa\x814LS신\r\xb2\x8725g햝\x183\xd9l.\xd7\x04\xcb\x01\x06\x10;.\xadФS\xadP\a}NX\xa9\xb104\x89r\xd8]^\x9d-\xca.\x9dJlk\xf1y\xa5\x91\xa7\xad\xd7\xf5\f\xf1\xfdy+?\xd1\xf8\xac%#!\xa1\xe6eBl7~\"\xe0\xca1j֗C;׃M\xaawdַ\U000dd0a1\x81h\x91-\xa8\xd9^\x9fA\x84\x8b\x9e\xf7\xc2\"ۡ\xdavx\xba=\xa0\xef\x92O$\xb25\x15\xae@\x1d\xc2\b5&\x94!\xf1\n\xc7\xe19\v\xbb\xbf\xa7cqb\xa1_\xd4e\xa5\xa2\x04\xec\x0e\xb4)\xe3\xe4\x80[\v\xf5\xb71\xd8\xcb\xf6\x00!G\n\x8f\x84Pk\xb0\x98+y\xb8\x1d_\x12\x85$\xefɋ\xc2y\x86\xaf\xafT\x04A\xcf \xa2\xba\xaeN\aÅ,pn\xda$\x01\x19\xc23q\xf6Q$\xcbY\x8f\xb7\xd7o\u007f̚BM3\xff [\xaf\xec\x03^-H\xe6]\xe2\x14\xe4\xaf\x12Ya\xbf(~\tc%\x1e\xbbPA\xc2a\xe5\xe3*\xbdV\xdd\x14\xecIX`\x83\x1f\x97\x8f\xcc\xe8\x88\x13\xf5̖\xf3@=0\x9d\x14\x18S\xc1z9\x93\xaa\xd2\x13\t\xc0nkY\x1eet\xf5\xb0\\ʻu+\x8dn,\xb2&Ds\x91E\u05ee\xde|\x8a\xe9\xa9\xf8\xc0\x93\x06\xee,+\xcb-F\xf1\xbf\x11P\xe9\xa8\xff\x17\n;\x91\x9f-\x03\xa6\xd1\x194\x99\x9a\xd0\x15\x83;F\x87$\xaap\x9ddh\x14܊\xc8\x1f{sL\x1d\xb2R\x95\x8dA=\xa9\xcf\xff\xd8\x0f9Z$C\xaa\xe8\x89\xe3\xe2T\x99\xbb\x90#\xa1.\xda\x1e\x9c\xd0\xd7\xf5\x84\x1aZu7?ϴ4\xd28\xaa\xaa\x1b\x05\x9f\xf5p\xd79\x85w\xf2\xee\x14F\xc5Q\xf7\xbb\x91\x8cڲ]\xbb\xfb\x97za\x91\x12P4\x04O\x0ft\xcf\xdak\xa1\x99\xfa\x93\x02:\xe9\x060\xf2\f\v:4\xe1~'\xb6\xc7=@\x97\x00n\x87\x02\xfcH{\xb2\xf8\xf9\xaes\xb7%\xb8G\x1b\xec\x9aQ\xfca\x9a\x9f\x1bU\x88\xa7y&\x81@\xae\xf5l\x01\xaa\x04\t\x13\xed\x18\xd06\xf3_ߴ\u007fG\xd7p\x00G8'\x00\x06\xf7bI\xdc\xdam\xdf\x01\xea\xfe\x1f=X\xe5\xcd!\x10ͅ=\x01X\xf6\x8efJ\x10+\x19\xe5\xa5-c\xfb-\x1f\xab\v\xd7\x18\x0f;\x8e4\xc4\xed6J{)r\xb5Q\xa7\"B\xa6. \xf6\x90\xcc\f\xac\x85\x03\xf7\xfc\xe8q^\xa7/#l\x1a\x83SP\xe4\xa2\x18M\x95\xdb\n\xb3;,\x95\x9abRT\xb3l\xe5\xb1\xd58\u007f\xbb\x8d\xa7\\٥\x86y\rU\x83-\xb8uLT\xda\xe5l\xa7\n\xef\xb2\x03\x0e\x8a7\xac<:\xae\xe0\t\xe48\x92\x91\xf2\xb6\xeb%25DHWU\x8b\x03\xa9\x92\x98\xe90\x9dEz\xd6\xf4u72U.\x04\xaf\x1c\x9c)v\xb4\xbaT!\x03_fS\xf2T\xa9Pa\xe0\x9aBt\x8a \x8etш%v(\xffv\xa5OKd\xa1\x06\xac8ʮ\x8eq~`9\xa4.e\x96^\xf1Q\xa1\xf8\xaa`Og\xc6\a})C\xb6\x1f̝\n\xa8P}dMV\xb1\xe1\xf1\xc00x\x148\x1aPM\xefp*\x89A\x1b亂\xccj\x96\x1b\xa1\xc4\xc9\xc4[\xfcS\xea\xe0\xbd\b\x10\xd0\xc2 j2H\xddY\x9b\xf0\xc7\xcc\xd5\xef\xf4j \xa8\x1c\xa0y\x97\xd7\xd4n\xd6\x10;:\xf0)'\xc3~\xc1\xd1u\x03i\xa6\x91p\x0f\xc5H\xb1\xa8x\xbeh\x1b\x81\xaa\x1f\xabƭ\xb8/\xeb@\xb3О2\xa5\xb3خ\x9a\xd5\xc0\"̙\xc2\xd4#\xfa<'\xe7\xf5\x18\xa2r\xf3\xf8Q\xf5pw1\xa3N\x90\xd7\xc0\x99\xb3蟹\x88\t\x05\xd7 \x98\xe7\xa4\xf4\x19(D\xcc\xec\u007fSם\x05\x98\x92\x8eZ\x8d:\x14\xf74m\xde>_<\xeb\x12^/\xc4w\x99\xc3QYx\xf0\x8c\x97rT\xdbU]Q8\uf6f4\xac\"\v\xf8\xc13E\xff\x038\x10\xbfy\xa0/g\x89ߛ4[\xad\xab\xc3\x0er\xb9\xb0\xef\xacr\xbf\xa3J\u007f1 \xfa7e\x17uW\xd7J{\x9d\xa9\xf0\xe1\xe8\xab\xfaZ\x9fD1\xe6\xcd\xdc\xe7f\x14evGY\xe7\xc4\xe4\x96=Ϛ\xaf\xd7\xe7\xa5mF\x05ê\xf9֪|\x02\x8e\xe2\xb8\xdb\xc0T\x90a0綝\xd5c|\x1bug\x1f\xe9c͞A\x17Tֹ=\xa2\x900\xfe\x91\xadr\xb7\xc9ɴ\xf7Z\xa2\xe8>f\xe8\xfb7P\xfd<\xec7\xae\xa6\x8f\xe8\xf3Oͨ\x15\xc2\xccg\x95\xf5^\rjs\xf2\x87c\u0378\xc6w\xbb\xc1\xbb\x91\xb8\x17\xcdY\x95<\xe3d7ul)^\x8eMU|\xd4ݸ\x84\xfd\xa6u\x913g_\u0099-\x93\xac\xac|\x9b\x1e\xad\xb9\xf0\x1a\r/n\xb4`\x9e\xb9}R\v\xfc\\\x01\x9f\xbfY)\"\xc2=j\x8d\xba\xce2\xa3Ԫlvm6\xf1k\xe6\x1c\xc3Q\x8c\xf5\xd7\x1c-\x8e\xf7\xaa\xb9R\x1f\x8c\xe0?\xaf\x88\xb1ŵz{\xeb5b\xab-)(\xbb\xb9\xf4\f\xd1`\xd7\xd1\xfcr\r\x8d|\xda\f\x94ҟ#\xd8W\xca4[E\xb3\xc7\xe1\xdb\xc2S\f5\x0e\x9a\x9f\xbbo\xe1\x1b\xc6\xdb\xda7f7\xc8\xcc\x1e\xe1\x9d\r\x87V\xcb\x03F\xf1\xff\x89\x8a\x0e~\xcd\xfe\xa9\x12C%LqWw\x92\x93\xf3\x96\xa3\xfc\x95\xae\xbcQ\xec\xee\xad\xd4K\xc2\xe6\xefX똎S3r$\x12\xee\xf9\xab\xb1\x96\x10&\xfa\xbc\xfb]\xd1\xeaL\x85\xfb\x03\x8d\x8a]\xad\xa6\xfcʚ\xd1|\xa9\x9d\xc8\xc9L\xe2o\x9eGF\x9e\xd2\xd8ό.\x19\xf9\xb9;\xa8\xf3ˠ\xbc\xf7{t\xa3\x99\xe1\xc7h\xe5*\x84\xa3h\xaf\xba\x01\xf0\xfe\xab\xed\xa7\x1dB\xb3\xacV\xcd9\x9awk\x93\xa2\x8c\x11R\xdd{\xed.\x9e\xe0\xbf3b|\xfe\x8bZ\xe5#+hւ\xae\x9bM\xad\xe9\x9a7\xa0\x88\xb8\xd0 3\xfb\xf9\x9b43\xf2\b\xe9\x98p\xe7\xe1\xfdMt-\xdcK\xc4\x17\xa8\x19\xad\xba%\xeec\xf6\x97\xa3G\xd5p\xd6\x1e'e\xb3ƻ\x98vƐ\xe3\x9b\x15[c\x17\x91\xbd\xc8\xfd\xfd\xc8X\x87j\xce\x18\x9f\xa7\x11ݶ|\xeb\xfdn\xd4\xe4~\xdb;\xaeu?\xaa\xc8{\x11B\xef\xa3W͵F.\x0e\x98\x0f \xc0=\x1d\xae\r\x8d\u007f7}\xa5\xbf\x0e>\x90\xde*@p\xbc\x81!\xee'Xz\x06\x82c\xcea\xf0\xb4K\x862\xf3\xad\x84\n\x9d\x1eA\xbaz\xaf\x1edKv\xdbB\xbe&o\xc1آ\x1f=t\xb0\xbd߽\x19\x98\x94\x0e\xb0.D\x87\x80\xacn\x14\be^\xc0\xb0\xcb;XV\xd5\aDZL\x05ϼgP\xe6\xdei\x0e\x15\x16\xdb\x06\xe9\x8a\xfa\x04\xd92\xdcb\xc8\xd7\xe6u\x86֊^U\xd5T\x1b\xcd\xc5QL\x000\xef+j\xd5\x1a\x19\xccY\v\xf0\x8fM1\xf9\xcd\x1bI\xc6\u05fd\x11\x11\xc0\xfc7\xb6u\x931\xb7\v\xfc\xf3\x94q{S\xe2\x91D\x0e'(~ΈB7\xe7\x81\rZ\x8e\xc8\xfd\x11@\xe1?\x12\xe1\xc1C\xeb\x04\x03\x19[\xcbe\x87n(\xd2\xd6\xce\x19hYӿW\x1b%\xb7;Y6\x9fz\xb3\xc2K҉\xb2\x1b\xd8>\"\xea\x05\xedQ\xd2R\x99km\xbd\x9a}\xb3\x17\xc4[JyR;\xcc\x1fW\u007fQL-OW\b\x1f\xb7У\x18ժ\xe1KܐkZ\x19\xe6\x8dS\xd4\b\x04\xf2\x8b\xc6l+\xc2x\xc7$\xb1\x19?k\xe4O\x03-\x82\xb3e+\x14!\x19\x80\x9aI\x9b8\x90qET\u007f\xf7*\xc8$!\x96\xf0&3K\x189ex\xf6\xcfAG\xb4\x96'$\xcaГCf\x1e\xfa6K1!\xa9\f\xde䪰`խ3kFVm8\x12\xe9\xb3Oע\xa8:t\x82\xae\x91\xf6\xac\x15\x99Ɣ\xe3߀9\xd8\xe7\t\xf27H,~\x05\xe4\xf0\v\xfd\xdf\xf4\xfc\x87\xa3k`\x01\n!\x18A\xa11\xd88\xbf\xdaRic\x1d\x80\b\x13ʸ\x90J\x1b븞\x1f\x84Q\x9c\xa4Y^\x94Uݴ]?\x8cӼ\xac\xdb~\x9c\xd7\xfd\xbc\xfc\xf8\x03\x00\x82\xfeߘ\xdf9Q\x18\x1c\x81D\xa11X\x1c\x9e@$\xad\x98k\x9fB\xa5\xd1\x19L\x16\x9b\xc3\xe5\xf1\x05B\x91X\"\x95\xc9\x15J\x95Z\xa3\xd5\xe9\rF\x93\xd9b\xb5\xd9\x1dN\x97\x9b\xfb\x176\xef\xcc/\xaf\x00\b\xc1\b\x8a\xe1\x04I\xd1\f\xcb\xf1\x82(Ɋ\xaa\xe9\x86iَ\xeb\xf9A\x18\xc5I\x9a\xe5EY\xd5M\xdb\xf5\xc38\xcd˺\xed\xc7y\xf9\x02\xae\xfb\x03\x00!\xf8ˤ\x850\x9c\xf8_\x17\x99B\xa5\xd1\x19̽?\x9b\xc3\xe5\xf1\x05B\x91X\"\x95\xc9\x15J\x95Z\xa3\xd5\xe9\rF\x93\xd9b\xb5ٗ\xab\xf5f\xbb\xdbǔ\xa5\xa8\xa9\r\xa2\xe9\x86i\xd9N\x97\xdb\xe3\xf5\xf9\x01\x10\x82\x11\x14\xc3\t\x92\xa2\x19\x96\xc3\xe5\xf1\x05B\x91X\"\x95\x15\xd2A\xa1T\xa95Z\x9d\xde`4\x99\v\xdfz\xb1\xda\xec\x0e\xa7\xcb\xed\xe1\u007f\x87?\u007f\x00\x10\x82\x11\x14\xc3\t\x92\xa2\x19\x96\xe3\x05Q\x92\x15U\xd3\rӲ\x1d\xd7\xf3\x830\x8a\x934ˋ\xb2\xaa\x9b\xb6\xebQ\x1e\x8a(\xccG\x93\xd9b\xb5\xd9\x1dN\x97\x9b\xbb\x87g/\xf5\xb62\x00\x10\x04\x86@ap\x04\x12\x85\xc6`qx\x02\x91D\xa6Pit\x06\x93\xc5\xe6py|\x81P$\x96Her\x85R\xa5\xd6huz\x83\xd1d\xb6Xmv\x87\xd3\xc5U\xfe\u007f\x82\a\x80\b\x13ʸ\x90dE\xd5tôl\xc7\xf5\xfc \x8c\xe2$\xcd\xf2\xa2\xac\xea\xa6\xed\xfaa\x9c\xe6e\xdd\xf6\xe5j\xbd\xd9\xee\xf61e)j\xc4ul\x86$-=#3+;g\xae\xdcy\xf2\xe6\xcb\x0f \u00842.\xa4\xd2\xc6:\xae\xe7\aa\x14'i\x96\x17eU7m\xd7\x0f\xe34/\xeb\xb6\x1f\xe7u?/?\xfe\x00\x80w\xf0\x1d\x18\x02\x85\xc1\x11H\x14\xfa\xe6\xbc\xc7\xe2\xf0\x04\"\x89L\xa1\xd2\xe8\f&\x8b\xcd\xe1\xf2\xf8\x02\xa1H,\x91\xca\xe4\n\xa5J\xad\xd1\xea\xf4\x06\xa3\xc9l\xb1\xda\xec\x0e\xa7\xcb\xcd\xdd\xe3\xf9\xe5\x15\x00!\x18A1\x9c )\x9aa9^\x10%YQ5\xdd0-\xdbq=?\b\xa38I\xb3\xbc(\xab\xbai\xbb~\x18\xa7yY\xb7\xfd8/\xd7\xdb\x03@\x84\te\\H\xb2\xa2j\xbaaZ\xb6\xe3z~\x10Fq\x92fyQVu\xd3v\xfd0N\xf3\xb2n\xfbr\xb5\xdelw\xfb\x98\xb2\x145ɑd\x14U\xd3\rӲ\x1d\xd7\xf3\x01D\x98PƅT\xdaX\xc7\xf5\xfc \x8c\xe2$\xcd\xf2\xa2\xac\xea\xa6\xed\xfaa\x9c\xe6e\xdd\xf6\xe3\xbc\xee\xe7\x15\xc6o\xfe\x00\x02\xeb\a\x02C\xa008\x02\x89Bc\xb08<\xc1\xb8\xa2$+\xaa\xa6\x1b\xa6e;\xae\xe7\aa\x14'i\x96\x17eU7m\xd7\x0f\xe34/\xeb\xb6\x1f\xe7u\xbb?\x9e_^\x01\x10\x82\x11\x14\xc3\t\x92\xa2\x19\x96\xe3\x05Q\x92\x15U\xd3\rӲ\x1d\xd7\xf3\x830\x8a\x934ˋ\xb2\xaa\x9b\xb6\xeb\x87q\x9a]\x83\xa0:\xd1\f\x02\xeaEJ\x88\xb6\x12[\x105\xae\xc1\x89\xea\r\x16j\xb3O\xd2\xc6\xc4{_\x01\x13\x9a韊\xae\x02\xa6̃\x04\xc5-\x94v\xb2\tD\x8d+d\x9e6\x83\xe8\xcfzHN\x1b\xd2\x1fRx\x1f^-\x94\x05\xf9&\u038d{\xa7 Y\xe3\xd6,c\xea\xd5\x1f\xe1\xd3\xc8a\x8cg\xfd\xd3,\xa6\xda\xe0.\xb1\xaf\xa3\x1d(\xbda\x1b\xa7%\xe6щ\xe9X\xab\x90\x8d\xc7|\xee\xc4\x19Ng\xc0\x05\x0ef\xc6=\xdb_Ś\xa8c\x10ﭐ\x1b\xeco\r\xbbn\xbd=\x8e\x1du\vYE\xbc\x15\xec\xa4ؼ~\xc3i#sj\xc7B.q*\xfeqp\xbe\xefX\x94\xa3_u\x95|\x1d\xd3\xe7d\x81ɗϏ\x8dBq\xd2\xe9\x0eߦ\x18\xcb\xe3\x8cO\x9b\x97\xd7\xd5t\xa3\xaa{\xdb\x13\xd5\xe4\x8c\xe1>\x12\x8e\xb6\xada\x1c\x98i\f\x1c J\x99\xb4\xa5=\xc7\xdf\\S\x12o\xda^|\xc1\xa2\x03\x18q\xfb\xa0\xa6\xc5`\x1e2\xfb\xd3Kj2\xf1\n\x89Ө\xc1\xaaGg\xd649g\xe5\x01,\x85\xc1Ρ\xfd\xa7\xe8\xb3\x04\xbd\xb5\xb6\xc4\\\x00\x85\xef?e\x9e\x06\"\x8dL\xf3Xr\x84#\xce\x01'\x01\x83\xf9\x8f_\x93y\xa9\xf205\x8d\xf1\xaa\x8f/b\x94\xaaf+\x16\xb5\x1bCF*\xe4\xa7Jc:\xe3\xc6\xe8\xcd\xe4\x9e4\x18O\b\x15\n|\x19\x95\xdav;PR/\xde\x0f%\xb3\x9fv\x8b\x8c;VUT\xd3\xf5\xf2f\x12_\x8dI\xe9\xd6\xee4\xe0\xdd\x01\x12m\xfd7V㪂\x92\x99B&\x8a\xf8\xc6`\x92\x84\n\x94ޮ\x1aĺww\xf4.\xa9\xae\x81,\xe4c\xbf\xd4\xed\xd9_@,y\xb7\xe8\x1f\"\t=l\xd4\xe3(\x92AV\xf7\xd6̉trC\xe0\x9d$\x83D\xe2r`\xe8<\xd1ƄE\xd7z\xfb\xf2j\xc4\xd9\xfa\xba\n\xb5\x01\v\x15\x1c\xfc\x1a*\xce\xfd\xe9\x18\xb7\xb6\u0083\xa9;֫\xdds\x91\xd4M\xeeU\xc25 g'\x0fx>\xfb\xc7\xd9c\x99\xd4NR\x94\x8a\v1-\xdd\xd6i7\xdf'\xc9;l浪LB\xf5\xf2*\x11\x9d\xbe\x1c\x92 ]\xc4\a>\xfc\x88\xe0d\xf0?\xaeړ\x02\xdd6\xbe\xe5C\x87\x1dY;\u007fb\x94_\xab\xb9ƞ9P\xb6\xdfݳ>\xdf\xe6-\x92\xb8\x86\x82m֚\xd8I\a\xaeB\xaf\x88F\xa3\xb9\xa7\x01\xa5\x87}\x92Z3%\x9b\x02)\x9d)Xn^\xccM\xda\x1b\xf1q\r\x89\x834r9(\xe2Mm\xbf\xd45\f\xb5N\x99$v\x92\u007f\xa6o.XZ6\xf2U\xeb\x99\xd7a\x8fD\xcaE(\x14\x9eL!\x90K\fUg\xdcư\xd0\x05,\xe6Q\xa0\xd4z\xa3?'\xf7\x8c\xe3D\xa6\x80\xb0G'\xe6s\x17k`\xf5\xc1ƽ\xec\xbc-\xf7\xec\xdbx\x13׃\x9aZs5t\x84\xdeb\xc3f\xef \xa7\x1d\x8f~\x1fO%f\f\ts\x1a&ǿ\x15ϓ\x9f\xdd>I!\xf6\t\x8b|\xad\x16\xebA=\xbaxD\xa3\x863\x9d[\xf1\xebE\xd4_\x98v\x14G\x1e\xe8ȵ=J\xa46\x98\xb6\xe2\x93qڝ\x14>\xf4\x86I\xda\xfb\f\xa2\xd7<\xf5\xe5\xf7\x15r\x1a\xd4\xe7S\xbe-1\x06-&@\xcb\x0e\xc0\x18\xb7t\xa1\xe3\x99\x01\x9a\x00\x8c9ζ\x9d\xd26\xafG;q\xb8(\x87ݽ\r?\v\xd3\xf8\xeb\xeae\xd03\xc2\xdc\x0e\xb3\x88\x90\xb63*\x17p\x14Ƕ\xe2u\xe6-\xb8v\x1d\xbc\x8c\x03S\xff\xe5\xf5\xac\xa8\xe9n\x89\x19\f=\xd3zǤ\x94\xfa\xa2\xeeE\x90\x1bq\xa2a\xf1\xe0\v(\xf9>\x1dY\x05R^M#U\x8f\xe9t-p\xa1ĵ\xa9ݺ\xc8\u058c\xf1\xaa\x13g\xb9\xef\x84>H-j9|@?\xb7/\xb5m\x85F:g\xff\xfd\xcb\x04)\x8a4\x86\xaex\xc3Z\x85\xbe\xa6\x94W\x99=C\xfa\x1b\xf86)A\xbby\x91|\x16[I\xdb帑\xff\x8e\xfc\xad/\xeaߎq\x1e\xf5=]s\xcflP\xeb\xa2}\x9eLՑ\x81\x14\x80\xd2\x19\xc6\xd7bt\xd1ؒ\xcba\xc5\xc0w7\x9cO\xeb4zY\x03/9A#\x99h\xa0\x81\xf11)q\xc8ϙ':\xaf\x88f\xdf\xed\x86F`q:\x1f\x8b\xf5{\xfeL\xb0d\xfb\x0e\xad\xb5\x02\x94eL\x9f\x92v\x8d\x93\x9a\x195\xea\xc7V\x1fD\xe3\xfd\x1f\xe5\xfb[\x9e\xfc\xcd\xd75\x8d\x89\xa9_U\x80\xd2\x1f\r\xb4By\xacX\x88\xf0\x12\xce\xec\xf95\xc9\x1e\xf5\xe4\x83\x1d\xf7\xa5\xb7\xe7\xf7\xa4\xf1靴ħh]ơ\x8c]7\xef\xf0\x84\xf5_kܑ\xa9Y\xbd7nhi\xc2U:\xaa\xb8\x967ݸs\xf5\xc0\xdb\x1e\x1f\xd5.^kn\x10q\x1cW\x86)\xc52=߂\x89\x91\x00q\xba3=\xf8\r\u007f\x1d\xde\x1e\x05˛\xe7\u05fd\x17\xa6S\x96\xbe\x19\x1c\xfd\x84\xe4\x133\xdd\f\u007fz\xee©H\x0e\x12\xa7mn\x89O#\xfd\xa4\xb0z\x11\xd6-\xc6+2\xdd\x04\xda\x14\xfe\x94\xecVD\xbd\xc2\xf1\x89V\x9f\x85\xdc_àr\xadi\x1c7\xb4[$~$\x14\xfc!\x15+t\x81\n\x91\x9c=\xf6\xe4t1I\x9dJ\xdd!t\xa2\xd7\xc36\xbb\xcbԋ`I\xf2L\xd0u\x8f=\xae\x93(\x90 \xe3\xb7\xed\\\xe6U\xafΉ%\xd9i@\x96Dj\xe0\x1fIq\x82ҿ\xb6&H\x8d\xbf\x1bޟ\xad\xb5?+\xdfj]#Kj<\x19՚\xcc3\x0f\x0f?v\x87\x99\xcdի\x8c\x02N \xfbɑ\xc9ܐS\xa1\xcay\xabS\xbb\x13h\xd5\xe3 \x9d\x12E\x1c\xb8N[\x17\x96\xfa\x9aZO\x11\x1b\x8dJ\xc2$\x15\xe1\xb0\x1bJE\x9c\x98\x12*\xe5\x9cY\xe95\a\xaf8:V\xf5\xbf-n\xfb\x96\xacF\t\x04\x87\x97*E\U0008480d\x98\x16\xdcA\xaeW\xc8\xd3\x1e[\x9f\x8a\x15k\xbcrLb\xa5/\x18\x95|\f{\xd5[\xf6\x9f\xb0\x94\xc8\xe1\x88>\x83\x86\xf0\xbf\xe5\x93\xd0á\x9c\xd6\x04Ժ\xa0\xc6S\xaf\xa9\n\xc52I\"}\xec+@\xe9\xf3\xb9L(\x88\xe9\x0264\xc6H8\xa2\xb3ͱ\xb4n\xb4\fW\xc3\xf9\x9a\xeb\xef\x1e\x9eN:\u07b8/\x93Y\v\xea\x9bt\xc8=<\x9b\x1c\xb7\bT\xf37f\xaa\xff\xd7Z\xa4E??x\xcd\fw\xd2\v\xac\x99\xff#PS\xa1D\xf0\xca\xc9ֲ\xe4\x9ft\xf0\xeb\xc1\x12\xcce\xb4S;\x0e\xbf\x96\xf0i\xa4\x16\xedAڏ/\xd2jU\xe7\xf7\x1f\xc0n\x86^\xf5<\xee\x01w\x8f\xaf~\x13V\x89\xdb\x05\x8f]\x17\xb2\x85\xf8\xa1t~\x1c`C\xa6\x87c\xa8\x91fc\xe9\xa1{\x18\x8a\x12Z~'\xdaH\xc3H\x0e\x00\xad\xb2\x1c\xb7q\x8bT)\x97\xe9llŬ\xaaM?\rS\u007fQ\xd3\x196&kh\x86vIҌ\x17\x10#\xfdS\x97\x05\x1cC\x9dZ\xf7\x10ry\xdf\x14\xab\xd9\xe7!\xdb\u007f\t\xfd\x18\xe94\u05eb\v\x1c\x90\x92\xc1\xaf\x82\xb2\xd8\xcdS\x13\xe4E\xd2@݅\xeb\r?\x80U\x0fk\x06\xd6W3\xf2#\xb0\xbbm\xe4\x9d\xc3V\xc7\xfc\xc5\xc5\xf6E\x06\xda\"\x99\x05\xce\"\xe9\x9b[d@)\x81\xb3\xa5\n\\\xa6Z\xe2\x03u\\X\x98\xe9\u007f\xe9\xb4b^\xde\x04\x938$W\xb7q\xf7\n\xbb\xfd\x1f1l\x03E\x84\tkѼ*\r\xca\xccvq-ǀQ?/.\xfbs\xecEb\x85\x01\xb3V\xe9C\xfd\xac\xdf#U\xa0\xf4\x81G¶\xd2\xe3.\xf1\xb0\x0fV=>\xe8q\x9d\xab\xd6}\x9bP\xe4\x14p\xc7H\x97X\xccZ\xb9\xa5k+6\xe6ؘ\x94X8&E\xe90\xec\xa7~\xa7%\xf3;\xb2G\x9e\x17x\x8c*T\x90G\xbd\xa0i\x1c\xe3[#\r\x81n28\xe0\x96C\xc1\f\xcd\x11\xab\xc0\x03+\xce\xe7\xec~\xd5k\x81\x18\xc8E\xf4\u007fx8\x8f\xfe\x9d\xe2|;'\x15d\x98\x92\xed\xaf\x88\xff:b\nC?J\x9f\xdb-\xae(9 \u007ft(\x13l0px苚\x9a0\xebs\xeb\xdc\xef\x93o\xe24x9\r:{zrP\x17ox'\xc9\x1dǀ\xc8\xf0]\xa5%Ac\x04\xf14V3\xa7\xc0\xeb\x98\xd4\xde\xd9iu\xc5\xe2\x01\x88\u05cf\x88B\x9c.\xa5\xa6\x00zc\x85\xb8\xd2+\xc6~\xa7\xe2&\xfb\x86\x03\xf9cԈ\xc2М\xad\x06\x98\x92\xbf\xb48\x8fZ\x18FO\x87ae<8\x8a\x16\x9e\x9c\xd9\x1f\xe64\xb3\x99\x83\x04\x99\xcd\xeby\xc0\xb2\xb5\x1eS`Ҩi\x1cɯ\xfaA\u007f\xe5\xc0\x8d\xe8|,\xf1\x91s\u007f\xe2\xd7D\xf2\xb5-\u05ed\xd7ޟOb^\xcc\xf5Ε\xa1\x9b_\xdf/jrǍ.Ȏ\xdb\xf0\xeb\x92R\xf1\xa8\xe9mV\xac\x99\xe7Z\xf9\x1a\xa0(R\xecq\xccL\xd7U\b\x9eE\x9a\vY\xcfe\xaeV\xba\xb1\xff\x04\x18%\xfbֱ_/\x04S\x89\xc8\r\xb7J/8\xecd\xb2\a9Sv\x1e\xba\x87_\xfe\x94\xf9\xa0\xc2,\xd5\xc8n:0\xa8\x99\xafe=\a,џ\x94T8vێ\xaf\x00\x92M٤\xe6\xf91gC\x15\xa2\xacG\xa0\x19\xf7\xfdYyb|\xf8\xbaN=v\xb2+|Mm\x82\x99<\xa4\x98\xed7\x8b\xcd\xff\x9e\x80\xed\xce\xf4\x9f\xc7H\x00\xf7ɪ\x91ҩd\v\xa2H\x94\x98\x95\xbd\xc3Q\xdf`\xae\xc3]\xb5\x04u\x14\xb7\xd2&\x1eY\xd3\x1c!\x87\xd54\x1b.\x94֊\xdc\xf6\xda\t\xab\xc3\xff_\x16\xae~`)\x8b\xe7\x02\xee\x94\xdam\tPPx\u007f\xf1\x19\xd7V-\xe8Ԩ\xdf$\x82]7\xd4\xee\xf8\x19JP\xb9:\xbf\x0e\xf3\xfbLa\xe2ڲ\u0383\x93\x9f`\xab%\xa1\x18\xd7\xd3\t\x1a\xf0wrNփ\t\x04\xaaט\xca\xf9\x02\x86l\xed\xd2\xf3Y%,\x9fN=H\x89\xc5\x18jGh>;pM\xdbJ\xe1\xa0\x05\x03\xc9\xc34\xdeӘC\xa9\xf0{-'\x10Nˢ\x8f\x99]\x02\x10b\xde\x1b \x8de\xc1\xbf\xf0t\xad\x82\xa7\x8fHJlw4\xeb\xa1\xdes\x1e6\x95\xb6\x17\x9f\xc7y\xabB%\xc4%3Q\f:\x03.\xa1\xd9Q\x11\xa1\xbbؓ\xfc\x17\xc2X\xe4\x1b4\x8a2\x16\xf4\xb2\x85\xbc1t\x15a\x8f\xec\xfc\x81_\xc8|#~\x0fq\xe1u\x9c\x90S\f2\x1b_o\xe5\xc1UQBVC\xf9C\x1a³\xea>J o\xcd$\xf4\xb3\xdb\x03\x8a\x18W\xd2V\xe2\xd4\xf8\xfa\xbd\"ƙ\xf6\xc0蠲\xd8H\xd5OX\xbd\xbf4\xaaH\xc38\x98\xde\xdb\xef\xf3\xa9}\xe6\x1d4\xfa>\xe8ψ\xa2\x9f\x1e\xd7\u05f5N\xeaZ\xb1\x05\xa34졠o\xb3m\xcf'\xb2uF\xf4\x95\xb4\xb1\xaa\xb9\xef0\xc8ޏ\xee\xd55\x92ͽ\b\xc1\xc4:\x94\x9f\x80\x84\xacoctr\x89\xf5p\xd2\xe1\xabO\x01\x96\xa6a\xd2\xec\f뱥\xe7\xfe.\xda\xe0^\xf5\xfa7Y@_G\xf8!\x06nv\xf1\xa6\xdf0\xa42\xa6c$\x97\xf0c\x0f\xf1\xc5\xe1\xb1?`Z\x97`r'\"\xb4\xf5\xee7&5\x928fzdU\xf0\xfd@*̊{\xb7\x18\xa9\x1c\x1e\x96\x9f\xd5\xf9\xb1f\xd2\xfb\x0e ޟE(}\x05wqk\xf9[ő\x93\n\x87\xea\\\xe7^\xd8\xd6Zy¦\xf4IZ\xd2\xea&D%p(TY\xc0\xd3\xc9\x14\xcaH&\x81!A)\xc2\xf5\x96@\xe9-\x96\x12\xee\x93\xfeVj=>\xf8\"\xeeʕ\x9f\xf5O[\xe7ZԻ\v\xbePo\xc9l&\x0f4\xb2^ր\x97\xf5\xc1+\xd0b\xb4@W\xd440\xe2f\xe6\xdfnf\xfe-\xa4 \xad\xa9kؒ\x83\x8eY\xe8\xb8M4\xce\x13\x88\xe0\xb3\x182CͯWՋ\xe3\xe6X\xf8.\x96XH3\x81\x15q\xb2n\x85\xa6?9`y6\xb7\xaa\xc4/\xfc\xa82{F1\xbcwV<֠\xfa\xfb\xf7\xfa\xd2\u0097\x97\x98\xe1:5\x8dֹ/\xab]\x00\x8b\x88\x0f\x94\x89\xf2\x90\x993\x1d~J\\1\x86\xb8*\"'\xaf\xa1ݎ\xaa>\xf9\xc6q\x1c\x9a?\xdex\xd7\x12\xe9wl\x80\xe5G~\x1f\xb7\xf0}y\x9f\xa1\x1b\xaa\xe8\xa7ҍ(\xc0\xd1\x1bpxX\x95@\xab\x1c\xc9\x05ɤ\xef\x90@?[;\xcb\xd3VJ#\xa6\x88-\xa8\xf3ۅ\x86\xaa\x06\xe2\xd8\xf3\x80\x1e\xb4D\xbc\a\xa8搴q\xbe\xe5Y\xb0\xebUv\x8c\xd4\x10G\xfa\x15\x120nN3q\u007f\x8c\xeb\x01WB\x9f\xc2\xc8\xf9\r۟\xc0\xf3\xc9J\xff\xf6JPD\xad\x00\x8f\xac\xb5\xc3\x18\x9a~\xf3\xb2\xe4\x93~\xf6,[\xc7\xd7!p{Z\b\u0602\x17>h_.a\xfe\x1b\xbawŕ\x81һ\xe0\\#\x9f\\yelyz\xe7v\xa8~\x06R&\x0e\x1f\xd7e\xec\xebذ\xa2O\x8a[x\x10-_}\x988\xf3:\xae\xf1\xa41\xefhNY\x1c\x9c\x1b\xa7\xd29c\x96i!w\x9e\xadH\xf7\x1d\xb6/\xf4^\x82\x86`B\x1e\x82+p\xa2l_#o\x99\x81\xdd;jw\xb2>,\xe7N\xe2KX\x1d\x15\x92\xe6L3J\x03\xa9^\"i\x9f0;\xaa\xfa\x90\x140H\xbc\xba\xe1أ\xe7\xacm w\x90\x8b\xadi.Piy#?BӔ\a\xaa\x9f\xca\xcfO\x8f3; \x81\xd4\xd5\xfb\xe9\"r\x0f\xc4\xe9NÁ\ftʄ1\xd4E~\x829o\x8f\x82\x10\xdfз\xc3\xe4\xeaq\x1d0\xd5~t\x81\x04,\u070fʼnDQ-\xe6\x1a\xe0%\xeeף\xf5\xd0b4B\xb7\x0296\xbbõ\xec;\xe9\xe2߭H\x86t層\xaaܱ\xa4\x94B\xb9\xfaz\uf680\x02͏\xebr\x18\xbd\xaa\x81aܕ \x01\xdeUE\xf2\x1d\x14`[\xbf?I\xc1\x8al%!\x1dh\x1e\xcaX\xb9\xa1Uwv\xe5\xd2$V\v\x8b\x98\x04\xe9$\x16\xe9\xa4sNL>\xb3\xbc\x88a\x9f\x90\xc2ʷT\x80\x12}I\xa0\xe6\xfb=\x00\v\xbdT\x19UJq{?\x9b\xb5\xf0\x03i\xber\x95ɹ\x80\xc8!\xf1\xe5\xa5Td\xeay \xf2\xe8N\xf9\xe1\xee\x15\xc3>Ҥ\xeb\xd1\"\xf0 \x9bkt\x9f\xf7\x01\xa6^\x14\x8a\xe4\xeb\xb8F~\x90Y*d\xe4>\x01\xdbl\xa9\xc2\u05ebDh\tL}\xfaS\xc3bN\xfa6Rq;\x8f\u007fhohlk`=\x99\x16n+\":\xcbک\x11d\xd6\a\x1f\xa7\x98Q\x1f_\xca\xc2\"\x14\x96\xb4\xed\xf3\x0e\xd4\x1d㊛⏕\xa1\t\x8a\u007f|vE\"HRS`v\xe6i\x8b\xb5\x88^\aWz{]\xf7q*\xee\xc1\xb1\x1b\x06Ɗ\xa5\xf90\x95\xfbǧ!\xf9`7\n\xb3\x85/\xf0\x89\xed7P\x12\xf6\xd3\xf9\xbb\xbe\xa3nC\xa00p\xf3\xd6\x05\xa5*\xaem\xd8\xfe\xff\xa4\u007f\xde\xe3\x9e0\xc7\x17jA)\xb6\a\xdbR\xea+\x13\xa06\xb7\xbfV[\xcbѤ\x99\xdbU\x1a\xfc\r9\x8b\xc5C\xf0\xbb\x1b$Y\xf8\xb5\xa2,\x1f\x19\xb0\xba`!\xee\xac9;\xc0q\xb3\x87\x8b\xc0u5\t\xe5\xf7k\x9bI#\x81\x14Yl\xe6\xfcE\xee\xadx\x974\xe0.\x98k>)T\xae\xf5\xd1y\x9eR\xa0é=ZQ\xf13\x83\xe7\x88v\xea\xff$\xf0\aɋ\"(\x81\rRuPW\xd8w\x14\xecG\xd6zJ\xba\t<\xa0\xf2\xc6hTO\x86\xab\f\xbb\fZ\xa0ZQ\u007f\xfe\x97m\xf6\xff\xfb\xcf9\xb7Z\x98\xabܵ\xce\xddN\x88rwN\xa7-\x99\xaa \xea\xdf-\xe7{\xfa\xbbc\x0e\v\xc5(\x85\x1eռu\xec;i\xef\x90s+\xb8\x8e\x0e\x87\x8b\xf5\xbd\xacֵ\x15\xc9\xc1u\x1c5\xb8\xd5h\xd6Z\xf6\x04Ŏ\x99:\xaf\xeb-\x05\x1bҕ\xbd#\xa3?\x16Y\x1e\xfa\xa7\xea\x06\xb7\xe1\xdb\xefB\xfbv\xabE\x8a\xe4\x16\x9bV\xe6/\x98#\x81\x04_ɳ\nY\x8bY\x12\xe9\\.L\x8eA\xcaN\xb2'\xaa\xaa\xf3}\xc6\xf8ש\x94\xe6S&\x1d\xc2\xe2\xaa\xe6J\xd2d+\xd2\xd1Խ\xaa<\xa2\x1b澚\x9b\x82\x85\"5\t;\xf5\xeb\xa1\xcd\xea\x02\x03'\xbe\xaf{\xed\xe2\xe9>\xbdr\xafQ\xd1\xfbο\xfd\xf6\x89mЩ\xea\x9cT\xd3\v\xf7\xa8\xbe\x0e\xe9\nXU\xf7.\xc3v\xcf\xfa\x19\x17\x8f\xf3Ʌ\vL\xc3Q\xf3Wq\xdf!O\xfe8\xe0\xca\xeb\xe3`\xdf\xe9O\u007f\xec\x04\u007f\xc4p\xe1\x16\xb4\xf4\xf3ZV\xa8\u007fmS0\xd3\xc0\xaa+\xbe\x8e\x1b\x1aΚ{\x1fL(\xae%0\xf3\x92\xb6Q )SZ\xa8\xbdЮN{([a1\x17s\xd2_LC×ʽ\xf6~\x9c0\x97\xcd+\x03\x93R\xdf\xd6J*\xe4\xa1\xeb\xe56\xb3\xe2F\t\"\xb5%\xd0|\xa3\xd8F\x17\x88\xa9o\xad\xf5\xa0Q\xe0o2%d\xbf;\x1f\x00\xae\xef]\x1cu\x16\u070f\x03\xae\xba\x91L\xa4\x98/\xb3\xa0z\x8d$\xf6w\v\x9c\x98\xba\xb1\x95\xc8da\t\xe4w\x94\xde\xdf\xe9\xe0\xfa\tE\xc9\xd4R\xefO\x0f\xe5\xcaָ{\xdf\x19ۇ\xd2\x03#V\x99\x1b;\xb3C\xdc~\xe2\"L\x80,\x91Z\x06\t \xdf\xf1\"%&r\xb6\xcdÃ-\xaf\xe0\xf4\xb8\xde\xdac\x1e\x1c\xfb\xf3\xd4Lj\xf27\x86Rb\x02\x18:\xd83\xa0\xaf\n\u07ba=\xd5<\x8c\x8d@\x8ap\xbf\v1v\xb5~!\x91I\xc7\xe4q\x98-)\x9f\xf2币\xc51\x16t\x95᳝ߡ,P\x9a\xe4uO\xab\xd1dt\xb1^%\x92yFqd\xab\x1b\x87\xb4\x92\xee\xa6\x1e\v\xcd\xe3<\xd6\xc5]\x85\x17H\x18[\x15\x1b\f\xbc\x8e\xaf\x1e*\x1c\xe9Kx\xed\xbe{\xb7\x96Ž\xbe\t̺\xa3\xff\xba\\)\xcfnq\xbb\xc2Q俹^a\xf9\x01?4M\xf4\xbf\xbb`a\x1a\xf5놅iÄI\xcc\xfa\xa4\x1c\f\x88\u008e\x85٦\x10\xfaXq=v\xa8b\xc8\xd0\xdd\xf3\xd6\xe6\xc5X5\xc1\x91\\\xdc\t\x14\xdf(]\x15\x16&\x05\x00\x00\x00" var _Assets0f3873af67026ef9adff5293b531a01d11ae6c96 = "/*!\n * Font Awesome Free 5.12.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:\"\\f26e\"}.fa-accessible-icon:before{content:\"\\f368\"}.fa-accusoft:before{content:\"\\f369\"}.fa-acquisitions-incorporated:before{content:\"\\f6af\"}.fa-ad:before{content:\"\\f641\"}.fa-address-book:before{content:\"\\f2b9\"}.fa-address-card:before{content:\"\\f2bb\"}.fa-adjust:before{content:\"\\f042\"}.fa-adn:before{content:\"\\f170\"}.fa-adobe:before{content:\"\\f778\"}.fa-adversal:before{content:\"\\f36a\"}.fa-affiliatetheme:before{content:\"\\f36b\"}.fa-air-freshener:before{content:\"\\f5d0\"}.fa-airbnb:before{content:\"\\f834\"}.fa-algolia:before{content:\"\\f36c\"}.fa-align-center:before{content:\"\\f037\"}.fa-align-justify:before{content:\"\\f039\"}.fa-align-left:before{content:\"\\f036\"}.fa-align-right:before{content:\"\\f038\"}.fa-alipay:before{content:\"\\f642\"}.fa-allergies:before{content:\"\\f461\"}.fa-amazon:before{content:\"\\f270\"}.fa-amazon-pay:before{content:\"\\f42c\"}.fa-ambulance:before{content:\"\\f0f9\"}.fa-american-sign-language-interpreting:before{content:\"\\f2a3\"}.fa-amilia:before{content:\"\\f36d\"}.fa-anchor:before{content:\"\\f13d\"}.fa-android:before{content:\"\\f17b\"}.fa-angellist:before{content:\"\\f209\"}.fa-angle-double-down:before{content:\"\\f103\"}.fa-angle-double-left:before{content:\"\\f100\"}.fa-angle-double-right:before{content:\"\\f101\"}.fa-angle-double-up:before{content:\"\\f102\"}.fa-angle-down:before{content:\"\\f107\"}.fa-angle-left:before{content:\"\\f104\"}.fa-angle-right:before{content:\"\\f105\"}.fa-angle-up:before{content:\"\\f106\"}.fa-angry:before{content:\"\\f556\"}.fa-angrycreative:before{content:\"\\f36e\"}.fa-angular:before{content:\"\\f420\"}.fa-ankh:before{content:\"\\f644\"}.fa-app-store:before{content:\"\\f36f\"}.fa-app-store-ios:before{content:\"\\f370\"}.fa-apper:before{content:\"\\f371\"}.fa-apple:before{content:\"\\f179\"}.fa-apple-alt:before{content:\"\\f5d1\"}.fa-apple-pay:before{content:\"\\f415\"}.fa-archive:before{content:\"\\f187\"}.fa-archway:before{content:\"\\f557\"}.fa-arrow-alt-circle-down:before{content:\"\\f358\"}.fa-arrow-alt-circle-left:before{content:\"\\f359\"}.fa-arrow-alt-circle-right:before{content:\"\\f35a\"}.fa-arrow-alt-circle-up:before{content:\"\\f35b\"}.fa-arrow-circle-down:before{content:\"\\f0ab\"}.fa-arrow-circle-left:before{content:\"\\f0a8\"}.fa-arrow-circle-right:before{content:\"\\f0a9\"}.fa-arrow-circle-up:before{content:\"\\f0aa\"}.fa-arrow-down:before{content:\"\\f063\"}.fa-arrow-left:before{content:\"\\f060\"}.fa-arrow-right:before{content:\"\\f061\"}.fa-arrow-up:before{content:\"\\f062\"}.fa-arrows-alt:before{content:\"\\f0b2\"}.fa-arrows-alt-h:before{content:\"\\f337\"}.fa-arrows-alt-v:before{content:\"\\f338\"}.fa-artstation:before{content:\"\\f77a\"}.fa-assistive-listening-systems:before{content:\"\\f2a2\"}.fa-asterisk:before{content:\"\\f069\"}.fa-asymmetrik:before{content:\"\\f372\"}.fa-at:before{content:\"\\f1fa\"}.fa-atlas:before{content:\"\\f558\"}.fa-atlassian:before{content:\"\\f77b\"}.fa-atom:before{content:\"\\f5d2\"}.fa-audible:before{content:\"\\f373\"}.fa-audio-description:before{content:\"\\f29e\"}.fa-autoprefixer:before{content:\"\\f41c\"}.fa-avianex:before{content:\"\\f374\"}.fa-aviato:before{content:\"\\f421\"}.fa-award:before{content:\"\\f559\"}.fa-aws:before{content:\"\\f375\"}.fa-baby:before{content:\"\\f77c\"}.fa-baby-carriage:before{content:\"\\f77d\"}.fa-backspace:before{content:\"\\f55a\"}.fa-backward:before{content:\"\\f04a\"}.fa-bacon:before{content:\"\\f7e5\"}.fa-bahai:before{content:\"\\f666\"}.fa-balance-scale:before{content:\"\\f24e\"}.fa-balance-scale-left:before{content:\"\\f515\"}.fa-balance-scale-right:before{content:\"\\f516\"}.fa-ban:before{content:\"\\f05e\"}.fa-band-aid:before{content:\"\\f462\"}.fa-bandcamp:before{content:\"\\f2d5\"}.fa-barcode:before{content:\"\\f02a\"}.fa-bars:before{content:\"\\f0c9\"}.fa-baseball-ball:before{content:\"\\f433\"}.fa-basketball-ball:before{content:\"\\f434\"}.fa-bath:before{content:\"\\f2cd\"}.fa-battery-empty:before{content:\"\\f244\"}.fa-battery-full:before{content:\"\\f240\"}.fa-battery-half:before{content:\"\\f242\"}.fa-battery-quarter:before{content:\"\\f243\"}.fa-battery-three-quarters:before{content:\"\\f241\"}.fa-battle-net:before{content:\"\\f835\"}.fa-bed:before{content:\"\\f236\"}.fa-beer:before{content:\"\\f0fc\"}.fa-behance:before{content:\"\\f1b4\"}.fa-behance-square:before{content:\"\\f1b5\"}.fa-bell:before{content:\"\\f0f3\"}.fa-bell-slash:before{content:\"\\f1f6\"}.fa-bezier-curve:before{content:\"\\f55b\"}.fa-bible:before{content:\"\\f647\"}.fa-bicycle:before{content:\"\\f206\"}.fa-biking:before{content:\"\\f84a\"}.fa-bimobject:before{content:\"\\f378\"}.fa-binoculars:before{content:\"\\f1e5\"}.fa-biohazard:before{content:\"\\f780\"}.fa-birthday-cake:before{content:\"\\f1fd\"}.fa-bitbucket:before{content:\"\\f171\"}.fa-bitcoin:before{content:\"\\f379\"}.fa-bity:before{content:\"\\f37a\"}.fa-black-tie:before{content:\"\\f27e\"}.fa-blackberry:before{content:\"\\f37b\"}.fa-blender:before{content:\"\\f517\"}.fa-blender-phone:before{content:\"\\f6b6\"}.fa-blind:before{content:\"\\f29d\"}.fa-blog:before{content:\"\\f781\"}.fa-blogger:before{content:\"\\f37c\"}.fa-blogger-b:before{content:\"\\f37d\"}.fa-bluetooth:before{content:\"\\f293\"}.fa-bluetooth-b:before{content:\"\\f294\"}.fa-bold:before{content:\"\\f032\"}.fa-bolt:before{content:\"\\f0e7\"}.fa-bomb:before{content:\"\\f1e2\"}.fa-bone:before{content:\"\\f5d7\"}.fa-bong:before{content:\"\\f55c\"}.fa-book:before{content:\"\\f02d\"}.fa-book-dead:before{content:\"\\f6b7\"}.fa-book-medical:before{content:\"\\f7e6\"}.fa-book-open:before{content:\"\\f518\"}.fa-book-reader:before{content:\"\\f5da\"}.fa-bookmark:before{content:\"\\f02e\"}.fa-bootstrap:before{content:\"\\f836\"}.fa-border-all:before{content:\"\\f84c\"}.fa-border-none:before{content:\"\\f850\"}.fa-border-style:before{content:\"\\f853\"}.fa-bowling-ball:before{content:\"\\f436\"}.fa-box:before{content:\"\\f466\"}.fa-box-open:before{content:\"\\f49e\"}.fa-boxes:before{content:\"\\f468\"}.fa-braille:before{content:\"\\f2a1\"}.fa-brain:before{content:\"\\f5dc\"}.fa-bread-slice:before{content:\"\\f7ec\"}.fa-briefcase:before{content:\"\\f0b1\"}.fa-briefcase-medical:before{content:\"\\f469\"}.fa-broadcast-tower:before{content:\"\\f519\"}.fa-broom:before{content:\"\\f51a\"}.fa-brush:before{content:\"\\f55d\"}.fa-btc:before{content:\"\\f15a\"}.fa-buffer:before{content:\"\\f837\"}.fa-bug:before{content:\"\\f188\"}.fa-building:before{content:\"\\f1ad\"}.fa-bullhorn:before{content:\"\\f0a1\"}.fa-bullseye:before{content:\"\\f140\"}.fa-burn:before{content:\"\\f46a\"}.fa-buromobelexperte:before{content:\"\\f37f\"}.fa-bus:before{content:\"\\f207\"}.fa-bus-alt:before{content:\"\\f55e\"}.fa-business-time:before{content:\"\\f64a\"}.fa-buy-n-large:before{content:\"\\f8a6\"}.fa-buysellads:before{content:\"\\f20d\"}.fa-calculator:before{content:\"\\f1ec\"}.fa-calendar:before{content:\"\\f133\"}.fa-calendar-alt:before{content:\"\\f073\"}.fa-calendar-check:before{content:\"\\f274\"}.fa-calendar-day:before{content:\"\\f783\"}.fa-calendar-minus:before{content:\"\\f272\"}.fa-calendar-plus:before{content:\"\\f271\"}.fa-calendar-times:before{content:\"\\f273\"}.fa-calendar-week:before{content:\"\\f784\"}.fa-camera:before{content:\"\\f030\"}.fa-camera-retro:before{content:\"\\f083\"}.fa-campground:before{content:\"\\f6bb\"}.fa-canadian-maple-leaf:before{content:\"\\f785\"}.fa-candy-cane:before{content:\"\\f786\"}.fa-cannabis:before{content:\"\\f55f\"}.fa-capsules:before{content:\"\\f46b\"}.fa-car:before{content:\"\\f1b9\"}.fa-car-alt:before{content:\"\\f5de\"}.fa-car-battery:before{content:\"\\f5df\"}.fa-car-crash:before{content:\"\\f5e1\"}.fa-car-side:before{content:\"\\f5e4\"}.fa-caravan:before{content:\"\\f8ff\"}.fa-caret-down:before{content:\"\\f0d7\"}.fa-caret-left:before{content:\"\\f0d9\"}.fa-caret-right:before{content:\"\\f0da\"}.fa-caret-square-down:before{content:\"\\f150\"}.fa-caret-square-left:before{content:\"\\f191\"}.fa-caret-square-right:before{content:\"\\f152\"}.fa-caret-square-up:before{content:\"\\f151\"}.fa-caret-up:before{content:\"\\f0d8\"}.fa-carrot:before{content:\"\\f787\"}.fa-cart-arrow-down:before{content:\"\\f218\"}.fa-cart-plus:before{content:\"\\f217\"}.fa-cash-register:before{content:\"\\f788\"}.fa-cat:before{content:\"\\f6be\"}.fa-cc-amazon-pay:before{content:\"\\f42d\"}.fa-cc-amex:before{content:\"\\f1f3\"}.fa-cc-apple-pay:before{content:\"\\f416\"}.fa-cc-diners-club:before{content:\"\\f24c\"}.fa-cc-discover:before{content:\"\\f1f2\"}.fa-cc-jcb:before{content:\"\\f24b\"}.fa-cc-mastercard:before{content:\"\\f1f1\"}.fa-cc-paypal:before{content:\"\\f1f4\"}.fa-cc-stripe:before{content:\"\\f1f5\"}.fa-cc-visa:before{content:\"\\f1f0\"}.fa-centercode:before{content:\"\\f380\"}.fa-centos:before{content:\"\\f789\"}.fa-certificate:before{content:\"\\f0a3\"}.fa-chair:before{content:\"\\f6c0\"}.fa-chalkboard:before{content:\"\\f51b\"}.fa-chalkboard-teacher:before{content:\"\\f51c\"}.fa-charging-station:before{content:\"\\f5e7\"}.fa-chart-area:before{content:\"\\f1fe\"}.fa-chart-bar:before{content:\"\\f080\"}.fa-chart-line:before{content:\"\\f201\"}.fa-chart-pie:before{content:\"\\f200\"}.fa-check:before{content:\"\\f00c\"}.fa-check-circle:before{content:\"\\f058\"}.fa-check-double:before{content:\"\\f560\"}.fa-check-square:before{content:\"\\f14a\"}.fa-cheese:before{content:\"\\f7ef\"}.fa-chess:before{content:\"\\f439\"}.fa-chess-bishop:before{content:\"\\f43a\"}.fa-chess-board:before{content:\"\\f43c\"}.fa-chess-king:before{content:\"\\f43f\"}.fa-chess-knight:before{content:\"\\f441\"}.fa-chess-pawn:before{content:\"\\f443\"}.fa-chess-queen:before{content:\"\\f445\"}.fa-chess-rook:before{content:\"\\f447\"}.fa-chevron-circle-down:before{content:\"\\f13a\"}.fa-chevron-circle-left:before{content:\"\\f137\"}.fa-chevron-circle-right:before{content:\"\\f138\"}.fa-chevron-circle-up:before{content:\"\\f139\"}.fa-chevron-down:before{content:\"\\f078\"}.fa-chevron-left:before{content:\"\\f053\"}.fa-chevron-right:before{content:\"\\f054\"}.fa-chevron-up:before{content:\"\\f077\"}.fa-child:before{content:\"\\f1ae\"}.fa-chrome:before{content:\"\\f268\"}.fa-chromecast:before{content:\"\\f838\"}.fa-church:before{content:\"\\f51d\"}.fa-circle:before{content:\"\\f111\"}.fa-circle-notch:before{content:\"\\f1ce\"}.fa-city:before{content:\"\\f64f\"}.fa-clinic-medical:before{content:\"\\f7f2\"}.fa-clipboard:before{content:\"\\f328\"}.fa-clipboard-check:before{content:\"\\f46c\"}.fa-clipboard-list:before{content:\"\\f46d\"}.fa-clock:before{content:\"\\f017\"}.fa-clone:before{content:\"\\f24d\"}.fa-closed-captioning:before{content:\"\\f20a\"}.fa-cloud:before{content:\"\\f0c2\"}.fa-cloud-download-alt:before{content:\"\\f381\"}.fa-cloud-meatball:before{content:\"\\f73b\"}.fa-cloud-moon:before{content:\"\\f6c3\"}.fa-cloud-moon-rain:before{content:\"\\f73c\"}.fa-cloud-rain:before{content:\"\\f73d\"}.fa-cloud-showers-heavy:before{content:\"\\f740\"}.fa-cloud-sun:before{content:\"\\f6c4\"}.fa-cloud-sun-rain:before{content:\"\\f743\"}.fa-cloud-upload-alt:before{content:\"\\f382\"}.fa-cloudscale:before{content:\"\\f383\"}.fa-cloudsmith:before{content:\"\\f384\"}.fa-cloudversify:before{content:\"\\f385\"}.fa-cocktail:before{content:\"\\f561\"}.fa-code:before{content:\"\\f121\"}.fa-code-branch:before{content:\"\\f126\"}.fa-codepen:before{content:\"\\f1cb\"}.fa-codiepie:before{content:\"\\f284\"}.fa-coffee:before{content:\"\\f0f4\"}.fa-cog:before{content:\"\\f013\"}.fa-cogs:before{content:\"\\f085\"}.fa-coins:before{content:\"\\f51e\"}.fa-columns:before{content:\"\\f0db\"}.fa-comment:before{content:\"\\f075\"}.fa-comment-alt:before{content:\"\\f27a\"}.fa-comment-dollar:before{content:\"\\f651\"}.fa-comment-dots:before{content:\"\\f4ad\"}.fa-comment-medical:before{content:\"\\f7f5\"}.fa-comment-slash:before{content:\"\\f4b3\"}.fa-comments:before{content:\"\\f086\"}.fa-comments-dollar:before{content:\"\\f653\"}.fa-compact-disc:before{content:\"\\f51f\"}.fa-compass:before{content:\"\\f14e\"}.fa-compress:before{content:\"\\f066\"}.fa-compress-alt:before{content:\"\\f422\"}.fa-compress-arrows-alt:before{content:\"\\f78c\"}.fa-concierge-bell:before{content:\"\\f562\"}.fa-confluence:before{content:\"\\f78d\"}.fa-connectdevelop:before{content:\"\\f20e\"}.fa-contao:before{content:\"\\f26d\"}.fa-cookie:before{content:\"\\f563\"}.fa-cookie-bite:before{content:\"\\f564\"}.fa-copy:before{content:\"\\f0c5\"}.fa-copyright:before{content:\"\\f1f9\"}.fa-cotton-bureau:before{content:\"\\f89e\"}.fa-couch:before{content:\"\\f4b8\"}.fa-cpanel:before{content:\"\\f388\"}.fa-creative-commons:before{content:\"\\f25e\"}.fa-creative-commons-by:before{content:\"\\f4e7\"}.fa-creative-commons-nc:before{content:\"\\f4e8\"}.fa-creative-commons-nc-eu:before{content:\"\\f4e9\"}.fa-creative-commons-nc-jp:before{content:\"\\f4ea\"}.fa-creative-commons-nd:before{content:\"\\f4eb\"}.fa-creative-commons-pd:before{content:\"\\f4ec\"}.fa-creative-commons-pd-alt:before{content:\"\\f4ed\"}.fa-creative-commons-remix:before{content:\"\\f4ee\"}.fa-creative-commons-sa:before{content:\"\\f4ef\"}.fa-creative-commons-sampling:before{content:\"\\f4f0\"}.fa-creative-commons-sampling-plus:before{content:\"\\f4f1\"}.fa-creative-commons-share:before{content:\"\\f4f2\"}.fa-creative-commons-zero:before{content:\"\\f4f3\"}.fa-credit-card:before{content:\"\\f09d\"}.fa-critical-role:before{content:\"\\f6c9\"}.fa-crop:before{content:\"\\f125\"}.fa-crop-alt:before{content:\"\\f565\"}.fa-cross:before{content:\"\\f654\"}.fa-crosshairs:before{content:\"\\f05b\"}.fa-crow:before{content:\"\\f520\"}.fa-crown:before{content:\"\\f521\"}.fa-crutch:before{content:\"\\f7f7\"}.fa-css3:before{content:\"\\f13c\"}.fa-css3-alt:before{content:\"\\f38b\"}.fa-cube:before{content:\"\\f1b2\"}.fa-cubes:before{content:\"\\f1b3\"}.fa-cut:before{content:\"\\f0c4\"}.fa-cuttlefish:before{content:\"\\f38c\"}.fa-d-and-d:before{content:\"\\f38d\"}.fa-d-and-d-beyond:before{content:\"\\f6ca\"}.fa-dashcube:before{content:\"\\f210\"}.fa-database:before{content:\"\\f1c0\"}.fa-deaf:before{content:\"\\f2a4\"}.fa-delicious:before{content:\"\\f1a5\"}.fa-democrat:before{content:\"\\f747\"}.fa-deploydog:before{content:\"\\f38e\"}.fa-deskpro:before{content:\"\\f38f\"}.fa-desktop:before{content:\"\\f108\"}.fa-dev:before{content:\"\\f6cc\"}.fa-deviantart:before{content:\"\\f1bd\"}.fa-dharmachakra:before{content:\"\\f655\"}.fa-dhl:before{content:\"\\f790\"}.fa-diagnoses:before{content:\"\\f470\"}.fa-diaspora:before{content:\"\\f791\"}.fa-dice:before{content:\"\\f522\"}.fa-dice-d20:before{content:\"\\f6cf\"}.fa-dice-d6:before{content:\"\\f6d1\"}.fa-dice-five:before{content:\"\\f523\"}.fa-dice-four:before{content:\"\\f524\"}.fa-dice-one:before{content:\"\\f525\"}.fa-dice-six:before{content:\"\\f526\"}.fa-dice-three:before{content:\"\\f527\"}.fa-dice-two:before{content:\"\\f528\"}.fa-digg:before{content:\"\\f1a6\"}.fa-digital-ocean:before{content:\"\\f391\"}.fa-digital-tachograph:before{content:\"\\f566\"}.fa-directions:before{content:\"\\f5eb\"}.fa-discord:before{content:\"\\f392\"}.fa-discourse:before{content:\"\\f393\"}.fa-divide:before{content:\"\\f529\"}.fa-dizzy:before{content:\"\\f567\"}.fa-dna:before{content:\"\\f471\"}.fa-dochub:before{content:\"\\f394\"}.fa-docker:before{content:\"\\f395\"}.fa-dog:before{content:\"\\f6d3\"}.fa-dollar-sign:before{content:\"\\f155\"}.fa-dolly:before{content:\"\\f472\"}.fa-dolly-flatbed:before{content:\"\\f474\"}.fa-donate:before{content:\"\\f4b9\"}.fa-door-closed:before{content:\"\\f52a\"}.fa-door-open:before{content:\"\\f52b\"}.fa-dot-circle:before{content:\"\\f192\"}.fa-dove:before{content:\"\\f4ba\"}.fa-download:before{content:\"\\f019\"}.fa-draft2digital:before{content:\"\\f396\"}.fa-drafting-compass:before{content:\"\\f568\"}.fa-dragon:before{content:\"\\f6d5\"}.fa-draw-polygon:before{content:\"\\f5ee\"}.fa-dribbble:before{content:\"\\f17d\"}.fa-dribbble-square:before{content:\"\\f397\"}.fa-dropbox:before{content:\"\\f16b\"}.fa-drum:before{content:\"\\f569\"}.fa-drum-steelpan:before{content:\"\\f56a\"}.fa-drumstick-bite:before{content:\"\\f6d7\"}.fa-drupal:before{content:\"\\f1a9\"}.fa-dumbbell:before{content:\"\\f44b\"}.fa-dumpster:before{content:\"\\f793\"}.fa-dumpster-fire:before{content:\"\\f794\"}.fa-dungeon:before{content:\"\\f6d9\"}.fa-dyalog:before{content:\"\\f399\"}.fa-earlybirds:before{content:\"\\f39a\"}.fa-ebay:before{content:\"\\f4f4\"}.fa-edge:before{content:\"\\f282\"}.fa-edit:before{content:\"\\f044\"}.fa-egg:before{content:\"\\f7fb\"}.fa-eject:before{content:\"\\f052\"}.fa-elementor:before{content:\"\\f430\"}.fa-ellipsis-h:before{content:\"\\f141\"}.fa-ellipsis-v:before{content:\"\\f142\"}.fa-ello:before{content:\"\\f5f1\"}.fa-ember:before{content:\"\\f423\"}.fa-empire:before{content:\"\\f1d1\"}.fa-envelope:before{content:\"\\f0e0\"}.fa-envelope-open:before{content:\"\\f2b6\"}.fa-envelope-open-text:before{content:\"\\f658\"}.fa-envelope-square:before{content:\"\\f199\"}.fa-envira:before{content:\"\\f299\"}.fa-equals:before{content:\"\\f52c\"}.fa-eraser:before{content:\"\\f12d\"}.fa-erlang:before{content:\"\\f39d\"}.fa-ethereum:before{content:\"\\f42e\"}.fa-ethernet:before{content:\"\\f796\"}.fa-etsy:before{content:\"\\f2d7\"}.fa-euro-sign:before{content:\"\\f153\"}.fa-evernote:before{content:\"\\f839\"}.fa-exchange-alt:before{content:\"\\f362\"}.fa-exclamation:before{content:\"\\f12a\"}.fa-exclamation-circle:before{content:\"\\f06a\"}.fa-exclamation-triangle:before{content:\"\\f071\"}.fa-expand:before{content:\"\\f065\"}.fa-expand-alt:before{content:\"\\f424\"}.fa-expand-arrows-alt:before{content:\"\\f31e\"}.fa-expeditedssl:before{content:\"\\f23e\"}.fa-external-link-alt:before{content:\"\\f35d\"}.fa-external-link-square-alt:before{content:\"\\f360\"}.fa-eye:before{content:\"\\f06e\"}.fa-eye-dropper:before{content:\"\\f1fb\"}.fa-eye-slash:before{content:\"\\f070\"}.fa-facebook:before{content:\"\\f09a\"}.fa-facebook-f:before{content:\"\\f39e\"}.fa-facebook-messenger:before{content:\"\\f39f\"}.fa-facebook-square:before{content:\"\\f082\"}.fa-fan:before{content:\"\\f863\"}.fa-fantasy-flight-games:before{content:\"\\f6dc\"}.fa-fast-backward:before{content:\"\\f049\"}.fa-fast-forward:before{content:\"\\f050\"}.fa-fax:before{content:\"\\f1ac\"}.fa-feather:before{content:\"\\f52d\"}.fa-feather-alt:before{content:\"\\f56b\"}.fa-fedex:before{content:\"\\f797\"}.fa-fedora:before{content:\"\\f798\"}.fa-female:before{content:\"\\f182\"}.fa-fighter-jet:before{content:\"\\f0fb\"}.fa-figma:before{content:\"\\f799\"}.fa-file:before{content:\"\\f15b\"}.fa-file-alt:before{content:\"\\f15c\"}.fa-file-archive:before{content:\"\\f1c6\"}.fa-file-audio:before{content:\"\\f1c7\"}.fa-file-code:before{content:\"\\f1c9\"}.fa-file-contract:before{content:\"\\f56c\"}.fa-file-csv:before{content:\"\\f6dd\"}.fa-file-download:before{content:\"\\f56d\"}.fa-file-excel:before{content:\"\\f1c3\"}.fa-file-export:before{content:\"\\f56e\"}.fa-file-image:before{content:\"\\f1c5\"}.fa-file-import:before{content:\"\\f56f\"}.fa-file-invoice:before{content:\"\\f570\"}.fa-file-invoice-dollar:before{content:\"\\f571\"}.fa-file-medical:before{content:\"\\f477\"}.fa-file-medical-alt:before{content:\"\\f478\"}.fa-file-pdf:before{content:\"\\f1c1\"}.fa-file-powerpoint:before{content:\"\\f1c4\"}.fa-file-prescription:before{content:\"\\f572\"}.fa-file-signature:before{content:\"\\f573\"}.fa-file-upload:before{content:\"\\f574\"}.fa-file-video:before{content:\"\\f1c8\"}.fa-file-word:before{content:\"\\f1c2\"}.fa-fill:before{content:\"\\f575\"}.fa-fill-drip:before{content:\"\\f576\"}.fa-film:before{content:\"\\f008\"}.fa-filter:before{content:\"\\f0b0\"}.fa-fingerprint:before{content:\"\\f577\"}.fa-fire:before{content:\"\\f06d\"}.fa-fire-alt:before{content:\"\\f7e4\"}.fa-fire-extinguisher:before{content:\"\\f134\"}.fa-firefox:before{content:\"\\f269\"}.fa-firefox-browser:before{content:\"\\f907\"}.fa-first-aid:before{content:\"\\f479\"}.fa-first-order:before{content:\"\\f2b0\"}.fa-first-order-alt:before{content:\"\\f50a\"}.fa-firstdraft:before{content:\"\\f3a1\"}.fa-fish:before{content:\"\\f578\"}.fa-fist-raised:before{content:\"\\f6de\"}.fa-flag:before{content:\"\\f024\"}.fa-flag-checkered:before{content:\"\\f11e\"}.fa-flag-usa:before{content:\"\\f74d\"}.fa-flask:before{content:\"\\f0c3\"}.fa-flickr:before{content:\"\\f16e\"}.fa-flipboard:before{content:\"\\f44d\"}.fa-flushed:before{content:\"\\f579\"}.fa-fly:before{content:\"\\f417\"}.fa-folder:before{content:\"\\f07b\"}.fa-folder-minus:before{content:\"\\f65d\"}.fa-folder-open:before{content:\"\\f07c\"}.fa-folder-plus:before{content:\"\\f65e\"}.fa-font:before{content:\"\\f031\"}.fa-font-awesome:before{content:\"\\f2b4\"}.fa-font-awesome-alt:before{content:\"\\f35c\"}.fa-font-awesome-flag:before{content:\"\\f425\"}.fa-font-awesome-logo-full:before{content:\"\\f4e6\"}.fa-fonticons:before{content:\"\\f280\"}.fa-fonticons-fi:before{content:\"\\f3a2\"}.fa-football-ball:before{content:\"\\f44e\"}.fa-fort-awesome:before{content:\"\\f286\"}.fa-fort-awesome-alt:before{content:\"\\f3a3\"}.fa-forumbee:before{content:\"\\f211\"}.fa-forward:before{content:\"\\f04e\"}.fa-foursquare:before{content:\"\\f180\"}.fa-free-code-camp:before{content:\"\\f2c5\"}.fa-freebsd:before{content:\"\\f3a4\"}.fa-frog:before{content:\"\\f52e\"}.fa-frown:before{content:\"\\f119\"}.fa-frown-open:before{content:\"\\f57a\"}.fa-fulcrum:before{content:\"\\f50b\"}.fa-funnel-dollar:before{content:\"\\f662\"}.fa-futbol:before{content:\"\\f1e3\"}.fa-galactic-republic:before{content:\"\\f50c\"}.fa-galactic-senate:before{content:\"\\f50d\"}.fa-gamepad:before{content:\"\\f11b\"}.fa-gas-pump:before{content:\"\\f52f\"}.fa-gavel:before{content:\"\\f0e3\"}.fa-gem:before{content:\"\\f3a5\"}.fa-genderless:before{content:\"\\f22d\"}.fa-get-pocket:before{content:\"\\f265\"}.fa-gg:before{content:\"\\f260\"}.fa-gg-circle:before{content:\"\\f261\"}.fa-ghost:before{content:\"\\f6e2\"}.fa-gift:before{content:\"\\f06b\"}.fa-gifts:before{content:\"\\f79c\"}.fa-git:before{content:\"\\f1d3\"}.fa-git-alt:before{content:\"\\f841\"}.fa-git-square:before{content:\"\\f1d2\"}.fa-github:before{content:\"\\f09b\"}.fa-github-alt:before{content:\"\\f113\"}.fa-github-square:before{content:\"\\f092\"}.fa-gitkraken:before{content:\"\\f3a6\"}.fa-gitlab:before{content:\"\\f296\"}.fa-gitter:before{content:\"\\f426\"}.fa-glass-cheers:before{content:\"\\f79f\"}.fa-glass-martini:before{content:\"\\f000\"}.fa-glass-martini-alt:before{content:\"\\f57b\"}.fa-glass-whiskey:before{content:\"\\f7a0\"}.fa-glasses:before{content:\"\\f530\"}.fa-glide:before{content:\"\\f2a5\"}.fa-glide-g:before{content:\"\\f2a6\"}.fa-globe:before{content:\"\\f0ac\"}.fa-globe-africa:before{content:\"\\f57c\"}.fa-globe-americas:before{content:\"\\f57d\"}.fa-globe-asia:before{content:\"\\f57e\"}.fa-globe-europe:before{content:\"\\f7a2\"}.fa-gofore:before{content:\"\\f3a7\"}.fa-golf-ball:before{content:\"\\f450\"}.fa-goodreads:before{content:\"\\f3a8\"}.fa-goodreads-g:before{content:\"\\f3a9\"}.fa-google:before{content:\"\\f1a0\"}.fa-google-drive:before{content:\"\\f3aa\"}.fa-google-play:before{content:\"\\f3ab\"}.fa-google-plus:before{content:\"\\f2b3\"}.fa-google-plus-g:before{content:\"\\f0d5\"}.fa-google-plus-square:before{content:\"\\f0d4\"}.fa-google-wallet:before{content:\"\\f1ee\"}.fa-gopuram:before{content:\"\\f664\"}.fa-graduation-cap:before{content:\"\\f19d\"}.fa-gratipay:before{content:\"\\f184\"}.fa-grav:before{content:\"\\f2d6\"}.fa-greater-than:before{content:\"\\f531\"}.fa-greater-than-equal:before{content:\"\\f532\"}.fa-grimace:before{content:\"\\f57f\"}.fa-grin:before{content:\"\\f580\"}.fa-grin-alt:before{content:\"\\f581\"}.fa-grin-beam:before{content:\"\\f582\"}.fa-grin-beam-sweat:before{content:\"\\f583\"}.fa-grin-hearts:before{content:\"\\f584\"}.fa-grin-squint:before{content:\"\\f585\"}.fa-grin-squint-tears:before{content:\"\\f586\"}.fa-grin-stars:before{content:\"\\f587\"}.fa-grin-tears:before{content:\"\\f588\"}.fa-grin-tongue:before{content:\"\\f589\"}.fa-grin-tongue-squint:before{content:\"\\f58a\"}.fa-grin-tongue-wink:before{content:\"\\f58b\"}.fa-grin-wink:before{content:\"\\f58c\"}.fa-grip-horizontal:before{content:\"\\f58d\"}.fa-grip-lines:before{content:\"\\f7a4\"}.fa-grip-lines-vertical:before{content:\"\\f7a5\"}.fa-grip-vertical:before{content:\"\\f58e\"}.fa-gripfire:before{content:\"\\f3ac\"}.fa-grunt:before{content:\"\\f3ad\"}.fa-guitar:before{content:\"\\f7a6\"}.fa-gulp:before{content:\"\\f3ae\"}.fa-h-square:before{content:\"\\f0fd\"}.fa-hacker-news:before{content:\"\\f1d4\"}.fa-hacker-news-square:before{content:\"\\f3af\"}.fa-hackerrank:before{content:\"\\f5f7\"}.fa-hamburger:before{content:\"\\f805\"}.fa-hammer:before{content:\"\\f6e3\"}.fa-hamsa:before{content:\"\\f665\"}.fa-hand-holding:before{content:\"\\f4bd\"}.fa-hand-holding-heart:before{content:\"\\f4be\"}.fa-hand-holding-usd:before{content:\"\\f4c0\"}.fa-hand-lizard:before{content:\"\\f258\"}.fa-hand-middle-finger:before{content:\"\\f806\"}.fa-hand-paper:before{content:\"\\f256\"}.fa-hand-peace:before{content:\"\\f25b\"}.fa-hand-point-down:before{content:\"\\f0a7\"}.fa-hand-point-left:before{content:\"\\f0a5\"}.fa-hand-point-right:before{content:\"\\f0a4\"}.fa-hand-point-up:before{content:\"\\f0a6\"}.fa-hand-pointer:before{content:\"\\f25a\"}.fa-hand-rock:before{content:\"\\f255\"}.fa-hand-scissors:before{content:\"\\f257\"}.fa-hand-spock:before{content:\"\\f259\"}.fa-hands:before{content:\"\\f4c2\"}.fa-hands-helping:before{content:\"\\f4c4\"}.fa-handshake:before{content:\"\\f2b5\"}.fa-hanukiah:before{content:\"\\f6e6\"}.fa-hard-hat:before{content:\"\\f807\"}.fa-hashtag:before{content:\"\\f292\"}.fa-hat-cowboy:before{content:\"\\f8c0\"}.fa-hat-cowboy-side:before{content:\"\\f8c1\"}.fa-hat-wizard:before{content:\"\\f6e8\"}.fa-hdd:before{content:\"\\f0a0\"}.fa-heading:before{content:\"\\f1dc\"}.fa-headphones:before{content:\"\\f025\"}.fa-headphones-alt:before{content:\"\\f58f\"}.fa-headset:before{content:\"\\f590\"}.fa-heart:before{content:\"\\f004\"}.fa-heart-broken:before{content:\"\\f7a9\"}.fa-heartbeat:before{content:\"\\f21e\"}.fa-helicopter:before{content:\"\\f533\"}.fa-highlighter:before{content:\"\\f591\"}.fa-hiking:before{content:\"\\f6ec\"}.fa-hippo:before{content:\"\\f6ed\"}.fa-hips:before{content:\"\\f452\"}.fa-hire-a-helper:before{content:\"\\f3b0\"}.fa-history:before{content:\"\\f1da\"}.fa-hockey-puck:before{content:\"\\f453\"}.fa-holly-berry:before{content:\"\\f7aa\"}.fa-home:before{content:\"\\f015\"}.fa-hooli:before{content:\"\\f427\"}.fa-hornbill:before{content:\"\\f592\"}.fa-horse:before{content:\"\\f6f0\"}.fa-horse-head:before{content:\"\\f7ab\"}.fa-hospital:before{content:\"\\f0f8\"}.fa-hospital-alt:before{content:\"\\f47d\"}.fa-hospital-symbol:before{content:\"\\f47e\"}.fa-hot-tub:before{content:\"\\f593\"}.fa-hotdog:before{content:\"\\f80f\"}.fa-hotel:before{content:\"\\f594\"}.fa-hotjar:before{content:\"\\f3b1\"}.fa-hourglass:before{content:\"\\f254\"}.fa-hourglass-end:before{content:\"\\f253\"}.fa-hourglass-half:before{content:\"\\f252\"}.fa-hourglass-start:before{content:\"\\f251\"}.fa-house-damage:before{content:\"\\f6f1\"}.fa-houzz:before{content:\"\\f27c\"}.fa-hryvnia:before{content:\"\\f6f2\"}.fa-html5:before{content:\"\\f13b\"}.fa-hubspot:before{content:\"\\f3b2\"}.fa-i-cursor:before{content:\"\\f246\"}.fa-ice-cream:before{content:\"\\f810\"}.fa-icicles:before{content:\"\\f7ad\"}.fa-icons:before{content:\"\\f86d\"}.fa-id-badge:before{content:\"\\f2c1\"}.fa-id-card:before{content:\"\\f2c2\"}.fa-id-card-alt:before{content:\"\\f47f\"}.fa-ideal:before{content:\"\\f913\"}.fa-igloo:before{content:\"\\f7ae\"}.fa-image:before{content:\"\\f03e\"}.fa-images:before{content:\"\\f302\"}.fa-imdb:before{content:\"\\f2d8\"}.fa-inbox:before{content:\"\\f01c\"}.fa-indent:before{content:\"\\f03c\"}.fa-industry:before{content:\"\\f275\"}.fa-infinity:before{content:\"\\f534\"}.fa-info:before{content:\"\\f129\"}.fa-info-circle:before{content:\"\\f05a\"}.fa-instagram:before{content:\"\\f16d\"}.fa-intercom:before{content:\"\\f7af\"}.fa-internet-explorer:before{content:\"\\f26b\"}.fa-invision:before{content:\"\\f7b0\"}.fa-ioxhost:before{content:\"\\f208\"}.fa-italic:before{content:\"\\f033\"}.fa-itch-io:before{content:\"\\f83a\"}.fa-itunes:before{content:\"\\f3b4\"}.fa-itunes-note:before{content:\"\\f3b5\"}.fa-java:before{content:\"\\f4e4\"}.fa-jedi:before{content:\"\\f669\"}.fa-jedi-order:before{content:\"\\f50e\"}.fa-jenkins:before{content:\"\\f3b6\"}.fa-jira:before{content:\"\\f7b1\"}.fa-joget:before{content:\"\\f3b7\"}.fa-joint:before{content:\"\\f595\"}.fa-joomla:before{content:\"\\f1aa\"}.fa-journal-whills:before{content:\"\\f66a\"}.fa-js:before{content:\"\\f3b8\"}.fa-js-square:before{content:\"\\f3b9\"}.fa-jsfiddle:before{content:\"\\f1cc\"}.fa-kaaba:before{content:\"\\f66b\"}.fa-kaggle:before{content:\"\\f5fa\"}.fa-key:before{content:\"\\f084\"}.fa-keybase:before{content:\"\\f4f5\"}.fa-keyboard:before{content:\"\\f11c\"}.fa-keycdn:before{content:\"\\f3ba\"}.fa-khanda:before{content:\"\\f66d\"}.fa-kickstarter:before{content:\"\\f3bb\"}.fa-kickstarter-k:before{content:\"\\f3bc\"}.fa-kiss:before{content:\"\\f596\"}.fa-kiss-beam:before{content:\"\\f597\"}.fa-kiss-wink-heart:before{content:\"\\f598\"}.fa-kiwi-bird:before{content:\"\\f535\"}.fa-korvue:before{content:\"\\f42f\"}.fa-landmark:before{content:\"\\f66f\"}.fa-language:before{content:\"\\f1ab\"}.fa-laptop:before{content:\"\\f109\"}.fa-laptop-code:before{content:\"\\f5fc\"}.fa-laptop-medical:before{content:\"\\f812\"}.fa-laravel:before{content:\"\\f3bd\"}.fa-lastfm:before{content:\"\\f202\"}.fa-lastfm-square:before{content:\"\\f203\"}.fa-laugh:before{content:\"\\f599\"}.fa-laugh-beam:before{content:\"\\f59a\"}.fa-laugh-squint:before{content:\"\\f59b\"}.fa-laugh-wink:before{content:\"\\f59c\"}.fa-layer-group:before{content:\"\\f5fd\"}.fa-leaf:before{content:\"\\f06c\"}.fa-leanpub:before{content:\"\\f212\"}.fa-lemon:before{content:\"\\f094\"}.fa-less:before{content:\"\\f41d\"}.fa-less-than:before{content:\"\\f536\"}.fa-less-than-equal:before{content:\"\\f537\"}.fa-level-down-alt:before{content:\"\\f3be\"}.fa-level-up-alt:before{content:\"\\f3bf\"}.fa-life-ring:before{content:\"\\f1cd\"}.fa-lightbulb:before{content:\"\\f0eb\"}.fa-line:before{content:\"\\f3c0\"}.fa-link:before{content:\"\\f0c1\"}.fa-linkedin:before{content:\"\\f08c\"}.fa-linkedin-in:before{content:\"\\f0e1\"}.fa-linode:before{content:\"\\f2b8\"}.fa-linux:before{content:\"\\f17c\"}.fa-lira-sign:before{content:\"\\f195\"}.fa-list:before{content:\"\\f03a\"}.fa-list-alt:before{content:\"\\f022\"}.fa-list-ol:before{content:\"\\f0cb\"}.fa-list-ul:before{content:\"\\f0ca\"}.fa-location-arrow:before{content:\"\\f124\"}.fa-lock:before{content:\"\\f023\"}.fa-lock-open:before{content:\"\\f3c1\"}.fa-long-arrow-alt-down:before{content:\"\\f309\"}.fa-long-arrow-alt-left:before{content:\"\\f30a\"}.fa-long-arrow-alt-right:before{content:\"\\f30b\"}.fa-long-arrow-alt-up:before{content:\"\\f30c\"}.fa-low-vision:before{content:\"\\f2a8\"}.fa-luggage-cart:before{content:\"\\f59d\"}.fa-lyft:before{content:\"\\f3c3\"}.fa-magento:before{content:\"\\f3c4\"}.fa-magic:before{content:\"\\f0d0\"}.fa-magnet:before{content:\"\\f076\"}.fa-mail-bulk:before{content:\"\\f674\"}.fa-mailchimp:before{content:\"\\f59e\"}.fa-male:before{content:\"\\f183\"}.fa-mandalorian:before{content:\"\\f50f\"}.fa-map:before{content:\"\\f279\"}.fa-map-marked:before{content:\"\\f59f\"}.fa-map-marked-alt:before{content:\"\\f5a0\"}.fa-map-marker:before{content:\"\\f041\"}.fa-map-marker-alt:before{content:\"\\f3c5\"}.fa-map-pin:before{content:\"\\f276\"}.fa-map-signs:before{content:\"\\f277\"}.fa-markdown:before{content:\"\\f60f\"}.fa-marker:before{content:\"\\f5a1\"}.fa-mars:before{content:\"\\f222\"}.fa-mars-double:before{content:\"\\f227\"}.fa-mars-stroke:before{content:\"\\f229\"}.fa-mars-stroke-h:before{content:\"\\f22b\"}.fa-mars-stroke-v:before{content:\"\\f22a\"}.fa-mask:before{content:\"\\f6fa\"}.fa-mastodon:before{content:\"\\f4f6\"}.fa-maxcdn:before{content:\"\\f136\"}.fa-mdb:before{content:\"\\f8ca\"}.fa-medal:before{content:\"\\f5a2\"}.fa-medapps:before{content:\"\\f3c6\"}.fa-medium:before{content:\"\\f23a\"}.fa-medium-m:before{content:\"\\f3c7\"}.fa-medkit:before{content:\"\\f0fa\"}.fa-medrt:before{content:\"\\f3c8\"}.fa-meetup:before{content:\"\\f2e0\"}.fa-megaport:before{content:\"\\f5a3\"}.fa-meh:before{content:\"\\f11a\"}.fa-meh-blank:before{content:\"\\f5a4\"}.fa-meh-rolling-eyes:before{content:\"\\f5a5\"}.fa-memory:before{content:\"\\f538\"}.fa-mendeley:before{content:\"\\f7b3\"}.fa-menorah:before{content:\"\\f676\"}.fa-mercury:before{content:\"\\f223\"}.fa-meteor:before{content:\"\\f753\"}.fa-microblog:before{content:\"\\f91a\"}.fa-microchip:before{content:\"\\f2db\"}.fa-microphone:before{content:\"\\f130\"}.fa-microphone-alt:before{content:\"\\f3c9\"}.fa-microphone-alt-slash:before{content:\"\\f539\"}.fa-microphone-slash:before{content:\"\\f131\"}.fa-microscope:before{content:\"\\f610\"}.fa-microsoft:before{content:\"\\f3ca\"}.fa-minus:before{content:\"\\f068\"}.fa-minus-circle:before{content:\"\\f056\"}.fa-minus-square:before{content:\"\\f146\"}.fa-mitten:before{content:\"\\f7b5\"}.fa-mix:before{content:\"\\f3cb\"}.fa-mixcloud:before{content:\"\\f289\"}.fa-mizuni:before{content:\"\\f3cc\"}.fa-mobile:before{content:\"\\f10b\"}.fa-mobile-alt:before{content:\"\\f3cd\"}.fa-modx:before{content:\"\\f285\"}.fa-monero:before{content:\"\\f3d0\"}.fa-money-bill:before{content:\"\\f0d6\"}.fa-money-bill-alt:before{content:\"\\f3d1\"}.fa-money-bill-wave:before{content:\"\\f53a\"}.fa-money-bill-wave-alt:before{content:\"\\f53b\"}.fa-money-check:before{content:\"\\f53c\"}.fa-money-check-alt:before{content:\"\\f53d\"}.fa-monument:before{content:\"\\f5a6\"}.fa-moon:before{content:\"\\f186\"}.fa-mortar-pestle:before{content:\"\\f5a7\"}.fa-mosque:before{content:\"\\f678\"}.fa-motorcycle:before{content:\"\\f21c\"}.fa-mountain:before{content:\"\\f6fc\"}.fa-mouse:before{content:\"\\f8cc\"}.fa-mouse-pointer:before{content:\"\\f245\"}.fa-mug-hot:before{content:\"\\f7b6\"}.fa-music:before{content:\"\\f001\"}.fa-napster:before{content:\"\\f3d2\"}.fa-neos:before{content:\"\\f612\"}.fa-network-wired:before{content:\"\\f6ff\"}.fa-neuter:before{content:\"\\f22c\"}.fa-newspaper:before{content:\"\\f1ea\"}.fa-nimblr:before{content:\"\\f5a8\"}.fa-node:before{content:\"\\f419\"}.fa-node-js:before{content:\"\\f3d3\"}.fa-not-equal:before{content:\"\\f53e\"}.fa-notes-medical:before{content:\"\\f481\"}.fa-npm:before{content:\"\\f3d4\"}.fa-ns8:before{content:\"\\f3d5\"}.fa-nutritionix:before{content:\"\\f3d6\"}.fa-object-group:before{content:\"\\f247\"}.fa-object-ungroup:before{content:\"\\f248\"}.fa-odnoklassniki:before{content:\"\\f263\"}.fa-odnoklassniki-square:before{content:\"\\f264\"}.fa-oil-can:before{content:\"\\f613\"}.fa-old-republic:before{content:\"\\f510\"}.fa-om:before{content:\"\\f679\"}.fa-opencart:before{content:\"\\f23d\"}.fa-openid:before{content:\"\\f19b\"}.fa-opera:before{content:\"\\f26a\"}.fa-optin-monster:before{content:\"\\f23c\"}.fa-orcid:before{content:\"\\f8d2\"}.fa-osi:before{content:\"\\f41a\"}.fa-otter:before{content:\"\\f700\"}.fa-outdent:before{content:\"\\f03b\"}.fa-page4:before{content:\"\\f3d7\"}.fa-pagelines:before{content:\"\\f18c\"}.fa-pager:before{content:\"\\f815\"}.fa-paint-brush:before{content:\"\\f1fc\"}.fa-paint-roller:before{content:\"\\f5aa\"}.fa-palette:before{content:\"\\f53f\"}.fa-palfed:before{content:\"\\f3d8\"}.fa-pallet:before{content:\"\\f482\"}.fa-paper-plane:before{content:\"\\f1d8\"}.fa-paperclip:before{content:\"\\f0c6\"}.fa-parachute-box:before{content:\"\\f4cd\"}.fa-paragraph:before{content:\"\\f1dd\"}.fa-parking:before{content:\"\\f540\"}.fa-passport:before{content:\"\\f5ab\"}.fa-pastafarianism:before{content:\"\\f67b\"}.fa-paste:before{content:\"\\f0ea\"}.fa-patreon:before{content:\"\\f3d9\"}.fa-pause:before{content:\"\\f04c\"}.fa-pause-circle:before{content:\"\\f28b\"}.fa-paw:before{content:\"\\f1b0\"}.fa-paypal:before{content:\"\\f1ed\"}.fa-peace:before{content:\"\\f67c\"}.fa-pen:before{content:\"\\f304\"}.fa-pen-alt:before{content:\"\\f305\"}.fa-pen-fancy:before{content:\"\\f5ac\"}.fa-pen-nib:before{content:\"\\f5ad\"}.fa-pen-square:before{content:\"\\f14b\"}.fa-pencil-alt:before{content:\"\\f303\"}.fa-pencil-ruler:before{content:\"\\f5ae\"}.fa-penny-arcade:before{content:\"\\f704\"}.fa-people-carry:before{content:\"\\f4ce\"}.fa-pepper-hot:before{content:\"\\f816\"}.fa-percent:before{content:\"\\f295\"}.fa-percentage:before{content:\"\\f541\"}.fa-periscope:before{content:\"\\f3da\"}.fa-person-booth:before{content:\"\\f756\"}.fa-phabricator:before{content:\"\\f3db\"}.fa-phoenix-framework:before{content:\"\\f3dc\"}.fa-phoenix-squadron:before{content:\"\\f511\"}.fa-phone:before{content:\"\\f095\"}.fa-phone-alt:before{content:\"\\f879\"}.fa-phone-slash:before{content:\"\\f3dd\"}.fa-phone-square:before{content:\"\\f098\"}.fa-phone-square-alt:before{content:\"\\f87b\"}.fa-phone-volume:before{content:\"\\f2a0\"}.fa-photo-video:before{content:\"\\f87c\"}.fa-php:before{content:\"\\f457\"}.fa-pied-piper:before{content:\"\\f2ae\"}.fa-pied-piper-alt:before{content:\"\\f1a8\"}.fa-pied-piper-hat:before{content:\"\\f4e5\"}.fa-pied-piper-pp:before{content:\"\\f1a7\"}.fa-pied-piper-square:before{content:\"\\f91e\"}.fa-piggy-bank:before{content:\"\\f4d3\"}.fa-pills:before{content:\"\\f484\"}.fa-pinterest:before{content:\"\\f0d2\"}.fa-pinterest-p:before{content:\"\\f231\"}.fa-pinterest-square:before{content:\"\\f0d3\"}.fa-pizza-slice:before{content:\"\\f818\"}.fa-place-of-worship:before{content:\"\\f67f\"}.fa-plane:before{content:\"\\f072\"}.fa-plane-arrival:before{content:\"\\f5af\"}.fa-plane-departure:before{content:\"\\f5b0\"}.fa-play:before{content:\"\\f04b\"}.fa-play-circle:before{content:\"\\f144\"}.fa-playstation:before{content:\"\\f3df\"}.fa-plug:before{content:\"\\f1e6\"}.fa-plus:before{content:\"\\f067\"}.fa-plus-circle:before{content:\"\\f055\"}.fa-plus-square:before{content:\"\\f0fe\"}.fa-podcast:before{content:\"\\f2ce\"}.fa-poll:before{content:\"\\f681\"}.fa-poll-h:before{content:\"\\f682\"}.fa-poo:before{content:\"\\f2fe\"}.fa-poo-storm:before{content:\"\\f75a\"}.fa-poop:before{content:\"\\f619\"}.fa-portrait:before{content:\"\\f3e0\"}.fa-pound-sign:before{content:\"\\f154\"}.fa-power-off:before{content:\"\\f011\"}.fa-pray:before{content:\"\\f683\"}.fa-praying-hands:before{content:\"\\f684\"}.fa-prescription:before{content:\"\\f5b1\"}.fa-prescription-bottle:before{content:\"\\f485\"}.fa-prescription-bottle-alt:before{content:\"\\f486\"}.fa-print:before{content:\"\\f02f\"}.fa-procedures:before{content:\"\\f487\"}.fa-product-hunt:before{content:\"\\f288\"}.fa-project-diagram:before{content:\"\\f542\"}.fa-pushed:before{content:\"\\f3e1\"}.fa-puzzle-piece:before{content:\"\\f12e\"}.fa-python:before{content:\"\\f3e2\"}.fa-qq:before{content:\"\\f1d6\"}.fa-qrcode:before{content:\"\\f029\"}.fa-question:before{content:\"\\f128\"}.fa-question-circle:before{content:\"\\f059\"}.fa-quidditch:before{content:\"\\f458\"}.fa-quinscape:before{content:\"\\f459\"}.fa-quora:before{content:\"\\f2c4\"}.fa-quote-left:before{content:\"\\f10d\"}.fa-quote-right:before{content:\"\\f10e\"}.fa-quran:before{content:\"\\f687\"}.fa-r-project:before{content:\"\\f4f7\"}.fa-radiation:before{content:\"\\f7b9\"}.fa-radiation-alt:before{content:\"\\f7ba\"}.fa-rainbow:before{content:\"\\f75b\"}.fa-random:before{content:\"\\f074\"}.fa-raspberry-pi:before{content:\"\\f7bb\"}.fa-ravelry:before{content:\"\\f2d9\"}.fa-react:before{content:\"\\f41b\"}.fa-reacteurope:before{content:\"\\f75d\"}.fa-readme:before{content:\"\\f4d5\"}.fa-rebel:before{content:\"\\f1d0\"}.fa-receipt:before{content:\"\\f543\"}.fa-record-vinyl:before{content:\"\\f8d9\"}.fa-recycle:before{content:\"\\f1b8\"}.fa-red-river:before{content:\"\\f3e3\"}.fa-reddit:before{content:\"\\f1a1\"}.fa-reddit-alien:before{content:\"\\f281\"}.fa-reddit-square:before{content:\"\\f1a2\"}.fa-redhat:before{content:\"\\f7bc\"}.fa-redo:before{content:\"\\f01e\"}.fa-redo-alt:before{content:\"\\f2f9\"}.fa-registered:before{content:\"\\f25d\"}.fa-remove-format:before{content:\"\\f87d\"}.fa-renren:before{content:\"\\f18b\"}.fa-reply:before{content:\"\\f3e5\"}.fa-reply-all:before{content:\"\\f122\"}.fa-replyd:before{content:\"\\f3e6\"}.fa-republican:before{content:\"\\f75e\"}.fa-researchgate:before{content:\"\\f4f8\"}.fa-resolving:before{content:\"\\f3e7\"}.fa-restroom:before{content:\"\\f7bd\"}.fa-retweet:before{content:\"\\f079\"}.fa-rev:before{content:\"\\f5b2\"}.fa-ribbon:before{content:\"\\f4d6\"}.fa-ring:before{content:\"\\f70b\"}.fa-road:before{content:\"\\f018\"}.fa-robot:before{content:\"\\f544\"}.fa-rocket:before{content:\"\\f135\"}.fa-rocketchat:before{content:\"\\f3e8\"}.fa-rockrms:before{content:\"\\f3e9\"}.fa-route:before{content:\"\\f4d7\"}.fa-rss:before{content:\"\\f09e\"}.fa-rss-square:before{content:\"\\f143\"}.fa-ruble-sign:before{content:\"\\f158\"}.fa-ruler:before{content:\"\\f545\"}.fa-ruler-combined:before{content:\"\\f546\"}.fa-ruler-horizontal:before{content:\"\\f547\"}.fa-ruler-vertical:before{content:\"\\f548\"}.fa-running:before{content:\"\\f70c\"}.fa-rupee-sign:before{content:\"\\f156\"}.fa-sad-cry:before{content:\"\\f5b3\"}.fa-sad-tear:before{content:\"\\f5b4\"}.fa-safari:before{content:\"\\f267\"}.fa-salesforce:before{content:\"\\f83b\"}.fa-sass:before{content:\"\\f41e\"}.fa-satellite:before{content:\"\\f7bf\"}.fa-satellite-dish:before{content:\"\\f7c0\"}.fa-save:before{content:\"\\f0c7\"}.fa-schlix:before{content:\"\\f3ea\"}.fa-school:before{content:\"\\f549\"}.fa-screwdriver:before{content:\"\\f54a\"}.fa-scribd:before{content:\"\\f28a\"}.fa-scroll:before{content:\"\\f70e\"}.fa-sd-card:before{content:\"\\f7c2\"}.fa-search:before{content:\"\\f002\"}.fa-search-dollar:before{content:\"\\f688\"}.fa-search-location:before{content:\"\\f689\"}.fa-search-minus:before{content:\"\\f010\"}.fa-search-plus:before{content:\"\\f00e\"}.fa-searchengin:before{content:\"\\f3eb\"}.fa-seedling:before{content:\"\\f4d8\"}.fa-sellcast:before{content:\"\\f2da\"}.fa-sellsy:before{content:\"\\f213\"}.fa-server:before{content:\"\\f233\"}.fa-servicestack:before{content:\"\\f3ec\"}.fa-shapes:before{content:\"\\f61f\"}.fa-share:before{content:\"\\f064\"}.fa-share-alt:before{content:\"\\f1e0\"}.fa-share-alt-square:before{content:\"\\f1e1\"}.fa-share-square:before{content:\"\\f14d\"}.fa-shekel-sign:before{content:\"\\f20b\"}.fa-shield-alt:before{content:\"\\f3ed\"}.fa-ship:before{content:\"\\f21a\"}.fa-shipping-fast:before{content:\"\\f48b\"}.fa-shirtsinbulk:before{content:\"\\f214\"}.fa-shoe-prints:before{content:\"\\f54b\"}.fa-shopping-bag:before{content:\"\\f290\"}.fa-shopping-basket:before{content:\"\\f291\"}.fa-shopping-cart:before{content:\"\\f07a\"}.fa-shopware:before{content:\"\\f5b5\"}.fa-shower:before{content:\"\\f2cc\"}.fa-shuttle-van:before{content:\"\\f5b6\"}.fa-sign:before{content:\"\\f4d9\"}.fa-sign-in-alt:before{content:\"\\f2f6\"}.fa-sign-language:before{content:\"\\f2a7\"}.fa-sign-out-alt:before{content:\"\\f2f5\"}.fa-signal:before{content:\"\\f012\"}.fa-signature:before{content:\"\\f5b7\"}.fa-sim-card:before{content:\"\\f7c4\"}.fa-simplybuilt:before{content:\"\\f215\"}.fa-sistrix:before{content:\"\\f3ee\"}.fa-sitemap:before{content:\"\\f0e8\"}.fa-sith:before{content:\"\\f512\"}.fa-skating:before{content:\"\\f7c5\"}.fa-sketch:before{content:\"\\f7c6\"}.fa-skiing:before{content:\"\\f7c9\"}.fa-skiing-nordic:before{content:\"\\f7ca\"}.fa-skull:before{content:\"\\f54c\"}.fa-skull-crossbones:before{content:\"\\f714\"}.fa-skyatlas:before{content:\"\\f216\"}.fa-skype:before{content:\"\\f17e\"}.fa-slack:before{content:\"\\f198\"}.fa-slack-hash:before{content:\"\\f3ef\"}.fa-slash:before{content:\"\\f715\"}.fa-sleigh:before{content:\"\\f7cc\"}.fa-sliders-h:before{content:\"\\f1de\"}.fa-slideshare:before{content:\"\\f1e7\"}.fa-smile:before{content:\"\\f118\"}.fa-smile-beam:before{content:\"\\f5b8\"}.fa-smile-wink:before{content:\"\\f4da\"}.fa-smog:before{content:\"\\f75f\"}.fa-smoking:before{content:\"\\f48d\"}.fa-smoking-ban:before{content:\"\\f54d\"}.fa-sms:before{content:\"\\f7cd\"}.fa-snapchat:before{content:\"\\f2ab\"}.fa-snapchat-ghost:before{content:\"\\f2ac\"}.fa-snapchat-square:before{content:\"\\f2ad\"}.fa-snowboarding:before{content:\"\\f7ce\"}.fa-snowflake:before{content:\"\\f2dc\"}.fa-snowman:before{content:\"\\f7d0\"}.fa-snowplow:before{content:\"\\f7d2\"}.fa-socks:before{content:\"\\f696\"}.fa-solar-panel:before{content:\"\\f5ba\"}.fa-sort:before{content:\"\\f0dc\"}.fa-sort-alpha-down:before{content:\"\\f15d\"}.fa-sort-alpha-down-alt:before{content:\"\\f881\"}.fa-sort-alpha-up:before{content:\"\\f15e\"}.fa-sort-alpha-up-alt:before{content:\"\\f882\"}.fa-sort-amount-down:before{content:\"\\f160\"}.fa-sort-amount-down-alt:before{content:\"\\f884\"}.fa-sort-amount-up:before{content:\"\\f161\"}.fa-sort-amount-up-alt:before{content:\"\\f885\"}.fa-sort-down:before{content:\"\\f0dd\"}.fa-sort-numeric-down:before{content:\"\\f162\"}.fa-sort-numeric-down-alt:before{content:\"\\f886\"}.fa-sort-numeric-up:before{content:\"\\f163\"}.fa-sort-numeric-up-alt:before{content:\"\\f887\"}.fa-sort-up:before{content:\"\\f0de\"}.fa-soundcloud:before{content:\"\\f1be\"}.fa-sourcetree:before{content:\"\\f7d3\"}.fa-spa:before{content:\"\\f5bb\"}.fa-space-shuttle:before{content:\"\\f197\"}.fa-speakap:before{content:\"\\f3f3\"}.fa-speaker-deck:before{content:\"\\f83c\"}.fa-spell-check:before{content:\"\\f891\"}.fa-spider:before{content:\"\\f717\"}.fa-spinner:before{content:\"\\f110\"}.fa-splotch:before{content:\"\\f5bc\"}.fa-spotify:before{content:\"\\f1bc\"}.fa-spray-can:before{content:\"\\f5bd\"}.fa-square:before{content:\"\\f0c8\"}.fa-square-full:before{content:\"\\f45c\"}.fa-square-root-alt:before{content:\"\\f698\"}.fa-squarespace:before{content:\"\\f5be\"}.fa-stack-exchange:before{content:\"\\f18d\"}.fa-stack-overflow:before{content:\"\\f16c\"}.fa-stackpath:before{content:\"\\f842\"}.fa-stamp:before{content:\"\\f5bf\"}.fa-star:before{content:\"\\f005\"}.fa-star-and-crescent:before{content:\"\\f699\"}.fa-star-half:before{content:\"\\f089\"}.fa-star-half-alt:before{content:\"\\f5c0\"}.fa-star-of-david:before{content:\"\\f69a\"}.fa-star-of-life:before{content:\"\\f621\"}.fa-staylinked:before{content:\"\\f3f5\"}.fa-steam:before{content:\"\\f1b6\"}.fa-steam-square:before{content:\"\\f1b7\"}.fa-steam-symbol:before{content:\"\\f3f6\"}.fa-step-backward:before{content:\"\\f048\"}.fa-step-forward:before{content:\"\\f051\"}.fa-stethoscope:before{content:\"\\f0f1\"}.fa-sticker-mule:before{content:\"\\f3f7\"}.fa-sticky-note:before{content:\"\\f249\"}.fa-stop:before{content:\"\\f04d\"}.fa-stop-circle:before{content:\"\\f28d\"}.fa-stopwatch:before{content:\"\\f2f2\"}.fa-store:before{content:\"\\f54e\"}.fa-store-alt:before{content:\"\\f54f\"}.fa-strava:before{content:\"\\f428\"}.fa-stream:before{content:\"\\f550\"}.fa-street-view:before{content:\"\\f21d\"}.fa-strikethrough:before{content:\"\\f0cc\"}.fa-stripe:before{content:\"\\f429\"}.fa-stripe-s:before{content:\"\\f42a\"}.fa-stroopwafel:before{content:\"\\f551\"}.fa-studiovinari:before{content:\"\\f3f8\"}.fa-stumbleupon:before{content:\"\\f1a4\"}.fa-stumbleupon-circle:before{content:\"\\f1a3\"}.fa-subscript:before{content:\"\\f12c\"}.fa-subway:before{content:\"\\f239\"}.fa-suitcase:before{content:\"\\f0f2\"}.fa-suitcase-rolling:before{content:\"\\f5c1\"}.fa-sun:before{content:\"\\f185\"}.fa-superpowers:before{content:\"\\f2dd\"}.fa-superscript:before{content:\"\\f12b\"}.fa-supple:before{content:\"\\f3f9\"}.fa-surprise:before{content:\"\\f5c2\"}.fa-suse:before{content:\"\\f7d6\"}.fa-swatchbook:before{content:\"\\f5c3\"}.fa-swift:before{content:\"\\f8e1\"}.fa-swimmer:before{content:\"\\f5c4\"}.fa-swimming-pool:before{content:\"\\f5c5\"}.fa-symfony:before{content:\"\\f83d\"}.fa-synagogue:before{content:\"\\f69b\"}.fa-sync:before{content:\"\\f021\"}.fa-sync-alt:before{content:\"\\f2f1\"}.fa-syringe:before{content:\"\\f48e\"}.fa-table:before{content:\"\\f0ce\"}.fa-table-tennis:before{content:\"\\f45d\"}.fa-tablet:before{content:\"\\f10a\"}.fa-tablet-alt:before{content:\"\\f3fa\"}.fa-tablets:before{content:\"\\f490\"}.fa-tachometer-alt:before{content:\"\\f3fd\"}.fa-tag:before{content:\"\\f02b\"}.fa-tags:before{content:\"\\f02c\"}.fa-tape:before{content:\"\\f4db\"}.fa-tasks:before{content:\"\\f0ae\"}.fa-taxi:before{content:\"\\f1ba\"}.fa-teamspeak:before{content:\"\\f4f9\"}.fa-teeth:before{content:\"\\f62e\"}.fa-teeth-open:before{content:\"\\f62f\"}.fa-telegram:before{content:\"\\f2c6\"}.fa-telegram-plane:before{content:\"\\f3fe\"}.fa-temperature-high:before{content:\"\\f769\"}.fa-temperature-low:before{content:\"\\f76b\"}.fa-tencent-weibo:before{content:\"\\f1d5\"}.fa-tenge:before{content:\"\\f7d7\"}.fa-terminal:before{content:\"\\f120\"}.fa-text-height:before{content:\"\\f034\"}.fa-text-width:before{content:\"\\f035\"}.fa-th:before{content:\"\\f00a\"}.fa-th-large:before{content:\"\\f009\"}.fa-th-list:before{content:\"\\f00b\"}.fa-the-red-yeti:before{content:\"\\f69d\"}.fa-theater-masks:before{content:\"\\f630\"}.fa-themeco:before{content:\"\\f5c6\"}.fa-themeisle:before{content:\"\\f2b2\"}.fa-thermometer:before{content:\"\\f491\"}.fa-thermometer-empty:before{content:\"\\f2cb\"}.fa-thermometer-full:before{content:\"\\f2c7\"}.fa-thermometer-half:before{content:\"\\f2c9\"}.fa-thermometer-quarter:before{content:\"\\f2ca\"}.fa-thermometer-three-quarters:before{content:\"\\f2c8\"}.fa-think-peaks:before{content:\"\\f731\"}.fa-thumbs-down:before{content:\"\\f165\"}.fa-thumbs-up:before{content:\"\\f164\"}.fa-thumbtack:before{content:\"\\f08d\"}.fa-ticket-alt:before{content:\"\\f3ff\"}.fa-times:before{content:\"\\f00d\"}.fa-times-circle:before{content:\"\\f057\"}.fa-tint:before{content:\"\\f043\"}.fa-tint-slash:before{content:\"\\f5c7\"}.fa-tired:before{content:\"\\f5c8\"}.fa-toggle-off:before{content:\"\\f204\"}.fa-toggle-on:before{content:\"\\f205\"}.fa-toilet:before{content:\"\\f7d8\"}.fa-toilet-paper:before{content:\"\\f71e\"}.fa-toolbox:before{content:\"\\f552\"}.fa-tools:before{content:\"\\f7d9\"}.fa-tooth:before{content:\"\\f5c9\"}.fa-torah:before{content:\"\\f6a0\"}.fa-torii-gate:before{content:\"\\f6a1\"}.fa-tractor:before{content:\"\\f722\"}.fa-trade-federation:before{content:\"\\f513\"}.fa-trademark:before{content:\"\\f25c\"}.fa-traffic-light:before{content:\"\\f637\"}.fa-trailer:before{content:\"\\f941\"}.fa-train:before{content:\"\\f238\"}.fa-tram:before{content:\"\\f7da\"}.fa-transgender:before{content:\"\\f224\"}.fa-transgender-alt:before{content:\"\\f225\"}.fa-trash:before{content:\"\\f1f8\"}.fa-trash-alt:before{content:\"\\f2ed\"}.fa-trash-restore:before{content:\"\\f829\"}.fa-trash-restore-alt:before{content:\"\\f82a\"}.fa-tree:before{content:\"\\f1bb\"}.fa-trello:before{content:\"\\f181\"}.fa-tripadvisor:before{content:\"\\f262\"}.fa-trophy:before{content:\"\\f091\"}.fa-truck:before{content:\"\\f0d1\"}.fa-truck-loading:before{content:\"\\f4de\"}.fa-truck-monster:before{content:\"\\f63b\"}.fa-truck-moving:before{content:\"\\f4df\"}.fa-truck-pickup:before{content:\"\\f63c\"}.fa-tshirt:before{content:\"\\f553\"}.fa-tty:before{content:\"\\f1e4\"}.fa-tumblr:before{content:\"\\f173\"}.fa-tumblr-square:before{content:\"\\f174\"}.fa-tv:before{content:\"\\f26c\"}.fa-twitch:before{content:\"\\f1e8\"}.fa-twitter:before{content:\"\\f099\"}.fa-twitter-square:before{content:\"\\f081\"}.fa-typo3:before{content:\"\\f42b\"}.fa-uber:before{content:\"\\f402\"}.fa-ubuntu:before{content:\"\\f7df\"}.fa-uikit:before{content:\"\\f403\"}.fa-umbraco:before{content:\"\\f8e8\"}.fa-umbrella:before{content:\"\\f0e9\"}.fa-umbrella-beach:before{content:\"\\f5ca\"}.fa-underline:before{content:\"\\f0cd\"}.fa-undo:before{content:\"\\f0e2\"}.fa-undo-alt:before{content:\"\\f2ea\"}.fa-uniregistry:before{content:\"\\f404\"}.fa-unity:before{content:\"\\f949\"}.fa-universal-access:before{content:\"\\f29a\"}.fa-university:before{content:\"\\f19c\"}.fa-unlink:before{content:\"\\f127\"}.fa-unlock:before{content:\"\\f09c\"}.fa-unlock-alt:before{content:\"\\f13e\"}.fa-untappd:before{content:\"\\f405\"}.fa-upload:before{content:\"\\f093\"}.fa-ups:before{content:\"\\f7e0\"}.fa-usb:before{content:\"\\f287\"}.fa-user:before{content:\"\\f007\"}.fa-user-alt:before{content:\"\\f406\"}.fa-user-alt-slash:before{content:\"\\f4fa\"}.fa-user-astronaut:before{content:\"\\f4fb\"}.fa-user-check:before{content:\"\\f4fc\"}.fa-user-circle:before{content:\"\\f2bd\"}.fa-user-clock:before{content:\"\\f4fd\"}.fa-user-cog:before{content:\"\\f4fe\"}.fa-user-edit:before{content:\"\\f4ff\"}.fa-user-friends:before{content:\"\\f500\"}.fa-user-graduate:before{content:\"\\f501\"}.fa-user-injured:before{content:\"\\f728\"}.fa-user-lock:before{content:\"\\f502\"}.fa-user-md:before{content:\"\\f0f0\"}.fa-user-minus:before{content:\"\\f503\"}.fa-user-ninja:before{content:\"\\f504\"}.fa-user-nurse:before{content:\"\\f82f\"}.fa-user-plus:before{content:\"\\f234\"}.fa-user-secret:before{content:\"\\f21b\"}.fa-user-shield:before{content:\"\\f505\"}.fa-user-slash:before{content:\"\\f506\"}.fa-user-tag:before{content:\"\\f507\"}.fa-user-tie:before{content:\"\\f508\"}.fa-user-times:before{content:\"\\f235\"}.fa-users:before{content:\"\\f0c0\"}.fa-users-cog:before{content:\"\\f509\"}.fa-usps:before{content:\"\\f7e1\"}.fa-ussunnah:before{content:\"\\f407\"}.fa-utensil-spoon:before{content:\"\\f2e5\"}.fa-utensils:before{content:\"\\f2e7\"}.fa-vaadin:before{content:\"\\f408\"}.fa-vector-square:before{content:\"\\f5cb\"}.fa-venus:before{content:\"\\f221\"}.fa-venus-double:before{content:\"\\f226\"}.fa-venus-mars:before{content:\"\\f228\"}.fa-viacoin:before{content:\"\\f237\"}.fa-viadeo:before{content:\"\\f2a9\"}.fa-viadeo-square:before{content:\"\\f2aa\"}.fa-vial:before{content:\"\\f492\"}.fa-vials:before{content:\"\\f493\"}.fa-viber:before{content:\"\\f409\"}.fa-video:before{content:\"\\f03d\"}.fa-video-slash:before{content:\"\\f4e2\"}.fa-vihara:before{content:\"\\f6a7\"}.fa-vimeo:before{content:\"\\f40a\"}.fa-vimeo-square:before{content:\"\\f194\"}.fa-vimeo-v:before{content:\"\\f27d\"}.fa-vine:before{content:\"\\f1ca\"}.fa-vk:before{content:\"\\f189\"}.fa-vnv:before{content:\"\\f40b\"}.fa-voicemail:before{content:\"\\f897\"}.fa-volleyball-ball:before{content:\"\\f45f\"}.fa-volume-down:before{content:\"\\f027\"}.fa-volume-mute:before{content:\"\\f6a9\"}.fa-volume-off:before{content:\"\\f026\"}.fa-volume-up:before{content:\"\\f028\"}.fa-vote-yea:before{content:\"\\f772\"}.fa-vr-cardboard:before{content:\"\\f729\"}.fa-vuejs:before{content:\"\\f41f\"}.fa-walking:before{content:\"\\f554\"}.fa-wallet:before{content:\"\\f555\"}.fa-warehouse:before{content:\"\\f494\"}.fa-water:before{content:\"\\f773\"}.fa-wave-square:before{content:\"\\f83e\"}.fa-waze:before{content:\"\\f83f\"}.fa-weebly:before{content:\"\\f5cc\"}.fa-weibo:before{content:\"\\f18a\"}.fa-weight:before{content:\"\\f496\"}.fa-weight-hanging:before{content:\"\\f5cd\"}.fa-weixin:before{content:\"\\f1d7\"}.fa-whatsapp:before{content:\"\\f232\"}.fa-whatsapp-square:before{content:\"\\f40c\"}.fa-wheelchair:before{content:\"\\f193\"}.fa-whmcs:before{content:\"\\f40d\"}.fa-wifi:before{content:\"\\f1eb\"}.fa-wikipedia-w:before{content:\"\\f266\"}.fa-wind:before{content:\"\\f72e\"}.fa-window-close:before{content:\"\\f410\"}.fa-window-maximize:before{content:\"\\f2d0\"}.fa-window-minimize:before{content:\"\\f2d1\"}.fa-window-restore:before{content:\"\\f2d2\"}.fa-windows:before{content:\"\\f17a\"}.fa-wine-bottle:before{content:\"\\f72f\"}.fa-wine-glass:before{content:\"\\f4e3\"}.fa-wine-glass-alt:before{content:\"\\f5ce\"}.fa-wix:before{content:\"\\f5cf\"}.fa-wizards-of-the-coast:before{content:\"\\f730\"}.fa-wolf-pack-battalion:before{content:\"\\f514\"}.fa-won-sign:before{content:\"\\f159\"}.fa-wordpress:before{content:\"\\f19a\"}.fa-wordpress-simple:before{content:\"\\f411\"}.fa-wpbeginner:before{content:\"\\f297\"}.fa-wpexplorer:before{content:\"\\f2de\"}.fa-wpforms:before{content:\"\\f298\"}.fa-wpressr:before{content:\"\\f3e4\"}.fa-wrench:before{content:\"\\f0ad\"}.fa-x-ray:before{content:\"\\f497\"}.fa-xbox:before{content:\"\\f412\"}.fa-xing:before{content:\"\\f168\"}.fa-xing-square:before{content:\"\\f169\"}.fa-y-combinator:before{content:\"\\f23b\"}.fa-yahoo:before{content:\"\\f19e\"}.fa-yammer:before{content:\"\\f840\"}.fa-yandex:before{content:\"\\f413\"}.fa-yandex-international:before{content:\"\\f414\"}.fa-yarn:before{content:\"\\f7e3\"}.fa-yelp:before{content:\"\\f1e9\"}.fa-yen-sign:before{content:\"\\f157\"}.fa-yin-yang:before{content:\"\\f6ad\"}.fa-yoast:before{content:\"\\f2b1\"}.fa-youtube:before{content:\"\\f167\"}.fa-youtube-square:before{content:\"\\f431\"}.fa-zhihu:before{content:\"\\f63f\"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:\"Font Awesome 5 Brands\";font-style:normal;font-weight:normal;font-display:auto;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format(\"embedded-opentype\"),url(../webfonts/fa-brands-400.woff2) format(\"woff2\"),url(../webfonts/fa-brands-400.woff) format(\"woff\"),url(../webfonts/fa-brands-400.ttf) format(\"truetype\"),url(../webfonts/fa-brands-400.svg#fontawesome) format(\"svg\")}.fab{font-family:\"Font Awesome 5 Brands\"}@font-face{font-family:\"Font Awesome 5 Free\";font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format(\"embedded-opentype\"),url(../webfonts/fa-regular-400.woff2) format(\"woff2\"),url(../webfonts/fa-regular-400.woff) format(\"woff\"),url(../webfonts/fa-regular-400.ttf) format(\"truetype\"),url(../webfonts/fa-regular-400.svg#fontawesome) format(\"svg\")}.far{font-weight:400}@font-face{font-family:\"Font Awesome 5 Free\";font-style:normal;font-weight:900;font-display:auto;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format(\"embedded-opentype\"),url(../webfonts/fa-solid-900.woff2) format(\"woff2\"),url(../webfonts/fa-solid-900.woff) format(\"woff\"),url(../webfonts/fa-solid-900.ttf) format(\"truetype\"),url(../webfonts/fa-solid-900.svg#fontawesome) format(\"svg\")}.fa,.far,.fas{font-family:\"Font Awesome 5 Free\"}.fa,.fas{font-weight:900}" var _Assets131cd67b6dd480f64ec4b1e6dc1172c43a81c7a9 = "{{define \"header\"}}\n\n \n \n \n {{.}}\n \n \n \n \n \n \n \n \n
\n \"textile\"/\n
\n{{end}}\n\n{{define \"footer\"}}\n \n \n{{end}}\n" var _Assets73d5f881dc044ff1def628efb1b6c854a3374148 = "\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00 \x00\x00\x00 \b\x06\x00\x00\x00szz\xf4\x00\x00\x04$IDATX\x85\xb5\xd7]L\x9bU\x1c\xc7\xf1?\xf8\x12\x02ax\xab\xf3\x02_B\xc5D\xbc\xd0Bb\"$@\xc8tnJ\x16\xb7Ev\xe1\v\xcc9]\x06\xc38\x88A\xcd\u0605/@\xe6\x92y\xa5\xbb\x9a\xdb\xc4\x172lK\xdbĔ\x97nŵ\xcf)0\x1a3\xa3ܰM\x91Hbf 0x\xbe^\xb4<\xf0\xf4yZh\xe7H\xfe\tiz\xce\xefs\xce\xd3\xf3\x9csD\xb2\xfccLJ\xd0ą&.Ƥ$\xdb~2\x0f\x8eH\x11c\xd2E\xa4p\x91\xc1\xa3\x10h\x03\xadp\x11%\xddD\xa4\xe8\xce\x05#\xb9D\xa5i9r\xd7\xccٞ\x03\xbc\xd74\xc5b\u007f\f<1\x18\b\xc2\xc8nP\xb93h\xb2\x1f$\xf7\xff\rWR\x89\x92\xe8\xc2p\x05\xaf5D(uB\xa9\x13\xdej\xf8g\rቁ\xff\a\b\x95\x83\x92(J*o?8$\xc5(\xe9%\xbcU\x9f\xf7~Ϋ\xbbo\x1a\xe1)\x11\x9eI\xf8\xe9\x04\x84\xb7\xea(\xe9%$ř\a\x8fK\x01\x11\xe9$\x92?\xcf\xd0at\xb7\xe2\xe3C\xb3\xbc\xf4\xc2B\xa2n\xae\xfb\u007f\x81\x13\xad3\xe8?N\xacC\xc4\xc0\xa3`\xf00D\xf2\xe7\x89H'\xe3R\xb0q\xb0H\x0e\x9a4\xa0r\xa6\t\xee\x04o\x00ܓ\xf12:\x1e\x83\xe0sIa1\xd8\xdb\n\xfd\xe3\xd6Ͻ\x01\b\xee\x04\x953MT\x1a\x10ɱ\x0f\x8f\x8a\x13%\x97\x18-\x03\xff\xb9xc\xbb\xf0\x8b5\xa0\xddk\rz\xa2\x0e\xea߶Gxb\xf1>G\xcb@\xc9%\xc2Rn\x05(\xf9\x8d@G\xfc\x19\xa6\vW\x92\x1a\xe0\xa8J\x8f\xf0LB\xa0\x034\xf9\xdd\x1e\xe0\xf3ſ\xe8\xba\x02g\x86\xe1\xccH\xa2\x86\xe1\xc2v\xf0\xe5\x81/\x0f\xdd[\xc8\xf5\xb3WMu\xa3\xac\x81\x1b\xa5/\xc7k\xd71\x96\xfb\xaf\xd8#|\xbeM\x00ܓ\xf0\xe6\xb1\xf8\x88lj\xc9QcY\r\xeb닲\xd3t\xbe\xf2k\xd2\xea\xc8\x04\xb0\x01\"5@\xe7T\xd9ipTQ\xf3ԟ6K4\x13@\x1aD*\xc0j\xf8*\xc0\xf6=\x91\x11 \x81Г\x10v\x80Sί\xa1\xacΨ\xea\xa7g\xec_V\x99\x02\x96]1\xba[cp\xe4ᴀ\u007f\xfb~1\xb5\xab\xae]\xb2\u007fcf\x02Xq\xc5hk\x9c\xa3\xb2\xf6:h\x02-\x8fd\r0\x10n\xff\xe6\x00ˮ\x18G\x1b\xe7(u\x12\a(1\x10\xd9\x02J\x9d\xd0\xfcFlc\xc0rb䫍\f@\x02\xb1tđ5\xa0v\xdbTz@r\xb8\x05\xa0\x04]\x13>m\xff\xcc\f8t\x12\x1e\xaf6\xea\xd6@!K\x97\xef\xb1ԭ\xf0ݩ\x01+\x03>c\xda\xd3\x01V\x11\x9f\xb4w\x99g\xa0\xb9km\xb5\xf8\xf3,mP\x02?\x97\xa4\x06t\x1c\x9c\xb0\x9d6;@2\xc2x\x04-]\xa9\x01\xa1\n\xf0]H\r\xa8\xdd6\x95\x11`=\xc2\xf4\x1bh\xe9\xb6\x02B\x15\xe0\xd1\xd2/ÿ\x9f\xadc\xf6\xb1z\xfe\xaa<\xc0\xcc7W\x8d\x9a\xfdj\x14*\x9eY\xabw\xdf\a\xef\x90Q\xfa\xc0\x10\xbai\xe7\x8c\xc1\xe5\xfb\x93\xc2#\x9bx\x11\x1d|\x14\x1c\x95P\xb5\xd7\xdcٹ\x8bk϶\xf1#\xf36ml\xdbI\xdbw\xf8\x01\xf3\xc87\u070e\xc3R\x8e&!\xce\x17\xc2\xeb\xdb\xed\x01\x8d\x1fZ\xc3=v\x98\x04`}\xb8\xff<\x8c>\t\x9a\x84\x18\xb39\x90\x88\x18G\xb2}\xa8\x9ckƑl\x15\x90r\xe4ֽ\x03\xf7$\x04\xeb\xe3\xe1\xde\x00\x04_\x04\x95s\rM\xf6\xa5<\x92\x99 \xe3R\x80&\xc7\xf5H\xfe|\xff\xc9\x0fصc\x8e\x1d\xcf/\x18\xf5e\xfb\x1f\xf6ᦙ\t\xc3`s\xfcP\xaa\xc9\xf1M\x1dJ-\x90\xa8\x14\x13\x95\xdei\xffC\xfa;M\xdfS\xea\xd4ik\x9ccŕ\"\xd8t,\u007fPGɷD\xb38\x96[ J\xaaP\x12\x9d\xf8\xae\x8a\x15o_\xeap\u007f\xdf\xfa\x8bI\xd5m\a\x9b\x10H.\x9a\xecG\xe5\xce0\xb2'~\x1d[\r\x1e\b\xc2Ȟ;w53A\"R\x84&=h[\x16\t\xb4%.\xa7[\x16Ѥ\x87\x80\xdcwǂ-\x90\xb08P\xe2F\x89\x9b\xb08\xb2\xed\xe7?-S\x12\xc4\x17x'L\x00\x00\x00\x00IEND\xaeB`\x82" var _Assetsbddb83b9a8840e063a3c00a419998f20584423c9 = "wOF2\x00\x01\x00\x00\x00\x005\b\x00\r\x00\x00\x00\x00\x85,\x00\x004\xad\x01J\xc0\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00?FFTM\x1c\x1a\x1e\x06`\x00\x87Z\x11\b\n\x81\xdd@\x81\xadJ\x016\x02$\x03\x84T\v\x826\x00\x04 \x05\x8a[\a\x8f+\x1b\x19k%㘥\xc0\xc6\x01\xe0!\xf1X\xa2(\xa1\x9a\xc0\xec\xff\xcf8:\xc6\x10\x90\xc1$-\xa9_AE\xa4\xa4\xc5\xe0dU\tTʕRT5\xb9\xf6\xa4\xe6-a\xc4|\x0e4k$\xee\xa6Jy\xfd\xfd\xe8\xf1\x99p\xbfT\xbf\x1a\x1206\xc2\vp\xeb=J\xb85\x86\xb9d\xa5\x0e\x9cW\x85*a\x1b߯\xac\u007f\x85\x95\xc3\xf4=mbt\xba\x1f\x92\x14M\xff\xff\xd7ڽ_f\xfe\xc8\xdbE\xdcOW\x894\xb1\x94H$*[\x11\x8ft\xe2\x86\n%y~C\xa4[M\xdanʦ\x91\x90\x84$\x92\n\x84\x96\x90K\x02\x160\x81Pz\x02I(-\xa1%(z \x02\x01Q\xa9B\xb0\x1c`9D8\t\x9e\x9c\xf5\xcer\x8a\x02\xde[\v\xe8Y\x1a\a\x96\xfaw굊\xd5O_\xef\x9e\u061dd\x1a\x14\x9a1\x8a\x01J\xc7\xe9*.]\xc98\xac\x02\xa2\xa5\xbbT\xd6\a,\r\xa0\n\x03`i\xc3C;\xf1\xc5=\xdbw\xf7\xe7\xa3\x14Eq\x93@\x84gA\x12`\x91\x06\x9c\x05\xde$\xcdd\x81a\x93e\x16\x87D\x19\xd7\xf6w\x04\f\xf8~k\x16%\xbf+g\xb70%w\xf8|\x85[\xc8\x02e\xa8$\xec\x1d\xff`\xbb\xbf\x8b6\xbd\xb9\x11IJ}J\x17\x93u\x1a\xea\x92\xfc\x89ܜ\x1d\x19\x03\x8fP\xe0\x89p\x98\x86\xa6@\xc0\xff\xb2\xa6-m\xb5zc~~|\x1f\x11\xa2\xe4\f\x84K\xa0\vQdkv\x05w\x83\x03K\x90C\b\xe4\xfb\x1aʩ5s\xfdʹ?\x81\x13\x17\x16\x8c\x81v\x97\v\x04\x92\xa6\xbd|\x9az\xef\xfcZ~|\xa4\xaf\xe6K\xb6ղm\xd9V\xa0\x94\xbai\xc0e\x10,\xc2\xc0<\xe3b]\x15p\x89\xe5\xf008/\xe4\x11\a\x11\x01\r\x80\xf6Fw\xfe\xd5Y\xb50\xb3!&\xed\xa52\xd5\x1b\xd3\xeb\xef\xf5[\x94\xfa\xffK\xc2__\x02\v,۲\x9c\x80I\x18'\x11f\xc0\xac\xe7I\x02{\x003\xf30\x0e\x136\xe4D\xb0\xe7\x19O\xc4ސS{)\xa5\xa2\xdfw\xedu\xcd\x15mj\xafh\x9b\xd31E\xa2ݳ+\x04pUv\xb4ø\xfc_\xc2\u07bbg-٣\x11Bh$Ǯ\xe3\x9f\xc7\xf0\xf8\u05f6\ahD\xf9\xaa\xa5ϻ\x05\x80\x00|\xec\xeb?\x01\x80ϟ2\x89\x10:\xb3\\\x0e\xa8\x03`\x90u\x05\x88\xa3\xee\x0e\xe0\xf2\x03\xbb\x81\x03\x1ei\a\xc0\n\xf8\x8c\xff\xa7Q\x9b\x01\xc37Xܣݳ\x98\x12\xd0\xf4\v\xfb\xeb\xa5\xeb\x942\xe7s\r\xad\f1\xdc\xf90\x00:\xa0h\x91\xd0\xc2\xf6\x9a'\xaa\xf5\xff\xf7Z`\xeb8\x00\x9e\xac\xc9 C\x1f\xdc\a\xf8\x03\x1b1R\xe4,$\x9al>\xa6\x92\xe5\u0530\x92&\xda\xe9d3\x9f\xe1f\x17\xe7\xb9\xc4\f\xff\xe7g>\xfc|ʕ\xaf\xcahcM4\xd5t\xf3,\xb5ݍ~\xe9e\xaf{\xdfg\xbe\xf57\xbf=~J(\xa5\xdc\xf2\xabnE\xeb\xda\xd0H\xa3\x8d\xf7Mg\xba\xd5\xe3~8\xe8\x9fe'\xf7\f\x9f\x9b7\xed\xfe\xf2~\xb8\x8c9\xb6b\xeb7\xb0\xe1\x1d\xd9\xf1\x9d٥\u007f\xe1\xab˹q\xe6\xc1\x1b\xac;\x0f~\xf1\xa0\x9cB)\x1a͵\xc45\xf6\xcc\x0e\xe9\xb45\xcej\xde~Y\xf5\x1b\x1e\xdd\xf9t\x93\x87\x94\xf5\x89\xf5kܧ۹\xaf\xab\x84\xfa\u007f\xc7|\xff\xc5\xe7\x1f\xbd\xf6⣇\xbao\xff٭\xb7\xec\xfeɶ+O\x0eۭp\xf0\xed˻9\xd7\x18o\xbc\xf6\xc23O=\xf4\xad#\xf6\xea\xb6\xcaDK.\xa4Q \x00\xa4\bK\xfe\x8f\xfc/\xf9\xad\xbc\x94\xbbrG\xbe\x92\xfd\xb2O\xf6\xca.\xd9&=\xd2,K%^\xbc\xea\xc9|8wdW\xb3\xc1L\x9a\xcc\xc4\x10gћ\xf8>}\x9aN\xa7wӛ\xc3\xe2\xef\"h\xe1\nj+\xb3&\x911\xf6\x1f\x1e\v\xcci\xc04\x9a\x94\x82\x9bl\xad\xf7\x05\xa0\xf7\rl\xf8\x1b\x9f\xbc\x18\xc4\xecs\x9a\xac\xb0\x86sb\xb1\xe8\xc3\x10\x12\xbb\u007f\"\x1e0\x0ev\x9f\x1b\x1a\x1c#\x1a\xc4CG\x81\xc1\b`\f&\x8f\xe8\xd8j\x10*\x81\xbc85\x14'r\xb0E$\xe1ǎ\x88i.\x87qD/%'\x96\xa1\xe0\x87\xea\xc4b\xc4h?\x9aJ)\xa1l\f\x17\xf3\x89\x13\xe0\x10\n\x021F\x1c6\x00F\xac\x10Q\xdaA\x05ߝ\xc5\x1a\x8bmI\x01\xde>{V\x9a\xeejl\a\x06\x1e1A\xb8\x04\xbc\x97X\x141\xc8\"\xcf\f1Dd\xa3h뗸\nM\\M\xe8\x00\x91\xac\x14p\xbf\xd4\a\xad\xf0\xb0\xc0ݔFu\xad\xbd\xca\x00\x85\xceӮ7\xb6\xc8\xee\x1e\xe5Ѩ\f\x04y\xae@V0\x1fD\x81\xea\f&\x1cA\xc5q\xdeZ\xa0\xb1\xa2,=\xfeT˪\xe0\xf5\x06\xd7X\xef\t4\x8c\x82\xf9\x91\xc9\xfb\x98\xfa\xbe(\x1d\x10\xfc\x88\xack\xa9\xc3J\xa9\xa0\x16>\u007fjj\xc1\r\xda\xdbT8\xc0Vq(\x9d\xe6\x87\xe4S\xedt\t\x1a\xbb\xb9\xa8\xfa\xd0\x03\x01kJ\xdb^d\xf4Ǩ\xf0\xed9ը\x98\xfb\xab\xfbZ6Eq\xf8\xb3\xcf\xf3\x97\xf1\xfa\xe1a\xfa\x0e)\xab'`\xacG34\x01`\xda\x03\xb9P\x83A\x13[\x1a\xa0\xc2+\xcc{L\xda\xf3\x9dB\xe2\x8ci{_\xe5\xa9d\x03ٕ\x10\xd2+\xfd/k(鄨2r:\xc2\x12\xb3\xfc\xaaSn\x83\t%\x19A\x1c\x19\xc5\b\x0f\xb8\x90\x80\xd1\v\x03\x91\x92\x89}u\x96\xa5\xd4t!\x95\xbb\xac\x8d*\xc5\xe4*\xba>Y\x9f\x92\x15cE\xdbU5AB\xc1\xae\x17\xb1\xb4.!OL:%c\n\x87\x1e\xa10~Q%pø\b\b\xe3*$r\xb5\xa91\x82/\x93\xc7\xda\xe7\x05\xbd\u007f\xc3\x10I*\xc0F\xdfGcj\xd3\xd9\xc9t\x14\x16\f\xe6jV'N\xd6\xf4\xa2u\xbd\xc4\f\x9c\xf5\x9d\xb0\xb06\x1f\x83\xb80k\x17M\xae\u007f\xdb8\xa5\x18f\xb5\x95\xb3\x8cz'M,q&O\x88G\xfbL\xb3\x9fO\xcb0L\x83\x98%\x1a\x81\xec\x16\xaaف\x8e\x04\xeb\x1e}`B\xbcF\xbc\x8bx\x1f\xf1%(a\xec$4\xb2c\xf7\xa5\xfd\x8a\xbeq~\x9c\xe10\xbc\xcb\xf74q|\xa1=j\x89l\x16<.\xc8\xe4J\x81\x95i\x1b\x8c\xe24\x15\x02|\x9f\xba\x80\x02\x11\xa1x\x04\x13\n\xa6\xcd\x04\xfa\xda\xd0n\xb9\x1d'\xa8\xc0\x84TR\xa6ğ\x06ٙ\xa7\x881\xe2N01\xfei\nX=\x83\b\xb2\x8dv\x9f\r(]\xacȄ\x1f\x13\x95\x95\xe0\t\xe5ª\x8d\xab7\xe4`팇\x1a\xaa_h\xbb\xbc\xee&\xbc\xb4RבX\xc0\x04\xe3\xa0\xe4*\x82\xbc\xceF\xdb\x19\x83\xa24\x0e\xf2Y\xdb~[\x96\x03Z\\\u05f6\x8dÆAF\xd6\v\xa5phP\xaa\xa9\xa1t\xf0P\x9ez\xed\xf0\xc1\xd8g@\xe8G\x0e\xef3(\xd5CGj\x8b\x9c\x0f\xffɃ#\xdeЭ\\1\x98f%\x02\t\xcc\xc5tڭz\x1d(@\xeb\xf0|\xa9\xcbE\fD\x13\xb1\xce\x14\xe1]w\xb0^\x85\xad\x87\xde&\x85\xd09V\x0fB\x93\xa3\xdcV\u0096\xd2\xc4\x1f\bGO4\xec3hBb\xc1\xf9\x8c\xf1(\xfa\x9c\x03\x8a\xc2LѾ\x11\x194\xba\xc4RGW\xeeh\x89\xc1\xdeږ\x127\xb3^\xb9R\xf4~\x11\x05džV\a+\xe2\xf8(ͯ{\x18\x83-Q\vM\xaeX\xd5\x1a\x8a\"ҩg\x01٤\x8b\xb3\xc1\xf4\x0f\xcbfHN\xd9u%\xa60\x1b)\xa1\xf6\xd1\x05u\x99p#\x15)\x88\x9f\xa01j\xba\xf4&ӯ!Lu\x15\x05\xd6\x15S\x95\x94?\x98\xcfNi\xff\xa0}\x13R\xea\xa1c0\xa8\x1dF\xe5!\xbd\x942*\xd1\xf8v\xd1\xf9A'\xc0\xe0\xe1Ɓ\xe2\x8e\xf9\xffG\x16\xb6%\x95_T\xe2\x14ׁ\x8e>\xa4\x14;\u0088dX\xb9\xc6\xcd\x14Sx\xc8\xdb\\\xe5\x15\xc4\xfdu\xc4x\xb9О6A\rV͕̏D\xc3Q\x04\x9c\xc86pc,\xc5|L\xf1\xf3\xa3\x01\xc4\xeb\xedܾ\xa40\xdc\xfa\n+\x9f\xcf6\xb2B\xeb/\x81q\xef\xc46\xe1\x1f\xdb\u007f\xe7Υ\xd8\xc9Sgφ/ûw\xaf]U\xea\xf7\xe7ϧ\xe5\x99\xd3\x17.$o\x92\a\x0f\xa6\xba\xbaoz\xf3\x99\xfa\xdd\xfbwC\xfe\xaa\x9e=w6U\x99\xcb\xcb\xee\x14}\xf0b\xb0\x97\\8\u007f!\xae2\xe5j\xb8\x98\xb1\xa6\xd0/$;䷴Q\xfd\xf0\x9c%HI\xf3\x8a\xa0\xd7\xc8\xc6\xc3\xd4N6\xfd\xa4/'\x94ơ\x13鿎\xd7P\x8f\x1b\x8b\xfac\xb0\xb6?{\xad\xae\xf7\x96{\x05TZu\x14\xb3r\xaap\xf2%z\a>paV\xd4}o:L\aa\xa0\xcbI/\xc0z\x06(&\r :(0\t\x81X\xa9(\x95\xc2X\x064\xa6\xa7q\xea\x1d\xe9i\xf2\x8c\x16:\xc2e6\xa7\x10op.\x10/\xb0\xda\xd5q\x95\x17a\x1b\xa7N\x04.\xa1&\xa8!7t5\xaf\x97v\x96\t͒6\xd8\xf1\xf7m>\xa5\xb2\xaaz\x16\xa7\x92\x80\xa6\xa4\xcb6h\x82\xbe\xb4\t\x1c\xe4n\x05ؑ\xaby\xf9Q\xeb\x13\xa6X\xd2z\x1a[\xc1iW\xe7\xbe~\x0f:\xe2~TY\xd9ʰ\xddI,\xac\x19lv\xfbG\xa1^ᖹ^\x85h\xbem\xea!U{\x8fR\xe8\x92\vq7Վ>o$z\x0f\x10\xdaz\x81\xc2\xda\xeb\x14\xa7V5\x90\xe1-\xfa\xa5N\xb3Ći\xf1U\xfd\x85\xbe\xb2_\xba\xaf\x9d\x88\x06N\xc7m\xd90mZ\\\xf1\xd1B\x9b6\xed6o`\xf92\x80_\xd6\x1c_\xe4\xaf\r\xd6ZSen\xb3):Z\xbcz\x84r\x9b!\xce\x02\xcc\x15\xf4\x0e<\n\xd3leh\xfcʴ\xe5b\x84F\xc0Fv1\x85\x1c\xfdʖI\x88\xf8\xbc 0|\xeb}\x0e\x96e\xa2\xa3!\xb71)q\x86\xddT\x88*\xe9R\x90\xe4xv@\x04HV\xa6\x9eE\xa9\xaf\xad\xf2㋚\x11(\xa0\xf8\xf91\x9f;\x0fs\" \b\xb2$\f\x89\x83P\x9b\xea\x8b\x1a:P\x9f\"\xa0\xb0\x01\x04\xbc\x9e;R'\xd4^V\x15\xe8s\x0f\xc8\xf1\xee\x04=lg\xe3\xdcN\xd0\t\f/+y\xecX6\xe8LCh\x03\x14)\x87_V\x99ꍎ\xe9W\x92HfSێ^\xbe\xaa\f\xe9\xf3\xaar\xd3\xdd,<\xd9P\xe7hSN\xcb~m\x85t\x13\xaf(\xac\xa9u\xdc\x02\xab\x8b\x9a~AL\xfa]Ӡp$~\xca\x1a\xfaYgrB\x8f$\xf4q\xd0\xf3\xa0W\xbf\x0e\x91\x90^3eUS\x03\x06\x85\x01\x9ekGn+\x06\x13W^\xf8\xea\xefhP\x13\xfa\x9bE\xb0l\xec\x12\xdeH\x98b\xe62\x03\xfaM\x1d\xad\x89\x86\"\xffv\x94\xfb\xd8z\f\xfd\xc3u\xbb\xaf\xfat\xe0F\f\xb1arO\x97@<)\x1e%\x16\xe0\xd5ר\xebc\xc0\xbe\xdai\x0fT\xaeQ\xb7\x9b7\xa5n\a\xa1y(J=sÎ\xab\x81\x8e\xb2l\xcf\x1f\x9c\x85tt\"\xf5H\x8cs\xb5\u007f j\x13\xc1\xb2p\x86+K\xebp\x97\x10E\x1f\xe7Y59\xdbl\x03\x81\xa8\x86h˴|c\x06D\x96\f1-\xb0\xb9\xa8\x12\x1e\xc3\xfeT4\xc4\x14fi\xc7\xe6\x1d\xdc\x02\xb9\x95~3\xcax*u\xaaP\x19{\x88\xe8\"\xc67\xd0\\7H=V\xc1\xa4./Lb\xc3ER\xea_b\x98\x9c\x1a\xea\x19%˕\xf2\xa2&\x9ah\x0e\x156\xd6j\xa10\x1a]ζ\xe4\x99\xdf\x0e\x83KU\xe0%\x8a\xa7kʉ\U000dae2d\x19<\xdfL\x82E\a\xf7/i/\xae\xfe\xa6\xb0}\xcc\x1e\xa5\xfe\x85\xaf\x86V\xa7\xb5\xfbr\t\n\x86Ȱ\xe6n\xa9XL\x87\xc59x\r\r\xd4P[\xda/\xf9\xf0]\x12\xe7\t\xcdˆ!\x11\xa0:\xe4\xe8\xfaQm\x1b\xae\x88\xec\xef#)Wn\xa6L\xee\x11\x1fT\n\x19@\xb9`\x9d_/\xd5ao\x85\xc4[D\xc8\xf0\xcf\x01\x15v+\xbb\xae\x89q\x12\xcc]#Bіu\x9d\x9a\x8a V\xd9\x05G\xb0\xa1\x01\x84\xaf'@\xf7\xb9}h\x9d4$O\x0fؐG\x19L^i!N\xa4\tL\xc3\n\xa9\x0f!\x84\xcb\x18\xd0K_&\x9fk3m\xfd\x8e\xfc{ȥ\x15\aS:\x9a\xf0|\xb5m\x17X\xb3\x86\xbd[,\x1b \xbb\xae\x1d\xde\xd7\x13\xe2\xf7)\xd4\x0e{opm\xa7\x9d++7\xa1\x96!\xab\xe0\xf8\x1c\xcb\v&\xf4:\xb9\xe2\xfeu@\xa1\xaf\xf9ݷ\x8e9>M\xd7\x1c~\xb8;\x91\xa4\a8G\xcdIg\xf9\xc1K\xefY7ܕ\x87\x9e\xec2\xc6\xec\xe1#\x97?,\xfb\xcfRG+\x99\x91\x81\xa8Nz\xb5\x03\xbdo\x9eϛ[>1G\x8e\x9b\x04n\x8b\x96\xa3и\x8a\x18[qB\x1c\xe1\xc7/2\xa4>\xb9l\xbdal\"\xb7w\xaf\x04\xfb\x88\xf5p\xe3\xdb\xe6\x01\xb8\xb9Ų֞\xdbd>ڳb3\xba\xfc-\xe5'V&\xcc{%EV\x01\u07b4)\xf48\xd2F)\x8a\xb9\xb9h\x0f\xd2[\x11L&\x1f\a\x85\a\x05\xbeϹ\xa20\x17\x12d\x1e\xf5\x18\xbe\x8e\"d5}j\xd2\xf3\xce\xc0\v\x1f\x89[X\x1d|\xba{R\x97\xec\xafݐ\xa3{\xa6ܭV\xc0\xa1\xcc,b\fq\xe7\x05\xd6:\x0e\x9cx\xb4\x0e\xa2\x91\xd2\xdc\xc2\x1a\x94ܬe\x0e\xacF@\xbf\xd8V\xf8\x1a\"\x89\x8a\xbc\xa3\xff!\xf0hPw\xc4/Z\xa6\x8c\xca\n\x93\xea\x95&U+\xb6/Z\xad\xef0H\xaf\x1f\x94\xe2\x9137\xec\x1d\xdb\xc2^j9\xfa\x9et\xad\x03-\x90\xde\xc1(:\x8b}\x89l\xaa\x83\x84ɇ\xad]\x12F\xb4\xee\bQ\t\xdc\xf8\x0ea\x18y\xa83q\af\x04p\n\xa7\x12K\xdf\r\x17\\\x8f\xe2\xedn\xa4\xa4\x8e\xf4\x8a:\x14\x1c\x04\xed,,{R\x0e\xcb9\xc2,\x9b\x15\ax\xcb9\xd0\xed\xdc;\xecp\xe5t4\xa1P\xaf\x03\xe8\a`\u007f0[\x12\x9a\\h\x02\\\xb0\xd8\xd0\v\xdf\xdd\bd\xa7\f\xe6\x86\x10\xdc~ӄ#4k\x1e:^||&Y\x15Т\u007fτhօ6\xa5\x19$\x89\xfb\xa9\x85\x9a\x96\xaaE\xb3\xbd\xed\x904\x91e\u007fn4\\ϴ\x9aU\xbb\x90\x0f>\x1e\xe3v\xcdN&\xc3\xfe30{՟\xe3\xbao\xf1\x12\t\xc6l\xd5ăg\xba\xb7\xd3b\"\x8d\xdcy\xa7\x87;\xaby\xf9ʓ\xacyg\x979\r\xb2\xc72\x06C=\x96N$th\x96\x80\x9a\xdeV3U\xc9r\xd5\xe4Gٕj\xd4A\xff\t$\xd1_\xb6A\xc8{\x81\x86F>-\xbf\xf1\x8a}\x1cm\xa3\xe1c\x10\xfd\xf9R\xcdØ6N\xb5S\xef\xb1Ց\x96\xa3\x00z\a\x1d\U000d7ac0b\x9c\fQ\x04\x9b\x043\x88\xae\xd5 \x06\x83\x8f-\xd1\a\xc9?\x16\xf4\xa7\xda}o\xa7e\xe0c\xf1\xd8[ɮ!;u\xc5`M\x9dx\xaf`\xbe\x8ah\xb62\xb1~\x14}\n`\xda~Q\xaf\xfc\x94\xa6\xf1Q@/]\xee>\x03\x93H\x95\xeb\x89}\x00\xbbc\xf4\xe8\x1c\xa8[\xf4\xa7\x8e״cD \x82\xc6Iu\xa9\x19\xb6\x93Ͱ\nS\x9c\x8eDk\f\xd0u\x96\x92?5\xbe\x10e\xb9uy\aD\xae\xac\xb1ƴ\x963r\u007f\x9a\xab\xb8U#\xa5d[\xba9\x80\t|\xa9+\xd0,d^>\xff\x00+\xf9~\n!\x9a(\xcccK4\x1e\x96\x98\xbf\x90h\xf3LJ1J\xac\xc4/\xfb\xa5{\xff8;6\x9fd\x83u\x8c)\x82\xbe\x03D\r|\xd2\bXAJ\fB\xee\xccK\xe4\xf1\xfft\v\xee\x11\\\xb5\xa3\xf2\xa1rB\xe7\x9an7\x8bB\x85\x1e:\x8c\xef\xf9\x81X\xa4\x98\xa5\xb7\x82\xe34\xa2c\x1a\x8e5\xd3\xed錯\xe9\xfeu\xbdҙU\xeeoq\x89+)f*ϻ\x9ak!\x86\xf7\xfe\x80\x85\xa8\xdaP\xe5\xa5\xea\xda\xec_\xd6xy\xa9YJ\xebjS\xeb\\\x18܀\\\x86n%\x15u\xbc\xab\xa7Wq}E\x91\xeb\x04\xc6\x1d\x81\x82[\xf6\xd8*\xf7\xf7\x16\xbdT\xae(&W\xa3\xf6\xd9\xe5\x0625\xf9\x1e\x91\xbe\x8c\xf5T\xd3\x06\xe7\xf1\x86\x1a\x1dC9-\xde\xefvDӭ\xb3\x16zo\xb0\xb3<\xb8\x91ŕ\xa7\n\xab;=\x05\x14\x04)!\xf6\v=-\xd5g*\x8d\x94\xf0\xf2\xa8A\x97\a\xb4܆f{1٣\v\xa0\b\x92\x97\xff\xa2\xb8\xbct\xce6P\xa1\xf4\xb0\x06q\xfaXF\xce\xcdf\xe8\xa9\xef\x99x픻;\x8cD>\xd2\xfd\b\f9bJ\xba\x0fL|RG\xfc\xac\xabC\xa5;\x01\x97[o\xd3\x1d\xac)\xda\xc5^0\xd9\t\x1c\x90\f\",яk\x18\x9cK\x1d3\xdb(\x91#n\x02\xf3\x85\xa0\xe8\xa8\xd2h\xf4\x1b\x83\xdd\xe1\xda-S\n\x1a6\x94\x16\xd4\x02\xe6\x05\x95\xb8M\xe5[\xbd\x843\xf6\x1a$4\xcb\x02\xb7\xbf;\x068\xb4\xe8\xfa\xaci\xc2я\xc0\xd6`\xefn\xa1/[\xd9\bkV'\xfe\xe4S\x8c.\xa5j\x12\xcb\xf8\xbe\x9b\xd4?]\xad\xa8\xab\x96\x9e\xc7蒫\xa6\t\xef\x9c;\x8a\x90I\x06\xf9\xb1\xed \x18\x88|sse\xf1\x9aZ\xe0\xbbk\xe5\xc7s\xc1LV]&9:+S>*m\u07be\xa3pm\xd76\x19j\xb8&\xfd\x81\vru\x93U\xc0\x03\v\n\x1eñ\x01\xa5\xa9#\x1a\xd8\xd0\xd6\x02\x8d\xa0\xef,|\xcf\x05\x88W\xee\xf7F\x0e\xe3\xb78\xe9k8B\xa0.~1\xd4e\x8f-\x00\xd0&\x10\xfa\xb2\x13\x88\xe3\xc2\x16*\xce/ֻ\x1a\xba\u007f\x966F\x94\xc8\f\xe7\xe5\u009a\xa6*D0@\x9c\vV\xc0\xb18/@\xfc\xc1\xf1\x15\x8c\x05pa\x0f8\x98\xb3L\x9b\xb6}\xc6\\\xed\xffy끏P\x87\x8f\rܣ\x16\x0f\x86iᮚ\b\xfa9\xdb6\x13\x02\xc5\xc3J\xa9(\fPU\x8e\xa5\a\x05e\x11$l\xb8\xf6\xd5\xfb\x18r\x1e\xd6\xd3,2:\aV\xf4\xcaA\xb5L\xad\xdfaq\x01:ӗ%\x10\xffN\xc6\x14ө\u007f\x86\x11\x9b6\xc88\x0e\xd8F\xe8t\x1fgf\xb8\xb2K\x14\xba\f\xfcN+H躐\"O\x96\x10\x05\xa1\xe7D\xcd\xf3qX\xa2\xaaT\x92jE\xc9p\x90\xebe\xbf\x90\xc6ż\x97ʙ\xab\r\x14\x98+\x1c}p@8\x92\xaa\xc5AI\xb9\xad\x146\xca<\x0fh\x97\x8ba\xc0\xc2|=l\x11\a`\xce\x1e\xed\xaa\n'.XQ\x8f\x86džP\xa7\xf9\xb2X\xeev\xd08*\xff\f%\xca}wk\xb6X^\x94V\\\xfc\v0.\x8e\x84<\x8f\x9e\x1co8\"\x03}\xc1\x1b\xce\r/\n\x96\xf2<\x04\x8a\t\x0f\"\x98h\vt\xd9\xe0\xb9U\x9c\x8b\x13G\xd4\xcdq\xe9\x16\xfa\x86\xf5on\x93ۊ\xb4;\x85\x03\tZ\xae\xac]\xc7\x19\xa9\xf7\"\x86\x05\xe6\xce;z\xb0\xa5\x9e\x89\x93#\t֮J\xea\x06\xe2\xc1ٰ\xe4\xe7\xa3\xf0`\x88\xb8\xdaKOc\x1dy\x91XL\xe8ɠ\xa4s\xb6\xd2\xfa\x8d\a\x9a<\x8b\xf6\xcev\xf1P\xf7\xb8\x1a\xa8\xb8Oշ\xb7]~\xd5\x1b\xbd\x15R\xaa\xed\xf0e8 \xa4>\xf3#\x8d\x9cֲ\x1a\xfc\xa7\xf4\xe4\xfb\xcc\xc08\x85%\x9ci\xb9\f\x13\xa5OL\x9a\xac\xd71,:\xeasnϺZ\xc7\x1a\xe6\x11GF5{3t\xe3\xcd~\xfaRD\x93\x13\xe2\xa3\vIB\xa3\xe8\xedkJ\x1c\xbba4\x19\"\x9dy2`L\x1fn\xdew\u007f\x14\x9e[\xea\x8a\xc2\\M\x13M%\x03\xec9\xac \xc8>I,\x86\xab\x88v\t\xe8\xaf8\xe3\x92*\x05`\xc70\xb6Ȇ\x11~$\x17ш'\x18A~\x86\xa8\x17\x1d\xa1\x8d\xb6\ng\xa7ɛI@bQM\x9d\xe6_\x95){\xa1h\xa6\x9adL\xff\x03c\xb2\xbfu\xe9a\u007f4\x05\\\xcf \x16\t\xcf\xfbN.'\x9c\x17\xb7.Un\x81\x9av\xda\xf0O\xf5\x1c\x82\x90\xb6!\x88\x802o\xa9\xbff\x87dK\x9b\xb0m\"\xa6\xd5A\xb4>\x9a&]\xfc\x9b\xc3Y\x86To\x19{\xf3N\xe9J\xbf\xb5\x1c\xc0R!\xcb\xd5\xdcĠ\f\xa8\x19XvI\xa6f9ξF\x0f\x03\xc9a\xe21C\x1a\xa9\xcd\xf5\xbb\xe6~ĄнI\x06/7.d\x9b=S\xf6}uh6h\xd6?\x99o\x9fg*۴\xf0\xf3j|__\xe4eL_\xcfT\xdeKŝ\x10\x8bO\xd4\xfa\xdeSf^?pH\"\x01T\x86\xf2\xe8\xd4\";\xa7G\xfc\x1b\xbeE\xef\xf5\x84\xdfŝw\x91}ꨲ\xc7S\xd7\xda,k\xce\bh\xa8\xb8p-#bՠ\x8bޭ\xac\xb5\r\x91\xa3 \x98\xd7\x15\x96\x9a\x1a\xc6e\x8e3m\x88\xe7\x06ʒ\x15jm\xe1 W\"\x96`\xba\xbc\xbd\xbb0^\x18\xf7\xff\a\xeaL\xa6\xa5\xd7\xd1ot:a`\xeb\xb1\x1b\xdd݀\xda)\xff\xa2\xba:\x0f\x0e1G衝\b\"\xb4q>\x89R\xb4/\xf2Z\x04&\x06ŋn2\xaf\xaf\v\x82̃l\xc6\xdd\x16\xe5r\x10\xe4\x12\x10\xc8\xc4\xec{\xff\xc6{G;9\x99\xd5^\xe5\xc0P\x11\xa4\xe3\xd5\xef\xe3~\xe0\xe6_\xd4\xfb\xd8\x05\xac\xc8\xefM\xb0\v\xa6\xa1\xe8OW\xf1=\x1f\xe9@/\xed\xf7\x00\x15\xd6\xc7\xfe1\xab\xda2\xfba\xab`\x81w\xa9\xc0{\xde\xc4\xeb\xb0d\x18\t\f'\x99\xe3\xccɓ\x15\x8e'A7\xc1\xbeZ\bbJS\xdbe\x02\x13\x8d\x1b\xa2\xb0\xde3\x84\xc4\xc0&\x9b\xb1w\xee\xefb\xbb3\x1b>\x18\xe2\\\x8c\x97\x99i\x04=\xf6Y\xd5&\xa8\xa7\xa1\x10\xfd\xf6灛\xa7\x9au\x98\x9fl\xb6*\xcc\xf6\xab\x10\x94MP\x8e3\b\xd9\x10\x04Bh{\x81r\xb9\xa2ot\x14\xd2頿\b{k\xed\xef\xfa\xde\xd9[72\xb8{j\xaa\xceiwv,kGj\x1de\xccq\x94D[\xe4\tWǾ\xbd\xae\xba\x9c\x9c\x1fHy\xd9\xf6oX\xeft\t/\xf8Q'\xdb\xfa\x8d\x15\x0f\xe1\xec89z\xb0\x04d\xb9\xe0ӣ\xd5\xd5\xed~8\xa4\x8bJ\x82\xc6ז\xb5\x1fiώ\xd1\xf9>Ӎ\x89]N0\x10(\x14:]\xfe\xf2\xe1\xc8i\v/P\u0600MY\xf2<\xc8\xe6K\xf3\xf57\xf4\xdar\xc3?\x0e\xb2\xa4\x1e\xa1\xaaF\xd0\xfd\xa7w\x89\xab\x93\xa5Q\x93.~\xb3wo\x1a\x12t9bP\xcf2Ð\xba_\x83\x87T\x96[\xf31\xb0\x1b\x86\x90`\xddB~\xd62\xb2`\xc5&\xde\xcbgQ\xea\xe2ڲ\x9e\xe4o\xa3\tq%\b\"/\x96\xdbk\xf37\x98\xf3\x81M\x832\x04YfYI\xfer\x88\xd5\xcfʨ\x83\x99z2M\xf6#\x9bV]!\xeawY\xddDz\x840\xc7\x15K\x03l\x01ú;\xd82x{K\xfd~\xad\xe7bŔ.8\x91vb\x1b}\xa6\xa40.6c\xf6W\xab>\xbf\xcd,\xfb\xbf\x99Q\xaazM\xff\xf2#\x0f>\x0f\xb7\xe7\x82\t-s\x9c9\xd3ע6\x91]\xf6\x93ԙ\x8b\xee\xca\xd7\v\x01u\x9a\u007f\xf0\x95\xa1\xf1.\xaf{@\xf2\xb3\xf3\xe8\x90\x03\x8b\xde,t\xdc\xe5qJ\xac\xe0\xab\xd9\xf6\xd9%046$7\x82\xf5V\x9c\x13\xf7\x12\x89,b\xbd+^\xa0!\xb0&\x8a\xed\x00\x02y\xbfb\xcatL\x92\xc5d\xa3/\xe9&\x98b,\a$\xcf\t`D,\r\xd8\x0f\xb6\x8dS#G\xeez\xeb욆'\xb7\xbe\x88\xa2\x8eoӣ\xc7¢\xea\xf33t\x0eMC\"\xbe$+<\xecH\x88\xaa\xc6+\xb2 2O\x96\x96\xfb,\x97\xeb;\r\xdc8\xde7|>\x8c\xe9\f\xeb\xf5\xd5O\xe9}V,wF.\xcf\xcb\tW\xa2.\xeb\x19#\x10\x85\x96\xc31\x02\xbd^\x10\x13hA\xbb_>\xea\xf5\xa6\x1a\x15\xcb}\x95\xfep\x06i\xb4\x81\xa66\xab5\x1e\u007f\x195\x00ۗ/\xb7W\x02\xea 9\xef<٦\x01H|V\b\n\x98i\xd5*\x1b\xb6\xd9;\xb37\xa8\xb3X\x86 \xf1z\xa6K:I\xb2\x88+\xd0˅\x80\xd0o\xd7Q;\xb3M\xdcI]W\xf6iV9\x91B,\xcfRsS*\xf6*\xb6L\xd04\xd3t2\x99+v\xe4d\x0f\xefq\x00\xfb5b \xa6_\xb7?\xa6Ky\xd9\xcap8J\xee)N\xf7#b:\xc8:\xb2\x10y\x89\b\xcd\n;0\x848\x80ޠa\x1c\xee\xa1\x05xK\x11\xae\xa5\x86\x12M\x81\x0fz\x10\xdeǔ\x04a\xbb\xff\x8b\x1b\xd2\xfc\xfc\xf9AԦ\x1e\x86g\xc4\xc0H\xd7\xeaǸ\xbe?;\x99SP\x02τO\x9a\xc1E\xa4\xde\x01\xb4\x9e\xc3\f\xcd\x064\x88#\u061d\xf0\xce\xf6D\b\x94%\xa6\xfb\x89=\xe5Qp\xb82\x9b'\x15\x83\x1f\xcdg\"\xb7\x0f\xf7xu\xd7\xc8@\x84''\xc9Gy\xf0\xf3\x9f5Cq\xffuc\x83$\xcc}\xf0 |\xae3\xaf\xafg.-Zb\x15b\x95f\xb0\xa4\x87\xb60\xceVJ\xb7`\x13\xbftK]+a\xd5%<\xac\xe8{T\x87!T\x03\xe1\xfd\xe2\x01\x82|39\xe0\x89\x14\x19\xaa\xb1|\xce\x18\xcbKx_\xcd5i\xe7\x1fd\xf8$q\xec\x13/\x97\xff\xf1꺱\xaf\xf3O\xe7\t\xade\x19*\xfe$\x80\xbcYN\x18(\xbe/\x04\xd5\x04\xa3\x99\x8cFL\x85\xe8\x97\x0e?DZy\x96\xb1\xe5\xd0L\xc1\x87\x18\xaf\xbf\xfa\xa3\xfcr1\x9f$\xc6\xc1\xf9Z\x13\xb7\xfa=af\x19\x9bC\x89\xde\xdag\x8fsh\xd5\x14\x13a\x8e3\x8d!]h\xd7\x05b\xf63\xa7\x96\x9f\x86\xa0\x80~\xf1\xa1\x89\x10\xa4\x86 S\xf0\x95,\xe2\x141k\xf1\xf7\xd8\x0ff\x89\x86>\xeb\xd0D\x1d8\x14!B\xb4\xa1\n\x10\xe6T\x8a\xa8\xc9\xd8TO\x85 ,\x9a\x9e\x92R\x92\x05\x1f\x04\xa4l\x1f\xe1\x87\xd6\\\x8cW9rl\xd2\xd1dY\xd05\x98\x17\"!\xfb\x80\xc9,\xe3\x1c\x94&\x1eT\xb8\xfd\x03\x8bSP#\xf7\xcb\xf1\xf8\xf2\xfb#\xa8^\x9f\xc0\xc1\xdf\xdcc\x811\xa1\xb45\x0f\xb6\xd7rڻ\x1e\xb4\xd1>%\x03\xc1\x81\n\xd8Eq\xc1\\\v\x97\xbc\aeN\xbf\x15\x81\xee@\x9c\xa4:\x96\x90J\x88\xad\x96\x18&\x12\xec\xf6\x84\xa8C\xd3\xcf\xed!0+\xc8\xfds\x88&1Q\xa3NJ\b\r\xf9\xd9\x1dĂC\f\xd2\xf0\xfaCQq%e`\xc4҉\x90=(M\x84\u05eb\xf1H'\xf0x\a3\xa2\x82\xe6\xc7YVx\x92\xc5\\1\xd93\xb6_\x18\xe9\x1bĈ\x82\xdfy,\x83掕\xa0\x80<22O_\xa4\x1c\xa0J:\xaf\xa8ͼ&\x1eh\xbc\xbacN^o\x1eu\xb9\xe9\xa8I\xaa}\xd65HOI\xb5\xcc\x06\xc2#b\x96\xac\rq%*)\xcb\">\"40\x91\nP\xa9\xe7\xe8\xd0WZu\x9c\x98 \x8enT\xc1\xe5\x1e\xb0\xe3\xba1\xc0:!D\x90\xac\xacS\x16s\xb0\x02\xeb&\x9b\x1eN\xa2XjN\xec\x18:\x1c\xd0\x1d)\xb7\x15\x8d{\xfb\xfa\xe9\xff\xb5\xc9\xcb\xcdT~\xcf\xc8x\xbd\xf9u\x06\xe3{e&dϷeUP鏗\xacn\xca`\x94\xd6*3\xb7\xa7o/\xa2\xbf\xde\xfd~+\x89S\xcc~\bp-\xa0\xf6\xa8\rg\xba\xbd2\b\xf1\xf8\x19!\xa3si'\x82\xf0\xc1ȭ\xbc\xc0Q\rK\x8f\xd6\xc8[\xc2\x1d\x82\x8c`\x93\xc2Q\xcb}B\xc3+\x02]\x8dc\xc5\xf4\x98\xec\xf4\uf6b8\xe0\xed\x9b\x00\x96\xdf\x1c\xe1\x8f\x1c(i\xfdi?a\x92\xb2jD\xe5\xd9RG\x91\xefTA\xf9\xe7\x9dO^\xe3\xe1\x97_\xfd6\x9f\xa8\xf5\xd6.\x1b\a/\xf8\xf1\x84\xebq\\W粸\x80R4%\x9b\xea\xea\xb2\xef\x16\x86bv\b\x9d\a\xb2\x0e\xd6\x05%\x06/\b\x9b\xd4\xfd\x17\x8f\x9e'\xdcU*\x8a\xec\x02?\xcc2\xd1OǺ\xb3d\xdcȻ\xa5\xea\x86_\xb7\xbfio\xee\xe6\x8c\xef\xd8b\x1a\x81\x03\xcbXY\x1b\x82`\tUa^\"L\x86$k\xe0\x12@n\xc4QUndW\xe2ήH\xaffn\xae\xaeO\x8b8\x9b\xddS\xf3\xac|\u007f\x01_`.*r:㼛\v\x12\x1b\xb7uPTW\xca\xe3^=\xbdɁ\xbc-^\xc4|\xf21/\xa8܋.˟b&\xef֊_cN\x05/KJJ\x9e0\b\x85e;\xcb\x187\x10\\\xe4#\xc8n\xfd\xcfލ\x90L\x1eĹ\x18\xe3\xd9z\x9bLS\x8d\v\x92\x931\x06\xeb~\xb9\xc1M\xb7\xed_}\x01i\x91\xcc\x17C\xc3\x04G3\x9e\xd1\xfd\xc9$\x1dYL\xfe\x80^\xf1\xe2\xda\xc6\x1d[%\xa37x\xc1\x12\r\xbb]ʩ\xcb`q\x13S\xde\xe1\xf7\xc0\xaf(\x94LZ\x99\xc7%\x06\x91\x18\xd9\xe9Gq\x92cg\xedG\xf2v\x11Ic^K||}t\x84ȑ\x9eh\xf3!\xe4\x9e\xde\xfc\xee\x1eW̐J\xdb\xd9\x1aI0\xefƨd\xef\u007f[\xe1A\x8f2\xa2uH\a\x89\xfam,#\xb8\xfc^s\xabH\x05\xfa\u007fw8\xb2=\xb7\x85\xdeDn\x0f\x81\xf2\nރ\u007f\xd7\xd83B\x88\xd4\xf9\xf8.\xf1\xf1\x1a#!\x1e5\xceY\U000b24de\xb0|\x0e\x99q\xc9\x03\xfc\xf0\x84\x17\xc8;N\x8eU\xbf{\xa7\x8f%7\x9c\x0e<\u0530\xc2\xf4S\x1ar\xcc\xf1H~\xca\xdc\xfe`\xd0A\xac\xdeȳ:Y\x9d\xac\xa2\xe7\xe4\xd0U\xb3*\xf9\xa270\x9aU\xf4\\\xda;\xfa[\xc65g\x0fc\x91\x1ctci\x17o\xd9r[\xf7a1\xa7X\x9f\xde\xe1\xff$E\xaa\xb5\x19\x1e\xe18\t\xe1\x0e\xe5\xfc\x89\x8c\xfa\xfa\xfd\xf6-\xc8\b1\xcbΚ\xa8\xadK,\x1f)M\xbdb@\x15w\xf5q?\x10\x9d\x95\xde\xd1\xff\xb2\xe4;\xfb\xa5\xf7.+\xea\x9dsZ@c\xe0\xa1ᨻ\xacK.\xeb\x98\xe1;N\x9c\"\x1a\xcd\xd4\xe3G\x8aӻ]\x00\xfa\xde߰\u007fR{\xb7ӽf\x9e\x1a}\xf5\xee\x11~̽\xbf#&\xd2\xe5JqJ\xdf\xff>\xf1=\x9e\x83*\x99Y\xb55\xe5k4\x05\xe3\xe3#\x9e\xd3q\xaa\x87?r\xc6I\x89\x8a\xd1ݑ\xd0\n.\xf8h\x82\x865\xb1\xb0[8\x85\x1c\xa2\xf3\xbb풽B\xbc\x8c\x1e\xc7!x\x119\x01\x17\xee\x05{\xd6\xe1\xe8D/\x0f+\x06\x85\x86\u06052\x02\x99\xc8a\xd9\xd0(\f\xc01l^\x9f\x15}{\x00.\xd7\x04\xb9\x83S4\xe5\xf0\x1c\xd8\xc7\xe3\x8b1\x8a\x8f7\xbb\\\x13\x9c\x12\xdeG\xd3\xec\xb7F\xd5W1\x95\xc5\x15\xefF\x90\x18\xbet\x0eI\x99\xb7w\xcd\xf3\x9e\x0fx*Zq\xa9\xf8\xb9\xcaA\x14E\x1c\xd2\r\xf6u\x12G@\xa3\xa0Bw\xc1\fV\xfe\xa6\xb3\xefe\xe3N+h\x14\b)i\x1b\r<\x8b\xac\xba\xdc7\xe7\x14\x93tgTW\x12B\x13Ҍ\xee\x9e\xf3\xf4\fŵ\x1e\x9a\xd7\xcb8\x0f\x1b\u007fy\x161h\rOA\x82\u05ff\xf4\xb8\xbb\x1e&i\x8f\x86\xfb*\x8f\xd4e\x1a\xba\x92\x8aߌ\xef\xb9s\xb1\x0e\x1c_\x15\xf3\x02/˲3\xed}kkF\xd5\xf3\xd5{{\x1d\x05|\xb1ϯ9\xc2H\x95\xa40\x87\xde\a?\x8e/C\x13\xfa\x80-E\x96\f\x94\x18\x8b\x11\xaf)-]c?\xd71\xcabA\xfe\x99jZ)\xb7{\xe8\xcf\xdafY\xe88\xa7\xc5U\xd8\xc2\xd4\xec\xd9\x19v{\x19`\x0f\x1b;\xe3\x14迯\xfc>\x9a\xc9l6\x8f\xa11:Y7*oDGFR\x1eG\xd6<\xa6Я086\xfa\x19-bAk\xe8\xfca\x84\xd8R\x11\xbcw\xb2\xf5o\x96y\x99bl\xc1\xf6]\x0f\"SoK\xe6\xb7\f\xbe/\x0f\xbau|wTú\xcb\xe0\x19\"(\xcc\x1f\xb1\tr\xfd\f\xad\xf9\x9c\xe4\x97\xc2\xea\x02\xff\xb8\x94y\xbf\x9cLH\xa0\x94\xc4^&D\x9cP\xfd\xa8?\xfb&\xf1\xbf\xef\xbc;+\xbf6m^w\xf7\xbf\xc4<\xc1\x97\xec\x84XV\tE_\x12\xbf\xf1'\xeb\t\xc3~\xe0\xd78\x06}\x1f\u0600M3\xa6\x1b\x98\xd2L\xd5\xc6\xe1i\xf8?hӳB7\a\x8b\tw\"\x88\xed\xea\n\xe0\x98r\x83\xcc(s\xae\xe3\xd0\bH'I\x16)\v,[\x86\f\x98\a\r\aw\x14\x82G\a\xfa\xfbG-\xb7\xe0\x8f\xa4\xb1|d\x9aC\xf1 #\x9d\x80^\xd7\xf9gg'\xe7\x16^\xdf\xf0\\|&\xefu\xe6\x19\xab?\xec\xceW\xbe\xacsU%x\x90{\x92z\x1a\xe9\xe4ɻ%\xbf\xa3P]ڈTc\xb8\x9f\xf6\x17قt\x15\x0e\xe3\xc1_\xbc\xfb\xa8\x88\xa3f\xb2\xc4=R\xe9CU\xb7j>\x03\x8b\xbd\x93\xf4\xc3?e\x91\xa8\xfaӰ\xbf*\xe4:U\x1a\xda%\xf6 kL\xf7~\x11\xfb\\x\x1b\xad\xb9ɕH\xf6\xb1\xf7E\xcf\xd1\xe8_\x95\xb8\xfbЬ\x01?k\x11\x80\\\x90\x82\xd7,D\xf7\x13\x97\x01G\x93\xf5\x94\xd8D\xf8\xc6\x14(\u0381\xac]\xec\x93GS˥:\xb5\x19|3\x8e\xb1+\xbb+\xad\a*\xe7&#H2\a\xa8\xa6\x11w\xd1I3\xefY\x9c,\xabO\x89\xf5ӃB\xf2\x82\xfa\xd4i\x05k\xfe^:\x94́\x18R\xe3&\xa6+L\x1b\x91\x9cUxm\x16'\x8d]\x9bW\x05'\x8b\x0f\xfaƋ/\xa91wb\xfa\rT\x9bm\xc6j\x02\x13'/\xec\xe4\x90\x10\xcf\x16p>\x98\xb8\xda\a\x06\xbcⷨ]\x9b\xac.\xb3\x8c\x00\x15]Ze\xd5\x0f?\x84\xac\xc5\x0e-\x88\a\xc4F\xccS''\x96/\x96\x9c\xec&\x15\x80\xad\x95ڨ@Y\x15\xa7-\xa0x\xae\x88,&\xff\x83\x1e',\x1e\x87\xc3`P(\x00\xc0\\\xa8\x9e'i\xf0\xe3\xc4\xfb\xa92t\x19\xab\x06\xe2nT\xd1\x06\x06\xa8\xb0\v\x86g\xd5\\z\xcb4\x9e\xb5\x8d\x8c\xf6Y\x8a?\xd3Z\x1d\x00\xe9K\xf5x\u007f\xfe\x17p\x9ew\xb1\xcd\x1c\xc2%>\x86\x99\xcb\x02\x8a\x93@u\xea\xb9\xfb\xdem\xec\x989-\x01d\xe4;\xfa@\xed\xee_k\xad\xe7H\xabE~\xbf3\f(\xf5\xab\xb9\"\xeed\x1b\xe2\xe5ON.\x02\xa0\x80mH\x80\x17\xd2_xQh+|\x02\xe1z!\xdf\xc0[\xa1\x8a\xf8>\xe6s|\x03\xc9(\x1b\xd6\x1c\xdeT\x86h\xaa\x86\xaepkC\xc0\xac\x13\xd7\f\xfe\x89\x96d\t\xf6\x86\xef\x15\xe4\xe3S=\xae83\x9dW\xba\xc3v\x92\nC=\xfc\xae\xb3ϕ\xd4r\v\xf11\x8aX4\xed~\x92\x9eR\xaf\x93\xda\nC_\xf5\xe7\xc4\xc0\x18ᰶl\xd3\xce@!\xbd\u007f\xfe&\x12\x02u\xc2#\xb4\xfb\xf7i#pgUa|\xa4g#¯SYdc\x0f\b\x1a\b\x92\xae\x9c\x89/\xf6Qb\xdbv\x1a\x05\xa4*i\x95\xe0\x9c\xe8\x9d\b\x1f(\xee맫\xf98\xd9\xf3Pϓ\xc5d\xdf?\x9d\xfe\x8f(&\xdfa\x14\x146Νb\x13\xaa\xe8v:\x1e\xdfF>W\xe4{\x1b\xa6r\xc0/IC\x9exμ\x1f;\xe2\xe7\x05\x94\xa3\x90\xbbc\xdb]\xb9\x16\xcb\x0e\x13a\x8e\xfa\x1b';-\x80\xc8_q\x18\x8d\xe5\x10J\xa3\xf3\xfaC\xee\xc4*r\xdeӠ\xa7u\xf1\xba!J\x9a6}D\xcbq\x04\u007f\xc1\xe7\xaf\x15\xa6\x1fS\b\xb6\x05q\xc3\xe5\xc7\x16\x8e\x98\x16\x06\xec\f>\x16!(ӞӧJ\xea{\xa4\xb8֏\xb4\xfbƲ\xfbs,W\xddtT9\xf7\xdb,P\x8a\x90:$f<\x8b[\x1b\x9b\xcc>,^\xb0\xa4\xaf\x1b&\x1e\xe2\xdb\xc3\xec\xfcD\xac#\xe1\nT\xbbH_\x98\xfdV \x93p\x98*\xe7֢\xd0f\xad\xec\x87`Êq\xdbx\"\xfe3<'\xc1.\x0f\xc3J\x10//D\x82\x8d+\xc6\xce\xf9\x03l\xfc#\xe8\xa6O\xb3\xc1u\x10\xa3\xea`\x1b\xc6S\x15\x85Y\xbb\x92\xa0\xcdMp.\x05v\xe1lK\xa2\x9fF\x81(4\xdc\v,\x9a\x8d]\xd5\u008a\x95iZ\xd7\xfdD\xa1\x85\a\x13ú\xf7;\xc7B\xa3_\x17y\xa4\xe2\xf3;5 \xeb#\xa1bK\xac,\xac6x\xfe\x9b\xc8\xef%\xee\x11چ\r\x9dFc\xba\bi\xde\xfc\xfe\x82\xc3>V\xed0\x1a\x03\x9b\x87GW\x87\x16Ɠ\xaeoKb{\xd02\x1a\xb1\a,M\xc7\x04\xc2>\x8al\xa1\xf9\xd0\xfb`\xfd\xb0\xb5\xb8?p\xb5X\x83ݢ\xaa\xf1\xd8*\x14\x11\x93\xd94\x9e\x0e\x18\xfa9\b\x92\x9c<\xc2\xcc\xddѩ\xd8ugVnp>Y\x80xt\x1a\xee\xe5)\x16\x16\x0f:\x9c\x16\x8b\xb3\x03Թ\xa9u\xd4\xe84\xfe+\xa2\x9f\xaeWc\xbc/m\xd8\xd0Q\x97\x98x\x11\xb9\xfd\x89\x8f\x97J\x8a\xc1\xf6\xfe\xca\xe5@I}\x91\xbd\xea\x8dD\xe2\xc6}\xe1{\x16\n1\xe1|\xc9\xf3\xbc\x1b\x83\xbd\x15^\xab\xe5\xa8{\xb7\xc0\xe9\u007fEZp\xf2$\xd7\xc2\x15\xa2\xde\xdd+\xf3EX\x041\xdbhm\x97U\b\xbb\xe0&\x00\xc9u\xd9\x1d\x1e\xa5\xbc\xec\x86\x1f\x15H~;\x12$8\x04\xb20W\x05\xb4q\x1a\xc0ラ\xd7M\x87\x9dn\x0e\x16\xb6\x01H[\x0f.\x91^\xf3\xf3\x83\xea\a\xff'\x83\xfc\xbcY\n\xdbP\x919\x89@\xd8p\x9f\xa0\x03\xb5\xb3\xb3\xec\x19\x9b\xfa\x15\x95\xd2IvQ\\\xe4-\xe8XsyF;\xed\xcc\r\x97\x86k.\x9a\x87\x12\xa1\xa6\x02\x9a\xf8\xb6\xccQ\xcc\xc0O\x86\xf6\xceo\xab\xcc1\xad\xf1M\xc1\xd7E\x183uL\xb7\xa0\x86\xe9\xc8Е\x16\x8d\xedc\xafѫ\xf6t\x95j\xa9BH\x18x\xc7%\xb3\xa1\xc3\xf2\x13\n\xb3\xbc+\v\x12\xc5ޣ)\xb0\x85ia/<\xee-.N\xc5F\xfd\x87\xa6\x1b#碾xPN+\xbf\xbf\v\xf5\xdc\x12C\xc3\xfcw\xe4\x0e\x11\x9c\xae\xfft\xc9\u07fc\x12\x11\xb9\xc9Vl3\xea\xef%\x9f\xd6?\xa9k/\xff\xe7m\x1ax\xe8\xdc\xc8\xdb]WE\xff\x94\xb7ׁ\xaf\x05L\x1dS\xb76\xc2\x1d\u007fD7 !\xacX\x83\u00ads\x8fN\xa8-\xce=\xee\x1b&\\\xc138\x85|l/\x95ڋ\xe5\x17r\x18\xf8+\x04@\xbd\xe9\xb0\xe1\x8ce\xfa\xbc\xcf\xd8F\x0f\xe4 \xd3\xffނT\xe2aUh\x03M`\"\xf3I\x9f\x9c\x94yR\x9e\x15\xfam'\xae\xfaK\xf9\xe6ƚ\x9b\x0f\xbc\xe7\xbc9\xd5.\x95\xe8u&}\x8ee\xd2\xe9[u\x98\x04i\x02F\xf7H-\xd9}\xba\x13,\x98p\v\xddV\xeb-Gbã\xeby`ۮF8#\x14a<\xb8ο\af\xae\xa11\xf2\xbf֊\xe2<\x8e\xdco\xb0\xf3\xad\xfb\xad\x17L\vN\x9d\x02\"\x9c\xf0IB\x89\xe9\x89I\xdd\xe4\xa0U\xa7\v9S\xb8?\xe0X\x9e)\xd0gժ{\xf6f,\xdb\x12\xf2,mēi\x8c\xf37\xefݷw\xa8=\t.9\xec\x82h\xb0\v\x96w\xeeݻOEQ\xf5\x9b\xe3\xfc\x99F\xcf/Ҟ\x15\xe6x\xb6\xd8\xd3\xcfd\xcb\xcbI[\xccZ\xc8\x1a6\x1a<\xe3\xfc\x9d.\xc98\x1c\fZ\x9cƱ\xdf[%Ta\xe5\x14\x9a3q\x87\xb6\x8d\x96\xc9\xdb\xf1\xa8\x8dR\x01Ip\xef\x8cp\xb0\xbc\xce\xf0\xbcG\xa6\x195&\x1bi\xa1\x1ff:'k\x15R\x82\xff\xf5\xa1\x86s\x88\xcf_\xcf\xf7\xc0\x14`N\x0f\x1a\x85\xc6$Ef\xd0r\x98\x96\x037!+\xe8F\v!B\xd0/\xb2T\xcf!f\x1b\xaa}\xbaĐX.\x95\xec,\xb8孄t8\x17\xd5\x0eG\xcc\x17\x17g\x14\x02\xc3\xdeqC\xa1d\xe4v\x9d\xccͼS\x12\xec\xdcd\x86\xa0\x00\xe9\xe9\xa9 \xbd\x8b\x9e!\xf3^\xackׅ\x89\x16Y\xad\xc7\x17D\x17\x17;\x9dq]D\x17\xe0\xf5\x00\xce\xda1\xd5\x04=J\xb9\xd1\vˋ\xe1U#\xfb\xb1D>\rWd\x86\x9a\f\xf1\xf5-\x1b\xc0\xfc\x13'!u\xf1\xa6\xd8\f\x86Y\x82H\xb2:#\xf6/\x8f\x14NV\xccSY\xa3\xf1VT\x9dQ\xf5\x95\x85\x87\xae\xc8\xe2.\xe7\xa0~Pe\xfbɫi\x83#B\r\xd8\ncXd\x9e ,\xd3QJ\xc3\xe3iYx<\x056\xbd\xf9\xe8Y\x03^u\xa1餅E\xd0\xf2\xe8\xf0\xbf\xcf\xde\u007fң\x93UPݼh^ܱa{VOWt\xf9\xf7\u05ee\xb9:,u.\xeb\xecu\x96\x0e\x17\xd5\x04Z\xde\xdfW\xce\xd9\xe2\xe1\x8d\xe2\xe8\x99G\xa1\x19u\x9f%\xa4Jn\x94φ2\at¿\x9b5ʘq\"\xf8\x95y\xebn\xdf\xe3.\xf3+\x98'\xe9\x130k#w1\xe7\xa6\xf9\xf6>\v}\\\xbe\x95\x93~\x9a\xf8\xb8\xe3-\xdd鄍\x06vK\xb7\xbf\xee\x906\xbd\xbb\xe5X<>\xfa\xb3\xccC\xc7\xe4\x84\xd9u\x06\xf6\xc6\"o\xed\xbe\xc5\xe34\v\x9dn\xa1\xb9\xc3ݔ\x14S\xdbܺkJH\xac\f\x9d\xb9\x96\x97\x17\x18\xf7\xc6b\xee8\x903Y\xcccR7\xba\x8e5\xdf\xd8'M81\xa1ro\x97\xf2\xc4v\xf2\xf5*%/\xfct\"\xfej\vEMi\xb9\x8aO|\x90!\xfe4U\xc5SF!\xb6\x95#\xc3\xc3.\xd8\xc9\xe1`-\xde\xe1\xc7\t\xe1\xfc\x8e\xec\x15\x9e\xc7\xc1\xc6\xcbؼ\x80cx\x1cN9ߖJQ\xd1(;29؟k\xaa\xf1a\x8f\x16\xadoiM)y\fp\xf1b\xbcg\xd6\v\x14\xea\x85;\xb8\xd238\x82\xf3\x0f\x8a\xadJ\x17\x89|\xeb\xaf\x1a\xfcp\xcfX\n!R\xcdУ\x970C6\a:\xeb\xd3t\xde\xf7|\x93O\x1f\xaa\x10\x9a#\xf3\r\xe5\x03\xd7\x05AO\xbc\xf8\xc1ы\x17G\f\xdf\xeb\x17:\xd7T\x12\x9a۽\xbeh\x8cU\xdc,\xeb\x9e3\xd2tbZ\xbe\xce\xe2\xc0#2G\x1d\x16r\xe8{\x1e\x89\x04\xf3M\xf5\b3\x89\xbe\xe22\xd0i\x8d\xa5\xaf\b\x14~\xb2-\xf7\xb1\"\"\x86\xfe\xf3\xe3\xd4\xe4\xfe[\x85\xac\x88ƛ?\x11\xb4\x8c\x18\xf6\x11}\xea\xe3\x9fc\xe8\xcb\xd8\xfd\xf5RK\xf8\xa9\xc9\xf3\x1b\x19\xab\xd08y\xb4\xef\xc7\x03\x0f\xb3\xe2\xa8c\x82q\xf9\r\a\f;\xbe\xab6(\xd2)\xe9)>'\rm\x19\x0e֟\xda\rP\xad\xd5ٱ\xa44\xf1\xec5]1\xbbX3\x1c\xea\xad\xe7\xf5\x96\xc6\xc5;\xc2\x13K\x92\xfe\x1fj\xda\xf6\x98\xb1zE\xeby\x8d$\x9a=䊏w\xa8~)\xcam\r6m\xa3R]Q\xa6lS\xa4W\xf5\xb1X\xd9\x1c\x02\xaa\x9b\xa0Ww3z\xb2Y\x1a\x828zS$\x9a\xdf\xc3|*\xbe\x93\x86\xceh\xe4\fS\x9f\x89\xf9\xccD)6m\x85Me\x0fj,6\xbdW\"\xd3I\xdf1\x89\xccwR\x9dLқ\x8e\xadV\xbe\u007f\xaf\xacƤP\x1e\xb4\xd4(\xb4\x92\xb1<ˁ\xea\x93\xd2\xd5${\x90\x89HiX\xbb.\x8dTn8\xe0-*\x9f\xbfZ\x1f,\xf2>\xd0T0\xbf*\"o\xbfۑ\x1f]\xba\xe4\x81\x06\xbd\"\n\xb2\x0e\x12\xe3*\xac\x9bQ\xf7\xf4\xf7\xe1,\x10{\xe4\xf4hȆ>'\xa2\xbdak\x0f+\xec\xbf \xce\xceDn \x8b\xc2\xe2\x05$\xee\xe4\x04rc\xb9\x1e\x93\xc8\b~~\xc1<{\xadj\xdeY\x00\x1fA\n*\x0e\x1b',\xac8\x88t\xe2'yr\x1c\x16\xacE?\xa4\xeaE\xff\x8e\xfeb\x1b?\b\x9b\x9e\xc56n\xc1\xe0\u007f\xf4\x1b\xfb$<\x00\xbf\xadvo\xb5\xbc\x86Eq;T*oio\xfff1n\xa0\"\xc9tF\xcdk\xcbd\x1d\xaf\xf0\xa2l\xc9zs\xf5\x99\xb8a8\xbb4\x82!o\xa3\xd6\xff\xed`W%+8\x98E[;\x89\x82\xf8k\x9f\xee\xa3ĭ\x91\x9eI\x86A\xedj3\xb2Y\xefɖ\xc7n\xf6\x1d\xaa\xd0\x1c\xa0Xǒ\a\xb3\xa8ko\xb6\xd8\x19J\x83\xc1\x8b'\x1dǂ\x0e51I{|\xf7lա휓\u007fi\x88FU\xf9\x9dě݃扸\xd9C\x85\x80\x99\xee\xd9#c\xa5\a\xda\x05\x87P\x87\xb5\xb2e\xbf\xbcs\x87\xecb=W;ΰ\xe3\xf9\xa6\x1cr\xd2\x0e\xfc\x92\xb7ۅ\x90\x95\x1a\xccBu\x89\xf25\x9ccu\xf5\x81W\xec\x96o(\x1d\xae\xc3\xe5E/\x90S\xe4y\x1e\xf3pupKg\x97b}[\x1f\x96:7\x8a\x9f\x04Y\x01\x94\x99\xd1y\x92\xdcS\xf6a\x8c\u2e9a\xea\xef\x1c?\x15\xb6)\xb3\xd1ٔ6H\xcb\x16\t\x97\x95Y{d\xe4\xe5ʍ\x19\xc8;\xfc\xc5;\x04\xd1Pϋ\x1a\vﻋ\r\x8d\x11\xdb\xe9L\x1e\x03\xab\xf7ð\f\x1e\x93\xfe_\xfe9\xc5\xc4\xd1\xed'\xc3:\xb9\xc9F\x98\xdd\xf1\xa1\xde(;\xaa\xb1\xbe\xaa\xca\xdf{\xc9~\xa9\xf7-\xe4\xb0\xf2\xb5\xc5u\\H\x81\xa5\x85\xc9\x1c\xd2\\\xe1/ہ\xf1\xbb9G+\x8a\xd0\xcbqj\xdcCb\xcb-:!\x0e\xcfw0jjD\x19+}\xfb̩\xd3\xfe\x95\xc2g\xdd\x1aCff\b\x83\xde!\xee\xa03\xfa\xc8\xc5\xf3\xfa\x1b\x8a!v\xacW\x8cg;\xef;(5\xc9P\x8d&6\x98\\\xf6\u05eb=\x96\x8b\xbabw\x94X\xfd\xe5\xe7O\xdfPm\x836L%4\xf8~\x91Q\t\xabQ\x9a\xd8\xd0\u007f$\xaf\x1aS\x865\\,8\xd7k\xc2;\x1f\u007f\xea~\x01p\xe3\x01\xa0\xfbtA\xa8aP\xff7(\xfd4LY\x80\x0f\xb2o$OkK5\xf3\x94\xfa\x99\x02\xbc\xcd,1\x90WJ\xc8\x02I\x9b8\xcd\x1a\xfce\"k\x12\x81Q\xc0r\xa6\xc6/I\x1c\xabߌ\xb2\x9a\xff\a\x87\xba\xac\xf3\xa8\x0e^\x04P\x86\x05\xefz\x9f\xecT\x15\xf8,m=uէ\xf4?I/+\x0e \xe8&X\xcbS;\x0e\x14\xf0\xf0ޚ\xf7`\xce\xc5>5\xfc?\x9e\x84\x06\v\xc3\u007f\xd2v\xa9\xaa\t\xb9\fC\x10\xa7\x12\xfe\xfb\xf5-73\xaa\x989\xff\xe7߭.\v~\xfa\xe8AM\aj\xb8\x9b!\xfc\xeb\xe0\x1a\x0e\x01l\x8e\xc5 H\x03\xc8\xf0f\xeb%\x03\x02h \x06\xb0ȇ9 \xe05E\xc8H\u007f\no\x1b\xf2\x815`~\x1b\xe4\x92\xc5}\x92AT\xf2ȫC\xa9\xf5\xf9\x16s\x00\xd3\xc4\x10-\x99\xfd\xa1\x99\x83tU\xa2\x97\xc5V\x15ԣA\x05\x90\x86:5\xc8k\x90\x9b\x15èҖ_ߤ4\xa36V\x9c\xc3\xc9\xe9F\x1f\x105\xeb4b\xa0N\f\xea\xeb3d\x9a\xcb\xea5!\x1e\xe1G\xe2/VF@\xc9\xf6\x1b\x05\xea\x8b\xc2\xe0\x8b\x85--\xc9\x18\x86MMB}\x8a\x9auRF썲\xba\x82\xa1\x9c\xe6\x14P^_.Q\x91\x86\x12Q\xa9\x91\xdaLe\xea\xebG\xaa\x02\xa3\x95T%\xb8-T\x15^o\xc1\xb5\xc9\x1b>\xb0֕\xfa\x17X\\\b\x00\x98\x91\x02\x1a\x14\xcdI\xa3\x8c\x82[\xcaZ\xc47\x943\x17_\xca\xdb\xe4\n*2\x91\xf7Tj\xcf̧2cu\x9a\xaa\xe0\xdb\x04\xaa\x12\xa5c\xa8*\xa1\x9d\x8fk\x8d\r\x0fY람\x1fp\xb3\xf4\x94\xf5\xe6\xb5j\x8d\b\xe6\n\v\xf0KM!\xed\x87'\x11\xec\x9fz#A\xfaٷo\xeb&b^,\xf0\xabS\xc4\xc7S\x82\x8eB\x19T0ũ\x9eP_ʍ\xa8\xdd\r2\x1e\x15\xf0e\x85\xc1\xaf\x17\xc1M\xea\xfb\x90y⳱\x16A5\xd1\x1b\x06\xdb\xda\xe1\xcc\xd3J\xff\x19n\fow\x9cn\x11V9\xb1)vb\xec\x14\x9e`\x05ʃ\xd8j\xd0&\x92k\x95\xba\xfa\u007f\xca\v\xa4ڤ|2;\xcc\xcb;\xe5C|hu\xba\xa2\tI\v\xcb\xc4v\x98\xfa\x1f\xea\x865yco\xbcQ\xcd\x1a\xb9\xacO%7\x9b+0\u0099\x81\xd8!\xc5\x15\xe1\x87VQ\xae\x1f\x02I,\x94\x99\x94 R\xa8\f\xfaϩF\x8c\xcc\t\x9e\x92\xcf\x02F\r\x11Vmi\xd3E[\xe8\x84 \x11\xd9T\"\xaa\x0e}\x1b\x99\xfa+\x8e\x1f\xbe\xe0*qĪq\a\xcf\b\x97\xbd\xda\x11\x95=\xdapM\x92J\xa7\x985\xe9\x02\xe1B\xc7\xee\x8d\u06dd\ufae1ه>\U000fe4d1=\x96_\xea싗\x05\xbf\r\xfc\xab\f\xa5\xe9\x86i\xd9\x0e\xa7\xcb\xed\xf1\xfa\xfc\x00\"L(\xe3B*m\xac\xf3A\x18\xc5I\x9a\xe5EY\xd5M\xdb\xf5\xc38\xcd˺\xed\xc7y\xdd\xcf\xfb\xfd 0\x04\n\x83#\x90(t\xfe\x19,\x0eO \x92\xc8\xfeO\xc3\xff\x1e4:#\u007f&\x8b\xcd\xe1\xf2\xf8\x02\xa1H,\x91\xca\xe4\n%e\x15U5u\rM-m\x1d]=}\x03C#c\x13S3s\vK\xab\xf5f\xbb\xdb\x1f\x8e\xa7\xf3\xe5z\xbb?\x9e\xaf\xf7\xe7\xfb\xfb\x93z\x19\x0f\x10\xb4vVA\xbbf\xa8\xbdg\xf1\xfb\xc0d\xd5\x01\xd7ne؆EdO\xa0{O\t6\xec0P\x9d+%4\xe7I=\xe3\xec#\xfa=\xd0\xfb\xed\xbf\xa1U\x92\xfc\xea{\xc6\x1b\x8eh2g\f\x16g\x0f\x8c9\x80\n^\xed\xd1KJ\x98\xeba\x15\x0e\xa8\x93\xbbF'\x05\xf3\xe8#hu\v\xe8\x90\xc2ic\r'q\x11x\xed\x19\x93\xe4ɫ\x14\xd3s\x1e4<\xc7\x10\xde#\xe4\xe0\x8aP\xaen\x9f\x9f\xfc\xb6qQƵ\xbe\x98\x83ZIx\xc0A.\xb9\xf3Rn\x9d\xc1\x19\x0f\xf6\xdf@q\xc0|F\x96\x82#\v\xba\xcbK\xe3\xa5[\x90y\x88b\x85*\xf0T\xb8\x99K)\x1c\xb6\xd4\xdd[\",\xadZ\xd8Z\x9e\x13\xc6a\xc7\xdb\"\xa0ah2\xc8P\v7\x95\xb5$ʹ\xd9\x16d\x03\x92E\xcc\x02\xd8F\x9a\x02f\x1f\x1e\x885\x02ɛ\xfa\xf6\xb5|+\x9f6j\x81\x80n%\xc6a\x05\x95\xad\x1dkli\xb1tⴆEܒgk\xb9K\"Y8T\xd7\xecS\x90*\xe9)\x87\xa5\x11\aʛ o\t\xeb\xe8\xf9/\xa2\xe1d\x85\xe0\xd5#\xbf%x\xe5\x82ڲ\xcc\x17\x1a4d\x06\xa1\xa0>\xd2\x19_ڡ\x05\x92\x9f\xf63\x05\x94⪽\xc032\xad\xf2?\x88\xbcM\x05\n\xaa+\f\x19\x0fk\xab\x8b\xf0\x98\xf1bQ\xfc\xa9;\x98aU\xeeó\x18\x06\xe7\xa1T\x92\x9ck\r\xb3,\u007f\xe8\xab\xdbTZy\r\xb8Z\x9e\x17\x9e\xac\x92\xdfo.K\xc5\xde(\x9dq\x8c\xd2tc0\x1b\x87\x85_\xc5\xef\xa75\xaa\x84\xe9;\x1fm\x9e\xccDmr3ݡ\xe1\f\x13\x17ޤy@ɨ\x19\xbb\x10<\xbe\fy\xd8c\x1c\xaf\x14Ҿ\xee\x1dM(\x1d@\x9f\x1d\xcf\t\xca4\x02\xa0\xfe\xc2\xe6\x02ͰC@\x03d)>\x92x>\x8b\xb0\xe3K\xbfEӨ\xe7\f!(\x9a\xb9)l\v\xc01\xd395C\xed\xdah\nn\x81\xb0\xe1у1\xeb|\xbbP\x0erq\t\xae\x94\xe8\x8e\xf4\xe6\x947|ͣhU\x14G\xcb(\xb62\xec8V\x05\x8b\xf5$\x87.\x0f\xb2\xd13\x951\xe0\xfe\x01\xd5\xf4 \x9a\xad\x10\r\xbd8\f\xd8\xef\xd2\xff\x02ԛ\xd3\u007f\xbd\xaf\xba\x95\xe7\r\xd3k\x92\x8c7\xb7\x10\xb3\x82X\xc9\xd0p\xb0\xcfm\xe7\x0fR\xed4=\xb1K\xaah\xef!oz\xeb\x03\xdd\xef\xb7\xe3\xca\xcd\"\xf6c8rQ\xabE\x1f7\xa5\x04\x1e;\xe2\xcc\xc3\nM\x1f\xe4u-\b\xe9\xcd\nvvA\xa8\x13\x8d\xf6\xa6\x82\xf9'o\xff\x8dr\xfd\bu\x15A\xed\x14r\xd47\xc4`\xf8\xaf\xbaJ\xde\x1a~\xfal\xb6\x94\xf7MXwF\n\xb8\x0e\xe8v2\x1bWL\xad\x90\x01#\x19I\x82{\x86\xb6\xc5\x13F\xb1\xc2\xfcÈdYH\x98\x940\xb6\x9a\x01\xfc\xfbzj*̔7\x877\xb4\xa3Ap^o\x03\x81ueU\b\x8b\x9al\xb0\xa6Eɰ\xaf\xa4\x18\x00\x00\x00" var _Assets8d3d84b01d8e875fa96f3fb120e5aef152ba2a3b = "\x00\x00\x00\x01Bud1\x00\x00\x10\x00\x00\x00\b\x00\x00\x00\x10\x00\x00\x00\x02\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x10\x00spblob\x00\x00\x00\xc8bp\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x03\x00c\x00s\x00sbwspblob\x00\x00\x00\xc8bplist00\xd7\x01\x02\x03\x04\x05\x06\a\b\b\n\b\n\r\n]ShowStatusBar[ShowPathbar[ShowToolbar[ShowTabView_\x10\x14ContainerShowSidebar\\WindowBounds[ShowSidebar\b\b\t\b\t_\x10\x17{{126, 43}, {770, 436}}\t\b\x17%1=I`myz{|}~\x98\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x03\x00c\x00s\x00sdsclbool\x01\x00\x00\x00\x03\x00c\x00s\x00svSrnlong\x00\x00\x00\x01\x00\x00\x00\x03\x00i\x00m\x00gdsclbool\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\b\v\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00@\x00\x00\x00\x01\x00\x00\x00\x80\x00\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x01\x00\x00\x02\x00\x00\x00\x00\x01\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x10\x00\x00\x00\x00\x01\x00\x00 \x00\x00\x00\x00\x01\x00\x00@\x00\x00\x00\x00\x01\x00\x00\x80\x00\x00\x00\x00\x01\x00\x01\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x00\x00\x01\x00\x04\x00\x00\x00\x00\x00\x01\x00\b\x00\x00\x00\x00\x00\x01\x00\x10\x00\x00\x00\x00\x00\x01\x00 \x00\x00\x00\x00\x00\x01\x00@\x00\x00\x00\x00\x00\x01\x00\x80\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x01\x02\x00\x00\x00\x00\x00\x00\x01\x04\x00\x00\x00\x00\x00\x00\x01\b\x00\x00\x00\x00\x00\x00\x01\x10\x00\x00\x00\x00\x00\x00\x01 \x00\x00\x00\x00\x00\x00\x01@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x10\v\x00\x00\x00E\x00\x00\x02\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x04DSDB\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00 \x00\x00\x00`\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x80\x00\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x04\x00\x00\x00\x00\x02\x00\x00\b\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00 \x00\x00\x00\x00\x01\x00\x00@\x00\x00\x00\x00\x01\x00\x00\x80\x00\x00\x00\x00\x01\x00\x01\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x00\x00\x01\x00\x04\x00\x00\x00\x00\x00\x01\x00\b\x00\x00\x00\x00\x00\x01\x00\x10\x00\x00\x00\x00\x00\x01\x00 \x00\x00\x00\x00\x00\x01\x00@\x00\x00\x00\x00\x00\x01\x00\x80\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x01\x02\x00\x00\x00\x00\x00\x00\x01\x04\x00\x00\x00\x00\x00\x00\x01\b\x00\x00\x00\x00\x00\x00\x01\x10\x00\x00\x00\x00\x00\x00\x01 \x00\x00\x00\x00\x00\x00\x01@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" var _Assetsdde0973434b88ffc53b81b28400233e4fde8bb40 = "html {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n height: 100%;\n}\n\n*, *:before, *:after {\n box-sizing: inherit;\n}\n\nbody {\n margin: 0;\n padding: 2em;\n font-family: monospace, sans-serif;\n color: #666666;\n background-color: #222222;\n height: 100%;\n}\n\n.logo {\n position: absolute;\n}\n\n.title {\n line-height: 2em;\n font-size: 0.9em;\n margin-top: 5em;\n margin-bottom: 1em;\n}\n\n.title span.yellow {\n color: #FFCE00;\n}\n\n.updated {\n font-size: 0.8em;\n margin: 2em 0 1em;\n}\n\na {\n color: #FFB6D5;\n text-decoration: none;\n}\n\nul, li {\n list-style: none;\n width: 100%;\n}\n\nul {\n margin: 0;\n padding: 0;\n}\n\nli {\n line-height: 2em;\n font-size: 0.9em;\n}\n\nli span.right {\n float: right;\n}\n\nli:nth-child(even) {\n background: rgba(255,182,213,0.05);\n}\n\nli:nth-child(odd) {\n background: none;\n}\n\n.aligner {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n height: 100%;\n}\n\n.aligner-item {\n max-width: 60%;\n}\n\n.aligner-item p {\n text-align: center;\n line-height: 1.5em;\n}\n\n.icon-big {\n font-size: 4em;\n}\n" var _Assets7f20ca1245bb8b3d9d2ba4abac70f5fb42bab011 = "wOFF\x00\x01\x00\x00\x00\x01\x82\xb4\x00\r\x00\x00\x00\x02\xf4\xf4\x01J\xc0\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00FFTM\x00\x00\x010\x00\x00\x00\x1b\x00\x00\x00\x1c\x8d\x96\xb6\x16GDEF\x00\x00\x01L\x00\x00\x00\x1e\x00\x00\x00\x1e\x00*\x03\xcdOS/2\x00\x00\x01l\x00\x00\x00L\x00\x00\x00`C\x82V\xa0cmap\x00\x00\x01\xb8\x00\x00\x06\x99\x00\x00\f\xae\x19M%\xebgasp\x00\x00\bT\x00\x00\x00\b\x00\x00\x00\b\xff\xff\x00\x03glyf\x00\x00\b\\\x00\x01O\n\x00\x02\x93\xc4k\x89U\xechead\x00\x01Wh\x00\x00\x005\x00\x00\x006\x17\x15\x91\x1ehhea\x00\x01W\xa0\x00\x00\x00 \x00\x00\x00$\x04C\x06\ahmtx\x00\x01W\xc0\x00\x00\x03\xc2\x00\x00\x0f\x1ao\xcd\x02\xe8loca\x00\x01[\x84\x00\x00\t\xd4\x00\x00\x0f \x04xڴmaxp\x00\x01eX\x00\x00\x00\x1f\x00\x00\x00 \x04)\x01Sname\x00\x01ex\x00\x00\x02\x0f\x00\x00\x05+\x1d\xac'$post\x00\x01g\x88\x00\x00\x1b)\x00\x00/\x197\f\x86\x8fx\x9cc```d\x00\x82\x9b٪?A\xf4-\xd1\x13\xdcPZ\x10\x00D\xd7\x05\xee\x00\x00\x01\x00\x00\x00\f\x00\x00\x00\x16\x00\x00\x00\x02\x00\x01\x00\x03\x03\xc6\x00\x02\x00\x04\x00\x00\x00\x02\x00\x00\x00\x00x\x9cc`a\xfc\xc9\xdc\xc2\xc0\xca\xc0\xc0\xe8Ø\xc6\xc0\xc0\xe0\x0e\xa5\xbf2H2\xb40001\xb023`\x05\x01i\xae)\f\r\x1f\x18~:2\x1e\xf8\u007f\x80A\x8f\xf1\fC\bP\x98\x11$\xc7hŸ\x14H)00\x02\x00l\xb6\r\xb1x\x9c\xed\xd5}T\xd7\xd5\x1d\xc0\xf1/\xa81\xb9\xf7s?\xbfiL[\x86ʱ\x96m\xa3\x1aM-\x1f\x92i\xd3Y\x12\xc6\x1e,D\xcc\xd4\xc4\xe6\xe6\x9aGGb\x06b\xe8\x8a\x1d\x91\xd0ZJ\xa0\xf8\x84J>\xa4\xf1p@$\xd0\f\xc1\x87\x96\x0f\x88\xa8\x90\x0fS\x9c\xf7\xde\xef\xfd\xde\xfb\xd5\x10\xf6\xed\xd7\xefT\x9em\xed\xdf:\xc7\xf79\xf7\xe1s\uefefs\xaeeY\x9d\xac/V/+\xc8ۭ\xd0\x02o\n\xf2ϝC\x17[Vpn\xb0e}\xcf\xca\xe5\xc1\xbc\vg\xbc;\x0f\xe3w\xf0^<\x9c\x0f\xe3#y\f\x8f\xe7\x13\xf9\x1fx\n\u007f\x85\xbfʗ\xf0L\x9e\xc5s\xf8\x9b<\x97\xe7\xf3\"\xbe\x9d\xd7\xf3ü\x89\x9f\xe1-\xfc2W\xbc]\x10\xc1\xc4\xf7E/\x11.\"D\xa4xP\xfc\\<\"\x86\x89\x91\xe2\x97\xe2q\x11#\x9e\x16\x13\xc5T\xb1P,\x16\xd9\"G\xac\x10o\x89U\xa2Hl\x15;D\x99\xd8/\xea\xc5q\xd1 \x9a\xc4y\xd1*\xb4h\x97A2D\x12\xd9S\x86˟\xca\x01\xf2a\xf9+\x19#\x13\xe4\xef\xe5\\\xf9\x92|Mf\xcae2G\xfe]\xe6\xca\x02\xb9A\xee\x92%\xb2L\x96\xcb*Y/\x8f\xc8FyN^\x90\x97\xe4\x15)\xa5\x96\xd7d\xbb\xddŦv\xb8}\xaf=Ȏ\xb7\x13\xecI\xf6d;\xcd^k\xef\xb6\xf7\xd85\xf6~\xbb\xce>l\x9f\xb2\xcf\xd8\xe7\xec+\xf6u\xfb\x86ݡnS>\x15\xa1\xfa\xa9\x87\xd4\x00\xf5\x88\x1a\xa2\x1eU\xd1j\x84zL\x8dR\x8f\xab\x18\x15\xab\xe2\xd4x\x95\xa0\x12\xd5d5M\xcdT/\xaa\xd9*Y-Pi*C\xbd\xa6\xfe\xa6\xdeP+T\xaeڢv\xa8RU\xa1*U\x95\xaaV\xf5\xeacuR\x9dV-NW'\xcbY\xe5\xacv\xd6;ۜ\xf7\x9cb\xa7ܩqj\x9dz\xe7\x88s\xccip\x1a\x9d\xd3\xceY\xe7S\xe7\x82s\xd9\xf9\x97sC\xfbtw}\x87\xee\xad\xfb\xea\a\xf4@=DG\xeb\x91z\x94\x1e\xa3\x9f\xd4\xe3\xf4o\xf4x=QO\xd6\xd3\xf4\vz\xa6\xfe\xa3\x9e\xad\xe7\xe8d\x9d\xa2\x17\xe8t\xbdD/\xd7o\xeb|\xbd^o\xd4[\xf4\xfb\xbaLW\xe8J]\xad\x0f\xea\xc3\xfac\xfd\x89>\xa6O\xe8&ݢ\xcf\xeb\x8b\xfa\x8a\x96\xfa\xban3\x96\xa1\x86\x990\xd3Ä\x9b\b\xd3\xdf\xdco\x86\x9a\xe1f\x84\x19eƚ8\xf3[\x13o\x12M\x92y\xc1\xfc\xd9\xcc7\xa9&\xdd,6\xaf\x9b7\xccr\xb3\xd2\xe4\x99\xd5f\x9d\xd9d\x8a\xcc.Sj\xcaM\xa5\xa925\xe6#So\x0e\x99#\xa6\xc1\x9c7\xad檑\xc61\xc6|憸>\xb7\x9b\xfb\x03\xb7\xa7{\x9f{\xbf;\xcc\x1d\xe3>\xe1ƺq\xees\xeeL7ٝ惡\x19n\x96\xbb\xc2\xdd\xe3\x1epO\xb8\x1dע;:,\x8b[\xbc3\x0f\xe1>\xcfg\x0f\xbfϾ<\x9a\x8f汞\xcfI|\x96\xe7sa\xc0g\xb6\xe7s%\xcf\xe3k\xf8V^\xc9\x0f\xf1\xa3\x9e\xcff~\x81s\xee\nK\x80\xf0\x89\x9e\x9e\xcf>\xa2\x9fx@D\x89\x81b\xa8\x18\xee\xf9\x1c#ƊX\x11/&\x894\xb1Hd\x05|\xae\x14\x9b<\x9f\xdbE\xb1\xa8\x14u~\x9f\x8d⌸\xe4\xf9t\xa5%;\xcbP\xd9C\xfeP\xf6\x95Qr\x90\x1c.\xc7\xcaq\x9e\xcf?\xc9d\xbfϥ~\x9f\xabd\x9e\\/w\x06|\xee\x91\xfb\xe4!y\xf2K\x9fB:~\x9f\xc1vW\xbfρ\xf6\xf8\x80\xcfT\xcfg\xc5\xff\xf5\x19\xe5\xf9|\xf8\u007f\xf8\x9c\xe0\xf9|\xd6\xf39]\xcd\xf2|\xceU\xf3U\xaaJ\xf7|f\xaa\xa5jy\xc0g\xb1*\x0f\xf8\xac\xf3|\x1eUM\xaaY]w\u009cl\xe7\x1d\xa7\xc0)tv8\xbb\x9cRg\xb7\xb3ϩs\x0e\x05|6}\xcdg\xdb\xd7|Fz>\a\xdf\xe43\xce\xf3\x99\xe0\xf9\x9c\xa2\x93\xbe\xf4\xf9\x17=\xcf\xf3\x99\xaa3<\x9fo꼀\xcf]\x01\x9f\x1f\xdc\xe4\xf3\x94n\xf6\xfbl\xd5\xfcs\x9f\xba\xc3\x10\xcf\xe7\xed\x01\x9f\xf7\x9aH3\xf8&\x9fϘ\x89~\x9f/\x9a\x14\xf3\x8aYh^\xf5|f\xfb}\xbe\xe3\xf9,0\x1b\xcd\x16\xb3Ӕx>w{>\xab\xcd~s\xc0\xef\xf3\x98\xf9\xf4&\x9f]\\\xf4|\x86y>\xfb\xff\x17\x9f\xf3\xdcT7\xdd\xef\xb3\xf2+\x9f\xbeN\xbe`_\x90\xcf\xc2\x0el\xc76\xfc\f\xaf\xa1A\x856\n\xe4x\x15[\xf1\x12^\xc4s،g\xf146\xe2Il\xc0\x13x\x00kq\x1f\xee\xc5\x1a\xac\xc2\n,\xc3R,\xc1b\u070e\xdbp+\xbe\x8bE\xb8\x057c!n\xc4\r\xb8\x16\vp\r\xae\xc6|\\\x84阂\xf3\xf0%Lƹ8\x03\x93p:N\xc1I\x98\x80\xbf\xc68|\n\xc7a\f>\x86#q\x04F\xe3\xa3\xf8\x10F\xe1\x83\xf8\x13\xfc1ލ\x11\xd8\a\xbb!C`7X\x1b\xbb\xce\\\xa6\x98d\x82]e-\xec,;\xc3N\xb3Fv\x9c\x1dc\a\xd9>\xb6\x97U\xb3*\xb6\x9b\x95\xb32\xf6>{\x8fmcyl\x05[\xc2f\xb0$\xf6<\x9b\xc6F\xb3{\x18c\xc0BY\b\xeb̂@\x83\x02\x0e\xff\x84Sp\x12\x1a\xe0\x1fP\v\xa5P\x02\x9b\xa0\x106\xc0zX\v\x05\xb0\x06VC>\xe4\xc2Jx\x1bނ\x1cX\x06Y\xb0\x142\xe1u\xf8+,\x81\fH\x87\x85\x90\x06\v\xe0e\x98\x0f)0\a\xa6\xc3s\x90\b\t0\x01\xe2\xe1\x19x\nb\xe0\t\x18\x03\xa3\xe1g\xf0#\xb8\a\xee\x86~\x10\x01}\xa1\x0f\xf4\x86p\xb8\vz\xc1\x9d\xd0\x03\xc2\xe0v\xe8\x0e\xdd\xc0\a\f\bt\xa5m\xf4\x12\xbdH[h\x13=E\x0f\xd3Z\xfa!\xad\xa6U\xb4\x92V\xd0RZB\x8b\xe9.\xba\x9d\xbeK\x8b\xe8f\xba\x89\x16\xd2ut--\xa0kh>ͣ\xb9t\x19͢\x99t1͠\xe94\x85&ӹt\x0e\x9dMg\xd0$:\x9d>O\xa7ѩt2M\xa4\tt\x02}\x9a\xfe\x8e\xc6\xd2'\xe9X:\x82\xfe\x82\x0e\xa5C\xe8\x00\x1aE#\xe9}\xb47\xbd\x8b\xdeI{\xd2\xee\x94QJ\xbb\xd2\x10\xd2Nn\x10C\xae\x92+\xa4\x95\\&\x17I39K\x1aI\x039A\x8e\x93\xa3\xe4\x13r\x90ԑZ\xf2\x11\xd9O>$5\xa4\x9a|@\xaaH\x05\xd9I\xb6\x92\"\xb2\x99\x14\x92\x8dd\x1dYE\x96\x93\x1c\x92M\x96\x914\xf22\x99E\xa6\x92)\xe4Y\x92Hb\xc9(2\x84\f&\x83\xc8@\x12I\xfa\x93\xa0P\x13z9to\xe8\xa2/\xfe\xfd[\xdd\xea[\xdam\xc1\xa1\x9f\x1fA\xd6\u007fH\r\xb2\x82\x03\xb7`뛻e\xfc;P\xa7\x9ao~\xff7\x01 \xacM\x00\x00\x00\x00\x00\x00\x01\xff\xff\x00\x02x\x9c\xbc\xbd\t\x9c\x1cG}(\xdc\xd5W\xf55==\xd3=\xd3s\xed\xec\x1c;\xc7ޣ\x9d\x9d\x99յ\x1a\xad\x0e\xaf,\x1fk\x90l\xd98\xf2ږ-a\x1c#\x1f\x801\x06\xd6\xe0\x80 <\x90mbL\xb8\x96@\x88\xc3\xcf\x10\x85p\x18^\x80\xb5\xe3<\x9c\x04\x1c\x93\x80\xe1\x05BD\x12\U0009cf3c\x17\u007f\x0f^b\b\x9e\xfd\xfeU\xd5=\xd33\xbb\x92\xed\x1f\xdf\xef\x93v\xaa\xab\xaa\xab\xeb>\xfewqh\xfd\x17\xebk\xbc\x8c\xd68\x97\xe3\x10\x8e\xd5g\xe21g\x1c\x15\x1a\xb3\xcd\xed\xa8Q)7\xeb\xf9\x998\xfa\xf7g\xe6\"\xae\xf2\x9c\xe2F枱\".\xfac7\x82\xde\xf1̚\x1bQ\x94\x88\xbb\xf6\x8c56\xc6\xc1?\xc4q\x90\x17\ay\xe5 Ь\xcfdQ,\xe2ȅ\xf2,\xf8݆\x14\xeb\xfa#\xb3\xcd\x16zF\x92TS\x9d[\x9a\x9b\xabZ\xd6:\xe7yB*\xfa\x1a\x0f\xf1\x9d\xd5t\xa9\xd4,\x89_>\xf8/̃$-*p<\x94\xf1uZF\x92\xcbs\\)\ue111\\\x98F\xe5\x9dH.\x92\xdcI\xfd1\x14Q\x9eiΖ\v\xb2\x83~\x8eq\x06;\xf8\x18\x9e[\xbc\xfc\xae\xbb\x1e\xb9k\xc2\xd2\xf0/n:x\xf0\xa6\x83\x12Dg0\xbcѬ\txq\xd7\xe5\x8bs\x18\x1f$\xaf\xa0\xfa\xeb/\xac\x9f\xe5\x05\xf4I.\n\x81,\xf2Ji\xb6\x9a\xf1aԚG\xe8\xa9iy\xfc1-\xa5=6.O\x8f\xbe\xa6\xec8\xe5נ{\xaaw\x8f?\xa9iO\x8e\xdf]-\xaa\x15ǩ\xa8\xd0'\xe1\xf5\xaf\xf0[\xd0c\\\x82\xf4\xc9\xcc0O\xf2r\xe3\xf24\xc2ry\x17\x82\x1eޅ\x90\xa0V\xd5\xdd\xf7;\x86ySR\xc8E\xde\xfe\xf6HNH\xded\x1a\xce\xfd\xe8\xb3\xd1\xe8\xbdq\xbel\x1e\xbf\xdfvս{\xb5\x84}\xffq\xb3\xcc\xc7I\u007f\x93\xbeXC\xf0\x9f\xc3\\\x9a\xe3FX\xf3\x1d<\x13\x1fB\x8e\\\xcc\x17\xa0S\xc80\xc6gZ(F[\\n]\x9aq:\xabN\xe6\xd2V\xa4xQq\x8d6\xf65\x97\xb6ƜL\xc6\x19k]jY$_\x95e\x8eV\xb8in;w\x01\xf7J\xee\x1a\xee5\xdc\x1b\xb8\xb7s\xef\x836@\aà\x8e\xa3\xc6,L\x93!\x94\xf7\x9e\xd0\xf9\x8d\b)-\xe6lG3;Q\xde{\xfa\xe9Xhs\xbft\x8e4\xeeK\xf8\x16=\xab\x99\xa6\xa6\x18U\xa3\xb3\x06\x8e\xe2\x87P\x9bD\xad\x803\xf0\x87,\xe3I\xa3\xfbwr\x93\x04+\xa6\xd69\xa3\x99\x8ea8\xe4gjh\xa9\x17\xea|\x93&\xba9\xe0>\xb1l\x18\xcb\xc6\xe7\xa9\xfb\x9e\ro9N\x84q:\v\xfd\xb9ʅ\xb9a\xe8\xd3]Ћu6H\xd0\f:H\xc5\xfe`] =ًkH\xfeXzc\x8b\xaak\xa4\xa1\xc4\xd9\xef{\xb4\x84\xf7\x04\aU\xbb\xb1h\xd5\xd4V\x89\xa7\xcf\xe9<\xdf\r%z\xb1t\xec\xbbu\xcdq5n\x81{\x05w\x1dw\x1b\xf76\xee~\x8e\xb3c\xbd*\x92\xaa\xb8\x8e\x89\x82\xe1Xk\xa0\xdaE\xc7\xe4\xfb\x12\xe0\x81v\xe2\x81\x0fJ\x03\xed\xc4\x03\xe1\xd2@\xfa\xdf2\xb5\x1bH\xdd\xc1\xf9\"\xd6\xe5\x1b\x89\x1f\x9c\\/:'bE\xf2\xe3\x9f\xf2\"i\xa3\xfd\x14\xe8\xed\xdd؞\xd3\xf9\x16\xfd\x80:\xe8\xd4\x12\xf1\x11\xe7\x17P\b\xf3\xb1>\xa3>I\x95E\xcf{\xca{\x82\xf3h\xf7} r\xb5\xe7=\xd1}O\x96\x9b\xbca\x8e\\\n\xab\x8ek\r\xf4\xf8`\u007f\xd9\x03\xfdi{ϼ?O\x02~\xd8\x0f\x1a\xee\xc0\xfb@\xff\x05\xbco\xeev\xc3\x17\xe8\fJ\xfb=\xe2\xf9~\xa2\x99\x89ދg\xbb\xbd\xf3\xe9n\x93\xd0ý\x86v\xda=?z\xb8\x9b\xe4\xd1^,;;8\x04\xed\u007f+\xe7@\xab+\xe5\xd9]d\xb3D-\xe2\xc0\x96\x06\xbb\xefg\u007f\x0f\xe3\x12\x8e)'\x9fSb\xe0\xc1\x9d\xff\x8e\xe3\xea\xa7p\x1c\x8f($N\x19\x01o\xe7o\x14\x92\xcf\xfa:\x17Fע[\xb9\"\xe4\xe5\xfaG\x04\xa6;\xf8,\xd9s\ar\xff\xe91U\x8dk)\xf5\xd815\xa5\xc5U\xf2\xec\v\xaf\x9d#\xde\x0fC\x99B\xf7\\Js\rn'T\x82\x1c\xa3\xf4(\xdd\t{#t:\x1c\xa7\xf0\x9b\x19\x82\xa5o\xe3͎,R\x952=\xb3\xe23\xa8f\xcc\x199\xf8y\x8f?\xdbp\x84\x1d\xc3\x0f/\x9d\\Z:\x89\xb8@2c\xae\xf3\xbd\xc1\x13\xed\x18v\x9e\"\t\x97\x02uԹ\x127\xe9Ց\xd5\xed\xa5\xd5\xe9a\x03\xfe\xce_\x17\xa8\xc7\xf9\xea\xc0sx\xfd\x1b\xe8y\xa8\xc3(\xb7\x95\x9e\xac0Ë\x85)\xe8\x9cyD\x0f\u05f8\x8cM!\xe6\xc4\xeb3\xcd\xc6l\xb92\x85v\xa1y\x84\xfb\x97A\f\x9d\xae\xcd\xddw|\xcfm{RS95&Y\xa2\x88\xaddD\xbbn\xff\xbe\xebGrX\x14-)v\x8d\xa9\xe5\xc8\xfc\x02\a\xbd\xbb\xf0\x9a\x9d\xc7\xef[\xb8m\xef\xe8E\xf3\xae,\xa9\x19%*\x19C\x85Jl\xdf\xf5\xd7]P\xb9 !E\x95\x8c*}\x9f$\u007f\x8e\xadH\x89K\x00,s\x02\xea\xd9[\x8f\\kp\xf7\x1a\b\x97\xfc\xb3\x91\x9d\x85\xf5\u058b\x84\xbf\x8fU\x15\u05c8\xb3\xd4\xf5\xa1Z\xd7{f\x13ߪ\x8a\xd7\xc8\x13\x9ce\x15/\x13/8k*\ue725_\xe7h|g\x85\x06VX G\x03\xf0\x9e\x1e\xeb\xd6\xfac\xe89\xf4un\a\xb7\x97\xc0OX\xc6\x00\x8b\xc8\x18\x86[\xae@3\xca\x15\xf2\xac\x00hR\x9e\x85u\xd8\x02\x88g\x185[\x8d\xd9VӅ\xd6\xc6]\xf2t\xe3a\x04_\xfa \xd6\xffP\x85HYV\xc6\xd3\x05\xb5\xd5\xd4\n\xe91U.G\x04uL\x10\xc6\xe8\x1bu\x8c\xbci\xa9\xbd7\xb2\xfc\xa3\x85\xe9\xe9\x85\xe9{E\xad1\x8aŤkl\xd1x\xc3\xe0\xb5-\x86\x9b\x14\xf1hC\x95\x92\x91\x91H\x92\xbe\x96\x12\x1b^kb\xb2X\x9c\x9c&y@\x9b\xd6\xd7a\xef\xdc\r{g\x96\xb4\x89.\xed\u07be9E\x8e(\xb97N%\x98\xd9a2\xcba\xb6\x17|O\xc3\xdb\x11\x1a\xfe\xfe\x8a\x12\xa2\">\xaa\xe2\x93X\x05O\x9b\xf4 x\xd1\x0fE!)J\x92\xf0?!\xf2\u007f\n\xa2,&\x05\xf1\x05\xb3\x10\xba\nKs\x12F\x13<\xff\xd0'\xb1\xaa\xc9\xcb\xf0\x1eFF\xd6T\xfc\xc9-\x90L\x18\x96\x84\xc7y\xfeqA\x1a&_=\xad\xeb\x17\x1e\x900\x96~\x93\x81Z\xca\xfa\x93\xb0&\x1e\x058\x0e\xa0\xf0(\xc0p\x04P\x96\xe2P\xa7\xe9.\xfc\xe4~\xf0\xa9\xfb\xee{\xea>\xb4E\x03\xa0Um\x1b5CB\x8f\xdeG⾅Պ\x86\xa7\xde\r\x8bS\x16\xc9^\xb4\xfe\x9f\x90\xe9>\x80\xdf\n\xf4\x04\x87Q\x86\xb6Wfː\x91\x89b\x18\x16xˆvb'\x0e\x8dm6*\x00.CG\xd0\x00\xf4\x05\xa4rg\xe6\x01\xf8\xa7\x1f\xc81\xecdQ\x9d߉\xa3\x91't\x15\xef\x15\xb1\xa4?\x11\x89\xe2\xf7(\xf6u\x82$d\xe1w\x9d\xad|F\x84\xfd\xb5*c\x04\xcf*nA\xf3eU\x9e\x82\x1f\xf8&\xad\xa1\xebd\x88\x10\xaf\x1b\xb2P\xdbv\xa1\x03Eמ\x9d\x90\x14E\x9a\xc0g$E\xaaɊ\"\xd7\xc0Ca%\x86Cĸq\xae\x0e\xf0'gSX\t\x1c\x1f\x06';i\x93\xee\x1b]\x10\u05cd\xcf\xec\"Ido\xafjz\xcf\xef\xc3\xe9r$\xa4\xa9\x0fɖ\xfc\x90\xaa\x85\x8e\x98h\x06\x0e\xb0\x1aY\xe4\x0fl\t\x8f\x85\xb7<\xa0\x99w\x1b\x96aX\x17Q\x17\xad\x99\xda\xc3IH\x0fɓpXuN\x9d$i\xc1\xd9\x12\x0eo1o\"i\xbc?\x02\u007fC?\xb7\xa1\x9f\xe30\xf3\xa0\x97\x03`7lZ<9e]\t\xd7\xddz\xab^\xe1\xe7\x14\x00\xbdsNF\xb9I\fY\x18\x19\xba+w\xbes\xf8M\xb9\x93\xb97\x1d\xfe\xa6\x11\xbe\x87\x80\xe0\xf7\x84\x8d\x8fI\x9a\x1cR\xc6W\xda\xed\x15\x86S\xe1\xf5'y\x04\xfd\xb1\x83\xc2\xde}\xfbM\xad\xeeN\xc1\xe1\"\xd3Ͳդ\xdb5\xaccS`\x1b*\xc5\xc0\xdc\xca\xec\x16𡟑\xe9\xf6$q\xd0\r\xf1Õ\x03Ǐ\x1f\xc8\xecuDQ\x12\v\x82h\x8eNN9{n_\xb8\xff\xc6\xe1\x03\xbb\x1d\x18a\xb4\xe6%\x9e\x96\xb0\x94\x9b:~\xff\xf1TT\x80\x94\x92,\x84\x12\x11\rv\xd2\x1b\xefwG\xddW \t{x\b\x1d\xb31\xee\x10Ԓ\x14HO\xba@UYE1\xdb\xfbf\x1b\xf3\x88\xd6M զ\x1b:Ԛ\xa0\x10\x15\xd7\xd9B\xbf\xea\x83\xfa*Y\x84\xbe\fu1\xbcJ\xdd\b\r\xd8v,\x04ہ\x84#ﺊ\xd4\xf9\xab[\x8f\x994\x8c\xacw]U\xbbeX\f&\x8f]\x8e\xfe\bjj\x04Zt\xe9\x9c\n\xadDW\xdc\x0e\xad\xe8\xfcA7T\x1fy\xc5@B\x18\x03\x1c\x80\xcd\\8\r*0/wq\a\xe1\x90\xc8{\x1by\x9em\xec\x9c7\xf7\xe4\x81g+\x80\xc7\xc4\xce\xe1GOw\x96\xc9\x14@\x80\x9de:\x9f)\xb8n\xff\xdf\xf3A\xac\x85\xfd\xe5 5\xfd\x86`t\xe8\x04Mw \xe0~\x8c\x9eƇ\x02n\x10g$-\xe1J\x83\xb8b\x83\x1c\xfd\x80\xcd5\xc8\x02\x82m\xf0\xb4\x9f\u007f\xc6I\\\xf9\x96+\x97\xc6v\x8c\x9d\xcd8k$\f\xce\xe2\xae+\xafܵ\xb8\x98\x1d\x1b\xcb.\x92\xb9\xaa\xd0y\xf0\x18\xf4\x10\xccU8\xcd!oL\xe0\x89b\x01\xc7\xfcs\x0f\x86\xbf\xe9\xc2\xd8;0\xe6P\x16:Z\xdb\x17Κ\xdbw\x8d\x9cH\xcdϚ\x9a\x05\xb0e!\x01p\x80\x98\xbf\xe0\x04\xfa\xb5\x1c\x8eF\u007f\x1aQG\x8b\xeeQ\nW\xbe-2\x94\xc8#\x94\x8d\xf1\xbc\xa6\x19EJs`c\xb3\x85\ue7245aԇ\x96\xb8^[\xfa \xe7i4\x85\xe0\xfd\x83\xdfyPSL~\xf7$\x85g\x13\xd3\xf9[?zk~\x9a\x05&w\xf3\xa6\x02\xe8Ӄ7Ք\x88\x88'w\x99\x1a`\x85\x05\xfe\xd2[o\xbd\x94/\xd0\xc0\xaeI,F\x94\xdaM\x8c\xf6\xf1Kġ{\xb9\b\xecXM:\x1d\xa6Ɍf\x95\xf8\x9e\x9e\xcd\xeaW2\x84\x02\xbdQ7\xac\xce\x19\xcbЯ4\xb5\xd3\x00\xfd\x921\xf9\x05\xba\x87~[\xdc\xeck\xe8.\a\xd6\xce\x14\x9c\xc3\xcdY\x80\x88\xe6\xfb\xf2\xfbN,\x99\x8c)\x8e*\xa9\xb1\x188\x0e\xba\xb3?\u007f\xdb\x18\xad\x8d\x1a\x92\x1c\xb1%cʐ\xec\b\xe0\x1at\x9f}\n\xf6\xae\xcfA\x99\x15n\x9e[ڬ\xdcR\xaf\xdcy\x9e\x01c\xf3\x00\x10B\x14\x00\b$\x0e\x0eW\x1a\xe7\xc6\xf1y\xab\x88\x16v\xecݻCqtQ\xcdO\xa7\xb6nQEݩN\x8e\xaa6\x9c\x04\xaa=\x14\x0e\x0f٪\xa89\xca赃m\x19\xe8\xab\xf7T\xde\xf2\u07b7Td\xc9r\xa4\xf8\xce\v+\xdbO\xe4%ǒ\x1e_~eR\x96\x14Ֆ\x8d\x91\x89\xa9\x89\x11C\xb6#\x92\x9cln\xd2p\x8a\xdf\xc2\xfc_\x05h\x18\x03\x1c\x1c\xe6lX\tE\xe8\x83q\x8eۉ\xea\xb1J\xac\xdeh\xd5c\xc5V\xa3\x18C\r\x16.A\x18\x82E\b\x92\xff\xc5\n\xfc\xd6V\xda+k\xe0t\x88\x83r\xb9\xe5\\{\xb9\x9d\xcb\xc1\xdfY\x12\xd3n\xaf\xc1\x0f^R\xffJny-\xb7\x92\xcb\xe58\xabK[\t\x96\x9f\x86\xb5\xc8\xea0\r{K\vN\xbd]\x1c\xb7%R\xff\x95\xfeGU5\xaa\x8e\xa8\xe9hZ%\xffR\xd1t\x94\xfcS\xa3i\x12\x11E+\x9d\x95_\xe5\x17\xdc\xf7#\\\x92\xf4\x1e]n\x04e\xf0Ojo\xff\xcb8\xdft\xcc\xef\x98\xe67\xcd*<\xee\xadf2\xd5\xcc\x13\xdft2\x10\xa8B$<\x9eΐ\xc8.\x1e\xb5\xe2\xe59\xdaO\xe1c\xcb\xd9\a;%\xc0X*0ۦ\x11\xc3S\xd0\xff\xf1K\xa0\xe5=N\x8b\xe1gH\xd4gS\xa9?\xddB\xaa\xf0#\xbf@\x87\x14\u007f?-\xf5w \xe2\xb3\xe9\v\xd3O\x90\xeap\xde\xda\xf0\xf7\xc8\"\x8c\xc8\x1c\xd4\x02\xf61\xc7\xed\xe1\xd1\xfe\xa6/\xc56\xa7M\xd9\xe5V\x9e\x9e\xcbhM\x15\x04\x15@\x8eG\xabssU\xb4\b\x10Ś\xfc\x1d\xb9\xfb\xf7\x82 t\xfe!dۡ#\x06\xd6guE\x87\xfd\x0fҵ\xabs\xa6v\x8b#ˎ\xbc\x9f\xba\xeb\\.g\xa7lFcE\xa4\u007f\x00I\x89uϞ\n\x1c\x05\x00[\xac\xb5\xd1\xd3tî\x9d\xf4\xdbALJ̭\x1aiGw\a\xecBO\xdeb\xaf7hV\x04\x80\x10\x1a\xf9X\xa9A\xe3\x8b1ч\xf1\xd7\xd2%@A\xecPg-d\x03&RJ\xdb!d\x87\xd4)\xb5\xbd\x0e\x95\x82\x985TvL\xd31\x11WJ\x03\xa8\xbcL\x1a\x05\xd8\xc7\xc9ti5dC\xbaP\xe7\xbf,/\x9f\x85\x98\xda\xea\xa2IRұf{w\n \xd51\xa8]\xa4\u05fd\xdb\x11\xec/d\xc7\x1e\xee\x83\xeb\x18\ty\x86砑\xf4\xec;b\x88\xa1\xa8\xf6\x96pB6\x8e8\x99S\xfb\x8f\xed\xdf\u007f\xac<\xbb8;\xbb\x88j\x9d\xb3\xf4D\x85\x8eɫ\xa6\x121\xf3\x99g\xc8\xeb\xfd\x1f&\xafg\xe9\xfce{\xc1$\xf4\x8e\u007f\x16\xf6N\x8eJ\x11\xd7\a\xe3\xecyD)_v\xa5^A\x14-\xa3\xa8\x96\x93x(\xe1tC\xeeۅ\xa8ZS\xa3\xc2۟=:\x9dS1E\xc0\xc0i\xb7{~t\x93\x1a\n\xa9\x9d\aO\xdf\x03\xfd\x10\x85z\xdc\v\xf5\x18bx9\xec\xbb8x\x84E\x8a\x01\n\x90\f;\x12\x19\x94b\x84\xb80\x92\xe8\xe2tF\x94^\xd1\xfc6͙\xe6\xff\x8d\xad\x17\xc9\xc2__AO\xed\\.q\xc5_\xc5v\x8d\xcc\xee\xa7($\xca\xd1ǡ\xad#\xd7.\xc3\xf4\xef\x9c\xcdO\xe5O\xb2\xf3\xeb,jC\x1d\x8a\x94.\x00M\x1666>P\x0f\x04mٵ4\xed\xe1\xa2A?:\ru\xe8\xac\x05\x9a\xea5ۧY\x9f\xe5\xf7\xd0>?0\x00\xd1\x16#\x1bJ\x8c\x14\x03\x04\xb0:\xea\xc3\x01\xa02\fi#\xd8M\x8c\xe1\xcdP\xcc\\\x95\xe2\xc9ĩ\xcey\x95\xe0s\xba\xa2,\x89\xa6\xb8\xa4(z\xad\x16\f\xa0U\x0f\x8d\xceu\x9e\x0eT\xb9\x96\xf3P\xeb\xce\x19\a/I\xd2\x12v\xcev=^;\xfe֛;\x1b\xda\x11\xdbЎF\u007f;\x18M\x8a&%\a.\xa5G\x11\x1c\x87\xe05g\xbc*ܙ\xe8Χĝ^\xcdЫ\x06\xab\xe2\x90\xfaS\xea\x81u\xb2W\xfd\x93\x96GT\xe8\xfc\xe7歆\x80G\x97\xa6m\xe8ҥ[\x83\xf4Á\xb0\xdb\x0f/\xd6\xd1@8Dp:$\x13\xb7\xf3\x8b\x9e\xff#\xa4:\x1d\xda\xcdh\xb5\xe7_V\xa42y\r\x0e\xc0\x8e]\u007f`\x95\xacs=\xfff\xf5\x1d,\u007f0l\x0fЏ\x83+\x89D\xb0\xde\xdeX\xb3\xab\t\x02\xf0l\x9f\x83r\x9bW\v\xb5\xb1T%\x89\xc0Y\xe7z\xfe\x97Կ\xb1\x17\xa9\xff`\xd8\xeaU4P\xf1O\f\xf67\xf3\x9f\xedU2\xb8\x1aWz=\xbd\x1e\xe8\xf5M\xeb;\x80\x1f\xd4_n\xf8\\\xfd{.\u007f\xa0\x8fW^\xccKi\xe6\xcf\xc1\xf9qz\x80f>H\x13\x1f\b\xbb\x03a\xe9E\xfa|\xf0=]m\xeds9\x88\xd2\xe1:tOD\xed\xcd\xfdK\xbd\x0f\xc8\xde\xe8\xfbW{\xde3\x1bwO\xe2\xac\x06ZOh\x94\xfex\xe9\x00A\x8e\x03\xd4x\xb0K;\xa7U\x1e\xac\xf9\xc0\tW\x1f\xec\xa9\xd6@\xfa\x1b\x96%i\x19;\x0e\xda;8\xd9\xfe\xa9\xdf\xf9\x87\xde\xfb\xc3˰\xc7,\xc3\x1e\xb3\xa6+\x93\x81q\xebM\xb4\xa0\xf7%\xb4G\xa6u\xa1t\xfa_\xb5=ih\v\x866\xa1\xc6\xcbh\x0fk\x8aB\x9a\xf5[/\xaf==\xfaP\x98\xc0\xc7\x1e\xe7\xb4\v?J>\xbe\xd5@K\x14hc\xd0ʏ\xacB1|\vZ\xe9F\x00\xf8R\xd6#\xce:\xe7D\xf4\x83\x1fe0\xb2\x87C\x10zD\x81\xe3F\xd1\xe6t\b\x9coT\xcaaD~\xfd\xe4\x85OL\xe5\xe1\xd8?\x81V\x8e(ʩ9EYdŰ\"\xd1b\x9e\xbc\xfe\x1f'\xfd\x97>o\xff\xeb\x14\xeet9Ν\x92\x1b\x8cE`\x12 \xfc\x91\xc4\xceTA\x0f\t'WO\n!\xbd\x90ڙ\xc0\xa9f\xf1\xc8H#^HF\x96N\x9e\\\x8a$\v\xf1\xc6ȑ\xa2\xd6O\xeb\fq\\\x93r\xac\xe5B\x8bB4\n%g\x1e\xbf\xe8\xe6\x9b/\xba\x92\x12;\xdb7?t\xb3O\xb3XF\x8f\x01N\x90\a<5+PI\x82\xc6\xec<\xdfj\xce\b\xf4S\x12\x04\x101\xe6Ŀe5'\xf2\xc7\xef?\x9e\x9flXx\xd2%Ñ\x9fVMu\x01}z\xf6\x9a\xe6\x81\xf2\x85'N\\X^\x9c;:\x1b\xef\xb4!z:ORL-x\xb8\xc7\x1a\x8c\xd7\x1ag\x00DڂF\xbb\xf10\x0f8\xed.\xbe٢'6\x1c\xd5\x04\xe4p\x85\xee\x12\vb\x03\x90`\x1cE\xf2聫0\xfe\xc1ղ.#\xed\a\xf8\xf7u}\x04c\x88\x19\xd1sƽbU\n\xfb\xf4\x14\x94Ud\xb9*H\xff\x04`ׯ\x93O4\x04\xdf\\\xfd\x03l\x199\xa3H\xbf)\x1aF\xe7s\x92P\x95e\xe5\xa3\xf4\x13\x18ðT\x15;klL\xda\xeb\u007f\x03c\xf2).\x06c\x12aܥ\x96?\xab(o\x87\x90\x89\x9f\b\x97J\xe1'\xc0㠇\r\xe3\xcc\x17BQ\xa7\xb3\xe2DC\x9f\xff\x03\x83\x8d\xeb/`.\xbd\x83P\x83\x1a\xbd<\xfa2\xf2s3\xaa\xc6#\xe1\xd2#$\xbfG\xe0\x8f\xb0\xcb\xd1\t\xc3x\xe8#\x90\xe5\xbd\xc4\xe9\xacA\xbe\x1f~;q>`0\xba\x06\xcd['\xb3\xa6\xc56&\x92i%\xe87\fc\x8dd\xd9\xf6\x9e\xbf\xa7e\xb5U?\xb3\xd5`\xc0\x9b\x87\x8f\xa2\xc7Г\x90'\xc1\r\xb1$\xd3\xfew\xd1ÉDg\xd5\xddR\x8f\xfd\xb3\xd94\x9f6\xd3\x19\xb4\x9aM\x9a>\xcc\xf9c\xd8W>N\xcf\t\xce\xed\x8a*\xb0\xd5R\xeaqdh\xd4i\xbaP\x88\x83\xbc'q\x86\x83Ķ\x9a?\x18\x19\x87\xf3agvnnX\xe5A\n\x1aZ\xed\xfa\xe0\xdb\xc1\xfea\x98.k\r\x0e\xf8\xd1\xcf\x06:\xe8\xbf{}\x82ځ\x0e\xa2\x81\x81\xf1\x04|\x8a\x92R1\xd9C1ˎ\xf28\x86\x19/\x92\xe76\x8e(\xba\xa3\xf3PpHi\xbe\xdd!\xed\x9fs\x81\xfc\xfd\xac\t%s%8\xe9\xd0\xfb;G\xbcY\x87\xba\xb3\x8e\xf0l\xfe\x03\xfa\xec\xcfh\x9f\xa5\xa1\xed\x01j>YJ\xa5\x1el_Dk\x80u\xae\x10t\x12\x81\xdb99\x9c\x8c\x9d1\xc7\xcc3\xb1\xe4p\xbbM\xa2\x89S\xdf\xea\xaeY֚\xbb\x95\x8eGz\xfd'\xa8\x84>Dx\xc9,\x1bO\xe8\xc6\xc3\x1ef\x8b\x8fc\a\xc71\xc2\x1f\xfa\x108q\b<\xae|\xfbqL}\x10E\xdeaH2\x98W\x89\xf2H\tG\x92\x8a\xed0\xee1\x1a\xda$\xb3?\xd8,\xb3\xe0\xdeW\f\xf0y\b\x15\xb8+EC\xa9\b\x1eU\xa1>\xe3\xf1|N\x19W\x1bs\xf0\xf3\x1e\x1e\xdf\xe7\xed\x81(\xe3\xea\xfe\xfc\xed^\xfen\x9e\x10%\xa0w!k\x96\xdf\x1dH\x81\x8d\xe5y?\x9f\xf71\x06\xf29\xebWi\x11\xb6\x10;G\xe4a\x18mh\xf6.\xe8N\xe8\x01\xaf~\xb7-,(JUQw\xefV\xe1\xa1\xf4\x85\xbcB\x1e\xde\xec\x9d\x17\xda\xc8\x03\xe3<<_\xe8/:\x8e\x9e\xa7\x99\xdd\xfb\xa8a\xc4\r\xfd\xc1\xfd:<\x8c\x13:\xaa\xd0zt~\xe3Q]wu\x12O\x1e'\f\xb2\xa7\xf7\xf2%\xfc\xa4nθ@\xdbњ\xe7\xa9ț\x8cM\xbeK\xc0\xa1\xc4N\x9fx\xef\x15\xb9|Ḭ\x16U\xac\x87\x9cPd(\x1c\x89F\x1c\xe8\xb3\xd4pj1WN\xa7\xcbi\xaf\n\xaf\x00h-\x85\x01\xb5\xd7lS\x0fi\x9a\x91\xb5E\xd8%ըUN\x8d\xedx>M\xd2r\\\u007f\xbd\u0084^\xee\xf7\xf6\x88W\xac\x1b\x98\x15dFx3ß\x11j!\x99,$M\xd8;aW \xff\x8e\xf8\xa3YL\x92W?I\x18\xc7\f#\x01o\x13\x06\xd7=\xdb\b-\xa8\xca-qG\bd\x0f\xf9\x8d#\x93Ǟ\x10\xc0\x14\xaaxr\n\xf3\xa8\xe5\x89*d\x91\x8b!\xe4\xc5C\n/\xad\x89p\x9d}\x0f)h\xdaجׯd\xb7\xca\xe2\xfa%S\xb0\x97\xec\xbfA\xcfBH\xbfa?\v|qb\x976j\x18\xa3ڮ\t\x88\xe8\v\xd8)\xdbN\x9d\x05\xcf\xd4%u\xdc\xf7\x91\x17\xf8\xc2&\x1f\xb1\xc0\x1bɧ\xf6@\x9f\x86\x82+@\x9cB\x185\xc5,j!\xd9\xeb\xbfO/\x9f\x9aE\xa8ܹ\x0f\x9e\x9d\xf5\xb2\xd7w\xb1e\xbd\xdcY\x9f\xcd\xc0\x03\xa1Y\x8eɒ\xc0\xfa_\x83\xf5?\xe4\xaf\u007f_z\x84l']\xd9\x1a7\x8b\x10\uf4b5O\x17;va+\xb8\x13\rSq\x99\x1f߉\x91\xc06\x01\xec\xed\v\xb7S\xb9\x84\xdb\xe9\x16C\xf7\xec\x9f\xc0\x99F˰=\xa1\x14\x9fб\vu\xb7\xc5\xca\x14\xfa\xda`\x11\x9d\x1fS\xb6\xc80\x14\x81\xde|\xde2$\xd8o\xff+\x9c\x81CA\xf9\x1av\xccL\xa3\xaeT\x02aÝ#\x9b\x8f\x06ʎ+\xfde\xd3\xfc\xff\x0e\xf2_\xa5\xfdԕ\xb9a\xc7\xfc0\xea\x1e\xb7Dt\xf2#\xe7(\xe0\xef\xcf\xd3\u007f~?\xfd\x90G\xe8w\t\xb7\x15\xf9$\x14Sp`g\xafP\t\x12\xa1E\x98K\xe8yE9cd\xb6\xec\x9dqCbL/ֲ3\x17-\xcdf\f\xc4Cy\x0fi\xa1\xf0\x11\xa4'\xc7\xdaㆩ$\x0fOL,\x8c&U\xb4\x14\x0ei>헝\xe5\x16\xc0\x9a3\xdc\x1e\x8e\x8b4|v\xa6'\xd0S\x9a\xf5\xc8\a\x9epO\xc3\xf5y\x9d\x9e\x98O\x1d;\x1e\x0e\xe2\t\xfc\xc4L\xedn\xc38D\x8eלq\xb7f\x82\xe7\x90\xf1~Ë\xfd\xd7n\x14:\xdf\xcbn\xd49\xea\xe9\x91r\xbd\"\xa1F\xa5`\x9d\xc8\x1a\x8d\xf4\x89#\xc1p\xb8N\x8f\xd5Jۃ>\xef\x97\xd69ۭ3\r\x93j\x10\x01K\x16\x8b\xb8\xeeۄ\xf7\x81A\xce\xf9C~\n\x96M\x106*\x06(\xac]bX\x97\x1c\xd3\x13\xbcX%G\xfai;\x94\v٧{\xde\xe7\x06#\x98\x97ʍ\x9d\x86]\xed9\x02{m\xa0>м\x18\xec\xc02\xa0\x0e\x9bK6\xe0\x14\xff\v\xbelRz+\xe1\x19N\x13\x10\x81\xd4k\x17\x81h\xd8\xe2\xf3䏆\xe1\x04b\x94߰/\xa5\x048ՏTI\xb2%G\xf9M\x01\x99zY7\x91\xf0\x9b\x8a\x031\x92\xfa\xde\xf7\xf6^a\x1d\xf7\xbf\xbbM\xb2Ղ*ɇ~G7M\xfdw\x0e\xc9\x12\x04m\xe9\x92K\xba\xf1\xf0I\xf0ņ\xf3b\xa8w\x8e\xf1\xdeyQq\xc9\xe9\xd0h1\xa1\r\xef\xd0:D\x8f\xa6\xab\x14\x80\xc3\x14,\xb5%\xec\x1f\x94\xcfЃh픮\x9f\x921\xf6qoJ\x8b\x97a\xef\x9cⶒ\x19Uo\xd4\xe1\xdc)K\xf0\x80^\xb5\ay\xc5e*b\x10w\t3\x9fp\xf0\xf3u\xc2\xe47\x11\x13\xde\"H\x19\x9c\x13\xb95\x18\x04ĭўg\xc2HvhB\x9b\x1d\xc9N\xa5\xd3SّY\xad\xf3\x8f\x97\x17\xf3Q=\xaa\xbb\u007f\x17q݈\x11\xc9%WVm{\x15\x86\r\xb5\xed\x10%\xb7,\xc1\xd0\xc5Ffs##\xb9\xd9\x11\xc7i\xa4!y\x84\xb0\xc5\xf1H\x89\xcaj\u007f\x15\xf06\xc6w\xa6\x87\xb9\\\xae\xc0\x89\x0e'Vk^\xf4\xea\x82\xcbl\x8e5[\xa4Ӳ\x1fx\xddܫ\xd2\r[J&tI͵/{\xf3\x05\xa4\x9c\xdf\u007f\x1d\u007frii\xfa҄d\xa3/.\\\xf2\xf6/\xab\xf2Tib\xcaе\xa4\x11\x9b\x9e\xaf\x15\x00cZ\u007f\x1e\xe0\xa3Eh\x9b\x0e\x90\x03\xd5,\xa03\xbde\x03\xba\xbf\xf9\x1a㷅ҙN.\x93\x0e=gΙ\xee\xe0RS\x12\xb5Z\x02\xad\x02V\xfaŁņ\xd6;\x1e\x9da\x8c\xe2\x8bd3\xc4\xde\xc6S\xf4=\x952c\xa6\xd6a\xe3\xe1\xa9\x0f\x9d\xcd.,do{\xb5\xa4.(*\xbf\xe5\xf8\xb8D\x00i\x94\xcb!\x02JK\xe3Ƿ $\xc9\xe2\x82*\xbd\x1aq\x95\x99ʣJ\b?\xb2M6\x94\x9boV\fy\xdb#\x82\"\vʣ\xd0V\xa5\xcb\xdfT\x01\x8b\xcbì\xda\xca\xed\xe3.\xe3^K8\x8ay\x0fy-\x9d\x83\xb3Yy\x99\xf1tS\xcf7\xfa\xf6\xf8zo\xb7_\xf3\xa4W\xdaA\t\xfc\x95s\x06\b\xa5\xac\xd3\xce8\xb5\x001\xd8BV\xe79@\xaa\xbfOS0\x01\xfc;\xce\xe1G\xe4[\xc0ޙ\x90%s\xe9\xbc\xfe\x01\x85+l\xc0\x9a\xb7w1qr>\xf0א\xcf#\x00?\f\x13J\xbf\xdd\xcf\x191Q\xa9O\x0e+FX\xa11\x99H\xfcSٲ\xee\b\x92\x85A\x12}\xf2!\xc8>|\"\x1c\x13dt%\x96\x1e2h\x80\xc4\"t\xc9\x1do\xba\xe3R\x88\x93\xf0̎\x19\x8c&\xb0\xb4\x14\x8e\xc5\xc2K\x82,\x18\x126h\xe0n,M\xa8\x8bwl\xdf~\xc7\x05\xd2\x16\xc2B\x99\x9d\x9c\x85?\xc2G\x01ؒ\xdb\x0e\xb0\xe5>\xd2f\x9b\u0096\xe4\xb0fg4\x05d\xff\x9f\x8d\xe86ڹ\tZ>\x90\x17\x83\x83\xc9\xe9\xce\xcet\n\xb4\xfe\xe5Ƽ\xf6l\x9a\x15\xe0\xac\xc2\xfa/\xf97\xa3{a\r\xed\x19\xc4\x0e\x1aE\x8fO9Cii\x14֖<\xf8b'\xeaG$<`9V\x9f\xe1_\u007f\x03\xe4~\x03\x06\x00 \x86\xab\u007f\xac*\x16\f\xfb\xcf4\xb3\nA\x1dw\x9e\xeb\v\xe2\xfe\xb4'\x8e\x11\xa9k\x87\xbc\x18\xff\"\xb6\xf4\xac\xa9\xfdh\x9c\xbcu\xe2\xc1\x00\x0e&\xf3t\xb6\x16`/\x98\x82\x16\x10D\x86\x122\xe3\xfeQV\xec\xfa\x84\xc0\x04\x19&\x88\x0f\xe6-\xd1\xee\xfc@F!\xdd\xe4\xe5\\~*\x1f\xf9\xab\b\xb8\x99\xfdT%\xe5\xb8\x12\xe2U\xf4.\xc3\x14\x1e\xb0sQ=\x19.\xba\xf9\xbc\x9b\xb0\xac\x04y\xe6\"\xe8\n*\xec\xa5+\x93Q\x9d\xc9\xff3\x9av\xa4\x8f\xabǨr\xae'\xd6@)n\xabm\xb2\x8a\xbb\xb4\xf1\xb6Gg\xdfK\xe9\xe192\x0ep>\xe6\xc9\x1e\n\x80\t\xa5%\x99\x00ޱ|(c\x96\xdfy\x00\xe7Ý\x93\xa6\x89\x89\a\x9d6\xcd\xce!\x80:\xd4}$s؍>|w\xc8N\x18ę\x83i\xfcz\x18\xa0\f\xd978\x06'ui\xef\x8c\xe7t\bJ\x1c\xe02\xd6\a\xc2\xf9\x17y\xef\x0e\xb6\x97`J\xe8b\x8f\xa9\xa0Hۺ\xbe\xceW6\x89\xfc[ʭ\xa8\x11\xf0\x8aq&\xdeAb\xdf\xd1\xcf\xd2\xd8\xdfu\xfe\x9b\xe70\xbe\x92\x1dB\x14\xc2\xea<ݧ\x83\x92\x81S\x81\xe81\\\f+.\xdfO\xd2t\xa945\xdb\xe0\x8b\x12q\xc9q\x18f\xb4\xabz\xd4\x13\x18iz\xb8w\x9c\x00\"M\x0f\x06\x93cN\x8dr \xbc\xa1Ī|\x87,\xa3\xb6\xac\xe2\x17\x04>\xfbnY~\x98\nh\x1c\xa2\x02\x1ay\x13jG\xea\x96*\xf7SNs*ֈP̲|!V\x85IyD\xeea\xbb:)\xb4\xcd\xeb\xae]$\n\xa9ss\x93\x05<\x1b_̦\b\xb17\x95]\xe4\xb5r\x02\x17&\xe7\xe6\xbc\xfd\xa7zOH\x19\x9d\xb4\\ך\x1cUB\xa9\xae\x1c\xa3\xa7K1͵\xa8\xc5\xfa/\xd7\xff\x18f\xdb\x13\\\x91p_9*\x05\x177\xe52\x11,\xe6\x01\xd7-\xcf\xcbq\xe8A\xbaw\x11l\xd2\xc9\xf2\xeeL}\x86\xd0\x14\xbf_PU\x85ǼVYؿm\xfb\xe4x(<\xbe!\xe6\xcb2\x16t<{\x93\x89\x04I\xe0yCԎ\xa2\xaf\x14\xc6á\xf1\xc9\xed\xdb\xf6/T4H\xad\xa8ꆘ\xeby=\x04K\xf8\xa6Y\x01K\"2&\x8eR8\xfc\x97\xb4o\x9f\xa0z\xf3\x00$q\x14ރn\x1d&\xf4s\xb2\x9b6]\xf4\xbf\xec\xcesk\xb6\x98\x90쓖\xb1e\xfb\xab\xd2;L\\Sl\xf4{\xa2\xbd\xd6y\xce>a+5l\xeeH_\xbdmF\x8f\x9c\x8cJ\xbe|\x9c\xc7K\x9c\xda\xc8M\xb4\xc9\xea\x9cF\x85\"\xd1\\\x8a9ð\x15W\xca^ \xe6ƃ\xccƩ;?m\xecF\xbc&f\x91\\*\x1e\x1c\x96\xb0 \xec\x87]\xa3\xff(\xed\xac|\xfaN\x036\x92\xfd\x024n\xf8`\xb1$\xa3\xac\xa8\xf1h\xb7G\xbb#x\xe2c\\\xf9ܚ\x02\xdd\x13\x94\x1c\xef\x83\n\x03o\xbe\x8a\xd2vdzCc\x80\xe8\xd1Hpnl_u\xe5.\xba\x00\xad\xec\xd8x\xf6x\x97\x9e\xc9\x13\xf9C\x86\x93Ri\xec\xbc7/[\x01\xdc\x12\a\xfc(\x96\xf7\x96\x19\xdff\xca5k\xc6)\x03\xfeV\x8cE\x03\xfex\xee\x05(\x16\x01\xa8h\x9d9\x03\x85\x1f\xe9S\x03'x`\xc6Dž\xfe\x0e=\x86>N\xf5\xe8\xb7p\x9c/e\xeazT\xf1)T\xf1\xb6\x16\xa2\xb7\xb0!NX)5\xca\xe5\xc6w\xa9`\xa5\xfc\x86C\xb2\xaa\xe1;>\xf9\x01\x16\xfc\x8b\xd3$x\xf9Gn߿\x9d$*\xbd\x16k\xaa|\xe8\r2}\x8b?y\a\t\x9e\xfe\v\x16\x14.\xb8\xed#\xac/\xbar#Y\xe8\xfb\xa9\x8d\xfc\xd1J\xbe\x80[L\xc3h\x18uYU\xfeZ\xf5{\x83\xb5\xbd\xd6\xc9Y\xe1k\xbbJG׆\xeb\x94ar;u{\xcc\xee\x1d\xf2}T\xf5\xe8>y\x992c؟\xcf?g{\xe0\x047\xcbq#\x0e\xa6:\x9bTU\f\xe6\x1dCj*\x14[\xe8\x02\xb6\x94\xf6\x03\xd3\x03\xc3V_\x8c\u0378|;gY\xbazx\xe1pFL\xc19v\xd0Q\x92|!]*\xa5\xd7 N\xd5-\xab\x9d?\xf4\x9a\xd7\x1c\xfa\xbf\x17F?\xa8\xc5\xf1ކe\x8d\x17\xacb\xa4\xb1ͲJ\xe9\xe5t\xa9\xb1\x17ǵ\x0f>\x81R\xa9=\xcb{8\x8f\xe6'P؊\xf0\x1bdߨB\x173dGL\x97Y\v\x0e5\xdc\xe0\xe1z\xe0\x84\x89^\x05F\u007f1\xa5)\xa1]Q\xd11\xe7-!\xa3NN\xaa\x19\xc1\x9a7\x1d1\xba+\xa4hS\x83o\xb5t\xe0\xedZ hb\x92\x18\x9b~\xe2\xb46\xd9\xffvz:\x90UZ\xeb\xc9\xf1\xdc\xc3U\xbcݙ̭\xb8\x8c\xc9\x1f\xe00cT#\x8aꩴ\x88rl\x9dH\xff\x12<\\\x1a\xd0\n\xf7wi\x9eKG\x8f\x85PT3L\xd1*\xa6\x00K.^\x10U\x8c\xcc\xf0>pR\x19MR\u007f+\x9a\xee,\xf7\x8e\xb7\f\xddy\x9f\x8f\xa4B\xe3\xe1hII\xe4\xc2#\x02\n\xa9\x8f\f\x87B\x93\xf6\xd0x\xc2\b\xa5\xa2]C\x03_a\xbbt\xb0\xdee\xae\xc9\xcd\x13\r=\xa2\x0f\x02\xd0!,\x0f\xba%`\xbf\xf6\xad)D\xfe\xd8\t-\r\x88\xc5\xfaSv\xf2\xb7TI\x83\xfa\x19ʾap\xa2\x17\x14\xa1\xe6Պl\x1aZ\x14\x85\x8eE\xd3i\xf4\x11\xbf\xc6f\x8a\xd6\x02\x8d\x84\x8c\xc4\xf8\x90=\x19\n\r?\x02 \x9402RTJ\xd1\xf0x(\x15\x89\xa6\x9c\x9e!\x84\xef\xd0\x16\x12\xfa\u07ba'7\xef\xf55\xa5f7\xe3.\xfd\x8be\xc81\x88\x999\x83\n!\xad\x12\x92O\xdc\x05\xd7\x1e\xac\xb4\xb7\xc6N\xf9\x9dV\x1c\x19\x11\x00\x1d9_\x9f\xa1\xb5\xee\xb8ȕ*\x1b\x16I\x93^l\\\x18]ү\xb7\xd7\xd7n\x83P\xb7\x1blFPQt\x80\xd5h\xf5+&\"\u007ftm\x96\xed\x1e\x81\x86V\xdd\xdf\x1c\xae~Y\xfdf\xbf\xfc\x91\x19\xe0\xe5\x97`;\xf3\xed\x92T\xea\x94T\x04\xbb\x06\xd5ڠڷp\x84\x11\xd5\xcd\xe6,:N9\x13?\xb8\xe8K$\xbf/]\xc4h\x15\xf7b\xf8#\xb4\x8a9\xca\xcf@\x8b\x94f\xb0\xc8\xc8\x1f\xbf\x01o~\x83\x92?6\x94\xe9s~[.=\x95\bD\x83{e\xf9e\u007f\xf0\xbcEz<\xe1\x97\\\xa6/\xcbViu!(\xb7\xbf_\x891.i\x17ԽE\xd9ڄ\x1fA\x94\xfbP{m\xc8\xee,\xdbCkT\xed\xe3\xb4=\xd4\xe1\x86\xec\xa5!{\xd5\x1ej\xaf\x9c\xacAĐ}\x9ap\f\xbe\a\xd1K\xf6P\x8dD\xd4r9&#\xf2uJc\xdaޥ\x02\xfb:\x1fA\xe5\x8e~\xb4\xab\x1e\xe0\x1ax:#h\xf9RXq\x97B\xf3\xea7\f\x19\x97b|\xa91tC\xdd\n\x19\x9bGǻ^C\xa7)\x8cP\u007f\x8a\xbeh\xdf\xc6\xcc\n\xf4\x0f\xf6 \xcbm\xdc\"\xec[\xde\xfe,\xf6ۏ\x1aG\x80\xce6\xebc\xe8\xdcV\xa5\xe0\xb8\xc1=\x90\xef\xae\xd9ry\xb6\x8c~\x9b>r\xa9\xb2\x1dZ\x10\x9c\x9cc\xa7\xee\xbfza\xe1\xea\x85bm\x0f\x93/\xdeSS\xf3\xfb\xf3\xdf\xcbV\xa5\x85\x90]N\xb5Sg\xcb\xf4\x13\xfa\xb7\xbf\x9cʅlw,\xaf\xdb\v\xe4\xb3\xeb\xf6Ԇ\b\x84:T\xdbcY!k[\xd1\x0eA\xd6\xfe:&}^\"R\xe2\x1e\r\x9d\xf55#W\x99\xfe\xeeKp\xf2\x06\xe9\xf9x\x93\xf56#v\xcd\xfb;%I\x1e\x8b\xb3\x17\xe4{t\xc1\xc4\xc4މ\xb7\\9Q\xc66B\xaa\x80C1\x14\x8b\xed\x88\xed\x89\xc5$\t`\xe8\xb8\x1a\xbf\xe9|/5\xf29\u0093o\x81Ǖo\x81\x84\x8a\x96N\xa9،m\x8f\xc5!ݎ\x98$\x8aJԈi֙\xf3\xbfVi\x16\x9e\f\x05\x1d\xb7\x8cO\xff\xa0\b\xe1l\xb35\xeb\xb1\xe0)'\xd5\xe1SCS郍\xce\xe9\x1d\x87\x9acG\x17&.\x8c%\x86\xaas\u007f+\x8d4\xb3\x8d\x83\x87vL_\x18\x96\x84\x85\xa3\x13#\xd6\\5J\xf7\u009f\x01l\xf1Mj\xb3\xa6\xd4\xe5x\xeeB\x8d\x01%\x19\x98\xac\xb8^a\xdaJ\x18}!^\x1d\xeb<5V\x8d\xbf\x8e\xda\xdaz\x9a\x1a\xdc\xfa\xe2#5\xb9-O\x14\x0f\x1c(~\xf5\x03\xf4\x94\xa1\xce\a^}\x89\xa2\xad\xaej\n[\x9b\xe8O\xa1\r\x15J\x8b 0;])8\xde3\vת\x04\x8cϸ\xb0\xd9A\x1a_\x01ѧ+\xa3\xf8\xa7T5\xb1?qG\x12S\x8bqX\xce\xe7e\\\x9d\x83\x00N\xde\x01/T\xb5\xf3\x81\x1e\xfeb\xaf}JU\x92\xc9ۓ\x91(M\x83\xf2yD\xbf\x8bF 2\xa9\xa8\xfbi\xb2\xce\xff\xf2\xb0\x1d\xa1\xcb\x1b%\xba\xd8\xd0\xf9>\x0e\xca\b\xf3\x11'^\xb7\xc9Fҧ\xa9\xe8\xd2=\x04\x1a\x80ڦ֡\x16d\x16\xf3\xeeÔ\x9eÂ\x0f\xbf\x91\x18\x03\xc1\x94R\x83Njf\xe7\xfbn\x1e\x1d\xf1\xcdp\x91\x98\x03\x00C.c\xb6\x97\x00.\xfa\x187\x03\xb0\x1e\x932u\xfdiۤ\xe4\x052U\xa9\xf0\xe5\xac7\x81\xe94g\xf1\x85\xf1q4\xf1\xed\xc2\xd1|>\xff\xa5x;\x1eC\xf1\xf7\x19D\x14\xf2\xb4\xaa*\xf8K\xe1\xb0Y\r\xffU\xaa\xbe\x98|\x84\xc6>2\xf9\x96\xe8\xe4['\xbfW(\x14\xae\xc9\xffW\x97\x88t\xc6\x1f\xd0\xf5\xb8\xa1?\x00镯Xc\xe1p\xf8\x19\x98Q\xa93\x86\x11\u05cd3\x93\xde8\x12\xfa\x04\xd1ϭR\xdaG\x90@\x91\aT\xcf\x1b){\x96\x19\x13â\x06\xfa\x9c\xd9%<\x18\x8e\xf9\xc1&\xb1\xea\xb7*\n\xa2\xf8\x13\xc3x\xd6@\x80'u~\xe6\x93%\xcc\xce{K$\x012DHa\x9c0\x8c_A\xceZ\xa0\xba\xf9k\xe8^\x8fg\xc3\rZɒ^$\x1cк:\x97\xfa\x12ڡb\xaaxX\xa5\x87\xda&^.\xa0\xaf\x84\xa9\xe6\x06\xc1D.\xe8\xc1\xaa\xf1\x81\xe7\xcb=\xe1\xe99\xdb\xf7\x87\x9e{q]$t\x9a\xa6\xbd7ྔ\xb3Z^\xff\xa5w֎\xc1)r!w\x15w\a\xf7\x10ǵ<{N\x8c\xfe\x15\xaf\xcfP\tVF\x18\xf3\xc5Hg\x86\x10\x91\xf9xQձ\x81pœd+\x16\xa8dIO̭\x88\v\x9e\xccn\xb1@x\x12\xe5\x163=\xe9\x98\x02\x93R-Λf\"\x11\xb3TY\x96t\xac\x98\x96\xa8HH\x80\x80\xec*\xcaV]B\x1f\u007f\xf1nZU\x14KQ\x90\xc2K\t\xe2\xd9\v\xb8\x11\xe4'\xaa\xb0{c3\xa5\xdba-dꨢ(ӢmDa?W5U\x16\x14B\x81T\xb0,\xc37:\xb1\x90\xf3\x91M\xbb3\xa8,{\x16\x92\xb6\x15\x9e\x87J\x1e\x01\xef\xaa.F\x92\x86!*\xa2\"c\xac\xd8\xd86\xb5\x88N\xb2\xb6\x94\x9e>-\xb3\u007fqh\x13*\x1d9\xfbf\x99\xe4\x1a5\x0eäs\x98M$\x80\x88\x86\xf9:9\xfd(\x8e8\x85\xa6\xbbR;nV\xa0\xa6\x81\xe0k\xe5r\x16\xfcVӍF\x1a~h\x9f\xe7\xb9\x0e\x0e\xd0\xf7\xab)\xed\xb0\xaa\xa2\x9b\xe1\xb9\xfd\x8a\xfa\xe5h\x99\xa6\xb5\xace\x9a$\x9d\xfe\x82\xf7\xfc\x0f-ER\xab\x87\xe1\t\xa9\xd5\xc7/\xaf_\xe1\xf1\x1d\x18\xad\x85\x9c\xf5;\x02\x92\x9fT\x98\xa0\xc8ܞ\xe6\xd4\x103\xe10\x84\xfc\xd3\xde\u007f\xb6\x1a\x95b\x8c\xa7\x03R\x83c{\x05~\x16풶\x93\x99p\xcccfg\x82\xedt\x14mɬ\x1c\x9bX\xa6#A\x8c-\x90\x1fK\x99qj\x90Թ\xf9d`s\xfc\xbcq\xec$\xc3\xc7`r\xadPZ\xabCmʖIOn\x18\xb1\xfal\xb9\u0600\x05Q\xf4\x89VR\x03\x16\x10\f\x9e\x13穩\x83\x17ֈk\xb5K\xe9t\xa9\xfdoԸ\x19Z\x06o\xbb\x84V\x98\xd5\x04;\x84\xda!\xbbs&]Z-\xa5\x9f#@\xc8\xd2\tH~\xb6\x9d.Q;O\xdc\x15h+\x1cq:\xe3\xb8\xfb\xf2\xdfÈ\x0fi\xea=\xb2%ߣj\x88K\x82\x17|I\xc6\x17\xc3\xdc2|\xa3R]\xa8|\x0f\xbb@\xf9N\xa7\xf7\xd1r\xff7d\xae\xac\xa1+i9\x91\x1e\x82\xb2\xe6\xa7B\xbb\x83\x1f{\xfc7\xf8\xe6\xf7\xd97LчA$\xfe'\xbb\x82u\f\xe2al\rl\xec\xcdH1\x92\x87_\xff\xbc\x87Y?8\xe7\x11G\x8cK\xac\xd3\xf5\x1fZ\u007f\x1e\xd5\xd1)O\x97,`\x0e\xac\xe4\v\xed\xc2\xcc\x1e\xfd߀\xf4\xbc\x01\x90\x9e7\xe8\x06\n\x03\xc6\xe4\x87W\xb3\xf0\x80\xd8쫉Y\x9a7P\x99W\xc4\xf2䈾i_\x8e\xc1\\\xba\x1f\xd2\xf4\xdcY4K\xeb@9i\xdd\xfev\x03\x1f\x9c\xed~\xc0weE\x86\xe1\x8c\xe4\x02\x1a\x83d\x0f\x02\xb4#+\xd6g\xe6\xc5V\x13\x17\xa6\xf8\xa2\xc79\xf4\x80\x0e,\xe3\x82ɣ\u007f\x170\xeb ,\xe4\xdfȻf<\xa6\xa9Q+jX\xc2\xeb\xffJq\xcd4\xbakVeJ\x9d\xea\x967\xa3\xb4\xe9\"\xd8<\xc5o\x92\x1e\xfc\xa6(\xf0\xc9#|T\r\xc9\x126TC8|\x83\xaeƮ\xacb\xc3&\xafm\x03\x97_\x15Su\x0f\xaez\x12\xfd\x1c\xd6+\xcc\xfcV@\x8a|\x1eճ\x84Z\xd9;Ι\x14\x87o\x16\xe3;OB\xce5\xa3xm\xf3\xf8it\xdf\xf1k.\xd0Ԃ\xa2\xce,\x10\xe3b\xe3\x17&\xaf\x930>\x8b\xa5'\r\xe3\x92\xca8\xba\xef[\xf7\xb5Ux\xafL\x1c\xbf\xffx%\x8f\xa5\x1a\x93\xed\xe2<<\xae\x15\xb4\xf5B\xact\xe2~-\x02B\xfe\xa8l\x90\x9b\xa2X\x02\x91\xb9\xbb\x1b\xceF\x17c\xb9z\x99\xac\xaa\xb7\xabiu\x8a=\xe4˪\x12\xd5'\xc0of\xf2\\ҭ$\xfcs\xf8\xbd\x19c\xa2q \x91OҐ\x18>\xa1\x0f\xf8D&\xafl\xe5n/\x05|\x82\x19\x9e\xbf\x86\xf6R\xdb\xd3dNcA\xa6\x93\x80\b\xe3\x12{oL<\x1cUM\x13\x9f\xc1\xa6a\nSo\xc0\x86\x8cr\b@\xfb\xd3\x10\x1cC\xb9\x84\xd1yڈ\x1a\x8f+\x06~N\xd6$[\u007f[\x97O\xbbBmM6\xb8}\xdc\xe1\x8d:\xec\xadX\x91\x91,6\x1epu\x9f\x82Ql\fj\xb6\xe7\a\xc2T\x10\x9e\xeeV\x8b57\xfc\xe7U\xe2\xa3q\xd5?\x0f\xbb\xb5\xb5\xdab\xf7=Z\xeaz\x97\xfdg\xc8^\xaam\v\xbb\xed^\xb8톷\xd5j\xb5\xa5^L\xcf\xe1\x98\xec\x01\x93-\x9b\xa4\xf2qTKC&V{jS\x98Z\x83+\xb0\x88r\x8b\xaa\x1cQ~b\x16I\x04\xfe`Tl\"t\x1f\xa7\xf3\xae\xc1\xb7\x91\xa1\xa4\x1a\xad\xa4h\xc0\fW\x14\xdd\fG\xd5\xe1\xaa#\x18b\xb25\x9bV\f\x14{\xdfՀ\xc4]\xfd\xbe\xcew\xc3\x11˚\xce'\xc7\x14\xc9H\xba\x92\xa8c\xf5\xf7\x00L˄\x8a\xe3\x18`(C74E\xaa\x140\x1e\x1f13XS\xae\xbfK\x8b\x92ZG\xb5\xbb\xee4ͷ姇\x12\xa1\x84j\x18\xba\x8a\x03\xb6\x80b\xdc\x10\xb3\x05dǺ\n\xa40\xf7X\xf7\x17d\xdf֑[\xefZ:\xf3\x98\xe9d\xec\xe8\xf1\xb6BM\xfe^\x16\xbd0z\x99f\x9er\xf3c\x94r\xb8z\xc23:zʼ\x8d\xe0\x88\v\x18)\xcf2\x9bӹ\x1cA$\xdfH\x89\x87\xff\xf2$\xc5\x14k\xd4pp\x19P\xc5\x05\xec\xf3.\xbfNu\xa3C\xd4^3\xe7\x12\x9a\x17\xd5D&+E\x98e\x94\x01\xd8Nj\xb1\xe2\xec\x16\"\xf6\xd1\x15\xc5b\xa2Y˫RD\x8b\xccGԨ\xb4|\xec\xe0\x85\xc7'J\xe1\xd5pi\xe2\fS\x8b&\x1a\xd2r\xb9\xac))\xd3L)(w\xc1\xab\x8f\x1fX\x98\x19\xaf!T\x1b\x9f\xb9\x9f\xa8UO1\rk.\x88;\x13\x98\xe4p\xcf\"\xb9\xeckygQp\al\xc5L\xe4բ\\i\xc08\xcf@\xddH$$\xa2*\x86\xd4\xfa%\xd95=\x95C\xca=\xa8x\xb6̟\xa7\xdd\xf2\xe7\xcd\vSv\xe7\xb7\xedT\xbb\x16q\xf3S\xf9x\xd4\xd03\xdb\x00\x90@\x99\x11sX\x81\xa7b\xd7j6\xf5\xe4B#\x19f\xf2\xfc\x05\xda\xf3\x1f\xe3/iLک\x94=\xb9\xe5\xa0r\x994d\x13\x99\x04{Hz\x05/h\x00\xc3NI\x13C\x13&\x0f`\xbb\xa5\xf0B:\x97Lf3\"\xafX\x18a>464!\xf5x\xa3\x1cz\x9c[ \x12\xf1\x88\"\x1e؛\xbd\x94u\xd7d\x1aP\x84C\xc9\x14#vzJ%\xe6\x10V\xe3/f\xcb+\x1fP\xa3&\xc0\xe0aEE|8\xe2,\xce\xc1\x1ePږw\"a\x9e\xc0b\xb7\x02\nb\xc3[CCB8\xb1gb\xdb\xe5z\x8c\xac\xf5\x18\x9eX(O\xecI\x84\x05\xc2c\xfb\xb9G_#4\x8dJ\x9f\x95\x16\x06\xb3\x16\xed\"3\xbad穀\x1c\xbc!\x12@k\xc4J\x17:\xd58x\xb0\x91\x9b\xabB\xe3R\xe5r\xbc\xc3\xe5\r\xe8s\x81_\f\x8bRJi\xcfU\x9f\xd5L\x98u\xd59\x94[)ϖ;+\xb9\x04F\xee\x90J٨\xb8\xbbf\xd2Ԯ$\xb3\xb7\xffZ\x00\xf0\x89l\xc3v&\xb6\xda\x13\x9c'\xbd_\x9f\x11\x8a=\x11{8\x8b\xbbB\xf7.\x89\xafS>|\xef}O \xbfQ\xa9w\x15\x8b\xe97A\xa5c\xb4\xd6i\x13[\xf7G\xa8x\xce\x11b\xf0\x9e\x89\xcc\u007f\xde\x17\xa2o\xcf\x06\xe5\xf1\xb5\x94\xec\xc8)Yf\x8f\t\xc71\x10lL\x8b\x94\xf6ej\x9d\x87P\x8e\xa5k\xfbR\xfc\x87\x0e\x19˞\xf4\x05u~\xd6\xfd\x98>\xba8\x8d\x8f7\x1c\x84~8\xf2\xf21\x87\xd6y\xb4\xa9\xe3/\x13\xabXS\xe6\x94\x1a\xfc\xbcLJ_:\x8e\xf1\xc3\xc0g\xca\xdcs=\x8c\xa3\x87\x1f\x86\xa8FO\x89X\x8fr#=\x8d\x88\xfa9W\x97D8|]6_\x97\xaf\x19\x10\xd7j6\x96st\t\xe6Β5hYDY\x82\xb6̢f\xbfh\xb5\x99҃\xef\xcd!o\x91vV7[\x9d\xa7\a\xd3S/\x17\xa4IO3\xb8\x8d'\xc6\xd2\x1c\xa8`\xbdQ\xc4\xc5\n<\xea\x8dJ\x03\x10$\xf8ߪ\xbb\x10۠\xefݺ\xcb疗Wj\x89\xd7Uc\xb1ۭڞ\x82\xae\xd4\xda횢\x17\xf6Ԭ\xdbc\xb1\xea\xeb\x12\xb5\xb3\xb1x̲\xdeo\x18\x9f\\\xd2\xf7Y\x822\xa6\b\xd6>}铆\xf1~+\xa0\xfbH8\x91S\x14\xb6\xf6-\u007f\xc6\xfah\x91\x10\xe9\xd2\x1e\x8b\xb5\x9a2c>3S\xd0\x01?:\x99\x9fN\xc5.\xf3)\xb5D\xfe\xae\r\xadl\xa9_\xa2\xdb\xe9\x15lS]\x9e\xceߓ\xa8h#Lz\xf04\x95\xb8\xfb\xf6=X}4)\xeeS1\xe5\x87\x05\x9d>9\xaez\xbfe;R/L\x87\xaf\xd8\x1d\xcd\xee\x18vGs\xb6\xec\xeb\xc60d\xe8\xe4\xa6v\x90\xd0\xc9^\x8a\xcc^\x15/-u+\xd1\xf5\xf6\xd5e\x13\xdc\xf6|\xf6\a\xfa\xa8\xaa\xed\x01+\x04}\xc8\xda/\xfb\x8d\x11\xf0\\\x82\x1bF\xbf\x8f\xae\x05\xb8i̷\xc2@\x01\xf6,\xea\x9aa\xc0}\x90<\x83\xf6+gO18}yY\x12\x04\x89([\x9c\xc2_Ƹ\x1b˴3\xbe}\x8a\x81\xe6\x90\xca\b\x89.}\x9f\xa6i\xbdh\x06\xf3{\xf5x\x18\xea\xe1P\xecf\xe3%\x00q\xa7Շv0\x95\x90\x99\xb8{v\xa0\xc8\r\xd5\x10UU\x15\xfe`\xa0\xc4\xcd\xea\x01\x00\xab\xe0\x9dsϣ݀?\xb2\xbal\xbc\x99\xa09S\t*\x84`\x93Z\xaa-϶\xfe\xf0EJ\xa1U\x81\xf8\xb5\xf3\xd6Y\x14\x04\x91\xc4\x0e\xd4et\x93\x1b\x17H\x05\xdcM\xf8\xd1\xf8}/\xa1\xbd/V\x0f\x16\a{\b\x8c\r\xf7\xcft\x8e\x9cc\x86\xe46\x99\f\x9b\r\xbd\x97׳t\x9c7\x1f\xe5\x8dù\xc9\xd0ѻ#\x8e@\xbfT{\xbaF\x03#\xb4\xc9P\xa0܆\xbc=\xdb\x01\x90W\x9b\xe5\xb5i\x0foҙ\xcb\x1b\xb3\xea\xc9\xdf\rS\xeb\x8c\xfe-\x02\x04\xf7`똚\xcb\xf4OE\x14\xc9Gx\xba\xeb\xafY\xf4<\xf68R\x16\xb5ڌ\x9e\xee\xb4\xe9\xce\x02\xa1\x1a\x05\xa1\xcd\x1a;\xc1\xe0\x04\xc8u\xcevmE0[Oy\xca\x19\x1c\xa4*{\xact\x1bJb\xfb\x99@ʄ\x03\xb5\x9c\xeap\xa9\xb2\x8a\xff\xcd\t\xed4\xa3\xe8\xf1\x0eǨ\x13m\x80zTl\x01|\x94\xb2\xb0\xaa\xc7\"aع\xceP\xbbW\x9d\x1f2\nO\x90\xc6\x1bތj\xd4\xe5\x00\x06\xf6\xa4OP\x1e\x1fmO\u05fcU'\xe7\xf1\xf2X~\xed\x81\xfc\xba\xb7/t\xf3\xa3}E\xf5\x89\xae?_v\x01Z{\x86\xdc]\xb1\xc1^h7L\xb6\xf6\xf3\xbddt\xaf\x15'st\x81\xddW\x94*o\x8cY\xa3\xe1\x8c\xf3\xdc\xc2Q*_UN\xb57\xc6\f\xd6\tm(\xb6G\x14\xafo\xacS\xe0%\xa9S\xaf\xf0%OTw \x86l\xf9\xe7\xad\x0f\x8d\xe9µ\x01\xfa\xf4\xb0\xcf\xf7\xed\xea\xad{\\._O(\xe7\x87|;(ޓ\xf3\x9e\xa8F\x81\xa8*\x85\xc1\xfe\x95\xba\x9d5\x1a\x15c\x14\xe0\x05\x16\xf7\xef,\xf4I\x16Z\xa6)\xfe\x95}Jb\x1e\b\x90\x80\xd1\x02\xb3:\x8c\x022U]n\x9cg'\x84ɀ1|\x88\xc9@\xb1\xf6\x8c\x06\xac\x8b\fHߺ\xcdY\x8f\xcc1\x85L\x00\xca\xe33\xf7\xb1\xbc\x0e\xd3\xd9\xf5G\xd4\xfd\x84(\xab\x9aX\xbc\xa5(j\xaa,N\xbe\xc7+\xc8\r\x88\xde~@Ա\xc4Kcc\xe0`]ln\xa8C\xe9\x12Hc̶\x03&\xf5\x89\xf6JW6;ݽ\t\xe0\n\xeez\xc0\xd9\xdeĽ\x93{\x80\xfb\xd8F{|\xc1;\xd0Z/\xd3/\xfd\n\xe9K\xe7H\xc3[=\xe9\xf0L\xe7j\x86\x95-\x9f\xe7\xd19\xf3\x12^\x02\xc6\xf7,\xe1\xe4{\xd1}&\x057\u07b2\x16\xfc;\xf4\x92\xe3a\x1e\xfaw\f`\x80\xfcg\t\x86hg\x91\x1b\x9bB\x95\xf3\xde7\xc0\xbbqr\xdb@}\x067d\x1ck\x96\x88+W\x1a\xe5J\xac\xccbZ\xb1\xa6\x1b\x8b\xbb\x8d8xZ\x10\xd3h\xfeT\x9d\t\xc3\xdf\xdfY\xf4v\x82W'{\xb7\x13\x98\x890BR\xfe\x82\x13\xa9\xda?\x16\xaaEtq\xa5X,\x1b\xf3\xe5\xa2ݚ\xcaT\xf3\xfa\xaer\xb1Tʍ\xa5\x11\xcfG\x84\xbd\xf0\xfb\xbaw\x8bA!\xdew\x8b\x81\xe9\x9a!\xdd(\xfeâ\x10\xde\x1fz\xf7\x05\x11yQV\xf7\xf2\xce^]\xba\x00\xc5\xf6G\xc4\xfd\x02f\xc1E1\xb1ߑ/\x10\xfd\xbbnV\xa8=\xb2\x91\xa0\xceq\x00ґ\xfau\x05b\x88g\x16u\xf0o\xff6\x037\x1e\xc7\xe8\r\x00\x16<\xedS\x147\xb1V\xf65\xef\xea$r\x17\x92\xb0\xfe\x8b\xf5\xaf\xf2\xef@\u007f\xe2\xd9\xe5\xe4\xa4\n\xb1\x8b\x00EaA\xaeȾ\xda\v\x11\xa8\x8fc\x89\x85+^\x1cF\xeeNC<%\x18\xc4\x15߬\xa8\xa75\xed\xb4\xaa\x8c\xab\xea\xab^\x05\xe8K\xa6\xeb\x1d\xa7\xaf\xdaQ\xc1@\xcf\x18\x02<:c\xc6\x1d\xaa\xf2NU}\xa7\xa2N\xa9\xcaҒ\xa2Nw}S\xf4\x8d\a\xc7\xfe\x10\xd6\xe3\xefr)B\xfd\xb4\xe9$\xa0\x968\bY\xb9Y\xaex2x\xd8\x17\xc3\x03\x98:\xb6ʼn\xd3\x1b\x82*\xa7\xce\x18\x99\xfa%\xf3\xf9ZQ\x8f\x89\x99\xad\x872\xc6\x19\xe5Nj<\xe8\xd7\x15]W~\x9d\xd8\f\"\x06\x83^)\xc6F\xf7OO\x1cN*\xa6q\xd5+\xb4C\xe1\x90\xf6\x10\x8e\x0fy愬\xa38\xa1\xeb\t|\xd4bF\x84\x88\x1c\xe3Wy\x15\xfd\x19\x95SiB/\x99\xf4\xb6\t\x98\x98\xcd\x16\xfajf\xda\xf8\xba\x92˺g\x92i\xcdE\u007flL\xc31\x151\xe5T\xf4LiR\xf7\xf5\xdd\xd6x\x8c\xbeAy\"\x036s\x1a\x11\\g\x04\xe8A\xdb9\xb1H\vp\xec\x16\x1b\x89\x18\xbb\x17\xb1J\x0f\xe6\an\u007f\xd6\xd7\x12\xf3\xc2\u007f\xbd\x9dZN\xdb\xcedΙXR\xfa\x01\b!\xa5\x17\xd3\xf9\xc9\x03\xcb۩\xa1\xb5\xed?\xed\xea\x93QYt\"\x89\xbe\x9f\xbb\x84\xea\xd3bb:\x8d\xea\xc3e\x91o\x97\x13\xb5\x1aS\xc83\x11J\x17\x17\xb1\xd4ٚ\xe2i\x94o\xe1̗\x13\x8a\xfa\x86\xd6V\xb2\t\x14\vM\xe623\x96&\xb9\x99\xe9\x85i3e%\x87\xe19\x9cLlM$\xb2XG\x91T\x18\u009d\xefQ\xacܥ\xee\u007f0\f\xbd\x96\x1aS\xc6R\x96-\xf3\x92\")\xeah\x92\xb0\xeb\xa3\xc3q\xe9I<\x96&\xfe\xf4\x18>\xad˼\xa0\xab\xa1\x84\x14\xcfE!n\x9a\x92;;\xef\xa2\x0f\xd4\xf2\x88\x9f\x02\x95-D\xb0Ǹ\x9e\x15\xe4xW\xb8\x90\x89Y1\x91+\xd73\a\x1a0\r:K%\xb2l\x99\x18@\xa1\xebѥ\xbc\xf7\x9a\xaaN\x12\x89\xc2Ij\xf4n26\xb6#6\xa9(Vu\xb3过5ع\x80-T\x04XӘ\x02\x89\xae|\v$Ri\xa2\x1dc\xe4\xdb\x1fV7\x8b\xee|\x1c\x93o\xe8b\x87<\x1c\x8a\xff\u0098\xddE\xef[\xdbB\xb5\x1e\x88\\L\x00\f\x9c'\x8au\r\xcfX\x0fQ\x9e\x99\x02\x88\xc1?\xda\xff|\xe1\x96T\xa9\x94\x02\xe4A3Cö\x9d\x8eO$\xed!',\xdbʸ\"Ȼ\xf6o\xabV\xb7U\xd1\xdaU\xedܖ\xb4\x13\xd3e2m\xb4x!m\xe8\xe1X8\x9e\t\xd9\x11H\x96\x87\xe4\xaf\xea\xfc\xe6\xe8\xd6\xd1ѭ]8\x9f#p>\x91A\xe5Z\xf5~\xaeր\u0085_\x17\xc7q\x14\xc3PN*\x06}>\x04Ns\xc7\xd8؎\xb1\xc4iC\xa9\x91\xa8\xefxOp\xd0\xc3c\xe4\x1d\xbb\xefl\x8d;C\xe1P\xb7\xa7\xd9\xe5ݯ\x19\x13\xbcEu\x86^%v\xc2\xd4\xc8\xfelj\v\x9a\xb9\x85\xb1\xf0/\xd0\xc2a\x82@\x85`e\xfb\xfc\\\x82\x87\xbdr\x13X\x9b\xd2%=\xd9$xU\xf1\xdfc\xb7פi\xcf\xd2\v\xfb\xa2U鵜 \x86u&mCEO,@\x94xK\xd4jX\xa5\xa2)\xf9K.\xa1\xa6j\xf7(\xd2Ғ\xa4\xec\xd9$.h\xa2|YŢ\x90#r-\xcbT\xb7\xec\xe4I\xa6qv\xfb\xedx0\x1c\xe4c\xac\xb0\xb6\xe5_\xa4m\xc2\xff\xefm۬eD:\xe7E\x9a\xc6\xceK&o\x9f\"\xe7%\x93\b\xcbw\x85aȁY\x82V\xb4\xd0\xffy\xefi\xc3\xe8|\xd81\x97M\x13qf\xd5\\5;\u007fr\xf7\xd2m{?\xfb^b\xd5l\x19b \x1ab\xab[\u07bc\xb4\xc7\xd7K\xa6x\xf9A\xb2O{\xa2ot%\xc1\xf9R0y\xba\xe1yk\x8bp,`\xe9!bl\xaf\xe6\xc6!\xb6\xe1\xf1\xe6d\xf2j\x9e߅jX\xae\xcf4y\x1cM\x1bC)gK$\x12E\xa2 h\xf9\xdc\xc8p\xd2\x1c)\xa6#C\x11\xc7\x01\x98Ύ\xb6O\xe6*\x99Tq$V\x1c\x1b+\xe8z\xc4\x1eUg>f\x0fE\xd2őd\xb1\x182DA\xe4e+\x14\xa9ŒCF*\x1a\x1dvU\xc7A\xa2(\xa2\x8b5}F\x9dqSY(\xa1\x16\x8dD\x05\xd1\xd0Eq\xdfk\x86\xbb\xf8\xf72\xbd\x1fr\a\x95\v'\xc3G\x87\xd7\xe3G\xe3Mn6`L.\xdf\x18\x8c\x1b\xa7\xd6`\xea\xdf'\xe2-sm\xac^\xb1{\x8e\xca\xcf\x11gn\xf7\x150\xf6X]ز\xf5\x10̄\xb9\xea*\xa1\x9f\xafVO\xc0x-\\\xaf\x16\xe8K\xea\x14\xd4W壟\x93c\xf5KD\xf9\xe2\xb9\x1a\x11\xae\xe2\xd7\u007f\xbe\xfee\xfe\x9dp.\x96\xe0\xf4\xe1$\xb2\x13W<\xe0û\xed\x8c\x00\x80n3P\xa1\xf0\xc6UJ*L\x01\u0096\v\r\xe2\xef2TG3^\xf8#\xfa\xf8\xa3\xb9jj\"%\xa5tZ\v\xe7\xa2`\xd5g\xe5\xe1\xe946g\xa2\x96\xa6\x85\x92\x86\x8a\xbeA\x1f\uf7ac\xce\xc17\xab\xa6\xe5$R\x8cB>V^\xe9o\n\x1eMM\f\xc1\x89R\x91\xf9B\x90\xce\x11\xa2R[\xf9\x99\x00\x9d\xa3\x14\xd0'\xf7l\xf9u\xef\r\x8d\xc7`c3<\x8bIk\xc4\xe0^Ʃy,\x99\x1aDqF\xe7\x97\x14\xae\x17\x8d\t\xc3\x18q2\x04}!?j\xa6\x98\xf1\xe3i\xb9s\\\xbb+\x8fB\x84\xfe\x8a\xb1l\xf0L\x00\x00x\x8c7%f@\xad\xd9*S\xcd\xc3\xfal\xab{\xe1\xe3\xe7\xc8}}\x0fk\xd5p\xda\xd6\xe9\xbdL\xa3\xc3bVN\xc8Q\x1cR%\xc1\x8e*bv\x87\x9e\xcff\n\xca6\xed\x1ev<\u007f\n)\xd2\x1d\xb0Eex+-F\x13\xc3\x16\x95|\xfe\x8f|CI\U000c2b05lCU\xb0\xad^\x14No\x99L[|\xd4;\x8bپ\x84|\xddSf\xdd-F(\xfdr\x91\x19\xd2\xf1\f\xf5\xb1+\xef\x98\x18\x06\xb1\xe3\xe1ƻ\xb5\xfd9\u07bb\xc3ү\x93\xe0t\x8a\xeb)\xb5\xae\"\xc5=\x81uY\xd8\"\x9a\x11\xe5D\xe5\xd8b=\xa7\x9dbX\xe0g\xf23\x8b\xc7*'BIi\x8b`j'\\H[\xd7\xd2j\\ֱ,]\x8f\r\xbcs\x0f\xe6?\xc6p\xc1\xa0.V\xa6\xa7\xe7V\xeaj}\x05\xd4\xdc<\xf5\xb6\u0383\x84\xbcg)\xca\r7\x10\x81R\x1b\x9f\xf24\xdb.\u007f'\v\xdfx#{\xffN\xec\f\xe6߳\xc7\xebkx\x05T\xda\x0e\x8f|\xfc\xb5\x8bɴ(\xf1\xc8\x10\xf4X\xa4:o\xbd[\xc6H\xe6\xb5\ax\xfe\x1d\xccw\x9b\x92\x18.\xc7\xe2\xaeQ\x98\xd0\x05\xe5\xf2\xfdX\xca\x18N\x1cKY\xa3\xbd$!\x11\v\x13:/V\x8b\xaa<\xa4ٮ*gT;\x17\x0f\xc9|\xe0n\xb9\xa6gw\x9e\x81\xb8\x14\xab\xf4\xccS\x13\x99ϸWsS\xf44{<-\xd9:\x82÷\xf3}\x80h3\x86\x91\xb9tgkZ\xc5CXͦՈ\xa9c\xf1\x90a\x1cz\x13\x96\x96\x89\x96\x18\x83\x85\x17Z\x17\x14\xb16\xa2ȶ\xa8h!S!2Ho\xadKطۃ\xc6\x00\x9e\xdcM\xb5\x95\x88\x19\xa1\xae5\x8d\x02\x15̃\x95\xc7t_\b-\xa4R\x0e\xca_\xcdP\xe5p\xa8\xa4\xa7>\xe3~{b\xd22\xb6\x8d0防\xcc\xcb\x05M\v\xdb\v\xa1H\xecxaJ\x14wo\xe17\xbe2\xd4\xef\x85\x0eM\xe6+\xdeM\xefYɔ\x00\xf3\xd1\"\xa1\xb8\x9c\xd5f\v[.\x18\x8cW-!Ї\x04\n.\x12[l\xb4\x83\xa8)8O\xd8\xd3g\xea\xf9\x8aVe\x0f>\x80\tN\xb6\xe8\xd9\x03\xaa\xb4\xdd0\x1a\xd2E[? \xcb\xca+%\xe1w\xe1\xa894\\\x91>f\x18\xf7;\xa3\x87a\x16\xa0\xaa\x81\x96\xc3\x11诹\xfd\xfco\xcaaჂԐp.\r1i,MR\x1a<\xb1\x9d}\x16\xdd\x02u\xd9\xe6\xe9i{\x95!\xa0\xd5P\xd7Lz\xd7\xd0xÿX\xc0\xb3i\xcb\u05c9Ld\x1d]\x83\xb1\xb0\xb4\xcd0\x8e87\x1b\xc6\xcdp6\x90\x87s\xc40\xb6-\t\x18\xefV\x84V\x9a7\xc2-AA\xab\x86\xfc\xa0\x913Jip\xa8\x94I\xceH\x97\xc0yP6𭋥\xe2\xad]\x1a\xc6YDd\x92F\t\xdc\xd4*\xf6\xaa#\xf7է\x18D\xb0`\xfb\xa27*\x12<\xfd߮\xfe\xb8a|\x1cC71\xcc\t\xa0<\xe3\x13\xed\xcb.\xfb\xf0\xc5#\xd5jq\x85\x88\xb4\x01\xec\a/\xabP\xf8\xa4\x84\xffҸt\xe5\xb2\x1f<8Z,T9_\xbf\xbaM\xd7\xe9%\xdc+\xb8\xab\xb8c\xdc\t2Z\xfee\t\x98\rT\xd1\u007fz\xbd\xd2\xdf;\xa8\xde\n>\xfdޕZEr\x13\xe6_\xb1\xaf\xbc\xee>\xb4\xf1֙xk\x1f-邏15\xcb\xd4ښiifƁҼ\x92^\x93q\xa0\xfd\xa7\x98~\x96v\xca\xc9D\"\x01\xfe0f2m]*\v\x93c\x96=yQ\xcf\xc8\xed\xaco|\x90\t\u007f\x92m\xc2\x13\xd4bL\x12t\xb9\xa6\x1d\xcd\va\xedXM\x8cK\xd3\xc74K\xcc\x1f%QbX?6-\xf9Q\xd7\x13j\xdaA\x94\xa3\x8a\xc3\t\xe9<)Y\x94\xa5\x1d\xfb:\xa5\xb3\x1dd8d\x1a`\xa5g\xa1o\x12p\x98QZ93؇\xa9\x0e\x16T\v\xa6?J\xef{\xfd\xbe\aoJ\xb8\x8a\x80\xa7[\xf7\xff\x9a\xa2H\x89\xf9\v\xdb\xfb^\xb7\xff\xa6\aEޒRG\x9bG\xdf\x18\xe5\xc3rv\xcc\xed\xb3\xb7Dlv\x968\xae\u07bd=\"h\xb1sаCο\xd0o\x95`l'\f\x14\xb8\x18\x86H\xa0\x86l\xfb\xc7\x14\x92\x82d\f\x15\nٞ\xbd\x1f\xb2&vQ,\x98\x8d'Q\x11%=-\x17=`\xae\xd05\xe5\xe5\x9b\x05&\xdb\x15\xa1:Sx\x9a\xb2\xea\t\xfd\x97\x83\x95_\x9c\xe59'\xd42w\xaavJkV\xebF¨W\x9bZ\xcaVw\x9a\xad\x90c\x87\xe6\xa6\xe9\x9b\u007f\xa2q\xd3s!\xbb\xf3\xd7W/\x9c\xfdX(j\xe5\x86v\x90\xb8V\xeeg\x86\xf1\xb3\\\x8b$\xdb1\x94\xb3\xa2!\xd3\xde>E\xdfи\xa9\xed6\xb2\x17\xa6\xa66\xd2\x1d6P\xa1\xa8\x86\x1b\x13\xfb?\xbd\t\xe5\"w.j\x047`\x13.\x1c\x90\t\xf4\xa4\x01=j\xdf\"eq{\x94\xbeS\x94\xbbݥI\xf10\x97\x99\x8e&\xbb$\xb1\x17\x1d\x8e&\x8b\xc8LZ\xd2\xdb\xc8h\xbeQ\xbaW\x89\x88[K\xb2\xf1\xc5T\xec\x8aƁ\xe3;gD)9\xbc05\xb6K\x9e\xcf\xc8!!/\xab\xc6;,\xfd\xc7b4\x1bAh$i\rE\xf9<\xdd\xf0s:~\x93͋\x99\xd6\xf4\xb6\xe3\aZW\x12\x1b\xda\xf5ᩅ֨O#\xb9\x87\xe1\xa40\xe3bԔ\xa3w\xf5%̇F\xd7\x13\xb8\xe2\x94L\x86\xae\x87٩Gw\xc0\x1e\xfe\xa6\x1b\x96\x8c-\xb2\xaa\xb6\xa8\x03\x88\xe9=\xf0|'u\xf6_\x87\xa55,\x1d;i<\xa6C\xe6\xa3\x1aod}\xcf>è\x0f1\u007f6\xeb{>v\xf1\xa2\x88}\xd9a\x82\x9b֩=\x848\x11T\xcb\xc3\x11d\x8aDw\x97R\x1f\b\xaa\xde`.\xd4$Vo\xccd\x05\x17P\xfd\xfc\f\x9ei\x96\xa9\xb0#\u007f\xd9\xf4\xf4\xec\xbe\xce\xdfc\xf5\xa9\xea\xc2\xf8X\xab`9\x19b\xf1.\xe3X\x85\xd6\xd8\xf8B\xf5)8\v\xb3\xfb\x1aa\xc3\b+\xcf\xc5g\xe3\tMV\x8a#\xc5\xf8\xcaJ)\xddNT\x13\x16\xfc\xda\xe9\xd2\xcaJ\x1cb\x15Y;Y\xad*m\xa5\x9fNZ\xf2$/\xfb\xa8\xbdĂ\xfc\xcc<\xa0\xee-\x82(\xe7\t=;.\xc9\xd8\x14\vSB\x85\x88Y\xc5a.7\x1bAB\xf0\xdbPD\tka%\x02\x90\x01\x93B\xaf\xa2D\xfc\x00\xb2T+\f\xff!\xfe@\x9c)\xdc\xf4ӿ\xfe\xc9$\xfc\x15\xb3\x91K\x92m7\x99S#\rdȪ(\xaa\xb2\x81\x1a\x91\xf72\xa94Rg\v\xea\xfc\x1cԙ\xc8\xc2\x12\xe9\xe7\x18E\xf6)u\x89\"\xd5\x1e\x94*\x04\xedt\xd7[\xa4k\xbd\xdf\f\xb5\x05\xb7\x1d\xa1\xe7\x94\x04\xc1\x82\x13\x8a\xf4,\x12ѳRB3\x95NM1\xb5\xb96\xf97bt\x96\x8d\x11Զ\x14\xa2\xbd\xa6X\x12\u007f\x04\xa1#|\xe7/\xe0\xd8P\x14h\xc1sk\xe4\x9f\xe18\x86\u007f\xef\xf3=\xe8^\xaeHm8\xd3[j\x89\xa9~j\xd6ʷV@/\x8a\"Z\x01\xad\x129\x1c\\*:\xd5r\xe3\xfc-\xd1h\xe7\x9f]\xf7\t\x9b\xb7\xcc\x14R\x959EE)\xd3B\x91Z4\x8a\\\xd7\xd5\xee3O\xae\x9e4\xefˣ\x8a\\\x90\x0f+\xca\x0e\xd3\xd5\"\x96v;6\f|\xbbfE\xd5T,\xcc\xde\xfc\xc7ĭ\xc4\xc4\xee\xad\x13\xb4\xbf\b|\x94\x839\xb8\f\xbe0\xc0F\x97p7\x10-\x94\xe2.\x14/\xf9\xa3\x1d\xd9D\x1bHư\x15\x84yٍ\xbb2\xbb4\x93\xacwB\x84\x85\x81o±]\"\x1bY\x84̔\x96\x9cE\xd4\xfao\x9d\x11ј\x05(\xfc\x90^\xd6\x15\t\xfd5\x95*{\x16qF\x1b\x80\xba\xb6aܦ\xc6T\x05\xab\xc4द\x13;\xfa\x8a\xacG#\x96C:=\x19u\x12\xe1\u192c\xfe\xef\xb8c\x8dM8\x8a\xe4fߛp\xa2\x93ӎ*Fb\x89\xb3{\xae)\xa7\xb2\xc9d6U\xbe\xe6\xa6\xd9IIГ\x91Ԥ6d\x94w\xb7d1\x9c\x8b凥\xc9\xd9!m2\x15I\xeay\xb9\xb5\xbbl\xb4\xf2V:\x82\xbd{\xe3\x88\xcc6\xb1\x1dK\xee8mz\xaa\xefLn\x92)\xc9\xe3\x98\xdbj\b\xad\x06\xfe\xb7H\xe4i3\x92~:\x16\u007f:\x151\u007f\f\xdb*\xb1\x86\xf4\x15Y\xbeDN\x84\u007f\x9c\r\x9d\xd0\xf5\x13\xa1\xec\x8f\xc3\t\xd9Z\xe4/\xb9\x84\xef\xfc\xe3\xd2;\x16|\x9d\x93\x1f@9\x9f\x802\xf2\xd4\"\xd24\xf4\x19\xb5+◅\xbd\xf2vQY\x91&\xd5\x1c\xc6\r\x1c\xab\x90\xc2+\x02\xf8Z\x15\xecJ\xde\x13\xfd\xb3\xeb\x1c\xb3\xac\x13',\xeb\x98\xe3^\xeb\x1e\v\x85\x8e\xb9\x85\xc3o\xb8\xf1\xc6\x1b\xa3\x87\x0f\x83\x8b.\xa7\x8f\xff\xa6&o\x89k3\x8a2;\xab(3Z\xfc\x96\xa4:rsR-KRYMތ\x0e\x8c\xec{\x1f\x1a\x1dE\xe5Η\x0eV.\xfdP\xa52\xb6\xdf{\x12Y\xd3_\xae\u007f\x95\xf6M\x86\x9b\xa3\x96?\x18\xfa\x10\xf7o\xe4,\xf4\xae\x9b\x8e\xbb-ʞ\xf4\xc4N=d\x82\xc9l\x12a\rj\xbe\x9a\xc9;{&G\xe9\x06L8\x1a_\xe6\xa3j\xb5\xaeEmB\xd7\x1ei\xaa\xd1\xfa\xa8*\xe8\xb7\xc0yz\xb7:\xa2Fe\xbd\xa0\xe1h\xe6\xa6\xccXU\x8d\nI^\x97o\xd1\x05\xb5\xfa\x99pb2\xbd\xec\xe0%\xc3X\xc2β\x1d\xd5\xd2X\x83\x94_\xd1Br\xf22+OĎv\x17.KI1\xf8\x06\xe3\x03\xe1\xf0\x90&\xc7emhrr!)\x87\xb4[0\xe6\x93BLJ}\xd8m\x8cg(\x96\xaf\xeb\x14\xed\xcf[\x13\x1a\x8e\xc9\x1a'\xaew`\x91\xf1h\x05\xc6i7\xb7D\xf6\x11\xe41\xab\xa84\u007f\x17g\xcbw}\x14;\xf7o\xd7j\xcd\v̶Y\t\xe7=\xb3fx\x1b?/x7\"\xe6\xfd{(cNV؆\xd0\xcf\b'KP\x9d\xb8E\xb7\xc7u\x8e>\xac\xb8\xa3\n2\xf4\xfa\x8e\x88\x1cK\xe7\"+\x85\xadF\xa4\xf3C\xa2\x01-%\xcd\x153\xb9\x95\x0fɺ\x8c\x85B\x06\x8e\xe0K\xcch\xd4T]\v`v]\x0e\x014#'T{\xa8\x96\x886\xe9\xa6Kw\xddf4Q\x1b\xb2Մ\xac\x8e\x85\xd3Q\xad\x9c\x1b\x8b\xcē\"\x91?@\xbc\x00\x8b%\x1f\x85\x8c2Q\xcbUEY\xe0Q\x9f\xbd\x05r\xcf\b\x95e)1q\xb6s\xf4@\x93a\xcdA\xd3\x00nW\a\xde늮\xf1L\xf4T<\x93\v\xb68\x97\x89\xc7\xf1xZ\xa7\xf6_\xf4\xf48\xee|\x88\xf2k\x1b(\x1eA\x9a\xf8\x8c!\xa0\x10\x8dxJ,\xba\xb5\x11{\xb4״\xd1h\xa9\xe6\x16\xc5\xc3\xe9\x02\xbbO\xb5\x90\xfe\x13\xca\xeb\xfd\xb5=\x92b~\xce\x17b!2\xf0_G\xbf\x01\xf3\x9a\xea\x87\x13l\xad\v\xf94<\xab9\xd4a\xa6X\xa9u:B\xf3\xa5\x89\xd0]\x9a\x11~WVT\xd5eU\x15\xb3\xef\xfa\u007f\xa9{\x13\xf88\x8e\xf3N\xb4\xab\xaf\xeakz\xee\xe9\xc1`0\x98\x033\x03\xe2\x06\x063\x03\x92 0\x04O\xf1\x04%\x8a\xa4nX\x94D\xea\xb2`I\xd6\xe5C\xb0|D\x8ae\x87\xf2\x15\xd9Il\xd8q\x1c\xd9Ѯi=ǖ\xe5\v\xbe\xe5l\x9c0\x96\xe38\xbe\x96\xd9u\xb2ڼk\xca\xeaS\xd5)3\xa5\xea\xf1\xcd1\x93\xad\xbci\xf4\xd5\x06ۥ\x0f\xa4͔\xa2\x0f\xbc\xf6C\xad\xbe-u\xf4\x99I\u007f\x8fY\xafG\aɚ\x05\x17{ê\xd7q\x96\xfdo\xb1\x901\xeb\bv\x83\x9b\xba\x99q\xfbN\xb2\xa3ʀ:_/\xb9\x85l\xa3T\xe7qX\x95\x8ezU\x84]\xc2\xc2E{3\xad\xa3A\t\xdf\xf2\x88M`\xf7\xca\xfa\xdaX\x85\x11\xbdI\xc8\x1e\x83\xecX<\xe6p\x03\xd9V\x8c'\x8a[\x98\b\xd6\x1b\x00wň\xd8\xdf/\x92\x18a\x9c\xc4VQ\xdc\xcaX\x8c*\x91Ɍ\x9c\xc6\xed\x17x\x16\xf1\x17[w\x94\xbc\x10gS&\xe9\xebc\x05\xc48![DY\xdcB\xc6\xe5\xe7\b`g\xf1\xdd\t\xcc#\x9d\x05\xd9,ז?\x06غ\xb9\x1b\xb9\xef\x96\x1c\xb2X*Ì\xe7\xe9\x96 \xf6s\x9d\x02/[f\tv\xe8\xca'?\x16Kͦ\xc3\xefC\x91x6\x15k\x84ӷc\xce\xcf1\xed\xca-\xbb\xf0\xe0\xc3(\x03\xff\xbe\xef4/\xca11\xcf\u007f\x8b\xd5\xe5\xd38ǻ6\xbf(\xa5,C\x1cD\xe4)}\xa8c\xa5*\xc9F\xacC7\xcfݹ\xed\xc4c\xe4\xe6Cf4\xb2i\xdfm\x8f߶oS\x84\xbc߲\xa5\xf8[\x8fl\xbbs۩\x13G\xde\x16\x97l+\x1cQB\xd7\xcf\xee\xbb\xed\xb6}\xb3ׇ\x94\x88\x8b\xf1p\xfe\xf3\xac5\xbe!$Z\xbe~\xa3\\\xea\x18\xad\x95\xa8¦\xf2:\xf9q\xa0K\xdc-ƍ74\x8c\xec\v\x92&7\xff\xee\x16[\f\x90/\xd2p\xb09oZ\xca\xe4\xfe\x80\x19>D\x8a\n\x95^\x1aR3^\x9c\x8fo\x91\u007femZt\xbd\xe6\vy7\x16}\v\x87\x91\xb6\xc2ɂ\xd1 \xe3b\xf0\xd9-\x8e\x10\xa3\x1b\xbd\xf8؉c\xdb5\xa2\x99j\x94N4\xa0\xea\x970⥙\x8fQ=F'v\x1f?ѧƴ\xad\xe8غA\x13UR\xfeλ\xea4Ί\x13\xa5\x9f\xb5\xc3D\x85\xc6t\xfa\x98\xa9щ\x1d\xcdg4I\xad<̩\x17\xbb\x8a\xb5\xb5'\u007f\x03\x04\xfe\xf0Z=aa\xad\xbbH\xb8\xc3Ջ\x03\x18\xae\x065,\x90\x95l\xcb\xf1\"\xebO\xaf\x9fM\x16\xfc\x00\xcaK~\x95oc\xfd|\xe8'YWޙ㼠_\x9f\x19\xf6)\x8ax\xb5Ȋ\x87\x81\xc4\xf5\xceY\xf0&?\xc7\x1ep\n\xe0\x9bч\x89,\xf2\xfd\xe2\xb5o\xb9V\xf7\xe9F\n\x8c6\xdc\xea\xb3\xe2^\xab\x85j}\xb1վ\x9e\x8c\xe7\xf7\xdcx[e\xea\x17\xd6f\xb5\xa3js\xcc\xe6\xd3XU\x84\x01\x9a\xe7\xcd\xe1K7\x11\xe0\x8f̷˜\xc1\xe4\x99v\x927\x1e\xf7c\xf1%\x97_Q\xb6\xe7ϊ\xbc7\xc7\x12q\x03\n\xbb`\xff\x80\xfb\x8fq(y,k\x9a\x00\x0f\x1e\xb2\x80h\xfd\xe2M\xa9<\xb8\b\xe5S7\x89\x88\xda\x0f\t\x96\xb9\x84\a\xa6ш\xb3D\xbca\x98X\x9a%\x12,\xabC\xd7R]\a{)O\xcbl\xba\xab\xf3a\x04v|\x0e\x05a\nh/\xea\x0e\xc7E\\\x8d\xbet*\x11\xda.\x8a\xdbC\t'\x97\x1bɹ\t\a2\xd9a\xae\xc3\xd8\xf4\x9f\x82\x1b\xa8M7\x04\xe1\x84Cy\x82eQ\xbc\xd2'_lcb\xcc\"\xef\xc1\xe1N\xfd\xd1\x10`\x89?K\x004+?Y)\x818 Ϧ3\x15\x17\xf7A\xaeSL\x00\x03\r\v\xfe\x9a\xe2\x0f\xb2\v.\x00OOvS\x1a\x8e<\xf0\xe4\x03\x0f\x1c\x19\xde\x10\xa61\x9a\x9a\xdcoYI\xcb\x1aK&G\xb4\x88\x1e\xd6\xc2\xda\xe5\xb0\t\xeb\xe1\xcd\xee\xbe\xf9\xa1R\n>[\xff\x14\xf8윜\x04h\x9f\xf0\x86\xe1#\x0f\xb0\xdbD\u0094vOZ\xc9\xe44\xdc$9\xa8G\xd8\x15\xec\x17\xc6{E\xba\xd8\xe5\xb0_I\x95صS\xe0\xbd\xc5m\xfb}\xf1\x8a\x06\x04_Ģr\x9d\xadu`\xa7\xd2:۱i\x8fMu\x89zy\x96q\xd8p\x92\xba>!\xafJ͆\xf3\xe5\x19{\xef^{\xa6\\\bͦJ\xda\xe5\xc5\xcc\xccL\xa6x\xb9Vz1s\xe0@\xc6u\x11y1\xb1\xe9\xb0T\x8b\xf6\x0e\f\xf4Fk\xd2\xe1M\x89\xb9ɼ\xb9?\x12\x8bE\xf6\x9b\xf9I\xf9ꩩ\xab\x01\xbf\x81\xb5\xbfB\xbe\xe3\x8b{\u007f\x8dp\xb3\xf0Z\xe1M\xc2;\x84\xf7\v\u007f$|\x8a\xf1L\x88:\x8a.F\b\x89>^/Qg\xcc\x05O\xc7\x1c\x87\x1b8\x82.)\xfeJ\xd3ʿ\xa3\xfc\x85\xaeU\xb6\u007f\xf6\xb3\xdb\rmP1%騩.,\xa8\xe6QI2\x95A\xe9b\xb0\x0e\xff\x0et\arl\xfb\xf8\xf8v#\xb0C#\x059@\xa6\v\x85i\x12\x90\vDۡ(ڷ.\x06\xf6\x00\x11\x1a_f\xbe\xe0\xc7Sׅ\f㳶`\fV\x17\rw\"\xa1 {Uh\xd1\xc2\x19\xb9\x98\x91\x9c6i\xac\xc2Ҿ\xc8\x11r\x11x\xbd\x12'\xcb\vhu\xd4\\\x8e\x06\x16\xb2\x88UK\x02\x91H\x80\xbc\x89D\x9d\x18\xc1\x8c\xec\x02\xeb\xc2\xcds\xe8k\xba\xd8 \xa7\xc6@\x0f}o \xba\xbc\f\"\x8f\xa1\xbe\xcd\x1b\x8aéލ\x1bv\r\rA\xc6\xf2\xb2n\xdf\xcb&\bV꼰\xbc\xdcɷR6\x03\fzu\x9eH\xf8\xad\x11(\xcbs\x81\x01|(\xbfl\xb6i4\xa2\xa9(\xea\xbeC{\xab\x8d\xea^$\xa5\x8b\x90\xc9j\x0f\b\xbb\xef\xe0\xb3P\xedj\xf3\xf8q\xf3\xea\x1a\x9f\x94\x96\xf0\x14\xcaA]\x8c\x92\x18\xe3M\xc1\x87hF\xd8#\x1cYG\x87\x01m\"N\x80\x00\xbb\xee\x13\xc9\xe7|\xe9\xf2\x05\xf2\xebmߏ\nD\xb4eIJ\xdf\xc9!\xc0@\u007f(\xf4K\xcbzܲ\xc8I\xdcM\xf9\x0f\xd8_\x13\x8e@a\xf3l,\x9ds@\xfd\xa71>\xfb\xb4\xf6⋚\x85z\u007f\xfe\xb7\xd0y\xe0\n\xe4%\xf4\xe7}\x13\xf9\xa4\x10a\xef6\xe4E\xfe)\x97\xb2(\xda\x05\xb3\x9d\x84\xe7\x92PtO\xe5\xddS\xb5\t\xf1u\x8a\x927\xcdW7\xbf\xffj\xd3\xcc+\xcaџ\xfd\xec<\x1a\x80\x10\x13O\xcc>1\xcb\xf3\x9f'Eن\x9c\x1bn\x80\f[>\xb4qc\xf3\x1f\xd1\"\xe4~\xb0\xcb6\x8cZ\xcd0\xd8\te\x9f\x1f\xc3Ӌ\t\u007fP\xb8\x0e0<\xd7\xe2\xfe\xff\xfb\xb4E\xabχ[\xaaX\xae}%\x18\xa4\x8aul\xb6\x9dw\x83\xc3wl\x96~cf\xf3\x87\xb0%,M\xdcxX=\xac\xcfE{\x9a\xfb[e\xde\xdaJ\xbdn\xbd\xbc\x8fA\n6D\xb9\t\x92\xb0\xe1\x18\xab\xdcw\xb7\xc0mf:\xbcw\xdbȮ\x84#\xbbbL\x8a\xf1\xa2ý:\xeb3\xa2\x83\xa0\xb06\xe9t\xd7}\xac\xb8\x85\x8d\x89\xa9݀\xf6Jt\xd2|\xe3_\xff\x02\x90`m+\xf1ǩ\xd2R8\xd3ᨻ8\x1e\xe0Я\xe6\x91M\x88\xfcJ\f\x8bH\x0f\u007f\x14\xd1a\x83\xf6\xc4\xdf\x17\xbbÙp\a\x0e\x19\xe2ޮ\xb2[\xdcL\\\xfbl\"\xe5$\xb42(\x11\xe4\xa5xĈ\xfbt\x1a\xbc3\xc8\xc8\xcbKq\xb2\x14'\xe9\xe8\xbfD\xd3\xc4\x175\"\x1a\bD\x9b\xfb\xc9e\xcd\xff\x10M\xa5:m7\xa6|\x96D\xae\xfb\x01\xb5e\xae\xe3\x01\xf7\b\xd0\x01T'\xcb#*\xce\xf1\x19\xb4\x06w\x17O\xb7Kb\x97dID\t\xd8\t\xb3P\xee\xcf\xf7\xa5dSJ\xb0\x85\x89d\x9a\x91X*0si߶\r٩\xb0\xbb\x8e\xfa3Y\x96\xa5\xbc̖t\x8a\xae\xa9c\xd9\xdc`R\x16\xe5\x82$)2\x914\xaa\xab\xf2\xa5[6̕\x92\xa1N\xfb\x92M Q \xe8\xb4ξ\x8cX\xf6\xcc?X\xed\\[u5\xe1\xb8p\x12\x9c\x9f\xe2\xd0ǔ\xb3zQne\x8f\x1c\n\x11ny\xe7\x9e}\xc1\x90cK\x81\x81\xd8\xd0䡍\x03\x11b\r[\xb6\x98\x94\x14+\x95\xbd\xe5\x00,Vj\xc3Z\x84\xadxe}˞\x13\x8f=v(^\x8c\x84\x9d\xbe\x18y\xfa\xf57\xcc\x1e&j\xd0\n'6\x8e\xcf\x1dIXa\xeb\xfe@\x88H\x13\xbd{\x8e\xb0UK\x8f\"QK\x8f\xab\xfd\xe07zfCo4\xb1!\x1b\x8d\xb7|\x89\xbf\"\x98\xb0:d|\x06H\x9c\x19\xabQ\x9d\x14|\b\x94~\xcc\xc3\xca\x1b\x97\xde\x18\xed\x1e\x9e\xcaf\xc9\x13S\xe9\xfd\x01\xc6\xcf1\x8e\xe8#|\x17؟\xbe\v\xceg\xb3S\xc3\xdddaj\x1e\n\xc4\xd8)V\x00w\xac\x80\xe0\xe1\x1b#\xcf\x17\x05\x8aUw\xc6x\x03\x96\xaa\x10\x00\xa0^\xc3\x06\x85\x90\xa9\x9c\xb7\x98\xa1\xf5\xda\x1f\x1f#;75\x1a\xa2\x15\xb0MɔS\xe4\x96D־|~İ\x1a:ѴX\xac\\\x9c\xcdD\u07be\x87\x8aS\x8dc\xdbD\x1d\x14\xdc\xdbɦt\"\xda\xfd\xa1WI\xd5hL\xb7C\x96\x13)\xf4Nu\x87\\Y\x05\xf4\xe7\x820ɨ\xd3\x1e\xb4\xe9\xcd3\xd6\xd7S\"\xe6U\x17^\xdeo\x1a\x81q\xf2&\x00\x91\r\u007f,\xa3\x82&\xb2\xb5*t\xd2ʺI\xb2b\x95G\xcb\xc9r\xd2\xe97\x03,e\xa5c!4\xa0@(Z\x96\x8fgG\xcb\x01\xb3\x9cl\xb2\xc94k$\"wv\xec\x1a\\\x9e5\xcfxn\xfc\x97\x8e\x9dY\xe0Y\xa4\x11\r\xd8\xe9D\xb1\x14_\xbd\x17<\x9b\v\xc1\xc5\xe5jy\x191\xb2\v\xecQ\xb8\b\xfd0W\xc5\xf8\xbf\x84\xcdN\xcd$21U\xd9\x14\xafl.\x1d\x95\x02\xf2\xe5\bT\f\xb3T\xf3\xcf\xcfʒ\U000854cf)D\xb9\x13\xe7\xf2\xf3\xbf>\xff%1\xc7\xfa\x8dƾ`\x01\xd70\xe0\x867J\xea(dŸЊ\x03ݜb\x98.\xd6\xeb\xe3b\x88\x1a\xc4\xdab\x9a\x1f\xfa\xa9N\xcf\x1a\xf4\x8a\xa5\xe6?\xfc\xbeB\xd4\xe9\xbd\v\xa7$\xe9\xde+\xa9\xb9l\xd2\xcb6\x19\xe6\a\xb7R\xe3,\x1bqK\x1f\xf8}%(\x0f\x12\xf2\xc8\xc2\xd5ﰈ\xae\xf9\xde)\xb6\xca\x0f\xb8\xda60\x9ep\x9d\xf8]\x8bön\x10c&\xf2\x85\xe0\x18\x18\xd8\xc1\xfa\x8f-P3fv\xc1H\x19\x97\x8c\xa0\xab\xe4vH^\x925\xadPåN|\x8d\xd8<\x03X\"\xf7\x84,VZ\xd7\xf7\x8c\xa0C\xe5\x0e\x96ړ\xc5P\x8bn\f`\xe01L\xd6&=.R\x1b\x10C\xd6\x1a\x1e\x16]\x14\xb6\x83\x88\x80\xb34\xbf\xb88\xbf\x02\x9b%4J\xfc\x9f\x00\x9a=>>N\x96\x16\x97\x17\xd9\xdf\xdb\xd1R\xf1\xbc\xc06\xf5wս\xef\xe9ݿ\xe3\xee-\xdc\xc6\xf6=\xf9\xd5\u07bd\x9a\x1c\xe4]Pظ;\xcfx\x85%FY\xa7\x85\xbd\x8c\xd3?\xc1\xe36\xd8\x04\xdd-!\x9c\xc4 \xf1\xd10\x1e\xa7\x98GK\xea!\x95\x0e\x00\x93\x9aB+%\x8a\xceU`\xbc\x83\xf4m\x96\x14(\xd07N\xd5h\xcbvNu2D$ս\x84\xec\xadN\xee\xdd\x10\x97\x1c\x94\xf7$\xfb\xf5C\xb6\xad\rkznt\xf4\xeb{\x96\x92}\xeaK\xf9\x89ќa\fK\x92\x1aP\x03\xd2p\x8c\x90!\"\xec\xafV\xf7\xb0\xbbON\x95\x92o7\aj{k\x93{\xb51\xdbPM\xcaX\xc6$\xe2N\x98o\xd0\xf6\x94\x12\xf7\xa4\x12]\xd6%\xe2\xe8\xdc\xe8\xc2}\xfdٱ\x05q,\x9f\x1b\x15w\xb3;\xe9쎻\x92\xbd\xbdCn\xfc\t\xa0O\x93\xac\x9d\xf6A\x1c)\xd2!e\x88\xaf6tزF\xf0\x00兖\xfa\x91\xb3.\x1ek\xd2\xd2B\"$\x95f[*\xea Wp\x1b\x88r\x84ɇ\xbe\xf0P\xf3ͨr\x1c#\x02L\xd3\xe7aKB\x1c2\xb0\x81\x96\xcb\x1f3\x83ٶ\"\x92\xf1\xee˘=\x96\x1f\x19ɏ5\xcfq5\xa4\x1b҂m\x16\xdb1\xfdZ\xb4\xa1\f6\x14kl\xdbT\x1e\xef\x19,\x9aF@暨\xa1\xbf\xe6\x85\xf2\xfdqk>ѻ\xa5\x91Q\xe5\xb0(u]\xbau\xf6\xb2\x94,\xc5\xe4\xcfef\x1a\xbd\x8a\x1c!\x90\u05f8\xb4[\x92\xa22\x80\xe37\x11d\x14`\xf1\xcev;\xc5|<)\xab\x19I\xea\x92&GFkJZ\x96\xbbU\xe5\x02\xf9>\x99\x06\xe2|\xa2\xf2\xc6g/\xd4a\x1e\x1e\xed\xb4%\xf2\xf4\xc35|\xd7\x17s\x0e\x87DZ\x8d'\xa6\xe61\xf54\xd5秞0l\x0e\x9e\xe3\xe4tJ\x92N\xae\xc9ek\x8f\x1b6;\xe9\xb9U4\u007f05\x0f\xf6X\xe8\xb4\xc1\x98w\x8ck\au\xfb\x12\xc6\xf9\xa8\bG!\x12\x91\x83\xf1\x8b\x12^\f\x8fz\x01\x92\x10V\x1b\x90\xc1\xa4\xf6\xa8\xca0j\xccC\x1d\x95\v\x17\a6G\xc3\xd8\u007fm\xfeH%\x01\xd3\x16\xd5l.\x99\xc8\x12\x12\xf9n\xb8\x90\x8c\xf7\x125\xa0\xef\xdc\t\xbd\xe8\x84bP\xc6\a>b\xd9Ҩ|\xf7\x18\x8e\x03\x0f\xb4\xdcM.e#fW\xb0\xe0䲉\xaep(\t0|\xbdq3\x16T\xc9Q\x94\x82*\xba2\x1c1\xcfD\x1f\xe7q\xfb\xf0:_\xd2\xf33\xf4\xdew\xe7\xbf\xfd}]\x13;\xd7\xdb\xfc\x15\xbf\xde\xfd\x83V\xd2\x1al\x01P\xbc\xdc\xf7Z\x9a\xb6\xaci\x0fx³\xff\x85u\xea4xK\x143\x9e\xbbG!_F施\x85\xea\xadO'\xc0^\xb16K:\xa3\xe7Vr\x8fb(\xf7\xec\xcdo\xc0\x9anN\xe5\x82\xdd\xe1\xcd\\&\x9d\xdf\x19((\xf6\xa3\x81(\x87\xaf\x8b\x06\x1e\xb5\x95B\xe0\x93\xc7J\xa2X:\xd6\xd2)\xae\x90\xaf\xb2\x19\xb2\xc6\xf8\xd3#\x9e\xddD;\xca\b\xfaU\x96\xaa\xdc\xde\x12\x18\x80\x84\x17$\x96q]1\xee%]\x1f%N\x9d\xed&\xebUx\xf3\xf8X%\x11\a\v*\xf6\xc65\xb0\x92g;\xb2\xd4S\xe0\xa1F\x8a\x99.\xd9\xd06E\x1a;\xedn\x9a0Ҷ\x9d6\x12\xb4\xdb\xdeوl\xd6\f\xe9\xf9lr\xe2\xb7\a&\x92{ԡɉ\x11`\xb0e;\x16SE[\xa4=\tU{4\xb2\xa5\xc0\xa3\x8e\xf4\xcdD\xa65\xbb7\x17\x88\xc6\x02\xe3y]QlJmE\xd1\xf3\xe3`}\x9e뵵\u007fd4{e%\xdb\xff\x94$\x99\xaaj2\x9a\xa0Ij8\xac\xaa\xf1\xa0\xa2r\xfdXk\x8e\xdb\xcd\xc6\xde휶%\xd42\x97\xb0ڢ\x93\xf0\xa68thq\xea%\xeeW\x87^u\x95U\x10]m*\xe2ԔΩ\xaeX\xeb\x9c\xe1\xc0g`\x86Mr\x93{\xc9>6\xf9\f\a\xa2)\x8b\x90\xa0q\x98\xcds56\xf1\xed\x9eHD\xadPv\n\xbe\xdaԎ\xde\x0f\xc4\xe6P\xf4l\xd3D\x89\x9aÐ{i6\xde|/\x9f\xf0\xe8\x06\x85\xb2\t\x8f\xbc\xc0f'M\x1bw\xa7:\xc6t\xe6{\a\x89\xb0w\xb2\xb6\x8fMu\x9b\xcb\xf1\xe0\x86\xe1\xa4\x11\x1c\xa8\xed\xafUv\x8bD\x8duنa\xf7gq`Z\xa5\x01\r=F\xea\xf4Lw\xf4\x8c\xaa>\xb3\xfbA]'\x81\xe2\xcd\xfdu]\xbf\xfe!\xdd8\xd2\u007fsQ\xec\xefO\xf7\x94\xcb-?\x86,\xeaM6p\xfc\xc7\v8}\xbb\x00\x90\x1e/H\xb2\xb3\xe3}\x96\xd5Ǹl؍\xcf\x1e\xbe\xef\xf0Y\xee\x92\x10\xaa\x1c0'\xdd|0\xe54\x0fT\xa6\x0f\x1f\xee\xf6\\\x148/H F_R\xc8B\x0fw9ގ\xc8\xc1%\x90d\xb9|\xc6\xddVP\t\x1fJ\xb0'\x1c\x9e\x1e(̇\x15U\xfb\f\x87\xf3[\xb2\x0e2\x8a\x19\x9e/\f\xb0'\xdcw8q(\xac\x04\x9b+X\roݟe\xfdb3\xfaB\\\xfc\xdd\xea\x18G\x1a\xc7\x11\x86.\xaa\xd5[\xf8\x1c\xf4\xc2o]\x91\xa5\x92\xc2\xf8\xf4~C\x94\xc3\xceN',\x8bF\xbfJ\x89R\x92\xa5\no\x8fsk\x9bc۠$eG\x15͈\x06c\xb1`\xd4ДѬ,\x0e\xe6y\x13\xb5mT\xc79\x06\xb8\xaf}.\xfau.\xd4p\xab\xbfԪF\\i5\"\xabi\x1a\xa0~-\vw\xf8\xe1\xd6kSƹ\b\xf3\x80\xd5\xfb\xf2\xea&rޜ\x03\xc9r\xc7\r.]p\\tS\xa7\xb6\xba\xe6\xdf[\xa7\xe6\xd9JO\"\x14ӵ\xb4\xaeG\xa3\xacRPm5\x1c\x8b\xeaZ\x0f[B\x87\n\x87_\xde[\xd1\xfe\xcd\xf9\x81B(\xa6\xb1\xcb\xf0F\xaav\x10\x9e\x16\xe59\xb1P\xa2\xf3\x95}\xba?\x18#G_\xc9(Q.P\f\xec\xec[j_v\xc0\x81\x03/2\xa6r\xbe\xfc\xdeT\xdct\xf2\x00\x81\x9aw\xccxyb\xfa\xf0\xecE\xc7\u070f\xfd'h,՛d\x99\xc9lW\xef\xe1\xe9\xca\x01\xc1O?!^\xe6\x01\ufaee\t\xe6\xed\xfb>\xee\xda\xd5+\x02b=\xf6F1\x97Ύ\x90\xc2X~\x1ch/_\xb5\x1e\xb6\xa8!\x85ǽ\x01<\x06M\xfe>\xfe\x95>\xadP\xf7\xdctq\xb6,\xe72,3^LHA)׃\xe5\xe0;*T\n\x8fyC|\x1c\xbe\ro\x95CTi\x9f\xcbo\ue4c2D\x84fI\x14㙜\x14\x81\x92-\xd9=\xe2:\x96ج:\xbf\xfa\xfd\x18\u007f\xb0\xfac\xf0z\xcb\x13\xbfi\xc4yΧ\xe2\xa4\xf7\x86\xd3\x13\xe5Ώ\xe3\xben\xf3\x8e\xfb\x0e\xaf\xfa\xb8w\xb4\xfai\xeb\x1dz\xbb\xb2\xf8mzS\xbd\xf8\x9e\r\xf8Bk\xbe\xeb\xa3\xed\xb1\xc8\xde\x05x\x85A\x8cI\xd3\x12\x1d\xa0\xae\xab\xf5\xf5`\x05\xcc_\te\xb3\xab(\x84BY\u05cfغ\x9e\xd65;\x02\x9f\xa8\x00r\x87\x81\xfa\xc1P\xa8]\xd7\xdf\u0098s\x05\xf4\x8f\xf0\b@\av;ε\xf4\xa2u<0lY\x8ei\x8e\x8c\x98\xa6cY\xc3\x1dG\xcd\x0f\xacW\xd33\xeb\x15u\x8ff֩.\x97\x03\x02\xefGA\x8bZ\xf306\xfdvE\x9eI\x8dO\xd8\x01\xcc\xcd_\xb9\xbd\u007fd\x8e\xb7\x9c\x0f\xfe\xe1\xacN9\xd1947\x82\x18\x13\xa8\xe0\xa5\x0458gNQ\xddg/\ue815\x06\xb7\"a\xeb\x1fh\x80Y\xdf\xc3\xe8*\x1d\x9cg\xb6JV\x0eL\xceʒ\xda<\xa3J\xf2\xec䁃\xe3+\x13\a\xc6\xfc\xa8\xfb\xef\x1f\x01\x8b\x10\xb2p^(o\x9c\x90LS\x9a\xd8X&,\xbd\xf1\x93\x9eM\xa2]\x03#\x92\x11\xa1eo\xe8\xd5\a\xc6ڮ\x8b\xd7ɯ'\xac\xaf:\xf6\xea\xd8w\xb1\xba\xbeh\x1b\xdc\xc5ް\x9fm'9\x00a\xf3g<\xca\xca\xc5\xea\xdeތ\xf8b\xaex\xb2c\xee\x87Hy|!\xf6\x05s`<[\uf01b\x88\xfb|\xc6!\x1a\xa2\x98mf\xc9\xd9l6\xc4\x16G(2d\xfdJpC\x1a-\x90\xecJ\xa3\xb1\x94\x8e\x85P\xb0\xe0E\xf4YXZ\xfa\u007f\xe3y\x8b͕\xffǟW\xb8\xc8\xf3Bg/\xf6\xb8\u007f\xcb\xf3\x9c\x8b=\xef\xf4҅\x1f'v<\xebe<\xe9\xc2o\xb5\xee3\x04\xd7^\xecKd;\xe3\x03\xe2\x10g\xbb%t`+\x01\xe8\xe1\x0eD\xdc\x1e\xb9eJR\xe98\rHգZ¡\x841\x1f\xf7>Lm)!*\xf4MW\xe8\x86E\xfe\xa3\xa5k\xcd\x1fi\x0e\xc7\xe9&\xe0c\xb5\x1bgN\x8c\x92\xe9\xf1huO\xdc\xc58R[lI\xba\xda|\xdb$\xe5^\"3\"ؒ8\xb0Kĉ@\x95\xc3\xc0c\x1d\x06\xae\xc2\xc9\fG\"#\x99\x04\xa4y\xae\xa4J\xa2$K\xed\x13\xe4Q\x85\x8e-\xb2\x89yq\x9c \x8f!E\u0091\x88\x88I/\x9f]\xd4\x0f&\xf6\xde)\x8fV\xf3yvH\x98\xe2cޭz\x1e\t\x9fg\x02\x14v\xab\xeb\xf9`\xf22Jۃ2\x8e\x8e\xbd\xae8\x1f|)\xcf\xc6м\a\xdd%c\x98&<Ͳ\x10\xea\x8a4\xacö\xb1\x1bS\xdc\xd9\xd2-\xd6h\xa7?\x8df;\xcf?l\xed6\xec\xc9\x16\xb6'b\xa0\r\n\xd70\x1e\xae]\xc3\xea\xba5\x8c\xb7ߦ\x1e_\xf7ͪ\xfe\x98\x88hlߺ\xb8\xa1N\xaaj*\xa5\xb2\x1dɶ\xd3+\xb8m\x9eŜ\x87\x11Ճ\xf5\xbb\x93x\xb8\xc4K\xf8\nc\xb2\xb1\xdc\xceٍ\xfd\x94]\xb4\x1b\x0f\xfd\xd8\r\x88]V\x04Bځ߀\xeejPO4w\u007f\xd1\v\x11I\xaf\aK\xfe%\xb49\xe7!#\x9b/֯\a\x97\x806\xde>،\xe4\xd6j$\u0095\xf8*\x03rW\xe7\x80\x1a\x843^bl\x14\xcd\x14[j\x057\xe2.$\xcf`Hfԁq\xbe$.$\x19W]\x17\x8e\xa3d\x83\xddy\f\xc4](\xdfL\xa0\x95t\x99V\x14n*\xcdOAd\xfaֹJ9\xba\x9a\x01\b\x97\xda\xe2C/\x106t/\x95\x86\t\xe8\xf1\x8cL*\x1a\x98\x0e\xc4R=\xc6\xd2\xeeS\xe4\xe9\xfc\xe6B\x95e*\x8a\xa9\x99\x8a{\xe2\xd9S\xbbCmۉ\xd3%\r!\"Nu\x1d\xe8B[ڇ\xb4\xd2\",\x8d\x88\xe6LO\x96R\xa9\xfe\xeaƄN\x96O\x85؊\x8d\xe7\x1aF<\x940\xbd3\xa1S\xcds>\xeb\xdfrh\x03\xb7\x93\xe2\xf6Q\x1bBͿ\xf5\xe4\xf7\\^2\x00<\xbdg\xdf\x11\xc3\b&\xab\xc0J&1l\x89\x87X\x85\xe6\xa2\x04\xe7\xc2\xed\xd5\xeav\xfc\xa4\xa7\xf9Q\xa1\xde\xcbÇn9\xb2\x85\xac\xa0\xf0zۭ\x91ȭ\xdb0\xe9\x1d[S\a\x871\xddll\xbe\xfc\xf2\xcd~;1\xa8K\xed\x15\xd5f\x04\x9c\x1d\xa3\xb5j!\xe6\\\xbcNJ`bz\"\xf0\x8cy\xc6|95[\xea\x1b\x1a\xea#B&\x9fϬm\xab\xdf\\-γۀ\xa0Y\x88\x91\x93\x17\xaa\x13\xa0\x11\xfd\xe4Ȗ3d\xe9b\x95\xc1ͩ\xcb7o\xf6\xe6\x05\xaf./\xbf&\xea\xc5\xeb\xf02\x9e\xef=\xfb?c\x1c\x89Y\x1e\xe5\x9b{\x14㛺\xd6\xed\xae'sō:\xcb\x13\x95\xb5\x89\xc9\x1a\xf9\xab@<\xa0\x8di\xaaIϱ\xa9o1\xdb\x13\x8b\xa6\xb5\xd5\x1b\xb2h'\x02o\x8dE\xee\x8eD%j\xaa\xb6A\xe3\xf6\r=\x83s\xb1tOl\x8c>\f\xbb\xde1؎f1\x8d\x93'9\xff\x92\x8b\x1d>\xe5\xab'\xaf#\xab\xe0\fD\xa6\xe0\v|^'He\xc4U\xf5$\xef7\xa2\x86\xd2-u\x87\xbei8\xea\x1bX2\xa7gYV8\xa9\xb1\xad\x162U\xcd\t\xb1\x83$i\x98\x11\xf3}N\xfc5\xa1\xb8\xa5=i\xe7\xa2J`\xe8\x9fXV2\xfc\xc9\x1f\xb0\x9dj\x86\xb4\xbf\xf9T(\x99\f\x9f>\x1aN\xba1\x83\x05\xf2Q@\xc5H\xb0\xe7U]\xfb\xfa־<\"\xa2\x86\x067\\\x8d\xc3C\xd9\xff\xc0\tg\x01\x97<\x8bT\xf0\xccSVH\x92\xb5\xbe藺\xf4\x9e\xc0\xa2f\x85\xed\x87ee>\xac\xe7\x1d\xcda?\xc6i\xda;\x94XW \x12\xa2{{-\x856\x94\x98q\xceNHY\xe2}K>G\x95\x18\x81D\x87\x9c\xb6\x83\xc2D\xcd\x05\x17n\xf5!'\n&\xf5K\xe6\xa2e\xbf۰\x8bݯ\xd7\"RB2\x8c\u007f\x00{Gr\xc0H\xaa\u007f\x18\xccn\xb1\xe9.\xcaf\x99\ue8a5U\xf4P\xcea\xfd&\xa07_r\xd2w\xbb\xf1\x9c\x80\xff\x00?\t\xa9\xf51\xb0\xc9{\xb1\xe3\xf0\xd6G'\x9f\xead\xb5\\r\xc3Y`\x06\xc44\xa8p\xe4\xd9\xd8x\f\x8f1\x16D\x8c\x9c߮M\xe7\x1fL\xd4C\xb7\x05\x9cp\xc8\xdcb\r\x88N\xd8r\xa4\x12Q\xf5\nq\xc2Z\xd8\x12\xa7DM\x13K\xa2\x19\xd6U5\x18\x94\xf2T\x15{$'\x10v\xc8h\xf3\xefr\xa3\x89\xe0MV8\xec\x98\x1b7\xf4\x9fR\xd40\xbb\xfc\r\xaaF\xc8\xd7\x15%\xech\xb6\xf6CM{Z\xb7uQ\xe9\x0e\xfd\x11\xd1\xd4\xd7\x05\"N\x18\xf9\x12\xd9\xedg+°0.T1\x1ef\xdc\xebi^G\vs\xbb\x80Ju\xd5\x1evJ!^\xa9\xbb?v\x9f\xac\x94\xb0\xcfĬ%\xde\xd7\x1c\xf7C\xba\xbf\xf3\x82\xa6\x1dÿ3\v\x8a\xfc\xb0\x1d\x0e\x9d\xe6}\x8dĠS<\xdb\x0f\xdb\xfe$la\xf3\xaa\x05\xf8\xe7a\xfd\xf2:\n}.\xf6\xa4\xab\xd4\xe4A#ʼ\x9ek+H~+\xef`\x9dΩ\xb6%5\xa8b\xf5\ue961b\x9f\xb6\x03V@X\xaf\xe7\x9d\xf0\x14\xc9lG\x14\xdc\xf6\xfa\xbf\x87q\xb2\xbbP\xa6\xe5IoVGeauP:b\xb8(\x17\x0eQY%\x9f^\x1d\xb6\xa5\xb9\xaf\x1d\xd4e\xb75\xcd2AE\x8f;\x92\xed\x8c\xe2\xd2ge\xdb!^\x1em\x97c\u007f\x1d>\xeeP\xe7\xfa+\xac\xb3ϸ\xfb\xe2ud\x8f{ںx\xd5V\x04\xe7\xb3Y\xb7\r~\xca\xf8\x87\x0f\v\x86`Ê0<\t\xb0\xdca\x90O\xd4\xd9\x14\x1a\xad1\xc64\xcc\x18\xc3 \x81\xc9\xe1\xd1\xdf\xd6압O\xa8:\x85\x03\xb2G\xb5\fq\xaa\xb94+\x19\xda\x18Yj4\x97ȗEIS\x9b\x1f\xc3\x13d\t\xbf\xdb\x17]\f\xaa6\xb5C=h\x8b\xbe\xad@(\xedSoP\x03\v\x90 +\xa5T\xf3l\xaat\xadL\xe9av\x98M\x95V\xd1l\xc7\uf47bڏ`\xb5|\x90\x1b\x95?\x8f\xf6`\xdc(\xac\x9dt\r\xc8?\xbb\xdcr\xbflm:mũ/\xf2ʤ\xb2\xee\x13ȱ\xf6\xd5k\xee۶\xedYA\x9d\a\xb77h;V\xf3\xc9\x1a|\xed\x11\xeb\xc5\xd3\x0f\xb4\xf4 \v\v\xa3\xb9\xe6\xd9\xdc\xe8\x02[\x8a\xae,\x95&K\xefCq\xfdS\xae\xe0\xbfy\x0e\x17\x96\xa1,\x18\xa2fY\x83\x95\xde\xe5\x17\xe9\xcb.\x8f\xf8\x116\xd7Մ9\xd0r\x16\xb1\xb3Q[\x84珶\xc5\xf9u\x00W\n\x92\x8a\xc7L0\xde\xc6\x17\x8a\xa7\xeeK\x97}i\xb1\x01a\xb5\xc5@\xdcj\xbe'\xd2-\xa5P\xe8\xb0\xedV-\x95\x90\xb5\xf9\u007f\x9a\xd7\xe4DJ\xbbu\x1b\x88\x13x\x9d\x16\xf9\xee,\xdf=\xcf\xd8\xcbϚQӉ|\x16\x97(\xef6\xe5Pʼ\xfdv3\x15\x92\xcdw\xdbϬ#\x85mo<\x9b\xf4\xb3\xe4+\x8c6lC\xaa\fo\xe6E\x89\xa0.NK\xa1\x95\xc8\xf3AUo%Ɂ\xa7<\xe2\xf6\x87zJ\x17E\xf1\x89Dר\xfd\r\xcfN\x98\xb0)\xbd\xf9?7\x8az\x9f&m$DR\xa4\x1e]\xd2&5I\xef\x91U\xe9\xb3\xc9\xe1\xccF\x04K\x19\xa9\xfeU&\xa3\x1aF\xaa+9~\xfdum\xd1^\xfa\x97Oh\xda\x13\x92*Kz&\xa3+\xf4pfС\xca\x13\n\x9ddk\xb1_\xb2\xfe\xff&\xf2MF#+l<_&\b\x0e\xc2\xc0\x01B!wZ-\x94U\xa7>\x81\xd8\x14nN4\x11\xc3p\xaf%\x84\xfe\x00\x8b\xc8:\xa0~\xf82\xe8\xaa\xe3W5\x86Gf\r\xab\xa1\x91\xacl\x112\x95\xcdN\x11b\xc9Y\xa25\x14\x85>\xa6\xeb\x92\xc9\xfa\x8b\xcc\xfe\xb1\xfeb^7<\xac\x19\x8a\xae\x15\x8b\x9a\xae\x18\xa5\xeen\xcdP٧\x8cQM567\xfe\xe4O\x1a\x86֯\x18\x92t\xc8T\xaf\xbcR5\x0fI\x92\xa1\xf4K\xe4á|H!\xec\x0e\x1a\r\xb1\xa2\xaaL\x8e\xd4\x1e\xad\x19\xba\xaai\xc3w\x0fk\x9a\xaa\xd7\v\xc7\n\xec\x98j\xa9\xb9\x94FU6OX\xae\x8ep\xb95\xde<\xbf\xea]\x9eF\xda[\xa5\xa8\xad\xf8e\x1e5\xe8ܷ\xb0s/\x90\u007f\xa1\xf2Kh\xb9\u05cf\xc6\xea\nZ\xfe=\x87\xe9\xa8/\x87D\xd7d\xf9\v\xf1\xbf\x1fa\xfe\n\x1e\x90\xbb\U0002efc7\a\xefx%Y\x97\xb5bɩ-\xd9C\x14\xa3>\xee\x16\x16\x84\x1bXOw\xcd\x1d'<\x93\x0fF\x12K<60\x1f\x99h\xed[\x9d\x9c\x11\xab\xdcE\x1e\vyo\xed\xb5\"\x97#O\x82\r\x02\xe0\\\xccH\x88\x15\xac\xd0r\xfd\a\xa1$X\f\xb0-\x9b\xac\xc6\xdfu\"\x18\x8f\ag\x87\xadP\xc8Jd\x9c\xee\xc4\xce\x1bv\xb2S\x97\xe1\x1bߎ[Q`\x19\xe4P\xc34$Q\xd3-\xe5\xd0M\xa4\xf9\xfe\xfc|\xfe\vp\r\xcc\u0530g\xa3\xf7c'.\xe9\x1eLŢ\xfa\xf0,\xbb \x93\xe8*FK]\x13;wN\xc0\xf9Kފ\xef};n\xff\x12rDB\xb6ߑ\x90㦢\xcbD\xec~\xf4\x88\xf4\xa7\xec\xa6(\xbf\xf8\xd5\xf9o\x8ao#\xcf\b\x13\xc2V\xe1n\xe1!6\a\x96(D\x8d,\xa0\x83H\xa1\xcc\xe9֬\x88p\x8a`\xd4\an=@\xde Ɂ\xb3i\xa9\xe5\x89W\xafUJ\xc5DPD$F \xda\xdc\x15\bA\xe4Ul\x1c\xb6n\xa9\xe7\xc1\x96\x06Mq+\x0e܍\xe6\xa9ZH \xa0\akgR\xc8\xe6\xb6$i\xc8f\x1c\xa89\x98\xbav\x1b\xb5\xa5!-\xb8i\x83\xb1SKآ\x16\v\xe4\xfb\xcd\b!\x8aE\x9d\xf8\xf0\xa0A\x15%^4\x12\xc1\x98\x11\xd2\x13\x06\r\x87\xc9\xe2\xaa\xd2z\xac\xb3\xb4\xee\u007f@\xfajx\xc0\xe7\xf0J\n\xb7\x89\x13)dU\x02]]\x01'\xad\xe7dE\xbd\"\xa8\xe7\xf6\\\xb9\x91M\v\t\x1a\x8e:\x8ah\x9b4\xa0\x131`ĕ\xb8aЭ\xec\xab\x1aa\x8d\x11\x94ɐ\xd6Y2`u\x94T:o\xbc\x8b]\u009e\x17\fƸ,\xe9\u007f\xa3O\xfe7\xb0\x8fn\x17\x0e\xfd[\xfbg1\xd1BGt\x88\xe3\xc5c`G/\xab;\x92/\xe8\xfaQ\xb6\xdcҴ\xa3\xba\xd6\xfc6[v\xbdG6$\xd8i\xaf\xac\x17\xfe\x9e\xc6\xee\x03+\xb1\xa3\xba\x0e\xf7\xd1\xde#\xcbl-\xf7\x1eݵ\xd7\xfe\xb2k\xaf>\v\xb8 N;\xba\xf2\xeaD\x1d\x12e\x00\xefD\x9cJO\x16\nQ\xeaj\xe8X\xa9\x02\fwl<\x06\xa8G\xecE\xa9\x97__\x93@\xde4~U80\xf3F+\x1c6\x1f\xfc\x00\xdbZ\x1fx\x83\x15!!\xeb㽆l'\xf5\xd7\xdbAk>\x14\xba\xd5\n]R\xa4\x92\xae'\xb5@\x80}\xf0\xff\x15\xd8\x12y]<>ɲ\f\x87\x1e\x90\xaf\xd5$Cw\xe8u\xca~Lh'\b\t;\x91>+\xac\x86-+\xc46f\x187\t\xc60H\xea\x95F\xe4\x1dVT\x8cʡ\x9f\x8f\xb0\xcb\xd9%a\xb3`h\"\t\x1bc\xe1\x84ue\xd0\xde\xc6\x1eD%\xe3\xb8t\xbf\x91\xa4\xec!\x0f\xc8\xd7\xf3\xc4[KV\x98\xd5\x0ey\xd5\x17\xcf\u007f\x89\xf1\xe2_e|\xdd\x0e\x17;\xdb3E/K*\x8d\x02\x03\xc2F\x9e\x03\xbe\x17\xae\x8b\x02\xbc4\x86\xad\xf5|\xb3j\x8e7Tk\xd5\x04\x80\aS:~tP\x91\xb4\x00c\x15~\x1d\x8b|)\x12N$6\xdc\x1b\n\xbc\xe15\xd3\xc1`\xfbT\xb5\u007f\xe0\x8a\xf7>\x9c\x9f\x9fJ%\xa3\x03\xa5H\x97\x19\xb3\"]\xb6\x12\xf9\x81\x992\x0f\x0fn\xd2blQ'i\xe4F=\xd0|A\x946\xfdI8\xfaT\xffM\xc9d\xfb\xd4n\xe3\xe8\xe7˕\xa9y=\x1d\x88uE\xac\xa8\xd5\x15Im\xe9\xf2h\xf3Kh\xdb\xd2%d\x85~\x9c\xb3\xc0Z\x94\xcd\xd2\xf1\x12`E\xa15w\x1c\xe8\xc8d\xbd\xca(\x8cS\x01\xf8\x9c\xea&\xc2YX\x85k\t=\x0eW\x81U\b\xa2\x0f\xc1\x06~\x85*\xb0W\x80\"\x98aL\x17\xf9?\x02z]\x96ߕ\xb2\f%\xa0\xcc\a\xf2\x86\x11\xb8^\x0f|m\xa1\x11\x88n\xc0 \xbd/\xad,D\x03:\x8f\xd7\xfbQ\x83\xf5\x01\xad\xdbP\xb2z\xaf\x15\tWcWE\xeaz\xe0\xf0\xa5\t1\x16\xdb\xcc\uede4\u05ff\xaaH\xf7$MK\x91/!\x86hZ9\x93\\\xa95\x00`\x12o\xb1\x81\bg\x03\xd1\x06\xa6\xd9JǴ\xd8\r\xe5\x92%\x1b\xa1\xb8\x1a\xbe\xf4l]\xdf\x1b\x9b\x86\x00\xec\xdd-]\xe8W\xd8Z\x1a\xe2:\xb7\xb8.\xf61\xc7P\xed.\x8e\x83\xb7\x06-\xb1\xef>\x06Jz\x84\x1c/!<\x16((\xe5\x89\x19\t4\x99\xd5ɲ(p\x86+\xb2\xe1\xf5i\xdb\xd14\xc7N\xbf~CdN\xa6\x85]pLC\xe1@D\xdcU\xa0\xb2.J};ń\xed\xc4cq\xc7N\x88;\xfb$\x11\x8d\x10\bM\xda\xd9+\xe3\xbai\xea\xf1+\xb3vrN\x95\xbb+\xecP5u\x9bT\xbae\xd5\x16EYJM\x88a#\xa0\xaa\x01#,N\xa4$Y\x14\xfd\xb2!\xe0?\xb6C䯖-h;\x12\x99\x9f\xa3t\xed\x10Zvo\xb8Jfk\x00@,\xf5\xb8I\xf2iP\xb5\xe3\x8f\xcb,\xb9\x9c2f}\x1f#\xab\x8e\x95\xd3Jt \xaaDz#\x01\xfd\xd3z\x80dA=\xdf\xe0\xe2$\xcevr\tS\x16í~+\x9a\xcckZ\xb0;\x14\xd5LS\xf0\xc7,\x03\xce\t\xa4\x86\xdb\x10\x8df\x95>:\xb1\xb6\x86~\xe9\xc1oDn\xe6M\xdb\x04>6\xf6\x81\x8ez\xa7\xcbX\xed\xb3\xda)m\xd5_'(\xfc\x82\xaf\xfa\xf9$\xd4~\v \xafk\xbb}[au\x9cJ_\xc4Z\xcf\xd6I\x9c\xa8\x8f\xb0\x05-\xae\xb4 H\"\x8fXKһ''wO~ꩍ\xf6dV\x92\xe3\xfdqY\xcaNڮPb|\x12\xce6\u007f\xbc\xbd;G(%\xb9n?\x96aг\xa2[\xe3U\bO\x84\x06b\x04H\xbdH\xfb\x91\xf9\xb6f\u007f\xa1\x15\x1f'\xb1^+\xa1غ\xb5\x9c\xc8\U000a1eb4\xa6e\x04\x8eI\xc1\xbf\xab\xcef\xd5^\xfc\xb2\xb3\x10\x99\x8bp\xbfn\x88\xe2Ԋ\xd6Q\xbc\x00N\xb7?\xed\xf5Q\x0evYC\x80Y\xb7\xa7\xc2\xc7}\x89\xd5lLl\xf0oL\x16\xd6~\xcd\xf7\xe1\xfb\xfc\a\xd1О\xd1\xd8\xc24\x1f\xd7\xd8{ivW\x04>s\b\xdc\xc3\x17\xc9X\x13\x94'\xbf^\xf3]\xf9\x1b~\x8c\x06,-ڥif\x8cϣ+\x04dd\x11\\\xf3\b\xd18\xdaf\x8f\xe1\x04\xca\xe1$$\xb4-W=\xa9\x8bM\x91\xfe\xbb\xac\x85\x878\x918\x9b\xdd[%\xd5=\x10We!7*\x8a\x10\xe6U#`ݦA$WQ\x8c\x17\xe3[\x19\x8b\r\xf1\x99\xb3d\xe1?\x15Ǫ{\xf7U\xc7\xfa\xfeS\xff\xd4T\xf3\xe4hN\xb5\x18m\xd0e\x9d\xfc\x04\xbe\xcbO\b#s\x8cT\x984^L\xcc\x03\xf8~1\xf2\xdf\xc1f\xf4\xbfG|u\x0e\ny\xa8\xf3\xea\xaa\xd4\u05fcB\\Z\xf3\x02\xd0\xfa+^}\xb2\xedʇ֯:ɍ6x5>\x0e\xd5\xf8xd\xcc\xff\x02\xfdͳ\x17\xa9\xff\xa8\xf0\xffu\x9do\x86:\xdf\xfc\xff\xaf:o\xe0(\xc9\xff\xd6:S6\vnn\xafX_Q]\x8b\xb5\x1d/\xa7\xa2W\xe1\"3\xfeJ*\x18ru\t\x1f\xbe\xe0\x1a\xfb\x84p\x87p\xaf\xf0'\xa8i\xed\x90p%\xfc\xd2.\x90ȵ$_n\xbewv\xd5ں\xb6j\xb5y\xa1\xbdW\xae\xee\x87\xef\xe0\xfe\xfd\x8c\xc2\x17l\xd2\x11Xa\x823\x86\x19\xf0%\x9ap\bg|\xf8\xb6\xbe&\xfd\xbb\xb8\xe5\xe3j\xbcFΊT\x80\xb5\x1f\x1b͝\xe1\xf2\xd0\x0e8\x85\xed\xd6Ϭ_\x93S\x90q&7\n\x8c\xef{|\x92\xd31˚\xf4|V<\x9bK?N׃\xc2\xefx\xf5h+G\x9d\xb8\xeb\xc2U\xadL\xf8̅_\xf6q\xb1\x12/\xf8\xbc\xbf&\xeb\xaf\xf0\x18\xda\xfd\xacgx\xadFԁ\x01\xb6\xb9о\x99\xb9\xe8i5\xc2ڦ\xc56\xa6\x0fX\xaa\xaa\x8e\xa9\xeaM\x17\xd8[\xec\xa7Bz\xe1\xc2\t\xec\x03\xe7\u007f\xc5\xc6\xd67Y{\xfe1\xfaP\xa3\xf0ų\xd6\x16\xe3-8\xa5\x16ݠ\x1eu\xae\xb6\xc3Vx>'\x1c\xdb\x16D\x16\\\xf0Vk\xf9\xa1\x80\xec\x82%2\xa4W\xacb4\xbdZo[\r\\\xf7\xc8M\x9c_\x0e\xb5\xf0\x9cD[\xebaDž\xa1\n\x12\xf2\xb4*I!j\xe7TQU\x83\xaaE\xa2\xb3U$\x18r\xccP\x19!\x8a\xb1\x94\xa5(\xb5٨h\xb2\xf3*\xa19\x9b\x864;\x9f\xa2\xaa(\x13\x93\xeel4vR\x93ȢJSy[㷒\x149(k*\xbbY\x8d\x11[ӌ!\x81\x8bq\xea\xcf\xeeE,\xb8\x97\xa8½h`\xdd{\x9d\x90\x02Jw\x80\xc6R\xaa)\xca\"Uw\xf5\x1d\xa8r\x1a\x18\xe5\xe8\x13Q^\xcdځ\xbe]*e\x97[j*F\x03\xdd\x01-J\xb1\xaaT\x8c\x16\x8bQve\x90݁F\xb5\x00\xde\rj%C\xdc$\xef~\x96\xd5q?\xa5\xeaޏ\xdd\xe3b\xf7C\x9c\xe3/\x8b:\xf9\xb6\x10\x03\x9d<\x84&(\xb7>g\t\x88#9\xdb\x1f\x1b\xeb;V\\\xd1\x1c\xbd\xa2\xe9\u007f\x13\x0f\xf4\x8d?B\x96\a\x1e\x19\xef\v\xc4\xffF\xd7*\xba\xa3\xad\x14\x8f\xf5\x8d\xc5\xda6\xb8\xcbl\xae\x19\x80xhQ$\xb3\xad\b\x11\xe8\x01̦\xe7xb\xa2>#Vk\xae\x8b5KDG\b\xb7\xc0w\x87k\xfdL\xa8\x98\r\x90\xa0\xd10\x82$\x10\xef\r\x87\xc4!\x91}u\"K\x90\xa0,)\x0e\xdd?\x94\x8f\x0el\xc4hbS&;\xf7\xa9\xeb\u0605\xd6ύ`\xd0\xf8\xb9\xd63\x90\xca_\x17\f\xbdS\x14\xcd]\x9bI(\xa4\xbdM\x14\xdf\x19j>W8\xb2o\xae\xc4\xed\"B\x06\xa3w\xa0\xd3\xfbW\xf29\xb0\x19$^\f\x1e\xec\xa1(\xbe\xad\xd7JT]\x05\xc8L\x84mwn{\xec\xc4u\xbb\f\xbd_\xd3\xc6fw\xbe\x8a\x90\x1bw̍\r\x98V\xe8m\x86\x9d1\xfbv\x91\xa7\xe7\xee\xdavⱆ\xc6JЁ\xebw\xec:N\xc8Ѐ\x99\xb1\x8d\xb7\x85,\xb3o\x87\xcf\xef\ab,\xe6\xb8\x04\xcci\xad\xdc8\x92\xf5\x164L\xa6\x17H\xaf\x99\xab]\xfc\xba\xac\aICB|!\xb9б#\x8d\xb5\xa0v!2\xdf<\xcd(\b\x89\x9dE\x04\x98\vl>\xde\tw\xd7i\x17\x90ƨ\xf1\xb8\xf6\xe6_\x90{\x9b\xd6Z\x0e]u\x05\xb5\xc9\t\x80\xb7s}\xea\xc1*\xddu\x04\xaf\x91\xbb\xc6\xe76]e\x8b\xc6F\x95\x92\xf0#W\x1e\xdf\xdd\xe7\xb5W\xf3o`;0>W\xda>\xa6\xaf*@6\x0f\xef\x9a\xd2u\xe5\xe8];\xfa\xbc\xf6\xbf?c\x0e\f\xe76\x16;\xb2\xa1\xae!\xd6\xe6\x9fam\x9eG\x9fO\x0f\x1a\xc2\xe7\xc1\x00\xb4>\xe1z\xa3\x8b~\u007f+\xf0\xac8\xfd\xc0\x93\x0fܸ7mY\xf7YVzj\xa8\x1bm\x88zH\xfe4z{X\xfd֩#\x0faM\xf5\xaf\xf4O\xb1ZE\x03+\x81h\xab\x1e\xbfD]i7\xd4#\xe75\x83\x87O\xe9\xba\xe7\xc3\xf7+#\xcd_UM\x87,\xb7\x1f\x89U8J\xa9\xaff\xad\x87\xf5\xf3\x87\u007f\x9b\xc6hg\xc58\xae;\xf4\x9f\xcfAdW\xd2\xd1_\x18\xfd)\x97\x00r\v\xb40\x18F\x06\xf5\x03D\xb8aW\xabg\f\x8c\xcd\xed\xb8\x91\x90W\xed\x9c\x1dӴ~\xdd\xd8u݉\xc7\xdeE\x9enw\x85\x81!B\x8e\xef\xdaq\xfd\x00e\xa7\xb5\xc6c\u007f\xf1\x98\xe0\xc3\xc5\x1aC\xbd\xc4>\x0f)\x04\xb9\x13\xd6!\xb8\xa8\xdeES\x01\xe9#\xf7˧\xbe\xad'v\xe2ACT\x84\x94)y&*_K\x15\x062\xcdS\x99\x81B\xaag c'J\xa9Pn4\xa8\xab\xfdS\xaa\x9a*%\xec\xcc@\xf3\xffB\xed\xd8\x12Q\xe4ӲB\xb4\xe9\xa9\xe9\"\xe6\x1c\x94\xfb\xbb٤\x9f\xe9\xee\x97\x13\x85\xcc@\xb4'U\x1a\xcdu\xc5ũ\xfe`\xb8\x94\xea\x89\x0ed\nW\xa1\x1a\xec>\x99R9\x9e\xcd.p\x95\xa0ܒ\vq\xfek\x92۵t\xb8\x9aT\x8a\x9d\fX܋$J\xe397\x18\a%g\x19\xedX\x02\x96\"4\x9a#\xa7\xbd\x03¶\xcd\x154\x89\xd8N\x16\x8ei\xdaÌ\xf2e\xb9\\U@\xe6l\xdeK\xa7c\xdb\xd1\xc4bal\xd1-\xc7uA\xcd\xf3_\xc28\xaf\x01\xb4\xf9\xe9\ad\xec6\xaa]\"V\xc6O\xccc\xeb\xd6\x108)(V\vl\x8a\xaf\x92_\x8c\xe8\xda\x1d\xba>b\xf7\xdb\xd3\xf6\xcf0\xdd\xfc\xd5\x03VDL\\\x1d3>`\xb0__\x9f\x95m\x90\x89\x11]\xbfCc\xe5X\xb1\xfe4\xa6\x9b\xbfJ\x88\x11끬[\xee\xe4X#k\xf5q;\x19\xaf>\x94\xb5\x98@\x1c\xfedd9ʸ\x82,,5\xff\xf1N+D\x02\xe4\xefm{\xe3\xd2F\xf6tr\x9c\xe5\x05HȺ\x93\xad/\xfb1\xd3\xf6\xdd\xeb+\x8c\x96\xe7\\\xe4Z\xbc\a\xedEm\xa2\n\xb4\x10\x11/\xdc\xf7%\xbf\xf0\xee\xf8\xf9\xcb/\xfbF\xfe\xceQ\xf6\x18\xa5\x9e\u007fܹ\t\xc1\xfb\xee5s\xe4\x1e\xef\xfe\xfd\x87Y\x89\xba\xc2\x1e:zg\xfe\xf1\xc4M\xa6\xe9\x98\xd6=\x16\xe7\xd5\x03\xe7\xff\xb3\xf0\xcf\xec\x9b3R\\\xaft\x06*\a:\xf1\xc4\b\x1b\"Gب;\u0086È5eݔa\x87\xec(CF,\v\xe6~a?\x9b\x83*x=\x0f06\xc9#\x8c\xe5\x10g\xf1m\xfe⏯\xbe\x19\xac\x15\xd8\xf5_a׳\xa9\xbf\x88t+CTN'\xd0z\xb2B6\xb1;(\x92\xa4\xb0{4\xbfkY\xcf\xe3=\x14\xcbRZ7q\xdf\xe3,{\x8f\x0fC=\xa2\x85\xce \xf4ltU\x8f\xad~4Iy5\x83\xbb\xb6\xd6-\xe8˵ٳ\xe8\xca#\xcaH\xc7\xd4]\xf7&\x1b\x0fv\x84\x03\xbd\xb4\xf0\x12\x18\xf5\x01O\x9aE\x98\xa3o\xbd\x15\x88\xc8\"\xce\xe7\x90\xce\\(\xff\xe4\xcb(\xe3\xcf\xf7\xf9\x06\xc51֢\xd0\x19\xee\x04eA\xeck\xfa\xb4\a-\x99m\x1bmn\xbe4Ybc\xee3h6\xb6[\xfd\xb4\xca\xfe\xd8,\xdeZс\xf9`z\x12\xad\xcan\x88\xa9jL\x15\xf8\xf7f\xfd\xb4\x02H\x9a\x84O3-\xd8\x03\xdfǯ\x90\a\xbc\xe6\xfde+A\x12\xfeo\xd0\xf1A\xbco\xf8e\xf6\rA\xc6\x00Q\x8a\xda]\xb1\xda\xf1A\xe3߿\xe0mv\xae}h\xa7\xdd!\x18>\xb8\x92!\x1ao\x03\xac\xb96\xd9.\xaa\xfc\xbbwi\xaaz\x97\xa6ݥ\xaa\xda.\xaba\xb9\x18\xf2o\xb9;\xa8@\xae\x12\xbc\xdbZm\xcf\xc8\xee\xeby\xc3#^\x1d\xb7\xe3E\x80:\xd6Wȉ57\x98Z\xf7I\xab\xefٲ\xca\x04GGVQ\xd6\x1c\xaak8\xfe\xfe5\xb7t5\x12\xbf\xe9\x9e5W*V\xaf\xf2\x18\x80\x00\xcc\xebZ\xa1k\xeb\xde\xe0\x8au\u07be\xed\xa3\x98\xc1yb-\xfe(\x9f\x82èN\x88v \x91\xbaQ\xcf+\x00\x8d\xec\t\x10д\xf3\x14\xc4\xe48\x86=\xfe\x9f\xd9\x17u(\xfd%\x8c\x81%\x9d.y]\x92\xbb\xeb\xaf,B\xfc\x0e\xdbX\x82\x01\xf1K\xcaJ\xc6\xe8?\xf7\x99\x99\xceXڅu\xe2;\x14\xf2~cq\x8e\x1d\xd8\x11\xcd\xe1\x18\f\xb2\xec\xd7t\xbdWӿ\x96\x05\xe6\xd0\x1f\xc0\xa1/\x03\xe7\xb4^\x1d\xce\xe1\xe8ty\xa0\u007ffm\xf1\x0e6\x16\a\x05!\\u\x83r\xb4\xc7\x06\xab\x81\xe2\x8b\xf1\xd1\x1e&\xb6ANf\xccyJ\xe7\x19\x19zܰ9\ff\xf3q/\x8f$C\x86=\xc6j4\xcf\xdep\x9e=q\xcc~'\x1auv\xe4\xb5|k\x97\x10\x03\x12\xf8\xc1\x8c\xe8\xe3E&\xb9\x04\xceqY\x10\xde\xddې\x8a\x10\xb5WL\xf5\x8ct\xef\xad6OM\x1f\xae\r\\;7\xb4'\x9e\xec\xe9\x9fz;\xd5̭hڻ\xd5\xd4\xe8-\xa6\xf9\x13\xa5\xaf\x96\xa9\xee=<=\xba'\xa8Hs\xd7\x0e\xf5\x85\xa6\xfa#7\xd3\x18\"R,Ơ\xcc+\xaaKG\x0ft]C֯\xcb\xef\xf2\x1a\xdcҪ\xd2\xfau9\x10\xe3\xa5\xdc\x1a\xb5\xed\x9c\x00\xb3Gb#\xc0ds\xb5\x83\xa8\xb4N\xa1\\pr\xf5B\x85\x16\xe2\x15\x90\xd8I9I͗gI\x85Qx\xf2\x0fW\u07b8clG\xf3\x1fw,\xcd\xef\xb8\xf1\xc6\xd7\x11\x85\xec\"\xc9G؊y\xdb\xebn\xfc\x11;\x82ȣ\xcb\xcb\xd9_\x8b\x92(\x9co~U\x14\xe7~}^\x94\x04\xd7\xcf\xee\xcbd\ab \x01g\xeeͧ^\\JX\xa1\xb2\xb7'\x9bNj1\xed\xa4a\x85\x1a\x87\x15\t`^\xben؍\x905\xb5\xa8i\x8bf\x0f\t\xc9SJ\x90u\x86\xa7{Z\xbe{;\x18m\xec\xc25v\v\xe1\x13mn\xc3.}t\xc8&\xb8\x9dm|\x1d\xc0m$\xe50\xbb\x9d\x01O!\xbb\xcd\x1e\b\xe8\x14T\xa6d\x12\xea1\x17\x81\xa3\"n\xbb|\x05֭BG4\x9e\x12\xea \xd7\xfa\xd0L\x92\x9b\xdfp%B\xe9\rfz\x06\xc6\xda\xf1\xbc٘\xbbb\x16L(\x8d\xf9\xcc\xc0`fW:\x86\xdah\xb6\xd9\xd9\xf0\xd6\t_\xc6\xf9\n\xf4\x03\x823\xa2\xba\x16<\xb6\x02(9.\xd7\xfbdrK*o\x06\xa4\xc5\xe5E)`\xe6S[\x924\x15C\xa8\x8eZ\xe1X_5\x91\xef\n\x03\xa4o\xb8+\x9f\xa8\xf6\x1d+\x18\xe7\xfcx5\xac}\x16\x90\x1f\xf74\x99\x1coiu\xe0!\x1e\xd6ѥP\tN\x03j\x15\x95\x9f\a\xa3q\xd7+g\xd5>\x06\xe0\xc7G\xb7N\xb5\xacڧ\xb6\x1eE\x11\xf3\xdc\xf8\xc6\xc3:=\x89\xb1\xa9.7\xcd˽\x1f\x11X/\x9d;\xae\xe7\xdb\xd2\xe8\xbc~\xf3v\x94\xb0\fT\x0e\xc8\xea\xfe)\x88\xc6<տ\f\xeb.-\xa4eݟ\x87\x83\xc1ާ\x81\xf2H\a)٪ \xd0\x1e\xd2q=\x8c\x1e\xfca\x9c\xd9=\xa4\x84t\xec8\xae\x04NY\xcfZ\xec\xafS5\xdc\xcc\"\xbb\u007f\x05\x99\xb2,\xb6\xec\xf3bB\x80\xadI\x8f0,L\xa0\xe6f\xbbp\x89\x8b\x94\xdd\xf2\xb5\xf7\xe2\x9bpG3\x8cH\xd4\x19\xc1\xa0ºM\x15\\{\xbd\xba)ռ\x1agK\xe3X\x82,hZC\xd3B\x00|\xa0\x89rP\xa5\xb6FB\xb0\xea{\t\xe3G\x87\x1a\xc5\xee\xeeb\xe3ylE\xb2Ȓ\x8dⲆ\n\xde:\x91Ъ\u0090\xb5cg\xfd\U000666e7\xbb\x8b\xcb\xc5\xee\xf3\x02\xdaZ_\xcf\xeep\xb6\xd1]D^\x1a\xe2\t\xbc\x89|\x8b\xad\x13Xc\x16ku\x87\xd7\x1d\x042h\t\xe3\x06\x17pH\xcdC\xb2\x02ZD\xac`t\xfe\xfe\xf7F\xe5\xa4\x12e\xb3\x00\xf9\x90\"ʭx\x02\x01\xf2\xaa\x9e\xf0\xb4MǴ\xe8\xc9\xe8\x8dۨ9s\x94%\xb41j?\"\a\x94\x94e\x90ob$\x81\xe6\xcf\xfb\x8a\x13fx1\xa2$\xe5\xe8\xf2R\xfb[.\xb9\xdfr\xf0\x95YP\xf8-\x00>\xf1\x9b\xf5\xfe\xeb)\xfcA>\xf7c6?\xfd\x11 $Fqu\x9c\x91]\xd5\xc5\f\x19\x91\xcb\ue524\x9d\xb6ғ\xf3\xfb&2c\x053.\xebl\xf4dFj\xf9\xb4uZ#\xe2\xe3F 8O\xf4\xae\rsCC\x97wi\xb6\xd5;Q\xea\x89\x06\x14r,\x180\x1e\xa7\t>\x06C\xe7\xbf@Ρ\u007f\x0e\x1b\xe3\x18\xb0\xc1\x96\xa8Z\x1e\x91\xaa\x933\x12\x12(i\x861\xd0\xe4\xbbv(3\xb2ec:\x12\x19\xd8\xdf(K\n\xd5\xd5\x15F\xa5\"{\x8f\x8b\xa7\xc9mJ28{\xd7e\xdb6\x98\x9a\x16\xdev\xddC\xbbT\xd3Ш8/\xcb͝ŏܶ\xa7#^\xab\u007fl\xb4\xda\xd376X\x1e;Ŧ~r\xaaM\xac\xfe\x10\a\xc7\x19\xab\t\xbej\xbb\u007f\xd3\xf0\xf0\xd9K\x04\x18\xb7S\x12F\x849\x8e\x84\x8d\x1a \n\xcf\x05-Q\x11C\t\xa3S\xeed\xbd6>B<`\xb4\x9a\atW\x1b\x11\xcb%\x15\x04\xcf\xf1\x98S\x01\xa1@\x1b+\xce\xf3=\xf8\xf8\xcf?^\xd6#\xcd\xed\x11\xbdL\xc0\x88#\x1a\xd0u]$R\xe8\aX\xe9m\x1c\xf3\xda!D\xa6\xb2\x11\x91\xb6t\x15\xf4W\xeb\xce>#\f\xc3BQG\xf8\xf9\xe5\x8f\xdf{`[0\xb8\xed\xc0\xbd\xa0:\fD\xd54\x91D3\xd0<\xeb\xb3\x04\xae*\x86\xa6\x8a\x92\xae?-\x16\xbb\xc2\xc1`\xb8'\xfa`\x10\xccm\u007fځ\x8d\r8\xeb\x12\xeaD\x84h.\x9e\xebco\xd8\xc2p\xc1\xbaW={\xa5|\xb9\x13\uea3aD\x1a\xcd\x15r*\x1d\xe3\xa6\x1f\xd0¬\x8dYW\x8e\xed\xf3\x1c\xee\xc1ϞdW\xeefk}\xae\x11\xf2\x12\x88\x0e\x8bxH>^\x93\xc2ʠ\xef\"\xa8Sd\x1a}\xc9Bս\xfc\x93\xee\xad\xd6\v\xfb\n\xcb\xe8Jv\xf7\xde*\xd2Gv2\x14\x12Z<\x13\xd7{\xad3*a\xfd}!\x17\xc3\x0e]ؾm\xdbt\xbd_\xd7\xe7\xe6p\xd7qԩ\"k\xfet\xbd2\xee\x11ҭ\xbf%\xdf\"\u007f\xccְe\x88Aѹ\xb2\x841JV\xadE\x81r)\xc7s\xdeB\xb1\xf7\xb8evY䫫s\xe2\xc7{\xbd\xf5c\xee\xb8eu\x99\xe4\xfa\xd59\x82\x9fw\x8e\x02ݬ\xaf\xf3,\xafN\xdc\xffޭ\xd4__\xd3~\xdc5\xa6\x992M\x9eAM\xd5\xcby\xeb5\xed\xc7aƭ\x90\xa1\x9a\xb4\x9d\xe3\xb7\xcfʲQ6\x04֜\x0eGT,\xab\x14t\xf8\x10\x17\x92\xd1\x10\x8c\x12ɾ\u007f\xa9\\\xac\x95i\x82\xd6Uv\xa2N\x16\xa3\xb9\xdd7ܰ;\x1b\xeb\t\xa7k\xb5t\xa8'\x9a\xdd\xfd\xec\xeel\xb4'\x94\xaeջ\xc3\xcd\xf3]]\xbd\x89\xf8\xbftue\xe2\x89\xc3\xe5ޝ;{\xcbv.\xbd\xfd?n\xef\xce\x05K\x19vX\xb2s\xddp\x98\x8f\xec\xdfol\xdbv\x8am\xe7\xc0\xb1Qk\xd5K\x16\f\xd6W \x8a%Ԑ\xf5\x99\xa8J\xcb5\a0\x1f\x1d\x05\x027+lDC\xfd \x86q\x91e\xabE\aP \x1d\x98\x82\xbe'\x0e\x1c\xa8\xde<\xb2\x91\\6\xdb\xfcȁ\xfa~\x83L\x8f|pR\xbe\xfe}#S\xe2e\xb3\xe4Z\xc8j~\x1d\xb3\x9e\x81\xa2\xe43\xfb\xeb\a\x86\xfeld\xe7\xf5\xf2d\xfe\xc0\x80\xb8\xe3wG>8{\x998\xb4*\x83\xfc\x9fP\f\xe5c\x1d\xf6m\x8e\xdf\xc2ͣ.5\x17+\xcf;\xe6\x16n\xb7\"\xd1\xe0R@\x17T\x9f/%˘u%f\x9dn\xf9\r(\xad\xf1\xb8Y\xb8L\xb8Kx\x9d\xf0n\xd6[\xca-\xe3dWK麺z6\x8e\xe8\\\xd2b\xc7bN\xa1\xe6A72\xde\xdbǣ\xcd\xfa\x14x\xe5\x92'T\xaf\xacr\xa1\x85\x90,\x85\xba\xeb\xdfw\xa1\xeb\xf7\xe4\x89N7&5-\xc9\xf8\b\xd8md\xcbƼ\xc1\x8d\x05\x96\xb8\xbd\xc0g]\xbd\x84\x83l\xdd\xdd]\xa6\x9aR\xbb\xd4\x1a\xfb\xa5T\xb3Kz\xe3(\x10\xe1{Y\xa1\x15^h\x89\xea箔$\xaag\xdd{\x02צSI\xba\x12Y\xbc\xad\xb3\xb3[1\xf1k\xd9H\xa0\xad\x9e![\x9c\xff{Wܰ7s !\xf8m\xb6\x8d\xf8\xa5\xf3\x18\xb6\xf2\x0fהu\xf9\xd9\x06\xfa\xb5WX\xeb\x02x\x89\xf7b0u'\x1c\x8aAb\xd9d\x03sP\xbcPm\xaf0\xddV\xd5v\r\x986\x02\x12\xdaf)w\x9b(Z\"\x15o\xe8\x9eZ\x99\"Ȅ6Q'\xb3\\\xfd\xed\xbc\x146a\xf60\xc3R\xef\x96\xdbX!K\x14o\x9c\x1e\xdc\x16\x1e\x1a\n_\xe3\v\x8c\x99m}w\xbe\x8e\n2:ᰱЋ\xbe\xf7\x83l\x86\xa80\xdeq3\xe3\x1e\xc1o\x10\xa2\x9a_&\x1c\x15\xae\x12\xae\x13\x8e\v'\x84[\x85;X_\xb9\x97\xf5\x96\a\x05\x8cxF+q\f\xe6\x1de\xfb2\xfba\x84\\\xf6\x83\xbd\xe2\x06M\x067\xde(\xdb\x13<ãπ\xf6\x1c\xa2\xb7Q\x96\xc6{\xb0}\xd9M\xc39(\x0f\xc1\xdc\xcal\x0f\x9as\xc8/\xc3=\xe1Z\xb6w\xe0z\xa1\x01\bc\xec?\xec\xc9\x12\xdb6WXkC8\x9a%\xd84!\v3\x1b\xa4\xe1\xe6\xe2\x89F\xe3\xbc\xd0\xe0\u05ed\xb4s\xd9\xfd\x9axq\xeb\x16\xac\xd4\x12d\xbb\x17\xac\xb8{\x82\xb7\xc6\u007f+\r_-xE\xf0\xf4\nO\xe2\xfd\x1b\xee\x19_ܩ \x01\xe5V[U\xa0\xd61Hr\x17\x1f\x85\x04\x91\x93\xdc\xe8\r\x8b\xa0\xc8\xdb\xd3\xfc\xfe\x1e\x12\r,C\xe8kmL\x83\x9d\x0f$\t\xfa\xbe\xa2|\xff\xfb\x8a\x12\x88\x8e\xb9\xa7\xd9n\xac\xcd\xd3.\xa3\xad\xd7,Ư\xc7\xc1\a\x15\xd8\xec\x19\x92Π\xe2\x1e\x94\xfbA\x14\xea2b>\xe9\xe1\n\xaez\x03ƪR\xdd\x16\xad\xf7\x1c|MsŊY\x1b\xcdP\x02\xac\u0083\x96\xca\x18Րe1\x86\xbc\xbf]\xfb\xd3RX\u007f\x84\x8d\xe4\xb4,[\x8b\xf3+\xc1@\x8f\xa3\xf6(]\x81\tS13AU\x11\xc5?\xb4\xe0\xa2\xe6\x9f\xfb#\xbb\n\xadq\xb5\xec\x8e+\x17!\x15\x86\x94\x0f\xa2\x8e\x11\xa7v\xe4=gUMoNto9\xb2\xa5;х#5y:\x19j)8\xf9\x90:k\x8fv\x0fn\xd92\xd8=j\xe3s\x95\xf9\xc1\xc1y\xc5\x03\x97l\xd7F\xf2\xf15\x0e\xac\xb7\x04\x97\xb3\x89\xae\xfe\xba\x89ַ\x85U\vh\xb3*3.5p\x03\x11p\xba\x90p\xf5\xcd\x0eq\x10@\xf2>\xdf\xe7\xfe8\x15oj\x9e\xb9I\xa4=\x96\xa1&\f\x91DS\x9aR6E)\x9dM3ް\xach\x89\xb0\xac\x18\tհ\xc8`\xfc\xb7\xdb\xe5`\u007f\xdf@ \x1e\x16E'\xbb(S\x92\xd8\xe3$b\x0f\x83\xa0.\x17\xeeIXdk\xc0\xf8Ԡb\x11\xeb\xf6\xbaB\xe4\xc1\xa7\xf4\x96\xee\xcd\xe3-\x04%\x17ΉB\x93\xbd\u007fC\xf4\xfc\xe2D\x9d\x9d3жX(\x96\x18\xdb̓\xafPp\xf3)\xf9\x15\v#\xa4\xeey\xe8\x92sc\xaf\xc9\u007foj\xf6\xa9\xd9\xd1\xe4/TsCO\xdf\x15jX\xad\xaa\xf4D\xa1G\x8f\x93\x19l\xb4dz\xb1QVfv\xf4M\x8f$\"=)%\xddw\x82\xb22a\xf5\x8aBϡ\xfcG1\x9c\xbc \xa8\xe7_\xc2\xd8\xf1_du\x88\bi\xb6>\x9a\x80\xe8 u6\xa2F\b\x8c\xadD\x19|>a!P\x82\xe8>\xe8\x05\x9ap\\_\xcf\x19\b^\xcc#\xcdע\x191\x9e&q\xb0ۮ\x95\xfe\xdb\xf0\x91`0\xa7\x87\x17\xb6\xc7\xfbf\xae\xeb\n\xee\xdaQ\xf8n}\x8cԋc\x95\xc9ɷ\xec\xbblC\xbf\x95\xd9\xf9\xae\x19{\xf4\xe0=o﹦Գ\xb7\xcb\xf8\xb3\xb1\xbd\x03C\xc3D-\u007f\xa7gq28\x1a\xddugv\xe2`\xe6\xf8\xec\xa1S\xa5\xde\xef\xa8ݵ\x87ʶ:\xf1\xf6\xcb\xfb\t1\xc67\xc4S\x83\x91\x81\xa3\x97ƺ\xf2\xf1\xe0(ygx\xfbuU\"\x13{Ǜ\xa1\xcd5\x94S\x03O\xb1\x89\x8d\x8e=¥\u0095\xc2\xf5\xc2-\u009d\x9e4x\x15d\x97k\"\xef\xfa}\\(\xbdZꑸ\xc0\xf1\xea|\xf2\xeeT\x94\xe3\xca%\x83\x1cV.\xc9\xc8<\xe3\xae\xfdۿA\xf3#\xddgJ\xedO\xfb\r\xb6\xc9|4p:\x11{M(\x1e\xe3\xe0s\xb9\x17`\x14>\xaeiO\xc3\xfeiM{\xdc=\xde\x1dh\xfeW\xbc\xcbQ\xdc>\xe2Ko\xf0\xd9Kߋ[\x81˃\\\x9c[\x1d9`\xcf\xde]\b{Q\xec\xabm\xfd\x17\xa0My\xaf\xab\xaez\xfd\xd6qja!U\x12\x1b\xa0o]h\x9e%\xc2\xce6ڈ\xfdj_\x1a\xc0[\x9a+\xa5\x14\x11J\xa9\x95T\t\xc5+\xec\xf7<\x9e\xbd\x14\xb7\xaf\xf6\xa5;lju\xec\xb7\x02\x19sx\xe4c\x87\xf1ĵq \x024\xe7\xe9gH\x93\xfc\x8fw\x98\x11[\xfa\xd1\xff`\xb4\xa1+t\xdcs\x99#\x94\xaehA#\xb7B\x1f\x0fF\xce\"T\x96?\x16BL\xd8 \xcc\xf8p\xcd=\x89L\xbc\xeeT\x8b\xfe\x03O\xa3@\xd7+)\x8e\xb5\x18)\xb6.j\x9eq\x13\xf3-\x91\xbbwj\x99\xaf\xc6`\xb3\x10\x8f/4Z)L4:϶\xdb\x00\xb0\x8ezx\x14\x94\xb5\xb1\x8eݙ\x9d\xad0PW~\x01\x88.\xbf\xdcg>\x1d[\x8e\xa5W\x96\xb2\xda\x14\x9b\xa7!F\x00\xeeH\xc3o}\x8c*\x92\xb1l6\xfb\xa2\xaf\x886\xe5\xc3\xce4\xd0b\xa1\x1de(\x823\x10#k+\x97\xdfz\xeb'n\xbde\xe8pma\x81\xac\xec\xff\xa3M\xd7\xdesϵ\x9b\xfe\xa8\xf9\x8e\xea\xc0\xd4\xcd7O\r\xb8|\xcc.\xf6^=B\x11\xe4sE\x1eM\x95\x8d\xd72\xdeͅ\x9cdT\b\xe2Px\xc83\n\xfa>\x80\xe7\xa78\xd8\x1d*\xf7\xf4M\xe7\xdfLU\x10\xa2\x8f\f7\xc4@\x0fd4_\x04ǐ¥[\x83\xdd!+B\xad\xf7\x94\xaf鎏\u007f\xde\b\xbew\x84\x15;;273\x94\x8b\xc5\xc7\u007fg\x11^oqx\xd35\t\xdd\xda\x10\xee\x90u\xc7Q\x9b\xb0\xb6\xad\x91\xddn\xd9%tH\xd8\x12u\xbf\xb4\x1b\xac\x13j\xd8\xed_\x85\x16pm\xbc+\xb4`\xe8\xb0RHb\u007f\xff!FoiC]\xb9\xb2\x9bv}\x8a\xacFUa\xab\xb0\x1fl\xfdׯ\xd9j\xf2\xd5ڻ5\x8e\xbe\f\x8f\xc6\xd5o\xf1\t\xdf\x10\xe6\u007f\x0f\xe1\xf6\xe4:\x8e\x8dk^\xad\xf9\xb8oD\xf3\xedS\xb8m~\x10\xf5#'}[7\xde4\xe2\xe1\x81\f\xa8\x82ъ\xf6\xb25xKj\xeaŬR\xd0\xfd\xbb\x9e\xa8U\xa1o\xa8\t\x98\xb9\xb8Q4\xe3\x15\xd9*\x19歾5\xe4ڽv5\x9f\xfe\xbf\x90\xe4\xfe>\xfaI6?\x1a\xa1\x8aeF\x92\xf5#{\xa6w(\xd9Q;\xed\x04d\x1a\xa1)c\xa2~vj\xdcH\x91\xba\x8f\xb0}\x8aSk\fF\xfa\x12\x8e\xf2\x15$\xb4\xbbЯ\xf2\\7\xfb\xf2\xaa\x11\xeb\xea\xcd&\xba\nR\"`\xb3O\xdbm*j&z\xd5Uь\xaa\xf4\xfa\x88\x9e\x8a\x17~\xbb\x83חѧ\xfe+\xe4+\xc24\xfb\xee\xbb\xc0w%>#\xd5\xc1I\xd8\rϔ\xf3\x823\xd92e\x8b@\x88\xa6\x93\xe1\xa1\xd1\xf2\xac%r\xae%j\xb4V/$깄S\xa9I\xb9R\xb9\xa0Jvvnxx.kKĠY[\x14E2\xc56v\x96\x1aD42\x03\xfbLJ\xf2\x0f\x06\xe4l\xf7\xc0\xc60\x16\t\x12\"5\x9fu\x8b\xfc]_z)\xfd\xc7\xcd_\xe9֏\xad\x97\x88\xa2\x05~d\x8d\xc4G\xb7_\xd2\xd3s\xc9\xf6\xd185m\xcd04ۤ\x91\xfeٍ\x8d\xaeD\x8f%\x86\xa3}WN\xa5\xd8\x19\xd5b/i\x92\xaeX2y2\x14\n5τ@\x9a\r\xe3\xees\x18w0\xcez\xf8\x16F\v\xb8i\xbcSg\x8cRF\xe4\x16\xee%\xe4\xef0\xc2i\xb9\xe4\x0f>\xe8D\x13\x889ъ\xc6ɦ\x02\xa2\xca3\xb9-\xb9-\x12\x00\xadL\x8b\xaa\xfaa\xa7ɶ\u007fM\xb6\x0f\xf7\f*\xda\xd0\xd5W\xa0\x82ݡ7\f\xa7\xbf\xafZb\xf3\xb3h\xb2\xf7\x89eY\xa3$v\x89\xa7\x1e\xc5\xedݾ\xf4g|wQS\xcd\x1f\xfbN\t\x1d\xba\xb7B\af\x1f\u007f\xb3\x8e7\xa9\xe0\x1b\xf2\x85)Yd\xed\xbe\xc0~\ue3ac`\xfe\u007f9\xa7iǎi\x1a\xdfyv\xd4\r\x8c\u007f\xde-\x8cpd\xeaU߀\xf1d-\x1f\xf9N\xefr\xaa&*\xd1x\xc1\xfdH~ \x81S+;QY\xde\xd3\xe9P.\x8b\x86\xf6\aK(\x14\xef\x9ci\x17\x16\x96Qs\xfeL\x80r7\xf2\x00\r\x90\xe5\x05\b\xb1\xe8\xf3\xe7\x8f#\xff\xb8\xe37q5ы|\xfb\x8b\xf1\t\x9c\xdb\xd9\xddٳ\xb5\xd3\xf0w!\x96\xa7\xf9ӎN\xfe\xac\x87u \xfbh)D\xb8n =]ˈ;\x85\xf5\x91r\xfd \xe9J\xb5\x10ϱ\x1fv\xa8\xc5F\x03-\xab\x96\xb8\x94\x8dO\xd9<-\x82?H\xf3\xe3\xcbdiy\x05\x99uNN!\xd1hO\xca\xfe$\xfc\xe3u\xfd\xb1\xb8\x9d\xd1\x06\x1e/\x9c\xa3Q\u0093\xb1\x1e\x8e˷\xd6\xc1\x05\x13A\xc03\xc4\x05\x1fCˏ\xb9eF\xcc\xff黔\x8e\xdesX˫_\xbbL/(\xf49\x95\x8e\x92edUa\xf3AΨf\x9e\xa3JA\xbf\xec\x9eQZ?\xcc6\xf4\xbbT\xcd\xfbq\xecs`\xaf\x16\xad\xe6\xdaTӥD\x1d\xfbB}\x15\xff\x83\xe1\xe7!&\xf5}\x9av\x9f\xfb;\xd3\x06\x95\a\xe5\xc02\x8eA\xf6m\xbc\xdfJ[\xf4\xb7\xdaF\xa4\v\xe45k\xe4\xe3-\xbf\x9e\xfaE(%\xc7\xfa\xe7\x8fռZ\xad\x9eK|\x8fnf\xc9\x02\xd6\xed\x1b\x9d˓V̪\xaf\xb0Q\x8f\xf1\x84^NT\xa5\xb2\xeb\xee\xd1\xcb]\xef*<0;\xf7\x05\x13]\xdeQ\\/\xe6\x12\xeb.\x0fk\xda;\x1416!\xc7\xe4\xf4M\x90\xfd@\x02\xd3\xfbp\x18\x9f\x9d\x1b\xf1u4\x1e\x8b\xe9\x1c\xeb\x8fK\xac%\xe5\xfe\xe3\xba\x0e\xfe\xcdC\xb0?/\xe08\x16:\xc6\xc0%\xe8\xdd{\xad\xef-\x90e(\xf0\x1e\xe6\rJ^\xf9U\xe9B\xae-\x0fvQY\x10q\xc9c\x95\xbc}\xbdZ.\xc4y`\xae\xb1\xa9\xf9\xa9%\x90,\xb1^\x80\x94\x8eo\x9b\xec7\xc5\xfd\x1b\x86b\xf6\rvs\x88\aJ\xe2h\x92K7\f-`[\x80\xf8\x0e~K\xdc\xfc\xc9\xff\xc7\x17\x93\xec\xd2\xd8m\x8b\xbe\xb8I\x9f\xb6n\xf0\xd99r\xfc\xc5\x02\xea\xe2\x0e\bWvXqU$Tܻ\xc2϶v5&\xad\xeam0䉯\xac\xaf\xa8㻝x\x1f\x90w\xadw\xc3\b\xdb\xf5\xf5\xf6\xb0-\xb6\x80\xeb\xf0\xb1p\x9ah\xa9\f\x9c\x9af\x9bcXօ\xff z\xf7\xd1\xf1\x8c\xa6eJs\xb1hqF\xd3f\xcc\xe6\v\xa8]M\xc7\x1a\xb14\xa32d.\xb21\a%\x86\xba\x06\xb6α\x02C?\xe7\x97\n\xe2\xf9_\x9f\xff\x82(\x93\xaf\v\xbd u\x88\xd6\x1d\xda\x19\xa0\xacCv]\xae\xbb\x01\xccx 3\t\xed\xbdDn\xf7\xe5\xfcY\xe3\xe1\xcft\x97\x1as(\xa0\xdeF\xe5\xee\xd4\x14J\x97\xeb\xc3|\xff\x12\x17*\x0f_\xa2\xb2\x19H\t?\x1c\xe6\xfb\x8d\xc3\\\xfaL\xc2[\x1f\xfeӴB\xb7a\xb1\xb9F\xa9\xbb{\n\xc5\xd1\xf5\x11\xdc+\xef\xe5\xb2\xea\xe1=\n\xbbN\x85\xeb\x15\xd8O\rs\x918_\x9f\xac\x88oa\xefb\"\xaa\xf1\b\xd2>7nW\xb5\xc6VZq\x90\x1b\x8e\x88e\xf6U\x84\x16\xe1\xa3.-\xac\xddp\xdfU:Q\xa5\xe6\x19I\xd1\xc9(\xdb\\5\x9d\xa9\x0f\xa4\x15E\x12{\x0f#!dtq\xe7sH\x1c\xd9!\x11\xf6ob\f\xbd\xb4\xe98\xfb\xed\x8f\xf7\x8d\xf7H*\xb9\x15i!\x90ƝH\x1f\xe1\x90۱B\xdd\b\xf9\x1azڀ-s\x01#\x1aΒ\xea\x1a\xf5\x80\xb7\x9f!\xe4'\x85t\xf3\x86+h̦W\fO`kL\xf8\xf6\xf0ڕ\x91\xee\xfd\xe4\xc9ܥ问\xa0v\x8c^q\xe3H\x05\x1bpb\xcd>\xad\xa2=\xdfK\xe7\xff\x92\xfc\x8c|\x9aͿ].\xea3|o\xf0\xb1l\xbb\x02\xd7˔\xfcT\x81\xe65\xff%38\xdaۭf~aⱶ\xf3\xe0{\x88\xaa\xba\xa7\xfa\xb2\x97f^`\x95\xc9+\xca\xcfw\x1c|O˞a\ty\x10\xc0B\x06\r\xb6\x10\xed\xf0\xe7s\t\x05\xe3DV\xd3er\x81r\xbbq\xd8C\x04\xce1\xc6\xf5\xb6\xa7Jr\xcc\u007fb\x893H\x887|na\xa1\xe9ST\xad>\xe7\xa7g&J\xf5\xb7\xbac\x9b\x93(\xae\xadr\xd3^~\xb5\xce\xd2\xc0\xaa\xb8C\xde5\xcf\x02\x87\x98\xf0d\xbd\b\x16\xc3/2\xca\xc4\xc6\x15\xe3\xd7\xfc{\xa2\x91\xbf\xcdh\xf3Z\xd4n>dGY\"CBZ\xcc\xcfб\xbf\x15\xbe{\xbb\x95m~\\\xd3^\x84)\x8eݍ\x1c\xcdZ\xaf\x01Ԉ\xceX\xb0\x13\xebpM\xaa\x1b\xe4\xb5\xec\xcd\x0e\xe5|+\xab^\x1b!*\xe5`\xd6\xcd%ئR\xaf\xf9\xe0kR7\xbc\xe5\xdak\xdfr\xedr\xd8q\xf2\x8e\x99\x17\x15˒\xc8\x12+\x82\x05I#U\x1a\xae\x1c|\xcdk\x0eV\x86\xcf\v\xd7B\xd1M\xc9\x10\xc4[\bZ\aU\xd6\xf5Ԏ\xef\xcdq\xa0*\xc0\xf9\xafF$Y\xa3\x83]\x13\xe2(\x17.W\xfd\xbcA'\xbf\xb7v\xafr\xb7\xdbJ\x9c\xcbR:\xb8\x8a\xff\x8eR\x90\xcf\xe2\xf6L\xbb\xb3 G\xe5\xf1X\xa2\xb0\xa0=|R\xd3N\x82\xb8\x87\xed،\x89\x87\x8c\\\xb2i\xa0\x01SA\xac\xc1O\xf8\xb1@\xc8\xef\xb6\xfbT\xd3\xc7|\xc1\xc4\xff,\xb78\xf6\xccX\xbc\x1f\xde\np\x97X\x023@\a\xd3<\xffS\xf1!\xf2\x11\xd6\xf3\xf2 \xd7+\xb2\xd5d\x1ca\a\xc1W\u007f\vq\xd0\xf0\xd1I\xd4\x13<\xaf^sr\xb5^\xa4W#\xa4N>A\xd5Gl\xe3o\x83\xa1\x1f\x18\xf6#*Mۍ\x86}NV\xb5oZ\xeaտ\xb2\x94\x97\xfeQ\xb1~u\xb5j}SS\xe5\x15\xb1\xfc\x94\x19\x96j\xb2\\\x93\xc2\xe6Seѹ\xf5Vg\x91\xda\xe2\x94l>\x9e%\x86A\xb2\x8f\x9b\xf2\x94hS\xd7'\x90\xdb\xf0\xc50b\xfb\x90\xbbFa\xb4\x01\\=˥\x19\xb1^j\a\xd7]\xbd\x875\xc9-S\x95\xad\xfb\xd8t\"\xd2pZ\xddx\x17\x1a;\xbd۷%\xcb\x0f<\xf9@\xb4\"\x89\n\x8d\x8f'6\xee9r\xcf*\\V\xb0\x8aj\xdb\x1c\a\xc1\v\xb5>YW\xbc:\xd4k\xf5\x92\xdfꘃ\x0f\xc6c\xb4\xa1\x93\x1d\xa5~x\xba\"KC\xe6FqS\x87\xc1\xf1͗,\xdc\xf2\xbe\x8dgR\xe9_\x1bъ!O\x0en<\xd5ai|i\xf5\x81#\xbb7\t\x82/\x0ef\x18\xa4\xdbu\xe8[\xaew&\x1a\x12\xe7\x8a\xf8\xb8u\xc0ZJ\xad\xe5-\xba\xe9,\x97R٩~\xd2\xe8\x9fB=\x03YN\x95\xb2:m\xb0~\xb3\x84\xbb,;\x0f\v\xa7h\xe0l\xaa\x04Ǯ3$\x9b\x84\xa9a\xd0\xd0\xfa'dMi\xbe\xc0\x1a\x03n\xc76\xe5.\xce\xc7u\x95q<}\x99\xb5\xcb\xd7\x04]\xd8\x00\xab\x0e\x02\x82G\x00\x91u\xea\x15\xfe\xa9\xd8\x04W\xc2\t\xae\x04\x86\x1f\\\xdd\t\xb1\xa3\xbc\xbeK\xb2\a\xaa\xe1,\x8d\x8a\xc6\xd0\xe2b\xf6ڹ\xfd[\r\xeb\xd6\x11E\xd5N%\u0097\xa7东yÁ\xd1\x14\x17\xafv\x856\x8f\x175\xd5\xd81\xb5\xb7\xb1trK]7v\x1cS\xa6s\xa3\v\xae\x86\x8b\xebb\xb7\nK\x10/\xb2\x88\xe3y\x15@\x00x݃\"\x1d?\x16\xd8u\x8bU\x8bX\xbf\x1bI4\u007f\x0f\xfa@}4;\xb0\x1c\x8c\x8ab\xcc:\x00\xc7\xf78\xe1k\xf4\xe4}FF\xbf\xdfFq[)\xe5\xd8V\x90=\xce\xde\xe3ɭĭ\xac-\"\xb0\xfe/\xb6\x10Jg8N\a\x9b\xaa_V%H\xf4vGJ9[⦙\x98v\xba\xa5\xe4\xed\xaaMҿ\xb9b\u07fc3\xb9;\x11S\x12\x96\x95Pb\x89\xdd\xc9;\xd5\xdd\x17\xaaj\xab\xae+\xc2\x0e\xe1\x0e\xd6T I\x05\x94Cw\x18\x01\xf8O\x8c\x82\xd7\x17\n\xd7\x00\xd7\x1c\x85\xc9\xec\x8bz\xb1\xc0\xf8\xd7DC\x1e\xa88\x9b\xe9\x1c\x17w\xbb\xfdz3\x84\xdb\xf3\xc4W\xbfa0\x92\x92\xa4l\x97A#Ԉ\x86\x14Q\x8c\xaa\xba\xa2\xf6\xe9\xb4f\xc5\x02\";\xa3h\xf2\xeaS\xe7L\u007f\x03\x04\x86\xc2l\xbd\xd7\xd9\x00dL\xe9\n'\x8bb\x04\xb2\"\xa2.\xab\x92Dİ*\x8b\x1a%AɎ\x9ap\x92\x8d\x8e\xb5g?n\xd8A\xc3k*3\x18\rHb\xab\xb5\xbf\u007f[\x90\xa7\xb1E\x16I)^\xf4\xa8\xee'Ȝ1絊\xf3\x95,\"DJ\xc5ʃ\x1c\xa0I\x92\x81\xf3\xa0\x82U$L\xef\x1e[ʼ\x1a\xa3ڙK^zə\x1a¯\xce,\xed\xb8\x02H\xdec\x12\xb7B\xc3\x16V8\xe91\x15\x8f\xee\x9c4\xf7\xbc\xea>n\xe5ĭ\xb7\x9eX\xe1\xee{՞8ň\x12\xfd\xfed\x839eo\xd4\xf8\x85\xa1c\x91\x9b\x94\xd4\xc2\xcd#\xaa4\xe9\xe0x\xe1\xf8\xbc\x90\xbf*/\xdcw\xc5\xf5\xb6\x9e!\x83BNH\x19\xddF\xaeUL\xa7\x15\xfe\xa0.%\x12\x92~0\xd3\xf6ʗo\x93\xa2Ѿ\x9e\tx\x1c\x88\r\x02\x8b+\xbc\x01`N\x9a-\xdf\xde\xc2r\x18\xf6P\xcb-DŁz\xd4gE\x05\xbf\x14\xb0\x8dz\xcb;\x8d\v\xec\xfeS:\xfe\x0f\x94}\x80\xb3\xa9)҃\xb5\xa1!\xcaP0p\xfc\xeeki\x89\x96k0\xc8|P<\xe5G\xc8\x01ٷs\xf0\xa5\xa1\xe5L\x06\xd8\xd8\beU?\xcc\n\xf4\xf2\xa9\xa1\xea\x01Ƽ\x86\xe3`R\xd4\x1b\xb2\xaf\xe9#\x92Z\xa9\x1e\x83p\x86%\xbe}\xfa,\x95\x1cN\x93i\xdb~\xf5e\xf6\x8456\xb7\ruΞ\xa6\x8a\xe1\x87Ϟn\x9fZQ\xb6ϤƳN\xc8n\x10\xe4ec\xecZ/\x84qc\xc6{\xb7\x91\x8f3;p\xf7a\xfa\x1c\xe6\xc6\xc9\x12\xb0!\"+3\x11\xc67k\x84\xee讝;\xb71\xfe\xa1\x00\x1e\x11\x81\xdf\\\xd4\xe7\xfa\xc9\x1aԬP\xa0>2\xe4aE\xc5e\x13V \n\xd1T\xa01\x0f-\xda)\x1fU\x01\x11Lwbj\xac\xc4#KR\xb5\xf2\xe7pT\x14\xa7\xde6\xa5&\xd5\xe2\xad,&\x1e\xa5i\x9fۊ$+d\xf2KCQE\x96\x004D\xb0\xe5&Y\x92\xf5\xf1\x80\a>\xe7\xe7\xa0\x00I\xb8oE\xe93\xb1l`\xe0 \x10\xf6kT\xeb\xe9\x83 \x9e9}\xf6\xec\xa7\xcf\xee\xfe*\v\x8ed\xfa\xcdO\xd3\xf6\x93⳧_\xba\xab͜\xd4x\x8a!\x02rm\x82\U00054b7e\rx.\xb0\x01KeD\x15\xc9D6\x12\xa9.\xa9\xe4P\x9f\x13\xfaعY\x8e\x97\x84\xa3ɥ\xe4Q\x1e\x8b\x02\x9a#\x14\xe4\xdbXCGPd\xd7\xf4\xd4N\xae\xfb\x1a\x9938\x19]\xe5>HIځO\v\xb2\xc4\xc5^b\x9f\x8eC֒?\xc4\x1a\xb7\x95\xc3\xe8\x8d\xdd3ӻvL\xbd\x8a\x93\xa7e\xee\xa5h\x8f\xe1v۾\x8dW\xec\xf5\x05\xd4p\x8b\xaf[\xdeԦ\xeb\x8bOa<잁:\x98$\xa5x\xbdR.\x06Ԋ\xbb\xc5\x05\x0eef\xd7\f\xf7\xdb\xdcL\xbe:4T\xcdϸ\x06\"\fO\x99\xcc\x14;,\xd4\xd5^2!J<=~\xc6M\x9d\u008a,\x83\xa2E\x96a\x9f\xcb\xcd\xe4\xd12\x9dv\xee\xf3!9\uf6f5\t\xf1\\/\x0e\xa6/\xf3ei\xb6P\x1f\xe5.PH\xf9\xc9^[,\xb9\x1a.5\x18\x8b\xc7\xddC\xa5<\xe3\xa9\xee[KT\xce;\xf6\xef\xb1L\xeeV\xbb\xe0\xe8\xcf\u007f\a\xddj8`\x0fR\xa9\xa4\xa7<\x84\xf2\x19*\xebm\xcfĞ\x1az\xf0\xb0\xe6\xc4\xceG\x8c(\xb2\u007f\xd2\xfd\x9e\xca\xf2\xa1C~\x04T\xa28\f\x11\x8f%\xa7)4\xfc@\xe7\x1d@\b)'IY\xd0o;\x9e\xfc\xb4\xec9\xd5\xf9\xb6h\vX8')\xb6؞\xb7=G\x96\x1d\xef.\xfd\xf2\xd6S\xa2$\xc8\xf8\xa9\xd6\xe5\xfa]\x03\xed\xf3`\xd4\x0eʰ~\x9eQHdV\xf7|\xce\xd5oZ \xc0\xbeE?:\xb7x\xa9\x9bO\xac\xd5~\u07bd/\x969\xae\x0eȯ\xaf\x9c\xd9~\xe9b\xbaV\xd6\xebk\x99\x98\xda:\xce\xf4\xd7\xd4~\x9d%t\xb4\xe9\xfb#\xf6\xedV,\x1fm?\x99\xb4I\bI\xa55\x90\x01\xbc y\x84[@d\x99\xf7X\x88\xda\x00\xd2\x01\xfd\x9dV\xa2\x97\xe9\xa5\xde\x1a\am\xfdx\xeb\xb8m\xaf\xc82\xb9儬\xa4\x15e\xeaFY\t\xe9\x1c1\x8d]\xae\xf71|\xc3~r`\x8d\xaa\xc4\x12^\xb8V\xe0V\x14x\f\xa1\x8fӸ̧ղ\xaa\xab\xea\xa2\xfa\\\xb5\xd8\xfd@P1G3\xa2\x13\xb4\xc6\xe7h\xa0\xe6.]m\xaa\xea\x11՞<2\xe4\u05cb+\x1f\xa0\x95\xf5\xebs\x1f\x8d=\x03n\xe7n\xf0l\xa6@\xad3\x94\xdb\x01\x90V\x90\xb1\x18X+\x91\x9d[4\xef\x03(]Z D{TH\xa3\xcc \xe0\xc8\x05\x94#\xa8\xa7\x1b\x8fy\x83}KF\x1bY\xff\xe2\x90NC\xf2\xc0i.\xc14]\t\xeeڔ\x88\xd4!\x81\x88N1)\x9f\x97bNJ\x14<\x95\x93\x92\x82\x90$W\x8a\xaa\xe9a\xc1\x1b\xf7\xd6\x18\xaa\xc0\xee\xda0L\x8e\xe1\xdan\xdb\xce\xd1e\xf6\x8a]ӱ\f\xe1G+[&,\x86K\x16\xf8\xdd|9b\x03~a\x89Q\x9e\xa0N-\x8f\xf7\x81I\xa1\xa3zK\\\x050\xe91\xe4\f\xf2q\xea\x00\xc2\x1b\xedh\x1efS\xf6p\xf3\x9ao\x99\xe6\xe7c\xb1ϛf\xc7$]e\xee\xd25\v\xa0+\xc7\x05\x910\xd8\xfa\x9b\xb8\xa3M\x15\xaa\xa66\x8frנe>\xc5O\v´\x90\xe4\xbd\xcc0\xe4-\x1c\xce\xd8\r@\xc5_\x12$A\x11\x97d\xdd\xc0\xdb\x06u\xdfi\xdf?\xb0\xff\x96\xc9\xe8\x1f\x18\xfb5O\xda\xe0\xd3\xeb{\x81K=\xbb'\xb3\xce\xfb\xef>\xa7t\xff\xb17\xa4\x89\x18EC\x1f\xceQu\x1aY\x96O\xd3u\xb4M>\xec\xed\xbfuձ\x82\x19nڮA\xad\xe4d\xb3\fK\xf1\xf2\xc3t\xa5}\x03]\x87\x97#}\x9bt\x0fGa]\xdd\xea\xd2EF\x053\xcdR\xc7\xe0_ی:>\xd7\u05cc\xd76\xd2\xc5\x10\xe6\x80M\xbdH7\xbe\xe5\xca|\xabܘ\xf3\x96\xf8:\xd3?\x97+R\xab \xc5\x01\x14\x03\xed\x9d\xdfϞ\xb5\u007f\xfe\x15k\x13\x13\xb3\xc3xh\xb8\xe8\xc2[\x9aܭgn0\xdcU\xd7\xf8\r\xf1\xc8<{\xe0\xfc\x11\xf1\xfa\xafׇ\x87\xebU;\x1d\xd5He\x1acَ\x0f\x96Is\xec\xd1>\x88R\xcf\xf3\x16pO\x01\xcc\x02b\xf1a\x180\x16\x02\x8a\x86c\x89M(ZM\xe2n\x8dF3\xa3\x05G\xd3\x1a\xcb\xd1;5M\xcbo\x13:\u007f\xcd\xdeakRQC\x94\t\x89\b}\x14GG\xdb3\xe5\x04!\x1a\xf1;\x8fE\xf1\x94 \xfc\xd0:\xb6\xb5\xecо\xbas\xcf-E! .R\xe4\x05y\a\x8a\xd2Jx\"\x91\xf0'-\x11\xccA\xebX\x87w\xf3Ņ|\xe3p\xad\xdc\xfd\xe9p}\x04\x8dt\xdf\x1f\xf0D\x01\xf7pG\xae9B:f\x97\xf1\xfb\xb9-%\xe9o\xc1\x1f\xbd\xbfV94\x03o\x9b\xe6\x03\xf2Q\xc4\x02OG<\xb7\x84槙\xfcU)L#?\x9b:\xa9\x8d\x17\x1bA\xeb{\xca\xe3^\xa3\xa8/!\xab\xe1\xd5Ѩy<\x1d}\x89\xa4a\xacI\xaai>[\xdcV8܀\xcd\xe1\xccV\xcb\vu\x97\x13?I\xbepZ!\xdfI\x1f'cw/\xd6\fM2c\xe6\x15\x85m\xc5\xc6a\xba\xb9\xad\x9a\xd9\xea\xfa\x1d&\x85i\b\xcc\xcb\xe1Ќ\\?\xcaZ\x95:\x0e\xe8l\xae\x11\x10\x8bF-\x97\xeb\xe4rlR\xbd\x8a;\xd6`\x03\xa9q\x8c\xfb\xc2\x03\v\v\x0fD\x82\\.\xf7Ql;X7\xaf\x8d\xfc2Dm\xff\xefX;\x83\xbaz\xbd\xac\\\x98\x88W\xd4\xc7\\\xc2\x05\xecA8e\xafS\xebs\xf5f\x9d\xae\xa5\xb5\xa2\xc4\xd6\xd2V\x1dBg\xfa~\x9b\xff\v\vk\xf7\xd3TnZ\x9d\u07b5\xf3\xf4.\xb2\xda YQ\x1d\xdd3\x10w\xbdt>\x96\xd93\xa3䋜\xc8!\x01\xf2أ\xa2\n\xab\xacf\xa3\x9ff\xab\xe2.\x90\x11ک\x9b\xff\xd7\xd7[*\x9f\xed\xdb5\r\x9eGI\x0f!Qԓ\x05\xf4%UU\xd9:\x82Dȃ\x18͑uW\xf9\x90\xbd\xb5HH#M\xc9\x1b\x11\xa9\xaen\x05})2\x1e\xd9\x15\xd9\x1b\xb9\x1aA\xd7\"\xa4ķ4\xab\xa9\xd4\xef`N\"-\x9f}\xb8{\x0e)\x89-\rRT\x9e_\xf4dD\v\xc3\xfa%X\xf7\xa8w\xc2zT\xfd^\xe6ZƋ\xe3\xe2\xba}\xbe\xd2\xf3\xe9\xc3b\xbdRD\xab\xe9\x12\xc3R*\xa5\x99\xc5\xf3\x80,\xbf/\xfa6Y~s\xf4\x0eY~\xa5s>\xa2\xdc@}x\x9ev\xba\x97\\\xa2\xedk\x97\xd2t)ϥK\f'\x02\xbd=\xe4\xcc\xd6\xee\xd0X\x98\xf6\xcaJ@˾Cs`;\x91B?\xbb8M\u007fH3waZ@\x88\f\x93\xee\xbd\x04\x975c\x8e\xf1\xb6\xe3\"\xa1\xaeG_\x8f-\xf9\xf8\xdb\f'f\xbe\x17\xad\xa2\xa8\xd9\xfd}=*WxN\x11ѫ\x14afFP\xba\xef\x91\x15\xa1\"Gut\u008c\"%\xf0}\xfa\xbcO\xfb!7\xf8\xe1\xc8+#\xaf\x02/\x0eȏƬE`_\x94\x8a\x15\x9aB\x97Y!\xfc+4i\x1c)\xa0\x99\x18ibFR\n\xf9\x1ec>\n5$9mֱ\xeb\xc3ף\"f\b\xf5-\x17\"'Y\xec=\x99M\x8f\xea\xbc,\xf3zAV8Y\xe6\x14\xf9\x1a\xdd\x12\x13\xeb\xec\x9aq3\x19wf\x17\xac\x1bL\x94@\xf2p\xbc\xfb\x95\xf80Yx\xda(7\x17\x9d\x8e\x0fG\x06\xf8\xdc)\xc2ߵ\x99~\xac\xe8\xf3\xd9E\xe0\xf1\x1a\x1b\xb5\xa7}\xf4\x02q\x9e\xbc\xb38,\x04\x81^\xad\x81\x9e\xb6;\xa5f\xa9c\x9f\t\xe9T}\xe5\xe9\xaa&\xdfBxc\xaa;;\xf3\r%\xfa\xe3\x0e\xa4*\xea\xfc8\xaa쩯W\xc3\xd6\xffRq\xf8\x995\x05\xff\x92\x1c\xbf\x0e+k\xfd\x1c\xb2\x10_\xe8\x10~\xb4J\xf1\xb0#\x8dD\xce\x0fS\x0e0\rD@- \xdc\x1e+-5 \x8c\xd9\xe4\x02]\x82\b\xd6ori;\x92\xb6\xdf\xfe\xbe\xdb\xd1;\xdfw;\xd9u#\xd9\x1b\xb7\x96\x0f,ŠhuG\xdeL\x16\xbb\x9f\xa6i\xadѯ\xe9\xb5[\xeb\xad\t\xf2\x8f\xb9\xfd\xd0E\xf7[ɴ6\xe4\xccC\xc9\xd8\x0emhB\xb1-\xed\xdd\x14\"P)xbi\"\x9a\xbd\x18F\x0eYY\xea\x00X\xd7\x0fLe\xe5\f#犗\xee:~\xfbc\xf4ݞ\fC\xe4ܰ륹ۏw\xe8\xfb\f\xe9\xd3?K\xdf\x1f\xb3쓑\x83Y\n\x03\xaa\xa6)\x14\v\x13\xc8?.\x92\xf5\x9c\xb0V\x8c\v\xedY]\xb8\\u\xa1st\xfb\x98\xa0%ta\x12q\x1c\xaa\x94\xd9\xf1\xcb^g\r\xeb\xe8\xd53\xf9J\xf2\x10\x8b\b]-\xa5\xed坯\x88\x9e\xd1\x04Y\xd0^{#\xdbmǎc)\xa8\x14\xcf\xcf\xe4\x0e\x04\xb1\xa0\\H~ڶ\x11C$\xe2\xfb͐ł\xa1\xa4\xb3u5\xe13\x1b\xc1*K\xcf\x18\xe3\xc0\x12\x00\xa0?\x05w!^<\xd0]9 \xf2\xd4iH8\xa0\xa5\xa5\x13Qr\x14=!\xa5\xf4\x03B\xc8\xed\b4\xc1\xe8\x8b_D\xd4\xc9HU'\b?\xfdN+\x01\xb3%a\xbd\x93\xd0\xff\tU\x8d\xf9q{\xb4\xaevd\xc8\x1fU\x90\xa1x9d{\xa59\u0097P\xa5g\xac\n'yj\xf6\xbbs}\xa4\xf1\xfaHdnهM| \xaa\xa8<\xedքi~ĪZ\x1fa\xbb\x0fӲwl\x88\xe2c%(\xe2c.N?\x18\x9dM|\x8a^\xfap\xff\xcbd\xf7O\xb4\xec\x1dt{Gh\xcbJ\x18o\xeecֆ\xa2\x89/\x84j\xf7\x82\x81\xd4+0\x81\xbbk\xb0\xad\x87ܔ\xee\fm]߳)\xb8\x0f\xb5ӥ\xee*3\x10\xd1흡\xed\x87}\x8d\xb7\xb8I=_t-_\xa8vϼ\xb8z=3P\xa3A\xbc\xdfMr\x17E7y\xea\xbb7y\xc6\xf9\x88\xff\x8bx\xd3w\xb1\xe3\x85\xdby\xa1\xf6\xbeP\xbb7\xb6\xfe\"}p4\xb4}fCI`\x03\x1b\xac\xffF\xb4\xc9\v\x8c\x9f\x8d5\f\x8f\x98\xc1\xfa\xacn\x18$\x81\x9d+\xf4\xec\x17|\xf2\xc6'>s\xc1g\xb1憞\xe1\xe7\xf0\xece\x8f\v\xa4\xd0uT\x8d\xe5\xcdbY\xedV\xa8s\x17\xddvh\xea\xab\xef\xd1\xede\x84\xad\xa5\xbc\xad\xe1\x86h$\xb5\xd4\xe57x}\x06\x9cH`\xa9cz%\xc6s\x9ca1\xdf\xcc0\x1b\"yo\x8fg\xb3\xf1\ue76b}\\E\xfa\f\xd0\x17\x16\x88\xacח\xf1\x9c\"\vt\xe4\x81e\x0e?\xb3\x95\x18x\xdcÝ3\xb1\xcc\xf7\xadd\x97\xe2\xdd,\x9b\xea\xfd\x94\x12\xf9~\xc3\xed\xe1X\xf7\xa3\xe8\vB\xcc\xee\xe6Y\xd1-Z\x94\xffQx\xceDj\xa4\x0f\x97Y\x0f\xae\x97%6d\xecZ\xedw\x1b\nu\xe1\xc3\xfdn[\v\xf5`\xe0?&\x12^\xb2@Q@-T'ޏ\xef|<\xb2\x9b\xacѧ\xfb6݂//\x85\xfc\xb9X&.\x10.\xca\xe0\xc6\x03\x9cO\x1d6~\xdef_\xc1\x01NR-P\"\xf9\x06\xbeR\x83\xe6\xeaf\t-\xb9%nw\xad4\xbd\x8b\xe7Gy~\xd7t\xa9\xb6\x9b\x9bRw\x8f\xdaD\xdc\x16\x89lcF-[\xa8\x8c\x8dmk\x1djm\x1b\x1b\xab\b\xb6\x155\x89\x00$r\x92d\x8f\xeeV\xbb\x9f\x16\x8a\xc5\xd2h6^\x8aeQs\xb4T,\n(\x1b+ų\x8f\xcb\xf2\xbe\x99\xdd\xdb'+\x95\xc9\xed\xbbg\xf6\xc9\xf2\x1f\x94K\x06\xfc\"\xe4\xe8\x12$\xac8\xef\xd5S)\xfd\xbd\x8e\x82%\x81\xa5\t\xe3D\xa3T\xee\xfe˘a\x94\xe2\xc3i\xafd\x18cnz\x98\xd9f\x9f?\xff<\xfa%t\x16V&\xd6\x1fX\xec%0c\xfa\v\x0f\xdd\x1a\xd5p\xf7\x9bzR4%E\xff\xeb\xbf2\x14\xc9\x14\x93\xfa\x8f\xe5x\x81\xf0\xda\xef$e\xc3zR\xba\xfezR6L\xae\x05k\xde\xd3d\xfe~\x8crF\x11w\x9a\xa7\xbf$\xc2\x13\xfa\x0fXO\b[X\x15\x11\xa7\x8bi\x03M{^\xf7\x193-\xea\xa2a<\xf9E\x1a1Fa\xa5Х\xbc\xac\x19RV\xd7\xc5\xd7b\xcf\xf6\xf0kE]\xcf\x1aC\u009es\xe1h5\xf03\x00\xbd\xcc\x1aE\xe9\x04\u070f\xc2\f_f\x89\xa3\xea\xeb\x83\a\xc90eS\xac\x12\xafOsn\x82\xe1\xe5\x06\xb7\x10\t\xb2f\xab\xa7VsH\x91\xab\xb28\xf1\xf4\x93\fЋB\xbc\x9d>\xeb\x1a\xabo\xc0\xc5\xf9ϊR\x9ep\xfe\xf4\xd2>\xc3\xd3\xdaƝ\xedWɺ\xb45\x1cKx\xf6\xb4\xe1~\xf6ޑ\xf9b\xf7\xbch\nY\x16b\xae\xf9\xf2\x94\x8f\xd7\xe2D24WF\xc8C\x9c2\xdeM<\aC\x8d\xba$\xe7\xe7\x96x\x96\x17>\x81\xfeb\xdf\xcb_\xbe\xef\x92}\xe4\x8f\xed\xbf3C\xfe\xc5\xf2\xb1\ttDODM<\x91%\xe7\xa8\xf3\xd27\xbf\xf4\xf8q\xba9\xd7n\x13\x81:U\x96t;\xa6\xa6\xca}9\x13\xe6\xc6\xef\x13\x19\x93\xce\xeb\x12\xa8H\xc1\xafM\xa2:Ҟg\x16\xd4)\x94H\x93R$\xe6%ʈ\x12\xa9!\x17\x8fy\r\tsm\x9d\xe3Tᐮ\x1f9\xe2x\x14p\xd2䆆\xe8\xc1\xe4|f\xb4\x96R.ݷ{Y\x9d\xde\xfb\x1aBZTQ\x91\x84\x1b\x1d\xef\x1f~\xaa\v\xf2\x83hVS\xb6Q?.$5a\u007f(y\xe5\xfc؞rF\xe5\xdc\xda\xf4\xf6Ä \b\x92\"\xaa\xbf\xf3rG\xa1\xb4\xfcyt\xd6\x1f\xc3>@D\x89)\xa3K\xbd\xccy\xb7\xf8\xa3\xb6\xfbM2\x98Q=\x18\xccW\xf9\x83\xf6\x9d\xeb\x06\xf3\xc0\x18N\x80\xefD\x8b\xfa\"\xf6~0@\xa2\xd80\x86=\x0fM\x1b\xfe\xc0}\xd20\xc8A\xda\xdc\xd3\x1f\xc0\xff\xd4\x1f\xb5\xfa\x90\xb8g\x8f0d\xc0`\xde5\x18k)\xf6\xfc\xe5\x87\xc8x\xc8EF\x89\\\x11A&\x0f\xf8y\xf1|c\tB\xe3\xfcp\xbf8\x04\xc2\xd5\xfd\x8f\xd8\xc8\xc7Cb\xf8\xa6{n\x05\xeb\xb2\x185\x9f_1\xa3Q\xd358\x00*\xef0,\xc9\x0e\xb7\x02\xfel+\xa1\x0f\xda\xce)\xba)[I\xf1\xe5/\x17\x93٤X\xa4\x16\xb0\x15\xfao\xad\xd3IK\xaa*\xa57n}\xfb\n\xe8k\x1a\x91\xcbH\x93\x12!\xf3Jcs\x1c{\xafN\xe4\xb7f\x00\x8e@\xfdl7\x05ǧ\xc9N[\x1e\x19\x97\xdc=`\x8c\xf1m2\xfa\xc7\xc2\x00\xf7c\x93bJ\xa3\xc3-v\xa4\x87ϳ\xb0\xf3\xf2yuq\f\x9bsvT\xa5V\x1a\xf4u\xba{h*\x8cq\x9f3\xed\xd8P\x8a\xa9\x15\xc6\xcb+\x83\xf8\xf8x\xac\xbaE@D\xa8\xe3\n\x81^\xef\x1c\xa15\xbfI}l&\xc9\f\xdaJ\xfdo\x81\xb1\xa4\x99\xdf S\x01\xecX\x02_\x8a\u007fX\x9f\x13\xe3s\x10\xf7\xc1'\xbciT\f8p\xb1a\x02\fW\xa3\fN\xad\xb7\xb8\x8a%\x8b\xd2\xc4\xec\xd2O\x97v4(t6;~\xfe\xe7Z\xc2ֹ\xd1t\xb6\x80J\xa9\u007f\xa6\xc9\aP'\x96\x15F\xbcT\x16\xe5\xd0Cr\xa2\xfbe\xf2]\xceXJ\xc8\t\xb4\u074c\x92\xa3\xeb\xb6˦\xabq\xdd\u007f\xd2\xf8ԨCu\x01\x97n\xe5\xd3.\xff\x0f\xb3*?T\f\xe4\x94^;^\xa8\xfe\x91\x90C\xd3\xe6\xd5\xec\xfe#\xab٦\xd5\xe9\xae\xf9\xa8eA\xff\xadP܅\x00\xed`\u007f$2\x1b\xce\xef>\xe0?\x13F% \xd7X<\x05\xcd\xff\xda/\xefG\x8cp+\f\xc1\x1f\xad\xf9\xa9\xe9\xc9F\x86\xfc\x15rwEF5Y\xee>\xed\a\xb0\x83\xeb\xe8\xf3\x00\xb3Ѧ\b\xfe\xdf\t\xe8\xb6\xf2&\x1a\x12qE\b\xc5\x06\xb2\xc0\x80_\xa8?W\xfd\xfa[\x91Ñ\xcb#/\xa7^\xf7\xeb3\x0f\x90\xb7\x1d\x8e\x16aq\x9f\xe5\x8a\xef\x9c2\x18iBy\f\x1ai\x02\xde\xf7\xad\x90\x03Kk\x10\x96\x815\x9at\x00\xd7\xe9'*xX\xb15\x1c5\xa7\x14,f\xb0$\t:\x96M\x87\xd49\x9aܤ\xf09\xd6\x15\xab\xf2\xb2\f\u007f\x10\x00\x8cH\xf3V\xc3\xdct\xf7۲n+\u0590h\xf0\xaa(\v\xbc\xa0aQC\xd0\x0f(\x15ݤ8\x17\x8a\a\xf6A\u007f\x80F\xff!\xfa\x1a\xa1\x05uB\xa3\x8b} S?$\xb6\xa7,l\xf5\xd6f?\r\xaa\u007f'Z\xbd\xf6\xf0\x87\xa1B?;\xa9\x18IC\xad\xb7\xe0\xe4\xbe\xc3ߤ\x95\xf4N\xa8P8?DΞ\xebP&\xff&B\x10\x14c7=\xdeX\xc2lY?;\xffi\xc2\xcb\xfeI\bw)\xe26\xb3>\x98\xa6\x04\x0ei,\x98\xffB\x80K\x81\xc4\xf3\xa7\xcbL\x9c^.W\x1d+52s\xe3\xf2\x98a\xdd:C%\xac\xfa\xc6P\xad\xcf\xd8\xdb\xdft,]n\x172\xdbD<\xbe\xfc\x86݇n\xe9\xfe\x19\x15|n\xa1\xdb)\xba=\xb9^\x96\xb4\x98\x1c\xb6q\\5{\x93\u009f$-\x16\xd3\xde\b\xa7\x13X\x03\xe2\xd6\t\x9c\a\xa0\xcfj\xeb`\xdfϑ\xf9\xe8×\xd5V\xc0\x03\x02x\x02\xf2\xbc\x15\xf4K\x81\x1c\x1be\xce\vY\x8eI\xb3\x80o\x1e\xa4\xc9\x06N~\x85J\xaa\xa5\xbf\x86Mi\x9f\xaav\u007f\xac\xa6Ԅ\xaa\xa2(٣\x12-\xfekvϟ\x93\x12r\x99\\M\xc1eu\xc0ob4\x94\xad\xa9\xe77\xc1\xc7\xeb\xf1b\xdc+\xe0J\b=g\xfdML\xf4\xa3\x9b\xf6\xb9s\xedQ\xf7`\xc7/`\x02\"\xbb\x1c\xecIi.\u05ee\x9d\xc9\xf9%n\xff\x02\xf3a@+4\x96\x82\xa1\xaf\x046\"\x1f\xc7\xd1\xdfЗ\xe0c\tЍ\xf3b\xb0\xb7\xae\x97\xa3Q\xb9\xdc\x14U\xb1I7\xe5u\xe7\x10\x8a?\xf8\x87>')j7\xa7*\xd2\xd4\x14ϳ\x0f)A\xe7\xc2%\xdd?\xda\x04m+\xac\xa7\x84\xbc}\f\x03{;\x91>\x0f\x03\xdah\xdc\xef\xce\xd2zH\x19_d\x13\xd9@'$\x1f2\x10\xb5\xe03XB'\v\xa8\x04r9\x90\xaf9\x83Ź\xce\xe4ϐAt&?\xd3\xfd\xbeW\xf0<\xc7\xf1\xe4v\xbb\xd3n\xdf\xd8?\x03\x89\x9c|\xe5\xdc\x1a\xed\xf2Z\xf79\xaa&\xb7\xf33\xcc\xebp\xe6v\x1a?\xeb\xddF~x58\\]\x01I\x9e\xc9-\xdf\xe4\xce\x12ެ\xc5\xf2\xf9\xf6d\xb2\vE}o\x00\x8bMxܽ\x12ֺ\x96\x96\x92\x96%I\u07fb(`\x03\v\x8b\v\x19\x01\xf2\x9fgZ\xe4\x9c\xec\x17[\x19\xba\xa7\xe7\xe4\xfa\xb6\xbd\xe4~\x94$\x9b\xee?\x90o\xbdEK\xe2\xca+\xb0@D\xfe\xebGf\xe8\xbe6r\xbd\xc4\xcb\x02\xdep^!\xf7G\"\x03~\xe7\xfb!#!\x0e\x81Tl\x1a\x9b[\xef{aWZ\xf5\x00Wc\xdd~\xf5}\x1c\x8d\xe0\x03p\f\xff\x83^\xcbB\x059\xe97\xc6B\xa6\xd0ձߐ8D\u05ca\\\xd8BJ\xbfν/\xf4\x03\v\x11\xa6+\x89\xb4\x89l\xd0\xf65\xbe\x83ڦ\v\xd4f\xfd\x9e\xa3ʗn\x84\x92\x9e\xf0C\xfd\x0f\x00\x81\xd0\x1a\x91\xcd\x15\f\u007fg\xe0\x13\xe8lP\x84bG\xc1\xc8]\x8f\xefq\xe1\xb0f\xb2\u007f\xfc\x8a\v\xfd~\x8e\x0e7\xd6\x1d\xebk\x15\xf2E\x03\xde\x04\xf4\xac;#\x91F\bCs\xb8\x9f}\x88\x1c\xb7\xc0\xfe\xd7\xf7\xe6u\x06\x95\xfc}\x8c(\xf2\xa4e\xac\xa0\x1b)܄-\xbf\xdf\\a\x10_\xe6\xaa\x1c\x93\xeb\x8cm:\x03\x9a\x9b\xe5sd\xf9]\x03\x96\x04\x96Ӷ,W۪\xd3}+\x8bf@w9\xea͢\xf8?\xa8\xf9\x88\xfcf\xf79\xb0]\x84ƗB\xf5\xcd\x1e.\x02\x00l\xab\x81A\xf9h\xf5H\xf6Z\xbb\xb3t\x12\xdb\xdaɵ\xc4\xd2D\xe2.-\xab54\x8d\x94\xae\x9c\xd4l|r铉\x89%RJ\n\xb3Zϧ\xeb\xcbt-\xc8\x03\x85vY\xc0H\x9c\xa3[\x86\x80\x05\t{ r\xaeAs\x1fS\xc4H\xcaANs\xc5\x06\xf83P\x85i\xee\x1c\xf9\xe4\xd2h\xf2\xe0\xf5\a\x8eN\xcd\x17\xa7\xb6f&,\xb7\xf6\xad\xa3\a\xe6\x8e\xcd,\xd4\\k\"\xb3u\xaaXG9P\x87v\xbfG6ks\xd3\xe5]\x8e*p\x86\xbd\xa2)z\x0e%\x9d]\xe5\x91\xc9xNW\xb4\x15\xdb\xe0\x84\x90^j<2\a\x1e\x8eQ\xe6\xf9M\x11\xa3M\xae\x1f\xfa\xde\v\x81\a9\x84\xba\xa3m\x12o\xed\x8d\x0f;\xbc\x828\x01\xf3\xc7\xfc\x91p\x8ct\xad\xc2;\x93s\xf7S\xf7\x9d\u007f`\xc1\x0fkgO\x17v6㚻\x8b\xc7\"\x1fL\x1a\r\xefr\xb5\xdcU\xf3\xa7?GM~e\x1f\xede\xd0\x0e\t8\x9f3\x91Cd$3d3R\xa3\xc0\xcaG\xd8<\n;\xd0\xf2\xea\r\xaf\xc9\x04\xfd\xbeKye.\xe1ŠI\xa4[\x01v\x03U\x02\x90\xf5\x8e\x82\x13\x9d\xbb\xb1\xd2d\xe8V\x91\xedsݟ\x8c\xde~o\xae\x9e\x19\xbd\xfd\xf8\xf6\xb9{\xcf¨)N\x0e\x15\x05\xc4\xf1\x9c\x8d\x11\x17\xd5\xec\x8cË\xbc#\x91\xe3\x87\xdbX\xe9(\xa8EA\xb0\xbaώ\"mn\xfb\xf1\xdb\xd7r\xb9\xdb`?z/\r\xa5Z\x1b\x19B\x02\xc7I\x9ae&m^\"{\"\xe7\xfd;i\u05ebiN\xa5:\xa3\xc6Ts\xc1\xfe\xe0\xedC\xa4\x13aR=~\xaeEM\xa8\x84z\x80\x14\xc7\\\xab\x888\x9b\xe0\xae\"+\x06Ɠ\xc3\xd9+\xb2\xe4oxJ\xc23\xe5\xd4N%\x8a\xde\x13U\xa0\xd6\n\x901\xea|\xae(\x86\x83Vlt\xb0z\x95\x84\xf2\xf4\x1f\x92\xae\xaa\xdehY\xdd\u007fF\x88\xff*\x995\xa6\xf2U\x1e!\xe1\xba\xebȸ8\xff\x1f\xa4n\xf7S;}\x9a\xc6\n7꽕\xae\x1e/1\x10\x93\xa0zN\xdd\xf7\xcbA\xed\x00\x97\b\xfd\x0f5\xea>\xbf\xe6F\xb5\xcb\x14\a=\xe2(%\xa6\xd0i\xaf\x9e\xa7\xb4\fEV\xff\xd5.\x14\xec\x15\xd3\xecf\x91\rS\xb0\x8f\xdf\xce\xe2\x95X^\xa2A\x95Sq\xbd\xda`=^\xa5\xddW2\xb5Cv\xccN\xe8\xb8\xed_\"\x9b\xe5\xfe\xe1\x93\xfd\xc3Hx̱|\x18n\xe4\xc9\xc8\xc7!\xce\x15WZ\xf0G\x0e\xb8\xc0\xbeݜ\xf71\xd4\xc1y\"\x8c\xa9\xdeO/\xb4>\xdd\xd0\x05\xd2\x0f\xad\xc7k\xbf\x10~\xfb\v\x9c\xf7\xeb\xd2\"\x1b\xfc٩\xa9\xa9\xf7M\xb1\u007f7\xb1!\xfe\x19\x8e\x1b\xf6Aէ\v\x0e\x05pq\x82\x1d\x85\xb5q\nS>\xf8\xba\xbf\x9bb\xb7\x89\xce\xe0\xddy\x1f\xed\xe6\u007f\xe3\xaf=F\xaa\xf9#\xf2\xd9C>\u007f@>\xe8v:\xb1\xde\xc5K\xfc\xff\xff\x95y\x91\xbfV'\xf5\f\x8d]\xe0\x15\x8f\xf6};\xfcU-|D\x83\x85C\x0e\x1e^\xa5A\xb8\xf4F?\xfdV\xbd'\xbb\aG\xe8g\nss\t\xb6ӊQ\xa7\xbeYuCypem\x85\x81\x1b\x84\xef\xf9\x81b\x9c\xb4\xfb\xf8\r\xf6I\x83|\x89Zė\x15\xa5\xdd~\xdaf\xe8\x05\xfd[\b\u007f\xd8\xf5c0J\xbe}\x87\xea\xf2\xa5\xd0\x1c\v\xe9\xf1i~\n\xee5\x92\xc0o\xe1\rq\x8bl\xb1\xc9o\xc9[$\x9d\x14\tҗ\xad\x1dGvX\xa8\xc3\x1b\xd2\x1d\x92\xc8g\x04E\xe9R~FQ\x84\f/\x92B\x83\xef\xc4S\xa9x\xe0\x1b\xf39\xb4\x9b\xfa\xc9n\x05\xc9!\x88\x19&$\x9a\xd6\"\x88\x066\x11\x8b\r&\xf4\aS\xd0SJ([K\x12\xa1\xf5d\xb2\xb4 \x81\x0e,\xd7\xd4R\xf2]\xea=:\xad+zR\xf70Y\x81\xa0\xd0Cl\xfd&\xb31R\xa3\xe9\x19ȓ\xdb]\xa1\x84\xccO\x18\xd7\xce\xc4\xceGb\x19fQ\xcd\xc40\x05\x9a\xf1-\x82a\x9f\x98\xd1H3r<\xe4\x13\xe3\x83\xf1lE\xb3dy\x99\x9f\xa6\xef\x19K\x10LHD\xf8%\xb0\xa6a\x13eyp\xa7\x04W\x8ci\x0e\xba\x1a\x96\x9ez\x0fȇ\xf9\xcf<@\x1e\xc6!\xa4\xf3\x10(\xb8\x8c5\x0e\xd0a\x85\xac\xfa\xb8\x14\x95\xa4\x91ks\x1c\a\xf6\x15\xcc\xc7\xf7]+\x11\x06Z\x92\x85eL\xbaG'\xb7\x91o\xaa\xbe\xb7\xcd\xe500\xc8\x02)H\xa2\x80\x868I\xa2\a\xaa\xf28D\\\x96\xcb\x1a\x9f\x1d\x1bˎc(y\xc4\x12\x95y]Ul\xdd$_n\x8f\xb5Re\x16o\xf4'\xedh&\n\xf8<ϟ\xff<:\x8b\xbe\x1a\x89E&#\xaf\x8d\x9c%\xeb#0&Է\x10\x03w\x00\x90'\tO\x04\xd7L\xea\xdc\fW\xc1?\x97p\xb9\xf5&\xdc\acL*W\xa6\xc9Bǀ\x8b\xc1\x1d\x13l\xc7M\xf6\x9f\xba\xe9Q\xa5\xb5\x97\xe5=\xe6牁;ŦTfc\x10x\xb9\x97%\xb2Qg\x9epc\xa5yE\xe5\xa7u\x83\x97\x14\x01\xe5yU\x99/I\x0e?\xefD\xb3\t\u0095*\x1ca\xdf\f\xfd\x90\x9aѕ!EϨ\xbc \b\x1c\xe6\x15>!I\xa2E\xe8:\xa1\xe7\x96(I\x89\xa4̩N\"\xae\xc6\x13\x8e\xa5\xc4\x13\x92\x80d^\r]\xe7U\x1e\xf3\xa2\xf8x\xebX+9\x91\xaa\\\x16WWd^*s\xa6|F\x15`\xf4_)\x9b\\\x99H\xaf+j\x1c\x81W:\x12T\xf8\x8e$a\xb2\x13\x00d\x83\xfc\x97\xbc\xb8b;\x89\x84\x1a\xf7\xc8c\x12\xa4y2\xd2\xd8SlQ\xc4\tK0\xc9S\xbd\xb8\x9aH8\xb6\x12\xf7\b\xb3\x89x$\x88\xdfX&\xc3/5\x99bv\xf1\x1e>\xd0\x00\"\xbb\xef)U\x17/\x92\xe9\x90kS\x1f\x8d\xb7\xa7\xdcG\x15\xe5Q7\x85\xb2KK\xba\x9eе\xa5%\x8d\xec\xf4\x813\xb4\x02\xf9X\xd3%\xf7\x115\xa5>\xe2v7\xbb\xc7?[\xa7ۭ\x10\xe9\xef(؍\xd7\xd9$\x00\v\xc7#\xa3\x9f\xbc\xee\xa2\xc9\xfb\xf6:B\xc0\xd7+\xa7\x82\x98\x9b\"\x19\ad\xe2\xc0\x92\xb8\x84\xdc\xf5w\x9d\xf1\x81x\x88\x88(5\x9d9m\xcb\xf82\xaf[\xae\nM\x8c\xe5p\xa9w\x99\x8b\xf8E\xcb\xe3[\xb49\xa7)]\x86s\xb1\xdeU\xd0\xe0\x06\x98>\v\aL\xbd\xb2\xa3v<\xa9X\xaaD\x84\xaaD\xf4\xfb\xfd\x8bȦ%\xc9\xe3\xb5\x1d\x15\xdd<\x10Mt\x9f\xeb_\xf4c>\xbe\x8e\xbe\x18\x99\x05\u007f<\x91\x9a\x01曭FH\v\xe7\x9bP\x13^/Q-\x03\xbf\xa3\x89G+\x12\u0383@X\x8c\xa3\xe9\xbf)GS\xf3\x93\xfdTTv\xe7\xf6S\x1b\xbf\xbb\xef\x0fI\xdb \x12\xfe\xa3H\xa3\u05f7\xbd@\x1b \xb9^,q\xc1\x16\x9c\x97ܢ\xb4y\v\xca\xe3\xe8P\xe3P\xf7/7T\u007fm\xbc|\xb1\xeaϓoݾi\xdd\xfb\xba\xc6!\xf0#/\r\xd0>\x8a\xa1¼\x05\x91C-\r\x1b1U\x18%\xabRLJU\xa0\xb4\xe7`[\xed\x17v\xe8\x96\x16\xa0\x03\x1d\x10\xccЁ\xee\xa7:\xa0y\xe9]\xa16\x0e\xdf\u007f\xc6\"t\xbfBzq\a\xcd)r\xc3&9\x93\a\xf0\x00zT7\uef48\xe3Vc\xd0\xd8&\x86~+l\x82E\xb6|N&\u007f\xdfgF\xd0\xf6f\xbb\xaa\x82\xe9H'\x9b\xe0v\xd4a\x82'4\x0e\x80\xf5\x01\xe9C>\xb0\x1eb\xd9\xff\xf3S\b\x92\xcd\xeb\xe8}\x032R\x9e\xcc\u009d}\x19\x89\f\xfb%D\xa1o\xa7!\xc9e\xa5l\x02\xfe\x84\x94E=\xa7\xcd\x16\x053\r_\x02\xe6j\t1\xc9\xe8\xb1a\xec\x888\x93\x11\x89У\n\xc3\xfe\x19!\x8d\xf2˩z\xf3\x19r\"Yr\xf8\x02=\xf6E\xa2%\xff*a\xe5%$\xf6\xef\x15\xa4\x0fS\xdd\xe8\xaf\xf7\xbeػ@\x8f\xd9z\xfey:\xbed\xba\xc6FJ\x00p0\xc35[\x00\xb5U\x01z:M\x88\\\x8b\xa1\x10B\xd8g\xab\x1f\b \xe1J\xadP+\xccb\x96q\x12&~0S\xd07Z\x18\x99\xb8ٚ<\x91>\xf2\x92\xd9\xf9\xb9\xfdM\"\x98\x89x\u007f\xde\xe3y\x89\xf0\xd5fl\x8fN\x88\x9b>_\xac\xd59nw\xb1\xb0\xe5\xba\x11\xd9\xc8H\xc2?\xd1\tscg\xab,\xf3\xde5\xce\x1bǶ\xe7\xdc\xd7{H\x90\x84\xad\xf7f\n\x92\xc1۲\x11\x8fޝ`\x90\x1a\x89+G\x8d+^\xad\xb7f\fl\t\xc6\xc7\a}©\xfc\\\x8f\x1ccY9b\xd8\xf7ϑ\x82\x03\x8a%I\x0f\xc8\xf0\x83\xa0m\x0f\xd6\xc5\x11\x96j\x93\xc9\f\x15?\x99\x12\x10\a \xe9\xf1X\x16\xa1\x8f\\\x02\xf1\x14\xf3\x8bd\xb3\b\xbe\x93\ajK'\xa6\xdc-\xad[\x05Q\x11\x14\x1e\xff\xe2\xd4=\xf1J\xeanQPD\x85\xc3\aSC\xa7\xeeY\xb8\x06\xed\x1b\u07b2:\x9d\xbb\x1e&\xdak,\x8e\x82\xb4\xdf\xc8Y\xaf\x81\xfd\xf5\xb9\xe9\xd5\xecT\xc2\xe0\xd4\xfd<6ȯ\x88_-\xa5\u0558-\x1d\xe5er*\x8b3\\9\x15\x1dv\x02~\xb9Mq\xf2\x13\x91\\d\x1cr\x8e\f \xe5\x13.\x9e:;xM\"\x13\x81\xd0CĠV\xa3L}(\xe7\x9a\x1e\xf5\x92 \xad\xf2\x12O\xfc\xf8\t\xf2\xf7M\xd9J-\xecٷ-\xbe\xb88\"\x15\xe2\x90\x1f\xe1\r\xb9v\x8e\f\x9b\x99\xf2\xd6\xfc\x9e\x85\x94E\x86\xd4\xea\xe1\xc6\x1aD\xaa\xaf5N\x0e\xa7'\xd5r\xc2+\xabv\x92\x8f%\xf5\x98\xf1v\x83\xe7\x8dT\xb9|\v\x8eg\xacDY\x9dL\x0f'ù\xfc\xf2\xe4D\xf2\xdd\u007f\x898\xe6\xe3G\xb7\x82\x882\x89\x8b(S7]b\xda\xef~\xc5\xd6\xc3#;r[\xfa\x9e\xbf\x9c \xce\xed\xb9\xfa\xf8\xa9I\xb4\xf6\x86[\x1b\xc9\xc4\xec\xac\xcc\v[z~\xbf\x1f\x9b.\xd4/_\x98\x1e\x8a\x8a\x91 \xd7c\x10\xf7=\x16\xb9\x14\xe4\bwC\n\x16\x1c\xdf\xdcn\xec\x82\x12\x1d3\xbf\xe0\x1e\xda\"5vzs\xb3\x14v\x91\xba\xe0\xc1\xb2\xee\x06)R΅s\xb5\x04\xfe\x1d\xf4\xef\x8bDT\x9c0M\"\x89GyY\a*\xa2\x9b\x9e\xa09\xbc\x86TA\xe6M^O\xcf@\xe9\xc1u\xd9S \xa3\xcb\x01J|\xd8\xf6|D\x8aBN-\xa7)+\xa6b\x9b#s*R,I\x1a\x02\xaf1\xcfϪ\x12\xe6\xc9\x1dB\x99k\x9b\xb5\xdbm\x96\aPp(\x94bk\xf3\xa6\x1c\x91em']\xfewj\xb2\xdc\x11M\xf1ÛԳ\xfb\x01\x1c\xa3^\xc5\xcb1\xdc\x11Et\x82U\x87ى\xf6Sz\xe2Qk\x05\xe4l\x869E\xa3\x9d\x803o@\x9e\x00O\x84:\xc6\xc3u\xa4\xeaK@\xab\x8d\xa3\x15x\u07b5\xf83\xba\xde\xc1\xb1v\x9bpi\xdfS\xf0\x93\xbd\x1a\x92\xda>I\x88\xfa>\xf2\xc0k\xf1W\xc8MP\xe36\xd4\xf6^\xac<\x10Ԑ\x1c\xac(8\xb2>\xff]}\xc0*\xbfY\xb6\x1e\xa6Je\x80\x94\xcc\xcaHjg\x9f\x01\xaf{\xf4ܺ4=+\xa4\xf5\xb4\x96+0\b\x98\xe9Ⓝyz\x1e\xa0\xdd\xe8\xd7\x12\xc9j\x90?\xd0\u007fg|D\x8fd\xe9<\xdeE$\x9c\bd\xa7\u07b4V\x17\x1f\xc0\xe1Ew\xdd\x1a\xda@\xb95\x94ܘ^h`Ȣ\b\xdb\xfb\x92#٬\xb5ۏnL8\x14\x1e\x9e\xbe;\xc4\xd3=\xcer`\x1eB>\xa4rd.r\xcbEs\"\x85\xdb\x13>t\x01\xfb\xd7g\xcb\xfe\x8b\xee\\\x9b\xa5R\x1ah\xeb\xc3Ѥl)/\xce}k\xb3\xa4K\xac\xf5WP&\xa1\xfb}\x94\x8a\xaaQ\x83\x1f\xf0\xd1\x020\xedM\\\xb7\x86\x18V\x8c\x10\x9a\xaf\x80\xc4pd\xd3\x19\v\xaa\x98fc\xbd\xefQ}\x13\x1b\x0ee\x01cR+\x98i\x03\xb3y\xaf\xaee\xf3\xf9Rz\xd9g\xef\xddmY\x8d\xc8\xf6Z6K6\x1a\xec4\x96\xc6\xe5\x1blέ\x9b\xe5_%\xb7\xe4\xa3\xe5t\xc9\xd7sֶe\xa9j\x80\b)\xb0\x87\xaf\xb7 C\xf8#t.\x06qꀍ\vQ\xab{A\x8f\xdc\x02w\xfdMf:\x8e\x97/@t\x817jιA{\xc0\x88Vd\x10C \xf2\xfd\x95\x14\xd3W´`E\xba\x00\xb9M\x00\xb1}\x82\xb5\xab\xf3[{\u07bf\x17\xa0\x872{28.\x0fiF5D(f\xdet\x02\x89\xebi-\xa7Z\x12\xaa҆\xfd\xbf\xef\xdf\xf3[\xbf\x90\xe3\xf4\xcb/\x9a\xe6\xce\x01\x01\xa1\x91&~\x93\xa9\xf3ئ47\xa0\xb4\x9d\x1e\xed]\x9fY\x8b\xbe\x8dUJk;\x01\xe5\xfd\x19\xa3\xb9\x1c\xc5l\x8aи\xedr\x18\xefd\xbe\x9f\x18\x81\xf4\x9b۪`\x0f\xd8\xd5\x19\xc0a\xc1 \xf7\xffmf9sW&s\xcd)\xaa\x9b;u\x02@Nf\u007fk\xdb6%\x9aV\xb6]b\x8a\xdc?\x92\x92\xbf͐{\x96\xc9MTsGnR\xba?\xa8\xc1M騲\xed\x84!\x86\xb0\xcaڤ\x0ej\xa4@%\x95\x00刼\xd0\x17W!.\x02\xaa\xa1\x1cȡ/X\xaf\x95\xd3E\xd0\x15\xd9\xed\xa17\xbd\xb8\x1aJ\xd4^\x85З\"\x06\x91cwF^\x12\xb95\xf2+4r,Nu)\xe5V\xb32OFj\x1c\x94\"\x90?\x98\x9c\x96!\x13A\x82\x81\xc5\x12\xda\xd3,C\xea\r/A\x18\x14\xc4\xee\x00\x85\v\x91uc\x84\x17\x0e\x8a\b\xc7X\x00\x8c\x03\xc2\x0e\x8b\f\xc0\x90t\x01\x05\xb3\xcer\x90K\x9a\fy\xa1X&?C\x1d7jt\x19\"?\xe3\xcde\xb9\x9f\xc6LnD\x8cZ\x1a\x97弉%\xa4#\xc1T\x14\x9d\xd3P\xc1Kf\x91\xc59\xaeƙ\bm;hq\x00\xb6\xa4\x89\xf4\xb2\x8a\xc8\x18}\xf0\xc8-HB\xa6\xa6\x1aDVG\x97l\x89ڊ#j\xca\x10\x8aJ\xa6\xaa\x92\x0e\xd3TA\x05e\xa1`\xc7D=[(W\xe3W,nAX\x93\x90j\xa0\xfd\x87_5\xb2Ԭ\xfd\xb1\xa9\xdeqk4\xae\xbc\xf2f\xb5\x83\x16Ǐ\x1e\x16\x14\x19q\xb6\xba\xff\x80\x97C\xb9\xf8\xd1#\x8a&\xd8꾃c\x8b)Õ\x8b\xd3K\x8b<\xbb\xa1\xb5eǬ\xbc\x15\xdd|\b\xe3FC&U\xb4Յ-\xad\xe3H\xe0ԘÉ\xf7d&U\xd3R*\x9e\xeap\x88\x13\xe5SrL\xe3\x15'\x93\xb0\x15\xb4\xb8\xe5Đ\xa4I\x96\x1a\xbf\xfe\xc0!d\x0f\x8fS}K\x97Țm\"k\x0e1\xdbW\x96\x8b\x814B\x91O`\x04Q\xe8\xc1D?\x1a\x02\xed\xaf\xbd\xac]\xad\xb6_V[:S\xbeB\x89q\xc9$\x17S//\x9fy\x9bkY\x84\a\xc7<ꌵ\xea\xa9zklq|\x17\xd6\xd4[oU5\xbck|\xf1SA\x9c\x03\xd55\x0eƄ\xd3\xc8\xd6 6\xbd\x1cD\x18\x06\x19\"|u\x807\a\xebQ\xacދ\xf00p6\xb1i\xc5\xecD\xbe\x10W\x94\r\xdb\xee\xd3\x03\xb5\x1c\\c\x00KqK\xbf\x9e\xa3\x05\tS\x11\x18\x865\xc8]\x83\xe7\xd3B\xa8\xb2R\xaf\xaeW\x97\x8b\x9cΫz\xd9Px\x03qϺ\xe1S$k\xa6\x95\xec\u0558,LA\x85\xd1X\x16\xf3\xa2\x93H8\"\x8f\xb3c\xe13=\x11\xd5q\xf7\xfb~\xc5\xc9JU\xf1e\xcc?B?G_\x8ch4\xbf\xf8N@\x04\x89\x14\xfc\x04)\xa0\x99\x9ck1\xee\x93!\xaa\x901[\xfe/\xb4\a:\x1f\xfdM53\xce\xc9\xdcxM\xd1\xe8\x82zá%y\xe6\xc8\u007f\xa1}썴3\xae\xd7\xe2\xf9\x96\xe7.\xf2\xb5\xfa\r\xd0KcQ3?-\xf7\x1a)\t\xe1&\x93\xb3\xc1&o\xf6\xae\x92\x84\x1b\xd8\x1a\x9a\x95\x80K\xeb'ǡ\xbagi\xf0\xe5\x94|\x9f\x1c\x10\xb6@\xf7\x9ch\xb1\xd7u\x95h\xda\xfbd.&8\xb69$p\xd8L\xbdr\xf0혶)\nfT\xc1\x9c0dڎ\x10\xe3\x82\xf98be\x84('\xef\xb3\xd2\x1c\xef\x182'\x18\xdd\xff\x11zG\xef\x162\x169!d\xdcp8>m\x91\xa7Dֵ!A\xe6\xc5lhe\xa3+\x0f\x95g\xe7AK\xee1hv\xa0\xbeҦC-%I˲\x89\xf3y^\x92\x85\u007f\xcb\xe7\xb1)/Ӣ+6\x1baS\x84\b\xd6DK\xaeV\x05E\xe2\xf8h\xb5*[b\x8d\x15v\x9f\v\x8f.\x89\xda\x1c\x11\x1d[\x1e\xe1\x00\x17#\x87\x00q\x8e\"\x80\xb5(\x1a\xa3DqĘ\x12\xb3I\x16\xd0\x04\x91\x17X\x05qy\x89\xf3\x00T\xbe\xc2j_\x9e\xe1H\x97Sa\x16\xdaD^\x13\a\xdeR\xa0\x04\xa5 \xc2sM\xf4^B\x8c5\xdb\x1c\x1f6\x9d\xee/\xb3㱬\xe9\xa07\xe5\x87\xc6b\xaf{|?\x16\xb9\xa4\x17:~\x8b\x87\b\xbfB$\xd3y\x11\xc5N\xa3\x18\xe7!\x01\x8b\xb4\xe0o\nIO\x8c\n\xde͓d!\x8d/\xb6Ѳ(\x1e\xb0\xcd\xec\x18\xf9\xe9g{\x87H\x15\xf1\xfe\xc7_\x17\x1bK\xe6\x9c\x11.t\\\xbdZR9\x8f\x8b!q^\xe5\x9e#?x\x95\x88\x05D\v:\x85\x97\x8db$O\xde\xec\x91\xe5\xdb\xca\f\xbc\xc7\\d\x1ab,zc\x91\x197\xa8~\x82\xbeM\xc8\xc5A\x96\xcbu#\xd2/\xe6\x06\xeff\xaf\xf6\x1a\x91\xe7Sd\xee\x88##\x82\x8c\xa4\x14ϋE\x8b\xf0\x04־\xc17[\xe9](\xf6\xbf!b\xb2\xea\xfad\x10)|\xb2H\x96H\xc7\xe1$\xa1\x98\xe4\x15$\xe6\x04!\xd7\xfd\xf7\xd0\xfb\xfeJP*\x0e\xdeM\xc7\xc1\x1fq\xbfD\xda\b\xe3\xa0\x19\xd9\x179\x05\xbe\a\xadл\x17\xa1ɀW\xd0$2!\xc0\b\xceR0r\xcaT\xc1h\xa0P\xe5ȃY\xb9\x8e\xfcL\xa3u\xe4H\x1a\xe8\x9e\xeb\xfb\x03\x81;Iߚ\x8a$\xf1\xc0\x1d\xfa\x10\xe2rw>pg\x0eqC:\x19\x17\x9a\xa1\xbe\xfd\x9a\x1d\xaf\xda+\x19Z,sx\x906}y\xf041\xd0wk\xbd\xe1\xe0Ч\xec\x87\a\xf2'\xc8\xcfoٳg\v\xf9\xf5\x13dlp\xdc\xe97m}\xc5v\xb2\xcf\\{aj\x95\xfd\xe7A\xdaL\xf1\xa3\xe9\xd8`\x11\u007f\x87\xfdH\x01\t\x13\x06 \xdcH\x80\x04\xdd,:\x00o\x85lITr\x9e\xe6\xc8W\xea\x94/#|\xd5\x12G^\xeb\x95\a\x94q\xa9\xd7\x10i\\9p寅\x16j\x1eAL\x81PN\x1b\x9e\xa3F\x91\x16\xe7\x11g\x12\x99S\xb3Ƞ\xb8\xe1\xf8\x1bӱ\xd8tz4\xa8\xefhz:\x16K\xbf\xf1\xf8\r\x97\x87\x96\xf2\xf7rDlm\xa7K\x9a3d\xecP\b\x03*c,c\x8d[\u05f6m\x91\x03\x10s]\xbapm\xb9\x8b6\xdbc\xb4\xcd\x1f\xfe\x95V\xb3\xecs\xdfMT\xba`#\u07bei\a<\x1b\x90BB\x03\x81\x12\x1a\n\xa3\x84\a/\xd0\x12\xf4\xaa\x8bt\xc5\xce\x1e\xa5$\x14r\x80N\xb2u\xf7\v\xfe\xbc/Q,\xae\x97\x92^\xe9K\xc8\x17k\uee94\x1b^\xf0\xba\xbd\vw\xa0/K\u007fd\xd3F\xafmH͡=@-\xa5ƅ\x87\x80L%\xee\xcf_\xa4\xf5˃9<\x94\x1a\xb5\x9e\xbe\xfd\xc2CbC\xbe\x91\xd9M\xf2\x8d\xaco;&=C=\xa2ɲ0\x98q\xe43\x1b[\xf5\x03\x98\xb0W\xc2\xf4%\x1c\xc5\xccc\x039G\xb0\xa4\xc8\xe1\xea\xbe\f&a\xb3Y\x91T\"\xa3Q\xff\xa9H\x0e\xadQ\x9b=\xc4H\xec\x88\x1c'\xf2d\xa4\xb5>\xe2\xff\xe2\xe7\xf5\r\xe8\xdf/p?\xf3\xad\xeba~\xaf;b\xe6\xf7\v^^\xf5\xf7\x17ج]\xfc\xb2\x1f\xeb\x8eڽ\xb8\x10\xbf\xcd\xeb\xbd\x00\xbd\x178_ߦ\x17\xba\xbfs\x91J1g\x83\x8b]\x0e5z\xf3C\b\u07bb\xf8\x1d\x81\x0e\x96ټ\x01s\xb5\x1d~\xd3\x14.\x88\xe5\x01\tg\xfej\xd6\t\x95\xf2z\x8esT\x9f\x86\xfa\rkҠ^\x9b!\x84\x9eK\x97\xc8ֆ\x92o|\xeb=<5&\xdcsj\xa1\xb3@\x8f\xf8U\x1adJ\xee\x00\xf0\x93r\n\xb6,\x048\xf2\xe8+)^ՙS\xf7\x90\x9b\xd9\xe1+\ap\x8eF\xc8\xea\x1ai\xc5\a\x87\x94\xb7γ)TQV\b2ec\xbe1\xe8\xb0\xdd$\x03Ħ\x9aa\xc3}\x92\xd6\x15\xce\xfe\x9dԷQ\xfa\x04\xc43\xe4b\x99\xeb\x9d\xe4=\x1f\xba\x87\xd5\xfa\xb93\x80~[K\x97\xdc_w\x8d\xe0\x18u\x1e}\xe5\aK\r\nN\x98t~\x9b;u\xcf=\xa7\x98wTP\xef<\xe1\x0fy\xd2\xcb\xe9H$\xde\xf2p\x90}\xba\xd2\x02\xe7M\x8a\x90R\x81\xf8\xd7=\xbb\x8bɱ\x0f\x17\xed\xc4D\xbdS78\xb4jq\xd6\xef>\xf1u{\xc2\xce\xed\xdb]Dv\xf1\xc3\xe3\x0e6ȵ\tQ\xb2?D\x8a\xbf\xfe\xc4\xefZ0s\x83\x98\xe2\b\xc5%\x85l\xc4\xfb#'\xc98\xbe9r'\xcd\x12\tL\a5\x8ay=\x1cۍe\xeb\"\xa0\xa8*\r_\x00\xea\xe0B\xc7\x01r'z\x9f\x98\x9e\xc0HŶ\xc9\xf5\x8enݤ\xecCЇ]\x8a\xe96\x11wn\xf3\x13\x98w6\xdbu?CCՑYM\x8c.am\xd3\x1d\x19\xf7\xab\xf0[d\xf0\x19'?E\x91\x146\xfe\xa16\rz\xf7\xfb\xacM1S\xb7SO\xe2[H\u007f\x9d\x05\x8csTtz\xf1}\xeb\x93\xc1\xb0P\xd3p\xf0\x98\xb8\x11\x0fc༲>\xdf\xcc\xe0\xadu\xaf\x0e\xa3\xb2\xb4\xc1x7x\xce\xd5X\xb4\r\xf3\xb7{\xae\x1f~Á\xfb]\xf7\x1b\xb2X\x16\xe5u\x9b\x95\xfea\xbdW^_\xa39\xa16\xbb\x1f\xad\xf8\x90\xb7\xcc`\xe4\x83\xc3\xf5\x1d\xfc\xa6zw\xbf\xa2wtu\xef\xe8\xb1Ѓ\xab\v\v\xaf\xd8\xe4\xe6\x00\x9fc\xcd\xcf9\x95\x8d\xb4\"{\"\x97\xc0(\xdd\xde\xcb\x16\x1fJ\"/6G ^\xb5\x19N,\x0f\x0e\xfd\xdb\xfbY\xe8\xb3h\x84\x86]Π\xb9Ph\xc6\fB\x9f\x85\f\xf2U\x9aL\xbe\xfb\xf7\xa3C\xb7_\xf9\xe8\xcaU\xe8\xff\xa4y\xe7\xedl\x1c\x12\xcf\u007fRvm\xe9\xee+a{\x17B\xa7\xc0n\xe6\x18\x19\xf9n\xa4\xf9\xe9\xe33A>\xf9_\x95\xd2o&\x9d\x96\xf73\xd0'g*F/\x05=Yh\x1f\x82\x8f\xa9\x9eQMCyh\xe3:O\x91,z\xfa\xf8\x80\x95\x99\xaf0\x97!`\xeb\xa8\xc9+\xe6\xef\x13\xad%n@9\xcfx\xd6NjE\xa7\x10\x97xɉ\xc7\x1dQ\x84-9\x19\x19\xd3\xc2Jzƛ~$a\x9a\t\xd55\x112x\xac$\xc9\x18\xd18\xac\xa4d\x99\x88P\\\xfa\xf7\x98\xd6~P\x9f\xd3\x18\x90\xcb\x12\xcdƀ\xd4q\xb1\xba\xa2\x16\xdc\xcd\x15{\xb7{\xac\xd6\xff\x17\xafsE*W(Fٸ\xf1\x02\xb5\xdf\xc9\xeb(\x9a\xd4\xdd\xe0>\xbf\x1d\x87\aD\x87?\xbch{>I\xee\x8d\xe5\xa3\xc1͑\x9e\xce\xe7?Iۢ4\xc3\xde\xd1\xc8˂\xbc\xb44m(K\x16\xdb$\x82X<\x04\\[.\x02\x87U\x1e|A\\\xaf\xd1T\x1b\x124\xba/\x9d\xf1\xbeM\x05\xfd\x04;ѓ*\xef\xf18\xaa;\x19\x81\x97\xed\x91\xdf\xf3f\xe6\xa9\x1a\xc7\xd1\xe4\xf8\xa5\x9e\xb3J\xdf\xd5cŢ\xea\xa6mRm\xe8\x06\x01\xf5{\xc3V\xb5\x8a\xa6\x10q\x9f\xb2u\x06\xc4?Y\xd3Ѽ\x98\xe0\x94\x93\xbags\x9ck+\x9chi\x972\xcd\xe8\rӓ|\x89+f\xde\xd4\u007f\xeb\xb2ițwӗ\b\xcb\x17d\x9dSc\xba\"o\x18\xa7\x1eD\xe7]H\xef\xe9Q\xa1\x13b\xc8\xc0\xe1u\x13\xb5\xe7B\xeb\x12 \xea\xdd\u007f\xc5*\u0097\xb4\xfc\x17\x89C\xc2\xd2\xf3\a\x9aX\xd3p\xf3\xc0:\xfd\xd4td1\xac\xdb\tK\xbe~߆ToP\"\xf6*\x02\x94ѯ\x8bMZݓ`\x8b\xae>\x14}\u007f\xa8\x84\xea\xdb0)$\x84\xa4_I\xbbu\x89_\xcffX\xa7\x18\xcd\xc7\xd6)\x15\xa3\xf9װ\xaa\x1f\xf8\x9f\xd5KmZ\xe7\v\xea\xa5\xc8P۬\x96\xceE4S\xbf\x1fTp\x83\xfe/\x0f\xb6\xc9M\xfb\x17fm\xef\x05oVA\x9d\xc9\x15\xbaB\xa6\x0e禌X\xe9*\xfa2\xbf\xbei\xf5\x1a\xb2\"\xd1Q\xa6\xc8zL\x1d\xcaз\xfe\xa6P\xbd\xc2\xf8\rndg\xe4\b\xe8b{\xd9\xda\xe2\xa5\x00\xbc$\xde\xe3\xc0\a\x13\xfc\xb1\xa3\x01\xc7e\xea\xce\x1c/\xfa\xb0\x13q\xc0\xaf\xa4\xf2A\x0e\xb8`\b\xa4\xa0~\xb9'y\u009f\xf1_\xa3ۓ>@y\a\x82\xec\xd62\xb1N,S\xeb\xac\xd0,B\xe7\x00\x00\x05\xa4\x0e\xba\xdc\xc92\xf0\x80\xe0\xcc\xcb\xf6\xbd$\x92\x90o\x12\xe5\xce!\xc8w\x1f\xab\xd5j~\x1e,\xe0%4\xd2\xdfE\xbf\xbf!\xe0\x86\x06\xe8@\xech\x1c\xc0\x8b\xa0\xcaT\x83\x1f\xaf4\x12^\xa9I\x975H\x88\xe7\xfc\xf0\xc6Cw\x88\xa6x\xc7;^\x83͇\x04Y\x12\xf4\ue915O\xad\xa5\xf2hFR\xb0\xa8\x8aoCk\x87\xe6\x97\ue5e4\xfb\x97\xe6\xdfQK$\u007f\xb0\x83\x03\xd1\xf5?\x94\xe8\u06ddj\xe9\xa7\xedO\x94\xaa\x9f\xe0xY\xfa\x0fIW\xb9\x05\x94\v\xfa;\xa8\x97K\xd1fZ\x835\xeb\xe9Q^|\ro)$\x93\x85\xe4\xff\xf3\xa2\xea\xf9\xd2$\xdc|\xf0EՖ\xa3\xb9(\x99.5\xc7r\xb4\xc2܇\xb8\xbd\b\xf3\xe6\xa9\xf8\xe8T,\x80㥇W\x0e\x17\xee\x98\xd1m$\xb6\xd0;\x1b\xe9\x0f\xac\\\xeb^\xaek\x9e\xa6\xbdR\xcb\xeb\xa5x\xfa}pCKD\xb6>s\a\xda\xd38\fw\xc4.\xd7\xe0\x8e\x1bu}4\x9ef\xb1\x86k\x1c\xef\x8fG\x8a\xe8\xefB\"\x1a\xca\x1a\x97 N\xa3LX\xf3\xbaԳ\xa8n\xaa\x89<\xb7c\xe66IQo\x8b\xaa\xe82U\x91n\x9bٱW\x8d\xfe\xf1\xbbn\xb8\xe1]7 C\x14\xf1\xfc\x10\x99\xa1C\xf3X\x14\xcb\nҥ\x99\x19IG\nڮN\xfc\x86\xecض#\xffƄz\xa7\xbdz\x03|\xa1)\x1aH\x9e\xc1xF&\xdf,\xcd\x13\x99#\x99$\xc2\xd3|d\xd0\xceK\x91\xab\xd7s\x14\x89M\x98\x86\x8fmd\x0e\xdcMbx\x81F\xd47\xc6\xf0\xf6\xa6\x9c\x14\xf2\\\x18(\x8f\xfbO\xbb\xa2L\x1e\ra\xb7\\\xe1\x1c\xf5]\xb8\xbfw\x1eX\xbc\x01N\xa8\x1c\x958\x16\x8f\x1b}6\x97;3PPN\xf5\xfd\xa4\xbeN\xf3ʎo\x82g\xeb\xe6\xdd&\v\x1c\xc1\xeb\x18fD\x85\xc5.K\xe5\xe0\x8c\x9c\x8f\x8c \xf9\xa8\xa6\x1d%\x8c\x9e\xb8\x0f\x18P\xb2\ta\xd5^\xdd\xfd*ڦ\xcbGt\xfd\x88\xfcWa\x06\x95\xc5P\xb011\x01\xbe\fE\x1a\xfe\x94E8\xa0I1j\x88\xf3\x13}\xb4\xa6{\xb9\x15\xea\xe8\xa7\xd7=\xfa\xa7\x8a\xae`G\xa4\x89\xd1\xed\xdd͘H(\xe59B(\xc5Xs7C\x918\xfb\xf2_ł<\xca2\xd6.\xbe,\x9e\xcea]ǹt\xfce\x8b~\x18M(\x8e\xc3\x02o\xb1\x81\xec\x15\x90\x9b3\x04\x94:\xa0X`ޏ\xcd\x06\x05\x8c\xa3\xe28\x04\xd3\xe5ҥ\x85\xeajO\x81PJ\xaf\x82\x8e\xa0\x17\x9b\x98+\xa5\xdbՅ\\\x1fn+\a\x99^\xd6\xc5\x1b\x03\xa6>X\xcf\x00'y\x1fವ\xc0C;\xe1\x95=\xc2\x16\xd6MT!L\x15\xc4x7[u\xc9]\x1f\xe2\x11\x80\xa2\x11a'0\xf3\x12zS,\xdf\u05cf5\xc6\x16\x84\x1ag\xfd\x00\xe3(\x84\x1c\xdfDC\xfa\xa9@\x87\xfaQ\x8a\xdbh\xac\xf1\x13\x10\x8e\x8c\xec^\xa81\x1e\xcff\xc7o\xf4#\x8c\xaf\x1f\x1e\x9bE\x88\xe1\x16\x90\xef\x12\xf1\xb2\xeb'\xcb\xec\xb0\x1cr\xf1ٱ\xa0\x8f1\xfaS2\x97\xb2~Nh\xa02,\x1e\x8b\x1a\xfa\x01P\x035\xa9\x80~\xfcҗ\xe7E\xeb\xa3\xe2i:^ɸ>-n\x13\xd1l\xf1tb\xf4\xeb\xd7~ \xff\xf2K-r~\x1aF<\f\xe6\xd3\xe2G-$T\xb2\x97V?ym?.\ah[\x06lˠ\x01 \xb4M\\\xf70wI\xe8\xfb->\xf8\xe8ʄ0dt\xbfo=\xa2j4E\x82\xf8\x88u\x9aò\xaa\xa1\xdbLs\xcb\xca\x16\xb3j\xa2\xc6\xc4ʣfRb\xa1!Q#k\xf0.r\x1d\xee2iLS@[\xa3\x14!\xa0I3\xfd\xfa\x81q\xd4Et\x8e\xa6@\xad\xb0\xb8\xb8X\xc5C\xd4y\xaa\xe7\x1c\xd8\x03\x03\xb9\xe5:E\xb9JI+\x85%I\"\xdc%\xb74ٝ\xbe}\x9aM\xf8W\xcdx\x85\xa2\x10\xa6Yޝ\xf9mY\xe3\x1d^YKk\xc3\xd9YMӏ\x81\xab\r]\xa3ָ\a\xd1o\x92\xfa\xccnR\x1f\x16\xf6\x02\xcbS\xa5\xe7PD#\xcd1\xe08C0i\xa8R;\x8f\x8a\xbc\\\x15d\xe1\xc0\x8d\xbf.\t\xf2NA\x90\x84\xbf~\xf9\xc4\xc4\xf4Pқ\xec~Ǵ\xef\xb3\xfau\xbb\xf9\xa4\x14\x15b\x1c7:\u007f-\x8e\ny\x8e?1\x97\xe0\xf9\xd9\xcah\xe2=\x98\xf5\xd3_\xa2\xb7\xa0U\x8a\xb7\x049\xdaX\xcc/[/+\xc5u\xe0\\4\xb5\b\x05tĥ8\v?DSǨ\xf7\xe4\xb1c\xd4+\xf2\xd8J\x80F\xffpu\xa16z)+\xed~\x95Ŝ\xfa\xf7\xf8\xdfX\xa1\xda\x02\x14\xc1\xcaBu\xb4)^ʊ\x9f\x82\x9c\x8d\x83\xbch\x9a\xe6\xe8=Գ\xf1\x04\x016\x85 \xb0\x06t\xff=\xa1*P\x80\xf7B\xa2\x06\x8b\x99\xeb\xd1\xce\x16\x99\xd5\xd3\xd7M\x93mk\xe7'6f\xe0\xdeBa:\xbe\x86\xd7\x15\x13~\x16L<\xbbn\xcf\u007f\x1c\xea\xfeU\xd7\xfd*\xec?\x9e\xbf}\xd7\r\xfbץ\xe6\xfe\x06\xd5\xea?\xcc\x0f\xa8\xfa\x15ɗ1\x83\xf5\x18\xa2\x9b\xa77JO\x12]/\xc1w#\xde\v\rd(\x18E\xb2\x9a\xce\r\x88Q\xdf\xf5\x9d\bX$\xe0\x1fK\xae(N\xed\xb3\xedր\a\xc9wz.\x02\xef\xa1\xe7\x1f\xa6\x89\xc3s\x03\xb8\xad\xc34\xde\f\xb4\x0e[\xfa\xa8\xeat\xc5.\xb2m\x0f\xfe\xc1\x13\xeb\x8db\x10\xc5\f^8AgW\xea\x95\"w\x97F\x16\x87\x85\xe5\x05H\x10O#\x92\xd1\xef&\xcc\xee\x89N\xe7\b\xedէ;?\xa4\xfbڻ\x96w\xfd\xc8pn3\\\x88\xb1\x82\x0f\xb9\x93\xdcS\xd3}\x92\u009b\xfcY\xa7\xf3\x9c\u007f\x001ʿ\xa0\xd8\x02g!:4\xd00\x17!\x1d%\rJ\xa6\xc1\xc9e\x96BJbh,\xcd,g!\x10ڳ(\x06\xa1p\xf5\xb9\xd6\x12\xc7݆U\xc2P\x9ac\x85\xaa\xba\xbb8\xe1%ţ\xf7\xab\x86k\x8b\xd7⤹U2\xf8\xa8l\xb42[ˮ1~\xf8P܍\v\x88\xe74-\xd1T\xf7nG\xc0\xde\vXDNlH\xc8&3\v\xdbߢd͟\x9aq\xb9\"\xf0R\xdaPJ\x8eX\xac\x0f߸\xbfIV\x91\xbc#G=mH\xac\xa4\xd6\xc9U\x10\u05f8e\xc0\xafb@J\x95\xbc\xbe]\x8b\x19u6\xaaH\xcel\x10P\xdd\xe2/h\xb2\xf8\"\xd9N\xbd\xad\x0e\xe5\x9bhG\xf6\xad\x93N\xc7~\x15\x12Ǐ\x93M\xf3C\xa4lP\x19\"G\x82\x1c\xbd\xb1H52I\xf8\x89\xf9\xc8\x02\x91\xb8ۃX&L\xe1ߨ\xc7\xdd(u6\xa6\xf9\r\xdc%\x0e\x18\x0e\x11\xd7+|\xab\x88w\xa0\"\xf6\xc8\xc8h\x91\r\x0f9\xe1\x9e\xf4\x97eB\xc4j+\xdfh)\x96\xf2\xfc\x97L\xb7\x85\x14SF\xdfң\xddϩoS\xbf\xac\xdd\xe4ާv\x9c\a>\xa4=\xf2)\xf5\x06g\xdf\x1d\xeeM\x01\x88\x00y\t\xb9\x1c\xfa@\xf7s\x1c\x99\xc0\xae\xc1\xa3]\xb2\x8e\xad\xd9N\xe7|\xe4̙\xd5Ng\xf5\xcc\xc3\xf48\x88\xef>\xc7\xedD\xbfMV\xebI\x189\x90\r\nzx\x9ao\xcc\xd34\xdf\t\x0f\x92\x18\x8a\xa0ܦ \x1f\xe0]\xc1-ȒU\x19>\xf9\xfd\x93\xc3\x15K\x92\xedʎ=\x99\tϛ\xc8\xec\xd9Q\xe9\xfe\xdcM\xa5\xf2\xa9}\xb2\xbc?YH%QD\xb6J\xdbv$/\xb9$\xb9c[ɒEk4]YX\xa8\xa4G-\xf1\xb6a/\xe9\u07b6\x1d\xe3\xed\xb7\xb9\xa9\x04\x19\xc3\xff~\xfe/\b\x8f\xf8;\x90\xaf\x82j\xf0%\x1f\xd2\b\x06-\xf3\xa7l27\x1b\xeaF\x89\xbe]\x92\nK\x19N\xe4\x0fd\x9b\xc9ܾr\xdd\xce\x18\xd1r|\xacr \x1f\x9fN\x1eQl<\xf2\x9f\xfa\xee舕Y*\xa4\xbc\xaa\x8b-e~dKjh~x\v/q\x89\x99\x94\x95ߞ\xd6\x18O\xd6ì\xcb\xd3lQ\xc0\x91\x1d\x04\x1d*D@P\xfa\x9eE\xfe\x98\\\x97ն\x97\x81&\xd0\xd3K\x17\xf2W\xf6\xf7\xe7V(\xcb\xf8o\xbe\x17\xdd\x02\xb3\xc7-TG\x18$\xe2\xaf\xd3\xf2\xb7\xd3\xed\xd1Mҿt`\xb5`(\xba\xc6B\x95J\xe5\xe4G\xceG(@\"r\xe8\x85z(!\f\xfb\v2\xf5\x04<\xf0\u05c9T@$\x01\xaf\x91\x8f\xf3\x1bl\x144Q3\x84\rP4\x17\xcc\x14\xea9\xb4ֆ\xca\x02\xff\xb7Pݭ;\x9e\xb2gjxB\x12\xad\xb8\xa3\xb7\xdbm\x14Y\xa82\x84\x85ꂣ\xa3\xea\x9c\x1b\x9f\xdc*\x8b\x13ù\xcc\xf8\xa8\xaa;A\f\xff0\xe9\xe7\f\xc5\x12\x807\f\xa9\x00)\xc8,%O\xb0\xbesd\xbas\xad\x19\xde\x19!o\x1e=\xef\x1a\xd6MI>f\xca\xf8\xecY,\x9b1>y\x93e\xb8\xefީT\x95\x9d\xc9\x13w$\xb5z\xe2zW@1\xael\xde\xf0.+!\xec\xd9#$\xacw\xdd`\x96\xf9\xf8\x9b\xa3\xd17\xff\xca%\xb6\xe0\xdd\xd0\xfd\xb2\u07bc#9\x18\xf7\x03\xfa\x84m\x14\xf3v]Yc\xca\x11\x94\xa3\xe9\xaa\u0090_\xb4\xe0\xdb!d\xdb\xe7\x96\x19\x00\xd8\xf2\xc5\xf2\xa5\x05\xbe\xe8\xeb3\x1e\x85}\xd0wS\xbb\xfcٍ\x9e\xe7\xcf\xd1u\xf8\xa1^\xccn\x1f\xefC\xa5\x9aK\xe6\x83\x1a\xa1*Z\xa7U\aR\x1c\f\x17P\xd7\xf2\x0e]\xfb|\x0e(\x04\xeaA\xbdO\xd1\xc7\x14\xe5\x99\xc3HI)\x0fP\xa9\xe3ϐ\x88>\xfd\adݣ\x02\xd1MԵ`\x01\x86\xce\x10aS\x9fA\xd6\x11E\xf97f\xb0\xe4\xd1gP\xae\v\x06\x8f*\xc5;\xee^M\xfd\x06~\xb7\xdd^\xf1s9\xf8\xb1\xf07\x92\x9e\xb84\xf2\x12\xc8\\Pi1\x196\x1b\xd0\f\xa0Td\xa9 /\x8b\xec\xc5\x1eU\x0e@\x1bC\x96\xce\x16\xb3ڭ\xdf׃\x94\xba\x9f\xc7\xca\x1e\xcd^\xae\xce^\xe7&\xe4\x82{\x1d\x96\xa2\xb7\xa7=\xb5\xa6&\x87\xed\xe1\xa4ZC\x8f\xd3\xf7\xb7\xb5\\~5\xfd\xdb\xca\xdegɵ\x1c۱\xdcC\xeb\xf6\xa5\xee,\x9d\xeb\x0fb\xf1Z[\xdb2\xac&\x84B9!$\x90`,sqE\xf1<%G\x87O\x8e\xfe\xa3\x87Q\x13\x12\x19\xb0O\x87\xceu?\xbe\x1ax\x93y\xf0\xe3/\xfdϴ\xb0T\xa0\x01}́5\x8b\xb2\x8d\xf5MK\x81\x91h\x14\x19\xc3\xfd_h\xefʐj\xda\x14\xa9\x8b4\x05\xb0\x18BǶ\xa9\x0e\xad]\xb4\xbd9Ő\xbe\vc\x81=\x86r˝\xc1\xf3\uf246҉DB\xf9\x18\x86@\xdf5\x90\x8f\x81\xe6\x9a\xcd\xf2\xf1\x18.ͷD\xa08\x83\x89\x15>CV\x88)\xc9nN\xe6Q\xf77]\xe4\xcc\xed:x\xc3@\xfa\x84_Yj'\x12\xf3\xd74\x0f\x96%ͩ\x96\x9f\x99\xbaq\x83\xdez\xee\xc5\xe9\xad\x13\xc0qgi\x04\x16\xf8\x9e\xbd\x90\xe2\xfa\xa3'\x8e\x8aHT\x84\xb1\xfbư\x86\xc4\x17\xe1Q\xb9\xb24%i\"\xe78\xbc\xa1NQ\f\x9b\x9f\x10\xba\xf7'\xe8\x1b\f\xbd\x14\x1c\xe8`me6>\xb0J\xc1\x19X\xf8\xa8\x11\x9b\xa2zA\xe5!\xb4\xb1Ie-\xf4Y\xab\x94\x95dC\xe6\x1c\x15\xeb\nW\x10\x12\x192ly;\xeep\xa4Tʒ\xb5}\xae\x90+^G\x98D\xc5\x18VQm\xac0\x87:K\xb3\xd5\xdd'\xb7\x144CR\xf1[\x8dh\xd4x\xabj\x18Za\xcb\xc9\xddչ텺\xac\xb8m\x81\x17M\x99\x90\xf0\xa2&\xd7\xfd\xd8\xc5\xfb\xd0Wh\x9c\xf00ȃ.\xcd\a\xeb\x11\xd1\xde\x03w>\x90\xfbZ\xe4\x03\x11\x15\xa4\xeb\xdc\xf5\xab\x17\x11\xaa\xefĄ\xc9\u007f\xf3\xfe\xca\xc1\xf4H\xbe3a\xa8\xd3C\xe9\xe2\xd6\x1d\x9c)_\x9f\x96\x85\xe1>D\u070f\x0e.\xeeD-ޖ\x16\xb6\xf1\xdeU۵#\xd7\bλ\xae\xfe\xb3\xc9\xfb\x0e\xc8\n_:}(\xdb}\xa4/+\xfeQ\xe2\xa9\x01\xfa\b\b\xe3-\x9a\x05\xf8r\xa6K\n\xa9\x8d@$諏BJ\xf5z\xa0P\x8f\xd7\xc9\xca[o8\x84J\xe6\xc9\xc7_i\xd8\xc2\x13\xa7f\xf2:\xcd\xeb\x10\x81|\xf3T\xa5\xb4\xe6+\x96\x06N;\x84H\x12^o%\xe7\x03$\xb1\x1dj_\xe0vvJ'\x19|/\x97\xeb\xf4\xbf\x04\xbb`\x8d\x16\xe9\x1a=J\xad{г-\x17\xd8\xd8r/G;f^\x95}<\x99\xe1\xa1ngh\x18\x1f\xe4\x1dmQ\xa2xgҢLFɗ\xe8\"\xc3%\xc7ƒhT7m\xbb\xba@\xaeY\x8e\xa4˩>N\x04<\x13\x95\xc83\xb3\xc0\xf9y\x03AN\x00\x17\xe9{\xcd\xc4A\v\x11\xe7\t\xdb\xfcmǓ\x9f\x96=\xa7:\xdf\x16m\"\xaf\x9c\x93\x14[l\xcf߁\x9f\xc2>\x86\xcf]\xfa孧DI\x90\xf1S\xad\xcb\xf5\xbb\xd0*YC\xf9\xf3\xffI\x9e\xf3f\xfa\xeeZ\f\x81\xa6\xd7\xdb\xe1\x11Ԡ\xbc\b\xdd\xf4q6\xe0\xd6@\x1f\xec\x16\xe3u\xf4zE7\x1fb\xdaQ:\x98\xceρ\u009ct-\v\x01\x06\xa3\xc2<\x85Ρ\x9bzmnv\tQ\xbb\x03\xf5}\xad\xd0~g\xf9\u007f\x12\x1e\xb9H'>%w\x89\xa7S\xe5\xf1\xacW\xc6X̎\xa3D\xba*\xa7=\xae\x9c\xe2\xa4\x02\xba?\x9d@\xe3Y\x11㲗\x1d/\xa7\xc8\xc2Υʜ\x97\x96\xabh\xad\x9c\xea>\x90\x1d\xa77`\xacT\x93Ӟ\x13MV\x15\x8cS\xe5x\xba\xfb4=\xa4\xbf7\x9eE\xafM\x97\xd2\xf1rJ\x92\xc9}Q\xc7\xf3e\x152`Ρ\x15ҧ\x8dȁȕT*\x06\x10\x9d\x9e|\x92\xef\x1d\xd1\x01\xb3\x83[\xe2\x81R\x8e\xa0\x12Γ^\a\xf3\x00\xde\xca\xf9\x89\xd4 L7\x91\xf7CvI\xb3\xb2\xfcV\x84>\x19\xf5\x18y8\x1faT\u008b\xea1)\x9e\xce9+\x85-z\xac\xfb\x971\x14\x89\x89Is\xc5Ln\xe1\fI\x930_0in-t\f\xb83ų!\xb4R2~\x88\xf3\xb1\xdaP\xb4ه\xdakF\x87j\xb1<\xce\xccY\xe9\xa8Z\xceͥ\xe6\xe6\f\xc7\xf9\b\xe2xI\xb0\xf2\xa2\xacc\xf2\x03\x99\xa8\xed)\x82\xc4s\x88\xf2\xf4\f_\rd\xb3\xc3\x1bP\xad\xc2 ̽\xa3\xb0dV\x82\xe3\x1e\xf8=K\x8c\xe0gh\x98C\xe7X\x9a\bZ=\x96\x88\x80n\xcfG|\a\xb6\x88LA\xf7d\u007f\x87\xdaa\x98*\x06CŶ\x0f\x04\xe8T\xbd{\xe5jD<\xdf=\xff\x19\xee\xcd\xe8KD\xaa\xbe>rO\xe4\x81\xc8{\t\xfd#\xd4\f\xfb\x9a\v\n{\xdcS`@\xf2E\xaa\xc7\x00\x1d\ag\"\x911d\x12\x96\u061d\x15\x8a\xcbZ\x86@}\xba\x81\xd0Z\xae\x19 \xad\xfa1\xa4T/_*\x83\xbe\x86P\x87,\x0f\x90\x82e\x11ֆ\x19\x1aT\t\xd2u\x99\x8cn)+x\t\xb8\xf8N]䊢\xc6Y\x9czL\xe2ŝ\n\x9e\x13\xb0tTE\x18\xe9\u0084\x84\xb7\x93k\x9a\xc8紡\x12\xfa\xbe!\x90\xa9nr\x82\x11\x1b1\bK\xf7s\x99\xf7\x8c\x918\x99\xe6&lj\xa2.\x0f+j4'J\xba\x85e\xcbq\xec\xd7;f\xdc4x\xcc\xdb\x18w߀\rU&\xeb\n\xe1\x00tBs\xb0\x88\xf8!\x14\x97\x10\xaf$^/aœr\x1fzUfL@\x9c\xcc\xeb\xa2\xc1\xc1\xddH\xf8\xfbi\xdb\x1d\xdeP\x9f\xc1\xba.`~\xc2ģ\xbf>\xe3\xe8\x02?\x8fE[\x94\x05\xcf\xc8\xee\x86*\xcaR\\\xc2\xf3\xa2\x18u\xa6\xb3\xba\x80\x86&\xb0\xa4c\xc2\\\"$\xe6\x05Ō\xc7S\x8d\xac\x1eu\xaf\x03\xf0C\"\x99k<\xe29\xd2\x1cQ0ǒM\x8c\xe3b\x9e\xd3\xe4\x89\xe9\xe3\xf2\x90)H\x12Y0xDo\rr\xd5\xf9\xb2֨\xaf\xed[\fi\x0e\x06\xd5\xc0t&\"Ƴ\x90դ/\x14\xe3m\xa8\xd2S\fCrq2\x9a|M0\x19Z\xe9x\r\xe7\xddg\x8da\xf9\x96\xee\xbdT\a\xfcڣ\xe5\xdf\xfa\xe0\xd1+?NO@\xbf\xb2L\xa8\x88\xaf\r&\f\a\xa15\xf7D\x13\xa6\xfa@\xa0\x06\xee\x04\xaa\xe1>\x16\x04\xd8:/\x89ܸ\x89\xcd\xd7_B\x80\x96\\$\x93)\xe1\xbcY*\xd3p\xc6\x1c\xc6\x14\x89\x80g\xd4j\xfa\xb1\xb8\x89m`\xbb\xafϵ\xc2yN9Pl\x8c$\xe7\n\xc3\x15\x9a봔^M\x97\xe4\xd1\xf9\x98A\xe4\xa9\x11\"\xba\x91E\x16\x90K\xba\xdf\x150ު\x93_أ!B\xdc\xc5m`*\xc3|8]9٥\xc6\xe5\xd7\xe6\xa7y~:\x9b\xa4\x99P\xc1\x88\xb96?\x9a1\x1c\x8es\xb4\xbb\xe5\xf1T\xce\xf7BaS\xb5#juQVn\x16\xf1IQ\x16{\x18\x1dk\x14\xe7v\x10\xa3\x03\x14\x1b\x01\xd6P?\xf9\x1a`\x10\xb5\x00\xa4㜚Rϱ\xdd\xeb%\xe92^=c\xb8rN\xee\xa8\xfc_\xf4\xaf\x90ݏ$\xe9\x18/\x88M\xd7X\x96\xe5vS\x14\xf8H8\x97u\xa5\x97=\xfd\x8aH\x87J\xect\xe1)\xfa\xebS\x83q\xd84\v+\\\xa9\x15q\x82\xb0\x9esb«W\n\xb3\xcc\xeb\xbaU$S\xdaW\xf9\x04.\n\xa3>c\xca\xf9\xe5=4r\xea\x04\\\x8a~+J\xb6\xb9\\ﰔF\x15Y\xae\xa0\xee9K~\xba\x8chA\xf9i\xd9z\x92r\xa1\xafa\xbc\xe8\x1a\xe5]s\xf4\x04\xb5\x19#\v\xe0 \xb9\xf0/6K;\xad\x9c\xb5S\x91-\x8a)k\xc9\xd7\xd2\x1b\x1f\f}w\xe0\x87\x06\xfd\x95\xc0\xef\x1c\xb2\xcd\xec%}\xd1\xc7եv\xb6V\xb9\x87SBexq=\x97\xce\xfc\x13Z\xae\x93\xf7\xc1\xd8yr\x149\xbfU\u05f7RT\x9d\xd1Q\xc0ع,8\xd0\xd8\x05Bb\x15\xb2,GRe\x05\xffs\xcc\xd8nFї\xba\x91L\f\xad\xc62\xed\xeeʧ\xb7i\xda6\xb8\x9b~\x8b\xfa\xbd\xb0\x03\x8d]x/\x19\xb3\xe0rA\x86\xb5\x16w,t\xa6\xfb$U\xfau\xff\x06E\xceS\xbd\xd4\xf9\xf3\xe7?Gm\xc2&i\x1b`\xd2\x04\xa3\x8b\x8e\xb6\n\x1btl\xccy`\x1f\xf6\xd6\x17\xe8\xba\xfe\x03Q\x17\u007f@v\x9a\x169Ow\xe4d\xdbo\xeaC\xfa\xfb\xb7\x06\xa7[\xdf\x0f\xa7hR\xcaH7q\xdcM\xb0#\x94O\x1a\x16\xc9\xee&qXJ\x1d\x14Ń\xefe\xc5p\x95\x9e\x0f\xe0p\xe5\xa9G{\xe0'\xd6_P7hC\xc5Pjf\x9a+\x96\xf0\x0f\r\xca\x1b\x95z9\x81bE\xea\tA3r\xc0\x81\xae\xe0*\x99\xb4\xa3\x14\x00\x9fLJP\x82\x02\xef|\xfc\xf6\xd9\xee\xaf\xcaDv\x93Wh\xc4\tS\xe0\x84\x0eW(&>\x8ee\x0e\xdft\xb8}\xfb\U00043b5c\xdc\xcb\xf1\xd5\xcf\x1f;G䌝4[\xd90\xa4\xcf\xf4GEŏ\xb0\xa8\x87\xf3߆\xc0\x9b\xa1\\lT\xe2\"\xc5á\x82\tw\xb7 q\u007f\xae\x18\xdd\x1f\x19\xee>\xcd\"C\x94\xe7\x1fZX\xe8g\xd2\xdcb\x99sݵ\x1a\xfaIB\xd5&\x92\xa3I\x94#\vF\x94\xe7\x9fU]cF\xe7\xa2\xfa5\xb2\xa5\xa0d\xad\x8f\xddZ\xc3ɝ;\xe4\xa5\xd3\xea\x84m/y\xd1d2\x84\xc3W\xa3\x1c\\\xbf7[\fY\xab\x1cx\x98\xccW\x9a\x14\xe2\x03\x87\xb6\xe8˩\xe2x\xb6\xfbpv\xbc\x98\x1a\x1eϚ\x89R\xda\xce\xcfX\xaaX]\x90\xa4t)\xf1\xffQ\xf7\xe6qr\x9c\xf5\x9dp=u\xbf\xe7\xa9\xee\xe9\x19\x8d\xc1d\xf3\xfe\xf1J\xd3UOU=u?\xf5<\xbf\xf3\xfb\xb5s\x13'\xe4z:71\x91K\xd7e\xbf\x9c\x9bp\xb3\xe9\xcaL1鉝z$ZIg݉\\y\x1d\x1f\bӶ\t\xb1ɵu\xcev\xa6\a\x97\xa6E\x18\xb4\xa8\xe8\xbb9Q\x87\x85w\x1cE\xdf7|\xef\xcf\xf5\x98*\xe2\xbbd7\xe6\xcaK,W\x88\xd1M\xb1\x1a\xaf\x89Ut'\xae}\x12\"\x13\xfb\xff\x14n\xa2\x13\xceS\x81\xbe\xc1\xf0\xa8\x06ܵ3\xeb\xed\x8bl\xa2b·b^N\xcc\xf2\x90bFm\xfbU,I\x05\xc9\xc2O\xb06\xf6\x04\xb6蒄\x9fxbd5\x15+\xa5\xe1\x86\xfbeK\xe9\xd0\xfe\xf7\xc4{ὼ\xf7\x04\xed\x95;Ty9~|d\xbdD\xe5\xce\xf5-\xa1\x1f\x88\xf7KY\x96\x8b\u007f\x95\xf0\x02\xe16\xe1\xa5\xc2c[p\x12\x8e\x04J\xf1\xbc\x82\xf5\xa0\xa9\xe0\xff\x83m .t\xea\xfd.L9)\x0e\x1b\xe93\xacxA#t\xd4-N\x17\xe9\x1f+^\xb1\xa2\xb7y\x17\xb4F\x8f\xc6\x18\x13\x11=f\xff\x02\xe7ӡ]\xd9;`\x12\x87ŗ\xb2\xef\xa0\x13\x14\x8bo;K'\xc1\xd9\xe7X\xf7\xf2-\xf6\x85\xf6\xa6o\xf1<\xcf\bw\b\x0f\b\xaf\x16\xdev\x05\xcbZ3h\x8d\xdeo\xfby/y[\x1cg\xfd)\xb6\x9f\xf7\x12<\xe1J\xba/@\\Ww\xf8d\x87Ot\xf8$\a\x9b\xa0\x1e\xbc\x8fJzy\xf0p\x87\x8f}X\x18>wx\xde\x1c[\xbd\u07b9X`iP\x83'\x19t6\x96\x86[\xdfXI\xb3\xb7^HW\x96\n\x83-\x99\x04\x94\x12P{X\x8a\f\xb72\\\xc3\xcb\xcfR]\x04xa\xb0P\xa7=\xe5a\xe6!y\t\xd3GHu\x0f\xa4Ã\x1b\x97\xdb~\x01\x16\vp\xc8\xc1YB&\xa8\xf0C\x1aq/\xf0Y\x90h\xad\xda\xf2\x17\xda~\x05\"\x05l\x91\xf7\x0f\xed\x05\x82\xbd\x05fu\x9aFT\xefXhcn\xbdY`\x99\fT\xe3Y\xf0\xbf\xac\x16b\xc8N\xbfP>T\xb5RD*_\u007f\x04\x17\xe4X\xecE\x0f\x8d\x8d\xa5\x9cB2\xe7S\xd1\xfa\xf6\xeb_-\x12\xc7p2\"\x8aMY\x12z\xbf\xe9`\xb1@Nݲ\xef\xc4\x02)\xc8Y\xef=O\xf0\r\x92[ȤO\x1dҧ_[\x92\xbeFE\xf2p'\x14\x9d\xfaҤ\x11wr\xc1\xb6ĜQ.\xa0\xb1\x03Տ{5};\x96\x03$+\xde,B\x93z\xdc\x16%7\xaa\x10\x8dDp\x9ex\x19\xeb\x13㇋ƾ\xe5\xf1\x8f{9)\xf9\xcb|\x83\x12Mc\xf7\xe9\xc8T-\x13L\xd4O`ň\xdb\xf4\xa4\x0eݨ\x8e\xfa\v!\xcaf\x0fD顸-\x11\xaf\x19g\b\x02%0n\xb4\x9a\xad\xf5\xc9P\x80\x86\n\x1e\xde\xe4\x94\x1b\x82T\xf5\xa8\xe6\x147\xbaѼ\xab\x1d\xba鐖\xabt3c\xf0\xc7\xc8\xfb\xbaN\xd6}\a\xfbVG\xff\x90`&\xe2QK\xaez\x954\x9eھ}J\x9b+T\xf5\xd9<\xfc\xb8\xe75N7T/\xb1ڷ\x8fL\x87vk\xb8\x0f\xf0罁~\u007f\x97\x84o\x8f\xf8\x8cx\x1cE\x99\xe5\xa7l\x84\xaf\x0eo(\xcf5\x82\n\x04(\xb0\xae\x19\xf6\xc2$\x8c\x89\x1a!O\xaf\x0e\x02\x8a\xab\xeb,\xa6\v\x03ք\x85\xf6\xf0\xf9\xf8AH~\xeb\x0f\xb9\x03k\xc3\xcc\xc8\xff\xe0\x03s\u007fUԮ5R\xd5\xfd\xfe\xa2\xbf\xff\xd8~?\xca\xc6k\x8d\\t\xad\x97R\x9d\xeb\xd4\x11`@x]\xf3$j\xc08\xa2\x11\x85\xceXX\xb3\xac\xf3h6C\x0f\x97\x15Y\x81}\u007fX\x85\xc7\xd8\v[e1\x1c\xff\x01\a\xba\xc4V\xc73N)\x97+\x95r\x83l\xb2e˵\xf5;]\xab\xbb\xdc\xed_\x82\xc1\xec\xc7<\xf8\x15\x15\x96Xs\x99\x87\x18\x12U\xbe\xa2\"-\xfc\x98G\xe2\xdf\x0fכ\xdb\fg\xf3\xe8H\x9b\xdb:\vṛ\x9e\u05ec\r<\xcc\xf2\x86\x17;'.\u07b4(\x1e`ӹP\xa2\\\xe5\xaf\xf5\x9e\x06\xbc\xd6\xf7]\xf3g\xfc\v\xda\xc5\xdf\v\xbf|ezqqZ1\x06sNyg\xb9=x\xaaOЧ\xbaF\xf5鵑\x0f0\xd4]B\x1b\x95H\xc77\xe0\x02<ʢ\\\a\xa2T\xfbJ\xeab\xb0\xe8\xd0\x16l#\xae%S\x11\xbf\x19\x00\x80\xd3`\xec\x01S\rPͶ\xd9h\xf6\xbeX\xec\x1d\xcc1\xfe\x04#6^\x86\xe9\x97TM\\\x10m\x92R\xa8J\xbd jjԔ\xd4C\xaad~\x96I\x9c\xa6\t\xc2_\xc4R`\xe1b\xab\xe5pT;\xba\xf7%\x16~P\x00\xe6cK}\x0fk\x8d\xefQ-\xc3\xf3\f\x87\x89\xb7c\xf2Į\t\x8c\xb50.\x04uø\x88+0\xeeG\xc8<\x86.\x11\x16`\xeb30k\xc4p<\x97m\xbd\xa0\xdb\xcbP\xdcV9r\xf7\x91\xca\xc1\xa9T.fx\xce\x1a\xdb\xf0\x14lx\x8a\x15w\xb6\xf6\x9d8\xb1\xaf\xb5\xf3b)\x97\xd8\x1e7\x8bu'7\xc4\xf3\\c9\x8c\xc0\xc0$T\xb6fW⩡\xeb\x9ck\x83\xb4\xceQl\xe5!\xf3\xd2\xda&V\xa5\xfe\xd3\x1aip\x86hf(\x18\x14\xff\xbe\xff\xb7\xc0\xb3t\xc3\x15\xd9{\x03q\xfb\u007f\xe3f\xd74r\xe94T^4\xf5\x05]?\xa6\xaf\x15\xe8\xf6\x86\x9bͺ\x8d\xac;\x8b\x96\v\x85K\x89\xc4D5\xeb^\b\xb9\xdc\xcd\xe15C\xe4\xf9A\xe1\xa4\xf0B\xe1\xc5\xc2CT*{\x8b\xf0.\xe1\x17\x84_}~\x96\u05edm\xb0\xcf\xc5\a\x1d\xfc\a\xd5q\x9f\xa3\x0e\x80\xb9sf\x02[\xaf\xb3Ϣ˧\xb6~\x01P[ͺ\xb9\xe9\xafw\xe5\xaa-jmX\x05t\f\xfd\xef1\xa30=\x1d\xcf\xe7\xe5\xd3\xc3и?\xf4\x15V\xeb\xee\x91\xe9'\xaeXs\xfa\x8a5\xfd\xef\x8c,\b\xa3\xb8\xf9q*\xb9\xf1x\x822c\x19\xa5=\xe4\x1e\x11\x94F\x05\xf0\xa482\xf3N\x91\x033WY G\xf8\x05\xd8b\x00)\xbcܑʠ\x99}\x06\x04\xc2\xc1\xa8\x81\xa3\xf1%\x9d\xe6\xbec\xaa\xa8D\xb2x;J\x04YILD\xe7\xb0F\xd5[E\xc5Q\x191\xd0)\xfa\xfc\"\tS\f7\xe1\x8d[\xd0\xea\xa3\x1fy\xd4m\xaa\x92$S\x8dq\xfb\x91\xeb>!V\x12Ѥ\x12AD\x15eZӔ4\x91el\xc4P,\xe3l\xb9%\xc4KX\xa4\xf7\x1a\x13N\x00\x93\x850r\xaf\\?\x9e\x93\xf8\xbbfh\xd4\"\xbbgf[}^pԊ\xcf\"̘\a\xa8\xe63\xb8\x82\x1ah\xe0\xf4\xe2\xaf\xdb՜\x9cVE߮>\xfa\x91\xf3\f{\x1a\\\x12\xdb4\xe0\xae\xfc\xe1\x98\xd4\xe8\x06ۧZ\xe3\xf4dsW\xf7\xceD̾\xed-h\xfba\xb4\xf8\xbas\xc9$}\x1aA~\xbc\xb9x\x0e\x88-\x1c\x94\x8a\xa9\xb6\xa1\x89\x96\xa4ӱq\x00A\xed\xf0-\x9b\x91\xa9ߜ\x0fd=\x99\\\x98\x12_zB\xd7cKsMa\xc0\a\xcd\xe3ն\x8aT\xdb\xc44\x92E\x88\a\x93\xb3\x10Ñb\x88^\xc1\xc3\x05G6\xae\xebi\xe0\xbf;C{\x82\xdbh_p\x1f\xed\r^)\xbcVx#\xe8i\xe1XP\xaeQ\xa1\x8c\x05e\x96@,\v\xc2H\x876\x88e\xa1\x11\x95\x16\a:\xd8\xc2z&\x04-\x0e\xa2\x1e@4\vMa~P\x83E\xf0\xf0\xd2\xcae6\xe5+\xe0G\xfcu\xb7o\x9bVi\xb2);\x83\x8f\xbeKt\x9dD\xd51KA\x8a/ۊ1\xb3\x13i$G[\xe4\xce\x19C\xb1e_V\xac15:\xac%?w\xa5ߑ#\xd6d\xee\xfaJnҊ\xdc\xedᮤ\x1d\xc3ެ&\xedg\xeb\xe7X\xf4\u008e\x91\xadf\x176\u007f\xfd\xdfy\xb6++=F\x8f9\xebav\xce\\\x85\x9e\xf4\x18;\xd9\x1b\xd8\xea\x87Y\x84ą\xf5\x8d\x87e\xd8\x1a\xc6\xc8\x00'\x13\xd8O\xb7A\x1f\xd1\xdeh\xec*\x93֨\xe5\xabT\x05\xc3\u242e4\x80\xe8u\xd2*z5\xf6\x8d\xb1\xaa{\x94\xe6\\N\xe6\x04\xcc\xfeš\xfd\xebb8\xa7\x93C\xf3ޟp\x81\xe4OP6F%\xa3\xe5\x98cg\xe2\xc7\x11A\x19;P\xd5\xc0\xce\xd0\xe2\xf1x\xc6\xfe\xf6\xba1liP\xd0\ue3fc\xf3\xcf@\x1a\xf9\xb3w~\xd7N\xe8\x87>\xfd\xe9Cz¶\xf4\xa9x\x06)\xc8\xd3\fC\xf3h!\x13\x9f2Fx\x96\xa2\x8c\xb9bn\x83\x04\xb0\x93\x19\x886&\xa9=\xbd.+\xadv\xa96Μ\x0fk\xe05`!\x95\\\x06\xea~hx1\u0086s\xb4\x9e\xfb\x1c\xa3\"\x05?ۨ\xd8q\xc5y\x0f\xb3\xc3\x1f\x86\xd3\f\x8bW^\xc3\xc6\xedP\x14\x18\x87\xf3g\xc2x\xf2\fC\xbb\x83\xfe,`^\xc0\xddh\x80\xf4;\b-\x0e\xa0/\xac>\x170?w\xf4\xb2\xae\x90Sho\x84\xe6\xffս\xd7\xeeT\xcbΒ\xf3\xc9H\xd4C\x97\xbch\xe4\xe5\xaf;w\xeeu\xe7.n\t\xbe\xaf9\x06\x81բ\xa4\x88\x1bQ\xf9S\u038b\xf6\x9f\xdc\xeeh\xc6.3\xfe3_\x8c\xd4j\x917\x9d\x83\x03\xfd\xd4\x16}\x1b\xb3ᚎ\xc6\u05cb\x8a,\x8el\x116إ\uf83d\xcf\xcbG$\xd0V\x19\xfe{M\xfa\u007f\x94\x95\xb7I\xff\x97=\xf6\xffJ\x9da\x83\xa3j\x8b\xf9pR\xf3\x9a\xe11\u05edF\x88\xc1\x80,\xb1()\xce9\x1d\x96C\x85\xd1\xe1~\xab\xeeȏ\xbeI\xfa\xf7=n\x05恍\xb45\xf4\x88\xb6\xda[^\xee\xadr\x11\x81\x97\xd9\xea\x15\xa6\xbe\xad\x8c\x84\xfe\x8eLW\x18H\xc8\xcaE\xe6\xc3\xfa$\xb7\xad\x8d<\x9fYa/\xd8\xed+\x1c\x8d\x99C\x10\xb7\xd7\xef9\x94\x8b\xae(7\xe7d\xc0\xf5\x9f\x16\xc1/\x9cC\x03}\x05=+i\xe7;\x1f\xeb\x9c\xd7$\xd5\xeb&\n\t=\xae\x0f\xa7]\xaf\xff\xbf\x1a\r\xd3T\xa2s|Ʃ\xf6ނ\x89\xa5ݻk\u05fd\x9aE\xb0\xfb\xb4\x93H8\x8f\xeb\xfa\xaf\xc0\xfcWt\xfdq\x98?\xdd+Л\xf1\xc6\xd8t\xd7 \xf6|\x98\x17<'\x1c\b-\xc1tt\x9eAA|=\b\xbc\xd5&\xa5a,8\xc7\x19o\xf3\xd4d?\"\xd6\xda\xc0\xe8Mj\x01\t\b\xf0z\xd7\xd03\x96b\xdezT\xb3\xad\xbbeCU\xf1\x81\x03XU\r\xf9nQ4u\xf5警b\xdd;\xa1\xc4\xcds%9%\x97Ιqebfl\xa6\x15\xdf\xe68\xdb⭙\xb1y\xb1X\x14\xff\x19\xa5q딞\x90\x12/U\rr\xfd\xf5\xc4P_\x9a\xf0\xf4S-\x9cFΝV\x94\xec\xba˲\xee\xdaE\xa2֝\xaf\xac'չl\xb3\x99\x9dS\x93usabb\x81\xc7\xf48\xf4\xbe\x1a\xf4\xbe^O\xef\n\xa2Hʐ\xbeI?\xc8y\xfaj\x9a\x90\xc4\xc9Ll\x90\x1fN\xbf\xe9pN\xc7:\x1e\xca\xd5b\x88\xfcl\x02)\x17y\xe4\xce7g\xe7<\xb7\xcd}\x01\x11\xee\"\xe2\xbb\xc1c\n\xe0x\x1c8\x04\xde|k\x9e\xcfYdd@\x9a\xfe,\xad-&\x8a\x8f\x9f\xc4\xe4\x9a\xc7\xf2\xf5\x9d2B3\xe3\xda\xde1\xe00\x92\x90\xbe\x83\xe0\xf1\xed\x93bZ\x14eQD\xf1\tB&\xe2H\x15ŜI\x9f\\\x9e\xae\x95\a+Y\x8d\xb4Xi\xa9\xa2\xe1\x1a\x98\xecБ$k\x8a<\xb6W\x1b\x9fA\xca\xce\xe5\xc3g\xe53\aw\xbaqE\xd1\xf5\xf1ɛ\x13\x12\x91\x15IJ\xa6\xae\x9aTT\xa2T\xda\xdb\x0eh\xfbb\xfc0E\x8dvhZQ\x14U䡂\xaa\xf6/yH\x1e]\x0f\x17\x13\xdbGZ\x15ӊ\x94\v\xbaBTe\xf2\xaatB\x92\x14\x99\x88\xc9\xe5\x89\xf1h*\xb5s\xa3\x8e\x98\x13Vy\f\xd5\x15\x1ab4N\xb8\xfaW\x94\x985ӋÃcxo\xf4\x19Ά\x0f}\x17\x9a\x9dg\xdcR\xb00-\xb2\x04l\x88\x05\xb2\x11ma>}\a\xad\xf9V\xad\xcd\x18\xe3鋤o\x95\xd4\xe6K\x1e\xa9\xd1\xf6\xe9\xc5!ÓM@[\xa3\xa3+\x99\x16\a\x11F\x10\xa9\x1a\x9e\x12\xa3_ۨ~\xee\xe7j&\xca>[\x91T*sk\xbb\x8f\xef\xd6\x12\xa2Do_\xaa(\x9e$\xa9bZvb\x9an\xeb\x8e\x197E\v!Y\x8bIRL\xa3\xafѦo\xd0D\x10\xdb\x05kT$!\x84\f\x91Vshu+M\xd2\"\x15?=\xe5\xd0&\r\xb6\xff\x89\x88A\x95U\xe4 T\x10eU\xf4\xaa\xb3\xb3UO\x04\x00u\xb1@\x8f\x1a\xf3a\xbf\x94\xe6F\xe5H\xccʨQ\xdfL8RY\xa3'B\x11\x89ރl\x03'\xee\x8a,\xdfǮB\xa6\xab\xa4\b=\xb7\x84HQr\x12\xa6\x1fU3V,B\xb2V\nn\xc0\x8fq{\xe3\xe7\x18\aI\x84\xe1\x93\xee\x16\x8eB\xfc\x12\xb0\xd0T\xaaDa\x94\x14\x00÷\x10Pm\x1e\xf3\x8e\f\xdcw\xd0\r\x87\xd8\xf2{\x99Q/\\ʡf{!\xf0XD5\a\a\a\x04\xa8\x91%q\xc2\xef\xffk\x10\xf4\xff\xd5Ҿc\x17\xec)\xdbF1\xdb\xf8'\xdd\xd7\xffɰ{X^\xc2\xf0\xbb\x80\xe5eLG\xb2e|\x11/\xc9\x18~\x17\xf02-\xd0\x1f\xba\x9b\x04\xb3K\x84,\xcd\xeaQ鄢\xdc#\xcb\xd7~ӈJ\v\xa2\xb8 E\x8do\x96\x1cYA>\xa2\xea\v\x9d\x89\xdb\xe8LL\xd1%IF)1\xea`\xd1G\x8a\x1cŴ\x862\x16\xc5t\x13[J\x89\n\x1d\xdb\xff\x17}\x16\x06}\x16\xf7\n/\x13^\xc52_\bG͡R/\v3c\x91\xd8b\xab\xe6\r-a-\x1e\x06\bajA\x88\xd1\xc0(, \x12\x94\x8d\xee-\xb0|B{\xe36P\xb0\x972\xd7\"\xb3\x9czm\x90\x10x\xc7@\xa0\x91S1\xbc\x16\x0f \x9c\x1b\xa3\xd5Μ\xa3\xe7[\xaa\xb1\x94\x9dQt\x1b\x1bDV\x89<\xee@,\xfe8\xb24Pe\x95\x99쒡v<=9\xb3ˠ#P\xb2Z\xbcf\x8a\xd6K\xe5sI,\xab;w\xd2O=\x99˧T\tO\x1d+U\x93\xb4cxAZ\xb5,\x9c\xede\x15\xdb&i\xf4\xaa\xdc\x03{kc\xbbu<\x11/\"['\x06\x960\x95-rZ\f\x14\x8f\x98\x96\xcbh&\xb0\xcf\x16\xe3\x13XߗH\x1e\xec\xd1QS\xd7\xeb3\xf5C\xfeB|\x8ch\xd1H3\x9fkF\f\x8d\xb4ZD3\"\xcd\\\xbe\x19\x89jd,\xbe\xe0\x1f\xa2\xd5d\xc0\xf6\u007f\xb0\x10\x8fV\xab\xa6[*\xb9f\xb5\x1a\x8do\x94%\xa2\x8cϘ3\xcf\r\x1cD\xbc\xddQq\xa2\x15\xfe\x06\xe4\xb9;Ѧ\x18\x83&\xfa\x17\x9d\xbb\xaf\xf5\xff\xa9\x98ʗ\xba\xcb\xf4?\xb0s\x82e\x81g\xe9\x85\f\x9e\xb7\xcbF\x05\n\x15C\xbeA\x14?\xbb\n\xffx\x10\xca\xf2\b\x91\xa72\x12\x93\x03Y\x8e\xbb\x81uh\a\xf0g\x0fEs:(\xc05\xd8\")1\xffL\x8dvK\xadQ\xfc\xc7\x16\xd8\x12[,#\xa9\xecUX\xf6\x11GL\xa3\x02\xeaOLL\x16¨\xb5na\xcdrI05.\x964\x12\x8d\xa3\xf1\xa9\x80\x00\x9b2\xf3\xd6JcI\xa0\x96,t\xfb\x97\x96y\xb0\xf8\xa5T\xb5\xe07\x1e\x87\xad\x8f7\xfcU\xd7rq\xac\x98\xf35\aeK1š\xca\"sK<\x9e,\x16,\xb7\xd7\xed.\x17\x18\x03\xe4ruĖ\x04X\x1fYz_s\xf4\xbe\x0e\v\xa7\x84sT\x8f|P\xf8X\x88\xfb8\x9a&\xb5u\xa9\xb90`\xaa\x19!\xad\xf9w\x17\x95\r\n\xd0\xd61\xde#\x1a\x93\xbf\xc1&\xb7p\x81Y\x8fzlzi\xa4\xfcJ\xfa\x85\xa8j\xe1\x81\xe7=\x139\xe6M\xa7\xbeƛ\v\v\x00\xbf\xb8V\x0f\x93_,NE\xbf\x06\xfa\xb9F.\\`\xa9ᛦ\x05\xd7R\v\xa69\xcd>\x9b\u007fw\xe9O/\x84i\xe7\xdd\xf5\x06\xd9\xed\xd4\xf9Z\xcbeWw\xd1\x1dpG\xf1\xf7\x99\x10\xf6\x03\x92\x90\x17mF\xb9\x16Y)\xb2\x0e\x85Q\xf2\xd1g\x8a\xfb\xfb\xefΞ=8\xa9\xaa\x93\a\xcfrV\xe6\x94\xdbMP\x11\xd3IC\x86;\xf3f\xf5$Տ\xdaT\x90,\xa0n\x1f\xda\xdb\x1fe\xf2\xfb;\x93-]oMv\xf6\xe7w\xb1L1\x8e\xbdy\xd8\x1b#\xaa\xa4W\xbd\xc3|\x99'\x91u\x91\x12\xf3\x8a\xb1B!\xd3\xd0\a\xb19\xd0/|A\xb0\x85;\x85\xd7\xd1~\x81\xdb(\xc2\u061c\x92\x1f6\x12\xd6\x13C\xf6\xa3\x1f\x9a\x969\xef\x84\x1f\"\xe4\xb2-ANjr\x00\x0e\x16\xbc\xb0\x93\xf3\x12\x96X?=\x0f\t3\"\xed\xa8\xa9\\ \xb2\x10\x15[\xa6;*\x80R\x9d\x93\x16Ћ}I\xf2\t\x81\xa9\xa4\x92kw\ueb24k\xae\x8e\f\xa953\xfe\xa2\xc1\x18\x0f\x98F\x9a\x10g\x1e\xab\\\b\x9a\xdbR\xe6!3\x9511s\x12\xc7a\xef\xb4\x17\xb5\xc2\xef=\x8b\xc4{T*Y\xac\xf4\x05ES\ue85a8zځ\xe8\xc6e\xa7\xa1\x1d3\x8cc\xdaI)\xaa\xddN\xbb\xe6c\xd8\xd4\xc4\x19\xdaO\xff\x9b\x16\xfb\a\x16q\xba\xfc\x0f1-\xfb\x80\xad\x1d5M\xaax>\x10\xfa8Y|\xe7\x00\xef\xf8\x87F\v\r\"X~\xd82\xba\xc0,K\xab0]Yﱗ\xb7,\xa2\xd5AU\xb4\x1c\xcf\xf4/\xf6`}o\x88\xed\xc3&\xdd\xc1D\xd8\xf2z+\x1b\xf4'\xdfS\x9a\x1b\xb1R\x83\x1f\xb1\x8c\xd6~\x8cKp\x06\xf5\x9eǽ\r\xf1j\xd0k\x98\x8f\r\x9c\xb0aR.\xa9\x91\x10/\nFn\x16<\xc6b\xe3\x01\xd1\x02\xa4\xeb*J3pۛ\x13\xe5{]/\xf5t4\b\xa27m+\xc4c\xb3\xb1j=Q\xdba\x16=\xc9:k\x16C\xe8\xda/g\xf7\xdd\xeb\xce\x06\xa5\xa0\x1c\xbf\xaaxSQ\x96s\xd33\xba\x94,\x1a\x87ui\x143g\x1c\x18B\x05>T@\xe8\xe1 \xde\x1b\x9aV\xa3\xb9\aq\x1b\xf90\x84K\tǔ\x990\x8a\x9a\x8b\x1b\x03\x86\xa3\x05\x80(\x9e\x9b\x05\r\x16I)w\xa6\xfaqYv\x1cK\xbb\xc1y\b\x91\xa4nR\x15\x1e(\xa0У\xbe\xe3\xc8\xf2ǫ3tp\xa4\xcb\xf65\x04\x9bz\x92\xa0\x87\x1c$\xd0\xc1\xae\xb6W\x9fA\x9e\xb1L\x15\x97\xdc\xc9l⢡`\x922^\x13\xa4\xaea\x96'\xebm$X6<4\xa3\xef\xad18*f\x90\xba&\x15\xbc\xc6Ha\x82\xf5\x8b\x89\xec\xc9an<\u05edg\x85\xe3\xc2u\xcf遍\x88%\x06\x9bߜk\xb6\x83\xb9\xe6\x1cc\x99(\x03\xd3b-\xf4e/P\x85\xb9Q\xe2\xdd\xf4\x0e4KW͗\xab\xcf\xe9\x94}\xbb\x91\x14\x11\x8aA\xda\x12\xf2}\xd0p\xe5\x18Bb\xd2@\xf2Ι\x03\af\xe2˲\x18Mʦ)'\xa3\xa2,\xfb\xe2\xfe\xfd\xcb\xfb\x89\xa8\xe0\xce\xf1\x0e\xb2I\xff-\xdco+\r}\x1eIa\fr\xd5֣\xc1w\xa3\x11\xf4\xd2\xe6\\ s\x16j\xf0ҷ\xb9\x86\xe5q\xd0\\\x9e\x99\xc1I\x89\x81\xa4\nƠ=`dd!\xb1\x9cl\x97\xa5\x9f\x83\xd5\a\xfd\x1b!\x19\x12'\xb7\x93\xce\xe1\xeb\x1e}\xf4#\x8fN9:\xe9_~\xe4tm\xb1\xb6\xeb\xf4\x87\xedX2\xa6:\xb4\x9fW\x89I\xd5Q\x92Q\x88\xb6͎\x99\xae\xb9y\xadB\x0f\x92!\xf48\xba3E\x0f\xf3\xe8u\x87;D;\xbd\xab\xb6\xbfz\xfa\x91\x83J\"\x12Kq\a\x93\xa1\x10C\x96dU\xd1%\x8b\xae6\xe3\xd6\xe6\xd5C<\x84\xe1sh\xf0\xac\xc8\xe7\xf1$\x16F\xe0\x0e\x83\x01\xdaV\x0e\xfd\xf0\xbb|\xe9\x9e\xc9\xfdT\x04\xd9\u007fD\x87\x00\al\xfe\xb0[\xf9\x99\xc9\xfc\xd8\tI:1\x96oA8\x03\xe8\x8f\xecz\x19'\x1e\xe8v\x8e\x90\x16*`\xbboېZ\r\xfe=\xb0\x18R\x8d\xae5\x00e\bp{\xa8]Ht\xc3\xe0\x83\x05E\xfa/\xea\xbe\xef\xa5\n\xc9i+\x16͝Y\x05\xe8t\x11\xabk<\x15v-\xe7=@\xb7m\x83mo̝\x1b\x8f\xbaɠx\xd8\xdfwq\xf5\x12\xa46\x89\xb6\xc3s\x9c\xfa\xcf\\|:\xb5;r\x86o^\xc7\xd6\x02\xee\xe54\u007f\x96a8\xfb:lԀ{3\x18\"\xc3K6\xa3\x92[\xd7H\xf2ȥ\xedH\xdcI%\xf7i\x06\xfb4=Ͱ\xa1F\x96$\x10\x13>\u007f+.8\xf9\xd8\xd9)X8\xe9\xea;^ ƌ/lU=\\\xfa\xa6\xad7t\xbb\xffF/\x9e\xf9\x00+F_\x82\xf6\x1b\xd6\xf0\xbaE\x96\xf7\xbb\x9d\x0e\xe5s\xa1\xb9\x91\xd37\x01=gc\x10\xa7\x02|\x9b\xcf\x05܁\xd0i\xaa\xaaON\xbf\xe4\xc9'_2=eJ\xa2E\xc43\xafx\xc5\x19\x91\xfc<\x91䶅\x88,J\a\x0e\x80\xa0\x84\xac\xb6,\x91c%ɔJ1\r\x1b\xb2\xf3\xe4W\x9et\x14\xcbD\xaf\xf8\x95W\xa0\x1f S^8Fk\x8d\x8d!\xac\x1c[\x90Md\x1c\xc4\xf8 \x8d˪\xae\xccvcr\\\x9e\xeb:ؑ\xaf\xbbN\xa6\xb3\xee\x1c]\x11\xeb^\xea\xd2?\xde\u007f}_$\xe8\xf5\xb4Mn\x03$M\xd6|F:U\xe59\xbaa\x80\xeb\xfb\v\xa0\xe0\xbe\xfe<\xf4\xa2\xe7\xd1\xd26\xd3\f\f\xe85\x8d\xc04\xb7mXB/7L\xa7\u007f\xd11\x8d\xebYX\xd1\xf2V\x95¥\xcd8\xe0\xd9Q\x1c\xf0\x01VO\x95\x9b\r\xa0_\x1dA\x8a\xe2Z\xd1\xffd\xce6u\xa9ө/\xad\xac,\xd5;\xa7F\xe1{\xbeŜj\xf7t\x96:+\xab+\x9d\xa5O\r\xf0g\x99\xeeݥr*\xe0\xeeB&\xbe\x10FH\x91\xf2\xa6y1Z$,\xb7\nB\x98\xdb,#\x95\x87\xdc\x06tp\xdal\n\x1d\\0zBU\xdf\x17{\xb3\xaa\xbe.v\xbf\xaa\xbe8ڿ\x84z\xd1\xfe\x8ab֨8zH<\xa4&\x8d\x9a\xa9\xa4\x14s[:\xbd\xcdTЍ\x80z\n\xa0\xa9\x95t\x88>\x04t\x14\xdd\xc1\x0f-w\xfb\xffh\x91\x04\x96\xd4k\xbe|\x9c\xca6\tb\xed5\x91r䈂̕J\x9a\x875\xa7+\xcb\x03\xb0\b<\x94Q\t\xd5.\x1b\fi\xe0\xa6u\x9d \xd8Z^\xc5L\x04\x1b\xba\xeei_Cp\bѹ\x81\xc5\x1d\xf8ޫ$\b\xc5\xd4\u0600x#`:\xee\xea&\xa1\xf5\xa3\x8b3\x05\xa6\xd0\x14>/\x91\xab\xae\xa2\xedYRo\xbdU\xa53r\xe8\xd0p\xe9\u007fsI\xf5av\b\xd4a\xba\xf2\xb7\xae\x10[s\xd5T\xc1\xb5\xa0\xb9[n!\xf5jU\xca\xe5$\xd5V\xa5\xc9I6\v\x97&&$\xf5\xbb \xbf\x86\xc7\x19\xc1\xf2\xfc=:\x12\x96\xaf\xc8\xf2܉\xdcц\x1eAn\x854G\xd12\x93\xdfmiV\xd2\xd2\xc7\xc7u:\xd3Z\xdf\xed\xff\x8f\a\xbf=\xa2Y\x1e9bi\xaefu:lv\xa4\xffk\xab\xab\xc20\xfed\x95~im\xee\x8dF`\x0e[\xa7\x8f!þ\x8e\xbd\x83*\x17#\xe8\xaa=\xd2^\x8e\b\xb1\x1b\r\x83\xb3\x87M\xab,\aʼn\x00L\xfc\x80\x9fE_\xbdF.\xa6\xaa\f\xfc\xb5\xdeq\x9b\xcḋ\xbb\xb4\xb9w#\xecQ^\xcf\x1f\xa8\xe0W\xd3\x11\xf9\x8f\x99\x19sٵ\x1c\xc8\xeecT?)\xb7S\xbf.[\xb3\xe5\xe5\xee\xe3\x90C\xf1xwi\xd4Z!2,\x90\xdfa\xdc\xca\xed\x11\x947..\x02\xacW\x99\xfe0\xa2R\xce\x16\xdd5\x83R\x04\xa4Ǖ\xc6\xd1V\xb7u\xb4Qo4\x1aut\\q\x9d\xd1\x1eډc]\r\xd0K\x02\x15u{=\xc8\u007f\xeb\xf5\xa6\x83/<\xfd\xf4\x17\x82\xfe\x0f\"i\x1eUʧ\xe9H\x81\xe1\n\xf2\xf7\xb9\xc8\xe4\xb0]\x83l1\xf6\x18\xe7\x17\xda\xf3\x82\xbba\xb9\xd2|\x1fHI\x99F\xe2\xde\xecX\xa7ާ\xf71_A\x8bӥ\x05ۉ\xa5\xaa\xa8\u007fmċh\xc74KʞR\xd5SY\xc9\xd2Ύ+1e\xfc,]\x95\x8bZ\x9a]\xbci13[N\x8e\xeb;U\xd3\xca\xd6\x1e\xd5g\xf3\xd0\x12\xaa\v\x12\x92%4\xbd8\x96\xd3ic\x91}G\x8d\xb8\xc9\r\xbb\x0f\x8fx\xbd\x88\xe3Vq\xf1\xa6\xe9\xf2l:\x18;@զ\x19A\xd0\x01\xf7\x97\xe5\xb3)\x82M\xdbO\x81\xcat\ra\a\x95\xeb\x8e\x02\xaaG;\xa8A\xfb\xc0!\x8c.\xa9.4\x815\xa9&qk\xb3Oř\xc1\x1d\xc372#UY\xdf\x1b'\x12\x88\xa8\x98\xf1D\xb5A\xbc&\xb5&\xa9\xddu\xf7\xd3T\xa3\xc5\b\xcb\xe25\xfb$Q\xfaC\"\xdf\u007fR\x14ߩh\xf2\xee{n\xa6\x17|\xf3+E\x19\xa3cΒ(\x12面\b~\xddϋ\xb2$>\xf4\x12\xaa\xff>\x9d\xbc\xfd\xf6\xdb\xff\xc7g}U\xee\xd0\xf5?'\x89h\xfa[\"\xf6\x17eED\xd7\xcf\"Y\xbcUҔw}HU?\x94El\xbb\xf4h\xfam2\x11\xc5[E\x19\xf5\xff\f\x8bg\x80\rz\xf1\xeb?#\xab\xfe\x17.^d\xef\xfb7i\xff\xfb%\xc6\xc9X\x0e\x91\xe1\x06v\xf4A>&\b\vp\xef\x8c\xf6\xba\xdaB\x1f\x94\xe5\xdf\xfd]Y\xfe`\xa1\xf0\tY-<\xa5:Ϩ\xf2\xef8\xeaS\x05t\xad\xa8\x8b\x0f?L'w\xc4\xe3?%)\xca\xefV\xdd\x17*\xba~\xe9\x1eE\x91\x1e\xbc\xa4\xeb\xca\v\xdd*\xf7\xe9\x15\xe8wQ@?O\xdb\x19˽\xaf\x04[H(\xa1\x15\x98\xf6\xdd\x15.s\x81\x19?\xcf8 \x99\x06\x80\xc3\x0e\aM<\xc9z\xeeU\x9e\x9d5\xc6\xfa\x18\xb4J;\xe1\x1e\xd5H[\xd8\xd0$ذ\xc2\xfa\x8aK\v\u007f\xb5\xfe\xa1\xfe9mD\xacwY)\xa4\xaac\xd3O\x1a\xaa\x9aVT\xc5\xd6lֳ0\x8c\xa1\xcf1\xb9\xca\x11\xf6\x03\xba`\x1b\xda:\xbc`:\x001\x95Da\x9f'\xff@ \x9a\x17^\xf7\xe0[`\xba\x1f\x8b\xf9`\xf4`3pk~І\xe0\xddv\xccԴ\x87\xa2\x13\xb1G\"_\xa7'\xbd\x11=V(\x8b\xd2\xe1F\xdfRu\xfb\xaa\x17|\xe6\x86m\xcd]\xb2\xbck\x8f$+\u007f\xef\xe8G\xb1\x14\x91\xa2j\xde\xd62]ǰ%\xdbp\x955*\xe9cF\xf1U\xae1\xfa\x1b\xben\x0f\xf8\xc5~\xc4\xf1jTы2t\xab\xdaB\x9b\x17\\\x88̃«\xa9\x8a\x81D\xeb\x16\x05\xf02\\\xc9\xc6(J\xb0T\x91\xa9\x1e*W$L\xf2\u074b!~\xd4\xe8\xe4\x97\x15CS5\xe3\x14p\xafO`K\xfagKD\x8aB\x97mz\f\xa4\x93\tE§X\x15eL\xb2\xf0\xc4\xd5[\x1ccU7u\x10\xc7\xcc8\x9d\xf6\xe2`sz\x96X\x96m\xd3K\x99\x9eIJ\xfc\x84h\xe1;\r\xe3Nl\x89j\xffҺ-\xb7\xb7^D\x19SŪF\x9a\xb2\x8d\xc7\x12\x92B\xfeܶ-\x8b.\xcaxr\x9a\xe8?\x8fm\xb9I4Zż\x81(R\xe2[[\x1e\xe4\x1fD\xb1\xffW\xaa\xfal\xcc\xec\u007fSUQڌ=;\xc2o\xc5\xe2\xa0A\xbe?!\xdc)\xbc\x94\x8e\xda \xd0mHS\x90X\b\xe4\xc0\x8c\xce\xf3\x03\x06V\x95\x80[\xe9\xaa\xcc>\xc771}\x94\a\xc9\xd3]\x9a\xed0\x9d\x80\xe1#\x0e\x93\vH\xb5\xd5fb\x01mҗl\xfd\t[\xef_\x04U\xe1\xf7\x97שL\xe0\xf2Uu*\x96\xb4}\xd10U\xd5\x1c\x96\x80hmL\xb1\x951:w\x9c\x97\x93\x1e\xd6\t\xea\xe8v\xffSp\f\xf44-}\xdbQ\x19)\x1eD[2\xf3w\xe08\xa6\x8bDBW\x8c\x14\x1fQU\xaf]S\x94Zۣ\xa5|*\x95\xff\x04\xd1q\x8f\x8c<\x1b\x83\x8e\xc1\xfc\x1b\x10 \x933\x14i\xbc\x80Y\xbe\xbcb\v8\xbe\xe0\xc1\xb4\xf9\x84\r\xc5\xec\x114\x19\xdbg{\xf0\xc4\xc2\x1dk,\x02\x96\x1fC\xd9\x14a\xdcܴ\x8c\x84\x86\xca/\xbf\xe7\x98c\x97\x85tEU\v\f\xbc\xd10̴\x97\xc6H\xb2E:,\xe1X\xa2\xe0\xabV\x19\x90\x01VR\xd5B4\xc2\xf1\x1e\xfb\x17C\x993l\f<\xb0\xa2 \xbd\x9d\xa9\xb0g\xa35s\xac\xdbMWZ\xc7%\xaaͧ\xb4X]\x13%YREYK\xa7cH\x85GH\xb4\xca^\xbc\x12\x86-\xaf{ \x06\x01\xccl\xec\xfa4}N\x9f\xa7c\b\xf0W\xadk\x89U\x0e\xc1P\xe23\x18\xc0\xa09m\xa6\x00\xf9\xf5k\x1f\x8c\x93\xa4\xa9O\x1a\xc68}\xa3\xe3\x861\xa9\x9bI\x12\xbf\x9b0\xcd\xe6\xed\\\xbfY\x13_z\xb2\xff\f\xed\xa2c\x9a\xd10\xcdiE\x996͆\xa1\xc5T\xd5@\xea\xd2˾\xb6\x81/Dd\\\xd7\xdc^X\xe3\xf6\xc2PA\xc5<\xf2\x97\xc5\xcb\x13\xa6\x92\xd1ޅ\xd3\x1eW|\xb0\r\xde\xc0\xcczFv,5\xeb\xde0\xf3\xba\x99m)-K\x9fu\xff{\xb32\xf9\x87\xd8|%.\\V\xfa\x06\xad\x06)yfF\xa3\xd5R\xee\xb6\x19Zo,k\x1a\x86:++\x97\xe3\x95\xf9\xd8?\x10\xfa}9#yL\x1c_\xb6&\xcc\b\xf7\b\x8f\b\xaf\xa5\xbd\xe9{\x84\x0f\t\x1f\x17>+\xfc\x81\xf0\xe7\xf4\xa95瘐\\\x0e\xe7\xcc\xda=2\x0f<\xbeP\f\xb7\x17\xff\xbdQ\x18\xac\xc3\x1c\x89\n\x91\u05cb\x95\x12\x1b\xeaY\xd9F\xeb\xeb\x83\xf5\xa2\x8d\xe6\xd6\x17\xfc-\x8b\x1bjӯ\xb0С?\x98\x1f\xa6\xbfe@\x9e\xe8CIt\x9eO\x04\x87FRq\xdb\xc48\xf1\xec\xc7\xf8\x1c\xa9\xc4\xc0P\xb0\x9f\xe6+\xea:\x9bac?_\xfe)>\x9b۴\x15\x15\xd4G跾ŏ~1\x9b\x038\xb8\xf6`\xb9<\xe2ݵ\xe8r\xc11pZ\xd7k\xb6\xe1\fK\x05B;\xe7pe\xe3\xca\xed\xaaI\xb6\xd8i\x8b\x12\xad(l\xe0\r\x054\xa4+\x19\x1b\xa8\x84\v>X\xc2:\x97\xf2^4C\a\xdd6\xc9#(\xf1\xf0j\x1e8uѹp\x1f\xc9G>ӑ\xf1uO;\xddn\xa1\xd0\xed\x15\n\x8eC\u007f#wY\xf8\xdfNI\xbb\xeb\x97t\xdd2\xbfX\xa0U\xba\x855V\xc5)p{\xc7\xe7¾/-\x1c\x01\xdf\\\xc0x@ʥڴ؆\xf8y\x9e\xb7\x0eZQ\xc0\x8d\x8a\x03\x93\x1b\x18\x83f\xb9\xb1\x80\x9b\xb7\xc0\x857\x80\x0f\xa1\xb7Q\r\xf5\xff\x93\xe5\xf9\xa4\x145dY5\x95\xa8h\x90\xae\x8c%\x94Rw\x14\t\x11\xbf\x15\xa6\x144,ݏ\xa3\x19\xf8\xac\xcfh(\xad\x14\xe2\x89\xe8LY#71\x9bc\xe2M\xad;\f\v\x89\xa6\xf3G\x98 \aaU\xbe5_RE\x03O\x0e\xa0\x92\x9eт%\xba\u007f\xea\x14X]6N3\xfc\xcdV\x1bo\x90\xa0\xbfK\x80\xc6\x1d4ޝ\"\xfd\xde\xf0\b\xfff\x99JW\xe22\x90\x1a\x047\xb530\x90/\x1d\xfd\xe9.\xcc/\x85\x83\xabkݝk($W_Y\xea\xbc+\x12\x8d\xa3\x94kmg\x1d\x87\x13I*\xd7\x18\xbf\a\x913\x95\xf0)A4:ӎa\xe8D!\x1c\x13\xcb\x1d\x9bF!;\x1c\xd5\xdd\xc7\u0600\xf6\xc7fJW\xad\xc25\xf0l\xf6\xa3,C\xfb\xccY\xf1\xc2\x1e\xdbT\xf2$\xa1(\xa6)e^\xe0E\xf4J\xc42\xebzʑ\x8cZeꪉx\n-\xb3\xd1\xec\xdf2\x11\xece\xe9\xe3\xe9\xd1_z\xfc\xf8\x98\x96\x8b\x9c\xf7E)a\x9d\x99\xb3\xa6\xfd3\x8a\xa4\xe7T\xc9K\xab\xb9\f\xed\xfb\xea\xad\xf5\xb8\xee\x1e\xc3\x1aN\x01\xe3W\x8c\a>\xc3\xe3b\xa0\xb2 \xb5נ\xb9F\x8bA1D-\xa3\x1d.=\xe1\x12\xed*\x85\\\x90\xdb栥z\xa7\u007f\xa9\x00(\x85\x8b\xd3\xfd\x8b\xf5\x0e\x84.A\x9aW\xbc\xffX\xa2*+\xb5,ZI\xf9\x9d\xfae\x81\xf6,Ӌ\x9dz\xc8\xf3\x85~\x9b\xe5\xe0\x86\xf6ne\x80bu%x\xd5\x10\xb2j=&\x11\x93!\xb1\xdd&\xfeW\xf4I,K\xb6d)\xbf\xf1\x1b\x8aE\v2~\xeb[\xafX\xf3\xf6B\xf5\xf4#\xa7\xab\x05,\x1a\xea\xabT]|\a\xd3\x1e\xb8;E\xa1*}\x86\xeeq\xc3\r\xb4f\x86\xaa\xff\a\x0f^\xb1\xe6\xed\xd1\x1d%0>\x97vDSz$\xa2\xbfs\x83\x06¸\x83B\xcc|\xda9)\f,?`\xbe \xf1T\x88\x8c/^\x03\xb3\xdd!\f~\u007f;\xcc\x06\xdf\xe4U\xe8\xb7\x05W\xb8\x0f\xe2i݁\b\x95\xe7\xdc\x1e\xf4!\x94\x15>ڕ\x83\x91.g\x9d\xeap}\xe0\x9f\a\x1a\x9c\x90\x89r'\xaa\x85\x1cEy\xb1\xd9\xde#\xcd\x01\a^s\x88\x05\x18\x01\xe3R8\xf2\x84Y\xee\x11\xb1\\\xab\xd6ޙ\xa6r\x99hb\ac1\x11\a3\bz\xb3fY\xb6֘٭\xb0\xfe\xe5\x88ؾ\xb6-\x1eaee\xf7LC\xb3-K\x9bף\xc7\x0fꤥY\xb6\xa5\xcd\xed\x1e\xd3E\x12Ɍe\"D\xd4\xc7vϱ\xb5-\xa2\x1f<\x1e\xd5\x1fH\x88\x18;\xb2\n\xe9\x1dR:\x05\xe6\x1a\x04ء\x8ar\x9c\x9eR\xa1\xa7>\\\xc78\xf5˶\xa6j\xd6\xe1[T\xed8\xf4 W?\x9c\xb3\xea\xbbw\xd7\xed\xec\xc3\xcc\xf8r\\So9l\xd1*\xf6\t;!kK\xac\xf6\xb1\xf8$<\xba\x8e\xa91\xb8B\x0eR\x17\x01\xf4\x14\xc2\xe5^\xf8\xca\xe2\x83\xf4\xf4\r\xa8A\xc3\xf4\xf4\r\xb8A,\xbeb\xc0\xed\xc3D~\x9e\x9c\x0e|7\xc2\x00\xb4\xb5Y+{\xe8;\x87\xe7\xe7\x0f\xcf\x1fg\xb0,wҁ\xa1\x99L\xef\x1c;Ief\x85(\x18\xe7I\f+v\xc4Ҧ4+b+8F\xf2\x18\xd3-\x846\xbdA\x15;\x92\x89\xbf^\x8b\xd9r\xe7|N\x8e(\xbe\xa6Z\xfd\xfb\x18\xf4\xf8\xf9{\xc7\xefZ\x99\x87\x13\xecb\xb0-(\xe6ZMKk\x9a\r\xfc܇\xbb\xf2\x8c\x96\xf9\xf6xF\xb5\xd4\xd7֧ǰ\x92\xd0\xf5\xa8_\x0f9\x81\xfedy\x99c\x90r\xbf)\xa6\xbdg\\H\n\x05\xa1\xce0lI\x99\x19k\xcbm\x9f\u007f\x92MȞX\xa0*\x1cd\x87{\xa5j8<Ԇ\xe1Ja\xa4F\x93\x0eJȻ\xe1\xdaH\xb7\x9e\xbe\xe9E\x8bɅ\x97\x1c\x15\u007f \xf6\x9f\xb1\x9d[{K\x8dx\x06\t`\x1c\xb3&^\xda>A;Xg\xa6xh\x82\x94\x8f\x95\xd1'\x0e\x8cM-\xcdy\u007ft\xb4%Y\x96\xd4z\x98H_kL\xec\x1e_\xcb\x1c\xa0\xfd\xf4r\xefD{\"\x9e\xf1Sře\xc7\t1\x1f\x81\u05ec\x17\xb6\xf3Ad-\x93O\xb9\xf4\xc6L\xe5\xdc\xd5\xebo\x86\aZ\xe6\x92I\x10\xc5ik\x87\x95V\v.\x13S\xee`\x81\xa1(\x9c\xf5\\\v\xf2\v\xb4\xa8\xb9;\x9b\xdd\x1d\xf5xN\xcc3\xac5V\xc26\tc\xcf_\x8a:\xfa\x00}n\xfb\x84\x1b\x01۞#KTC^[\x16\x87\xce!\xb77\xd0>\x00`&\x04G\x96\x06f\xe8=b\x8e\x05OQe\x94\x84(k\x83\x03\xf0|\x82\xda{+\xdbe\xbcc\xb2\xdc¢\xae\x16L\x99\x04zDEb\xdc|+\xf4\x1eL\xc0:n\xc6Eэ\x04D6\v\x8a*#\x85\x9e\xa5\x8e\xb5\x1d\xdb\x1a\v\a,2\x93\x9fY\xa3\r*A\xdfJ55\xe4\xf5\xfc=\xaae\xe7\xc1\xfa\x0fVo\xe2\xe3u\x04]\xaab\xb7\xf9\xd0Ѯ\x11\xf4}\x16zv\x8d\x13ɼ\xcfm\xb97\xb8\xee\xfb2\xc7\xcbǘ)\xaa\xff\x83Gox\x14=\xcc\xca\xc7\xca\xc7i\x05\xba\xbdE+D\x9ck8!\xe29ZAX\xf73\xf3~`\x1bȴ\x83~j\xd0\x1b\xd4@\x98a\xd9\x02\x98a|\x00\xb1\xc0|\xbbʩ\x05\xfc\x05h'\xf4\xf9\x96\xa9$O\x9f?)\xaf\x83n\xae\xbb$\xc9\x0e4;\x17\x02\xac}\x86ͨ6\xab\xc6̨\xa2\x9as&\xc1Q3\xa6\xd2\x15c\t\xba\x94,\xbf\xbfS\x9fĚ\x97\xf3vџ\x86'\xeb\x9dJV\\\x9c.\xb4\xecD\xa58#\"T_\x1eA\x8c\x8a\xc2>QK\n\x02Ɋ\xf1\x03\xb0c\xbdg\xa9c\xea\x1e\xfd\xa7Y\x9dz~N7\xf4\xe9\xc5b&;S\xd4\xc8\x10\xabm\x91\xc5dv\x84\x83µ\xc2\xcd\xc2ݛ=\xab\x90\xbc\n\x8a=\xbf\x13\xf6\f\xaa`\xf2\xa0\xc3\xe0\x80%\x85a\xbc\x8b\xc4\xe7\"\x1dsP<\xcf\x05t.[\x99)^\x16\x8a3\x95t\xa7>\x9bub٩\xaf+\xb24yPR\xb0(\xb9Yי\x94N\xef\xb0,ETRy\xbf2\xf71[\x1d\xa3\rH\xb6Պd\xdd\xf8\xfc\x16\xbe\xa6Le\x8b33\xc5\xec\x14\x1d\xdeꝺZI#Un!䖓d\xd2ݱ$\"]\x8c\xb4r\xa9\xe9\x9c\xfd\x9b\xaa\xddUE:\xa1\xa3Џ*\x8e\xb4\x1b@\x9d\xdc\tܘL\x13\x18\x05]\xdd\xf0\xfe\x15\xe0\x05B\x83\xfc\xb1v\xb8\xc4\xe9\x00֗\xd9V\xfalV\x19\x10\xe7\xda\x15o\xbe\xff)\xd1\x14q\x89\xbe\xf8\xd2\aY\xc9\xf2\xad\xf8\xa0L\xd7\xda\x1e\x82\xf8\x85\xcd/\xfc_0\xf6\xe6\xa2^6\xeb9M\x8f\x95\xc1\xbf5\\\x80\rV\x12hA\x04\xcc\xc6|\xb8/\x8b~\x85\xe3T\x16=(\xdcF\xbf\x89Q\xa1}\x0f\x1a]Z\xa8nX\x1a\xfb!\xdb\xda?\xf4\t}̔\xa4.\xbc9\xfa\xa4\xbb\xd2=\x1b\x96>\xbea\t\xbde\xc3\xe2\xa9\rK;\x9f\xe3ѝ\xc4\x16^QE*\xb9\xae`\xe9\xc7,\xff\xd3\x16\xcf\x14\xe4#\x1e\a\xf5[TS8(,\t/\x14^\"<\f2\xeas~E9\xa4\xf8\x00\xc2\xe5ϒ\xe7\nOh\x94fK\xe0\xf5\xa4r\x01&a\xb0\x05V\xfe=\xdfW\u007f\xf0}\x8de\xf8\xf7\xe5\x96\xfc\xfe\xab%\x82\xd1N\xd5\x10\x93W\x11rU\x92J\xfbG˲#\x97\x8f\xd2U\x9aX)d\xaeNenMǼj*\xe6\xa4Ё\xff\x88O.\x9ak\x898\x16\x13\x95\xf8\x86\xb3\r/ \xe5\x05r*\xb3\x943\x93n&U\xd53?\xf8q\xbeC\x85\xc5j\xbf\x01}A\x98\xa5\xdf\xe0m\xc2+\x84\v\xa1\x87\xa36Mj^\xb1FBK\x1f4?\x16\x84ƞ6#\x1b\x06\xa5>P¤\x820\xdd Ω\xe1!'\xff\xc7[\xaf\xb4\x8aW\xd8H\xc5WjV\xda\xd2$\x95\xb6LYV\xa4\xfe\xeaBU\xb7\xf2\xae\x16Q\x8d\xa3HQ%S\xd2\x1429!\xe9\xa2)GN~\xa7\xba\xdf\xeb\u007fVDR\xa0\x8b\x18\x19\xbe$\x8a\x0e\xdd+\x1e\x97\x14\xb9\xf7c\xad\xee\xff>Z\x1e\t>\xf8\x9c\xa5\xc54[\xb6\x14\xc0\x9d\x92\xa5\xe3w\x975\xe0ĸ\r\xd1\xfaf\x99J|\xf4\x12\x90\x1c\x9d\x88\x9c\x1c+DD,y\x12\xfdâ\x13H\xb2\xa8\xeb\xa2,\x05Ώ\xb1\xf6\xefy^)\x03-c\x1c\xa6<\x1fҢc\xfa\xac\xf0\x02\xfa\x95\xdcA\xe5\xed\x97s.\xe1\xe80~\v\xfc\x83m\xda\x0f\xd8h\x9a\x8a֭=\xc8o\xb356\x82\xb7\x16\xae\xa9\xd6\x06\xfd\xbd\x1a\xf2,]Ow\x95U\x99hr(\xa3tY\x9epK\xd8Me\x94\xeb\x85\xf3\xc0'\xda\f\xbf/whU\xf2\x82AZ-D\xba4\xaa-/\\\x10\xc3d\x87\x81\x9f\xa5\xddj\xf2\x90\xefuҞ\xbd\x88a\x87y\xe5\xcah\x83\\\xe3>0\x16\x1c\xbaõ\xbdq\xe2Z\xf4\xbb\xa5\xedǢWZ\x05f\xb1m\xd73\x11\xec\xe2\x1a\v\xed\xb1b\b\xa7lO\xceSQ\xbf\xd0\x05\x884\x1eA}\x11\xbc\x17\b8\xa0m\xef\xe4n\xcb\xe9X\x90]ՙD\xe8\x0eVZ]NU\xddm\\\xa2;P\xe8\x87\fj13\x17D\xde\xf3u\xcb][oL\xcf\f\xf3\xd4\xd6XL\xe15\f\xc1\x88\x9b\x96\xf72\x9a\xbd\x16\xa3\\\xa4\xab\xdaaL\x1fX\x98\a\x04\x1a\xe0\x9e\x1f\x91N\xb7\x00\x83G\xf3\x84\xc8g\xe9\bAP\xb0\x93\xf6\r\x8e\xa8\x1f\xa0\xe5\xd8+\xf2\x933ŜjYV\xd2\xc18\xe5\x1fp\x92\x92\xd3(\xceL\xe6\xf5j\n\x80\xe25\f@\xf1\xa9ꊉ\x9f\xc2\x1a\xbe\x85\xb6\xccGt\rﻏ\x85\xfbپ\xef'\xbd\x92\xef<\"\xce\x14\xf3Ӣ\x13MU\x87\xd8\xf1\xd5Tt`w\xbbD\xdf\xf5/\b9ڂ\x01\x9bja\x90lɉ!k\xd5\r.\x9a`\xc1\xff\xa1[7\xee\\ڰ\x15\x99\xa7\xdez\x8a\xbd\x9c\xfbN\x9d\u007f\x8a\x15\xdes\xf7\x99װ\xc2\xe2\xec\xf6Ӭp\xf3\xf1\\\xab0\xa0\x8fd\xf3I\xf4~|\xf4\x8d'Y\xe7\xf6\xc4u\xaf7\xac\xc7\xef`\xe5\xc7\x1f\xfc\x95\x1b\xcc\a\xafc\xe575\x8f\xcb\xf8\x9a\x0e+\xbf\xf1\xc8\xfdgp\xd0\xc8\x0e\xf2\xdf]\x8b\x95\xde\\\xde\x1eƚ|\x8d\xf9\xd94\xa1D\xe5\xc7\xd3B\x0f\x0e\xfa\xe8G\x17\x96K:\xbe\x89\xc7\xe9\x1c\xed\xe0\xc9\f\xa8\x97\xa6\xa5i\x96\t\xa5Xї;G\xbb\xa9j\xff\x02ۃ\xed\xcd\xe29/\xf7/\xff\x9a\xb8H\xefA\x17<\xa1 \xbcH\xb8\x0f2\x95 \x9b\x81\xeaԤ*M\xa3Z\xc8K\x11\x8a\xc5\xf4ۨ\xb6A7\x84`[\x9b3\xe0Q\x19\x9a\xe1\x89\xd0\xe9GЅ\x86\x8e&\xa6KA\xacv~\xbba(\xca\xec\xe3jL\x96\xe5^S\xb6\x14\xd3l\xa7O\xbd.w \x91?[TKr5렲\u007f\xeb4\xd5`\xb7\x9b\xf4ۗg\x17e\xaci:\"s\x8ab\x18\x9d\x82\xebD\x9clU.\xa9ų\xf9\xc4\x01\xc0\xcff\xb6F\xf8\xee@\x029*\xdc(\xdcL{\xb3DŽ\x9f\x10\xde#|\x18,^0\x16\x8bC\xf89\x00/_\x0f\xb8\x19\r\x8e\rȦfM\xd6\x11aX\x8b\xaa\x957\xae\xa85[\xe5`#\x12K3\xd8x\bo\x14T\xffG\xc2\xce\\F \xec@b3J\xa3\x98\xf9\x02\xf6% \x81}\x0f\xfflF\xc5?\\\x17\x81\vCy\xb81\x14\x8d߶\xb6V\x1f\xae.\xac\xd7\xfd\xaazQ\xa5\u007f\x89\x11\x96\xb4\xf5\xe2AE\xb9\x91\x18 3ݨ(\xabfd\xe4+\xedF\xcc\xec\xf0\xe0W\x8d\xc0J\xaf\x17\x9f*\x8c\xc0Mw\x87'\xef1q\xec\x91\xe1\xcegF\xb0\x9fa\xfc\xfc4kC\x1e}c]\xc09\t\x9d\x9b3h\xe8,\x06\xc8\xe5\x10U;4\x01s\x14V\\&\x03ʾ\x91\x8e\x95\xa0u\x9d7\xb4\x1d\xc3.\xbf\xaf\xdb9#\u007f\x9bb)IE\xb9\xadh\x98Υ+\xd68\xb7)J\xd20o\xcb\x1b9[_qL\xa3\xdf\x1f\x94\x8a\xb0\x89V\xbdmu\xd32\xad۽r\xd5\x13찦\xc9\x0e\xbb\x02'B\xe2\xa04\xed'\xb23&\xd2$S\x96\"\xedҸ\xeaƾc\xb9Ne\xb1\xf1E]\xb4\x1b^%C\x1ee!\x89\x0f\xc6#u\xcd\xeaZ\x85\xa4,J\xa6\xa2d\xab\"\xba\xd6ɹ\xd6ɽ\xb7\xbe`g쨬/dd\xbf\x18\xef\xb0\x00C\x88\xf7\xfdA\x98ǝ\xa2\v\x12.\xd5$&\xf6\x0e&\xac\x13.\x82{\xf1\f\xb2\xd1\xe2\xb4h\x8a%\x98L\x8d\xd1\xc9\x19\xd9u\xd0Z\xc4E\xef\xeeOa\x8c\xee\xfe\bƯ\xff\x02Ɵy\xa5\xa2\xa0X$\x15\x00>W\xe8/Z\xa5ҀA[R\x9c\xe1B7\x84\x0e\xf3\xa2@t\x12\xf1ʐ\xc5\x18\x94\xe9\xd0\xee{d\xbeƽ\x86\xae\x17\x12P\xb6\xe8\xc8\xcf\xe1\x83\x17BD\x0e\xd4\xed\xffc\xedUG\"_^Ρŕ\xbd\x1f\xed-\xe6V\xe5\x0f\xb8V\xaf0\x17\xddqhGt\xae\xf7\x01\xb9g\xb9\xdf[ꬡ\xf7\xbdj\xe7\xc1\xd5\xde\xfe\xdd\xefJݼ\xda۽\xbfk\xc7\xd8p\xdb˖\xcb\xd9\xdeea9f/\xbb\xbfܩ//CN\xd5\xe5\u007f\xa1\xba\xfc\xe7\xd1\x17\xe9u\xe6\xae\xec\xb7X\xc4L\x11Z5\b)\v\x88\xb9\x13x\xc2\x16\xba\xa3\xaeD\x0f\xf7\xbf\u0530\xbb\x0f\xdea\xe5\xbcha=\x8d\xf9\x1b\xa5V\xfc\xcc\xd3;\xeeHww\xf4\x92\xf1\x8d~`W\xa8\x876\xbbjm\x18\xfbǾ!\xda(ڰn@o5X\x19pwƈ\xfbCᡂ\xdecr\xac\x8c\x91N\xa2\xb6(\xfby^\xba\x17\xd6ɪ<\xba\xee\xfd\xe0\xd7p:\xf5\xb5z\x87\x8a*+`\x88q\xd0t\xd2-\xcf\x12\xc3\xce\xfb\xf9):\x83%@2\xe0\x8b`\xaa\x87`\x9d5\xcb]\x85O\x86\xdbN/\xd31\xf6\x1f\xd1[\xa9\u0590\x12J\fuu\xbe\xc6M\xc9@\xe1AX?\xc0\xed\xa5\xfeܠ\xa3\xa8\xd0ny\x0f\x17F\xb0\x87\x0eWOJ6\x9eZ\x905\xf2ٓ\x92\x84ۯhcI:\x19\xdf&\xb1O\xb3\xffm:@-La[:Y]\x9bJ\xf4\xb0$\x17\x96;D?\xd0\xc3\x16\xa0\xe0X\xb8g\x16\xd8\xe7\x1b\xd7Ig\xb9 K\xb8\x97\x98\n\xe5N>\xfe\x9b,7\x80\xb3\xb5\x0e\xae\xcf\aB\xdb2\xf1\xe7\xda\xc3Kl\xd7x\xce\x0f\xbb,?\xbc\xd6\x01\x1c0\x1e \xfftr\x13R\x04\xcf\x13\xa4\x10\xe5W\x9d1g\x82^r\xe9p\x89^\xf2~\xa2#2\x8f#\xd2D\xee\x17ٰ\xfe\x91\xa7\xee\xbe\xfb\xa9\xbb?\xcc,\x9ckew?\x16\xe5\x89E\xbaۂ\xae\xef\xa7\"\xa6\xe3\xc8\x16~\xb9N\x16'\xa80\xb8\xdf-\u007f\x8f\x8d\xcc(\u007f7\xdbm\x18\x8b\xaf0\x9c\x8b׆}\xf08\x95\xfc\xae[\xef\x83\xe5p\xee\xfax#\a\x18\x04\xd0\xf8\x90н\xc1MN\x1b\n\x190\xb5nF\x1a\xa3\xd5\xdf=_\x05\x84\xe7\x1b\xd8l\xaf\x141\xdb̸\xd76#\xe24N$:\x89\x04\xee\xf7\x87\xa9د0\xe3&\x00\x13\xebK:\xc0\x19'\xddD\au\xabl_\xf6\xd7\xff\x9e\x19\xbb\x13\xcc|w\xc6\xccO\xfb\x92\xe3H\xfe/\x8d\x0e\xb3\x17\x90\xed\x99O\xe8\xf6\x13P\xe7\t \xd8L\x8b\x0eNJ\xfe\x1c\xfb.\x068d\xbc\x17\xe24\x1c,Â\x9b\xae\x99\xac\xdf\x06\xe4\xc6=\x12/\xcds\x81m\x83v\x1e\xafP!W\xa1\xb2.\xfa\xd7[\xe8\u0ea4G\xb1\x81\xa5\x88rW\f\xc5\xd2T\r\x10q\xecn*\x94kA\"\xa1\x8fW\xf5\x93\x9av\x8bf!K[j\xe8\x19}F\xd7\x1b'\xb5\xfe\u007f\xbd\xfa\xe0\xd5h\xee\xe0\xd5\a\xdet\x8b\xa6\x9dԫ\xe3V\xb1`R\x81\xfe\xee\x18\x16\xa9*\x91\xa6\x87\xbaK\x89H\x8a\x8a\xe5\xa8v\x92\x9e\x05\xaa5t\xba{Fo,i\xe9;\xaf>x\xe4\xfd\a\xaf>H\xef\xed{\x97?E\x95\xbaߢ\x1a\xf6< \xc3(>\x17#\x98t\xce!\xaa\x19\xdb\x1d\xa9\xc4g\xe3a\x18\xf3\xc0\x0e\v\xb0\x19\xb3thl\x84$Nӈ\x99c\xc3|N\xba\x05\xcdb\x91l\u007f\xe2\xd6X\x9eJf\x0feD\x16\xe8 \xe24\xa2¹\\\xc0:\xb3\xc9\x02),z\xf4\xa370rX\x99(ʩ\xed\x18^ȩ\x97E\x14G.\xb8\xb7>\xb1\x9d\x88\xf8\xc14\xbb\xb3\x94\x8bғ\x88\xee=\xb4\xca\x02\x13.\xfe\xe8\xa3\b\xe62\x91w\\\xab\xe8`\xaa\xc5/\x1b\xe1E\xb6\x98\x14\x9f܄y\xdc\x06\xec\xbaf\xf8C]\x80/\xbf,\xa4\xaa\xbdB\xa3G\xff\xa3\xb5j\xaa߃\x95\xa8\xdb[]f\xff\xf8\xb8\xb1~\xcc\x04\x95\xf3\xca\xc2\x04\xfd\x92[\x82\xc0\xe4\xba`p\xf46;.\xf4\x80Y\x91\xe5\x89\xf3Ӱ\xfc\xf1\x9aWl\x01\x14\x1dU\x06\xab\xa9\xb5\x1e?\xed\xa5\xee*\a\xec\\e\x85.\x12.\v]\xba\x88\xe85\xf4\xfakp!k]X\xd1\xedua;+\x02V^\xa1\xeb\x82\\\xf4oC̱\x04\xed\xbd\xe7\xe0]\x0e\xfc\xa3\xb1\xb9\x90q\xb0\xca\xc36\xe6\x8b\v\xcc/\xc1\xa42\xf0\x11\xb5Y\xb2U\t\x9akX\x87\xca\x05\xa5\x8d\x89\xc7T|C\xaf`\x1dอe\xe2\x03\xf3W\xff_\xc0Vi\xd7\xec\x03f`\x1cP\xacݘ\xe4n\xd2R\xae\xd6\x00\x95\xf6\x8fR\x9e{-B\xbbm\xfa\xe2\x8e\xc7E\xcfC\x9c\xac\xb6\u007f\x93F\xe2\x19\x16\x97\xc4엶}\xc0\b\xcc\x03\xf2\xa74\x95\xee\xed\xa6\xf4\xffBw\x98uO\xd1=\xe3׳l\xe3\xe3\xf1N,:\xc0\x04\xe4~\xe01\xb0\t\r\xf2\xc5b>\xc3\x02\xadU\xb8ߋ~{\xed0Ç*ې%\n&2\xdf\x03E3/\xe6X^\x14(\xa7T\xf0\xa9\xa1\xdfa\xb7\x15\xb3I\xaa\x12\x8f\xf6\x1fѰ\xe6j\xbf;}4P\xee\xaa[\x92>\xfbD2N\xfa\xefNɒ(\x95\roϵ\xd9\x06\x89Λ\x9a\x994w\xc40)<0\xe3&\u008c\xb1\xfe\x1b\xec8I\xa9_\x92\xdd\x18V\xce\x1f<\x1a\xe4[u\xb3l\x1f9d\xc4\t\xba%\x90e\x91v\xe4F\"_0\xb3~3\x85\x93\t\rg5zw\xdb\x13Qs0\xfevٽM\xd3\xd1\xf7\xf8\xc8݅\x99b\xfc\xed\xb8\x8dj\xab:Lw\v\x19\x98 4\x9f\xb4\xd7\x13\xe2\x88\xd4d\xaf\xb5ɔ=\x9e6\x87ngw\xfa\xbe\xb8=\x91\xeb\x17\xa0\x97\x9b\\\x10UI\xaf\xf3\xbc\xb7)ˍ\xa7\x0e\xe9\xf6w\x92\x83\xb4\xb8\x1a\xc6\xf3\x89=f̟\xfcr\xb2\b\xc9s\xbb#\xa62\xbc\xdb\x0f\xd8zn\xc2fY\xd2H\x1f\xa6\xc1\xb9\x96\xaf~̎\x97N\x0e\x93\xe4d\xb1\xff\xfd\xd7\xc5t\xebƋa\x16ݱ0O\xfc\xb5T\xfeb\x96\xbd\x8a\x1f\xe2\r\r\xd2\x11\x18\n\n\b\x9e\x95V\xd8\"sR\x90\x13\a\xb4v>O)\x1f\x98\x8c\xa6\x91xGV\x14\xa7r\xcf\xfe\x80\xc5NPQA\x03NZ\xdd|\xf6\v\xd0z<\xb7Z\xca'\xb4\xc8\xcc\ue097\xaa2\u007fx\xa7\xde]\xebN,\xdc\x12T\xb35ft\xb5\rC%\xbaeZ\xfaÐ\xef\xa79A>\x9a\x9d\n\xaa) {X\xaew\x1a\x8dƼq\x90\xcb\x18\xfd!\xf7\xe9\x82p&\x8cE\x1cp\x82R\xe9\x88\xf3\x9f>\x0f,\x97A\x92rm`\xe1f5\x03΄H\xcb\xcd\x1fy\x88!M\xaa(S=!\x9a\xc1\xdb{[\x00\xbc\x80I\\\x97c1Y\xa77J\x15w\x86\xa2D\xe7\x8d-ꆔ\xa9\x92\xa8\x10o\x16(S\x9f\xdc\x00\xf5\x125¢\n>\xd8r\x99>\xee;U\xf5@G\x96;\aԭk\nC,O\x91\xf9\x83\x81\xcdw#Bz\x84%F1Pt\xfe\x11W\x998\x1b\xd0\xf6\x1b\"&3k7}\x12 \xe4\x8a~\x9e\xf9T\xca%R\xe3x\xc9$\xa8\xb6ï\xd8=\xbd8\x9f$\x9el\xdf\xe0ؚ\xab\x12-\xeaF\"\xfd\xb7\x17\x1d\x99\xc4\\\x99D\xaat\x944\xad#剨\xabe\xb1\x96H\xe2\xd4ޤw\x9f!\xab\xbac\xbckW,\xf2\x02\x11\xff?\x8a\x186\xf1_ۛ\xab\xb9\xb9\xf3\x11\\R\b;\x80\xaa\xbc\xde,j\x10j\x19QlL\xac@N\xb6\xeaQ\x0f\xe3\xd8\x0e#e\xa8漧:\xa7Դnm\xdb\x16w\x92J\x86\xf6}\xba.\fb\xbdE:\xce\x02\x16\xe4\xed\xc2\xdd\u0083\xc2c\xc2\x1b\x98\xdf+\x82\xe2~\x1c|\xbeL\xf0\x032DF\xd1Um5\xe8\xe7,r\xad\xb9E\a\xdb\xd0\xd03\xeb\x05\vC\xf2\b\xa0#m̯\x9b\x81@\x99\x1d\vմئ`\xd6\xc1\x9c\x19\x1f91\xf6`\x15\xba,*\xf8\rH.\xaaZ\xb9\xe2x\xb7ŬbuJFo\x90!\xabO2q\x06\x06g\xc6\x1bh\xf9\x9d\xa5\x8eo\x01\x83 ]\xce`K\xec_b\xe1\xab\xe3W\xe4\xcc9\x90I\xac\xcaY\x0e_PǦ\xd4F\x8a,ZNi\xdb\xf4ɤ\xa9z\xfb\xeb{\xa7\x1c\xcbl\xd3V\"\xdb`\xe7\xccʊ\"jd\x1a\xa1 b\xa6\x8b ܗRf$@h\x1a\xbe\xeb,XF'\xd8\xc1\xfb\xdfb\xb3\xf6\xc8\xf4D\xa0A%\xd9\xc1s\x1c\xed\x80\\\x81\x17s\xa3\xb0\fY*\x83\f\x9d\xe7\x9a+\xc1\b\xbcx\xd9\x1f\xc6\xe2S\x15a\xc4\"͌l\xcdV\xe8F\xf1C+\x1d\xf2\x82f\xcde\x90\xa9\x1c\xa1\xf3^\xa6\xff\x9e\xbbb\x8aȘ\xa2\xf8\x8a\xa5T\xc6'\x8d\xc5\xe9\xcb\xc2\xf4\xa2\x93u\xa9ғ\x89_(\x98'\x94\xeex\x85n\xf4\x15e,\xe8\xf7\xba\x8f\x1e\xd8\x01\x1a\xd1e\x96\xb0v\x98)\xc9W\xfe\x95\a{L\xecp\x83$\xe8S~=\xa7\xdd\x18\xcfPm*\xfbI\xd3j\xba;&\x06'\xf5\v\xe7\v\xe8\xd4rw\xb5\xdf\xe3\x99@!v\a\xc3^pY\xfe\xd4\x1c\xbd\x1d\x90\xca\x19\x90|\x99\xfe\xe6\x9b\x15XGo\f\xca\xe8A\xd3|\xb3١?\x13\xddi\x9a\xfd\xa7\xe8\xbc@\x97\xffΤ\u007f\x1d\xb3G\u007f\xf4o苆\xf7P\x11f\x01\xb9\x9b\xcaB\xa3\x19ǜ\"\xac\xbd\xd9ߨx\xeb\xfc\xd9C\xfc\xcd\x15\xa70S\xf7\xa9~\xbf渲_\x9f)0\xe7\x03\x02i\xa4\xff\x97jC\xa5\u007f\v\x0f^{\xed\x83ע\v\xefuܹө\xab\"\xa9T\xe4\xaa\xd4\xe99\xd7y\xef\xba\x13.\xc1\\oOs\x95\x86\u1cc8\n\xfa\x02\x95\x11g\xe8\xf5\xed\x1b\xc1\x97\a%\xac\\k\a\xf4\x9b\xf3\x83\x1a\xedp\xaa\xed\x90>a\x98\x06\x80\t\xb8v\x83P~\x1a\xdaH\xfe\xd90Zz\xdex(\xaa\x1aw\xedY\xee\xf6\xee\x8a7\xa2\xf3\x96y-\x9aH_]!\x92r\xc48pT\xb1D-\x9ev\x93n\xfe\x1d\xc4|\x85۪\xb8O=\xc4\xde弑3Z\x06ݹ\x11\xbf\xab\xd7]\xdes\x97\xa1F\x17\xa4kwO\xa6\xe3\x9ah\xcbG\x0f\x18G\x14\x89\x8c\x1dI\xc7\f7\u007fm\xbe\xf0\x9f\xdcJ\xcb}\xd7\u05f8\xf1\x04\x87}-\xb4\xfb\x81\x8f}\xf7z\x8f;\a=\xce\x168G\xc0i\t\xbaKe\x011ޮf\v<\xbe\xe2@\xcd\xdcƴ\xc6\xcfJ\x98\xfc\xddE\x18@\xfb\f\x04\xe1\xe2\u007f\x15ES\x12\tF\x97p\xff\xb3\xcbHX\xee-/\xdf\x16\xa2\xe8\xb2\xc7k\x99⮛\\\x8b\xb3:[\uea5d&6QO\xec\xff\"\x17\xa9Qa\xa8W\xae\xc7&۬\xfdm\xf4r\xb9C/\x97Ƚ\\\a\xe6\x0f\xbf\xf6\xd7_{\xf3\xd5\xdb'\xd2\xfa\x98K\xbb\xe0\x1d7\x91t&v\xb43\x89\xde\xd2x\xf3\xe4\xcdox\xc3\xcd\v\xab\aZ;\n\xfd\xdfK]_ӌ\xfd\x0f\xa9\x85z\xdd\xed\x1c\xe4\xb6\xd4\xcb!\xd6\vĹ\x81\uf1fdG\x88\xc9i\x80\t5\x8c衊7\xb1\x15b\x8b\x15\xf6\xa2!Aϖ\a\xb0\x1c\xb4\x9a\f\xe8\x88{\x14Z\xf9\xaf-?a[\xad\xf2\x98\x86\xf4\xb1\xb6x0#K1\xa7Pn\xe6\xd2T\x15\xb5\xb4Jn\xda\xf5\xab\x95\x14`b\x04\xe8\x18\xab\x84\xd0\xc1\f\x95\x1f+\xfb\xeb\xc3:\xa6\xe9G\x033F\xabQ\xfd\xafP\x8cG[\xe5\x15+f\x129^,\x83\x84\xe5\xa1\xe0\x88\xa1\x8e%j\x99\xbc\xa1\xebX\xabdbDOU\xaa\x9e\x1bs\x8b_\x1dԈ\xc4\x16j3\x91p\xbb\xac\x18\x86k\xb8\xbcJ\xd1\xd7p\xbc(l䨄\xf8\xac\xe7b\xd1`\x1fa\xf8!6\xc3\xf0D\xee\xab/\x97\x9e\x93*\xa3\xff\xb4ڡ\x1fbG\rg\u007f\xff\\L\x18o\x1d\xa9\xa4v\xfa\x978\xef\x05\x1a\xca\xc1\t\x86 $2\xcf\xda\xe0\xba8\xbb\x15*\xec\xbb\xefp\xbd\x9c\xf5\"\xfd'\"^$\xe1h?\x8b\xd6\xf2s;\xb3\x89\xfce\xc6 \x87\x04-\x127\xf6\xdc%\xacs\xd5\xff\xac\xa0\t\xf4\xf0,ц\x1d\vZX\xb1\xb2\xd0l\x88\x02GJGS\xd7\xff\xa7\xbe\x80\x02\xd5\\e9\xb8hUy\xf5\r\u007fI\x84\x01_\xd4>:~;\xb4\xc5\x1c^G\xce\xe1\x1f\x10\x95Ӕ\xd6\xe8\xb3a\xb2\xdc\xf0\xb9\xb59\x11\xee\b\x96\v\xa7ĭ,\xcc\x05\x034\x1d@\xedB2ڹ\xf1\xd1\xfd\x86\"{\n!\xf27\x15S\xf9&xZ|:$\x03\xb6\xce\x00U\x87\xe1\xe9\x1c\xd8\xf0\x1cߡ\x10\xac$\x14\xf9\x8b2\xfd\xa3\x05L\x94o\x80\x102x\x0e \xb766Ȭ\x1c\xe5\x93^\xd1\x0f\xbb\x89\xa1\xa8\xa9\x8a2\b\x9ahy㥆\x82\xa3*I\x12\x15\x1cw\\}ݽ\x1b\xaejԎ\x12\xa1#\xc1\xf4\xc0\x83\x11\x063\xb0\f6ڋF\xc4p\x8d\b\xe0\xed\xcc#\x88\xc1犾\xcfG\xae\xff\xac(\x01\xd5\x18\xc5\xf6\xb6{\xdd\xf4#\xe7\xf9\x88w>M\xdc{\xb7\xb5-\xfd\x80\x8eEwIC\x98V\t\x14Z\x99m\xfeW\xa8L\xd2\xe7\xf9\x11\xce?\x92\xfe?\xb5]Yl\x1b\xc7\x19\xde\xd9\xddٝ=\xb8Kr\xb9\\Z\a\x0fQ\x12uX\x96D\x8a\xa4\x15[\n%+v\x10\xb9\x89\xea\xc8B\xec\xd8\nm\xb7\x8d\x13\x1b\x89r\u0080ۂm\x9a^\t\xea\x00u\x9b\xabA\x84\xa2\x05Ҡ\x87z\xa0H\x9f\xac$E\x92\xa2H\xa2\x87&}h\xd0\xea\xa5@\x93>\xc4})\xfa\x92M\xe7\xd8]R\x14#\xc9\r\n\x90\xb3\xb3\a\x973\xbb3\xff\xfc\xf3\xcf\xff\u007f\x1f\xb9\xf8\"\xb9X\x99\xb3h\fL\x9d\xc3^#O\xa6.z.\x9d>\x99_Z^ʃՇ.\x97\t\xc6y\xf9\xb2\xbf\x86̞\xa5FQ\xf1\x86)\xea\x06\xd7\xe3G(R\x03h\x13\xe2\x18A:\x00,$\xbb\x19\xdf\xc0\xc7zid\xeb&썽m\xeer[\xaf\"\xb7\xb7%\xccԗ\xbf\xff唙h\x9b\xa4\xfaԷ\x1aR6\xa7\xee\xa8ᡍ\x98\t\xf0\xf8\xb6<\x96\xc8OO\xe7\x13c\f\x1e\xb6\x9f\xa6\x8e\a\x02\x05\x88\xfd\x0e\xac\xe3\xb6\\\xc1%\xb6=\xab\x0eUv\bҜ\x1d#\xfd|\x12O\x1fY\x14D>0\xe7\xf8;X\xfd\x16:I\a\x00\xebɱ䟭\xe1PJӕ\xf6\xb0\x00\x91\nS(\xacb\x1d\x06\xc4\xda\xc3v(\a\x91,tk\x91Gn\xc5\x17ZFJ3oRb\xa2y\x18\xa1\xef\xe23\x12\x94\x80\xa4\xcbi\x84ވu\x80\xce\xd8k\b\xa55\x93\xb8\xe8KH\xcc+\x82\xddȁn\x11$\xdf\x1e\x1a\xe1P\xaeC\x85\x11\xef\xc0\xe6u\xbbu\xb72]\xec\xa7։\xfe\xe2t\xb8a\xe5\xaeR\xd9w*~\x84\xe1\xd1\x1d\x89\x9fzv#\x87\x13\xc5P\xc1\xe3\xe6+XW\x9c\xe2f\xb9\xa3\x143\x9c(* \x88\x80\x02\xe4\r\xca\xe4ű5\xb7\xe0C\".\x89OW\x99\x92\xc1y\x9f\x12d\x81\xab\xf1\x94\x90dPb\x00\xbc/*\xb8q*\xee\xb2\xdaed\x86\r\x15T\xd5LG\xa6OTBPw\xd29IL\xf8i\xac\xc51\xf7\x8b\x9a\xc5G\xd6\"\x05K{>ȁ\x9f@\xc3\f\xcbFF\xc5w5\x863F\x17\xbe\xabb\x18w\xc1\x90\nuQʥ\x9d\x84\x9fZ-\x8e\xbd\xa4Y\x05|'\x9e\xde\xd3\xcby\xeb\x99W\xc02n'6A\xfe\x01\xf5\xb6\xcd\x1c\x1b\xe8\xfcC\xc8ed\x82n\xc8,\xf6.c\x91\a\xf3\x17\xe6\xc1O\xcf\x00\xee\x8c\x18\tG\x00\xb3\x86w D\x9c\xe6\x11r\u007f\xf5\xd6[\xb2\xa65\xc4T\x10\x96\x9c~\xa2w\x95\x89fI\x14l\n\xd4Xؠ\x81\xf6D2\x1e\xf5\x97\x80s\xb0Y\u007f\xf1\xbc\xc5\xfe\x81\x1a\xa5\x12H\xbb\x1c.\x0f\xf1_tkdA\x17w(\x8et\xa8\x0fc\xa1\t#\n\xd6\xd1\x06\x19\xb5\xe2\xae\x10\xd7\xc6\x0e\xf7=b}\xab\xd6\xfb\x93fGLR^\xaf-\x9a\xdc.\xdc\x1a\v\xad8\xd4<\xef7ono\x17\x98\x03\x1b\x99\v\xd0Ù|\tP[\x1e3-V\xa9\x03\xcb\x1a\x8b7Yf\x18\x0f\f\xda\x01xfA\x02\x15\xdf\xd6\xeb\xae1g\xb40uK\xfb\x06c\x90ĉ\xb7\x9e\xc7\xfc\xc4Fq\xff(8\x01Q!VK\x1c\x1a\xf1 \xe7\xb2E\xea\xa8\\b\xd87\f\u007f]\x02\xb3\xe7z\xacٻ/\x1dv2\x19\xa7s\xb4\xbb3\x11Kh\xc5G\xecN\xa9tl\xb6\xbb/\xd9a\xc7x\xc1!\b\xa6\xaa.\xfe.\xd7u\xa8ҟٓ\x89e\a\xf3C\xbb\x8dD\xaf5\xdd\x19\x89\x8f\xdf\xdc\xe5胝<\x96\xf9\xf8\xcaPw9\xc0\xc1\xa56切bZ\xe28\x8b\xf0#\x12K\xd1\x1e>\x87\a\x1b\xb2\x9c\b)\x97:A4i\x1dt\xf9\xfc\xf1gNk@\xd2иx\xe4\xd2I\x13\xab\x18\x85۾>+\xb8\x8f\n\xbc\xa4\x82\xfb\xa9\x92y\x80\xa6\x17=L\x17厧\x8f!S\xe3\xc3'\xbf3Ǐ˺t\x1f\xb8\xe9х\xbb\x00\x1e\x14\xf8\xc3T\xcf|\x94\xa6\x17\x03\x9d\xb3\xd1O6EVD\x1d!#0\x81X&46\x81\xb3#~\x91d\xf0\x96\xcb\xcd\xed\xae\xcc\xe6\x82E\x1b\xd4l\xd0a\xfd\xdb\xea\xb8AF\xda8\x95*\xe3\x1a\x92\x8f\xe3\x91\xe8/r\x00\xcbyA\x91\xcd\xfbMY\xb1\xc0\xad\xeeϬ\xb6\xb6W\x91\xcd䑍\x16!\xfcq]\"\x11\xff\x9eV\xe5\xab\xfb\xf1^S\xf9Ҡƺ\xe7\xed;)]\x18̹+\xb8#\xbc\xbcu\xe9\xea|l/c\x9d=M\xf1}\x9a\xa2ם\x92O>G\x06x:\x86\xe4\xb6\xd0)e/\xa4\f\\_\x9a\xedJ\xb8\xbfIt͖\xee(\xde=\xab+GՄzT\xd1_\xc0Cx\x98\x8c\xe9l\xd37<=\\\xe3o.%\xba\xba\x12\xa5\x9b\xf9;\xee\x9d-ޣD\x85\xb4(\xa6\x85\xa8rO\xf1\xb9\x86ka\xfcd\x988\xfc\x87\xbd\xf1\x9e\xc5\xe4\f\xe1\x06K}\xbe\xea\xaev\r^gv\xa4\xee\n\xed\xadQ\x81\xf7\x9e2\xed\xaam>\xce\x1e\x8c\xb9a/m\x9b\xe0\xc4\x0fL\x9b>$\xbc\xc5\xfa\xe9\x8f\x1av\x03\xdf327\xf3\xb5\x86CMְ\x8d`\x9ft\x16\xe2E\x8b\x11\xfa\xd7\r\x11O͈C\x80\xf9'\x8c\xf5\xef\x1b &\xf7#\x86\xb6\xa4\xe8\x9ar\xa8H\x05\x86V\xa2\xa1\xb2_\xa0\xcba\xeec\r;\x9e\xb9\xeb{\x99|\xbb\x1a\xa1\x13\xbb{Kj\xc4T\xaaH\x1e'\x11\xb94@\xf7!\xba\x88\xf6LC\x9e\xf5u\x9f\xa7Ѣ\x8c\a\xdd[\x02\x8f\xd9\x06|\xed-\xf7\xeb\x8eέ#\xfa\xb6\xfd}y\x9b}y\x9b\xf3\xcd@\xef\xd65\xfe?ܺ\xfcۖo\x9b\xe7U\xb8\x1a\xac\xb4\xd6Z\xe4>\xe6\xb6<]ϵJ\x96[\x1c\xab\xec\xf0~n\xab\x1fo\x9d\xd4\u007f\xbc\xbe\xd3\x1f\xadn}\xba\xda\xf2\xca\xd6Y\xb7\xe1OAm\xc7\u007f\xbb\xbaݿU[\xdd\xc0\xf3ui\xd1w\xbe\xb6\xa9\x87\x14\xb2\xd7\xd8·\xa3\x12\xb0Z\xff>\x9bit\x00\xa87\xab\xfa\x1b_\xdfa\xbbiJ\xdc'\xbc\xd1)\xbd\xe3\xa7\xfa\t|\xb5\xe9\xe6\xc3.\x8d\xbe\x06O\xb0q\x8fa\xa2\x13\x1d\xc7G\xfc\xc2Ӻa\x86\xd2M\xb1Y<ح\x14`\xf0S\xf1v\a\xfan\x18\x82\x8d\xe7\x83\xeb\x97}E\x06z6\xbfW\xb8(շ\x0e\x13\xbf8\xea\x8a\xe0\xb9.3\xd8\xcc./\xa6\x9b\xaf\xbf\xe12\xf5\xe4!.&^\xf1\x18&\x00\x83\x04\xe8\xf5\x80sM`\x95\xbcq\x89A5\xcbu\x87\aR\xbf\x87N\xd9|\xc2.Z\xaaj\x15\xed\x04o\x9f\x12\x8dǵ0!E\xfb\x80\x00s\x8fȂ\x89nD&\x8fnߝL\xeeN\x82'\x91,\x9e\x10C\x88OLJ\bD\x80vXB|\xf0/\x13$\x80\xac\xc2U\xf7*T\xe0Y^\bK#\xbc\xb2\xdf9\x9b\x1fE\x1a\x14\x17\xa4\xb0\xc0\x9f\xc5g@x\x15\xaa2\xbe\xd6\\\x12\xa1\x86F\xf3g\x9d\xfd\n\xef\xd9\xd6Y\x1f\x1c\xde\xf2f\x95\xfc<\xed\xeb\xfcW(\xb6\xb1\xc5\xf8\x0f{\x9a\xa5^ّ\xa1o\xb2ˁ\xba\x1aVlV\x12\xb2r\xae\x9c\xb5\xc1\\]P\xb5\x1fP@Q\x12b\xb8!\x8a\x1f\xfd\xda\xcb<\x80\x05\x87?H=Be\xb7\xefY\xbb\x0f\xf8Nő\xb2\x0fT\xbaA\x82\x9b\xc0\xb7\xf7;\x9e+\xc80\x812e<\x1a\xac\x8f;r!\xb7\xa2!4\x87g\x04s\bi,\xb6\x0f\x97Z\x9b\xd8\xebU\xcf˥\x80\"\xef\xd2\x05xH\x14\xb5]XT\xee\xa3\xec/c\xe9p5&W!\xac\xca1@\xbd\x98\xdd5<\xb6E\r\xf5\xa0W\xd9 \xfbO\x02\xfa\xa2\x85B\x9a\"\v\xfc\xb2\xa6}~\xa4U\xfd,*}h\xbc\xcf \b\xc6\v\xe7\xd3\xd4/\xbc\xa9~\xeb\xd7R?\x90\xf6+\xe8\xae\xd1\xc1`\xa4\xb2\xe3\nR\x19\xfd\x91g3\xf4\xc7ᣴ\x96\x1b8J\xe4\xa6\xfdf\xebV\xb1\xe9|\xa6e+\xb8\x1a\x8c\xa6\x95\xa0i\xd6\xeaJ\x1a\xf9\xae\xb2\xddMO\x04\xb4\xf6Ko\x181\x1b\xd8\x1d\x9a_\xf8\xff\xa7\x8e=-[\xc2N\xeb\xe8V?]\x1dW\x9b_\xba\x1f\xa3\xbf\x0e~\t^\xa0\xed\xf5\xa6O\ue3f0Y\xb6\x14\xb3\xf56\x89O\tl\\e\x18\xcd\xe5R\x99\xd2\\\xfaӹ\xcd\xfd\x11\x84\x03\xc9@lA|XT\xf1\xa3/\xf5M\x0e\xec\x96B\xbc\nC\xba\xd2=\xa8\xc2L*\xac\xeba}S\x87\xacl\xa8\xa1(\xa4q~\t|I\x1b\xcdi\x85I\x8b\xb0\x96\x9b\x10\"q\xa27\x9a:\xa1\x93[|B]-gë`\x8aB~\xd3\xfc\xe4Z\xeaz\xae^\xc9\x11Vm\xd0\u007f-u\x05\xcf6\xbc\"Ro\xb7\xf6?TV\n8 \x18\xbf\xcc\f\x9e\x9d\x9f\xc0#D\xbdE:1\x0f\xb7\x80\xc0b\xe5l\x8a\x88\x9a\x95\xbdm\xae\xa5\xf8a\xae\x1bX\xfe\xc0M\v\x1ed\x01\x88\xbe\xd2\xd9t^PT\x93\xcfg\n}\xc41\xabo/Iߙa\xb2H\xbf\r\u007f\x89,\x9a\xe1\x95\x10\xa1\x16\xba~\x8f\x03\xfe\b\xe1\x1an\x1cK\x10\x0e\xc1\x10,?%\x86\xe0*՜\aR\x82\x18\x8b*Y\x83\x17҃o\x8c\x181\xa3J\x92\xaf\xbe\xcb\xf3\xb2\xa2ww\xeb\x8a\xcc\xf3\xefJ\xaa\x14z\xe4\x86?\xe0\x9f\xaeA\xb8\x847C\x10\xee}\nB\x8ag\x9bƺA\x85\x8bS\xfb]\xa3\xe5\x97A\x85\x17(\xba\x97\xe8Y\xea|$[p\x95\xd8w\xdde\x9c^\x987\xd4%\u0558w\x1f\xa7\b\x12\xa0J\x11(@\x05\x9f \x9f\xfd\xd1a\xd3\x1c\x8e\xee\x9fg\xf8\xc2\xcb\xf4\xa2\x80;\xa4ƅ(O\xb6\xd4\xc5\xe0\x15\xf2\fr\x8c\x80\xbb\x89]{\x84\x80BR*\xe4'\x05r\x0e|p\xe8\xb5C\xb9}Q\xcb\xec3\xad\xe8\xbe\xdf\xca@0Ʀ\x1f\xfc\xe6\x83\xd3c\x06YZ\x93 \x8f:3c\xe5\xd9\\\xe9sח#\"\x94\xe0\x93\x8e\xf3\xbe\xa1\xeb\xc6\xefE\x05\xebRə\xe2\xe0`q&\x89u$Y\x11yيئj%R!Q\xf4\xe2nH\xb9\xbeB\x11^\xb9\x1e')\x142]\xd4\x13\xa0\x90\x87t\x85 \x8b\xcbE56\xb9\xec\xe9\x8fq\a\xc0ә\xa1\xf1\xfd\xbd\x1f\xfd5n\x18\xd0<~]\x11\xc4\xfb':\x8d\x8eX\xe7h\xf7`r\xd7\xe9RE\fKB\xa7uE\x96\x9c\x1eṣ\x1d\x99\x94n\xdbm\a\x17\"Bzw\xb7N\xfc#;\x1cg~\x90\x9f\xb22b?H\xc57\xf8R(Xss8\xae\x1e躑\x1f\x14\xd4\x16\xa7+Ӌ++lS\xadզ\x17\x17\xc1\x0fW\xd3x3\x9d^e\xb6;\xf4\xf1\x1b\xe0?\x1e\xf7/i\uf6f8\u007f\xf9\xa6\xfdw\x16&&\x16&\x98\x03\xcb-ԥ\xfcUjE\x02}\x13\xe4\xcc\x01\x06\x0f\xcd3\xf6_j(\xf2\xec\xc1\xeb\x9eͫ\x8b\x1b\xe0\xae#VB\xdfr\x15\xc8~\xbaޖ\rV\x9e\xf1Q\xbf]5G\x80;\xc1>x\x9a\xae\u007f\xd1ɢ\xbb\xb2wno\x9a\x1a̫Ӌ\xeeyj\b[\xaas5\xacR\x8b\xf9U\xba\x06v'\x15\n\x94h\x93\x9a\xd7\x17\xa7\x97\x97\xa8\x01\xecO\x81e\xfd\x01j\x89\xa7\xcf\t\x05\xed\xb2\r\xcf\x16\x86\xa8\xd7>\xe1wXh\x88\xc5`1!\x8d\xa5\xef\xf14eb\xffg\x99\xbc\xafH\xc7\xfdL\xc1ۦ\x9b\x1f;\x8b\xe1\xf8\xb949?)\xe5I\x9e\xc7c\x9aK\x00|\xcc\xfbp\xa2\xa3\xf38\x8d\xdcK\x98\xf0\b\x03\xd4۴\x1b1[8\x93zd%\xdeGl\xb8z\xf8Wd^\xf7\xad2O\xef$\x95\xd7$;\x95\xc7}.\xec\xc3\xf1\xa7\xa9\xf8\xfaQl\xddjvU\xc7]\xf7\x97\xf7\x95\xa4sͶi~Z\xdb3\xda\xf9B\"\xbe^\x13\xd6\xeb:nHF\xbd\xa2\xfb\xc1\xf6\x94vј\xe7\xfel/(\xcd}hMt\xb0\xbe\n\x1f4\x16{Z\x9e\xb0^\xb8\xb7ש\xc6\xf9v&\x89\xb9\xb0\x9c\x14\xa9-x~4GQ\xa6c\xb4%\xb5\x94\xdax\x8d\xdaӵ:\x84XΡ澟\xf6\x16\xb8%\x81\x15>\x83֮\xc0\xbdJ\u009a\xe7\xaa\xe7\x89j9Ԍrq\xe2\xe7\x80!\x97}\x97\xc2\xfa\x10{\xfb.2\xd6z\xf4\xb5c\x9e%\x1f*\xb3\xe7\xfa\x8e\xe3\xa1:x\x9e\x14\xb7\xf8\xdcSl(\xbb\xa4\xaf\b\u007f\xc4g\xcccS;I4^\xae\xc5\x1dp\f#\xeeX\xdfq\x88W\xe3\\\x10\a\xa5\xfb\xf2`\\\x93\x9a\xa3\xdd\v\t\xe3\x81\xdfy,\xfe\x03\xdchmP\xbe\\\xe5p\xf5\xbcu\xfeW\xaf\x81s8\xe0\x87\xb1\xc9\x18\xaf\xedM\xd7\xfcO\xc4\xdem\xc8\xd3\x0e\xf7.\x89\xf3>\xe7\xdc\x0fu5\x8cd\x0e\xfbޅ\xf1:\a<\xa45e\xa3\xaf)g\xa7E|\xd5\xe7a\xa8\xb7\xce\x1d\xe4\xb9d>D\xbc\xc6o\x81/\xbd_\x9a\xbe\xd5\xf7_\xc9\x15X\x1d\x8b\x8fQγ\xe62\xd8K\xfd\xb3\xfb\xd5N\xba\xcf\xfa\xc1\xeav\xbb\x1e\xfa\xa6\xb6j{r\xde\xd1\x19\xc2u\xed\xbd\xcd\xfc\t8\x95\xba\xf4\xfe?Ȧ&\xe9\x1b\x9fO\xd37\xe7\x80<#\xbfn=n\xaa\x0f\v꾷X\xf5]}\x83\xdeo6\xfd=\xe6X9?Q\xff.\xfdl\xe4|?\x86\xfeD\xf8\xaa\xe6\xc7.\xf7\\\x8bᤜ\xb6~\x02\xdes\x8c\x0f:\xd6\xfa\x1f-\xee\x84K\xe5\xad}\x8b\xfb\xd4Gա\xfe(VF\xff\x8a\xaf\x1d\xf7:\xaf\rC\x88e\xb1[\x83_Ur\x8e\xb9p?\xfb\x19\xe5\xb6x\xddE\xf0r\xe9g\xa2\xf7@\xd6}\f\xfa4\xb7\v\xf6\x91\xd8\xe7\a\x89\xdf\xfd\x9d\xfd\xd8\xec\x81\xe8\xcbv\xce\xedgn^=\xeb\xa2\xcdP\x03\xce!\xc5\x16\xe2(!\xf7\xc1\xbfM\x1c\x80w\x905\xd4\xce\xe6\x9d\xd7\x13\x84X,\xd7(_\x89\x8f\xf1.\xc7\xf6\rS\xc7\xc0\xe5\xea5\x1c\xef\\l'\xf6n\xb7\x95\xee\a\xaaW\xfd\x1c\xc6\x11\x8b\x89\x9bt\xbe\x19\a\xdak\xe4\xc4F\x9e\a\xbe\x1c\x03/\xa2\xac\x90\xcf\xef%\xd7\xfa\x9a\xbe\u0379\xae\xfe\x11\xb7t>\xe4%\xf7&\xc3g\x9bꠋ\xb0\x9a\xee\vX\x17ݷ\xc7\x1e\x19\xf3X\xf3\x1e\xe4ß\xc0\x9f7\xc2>\xd6\xeaL\xbd\x17\xe5gİ\x9d5\x01c\xe6g\xacg\x8c\xe1\xa0~3\xa6\x12\xcfAΛ5\u007fK5\xcc\xd8\x1a\xff7x\xef\x83\xf6{õ\x88!\xc5\xdd:\xf4)\xd7\xf7j\xf1\xfc\xc0\xf7\xa4C\xee\x11\x01\xcf~\xde`\x9fҚ\x1f\xe4~]\xf0\xbeP匇->m\xaf\xda\xe8X\x90\x9e^ۯX#;\x87\xba\xbf\xd2\xefJ\x97\x96\xfaM\xccS\t\x98)C\xde\xd4\xff1O\xe0\xbeL\xc6}\xfb\x8f\xa0\xbd\xe2\x12\xef\xf4\xec\x83\xf4S\xa9o?\x03\x95;@\xf7&\xe2u\xfa\xdfqf\x1f\xda_ͩ\xd4g\x91\xf9\x97po\xb53\xef\xf6\xea;\xe8ׁ\xff\x1d\xf5\xeeDo'\xbd:\xe3֙\xfe\xce<\xed·\xae8t\xa3\xbf;\xed\xb7v\x16\xeanӧ\a==p\xeaa\x16=\xf4\xc8\xd2+\xcb~\x96\xbc,\x98=\xf9ғ\xb6^8\xf7ʋ\xe8\xed\xb97\x8f\xfb\xd8\xebKc_\x98\xfdܡۛEd\xbbw\xd9\xce\xfa\xcb\xed/w\x00\xae\x03q\x1e\xa4\xf7 \xf3\x1f\x9c%\xf0\x19b\x1d«\xa1x\r\xe5o\x0e\xfd9\xf4\x0e\xc3}\x18\xdca\xf4\fw熫\x1f\xce\xc3;\xf4\xbcC\x9f\x11\xeaF\xc2\x1e\xe9\x1e\x8d\xa4m\x94u\x94\x9cѴ\x8e\xe1ӝb,\xfec厣a\x1c\x8fǫ\x9d\x00k\x82~\x13\xcdv\xa2\xf5.{\xb9f\x9d\xeb\xf3$\x1eO6\xc3\xc9\xf0\xa68\x9f\xc2өf0\xcd\xfe\xb4\x95\x82\a\xd3q\x9a\x0es\x06\xbc<3̣1ϝ\xbc[\xaf\xbb\xddә\xf6f\xaa\x9d\t\xef\x1e\x9af\xe15K\xee,~\xcev\x0fg\xd33\xc7;;\xc7\xf3\\\xbe\xce3\xebyfx/\xdf\xe6\x9b\xd9|\xde\xdf\xe7~.0\xd3\xfb\xd5.\xe4\xc3B\xbe<\xc0\xabE\xf0\x17\xc3Z\x82\xc3\x125K\xd5.uO\x96\xe1\xb7\f\xd6r\xf5\xcb\xdd\xc5\a\xcd\xf1A\x1e>\xe4y\x05m+`>̃\x87\xe9y\x14\xdeJ\x1e=f^\x8f\xd1\xf48.\x8f\xc3z\u008cV\x89\xbf\x9b\xff\x93\xbc}\x12\xeeSjV\xe3\xfc\xb4\x9a\xa7\xe1>C\xcf3\xb8<+\u007f\r_\x9e3\xcb\xe7\xf1|\x1e\xaf\x17\xcc\xfc\x85\x15\x11kqY+\xe7\x1f0\xd6\xc1^Ǜ\u007f\x9a\xfbz\x9a\xd6\xd3\xfc\xa2\xba\r\xce6\xd8\xdfhF/\xa9\u007f\x19\xcfM\xe6\xb2I\xff\xcd|܌\xe7+j_\xa1\xf9U:\xb6\xd8ۂ\xebV\xfd\xb6\xea\xb1\xd5=x\xcd\xec_s\xfe:\xdd\xdb`\xbc\xc1\x8b\xedto7\x9b7\xc5\x0e\xef\xed[\xceަ\xf5m\x9e\xef4ם4\xec\xc2\xe3\x1d\xbaޕ\xff\x9e\x9e\xef\xe9\xb5۽\xd9Ï=\xf2\xf7\x98\xf1\xfb\xfa|@\xf7\a0\xf6\xe2\xfb\xa1\xbb\xfc\xa1\xb3}\xe6\xbaOϏ\xd4\u007f\x04k?\xec\xfd\xe6\xb1\xdf\xde\xc7\xf2>\xf1.\x1d\xc0\xf5\x80\xef\xa1\x03\xe6\u007fP\xfd\xa74}\x06\xfb3w\xeas\xf3\xfc\x9cW\x87\xf8x\xc8\xd9\x174~\xa9ח\xf4|\x85\xd7a\xe7\x87q\xfdZ\xbf\xafy\xfc\x8d\xbd#z\x1cq~\xd4zԻ|\f\xefcz\x1e\xb3\xf7\xad~\xdf\xf2\xe5\xb8\xfc\xe3g\xc0\xc8\xd8\x18IQ}\x8a\xca/\x86G1\xfbŭ\xc5\x17\x88Ñ\x94h/\x9c\x95\x9c*p\xbdls$\x97\xb7\x16\xf2J\xd5\x11+\"\xb9\xa2@$\xa5\xfd\x8c\x96\x9e'Ԕѫ\x8c\xdee\xad圕[\x1fɕ\xa5\")\x0f\xa3BF$\x15aWһ\xd2\xfeH*gGR\xa5\xbe8\x18\xc9U\xfaT\xdd\x1aI5yլ\xd5i\xaa\x0e\xb3F!\x01\xb7&\x8c\x9a;\"ɤ!S\xffk\xfa\b\xfe\xd4R\xef7'\xa9MK\x1dk]8\xd7\xea]O\x9eߚ\xa4>\r\xf5\xe17\xc8'xs\x1dN\xd7\xc1o\xc8׆45ҧѹH\xae\xdf\x16\xc9\r\xf2\x1b\xd3\xd4D^S\x9a\x9a\xea\xdfT\x8eߙ\xa4Y3\x01\xa79>\xcdWGrs\xa60\x8b\x16-\"i\x89K\xcb3\x91\xdc\x02\xb3\x15\xbf[\xcbm#\xaf\r>m\x9d\xb5\x93\xd7\x1en\a^w\x80\xd7ќ;\xeaՉ\x97\x9d\xac\x9d\xbbG\xd2\x05\xdf.p\xbb\xea\xdb\x15\xffn|\xe8\x8es\xf7e\x91\xdc\xca\xcf\xdbp顾\a߲\xf0\xe9\t\xbf\xa7\xb3^\xb0z\xc1\xe8MG\xefݑ\xf4U\xdb//\x92\xdb\xe5g\x9be6?\xfa\xbb[\x03ܩ\x01|\x1ch\x1d\xe4\x9e\f\x823\xd8\xf9ད\f\xd1k(\xee9擃C\xce\xe9H\x86\xf1s\xb8\x19\x0f\xd7c\xb8\xe7;\xb2\x04\xfd#Ԍ\xd0o\xa4>\xa3x0\x9a\xd6Ѵ\x8d1\x9f1\xe6r'Mc\xf1\x1eK\xf7X\xf9\xe3\xdc\xc1\xf1\xb3\"\x99`\x0e\x13\xf81\xd1\xe7\xbb\xf8\x91\x8b\xb7ߊd\x92\xbcI\xea&ß\x82\xd7\x14>N\xd5{\x9a\x19L\xc3{\xba;2\x83\xa73\xf0\xcb3\xbb\xf7\xc1_\x00\xe7~\xe1w YH\xef\x03\x9c\xf7i\xfd\x80\xc7{i\xd8K\xff\x87\xd6}\xfc\xdd\xe7n~\xa4n?\xbc\x8fݙ\x8f݉O\xcc\xe5\x138\a|\x1f\x1ct~\x10Χz\u007fJ\xfbg\xce?\xc7\xe1\x90\xf7\xfb\v\xfc\xbf\xc0\xf9K\xd8_\xf1\xf6k\xb3\xff\x86gG\xe4\x1e\xf1\xce\x1eu\u007f\x8f\xe1\xfa\xad^\xc7i?n\uf133\x13\xd6\xefܙ\xefy|\x92\x87?\xe0\xfb\xa3\x9e\xa7\xf8\xf7\x93\x9e?\xbb_?\xc3\xfcE\xaf\xd3\xf4\xfd\xaa\xefo\xe6\xf0\xbb\xef\x8234\x9c\xe5\xebY{\u007f\x98\xed\x1f\xfc;'\xce\xd3r\x9e\xae?WE\x9a\x14\x8a4\xdd\x18\xe9\x05\xdb\"\xcd_G\xec\x8a\xf4\u0095\x91\x16\x18\x11i\xc1֑^\xbc>\xd2Bk\"\xbd\xb4\x84\x90_\xb8s\xa4E\xfcW\xa3ȬH3r\"-\xda=\xd2b}\"-\x0e\xa7\xf8Z\xff\x05\x19\x14i\xc9\f\x01\xef\xb2\x05\x91^n\xaf\x94\x9c+\xaa\x88͑\x96Ό\xb4\x8cܲeŢH\xcb9+w2\xd2+\xf5,﹂\x9a\x8a\xf9\x84\xbaJ\xf3\"\xad\\*ҫV\xdeX\xd8\xe3\xc4x\x1aƛ\xc9x\xfa&\xe02Q\x8f\x89f:\x917w\xe1\x9aˏ\\\xf5\x93h\x9c̣\xc9G#\x9d\x92\x1b\xe9T\\\xa7\xe20\xcd\xf94z\xa6ÚA\xdf\f\x9f\xf3xt\x0fL\u007f\xfb\xa6\xb3q\x9b\xe3l..s\xad\xf3`\xde\xeb|\xbe\xf9ݧ\xd7\x02\xde/\x90w?M\vy\xfa\xc0\xeeH\x17\xe1\xb7\xc8\xf3b\x9a\x16\xbb\xb3Kp_\xe2y\xe9\x8e\xff\x01U\x87\x80\xb6x\x9cc`d``>\xce\x18\xc0\xa0\xc0\x00\x02L@\xcc\b\x84\f\f\x0e`>\x03\x00\"T\x01\x81\x00x\x9c\xad\x92\xcdn\xd3@\x14\x85\x8f\xed\xa4\x12\xe9\xa6?4(\xa8\x8bY\xe5Gj\xdcԩ\xa9Ȋ\xaaRĂ\rj\x85\xd8:\x89\xdbX\x8d3\x96=M\xd4\a@<\x06\v\x96,\x80g\xe0\x01X\xb0\xe0!X\xf2\x02\x1c;W\xb4A\xb4\x02)\xb6\xe4\xf9f\xee\x9ds\xee\x1d\x0f\x80]\xeb\x15,,\x9e\xc7x\"l\xa1\x867\xc26\xca\xf8 \xec@\xe1\xa7p\t5\xeb\xb9p\x19u\xeb\x93\xf0\x1a\xaavY\xb8\x82={&\xbc\x8eG\xf67\xe1\rl;\xdb\u009b(;]\xe1-ԜXx\x879\x1f\x85\xab\xcc\xf9Jw\xab\xf4\x80\xb3â\x92\x9c-xx)l\xd3흰\x83g\xf8,\\\x82g=\x14.\xe3\x855\x10^Þ\xf5]\xb8\x82\xd7\xf6\xae\xf0:\\\xfb\xbd\xf0\x06\xea\xf6\x0f\xe1MT\x9c\x86\xf0\x16<\xe7\xa9\xf0\x0e\xea\xce[\xe1*s\xbe\xe0\x04\x1a\t\xae\x91\"\xc2\x05\xc60<\xb5&\x86hq\xec36-V\x8e1G\x88\x8c\xf3\x98#Ntr\x9dF\x17c\xa3\x9aÖ\xea\xeb\xa9Q\xc7\xf30\xd31cwmR\xf0\vɔ\x9c\xcfN\xb9>\xa1\xe9\x88[n\t(_\xf5\xd30T\xa7z\x121t+KV\xfe_\xbf͈\x8b\x03\x1e\xbf\x8b\xce=nm\xdf=\xf0\xdcΪ[\xe8\xf2\xed\xd0\xfa\x88\xbb\xbd\xe2t\xef֟\xf1\x9br\x1e\x15\x19\xbd\xc2\xf1\xa6\xf4\x16ź\x1d\xf7\xc8\xf7Ts\xc9p\x16\xa6Y\xa4\xa7=\xb5\xe8\xa0u\xd3²\x81\xff\xbb\xf8\xf6\x9fŋ\x94\x9fWޖ\xca\xcfx\x1f\xf2\xaar\x89\x01\x1a\x94Q\x94\xd1\x1c\xf3ړ\xe2\xe6\\Q$\xa0\xa8\xa2\u05300U\x8c\x87EF\xc0و\xa3\xe1znv\xc9\x1c\xc3Np6\x0e\xd5<\x1c42\x15\xeb̨D'W\x93 U\xd1POU\x16\x1a\x15LG\xcah=\xb9\x8c\f\xb3\xf3Kih\x95\xf1@\xf6\xf9\x9eKo\xc1Rona\x1f3ݘ$\xeb\xed\uf7f3\xab`ѕ;\xd4\xf1\xbf\xfeֿ\xfd\xca\xd5\xdc\xc3\xfb.\xc9Jk\xfb\x05\xead\xebe\x00x\x9cmZ\x05\x98\xe4\xc6\xd1\xdd\xee\xeaᙅ;\xb3\x83v8Q\xe28\x89\xc3q\xd0af\x8eF\xea\x19\xe9Ftji\xe7\xe6\x82vȱ\x9d8q\x98\x999v\x98\x99\x99\x99\x99\x99\x93\xffU\xb7fw\xf6\xf2\xef\xf7\xadTՒZ\xea\xee\xaaW\xaf\xaagM\xaeٿ\xff~s\xed\xf8\xb5\xff\xe7\x8f>\x8a\x83X\x93B\n\x12J\xb4D[tDW\xf4D_\f\xc4P\x8cĺ\xd8\x10\x9bbK\xec\x13\xfb\xc5Q\xe2hq\x8c8V\x1c'\x8e\x17'\x88\x13\xc5\xc5\xc4\xc5\xc5%\xc4%ťĥ\xc5I\xe2dq\x19qYq9qyq\x05qEq%qeq\x15ቫ\x8a\xab\x89S\xc4\xd5ũ\xe2\x1a\xe2\x9a\xe2Z\xe24qmq\x1dq]q=q}q\x03qCq#q\xba\xb8\xb1\xb8\x89\xb8\xa9\xb8\x99\xb8\xb9\xb8\x858C\xdcR\xdcJ\xdcZ\xdcF\xdcV\xdcN\xdc^\xdcA\xdcQ\xdcI\xdcY\xdcE\xdcU\xdcM\xdc}m}\xed\xb7k#q\x0fqOq/qoq\x1fq_q?q\u007f\xf1\x00\xf1@\xf1 ዱ\bD(\xb4\x98\x88\xa9\x88D,\x0e\x88\x99HD*2\x91\x8bB\x1c\x14\xa50\xa2\x12\xb5\xd8\x16sqH,\xc4a\xf1`\xf1\x10\xf1P\xf10\xf1p\xf1\bq\xa68KY>E>U>M>]>C>S>K>[>G>W>O>_\xbe@\xbeP\xbeH\xbeX\xbeD\xbeT\xbeL\xbe\\\xbeB\xbeR\xbeJ\xbeZ\xbeF\xbeV\xbeN\xbe^\xbeA\xbeQ\xbeI^(/\x92o\x96o\x91o\x95o\x93o\x97\xef\x90\xef\x94\xef\x92\xef\x96\xef\x91\xef\x95\xef\x93\xef\x97\x1f\x90\x1f\x94\x1f\x92\x1f\x96\x1f\x91\x1f\x95\x1f\x93\x1f\x97\x9f\x90\x9f\x94\x9f\x92\x9f\x96\x9f\x91\x9f\x95\x9f\x93\x9f\x97_\x90_\x94_\x92_\x96_\x91_\x95_\x93_\x97ߐߔߒߖߑߕߓߗ?\x90?\x94?\x92?\x96?\x91?\x95?\x93?\x97\xbf\x90\xbf\x94\xbf\x92\xbf\x96\xbf\x91\xbf\x95\xbf\x93\xbf\x97\u007f\x90\u007f\x94\u007f\x92\u007f\x96\u007f\x91\u007f\x95\u007f\x93\u007f\x97\xff\x90\xff\x94\xff\x92\xff\x96\xff\x91\xff\xa55\x12$\x89HQ\x8b\xdaԡ.\xf5\xa8O\x03\x1a҈\xd6i\x836i\x8b\xf6\xd1~:\x8a\x8e\xa6c\xe8X:\x8e\x8e\xa7\x13\xe8D\xba\x18]\x9c.A\x97\xa4Kѥ\xe9$:\x99.C\x97\xa5\xcb\xd1\xe5\xe9\ntE\xba\x12]\x99\xaeB\x1e]\x95\xaeF\xa7\xd0\xd5\xe9T\xba\x06]\x93\xaeE\xa7ѵ\xe9:t]\xba\x1e]\x9fn@7\xa4\x1b\xd1\xe9tc\xba\tݔnF7_{\x1b݂Π[ҭ\xe8\xd6t\x1b\xba-ݎnOwX\xbb\x80\xeeHw\xa2;\xd3]\xe8\xaet7\xba;݃\xeeI\xf7\xa2{\xd3}\xe8\xbet?\xba?=\x80\x1eH\x0f\"\x9f\xc6\x14PH\x9a&4\xa5\x88b:@3J(\xa5\x8cr*\xe8 \x95d\xa8\xa2\x9a\xb6iN\x87hA\x87\xe9\xc1\xf4\x10z(=\x8c\x1eN\x8f\xa03\xe9,z$=\x8a\x1eM\x8f\xa1\xc7\xd2\xd9\xf48:\x87Υ\xf3\xe8\xf1\xf4\x04:\x9f\x9eHO\xa2\v\xe8\xc9\xf4\x14z*=\x8d\x9eNϠgҳ\xe8\xd9\xf4\x1cz.=\x8f\x9eO/\xa0\x17ҋ\xe8\xc5\xf4\x12z)\xbd\x8c^N\xaf\xa0Wҫ\xe8\xd5\xf4\x1az-\xbd\x8e^Oo\xa07қ\xe8B\xba\x88\xdeLo\xa1\xb7\xd2\xdb\xe8\xed\xf4\x0ez'\xbd\x8b\xdeM\xef\xa1\xf7\xd2\xfb\xe8\xfd\xf4\x01\xfa }\x88>L\x1f\xa1\x8f\xd2\xc7\xe8\xe3\xf4\t\xfa$}\x8a>M\x9f\xa1\xcf\xd2\xe7\xe8\xf3\xf4\x05\xfa\"}\x89\xbeL_\xa1\xaf\xd2\xd7\xe8\xeb\xf4\r\xfa&}\x8b\xbeMߡ\xef\xd2\xf7\xe8\xfb\xf4\x03\xfa!\xfd\x88~L?\xa1\x9f\xd2\xcf\xe8\xe7\xf4\v\xfa%\xfd\x8a~M\xbf\xa1\xdf\xd2\xef\xe8\xf7\xf4\a\xfa#\xfd\x89\xfeL\u007f\xa1\xbf\xd2\xdf\xe8\xef\xf4\x0f\xfa'\xfd\x8b\xfeM\xff\xa1\xff\xaa5%\x94T\xa4\x94j\xa9\xb6ꨮꩾ\x1a\xa8\xa1\x1a\xa9u\xb5\xa16Ֆڧ\xf6\xab\xa3\xd4\xd1\xea\x18u\xac:N\x1d\xafNP'\xaa\x8b\xa9\x8b\xabK\xa8K\xaaK\xa9K\xab\x93\xd4\xc9\xea2\xea\xb2\xear\xea\xf2\xea\n\xea\x8a\xeaJ\xea\xca\xea*\xcaSWUWS\xa7\xa8\xab\xabS\xd55\xd45յ\xd4i\xea\xda\xea:\xea\xba\xeaz\xea\xfa\xea\x06\xea\x86\xeaF\xeatu\xe3\xb5o\xab\x9b\xa8\x9b\xaa\x9b\xad\xedS7W\xb7Pg\xa8[\xaa[\xa9[\xab۪ۨ۩۫;\xa8;\xaa;\xa9;\xab\xbb\xa8\xbb\xaa\xbb\xa9\xbb\xab{\xa8{\xaa{\xa9{\xab\xfb\xa8\xfb\xaa\xfb\xa9\xfb\xab\a\xa8\a\xaa\a)_\x8dU\xa0B\xa5\xd5DMU\xa4bu@\xcdT\xa2R\x95\xa9\\\x15\xea\xa0*\x95Q\x95\xaaն\x9a\xabCj\xa1\x0e\xab\a\xab\x87\xa8\x87\xaa\x87\xa9\x87\xabG\xa83\xd5Y\xea\x91\xeaQ\xea\xd1\xea1\xea\xb1\xeal\xf58u\x8e:W\x9d\xa7\x1e\xaf\x9e\xa0\xceWOTOR\x17\xa8'\xab\xa7\xa8\xa7\xaa\xa7\xa9\xa7\xabg\xa8g\xaag\xa9g\xab\xe7\xa8\xe7\xaa\xe7\xa9\xe7\xab\x17\xa8\x17\xaa\x17\xa9\x17\xab\x97\xa8\x97\xaa\x97\xa9\x97\xabW\xa8W\xaaW\xa9W\xabרתש\u05eb7\xa87\xaa7\xa9\v\xd5E\xea\xcd\xea-ꭣi\xe2\x1b\xe3\xa5~Y\xc5Y\xdcJk\x13\am\xa3\xfd2\x88Z\x11N\x952\x95_\xaa\xda\xe8RM\xe2$\xedV\x91\x97\xf8\xe5T\xcb*\xea\xb0\x1c\x9b\xaa\x15D:\x98\xb5\xaa8\xd5f\xe0\x9e\xf5\x8a\xa46\xc3FN\xe3\xac6\xbd\"\x9f\xeb\xd2\xcb'\x93\xb6\x89\xa7\x99\x9fP\x90cv\xf2T\xb7\x82$\x0ff\xaa\xcc\xfd\xb0\x1b\xe6\xf3,\x81Њ\xb3q~H\x95:̕YdA\x97\xdf\xe3\xf9I\xa5콓ğ\xf6\xf1ya\x11\xe5\x996\xfd\xed<\xa9S͝\x0f\x1a\x91;\xea5r]\xb4\x0f\x96A\x1e\xea\xceطg\xaa\xfc\xa9¿Q\xe3<\x9fu\xf9\x80\t\x98\xb5\x8a2Ϊv৺\xf4\xd5$\xcf*\\O\xc2v\\\xf9I\x1c\f*}\xa8\xf2\"\x1dO\xa3\xaao\xe5y\x1cVQ\x1fצ\x99\x97\xe8I5tb\xa0\xb3J\x97\x03\xa7\x94|\xfb\xc8\xc9\ajSœ\x85\xe2\xb1t\xf2\xba\nqc;\xce\xf8\xd4ڎC\x9d\xb7\xe2ԟ\xea~\xea\x17\xbc 3]\xb6\xfd\x90\x1fRX\x9bJ\xe90\xaeF\xa6҅7\xf6\x83\xd9\xdc/\xc3\xd1\xc4Ǭ,\xb5\xeeRPE\xe2/Z\x85\x8fE\xc3\xea\xe5Eg\x92\x97\xdc>\xb4\xb7/\x15\xdbS\xa3\xb4\xf4\x01\x1dTC\xac\xe3v\x99\xbb\xc1\x8c\x96\x8a\x1d\xc1\x80\xd7\xd3\v\xe22H\xf4Ю\xe7R\xb1\xab\xbeT\xac!4\xca\xc6\xc1Zc\xbc\xe8\xc1\xe9\x838\x9b\xe4\x8d\xdc\x0f\xcaܘȏKCc?\xeb\xfbe\x99\xcf\xedk\aN\xb4/\xed:\xb9.\x9a뼦-T\xf8Y\xd8\r\xf2\xb4(\xb51\xfb\xf4\xa1 \xf1S\u007f\xe5uj\x1aO`-ڟ\xc0nKMz\xa1{\xf8\xf7\f\xec=:j\xf5\xfe\xaa\x8c\xfdl\x9a\xe8\x16\xa6-\xc3\x18\xfcDg\xa1_\xb2\xb5\xb5K\xbc%O;xOʋ\x85\xe5\xc9t\xd5_NM]\xecL\x19\u007f[\xa7\xd4\xd5\\k,R\x94\x17E\x9cM\xbd\x00\x0eԞ\xc0\x86`\x0f\xee\xe4\xe5\x85\xcez\x01\x06\xc1\vW\x0e\x9d\xb1yx\xb2\xcci\xa6\x17\n^a\xba\xcd\xfbL\x8f\x9dϋ\xfcdҫ\xa2:\x1dWX\xe16\xee,\xa2E\xbb.\xac\xa3$:ͳ\x96\xf5\x83\xa1=z\xe6`\xcdSTg\xec*\x83\xa0d\xbb\xe1/\t\xa94\x86\xa2\x10\x86R'I\x94\x97\xd9 \xd0p\xfbI\x1c\xf8\x95ތ0T\xaf\xc8ain\xf67V\x1a\xacA\xac\xe8u\xb1z\x95Ǿ\xe5\x96\xc8ͽ\xbd\u007fߞ\x16\xd7垦\xba\xd8\xfb\x90]\xdei\x92\x8fu{^\xea\f\x00T\xf9ffڀ\x1d\xf8So\\\xc6z\x12\xf8F;k0\xbc>-\xc6%\x03\x87\xcaf\x8c\"u\xd8\x022\x98\x19\x05u\x85\x89,\x16\xbd\xc2/4:\x8f\ve\xfcm\xddvS\xa30\xf1\xa6c\x11\xa5N\xdc9O\xe0Ye<\xd3UT\xe6\xf54\xea\xd5p\xcb\x12\xfdj|\xc4\x18\xb6\x81\x95\x8f\x83VU\xd6\xc1\xac\x8f\t\xd7\vo\x1c'I\x1fӪ\xdd\x04t\x9d\bcu\x825f'ڱÆ\x00F\x99Q&/\xab\x1e\x1f\x9c\xcdX\xa9.\xba:\xdb\xd6\t\x8cC\xe1\xcdyk\x8a\xafM\x18}\xaa\x8e\x89+\rD\xe8b\xf9K\x9d$>\x1c\x1b\xae\xdbK\xb8S,\xe4\xb8\xc3s\xe0\xa5\xe1\x00\xadU\x94\x1b\x8c[wM\x1dW-\xfd\xb0n\xe2)\xc0\ah1\xad\xc1Mh\xe2\x1f\x82%\xc4I\b\x03\x04\xef\x83@\x85\x0fw\xa8\xc7\xe0q8\x18\x04\xc1`\x81\xf7\x13>\x0e\x1c\xebP\xac\xaa\x12\xd8\x13\xfap^ؼ\x9b\xd3\"\x9c\xf4\xac0\xcf˰o%\xf8\x8cN6\xdcUf\x8a6\xb4\xb8K\x96\x15\r\xddb\xb8ѻv\xbf\x0e\xe3܉\x96>\xb9.\xad\xdf&\xf1\x84M\"\x9b\x0e\x1b\xa3\xce\xf2*\x88\x066\x1cx6\xcew\"\xe0~^.:L#qc\xcf$裄U\xf7\x9c9b\xdd7w$o\x199\xf2tܞ\xd4\x15\x90\x99\xaaj\xd1\x1f\xc7Y\x1e\x00K\x11\x84\x80\x94\xd3^\xa6\xe7ƾD\xcd\x11W\x11\n\x12\xbe\x8a\xf7\xf4\x19\x88\x9d3#\x8a\xe08`2\x12\xc2\xcbq3\xbe\x8b\xe3踬M4\x1a\xc7e\x15\x85\xecA\xfe\fD\xc92\x05\xbc\xdaoH\x03\xb0\xa2i\xe4\xe8ԯ\xf2)\xa3%\x00\xbe\xb7\x14\xb3\xce8vK0\xae\xe1FIntȋȋ\x89\x81\x0e\x80\x1a3\x9dX{\xe8\x05\xb6K`\xfcF\xe0\u07b3\xe4Y\xcaDq1\xb0\xa1\xc5hp\x88\nQ\x0fð\xfd\"\xd2`I+L\xba\x9e\xf7l\x920\xd6>(\xac\x86\xab\xc3Z\x11[a\xd8A].\x06\x18if\xa6\x9ac\xe9Ɗ\xcc3:\xb4\xb77\x81a\xc0O5r\xdf]\xe0\x16\u05cc\xb7\xe53=Z\x91\xbd\xed=Z\xd4\xcet\r\xdc\xee\xbb\xde\x13\x10B\xa40%L\xb9g\a\xc0\xe3\xeb[ɒU\x1a\xeb\x90\xd7 \xce\xda\x00乿\x18\x8e\xfd\n\x8f/\xbc\t \ue625\x02&\x00\xa4\xe0e\x87jv\xeea2\xb6\xb1T\x9a\xab\xa3\xa5\xaeӢZ\x8c\xe0\xf8F;n\x84P\x1a{\x98\n8\xfc0\x1f3\xc9\xf6\xa6 \x18\xc5z\xa3ԙU1\xa3q0[\xb0\x95\xdat(\xd3\xe8\xd2Fh\xcf0\xf4oDy]\xbaL\x8d\x19a\xb5\xbe\xab\xf3\xf7\x8cvU\xcc@oG\xebY\x92\xc6\x01\xa2\xef\xe8\x1a[\xa6\xe3q&\x88\r>\xca\f\xac\x96ć\x11\n\xddM\xa6\xc0\xfd\xc3]z\x87yu\x8a\x06t\xc8j{\xb4C\x90y^\xd7w4\x8b\xf4\xbb\xaa\x9d\xea]\xd5B\u007f\x17\xc9\x0e\xd2\x198\x1d\xa78\x88\xd3=>\xb3!\x1a\x824hh\xaf5\x0f\x9b\xbe,S\a\xceb\x96\x11e\x87\\\x8f\xfd\xe9Ɗb\x10\x05;\x11<\v\x89\xddf\x83d~\xe2\xf9A\x00{h\x8d\xe1-\xe1\x96E\f\x0f\xac\xc2Fa\xf8CC\x99]\xa2\xd8A(\a\xa9\xd3'b\xea\x00\x0e\xe8\xc1\xa6\xb7\x9a\xbd\xc63\vH\xa99ٷ\xa0\xed\xbb0\xe1-qѳ\x13\x85\\\x84\x03\xb3\n\x91u\x8c\xf6\\\xef'\xf0\xab\xed\xd8\xe0\x95vQ\x00,0\xe9\x1d\xfc\xe5\xa4`\xe8\x87!\xe72\x1e\xa7\xa3;\n\xf3v\xe7\x86n\xf8\xdd8\xc4Xé\xeeġ\xbd\xb8Y\x81\x04\xa4H\xa3\x99\xbf\xb1\x01\x9f\xb0ڰ\u05c8\xf7\xdcˆ\xb3\u007f\xb5\xa1\xb9kk\xb5\xcd\x1at\x1b\xb3\fD\x06mF\xce_\xe4!\x88e\xb51\xc7|bL)\x10>\x8d\x0f\xeb\x1d=ά\xbe\xde\xe8\x18\x04`C\xf7,\xa3\x01v\x17=\x93\xe5sp.\f\x1f>\x9b\x998a\x8b˳n\xa3\x99.\x13`6\x81\x9e\xc5I\xcb=\xb8\x04`\x9b\xd8\x10\xe6>\xa0|h\xa7\x17I47\x0f\xac\x12g\xf6^\xae\x19\xb0@\xe8\xb5mC\x87a\xae\x11\xe0E\xb6Ug\x1d\xa6\x1e\x90\xf7\xc3Ѧ\r\xe61\xc63\xee\x1d\xd9fy\xd4\x11m\x8eG\x1dш8\xef\x92Ro7=\xe9q\xe6aY\xe6p\xb7ыV\x95\xed\xa3w\xbbX\xe1_\xff\xdb\xca\x1fr\xcc\xff\xb4\xdaO\xd9\xff?\xcd\xf6c\xb0~\xe0\xb1\x1c&,\x81;noK\xc3\x1a\xd8\xd5\x10za\x93S\xab\xec\xb3i\x94\xb7\xac\xc3\xd8(\xe8\x9a\\\xbei\xe7p\xaa\xd3\xf5D\xc3v\xed}\xb6\x0f\xa7օ\x1d\xb6\xe5\x8cl\xd3뻥\f\xbe\xb0\xbe\xc2k\xa1\xf6\x1d\x91wWvr*\xbb\xa0\xabܷ\x00Y\x82cV-K\xc6\xfb\bL:\xb1\xdf\xd1w\xf9\x80}\x1e\x99q\xd4ج\xbd\x123)\xb6\xf6`\x9d\x87?\xb1\xb1H\x1b\x10\x87\xcbʁ\xbd{\xb9pI5b\x8e\x02\xe8M<>l8T\xd9ч\xe3|\x9e8\xb4I\x12\xaez\x193\xb4G|8#ѠQx\xc5\xfbN\x9eY\x0e\xe2\xc4̖\x8e\x9c\x02Ҕ5\xb7\x1f\xac\xb5Κ\xe6\x92\xebQ!( Ӆ\xd1$\xcfw_ޛ\xe6\xc9\xc4J\x83\x88)\xff\xc2+\x90\x8c\xf6\x0e\xd6q\x88\x04\x1f\xe4\xa6YQƀ\xa1\x9d\x19\x0f\x1e\x95\xc5f\x03\xe8\x96 \xdb\xd9\xe9\b\xff\xba\x9c\xc6\xdat\xc7v\xd8qH\xe3\xfcP\v\xff\xdal\xed\xa4\xd9\x1erC\x00\x1d\xb2к\xe4\xec\xb605\"\xebƎI;H_\xdf\xd5\x19+{a\xecO3L\xb0\xa10\xf3[̼\x17#{\xf4\xe0\xf3\xe0\t\xa1\xe3qMߛ\xab\x8a5\x1d\xe47\\\xe8\x8b\xc3\xe12[\xb5\x04|G1\x8b\x14\xdckЀ\x9f]2\x0e\x9af\xd9I\xbb\xe0\xd1U\xad\x02\x96d\xf6\xf3\x12/\xa1\x1e\xcb¤\xf7\xd8\xff\xa7\xcd\x1aA\x01|\xd2a\x8d\xab#\xe6>6\xaap\xc1\xaccҜW\xb1c\x16L(u\xc7Y\x9d\x19\xac\xe0\xa4ڎ\xfd\xa4\xc5\aӛc\x11\"f\x00\xed\xb9\xad\x15\xb6\x0ey\xa5\xbf\xe8bv\x1d\xcc/\x83\x1c\xa8\xba\x19-\x15G\f\x83\xbcF&\x19\xe6\x99_i\x15\xe6\xdbڅ\xe1(\xb7t{ߪ\xe2Y\u07b5\xb9\xa7\xa96a\xcb\x06\x17\x1b\xe2A\rt£\x18\x15~\t\xef\x00\xbeb\xb8\x87\x86\x85\xce\v\xa6\xc9\x00\x8dE\xbf\x88\xa7S\xb8\x9d\x9f\xcd\xdae<\x1e\xe7Y\vt\xa4\xd2]\xa3uȖ\xael\x82dsho\xce\xf9m\x05\n1\xb2e\x10\x8fိ\xdbii\xbe\xcd\xe4\xd2\x12q7\x9c>\x1eО%\"\xebK'tW\x1a\x95\xe9[\xe6ו\xe3f֜\x1a\x91\x01\xc49n\x90O\x1d\x89\xe3*\xd6\xd0J\x13X(\x0f\xd2*M\x9e\xa2\xddM\xfc\x9c\xeb²\x11'\"|\x1f\xf0\x1b*k\xb1\xc35;pq\xb4П6B\xec:2\xfc\xde}{(\x98\x05\xe0\xfd{\x9b\\\xc1a\x9cX\xda\xd9\xe3\xb8m\x97xc̵l\x8e\x92^Ł\xb3\x05=O\x99\xb5'3\xeb*\xfbvE\xf8(ֆ\xcb\x15Q\xcd5\xf7\x00\x94\xcbXt\xf2A\x0f\xc3\xd8\x04\\j\x98\xb7\xf8\x90)\x98\xb8\xee\xf1\xc1\x9b\x80\x9d4\x12\xd8^\xd7J\x80L'\x98\xf8P\xdf\n6\xfc\xbb\xb6j\x9e#\x11\xceK\x87\u007fa\xcf\xca\xfc\xb5m\r\xdcHLg\x02\x0e\x1fq\x95\xbf̧ݩ\x0f\x88\xaaӢc\x97O\x9b\xe1\x14\x19\x88#\x14~\xb6oU\xf1\xec\xe3}\xd8Z\x1c\xe4\x05\x17\xeaf\xf1<\x06 \x96a\x8f\x99\xb8\xbdicGr\xb7\xb7S\x9d\"\xf7:jo_\x0f\xdc\tk\x02\xa8\xe0\x15\xb4\xcc!\x8c\xa7\x16\xa2m(Ƥ\x16Q+\x8c\x0f\x1f^l\x86\xa5?\xa9l9ܕvTX\xd6\xe9\x88\x0f\xc8f4@\xca\xcf\x06\x8d\xf5Y@o\xd2\xf8\fQ?h\xb4%\x1f\x194\xb5\x02\xe6\x04\x83\xa68\xc0\xb2\x8b*q\xb6\x9d\xc3\xd6\xf7\xaf*\x9e\xab\xfel\xb9\xca\xc2\n\xf6\xaf\xdb\x16\xbb\x17U\x01\xf5]o\x8e\xe4p\xf5'\xe1j\x02\b\x0e\xee\xc6%\xe0~i\xd7\x11\x970y\x13d>\x91\x0e\xfb\xb6\xach\xbdhk\xcf>\x9a\xe5\x1b\xb6\x94\xed\xf9\x13N\x17\xd6\x1b\xc5%\x0f\xa6ߨ&\xf6;\xd3\x12$5\xd0\n\xe7\xac\xcb\ak\xc4V@Z\x9dn\xecH\x9e\x99c\x92\x06V\xb7\xe8o\x9c\x8c\xb8\x8f\x0f\xdbZ\x91\x19TJ\xbcĶT;\xa2mu\xcfT0\x84Z\xef[\x91\x9bG7W\x9b\x18\xf1ݗ\xb0\xc4_R\xac\xd8\xff\xc8\xeaK\xf3_\xdfݎ\xe3\x01ز\x8a\xd1\xd5 \x02F&\xae\xbc܉\xe0\x99U=nᬓ\xd6\x01\xce.\xd5\fyh\x8f\x0fn\xb4Vⷹ!\xb6\x12\xbf\x9eF}{\xb47\f\x9d\xe8>\xb6i\xe7ۇI=\x9dr\"\xc6u\x8c\xdd\x1d\xb4p\x97\x81Z\xb2\xd0vd\xb4\x05\xb6\xe0'\xbdT\xa3S\x00\xfal\x93\xa5\x12\x86\xc2V\xaa\x17`F\x00\x95\x9a#3\x92\xf9\x92\xf7`\n\xe41H>]\xa1\x86\xefDf϶\xcc\xc6\xd7\xe3|b\x82\xb8\xb0\xb0\x99E\x16\x8f\x87M\xc2a\x11bd\xebM\x9c\x16\xc4\xdb~\xb2\xe1\xb4P\x03\x94\xd8\ue1ab6\xd91`\xd8A\xb9\xe8\xf2\x99\x97kД\xea\xbcm?\xeb\xed\xd8j\x13\x90\xc7\x16-r\xaem\u0085tB\xf0\xf8\x8e\x81\x05\x83\r\xf6LQ\xda\x1a\x12Ì\x9f\x16\xa3\x9d\x9d$W\xd8j\xf6\a\x96\x83\ue69a\xed۠k\x9b^q,\xeb\x98y\fvR\x8e\xec\x99g\x06\x19U\xd2\xe7\xbd\xc8e!+.\xb9\x94\x02\x96\x8a\x90\xdelO\xf0W\x05\xd1h\x1b\xe0\x8a\x00\xe38\xe9\xbacB\x1eg\x19\xe8g}\x97\x18X\u007f\xf7c\x0e\xea\x1a\x1e\x95!|\xf8E\xe1\x18\x99\xf2\xabx\x91b\x93\x1e\xf1\xc1\x12`渭\x83\xf8\xb8l\xd4\xfcР\x99\x8fF[\xeeش\f\x82\x99\xd9X\xee\x13\xc0Z\xd9r\xb6\xec\xd21}\x0e\xd8\x01\xd9\u0557\x8b\x19\xfa`\xb1=\xb3\xc8\xfci\x0e\x18\x84\x81\xe3\xc3\xfb8Ʊ7ł\xb6\xb7c̭\xbf\xfc\xa9Aʄ\x19\x9f\xe4-`ޣ\x86\rz\x16\n\x1d'\fa\xb8\xfd\x00N\xc8&\x95\x85\x84\xcfj\xd9\xc2|\xdfe\xd6\\\xd7\xef9\xd1ԙ\xa3kᩧt\x9cp\x1a\x85\xf9\xb4\rc\x85\x99\xaesд\xb5B\x1b{;a\x8d\xc0\x94g\xae\xa8\x1e\x98mD*\x90N8\b\x18^k\x8a\xa4\xa9jc\xddR\xde\xd0\xf3\xb3z\x16c\x18\x91\xcf?\\\xe0r_;\x8a\x99L\xb48\xd9Ɂ\xc9%\xd2b\x9b\xb8`\x02\xb8l҉\xca\xc5v\x16\xfb\x8aͷkw3\xe0y\xa3L\x83J\x963t\xc2Ο\xb3\xebuJ\x98\f\xf3\x12\x00\x19\x96`\xd3R\x1dϚ!\xbb\xafi#y\v\xd9\xca\xe1B\xc8\xcam\x19\xb2c\xa3{^:N\x0f\x8a\x0e\\\v\x87ۥ\xcd\xeb,5V\x9c\xb0\x0f,V\xb84m\xbd\x99.8\x95\xcd\xcewg\x8f\x87\x9c5\xb3\xc9\xe2\xfef6m݊\x13!\u007f{\xb1\xbe3\xc3\xf6\x96n\b\n\n\xb4\xa8\xbav\x03\xb06~\x9bS9|\x10\xef\xd7\xd9\xd4\x10\xb0փ\xb3{\xcc\xd0\xc0\x10}\xfeMʼ_\xea\x02\x14\x89K\x80\ndn\xbaY\xe9\x14OX\\\xf68\xd8m\xac6$\xf9\xbc\xbb\xcd{\x93\v\xed\xb7\xe6\f\x06j\xec\x8f\x17#>\xd8\x14\f\xf4\x13V\x12\xe7\x91\xcfK\xa2\xc6I>\xdd\xfd\x05B\bs\xdfQ\xe6Z\xcf`EYhQ]\xb7\xf9\xe9\xbc\xc2u\x83Х\xa7\\\xa8,\xf7\xef\x965vJL\\N(\xf8\xe2h)x\xbc\x89\xd8\xd5̷\xb0\x98-\xfe\xa1\x04\b\xbe\x85c\x90@\x8c\xbe\xf9Q\x10<\xdb\xcc\xf4\xa2!2\xbc\xb5V\xe8\xbe\r\xfa\xbc\xf5`\xf6\uf2bb$x\x8a\xc0\xe2\x97C\x1b\xbc\xbd1\x97\xe7\xb3Ad\xf3\xff\xb1\xe6\x84Ӛ\x19/H؉\x838@^Њ\xd1\u007f\xdeNcXR\xd6Ikxv^\xf5\x90\xd6\xc5\xd6{G;RSݳ\xf48\xed\x19L&BW\xa5\xd7w$N\x97\xa2\x8eq\xa5\x81\xae\x89S+t\xcc̯\xacq\xcebΆ\xdd\xc9\x03\x1a\x85\xfcS\xa7\x84C\x13\x99\x14X\x9e\xe5skx6ه\x92\xfaY\x97ψ\xa8s\x80;\\\xad\xed,\x98C^b\x14,8\xed\xda\rY\xfe)\x02(w\x9e\r\xad\xc37\xb5\x88\xc1\x98C\x16b%\xfc\xb8\xcd3k\u0604A\x0f\x83\xe5\x1dK\xe8ީ^\x04e\x8d\xe8Kz:\xedE\xbcK\x0f\xe2]\xba\xbc?\x8d\xc30Ἇ\xa9(\xdc\x19\xa9#\\\xb9\x8d\xb9\x02<\xf4\x18)\x02\xce\x1e֛@\xd6t\xd8*`_%\x12\x1f\xdef\xe2\x89\x1d\x14\xa0\xe4\xbe\xfb\xa6\x91+\xb06%ڭ=\x9a-\x89\xb8\xf4\xb9Ɗ\rl\xe6\xd5\xfc\xb2dlq\xa3?\xc6\fZƎ\x81:1\xe3\x1f\xa14\xb2\xa9\x16\to\x17f-䅙\xe9\xeddy\x9b\xab\xbfRY\x16\xfb\xaa\xdcm\xe1\x8dJx\xe56'\xb5\x88]\xd5\xfe#\xf6]\x1dn\xaf\xee\xbdr\xcbQG\xee\xbf\xdald\xef\x1e,7\x1d\xfd?\xfb\xb0\xb6\b|\xc4^\xac\xab'\x17\xbc[g3\xa2\x9e\xcd\"8\x8eY\xe8\f\xd8F\x16\x1b\xbb\xa2\xe5\x19-\xbb\xe53\x04\xb5\xc0\xe01\x92l\x910C\xf1\xc1\xda\x18\xe7`3\xe5\xff\x01v+Q\x97\x00\x00\x00" var _Assets8391991a0f9445efcc483e87a0508f7472f04dab = "{\"name\":\"\",\"short_name\":\"\",\"icons\":[{\"src\":\"/android-chrome-192x192.png\",\"sizes\":\"192x192\",\"type\":\"image/png\"},{\"src\":\"/android-chrome-512x512.png\",\"sizes\":\"512x512\",\"type\":\"image/png\"}],\"theme_color\":\"#ffffff\",\"background_color\":\"#ffffff\",\"display\":\"standalone\"}" var _Assets78386ead3fb287ea2e07758fc3d0fe2187e0d0ad = "{{template \"header\" \"Email Address Confirmed\"}}\n
\n
\n \n
\n
\n

You have been correctly authenticated. You may now close this window!

\n
\n
\n{{template \"footer\"}}\n" var _Assets0d77b2008fc5e76d7d489317fc8f0df507d753c5 = "\x00\x00\x01\x00\x03\x00\x10\x10\x00\x00\x01\x00 \x00h\x04\x00\x006\x00\x00\x00 \x00\x00\x01\x00 \x00(\x11\x00\x00\x9e\x04\x00\x0000\x00\x00\x01\x00 \x00h&\x00\x00\xc6\x15\x00\x00(\x00\x00\x00\x10\x00\x00\x00 \x00\x00\x00\x01\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\xff'.\xc8\xfe\xb5.\xc8\xfe\xb5\x00\xca\xff'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\xff\x0f\x1b\xbd\xeb\x8dy\xbf\xfe\xf9ж\xff\xffж\xff\xffy\xbf\xfe\xf9\x17\xca\xfe\x8d\x00\xcc\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x02\x05\xcd\xfffl\x94\xb3\xe9\xe6KK\xff\xe8v\x97\xffԵ\xff\xffն\xff\xffն\xff\xff÷\xff\xff]\xc2\xfe\xe9\x05\xcd\xfff\x00\xff\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\xff?\x1b\xa1\xfeϭ\xba\xff\xffͮ\xff\xff\x84i\xff\xffԵ\xff\xffԵ\xff\xffԶ\xff\xffԵ\xff\xffԵ\xff\xff[\xc3\xff\xff\xac\xba\xff\xffB\xc6\xfe\xcf\x00\xce\xff?\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x8b\xfa\xedS3\xf4\xffׯ\xf4\xffΨ\xf4\xff'\xff\xffX?\xff\xffն\xff\xffն\xff\xffն\xff\xffŧ\xff\xff?'\xff\xff?'\xff\xff\x80d\xff\xffԵ\xff\xffն\xff\xffն\xff\xffԵ\xff\xffԵ\xff\xffԶ\xff\xffԵ\xff\xffն\xff\xffն\xff\xff\x1a\xcb\xff\xff\x00\xce\xff\xff7\xc7\xff\xffͶ\xff\xffն\xff\xffԶ\xff\xff}\xbf\xff\xff\x00\xcd\xfe\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xfe\xdcF=\xed\xffQ(\xeb\xffh>\xea\xff٩\xe9\xff٩\xe9\xff٩\xe9\xffȝ\xeb\xff:7\xff\xff:7\xff\xff:7\xff\xff{t\xff\xff\xc1\xb8\xff\xff\xc1\xb8\xff\xff\xc1\xb8\xff\xff\xc1\xb7\xfe\xffԵ\xfe\xffն\xff\xffն\xff\xffն\xff\xff\x19\xca\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff7\xc7\xff\xff̶\xff\xffն\xff\xff\xb9\xb9\xff\xff\x00\xcd\xfe\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xfe\xdc\xdeHD\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xe5D>\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xcd\xfe\xff\x8cy\x89\xffׯ\xf4\xffն\xff\xffն\xff\xff\x8dq\xff\xff\b\xba\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff7\xc7\xff\xffͶ\xff\xff\xb9\xb9\xff\xff\x00\xcd\xfe\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xfe\xdc\xd2j}\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xe5D>\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xcd\xfe\xff\x8cy\x89\xff\xff5)\xffׯ\xf4\xffն\xff\xff\x8cq\xff\xff?'\xff\xff\b\xba\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff7\xc7\xff\xff\xb1\xb9\xff\xff\x00\xcd\xfe\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xfeܹ\xb7\xfd\xff\xeedw\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xe5D>\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xcd\xfe\xff\x8cy\x89\xff\xff5)\xff\xff5)\xffׯ\xf4\xff\x8cp\xff\xff?'\xff\xff?'\xff\xff\b\xba\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff&\xc9\xff\xff\x00\xcd\xfe\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xfeܹ\xb9\xff\xffմ\xfc\xff\xeedx\xff\xff5)\xff\xff5)\xff\xff5)\xff\xe5D>\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xcd\xfe\xff\x8by\x8a\xff\xff5)\xff\xff5)\xff\xff5)\xff\x92m\xf4\xffB*\xff\xffB*\xff\xffB*\xff\xff\r\xb7\xfb\xff\x05\xca\xfa\xff\x05\xca\xfa\xff\x05\xca\xfa\xff\x05\xca\xfa\xff\x05\xca\xfa\xff\x04\xcb\xfb\xff\x00\xcd\xfe\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xfeܹ\xb9\xff\xffն\xff\xffմ\xfc\xff\xeedx\xff\xff5)\xff\xff5)\xff\xe5D>\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xcd\xff\xff'r\xfa\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xffׯ\xf4\xffն\xff\xffն\xff\xffն\xff\xff\xfaDB\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xdeHD\xff\x00\xcd\xfe\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xfeܹ\xb9\xff\xffն\xff\xffն\xff\xffմ\xfc\xff\xeedw\xff\xff5)\xff\xe5D>\xff\x00\xce\xff\xff\x00\xcd\xff\xff#q\xff\xffC'\xfa\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xffׯ\xf4\xffն\xff\xffն\xff\xffն\xff\xff\xfaDB\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xd5cp\xff\x00\xcd\xfe\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xfeܹ\xb9\xff\xffն\xff\xffն\xff\xffն\xff\xffմ\xfd\xff\xeedx\xff\xe5D>\xff\x00\xcd\xff\xff#q\xff\xff?'\xff\xffC'\xfa\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xffׯ\xf4\xffն\xff\xffն\xff\xffն\xff\xff\xfaDB\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xf1[i\xff\xba\xb5\xf9\xff\x00\xcd\xfe\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xfeܹ\xb9\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffմ\xfc\xff\xd5s\x8d\xff\"r\xff\xff?'\xff\xff?'\xff\xffC'\xfa\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xffׯ\xf4\xffն\xff\xffն\xff\xffն\xff\xff\xfaDB\xff\xff5)\xff\xff5)\xff\xff5)\xff\xf1[i\xffղ\xf9\xff\xb9\xb9\xff\xff\x00\xcd\xfe\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xfeܹ\xb9\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffԵ\xff\xff\x82g\xfe\xff?'\xff\xff?'\xff\xff?'\xff\xffC'\xfa\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xa55\x95\xffF.\xff\xffF.\xff\xffF.\xff\xff\xe94B\xff\xff5)\xff\xff5)\xff\xf1[i\xffղ\xf9\xffն\xff\xff\xb9\xb9\xff\xff\x00\xcd\xfe\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xfeܹ\xb9\xff\xffն\xff\xffն\xff\xffն\xff\xffԵ\xff\xff\x82g\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xffC'\xfa\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\x9e.\x95\xff?'\xff\xff?'\xff\xff\xe83C\xff\xff5)\xff\xf1[i\xffղ\xf9\xffն\xff\xffն\xff\xff\xb9\xb9\xff\xff\x00\xcd\xfe\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xfeܹ\xb9\xff\xffն\xff\xffն\xff\xffԵ\xff\xff\x82g\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xffC'\xfa\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xfe5)\xff\x9e.\x95\xff?'\xff\xff\xe83C\xff\xf1[i\xffղ\xf9\xffն\xff\xffն\xff\xffն\xff\xff\xb9\xb9\xff\xff\x00\xcd\xfe\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xfeܹ\xb9\xff\xffն\xff\xffԵ\xff\xff\x82g\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xffC'\xfa\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\x9e.\x96\xff\xdaZ\x83\xffղ\xf9\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xff\xb9\xb9\xff\xff\x00\xcd\xfe\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xfeܹ\xb9\xff\xffն\xff\xffӴ\xff\xff¤\xff\xffä\xff\xffä\xff\xff¤\xff\xffK\xb1\xff\xff\b\xb9\xff\xff\b\xb9\xff\xff\r\xb8\xfe\xff٦\xe5\xff٦\xe5\xff٦\xe5\xff٦\xe5\xff[.\xe6\xffU)\xe6\xffU)\xe6\xff\x82S\xe6\xffӲ\xfc\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xff\xb9\xb9\xff\xff\x00\xcd\xfe\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xfe\xdc}\xbf\xff\xffԶ\xff\xffն\xff\xffԵ\xff\xffԵ\xff\xffն\xff\xffն\xff\xffж\xff\xffC\xc5\xff\xff\x00\xce\xff\xff\x06\xcd\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffF-\xff\xff?'\xff\xffkQ\xff\xffѲ\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffԶ\xff\xff}\xbf\xff\xff\x00\xcd\xfe\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff5\x00\xce\xfe\xc6.\xc8\xff\xff\xa7\xba\xff\xffն\xff\xffԵ\xff\xffԵ\xff\xffն\xff\xffն\xff\xffж\xff\xffC\xc5\xff\xff\x06\xcd\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffF-\xff\xffkQ\xff\xffѲ\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xff\xa7\xba\xff\xff.\xc8\xff\xff\x00\xce\xfe\xc6\x00\xcb\xff6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x01\x00\xcc\xff[\x01\xcd\xfe\xe3N\xc4\xff\xff\xbf\xb8\xff\xffԵ\xff\xffԵ\xff\xffն\xff\xffն\xff\xffж\xff\xffI\xc4\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffsX\xff\xffѲ\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xff\xbf\xb8\xff\xffN\xc4\xff\xff\x01\xcd\xfe\xe3\x00\xcf\xff[\x00\x00\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xfe\v\x00\xcc\xfe\x83\n\xcc\xfe\xf6o\xc1\xff\xffε\xfe\xff\xebm\x88\xff\xf7LP\xff\xf7LP\xff\xf3LP\xff\xf7LP\xff\xf7LP\xff\xf7LP\xff\xe9s\x90\xffҳ\xfe\xffն\xff\xffն\xff\xffն\xff\xffζ\xff\xffo\xc0\xff\xff\n\xcc\xfe\xf6\x00\xcc\xfe\x83\x00\xd0\xfe\v\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\xff \x00\xcd\xff\xaa\x1b\xca\xfe\xfe\x91\xb8\xf6\xff\xf3V`\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xf1[i\xffղ\xf9\xffն\xff\xffն\xff\xffԶ\xff\xff\x90\xbd\xff\xff\x1b\xca\xfe\xfe\x00\xcd\xff\xaa\x00\xc7\xff \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xff>\x00\xcd\xfe\xcf7\xc2\xf7\xff\xcc[a\xff\xff5)\xff\xff5)\xff\xf1[i\xffղ\xf9\xffն\xff\xffն\xff\xff\xae\xba\xff\xff6\xc7\xff\xff\x00\xcd\xfe\xcf\x00\xcd\xff>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x02\x00\xcf\xffe\x03\xcb\xfb\xe9h\x8e\xa6\xff\xdeev\xffղ\xf9\xffն\xff\xffķ\xff\xffV\xc3\xff\xff\x02\xcd\xfe\xe9\x00\xcd\xfff\x00\xff\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\xff\x0f\x00\xcf\xfe\x8c\r\xcb\xfe\xf9w\xc0\xff\xffx\xbf\xff\xff\r\xcc\xfe\xf9\x00\xce\xfe\x8d\x00\xcc\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff&\x00\xcd\xfe\xb4\x00\xcd\xfe\xb4\x00\xd0\xff&\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(\x00\x00\x000\x00\x00\x00`\x00\x00\x00\x01\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\xff\x05\x00\xcd\xff4\x00\xcc\xff\xad\x00\xcd\xfe\xb5\x00\xcd\xff4\x00\xb6\xff\a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xff)\x00\xcd\xfe\x86\x00\xcd\xfe\xe1$\xc8\xfe\xfe'\xc8\xfe\xfe\x00\xcd\xfe\xe1\x00\xce\xfe\x8a\x00\xd0\xff,\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\xff\x06\x00\xcd\xfev\x00\xce\xfe\xe1\x06\xcd\xfe\xfce\xc1\xff\xff\xbd\xb8\xff\xff\xc0\xb8\xff\xfff\xc1\xff\xff\t\xcd\xfe\xfc\x00\xce\xfe\xe5\x00\xcb\xfew\x00\xcc\xff\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc4\xfe\r\x00\xce\xff?\x00\xce\xff\xc2\v\xcc\xfe\xfe6\xc7\xff\xff\xa5\xba\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xff\xa9\xb9\xff\xff9\xc6\xff\xff\v\xcc\xfe\xfe\x00\xcd\xfe\xc7\x00\xcc\xffB\x00\xc4\xfe\r\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\xff7\x00\xcd\xff\x9c\x00\xcd\xff\xf00\xc8\xff\xff\x84\xbe\xff\xffɶ\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xff̶\xff\xff\x84\xbe\xff\xff4\xc7\xff\xff\x00\xcd\xfe\xf3\x00\xcd\xff\x9c\x00\xcc\xff<\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\xfe\x17\x00\xcb\xfe\x96\x00\xce\xfe\xec\x19\xbd\xe8\xfd\x93\x83\x9b\xffdz\xf8\xffӶ\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffӶ\xff\xffǷ\xff\xff\x86\xbd\xff\xff\x15\xca\xff\xfd\x00\xce\xfe\xed\x00\xce\xfe\x9e\x00\xc9\xff\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\xfe\x12\x00\xce\xffO\x00\xcd\xfd\xd8\x13\xc1\xee\xfeR\x9b\xb8\xff\xdaJG\xff\xfe5)\xff\xf2Yf\xffت\xec\xffյ\xfe\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffԶ\xff\xff\xb6\xb9\xff\xffK\xc5\xff\xff\x11\xcb\xfe\xfe\x00\xcd\xfe\xd8\x00\xcd\xfeW\x00\xcc\xff\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\xff\x05\x00\xcd\xffM\x00\xcd\xfe\xae\x05\xca\xf9\xf9P\x9d\xbb\xff\xb0cj\xff\xfa7,\xff\xff5)\xff\xff5)\xff\xfe7,\xff\xeedx\xffت\xeb\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffѶ\xff\xff\x97\xbc\xff\xffB\xc6\xff\xff\x06\xcc\xff\xfa\x00\xcd\xfe\xb3\x00\xd0\xffM\x00\xda\xff\a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\xff \x00\xcd\xfe\xae\x00\xcd\xfe\xf2\x1d\xc7\xfa\xfe\xa4\x87\xa7\xff\xe5ar\xff\xecVh\xff\xf1Yh\xff\xf1Zh\xff\xf1Zh\xff\xf1Zh\xff\xf1\\k\xff\xe5\u007f\xa5\xffԵ\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffԵ\xff\xff̶\xff\xffʷ\xff\xff\x97\xbc\xff\xff\x1f\xc8\xfe\xfe\x00\xcd\xfe\xf2\x00\xce\xff\xb2\x00\xcc\xff#\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\xfe\x19\x00\xce\xffs\x00\xce\xfe\xec\x16\xcb\xff\xffb\xc1\xff\xffǷ\xff\xffն\xff\xffն\xff\xff\xbb\x9d\xff\xffw\\\xff\xffˬ\xff\xffԵ\xff\xffն\xff\xffն\xff\xffն\xff\xffԵ\xff\xffԵ\xff\xffԵ\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffԵ\xff\xffԵ\xff\xffԵ\xff\xffO\xc4\xff\xff\xb2\xb9\xff\xffӶ\xff\xff˶\xff\xffb\xc1\xff\xff\x18\xca\xff\xff\x00\xce\xff\xf1\x00\xce\xffs\x00\xc8\xfe\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\xfe\x12\x00\xcb\xfe_\x00\xce\xfe\xbe\x04\xc0\xff\xfa-\xa2\xff\xff\xa1\xbb\xff\xffѶ\xff\xffն\xff\xffն\xff\xffն\xff\xff\xbb\x9d\xff\xffB*\xff\xff\x80d\xff\xffˬ\xff\xffն\xff\xffն\xff\xffն\xff\xffԵ\xff\xffԵ\xff\xffԵ\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffԵ\xff\xffԵ\xff\xffԵ\xff\xff.\xc8\xff\xff7\xc7\xff\xff\xb3\xb9\xff\xffն\xff\xffҶ\xff\xff\xa4\xba\xff\xffU\xc3\xff\xff\x10\xcc\xff\xfa\x00\xcd\xfe\xc3\x00\xcc\xffd\x00\xc6\xfe\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\xff0\x00\xce\xff\xc2\x00\xce\xfe\xf6\f\xab\xff\xff0L\xff\xfffS\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xff\xbb\x9d\xff\xff?'\xff\xffB*\xff\xffv\\\xff\xffӴ\xff\xffն\xff\xffն\xff\xffն\xff\xffԵ\xff\xffԵ\xff\xffԶ\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffԵ\xff\xffԵ\xff\xffԵ\xff\xffն\xff\xff-\xc8\xff\xff\x01\xcd\xff\xff!\xc9\xff\xff\xbc\xb8\xff\xffն\xff\xffն\xff\xff϶\xff\xff\xa5\xbb\xff\xff1\xc7\xff\xff\x00\xce\xfe\xf7\x00\xcd\xfe\xc3\x00\xcc\xff8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2\x05\xbd\xff\xff\"o\xff\xff=(\xff\xff?'\xff\xffhN\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xff\xbb\x9d\xff\xff?'\xff\xff?'\xff\xff?'\xff\xffw\\\xff\xffˬ\xff\xffԵ\xff\xffն\xff\xffն\xff\xffն\xff\xffԵ\xff\xffԵ\xff\xffԵ\xff\xffԶ\xff\xffԵ\xff\xffԵ\xff\xffն\xff\xffն\xff\xffն\xff\xff-\xc8\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff!\xc9\xff\xff\xb3\xb9\xff\xffӶ\xff\xffն\xff\xffն\xff\xffҶ\xff\xff~\xbe\xff\xff\x14\xcb\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2\x16\x90\xff\xff;/\xff\xff?'\xff\xff?'\xff\xffhN\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xff\xbb\x9d\xff\xff?'\xff\xff?'\xff\xff?'\xff\xffB*\xff\xff\x80d\xff\xffˬ\xff\xffն\xff\xffն\xff\xffն\xff\xffԵ\xff\xffԵ\xff\xffԵ\xff\xffԵ\xff\xffԵ\xff\xffԵ\xff\xffն\xff\xffն\xff\xffն\xff\xff-\xc8\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x01\xcd\xff\xff7\xc7\xff\xff\xb2\xb9\xff\xffն\xff\xffն\xff\xffն\xff\xffͶ\xff\xffN\xc5\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2#\x90\xf1\xffZ1\xdd\xff_)\xdc\xff_)\xdc\xff\x82J\xdb\xffܟ\xd9\xffܟ\xd9\xffܟ\xd9\xffܟ\xd9\xffܟ\xd9\xff\xbf\x8f\xdf\xff6C\xff\xff6C\xff\xff6C\xff\xff6C\xff\xff9F\xff\xffnx\xff\xff\xb2\xb9\xff\xff\xb2\xb9\xff\xff\xb2\xb9\xff\xff\xb2\xb9\xff\xff\xb2\xb9\xff\xff\xb3\xb7\xfd\xffԳ\xfc\xffԵ\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xff+\xc6\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x01\xcd\xff\xff\"\xc9\xff\xff\xbb\xb8\xff\xffն\xff\xffն\xff\xffζ\xff\xffO\xc5\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2_\x94\xaf\xff\xf2<3\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xd5NK\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xcd\xfe\xff\x0e\xc4\xf2\xff\x90w\x85\xffت\xec\xffն\xff\xffն\xff\xffն\xff\xffί\xff\xff\x8er\xff\xff\x0e\xab\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\"\xc9\xff\xff\xb2\xb9\xff\xffӶ\xff\xffζ\xff\xffO\xc5\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2]\x98\xb4\xff\xf2=5\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xd5NK\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\n\xc7\xf6\xff\x8cy\x89\xff\xf5:1\xffت\xec\xffն\xff\xffն\xff\xffб\xff\xff\x8dq\xff\xffF.\xff\xff\x0e\xab\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x01\xcd\xff\xff7\xc7\xff\xff\xb3\xb9\xff\xffζ\xff\xffO\xc5\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2Q\xbd\xf2\xff\xe5br\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xd5NK\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xcd\xfe\xff\x93u\x84\xff\xf88.\xff\xff5)\xffت\xec\xffն\xff\xffն\xff\xff\x8dr\xff\xffD+\xff\xff?'\xff\xff\x0e\xab\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x01\xcd\xff\xff!\xc9\xff\xff\xb5\xb9\xff\xffO\xc5\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2O\xc5\xff\xff˳\xf9\xff\xef`r\xff\xfd8.\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xd5NK\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xcd\xfe\xff\x0e\xc4\xf2\xff\x91v\x85\xff\xff5)\xff\xff5)\xff\xff5)\xffت\xec\xffί\xff\xff\x8dq\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff\x0e\xab\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x1b\xca\xff\xff3\xc7\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2O\xc5\xff\xffʷ\xff\xff\u05ed\xf1\xff\xeedw\xff\xfd8.\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xd5NK\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\n\xc7\xf6\xff\x8cy\x89\xff\xf5:1\xff\xff5)\xff\xff5)\xff\xff5)\xffԦ\xec\xff\x8dq\xff\xffF.\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff\x0e\xab\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xcd\xff\xff\x01\xcd\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2O\xc5\xff\xffʷ\xff\xffյ\xfe\xff\u05ed\xf0\xff\xefas\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xd5NK\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xcd\xfe\xff\x91v\x85\xff\xf88.\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\x97k\xec\xffI1\xff\xffD,\xff\xffD,\xff\xffD,\xff\xffD,\xff\xff\x16\xa7\xf8\xff\b\xc7\xf7\xff\b\xc7\xf7\xff\b\xc7\xf7\xff\b\xc7\xf7\xff\b\xc7\xf7\xff\b\xc7\xf7\xff\b\xc7\xf7\xff\b\xc7\xf7\xff\b\xc8\xf7\xff\x03\xcb\xfb\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2O\xc5\xff\xffʷ\xff\xffն\xff\xffն\xff\xffղ\xf9\xff\xefas\xff\xfd8.\xff\xff5)\xff\xff5)\xff\xff5)\xff\xd5NK\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xcd\xff\xff\x03\xc4\xff\xff+o\xf7\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xffت\xec\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xff\xf6OT\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xf69/\xff_\x94\xaf\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2O\xc5\xff\xffʷ\xff\xffն\xff\xffն\xff\xffն\xff\xff\u05ed\xf0\xff\xeedw\xff\xfd8.\xff\xff5)\xff\xff5)\xff\xd5NK\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\x02\xc7\xff\xff#r\xff\xffC.\xf7\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xffت\xec\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xff\xf6OT\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xf6:0\xff^\x96\xb1\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2O\xc5\xff\xffʷ\xff\xffն\xff\xffն\xff\xffն\xff\xffյ\xfe\xff\u05ed\xf1\xff\xefar\xff\xff5)\xff\xff5)\xff\xd5NK\xff\x00\xce\xff\xff\x00\xce\xff\xff\x00\xcd\xff\xff%l\xff\xff=+\xff\xffE'\xf7\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xffت\xec\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xff\xf6OT\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xeeQV\xffR\xb9\xec\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2O\xc5\xff\xffʷ\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffղ\xf9\xff\xefas\xff\xfd8.\xff\xd5NK\xff\x00\xcd\xff\xff\x03\xc4\xff\xff$n\xff\xff?'\xff\xff?'\xff\xffE'\xf7\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xffت\xec\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xff\xf6OT\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xfe6,\xff\xf4S[\xffЭ\xf0\xffO\xc5\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2O\xc5\xff\xffʷ\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xff\u05ed\xf1\xff\xeedw\xff\xd4QQ\xff\x02\xc7\xff\xff#r\xff\xff<-\xff\xff?'\xff\xff?'\xff\xffE'\xf7\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xffت\xec\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xff\xf6OT\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xfe6+\xff\xf1[i\xff٥\xe3\xffζ\xff\xffO\xc5\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2O\xc5\xff\xffʷ\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffյ\xfe\xff\u05ed\xf0\xff\xc6y\x96\xff$m\xff\xff=+\xff\xff?'\xff\xff?'\xff\xff?'\xff\xffE'\xf7\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xffت\xec\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xff\xf6OT\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xf4PW\xffب\xe8\xffյ\xfe\xffζ\xff\xffO\xc5\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2O\xc5\xff\xffʷ\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffԵ\xff\xff̭\xff\xff\u007fd\xfe\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xffE'\xf7\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xaf9\x8f\xffT3\xf5\xffK2\xff\xffK2\xff\xffK2\xff\xffK2\xff\xff\xd94U\xff\xff5)\xff\xff5)\xff\xff5)\xff\xfe6,\xff\xf3S]\xff\u05ec\xef\xffն\xff\xffն\xff\xffζ\xff\xffO\xc5\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2O\xc5\xff\xffʷ\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffΰ\xff\xff\x82g\xff\xffD,\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xffE'\xf7\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xf84/\xff\x9e.\x96\xffG'\xf4\xff?'\xff\xff?'\xff\xff?'\xff\xff\xd62V\xff\xff5)\xff\xff5)\xff\xfe6+\xff\xf1[i\xff٥\xe3\xffն\xff\xffն\xff\xffն\xff\xffζ\xff\xffO\xc5\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2O\xc5\xff\xffʷ\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffԵ\xff\xff~c\xff\xffB*\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xffE'\xf7\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xf84/\xff\xa3/\x90\xff?'\xff\xff?'\xff\xff?'\xff\xff\xd62V\xff\xff5)\xff\xff5)\xff\xf5PW\xffب\xe9\xffյ\xfe\xffն\xff\xffն\xff\xffն\xff\xffζ\xff\xffO\xc5\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2O\xc5\xff\xffʷ\xff\xffն\xff\xffն\xff\xffն\xff\xffԵ\xff\xff̭\xff\xff\u007fd\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xffE'\xf7\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xfe5)\xff\xa3/\x90\xffG'\xf4\xff?'\xff\xff\xd62V\xff\xfe6,\xff\xf4S\\\xff\u05ec\xf0\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffζ\xff\xffO\xc5\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2O\xc5\xff\xffʷ\xff\xffն\xff\xffն\xff\xffն\xff\xffΰ\xff\xff\x82g\xff\xffD,\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xffE'\xf7\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xf84/\xff\x9e.\x96\xffG'\xf5\xff\xd63X\xff\xf1[i\xff٥\xe3\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffζ\xff\xffO\xc5\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2O\xc5\xff\xffʷ\xff\xffն\xff\xffն\xff\xffԵ\xff\xff~c\xff\xffB*\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xff?'\xff\xffE'\xf7\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xf84/\xff\xa3/\x90\xff\xcdN\x85\xffب\xe8\xffյ\xfe\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffζ\xff\xffO\xc5\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2O\xc5\xff\xffʷ\xff\xffն\xff\xffն\xff\xffϰ\xff\xff\xb7\x99\xff\xff\xb7\x99\xff\xff\xb7\x99\xff\xff\xb7\x99\xff\xff\xb7\x99\xff\xff\xb5\x99\xff\xffH\xa5\xff\xff\x10\xac\xff\xff\r\xac\xff\xff\r\xac\xff\xff\r\xac\xff\xff\x16\xab\xfd\xffܜ\xd5\xffܜ\xd5\xffܜ\xd5\xffܜ\xd5\xffܜ\xd5\xffܜ\xd5\xffm3\xd6\xffc*\xd7\xffc*\xd7\xffc*\xd7\xffe,\xd7\xff\x88L\xd7\xffЬ\xf8\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffζ\xff\xffO\xc5\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2N\xc5\xff\xffʷ\xff\xffն\xff\xffն\xff\xffն\xff\xffԵ\xff\xffԵ\xff\xffԵ\xff\xffն\xff\xffն\xff\xffն\xff\xff\xc1\xb7\xff\xffC\xc5\xff\xff\x03\xcd\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\t\xcc\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffK2\xff\xff?'\xff\xff?'\xff\xff@(\xff\xffkQ\xff\xff\xc1\xa3\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffͶ\xff\xffN\xc5\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xc2\x0f\xcc\xff\xffp\xc0\xff\xffѶ\xff\xffն\xff\xffն\xff\xffԵ\xff\xffԵ\xff\xffԵ\xff\xffն\xff\xffն\xff\xffն\xff\xffԶ\xff\xff\xc1\xb7\xff\xff:\xc6\xff\xff\x00\xce\xff\xff\x00\xce\xff\xff\t\xcc\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffK2\xff\xff?'\xff\xff?'\xff\xff^E\xff\xffŧ\xff\xffԵ\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffҶ\xff\xffw\xbf\xff\xff\x0f\xcc\xff\xff\x00\xcd\xff\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\xff,\x00\xcd\xff\xb6\x00\xcd\xfe\xf2'\xc9\xff\xff\x9a\xbc\xff\xffʷ\xff\xffն\xff\xffն\xff\xffԵ\xff\xffԵ\xff\xffԵ\xff\xffն\xff\xffն\xff\xffն\xff\xffɶ\xff\xff:\xc6\xff\xff\x03\xcd\xff\xff\t\xcc\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffK2\xff\xffA(\xff\xffbI\xff\xffʬ\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xff̶\xff\xff\x9a\xbc\xff\xff-\xc8\xff\xff\x00\xcd\xfe\xf3\x00\xcd\xff\xb6\x00\xcd\xff3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\xff\x11\x00\xce\xff^\x00\xcd\xfe\xbe\x0f\xcc\xff\xfaP\xc4\xff\xff\xa1\xbb\xff\xffѶ\xff\xffն\xff\xffԵ\xff\xffԵ\xff\xffԵ\xff\xffն\xff\xffն\xff\xffն\xff\xff\xc1\xb7\xff\xffC\xc5\xff\xff\r\xcb\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffL3\xff\xffkQ\xff\xff\xc1\xa3\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffѶ\xff\xff\xa4\xba\xff\xffT\xc3\xff\xff\x0f\xcc\xff\xfa\x00\xce\xff\xc2\x00\xce\xffc\x00\xd2\xff\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\xff\x11\x00\xcd\xfeh\x00\xcd\xfe\xea\x0f\xcc\xff\xffZ\xc3\xff\xffŷ\xff\xffԵ\xff\xffԵ\xff\xffԵ\xff\xffն\xff\xffն\xff\xffն\xff\xffԶ\xff\xff\xc0\xb7\xff\xffD\xc4\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffkQ\xff\xffŦ\xff\xffԵ\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffɶ\xff\xffZ\xc3\xff\xff\x11\xcb\xff\xff\x00\xce\xff\xf0\x00\xcd\xfeh\x00\xd6\xfe\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\xfe\x1d\x00\xcd\xff\xa1\x00\xce\xfe\xeb\x1a\xca\xff\xfd\x89\xbd\xff\xffŷ\xff\xffԴ\xfc\xff\xe8v\x96\xff\xf1\\k\xff\xf2[i\xff\xf2[i\xff\xf2[i\xff\xe8[i\xff\xf2[i\xff\xf2[i\xff\xf2[i\xff\xf2[i\xff\xf1\\l\xff\xe7z\x9d\xffͮ\xfe\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffԶ\xff\xffŷ\xff\xff\x8d\xbd\xff\xff\x1d\xc9\xfe\xfe\x00\xce\xfe\xeb\x00\xcd\xfe\xa6\x00\xcd\xfe\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\xff\x05\x00\xcd\xffM\x00\xcd\xfe\xae\x04\xcc\xfe\xf9B\xc6\xff\xff\x92\xbd\xff\xff֤\xe2\xff\xf3V`\xff\xfe6*\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xfe6+\xff\xf1[i\xff٥\xe3\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffն\xff\xffѶ\xff\xff\x96\xbc\xff\xffB\xc6\xff\xff\x06\xcc\xfe\xf9\x00\xce\xff\xb2\x00\xcd\xffM\x00\xda\xff\a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbf\xff\f\x00\xcc\xffB\x00\xcc\xfe\xd4\n\xcc\xfe\xfe:\xc6\xfe\xff\xb8\xa8\xe2\xff\xf5OU\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xff5)\xff\xf5PV\xffب\xe9\xffյ\xfe\xffն\xff\xffն\xff\xffն\xff\xffԶ\xff\xff\xb3\xb9\xff\xff@\xc6\xff\xff\v\xcc\xfe\xfe\x00\xcd\xfe\xd4\x00\xce\xffJ\x00\xc4\xfe\r\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xfe\x15\x00\xcd\xfe\x8a\x00\xcd\xfe\xe3\x13\xcb\xfe\xfcz\xb3\xe9\xff\xdeRU\xff\xfc6+\xff\xff5)\xff\xff5)\xff\xfe6,\xff\xf4S[\xff\u05ec\xf0\xffն\xff\xffն\xff\xffն\xff\xffӶ\xff\xff\xc0\xb8\xff\xff|\xbf\xff\xff\x13\xcb\xfe\xfc\x00\xce\xfe\xe5\x00\xce\xff\x92\x00\xce\xfe\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\xff6\x00\xcd\xfe\x9b\x00\xcd\xfe\xef4\xb8\xe3\xff\x9doz\xff\xf0=4\xff\xfe6+\xff\xf1[i\xff٥\xe3\xffն\xff\xffն\xff\xffն\xff\xff̶\xff\xff\x84\xbe\xff\xff3\xc7\xff\xff\x00\xcd\xfe\xf3\x00\xcd\xfe\x9b\x00\xcb\xff;\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdf\xff\b\x00\xcc\xff2\x00\xcd\xfd\xbd\t\xc7\xf6\xfe4\xad\xd1\xff\xb9o\u007f\xff٨\xe8\xffյ\xfe\xffն\xff\xffն\xff\xff\xa4\xba\xff\xff-\xc8\xff\xff\a\xcc\xfe\xfe\x00\xce\xfe\xc1\x00\xcd\xff4\x00\xdf\xff\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\xff\x06\x00\xcd\xffm\x00\xcd\xfe\xd7\x05\xcd\xfe\xfb]\xc2\xff\xff\xb4\xb9\xff\xff\xb7\xb8\xff\xff^\xc2\xff\xff\b\xcd\xfe\xfb\x00\xcd\xfe\xda\x00\xcd\xffm\x00\xc6\xfe\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\xff(\x00\xcd\xfe\x85\x00\xce\xff\xe0#\xc8\xfe\xfe&\xc8\xfe\xfe\x00\xce\xff\xe0\x00\xcd\xfe\x8a\x00\xca\xff,\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x03\x00\xcc\xff(\x00\xcd\xfe\xa5\x00\xcc\xff\xad\x00\xcc\xff(\x00\xbf\xff\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" var _Assetsd02de8458478b9207bcc182c71f64095eebd83f2 = "\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\xb4\x00\x00\x00\xb4\b\x06\x00\x00\x00=\xcd\x062\x00\x00\x1f\x04IDATx\x9c\xed\x9dytUս\xc7\u007fa\x16\x87\xd6\xf2\x04\x15Q\xb4*\x860\xc3E\xe6\x04\x01\x15q|\xd5\xda\xd6>\xeb\xf0lk\x9fU[\x87\xb6j-R-3\"\x88\x88L\x82 \x0e\xa0L\xb9\x99\x80$\x90\x84\xe4\xde{\xf6M\x80kU\xaa\x12\xb0\xab\xf5i\xab>[\x81\f\xf7\xf3\xfe8\xf7\x82\x81$\xe7\xdc\xe4\x9c{N\x92\xf3]뻖kI\x92}\xf7\xf9\xe4\x97\xdf\xfe\xed\xdf\xdeGē\xadB\x93T4Y\x83\x92\xf5\x84\xa4\xbf\xd3\xe3\xf1\xe4\xa9I\" \xbd\xd0d>J*Q\x12\x8d\xf9cB\xb2\x982\xb9\xd0\xe9\xf1y\xf2dZ\x94˕(\xf9\x18%4\xe0\xbf\x13\x96\x1b\x9c\x1e\xa7'O\x8d\n%\x93\xd1\xe4\xedF@>љ(\xb9\xde\xe9q{\xf2TG\x94H\xcf\x18\xc8_\xc5R\v\xb3@GQ\xf2/\x94d\x13\x96\xdeN\u007f\x0eOm\\\xec\x95^h\xf2+\x83\xf4¬\xff\x86&\x8fz\xf9\xb5'GD@~\x8c&!\x94\xd46\n\xaa\x96\x02%\xa3\xa1d\xbc\xfe\xdf\xc6`\x87)\x97\xbb\x9c\xfe|\x9eڀȗ\x0eh\x92\x8a\x12\xbf!\x98Z{\bv\x83\xfc'\xc1_\x01\xfe=\xb0\xfdO\x10\xfc\x0f\xfd\xff\x19}}X\xf2\xd1d\x00!\xe9\xe8\xf4\xe7\xf6\xd4\nE\xb9\\\x8a\x92\x17Q\xf2\x89!\x8c\xc13\xa0𗐽\x1d\xfc\x91\xba\xce.\x80\x82_\xeb`\x1bG\xebO\xd1d\x05\x15\xd2\xcf\xe9\xcf\xef\xa9\x15\x89\xb0܃\x92j\xe3\xa8,zj\xe1\xdf{2\xc8'y/\x14_\xad\u007f\x8d\xf1\xf7\xadA\x93\a\x9d\x9e\aO-X\x94\xc8)\x84\xe5F\x94\xe4\x19\x03\xd7\x11v\x0f\x83\xeds\xc0\x1f6\x01s\xdc\xe5\xb0}\x01\x94\\\x0eZ'3\x11\xbb\x90\xb0\xdcBH\xba:=?\x9eZ\x90\xd0\xe4b4ɋ\x95\xe1\x1a\x85\xac6\xd4\tvL\x87\xac\xdd\t\x80|\x82\xb3J\xf5_\x86P\x173P\xff\v%\x85\x94K\x9a\xd3\xf3\xe4\xc9\xe5\",\xbd\xd1\xe4q\x94\xfc\xdb\b\xacO\v\xba\xf3ʜ\xffa\xc8\xe8\xaf\xd8>\xb7\x92\x9a\xadM\x84\xf9Ĉ\xbd\xf3\x0es\xf9\xb5&\x87\t\xcbT\xc2\xd2\x1b$\xc5\xe9\xb9\xf3\xe4\"\x11\x92\xae\x84\xe4\xb7h\xf2.Jj\x1a\x03\xe9HYg6,\xbc\x83\x9b\xbf\x17\xa4\xff\x88\xa3\xa4\xfa`LF\x159\xb3+-\x00:\xa2WDr\xd7C\xd1-\xa0u6\xaa\x84\xd4\xc6\xc6\xfc$\xf9r\x9a\xd3\xf3\xe8\xc9a\x81\xb4\xa7T.AI\xb9QD\xac\t\xb5\xe3\x1f\x85\xdd\xf8\xf9]\x9bI\xf5Q\x8f\xa3\x94>\xff!\xb5\x99V@\x1ds\xdeR\b~\a\xb4vf\xca|\xef\x12\x92\xfe\xe4K\a\xa7\xe7Փ\x03B\x93\xa1(y!\x96\x936\nˡ\x9c\xde\xcc~|\x06\xbe\xb1\x9f7\x00\xb3\xee\xb1\xe3\xabȝcU\xa4\x8e;\x04\x05\x8fB\xe0\x023\xf9\xf5\xbf\t\xcbR\x94\x8ctz~=%I\xec\x97\xceh2;\x96'7\xdawQ\x15\xe8Ț\xb9\xf72d\xccW\xf4\xf5\xd56\ns\x92.NϷ'\x9bD\x99tC\x93[QRa\x04r4ԅȆ\xab\xb9\xfdG\x05& >\xd9\x03GԒ5렵\xe9Gܹk\xa1x\x02\x84\xba\x9aY8\xfe\x99r\xf91J\xcerz\xfe=Y(\x94\x8cD\xc964\xf9\xda\x10\x82\xc0\xf9\xec\u007f\xedyn\xb8\xee\xd3&\xc1\x1c\x8f\xd4c3\xaa\b\xbd\xf0\xa1\xf5@\xfb#\xe0\x0f\xc2\xf6\xe7\xa0\xecBs\xd5\x10%\x85\x84d\xbc\xd3\xcf\xc1S3\x85\x92\v\xd0d\xa1QDF\x13\b\x9eE\xb4\xf0g\x1cZ\xbb\x87\x1b\xa6\x1cn\x06\xccǝ拲}^%Ֆ\x94\xf4\xeas\x05\x14\xfe\x1c\x82=\xcc\xec8FQ\xb2\x94\xa0\\\x84xe\xbe\x16%J\xa5\aJ\xa6\x11\x96w\ra\x0eu\x86]?$\x9a\xbb\x01\xf5\xe2\a\\3\xf9\x88%0\xc7=*\xbd\x9a\xec\xd9\am\x02:\x02\xfe}\x90\xb3\x11v\xfe\xc4L\x1a\x12E\x93\x0fP2\x1d%\xe7:\xfd\x9c<\x19\x887\xa4\x13\x9a\x8cEɇ\xc6\u007f\x8a\xdbC٥\x90\xb3\x81hf\x84O\xdfx\x97\xc9W[\x13\x99Ot__\x94\xddV\x97\xf4\xeas\xceF(\xed\vZ\a3e\xbeChr\x15\x11\xe9\xe4\xf4s\xf3T\x8fP2\x11%\x1b\f#\xb2\x12(M\x83\x1dOCV\x90hf\x04\xf5⇶\xc1\x1c\xf7\xc8q\xd5dͲ3Rǭ\xc1\xf6\x99P:\xd0L\x99/\x8a\x92\xcd(\x99\xec\xf4\xf3\xf3\x14\x13{\xa5\aaY\x89&_\x18\xe7\xca\xed\xa1\xf0\x17\x90\xb5K\xffS\xed\x8fph\xed{\x96\xa7\x19\r-\x14}\xa3k(Z`uI\xaf>\uf0ec\x12(\xf8\x95\xd92ߗ(y\x8dR9\xcf\xe9\xe7\xd9fED\xceF\xc9\xed(\xd9o\x18\x89B\xa7B\xf1d\xc8\xd9p\xec\xa1G3#\xec\u007fy\xbfe\v\xc0Dҏ\xdc9V\xf5~\x98p\xceF(\xbe\x16B\xa7\x9b\x89\xd8\a\xd0\xe4\x1eʥ\xa7\xd3ϷM\x89\x90܈\x92\x80\xa9\xf4b\xf7`\xc8[\x05~U\xe7A\xef[\xf6\x17n\xb86\xb90\xc7=:\xbd\x9a\x82g\x0f$\ah\u007f\x04\xfca\xc8[\x03\xbb\x87\x9bKC¢(\x97[\x9d~έZ \xedP2\x10%\x1b\x8d\x17|\xed \xd0\x13\xf2\u007fˉ\xfd\xc9\xd1\xcc\b\a\u05fcǤ+\x93\x91f4\x1e\xa9\xf3\xe6TR\xbd%YPG\xc0_\x01\xf9\u007f\x80\xc0\xf9掁)\xc9F\x93\xa1 \xed\x9c~\xfe\xadJ\xe8\xf5\xe4yh\xc7n!j$\xbd\xe8\x02;\xef\x81\x1c\xffI\x0f4\x9a\xa9G\xe6)\x93\x9d\x89\xcc'ڞ\xde\x0f\x13\xce\xce\xd1\xd7\x12\xc6i\x88~\xdbSX\x9eG\x93\x8b\x9d\xe6\xa0U\x88r\xb9\t%\x9f\x1aGe\x81\xddC \xab\xa8\xc1\a\xf9\xaf\xb7\xdf\xe1\xbak\xdc\x01s\xdciã\x84^\xf8 \xf9P\xfb#\xfa\xc2q\xf7\bs\xc7\xc0\x94\xfc\x13Mns\x9a\x87\x16)\x90vhr\x13J\xb2\x8dAn\x0f\xbb}\xb1\xe3O\xa1z\x1f\\43Bx\xc9\a\\}\x95\xb3iFC\x1e6\xba\x06\xff\xccd\x94\xf4\xea\xb3ҷ\xd1w\x8f4\x9b\x86\xe4\xa3\xc9\xf7yC\xda;\xcdI\x8b\x10\xbb\xa57\x9a\xec@o\xeb4^\xf4\xed\xf8#d\x955\xfa\xd0\xfe\xb2j\xbfka\xd6\x1de\xe8\xe8\x1a\xe7\"\xb5?\x02Y\x01\xd81\vB\x1dͤ!\xffF\x93R\xca\xe4R\xa7yq\xa5\x10I\xa1TΣ\\\xeeC\xc9\xdf\r!\x0e~\v\x8an\x80\xac\xc2F\x1fR43\xc2G\xab\xdf\xe7\xc6k\xbfv\x01\xb4&ҏX\xefG\xd2Jz\xf5\x82\xbd\v\x8a\xbe\a\xc13\x8d\xa3\xb5&\x9f\xa2\xe4ׄ\xe4|\xef\x18XL\x88\xa4\xa0\xe4\xe7\xe8m\x9d\x06\xb7\x10\xb5\x83\xe2I\x90\xb7\x96\x13\xcbp\xf5\xf9\xcb\r\xef\xb0\xf0\xe1Ox\xe0\xf6/\xac\xf7\x1d\x1f\xdb\xf2}\xa7\xfd\xe23>Y\xbd\xc79\xa0\xfd\x11\xf0\x97C\xeekP<\xc5\xdci\x19%\xfb\xd0\xe4\xc16\r5\x11\xe9\x84&\x03PRd*O\x0e\x9e\xa5o隹\xf3\"s\xdfq[\xfe\xb0\xf7B\xee:(\xba\xd6>\xa0\x1e\x98\r3\xd7\xc1V3\xf7{\xd8\xe9}z~\x1d\xecn\xae?D\x13\x85\x92am\xae?\x04%\x03\t\xcb\n\x94|f\x9c^t\x87\x82\x87 k\xa7\xb9\x87`+\xcc\x11\xc8]\xa3\xd7q\x8b'\xd9\a\xd2\xfd\xb3a\xc8\x14\x98\xb1\xd6a\xa0c\xce*\x81\x82\xdf\xe8\xb5}sՐ5\x84\xc5\xe74gI\x11!\xf95\x9a\xfc\x9f\xe1\x82O\x13(\xbaZ_\xac\x98\xba\x89\xe8\x04\xa0m\x81y3\x04\xce\xd2\xc7f7\xd0}ҡ\xdfDX\xb0\xd1y\xa0\xfd\x11\xfd\x19d\x05\xa0\xe8F3\x97NFQ\xf2\x15\x9a<\xee4o\xb6\x88\x88\x9cFXn1\x97^t\x86\x92\x11\xb0m\x11\xf8\x13\xc8%\xed\x8e\xccy+\xf4\xcb\x17\xe3\xe3L\x06\xd0}\xd2!m\x02<\xbd\n2\x9dN?\xe2\xde\x03\xdb^\xd2oT5w1N\x00Mn\xa3T\xcep\x9aCK\x84\xbe]]\x80\x89\xcb[\bt\x83\xed\xf3\f\xcbp\x8d\x02m\xc7C\xcc\u0382\xc09u7 \x92\x05t\x9ft\x184\x19\x9e]\xef\x02\x98\xbfᬀ~\x8dY\xe0,3P\u007f\x8d\x92\x124\x19\xe14\x8fM\x12\")\xb1봞AI\x95aj\x11\xec\x0e;\xef\x04\u007fy\xd3&\xd7\xce\x05`\xde+\xfam\xa2'\x8e;\x99@\xc7=\xf3U\xd8\xe2t\x05\xa4\x1e\x17\xfe\x1c\x02g\x9b\xd9q\xacF\xc9\x1c4\xb9\x98\xa9-\xa4?\x84R9\x03M\x1eAI\x04\xc32\\'\xbd\x9e\x9c\xfb*\t\xa5\x17I\x819\x02y\xab\xa1\xec\xa2\xfa\xc7\xee\x04о\xeb\xe1O\xaf8\x0f\xf0I\xde\x03\xb9\xafî\x9bͤ!Q\x94D\b\xcbc\x84\xe5\xdbN\xf3ڠȗ\x0e(\x19\x88&\u007f6Γc\xddpy/\x13o\xb4o2ȶ\xc0\xbc\x0fr6A蔆?\x83\x13@\xc7=\xefM\xfb~\x89\x9b\xebܵP\xd6\xcb\xec6\xfa\x87\x94\xc9H\xd7\xdd\xf6DXF\xa1d9J\x8e\x1a\xe7\xc9\x17\xc6\xda:\xb5\xe6M\\澦\xff2\x189/V\x9ak\xecs8\t\xf4\xe0\xc90}\x8d\xf3\xf06\xe8\n\xc8\xff=\x94]b\x06\xea*\x94\xac&(\x19Ns,\x14\xc9\xe9(Y\x1cK\xfa\r\xcap\x9d`\xe7]\xfa\r@\xcd\x05\xd1\xce4#\xe7m}k\xdd(\x1ft\x12\xe8x\xf5c\xee\x1b.\x80\xb7!\xef\x03\u007f(֦j\"\r\xd1\xef\x0fYMH\xbe\x95|\x90#\xf2\x9d\xd8e\xe0\xfb\x8cA\xee\x02%c\xf4\xdd5+&\xc9\xce4#o\xb5\xd9WE8\x0ft\x9ftH\x9b\b\xb3ܰ\xa3h\xe0\xdc7\xa1$\xc3\xdcmOJ\xdeG\x93[\t\xc9\u007f$\a\xe6\xa0LD\x93BS\xe9E\xe9e\xb1zr\xd0:\xe8l\x8b̛\xf5\v\x11\xcd\xf5\x06\xbb\x03\xe8>\xe90\xec:\x98\xfb\xa6\xf3\xd0\x1aZ\xc1\xb6%\xfa\x89{\xa3\xb9\r\xcbQ\x94\x14\x13\x92)\xf6\x03\xad\xe4\x8b\xc6#\xb2@\xf0\x1c\xfdı\x89\x06\"Ӷ\xb57c\xad~\x90\xd6\f\xc8n\x03:\xee\xe9k\xdcY\xd2;\xc9\x15\xfaK\x93\x02\xe7\x19\a\x0fM\xbev\x16\xe8\xd0)z=9'\xd3z\x90m\xdb\xce^\xa7On\"0\xbb\x11\xe8!S`\xbaKz?\xcc8;\v\n\u007f\x06\xc1\xd3\\\nt٥\x90\xb3Ն\x0foc5#;[_\x00&\n\xb3\x1b\x81\xee\x93\x0e\x97e\xc0b;\x9e\x81\x8d\xce\xc9\xd2o{r\x15\xd0%\x19\xe0\x0fX\xffam\xdd4Yi\xee\xf6Ζ\x04t\x9ft\x18r\r<\xb3\xdayP\x13\xb2\xa6\xf7^\xbb\x06\xe8\xe2\xeb\xb1<\x8a\xdaZ\x9a\xdb\x1a{\xd5C\x13av3\xd0}\xd2a\xc0\x95\xfa\xe6\x8b㠚\xf5>\xd8u[+\x05:3b\xe3\xa6ɾXo\xc6w\x9a\x0erK\x00:\xee\x19k\xdd_\xd2k\xfd@\xdb\x19\x997B\xd9w\x9b\x17\x99[\x12о\xeba\x9e˺\xf4\xda\f\xd0\xf1\xc8l\xe7\xb1)s\xfd\xbb\xad\a\xe8\xb8g\xba=R\xb76\xa0m/ͽjܛњ\x81v\xd3q\xae6\x05\xb4\x1d\x93\x95\x9div˵\xf5\x02\x1d\xf7\xc2M.\x80\xb7\xb5\x03\xbdu\xaf~\xc2y\xdaJ\xeb\xfd\xc7E0o\x18\xfd\xd2\xf5<'.]o3@\xfb#zN=\xe7u\x18t\xb5\xe3\xe0\xb6T\xa0\x97\x0f[EM\x9f+ꌹ>\xa0S}Q\x06\x8f\xac\xa58)o\xe7j\xab@\xfb#zN=m%\f\xbc\xcaqx[\x12Ѓ\x87\x1d\xe6\x85\xc1\xab\xeb\x1ds\xfd@\xeb\x1e8\xa2\x96\xecY\a\x1dJ?\xda\x02\xd0\xfe\x88\x9e~\xccZ\xa7\x9frv\x01\xc4-\x01\xe8\xa5\xc3V\xf1\xaf\xcb\ua7efƀN\xf5E\x19;\xbe\x8a\xd0b'Jzm\x05h\u007fDO?\xa6\xad\x80\x01\xee\x8a\xd4n\x03z\x90\xef(K\x86\xaejt̍\x03\xad;mx\x94\x1d\xf3*\xa9NjI\xaf-\x01\xed\x8f\xe8\xe9ǟ^qU\x9d\xda]@GY4X/\xcd5\x17\xe8T\x9f\xfe\x1eŜ\xa4\x96\xf4\xda\x1a\xd0q\xcfZ皅\xa2;\x80\x8e\xd2\xcfW\xcdҡ/\x1351f\xb3@\xa7\xfa\xf4\x92^\xe9\xf3\xc9*\xe9\xb5U\xa0\xe3\x91\xda\x05%=7\x00\xdd\xcfW͊!K\xeb\x94\xe6\xac\x02:\xd5\a#\xc7U\x93=;\x19o\xe7j\xab@\xfb#\xc7Kz\x0eW?\x9c\a:\xcaҡ/\x9b\x86\xb9)@\xa7\xfa\xa2\xf8\xc6\xd4P\xb2\xf0#\x0fh\xdb#\xf5\x13/\xc2@\xe7\xd2\x0f'\x81\x1e\xe4;¢\xc1\xabM\xa5\x19\xcd\x03\xfax\xfa\x917\xc7\xceޏ\xb6\x0et\x1c\xea\x85\x1b\x1dK?\x9c\x04zɐU\x86\v@+\x81N\xf5\xc1\xe8\x8cj\n\xe7\x1f\xf0\x80\xb6\xdd3\xd68R\xfdp\x02\xe8\xc1\xc3\x0e\xd7\xe9\xcdH&\xd0\xc7\"\xf5\xdcJ\xaa\xb7x@\xdb\xe7-{`\xea\xf2\xa4o\xbe8\x01\xf4\v\x83\x1b\xde4I\x06Щ>\xbd\xf7#\xd7\xf2\xde\x0f\x0f\xe8\x93=k]R\x17\x8a\xc9\x06z\xf9\xb0\xa6Gf+\x81N\xf5\xe9\x9b/\xdab+_\xe3\xec\x01}\xb2\xb7\xee\xd5[O\x93T\xa7N\x16\xd0\xfd\x86հx\xc8ɍFN\x02\x9d\xea\x83acj\xf0ϲ\xaa\xa4\xe7\x01]\xbf3\xf7\xc1\xfc\rI\x81:Y@'Z\x9aK\x16Щ\xbe(CG\xd7\x10\xb2$R{@7\x1e\xa9\xff\xb0L\xbf\x0e\xab\x05\x03=\xd8w\x84\xc5CVY:fk\x81>\x9e~4\xff8\x97\a\xb41Գ\xd6\xe9\xf7Q\xb4H\xa0\xa3\xbc\xd8\xc4\xd2\\\xb2\x81N\xf5\xe9ǹ\xb6ϫ\xf4\x80\xb6\xd3\xd1\xcc\b\x9fO]A\xcd\xc0\x8c\x16\a\xf4\x937\xef'z\xdf\f\xb0ص\xf7\xcddڵʶ_\xc2\xfcy\a\x9a\x18\xa9=\xa0\ra\xf6\xcf<\xc8S\xf7\xbf\xcd\xe1\xf9\x17\xc1\xd0\xd1-\n\xe8\x85\x0f}b˼\xd4n\x8d\xf0Խ\xff\xb0mܣӫɛ۔H\xed\x01ݨw̫d\xc0\x88Z~q\xf7\x16\x0e\xef\xee\n˺à1\x1e\xd06\x03\xad\x1f\xe7j\xcaB\xd1\x03\xbaAo\x9b[I\xfa\x15U\xa4\xfaЁ.=\x05B\x02s{Z\n\xb5\at\xc3\x1e8\xa2\x16\xff\xccD\x8esy@\x9f\xe4hf\x04\xff\xac\x83\xf8\xc6\xd4\x1c\x9b\xd8c@+\x81P\n\xbc|\x16\f\xb1\x06j\x0f\xe8\xc6#\xf5\x88\xb1\xd5\xec^h\xf68\x97\a\xf4I0\xe7ͭd\xdc\xf8\xaa:\x13[\ah}\x82`\xd1\xd90\xa4\xf99\xb5\a\xb4\xb1\xd3|Q\xb6ϭ\xa4ʰ\xf7\xc3\x03\xba\x8e\xb7\xcc8t,\xcdh\x14h%\x10L\x81\x17z4\x1bj\x0fhs\x1e7\xbe\xca\xc4q.\x0f\xe8c\xde>\xaf\x92!\xa3j\xeb\x9d\xccz\x81\x8e{\xc1\xb9\xcdʩ=\xa0ͻ\xaf/J\xf1\x82\x8f\x1aɩ=\xa0\x89fF(\x98_\xc9\x15\x13\x8e68\x91\x8d\x02\x1dL\xd1ӏ&\x96\xf4<\xa0\x13\xf3\x88q\xd5\xe46x\x9c\xab\x8d\x03\x1d͌\xb0y\xfa!\x06\x8c\xa8?2\x9b\x02:\x9eS\xaf=\x13\x06'\x0e\xb5\at\xa2\x8e2hd-E\xcf}\xe4\x01}\"\xcc\xf9\xcf\x1e`L\xc6\xc99s\xc2@ǫ\x1f\xb3\u0383\x81\x89\xa5\x1f\x1e\xd0M\U000e0475\xec8\xa9\xf7\xa3\x8d\x02\x1d͌\x903\xbb\x92Q\xe9զ&\xcf\x14\xd0\xf1\xf4ci\xf7\x84\x16\x8a\x1e\xd0M\x8f\xd4\xe3\xc6WQT\xe7.\xbd6\bt<2\x9b\x859!\xa0\xe3\xe9\xc7s瘆\xda\x03\xbay\xee닒;'~CS\x1b\x03:\x9a\x19a\xd3\xf4C\xa6Ҍ&\x03]\xa7\xa4g\x9c~x@7ߣҫcW\xf9\xb61\xa0\v\xe6W\x1a.\x00-\x01:\xee\x97z\x18\xe6\xd4\x1e\xd0\xd68\xcd\x17\xa5b\xc9_\xda\x0e\xd0\xdb\xe75^\x9a\xb3\x05\xe8P\n<۳\xd1\xf4\xc3\x03\xda:\x8fJ\xafb\xf7\ua7f6n\xa0\xa3\x99\xfa\x0e`C\x9b&\xb6\x02\xadDohZ\xda\x1d\x06\x8d\xf5\x80\xb6\xddQV\xcf\xfee\xeb\x05:ޛQ\xdfvvҀ\x8e\xe7\xd4\vΩwG\xd1\x03\xda\x03ڴ\xfd3\x0f\x9e\xd4h\xe4\b\xd0q\xa8\x97u?iG\xd1\x03\xda\x03ڔ\xb7ͭ\xac\xd3\x02\xea8\xd0q?wn\x9d\x85\xa2\a\xb4\a\xb4a\x9a\xb1}^%㚙f\xd8\x06t0E\x87z\xe8\x18\x0fh\x0fhc\x983g\x1a\xf7f8\nt\xdck\xbf\x03\x83\xc7x@{@7\f\xf36\v\x16\x80I\x03:\x98\x02s{R2\xfc!\x0fh\x0f\xe8\x93a\xf6\xcf\u007f\x17#-\x8a\xd4u\x80\u07ba\x17\x1e{\x01\xfaZ\x00\xb5\a\xb4u@G3#\xe4\xceiZלہF\tQ-\x85]\xab\xa6p\xf9\xb8ϭ\x05:\x0e\xf5S+=\xa0\xdd\x02t43B\xd6,k\xb6\xb3\xdd\n4J\xa8\t\xb5g\xeb\xe2\xffjv\xf5\xa3\xc1\xb2\xddc\x8b\x9b\xf7\xe6/\x0fhk\x80Κ}\x90\x91\xe3\xec\xabf\xb8\x05h\x94\xbeP\xcc_y\x13#\x9bQ\xfdh\x10\xe8Maxr\xa9\a\xb4S@G3\xf5\xd2\\\"ǦZ:\xd0(=\xfdؼ\xe8'\fkb\xa46\xdcXyr)\xf4o\u0085\xeen\x05:p\x1e\x94\xa6\xba\x1b\xe8\xf8U\x03\xc9N3\xdc\x004JO?\xb2_\xba\x95\x11\xe9\x89\xe7Ԇ@o\xae\x80߽\xd0:\x80.\xbb\x10r_s\xf7\x89\x95x\xce}\xa1\x98H\xf5\xc3m@\aΆ\x9c\xb7q\xf5\x99\xc28\xccv\xf4f\xb4D\xa0kB\xed\xc9y\xe9\xfb\x8c\xca0\x9fS\x9b\xee\xe5غW_(\xf6\x9b\xd4\xf2\x80\x0e\xf4\x86\xbcU1n\\\nt<\xcdp:2\xbb\th\x94\x9eS\xef|\xf9:\x86\x8f\xfd\xc2Z\xa0\xe3\xe9\xc7\xd4e-\v\xe8@o\xc8\xd9\xfc\x8d\xbf\xea.\x05\xbap\xfe\x01Gsf\xb7\x02\x8d\xd2#\xf5\x9b\xf3\xefe\xf88c\xa8\x13\xee\xb6\xcbܧGj\xa3\xde\x0f7\x00\x1d8\xfb\x1b\x919\xe2N\xa0\xa3Eד\x95\xc0\x8dFm\x11h\x94P\x13lO\xe8\xb5\f\xc3ޏ&\xb5\x8fn\xae\xd0\x1b\x9a\xdc\ftم\xc7s\xe6:\xe3w\x19л_\xf9\x01#\xd3\xdd\x13\x99\xdd\nt\xdcyKofD\xfa?\xad\x05:\xee?,o\xf8\x1d\x8dN\x02\x1d\xe8\x05\xb9\xaf70n\x97\x01\xfd\xf6\xa2\xff\"\u0557\xbc-\xed\x96\x0etM\xb0\x03\x9b\x9eo\xb8\xf5\xb4Y@o*o\xb8\xa4\xe7\x14\xd0\xc1\xb3!ou=\x91\xd9\x03\xbaU\x00\x1dw\xc1\x8a\x1b\xf1ճ\xf9bɉ\x95\xa7W\xbb\x03\xe8\xc09\xb14\xa3\xb1\xf1z@\xb7\n\xa0kC\xed\xc8Z\xf2Ó\xeaԖ\x1d\xc1zl1\xa4Mt\x0e\xe8\xb2\xf3\r\"\xb3\at\xab\x02Z\x87:\x85ҵWq\xf97\xaa\x1f\x96\x01\xbde\x8f\xfe\xdes'\x80\x0e\xf4\x84\xec\\\x130{@\xb7*\xa0u\xa8\xdb\xf1ւ\xff>vH\xc0\xf2C\xb2\xf1\xe3\\\xc9\x02:\xd8\x1d\xb6-3\t\xb3\at\xab\x03:\x0eu\xfeʛ\x18\x9d\xf1\xa9\xf5@o\xae\x80'^L\x0e\xd0e\x17Ū\x19\x89\x9c1u\x19Л\x17\xdd\xc6 \xdf\x11\x06\xf9\x8e&쁾*\x06\x8c\xa8\xb5\xc5\xf7\xff\xf7\x16\x0e\x17\x9d\x06e\xed\xadw\xb0\x03h\x9d-\xf7\xf6e?b\xd5\x13\x89\xbeZ\xd8$4S\x97\xc3܋\xec\x839\xd0\x13r\xd77mln\x02\xfa\xaf\v\x06\x92;`*\xb9\xfd\x9fJ\xd8\xd9\x13_\"s\xc6![\x1c|b=5w\x0e\x83;\xfa[\xeb\x9f\x0e\x83\xf5O\xc2\xf6\x05\x96\xbb&w\x11\x9f\xbdY\xa6\xef\xfeY\r\xf5\x96=\x90\xf7\x9f6\xc1\xdc\v\xf2^I02\xbb\x14h\xe6w\x87>\xe3\x9a\xd6t>\xe5\xa76D\xa3\x98g\xbdZw\x95o\x85\xfbNЫ\a[\xf7\xda3\xe6\xcc}umu\x94\xae\x0f\x9c\xe6:\xd8\x03r66\x11f\x0fh\xe7\x80N\x9b\b\x0f\xce\xd5sR\xbb@\xfe\xe6C\xb6\x1cj\x1b\x80\x0e\x9e\x03y+\x9a\x01\xb3\a\xb43@\xf7\x9b\xa8\xe7\xa0I\x81\xd9.\xa8-\x06:\xd0\vr\xb2\x9b\t\xb3\at\xf2\x81N\x9b\x00\xbfyޞ4\xc3\x10X+\xa1\xb6\x10\xe8@\xafئ\x89\x8d\xbfh\x1e\xd06\x00\xddo\xa2\xde\x1b\xb1\xa9\xdc\x01\x98O\xf8w͆\xda\"\xa0\x03\xe7C\xee:\xac\xbb\xe4\xde\x03:9@\xa7M\x80\x87\xe6\xdb3\xb6\xa6\x00\xdal\xa8-\x00:pn#]s\xad\x05\xe8%ݠ\u007fb\xaf\x16v=\xd0\xfd'\xc1o\x179\x1b\x99\x1b\xfa\xba&C\xddL\xa0\x03\x17@\xdeJ\xac\u007f㙂\xe2\xeb\\\x04t0\x05^=\x03F\x0fo\x1d@\xa7M\x84i+\xed/\xcd5\xe7k\x9b\xf4\xf5\xcd\x00:\xd0\v\xb2\xcc\xf6f$\xe0\xecm\xb0{8h\x1d\\\x04t\xdcE\xed\xe1\xd1\xde0\xea\xf2\x96\vt\xda\x04\xb8\u007f\xb6\xcd\xd5\f\vr\xe1&A\xddD\xa0\x83\xdd o\xb9\xb5%\xc4\xec\xedP\xf00\x04\xcfh\xf8\xe7:\x0e\xb4\x12\xfd\xfd~\x9b\xbb\xc2}\x17CZ\xfd\xef\xf8s-\xd0\xfd'\xe9=\x0fv\xa6\x19\x99V\u007f?\vz&\f\x17\x80\x1b,\xf8%\x8c{\x0f\xe4?\x01e\x97\x82\x96\xd2\xf8\xcfN\x12\xd0ףDC\x93\x1a\xc3\xc9x\xfdt\xb8~`\xe3`\xbb\x05贉z\xcelu\x9aQ'*[\xfc\xe7:a\xa8\x13\x04:p\xbe\x85\v\xc0r\xc8[\v\xbb\a\x9b\xf9\xd95(\xa9\xa0\\\xbeo;\xd0\"\"\xec\x95\x1e(\xb9\x1b%\xef\xa3$\xda\xe8\xe0\x8a\xdb\xc3³`\xd2P\xf7\x02\xddo\xa2\xbe\x9d\xed\xea4\xc3\n\xa8\x13\x00\xfa\x18\xcc\x16\x8c;g#\x14]\x0f\xa1\xd3\xcd\xfc\xec\x8f\b\xc9/PrnR`\xae\x03\xf6.9\x13%o\x98\x9a\xa0\xdd\xed\xe07\x17\xb8\x0f\xe8\xbeW\xc0\xef\x16\xd97\x06+\xd3\fS\xbf8\x16\x00\x1d\xec\x16K3,\x18W\xc1#\x10\xeaj\xf6\xafB&e\xd2-\xe9 \x9f\x04vP&\xa1d=J\xaa\r\a\xbd\xe1T\xb8\xa7\xcf\xf14\xc4I\xa0\xfbM\x82_\xcfk\x199\xb3\xe9\x9fg\xb0\xebh\x04t\xa0\x97\xbe\x00lVd\xde\x03;fBi?c\x88\xf5\xd4u\x13a\xb9\xc6i\x8e눐t%,\x19(\xd9o\xf8!\xcaR`\xfd\xa9p\xcd`\xe7\x80N\x8bu\xcdm\xd9\xe3\x10\\6B\x9d\xe8\xe9\xeac0_\xa0\x97\xe6\x9a3\xee\xdc7t\x90\xb5Nf`>\x88\x92Ʉ\xa4\xab\xd3\xfc6(ʤ\x1bay\x1aM>@I\xada\x1a\xb2\xd2\x17;\x15lCͷ!\xa0\xd3&\xc0#\xcf\xc1f\x17m\x9a$e\f\x8d\x00\x1d8\xb7\x19\x9b&{\xf5\xab\xbdv\xfe\xc4Lz\x11Eɇh2\x8bb\xe9\xee4\xaf\xa6\x04\x92\x82&\x03\xd0d\x91a5D\x8b\xfd\x99+\xb8\x1f\xfc\x16\x03V\x1f\xd0\xfd&\xc1\xe3-\xa44\xd7\xecq\x9c\bg\x03@7w\x01X\xf00\x94\xf5֟e\xe30נd9\x9a\f\xe0\ri\xef4\xa7M\x12\x9a\x8c@I\x18%G\r\xff\x04\x05z\xc0\xb6%\xe0\xd7\xec\x01\xba\xef\x15\xf0г6w\xcd9\x1c\x9d\xeb\x1dS#@\az\xc5\x1a\x8d\x12\xfd\xfe\n\xb6\xad\xd0#\xbb\xf1b\xef(J\"\x84d\xbc\xd31R\x9f\x00\xf4\xb1\x16\xd0DƾW\xff\x9a\xe2+\xcdU/²\x17%\xf7\xba\xa2za\x87P2\xcd0\xb7V\xa2\xef\"\x15\xddd\r\xd0i\x13\xf4\xcb\xc1\xed\x02\xc7\ri\x86\xa9_\xb8o\x00\x1d<'֜\x9f\xe0\xf7\xda\xf5C\xd0ڙ\x89\xcaQ\xc22\xdbiޒ\"4\x19\x81&\x1b0\xdaFW\xa2\xbf\u007f#\xffI\xc8*i\x1aЃ\xae\x86_͵>gv\xaa\x92\xd1ܱ\xee\xba-v\xd7\xdc\n\xf3c\xcf\n\xc0\x8e?\xeay\xb21\xc8_\xa2d3J\xd2\x11Iq\x9a\xb5\xa4)V\xe6\x1bm*\r\xd1:铹m\x01\t\xfdy\x9c\xf7\xa6~\x19xk*\xcd5k\xbc{!\xff\xb7\t\x1chݧ\xafi\xca.2W\x86S\xf2\x0e\xe52\x9e\x1c9\xd5i\xbe\x1c\x13oH{4y\x14%\u007f!\xdcx*\x12\xd5ڳ\xff\xad[x\xe6\x81\xdd\xdc\xf3\x83\u007fr\xc7-_5\xea;\xbf\xf7%w\xdc\xfc\u007f\x86\xff.Q?p\xfb\x17\xbc\xb7b\xbf\xbbӌ\x86\x00\xf5\xef5\x01s\x85^\x86\xdbus\xfdm\x9d'\xfb#B\xf2\xfb\x16[\xb9\xb0Z )\x84\xe5\x12\x94<\x81&\x9f\x19M\xe0';\xcef\xf5\xec\xfb\xb8|\\\xd3\xdf\x05\xd8T\x8f\x1cWM挃D[\x1c\xcc&\x9dU\xaaד\x83=̀\xfcO\x94ݯ\x92/\xa79=ߞ\x92$4\x19\x8b&k\xd0\xe4\xb0q\x1a\xd2\x1b\xf2\u007f\x0f\xfe\xa03\xe9ŎiPv\x89\x19\x88\x8f\xa0\xc9\xebhr\x85\xd3\xf3\xeb\xc9\x01\x91/](\x93a(y\xc78Zw\xd0\xef\xaf\xc8[\x9e<\x98\xf3^\x89\xddw\xd1\xd1xѧ\xc9\a\x94\xcb\x18\xaf\x1bΓP*g\x10\x92\xe9(9\x80щt\xad3\xec\xbc\rr\xb6\x80߆\xb3\x8a\xfe=z=y\xe7\x9d\xfa\x95\x0eF\x95\v\xbd49\x87\x90|\xcb\xe9y\xf4\xe4\"\x81\xa4\xa0\xa4/\x9a\xcc$,G\f\xa2!\x04\u0381\xc2{\xb0\xb6̷Gϓ\x03=͔\xe1\xaa\xd0\xe4Y\x94\xf4\x05\xef\xf8\x93\xa7F\x14\xab_\x97\xa1L\xe4סSa\xfbB\x9aW\xe6\xd3`ۋ\x8d\xbf\x9e\xe1\x9by\xb2\x92r4\x19\xea\xf4\x92.N\u007fnOm@(\xb9\x17%\u007f6NER\xa0x\"\x14M1~\x8d\x99\xee\xf7\t˃N\u007f>OmP\x84\xe5\x124\x99\x8a~2\xda\f\xac\x8d\xf9S4y\x06MR\xbdn8O\x8e\x8a\x90\x9c\x8f&\x85\xe8\xdd|\x86\xb7=\x9d\xb0\xd8;\x8a\x92\x00\x9a\\\xec\xf4\xe7\xf0䩎\xd0\xe4V\x94\xe4%\x00t\x01\x9a\xfc\xd8\xe9q{\xf2Ԡ\xd8/\x9d\xd1\xe4\xfb(\xf9{\xa3酒\xdb\xc9\xf7\x16|\x9eZ\x88\xa8\x90\vQ\xb2\x1au춧(J\xfe\x97\xb0\xbcN\xb9\\\xea\xf4\xf8\n\n\n\n\nCreated by FontForge 20190801 at Tue Dec 10 16:09:21 2019\n By Robert Madole\nCopyright (c) Font Awesome\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n" var _Assetsc8e5f53dbe9ae4243f36350d1e222609f6af178b = "\x12\xf6\x02\x00\xf4\xf4\x02\x00\x01\x00\x02\x00\x00\x00\x00\x00\x02\x00\x05\x03\x00\x00\x00\x00\x00\x00\x01\x00\x84\x03\x00\x00\x00\x00LP\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xfcKb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x002\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00 \x00S\x00o\x00l\x00i\x00d\x00\x00\x00\n\x00S\x00o\x00l\x00i\x00d\x00\x00\x00L\x003\x003\x000\x00.\x007\x005\x002\x00 \x00(\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x00v\x00e\x00r\x00s\x00i\x00o\x00n\x00:\x00 \x005\x00.\x001\x002\x00.\x000\x00)\x00\x00\x002\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00 \x00S\x00o\x00l\x00i\x00d\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\r\x00\x80\x00\x03\x00PFFTM\x8d\x96\xb6\x16\x00\x02\xf4\xd8\x00\x00\x00\x1cGDEF\x00*\x03\xcd\x00\x02\xf4\xb8\x00\x00\x00\x1eOS/2C\x82V\xa0\x00\x00\x01X\x00\x00\x00`cmap\x19M%\xeb\x00\x00\x10\xd4\x00\x00\f\xaegasp\xff\xff\x00\x03\x00\x02\xf4\xb0\x00\x00\x00\bglyfk\x89U\xec\x00\x00,\xa4\x00\x02\x93\xc4head\x17\x15\x91\x1e\x00\x00\x00\xdc\x00\x00\x006hhea\x04C\x06\a\x00\x00\x01\x14\x00\x00\x00$hmtxo\xcd\x02\xe8\x00\x00\x01\xb8\x00\x00\x0f\x1aloca\x04xڴ\x00\x00\x1d\x84\x00\x00\x0f maxp\x04)\x01S\x00\x00\x018\x00\x00\x00 name\x1d\xac'$\x00\x02\xc0h\x00\x00\x05+post7\f\x86\x8f\x00\x02Ŕ\x00\x00/\x19\x00\x01\x00\x00\x01J\xc0\x833bK\xfc_\x0f<\xf5\x00\v\x02\x00\x00\x00\x00\x00\xda\x15\xc8\v\x00\x00\x00\x00\xda\x15\xc8\x11\xff\xec\xff\xb4\x02\x95\x01\xcd\x00\x00\x00\b\x00\x02\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x01\xc0\xff\xc0\x00\x00\x02\x80\xff\xec\x00\x00\x02\x95\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xc6\x00\x01\x00\x00\x03\xc7\x01P\x00 \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x01\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00\x04\x01\xf9\x03\x84\x00\x05\x00\x00\x01L\x01f\x00\x00\x00G\x01L\x01f\x00\x00\x00\xf5\x00\x19\x00\x84\x00\x00\x02\x00\x05\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00PfEd\x00\x80\xf0\x00\xf9A\x01\xc0\xff\xc0\x00.\x01\xcc\x00T\x00\x00\x00\x01\x00\x00\x00\x00\x01:\x01\xa5\x00\x00\x00 \x00\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x00\x00\x02\x00\xff\xfb\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfe\x02@\x00\x0f\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01`\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\a\x02\x80\x00\x18\x02\x00\x00\x10\x02@\x00\x00\x02\x00\x00\b\x02@\xff\xfc\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\a\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\b\x02\x00\x00\x00\x01\x00\x00\x00\x01\x80\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x12\x01@\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x02\x00\x00\b\x01`\x00\x00\x02@\x00\x00\x01\xc0\x00@\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00@\x01\xc0\xff\xf8\x01@\x00\x1b\x01@\x00\x1b\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\x00\x02\x00\x00\b\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x05\x01\xc0\x00\x05\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x13\x02\x00\x00\b\x02\x00\x00\x00\x02@\xff\xfe\x01\x80\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x02@\xff\xf9\x02@\xff\xff\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\xff\xff\x02\x00\x00\x00\x01\xc0\x00\x05\x01\xc0\x00\x05\x02\x80\x00\x03\x02@\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x80\xff\xfb\x02@\xff\xff\x02@\x00\x0f\x01\x80\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfd\x02\x00\xff\xfd\x01\xc0\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x02@\x00\x00\x02\x00\xff\xfe\x02\x00\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x01\xf0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfc\x02\x00\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x01\xc0\xff\xf5\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfd\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01@\x00\a\x01@\x00\a\x00\xc0\x00\x17\x00\xc0\x00\x00\x02\x00\x00\x00\x01@\x00\r\x01@\x00\r\x01@\x00\r\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01@\x00\x00\x02\x80\x00\x00\x02@\xff\xff\x01\xc0\x00\x00\x01`\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x80\xff\xfa\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x18\x01\xc0\x00\x18\x01@\x00\x00\x01@\x00\x00\x01\x00\x00\x18\x01\x00\x00\x18\x01@\x00\x00\x01@\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x01@\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\b\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x02\x80\x00\x00\x02@\x00\x00\x02\x00\x00\b\x02\x80\x00\x00\x02\x80\xff\xfb\x02@\x00\x00\x02\x00\xff\xfc\x02\x00\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x01\x80\x00\x18\x00\xc0\x00\x00\x00\xc0\x00\x10\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x01`\x00\x00\x02\x80\xff\xfa\x01\xc0\x00\x00\x01\xc0\xff\xff\x02\x00\x00\x00\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02@\xff\xff\x01\xc0\x00\x00\x01\xf0\x00\x00\x02\x00\x00\b\x00\xc0\x00\x18\x01\xc0\x00\x00\x02\x00\x00\b\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x01\xf0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01@\x00\x00\x01@\x00\x00\x01 \xff\xfd\x01@\x00\x00\x01\x80\x00\x13\x01\x80\x00\x00\x02@\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\xc0\xff\xfe\x01\xc0\xff\xfe\x02\x00\xff\xfe\x02\x00\xff\xfe\x01\xc0\xff\xfe\x01\xc0\xff\xfe\x02\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x05\x00\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x1b\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\b\x02\x00\x00\x00\x01\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x10\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x00\x02\x00\xff\xfc\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfd\x02\x00\xff\xff\x02\x00\x00\x00\x01\x80\xff\xfc\x01\xc0\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02\x00\x00\b\x02\x00\x00\a\x02\x00\x00\x00\x02\x00\x00\b\x02\x00\x00\x10\x01\xc0\x00 \x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\b\x02\x00\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x80\xff\xfa\x01\xc0\x00\x00\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02 \xff\xfd\x02\x00\x00\x00\x02@\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x80\xff\xff\x02\x00\x00\x00\x02\x00\xff\xff\x01 \x00\x00\x01\x80\x00\x00\x01 \x00\x00\x01\x80\x00\x00\x01\xe0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x01\x80\x00\x00\x01 \x00\x00\x01\xe0\x00\x00\x01 \x00\x00\x01 \x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01@\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x01\xc0\xff\xfe\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x01\xc0\xff\xfe\x01\xc0\xff\xfd\x02\x80\x00\x00\x02\x00\x00\b\x02\x80\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x01 \x00\x00\x02\x00\xff\xfa\x02@\x00\x00\x02\x00\x00\x00\x02\x00\x00\b\x02\x00\x00\b\x01\xc0\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x01\xc0\xff\xfd\x02\x00\x00\b\x01\x80\x00\x00\x02\x00\x00\x00\x01\x80\xff\xf5\x02\x80\x00\x00\x02\x00\x00\x00\x02\x80\xff\xfb\x02\x00\xff\xfc\x01\xc0\x00\x00\x02@\xff\xf9\x02\x80\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x01\xf0\x00\x00\x01\x80\x00\x00\x02@\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\xff\xfb\x02\x00\x00\x00\x01\xa0\x00\x00\x02\x00\x00\b\x01\xc0\x00\x00\x02\x00\x00\b\x01\xc0\x00\x10\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\a\x02\x00\x00\x00\x02@\x00\x00\x02\x00\xff\xff\x02\x00\xff\xff\x02\x00\xff\xff\x01\x00\x00\r\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\x00\x00\r\x01\xc0\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x01\x00\x00\r\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02@\x00\x00\x01@\xff\xfe\x01@\xff\xfe\x02@\x00\x00\x01\x80\x00\x00\x01`\x00\x00\x01@\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfa\x01\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x10\x01\xc0\x00\x00\x02@\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\xff\xfa\x01\xc0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x02\x00\x00\x00\x01@\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x00\x01@\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x02\x80\x00\x00\x01\xf0\x00\x00\x01\xa0\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfe\x01\xc0\xff\xfe\x02\x80\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x02@\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x01\x80\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x01\x80\x00\x00\x02\x80\x00\x00\x02@\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\xff\xfd\x02\x80\x00\x00\x02\x00\x00\x00\x01\xe0\xff\xfe\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x80\xff\xff\x02\x00\xff\xff\x02\x80\xff\xfa\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\xff\xff\x02@\x00\x00\x02@\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfe\x02\x00\x00\x00\x02\x80\xff\xfe\x02@\xff\xfe\x01\xc0\xff\xff\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xf0\x00\x00\x02\x80\x00\x00\x02\x80\xff\xff\x02\x80\x00\x00\x02\x80\xff\xfa\x01 \xff\xfc\x02\x80\xff\xfa\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfa\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x01\xf0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x01\x80\xff\xfe\x01\xc0\x00\x00\x02\x80\xff\xff\x02\x80\x00\x00\x02@\x00\x00\x01\x80\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfa\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x00\xff\xf8\x01\xc0\x00\x00\x01\x80\x00\x00\x02\x80\x00\x00\x01\x80\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfe\x02\x00\x00\x00\x02@\x00\x00\x01\x00\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02h\xff\xf5\x02\x80\xff\xfb\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x80\xff\xff\x01@\x00\x00\x02\x00\x00\x00\x01\xf0\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x01\x80\xff\xfe\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02@\xff\xfc\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x01\xf0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02@\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x00\xff\xff\x02@\xff\xff\x01\xf0\x00\x00\x01\xf0\x00\x00\x02\x00\xff\xfb\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf8\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x02\x00\x00\x00\x01\xf0\x00\x00\x02\x80\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xc0\x00\x00\x01@\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02 \x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf8\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x02\x80\x00\x00\x02@\x00\x00\x02@\x00\x00\x02\x00\xff\xff\x02\x00\xff\xfe\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\xff\xff\x02\x80\x00\x00\x02\x80\xff\xff\x01\x80\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfa\x01\xf0\x00\x00\x02\x80\x00\x00\x02@\x00\x00\x02\x00\xff\xf5\x02\x00\x00\x00\x02\x00\x00\x00\x02\x18\xff\xfc\x01\x80\x00\x00\x01\xf0\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfa\x01\xf0\x00\x00\x01\xc0\xff\xf6\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfc\x01 \xff\xfc\x01\x80\xff\xfd\x01\xc0\xff\xfd\x01\xc0\xff\xed\x02\x80\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x01\xe0\x00\x00\x02\x00\x00\x00\x02\x80\xff\xff\x02\x80\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xe0\xff\xff\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfe\x01\x80\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x01@\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x80\xff\xfb\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfe\x02@\x00\x10\x01\xc0\x00\x00\x02@\x00\x00\x02\x00\xff\xf4\x02\x00\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x01\xf0\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfb\x02@\x00\x00\x02\x00\x00\x00\x01\xd0\xff\xfb\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x80\xff\xff\x02\x00\x00\x00\x01\xf0\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x01\xc0\xff\xfd\x02@\x00\x00\x02\x80\x00\x00\x01\xe0\xff\xff\x01\xc0\x00\x00\x02@\x00 \x02\x80\xff\xfd\x02\x00\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x02\x80\x00\x00\x02@\x00\x00\x02@\xff\xfa\x01\x80\x00\x00\x02\x80\xff\xf2\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfa\x02\x00\x00\x00\x01\xa0\x00\x00\x02\x80\x00\x00\x01\xc0\xff\xff\x02\x80\xff\xfa\x02@\xff\xfa\x02@\xff\xff\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02\x00\xff\xff\x02@\x00\x00\x02\x80\xff\xfb\x02\x00\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x80\x00\x00\x02@\x00\x00\x01\x80\xff\xfe\x02\x00\x00\x00\x02@\xff\xff\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\xff\xfe\x02\x00\xff\xfe\x02\x00\x00\x00\x02\x00\x00\x00\x02@\xff\xff\x02\x80\xff\xff\x02\x00\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfe\x02\x00\xff\xff\x01\xf0\x00\x00\x02\x00\x00\x00\x01\x00\x00 \x02\x00\xff\xfc\x02\x00\xff\xff\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfd\x02@\x00\x00\x01\xc0\xff\xf7\x02\x00\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x02\x80\x00 \x02\x00\x00\x00\x02\x00\xff\xf9\x01\x80\x00\x00\x01\x80\x00\x00\x01\xc0\xff\xfa\x02\x00\xff\xff\x02@\x00\x00\x02\x80\x00\x00\x02\x00\xff\xff\x02\x00\xff\xff\x02\x00\x00\x00\x02\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x02\x00\xff\xff\x01\xc0\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00 \x02\x00\x00\x00\x02\x00\xff\xff\x01\xc0\x00 \x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x02\x00\xff\xff\x02\x00\x00\x00\x01\xc0\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x01\xc0\xff\xfe\x01\xc0\xff\xfe\x02\x00\xff\xfe\x02\x00\xff\xfe\x01\xc0\xff\xfe\x01\xc0\xff\xfe\x02@\x00\x00\x02\x80\x00\x00\x02\x80\x00\x00\x02\x80\xff\xfc\x01\x80\x00\x00\x02\x00\x00\b\x02\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x1c\x00\x01\x00\x00\x00\x00\n\xa4\x00\x03\x00\x01\x00\x00\x00\x1c\x00\x04\n\x88\x00\x00\x02\x9e\x02\x00\x00\b\x00\x9e\xf0\x02\xf0\x05\xf0\x0e\xf0\x13\xf0\x15\xf0\x19\xf0\x1c\xf0\x1e\xf0>\xf0D\xf0N\xf0[\xf0^\xf0n\xf0|\xf0\x80\xf0\x86\xf0\x89\xf0\x8d\xf0\x91\xf0\x95\xf0\x98\xf0\x9e\xf0\xa1\xf0\xae\xf0\xb2\xf0\xce\xf0\xd1\xf0\xde\xf0\xe0\xf0\xe3\xf0\xeb\xf0\xf4\xf0\xfe\xf1\v\xf1\x0e\xf1\x11\xf1\x1c\xf1\x1e\xf1\"\xf1.\xf11\xf15\xf1:\xf1>\xf1D\xf1F\xf1K\xf1N\xf1Y\xf1^\xf1e\xf1\x83\xf1\x88\xf1\x93\xf1\x95\xf1\x97\xf1\x99\xf1\x9d\xf1\xae\xf1\xb0\xf1\xb3\xf1\xbb\xf1\xc9\xf1\xce\xf1\xd8\xf1\xda\xf1\xde\xf1\xe6\xf1\xec\xf1\xf6\xf1\xfe\xf2\x01\xf2\a\xf2\v\xf2\x18\xf2\x1e\xf2-\xf26\xf29\xf2I\xf2N\xf2]\xf2l\xf2w\xf2z\xf2\x8b\xf2\x8d\xf2\x92\xf2\x95\xf2\x9a\xf2\x9e\xf2\xa4\xf2\xa8\xf2\xb6\xf2\xb9\xf2\xbb\xf2\xbd\xf2\xc2\xf2\xce\xf2\xd2\xf2\xdc\xf2\xe5\xf2\xe7\xf2\xea\xf2\xed\xf2\xf2\xf2\xf6\xf2\xf9\xf2\xfe\xf3\x05\xf3\f\xf3\x1e\xf3(\xf38\xf3[\xf3]\xf3`\xf3b\xf3\x82\xf3\xa5\xf3\xbf\xf3\xc1\xf3\xc5\xf3\xc9\xf3\xcd\xf3\xd1\xf3\xdd\xf3\xe0\xf3\xe5\xf3\xed\xf3\xfa\xf3\xfd\xf3\xff\xf4\x06\xf4\x10\xf4\"\xf4$\xf44\xf46\xf4:\xf4<\xf4?\xf4A\xf4C\xf4E\xf4G\xf4K\xf4N\xf4P\xf4S\xf4X\xf4]\xf4_\xf4b\xf4f\xf4m\xf4r\xf4t\xf4y\xf4\u007f\xf4\x82\xf4\x87\xf4\x8b\xf4\x8e\xf4\x94\xf4\x97\xf4\x9e\xf4\xad\xf4\xb3\xf4\xba\xf4\xbe\xf4\xc0\xf4\xc2\xf4\xc4\xf4\xce\xf4\xd3\xf4\xdb\xf4\xdf\xf4\xe3\xf5\t\xf5\x91\xf5\x9d\xf5\xa2\xf5\xa7\xf5\xb1\xf5\xb4\xf5\xb8\xf5\xbd\xf5\xc5\xf5\xcb\xf5\xce\xf5\xd2\xf5\xd7\xf5\xda\xf5\xdc\xf5\xdf\xf5\xe1\xf5\xe4\xf5\xe7\xf5\xeb\xf5\xee\xf5\xfd\xf6\x10\xf6\x13\xf6\x19\xf6\x1f\xf6!\xf60\xf67\xf6<\xf6A\xf6D\xf6G\xf6J\xf6O\xf6Q\xf6U\xf6X\xf6^\xf6b\xf6f\xf6k\xf6m\xf6o\xf6t\xf6v\xf6y\xf6|\xf6\u007f\xf6\x84\xf6\x89\xf6\x96\xf6\x9b\xf6\xa1\xf6\xa7\xf6\xa9\xf6\xad\xf6\xb7\xf6\xbb\xf6\xbe\xf6\xc0\xf6\xc4\xf6\xcf\xf6\xd1\xf6\xd3\xf6\xd5\xf6\xd7\xf6\xd9\xf6\xde\xf6\xe3\xf6\xe6\xf6\xe8\xf6\xed\xf6\xf2\xf6\xfa\xf6\xfc\xf7\x00\xf7\f\xf7\x0e\xf7\x15\xf7\x17\xf7\x1e\xf7\"\xf7)\xf7/\xf7=\xf7@\xf7C\xf7G\xf7M\xf7S\xf7V\xf7[\xf7_\xf7i\xf7k\xf7s\xf7}\xf7\x81\xf7\x84\xf7\x88\xf7\x8c\xf7\x94\xf7\x96\xf7\x9c\xf7\xa0\xf7\xa2\xf7\xa6\xf7\xab\xf7\xae\xf7\xb6\xf7\xba\xf7\xbd\xf7\xc0\xf7\xc2\xf7\xc5\xf7\xca\xf7\xce\xf7\xd0\xf7\xd2\xf7\xda\xf7\xe6\xf7\xec\xf7\xef\xf7\xf2\xf7\xf5\xf7\xf7\xf7\xfb\xf8\a\xf8\x10\xf8\x12\xf8\x16\xf8\x18\xf8*\xf8/\xf8>\xf8J\xf8L\xf8P\xf8S\xf8c\xf8m\xf8y\xf8}\xf8\x82\xf8\x87\xf8\x91\xf8\x97\xf8\xc1\xf8\xcc\xf8\xd9\xf8\xff\xf9A\xff\xff\x00\x00\xf0\x00\xf0\x04\xf0\a\xf0\x10\xf0\x15\xf0\x17\xf0\x1c\xf0\x1e\xf0!\xf0A\xf0H\xf0P\xf0^\xf0`\xf0p\xf0\x80\xf0\x83\xf0\x89\xf0\x8d\xf0\x91\xf0\x93\xf0\x98\xf0\x9c\xf0\xa0\xf0\xa3\xf0\xb0\xf0\xc0\xf0\xd0\xf0\xd6\xf0\xe0\xf0\xe2\xf0\xe7\xf0\xf0\xf0\xf8\xf1\x00\xf1\r\xf1\x10\xf1\x18\xf1\x1e\xf1 \xf1$\xf10\xf13\xf17\xf1=\xf1@\xf1F\xf1J\xf1M\xf1P\xf1[\xf1`\xf1\x82\xf1\x85\xf1\x91\xf1\x95\xf1\x97\xf1\x99\xf1\x9c\xf1\xab\xf1\xb0\xf1\xb2\xf1\xb8\xf1\xc0\xf1\xcd\xf1\xd8\xf1\xda\xf1\xdc\xf1\xe0\xf1\xea\xf1\xf6\xf1\xf8\xf2\x00\xf2\x04\xf2\n\xf2\x17\xf2\x1a\xf2!\xf23\xf28\xf2@\xf2M\xf2Q\xf2l\xf2q\xf2y\xf2\x8b\xf2\x8d\xf2\x90\xf2\x95\xf2\x9a\xf2\x9d\xf2\xa0\xf2\xa7\xf2\xb5\xf2\xb9\xf2\xbb\xf2\xbd\xf2\xc1\xf2\xc7\xf2\xd0\xf2\xdb\xf2\xe5\xf2\xe7\xf2\xea\xf2\xed\xf2\xf1\xf2\xf5\xf2\xf9\xf2\xfe\xf3\x02\xf3\t\xf3\x1e\xf3(\xf37\xf3X\xf3]\xf3`\xf3b\xf3\x81\xf3\xa5\xf3\xbe\xf3\xc1\xf3\xc5\xf3\xc9\xf3\xcd\xf3\xd1\xf3\xdd\xf3\xe0\xf3\xe5\xf3\xed\xf3\xfa\xf3\xfd\xf3\xff\xf4\x06\xf4\x10\xf4\"\xf4$\xf43\xf46\xf49\xf4<\xf4?\xf4A\xf4C\xf4E\xf4G\xf4K\xf4N\xf4P\xf4S\xf4X\xf4\\\xf4_\xf4a\xf4f\xf4h\xf4p\xf4t\xf4w\xf4}\xf4\x81\xf4\x84\xf4\x8b\xf4\x8d\xf4\x90\xf4\x96\xf4\x9e\xf4\xad\xf4\xb3\xf4\xb8\xf4\xbd\xf4\xc0\xf4\xc2\xf4\xc4\xf4\xcd\xf4\xd3\xf4\xd6\xf4\xde\xf4\xe2\xf4\xfa\xf5\x15\xf5\x93\xf5\x9f\xf5\xa4\xf5\xaa\xf5\xb3\xf5\xb6\xf5\xba\xf5\xbf\xf5\xc7\xf5\xcd\xf5\xd0\xf5\xd7\xf5\xda\xf5\xdc\xf5\xde\xf5\xe1\xf5\xe4\xf5\xe7\xf5\xeb\xf5\xee\xf5\xfc\xf6\x10\xf6\x13\xf6\x19\xf6\x1f\xf6!\xf6.\xf67\xf6;\xf6A\xf6D\xf6G\xf6J\xf6O\xf6Q\xf6S\xf6X\xf6]\xf6b\xf6d\xf6i\xf6m\xf6o\xf6t\xf6v\xf6x\xf6{\xf6\u007f\xf6\x81\xf6\x87\xf6\x96\xf6\x98\xf6\xa0\xf6\xa7\xf6\xa9\xf6\xad\xf6\xb6\xf6\xbb\xf6\xbe\xf6\xc0\xf6\xc3\xf6\xcf\xf6\xd1\xf6\xd3\xf6\xd5\xf6\xd7\xf6\xd9\xf6\xdd\xf6\xe2\xf6\xe6\xf6\xe8\xf6\xec\xf6\xf0\xf6\xfa\xf6\xfc\xf6\xff\xf7\v\xf7\x0e\xf7\x14\xf7\x17\xf7\x1e\xf7\"\xf7(\xf7.\xf7;\xf7@\xf7C\xf7G\xf7M\xf7S\xf7V\xf7Z\xf7^\xf7i\xf7k\xf7r\xf7|\xf7\x80\xf7\x83\xf7\x86\xf7\x8c\xf7\x93\xf7\x96\xf7\x9c\xf7\x9f\xf7\xa2\xf7\xa4\xf7\xa9\xf7\xad\xf7\xb5\xf7\xb9\xf7\xbd\xf7\xbf\xf7\xc2\xf7\xc4\xf7\xc9\xf7\xcc\xf7\xd0\xf7\xd2\xf7\xd7\xf7\xe4\xf7\xec\xf7\xef\xf7\xf2\xf7\xf5\xf7\xf7\xf7\xfb\xf8\x05\xf8\x0f\xf8\x12\xf8\x15\xf8\x18\xf8)\xf8/\xf8>\xf8J\xf8L\xf8P\xf8S\xf8c\xf8m\xf8y\xf8{\xf8\x81\xf8\x84\xf8\x91\xf8\x97\xf8\xc0\xf8\xcc\xf8\xd9\xf8\xff\xf9A\xff\xff\x10\x03\x10\x02\x10\x01\x10\x00\x0f\xff\x0f\xfe\x0f\xfc\x0f\xfb\x0f\xf9\x0f\xf7\x0f\xf4\x0f\xf3\x0f\xf1\x0f\xf0\x0f\xef\x0f\xec\x0f\xea\x0f\xe8\x0f\xe5\x0f\xe2\x0f\xe1\x0f\xdf\x0f\xdc\x0f\xdb\x0f\xda\x0f\xd9\x0f\xcc\x0f\xcb\x0f\xc7\x0f\xc6\x0f\xc5\x0f\xc2\x0f\xbe\x0f\xbb\x0f\xba\x0f\xb9\x0f\xb8\x0f\xb2\x0f\xb1\x0f\xb0\x0f\xaf\x0f\xae\x0f\xad\x0f\xac\x0f\xaa\x0f\xa9\x0f\xa8\x0f\xa5\x0f\xa4\x0f\xa3\x0f\xa2\x0f\xa1\x0f\x85\x0f\x84\x0f|\x0f{\x0fz\x0fy\x0fw\x0fj\x0fi\x0fh\x0fd\x0f`\x0f]\x0fT\x0fS\x0fR\x0fQ\x0fN\x0fE\x0fD\x0fC\x0fA\x0f?\x0f4\x0f3\x0f1\x0f,\x0f+\x0f%\x0f\"\x0f \x0f\x12\x0f\x0e\x0f\r\x0e\xfd\x0e\xfc\x0e\xfa\x0e\xf8\x0e\xf4\x0e\xf2\x0e\xf1\x0e\xef\x0e\xe3\x0e\xe1\x0e\xe0\x0e\xdf\x0e\xdc\x0e\xd8\x0e\xd7\x0e\xcf\x0e\xc7\x0e\xc6\x0e\xc4\x0e\xc2\x0e\xbf\x0e\xbd\x0e\xbb\x0e\xb7\x0e\xb4\x0e\xb1\x0e\xa0\x0e\x97\x0e\x89\x0ej\x0ei\x0eg\x0ef\x0eH\x0e&\x0e\x0e\x0e\r\x0e\n\x0e\a\x0e\x04\x0e\x01\r\xf6\r\xf4\r\xf0\r\xe9\r\xdd\r\xdb\r\xda\r\xd4\r\xcb\r\xba\r\xb9\r\xab\r\xaa\r\xa8\r\xa7\r\xa5\r\xa4\r\xa3\r\xa2\r\xa1\r\x9e\r\x9c\r\x9b\r\x99\r\x95\r\x92\r\x91\r\x90\r\x8d\r\x8c\r\x8a\r\x89\r\x87\r\x84\r\x83\r\x82\r\u007f\r~\r}\r|\rv\rh\rc\r_\r]\r\\\r[\rZ\rR\rN\rL\rJ\rH\r2\r'\r&\r%\r$\r\"\r!\r \r\x1f\r\x1e\r\x1d\r\x1c\r\x1b\r\x17\r\x15\r\x14\r\x13\r\x12\r\x10\r\x0e\r\v\r\t\f\xfc\f\xea\f\xe8\f\xe3\f\xde\f\xdd\f\xd1\f\xcb\f\xc8\f\xc4\f\xc2\f\xc0\f\xbe\f\xba\f\xb9\f\xb8\f\xb6\f\xb2\f\xaf\f\xae\f\xac\f\xab\f\xaa\f\xa6\f\xa5\f\xa4\f\xa3\f\xa1\f\xa0\f\x9e\f\x92\f\x91\f\x8d\f\x88\f\x87\f\x84\f|\fy\fw\fv\ft\fj\fi\fh\fg\ff\fe\fb\f_\f]\f\\\fY\fW\fP\fO\fM\fC\fB\f=\f<\f6\f3\f.\f*\f\x1f\f\x1d\f\x1b\f\x18\f\x13\f\x0e\f\f\f\t\f\a\v\xfe\v\xfd\v\xf7\v\xef\v\xed\v\xec\v\xeb\v\xe8\v\xe2\v\xe1\v\xdc\v\xda\v\xd9\v\xd8\v\xd6\v\xd5\v\xcf\v\xcd\v\xcb\v\xca\v\xc9\v\xc8\v\xc5\v\xc4\v\xc3\v\xc2\v\xbe\v\xb5\v\xb0\v\xae\v\xac\v\xaa\v\xa9\v\xa6\v\x9d\v\x96\v\x95\v\x93\v\x92\v\x82\v~\vp\ve\vd\va\v_\vP\vG\v<\v;\v8\v7\v.\v)\v\x01\n\xf7\n\xeb\n\xc6\n\x85\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x02\n\x00\x00\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00L\x00\x00\x00\xb0\x00\x00\x01\x18\x00\x00\x01`\x00\x00\x01\xbc\x00\x00\x02\x14\x00\x00\x03d\x00\x00\x04\x10\x00\x00\x05\x88\x00\x00\x06\x88\x00\x00\x06\xd4\x00\x00\aH\x00\x00\a\xec\x00\x00\bp\x00\x00\t\x18\x00\x00\t\xf0\x00\x00\n\xc4\x00\x00\v\x84\x00\x00\v\xd4\x00\x00\f\x90\x00\x00\r<\x00\x00\r\xa0\x00\x00\x0eD\x00\x00\x0f$\x00\x00\x0f\xf0\x00\x00\x10L\x00\x00\x10\xc0\x00\x00\x11H\x00\x00\x11\x84\x00\x00\x11\xf8\x00\x00\x12\xf0\x00\x00\x13p\x00\x00\x14<\x00\x00\x14\x90\x00\x00\x15\x14\x00\x00\x15\xb0\x00\x00\x15\xdc\x00\x00\x16|\x00\x00\x16\xfc\x00\x00\x17\x84\x00\x00\x18\b\x00\x00\x18p\x00\x00\x198\x00\x00\x19\xfc\x00\x00\x1a\xac\x00\x00\x1b\\\x00\x00\x1c\f\x00\x00\x1c\xbc\x00\x00\x1d\xbc\x00\x00\x1e\x8c\x00\x00\x1f\\\x00\x00\x1f\xb4\x00\x00 (\x00\x00 p\x00\x00 \xa4\x00\x00!\f\x00\x00!\xbc\x00\x00\"\x00\x00\x00\"\\\x00\x00\"\xb0\x00\x00\"\xe4\x00\x00#D\x00\x00#|\x00\x00#\xd0\x00\x00$0\x00\x00$x\x00\x00$\xd4\x00\x00% \x00\x00%l\x00\x00%\xcc\x00\x00&\f\x00\x00&\x88\x00\x00&\xe0\x00\x00'x\x00\x00'\xe8\x00\x00(\xcc\x00\x00) \x00\x00)\x84\x00\x00)\xe8\x00\x00*H\x00\x00*\xac\x00\x00+\x10\x00\x00+\xb8\x00\x00,`\x00\x00,\xc0\x00\x00,\xf8\x00\x00-\xa8\x00\x00.\b\x00\x00.\xc4\x00\x00/<\x00\x00/\xa0\x00\x000,\x00\x001\b\x00\x001t\x00\x001\xf4\x00\x003\x04\x00\x003\xb0\x00\x003\xf8\x00\x004\xa4\x00\x004\xf0\x00\x005<\x00\x006\x00\x00\x006\x88\x00\x006\xc4\x00\x0070\x00\x008\f\x00\x008\xe0\x00\x009\\\x00\x00;\xe0\x00\x00\x8c\x00\x00?8\x00\x00?\x90\x00\x00@\x1c\x00\x00@\x88\x00\x00A\x04\x00\x00A\x94\x00\x00B$\x00\x00B\xb8\x00\x00C|\x00\x00D4\x00\x00D\xe8\x00\x00E\xa0\x00\x00FT\x00\x00F\xc8\x00\x00G<\x00\x00G\xb0\x00\x00H$\x00\x00H\xf0\x00\x00Ip\x00\x00J\x8c\x00\x00J\xcc\x00\x00KD\x00\x00K\xec\x00\x00L\xb8\x00\x00M\xa4\x00\x00M\xfc\x00\x00Nh\x00\x00O\x10\x00\x00O\x90\x00\x00P0\x00\x00P\xac\x00\x00P\xe4\x00\x00Ql\x00\x00R8\x00\x00S\xc0\x00\x00T\xa8\x00\x00UP\x00\x00U\xb8\x00\x00VT\x00\x00W\x00\x00\x00W\x88\x00\x00W\xbc\x00\x00W\xf0\x00\x00X$\x00\x00XT\x00\x00X\xa8\x00\x00X\xfc\x00\x00Y,\x00\x00Y\\\x00\x00Z\x04\x00\x00Z\x80\x00\x00[,\x00\x00[\x84\x00\x00\\\\\x00\x00] \x00\x00]\xc0\x00\x00^L\x00\x00_@\x00\x00`\x18\x00\x00`\x84\x00\x00a\x04\x00\x00a\x80\x00\x00b\x8c\x00\x00cp\x00\x00d8\x00\x00d\xb4\x00\x00eX\x00\x00e\xe4\x00\x00fX\x00\x00f\xe0\x00\x00gl\x00\x00g\xf8\x00\x00h|\x00\x00h\xc8\x00\x00i\x10\x00\x00i\\\x00\x00i\xa4\x00\x00j\x14\x00\x00j\x8c\x00\x00j\xdc\x00\x00k,\x00\x00k\xc0\x00\x00lX\x00\x00m\x04\x00\x00m(\x00\x00m\xac\x00\x00n(\x00\x00n\x8c\x00\x00o0\x00\x00p\xb0\x00\x00q\xb0\x00\x00r$\x00\x00r\xc0\x00\x00sT\x00\x00s\x94\x00\x00t,\x00\x00u\x14\x00\x00u\xe0\x00\x00vt\x00\x00v\xe0\x00\x00w,\x00\x00x\b\x00\x00x\xe0\x00\x00y<\x00\x00z\f\x00\x00z\xac\x00\x00{t\x00\x00{\xec\x00\x00|\xa0\x00\x00}<\x00\x00}\x9c\x00\x00}\xfc\x00\x00~\\\x00\x00~\xc0\x00\x00\u007f\x94\x00\x00\x80\x1c\x00\x00\x80\x84\x00\x00\x80\xd4\x00\x00\x81$\x00\x00\x81\xd0\x00\x00\x82\x1c\x00\x00\x82t\x00\x00\x82\xe0\x00\x00\x83l\x00\x00\x84(\x00\x00\x84\x94\x00\x00\x84\xf0\x00\x00\x85H\x00\x00\x85\xa4\x00\x00\x86d\x00\x00\x86\xf0\x00\x00\x87\xa8\x00\x00\x884\x00\x00\x88\xcc\x00\x00\x89L\x00\x00\x8ah\x00\x00\x8a\xbc\x00\x00\x8b`\x00\x00\x8cD\x00\x00\x8d(\x00\x00\x8e\x10\x00\x00\x8e\xf8\x00\x00\x8f\xe4\x00\x00\x90\xd0\x00\x00\x91\x94\x00\x00\x92\\\x00\x00\x92\xcc\x00\x00\x934\x00\x00\x93\xe8\x00\x00\x94<\x00\x00\x94\xa8\x00\x00\x95h\x00\x00\x95\xc4\x00\x00\x96\x00\x00\x00\x96\xc8\x00\x00\x97h\x00\x00\x98\b\x00\x00\x98\xbc\x00\x00\x99T\x00\x00\x99\xec\x00\x00\x9b\x10\x00\x00\x9c0\x00\x00\x9d \x00\x00\x9d\x9c\x00\x00\x9ed\x00\x00\x9e\xcc\x00\x00\x9f\x80\x00\x00\xa0\x80\x00\x00\xa1\x88\x00\x00\xa2X\x00\x00\xa2\xe8\x00\x00\xa3T\x00\x00\xa4H\x00\x00\xa5\x10\x00\x00\xa5\xc4\x00\x00\xa6l\x00\x00\xa6\xf8\x00\x00\xa7\xcc\x00\x00\xa8\xa0\x00\x00\xa98\x00\x00\xaaD\x00\x00\xaa\xd0\x00\x00\xab@\x00\x00\xab\x98\x00\x00\xac<\x00\x00\xac\xf8\x00\x00\xadX\x00\x00\xaed\x00\x00\xae\xd4\x00\x00\xafp\x00\x00\xb0`\x00\x00\xb0\xf0\x00\x00\xb2\xa0\x00\x00\xb3X\x00\x00\xb3\xd4\x00\x00\xb4\xb0\x00\x00\xb5D\x00\x00\xb6h\x00\x00\xb7\x14\x00\x00\xb7\x80\x00\x00\xb8$\x00\x00\xb8\xec\x00\x00\xb9d\x00\x00\xb9\xe4\x00\x00\xba\xc8\x00\x00\xbb$\x00\x00\xbb\x9c\x00\x00\xbc8\x00\x00\xbc\x98\x00\x00\xbc\xdc\x00\x00\xbe\x04\x00\x00\xbe\xe4\x00\x00\xbf\xa8\x00\x00\xc0D\x00\x00\xc14\x00\x00\xc2\x00\x00\x00\xc2\xc0\x00\x00\xc3\xc0\x00\x00\xc4\xf4\x00\x00Ũ\x00\x00\xc60\x00\x00Ƥ\x00\x00\xc7\f\x00\x00\xc7\xc4\x00\x00\xc8`\x00\x00\xc9T\x00\x00\xca4\x00\x00\xcb\x14\x00\x00\xcb\xec\x00\x00̌\x00\x00\xcd \x00\x00ͨ\x00\x00\xcd\xfc\x00\x00\xce8\x00\x00\xcfH\x00\x00\xcf\xf4\x00\x00Р\x00\x00\xd1\x18\x00\x00Ѩ\x00\x00\xd2t\x00\x00\xd2\xe4\x00\x00\xd3T\x00\x00\xd3\xc4\x00\x00\xd40\x00\x00Ԕ\x00\x00\xd4\xe4\x00\x00ՠ\x00\x00\xd6P\x00\x00\xd7$\x00\x00\xd7x\x00\x00\xd7\xe0\x00\x00\xd8\xf4\x00\x00ـ\x00\x00\xda \x00\x00ڬ\x00\x00\xdb(\x00\x00\xdb\xd0\x00\x00\xdcl\x00\x00\xdc\xf4\x00\x00\xddd\x00\x00\xde8\x00\x00\xde\xdc\x00\x00\xdf`\x00\x00\xe0(\x00\x00\xe0\xa4\x00\x00\xe1\x18\x00\x00\xe1\xcc\x00\x00\xe2`\x00\x00\xe30\x00\x00\xe3\xdc\x00\x00\xe40\x00\x00\xe4\x90\x00\x00\xe54\x00\x00\xe5\x94\x00\x00\xe5\xdc\x00\x00\xe6P\x00\x00\xe6\x9c\x00\x00\xe7\x18\x00\x00\xe7\xf8\x00\x00\xe8\xc4\x00\x00\xe9T\x00\x00\xea0\x00\x00\xea\xf8\x00\x00\xeb\xc4\x00\x00\xec\xc4\x00\x00\xed\xe0\x00\x00\xee\xf8\x00\x00\xf0\x84\x00\x00\xf1p\x00\x00\xf2\xa4\x00\x00\xf3|\x00\x00\xf4\x84\x00\x00\xf5L\x00\x00\xf6\x00\x00\x00\xf6\xd0\x00\x00\xf78\x00\x00\xf7\xd8\x00\x00\xf8\xb8\x00\x00\xf9l\x00\x00\xfa \x00\x00\xfa\xd4\x00\x00\xfb\x88\x00\x00\xfc(\x00\x00\xfe\f\x00\x00\xfe\xe0\x00\x00\xff\xe8\x00\x01\x008\x00\x01\x00p\x00\x01\x00\xec\x00\x01\x02<\x00\x01\x04(\x00\x01\x04x\x00\x01\x05(\x00\x01\x05\xa0\x00\x01\x06h\x00\x01\a\x14\x00\x01\a\x9c\x00\x01\b$\x00\x01\b\xa8\x00\x01\t\x1c\x00\x01\t\xf0\x00\x01\n\x90\x00\x01\v \x00\x01\vl\x00\x01\v\xe4\x00\x01\f$\x00\x01\fd\x00\x01\f\xac\x00\x01\f\xf0\x00\x01\r\x9c\x00\x01\x0e\x14\x00\x01\x0ep\x00\x01\x0e\xc8\x00\x01\x0f \x00\x01\x0ft\x00\x01\x0f\xc8\x00\x01\x10\x1c\x00\x01\x10\xb4\x00\x01\x11(\x00\x01\x11\xac\x00\x01\x128\x00\x01\x12\xc8\x00\x01\x138\x00\x01\x13\x8c\x00\x01\x13\xe0\x00\x01\x14L\x00\x01\x14\xac\x00\x01\x15|\x00\x01\x15\xe8\x00\x01\x16\xb8\x00\x01\x17H\x00\x01\x17\xc8\x00\x01\x180\x00\x01\x18\x98\x00\x01\x19\b\x00\x01\x1a\x00\x00\x01\x1a\x88\x00\x01\x1a\xe0\x00\x01\x1bp\x00\x01\x1b\xf0\x00\x01\x1cp\x00\x01\x1d\b\x00\x01\x1d\xb0\x00\x01\x1e\x18\x00\x01\x1f|\x00\x01 \x10\x00\x01!\x8c\x00\x01\"\x1c\x00\x01\"\xd4\x00\x01#`\x00\x01$4\x00\x01$\xd8\x00\x01%\xac\x00\x01&\xbc\x00\x01'|\x00\x01'\xbc\x00\x01(l\x00\x01(\x88\x00\x01)\f\x00\x01)\xe0\x00\x01+\x18\x00\x01+\xc4\x00\x01, \x00\x01,\xc8\x00\x01-\\\x00\x01-\xa0\x00\x01.4\x00\x01.\xc4\x00\x01/\xb4\x00\x010\xc4\x00\x011\xac\x00\x012p\x00\x013 \x00\x013\xb0\x00\x014L\x00\x014\xd8\x00\x016\x04\x00\x016d\x00\x017\b\x00\x017\xbc\x00\x018h\x00\x018\xe8\x00\x019l\x00\x019\xfc\x00\x01:\xc0\x00\x01;\xb0\x00\x01<\x98\x00\x01=d\x00\x01>\x00\x00\x01>\x88\x00\x01>\xe8\x00\x01?\x90\x00\x01@@\x00\x01@\xd8\x00\x01B\f\x00\x01B\xa4\x00\x01C,\x00\x01C\xa8\x00\x01DD\x00\x01E\\\x00\x01E\xf8\x00\x01Fh\x00\x01G\x14\x00\x01H@\x00\x01I\f\x00\x01I\xc4\x00\x01J\\\x00\x01K\xa8\x00\x01L\x98\x00\x01M(\x00\x01M\xe8\x00\x01N<\x00\x01N\xb0\x00\x01OH\x00\x01O\xb0\x00\x01PT\x00\x01Q \x00\x01Q\xa4\x00\x01R\x00\x00\x01Rp\x00\x01S|\x00\x01T\x04\x00\x01T\x94\x00\x01U\xf0\x00\x01V\x88\x00\x01W(\x00\x01W\xd4\x00\x01X\x90\x00\x01Y\f\x00\x01Y\x94\x00\x01Z<\x00\x01Z\xb0\x00\x01[l\x00\x01[\xcc\x00\x01]p\x00\x01^\x80\x00\x01_\x88\x00\x01`8\x00\x01`\xac\x00\x01a\xec\x00\x01bx\x00\x01b\xe0\x00\x01cx\x00\x01d$\x00\x01d\xd4\x00\x01e8\x00\x01e\xd0\x00\x01f|\x00\x01gh\x00\x01h\x10\x00\x01h\xa4\x00\x01h\xf4\x00\x01i\xb4\x00\x01j0\x00\x01j\x94\x00\x01j\xf4\x00\x01kX\x00\x01k\xd8\x00\x01l8\x00\x01l\xb0\x00\x01mp\x00\x01n,\x00\x01o@\x00\x01o\x98\x00\x01p\x18\x00\x01p\xc8\x00\x01qH\x00\x01r\x04\x00\x01r\\\x00\x01r\xd8\x00\x01s\x9c\x00\x01t\x84\x00\x01uL\x00\x01u\xc4\x00\x01v\x84\x00\x01w\xa8\x00\x01x<\x00\x01x\xe0\x00\x01y\\\x00\x01y\xc8\x00\x01zX\x00\x01{$\x00\x01{\xf8\x00\x01|\xb4\x00\x01}d\x00\x01}\xec\x00\x01~`\x00\x01\u007f\x14\x00\x01\u007fh\x00\x01\x80\b\x00\x01\x80\xac\x00\x01\x81\x84\x00\x01\x82 \x00\x01\x82\x98\x00\x01\x83 \x00\x01\x85T\x00\x01\x86\x18\x00\x01\x86\x94\x00\x01\x87x\x00\x01\x87\xe8\x00\x01\x88\xd4\x00\x01\x89\\\x00\x01\x8aD\x00\x01\x8b\xc8\x00\x01\x8c`\x00\x01\x8d`\x00\x01\x8e\x10\x00\x01\x8e|\x00\x01\x8f\x80\x00\x01\x90|\x00\x01\x91\x04\x00\x01\x91\x88\x00\x01\x92\x00\x00\x01\x92\xc4\x00\x01\x93\x80\x00\x01\x94\b\x00\x01\x95\f\x00\x01\x95\xe0\x00\x01\x96\xb8\x00\x01\x97\x90\x00\x01\x988\x00\x01\x98\xa8\x00\x01\x99\xa4\x00\x01\x9a0\x00\x01\x9a\xc4\x00\x01\x9bX\x00\x01\x9c0\x00\x01\x9dT\x00\x01\x9e0\x00\x01\x9f\x18\x00\x01\x9f\xa4\x00\x01\xa0(\x00\x01\xa0\xc8\x00\x01\xa2t\x00\x01\xa2\xe8\x00\x01\xa3x\x00\x01\xa3\xf8\x00\x01\xa4P\x00\x01\xa5t\x00\x01\xa6\xb4\x00\x01\xa7\xe0\x00\x01\xa8\xb8\x00\x01\xa94\x00\x01\xa9\xdc\x00\x01\xaa\x94\x00\x01\xab\x88\x00\x01\xacL\x00\x01\xac\xf0\x00\x01\xae\x14\x00\x01\xae\xf8\x00\x01\xb00\x00\x01\xb1\f\x00\x01\xb2\f\x00\x01\xb3 \x00\x01\xb3\xbc\x00\x01\xb4\xb0\x00\x01\xb5\xac\x00\x01\xb6X\x00\x01\xb7\x10\x00\x01\xb7x\x00\x01\xb8\xac\x00\x01\xba$\x00\x01\xbb\b\x00\x01\xbb\xac\x00\x01\xbc\x88\x00\x01\xbd\xb0\x00\x01\xbe(\x00\x01\xbe\xe4\x00\x01\xbf\x88\x00\x01\xc0 \x00\x01\xc0\xf8\x00\x01\xc1\x90\x00\x01\xc2<\x00\x01°\x00\x01\xc3\\\x00\x01ì\x00\x01\xc4@\x00\x01\xc4\xc4\x00\x01\xc5H\x00\x01\xc5\xcc\x00\x01Ƭ\x00\x01\xc7\x18\x00\x01ǘ\x00\x01\xc8P\x00\x01\xc8\xe0\x00\x01\xc9x\x00\x01\xca\x14\x00\x01\xca\xec\x00\x01\xcb|\x00\x01\xcc$\x00\x01\xcc\xe0\x00\x01͔\x00\x01\xce\\\x00\x01\xce\xe8\x00\x01\xcf`\x00\x01\xd0L\x00\x01\xd0\xc8\x00\x01\xd1L\x00\x01\xd2\x04\x00\x01\xd2l\x00\x01\xd3\x14\x00\x01\xd4\x18\x00\x01\xd5,\x00\x01՜\x00\x01\xd6D\x00\x01\xd6\xec\x00\x01\u05cc\x00\x01\xd8l\x00\x01\xd8\xe0\x00\x01\xd9H\x00\x01\xd9\xf0\x00\x01ڜ\x00\x01\xdb\xcc\x00\x01ܠ\x00\x01\xdd(\x00\x01\xdd\xf8\x00\x01\xde\xe8\x00\x01ߤ\x00\x01\xe1\x84\x00\x01\xe24\x00\x01\xe3H\x00\x01\xe3\xc0\x00\x01\xe4\xd0\x00\x01\xe5\xac\x00\x01\xe6L\x00\x01\xe7\b\x00\x01\xe7\xc0\x00\x01\xe8H\x00\x01\xe8\xc0\x00\x01\xe9h\x00\x01\xea\xb8\x00\x01\xec0\x00\x01\xed|\x00\x01\xeeD\x00\x01\xf0\xbc\x00\x01\xf1\x8c\x00\x01\xf2d\x00\x01\xf2\xe8\x00\x01\xf3\x9c\x00\x01\xf4P\x00\x01\xf5\xf0\x00\x01\xf6\xdc\x00\x01\xf7\xfc\x00\x01\xf8`\x00\x01\xfa\x10\x00\x01\xfa\xf0\x00\x01\xfbT\x00\x01\xfb\xe4\x00\x01\xfc\xe4\x00\x01\xfe\x04\x00\x01\xfe\xc8\x00\x01\xff\xa0\x00\x02\x01\f\x00\x02\x02\xb4\x00\x02\x03\xc0\x00\x02\x050\x00\x02\x05\xc8\x00\x02\x06\x9c\x00\x02\bl\x00\x02\tH\x00\x02\n\xb0\x00\x02\f\xa8\x00\x02\r\x14\x00\x02\r\xa0\x00\x02\x0eP\x00\x02\x0f\x00\x00\x02\x0f\x84\x00\x02\x10h\x00\x02\x11T\x00\x02\x12\\\x00\x02\x13\f\x00\x02\x13\xac\x00\x02\x14d\x00\x02\x15\x10\x00\x02\x15\xc0\x00\x02\x16\x8c\x00\x02\x17\xac\x00\x02\x18T\x00\x02\x19$\x00\x02\x19\xb8\x00\x02\x1a,\x00\x02\x1b\f\x00\x02\x1c\x1c\x00\x02\x1c\x90\x00\x02\x1dT\x00\x02\x1d\xec\x00\x02\x1e\x9c\x00\x02\x1f\x90\x00\x02 \x8c\x00\x02!\x04\x00\x02!\xac\x00\x02\"\x88\x00\x02#\x18\x00\x02%\x04\x00\x02& \x00\x02'H\x00\x02'\xdc\x00\x02(d\x00\x02*\x90\x00\x02+\x1c\x00\x02,\b\x00\x02,\xc4\x00\x02-\xa8\x00\x02.H\x00\x02/@\x00\x02/\xd0\x00\x020$\x00\x021\x04\x00\x021\xd8\x00\x0228\x00\x023\b\x00\x023\x80\x00\x024`\x00\x024\x98\x00\x026\x14\x00\x026\xf0\x00\x028D\x00\x028\xfc\x00\x029\x84\x00\x02:\x84\x00\x02:\xf8\x00\x02;\xf0\x00\x02=0\x00\x02>\b\x00\x02?4\x00\x02@\xb8\x00\x02BX\x00\x02C\xbc\x00\x02D\x94\x00\x02E\xa8\x00\x02F\x80\x00\x02Gp\x00\x02H\xe0\x00\x02I\xa4\x00\x02J`\x00\x02K\x1c\x00\x02K\xc8\x00\x02ML\x00\x02N\x10\x00\x02N\xd4\x00\x02P(\x00\x02P\xf8\x00\x02Q\x90\x00\x02R(\x00\x02S\f\x00\x02S\xa0\x00\x02UP\x00\x02VP\x00\x02W\x14\x00\x02X(\x00\x02X\xac\x00\x02Y\xf8\x00\x02Z\xd0\x00\x02[$\x00\x02\\\xa4\x00\x02]\x04\x00\x02]d\x00\x02^\f\x00\x02^h\x00\x02_\xa8\x00\x02`P\x00\x02`\xb0\x00\x02a\\\x00\x02a\xc4\x00\x02b\x88\x00\x02c$\x00\x02c\xec\x00\x02d\xdc\x00\x02e\xb8\x00\x02f\x94\x00\x02f\xe8\x00\x02g\x80\x00\x02hh\x00\x02iD\x00\x02j0\x00\x02j\xec\x00\x02l \x00\x02m \x00\x02n\x94\x00\x02o\xc4\x00\x02p\x1c\x00\x02p\xbc\x00\x02q\x8c\x00\x02rD\x00\x02r\xb0\x00\x02s\xb0\x00\x02tL\x00\x02t\x9c\x00\x02t\xe0\x00\x02u\xa4\x00\x02v$\x00\x02v\xc0\x00\x02v\xf0\x00\x02w\xac\x00\x02xX\x00\x02x\xc4\x00\x02y\xd4\x00\x02z4\x00\x02z\xe4\x00\x02{x\x00\x02|\f\x00\x02|\xb8\x00\x02}X\x00\x02}\xf8\x00\x02~\xb0\x00\x02\u007f(\x00\x02\u007f\xf8\x00\x02\x80`\x00\x02\x83\x9c\x00\x02\x84\xf0\x00\x02\x85\x80\x00\x02\x86\xb0\x00\x02\x87 \x00\x02\x87\xb0\x00\x02\x88\xac\x00\x02\x89`\x00\x02\x8a@\x00\x02\x8b$\x00\x02\x8c\b\x00\x02\x8c\xf0\x00\x02\x8d\xdc\x00\x02\x8e\xc8\x00\x02\x8f\xcc\x00\x02\x90D\x00\x02\x90\xdc\x00\x02\x91h\x00\x02\x91\xb4\x00\x02\x92\x1c\x00\x02\x92\xdc\x00\x02\x93\xc4\x00\x01\xff\xfa\xff\xc0\x02\x06\x01\xc0\x00\x17\x00\x00\x01\a\x1532\x16\x15\x14+\x01\"546;\x015'&63!2\x16\x01\xf6\xd68\x11\x17\b\xf0\b\x17\x118\xd6\x10\x11\x17\x01\xbc\x17\x11\x01\x86\xd6\xc0\x17\x11\b\b\x11\x17\xc0\xd6\x10**\x00\x00\x00\x00\x01\x00\x00\xff\xc0\x02\x00\x01\xc0\x00 \x00\x00\x01632\x1e\x01\x15\x11\x14\x06\"&4632\x175\x05\x15\x14\x06\"&4632\x17\x11467\x01\xd6\x05\x05\t\x0e\t8P88(\x10\x10\xff\x008P88(\x10\x10\r\t\x01\xbe\x02\t\x0e\t\xfe\xa0\x1b%%6%\x04\xb9K\xea\x1b%%6%\x04\x01\x05\n\x12\x03\x00\x02\x00\x00\xff\xbf\x02\x00\x01\xc0\x00\x19\x00!\x00\x00%\x16\x14\x0f\x01\x06\"/\x01&=\x01\x06#\"&462\x16\x15\x14\a32\x17&264&\"\x06\x14\x01\xf9\a\a\x1c\a\x14\ad\a8HVzz\xacz,\x10\n\a\xfajKKjK\x05\a\x14\a\x1c\a\ad\a\n\x10,z\xaczzVH8\a\aKjKKj\x00\x00\x01\xff\xfd\xff\xe0\x02\x03\x01\xa4\x00\x12\x00\x00\x01\x1e\x01\x0f\x01\x06\"/\x01&676\x16\x1f\x017>\x01\x01\xce/\x06+\xc1\n\x1a\n\xc1+\x06/)k&\x14\x14&k\x01\x81(|+\xc8\n\n\xc8+|(#\t'\x14\x14'\t\x00\x01\x00\x0f\xff\xba\x021\x01\xc1\x00\x18\x00\x00\x0162\x1f\x02\x1e\x01\x0f\x01\x17\x16\x06/\x01\a\x06&?\x01'&6?\x01\x01\x03\t(\tA\x92\x14\f\x0ej\x19\x03 \x11\x83\x83\x11 \x03\x19j\x0e\f\x14\x92\x01\xae\x12\x12\x84\x16\x02&\x0eg\x92\x13\x17\tDD\n\x18\x13\x92g\x0e&\x02\x16\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\a\x00\x1b\x00\x00$\"&462\x16\x14\a2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x1627\x01\x15jKKjK&7O\x1c\x14\xfe\xa0\x14\x1cO7\x11#L#\xc0KjKKjkO7*\x14\x1c\x1c\x14*7O\x10\x10\x00\x00\x00\x00\t\x00\x00\x00\x00\x02\x00\x01\x80\x00/\x00;\x00G\x00S\x00_\x00k\x00w\x00\x83\x00\x8f\x00\x00\x012\x16\x15\x11\x14\x06+\x0154+\x01\"\x1d\x01!54+\x01\"\x1d\x01#\"&5\x1146;\x01\x15\x14;\x012=\x01!\x15\x14;\x012=\x01\x0154+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x0554+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x1754+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x01\xe8\n\x0e\x0e\n\b\f(\f\xfe\xc0\f(\f\b\n\x0e\x0e\n\b\f(\f\x01@\f(\f\xfe\x80\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\x01\x10\f\xc8\f\f\xc8\f\f\xc8\f\f\xc8\fp\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\x01\x80\x0e\n\xfe\xb0\n\x0e\x14\f\f\x14\x14\f\f\x14\x0e\n\x01P\n\x0e\x14\f\f\x14\x14\f\f\x14\xfe\xcc(\f\f(\fl(\f\f(\fl(\f\f(\f\xc4`\f\f`\f\xb4`\f\f`\f\x8c(\f\f(\fl(\f\f(\fl(\f\f(\f\x00\x00\x04\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00\x00\x0132\x16\x1d\x01\x14\x06+\x01\"&=\x0146#2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x0346;\x012\x16\x1d\x01\x14\x06+\x01\"&5\x05\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\x01(\xc0\n\x0e\x0e\n\xc0\n\x0e\x0eF\n\x0e\x0e\n\xc0\n\x0e\x0e\n\x18\x0e\n\xc0\n\x0e\x0e\n\xc0\n\x0e\x01(\n\x0e\x0e\n\xc0\n\x0e\x0e\n\x01\xa0\x0e\n\xa0\n\x0e\x0e\n\xa0\n\x0e\x0e\n\xa0\n\x0e\x0e\n\xa0\n\x0e\xfe\xf8\n\x0e\x0e\n\xa0\n\x0e\x0e\n\x18\x0e\n\xa0\n\x0e\x0e\n\xa0\n\x0e\x00\x00\t\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00 \x000\x00B\x00R\x00b\x00r\x00\x82\x00\x92\x00\x00\x13\x15\x14\x06+\x01\"&=\x0146;\x012\x16\x17\x14\x0e\x01+\x01\"&=\x0146;\x012\x16\x15746;\x012\x16\x1d\x01\x14\x06+\x01\"&5#\x14\x0e\x02+\x01\"&=\x0146;\x012\x16\x15\a2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\a46;\x012\x16\x1d\x01\x14\x06+\x01\"&5%\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\a\"&=\x0146;\x012\x16\x1d\x01\x14\x06#%46;\x012\x16\x1d\x01\x14\x06+\x01\"&5\x95\x0e\ne\n\x0e\x0e\ne\n\x0e\xb6\a\v\x06f\n\x0e\x0e\nf\n\x0e \x0e\ne\n\x0e\x0e\ne\n\x0e \x04\a\b\x05f\n\x0e\x0e\nf\n\x0e\xce\n\x0e\x0e\ne\n\x0e\x0e\n\x18\x0e\ne\n\x0e\x0e\ne\n\x0e\x01\x83\n\x0e\x0e\ne\n\x0e\x0e\ne\n\x0e\x0e\ne\n\x0e\x0e\n\xfe\xcd\x0e\nf\n\x0e\x0e\nf\n\x0e\x01\x88P\n\x0e\x0e\nP\n\x0e\x0e\xfa\a\v\x06\x0e\nP\n\x0e\x0e\n\xa0\n\x0e\x0e\nP\n\x0e\x0e\n\x05\t\x06\x04\x0e\nP\n\x0e\x0e\n\x88\x0e\nP\n\x0e\x0e\nP\n\x0e\xb8\n\x0e\x0e\nP\n\x0e\x0e\n\x88\x0e\nP\n\x0e\x0e\nP\n\x0e\xa0\x0e\nP\n\x0e\x0e\nP\n\x0eh\n\x0e\x0e\nP\n\x0e\x0e\n\x00\x00\x00\x00\x06\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00O\x00_\x00\x007\x15\x14\x06+\x01\"&=\x0146;\x012\x16\a46;\x012\x16\x1d\x01\x14\x06+\x01\"&5\x132\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x13\"&=\x01463!2\x16\x1d\x01\x14\x06#\x01463!2\x16\x1d\x01\x14\x06#!\"&5\x17\"&=\x01463!2\x16\x1d\x01\x14\x06#\x95\x0e\ne\n\x0e\x0e\ne\n\x0e\x95\x0e\ne\n\x0e\x0e\ne\n\x0e}\n\x0e\x0e\ne\n\x0e\x0e\n\xb5\n\x0e\x0e\n\x01\x1b\n\x0e\x0e\n\xfe\xcd\x0e\n\x01\x1b\n\x0e\x0e\n\xfe\xe5\n\x0e\x18\n\x0e\x0e\n\x01\x1b\n\x0e\x0e\n\xe8P\n\x0e\x0e\nP\n\x0e\x0e\xaa\n\x0e\x0e\nP\n\x0e\x0e\n\x01\xa8\x0e\nP\n\x0e\x0e\nP\n\x0e\xfe@\x0e\nP\n\x0e\x0e\nP\n\x0e\x01\xa8\n\x0e\x0e\nP\n\x0e\x0e\n\xb8\x0e\nP\n\x0e\x0e\nP\n\x0e\x00\x00\x00\x01\x00\x00\x00\x01\x02\x00\x01\u007f\x00\x14\x00\x007'&4?\x0162\x1f\x01762\x1f\x01\x16\x14\a\x01\x06\"\xae\xa7\a\a%\a\x15\bp\xf0\b\x15\a%\a\a\xfe\xd9\a\x16\t\xa6\a\x16\a$\b\bp\xf0\b\b$\a\x16\a\xfe\xda\b\x00\x00\x00\x01\xff\xff\x00\x0f\x01a\x01q\x00#\x00\x007\x17\x16\x14\x0f\x01\x06\"/\x01\a\x06\"/\x01&4?\x01'&4?\x0162\x1f\x01762\x1f\x01\x16\x14\a\xf3d\t\t\x16\n\x1a\tdd\t\x1a\n\x16\t\tdd\t\t\x16\n\x1a\tdd\t\x1a\n\x16\t\t\xc0d\t\x1a\n\x16\t\tdd\t\t\x16\n\x1a\tdd\t\x1a\n\x16\t\tdd\t\t\x16\n\x1a\t\x00\x00\x00\x03\x00\x00\xff\xbf\x02\x00\x01\xc0\x00\x1b\x005\x00=\x00\x00\x01\x15\x14+\x01\x15\x14+\x01\"=\x01#\"=\x014;\x0154;\x012\x1d\x0132\x13\a\x06\"/\x01&=\x01\x06#\"&462\x16\x15\x14\a32\x1f\x01\x16\x14&4&\"\x06\x14\x162\x010\f8\f \f8\f\f8\f \f8\f\xc9\x1c\a\x14\ad\a8HVzz\xacz,\x10\n\ad\a\xa8PpPPp\x01\x00 \f8\f\f8\f \f8\f\f8\xfe\xd7\x1c\a\ad\a\n\x10,z\xaczzVH8\ad\a\x14\xcepPPpP\x00\x03\x00\x00\xff\xbf\x02\x00\x01\xc0\x00\v\x00%\x00-\x00\x00\x01\x15\x14+\x01\"=\x014;\x012\x13\a\x06\"/\x01&=\x01\x06#\"&462\x16\x15\x14\a32\x1f\x01\x16\x14&4&\"\x06\x14\x162\x010\f\xa8\f\f\xa8\f\xc9\x1c\a\x14\ad\a8HVzz\xacz,\x10\n\ad\a\xa8PpPPp\x01\x00 \f\f \f\xfe\xd7\x1c\a\ad\a\n\x10,z\xaczzVH8\ad\a\x14\xcepPPpP\x00\x02\x00\a\xff\xc7\x01\xf8\x01\xc0\x00)\x009\x00\x00\x01\x1e\x01\x15\x14\x06#\".\x0154>\x0176\x16\x1f\x01\x16\x06\a\x0e\x03\x15\x14\x1632654&'.\x01?\x01>\x01\a\x14\x06+\x01\"&=\x0146;\x012\x16\x15\x01\x9008\x91gCrC\x1a. \t\x15\x05\x10\x04\x04\a\x10\x19\x11\nbFEc$ \a\x04\x04\x10\x05\x15_\x0e\n \n\x0e\x0e\n \n\x0e\x01\x8a\"k=g\x91BrD)L>\x17\x06\x05\t\x1c\b\x12\x05\f\x1d\"'\x15EcbG'G\x18\x05\x12\b\x1c\t\x05\xd8\n\x0e\x0e\n\xf0\n\x0e\x0e\n\x00\x00\x05\x00\x18\xff\xc0\x02h\x01\xc0\x00\x0f\x00\x1f\x00/\x00?\x00O\x00\x0072\x16\x1d\x01\x14\x06+\x01\"&=\x01463\a2\x16\x1d\x01\x14\x06+\x01\"&=\x01463%2\x16\x15\x11\x14\x06+\x01\"&5\x1146372\x16\x15\x11\x14\x06+\x01\"&5\x1146372\x16\x15\x11\x14\x06+\x01\"&5\x11463\xd8\a\t\t\a0\a\t\t\aP\a\t\t\a0\a\t\t\a\x010\a\t\t\a0\a\t\t\a\xb0\a\t\t\a0\a\t\t\a\xb0\a\t\t\a0\a\t\t\a\xa0\t\a\xc0\a\t\t\a\xc0\a\t`\t\a`\a\t\t\a`\a\t\xc0\t\a\xfe\xe0\a\t\t\a\x01 \a\t`\t\a\xfe\x80\a\t\t\a\x01\x80\a\t`\t\a\xfe \a\t\t\a\x01\xe0\a\t\x00\x00\x00\x02\x00\x10\xff\xc1\x01\xf0\x01\xbf\x00<\x00D\x00\x00%\x16\a\x06\a\x06/\x01\x06\a\x15\x14\a\x06'&=\x01&'\a\x06'&'&?\x01&47'&7676\x1f\x01675476\x17\x16\x1d\x01\x16\x1776\x17\x16\x17\x16\x0f\x01\x16\a\x06264&\"\x06\x14\x01\xe7\t\x03\x11&\x06\b+\x1b\"\t76\n\"\x1b*\t\x06&\x11\x03\t*\x03\x03*\t\x03\x11&\x06\t*\x1b\"\t77\t\"\x1b*\t\x06&\x11\x03\t*\x06\x06\xdeB//B/\x84\x04\n5)\a\x04\x19\x17\f1\n\x02\f\f\x02\n1\f\x17\x19\x04\a)5\t\x05\x19\x11$\x11\x19\x04\n5)\a\x05\x18\x17\f1\n\x02\f\f\x02\n1\f\x17\x19\x04\a)5\n\x04\x19##-/B//B\x00\x00\x02\xff\xff\xff\xe0\x02A\x01\xa0\x00\x1e\x00D\x00\x00\x0162\x1f\x01\x15\x14\x06+\x01\"&=\x014.\x01+\x01\"\x06\x1d\x01\x14\x06+\x01\"&=\x01%\x16\x15\x14\x0f\x01\x06#\"/\x01&\"\x0f\x01\x06#\"/\x01&54?\x0162\x1f\x01546;\x012\x16\x1d\x01\x01\x18\x04\b\x04\xb8\t\ap\a\t\x04\b\x04@\a\t\t\ap\a\t\x01\xdc\x04\x03\x19\x04\x05\x05\x03\xeb\x04\b\x04\xeb\x03\x04\x06\x04\x19\x03\x04\xfd\x0e\"\rZ\a\x058\x05\a\x01,\x02\x02\x98\xa4\a\t\n\x06`\x04\b\x04\t\a`\x06\n\t\a\xa41\x04\x06\x04\x03\x1f\x05\x03\xc2\x02\x02\xc2\x03\x05\x1f\x03\x04\x06\x04\xd0\v\vJI\x05\a\a\x05\x8b\x00\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x17\x00\x00\x122\x16\x14\x06\"&4\x05\x16?\x016/\x0154+\x01\"\x1d\x01\x14\x17\x99Α\x91Α\x011\n\a\x1c\a\t@\f0\f\x05\x01\xb8\x91Α\x91\xce\xcd\a\t'\n\a.\x8a\f\f\xa8\x06\x04\x00\x00\x00\x03\xff\xfb\x00\x00\x02E\x01\x80\x00\"\x000\x00B\x00\x00%\x16\x06+\x01'4&+\x01\"\x0e\x01\x15\a#\"&7\x136;\x01\a\x14\x16;\x01265'32\x17\x0f\x01\x06\x16;\x0126/\x01&+\x01\"\x172>\x015'4&+\x01\"\x06\x15\a\x14\x1e\x013\x02=\a\x12\x11\xc4\v\t\aD\x04\a\x05\v\xc4\x11\x12\a\x8c\b\x13b\x03\x05\x03\x1e\x03\x05\x03b\x13\b\xad\x04\x01\a\x06(\x06\a\x01\x04\x01\a(\a7\x04\b\x04\x06\t\x06.\x06\t\x06\x04\b\x04-\x10\x1db\x06\b\x04\x06\x04b\x1d\x10\x01@\x13\x17\x04\x05\x05\x04\x17\x134,\x05\b\b\x05,\a\xb0\x05\b\x050\x06\b\b\x060\x05\b\x05\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x15\x00+\x003\x00;\x00\x00\x1332\x16\x1d\x0132\x16\x0f\x01\x06\"/\x01&6;\x01546\x01\x15\x14\x06#!\"&=\x0146;\x01\x17\x162?\x0132\x16\x064&\"\x06\x14\x16264&\"\x06\x14\x162\xd8P\n\x0eX\r\n\t\x98\x06\x10\x06\x98\t\n\rX\x0e\x012\x0e\n\xfe0\n\x0e\x0e\n\x931\x0f*\x0f1\x93\n\x0e|\f\x10\f\f\x10L\f\x10\f\f\x10\x01\xc0\x0e\n\xa8\x19\t\x98\x06\x06\x98\t\x19\xa8\n\x0e\xfe\x88p\n\x0e\x0e\np\n\x0e1\x0f\x0f1\x0ej\x10\f\f\x10\f\f\x10\f\f\x10\f\x00\x02\x00\x00\x00\x00\x02@\x01\x80\x00\x16\x00\x1e\x00\x00%\x16\x1d\x01\x14\x06#!\"&=\x014?\x01>\x023!2\x16\x17\x05\a3\x17373'\x028\b\x1c\x14\xfe \x14\x1c\bj\x04\r\x10\a\x01\f\v\x17\x06\xfe\xd4U{ p {U\xcc\f\x0f\x81\x14\x1c\x1c\x14\x81\x0f\f\x9f\x05\n\x06\r\b+\x80@@\x80\x00\x00\x00\x00\x01\x00\a\xff\xc8\x02\x01\x01\xc0\x00<\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146303\x17.\x01#\"\x06\x14\x163267632\x1f\x01\x16\x15\x14\a\x0e\x03#\".\x0154632\x1e\x01\x17'41463\x01\xf4\x05\a\a\x05\xc8\x05\a\a\x05\x01e\x16U'IggI\x1cD\x14\x04\x04\x05\x04\"\x03\x04\x0e)-.\x14CsB\x92f\x1fIA\x14\x04\a\x05\x01\xc0\a\x05\xc8\x05\a\a\x05/\x05\a\x05 .g\x92g\x1a\x12\x03\x04\"\x03\x05\x06\x03\r\x18\x11\nBrDf\x92\x17)\x17R\x01\x05\a\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00*\x00T\x00\x00\x014146;\x012\x1d\x01\x14\x06+\x01\"&=\x01463\x17.\x01#\"\x06\a\x06+\x01\"&545>\x0132\x1e\x01\x17\x032676;\x012\x16\x15\x14\a\x0e\x01#\"&'\x17\x141\x14\x06+\x01\"=\x0146;\x012\x16\x1d\x01\x14\x06#'\x1e\x01\x01\xb9\a\x05/\f\a\x05\xc8\x05\a\a\x05f\x16U':d\r\x02\n1\x05\a\x11\x89Z\x1fIA\x14\xbd9d\x0e\x02\n1\x05\a\x01\x10\x89Z0n\x1f\x04\a\x05/\f\a\x05\xc8\x05\a\a\x05f\x15V\x01\xb3\x01\x05\a\f\xc8\x05\a\a\x05/\x05\a\x05 .O8\t\a\x05\x01\x01Ws\x17)\x17\xfe\xafO8\t\a\x05\x01\x01Ws3$R\x01\x05\a\f\xc8\x05\a\a\x05/\x05\a\x05 .\x00\x00\x00\a\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x17\x00\x1f\x00'\x003\x00?\x00K\x00\x00\x05!\"&5\x11463!2\x16\x15\x11\x14\x06\x00\"\x06\x14\x16264\x06\"\x06\x14\x16264\x06\"\x06\x14\x16264754+\x01\"\x1d\x01\x14;\x012\x1554+\x01\"\x1d\x01\x14;\x012\x1554+\x01\"\x1d\x01\x14;\x012\x01\xd0\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x1c\xfe\xad\"\x17\x17\"\x17\x17\"\x17\x17\"\x17\x17\"\x17\x17\"\x17\xf8\f\xc8\f\f\xc8\f\f\xc8\f\f\xc8\f\f\xc8\f\f\xc8\f \x1c\x14\x01`\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x01h\x17\"\x17\x17\"I\x17\"\x17\x17\"I\x17\"\x17\x17\"\x9f \f\f \fT \f\f \fT \f\f \f\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x17\x00\x1f\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x015462\x16\x1d\x01#54&\"\x06\x1d\x01\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x18Y~YP*<*\xe0\x1c\x14\xc0\x14\x1c\x1c\x14\xc0\x14\x1cH?YY?HH\x1e**\x1eH\x00\x00\x01\x00\b\xff\xc0\x02\x00\x01\xc1\x00'\x00\x00\x01276\x16\x1d\x01\x14\a\x06#\"&#\"\a\x15\x14\x06+\x01\"&5\x11&546\x17\x1e\x01\x17\x14\x15\x14\a62\x16\x01^0E\x0f\x1e\x0e;?$h\x1a>4\x0e\n\x10\n\x0e\x18\"\x18\x16\x1f\x01\x04!Gh\x01] \a\x12\x12\xf3\x11\t)#\x17^\n\x0e\x0e\n\x01\x82\x11\x1d\x18!\x01\x01\x1e\x15\x02\x02\n\n\f#\x00\x01\x00\x00\xff\xe0\x02\x00\x01\xa0\x001\x00\x00\x122\x16\x1d\x01\x14\x06\x0f\x01\x0e\x01+\x01\"&=\x0146;\x012\x1754&\"\x06\x1d\x016;\x012\x16\x1d\x01\x14\x06+\x01\"&/\x01.\x01=\x014\x96Ԗ\n\b\x0e\x02A-\x18\n\x0e\x0e\n\x18/!q\x9eq!/\x18\n\x0e\x0e\n\x18-A\x02\x0e\b\n\x01\xa0\x96j0\b\x11\x04\a-?\x0e\n\xb0\n\x0e\"\x02OqqO\x02\"\x0e\n\xb0\n\x0e?-\a\x04\x11\b0j\x00\x00\x01\x00\x00\xff\xfc\x01\x00\x01\x84\x00\x11\x00\x00\x136\x16\x15\x11\x14\x06/\x01#\"&=\x0146;\x01\xd7\v\x1e\x1e\vYf\n\x0e\x0e\nf\x01y\v\f\x10\xfe\xb0\x10\f\vY\x0e\n\x90\n\x0e\x00\x02\x00\x00\xff\xfa\x01\x81\x01\x84\x00\x11\x00#\x00\x00\x136\x16\x15\x11\x14\x06/\x01#\"&=\x0146;\x01\x17\x1e\x01\x14\x06\a\x06.\x016764'.\x01>\x01\xd7\v\x1e\x1e\vYf\n\x0e\x0e\nf\xd4\x15\x19\x19\x15\b\x14\t\x05\t\x15\x15\t\x05\t\x14\x01x\v\f\x10\xfe\xb0\x10\f\vY\x0e\n\x90\n\x0e\x13\f)0)\f\x05\x06\x11\x13\x05\f.\f\x05\x13\x11\x06\x00\x00\x00\x04\x00\x00\xff\xce\x02@\x01\xb2\x00\x11\x00'\x00>\x00P\x00\x00\x136\x16\x15\x11\x14\x06/\x01#\"&=\x0146;\x01%\x1e\x01\x14\x06\a\x06.\x0167>\x0254&'.\x01>\x01\x16\x14\x06\a\x06&'&67>\x024.\x01'.\x01>\x01\x17\x16\a\x1e\x01\x14\x06\a\x06.\x016764'.\x01>\x01\xd7\v\x1e\x1e\vYf\n\x0e\x0e\nf\x01B\x02;\x012\x16\x1f\x0132\x16\x064&\"\x06\x14\x1626\x14\x06\"&462\x02\x00\x1c\x14\xfe`\x14\x1c\x1c\x14X\f\x04\r\x12\n~\x0f\x18\x06\fX\x14\x1c\x88FdFFd&4H44H\x010\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c!\t\x0e\b\x11\x0e!\x1c\xd6dFFdF\x9cH44H4\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00-\x000\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x01'#\a32\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x01\x13>\x01;\x012\x16\x17\x13'3'\x01\xb0\a\t\t\a\x80\a\t\t\a\x14\x18\x98\x18\x14\a\t\t\a\x80\a\t\t\a\x17\x83\x03\x12\t0\t\x12\x03\x83\xe8^/ \t\a \a\t\t\a \a\t@@\t\a \a\t\t\a \a\t\x01j\t\r\r\t\xfe\x96\x90\x81\x00\x03\x00\x12\xff\xe0\x01\x84\x01\xa0\x00\x1d\x00%\x00-\x00\x00%\x1e\x01\a\x0e\x01+\x01\"&=\x0146;\x01\x11#\"&=\x0146;\x012\x16\a\x06'\x153264&#\x11264&+\x01\x15\x01M\x1b\x1c\x04\x05R6\xd1\a\t\t\a \a\t\t\a\xc79L\x06\x03\xd3W\x14\x1c\x1c\x14\x18 \x18W\xd2\x15?$4F\t\a0\a\t\x01 \t\a0\a\tT9$a`\x1c(\x1c\xfe\xe0!.!p\x00\x00\x01\x00\x00\xff\xe0\x01@\x01\xa0\x00#\x00\x00\x01\x15\x14\x06+\x01\x0332\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x01\x13#\"&=\x0146;\x012\x16\x01@\t\a?P/\a\t\t\a\xc0\a\t\t\a?P/\a\t\t\a\xc0\a\t\x01\x90 \a\t\xfe\xc0\t\a \a\t\t\a \a\t\x01@\t\a \a\t\t\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x02C\x01\xa0\x00-\x00I\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01#\x1132\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x01\x11#\x15\x14\x06+\x01\"&=\x01463\x012\x16\x0f\x01\x06\"/\x01&6;\x015#\"&?\x0162\x1f\x01\x16\x06+\x01\x15\x010\a\t\t\a \a\t8(\a\t\t\a\xa0\a\t\t\a(8\t\a \a\t\t\a\x02 \v\b\bP\x04\x0e\x04P\b\b\v00\v\b\bP\x04\x0e\x04P\b\b\v0\x01\xa0\t\a`\a\t\t\a \xfe\xd0\t\a \a\t\t\a \a\t\x010 \a\t\t\a`\a\t\xfe\xb0\x14\aP\x05\x05P\a\x14\xe0\x14\aP\x05\x05P\a\x14\xe0\x00\x00\x00\x02\x00\x00\xff\xdd\x01\xc0\x01\xa0\x00-\x00I\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01#\x1532\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015#\x15\x14\x06+\x01\"&=\x01463\x01\x17\x16\x14\x0f\x01\x06&=\x01#\x15\x14\x06/\x01&4?\x016\x16\x1d\x013546\x01\xb0\a\t\t\a \a\tx\x18\a\t\t\a\x80\a\t\t\a\x18x\t\a \a\t\t\a\x01[P\x05\x05P\a\x14\xe0\x14\aP\x05\x05P\a\x14\xe0\x14\x01\xa0\t\aP\a\t\t\a\x10p\t\a \a\t\t\a \a\tp\x10\a\t\t\aP\a\t\xfe\xfbP\x04\x0e\x04P\b\b\v00\v\b\bP\x04\x0e\x04P\b\b\v00\v\b\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00\x007\"&=\x01463!2\x16\x1d\x01\x14\x06#\x01\"&=\x01463!2\x16\x1d\x01\x14\x06#\x172\x16\x1d\x01\x14\x06#!\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\r\x05\b\b\x05\x01\x06\x05\b\b\x05\xfe\xfa\x05\b\b\x05\x01\x06\x05\b\b\x05\x9d\a\t\t\a\xfe`\a\t\t\a\x01\xa0\a\t\t\a\xfe`\a\t\t\a`\b\x05&\x05\b\b\x05&\x05\b\x01\x00\b\x05&\x05\b\b\x05&\x05\b@\t\a \a\t\t\a \a\t\xff\x00\t\a \a\t\t\a \a\t\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00\x00\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x13\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\x11#\"&=\x0146;\x012\x16\x1d\x01\x14\x06\x01\xb0\a\t\t\a\xfe`\a\t\t\a\x01\xa0\a\t\t\a\xfe`\a\t\t\a\\\x05\a\a\x05\xe8\x05\a\a\x05\xe8\x05\a\a\x05\xe8\x05\a\a\x01 \t\a \a\t\t\a \a\t\xff\x00\t\a \a\t\t\a \a\t\x01@\a\x05(\x05\a\a\x05(\x05\a\xff\x00\a\x05(\x05\a\a\x05(\x05\a\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00\x007\"&=\x01463!2\x16\x1d\x01\x14\x06#\x152\x16\x1d\x01\x14\x06#!\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x10\a\t\t\a\x01\xa0\a\t\t\a\a\t\t\a\xfe`\a\t\t\a\x01\xa3\x05\b\b\x05\xfe\xfa\x05\b\b\x05\x01\x06\x05\b\b\x05\xfe\xfa\x05\b\b\x05\xe0\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t\x01\x80\b\x05&\x05\b\b\x05&\x05\b\xff\x00\b\x05&\x05\b\b\x05&\x05\b\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x01463%2\x16\x1d\x01\x14\x06#!\"&=\x01463%2\x16\x1d\x01\x14\x06#!\"&=\x01463%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\xb0\a\t\t\a\xfe`\a\t\t\a\x01\xa0\a\t\t\a\xfe`\a\t\t\a\x01\xa0\a\t\t\a\xfe`\a\t\t\a\x01\xa0\a\t\t\a\xfe`\a\t\t\a \t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t\x00\x06\x00\x00\xff\xf0\x02\x00\x01\x90\x00\x0f\x00\x1f\x00/\x00?\x00O\x00_\x00\x0072\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x132\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x052\x16\x1d\x01\x14\x06#!\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x052\x16\x1d\x01\x14\x06#!\"&=\x01463P\a\t\t\a@\a\t\t\a@\a\t\t\a@\a\t\t\a@\a\t\t\a@\a\t\t\a\x01\xe0\a\t\t\a\xfe\xc0\a\t\t\a\x01@\a\t\t\a\xfe\xc0\a\t\t\a\x01@\a\t\t\a\xfe\xc0\a\t\t\aP\t\a@\a\t\t\a@\a\t\x01@\t\a@\a\t\t\a@\a\t\xa0\t\a@\a\t\t\a@\a\t\xb0\t\a \a\t\t\a \a\t\x01@\t\a \a\t\t\a \a\t\xa0\t\a \a\t\t\a \a\t\x00\x00\x00\x05\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\v\x00\x1b\x00+\x00;\x00K\x00\x007'&4?\x016\x16\x1d\x01\x14\x06\x052\x16\x1d\x01\x14\x06#!\"&=\x01463%2\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06#!\"&=\x01463e`\x05\x05`\a\x14\x14\x01D\a\t\t\a\xfe`\a\t\t\a\x01\xa3\x05\b\b\x05\xe6\x05\b\b\x05\xe6\x05\b\b\x05\xe6\x05\b\b\x05\xe3\a\t\t\a\xfe`\a\t\t\aU`\x04\x0e\x04`\b\b\v\xc0\v\b-\t\a \a\t\t\a \a\t\x80\b\x05&\x05\b\b\x05&\x05\b\x80\b\x05&\x05\b\b\x05&\x05\b\x80\t\a \a\t\t\a \a\t\x00\x00\x00\x05\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\v\x00\x1b\x00+\x00;\x00K\x00\x007\x06&=\x0146\x1f\x01\x16\x14\a\x052\x16\x1d\x01\x14\x06#!\"&=\x01463%2\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06#!\"&=\x01463\x1b\a\x14\x14\a`\x05\x05\x015\a\t\t\a\xfe`\a\t\t\a\x01\xa3\x05\b\b\x05\xe6\x05\b\b\x05\xe6\x05\b\b\x05\xe6\x05\b\b\x05\xe3\a\t\t\a\xfe`\a\t\t\aU\b\b\v\xc0\v\b\b`\x04\x0e\x04\x95\t\a \a\t\t\a \a\t\x80\b\x05&\x05\b\b\x05&\x05\b\x80\b\x05&\x05\b\b\x05&\x05\b\x80\t\a \a\t\t\a \a\t\x00\x00\x00\x02\x00\x00\x00\x00\x02@\x01\x80\x00\x0f\x00\x19\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x056\x16\x15\x11\x14\x06/\x015\x01P\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01\xde\x10\"#\x0fn\x01\x80\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c&\v\x11\x14\xff\x00\x14\x11\vK\x9e\x00\x00\x00\x03\x00\x00\x00\x00\x02\x00\x01\x80\x00\x0f\x00\x17\x00\"\x00\x00)\x01\"&5\x11463!2\x16\x15\x11\x14\x06\x00\"\x06\x14\x16264\a!5'&\x0f\x01'&\x0f\x01\x01\xd0\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x1c\xfe\xa3.!!.!h\x01\x80X\b\b\x888\b\bH\x1c\x14\x01 \x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x01H!.!!.\xe7pX\b\b\x888\b\bH\x00\x00\x00\x00\x01\x00\x00\xff\xbf\x01\x80\x01\xc0\x00\x17\x00\x00\x17.\x065462\x16\x15\x14\x0e\x05\a\x06\"\xac\x18=\x1a\"\v\r\x03p\xa0p\x03\r\v\"\x1a=\x18\a\x1a6#X$5\x16\"\x19\x11PppP\x11\x19\"\x165$X#\n\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\r\x00\x006462\x16\x14\x06\"7264&#\b\x91Α\x91\xcegLllLYΑ\x91Α@l\x98l\x00\x00\x02\x00\x00\xff\xc0\x01`\x01\xc1\x00\x11\x00!\x00\x00\x13\x1e\x03\x15\x14\x06\"&54>\x02762\x03264&#\"&54&\"\x06\x15\x14\x16\xcd\x106,!g\x92g!-5\x10\a-\x17\a\t\t\a!/\t\x0e\tB\x01\xaa4_6I&JhhJ&H8^4\x16\xfe@\t\x0e\t/!\a\t\t\a.B\x00\x00\x00\x03\x00\x00\xff\xc0\x02@\x01\xc0\x00\f\x00\x1a\x007\x00\x00\x01\x17\x16\x0f\x02\x06.\x01?\x0267\x16\x14\x0f\x01\x06/\x01&?\x0162\x17\x034?\x016\x16\x1d\x01\x14\x06#!\"&5\x11463!2\x16\x0f\x01\x06+\x01\x11!\x01\x93Z\a\a\xdb\\\x06\v\x06\x01\n\xdb\a\xa9\v\v$\a\aZ\a\a$\v \f\x84\x04(\x05\x0f\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01\x1e\b\x06\x06(\x03\x05\xe6\x01@\x01mZ\a\a\xdb\n\x01\x06\v\x06\\\xdb\a\x10\f \f#\a\aZ\a\a#\f\f\xfe\xb2\x05\x03(\x06\x06\b\x9e\x14\x1c\x1c\x14\x01`\x14\x1c\x0f\x05(\x04\xfe\xc0\x00\x00\x00\x00\x01\x00@\xff\xda\x01\x80\x01\xa6\x00\x15\x00\x00\x17\x114;\x012\x1d\x0176\x16\x15\x11\x14\x06/\x01\x15\x14+\x01\"@\f0\f\xc4\x0f%%\x0f\xc4\f0\f\x14\x01\xa8\f\f\xb0\xb5\r\x12\x14\xfe\x80\x14\x12\r\xb4\xaf\f\x00\x00\x01\x00\x00\xff\xfa\x02\x00\x01\x86\x00\x1f\x00\x005\x114;\x012\x1d\x0176\x16\x1d\x0176\x16\x15\x11\x14\x06/\x01\x15\x14\x06/\x01\x15\x14+\x01\"\f(\f\xac\x0f%\xac\x0f%%\x0f\xac%\x0f\xac\f(\f\f\x01h\f\f\x98\x9d\r\x12\x14\x84\x9d\r\x12\x14\xfe\xc0\x14\x12\r\x9c\x83\x14\x12\r\x9c\x97\f\x00\x02\x00\x00\xff\xfa\x02\x00\x01\x86\x00\v\x00\x17\x00\x007&4?\x016\x16\x15\x11\x14\x06'7&4?\x016\x16\x15\x11\x14\x06'\f\f\f\xc0\x0f%%\x0f@\f\f\xc0\x0f%%\x0f\xa7\n\x1e\n\xa0\r\x12\x14\xfe\xc0\x14\x12\r\xa0\n\x1e\n\xa0\r\x12\x14\xfe\xc0\x14\x12\r\x00\x00\x00\x01\x00\x00\xff\xb8\x01\xc1\x01\xc8\x00\v\x00\x00%\x16\x14\a\x05\x06&5\x1146\x17\x01\xa8\x18\x18\xfe\xa0\x1713\x15\xe9\x0e6\x0e\xd0\x0e\x1b\x1c\x01\xa0\x1e\x19\x0e\x00\x00\x00\x00\x02\x00\x00\xff\xe1\x01\xc0\x01\xa1\x00\x0f\x00\x1f\x00\x00\x17#\"&5\x1146;\x012\x16\x15\x11\x14\x06%\x14\x06+\x01\"&5\x1146;\x012\x16\x15\x90`\x14\x1c\x1c\x14`\x14\x1c\x1c\x01\x1c\x1c\x14`\x14\x1c\x1c\x14`\x14\x1c\x1f\x1c\x14\x01`\x14\x1c\x1c\x14\xfe\xa0\x14\x1c0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\x14\x00\x00\x00\x01\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x00\x02\x00\x00\xff\xfa\x02\x00\x01\x86\x00\v\x00\x17\x00\x00%\x16\x14\x0f\x01\x06&5\x1146\x17\a\x16\x14\x0f\x01\x06&5\x1146\x17\x01\xf4\f\f\xc0\x0f%%\x0f@\f\f\xc0\x0f%%\x0f\xd9\n\x1e\n\xa0\r\x12\x14\x01@\x14\x12\r\xa0\n\x1e\n\xa0\r\x12\x14\x01@\x14\x12\r\x00\x00\x01\x00\x00\xff\xfa\x02\x00\x01\x86\x00\x1f\x00\x00\x01\x11\x14+\x01\"=\x01\a\x06&=\x01\a\x06&5\x1146\x1f\x01546\x1f\x0154;\x012\x02\x00\f(\f\xac\x0f%\xac\x0f%%\x0f\xac%\x0f\xac\f(\f\x01t\xfe\x98\f\f\x98\x9d\r\x12\x14\x84\x9d\r\x12\x14\x01@\x14\x12\r\x9c\x83\x14\x12\r\x9c\x97\f\x00\x00\x01\x00@\xff\xda\x01\x80\x01\xa6\x00\x15\x00\x00\x01\x11\x14+\x01\"=\x01\a\x06&5\x1146\x1f\x0154;\x012\x01\x80\f0\f\xc4\x0f%%\x0f\xc4\f0\f\x01\x94\xfeX\f\f\xb0\xb5\r\x12\x14\x01\x80\x14\x12\r\xb4\xaf\f\x00\x00\x00\x00\x02\xff\xf7\xff\xe0\x01\xc9\x01\xa0\x00\x0f\x00\x1b\x00\x00%\x15\x14\x06#!\"&=\x01463!2\x16%\"&?\x0162\x1f\x01\x16\x06#\x01\xc0\x13\r\xfe\x80\r\x13\x13\r\x01\x80\r\x13\xfep\x1f\x19\x15\xb0\x0e*\x0e\xb0\x15\x19\x1f@@\r\x13\x13\r@\r\x13\x1339\x17\xc0\x10\x10\xc0\x179\x00\x00\x00\x01\x00\x1b\xff\xe5\x01%\x01\x9b\x00\x14\x00\x00?\x0162\x1f\x01\x1e\x01\x0f\x01\x17\x16\x06\x0f\x01\x06\"/\x01&4#\xc2\a\x14\a\x16\a\x01\a\x9b\x9b\a\x01\a\x16\a\x14\a\xc2\b\xd1\xc2\a\a\x16\a\x14\a\x9b\x9b\a\x14\a\x16\a\a\xc2\a\x14\x00\x00\x00\x01\x00\x1b\xff\xe5\x01%\x01\x9b\x00\x14\x00\x00%\a\x06\"/\x01.\x01?\x01'&6?\x0162\x1f\x01\x16\x14\x01\x1d\xc2\a\x14\a\x16\a\x01\a\x9b\x9b\a\x01\a\x16\a\x14\a\xc2\b\xaf\xc2\a\a\x16\a\x14\a\x9b\x9b\a\x14\a\x16\a\a\xc2\a\x14\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00#\x00\x00\x122\x16\x14\x06\"&4\x0554+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132\x99Α\x91Α\x01\x88\f\\\f8\f\\\f\f\\\f8\f\\\f\x01\xb8\x91Α\x91\u03838\f\\\f\f\\\f8\f\\\f\f\\\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x13\x00\x00\x122\x16\x14\x06\"&4\x17!2=\x014#!\"\x1d\x01\x14\x99Α\x91Αt\x01\b\f\f\xfe\xf8\f\x01\xb8\x91Α\x91Ώ\f8\f\f8\f\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00#\x00\x00\x122\x16\x14\x06\"&4\x05'76/\x01&\x0f\x01'&\x0f\x01\x06\x1f\x01\a\x06\x1f\x01\x16?\x01\x17\x16?\x016\x99Α\x91Α\x01rBB\b\b(\b\tAA\t\b(\b\bBB\b\b(\b\tAA\t\b(\b\x01\xb8\x91Α\x91ΨAA\t\b(\b\bBB\b\b(\b\tAA\t\b(\b\bBB\b\b(\b\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x17\x00\x00\x00\x14\x06\"&462\x0376/\x01&\x0f\x01'&\x0f\x01\x06\x1f\x01\x16\x01\xf8\x91Α\x91΄\xb8\f\f\x16\f\v\x96F\v\f\x16\f\fh\v\x01'Α\x91Α\xfe\x85\xb8\v\v\x17\v\v\x96F\v\v\x17\v\vh\f\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00+\x003\x00\x00\x00\x14\x06\"&462\a\"\a\x06\x1f\x01\x167>\x0232\x16\x15\x14\x06\a\x0e\x02\x1d\x01\x14;\x012=\x014>\x0254&\x06\"\x06\x14\x16264\x01\xf8\x91Α\x91\xce`J+\x06\t#\t\a\v\r\x14\r\x11\x1d\x0f\x11\x12\x11\x14\f8\f\x1a\x1f\x1aH &\x1b\x1b&\x1b\x01'Α\x91ΑR@\t\a\x1a\a\t\r\r\n\x13\x0e\v\r\n\n\f\x1e\x13\x04\f\f\x01\t\x12\x10&\x1a*<\xf8\x1b&\x1b\x1b&\x00\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00'\x00\x00\x122\x16\x14\x06\"&4$\"\x06\x14\x16264\x1754+\x0154+\x01\"\x1d\x01\x14;\x01\x15#\"\x1d\x01\x14;\x012\x99Α\x91Α\x01\t\"\x19\x19\"\x19\x0e\f\f\f@\f\f\f\f\f\fX\f\x01\xb8\x91Α\x91\xce#\x19\"\x19\x19\"\xe5\x18\fd\f\f\x18\f@\f\x18\f\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00(\x00P\x00X\x00\x00%2\x1d\x01\x14+\x01\x0e\x02\a\x15\x14+\x01\"=\x01.\x01'#\"=\x014;\x01>\x01754;\x012\x1d\x01\x1e\x01\x17\a>\x017#\"=\x014;\x01.\x01'\x15\x14+\x01\"=\x01\x0e\x01\a32\x1d\x01\x14+\x01\x1e\x01\x1754;\x012\x154\x14\x06\"&462\x01\xf4\f\f\x1e\a3N.\f(\fFe\v\x1e\f\f\x1e\veF\f(\fFe\v\xb6,?\n)\f\f)\n?,\f(\f,?\n)\f\f)\n?,\f(\f\x13\x1a\x13\x13\x1a\xe0\f(\f.N3\a\x1e\f\f\x1e\veF\f(\fFe\v\x1e\f\f\x1e\veF\xb5\n?,\f(\f,?\n)\f\f)\n?,\f(\f,?\n)\f\fy\x1a\x13\x13\x1a\x13\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\r\x00\x13\x00\x00\x122\x16\x14\x06\"&4\x04.\x01\a\x016\x04\x1e\x017\x01\x06\x99Α\x91Α\x01\xaa`\x884\x01\x01&\xfe\x91`\x884\xfe\xff&\x01\xb8\x91Α\x91\xce\x15`\v&\xfe\xff4\x1c`\v&\x01\x014\x00\x00\x00\x00\x01\xff\xff\xff\xe5\x01\xc0\x01\x9b\x00\x1d\x00\x00%\a\x06\"/\x01&4?\x0162\x1f\x01\x16\x06\x0f\x01!2\x16\x1d\x01\x14\x06#!\x17\x1e\x01\x01\x02\x17\a\x14\a\xc2\a\a\xc2\a\x14\a\x17\a\x01\ax\x01\x1f\n\x0e\x0e\n\xfe\xe1x\a\x01\x03\x16\a\a\xc2\a\x14\a\xc2\a\a\x16\a\x14\as\x0e\n \n\x0es\a\x14\x00\x00\x00\x00\x01\x00\x00\xff\xe5\x01\xc1\x01\x9b\x00\x1d\x00\x00\x13762\x1f\x01\x16\x14\x0f\x01\x06\"/\x01&6?\x01!\"&=\x01463!'.\x01\xbe\x17\a\x14\a\xc2\a\a\xc2\a\x14\a\x17\a\x01\ax\xfe\xe1\n\x0e\x0e\n\x01\x1fx\a\x01\x01}\x16\a\a\xc2\a\x14\a\xc2\a\a\x16\a\x14\as\x0e\n \n\x0es\a\x14\x00\x00\x00\x00\x01\x00\x05\xff\xe0\x01\xbb\x01\xa1\x00\x1d\x00\x007'&4?\x0162\x1f\x01\x16\x14\x0f\x01\x06&/\x01\x11\x14\x06+\x01\"&5\x11\a\x0e\x01#\x16\a\a\xc2\a\x14\a\xc2\a\a\x16\a\x14\as\x0e\n \n\x0es\a\x14\x9e\x17\a\x14\a\xc2\a\a\xc2\a\x14\a\x16\b\x01\ax\xfe\xe1\n\x0e\x0e\n\x01\x1fx\a\x01\x00\x01\x00\x05\xff\xdf\x01\xbb\x01\xa0\x00\x1d\x00\x00%\x17\x16\x14\x0f\x01\x06\"/\x01&4?\x016\x16\x1f\x01\x1146;\x012\x16\x15\x117>\x01\x01\x9d\x16\a\a\xc2\a\x14\a\xc2\a\a\x16\a\x14\as\x0e\n \n\x0es\a\x14\xe2\x17\a\x14\a\xc2\a\a\xc2\a\x14\a\x17\a\x01\ax\x01\x1f\n\x0e\x0e\n\xfe\xe1x\a\x01\x00\x00\x00\x00\x01\x00\x00\xff\xdc\x02\x01\x01\xa5\x00\x1e\x00\x00\x01\x16\x14\x0f\x01\x06&=\x01\x0e\x03\x14\x17\x16\x06'.\x0154>\x037546\x17\x01\xf8\b\b\xb0\f\x1c1D2\x17\r\x04\x15\v#0\x1e2LP4\x1c\f\x01\x02\a\x16\a\x98\n\r\x0fX\x01\v\x19*@+\f\x0e\b\x19U,,B)\x19\t\x01P\x0f\r\n\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x10\x00!\x002\x00C\x00\x00\x11546;\x012\x1d\x01\x14+\x01\x15\x14+\x01\"%4;\x012\x16\x1d\x01\x14+\x01\"=\x01#\"5\x172\x1d\x01\x14\x06+\x01\"=\x014;\x01543\a\x14+\x01\"&=\x014;\x012\x1d\x0132\x15\x0e\n|\f\fT\f(\f\x01 \f|\n\x0e\f(\fT\f\x94\f\x0e\n|\f\fT\f\xec\f|\n\x0e\f(\fT\f\x01\f|\n\x0e\f(\fT\f\x94\f\x0e\n|\f\fT\f\xec\f|\n\x0e\f(\fT\f\x94\f\x0e\n|\f\fT\f\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x10\x00!\x002\x00C\x00\x00\x01#\"&=\x014;\x012\x1d\x0132\x1d\x01\x14%\x14\x06+\x01\"=\x014;\x0154;\x012\x15\x11\x14+\x01\"=\x01#\"=\x014;\x012\x16\x15\x17\x14+\x01\"=\x0146;\x012\x1d\x01\x14+\x01\x01\xb4|\n\x0e\f(\fT\f\xfe\xe0\x0e\n|\f\fT\f(\f\f(\fT\f\f|\n\x0e\xc0\f(\f\x0e\n|\f\fT\x01\x00\x0e\n|\f\fT\f(\f\x18\n\x0e\f(\fT\f\f\xfeX\f\fT\f(\f\x0e\n|\f\f|\n\x0e\f(\f\x00\x00\x01\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00#\x00\x00%2\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\"&=\x0146;\x01546;\x012\x16\x1d\x01\x01\xa0\r\x13\x13\r\x90\x13\r \r\x13\x90\r\x13\x13\r\x90\x13\r \r\x13\xf0\x13\r \r\x13\x90\r\x13\x13\r\x90\x13\r \r\x13\x90\r\x13\x13\r\x90\x00\x01\x00\x00\x00\x90\x01\xc0\x00\xf0\x00\x0f\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\xa0\r\x13\x13\r\xfe\x80\r\x13\x13\r\xf0\x13\r \r\x13\x13\r \r\x13\x00\x00\x00\x00\x01\x00\x13\xff\xc0\x01\xed\x01\xc0\x006\x00\x00%\x1e\x01\x0f\x01\x0e\x01/\x01\x17\x16\x06+\x01\"&?\x01\a\x06&/\x01&6?\x01'.\x01?\x01>\x01\x1f\x01'&>\x01;\x012\x16\x0f\x0176\x16\x1f\x01\x16\x06\x0f\x01\x01\xde\t\x05\x05\x13\x05\x14\b\x8b\x03\x01\x0e\v&\v\x0e\x01\x03\x8b\b\x14\x05\x13\x05\x05\t\x8e\x8e\t\x05\x05\x13\x05\x14\b\x8b\x03\x01\a\v\a&\v\x0e\x01\x03\x8b\b\x14\x05\x13\x05\x05\t\x8er\x05\x13\t\"\t\x05\x06T\xa2\v\x0e\x0e\v\xa2T\x06\x05\t\"\t\x13\x05NN\x05\x13\t\"\t\x05\x06T\xa2\a\v\a\x0e\v\xa2T\x06\x05\t\"\t\x13\x05N\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x1d\x00\x00\x00\x14\x06\"&462\x02\"\x06\x14\x16264'\x17\x14;\x012574&+\x01\"\x06\x01\xf8\x91Α\x91\xceT&\x1b\x1b&\x1bZ\b\f0\f\b\a\x05@\x05\a\x01'Α\x91Α\xfe\xd6\x1b&\x1b\x1b&\xc0\x88\v\v\x88\x06\a\a\x00\x00\x00\x05\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x06\x00\r\x00.\x009\x00C\x00\x00353\x15#\"&\x0553\x15\x14\x06#\x132\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01&54632\x16\x17>\x0132\x16\x15\x14\a!3.\x01#\"\x0e\x01\x15\x14\x163264&#\"\x0e\x01\a \xc0\xa0\r\x13\x01\x00\xc0\x13\r \r\x13\t\a\xfe \a\t\x13\r,\n4$\x1e.\x1b\x1b.\x1e$4\n\xfe\xe4V#!\x12\v\x12\v\x17\xdf\x11\x17\x17\x11\f\x11 \x19\x80\xa0\x13\x13\xa0\x80\r\x13\x01@\x13\rP\a\t\t\aP\r\x13\x13\x15$4 $$ 4$\x14\x145\x1b\v\x12\v\x11\x17\x17\"\x17\a$%\x00\x01\xff\xfd\xff\xbd\x02@\x01\xc1\x00'\x00\x00\x01\x16\x15\x14\x06\a\x06&'\x06\a\x0e\x01.\x017>\x043264&#\"\a&546;\x0126762\x02\"\x1e\x97u8[\x1b5\x13\x05\x19\x18\v\x05\t @Q}G\a\t\t\a\xa9u\x02pPP/O\x18\x05\x13\x01\xb6BN\x83\xb9\t\x06.%,.\f\v\n\x19\f\x15/>0\"\t\x0e\tT\x0e\x06Pp/)\b\x00\x01\x00\x00\xff\xc0\x01\x80\x01\xc4\x00!\x00\x00\x13\x14\x1e\x03\x15\x14\x06\"&5476\x16\x1d\x01\x14\x1632654.\x04676\x16\xd8#11#q\x9eq7\v\x1e%\x1a\x1b&\x13\x1a\x1d\x13\x06\x15\x1a\n\"\x01\xa8\x1c2,2M/OqqON9\f\f\x11U\x1b&%\x1b\x11 \x1a\x1c\"*=%\x0f\n\x00\x00\x03\x00\x00\x00\x00\x02@\x01\x80\x00\x11\x00\x1b\x00-\x00\x00%\x16\x14\a\x0e\x01#\".\x01'&47>\x012\x16\a2654&\"\x06\x14\x1672\x16\x14\x06\"&547\x1632654'6\x02=\x03\x03*\x98[\x0232\x16\x17\x16\x14\a\x0e\x01\a'654&#\"\x06\a\x17654'632\x16\x150\x15\x14\a\x01@\r\r4)%[\x98*\x03\x03\x0e\x17i\x03'@\x01_\x06\x03\x14\x05\b\x05\x04\xfd\xb3\x06\x03\x14\x05\b\x05\x04\x80\x1257\x15[\x98*\x03\x03\r0\x15I\x0eT<\x156\x10I\x02\t\r\r'8\x050\x03)\naP\a\x10\a\x1a\x1dQ%=#:\x05\b\x05\x05\x19\x06\x03\x01\xc7\x05\b\x05\x05\x19\x06\x03c\v\x11\naP\a\x10\a\x18<\x129\x1d\x1f\x02;\x012\x1f\x01\x01\xe0\x1eBB\x1eri\x05\tB\b\t\x021g+\x05\b(\b\t\x01 \x01\t\b(\b\x05+g1\x01\x01\x05\x06\x04B\t\x05i\x01\x00'2'\xb8\b\r\a\xac:\x06\f\bll\b\f\x06:\xac\x03\b\x06\x03\b\xb8\x00\x00\x00\b\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\t\x00\x15\x00!\x00-\x009\x00E\x00Q\x00o\x00\x00\x15\x11!\x11\x14\x06#!\"&%\x15\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"'\x15\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"'\x15\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x012\x16\x1d\x01!546;\x01546;\x012\x16\x1d\x013546;\x012\x16\x1d\x01\x01\xc0\x1c\x14\xfe\xa0\x14\x1c\x01@\f(\f\f(\f\f(\f\f(\f\x80\f(\f\f(\f\f(\f\f(\f\x80\f(\f\f(\f\f(\f\f(\f\x01P\x14\x1c\xfe@\x1c\x140\t\a \a\t\x80\t\a \a\t\x10\x01\x10\xfe\xf0\x14\x1c\x1c\xd8(\f\f(\f\x8c(\f\f(\ft(\f\f(\f\x8c(\f\f(\ft(\f\f(\f\x8c(\f\f(\f\x01@\x1c\x1400\x14\x1c0\a\t\t\a00\a\t\t\a0\x00\x03\x00\x00\xff\xdb\x02\x01\x01\xa5\x00\x13\x00\x1f\x00;\x00\x00%\x16\x14\x0f\x01\x06&=\x01#\"/\x017\x173546\x17%\"=\x014;\x012\x1f\x01\a'!#\a\x06+\x01\"=\x014;\x0176;\x01546\x1f\x01\x16\x14\x0f\x01\x06&5\x01\xf9\a\aP\v\x1e;\x05\x04F55 \x1e\v\xfec\f\fo\x05\x04F55\x01 \xdc\x04\x05o\f\fT\xdc\x04\x05;\x1e\vP\a\aP\v\x1eY\a\x14\aP\v\f\x10(\x04K:9(\x10\f\vg\f8\f\x04K:9\xec\x04\f8\f\xec\x04(\x10\f\vP\a\x14\aP\v\f\x10\x00\x00\x00\x01\xff\xfe\xff\xe0\x02\x00\x01\xa0\x00\x14\x00\x00\x122\x16\x14\x06#\"'\x06#\"&'&>\x027&54\x96Ԗ\x96j83AL\x02\x04\x01\x02\a\x11\x1c\x069\x01\xa0z\xacz\x133\x03\x02\x05\a\x151\x169JV\x00\x00\x00\x00\x03\x00\x00\xff\xd3\x02\x00\x01\xac\x00\x10\x00\x1f\x00?\x00\x00\x13#\"&=\x0146;\x012\x16\x1d\x01\x14\x0e\x01%\x14\x06+\x01\"=\x0146;\x012\x16\x15\a32\x16\x15\x06\x17\x14\x0e\x01\".\x0154546;\x012\x16\x1d\x01\x14\x1626=\x0146\xa4\x98\x05\a\x15\x0fh\x0f\x15\x03\x06\x01Y\a\x05\x98\f\x15\x0fh\x0f\x15\xa4\x98\x05\a\x01\x01Nt{tO\a\x05\x98\x05\a2<2\a\x01,\a\x05P\x0f\x15\x15\x0fP\x03\x06\x03\f\x05\a\fP\x0f\x15\x15\x0f|\a\x05,\tHt;;tG\x051\x05\a\a\x054-44-4\x05\a\x00\x00\x01\x00\x05\x00;\x01\xbb\x01E\x00\x14\x00\x00\x13\x17\x16\x14\x0f\x01\x0e\x01/\x01\a\x06&/\x01&4?\x0162\xf1\xc2\a\a\x16\a\x14\a\x9b\x9b\a\x14\a\x16\a\a\xc2\a\x14\x01=\xc2\a\x14\a\x16\a\x01\a\x9b\x9b\a\x01\a\x16\a\x14\a\xc2\b\x00\x00\x01\x00\x05\x00;\x01\xbb\x01E\x00\x14\x00\x007'&4?\x01>\x01\x1f\x0176\x16\x1f\x01\x16\x14\x0f\x01\x06\"\xcf\xc2\a\a\x16\a\x14\a\x9b\x9b\a\x14\a\x16\a\a\xc2\a\x14C\xc2\a\x14\a\x16\a\x01\a\x9b\x9b\a\x01\a\x16\a\x14\a\xc2\b\x00\x00\x00\x02\x00\x03\xff\xfc\x02}\x01\x84\x00!\x00C\x00\x00%\a\x06\"/\x01&4?\x0162\x1f\x015#\"/\x01&6;\x012\x16\x1d\x01762\x1f\x01\x16\x14\x05\x17\x16\x06+\x01\"&=\x01\a\x06\"/\x01&4?\x0162\x1f\x01\x16\x14\x0f\x01\x06\"/\x01\x1532\x02ve\a\x14\ae\a\a\v\a\x15\a(\xbc\t\b\x10\v\f\x10\xf4\n\x0e(\a\x15\a\v\a\xfe\xf0\x10\v\f\x10\xf4\n\x0e(\a\x15\a\v\a\ae\a\x14\ae\a\a\v\a\x15\a(\xbc\thd\a\ad\a\x14\a\v\a\a+\xb6\a\x10\v\x1e\x0e\n\xde+\a\a\v\a\x14\x16\x10\v\x1e\x0e\n\xde+\a\a\v\a\x14\ad\a\ad\a\x14\a\v\a\a+\xb6\x00\x01\x00\x00\xff\xc0\x02B\x01\xc0\x00.\x00\x00%\x06#!\x17!2\x16\x0f\x01\x16\x15\x14\x06\"&547#\x16\x15\x14\x06\"&547\x03#\"&=\x0146;\x012\x16\x1f\x01!2\x16\a\x02\x10\x04\x13\xfe\xdb\x06\x01\r\v\x0e\x02\x06 !.!\x11\xd2\x11!.!\x1cFF\n\x0e\x0e\ng\b\r\x02\t\x01\x89\f\x0e\x03\x93\x13 \x12\v\x19\x0f#\x17!!\x17\x18\x10\x10\x18\x17!!\x17 \x11\x01W\x0e\n\x10\n\x0e\v\b-\x12\v\x00\x00\x01\x00\x00\x00\x00\x02\x00\x01\x80\x00\x11\x00\x00\x012\x16\x1d\x01\x14\x06#!\"&5\x1146;\x01\x17\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\xa0@\x01@\x1c\x14\xe0\x14\x1c\x1c\x14\x01 \x14\x1c@\x00\x02\x00\x00\x00\x00\x02D\x01\x80\x00\x0f\x00 \x00\x00%\a\x0e\x01#!\"&?\x01>\x013!2\x16%\"\x0e\x01\x0f\x01\x1146;\x01\x1732\x16\x1d\x01\x02=I\a!\x0f\xfep\x0e\x0e\aI\a!\x0f\x01\x90\x0e\x0e\xfeT\x11 \x19\tE\x1c\x14\xa0@\xa0\x14\x1c\x9c|\r\x13\x18\f|\r\x13\x188\f\x15\x0fv\x01\x16\x14\x1c@\x1c\x140\x00\x00\x00\x00\x05\x00\x00\x00\x00\x02\x00\x01\x80\x00\x0f\x00\x1f\x00/\x00?\x00T\x00\x00%\"&=\x0146;\x012\x16\x1d\x01\x14\x06#3\"&=\x0146;\x012\x16\x1d\x01\x14\x06#!\"&=\x0146;\x012\x16\x1d\x01\x14\x06#3\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\x172\x16\x1d\x01\x14\x06#!\"&5\x1146;\x012\x16\x15\x11\x01M\x05\b\b\x05&\x05\b\b\x05:\x05\b\b\x05&\x05\b\b\x05\xfe\xba\x05\b\b\x05&\x05\b\b\x05:\x05\b\b\x05&\x05\b\b\x05\xdd\a\t\t\a\xfe0\r\x13\t\a \a\t\x80\b\x05\x86\x05\b\b\x05\x86\x05\b\b\x05\xe6\x05\b\b\x05\xe6\x05\b\b\x05F\x05\b\b\x05F\x05\b\b\x05\xc6\x05\b\b\x05\xc6\x05\b@\t\a \a\t\x13\r\x01P\a\t\t\a\xfe\xd0\x00\x06\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x1c\x00-\x005\x00=\x00M\x00\x00\x13!2\x16\x15\x11\x14\x06#!\"&5\x1146\x17\"\x06\x1d\x01\x14;\x012=\x014#\x052=\x014&+\x01\"\x0f\x01#\"\x1d\x01\x143\x12264&\"\x06\x1462\x16\x14\x06\"&4\x16265463264&#\"\x06\x15\x140\x01\xa0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\a\t\x06t\x06\x06\x01@\x06\t\a\xfd\x03\x02\x1e\x8a\x06\x06\xa8dFFdFTH44H4!\x0e\t\x13\r\a\t\t\a\x1a&\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c \t\a\n\x06\x06\x14\x06`\x06J\a\t\x03-\x06$\x06\xfe\xf8FdFFd\x8a4H44H4\t\a\r\x13\t\x0e\t&\x1a\a\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc1\x00\"\x00*\x00\x00\x01\x14\x06#\"'\a\x06+\x01\x15\x14\x06+\x01\x15\x14\x06+\x01\"&=\x014?\x01&54>\x0132\x16\x06\x14\x16264&\"\x02\x00gI\x11\x10\x18\a\v%\x0e\n(\x0e\np\n\x0e\a\xa2\t/Q0Ig\xb0\x1c(\x1c\x1c(\x01\x10Ig\x03\x1b\b(\n\x0e(\n\x0e\x0e\nN\n\a\xa2\x1b\x1c0Q/g\x05(\x1c\x1c(\x1c\x00\x00\x00\x06\xff\xfa\xff\xbe\x02\x82\x01\xc3\x00;\x00C\x00\x85\x00\x91\x00\xcd\x00\xd5\x00\x00\x01\a\x06'&'&?\x01&'#\"'&76;\x0167'&7676\x1f\x016\x1776\x17\x16\x17\x16\x0f\x01\x16\x1732\x17\x16\a\x06+\x01\x06\a\x17\x16\a\x06\a\x06/\x01\x06'\x16>\x01'&\x0e\x01\a\x17\x16\a\x06\a\x06/\x01\x06\a\x15\x14\x06\a\x06'.\x01=\x01&'\a\x06'&'&?\x01&7'&7676\x1f\x016754676\x172\x1e\x02\x1d\x01\x16\x1776\x17\x16\x17\x16\x0f\x01\x16\a>\x01.\x01\x06\a\x0e\x01\x1e\x016\x05\a\x06'&'&?\x01&'#\"'&76;\x0167'&7676\x1f\x016\x1776\x17\x16\x17\x16\x0f\x01\x16\x1732\x17\x16\a\x06+\x01\x06\a\x17\x16\a\x06\a\x06/\x01\x06'\x16>\x01'&\x0e\x01\x02\x00\b\x05\n\x12\x0e\b\x05\b\n\x06\x10\v\x01\x04\x04\x01\v\x10\x06\n\b\x05\b\x0e\x12\n\x05\b\x10\x10\b\x05\n\x12\x0e\b\x05\b\n\x06\x10\v\x01\x04\x04\x01\v\x10\x06\n\b\x05\b\x0e\x12\n\x05\b\x10\x1a\x12&\t\r\x12&\tg\"\x11\a\t!\r\x11\x1e\x18\x1e\f\b&&\t\v\x1f\x18\x1d\x11\r \n\a\x11!\x06\x06!\x12\b\n \f\x12\x1d\x19\x1e\v\t&&\x04\a\x06\x03\x1e\x18\x1e\x11\r \n\a\x11\"\x06{\x11\x04\x16#0\x16\x11\x04\x16#0\x01\t\b\x05\n\x12\x0e\b\x05\b\n\x06\x10\v\x01\x04\x04\x01\v\x10\x06\n\b\x05\b\x0e\x12\n\x05\b\x10\x10\b\x05\n\x12\x0e\b\x05\b\n\x06\x10\v\x01\x04\x04\x01\v\x10\x06\n\b\x05\b\x0e\x12\n\x05\b\x10\x1a\x12&\t\r\x12&\t\x01\x01\x0e\t\x03\a\f\a\t\x0e\f\x0f\v\x12\x13\n\x0f\f\x0f\t\x06\f\a\x04\t\x0f\x03\x03\x0f\t\x04\x06\r\x06\t\x0f\f\x0f\n\x13\x12\v\x0f\f\x0e\n\x06\f\a\x03\t\x0e\x03>\x0e\f#\x14\x0e\f#\xae\x11\n\x13\x1a(\x0f\n\x11\x15\v\"\b\x0e\x01\a\a\x01\x0e\b\"\v\x15\x11\n\x0f'\x1b\x13\n\x11 \x1f\x11\n\x13\x1b'\x0f\n\x10\x15\n\"\t\r\x01\a\a\x05\x06\b\x04\"\v\x14\x10\v\x10&\x1c\x13\n\x11\x1f5\x160#\x16\x05\x11\x160#\x16\x05\xa6\x0e\t\x03\a\f\a\t\x0e\f\x0f\v\x12\x13\n\x0f\r\x0e\t\a\f\x06\x04\t\x0f\x03\x03\x0f\t\x04\x06\f\a\t\x0e\r\x0f\n\x13\x12\v\x0f\f\x0e\t\a\f\a\x03\t\x0e\x03>\x0e\f#\x14\x0e\f#\x00\x00\x02\xff\xfe\xff\xe0\x02B\x01\xa0\x00\x13\x00+\x00\x00\x00\x14\x06#\"'\x06#\"&'&767&5462\x13\x16\x17\x16\x06#\"'\x06#\"&'\x1632654'\x1e\x01\x15\x14\x01\xa0zV<3+.\x02\x04\x01\x02\x03\x15\x0f&z\xac\xf4\x0f\x15\x03\x04\x05.+3<@h\x18\x12\x0ec\x8d\x019H\x01B\x84^\x19\x19\x03\x02\x05\x04\x14\")3B^\xfe\x84\"\x14\x04\n\x19\x196,\x02qO\v\t\x12Q13\x00\x00\x00\x00\x01\x00\x0f\xff\xba\x01 \x01\xc0\x00\r\x00\x00\x01\x11\a\x06&?\x01'&6?\x026\x01 \x83\x11 \x03\x19j\x0e\f\x14\x92A\t\x01\xc0\xfeHD\t\x17\x14\x91g\x0e&\x03\x15\x84\x12\x00\x00\x00\x00\x01\x00\x00\xff\xbf\x01\x81\x01\xc0\x00,\x00\x00%\x1e\x02\x15\x14\x06+\x01\x15\x14\x0f\x01\x06\"/\x01&=\x01#\"&546?\x01#\"&=\x01463!2\x16\x1d\x01\x14\x06+\x01\x01*\x19&\x17\x0e\n\x88\x01\x18\x02\n\x02\x18\x01\x88\n\x0e0&\f*\n\x0e\x0e\n\x01\x10\n\x0e\x0e\n*\xea\f -\x19\n\x0eh\x02\x020\x04\x040\x02\x02h\x0e\n$<\x12v\x0e\n0\n\x0e\x0e\n0\n\x0e\x00\x03\x00\x00\xff\xc0\x02@\x01\xc0\x001\x009\x00A\x00\x00\x012\x16\x1d\x01\x14\a\x06\a\x06\a\x1532\x16\x1d\x01\x14#!\"=\x0146;\x015.\x02'&'&=\x0146;\x015463!2\x16\x1d\x01\x05\x16\x17&'#\x15\x14%5#\x06\a676\x02(\n\x0e>0>\x1f%0\x1b%\f\xfe\xd8\f%\x1b0\x04\x0e$\x0e>0>\x0e\nh\x0e\n\x01\x10\n\x0e\xfe\xa3\x13\x17\v\x02@\x01\xc0@\x02\v\x17\x13#\x01\x80\x0e\n88-\"\a4\x16H\x1e\x1a\f\f\f\f\x1a\x1eH\x02\n&\x18\a\"-88\n\x0e(\n\x0e\x0e\n(\x81\r\b)-\x10\x17\x17\x10-)\b\r\x1a\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x15\x00/\x007\x00?\x00\x00%#\"&=\x01#\"&?\x0162\x1f\x01\x16\x06+\x01\x15\x14\x067\x15\x14\x06#!\"&=\x0146;\x01\x15\x14\x16;\x0126=\x0132\x16\x064&\"\x06\x14\x16264&\"\x06\x14\x162\x01(P\n\x0eX\r\n\t\x98\x06\x10\x06\x98\t\n\rX\x0e\xce\x0e\n\xfe0\n\x0e\x0e\n\x88!\x17P\x17!\x88\n\x0e|\f\x10\f\f\x10L\f\x10\f\f\x10@\x0e\n\xa8\x19\t\x98\x06\x06\x98\t\x19\xa8\n\x0e\bp\n\x0e\x0e\np\n\x0e\b\x17!!\x17\b\x0ej\x10\f\f\x10\f\f\x10\f\f\x10\f\x00\x02\xff\xfc\xff\xbc\x02\x04\x01\xc4\x00#\x007\x00\x00\x00\x1e\x01\a\x0e\x01\x16\x0e\x06&\x06\a\x06.\x027>\x01&>\x06\x16676\a>\x01.\x01\a\x0e\x01\a\x14\x1e\x02\x172327>\x01\x01\xd8\"\t\t\b\x02\a\x02\n'BF:;-+\r\x0f+\"\t\t\b\x02\a\x02\n'BF:;-+\r\x0f\xb9\x06\a\x03\v\a4j\x0e\x01\x03\x05\x03\x02\x02\f\x04\n^\x01\xba\"+\x0f\r+-;:FB'\n\x02\a\x02\b\t\t\"+\x0f\r+-;:FB'\n\x02\a\x02\b\tc\x02\v\r\a\x01\x0ej4\x03\a\x05\x04\x01\f,^\x00\x00\x00\x01\xff\xfc\xff\xc0\x02\x00\x01\xc4\x00\x17\x00\x00\x01\x16\x15\x14\x00#\"/\x01&?\x016\x1f\x01>\x017'&?\x016\x17\x01\xed\x13\xfe\xf0\xc0\x13\x04\x18\x05\x13p\x10\f1;[\x1b<\x0e\a0\b\x13\x01\xa7\x04\x13\xc0\xfe\xf0\x13h\x13\b0\a\x0e<\x1b\\:2\v\x11p\x12\x05\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00.\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x132654/\x01\"#\"\x0f\x01\x06\x15\x14\x1f\x01\x06\a'&#\"\x0f\x01\x06\x15\x14\x15\x17\x16\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14.x\xaa\fA\x01\x02\n\x04\x1e\x01\x06%#K\x1f\x05\a\x03\x03F\t\x0f\x03\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\x80\xaax\f\x03\x0f\tF\x03\x03\a\x05\x1fK#%\x06\x01\x1e\x04\n\x02\x01A\f\x00\x00\x01\x00\x00\xff\xc0\x01\xc0\x01\xc1\x00&\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x015462\x16\x1d\x01\x14\x06+\x01\"&=\x014&#\"\x06\x1d\x01\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x18Y}Z\x0e\n \n\x0e+\x1e\x1d*\xc0\x1c\x14\xa0\x14\x1c\x1c\x14\xa0\x14\x1cf@ZY?\x10\n\x0e\x0e\n\x10\x1e*+\x1eg\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x02@\x01\xa0\x00\t\x00\x15\x00!\x00+\x00\x00=\x01!\x15\x14\x06#!\"&7\x15\x14;\x012=\x014+\x01\"\a\x15\x14;\x012=\x014+\x01\"\x01\x15!5463!2\x16\x02@\x1c\x14\xfe \x14\x1c\xc0\f\x88\f\f\x88\f\x80\fH\f\fH\f\x02\x00\xfd\xc0\x1c\x14\x01\xe0\x14\x1c\x10\xb0\xb0\x14\x1c\x1cX(\f\f(\f\f(\f\f(\f\x01\x1000\x14\x1c\x1c\x00\x00\x00\x00\x03\x00\x00\xff\xdf\x01\xc1\x01\xa1\x00\a\x00\x1b\x001\x00\x006\x14\x06\"&462\x17\x14\x06+\x01\"&5.\x01'\"&=\x01463\x1e\x01\x17\x14\x06+\x01\"&5.\x01'\"&=\x01463\x1e\x03\x80%5&&5\xd5\t\a0\a\t\x06wT\x06\t\n\at\xa4\x97\t\a0\a\t\x06ː\x06\t\n\aV\x9dsF;5&&5%o\a\n\t\x06Tw\x06\t\a0\a\t\a\xa4t\a\n\t\x06\x90\xcb\x06\t\a0\a\t\x03Gr\x9d\x00\x00\x00\x04\x00\x00\x00\x00\x02@\x01\x80\x00\x0f\x00\x1e\x00&\x00.\x00\x00%\x15\x14\x06#!\"&=\x01463!2\x16'!\"\a7>\x023!2\x16\x1f\x01&\x06\"\x06\x14\x16264&\"\x06\x14\x16264\x02@\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe0\x14\x1c0\xfe \x10\x0fa\x04\r\x10\a\x01\f\v\x17\x06a\x0f3\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13\x90`\x14\x1c\x1c\x14`\x14\x1c\x1c<\x06\x91\x05\n\x06\r\b\x91\x06`\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02@\x01\xc0\x00,\x004\x00\x00$\x14\a\x15\x14\x06#\"/\x01&+\x01\x06\x15\x14\x17\x16\x06+\x01\"'&547#\"&=\x0146;\x012?\x01632\x16\x1d\x01\a\x11\a\x06#\x152\x17\x02@ \x10\x10\v\tUBU\x1c\x04\x1a\v\x12\x13K\x14\b\x19\x02\"\x1b%%\x1b\xc0UBU\t\v\x10\x10@!TkkT\xf5J\x12\x99\n\x16\aD5\x10\x10+\"\x10#\x115:\x10\x10%\x1b`\x1b%5D\a\x16\n\x99\xc4\x01\x1a\x1aC`C\x00\x00\x01\xff\xfd\xff\xbd\x02\x03\x01\xc3\x00;\x00\x00%\x17\x16\x06\x0f\x01\x17\x16\x06/\x01\a\x0e\x01/\x01\a\x06&/\x01\a\x06&?\x01'.\x01?\x01'&6?\x01'&6\x1f\x017>\x01\x1f\x0176\x16\x1f\x0176\x16\x0f\x01\x17\x1e\x01\a\x01\xcb.\n\b\r?\x12\x04\x14\x0e>\x10\x03\x1c\t--\t\x1c\x03\x10>\x0e\x14\x04\x12?\r\b\n..\n\b\r?\x12\x04\x14\x0e>\x10\x03\x1c\t--\n\x1b\x03\x10>\x0e\x14\x04\x12?\r\b\n\xc0-\n\x1b\x03\x10>\x0e\x14\x04\x12?\x0e\a\n..\n\a\x0e?\x12\x04\x14\x0e>\x10\x03\x1b\n--\n\x1b\x03\x10>\x0e\x14\x04\x12?\x0e\a\n//\n\b\r?\x12\x04\x14\x0e>\x10\x03\x1b\n\x00\x00\x03\x00\x00\x00\x00\x02\x00\x01\x81\x00'\x007\x00?\x00\x00%\x14\x06+\x01\x16\x06\a\x16\x06\a\x16\x0e\x01#*\x01#\"&'.\x01=\x0147>\x017632\x16\a\x06\a32\x16\x05\x15\x14\x06+\x01\"&=\x0146;\x012\x16\x064&\"\x06\x14\x162\x02\x00\x1b\x12d\r\x01\x12\n\f\x0e\x04\x10#\x1a\x01\x0e\x01#G\x12\b\f\x1c\x1fE\b\f\x1c\x1a\x1c\n\x05\t\x95\x12\x1b\xfe`\x0e\n0\n\x0e\x0e\n0\n\x0e\x1c\f\x10\f\f\x10\xf8\x11\x1a\r+\x0f\x12%\b\x18 \x0f$\x03\x01\r\t\xac\x1f\r\r-\x13\x1d+\x18\f\r\x1a\x12\xc0\n\x0e\x0e\n\xc0\n\x0e\x0e\xba\x10\f\f\x10\f\x00\x00\x00\x03\x00\x00\x00\x00\x02\x00\x01\x81\x00&\x006\x00>\x00\x00\x133&'&632\x17\x1e\x01\x17\x16\x1d\x01\x14\x06\a\x0e\x01#*\x01#\"&7.\x017.\x017#\"&546\x0532\x16\x1d\x01\x14\x06+\x01\"&=\x0146\x16264&\"\x06\x14-\x95\t\x05\n\x1c\x1a\x1c\f\bE\x1f\x1c\f\b\x12G#\x01\x0e\x01('\x06\x0e\f\n\x12\x01\rd\x12\x1b\x1b\x01\x9d0\n\x0e\x0e\n0\n\x0e\x0e\x1a\x10\f\f\x10\f\x01$\r\f\x18+\x1d\x13-\r\r\x1f\xac\t\r\x01\x03$$#\b%\x12\x0f+\r\x1a\x11\x12\x1a\x14\x0e\n\xc0\n\x0e\x0e\n\xc0\n\x0e\xd4\f\x10\f\f\x10\x00\x00\x03\xff\xff\xff\xc0\x01\x80\x01\xc0\x00'\x007\x00?\x00\x00\x132\x16\x1d\x016\x16\x176\x16\x176\x16\x15\x1c\x01\x15\x14\x06\a\x14\x0e\x01+\x01\"'.\x01'&546\x17\x16\x17546\x1332\x16\x1d\x01\x14\x06+\x01\"&=\x0146\x16\"\x06\x14\x16264\x88\x11\x1a\r+\x0f\x12%\b#$$\x03\a\n\x06\xac\x1f\r\r-\x13\x1d+\x18\f\r\x1a\x12\xc0\n\x0e\x0e\n\xc0\n\x0e\x0e\xba\x10\f\f\x10\f\x01\xc0\x1b\x12d\r\x01\x12\n\f\x0e\x06'(\x01\x0e\x01#G\x12\x05\n\x05\x1c\x1fE\b\f\x1c\x1a\x1c\n\x05\t\x95\x12\x1b\xfe`\x0e\n0\n\x0e\x0e\n0\n\x0e\x1c\f\x10\f\f\x10\x00\x00\x00\x00\x03\xff\xff\xff\xc0\x01\x80\x01\xc0\x00&\x006\x00>\x00\x00\x175\x06\a\x06&547>\x0176;\x012\x16\x17\x1e\x01\x15\x1c\x01\x15\x14\x06'\x0e\x01'\x0e\x01'\x15\x14\x06#\"&\x13546;\x012\x16\x1d\x01\x14\x06+\x01\"&64&\"\x06\x14\x162\\\r\f\x18+\x1d\x13-\r\r\x1f\xac\t\r\x01\x03$$#\b%\x12\x0f+\r\x1a\x11\x12\x1a\x14\x0e\n\xc0\n\x0e\x0e\n\xc0\n\x0e\xd4\f\x10\f\f\x10\x13\x95\t\x05\n\x1c\x1a\x1c\f\bE\x1f\x1c\f\b\x12G#\x01\x0e\x01('\x06\x0e\f\n\x12\x01\rd\x12\x1b\x1b\x01\x9d0\n\x0e\x0e\n0\n\x0e\x0e\x1a\x10\f\f\x10\f\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00%\x00\x00\x04\"&462\x16\x14\a'326=\x014&+\x01764/\x01&\"\x0f\x01\x06\x14\x1f\x01\x162?\x0164\x01gΑ\x91Α\xdbL\xb7\n\x0e\x0e\n\xb7L\a\a\v\a\x14\a\x84\a\a\x84\a\x14\a\v\a8\x91Α\x91\xce\x01H\x0e\n\x10\n\x0eH\a\x15\a\v\a\a\x85\a\x14\a\x85\a\a\v\a\x15\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00%\x00\x00\x122\x16\x14\x06\"&47\x17#\"\x06\x1d\x01\x14\x16;\x01\a\x06\x14\x1f\x01\x162?\x0164/\x01&\"\x0f\x01\x06\x14\x99Α\x91Α\xdbL\xb7\n\x0e\x0e\n\xb7L\a\a\v\a\x14\a\x84\a\a\x84\a\x14\a\v\a\x01\xb8\x91Α\x91\xce\x01H\x0e\n\x10\n\x0eH\a\x15\a\v\a\a\x85\a\x14\a\x85\a\a\v\a\x15\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00%\x00\x006462\x16\x14\x06\"'7\x15\x14\x16;\x0126=\x01\x17\x162?\x0164/\x01&\"\x0f\x01\x06\x14\x1f\x01\x162\b\x91Α\x91\xce\x01H\x0e\n\x10\n\x0eH\a\x15\a\v\a\a\x85\a\x14\a\x85\a\a\v\a\x15YΑ\x91Α\xdbL\xb7\n\x0e\x0e\n\xb7L\a\a\v\a\x14\a\x84\a\a\x84\a\x14\a\v\a\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00%\x00\x00\x00\x14\x06\"&462\x17\a54&+\x01\"\x06\x1d\x01'&\"\x0f\x01\x06\x14\x1f\x01\x162?\x0164/\x01&\"\x01\xf8\x91Α\x91\xce\x01H\x0e\n\x10\n\x0eH\a\x15\a\v\a\a\x85\a\x14\a\x85\a\a\v\a\x15\x01'Α\x91Α\xdbL\xb7\n\x0e\x0e\n\xb7L\a\a\v\a\x14\a\x84\a\a\x84\a\x14\a\v\a\x00\t\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\x05\x00\r\x00\x13\x00\x19\x00\"\x00+\x001\x007\x00=\x00\x00\x01#>\x012\x16\x06473\x16\x14\a#%#&'\x1e\x01%\x06\a#>\x01\x05\x16\x15\x14\a#64'\a\x14\x17#&473\x06\x173\x0e\x01\"&\x17673\x0e\x01%3\x16\x17.\x01\x01P\xb0\v0:0\xad\x03\xba\x03\x03\xba\x01Bl\x0f#5S\xfe\xea$\x0el\x16S\x01k\t\tr\x03\x03\xfd\x03r\t\tr\x03(\xb0\v0:0\x94$\x0el\x16S\xfe\x9fl\x0f#5S\x01 DTT\xc4@ @ \xa0\\2\x10K[2\\3K\x9e !>!@\x1e\"!>!!\u007fDTTJ2\\3K~\\2\x10K\x00\x00\x00\x02\xff\xff\xff\xbf\x02\x05\x01\xc5\x00\x1c\x00$\x00\x00\x01\x16\x06\a\x0e\x01'\a\x06\"&4?\x01&67>\x01\x17\x1e\x01\x0f\x01\x1f\x0176\x16\x00264&\"\x06\x14\x01\xfc\t\x14\x1b\x1eP&\xd5\x135%\x13\xd5\r\x12\x1d\x1bJ$\a\x03\x05J\vDK\x05\r\xfe<\x14\x0e\x0e\x14\x0e\x01S$I\x1c\x1d\x12\r\xd5\x13%5\x13\xd6%Q\x1d\x1b\x14\t\x02\r\x05KD\vJ\x05\x03\xfe\x8e\x0e\x14\x0e\x0e\x14\x00\x00\x00\x00\x06\x00\x00\xff\xf0\x02\x00\x01\xa1\x00\x15\x00+\x003\x00C\x00S\x00c\x00\x00\x13\x17\x16\x14\x0f\x02\x06\"/\x01&4?\x0162\x1f\x01762\x1f\x01\x16\x14\x0f\x02\x06\"/\x01&4?\x0162\x1f\x01762\x062\x16\x14\x06\"&4%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x052\x16\x1d\x01\x14\x06#!\"&=\x01463\x8c\x11\x03\x03I\x0f\x04\n\x04/\x04\x04\x0f\x04\n\x03\x17@\x03\n\x04\x11\x03\x04H\x0f\x04\n\x04/\x04\x04\x0f\x04\n\x03\x17@\x03\n\\(\x1c\x1c(\x1d\x01\xe1\a\t\t\a\xfe\xe0\a\t\t\a\x01 \a\t\t\a\xfe\xe0\a\t\t\a\x01 \a\t\t\a\xfe\xe0\a\t\t\a\x01\x9c\x10\x04\t\x04H\x10\x03\x030\x03\n\x04\x0f\x04\x04\x16?\x04\xa3\x11\x03\n\x04H\x0f\x04\x04/\x04\t\x04\x10\x03\x03\x16?\x04\xb1\x1c(\x1c\x1c(\f\t\a \a\t\t\a \a\t\x01@\t\a \a\t\t\a \a\t\xa0\t\a \a\t\t\a \a\t\x00\x00\x01\xff\xfb\xff\xbc\x02\x05\x01\xc0\x00\x10\x00\x00\x012\x16\x0f\x01\x11\x14\x06/\x01&=\x01'&63\x01\xe8\x10\f\v\xb9\x1a\fP\n\xb9\v\f\x10\x01\xc0\x1e\v\xb9\xfe\xfa\x0f\r\b8\b\fι\v\x1e\x00\x00\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x13\x00'\x00+\x00\x00%53\x15\x14\x06#!\"&=\x013\x15\x14\x16;\x012672\x16\x1d\x01!546;\x01546;\x012\x16\x1d\x01#5#\x15\x01@\xc0\x1d\x13\xfe`\x13\x1d\xc0\t\a`\a\t\x90\x13\x1d\xfe\x00\x1d\x13P\x1d\x13\xa0\x13\x1d@\x80p0\x90\x13\x1d\x1d\x13\x900\a\t\t\xd7\x1d\x13PP\x13\x1d0\x13\x1d\x1d\x130 \x00\x00\x01\xff\xff\xff\xbf\x02\x00\x01\xc1\x00;\x00\x00%\a\x06\"/\x01&6;\x015#\x15\x14\x06/\x01&4?\x016\x16\x1d\x0135#\"&?\x0162\x1f\x01\x16\x06+\x01\x153546\x1f\x01\x16\x14\x0f\x01\x06&=\x01#\x1532\x16\x01`O\a\x14\aO\v\f\x103e\x1d\fO\a\aO\f\x1de3\x10\r\fO\a\x14\aO\v\f\x103e\x1d\fO\a\aO\f\x1de3\x10\r\x16O\a\aO\f\x1de3\x10\f\vO\a\x14\aO\f\r\x103e\x1d\fO\a\aO\f\x1de3\x10\f\vO\a\x14\aO\f\r\x103e\x1d\x00\x00\x06\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\a\x00\x0f\x00\x1e\x00&\x00:\x00H\x00\x006\"&462\x16\x14\x04\"&462\x16\x14\a2\x16\x1d\x01\x14\x06+\x01.\x02'63*\x01&462\x16\x14\a2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x1627'\x0e\x01\a#\"&=\x0146;\x012z4&&4&\x01\x9a4&&4& \x1a&\x13\rB\x03\x14 \x14\x13\x1a\x92\\BB\\B#0C\x1c\x14\xfe\xe0\x14\x1cC0\t!F!\xd7\x1e(\x05B\r\x13&\x1a@\x1a\xe0&4&&4&&4&&4F&\x1a \r\x13\x17*!\v\x13B\\BB\\bC0\x1d\x14\x1c\x1c\x14\x1d0C\x10\x10\r\x10:#\x13\r \x1a&\x00\x00\x02\xff\xff\xff\xbf\x02\x00\x01\xc1\x00%\x00K\x00\x00\x01\x16\x14\x0f\x01\x06\"&4?\x016\x16\x17\x16\x17\x16\x0f\x01\x0e\x01\x17\x162?\x0164'&'&5&?\x016\x166\x16\x14\x0f\x01\x06&'&'&?\x01>\x01'&\"\x0f\x01\x06\x14\x17\x16\x17\x16\x15\x16\x0f\x01\x06&'&4?\x016\x01G,,D,~Y,&\a\x13\x01\x01\t\x03\a\r\x15\x01\x15\x15<\x15C\x15\x15\x05\x05\a\x01\f\x16\t\x16jY,&\a\x13\x01\x01\t\x03\a\r\x15\x01\x15\x15<\x15C\x15\x15\x05\x05\a\x01\f\x16\t\x16\n,,D,\x01\a-~,D,Y~,&\a\b\n\x1b\x1a\t\a\x0e\x15;\x15\x16\x15C\x15<\x15\x05\x04\x04\b\x12\f\x15\n\x10\xb0Y~,&\a\b\n\x1b\x1a\t\a\x0e\x15;\x15\x16\x15C\x15<\x15\x05\x04\x04\b\x12\f\x15\n\x10\t-~,D,\x00\x00\x01\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\x1c\x00\x00%\x1e\x02\x15\x14\x06#!\"&5467454632\x16\x17632\x16\x15\x14\x02\x1a\x1d.\x1bK5\xfe\x90\x0e\x14\xfe\xf4\x14\x1c\x1c\x14\x01`\x14\x1c\x0e\xfe\x8e%6%%6\x01\f\x04\x04\x03\x04\fh\f\f\x00\x00\x00\x01\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x00\x03\x00\x00\xff\xfc\x01\xc0\x01\x84\x00\x0f\x00\x1f\x00/\x00\x00\x13\"&=\x01463!2\x16\x1d\x01\x14\x06#\x05\"&=\x01463!2\x16\x1d\x01\x14\x06#\x05\"&=\x01463!2\x16\x1d\x01\x14\x06#\x10\a\t\t\a\x01\xa0\a\t\t\a\xfe`\a\t\t\a\x01\xa0\a\t\t\a\xfe`\a\t\t\a\x01\xa0\a\t\t\a\x01<\t\a(\a\t\t\a(\a\t\xa0\t\a(\a\t\t\a(\a\t\xa0\t\a(\a\t\t\a(\a\t\x00\x00\x06\x00\x00\xff\xf0\x02\x00\x01\x90\x00\a\x00\x0f\x00\x17\x00'\x007\x00G\x00\x00\x122\x16\x14\x06\"&4\x162\x16\x14\x06\"&4\x162\x16\x14\x06\"&4%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x052\x16\x1d\x01\x14\x06#!\"&=\x01463\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x1c\x01\xf0\a\t\t\a\xfe\xc0\a\t\t\a\x01@\a\t\t\a\xfe\xc0\a\t\t\a\x01@\a\t\t\a\xfe\xc0\a\t\t\a\x01\x90\x1c(\x1c\x1c(\x84\x1c(\x1c\x1c(\x84\x1c(\x1c\x1c(\f\t\a \a\t\t\a \a\t\x01@\t\a \a\t\t\a \a\t\xa0\t\a \a\t\t\a \a\t\x00\x00\x06\xff\xfc\xff\xe0\x02\x00\x01\xa0\x00*\x00:\x00J\x00Z\x00t\x00\x98\x00\x007\x1e\x01\x15\x14\x06#\"'&?\x016\x17\x163254+\x01\"/\x01&?\x0167#\"=\x014;\x012\x1d\x010\x15\x14\a%2\x16\x1d\x01\x14\x06#!\"&=\x01463%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463'\"=\x014;\x015#\"54?\x016;\x012\x1d\x0132\x1d\x01\x14#\a\"=\x014>\x0254#\"\a\x06/\x01&7632\x1e\x01\x15\x14\x0e\x03\a32\x1d\x01\x14#>\x0e\x0e\x18\x18\x15\x10\t\x06\x06\x05\v\a\b\x0e\x10\x04\b\x05\x01\x03\x06\x06\x05\x06\x17\b\b9\v\x05\x01\xa1\a\t\t\a\xfe\xc0\a\t\t\a\x01@\a\t\t\a\xfe\xc0\a\t\t\a\x01@\a\t\t\a\xfe\xc0\a\t\t\a\xa0\b\b\x10\b\b\x01\b\x02\x05\x18\b\x10\b\bD\f\x10\x13\x10\t\x06\x04\t\a\b\n\a\x0e\x1a\v\x13\x0f\n\r\x0e\v\x01'\b\b/\x04\x13\f\x12\x1a\t\a\t\n\t\x06\x03\b\t\b\x02\a\b\a\x06\x06\b\x10\b\v\x04\x01\a\x06\x9d\t\a \a\t\t\a \a\t\xa0\t\a \a\t\t\a \a\t\xfe\xc0\t\a \a\t\t\a \a\t\xe0\b\x10\b@\b\x02\x02\x10\x04\bX\b\x10\b\xa0\v\x04\x11\x19\f\f\x04\b\x04\b\x06\a\a\b\x13\a\x13\x0e\n\x11\v\t\x06\x03\b\x10\b\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x001\x00T\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01&'&54>\x01;\x012\x16\x1f\x01\x16\x15\x14\x0f\x01\x06#\"'.\x01+\x01\"\x06\x15\x14\x16\x1f\x023\x16\x17\x16\x15\x14\x06+\x01\".\x01/\x01&54?\x01632\x17\x1e\x03;\x012654&\x01\xf0\a\t\t\a\xfe \a\t\t\af\x13\x02\x01!9\"D C\x0f\x01\x01\t+\x03\x04\n\x04\x06\x1a\rB\x12\x1a\x12\rW\x16^\x04\x01\x01H4D\x15.%\n\x01\x01\t+\x03\x04\n\x04\x03\n\f\r\aB\x12\x1a\f\xe0\t\a \a\t\t\a \a\t\x1b\x1d\x06\x06\"9!)\x1e\x01\x03\x04\n\x04\x16\x01\b\f\x10\x1a\x12\r\x18\x04\x1b`\f\f\x06\x063I\x13!\x13\x01\x03\x04\n\x04\x16\x01\b\x06\n\b\x04\x1a\x12\t\x16\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00/\x00?\x00\x00\x13\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\x15\x14\x1626=\x01#\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\x15\x14\x06\"&=\x01\x012\x16\x1d\x01\x14\x06#!\"&=\x01463 \a\t\t\a\x90\a\t\t\a /B/ \a\t\t\a\x90\a\t\t\a ^\x84^\x01p\a\t\t\a\xfe`\a\t\t\a\x01\x80\t\a \a\t\t\a \a\t\xa0!//!\xa0\t\a \a\t\t\a \a\t\xa0B^^B\xa0\xfe\x80\t\a \a\t\t\a \a\t\x00\x00\x00\x05\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x13\x00\x17\x00\x1b\x00\x1f\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x135#\x1575#\x15\x055#\x1575#\x15\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\xb0\xa0\xa0\xa0\x01\x80\xa0\xa0\xa0\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\x80``\xa0``\xa0``\xa0``\x00\x00\x00\x05\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\a\x00\x0f\x00\x17\x00'\x00+\x00\x00\x13/\x01?\x01\x1f\x01\x0f\x01/\x01?\x01\x1f\x01\a\x05\x1f\x01\x0f\x01/\x01?\x01\x16\x14\a\x01\x06\"/\x01&47\x0162\x17\a7'\a\xe0\x10 \x10\x10 \xa0\x1b55\x1b\x1b55\x01E\x1b55\x1b\x1b55b\t\t\xfe\x94\t\x1a\nU\t\t\x01l\t\x1a\n;W3V\x01` \x10\x10 \x10\x10`5\x1b\x1b55\x1b\x1b\xb55\x1b\x1b55\x1b\x1b\xf7\n\x1a\t\xfe\x94\t\tU\n\x1a\t\x01l\t\t\xc2V3W\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc0\x00'\x00/\x007\x00<\x00\x00%2\x16\x1d\x01\x14\x06+\x01\x14\x06\"&5#\x14\x06\"&5#\"&5\x11463!2\x16\x1d\x0132\x1f\x01\x16\x1d\x01\x04264&\"\x06\x14\x04264&\"\x06\x1475'#\x15\x02p\a\t\t\a08P8\x808P8\x10\x14\x1c\x1c\x14\x01@\x14\x1c,\x14\x0ed\x0e\xfe,(\x1c\x1c(\x1c\x01\\(\x1c\x1c(\x1c\x80d,`\t\a \a\t(88((88(\x1c\x14\x01@\x14\x1c\x1c\x140\x0ed\x0e\x14lp\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\xb4\fdp\x00\x00\x00\x06\x00\x00\x00\x00\x02\x80\x01\x80\x00\x0f\x00\x14\x00\x19\x00!\x00&\x00+\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x1334ᒑ#\x16264&\"\x06\x14\x055\"\x06\x1575#\x14\x16\x02`\r\x13\x13\r\xfd\xc0\r\x13\x13\r\x10@%\x1b\x1b%@\xefB//B/\x01`\x1b%@@%\x01\x80\x13\r\xfe\xc0\r\x13\x13\r\x01@\r\x13\xfe\xb0\x1b%\xa0%\x1b\xf08P88Ph@%\x1b\xe0@\x1b%\x00\x00\x01\x00\a\x00W\x019\x01\x00\x00\v\x00\x00\x13!2\x16\x0f\x01\x06\"/\x01&6\x1f\x01\x02\r\n\t\x81\x06\x10\x06\x81\t\n\x01\x00\x19\t\x81\x06\x06\x81\t\x19\x00\x00\x00\x00\x01\x00\a\x00`\x019\x01\t\x00\v\x00\x00%!\"&?\x0162\x1f\x01\x16\x06\x01!\xfe\xfe\r\n\t\x81\x06\x10\x06\x81\t\n`\x19\t\x81\x06\x06\x81\t\x19\x00\x00\x00\x00\x01\x00\x17\x00'\x00\xc0\x01Y\x00\v\x00\x00\x13\x11\x14\x06/\x01&4?\x016\x16\xc0\x19\t\x81\x06\x06\x81\t\x19\x01A\xfe\xfe\r\n\t\x81\x06\x10\x06\x81\t\n\x00\x00\x00\x00\x01\x00\x00\x00'\x00\xa9\x01Y\x00\v\x00\x005\x1146\x1f\x01\x16\x14\x0f\x01\x06&\x19\t\x81\x06\x06\x81\t\x19?\x01\x02\r\n\t\x81\x06\x10\x06\x81\t\n\x00\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x13\x00\x17\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x13\x11#\x11!\x11#\x11\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\xb0\xa0\x01\x80\xa0\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\x80\x01\x00\xff\x00\x01\x00\xff\x00\x00\x00\x02\x00\r\xff\xf8\x013\x01\x88\x00\v\x00\x17\x00\x00732\x16\x0f\x01\x06\"/\x01&6%\x16\x06+\x01\"&?\x0162\x17)\xee\x10\f\vw\a\x14\aw\v\f\x01\x0f\v\f\x10\xee\x10\f\vw\a\x14\a\xa0\x1e\vw\a\aw\v\x1ei\v\x1e\x1e\vw\a\a\x00\x00\x00\x01\x00\r\xff\xf8\x013\x00\xa0\x00\v\x00\x00732\x16\x0f\x01\x06\"/\x01&6)\xee\x10\f\vw\a\x14\aw\v\f\xa0\x1e\vw\a\aw\v\x1e\x00\x00\x01\x00\r\x00\xe0\x014\x01\x88\x00\v\x00\x00%#\"&?\x0162\x1f\x01\x16\x06\x01\x17\xee\x10\f\vw\a\x14\aw\v\f\xe0\x1e\vw\a\aw\v\x1e\x00\x02\x00\x00\x00\x00\x02\x00\x01\x80\x00\x1f\x00:\x00\x00\x016\x16\x1d\x01\x14\x06#!\"&=\x0146\x17\x16\x17\x1e\x0432>\x0476\a\".\x02#&'&=\x01463!2\x16\x1d\x01\x14\a\x06\a\"\x0e\x02\x01\xf6\x03\a\x1c\x14\xfe`\x14\x1c\a\x03!y\x02\x17\x0e\x16\x15\n\t\x12\x10\x12\f\x10\x03v\xd2\b\x17\x0e\x1b\x01z4\t\x1c\x14\x01\xa0\x14\x1c\t1}\x01\x1b\x0e\x17\x01\x01\x03\x04\x04\xcc\x14\x1c\x1c\x14\xcc\x04\x03\x02\x19X\x02\x12\t\r\x06\x05\a\f\t\f\x03Ue\v\t\x15Y(\a\f\x13\x14\x1c\x1c\x14\x13\f\a&[\x15\t\v\x00\x00\x00\x01\x00\x00\xff\xc8\x01\xf9\x01\xc0\x00+\x00\x007#\"&=\x014;\x012\x1d\x01>\x013\x1e\x01\x0e\x01#\"'&?\x016\x17\x163264&#\"\x06\a32\x16\x1d\x01\x14\x06\xd4\xc8\x05\a\f0\f#a6g\x90\x01\x91g_G\n\t\"\b\t2BIggI+J\x19b\x05\a\a\xe0\a\x05\xc8\f\fN'+\x01\x91͑@\t\t\"\b\b,g\x92g'!\a\x050\x05\a\x00\x00\x01\x00\x00\xff\xbf\x02\x00\x01\xc1\x007\x00\x00%\x16\x14\x0f\x01\x06\"/\x01&4?\x01'\a\x17\x16\x14\x0f\x01\x06\"/\x01&4?\x0162\x1f\x017'\a\x06\"/\x01&4?\x0162\x1f\x01\x16\x14\x0f\x01\x17762\x17\x01\xf9\a\a|\b\x13\a\x17\a\a\x06(Q\x06\t\ts\t\x1b\t.\t\ts\t\x1b\t\x06Q(\x05\a\x14\a\x17\a\a}\a\x14\a\x16\a\a\x05q\x05\a\x14\a\xf9\a\x14\a}\a\a\x17\a\x14\a\x05(Q\x06\t\x1b\ts\t\t.\t\x1b\ts\t\t\x06Q(\x06\a\a\x17\a\x13\b|\a\a\x17\a\x14\a\x05q\x05\a\a\x00\x00\x01\xff\xff\xff\xc0\x01D\x01\xc0\x00\x19\x00\x00\x012\x16\a\x03\x06#\"&?\x01#\".\x01?\x01>\x02;\x012\x16\x0f\x01\x01(\x0e\x0e\a\xb0\a\x0e\f\x0e\x03.w\a\f\x06\x01 \x01\a\n\x06\x90\f\x0e\x03*\x01 \x18\f\xfe\xd0\f\x12\f\xc2\b\f\a\xf0\x06\n\x05\x13\v\x82\x00\x00\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x0f\x005\x00E\x00U\x00\x0072\x16\x1d\x01\x14\x06+\x01\"&=\x014637\x15#546;\x015#\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\x1532\x16\x1d\x01#5#\x15#5\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463!2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x80\r\x13\x13\r`\r\x13\x13\rH0\x17\x0f\xca(\r\x13\x13\r\x80\r\x13\x13\r(\xca\x0f\x170\xc00H\r\x13\x13\r`\r\x13\x13\r\x01P\r\x13\x13\r`\r\x13\x13\r`\x13\r`\r\x13\x13\r`\r\x13P0:\x0f\x17@\x13\r`\r\x13\x13\r`\r\x13@\x17\x0f:000P\x13\r`\r\x13\x13\r`\r\x13\x13\r`\r\x13\x13\r`\r\x13\x00\x00\x00\x02\xff\xfe\xff\xc0\x02B\x01\xc0\x00-\x00C\x00\x00%\x16\x06'.\x01\x06\a\x06\"'0.\a#\"\x06\a\x06\"'.\x01\x06\a\x06&7>\x0175462\x16\x1d\x01\x1e\x01\x05632\x17\x15\x14\x06#\"&'&>\x01\x16\x17\x163265\x02@\x01\f\b\x1a57\x19\x04\f\x03\x04\x04\b\b\v\x0e\x0f\x12\t\x1f(\x14\x03\f\x04\x1974\x1b\b\f\x01\x15\x8f\\\x13\x1a\x13\\\x8f\xfe\xd5\x0f\x11\x10\x10/!\x19*\b\x05\f\x19\x17\x05\x04\v\a\t\xa7\b\n\a\x1c\r#+\a\a\a\b\f\v\f\n\b\x05'\"\a\a+$\x0e\x1c\a\n\bcz\n\x12\r\x13\x13\r\x12\nzx\x0e\x0e\x82!/\x1d\x18\r\x18\t\f\f\v\t\a\x00\x04\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x15\x00\x1d\x00/\x008\x00\x00\x13\x15#\"&5\x1146;\x0162\x1732\x16\x1d\x01#\"\x066\"\x06\x14\x16264\x173\x15\x14\x06+\x01\"&5\x1146;\x01\x15\x14\x167\x15#532\x1f\x01\x16\x80h\n\x0e\x0e\nQ\x12J\x12Q\n\x0e\x88\x17!*\x14\x0e\x0e\x14\x0e\xa0h\x0e\n\xf0\n\x0e\x0e\n\x88\x0er`\x06\n\aB\a\x01\b\xe8\x0e\n\x01P\n\x0e \x0e\nH!y\x0e\x14\x0e\x0e\x14\xea\xc8\n\x0e\x0e\n\x010\n\x0eh\n\x0e&\x06`\aB\a\x00\x00\x00\x00\x03\x00\x00\xff\xbf\x01`\x01\xc1\x00\r\x00 \x000\x00\x00\x1753\x15\x14\x0f\x01\x06+\x01\"/\x01&\x034632\x16\x15\x14\a\x06\a0\x15#41&'&7264&#\"\x06\x15\x14\x1626546`\xa0\x05\x11\n\x11>\x11\t\x12\x05`dKJg,%\x0f\xa0\x0f%,\xb0\a\t\t\a.B\t\x0e\t/\x06&&\n\b\x1a\x0e\x0e\x1a\b\x01 GigIB2+0\x01\x010+2\x92\t\x0e\tB.\a\t\t\a!/\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\a\x00\x0f\x00U\x00\x00$\"&462\x16\x14\x06462\x16\x14\x06\"7\x1e\x01\x1d\x01\x14\x06#!\"&=\x01467\x15\x0e\x01\x15\x14\x162654&'5\x16\x17\x1627267\x15\x0e\x01\x1d\x01\x14\x1f\x01\x16?\x016/\x01546\x16\x1d\x01\a\x06\x1f\x01\x16?\x016=\x014&'\x01\x15jKKjK\xf8\x0e\x14\x0e\x0e\x14\xca6J\x1a\x13\xfe\x9a\x13\x1a@0\x11\x17!.!\x16\x12\f\v\x1c:\x1d\x01\x04\x01\x1c$\x0e\x1f\b\x01\x04\x01\b\x1300\x13\b\x01\x04\x01\b \r$\x1c\xc0KjKKj\xfd\x14\x0e\x0e\x14\x0e\x9f\x02N5-\x13\x1a\x1a\x13-1K\bQ\x05\x1d\x13\x17!!\x17\x13\x1d\x05R\x02\x03\n\n\x01\x01.\x05,\x1d,\x0e\x02\x04\x01\a\x10\b\x02\x03\x1b \x19\x19\x1e\x1c\x04\x02\b\x10\a\x01\a\x02\r*\x1d,\x05\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc2\x00B\x00J\x00\x00\x012\x1e\x01\x15\x14\a\x15\x14\x06#\"&'.\x01=\x0146?\x016\x16\x1f\x01\x16\x06\x0f\x01\x15\x14\x16326=\x01'.\x01?\x01>\x02\x1f\x01\x1e\x01\x1d\x01\x14\x06\a\x1e\x02326=\x01&7>\x01\x16264&\"\x06\x14\x01\xbf\x12\x1e\x11 gIGg\x027I\v\b?\n\x10\x02\x03\x02\v\t\x1f9('8\x1f\n\v\x02\x04\x01\b\f\a?\b\vI7\x02\x1e3\x1d.B!\x01\x01$\x14\x0e\t\t\x0e\t\x01P\x11\x1d\x12%\x12qEc_D\vY9\x9b\t\r\x02\f\x02\v\t\x10\n\x10\x02\x06{(8:'z\x06\x02\x10\n\x10\x06\n\x04\x01\r\x02\r\t\x9b9X\f\x1b.\x1a=+q\x12&\x1a%P\t\x0e\t\t\x0e\x00\x00\x00\x04\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\t\x00\r\x00\x17\x00!\x00\x00\x17\x1146;\x012\x16\x15\x11\x03\x1535\x17\x11\x14\x06+\x01\x1132\x16\x01#\"&5\x1146;\x01\x80\x1c\x14\xa0\x14\x1c\xc0\x80\xc0\x1c\x1400\x14\x1c\xfe`0\x14\x1c\x1c\x140 \x01\x90\x14\x1c\x1c\x14\xfep\x01\x80 P\xff\x00\x14\x1c\x01`\x1c\xfe\xbc\x1c\x14\x01\x00\x14\x1c\x00\x00\x00\x02\xff\xff\xff\xc0\x01\xc1\x01\xc0\x00\x05\x00+\x00\x00\x16\"&53\x147\x16\x15\x14\x06#!\".\x0154767>\x0254675462\x16\x1d\x01\x1e\x02\x15\x14\x1e\x01\x17\x16\xfa4&\x80\x97\t\x12\x0e\xfe\x80\t\x0f\b\t\x01\x02\x0f\x11\x14H8\x13\x1a\x13%:!\x14\x11\x0f\x02@%\x1b\x1bq\n\f\r\x13\t\x0f\b\f\n\x01\x03\x0f\x18C,:V\v\x15\r\x13\x13\r\x15\a,B&,C\x18\x0f\x03\x00\x00\x03\xff\xf9\xff\xe0\x02\x80\x01\xa0\x00\x11\x00\x19\x00'\x00\x007\"&=\x01463!2\x16\x14\x06+\x01\x14\x06#\x13#\x153264&\x13!\"'&763!2\a\x06\a\x06\xc0(8\x0e\n\x01\x885KK5 8(\x80 \x1a&&\x16\xfe\x00!\f\t\r\x02\x03\x02H\x0f\x04\x05\x1a\b@8(\xe8\n\x0eKjK(8\x01 \x80&4&\xfe\x80 \x18\a\x01\x17\x1d\t\x03\x00\x00\x00\x00\a\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1b\x00'\x003\x00;\x00G\x00S\x00o\x00\x00\x05\x15!54;\x01\x1146;\x01546;\x012\x16\x1d\x0132\x16\x15\x1132\x03#\"\x1d\x01\x14;\x012=\x014\a32=\x014+\x01\"\x1d\x01\x14\x17#\"\x1d\x013547#\"\x1d\x01\x14;\x012=\x014\a4+\x01\"\x1d\x01\x14;\x0125'3\x15\x14;\x012=\x0132=\x014+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14\x01\xc0\xfe@\f\x14\x0e\nX\x0e\np\n\x0eX\n\x0e\x14\f\x8c(\f\f(\f\xb4(\f\f(\ft(\f@4(\f\f(\f\x80\f(\f\f(\f\n\x1a\x06\x14\x06\x1a\x06\x06\x1a\x06\x14\x06\x1a\x06,\x14\x14\f\x01h\n\x0eH\n\x0e\x0e\nH\x0e\n\xfe\x98\x01 \f(\f\f(\f@\f(\f\f(\f\x80\fTT\f`\f(\f\f(\f\f\f\f(\f\f\xf4\x1a\x06\x06\x1a\x06\x14\x06\x1a\x06\x06\x1a\x06\x14\x06\x00\x00\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00'\x00/\x00K\x00S\x00X\x00\x00%2\x16\x1d\x01\x14\x06+\x01\x14\x06\"&5#\x14\x06\"&5#\"&5\x11463!2\x16\x1d\x0132\x1f\x01\x16\x1d\x01\x04264&\"\x06\x14754+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132\x16264&\"\x06\x1475'#\x15\x02p\a\t\t\a08P8\x808P8\x10\x14\x1c\x1c\x14\x01@\x14\x1c,\x14\x0ed\x0e\xfe,(\x1c\x1c(\x1c\xc0\b8\b0\b8\b\b8\b0\b8\b\x9c(\x1c\x1c(\x1c\x80d,`\t\a \a\t(88((88(\x1c\x14\x01@\x14\x1c\x1c\x140\x0ed\x0e\x14lp\x1c(\x1c\x1c(\xdc0\b8\b\b8\b0\b8\b\b8\xf0\x1c(\x1c\x1c(\xb4\fdp\x00\x05\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\r\x00\x11\x00\x1b\x00%\x00I\x00\x00\x17\x113546;\x012\x16\x1d\x013\x11\x03\x1535\x17\x11\x14\x06+\x01\x1132\x16\x01#\"&5\x1146;\x01\x054&+\x0154&+\x01\"\x06\x1d\x01#\"\x06\x1d\x01\x14\x16;\x01\x15\x14\x16;\x0126=\x013265` \x1c\x14\xa0\x14\x1c \xe0\x80\xc0\x1c\x14\x10\x10\x14\x1c\xfe@\x10\x14\x1c\x1c\x14\x10\x01 \t\a0\t\a \a\t0\a\t\t\a0\t\a \a\t0\a\t \x01`0\x14\x1c\x1c\x140\xfe\xa0\x01\x80 P\xff\x00\x14\x1c\x01`\x1c\xfe\xbc\x1c\x14\x01\x00\x14\x1c\x90\a\t0\a\t\t\a0\t\a \a\t0\a\t\t\a0\t\a\x00\x00\x00\x01\x00\x00\xff\xe0\x02\x80\x01\xa0\x00/\x00\x00%\x16\x14\x0f\x02#\a32\x14+\x01535#\a#'53535'575#5#573\x1735#532\x14+\x01\x173\x17\x02 ``\x800\x18u(\x15\x15s\x100C\"\v\b0@@0\b\v\"C0\x10s\x15\x15(u\x180\xe0\x15\x16\x15\x10\x10\x94\f\f\xa4P\vE\x10\x03\b*\b\x03\x10E\vP\xa4\f\f\x94\x10\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x19\x00\"\x00.\x00:\x00\x00\x012\x16\x1d\x01\x14\x06\x0f\x01\x15\x14\x06#!\"&5\x11463!2\x16\x1d\x01\x1754&+\x01\x1576\x0626=\x014&\"\x06\x1d\x01\x14\x0626=\x014&\"\x06\x1d\x01\x14\x01p!/\x1a\x15Q\x0e\n\xfe\xf0\n\x0e\x0e\n\x01\x10\n\x0e@\t\a07\t\xb7\x0e\t\t\x0e\tW\x0e\t\t\x0e\t\x01`/!\x81\x18'\n$*\n\x0e\x0e\n\x01\x90\n\x0e\x0e\n(с\a\t\xb8\x19\x04E\t\a\xe0\a\t\t\a\xe0\a\t\t\a\xe0\a\t\t\a\xe0\a\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x003\x00\x00\x01\x11\x14\x06#!\"&5\x11463!2\x16\a#\"\x06\x1d\x01#54&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x013\x15\x14\x16;\x0126=\x014&\x01\xc0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1cp \a\t\x80\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\x01p\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1cD\t\aPP\a\t\t\a\xe0\a\t\t\aPP\a\t\t\a\xe0\a\t\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00+\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0554+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01@\f\\\f8\f\\\f\f\\\f8\f\\\f\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfc8\f\\\f\f\\\f8\f\\\f\f\\\x00\x02\x00\x18\x00\x1f\x01\xa9\x01a\x00\x15\x00*\x00\x00?\x0162\x1f\x01\x16\x14\x0f\x01\x17\x1e\x01\x06\x0f\x01\x06\"/\x01&4\a&4?\x0162\x1f\x01\x16\x14\x0f\x01\x17\x16\x14\x0f\x01\x06\"'\xe0\x88\a\x14\a\x16\a\a``\x05\x03\x03\x05\x16\a\x14\a\x88\a\xb9\a\a\x88\a\x14\a\x16\a\a``\a\a\x16\a\x14\aш\a\a\x17\a\x14\a``\x05\f\r\x04\x17\a\a\x88\a\x14\x1b\a\x14\a\x88\a\a\x17\a\x14\a``\a\x14\a\x17\a\a\x00\x02\x00\x18\x00\x1f\x01\xa8\x01a\x00\x14\x00+\x00\x007\a\x06\"/\x01&4?\x01'&4?\x0162\x1f\x01\x16\x147\x16\x14\x0f\x01\x06\"/\x01&4?\x01'&4?\x01>\x012\x16\x17\xe0\x88\a\x14\a\x16\a\a``\a\a\x16\a\x14\a\x88\a\xb9\a\a\x88\a\x14\a\x16\a\a``\a\a\x16\x04\t\t\t\x03\xaf\x88\a\a\x17\a\x14\a``\a\x14\a\x17\a\a\x88\a\x14\x1b\a\x14\a\x88\a\a\x17\a\x14\a``\a\x14\a\x17\x03\x04\x04\x03\x00\x00\x00\x02\xff\xff\xff\xf8\x01A\x01\x88\x00\x14\x00+\x00\x007\x17\x16\x14\x0f\x01\x06\"/\x01\a\x06\"/\x01&4?\x0162'62\x1f\x01\x16\x14\x0f\x01\x06\"/\x01\a\x0e\x01\"&/\x01&47\xb1\x88\a\a\x17\a\x14\a``\a\x14\a\x17\a\a\x88\a\x14\x1b\a\x14\a\x88\a\a\x17\a\x14\a``\x04\t\t\t\x03\x17\a\a\xc0\x88\a\x14\a\x16\a\a``\a\a\x16\a\x14\a\x88\a\xb9\a\a\x88\a\x14\a\x16\a\a``\x04\x03\x03\x04\x16\a\x14\a\x00\x00\x00\x02\xff\xff\xff\xf8\x01A\x01\x88\x00\x14\x00)\x00\x007'&4?\x0162\x1f\x01762\x1f\x01\x16\x14\x0f\x01\x06\"\x17\x06\"/\x01&4?\x0162\x1f\x01762\x1f\x01\x16\x14\a\x8f\x88\a\a\x17\a\x14\a``\a\x14\a\x17\a\a\x88\a\x14\x1b\a\x14\a\x88\a\a\x17\a\x14\a``\a\x14\a\x17\a\a\xc0\x88\a\x14\a\x16\a\a``\a\a\x16\a\x14\a\x88\a\xb9\a\a\x88\a\x14\a\x16\a\a``\a\a\x16\a\x14\a\x00\x01\x00\x18\x00\x1f\x00\xe9\x01a\x00\x15\x00\x00?\x0162\x1f\x01\x16\x14\x0f\x01\x17\x1e\x01\x06\x0f\x01\x06\"/\x01&4 \x88\a\x14\a\x16\a\a``\x05\x03\x03\x05\x16\a\x14\a\x88\aш\a\a\x17\a\x14\a``\x05\f\r\x04\x17\a\a\x88\a\x14\x00\x01\x00\x18\x00\x1f\x00\xe8\x01a\x00\x14\x00\x007\a\x06\"/\x01&4?\x01'&4?\x0162\x1f\x01\x16\x14\xe0\x88\a\x14\a\x16\a\a``\a\a\x16\a\x14\a\x88\a\xaf\x88\a\a\x17\a\x14\a``\a\x14\a\x17\a\a\x88\a\x14\x00\x01\xff\xff\x00X\x01A\x01(\x00\x14\x00\x00\x13\x17\x16\x14\x0f\x01\x06\"/\x01\a\x06\"/\x01&4?\x0162\xb1\x88\a\a\x17\a\x14\a``\a\x14\a\x17\a\a\x88\a\x14\x01 \x88\a\x14\a\x16\a\a``\a\a\x16\a\x14\a\x88\a\x00\x00\x00\x00\x01\xff\xff\x00X\x01@\x01(\x00\x14\x00\x007'&4?\x0162\x1f\x01762\x1f\x01\x16\x14\x0f\x01\x06\"\x8f\x88\a\a\x17\a\x14\a``\a\x14\a\x17\a\a\x88\a\x14`\x88\a\x14\a\x16\a\a``\a\a\x16\a\x14\a\x88\a\x00\x02\x00\x00\xff\xc0\x02@\x01\xc0\x00\x1f\x00#\x00\x00\x012\x16\x15\x11\x14\x06+\x01\x1732\x16\x14\x06#!\"&46;\x017#\"&5\x11463\x01\x11!\x11\x02\x10\x14\x1c\x1c\x14\xc0\x10H\n\x0e\x0e\n\xfe\xf0\n\x0e\x0e\nH\x10\xc0\x14\x1c\x1c\x14\x01\xd0\xfe@\x01\xc0\x1c\x14\xfe\xc0\x14\x1c0\x0e\x14\x0e\x0e\x14\x0e0\x1c\x14\x01@\x14\x1c\xfe\xa0\x01 \xfe\xe0\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x17\x00!\x00%\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x14\x16;\x01267\x13\x11!\x11463!2\x16\x03\x11!\x11\x02p\a\t&\x1a\xfe\x00\x1a&\t\a\xef\x14\r=\x0e\x12\x01\xc2\xfe\x00\x1c\x14\x01\xa0\x14\x1c@\xfe\x80 \t\a\x10\x1a&&\x1a\x10\a\t\v\x15\x11\x0f\x01p\xfe\xb0\x01P\x14\x1c\x1c\xfe\xdc\x01\x00\xff\x00\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x0f\x00\x17\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x12264&\"\x06\x14\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\xa3\x1a\x13\x13\x1a\x13\x01\xc0\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c\xfe \x13\x1a\x13\x13\x1a\x00\x00\x02\x00\x00\xff\xc0\x01@\x01\xc0\x00\x0f\x00\x17\x00\x00\x012\x16\x15\x11\x14\x06+\x01\"&5\x11463\x12264&\"\x06\x14\x01\x10\x14\x1c\x1c\x14\xe0\x14\x1c\x1c\x14c\x1a\x13\x13\x1a\x13\x01\xc0\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c\xfe \x13\x1a\x13\x13\x1a\x00\x00\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x1c\x009\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"\x06\x1d\x01#2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"\x06\x1d\x01\x01\xd0\x14\x1c\x1c\x14\x80\x14\x1c^B\b\n\x0e\x0e\n\b\x1a&\xd0\x14\x1c\x1c\x14\x80\x14\x1c^B\b\n\x0e\x0e\n\b\x1a&\xc0\x1c\x14\x80\x14\x1c\x1c\x14\xf0B^\x0e\n0\n\x0e&\x1a@\x1c\x14\x80\x14\x1c\x1c\x14\xf0B^\x0e\n0\n\x0e&\x1a@\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x1c\x009\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x0126=\x01#\"&=\x01463#2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x0126=\x01#\"&=\x01463\x01\xd0\x14\x1c^B\b\n\x0e\x0e\n\b\x1a&P\x14\x1c\x1c\x14\xa0\x14\x1c^B\b\n\x0e\x0e\n\b\x1a&P\x14\x1c\x1c\x14\x01\xa0\x1c\x14\xf0B^\x0e\n0\n\x0e&\x1a@\x1c\x14\x80\x14\x1c\x1c\x14\xf0B^\x0e\n0\n\x0e&\x1a@\x1c\x14\x80\x14\x1c\x00\x00\x00\x00\a\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\a\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x007\x00\x00\x00\x14\x06\"&462\x022\x16\x14\x06\"&462\x16\x14\x06\"&4 \x14\x06\"&462\x162\x16\x14\x06\"&4$2\x16\x14\x06\"&4\x002\x16\x14\x06\"&4\x010\x1c(\x1c\x1c(((\x1c\x1c(\x1c\xec(\x1c\x1c(\x1c\xfe\xc0\x1c(\x1c\x1c(\x15(\x1c\x1c(\x1c\x01B(\x1c\x1c(\x1c\xfe\xf6(\x1c\x1c(\x1c\x01\xa4(\x1c\x1c(\x1c\xfe`\x1c(\x1c\x1c(\xec\x1c(\x1c\x1c((\x1c\x1c(\x1c\x93\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x01B\x1c(\x1c\x1c(\x00\x01\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x00\x122\x16\x14\x06\"&4\x99Α\x91Α\x01\xb8\x91Α\x91\xce\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00)\x00\x00\x122\x16\x14\x06\"&4\x04\"\x06\x14\x16264&\"\x06\x14\x16264\x1764.\x01\x06\a\x06\"'.\x01\x0e\x01\x14\x17\x162\x91Α\x91Α\x01U\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13\xa3\x04\x06\t\n\x04#n#\x04\n\t\x06\x04-\x8c\x01\xb8\x91Α\x91\xce\x17\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x97\x04\v\a\x05\x02\x05**\x05\x02\x05\a\v\x046\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00%\x00\x00\x122\x16\x14\x06\"&4\x04\"\x06\x14\x16264&\"\x06\x14\x16264\x17\x16>\x01'&\"\a\x06\x1e\x01762\x91Α\x91Α\x01U\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13\x8a\a\x12\x05\x05-\x8c-\x06\a\x11\a#n\x01\xb8\x91Α\x91\xce\x17\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\xc7\b\x04\x10\b66\a\x11\x03\a*\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00\x00\x122\x16\x14\x06\"&4\x16\"\x06\x14\x16264\x1724+\x01\"\x1436264&\"\x06\x14\x91Α\x91Α\xb5\x1a\x13\x13\x1a\x13\x90\x10\x10\xc0\x10\x10\xa3\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xce\x17\x13\x1a\x13\x13\x1a\xad \x80\x13\x1a\x13\x13\x1a\x00\x00\x00\x04\xff\xff\x00 \x02\x81\x01`\x00\x11\x00-\x005\x00=\x00\x00\x012\x16\x14\x06#\"&'#\x0e\x01#\"&463\x1754+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132\x16264&\"\x06\x146264&\"\x06\x14\x01\xe0B^^B\x1cC\x13\\\x13C\x1cB^^BX\f4\f\x18\f4\f\f4\f\x18\f4\f\xc7\"\x17\x17\"\x17W\"\x17\x17\"\x17\x01`^\x84^\x1c\x14\x14\x1c^\x84^\xac\x18\f4\f\f4\f\x18\f4\f\f4@\x17\"\x17\x17\"I\x17\"\x17\x17\"\x00\r\x00\x00\x00\x00\x02@\x01\x80\x00\x0f\x00\x1b\x00'\x003\x00?\x00K\x00W\x00c\x00o\x00{\x00\x87\x00\x93\x00\x9f\x00\x00)\x01\"&5\x11463!2\x16\x15\x11\x14\x06\x0154+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012\x0554+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012\x0554+\x01\"\x1d\x01\x14;\x012%54+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012\x02\x10\xfe \x14\x1c\x1c\x14\x01\xe0\x14\x1c\x1c\xfe\\\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f\xfe\xb0\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f\xfe\xb0\f(\f\f(\f\x01 \f\xe8\f\f\xe8\f`\f(\f\f(\f\x1c\x14\x01 \x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x01\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\fT(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\fT(\f\f(\f\f(\f\f(\f\f(\f\f(\f\x00\x04\x00\b\xff\xc0\x02\x00\x01\xc1\x00\a\x00.\x004\x00X\x00\x00\x13\x1e\x01\x17\x15.\x01'76\x16\x1d\x01\x14\a\x06#\"&#\"\a\x15\x14\x06+\x01\"&5\x11&546\x17\x1e\x02\x17\x16\a62\x1632\a5\x06\a\x156%5\x06\a\x15\x06'5&'\x15&\a5\x06\a\x1567\x156\x17\x15\x16\x175\x167\x15675\x06\a56\xf3\t2\x0f\t2\x0f\xdf\x10\x1e\x0e;?$i\x19>4\x0e\n\x10\n\x0e\x18\"\x18\x0e\x18\x0f\x01\x01\x05!Gh\x1a0\xe4\"(#\x01M'##&\f>&#\x137.\x1c(!\v?&#%% *\x1b\x01\x02\x02\x11\x03D\x02\x11\x03\xbf\a\x12\x12\xf3\x11\t)\"\x16^\n\x0e\x0e\n\x01\x82\x11\x1d\x18!\x01\x01\x0e\x17\x0e\r\v\f#\xe3H\x03\x0fF\r\x8aG\x11\x06H\x06\tD\x02\x14D\v\x05G\x01\x15F\x11\x04F\x03\aD\x02\x14D\v\x05H\x04\x18F\x14\x06G\x04\x00\x00\x02\xff\xff\xff\xe0\x02\x80\x01\x9b\x00\x14\x00$\x00\x00%\a\x06\"/\x01&4?\x01'&4?\x0162\x1f\x01\x16\x14\x05\x14\x06#!\"&=\x01463!2\x16\x15\x01\x02\xc2\a\x14\a\x17\a\a\x9a\x9a\a\a\x17\a\x14\a\xc2\a\x01w\x0e\n\xfe\xd0\n\x0e\x0e\n\x010\n\x0e\xaf\xc2\a\a\x16\a\x14\a\x9b\x9b\a\x14\a\x16\a\a\xc2\a\x14\xbe\n\x0e\x0e\n \n\x0e\x0e\n\x00\x00\x03\xff\xfa\xff\xbd\x02\x86\x01\xc3\x00\v\x00\x1b\x00+\x00\x00\x05'&7\x136\x1f\x01\x16\a\x03\x06'\x06/\x01&?\x016\x1f\x01\x16\x0f\x01\x17\x16\a\x05\x06/\x01&?\x01'&?\x016\x1f\x01\x16\a\x01\x17=\f\x04\x88\x03\f=\f\x04\x88\x04}\b\t\x90\n\n\x90\t\b+\t\t[[\t\t\x01\x1c\t\b+\t\t[[\t\t+\b\t\x90\n\n@\x12\x03\f\x01\xd6\f\x03\x12\x03\f\xfe*\ft\t\b\x87\t\t\x87\b\t.\t\bPP\b\t/\b\t.\t\bPP\b\t.\t\b\x87\t\t\x00\x00\x00\x02\xff\xff\xff\xdc\x02@\x01\xa5\x00\x1a\x000\x00\x00\x1376\x16\x1d\x01\x1e\x03\x15\x14\x06\a\x06&76&'\x15\x14\x06/\x01&4\a&4?\x016\x16\x1d\x01\a\x0e\x01\x151\x14\x16\x1f\x01\x15\x14\x06'\x88\xb0\f\x1c3N>!0#\v\x15\x04\x1c9T\x1c\f\xb0\bx\b\b\xb0\f\x1cm\b\v\v\bm\x1c\f\x01\x02\x98\n\r\x0fS\x04\x15)F/,U\x19\b\x0e\fZR\nT\x0f\r\n\x98\a\x16\x1d\a\x16\a\x98\n\r\x0f\x10^\a\x18\v\v\x18\a^\x10\x0f\r\n\x00\x00\x00\x01\xff\xfb\xff\xbd\x02\t\x01\xc9\x00\x0f\x00\x00\x016\x16\a\x03\x0e\x01.\x01=\x01#\"&67\x01\xbd\x1c/\f\xbf\b \x1e\x17\xb0\x19\x1b\n\x17\x01\xbc\f/\x1c\xfe`\x11\x0e\x06\x1a\x12\xb0%-\v\x00\x00\x00\x00\x01\x00\x00\xff\xc0\x02\a\x01\xc7\x007\x00\x00%2\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&5\x11\a3\x15#\"&5\x11#\"&=\x0146;\x01546;\x012\x16\x15\x117#5376\x1f\x01\x16\x0f\x01\x15\x01\xe8\n\x0e\x0e\n(\x0e\n0\n\x0e\x93s\xe8\n\x0e(\n\x0e\x0e\n(\x0e\n0\n\x0e\x93s\xd3;\v\f\x16\f\f;`\x0e\n0\n\x0e(\n\x0e\x0e\n\x01\x1b\x93`\x0e\n\x01\b\x0e\n0\n\x0e(\n\x0e\x0e\n\xfe\xe5\x93`;\f\f\x16\f\v;\xf3\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x006\x00>\x00F\x00N\x00\x00\x01\x14\x06\a\x06\a\x0e\x02\a\x06\a\x06\a\x1e\x01\x15\x14\x06\"&54>\x0175.\x015462\x16\x15\x14\x06\a\x1567>\x02767.\x025462\x16$\"\x06\x14\x16264\x02264&\"\x06\x14\x12\"\x06\x14\x16264\x01\x80\x1e\x18\x01\x15\r- \x1c2\x10\n\x05\x17\x1c/B/\x0e\x1a\x10\x19\x1f/B/\x1f\x19\x189\x18\x18\x1e\a\v\x01\x11\x1a\x0f/B/\xfe\xd7\x0e\t\t\x0e\t\x17\x0e\t\t\x0e\t\xf7\x0e\t\t\x0e\t\x010\x1a*\b*\x1a\x10\x13\x06\x02\x05\b\x05\b\t)\x19!//!\x12\x1f\x16\x05\xc8\a*\x1b!//!\x1b*\a\x90\v\x06\x02\x03\v\t\r\x18\x05\x16 \x12!///\t\x0e\t\t\x0e\xfe\x89\t\x0e\t\t\x0e\x017\t\x0e\t\t\x0e\x00\x00\x03\xff\xff\xff\xbf\x02\x01\x01\xc1\x00\x17\x00/\x00?\x00\x00%\x16\x0f\x01\x06\"&4?\x016\x1f\x01\x16\x0f\x01\x06\x14\x162?\x016\x17/\x01&?\x0162\x16\x14\x0f\x01\x06/\x01&?\x0164&\"\x0f\x01\x06\x13\x06\"'\x01&4?\x0162\x17\x01\x16\x14\a\x010\t\t-,~Y,-\t\b(\b\b-\x15*<\x15-\b\b\x10(\t\t-,~Y,-\t\b(\b\b-\x15*<\x15-\b\xe2\a\x14\a\xfeG\a\a\x17\a\x14\a\x01\xb9\a\a*\b\t-,Y~,-\t\t(\b\b-\x15<*\x15-\b\b\xdc(\b\t-,Y~,-\t\t(\b\b-\x15<*\x15-\b\xfe\xa1\a\a\x01\xb9\a\x14\a\x17\a\a\xfeG\a\x14\a\x00\x02\x00\x18\xff\xc0\x01z\x01\xc0\x00)\x001\x00\x00\x132\x16\x15\x14\x0e\x03\x1d\x01\x14\x06+\x01\"&=\x014>\x027>\x0154&#\"\x0e\x01\a\x0e\x01/\x01.\x0176\x122\x16\x14\x06\"&4\xcaBn\x1a%%\x1a\x0e\nH\n\x0e\r\x1f\x13\x13\x1b\x16,\x19\x13\x1d\x14\x0f\x06\x13\b+\b\x03\x06?F:((:(\x01\xc0Z@ 1\x1b\x14\x15\v\x06\n\x0e\x0e\n\n\x16\"\x1b\f\v\x0f\x15\x0f\x16\x1c\r\x13\x11\b\x03\x06!\x06\x13\b[\xfe\x8b)9))9\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x00\xc0\x01\xc0\x00\x1e\x00&\x00\x00735#\"&=\x0146;\x012\x16\x1d\x0132\x16\x1d\x01\x14\x06+\x01\"&=\x0146\x122\x16\x14\x06\"&4\x14\x14\x14\b\f\f\bp\b\f\x14\b\f\f\b\x98\b\f\f6<**<*\x18\x90\f\b0\b\f\f\b\xd4\f\b0\b\f\f\b0\b\f\x01\xa8*<**<\x00\x00\x02\x00\x10\xff\xc0\x00\xb0\x01\xc0\x00\a\x00\x17\x00\x006\x14\x06\"&462\x0346;\x012\x16\x15\x03\x14\x06+\x01\"&5\xb0/B//Bh\x0e\n^\n\x0e\x0e\x0e\nB\n\x0e1B//B/\x01G\n\x0f\x0f\n\xfe\xf0\n\r\r\n\x00\x02\x00\x00\x00\x00\x02\x00\x01\xc0\x00\x1f\x00S\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015#\"&54?\x016;\x012\x16\x1d\x01'2\x16\x1d\x01\x14\x06+\x01\a\x1732\x16\x1d\x01\x14\x06+\x01\"/\x01\a\x06+\x01\"&=\x0146;\x017'#\"&=\x0146;\x012\x1f\x01763\x01\xf0\a\t\t\a`\a\t\t\a\x10\x10\a\t\x02\x10\x04\n0\a\t\x90\a\t\t\a!NN!\a\t\t\aC\b\x05PP\x05\bC\a\t\t\a!NN!\a\t\t\aC\b\x05PP\x05\b\x01 \t\a \a\t\t\a \a\t`\t\a\x04\x03 \t\t\a\x90`\t\a0\a\tpp\t\a0\a\t\ass\a\t\a0\a\tpp\t\a0\a\t\ass\a\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\x80\x00\x1f\x00S\x00\x00!2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015#\"&54?\x016;\x012\x16\x1d\x01\x032\x16\x1d\x01\x14\x06+\x01\a\x1732\x16\x1d\x01\x14\x06+\x01\"/\x01\a\x06+\x01\"&=\x0146;\x017'#\"&=\x0146;\x012\x1f\x01763\x01\xf0\a\t\t\a`\a\t\t\a\x10\x10\a\t\x02\x10\x04\n0\a\t\x90\a\t\t\a!NN!\a\t\t\aC\b\x05PP\x05\bC\a\t\t\a!NN!\a\t\t\aC\b\x05PP\x05\b\t\a \a\t\t\a \a\t`\t\a\x04\x03 \t\t\a\x90\x01\x80\t\a0\a\tpp\t\a0\a\t\ass\a\t\a0\a\tpp\t\a0\a\t\ass\a\x00\x02\xff\xff\xff\xe0\x02\x00\x01\xa1\x00\x15\x00\x1a\x00\x00%\a32\x1d\x01\x14#!\"/\x01&47\x0162\x1f\x01\x16\x14%\a\x1737\x01\xf2\x8e\x90\f\f\xfe\x9c\x14\x0e`\x0e\x0e\x01\x00\x0e(\x0e\xa0\x0e\xfe\xc3|PrD\xae\x8e\f(\f\x0e`\x0e(\x0e\x01\x00\x0e\x0e\xa0\x0e(1}PC\x00\x00\x00\x01\x00\x00\xff\xbf\x02@\x01\xc0\x00K\x00\x00%2\x1e\x01\x15\x14\x06#\"&#\"\x0e\x01\x16\x1f\x01\"\x0e\x02.\x0254654&#\"\x0e\x01\x15\x14\x1e\x01\x15\x14\x0e\x01&/\x01\x110\x17\x1654&54632\x16\x15\x14\x06\x15\x14\x1e\x01>\x02?\x010\a\x06326\x02\a\x12\x1b\f\x1d\x1a\x141\x11\x11\x12\x01\x04\x03\x03\n! $\x1f\x19\x0e$#\x1b\x11\x1d\x11\x14\x14%54\x13\x12@p '\x1c\x1a#$\x15#**\"\v\v\x11\x13)\t2\x9f\x13\x1d\x11\x1b#$\x19##\r\f\x04\x03\x04\x02\x06\x10\r\x110\x15\x19\x1d\f\x1a\x12\x12\x1f\x17\t\x14\x14\x01\x04\x04\x04\x01M\n\v2\t2\x17\x1a\x1e\x1d\x1a\x140\x12\x11\x12\x03\x04\f\v\x04\x04Ek\x1f\x00\x00\x00\x02\x00\x00\xff\xc0\x01`\x01\xc0\x00\v\x00<\x00\x006\"&=\x01462\x16\x1d\x01\x1472\x16\x1d\x01\x14\x06\a\x1532\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015.\x01=\x0146;\x012\x16\x1d\x01\x14\x16\x17\x166=\x01463\xd8P88P8@\a\tWA8\a\t\t\a\xa0\a\t\t\a8AW\t\a\x10\a\tB19T\t\a`8(\xa0(88(\xa0(h\t\a0Bc\t\"\t\a\x10\a\t\t\a\x10\a\t\"\tiD(\a\t\t\a*3N\x04\x06M80\a\t\x00\x00\x02\xff\xf9\xff\xb9\x02\x87\x01\xc7\x00%\x00F\x00\x00\x05\x16\x0f\x01\x06'\x01&?\x016\x1f\x0154632\x1e\x01\x1d\x01\x14\a\x176=\x0146;\x012\x16\x1d\x01\x14\x0f\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015.\x01=\x01\x17\x1e\x02\x17\x167\x17\x06\a\x15\x02z\f\t\x14\n\f\xfd\xb3\f\t\x14\n\f\xb38(\x1a,\x1a\x05\x1a\v\t\a\x10\a\t\x14L\a\t\t\a\xa0\a\t\t\a8AW4\x06\x1f/\x1b\a\x0e2\x12\x10\n\n\r\x19\f\t\x01\xc7\n\r\x19\f\t\x8a-(8\x1a,\x1a\xa0\x0e\x10\x14\x18\x1a0\a\t\t\a0*&\x80\t\a\x10\a\t\t\a\x10\a\t\"\tiD\a)\x1a,\x1d\x02\x01\x01'\x06\x02\"\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\r\x00+\x00\x00\x13!2\x15\x11\x14\x06#!\"&5\x114%\x14#!\"=\x0146;\x0154;\x012\x1d\x01354;\x012\x1d\x0132\x16\x15\f\x01\xa8\f\x1c\x14\xfe\xa0\x14\x1c\x01\xc0\f\xfeX\f\x1c\x140\f(\f\x80\f(\f0\x14\x1c\x01\x00\f\xfe\xfc\x14\x1c\x1c\x14\x01\x04\f,\f\f$\x14\x1c4\f\f44\f\f4\x1c\x14\x00\x00\x00\x00\x02\xff\xfe\xff\xc0\x01\xc0\x01\xc0\x008\x00@\x00\x00\x016\x16\x1d\x01\x14\x06/\x01&5#\x15\x1e\x03\x1d\x01\x14\x06+\x01\"&=\x014675*\x02\x0e\x05\a\x0e\x01.\x01767&632\x16\a347\x06264&\"\x06\x14\x01\xb2\x06\b\b\x06\xa8\n(\x0f\x1b\x13\v\x0e\n\x90\n\x0e)\x1f\x04\x1e\x06\x18\x06\x12\a\r\t\x05\x03\x13\x12\b\x04\x1e<\v!\x1e\x1c\"\b:\n\x81\x0e\t\t\x0e\t\x01\xa6\x01\b\x05t\x05\b\x01\x1c\x02\x10\x1b\x04\x12\x18\x1f\x10\xf8\n\x0e\x0e\n\xf7!5\b\x1b\x02\x03\x06\n\r\x13\f\t\b\a\x13\tL\x0f\x1b1-\x1b\x10\x02\x12\t\x0e\t\t\x0e\x00\x00\x02\x00\x00\xff\xc0\x02\x01\x01\xc0\x00,\x004\x00\x00\x01\x16\x15\x14\x06\a\x15\x14\x06\x0f\x01\x06#\"&=\x01\a\x06&/\x01&6?\x01#\".\x0154?\x01>\x02;\x01>\x0132\x17\x16\x06264&\"\x06\x14\x01\xf9\aD<\x10\vb\x05\x06\n\x0e\x16\v\x1a\t3\t\x01\b\x17h\a\v\x06\x031\x04\x0e\x11\bh'dH3 \n\x88\"\x17\x17\"\x17\x01\xad!2Hd'h\r\x19\x051\x03\x0e\nh\x17\t\x01\b3\n\x1b\t\x16\x06\v\a\x06\x05c\a\f\a=C\a\x02\x9f\x17\"\x17\x17\"\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x1c\x00\x00\x04\"&462\x16\x14%\x17\x162?\x0164/\x01764/\x01&\"\x0f\x01\x06\x14\x01gΑ\x91Α\xfe\x96\x88\a\x14\a\x10\b\bee\b\b\x10\b\x13\a\x88\a8\x91Α\x91\xceV\x87\b\b\x10\b\x13\aff\a\x14\a\x10\b\b\x87\a\x14\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x1c\x00\x00\x122\x16\x14\x06\"&4\x05'&\"\x0f\x01\x06\x14\x1f\x01\a\x06\x14\x1f\x01\x162?\x0164\x99Α\x91Α\x01j\x88\a\x14\a\x10\b\bee\b\b\x10\b\x13\a\x88\a\x01\xb8\x91Α\x91\xceV\x87\b\b\x10\b\x13\aff\a\x14\a\x10\b\b\x87\a\x14\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x1c\x00\x006462\x16\x14\x06\"\x13\a\x06\x14\x1f\x01\x162?\x01\x17\x162?\x0164/\x01&\"\b\x91Α\x91\xceV\x87\b\b\x10\b\x13\aff\a\x14\a\x10\b\b\x87\a\x14YΑ\x91Α\x01j\x88\a\x14\a\x10\b\bee\b\b\x10\b\x13\a\x88\a\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x1c\x00\x00\x00\x14\x06\"&462\x03764/\x01&\"\x0f\x01'&\"\x0f\x01\x06\x14\x1f\x01\x162\x01\xf8\x91Α\x91\xceV\x87\b\b\x10\b\x13\aff\a\x14\a\x10\b\b\x87\a\x14\x01'Α\x91Α\xfe\x96\x88\a\x14\a\x10\b\bee\b\b\x10\b\x13\a\x88\a\x00\x00\x00\x00\x02\xff\xfe\xff\xc0\x02B\x01\xc1\x00B\x00J\x00\x007\"&?\x016\x1f\x01\x16\x06+\x01\x1e\x01\x175#\"=\x014;\x015.\x01546\x17\x1e\x01\x15\x14\x06\a\x1532\x16\x1d\x01\x14\x06+\x01\x15>\x017#\"&?\x016\x1f\x01\x16\x06+\x01\x0e\x01\"&'\x00\"\x06\x14\x16264\r\b\x06\x05D\b\bD\x05\x06\b#\x0eR04\f\f4\x1c$9((7$\x1c4\x05\a\a\x0540R\x0e#\b\x06\x05D\b\bD\x05\x06\b \x10\x8e\xaa\x8e\x10\x01\x00\x1a\x13\x13\x1a\x13`\x0f\x05D\b\bD\x05\x0f'1\x06\xbe\f(\f\x05\n2\x1f(9\x01\x018'\x1f2\n\x05\a\x05(\x05\a\xbe\x061'\x0f\x05D\b\bD\x05\x0fIWWI\x01 \x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc1\x00&\x002\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x015462\x16\x1d\x01\x14\x06+\x01\"&=\x014&#\"\x06\x1d\x01\x1754&\"\x06\x1d\x01\x14\x1626\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x18Y}Z\x0e\n \n\x0e+\x1e\x1d*p\x17\"\x17\x17\"\x17\xc0\x1c\x14\xa0\x14\x1c\x1c\x14\xa0\x14\x1cf@ZY?\x10\n\x0e\x0e\n\x10\x1e*+\x1eg\x980\x11\x17\x17\x110\x11\x17\x17\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x1462\x16\x14\x06\"&4\x16264&\"\x06\x14\x91Α\x91Α\xac\x98ll\x98l\x83jKKjKf4&&4&\x01\xb8\x91Α\x91\xce\xfe\xe1l\x98ll\x98\xccKjKKju&4&&4\x00\x00\x00\x03\x00\b\x00x\x01\xf8\x01\b\x00\a\x00\x0f\x00\x17\x00\x00$\x14\x06\"&46:\x02\x16\x14\x06\"&4$2\x16\x14\x06\"&4\x01H*<**\x014&/\x01&\x06\x1d\x01\x14\x167\x99Α\x91Α\x01l\x06\x06\x06\x06\xb0\f\x18\x18\f\x01\xb8\x91Α\x91\xce\u007f\x03\f\f\f\x03k\a\x0e\x0e\xd0\x0e\x0e\a\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1b\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x13!2=\x014#!\"\x1d\x01\x14\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14,\x01\b\f\f\xfe\xf8\f\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xf8\f8\f\f8\f\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00\x00\x05!\"&5\x11463!2\x16\x15\x11\x14\x06'76/\x01&\x0f\x01'&\x0f\x01\x06\x1f\x01\x16\x01\x90\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xe1\xb8\f\f\x16\f\v\x96F\v\f\x16\f\fh\v \x1c\x14\x01`\x14\x1c\x1c\x14\xfe\xa0\x14\x1cb\xb8\v\f\x16\f\f\x96F\f\f\x16\f\vh\v\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1c\x00*\x00\x00\x05!\"&5\x11463!2\x16\x15\x11\x14\x06\x03\x0f\x01\x14\x1e\x013?\x016/\x01&7'&\"\x0f\x01\x06\x1f\x01\x16?\x0164\x01\x90\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xb6\x88\x06\x03\a\x039\x88\x04\x047\x05g\x1e\a\x14\a\x17\x04\x047\x05\x04\x17\a \x1c\x14\x01`\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x01.\x889\x03\a\x03\x06\x88\x04\x048\x04\t\x1e\a\a\x17\x04\x057\x04\x04\x17\a\x14\x00\x00\x00\x02\x00\x00\xff\xc0\x02A\x01\xc5\x00\x1e\x00@\x00\x00\x01\a\x06&=\x01\"\x0e\x02\x14\x17\x16\x06'.\x0154>\x033546\x1f\x01\x16\x14\a46\x17\x163276\x16\x1d\x01\x14\x06#!\"&5\x1146;\x012\x16\a\x06\a\x06+\x01\x11!\x028\x90\v\x1d-?0\x15\f\x04\x14\t\x1f+\x1c-FJ/\x1d\v\x90\b\xc0\b\x06\x05\x05\f\f\x06\n\x1c\x14\xfe\xa0\x14\x1c\x1c\x14y\t\x05\b\x1e\x15\x04\x053\x01@\x01\x0f\x88\v\f\x10H\n\x17';(\f\r\a\x18O)*>&\x16\tH\x10\f\v\x88\a\x14\xd1\x05\b\x01\x01\x04\x02\a\x06Y\x14\x1c\x1c\x14\x01`\x14\x1c\x12\x05\x0f\x16\x04\xfe\xc0\x00\x00\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1e\x00\x00>\x012\x16\x14\x06\"&\x022\x16\x14\x06\"&4\x056.\x01\x0f\x01\x06\x0f\x01\x06\x16?\x0167\xd8\x13\x1a\x13\x13\x1a\x13GΑ\x91Α\x01v\x04\a\x0e\t\x90\v\x05B\x06\x14\f\x90\v\x05\xcd\x13\x13\x1a\x13\x13\x01\x05\x91Α\x91\xce\x03\b\x10\x05\x03B\x05\v\x90\f\x14\x06B\x05\v\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1a\x00\x00\x01\x11\x14\x06#!\"&5\x11463!2\x16\x05\x17\x16?\x016&+\x01\"\x06\x01\xc0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\x9c|\b\b|\x05\x06\b\xf6\b\x06\x01p\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xa0|\b\b|\x05\x0f\x0f\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1a\x00\x005\x11463!2\x16\x15\x11\x14\x06#!\"&%'&\x0f\x01\x06\x16;\x0126\x1c\x14\x01`\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x01d|\b\b|\x05\x06\b\xf6\b\x06\x10\x01`\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\xa0|\b\b|\x05\x0f\x0f\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1a\x00\x00\x13!2\x16\x15\x11\x14\x06#!\"&5\x1146\x1376/\x01&\x06\x1d\x01\x14\x160\x01`\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\xa0|\b\b|\x05\x0f\x0f\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\x9c|\b\b|\x05\x06\b\xf6\b\x06\x00\x00\x00\x00\x01\x00\x00\xff\xe0\x01B\x01\xa0\x00E\x00\x00%\x17\x16\a\x06#\"&'#\"&=\x014;\x01&7#\"&=\x014;\x01>\x0132\x17\x1e\x02\x0f\x01\x06'&#\"\x06\a32\x16\x0f\x01\x06+\x01\x06\x1732\x16\x0f\x01\x06+\x01\x1e\x033276\x017\t\x02\v\x1e\x1fMp\x13\x1e\x05\a\f\x15\x01\x02\x16\x05\a\f!\x16oH\x19\x1b\x04\x05\x02\x01\f\x03\v\x15\x11(>\x10\x8a\x06\a\x01\x06\x02\n\x93\x02\x02\x86\x06\a\x01\x06\x02\nr\b\x18\x1f&\x15\x16\x17\f\",\v\x03\bVF\a\x05\x1c\f\x14\x16\a\x05\x1e\f@P\x05\x01\x04\a\x03,\v\x02\x04(#\t\x06\x1d\n\x13\x17\t\x06\x1c\t\x13 \x16\r\x06\x02\x00\x01\x00\x00\xff\xe0\x01@\x01\xa0\x006\x00\x00%2\x1d\x01\x14#!\"=\x014;\x015#\"=\x014;\x0154632\x17\x16\x0f\x01\x06'&#\"\x0e\x04\x1d\x0132\x1d\x01\x14+\x01\x1535463\x014\f\f\xfe\xd8\f\f$\x1c\f\f\x1cO=7/\t\a\x1d\a\t\x1e\x1b\t\x11\x0e\v\a\x04T\f\fT{\a\x05`\fh\f\f(\f\x80\f(\fB7G#\a\n$\b\x06\x13\x04\b\n\r\x0e\b@\f(\f\u007f3\x05\a\x00\x00\x00\x01\xff\xfc\xff\xc0\x01*\x01\xc0\x00A\x00\x007\x1e\x01\a\x0e\x01\a\x15\x14\x06+\x01\"&=\x01\"'.\x01?\x016\x17\x16;\x012654/\x01.\x01'&6;\x01546;\x012\x16\x1d\x012\x17\x1e\x01\x0f\x01\x06'&+\x01\"\x06\x15\x14\x16\x17\xd1,-\x10\f:$\t\a \a\t0&\x06\x02\x06\"\n\n\x0f\x13B\r\x11\x15g\".\x04\x04A1\x02\t\a \a\t0&\x06\x02\x06\"\n\n\x0f\x13B\r\x11\f\t\xd7\rT-!'\x010\a\t\t\a0\x1e\x05\x0e\x05\"\t\a\n\x11\r\x16\x06\x1e\n4\"1G0\a\t\t\a0\x1e\x05\x0e\x05\"\t\a\n\x11\r\t\x10\x03\x00\x01\x00\x00\xff\xe0\x01@\x01\xa0\x004\x00\x00\x01#\x16\x1732\x1d\x01\x14+\x01\x0e\x01\a\x17\x16\x06+\x01\"/\x01&=\x0146;\x01267#\"=\x014;\x01&+\x01\"&=\x0143!2\x1d\x01\x14\x014I\t\x05;\f\f5\x05L9\x97\x06\x06\bS\x05\x03\xa5\x04\a\x05T\x1f'\x05\x9f\f\f\x92\x14)U\x05\a\f\x01(\f\x01`\x0f\x11\f(\f8F\x02\x8b\x06\x0f\x03\x99\x03\x055\x05\a \x1b\f(\f\x1b\a\x05-\f\f(\f\x00\x01\x00\x13\xff\xe0\x01n\x01\xa0\x00:\x00\x00\x012\x16\x0f\x0132\x1d\x01\x14+\x01\a\x1532\x1d\x01\x14+\x01\x15\x14+\x01\"=\x01#\"=\x014;\x015'#\"=\x014;\x01'&6;\x012\x1f\x0236?\x0163\x01_\a\a\x03P:\f\fX\x14l\f\fl\f8\fl\f\fl\x14X\f\f:P\x03\a\aA\b\x037\x1b\x02\f\x0f7\x03\b\x01\xa0\f\x06\x96\f \f%\x1b\f \f\\\f\f\\\f \f\x1b%\f \f\x96\x06\f\aqH%#q\a\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x01\x80\x01\xa0\x00)\x002\x00\x007#\x1532\x1d\x01\x14+\x01\x15\x14\x06+\x01\"=\x01#\"=\x014;\x015#\"=\x0146;\x0154;\x012\x16\x14\x06'\x1532654&#\xef\\\xa1\f\f\xa1\a\x05;\f4\f\f44\f\a\x054\f\xa3@QQ\x9cM$((#\x80 \f(\f4\x05\a\f4\f(\f \f-\x05\a\xcf\fO\x80Qۖ)#\"(\x00\x00\x00\x06\x00\x00\xff\xe0\x02@\x01\xa0\x00E\x00N\x00R\x00Z\x00d\x00h\x00\x00\x01#\a32\x1d\x01\x14+\x01\a\x06+\x01\"/\x01#\a\x06+\x01\"/\x01#\"=\x014;\x01'#\"=\x014;\x01'&6;\x012\x1f\x01376;\x012\x1f\x01376;\x012\x16\x0f\x0132\x1d\x01\x14\x057#\x1f\x0132>\x01?\x01#\x17;\x01'&'#\x06\a\x177#\x17\x1e\x02136?\x01#\x17\x024?\aF\f\fU*\x02\n9\t\x02+7*\x02\n9\t\x02)T\f\fF\b>\f\f0\x12\x01\a\x06*\n\x02\x11m\x14\x02\t,\n\x02\x14n\x0e\x02\n.\x06\a\x01\x130\f\xfex\f&\v\x06\x01\x01\x01\x03\x1e\bQ\x06\x82\x1a\x02\x03\x02\f\x02\x03\x81\f'\f\x03\x03\x01\x01\x02\x1e\aQ\a\x01\x00 \f(\f\xb7\t\t\xb7\xb7\t\t\xb7\f(\f \f(\fQ\x05\t\tVV\t\tVV\t\t\x05Q\f(\f\x9666/\f\x18\x81 \t\v\f\f\v\u007f66\v\x18\f\x16\x8f \x00\x02\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00\x1a\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x17\x15#532\x1f\x01\x16\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\nȠ\x80\x06\n\ab\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0ez\x06\x80\ab\a\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00\x1d\x00)\x005\x00>\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x1354+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x01254+\x01\"\x1d\x01\x14;\x01257\x15#532\x1f\x01\x16\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8@\f\xa8\f\f\xa8\f\f\xa8\f\f\xa8\f\f\xa8\f\f\xa8\f`\x80\x06\n\ab\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xfe\x8c\b\f\f\b\fL\b\f\f\b\fT\f\f\b\f\fz\x06\x80\ab\a\x00\x00\x04\xff\xfd\xff\xe0\x01\xc0\x01\xa0\x00\x15\x005\x00O\x00R\x00\x0072\x16\x0f\x01\x06\"/\x01&6;\x01\x1146;\x012\x16\x15\x11%2\x16\x1d\x01\x14\x0f\x0132\x16\x1d\x01\x14\x06+\x01\"&=\x014?\x01#\"&=\x014637\x16\x15\x14\x06+\x01\"/\x01#\a\x06+\x01\"&54?\x016;\x012\x17\a3'\xb0\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\x01 \a\t\v=8\a\t\t\a\x80\a\t\v=8\a\t\t\a\x9f\x01\t\a\x19\f\x03\x05G\x04\x04\v\x19\a\t\x01;\x04\v*\v\x044 \x10`\x14\a`\x05\x05`\a\x14\x010\a\t\t\a\xfe\xd0@\t\a\x12\x0e\nF\t\a \a\t\t\a\x12\x0e\nF\t\a \a\tU\x02\x03\a\t\v\r\r\v\t\a\x03\x02\xa0\v\ve0\x00\x00\x00\x00\x04\xff\xfd\xff\xe0\x01\xc0\x01\xa0\x00\x15\x005\x00O\x00R\x00\x00\x13\"&?\x0162\x1f\x01\x16\x06+\x01\x11\x14\x06+\x01\"&5\x11\x052\x16\x1d\x01\x14\x0f\x0132\x16\x1d\x01\x14\x06+\x01\"&=\x014?\x01#\"&=\x014637\x16\x15\x14\x06+\x01\"/\x01#\a\x06+\x01\"&54?\x016;\x012\x17\a3'\x10\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\x01`\a\t\v=8\a\t\t\a\x80\a\t\v=8\a\t\t\a\x9f\x01\t\a\x19\f\x03\x05G\x04\x04\v\x19\a\t\x01;\x04\v*\v\x044 \x10\x01 \x14\a`\x05\x05`\a\x14\xfe\xd0\a\t\t\a\x010\x80\t\a\x12\x0e\nF\t\a \a\t\t\a\x12\x0e\nF\t\a \a\tU\x02\x03\a\t\v\r\r\v\t\a\x03\x02\xa0\v\ve0\x00\x00\x00\x05\xff\xfd\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00%\x005\x00E\x00U\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"&=\x01463'2\x16\x0f\x01\x06\"/\x01&6;\x01\x1146;\x012\x16\x15\x11%2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x010\a\t\t\a@\a\t\t\a@\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\x010\a\t\t\a\xc0\a\t\t\a\x80\a\t\t\a\x80\a\t\t\a\x01\x00\a\t\t\a\xff\x00\a\t\t\a \t\a \a\t\t\a \a\t@\x14\a`\x05\x05`\a\x14\x010\a\t\t\a\xfe\xd0\xc0\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t\x01\x00\t\a \a\t\t\a \a\t\x00\x05\xff\xfd\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00%\x005\x00E\x00U\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x03\"&?\x0162\x1f\x01\x16\x06+\x01\x11\x14\x06+\x01\"&5\x11!2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x010\a\t\t\a@\a\t\t\a\xe0\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\x01p\a\t\t\a\xc0\a\t\t\a\x80\a\t\t\a\x80\a\t\t\a\x01\x00\a\t\t\a\xff\x00\a\t\t\a \t\a \a\t\t\a \a\t\x01\x00\x14\a`\x05\x05`\a\x14\xfe\xd0\a\t\t\a\x010\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t\x01\x00\t\a \a\t\t\a \a\t\x00\x04\xff\xfd\xff\xde\x01\xb1\x01\xa0\x00\x1f\x005\x00=\x00S\x00\x00\x01\"&54?\x016;\x012\x16\x1d\x0132\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015\x176\x16\x1d\x01\x14\x0e\x01\a\x06&/\x01&767.\x017>\x01\x16264&\"\x06\x14\a2\x16\x0f\x01\x06\"/\x01&6;\x01\x1146;\x012\x16\x15\x11\x010\a\t\x02\x10\x04\n0\a\t\x10\a\t\t\a`\a\t\t\a\x10\n(>\x13%\x1e\x06\r\x02\n\x05\r\f\t$+\n\x05 \x10\f\f\x10\f\x9c\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\x01`\t\a\x04\x03 \t\t\ap\t\a \a\t\t\a \a\t@\xa3\v1'\v#2\"\r\x02\x06\x06\x14\x0f\x05\x05\b\x04=&\x12\x1f\\\f\x10\f\f\x10\b\x14\a`\x05\x05`\a\x14\x010\a\t\t\a\xfe\xd0\x00\x04\xff\xfd\xff\xde\x01\xb1\x01\xa0\x00\x15\x00\x1d\x00=\x00S\x00\x00%6\x16\x1d\x01\x14\x0e\x01\a\x06&/\x01&767.\x017>\x01\x16264&\"\x06\x14'\"&54?\x016;\x012\x16\x1d\x0132\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015'\x17\x16\x06+\x01\x11\x14\x06+\x01\"&5\x11#\"&?\x0162\x01J(>\x13%\x1e\x06\r\x02\n\x05\r\f\t$+\n\x05!\x1f\x10\f\f\x10\f\x1c\a\t\x02\x10\x04\n0\a\t\x10\a\t\t\a`\a\t\t\a\x10\xd5P\b\b\v0\t\a \a\t0\v\b\bP\x04\x0e\xbd\v1'\v#2\"\r\x02\x06\x06\x14\x0f\x05\x05\b\x04=&\x12\x1f\\\f\x10\f\f\x10\xf8\t\a\x04\x03 \t\t\ap\t\a \a\t\t\a \a\t@;`\a\x14\xfe\xd0\a\t\t\a\x010\x14\a`\x05\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x01\x01\xc0\x00\x0f\x00\x17\x00D\x00\x0072\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x16264&\"\x06\x14\x01\x14\x06\a32\x16\x15\x14\a#\x16\x06\a\x16\x06\a\x16\a\x0e\x02+\x01\"'&#\"&=\x0147>\x01767632\x1e\x02h\n\x0e\x0e\nP\n\x0e\x0e\n\x1e\x14\x0e\x0e\x14\x0e\x01X \x01e\x19#\x13\x01\b\x04\r\x06\n\f\x06\f\n*!\x1d\x030H#\x11\x05\a\x04\x145\x10\x0e\v\x0e\x14\v\x15\x19\x0f\xe0\x0e\n\xf0\n\x0e\x0e\n\xf0\n\x0e\xf8\x0e\x14\x0e\x0e\x14\x01y\x19?\a#\x17\x1e\x13\x11.\x11\x14)\x0e\x1a\x12\x0e\x0e\x02 \x10\a\x05\xd6\x05\x03\x15M\x0f\x0f,:\x05\x0f$\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x01\x01\xc0\x00\x0f\x00\x17\x00F\x00\x00\x1146;\x012\x16\x1d\x01\x14\x06+\x01\"&56\x14\x16264&\"\x01\"'&'.\x02'&=\x01463276;\x012\x1e\x02\x17\x16\a\x1e\x01\a\x1e\x01\a3\x16\x15\x14\x06+\x01\x1e\x01\x15\x14\x0e\x02\x0e\nP\n\x0e\x0e\nP\n\x0e(\x0e\x14\x0e\x0e\x14\x01\x02\x14\x0e\v\x0e\x0e\x1c\x1f\x10\x04\a\x05\x11#H0\x03\x15\x19$\x18\b\f\x06\f\n\x06\r\x04\b\x01\x13#\x19e\x01 \x0f\x19\x15\x01\x88\n\x0e\x0e\n\xf0\n\x0e\x0e\n2\x14\x0e\x0e\x14\x0e\xfe\xe8:,\x0f\r(+\x11\x03\x05\xd6\x05\a\x10 \x01\x05\r\v\x12\x1a\x0e)\x14\x11.\x11\x13\x1e\x17#\a?\x19\x19$\x0f\x05\x00\x00\x02\x00\x05\xff\xc0\x00\xfb\x01\xc0\x00\a\x00$\x00\x00\x122\x16\x14\x06\"&4\x13\x16\x06+\x01\x15\x14\x06+\x01\"&=\x01#\"&?\x01>\x01;\x01\x16732\x16\x17e6%%6%\xb7\x03\x0e\f8\x0e\n \n\x0e8\f\x0e\x030\x02\r\b\v%%\v\b\r\x02\x01\xc0%6%%6\xfe\xc3\f\x12h\n\x0e\x0e\nh\x12\f\xc0\a\v\x11\x11\v\a\x00\x00\x00\x02\x00\x00\xff\xc0\x00\xc0\x01\xc0\x00\a\x00$\x00\x00\x122\x16\x14\x06\"&4\x172\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\"&=\x0146;\x01\x167E6%%6%p\x14\x1c\x0e\n\x10\x0e\n@\n\x0e\x10\n\x0e\x1c\x14\v%%\x01\xc0%6%%6k\x1c\x14\x88\n\x0e\x88\n\x0e\x0e\n\x88\x0e\n\x88\x14\x1c\x11\x11\x00\x03\xff\xff\xff\xbf\x02\x01\x01\xc1\x00\a\x00/\x007\x00\x00\x122\x16\x14\x06\"&4\x05\x16\x14\x0f\x01\x17\x16\x06/\x01\a\x06\"/\x01\a\x06&?\x01'&4?\x01'&6\x1f\x01762\x1f\x0176\x16\x0f\x01\x0664&\"\x06\x14\x16\xd8P88P8\x01V\n\n^!\x03\x0f\nd0\x04\x16\x05/d\n\x10\x04!^\n\n^!\x04\x0f\vd/\x05\x16\x05/d\n\x10\x04!cKKjKK\x01 8P88P\x18\x05\x16\x05/d\n\x10\x04!^\n\n^!\x04\x0f\vd/\x05\x16\x05/d\n\x10\x04!^\n\n^!\x04\x10\nd\xbfKjKKjK\x00\x00\x00\x00\x01\x00\x1b\xff\xc0\x01\xe8\x01\xc0\x00\x18\x00\x00\x05\".\x0154632\x17\x1e\x01\a\x0e\x01\x15\x14\x1676\x16\a\x0e\x02\x01\x1bEvE\x96j\x18\x17\b\x03\a/7\x92]\b\b\x05\x18>J@EuFj\x96\x04\x02\x10\x05\x1a^6^y\x12\x02\x0f\x06\x1e*\x17\x00\x00\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\t\x00\x15\x00%\x00\x003\x11!\x11\x14\x06#!\"&7\x15\x14;\x012=\x014+\x01\"%2\x16\x1d\x01\x14\x06#!\"&=\x01463 \x01\xc0\x13\r\xfe\x80\r\x13\xa0\fh\f\fh\f\x01 \r\x13\t\a\xfe \a\t\x13\r\x01 \xfe\xe0\r\x13\x13\xe1\b\f\f\b\f\xc0\x13\r0\a\t\t\a0\r\x13\x00\x02\xff\xff\xff\xbf\x02\x01\x01\xc0\x00?\x00E\x00\x00%\x14\x06+\x01\x15\x14\a\x17\x16\x14\x06\"/\x01\x06#54+\x01\"\x1d\x01\"'\a\x06\"&4?\x01&=\x01#\"&546;\x015'&462\x1f\x013762\x16\x14\x0f\x01\x1532\x16\x002\x16\x15#4\x02\x00\x14\r7\x0e=\t\x13\x1a\n6(3\f\x18\f3(6\n\x1a\x13\t=\x0e7\r\x14\x13\r8/\t\x13\x1a\n6\xe66\n\x1a\x13\t/8\r\x13\xfe\xd3\\B\xe0\x9f\r\x12\x10 \x1d<\n\x1a\x13\t7 \xf4\f\f\xf4 7\t\x13\x1a\n<\x1d \x10\x12\r\x0e\x13;.\n\x1a\x13\t77\t\x13\x1a\n.;\x13\x01\x13B..\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1a\x00\x00\x05!\"&5\x11463!2\x16\x15\x11\x14\x06\x03\a\x06\x1f\x01\x166=\x014&\x01\x90\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xa0|\b\b|\x05\x0f\x0f \x1c\x14\x01`\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x01d|\b\b|\x05\x06\b\xf6\b\x06\x00\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x00\x122\x16\x14\x06\"&4\x044&\"\x06\x14\x162\x99Α\x91Α\x01H/B//B\x01\xb8\x91Α\x91ΈB//B/\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x02\x01\xc1\x00-\x00C\x00\x00%\x17\x16\x06\x0f\x01\x06&/\x01#\"&'&54>\x01\x17\x1e\x01\x17\x14\x0e\x01\a\x1732\x16\x1d\x01\x14\x06+\x01\x1732\x16\x1f\x0176\x16'\x17\x0e\x01#\"&5467\x16\x17\x0e\x01\x15\x14\x163267\x01\xf0\x0e\x03\x04\x06A\f\x1a\x06>\x8c\f\x12\x02 \x12\x1f\x12\x19#\x01\x0e\x19\x10\x05\x82\a\t\t\ay\x05\x84\b\x11\x049%\x06\f\xb6\x1a\x15W5Ig=2\x04\x05\x19\x1fB.*?\x06>\x1c\x06\r\x03!\x06\t\f\x86\x10\v\xe1\x04\x12\x1e\x11\x01\x01$\x19\x10\x1d\x12\x02!\t\a \a\t \v\a{\x13\x02\x04\x1c7/:gI7Y\x13\x1b'\x0f3\x1f.B7)\x00\x00\x01\x00\x00\xff\xe0\x01\x81\x01\xa0\x00:\x00\x00%2\x16\x15\x0e\x01+\x01\"=\x01\a\x06&=\x014?\x015\a\x06&=\x014?\x0154;\x012\x1d\x0176\x16\x1d\x01\x14\x0f\x01\x1576\x16\x1d\x01\x14\x0f\x01\x15265463\x01t\x05\a\x04{eP\f1\x06\t\t71\x06\t\t7\f8\f\x81\x06\t\t\x87\x81\x06\t\t\x87Fb\a\x05\xc0\a\x05dp\f\xc1\v\x01\a\x06)\n\x02\f\x1e\v\x01\a\x06)\n\x02\fE\f\f3\x1d\x01\a\x06)\n\x02\x1e\x1e\x1d\x01\a\x06)\n\x02\x1e\x9fMH\x04\a\x00\x00\x02\x00\x00\xff\xe0\x02\x80\x01\xa0\x003\x00<\x00\x00%\x16\x14\a\x06#!\x06\a3\x0e\x04#5#\x15\"&=\x01\"=\x01435\"=\x01435463\x15352\x1e\x03\x17#\x16\x17!2\a26&#\"\x1d\x01\x14\x02Q//4E\xfe\xe2\a\t\xce(B+*7\"\x10\x14\x1c \x1c\x14\x10\"7*+B(\xce\t\a\x01\x1eE5\x0f\f\f\x0f\b\xf0\x164\x16\x18\n\x06\b#$#\x16\x80\x80%\x1b@\x18(\x18\x10\x18(\x18@\x1b%\x80\x80\x16#$#\b\x06\np((\b@\b\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00%\x00=\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x172\x1e\x022>\x0236754&#!\"\x06\x1d\x01\x16\x05\x06\a\x0e\x04\".\x03'&'\x15\x14\x163!265\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x82\x01\x11\b\x0f\n\x0f\b\x11\x01J(\x0e\n\xfe\xf0\n\x0e(\x01\x18\x16I\x01\x10\t\x10\x0f\x10\x0f\x10\b\x11\x01I\x16\x0e\n\x01\x10\n\x0e\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xe6\x0e\x05\a\a\x05\x0e5 \x19\n\x0e\x0e\n\x19 \t\x115\x01\f\x06\t\x04\x04\t\x06\f\x015\x11\x8e\n\x0e\x0e\n\x00\x00\x00\x00\x03\x00\x10\xff\xe0\x01\xf0\x01\xa0\x00\x17\x00%\x009\x00\x00\x01\x15\x14+\x01\x15\x14#!\"=\x01#\"=\x014?\x0162\x1f\x01\x16\x032\x16\x1d\x01\x14#!\"=\x0146373\x15353\x15353\x1532\x1d\x01!54;\x01\x01\xf0\b\x18\f\xfex\f\x18\b\x05\xe8\x01\x04\x01\xe8\x05\x18\n\x0e\b\xfe0\b\x0e\n8@@@@@$\f\xfe`\f$\x01@\x10\b\f\f\f\f\b\x10\x05\x02X\x01\x01X\x02\xfe\xcb\x0e\n\x10\b\b\x10\n\x0e\xf0\xc0\xc0\xc0\xc0\xc0\f\x14\x14\f\x00\x00\x02\x00\x00\x00\x00\x02\x81\x01\x84\x00#\x00.\x00\x00\x01\x16\x14\a\x05\x06/\x01\x06\a\x16\x15\x14\a\x17\x16\x06+\x01\"&?\x01&54767'&47%6\x1f\x017\x17\x14\x06\"&57\x17\x16\x02n\x12\x12\xfe\xe9\x17\x17\xc4\x13\x02\x10\x0e\x1a\x01\t\b8\b\t\x01\x1a\x0e\x10\x01\x110\x12\x12\x01\x17\x17\x17\n\x91\x0ep\xa0p\x0e\x91!\x01'\x06\"\x06U\b\b<\x0e\x17\n\x11\x10\ns\a\f\f\as\n\x10\x12\t\x1a\x15\x0f\x06\"\x06U\b\b\xf7,q\x1b%%\x1bq,\n\x00\x00\x00\x00\x05\x00\x00\x00 \x02\x80\x01`\x00\x05\x00\x0f\x00D\x00N\x00e\x00\x007\x17#?\x01\x16%2\x16\x15\x11\x14\x06#!\x11\x0554+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x06\a&'&\x0f\x02\x06\x17\x16\x17\x06\a\x06\x1f\x01\x16767\x16\x17\x16?\x016'&'6732%463!\x11!\"&57\x06\x1e\x01;\x012?\x013\x17\x16;\x0126/\x01&+\x01\"\a\x98\v&\v\b\x05\x01\xd3\n\x0e\x0e\n\xfe\xe8\x01\x00\f@\f\x10\f@\f\fr\t\x15\t\b\a\t\a\a\v\a\n\v\f\x0e\n\x06\b\x06\v\x12\x11\x10\x14\n\x06\b\x06\n\r\r \v\v\f\xfd\xb0\x0e\n\x01\x18\xfe\xe8\n\x0e;\x01\x02\x06\x04\x17\t\x03\t<\t\x03\t\x17\x06\a\x029\x03\t \t\x03\xd4&&!\x15\x80\x0e\n\xfe\xf0\n\x0e\x01@x\x10\f\x10\f\f\x10\f\x10\f\x15\x16\n\v\t\x06\x04\x04\a\n\r\r\t\t\x06\n\x0e\v\a\v\x0e\r\f\a\v\x0e\n\x06\b\n##l\n\x0e\xfe\xc0\x0e\n8\x04\a\x05\t\x1f\x1f\t\n\x06\xa9\b\b\x00\x00\a\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x15\x00%\x005\x00E\x00U\x00^\x00n\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01\x16\x15\x0354&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x014&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x1754&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x014&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x01#\"&=\x01#\x15'2\x16\x15\x11\x14\x06+\x01\"&5\x11463\x01\xe0\r\x13\x13\r\xfe\xc0\r\x13\x13\r\xf3\r\t.\t\xc0\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t0\a\t\xa0\x80\r\x13\x13\r \r\x13\x13\r\x01 \x13\r\xfe\xe0\r\x13\x13\r\x01\xc0\r\x13\t.\t\r\xfe\x9d \a\t\t\a \a\t\t\x87 \a\t\t\a \a\t\ty \a\t\t\a \a\t\t\x87 \a\t\t\a \a\t\tw@\t\a0\x80@\x13\r\xfe\xc0\r\x13\x13\r\x01@\r\x13\x00\b\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x11\x00\x1d\x00)\x005\x00=\x00I\x00U\x00a\x00\x00\x052\x1d\x01!54;\x01\x11463!2\x16\x15\x11\x01\x15\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x172=\x014+\x01\"\x1d\x01\x143\x1754+\x01\"\x1d\x01754+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x01\xb4\f\xfe@\f\x14\x0e\n\x01P\n\x0e\xfe\xe0\f(\f\f(\f\f(\f\f(\f4\f\f(\f\ft\f(\f\x80\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f \f\x14\x14\f\x01\xc8\n\x0e\x0e\n\xfe8\x01\x94(\f\f(\fl(\f\f(\f\xa0\f(\f\f(\f\xa0T\f\fT\xac(\f\f(\fl(\f\f(\fl(\f\f(\f\x00\x00\x00\x02\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\a\x00)\x00\x00\x12462\x16\x14\x06\"6\x16\x14\x0f\x01\x11\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&5\x11'&462\x1f\x01376x*<**<\xcb\x13\t_\x13\r\x10\r\x13\x10\x13\r\x10\r\x13_\t\x13\x1a\nVfV\n\x01Z<**<*P\x13\x1a\n^\xfe\xf5\r\x13\x13\rpp\r\x13\x13\r\x01\v^\n\x1a\x13\tWW\t\x00\x00\x00\x05\xff\xfb\xff\xe0\x02\x05\x01\xa5\x00\x12\x00\x1d\x00(\x003\x00?\x00\x0062\x1e\x01\x15\x14\x06#\"&#\"\x06#\"&546&\x16\x06\a\x06.\x01'&>\x01\x16\x06.\x01676\x1e\x01\x17\x16\x17\x1e\x01\x0e\x01.\x017>\x02\a.\x01>\x01\x1e\x01\a\x0e\x03\xdaL\\>&\"\x19L\x13\x12M\x19\"&>\x19\x10\x14\x16\x0e\x1e\x17\x05\b\x14,\x9e/-\x12\x14\x18\x0f\x1f\x19\x06\t\xee\x16\x14\x10*,\x14\b\x05\x17\x1e\x8e\x18\x14\x12-/\x14\t\x04\x11\x15\x18\xe0C_&\x1a\x1e\x19\x19\x1e\x1a&_j4-\x05\x03\v\x19\x11\x1a-\n\x1d\f&A7\x06\x04\x0f \x15!\x1f\x05-4\x1d\n-\x1a\x11\x19\v!\x067A&\f7!\x10\x1b\x11\a\x00\x03\x00\x00\xff\xbf\x02\x00\x01\xc1\x00\x13\x00\x19\x00\x1d\x00\x00\x136\x1f\x01\x1e\x01\x1d\x01\x14\x0f\x01\x06/\x01&=\x0146?\x01\a\x15\x1775\x0375\a\xef\x11\x11\xd0\x0e\x11\x1b\xd0\x15\x16\xd0\x1a\x11\x0e\xe1\xc0\xc0\xc0\xa0\xa0\xa0\x01\xba\x06\x06N\x06\x18\x0f\xe1\x1e\rh\v\vh\r\x1e\xe1\x0f\x18\x06\x10H\x02NN\x02\xfe\xe4P\x86B\x00\x00\x00\x00\a\x00\x00\xff\xdb\x02\x00\x01\xa3\x00\x1d\x00!\x00'\x00+\x00/\x003\x007\x00\x00%\x16\x1d\x01\x14\x0f\x01\x06/\x01\a\x06/\x01&=\x014?\x0154?\x016\x1f\x01\x16\x1d\x01\a5\a\x15'\x15\x1775'\x035\a\x157'\a\x17\x055\a\x157'\a\x17\x01\xe9\x17\x14d\x10\x10hh\x10\x10d\x14\x17a\x17d\r\rd\x17\"Uwfff\x12UUfff\x01VUUfff\xc6\t\x19n\x16\n2\b\b44\b\b2\n\x16n\x19\t$l\x19\t&\x05\x05&\t\x19l\x01I$E\x8f\x01))\x01&\xfe\xb7K'O\x9b''*FK'O\x9b''*\x00\x00\x03\xff\xfc\xff\xbd\x02\x00\x01\xc1\x00\x1c\x008\x00U\x00\x007\x16\x06/\x01\a\x06\x16;\x012\x1d\x01\x14+\x01\".\x01?\x01'&6?\x016\x16\x177&\"\x0f\x01\x06/\x01&?\x0162\x1f\x0176\x16\x0f\x01\x0e\x01/\x01.\x01?\x01\x17\x16\x14\x0e\x01+\x01\x15\x14\x06/\x01&?\x016\x16\x1d\x01326/\x01&?\x016\x17\xb9\x02\x12\t(3\n\x12\x134\f\f4$6\t\x123)\t\x03\vn\x06\f\x01|\t$\t\x12\x06\v\"\n\a\x12\x1cj\x1c*(\t\x12\x03\x19\x02\v\x06n\v\x03\t(\xad\x0f\x18-\x1b`\x14\aP\f\fP\a\x14`\x13\x12\n\x1b\a\n\"\n\a\xba\n\r\x06\x19Q\x10!\f(\f0A\"Q\x1a\x05\x15\x03\x19\x02\a\aI\x0f\x0f\x1d\n\x06\x16\x06\n\x1d--B\x19\x06\r\nn\a\a\x02\x19\x03\x15\x05\x1a\x9c\x175+\x1c0\v\b\bP\v\vP\b\b\v0!\x10,\n\a\x15\x06\n\x00\x04\xff\xfe\x00\x00\x02\x02\x01\x80\x007\x00A\x00P\x00a\x00\x00\x012\x16\x0f\x01\x06+\x01\x16\x1d\x01\x14\a\x15\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&=\x01&=\x0147#\"/\x01&6;\x017>\x03;\x012\x16\x1f\x01%\a!'.\x01+\x01\"\x06\a:\x02>\x0354&\"\x06\x14\x16!264&#\"\x0e\x01\x15\x14\x1e\x03:\x01\x01\xf4\x06\a\x01\x06\x03\t\x14\x16\x10\x13\r \r\x13\xff\x00\x13\r \r\x13\x10\x16\x14\t\x03\x06\x01\a\x06<\x11\x06\x15\x1b \x11\x80\"9\f\x11\xfe\xdc\x14\x01\x00\x14\x05\x19\x0e\x80\x0e\x199\x02\r\x06\v\x06\a\x03\"\x1c\x12\x12\x01N\x0e\x12\x12\x0e\t\x17\x10\x03\a\x06\v\x06\r\x01\x10\t\x06\x18\t\x13\x1d0\x18\x126\r\x13\x13\r \r\x13\x13\r6\x12\x180\x1d\x13\t\x18\x06\t*\x0f\x1b\x12\n& *\x1222\r\x11\x11\xaf\x01\x02\x03\x06\x04\x0f!\x12\x1c\x12\x12\x1c\x12\x10\x17\t\x04\x06\x03\x02\x01\x00\x00\x00\x04\x00\x00\xff\xe0\x02\x00\x01\xa0\x001\x009\x00B\x00J\x00\x00%\x1e\x01\x1d\x01\x14\a\x15\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&=\x01&=\x0146?\x01>\x01;\x01546;\x012\x16\x1d\x0132\x16\x17\x04264&\"\x06\x147!'.\x01+\x01\"\a\x04264&\"\x06\x14\x01\xce\x16\x1c \x13\r \r\x13\xff\x00\x13\r \r\x13 \x1c\x16\x16\a+\x1b\v\x13\r\x80\r\x13\v\x1b+\a\xfe\x9b\x1a\x13\x13\x1a\x135\x01\x16\x11\x01\n\x04\xd6\f\x03\x01\r\x1a\x13\x13\x1a\x13\xce\x04#\x170$\x13)\r\x13\x13\r \r\x13\x13\r)\x12%0\x17#\x04U\x1b\" \r\x13\x13\r \"\x1b\xc3\x13\x1a\x13\x13\x1a]C\x05\b\x0e\xb2\x13\x1a\x13\x13\x1a\x00\x00\x00\x01\xff\xfb\xff\xbf\x01\x85\x01\xc1\x00/\x00\x00%\x16\x06+\x01\x15\x17\x16\x06+\x01\"&?\x015#\"&?\x01#\"&?\x01#\"'&?\x01>\x012\x16\x1f\x01\x16\a\x06+\x01\x17\x16\x06+\x01\x01z\n\f\x0f\x89\x1e\x04\t\t`\t\t\x04\x1e\x89\x0f\f\nP\x1f\x0f\f\tO\x1d\x0f\x06\x06\nn\x03\x06\x06\x06\x03n\n\x06\x06\x0f\x1dO\t\f\x0f\x1fF\v\x1b\x181\b\x0f\x0f\b1\x18\x1b\vZ\x1a\v[\x0e\r\vu\x03\x02\x02\x03u\v\r\x0e[\v\x1a\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x0f\x00\x19\x00#\x00\x00\x01\x15\x14\x06#\".\x01=\x014632\x1e\x01\x1d\x01\x14\x06\"&=\x01\x16 \x17\x15\x14\x06\"&=\x01\x16 \x01\xc0\x83]=g<\x83]=g<\x83\xba\x83G\x012G\x83\xba\x83G\x012\x01w.\x1e+\x14!\x14.\x1e+\x14!{g\x1e++\x1eg1og\x1e++\x1eg1\x00\a\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x06\x00\f\x00\x14\x00&\x00B\x00K\x00O\x00\x007.\x01432\x14\a\x16\x17\x06\a6\a67\x0e\x04\x133\x11\x14\x06#!\"&5\x1146;\x01\x15\x14\x16\x17&'6'.\x01\x06\a\x06\x17\x06\a\x0e\x01\x17\x1632767\x16326'&7\x16\x1d\x01#532\x17\x13\x06'6\xb6\x02\x02\x02\x06\x06\x0e\x15\f3\rO\x04\x1f\x06\f\b\x06\x03\xa2\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8\x0e\x02\x1d\x0e\f\x05\x03\x15\x16\x02\x06\x0e\x17\x12\x1d&\f\b\x0e\x19$>\x11$\x1c\x14\n\n\x10O\a\x80\x06\n\a\x18\x06%+\xc0\a\x17\x11(6\x1a\x0f\x02\x14\x18V\v\x1d\n\x0f\t\x05\x01\x01\f\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\x88\n\x0e\xac\x12$/\x11\x0e\v\b\n\x1676 \x0e&\x10\n>\x14\x03\x13\"\t\x0f\xdb\a\n\x06\x80\a\xfe\x9f\a\x10\x01\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00<\x00E\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x13\"\a\x06\x15&'&+\x01\"\a\x06\a&'&+\x01\"\x06\x1f\x01\x16;\x0127673\x16\x17\x16;\x012?\x016.\x01#7\x15#532\x1f\x01\x16\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc89\n\x01\x16\x02\x1c\x02\t\x1d\n\x02\x1c\x02\x01\x13\x02\n\x19\x06\a\x02%\x02\n%\t\x03\x18\x01\x01\x04\x15\x03\t&\n\x02&\x01\x03\x06\x04O\x80\x06\n\ab\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xff\x00\ne\x1c\x0fs\t\ts\b\x1b_\n\t\x06\xa8\t\tc\f\x17X\t\t\xa8\x04\a\x04\x86\x06\x80\ab\a\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x004\x00=\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x176&+\x01\"\x0f\x014'&+\x01\"\x06\x1f\x01\a\x06\x16;\x012767\x16\x17\x16;\x0126/\x017\x15#532\x1f\x01\x16\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8<\x04\a\a#\a\x03%%\x03\a#\a\a\x04<<\x04\a\a#\a\x03\"\x03\x11\x13\x04\a#\a\a\x04<\xa0\x80\x06\n\ab\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xf2\x06\f\x06E\x01D\x06\r\x06]^\x06\f\x06=\b!$\x06\f\x06^\xd6\x06\x80\ab\a\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\a\x00\x10\x00\"\x00=\x00\x0072\x16\x14\x06+\x0157\x16\x1d\x01#532\x17\a\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x134&+\x01\"\x0e\x02\x1d\x01\x14\x16;\x0126=\x01:\x02>\x04\xc2\r\x0e\x0f\r\x1b\xd3\a\x80\x06\n\a7\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc85(!Q\x02\x05\x03\x02\a\x05\x1f\x05\a\x01\x14\f\x17\x10\x13\f\b\xb1\x11\x1b\x11=\xa6\a\n\x06\x80\a\x81\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xfe\xd3!,\x02\x03\x05\x02\xc8\x05\a\a\x059\x02\x06\v\x11\x19\x00\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\b\x00\x1a\x00\"\x00-\x00\x00\x01\x15#532\x1f\x01\x16\a3\x11\x14\x06#!\"&5\x1146;\x01\x15\x14\x16\x06\"\x06\x14\x16264\x175'&\x0f\x01'&\x0f\x01\x15\x01\x80\x80\x06\n\ab\a\x88\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8\x0ej'\x1c\x1c'\x1d\xa0(\b\tg(\b\b(\x01F\x06\x80\ab\a0\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\x88\n\x0e\x10\x1c(\x1c\x1c(\xd4p(\b\bh(\b\b(0\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\b\x00\x14\x00*\x00.\x00O\x00\x00\x01\x16\x1d\x01#532\x17\x022\x1e\x01\x15\x14\x06\"&5467\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x15353\a\x1535\x0226/\x01&+\x01535#535#535#\x15#\x153\x15#\x153\x15#\x15\a\x06\x01y\a\x80\x06\n\a\x9f\x11\x0f\t\x13\x1b\x13\tw\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\nh @\x80 \x192\x1f\x04\x12\x02\n\x16 \x13\x05\x01W\a\n\x06\x80\a\xfe\xb7\a\r\a\v\x10\x10\v\a\r\xcf\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e \xfe\x80&\x19W\n a\x18\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00!\x00/\x00=\x00F\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x0354&\x0f\x01#\"\x1d\x01\x14;\x01\x17\x1667\x06\x1e\x01764'&\x0e\x01\x17\x16\x147&\x0e\x01\x17\x16\x14\a\x06\x1e\x017647\x15#532\x1f\x01\x16\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8@\x0f\x05$\x1c\f\f\x1c$\x05\x0f!\n\t\x18\f\x14\x14\v\x1a\a\t\aO\n\x1b\x06\t\x1b\x1b\v\n\x18\v)@\x80\x06\n\ab\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xfel\x88\b\x06\x06$\f8\f$\x06\x068\v\x1a\x06\t\x15;\x14\v\b\x18\f\a\x13n\n\b\x18\f\x1cN\x1c\v\x1a\x05\t*u\x9f\x06\x80\ab\a\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\b\x00\x1a\x004\x00\x00\x01\x15#532\x1f\x01\x16\a\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x134&\x0f\x0154&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x01\x17\x1665\x01\x80\x80\x06\n\ab\a\xa0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8`\x1e\v7\x0e\np\n\x0e\x0e\np\n\x0e7\v\x1e\x01F\x06\x80\ab\a\x18\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xfe\xe8\x10\f\v7&\n\x0e\x0e\np\n\x0e\x0e\n&7\v\f\x10\x00\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\b\x00\x1a\x003\x00G\x00`\x00\x00\x01\x15#532\x1f\x01\x16\a3\x11\x14\x06#!\"&5\x1146;\x01\x15\x14\x16\a7654/\x017654/\x01&#\"\x0f\x01\x06\x14\x1f\x01\x1632\x17032?\x01454/\x010#\"\x0f\x01\x14\x15\x14\x17764/\x01&#\"\x0f\x01\x06\x15\x14\x1f\x01\a\x06\x15\x14\x1f\x01\x16327\x01\x80\x80\x06\n\ab\a\x88\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8\x0es\x14\x01\x02((\x02\x01\x14\x01\x03\x02\x01A\x02\x02A\x01\x02\x035\x01\x04\x01>\x04\x1c\x01\x04\x01>\x04\xbc\x02\x02A\x01\x02\x03\x01\x14\x01\x02((\x02\x01\x14\x01\x03\x02\x01\x01F\x06\x80\ab\a0\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\x88\n\x0e\xf1\x15\x02\x02\x03\x01$$\x01\x03\x02\x02\x15\x01\x01=\x02\x04\x02=\x011\x04\xd3\x01\x01\x04\x01\b\x04\xd3\x01\x01\x04\x01g\x02\x04\x02=\x01\x01\x15\x02\x02\x03\x01$$\x01\x03\x02\x02\x15\x01\x01\x00\x06\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\r\x00\x15\x00\x1b\x00!\x00'\x00\x00\x122\x16\x14\x06\"&4%&'\a\x16\x17\x06264&\"\x06\x14'\x06\a\x1767\a\x16\x177&'\x1767'\x06\a\x99Α\x91Α\x01\xa6\x14\x1a?\x1c\x11\x96P88P8 \x1a\x14@\x11\x1cm\x14\x1a?\x1c\x11\xee\x1a\x14@\x11\x1c\x01\xb8\x91Α\x91\xce\x19\x1a\x14@\x11\x1c\xa18P88P\xd6\x14\x1a?\x1c\x11\xee\x1a\x14@\x11\x1cm\x14\x1a?\x1c\x11\x00\x00\x00\x01\x00\a\xff\xc7\x01\xf8\x01\xb4\x00#\x00\x00\x0146\x17\x1e\x01\x15\x14\x0e\x01#\"&'4676\x16\x1d\x01\x14\a\x0e\x01\x15\x14\x162654&'&5\x01 \x12\fQiBrCg\x91\x01iQ\v\x13\x12:Ll\x98lL:\x12\x01\x99\f\x0e\x03\x15\x85VCrC\x90gV\x86\x15\x03\x0e\f\x11\x12\x05\x10b?LllL?b\x10\x05\x12\x00\x00\x00\x00\x01\xff\xff\xff\xbb\x02\x03\x01\xc5\x00\x16\x00\x00\x016\x16\a\x03\x0e\x01/\x01\a\x06&=\x01\x136&\a\x05'.\x017\x01\xdc\r\x19\x02H\x02\x15\n}@\n \xf1\x03\b\x04\xfe\xe1j\x0e\x02\r\x01\xbd\a\x11\x0f\xfeP\v\f\x054M\r\v\x11Q\x01%\x05\a\x03\xfd,\x06\x1e\a\x00\x00\x00\x02\x00\b\xff\xc7\x01\xf9\x01\xb8\x00%\x007\x00\x00\x00\x14\x06#\"'.\x01?\x01>\x01\x17\x163264&#\"\a\x17\x16\x06+\x01\"&=\x0146\x1f\x01632\x03\x0e\x01/\x01546;\x012\x16\x1d\x01\x17\x1e\x01\a\x01\xf8\x91gXD\b\x01\b\v\x06\x13\a2@LllLI53\a\b\v\x91\a\t\x14\a2Hcg$\x06\x14\bA\x0e\n\x10\n\x0e)\b\x02\x06\x01'͒7\a\x15\b\v\x06\x01\x05(l\x98l23\a\x14\t\a\x91\v\b\a2E\xfe\xba\b\x03\x063\x88\n\x0e\x0e\nh \x06\x14\b\x00\x01\x00\x10\xff\xe0\x01\xf0\x01\xa0\x00K\x00\x00\x01\x1132\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015#\x1532\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x01\x11#\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\x1535#\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\x01\xc0 \a\t\t\a\xa0\a\t\t\a \xc0 \a\t\t\a\xa0\a\t\t\a \a\t\t\a\xa0\a\t\t\a \xc0 \a\t\t\a\xa0\a\t\t\a\x01`\xfe\xc0\t\a \a\t\t\a \a\t\x80\x80\t\a \a\t\t\a \a\t\x01@\t\a \a\t\t\a \a\t\x80\x80\t\a \a\t\t\a \a\t\x00\x00\x01\x00 \xff\xe0\x01\xc0\x01\xa0\x00!\x00\x00\x01\x15\x14\x06+\x01\x11\x14\x06+\x01\"&5\x11#\x11\x14\x06+\x01\"&=\x01#\"&46;\x012\x16\x01\xc0\t\a0\t\a \a\t \t\a \a\t B^^B\xf0\a\t\x01\x90 \a\t\xfe\x90\a\t\t\a\x01p\xfe\x90\a\t\t\ap^\x84^\t\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00#\x00G\x00k\x00\x00%2\x16\x1d\x01\x14\x06#!\x15\x14\x06+\x01\"&=\x01#\"&=\x0146;\x01546;\x012\x16\x1d\x01%2\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01!\"&=\x01463!546;\x012\x16\x1d\x0172\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\"&=\x0146;\x01546;\x012\x16\x1d\x01\x01\xf0\a\t\t\a\xfe\xb0\t\a \a\tP\a\t\t\aP\t\a \a\t\x01P\a\t\t\aP\t\a \a\t\xfe\xb0\a\t\t\a\x01P\t\a \a\tP\a\t\t\a\xd0\t\a \a\t\xd0\a\t\t\a\xd0\t\a \a\t@\t\a \a\t\x10\a\t\t\a\x10\t\a \a\t\x10\a\t\t\a\x10\xa0\t\a \a\t\x10\a\t\t\a\x10\t\a \a\t\x10\a\t\t\a\x10\xa0\t\a \a\t\x10\a\t\t\a\x10\t\a \a\t\x10\a\t\t\a\x10\x00\x00\x00\x01\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00%\x00\x00%2\x16\x14\x06\"&547'\x06#\"&4632\x177&5462\x16\x14\x06#\"'\a\x16\x14\a\x176\x01`(88P8\x02f\x1a\"(88(\"\x1af\x028P88(\"\x1af\x02\x02f\x1a\x808P88(\v\n@\x158P8\x15@\n\v(88P8\x15@\n\x16\n@\x15\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x005\x00\x00\x01\x11\x14\x06#!\"&5\x11463!2\x16\a\"\a'64'7\x163264&\"\x06\x15\x14\x17\a&#\"\x06\x14\x16327\x17\x06\x15\x14\x16264&\x01\xc0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x90\x16\x10D\x02\x02D\x10\x16\x17!!.!\x02D\x10\x16\x17!!\x17\x16\x10D\x02!.!!\x01p\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xec\x0f)\a\x0e\a)\x0f!.!!\x17\a\a)\x0f!.!\x0f)\a\a\x17!!.!\x00\a\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x17\x00\x1f\x00'\x00/\x007\x00?\x00O\x00\x00\x01\a\x17\x16\x14\x0f\x01\x16\x15\x14\x06\"&4632\x17762\x1f\x01?\x012\x14+\x01\"43&2\x1d\x01\x14\"=\x01\x17\x06&?\x016\x16\x0f\x01'&6\x1f\x01\x16\x06\x1f\x01\x16\x06/\x01&6\x05463264&#\"\x06\x15\x14\x1626\x01\xb84\x1b\a\a\x11\x12z\xaczzV-)\x11\a\x14\a\x1a4M\f\f\x18\f\f0\x18\x18.\b\x12\t\x11\b\x11\bU\x11\b\x11\b\x11\t\x11;\x11\b\x11\b\x11\t\x11\xfe\x9f&\x1a\a\t\t\a(8\t\x0e\t\x01h4\x1b\a\x14\a\x11)-Vzz\xacz\x12\x11\a\a\x1b4\f\x18\x18<\f\x18\f\f\x18+\t\x12\b\x11\t\x12\b\x11\x11\b\x12\t\x11\b\x12\x19\x11\t\x11\t\x11\b\x12\xc0\x1a&\t\x0e\t8(\a\t\t\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00%\x00*\x00\x00\x00\x14\x06\"&462\x17\a'7\x17&'\x17\a'7\x06\a7\x17\a'\x14\x177\x1f\x01\a\x167'?\x01\x176\a'7\x17\a\x01\xf8\x91Α\x91\xcea\x1a?\x11\"'>\x0eKK\x0e>'#\x10?\x1a&\bU%\x1e>>\x1e%U\b&\xf8\x1eNN\x1e\x01'Α\x91Α\xf8\x16:T\x036\x13\x1f**\x1f\x136\x03T:\x16B4\"\vM\x12\x14\x14\x12M\v\"4\x04\\88\\\x00\r\x00\x00\xff\xc0\x02\x05\x01\xcd\x00!\x00-\x009\x00E\x00Q\x00]\x00i\x00u\x00\x81\x00\x8d\x00\x99\x00\xa5\x00\xb1\x00\x00\x13>\x01\x16\x17\x16\x0f\x01\x06#\"/\x01&5417&\a\x170\x15\x14\x0f\x01\x06#\"/\x01&54\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x05\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x05\x14+\x01\"=\x014;\x012\x15\x05\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x05D\xb7\xb7D\n\b+\x05\v\x03\x03W\v\x06``\x06\vW\x03\x03\v\x05+\x03`\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f\xfe\xb0\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f`\f(\f\f(\f\xfe\xb0\f(\f\f(\f\x01 \f\xe8\f\f\xe8\f`\f(\f\f(\f\x01XD11D\n\rE\b\x01#\x04\r\x01<##<\x01\r\x04#\x01\bE\x05\x05\b\xc7\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f\x88\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\f\x88\f\f(\f\f(\f\f(\f\f(\f\f(\f\f\x00\x00\x00\x05\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\t\x00\x1e\x003\x00=\x00A\x00\x00\x01\x15#546;\x012\x16\x0546;\x01\x15#\x15\x14\x06+\x01\"&=\x01>\x04%\x1e\x03\x17\x15\x14\x06+\x01\"&=\x01#532\x1e\x01%2\x16\x1d\x01#5463\x1353\x15\x01\xa0`\t\a@\a\t\xfe\xa0\x13\r` \x13\r`\r\x13\x01\r\x12\x12\r\x01\x81\x01\x13\x17\x14\x01\x13\r`\r\x13 `\t\x0e\t\xfe\xf0\a\t`\t\ap@\x01\x9000\a\t\tw\r\x13\xa0\xa0\r\x13\x13\r,$;)%-\x1a\x1f9)G,,\r\x13\x13\r\xa0\xa0\t\x0ew\t\a00\a\t\xff\x00\xa0\xa0\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\a\x00#\x00+\x00\x00\x01\x15#5462\x16\x172\x16\x1d\x01\x14\x06+\x01\x15\x14\x06\a\x15#5.\x01=\x01#\"&=\x014637\x15#5462\x16\x01@@\x13\x1a\x130\a\t\t\a\x10K5@5K\x10\a\t\t\ap@\x13\x1a\x13\x01\xa0``\r\x13\x13\x8d\t\a \a\t 6\\\vcc\v\\6 \t\a \a\t\x80``\r\x13\x13\x00\x00\a\x00\x00\x00\x00\x02@\x01\x80\x00\x14\x00\x1a\x00&\x002\x00>\x00J\x00V\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x015463\x022=\x01#\x1572=\x014+\x01\"\x1d\x01\x143!2=\x014+\x01\"\x1d\x01\x143'2=\x014+\x01\"\x1d\x01\x143!2=\x014+\x01\"\x1d\x01\x14372=\x014#!\"\x1d\x01\x143\x02(\n\x0e\x1c\x14\xfe(\x17!\x0e\n(\x0e\n(\x10\x10\xf4\f\f\x98\f\f\x01h\f\f\x98\f\f8\f\f\x98\f\f\x01h\f\f\x98\f\f\x98\f\f\xfe\x98\f\f\x01\x80\x0e\n\xfe\xc8\x14\x1c!\x17\x01\x10\n\x0e\b\n\x0e\xfe\xb0\b\xf8\xf8\b\f\b\f\f\b\f\f\b\f\f\b\f`\f\b\f\f\b\f\f\b\f\f\b\f`\f(\f\f(\f\x00\x00\x03\xff\xff\xff\xe0\x02\x81\x01\xaf\x00\x12\x00\x1a\x00,\x00\x00\x01\x16\x14\x0f\x01\x06'& \a\x06/\x01&47>\x01\x16\x022\x16\x14\x06\"&4%\x16\x14\x0f\x01\x06'&\"\a\x06/\x01&4762\x02{\x05\x05\"\v\vn\xfe\xd6n\v\v\"\x05\x05W\xe4\xe4\xff6%%6%\x01\v\x05\x05\"\v\v?\xa8?\v\v\"\x05\x05W\xe8\x01%\x04\x0e\x05\"\v\vdd\v\v\"\x05\x0e\x04Q99\xfe\xea%6%%6y\x05\x0e\x05\"\n\n66\n\n\"\x05\x0e\x05L\x00\x00\a\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x0f\x00\x1f\x00/\x00?\x00O\x00_\x00o\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x1354&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x014&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x1754&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x014&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x1754&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x1154&#!\"\x06\x1d\x01\x14\x163!26\x01\x90\x13\x1d\x1d\x13\xfe\xa0\x13\x1d\x1d\x13P\b\x05&\x05\b\b\x05&\x05\b\b\x05&\x05\b\b\x05&\x05\b\x80\b\x05&\x05\b\b\x05&\x05\b\b\x05&\x05\b\b\x05&\x05\b\x80\b\x05&\x05\b\b\x05&\x05\b\b\x05\xfe\xda\x05\b\b\x05\x01&\x05\b\x01\xc0\x1d\x13\xfe`\x13\x1d\x1d\x13\x01\xa0\x13\x1d\xfeM&\x05\b\b\x05&\x05\b\b\x85&\x05\b\b\x05&\x05\b\b{&\x05\b\b\x05&\x05\b\b\x85&\x05\b\b\x05&\x05\b\b{\xa6\x05\b\b\x05\xa6\x05\b\b\x01\x05f\x05\b\b\x05f\x05\b\b\x00\x00\x03\xff\xf9\xff\xb9\x02\x87\x01\xc7\x00#\x00/\x007\x00\x00\x05\x16\x0f\x01\x06'\x01&?\x016\x1f\x01675462\x16\x1d\x01\x1e\x01\x15\x14\x1e\x01\x17\x16\x17\x16\x15\x14\x061%\x17#\".\x01547>\x02\x17\"&53\x14\x0e\x01\x02z\f\t\x14\n\f\xfd\xb3\f\t\x14\n\f\x91%=\x13\x1a\x138H\x14\x11\x0f\x02\x01\t\x01\xfe~\xd5\xf2\t\x0f\b\t\x0e\f\x16\xa7\x1a&\x80\x11\x1e\n\n\r\x19\f\t\x01\xc7\n\r\x19\f\tp1\r\x15\r\x13\x13\r\x15\vV:,C\x18\x0f\x03\x01\n\f\x01\x03\x88\xa4\t\x0f\b\f\n\x0f\x0e2\xe5%\x1b\x11\x1e\x11\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x17\x00!\x00\x00\x012\x16\x1d\x01\x14\x06#!\"&=\x0146;\x0176;\x012\x1f\x01\x01\x03!\x03\x0e\x01+\x01\"&\x01\xb0\a\t\t\a\xfe`\a\t\t\ax\t\a\x0fr\x0f\a\t\xfe\xfd\x15\x01\x80\x15\x01\x1c\x13\xf6\x13\x1c\x01\xa0\t\a \a\t\t\a \a\t\x13\r\r\x13\xfeM\x01S\xfe\xad\x13\x1a\x1a\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x008\x00\x00\x122\x16\x14\x06\"&4\x05654/\x01.\x01\a\x0e\x04#\"&54632\x17\x166?\x01654'.\x06#\"\x06\x15\x14\x1e\x0132>\x01\x99Α\x91Α\x01m\x03\x02\x19\x03\f\x03\x01\x05\r\x0e\x16\v#'(\"$\x1a\x04\v\x03\x16\x02\x03\x01\x03\v\v\x12\x14\x1a\r>R$C) 8\x11\x01\xb8\x91Α\x91\xce\xca\x04\x04\x04\x03\"\x04\x01\x04\x01\x05\t\b\x060 !+\x18\x04\x02\x04#\x03\x03\x05\x04\x01\x03\b\a\t\x06\x04R=)B&\x18\x10\x00\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00:\x00F\x00\x00\x012\x16\x15\x14\x06#\".\x02'\x0e\x01#\"&54632\x176;\x012\x16\x0f\x01\x06\x16\x17>\x0154&#\"\x06\x14\x163276\x16\x1f\x01\x16\x06\a\x06#\"&46\x132654&#\"\x06\x15\x14\x16\x01\x00j\x8eJL\x0f\x10\x17\x0e\x03\r*\x14,4Q9*\x12\x01\f-\f\x0e\x02\x18\x03\x05\f\x1a jNLllL6-\b\x12\x06\n\a\x04\t=Jg\x91\x91Q\x15%\x12\x11\x17$\x14\x01\xb8|d?T\x01\x06\x0f\f\x11\x1691BV\x16\f\x11\fy\r\x10\x01\x032\x1fJVl\x98l\x1d\x05\x03\a\f\t\x15\x06(\x91Α\xfe\xd0)\x1f\x13\x16) \x13\x15\x00\x02\x00\x00\xff\xc0\x02\x01\x01\xc1\x00\v\x00#\x00\x00?\x01\x17\a\x06+\x01\a'754\x00\x16\x14\x0f\x01\x17\x16\x14\x0f\x01\x06\"/\x01&4?\x0162\x1f\x01763~\x80~\x13\x1b-8 \x01\xa88\x1cM\r\a\a)\a\x14\a\xa2\a\a)\a\x14\a\rM\x1cs~\x80~\x13 8-\x1b\x01`8P\x1cM\r\a\x14\a)\a\a\xa2\a\x14\a)\a\a\rM\x1c\x00\x00\x00\x00\x02\xff\xff\xff\xc0\x02\x00\x01\xc0\x00\x13\x00,\x00\x007\x170\x16\x15\x14\x06#\"&5\x1e\x043276\x012\x16\x15\x14\a\x0e\x01#\"/\x01&54>\a76\xa7X\x01F:@@\x02\f\r\x0e\v\x03\v\x04\x1a\x01j\x16 \x0eUP.\n\f@\t\x01\b\b\x14\x14'%?\x1e\x12\x8bJ\a\x028@XC\x02\t\t\t\x06\nD\x01:\x1c\x16\x13\x1b\x9fa\x035\x13\x14\t\x0e\x10\f\x17\x12#\x1f8\x1b\x10\x00\x05\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00#\x004\x00?\x00J\x00U\x00\x00%\"&\"\x06\"&#\"\x06#\"&\"\x06#546;\x0153\x15353\x15353\x1532\x16\x1d\x01!5262\x16262\x162632\x163\x01\"&54652\x16\x14\x063\"&54652\x16\x14\x063\"&54652\x16\x14\x06\x01\xc0\f'/'\x18'\x18\x17(\v\r'/'\f\x1c\x14\x10@@@@@\x10\x14\x1c\xfe@\x18'\x18'/'\x18'/'\r\v'\x18\xfe\xa0\r\x13 \n\x16\x12r\r\x13 \n\x16\x12r\r\x13 \n\x16\x12@ P\x14\x1c\x90\x90\x90\x90\x90\x90\x1c\x14\xd0` \x01@\x13\r\x0e\x1c\x16%&\x15\x13\r\x0e\x1c\x16%&\x15\x13\r\x0e\x1c\x16%&\x15\x00\x00\x00\x02\x00\x00\x00\x00\x02\x00\x01\x80\x00\x0f\x00\x1b\x00\x00%2\x1d\x01\x14#!\"5\x114;\x012\x15\x11%6\x16\x1f\x01!57>\x01\x1f\x01\x01\xf4\f\f\xfe\x18\f\f(\f\x015\x04\v\x02Z\xfe\x80W\x03\r\x04U@\f(\f\f\x01h\f\f\xfe\xcc\xe0\x04\x03\x05\xbch\x91\x05\x01\x05r\x00\x00\x00\x00\x03\xff\xfc\xff\xbe\x02!\x01\xc1\x00\b\x00\x13\x00#\x00\x00%2\x16\a\x06\a\x06/\x017\x14\x06+\x015463\x1e\x01\x05\x17\x16\x06\a\x06\a\x06&'&676\x16\x15\x02\x10\a\n\x01\f=\v\v\x9f\xde\t\a\xe0\n\aY\x80\xfe\xe6\x9c\x05\x01\x06\x01;\x012\x16\x1d\x013'#\"&=\x0146;\x012\x1f\x016\x05\a3&\a267#\"&?\x01&#\"\x06\x14\x16?\x01#\a\x16\x1f\x01\x16654&#\"\a\x17\x16\x06\x0f\x01\x06&/\x01\x06\x17\x1e\x01\x02\x015K\x01\x01K54K)\x0fV\a\r4\vE,5KL4\x17\x14\x1e1\n\x0e\a\v\aW\a\tr\x0f3\a\t\t\a@\r\aN\x16\xfe\xd3\x18+\x04J\x18(\tQ\x0e\x0e\b-\b\t!//\xc4J\x80\x18$\x06\xfd\"2/!\n\n-\x03\x03\x06\r\x06\r\x03-\x14\x01\x01,\x01\x00M55J\x01\x01K48&\x18\x8b\v*6K64K\b0\x0e\n\x06\v\a\t\a\x10\x18\t\a\x10\a\t\v}\bJ&\x16v\x1a\x16\x19\fI\x02/B/`x( 0`\x020\"!/\x02H\x06\r\x03\t\x03\x03\x06G\x18\x1f\x1f,\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x004\x00<\x00L\x00T\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&=\x01\"&=\x01#\"&=\x0146;\x015462\x16\x1d\x01\x00264&\"\x06\x147!26=\x014&#!\"\x06\x1d\x01\x14\x16\x04264&\"\x06\x14\x01\xe8\n\x0e\x0e\n\b\x0e\f\x06\x13\r \r\x13\xc0\x13\r \r\x13\r\x13\b\n\x0e\x0e\n\b\x82\xbc\x82\xfe\x83\x1a\x13\x13\x1a\x130\x01\x00\r\x13\x13\r\xff\x00\r\x13\x13\x01\x10\x1a\x13\x13\x1a\x13\x01@\x0e\nP\n\x0e\xa6\v\x0f \r\x13\x13\r \r\x13\x13\r \x13\r\xa0\x0e\nP\n\x0e0\"..\"0\xfe\xf0\x13\x1a\x13\x13\x1a]\x13\r\x80\r\x13\x13\r\x80\r\x13p\x13\x1a\x13\x13\x1a\x00\x00\x03\x00\x00\x00\x00\x02\x00\x01\x80\x00\x0f\x00'\x00?\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x17\x06&546\x17\x16?\x016'.\x01\x06\x15\x14\x16676/\x01&\x17\x06&546\x17\x16?\x016'.\x01\x06\x15\x14\x16676/\x01&\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\xaa\x1f=@\x1e\x06\x04\x11\x02\x03\x19RA?S\x1a\x04\x03\x14\x04\xb9\x1e>@\x1f\x05\x04\x12\x01\x03\x19RA@R\x1b\x03\x03\x13\x04\x01\x80\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c\xe0\x1b\x17%\"\x15\x18\x04\x06\x1e\x03\x03\x19\x034./6\x05\x1c\x04\x04\x1b\x06\x05\x1b\x17%\"\x15\x18\x04\x06\x1e\x03\x03\x19\x034./6\x05\x1c\x04\x04\x1b\x06\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x1c\x009\x00\x00\x134&+\x01\x11\x14\x06+\x01\"&5\x1146;\x012\x16\x1d\x01\x14\x06+\x01\"&5\x132\x16\x15\x11\x14\x06+\x01\"&5\x1146;\x012\x16\x1d\x013265\x11463\xf8!\x17p\t\a0\a\t\x0e\n\xa88P\t\a0\a\t\xb8\a\tP8\xa8\n\x0e\t\a0\a\tp\x17!\t\a\x01\x18\x17!\xfe\xa0\a\t\t\a\x01\x98\n\x0eP8\xa8\a\t\t\a\x010\t\a\xfe\xd88P\x0e\n\x01\x18\a\t\t\a\xe0!\x17\x01(\a\t\x00\x00\x02\x00\x00\xff\xbe\x02B\x01\xc0\x003\x00W\x00\x00%!\x17!2\x16\x0f\x01\x16\x15\x14\x06#\"&'&7#\x16\x15\x14\x06'.\x01'4>\x017\x03#\"&=\x0146;\x012\x1e\x01\x1f\x01!2\x16\x0f\x01\x06'#54&+\x01\"\x06\x1d\x01#\"\x06\x1d\x01\x14\x16;\x01\x15\x14\x16;\x0126=\x01326=\x014&\x01\xf9\xfe\xdb\x06\x01\r\v\x0e\x02\x06 !\x18\x16 \x01\x01\x12\xd2\x11#\x18\x15\x1f\x01\x06\r\tFF\n\x0e\x0e\ng\x05\n\a\x01\t\x01\x89\f\x0e\x03/\x04t0\t\a\x10\a\t0\a\t\t\a0\t\a\x10\a\t0\a\t\t\x80 \x12\v\x19\x0f#\x17! \x16\x19\x11\x10\x18\x18!\x01\x01\x1f\x15\v\x14\x0f\x06\x01W\x0e\n\x10\n\x0e\x05\t\x05-\x12\v\xd0\x13\x98(\a\t\t\a(\t\a\x10\a\t(\a\t\t\a(\t\a\x10\a\t\x00\x00\x00\x00\x02\x00\x00\xff\xbe\x02B\x01\xc0\x003\x00F\x00\x00%!\x17!2\x16\x0f\x01\x16\x15\x14\x06#\"&'&7#\x16\x15\x14\x06'.\x01'4>\x017\x03#\"&=\x0146;\x012\x1e\x01\x1f\x01!2\x16\x0f\x01\x06'#54+\x01\"\x1d\x01#\"\x06\x1f\x01\x16?\x016&\x01\xf9\xfe\xdb\x06\x01\r\v\x0e\x02\x06 !\x18\x16 \x01\x01\x12\xd2\x11#\x18\x15\x1f\x01\x06\r\tFF\n\x0e\x0e\ng\x05\n\a\x01\t\x01\x89\f\x0e\x03/\x04y+\f\x18\f+\b\x06\x05D\b\bD\x05\x06\x80 \x12\v\x19\x0f#\x17! \x16\x19\x11\x10\x18\x18!\x01\x01\x1f\x15\v\x14\x0f\x06\x01W\x0e\n\x10\n\x0e\x05\t\x05-\x12\v\xd0\x13\x80<\f\f<\x0f\x05D\b\bD\x05\x0f\x00\x00\x02\x00\x00\xff\xc0\x02\x80\x01\xc0\x00<\x00D\x00\x00%\x1e\x0132\x16\x1d\x01\x14\x06#\"'\x0e\x01+\x01\".\x01'\x06#\"&=\x01463267'&6?\x01546;\x01546;\x012\x16\x1d\x0132\x16\x1d\x01\x17\x1e\x01\a%\x15762\x1f\x015\x01\xf1\x0e=,\n\x0e\x0e\nX7\v0\x1e\x80\x14#\x1b\a7X\n\x0e\x0e\n,>\rF\f\b\x11*\x13\r@\x0e\n\x90\n\x0e@\r\x13*\x11\b\f\xfe\x89v\x05\n\x05vK\")\x0e\n\x10\n\x0e;\x1a!\x0f\x1b\x11;\x0e\n\x10\n\x0e)\"F\r#\x05\x0e\x8c\r\x13(\n\x0e\x0e\n(\x13\r\x8c\x0e\x05#\r\xafX&\x02\x02&X\x00\x00\x00\x04\x00\x00\xff\xc0\x01\xc0\x01\xc2\x002\x006\x00:\x00V\x00\x00%\x1e\x01\x1d\x01\x14\x06#!\"&=\x01467'&6;\x01&5&54767>\x01\x1f\x01\x16?\x016\x16\x17\x16\x17\x16\x15\x14\a\x14\a32\x16\x0f\x017/\x01\x177\x0f\x017475\x06#\"'\x1503\x16\x15\x16\x17\x1e\x0126762\x17\x1e\x01676\x01\x80\x1d#\x1a\x13\xfe\x9a\x13\x1a%\x1e\x19\x04\n\b:\x12@F\x0e\x1b\a\x16\n\x1c\x0e\x0e\x1c\n\x16\a\x1b\x0eF@\x12;\b\n\x03\xe8 \x182\x8a*2\x18J\x06,42.\x01\x05\t\b\x04\x0e\x14\x14\x06\x02\x0e\x02\a\x1d\x16\x06\b\x8c\x12=#-\x13\x1a\x1a\x13-$>\x12<\b\x0e\x1f!\r\x13\x14\r1\"\t\x05\x05\x0e\a\a\x0e\x05\x05\t\"1\r\x14\x13\r!\x1f\x0e\b\xeax( \xc0\xc0 (\xb2\x03\x03\v\x06\x06\v\x03\x03\x19\b\x03\x06\x11\x11\x06\x06\x15\x0f\x05\x06\a\x00\x00\x00\x00\x03\xff\xff\xff\xff\x02\x81\x01\x80\x00H\x00W\x00m\x00\x00\x012\x16\x15\x16\x06'\"&547'\x0e\x02\x17\x16\x06+\x01\x0e\x01#\"&7>\x0176\x177&+\x01\"&546;\x012\x173'#\"&=\x0146;\x012\x1f\x0176;\x012\x16\x1d\x01\x14\x06+\x01\x176\x05267#\"&?\x01&#\"\x06\x14\x16%6&#\"\a\x17\x16\x06\x0f\x01\x06&/\x01\x06\x15\x14\x167>\x01\x02\x014K\x01L64K-\r\x13\x1a\f\x01\x01\x0f\nT\vE,6K\x01\x01H2\x16\x13\f\x10 8\n\x0e\x0e\n8E\x1f\x9a\x14B\a\t\t\aP\x0e\a\x16&\a\v-\n\x0e\x0e\nR \x15\xfe\x95\x18(\tQ\x0e\x0e\a)\x05\a!//\x01\xf1\x020\"\b\b1\x03\x03\x06\r\x06\r\x032\x162\"\x1f+\x01\x00K46L\x01K4;'\x15\x0f)-\x18\n\x0f*6M63H\x02\x01\x06\x14\x19\x0e\n\n\x0e( \t\a\x10\a\t\f&*\b\x0e\n \n\x0e7\a\xd0\x1b\x15\x18\fK\x01/B/L\"2\x02Q\x05\r\x04\b\x03\x03\x06R\x17 \"0\x02\x02+\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x1c\x00$\x00@\x00\x00%\x1e\x01\x15\x14\x06\"&5467\x16\x17\x15\x0e\x02\x15\x14\x162654&'56&\"&462\x16\x14\a\"&=\x0146;\x01\x162732\x16\x1d\x01\x14\x06#\x15\x14\x06+\x01\"&5\x01pAO\x96ԖOA\b\b!3\x1cz\xacz=3\bM6%%6%\x80\r\x13\x1c\x14\f\x11&\x11\f\x14\x1c\x13\r\x13\r@\r\x13v\f.\x1c(88(\x1c.\f\t\x04\x17\x05\x0f\x13\v\x17!!\x17\x10\x1b\a\x17\x04\xd3%6%%6\xe5\x13\r`\x14\x1c\b\b\x1c\x14`\r\x13`\r\x13\x13\r\x00\x00\x00\x02\xff\xfe\xff\xe0\x02\x02\x01\xa1\x00\r\x00)\x00\x00%\x173\a\x06\"/\x0137\x17\x1627\x13\x1e\x01\a#'&\"\x0f\x01'&\"\x0f\x01#&6?\x0162\x1f\x01762\x17\x01@\x16m\xb6\x06\x0f\x05\xb6^\x1e9\x04\x14\x04\xcc$\x04!w\x1c\x04\x14\x041:\x05\x15\x04$f!\x04$\x03&n'\x1c\x1c'n&\xcc,\xba\x06\x06\xbaH\u007f\t\t\x01\r%i(7\t\tb\x82\t\nV(i%\x02((\x1c\x1d''\x00\x00\x00\x02\x00\x00\xff\xe0\x01 \x01\xa0\x00!\x00)\x00\x00\x01\x14\x06\a\x1532\x1d\x01\x14+\x01\x15\x14+\x01\"=\x01#\"=\x014;\x015.\x015462\x16\x06\x14\x16264&\"\x01 ?1$\f\f$\f(\f$\f\f$1?TxT\xe0/B//B\x01\x103N\v4\f(\f$\f\f$\f(\f4\vN3\x0132\x177'&?\x016\x1f\x017'&63\x02264&\"\x06\x14\x01t\x05\a\x0f\x05\x11\x12\x0e\t\t\x1c\t\b\x0e\x12\x16TxT'B'*#\x12\x0f\b\b\x1d\b\t\x0e\x11\x11\x05\x06\b\xb6B//B/\x01\x80\a\x05O\b\x06\x06\x11\x12\x0e\t\b\x1c\t\t\x0e\x12#*KjKKjkO7*\x14\x1c\x1c\x14*7O\x10\x10\x00\x02\x00\x00\x00\x00\x02\x80\x01\x80\x00\a\x00+\x00\x006\"&462\x16\x14%2\x16\x1d\x01\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&5\x1146;\x012\x16\x1d\x0135463\xd1B//B/\x01\x10.B\t\a \a\t\xfe\x00\t\a \a\t\t\a \a\t\xe0\t\a\xc0/B//BQB.\xc0\a\t\t\a00\a\t\t\a\x01`\a\t\t\aА\a\t\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x17\x00'\x00/\x00\x00\x01\x11\x14\x06#\x17\x16\x06#!\"&?\x01\"&5\x1146;\x012\x16\a54&#!\"\x06\x1d\x01\x14\x163!26\x06\"\x06\x14\x16264\x01\xc0N4?\x04\x03\x06\xfe\xd0\x06\x03\x04?4NO1\xc02N0\x0e\n\xfe\xd0\n\x0e\x0e\n\x010\n\x0e\x99.!!.!\x01`\xff\x00'92\x03\v\v\x0329'\x01\x00'99\xafp\n\x0e\x0e\np\n\x0e\x0e6!.!!.\x00\x00\x00\x00\x05\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x17\x00'\x007\x00?\x00G\x00\x00\x01\x11\x14\x06#\x17\x16\x06#!\"&?\x01\"&5\x1146;\x012\x16\a54&+\x01\"\x06\x1d\x01\x14\x16;\x0126754&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x06\"\x06\x14\x16264$\"\x06\x14\x16264\x01\xc0N4?\x04\x03\x06\xfe\xd0\x06\x03\x04?4NO1\xc02N\xf8\x0e\nh\n\x0e\x0e\nh\n\x0e\xc8\x0e\nh\n\x0e\x0e\nh\n\x0e\x1c(\x1c\x1c(\x1c\xfe\xe4(\x1c\x1c(\x1c\x01`\xff\x00'92\x03\v\v\x0329'\x01\x00'99\xafp\n\x0e\x0e\np\n\x0e\x0e\np\n\x0e\x0e\np\n\x0e\x0e.\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x00\x00\x00\x00\x03\x00\x00\x00 \x02\x80\x01`\x00\a\x00!\x00%\x00\x00\x01!\x15!535#72\x16\x1d\x0132\x16\x1d\x01\x14\x06+\x01\x15\x14\x06#!\"&=\x01463\x05\x15!5\x02 \xfe \x01\xe0 \x10\x14\x1c\b\n\x0e\x0e\n\b\x1c\x14\xfe\x00\x14\x1c\x1c\x14\x01\xd0\xfe`\x01 \xc0@@\x80\x1c\x14\x10\x0e\n\x90\n\x0e\x10\x14\x1c\x1c\x14\xe0\x14\x1c`\x80\x80\x00\x00\x00\x03\x00\x00\x00 \x02\x80\x01`\x00\a\x00!\x00%\x00\x00\x01!\x15!535#72\x16\x1d\x0132\x16\x1d\x01\x14\x06+\x01\x15\x14\x06#!\"&=\x01463\x05\x15!5\x02 \xfe \x01\xe0 \x10\x14\x1c\b\n\x0e\x0e\n\b\x1c\x14\xfe\x00\x14\x1c\x1c\x14\x01p\xfe\xc0\x01 \xc0@@\x80\x1c\x14\x10\x0e\n\x90\n\x0e\x10\x14\x1c\x1c\x14\xe0\x14\x1c`\x80\x80\x00\x00\x00\x03\x00\x00\x00 \x02\x80\x01`\x00\a\x00!\x00%\x00\x00\x01!\x15!535#72\x16\x1d\x0132\x16\x1d\x01\x14\x06+\x01\x15\x14\x06#!\"&=\x01463\x05\x15#5\x02 \xfe \x01\xe0 \x10\x14\x1c\b\n\x0e\x0e\n\b\x1c\x14\xfe\x00\x14\x1c\x1c\x14\x01\x10\xe0\x01 \xc0@@\x80\x1c\x14\x10\x0e\n\x90\n\x0e\x10\x14\x1c\x1c\x14\xe0\x14\x1c`\x80\x80\x00\x00\x00\x00\x03\x00\x00\x00 \x02\x80\x01`\x00\a\x00!\x00%\x00\x00\x01!\x15!535#72\x16\x1d\x0132\x16\x1d\x01\x14\x06+\x01\x15\x14\x06#!\"&=\x01463\x17\x15#5\x02 \xfe \x01\xe0 \x10\x14\x1c\b\n\x0e\x0e\n\b\x1c\x14\xfe\x00\x14\x1c\x1c\x14\xb0\x80\x01 \xc0@@\x80\x1c\x14\x10\x0e\n\x90\n\x0e\x10\x14\x1c\x1c\x14\xe0\x14\x1c`\x80\x80\x00\x02\x00\x00\x00 \x02\x80\x01`\x00\a\x00!\x00\x00\x01!\x15!535#72\x16\x1d\x0132\x16\x1d\x01\x14\x06+\x01\x15\x14\x06#!\"&=\x01463\x02 \xfe \x01\xe0 \x10\x14\x1c\b\n\x0e\x0e\n\b\x1c\x14\xfe\x00\x14\x1c\x1c\x14\x01 \xc0@@\x80\x1c\x14\x10\x0e\n\x90\n\x0e\x10\x14\x1c\x1c\x14\xe0\x14\x1c\x00\x00\x00\x00\x01\x00\x00\xff\xbe\x01D\x01\xc4\x00\x15\x00\x00%#\x17\x16\x06\x0f\x01\x06&/\x01\a\x06&5\x1146\x17\x01\x16\x06\x01.j8\x03\x06\a1\a\r\x035W\b\x16\x17\a\x01\x1d\b\tw\x88\a\x0e\x03\x16\x02\x05\a\x81Y\t\n\f\x01\xae\f\t\b\xfe\xdb\b\x17\x00\x01\x00\x00\xff\xbf\x01\x00\x01\xc1\x00H\x00\x00\x01\x14\x06#\"\x1d\x0132\x1d\x01\x14+\x01\x15\x1472\x16\x1d\x01\x14\x06#\".\x01'\x0e\x02#\"&=\x014632=\x01#\"=\x014;\x0154\a\".\x01=\x014>\x0232\x1e\x01\x17>\x0232\x16\x15\x01\x00\a\x05T$\f\f$T\x05\a\a\x05\x17\x1e-\x12\x12.\x1e\x16\x05\a\a\x05T$\f\f$T\x03\x06\x03\x02\x03\x04\x03\x17\x1e-\x12\x12.\x1e\x16\x05\a\x01\x8c\x05\a0p\f(\fp1\x01\a\x05(\x05\a\x03\x12\x11\x12\x12\x02\a\x05(\x05\a0p\f(\fp1\x01\x03\x06\x03(\x02\x05\x03\x02\x03\x12\x11\x12\x12\x02\a\x05\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00,\x008\x00G\x00\x00\x01\x1132\x1d\x01\x14+\x01\"=\x01!\x15\x14+\x01\"=\x014;\x01\x11#\"=\x014;\x012\x1d\x01!54;\x012\x1d\x01\x14+\x01\x05\x14;\x012=\x014+\x01\"\x15\x0554+\x01\x15\x14\x06+\x01\x15\x14;\x012\x01\xe0\x14\f\f(\f\xfe\x80\f(\f\f\x14\x14\f\f(\f\x01\x80\f(\f\f\x14\xfe\x80\f\xa8\f\f\xa8\f\x01@\fT\x0e\nH\f\xa8\f\x01@\xfe\xe0\f(\f\f\x14\x14\f\f(\f\x01@\f(\f\f\x14\x14\f\f(\f\xb4\f\f\x88\f\f\xe8\x88\fH\n\x0e4\f\x00\x00\x00\x02\x00\x00\xff\xe0\x02@\x01\xa0\x00+\x00]\x00\x007\x15\x14+\x01\"=\x014;\x015#\"=\x014;\x012\x1d\x01!54;\x012\x1d\x01\x14+\x01\x1532\x1d\x01\x14+\x01\"=\x017\x1532\x1d\x01\x14+\x01\"=\x01!\x15\x14+\x01\"=\x014;\x0153\x15\x14\x16;\x0126=\x014&+\x015354;\x012\x1d\x01\x14+\x01@\x064\x06\x06\x1a\x1a\x06\x064\x06\x01 \x064\x06\x06\x1a\x1a\x06\x064\x06\xc0\x1a\x06\x064\x06\xfe\xe0\x064\x06\x06\x1a\x88\x0e\n@\n\x0e\x0e\n\bh\x064\x06\x06\x1a\x80\x1a\x06\x064\x06\xc0\x064\x06\x06\x1a\x1a\x06\x064\x06\xc0\x064\x06\x06\x1a@\xa0\x064\x06\x06\x1a\x1a\x06\x064\x06H\b\n\x0e\x0e\n@\n\x0eH\x1a\x06\x064\x06\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x11\x00\x1a\x00\x00%\"\x06\x1d\x01!\"&5\x11463!2\x16\x15\x11\x0f\x01\x06+\x0153\x15\x14\x018\n\x0e\xfe\xf8\n\x0e\x0e\n\x01\x90\n\x0e\ab\a\n\x06\x80\x80\x0e\n\x88\x0e\n\x01\x90\n\x0e\x0e\n\xfe\xf87b\a\x80\x06\n\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x0f\x00!\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x113\x15\x14\x06#!\"&5\x1146;\x01\x15\x14\x16\x01\xd0\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xd0\x1c\x14\xfe\xe0\x14\x1c\x1c\x140/\x01\xc0\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c\xfe`0\x14\x1c\x1c\x14\x01 \x14\x1c\xd0!/\x00\x00\x00\x00\x05\xff\xff\xff\xc0\x02\x80\x01\xc0\x00\x15\x00\x18\x004\x007\x00c\x00\x00%\x14\x06\"&5054676762\x17\x16\x17\x1e\x01\x15\x14'\a3\x05\x14\x0e\x01#\"&505467>\x04762\x17\x16\x17\x1e\x01\x15\x14'3'\x132\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x11&'#\"&=\x0146;\x0162\x1732\x16\x1d\x01\x14\x06+\x01\x06\a\x11\x01\x00KjK\n\x1e\x1a\x13\r<\r\x14\x1a\x1d\n\x80H\x90\x01\xb8\";#5K\n\x1e\x05\x05\v\b\v\x05\r<\r\x14\x1a\x1d\nȐH\x10\a\t\t\a\xfe`\a\t\t\a\xb0&\b\x82\a\t\t\a\x90\x19N\x19\x90\a\t\t\a\x82\b&p!//!\x01\b\x17<4&\x1a\x1a(59\x16\t\x01\xa0\x90\x10\x16%\x15/!\x01\b\x17<\n\n\x15\x10\x16\v\x1a\x1a(59\x16\t\x01\x10\x90\xfe\xf0\t\a \a\t\t\a \a\t\x01'\x10)\t\a \a\t \t\a \a\t)\x10\xfe\xd9\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\x80\x01\xc0\x00*\x000\x00\x00\x012\x16\x1d\x01\x14\x06#\x14\x06\a\x1e\x01\x152\x16\x1d\x01\x14\x06#!\"&=\x01463467.\x025\"&=\x01463\x014&\"\x06\x15\x01h\n\x0e\x0e\nD55D\n\x0e\x0e\n\xfe\xb0\n\x0e\x0e\nD5#7\x1f\n\x0e\x0e\n\x01\x10=V=\x01\xc0\x0e\n\x10\n\x0eCk\x12\x12kC\x0e\n\x10\n\x0e\x0e\n\x10\n\x0eCk\x12\f8O-\x0e\n\x10\n\x0e\xfe@;UU;\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00*\x000\x006\x00\x00\x012\x16\x1d\x01\x14\x06#\x14\x06\a\x1e\x01\x152\x16\x1d\x01\x14\x06#!\"&=\x01463467.\x025\"&=\x01463\x01.\x01\"\x06\a\x1365#\x14\x17\x01h\n\x0e\x0e\nD55D\n\x0e\x0e\n\xfe\xb0\n\x0e\x0e\nD5#7\x1f\n\x0e\x0e\n\x01\x05\r2<2\r\xba\v\xd0\v\x01\xc0\x0e\n\x10\n\x0eCk\x12\x12kC\x0e\n\x10\n\x0e\x0e\n\x10\n\x0eCk\x12\f8O-\x0e\n\x10\n\x0e\xfe\x80$,,$\x01\x00\x1e\"\"\x1e\x00\x00\x02\x00\x00\xff\xc0\x01\x80\x01\xc0\x00*\x000\x00\x00\x01\x14\x06\a\x1e\x01\x152\x16\x1d\x01\x14\x06#!\"&=\x01463467.\x025\"&=\x01463!2\x16\x1d\x01\x14\x0e\x01265#\x14\x01hD55D\n\x0e\x0e\n\xfe\xb0\n\x0e\x0e\nD5#7\x1f\n\x0e\x0e\n\x01P\n\x0e\x0e\xddV=\xd0\x01\x80Ck\x12\x12kC\x0e\n\x10\n\x0e\x0e\n\x10\n\x0eCk\x12\f8O-\x0e\n\x10\n\x0e\x0e\n\x10\n\x0e\x90U;;\x00\x00\x00\x00\x01\x00\x00\xff\xc0\x01\x80\x01\xc0\x00*\x00\x00\x01\x14\x06\a\x1e\x01\x152\x16\x1d\x01\x14\x06#!\"&=\x01463467.\x025\"&=\x01463!2\x16\x1d\x01\x14\x06\x01hD55D\n\x0e\x0e\n\xfe\xb0\n\x0e\x0e\nD5#7\x1f\n\x0e\x0e\n\x01P\n\x0e\x0e\x01\x80Ck\x12\x12kC\x0e\n\x10\n\x0e\x0e\n\x10\n\x0eCk\x12\f8O-\x0e\n\x10\n\x0e\x0e\n\x10\n\x0e\x00\x00\x00\x00\x01\x00\x00\xff\xdf\x02\x00\x01\xa1\x00?\x00\x00\x012\x1e\x01\x1d\x01\x14\x0f\x01\x06\x1d\x01\x14\x0e\x01+\x01\"&=\x014/\x01&=\x014632\x16\x1d\x01\x1754632\x16\x1d\x01354632\x16\x1d\x01354632\x16\x1d\x01346\x01\xd1\r\x15\r\b0\b\x06\v\a\xf0\n\x0e\x10p \x1d\x14\x13\x1c\b\x1d\x14\x13\x1c\b\x1d\x14\x13\x1c\b\x1d\x14\x13\x1c\b\x1d\x01p\x0e\x16\r\x85\x14\x12t\x12\x13\x03\a\v\x06\x0e\n\a\x15\x0ed\x1d+B\x14\x1c\x1d\x140\a\x88\x14\x1c\x1d\x14\x1f0\x14\x1c\x1d\x14/ \x14\x1c\x1d\x14\x1f\x14\x1c\x00\x00\x00\x01\xff\xfd\xff\xc0\x01\xc0\x01\xc1\x008\x00\x00\x012\x1e\x01\x1d\x01\x14\x0f\x01\x0e\x01+\x01\"&/\x01&>\x01\x16\x1f\x0154>\x0132\x16\x1d\x01354>\x0132\x1e\x02\x1d\x01354632\x16\x1d\x013546\x01\x99\n\x13\n\x05\x1b\x03\x1b\x10\xc6\n\x17\x06}\n\x05\x1b!\t \n\x13\n\x11\x18\b\n\x13\n\b\x10\v\x06\b\x17\x10\x11\x18\b\x18\x01@\v\x12\v\x96\x17\x15q\x10\x15\f\b\xac\x0e!\x13\x05\r,\xec\v\x12\v\x18\x11\xaf\xd8\v\x12\v\x06\v\x10\bױ\x10\x18\x18\x11\xb0W\x11\x18\x00\x01\x00\x00\xff\xe0\x02\x00\x01\xa4\x00.\x00\x00\x164635#\"&46;\x015#\"&46;\x015'.\x027>\x01\x1f\x017>\x01\x1f\x01\x1e\x01\x1d\x01\x14\x06\x0f\x01\x06+\x01\"\xd8\x17\x11 \x11\x17\x17\x11 \xd0\x14\x1c\x1c\x14в\f\x10\x03\x04\b$\x13\xbe\x19\t\x1d\rp\b\f\x11\x0e\x88\x04\x05P\x11\t\"\x17\b\x17\"\x17\b\x1c(\x1c\x0eE\x05\x14\x19\r\x12\x10\aK\x1f\f\x05\a@\x05\x14\n\xf0\x0e\x16\x03 \x01\x00\x00\x00\x00\x01\x00\x00\xff\xe0\x02@\x01\xa0\x00&\x00\x00\x0554/\x01&+\x01\"&=\x0146;\x0126?\x016&+\x01\"&=\x01463!2\x16\x17\x13\x16\x1d\x01\x01\x80\vp\f\x0e\x93\n\x0e%\x1b|\b\x12\x03\x16\x03\n\n\xe6\x17!\x0e\n\x01N\n\x18\x06\xa3\x0f =\x0e\aG\a\x0e\n\b\x1b%\f\b3\t\x10!\x17\x10\n\x0e\r\t\xfe\xfd\x17\x1ct\x00\x01\x00\x00\xff\xc0\x02\x00\x01\xc1\x00K\x00\x00\x01\x03\x0e\x01+\x01\"&/\x01&54632\x1f\x014/\x01&54632\x16\x1f\x01\x1632545'&54632\x1e\x01\x1f\x01\x1632?\x01>\x0232\x17\x1e\x01\x0f\x01\x141\x1432?\x01>\x0132\x16\x15\x14\x01\xffD\b<\"\u007f\x167\x10l\r\x17\x11\x10\v=\f*\x02\x17\x11\f\x17\x03&\x01\x06\t3\x01\x17\x11\b\x11\f\x028\x02\b\b\x02&\x02\v\x11\t\x06\x06\x0f\x0f\x03\"\a\x06\x02\x1d\x03\x17\r\x11\x17\x01/\xfe\xe1!/\x16\x0ff\f\x11\x11\x17\v9)(\x90\x05\x06\x11\x17\x11\f}\x06\b\x01\x01\xc4\x05\x05\x11\x17\b\x0e\b\xda\b\b\xb8\t\x0e\t\x02\x05\x1b\x10\xa5\x01\b\x06{\r\x12\x17\x11\x05\x00\x00\x00\x00\x04\xff\xfd\xff\xc0\x01\xc0\x01\xc0\x00-\x001\x005\x009\x00\x00%\x15\x14\x0f\x01\x0e\x01+\x01\"/\x01&>\x01\x16\x1f\x01\x11462\x16\x1d\x0135462\x16\x1d\x0135462\x16\x1d\x013462\x16\x05#\x1537#\x1537#\x153\x01\xc0\x01 \x03\x16\x0e\xd0\x14\f\x80\n\x05\x1b!\t \x17\"\x17\b\x17\"\x17\b\x17\"\x17\b\x17\"\x17\xff\x00\b\bX\b\bX\b\b\xd0`\x05\x04\x88\x0e\x11\x10\xb0\x0e!\x13\x05\r,\x01\x14\x11\x17\x17\x11\xc8(\x11\x17\x17\x11(\x18\x11\x17\x17\x11\x18\x11\x17\x17a`````\x00\x00\x01\xff\xfc\xff\xc0\x01\xc0\x01\xc0\x00-\x00\x00$2\x16\x1d\x01\x14\x0f\x01\x0e\x01+\x01\".\x01/\x01&6?\x01'&>\x01\x16\x1f\x0135462\x16\x1d\x0135462\x16\x1d\x0134\x01\x87\"\x17\x01 \x03\x16\x0e\xf0\x06\x0e\f\x03@\a\x05\f\x1fK\a\x10%$\bE\x0e\x1c(\x1c\b\x17\"\x17\b\xe8\x17\x11P\x05\x04\x88\x0e\x11\x05\n\x05p\r\x1d\t\x19\xbe\x13$\x0f\x10\x12\xb2\xd0\x14\x1c\x1c\x14\xd0 \x11\x17\x17\x11 \x11\x00\x02\x00\x00\x00 \x02\x81\x01`\x00\x19\x00G\x00\x00\x012\x1e\x01\a\x15\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\"&=\x0143\x01\x16+\x01\"/\x015#\x06\x0f\x01\x06+\x01\"/\x02#\x16\x0f\x01\x06+\x01\"&7\x136;\x012\x1f\x0236?\x016;\x012\x17\x01\x05\x03\x05\x04\x01\a\x05U\a\x056\x05\aU\x05\a\f\x02t\x01\r6\v\x01\t\x01\v\a\x1e\x03\t2\t\x02\x1f\x12\x01\x02\x02\t\x01\v6\x06\a\x01\x18\x01\vA\t\x03+\x10\x01\t\b+\x03\tA\v\x01\x01`\x03\x06\x03+\x05\a\xf1\x05\a\a\x05\xf1\a\x05+\f\xfe\xcd\r\v\x856\"\x14U\a\aU6\x1e\x18\x85\v\b\x05\x01(\v\b\u007f5 \x15\u007f\b\v\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00*\x00\x00%\x14+\x01532\x166\x14\x06\"&462\x13&'654+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x013\x17\x16;\x0126\x01\x1d\x1c\x1e\x17\x15\x0eۑΑ\x91\xce\x04+\x01&jG\t\x0f\x0f\t\x17\n\x0e\x1a,\a\x0e\x18\x0e\x0e\xf1\x1d8\f'Α\x91Α\xfe\xa0O\x02\x182Y\x0e\n\xe8\n\x0e\x0e\nHS\r\x18\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x80\x01\xc0\x00#\x00'\x00\x00\x012\x16\x15\x11\x14\x06+\x01\x1532\x16\x1d\x01\x14\x06#!\"&=\x0146;\x015#\"&5\x11463\x01\x11!\x11\x02P\x14\x1c\x1c\x14\xf0\xb0\a\t\t\a\xfe`\a\t\t\a\xb0\xf0\x14\x1c\x1c\x14\x02\x10\xfe\x00\x01\xc0\x1c\x14\xfe\xc0\x14\x1c \t\a \a\t\t\a \a\t \x1c\x14\x01@\x14\x1c\xfe\xa0\x01 \xfe\xe0\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1d\x00+\x00G\x00\x00\x01!\"=\x0146;\x0154;\x012\x1d\x01354;\x012\x1d\x0132\x16\x1d\x01\x14\x05!2\x15\x11\x14\x06#!\"&5\x114\x054+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x01325\x01\xb4\xfeX\f\x1c\x140\f(\f\x80\f(\f0\x14\x1c\xfeL\x01\xa8\f\x1c\x14\xfe\xa0\x14\x1c\x01H\f<\f(\f<\f\f<\f(\f<\f\x01 \f$\x14\x1c4\f\f44\f\f4\x1c\x14$\f \f\xfe\xfc\x14\x1c\x1c\x14\x01\x04\f\x8c\f<\f\f<\f(\f<\f\f<\f\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1d\x00+\x007\x00\x00\x01!\"=\x0146;\x0154;\x012\x1d\x01354;\x012\x1d\x0132\x16\x1d\x01\x14\x05!2\x15\x11\x14\x06#!\"&5\x114\x052=\x014+\x01\"\x1d\x01\x143\x01\xb4\xfeX\f\x1c\x140\f(\f\x80\f(\f0\x14\x1c\xfeL\x01\xa8\f\x1c\x14\xfe\xa0\x14\x1c\x01<\f\f\xb8\f\f\x01 \f$\x14\x1c4\f\f44\f\f4\x1c\x14$\f \f\xfe\xfc\x14\x1c\x1c\x14\x01\x04\f\xc0\f(\f\f(\f\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1d\x00+\x00G\x00\x00\x01!\"=\x0146;\x0154;\x012\x1d\x01354;\x012\x1d\x0132\x16\x1d\x01\x14\x05!2\x15\x11\x14\x06#!\"&5\x114\x0576/\x01&\x0f\x01'&\x0f\x01\x06\x1f\x01\a\x06\x1f\x01\x16?\x01\x17\x16?\x016'\x01\xb4\xfeX\f\x1c\x140\f(\f\x80\f(\f0\x14\x1c\xfeL\x01\xa8\f\x1c\x14\xfe\xa0\x14\x1c\x01\r0\t\t\x1c\b\t00\t\b\x1c\t\t00\t\t\x1c\b\t00\t\b\x1c\t\t\x01 \f$\x14\x1c4\f\f44\f\f4\x1c\x14$\f \f\xfe\xfc\x14\x1c\x1c\x14\x01\x04\f\xa00\t\b\x1c\t\t00\t\t\x1c\b\t00\t\b\x1c\t\t00\t\t\x1c\b\t\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1d\x00+\x00;\x00\x00\x01!\"=\x0146;\x0154;\x012\x1d\x01354;\x012\x1d\x0132\x16\x1d\x01\x14\x05!2\x15\x11\x14\x06#!\"&5\x114\x05'&\x0f\x01'&\x0f\x01\x06\x1f\x01\x16?\x016\x01\xb4\xfeX\f\x1c\x140\f(\f\x80\f(\f0\x14\x1c\xfeL\x01\xa8\f\x1c\x14\xfe\xa0\x14\x1c\x01Y\x1c\b\tj.\b\t\x1c\t\tR\t\b\x8f\t\x01 \f$\x14\x1c4\f\f44\f\f4\x1c\x14$\f \f\xfe\xfc\x14\x1c\x1c\x14\x01\x04\f`\x1c\t\bj/\b\b\x1c\t\bT\b\b\x8e\t\x00\x00\x00\x00\x01\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x19\x00\x00\x016\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x16\x1d\x0176\x16\x1d\x01\x01\xdb\f\x19\x0e\n\xfe0\n\x0e\x0e\np\n\x0e\x8b\f\x19\x01\x1c\b\x0e\x0e\xfe\xf0\n\x0e\x0e\n\x01\x90\n\x0e\x0e\n\xc4X\b\x0e\x0eD\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01 \x01\xc0\x00\t\x00\x11\x00\x1d\x00\x007\x1627\x15\a\x06\"/\x01\x022\x16\x14\x06\"&4724#\"\x06\x15\x142546p\x11\x1e\x11\x16\x04\f\x04\x16\x1cxTTxT\x90\f\f&6\x18(\x83\x03\x03\x9d!\x05\x05!\x01\xdaTxTTx\b\x186&\f\f\x1c(\x00\x00\x00\x00\x03\xff\xf9\xff\xc0\x02\a\x01\xc0\x00\x1a\x00$\x009\x00\x00\x01\x16\x0f\x01\x06#!\"&=\x0146;\x01546;\x012\x16\x1d\x0132\x17\x0353\x15\x14\x06+\x01\"&\x132\x16\x1d\x01\x14\x06#!\"/\x01&?\x016;\x0153\x15\x01\xfb\f\f+\t\x0e\xfe\u007f\n\x0e\x0e\n\xa8\t\a \a\t\x99\x0e\t\xf0@\t\a \a\t\xe8\n\x0e\x0e\n\xfe\u007f\x0e\t+\f\f+\t\x0e\x99@\x01k\v\v,\t\x0e\nP\n\x0e\x10\a\t\t\a\x10\t\xfe9pp\a\t\t\x01\x17\x0e\nP\n\x0e\t,\v\v,\t \x00\x00\x00\x03\x00\x00\xff\xde\x02@\x01\xa1\x00\n\x00\x0e\x00\x1a\x00\x00\x114>\x01?\x01\x11\a\x06&57\x11\x17\x11\x136\x1e\x01\x15\x11\x14\x0e\x01\x0f\x01\x11\x05\n\x05\x8c\x8a\b\x0e\xc0\xc0\xaa\x06\t\a\x05\n\x05\x8c\x01J\x06\f\n\x028\xfe\x80?\x03\n\b0\x01\x80@\xfe\x80\x01\xbf\x02\x03\b\x06\xfe\xa6\x06\f\n\x028\x01\x80\x00\x01\x00\x00\xff\xbd\x02\x00\x01\xc0\x00\x15\x00\x00\x012\x16\x15\x11\x14\x06+\x01\a\x06&=\x01#\"&5\x11463\x01\xc0\x1a&&\x1a\x90}\x06\r`\x1a&&\x1a\x01\xc0&\x1a\xfe\xe0\x1a&^\x04\a\aT&\x1a\x01 \x1a&\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x17\x00'\x00\x00\x122\x16\x14\x06\"&4\x1754&+\x01\"\x06\x1d\x01\x14\x16;\x0126754&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x99Α\x91Α\xe8\t\a0\a\t\t\a0\a\tp\t\a0\a\t\t\a0\a\t\x01\xb8\x91Α\x91η\xa0\a\t\t\a\xa0\a\t\t\a\xa0\a\t\t\a\xa0\a\t\t\x00\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x17\x00\x00\x122\x16\x14\x06\"&4\x0554&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x99Α\x91Α\x01X\t\a\xa0\a\t\t\a\xa0\a\t\x01\xb8\x91Α\x91η\xa0\a\t\t\a\xa0\a\t\t\x00\x00\x04\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x11\x00\x19\x00!\x00)\x00\x00\x013\x11\x14\x06#!\"&5\x1135462\x16\x15#\x15354&\"\x06\x16264&\"\x06\x14\x06264&\"\x06\x14\x01``/!\xfe\xe0!/`KjK\xc0\x80&4&\x96\x14\x0e\x0e\x14\x0e\xb2\x14\x0e\x0e\x14\x0e\x01 \xfe\xf0!//!\x01\x10 5KK5 \x1a&&\x92\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x00\x04\x00\x00\xff\xe0\x02@\x01\xa2\x00*\x006\x00B\x00N\x00\x00%\x15\x14\x06+\x01\a\x0e\x02#!\"&/\x01#\"&=\x0146;\x017>\x01\x1e\x01\x0f\x013'&>\x01\x16\x1f\x0132\x16\x0554&\"\x06\x1d\x01\x14\x1626754&\"\x06\x1d\x01\x14\x1626'54&\"\x06\x1d\x01\x14\x1626\x02@\x0e\n\b\x1a\x02\r\x15\f\xfe\x94\x12\x1b\x03\x1a\b\n\x0e\x0e\nCk\b\x1a\x16\x04\bP\xecP\b\x04\x16\x1a\bkC\n\x0e\xfe\xf8\x0e\x14\x0e\x0e\x14\x0ep\x0e\x14\x0e\x0e\x14\x0e\xe0\x0e\x14\x0e\x0e\x14\x0e\xe8\x10\n\x0e\xb7\v\x13\v\x17\x12\xb7\x0e\n\x10\n\x0e\x93\v\x04\x10\x1a\vmm\v\x1a\x10\x04\v\x93\x0e\xbap\n\x0e\x0e\np\n\x0e\x0e\np\n\x0e\x0e\np\n\x0e\x0e\np\n\x0e\x0e\np\n\x0e\x0e\x00\x00\x00\x00\x02\xff\xff\xff\xe0\x01\xc1\x01\xa0\x00C\x00G\x00\x00\x01\x06+\x01\a32\x16\x0f\x01\x06+\x01\a\x06+\x01\"&?\x01#\a\x06+\x01\"&?\x01#\"&?\x016;\x017#\"&?\x016;\x0176;\x012\x16\x0f\x01376;\x012\x16\x0f\x0132\x16\x0f\x017#\a\x01\xb9\x02\nO\x17K\x05\b\x01\b\x01\nP\x0f\x02\n(\x06\a\x01\x0eb\x10\x01\n)\x06\a\x01\x0fK\x06\a\x01\a\x02\nO\x17K\x05\b\x01\b\x01\nP\x0f\x02\n(\x06\a\x01\x0eb\x10\x01\n)\x06\a\x01\x0fK\x06\a\x01\xba\x17c\x17\x01\n\n\x80\t\x05(\nV\n\t\x05RV\n\t\x05R\t\x05(\n\x80\t\x05(\nV\n\t\x05RV\n\t\x05R\t\x05\xb2\x80\x80\x00\x00\x05\xff\xfc\xff\xc0\x01\xc4\x01\xc0\x00\a\x00\x0f\x00\x17\x00\x1f\x00-\x00\x006\"&462\x16\x14&\"\x06\x14\x16264\x162\x16\x14\x06\"&4\x16264&\"\x06\x14\x1332\x16\a\x01\x06+\x01\"&7\x016\x9e\\BB\\B\\(\x1c\x1c(\x1c\x82\\BB\\B\\(\x1c\x1c(\x1ch \x0e\x0e\b\xfe\x91\a\f\"\x0e\x0e\t\x01p\a\xe0B\\BB\\^\x1c(\x1c\x1c(\xc4B\\BB\\^\x1c(\x1c\x1c(\x01\xa4\x1a\f\xfe0\n\x1a\f\x01\xd0\n\x00\x05\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00G\x00\x00\x00\"\x06\x14\x16264$2\x16\x14\x06\"&462\x16\x14\x06\"&46\"\x06\x14\x16264\x17>\x01.\x01\a\x06\"'&\x0e\x01\x16\x17\x16\x17\x14\x0e\x01\a\x06\x1e\x0167673\x16\x17\x1e\x01>\x01'.\x0256\x01V\xaczz\xacz\xfe\xc9Α\x91Α\xa8\xa0pp\xa0p\xcf\x1e\x15\x15\x1e\x15R\x06\a\x03\v\aHLH\a\v\x03\a\x065\x1d\t\x06\n\x02\x06\x0e\r\x03\x12\x04\n\x04\x12\x03\r\x0e\x06\x02\n\x06\t\x1d\x01\x90z\xaczz\xac\xa2\x91Α\x91\xceYp\xa0pp\xa0D\x15\x1e\x15\x15\x1eM\x01\f\r\a\x02\x11\x11\x02\a\r\v\x02\f\x04/A\x13\x18\a\x0e\x05\x06\x06.!!.\x06\x06\x05\x0e\a\x18\x13A/\x04\x00\x04\x00\x00\xff\xbd\x01\x80\x01\xc0\x00\v\x00\x13\x00\x1b\x00B\x00\x00\x05\x06#\"/\x0167\x17\x16\x15\x14'\x17\x16\x0e\x01&/\x01\x12\"&462\x16\x14\x17\x16\x06\a\x06&/\x01&#\"\x15\x14\x1f\x01\x15\a\x0e\x01.\x01?\x015\a\x15\x14\x06#\"&=\x0176;\x012\x17\x01|\x02\x02\x05\x02}\b\x05~\x01\xf1?\x05\v\x18\x19\x05$\x04$\x1a\x1a$\x1ao\x06\x02\b\a\x14\af\x01\x02\x04\x01\x1fB\x04\x18\x19\f\x056\x10\x0e\n\n\x0e=\a\f \f\a?\x01\x04\xce\x03\a\xd0\x02\x02\x05Ú\f\x19\n\v\fX\x01<\x1a$\x1a\x1a$\xc3\b\x14\x06\x06\x02\b\x81\x02\x04\x02\x01'l\xb5\f\f\t\x18\r\x95\x8c\x14P\n\x0e\x0e\v_O\t\t\x00\x05\x00\x00\x00\x00\x02\x00\x01\x80\x00\x06\x00\x0e\x00\x1e\x007\x00G\x00\x007\x17#767\x1672\x16\x15\x14+\x0157\x11\x14\x06#!\"&5\x11463!2\x16\x05'&+\x01\"\x0f\x01\x06\x1e\x02;\x012?\x013\x17\x16;\x012>\x0174.\x01+\x01\"\x06\x1d\x01\x14\x16;\x0126\xa3\t\x1a\t\x02\x02\x02\xa8\x16\x19/\x0e\xc5\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c\xfe\xf59\x02\t$\b\x039\x01\x01\x03\x05\x03\x1d\t\x03\b4\b\x03\t\x1d\x04\x06\x03\xb7\x18-\x1e9\x05\a\a\x059.5\xd1\x1e\x1e\x06\n\n\x1a\x19\x181b_\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c\x1c\xf4\xa8\b\b\xa8\x03\x06\x04\x03\t\x1e\x1e\t\x05\aT\x1e+\x17\a\x05\xa8\x05\a4\x00\x04\xff\xf4\xff\xc0\x01\x81\x01\xc6\x00!\x003\x00C\x00S\x00\x00\x17.\x01676\x1f\x01\x16\x15\x14\x0f\x01\x06#\"#'\x06\x177232\x1f\x01\x16\x15\x14\x0f\x01\x06#\"\x13\x16\x14\a\x0e\x01/\x01&764'&?\x016\x167\x16\x14\a\x06/\x01&764'&?\x016\a\x16\x14\a\x06/\x01&764'&?\x016a@-.?\n\f@\b\x01 \x04\f\x01\x018 8\x01\x01\f\x04 \x01\b@\x05\x05\a\x91\t\t\x03\v\x05\x06\x06\x04\x04\x04\x04\x06\x06\x05\v_--\b\n\x05\t\b%%\b\t\x05\n&\x1b\x1b\b\n\x06\b\a\x14\x14\a\b\x06\n;@\xab\xab@\n\b(\x05\n\x03\x03Q\v\x06ZZ\x06\vQ\x03\x03\n\x05(\x03\x01\xa1\x10\"\x10\x05\x01\x04\x06\x06\b\a\x10\a\b\x06\x06\x04\x01V6\x8c6\n\t\x06\b\b-t-\b\b\x06\t7#X#\n\t\x06\a\b\x1aB\x1a\b\a\x06\t\x00\x00\f\x00\x00\x00\x00\x02\x80\x01\xa0\x00\a\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x007\x00?\x00G\x00O\x00W\x00_\x00\x006\x14\x06\"&462\x062\x16\x14\x06\"&4\x122\x16\x14\x06\"&4\x162\x16\x14\x06\"&4\x162\x16\x14\x06\"&4\x122\x16\x14\x06\"&4\x042\x16\x14\x06\"&4\x162\x16\x14\x06\"&4\x122\x16\x14\x06\"&4\x162\x16\x14\x06\"&4\x162\x16\x14\x06\"&4\x122\x16\x14\x06\"&4\x80%6%%6(\x1a\x13\x13\x1a\x13\x056%%6%\xd3\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x056%%6%\x01\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x056%%6%\xd3\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\xdb6%%6%\xc0\x13\x1a\x13\x13\x1a\x01s%6%%6\x9b\x13\x1a\x13\x13\x1a\x8d\x13\x1a\x13\x13\x1a\x01s%6%%6\x9b\x13\x1a\x13\x13\x1a\x8d\x13\x1a\x13\x13\x1a\x01s%6%%6\x9b\x13\x1a\x13\x13\x1a\x8d\x13\x1a\x13\x13\x1a\x01S\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x06\x00\x00\xff\xc0\x02\x00\x01\xc1\x00\x13\x008\x00@\x00H\x00`\x00d\x00\x007\x14\x06\"&5462\x16\x15\x14\x06\"&54&\"\x06&2\x16\x15\x14\x0e\x03\x15\x14\x06#\"&4632654>\x0254&\"\x06\x15\x14\x06\"&54\x162\x16\x14\x06\"&4\x062\x16\x14\x06\"&4%\x14\x06\"&54=\x01.\x01'.\x017>\x03\x17\x1e\x01\x17\x14\x05\a'7\xd8\x10\x18\x10/B/\x10\x18\x10\x0e\x14\x0e1\x92g\x0f\x15\x15\x0f?-\f\x10\x10\f\x16\x1e\x17\x1b\x16FdF\x10\x18\x10S\x1a\x13\x13\x1a\x13m\x1a\x13\x13\x1a\x13\x02\x00\x10\x18\x10\x01Q@\v\n\x03\x02\b\t\f\x05Qf\x01\xfe\x99\"P\"\xbc\f\x10\x10\f!//!\f\x10\x10\f\n\x0e\x0e\xa6gI\x1b+\x1a\x14\x13\t-?\x10\x18\x10\x1e\x16\x19%\x13&\x192FF2\f\x10\x10\fI\x85\x13\x1a\x13\x13\x1am\x13\x1a\x13\x13\x1a\xcf\f\x10\x10\f\x02\x01\x01Do\x16\x04\x15\v\x05\t\x04\x01\x02\x1b\x8cV\x03\xb5\"P\"\x00\x00\x00\x04\xff\xfa\xff\xc6\x02\x86\x01\xba\x002\x00A\x00t\x00\x82\x00\x00\x01&\a2\x17\x16\x06#2\x16\a\x0e\x01#'\a\x06&/\x01&?\x02676\x1e\x01\x06\a\x06\a676\x16\x17\x16\x0e\x01\a\x06\a6\x17\x1e\x01\a\x0e\x01\a&#\"\x06\x15\x14\x1e\x0132763&%\x16\x0f\x02\x06\a\x06.\x016767\x06\a\x06&'&>\x01767\x06'.\x017>\x01\x17\x167\"'&63\"&7>\x013\x1776\x16\x17\a\"\a\x06#\x16\x17\x1632654&\x01# !=\x18\a\x10\x0e\x0e\x10\a\v+\x1a^C\a\x0e\x03,\b\x0f:)\nF\b\x16\x0e\x02\b\x14\r\"(\v\x12\x01\x01\x05\f\a\x17\x15-+\n\a\x05\x05\x15%\n\x16\x0f\x14\n\x10\t\x16\n\a\x11\x11\x01p\b\x0f:)\nF\b\x16\x0e\x02\b\x14\r\"(\t\x14\x01\x01\x05\f\a\x17\x15-+\n\a\x05\x05\x15\t !=\x18\a\x10\x0e\x0e\x10\a\v+\x1c\\C\a\x0e\x03\xb9\x16\n\a\x11\x11\a\n\x16\x0f\x14\x15\x01\x03\x10\f3\r\x19\x19\r\x17\x1c\t!\x04\x05\x06Y\x0f\t!JZ9\a\x02\x11\x16\a\x11\x13\x17\x05\x02\x0e\v\a\r\t\x01\x02\r\n\x15\x05\x15\n\n\aA\x15\x15\x0f\n\x11\b\x14\x0f\x014\x10\b!JZ9\a\x02\x11\x16\a\x11\x13\x17\x05\x02\r\f\a\r\t\x01\x02\r\n\x15\x05\x15\n\n\a\x05\x10\f3\r\x19\x19\r\x17\x1c\t!\x04\x05\x06G\x14\x0f\x01\x0f\x14\x15\x0f\x0f\x14\x00\x00\x00\x00\x04\xff\xfb\xff\xc0\x02\x05\x01\xc5\x00\x13\x008\x00D\x00Q\x00\x007\x14\x06\"&5462\x16\x15\x14\x06\"&54&\"\x06&2\x16\x15\x14\x0e\x03\x15\x14\x06#\"&4632654>\x0254&\"\x06\x15\x14\x06\"&54%\x16\x0f\x01\x06/\x01&?\x016\x17\x01\x17\x16\x0f\x01\x06\"/\x01&?\x016\xd8\x10\x18\x10/B/\x10\x18\x10\x0e\x14\x0e1\x92g\x0f\x15\x15\x0f?-\f\x10\x10\f\x16\x1e\x17\x1b\x16FdF\x10\x18\x10\x01\xbc\t\tW\b\t\x1c\b\bW\t\b\xfe\xc9\x1c\t\t\x94\x04\n\x03\x1c\t\t\x94\b\xbc\f\x10\x10\f!//!\f\x10\x10\f\n\x0e\x0e\xa6gI\x1b+\x1a\x14\x13\t-?\x10\x18\x10\x1e\x16\x19%\x13&\x192FF2\f\x10\x10\fI\x9b\b\tW\b\b\x1c\t\bW\t\t\xfe\xc9\x1c\t\b\x94\x04\x04\x1c\b\t\x94\t\x00\x00\x00\x03\xff\xff\xff\xbf\x01\xc0\x01\xc2\x002\x00?\x00k\x00\x00\x1746;\x015#\"&546;\x015#\"&546;\x015#\"&746;\x01'.\x01>\x01\x1f\x01\x16\x1d\x01\x14\x06\x0f\x01\x06+\x01\"&7'&676\x16\x1f\x01\x06\x16\x1f\x017\x141\x14\x0f\x0154/\x01&\a'&676\x16\x1f\x017'&676\x16\x1f\x017'&676\x16\x1f\x01'&>\x01\x16\x15[\x11\r>~\f\x11\x11\v\u007f\x9a\f\x11\x11\f\x9a}\f\x12\x01\x10\f\xa9\x1f\n\x04\x0e\x18\t|\x0e\x0f\fP\x10\x10k\f\x10I%\a\x03\t\t\x18\b\r\r\x02\x0e\v\xf7\r=\x12{\x15\x154\a\x03\t\n\x17\aN\x04^\b\x03\n\t\x17\a_\x05M\b\x03\n\t\x17\bg\x01\x01\x11\x17\x12$\f\x11\x06\x11\f\f\x10\x06\x11\f\v\x11\x06\x11\f\v\x11\x16\a\x18\x13\x03\x06Z\n\x12\x8d\f\x13\x02\x13\x04\x10\xee.\n\x17\a\b\x03\n\x11\v#\n\b\x02\x01\x11\n0\x11\x16\fZ\x0f\x0eC\t\x18\b\a\x03\nc\x03y\n\x18\a\a\x03\tz\x04b\n\x18\a\a\x03\t\x85&\f\x11\x01\x10\f\x00\x00\x00\x02\xff\xf8\xff\xbe\x02@\x01\xc2\x00-\x00E\x00\x00%\x16\x14\a\x06\a\x17\x16\x06\x0f\x01\x06&'\x03\x06\a\x13\x06#\"/\x02\x06\a\x17&'&767'&6?\x016\x16\x1f\x01632\x16\a654&#\"\a\x176\x17\"\x06\x15\x14\x1e\x013265\x16\x06\a\x029\a\a1W+\x05\x03\b\r\b\x14\x06\xfc\x14\x12\xbe\x12\x11\x16\x16)w\x10\r}q<\x0f\x0f1W+\x05\x03\b\r\b\x14\x065(*Y\x95\x88\"P8\x1a\x18\x13*&\x12\x19\v\x14\f\x12\x19\x0e\x05\x12\xd8\v\x1a\vT+:\b\x14\x05\n\x05\x03\b\x01e\t\r\xfe\xf1\x02\x03:\xab\x11\x13\xb2(f\x18\x18T+:\b\x14\x05\n\x05\x03\bH\nW\xbb'38P\t\x1c\r\x14\x19\x12\f\x13\f\x19\x12\x1a=\x19\x00\x00\x00\x00\x06\x00\x00\xff\xfd\x02\x80\x01\x80\x00\x19\x00 \x00(\x00/\x007\x00W\x00\x00\x012\x1f\x01\x15&/\x0176'&\"\x0f\x01\x15\x06&'&475763\x173\x11#\"&5:\x0164&\"\x06\x14\x05\x113\x15\x14\x06#&\"\x06\x14\x16264\x05\x1e\x01\x0f\x01\x0e\x01/\x01\a\x0e\x01/\x01\x0e\x01/\x01#576;\x01\a\x0e\x01\x17\x1e\x01?\x01\x01\xb3\r\t7\x04\x04\x92\x1a\f\n\x05\r\x05P\r\"\n\n\rb\t\r\xc3`@\r\x13)\x0e\t\t\x0e\t\xfd\xc0`\x13\r\t\x0e\t\t\x0e\t\x01\xa4\n\x03\t\t\b\x1b\n\x05 \t\x1f\f\x12\x115\x14[\x127\t\rTR\x16\x02\x14\x14;\x17\x1e\x01\x80\t7\xc2\x05\x03v\x18\v\f\x05\x04I\x01\n\x02\v\f!\v\x01Z\b@\xff\x00\x13\r\t\x0e\t\t\x0e)\x01\x00\xe0\r\x13@\t\x0e\t\t\x0e\n\b\x1a\v\f\n\x03\t\x04&\f\x04\n\x10\x15\x06\x11R\xe07\tK\x14<\x16\x15\x03\x14\x1b\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc1\x00\x1a\x00F\x00\x00\x05\x14\x06#!\"&5\x1147670>\x0232\x1e\x021\x16\x17\x16\x15\a&\a\x06\a0\x0e\x02#\".\x03'&'&\x0f\x01\x06\x15\x14\x17\x16\x17\x1e\x042>\x03767654'\x02\x00\x1c\x14\xfe`\x14\x1c\x12)|\x1c\x0e\x17\b\b\x17\x0e\x1c|)\x12B\x04\a#G\x1c\x0e\x17\b\a\x10\x11\r\x12\x02G#\a\x04\t\x02\x03$F\x02\x16\x0e\x17\x15\x14\x15\x17\x0e\x16\x02F$\x03\x02\x10\x14\x1c\x1c\x14\x01\a\x18\x0e Z\x15\t\v\v\t\x15Z \x0e\x18B\x06\x04\x1b3\x15\t\v\x06\v\t\x0e\x013\x1b\x04\x06\x0e\x02\x02\x04\x03\x1a2\x02\x11\n\r\x06\x06\r\n\x11\x022\x1a\x03\x04\x02\x02\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00'\x00/\x00D\x00\x00\x01#\x1532\x1d\x01\x14+\x01\x1532\x1d\x01\x14+\x01\x15\x14\x06#!\"&5\x11463!2\x16\x1d\x0132\x1d\x01\x14&\"\x06\x14\x16264\x1754&+\x01\x06\"'#\"\x0e\x01\x1d\x01\x14\x16;\x0126\x01\xb4\x14\x14\f\f\x14\x14\f\f\x14\x1c\x14\xfe\xc0\x14\x1c\x1c\x14\x01@\x14\x1c\x14\f\xd64&&4&0'\x1c\x05\x13*\x13\x05\x12\x1f\x12\r\t\xb4\t\r\x01 @\f(\f@\f(\f0\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x1c\x140\f(\f &4&&4\xc7\x13\x18\"\b\b\x0f\x1b\x10\x13\b\v\v\x00\x00\x00\x06\x00\x00\xff\xe0\x02@\x01\xa0\x00\x0f\x00\x17\x00+\x007\x00C\x00O\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x16\"\x06\x14\x16264\x1754&+\x01\x06\"'#\"\x06\x1d\x01\x14\x16;\x0126754+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x02\x10\x14\x1c\x1c\x14\xfe \x14\x1c\x1c\x14\x9a4&&4&0'\x1c\x05\x13*\x13\x05\x1c'\r\t\xb4\t\r\xe0\b\x90\b\b\x90\b\b\x90\b\b\x90\b\b\x90\b\b\x90\b\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c`&4&&4\xc7\x13\x18\"\b\b\"\x18\x13\b\v\v=\x10\b\b\x10\bH\x10\b\b\x10\bH\x10\b\b\x10\b\x00\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1f\x00\x00\x122\x16\x14\x06\"&4$\"\x06\x14\x16264\x0227.\x01#\"\a\x06\"'&#\"\x06\a\x91Α\x91Α\x01\x1cH44H4\xb1\xb29\x0e4 \x03\x04\x15(\x15\x04\x03 4\x0e\x01\xb8\x91Α\x91\xce14H44H\xfe\xdcD\x1b!\x01\a\a\x01!\x1b\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x0f\x00\x1b\x00#\x007\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x17\"\x06\x14\x16;\x01264&#\x06\"\x06\x14\x16264\x1754&+\x01\x06\"'#\"\x06\x1d\x01\x14\x16;\x0126\x01P\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14`\a\t\t\a`\a\t\t\a\x164&&4&0'\x1c\x05\x13*\x13\x05\x1c'\r\t\xb4\t\r\x01\xc0\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c \t\x0e\t\t\x0e\t\x80&4&&4\xc7\x13\x18\"\b\b\"\x18\x13\b\v\v\x00\x00\x00\a\x00\x00\xff\xe0\x02@\x01\xa0\x00\t\x00\x13\x00\x1f\x00+\x007\x00?\x00R\x00\x00\x012\x16\x1d\x01!5463\x03\x11!\x11\x14\x06#!\"&%\x15\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"&\"\x06\x14\x16264\a\x06\x16;\x0126'.\x01+\x01\x06\"'#\"\x0e\x01\x02\x10\x14\x1c\xfd\xc0\x1c\x140\x02@\x1c\x14\xfe \x14\x1c\x01`\b\x90\b\b\x90\b\b\x90\b\b\x90\b\b\x90\b\b\x90\b\x964&&4&\xad\x02\n\b\xba\b\n\x02\x06\"\x15\b\x13*\x13\b\x0e\x19\x12\x01\xa0\x1c\x14\x10\x10\x14\x1c\xfep\x010\xfe\xd0\x14\x1c\x1c\xfc\x10\b\b\x10\bH\x10\b\b\x10\bH\x10\b\b\x10\b\x80&4&&4\xa6\a\r\f\b\x13\x19\b\b\v\x14\x00\x00\x03\xff\xff\xff\xc0\x01\x00\x01\xc0\x00\x12\x003\x00C\x00\x00\x13\x15\x16\x15\x14\x06#0#\"&5475462\x16\x032654.\x06'54&\"\x06\x1d\x01\x0e\a\x15\x14\x1e\x0137\x14\x06\"&5475462\x16\x1d\x01\x16\xe0 K5\x015J 8P8`!/\x02\x02\x06\x03\a\x03\b\x01\x1c(\x1c\x01\b\x03\a\x03\x06\x02\x02\x15%\x15A%6% \x13\x1a\x13 \x01`\xcb%05KL50$\xcb(88\xfeh/!\x06\f\t\v\x06\t\x04\t\x01\xdd\x14\x1c\x1c\x14\xdd\x01\n\x03\t\x06\v\t\v\a\x15%\x16P\x1b%%\x1b%\x12\xe9\r\x13\x13\r\xe9\x12\x00\x03\xff\xff\xff\xc0\x01\x00\x01\xc0\x00\x0f\x00\"\x00C\x00\x007\x14\x06\"&5475462\x16\x1d\x01\x167\x16\x15\x14\x06#0#\"&5475462\x16\x15\x034.\x06'54&\"\x06\x1d\x01\x0e\a\x15\x14\x1e\x01;\x0126\xc0%6% \x13\x1a\x13 K5\x015J 8P8\x10\x02\x02\x06\x03\a\x03\b\x01\x1c(\x1c\x01\b\x03\a\x03\x06\x02\x02\x15%\x15\x01!/@\x1b%%\x1b%\x12\xa9\r\x13\x13\r\xa9\x120%05KL50$\xcb(88(\xfe\xe0\x06\f\t\v\x06\t\x04\t\x01\xdd\x14\x1c\x1c\x14\xdd\x01\n\x03\t\x06\v\t\v\a\x15%\x16/\x00\x00\x03\xff\xff\xff\xc0\x01\x00\x01\xc0\x00\x0f\x00\"\x00C\x00\x007\x14\x06\"&5475462\x16\x1d\x01\x167\x16\x15\x14\x06#0#\"&5475462\x16\x15\x034.\x06'54&\"\x06\x1d\x01\x0e\a\x15\x14\x1e\x01;\x0126\xc0%6% \x13\x1a\x13 K5\x015J 8P8\x10\x02\x02\x06\x03\a\x03\b\x01\x1c(\x1c\x01\b\x03\a\x03\x06\x02\x02\x15%\x15\x01!/@\x1b%%\x1b%\x12i\r\x13\x13\ri\x120%05KL50$\xcb(88(\xfe\xe0\x06\f\t\v\x06\t\x04\t\x01\xdd\x14\x1c\x1c\x14\xdd\x01\n\x03\t\x06\v\t\v\a\x15%\x16/\x00\x00\x03\xff\xff\xff\xc0\x01\x00\x01\xc0\x00\x0f\x00\"\x00C\x00\x007\x14\x06\"&5475462\x16\x1d\x01\x167\x16\x15\x14\x06#0#\"&5475462\x16\x15\x034.\x06'54&\"\x06\x1d\x01\x0e\a\x15\x14\x1e\x01;\x0126\xc0%6% \x13\x1a\x13 K5\x015J 8P8\x10\x02\x02\x06\x03\a\x03\b\x01\x1c(\x1c\x01\b\x03\a\x03\x06\x02\x02\x15%\x15\x01!/@\x1b%%\x1b%\x12)\r\x13\x13\r)\x120%05KL50$\xcb(88(\xfe\xe0\x06\f\t\v\x06\t\x04\t\x01\xdd\x14\x1c\x1c\x14\xdd\x01\n\x03\t\x06\v\t\v\a\x15%\x16/\x00\x00\x03\xff\xff\xff\xc0\x01\x00\x01\xc0\x00\a\x00\x1a\x00;\x00\x006\x14\x06\"&4627\x16\x15\x14\x06#0#\"&5475462\x16\x15\x034.\x06'54&\"\x06\x1d\x01\x0e\a\x15\x14\x1e\x01;\x0126\xc0%6%%6E K5\x015J 8P8\x10\x02\x02\x06\x03\a\x03\b\x01\x1c(\x1c\x01\b\x03\a\x03\x06\x02\x02\x15%\x15\x01!/[6%%6%\x15%05KL50$\xcb(88(\xfe\xe0\x06\f\t\v\x06\t\x04\t\x01\xdd\x14\x1c\x1c\x14\xdd\x01\n\x03\t\x06\v\t\v\a\x15%\x16/\x00\x10\x00\x00\xff\xe0\x02\x00\x01\xa1\x00\a\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x007\x00?\x00G\x00O\x00W\x00_\x00g\x00o\x00w\x00\xab\x00\x00$2\x16\x14\x06\"&462\x16\x14\x06\"&4\x16\"&462\x16\x14\x06\"&462\x16\x14&2\x16\x14\x06\"&46\"&462\x16\x14\x06462\x16\x14\x06\"&2\x16\x14\x06\"&4\x162\x16\x14\x06\"&462\x16\x14\x06\"&4\x062\x16\x14\x06\"&4\x062\x16\x14\x06\"&4\x062\x16\x14\x06\"&4\x062\x16\x14\x06\"&462\x16\x14\x06\"&47\x16\x14\x0f\x01\x06\"/\x01&4?\x01.\x01547'&#\"#\x0e\x01\x15\x11\x14\x06+\x01\"&5\x114632\x16\x1f\x01632\x1e\x01\x17762\x17\x01)\x0e\t\t\x0e\t)\x0e\t\t\x0e\t7\x0e\t\t\x0e\t)\x0e\t\t\x0e\t7\x0e\t\t\x0e\t\x97\x0e\t\t\x0e\t@\t\x0e\t\t\x0e \x0e\t\t\x0e\ti\x0e\t\t\x0e\t)\x0e\t\t\x0e\t7\x0e\t\t\x0e\t\x17\x0e\t\t\x0e\t7\x0e\t\t\x0e\t\x17\x0e\t\t\x0e\tI\x0e\t\t\x0e\t&\x04\x04\xaa\x04\x0e\x04\f\x04\x04\x06\r\x13\x0e\n\x11\x18\x04\x04\x16\x1d\t\a \a\tI2\x152\x0f\n\x1a\x1b\f\x1e\x1b\t\x06\x04\x0e\x04\x80\t\x0e\t\t\x0ei\t\x0e\t\t\x0e7\t\x0e\t\t\x0e)\t\x0e\t\t\x0e7\t\x0e\t\t\x0e)\t\x0e\t\t\x0e \x0e\t\t\x0e\t@\t\x0e\t\t\x0e\x17\t\x0e\t\t\x0e)\t\x0e\t\t\x0e7\t\x0e\t\t\x0e\x17\t\x0e\t\t\x0e7\t\x0e\t\t\x0e\x17\t\x0e\t\t\x0eI\t\x0e\t\t\x0e\xe3\x04\x0e\x04\xaa\x04\x04\f\x04\x0e\x04\x06\r.\x13\x1b\x1a\n\x11\x03$\x17\xfe\xce\a\t\t\a\x01/4M\x15\x0f\n\x0e\t\x0e\t\x06\x04\x04\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc1\x00\x1b\x00M\x00\x0075!\x15\x14\x06\a\x15\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&=\x01.\x01%2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x0154632\x16\x1f\x016\x1762\x1f\x01\x16\x14\x0f\x01\x06\"/\x01&47&7'&\"\x06\x1d\x01 \x01\xc0\x13\r\t\a \a\t\xff\x00\t\a \a\t\r\x13\x01\xd0\a\t\t\a\xfe \a\t\t\a\x10)\x1c\f\x1d\b\x13-#\x05\r\x05\v\x05\x05i\x05\r\x05\v\x05\x05\x1c\x14\x14\x06\x12\f@00\x12)\f)\a\t\t\a\x10\x10\a\t\t\a)\f)\x92\t\a\x10\a\t\t\a\x10\a\t\xbb\x1c)\f\b\x14\x14\x1c\x05\x05\v\x05\r\x05i\x05\x05\v\x05\r\x05#,\x14\x06\f\t\xbb\x00\x04\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\v\x00+\x00Q\x00Y\x00\x00\x05\x06\"'.\x01542\x15\x14\x06'\x16\a\x06\a\x06'&546\x17\x1e\x01\x17\x16\a\x06'&'&7654&\a\x0e\x01\a\x06\x122\x16\x15\x14\x06\a\x06&767>\x0154.\x03#\"\x06\x15\x14\x16\x17\x16\x15\x16\x17\x16\x06'.\x0154\x162\x16\x14\x06\"&4\x01\v\x06J\x06\a\x0e\x80\x0eu\x05\x06\x0e\a\x04\x05.W=9R\x01\x020\x05\x04\a\x0e\x06\x05\x1d;)%5\x02\x02\x05\xba\x83F8\x03\x06\x01\x04\x01%,\x12!+6\x1cIg*$\x03\x01\x04\x01\x06\x039E\xc56%%6%)\x17\x17\x19U\x17,,\x17U\xaf\x05\x04\n\x0f\b\x06+>=U\x02\x02Q9A,\x06\b\x0f\n\x04\x05\x1d()9\x02\x025%+\x01\x03\x83]Bl\x1b\x02\x04\x04\x1b\x14\x18N.\x1d5, \x12gH-N\x18\x02\x03\x13\x19\x04\x04\x02\x1blB]\x1d%6%%6\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x17\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0554#!\"\x1d\x01\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\x90\f\xfe\x98\f\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xa0T\f\fT\x00\x00\x00\x00\x01\x00\x00\xff\xe0\x02\x00\x00`\x00\x0f\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14`\x1c\x14 \x14\x1c\x1c\x14 \x14\x1c\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x11\x00!\x00)\x00\x00\x01\x11\x14\x06+\x0154&+\x015463!2\x16\a\x11\x14\x06#!\"&5\x11463!2\x16\a4+\x01\"\x1d\x013\x02\x00\x1c\x140/!\xd0\x1c\x14\x01 \x14\x1c\x80\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1cD\f\xe4\f\xfc\x01\x90\xfe\xe0\x14\x1c\xd0!/0\x14\x1c\x1c\x94\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c\x1c0\f\f4\x00\x00\x00\x00\t\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x0f\x00\x1f\x00/\x00?\x00O\x00_\x00o\x00\u007f\x00\x8f\x00\x00\x01\x11\x14\x06+\x01\"&5\x1146;\x012\x16\x17\x15\x14+\x01\x15\x14+\x01532\x1d\x0132\x1d\x01\x14+\x01\x15\x14+\x01532\x1d\x0132\x1d\x01\x14+\x01\x15\x14+\x01532\x1d\x0132\x1d\x01\x14+\x01\x15\x14+\x01532\x1d\x0132%3\x15#\"=\x01#\"=\x014;\x015473\x15#\"=\x01#\"=\x014;\x015473\x15#\"=\x01#\"=\x014;\x015473\x15#\"=\x01#\"=\x014;\x0154\x01\xa0\x1c\x14\xe0\x14\x1c\x1c\x14\xe0\x14\x1c`\x06\x12\x06**\x06\x12\x06\x06\x12\x06**\x06\x12\x06\x06\x12\x06**\x06\x12\x06\x06\x12\x06**\x06\x12\x06\xfe\x1e**\x06\x12\x06\x06\x12\x06**\x06\x12\x06\x06\x12\x06**\x06\x12\x06\x06\x12\x06**\x06\x12\x06\x06\x12\x01\x90\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x1cN\f\x06\x06\x060\x06\x06f\f\x06\x06\x060\x06\x06f\f\x06\x06\x060\x06\x06f\f\x06\x06\x060\x06\x06\f0\x06\x06\x06\f\x06\x06\x06`0\x06\x06\x06\f\x06\x06\x06`0\x06\x06\x06\f\x06\x06\x06`0\x06\x06\x06\f\x06\x06\x06\x00\x00\x00\x00\x01\xff\xfa\xff\xc0\x01\xc6\x01\xc0\x00\xa7\x00\x00%\x1e\x01\x0f\x01\x06/\x01\x17\x16\x06\x0f\x01\x06&/\x02\x15\x17\x16\x14\x0f\x01\x06\"/\x01\x15\x14\x06+\x01\"&=\x01\a\x06\"/\x01&4?\x015\x0f\x01\x0e\x01/\x01.\x01?\x01\a\x06/\x01&?\x01'.\x01?\x01>\x01\x1f\x017'\a\x06&/\x01&6?\x01'&?\x016\x1f\x01'&>\x01?\x016\x1e\x01\x1f\x025'&4?\x016\x1f\x01546;\x012\x16\x1d\x01762\x1f\x01\x16\x14\x0f\x01\x15?\x01>\x01\x1f\x01\x1e\x01\x0f\x0176\x1f\x01\x16\x0f\x01\x17\x1e\x01\x0f\x01\x0e\x01/\x01\a\x1776\x16\x1f\x01\x16\x06\x0f\x01\x01\xb8\x06\x03\x03\x10\a\x0e!\x06\x02\x06\x06\x0f\x06\f\x01\x13?5\x05\x05\v\x05\r\x04\x14\n\x06 \a\t\x14\x05\r\x04\f\x05\x056?\x13\x02\v\x06\x0f\x06\x06\x01\a!\x0e\a\x10\b\x0e\"\x1a\a\x06\x02\x04\x01\v\aF@@F\a\v\x01\x04\x02\x06\a\x1a\"\x0e\b\x10\a\x0e!\x06\x02\x03\x05\x04\x0f\x04\b\x06\x01\x13?6\x04\x04\f\v\v\x14\t\a \a\t\x14\x04\x0e\x04\f\x04\x046?\x13\x01\f\x06\x0f\x06\x06\x02\x06!\x0e\a\x10\a\r\"\x1a\a\x06\x02\x04\x01\v\aF@@F\a\v\x01\x04\x02\x06\a\x1ag\x03\r\x05\x1b\r\a\x14\x1a\x06\v\x02\x04\x02\a\x06G$N5\x05\r\x05\v\x05\x05\x13(\a\t\t\a(\x13\x05\x05\v\x05\r\x046N$G\x06\a\x02\x04\x01\f\x06\x1a\x14\a\r\x1b\r\b\x13\a\x02\v\x06\x0f\x06\a\x02\x13%%\x13\x02\a\x06\x0f\x06\v\x02\a\x13\b\r\x1b\r\a\x14\x1a\x04\b\x06\x01\x04\x01\x02\x06\x04G$N5\x05\r\x05\v\f\f\x13(\a\t\t\a(\x13\x05\x05\v\x05\r\x055N$G\x06\a\x02\x04\x02\v\x06\x1a\x14\a\r\x1b\r\b\x13\a\x02\v\x06\x0f\x06\a\x02\x13%%\x13\x02\a\x06\x0f\x06\v\x02\a\x00\x01\xff\xff\xff\xbf\x02\t\x01\xc9\x00\x14\x00\x00\x01\x16\x06\a\x0e\x01'\a\x06\"/\x01&4?\x01&67>\x01\x01\xe0(\x140$X%\xc0\b\x17\t3\b\t\xd7\x15\r$1\x89\x01\xa0*\x891$\r\x15\xd7\t\b3\t\x17\b\xc0%X$0\x14\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xa0\x01\xc1\x00*\x00<\x00\x00\x13\x16\x15\x14\x06\a\x17\x16\x06+\x01\"&?\x01.\x0254762\x17\x15\x1627>\x02562\x17\x16\x17\x1627562\x13.\x01>\x0232\x16\x15\x11\x14\x06+\x01\"&7\xd0\x10% \r\x01\x0f\n@\n\x0f\x01\r\x15\x1f\x11\x10\x02,\x02\x01\x0e\x01\x01\x04\x03\x02,\x02\x01\a\x01\x0e\x01\x02,y,\"\x13*9\x19\n\x0e\x0e\n8\v\x0e\x01\x01\xb1_\"&7\f\xee\n\x0f\x0f\n\xee\b\x1d*\x1a\"_\x0f\x10\x8e\x02\x02\vG;\x01\x10\x10\b\x86\x02\x02\x8e\x10\xfe\xd3#VLB&\x0e\n\xfe0\n\x0e\x10\n\x00\x01\x00\b\xff\xc8\x01\xf9\x01\xb9\x00&\x00\x00\x012\x1e\x01\x15\x14\x06#\"'&?\x016\x17\x1632676&\a\x06\a\x17\x16\x06+\x01\"&=\x0146\x1f\x016\x01\x00CrC\x91g_G\n\t(\b\b0?Fa\x01\x01eEB0*\v\f\x10\x86\n\x0e\x1e\v$G\x01\xb8BsCg\x91@\b\t(\b\a*bEGc\x01\x01,*\v\x1e\x0e\n\x86\x10\f\v$E\x00\x05\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\t\x00\x15\x00!\x00-\x00E\x00\x00\x17\x11!\x11\x14\x06#!\"&\x01\x15\x14\x1626=\x014&\"\x06\a\x15\x14\x1626=\x014&\"\x06\a\x15\x14\x1626=\x014&\"\x06%2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x0176;\x012\x1f\x01 \x01\x80\x1c\x14\xfe\xe0\x14\x1c\x01\x10\t\x0e\t\t\x0e\t`\t\x0e\t\t\x0e\t`\t\x0e\t\t\x0e\t\x01@\a\t\t\a\xfe`\a\t\t\ax\t\a\x0fr\x0f\a\t\x10\x01P\xfe\xb0\x14\x1c\x1c\x01\x14\xe0\a\t\t\a\xe0\a\t\t\a\xe0\a\t\t\a\xe0\a\t\t\a\xe0\a\t\t\a\xe0\a\t\t\xa9\t\a \a\t\t\a \a\t\x13\r\r\x13\x00\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\x1c\x00:\x00\x00\x01&#\"\x06\a\x06+\x01\"&7>\x0132\x1776\x16\x1d\x01\x14\x06+\x01\"&7\x0532\x16\x0f\x01\x1632>\x0176;\x012\x16\a\x0e\x01#\"'\a\x06&=\x0146\x01s1B:[\x0e\x02\n9\x06\a\x01\x11\x89ZcH$\v\x1e\x0e\n\x86\x10\f\v\xfe׆\x10\f\v*1B&D0\t\x02\n9\x06\a\x01\x11\x89ZcH$\v\x1e\x0e\x01;-G8\t\t\x05WsE$\v\f\x10\x86\n\x0e\x1e\vy\x1e\v*-!9%\t\t\x05WsE$\v\f\x10\x86\n\x0e\x00\x00\x02\x00\x10\xff\xc0\x01\xb6\x01\xc0\x00\"\x000\x00\x00%\x14\x06\"&54675#\"=\x014;\x012\x1d\x01\x14+\x01\x15\x16\x1776\x1f\x01\x16\x0f\x02\x16\a54&+\x01\"\x06\x1d\x01\x14;\x012\x01\xb0z\xaczeK\x1c\f\fx\f\f\x1c8,\x1b\t\b\x1c\t\t\x1d\x01\"\xb0\a\x05(\x05\a\f(\f\x90VzzVMu\f\"\f(\f\f(\f\"\t$\x1b\t\t\x1c\b\t\x1d\x013b\x98\x04\b\b\x04\x98\f\x00\x00\x00\x00\x02\x00\x00\xff\xfc\x01\xf8\x01\x84\x00\x15\x001\x00\x00%\a\x06&=\x01#\"&=\x0146;\x01546\x1f\x01\x16\x14\x05\x14+\x01\"&=\x0146;\x012\x1d\x01\x14+\x01\"\x06\x1d\x01\x14\x16;\x012\x15\x01\xf1\xa8\v\x1e\x88\n\x0e\x0e\n\x88\x1e\v\xa8\a\xfe\xc8\fT(88(T\f\fT\r\x13\x13\rT\f\xaf\xa8\v\f\x10`\x0e\n`\n\x0e`\x10\f\v\xa8\a\x14\xaa\f8(\xc0(8\f(\f\x13\r\xc0\r\x13\f\x00\x00\x00\x00\x02\x00\x00\xff\xf4\x02\x00\x01\x80\x00\x1b\x001\x00\x00!#\"=\x014;\x0126=\x014&+\x01\"=\x014;\x012\x16\x1d\x01\x14\x06'\x16\x14\x0f\x01\x06&=\x01#\"&=\x0146;\x01546\x17\x01\xa0T\f\fT\r\x13\x13\rT\f\fT(88W\a\a\xa8\v\x1e\x88\n\x0e\x0e\n\x88\x1e\v\f(\f\x13\r\xc0\r\x13\f(\f8(\xc0(8\xc9\a\x14\a\xa8\v\f\x10`\x0e\n`\n\x0e`\x10\f\v\x00\x00\x01\x00\a\xff\xc8\x01\xf8\x01\xb9\x00$\x00\x00\x012\x1776\x16\x1d\x01\x14\x06+\x01\"&?\x01&'&\x06\x17\x1e\x013276\x1f\x01\x16\a\x06#\"&46\x01\x00dG$\v\x1e\x0e\n\x86\x10\f\v*0BEe\x01\x01aF?0\b\b(\t\nG_g\x91\x92\x01\xb8E$\v\f\x10\x86\n\x0e\x1e\v*,\x01\x01cGEb*\a\b(\t\b@\x91Α\x00\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x000\x008\x00D\x00L\x00\x00%\x1e\x01\x15\x14\x06#!\"&5467&546;\x01&546;\x012654'632\x16\x15\x14\a32\x16\x15\x14\a32\x16\x15\x14$\"\x06\x14\x16264\x176&+\x01\"\x06\x17\x1e\x0126&264&\"\x06\x14\x01\xc3\x1a#*\x1e\xfe\x90\x1e*#\x1a\x1d*\x1e\x0e\x16&\x1a\x10!/\x0f\t\x06(8\x06\x06\x1a&\x16\x0e\x1e*\xfe\xed\x1a\x13\x13\x1a\x13\x80\x01\x05\x04\xb0\x04\x05\x01\b<8<%\x1a\x13\x13\x1a\x13O\x04(\x1b\x1e**\x1e\x1b(\x04\x16#\x1e*\x13\x1d\x1a&/!\x19\x15\x028(\x0f\x11&\x1a\x1d\x13*\x1e#[\x13\x1a\x13\x13\x1ax\x04\a\a\x04\x15 `\x13\x1a\x13\x13\x1a\x00\x04\x00\x00\xff\xe0\x02@\x01\xa0\x00\x11\x00!\x00)\x004\x00\x00%\x15\x14\x06#!\"&5\x1146;\x01\x15\x14\x163%\x14\x06#!\"&5\x11463!2\x16\x15\x044&\"\x06\x14\x162\a\x15!5'&\x0f\x01'&\a\x01\xe0\x1c\x14\xfe\x80\x14\x1c\x1c\x14\x10/!\x01\xb0\x1c\x14\xfe\x80\x14\x1c\x1c\x14\x01\x80\x14\x1c\xfe\xc0\x1c(\x1c\x1c(D\x01`X\b\b\x88(\b\b \x10\x14\x1c\x1c\x14\x01\x00\x14\x1c\xd0!/P\x14\x1c\x1c\x14\x01\x00\x14\x1c\x1c\x14D(\x1c\x1c(\x1c`0pX\b\b\x88(\b\b\x00\x00\x00\x00\x04\xff\xfe\xff\xbe\x02\x01\x01\xc0\x00\r\x00\x19\x00!\x00(\x00\x00\x01\a\x06/\x01&?\x0162\x1f\x01\x16\x14'6\x1f\x01\x16\a\x01\a\x06&?\x016\x16?\x016&\x0f\x025#\a\x1775\x01\xf2.\t\bo\t\t.\x0e(\x0e<\x0e\xe4\t\bo\t\t\xfe\xfaz\f\x12\x02\x16\\\x14\n\x9a\n\x14\n\x9a$$\f @\x012.\t\to\b\t.\x0e\x0e<\x0e(\x1c\t\to\b\t\xfe\xfa\x16\x02\x12\fz \x14\n\x9a\n\x14\n\x9ah0@ \f$\x00\x00\x00\x00\x02\xff\xfe\xff\xbe\x02\x01\x01\xc0\x00\a\x00\x11\x00\x00\x01\x17\x01\a\x06&?\x01\x01\x16\x14\x0f\x01'762\x17\x01#\x80\xfe\xear\f\x10\x01\r\x01\xe5\x0e\x0e9\x809\x0e(\x0e\x01c\x80\xfe\xea\r\x01\x10\fr\x01)\x0e(\x0e9\x809\x0e\x0e\x00\x00\x00\x02\xff\xfe\xff\xbe\x02\x01\x01\xc1\x00\t\x00!\x00\x00\x01\x16\x14\x0f\x01'762\x17\a\x1f\x01\a\x0e\x01\a\x06&7>\x01?\x01'\a\x06/\x01&?\x0162\x01\xf2\x0e\x0e9\x809\x0e(\x0e\xbbUS\xc5\"r/\f\x10\x01\x057\"\x98\x17f\v\f\x16\f\fw\v!\x01v\x0e(\x0e9\x809\x0e\x0e(TS\xc5\"7\x05\x01\x10\f/r\"\x98\x16f\v\v\x17\v\fv\f\x00\x00\x00\x00\x01\x00\r\xff\xdf\x00\xf3\x01\xa0\x00\x13\x00\x00732\x16\x0f\x01\x06\"/\x01&6;\x01\x114;\x012\x15\xa8.\x10\f\vV\a\x14\aV\v\f\x10.\f8\ff\x1e\vV\a\aV\v\x1e\x01.\f\f\x00\x01\xff\xff\x00M\x01\xc0\x013\x00\x13\x00\x007\x15\x14\x06/\x01&4?\x016\x16\x1d\x01!2\x1d\x01\x14#\x86\x1e\vV\a\aV\v\x1e\x01.\f\f\x98.\x10\f\vV\a\x14\aV\v\f\x10.\f8\f\x00\x01\x00\x00\x00M\x01\xc1\x013\x00\x14\x00\x00%546\x1f\x01\x1e\x01\x06\x0f\x01\x06&=\x01!\"=\x0143\x01:\x1e\vV\x05\x03\x03\x05V\v\x1e\xfe\xd2\f\f\xe8.\x10\f\vV\x05\f\f\x05V\v\f\x10.\f8\f\x00\x00\x00\x00\x01\x00\r\xff\xe0\x00\xf3\x01\xa1\x00\x13\x00\x00\x13#\"&?\x0162\x1f\x01\x16\x06+\x01\x11\x14+\x01\"5X.\x10\f\vV\a\x14\aV\v\f\x10.\f8\f\x01\x1a\x1e\vV\a\aV\v\x1e\xfe\xd2\f\f\x00\x00\x00\x00\x01\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00;\x00\x00%\x15\x14\x06+\x01\"&?\x01'\a\x17\x16\x06+\x01\"&=\x0146\x1f\x017'\a\x06&=\x0146;\x012\x16\x0f\x01\x177'&6;\x012\x16\x1d\x01\x14\x06/\x01\a\x1776\x16\x01\xc0\x0e\np\x10\f\v$kk$\v\f\x10p\n\x0e\x1e\v$kk$\v\x1e\x0e\np\x10\f\v$kk$\v\f\x10p\n\x0e\x1e\v$kk$\v\x1ehp\n\x0e\x1e\v$kk$\v\x1e\x0e\np\x10\f\v$kk$\v\f\x10p\n\x0e\x1e\v$kk$\v\x1e\x0e\np\x10\f\v$kk$\v\f\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x15\x00\x1d\x00)\x00\x00\x01\x11\x14\x06#!\"&5\x1146;\x01462\x16\x1532\x16&\"\x06\x14\x16264\x1754+\x01\"\x1d\x01\x14;\x012\x01\x80\x1c\x14\xfe\xe0\x14\x1c\x1c\x14P&4&P\x14\x1c\xb6\x14\x0e\x0e\x14\x0eH\x06\xb4\x06\x06\xb4\x06\x01P\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1a&&\x1a\x1c4\x0e\x14\x0e\x0e\x14d\x14\x06\x06\x14\x06\x00\x00\x01\xff\xff\x00M\x02\x01\x013\x00\x1b\x00\x00\x0146\x1f\x01\x16\x14\x0f\x01\x06&=\x01#\x15\x14\x06/\x01&4?\x016\x16\x1d\x013\x01z\x1e\vV\a\aV\v\x1e\xf4\x1e\vV\a\aV\v\x1e\xf4\x01\x16\x10\f\vV\a\x14\aV\v\f\x10..\x10\f\vV\a\x14\aV\v\f\x10.\x00\x00\x00\x00\x01\x00\r\xff\xbf\x00\xf3\x01\xc1\x00\x1b\x00\x0072\x16\x0f\x01\x06\"/\x01&6;\x015#\"&?\x0162\x1f\x01\x16\x06+\x01\x15\xd6\x10\f\vV\a\x14\aV\v\f\x10..\x10\f\vV\a\x14\aV\v\f\x10.F\x1e\vV\a\aV\v\x1e\xf4\x1e\vV\a\aV\v\x1e\xf4\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x1a\x00\x00\x00\x14\x06\"&462\a\x15#\"\x06\x1f\x01\x16?\x016&+\x0154+\x01\"\x01\xf8\x91Α\x91ΓG\b\x06\x06s\b\bs\x06\x06\bG\f@\f\x01'Α\x91Α\x84t\x0f\x05s\b\bs\x05\x0ft\f\x00\x00\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x1a\x00\x00\x04\"&462\x16\x14'#54&\x0f\x01\x06\x1f\x01\x166=\x0132=\x014\x01gΑ\x91Α\x84t\x0f\x05s\b\bs\x05\x0ft\f8\x91Α\x91ΓG\b\x06\x06s\b\bs\x06\x06\bG\f@\f\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x1a\x00\x00\x122\x16\x14\x06\"&4\x173\x15\x14\x16?\x016/\x01&\x06\x1d\x01#\"\x1d\x01\x14\x99Α\x91Α\x84t\x0f\x05s\b\bs\x05\x0ft\f\x01\xb8\x91Α\x91ΓG\b\x06\x06s\b\bs\x06\x06\bG\f@\f\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x1a\x00\x006462\x16\x14\x06\"75326/\x01&\x0f\x01\x06\x16;\x01\x15\x14;\x012\b\x91Α\x91ΓG\b\x06\x06s\b\bs\x06\x06\bG\f@\fYΑ\x91Α\x84t\x0f\x05s\b\bs\x05\x0ft\f\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x1e\x004\x00\x00%2\x16\x1d\x01\x14\x06#!\"&5\x1146;\x012\x16\x1d\x01\x14\x06+\x01\x11!5463\x132\x16\x1d\x01\x14\x06/\x01\a\x06\"/\x01&4?\x01'&63\x01\xb0\a\t\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\xa0\a\t\t\a\x90\x01@\t\aX\n\x0e\x1e\v$\xf3\a\x14\a\x17\a\a\xf4$\v\f\x10\x80\t\a\x80\x14\x1c\x1c\x14\x01`\x14\x1c\t\a \a\t\xfe\xc0p\a\t\x01@\x0e\n\x80\x10\f\v$\xf4\a\a\x17\a\x14\a\xf3$\v\x1e\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00#\x00\x00\x01\x11\x14\x06#!\"&5\x11463!2\x16\a#\"\x06\x1f\x01\a\x06\x1f\x01\x16?\x01\x17\x166=\x014&\x01\xc0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1cXp\x10\f\v \xc3\t\t\x1f\b\t\xc3 \v\x1e\x0e\x01p\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c$\x1e\v \xc3\t\b\x1f\t\t\xc3 \v\f\x10p\n\x0e\x00\x00\x00\x02\x00\x00\xff\xf3\x02\x00\x01\x8d\x00\x15\x00+\x00\x00\x115463!546\x1f\x01\x16\x14\x0f\x01\x06&=\x01!\"&\x052\x16\x1d\x01\x14\x06#!\x15\x14\x06/\x01&4?\x016\x16\x1d\x01\x0e\n\x01h\x1e\vP\a\aP\v\x1e\xfe\x98\n\x0e\x01\xe8\n\x0e\x0e\n\xfe\x98\x1e\vP\a\aP\v\x1e\x01\x18\x10\n\x0e0\x10\f\vP\a\x14\aP\v\f\x100\x0e\x8e\x0e\n\x10\n\x0e0\x10\f\vP\a\x14\aP\v\f\x100\x00\x00\x00\x02\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\x1c\x001\x00\x00%\x1e\x02\x15\x14\x06#!\"&5467454632\x16\x17632\x16\x15\x14\a6&+\x0154&+\x01\"\x06\x1d\x01#\"\x06\x1f\x01\x167\x02\x1a\x1d.\x1bK5\xfe\x90W\x13h\x13\b0\a\x0e\x89\x04\r\x05\x1a\f\n\x01\xc6\n\r\x19\f\t\xfe\xee$%2\v\x11p\x12\x05\x18\x04\x13\xa0\x80\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x0f\x00\x17\x00+\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x16\"\x06\x14\x16264\x1754&+\x01\x06\"'#\"\x06\x1d\x01\x14\x16;\x0126\x01P\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xaa4&&4&0'\x1c\x05\x13*\x13\x05\x1c'\r\t\xb4\t\r\x01\xc0\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x80&4&&4\xc7\x13\x18\"\b\b\"\x18\x13\b\v\v\x00\x00\x01\xff\xff\xff\xdc\x02\x00\x01\xa5\x00 \x00\x00\x1376\x16\x1d\x01\x1e\x04\x15\x14\x06\a\x06&7>\x01.\x04'\x15\x14\x06/\x01&4\b\xb0\f\x1c4PL2\x1e0#\v\x15\x04\t\x06\a\x15\x1e.6\"\x1c\f\xb0\b\x01\x02\x98\n\r\x0fP\x01\t\x19)B,,U\x19\b\x0e\f\x1f2&\x1d\x13\r\x05\x01X\x0f\r\n\x98\a\x16\x00\x00\x00\x00\x02\x00\x10\xff\xbc\x01\xf0\x01\xc0\x00\x1a\x00\x1f\x00\x00\x01\x1e\x01\x15\x14\x0e\x03\a\x06'.\x0354>\x03?\x0162\x17\x03>\x017'\x01\xd2\x0e\x10\x1e.=9\x1c\x12\x12*M@'\x03\x05\a\t\x06\xc0\b\x14\b\x12Kc\x02\xb0\x01l\x05\x18\x0f?sSC)\v\b\b\x11C_\x82G\x06\v\n\b\a\x02P\x04\x04\xfeF%\xa2lJ\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x0f\x00\x17\x00#\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x12264&\"\x06\x147\x114#!\"\x15\x11\x143!2\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\xa3\x1a\x13\x13\x1a\x13\xd0\f\xfe\xb8\f\f\x01H\f\x01\xc0\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c\xfe \x13\x1a\x13\x13\x1aY\x018\f\f\xfe\xc8\f\x00\x00\x00\a\x00\x00\xff\xe0\x02@\x01\xa0\x00\r\x00\x1e\x00&\x00.\x00B\x00L\x00T\x00\x00\x122\x16\x15\x14\a\x06#!\"'&54%\"\x0e\x01\x15\x14\x1632?\x014761.\x01\x02264&\"\x06\x146264&\"\x06\x14%6.\x02'&\x06\x0f\x01\x0e\x01\x15\x14\x173654'7\x163264&#\"\a\x16264&\"\x06\x14\xa9\xee\xa9'\t\x12\xfeD\x12\t'\x01 \t\x0e\t\x13\r\t\t\t\x02\x01\x03\x10\xd8\x1a\x13\x13\x1a\x13C\x1a\x13\x13\x1a\x13\x01\x17\x01\x01\x04\a\x04\n\x12\x03=\x19#\tn\t\x17L\n\x11\r\x13\x13\r\x05\x06.\x1a\x13\x13\x1a\x13\x01\xa0\xa9wNC\x0f\x0fCNwi\t\x0e\t\r\x13\x06\x1c\x01\x03\x02\v\r\xfe\xe0\x13\x1a\x13\x13\x1a\x8d\x13\x1a\x13\x13\x1a5\x05\n\b\x06\x02\x03\t\t\xb8\x02%\x19\x11\x0f\x0f\x11\x1d\x13\u007f\x0f\x13\x1a\x13\x02\xde\x13\x1a\x13\x13\x1a\x00\x00\x03\x00\x00\x00\x00\x02@\x01\x80\x00\x03\x00\x1f\x00/\x00\x00\x13!\x15!$\x14\x163\x15\x14\x06#!\"&=\x01264ᕗ!2\x16\x1d\x01\"'4&#!\"\x06\x1d\x01\x14\x163!265\x80\x01@\xfe\xc0\x01\x90\x1c\x14\x1c\x14\xfe \x14\x1c\x14\x1c\x1c\x14\x1c\x14\x01\xe0\x14\x1c\x14L\x0e\n\xfe\xb0\n\x0e\x0e\n\x01P\n\x0e\x01 \xc0t(\x1c`\x14\x1c\x1c\x14`\x1c(\x1c`\x14\x1c\x1c\x14`8\n\x0e\x0e\n\xd0\n\x0e\x0e\n\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\a\x00\x1b\x00\x00$\"&462\x16\x14\a2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x1627\x01\x01?\x01>\x01=\x01\a\x06\x0f\x01\x06\x0f\x01\x06#\"'4\"\x06\x14\x16264\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x13\b\v\a\t\x0e\x02\f\x94Oq\xfe\xc0\f\x14\f9\v\x10\x16\n\x03\t\x04\x0f\f\x06\x06\a\x06\x10\f\f\x10\f\x01(\a\t\t\a\xfe\xa0\a\t\t\a\xb0\x03\x11\t\x89\n\a\t\x1c\x04\x04\fpP\xc0\x0f\r\x1d\x17\x06\x1d\x05\x19\r2\v\x05\v\x1e\x0f\x06\x05\x02\x02\xa3\f\x10\f\f\x10\xfe\xcc\t\a \a\t\t\a \a\t\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01@\x01\xa0\x00#\x003\x00\x007.\x015462\x16\x15\x14\x06\a32\x16\x1d\x01\x14\x06+\x01\x15\x14\x17#6=\x01#\"&=\x01463\x172\x16\x1d\x01\x14\x06#!\"&=\x01463i\x16\x1b=V=\x1b\x16\x19\a\t\t\a\x10\x18\xb0\x18\x10\a\t\t\a\xe0\a\t\t\a\xfe\xe0\a\t\t\a\xe0\x0e/\x1b+==+\x1b/\x0e\t\a \a\t\x05P++P\x05\t\a \a\t\xe0\t\a \a\t\t\a \a\t\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\a\x00\x17\x00I\x00\x00\x00\"&462\x16\x14\x132\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\x16\x15\x14\x0f\x01!'&54?\x016\x17\x1e\x01323>\x01546;\x012\x17\x1e\x012676;\x012\x16\x15\x14\x16\x17\x1632676\x17\x01\x17.!!.!x\a\t\t\a\xfe\xa0\a\t\t\a\x01\xa9\a\x02f\xfe\xd0f\x02\a\x1d\f\n\x06\x16\n\x02\x01\x13\x1a\b\x05'\v\x02\x03\x1c \x1c\x03\x02\v'\x05\b\x16\x11\x04\x05\n\x16\x06\n\f\x01P!.!!.\xfe\x8f\t\a \a\t\t\a \a\t\x01\b\x05\b\x04\x04\xd3\xd3\x04\x03\t\x05\x10\b\r\b\v\x01\x1e\x14\x05\b\n\x10\x16\x16\x10\n\b\x05\x12\x1d\x03\x01\v\b\r\b\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xa0\x00#\x00+\x00;\x00\x00\x012\x16\x1d\x01\a\x14\x17!65'546;\x012\x16\x1d\x013546;\x012\x16\x1d\x0135463\x0354&\"\x06\x1d\x01\x172\x16\x1d\x01\x14\x06#!\"&=\x01463\x01p\a\t@\r\xfe\xe6\r@\t\a8\a\t0\t\aP\a\t0\t\aX\x13\x1a\x13\xd0\a\t\t\a\xfe\xa0\a\t\t\a\x01\xa0\t\a\xb0 VJJV \xb0\a\t\t\a00\a\t\t\a00\a\t\xfe\xe0@\r\x13\x13\r@\x80\t\a \a\t\t\a \a\t\x00\x00\x00\x03\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\x17\x00/\x00S\x00\x00\x132\x16\x15\x11\x14\x06+\x01\"&=\x01#\"=\x014;\x015463\x052\x1d\x01\x14+\x01\x15\x14\x06+\x01\"&5\x1146;\x012\x16\x1d\x01'2\x16\x15\x11\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&5\x1146;\x012\x16\x1d\x0135463h\n\x0e\x0e\n0\n\x0e\x18\b\b\x18\x0e\n\x02@\b\b\x18\x0e\n0\n\x0e\x0e\n0\n\x0e\x98\n\x0e\x0e\n0\n\x0e\x80\x0e\n0\n\x0e\x0e\n0\n\x0e\x80\x0e\n\x01`\x0e\n\xfe\xf0\n\x0e\x0e\nh\b0\bh\n\x0e\x80\b0\bh\n\x0e\x0e\n\x01\x10\n\x0e\x0e\nh\xc0\x0e\n\xfep\n\x0e\x0e\n\xa8\xa8\n\x0e\x0e\n\x01\x90\n\x0e\x0e\n\xa8\xa8\n\x0e\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\x06\x00\r\x00\x15\x00Q\x00\x00\x01\x16\x17'\x16\x17\x16\x01&'\x17&'&'>\x017\x17\x0e\x01\a\x13\a'&\x0f\x01\x06\x1f\x01\a'&\x0f\x01\x06\x1f\x01\a'&\x0f\x01\x06\x1f\x01\a\x06\x1f\x01\x16?\x01\x17\x16?\x016/\x017\x17\x16?\x016/\x017\x17\x16?\x016/\x0176/\x01&\x01\xe2\r\x01\x9d63\x1e\xfe4\r\x01\x9d63\x1e\x12\x11\x98g\xd8\x11\x98gf\x1d\x1c\x06\x05\f\x05\x05\x1d\x17\x1c\x06\x06\v\x06\x06\x1c\x16\x1d\x05\x06\v\x06\x06\x1c\x1c\x06\x06\v\x06\x05\x1d\x1c\x06\x05\f\x05\x05\x1d\x17\x1c\x06\x06\v\x06\x06\x1c\x16\x1d\x05\x06\v\x06\x06\x1c\x1c\x06\x06\v\x06\x01\x8445\x9d\x01\x0e\b\xfe[45\x9d\x01\x0e\b\xc6o\x91\x0f\xd9o\x91\x0f\x01T\x1c\x1c\x06\x06\v\x06\x06\x1c\x17\x1d\x05\x05\v\x06\x06\x1c\x17\x1d\x05\x05\f\x05\x06\x1c\x1d\x05\x06\v\x06\x06\x1c\x1c\x06\x06\v\x06\x05\x1d\x16\x1c\x06\x06\v\x06\x06\x1c\x17\x1d\x05\x05\f\x05\x06\x1c\x1d\x05\x06\v\x06\x00\x00\x05\x00\x00\xff\xc0\x01\xa0\x01\xc0\x00\x15\x00#\x00-\x008\x00B\x00\x0073\x14\x06+\x01\"\x06\x1d\x01\x14+\x01\"=\x014&+\x01\"&%\x14\x0e\x02\a#.\x015462\x16\a2654'\x16\x06'\x16\x174'\x16\x0e\x01'\x1632674'\x16\x06'\x16326`\xe0\x13\r\x10\r\x13\f(\f\x13\r\x10\r\x13\x01@\x0e\x1a$\x16\xdc-5z\xacz\xb4\x0e\x13\x16\a\x1d\x14\bH\x16\x05\v\x17\r\b\x17\x0e\x13@\x16\a\x1d\x14\b\x17\x0e\x13 \r\x13\x13\r\x14\f\f\x14\r\x13\x13\xdd\x1b5,&\x0e\x1c]7Vzz\x82\x13\x0e\x17\b\x14\x1d\a\x16/\x17\b\r\x17\n\x04\x16\x14M\x17\b\x14\x1d\a\x16\x14\x00\x02\x00\x00\x00\x00\x02\x00\x01\x80\x00\a\x00\x12\x00\x00<\x0162\x16\x14\x06\"'\x1e\x0167\x15\x14\x06\"&5\x96Ԗ\x96Ԗ7\xc9\xc97\x96Ԗ\xf8P88P8\x0e(\x1e\x1e(n(88(\x00\x03\x00\x00\xff\xbd\x02\x87\x01\xc7\x00\x17\x00#\x005\x00\x00%\x17\x14\x0e\x03\a\x0e\x01/\x016?\x016&\x0f\x0167>\x013\x052\x16\x14\x06\"&54>\x02\x13\x16\x0f\x01\x17\x16\x06\x0f\x01'7>\x01\x1f\x0176\x17\x01\x00W\x03\r\x0f\x1d\x10\x1b\x8565\x04\a_\x03\x06\x04<\x19\x1d\x1bQ\x1c\x01\t\"..C.\f\x16\x1d\x9e\n\f\xe8\"\x03\x04\x06;V\x19\x03\f\x04\"\xe8\r\n\xe7m\x04\x0f($*\r\x15\x11\x02\x02\x17 p\x04\a\x01\x16J\x17\x16\x14\x88/B//!\x11\x1d\x16\f\x01A\r\n\xb1+\x05\f\x01\fm7\x05\x01\x04+\xb2\t\f\x00\x00\x00\x00\x01\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x03\x00\x00\x05!\x11!\x02\x00\xfe\x00\x02\x00@\x02\x00\x00\x00\x03\xff\xff\xff\xbf\x02\t\x01\xc0\x00\n\x00\x1f\x00'\x00\x00%&\x06\a'762\x17\x1e\x01\a\x06\x15\x14\x17&/\x01\a\x06\"/\x01&4?\x01'.\x017\x042\x16\x14\x06\"&4\x01\xf00q\"\xd48?\xb2?/\x18\xf2\x06\v)\x1d$Y\x06\x11\x065\x06\ag#\x1d\t\x15\x01>P88P8\x98 \x14/\xd48??/\x81\x89\x16\x12\x1d\x1a\x05\x1c$g\a\x065\x06\x11\x06Y#\x1dQ\"\xa48P88P\x00\x00\x06\xff\xfd\xff\xc7\x01\xf8\x01\xbd\x00\n\x00\x12\x00\x1c\x00(\x002\x00@\x00\x007\x0e\x01\a.\x01'>\x017\x16'\x0e\x01\a&67\x16\x17&'.\x01'6\x17\x1e\x01\a\x16\x1767\x06\a\x06&'>\x01\a\x167\x0e\x01#\"&'6\x13\x1e\x02\x15\x1c\x01\x15\x06#0#6&\xe7-V\x0f\x0f!\t\x11`D\x15$>_\x19\x0fGE#\xd270\x017%0344\x84LS)(\f\x1eF\x92>\x0e/Ov\x8b\x1d]&\x1dK\x19\n\xca0K*,-\x01\x06'\xcd\x1dp4\x0f/\x13Gr 2O\x1ec?Q\x90&\x1f\xcd\x06\x1b6\x82'\x0e\x062\x8bU(\x01\x01\n1)\x15\x1a+\x12*WR\x14\x19\"\x15\x0f/\x01\x8e\x11D_5\x01\x04\x01\x0eE\x83\x00\x00\x00\x00\b\xff\xfd\xff\xbf\x01\xc0\x01\xc0\x00:\x00B\x00J\x00R\x00Z\x00b\x00j\x00r\x00\x00\x002\x16\x1d\x01\x14\x0f\x01\x0e\x01+\x01\"/\x01&>\x01\x16\x1f\x015462\x16\x1d\x01\x14;\x012=\x01462\x16\x1d\x01\x14;\x012=\x01462\x16\x1d\x01\x14;\x012=\x014\x02264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x146264&\"\x06\x14\x01\x93\x1a\x13\x05\x1b\x03\x1b\x10\xc6\x18\x0f}\n\x05\x1b!\t\x18\x13\x1a\x13\b\x10\b\x13\x1a\x13\b\x10\b\x13\x1a\x13\b\x10\b\xd7\x0e\t\t\x0e\t\t\x0e\t\t\x0e\tI\x0e\t\t\x0e\t\t\x0e\t\t\x0e\tI\x0e\t\t\x0e\t)\x0e\t\t\x0e\t)\x0e\t\t\x0e\t\x01P\x13\r\xb0\x16\x14q\x10\x15\x14\xac\x0e!\x13\x05\r!\xf1\r\x13\x13\r\x98\b\b\xb8\r\x13\x13\r\xb8\b\b\x98\r\x13\x13\r\x98\b\bH\r\xfe\xe3\t\x0e\t\t\x0eW\t\x0e\t\t\x0e\x89\t\x0e\t\t\x0eW\t\x0e\t\t\x0e)\t\x0e\t\t\x0eI\t\x0e\t\t\x0ew\t\x0e\t\t\x0e\x00\x00\x00\x00\a\x00\x00\x00 \x02\x80\x01`\x00\t\x00\x13\x00\x17\x00\x1f\x00'\x00/\x007\x00\x00\x1146;\x01\x11#\"&5\x012\x16\x1d\x01\x14\x06+\x01\x11\x01\x11!\x11&\"\x06\x14\x16264\x06\"\x06\x14\x16264&\"\x06\x14\x16264\x06\"\x06\x14\x16264&\x1a``\x1a&\x02@\x1a&&\x1a`\xfe\xe0\x01\x00F\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0en\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x01 \x1a&\xfe\xc0&\x1a\x01\x00&\x1a\xc0\x1a&\x01@\xfe\xc0\x01@\xfe\xc0\xe8\x0e\x14\x0e\x0e\x14R\x0e\x14\x0e\x0e\x14n\x0e\x14\x0e\x0e\x14R\x0e\x14\x0e\x0e\x14\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\t\x00\x12\x00\x1c\x00\x00\x010\x17#532\x1e\x01\x17'\x15#617>\x013\a!\x15\x14\x06#!\"&5\x01\xfe\x01\xef\x8d\v\x12\x0e\x03\xdb\xef\x013\x05\x19\x10c\x02\x00\x1c\x14\xfe`\x14\x1c\x01\a\a\xc0\b\x0f\n!\xc0\a\x98\x0f\x12\xe0\xf0\x14\x1c\x1c\x14\x00\x00\x03\x00\x00\xff\xc0\x02@\x01\xc0\x00\x14\x00)\x00>\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x01\x157\x175%\"&=\x0146;\x01\x157\x17532\x16\x1d\x01\x14\x06#\a2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x01\x157\x175\x020\a\t\t\a\xe0\a\t\t\aP \xfe\xd0\a\t\t\aP P\a\t\t\a\xa0\a\t\t\a\xe0\a\t\t\aP \xa0\t\a\xc0\a\t\t\a\xc0\a\t`\x15\x15`@\t\a\xc0\a\t`\x15\x15`\t\a\xc0\a\t@\t\a\xc0\a\t\t\a\xc0\a\t`\x15\x15`\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xa0\x00\x19\x00\x1d\x009\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01546;\x012\x16\x1d\x01'\x1535\x1754+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14P\x1c\x14\xa0\x14\x1c\xc0\x80 \b8\b0\b8\b\b8\b0\b8\b\x01@\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c0\x14\x1c\x1c\x140 \xf80\b8\b\b8\b0\b8\b\b8\x00\x02\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\n\x00\x13\x00\x00\x13\x1e\x01\x15\x14\x06\"&546\x122654'\x06\x15\x14\xc0Ukk\xaakj,T6``\x01\xc0M\xa5:^vv^:\xa5\xfe\x8d5*8ii8*\x00\x03\x00\x00\xff\xe0\x02G\x01\xa0\x00\x1d\x00%\x00/\x00\x00%\x16\x06\a\x06#\"/\x01&'\x15\x14\x06\"&=\x014632\x16\x1767632\x17\x0554&\"\x06\x1d\x01\x057'&#\"\a\x0e\x01\x17\x02+\x1b\x10'\x1d$<\"\x83\a\x06B\\BB.-@\x02\r\x1d\x1d$<\"\xfe\xf8\x1c(\x1c\x01#RA\x0f\x1b\x10\f\x12\a\f\x94']\x1b\x151\xbb\n\x0f\x95.BB.\xe0.B>,!\x14\x151\x8fp\x14\x1c\x1c\x14p-:]\x16\t\f)\x11\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x15\x00\x1d\x00-\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01462\x16\x15&\"\x06\x14\x16264\x176/\x01&\x0f\x01'&\x0f\x01\x06\x1f\x01\x167\x01P\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14P&4&6\x14\x0e\x0e\x14\x0ea\t\t\x1c\b\tj.\b\t\x1c\t\tR\t\b\x01\x80\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1a&&\x1a\x18\x0e\x14\x0e\x0e\x14\xda\t\b\x1d\b\bj/\b\b\x1c\t\bT\b\b\x00\x00\x00\b\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x15\x00\x1d\x00%\x00-\x005\x00A\x00M\x00Y\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01462\x16\x15\x02264&\"\x06\x146264&\"\x06\x146264&\"\x06\x146\"\x06\x14\x16264\x1354+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x01P\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14P&4&\xaa\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x82\x14\x0e\x0e\x14\x0eh\b\x90\b\b\x90\b\b\x90\b\b\x90\b\b\x90\b\b\x90\b\x01\x80\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1a&&\x1a\xfe\x98\x0e\x14\x0e\x0e\x14R\x0e\x14\x0e\x0e\x14R\x0e\x14\x0e\x0e\x14\xb2\x0e\x14\x0e\x0e\x14\xfe\x9e\x10\b\b\x10\bh\x10\b\b\x10\bh\x10\b\b\x10\b\x00\x00\a\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\a\x00\x0f\x003\x00;\x00C\x00K\x00[\x00\x00$\"&462\x16\x14&\"&462\x16\x14\x05'&6767\x1665632\x17\x06\x1667\x16\x17\x1e\x01\x0f\x01\x0e\x01'&'\x15#5\x06\a\x06&$\"\x06\x14\x16264&\"\x06\x14\x16264&\"&462\x16\x14\x052\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\xf7\x0e\t\t\x0e\t\x9cH44H4\xfe\xa4\x12\a\x05\f\v\x12\x187VJ\x037.\x03'&6;\x012\x17\x16\x17!676;\x012\x16\a\x0e\x04\a\x06\a3&'67\x1e\x02\x17\x16\x06+\x01\"'&'!\x06\a\x06+\x01\"&\x1367#\x167!\x16\x1736\x03!&'#\x06\x03\x0e B--B \x0e\x03\x01\n\a \x0e\x02\x02\x02\x018\x02\x02\x02\x0e \a\n\x01\x02\n\x1e*M1,\"\u007f\r\x04 \x1b*9\x11\x03\x01\n\a \x0f\x01\x01\x03\xfe\xc8\x02\x02\x02\x0e \a\n\xe1$\x1c\x80\x1c\xa7\xfe\xfa\t\f\xdc\f\xfd\x01\x05\b\r\xdb\f.\x15/DI\x1d\x1dID/\x15\a\v\x0e\b\n\n\b\x0e\v\a\x12(?9@\x19\x16\x1d\f\x02\x11\x13$Z8\x1a\a\v\x0e\x06\f\t\t\x0e\v\x01\x19\x14\x18\x18h\x10\x10\x10\xfe\xd0\x10\x10\x10\x00\x00\x03\x00\x00\xff\xb9\x02B\x01\xc0\x00\x15\x005\x00=\x00\x00%'&>\x01?\x01\x177'76\x1e\x02\x1f\x01\x16\x06\x0f\x01&\x17\x16\x06\x0f\x01\x0e\x01'.\x01'&7\x03#\"&=\x0146;\x012\x17\x13\x16\x1776\x16\x17\x04264&\"\x06\x14\x01&5\x01\x01\x06\x04>!=!=\x03\x06\x06\x04\x01<\x02\x06\x06\xa1\x17\xfe\x02\x06\x06\xd5\x01D-\x1d+\x05\b,\\Y\a\t\t\ap\x17\ad-\x1c\xd6\x06\f\x02\xfe\xb7(\x1c\x1c(\x1c\xaa\xa0\x04\b\a\x01\x14c\x14c\x15\x01\x01\x02\x05\x03\xb5\a\f\x025\x11)\a\v\x03G,8\b\x05,\x1e7#\x01\x15\t\a \a\t\x16\xfe\xd6\x01$G\x02\x06\x06\xa8\x1c(\x1c\x1c(\x00\x00\x02\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x14\x00B\x00\x007\"&5\x1146;\x01\x157\x17532\x16\x15\x11\x14\x06#\x172\x16\x1d\x01\x14\x06+\x01\x16\x15\x14\x06\"&547#\x16\x15\x14\x06\"&547#\"&5\x11#\"&=\x0146;\x012\x16\x15\x11\xd0\a\t\t\a\x9000\x90\a\t\t\a \a\t\t\aS\x03\x1c(\x1c\x03\xc6\x03\x1c(\x1c\x03S\a\t0\a\t\t\a`\a\t\x80\t\a\x01\x00\a\t\x80 \x80\t\a\xff\x00\a\t@\t\a \a\t\t\a\x14\x1c\x1c\x14\b\b\t\a\x14\x1c\x1c\x14\b\b\t\a\x01p\t\a \a\t\t\a\xfe\x90\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\b\x00\x1a\x006\x00\x00\x01\x16\x1d\x01#532\x17\a\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x134+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x01325\x01y\a\x80\x06\n\a7\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8@\b8\b0\b8\b\b8\b0\b8\b\x01W\a\n\x06\x80\a\x81\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xfe\xd8\b8\b\b8\b0\b8\b\b8\b\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00/\x008\x00\x00\x01\x14\x16;\x01\x11\x14\x06#!\"&=\x013\x17\x162?\x01\x173264&+\x01'&\"\x0f\x01'&+\x01\"=\x014;\x01546;\x01\x17\x16\x1d\x01#532\x17\x01 \x0e\n\x88\x0e\n\xfe\xb0\n\x0eF#\x02\n\x029\x16Z\a\t\t\aF#\x02\n\x029\x14\x02\x05\x8d\b\b8\x0e\nș\a\x80\x06\n\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\xa8F\x04\x04r,\t\x0e\tF\x04\x04r(\x04\b\x10\b\xe8\n\x0ei\a\n\x06\x80\a\x00\x00\x04\x00\x00\xff\xe0\x02@\x01\xa0\x00\t\x00\r\x00)\x003\x00\x00\x1146;\x01\x11#\"&5\x17\x11!\x11%\x15\x14;\x01\x15\x14;\x012=\x0132=\x014+\x0154+\x01\"\x1d\x01#\"%2\x16\x15\x11\x14\x06+\x01\x11\x1c\x1400\x14\x1c\x80\x01@\xff\x00\b8\b0\b8\b\b8\b0\b8\b\x01P\x14\x1c\x1c\x140\x01p\x14\x1c\xfe@\x1c\x140\x01\xc0\xfe@\xf80\b8\b\b8\b0\b8\b\b8\xc0\x1c\x14\xfe\xa0\x14\x1c\x01\xc0\x00\b\x00\x00\xff\xc0\x02@\x01\xc0\x00\x19\x00%\x001\x00=\x00I\x00e\x00q\x00}\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01546;\x012\x16\x1d\x01\x0154+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x1754+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012754+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132\x1354+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x02 \r\x13\t\a\xfd\xe0\a\t\x13\r\x80\x13\r\xc0\r\x13\xff\x00\f(\f\f(\f\f(\f\f(\f\xa0\f(\f\f(\f\f(\f\f(\f\x10\x06\x1a\x06\x14\x06\x1a\x06\x06\x1a\x06\x14\x06\x1a\x06\x90\f(\f\f(\f\f(\f\f(\f\x01`\x13\r\xfe\x90\a\t\t\a\x01p\r\x13@\r\x13\x13\r@\xfe\xac(\f\f(\f\x8c(\f\f(\ft(\f\f(\f\x8c(\f\f(\f\xb6\x14\x06\x1a\x06\x06\x1a\x06\x14\x06\x1a\x06\x06\x1a\xfe\xdc(\f\f(\f\x8c(\f\f(\f\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\a\x00#\x00\x00\x122\x16\x14\x06\"&4\x0554+\x01\"\x1d\x01#54+\x01\"\x1d\x01\x14;\x012=\x013\x15\x14;\x012\x96Ԗ\x96Ԗ\x01p\b0\b`\b0\b\b0\b`\b0\b\x01\xc0\x96Ԗ\x96\xd4\xe2\xf0\b\bXX\b\b\xf0\b\bXX\b\x00\x00\x04\x00\x00\xff\xc0\x02@\x01\xc0\x00\x13\x00\x1b\x00.\x008\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01\x1535\x06\"\x06\x14\x16264\x1726'.\x01+\x01\x06\"'#\"\x0e\x01\a\x06\x163\x13\x15#546;\x012\x16\x02\x10\x14\x1c\x1c\x14\xfe \x14\x1c\x1c\x14\x90\xc0F4&&4&\x1d\b\n\x02\x06\"\x15\b\x13*\x13\b\x0e\x19\x12\x04\x02\n\b\x9d\x80\x13\r@\r\x13\x01\x80\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c``\xa0&4&&4\xba\r\a\x13\x19\b\b\v\x14\r\a\r\x01\xa0``\r\x13\x13\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x15\x00\x1d\x009\x00E\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01462\x16\x15&\"\x06\x14\x16264\x1354+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132=\x014+\x01\"\x1d\x01\x14;\x012\x01P\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14P&4&6\x14\x0e\x0e\x14\x0eH\b8\b0\b8\b\b8\b0\b8\b\b\xb0\b\b\xb0\b\x01\x80\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1a&&\x1a\x18\x0e\x14\x0e\x0e\x14\xfe\xde0\b8\b\b8\b0\b8\b\b8\xc8\x10\b\b\x10\b\x00\x00\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x14\x008\x00<\x00@\x00\x007\"&=\x0146;\x01\x157\x17532\x16\x1d\x01\x14\x06#\x17#\x1532\x16\x1d\x01\x14\x06#!\"&=\x0146;\x015#\"&=\x01463!2\x16\x1d\x01\x14\x06\x055#\x15!5#\x15\x90\a\t\t\ap@@p\a\t\t\a\x8000\a\t\t\a\xfd\xa0\a\t\t\a00\a\t\t\a\x02`\a\t\t\xfe\xa9\xa0\x01\x80\xa0\xc0\t\a\xe0\a\t\x80 \x80\t\a\xe0\a\t\x80@\t\a \a\t\t\a \a\t@\t\a \a\t\t\a \a\t@@@@@\x00\x00\x04\x00\x00\xff\xdc\x02D\x01\xa0\x00\v\x00\x13\x00\x1d\x00'\x00\x00\x122\x16\x1d\x01\x14\x06\"&=\x014\x1754&\"\x06\x1d\x017\x17\x16\a\x06.\x027>\x01\x1e\x01\a\x06/\x01&76B\\BB\\B\xa0\x1c(\x1c\xec\xd2\a\a/vT\b\"\x06\xc3S\t#\x05\a\xd3\x06\a/\x01\xa0B.\xe0.BB.\xe0.\x9ep\x14\x1c\x1c\x14p\x1e\xd3\a\x05#\tSv/\a7Tv/\a\a\xd2\a\x06\"\x00\x00\x02\x00\x00\xff\xc0\x01\x80\x01\xc0\x00!\x001\x00\x00\x135!\x11\x14\x06#!\"&=\x0132=\x014+\x01532=\x014+\x01532=\x014#72\x16\x1d\x01\x14\x06#!\"&=\x01463 \x01@\x13\r\xff\x00\r\x13x\b\bxx\b\bxx\b\b\xd0\n\x0e\x0e\n\xfe\xb0\n\x0e\x0e\n\x01\x00@\xfe\xa0\r\x13\x13\r@\b\x10\b@\b\x10\b@\b\x10\b\xc0\x0e\n0\n\x0e\x0e\n0\n\x0e\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x0f\x00\x19\x005\x00\x00\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x13\x11!\x11\x14\x06#!\"&7\x15\x14;\x01\x15\x14;\x012=\x0132=\x014+\x0154+\x01\"\x1d\x01#\"\x01h\n\x0e\x0e\n\xfe\xb0\n\x0e\x0e\n\b\x01@\x13\r\xff\x00\r\x13@\b8\b0\b8\b\b8\b0\b8\b\x01\xc0\x0e\n0\n\x0e\x0e\n0\n\x0e\xfe \x01`\xfe\xa0\r\x13\x13\xc50\b8\b\b8\b0\b8\b\b8\x00\x00\x03\x00\x00\xff\xc0\x02\x80\x01\xc1\x00#\x00?\x00G\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&5\x1146;\x012\x16\x1d\x0135463'\"=\x014;\x012\x1f\x01762\x1f\x0132\x16\x14\x06+\x01'\a\x06\"/\x01\x02\"&462\x16\x14\x02\x10.B\t\a \a\t\xfe\x00\t\a \a\t\t\a \a\t\xc0\t\a\x88\b\b\x8d\x05\x02\x142\x04\x14\x04\x1cf\a\t\t\az\x162\x04\x14\x04\x1cL4&&4&\xe0B.\xa0\a\t\t\a00\a\t\t\a\x01`\a\t\t\a\xf0\x90\a\t\x80\b\x10\b\x04(c\t\t7\t\x0e\t,c\t\t7\xff\x00&4&&4\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc0\x00I\x00Q\x00Y\x00^\x00\x00%2\x16\x1d\x01\x14\x06+\x01\x14\x06\"&5#\x14\x06\"&=\x0132=\x014+\x01\"=\x014;\x012=\x014+\x01\"=\x014;\x012=\x014#!\"=\x014;\x015463!2\x16\x1d\x0132\x1f\x01\x16\x1d\x01\x04264&\"\x06\x14\x04264&\"\x06\x1475'#\x15\x02p\a\t\t\a08P8\x808P8\x98\b\b\xd0\b\b\xf0\b\b\xd0\b\b\xf0\b\b\xfe\xf0\b\b8\x1c\x14\x01\x00\x14\x1c,\x14\x0ed\x0e\xfe,(\x1c\x1c(\x1c\x01\\(\x1c\x1c(\x1c\x80d,`\t\a \a\t(88((88(\x80\b\x10\b\b\x10\b\b\x10\b\b\x10\b\b\x10\b\b\x10\b0\x14\x1c\x1c\x140\x0ed\x0e\x14lp\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\xb4\fdp\x00\x00\x00\x00\x06\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\v\x00#\x003\x007\x00N\x00Z\x00\x00%2\x1d\x01\x14+\x01\"=\x0143\x03\x1e\x01\x1d\x01\x14+\x01\"=\x014&'&=\x014;\x012\x1d\x01\x14\x032\x16\x1d\x01\x14\x06#!\"&=\x01463\x055#\x15\x01\x1e\x01\x1d\x01\x14+\x01\"=\x014'&=\x014;\x012\x1d\x01\x14\x172\x1d\x01\x14+\x01\"=\x0143\x02x\b\b0\b\b\x1f).\b0\b$\x1f\x1d\b0\bp\a\t\t\a\xfe\x80\x14\x1c\x1c\x14\x01`\xb0\x01\b\x1a\x1e\b0\b$<\b0\bX\b\b0\b\b`\b\x90\b\b\x90\b\x01\t\x1bW1\x1e\b\b\x1e&B\x14\x13%>\b\b>\v\xfe\xf1\t\a\x80\a\t\x1c\x14@\x14\x1cp@@\x01B\x129!\x1e\b\b\x1e,\x19*AB\b\b>,\xee\b\x90\b\b\x90\b\x00\x02\xff\xfc\xff\xbc\x02\x04\x01\xc4\x00\x1f\x00>\x00\x00\x137\x17\a\x06/\x01\a\x06/\x01&?\x01'&?\x01\x17\x16?\x016/\x017\x17\x16?\x016'7\x16\x0f\x01\x06/\x01\a\x17\x16\x0f\x01\x06/\x03&?\x016\x1f\x027'&?\x016\x17\xca@\x88\xb6\x1b&@B\x06\x05\f\x05\x05C\a\x04\x1b\x1a8\x05\x06\v\x06\x067-8\x05\x06\v\x06\x06\xfd\x05\x05\f\x05\x06\x1c-I\x06\x06\"\x06\x05\x11\x88\x11\x06\x06\"\x06\x05\x119-\x1c\x06\x06\v\x06\x05\x01\x11A\x88\xb5\x1c\x05\aC\x05\x05\f\x05\x06B@&\x1b\x1b8\x06\x06\v\x06\x067.8\x06\x06\v\x06\x05\x95\x05\x06\v\x06\x06\x1c-J\x05\x06\"\x06\x06\x11\x88\x11\x06\x05\"\x06\x06\x118-\x1c\x06\x05\f\x05\x05\x00\x00\x04\xff\xff\xff\xc0\x02\x84\x01\xc4\x00\v\x00\x1a\x00$\x00.\x00\x00\x122\x16\x17\x16\x06#!\"&56\x052\x16\x15\x0e\x01#\".\x02'463\x00\x1e\x01\a\x06/\x01&76\a\x17\x16\a\x06.\x0276dx[\t\x01\x06\x03\xfe\xd0\x03\x05\t\x01/\x03\x05\t[<\x1e7*\x1c\x05\x05\x03\x02\x1fT\t#\x05\a\xd3\a\a/F\xd3\a\a/vT\t#\x05\x01\x00M:\x03\x06\x06\x03:c\x06\x03:M\x15$1\x1d\x03\x06\x01kTv/\a\a\xd3\a\x05#F\xd3\a\x05#\tTv/\a\x00\x00\x00\x00\x01\xff\xff\xff\xc0\x02\x01\x01\xc3\x00(\x00\x00\x01\x16\x14\x0f\x01#\a\x06\"&4?\x0157\x17\x16?\x016/\x017\x17\x16?\x016/\x017\x17\x16?\x016/\x017>\x01\x01\xdd#\x1c\xfedY\a\x14\x0e\aY-2\x06\x06\v\x06\x062-2\x06\x06\v\x06\x062-2\x06\x05\f\x05\x053.\x1bM\x01\xac!R\x1c\xfdY\a\x0e\x14\aYe.3\x05\x05\f\x05\x062.3\x05\x05\f\x05\x062.3\x05\x05\f\x05\x062.\x1c\x06\x00\x00\x00\x02\xff\xfd\xff\xcf\x01\xe4\x01\xb4\x00\x15\x00\x19\x00\x00\x01\x16\x0f\x01\x06/\x01\a\x06#\"'&6?\x01'&?\x016\x1f\x017'\a\x01\xde\x05\x05\"\x06\x06\v\xf6\x1e+/\x1f\x1b\x06\x1e\xf2\v\x05\x05\"\x06\x06\bFO\x94\x01\x06\x06\x05\"\x06\x06\v\xf6\x1e$ R\x1e\xf1\v\x06\x06\"\x05\x05\xeeEO\x94\x00\x00\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x13\x00\x17\x00'\x00;\x00?\x00\x00\x13\"=\x014;\x012\x1d\x01\x14+\x01\x15\x14\x06\"&=\x013\x1535\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\"=\x014;\x012\x1d\x01\x14+\x01\x15\x14\x06\"&=\x013\x1535H\b\b\xd0\b\b\x18/B/0@\x01\xa0\a\t\t\a\xfd\xa0\a\t\t\a\x01X\b\b\xd0\b\b\x18/B/0@\x01\x80\b0\b\b0\b\xf0!//!\xf0``\xfe\x80\t\a \a\t\t\a \a\t\x01\x80\b0\b\b0\b\xf0!//!\xf0``\x00\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\v\x00\x17\x00#\x00A\x00\x00%2\x1d\x01\x14#!\"=\x0143\x052\x1d\x01\x14#!\"=\x0143%2\x1d\x01\x14#!\"5743%\x16\x15\x11\x14+\x01\"=\x014&#!\"\x06\x1d\x01\x14+\x01\"5\x1147%62\x17\x01\xf8\b\b\xfe\x90\b\b\x01p\b\b\xfe\x90\b\b\x01p\b\b\xfe\x90\b\x01\b\x01\xd9\x1e\bP\b\x13\x0e\xfe\x82\x0e\x13\bP\b\x1e\x01\x10\b\x14\b`\b0\b\b0\b`\b0\b\b0\b\xc0\b0\b\b0\b\x8b\f \xfe\xa9\b\b\xf8\r\x13\x13\r\xf8\b\b\x01W \fq\x04\x04\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x19\x00!\x002\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01\x06\x15\x14\x162654'\x02\"&462\x16\x14'\"\x06\x15\x14\x162654'76.\x01\x06\a\x01\xc0\x1a&&\x1a\xfe\x80\x1a&&\x1a\x1a\x1aq\x9eq\x1ad\x84^^\x84^\xa0\x11\x17\x17\"\x17\v\"\x02\x05\f\f\x03\x01\x80&\x1a\xfe\xc0\x1a&&\x1a\x01@\x1a&-3OqqO3-\xff\x00^\x84^^\x84:\x18\x10\x11\x17\x17\x11\x0f\fO\x06\f\x05\x05\x06\x00\x00\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\a\x00\x0f\x00\x1f\x003\x00}\x00\x0062\x16\x14\x06\"&4\x16\"&462\x16\x14\x132\x16\x1d\x01\x14\x06#!\"&=\x01463\x012\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x11!\x11'54+\x01532=\x014+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15#\"\x1d\x01\x14;\x01\x15#\"\x1d\x01\x14;\x01\x15#\"\x06\x14\x1626=\x013\x15\x14\x16264&+\x01532=\x014+\x01532\xe9\x0e\t\t\x0e\t\xb7\x0e\t\t\x0e\t\xd0\a\t\t\a\xfd\xa0\a\t\t\a\x02`\a\t\t\a\xfd\xa0\a\t\t\a0\x02\x00`\b\x88h\b\bh\b\x10\bh\b\bh\x88\b\b\x88h\b\bh@\x14\x1c\x1c(\x1c@\x1c(\x1c\x1c\x14@h\b\bh\x88\b@\t\x0e\t\t\x0e\x17\t\x0e\t\t\x0e\x01\x97\t\a \a\t\t\a \a\t\xfe@\t\a \a\t\t\a \a\t\x01`\xfe\xa0\xc8\x10\b \b\x10\b\x18\b\b\x18\b\x10\b \b\x10\b \b\x10\b \x1c(\x1c\x1c\x14\x10\x10\x14\x1c\x1c(\x1c \b\x10\b \x00\x00\x03\xff\xfe\xff\xde\x02\x82\x01\xa2\x00\x17\x00\"\x00-\x00\x00%2?\x01\x15\x14\x06\x0f\x01\x06/\x01.\x01=\x01\x17\x1632?\x01\x17\x167\x16\x06\x0f\x01\x06/\x0176\x17!6\x1f\x01\a\x06/\x01.\x017\x01\xaa\a\x06\x89\x0e\n\xd9\x0f\x10\xd8\n\x0e\x89\x06\a\x1c\x0e@@\x0e\xf0\x04\x06\b\xc6\f\x06\\\xfa\f\x05\xfd\xea\x05\f\xfa\\\x06\f\xc6\b\x06\x04\xc0\x02'\xb2\v\x11\x036\x04\x046\x03\x11\v\xb2'\x02\x17kk\x17p\a\x0e\x028\x04\v\x98 \x01\n\n\x01 \x98\v\x048\x02\x0e\a\x00\x00\x00\x04\xff\xfe\xff\xe0\x02\x00\x01\xa0\x00\x14\x00\x1c\x00$\x00,\x00\x00\x122\x16\x14\x06#\"'\x06#\"&'&>\x027&54\x16264&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x14\x96Ԗ\x96j83AL\x02\x04\x01\x02\a\x11\x1c\x069s\x1a\x13\x13\x1a\x13\x93\x1a\x13\x13\x1a\x13\x93\x1a\x13\x13\x1a\x13\x01\xa0z\xacz\x133\x03\x02\x05\a\x151\x169JVv\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x00\x00\x02\xff\xf9\xff\xb9\x02\x81\x01\xc7\x00\x0f\x00$\x00\x00747\x05\x06#\"'\x06#\"&767&\x05\x1e\x01\x0f\x01\x06'\x01&?\x016\x1f\x01632\x16\x15\x14\a@\t\x01E&(83AL\x05\x04\x03,\v9\x02:\x05\x02\x04\x14\n\f\xfd\xb3\f\t\x14\n\riI`j\x969\xd0\x1a\x1c\xfc\n\x133\n\x044+9\x90\x04\r\x05\x1a\f\n\x01\xc6\n\r\x19\f\tR5zVH:\x00\x00\x00\x02\x00\x00\x00\x00\x02\x80\x01\x80\x00\x11\x009\x00\x0074&+\x01463!2\x16\x15#\"\x06\x1d\x01!%2\x16\x15\x14\a\x15\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&=\x01&546;\x012\x16\x1d\x01!5463\xa0&\x1a 8(\x01@(8 \x1a&\xfe\xc0\x01\xa0\x1a& \t\a@\a\t\xfe\x80\t\a@\a\t &\x1a \r\x13\x01\x80\x13\r\xe0\x1a&(88(&\x1a@`&\x1a$\x13y\a\t\t\a\x10\x10\a\t\t\ay\x13$\x1a&\x13\r``\r\x13\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\a\x00F\x00h\x00\x00$\"&462\x16\x14'\x0e\x01\x15\x14\x16\x1f\x01\x16\x15\x14\x06+\x01\"&\x0f\x01\x06\x14\x17\x16\x17\x15\x14\x16;\x0126=\x01>\x0154&/\x01&546;\x012\x16?\x016&'&'54&+\x01\"\x0e\x01\x15\x132\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x16\x17#\"\x1d\x01\x143!2=\x014+\x0167\x01V\xaczz\xacz\xe6\x19\"\x18\x13?\f\n\a&\n\x10\x06\x10\x04\x05\x13\x18\t\a\v\a\n\x19\"\x18\x14>\f\n\x06'\n\x10\x06\x10\x04\x01\x04\x13\x18\n\x06\f\x04\b\x04\xf6\r\x13\x13\r\xfe@\r\x13\x13\r \x1e+?\n\n\x01l\n\n@,\x1e z\xaczz\xac\xc5\x01$\x1a\x15!\x06\x13\x03\x0e\b\n\n\x06\x10\x04\n\x03\x0e\x01\x11\a\n\n\a\x10\x01$\x1a\x15!\x06\x13\x03\x0e\b\n\n\x06\x10\x04\n\x03\x0e\x01\x11\a\n\x04\b\x05\xfe\xf1\x13\r`\r\x13\x13\r`\r\x13'\x19\b\x10\b\b\x10\b\x19'\x00\x03\xff\xfe\xff\xbf\x02\x00\x01\xc3\x00\t\x00)\x001\x00\x00\x01&'676\x16\x17\x16\x1773\a\x15\x14\x06+\x01\a\x06#&'&6?\x01&'&54762\x17\x1e\x01\x17546\x16264&\"\x06\x14\x01 N5\x11 \a\x13\x02\n,pp ^BMA\n\fk.\x05\x06\b\x90\x16\x11U\x1a\x04\x15\x04\x1e}N/\x1a\x0e\t\t\x0e\t\x01\x19\x10;1%\b\x06\nE8K@\xa0B^8\b\x04H\a\x10\x02$\x10\x11Qh=7\t\nEX\x05\x01\x17\x1e\x01\x0f\x01\x06\"\x05\x16\x06\x0f\x01\x06#!\"&=\x0146;\x0176;\x012\x16\a\x0e\x01+\x01\"\x06\x14\x16;\x012?\x0162\x01\x13m\x17\x03\x1a\x17=\x15\v\v\x16<\x17\x1b\x03\x18m\x06\x0e\x01\x1c\f\x01\f\x97\x12\x16\xfe\x9b\a\t\t\a7/ *\xa0\x0f\x13\x02\x02\x14\fN\a\t\t\av\x17\x11]\t\x18\xc6r\x18H\x16\x14\x05\x16\f\f\x16\x05\x14\x16H\x18r\x06H\n\x1e\ty\x0e\t\a`\a\t&\x1a\x17\x0e\f\x0f\t\x0e\t\x0eJ\b\x00\x00\x00\x02\x00\x00\xff\xc0\x02A\x01\xc0\x00E\x00o\x00\x00\x01.\x01'&67546;\x012\x16\x1d\x01\x16\x17\x16\x15\x14\a\x14\x0f\x01\x06'&+\x01\"\x15\x14\x1f\x01\x1e\x02\x17\x16\x06\a\x15\x14\x0e\x01+\x01\"&=\x01&'&5474?\x016\x17\x16;\x01254'\x17\x16\x15\x14\x0f\x01\x06#!\"&=\x0146;\x017>\x01;\x012\x16\x15\x14\x15\x0e\x01+\x01\"\x06\x14\x16;\x012?\x0162\x01\x0f\x12\x1a\x03\x03 \x19\n\a\x12\a\n\x13\x10\x05\x02\x02\x13\x06\t\x05\x06$\t\a6\f\x14\r\x02\x03 \x19\x05\b\x04\x12\a\n\x13\x10\x05\x02\x02\x13\x06\t\x05\x06$\t\a\xf0\v\f\x97\x12\x16\xfe\x9b\a\t\t\a7/\r,\x11\xa0\r\x13\x02\x14\fN\a\t\t\av\x17\x11]\t\x18\x010\x05\x19\x11\x18%\x02\x12\a\t\t\a\x12\x02\t\x04\x06\x03\x03\x01\x02\x11\x06\x04\x02\b\a\x01\x0f\x03\x0e\x13\v\x18%\x02\x12\x04\b\x04\t\a\x12\x02\t\x04\x06\x03\x03\x01\x02\x11\x06\x04\x02\b\a\x01\xa9\n\x0e\x0f\ny\x0e\t\a`\a\t&\v\x0f\x13\r\x03\x02\f\x0f\t\x0e\t\x0eJ\b\x00\x02\x00\x00\xff\xc0\x02\x80\x01\x80\x00\"\x00E\x00\x007\x17\x16\x1d\x01\x14\x06+\x01\"'&/\x01&=\x01462\x16\x1d\x01\x17\x162?\x016/\x01&>\x01\x16$2\x16\x1d\x01\x14\x0f\x01\x06\a\x06+\x01\"&=\x014?\x01>\x01\x1e\x01\x0f\x01\x06\x1f\x01\x162?\x0154\xcd9\x1a\t\a\x84\f\x03\x03\ai\n\x13\x1a\x13Z\x04\x0e\x05\r\n\b&\b\x03\x16\x1a\x01\x8e\x1a\x13\ni\a\x03\x03\f\x84\a\t\x1a9\b\x1a\x16\x03\b&\b\n\r\x05\x0e\x04Z\xdaM\"+p\a\t\f\f\t\x87\r\x11\xda\r\x13\x13\r\x94l\x06\x05\r\t\v3\v\x1a\x10\x04\x9c\x13\r\xda\x11\r\x87\t\f\f\t\ap+\"M\n\x04\x10\x1a\v3\v\t\r\x05\x06l\x94\r\x00\x00\x00\x00\x02\xff\xfd\xff\xbd\x02\x83\x01\xc3\x00%\x00@\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\x14\x06+\x01\a\x06&/\x01&6?\x0154?\x01\x15\x14\x1626=\x01%\x16\x06\x0f\x0154&+\x01\x15\x14\x06\"&=\x014?\x016;\x0176\x16\x17\x01\xe8\n\x0e\x0e\n\b\x13\r\x10&\x1a\x89g\v\x1a\aP\x06\a\vP\x1fA*<*\x01,\x06\a\vP!\x17\xb8\x17\"\x17\x0f!\x10\x12gg\v\x1a\a\x01\x00\x0e\n0\n\x0e@\r\x13\x1a&<\x06\a\v\x8b\v\x1a\x06.0$\x13'z\x1e**\x1e8%\v\x1a\x06.\x1c\x17!X\x11\x17\x17\x11~\x12\t\x15\n<\x06\a\v\x00\x00\x00\x01\xff\xff\xff\xc0\x02\x01\x01\xc0\x005\x00\x00\x01\x16\x06+\x01\a\x16\x1d\x01\x14\x0e\x01+\x01\"&=\x0147'#\"&7>\x027\x06\x15#\x176;\x015#462\x16\x15#\x1532\x177#4'\x1e\x01\x02\x00\x01\n\a\t\x89\x02\t\x0e\t\x80\r\x13\x02\x89\t\a\n\x01\x04.C)>\x1ct\a\x010pQ^Qp0\x01\at\x1c>?X\x01\x11\a\n\x98\x06\x02\x80\t\x0e\t\x13\r\x80\x02\x06\x98\n\a$A,\x0eDl\x82\x02\x80RnnR\x80\x02\x82lD\x15T\x00\x00\x00\x00\x05\xff\xfd\xff\xbd\x02\x83\x01\xc0\x00\a\x00\x0f\x00\x1a\x00e\x00n\x00\x00\x12\"&462\x16\x14\x04\"&462\x16\x14\x13\x16\x06\a\x06#\"/\x01?\x02\x16\x0f\x02\x0e\x02#\"#.\x01?\x016?\x01'\a\x06\x0f\x01\x06\a#&/\x01&/\x01\a\x17\x16\x1f\x01\x16\x06\a\"#\"&/\x02&?\x01676\x17\x16\x1f\x02546;\x012\x16\x1d\x01?\x01676\x17\x16\x17\x05\x1f\x01\a\x0e\x01.\x017\x94(\x1c\x1c(\x1c\x01d(\x1c\x1c(\x1cN\x05\v\f\x06\x06\x16\b\x1b\x02)\n\a\x16C\n\x01\t\x0e\b\x01\x03\r\x10\x01\n\x03\r+\x11\a\x06\x133\x06\v\xa0\v\x063\x12\a\a\x11+\r\x03\n\x01\x10\r\x03\x01\f\x12\x02\nC\x16\a\x13\a\x1e\x1d\x1b$\r\v\x10\t\a\xa0\a\t\x10\v\r#\x1b\x1e\x1e\a\xfd\xe5)\x02\x1b\x05\x18\x19\v\x05\x01`\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\xfep\f\x19\x05\x02\x14E\x13.d \x19L]\b\r\a\x02\x14\x0e\\\x14\x0f1G\x15\x13\r!\x04\x01\x01\x04!\r\x13\x15G1\x0f\x14\\\x0e\x14\x02\x10\f]L\x19 P \r\f\x0f\x15'\"\n`\a\t\t\a`\n\"'\x15\x0f\f\r \xb4.\x13E\f\v\n\x19\f\x00\x00\x00\x03\xff\xfd\xff\xc0\x02@\x01\xc0\x00C\x00K\x00Z\x00\x00%2\x16\x1d\x01\x14\x06+\x01\x06\a\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&=\x01.\x025#\"&7>\x0232\x1d\x01\x14+\x01\"\x0e\x01\a\x06\x16;\x01>\x01;\x012\x176;\x01\a\x16\x17\x06264&\"\x06\x14'\"\a4&5462\x16\x15\x141&#\x020\a\t\t\a1\r\x12\t\a@\a\t\x80\t\a@\a\t\x13\x1d\x10(\x19\"\x03\x02\x11\x19\x0e\x06\x06\x01\x06\n\a\x02\x02\x0f\v+\vX:\x80\a\x10\x1d, \x13\x18\ri\x0e\t\t\x0e\t\xa0\x17\x18\x018P8\v\x05\xe0\t\a\x80\a\t\x12\rQ\a\t\t\a00\a\t\t\aQ\x0e'0\x1a&\x19\x0e\x17\f\x06\x14\x06\x05\t\x05\f\x117I\x02\"L\x16\x1e@\t\x0e\t\t\x0e\xb7\x06\x01\x04\x01(88(\x01\x01\x00\x00\x00\x00\x02\xff\xfe\xff\xb8\x01\xc2\x01\xc1\x00\b\x00)\x00\x00?\x01\x17\a\x06/\x01.\x01%\x16\x06\x0f\x01\x06'\x03.\x014>\x01?\x016762\x17\x16\x1f\x01\x16\x06\x0f\x01'67&\"\a\x06uO[\x0e\x12D\t\x03\x01\xbb\a\x02\tE\x12\r\xf9\r\f\a\x05\x02,\x06\n\"k\x1f\n\x06,\x11\a\x15\"O4\x04!Z!\x04\x82Xf\x10\f\x1c\x06\x16\b\b\x16\x06\x1c\f\x10\x01\x13\x0f#\x1b\x1b\t\x03I\f\x06\x16\x16\x06\fI\x1c@\x17&W;\x06\x12\x12\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x00&\x00.\x00;\x00C\x00\x00%2\x16\x14\x06#!673264&+\x01\"&46;\x01&5462\x16\x15\x14\x06\x0f\x01#\"\x06\x14\x163\x12\"\x06\x14\x16264\x042\x16\x15\x14\x06\x0f\x01.\x0254\x16264&\"\x06\x14\x01\xa0(88(\xfe\xea\x1b\x15\xe6\r\x13\x13\r`(88(--8P80\x18\x18`\r\x13\x13\rm\x1a\x13\x13\x1a\x13\xfexP80\x18\x18\v 5S\x1a\x13\x13\x1a\x13\x808P8!\x1f\x13\x1a\x138P8@ (88(\x18P\x1c\x1c\x13\x1a\x13\x01\x00\x13\x1a\x13\x13\x1a\xad8(\x18P\x1c\x1c\f&V\x18(H\x13\x1a\x13\x13\x1a\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x1a\x00\x00\x132\x16\x1d\x01\x14\x06+\x01\"&=\x01\"&5%3\x14\x06\a&'>\x03@]\x83\t\a \a\t]\x83\x01\xc0@tU\x10+\x0f)2;\x01`\x83]\x90\a\t\t\a\x90\x83]@V\x80\t=/\x1a*\x1e\x11\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00#\x00'\x00\x00\x012\x16\x1d\x01\x14\x06#!\x11\x14\x06+\x01\"&5\x11#\"&=\x0146;\x01546;\x012\x16\x1d\x01\x135!\x15\x01\xf0\a\t\t\a\xfe\x90\t\a \a\t0\a\t\t\a0\t\a \a\t \x01@\x01\x80\t\a \a\t\xfe\x90\a\t\t\a\x01p\t\a \a\t0\a\t\t\a0\xfe\xc0\xe0\xe0\x00\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\"\x00/\x00\x00<\x0162\x16\x14\x06\"\x124&\"\x06\x14\x1627\x17\x166'.\x03#\"\x06\a\x06\x16?\x0162\a&\x0e\x01\x17\x16276&\a\x06\"\x91Α\x91\xce7\x13\x1a\x13\x13\x1a\xb1\n\x06\x0f\x01\x01\f\x11\x14\n\x14%\x03\x01\x0f\x06\n\v&\xbd\a\x12\x05\x05-\x8c-\n\x19\n#nYΑ\x91Α\x01\x1b\x1a\x13\x13\x1a\x13\x10\t\x06\b\t\t\x10\v\x06\x18\x12\t\b\x06\t\to\b\x04\x10\b66\f\x14\f*\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\a\x00\x19\x00!\x00\x00\x122\x16\x14\x06\"&4\x052\x16\x1d\x01\x14\x06#!\"&462\x16\x15\x14\a&264&\"\x06\x14\xc64&&4&\x01\xd0\a\t\t\a\xfep]\x83\x83\xba\x83C\xc5P88P8\x01\x00&4&&4\xba\t\a \a\t\x83\xba\x83\x83]^B@8P88P\x00\x03\xff\xfe\xff\xbe\x02\x80\x01\xc0\x00\x16\x00)\x001\x00\x007'&>\x01?\x01\x177'72\x1e\x02\x1f\x01\x16\x06\x0f\x01\x06&\x01!\x11\x14\x06#\"&'\x05\x06/\x01&7%\x1146\x12264&\"\x06\x1421\x02\x03\x06\x04M\x19>\x19M\x03\a\x05\x04\x012\x01\x06\a\xd8\a\v\x01L\x01\x00B.-A\x02\xfew\b\x02\r\x02\b\x01Z\x13\x89(\x1c\x1c(\x1cH\xba\x04\b\x06\x02\x14\\\x10]\x15\x01\x03\x05\x03\xb9\a\v\x02:\x02\a\x01~\xfep.B?-l\x02\b.\b\x02^\x01D\r\x13\xfe@\x1c(\x1c\x1c(\x00\x00\x05\x00\x00\xff\xe0\x02\x80\x01\xa0\x00)\x001\x009\x00?\x00G\x00\x00%\x16\x1d\x01\x14\x06+\x01\x16\x15\x14\x06\"&547#\x16\x15\x14\x06#\"'\x06#\"&5\x11463!2\x16\x1d\x0132\x17\x04264&\"\x06\x14\x16264&\"\x06\x14%\x153'&#\x06264&\"\x06\x14\x02m\x13\t\a\x12\x02/B/\x02\xa4\x02/!(\x18\x18(!/\x13\r\x01\xa0\r\x13&\x1a\x13\xfe\x10\x1a\x13\x13\x1a\x13\x93\x1a\x13\x13\x1a\x13\x010\\+\x05\x06\x03\x1a\x13\x13\x1a\x13\xd3\x13\x1aV\a\t\b\b!//!\b\b\b\b!/ /!\x01P\r\x13\x13\r`\x13\xfd\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\xcd0+\x05\xe0\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x02\xff\xf9\xff\xb9\x02\x81\x01\xc7\x00\x1e\x00&\x00\x00\x05\x1e\x01\x0f\x01\x06/\x01\x01'&?\x016\x1f\x0132\x16\x1d\x01\x17576\x16\x15\x11\x14\x06\a%5\x01\x06#!\"&\x02z\x05\x02\x04\x14\n\r\xb2\xfe\x8b%\f\t\x14\n\rN\xf4\x14\x1c n\x10\"\x11\f\xfd\xdd\x01n\r\x11\xfe\xe0\x14\x1c\n\x04\r\x05\x1a\f\t\x8a\x01!\x1c\n\r\x19\f\t=\x1c\x14\xb2\x18\x89K\v\x11\x14\xff\x00\r\x12\x01\x10\xf5\xfe\xe5\n\x1c\x00\x00\x00\x00\x01\xff\xfb\xff\xc0\x01%\x01\xc0\x00\x1e\x00\x00\x172\x16\x15\x14+\x01\"546;\x015.\x01?\x014>\x01;\x012\x16\x15\x17\x16\x06\a\x15\xd8\x11\x17\b\xd0\b\x17\x11(4@\x05\x10\x04\a\x04\xe0\x06\t\x10\x05@4\x10\x17\x11\b\b\x11\x17u\fW7\xb2\x05\x06\x04\b\a\xb27W\fu\x00\x00\x00\x02\xff\xf9\xff\xb9\x02\x81\x01\xc7\x00\x17\x00!\x00\x00\x05\x1e\x01\x0f\x01\x06'\x01&?\x016\x1f\x01>\x0132\x16\x15\x14\x0e\x01\x0f\x013\x17!\"&=\x0146\x02z\x05\x02\x04\x14\n\f\xfd\xb3\f\t\x14\n\r\x87\fM2\x0132\x1e\x02\x1732\x16\x1d\x01\x14\x06+\x01\x0e\x01\"&'7\x15\x14\x16;\x0126=\x014&+\x01\"\x06\x17/\x01?\x01\x1f\x01\a\x17\x1e\x01\x1d\x01\x14\x06+\x0154&+\x01\"\x06\x1d\x01#\"&=\x01467\x162\x062\x16\x14\x06\"&4&2\x16\x1d\x01#54@\a\t\t\a\x0e\x12P0\x18.%\x1e\t\x0e\a\t\t\a\x0e\x12P`P\x12\x1a8(0(8\x1c\x14\x90\x14\x1cH\f$$\f\f$$\x8c3E\x1c\x14P\x13\r\x80\r\x13P\x14\x1cE30p\x0f\x0e\t\t\x0e\tW\x0e\t \xe0\t\a`\a\t+5\x0e\x19$\x15\t\a`\a\t+55+X\x18(88(\x18\x11\x17\x17Y$\f\f$$\f\f\x95\x06L3\n\x14\x1c@\r\x13\x13\r@\x1c\x14\n3L\x06\x1f`\t\x0e\t\t\x0e\t\t\a00\a\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x85\x01\xc0\x00\a\x00\x1b\x00+\x00\x00$\"&462\x16\x14\a2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x1627%\x16\x0f\x01\x06/\x01&?\x016\x1f\x0176\x17\x01\x15jKKjK&7O\x1c\x14\xfe\xa0\x14\x1cO7\x11#L#\x01T\b\t\x8d\b\tQ\t\t\x1c\b\t-i\t\b\xc0KjKKjkO7*\x14\x1c\x1c\x14*7O\x10\x10\x80\b\b\x8d\b\tR\b\t\x1b\t\t-h\b\t\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\a\x00\x17\x00+\x003\x00\x00$2\x16\x14\x06\"&4\x1754+\x0154+\x01\"\x1d\x01\x14;\x012'\x14\x16\x17!\"&=\x0146;\x01\x162732\x17\x06&\"&462\x16\x14\x01\xb4xTTxT\xd0\n&\n\f\n\n<\n\xf0(#\xfe\xa5\x14\x1cO7\x11#L#\x11\v\r\x12+jKKjK\xe0TxTTxB\f\n6\n\nL\n\x10,L\x18\x1c\x14*7O\x10\x10\x02&HKjKKj\x00\x04\x00\x00\xff\xc0\x02\x82\x01\xc0\x00;\x00C\x00K\x00v\x00\x00%\x17\x16\a\x06\a\x06/\x01\x06\a\x15\x14\a\x06'&=\x01&'\a\x06'&'&?\x01&7'&7676\x1f\x01675476\x17\x16\x1d\x01\x16\x1776\x17\x16\x17\x16\x0f\x01\x16\x06264&\"\x06\x14&\"&462\x16\x14\x13\x15\x14\x17\x06#!\"&=\x0146;\x01\x162732\x163\x14\x06\x15\x06\x16\x1f\x01\x06\x17\a\x0e\x01\x17\x16\x17\x1632?\x01\x16\x02b\x1a\x05\x01\n\x18\x04\x05\x19\x11\x14\x06!!\x06\x14\x11\x1a\x05\x04\x17\n\x02\x06\x19\x04\x04\x19\x05\x01\n\x17\x04\x05\x1a\x11\x14\x06!!\x06\x14\x11\x19\x05\x04\x18\n\x01\x05\x1a\x04\x8a(\x1c\x1c(\x1c\xabjKKjKI\x02\f\x0f\xfe\xa0\x14\x1cO7\x11#L#\x11\x02\b\x01\x03\x04\n\f\b\x01\x01\b\f\n\x04\f\x1c\f\x11\n\t\b\x05K\x0f\x03\x06 \x19\x04\x02\x0f\x0e\a\x1e\x06\x01\a\a\x01\x06\x1e\a\x0e\x0f\x02\x04\x19 \x06\x03\x0f\x15\x15\x0f\x03\x06 \x19\x04\x02\x0f\x0e\a\x1e\x06\x01\a\a\x01\x06\x1e\a\x0e\x0f\x02\x04\x19 \x06\x03\x0f\x150\x1c(\x1c\x1c(tKjKKj\xfe\xd3\n\x05\a\b\x1c\x14*7O\x10\x10\x01\x01\x06\x02\r\x1a\a\x04\x04\x04\x05\a\x19\r'\x1f\f\x05\x04\x03\x00\x00\x00\x04\x00\x00\xff\xbf\x02\x80\x01\xc0\x00\a\x00\x1c\x00$\x00/\x00\x00$\"&462\x16\x14\a2\x17\x0f\x03\x06\x17!\"&=\x0146;\x01\x1627\x177\x17\x0f\x01\x06&7%\x16\x14\x0f\x01'?\x0162\x17\x01\x15jKKjK&;)N\b\x01\a\x01\x04\xfe\xed\x14\x1cO7\x11#L#>\x8aG\x89=\b\v\x01\x01\x19\a\a*H\x05%\a\x14\a\xc0KjKKjk.M\b\v=\n\v\x1c\x14*7O\x10\x10\x91\x89G\x8a\a\x01\v\b\xe1\a\x14\a*H\x04&\a\a\x00\x00\x00\x04\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\a\x00\x1b\x00#\x007\x00\x006\"&462\x16\x14\a2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x1627$\"&462\x16\x14\a2\x16\x15\x14\x06+\x0146=\x014'6;\x01\x1627\xee\\BB\\B#0C\x1c\x14\xfe\xe0\x14\x1cC0\t!F!\x01\x04P88P80.B\x1c\x14\xb1\x01(\x1b\x1d\x04\x17*\x17\xc0B\\BB\\bC0\x1d\x14\x1c\x1c\x14\x1d0C\x10\x10 8P88PXB.\x14\x1c\x01\x04\x01'9+\x0f\b\b\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc3\x00\x10\x00:\x00\x00%\x1e\x01\x1d\x01\x14\x06#!\"&=\x01467\x17\x03&4?\x016\x1f\x01\x16\x14\x0f\x01\x16\x15\x14\x06\"&547'\x15\x16\x15\x14\a\x17\x16\x0e\x01+\x01\"&?\x01&5475\x01?6K\x1c\x14\xfe\xa0\x14\x1cK6_\xd2\x0e\x0e\xbe\x14\x14\xbe\x0e\x0e`\x0eKjK\x0eB\f\v\x0f\x01\x01\x04\x03*\x04\x05\x02\x0f\v\f\u007f\x02M6\n\x14\x1c\x1c\x14\n6M\x02_\x01P\x03\x1a\x03.\x04\x04.\x04\x19\x03\x17\x1c\x1d5KK5\x1d\x1c\x105\a\r\f\b>\x04\x06\x04\t\x05>\b\f\r\a;\x00\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\a\x00\x1b\x003\x00;\x00C\x00\x00$\"&462\x16\x14\a\x15\x14\x17!\"&=\x0146;\x01\x162730\x17\x06%2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015462\x16\x1d\x01\x06264&\"\x06\x14754&\"\x06\x1d\x01\x01\x15jKKjK \t\xfe\xe7\x14\x1cO7\x11#L#\x11\x0e\b\x01 \r\x13\x13\r\xe0\r\x13\x13\r /B/]\x1a\x13\x13\x1a\x13@\x13\x1a\x13\xc0KjKKj\x8b\xa0\x11\x0f\x1c\x14*7O\x10\x10\x02\x0e\x10\x13\r\xa0\r\x13\x13\r\xa0\r\x13P!//!P\x90\x13\x1a\x13\x13\x1a}P\r\x13\x13\rP\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x0f\x00\x17\x00+\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x06\"&462\x16\x14\a2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x1627\x02p\a\t\t\a\xc0\a\t\t\a\x9bjKKjK&7O\x1c\x14\xfe\xa0\x14\x1cO7\x11#L#\xf0\t\a \a\t\t\a \a\t0KjKKjkO7*\x14\x1c\x1c\x14*7O\x10\x10\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x10\x00%\x00-\x00\x00%\x1e\x01\x1d\x01\x14\x06#!\"&=\x01467\x17'47&52\x17>\x0332\x16\x14\x06#\"&'\x067\"\x06\x1534&#\x01E4G\x1c\x14\xfe\xa0\x14\x1cG4e\xc0++1\x1d\a\x18\x1d#\x135KK5,C\f\x1cg\r\x13\xa0\x13\r\x9f\x05L4*\x14\x1c\x1c\x14*4L\x05f\xc73\x1d\x1d3(\x10\x1b\x12\vKjK5)\x1e`\x13\r\r\x13\x00\x00\x00\x04\x00\x00\xff\xbd\x02\x80\x01\xc0\x00\x12\x00\x17\x00\x1f\x007\x00\x00%\x16\x15\x14\x0e\x03\a\x06'.\x0154?\x016\x17\a>\x017'&\"&462\x16\x14\a\x14\x16\x17\x06#!\"&=\x0146;\x01\x162732\x1630\x06\x02n\x12\x12\x1c$\"\x11\v\v5P\x12s\v\v\v!;\x04`\xdbjKKjK 7,\t\n\xfe\xa0\x14\x1cO7\x11#L#\x11\x01\x05\x01\x01\xb1\a\x12$@/&\x16\a\x04\x04\x15sN\x12\a-\x04\x04\xec\x0fN:&\x11KjKKjsDm#\x04\x1c\x14*7O\x10\x10\x01\x06\x00\x00\x00\x00\x02\xff\xf9\xff\xb9\x02\x81\x01\xc7\x00\x17\x00!\x00\x00\x05\x1e\x01\x0f\x01\x06'\x01&?\x016\x1f\x01>\x0232\x16\x15\x14\x06\a\x054>\x017\x05!\"&5\x02z\x05\x02\x04\x14\n\f\xfd\xb3\f\t\x14\n\r\x93\x03#8!5K0&\xfe\xf6\x1d3\x1f\x01\x1f\xfe\xa2\x14\x1c\n\x04\r\x05\x1a\f\n\x01\xc6\n\r\x19\f\tr 6\x1fK5)B\r\xae 9%\x06\xde\x1c\x14\x00\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x11\x00\x1d\x00+\x00@\x00\x00%\x16\x14\x0f\x01\x06\"/\x01&=\x0146;\x012\x17\a2>\x014.\x01#\"\x06\x14\x16'\".\x0154632\x1e\x01\x15\x14\x06\x17\x14\x1f\x01\x06#!\"&=\x0146;\x01\x162732\x17\x02w\t\n\\\t\x1b\t[\x12\x12\x0eO\x1b\x12\\\x06\v\a\a\v\x06\n\x0e\x0e\xd6#;\"K5#;\"KK\x1c:\x0f\x17\xfe\xa0\x14\x1cO7\x11#L#\x11\x11\x15S\t\x1b\t]\t\t[\x12\x1bO\r\x13\x13E\a\v\r\v\x06\x0e\x14\x0eX\";#5K\";#5Ko(\x1c:\x13\x1c\x14*7O\x10\x10\x06\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\a\x00\x1d\x00\x00$\"&462\x16\x14\a\x1e\x01\x1d\x01\x14\x06#!\"&=\x01467\x177'3\a\x17\x01\x15jKKjK 5K\x1c\x14\xfe\xa0\x14\x1cK50 ` \xc0KjKKjl\x02N5*\x14\x1c\x1c\x14*5N\x02\xbf\x8888\x88\x00\x00\x00\x06\x00\x00\xff\xe0\x02\x82\x01\xa0\x00;\x00C\x00K\x00b\x00\x85\x00\x93\x00\x00%\x17\x16\a\x06\a\x06/\x01\x06\a\x15\x14\a\x06'&=\x01&'\a\x06'&'&?\x01&7'&7676\x1f\x01675476\x17\x16\x1d\x01\x16\x1776\x17\x16\x17\x16\x0f\x01\x16\x06264&\"\x06\x14$\"&462\x16\x14\x17\"&5462\x16\x15\x14\a\"\x06\a'&#\"\a\x06\a\"\a\x17\x15\x14\x17#\"&=\x0146;\x01\x1632363\x16\x1f\x01\x06\x170#\x06\x17\x16\x17\x163273'\x0e\x01\a#\"&=\x0146;\x012\x02b\x1a\x05\x01\n\x18\x04\x05\x19\x11\x14\x06!!\x06\x14\x11\x1a\x05\x04\x17\n\x02\x06\x19\x04\x04\x19\x05\x01\n\x17\x04\x05\x1a\x11\x14\x06!!\x06\x14\x11\x19\x05\x04\x18\n\x01\x05\x1a\x04\x8a(\x1c\x1c(\x1c\xfe\xba4&&4&\xa0.BA]B\v\x01\x01\x01\b\t\n\x11\f\x17\r\x01\x02f\x06\xff\x14\x1cD/\t!#\x02\x05\x02\x01\x04\x06\b\x01\x01\x01#\n\f\x1c\f\x11\v\x10\x01\xf6\x1e(\x05B\r\x13&\x1a@\x1ak\x0f\x03\x06 \x19\x04\x02\x0f\x0e\a\x1e\x06\x01\a\a\x01\x06\x1e\a\x0e\x0f\x02\x04\x19 \x06\x03\x0f\x15\x15\x0f\x03\x06 \x19\x04\x02\x0f\x0e\a\x1e\x06\x01\a\a\x01\x06\x1e\a\x0e\x0f\x02\x04\x19 \x06\x03\x0f\x150\x1c(\x1c\x1c(t&4&&4FB..BB.\x19\x17\x01\x01\x05\x05\f\x19\"\x01\xc2\n\n\n\x1c\x14\x1d0C\x10\x01\x05\x04\x04\x04\x04\x12 '\x1f\f\t\xac\x10:#\x13\r \x1a&\x00\x00\x00\x00\x05\xff\xff\xff\xc0\x02\x80\x01\xc2\x00*\x00B\x00E\x00[\x00^\x00\x00!2\x16\x1d\x01\x14\x06+\x01\"&5\x11&'\a\x06&/\x01&6?\x01&54632\x1776\x16\x1f\x01\x16\x06\x0f\x01\x06\a\x11%\x14\x0e\x01#\"&505467>\x03762\x17\x16\x17\x16'3'\x05\x16\x17\x1e\x01\x15\x141\x14\x06\"&5054676762\a3'\x02\x10\a\t\t\a\xe0\a\t\a\x06\x8e\x06\f\x02\n\x03\x06\a\x80\x01/!.\x17v\x06\f\x02\n\x03\x06\a\x84\v \x01 \";#5K\n\x1e\x06\a\r\f\a\r<\rS\x01\x01ȐH\xfe\xab\x14\x1a\x1d\nKjK\n\x1e\x1a\x13\r\x00A\x00W\x00Z\x00\x00\x1746;\x01\x11&/\x01.\x01?\x01>\x01\x1f\x01632\x16\x15\x14\a\x17\x1e\x01\x0f\x01\x0e\x02/\x01\x06\a\x11\x14\x06+\x01\"&5'054676762\x17\x16\x17\x16\x15\x14\x06\"&73'\x01054676762\x17\x16\x17\x1e\x01\x15\x141\x14\x06\"&73'`\t\a\xb0 \v\x84\a\x06\x03\n\x02\f\x06v\x17.!/\x01\x80\a\x06\x03\n\x01\a\b\x04\x8e\x06\a\t\a\xe0\a\t`\n\x1c\x1b\x14\r<\rS\x01\x01KjK8\x90H\x01\x00\n\x1d\x1a\x14\r<\r\x13\x1a\x1e\nKjK8\x90H\x10\a\t\x01'\x0e!,\x03\v\a\x1e\x06\x06\x02'(/!\x02\b+\x02\f\x06\x1f\x04\x05\x02\x010\x04\x03\xfe\xa9\a\t\t\a\xc0\x01\t\x1596(\x1a\x1a\xa7\a\x02\x06!//1\x90\xfe\xe0\x01\t\x1695(\x1a\x1a&4<\x17\b\x01!//1\x90\x00\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x0f\x00\x17\x00;\x00?\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x16264&\"\x06\x14\x13\"\x1d\x01\x14;\x01\a#\"\x1d\x01\x14;\x01\a#\"\x1d\x01\x14;\x01\a!'#\"&=\x01463!\a\x053'#\x01\xa0\x1b%\x13\r\xfe\xc0\r\x13%\x1bs\x1a\x13\x13\x1a\x13H\b\b\x9e\x12\x8c\b\b\x84\x12r\b\bi\x11\xff\x00\tg\x14\x1c\x1c\x14\x01\xd0\x11\xfeQQ\vF@%\x1b \r\x13\x13\r \x1b%`\x13\x1a\x13\x13\x1a\x01\x8d\b\x10\b@\b\x10\b@\b\x10\b@`\x1c\x14\xa0\x14\x1c@\x80\x80\x00\x00\x00\x00\x02\x00\x00\xff\xdd\x02@\x01\xa1\x00\x11\x00\"\x00\x00\x016\x16\x15\x11\x14\x06#\x06\a\x06.\x015\x11476\a\x16\x15\x11\x14\x06'&'\"&5\x1146\x17\x16\x02\x1e\x0e\x14\x11\r\x8cO\x05\v\a\aM{\a\x0f\bO\x8c\r\x11\x14\x0e\x9a\x01\xa0\x01\x12\x0e\xfe\xae\f\x12\b'\x03\x02\t\x05\x01l\t\x04//\x04\t\xfe\x94\b\t\x04'\b\x12\f\x01R\x0e\x12\x01\t\x00\x00\x00\x00\x06\x00\x00\xff\xbe\x02\x80\x01\xc0\x00\x11\x00$\x009\x00K\x00i\x00l\x00\x00\x13\"'&476;\x012\x16\a\x06\x14\x17\x16\x06#'\x0e\x01\x16\x17\x16\x06+\x01\"'&476;\x012\x16%\x16\x14\a\x06+\x01\".\x017>\x01&'&>\x01;\x012\a2\x17\x16\x14\a\x06+\x01\"&764'&63\a\x13\x16\x06\x0f\x01\x06&/\x01#\a\x0e\x01/\x01.\x017\x13&54>\x012\x1e\x01\x15\x14\a3'\x97\f\x03\b\b\x03\f\"\b\t\x02\b\b\x02\t\b_\f\x0f\x04\x17\x04\t\t#\n\x04\x1b\x1a\x04\v#\t\t\x02\b\x1a\x1a\x04\v#\x06\t\x01\x02\x16\x05\x0f\f\x03\x02\t\x06#\vy\f\x03\b\b\x03\f\"\b\t\x02\b\b\x02\t\bR\x82\x03\x05\x06\x1e\x06\f\x031\x961\x03\f\x06\x1e\x06\x05\x03\x82\v\x11\x1e\"\x1e\x11p`0\x01\x00\v\x1a6\x1a\v\r\b\x15,\x15\b\r\xa9\x164]+\b\x0f\t9|9\t\x0f\x069|9\t\a\v\x06)[6\x17\x05\v\a@\v\x1a6\x1a\v\r\b\x15,\x15\b\rd\xfe\xc6\x06\f\x02\r\x02\x05\x06vv\x06\x05\x02\r\x02\f\x06\x01:\x10\x14\x11\x1e\x11\x11\x1e\x11\x14\xact\x00\x02\x00\x00\xff\xbd\x02\x87\x01\xc7\x00\x17\x00)\x00\x00%\x17\x14\x0e\x03\a\x0e\x01/\x016?\x016&\x0f\x0167>\x013%\x16\x0f\x01\x17\x16\x06\x0f\x01'7>\x01\x1f\x0176\x17\x01\x00W\x03\r\x0f\x1d\x10\x1b\x8565\x04\a_\x03\x06\x04<\x19\x1d\x1bQ\x1c\x01\x98\t\f\xe8\"\x03\x04\x06;V\x19\x03\f\x04\"\xe8\r\n\xe7m\x04\x0e)$*\r\x15\x11\x02\x02\x17 p\x04\b\x02\x16J\x17\x16\x14\xb9\r\t\xb2+\x05\f\x01\fm6\x06\x02\x05+\xb2\t\f\x00\x02\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\r\x00!\x00\x00\x13\x11#\x11463!2\x16\x15\x11#\x11\x132\x16\x1d\x01\x14\x06#!\"&=\x01463!53\x15`@\x17\x11\x01\xf0\x11\x17@P\a\t\t\a\xfd\xa0\a\t\t\a\x01\x10\xc0\x01\x80\xfe\xa0\x01x\x11\x17\x17\x11\xfe\x88\x01`\xfe\x80\t\a \a\t\t\a \a\t@@\x00\x00\x00\x00\x03\xff\xff\xff\xc0\x02\x80\x01\xc0\x00\x13\x00\x1b\x004\x00\x0072\x16\x15\x14\x06+\x01\"&54632\x17\x16276&\"&462\x16\x14\x012\x16\x15\x11\x14\x06+\x01&'353\x153\x11!\x15ᕗ\xd0/A\x1c\x14\xe0\x14\x1cA/\x04\x03\x15(\x15\x03\x04P88P8\x01P\x14\x1c\x1c\x14\xf5\t\x1eL\x80@\xfe\xa0\x1f!\x1c\x14`B/\x13\x1c\x1c\x13/B\x01\a\a\x01 8P88P\x01\b\x1d\x15\xfe\xc4\x15\x1d&\x1a@@\x01 2\x12.\x15\x1d\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x80\x01\xc0\x00-\x007\x00@\x00\x00%\x16\x1d\x01#54&\"\x06\x1d\x01#54?\x015#\"&=\x0146;\x01546;\x012\x16\x1d\x0132\x16\x1d\x01\x14\x06+\x01\x15\x0546?\x01\x15#\"&5%\x16\x1d\x01\x14\x06+\x015\x01\xd0\x10`%6%`\x10p0\a\t\t\a0\t\a \a\t0\a\t\t\a0\xfe\xa0\v\bmp\a\t\x02m\x13\t\ap\xc9\t\x12\xee`\x1b%%\x1b`\xee\x12\tD3\t\a \a\t0\a\t\t\a0\t\a \a\t3\xd9\t\x11\x03/\xc0\t\a\x81\b\x15d\a\t\xc0\x00\x00\x06\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\t\x00\x11\x00\x1f\x00(\x000\x008\x00\x005\x16 7\x15\x14\x06\"&5\x00\"&462\x16\x14\x05\x1e\x0132>\x017\x15\x14\x06\"&5%567\x15\x14\x0e\x02$2\x16\x14\x06\"&4\x05&'67\x15\x14\x06=\x01\x06=q\x9eq\x01\x8f\x9eqq\x9eq\xfe\x00\x1eh:&H>\x14q\x9eq\x01\xa0?!\x0e\x19#\xfe\xba\xa0pp\xa0p\x01\x9b\f0n37++++\x1a&&\x1a\x01@&4&&4\xd2\x19\x1b\v\x18\x114\x1a&&\x1a)?\v\x18+\t\x10\x0f\v\x93/B//B\t\"\x17\x05%+\x12\x1e\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00\x00\x122\x16\x14\x06\"&4\x174635\"\x06\x15\x16264&\"\x06\x1462\x16\x14\x06\"&4\x91Α\x91ΑX^BOq\x98P88P8S\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xcegB^ qO`8P88PH\x13\x1a\x13\x13\x1a\x00\x02\x00\x00\xff\xbc\x02\x80\x01\xc0\x00)\x001\x00\x00\x012\x16\x15\a\x15\x14\x06\a\x17\x16\x0f\x01\x06/\x01\"#\"+\x01\x17\x16\x0f\x01\x06/\x01#\a\x06&547\x0154632\x17\x06264&\"\x06\x14\x02 (8`M=)\x04\v\x16\f\x04,\x01\x02\x02\x01'&\x04\v\x16\f\x04,ay\x0f\x1d\f\x01t/!'\x19J\x14\x0e\x0e\x14\x0e\x01\xa0%\x1b\x10PAe\x12p\v\x04\b\x04\vxh\v\x04\b\x04\vx=\a\x11\x11\x0f\t\x01%\x15!/ H\x0e\x14\x0e\x0e\x14\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x0f\x00;\x00\x00!2\x16\x1d\x01\x14\x06#!\"&=\x01463\x002\x16\x14\x06#\"'\a!'\x06#\"&462\x16\x15\x14\a\x17\x166?\x01&5462\x16\x15\x14\a\x17\x1e\x01?\x01&54\x02\x10\a\t\t\a\xfe`\a\t\t\a\x01\xcc(\x1c\x1c\x14\x03\x05H\xfe\x80H\x05\x03\x14\x1c\x1c(\x1c\x04H\v\x1b\x06R\x12\x1c(\x1c\x12R\x06\x1a\fH\x04\t\a \a\t\t\a \a\t\x01@\x1c(\x1c\x01\xc1\xc1\x01\x1c(\x1c\x1c\x14\n\n+\a\a\v\x8f\x0f\x16\x14\x1c\x1c\x14\x16\x0f\x8f\v\a\a+\n\n\x14\x00\x00\b\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x10\x00\x18\x00(\x000\x008\x00@\x00H\x00P\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\"&=\x017>\x01'\x06264&\"\x06\x14'\x16\x14\x0f\x01\x06\"/\x01&4?\x0162\x17\x06264&\"\x06\x14\x16264&\"\x06\x146264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x14\x02P\x14\x1c\x1c\x14\xe0\x14\x1c\x88\x12\t\n\x03\x14\x0e\x0e\x14\x0e\x16\x0e\x0e\xaf\x0f(\x0f\xaf\x0e\x0e\xaf\x0f(\x0f\xad\x14\x0e\x0e\x14\x0e\x8e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x8e\x14\x0e\x0e\x14\x0e\x01\x00\x1c\x14\xe0\x14\x1c\x1c\x14.\x89\x121\x16\xb8\x0e\x14\x0e\x0e\x14\xad\x0f(\x0f\xaf\x0e\x0e\xaf\x0f(\x0f\xaf\x0e\x0e\xea\x0e\x14\x0e\x0e\x14\x8e\x0e\x14\x0e\x0e\x14r\x0e\x14\x0e\x0e\x14r\x0e\x14\x0e\x0e\x14\x8e\x0e\x14\x0e\x0e\x14\x00\x06\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x007\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x12264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x146264&\"\x06\x14\x01\x80\x1b%%\x1b\xfe\xc0\x1b%%\x1b3\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x01\xa0%\x1b\xfe\xc0\x1b%%\x1b\x01@\x1b%\xfe\xa0\x13\x1a\x13\x13\x1a\xad\x13\x1a\x13\x13\x1as\x13\x1a\x13\x13\x1as\x13\x1a\x13\x13\x1a\xad\x13\x1a\x13\x13\x1a\x00\x00\x05\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x12264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x146264&\"\x06\x14\x01\x80\x1b%%\x1b\xfe\xc0\x1b%%\x1b3\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\xd3\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x01\xa0%\x1b\xfe\xc0\x1b%%\x1b\x01@\x1b%\xfe\xa0\x13\x1a\x13\x13\x1a\xad\x13\x1a\x13\x13\x1a\xd3\x13\x1a\x13\x13\x1a\xad\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x17\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x12264&\"\x06\x14\x01\x80\x1b%%\x1b\xfe\xc0\x1b%%\x1b\x93\x1a\x13\x13\x1a\x13\x01\xa0%\x1b\xfe\xc0\x1b%%\x1b\x01@\x1b%\xff\x00\x13\x1a\x13\x13\x1a\x00\x00\a\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x007\x00?\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x12264&\"\x06\x146264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x146264&\"\x06\x146264&\"\x06\x14\x01\x80\x1b%%\x1b\xfe\xc0\x1b%%\x1b3\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\xd3\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x01\xa0%\x1b\xfe\xc0\x1b%%\x1b\x01@\x1b%\xfe\xa0\x13\x1a\x13\x13\x1aM\x13\x1a\x13\x13\x1aM\x13\x1a\x13\x13\x1a\xd3\x13\x1a\x13\x13\x1aM\x13\x1a\x13\x13\x1aM\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x17\x00\x1f\x00'\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x16264&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x14\x01\x80\x1b%%\x1b\xfe\xc0\x1b%%\x1b3\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13\x01\xa0%\x1b\xfe\xc0\x1b%%\x1b\x01@\x1b%\xa0\x13\x1a\x13\x13\x1as\x13\x1a\x13\x13\x1as\x13\x1a\x13\x13\x1a\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x17\x00\x1f\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x16264&\"\x06\x14\x16264&\"\x06\x14\x01\x80\x1b%%\x1b\xfe\xc0\x1b%%\x1b3\x1a\x13\x13\x1a\x13\xd3\x1a\x13\x13\x1a\x13\x01\xa0%\x1b\xfe\xc0\x1b%%\x1b\x01@\x1b%\xa0\x13\x1a\x13\x13\x1a\xd3\x13\x1a\x13\x13\x1a\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\a\x00\x0f\x00\x1f\x00\x0062\x16\x14\x06\"&46\"&462\x16\x14\x172\x16\x1d\x01\x14\x06#!\"&=\x01463\xc56%%6%[6%%6%\x80\r\x13\x13\r\xfe\x80\r\x13\x13\r`%6%%6\xe5%6%%6U\x13\r \r\x13\x13\r \r\x13\x00\x02\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x19\x00!\x00\x00!2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x11463!2\x16\x15\x11&264&\"\x06\x14\x02p\a\t\t\a\xfd\xa0\a\t\t\ap\x1c\x14\x01 \x14\x1cm\x1a\x13\x13\x1a\x13\t\a \a\t\t\a \a\t\x01\x8d\x15\x1e\x1e\x15\xfes\xa0\x13\x1a\x13\x13\x1a\x00\x00\x03\x00\x00\xff\xc0\x02\x80\x01\xc3\x00\x10\x00\"\x00*\x00\x00!2\x16\x1d\x01\x14\x06+\x01\x11#532\x16\x15\x11\x036\x16\x15\x11!\"&=\x0146;\x01\x11467\x16264&\"\x06\x14\x02p\a\t\t\a\x90`p\x14\x1c\xe8\x0f\x19\xfe\xb0\a\t\t\aP\x0e\n\x86\x14\x0e\x0e\x14\x0e\t\a \a\t\x01\x80@\x1d\x14\xfe\xb1\x01\xbf\x04\x14\x10\xfe!\t\a \a\t\x01m\v\x12\x03\xed\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x02\x00\x00\x000\x01\xc0\x01P\x00\x0f\x00\x1f\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x01463%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\xa0\r\x13\x13\r\xfe\x80\r\x13\x13\r\x01\x80\r\x13\x13\r\xfe\x80\r\x13\x13\r\x90\x13\r \r\x13\x13\r \r\x13\xc0\x13\r \r\x13\x13\r \r\x13\x00\x00\x00\x01\x00\x00\xff\xc0\x02\x05\x01\xc7\x00\"\x00\x00\x01\x1e\x01\x0f\x013\x06\x0f\x013\x0e\x02&'\a\x06\"&47\x016&\x0f\x01&67>\x017>\x01\x16\x01\xd3'\n!\x83b\b'\x93b\x1bGE:\x16B\a\x14\x0e\a\x01\x04\v\x17\v\xb3\x06\x1d)\a!.,_Q\x01\x93'g9,\b'1\x1a\x1f\b\x04\x06B\a\x0e\x14\a\x01\x03\f\x16\v\xb25t*\x06\"-,!\x13\x00\x00\x00\x02\xff\xff\xff\xe0\x02@\x01\xa0\x009\x00A\x00\x00\x01\x16\x17\x16\x15\x14\x06\x0f\x01\x1732\x16\x15\x14\x06+\x01'6.\x01'&\"\x0f\x01\x06\x16?\x016\x17\x1e\x01\x0f\x0132\x16\x15\x14\x06#!\"&54>\x037>\x012\x16\x06264&\"\x06\x14\x01\xbf:)\x1e\x11\r\x9ab6\r\x13\t\aZw\x02\x11\x11\t\x1bF\x1c#\f\x13\r #& \x14\x13#O\r\x13\t\a\xfe\xd0\x1a&\x1c5HX0\x06,:,S\x14\x0e\x0e\x14\x0e\x01_\x14\x16\x10#\x0e\x1e\aVi\x13\r\a\t~\x18,\x13\x06\x15\x15\x1a\n\x19\t\x19\x1a\x0f\x0eB\x1b0\x13\r\a\t%\x1a1]L<%\x04\x1d%%C\x0e\x14\x0e\x0e\x14\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x0f\x00@\x00D\x00\x00!2\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\x16\x1d\x01\x14\x06'.\x01=\x014&+\x01\x15!\x1146;\x012\x16\x1d\x0132\x16\x1d\x01\x14\x1626=\x01.\x01=\x01'&4?\x0162\x17\a5#\x15\x01P\a\t\t\a\xfe\xc0\a\t\t\a\x01\xdd\x13/!\x1b%\x17\x11\b\xfe\xe0&\x1a\xa0\x1a&\b$4\x0e\x14\x0e\x14\x1c&\x04\x04\f\x04\x0e\x04\x9c\xa0\t\a \a\t\t\a \a\t\x01U\x13\x1b\xdf +\x03\x03,\x1d\x1c\x11\x17p\x01`\x1a&&\x1a\xc04$ \n\x0e\x0e\n\xa1\x03\x1f\x15>&\x04\x0e\x04\f\x04\x04\xa6\x80\x80\x00\x00\x03\x00\x00\xff\xe0\x02@\x01\xa8\x00C\x00P\x00]\x00\x00%\x16\x1d\x01\x14\x06+\x01\"&/\x01#\a\x0e\x01+\x01\"&=\x014?\x01>\x01\x1f\x01\x1e\x01\x0f\x01\x0e\x01/\x01&\a\x06\x0f\x01632\x173632\x17'&'&\x0f\x01\x06&/\x01&6?\x016\x16\x17\x017&#\"\a\x15\x14\x16;\x0126%5&#\"\a\x17\x1e\x01;\x0126\x02>\x02C0%.B\x03\x03$\x03\x03B.%0C\x02-\nC$\x10\x06\x06\x02\x05\x02\f\x06\x0e\x12\x0f\x10\x04'));7J7;))'\x04\x10\x0f\x12\x0e\x06\f\x02\x05\x02\x06\x06\x10$C\n\xfe\xba\x04##%$\x1e\x15%\x14\x1e\x016$%##\x04\x01\x1e\x14%\x15\x1e\xa8\b\bF/C=,'',=C/F\b\b\xb5&%\r\x05\x02\f\x06\x0f\x06\x06\x02\x04\x06\a\t\x11\x9a\f\x1a\x1a\f\x9a\x11\t\a\x06\x04\x02\x06\x06\x0f\x06\f\x02\x05\r%&\xfe\xf1)\r\r%\x15\x1d\x1b\x17%\r\r)\x13\x1b\x1d\x00\x00\x00\x00\x01\xff\xfd\xff\xfd\x01\x81\x01\x83\x00\x17\x00\x00%\x16\x1d\x01\x14\x06\a\x05\x06&/\x01&6?\x01'.\x01?\x01>\x01\x17\x01n\x12\v\a\xfe\xcd\f\x19\x05\x0e\x06\t\f\xdb\xda\r\t\x06\x0e\x05\x19\f\xee\b\x15\"\t\x11\x03\x8f\x06\t\f\x1d\f\x19\x06ff\x05\x19\f\x1d\r\t\x06\x00\x00\x00\x00\x02\x00\x00\xff\xd0\x01\xc0\x01\xb3\x00\x18\x00(\x00\x00\x13.\x03?\x01>\x01\x17\x05\x16\x1d\x01\x14\a\x05\x06&/\x01&6?\x01\x172\x16\x1d\x01\x14\x06#!\"&=\x014637\a\n\x05\x01\x02\f\x05\x1b\r\x01.\x17\x17\xfe\xd3\x0e\x1b\x05\f\x05\r\r\xb0\xc1\n\x0e\x0e\n\xfep\n\x0e\x0e\n\x01T\x03\b\v\r\x06\x1e\f\f\x05x\a\x17\x10\x17\ax\x05\f\f\x1e\r\x18\x04D\xe0\x0e\n0\n\x0e\x0e\n0\n\x0e\x00\x00\x03\xff\xfe\xff\xc0\x02\x81\x01\xc0\x00&\x00,\x00>\x00\x00%\"/\x03&6;\x012\x1f\x0135#\"&=\x01463!2\x16\x1d\x01\x14\x06+\x01\x152\x16\x15\x14\x06#'\x153.\x02\x13\x16\x14\a\x06#!\"&=\x01463!26\x17\x010\x10\nV\xa0 \x01\t\b(\b\x05+а\a\t\t\a\x01\xa0\a\t\t\a\xb0]\x83\x13\r\xa0}\a#4\xbc\x05\x06!#\xfe\xba\a\t\t\a\x01F\r\x17\v@\rs@l\b\f\x06:@\t\a \a\t\t\a \a\t@\x83]\r\x13\xbc|\x1f4#\xfe\xff\x05\x0e\x04\x1e\t\a \a\t\x16\v\x00\x00\x00\x00\x03\x00\x00\x00 \x02\x80\x01`\x00\x11\x00\x1c\x00)\x00\x00\x012\x16\x14\x06#\"'\x06#\"&4632\x176\a27&#\"\x0e\x01\x15\x14\x16!2>\x0354&#\"\a\x16\x01\xd7FccFQFFQFccFQFF\xdd////\x14!\x14+\x01L\f\x16\x12\x0e\a+\x1e///\x01`^\x84^OO^\x84^OO\xe0@@\x11\x1e\x11\x1a&\x06\f\x10\x14\n\x1a&@@\x00\x00\x00\x00\x03\xff\xff\xff\xe0\x02@\x01\xae\x004\x00@\x00D\x00\x00%\x15\x14\a\"#\"/\x01\x06#\"\a\x06\a\x15\x14\x06+\x01\"&=\x01\x06#\"'\x15\x14\x06+\x01\"&=\x01.\x0154>\x0376\x17\x16;\x012\x16\x06264&#\"\x0e\x02\x15\x14\x175\x06\a\x02@\f\x02\x02\n\x04J\f\fLL\x11\x17\t\a\x10\a\t\x0e\x02\x18\x18\t\a\x10\a\t,4\x1c$0\x1a\tTFCP\n.Ew\x14\x0e\x0e\n\x05\t\x06\x04h\x11\x17\xe6\xf6\f\x04\b\x89\x011\v\t;\a\t\t\a1\x01\x066\a\t\t\aJ\x19Y4)D&\x1c\n\x02\x130.=K\x0e\x14\x0e\x04\x06\t\x05\n\xa7c\x11\t\x00\x01\x00\x00\xff\xfd\x01\x83\x01\x83\x00\x17\x00\x00%\x1e\x01\x0f\x01\x0e\x01'%&=\x01467%6\x16\x1f\x01\x16\x06\x0f\x01\x01m\r\t\x06\x0e\x05\x19\f\xfe\xcd\x12\v\a\x013\f\x19\x05\x0e\x06\t\f\xdbZ\x05\x19\f\x1d\r\t\x06\x8f\b\x15\"\t\x11\x03\x8f\x06\t\f\x1d\f\x19\x06f\x00\x00\x00\x02\x00\x00\xff\xd0\x01\xc0\x01\xb3\x00\x16\x00&\x00\x007&=\x0147%6\x16\x1f\x01\x16\x06\x0f\x01\x17\x1e\x01\x0f\x01\x0e\x01'\x172\x16\x1d\x01\x14\x06#!\"&=\x014637\x17\x17\x01.\r\x1b\x05\f\x05\r\r\xb0\xb0\r\r\x05\f\x05\x1b\x0eD\n\x0e\x0e\n\xfep\n\x0e\x0e\n\xea\a\x17\x10\x17\ax\x05\f\f\x1e\f\x18\x05DD\x04\x18\r\x1e\f\f\x05B\x0e\n0\n\x0e\x0e\n0\n\x0e\x00\x00\x00\x00\x05\x00\x00\x00\x00\x02\x80\x01\x80\x00\x18\x00\x1c\x00 \x00$\x00H\x00\x00\x01\x0e\x03\x15\x14\x16\x17\x15!5>\x014&'5463!2\x16\x15\x055#\x1535#\x1535#\x15\x055!\x15#54&\"\x06\x1d\x01#54&\"\x06\x1d\x01#54&\"\x06\x1d\x01#54&\"\x06\x1d\x01\x02\x80\a\f\b\x05\x12\x0e\xfd\x80\x0e\x12\x12\x0e\x13\r\x02@\r\x13\xfe`@\xc0@\xc0@\xfe`\x02\x80@\t\x0e\t\x80\t\x0e\t\x80\t\x0e\t\x80\t\x0e\t\x01=\x02\t\f\x0e\b\x0f\x19\x05cc\x05\x19\x1e\x19\x05#\r\x13\x13\r\xa0\x80\x80\x80\x80\x80\x80\xc0``\x1b\x06\n\n\x06\x1b\x1b\x06\n\n\x06\x1b\x1b\x06\n\n\x06\x1b\x1b\x06\n\n\x06\x1b\x00\x02\xff\xf9\xff\xb9\x02\x87\x01\xc7\x005\x00U\x00\x00\x05\x16\x0f\x01\x06'\x01&?\x016\x1f\x015462\x16\x15#\"\x1d\x01\x14;\x01\x15#\"\x1d\x01\x14;\x01\x15#\x173\x14\a\x176=\x0146;\x012\x16\x1d\x01\x14\x0f\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015.\x01=\x01\x17\x1e\x01\x17\x167\x17\x06\a\x15\x02z\f\t\x14\n\f\xfd\xb3\f\t\x14\n\f\xb38P8U\v\vUU\v\vUU),\x05\x1a\v\t\a\x10\a\t\x14L\a\t\t\a\xa0\a\t\t\a8AW4\n<)\a\x0e2\x10\x12\n\n\r\x19\f\t\x01\xc7\n\r\x19\f\t\x8a-(88(\b\x10\b \b\x10\b \x0e\x10\x14\x18\x1a0\a\t\t\a0*&\x80\t\a\x10\a\t\t\a\x10\a\t\"\tiD\a)(9\x04\x01\x01'\x06\x02\"\x00\x00\x00\x00\x06\x00\x00\xff\xe0\x02\x81\x01\xa1\x00\x1e\x00&\x00,\x004\x00:\x00@\x00\x00\x01\x16\x15\x11\x14\x0e\x01#\"'&#\"\x06#\"'&5\x114632\x17\x1632632\x05\x152>\x027&\x03\x16\x17.\x01#6264&\"\x06\x14\x055\x0e\x01\a\x1675&'\x1e\x01\x02m\x13\t\x0f\b\x05\x06+1>\xf6>?5\x13\x13\r\x05\x06+1>\xf6>?\xfd\xf8\v\x16\x10\f\x02$\x1b\x1e\"\x01%\x1a\xefB//B/\x01`\x14\x1e\x04\x1f\x17\x1a\x1e\x01 \x01\x8a\b\x16\xfe\xc3\t\x0f\b\x02\r>\x16\b\x16\x01=\x0e\x12\x02\r>d=\b\x0e\x13\v\x02\xfe\xea\v\x03\x1a$\x118P88PT:\x03\x1b\x13\x03\xe61\n\x03\x18#\x00\x00\x00\x02\x00\x00\xff\xe0\x02\x81\x01\xa1\x00\x1e\x00&\x00\x00\x01\x16\x15\x11\x14\x0e\x01#\"'&#\"\x06#\"'&5\x114632\x17\x1632632\x00264&\"\x06\x14\x02m\x13\t\x0f\b\x05\x06+1>\xf6>?5\x13\x13\r\x05\x06+1>\xf6>?\xfe\xe7B//B/\x01\x8a\b\x16\xfe\xc3\t\x0f\b\x02\r>\x16\b\x16\x01=\x0e\x12\x02\r>\xfe\xc08P88P\x00\x00\x00\x00\x06\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\t\x00\x19\x00%\x001\x00=\x00G\x00\x001\x11!\x11\x14\x06#!\"&%\x15\x14\x16;\x0126=\x014&+\x01\"\x06\x1d\x01\x14;\x012=\x014+\x01\"%\x15\x143!2=\x014#!\"\x1d\x01\x14;\x012=\x014+\x01\"\x012\x16\x1d\x01!5463\x02\x80\x13\r\xfd\xc0\r\x13\x01\xc0\t\a`\a\t\t\a`\a\t\bp\b\bp\b\xfe\x80\b\x010\b\b\xfe\xd0\b\b\xb0\b\b\xb0\b\x020\a\t\xfd\x80\t\a\x01@\xfe\xc0\r\x13\x13\xdd \a\t\t\a \a\t\t\u007f\x10\b\b\x10\bX\x10\b\b\x10\bh\x10\b\b\x10\b\x01@\t\a00\a\t\x00\x00\x00\x00\x05\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\x0f\x00K\x00W\x00c\x00o\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x132>\x0254&/\x01&546;\x012\x17\x16?\x016'&'54+\x01\"\x1d\x01\x0e\x01\x15\x14\x16\x1f\x01\x16\x15\x14\x06+\x01\"'&\x0f\x01\x06\x17\x16\x17\x15\x14;\x0125754+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012=\x014#!\"\x1d\x01\x143!2\x02`\r\x13\x13\r\xfd\xc0\r\x13\x13\r\x90\t\x10\v\a\x12\x0e-\t\a\x05\x1c\a\x06\x06\x04\f\a\b\x0e\x11\b\x10\b\x12\x19\x12\x0e-\t\a\x05\x1c\a\x06\x06\x04\f\a\b\x0e\x11\b\x10\b\xf0\bp\b\bp\b\xa0\bP\b\bP\b\b\xfe\xf0\b\b\x01\x10\b\x01\xa0\x13\r\xfe\x80\r\x13\x13\r\x01\x80\r\x13\xfe\xd8\b\f\x10\t\x0f\x18\x05\r\x03\n\x05\b\x04\x03\x04\v\a\x05\v\x01\x10\b\b\x10\x01\x1a\x12\x0f\x18\x05\r\x03\n\x05\b\x04\x03\x04\v\a\x05\v\x01\x10\b\b \x10\b\b\x10\b\b\x10\b\b\x10\bh\x10\b\b\x10\b\x00\x01\x00\x00\xff\xb9\x01\xc6\x01\xc7\x003\x00\x00%#\a32\x16\x1d\x01\x14\x06+\x01\a\x06/\x01&?\x01#\"&=\x0146;\x017#\"&=\x01463!76\x1f\x01\x16\x0f\x0132\x16\x1d\x01\x14\x06\x01\xa0bK\xad\r\x13\x13\r\xf7S\t\r\x19\r\n37\r\x13\x13\r\x82K\xcd\r\x13\x13\r\x01\x17R\n\r\x19\r\n4\x18\r\x13\x13\xf0`\x13\r \r\x13j\f\t\x14\t\rC\x13\r \r\x13`\x13\r \r\x13j\f\t\x14\t\rC\x13\r \r\x13\x00\x00\x00\x00\x05\xff\xf7\xff\xba\x02\x00\x01\xcb\x00\x15\x00\x1d\x00%\x00-\x005\x00\x00\x136\x1e\x01\x15\x14\x06+\x01\"\x06\x17\x16\x06\a\x06.\x027>\x01\x02264&\"\x06\x146264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x14\xccP\x8fU&\x1bP&(\x11\x0f\x1a\x1f/hP)\r\x0fn/\x1a\x13\x13\x1a\x133\x1a\x13\x13\x1a\x13\x93\x1a\x13\x13\x1a\x13\x93\x1a\x13\x13\x1a\x13\x01\xbb\x10=\u007fN\x1b&@\"\x1c;\x05\a*P}CJm\xfe\xd4\x13\x1a\x13\x13\x1am\x13\x1a\x13\x13\x1a-\x13\x1a\x13\x13\x1aS\x13\x1a\x13\x13\x1a\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\"\x00*\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x13264&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x0172\x16\x14\x06+\x015\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\xc0(88(`\a\t\t\a \a\t0\r\x13\x13\r0\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xe08P8\t\a\xe0\a\t\t\a0\x80\x13\x1a\x13@\x00\x03\xff\xff\x00\x00\x01\x80\x01\x81\x00\a\x00\x0f\x00\x1f\x00\x00\x12\x06\"&462\x1e\x02\x14\x06\"&467\x16\x14\a\x01\x06\"/\x01&47\x0162\x17\x80%6%%6%\xdb%%6%%F\n\n\xfe\xee\n\x1a\n\x16\n\n\x01\x12\n\x1a\n\x01%%%6%%\xdb%6%%6%\xd5\n\x1a\n\xfe\xee\n\n\x16\n\x1a\n\x01\x12\n\n\x00\x03\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x0f\x00$\x004\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x03\x153\x15#\x15\x17\"\a'#\"&=\x0146;\x012\x16%2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x01\x80\r\x13\x13\r\x80\r\x13\x13\r@\xe0\xe0@$\x13I`\r\x13\x13\r\x80\r\x13\x01\xa0\r\x13\x13\r\x80\r\x13\x13\r\x80\x13\r\x80\r\x13\x13\r\x80\r\x13\x01 @0p \x80\x13\r\x80\r\x13\x13\x13\x13\r\x80\r\x13\x13\r\x80\r\x13\x00\x04\x00\x00\xff\xbd\x01\x80\x01\xc3\x00%\x001\x00=\x00I\x00\x00\x016\x16\x15\x11\x14\x06/\x01\a\x06\"/\x01\a\x06\"/\x01\a\x06&5\x1146\x1f\x01762\x1f\x01762\x1f\x01\x1154+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x01f\b\x12\x12\b&6\x05\n\x0566\x05\n\x056&\b\x12\x12\b&6\x05\n\x0566\x05\n\x056\b\xf0\b\b\xf0\b\b\xf0\b\b\xf0\b\b\xf0\b\b\xf0\b\x01\xbd\x06\t\n\xfe \n\t\x06--\x03\x03--\x03\x03--\x06\t\n\x01\xe0\n\t\x06--\x03\x03--\x03\x03-\xfe\xc8\x10\b\b\x10\bh\x10\b\b\x10\bh\x10\b\b\x10\b\x00\x00\x00\x00\b\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\t\x00!\x00+\x00/\x003\x00=\x00A\x00K\x00\x0073\x15#\"&=\x0146%\x11\x14\x06#!\"&5\x1146;\x015462\x16\x1d\x0132\x16\x054&\"\x06\x14\x16326\a#\x1537#\x15374&\"\x06\x14\x16326\a#\x1537\x15\x14\x06+\x01532\x16 \r\x13\x13\x02\r&\x1a\xfe\xc0\x1a&/!p\x13\x1a\x13p!/\xfe\xe8\x17\"\x17\x17\x11\x11\x17\b@@`@@h\x17\"\x17\x17\x11\x11\x17\b@@\xc0\x13\r \r\x13\xe0\xc0\x13\r\x80\r\x130\xfe\xf0\x1a&&\x1a\x01\x10!/@\r\x13\x13\r@/q\x11\x17\x17\"\x17\x17o \xa0\x11\x17\x17\"\x17\x17o \xa0\x80\r\x13\xc0\x13\x00\x00\x01\xff\xfd\xff\xcd\x02\x83\x01\xb3\x007\x00\x00\x01\x16\x06\a\x01\x06&/\x01&6?\x01\x17\x16?\x016/\x017\x17\x16?\x016/\x017\x17\x16?\x016/\x017\x17\x16?\x016/\x017\x17\x16?\x016/\x0176\x16\x17\x02|\x06\a\v\xfe\x0f\v\x1a\x06P\x06\x06\fE<\x04\a\r\a\x04<8\x1c\x04\x06\x0e\a\x04\x1c7<\x04\a\x0e\a\x04<7\x1c\x04\a\x0e\a\x04\x1c7<\x04\a\r\a\x04;E\v\x1a\x06\x01\x19\v\x1a\x06\xfe\xe6\x06\x06\f\x87\v\x19\a'e\a\x04\b\x04\x06f\x1f/\a\x04\b\x04\x060\x1ff\x06\x03\b\x04\af\x1f/\a\x04\b\x04\x060\x1ff\x06\x03\b\x04\af'\x06\x06\f\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00#\x00G\x00\x007\x15\a&5\x1146;\x012\x16\x1d\x01#\"\x1d\x01\x14;\x01\x15#\"\x1d\x01\x14;\x01\x15#\"\x1d\x01\x143\x052\x16\x1d\x01\x14\x06#!\"'73\x15\x14;\x012=\x013\x15\x14;\x012=\x013\x15\x14;\x012=\x01\xa0\x9e\x02\x13\r`\r\x138\b\b88\b\b88\b\b\x01x\r\x13\x13\r\xfe@\x02\x06\x9f)\b\x10\b@\b\x10\b@\b\x10\b\xa0)\x9f\x06\x02\x01\xc0\r\x13\x13\r \b\x10\b@\b\x10\b@\b\x10\b@\x13\r`\r\x13\x02\x9e8\b\b88\b\b88\b\b8\x00\x00\x00\x00\x01\x00\x00\x00@\x02@\x01@\x007\x00\x00\x012\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x15\x14;\x012=\x013\x15\x14;\x012=\x013\x15\x14;\x012=\x013\x15\x14;\x012=\x013\x15\x14;\x012=\x01\x02 \r\x13\x13\r\xfe\x00\r\x13\x13\r0\b\x10\b@\b\x10\b@\b\x10\b@\b\x10\b@\b\x10\b\x01@\x13\r\xc0\r\x13\x13\r\xc0\r\x13X\b\bXX\b\bXX\b\bXX\b\bXX\b\bX\x00\x00\x00\x01\x00\x00\xff\xc0\x01\x00\x01\xc0\x00/\x00\x0073\x15\x14\x06+\x01\"&5\x1146;\x012\x16\x1d\x01#\"\x1d\x01\x14;\x01\x15#\"\x1d\x01\x14;\x01\x15#\"\x1d\x01\x14;\x01\x15#\"\x1d\x01\x14\xa8X\x13\r\xc0\r\x13\x13\r\xc0\r\x13X\b\bXX\b\bXX\b\bXX\b @\r\x13\x13\r\x01\xc0\r\x13\x13\r@\b\x10\b@\b\x10\b@\b\x10\b@\b\x10\b\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\t\x00\x19\x00/\x007\x00A\x00\x00546;\x01\x11#\"&5\x012\x1d\x01\x14+\x01\"=\x014;\x012\x1d\x017\x16\x15\x11#54&+\x01\"\x06\x1d\x01#\x114?\x0162\x17\x06264&\"\x06\x14%2\x16\x15\x11\x14\x06+\x01\x11\x13\r@P\a\t\x01h\b\b0\b\b\x10\b\xa2\x0e\x80\t\a`\a\t\x80\x0e\xa0\b\x14\b3B//B/\x01p\r\x13\t\aP\xe0\r\x13\xfe\xc0\t\a\x01@\b\x10\b\b@\b\b(@\n\x11\xfe\x8b\x90\a\t\t\a\x90\x01u\x11\nk\x05\x05\xfb/B//B\x11\x13\r\xfe\xf0\a\t\x01@\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\t\x00\x17\x00\x00\x01\x17\a#\a.\x01'75\a62\x16\x14\x0f\x01\x06\"/\x01&47\x01\xc0@`>S\a\x10\vS\xc0\x16>+\x16u\v\x1e\v5\v\v\x01\xc0@\x80S\v\x10\aS>\xb7\x16+>\x16u\v\v5\v\x1e\v\x00\x04\x00\x00\xff\xbd\x02\x80\x01\xc3\x00\a\x00\x0f\x00!\x004\x00\x00\x13\"&46;\x01\x15\x0246;\x01\x15#\"%2\x16\x15\x14\x06\a\x06'&/\x0152>\x0176\x13\x1e\x01\x15\x14\x0e\x01#\"'.\x02#57676\xc0\x1b%%\x1b \xe0%\x1b \x1b\x01,IfHM-4#-:\x1c+\x0f\x130\xd2MH2N/80\x13\x0f+\x1c:-#3\x01 %6%\x80\xfe\xe56%\x80\xc02.&B\x11\n\x04\x02\r\x10\x80\v\t\f \x01\x19\x11B&\x1f,\x15 \f\t\v\x80\x10\r\x02\x04\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00*\x002\x00:\x00\x00\x122\x16\x15\x14\x0e\x01\a\x06\x1f\x01\x16\x0e\x02+\x0154+\x01\"\x1d\x01#54+\x01\"\x1d\x01#\"&?\x016'.\x0154\x16264&\"\x06\x14\x16264&\"\x06\x14\x96Ԗ\x17*\x1d\x11\x03\t\x01\x02\x04\a\x03N\b\x10\b@\b\x10\bN\a\t\x01\t\x03\x11,2\x864&&4&\xe64&&4&\x01\xc0\x83]\"A6\x15\v\x13B\x03\a\x05\x038\b\b88\b\b8\v\aB\x13\v Z4]\xbd&4&&4&&4&&4\x00\x00\x06\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\t\x00\x11\x00\x19\x00\x1d\x00/\x00J\x00\x007546;\x01\x17#\"&\x122\x16\x14\x06\"&4\x0127\x01\x06\x15\x14\x167\x1735\x17654&#\"\a\x1732\x16\x1d\x01\x14\x06+\x01'2\x16\x17\x14\x0e\x02+\x01\"'.\x01#\".\x01'46;\x012\x17\x1e\x01`\t\a\x16`v\a\t6Ԗ\x96Ԗ\x01\x00=2\xfe\xf5$q| 3\x1c$qO=2|\x83\a\t\t\a#,\x18#\x04\x01\x02\x03\x02\x10\a\x01\x02\x12\v\x10\x1c\x11\x03\x05\x03\x11\x06\x01\x02\x12\x90@\a\t`\t\x017\x96Ԗ\x96\xd4\xfe\xd6$\x01\v2=Oq\xc0 o2=Oq$|\t\a@\a\t\xc0\x1f\x18\x01\x04\x02\x02\x06\v\x0f\x0e\x19\x10\x03\x06\x06\v\x0f\x00\x02\xff\xf4\xff\xc0\x02t\x01\xc0\x00\x1a\x003\x00\x00\x01\x16\x06\a\x06#\"'\x06\"'\x06\"'\x06#\"'.\x01?\x0163!2\x17\x032767\x15\x14\x06#!\".\x01=\x01\x16\x17\x16327\x15!5\x16\x02Z\x1a&/\a\a,\x1d\x1eX\x1e\x1eX\x1e\x1d-\x06\a/&\x1aA\t\x12\x01\x94\x12\t\a\t\t\a\t\x13\r\xfe@\t\x0e\t\t\a\t\t\r\x11\x01\x80\x10\x01I(Z\x06\x01!!!!!!\x01\x06Z(h\x0f\x0f\xfe\xef\x01\x01\x03\xc5\r\x13\t\x0e\t\xc5\x03\x01\x01\x04dd\x04\x00\x03\xff\xfa\xff\xc0\x02\x86\x01\xc0\x00\r\x00\x1b\x00%\x00\x00%53\x11\x14\x06#!\"&5\x113\x15%\x16\x06#!\"&?\x0163!2\x17\x03\x113\x11\x14\x06+\x01\"&\x01@@\x13\r\xff\x00\r\x13@\x01\xfb\n\x12\x13\xfd\xc0\x13\x12\vU\t\x11\x01\x96\x11\t%@\t\a \a\t@\xa0\xff\x00\r\x13\x13\r\x01\x00\xa0\xf2\x10\"\"\x10\x80\x0e\x0e\xfe\x1e\x01\x10\xfe\xf0\a\t\t\x00\x00\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x1f\x00/\x00\x00\x13\"&=\x01463!2\x16\x1d\x01\x14\x06#\x172\x16\x1d\x01\x14\x06#!\"&=\x01463\x052\x16\x1d\x01\x14\x06#!\"&=\x01463\x10\a\t\t\a\x01\xa0\a\t\t\a@\a\t\t\a\xfe`\a\t\t\a\x01`\a\t\t\a\xfe`\a\t\t\a\x01@\t\a@\a\t\t\a@\a\tP\t\a@\a\t\t\a@\a\t\xb0\t\a@\a\t\t\a@\a\t\x00\x00\x00\x06\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x03\x00\a\x00\v\x00\x13\x00\xb0\x00\xb4\x00\x007\x17\a'7\a'7\a7\x17\a\x022\x16\x14\x06\"&4\x0564/\x0176/\x01&\x0f\x01'7\x17\x16?\x016/\x0176/\x01&\x0f\x01'&\x0f\x01\x06\x1f\x01\a'76/\x01&\x0f\x01'&\x0f\x01\x06\x1f\x01\a'76/\x01&\x0f\x01'&\x0f\x01\x06\x1f\x01\a\x06\x1f\x01\x16?\x01\x17\a'&\x0f\x01\x06\x1f\x01\a\x06\x1f\x01\x16?\x01\x17\a'&\x0f\x01\x06\x1f\x01\a\x06\x1f\x01\x16?\x01\x17\x16?\x016/\x017\x17\a\x06\x1f\x01\x16?\x01\x17\x16?\x016/\x017\x17\a\x06\x1f\x01\x16?\x01\x17\x16?\x016/\x0176/\x01&\x0f\x01'7\x17\x167'7\x17\a\xbc---\x9e-------jԖ\x96Ԗ\x01\xbb\x02\x02\x1d\x1d\x05\x05\f\x05\x06\x1c.\"\x11\x06\x06\v\x06\x06\x11\x11\x06\x06\v\x06\x06\x11\x11\x05\x06\v\x06\x06\x11\"-\x1c\x06\x06\v\x06\x06\x1c\x1c\x06\x06\v\x06\x06\x1c-\"\x11\x06\x06\v\x06\x05\x11\x11\x06\x06\v\x06\x06\x11\x11\x06\x06\v\x06\x06\x11!-\x1c\x06\x05\f\x05\x05\x1d\x1d\x05\x05\f\x05\x06\x1c.\"\x11\x06\x06\v\x06\x06\x11\x11\x06\x06\v\x06\x06\x11\x11\x05\x06\v\x06\x06\x11\"-\x1c\x06\x06\v\x06\x06\x1c\x1c\x06\x06\v\x06\x06\x1c-\"\x11\x06\x06\v\x06\x05\x11\x11\x06\x06\v\x06\x06\x11\x11\x06\x06\v\x06\x06\x11!-\x1c\x06\x05\x98---\xed---D---\xb5---\x01q\x96Ԗ\x96Ԓ\x03\x06\x03\x1c\x1c\x06\x06\v\x06\x06\x1c-\"\x11\x06\x06\v\x06\x05\x11\x11\x06\x06\v\x06\x06\x11\x11\x06\x06\v\x06\x06\x11!-\x1c\x06\x05\f\x05\x05\x1d\x1d\x05\x05\f\x05\x06\x1c.\"\x11\x06\x06\v\x06\x06\x11\x11\x06\x06\v\x06\x06\x11\x11\x05\x06\v\x06\x06\x11\"-\x1c\x06\x06\v\x06\x06\x1c\x1c\x06\x06\v\x06\x06\x1c-\"\x11\x06\x06\v\x06\x05\x11\x11\x06\x06\v\x06\x06\x11\x11\x06\x06\v\x06\x06\x11!-\x1c\x06\x05\f\x05\x05\x1d\x1d\x05\x05\f\x05\x06\x1c.\"\x11\x06\x06\v\x06\x06\x11\x11\x06\x06\v\x06\x06\x11\x11\x05\x06\v\x06\x06\x11\"-\x1c\x06\x063---\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00+\x00/\x00M\x00\x00%\x16\x1d\x01#54&+\x01\"\x06\x1d\x01#54&+\x01\"\x06\x1d\x01#54?\x016;\x01546;\x012\x16\x1d\x0132\x17'5#\x15\x1753\x15\x14\x06#!\"&=\x013\x15\x14\x16;\x0126=\x013\x15\x14\x16;\x0126\x01\xf7\t\x80\t\a \a\t\x80\t\a \a\t\x80\t.\t\r3\x1c\x14\xa0\x14\x1c3\r\t\x89\x80\xc0\x80\x13\r\xfe@\r\x13\x80\t\a \a\t\x80\t\a \a\t\xe9\t\rS\x10\a\t\t\a\x10\x10\a\t\t\a\x10S\r\t.\tP\x14\x1c\x1c\x14P\t\t@@\xd0\x10`\r\x13\x13\r`\x10\a\t\t\a\x10\x10\a\t\t\x00\x01\xff\xfe\xff\xc0\x02\x82\x01\xc0\x00%\x00\x00\x01\x1e\x01\x0f\x01\x0e\x01/\x01&\x06\x1d\x01\x14\x06#!\"&=\x014&\x0f\x01\x06&/\x01&6?\x01\x1e\x01267\x02w\x06\x04\x039\x03\r\x059\b\x0f\x13\r\xff\x00\r\x13\x0f\b9\x06\f\x039\x03\x04\x06\xc3\x0f?L?\x0f\x01`\x03\r\x06r\x06\x05\x03\x1c\x04\t\t\xfe\r\x13\x13\r\xfe\t\t\x04\x1c\x03\x05\x06r\x06\r\x03`\x15\x1a\x1a\x15\x00\x00\x00\x00\x03\x00\x00\xff\xbd\x01C\x01\xc0\x00\a\x00:\x00I\x00\x00\x12\"&462\x16\x14\x17\x1e\x01\x0e\x01/\x01&/\x01\a\x17\x16\x1f\x01\x16\x0e\x01&/\x01&/\x01&?\x01\a\x06\x0f\x01\x0e\x01.\x01?\x0167>\x0632\x16\x1f\x01\a7\x16\x17\a\x06\x0f\x01\x06\"&4?\x016\xe4(\x1c\x1c(\x1c.\f\t\f\x19\f\x17\x17\t\x05\x11-\v\x04\x16\x03\r\x1a\x17\x03\x12\x04\v<\x17\b\x0f\x1a\f\x05\a\x06\x18\x18\b\x06\x06\x10\"\x04\x15\a\x11\t\x0e\x0e\a#8\f\t\xcd\x14\b(\x0e\x05\t;\n\x1a\x13\t2\n\x01`\x1c(\x1c\x1c(\xb1\x06\x19\x18\b\x06\v\f\x19\x11E2\v\x10Y\r\x17\x06\r\rJ\x0f\fB\x19\"<\v\x04\v\x0e\v\t\f\x19\f\x0e \x0e\x01\t\x03\x06\x02\x03\x01*\"\x1d\x994\n,\"\f\t<\t\x13\x1a\n2\t\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x1c\x00$\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463!2\x16\x15\x14\x06#!\"\x06\x14\x163\x04264&\"\x06\x14\x01\xcd\x15\x1e\x1e\x15\xfes\x1b%%\x1b\x01p\x14\x1c\t\a\xfe\x80\a\t\t\a\x01C\x1a\x13\x13\x1a\x13\x01@\x1c\x14\xff\x00\x14\x1c%\x1b\x01@\x1b%\x1c\x14\a\t\t\x0e\t\xd0\x13\x1a\x13\x13\x1a\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00$\x006\x00O\x00\x00\x122\x16\x14\x06\"&4\x17\x14\x162654':\x0112764.\x01/\x01&\x06\a\x06\x1e\x02\x1f\x01\x06\x17\x16>\x01'&\"\a\x0e\x01\x1e\x0367627>\x01'.\x02\x0f\x01\x0e\x01\x17\x16323\x06\x15\x14\x162654'\x91Α\x91Α\x88\x13\x1a\x13\x02\x01\x01\f\x03\x01\x03\x05\x03P\a\v\x02\x01\x01\x02\x05\x04\x1e\n\xa8\x06\x12\x06\x06\x1fb \x02\x02\x02\x04\x06\a\a\x03\x15Fb\x06\x06\x02\x01\x06\b\x04P\a\x06\x02\x03\f\x01\x01\x02\x13\x1a\x13\n\x01\xb8\x91Α\x91\xceW\r\x13\x13\r\x02\x06\v\x04\x06\x05\x04\x01\x18\x02\x06\x06\x04\x06\x05\x04\x01\n\t\xa8\b\x04\x10\b&&\x03\b\x06\x06\x03\x01\x03\x04\x19\xa2\x02\v\a\x04\x06\x01\x01\x18\x02\v\a\v\x05\x03\r\x13\x13\r\x0e\t\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02@\x01\xc0\x00\"\x002\x00\x00!2\x16\x1d\x01\x14\x06+\x01\"&=\x024&\"\x06\x1d\x01\x14\x06+\x01\"&=\x0146;\x01\x11!\x11\x132\x16\x1d\x01\x14\x06#!\"&=\x01463\x020\a\t\t\a\xa0\a\t8P8\t\a\xa0\a\t\t\a\x10\x02\x00\x10\a\t\t\a\xfd\xe0\a\t\t\a\t\a \a\t\t\a\x10\xa0(88(\xb0\a\t\t\a \a\t\x01`\xfe\xa0\x01\xc0\t\a \a\t\t\a \a\t\x00\t\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x04\x00\t\x00\x11\x00\x16\x00\x1b\x00#\x00:\x00B\x00J\x00\x00%\x06\a6?\x01#&'\x16'\x1e\x02\x17#>\x01\a\x06\a#6\x17&'3\x167\x0e\x01\a.\x02'\x17\x14\a\x06\x14\x17\x16\x1d\x01\x14\x06#!\"&5\x11463!2\x15\x06\"\x06\x14\x16264\x135!\"\x06\x14\x163\x01>\b-\f\x02''\x02\f-V\x04\n\b\x01.\x01\x0f\"\f\x02'\b--\b'\x02L\x01\x0f\a\x04\n\b\x01\xf7\n\x02\x02\n\x0f\v\xfe\xba)77)\x01F\x1a\xabjKKjK \xfe\xe0\r\x13\x12\x0e\xf01\x15\x1d) )\x1d\x15\x1e\x05\x12#\x15\x1e*\x02\x1d)1\x97\x151))\x1e*\a\x05\x12#\x15\x96\x0f\x05\t4\f\n\t\x10\f\x0e7)\x01@)7\x1a&KjKKj\xfe\xcb@\x12\x1c\x12\x00\x00\x04\xff\xfd\xff\xbe\x01\x83\x01\xc5\x00\x14\x00,\x00x\x00\x83\x00\x007\x16327\a\x0e\x01/\x01\a\"&?\x01\x16\x17\x16\x17\x16\x17\x05\x16\x06#'\a\x06&/\x01\x1632767672>\x01367\a\x0e\x01'&\"\a\x06&'.\a'&'.\x01'&764'&7>\x0176767676\x17\x16276\x17\x1e\x01\x17\x16\x17\x1e\x03\x17\x16\a\x06\x14\x17\x16\a\x0e\x01\a\x06\a\x0e\x06&\x14\x162654.\x01#\"a\x16\x1e\x12\x114\x03\x11\x06%4\t\n\x03.\f\r\x03\x06\t\x04\x01!\x03\n\t4%\x06\x11\x034\x11\x12\x1e\x16\x01\x02\x04\t\x02\x02\x03\x02\r\fJ\n\x1c\f\t\x18\t\f\x1c\n\x03\x04\x04\x04\x02\a\x03\t\x03\x16\x06\x06\x05\x0f\x11\x06\x06\x06\x06\x11\x0f\x05\x06\x06\x16\x19\b\x02\n\x11\x16\x15\n\x15\x16\x11\x0f\t\x15\x16\x06\x04\x01\b\x03\n\x11\x06\x06\x06\x06\x11\x0f\x05\x06\x06\x16\x03\n\x03\a\x03\x05\x05\xa87N7\x19+\x1a'U\x15\n\x80\b\x03\x06&\x02\x0e\bp\n\x04\x01\x01\x02\x05Y\b\x0e\x02&\x06\x03\b\x80\n\x15\x01\x02\x05\x02\x01\x01\x04\n\x03\n\x03\a\x06\x06\a\x03\n\x03\x04\x03\x03\x01\x02\x01\x02\x01\x06\x17\x15\t\x10\x11\x16\x16\n\x15\x17\x11\x0f\t\x16\x16\a\x06\b\x01\v\x11\x06\x06\x06\x06\x11\x10\x05\x05\a\x16\x0f\x04\x0e\x03\n\x11\x17\x15\n\x16\x16\x11\x10\t\x15\x17\x06\x01\x02\x01\x03\x01\x04\x05\xc9P88(\x1a,\x1a\x00\x00\x00\x02\xff\xff\x00\x00\x02\x80\x01\x80\x00\x11\x00-\x00\x00\x012\x16\x15\x11\x14\x06#!\"/\x01&4?\x0163\x05'76/\x01&\x0f\x01'&\x0f\x01\x06\x1f\x01\a\x06\x1f\x01\x16?\x01\x17\x16?\x016\x02@\x1b%%\x1b\xfe\x8d\x1a\x13\x97\t\t\x97\x13\x1a\x01\x1e>>\f\f\x16\f\v>>\v\f\x16\f\f>>\f\f\x16\f\v>>\v\f\x16\f\x01\x80%\x1b\xff\x00\x1b%\x13\x96\n\x1a\n\x96\x13\xfe>>\v\f\x16\f\f>>\f\f\x16\f\v>>\v\f\x16\f\f>>\f\f\x16\f\x00\x00\x00\x05\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\x0f\x00'\x007\x00M\x00]\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01463\a\x15\x14\x17\x06\a#>\x017#\x0e\x03#\"&4632\x16\x1f\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x012\x16\x14\x06#\"&'#\x1e\x01\x17#&'6=\x013>\x01\x132\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x01p\r\x13\x13\r`\r\x13\x13\r@\x066\x112\v9*P\x03\f\x0f\x13\n\x1b%%\x1b\x14 \a%\r\x13\x13\r`\r\x13\x13\r\x02\x00\x1b%%\x1b\x14 \aP*9\v2\x116\x06U\a \x14\r\x13\x13\r`\r\x13\x13\r\x01\xa0\x13\r`\r\x13\x13\r`\r\x138H\x0e\f'?0O\x19\t\x0f\n\x06%6%\x16\x12\xe8\x13\r`\r\x13\x13\r`\r\x13\x01\x10%6%\x16\x12\x19O0?'\f\x0eH\x12\x16\xfe\xf0\x13\r`\r\x13\x13\r`\r\x13\x00\x02\x00\x00\xff\xc0\x01\xc7\x01\xc1\x001\x00;\x00\x00\x05#\"'&54675#\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\x15\x16\x177'&?\x016\x1f\x01\x16\x0f\x01\x06/\x01\a\x16\x15\x14\a\x06'\x06\a!&/\x015#\x15\x01.\xdc&\x12\x1a4,\x10\a\t\t\a\xe0\a\t\t\a\x10\x15\x12'\t\f\f\v\v\f4\f\f\v\v\f\t+\x1b\x1a\x12\xdc%\x13\x01\x00\x13%\x18`@!,34Y\x19\x9a\t\a \x06\n\t\a \x06\n\x9a\f\x11'\t\f\v\v\f\f4\f\v\v\f\f\t+.53,!\xfd\x16''\x16\r\xb6\xb6\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\t\x00\x1b\x00#\x00\x00\x012\x16\x1d\x01!5463\x035!\x15\x14\x06+\x01\x15\x14\x06\"&=\x01#\"&\x16\"\x06\x14\x16264\x01`\r\x13\xfe\x80\x13\r \x01\x80%\x1b@%6%@\x1b%\xca\x14\x0e\x0e\x14\x0e\x01\xc0\x13\r\xe0\xe0\r\x13\xfe\xc0 \x1b%@\x1b%%\x1b@%M\x0e\x14\x0e\x0e\x14\x00\x00\x06\x00\x00\xff\xc0\x02\x00\x01\xc0\x004\x00@\x00H\x00R\x00\\\x00d\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&=\x01\"&=\x01#\"&=\x0146;\x015462\x16\x1d\x01%\x15\x14;\x012=\x014+\x01\"\x02264&\"\x06\x1475#\"\x06\x1d\x01\x14\x16;\x0226=\x014&+\x01\x12264&\"\x06\x14\x01\xe8\n\x0e\x0e\n\b\x0e\f\x06\x13\r \r\x13\xc0\x13\r \r\x13\r\x13\b\n\x0e\x0e\n\b\x82\xbc\x82\xfe\xc0\b\xb0\b\b\xb0\b=\x1a\x13\x13\x1a\x13\xa0p\r\x13\x13\r\x90p\r\x13\x13\rps\x1a\x13\x13\x1a\x13\x01@\x0e\nP\n\x0e\xa6\v\x0f \r\x13\x13\r \r\x13\x13\r \x13\r\xa0\x0e\nP\n\x0e0\"..\"08\x10\b\b\x10\b\xfe\xb0\x13\x1a\x13\x13\x1a]\xa0\x13\r`\r\x13\x13\r`\r\x13\xfe\xf0\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x01\xff\xff\xff\xc0\x02\x02\x01\xc0\x00[\x00\x00%\x16\x14\a\x06#\"#\x16\x17\x16\a\x06#\"'&'\x15\x14+\x01\"=\x01\x06\a\x06#\"'&767\"#\"'&4767.\x02'454632\x17\x1e\x02\x170454>\x01762\x17\x1e\x04\x15\x14\x15>\x027632\x17\x16\a\x0e\x02\a\x16\x01\xf7\t\t\x01\x01(\x11\x17\b\xf0\b\x17\x118\xa9\v\f\x11\x01n\x11\f\v\xa9\xc0\x01?\x016\x1f\x01\x16\x1f\x01\x1e\x01\x17\x04264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x14\x01\xfe\a\x13$\x05\x13\x17\nE'*M\x11+\f7\r\x16\x02\f\x02\x0e$\b!\x10E'*M*\x1e7\r\x16\x02\xfe\xb1\x1a\x13\x13\x1a\x133\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13\xc1*'E\n\x17\x13\x05$\x13\a\f\x03\x15\r7\f+\x12L\n\v\x1f\x1dE\x0f\"\b$\x13\a\f\x06\x1f7\f+\x12\xbd\x13\x1a\x13\x13\x1a\x8d\x13\x1a\x13\x13\x1a\x93\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x04\xff\xff\xff\xba\x02\x05\x01\xc5\x00#\x00+\x003\x00;\x00\x00%\x16\x0f\x01\x0e\x02\x0f\x01\x06/\x01.\x01/\x01.\x01/\x01&54?\x01>\x01?\x016\x17\x1e\x013\x14\x16\x04264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x14\x01\xff\x06\x13#\x06\x13\x17\nE'*M\x11+\f7\r\x16\x02\f\x02\x0e$\b!\x10E&*\x01J5J\xfe\xd9\x1a\x13\x13\x1a\x133\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13\xc0*&E\n\x17\x13\x05$\x13\a\f\x03\x15\r7\f+\x12L\n\v\x1f\x1dE\x0f\"\b$\x13\a4J5Jq\x13\x1a\x13\x13\x1a\x8d\x13\x1a\x13\x13\x1a\x93\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x18\x001\x00\x00%2\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&5\x11#532\x16\x15\x11\x01\x113\x15#\"&5\x11#\"&=\x0146;\x01546;\x012\x16\x01\xe8\n\x0e\x0e\n(\x0e\n0\n\x0e\xa0\xe0\r\x13\xfe\xe0\xa0\xe0\r\x13(\n\x0e\x0e\n(\x0e\n0\n\x0e`\x0e\n0\n\x0e(\n\x0e\x0e\n\x01H`\x13\r\xff\x00\x01H\xfe\xb8`\x13\r\x01\x00\x0e\n0\n\x0e(\n\x0e\x0e\x00\x00\b\x00\x00\x00 \x02\x80\x01`\x00\x0f\x00\x1b\x00'\x003\x00?\x00K\x00[\x00g\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0154+\x01\"\x1d\x01\x14;\x012'\x14;\x012=\x014+\x01\"\x15\x17\x14;\x012=\x014+\x01\"\x15\x17\x14;\x012=\x014+\x01\"\x15\x17\x14;\x012=\x014+\x01\"\x15754&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x0554+\x01\"\x1d\x01\x14;\x012\x02`\r\x13\x13\r\xfd\xc0\r\x13\x13\r\x01\x10\b\xe0\b\b\xe0\b\xe8\b\x10\b\b\x10\b@\b\x10\b\b\x10\b@\b\x10\b\b\x10\b@\b\x10\b\b\x10\b(\t\a\xd0\a\t\t\a\xd0\a\t\x01\x10\b\xe0\b\b\xe0\b\x01`\x13\r\xff\x00\r\x13\x13\r\x01\x00\r\x13\xff\x00\b\b\b\b\bH\b\b\x10\b\b\x10\b\b\x10\b\b\x10\b\b\x10\b\b\x10\b\b\x10\b\b00\a\t\t\a0\a\t\ty\b\b\b\b\b\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00!\x00)\x00A\x00\x00\x122\x16\x14\x06\"&4\x1f\x01\x16>\x01/\x017>\x01.\x01\x06\x0f\x01'&\x0e\x01\x1f\x01\a\x06\x1e\x017\x16264&\"\x06\x147'76.\x01\x0f\x01'&\x0e\x01\x1f\x01\a\x06\x1e\x01?\x01\x17\x16>\x01\x91Α\x91Α\x98\x1d\a\x11\x05\a\x1c\x1c\x05\x01\x06\b\n\x04\x1d\x1d\a\x11\x05\a\x1c\x1c\a\x05\x10\bc4&&4&\xd3\x1c\x1c\a\x06\x0f\b\x1d\x1d\a\x11\x05\a\x1c\x1c\a\x05\x10\b\x1d\x1d\a\x11\x05\x01\xb8\x91Α\x91\xce>\x1c\a\x06\x0f\b\x1d\x1d\x04\n\b\x06\x01\x05\x1c\x1c\a\x06\x0f\b\x1d\x1d\a\x11\x04\x06\xad&4&&4\x9d\x1d\x1d\a\x11\x05\a\x1c\x1c\a\x06\x0f\b\x1d\x1d\a\x11\x04\x06\x1c\x1c\a\x06\x0f\x00\x00\x03\x00\x00\xff\xbe\x02\x00\x01\xc0\x00\b\x00@\x00H\x00\x00%\x17\a\x0e\x01/\x0267\x0e\x02#\"'\x0f\x01\x06\".\x015'7&'&6?\x016\x17\x16\x177&5462\x16\x15\x14\a\x17\x06\a'0\"0\"1\a\x1632676\x1f\x01\x1e\x01&\"\x06\x14\x16264\x01\xc97\a\x01\x0e\a67,R\x1bL\\142G6\x03\b\x06\x05\aG!\x17\x03\x03\x06\x1c\f\t\x0e\x14D\f8P8\f4#03\x02\x02C#\"9d\x1f\b\r\x1c\x06\x04\xea\x1a\x13\x13\x1a\x13h`:\b\b\x03\x17_\x11~)= \x13{\x17\x01\x04\x06\x04:|\x1c\"\x06\r\x03\x10\b\r\x15\x12v\x16\x18(88(\x18\x16Y$\rXt\f7/\r\a\x0f\x04\r\xb4\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x003\x00N\x00\x00\x01\x16\x1d\x01\x14\a54&\"\x06\x1d\x01\x06\a54&\"\x06\x1d\x01&'54&\"\x06\x1d\x01&=\x014>\x0332\x177632\x1f\x01\x16\x15\x14\x0f\x012654.\x01'\a\x06#\"/\x01&54?\x01&#\"\x06\x15\x14\x1e\x01\x01\xafQH\x0e\x14\x0e4<\x0e\x14\x0e<4\x0e\x14\x0eH0>R-\x1397n\x04\x05\t\x04\t\x03\a\xf9Vz\x15'\x1av\x05\x04\t\x05\t\x02\aI\x1a\x18Vz8_\x01F\x1d9\xa0. f\n\x0e\x0e\nw\x0f\x02h\n\x0e\x0e\nh\x02\x0fw\n\x0e\x0e\nf .\xa0\x1e-\x16\r\x02\nG\x03\a\r\x04\x05\t\x05\xc5%\x1b\n\x14\x10\x06M\x03\b\r\x04\x05\b\x05/\x02&\x1a\x12\x1d\x11\x00\x00\x05\x00\x00\xff\xe0\x02@\x01\xa0\x00\v\x00\x16\x00 \x00*\x006\x00\x00\x122\x16\x1d\x01\x14\x06\"&=\x014\x176/\x01\x0e\x01\x15\x14\x16\x176\x1627.\x01#\"\x0e\x01\a75&\"\a\x15\x14\x1626\x17>\x0254&'\a\x06\x17\x16\xa9\uea69\xee\xa9\xcd\b\x0f\x1a8DF;\x15<<\x1f\x06\"\x15\x0e\x19\x12\x04} @ &4&/&:!D8\x1a\x0f\b\x06\x01\xa0K5\xc05KK5\xc05S\x1d\x1b,\n&\x16\x17&\n\x10\x19\x03\x14\x19\f\x14\r\x8d\r\x03\x03\r\x1a&&m\a\x15\x1c\x0f\x16&\n,\x1b\x1d\x19\x00\x00\x01\x00\x00\xff\xc0\x02\x00\x01\xc0\x00!\x00\x00\x01\x06\x0f\x013\x06\x0f\x013\x06\a\x0e\x01#\a\x06\"&47\x016&\x0f\x0167>\x06\x02\x00\t-jQ\x0e\x10\x93e:K\x1f? 9\a\x14\x0e\a\x01\x04\v\x17\v\xb3\x02\x04\x052D[OV,\x01\xc0}n5\x19\x1611\b\x03\x049\a\x0e\x14\a\x01\x03\f\x16\v\xb3.\"3W8.\x18\x12\x05\x00\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00\x1d\x00)\x00T\x00]\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\a\x15\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x13\"'.\x01\a'&\"\x0f\x01\x06+\x01\"\x06\x14\x16;\x0126?\x01\x17\x16\x17212?\x0162\x17\x16;\x01264&#\x13\x16\x1d\x01#532\x17\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\nȠ\bP\b\bP\b\bP\b\bP\b\xc1\a\x03\t+\x0e\x0e\x06\"\x06\x12\x03\b\f\a\t\t\a\f\x0e\x17\x04\v\x11\x03\v\x01\n\x04\b\x03\x0e\x03\f\x1b/\a\t\t\aI\a\x80\x06\n\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0eH\x10\b\b\x10\bH\x10\b\b\x10\b\xff\x00\x06\x12\t\f)\x11\x116\b\t\x0e\t\x10\x0e\x1f2\n\x01\t\x0f\x06\x06\x18\t\x0e\t\x01\x17\a\n\x06\x80\a\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00'\x000\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x136&+\x0154&+\x01\"\x06\x1d\x01#\"\x06\x1f\x01\x1627\x13\x16\x1d\x01#532\x17\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8L\b\b\vA\t\a \a\tA\v\b\b`\x05\x0e\x05\xad\a\x80\x06\n\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xfe\xa5\a\x14P\a\t\t\aP\x14\a`\x05\x05\x01R\a\n\x06\x80\a\x00\x03\x00\x00\xff\xc0\x02G\x01\xc0\x00\b\x00\x17\x003\x00\x00\x01\x15#532\x1f\x01\x16\x17\x16\x0f\x01\x06&=\x01#53546\x17\x05\x14\x16;\x01\x15\x14\x06#!\"&5\x1146;\x01\x15\x14\x16;\x01\x15#\"\x06\x15\x01\x80\x80\x06\n\ab\a\xbb\f\f`\a\x14@@\x14\a\xfe\xe5\t\a\xb0\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8\x0e\n\x88\xb0\a\t\x01F\x06\x80\ab\a\xc4\f\f`\b\b\vA@A\v\b\b|\a\t\x88\n\x0e\x0e\n\x01\xd0\n\x0e\x88\n\x0e\x80\t\a\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\t\x00\x12\x003\x00\x0073\x15#\"&=\x0146%\x16\x1d\x01#532\x17\a\x14\x16;\x01\x11\x14\x06#!\"&=\x013\x15\x14\x16?\x016/\x01&\x06\x1d\x01#\x1146;\x01\x10pp\a\t\t\x01\xf0\a\x80\x06\n\a7\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x80\x14\a`\f\f`\a\x14\x80\x0e\nȠ@\t\a \a\t\xb7\a\n\x06\x80\a\x81\n\x0e\xfe\xb8\n\x0e\x0e\n\x88A\v\b\b`\f\f`\b\b\vA\x01\b\n\x0e\x00\x00\x00\x00\a\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x03\x00\f\x00\x1e\x00*\x006\x00B\x00R\x00\x00%\x15#5%\x16\x1d\x01#532\x17\a\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\a\x15\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x0154+\x01\"\x1d\x01\x14;\x01254&+\x01\"\x06\x1d\x01\x14\x16;\x01265\x01 \xc0\x01\x19\a\x80\x06\n\a7\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\nȠ\bP\b\bP\b\bP\b\bP\b\x01\x00\bP\b\bP\b\t\a\xe0\a\t\t\a\xe0\a\t\xc0@@\x97\a\n\x06\x80\a\x81\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0eH\x10\b\b\x10\bH\x10\b\b\x10\b\xfe\xc8\x10\b\b\x10\b\xd0\a\t\t\a`\a\t\t\a\x00\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\b\x00\x1a\x00&\x002\x00m\x00\x00\x01\x16\x1d\x01#532\x17\a\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\a\x15\x14;\x012=\x014+\x01\"\x15\x14;\x012=\x014+\x01\"\x15\x13>\x0154.\x01/\x01&546;\x012\x17\x16?\x016'&'54+\x01\"\x1d\x01\x0e\x01\x15\x14\x16\x1f\x01\x16\x15\x14\x06+\x01\"'&\x0f\x01\x06\x17\x16\x17\x15\x14;\x0125\x01y\a\x80\x06\n\a7\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\nȠ\bP\b\bP\b\bP\b\bP\b\x90\x12\x19\b\x0f\t-\t\a\x05\x1c\a\x06\x06\x04\f\a\b\x0e\x11\b\x10\b\x12\x19\x12\x0e-\t\a\x05\x1c\a\x06\x06\x04\f\a\b\x0e\x11\b\x10\b\x01W\a\n\x06\x80\a\x81\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0eH\x10\b\b\x10\bX\b\b\x10\b\b\xfe\xe8\x01\x1a\x12\n\x12\r\x03\r\x03\n\x05\b\x04\x03\x04\v\a\x05\v\x01\x18\b\b\x18\x01\x1a\x12\x0f\x18\x05\r\x03\n\x05\b\x04\x03\x04\v\a\x05\v\x01\x18\b\b\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00;\x00C\x00L\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x13&\x0f\x01'654&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x013\x17\a\x06\x1f\x01\x16?\x01\x17\x16?\x016/\x0176/\x01#532\x16\x14\x067\x15#532\x1f\x01\x16\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8E\f\v\x1e!!%\x1bP\a\t\t\a\x10\a\t\x13;\x1e\v\v\v\f\v\x1e\x1e\v\f\v\v\v\x1e\x1e\v\v\x8000\a\t\tɀ\x06\n\ab\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xfe\xc5\v\v\x1e!\x12&\x1b%\t\a\xa0\a\t\t\a0;\x1e\f\v\v\f\f\x1e\x1e\f\f\v\v\f\x1e\x1e\v\v7 \t\x0e\t\x96\x06\x80\ab\a\x00\x00\x04\x00\x00\xff\xc0\x02A\x01\xc0\x007\x00@\x00E\x00O\x00\x007\x1e\x01;\x01\x15\x14\x06#!\"&5\x1146;\x01\x15\x14\x16;\x01\x15\a\x15&'.\x01\a'&\"\x0f\x01\x06+\x01\"\x06\x14\x16;\x0126?\x01\x17\x1e\x01?\x0162\x13\x15#532\x1f\x01\x16\a7\x17\a#%\x16\x14\x0f\x01'762\x17\xda\x06\x14\f\x80\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8\x0e\n\x88\x80\x06\x03\t+\x0e\x0e\x06\"\x06\x12\x03\b\f\a\t\t\a\f\x0e\x17\x04\v\x11\x03\x16\x04\b\x03\x0e\xa9\x80\x06\n\ab\a`\xa3D\xa2E\x01\x19\a\a\x1cD\x1c\a\x15\b\x18\v\r(\n\x0e\x0e\n\x01\xd0\n\x0e\x88\n\x0e/\u007fR\x01\x05\x12\t\f)\x11\x116\b\t\x0e\t\x10\x0e\x1f2\n\x02\n\x0f\x06\x01(\x06\x80\ab\a\xeb\xa2D\xa3\xf9\b\x15\a\x1cD\x1c\a\a\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00'\x000\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x1326/\x01&\"\x0f\x01\x06\x16;\x01\x15\x14\x16;\x0126=\x017\x16\x1d\x01#532\x17\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8A\v\b\b`\x05\x0e\x05`\b\b\vA\t\a \a\t\x99\a\x80\x06\n\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xfe\xa0\x14\a`\x05\x05`\a\x14P\a\t\t\aP\xf7\a\n\x06\x80\a\x00\x02\x00\x00\xff\xbf\x02\x00\x01\xc7\x00\x17\x00&\x00\x00%\x16\x14\x0f\x01\x06\"/\x01&4?\x01'&?\x016\x1f\x01762\x17\x137'\a\x17\x16\x14\x06\"/\x01\x0f\x01\x06\a\x01\xf7\t\t\xde\x1cP\x1cu\x1c\x1c_V\f\f\x16\f\vVR\t\x1b\t[1\xa3;;\t\x12\x1b\t;Q\x0e\x05\x02\xe7\t\x1b\t\xde\x1c\x1cu\x1cP\x1c_V\v\f\x16\f\fVR\t\t\xfe\xe90\xa3;;\t\x1b\x12\t;R\r\x05\a\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02@\x01\xc7\x00\n\x00\"\x001\x00\x00%\x16\x15\x14\x06\"&546?\x01\x16\x14\x0f\x01\x06\"/\x01&4?\x01'&?\x016\x1f\x01762\x17\x137'\a\x17\x16\x14\x06\"/\x01\x0f\x01\x06\a\x02\x00@%6% \x10\a\t\t\xde\x1cP\x1cu\x1c\x1c_V\f\f\x16\f\vVR\t\x1b\t[1\xa3;;\t\x12\x1b\t;Q\x0e\x05\x02\x80]#\x1b%%\x1b\x10@\x18\u007f\t\x1b\t\xde\x1c\x1cu\x1cP\x1c_V\v\f\x16\f\fVR\t\t\xfe\xe90\xa3;;\t\x1b\x12\t;R\r\x05\a\x00\x00\x06\xff\xfe\xff\xc0\x02\x01\x01\xc2\x00\r\x00-\x00A\x00\\\x00n\x00\x91\x00\x0062\x16\x15\x16\a\x06#\"&76'47\x1e\x01\x15\x16\a\x0e\x02'.\x0176'4&'\"\x06\x15\x16\a\x0e\x01.\x0176'&6&\x1e\x01\a\x06\x17\x16\a\x14\x0e\x01'.\x0176'&767\x1e\x01\x17\x14\x15\x14\a\x0e\x01'.\x0176'.\x01'\"\a\x06.\x01676\x05\x16\x15\x14\x06#\"&54'&676\x1e\x02'\x16\x0e\x01&'.\x04#&\a\x06\x17\x15\x14\x0e\x01#0#\"&=\x01&76\x172\x1e\x02\xf6\x14\x0e\x02\x1f\x05\x12\x0f\v\x02\x1e\x02\x17+>\x01\f\x01\x04\x0e\t\t\f\x02\v\x01\"\x17\x19\x1e\x01\x0f\x02\x11\x13\v\x02\x0e\x01\x01;I\x0f\x02\x06\x1d\x01\x01\v\x05\x0e\t\t\f\x02\n\x01\x01(\x06\x89Lm\x01\x06\x01\x0e\v\n\r\x02\x06\x01\x01Q9\x12\x10\t\x11\x05\v\t\x18\x01\x12\x06\x0e\n\n\x0e\x05\x02\v\n\x04\n\a\x06'\x06\x04\x10\x14\x05\f\x1e\"&(\x15X<9\x01\a\v\x06\x01\n\r\x01GKl\x1f>60\xca\x0e\nrn\x12\x15\tik\n`\x01<*MK\x04\t\b\x01\x02\x10\nGH\x17 \x01 \x15ML\t\v\x04\x10\nFI)<\x1a\r\x13\b#.><\x03\t\b\x01\x02\x10\n79?1\b:\x01kJ\a\a55\b\x0e\x01\x01\x10\n897O\x01\x04\x02\n\x14\x11\x02\x05z\x1c,\n\x0e\x0f\t'\x17\n\x11\x02\x01\x02\x05\bV\b\x14\v\x03\t\x11\x1c\x16\x10\t\x01<9R\x18\x06\v\x06\x0f\n\x15fHJ\x01\x10\x1d*\x00\x00\x00\x02\xff\xfe\x00 \x02@\x01`\x00\x18\x00$\x00\x00\x012\x1e\x02\x14\x0e\x02#\"&'\a\x06&?\x01'&6\x1f\x01>\x01\x16264&#\"\x0e\x02\x15\x14\x01G0a@((@a0>p&X\t\x14\x02\x19\x19\x02\x14\nW&p\x8c\x13\x0f\x0f\t\x05\t\a\x03\x01`)73\x1a37)<*B\a\v\nnn\n\v\aB*<\xb8\x0e\x14\x0e\x04\x06\t\x05\n\x00\x06\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x00\x00$2\x16\x14\x06\"&4&2\x16\x14\x06\"&462\x16\x14\x06\"&4\x16\x14\x16264&\"\x1724+\x01\"\x1436264&\"\x06\x14\x01N\x14\x0e\x0e\x14\x0e\xb2\x14\x0e\x0e\x14\x0e\x11Α\x91ΑP*<**<\xbe\x10\x10\x80\x10\x10\x82<**<*\xf8\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14ΑΑ\x91\xce)<**<*\xf8 h*<**<\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1f\x00'\x00\x00\x122\x16\x14\x06\"&4\x16\x14\x16264&\"\x17\x166'.\x01#\"\x0e\x01\a\x06\x167626264&\"\x06\x14\x91Α\x91Α\x88\x13\x1a\x13\x13\x1a\xa8\t\r\x01\x05=\x1e\x13(\"\x03\x01\r\t14)\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xce*\x1a\x13\x13\x1a\x13\xd7\x03\f\t\x1b\"\r\x1d\x13\t\f\x03\x0f\x88\x13\x1a\x13\x13\x1a\x00\x00\x00\x02\xff\xfa\xff\xc0\x02\x06\x01\xc0\x00\x17\x00\x1b\x00\x00\x01\a\x1532\x16\x15\x14+\x01\"546;\x015'&63!2\x16\a!\x17!\x01\xf6\xd68\x11\x17\b\xf0\b\x17\x118\xd6\x10\x11\x17\x01\xbc\x17\x11J\xfe\x880\x01\x18\x01\x86\xd6\xc0\x17\x11\b\b\x11\x17\xc0\xd6\x10**\x060\x00\x00\x02\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00j\x00\x00\x122\x16\x14\x06\"&4\x0546;\x01.\x01'\x15\x14\x06+\x01\"\x0f\x01\x06\x0f\x01\x06\x1d\x01\x14\x16;\x012\x1f\x01\x16;\x012\x16\x15\x14\x0f\x01\x06/\x01&+\x01\"\x0f\x01\x06\x1d\x01\x14\x16;\x012\x16\x1d\x01\x14\x17\x1632?\x01676?\x016?\x016=\x014&+\x01\"/\x01&6?\x01632\x1f\x01\x1632?\x0165\x91Α\x91Α\x01\x98\t\a\x12\x0eY;\t\x06\x19\b\x05\b\x03\x06\x0e\f\t\aZ\x06\x05\x06\x05\x06\n\a\t\v/\x06\x06\x0e\f\r\x01\x12\x0f\x1b\x16 \x17\x19\a\t\b\b\x11\x0f\b\r\v\x0e\x04\x01\x04\x01\x02\x13\x03\t\a\b\b\x05\r\x04\x05\a\x03\x02\x03\x04\x04\x13\x03\x05\x04\x03\x0f\t\x01\xb8\x91Α\x91\xceG\a\t:R\t\x15\a\t\a\f\x05\x01\x04\x03\f\x04\a\t\x05\x06\x05\t\x06\f\x03\x10\x02\x03\a\x06\v\x15\x10\x1b\x0e\x17 \t\a\x1d\x13\x11\x0f\f\x14\x10\r\x04\x05\x16\x04\x03\x19\x04\x05\v\a\t\a\x14\x06\x0f\x02\x01\x01\x03\f\x03\x02\b\x04\n\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00_\x00n\x00\x00\x122\x16\x14\x06\"&4\x05654/\x01&+\x01.\x01#\"/\x01&54?\x01632\x1f\x01\x16;\x0126/\x01&54?\x016;\x012?\x016/\x01&?\x026/\x01\x06\a\x15\x14\x06/\x01\x06\a\x16\x17\x16\x1f\x01\x16\x17\x16\x17\x16\x1d\x01\x14\x17\x1e\x01\a\x152?\x01676767\x17654'\a\x06\x0f\x01\x06\x14\x1f\x01\x16\x91Α\x91Α\x01J\x0e\t\x0e\t\rC\x04\x16\x06\x10\x0e\v\a\b\x1f\x03\x02\x06\x05\t\x02\x03\x06\x05\x04\x02\x0f\x01\x02\n\x02\x04\t\x03\x02\b\x06\x06\x04\x06\x06\n\x05\v\v\x1d\f\f\x0f\b\x18G \x19\t\b\n\x01\x0f\x11\x12\x1f\x10\t\v\r\x01\x15\x16\x11\x01\x04\x01\x05\x03_\x1d\x02\x15\r\x06\x04\x13\x04\x04\x12\x05\x01\xb8\x91Α\x91\xce\xd5\x0e\x13\r\t\x0e\t\x02\x1e\a\x06\x03\a\t\x03\n\x01\x04\b\x02\b\x04\x1f\x01\x02\x04\x02\n\x02\x02\b\x06\x06\x04\x06\x06\n\x05\v\v\x1d\x01\x02\v\t\t\x04\f\x1fG&\r\f\t\x01\r\t\t\x11\t\x13 \r\t\v\x1f\n\x1b\x05/\x02\x0e\a\x04\x03d\b\x0f\v/*\x06\x03\x05\x1e\x06\x0e\x06\x1b\b\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x008\x00m\x00\x00\x122\x16\x14\x06\"&4\x17762\x17\x16;\x012=\x014/\x01&4?\x01&#\"\x06\x15\x14\x1732?\x016\x16\x1f\x01\x16;\x0126=\x014/\x01&?\x01632\x1754/\x01&=\x014+\x01\"\x0f\x01\x06+\x01\"/\x01&+\x01\"\x0f\x01\x06\x0f\x01\x06\x1d\x01\x14\x1f\x01\x16;\x01237632\x1f\x01\x16;\x012?\x016\x91Α\x91Α\xed\x11\x01\x06\x01\x02\x05\x03\b\t\v\x04\x033\x1f\x1fSu\x03>\a\x05\x13\x03\b\x02\x17\x04\n\x06\a\t\x05\x05\x06\x06\x05\x05\a\t\xb0\x05\f\x02\x04\x06\x03\x01\x04\x01\x03\x04\x02\x01\x06\x02\x05\f\x03\x02\x18\x02\x03'\x06\x03\f\x04\a\n\x02\x02\x16\x03\x03\v\b\r\x05\x06\x0f\a\x05\t\x05\x01\xb8\x91Α\x91\xce_\x1d\x02\x03\x04\bN\n\x04\x06\x02\t\x03&\nuS\x0f\x11\x05\x13\x03\x01\x04-\t\t\a\t\a\x05\x05\x06\x06\x05\x05f\x18\a\x04\f\x03\x03\r\x04\x03\x0e\x03\x02\r\x05\x01\x11\x02\x01\x10\x02\x06\n\x03\x02\f\x05\x06\x01\b\r\x05\x05\t\x05\x00\x00\x00\x00\r\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0e\x00\x15\x00\x1d\x00!\x00%\x00)\x00-\x001\x005\x00=\x00D\x00K\x00\x00\x122\x16\x14\x06\"&4\x175#\x15\x14\x16375#\"\x06\x1d\x016\x14\x16264&\"\x175#\x1575#\x15\x175#\x1575#\x15\x175#\x1575#\x156264&\"\x06\x14\x175#\x15326=\x014&+\x01\x15\x91Α\x91Α\x90(\x13\r\b\b\r\x13 \x13\x1a\x13\x13\x1a5000p000p000\x1b\x1a\x13\x13\x1a\x13`(\b\r\x13\x13\r\b\x01\xb8\x91Α\x91\xce\xf7(\b\r\x138(\x13\r\b\x95\x1a\x13\x13\x1a\x13\xe0((8((8((8((8((8((h\x13\x1a\x13\x13\x1a\x93\b(\x13%\b\r\x13(\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00&\x00\x00\x122\x16\x14\x06\"&4\x04\"\x06\x14\x16264&\"\x06\x14\x16264\x142676&\a\x06\"'&\x0e\x01\x17\x16\x91Α\x91Α\x01U\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13`Y\a\x01\r\t/\x98/\x06\n\x06\x01\a\x01\xb8\x91Α\x91\xce\x17\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\xed6'\t\f\x03\x0f\x0f\x02\x04\n\x06'\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x15\x00#\x002\x00\x00\x122\x16\x14\x06\"&4%\x06\a\x16\x17\x162767&'&\"\a\x06\a\x16\x17\x162767&'&\"\x122676&\a\x06\"'&\x0e\x01\x17\x16\x91Α\x91Α\x018\x0f\x01\x01\x0f\x06\x15\x05\x0f\x01\x01\x0f\x06\x15\xa5\x0f\x01\x01\x0f\x06\x15\x05\x0f\x01\x01\x0f\x06\x15+`Y\a\x01\r\t/\x98/\x06\n\x06\x01\a\x01\xb8\x91Α\x91\xce\x10\x16!\"\x15\t\t\x16!\"\x15\t\t\x16!\"\x15\t\t\x16!\"\x15\t\xfe\xd06'\t\f\x03\x0f\x0f\x02\x04\n\x06'\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x17\x00+\x009\x00\x00\x122\x16\x14\x06\"&4$\"\x06\a\x14\x16?\x0162\x1f\x01\x166'&'\"\x06\a\x14\x16?\x0162\x1f\x01\x166'.\x04\x122676&\a\x06\"'&\x06\x17\x16\x91Α\x91Α\x01[&#\x02\f\x03\n\f&\r\t\x03\r\x01\x02\xd6\x13#\x02\f\x03\n\f&\r\t\x03\r\x01\x01\b\v\x0e\x0f\x19`Y\a\x01\r\t/\x98/\t\r\x01\a\x01\xb8\x91Α\x91\xce\x01)\x1e\a\x03\x05\x11\x16\x16\x11\x05\x03\a\x1e))\x1e\a\x03\x05\x11\x16\x16\x11\x05\x03\a\f\x16\x12\f\a\xfe\xe86'\t\f\x03\x0f\x0f\x03\f\t'\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf8\x01\xc1\x00\v\x00\x1d\x00-\x00A\x00P\x00\x00\x00\"&54762\x17\x16\x15\x14\a27\x16\x15\x14\x06\"&4632\x17\x06\x15\x14\x16&\"\x06\a\x14\x16?\x0162\x1f\x01\x166'&'\"\x06\a\x14\x16?\x0162\x1f\x01\x166'.\x04\x122676&\a\x06\"'&\x0e\x01\x17\x16\x01\xdc(\x1c*\x02\b\x02*0\t\v\x14\x91Α\x91gJ>\b/L&#\x02\f\x03\n\f&\r\t\x03\r\x01\x02\xd6\x13#\x02\f\x03\n\f&\r\t\x03\r\x01\x01\b\v\x0e\x0f\x19`Y\a\x01\r\t/\x98/\x06\n\x06\x01\a\x01@\x1c\x13\x177\x03\x037\x17\x13<\x0303g\x91\x91Α)\x12\x0e!.\b)\x1e\a\x03\x05\x11\x16\x16\x11\x06\x04\a\x1e))\x1e\a\x03\x05\x11\x16\x16\x11\x06\x04\a\f\x16\x12\f\a\xfe\xe86'\t\f\x03\x0f\x0f\x02\x04\n\x06'\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x19\x00'\x00:\x00\x00\x122\x16\x14\x06\"&4\x17\x06\x16\x1f\x01\x16?\x016&'&\x06\x0f\x01'&\x06\x122676&\a\x06\"'&\x06\x17\x16%>\x01'.\x02\x0f\x01'.\x01\a\x0e\x01\x1f\x01\x167\x91Α\x91ΑZ\x05\x0e\x10F\b\x02\x14\x04\x11\x10\x0e\x18\x04\x02\a\x0e\x1ai`Y\a\x01\r\t/\x98/\t\r\x01\a\x01\x0e\x10\x0e\x05\x04\x0e\x12\t\a\x02\x04\x18\x0e\x10\x11\x04\x14\x02\b\x01\xb8\x91Α\x91\xce\x1f\x0f\x1c\x04\x12\x02\bF\x0f\x1b\x02\x03\x11\r\b\x02\x04\r\xfe\xfb6'\t\f\x03\x0f\x0f\x03\f\t'\x93\x04\x1c\x0f\t\f\x03\x02\x02\b\r\x11\x02\x03\x1b\x0fF\b\x02\x00\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x16\x00#\x001\x00\x00\x122\x16\x14\x06\"&4\x05\x06\x14\x1f\x01\x166/\x01764.\x01\x0f\x01\x17\a\x06\x16?\x0164/\x01&\x06\x122676&\a\x06\"'&\x06\x17\x16\x91Α\x91Α\x01\x1a\x06\x06P\b\x0e\a!!\x03\x06\b\x04\xf3!!\a\x0e\bP\x06\x06P\b\x0eX`Y\a\x01\r\t/\x98/\t\r\x01\a\x01\xb8\x91Α\x91\xce-\x03\x0e\x030\x05\x0f\b((\x04\t\x06\x02\x03\x12((\b\x0f\x050\x03\x0e\x030\x05\x0f\xfe\xf06'\t\f\x03\x0f\x0f\x03\f\t'\x00\x06\xff\xff\xff\xbf\x02\x01\x01\xc1\x00\v\x00\x17\x00/\x00<\x00J\x00Z\x00\x00\x01\"&76762\x16\x14\a\x06\x012\x16\a\x06\a\x06\"&476\x0167\x16\x0e\x02'676&\a\x06\a&>\x02\x17\x06\a\x06\x16'\a\x06\x16?\x016&/\x02.\x01\a\x1e\x01?\x016.\x01\x0f\x01\x06\x16\x1f\x02>\x01'&\x06\a\x0e\x01\a\x0e\x01\x17\x1626\x01\x9a\x05\x06\x01\v\x10\x0e*\x1d\x0e\x11\xfe\x85\x05\x06\x01\v\x10\x0e)\x1e\x0e\x11\x01\u007f!\x18)\x14y\xa8G\a\x05\x02\x19\x17!\x18)\x14y\xa8G\a\x05\x02\x19\x87\x17\x01\t\aZ\n\x02\n4\x05\x01\x14]\x01\x14\x02\x17\x01\x04\a\x05Z\n\x02\n4\xdc\"\x19\x17\x05\x12\x04\x17k,\b\x02\b\x15<@\x01P\x05\x05H\x10\x0e\x1e)\x0e\x11\xfe\xd6\x05\x05H\x10\x0e\x1e)\x0e\x11\x01\n\x05\aG\xa8y\x14)\x19 \x11\x1f\x02\x05\aG\xa8y\x14)\x19 \x11\x1f([\x06\n\x02\x17\x02\x14\x01\x054\n\x02\xf0\n\x02\nZ\x05\a\x04\x01\x17\x02\x14\x01\x05`\"a$\a\x01\b,k\x17\x04\x12\x05\x0f\x1c\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00 \x00.\x00G\x00\x00\x122\x16\x14\x06\"&4\x17\x0e\x01\x1f\x01\a\x06\x16?\x01\x17\x166/\x0176&/\x02&\"\x0f\x01\x122676&\a\x06\"'&\x06\x17\x16%6&/\x02&\"\x0f\x02\x0e\x01\x1f\x01\a\x06\x16?\x01\x17\x166/\x01\x91Α\x91Α_\x05\x03\x03\x1a\x06\x01\a\x05\x1f\x1f\x04\b\x01\x06\x1a\x03\x03\x05#\x0f\x02\n\x02\x0fF`Y\a\x01\r\t/\x98/\t\r\x01\a\x01'\x03\x03\x05#\x0f\x02\n\x02\x0f#\x05\x03\x03\x1a\x06\x01\a\x05\x1f\x1f\x05\a\x01\x06\x01\xb8\x91Α\x91\xce\x10\x01\t\x03\x19#\x04\x06\x02\x11\x11\x02\x06\x04#\x19\x03\t\x01\x05 \x04\x04 \xfe\xf46'\t\f\x03\x0f\x0f\x03\f\t'\xc4\x03\t\x01\x05 \x04\x04 \x05\x01\t\x03\x19#\x04\x06\x02\x11\x11\x02\x06\x04#\x00\x06\xff\xff\xff\xc8\x02\x81\x01\xb8\x00\v\x00\x17\x006\x00F\x00V\x00d\x00\x0072\x16\a\x06\a\x06\"&476\x05\x16\x14\x06\"'&'&6\x17\x16\a\x16\x17\x1e\x011\x0e\x01\"&'?\x01676&\a\x06\a>\x0132\x1e\x01\x17&'&\x06&\"\x06\a\x14\x16?\x0162\x1f\x01\x166'.\x01\"\x06\a\x14\x16?\x0162\x1f\x01\x166'&\x062676&\a\x06\"'&\x06\x17\x16f\x05\x06\x01\v\x10\x0e)\x1e\x0e\x11\x02S\x0e\x1e)\x0e\x11\n\x01\x06\x05Hr\f\x18\x01\x02 s\x88s \x01\x02\x18\f\x02\x19\x17\v\r\n\x8d_?lE\x06\r\v\x14\x1cK&#\x02\f\x03\n\f&\r\t\x03\r\x01\x02\xc3&#\x02\f\x03\n\f&\r\t\x03\r\x01\x02\x16`Y\a\x01\r\t/\x98/\t\r\x01\a\xc0\x05\x05H\x10\x0e\x1e)\x0e\x11\x11\x0e)\x1e\x0e\x11G\x05\x06\x01\v\x03R\x18\x01\x029DD9\x01\x02\x18R\x11\x1f\x02\x02\x02]\u007f:e=\x02\x02\x02\x1cb)\x1e\a\x03\x05\x11\x16\x16\x11\x06\x04\a\x1e))\x1e\a\x03\x05\x11\x16\x16\x11\x06\x04\a\x1e\xef6'\t\f\x03\x0f\x0f\x03\f\t'\x00\x00\x00\x04\x00\x00\xff\xbf\x01\xf0\x01\xb8\x00\x1d\x00%\x00-\x00K\x00\x00\x122\x16\x15\x14\x06\a6=\x01676&\a\x06\"'&\x06\x17\x16\x17\x15\x14\x17.\x0154\x16264&\"\x06\x14\x16264&\"\x06\x14\a:\x01\x1e\x02\x17\x15\x14\x06#\".\x02=\x01636\x16\x1f\x01\x162?\x01>\x02\x91ΑYH\t*\x06\x01\r\t/\x98/\t\r\x01\x06*\tHY\x9b\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13\x03\x01\x01\x02\x04\a\x04&\x1b\r\x17\x11\n\x12\x01\v\x15\x03\x01\x02\x0e\x02\x01\x02\v\x0f\x01\xb8\x91gO~\x1b\x14\x14.\x1b$\t\f\x03\x0f\x0f\x03\f\t$\x1b.\x14\x14\x1b~OgW\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x9a\x02\x01\x04\x02@\x1b%\v\x11\x18\r?\t\x05\v\v\b\a\a\b\a\v\x02\x00\x00\x00\x04\x00\x00\xff\xbf\x01\xf0\x01\xb8\x00\x1d\x00;\x00H\x00U\x00\x00%:\x01\x1e\x02\x17\x15\x14\x06#\".\x02=\x01636\x16\x1f\x01\x162?\x01>\x02\x022\x16\x15\x14\x06\a6=\x01676&\a\x06\"'&\x06\x17\x16\x17\x15\x14\x17.\x0154\x1764/\x01&\x06\x1f\x01\a\x06\x16?\x01'76&\x0f\x01\x06\x14\x1f\x01\x166\x01%\x01\x01\x02\x04\a\x04&\x1b\r\x17\x11\n\x12\x01\v\x15\x03\x01\x02\x0e\x02\x01\x02\v\x0f\x8dΑYH\t*\x06\x01\r\t/\x98/\t\r\x01\x06*\tHY\xd6\x06\x06P\b\x0e\a!!\a\x0e\b\xf3!!\a\r\tP\x06\x06P\b\x0eI\x02\x01\x04\x02@\x1b%\v\x11\x18\r?\t\x05\v\v\b\a\a\b\a\v\x02\x01l\x91gO~\x1b\x14\x14.\x1b$\t\f\x03\x0f\x0f\x03\f\t$\x1b.\x14\x14\x1b~OgA\x03\x0e\x030\x05\x0f\b((\b\x0f\x05\x12((\b\x0f\x050\x03\x0e\x030\x05\x0f\x00\x00\x05\x00\x00\xff\xbf\x01\xf0\x01\xb8\x00\a\x00%\x008\x00@\x00^\x00\x00\x002\x16\x14\x06\"&4&2\x16\x15\x14\x06\a6=\x01676&\a\x06\"'&\x06\x17\x16\x17\x15\x14\x17.\x0154\x17\x166'.\x03#\"\x06\a\x06\x16?\x0162\x17\x16264&\"\x06\x14\x17:\x01\x1e\x02\x17\x15\x14\x06#\".\x02=\x01636\x16\x1f\x01\x162?\x01>\x02\x01N\x14\x0e\x0e\x14\x0e\xafΑYH\t*\x06\x01\r\t/\x98/\t\r\x01\x06*\tHY\xc0\x06\x0f\x01\x01\f\x11\x14\n\x14%\x03\x01\x0f\x06\n\v&\v\x884&&4&\r\x01\x01\x02\x04\a\x04&\x1b\r\x17\x11\n\x12\x01\v\x15\x03\x01\x02\x0e\x02\x01\x02\v\x0f\x01\b\x0e\x14\x0e\x0e\x14\xbe\x91gO~\x1b\x14\x14.\x1b$\t\f\x03\x0f\x0f\x03\f\t$\x1b.\x14\x14\x1b~OgP\x06\b\t\t\x10\v\x06\x18\x12\t\b\x06\t\t\t0&4&&4\x8d\x02\x01\x04\x02@\x1b%\v\x11\x18\r?\t\x05\v\v\b\a\a\b\a\v\x02\x00\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\"\x001\x00\x00<\x0162\x16\x14\x06\"\x124&\"\x06\x14\x1627\x166'.\x03#\"\x06\a\x06\x16?\x0162\x17\a&\x06\x17\x1e\x012676.\x01\a\x06\"\x91Α\x91\xce7\x13\x1a\x13\x13\x1a\xbb\x06\x0f\x01\x01\f\x11\x14\n\x14%\x03\x01\x0f\x06\n\v&\v\xe9\t\r\x01\aY`Y\a\x01\x06\n\x06/\x98YΑ\x91Α\x01\x1b\x1a\x13\x13\x1a\x13\a\x06\t\b\t\x10\v\x06\x18\x12\t\b\x06\t\t\ta\x03\f\t'66'\x06\n\x04\x02\x0f\x00\x00\x06\x00\x00\x00 \x01\xc0\x01`\x00\x0f\x00\x1f\x00/\x00?\x00O\x00_\x00\x0072\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01463%2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01463`\r\x13\x13\r@\r\x13\x13\r\xe0\r\x13\x13\r@\r\x13\x13\r\xe0\r\x13\x13\r@\r\x13\x13\r\xff\x00\r\x13\x13\r@\r\x13\x13\r\xe0\r\x13\x13\r@\r\x13\x13\r\xe0\r\x13\x13\r@\r\x13\x13\r\xa0\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\xc0\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x00\x00\x06\x00\x00\xff\xe0\x01@\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00O\x00_\x00\x00\x132\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463`\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r\x01\x00\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r@\r\x13\x13\r\x01\xa0\x13\r@\r\x13\x13\r@\r\x13\xa0\x13\r@\r\x13\x13\r@\r\x13\xa0\x13\r@\r\x13\x13\r@\r\x13\x01@\x13\r@\r\x13\x13\r@\r\x13\xa0\x13\r@\r\x13\x13\r@\r\x13\xa0\x13\r@\r\x13\x13\r@\r\x13\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x11\x00\"\x00@\x00\x0072\x16\x1d\x01\x14\x06+\x01\".\x01=\x014>\x01;\x012\x16\x1d\x01\x14\x0e\x01+\x01\"&=\x01463\x022\x16\x17\x15\x14\x06+\x01\"&=\x014&#\"\x0e\x01\x1d\x01\x14\x06+\x01\"&=\x016\xa0\r\x13\x13\r\x10\x11\x1e\x11\x11\x1e\x11\xe0\x1b%\x11\x1e\x11\x10\r\x13\x13\r\xc9Ҕ\x03\t\a\x10\a\tzV8`8\t\a\x10\a\t\x03\xa0\x13\r\x80\r\x13\x11\x1e\x11@\x11\x1e\x11&\x1a@\x11\x1e\x11\x13\r\x80\r\x13\x01\x00\x97ip\a\t\t\apVz8`8p\a\t\t\api\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x0f\x00\x1f\x00F\x00\x007\x15\x14\x06+\x01\"&=\x0146;\x012\x16\x17#\"&=\x0146;\x012\x16\x1d\x01\x14\x06\x022\x16\x17\x15\x14\x06+\x01\"&46;\x012\x16\x153265454&\"\x06\x1d\x01\x14\x06+\x01\"&=\x016\xc0\x13\r\x10\x1b%%\x1b\x10\r\x13\xb0\x10\r\x13\x13\r\x10\x1b%%\xf4Ҕ\x035%\xb6\x14\x1c\x1c\x14 \x14\x1cf\x11\x19z\xacz\t\a\x10\a\t\x03\xf0p\r\x13%\x1b0\x1b%\x13\x9d\x13\rp\r\x13%\x1b0\x1b%\x01`\x97i\xa6%5\x1c(\x1c\x1c\x14\x19\x11\xa4\x02VzzV\x10\a\t\t\a\x10i\x00\x03\x00\x00\xff\xc0\x02!\x01\xc1\x00\x03\x00\x11\x00\x1b\x00\x00\x157\x17\a\x137\x17\a\x06/\x01\a'7'&54%\x1e\x01\x0f\x01'76\x16\x17DC#\x19)\xad#\x10\x16+3`3\r\x02\x01\xa0\x0f\x02\x0f\xaa\xa9\xc7\x10+\x10 FC#\x01\x10#\xad*\x11\a\r3`3+\x05\x06\x10\xac\x10+\x10ǩ\xaa\x0f\x02\x0f\x00\x00\x00\x00\b\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x13\x00'\x00;\x00G\x00S\x00_\x00k\x00s\x00\x00\x01&'&'&6;\x012\x17\x16\x17\x16\x17\x16\x06+\x01\"'&'&'&6;\x012\x17\x16\x17\x16\x17\x16\x06+\x01\"\x172\x16\x1d\x01\x14\x06#!\"&=\x0146;\x012\x1f\x01\a54+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012754+\x01\"\x1d\x01\x14;\x012\x00\"&462\x16\x14\x01\x9e\x05\x1b+\a\x01\n\a\x10\x0e\x02\x05\x1b+\a\x01\n\a\x10\x0en\x05\x1b+\a\x01\n\a\x10\x0e\x02\x05\x1b+\a\x01\n\a\x10\x0e\xac\r\x13%\x1b\xfe\x80\x1b%%\x1b+\x15\x11o\x80\b\x10\b\b\x10\b`\b\x10\b\b\x10\b`\b\x10\b\b\x10\b`\b\x10\b\b\x10\b\xfe\xbb6%%6%\x01\x0e(\x16$>\a\v\x0e(\x16$>\a\v\x0e(\x16$>\a\v\x0e(\x16$>\a\v@\x13\r\xa0\x1b%%\x1b\xe0\x1b%\rS\xb8p\b\bp\b\bp\b\bp\b\bp\b\bp\b\bp\b\bp\b\x01@%6%%6\x00\b\x00\x00\xff\xc0\x02@\x01\xc0\x00-\x00=\x00M\x00]\x00m\x00s\x00\x83\x00\x93\x00\x00\x01#\x1132\x16\x1d\x01\x14\x06+\x0154&+\x01\"\x06\x1d\x01#\"&=\x0146;\x01\x11#\"&=\x01463!2\x16\x1d\x01\x14\x06\x05\x15\x14\x16;\x0126=\x014&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x014&+\x01\"\x06'\x15\x14\x16;\x0126=\x014&+\x01\"\x06\x1726=\x014&+\x01\"\x06\x1d\x01\x14\x163\x1734&\"\x06%54&+\x01\"\x06\x1d\x01\x14\x16;\x0126=\x014&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x020\x10\x10\a\t\t\a\xf0\t\a \a\t\xf0\a\t\t\a\x10\x10\a\t\t\a\x02 \a\t\t\xfe\xc9\b\x05&\x05\b\b\x05&\x05\b\b\x05&\x05\b\b\x05&\x05\b\x80\b\x05&\x05\b\b\x05&\x05\b3\x05\b\b\x05&\x05\b\b\x053\xc08P8\x01\x00\b\x05&\x05\b\b\x05&\x05\b\b\x05&\x05\b\b\x05&\x05\b\x01\x80\xfe\x80\t\a \a\tP\a\t\t\aP\t\a \a\t\x01\x80\t\a \a\t\t\a \a\t-&\x05\b\b\x05&\x05\b\be&\x05\b\b\x05&\x05\b\b[&\x05\b\b\x05&\x05\b\b\x98\b\x05&\x05\b\b\x05&\x05\b\x80(88e&\x05\b\b\x05&\x05\b\be&\x05\b\b\x05&\x05\b\b\x00\x00\x00\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x16\x00\x1e\x007\x00D\x00Q\x00\x00\x01&=\x014;\x012\x1d\x01\x14\x17\x1e\x01\x1d\x01\x14+\x01\"=\x014\x056\x1f\x01#\"'6\x01\x1e\x01\x1d\x01\x14+\x01\"=\x014.\x01'&=\x014;\x012\x1d\x01\x14\x032\x1e\x01\x1f\x01#\".\x01/\x012!2\x16\x1d\x01\x14\x06+\x01\"&/\x01\x01\xbc<\b0\b(\x1a\x1e\b0\b\xfe\xe3$\x18qY\x97\x80Z\x01\xcf).\b0\b\x10\x1e\x15\x1d\b0\b\xb7\b\x13\x10\x06vY\b\x13\x10\x06u\x01\x01V\n\x0e\x0e\n\x11\r\x1c\bv\x01\v*AB\b\b>,\x1c\x129!\x1e\b\b\x1e,\x99\x06\x1b\x84P8\x01!\x1bW1\x1e\b\b\x1e\x19/'\r\x13%>\b\b>\v\xfe\xf1\x06\n\x06\x8a\x06\n\x06\x8a\x0e\np\n\x0e\r\t\x8a\x00\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00-\x005\x00\x00\x122\x16\x14\x06\"&4\x16264&\"\x06\x14\x174'654.\x01'&\x06\x1f\x01\x16\x14\x0f\x01\x06\x14\x1f\x01\x16\x14\x0f\x01\x06\x167>\x02264&\"\x06\x14\x91Α\x91Α\x9b\x1a\x13\x13\x1a\x13\xa8##\x11\"\x15\x06\x03\x06\x11\x15\x15\x11\x05\x05\x11\x15\x15\x11\x06\x03\x06\x1f)\v\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xceW\x13\x1a\x13\x13\x1a\xaf\x16\x0e\x0e\x16\n\x13\x0e\x01\x01\r\x03\a\t\x19\t\a\x02\v\x02\a\t\x1a\b\b\x02\x0e\x01\x02\x1b\xab\x13\x1a\x13\x13\x1a\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x17\x005\x00G\x00\x00\x122\x16\x14\x06\"&4\x17\x1665.\x01\"\x06\a\x14\x16?\x0162\x1f\x014'654.\x01'&\x06\x1f\x01\x16\x14\x0f\x01\x06\x14\x1f\x01\x16\x14\x0f\x01\x06\x167>\x017\x1665.\x02#\"\x06\a\x14\x16?\x0162\x17\x91Α\x91Α\xd1\x03\f\x02#&#\x02\f\x03\t\r&\rh##\x11\"\x15\x06\x03\x06\x11\x15\x15\x11\x05\x05\x11\x15\x15\x11\x06\x03\x06\x1f)A\x03\f\x01\x12\x19\f\x13#\x02\f\x03\t\r&\r\x01\xb8\x91Α\x91\xceK\x06\x04\a\x1e))\x1e\a\x03\x05\x11\x16\x16\xb9\x16\x0e\x0e\x16\n\x13\x0e\x01\x01\r\x03\a\t\x19\t\a\x02\v\x02\a\t\x1a\b\b\x02\x0e\x01\x02\x1b\xb7\x06\x04\a\x14!\x12)\x1e\a\x03\x05\x11\x16\x16\x00\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xfc\x01\xb8\x00\x12\x00&\x00.\x00M\x00a\x00\x00%\x16\x06\x0f\x01\x06/\x01&>\x0176\x16\x1f\x0176\x16\a\x16\x15\x06#\"&462\x16\x15\x14\a&#.\x01\a\x06&264&\"\x06\x14\x174'654.\x02'&\x06\x1f\x01\x16\x14\x0f\x01\x0e\x01\x1f\x01\x16\x14\x0f\x01\x06\x167>\x01?\x0162\x1f\x01\x166'.\x03#\"\x0e\x01\a\x06\x16\x01\xf5\a\x11\x12S\n\x03\x17\x03\a\x12\f\x11\x1c\x04\x03\b\x10\x1f\xab\x17/4g\x91\x91Α\x11\v\b\x15T\x17\x11\xa0\x1a\x13\x13\x1a\x13\x98##\n\x13\x1b\x10\x06\x04\a\x11\x15\x15\x11\x04\x01\x05\x11\x15\x15\x11\x06\x03\x06\x1f)\x10\n\v'\v\t\a\x0e\x01\x01\f\x11\x14\n\r\x1a\x13\x02\x01\x0f.\x12!\x05\x16\x02\tS\f\x17\x10\x02\x02\x13\x10\t\x02\x05\x0f\vT\x01\x15\x91Α\x91g.,\x03%\x02#\x1c\u007f\x13\x1a\x13\x13\x1a\xaf\x16\x0e\x0e\x16\b\x0e\r\b\x01\x01\r\x03\a\t\x19\t\a\x02\v\x02\a\t\x1a\b\b\x02\x0e\x01\x02\x1b\xc2\t\t\t\t\x06\b\t\t\x10\v\x06\n\x14\f\t\b\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00%\x00\x00\x122\x16\x14\x06\"&4\x04\"\x06\x14\x16264&\"\x06\x14\x16264\x172676&#!\"\x06\x17\x1e\x013\x91Α\x91Α\x01U\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x1387Q\a\x01\n\a\xfe\xf2\a\n\x01\aQ7\x01\xb8\x91Α\x91\xce\a\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\xfdH6\a\v\v\a6H\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x19\x00.\x00<\x00\x00\x122\x16\x14\x06\"&4\x05\x06\x16?\x0162\x1f\x01\x166'.\x01#\"\x0e\x01\a\x06\x16?\x0162\x1f\x01\x166'.\x04#\"\x0e\x01\x056&#!\"\x06\x17\x1e\x01;\x0126\x91Α\x91Α\x01\x10\x01\r\x03\n\f&\r\t\x03\r\x01\x02#\x13\f\x18\x12\xa2\x01\r\x03\n\f&\r\t\x03\r\x01\x01\b\v\x0e\x0f\a\f\x18\x12\x01\x1d\x01\n\a\xfe\xf2\a\n\x01\aQ7\x107Q\x01\xb8\x91Α\x91\xce6\a\x03\x05\x11\x16\x16\x11\x05\x03\a\x1e)\x12!\x14\a\x03\x05\x11\x16\x16\x11\x05\x03\a\f\x16\x12\f\a\x12!w\a\v\v\a6HH\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x16\x00#\x001\x00\x00\x122\x16\x14\x06\"&4\x05\x06\x14\x1f\x01\x166/\x01764.\x01\x0f\x01\x17\a\x06\x16?\x0164/\x01&\x06\x056&#!\"\x06\x17\x1e\x01;\x0126\x91Α\x91Α\x01\x1a\x06\x06P\b\x0e\a!!\x03\x06\b\x04\xf3!!\a\x0e\bP\x06\x06P\b\x0e\x01\x1f\x01\n\a\xfe\xf2\a\n\x01\aQ7\x107Q\x01\xb8\x91Α\x91\xce\x11\x03\x0e\x030\x05\x0f\b((\x04\t\x06\x02\x03\x12((\b\x0f\x050\x03\x0e\x030\x05\x0f\xae\a\v\v\a6HH\x00\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x19\x00!\x00/\x00\x00\x122\x16\x14\x06\"&4\x05\x06\x16?\x0162\x1f\x01\x166'.\x02#\"\x06&\"\x06\x14\x16264\x176&#!\"\x06\x17\x1e\x01;\x0126\x91Α\x91Α\x01\f\x01\x0f\x06\n\v&\f\t\x06\x0f\x01\x02\x13\x1a\r\x14%Z\x1a\x13\x13\x1a\x13\xc7\x01\n\a\xfe\xf2\a\n\x01\aQ7\x107Q\x01\xb8\x91Α\x91\xce5\b\t\x06\t\t\t\t\x06\t\b\f\x14\n\x18\x1c\x13\x1a\x13\x13\x1a\u007f\a\v\v\a6HH\x00\x00\x00\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\t\x00\x13\x00A\x00L\x00P\x00\x007\"&=\x0146;\x01\x15%\x14\x06+\x01532\x16\x15\x132\x16\x1d\x01\x14\x06+\x01\x16\x15\x14\x06\"&547#\x16\x15\x14\x06\"&547#\"&5\x11#\"&=\x0146;\x012\x16\x15\x11\x01\x15#\x1146;\x012\x16\x15\a5#\x15\xe0\r\x13\x13\r \x01@\x13\r \r\x130\a\t\t\aS\x03\x1c(\x1c\x03\xc6\x03\x1c(\x1c\x03S\a\t0\a\t\t\a`\a\t\x01`\xc0\x1c\x14`\x14\x1c0`\x80\x13\r\xa0\r\x13\xe0 \r\x13\xe0\x13\r\xff\x00\t\a \a\t\b\b\x14\x1c\x1c\x14\b\b\b\b\x14\x1c\x1c\x14\b\b\t\a\x01p\t\a \a\t\t\a\xfe\x90\x01 \xe0\x01\x10\x14\x1c\x1c\x14000\x00\x04\x00\x00\xff\xbf\x02@\x01\xc0\x00\v\x00\x19\x00#\x00/\x00\x00\x122\x16\x15\x14\a\x06\"'&54\a7\x16\x17\x15\a\x06.\x02=\x0146\x162767\x15'5\x16\x17%6\x1e\x01\x1d\x01\x14\x0e\x01\x0f\x01\x11\xechJr\x05\x0e\x05r\x8ew\a\x0e\x8a\x04\b\x06\x04\f\xfe,\x0f!\x1a\xc0\x1a!\x01/\x06\t\a\x05\n\x05\x8c\x01\xc0J4>\x86\x06\x06\x86>4\x8e0\x16\x19\xe9?\x02\x02\x04\a\x04\xfa\t\x12\x8d\x11(%\xf6@\xb6%(\xb6\x02\x03\b\x06\xfa\x06\f\n\x028\x01 \x00\x00\x00\x00\x05\x00\x00\xff\xbf\x02@\x01\xc0\x00\v\x00\x13\x00!\x00+\x007\x00\x00\x122\x16\x15\x14\a\x06\"'&54\x16264&\"\x06\x14\a7\x16\x17\x15\a\x06.\x02=\x0146\x162767\x15'5\x16\x17%6\x1e\x01\x1d\x01\x14\x0e\x01\x0f\x01\x11\xechJr\x05\x0e\x05rm\"\x19\x19\"\x19\xe2w\a\x0e\x8a\x04\b\x06\x04\f\xfe,\x0f!\x1a\xc0\x1a!\x01/\x06\t\a\x05\n\x05\x8c\x01\xc0J4>\x86\x06\x06\x86>4^\x19\"\x19\x19\"I0\x16\x19\xe9?\x02\x02\x04\a\x04\xfa\t\x12\x8d\x11(%\xf6@\xb6%(\xb6\x02\x03\b\x06\xfa\x06\f\n\x028\x01 \x00\x00\x02\xff\xfe\xff\xbe\x02\x01\x01\xc1\x00\v\x00 \x00\x00?\x01\x17\a\x0e\x01\a\x06&7>\x01\x00\x16\x14\x0f\x01'7'\a\x06/\x01&?\x0162\x1f\x0176^K\x80K\"r/\f\x10\x01\x057\x01\x8f5\x1b\xa5\x80b\x13W\f\v\x17\v\vi\v!\f%\x15\x1b\x9eK\x80K\"7\x05\x01\x10\f/r\x01D5K\x1b\xa5\x80b\x14W\v\v\x17\v\vh\f\f$\x15\x1b\x00\x00\x04\xff\xfd\xff\xc0\x02\x03\x01\xc0\x00\t\x00\x13\x00\x1b\x004\x00\x00\x13\x06\a'&6;\x012\x17%2\x16\x0f\x01&'763\x062\x16\x14\x06\"&4\x056&/\x02&\"\x0f\x02\x0e\x01\x1f\x01\a\x06\x16?\x01\x17\x166/\x01\xe0?/o\x06\t\no\x12\n\x01U\n\t\x06o/?E\n\x12ʒgg\x92g\x01\r\x05\x05\a4\x18\x03\x0e\x03\x184\a\x05\x05&\t\x01\f\x06//\x06\f\x01\t\x01=\n+\x9f\b\x11\x10\x10\x11\b\x9f+\ns\x10\xa0g\x92gg\x926\x05\r\x01\b/\a\a/\b\x01\r\x05%4\a\t\x03\x19\x19\x03\t\a4\x00\x00\x00\x03\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x00\x122\x16\x14\x06\"&4\x16264&\"\x06\x14\x16264&\"\x06\x14\x91Α\x91Α\x9b\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xceW\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x19\x00!\x003\x00\x00\x122\x16\x14\x06\"&4\x17\x14\x162654'\x16\x15\x14\x06\"&547\x06\x1724+\x01\"\x14362654'\x16\x15\x14\x06\"&547\x06\x15\x14\x91Α\x91ΑX&4&\"\x02\x13\x1a\x13\x02\"\xe0\x10\x10\x80\x10\x10\x864&\"\x02\x13\x1a\x13\x02\"\x01\xb8\x91Α\x91\xceG\x1a&&\x1a&\x12\x06\x02\r\x13\x13\r\x02\x06\x12\xd6 p&\x1a&\x12\x06\x02\r\x13\x13\r\x02\x06\x12&\x1a\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc7\x00\x0f\x00\x1a\x00*\x00\x00!2\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\x13!\x136?\x016\x1f\x01\x16\a54&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x01p\a\t\t\a\xfe\xa0\a\t\t\a\x01\x11\x1f\xff\x00\x1f\x01\bM\v\vM\b0\b\x05F\x05\b\b\x05F\x05\b\t\a \a\t\t\a \a\t\x01[\xfe\xc5\x01;\f\bL\f\fL\b\xda&\x05\b\b\x05&\x05\b\b\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x03\x01\xc0\x00\t\x00+\x00\x00\x01\a#7632\x17\x1e\x01\a2\x16\x1d\x01\x14\x06+\x01\x14\x06\a\x16\x17\x16\x06+\x01\"&767.\x015#\"&=\x01463\x01\xf6d\x97\xcc\t\f\t\a\x11\x05\x12\a\t\t\a\x10C6\x14\x05\x01\n\a\xe0\a\n\x01\x05\x146C\x10\a\t\t\a\x01\x83c\x99\a\x04\b$\x90\t\a \a\t\x017\x1e\x02\x1f\x01673\x06\x132\x16\x15\x11\x14\x06#!\"&5\x11463\x01264&+\x01\"\x06\x14\x1636264&\"\x06\x147\x16\x17#&\x82\b-\f\x02''\x02\f-V\a\x0f\x01.\x01\x0f\x1e\x01\x0f\a\x04\n\b\x01\x12\f\x02'\bj\r\x13\x13\r\xfe\xa0\x1b%%\x1b\x01\x10\a\t\t\a\xe0\a\t\t\a;jKKjK\xa9-\b'\x02\x01\x101\x15\x1d) )\x1d\x15\x1e\a*\x1e\x1e*h\x1e*\a\x05\x12#\x15f\x1d)1\x01\x01\x13\r\xfe@\r\x13%\x1b\x01\x80\x1b%\xfe`\t\x0e\t\t\x0e\t`KjKKj\x8b\x151)\x00\x00\x02\x00\x00\xff\xc0\x02\a\x01\xcc\x00\x17\x00\x1e\x00\x00?\x01\x17\a\x06\x0f\x01'7\x163264&\"\x06\x15\x14\x17\a'76\x016\x1e\x01\x0f\x01'OTc!\x05\x0f\xb1\x05]\x06\x02\r\x13\x13\x1a\x13\x02]\x05;\x05\x011#]\x16$\xc7b\xa5!cT\x0f\x05;\x05]\x02\x13\x1a\x13\x13\r\x02\x06]\x05\xb1\x0f\x01\x04'\x1eT(\xb7b\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x01\x01\xc1\x00\x1c\x00&\x00\x00\x137\x17\a\x0e\x01\a\x05'7\x163264&\"\x06\x15\x14\x17\a'\x13>\x04%\x16\x14\x0f\x01'762\x17\x89\x97\x80+\x04\x18\r\xfe\xe8\x0f\x96\n\v\x14\x1c\x1c(\x1c\x05\x96\x0f]\x02\a\b\n\v\x01o\x0e\x0e9\x809\x0e(\x0e\x015+\x80\x97\x0e\x19\x05]\x0f\x96\x05\x1c(\x1c\x1c\x14\v\n\x96\x0f\x01\x18\x05\v\t\t\x06B\x0e(\x0e9\x809\x0e\x0e\x00\x00\x00\x04\xff\xfe\xff\xbe\x02\x01\x01\xc1\x00\x12\x00\x1c\x00$\x006\x00\x007'&4?\x0162\x1f\x01\a\x06\x1f\x01\x162?\x01\x1f\x01\a'762\x1f\x01\x16\x14'\x17\x01\a\x06&?\x01%\x16\x14\x0f\x01\x06\"/\x017\x17\a\x06\x1f\x01\x16?\x01md\t\tZ\t\x1b\t\">\x06\x06\v\x02\a\x02>,\xfe.q.\x0e(\x0e-\x0e\xc4q\xfe\xd7k\v\x10\x02\x13\x01\xe4\t\tZ\t\x1b\td\x87,>\x06\x06\v\x06\x05>\xccd\t\x1b\tZ\t\t\">\x05\x06\v\x02\x02>,\x12.q.\x0e\x0e-\x0e(\x1eq\xfe\xd7\x13\x02\x10\vk\f\t\x1b\tZ\t\te\x86,>\x05\x06\v\x06\x06>\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x80\x01\xc2\x00\x0f\x00.\x00\x00!2\x16\x1d\x01\x14\x06#!\"&=\x014637&=\x0146\x1f\x01\x16\x1f\x02'46\x1f\x01\x16\x1f\x02\x16\x17\x16\x06\a\x06'%&'\x02p\a\t\t\a\xfd\xa0\a\t\t\a\x1d\r\r\b'\b\x03\x1cf0\r\bA\t\x03db+\x1c\x1d\r(&+\xfe\xe0\x0e\v\t\a \a\t\t\a \a\t\xf2\v\re\t\t\x02\v\x02\bC\x1c\xa4\b\v\x03\x11\x03\t\xc0\x1b\v\x1d\x1e1\v\v\fN\x04\n\x00\x00\x00\x02\xff\xfe\xff\xc0\x02\x89\x01\xa1\x00\x0f\x001\x00\x00!2\x16\x1d\x01\x14\x06#!\"&=\x014637'&6?\x0162\x1f\x017'&6?\x01632\x1f\x0176\x17\x1e\x01\a\x06\a\x05\x06+\x01\"\x02p\a\t\t\a\xfd\xa0\a\t\t\aAM\x05\x03\b(\x04\b\x04Hh\x9d\x06\x04\bA\x04\x04\x06\x04\xdbc++.\x18\x19\x17,\xfe\xdd\x0e\x10\x82\x0f\t\a \a\t\t\a \a\tkS\x06\x12\x04\x14\x02\x02$4b\a\x12\x04!\x02\x03R2\x16\x03\x031'$\x16\x94\a\x00\x00\x02\x00\x00\xff\xd9\x01\x87\x01\xa0\x00*\x002\x00\x00%\x17\x16\x0f\x01\x06/\x01\a\x06/\x01&?\x01'#\x15\x14\x06+\x01\"&5\x1146;\x012\x16\x15\x14\x06\a\x1776\x1f\x01\x16\a%\x153264&#\x01-N\f\f\x16\f\vNN\v\f\x16\f\fN\x80\x13\t\a \a\t\t\a\x90(80$TN\v\f\x16\f\f\xfe\xc5`\r\x13\x13\r`N\v\f\x16\f\fNN\f\f\x16\f\vN\x80P\a\t\t\a\x01\x00\a\t8($6\x05TN\f\f\x16\f\v\xb2@\x13\x1a\x13\x00\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\x1b\x00.\x006\x00J\x00\x00\x122\x16\x15\x14\x06\a54&\"\x06\x1d\x01\x06\"'54&\"\x06\x1d\x01.\x0154\x1f\x01\x166'.\x03#\"\x06\a\x06\x16?\x0162\x16264&\"\x06\x1476'.\x03#\"\x06\a\x06\x16?\x0162\x1f\x01\x16\x91ΑA7\t\x0e\t.d.\t\x0e\t7A\xb6\n\x06\x0f\x01\x01\f\x11\x14\n\x14%\x03\x01\x0f\x06\n\v&9(\x1c\x1c(\x1c\xc6\a\x01\x01\f\x11\x14\n\x14%\x03\x01\x0f\x06\n\v&\f\t\x06\x01\xb8\x91gBq!\xb4\a\t\t\a\xc5\x13\x13\xc5\a\t\t\a\xb4!qBgG\t\x06\b\t\t\x10\v\x06\x18\x12\t\b\x06\t\t\xc9&4&&4\x90\x03\t\t\x10\v\x06\x18\x12\t\b\x06\t\t\t\t\x06\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1b\x00#\x00.\x00\x00\x122\x16\x14\x06\"&4\x04\"\x06\x14\x16264\x062654'&\"\a\x06\x15\x146264&\"\x06\x14\x17\x16>\x01'&#\"\x1432\x91Α\x91Α\x01U\x1a\x13\x13\x1a\x13\xe4(\x1c*\x02\b\x02*3\x1a\x13\x13\x1a\x13\xca\x06\x13\x05\x05-F\x10\x107\x01\xb8\x91Α\x91\xce\x17\x13\x1a\x13\x13\x1a\xdd\x1c\x13\x177\x03\x037\x17\x13\x94\x13\x1a\x13\x13\x1a\xad\b\x04\x10\b6 \x00\x00\x00\x06\x00\x00\xff\xe0\x02\x80\x01\xa0\x00\x1d\x00!\x00)\x00-\x005\x009\x00\x00%\x16\x1d\x01\x14\x06+\x01\x14\x06\"&5#\x14\x06\"&5#\"&5\x11463!2\x17\x0535#\x12264&\"\x06\x1475#\x15\x16264&\"\x06\x14'3'#\x02u\v\x13\r 8P8\x808P8 \r\x13\x13\r\x01\xaa\x16\x0e\xfeR``L(\x1c\x1c(\x1c\xd0`\xec(\x1c\x1c(\x1c0\x92PB\xed\r\x11o\r\x13(88((88(\x13\r\x01 \r\x13\x11\x8f`\xfe\xb0\x1c(\x1c\x1c(\xd4``\xf0\x1c(\x1c\x1c(\xd4`\x00\x00\x01\xff\xf9\x00\x00\x02\x80\x01\x83\x00=\x00\x00\x012\x16\x1d\x01\x14\x0e\x01#\x0e\x03\a\x06#\"'&7\x06\a\x06#\"&?\x016&\x0f\x01\x06&/\x01&?\x016\x1e\x02\x0f\x01>\x0176\x1e\x01\x14\a\x06\x1e\x01327>\x02\x02o\a\n\x04\a\x04\x0e)\"(\nC#+\x17\x19\x05M\x86\n\r\x13\x10\x05b\a\x19\x0e:\x06\r\x03\x12\b\r7\x1c:&\x13\r*KJ\x15\x13\x15\x04\x01\x03\x02\v\v\x166\nE=\x01\x00\t\a \x04\a\x05\x01\x11\x14\x18\x04\x1e\x19\x1c8=\x87\t\x1e\x0e\xf6\x0e\x15\b'\x04\x03\x06\x1b\r\t%\x11\x05#3\x1dhG6\x01\x01\x13!\x11\b\x12\x17\v\x18\x05'\x1a\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x1b\x00'\x009\x00\x00\x122\x16\x14\x06\"&4\x17\x06\x16?\x0162\x1f\x01\x166'.\x04#\"\x06\x176&\a\x06\"'&\x06\x17\x1627\x166'.\x02#\"\x06\a\x14\x16?\x0162\x17\x91Α\x91Αp\x01\r\x03\n\f&\r\t\x03\r\x01\x01\b\v\x0e\x0f\a\x13#\xf9\n\x19\n#n#\n\x19\n-\x8c3\x03\r\x01\x01\x12\x19\f\x13#\x02\f\x03\t\r&\r\x01\xb8\x91Α\x91\xceF\a\x03\x05\x11\x16\x16\x11\x05\x03\a\f\x16\x12\f\a)\x99\f\x14\f**\f\x14\f6\xac\x05\x03\a\x14!\x12)\x1e\a\x03\x05\x11\x16\x16\x00\x00\x00\b\x00\x00\xff\xbf\x02\x80\x01\xc0\x00\x14\x00(\x00,\x000\x004\x008\x00<\x00@\x00\x00!2\x16\x1d\x01\x14\x06+\x01\"&=\x014>\x01;\x0153\x15\x13\x12\x15\x14\x0e\x01#!\"&54\x13>\x023!2\x16\x05\a3'\x037#\a?\x01#\a\x173'#7\x173'\x033'#\x01\xb0\a\t\t\a\xe0\a\t\x04\b\x040\x80\xc97\t\x0f\t\xfd\xc2\x0e\x137\x01\t\x0e\b\x01\xd2\f\x12\xfe\xbd\n\x8c\n\xc3\vj\x13\x82\n`\x11\x88\xac\v\x96\xb8\ng\x11Fr\x13j\t\a \x06\n\t\a \x04\a\x05 \x01\xa5\xfe\xbd\x02\t\x0e\t\x13\r\x03\x01B\b\f\a\x0f1``\xff\x00pp\xa0``\xa0p\x90``\xff\x00p\x00\x00\x00\x00\x02\xff\xff\xff\xe0\x02A\x01\xa4\x00\x1e\x00,\x00\x00\x012\x15\x14\x0e\x02\a\x06\"'.\x035432\x1e\x02\x17\x16\x1767>\x03\x05&'&'676\x17\x16\x17\x06\a\x06\x028\b\x06\x0f'\x1dS\xe8S\x1d'\x0f\x06\b\x10'?D\x1c+\x17\x17+\x1cD?'\xfe\xf8\x13\x1a\x1a!\x1aF\b\bG\x19\"\x1a\x19\x01\x00\b\x0f%;?\x19QQ\x19?;%\x0f\b\x05\x0f$\x1b'88'\x1b$\x0f\x05o\x1d\x17\x19\x13o=\a\a=o\x13\x1a\x16\x00\x01\xff\xf4\xff\xd7\x02\x03\x01\xa7\x00\"\x00\x00%\x1e\x01\x0f\x01\x06\x0f\x01\x0e\x01/\x01&\x0f\x01\x06&?\x016/\x01&6\x1f\x01\x16?\x016\x16\x1f\x01\x16\x17\x01\xd8%\x06\">\x1c\x02\x05\x03H\x1e6\x19 F&3\x10\x1c\r\x12&\x15)'H!\x15.\x19L\t\x10\a\x1f\xfc\fC\x12\x1f\x0f\x1c>\"\x1a\x17(\x13\a\x0f\t4\x1f9\x1a\x184\x1d9\x03\x06\x02\x16/\x1a\x0f!=\x1b\v\x00\t\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\t\x00\x11\x00!\x00)\x001\x009\x00A\x00I\x00Q\x00\x00\x13\x15#546;\x012\x1e\x012\x16\x14\x06\"&4\a2\x16\x1d\x01\x14\x06#!\"&=\x01463\x12264&\"\x06\x14\x00\"&462\x16\x14\x062\x16\x14\x06\"&4&2\x16\x14\x06\"&462\x16\x14\x06\"&4\x162\x16\x14\x06\"&4\xe0\x80\x13\r@\r\x13\xf3\x1a\x13\x13\x1a\x13\xe0(8\x13\r\xff\x00\r\x138(\x1fB//B/\x01\x9d\x1a\x13\x13\x1a\x13\x8d\x1a\x13\x13\x1a\x13M\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13\x01\xa0``\r\x13\x13m\x13\x1a\x13\x13\x1a\r8(\xe0\r\x13\x13\r\xe0(8\xff\x00/B//B\x01\x11\x13\x1a\x13\x13\x1a3\x13\x1a\x13\x13\x1as\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\xad\x13\x1a\x13\x13\x1a\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc7\x00\x03\x00*\x00\x00\x175!\x15\x032\x16\x1d\x01\x14\x06#!\"&=\x0146;\x0126=\x014'&546\x17\x1e\x01\x17\x16\a\x06\x1d\x01\x14\x163 \x01\xc0@(8\x13\r\xfe@\r\x138(C\f\x11\x17\tD-\x1d+\x06\x05\x0f\x15\x11\f@@@\x01\x008( \r\x13\x13\r (8\x11\f\x01(2\x13\x15,:\b\x05+\x1d \x1c*$\n\f\x11\x00\x00\x02\xff\xfb\xff\xc0\x02\x1d\x01\xc0\x00\x1c\x00'\x00\x00\x01\x1e\x01\x0f\x01\x17\x16\x06#\"/\x01\a\x06#\"&?\x01'&6?\x0262\x1f\x027/\x03\x11\x1f\x01/\x01\x01\xfd\x13\r\x0fj\x19\x03\x14\x0e\b\a\x83\x83\a\b\x0e\x14\x03\x19j\x0f\r\x13\x93A\t(\tA\x19Rr\x19\v3\x16f\x13\x04\x01\x14\x02&\x0eg\x92\x0f\x16\x04DD\x04\x16\x0f\x92g\x0e&\x03\x15\x84\x12\x12\x84\x91Q\x10\x04\x17g\xfe\xc3\f6r\x19\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00#\x00/\x00;\x00I\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&=\x01#\"&=\x01463\x0554+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012'\x15#546;\x012\x16\x1d\x01#5\x01P\x14\x1c\x1c\x14\x10\t\a \a\t\x80\t\a \a\t\x10\x14\x1c\x1c\x14\x01\x10\b\xf0\b\b\xf0\b\b\xf0\b\b\xf0\b\xb00\x1c\x14`\x14\x1c0\x01 \x1c\x14\xe0\x14\x1c\x10\a\t\t\a\x10\x10\a\t\t\a\x10\x1c\x14\xe0\x14\x1c\xd8\x10\b\b\x10\bh\x10\b\b\x10\b\xf0PP\x14\x1c\x1c\x14PP\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00\x00\x122\x16\x14\x06\"&4\x16\x14\x16264&\"\x16264&\"\x06\x146264&\"\x06\x14\x91Α\x91Α\x88\x13\x1a\x13\x13\x1aC4&&4&\x83\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xce*\x1a\x13\x13\x1a\x13\xf0&4&&4\x8a\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x06\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\n\x00\x17\x00%\x00-\x001\x005\x00\x00\x01\x16\x14\x0f\x01\x117362\x1f\x012\x16\x1d\x01\x14\x06#!>\x01?\x01\x03\x11\x14\x06\"&5\x1146;\x012\x16\x02264&\"\x06\x1475#\x1575#\x15\x01\xb3\t\t\xd3K\x01\t\x1a\t\x88\r\x13\x13\r\xfe\xd4\x01\x05\x01\xba\xb58P8\x13\r\x80\r\x13j\x14\x0e\x0e\x14\x0e8@@@\x01\x18\t\x1b\t\xd3\x01\x0fL\t\t\xf3\x13\r\x80\r\x13\x01\x03\x01\xbb\x01 \xfe\x80(88(\x01\x80\r\x13\x13\xfe[\x0e\x14\x0e\x0e\x14\xaa@@\x80@@\x00\x00\x00\x00\x03\x00\x00\x00 \x02\x80\x01h\x00\x1f\x00T\x00\\\x00\x007&'76?\x016\x1f\x01\x1e\x01\x0e\x01/\x01&\x0f\x01\x17\x06\a\x06\"'&+\x01\"\a\x06\"\x052\x16\x1d\x01\x14\x06+\x01\"'\x06\"'\x06\"'\x06+\x01\"&=\x0146;\x01276;\x012\x17\x16276;\x012\x17\x16276;\x012\x17\x163$\"&462\x16\x14\xbe\a\tD\v\x10P(1d\x13\x16\b\"\x13d\a\x06\x12q\x1b\x17\n0\n\x19\x1d\x10\x1d\x19\n0\x01\xa8\a\t\t\a\x10:&&t&&t&&:\x10\a\t\t\a\x10%\x13\x0f\x11\x10\x11\x0f\x13J\x13\x0f\x11\x10\x11\x0f\x13J\x13\x0f\x11\x10\x11\x0f\x13%\xfe1B//B/\x89\a\x05b\x10\v9\x1d\n\x16\x04\"&\x16\x04\x16\x01\x04\rP\x02\x15\t\t\x17\x17\t \t\a \a\t \t\a \a\t\x12\x0e\x0e\x12\x12\x0e\x0e\x12\x12\x0e\x0e\x12`/B//B\x00\x02\x00\x00\xff\xe0\x02\x80\x01\xa0\x004\x00j\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"'\x06\"'\x06\"'\x06+\x01\"&=\x0146;\x01276;\x012\x17\x16276;\x012\x17\x16276;\x012\x17\x163%\"'&'5462\x16\x1d\x01\x14\x06+\x01\"&=\x014&\"\x06\x1d\x0135462\x16\x1d\x01\x14\x06+\x01\"&=\x014&\"\x06\x1d\x01\x06\a\x06#5#\x02p\a\t\t\a\x10:&&t&&t&&:\x10\a\t\t\a\x10%\x13\x0f\x11\x10\x11\x0f\x13J\x13\x0f\x11\x10\x11\x0f\x13J\x13\x0f\x11\x10\x11\x0f\x13%\xfe\x80\x18\n\x0e\x108P8\t\a \a\t\x13\x1a\x13\xc08P8\t\a \a\t\x13\x1a\x13\x10\x0e\n\x18\xc0 \t\a \a\t \t\a \a\t\x12\x0e\x0e\x12\x12\x0e\x0e\x12\x12\x0e\x0e\x12 \t\r\x06\xe4(88(\x10\a\t\t\a\x10\r\x13\x13\r``(88(\x10\a\t\t\a\x10\r\x13\x13\r\xe5\x05\r\t`\x00\x00\x00\x02\xff\xf9\xff\xb9\x02\x87\x01\xc7\x00\x18\x00 \x00\x00\x05\x16\x0f\x01\x06'\x01&?\x016\x1f\x016762\x17\x1e\x03\x15\x14\a%47\x05\x06#\"&\x02z\f\t\x14\n\f\xfd\xb3\f\t\x14\n\f\xbb(\x13\a-\x06\x106,!\x01\xfe\xa1\x13\x01\x112BIg\n\n\r\x19\f\t\x01\xc7\n\r\x19\f\t\x91>@\x16\x164_6I&\x06\v\x11(&\xd3-h\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x16\x00#\x002\x00\x00\x122\x16\x14\x06\"&4\x05\x06\x14\x1f\x01\x166/\x01764.\x01\x0f\x01\x17\a\x06\x16?\x0164/\x01&\x06\x16\"\x06\a\x06\x1e\x01762\x17\x166'&\x91Α\x91Α\x01\x1a\x06\x06P\b\x0e\a!!\x03\x06\b\x04\xf3!!\a\x0e\bP\x06\x06P\b\x0e\xb1RM\x05\x01\x05\t\x04)\x82)\a\v\x01\x05\x01\xb8\x91Α\x91\xce-\x03\x0e\x030\x05\x0f\b((\x04\t\x06\x02\x03\x12((\b\x0f\x050\x03\x0e\x030\x05\x0f\x80>-\x06\v\x05\x02\x11\x11\x03\r\n-\x00\x00\x00\x01\xff\xf5\xff\xc0\x01\xcb\x01\xc9\x003\x00\x00\x01\x16\a\x06\a\x06\x0f\x01\x0e\x01#\".\x01/\x01.\x01\"\x06\x0f\x01\x0e\x01\"&/\x01&'&'&7>\x0176\x1f\x01\x16676/\x01676\x17\x1e\x01\x01\xbc\x0f%\x1e\x06\b\r\b\x02\x11\n\a\f\t\x02\"\x04\x16\x1c\x16\x04\"\x03\x10\x15\x11\x02\b\r\b\x06\x1e%\x0f\b2\" #d\x06\r\x03\t\r\x1d\n\x010)\"2\x01`>1(CS9\"\v\r\x06\n\a\x8b\r\x12\x12\r\x8b\n\r\r\v\"9SC(2=\"3\b\t\x13@\x04\x03\x05\x0e\b\x13\x04\x01#\v\b3\x00\x04\x00\x00\xff\xc0\x02\x82\x01\xc4\x00\t\x00\x12\x00\x1d\x001\x00\x00\x13.\x017>\x01\x17\x0e\x01\a\x17>\x0132\x17\x1e\x01\a7\x1e\x01\a\x14\x06/\x016'&\x132\x16\x1d\x01\x14\x06#!\"&=\x0146;\x017\x17\as\a\x05\x05-\x84G'I\x1b\x1f!`+\r\n.\x18\x1b#:?\x02\x0e\bf\x1b\b\x04\x1d\a\t\t\a\xfd\xe0\a\t\t\a\xedI\x01;\x01&54632\x1e\x01\x15\x14\a32\x1e\x01\x17&264&\"\x06\x14\x01\xfe\a\x1d\x18\xfe`\x18\x1d\aI\x03\x11\v<\x068(\x1a,\x1a\x06<\b\f\t\x02\xc2\x1a\x13\x13\x1a\x13\x02\x19))\x19\x01$\f\x0e\x10\x10(8\x1a,\x1a\x0f\x11\x06\f\b\x1a\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x02\xff\xfb\xff\xc0\x01%\x01\xc0\x00\x1e\x00\"\x00\x00\x172\x16\x15\x14+\x01\"546;\x015.\x01?\x014>\x01;\x012\x16\x15\x17\x16\x06\a\x15\x03\a3'\xd8\x11\x17\b\xd0\b\x17\x11(4@\x05\x10\x04\a\x04\xe0\x06\t\x10\x05@4r\a\xb2\a\x10\x17\x11\b\b\x11\x17u\fW7\xb2\x05\x06\x04\b\a\xb27W\fu\x01\xa0PP\x00\x03\xff\xfc\xff\xc0\x01\x84\x01\xc0\x00/\x007\x00;\x00\x00%\x16\x06+\x01\x1532\x16\x1d\x01\x14\x06#!\"&=\x0146;\x015#\"&?\x01#\"&?\x01&5462\x16\x15\x14\a\x17\x16\x06+\x01&\"\x06\x14\x16264\x13#\x153\x01{\t\f\x0e\x8ap\a\t\t\a\xfe\xe0\a\t\t\ap\x8a\x0e\f\t^1\v\n\ar\x06\x1c(\x1c\x06r\a\n\v1V\x0e\t\t\x0e\t`\xe0\xe0\u007f\n\x15 \t\a`\a\t\t\a`\a\t \x15\na\x13\t~\v\v\x14\x1c\x1c\x14\v\v~\t\x13\xc0\t\x0e\t\t\x0e\xfey \x00\x00\x00\x02\xff\xfc\xff\xbf\x01\xc4\x01\xc0\x00\"\x005\x00\x00\x01\x16\x17\x16\x17\x16\a\x06\a\x06#\"'&\"\a\x06#\"'&'&767676\x17\x16\x17676'\x06\a\x06#'&7676763\x1f\x01\x14\a\x06\x01_'\x19\x16\b\a\b\f$+A\x10\x13\r \r\x13\x10A+$\f\b\a\b\x16\x19'\x18*$\x19\x19$*\x1f\x0e\x17\x10\x13\x0f\x02\x02\x04\x13\x0e\x17\x10\x13\x0f\x01\x05\x06\x01?\a#\x1f/++G0:\n\b\b\n:0G++/\x1f#\a\x04\v\n\x0e\x0e\n\v%\r\x06\x05\x01\x0e\x12$\x13\r\x06\x05\x01\x0f\x13\x10\x17\x00\t\xff\xec\xff\xc0\x01\xd4\x01\xc0\x00\n\x00#\x00+\x006\x00=\x00D\x00L\x00T\x00_\x00\x0072\x1e\x01\x15\x14\x06\"&467\x16\a\x16\a\x06'\x06\"'\x06\".\x01'&7&76\x1762\x176\x01\x167&'&'\x06767\"&#\"\a\x06\x17>\x01\"\a\x16\x1767\x0227&'\x06\a6264&\"\x06\x14\x176'\x06\a\x06\a\x16'6'&#\"\x06#\x16\x17\x16\xe0\t\x0e\t\x13\x1a\x13\x13\xe3\x1e77\x1e\x1dW$|$\v\x15(\"\n\x1e77\x1e\x1dW$|$W\xfe\xa6\a%\x05\x02\v\v\x16,\x03\x04\x01\x04\x01\x1f\a\a\x16\v\x97 \x12\x11\x11\x11\x112 \x12\x11\x11\x11\x11\x01B//B/\xf1\a\x16\v\v\x02\x05%\b\x16\a\a\x1f\x01\x04\x01\x04\x03\v\xe0\t\x0e\t\r\x13\x13\x1a\x13`5KK54\nVV\x01\x04\x15\x125KK54\nVV\n\xfe\xec\f\x01\x16\x12\t\n#\x96\x14\x14\x01\f\r#\n\x86%\x06\a\a\x06\xfe\xa5%\x06\a\a\x06K/B//B?\r#\n\t\x13\x15\x01\x9c#\r\f\x01\x14\x14\t\x00\x00\x00\x00\x01\x00\x00\x00 \x02\x80\x01`\x00O\x00\x00%\x06\x14\x17\x1e\x01\x1d\x01\x14\x06#\"&'4.\x04#!\"\x0e\x06\a\x0e\x01#\"&=\x0146764'.\x01=\x014632\x1e\x01\x17\x14\x1e\x043!2>\x055>\x0132\x16\x1d\x01\x14\x06\x02W\a\a\x13\x16,\x1e\x18'\b\x06\x02\x06\a\n\a\xfe\xee\x05\b\x06\x05\x04\x04\x01\x04\x01\b'\x18\x1e,\x16\x13\a\a\x13\x16,\x1e\x10\x1d\x15\x05\x06\x02\x06\a\n\a\x01\x12\x05\t\a\x05\x05\x01\x06\b'\x18\x1e,\x16\xcb\x03\x10\x03\n$\x15\b\x1e,\x1c\x17\x01\x11\x05\r\x04\x05\x02\x03\a\x04\n\x05\f\x02\x17\x1c,\x1e\b\x15$\n\x03\x10\x03\n$\x15\b\x1e,\r\x17\x0f\x01\x11\x05\r\x04\x05\x02\x06\x04\f\x04\x10\x01\x17\x1c,\x1e\b\x15$\x00\x00\x03\x00\x00\xff\xbe\x02\x01\x01\xc0\x00\a\x00\x18\x00+\x00\x00\x00\x14\x06\"&462\a\x16\x1d\x01\x14\x06'&'.\x01=\x0146\x17\x16%2\x1e\x01\x1d\x01\x14\x06\a\x06\a\x06.\x01=\x01476\x01`8P88P>\x06\r\aF|\v\x0f\x12\f\x88\x01<\b\x0e\b\x0f\v|E\x05\n\x06\x06D\x01\x88P88P8\xf1\x04\b\xf6\a\b\x04#\x06\x01\x0f\v\xdf\f\x10\x01\b\b\a\f\b\xdf\v\x0f\x01\a\"\x03\x02\b\x04\xf6\b\x04)\x00\x02\x00\x00\xff\xc0\x02@\x01\xc0\x00%\x00K\x00\x00\x132\x16\x15\x11\x14\x06#\"&'\x06#\"&547.\x01547&5467&5463021>\x01\x01\x14\x06\a\x16\x15\x14\x06#\"'\x0e\x01#\"&5\x114632\x16\x170212\x16\x15\x14\a\x1e\x01\x15\x14\a\x16\xd0\x1a&*\x1e\x17&\a\a\x05\x1e*\x01\x16\x1b(\b\x1b\x17\x02&\x1a\x02\x06\"\x01\x86\x1b\x16\x01*\x1e\x05\a\a&\x17\x1e*&\x1a\x16\"\x06\x02\x1a&\x02\x17\x1b\b(\x01\xc0&\x1a\xfe\x88\x1e*\x1b\x16\x01*\x1e\a\a\t(\x19.\x17\x11\x12\x19(\t\a\a\x1a&\x15\x1b\xfe\xd0\x19(\t\a\a\x1e*\x01\x16\x1b*\x1e\x01x\x1b%\x1b\x15&\x1a\x06\b\t(\x19\x12\x11\x17\x00\x00\x00\x00\x04\x00\x00\x00\x00\x01\xe0\x01\x80\x00+\x005\x00H\x00Y\x00\x00%\x1e\x01\x1d\x01\x14\a\x15\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&=\x01&=\x0146?\x02>\x03;\x012\x16\x1f\x01%\a!'.\x01+\x01\"\x06\a:\x02>\x0354&#\"\x0e\x02\x15\x14\x16!264&#\"\x0e\x01\x15\x14\x1e\x03:\x01\x01\xb7\x12\x17\x10\x13\r \r\x13\xff\x00\x13\r \r\x13\x10\x17\x12\f\x14\x06\x15\x1b \x11\x80\"9\f\x14\xfe\xd9\x14\x01\x00\x14\x05\x19\x0e\x80\x0e\x199\x02\r\x06\v\x06\a\x03\"\x0e\a\f\b\x05\x12\x01N\x0e\x12\x12\x0e\t\x17\x10\x03\a\x06\v\x06\r\xec\a!\x140\x18\x126\r\x13\x13\r \r\x13\x13\r6\x12\x180\x14!\a\x1c2\x0f\x1b\x12\n& 2\x1a22\r\x11\x11\xaf\x01\x02\x03\x06\x04\x0f!\x05\b\f\a\x0e\x12\x12\x1c\x12\x10\x17\t\x04\x06\x03\x02\x01\x00\x03\x00\x00\x00\x00\x02\x00\x01\x80\x00#\x00/\x00K\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01546;\x012\x16\x1d\x013546;\x012\x16\x1d\x01\x0554+\x01\"\x1d\x01\x14;\x012%54+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132\x01\xe0\r\x13\x13\r\xfe@\r\x13\x13\r \t\a`\a\t\x80\t\a`\a\t\xff\x00\bp\b\bp\b\x01\x00\b(\b\x10\b(\b\b(\b\x10\b(\b\x01@\x13\r\xff\x00\r\x13\x13\r\x01\x00\r\x130\a\t\t\a00\a\t\t\a0\x88\x10\b\b\x10\b\b\x10\b(\b\b(\b\x10\b(\b\b(\x00\x05\xff\xfe\xff\xbb\x02\x84\x01\xc2\x00*\x00f\x00z\x00\x88\x00\x9a\x00\x007\a\x06\x17\a\x06&?\x016/\x01.\x01?\x016/\x01&6\x1f\x01\x16?\x01>\x01\x1f\x01\x16?\x016\x16\x0f\x01\x06\x0f\x02\x0e\x01\x05\a\x06\a\x06\x0f\x01\x06\a\x06/\x01.\x01?\x01'\a\x0e\x01/\x01&'&?\x01&'&?\x01676?\x02676767676\x1f\x01\x16\x17\x16\x17\x16\x1f\x02\x16\x17\x16%&\x0e\x02\a\x06\x1e\x01\x17\x1e\x03>\x0276&\x05'&'&/\x01&#\"\x06\x0f\x01\x17\x16&\x06\a\x16\x06\x1e\x04\x17\x16>\x0276\x8f\f\x05\x02#\x05\v\x02\x0f\x02\nN\x06\x03\x05A\t\a2\x04\a\x06M\n\x01\a\x01\f\x04+\x06\a=\x05\v\x02\v\x05\x03 \v\x18%\x01\xe8\r\x04\r\x04\x05\x0e\x02\x04\r\x14\x1f\r\r\x03\t\xf8\b\x03\x17\r\x1f\x15\x02\x01\x01\x0e\x02\x02\x05\x05\f\b\x1d\t\n\x12 \x05\x06\f\x0f\a\b\x0f\x11\x11\x10{\x11\x0e\x15\x0e\r\x03\a\x03\x10\a\a\xfe}\a\r\n\b\x02\x02\x04\f\t\x02\f\a\n\a\a\x05\x01\x03\x18\x01\x15\x06\x01\x03\t\x16{\x06\a\t\x17\x06 \xacl\x1c)\x04\x01\x02\b\x03\f\x05\r\x02\a\r\n\b\x01\x04\xe3.\x10\x13\x1d\x04\a\x06M\n\x01\a\x01\f\x04+\x06\a=\x05\v\x02\x0f\x02\nN\x06\x03\x05A\t\a2\x04\a\x068\a\x03+\x0e\a$\x9d/\x11\f\x04\x034\a\x05\x10\x05\b\x04\x17\r\x1eC\x1f\r\r\x03\b\x06\x15\x06\a4\x05\x05\x12\x11.\x1e\f\x04\x01\x18+\a\x06\f\a\x04\x03\x05\x01\x01\x05!\x04\t\x0e\x15\x15\x1a5\x1e\f\x12\x13d\x02\x02\x06\n\a\t\x10\v\x03\x01\x03\x02\x02\x01\x01\x05\x04\x0e)\x196\a\a\x15\x05!\x02\v\b+.O\b\x18\x0e\x04\x06\x06\x03\x04\x01\x03\x01\x02\x02\x06\n\a\x0e\x00\x00\x00\x00\x05\x00\x00\xff\xe0\x02\x80\x01\xa0\x00$\x00,\x000\x004\x00<\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\x14\x06\"&5#\x14\x06\"&5#\"&=\x0146?\x01>\x01;\x012\x16\x1f\x01\x04264&\"\x06\x1475#\a;\x01'#\x12264&\"\x06\x14\x02 (8\t\a08P8\x808P80\a\t\x1b\x150\a!\x13\xd6\r\x1d\bm\xfe|(\x1c\x1c(\x1cxM&\xa3\xa6MY\xb4(\x1c\x1c(\x1c\x01\x008(P\a\t(88((88(\t\ap\x16\"\x06z\x12\x16\x0e\n\x88\xf0\x1c(\x1c\x1c(\xd4```\xfe\xb0\x1c(\x1c\x1c(\x00\x00\x03\x00\x00\xff\xc0\x02@\x01\xc0\x00\x0f\x00Q\x00h\x00\x00!2\x16\x1d\x01\x14\x06#!\"&=\x01463\x0132\x16\x1d\x01\x14\x06\a\x15\x14\x06'.\x01=\x014&+\x01\x15!\x1146;\x012\x16\x1d\x0132\x16\x1d\x01\x14\x167>\x01=\x01.\x01=\x0146;\x015462\x16\x1d\x0135462\x16\x15\x056&+\x0176&+\x01\"\x0f\x01\x06\x16;\x01\a\x06\x16327\x01P\a\t\t\a\xfe\xc0\a\t\t\a\x02\x10\x10\a\t\x1f\x192\"\x1d'\x17\x11\b\xfe\xe0%\x1b\xa0\x1b%\b$4\x14\r\n\r\x19\x1f\t\a\x10\t\x0e\t \t\x0e\t\xfe\xe4\x04\a\a:\f\x01\a\x06D\v\x01\x10\x01\b\x05;\x17\x01\a\x06\a\x03\t\a \a\t\t\a \a\t\x01@\t\a \x1a*\bx!.\x03\x03.\x1e\x19\x11\x17p\x01`\x1b%%\x1b\xc04$\x1c\r\x11\x02\x02\x11\vv\b*\x1a \a\t0\a\t\t\a00\a\t\t\a`\x05\v3\x05\b\tk\x05\aS\x05\b\x05\x00\x02\x00\x00\xff\xbf\x02\x00\x01\xc0\x00\x0f\x00'\x00\x00%\x16\x14\x0f\x01\x06\"/\x01&4?\x0162\x1f\x016/\x01&\x06\x1d\x01#\"\x06\x1d\x01\x14;\x012=\x013\x15\x14\x167\x01\xf7\t\t\xe0\n\x1a\n\xe0\t\t\xe0\n\x1a\n{\x06\x06U\x03\np\r\x13\b \b`\n\x03\xd7\n\x1a\n\xe0\t\t\xe0\n\x1a\n\xe0\t\t\xed\x06\x06N\x03\x04\x056\x13\rP\b\b@6\x05\x04\x03\x00\x00\x00\a\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00'\x008\x00@\x00H\x00P\x00X\x00`\x00\x00%2\x16\x14\x06#\"'#\x06#\"&5475&54632\x173632\x16\x14\x06#0#\a\x16\x14\a\x172\x05\x16\x173'\"1\"&46;\x017#\x06\a\x16\x14\x16264&\"64&\"\x06\x14\x162$\"\x06\x14\x16264\x02\x14\x16264&\"\x04264&\"\x06\x14\x01\x80\x1b%%\x1b%\x12\xd2\x12%\x1b% %\x1b%\x12\xd2\x12%\x1b%%\x1b\x01'\b\b'\x01\xfe\xe0\x0f\b\xd0&\x01\x1b%%\x1b\x01&\xd0\b\x0f\xb0\t\x0e\t\t\x0ew\t\x0e\t\t\x0e\xfe\xc0\x0e\t\t\x0e\t \t\x0e\t\t\x0e\x01@\x0e\t\t\x0e\t`%6% %\x1b%\x12\xd2\x12%\x1b% %6%A\x0f \x0fA\t\b\x0f@%6%@\x0f\bb\x0e\t\t\x0e\t\x89\x0e\t\t\x0e\t \t\x0e\t\t\x0e\xfe\xc0\x0e\t\t\x0e\t \t\x0e\t\t\x0e\x00\x00\x00\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x0f\x00\x1f\x007\x00A\x00E\x00\x00%'&?\x016\x1f\x01\x16\x0f\x01\x17\x16\x0f\x01\x067&?\x01'&?\x016\x1f\x01\x16\x0f\x01\x06'\x052\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x14\x16;\x01267\x13\x11!\x11463!2\x16\x03\x11!\x11\x00\xff:\f\f:\v\f\v\v\v$$\v\v\v\fU\v\v$$\v\v\v\f\v:\f\f:\v\f\x01\x06\a\t&\x1a\xfe\x00\x1a&\t\a\xef\x14\r=\x0e\x12\x01\xc2\xfe\x00\x1c\x14\x01\xa0\x14\x1c@\xfe\x80\xba;\v\v;\v\v\f\v\v$$\v\v\f\v\x17\v\v$$\v\v\f\v\v;\v\v;\v\v\x9a\t\a\x10\x1a&&\x1a\x10\a\t\v\x15\x11\x0f\x01p\xfe\xb0\x01P\x14\x1c\x1c\xfe\xdc\x01\x00\xff\x00\x00\x00\x00\x03\xff\xff\xff\xbd\x02\x01\x01\xc1\x00\x0e\x00\x1f\x000\x00\x00\x13&4?\x0162\x1f\x01\x16\x14\x0f\x01\x06'%\x16\x14\x0f\x01\x06/\x01&4?\x01\x17\x162?\x01\x17\x16\x14\x0f\x01\x06/\x01&4?\x01\x17\x162?\x01\f\f\f\xe9\x05\f\x05\xe9\f\f\xe9\v\v\x00\xff\f\f\xe9\v\v\xe9\f\f;\xa1\f\x18\f\xa2:\f\f\xe9\v\v\xe9\f\f:\xa2\f\x18\f\xa2\x01,\x06\x1c\x06j\x02\x02j\x06\x1c\x06j\x05\x05\x12\x06\x1d\x05j\x05\x05j\x05\x1d\x06\x1aI\x05\x05I\x9a\x06\x1c\x06j\x05\x05j\x06\x1c\x06\x1aI\x05\x05I\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00!\x00;\x00G\x00\x007\"&=\x01463546;\x012\x16\x1d\x012\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01\x052\x16\x15\x14\x06#!\"&5463!2644\x16\x15\x14\a%\"=\x014;\x012\x1d\x01\x14#\xa0\r\x13\x13\r\t\a@\a\t\r\x13\x13\r\f\t\a(\a\t\x01$\x14\x1c\t\a\xfe \a\t\x1c\x14\x01\x105KK5Oq1\xfe\x99\b\b\xd0\b\b\x80\x13\r\xe0\r\x13\x10\a\t\t\a\x10\x13\r\xe0\r\x13\x10\a\t\t\a\x10\x80\x1c\x14\a\t\t\a\x14\x1cKjK@qOI7 \b\x10\b\b\x10\b\x00\x00\x00\x00\x03\x00\x00\x00 \x02\x80\x01`\x002\x006\x00A\x00\x00\x016\x16\x1d\x01\x14\x0f\x01\x06#!\"&=\x01'.\x01=\x014>\x0132\x1f\x0135#\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\x1532\x1f\x01\x055'\x15\x0546?\x01\x16\x15\x14\x06\"&\x02v\x04\x06\x02\xd5\t\r\xfe\xed\r\x13F\v\x0f\t\x0e\t\x03\x03\x8a88\a\t\t\a\xa0\a\t\t\a89\x0f\x0e2\xfe\xc00\x01\xf5\x16\n\v+\x19$\x19\x01 \x01\x05\x04\x12\x03\x03\xd6\n\x13\r/\f\x02\x12\f_\b\x0f\t\x01\x190\t\a\x10\a\t\t\a\x10\a\t0\a\x19A?\b>]\n+\x10\x10>\x17\x12\x19\x19\x00\x01\x00\x00\xff\xc0\x02\x00\x01\xc0\x000\x00\x00%\x1e\x01\x15\x14\x06#!\"&5467&546;\x01&546;\x012654'632\x16\x15\x14\a32\x16\x15\x14\a32\x16\x15\x14\x01\xc3\x1a#*\x1e\xfe\x90\x1e*#\x1a\x1d*\x1e\x0e\x16%\x1b\x10!/\x0f\n\x05(8\x06\x06\x1b%\x16\x0e\x1e*O\x04(\x1b\x1e**\x1e\x1b(\x04\x16#\x1e*\x13\x1d\x1b%/!\x19\x15\x028(\x0f\x11%\x1b\x1d\x13*\x1e#\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x06\x01\xc1\x00\a\x00\x17\x00'\x00\x0062\x16\x14\x06\"&4%\x16\x06+\x01\".\x02?\x01>\x012\x16\x17\x132\x16\x1d\x01\x14\x06+\x01\"&=\x01463KjKKjK\x01\xfb\v\x16\x15\xd6\n\x12\b\x02\x06k\x04\x13\x12\x13\x04P\r\x13\x13\r\xa0\r\x13\x13\r\xc0KjKKj\x82\x12%\n\x10\x14\t\xb7\a\v\v\a\xfe\xf2\x13\r\xa0\r\x13\x13\r\xa0\r\x13\x00\x01\xff\xfe\xff\xc0\x01\xe2\x01\xc0\x007\x00\x00%\x1e\x01\x0f\x01\x0e\x01/\x01\x15\x14\x06+\x01\"&=\x01\a\x06&/\x01&6?\x01'.\x01?\x01>\x01\x1f\x01546;\x012\x1e\x02\x1d\x0176\x16\x1f\x01\x16\x06\x0f\x01\x01\xd8\x06\x03\x03 \x03\r\x06\x88\t\a@\a\t\x88\x06\r\x03 \x03\x03\x06\x88\x88\x06\x03\x03 \x03\r\x06\x88\t\a@\x03\x06\x04\x03\x88\x06\r\x03 \x03\x03\x06\x88r\x04\r\x058\x05\x04\x03O\x9d\a\t\t\a\x9dO\x03\x04\x058\x05\r\x04NN\x04\r\x058\x05\x04\x03O\x9d\a\t\x03\x04\x06\x03\x9dO\x03\x04\x058\x05\r\x04N\x00\t\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x0f\x00\x1d\x00+\x009\x00G\x00U\x00c\x00q\x00\u007f\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x1354&+\x01\"\x06\x1d\x01\x14\x1626=\x014&\"\x06\x1d\x01\x14\x16;\x0126\x1754&+\x01\"\x06\x1d\x01\x14\x1626=\x014&\"\x06\x1d\x01\x14\x16;\x0126\x1754&+\x01\"\x06\x1d\x01\x14\x1626=\x014&\"\x06\x1d\x01\x14\x16;\x0126\x1754&+\x01\"\x06\x1d\x01\x14\x1626=\x014&\"\x06\x1d\x01\x14\x16;\x0126\x02 (88(\xfe@(88(@\t\a@\a\t\x1c(\x1c\x1c(\x1c\t\a@\a\t\x90\t\aP\a\t!.!!.!\t\aP\a\t\x90\t\aP\a\t!.!!.!\t\aP\a\t\x80\t\a@\a\t\x1c(\x1c\x1c(\x1c\t\a@\a\t\x01\xc08(\xfe\xc0(88(\x01@(8\xfe\x90@\a\t\t\a@\x14\x1c\x1c\x94@\x14\x1c\x1c\x14@\a\t\tq8\a\t\t\a8\x17!!\x8fX\x17!!\x17X\a\t\tq8\a\t\t\a8\x17!!\x8fX\x17!!\x17X\a\t\ty@\a\t\t\a@\x14\x1c\x1c\x94@\x14\x1c\x1c\x14@\a\t\t\x00\x00\x00\x00\n\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x0f\x00\x1d\x00+\x009\x00G\x00W\x00e\x00s\x00\x81\x00\x8f\x00\x00\x012\x16\x1d\x01\x14\x06#!\"&=\x01463\x1754&\"\x06\x1d\x01\x14\x16;\x0126754&\"\x06\x1d\x01\x14\x16;\x0126754&\"\x06\x1d\x01\x14\x16;\x0126754&\"\x06\x1d\x01\x14\x16;\x0126\x152\x16\x1d\x01\x14\x06#!\"&=\x01463\x1754&+\x01\"\x06\x1d\x01\x14\x1626754&+\x01\"\x06\x1d\x01\x14\x1626754&+\x01\"\x06\x1d\x01\x14\x1626754&+\x01\"\x06\x1d\x01\x14\x1626\x02 (8%\x1b\xfe\x00\x1b%8(@\x1c(\x1c\t\a@\a\t\x90!.!\t\aP\a\t\x90!.!\t\aP\a\t\x80\x1c(\x1c\t\a@\a\t\x1b%8(\xfe@(8%\x1b`\t\a@\a\t\x1c(\x1c\x90\t\aP\a\t!.!\x90\t\aP\a\t!.!\x80\t\a@\a\t\x1c(\x1c\x01\xc08(@\x1b%%\x1b@(8\xb0 \x14\x1c\x1c\x14 \a\t\t\a8\x17!!\x178\a\t\t\a8\x17!!\x178\a\t\t\a \x14\x1c\x1c\x14 \a\t\t\x89%\x1b (88( \x1b%P \a\t\t\a \x14\x1c\x1c\x1c\x18\a\t\t\a\x18\x17!!\x17\x18\a\t\t\a\x18\x17!!\x0f \a\t\t\a \x14\x1c\x1c\x00\x00\x00\x00\a\xff\xfd\xff\xbb\x02\x82\x01\xc0\x00\x06\x00(\x006\x00H\x00T\x00\\\x00j\x00\x007\a\x06\a&>\x01\a\x1e\x01\x17\x16\x17\x06#\".\x01/\x01&67632\x17\x16\x17\x06\a\x06\a*\x01#\"\a0\x14\x15\x17\x16\x0e\x01\a\x06&'&5\x1667\x16%\x1e\x02\x0f\x01\x0e\x02.\x02?\x01>\x0176\a\x06\x156\x16\x17676.\x01\x06\x1e\x0167\x06&'\x067676.\x01'&\x06\a\x06\x176\x16\xcf\b \x12\x01\x0e\x1b]\x04F&\r\x1a\a\x03#YJ\x06 \x04\x12\x12gu$$\x1a\x10 \x19\x1e\x16\x01\x03\x01dY\x81\x02\a\x10\v\x10\x1c\x02\x01\x12,\r\x03\x01\x9f\f\x10\x06\x02 \aSaAO6\a \x04\x1d\x15\x9b\x88\x01\x12,\r\x03\x01\x03\x13 \x1c\x1bSF\n.\x83\"\x03\xde\x03\x01\x02\a\x10\v\x10\x1c\x02\x01\x01\x11,\xcb+\v\x14\x10\x1e\x17-\x182\v# \x01$D&\xb3\x15'\n9\x06\x04\x17\x01\x04\x05\x151\x01\x01+\n\x14\x0e\x02\x03\x13\x11\x05\a\t\a\x0f\x06\x1f\a\x15\x1c\r\xb4)H!\vA`)\xb3\x15\x1e\x03\x19\xad\x05\a\t\a\x0f\x06\x05\x11\x1b\x06\x13\xd0\x0f,'\x1c\x17*(O\x06\x05\v\x14\x0e\x01\x03\x13\x10\x05\a\t\b\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00.\x006\x00>\x00F\x00\x00\x01\x14\x0e\x03\a\x153\x14\x0e\x01\a\x0e\x01\"&'.\x01535.\x01535.\x0153546;\x012\x16\x1d\x013\x14\x0e\x01\a\x15\x06264&\"\x06\x146264&\"\x06\x146264&\"\x06\x14\x01\x80\x06\f\x0f\x14\v@\x11\x1f\x13\tF\\F\t\x1e%@\x1c$@\x1c$@\x13\r\xc0\r\x13@\x10\x1d\x13\x94(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x1c\x01\x00\f\x18\x14\x11\r\x04&\x15%\x1b\x06,99,\t2 &\n1\x1f&\n1\x1f \r\x13\x13\r \x14%\x1b\x06&\xe0\x1c(\x1c\x1c(d\x1c(\x1c\x1c(d\x1c(\x1c\x1c(\x00\x00\x00\x06\x00\x00\xff\xc0\x02\x80\x01\xc0\x001\x005\x00\x87\x00\x8f\x00\xe0\x00\xe8\x00\x00%2\x16\x1d\x01\x14\x06+\x01.\x02#\"\x06\a#.\x01\"\x06\a#\"&=\x0146;\x01546;\x01546;\x012\x16\x1f\x0132\x16\x1d\x01%3'#\x012\x1e\x02\x1d\x01\x14\x06+\x01\x06\a\x17\x16\x0f\x01\x06/\x01\x06\a\x15\x14\x06+\x01\"&=\x01&'\a\x06/\x01&?\x01&'#\"&=\x0146;\x0167'&?\x016\x1f\x0167546;\x012\x16\x1d\x01\x16\x1776\x1f\x01\x16\x0f\x01\x16\x17\x06264&\"\x06\x14'2\x16\x1d\x01\x14\x0e\x01+\x01\x06\a\x17\x16\x0f\x01\x06/\x01\x06\a\x15\x14\x06+\x01\"&=\x01&'\a\x06/\x01&?\x01&'#\"&=\x0146;\x0167'&?\x016\x1f\x0167546;\x012\x16\x1d\x01\x16\x1776\x1f\x01\x16\x0f\x01\x16\x17\x06264&\"\x06\x14\x02p\a\t\t\a\x11\x0e'0\x1a&C\x16B\x16CLC\x16\x11\a\t\t\a\x10\t\a\xb0\x13\rq\r\x1d\bSJ\r\x13\xfe\xc0\x843Q\x010\x03\x06\x04\x03\t\a\x05\x03\x06\x04\v\v\x17\v\v\x04\n\v\t\a \a\t\v\n\x04\v\v\x17\v\v\x04\x05\x04\x05\a\t\t\a\x05\x03\x06\x04\v\v\x17\v\v\x04\n\v\t\a \a\t\v\n\x04\v\v\x17\v\v\x04\x05\x04\u007f(\x1c\x1c(\x1c\xa0\a\t\x04\b\x04\x05\x03\x06\x04\v\v\x17\v\v\x04\n\v\t\a \a\t\v\n\x04\v\v\x17\v\v\x04\x05\x04\x05\a\t\t\a\x05\x03\x06\x04\v\v\x17\v\v\x04\n\v\t\a \a\t\v\n\x04\v\v\x17\v\v\x04\x05\x04\u007f(\x1c\x1c(\x1c\xe0\t\a \a\t\x14\x1c\x10\"\x1e\x1e\"\"\x1e\t\a \a\tP\a\t`\r\x13\x0e\nh\x13\r@`@\xfe\xe0\x03\x04\x06\x03 \a\t\v\n\x04\v\v\x17\v\v\x04\x05\x04\x05\a\t\t\a\x05\x03\x06\x04\v\v\x17\v\v\x04\n\v\t\a \a\t\v\n\x04\v\v\x17\v\v\x04\x05\x04\x05\a\t\t\a\x05\x03\x06\x04\v\v\x17\v\v\x04\n\vP\x1c(\x1c\x1c(4\t\a \x04\b\x04\v\n\x04\v\v\x17\v\v\x04\x05\x04\x05\a\t\t\a\x05\x04\x05\x04\v\v\x17\v\v\x04\n\v\t\a \a\t\v\n\x04\v\v\x17\v\v\x04\x05\x04\x05\a\t\t\a\x05\x03\x06\x04\v\v\x17\v\v\x04\n\vP\x1c(\x1c\x1c(\x00\x00\x04\x00\x00\xff\xe0\x02\x80\x01\xa0\x007\x00;\x00C\x00K\x00\x00%2\x16\x1d\x01\x14\x06+\x01\x16\x15\x14\x06\"&547#\x16\x15\x14\x06\"&547#\"&=\x0146;\x01546;\x01546;\x012\x16\x1f\x0132\x16\x1d\x01%\x153'\x02264&\"\x06\x14\x04264&\"\x06\x14\x02p\a\t\t\a2\x02B\\B\x02D\x02B\\B\x022\a\t\t\a\x10\x13\r\xa0\x13\rq\r\x1d\bm0\r\x13\xfe\xc0\x9eM\xd5(\x1c\x1c(\x1c\x01<(\x1c\x1c(\x1c\xa0\t\a \a\t\v\x05.BB.\x05\v\v\x05.BB.\x05\v\t\a \a\t@\r\x13\x80\r\x13\x0e\n\x88\x13\r@\xc0``\xfe\xc0\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x00\x00\x00\x00\x05\x00\x00\x00\x00\x02\x00\x01\x80\x00\x02\x00\n\x00\x1a\x003\x00K\x00\x00?\x01\x1762\x16\x14\x06\"&472\x16\x15\x11\x14\x06#!\"&5\x11463\x1326/\x01.\x01+\x01\"\x0e\x01\x0f\x01\x06\x16;\x012?\x013\x17\x163754&+\x01\"\x06\x1d\x01&#\"\x06\x14\x16327\x16;\x0126\x9e\x12\x12\x94\x14\x0e\x0e\x14\x0e\x88\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\xcb\b\t\x026\x02\x0e\a\x1a\x05\t\a\x026\x02\t\b\x11\f\x03\bF\b\x03\f\xbe\t\a\x10\a\t\f\f\x1e**\x1e\x0f\r\x05\a\x10\a\t\xb055\x10\x0e\x14\x0e\x0e\x14\xce\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c\xfe\xe0\r\b\x9b\a\t\x04\b\x04\x9b\b\r\v\x15\x15\v\x10\xa0\a\t\t\a$\x04*<*\x06\x06\t\x00\x00\x02\x00\x00\xff\xc0\x01@\x01\xc0\x00#\x00/\x00\x00%2\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\"&=\x0146;\x01&5462\x16\x15\x14\a&\"\x06\x15\x14\x16\x17>\x0254\x01(\n\x0e\x0e\n`\x0e\n \n\x0e`\n\x0e\x0e\n-%JlJ%E,\x1a\x1e\x12\v\x15\x10\xc0\x0e\n \n\x0e\x98\n\x0e\x0e\n\x98\x0e\n \n\x0e;5AOOA5;\xb0\"\x1e\x189\x14\f!(\x10\x1e\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x16\x00:\x00B\x00\x00%\x14\a\x06\x14\x17\x16\x1d\x01\x14\x06#!\"&5\x11463!2\x15\x05\x15\x14\x16;\x01\x15\x14\x16;\x0126=\x01326=\x014&+\x0154&+\x01\"\x06\x1d\x01#\"\x06\x135!\"\x06\x14\x163\x01\xc0\n\x02\x02\n\x0f\v\xfe\xba)77)\x01F\x1a\xfe\xd0\t\a0\t\a \a\t0\a\t\t\a0\t\a \a\t0\a\t\xed\xfe\xe3\r\x13\x12\x0eZ\x0f\x05\t4\f\n\t\x10\f\x0e7)\x01@)7\x1av \a\tp\a\t\t\ap\t\a \a\t0\a\t\t\a0\t\xfe\xc9@\x12\x1c\x12\x00\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\a\x00\x17\x00/\x003\x00B\x00\x00$2\x16\x14\x06\"&4\x1754+\x0154+\x01\"\x1d\x01\x14;\x012'\"\a!546;\x01546;\x012\x16\x1d\x0132\x16\x1d\x01&'5#\x15\x17\x06\x15\x14\x17!\"&=\x013\x15\x14\x163\x01\xb4xTTxT\xd0\n&\n\f\n\n<\n@7.\xfeu\x1d\x13P\x1d\x13\xa0\x13\x1dP\x13\x1d\t\xb7\x80\x87\a\x13\xfe\xdd\x13\x1d\xc0\t\a\xe0TxTTxB\f\n6\n\nL\n\xc0 P\x13\x1d0\x13\x1d\x1d\x130\x1d\x131\x01` \xe0\x18\x18*&\x1d\x13\x900\a\t\x00\x00\x00\x00\f\x00\x00\xff\xc0\x02\x80\x01\xc0\x00-\x009\x00E\x00Q\x00]\x00i\x00u\x00\x81\x00\x8d\x00\x99\x00\xa5\x00\xb1\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01546;\x012\x16\x1d\x013546;\x012\x16\x1d\x013546;\x012\x16\x1d\x01\x0554+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x1754+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x1754+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x1354+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\x02h\n\x0e\x13\r\xfd\xc0\r\x13\x0e\n(\t\a\x10\a\t@\t\a\x10\a\t@\x0e\n\x90\n\x0e\xfe\xa0\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\x80\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\xa0\f(\f\f(\f\f(\f\f(\f\f(\f\f(\f\xa0\f(\f\f(\f\f(\f\f(\f\x01\x00\x0e\n\xfe\xf8\r\x13\x13\r\x01h\n\x0eP\a\t\t\aPP\a\t\t\aPH\n\x0e\x0e\n\xa8\xd4(\f\f(\fl(\f\f(\fl(\f\f(\f\xb4(\f\f(\fl(\f\f(\fl(\f\f(\fT(\f\f(\fl(\f\f(\fl(\f\f(\f\xfe\xec(\f\f(\fl(\f\f(\f\x00\x00\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x14\x00T\x00\x00\x122\x16\x14\x06#\"'\x06#\"547>\x027&54\x05>\x01'.\x01/\x01&54;\x022\x17\x16?\x016&'&'54&+\x01\"\x06\x1d\x01\x0e\x02\x17\x1e\x01\x1f\x01\x16\x15\x14+\x01\"'&\x0f\x01\x06\x16\x17\x16\x17\x15\x14\x16;\x01265\x96Ԗ\x96j83AL\b\x02\x05\x0f\x1d\x069\x01\x18\x17\x1d\x03\x02\x18\x112\x06\t \x01\x05\x05\b\x06\x11\x04\x01\x04\x0e\x12\t\a\x10\a\t\x0f\x18\f\x02\x02\x18\x112\x06\t \x06\x05\b\x06\x11\x04\x01\x04\x0e\x12\t\a\x10\a\t\x01\xa0z\xacz\x133\b\x03\x03\x04\x132\x169JV\xb4\x02%\x18\x11\x19\x05\x0f\x01\a\b\x02\x04\x06\x11\x04\f\x03\t\x02\x12\a\t\t\a\x12\x01\x12\x1c\x10\x11\x19\x05\x0f\x01\a\b\x02\x04\x06\x11\x04\f\x03\t\x02\x12\a\t\t\a\x00\x03\x00\x00\xff\xe0\x02B\x01\xa0\x00\x12\x00O\x00g\x00\x00\x00\x14\x06#\"'\x06#\"54767&5462\x03\x14;\x012=\x01>\x0154.\x02/\x01&54>\x01;\x012\x17\x16?\x016'&'54+\x01\"\x1d\x01\x0e\x01\x15\x14\x16\x1f\x01\x16\x15\x14\x06+\x01\"'&\x0f\x01\x06\x17\x16\x17\x05\x16\x17\x16\x06#\"'\x06#\"&'\x1632654'\x1e\x01\x15\x14\x01\xa0zV<3+.\b\x02\x16\x0e&z\xacf\b\x10\b\x12\x19\x05\b\f\a-\t\x03\x06\x03\x1c\a\x06\x06\x04\f\a\b\x0e\x11\b\x10\b\x12\x19\x12\x0e-\t\a\x05\x1c\a\x06\x06\x04\f\a\b\x0e\x11\x01Z\x0e\x16\x03\x04\x05.+3<@h\x18\x12\x0ec\x8d\x019H\x01B\x84^\x19\x19\b\x03\x03\x17\x1f)3B^\xff\x00\b\b\x10\x01\x1a\x12\b\x0e\v\t\x02\r\x03\n\x03\x06\x04\x04\x03\x04\v\a\x05\v\x01\x10\b\b\x10\x01\x1a\x12\x0f\x18\x05\r\x03\n\x05\b\x04\x03\x04\v\a\x05\v\x01\x8c\x1f\x17\x04\n\x19\x196,\x02qO\n\n\x12P23\x00\x00\x00\x01\x00\x00\xff\xc0\x01\x80\x01\xc0\x00#\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\"&=\x0146;\x01546;\x012\x16\x1d\x01\x01`\r\x13\x13\r`\x13\r@\r\x13`\r\x13\x13\r`\x13\r@\r\x13\x01@\x13\r@\r\x13\xe0\r\x13\x13\r\xe0\x13\r@\r\x13`\r\x13\x13\r`\x00\x00\x00\x00\n\x00\x00\xff\xc0\x02\x01\x01\xc0\x00W\x00]\x00c\x00i\x00o\x00u\x00}\x00\x83\x00\x89\x00\x8f\x00\x00%2\x16\x1d\x01\x14\x06#'\x06\a\x17\x1e\x01\x0f\x01\x06\"/\x01\x06\a\x17\x14\x06+\x01\"&57&'\a\x06\"/\x01&4?\x01&'\a\"&=\x01463\x1767'&4?\x0162\x1f\x0167'46;\x012\x16\x15\a\x16\x17762\x1f\x01\x16\x14\x0f\x01\x16\x17'\a\x16\x177&'\x06\a\x1767#\x06\a\x1767\a\x16\x177&'\x177&'\a\x166264&\"\x06\x14\x1767'\x06\a367'\x06\a?\x01&'\a\x16\x01\xef\a\n\n\a\x11\b$\r\x05\x01\x05\x16\x04\x0e\x05\v/;\x01\t\a\x1e\a\t\x01;/\v\x05\x0e\x04\x16\x04\x05\r$\b\x11\a\n\n\a\x11\b$\r\x05\x04\x16\x04\x0e\x05\v/;\x01\t\a\x1e\a\t\x01;/\v\x05\x0e\x04\x16\x04\x05\r$\b\xc4\x04\x0f\r+\x1eY%\x1e+\r\x0fl\x15\x06@\x03\tL\x06\x151\t\x03C\x04\x0f\r+\x1e2\x1a\x13\x13\x1a\x13:%\x1e+\r\x0fl\x15\x06@\x03\t\f@\x06\x151\t\xdf\t\a\x1e\a\t\x01;/\v\x05\x0e\x04\x16\x04\x05\r$\b\x11\a\n\n\a\x11\b$\r\x05\x04\x16\x04\x0e\x05\v/;\x01\t\a\x1e\a\t\x01;/\v\x05\x0e\x04\x16\x04\x05\r$\b\x11\a\n\n\a\x11\b$\r\x05\x04\x16\x04\x0e\x05\v/;\u007f@\x03\t1\x15\x06\x06\x151\t\x03\x1e%\x04\x0f\rL%\x1e+\r\x0f\x87@\x03\t1\x15w\x13\x1a\x13\x13\x1a\x90\x06\x151\t\x03\x1e%\x04\x0f\rH\x04%\x1e+\r\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc1\x00\x0f\x00\x1f\x00-\x00T\x00\x007\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\a546;\x012\x16\x1d\x01\x14\x06+\x01\"&\x162?\x01\x15\x14\x06#!\"&=\x01\x17%\x16\x1d\x01\a5!\x15'54767546;\x01>\x0532\x1e\x04\x1732\x16\x1d\x01\x16\xb0\a\t\t\a\xa0\a\t\t\a\xb0\t\a\xa0\a\t\t\a\xa0\a\tF4\x15\xd1\x1c\x14\xfe`\x14\x1c\xd1\x01\x1d\x12`\xfe\xc0`\x12\x10\x0e\x1c\x14N\x01\a\x01\x1c\x0e\x17\b\b\x17\x0e\x1c\x01\a\x01N\x14\x1c\x0e\xe8\t\a\x10\a\t\t\a\x10\a\tP\x10\a\t\t\a\x10\a\t\tr\x0f\x97\xd5\x14\x1c\x1c\x14\u0557\xef\x0e\x18\nF\xb9\xb9F\n\x18\x0e\r\n,\x14\x1c\x01\x05\x01\x15\t\v\v\t\x15\x01\x05\x01\x1c\x14,\v\x00\x02\x00\x00\x00\x00\x02\x00\x01\x80\x00\x11\x00!\x00\x00\x012\x16\x1d\x01\x14\x06#!\"&5\x1146;\x01\x1f\x0154&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\xa0@`\t\a\xc0\a\t\t\a\xc0\a\t\x01@\x1c\x14\xe0\x14\x1c\x1c\x14\x01 \x14\x1c@\xa8\x10\a\t\t\a\x10\a\t\t\x00\x00\x02\x00\x00\x00\x00\x02\x00\x01\x80\x00\x11\x005\x00\x00\x012\x16\x1d\x01\x14\x06#!\"&5\x1146;\x01\x1f\x0154&+\x0154&+\x01\"\x06\x1d\x01#\"\x06\x1d\x01\x14\x16;\x01\x15\x14\x16;\x0126=\x01326\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\xa0@`\t\aH\t\a\x10\a\tH\a\t\t\aH\t\a\x10\a\tH\a\t\x01@\x1c\x14\xe0\x14\x1c\x1c\x14\x01 \x14\x1c@\xa8\x10\a\tH\a\t\t\aH\t\a\x10\a\tH\a\t\t\aH\t\x00\x00\x03\xff\xfa\xff\xbc\x02\x80\x01\xc0\x00\x14\x00\x1c\x00Z\x00\x00\x01\x0e\x01\x15\x14\x17\x0e\x01/\x01&=\x01'&63!2\x16\a\x062\x16\x14\x06\"&4\x17>\x0154&/\x01&546;\x012\x17\x16?\x016'&'54+\x01\"\x1d\x01\"\x0e\x02\x15\x14\x16\x1f\x01\x16\x15\x14\x0e\x02+\x01\"'&\x0f\x01\x06\x17\x16\x17\x15\x14;\x0125\x01\xb1?R;\b#\x10P\x10\xb7\x0f\x11\x15\x01\xe0\x15\x11\x0fy\x84^^\x84^\xb0\x12\x19\x12\x0e-\t\a\x05\x1c\a\x06\x06\x04\f\a\b\x0e\x11\b\x10\b\t\x10\v\a\x12\x0e-\t\x02\x03\x05\x02\x1c\a\x06\x06\x04\f\a\b\x0e\x11\b\x10\b\x01\x1a\x10gCQ9\x10\t\v<\f\x14\x9c\xca\x0f''\x0f\x8a^\x84^^\x84\x92\x01\x1a\x12\x0f\x18\x05\r\x03\n\x05\b\x04\x03\x04\v\a\x05\v\x01\x10\b\b\x10\b\f\x10\t\x0f\x18\x05\r\x03\n\x02\x05\x04\x02\x04\x03\x04\v\a\x05\v\x01\x10\b\b\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00e\x00o\x00y\x00\x00%2\x16\x1d\x01\x14\x06+\x015#5#5#\x153\x153\x15#54&+\x01\"\x06\x1d\x01#53535#\x15#\x15#\x15#\"&=\x0146;\x01546;\x01546;\x015462\x16\x1d\x0135462\x16\x1d\x0135462\x16\x1d\x0135462\x16\x1d\x0132\x16\x1d\x0132\x16\x1d\x01'\x15354&+\x01\"\x06\x1754&+\x01\"\x06\x1d\x01\x01\xf0\a\t\t\aP P\t\a@\a\tP P\a\t\t\a\x10\t\a\x10\t\a\x10\t\x0e\t@\t\x0e\t@\t\x0e\t@\t\x0e\t\x10\a\t\x10\a\t\xf80\t\a\x10\a\t8\t\a \a\t`\t\a\x80\a\t\xa0\x80``\x80\xa0P\a\t\t\aP\xa0\x80``\x80\xa0\t\a\x80\a\tp\a\tP\a\tp\a\t\t\a\x10\x10\a\t\t\a\x10\x10\a\t\t\a\x10\x10\a\t\t\ap\t\aP\t\ap\xb000\a\t\t\xb7@\a\t\t\a@\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x001\x00?\x00G\x00\x00%\x16\x15\x14\x0f\x01\x06\"/\x01&5476;\x015462\x16\x1d\x01\x14;\x012=\x01462\x16\x1d\x01\x14;\x012=\x01462\x16\x1d\x0132\x0426?\x01.\x02\"\x06\x0f\x01\x1e\x0162\x16\x14\x06\"&4\x01\xfd\x03\tf8\xb28f\t\x03\b\x15@\x18 \x18\n\x14\n\x18 \x18\n\x14\n\x18 \x18@\x15\xfe\xf300\f\f\x05\x11200\f\f\x05\x11=\x1a\x13\x13\x1a\x13\x8d\x06\a\r\tn<\x017632\x17\x16\x15\x14\a\x06\x15\x14\x17\x16\x15\x14\a\x06\x15\x14\x16\x177\a\x06#\"'&54?\x01'&4?\x01'&5432\x1f\x01\x134312\x15\x137632\x16\x15\x14\x0f\x01\x17\x16\x14\x0f\x01\x17\x16\x15\x14\a\x06#\"/\x01\x17>\x017654.\x01'&547654'&547632\x17\x1e\x01\x17\a3\x161\x14\x0f\x01\x02\x18!\x86Q\x06\aM\u007f\x1f(;\x04\x01\x01/)\t?$\x04\x05\b\x05\x03\x01\n:\a\x06)9+\x02\x1b\x02\x02\x04\x02\x02\x01\x14*\a\a*\x14\x01\b\x02\x02\x1e\f\b\b\v\x1f\x02\x02\x04\x04\x01\x14*\a\a*\x14\x01\x02\x02\x04\x02\x02\x1b\x02%5\b\x02\v\x13\v\x06\a:\n\x01\x03\x04\t\x05\x04$?\t)/\x01\x05;`HX\x04WE;\x13\x14\x05\x05\n\n)+_\x18\x03\a\x04\x05\x03\x03\x19\x1aG+\x05\b\a\x05%7-D\tA\x12\x01\x02\x02\x04\x02\x02!\t\x01\x0e\x01\t!\x02\x02\b\x01\x15\x01 \b\b\xfe\xe0\x15\x01\x04\x04\x02\x02!\t\x01\x0e\x01\t!\x02\x02\x04\x02\x02\x01\x12A\a5%\f\r\x0f# \n\x05\a\b\x05+G\x1b\x18\x03\x03\x05\x04\a\x02\x19`*)\x11\x1a\x1a;\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x16\x00\x1e\x00\xa0\x00\x00%\x06\x14\x17\x16\x1d\x01\x14\x06#!\"&5\x11463!2\x15\x11\x14\a!\"\x06\x14\x163!\x030\x14\x15\x17\x16\x15\x14#\"/\x01\x1e\x01267\a\x06#1\"'&54?\x01<\x0114'\a\x06#\"54?\x01.\x02'\x16\x15\x14\x06\a\x16\x15\x14\x0e\x01\a'\x17\x16312545'764/\x017454#\"#\a'4\"\x15\a'\"#\"\x15\x14\x1f\x01\a\x06\x14\x1f\x01\a\x06\x15\x14\x1632?\x01\a.\x02547.\x01547\x0e\x01\a\x17\x16\x15\x14#\"/\x01\x06\x01\xb6\x02\x02\n\x0f\v\xfe\xba)77)\x01F\x1aC\xfe\xe3\r\x13\x12\x0e\x01\x1d\xfd%\x03\b\x03\x02\x18\t=N=\t\x18\x02\x03\x04\x02\x02\x03%\x05\x15\x03\x03\b\x02\x1b\x04\x10\x12\t\n\x0e\n\x10\f\x14\f\x02\r\x01\x01\x04\t\x12\x03\x03\x12\t\x04\x01\x01\x0e\x05\b\x05\f\x01\x01\x04\x01\b\x12\x03\x03\x12\b\x01\x03\x01\x01\x01\v\x02\f\x14\f\x10\n\x0e\n\r\x1b\a\x1b\x02\b\x03\x03\x15\x05F\t4\f\n\t\x10\f\x0e7)\x01@)7\x1a\xfe\xb4\x0f\v\x12\x1c\x12\x01\x10\x01\x01 \x02\x04\b\x02\x15&11&\x15\x02\x03\x02\x03\x04\x02 \x01\x01\x0e\x12\x16\x02\b\x03\x03\x1a\t\x13\x11\x04\x0f\x12\r\x1c\b\x11\x16\f\x18\x10\x03#\t\x01\x04\x01\x01\x0f\x03\x01\x06\x01\x04\x0e\x01\x01\x04\np\x04\x04o\t\x04\x01\x01\x0e\x04\x01\x06\x01\x03\x0f\x01\x01\x01\x03\x01\a!\x03\x10\x18\f\x16\x11\b\x1c\r\x12\x0f\a\x1d\r\x1a\x03\x03\b\x02\x16\x12\x00\x00\x06\x00\x00\xff\xbf\x02A\x01\xc0\x00\x0f\x00 \x00.\x00=\x00K\x00Y\x00\x00\x01\x16\x1d\x01%&\a\x05546?\x0162\x17\a6\x17\x05\x15\x14\x06\x0f\x01\x06\"/\x01.\x01=\x01\x1754&\x0f\x01\x06\x1d\x01\x14\x16?\x016754&\x0f\x01\x06\x1d\x01\x14\x1e\x01376\x17\x15\x14\x1f\x01\x166=\x014/\x01&\x06'\x15\x14\x1f\x01\x166=\x014/\x01&\x06\x02*\x16\xfe\xf7\x17\x17\xfe\xf7\r\t\xec\x0e \x0e,\x0e\x0e\x01\x12\x0e\v\xf2\n\x16\n\xf2\v\x0e\x80\x06\x04P\x06\x06\x04P\x06\x90\x06\x04`\x06\x03\x05\x02`\x06\xb0\x06P\x04\x06\x06P\x04\x06\x90\x06`\x04\x06\x06`\x04\x06\x01l\a\x171P\a\aP1\n\x11\x03O\x05\x05m\x04\x04R\xe5\v\x11\x036\x02\x026\x03\x11\v\xe5\"\x10\x04\x05\x01\x16\x01\x06\x11\x04\x05\x01\x16\x02-\x11\x04\x05\x02\x1a\x01\x06\x11\x03\x04\x01\x1a\x02\x11\x10\x06\x02\x16\x01\x05\x04\x11\x06\x01\x16\x01\x05$\x11\x06\x02\x1a\x01\x05\x04\x11\x06\x01\x1a\x02\x05\x00\x03\xff\xf3\xff\xbf\x02\v\x01\xc0\x00n\x00v\x00~\x00\x00\x01\x1e\x01\a\x06\x0f\x01\x06/\x01\a\x17612\x16\x15\x14\x0e\x01#\".\x025'\x15\x16\x15\x14\x06\"&5475\a\x0e\x01#\"&4630\x177'\a\x06/\x01&'&676\x17\x16\a\x06\x15\x14\x16\x1f\x015'&?\x01.\x015467'&?\x01\x17\x16\x0f\x01\x1e\x01\x15\x14\x06\a\x17\x16\x0f\x01\x157>\x0154'&5476\a4'\a\x06\x1f\x016'\x14\x1776/\x01\x06\x01\xa082\x10\n\x1f5\b\vP\x1d/\x05\n\x0e\x06\v\a\x04\b\a\x04)\x10\x13\x1a\x13\x10)\x01\r\t\n\x0e\x0e\n\x05/\x1dP\v\b8\x15\n\x19/<\v\t\t\a\x19&!M,\a\x04\b\x1a\x1f\x1e\x19\x06\x04\b;;\a\x04\x05\x19\x1e\x1f\x1a\b\x03\x06,L\"&\x19\x03\x04\tU\x1b\b\r\r\x06\x1d\x80\x1d\x05\x0e\x0e\a\x1b\x01~\x1es?'$=\n\x06*\x14!\x01\x0e\n\a\v\x06\x03\x06\a\x05\x1c\x1e\t\x12\r\x13\x13\r\x12\t\x1e\x1c\t\f\x0e\x14\x0e\x01!\x14*\x06\nA\x18\x19E\x80 \a\t\n\n(/(F\x166\x14$\a\t\x11\x0f3\x1f\x1e3\x0f\v\t\a55\a\t\v\x0f3\x1e\x1f3\x0f\x11\t\a$\x146\x16F(/(\x04\x05\x06\x05\tt \x14\x11&&\f\x13\"\"\x13\f&&\x11\x14\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x11\x00'\x007\x00\x00\x01\x16\x1d\x01\x14\x06#!\"&=\x014?\x0162\x17\a3\x15353\x15353\x1532\x16\x1d\x01!546;\x01\x052\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\xf6\n\t\a\xfe \a\t\n\xeb\x05\f\x05\xcb@`@`@\x10\a\t\xfe@\t\a\x10\x01\xb0\a\t\t\a\xfe \a\t\t\a\x01d\x04\v%\a\t\t\a%\v\x04Z\x02\x02\xbe\xa0\xa0\xa0\xa0\xa0\t\a00\a\t`\t\a \a\t\t\a \a\t\x00\x05\x00\x00\xff\xc0\x02@\x01\xc0\x00\x0f\x00'\x009\x00=\x00L\x00\x00:\x01767\x15\x14\x06#!\"&=\x01\x16\x1772\x16\x1d\x01\x0e\x02\a\"\x06#\".\x01'.\x02'5463%2\x16\x1d\x01\x14\x06+\x015.\x01+\x015463\x055#\x15%\x15#5463!2\x16\x1d\x01#\"\x06\x8b*+ @\x13\r\xff\x00\r\x13@ \xc0\r\x13\a\x17,)\x02\"\t\a\x11\x14\x01),\x17\a\x13\r\x02\x00\r\x13\x13\r\xc0\x03$\x19`\x13\r\x01 @\xfe\xe0`\x13\r\x01@\r\x13\xe0\x1a& \x160\x86\r\x13\x13\r\x860\x16\xa0\x13\r\x13\x06\x12!\x1e\x16\t\x10\x01\x1d\"\x12\x05\x10\r\x13`\x13\r\xc0\r\x13\x86\x19! \r\x13\x80@@` \xc0\r\x13\x13\r`&\x00\f\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\t\x00\x13\x00\x1d\x00'\x002\x00=\x00H\x00S\x00^\x00i\x00t\x00\xb2\x00\x00\x132\x16\x1d\x01#546;\x012\x16\x1d\x01#546;\x012\x16\x1d\x01#546;\x012\x16\x1d\x01#54636\"&546?\x01\x16\x15\x14\x06\"&546?\x01\x16\x15\x14\x06\"&546?\x01\x16\x15\x14\x06\"&546?\x01\x16\x15\x14\x06\"&546?\x01\x16\x15\x14\x06\"&546?\x01\x16\x15\x14\x06\"&546?\x01\x16\x15\x14\x05546;\x012\x16\x1d\x01\x14\x06+\x01\x1532\x16\x1d\x01\x14\x06#!\"&=\x0146;\x015#\"&=\x0146;\x012\x16\x1d\x01\x14\x16;\x01546;\x012\x16\x1d\x01326\x90\a\t@\t\a\x80\a\t@\t\a\xe0\a\t@\t\a\x80\a\t@\t\a}\x1a\x13\x10\b\b s\x1a\x13\x10\b\b s\x1a\x13\x10\b\b s\x1a\x13\x10\b\b s\x1a\x13\x10\b\b s\x1a\x13\x10\b\b s\x1a\x13\x10\b\b \x02\x00\t\a \a\t8(\xc0\xb0\a\t\t\a\xfe`\a\t\t\a\xb0\xc0(8\t\a \a\t\x13\r\xc0\t\a \a\t\xc0\r\x13\x01@\t\a\x90\x90\a\t\t\a\x90\x90\a\t\t\a\x90\x90\a\t\t\a\x90\x90\a\t \x13\r\b \f\f.\x12\r\x13\x13\r\b \f\f.\x12\r\x13\x13\r\b \f\f.\x12\r\x13\x13\r\b \f\f.\x12\r\x13\x13\r\b \f\f.\x12\r\x13\x13\r\b \f\f.\x12\r\x13\x13\r\b \f\f.\x12\rӐ\a\t\t\a\x90(8@\t\a \a\t\t\a \a\t@8(\x90\a\t\t\a\x90\r\x13\xb0\a\t\t\a\xb0\x13\x00\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\t\x00\x18\x00C\x00P\x00\x00\x15\x113\x11\x14\x06+\x01\"&%!&5476?\x01\x17\x16\x17\x16\x15\x14\x152\x16\x1d\x01\x14\x06+\x0154&\"\x06\x1d\x01#54&/\x01\x0e\x02\x1d\x01#54&\"\x06\x1d\x01#\"&=\x01463\x03\x1e\x04\x1d\x01#5467\x80\x13\r@\r\x13\x02C\xfe\x9a\x1dXE+\b\b+EX\r\x13\x13\r \x13\x1a\x13@\x18\f\f\x05\x10\x1b@\x13\x1a\x13 \r\x13\x13\r\x80\x03\b\x16\x11\x0e\x80 \x10 \x01@\xfe\xc0\r\x13\x13\xcd\x1c\x1fC8+5\n\n5+8C\x1f<\x13\r\x80\r\x13@\r\x13\x13\r@H\x15$\a\b\x03\n&\x15H@\r\x13\x13\r@\x13\r\x80\r\x13\x01@\x01\x05\x12\x15!\x12 \x1c0\n\x00\x00\x00\x00\x03\xff\xff\xff\xc0\x02\x00\x01\xc5\x00\x0e\x00h\x00\x84\x00\x00\x01'&4?\x016\x1f\x01\x16\x14\x0f\x01\x06\"\x162\x16\x1d\x01\x14\x06#\".\x025'546\x17\x16326=\x014&\"\x0f\x01\x06+\x01\x16\x15\x14\x06#\".\x02546\x17\x16\x17\x1e\x033264&+\x01&/\x01&6;\x01264&#\"\a\x06/\x01&476\x17\x1e\x02\x17\x16\a32?\x026\x16\x1d\x01\x14\x0e\x04#\".\x05'&6\x17\x1e\x036\x01i\x16\x03\x03\x16\a\a\x16\x03\x03\x16\x03\b\aR;;%\x1b'\x13\n\x01\v\x03#/\v\x15\x15\x1e\n\x19\x1d)\x16\x12K5*A$\x11\v\x04\x01\x03\v\x10!1 \x1a&&\x1a!\t\x04\x10\x04\t\t \x14\x1c\x1c\x14\x11\r\n\n\x1a\x06\x05(8\x16%\x1a\x05\t\x11/\x0f\n\x18q\b\x12\x03\x05\x0f\x15%\x16\x10\x1f\x16\x15\r\v\x04\x01\x06\x13\v\x04\x0e&'5\x01\x83\x16\x03\b\x03\x16\a\a\x16\x03\b\x03\x16\x03\x80;)d$4\r\x13\x13\x06\a&\x06\x03\x04+\x0f\td\x0f\x15\n\x19\x1d\x1f!5K\x1f01\x17\x06\x05\x06\x02\x04\x14\x15\x1f\x0e&4&\x01\b \b\x0f\x1c(\x1c\v\a\a\x14\x04\x0f\x06&\n\x03\x17$\x15'$\n\x19\x9a\x06\t\n$\x03\x06\a\f\t\a\b\f\x10\r\x0f\x06\x02\f\x11\b\x04\b\x0f\x05\r\x00\x00\x03\xff\xff\xff\xc0\x02\x82\x01\xc0\x00\xa5\x00\xad\x00\xb5\x00\x00$\x1e\x01\x0e\x01&\a\x06#\".\x03'&'\x06\a\x1e\x0132\x16\x14\x06#\".\x02'\x06\"'\x0e\x03#\"&463267&'\x06\a\x0e\x02\a\x06#\"'&\x06&'&4>\x017>\x01\x1e\x02\x17\x166767&'\x06#\".\x01'&#\"&4632\x1e\x01\x17\x1632>\x017'.\x015462\x16\x15\x14\a\x1762\x177&5462\x16\x15\x14\x06\x0f\x01\x1e\x02327>\x0232\x16\x14\x06#\"\a\x0e\x02#\"'\x06\a\x16\x17\x1e\x017>\x03\x02\"\x06\x14\x16264$\"\x06\x14\x16264\x02g\x13\b\a\x12\x13\x16\x1f\x15\f\x17\x10\n\x05\x03\x03\x03\x1c!\t \x13\n\x0e\x0e\n\x17(\x19\x0e\x05\r\x10\r\x05\x0e\x19(\x17\n\x0e\x0e\n\x13 \t!\x1c\x03\x03\x04\x06\x15\x0f\v\f\x15\x1f\x16\x13\x12\x03\x02\x04\a\x04\n\x13\x0e\x11\b\b\x16\x13\x06\b\n\x04\x02\x13\x17\x10\x1a\f\b\x0e\b\n\x0e\x0e\n\x10\x1a\f\b\x0e\b\a\x17*\x19\x11\x19#%6%\v\x13\x1b:\x1b\x13\v%6%#\x19\x11\x19*\x17\a\b\x0e\b\f\x1a\x10\n\x0e\x0e\n\b\x0e\b\f\x1a\x10\x18\x12\x02\x04\n\b\x06\x13\x16\b\b\x11\x0e\x8d\x0e\t\t\x0e\t\xfe\xf7\x0e\t\t\x0e\th\a\x12\x13\b\a\x0f\x15\t\x0e\x14\r\v\r\x06\x17\v#8\x0e\x14\x0e\x1c-%\x13\x01\x01\x13%-\x1c\x0e\x14\x0e8#\v\x17\x06\r\x0f\x11\x19\x05\x05\x15\x0f\a\b\t\x05\n\b\a\x01\x04\x01\x03\b\x05\x05\x0f\a\x1a\x1d\x0e\x05\x03\x11\x10\x0e\r\x15\x0e\x14\x0e\x10\x0f\f\x15!4\x11\"\x02%\x19\x1b%%\x1b\x13\x10%\b\b%\x10\x13\x1b%%\x1b\x19%\x02\"\x114!\x15\r\x0e\x10\x0e\x14\x0e\x15\r\x0e\x10\x11\x03\x05\x0e\x1d\x1a\a\x0f\x05\x05\b\x03\x01'\t\x0e\t\t\x0e\t\t\x0e\t\t\x0e\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0e\x00\x12\x00\x16\x00\x1e\x00\x00\x122\x16\x14\x06\"&4\x054&'\x15\x176\a5\a\x167\x1567\x03\x0e\x02\x15\x14\x177\x91Α\x91Α\x01\xb0WA\x81\x17\xd8Y&s3&\x99+E(\x17\x81\x01\xb8\x91Α\x91\xcegCg\v\xa6g)\x86rG\"ir\t\"\x01?\b3N,/)g\x00\x00\x03\x00\x00\xff\xc0\x02\x80\x01\xc7\x00\t\x00\x14\x00/\x00\x00%\x1e\x01\x1d\x01\x14\x06+\x015\x054>\x01?\x01\x15#\"&5%\x16\x1d\x01#54&\"\x06\x1d\x01#54?\x0154?\x016\x1f\x01\x16\x1d\x01\x02m\b\v\t\ap\xfe\x00\x05\t\x05mp\a\t\x01\xd0\x10`%6%`\x100\tL\v\vL\tQ\x03\x11\td\a\t\xc0L\x06\f\t\x02/\xc0\t\a\xf9\t\x12\xee`\x1b%%\x1b`\xee\x12\t\x1ds\x0e\tK\f\fK\t\x0es\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x1354&+\x01\"\x06\x1d\x01\x14\x16;\x0126754&+\x01\"\x06\x1d\x01\x14\x16;\x0126754&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14p\t\a \a\t\t\a \a\t`\t\a \a\t\t\a \a\t`\t\a \a\t\t\a \a\t\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xb0\x80\a\t\t\a\x80\a\t\t\a\xe0\a\t\t\a\xe0\a\t\t\a@\a\t\t\a@\a\t\t\x00\x00\x00\x04\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00\x00%\x14\x06#!\"&5\x11463!2\x16\x15\x05326=\x014&+\x01\"\x06\x1d\x01\x14\x16\x17326=\x014&+\x01\"\x06\x1d\x01\x14\x16\x17326=\x014&+\x01\"\x06\x1d\x01\x14\x16\x01\xc0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xb0\x80\a\t\t\a\x80\a\t\t\a\xe0\a\t\t\a\xe0\a\t\t\a@\a\t\t\a@\a\t\t\x10\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\x14p\t\a \a\t\t\a \a\t`\t\a \a\t\t\a \a\t`\t\a \a\t\t\a \a\t\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\x82\x01\xc0\x00\a\x00(\x00\x00\x00\"&462\x16\x14\a'\a\x17\x16\x06+\x01\"&46;\x01'.\x01?\x01676\x1f\x0176\x1e\x01\x06\x0f\x01\x06&\x01\x1b6%%6%_\x18#n\x13\x15\x1a\xd0\x11\x17\x17\x11\\- \x14\x121\x12&(\x18':\f!\x15\x03\rX\f!\x01@%6%%6\xcf\x1dAn\x131\x17\"\x17#\x14G!\\!\x04\x04\x1e./\n\x03\x19!\vH\n\x03\x00\x00\x02\x00\x00\xff\xc0\x02\x80\x01\xc2\x00)\x00R\x00\x00\x002\x16\x1d\x01\x14\x06\x0f\x01\x06#\"&=\x0146?\x0154?\x0103>\x01\x17\x1e\x01\x0f\x01\x06\x1d\x01\x14\x1626=\x014\x05\x16\x1d\x01\x14\x06#\"/\x01.\x01=\x01462\x16\x1d\x01\x14\x1626=\x014/\x01&676\x16\x1721\x17\x16\x1d\x01\x01\x03\x1a\x13/&\xb3\x04\x04\x10\x10\r\tZ\x10u\x01\a\x19\n\f\x06\aM\x0e\t\x0e\t\x01z\x16\x10\x10\x04\x04\xb3&/\x13\x1a\x13\t\x0e\t\x0eM\a\x06\f\n\x19\a\x01u\x10\x01\x00\x13\r\x80'?\n/\x01\x15\v`\n\x11\x03\x1eQ\x1d\x18\xb0\v\x05\x06\a\x1a\v\x82\x17\x1aM\a\t\t\aP\r\x8f\a\x17`\v\x15\x01/\n?'\x80\r\x13\x13\rP\a\t\t\aM\x1a\x17\x82\v\x1a\x06\a\x06\n\xb0\x18\x1dQ\x00\x00\x00\x04\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x16\x001\x00N\x00V\x00\x00%\x14\a\x06\x14\x17\x16\x1d\x01\x14\x06#!\"&5\x11463!2\x15\x0f\x02\"\x06\x1f\x01\a\x063237\x17232/\x0176&#/\x01&\"'\"\x06\x14\x16327654#0\"#\"&463:\x011\x16324#&\x135!\"\x06\x14\x163\x01\xc0\n\x02\x02\n\x0f\v\xfe\xba)77)\x01F\x1a\x93\v\x19\x02\x01\x01\x12\x04\x01\x04\x01\x01\x16\x16\x01\x01\x04\x01\x04\x12\x01\x01\x02\x19\v\x01\x04;/DD/\x15\x13\x05\a\x03\x01'88'\x01\x03\x01\x02\x06\x06\x14u\xfe\xe3\r\x13\x12\x0eZ\x0f\x05\t4\f\n\t\x10\f\x0e7)\x01@)7\x1ax\x16\x04\x04\x02\x11\x19\x04\f\f\x04\x19\x11\x02\x04\x04\x16\x02CC`C\a\x02\x05\x068N8\x01\x0e\a\xfe\x8d@\x12\x1c\x12\x00\x00\x03\x00\x00\xff\xc0\x02\x01\x01\xc0\x00\x19\x00$\x00_\x00\x00%\x16\x14\x0f\x01\x06\"/\x01&=\x01\x06#\"&462\x16\x15\x14\a32\x17\x042654.\x01#\"\x06\x147\x1e\x01\x15\x14\x06\a\x15\x14+\x01\"=\x01&'&?\x016\x17\x16;\x012654/\x01.\x0154>\x01354;\x012\x1d\x01\x16\x17\x16\x0f\x01\x06'&+\x01\"\x06\x15\x14\x17\x01\xf9\a\a\x1c\a\x14\ad\a8HVzz\xacz,\x10\n\a\xfe\xffxT'B'+C\x03\b\x03CJ\n\x0e\x0e\x14\x0e\x06\f\x05\a\x14\a\x1c\a\ad\a\n\x10,z\xaczzVH8\a\tT<'C&Tx\x9c+\x1f$O\x03\x03O$\x1f5\x0e\x14\x0e\x0e\n\a\v\x06\x00\x00\x00\x00\x04\xff\xfa\xff\xc0\x02\x00\x01\xc0\x00\x10\x00\x1b\x00%\x005\x00\x007\x0e\x01\x17\a\x06#\"&'&6?\x0153\x155\x15#546;\x012\x17\x0672\x16\x1d\x01#5463\x0353\x15\x14\x06\x0f\x01\x06#\"&'&67\xd7(\x16\x16\x15\x1a \x19.\r\x12\x11\x1eW\xa0\xa0\x13\r\x80\x02\x06\b\xc0\r\x13\xc0\x13\r \xc0\x1e\x15s\x1a \x19-\r\x12\x11\x1e\x89\x1e^)\x11\x13\x19\x17!H\x16A\xb0\xa0\xe0 \r\x13\x02\x0e\x10\x13\r \r\x13\xfe\xf0\xb0\xd0\x1a=\x0fW\x13\x19\x17!H\x16\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02G\x01\xc0\x00\x1b\x00;\x00\x00%\x16\x0f\x01\x17\x16\x0f\x01\x06/\x01\a\x06/\x01&?\x01'&?\x016\x1f\x0176\x1772\x16\x1d\x01\x14\x06+\x01\x03\x0e\x01#\"/\x01#\"&=\x0146;\x012\x1f\x01\x13>\x013\x02;\f\f..\f\f\x16\f\v..\v\f\x16\f\f..\f\f\x16\f\v..\v\f\x03\n\x0e\x0e\n\xc3b\x06 \x10\x1f\x12X,\n\x0e\x0e\nQ\x13\n:U\x02\x12\v\xc5\f\v..\v\f\x16\f\f..\f\f\x16\f\v..\v\f\x16\f\f..\f\f\xe5\x0e\n0\n\x0e\xfe\x89\x15\x14\x1c\xa4\x0e\n0\n\x0e\x11j\x01C\v\r\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x02\x01\xc0\x00\x1c\x009\x00\x00\x052\x16\x15\x14\a\x06#\"&4632\x17\x16\a\x06#0&#\"\x06\x14\x163267\x1e\x01\x0f\x01\x17\x16\x06#\"/\x01\a\x06#\"&?\x01'&6?\x0262\x1f\x01\x01T\a\t\v+.j\x96\x96j.,\f\x03\x02\r\a\x02W||W\x02\a\xa3\a\x03\x047\r\x01\a\x04\x02\x03DD\x03\x02\x04\a\x01\r7\x04\x03\aL\"\x03\f\x03\"\x12\t\x06\v\x04\x10\x96Ԗ\x10\x05\r\f\x01|\xae|\x01\xfc\x01\f\x046L\x04\a\x01$$\x01\x06\x05L6\x04\f\x01\vE\x06\x06E\x00\x00\x00\x00\b\xff\xfa\xff\xc0\x01\xd6\x01\xc0\x00\x1d\x00 \x00&\x00)\x00,\x00/\x002\x005\x00\x00%\x17\x16\x06+\x01\a\x06\"/\x01#\"&?\x01'&6;\x01762\x1f\x0132\x16\x0f\x01#\x17\a'#\a\x173\x03\a3\a\x177\a3'\x177#73'\x01\x965\v\x16\x15k8\v*\v8k\x15\x16\v55\v\x16\x15k8\v*\v8k\x15\x16\vB(\x14 5p55p8\x17.\xb8\x14\x14((\x14\x8d\x17.\x90(\x14\xc0Y\x13$^\x12\x12^$\x13YY\x13$^\x12\x12^$\x13\x01!7XXX\x01\x0e&8!!\xb0!\u007f&8!\x00\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc9\x00\t\x00\x13\x00'\x00E\x00\x00762\x1f\x01\x11#547!\x16\x1d\x01#\x11762\x17'\x17\x16\x15\x11#54&\a\x0e\x01\x1d\x01#\x114?\x016\x17'76&+\x01'&\"\x0f\x01#\"\x06\x1f\x01\a\x06\x16;\x01\x17\x162?\x01326F\x04\f\x04&\x80\a\x02r\a\x80&\x04\f\x04\xe6\x80\f`-\x1e\x17\x1e`\f\x80\x14H\x13\x13\x02\x03\x03'\x19\x01\x06\x01\x19'\x03\x03\x02\x13\x13\x02\x03\x03'\x19\x01\x06\x01\x19'\x03\x03\xfb\x05\x05+\xfe\xf0\xe2\n\b\b\n\xe2\x01\x10+\x05\x05\xbef\n\x0f\xfe\x86`\x1d'\x05\x04&\x18]\x01z\x0f\nf\x10\xe8\x1f\x1f\x02\x05(\x02\x02(\x05\x02\x1f\x1f\x02\x05(\x02\x02(\x05\x00\v\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x02\x00\x05\x00\x11\x00\x14\x00\x17\x00\x1b\x00F\x00R\x00U\x00X\x00^\x00\x00%'37\a'$2\x16\x15\x11\x14\x06\"&5\x114\x137\x1737\x17\x05\x11!\x11\x01\x06\x15\x14\x1f\x01\a\x06\x15\x14\x16;\x01\x17\x1632?\x01327654/\x017654&+\x01'\"\x0f\x01#\"$2\x16\x15\x11\x14\x06\"&5\x114\a\x17#\x0f\x01'\x17'73\x17\a\x01@\x12$Q\x12\x13\xfe\x9e(\x1c\x1c(\x1c\xdd\x12\x13|\x13\x12\xfe\xdd\x01\x80\xfe\xc3\x03\x03\x1d\x1d\x03\f\t<\x1d\x06\f\f\x06\x1d<\f\x06\x03\x03\x1d\x1d\x03\f\t<\x1d\x06\f\f\x06\x1d<\f\x01s(\x1c\x1c(\x1c\xe0\x12$,\x13\x12B!!B!!R\x1d\x89\x1f\x1f\xc8\x13\r\xfe@\r\x13\x13\r\x01\xc0\r\xfe\xdb\x1f\x1f\x1f\x1f\x98\x01\xa0\xfe`\x01\x16\x05\x05\x06\x0511\x05\x06\b\r1\n\n1\v\x05\x05\x06\x0511\x05\x06\b\r1\n\n1\xaf\x13\r\xfe@\r\x13\x13\r\x01\xc0\r\u007f\x1d\x1a\x1e\x1eo8888\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x007\x00;\x00?\x00\x00\x01267\x15\x14\x06+\x01\x1532\x16\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&=\x01#\"&=\x0146;\x015#\"&=\x01\x1e\x013\a\x1535\x175#\x15\x01x\x1eP\x1a\x13\r 0\a\t\t\a0\t\a \a\t\xff\x00\t\a \a\t0\a\t\t\a0 \r\x13\x1aP\x1e\b`\xa0`\x01\xa0\x13\r`\r\x13@\t\a \a\t\xf0\a\t\t\a\xf0\xf0\a\t\t\a\xf0\t\a \a\t@\x13\r`\r\x13`@@@@@\x00\x00\x00\x03\xff\xfe\xff\xc0\x02\x82\x01\xc0\x00@\x00D\x00H\x00\x00%\x16\a\x06\x0f\x01\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&=\x01'&'&?\x015'&4?\x015'&6?\x01\x17\x1e\x01\x0f\x01\x15\x17\x16\x14\x0f\x01\x15%\x1535\x05!5!\x02y\b\x01\x01\b7\t\a \a\t\xa0\t\a \a\t\xa0\t\a \a\t7\b\x01\x01\bY7\t\tw\x1b\x06\x03\a\xb7\xb7\a\x03\x06\x1bw\t\t7\xfe\xc0\xc0\xff\x00\x01@\xfe\xc0/\x05\n\b\x04\x140\a\t\t\a00\a\t\t\a00\a\t\t\a0\x14\x04\b\n\x051@\x12\x04\x14\x042@\x10\x06\x10\x04VV\x04\x10\x06\x10@2\x04\x14\x04\x12@\xe0@@\xe0@\x00\x00\x02\x00\x00\xff\xfb\x02\a\x01\x85\x00\x11\x00-\x00\x00\x136\x16\x15\x11\x14\x06/\x01#\"&=\x0146;\x01\x05\x17\x16\x0f\x01\x06/\x01\a\x06/\x01&?\x01'&?\x016\x1f\x0176\x1f\x01\x16\a\xd7\v\x1e\x1e\vYf\n\x0e\x0e\nf\x01P-\f\f\x17\v\v..\v\v\x17\f\f--\f\f\x17\v\v..\v\v\x17\f\f\x01y\v\f\x10\xfe\xb0\x10\f\vY\x0e\n\x90\n\x0e`.\v\v\x17\f\f--\f\f\x17\v\v..\v\v\x17\f\f--\f\f\x17\v\v\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1d\x00%\x00\x00\x122\x16\x14\x06\"&4\x16264&\"\x06\x14&264&#\"\x06\x14\x163\"&462\x16\x14\x06\"&4\x91Α\x91Α\xeb\x1a\x13\x13\x1a\x13\bP88(PppP(8S\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xce\xe7\x13\x1a\x13\x13\x1am8P8p\xa0p8P\xb8\x13\x1a\x13\x13\x1a\x00\x00\x04\xff\xff\xff\xc0\x02@\x01\xc2\x00\x1b\x004\x00D\x00L\x00\x00\x01\"\x1d\x01\x14;\x01\a#\"\x1d\x01\x14;\x01\a#\"\x1d\x01\x14;\x01\a!\x11!\a\x01\x16\x0f\x01\x06&'.\x017>\x01\x1f\x01\x16\x0f\x01\x06/\x01\x06\x1776\x17\x052\x16\x1d\x01\x14\x06#!\"&=\x01463\x16264&\"\x06\x14\x01\x88\b\b\x9e\x12\x8c\b\b\x84\x12r\b\bi\x11\xfe\xe0\x01\x80\x11\xfep\x05\f'\n\x19\aF\x02F\b\x19\v'\f\x05\x1a\x05\f-\x1b\x1b-\f\x05\x01[\x1b%\x13\r\xfe\xa0\r\x13%\x1b\x83\x1a\x13\x13\x1a\x13\x01\x80\b\x10\b@\b\x10\b@\b\x10\b@\x01`@\xfe\xf1\r\a\x18\x06\x03\bM\xcfN\t\x05\a\x18\a\r?\f\x01\x05JJ\x05\x01\fp%\x1b \r\x13\x13\r \x1b%`\x13\x1a\x13\x13\x1a\x00\x00\x00\x06\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\a\x00\x1e\x000\x00L\x00T\x00\\\x00\x00\x00\"&462\x16\x14\x17\x14\a\x06\x14\x17\x16\x1d\x01\x14\x06#!\"&5\x11463!2\x15\x06\"\x06\x15\x14\x17\x15\x14\x16;\x0126=\x01654\a\x06\x1f\x01\a\x06\x1f\x01\x16?\x01\x17\x16?\x016/\x0176/\x01&\x0f\x01'&\a\x175!\"\x06\x14\x163\x12\"&462\x16\x14\x01\x17\x0e\t\t\x0e\t\xa0\n\x02\x02\n\x0f\v\xfe\xba)77)\x01F\x1a\xafB/ \t\a@\a\t \xc3\x03\aGG\a\x03\x06\x03\bbb\b\x03\x06\x03\aFF\a\x03\x06\x03\bbb\b\x03\xfa\xfe\xe3\r\x13\x12\x0ew\x0e\t\t\x0e\t\x018\t\x0e\t\t\x0e\xe7\x0f\x05\t4\f\n\t\x10\f\x0e7)\x01@)7\x1a\x1e&\x1a \x13\r\a\t\t\a\r\x13 \x1a\x81\b\x03\x1e\x1e\x03\b\x0e\b\x03++\x03\b\x0e\b\x03\x1e\x1e\x03\b\x0e\b\x03**\x03\b\xef@\x12\x1c\x12\x018\t\x0e\t\t\x0e\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x80\x01\xc7\x00 \x00#\x00\x00!2\x16\x1d\x01\x14\x06#!\"&=\x0146;\x01\x13'&?\x016\x1f\x0176\x1f\x01\x16\x0f\x01\x13%\a3\x02p\a\t\t\a\xfd\xa0\a\t\t\a\x19\xef5\t\r\x19\r\n))\n\r\x19\r\t5\xef\xfe\xe9t\xe8\t\a \a\t\t\a \a\t\x01JJ\r\t\x13\t\r88\r\t\x13\t\rJ\xfe\xb6\xa0\xa0\x00\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xa0\x00-\x007\x00?\x00G\x00\x00\x01\x1e\x03327\x15\x14\x06+\x01\"&=\x01\a32\x16\x1d\x01\x14\x06+\x01\"&5\x114&\"&4632\x16\x1d\x01>\x03?\x01\x15\x14\x06\"&=\x01\x17\x06264&\"\x06\x14\x16264&\"\x06\x14\x01#\x04\x17!*\x17\x0f\x11\t\a \a\t\x80 \r\x13\t\a\xb0\x1a&\x13\x1a\x13\x13\r(8\x1333\x1c\xab@8P8@\x0f\x0e\t\t\x0e\tY\x0e\t\t\x0e\t\x01\x00\x16&\x1b\x0f\x04\xce\a\t\t\a\x90`\x13\r\x10\a\t&\x1a\x01\x00\r\x13\x13\x1a\x138(V\x1d'\x0e\x04`@\x86(88(\x86@P\t\x0e\t\t\x0e\t\t\x0e\t\t\x0e\x00\x02\xff\xfc\xff\xc0\x01\xc4\x01\xc0\x00\x17\x007\x00\x00\x13\x15#546;\x012\x16\x1d\x01#54'\x15#5#\x15#5\x06\x01\x16\x06#\x15\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&=\x01\"&?\x0163!2\x17p0K5@5K0(000(\x01N\x05\x13\x10\t\a \a\t\xff\x00\t\a \a\t\x10\x14\x06\n\b\x17\x01j\x17\b\x01@\x80\x805KK5\x80\x80.\x17\xc5\xd0\xd0\xc5\x17\xfe\xfc\x0f\x1bp\a\t\t\app\a\t\t\ap\x1b\x0f \x16\x16\x00\x00\x00\x02\x00\x00\xff\xc0\x02B\x01\xc0\x00\x1c\x00<\x00\x00%\x1e\x01\x15\x14\x06+\x01\"&54674&54632\x16\x17632\x16\x15\x1476\x16\a\x06\a&'654&#\"\a&'&54632\x17\x1e\x01\a\x0e\x01\x15\x14\x16\x01W\x1f*/!\xf0(8$\x1d\x018(\x1b,\r\x12\x1a\x1a&\xd5\x06\a\x045T\x11%\x018(\x13\x11\a\n\x02qO\x11\x12\x06\x02\x05#)m_\x02.\x1f!/8(\x1f1\n\x01\x04\x01(8\x1b\x17\x12&\x1a\x11'\x01\v\x05A\x05$\x10\x06\x05(8\a\a\a\r\fPp\x03\x01\r\x03\x14F)F[\x00\x00\x00\x03\x00\x00\xff\xbf\x02\x80\x01\xc0\x00\x1e\x00D\x00Q\x00\x00%\x1e\x01\x15\x14\x06#!\"&54674&454632\x16\x17632\x16\x15\x14\x06%\x16\x17\x06\x0f\x01\x06&?\x01'&4?\x01'&6\x1f\x01762\x1f\x0176\x16\x0f\x01\x06\a&'&\"\x06\x1474632\x16\x17\x06\a\x06\a.\x01\x02?\x1d$8(\xfe\xf0(84%\x01B.\"6\x0e\x10\x12\x1a&\x01\xfeR\x0f\x15\x0f\tL\t\r\x03\x1dS\b\bS\x1d\x03\r\tX)\x05\x12\x05)X\t\r\x03\x1e\x11\r\t\x0e!\\B\x1c1#\x19)\n;\b\f\r\x1d'z\n1\x1f(88(&6\x03\x01\x04\x03\x01.B$\x1e\n&\x1a\x01\x04\x16\x10\b\x0f\x13\x19\x03\r\tX)\x05\x12\x05)X\t\r\x03\x1dS\b\bS\x1d\x03\r\tY\x02\x06\x14\r!B\\.#1\x1b\x17$D\x04\b\x05/\x00\x00\n\xff\xfe\xff\xbe\x01\xe2\x01\xc0\x00\x05\x00\x0e\x00\x17\x00 \x00'\x000\x00:\x00E\x00K\x00O\x00\x007\x17'\"&?\x01\x06&=\x0146\x1f\x01\a&63\x17\x15\x14\x06'\x03'&4?\x016\x16\a\x17#762\x1f\x0176\x16\x1d\x01\x14\x06/\x03&>\x01\x1f\x01\x16\x14\a\x032\x16\x0f\x01\x06\".\x01=\x017\x17\x16\x06#\a'3\a'kl\xd0\x04\x04\x02\x06\x01\x06\x04\x02MA\x03\x02\x03\xcc\a\x04rQ\x02\x02\x97\x05\t\x04=m_\x05\x12\x05_}\x02\x04\x06\x01L\x10P\x02\x02\a\x03\x97\x02\x02\x02\x03\x02\x03\xc3\x02\x04\x03\x02uj\x02\x04\x04\xd0\x19ddd\xe9\xbe\x16\b\x048\x03\x02\x03\xa2\x03\x02\x01.\xe7\x02\x06\x16B\x04\x05\x02\x01Y1\x01\x04\x02b\x03\t\x05\x99\xa8\b\b\xa8\x1d\x01\x02\x03\xa2\x03\x02\x03z\x1b\x8f\x04\a\x02\x02b\x02\x04\x01\xfe\xd5\x06\x02W\x01\x02\x04\x02Bߜ\x04\b\x16Ű\xb0\x00\x03\x00\x00\xff\xbd\x01\xc0\x01\xcb\x00\v\x00\x17\x00#\x00\x00\x01\x16\x14\x0f\x01'&4?\x016\x1f\x016\x16\x1d\x01\x14\x0f\x01\x06&=\x01'46\x1f\x01\x15\x14\x06/\x01&5\x01\xa6\x04\x04\xc6\xc6\x04\x04\xa6 \xb4\x04\b \x98\b\x10\xf0\b\x04\xc4\x10\b\x98 \x01R\x02\n\x02ww\x02\n\x02e\x14\x14\x92\x03\x05\x05\xc6&\x13]\x05\n\n\xe0m\x05\x05\x03t\xe0\n\n\x05]\x13&\x00\x00\x00\x00\x03\x00 \xff\xc0\x02 \x01\xa3\x00\x1e\x004\x00<\x00\x00%\x17\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&=\x01.\x015462\x16\x14\x163%\x15\x14\x06+\x01\x15'546\x1f\x0132\x1e\x01\x1f\x0132\x16\x064&\"\x06\x14\x162\x01*\x96\t\a@\a\t\xa0\t\a@\a\t\x1c$\x13\x1a\x13\x13\r\x01\xa0&\x1a \x80\x14\a\x1c5\x06\v\t\x03\a@\a\tp\t\x0e\t\t\x0e\xe06\xda\a\t\t\app\a\t\t\a\xd6\n1\x1f\r\x13\x13\x1a\x13p \x1a&$.\x96\v\b\b\x1b\x05\b\x05\x0e\t\x0e\x0e\t\t\x0e\t\x00\x03\xff\xfc\xff\xbf\x02\x82\x01\xc0\x00\x10\x00C\x00I\x00\x007\x06&?\x01>\x01\x1f\x01\x15\x14\x17#\"&?\x01\x05\x1e\x01\a\x0e\x01#!\"&547>\x027.\x01=\x01'&4?\x01'&6;\x012\x1f\x01\x16\x15\x14\x0f\x01\x0e\x01+\x01\"/\x01#\x15\x14\x16\x177\x06\x16\x17\x167\x12\f\t\tu\x11*\x12x\x0f\xdf\v\b\b[\x01\u007f #\x02\x03H0\xfe\r\b\n\x0eGU\xbcZ-3<\x04\x04<>\x03\x04\x05\xed\x10\nK\x06\x03\x0f\x03\x11\b\x1f\x0e\t\x1c@\x10\v\x0e\x03\x0e\v\x13\x05\xc0\x01\x16\au\x0e\x02\fW+*)\x14\aEB\x10<#/@\n\b\x0e\x03\x10\x11\x19\x03\x1e_6m\x19\x02\n\x02\x192\x04\n\rc\t\n\b\a\x1c\b\n\t\x17%\f\x19\x06\xae\f\x11\x01\x01\x13\x00\x00\x00\x01\x00\x00\xff\xbf\x02\x03\x01\xc0\x00.\x00\x00\x01\x16\a&\x06\a\x0e\x01\x17\x06#\"+\x01\a\x06\x17\x16\x15\x14\x06\"'&7\x06'&54>\x0132\x17\x16?\x01547>\x0232\x16\x01\xcf3\x02\x1fH\x1a\x1e\x01\x1e\x1d\x1f\x01\x01V(\x0f\t\x04#2\x12\x17\b\"\x16\x12\x10\x1c\x10\f\v\x16\x0f(?\x0e).\x13\x1dF\x01\x8e3I\x11\t\x19\x1eX!\n)\x0e\x16\v\f\x19#\x12\x16\"\b\x17\x12\x19\x10\x1c\x10\x04\t\x0f(VO?\x0e\x17\r\x1d\x00\x00\x00\x00\f\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x10\x00 \x000\x00@\x00P\x00`\x00p\x00\x80\x00\x90\x00\x9a\x00\xa3\x00\xac\x00\x007\x16\a\x06\a\x06+\x01\".\x01767>\x01\x17%\x1e\x01\x0f\x01\x06+\x01\"/\x01&6762\x032\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x13\x16\a\x06\a\x06/\x01.\x017676\x16\x1f\x01\"'&'&?\x016\x16\x17\x16\x17\x16\x06#'\x16\x06\x0f\x01\x06'&'&?\x01>\x01\x17\x16\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463'62\x17\x11\x14+\x01\"5'67\x11\x14+\x01\"5\x13\x16\x17\x15\x14+\x01\"5\x81\v\x05\x05\x01\x02\ra\x05\a\x05\x01\x03\x13\x03\x0e\x06\x01\x11\a\x06\x03%\x04\v*\v\x04%\x03\x06\a\x1f@\xb0\a\t\t\a`\a\t\t\a`\a\t\t\a`\a\t\t\a\xad\x05\v\t\b\t\vS\x06\x03\x05\x1e*\x06\r\x03\xf5\r\x02\x01\x05\x05\vS\x06\x0e\x03\x13\x03\x01\n\a*\x05\x03\x06S\v\t\b\t\v\x05$\x03\r\x06*I\a\t\t\a`\a\t\t\a`\a\t\t\a`\a\t\t\a\xa0\n\f\n\b\x10\b@\f\x14\b\x10\b\x80\x14\f\b\x10\b\xfd\a\r\r\x0e\x0e\x05\a\x05.+\x06\x04\x04\x88\x02\r\x06h\v\vh\x06\r\x02\b\xfe\xe0\t\a@\a\t\t\a@\a\t\x80\t\a@\a\t\t\a@\a\t\x01\x1c\f\b\x06\b\t\a3\x04\x0e\x06$\x18\x03\x05\a\xd6\x0e\x0e\r\r\a3\x04\x04\x06+.\a\n\xa3\x06\x0e\x043\a\t\b\x06\b\fZ\a\x05\x03\x18\xe7\t\a@\a\t\t\a@\a\t\x80\t\a@\a\t\t\a@\a\t\xee\x02\x02\xfe\xda\b\b\xfd\x12\f\xfe\xe5\b\b\x01\x1b\f\x12\xfd\b\b\x00\x00\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00-\x00O\x00h\x00q\x00\x00\x13\x14\x16;\x01\x11\x14\x06#!\"&5\x1146;\x01\x0354+\x01\"\x06\x1d\x01\x14\x16;\x012=\x014+\x01\"&=\x0146;\x012\x172654/\x01&54;\x012=\x014+\x01\"\x06\x15\x14\x1f\x01\x16\x15\x14+\x01\"\x1d\x01\x14374+\x01\"\x1d\x01\x14\x17\x16276=\x014+\x01\"\x1d\x01\x14\a&57\x16\x1d\x01#532\x17\xe0\x0e\n\x88\x0e\n\xfe\xb0\n\x0e\x0e\n\xc8`\b\b\x14\x1c\x1c\x14\b\b\b\b\a\t\t\a\b\b,\x12\x19\x0e\x16\x02\v\f\b\b\f\x12\x19\x0e\x16\x02\v\f\b\b`\b\x10\b$\x05\x0e\x05$\b\x10\b\x10\x10y\a\x80\x06\n\a\x018\n\x0e\xfe\xb8\n\x0e\x0e\n\x01\xd0\n\x0e\xfe\xe8\x10\b\x1c\x14 \x14\x1c\b\x10\b\t\a \a\t`\x17\x10\x10\f\x13\x01\x02\a\b\x10\b\x17\x10\x10\f\x13\x01\x02\a\b\x10\bx\b\b\x157'\x05\x05'7\x15\b\b\x15\x1f\x1a\x1a\x1f\xb4\a\n\x06\x80\a\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\v\x00D\x00P\x00`\x00p\x00\x00\x01#\"\a546;\x012\x16\x15\x17\x15\x14\x06\x0f\x01\x15!5'&=\x01\x16;\x0127\x16;\x0127\x16\x17\x06\x0f\x01\x06\x15\x14\x1f\x01\x1632?\x01>\x0272=\x014+\x01\"&546;\x012\x16'&+\x01546;\x012\x16\x15\x05\"&=\x0146;\x012\x16\x1d\x01\x14\x06#3\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\x01\x000\b\b\t\a \a\t\x80\x10\f$\xff\x00\x1b%\b\b \x12\x0e\x0e\x12 \v\v\f\x1b\x15\x1b\x06\x01\x03\x0e\x02\x02\x04\x03\x06\x12\x18 \x16\b\r#\x14\x1c\t\ap\x1a& \x11\x0f \t\a \a\t\xfe\xb0\a\t\t\a \a\t\t\a@\a\t\t\a \a\t\t\a\x01 \x03\x93\a\t\t\a\xf0X\x11'\f$@@\x1b%5N\x03\f\f\x06\x1a\t\x12(\t\x02\x03\x04\x03\b\x02\x04\t\x1b\x1b\x12\x01\b\x10\b\x1c\x14\a\t%?\x06p\a\t\t\a\xb0\t\a\x80\a\t\t\a\x80\a\t\t\a\xa0\a\t\t\a\xa0\a\t\x00\x03\x00\x00\xff\xb9\x01\x80\x01\xc3\x00\x1e\x00&\x00.\x00\x00\x136\x16\x15\x11\x14\x06/\x01&\x0f\x01\x06/\x01&\"\x0f\x01\x06/\x01&\x0f\x01\x06&5\x1146\x16264&\"\x06\x14\x16264&\"\x06\x14\xbaRt\x14\a\x19\f\n+\v\v)\x05\x0e\x05)\v\v+\n\f\x19\a\x14l\a\x1a\x13\x13\x1a\x13\x93\x1a\x13\x13\x1a\x13\x01\xc0\x02qQ\xfe\xf0\v\b\b\x12\t\v0\f\f.\x05\x05.\f\f0\v\t\x12\b\b\v\x01\bPv\xde\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x00\x00\x02\xff\xff\xff\xbf\x02G\x01\xc0\x00\x1b\x00'\x00\x00%\x16\x0f\x01\x06/\x01&?\x01'\x06/\x01&=\x01'62\x1f\x01\x16\a\x1776\x17\x05\x17\x16\x17\a\x06\"&47%\x16\x02;\f\fZ\v\f\x16\f\f\v\x1d$\x1a1\x13Z/\x84/-\x1a\t\x1d\v\v\f\xfe\xf81\x04\a\xee\x124%\x14\x00\xff\x05\xfe\v\fZ\v\v\x17\v\v\f\x1c\t\x1a1\x13\x1a\x13-//-\x1a$\x1d\f\v\v\b1\x04\x05\xff\x14%4\x12\xee\a\x00\x00\x00\x10\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\a\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x00m\x00x\x00\x83\x00\x90\x00\x9b\x00\xa8\x00\xb3\x00\xbe\x00\xc9\x00\xd6\x00\x00\x1332\x1d\x01#54#32\x1d\x01#54;\x012\x1d\x01#54;\x012\x1d\x01#54\x17\x15#54;\x012!32\x1d\x01#54!2\x16\x1d\x01\x14\x06+\x01\x1532\x16\x1d\x01\x14\x06#!\"&=\x0146;\x015#\"&=\x0146;\x012\x16\x1d\x01\x14\x16;\x01546;\x012\x16\x1d\x01326=\x014636\"&546?\x01\x16\x15\x14\x04\"&546?\x01\x16\x15\x14%\".\x01546?\x01\x16\x15\x14\x0e\x01\"&546?\x01\x16\x15\x14\x17\"&546?\x01\x16\x15\x14\x0e\x012\"&546?\x01\x16\x15\x14\x16\"&546?\x01\x16\x15\x14\x16\"&546?\x01\x16\x15\x14\x17\"&546?\x01\x16\x15\x14\x0e\x01\xe8\x10\b 8\x10\b \xe8\x10\b H\x10\b ` \b\x10\b\xfeH\x10\b \x02\x10\a\t8(\xc0\xb0\a\t\t\a\xfe`\a\t\t\a\xb0\xc0(8\t\a \a\t\x13\r\xc0\t\a \a\t\xc0\r\x13\t\a\x1a\x14\x0e\f\x06\x06\x18\xfd\xb2\x14\x0e\f\x06\x06\x18\x01\b\a\v\x06\f\x06\x06\x18\x0e\xd0\x14\x0e\f\x06\x06\x18(\n\x0e\f\x06\x06\x18\x06\vC\x14\x0e\f\x06\x06\x18\x92\x14\x0e\f\x06\x06\x182\x14\x0e\f\x06\x06\x18(\n\x0e\f\x06\x06\x18\x06\v\x01 \bxx\b\bxx\b\bxx\b\bxx\b\bxx\b\bxx\b\t\ap(8@\t\a \a\t\t\a \a\t@8(p\a\t\t\ap\r\x13\xc0\a\t\t\a\xc0\x13\rp\a\t \x10\v\x06\x1b\n\n'\x0e\v\x10\x10\v\x06\x1b\n\n'\x0e\v \a\f\b\x06\x1b\n\n'\x0e\v\x100\x10\v\x06\x1b\n\n'\x0e\v\x10\x10\v\x06\x1b\n\n'\x0e\b\f\a\x10\v\x06\x1b\n\n'\x0e\v\x10\x10\v\x06\x1b\n\n'\x0e\v\x10\x10\v\x06\x1b\n\n'\x0e\v\x10\x10\v\x06\x1b\n\n'\x0e\b\f\a\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x0f\x00$\x00,\x00\x00!2\x16\x1d\x01\x14\x06#!\"&=\x014637\x17#7>\x01?\x01\a\x06\x15\x14\x1f\x01#?\x01/\x01\x0f\x017\a\x1f\x01?\x01/\x01\x01\xf0\a\t\t\a\xfe \a\t\t\a\xb0\x10\x90o\a\x1f\x0f\xbc8\x04\x06V\xd0\x10@@ @\x80 \x10\x10 \x10\t\a \a\t\t\a \a\t@ \xfa\x10\"\tk\xa9\n\n\r\f\xca @@ \xc0\x10\x10 \x10\x10 \x00\x00\x04\xff\xff\xff\xbf\x01\x80\x01\xc0\x00\v\x00\x1b\x00J\x00R\x00\x00\x177\x17\a\x0e\x01#\"'.\x027\x0e\x01/\x01.\x02?\x01>\x01\x17\x1e\x01\a\x172\x16\x15\x11\x14\x06+\x01\"&=\x01#\"/\x01\a\x061\x17\x16\x1d\x01\x14\x06\"&=\x01'&54?\x01>\x0132\x1f\x0135463&\"&462\x16\x14Q#4\x19\x03\x11\v\x04\x04\b\f\x05\x11\x02\v\a@\x04\x06\x03\x01\x1a\b:!\a\a\x02\xe7\a\t\t\a\x10\a\t0\r\n\x16\x14\x01/\x13\x13\x1a\x13W\t\x01\x1b\x05 \x14\x18\x11/#\t\a\\(\x1c\x1c(\x1c\x18\x8a5e\v\r\x01\x02\f\x10\xcd\x06\a\x01\x10\x01\x06\b\x04b\x1f\"\b\x02\v\x06+\t\a\xfe\xc0\a\t\t\a\xf0\t\x17P\x01/\x13\x1aS\r\x13\x13\rSV\n\r\x04\x04k\x14\x19\x11/\x10\a\t@\x1c(\x1c\x1c(\x00\x00\x02\x00\x00\xff\xe0\x02\x80\x01\xa0\x00>\x00F\x00\x00\x012\x1e\x01\x1d\x01\x14\x06#\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&=\x01\x06\"'\x15\x14\x06+\x01\"&=\x014632\x17546;\x012\x16\x1d\x01632\x1e\x01\x17>\x02\x06264&\"\x06\x14\x02E\x11\x1b\x0f\x13\r\t\a \a\t\x80\t\a@\a\t3z3\t\a@\a\tpPI7\x0e\n\x10\n\x0e\x11\x0f\x14#\x1a\b\a\x1f\x1a\x80\x0e\t\t\x0e\t\x01`\x14\x1f\x11\\\r\x13 \a\t\t\a \xb0\a\t\t\aG\x17\x17G\a\t\t\a\xf0B^)1\n\x0e\x0e\n\x0e\x06\x0f\x1b\x11\x03\x0f\tP\t\x0e\t\t\x0e\x00\x00\x00\x02\x00\x00\xff\xc0\x02A\x01\xc0\x00K\x00S\x00\x00\x01\x15\x14\x0e\x01\x0f\x01\x06&/\x02\x150\x15\x14\a\x15\x14\x06+\x01\"&=\x01'\a\x17\x16\x06+\x01\"/\x01&54?\x01&5457\x06\x1d\x01\x14\x06+\x01\"&=\x01463\x156;\x0146;\x012\x16\a\x06\a\x16\x17\x16\x06264&\"\x06\x14\x02@\x05\n\x05!\v\x18\x05\x13\x10 \t\a@\a\t\x86\x18\x1a\x02\t\bB\f\x03\x19\x02\x04\x1a\x1f\x01\x11\t\a\x10\a\t4$\x1d+\xa0K5x\x04\x05\x01\x04\x12\a\x06\tG\x0e\t\t\x0e\t\x01sM\x06\f\n\x02\r\x05\t\v&\af\x01-!\xb2\a\t\t\a\x96\x17@i\b\f\fd\a\b\f\vD\x1d)\x02\x03\x03\r\x138\a\t\t\a8$4\x01!5K\x06\x04\x13\v\b\a\t \t\x0e\t\t\x0e\x00\x00\x00\x02\xff\xf9\xff\xc0\x02G\x01\xc1\x00\x17\x004\x00\x00\x01\x17\x1e\x013\x15\x14\x06+\x01'7'\x17\a\x17#\"&=\x01265%\x16\x0f\x01\x06/\x01&\x0f\x01\x06/\x01&7%62\x1f\x01546;\x012\x16\x1d\x01\x01 \xdb\x01\x03\x01\t\a\xb0(h\x94\x00F\x00N\x00\x00\x012\x16\x1d\x01\x14\x06+\x01\a\x1732\x16\x1d\x01\x14\x06+\x01'\a32\x16\x1d\x01\x14\x06+\x01\"\x06\x14\x16;\x012\x16\x14\x06+\x01\"&'&76=\x0146;\x0176;\x022\x1f\x01\x06\"\x06\x14\x16264\x17267#\a\x177\x02`\r\x138(\x17\\7\x1c\r\x13\t\aPK\x95@\r\x13\t\a\xe0\a\t\t\ap\r\x13\x13\rl\x1e0\x05\a\x1e(pP8\x99\x0f\x11\x14\x01\x1a\x13\r9\x0e\t\t\x0e\t\x10\x0f\x19\x05Mw\x0ef\x01\xa0\x13\r (82n\x13\r\x10\a\t\x90P\x13\r\x10\a\t\t\x0e\t\x13\x1a\x13%\x1d*\x1e&.\x02PpX\b\x13\r\x10\t\x0e\t\t\x0eW\x12\x0e;\x1c7\x00\x03\x00\x00\x00\x00\x02\x00\x01\x80\x00\v\x00\x17\x00\x1d\x00\x00\x122\x16\x1d\x01\x14\x06\"&=\x014$\"\x06\x15\x14\x1762\x17654\x05\x1627&\"\x93ړ\x96Ԗ\x01P\xa0p\vI\xd8I\v\xfe\xb89\x9e9:\x9c\x01\x80R>b;SS;b>\x12/!\r\r**\r\r!Z\x17\x17\x19\x00\x00\x03\x00\x00\xff\xc0\x01\xa0\x01\xc0\x00\a\x00\x15\x00B\x00\x00\x00\"&462\x16\x14\a\x16\x1f\x01\a\x06+\x01\"&46;\x01%2\x16\x14\x06+\x01\"/\x01\a\x17\x1e\x01\x0f\x01\x06#\"'.\x01?\x01'.\x01?\x01'&\x0f\x01\x06.\x016?\x016\x1f\x01\x16\x1f\x01\x01$(\x1c\x1c(\x1c\xce\f\x1a\n\b\r M\r\x13\x13\rC\x01\x1d\r\x13\x13\r6\x1e\r\x14 >\x0e\f\x05\x1f\a\x18\x05\x05\f\f\x03\x1cU\x15\x0f\n%\x0f\r\f(\n\x1a\x10\x03\v'%,G*\x14\x1a\x01`\x1c(\x1c\x1c(\xf9\x1c\x0f\x06\x15\x1d\x13\x1a\x13\x80\x13\x1a\x13\x1b)N$\t\x1e\x0ff\x16\x02\x03\x18\rW2\r.\x16W\x05\x03\n\x1e\b\x03\x15\x1b\b\x1e\x1c\v\x15\v(5\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\n\x00\x1a\x00&\x00\x00\x122\x16\x1d\x01#\"&=\x014\x01\x14\x06\a\x06&5\x114'!2\x16\x15\x11!\x17!2\x16\x15\x14\x06#!265\x1c(\x1cP\a\t\x01\x00\x1e\x17\x1e-\x10\x01P(8\xfe\xe0 \x01P\a\tB.\xfe\xb0(8\x01\xc0\x1c\x14P\t\a@\x14\xfe\u007f\x18&\x04\x05'\x1d\x01p\x1a\x168(\xff\x00 \t\a.B8(\x00\x00\x04\xff\xfe\xff\xbe\x01\xc2\x01\xc0\x00#\x007\x00?\x00G\x00\x00\x05\x1e\x01\x0f\x01\x0e\x01/\x01\a\x06&/\x01&6?\x01'.\x01?\x01>\x01\x1f\x0176\x16\x1f\x01\x16\x06\x0f\x01'.\x015462\x16\x15\x14\x06\a\x17\x16\x06+\x01\"&76\"\x06\x14\x16264&\"\x06\x14\x16264\x01\xb7\x06\x04\x03\x0e\x03\r\x05\xbb\xbb\x05\r\x03\x0e\x03\x04\x06\x8e\x8e\x06\x04\x03\x0e\x03\r\x05\xbb\xbb\x05\r\x03\x0e\x03\x04\x06\x8e\x93 &TxT& \x06\x02\v\b~\b\n\x02\x94\x1a\x13\x13\x1a\x13\x83\x1a\x13\x13\x1a\x13\x05\x03\r\x06\x1c\x06\x04\x03ZZ\x03\x04\x06\x1c\x06\r\x03EE\x03\r\x06\x1c\x06\x04\x03ZZ\x03\x04\x06\x1c\x06\r\x03E\x93\x11:\"5KK5\":\x11\x1a\n\x0f\x0f\n\x97\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x01\xff\xf9\xff\xb9\x02\x87\x01\xc7\x00\v\x00\x00\x05\x01&?\x016\x17\x01\x16\x0f\x01\x06\x02S\xfd\xb3\f\t\x14\n\f\x02M\f\t\x14\n=\x01\xc7\n\r\x19\f\t\xfe9\n\r\x19\f\x00\x00\x03\xff\xf9\xff\xc0\x02G\x01\xc2\x00\x13\x00o\x00\x84\x00\x00\x13'&54?\x01>\x01\x1f\x01\x1e\x01\x0f\x01\x17\x06\x0f\x01#\x05\x16\x0f\x01\x06/\x01#\x17\x16\x1d\x01\x14\x06+\x01\"&=\x01'\x16\x15\x14\x06\"&547\a\x15\x14\x06+\x01\"&=\x014?\x01#\a\x06/\x01&?\x016;\x01'&/\x01&?\x016\x1f\x0237>\x032\x1e\x02\x1f\x013?\x016\x1f\x01\x16\x0f\x01\x06\x0f\x0132\x17/\x01&6?\x016\x1e\x01\x1f\x01\x16\x15\x14\x0f\x02#'&'\x97\x1b\x03\x01\x1a\x02\f\x06\x10\x06\x06\x02\x18\x14\x02\x01\x05\x05\x01\x8c\t\r\r\x0e\t0/=\x05\t\a\x10\a\tJ\x027R7\x02J\t\a\x10\a\t\x05=/0\t\x0e\r\r\t4\n\x11NE\n\a5\t\r\x0e\r\t2=$\n\x02\a\x0f\x1c$\x1c\x0f\a\x02\n$=2\t\r\x0e\r\t5\a\nEN\x11\ns\x18\x02\x06\x06\x10\x04\b\x06\x02\x1a\x01\x03\x1b\x1a\x05\x05\x01\x02\x01\x196\a\a\x05\x05N\x06\x06\x02\x05\x02\f\x06H(\x06\x06\x1a\xad\x0e\t\b\t\rHa\b\tN\a\t\t\aIw\x1e\r(==(\x0e\x1dwI\a\t\t\aN\t\baH\r\t\b\t\x0eO\x0e\x18\x04\tP\x0e\t\b\t\rL\x144\x06\x10\x17\x0f\x0f\x17\x10\x064\x14L\r\t\b\t\x0eP\t\x04\x18\x0e\xacH\x06\f\x02\x05\x01\x01\x06\x04N\x05\x05\a\a6\t\x1a\x06\x06\x00\x00\x00\a\xff\xfe\xff\xc0\x02@\x01\xc0\x00\x1c\x00$\x00,\x004\x00<\x00D\x00L\x00\x00\x13!\x0e\x02\x1d\x01\x14\x0e\x01\a\x06#!\"&7>\a=\x0146\x16264&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x14\x16264&\"\x06\x1462\x16\x14\x06\"&4\x16264&\"\x06\x14\x80\x01\x1c\x12\x1b\x0f\b\b\t\a\x17\xfe\xe7\b\n\x03\x03\t\x04\x06\x03\x03\x02\x018\x01\x0e\t\t\x0e\tI\x0e\t\t\x0e\tI\x0e\t\t\x0e\tI\x0e\t\t\x0e\t\xa8P88P8S\x1a\x13\x13\x1a\x13\x01\xc0\x13:J)\xac\x191\x1a\x1a\x16\r\b\t\x1a\r\x13\v\x0f\f\x0e\b\xacPp\xe0\t\x0e\t\t\x0e\t\t\x0e\t\t\x0e\t\t\x0e\t\t\x0e\t\t\x0e\t\t\x0e\xd7p\xa0pp\xa0\x90%6%%6\x00\x00\x05\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\a\x00\x0f\x00m\x00u\x00z\x00\x00$2\x16\x14\x06\"&4\x16264&\"\x06\x14\x132\x16\x1d\x01\x14\x0f\x01&#\"\a#\x15\x14\x06+\x01\x06\a\x17\x16\x14\x0f\x01\x06\"/\x01\x06\a\x15\x14\x06+\x01\"&=\x01&'\a\x06\"/\x01&4?\x01&'#\"&=\x0146;\x0167'&4?\x016\x17546;\x012\x1e\x01\x1f\x01354762\x1f\x01\x16\a\x06\x1d\x01\x00264&\"\x06\x1473'#\x15\x01\xecH44H4N\x14\x0e\x0e\x14\x0eh\r\x13\t3\x19\x1b;$Q\r\t\a\x05\a\x05\x06\x06\x1f\a\x12\x06\x05\x0e\x0f\r\t,\t\r\x0f\x0e\x05\x06\x12\a\x1f\x06\x06\x05\a\x05\a\t\r\r\t\a\x05\a\x05\x06\x06\x1f\x0e\x0f\x1c\x14\x85\t\x12\x0e\x048f\x1e\x04\x0f\x05\x16\t\b\r\xfeoB//B/fn)kp4H44H<\x0e\x14\x0e\x0e\x14\x01\x12\x13\r3\r\t3\f0\x06\t\r\x0f\x0e\x05\x06\x12\a\x1f\x06\x06\x05\a\x05\a\t\r\r\t\a\x05\a\x05\x06\x06\x1f\a\x12\x06\x05\x0e\x0f\r\t,\t\r\x0f\x0e\x05\x06\x12\a\x1f\r\f\x93\x14\x1c\b\r\b\x83(.$\x06\x05\x18\n\n\x11\x16(\xff\x00/B//B\xd1``\x00\x00\a\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x06\x00\n\x00\x14\x00\x19\x00 \x00(\x00<\x00\x00\x01\a#>\x0132\x17#7\x16\x06\"&5473\x16\x15\x14\x0567\x17#'547\x15\"&%2\x16\x14\x06+\x01'72\x16\x1d\x01\x14\x06+\x01654&+\x01'3\x1627\x01\x15ZR\x0f@(\x1b\\gB\x196jK\x02\xfc\x02\xfe\xf0\x0e\x10b\x80P0\x14\x1c\x01\x00\x14\x1c\x1c\x14\r*q7O\x1c\x14P\x10/!F*\a#L#\x01\xb4D$,P2\x15\xcdK5\x03\r\r\x035w\a\x03\xde0*=)\xc0\x1cD\x1c(\x1c`\x80O7*\x14\x1c\x16\x1a!/`\x10\x10\x00\x00\x00\x03\x00\x00\x00\x00\x02\x80\x01\x80\x00\x1c\x00$\x00,\x00\x00\x012\x16\x15\x11\x14\x06+\x01\".\x01/\x01&\"\x0f\x01\x0e\x01+\x01\"&5\x11463\x16264&\"\x06\x14\x04264&\"\x06\x14\x02`\r\x13\x13\r\xa0\r\x17\x11\x06\x1b\r:\r\x1b\b \x13\xa0\r\x13\x13\re6%%6%\x01e6%%6%\x01\x80\x13\r\xfe\xc0\r\x13\t\x11\f=\x1d\x1d=\x11\x15\x13\r\x01@\r\x13\xf0%6%%6%%6%%6\x00\x00\x03\x00\x00\xff\xd9\x02\n\x01\xa4\x00 \x00A\x00[\x00\x0072\x16\x17\x16\x06#\"&'&6;\x012\x17\x1632>\x01'.\x01+\x01\"&=\x014635\"&=\x01463!2676&#\"\a\x06+\x01\".\x017>\x02\x1e\x01\x17\x16\x06#\x172\x16\a\x0e\x01\a\x06&'&6;\x012\x17\x163264&+\x01&'\x9d%9\x04\x06:+#5\x06\x02\n\b \f\x04\a\x17\n\x0f\b\x01\x02\x14\f\x8e\a\t\t\a\a\t\t\a\x01N\f\x14\x02\x02\x13\x0f\x17\a\x04\f \x05\b\x04\x01\x05!26(\x06\t:-06D\r\a/\x1f+H\x0e\x03\n\b\"\n\x04\x0e\x1c\x14\x1c\x1c\x14t\v\x1d\xc0/$,A,\"\a\v\n\x16\n\x12\t\f\x0f\t\a \a\t \t\a \a\t\x0f\f\x0e\x17\x16\n\x05\t\x04\x19'\x11\v(\x1b.G T7\x1e.\x06\n+'\b\r\b\x18\x1c(\x1c&\x1a\x00\x02\x00\x00\xff\xc0\x02\a\x01\xc7\x00\x1b\x00\x1f\x00\x00\x01\x16\x0f\x01\x06'\a\x16\x06\x0f\x01\x06\"/\x01&4?\x01>\x01\x177&?\x016\x17\x017'\a\x01\xfb\f\f\x16\f\vM\x10\x0f\x1c\x9e\x135\x13Z\x13\x13\x9e\x1cN#L\v\v\x17\v\v\xfe\xfczZz\x01w\v\v\x17\v\vL#N\x1c\x9e\x13\x13Z\x135\x13\x9e\x1c\x0f\x10M\v\f\x16\f\f\xfe^zZz\x00\x00\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\a\x00\x0f\x00-\x00W\x00\x0062\x16\x14\x06\"&4$2\x16\x14\x06\"&4'\x16\x14\a\x16\a\x06#\"'\x06\"'\x06#\"'&7&47&6\x1762\x176\x166\x14\x06+\x01&'&#&\"\a\"\a\x06\a#\"&5467&54632\x16\x17632\x16\x15\x14\a:\x0112\x1c(\x1c\x1c(\x1c\x01\xbc(\x1c\x1c(\x1cG\x17\x17\b\x12\f\x11\x05\b\f2\f\a\x06\x11\f\x12\b\x17\x17\b$\x18\f2\f\x19#\x9f8(+\x06\t\x15\x1e\x15<\x15\x1e\x15\t\x06+(8%\x1d\x02B. 5\x0e\x18%!/\x02\x01\x01(`\x1c(\x1c\x1c(\x1c\x1c(\x1c\x1c(\x11\f2\f\x19\x11\r\x03\x17\x17\x03\r\x12\x18\f2\f\x19#\b\x17\x17\b$\x9bP8\f\n\x15\x15\x15\x15\t\r8(\x1f2\n\v\n.B!\x1c\x1d/!\t\a\x00\x00\x00\x06\x00\x00\xff\xc0\x02B\x01\xc0\x00\x19\x008\x00E\x00R\x00_\x00l\x00\x00%\x1e\x01\x15\x14\x06#!\"&5467<\x0114632\x17632\x16\x176\x16\a\x06#\"&\"'.\x02'&'>\x0132\x17\x1e\x01\a\x0e\x01\x15\x14\x1e\x02\a\x16\x0f\x01\x06#\"'&?\x01>\x01\a\x16\x0f\x01\x06#\"'&?\x01>\x01\a\x16\x0f\x01\x06#\"'&?\x01>\x01\a\x16\x0f\x01\x06#\"'&?\x01>\x01\x01^\x1d%/!\xff\x00!/%\x1b8(1\x1d\x10\x12\x1d,\xdf\x05\x04\x03+E\x03\x05\x06\x02\x03\x13\x1d\x13\x10+\x03T:\r\r\x05\x02\x05\x1a\x1f\x16%2\xb2\x0e\b$\x05\t\x04\x04\x0e\b%\x03\r[\x0e\b$\x05\t\x04\x04\x0e\b%\x03\r[\x0e\b$\x05\t\x04\x04\x0e\b%\x03\r[\x0e\b$\x05\t\x04\x04\x0e\b%\x03\r\xde\x05,\x1d!//!\x1d,\x05\x01\x01(8(\b%\x1b\x01\b\x045\x01\x01\x13#\x19\a+\x13:P\x02\x01\n\x02\x0f5\x1e\x1a.\x1e\x0e\xbd\b\x0e@\b\x02\b\x0e@\x06\x03\x03\b\x0e@\b\x02\b\x0e@\x06\x03\x03\b\x0e@\b\x02\b\x0e@\x06\x03\x03\b\x0e@\b\x02\b\x0e@\x06\x03\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x1d\x00+\x00;\x00J\x00\x00\x012\x16\x14\x06#!\"&5467&54632\x16\x17632\x16\x15\x14\a:\x01\x0562\x17\x1e\x01\x15\x14\x06\"&546762\x17\x1e\x01\x15\x14\x0e\x01#\"&546762\x17\x1e\x01\x15\x14\x06\"&54>\x01\x01\xa0(88(\xfe\xc0(8%\x1d\x02B. 5\x0e\x18%!/\x02\x01\x01\xfe\xb8\x02\f\x02\x06\"\x1c(\x1c\"\xa6\x02\f\x02\x06\"\r\x16\r\x14\x1c\"\xa6\x02\f\x02\x06\"\x1c(\x1c\x0e\x15\x01@8P88(\x1f2\n\v\n.B!\x1c\x1d/!\t\a\xf6\x06\x06\x152\x11\x15\x1d\x1d\x15\x103\x15\x06\x06\x152\x11\x0e\x17\r\x1d\x15\x103\x15\x06\x06\x152\x11\x15\x1d\x1d\x15\r\x19 \x00\x00\x00\x00\x06\xff\xfe\xff\xc0\x02\x00\x01\xc0\x00\r\x00\x1b\x00)\x007\x00E\x00c\x00\x006\x1e\x01\x0f\x01\x06#\"'.\x01?\x01>\x01\x1e\x01\x0f\x01\x06#\"'.\x01?\x016&\x1e\x01\x0f\x01\x06#\"'.\x01?\x016$\x1e\x01\x0f\x01\x06#\"'.\x01?\x016&\x1e\x01\x0f\x01\x06#\"'.\x01?\x01672\x16\x14\x06#!\"&5467&54632\x16\x17632\x16\x15\x14\a:\x01\xb2\f\x03\x03@\x05\t\x04\x04\x06\x03\x03@\x03m\f\x03\x03@\x05\t\x04\x04\x06\x03\x03@\x03\xb3\f\x03\x03@\x05\t\x04\x04\x06\x03\x03@\x03\x01\x8d\f\x03\x03@\x05\t\x04\x04\x06\x03\x03@\x03S\f\x03\x03@\x05\t\x04\x04\x06\x03\x03@\x03;(88(\xfe\xc0(8%\x1d\x02B. 5\x0e\x18%!/\x02\x01\x01Q\x06\r\x06p\b\x02\x03\r\x06p\x06\x03\x06\r\x06p\b\x02\x03\r\x06p\x06\x03\x06\r\x06p\b\x02\x03\r\x06p\x06\x03\x06\r\x06p\b\x02\x03\r\x06p\x06\x03\x06\r\x06p\b\x02\x03\r\x06p\x06\xf28P88(\x1f2\n\v\n.B!\x1c\x1d/!\t\a\x00\x00\a\xff\xff\xff\xc0\x02@\x01\xc1\x00\x1a\x00E\x00P\x00]\x00j\x00w\x00\x84\x00\x00%\x1e\x01\x15\x14\x06#!\"&5467<\x0114632\x17632\x1e\x01\x05\x16\x17\x06\x15\x14\x161\a\x06&?\x01'&4?\x01'&6\x1f\x01762\x1f\x0176\x16\x0f\x010\"1\"\a&\x06\a\x06\x147\x06\a&54632\x17\x06\x05\x16\x0f\x01\x06#\"'&?\x01>\x01\a\x16\x0f\x01\x06#\"'&?\x01>\x01\a\x16\x0f\x01\x06#\"'&?\x01>\x01\a\x16\x0f\x01\x06#\"'&?\x01>\x01\x01\xfe\x1d%/!\xff\x00!/$\x1c8(1\x1d\x10\x12\x13\"\x16\xfe\x81\x03\a\x06\x01;\b\v\x02\x19G\a\aG\x19\x02\v\bK#\x04\x10\x04#K\b\v\x02\t\x02% \x1cI\x1a\x1cb\x1b\x12\x15&\x1a\x12\x10\x1a\x01D\x0e\b$\x05\t\x04\x04\x0e\b%\x03\r[\x0e\b$\x05\t\x04\x04\x0e\b%\x03\r[\x0e\b$\x05\t\x04\x04\x0e\b%\x03\r[\x0e\b$\x05\t\x04\x04\x0e\b%\x03\r\xde\x05,\x1d!//!\x1d,\x05\x01\x01(8(\b\x11\x1e5\x02\x06\x12\x12\x02\x05\x14\x02\v\bK#\x04\x10\x04#K\b\v\x02\x19G\a\aG\x19\x02\v\b\x1a\x15\x17\x04\x1a\x1cP\x1e\f\x19\x13\x1c\x1a&\n\x1c\xfc\b\x0e@\b\x02\b\x0e@\x06\x03\x03\b\x0e@\b\x02\b\x0e@\x06\x03\x03\b\x0e@\b\x02\b\x0e@\x06\x03\x03\b\x0e@\b\x02\b\x0e@\x06\x03\x00\x05\xff\xfa\xff\xc0\x02\x87\x01\xc5\x001\x00J\x00c\x00|\x00\x90\x00\x00%\x16\x0f\x01\x06'.\a'\x15!'\a\x06+\x01\"/\x01&?\x0167&'.\x0176\x1f\x0176\x16\x17\x16\x06\a\x1732\x16\x17\x056&#/\x01&\"\x0f\x02\"\x06\x1f\x01\a\x14\x16?\x01\x17\x1665'76&#/\x01&\"\x0f\x02\"\x06\x1f\x01\a\x14\x16?\x01\x17\x1665'76&#/\x01&\"\x0f\x02\"\x06\x1f\x01\a\x14\x16?\x01\x17\x1665'\x055!\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&\x02}\t\r\x1b\r\t\x03\b\x04\x06\x03\x04\x04\x05\x03\xfe\xa06&\n\r\x1f\x13\t\x0f\b\vK\x01\x05\b\x03\f\x03\t\x05\a+*\x03\n\x02\f\x04\x0fQ\xec&C\x15\xfe\xbe\x02\x01\x03\x17\n\x02\x06\x01\v\x16\x03\x02\x02\x10\x04\x05\x03\x14\x14\x03\x05\x04\x80\x02\x01\x03\x17\n\x02\x06\x01\v\x16\x03\x02\x02\x10\x04\x05\x03\x14\x14\x03\x05\x04\x80\x02\x01\x03\x17\n\x02\x06\x01\v\x16\x03\x02\x02\x10\x04\x05\x03\x14\x14\x03\x05\x04\xfe\xc8\x01`\t\a@\a\t\xa0\t\a@\a\t\xbf\r\t\x12\t\x0e\x04\r\x05\t\x03\x06\x03\x04\x03Nl#\t\x12\x1c\x12\x10c\x01\x04\x05\x03\f#\r\t\a+*\x03\x01\x04\x11*\x0fQ$ \x0f\x02\x06\x03\x15\x03\x03\x15\x03\x06\x02\x10\x17\x03\x04\x02\n\n\x02\x04\x03\x17\x10\x02\x06\x03\x15\x03\x03\x15\x03\x06\x02\x10\x17\x03\x04\x02\n\n\x02\x04\x03\x17\x10\x02\x06\x03\x15\x03\x03\x15\x03\x06\x02\x10\x17\x03\x04\x02\n\n\x02\x04\x03\x17퐐\a\t\t\aPP\a\t\t\x00\b\x00\x00\xff\xc0\x02\x00\x01\xc5\x00\r\x00\x1f\x001\x00U\x00]\x00e\x00m\x00y\x00\x00\x122\x16\x15\x11\x14\x06+\x01\"&5\x114\x01\x16327\x15\x14\a\x0e\x01.\x01\x06\a5>\x01\x167\x16327\x15\x0e\x01&'.\x01\x06\a5>\x01\x167&'\x15\x16\x17\x16327\x15\x0e\x01&'.\x01\x06\a5>\x01\x1e\x02676\x16\x1d\x01\x0e\x02.\x01\x06264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x147264&\"\x06\x15\x14\x1e\x02\x13\x1a\x13\t\a \a\t\x01,>&3=\x121S?AW3+O-%>&3=+O-%&.T,+O-.\f\t\x05\a5!6H+O-%&.T,1N.1(A(\x11 \x1f4$)\x16\xb1\x0e\t\t\x0e\t\t\x0e\t\t\x0e\tI\x0e\t\t\x0e\t\x10\a\t\t\x0e\t\x03\x04\x06\x01\xc0\x13\r\xfe0\a\t\t\a\x01\xd0\r\xfe\xe3\x10\x18$\x15\b\x15\x03\x13\x11\n\x19E\x13\t\aV\x10\x18>\x12\t\a\t\n\b\b\x11=\x13\t\at\x04\x02!\x01\x02\x10\x1fE\x12\t\a\t\n\b\b\x11\x98\x16\r\v\x0f\r\v\x15\t\x11\x13\x1f\x0e\x10\x05\x04\x05(\t\x0e\t\t\x0e/\t\r\n\n\r9\t\r\n\n\r/\t\r\n\n\x06\x04\x06\x04\x02\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x00)\x001\x00<\x00I\x00\x00\x01\x06\a\x16\x17\x16\x15\x14\a\x06\a\x0e\x01\x15\x0e\x01#\"&546726767632\x17\x16\x1767632\x16\x15\x14\x024&\"\x06\x14\x162'\x14\x0e\x01#\"&462\x1e\x01\x14\x0e\x01\".\x0154632\x16\x01\xff\x1d \x0f\x04\v\x02LB\x01\x02\x18Q!Qr!\x18\x01\x02\x01D\x92\x03\x04\f\x04\x01\x04[a\x02\x03\a\t\xc0KjKKj5\t\x0e\t\r\x13\x13\x1a\x13 \x04\b\b\b\x04\t\a\x04\b\x01\xaba[\x04\x01\x04\v\x04\x04\x92D\x01\x02\x01\x18!rQ!Q\x18\x02\x01BL\x02\v\x03\x10 \x1d\x01\t\a\x03\xfe\x9ejKKjK\xa0\t\x0e\t\x13\x1a\x13\x13Y\b\b\x04\x04\b\x04\a\t\x04\x00\x06\x00\x00\xff\xc0\x02@\x01\xc0\x00\t\x005\x00=\x00R\x00Y\x00f\x00\x00\x1753\x15\x14\x06+\x01\"&\x132\x16\x14\x06+\x01\"/\x01\x15\x17\x16\x1d\x01\x14\x06#\".\x01=\x01'0&5\x15\x14\x06#\".\x01=\x0246;\x012\x1f\x01&\"&462\x16\x14753\x11\x14\x06\"&5\x14\x06#\"&'\x06#\"&?\x01'46;\x01\x15#%2\x16\x15\x11\x14\x06+\x01\"&5\x11\xc0@\t\a \a\t \r\x13\x13\r:\x13\x0e\x15)\a\x13\r\t\x0f\b\x1e\x02\x13\r\t\x0e\t&\x1a\x13\x1a\x13-Y(\x1c\x1c(\x1c\xb0\xc0\x13\x1a\x13\x13\r\r\x12\x01\x06\x1a\x0e\x15\x04\x1f\x80\x13\r @\x01`\r\x13\t\a \a\t0\xb0\xb0\a\t\t\x01\x17\x13\x1a\x13\x0e\x15Q=\r\x108\r\x13\t\x0e\t8+\x01\x01e\r\x13\t\x0e\t\xa0`\x1a&\x13-`\x1c(\x1c\x1c(D \xfe`\r\x13\x13\r\r\x13\x12\f\x1e\x17\x0f\x9b\xdf\r\x13\xc0\xc0\x13\r\xfe0\a\t\t\a\x01\xf0\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x17\x00M\x00\x00%2\x16\x0f\x01\x06#\"&?\x01#\".\x01576;\x012\x16\x0f\x017\x1e\x01\x15\x14\x06+\x0176'&+\x0176&+\x01\"\x06\x0f\x01\x15#\"&5467&546;\x012654'632\x16\x15\x14\a32\x16\x15\x14\x014\a\a\x04X\x03\a\x06\a\x01\x17;\x04\x05\x03\x10\x02\nD\x06\a\x01\x12|\x1f+/!\x1e\b\r\r\r\x19\x10\x06\x06\x1a\x16D\x10\x19\x03\x100!/+\x1f\n&\x1a\x10!/\x0f\t\x06(8\x06\x06\x1a&p\f\x06\x98\x06\t\x06a\x04\x06\x04x\n\t\x06Ao\x02.\x1f!/\x0e\x16\x16\x16\x19\x15\"\x16\x10x\x02/!\x1f.\x02\x10\x11\x1a&/!\x19\x15\x028(\x0f\x11&\x1a\x11\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x02@\x01\xa5\x00\x1e\x00<\x00Z\x00\x00\x016\x1e\x01\x1d\x01\x14\x06+\x01\"&=\x014&'&\x06\x1d\x01\x14\x06+\x01\"&=\x0146\x176\x16\x1d\x01\x14\x06+\x01\"&=\x014&'&\x06\x1d\x01\x14\x06+\x01\"&=\x0146\x176\x1e\x01\x1d\x01\x14\x06+\x01\"&=\x014&\"\x06\x1d\x01\x14\x06+\x01\"&=\x0146\x01\fS\x8eS\t\a \a\toSf\x98\t\a \a\t\x9blW\x82\t\a \a\tB19T\t\a \a\t_N\x1e5 \t\a \a\t\x13\x1a\x13\t\a \a\t+\x01\x9f\x06K\x89Q\x90\a\t\t\a\x88V\x85\v\r\x86e\x90\a\t\t\a\x86t\xaeZ\ftV\x90\a\t\t\a\x8a3N\x04\x06M8\x90\a\t\t\a\x89JrW\x06\x170\x1d\x90\a\t\t\a\x90\r\x13\x13\r\x90\a\t\t\a\x8c#9\x00\x00\x00\x05\x00\x00\xff\xde\x02\x80\x01\xa0\x00\t\x00\"\x00;\x00T\x00\x80\x00\x00\x01\x15!546;\x012\x16\x056&/\x02&\"\x0f\x02\x0e\x01\x1f\x01\a\x06\x16?\x01\x17\x166/\x0176&/\x02&\"\x0f\x02\x0e\x01\x1f\x01\a\x06\x16?\x01\x17\x166/\x0176&/\x02&\"\x0f\x02\x0e\x01\x1f\x01\a\x06\x16?\x01\x17\x166/\x01\x172\x16\x1d\x01\x14\x0e\x01'.\x01=\x01#\x15\x14\x06+\x01\"&=\x01#\x15\x14\x06+\x01\"&=\x01!\x15\x14\x1626=\x01463\x02 \xfd\xe0^B\xe0B^\xfe\x90\x03\x02\x04\x1b\r\x01\b\x01\r\x1b\x04\x02\x03\x14\x05\x01\x06\x04\x18\x18\x04\x06\x01\x05\xa4\x03\x02\x04\x1b\r\x01\b\x01\r\x1b\x04\x02\x03\x14\x05\x01\x06\x04\x18\x18\x04\x06\x01\x05\xa4\x03\x02\x04\x1b\r\x01\b\x01\r\x1b\x04\x02\x03\x14\x05\x01\x06\x04\x18\x18\x04\x06\x01\x05\xb4\a\t\x18)\x17\x1f) \t\a`\a\t\xc0\t\a`\a\t\x02 \t\x0e\t\t\a\x01\x00@@B^^,\x02\a\x01\x04\x19\x03\x03\x19\x04\x01\a\x02\x14\x1b\x04\x04\x02\r\r\x02\x04\x04\x1b\x14\x02\a\x01\x04\x19\x03\x03\x19\x04\x01\a\x02\x14\x1b\x04\x04\x02\r\r\x02\x04\x04\x1b\x14\x02\a\x01\x04\x19\x03\x03\x19\x04\x01\a\x02\x14\x1b\x04\x04\x02\r\r\x02\x04\x04\x1b\x82\t\a@\x17'\x14\x02\x041 +p\a\t\t\aPP\a\t\t\a\xb0p\a\t\t\a@\a\t\x00\x04\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x0f\x00\x1f\x00/\x00G\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463!2\x16\x1d\x01\x14\x06#!\"&=\x01463'\"&4632\x17632\x16\x17632\x16\x14\x06+\x01\x06\"'\x02p\a\t\t\a\xfd\xe0\a\t\t\a@\a\t\t\a\x80\a\t\t\a\x02 \a\t\t\a\xfe\xb0\a\t\t\aP\x023!2\x16\x15\x05\x06\x1f\x01\x16?\x016/\x01&\x0f\x01'&\a\x02`\r\x13\x13\r\xfd\xc0\r\x13\x13\r@\x16\n\n\x01\xec\n\n\x16 \xfe\x80\x05\t\f\x06\x01@\r\x13\xfe\xd3\a\aJ\b\a\x81\b\b\x19\b\b_)\b\a\x80\x13\r`\r\x13\x13\r`\r\x13@\b\x10\b\b\x10\b@@\x01@\x06\f\t\x05\x13\r\x8a\b\aK\b\b\u007f\b\a\x1a\b\b^)\b\b\x00\x00\x00\x03\x00\x00\xff\xff\x02@\x01\x81\x00,\x00X\x00\x84\x00\x00%\x1e\x01\x1d\x01\x14\x0e\x01#&'\x06\"'\x06\"'\x0e\x01\a\"&=\x0146767>\x01\x17\x1e\x017>\x01\x17\x1e\x01762\x17\x167\x1e\x01\x1d\x01\x14\x0e\x01#&'\x06\"'\x06\"'\x06\a\"&=\x0146767>\x01\x17\x1e\x017>\x01\x17\x1e\x01762\x17\x167\x1e\x01\x1d\x01\x14\x0e\x01#&'\x06\"'\x06\"'\x06\a\"&=\x0146767>\x01\x17\x1e\x017>\x01\x17\x1e\x01762\x17\x16\x022\x06\b\x05\a\x05+$)l+)l+\x11)\x15\a\n\b\x06!\x18\v\x1a\n\x1dX\x1d\n\x1a\n\x1dY\x1c\v\x1b\n\x19!\x06\b\x05\a\x05+$)l+)l+#,\a\n\b\x06!\x18\v\x1a\n\x1dX\x1d\n\x1a\n\x1dY\x1c\v\x1b\n\x19!\x06\b\x05\a\x05+$)l+)l+#,\a\n\b\x06!\x18\v\x1a\n\x1dX\x1d\n\x1a\n\x1dY\x1c\v\x1b\n\x18@\x01\t\x06 \x04\b\x04\x04\x16\x1a\x1a\x1a\x1a\v\r\x02\t\a \x06\t\x01\x04\x12\t\x02\t\x17\x01\x17\b\x02\t\x17\x01\x17\b\b\x13\x8c\x01\t\x06 \x04\b\x04\x04\x16\x1a\x1a\x1a\x1a\x16\x04\t\a \x06\t\x01\x04\x12\t\x02\t\x17\x01\x17\b\x02\t\x17\x01\x17\b\b\x13\x8c\x01\t\x06 \x04\b\x04\x04\x16\x1a\x1a\x1a\x1a\x16\x04\t\a \x06\t\x01\x04\x12\t\x02\t\x17\x01\x17\b\x02\t\x17\x01\x17\b\b\x13\x00\x00\x00\x00\x04\xff\xfd\xff\xc0\x01\x83\x01\xc0\x00\a\x00\x16\x00%\x00=\x00\x00\x12\"&462\x16\x14\x03\x17\x16\x06\a\x06#\"/\x01&4?\x01\x177\x17\x16\x14\x0f\x01\x06#\"'.\x01?\x01'6\x16\x06\x0f\x01\x06\a\x15#5&/\x01.\x01>\x01\x1f\x01\x162?\x016\xe1B//B/\x85\x1d\n\x05\r\v\r\x14\f0\b\t.=u.\t\b0\f\x14\r\v\r\x05\n\x1d\x19\x93\x13\x05\x0e)\x17\x1f\xa0\x1f\x17)\x0e\x05\x13 \x0e)'b')\x0e\x01 /B//B\xfe\xd8'\r!\n\b\x10@\v\x1b\v9339\v\x1b\v@\x10\b\n!\r' \xf6\x1c \n\x1c\x11\v\x1f\x1f\v\x11\x1c\n \x1c\x05\t\x1d\x1b\x1b\x1d\t\x00\x00\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc3\x00\a\x002\x00:\x00B\x00\x00\x13\x17!4676\x16\x052\x16\x1d\x01\x14\x06+\x01\x15\x14\a\x1e\x01\x15\x14\x06\"&547\x06\"'\x16\x15\x14\x06\"&54>\x017&5!5463\x00264&\"\x06\x14 4&\"\x06\x14\x162\x91o\xff\x000+\f!\x01h\a\t\t\a0<\x1a\"/B/\x04!F!\x04/B/\x10\x1b\x11<\x01\x80&\x1a\xfe\x83\x1a\x13\x13\x1a\x13\x01`\x13\x1a\x13\x13\x1a\x01\xaf\xaf6`\"\n\x06\\\t\a \a\t@K8\x06+\x1c!//!\f\r\t\t\r\f!//!\x12!\x16\x048K@\x1a&\xfe\x90\x13\x1a\x13\x13\x1a\x1a\x13\x13\x1a\x13\x00\x00\x00\x00\x05\xff\xfe\xff\xb6\x02B\x01\xc3\x00\n\x00\x15\x00 \x00g\x00o\x00\x00\x01\"\a&'62\x17\x06\a&\x03.\x01'632\x17\x16\x17\x06767632\x17\x0e\x01\a&7\x16\x17\x16\x06'&'&\x0e\x01\x16\x17\x16\x17\x16\x14\a\x06'&'\x06\a\x06'&4767>\x01.\x01\a\x06\a\x06&76767&5476\x16\a\x06\x15\x14\x1632>\x0154'&6\x17\x16\x15\x14\a\x16\x06264&\"\x06\x14\x01 \x19\x1c\x14\t'V'\t\x14\x1c\x95%,\x03\v\f\f\x0e\x065\x06\xce4\x06\x0f\f\v\v\x03,$\x12k6\x14\x03\f\x04\x0e\x0f+`2\x1a+\x0f\x14\a\a=6\x19\x14\x14\x196>\x06\x06\x15\x0f+\x1a2`+\x0f\x0e\x04\f\x02\x156\x18\x1f\n)\x04\f\x02\aF2!7 \a\x02\f\x04)\n\x1f\xd1(\x1c\x1c(\x1c\x01P\n\x10\x19\x11\x11\x19\x10\n\xfe\xb9\x1bP/\x03\x05C*\x19\x19*C\x05\x03/P\x1b\x12\xe6 =\x06\a\x05\x10\t\x1a\x1bXb\x1a\t\x04\x01\x0e\x01\f \x0f\x19\x19\x0f \f\x01\x0e\x01\x05\b\x1abX\x1b\x1a\b\x11\x05\a\x06= \x0e\x06\x1d\x1b?1\x05\x06\a\x14\x123H!8\"\x12\x14\a\x06\x050@\x1b\x1d\x06\x8f\x1c(\x1c\x1c(\x00\x00\x03\x00\x00\xff\xb4\x02\x01\x01\xc0\x00 \x004\x00I\x00\x007\x1e\x01\a\x0e\x01\a\x06&=\x0146;\x012\x16\x1d\x01\x14\x162654.\x01'&=\x01467\x1e\x01\x17\x14\x06+\x01\"&5.\x01'.\x01=\x0146\x17\x1e\x01\x17\x14\x06+\x01\"&5.\x01'\".\x01=\x0146\xac:D\r\t<)Ej\x0e\n0\n\x0e\x1c(\x1c\b\x0e\t\x11\x110z\xaf\x06\t\a \a\t\x06\x8aa\x06\t\n\aSv\x06\t\a \a\t\x05S9\x04\a\x04\n\xdd\vd=)<\t\x0eWD\xf8\n\x0e\x0e\n\xf8\x14\x1c\x1c\x14\n\x12\x0e\x03\x06\x102\f\x0e\xe1\x06\xafz\a\n\t\x06a\x8b\x05\x01\t\x06 \a\t`\x06vS\a\n\b\a:R\x05\x05\a\x04 \a\n\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\t\x00\x19\x007\x00\x00\x15\x11!\x11\x14\x06#!\"&7\x15\x14\x16;\x0126=\x014&+\x01\"\x06%2\x16\x1d\x01!546;\x01546;\x012\x16\x1d\x013546;\x012\x16\x1d\x01\x01\xc0\x1c\x14\xfe\xa0\x14\x1c@\t\a`\a\t\t\a`\a\t\x01P\x14\x1c\xfe@\x1c\x140\t\a \a\t\x80\t\a \a\t\x10\x01\x10\xfe\xf0\x14\x1c\x1c\xd4`\a\t\t\a`\a\t\t\xc9\x1c\x1400\x14\x1c0\a\t\t\a00\a\t\t\a0\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\t\x00\x19\x007\x00\x00\x15\x11!\x11\x14\x06#!\"&7\x15\x14\x163!26=\x014&#!\"\x06%2\x16\x1d\x01!546;\x01546;\x012\x16\x1d\x013546;\x012\x16\x1d\x01\x01\xc0\x1c\x14\xfe\xa0\x14\x1c@\t\a\x01 \a\t\t\a\xfe\xe0\a\t\x01P\x14\x1c\xfe@\x1c\x140\t\a \a\t\x80\t\a \a\t\x10\x01\x10\xfe\xf0\x14\x1c\x1c\xd4@\a\t\t\a@\a\t\t\xc9\x1c\x1400\x14\x1c0\a\t\t\a00\a\t\t\a0\x00\a\xff\xfd\xff\xc0\x02\f\x01\xc0\x00\"\x00)\x00-\x001\x005\x00;\x00C\x00\x00\x01\x16\x06\a\x05\x06#\"/\x01&67%>\x01'&#\"\x0f\x01\x06#\"/\x01&6?\x01632\x16\a67'\x06\a\x17\x037'\a?\x01'\a?\x01'\a7\x16\x177&'\x1767'\x14\a\x06\a\x01\xf2\x1a)6\xfe\xa4\b\b\x12\n \a\x06\f\x01a\f\x06\a\t\x12\t\b\x1b\b\t\x12\t!\a\a\v\x1c%,.O\x9d\f\x10\x15\x10\x0e\x14\xab\x1f=\x1f\xa8\x1f<\x1f\xab\x1f<\x1fQ\x0e\t-\n\f$\a\x03=\x01\x02\x06\x01d9w!\xcf\x04\x106\f\x1a\x06\xd2\a\x1a\v\x10\x04\x11\x04\x0f7\v\x1a\a\x10\x1718\a\x01>\x03\a=\xfe\xba\x12'\x12\x19\x12'\x12\x1b\x12'\x13\x9f\b\x0e.\r\t\x99\x0e\x10\x14\a\a\b\t\x00\x00\x00\x02\xff\xfd\xff\xbe\x02\x00\x01\xc0\x00\x1d\x00*\x00\x00\x01\x1e\x01\a\x06\x0f\x01'&\a\x06\x14\x1f\x01\a\x06&'&7\x13\x17\x16276/\x01>\x0176\x16\x17\x0e\x01/\x01&67\x1e\x01\x01*.\"\x17\x12'f9\v\v\x05\x051\x86\b\x12\x04\x04\x04\x803\x04\r\x05\f\f7\x1bS\x84\x1eD\x18\x1fX!\b\"\x04&\x1d\x10\x01#\x16b.&\x1329\f\f\x04\x0e\x041B\x04\x06\t\t\n\x01\a2\x05\x05\v\v8 \x13\x10\x0f\x10\x1d&\x04\"\b!X\x1f\x18D\x00\x00\x00\n\xff\xff\xff\xc0\x02\x01\x01\xc0\x00+\x00;\x00K\x00[\x00_\x00o\x00\u007f\x00\x8b\x00\x9b\x00\xab\x00\x00%\x16\x1d\x01\x14\x0e\x02#!\"&=\x014?\x01>\x01;\x015#\"&=\x01463!2\x16\x1d\x01\x14\x06+\x01\x1532\x16\x17\a\x15\x14\x16;\x0126=\x014&+\x01\"\x06\a\"\x06\x1d\x01\x14\x16;\x0126=\x014&#'#\"\x06\x1d\x01\x14\x16;\x0126=\x014&'35#\x1726=\x014&+\x01\"\x06\x1d\x01\x14\x163\x17\x14\x16;\x0126=\x014&+\x01\"\x06\x15\x1754+\x01\"\x1d\x01\x14;\x012754&+\x01\"\x06\x1d\x01\x14\x16;\x0126754&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x01\xff\x01\x05\t\f\x06\xfe@\r\x13\x01\x1b\x01\x12\fU`\a\t\t\a\x01\x00\a\t\t\a`\xf5\f\x11\x02\xcc\t\a\x10\a\t\t\a\x10\a\t \a\t\t\a\x10\a\t\t\a0\x10\a\t\t\a\x10\a\t\t\x8f\xc0\xc0(\a\t\t\a\x10\a\t\t\a \t\a\x10\a\t\t\a\x10\a\t\xd8\b\xb0\b\b\xb0\b\x18\t\a\x10\a\t\t\a\x10\a\t0\t\a\x10\a\t\t\a\x10\a\tE\x05\x05[\a\v\t\x05\x13\r[\x05\x05\xa0\f\x0f@\t\a`\a\t\t\a`\a\t@\x0f\f\x1d\x10\a\t\t\a\x10\a\t\tG\t\a\x10\a\t\t\a\x10\a\tP\t\a\x10\a\t\t\a\x10\a\t\x98 \xe8\t\a\x10\a\t\t\a\x10\a\t@\a\t\t\a\x10\a\t\t\a\x80\x10\b\b\x10\bx\x10\a\t\t\a\x10\a\t\tW\x10\a\t\t\a\x10\a\t\t\x00\x00\x04\x00\x00\xff\xb9\x02\x00\x01\xc0\x00\x15\x00+\x00@\x00V\x00\x0072\x16\x1d\x01\x14\x06/\x01\a\x06\"/\x01&4?\x01'&637\"&=\x0146\x1f\x01762\x1f\x01\x16\x14\x0f\x01\x17\x16\x06#\a\x17\x16\x14\x0f\x01\x06/\x01\a\x06&=\x0146;\x012\x16\a\x016\x16\x1d\x01\x14\x06+\x01\"&?\x01'&4?\x0162\x1f\x01\xc8\n\x0e\x1e\v\x1fc\x05\r\x05\x19\x05\x05c!\v\f\x10\xe0\n\x0e\x1e\v\x1fc\x05\r\x05\x19\x05\x05c!\v\f\x10\x10c\x05\x05\x19\v\fc\x1f\v\x1e\x0e\np\x10\f\v\xfe\xfe\v\x1e\x0e\np\x10\f\v!c\x05\x05\x19\x05\r\x05c\xa0\x0e\np\x10\f\v!c\x05\x05\x19\x05\r\x05c\x1f\v\x1e@\x0e\np\x10\f\v!c\x05\x05\x19\x05\r\x05c\x1f\v\x1e\x88c\x05\r\x05\x19\f\fc!\v\f\x10p\n\x0e\x1e\v\x01\x02\v\f\x10p\n\x0e\x1e\v\x1fc\x05\r\x05\x19\x05\x05c\x00\x00\x00\x05\xff\xfe\xff\xe0\x02B\x01\xa0\x00\b\x00\f\x00\x10\x00\x19\x00C\x00\x00\x01#'32\x1f\x01\x16\x06%\x15#73\x17#5\x05\"&?\x016;\x01\a\x052\x16\x1d\x01\x14\x06+\x01\a\x15\x14\x06+\x01\"&=\x01!\x15\x14\x06+\x01\"&=\x01'#\"&=\x0146;\x01'!\a\x020a\x1ac\f\x04\x18\x01\t\xfe\xd8~\x1a\xe8\x1a~\xfe\xe0\b\t\x01\x18\x04\fc\x1a\x01\xbf\a\t\t\a\x1c\x14\t\a \a\t\xfe\xc0\t\a \a\t\x14\x1c\a\t\t\a\x14\x04\x02\x00\x04\x01 \x80\f`\b\f\x80\x80\x80\x80\x80\x80\f\b`\f\x80@\t\a \a\t\xa0\x10\a\t\t\a\x10\x10\a\t\t\a\x10\xa0\t\a \a\t \x00\x00\x00\x00\a\xff\xfe\xff\xe0\x02\x80\x01\xa1\x00\x05\x00\t\x00\x1c\x00%\x00?\x00N\x00^\x00\x00\x01\x06\a#53#\x15#7\x05/\x0132\x1f\x012\x0610'&/\x01\a\x06\a&\x05\"&?\x016;\x01\a\x17\x06\x15\x14\x17#\x15\x14\x06+\x01\"&=\x01'#\"&=\x0146;\x01'%\x1e\x01\x15\x14\x06\"&5467\x16\x176\x17>\x01'&'\a&'\x0e\x01\x15\x14\x1632\x01\xa3\x1d\x19=d\x84~\x1a\x01!\f\fc\r\x02\x18\x01\x01\x01\x01\x01\x15\x15\a\v\x17\xfe'\b\t\x01\x18\x04\fc\x1a\xe451\xd1\t\a \a\t\x14\x1c\a\t\t\a\x14\x04\x02\a%4^\x84^D4(\x1f\x13\x02\x19\f\x0e\x03\x05'?\x05\x1b\x163&\x1d\x01X\x19\x1f\x80\x80\x80H\n>\f`\x02\x01\x01\x01\x13\x13\x06\v\x1b\x1f\f\b`\f\x80 K7H6\x10\a\t\t\a\x10\xa0\t\a \a\t \x1d!`\x1eA]]A&m/$(\x16\xd3\x12?\x1b\a\a/S\x05!(\x13'1\x00\x00\x00\x01\x00\x00\x00\x00\x02\x00\x01\x80\x003\x00\x00\x012\x16\x1d\x01\x14\x06+\x015#\x15#5#\x15#5#\x15#5#\x15#\"&=\x0146;\x01546;\x01546;\x012\x16\x1d\x0132\x16\x1d\x01\x01\xf0\a\t\t\aP @ @ @ P\a\t\t\a0\t\a0\t\a\xe0\a\t0\a\t\x01\x00\t\a\xe0\a\t\x80\x80\x80\x80\x80\x80\x80\x80\t\a\xe0\a\t0\a\t0\a\t\t\a0\t\a0\x00\x00\x00\x00\x06\x00\x00\xff\xc0\x02\x80\x01\xc2\x007\x00>\x00E\x00e\x00o\x00y\x00\x007\x0e\x03\x1d\x01\x14\x17#\"&5\x1146;\x01'&?\x016\x1f\x01'&6?\x016\x16\x1f\x017>\x01\x1f\x01\x1e\x01\x0f\x0176\x16\x1f\x01\x16\x06\x0f\x0132\x17\x06\x0353\x15#\"&\x1753\x15\x14\x06#\x112\x16\x1d\x01#5+\x03\x15#546;\x01&54632\x17632\x16\x15\x14\a#3&#\"\x06\x15\x14\x17\x167654&#\"\a36\xf1\v\x12\r\a\t\xa9\r\x13\x13\r\x1d\x1e\r\t\t\t\x0e \f\x02\x05\x06\x10\x06\f\x02\x14\x14\x02\f\x06\x10\x06\x05\x02\f \x06\r\x04\t\x04\x02\x06\x1e\x1d\x14\t)\x14\xc0\xa0\r\x13\xe0\xc0\x13\r\r\x13\xc0\x0f\x01\x01\x0f\xc0\x13\r\x14\x04( 7!!7 (\x04\xfc5\x15\x18\f\f\t\x03\xcb\t\f\f\x18\x155\x04\xfe\x03\v\x10\x15\v\xe0\x11\x0f\x13\r\x01`\r\x13\x16\t\r\r\r\t\x17\x1f\x06\f\x02\x06\x02\x05\x0666\x06\x05\x02\x06\x02\f\x06\x1f\x17\x04\x02\x06\r\x05\r\x04\x16\x12\x1d\xfe\xaf`\x80\x13\x13\x80`\r\x13\x01 \x13\r`\x80\x80`\r\x13\f\f\x1c,KK,\x1c\v\r0\x0f\t\v\b\x03\x03\b\v\t\x0f0\x02\x00\x03\xff\xfd\xff\xbd\x02\x83\x01\xc3\x009\x00=\x00A\x00\x00%\x16\x0f\x01\x06'&6?\x01'\x06#\"&/\x01\a\x0e\x01#\"'\a\x17\x1e\x01\a\x06/\x01&7>\x01\x1f\x017.\x01?\x01>\x01\x1f\x0176\x16\x1f\x01\x16\x06\a\x1776\x16\x017'\a\x177'\a\x02\u007f\x03\a\xa2\b\x03\x06\r\x0f\x16'\f\x01(?\v\x14\x14\v?(\x01\f'\x16\x0f\r\x06\x03\b\xa2\a\x03\x06\x1e\x10\x16'%\x14\x16W\x06\x17\vrr\v\x17\x06W\x16\x14%'\x16\x10\x1e\xfe\x9b\x13_$\xc8p$_\x0e\a\x03C\x04\b\x0f\x1f\x06\th\x01.'KK'.\x01h\t\x06\x1f\x0f\a\x03C\x03\a\x10\f\x06\tf\x1aW(\x96\n\b\x0400\x04\b\n\x96(W\x1af\t\x06\f\x01\x00G'@..@'\x00\x00\x02\xff\xfe\xff\xe0\x02\x02\x01\xa0\x00\x11\x00\x15\x00\x00\x012\x16\a\x03\x0e\x02#!\".\x01'\x03&63\x05!\x17!\x01\xe0\x0f\x13\x028\x02\x12\x1c\x0f\xfe\xef\x10\x1c\x11\x038\x02\x13\x0f\x01\x9b\xfe\x8a\x1f\x019\x01\xa0\x16\x0e\xfe\x9b\x10\x19\x0e\x0e\x19\x10\x01e\x0e\x16@\xc0\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00c\x00s\x00\x91\x00\x00\x122\x16\x14\x06\"&4\x054&#\"+\x01\a\x06\x1d\x01\x14;\x012=\x01732\x16\x14\x0f\x01\x06\x0f\x01\x06\x15\x14\x0f\x01\x06\x1d\x01\x14\x16;\x012?\x016;\x012\x14;\x012=\x014?\x016=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"\x0f\x01\x06\x14\x16;\x012\x1f\x01\x16\x1d\x01\a\x06\x1f\x01\x16;\x016$\x14\x16;\x012?\x016=\x014&\"\x0f\x01\x13>\x017#\"/\x01&+\x01'&+\x01\"\x0f\x01\x06\x1d\x01\x14\x1f\x01\x16;\x012\x16\x15\x91Α\x91Α\x01\xc0uS\x01\x03\x02\x1d\x03\b\x10\b\x10\x15\x04\a\x03\x1b\x02\x02(\x06\a\x14\x05\t\a\x16\n\x04\n\x02\x05\x03\b\b\x10\b\x06\x1f\v\t\a%\x04\a\a\x04 \x05\x03\n\x03\a\x04\x10\x05\x03\n\x03\f\t\t \x04\a\x14\v\xfe\xc2\a\x04\x10\x05\x03\n\x03\a\t\x03\x1a}5W\x19\r\b\x05\x12\t\r\x13+\f\x11 \f\v+\x16\x12\x16\x10\x14\x14\a\t\x01\xb8\x91Α\x91\xcegSu\x16\x02\x04\x14\b\b\b\x10\a\t\x04\x1a\x02\x01\r\x02\x06\n\b\x14\x04\a\x19\a\t\b\x13\x05\x10\b\x02\x06\x01\v\x04\v\x05\x06\n\a\x05\t\x05\x06\x04\t\x03\n\x06\x04\t\x03\x05\t\f\t\b!\x04\x1f\x91\n\x06\x03\t\x04\x04\x10\x05\a\x04\x19\xfe\xc5\x038-\x05\x11\n%\v\a\x1a\r\x1a\x18\x16\x0e\x11\v\n\x06\x00\x00\x00\x02\x00\x00\x00`\x02\x00\x01 \x00\x0f\x00\x1f\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x01463%2\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\xf0\a\t\t\a\xfe \a\t\t\a\x01\xe0\a\t\t\a\xfe \a\t\t\a\xa0\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t\x00\x00\x00\x02\x00 \xff\xc0\x00\xe0\x01\xc0\x00\x0f\x00\x1f\x00\x00\x17\x14\x06+\x01\"&5\x1146;\x012\x16\x15\x13\x14\x06+\x01\"&5\x1146;\x012\x16\x15`\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t0\a\t\t\a\x01\xe0\a\t\t\a\xfe \a\t\t\a\x01\xe0\a\t\t\a\x00\x00\x00\x00\x02\xff\xfb\xff\xbb\x02\x00\x01\xc1\x00+\x003\x00\x00\x01\x16\x14\x0f\x01\x06\x0f\x02\x16\x17\x16\a\x06\a\x0e\x01\a\x06\a\x06.\x02767>\x017676\x17\x16\x17?\x016?\x0162\x17\x00264&\"\x06\x14\x01\xf7\t\t/\x06\b$L\x0e\x05\r#\x0e\x14\r\x14\x01\x04\x18#kS\v#\x18&\x0e\x18\x04\x06\x0f\"7\x14\x15L\f\x03\x05/\t\x1b\t\xfe\xe3(\x1c\x1c(\x1c\x01\x99\t\x1b\t/\x05\x03\fL\x15\x147\"\x0f\x06\x04\x18\x0e&\x19\"\vSk#\x18\x04\x01\x13\x0e\x14\x0e#\r\x05\x0eL%\a\x06/\t\t\xfe\xa9\x1c(\x1c\x1c(\x00\x01\xff\xfe\xff\xdf\x02\x02\x01\xa4\x00\x18\x00\x00\x01\x1e\x01\x0f\x01\x06\"/\x01&6?\x01>\x01\x1f\x01\a\x17'7'6\x16\x17\x01\xda$\x04!\xd4\x06\x0f\x05\xd4!\x04$\x03\"b&\x1d`\x900`\"&a\"\x01v%i(\xdb\x05\x05\xdb(i%\x03#\a\x1cW@\x90\x80@h\x1b\a#\x00\x00\x00\x05\xff\xff\xff\xbc\x01\xc2\x01\xc0\x00\a\x00\x0f\x00\x17\x00@\x00j\x00\x00\x12\"&462\x16\x142462\x16\x14\x06\"&\"&462\x16\x14\a\x06\x17\x16\x06\a\x06\a\x0e\x01\x17\x16\x17\x16\x06\a\x06\a\x06&54'&>\x01367>\x01'&'&63676\x16\x172\x16\a\x06\x15\x14\x06'&'.\x017676&'\"'6'&5<\x01546\x17\x16\x17\x1e\x01\a\x06\a\x06\x16\x17\x16\xa4(\x1c\x1c(\x1c@\x1c(\x1c\x1c(((\x1c\x1c(\x1c@\x01\x18\x03\b\a\x17\x16\v\f\x03\x05\t\x03\a\a72\t\x13\x17\x02\x02\a\x05\x16\x17\v\f\x03\x05\t\x03\a\a94\b\x10\xe3\a\b\x04\x16\x13\t27\a\b\x04\t\x05\x03\f\v\x01\x0e\n\t\x14\x10\b49\a\a\x03\t\x05\x03\f\v\x17\x01\x00\x1c(\x1c\x1c((\x1c\x1c(\x1c`\x1c(\x1c\x1c(\xa7=3\a\r\x01\x02\a\x03\x14\f\x17\x15\x06\r\x01\x05\x1d\x05\v\n:2\x05\b\a\x02\a\x04\x14\v\x18\x14\a\r\x06\x1f\x04\t\x8c\r\a1:\v\v\x06\x1c\x05\x01\r\a\x15\x16\f\x14\x04\x03\x14\x13+3\x01\x03\x01\t\n\x05\x1f\x05\x01\r\a\x15\x16\f\x14\x03\a\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x06\x01\xc3\x00/\x007\x00\x00%\x16\x0f\x01\x06+\x01\"/\x01\x06#\"&'.\x01\x0f\x01\x06\x17\x1e\x01\x17\x15\x17\x16\x06+\x01\"&=\x014>\x02?\x016\x17\x16\a\x1e\x02\x17\x06264&\"\x06\x14\x01\xfe\a\x0e.\t\r3\x10\n.\x16\x18\x1d/\f\x01\t\x03\f\x04\x03\x0f7\")\b\x13\x12\xec\r\x13\x10%B0\xca\n\x02\x0e0\x15%\x1c\az\x14\x0e\x0e\x14\x0et\x14\x0f(\t\r@\r \x19\x04\x02\x03\f\x05\x05\x1d&\x02\x01R\x10\x1e\x13\rQ?bU;\x12K\x04\n6\x1c\x04\x16!\x148\x0e\x14\x0e\x0e\x14\x00\x00\x01\xff\xfc\xff\xbf\x02\x03\x01\xc0\x00\x1a\x00\x00\x01\x03\x06\"'\x03\a\x06\"/\x01\a\x06\"/\x01\a\x06\"'\x03&63!2\x16\x01\xffW\x01\x0e\x01B.\x02\f\x02\".\x02\f\x02,$\x02\f\x02W\x04\x13\x10\x01\xc0\x0f\x13\x01\x9a\xfe,\x06\x06\x01l\xac\x06\x06\x85\xc5\x06\x06\xbc}\x05\x05\x01\x12\x0f\x1a\x17\x00\x00\x00\b\x00\x00\xff\xe0\x02@\x01\xa0\x00\x06\x00\v\x00\x0f\x00\x14\x00\x1d\x00'\x000\x008\x00\x00\x01\x15!>\x0132\a\x15#47%\x16\x17#\x1753\x16\x15\a4'3\x15\x14\x06+\x01\x13\x15#.\x01\"\x06\a#5\x0353\x06\x1d\x01#\"&62\x16\x1d\x01#54\x01@\xfe\xf1'~J\x0f\xcf`\x1e\x01Bp?\xaf\x80B\x1e\xa0\x04\xa4\x13\r\x80 2\x11:F:\x112\x80\xa4\x04\x80\r\x13\xf8P8\xc0\x01\x9e~;E\xa0\x80C=\x99\x1a_\xa0\x80=C@\x0e\x12`\r\x13\x01 \x80\x1d##\x1d\x80\xff\x00`\x12\x0e`\x13\xad8(``(\x00\x00\x02\xff\xf6\xff\xc0\x01\xc3\x01\xca\x00\x0f\x00\x1e\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x01463$\x1e\x01\x0f\x01!'&>\x01\x16\x1f\x0176\x01p\a\t\t\a\xfe\xc0\a\t\t\a\x01e(\x05\x11H\xfe\xcb0\x0e@te\r\x1e\x15\x11 \t\a@\a\t\t\a@\a\t\xe2\"5\x14W\xd0:e\x1b@:\x80\x19\x14\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x13\x00(\x00:\x00B\x00\x00\x13&'&'&6;\x012\x17\x16\x17\x16\x17\x16\x06+\x01\"7&'&'4>\x01;\x012\x17\x16\x17\x16\x17\x16\x06+\x01\"\x172\x16\x14\x06+\x01\x14\x06+\x01\"&=\x01463\x05264&+\x01\x15\u007f\x04\x12#\x06\x01\n\a\x11\x0e\x02\x04\x16\x1f\x06\x01\n\a\x11\x0en\x04\x12#\x06\x04\b\x04\x11\x0e\x02\x04\x16\x1f\x06\x01\n\a\x11\x0e\x9f.BB.\x108(\xc0(8\x13\r\x01p\x14\x1c\x1c\x14\x10\x01.\x19\x13#1\a\v\x0e\x1f\x16\x1f,\a\v\x0e\x19\x13#1\x05\b\x05\x0e\x1f\x16\x1f,\a\v B\\B(88(\xc0\r\x13\xa0\x1c(\x1c`\x00\x00\x00\x00\x04\xff\xff\xff\xc8\x01\xf1\x01\x8e\x00\f\x00\x1a\x00\"\x00/\x00\x00%4'7>\x01\x17\x1e\x01\x17\x14\x06#\a\x17\x16\x06\a\x06\"'.\x01?\x01\x162&\"&462\x16\x14%\"&5>\x0176\x16\x1f\x01\x06\x15\x01H&Q\x03\x0e\x06,6\x04\t\a\xbeQ\x03\x03\x067|7\x06\x03\x03Q\x14-\x03(\x1c\x1c(\x1c\xfe\xe8\a\t\x046,\x06\x0e\x03Q&\xc0,\x18\x80\x06\x03\x04 `8\a\nD\x80\x06\r\x03\x1e\x1e\x03\r\x06\x80\f \x1c(\x1c\x1c(\x14\n\a8` \x04\x03\x06\x80\x18,\x00\x00\x00\x06\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\f\x00\x1a\x00&\x00.\x006\x00>\x00\x00%4'7>\x01\x17\x16\x17\x16\x0e\x01#\a\x1627\x17\x16\x06\a\x06\"'.\x017'\"&7676\x16\x1f\x01\x06\x15\x16\"&462\x16\x14\x02\"\x06\x14\x16264\x06\"&462\x16\x14\x018\x1e*\x03\x0f\x064\a\x01\x05\a\x05\xb1\x10$\x10*\x03\x03\x06\"H\"\x06\x03\x03C\a\n\x01\a4\x06\x0f\x03*\x1e\xa7Α\x91Α\xac\x98ll\x98l\xab\x1a\x13\x13\x1a\x13\xc0#\x13C\x06\x02\x04*B\x05\a\x056\n\nC\x06\r\x04\x10\x10\x04\r\x06y\n\aB*\x04\x02\x06C\x13#\xf8\x91Α\x91\xce\x01\x1fl\x98ll\x98l\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x05\x00 \xff\xc0\x02\x83\x01\xc0\x00\a\x00\x0f\x00)\x009\x00V\x00\x00\x12\"&462\x16\x14\x04\"&462\x16\x14\x13\x16\x06+\x01\x15\x14\x06+\x01\"&=\x01#\"&?\x0167\x1627\x16\x17%2\x16\x15\x11\x14\x06+\x01\"&5\x11463\a\x1e\x02\x1d\x01\x14\x06+\x01\x15\x14\x06+\x01\"&=\x01#\"&=\x01467\x162\x9a4&&4&\x01Z4&&4&?\x03\x0f\f7\x0e\n0\n\x0e7\f\x0f\x02.\x06\x18\x188\x18\x18\x06\xfe\xfe\a\t\t\a \a\t\t\a|\f\x14\f\x0e\n\b\x0e\nP\n\x0e\b\n\x0e\x19\x13\x188\x01@&4&&4&&4&&4\xfe\xf8\f\x12h\n\x0e\x0e\nh\x12\f\xb9\x16\x03\x10\x10\x03\x16\xa9\t\a\xfe \a\t\t\a\x01\xe0\a\t\x90\x01\x0e\x15\f\x88\n\x0e\x88\n\x0e\x0e\n\x88\x0e\n\x88\x13\x1b\x02\x10\x00\x00\x03\xff\xff\xff\xbf\x02\x00\x01\xc0\x00@\x00D\x00H\x00\x00%\a\x06\"/\x01\a\x16\x15\x14\x0e\x01\a\x0e\x01/\x01\a\x16\x15\x14\x06\"&4632\x177'&67>\x0332\x177'&4?\x016;\x012\x1f\x01762\x1f\x01\x16\x14\x0f\x01\x17\x16\x14%7'\a\x05'\a\x17\x01\xf7a\t\x1b\tP\n\x11\x06\v\x06\x03\x0f\x05k\x12\x01\x12\x1b\x13\x13\r\x02\x06\x12l\x05\x02\x06\t\x17\x18\x18\n)&\nQ\t\ta\t\r\x01\r\tP0\n\x1c\n/\n\n0Q\t\xfe\xdcIEI\x012EID\x8aa\t\tQ\n&)\r! \f\x06\x02\x05l\x12\x06\x02\r\x13\x13\x1b\x12\x01\x12k\x05\x0f\x03\x05\b\x06\x04\x11\tQ\t\x1b\ta\t\tQ0\n\n/\n\x1c\n0P\t\x1bhIEJ\x9fEIE\x00\x03\xff\xf8\xff\xb8\x02\x01\x01\xc1\x00\x19\x004\x00O\x00\x00\x05\x16\x06\a\x06.\x027>\x01\x1f\x017&5462\x16\x14\x06#\"'\a%\x141\x14\x0e\x01+\x01\"&5.\x01'.\x01=\x014>\x02321\x1e\x01\a0\x15\x14\x0e\x02+\x01\".\x015.\x01'\"&=\x0146321\x1e\x01\x011\x06\x02\a9\x88b\x12\x1f\x04\x10\x05u\x1c\x02\x13\x1a\x13\x13\r\x02\x06\x1b\x01C\x04\b\x04 \x06\n\x06\x8aa\x06\t\x03\x04\x06\x03\x01z\xafZ\x03\x04\x06\x03 \x04\a\x05\x05S9\x06\t\t\a\x01Sv\x0f\x05\x10\x04 \x13b\x889\a\x02\x06t\x1b\x06\x02\r\x13\x13\x1a\x13\x01\x1b+\x01\x04\b\x04\t\x06a\x8b\x05\x01\t\x06 \x03\x06\x04\x03\x06\xafz\x01\x03\x06\x04\x03\x04\a\x04:R\x05\n\x06 \a\t\x06v\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\r\x00\x11\x00\x15\x00\x19\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x117\x175#\x1535#\x1535#\x15\x01@\x1a&&\x1a\xff\x00\x1a&\x80 0\x800\x800\x01\xc0&\x1a\xfe\x80\x1a&&\x1a\x01@\x80\xa0``````\x00\x00\b\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\r\x00\x11\x00\x18\x00\x1f\x00#\x00*\x00.\x005\x00\x00\x1146;\x01\x17\x11\x14\x06#!\"&575#\x15354&+\x01\x1d\x02326=\x01#\x1535#\x15\x14\x16;\x015'\x15!5%\x1535#\"\x06&\x1a\xc0\x80&\x1a\xff\x00\x1a&\xe0@\xa0\x13\r \r\x13\xa0@\xa0\x13\r @\x01\x00\xff\x00@ \r\x13\x01\x80\x1a&\x80\xfe\xc0\x1a&&\x1a\xc0@@ \r\x13@\x80@\x13\r @@ \r\x13@`@@@ @\x13\x00\x00\x05\xff\xf9\xff\xc0\x01\xc0\x01\xc0\x00\a\x00\x18\x00(\x002\x00O\x00\x00\x002\x16\x14\x06\"&4\x122\x16\x15\x14\x06+\x01\"&46;\x01264!6\x17\x16\x14\a\x06\"/\x01&6\x1f\x01\x1627\x16\x1f\x01\a\x06\"&4?\x01\"&46;\x012\x16\x0f\x01\"\x061\x17\x16\x1d\x01\x14\x06\"&=\x01'&6?\x01\x01|(\x1c\x1c(\x1c)\x0e\t\x1c\x14`\a\t\t\a`\a\t\xfe\xf6\v\v\x05\x05\x0e'\x0eD\f\x17\vD\x05\r=\x06\a\x1e\\\t\x1a\x13\t0\r\x13\x13\r\xcd\x1a\x15\x13R\x01\x01=\x0e\x13\x1a\x13N\x14\x02\x15\x15\x01\xc0\x1c(\x1c\x1c(\xfe\\\t\a\x14\x1c\t\x0e\t\t\x0e\f\f\x04\x0e\x04\x0e\x0eD\v\x17\fD\x04\xb8\t\b\x1e\\\t\x13\x1a\n\xd2\x13\x1a\x131\x13S\x01=\x0e\x14Y\r\x13\x13\rSN\x148\x12\x11\x00\x00\x03\xff\xfe\xff\xc0\x02\x00\x01\xc0\x00\a\x00$\x00C\x00\x00\x00\"&462\x16\x14\x12\x16\x14\a\x06#\"'%.\x01>\x01\x1f\x017'&7\x1f\x01\x1e\x01\x0f\x01\x17\x1676\x01'&76\x1f\x017\x16\x15\x1776\x16\x1f\x02\x1e\x01\x0e\x01/\x01&/\x01\a/\x01\x06'\x01\xc4(\x1c\x1c(\x1c\x12\x0e\a\x1a%\x14\x11\xfex\t\x06\t\x13\t\xc6.K\x17\x05k(\r\x03\n1\x88\x19\x14\a\xfe\x9a\x1a\x04\x03\x02\x03#\v\x15>R\x1d0\a\x114\f\t\f\x19\f:\x12\x06\a s/\x13\x18\x01`\x1c(\x1c\x1c(\xfe\x87\x0e\x14\a\x1a\b\xcb\x04\x13\x12\x06\x05fEK\x17\x1f5(\f#\x0eJF\v\x14\a\x01a\x17\x04\x04\x02\x01\x06\x15\v\x18\x1f \f\x1d\x163\x1a\x06\x19\x18\t\x06\x1d\t\x13\x13\r9\x18\x11\f\x00\x00\x04\x00\x00\xff\xc0\x02@\x01\xc0\x00\a\x00.\x00B\x00N\x00\x00\x00\"&462\x16\x14\x122\x16\x15\x14\x06#!\"&46;\x01\x130&5&6?\x016\x1f\x01\x16\x1f\x0132\x16\x15\x14\x0f\x013264\a7'.\x01?\x01'&\x0f\x01\x06\a\x0337\x16\x1f\x01\a37#\"/\x01\a\x17\x1e\x01\x0f\x01\x01d(\x1c\x1c(\x1c\x9e\x14\x0e*\x1e\xfe \n\x0e\x0e\n+6\x02\b\x03\n(%,G*\x14\x1a,\r\x13\x14\x1aF\n\x0e\xec\x19U\x15\x0f\n%\x0f\r\f'\x06\x064\x18>\f\x12\x16+\xcf\x19!\x1e\r\x14 =\x0f\f\x05\x18\x01`\x1c(\x1c\x1c(\xfe\xa4\x0e\n\x1e*\x0e\x14\x0e\x01\x0f\x01\x01\n\x1b\b\x1e\x1c\v\x15\v(5\x13\r\x16\b\xb2\x0e\x14\"Q2\r.\x16W\x05\x03\n\x1e\x04\x02\xfe\xfb\x84\x12\n\r[\xb0\x1b)N$\t\x1e\x0fL\x00\x02\x00\x00\xff\xe0\x02\x83\x01\xa0\x00\x19\x00C\x00\x00%\x16\a\x0e\x01#!\"&=\x01463!2654/\x01&?\x016\x17%5\"&46;\x012\x1e\x03\x17\x1e\x02;\x0126=\x0132\x16\x14\x06#\x15\x14\x06#\x15#5#\x15#5.\x01\x02e\x1d\x02\x02,\x1e\xfd\xfc\a\t\t\a\x02\a\v\x0e\t\n\f\n\n\n\f\xfd\xc5\r\x13\x13\r\x15\x13&\"\x1f\x18\t\x0f/= \x15\x1a&`\r\x13\x13\r8(@\xc0@*6a\x17&\x1d'\t\a\x10\a\t\x0e\v\v\b\a\n\r\f\r\nw\x80\x13\x1a\x13\t\x10\x17\x1f\x11\x1d,\x17&\x1a@\x13\x1a\x13`(80004\vE\x00\x00\x00\x00\x04\xff\xfe\xff\xe0\x02\x00\x01\xa0\x00\x14\x006\x00W\x00y\x00\x00\x122\x16\x14\x06#\"'\x06#\"&'&>\x027&54\x172654/\x01&54;\x012=\x014+\x01\"\x06\x15\x14\x1f\x01\x16\x15\x14+\x01\"\x1d\x01\x143754&+\x01\"\x0f\x01'&+\x01\"\x06\x1d\x01\x14;\x012=\x01\x17\x162?\x01\x15\x14;\x01232654/\x01&54;\x012=\x014+\x01\"\x06\x15\x14\x1f\x01\x16\x15\x14+\x01\"\x1d\x01\x143\x96Ԗ\x96j83AL\x02\x04\x01\x02\a\x11\x1c\x069\x80\x12\x19\x0e\x16\x02\v\f\b\b\f\x12\x19\x0e\x16\x02\v\f\b\b\xcc\t\a\x10\n\x04\x12\x12\x04\n\x10\a\t\b\x10\b\x19\x02\n\x02\x19\b\x10\b0\x12\x19\x0e\x16\x02\v\f\b\b\f\x12\x19\x0e\x16\x02\v\f\b\b\x01\xa0z\xacz\x133\x03\x02\x05\a\x151\x169JV\x96\x17\x10\x10\f\x13\x01\x02\a\b\x10\b\x17\x10\x11\v\x13\x01\x02\a\b\x10\b\bh\a\t\t##\t\t\ah\b\bD8\x04\x048D\b\x17\x10\x10\f\x13\x01\x02\a\b\x10\b\x17\x10\x11\v\x13\x01\x02\a\b\x10\b\x00\x00\x00\x00\x03\xff\xfe\xff\xc0\x02\x02\x01\xc3\x00\a\x00E\x00Q\x00\x00\x00\"&462\x16\x14\a'\a\x17\x16\x0f\x01\x06\a\x17\x1676\x1e\x01\x06\a\x06#\"'%&'&>\x01\x16\x17\x16\x1f\x01&'&6?\x0154?\x01'&/\x01&>\x01\x16\x1f\x02\x16\x1f\x01\x1e\x01\a\x06#\"\a'\x15\x14\x06\x0f\x01\x06\a\x17&7\x01\xc4(\x1c\x1c(\x1c\x13TB4\x19\a\x15\x04\x0eZ\x10\x0e\t\x13\b\a\t\x11\x13\x0f\x0f\xfe\x93!\x10\x04\a\x12\x13\x04\a\x0f&\x06\x02\x05\f\rJ#*\x11\x13\t\x1d\x06\t\x18\x19\x06\x1a?\x19\x15o\v\x04\b\n\x10\v\x99<\x12\x0fU\x02\x06\xaa\x05\x02\x01`\x1c(\x1c\x1c(\xb6?\x1e'\x13\x1ef\x0f\x06\"\x05\a\x04\a\x12\x13\x04\b\x05\x85\f!\t\x12\t\a\t\x0f\x05\x0e\x06\a\r\x17\x04\x195(\x11\x15\x06\x06\x12:\v\x1a\v\b\f4\x15\b\x10S\b\x1b\n\r--\x14\x10\x19\x05\x1c\x01\x01=\n\n\x00\x00\x00\a\xff\xff\xff\xc0\x02\x02\x01\xc1\x00T\x00\\\x00d\x00l\x00t\x00\u007f\x00\x87\x00\x00\x01\x16\x06\x0f\x01\x14\x16\x14\x15\x14\a\x16\x17\x16\x06\a\x06+\x01\"'.\x01547&507'.\x02?\x01>\x01\x1f\x0154>\x02;\x012\x16\x1d\x01\x141\x15\x1767&5462\x16\x15\x14\a\x16\x17704=\x0146;\x012\x16\x1d\x0176\x16\x17$264&\"\x06\x14\x12264&\"\x06\x146264&\"\x06\x146264&\"\x06\x147654&\"\x06\x15\x14\x16\x176264&\"\x06\x14\x01\xff\x02\x05\x06\x87\x01\x04!\b\t#%\x10\x15c\x12\r!&,\x04\x01\x87\x04\x05\x01\x01\x06\x03\f\x06\x1c\x03\x04\x06\x03\x10\a\t8\t\r\x168P8\x16\r\t8\t\a\x10\a\t\x1c\x06\r\x02\xfe\xe0\x0e\t\t\x0e\t)\x0e\t\t\x0e\t\t\x0e\t\t\x0e\t\t\x0e\t\t\x0e\t\x10\x10\t\x0e\t\b\x04\x1d\x0e\t\t\x0e\t\x01(\x06\f\x037\x01\x05\x04\x02\r\x10\"-.Q\x19\f\b\x15C(?,\x10\r\f7\x02\a\b\x04\x0e\x06\x05\x02\f\x1d\x04\x05\x05\x02\t\a.\x01\x01\x17\x0f\f\x1b!(88(\"\x1a\f\x0f\x17\x01\x01.\a\t\t\a\x1d\f\x02\x05\x06*\t\x0e\t\t\x0e\xfe\xe7\t\x0e\t\t\x0e7\t\x0e\t\t\x0e7\t\x0e\t\t\x0eO\x17\t\a\t\t\a\x04\x10\x062\t\x0e\t\t\x0e\x00\a\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\a\x00\x0f\x00\x17\x00\x1f\x00[\x00`\x00l\x00\x0062\x16\x14\x06\"&462\x16\x14\x06\"&462\x16\x14\x06\"&462\x16\x14\x06\"&4\x05\x17\x16\x14\x0f\x01\x06\"/\x01&=\x01#\x16\x15\x14\x06#!\"&54>\x017546;\x01546;\x012\x1f\x01\x16\x1d\x01354?\x0162\x1f\x01\x16\x14\x0f\x01\x06\x1d\x01\x14\x01\x15\x173'\x13264&#!\"\x06\x14\x163n\x14\x0e\x0e\x14\x0e^\x14\x0e\x0e\x14\x0e^\x14\x0e\x0e\x14\x0e^\x14\x0e\x0e\x14\x0e\x01\a$\x05\x05\x16\x05\r\x05%)+\vB.\xff\x00.B\x10\x1d\x13\x1c\x14\x10\x1c\x14\x90 \fO\x05@)%\x05\r\x05\x16\x05\x05$\x17\xfe\x80@zD:\x14\x1c\x1c\x14\xff\x00\x14\x1c\x1c\x14H\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14\x0e\x0e\x14#%\x05\r\x05\x16\x05\x05$*:\x13\x17\x19.BB.\x16(\x1e\t[\x14\x1cp\x14\x1c\x1d\xb7\f\r3\x13:*$\x05\x05\x16\x05\r\x05%\x16 f \x01S`@\xa0\xfe\x80\x1c(\x1c\x1c(\x1c\x00\x00\x02\x00\x00\xff\xe0\x01\x80\x01\xa0\x00\x13\x00\x1f\x00\x00\x012\x1d\x01\x14+\x01\x15\x14+\x01\"=\x01#\"=\x0143%2\x1d\x01\x14#!\"=\x0143\x01t\f\f\x8c\f8\f\x8c\f\f\x01h\f\f\xfe\x98\f\f\x01 \f8\f\xe4\f\f\xe4\f8\f\x80\f8\f\f8\f\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00%\x001\x009\x00\x00\x01#\x15\x16\x15\x14\x06\a\x17\x16\x06+\x01\"&?\x01.\x015475#\"&=\x01463!2\x16\x1d\x01\x14\x06\x05\x15\x14;\x012=\x014+\x01\"\x16264&\"\x06\x14\x01p\x10 /(\x16\x04\x13\x10\xc0\x10\x13\x04\x16(/ \x10\a\t\t\a\x01`\a\t\t\xfe\xd9\b0\b\b0\b6tRRtR\x01\x90\x9d\x10\x132T\x1aG\x0f\x1a\x1a\x0fG\x1aT2\x13\x10\x9d\t\a\x10\a\t\t\a\x10\a\t\x18\x10\b\b\x10\b\xd0\x13\x1a\x13\x13\x1a\x00\x04\xff\xff\xff\xbf\x02\x05\x01\xc5\x00\x15\x00/\x009\x00A\x00\x00%\x16\x14\x0f\x01\x06\"/\x01.\x017'#'7\x17\x15\x176\x16\x17'\"\a'&7>\x01\x17\x1e\x01\x0f\x01\x1f\x0176\x16\x17\x16\x06\a\x06\a'&\a\x06\x17\a\x06\"&4?\x01\x06264&\"\x06\x14\x01\xf5\v\v5\n\x1f\vu\x11\b\vk>`@\x80k\x140\x114\r\fR\x01*\x1bI%\a\x03\x05J\vDK\x05\r\x02\t\x14\x1b\x13\x19\x13\x1f\x94\a\f|\x135%\x13\x98u\x14\x0e\x0e\x14\x0e4\v\x1e\v5\v\vu\x110\x14k\x80@`>k\v\b\x116\x03R=+\x1b\x14\t\x02\x0e\x04KD\vJ\x05\x03\a$J\x1b\x12\v\x13\x1fR\x1f {\x13%5\x13\x99\xde\x0e\x14\x0e\x0e\x14\x00\x06\xff\xfe\xff\xc0\x02\x02\x01\xc0\x00\a\x00)\x00-\x001\x005\x00=\x00\x00\x00\"&462\x16\x142\x16\x06\x0f\x01\x1532\x16\x1d\x01\x14\x06#!\"&=\x0146;\x015\a\"#\"'&67%6\x015#\x15%\x1535+\x01\x153\x02\"&462\x16\x14\x01-\x1a\x13\x13\x1a\x13\xbe\x03\x06\a\xe4\xb0\r\x13\x13\r\xfe\x80\r\x13\x13\r\xb0\xdc\x02\x02\f\x03\x02\a\x06\x01\xe0\x06\xfe\xbe`\x01\x00`\x80``c\x1a\x13\x13\x1a\x13\x01\x80\x13\x1a\x13\x13\x1a\r\f\x02<\\\x13\r\xe0\r\x13\x13\r\xe0\r\x13S;\f\x06\f\x01\x80\x02\xfe\xa7``````\x01 \x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x0e\x00\x1f\x00\x00\x01\x1e\x01\x15\x14\x06\"&5467\x16\x176\x13>\x01'&'\a&'\x0e\x02\x15\x14\x1632\x01D4H\x83\xba\x83_I9*\x1b\n$\x13\x15\x06\x06:\\\a\x1b\x1c\x12K8+\x01\x8d0\x8c+_\x87\x87_6\xa0D5: \xfe\xc7\x1aY'\t\vCu\b ((\x138E\x00\x00\x00\x00\x02\xff\xff\xff\xc0\x02A\x01\xc0\x00,\x00X\x00\x007\x0e\x03\a\x06\a'&67670767>\x06767632\x1f\x01\x06\a\x0e\x05\a\x0e\x02%\x16\x06\a\x06\a\"\a\x06\a\x0e\x04\a\x06\a\x06#\"/\x0167>\x047>\x027>\x05767\xdb\r\x16\x18\x0e\r5#$\t\x01\n$7\x02E\x1c\x04\x03\x12\x10 #3\x1e\x1b\x0e\b\n\r\t%\x1e.\x13\x16&%\x1a\n\a\a\b\x17\x01L\t\x01\n$7\x01\x01E\x1c\x06\a %C(\x1b\x0e\b\n\r\t%\x1e.\f\f\x16\x11\x17\f\x12\x1a\n\a\x06\t\x17 !\x14\x115#p\r\x12\f\a\x04\x14!#\n\x1b\b\x1e\x15\x01\x17J\v\b$\x18'\x1c\x1f\v\n\n\x06\t%\x1c\x12\a\n\x1a%&\x15\x13\x12\x13!\xd8\n\x1b\b\x1e\x15\x01\x17J\x0f\x126'/\x0f\n\n\x06\t%\x1c\x12\x04\x05\v\v\x13\v\x13&\x15\x13\x12\x13!!\x16\t\x06\x14!\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x16\x002\x00:\x00\x00%\x14\a\x06\x14\x17\x16\x1d\x01\x14\x06#!\"&5\x11463!2\x15\x05\x15\x14;\x01\x15\x14;\x012=\x0132=\x014+\x0154+\x01\"\x1d\x01#\"\x135!\"\x06\x14\x163\x01\xc0\n\x02\x02\n\x0f\v\xfe\xba)77)\x01F\x1a\xfe\xd0\b8\b0\b8\b\b8\b0\b8\b\xed\xfe\xe3\r\x13\x12\x0eZ\x0f\x05\t4\f\n\t\x10\f\x0e7)\x01@)7\x1a\x8e0\b8\b\b8\b0\b8\b\b8\xfe\xe0@\x12\x1c\x12\x00\x00\x01\x00\x00\xff\xc0\x02@\x01\xc0\x00\x18\x00\x00\x012\x1e\x02\x15\x14\x06#\x11\x14\x06#!\"&5\x11\".\x02546\x01 AoH(#\x1d\x15\x0f\xfe\x88\x0f\x15\x0f\x18\x10\t\xa1\x01\xc0\x1f2;\x1d\x18\x1f\xff\x00\r\x13\x13\r\x01\x00\t\x0f\x14\v>k\x00\x00\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa1\x00\t\x00\x12\x00\x005!\x15\x14\x06#!\"&5\x01\x1e\x01\x15!%630\x02\x00\x13\r\xfe@\r\x13\x01,Y{\xfe\x00\x01\x17\b\f\xa0\xa0\r\x13\x13\r\x01\xa0\x05\x81Z\xd9\a\x00\x00\x00\x03\xff\xff\xff\xc0\x02A\x01\xc1\x00\x10\x00,\x00H\x00\x00\x01\x17\x1e\x013\x15\x14\x06#!\"&=\x01265\x0554+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x01327\x16\x15\x14\x0f\x01\x06#\"/\x01&\"\x0f\x01\x06#\"/\x01&547%62\x17\x01 \xdb\x01\x03\x01\t\a\xfe`\a\t\x01\x04\x01;\b8\b0\b8\b\b8\b0\b8\b\xbb\x05\x04\x15\x05\a\a\x04\xe5\x05\f\x05\xe5\x04\a\a\x04\x16\x04\x05\x01\x00\f\x1e\f\x01M\xc1\x01\x02\xb9\a\t\t\a\xb9\x02\x01D0\b8\b\b8\b0\b8\b\b8\x94\x05\a\x06\x05\x18\x05\x04\xca\x04\x04\xca\x04\x05\x18\x05\x06\a\x05\xe2\n\n\x00\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x14\x000\x00\x00\x122\x16\x14\x06#\"'\x06#\"547>\x027&54\x0554+\x0154+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132\x96Ԗ\x96j83AL\b\x02\x04\x11\x1c\x069\x01`\b8\b0\b8\b\b8\b0\b8\b\x01\xa0z\xacz\x133\b\x03\x03\x03\x151\x16:IVn0\b8\b\b8\b0\b8\b\b8\x00\x00\x03\xff\xff\xff\xbf\x02\x00\x01\xc0\x00\x0f\x00%\x00.\x00\x00\x01\x16\x14\x0f\x01\x06\"/\x01&4?\x0162\x1f\x017\x17\a\x06\x0f\x02\x06\"/\x01&4?\x026?\x01\x17\a\x177'\a\x06\x0f\x0176\x01\xfb\x05\x05\x16\x05\r\x05\xb5\x05\x05\x17\x04\x0e\x04\x027-n\x13\x1bxf\x05\r\x05\x16\x05\x05f\x1b\a\x13n-7\r\nD\n\x06\x02\x13P\t\x01\x06\x04\x0e\x04\x17\x05\x05\xb5\x05\r\x05\x16\x05\x05\xf77-n\x13\a\x1bf\x05\x05\x16\x05\r\x05fx\x1b\x13n-7{\nD\n\x06\tP\x13\x02\x00\x00\x00\x00\x01\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\v\x00\x00\x122\x1e\x01\x15\x14\x06\"&546\x8fb]2p\xa0p2\x01\xc0u\x947PppP7\x94\x00\x00\x00\x00\x06\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\v\x00\x1b\x00'\x00/\x007\x00?\x00\x00%2\x16\x14\x06#!\"&463\x052\x16\x1d\x01\x14\x06#!\"&=\x014637\"&7>\x012\x16\x17\x16\x06#&\"\x06\x14\x16264&\"\x06\x14\x16264\x06\"\x06\x14\x16264\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xb0\a\t&\x1a\xfe\xa0\x1a&\t\a\x1b\x1a\x18\x0f\x1f~\x96~\x1f\x0f\x18\x1a>\x0e\t\t\x0e\t\x89\x0e\t\t\x0e\t\x89\x0e\t\t\x0e\t\xc0\x1c(\x1c\x1c(\x1c\x80\t\a\x10\x1a&&\x1a\x10\a\t\xa04\x182BB2\x184p\t\x0e\t\t\x0e)\t\x0e\t\t\x0e\x17\t\x0e\t\t\x0e\x00\x00\x01\x00 \xff\xc0\x01\xe0\x01\xc1\x00@\x00\x00%\x15\x14\x0e\x01+\x01\"&/\x01&=\x0146?\x01\x15\x142=\x014>\x03376\x1e\x01\x1d\x01\x142=\x0146321\x1e\x01\x1d\x01\x142=\x0146\x1f\x01\x1e\x03\x1d\x01\x17\x1e\x01\x01\xe0\x1e4\x1e\xd7\x13/\r\x1f\v\f\t\x1b\x10\x03\x05\b\n\x05\x1f\b\x10\n\x10\x1c\x14\x01\x14\x1b\x10\x15\r'\x05\b\a\x03$\v\x11\x83S\x1e4\x1e\x13\x0e\x1f\v\x0fJ\t\x14\x04\x0fL\b\b\x93\x05\b\a\x06\x05\x06\x01\x06\f\a \b\b\xc8\x14\x1c\x01\x1d\x14\xc6\b\b \v\x0f\x02\a\x01\x04\x06\b\x042\t\x03\x15\x00\x00\x02\x00\x00\x00\x00\x02\x00\x01\x80\x00\x13\x00#\x00\x00%\x15!5467\x17546;\x012\x16\x1d\x017\x1e\x01\x172\x16\x1d\x01\x14\x06#!\"&=\x01463\x01\xe0\xfe@B5)\t\a`\a\t)5B\x10\a\t\t\a\xfe \a\t\t\a\xa0@@;a\x16Rp\a\t\t\apR\x16a\x9b\t\a \a\t\t\a \a\t\x00\x00\x00\x00\x04\xff\xfe\xff\xbe\x02\x02\x01\xc2\x00\x17\x00A\x00K\x00U\x00\x00\x01\x1e\x03\x15\x14\x06\a\x01\x0e\x01#\"&5467\x01>\x012\x16\a64&\"\a\x06\a\x0e\x01\a\x0e\x01\a\x0e\x01\a\x0e\x01\a\x06\a\x06\x14\x162767>\x017>\x017>\x017>\x0176\x05'.\x01?\x016\x16\x1f\x03\x1e\x01\x0f\x01\x06&/\x01\x01\xe9\x04\t\x06\x04\x0e\t\xfe\xa0\n\"\x0e!/\x0e\n\x01`\n!\x1c!(\x04\t\r\x05\f\x17 '\x06\x04\x18\x17 '\x06\x04\x18\x17 \x14\x04\t\r\x05\f\x17 '\x06\x04\x18\x17 '\x06\x04\x18\x17 \xfe|\v\x13\x02\x11\xd0\x113\x13\v\x9f\v\x13\x02\x11\xd0\x113\x13\v\x01\xa9\x05\x0e\x0f\x10\a\x0e!\n\xfe\xa0\n\x0e/!\x0e\"\n\x01`\t\x0e\x0ei\x05\r\n\x05\f\x04\x06' \x17\x18\x04\x06' \x17\x18\x04\x06\x13\x05\r\n\x05\f\x04\x06' \x17\x18\x04\x06' \x17\x18\x04\x06\xb8\v\x133\x11\xd0\x11\x02\x13\v\x9f\v\x133\x11\xd0\x11\x02\x13\v\x00\x00\x00\x02\x00 \xff\xbf\x01\xa0\x01\xc1\x00\x15\x00\x1d\x00\x00\x012\x16\x14\x06#!\"&46;\x01&5462\x16\x15\x14\a\x03'!\a\x0e\x01\"&\x01p\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01\x01TxT\x01\xacc\x01\x00c\x04\x11\x10\x11\x01 \x1c(\x1c\x1c(\x1c\b\b\x057\x177\x1e\x01\x15\x14\a'#5'632\x176'&54?\x01632\x17\x1e\x01\x06\x01Kk%\x13Kj\x8fL\x17!!\x17\x1d1$\x1d\x18\x14\x18\v5\x83\x15\x1d\x066YK$(\x1e\x1c\x15\x14\x02\x03\x17\x02\x03\x04\x03\n\f\x04\xb9'\"G@)!.!\x14#+2-,\x0e\x18&\x13B\x1d\x11\x169N\"\x17\f+\x1d\x02\x03\x03\x03\x17\x02\x03\r$7\x00\x00\x00\x00\x05\x00\x00\xff\xc0\x02\x01\x01\xc1\x00\x11\x00\x1e\x00&\x00.\x006\x00\x00\x13\x1e\x02\x17\x16\x0e\x01\x0f\x01.\x02'7>\x02\a\x1e\x02\x17\x05\x06#\"&5476264&\"\x06\x146264&\"\x06\x14\x16264&\"\x06\x14\x9fZ\x9ab\v\x01\x06\v\b9\x04R\x8f]\x0f\x02\n\x0f3X\x86K\x03\xfe\x85\x03\x02\x06\n\x01r\x1a\x13\x13\x1a\x13C\x1a\x13\x13\x1a\x13{\x1a\x13\x13\x1a\x13\x01\xc0\t_\x99Y\b\x0f\v\x02\x10]\x8eP\x029\a\f\x06q\x01J\x85Vi\x01\n\x06\x02\x02L\x13\x1a\x13\x13\x1a\x85\x13\x1a\x13\x13\x1a{\x13\x1a\x13\x13\x1a\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\t\x00\x1f\x007\x00\x00\x17\x03!\x03\x0e\x01+\x01\"&7\x06\x16;\x01\x15\x14\x16;\x0126=\x01326/\x01&\"\a72\x16\x1d\x01\x14\x06#!\"&=\x0146;\x0176;\x012\x1f\x015\x15\x01\x80\x15\x01\x1c\x13\xf6\x13\x1cE\a\b\v9\t\a \a\t9\v\b\aZ\x04\x0e\x04\xdb\a\t\t\a\xfe`\a\t\t\ax\t\a\x0fr\x0f\a\t\x13\x01S\xfe\xad\x13\x1a\x1a\xc3\b\x15p\a\t\t\ap\x15\b^\x05\x05\xa5\t\a \a\t\t\a \a\t\x13\r\r\x13\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\t\x00\x1f\x007\x00\x00\x17\x11!\x11\x14\x06#!\"&7\x06\x16;\x01\x15\x14\x16;\x0126=\x01326/\x01&\"\a72\x16\x1d\x01\x14\x06#!\"&=\x0146;\x0176;\x012\x1f\x01 \x01\x80\x1c\x14\xfe\xe0\x14\x1c[\a\b\v9\t\a \a\t9\v\b\aZ\x04\x0e\x04\xdb\a\t\t\a\xfe`\a\t\t\ax\t\a\x0fr\x0f\a\t\x10\x01P\xfe\xb0\x14\x1c\x1c\xc1\b\x15p\a\t\t\ap\x15\b^\x05\x05\xa5\t\a \a\t\t\a \a\t\x13\r\r\x13\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x01\xc0\x01\xc1\x00\x0e\x00 \x00<\x00D\x00\x00%\x1e\x01\x15\x14\x06#!\"&5467\x176\"&=\x0146?\x0162\x1f\x01\x1e\x01\x1d\x01\x14'\x15\x14;\x01\x15\x14;\x012=\x0132=\x014+\x0154+\x01\"\x1d\x01#\"\a\x15\x14\x1626=\x01\x01?6K\"\x18\xfe\xb4\x18\"K6_5jK\f\tU\n\x18\nU\t\f\xa8\x05\x16\x05\x10\x05\x16\x05\x05\x16\x05\x10\x05\x16\x05(/B/\x80\x02N6\x18\"\"\x186N\x02_oK5n\t\x12\x03 \x04\x04 \x03\x12\tn5\x9d\x10\x05\x16\x05\x05\x16\x05\x10\x05\x16\x05\x05\x16]\x10!//!\x10\x00\x00\x00\x01\x00\x00\xff\xe0\x02\x80\x01\xa0\x00-\x00\x00\x05#\"&5\x11#\x15\x14\x06+\x01\"&=\x0146;\x01546;\x012\x16\x15\x113546;\x012\x16\x1d\x01\x14\x06+\x01\x15\x14\x06\x01ܘ\x0f\x15`\x15\x0f\x8c\a\t\t\ap\x15\x0f\x98\x0f\x15`\x15\x0f\x8c\a\t\t\ap\x15 \x15\x0f\x01\\\x9c\x0f\x15\t\a \a\t\x9c\x0f\x15\x15\x0f\xfe\xa4\x9c\x0f\x15\t\a \a\t\x9c\x0f\x15\x00\x06\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\a\x00'\x00/\x007\x00?\x00G\x00\x00\x00\"&462\x16\x14\a'\a\x17\x16\x1d\x01\x14\x06\"&=\x01'&54?\x01632\x1f\x0132\x16\x14\x06+\x01\"\x162\x16\x14\x06\"&4\x16264&\"\x06\x14$2\x16\x14\x06\"&4\x16264&\"\x06\x14\x01\xa4(\x1c\x1c(\x1c4);*\x0e\x13\x1a\x13R\x0e\vp\t\f\v\tG5\r\x13\x13\r@\v6jKKjKf4&&4&\xfe\x8bjKKjKf4&&4&\x01`\x1c(\x1c\x1c(\x95!2\x1b\n\x11\x80\r\x13\x13\ro6\n\x11\x0f\t`\b\a9\x13\x1a\x13 KjKKju&4&&4\x9aKjKKju&4&&4\x00\x00\x05\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x13\x00\x17\x00\x1b\x00\x1f\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x05#\x153'#\x153\a35#\x1735#\x01\xa0\r\x13\x13\r\xfe\x80\r\x13\x13\r\x01`\x80\x80\xc0\x80\x80\x80\x80\x80\xc0\x80\x80\x01\xa0\x13\r\xfe\x80\r\x13\x13\r\x01\x80\r\x13@\x80\x80\x80\xc0\x80\x80\x80\x00\x00\x00\x00\x15\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00O\x00_\x00o\x00\u007f\x00\x8f\x00\x9f\x00\xaf\x00\xbf\x00\xcf\x00\xdf\x00\xef\x00\xff\x01\x0f\x01\x1f\x01/\x01?\x01O\x00\x0072\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01463!2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06+\x01\"&=\x01463\a2\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x032\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x132\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x052\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x01463\xf0\a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a\xff\x00\a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a\xa0\a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a@\a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a\xfe\xa0\a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a\xe0\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t`\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t\xfe\xe0\t\a \a\t\t\a \a\t\x01\x80\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t`\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t`\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\x00\x00\b\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00O\x00_\x00o\x00\x84\x00\x0072\x16\x1d\x01\x14\x06+\x01\"&=\x01463#2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x172\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x132\x16\x1d\x01\x14\x06+\x01\"&=\x0146372\x16\x1d\x01\x14\x06#!\x11\x14\x06+\x01\"&5\x11463\xf0\a\t\t\a \a\t\t\a@\a\t\t\a \a\t\t\a\xe0\a\t\t\a \a\t\t\a\x80\a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a\xfe\x90\t\a \a\t\x13\r \t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t`\t\a \a\t\t\a \a\t`\t\a \a\t\t\a \a\t\x01 \t\a \a\t\t\a \a\t`\t\a \a\t\xfe\x90\a\t\t\a\x01\x90\r\x13\x00\x00\x00\x00\x02\xff\xff\xff\xbf\x02\x01\x01\xc1\x00$\x00,\x00\x00\x012\x16\x17\x16\x06/\x01\x16\x15\x14\x0e\x01\a\x06&?\x01\x06#\"&'&6\x1f\x01&54676\x16\x0f\x016\x06264&\"\x06\x14\x01a=Z\b\x01\v\b{\r%A'\b\f\x01\f#*=Z\b\x01\v\b{\rQ<\b\f\x01\f#D\x1a\x13\x13\x1a\x13\x01@Q<\b\f\x01\f#*(E-\x05\x01\v\b{\rQ<\b\f\x01\f#*=Z\b\x01\v\b{\r\xa0\x13\x1a\x13\x13\x1a\x00\x00\x00\x05\xff\xfe\xff\xc0\x02\x02\x01\xc2\x00\x12\x00.\x006\x00L\x00j\x00\x007'&676\x16\x1f\x017>\x01\x17\x1e\x01\x0f\x01\x06\"\x172\x16\x1d\x01\x14\x0e\x02+\x01\"&=\x0146;\x017>\x01;\x012\x16\x1f\x01\x06264&\"\x06\x14%2\x16\x0f\x01\x06\"&?\x01#\"&?\x016;\x012\x16\x0f\x01\x136\x16\x1d\x01\x14\x06\"&4632\x175\a\x15\x14\x06\"&4632\x175467ua\x15\x02\x18\x155\x13\n\n\x135\x15\x18\x02\x15a\x04\x0e\x8c\v\x10\x04\b\n\x05\xea\v\x10\x10\v0\a\x03\x0f\bH\b\x0f\x02\b[,\x1e\x1e,\x1e\x01\x97\b\a\x04\\\x04\r\b\x02\x18>\x06\b\x01\x11\x01\vL\x06\b\x02\x16'\x0e\x14&5%%\x1b\b\bp&5%%\x1b\b\b\x0f\v\xe5c\x16>\x14\x12\x05\x13\v\v\x13\x05\x12\x14>\x16c\x05`\x10\v\x8a\x05\n\b\x04\x10\v\x8a\v\x10\x0e\b\n\n\b\x0e\x94\x1e,\x1e\x1e,V\v\x05\x8b\x05\b\x05S\a\x05k\t\b\x053\x01`\x02\x13\x0f\x90\x14\x1c\x1c(\x1c\x020\x12l\x14\x1c\x1c(\x1c\x02k\f\x12\x02\x00\x00\x00\x00\x01\x00\x00\xff\xc0\x02\x00\x01\xc0\x00#\x00\x00%\x16\x15\x14\x0f\x01\x0e\x02#\"\x0054>\x01?\x01632\x1f\x01\x16\x15\x14\x0f\x01\x1e\x01\x177632\x17\x01\xf1\x0f\x01\x18\x01\a\n\x05\xc0\xfe\xf0\x05\t\x05h\x02\x03\x10\x060\x02\t<\x17h21\b\v\x05\x04V\x06\x10\x03\x02h\x05\t\x05\x01\x10\xc0\x05\n\a\x01\x18\x01\x0fp\x04\x05\v\b12h\x17<\t\x02\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00/\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01454/\x01&#\"\x0f\x01.\x01'7654/\x01&#\"#\a\x06\x15\x14\x16327\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01P\tF\x03\x03\a\x05\x1f\x1fA\x0e&\x05\x01\x1e\x04\n\x02\x01A\f\xaax\f\x03\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfe\xcd\x01\x02\n\x04\x1e\x01\x05&\x0eA\x1f\x1f\x05\a\x03\x03F\t\x0f\x03\fx\xaa\f\x00\x00\x00\b\x00\x00\xff\xc0\x02\x80\x01\xc0\x00\x10\x00\x1c\x00(\x004\x00@\x00P\x00X\x00_\x00\x00\x012\x16\x15\x11\x14\x06+\x01\x11#\x15#5463\x1754+\x01\"\x1d\x01\x14;\x012\x0554+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012=\x014+\x01\"\x1d\x01\x14;\x012\a2\x16\x15\x11\x14\x06#!\"&5\x11463\x16\"\x06\x14\x16264\x055'\a'\a\x15\x02`\r\x13\x13\r\x80\xc0\xa0\x13\rH\t\x1e\t\t\x1e\t\x01`\t\x1e\t\t\x1e\t\t\x1e\t\t\x1e\t\t\x1e\t\t\x1e\t\xa8\r\x13\x13\r\xfe\x80\r\x13\x13\rM\x1a\x13\x13\x1a\x13\x01\x00`\x80 @\x01\xc0\x13\r\xfe\xc0\r\x13\x01@@`\r\x13g\x1e\t\t\x1e\t\xc7\x1e\t\t\x1e\tq\x1e\t\t\x1e\tq\x1e\t\t\x1e\t0\x13\r\xfe\xe0\r\x13\x13\r\x01 \r\x13@\x13\x1a\x13\x13\x1a\xcd``\x80 @ \x00\x00\x00\x00\x03\x00\x00\xff\xbf\x02\x81\x01\xc0\x00\x13\x00;\x00?\x00\x00%2\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x017\x17\a\x05\x16\x15\x14\x0f\x01\x06#\"'\x01&54?\x01632\x1f\x015463!2\x16\x1d\x01\x14\x06+\x01\"&=\x01#\a'7#\x15\x01P\a\t\t\a\x80\a\t\t\a \x1bC\t\x015\x06\x03\x14\x05\b\x05\x04\xfd\xb3\x06\x03\x14\x05\b\x05\x04s\t\a\x01\xa0\a\t\t\a \a\tv1C v \t\a \a\t\t\a \a\tP4\x1c*\x05\b\x05\x05\x19\x06\x03\x01\xc7\x05\b\x05\x05\x19\x06\x03Y,\a\t\t\a`\a\t\t\a \x944`\x1d\x00\x00\x04\xff\xfd\xff\xe0\x01\xc0\x01\xa0\x00\x15\x005\x00O\x00R\x00\x0072\x16\x0f\x01\x06\"/\x01&6;\x01\x1146;\x012\x16\x15\x117\"&=\x014?\x01#\"&=\x0146;\x012\x16\x1d\x01\x14\x0f\x0132\x16\x1d\x01\x14\x06#\x17\x16\x15\x14\x06+\x01\"/\x01#\a\x06+\x01\"&54?\x016;\x012\x17\a3'\xb0\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\xa0\a\t\v=8\a\t\t\a\x80\a\t\v=8\a\t\t\a\x1f\x01\t\a\x19\f\x03\x05G\x04\x04\v\x19\a\t\x01;\x04\v*\v\x044 \x10`\x14\a`\x05\x05`\a\x14\x010\a\t\t\a\xfeЀ\t\a\x12\x0e\nF\t\a \a\t\t\a\x12\x0e\nF\t\a \a\t\xeb\x02\x03\a\t\v\r\r\v\t\a\x03\x02\xa0\v\ve0\x00\x04\xff\xfd\xff\xe0\x01\xc0\x01\xa0\x00\x15\x005\x00O\x00R\x00\x00\x13\"&?\x0162\x1f\x01\x16\x06+\x01\x11\x14\x06+\x01\"&5\x11\x17\"&=\x014?\x01#\"&=\x0146;\x012\x16\x1d\x01\x14\x0f\x0132\x16\x1d\x01\x14\x06#\x17\x16\x15\x14\x06+\x01\"/\x01#\a\x06+\x01\"&54?\x016;\x012\x17\a3'\x10\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\xe0\a\t\v=8\a\t\t\a\x80\a\t\v=8\a\t\t\a\x1f\x01\t\a\x19\f\x03\x05G\x04\x04\v\x19\a\t\x01;\x04\v*\v\x044 \x10\x01 \x14\a`\x05\x05`\a\x14\xfe\xd0\a\t\t\a\x010@\t\a\x12\x0e\nF\t\a \a\t\t\a\x12\x0e\nF\t\a \a\t\xeb\x02\x03\a\t\v\r\r\v\t\a\x03\x02\xa0\v\ve0\x00\x00\x00\x00\x05\xff\xfd\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00U\x00\x00\x13\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\a\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\x172\x16\x1d\x01\x14\x06#!\"&=\x014635\"&=\x0146;\x012\x16\x1d\x01\x14\x06#!2\x16\x0f\x01\x06\"/\x01&6;\x01\x1146;\x012\x16\x15\x11\xf0\a\t\t\a@\a\t\t\a@\a\t\t\a\x80\a\t\t\a\x80\a\t\t\a\xff\x00\a\t\t\a\a\t\t\a\xc0\a\t\t\a\xff\x00\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\x01`\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t@\t\a \a\t\t\a \a\t\x14\a`\x05\x05`\a\x14\x010\a\t\t\a\xfe\xd0\x00\x05\xff\xfd\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x1f\x00/\x00?\x00U\x00\x00\x13\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\a\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\x172\x16\x1d\x01\x14\x06#!\"&=\x014635\"&=\x0146;\x012\x16\x1d\x01\x14\x06#%\"&?\x0162\x1f\x01\x16\x06+\x01\x11\x14\x06+\x01\"&5\x11\xf0\a\t\t\a@\a\t\t\a@\a\t\t\a\x80\a\t\t\a\x80\a\t\t\a\xff\x00\a\t\t\a\a\t\t\a\xc0\a\t\t\a\xfe`\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\x01`\t\a \a\t\t\a \a\t\x80\t\a \a\t\t\a \a\t\xc0\t\a \a\t\t\a \a\t@\t\a \a\t\t\a \a\t\xc0\x14\a`\x05\x05`\a\x14\xfe\xd0\a\t\t\a\x010\x00\x00\x00\x00\x04\xff\xfd\xff\xe0\x01\xb1\x01\xa8\x00\x15\x005\x00J\x00R\x00\x0072\x16\x0f\x01\x06\"/\x01&6;\x01\x1146;\x012\x16\x15\x11\x052\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015#\"&54?\x016;\x012\x16\x1d\x01\x036\x16\x1d\x01\x14\x06\a\x06&/\x01&767.\x017>\x01\x16264&\"\x06\x14\xb0\v\b\bP\x04\x0e\x04P\b\b\v0\t\a \a\t\x01\x10\a\t\t\a`\a\t\t\a\x10\x10\a\t\x02\x10\x04\n0\a\t6(>*,\x06\r\x02\n\x05\r\f\t$+\n\x05!\x1f\x10\f\f\x10\f`\x14\a`\x05\x05`\a\x14\x010\a\t\t\a\xfe\xd0@\t\a \a\t\t\a \a\t@\t\a\x04\x03 \t\t\ap\x01}\v1'\v3>\x13\x02\x06\x06\x14\x0f\x05\x05\b\x04=&\x12\x1f\\\f\x10\f\f\x10\x00\x00\x00\x00\x04\xff\xfd\xff\xe0\x01\xb1\x01\xa8\x00\x15\x005\x00J\x00R\x00\x00\x13\x17\x16\x06+\x01\x11\x14\x06+\x01\"&5\x11#\"&?\x0162\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x015#\"&54?\x016;\x012\x16\x1d\x01\x036\x16\x1d\x01\x14\x06\a\x06&/\x01&767.\x017>\x01\x16264&\"\x06\x14kP\b\b\v0\t\a \a\t0\v\b\bP\x04\x0e\x01)\a\t\t\a`\a\t\t\a\x10\x10\a\t\x02\x10\x04\n0\a\t6(>*,\x06\r\x02\n\x05\r\f\t$+\n\x05!\x1f\x10\f\f\x10\f\x01\x9b`\a\x14\xfe\xd0\a\t\t\a\x010\x14\a`\x05\xfe\x80\t\a \a\t\t\a \a\t@\t\a\x04\x03 \t\t\ap\x01}\v1'\v3>\x13\x02\x06\x06\x14\x0f\x05\x05\b\x04=&\x12\x1f\\\f\x10\f\f\x10\x00\x00\x00\x06\x00\x00\xff\xc0\x02A\x01\xc0\x00\x17\x00\x1f\x00'\x00D\x00G\x00\\\x00\x00%\"&=\x0146;\x012\x16\x17\x14\x15\x14\a\x1e\x01\x15\x14\x15\x0e\x01#'\x153264&#\a\x153264&#'\x17\x16\x15\x14\x06+\x01\"/\x01#\a\x06+\x01\"&54?\x01>\x02;\x012\x16\a3'\x05\x16\x14\x0f\x01\x06\"/\x01&4?\x0162\x1f\x01762\x17\x01\x10\a\t\t\aK 2\x03\t\n\x0f\x022!3(\n\x0e\x0e\n(8\n\x0e\x0e\n\xd5D\x01\t\a\x19\f\x03\fX\f\x03\f\x19\a\t\x01D\x02\t\r\x06\x1a\t\x12?.\x17\x01\xcb\x05\x05\xd0\x04\x0e\x04p\x05\x05-\x05\r\x057\x98\x04\r\x05\xc0\t\a\xe0\a\t*\x1f\x03\x04\x14\x12\t#\x0e\x02\x03 +\xc80\x0e\x14\x0e`0\x0e\x14\x0e\x82\xd6\x02\x02\a\t\f$$\f\t\a\x02\x02\xd6\x06\n\x06\r\x83E\xc9\x05\r\x05\xd0\x05\x05p\x05\r\x05-\x05\x058\x98\x05\x05\x00\x03\x00\x00\x00 \x02\x80\x01@\x00\x16\x00\x1e\x00&\x00\x00\x012\x16\x14\x06#!\"&462\x16\x15\x14\x06\a3.\x01546\x04\x14\x16264&\"\x04264&\"\x06\x14\x01\xf0\x037632\x01\xeaG\xc6G';\x12\x13\x0f(\x0f\x13\x12;\xb6\a\x01\x03\x0e4Bt\x88tB4\x0e\x03\x01\t\a\x06\x05\x02\b\x1d!47K'6d?7\x11\x04\x05\x06\x05\x97\x17\x17\xe9\x0e\f\f\x0e\xc4\x04\t\x03\x03\a\x1eD5++5D\x1e\a\x03\x03\a\t\x04\x02\a\x13\x11\x15\x0f\n\x13\x18\x1f\r\x04\x04\x00\x00\x00\x02\xff\xfb\xff\xe0\x02\x80\x01\x81\x00\x0f\x00-\x00\x00%\x17\x1e\x033!\"'&7>\x0132\x05\x1e\x03\x15\x14\x06#\".\x03/\x01&#\"\a7>\x01?\x01632\x16\x17\x01\x05b!-9<&\xfd\xde\x16\x0e\x0e\x05\x0fZ:5\x01\x16)=\x1d\x0e\x1c\x14\x1d1$+\x1e\x19b6@\x04\x10\x06\x03\x1d\x13\xbf\a\x06\x17%\x03\x9dU\x1c!\x1f\f\x15\x15\x1aFV\x11\x03 ,$\f\x14\x1c\t\x0e\x1c\x17\x17T+\x02A\x13!\x04)\x01\x1f\x16\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\t\x00\x10\x00\x17\x00\x00=\x01!\x15\x14\x06+\x01\"&\x13\x15#546;\x012\x16\x1d\x01#5\x01\x80^B@B^\xb0\xb0^B@B^\xb0`\x80\x80B^^\x01\xa2\xc0 B^^B \xc0\x00\x00\x00\x00\x04\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00\x00\x122\x16\x14\x06\"&4\x16264&\"\x06\x14\x022\x16\x14\x06\"&4\x16264&\"\x06\x14\xd5V==V=^\x14\x0e\x0e\x14\x0eOΑ\x91Α\xc3jKKjK\x01(=V==VC\x0e\x14\x0e\x0e\x14\x01\x02\x91Α\x91\xce\xe7KjKKj\x00\x00\x00\x05\x00\x00\xff\xe0\x02\x80\x01\xc0\x00\a\x00\"\x00*\x00:\x00D\x00\x00$2\x16\x14\x06\"&4\x172\x16\x1d\x01\x14\x06#!\x14\x06\"&5#\"&5\x11463!2\x16\x1d\x01\x04264&\"\x06\x14754&+\x01\"\x06\x1d\x01\x14\x16;\x0126\x1754&+\x01\"\x06\x1d\x01\x01\x99\x0e\t\t\x0e\t\xe0\a\t\t\a\xfe\xb08P8 \x1a&&\x1a\x01`B^\xfel(\x1c\x1c(\x1cp\x13\r\x80\r\x13\x13\r\x80\r\x13\xc0\x13\r@\r\x13\xf0\t\x0e\t\t\x0eg\t\a \a\t(88(&\x1a\x01\x00\x1a&^B\xa0p\x1c(\x1c\x1c(\xd4@\r\x13\x13\r@\r\x13\x13s\xc0\r\x13\x13\r\xc0\x00\x00\x00\x00\b\x00\x00\xff\xe0\x02\x80\x01\x80\x00\x1a\x00#\x00-\x006\x00>\x00F\x00N\x00V\x00\x00%2\x16\x1d\x01\x14\x06#!.\x01\"\x06\a#\"&5\x11463!2\x16\x1d\x01%54+\x01\"\x1d\x016754+\x01\"\x1d\x0162\x1754+\x01\"\x1d\x01\x16\x1754+\x01\"\x1d\x01354+\x01\"\x1d\x01 2\x16\x14\x06\"&4\x16264&\"\x06\x14\x02p\a\t\t\a\xfe\xae\x06>T>\x062\a\t\t\a\x02\x00\a\t\xfe@\b\x10\b\x0fq\b\x10\b\f\bl\b\x10\b\x11o\b\x10\b\x80\b\x10\b\xfe\xcfB//B/C\x1a\x13\x13\x1a\x13\x80\t\a \a\t)77)\t\a\x01 \a\t\t\a\xf0Ll\b\b\x80\f\x1bY\b\bY\x01(\x80\b\bl\bD\xb8\b\b\xb8\xb8\b\b\xb8/B//BA\x13\x1a\x13\x13\x1a\x00\x00\x00\x1c\x01V\x00\x01\x00\x00\x00\x00\x00\x00\x00\x1a\x006\x00\x01\x00\x00\x00\x00\x00\x01\x00\x19\x00\x85\x00\x01\x00\x00\x00\x00\x00\x02\x00\x05\x00\xab\x00\x01\x00\x00\x00\x00\x00\x03\x00 \x00\xf3\x00\x01\x00\x00\x00\x00\x00\x04\x00\x19\x01H\x00\x01\x00\x00\x00\x00\x00\x05\x00&\x01\xb0\x00\x01\x00\x00\x00\x00\x00\x06\x00\x16\x02\x05\x00\x01\x00\x00\x00\x00\x00\n\x00,\x02v\x00\x01\x00\x00\x00\x00\x00\v\x00\x17\x02\xd3\x00\x01\x00\x00\x00\x00\x00\x10\x00\x13\x03\x13\x00\x01\x00\x00\x00\x00\x00\x11\x00\x05\x033\x00\x01\x00\x00\x00\x00\x00\x12\x00\x19\x03m\x00\x01\x00\x00\x00\x00\x00\x15\x00\x13\x03\xaf\x00\x01\x00\x00\x00\x00\x00\x16\x00\x05\x03\xcf\x00\x03\x00\x01\x04\t\x00\x00\x004\x00\x00\x00\x03\x00\x01\x04\t\x00\x01\x002\x00Q\x00\x03\x00\x01\x04\t\x00\x02\x00\n\x00\x9f\x00\x03\x00\x01\x04\t\x00\x03\x00@\x00\xb1\x00\x03\x00\x01\x04\t\x00\x04\x002\x01\x14\x00\x03\x00\x01\x04\t\x00\x05\x00L\x01b\x00\x03\x00\x01\x04\t\x00\x06\x00,\x01\xd7\x00\x03\x00\x01\x04\t\x00\n\x00X\x02\x1c\x00\x03\x00\x01\x04\t\x00\v\x00.\x02\xa3\x00\x03\x00\x01\x04\t\x00\x10\x00&\x02\xeb\x00\x03\x00\x01\x04\t\x00\x11\x00\n\x03'\x00\x03\x00\x01\x04\t\x00\x12\x002\x039\x00\x03\x00\x01\x04\t\x00\x15\x00&\x03\x87\x00\x03\x00\x01\x04\t\x00\x16\x00\n\x03\xc3\x00C\x00o\x00p\x00y\x00r\x00i\x00g\x00h\x00t\x00 \x00(\x00c\x00)\x00 \x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00\x00Copyright (c) Font Awesome\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00 \x00S\x00o\x00l\x00i\x00d\x00\x00Font Awesome 5 Free Solid\x00\x00S\x00o\x00l\x00i\x00d\x00\x00Solid\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00 \x00S\x00o\x00l\x00i\x00d\x00-\x005\x00.\x001\x002\x00.\x000\x00\x00Font Awesome 5 Free Solid-5.12.0\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00 \x00S\x00o\x00l\x00i\x00d\x00\x00Font Awesome 5 Free Solid\x00\x003\x003\x000\x00.\x007\x005\x002\x00 \x00(\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x00v\x00e\x00r\x00s\x00i\x00o\x00n\x00:\x00 \x005\x00.\x001\x002\x00.\x000\x00)\x00\x00330.752 (Font Awesome version: 5.12.0)\x00\x00F\x00o\x00n\x00t\x00A\x00w\x00e\x00s\x00o\x00m\x00e\x005\x00F\x00r\x00e\x00e\x00-\x00S\x00o\x00l\x00i\x00d\x00\x00FontAwesome5Free-Solid\x00\x00T\x00h\x00e\x00 \x00w\x00e\x00b\x00'\x00s\x00 \x00m\x00o\x00s\x00t\x00 \x00p\x00o\x00p\x00u\x00l\x00a\x00r\x00 \x00i\x00c\x00o\x00n\x00 \x00s\x00e\x00t\x00 \x00a\x00n\x00d\x00 \x00t\x00o\x00o\x00l\x00k\x00i\x00t\x00.\x00\x00The web's most popular icon set and toolkit.\x00\x00h\x00t\x00t\x00p\x00s\x00:\x00/\x00/\x00f\x00o\x00n\x00t\x00a\x00w\x00e\x00s\x00o\x00m\x00e\x00.\x00c\x00o\x00m\x00\x00https://fontawesome.com\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00\x00Font Awesome 5 Free\x00\x00S\x00o\x00l\x00i\x00d\x00\x00Solid\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00 \x00S\x00o\x00l\x00i\x00d\x00\x00Font Awesome 5 Free Solid\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00\x00Font Awesome 5 Free\x00\x00S\x00o\x00l\x00i\x00d\x00\x00Solid\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\xff\xdb\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xc7\x00\x00\x00\x01\x00\x02\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01\a\x01\b\x01\t\x01\n\x01\v\x01\f\x01\r\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01!\x01\"\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01+\x01,\x01-\x01.\x01/\x010\x011\x012\x013\x014\x015\x016\x017\x018\x019\x01:\x01;\x01<\x01=\x01>\x01?\x01@\x01A\x01B\x01C\x01D\x01E\x01F\x01G\x01H\x01I\x01J\x01K\x01L\x01M\x01N\x01O\x01P\x01Q\x01R\x01S\x01T\x01U\x00\x0e\x00\xef\x00\r\x01V\x01W\x01X\x01Y\x01Z\x01[\x01\\\x01]\x01^\x01_\x01`\x01a\x01b\x01c\x01d\x01e\x01f\x01g\x01h\x01i\x01j\x01k\x01l\x01m\x01n\x01o\x01p\x01q\x01r\x01s\x01t\x01u\x01v\x01w\x01x\x01y\x01z\x01{\x01|\x01}\x01~\x01\u007f\x01\x80\x01\x81\x01\x82\x01\x83\x01\x84\x01\x85\x01\x86\x01\x87\x01\x88\x01\x89\x01\x8a\x01\x8b\x01\x8c\x01\x8d\x01\x8e\x01\x8f\x01\x90\x01\x91\x01\x92\x01\x93\x01\x94\x01\x95\x01\x96\x01\x97\x01\x98\x01\x99\x01\x9a\x01\x9b\x01\x9c\x01\x9d\x01\x9e\x01\x9f\x01\xa0\x01\xa1\x01\xa2\x01\xa3\x01\xa4\x01\xa5\x01\xa6\x01\xa7\x01\xa8\x01\xa9\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xae\x01\xaf\x01\xb0\x01\xb1\x01\xb2\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xb8\x01\xb9\x01\xba\x01\xbb\x01\xbc\x01\xbd\x01\xbe\x01\xbf\x01\xc0\x01\xc1\x01\xc2\x01\xc3\x01\xc4\x01\xc5\x01\xc6\x01\xc7\x01\xc8\x01\xc9\x01\xca\x01\xcb\x01\xcc\x01\xcd\x01\xce\x01\xcf\x01\xd0\x01\xd1\x01\xd2\x00\"\x01\xd3\x01\xd4\x01\xd5\x01\xd6\x01\xd7\x01\xd8\x01\xd9\x01\xda\x01\xdb\x01\xdc\x01\xdd\x01\xde\x01\xdf\x01\xe0\x01\xe1\x01\xe2\x01\xe3\x01\xe4\x01\xe5\x01\xe6\x01\xe7\x01\xe8\x01\xe9\x01\xea\x01\xeb\x01\xec\x01\xed\x01\xee\x01\xef\x01\xf0\x01\xf1\x01\xf2\x01\xf3\x01\xf4\x01\xf5\x01\xf6\x01\xf7\x01\xf8\x01\xf9\x01\xfa\x01\xfb\x01\xfc\x01\xfd\x01\xfe\x01\xff\x02\x00\x02\x01\x02\x02\x02\x03\x02\x04\x02\x05\x02\x06\x02\a\x02\b\x02\t\x02\n\x02\v\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\"\x02#\x02$\x02%\x02&\x02'\x02(\x02)\x00\x88\x02*\x02+\x02,\x02-\x02.\x02/\x020\x021\x022\x023\x024\x025\x026\x00\x8b\x00#\x027\x028\x029\x02:\x02;\x02<\x02=\x02>\x02?\x02@\x02A\x02B\x02C\x02D\x02E\x02F\x02G\x02H\x02I\x02J\x02K\x02L\x02M\x02N\x02O\x02P\x02Q\x02R\x02S\x02T\x02U\x02V\x02W\x02X\x02Y\x02Z\x02[\x02\\\x02]\x02^\x02_\x02`\x02a\x02b\x02c\x02d\x02e\x02f\x02g\x02h\x02i\x02j\x02k\x02l\x02m\x02n\x02o\x02p\x02q\x02r\x02s\x00\x8c\x00\x8a\x02t\x02u\x02v\x02w\x02x\x02y\x02z\x02{\x02|\x02}\x02~\x02\u007f\x02\x80\x02\x81\x02\x82\x00\b\x02\x83\x02\x84\x02\x85\x02\x86\x02\x87\x02\x88\x02\x89\x02\x8a\x02\x8b\x02\x8c\x02\x8d\x02\x8e\x02\x8f\x02\x90\x02\x91\x02\x92\x02\x93\x02\x94\x02\x95\x02\x96\x02\x97\x02\x98\x02\x99\x02\x9a\x02\x9b\x02\x9c\x02\x9d\x02\x9e\x02\x9f\x02\xa0\x02\xa1\x02\xa2\x02\xa3\x02\xa4\x02\xa5\x02\xa6\x02\xa7\x02\xa8\x02\xa9\x02\xaa\x02\xab\x02\xac\x02\xad\x02\xae\x02\xaf\x02\xb0\x02\xb1\x02\xb2\x02\xb3\x02\xb4\x02\xb5\x02\xb6\x02\xb7\x02\xb8\x02\xb9\x02\xba\x02\xbb\x02\xbc\x02\xbd\x02\xbe\x02\xbf\x02\xc0\x02\xc1\x02\xc2\x02\xc3\x02\xc4\x02\xc5\x02\xc6\x02\xc7\x02\xc8\x02\xc9\x02\xca\x02\xcb\x02\xcc\x02\xcd\x02\xce\x02\xcf\x02\xd0\x02\xd1\x02\xd2\x02\xd3\x02\xd4\x02\xd5\x02\xd6\x02\xd7\x02\xd8\x02\xd9\x02\xda\x02\xdb\x02\xdc\x02\xdd\x02\xde\x02\xdf\x02\xe0\x02\xe1\x02\xe2\x02\xe3\x02\xe4\x02\xe5\x02\xe6\x02\xe7\x02\xe8\x02\xe9\x02\xea\x02\xeb\x02\xec\x02\xed\x02\xee\x02\xef\x02\xf0\x02\xf1\x02\xf2\x02\xf3\x02\xf4\x02\xf5\x02\xf6\x02\xf7\x02\xf8\x02\xf9\x02\xfa\x02\xfb\x02\xfc\x02\xfd\x02\xfe\x02\xff\x03\x00\x03\x01\x03\x02\x03\x03\x03\x04\x03\x05\x03\x06\x03\a\x03\b\x03\t\x03\n\x03\v\x03\f\x03\r\x03\x0e\x03\x0f\x03\x10\x03\x11\x03\x12\x03\x13\x03\x14\x03\x15\x03\x16\x03\x17\x03\x18\x03\x19\x03\x1a\x03\x1b\x03\x1c\x03\x1d\x03\x1e\x03\x1f\x03 \x03!\x03\"\x03#\x03$\x03%\x03&\x03'\x03(\x03)\x03*\x03+\x03,\x03-\x03.\x03/\x030\x031\x032\x033\x034\x035\x036\x037\x038\x039\x03:\x03;\x03<\x03=\x03>\x03?\x03@\x03A\x03B\x03C\x03D\x00\xb8\x03E\x03F\x03G\x03H\x03I\x03J\x03K\x03L\x03M\x03N\x00\x92\x03O\x03P\x03Q\x03R\x03S\x03T\x03U\x03V\x03W\x03X\x03Y\x03Z\x03[\x03\\\x03]\x03^\x03_\x03`\x03a\x03b\x03c\x03d\x03e\x03f\x03g\x03h\x03i\x03j\x03k\x03l\x03m\x03n\x03o\x03p\x03q\x03r\x03s\x03t\x03u\x03v\x03w\x03x\x03y\x03z\x03{\x03|\x03}\x03~\x03\u007f\x03\x80\x03\x81\x03\x82\x03\x83\x03\x84\x03\x85\x03\x86\x03\x87\x03\x88\x03\x89\x03\x8a\x03\x8b\x03\x8c\x03\x8d\x03\x8e\x03\x8f\x03\x90\x03\x91\x03\x92\x03\x93\x03\x94\x03\x95\x03\x96\x03\x97\x03\x98\x03\x99\x03\x9a\x03\x9b\x03\x9c\x03\x9d\x03\x9e\x03\x9f\x03\xa0\x03\xa1\x03\xa2\x03\xa3\x03\xa4\x03\xa5\x03\xa6\x03\xa7\x03\xa8\x03\xa9\x03\xaa\x03\xab\x03\xac\x03\xad\x03\xae\x03\xaf\x03\xb0\x03\xb1\x03\xb2\x03\xb3\x03\xb4\x03\xb5\x03\xb6\x03\xb7\x03\xb8\x03\xb9\x03\xba\x03\xbb\x03\xbc\x03\xbd\x03\xbe\x03\xbf\x03\xc0\x03\xc1\x03\xc2\x03\xc3\x03\xc4\x03\xc5\x03\xc6\x03\xc7\x03\xc8\x03\xc9\x03\xca\x03\xcb\x03\xcc\x03\xcd\x03\xce\x03\xcf\x03\xd0\x03\xd1\x03\xd2\x03\xd3\x03\xd4\x03\xd5\x03\xd6\x03\xd7\x03\xd8\x03\xd9\x03\xda\x03\xdb\x03\xdc\x03\xdd\x03\xde\x03\xdf\x03\xe0\x03\xe1\x03\xe2\x03\xe3\x03\xe4\x03\xe5\x03\xe6\x03\xe7\x03\xe8\x03\xe9\x03\xea\x03\xeb\x03\xec\x03\xed\x03\xee\x03\xef\x03\xf0\x03\xf1\x03\xf2\x03\xf3\x03\xf4\x03\xf5\x03\xf6\x03\xf7\x03\xf8\x03\xf9\x03\xfa\x03\xfb\x03\xfc\x03\xfd\x03\xfe\x03\xff\x04\x00\x04\x01\x04\x02\x04\x03\x04\x04\x04\x05\x04\x06\x04\a\x04\b\x04\t\x04\n\x04\v\x04\f\x04\r\x04\x0e\x04\x0f\x04\x10\x04\x11\x04\x12\x04\x13\x04\x14\x04\x15\x04\x16\x04\x17\x04\x18\x04\x19\x04\x1a\x04\x1b\x04\x1c\x04\x1d\x04\x1e\x04\x1f\x04 \x04!\x04\"\x04#\x04$\x04%\x04&\x04'\x04(\x04)\x04*\x04+\x04,\x04-\x04.\x04/\x040\x041\x042\x043\x044\x045\x046\x047\x048\x049\x04:\x04;\x04<\x04=\x04>\x04?\x04@\x00\xdd\x04A\x04B\x04C\x00\x12\x04D\x04E\x04F\x04G\x04H\x04I\x04J\x04K\x04L\x04M\x04N\x04O\x04P\x04Q\x04R\x04S\x04T\x04U\x04V\x04W\x04X\x04Y\x04Z\x04[\x04\\\x04]\x04^\x04_\x04`\x04a\x04b\x04c\x04d\x04e\x04f\x04g\x04h\x04i\x04j\x04k\x04l\x04m\x04n\x04o\x04p\x04q\x04r\x04s\x04t\x04u\x04v\x04w\x04x\x04y\x04z\x04{\x04|\x04}\x04~\x04\u007f\x04\x80\x04\x81\x04\x82\x04\x83\x04\x84\x04\x85\x04\x86\x04\x87\x04\x88\x04\x89\x04\x8a\x04\x8b\x04\x8c\x04\x8d\x04\x8e\x04\x8f\x04\x90\x04\x91\x04\x92\x04\x93\x04\x94\x04\x95\x04\x96\x04\x97\x04\x98\x04\x99\x04\x9a\x04\x9b\x04\x9c\x04\x9d\x04\x9e\x04\x9f\x04\xa0\x04\xa1\x04\xa2\x04\xa3\x04\xa4\x04\xa5\x04\xa6\x04\xa7\x04\xa8\x04\xa9\x04\xaa\x04\xab\x04\xac\x04\xad\x04\xae\x04\xaf\x04\xb0\x04\xb1\x04\xb2\x04\xb3\x04\xb4\x04\xb5\x04\xb6\x04\xb7\rglass-martini\x05music\x06search\x05heart\x04star\x04user\x04film\bth-large\x02th\ath-list\x05check\x05times\vsearch-plus\fsearch-minus\tpower-off\x06signal\x03cog\x04home\x05clock\x04road\bdownload\x05inbox\x04redo\x04sync\blist-alt\x04lock\x04flag\nheadphones\nvolume-off\vvolume-down\tvolume-up\x06qrcode\abarcode\x03tag\x04tags\x04book\bbookmark\x05print\x06camera\x04font\x04bold\x06italic\vtext-height\ntext-width\nalign-left\falign-center\valign-right\ralign-justify\x04list\aoutdent\x06indent\x05video\x05image\nmap-marker\x06adjust\x04tint\x04edit\rstep-backward\rfast-backward\bbackward\x04play\x05pause\x04stop\aforward\ffast-forward\fstep-forward\x05eject\fchevron-left\rchevron-right\vplus-circle\fminus-circle\ftimes-circle\fcheck-circle\x0fquestion-circle\vinfo-circle\ncrosshairs\x03ban\narrow-left\varrow-right\barrow-up\narrow-down\x05share\x06expand\bcompress\x12exclamation-circle\x04gift\x04leaf\x04fire\x03eye\teye-slash\x14exclamation-triangle\x05plane\fcalendar-alt\x06random\acomment\x06magnet\nchevron-up\fchevron-down\aretweet\rshopping-cart\x06folder\vfolder-open\tchart-bar\fcamera-retro\x03key\x04cogs\bcomments\tstar-half\tthumbtack\x06trophy\x06upload\x05lemon\x05phone\fphone-square\x06unlock\vcredit-card\x03rss\x03hdd\bbullhorn\vcertificate\x10hand-point-right\x0fhand-point-left\rhand-point-up\x0fhand-point-down\x11arrow-circle-left\x12arrow-circle-right\x0farrow-circle-up\x11arrow-circle-down\x05globe\x06wrench\x05tasks\x06filter\tbriefcase\narrows-alt\x05users\x04link\x05cloud\x05flask\x03cut\x04copy\tpaperclip\x04save\x06square\x04bars\alist-ul\alist-ol\rstrikethrough\tunderline\x05table\x05magic\x05truck\nmoney-bill\ncaret-down\bcaret-up\ncaret-left\vcaret-right\acolumns\x04sort\tsort-down\asort-up\benvelope\x04undo\x05gavel\x04bolt\asitemap\bumbrella\x05paste\tlightbulb\auser-md\vstethoscope\bsuitcase\x04bell\x06coffee\bhospital\tambulance\x06medkit\vfighter-jet\x04beer\bh-square\vplus-square\x11angle-double-left\x12angle-double-right\x0fangle-double-up\x11angle-double-down\nangle-left\vangle-right\bangle-up\nangle-down\adesktop\x06laptop\x06tablet\x06mobile\nquote-left\vquote-right\aspinner\x06circle\x05smile\x05frown\x03meh\agamepad\bkeyboard\x0eflag-checkered\bterminal\x04code\treply-all\x0elocation-arrow\x04crop\vcode-branch\x06unlink\x04info\vexclamation\vsuperscript\tsubscript\x06eraser\fpuzzle-piece\nmicrophone\x10microphone-slash\bcalendar\x11fire-extinguisher\x06rocket\x13chevron-circle-left\x14chevron-circle-right\x11chevron-circle-up\x13chevron-circle-down\x06anchor\nunlock-alt\bbullseye\nellipsis-h\nellipsis-v\nrss-square\vplay-circle\fminus-square\fcheck-square\npen-square\fshare-square\acompass\x11caret-square-down\x0fcaret-square-up\x12caret-square-right\teuro-sign\npound-sign\vdollar-sign\nrupee-sign\byen-sign\nruble-sign\bwon-sign\x04file\bfile-alt\x0fsort-alpha-down\rsort-alpha-up\x10sort-amount-down\x0esort-amount-up\x11sort-numeric-down\x0fsort-numeric-up\tthumbs-up\vthumbs-down\x06female\x04male\x03sun\x04moon\aarchive\x03bug\x11caret-square-left\ndot-circle\nwheelchair\tlira-sign\rspace-shuttle\x0fenvelope-square\nuniversity\x0egraduation-cap\blanguage\x03fax\bbuilding\x05child\x03paw\x04cube\x05cubes\arecycle\x03car\x04taxi\x04tree\bdatabase\bfile-pdf\tfile-word\nfile-excel\x0ffile-powerpoint\nfile-image\ffile-archive\nfile-audio\nfile-video\tfile-code\tlife-ring\fcircle-notch\vpaper-plane\ahistory\aheading\tsliders-h\tshare-alt\x10share-alt-square\x04bomb\x06futbol\x03tty\nbinoculars\x04plug\tnewspaper\x04wifi\ncalculator\nbell-slash\x05trash\veye-dropper\vpaint-brush\rbirthday-cake\nchart-area\tchart-pie\nchart-line\ntoggle-off\ttoggle-on\abicycle\x03bus\x11closed-captioning\vshekel-sign\tcart-plus\x0fcart-arrow-down\x04ship\vuser-secret\nmotorcycle\vstreet-view\theartbeat\x05venus\x04mars\amercury\vtransgender\x0ftransgender-alt\fvenus-double\vmars-double\nvenus-mars\vmars-stroke\rmars-stroke-v\rmars-stroke-h\x06neuter\ngenderless\x06server\tuser-plus\nuser-times\x03bed\x05train\x06subway\fbattery-full\x16battery-three-quarters\fbattery-half\x0fbattery-quarter\rbattery-empty\rmouse-pointer\bi-cursor\fobject-group\x0eobject-ungroup\vsticky-note\x05clone\rbalance-scale\x0fhourglass-start\x0ehourglass-half\rhourglass-end\thourglass\thand-rock\nhand-paper\rhand-scissors\vhand-lizard\nhand-spock\fhand-pointer\nhand-peace\x02tv\rcalendar-plus\x0ecalendar-minus\x0ecalendar-times\x0ecalendar-check\bindustry\amap-pin\tmap-signs\x03map\vcomment-alt\fpause-circle\vstop-circle\fshopping-bag\x0fshopping-basket\ahashtag\x10universal-access\x05blind\x11audio-description\fphone-volume\abraille\x1bassistive-listening-systems#american-sign-language-interpreting\x04deaf\rsign-language\nlow-vision\thandshake\renvelope-open\faddress-book\faddress-card\vuser-circle\bid-badge\aid-card\x10thermometer-full\x1athermometer-three-quarters\x10thermometer-half\x13thermometer-quarter\x11thermometer-empty\x06shower\x04bath\apodcast\x0fwindow-maximize\x0fwindow-minimize\x0ewindow-restore\tmicrochip\tsnowflake\rutensil-spoon\butensils\bundo-alt\ttrash-alt\bsync-alt\tstopwatch\fsign-out-alt\vsign-in-alt\bredo-alt\x03poo\x06images\npencil-alt\x03pen\apen-alt\x13long-arrow-alt-down\x13long-arrow-alt-left\x14long-arrow-alt-right\x11long-arrow-alt-up\x11expand-arrows-alt\tclipboard\farrows-alt-h\farrows-alt-v\x15arrow-alt-circle-down\x15arrow-alt-circle-left\x16arrow-alt-circle-right\x13arrow-alt-circle-up\x11external-link-alt\x18external-link-square-alt\fexchange-alt\x12cloud-download-alt\x10cloud-upload-alt\x03gem\x0elevel-down-alt\flevel-up-alt\tlock-open\x0emap-marker-alt\x0emicrophone-alt\nmobile-alt\x0emoney-bill-alt\vphone-slash\bportrait\x05reply\nshield-alt\ntablet-alt\x0etachometer-alt\nticket-alt\buser-alt\fwindow-close\fcompress-alt\nexpand-alt\rbaseball-ball\x0fbasketball-ball\fbowling-ball\x05chess\fchess-bishop\vchess-board\nchess-king\fchess-knight\nchess-pawn\vchess-queen\nchess-rook\bdumbbell\rfootball-ball\tgolf-ball\vhockey-puck\tquidditch\vsquare-full\ftable-tennis\x0fvolleyball-ball\tallergies\bband-aid\x03box\x05boxes\x11briefcase-medical\x04burn\bcapsules\x0fclipboard-check\x0eclipboard-list\tdiagnoses\x03dna\x05dolly\rdolly-flatbed\ffile-medical\x10file-medical-alt\tfirst-aid\fhospital-alt\x0fhospital-symbol\vid-card-alt\rnotes-medical\x06pallet\x05pills\x13prescription-bottle\x17prescription-bottle-alt\nprocedures\rshipping-fast\asmoking\asyringe\atablets\vthermometer\x04vial\x05vials\twarehouse\x06weight\x05x-ray\bbox-open\fcomment-dots\rcomment-slash\x05couch\x06donate\x04dove\fhand-holding\x12hand-holding-heart\x10hand-holding-usd\x05hands\rhands-helping\rparachute-box\fpeople-carry\npiggy-bank\x06ribbon\x05route\bseedling\x04sign\nsmile-wink\x04tape\rtruck-loading\ftruck-moving\vvideo-slash\nwine-glass\x0euser-alt-slash\x0euser-astronaut\nuser-check\nuser-clock\buser-cog\tuser-edit\fuser-friends\ruser-graduate\tuser-lock\nuser-minus\nuser-ninja\vuser-shield\nuser-slash\buser-tag\buser-tie\tusers-cog\x12balance-scale-left\x13balance-scale-right\ablender\tbook-open\x0fbroadcast-tower\x05broom\nchalkboard\x12chalkboard-teacher\x06church\x05coins\fcompact-disc\x04crow\x05crown\x04dice\tdice-five\tdice-four\bdice-one\bdice-six\ndice-three\bdice-two\vdoor-closed\tdoor-open\x06equals\afeather\x04frog\bgas-pump\aglasses\fgreater-than\x12greater-than-equal\nhelicopter\tkiwi-bird\tless-than\x0fless-than-equal\x06memory\x14microphone-alt-slash\x0fmoney-bill-wave\x13money-bill-wave-alt\vmoney-check\x0fmoney-check-alt\tnot-equal\apalette\aparking\npercentage\x0fproject-diagram\areceipt\x05robot\x05ruler\x0eruler-combined\x10ruler-horizontal\x0eruler-vertical\x06school\vscrewdriver\vshoe-prints\x05skull\vsmoking-ban\x05store\tstore-alt\x06stream\vstroopwafel\atoolbox\x06tshirt\awalking\x06wallet\x05angry\aarchway\x05atlas\x05award\tbackspace\fbezier-curve\x04bong\x05brush\abus-alt\bcannabis\fcheck-double\bcocktail\x0econcierge-bell\x06cookie\vcookie-bite\bcrop-alt\x12digital-tachograph\x05dizzy\x10drafting-compass\x04drum\rdrum-steelpan\vfeather-alt\rfile-contract\rfile-download\vfile-export\vfile-import\ffile-invoice\x13file-invoice-dollar\x11file-prescription\x0efile-signature\vfile-upload\x04fill\tfill-drip\vfingerprint\x04fish\aflushed\nfrown-open\x11glass-martini-alt\fglobe-africa\x0eglobe-americas\nglobe-asia\agrimace\x04grin\bgrin-alt\tgrin-beam\x0fgrin-beam-sweat\vgrin-hearts\vgrin-squint\x11grin-squint-tears\ngrin-stars\ngrin-tears\vgrin-tongue\x12grin-tongue-squint\x10grin-tongue-wink\tgrin-wink\x0fgrip-horizontal\rgrip-vertical\x0eheadphones-alt\aheadset\vhighlighter\ahot-tub\x05hotel\x05joint\x04kiss\tkiss-beam\x0fkiss-wink-heart\x05laugh\nlaugh-beam\flaugh-squint\nlaugh-wink\fluggage-cart\nmap-marked\x0emap-marked-alt\x06marker\x05medal\tmeh-blank\x10meh-rolling-eyes\bmonument\rmortar-pestle\fpaint-roller\bpassport\tpen-fancy\apen-nib\fpencil-ruler\rplane-arrival\x0fplane-departure\fprescription\asad-cry\bsad-tear\vshuttle-van\tsignature\nsmile-beam\vsolar-panel\x03spa\asplotch\tspray-can\x05stamp\rstar-half-alt\x10suitcase-rolling\bsurprise\nswatchbook\aswimmer\rswimming-pool\ntint-slash\x05tired\x05tooth\x0eumbrella-beach\rvector-square\x0eweight-hanging\x0ewine-glass-alt\rair-freshener\tapple-alt\x04atom\x04bone\vbook-reader\x05brain\acar-alt\vcar-battery\tcar-crash\bcar-side\x10charging-station\ndirections\fdraw-polygon\vlaptop-code\vlayer-group\nmicroscope\aoil-can\x04poop\x06shapes\fstar-of-life\x05teeth\nteeth-open\rtheater-masks\rtraffic-light\rtruck-monster\ftruck-pickup\x02ad\x04ankh\x05bible\rbusiness-time\x04city\x0ecomment-dollar\x0fcomments-dollar\x05cross\fdharmachakra\x12envelope-open-text\ffolder-minus\vfolder-plus\rfunnel-dollar\agopuram\x05hamsa\x05bahai\x04jedi\x0ejournal-whills\x05kaaba\x06khanda\blandmark\tmail-bulk\amenorah\x06mosque\x02om\x0epastafarianism\x05peace\x10place-of-worship\x04poll\x06poll-h\x04pray\rpraying-hands\x05quran\rsearch-dollar\x0fsearch-location\x05socks\x0fsquare-root-alt\x11star-and-crescent\rstar-of-david\tsynagogue\x05torah\ntorii-gate\x06vihara\vvolume-mute\byin-yang\rblender-phone\tbook-dead\ncampground\x03cat\x05chair\ncloud-moon\tcloud-sun\bdice-d20\adice-d6\x03dog\x06dragon\x0edrumstick-bite\adungeon\bfile-csv\vfist-raised\x05ghost\x06hammer\bhanukiah\nhat-wizard\x06hiking\x05hippo\x05horse\fhouse-damage\ahryvnia\x04mask\bmountain\rnetwork-wired\x05otter\arunning\x06scroll\x10skull-crossbones\x06spider\ftoilet-paper\atractor\fuser-injured\fvr-cardboard\x04wind\vwine-bottle\x0ecloud-meatball\x0fcloud-moon-rain\ncloud-rain\x13cloud-showers-heavy\x0ecloud-sun-rain\bdemocrat\bflag-usa\x06meteor\fperson-booth\tpoo-storm\arainbow\nrepublican\x04smog\x10temperature-high\x0ftemperature-low\bvote-yea\x05water\x04baby\rbaby-carriage\tbiohazard\x04blog\fcalendar-day\rcalendar-week\ncandy-cane\x06carrot\rcash-register\x13compress-arrows-alt\bdumpster\rdumpster-fire\bethernet\x05gifts\fglass-cheers\rglass-whiskey\fglobe-europe\ngrip-lines\x13grip-lines-vertical\x06guitar\fheart-broken\vholly-berry\nhorse-head\aicicles\x05igloo\x06mitten\amug-hot\tradiation\rradiation-alt\brestroom\tsatellite\x0esatellite-dish\asd-card\bsim-card\askating\x06skiing\rskiing-nordic\x06sleigh\x03sms\fsnowboarding\asnowman\bsnowplow\x05tenge\x06toilet\x05tools\x04tram\bfire-alt\x05bacon\fbook-medical\vbread-slice\x06cheese\x0eclinic-medical\x0fcomment-medical\x06crutch\x03egg\thamburger\x12hand-middle-finger\bhard-hat\x06hotdog\tice-cream\x0elaptop-medical\x05pager\npepper-hot\vpizza-slice\rtrash-restore\x11trash-restore-alt\nuser-nurse\vwave-square\x06biking\nborder-all\vborder-none\fborder-style\x03fan\x05icons\tphone-alt\x10phone-square-alt\vphoto-video\rremove-format\x13sort-alpha-down-alt\x11sort-alpha-up-alt\x14sort-amount-down-alt\x12sort-amount-up-alt\x15sort-numeric-down-alt\x13sort-numeric-up-alt\vspell-check\tvoicemail\nhat-cowboy\x0fhat-cowboy-side\x05mouse\frecord-vinyl\acaravan\atrailer\x00\x00\x00\x00\x00\x00\x01\xff\xff\x00\x02\x00\x01\x00\x00\x00\f\x00\x00\x00\x16\x00\x00\x00\x02\x00\x01\x00\x03\x03\xc6\x00\x02\x00\x04\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\xd9k%\xf9\x00\x00\x00\x00\xda\x15\xc8\v\x00\x00\x00\x00\xda\x15\xc8\x11" var _Assets3937419623a4cdffaf5c05b0d497629e127d85b5 = "\n\n\n\n\nCreated by FontForge 20190801 at Tue Dec 10 16:09:21 2019\n By Robert Madole\nCopyright (c) Font Awesome\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n" var _Assetsb289e24e7683deca2454781b8d3914d88103d97a = "package gateway\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"html/template\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/gin-contrib/location\"\n\t\"github.com/gin-contrib/static\"\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/ipfs/go-cid\"\n\tlogging \"github.com/ipfs/go-log\"\n\tiface \"github.com/ipfs/interface-go-ipfs-core\"\n\tisd \"github.com/jbenet/go-is-domain\"\n\t\"github.com/libp2p/go-libp2p-core/peer\"\n\tma \"github.com/multiformats/go-multiaddr\"\n\tmbase \"github.com/multiformats/go-multibase\"\n\t\"github.com/rs/cors\"\n\tgincors \"github.com/rs/cors/wrapper/gin\"\n\tthreadsclient \"github.com/textileio/go-threads/api/client\"\n\t\"github.com/textileio/go-threads/broadcast\"\n\t\"github.com/textileio/go-threads/core/thread\"\n\ttutil \"github.com/textileio/go-threads/util\"\n\tbucketsclient \"github.com/textileio/textile/v2/api/bucketsd/client\"\n\t\"github.com/textileio/textile/v2/api/common\"\n\tmdb \"github.com/textileio/textile/v2/mongodb\"\n\t\"go.mongodb.org/mongo-driver/mongo\"\n\t\"google.golang.org/grpc\"\n)\n\nvar log = logging.Logger(\"gateway\")\n\nconst handlerTimeout = time.Minute\n\nfunc init() {\n\tgin.SetMode(gin.ReleaseMode)\n}\n\n// link is used for Unixfs directory templates.\ntype link struct {\n\tName string\n\tPath string\n\tSize string\n\tLinks string\n}\n\n// Gateway provides HTTP-based access to Textile.\ntype Gateway struct {\n\tserver *http.Server\n\taddr ma.Multiaddr\n\turl string\n\tsubdomains bool\n\tbucketsDomain string\n\n\tcollections *mdb.Collections\n\tapiSession string\n\tthreads *threadsclient.Client\n\tbuckets *bucketsclient.Client\n\thub bool\n\n\tipfs iface.CoreAPI\n\n\temailSessionBus *broadcast.Broadcaster\n}\n\n// Config defines the gateway configuration.\ntype Config struct {\n\tAddr ma.Multiaddr\n\tURL string\n\tSubdomains bool\n\tBucketsDomain string\n\tAPIAddr ma.Multiaddr\n\tAPISession string\n\tCollections *mdb.Collections\n\tIPFSClient iface.CoreAPI\n\tEmailSessionBus *broadcast.Broadcaster\n\tHub bool\n\tDebug bool\n}\n\n// NewGateway returns a new gateway.\nfunc NewGateway(conf Config) (*Gateway, error) {\n\tif conf.Debug {\n\t\tif err := tutil.SetLogLevels(map[string]logging.LogLevel{\n\t\t\t\"gateway\": logging.LevelDebug,\n\t\t}); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tapiTarget, err := tutil.TCPAddrFromMultiAddr(conf.APIAddr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\topts := []grpc.DialOption{\n\t\tgrpc.WithInsecure(),\n\t\tgrpc.WithPerRPCCredentials(common.Credentials{}),\n\t}\n\ttc, err := threadsclient.NewClient(apiTarget, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tbc, err := bucketsclient.NewClient(apiTarget, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &Gateway{\n\t\taddr: conf.Addr,\n\t\turl: conf.URL,\n\t\tsubdomains: conf.Subdomains,\n\t\tbucketsDomain: conf.BucketsDomain,\n\t\tcollections: conf.Collections,\n\t\tapiSession: conf.APISession,\n\t\tthreads: tc,\n\t\tbuckets: bc,\n\t\thub: conf.Hub,\n\t\tipfs: conf.IPFSClient,\n\t\temailSessionBus: conf.EmailSessionBus,\n\t}, nil\n}\n\n// Start the gateway.\nfunc (g *Gateway) Start() {\n\taddr, err := tutil.TCPAddrFromMultiAddr(g.addr)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\trouter := gin.Default()\n\n\ttemp, err := loadTemplate()\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\trouter.SetHTMLTemplate(temp)\n\n\trouter.Use(location.Default())\n\trouter.Use(static.Serve(\"\", &fileSystem{Assets}))\n\trouter.Use(serveBucket(&bucketFS{\n\t\tclient: g.buckets,\n\t\tkeys: g.collections.IPNSKeys,\n\t\tsession: g.apiSession,\n\t\thost: g.bucketsDomain,\n\t}))\n\trouter.Use(gincors.New(cors.Options{}))\n\n\trouter.GET(\"/health\", func(c *gin.Context) {\n\t\tc.Writer.WriteHeader(http.StatusNoContent)\n\t})\n\n\trouter.GET(\"/thread/:thread/:collection\", g.subdomainOptionHandler, g.collectionHandler)\n\trouter.GET(\"/thread/:thread/:collection/:id\", g.subdomainOptionHandler, g.instanceHandler)\n\trouter.GET(\"/thread/:thread/:collection/:id/*path\", g.subdomainOptionHandler, g.instanceHandler)\n\n\trouter.GET(\"/ipfs/:root\", g.subdomainOptionHandler, g.ipfsHandler)\n\trouter.GET(\"/ipfs/:root/*path\", g.subdomainOptionHandler, g.ipfsHandler)\n\trouter.GET(\"/ipns/:key\", g.subdomainOptionHandler, g.ipnsHandler)\n\trouter.GET(\"/ipns/:key/*path\", g.subdomainOptionHandler, g.ipnsHandler)\n\trouter.GET(\"/p2p/:key\", g.subdomainOptionHandler, g.p2pHandler)\n\trouter.GET(\"/ipld/:root\", g.subdomainOptionHandler, g.ipldHandler)\n\trouter.GET(\"/ipld/:root/*path\", g.subdomainOptionHandler, g.ipldHandler)\n\n\tif g.hub {\n\t\trouter.GET(\"/dashboard/:username\", g.dashboardHandler)\n\t\trouter.GET(\"/confirm/:secret\", g.confirmEmail)\n\t\trouter.GET(\"/consent/:invite\", g.consentInvite)\n\t}\n\n\trouter.NoRoute(g.subdomainHandler)\n\n\tg.server = &http.Server{\n\t\tAddr: addr,\n\t\tHandler: router,\n\t}\n\tgo func() {\n\t\tif err := g.server.ListenAndServe(); err != nil && err != http.ErrServerClosed {\n\t\t\tlog.Fatalf(\"gateway error: %s\", err)\n\t\t}\n\t\tlog.Info(\"gateway was shutdown\")\n\t}()\n\tlog.Infof(\"gateway listening at %s\", g.server.Addr)\n}\n\n// loadTemplate loads HTML templates.\nfunc loadTemplate() (*template.Template, error) {\n\tt := template.New(\"\")\n\tfor name, file := range Assets.Files {\n\t\tif file.IsDir() || !strings.HasSuffix(name, \".gohtml\") {\n\t\t\tcontinue\n\t\t}\n\t\th, err := ioutil.ReadAll(file)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tt, err = t.New(name).Parse(string(h))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn t, nil\n}\n\n// Addr returns the gateway's address.\nfunc (g *Gateway) Addr() string {\n\treturn g.server.Addr\n}\n\n// Stop the gateway.\nfunc (g *Gateway) Stop() error {\n\tctx, cancel := context.WithTimeout(context.Background(), time.Second)\n\tdefer cancel()\n\tif err := g.server.Shutdown(ctx); err != nil {\n\t\treturn err\n\t}\n\tif err := g.threads.Close(); err != nil {\n\t\treturn err\n\t}\n\tif err := g.buckets.Close(); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// subdomainOptionHandler redirects valid namespaces to subdomains if the option is enabled.\nfunc (g *Gateway) subdomainOptionHandler(c *gin.Context) {\n\tif !g.subdomains {\n\t\treturn\n\t}\n\tloc, ok := g.toSubdomainURL(c.Request)\n\tif !ok {\n\t\trender404(c)\n\t\treturn\n\t}\n\n\t// See security note https://github.com/ipfs/go-ipfs/blob/dbfa7bf2b216bad9bec1ff66b1f3814f4faac31e/core/corehttp/hostname.go#L105\n\tc.Request.Header.Set(\"Clear-Site-Data\", \"\\\"cookies\\\", \\\"storage\\\"\")\n\n\tc.Redirect(http.StatusPermanentRedirect, loc)\n}\n\n// dashboardHandler renders a dev or org dashboard.\nfunc (g *Gateway) dashboardHandler(c *gin.Context) {\n\trender404(c)\n}\n\n// confirmEmail verifies an emailed secret.\nfunc (g *Gateway) confirmEmail(c *gin.Context) {\n\tif err := g.emailSessionBus.Send(c.Param(\"secret\")); err != nil {\n\t\trenderError(c, http.StatusInternalServerError, err)\n\t\treturn\n\t}\n\tc.HTML(http.StatusOK, \"/public/html/confirm.gohtml\", nil)\n}\n\n// consentInvite marks an invite as accepted.\n// If the associated email belongs to an existing user, they will be added to the org.\nfunc (g *Gateway) consentInvite(c *gin.Context) {\n\tctx, cancel := context.WithTimeout(context.Background(), handlerTimeout)\n\tdefer cancel()\n\tinvite, err := g.collections.Invites.Get(ctx, c.Param(\"invite\"))\n\tif err != nil {\n\t\tif errors.Is(err, mongo.ErrNoDocuments) {\n\t\t\trender404(c)\n\t\t} else {\n\t\t\trenderError(c, http.StatusInternalServerError, err)\n\t\t}\n\t\treturn\n\t}\n\tif !invite.Accepted {\n\t\tif time.Now().After(invite.ExpiresAt) {\n\t\t\tif err := g.collections.Invites.Delete(ctx, invite.Token); err != nil {\n\t\t\t\trenderError(c, http.StatusInternalServerError, err)\n\t\t\t} else {\n\t\t\t\trenderError(c, http.StatusPreconditionFailed, fmt.Errorf(\"this invitation has expired\"))\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t\tdev, err := g.collections.Accounts.GetByUsernameOrEmail(ctx, invite.EmailTo)\n\t\tif err != nil {\n\t\t\tif errors.Is(err, mongo.ErrNoDocuments) {\n\t\t\t\tif err := g.collections.Invites.Accept(ctx, invite.Token); err != nil {\n\t\t\t\t\trenderError(c, http.StatusInternalServerError, err)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\trenderError(c, http.StatusInternalServerError, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tif dev != nil {\n\t\t\tif err := g.collections.Accounts.AddMember(ctx, invite.Org, mdb.Member{\n\t\t\t\tKey: dev.Key,\n\t\t\t\tUsername: dev.Username,\n\t\t\t\tRole: mdb.OrgMember,\n\t\t\t}); err != nil {\n\t\t\t\tif err == mongo.ErrNoDocuments {\n\t\t\t\t\tif err := g.collections.Invites.Delete(ctx, invite.Token); err != nil {\n\t\t\t\t\t\trenderError(c, http.StatusInternalServerError, err)\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\trenderError(c, http.StatusNotFound, fmt.Errorf(\"org not found\"))\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\trenderError(c, http.StatusInternalServerError, err)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif err = g.collections.Invites.Delete(ctx, invite.Token); err != nil {\n\t\t\t\trenderError(c, http.StatusInternalServerError, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\tc.HTML(http.StatusOK, \"/public/html/consent.gohtml\", gin.H{\n\t\t\"Org\": invite.Org,\n\t\t\"Email\": invite.EmailTo,\n\t})\n}\n\n// render404 renders the 404 template.\nfunc render404(c *gin.Context) {\n\tc.HTML(http.StatusNotFound, \"/public/html/404.gohtml\", nil)\n}\n\n// renderError renders the error template.\nfunc renderError(c *gin.Context, code int, err error) {\n\tc.HTML(code, \"/public/html/error.gohtml\", gin.H{\n\t\t\"Code\": code,\n\t\t\"Error\": formatError(err),\n\t})\n}\n\n// formatError formats a go error for browser display.\nfunc formatError(err error) string {\n\twords := strings.SplitN(err.Error(), \" \", 2)\n\twords[0] = strings.Title(words[0])\n\treturn strings.Join(words, \" \") + \".\"\n}\n\n// subdomainHandler handles requests by parsing the request subdomain.\nfunc (g *Gateway) subdomainHandler(c *gin.Context) {\n\tc.Status(200)\n\n\tparts := strings.Split(c.Request.Host, \".\")\n\tkey := parts[0]\n\n\t// Render buckets if the domain matches\n\tif g.bucketsDomain != \"\" && strings.HasSuffix(c.Request.Host, g.bucketsDomain) {\n\t\tg.renderWWWBucket(c, key)\n\t\treturn\n\t}\n\n\tif len(parts) < 3 {\n\t\trender404(c)\n\t\treturn\n\t}\n\tns := parts[1]\n\tif !isSubdomainNamespace(ns) {\n\t\trender404(c)\n\t\treturn\n\t}\n\tswitch ns {\n\tcase \"ipfs\":\n\t\tg.renderIPFSPath(c, \"ipfs/\"+key, \"/ipfs/\"+key+c.Request.URL.Path)\n\tcase \"ipns\":\n\t\tg.renderIPNSKey(c, key, c.Request.URL.Path)\n\tcase \"p2p\":\n\t\tg.renderP2PKey(c, key)\n\tcase \"ipld\":\n\t\tg.renderIPLDPath(c, key+c.Request.URL.Path)\n\tcase \"thread\":\n\t\tthreadID, err := thread.Decode(key)\n\t\tif err != nil {\n\t\t\trenderError(c, http.StatusBadRequest, fmt.Errorf(\"invalid thread ID\"))\n\t\t\treturn\n\t\t}\n\t\tparts := strings.SplitN(strings.TrimSuffix(c.Request.URL.Path, \"/\"), \"/\", 4)\n\t\tswitch len(parts) {\n\t\tcase 1:\n\t\t\t// @todo: Render something at the thread root\n\t\t\trender404(c)\n\t\tcase 2:\n\t\t\tif parts[1] != \"\" {\n\t\t\t\tg.renderCollection(c, threadID, parts[1])\n\t\t\t} else {\n\t\t\t\trender404(c)\n\t\t\t}\n\t\tcase 3:\n\t\t\tg.renderInstance(c, threadID, parts[1], parts[2], \"\")\n\t\tcase 4:\n\t\t\tg.renderInstance(c, threadID, parts[1], parts[2], parts[3])\n\t\tdefault:\n\t\t\trender404(c)\n\t\t}\n\tdefault:\n\t\trender404(c)\n\t}\n}\n\n// Modified from https://github.com/ipfs/go-ipfs/blob/dbfa7bf2b216bad9bec1ff66b1f3814f4faac31e/core/corehttp/hostname.go#L251\nfunc isSubdomainNamespace(ns string) bool {\n\tswitch ns {\n\tcase \"ipfs\", \"ipns\", \"p2p\", \"ipld\", \"thread\":\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Copied from https://github.com/ipfs/go-ipfs/blob/dbfa7bf2b216bad9bec1ff66b1f3814f4faac31e/core/corehttp/hostname.go#L260\nfunc isPeerIDNamespace(ns string) bool {\n\tswitch ns {\n\tcase \"ipns\", \"p2p\":\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Converts a hostname/path to a subdomain-based URL, if applicable.\n// Modified from https://github.com/ipfs/go-ipfs/blob/dbfa7bf2b216bad9bec1ff66b1f3814f4faac31e/core/corehttp/hostname.go#L270\nfunc (g *Gateway) toSubdomainURL(r *http.Request) (redirURL string, ok bool) {\n\tvar ns, rootID, rest string\n\n\tquery := r.URL.RawQuery\n\tparts := strings.SplitN(r.URL.Path, \"/\", 4)\n\tsafeRedirectURL := func(in string) (out string, ok bool) {\n\t\tsafeURI, err := url.ParseRequestURI(in)\n\t\tif err != nil {\n\t\t\treturn \"\", false\n\t\t}\n\t\treturn safeURI.String(), true\n\t}\n\n\tswitch len(parts) {\n\tcase 4:\n\t\trest = parts[3]\n\t\tfallthrough\n\tcase 3:\n\t\tns = parts[1]\n\t\trootID = parts[2]\n\tdefault:\n\t\treturn \"\", false\n\t}\n\n\tif !isSubdomainNamespace(ns) {\n\t\treturn \"\", false\n\t}\n\n\t// add prefix if query is present\n\tif query != \"\" {\n\t\tquery = \"?\" + query\n\t}\n\n\t// Normalize problematic PeerIDs (eg. ed25519+identity) to CID representation\n\tif isPeerIDNamespace(ns) && !isd.IsDomain(rootID) {\n\t\tpeerID, err := peer.Decode(rootID)\n\t\t// Note: PeerID CIDv1 with protobuf multicodec will fail, but we fix it\n\t\t// in the next block\n\t\tif err == nil {\n\t\t\trootID = peer.ToCid(peerID).String()\n\t\t}\n\t}\n\n\t// If rootID is a CID, ensure it uses DNS-friendly text representation\n\tif rootCid, err := cid.Decode(rootID); err == nil {\n\t\tmulticodec := rootCid.Type()\n\n\t\t// PeerIDs represented as CIDv1 are expected to have libp2p-key\n\t\t// multicodec (https://github.com/libp2p/specs/pull/209).\n\t\t// We ease the transition by fixing multicodec on the fly:\n\t\t// https://github.com/ipfs/go-ipfs/issues/5287#issuecomment-492163929\n\t\tif isPeerIDNamespace(ns) && multicodec != cid.Libp2pKey {\n\t\t\tmulticodec = cid.Libp2pKey\n\t\t}\n\n\t\t// if object turns out to be a valid CID,\n\t\t// ensure text representation used in subdomain is CIDv1 in Base32\n\t\t// https://github.com/ipfs/in-web-browsers/issues/89\n\t\trootID, err = cid.NewCidV1(multicodec, rootCid.Hash()).StringOfBase(mbase.Base32)\n\t\tif err != nil {\n\t\t\t// should not error, but if it does, its clealy not possible to\n\t\t\t// produce a subdomain URL\n\t\t\treturn \"\", false\n\t\t}\n\t}\n\n\turlparts := strings.Split(g.url, \"://\")\n\tif len(urlparts) < 2 {\n\t\treturn \"\", false\n\t}\n\tscheme := urlparts[0]\n\thost := urlparts[1]\n\treturn safeRedirectURL(fmt.Sprintf(\"%s://%s.%s.%s/%s%s\", scheme, rootID, ns, host, rest, query))\n}\n" var _Assets5e70439c4378bfd4d8fad0377484821d8d3176bb = "ASSET_DIRS = $(shell find ./public/ -type d)\nASSET_FILES = $(shell find ./public/ -type f -name '*')\n\nassets.go: ./public/ $(ASSET_DIRS) $(ASSET_FILES)\n\tgo-assets-builder . -p gateway -o assets.go" var _Assets86cd0824fababa1fde259c0e52ec8ca0455e8965 = "{{template \"header\" \"Oops!\"}}\n
\n
\n \n
\n
\n

{{.Code}} Error: {{.Error}}

\n
\n
\n{{template \"footer\"}}\n" var _Assetsee5a7899492dd689fa51716a10baa72c11b0a277 = "{{template \"header\" \"Invite Accepted\"}}\n
\n
\n \n
\n
\n

{{.Email}} is now a member of the {{.Org}} organization.

\n

If you haven't already, download the Hub CLI and initialize a new account. Check out the docs for more. You may now close this window!

\n
\n
\n{{template \"footer\"}}\n" var _Assetsc8a0243f5b1b2cb8a698f03d938b8a2276eb3240 = "\x00\x00\x00\x01Bud1\x00\x00\x10\x00\x00\x00\b\x00\x00\x00\x10\x00\x00\x00\x00%\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\b\v\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00@\x00\x00\x00\x01\x00\x00\x00\x80\x00\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x01\x00\x00\x02\x00\x00\x00\x00\x01\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x10\x00\x00\x00\x00\x01\x00\x00 \x00\x00\x00\x00\x01\x00\x00@\x00\x00\x00\x00\x01\x00\x00\x80\x00\x00\x00\x00\x01\x00\x01\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x00\x00\x01\x00\x04\x00\x00\x00\x00\x00\x01\x00\b\x00\x00\x00\x00\x00\x01\x00\x10\x00\x00\x00\x00\x00\x01\x00 \x00\x00\x00\x00\x00\x01\x00@\x00\x00\x00\x00\x00\x01\x00\x80\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x01\x02\x00\x00\x00\x00\x00\x00\x01\x04\x00\x00\x00\x00\x00\x00\x01\b\x00\x00\x00\x00\x00\x00\x01\x10\x00\x00\x00\x00\x00\x00\x01 \x00\x00\x00\x00\x00\x00\x01@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x10\v\x00\x00\x00E\x00\x00\x00%\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x04DSDB\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00`\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x80\x00\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x01\x00\x00\x02\x00\x00\x00\x00\x01\x00\x00\x04\x00\x00\x00\x00\x02\x00\x00\b\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00 \x00\x00\x00\x00\x01\x00\x00@\x00\x00\x00\x00\x01\x00\x00\x80\x00\x00\x00\x00\x01\x00\x01\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x00\x00\x01\x00\x04\x00\x00\x00\x00\x00\x01\x00\b\x00\x00\x00\x00\x00\x01\x00\x10\x00\x00\x00\x00\x00\x01\x00 \x00\x00\x00\x00\x00\x01\x00@\x00\x00\x00\x00\x00\x01\x00\x80\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x01\x02\x00\x00\x00\x00\x00\x00\x01\x04\x00\x00\x00\x00\x00\x00\x01\b\x00\x00\x00\x00\x00\x00\x01\x10\x00\x00\x00\x00\x00\x00\x01 \x00\x00\x00\x00\x00\x00\x01@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" var _Assetsaf1761e86eb6c63bb3e05e2d74c4e2f792ae10b3 = "\x00\x01\x00\x00\x00\r\x00\x80\x00\x03\x00PFFTM\x8d\x96\xb6\x16\x00\x00\x85\x10\x00\x00\x00\x1cGDEF\x00*\x00\xa0\x00\x00\x84\xf0\x00\x00\x00\x1eOS/2A\x92S\x1b\x00\x00\x01X\x00\x00\x00`cmapǠ\xc8\xf4\x00\x00\x04\f\x00\x00\x03\xdagasp\xff\xff\x00\x03\x00\x00\x84\xe8\x00\x00\x00\bglyfDڭ\xd9\x00\x00\t \x00\x00n\xc0head\x17\a\x91\x1e\x00\x00\x00\xdc\x00\x00\x006hhea\x045\x02\xd1\x00\x00\x01\x14\x00\x00\x00$hmtx\x12\xb0\x00t\x00\x00\x01\xb8\x00\x00\x02Tloca\xe8\x01\xcbF\x00\x00\a\xe8\x00\x00\x016maxp\x00\xea\x00\xaf\x00\x00\x018\x00\x00\x00 name2\xd74(\x00\x00w\xe0\x00\x00\x05[post\xfciA\xbb\x00\x00}<\x00\x00\a\xab\x00\x01\x00\x00\x01J\xc0\x83l\xd9Ϊ_\x0f<\xf5\x00\v\x02\x00\x00\x00\x00\x00\xda\x15\xc8\v\x00\x00\x00\x00\xda\x15\xc8\x11\xff\xec\xff\xb9\x02\x87\x01\xc9\x00\x00\x00\b\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x01\xc0\xff\xc0\x00\x00\x02\x80\xff\xec\x00\x00\x02\x87\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x01\x00\x00\x00\x9a\x00\xac\x00\x0e\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x01\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00\x04\x01\xed\x01\x90\x00\x05\x00\x00\x01L\x01f\x00\x00\x00G\x01L\x01f\x00\x00\x00\xf5\x00\x19\x00\x84\x00\x00\x02\x00\x05\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00PfEd\x00\x80\xf0\x04\xf5\xc8\x01\xc0\xff\xc0\x00.\x01\xcc\x00T\x00\x00\x00\x01\x00\x00\x00\x00\x01:\x01\xa5\x00\x00\x00 \x00\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x00\x00\x02\x00\xff\xfb\x02@\x00\x0f\x01\xc0\x00\x00\x02\x00\x00\b\x02\x00\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02@\x00\x00\x02\x80\x00\x00\x01\xc0\x00\x00\x02\x00\xff\xfc\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02@\xff\xfc\x02@\x00\x0f\x02\x00\xff\xfd\x02@\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x01`\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02\x00\x00\b\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x02\x00\x00\b\x01\xc0\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x01\xf0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x17\x01\xc0\x00\x00\x02\x00\x00\b\x01\xc0\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x02\x00\x00\b\x02\x00\xff\xff\x01\xf0\xff\xed\x02@\x00\x00\x02\x80\xff\xfa\x02\x00\x00\b\x02\x00\x00\x00\x02\x00\x00\x00\x02@\x00\x00\x01\xc0\x00\x00\x02\x00\x00\x00\x01\x80\x00\x00\x02\x00\x00\x00\x01\xc0\xff\xfd\x02\x00\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x01\xc0\xff\xfd\x01\xc0\xff\xfb\x02\x00\x00\b\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02\x00\x00\b\x02\x00\x00\b\x02\x80\x00\x00\x02\x00\x00\x00\x01\xc0\x00\x00\x02@\x00\x00\x01\xf0\x00\x00\x01\x80\x00\x00\x02@\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xc0\xff\xfb\x01\xc0\x00\x00\x02@\x00\x00\x01\x80\x00\x00\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02\x00\x00\b\x02@\xff\xfe\x02\x80\x00\x00\x02\x00\x00\x00\x02\x00\xff\xfc\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x02\x00\xff\xff\x01\xf0\x00\x00\x02\x80\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf0\x00\x00\x01\xf8\x00\x00\x01\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x1c\x00\x01\x00\x00\x00\x00\x02\xd4\x00\x03\x00\x01\x00\x00\x00\x1c\x00\x04\x02\xb8\x00\x00\x00\xaa\x00\x80\x00\x06\x00*\xf0\x05\xf0\a\xf0\x17\xf0\"\xf0$\xf0.\xf0>\xf0D\xf0Y\xf0n\xf0p\xf0s\xf0u\xf0|\xf0\x80\xf0\x86\xf0\x89\xf0\x94\xf0\x9d\xf0\xa0\xf0\xa7\xf0\xc5\xf0\xc8\xf0\xe0\xf0\xeb\xf0\xf3\xf0\xf8\xf0\xfe\xf1\x11\xf1\x1a\xf1\x1c\xf13\xf1D\xf1F\xf1J\xf1N\xf1R\xf1\\\xf1e\xf1\x86\xf1\x92\xf1\xad\xf1\xc9\xf1\xcd\xf1\xd8\xf1\xe3\xf1\xea\xf1\xf6\xf1\xf9\xf2\n\xf2I\xf2M\xf2[\xf2]\xf2t\xf2z\xf2\x8b\xf2\x8d\xf2\xb6\xf2\xb9\xf2\xbb\xf2\xbd\xf2\xc2\xf2\xd2\xf2\xdc\xf2\xed\xf3\x02\xf3(\xf3[\xf3\xa5\xf3\xd1\xf4\x10\xf4\xad\xf4\xda\xf5V\xf5g\xf5z\xf5\x8c\xf5\x9c\xf5\xa5\xf5\xb4\xf5\xb8\xf5\xc2\xf5\xc8\xff\xff\x00\x00\xf0\x04\xf0\a\xf0\x17\xf0\"\xf0$\xf0.\xf0>\xf0D\xf0W\xf0n\xf0p\xf0s\xf0u\xf0{\xf0\x80\xf0\x86\xf0\x89\xf0\x94\xf0\x9d\xf0\xa0\xf0\xa4\xf0\xc5\xf0\xc7\xf0\xe0\xf0\xeb\xf0\xf3\xf0\xf8\xf0\xfe\xf1\x11\xf1\x18\xf1\x1c\xf13\xf1D\xf1F\xf1J\xf1M\xf1P\xf1[\xf1d\xf1\x85\xf1\x91\xf1\xad\xf1\xc1\xf1\xcd\xf1\xd8\xf1\xe3\xf1\xea\xf1\xf6\xf1\xf9\xf2\n\xf2G\xf2M\xf2T\xf2]\xf2q\xf2y\xf2\x8b\xf2\x8d\xf2\xb5\xf2\xb9\xf2\xbb\xf2\xbd\xf2\xc1\xf2\xd0\xf2\xdc\xf2\xed\xf3\x02\xf3(\xf3X\xf3\xa5\xf3\xd1\xf4\x10\xf4\xad\xf4\xda\xf5V\xf5g\xf5y\xf5\u007f\xf5\x96\xf5\xa4\xf5\xb3\xf5\xb8\xf5\xc2\xf5\xc8\xff\xff\x0f\xff\x0f\xfe\x0f\xef\x0f\xe5\x0f\xe4\x0f\xdb\x0f\xcc\x0f\xc7\x0f\xb5\x0f\xa1\x0f\xa0\x0f\x9e\x0f\x9d\x0f\x98\x0f\x95\x0f\x90\x0f\x8e\x0f\x84\x0f|\x0fz\x0fw\x0fZ\x0fY\x0fB\x0f8\x0f1\x0f-\x0f(\x0f\x16\x0f\x10\x0f\x0f\x0e\xf9\x0e\xe9\x0e\xe8\x0e\xe5\x0e\xe3\x0e\xe2\x0e\xda\x0e\xd3\x0e\xb4\x0e\xaa\x0e\x90\x0e}\x0ez\x0ep\x0ef\x0e`\x0eU\x0eS\x0eC\x0e\a\x0e\x04\r\xfe\r\xfd\r\xea\r\xe6\r\xd6\r\xd5\r\xae\r\xac\r\xab\r\xaa\r\xa7\r\x9a\r\x91\r\x81\rm\rH\r\x19\f\xd0\f\xa5\fg\v\xcb\v\x9f\v$\v\x14\v\x03\n\xff\n\xf6\n\xef\n\xe2\n\xdf\n\xd6\n\xd1\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x06\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x02\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00|\x00\xc4\x00\xf8\x01n\x01\xbe\x01\xe2\x02*\x02\x84\x02\xce\x03\x04\x03b\x03\xac\x04\x1a\x04\xa2\x04\xe0\x05\f\x05H\x05\xb6\x06*\x06N\x06\xcc\a\x1a\ab\a\xe2\bb\b\xe2\t^\t\xb8\n\x0e\n:\n\x88\n\xe8\v:\v\xce\f\x18\f6\f\x82\f\xd0\r\x14\r\xe6\x0e\x1e\x0eN\x0e\x88\x0e\xc6\x0fD\x0f\x84\x0f\xc2\x10\x00\x10>\x10n\x10\xba\x118\x11\xb6\x12(\x12f\x12\xa4\x12\xce\x13L\x13\xce\x14D\x14\xa8\x15\x00\x15L\x15\xbe\x16\x1c\x16l\x16\xe4\x17.\x17l\x17\xc8\x18D\x18\xa6\x18\xf4\x19f\x19\xf0\x1a\x98\x1a\xca\x1b\x14\x1bZ\x1b\xec\x1ch\x1c\xea\x1dD\x1d\xdc\x1e\x94\x1f\x18\x1ff\x1f\xbc \x02 f \xb8!\b!H!\x8e!\xc0\"d\"\xec#L#\xbe$\x0e$h$\xd4$\xfc%\x14%N&@&\xa4'\b'N'\x84'\xba'\xf0(&(j(\xca)\")\x80)\xdc*L*\xc4+4+|+\xfc,H,\xa4-\x10-\x98.\x06.d/\x06/\x860*0\x9a1\x1e1\xb42\n2n2\xee3\x8e3\xd6484\x924\xea5\x1e5\x906\x006X6\xc67\x047`\x00\x00\x00\x02\xff\xfa\xff\xdf\x02\x06\x01\xa5\x00\x12\x00$\x00\x00\x01\x1e\x01\x06\x0f\x01\x06\"/\x01.\x01676\x16\x17>\x01\x1764'&\x06\x0f\x01'.\x01\a\x06\x14\x1f\x01\x167\x01\xca$\x18\x16\x1b\xaf\x10,\x10\xaf\x1b\x16\x18$+u**u\x14\x1d$\x1eO\x1c##\x1cO\x1e$\x1d\xb0\x03\x03\x01\x80\x1fUN\x1c\xb2\x10\x10\xb2\x1cOT\x1f$\t**\t\xe0\x1eW\"\x18\x06\x1d##\x1d\x06\x18\"W\x1e\xb2\x04\x04\x00\x00\x00\x02\x00\x0f\xff\xba\x021\x01\xc1\x00\x18\x00\"\x00\x00\x01\x1e\x01\x0f\x01\x17\x16\x06/\x01\a\x06&?\x01'&6?\x0262\x1f\x027/\x01\x0f\x01\x17\a7\x17\x02\x10\x14\f\x0ej\x19\x03 \x11\x83\x83\x11 \x03\x19j\x0e\f\x14\x92A\t(\tA\ad\x8b>>\x8bd\x17||\x01\x14\x02&\x0eg\x92\x13\x17\tDD\n\x18\x13\x92g\x0e&\x02\x16\x84\x12\x12\x84\xa2b\x14~~\x14b\x8bBB\x00\x04\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x13\x00\"\x00*\x002\x00\x00%2\x16\x1d\x01\x14\x06#!\"&=\x014632\x1626\x1754&#\"\x06#\"&#\"\x06\x1d\x016\"&462\x16\x14&\"\x06\x14\x16264\x01:7O\x1c\x14\xfe\xa0\x14\x1cO7\r344b3#\x039\x1e\x1e9\x03#3\xecxTTxThP88P8\x90O7\x1a\x14\x1c\x1c\x14\x1a7O\x10\x10\xa0\x1a#3\x10\x103#\x1a\xb0TxTTx\x9c8P88P\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x1f\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14\x05'&=\x014;\x012\x1d\x01\x17\x16\x0f\x01\x06\x99Α\x91Α\xa5\xa6uu\xa6u\x01\x06U\x05\f \fC\t\a\x12\a\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\r>\x04\x06\xa4\f\f\x8e0\a\n\x1a\n\x00\x00\x00\x00\b\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x1b\x00'\x003\x00?\x00G\x00O\x00W\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0125\x114#!\"\x15\x11\x143%\x15\x14+\x01\"=\x014;\x0125\x15\x14+\x01\"=\x014;\x0125\x15\x14+\x01\"=\x014;\x012\x06\x14\x06\"&462\x16\x14\x06\"&462\x16\x14\x06\"&462\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\x9a\x06\x06\xfel\x06\x06\x01j\f\xc8\f\f\xc8\f\f\xc8\f\f\xc8\f\f\xc8\f\f\xc8\f\xfc\x15\x1e\x15\x15\x1e\x15\x15\x1e\x15\x15\x1e\x15\x15\x1e\x15\x15\x1e\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfep\x06\x01T\x06\x06\xfe\xac\x06\\\x18\f\f\x18\fT\x18\f\f\x18\fT\x18\f\f\x18\f\t\x1e\x15\x15\x1e\x15u\x1e\x15\x15\x1e\x15u\x1e\x15\x15\x1e\x15\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc2\x00(\x008\x00\x00\x01276\x16\x1d\x01\x14\a\x06#\"&#\"\a\x15\x14\x06+\x01\"&5\x11&546\x17\x1e\x01\x17\x14\x15\x14\a632\x16\x135\x06#\"&#\"\a\x15632\x1632\x01P,A\x18+\x16=C%g\x16A?\t\a\x10\a\t\x18\x1e\x15\x11\x1a\x02\x02')%g\x96E;\x1ef\x1e9-4L\x1ef\x1e9\x01p\x1c\n\x1c\x1a\xf0\x1a\x0e( \x1dS\a\t\t\a\x01\x96\x0e\x1c\x15\x1c\x01\x01\x18\x11\x03\x03\b\a\x0f \xff\x00\xf0 \xe8\x18 \x00\x00\x02\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\n\x00\x13\x00\x00\x012\x16\x15\x11'\a\x11463\x01\x114#!\"\x15\x117\x01P\x14\x1c\xc0\xc0\x1c\x14\x01 \x06\xfe\xec\x06\x90\x01\xc0\x1c\x14\xfe0pp\x01\xd0\x14\x1c\xfeT\x01v\x06\x06\xfe\x8aT\x00\x04\x00\x00\x00\x00\x02\x00\x01\x80\x00\x0f\x00\x1b\x00#\x00.\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0125\x114#!\"\x15\x11\x14362\x16\x14\x06\"&4\x17576\x1f\x0176\x1f\x01\x15\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\x9a\x06\x06\xfel\x06\x069\"\x17\x17\"\x17\b(\b\b(x\b\bX\x01\x80\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c\xfe\xb0\x06\x01\x14\x06\x06\xfe\xec\x06\xf8\x17\"\x17\x17\"\xb10(\b\b(x\b\bXP\x00\x00\x04\x00\x00\xff\xc0\x02A\x01\xc1\x00\x1c\x00*\x00/\x007\x00\x00%76\x16\x1d\x01\x14\x06#!\"&5\x11463!2\x16\x0f\x01\x06+\x01\x11!547\x01\a\x06&?\x01\x0162\x1f\x01\x16\x14\a'\x0f\x017\x13'&\x0f\x01\x1776\x01\x92 \x04\n\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01\x12\x05\x04\x04 \x02\x03\xf2\x01`\x9f\xfe\xf9Z\x14\x1c\x02\n\x01\a\x110\x12+\x11t:\xba\aA\xfb+\b\a\x1f:\x1f\ag \x04\x04\x06\x91\x14\x1c\x1c\x14\x01`\x14\x1c\n\x04 \x02\xfe\xa0r\x03\xcc\xfe\xf9\n\x02\x1c\x14Z\x01\a\x11\x11+\x1110:\xbaA\a\x01\n+\a\a\x1f:\x1f\a\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00+\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%\a\x17\x16\x0f\x01\x06/\x01\a\x06/\x01&?\x01'&?\x016\x1f\x0176\x1f\x01\x16\x99Α\x91Α\xa5\xa6uu\xa6u\x01.>>\b\b\x17\b\t>>\t\b\x17\b\b>>\b\b\x17\b\t>>\t\b\x17\b\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x91>>\t\b\x17\b\b>>\b\b\x17\b\t>>\t\b\x17\b\b>>\b\b\x17\b\x00\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x1f\x00\x00\x122\x16\x14\x06\"&4$\"\x06\x14\x16264\a\x16\x0f\x01\x06/\x01&?\x016\x1f\x0176\x17\x99Α\x91Α\x01K\xa6uu\xa6u<\t\t\xac\t\b[\t\t\x17\b\t;\x8e\b\t\x01\xb8\x91Α\x91\xceau\xa6uu\xa6\r\t\b\xab\t\t[\t\b\x17\b\b=\x8d\b\t\x00\x04\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x008\x00@\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%\x14\x0e\x02\x1d\x01\x14\x06+\x01\"&=\x014>\x027>\x0354&#\"\x0e\x01\a\x06/\x01&7632\x16\x06\x14\x06\"&462\x99Α\x91Α\xa5\xa6uu\xa6u\x013\x16\x1c\x16\a\x05.\x05\a\b\x12\n\f\b\b\t\x03\x19\x0f\v\x11\f\t\a\t\x1c\t\x06%@&?A\x19\"\x19\x19\"\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x8a\x17 \x0e\x10\b\x06\x05\a\a\x05\t\f\x14\x10\a\x06\x05\x05\a\b\x05\f\x10\a\f\v\t\a\x15\a\n64\xbb\"\x19\x19\"\x19\x00\x00\x00\x03\x00\x00\x00\x00\x02@\x01\x80\x00\x11\x00#\x00/\x00\x00\x012\x16\x14\x06\"&547\x1632654'6\x05\x16\x14\a\x0e\x01#\".\x01'&47>\x012\x16\a267.\x01\"\x06\a\x1e\x02\x01 /AA]A\x04\r\x0e\x17!\a\x0f\x01-\x03\x03*\x98[\x027&54\x05264&\"\x06\x15\x14\x1f\x01\a\x06\a6?\x01\x17\x16\x96Ԗ\x96j/.AJ\x10\f\n\x02\x0f\x17\a5\x01\x00Vzz\xacz(\x14\n\b\f\x1e\x1b\x14\x17&\x01\xa0z\xacz\x0e.\x1d\v\x02\x11%\x128FV\xf6^\x84^^B3*\x16\x1c\x14\x15\n\x14\r\a\f\x00\x00\x00\x00\x02\x00\x00\x00\x00\x02\x00\x01\x80\x00\x13\x00\x1b\x00\x00\x012\x16\x1d\x01\x14\x06#!\"&5\x1146;\x012\x1f\x01\x135#\"/\x01#\x11\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\x93\r\t7\xc0\xc7\r\t7\x8c\x01@\x1c\x14\xe0\x14\x1c\x1c\x14\x01 \x14\x1c\t7\xfe\xf0\xe0\t7\xfe\xe0\x00\x03\x00\x00\x00\x00\x02H\x01\x80\x00\x15\x00\"\x00&\x00\x00%2\x16\x0f\x01\x06#!\"&5\x1146;\x01\x1732\x16\x1d\x01%\x15763!54+\x01'#\"\x017!\a\x02\x10\x1c\x1c\x0fP\x0e\x1b\xfep\x14\x1c\x1c\x14\xa0@\xa0\x14\x1c\xfeP?\x0e\x1b\x01\x18\x06\xae@\x86\x06\x01\x90P\xfe\x85M\xe01\x18\x80\x17\x1c\x14\x01 \x14\x1c@\x1c\x140j\xe9h\x17*\x06@\xfe\xe0\x80\x80\x00\x05\x00\x00\x00\x00\x02\x00\x01\x80\x00\x0f\x00\x1f\x00/\x00D\x00T\x00\x00%\"&=\x0146;\x012\x16\x1d\x01\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x14\x06#3\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\x172\x16\x1d\x01\x14\x06#!\"&5\x1146;\x012\x16\x15\x117\"&=\x0146;\x012\x16\x1d\x01\x14\x06#\x01\x8d\x05\b\b\x05\x16\x05\b\b\x05\xd6\x05\b\b\x05\x16\x05\b\b\x05J\x05\b\b\x05\x16\x05\b\b\x05\xad\a\t\t\a\xfe0\r\x13\t\a\x10\a\t=\x05\b\b\x05\x16\x05\b\b\x05`\b\x05\xe6\x05\b\b\x05\xe6\x05\b\b\x05\xc6\x05\b\b\x05\xc6\x05\b\b\x05\x86\x05\b\b\x05\x86\x05\b0\t\a\x10\a\t\x13\r\x01P\a\t\t\a\xfe\xc00\b\x05F\x05\b\b\x05F\x05\b\x00\x03\xff\xfb\xff\xe0\x02E\x01\xa0\x00#\x006\x00M\x00\x00%\x1e\x02\x17\x16\x06#\"'\x06#\"&'&'\x06#\"&767&54632\x16\x17\x1e\x01\x15\x14%\x17\x163264&\"\x06\x15\x14\x1f\x01\a\x06\a67\x05654&'\x16\x15\x14\x0e\x01\a\x1632?\x01\x17\x16\x17&/\x01\x02\x14\a\x13\v\x01\n\f\x0fA<\x1e\x1e@g\x18\x0f\x0e;B\x0f\f\n\x15\x11,zV@h\x18Ke\xfeK\x14\x18\x19A__\x82_\x1e\x18\x0f\x04\x04\x16\x15\x01x\x1e@1\x01/R21R\x19\x18\x14\x11\x15\x16\x04\x04\x0f>\x0e\x1b\r\x01\v\x1c'\a6,\x02\x03'\x1c\v\x14#+7B^6,\tY<71\x04\x06B\\BB.#\x1d\x18 \a\a\a\x0e/\x1d#$;\v\b\x02(E,\x052\x06\x04\v\x0e\a\a\a \x00\x00\x00\x01\x00\x0f\xff\xba\x01 \x01\xc0\x00\x13\x00\x00%\x15\a\x06&?\x01'&6?\x0263\x15\x0f\x01\x17\a\x01 \x83\x11 \x03\x19j\x0e\f\x14\x92A\t\x14>\x8bd\x17?7D\t\x17\x14\x91g\x0e&\x03\x15\x84\x12D~\x14b\x8b\x00\x00\x03\xff\xfc\xff\xbc\x02\x04\x01\xc4\x00#\x00A\x00Q\x00\x00\x00\x1e\x01\a\x0e\x01\x16\x0e\x06&\x06\a\x06.\x027>\x01&>\x06\x16676\x176&\a\x0e\x01&\x0e\x04\x16\x06\a\x06\x167>\x01\x162>\x017>\x02&6&\x16\x06\a\x0e\x01\a\x0e\x01.\x017>\x0176\x01\xcf*\v\r\x04\x02\b\x04\n'>D88(%\b\x166*\v\r\x04\x02\b\x04\n'>D88(%\b\x165\n,\x11\x1136&\v\x04\b\x02\x04\r\v*6\x16\b%(88D>&\v\x04\b\x02\x04\ri\x12+\n\v\x01\x06\x03 DF<63\x11\x12+\n\t\x04\x06\a!\x1c\"F<63\x11\x11\r\x01\x05`)\t\n\x02\r\b7t\a\x01\x00\x00\x00\x05\x00\x00\xff\xe0\x02@\x01\xa0\x00\x10\x00\x18\x00 \x00,\x008\x00\x00\x012\x1e\x01\x15\x11\x14\x06#!\"&5\x11463\x17\"\x1d\x01!54#\x112=\x01!\x15\x1437\x15\x14+\x01\"=\x014;\x012\x17\x15\x14+\x01\"=\x014;\x012\x02\x10\r\x16\r\x1c\x14\xfe \x14\x1c\x1c\x14\x06\x06\x01\xe0\x06\x06\xfe \x06\x8a\fH\f\fH\f\xc0\f\x88\f\f\x88\f\x01\xa0\r\x16\r\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c0\x06**\x06\xfe\xa0\x06\xaa\xaa\x06d(\f\f(\f\f(\f\f(\f\x00\x00\x00\x00\x05\x00\x00\x00\x00\x02@\x01\x80\x00\x15\x00\x19\x00\x1d\x00%\x00-\x00\x00%\x16\x1d\x01\x14\x06#!\"&=\x014?\x01>\x013!2\x16\x17\x05\a!'\x135!\x15$\x14\x06\"&462\x06\x14\x06\"&462\x027\t\x1c\x14\xfe \x14\x1c\ti\x06\x17\n\x01\x0e\n\x17\x06\xfe\xcbN\x01\xaaNi\xfe \x01\xc0\x13\x1a\x13\x13\x1aM\x13\x1a\x13\x13\x1a\xd4\f\x0f\x89\x14\x1c\x1c\x14\x89\x0f\f\x97\t\f\f\t\x1bpp\xfe\xe0\x80\x80M\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x002\x00U\x00]\x00\x00\x012\x16\x15\x14\x0e\x02+\x01\x06\a\x16\a\x0e\x01+\x01\"&+\x01\x06+\x01\"&=\x0146;\x012\x17327167>\x0332\x16\x15\x14\a\x172654&+\x014654#\"\x0e\x01\a\x06\a\x06\a\x15\x1e\x02;\x012'>\x01'>\x01'\x064&\"\x06\x14\x162\x01\xad\"1\r\x17\x1e\x11$\x02\x06\x04\x14\x015.\x15\"S\n\x03\t\r@\r\x13\x13\r@\r\t\x03\t\x15\x11\t\x04\x12\f\x1a\x10*2\x02V\x0e\x15\x15\x0e\x9f\x1b,\x04\n\x10\x05\v\x14 \x1b\x11**\x13\x15=\n\f\t\b\x0e\x01\n\xfa\x0e\x14\x0e\x0e\x14\x0161\"\x11\x1e\x17\r\f\n\"\x1d(3(\b\x11\f\xe6\f\x11\b\x18\x13\x0e\x06$\x13\x12/$\f\vv\x15\x0e\x0e\x15\a,\x14#\x11\x1f\b\x12\x16$\x04\xb0\x02\x14\x12=\a \x0f\r&\n\x8a\x14\x0e\x0e\x14\x0e\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x002\x00V\x00^\x00\x00546;\x01&54632\x1e\x02\x17\x16\x171\x16;\x016;\x012\x1e\x02\x1d\x01\x14\x06+\x01\"'#\"\x06+\x01\"&'&7&'#\"&7\x14\x16;\x01\x06\x16\x17\x06\x16\x17\x06;\x012675&'&'.\x02#\"\x15\x14\x16\x15#\"\x0e\x02\x04\"\x06\x14\x162641\"V\x022*\x10\x1a\f\x12\x04\t\x11\x15\t\x03\t\r@\a\v\t\x05\x13\r@\r\t\x03\nS\"\x15.5\x01\x14\x04\x06\x02$\"10\x15\x0e[\n\x01\x0e\b\t\f\n=\x15\x18L\x14\x1b \x14\v\x05\x10\n\x04,\x1b\x9f\a\r\t\x06\x01\x9a\x14\x0e\x0e\x14\x0e\xe3\"1\v\f$/\x12\x13$\x06\x0e\x13\x18\b\x05\a\v\x06\xe6\f\x11\b(3(\x1d\"\n\f1\"\x0e\x15\n&\r\x0f \a=&\x02\xb0\x04$\x16\x12\b\x1f\x11#\x14,\a\x05\n\r\x92\x0e\x14\x0e\x0e\x14\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x003\x00U\x00]\x00\x00\x134632\x1e\x01\x1d\x01\x16\x176\x17\x1e\x01\x1d\x01\x14\x06\x1d\x01\x16\x1d\x01\x14\x0e\x01+\x01\"&=\x014754'1&'.\x0454632\x1774&#\"\x06\x1d\x01\"&#\"\x15\x14\x1e\x01\x17\x16\x17\x16\x173>\x01=\x014\a.\x01\a.\x01\a\x16\"\x06\x14\x16264j1\"\x16'\x16\f\n\"\x1d(3(\b\b\r\b\xe6\f\x11\b\x18\x13\x0e\a\x1a\x11\x13\n/$\f\vv\x15\x0e\x0e\x15\a,\x14#\x11\x1f\b\x12\x16$\x04\xb0\x02&=\a \x0f\r&\n\x8a\x14\x0e\x0e\x14\x0e\x01m\"1\x16'\x16$\x02\x06\x04\x14\x015.\x15\"S\n\x03\t\r@\t\x0e\t\x13\r@\r\t\x03\t\x15\x11\t\x04\r\n\x0f\x15\r*2\x02V\x0e\x15\x15\x0e\x9f\x1b,\x04\n\x10\x05\v\x14 \x1b\x14L\x18\x15=\n\f\t\b\x0e\x01\n\xfa\x0e\x14\x0e\x0e\x14\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x001\x00S\x00[\x00\x00\x17\"&=\x01\x06#\"&54>\x0376716=\x01&=\x0146;\x012\x16\x1d\x01\x14\a\x15\x14\x16\x1d\x01\x14\x06\a\x06'\x06\a\x15\x14\x06'26=\x01\x1667\x1667\x16=\x014&'#\x06\a\x06\a\x0e\x02\x15\x143263\x15\x14\x16\x12\x14\x16264&\"\xbd\"1\v\f$/\n\x13\x11\x1a\a\x0e\x13\x18\b\x11\f\xe6\f\x11\b(3(\x1d\"\n\f1\"\x0e\x15\n&\r\x0f \a=&\x02\xb0\x04$\x16\x12\b\x1f\x11#\x14,\a\x15\x99\x0e\x14\x0e\x0e\x14@1\"V\x022*\r\x15\x0f\n\r\x04\t\x11\x15\t\x03\t\r@\r\x13\x13\r@\r\t\x03\nS\"\x15.5\x01\x14\x04\x06\x02$\"10\x15\x0e[\n\x01\x0e\b\t\f\n=\x15\x18L\x14\x1b \x14\v\x05\x10\n\x04,\x1b\x9f\x0e\x15\x01\x9a\x14\x0e\x0e\x14\x0e\x00\x00\x04\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1b\x00*\x009\x00B\x00\x00\x01\x16\x15\x11\x14\x06+\x01\x15\x14\x06+\x01\"&5\x1146;\x01546;\x012\x17\x032=\x01#\"&=\x01#\"\x15\x11\x143%2=\x01#\"&=\x01#\"\x15\x11\x143\x1354/\x01&+\x01\x15\x01\xb2\x0e\x1c\x14P\x1c\x14\xe0\x14\x1c\x1c\x14P\x1c\x14\xac\x14\x0et\x06`\x14\x1cJ\x06\x06\x01T\x06X\n\x0ej\x06\x06\xda\x020\x02\x02\n\x01~\x0e\x14\xfe\xf4\x14\x1c0\x14\x1c\x1c\x14\x01@\x14\x1c0\x14\x1c\x0e\xfe>\x06*\x1c\x14\xe0\x06\xfe\xcc\x06`\x06\xca\x0e\nX\x06\xfe\xcc\x06\x01\x00\n\x02\x020\x02@\x00\x00\x05\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x11\x00\x15\x00+\x003\x00;\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x11463!2\x17\a#\x153\x1325\x114/\x01\x15\x14\x06+\x01\"&=\x01#\"\x15\x11\x14362\x16\x14\x06\"&4\x16264&\"\x06\x14\x01\xb2\x0e\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01\f\x14\x0eN\x80\x80z\x06\x02N\x0e\n\xb0\n\x0e*\x06\x06\x86H44H4G\"\x17\x17\"\x17\x01>\x0e\x14\xfe\xf4\x14\x1c\x1c\x14\x01`\x14\x1c\x0e\"P\xfe\xf0\x06\x01\x04\x02\x02Nd\n\x0e\x0e\nh\x06\xfe\xac\x06\xc84H44HL\x17\"\x17\x17\"\x00\x00\x02\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x1b\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0125\x114#!\"\x15\x11\x143\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01Z\x06\x06\xfe\xac\x06\x06\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfep\x06\x01T\x06\x06\xfe\xac\x06\x00\x03\x00\x00\x00\x00\x02\x00\x01\x80\x00\x0f\x00 \x002\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x05!\x15\x16\x17\x14\x1e\x0232>\x02567\x05!5\x06\a\x0e\x04\".\x03'&'\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\xfe`#d\x1c\x0e\x17\b\b\x17\x0e\x1cd#\xfe`\x01\xa0#F\x02\x19\x0e\x1a\x18\x18\x19\x19\x0e\x19\x02F#\x01\x80\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c0)\x1cN\x01\x17\t\f\f\t\x17\x01N\x1c\xf7\xba\x1c7\x01\x16\n\x0f\a\a\x10\n\x15\x017\x1c\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01`\x01\xc0\x00\x0f\x00\x1d\x00B\x00\x00\x132\x16\x14\x06#\"\x06\x15\x14\x06\"&546\x0353\x15\x14\x0f\x01\x06+\x01\"/\x01&\x132\x16\x15\x14\a\x0e\x01\a#4767654&#\"\x06\x15\x14\x17\x16\x17\x16\x15#.\x02'&546\xb0\a\t\t\a\x1a&\t\x0e\t8(\xa0\x03\x18\x05\tN\t\x05\x18\x03PIg,\x0e\x1f\a0\x02\x13+ K54L +\x13\x020\x05\x13\x14\b,e\x01p\t\x0e\t&\x1a\a\t\t\a(8\xfe\x85++\x05\x04%\a\a%\x04\x01\xd0gIB2\x105\x17\a\a=1$05KJ60$1=\a\a\x10%\x1d\n2BGi\x00\x00\x00\x03\xff\xff\xff\xc0\x01\xc1\x01\xc0\x00%\x003\x009\x00\x00%\x16\x15\x14\x06#!\".\x0154767>\x0254675462\x16\x1d\x01\x1e\x02\x15\x14\x1e\x01\x17\x16\x05!&5414&\"\x06\x150\x15\x14\x16\"&53\x14\x01\xb7\t\x12\x0e\xfe\x80\t\x0f\b\t\x01\x02\x0f\x11\x14H8\x13\x1a\x13%:!\x14\x11\x0f\x02\xfe\x8e\x018,B\\B\x8a4&\x80V\n\f\r\x13\t\x0f\b\f\n\x01\x03\x0f\x18C,:V\v\x15\r\x13\x13\r\x15\a,B&,C\x18\x0f\x03\a;d\x01.BB.\x01d\xcb%\x1b\x1b\x00\x00\x00\a\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\v\x00\x17\x00#\x00/\x00K\x00a\x00}\x00\x00754;\x012\x1d\x01\x14+\x01\"3\"=\x014;\x012\x1d\x01\x14#\a\x14+\x01\"=\x014;\x012\x15\x17\"=\x014;\x012\x1d\x01\x14#\x17\x15!54;\x01\x1146;\x01546;\x012\x16\x1d\x0132\x16\x15\x1132%354;\x012\x1d\x013\x11#\x15\x14\x06+\x01\"&=\x01#7#54+\x01\"\x1d\x01#\"\x1d\x01\x14;\x01\x15\x14;\x012=\x0132=\x014\x80\f(\f\f(\f\x8c\f\f(\f\ft\f(\f\f(\fL\f\f(\f\f\x8c\xfe@\f\x14\x0e\nX\x0e\np\n\x0eX\n\x0e\x14\f\xfe\x90p\f(\fp@\x0e\np\n\x0e@\xba\x1a\x06\x14\x06\x1a\x06\x06\x1a\x06\x14\x06\x1a\x06\xcc(\f\f(\f\f(\f\f(\fT\f\f(\f\f4\f(\f\f(\f|$$\f\x01{\t\f(\n\x0e\x0e\n(\f\t\xfe\x85\x01C\f\fC\x01_\x18\n\x0e\x0e\n\x180\x1a\x06\x06\x1a\x06\x14\x06\x1a\x06\x06\x1a\x06\x14\x06\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x1b\x00+\x007\x00\x00%\x15\x14+\x01\x15\x14+\x01\"=\x01#\"=\x014;\x0154;\x012\x1d\x01327\x11\x14\x06#!\"&5\x11463!2\x16\x03\x114#!\"\x15\x11\x143!2\x01`\fX\f \fX\f\fX\f \fX\f`\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c0\x06\xfe\xac\x06\x06\x01T\x06\xd0 \fX\f\fX\f \fX\f\fX\x94\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xfe\x92\x01T\x06\x06\xfe\xac\x06\x00\x00\x02\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14\x99Α\x91Α\xa5\xa6uu\xa6u\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00/\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x146\"&462\x16\x14\x16\"&462\x16\x14\a>\x01\x1e\x01\a\x06\"'&>\x01\x16\x17\x162\x91Α\x91Α\xa5\xa6uu\xa6u\x85\x1a\x13\x13\x1a\x13\x8d\x1a\x13\x13\x1a\x13\x1c\x06\x14\x0f\x02\x06/\x94/\x06\x02\x0f\x14\x06!f\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6c\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\\\b\x02\r\x14\a99\a\x14\r\x02\b'\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x000\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x146\"&462\x16\x1462\x16\x14\x06\"&4\x062\x17\x16\x06\a\x06&'&\"\a\x0e\x01.\x017\x91Α\x91Α\xa5\xa6uu\xa6u\x85\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13o~)\x06\x02\a\b\x14\x06\x1aR\x1a\x06\x14\x0f\x02\x06\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6c\x13\x1a\x13\x13\x1a-\x13\x1a\x13\x13\x1am1\a\x14\x06\a\x02\b\x1f\x1f\b\x02\r\x14\a\x00\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00+\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x146\"&462\x16\x1462\x16\x14\x06\"&4\x172\x16\x14\x06+\x01\"&463\x91Α\x91Α\xa5\xa6uu\xa6u\x85\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13(\n\x0e\x0e\n\xb0\n\x0e\x0e\n\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6c\x13\x1a\x13\x13\x1a-\x13\x1a\x13\x13\x1a}\x0e\x14\x0e\x0e\x14\x0e\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x02@\x01\x80\x00\x0f\x00\x1b\x00'\x003\x00?\x00K\x00W\x00c\x00o\x00{\x00\x87\x00\x93\x00\x9f\x00\xab\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01\x114#!\"\x15\x11\x143!2%\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x05\x14+\x01\"=\x014;\x012\x15\x05\x14+\x01\"=\x014;\x012\x15%\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\x17\x14+\x01\"=\x014;\x012\x15\a\x14+\x01\"=\x014;\x012\x15\x02\x10\x14\x1c\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe8\b\xfe \b\b\x01\xe0\b\xfe\x92\f\x1c\f\f\x1c\f`\f\x1c\f\f\x1c\f`\f\x1c\f\f\x1c\f`\f\x1c\f\f\x1c\f\xfe\xb0\f\x1c\f\f\x1c\f\x01\x80\f\x1c\f\f\x1c\f\xfe\x80\f\x1c\f\f\x1c\f`\f\x1c\f\f\x1c\f`\f\x1c\f\f\x1c\f`\f\x1c\f\f\x1c\f`\f\x1c\f\f\x1c\fb\f\xd8\f\f\xd8\f\x01\x80\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c\xfe\xb0\x01 \b\b\xfe\xe0\b\x8a\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\fn\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x88\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\f\x1c\f\f\xba\f\f\x10\f\f\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1f\x00'\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x0154;\x012\x1d\x01354;\x012\x1d\x01\x1325\x11!\x11\x143\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x140\f(\f\x80\f(\f*\x06\xfe\xa0\x06\x01\x80\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c4\f\f44\f\f4\xfep\x06\x01*\xfe\xd6\x06\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\f\x00\x14\x00\x1c\x00\x00%\x16\x14\x0f\x01\x06.\x01=\x0146\x17\x04\x14\x06\"&462\x04\x14\x16264&\"\x01t\f\f\xb0\t\x10\v\x18\f\x014\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\xd2\a\x1c\ae\x04\x03\r\t\xd0\x0e\x0e\a\x16Α\x91Α\xa5\xa6uu\xa6u\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\v\x00\x1b\x00'\x00\x007\"=\x014;\x012\x1d\x01\x14#7\x11\x14\x06#!\"&5\x11463!2\x16\x03\x114#!\"\x15\x11\x143!2l\f\f\xe8\f\fl\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c0\x06\xfe\xac\x06\x06\x01T\x06\xa4\f \f\f \f\xcc\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xfe\x92\x01T\x06\x06\xfe\xac\x06\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x0f\x00\x13\x00#\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01\x11!\x11%\a\x06/\x01&?\x016\x1f\x0176\x1f\x01\x16\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\xfe\xa0\x01<\xac\t\b[\t\t\x17\b\t;\x8e\b\t\x16\t\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfep\x01`\xfe\xa0\xf2\xab\t\t[\t\b\x17\b\b=\x8c\t\t\x16\t\x00\x00\x03\x00\x00\xff\xc0\x02A\x01\xc9\x00\x1c\x002\x00Y\x00\x00\x01\x16\x14\x0f\x01\x06&=\x01\x0e\x01\x14\x17\x16\x06'.\x015476767546\x17\x037'\x15\"\x0e\x04\x15\x14\x17.\x01>\x057\x17676\x16\x1d\x01\x14\x06#!\"&5\x1146;\x012\x1d\x01\x14\a\x06\a\x06+\x01\"\x15\x11\x143!2=\x014\x022\x0e\x0e\x90\x17;1+\b\v6\x1c(-$\x1e50I;\x17\"\x90\x90!0<*&\x13>\a\x04\b\x10\x1a\x1f))\x1a\x19\v\n\x06\f\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x84\f\b\x14\x12\x03\x03V\x06\x06\x01T\x06\x01\"\x0e(\x0e\x90\x17\x19 6\x04\x13 \x18 )\x11\x19K-;(!\x11\x0f\x039 \x18\x16\xfe\xbe\x90\x90h\x03\b\x11\x19)\x1aA'\x16%\x1c\x16\x0f\n\a\x02\x01\xbc\x03\x06\x04\a\a+\x14\x1c\x1c\x14\x01`\x14\x1c\f\x04\t\x03\b\n\x02\x06\xfe\xac\x06\x06\x1a\t\x00\x00\x00\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\r\x00\x15\x00\x1d\x00%\x00\x00\x016\x16\x0f\x01\x06\x0f\x01\x06&?\x0167\x1664&\"\x06\x14\x16\x022\x16\x14\x06\"&4\x12264&\"\x06\x14\x01\\\f\x14\x06B\x05\v\x90\f\x14\x06B\x05\v9\x13\x13\x1a\x13\x13ZΑ\x91Α\xa5\xa6uu\xa6u\x01>\x06\x14\f\x90\v\x05B\x06\x14\f\x90\v\x05\\\x13\x1a\x13\x13\x1a\x13\x01\x18\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\n\x00\x1a\x00&\x00\x00732\x16\x0f\x01\x06/\x01&6%\x11\x14\x06#!\"&5\x11463!2\x16\x03\x114#!\"\x15\x11\x143!2}\xc6\b\x06\x06c\b\bc\x06\x06\x01K\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c0\x06\xfe\xac\x06\x06\x01T\x06\xf0\x0f\x05c\b\bc\x05\x0f\x80\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xfe\x92\x01T\x06\x06\xfe\xac\x06\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\n\x00\x1a\x00&\x00\x00%#\"&?\x016\x1f\x01\x16\x067\x11\x14\x06#!\"&5\x11463!2\x16\x03\x114#!\"\x15\x11\x143!2\x01C\xc6\b\x06\x06c\b\bc\x06\x06u\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c0\x06\xfe\xac\x06\x06\x01T\x06\x90\x0f\x05c\b\bc\x05\x0f\xe0\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xfe\x92\x01T\x06\x06\xfe\xac\x06\x00\x00\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\n\x00\x1a\x00&\x00\x007546\x1f\x01\x16\x0f\x01\x06&\x01\x11\x14\x06#!\"&5\x11463!2\x16\x03\x114#!\"\x15\x11\x143!2\xb0\x0f\x05c\b\bc\x05\x0f\x01\x10\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c0\x06\xfe\xac\x06\x06\x01T\x06]\xc6\b\x06\x06c\b\bc\x06\x06\x01\x1b\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xfe\x92\x01T\x06\x06\xfe\xac\x06\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc1\x00\x11\x00\x14\x00\x1d\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01'\x15\x03!\x11#\"&=\x01#\x01r\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e.L\xd0\x01 h\n\x0e\xa0\x01^\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0erLL\xfe\xb0\x01 \x0e\nh\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\v\x00\x17\x00)\x00,\x005\x00\x00%\x15\x14+\x01\"=\x014;\x012\a2\x1d\x01\x14+\x01\"=\x0143%\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01\x16'\x153\x13\x11#\"&=\x01#\x11\x01 \f\xa8\f\f\xa8\f\f\f\f\xa8\f\f\x01\x14\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0eT\x0e\x80L\x04h\n\x0e\xa0\xc8\x1c\f\f\x1c\fT\f\x1c\f\f\x1c\f\xbc\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0eT\x0e\x027>\x0232\x16\x15\x14\a32\x1e\x01\x15\x14\a>\x01'2654&+\x014654.\x03#\x0e\x01\a\x0e\x03+\x01\x152\x16;\x012'>\x01\x044&\"\x06\x14\x162\x01\xd2\a\x10\x05\x16\x01\x173&\x03\x10\x03-E/\x11\x03\x11\v@\r\x13\x13\rc\b\x18\x1b\n\x03\f\x1d\x1b-3\t$\x18(\x16K\x0f\x01\v\a\x0f\x16\x10h\x1d\x01\x05\t\x13\x0e\b\x0e\x10\a\x1c\x16\x1b\n\v\x19m&%@\n\f\n\xfe\xbb\x0e\x14\x0e\x0e\x14\xa1!\x1e$\x1f\x1c*\x19\x14\x14\n\x0e\x13\r\xf0\r\x13\a #\t\x04:/45\x17\x17\x19'\x16\x1aN\x0f)\n\x18\x0e\x0e\x18\x129\x13\n\v\x12\n\b\bG\x10\a%\x1d\x18\xba&B\a\"U\x14\x0e\x0e\x14\x0e\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xe0\x01\xc0\x00.\x006\x00[\x00\x00%\x16\x15\x14\x06+\x01\x16\x15\x14\x06#\".\x01'.\x01'#\x06+\x01\"&=\x0146;\x012\x1732>\x013:\x0132\x16\x17\x16\a\x16\x04264&\"\x06\x14\x052>\x0154&'6&'6+\x01\"\x06#\x1532\x1e\x01\x17\x1e\x01\x172>\x0254&5\x01\xd2\x0e2$$\t3-\x1b\x1d\f\x03\v0\n\a\n\x12@\r\x13\x13\r@\f\t\v\x0f.G-\x03\x10\x0388\x01\x16\x05\x10\xfe]\x14\x0e\x0e\x14\x0e\x01b\n\x12\n\x0f\a\v\x01\x0f\b\n\f\n@%&m\x19\v\f\"(\b\x10\x0e\b\x11\x15\b\x02\x1d\xdf\x18\x1a\"4\x17\x1754/:\x04\v?\t\x10\x13\r\xf0\r\x13\b\x14\x143,\x1f$\x1eh\x0e\x14\x0e\x0e\x14\x1f\v\x12\t\x0e\x18\n)\x0f\x10\"\aB&\xba#6\b\x10G\b\n\x14\x0e\r\x139\x12\x00\x04\x00\x00\xff\xc0\x02\x01\x01\xc1\x00(\x008\x00@\x00H\x00\x00%\x16\x14\x0f\x01\x17\x16\a\x06/\x01\a\x06\"/\x01\a\x06&?\x01'&4?\x01'&6\x1f\x01762\x1f\x0176\x16\x0f\x027'7\a'\a'\x17\a\x17\a7\x177\x17&2\x16\x14\x06\"&4\x16264&\"\x06\x14\x01\xee\x12\x12<\x0e\x04\x0f\x0f\x15G(\r+\f(G\x15\x1e\x04\x0e<\x12\x12<\x0e\x04\x1e\x15G(\f,\f(G\x15\x1e\x04\x0e5MM\x12[44[\x12MM\x12[44[\xbaV==V=Q.!!.!\xe2\f+\f)G\x15\x0f\x0f\x04\x0e<\x12\x12<\x0e\x04\x1e\x16F)\f+\f)G\x15\x1e\x04\x0e<\x11\x11<\x0e\x04\x1e\x15G\u007f54[\x12MM\x12[44\\\x12MM\x12\xf7=V==Vc!.!!.\x00\x00\x02\x00\x17\xff\xc0\x01\xf4\x01\xc0\x00\x16\x00&\x00\x00\x05\"&4632\x17\x1e\x01\x06\a\x0e\x01\x15\x14\x1676\x16\a\x0e\x01\x03\"\x06\x14\x163267\x06&5467&\x01\x17j\x96\x96j\x18\x17\x15\x16\t\x13\x1f%a>!\"\x15$h;VzzV0U\x1dT\x842*\x13@\x96Ԗ\x04\x04#(\n\x12>$?P\f\x069\x1a-2\x01\xd0z\xacz)$\x10mU2T\x18\x03\x00\x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\n\x00\x1a\x00&\x00\x00\x01\x15\x14\x06/\x01&?\x016\x167\x11\x14\x06#!\"&5\x11463!2\x16\x03\x114#!\"\x15\x11\x143!2\x01\x10\x0f\x05c\b\bc\x05\x0f\xb0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c0\x06\xfe\xac\x06\x06\x01T\x06\x01#\xc6\b\x06\x06c\b\bc\x06\x06E\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1c\xfe\x92\x01T\x06\x06\xfe\xac\x06\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x00\x00\"\x06\x14\x16264$2\x16\x14\x06\"&4\x162\x16\x14\x06\"&4\x01S\xa6uu\xa6u\xfe\xd1Α\x91Α\xd7B//B/\x01\x88u\xa6uu\xa6\xa5\x91Α\x91\xce\x17/B//B\x00\x00\x00\x00\b\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\v\x00\x17\x00#\x00/\x00;\x00G\x00Y\x00e\x00\x00\x1354;\x012\x1d\x01\x14+\x01\"3\"=\x014;\x012\x1d\x01\x14#\a\"=\x014;\x012\x1d\x01\x14#3\"=\x014;\x012\x1d\x01\x14#\a\x14+\x01\"=\x014;\x012\x15\x17\"=\x014;\x012\x1d\x01\x14#\x17\x15!54;\x01\x11463!2\x16\x15\x1132%354;\x012\x1d\x013\x11%\x80\f(\f\f(\f\x8c\f\f(\f\f\xa8\f\f(\f\fX\f\f(\f\ft\f(\f\f(\fL\f\f(\f\f\x8c\xfe@\f\x14\x0e\n\x01P\n\x0e\x14\f\xfe\x90p\f(\fp\xfe\xe0\x01,(\f\f(\f\f(\f\f(\f`\f(\f\f(\f\f(\f\f(\fT\f\f(\f\f4\f(\f\f(\f|$$\f\x01\xb8\n\x0e\x0e\n\xfeH\x01C\f\fC\x01\x9e\x01\x00\x00\x00\x00\b\x00\x00\xff\xc0\x01\x80\x01\xc1\x00\x11\x00\x14\x00\x1d\x007\x00=\x00D\x00J\x00Q\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01'\x15\x03!\x11#\"&=\x01#\x13\x16\x06#\"'\x06\a\x06'&76767&76\x16\x17\x16\a\x16\x176\a\x14>\x017\x067\"\x14\x16\x1764\a67&'\x06\x176&\a\x1e\x017\x01r\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e.L\xd0\x01 h\n\x0e\xa0\xfa\n\n\x11\x19\x1f\x0f6'\x1b\f\x02\x05.\x10\x14\r\x06\x03$\x03\x05\n\f\x193\xb9\a\x0f\b\x1aN\x02\x01\x03\x03\x1e-\n\x12\f\rx\x05\x15\x15\x0e\x13\x02\x01^\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0erLL\xfe\xb0\x01 \x0e\nh\xfe\xf0\b\x1f\x11\x03\x11D\x11\a\r\x16\x18\x1c.0\x13\x0f\x02\x13\x0e*\x1f\x0f\a[\x01\x05\x11\x0e\x19\xb4\x0e\x14\x06\x06\"\x88\x11\x02\r\x17#\x0f\x03\x06\x01\x06\x04\x01\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc1\x00\x11\x00\x14\x00\x1d\x00R\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01'\x15\x03!\x11#\"&=\x01#\x1732\x1e\x01\x15\x06\a\x06+\x01\"'&/\x01\x14\x0f\x01\x06+\x01\"'.\x02'&6;\x012\x17\x16\x15\x14\x17476;\x012\x17\x16\x17\x1c\x011676\x01r\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e.L\xd0\x01 h\n\x0e\xa0\xdc\x10\x04\x06\x02\n\x19\x02\n\x18\n\x02\a\v\x03\x03\x12\x02\t\x19\n\x02\x03\r\x0e\x03\x02\b\x05\x11\n\x02\x13\x01\x18\x03\t\r\n\x02\x17\x01\x01\x14\x02\x01^\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0erLL\xfe\xb0\x01 \x0e\nh\xd0\x04\a\x04&b\t\t\x1d+\x11\b\tH\t\t\v78\x0e\x06\t\n`\x03\x01\x03\x06b\t\ta\x03\x01\x03\x06a\n\x00\x00\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc1\x00\x11\x00\x14\x00\x1d\x00B\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01'\x15\x03!\x11#\"&=\x01#\x172\x16\a\x06\a\x17\x16\x06+\x01\"'&'\x06\a\x06+\x01\"&?\x01'&6;\x012\x17\x16\x176763\x01r\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e.L\xd0\x01 h\n\x0e\xa0\xd4\a\a\x04#\v.\x04\a\a\x1d\a\x03\x02\x1b\f\x11\x03\a\x1d\a\a\x04..\x04\a\a\x1d\a\x04\t\x13\t\x14\x03\a\x01^\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0erLL\xfe\xb0\x01 \x0e\nh\xb0\f\x06=\x11N\x06\f\x06\x037\x1b\x1f\x06\f\x06NN\x06\f\x06\x12(\x16$\x06\x00\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc1\x00\x11\x00\x14\x00\x1d\x006\x00>\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01'\x15\x03!\x11#\"&=\x01#\x1354;\x012\x16\x15\x14\x0e\x06*\x01#\x15\x14\x06+\x01\"73264&+\x01\x01r\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e.L\xd0\x01 h\n\x0e\xa0H\fE\x1c#\x04\x06\v\t\x0f\n\x10\b\x0f\x02\a\x05\x18\f0\x18\v\r\r\v\x18\x01^\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0erLL\xfe\xb0\x01 \x0e\nh\xfe\x9c\xa8\f%\x1d\v\x12\r\v\x06\x05\x02\x01/\x05\ac\x0f\x17\x0e\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc1\x00\x11\x00\x14\x00\x1d\x00(\x000\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01'\x15\x03!\x11#\"&=\x01#\x13576\x1f\x0176\x1f\x01\x15&2\x16\x14\x06\"&4\x01r\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e.L\xd0\x01 h\n\x0e\xa0 (\b\b(X\b\b\x18\xc4(\x1c\x1c(\x1c\x01^\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0erLL\xfe\xb0\x01 \x0e\nh\xfe\x90@(\b\b(X\b\b\x18\x80\xf0\x1c(\x1c\x1c(\x00\n\x00\x00\xff\xc0\x01\x80\x01\xc1\x00\x03\x00\a\x00\v\x00\x0f\x00!\x00$\x001\x00@\x00L\x00P\x00\x00\x133\x15#7\x15#5\a3\x15#3\x15#57\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x17\a\x153\x13\x11#\"&=\x01#\x15#5#\x117\x17\x16\x0e\x01#\"&?\x0153\x1532\x062654.\x01\"\x0e\x01\x15\x147\x15#5\x80 @ @ \xd2\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e\x1eL\x04h\n\x0e0 P\x92\x12\x03\r\x1a\x10\x19\x1f\x05\x13 \x16\n-\x1b\x13\t\x0f\x12\x0e\t@ \x01 \x80 \x1e\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0e&L\xfe\xb0\x01 \x0e\nh\x10\x10\xfe`\xc6W\x10\x1d\x12'\x18a \x86\x10\v\a\r\a\a\r\a\v\xb6 \x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00\x14\x00\x1d\x00/\x00=\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01'\x15\x03!\x11#\"&=\x01#\x13\x14\x06/\x01#\"&=\x0146;\x0176\x16\x15\x1764'&>\x01\x17\x16\x14\a\x06.\x01\x01r\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e.L\xd0\x01 h\n\x0e\xa0\x90\x0f\x05$\x1c\x05\a\a\x05\x1c$\x05\x0f)\a\a\n\t\x18\f\x14\x14\v\x1a\a\x01^\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0erLL\xfe\xb0\x01 \x0e\nh\xfe\xac\b\x06\x06$\a\x058\x04\b$\x06\x06\bY\a\x14\a\n\x1b\x06\n\x15:\x15\v\b\x18\x00\x00\x00\x04\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x11\x00\x14\x00\x1d\x007\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x1f\x01'\x15\x03!\x11#\"&=\x01#\x176\x16\x1d\x01\x14\x06/\x01\x15\x14\x06+\x01\"&=\x0146;\x012\x16\x1d\x01\x01r\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e.L\xd0\x01 h\n\x0e\xa0\xe5\a\x14\x14\a5\f\bh\b\f\f\bh\b\f\x01^\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0erLL\xfe\xb0\x01 \x0e\nh\xcd\b\b\vp\v\b\b4%\b\f\f\bh\b\f\f\b%\x00\x06\x00\x00\xff\xc0\x01\x80\x01\xc1\x00\x12\x00$\x00'\x000\x00<\x00M\x00\x007\x16\x0f\x01\x06#\"/\x01&?\x016\x1f\x01\x15\x16\x0f\x017\x16\x15\x11\x14\x06#!\"&5\x1146;\x012\x17\a\x153\x13\x11#\"&=\x01#\x117\x17\x16\x0f\x01\x06/\x01&?\x016\x17&?\x016\x1f\x01\x16\x0f\x01\x06/\x015&?\x01\x96\x06\x06\x11\x03\x04\x03\x039\a\a9\a\x06\x11\x06\x06!\xfd\x0e\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\xcc\x14\x0e\x1eL\x04h\n\x0e\xa0\xa2\x18\t\x037\x02\t\x18\t\x037\x02!\x06\x06\x11\x06\a9\a\a9\a\x06\x11\x06\x06!c\x06\a\x12\x03\x036\x06\x066\a\a\x12\x01\x06\x06\x1d\xde\x0e\x14\xfe\xb4\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x0e&L\xfe\xb0\x01 \x0e\nh\xfe`\xfa\a\x02\t\xbc\t\x03\a\x02\t\xbc\bO\x06\a\x12\a\a6\x06\x066\a\a\x12\x01\x06\x06\x1d\x00\x00\x06\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0e\x00\x16\x00\x1d\x00$\x00+\x00\x00\x04\"&462\x16\x14\x05\x1627'\x06'64&\"\x06\x14\x162\x1764'\a\x16\a'&\"\a\x176\x17\a\x06\x14\x177&7\x01gΑ\x91Α\xfe\xa1/p/522\x82/B//B\x8a\x1d\x1d5\x15\x15\x0f/p/522\xdd\x1d\x1d5\x15\x158\x91Α\x91\xceD\x1d\x1d5\x15\x15UB//B/\x17/p/522\xdd\x1d\x1d5\x15\x15\x0f/p/522\x00\x00\x00\x03\xff\xfe\xff\xbe\x02\x05\x01\xc9\x00\x15\x00\x18\x00!\x00\x00\x016\x16\a\x03\x06\a\x06#\"/\x01\a\x0e\x01&=\x01'.\x017\x177'\x17\x13\x05\x1776\x16\x0f\x01\x01\xb8\x1a2\x04<\x04\x14\v\f\n\tp+\x0e) r\x1c\x04\x1a\xa8%%\xd5;\xfe`l\xd3\v\x15\b\x8c\x01\xba\x0e!\x1e\xfe|\x17\v\x06\x03.;\x11\x04\x1c\x16T0\v<\x0f\xda2\x0f$\x01\x83\xf0-\xb9\t\x13\f\xca\x00\x00\x00\x00\x06\xff\xec\xff\xc8\x02\x04\x01\xb8\x00\x10\x00\x19\x00 \x00'\x00.\x005\x00\x00\x01\x16\x06\a\x06#\"&'&67632\x1e\x01\a6767'\x0f\x01\x177&'\a\x15\x177'\x06\a\x1f\x0175\x037/\x01\a\x16\x1f\x01\x16?\x01'#\a\x01\xe4 ^a&'O\x84\x19 ^a&'4_H:\f\x05\x15\x01'G\x19,4%=/@G\xd6<&\nG@]+\x18G'\x01%e:@\x16,O+\x01\rb\xb7 \f^Mb\xb7 \f*N\xf5\x10\n*/%\x16L=\xf24\x14\x1aJ/\x16}\x1445\x16/J\xfe\xe0>J\x17%?4I\x13\x130==\x00\x00\x00\t\x00\x00\x00\x00\x02@\x01\x80\x00\x13\x00\x19\x00\x1f\x00+\x00/\x00;\x00G\x00S\x00_\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01>\x013\x03\x142=\x01#\x01\x11!\x11\x14\a7\"=\x014;\x012\x1d\x01\x14#'\x1535\a54;\x012\x1d\x01\x14+\x01\"754;\x012\x1d\x01\x14+\x01\"=\x014;\x012\x1d\x01\x14+\x01\"\x1554;\x012\x1d\x01\x14+\x01\"\x02(\n\x0e\x0e\n\xfe\x10\x17!\x0e\n+\x05\x19\x0f@\x10\x10\x01\xe0\xfe`\x01=\f\f\x88\f\flPx\f\x88\f\f\x88\f\xc0\fh\f\fh\f\fh\f\fh\f\fh\f\fh\f\x01\x80\x0e\n\xfe\xb0\n\x0e!\x17\x01\x10\n\x0e\x0e\x12\xfe\xb8\b\b\xf8\xff\x00\x01 \xfe\xe8\x04\x04x\f`\f\f`\fP((\x8c\x18\f\f\x18\f\f\x18\f\f\x18\f\x9c\x18\f\f\x18\f<\x18\f\f\x18\f\x00\x00\x04\xff\xf9\xff\xb9\x02\x87\x01\xc7\x00\v\x00\x1e\x008\x00@\x00\x00\x05\x16\x0f\x01\x06'\x01&?\x016\x17\x133\x17!\"&54767>\x045\x17\x067\"\a'675462\x16\x1d\x01\x1e\x02\x15\x14\x17'&5414&\x03\"&53\x14\x0e\x01\x02z\f\n\n\n\f\xfd\xaa\f\n\n\n\f\x80\xb6>\xfe\xe8\x0e\x12\t\x01\x02\b\t\x10\t\t.\t|\"\x1d&\x1f&\x13\x1a\x13%:!\x0e;\x03B.\x1a&\x80\x11\x1e\x17\n\r\f\f\n\x01\xd3\n\r\f\f\n\xfe\x940\x13\r\f\n\x01\x02\t\n\x1a\x1a*\x18#D\xe5\x13\x1d\x19\b\x15\r\x13\x13\r\x15\a,B&7&/\x17\x16\x01.B\xfe`%\x1b\x11\x1e\x11\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x004\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14\x05\x06#\"&54>\x0132\x17\x16\x15\x14\x0f\x01\x06'&#\"\x0e\x01\x15\x14\x163276\x16\x1f\x01\x16\x15\x14\x99Α\x91Α\xa5\xa6uu\xa6u\x013)?=O$@(;&\x04\x02\x12\a\v\x1c!\x18$\x12*$$\x1e\x04\n\x04\x14\x02\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x10)Q<'@%#\x04\x05\x03\x03\x1d\v\t\x16\x15%\x16\"2\x1b\x04\x01\x04\x1b\x04\x04\x04\x00\x04\x00\x00\x00\x00\x02\x00\x01\x80\x00\x0f\x00\x1b\x003\x00K\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x0125\x114#!\"\x15\x11\x1437\x16\a\x0e\x01&546\x16\x17\x16\x0f\x01\x06'&\x06\x15\x14\x1676\x1f\x01\x16\a\x0e\x01&546\x16\x17\x16\x0f\x01\x06'&\x06\x15\x14\x1676\x17\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\x9a\x06\x06\xfel\x06\x06\xc1\x03\x04\x1aR@AR\x19\x03\x02\x11\x04\x06\x1e@=\x1f\x05\x04\xd2\x03\x03\x1bR@AR\x19\x03\x01\x12\x04\x05\x1f@>\x1e\x06\x04\x01\x80\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \x14\x1c\xfe\xb0\x06\x01\x14\x06\x06\xfe\xec\x06V\x04\x04\x1c\x056/.4\x03\x19\x03\x03\x1e\x06\x04\x18\x15\"%\x17\x1b\x05\x06\x1b\x04\x04\x1c\x056/.4\x03\x19\x03\x03\x1e\x06\x04\x18\x15\"%\x17\x1b\x05\x06\x00\t\x00\x00\xff\xe0\x02\x00\x01\xa0\x00+\x00/\x003\x007\x00;\x00O\x00c\x00g\x00o\x00\x00\x01#\x1132\x1d\x01\x14+\x01\"=\x01!\x15\x14+\x01\"=\x014;\x01\x11#\"=\x014;\x012\x1d\x01!54;\x012\x1d\x01\x14'\x1535!\x1535\x115#\x15!5#\x15'\x11#\"=\x01!\x15\x14+\x01\x1132\x1d\x01!543'2\x1d\x01\x14+\x01\"=\x01#\"=\x014;\x012\x1d\x01'\x1535\x175#\x15\x14+\x01\x15\x01\xf4\f\f\f\fH\f\xfe\xc0\fH\f\f\f\f\f\fH\f\x01@\fH\f@ \xfe@ \x01\xc0 \b\f\f\xfe\xc0\f\f\f\f\x01@\f\x18\f\f\xc8\fT\f\f\xc8\f\xb8\x90`8\fL\x01@\xff\x00\fH\f\f\f\f\f\fH\f\x01\x00\fH\f\f\f\f\f\fH\f@ \xfe\x80 @\x01\x00\f\f\f\f\xff\x00\f\f\f\f\xc0\f\xa8\f\f4\f\xa8\f\f4\x18pp\xb0pL\f\x18\x00\x00\x00\x00\n\x00\x00\xff\xe0\x02@\x01\xa0\x00C\x00G\x00K\x00O\x00S\x00g\x00k\x00\x87\x00\x8b\x00\x8f\x00\x00%#\x1532\x1d\x01\x14+\x01\"=\x01#\x15\x14+\x01\"=\x014;\x015#\x15\x14+\x01\"=\x014;\x015#\"=\x014;\x012\x1d\x01354;\x012\x1d\x01\x14+\x01\x15354;\x012\x1d\x01\x14'\x1535\x03\x1535\x055#\x15\x135#\x15\x17354;\x015#\"=\x01#\x15\x14+\x01\x1532\x15\x175#\x15%5#\"=\x01#\x1532\x1d\x01\x14+\x01\"=\x01#\x1532\x1d\x013543\x175#\x15\x135#\x15\x024\f\f\f\fH\f\xe0\fH\f\f\fX\fH\f\f\f\f\f\fH\f\xe0\fH\f\f\fX\fH\f\xe0 \xfe\xc0 @\xe0\f\f\f\f\xe0\f\f\f\f\x80 \x018\f\fX\f\f\fH\fX\f\f\xe0\f4 \xe0\xa0\fH\f\f\f\f\f\fH\f\x18\f\f\fH\f\xa0\fH\f\f\f\f\f\fH\f\x18\f\f\fH\f\xa0 \xff\x00 \x01\x00 \xd8\f\f\xa0\f\f\f\f\xa0\f\x94 @\xa0\f\fX\fH\f\f\f\x18\f\f\f\f@ \x01\x00 \x00\x03\x00\x00\xff\xe0\x01\xc0\x01\xa0\x00\x11\x00\x14\x00\x1d\x00\x00%\x14\x0f\x01\x06#!\"&5\x11463!2\x16\x15\x037#\x13!\x113546;\x01\x01\xc0\x0eT\x0e\x14\xfe\xf4\x14\x1c\x1c\x14\x01`\x14\x1c\x80LLP\xfe\xa0\xe0\x0e\nhd\x14\x0eT\x0e\x1c\x14\x01`\x14\x1c\x1c\x14\xfe\xa4L\x01\x10\xfe\xa0h\n\x0e\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x19\x00(\x004\x00\x00\x012\x16\x15\x11\x14\x06+\x01\x15\x14\x06#!\"&5\x1146;\x015463\x132=\x01#\"&=\x01#\"\x15\x11\x143%25\x114#!\"\x15\x11\x143\x01\xd0\x14\x1c\x1c\x140\x1c\x14\xfe\xc0\x14\x1c\x1c\x140\x1c\x14\xda\x06\xe0\x14\x1c*\x06\x06\x01\x94\x06\x06\xfe\xcc\x06\x06\x01\xc0\x1c\x14\xfe\xc0\x14\x1c0\x14\x1c\x1c\x14\x01@\x14\x1c0\x14\x1c\xfe0\x06*\x1c\x14\xe0\x06\xfe\xcc\x06`\x06\x014\x06\x06\xfe\xcc\x06\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00%\x00+\x001\x00\x00\x01\x14\x06\a\x1e\x01\x1532\x1d\x01\x14#!\"=\x014;\x01467.\x015#\"=\x0143!2\x1d\x01\x14#!\x14\x16265\x114&\"\x06\x15\x01p2//2\x04\f\f\xfe\x98\f\f\x042//2\x04\f\f\x01h\f\f\xfe\xccKjKKjK\x01\x90?s\x1e\x1es?\f\x18\f\f\x18\f?s\x1e\x1es?\f\x18\f\f\x18\fLllL\xfe`LllL\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa1\x00)\x00p\x00\x00\x016\x16\x1d\x01\x14\x0f\x01\x06\x15\x14\x06+\x01\"&5<\x05&4&/\x01&=\x0146\x17>\x01\x1762\x176\x16\x1754&\x06\x15\x14\x06+\x01\"&=\x014&\x06\x1d\x01\x14\x06+\x01\"&=\x014&\x06\x1d\x01\x14\x06+\x01\"&=\x014&\x06\x1d\x01\x14\x06#\"/\x01&=\x014&\x06\x1d\x01\x14\x1f\x01\x16\x1d\x01354?\x016\x01\x99$C\t+\x04\x13\r\xfc\r\x13\x01\x01\x01b'8#\x02I$\x16@\x16\x18:H\x1a\x1a\t\a\a\a\t\x1a\x1a\t\a\a\a\t\x1a\x1a\t\a\a\a\t\x1a\x1a\t\a\x06\x05\a\x05\x1a\x1a\x17a\x14\xdc\b+\x05\x01q\x10,(r\x18\x15d\t!\r\x13\x13\r\x04\b\x05\x05\x03\x03\x02\x01\x01\x01U\"49#,\b)(\x14\x17\x17\x0e\r\xcfr\x10\r\r\x0f\a\t\t\a\x1a\x11\r\r\x10\x1b\a\t\t\a(\x10\x0e\r\x10)\a\t\t\a\x1a\x11\r\r\x10t\a\t\x04\x06\x04\b)\x10\r\r\x0f9\x1e\x14U\x11\x1a\n\a\x14\x12d\f\x00\x00\x00\x00\x02\xff\xfc\xff\xbf\x01\xc0\x01\xc1\x00\x1d\x00Y\x00\x00\x016\x16\x1d\x01\x14\x0f\x01\x0e\x01+\x01\"/\x01&676\x17546\x17>\x01\x176\x16\x15\x1754&\x06\x1d\x01\x14\x06+\x01\"&=\x014&\x06\x1d\x01\x14\x06+\x01\"&=\x014&\x06\x1d\x01\x14\x06+\x01\"&=\x014&\x06\x1d\x01\x14\x06/\x01.\x01\x0e\x01\x14\x1f\x01376\x01u\x1d.\x05\x1e\x03\x11\f\xde\x11\nw\x10\b\x16\x1d!3 \x12P\x14\x1f4\x1b\x12\x13\t\a\x06\a\t\x13\x12\t\a\a\x06\n\x12\x12\n\x06\a\a\t\x13\x12\x16\a\x1b\x04\f\n\a\x04s\xca\x1b\x04\x01O\x05)\x1e\x84\x17\x16\x83\v\x0e\r\xa9\x167\x10\x15\f~!(\b$\x02%\b)!ф\f\n\n\rL\a\t\t\a\x9a\f\v\n\f\x9b\a\t\t\a\xbc\f\v\n\f\xbd\a\t\t\a\x99\f\v\n\f\xce\f\a\t&\x06\x03\x04\t\f\x06\xa2w\x11\x00\x00\x00\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa6\x00 \x00]\x00\x00\x05\"&7.\x017#\"&463\x17'.\x01>\x01\x1f\x016\x1f\x01\x16\x1d\x01\x14\x06\x0f\x01\x06#'32?\x016=\x014/\x01&\x0f\x01\x06#\"/\x01&\a\x06\x17\x16\x1f\x01\x16\x1d\x01\x14\x06+\x01\"\x06\x16;\x012\x16\x1d\x01\x14\x06+\x01\"\x06\x16;\x012\x16\x1d\x01\x14\x06#\"\x06\x16\x01\x00\"(\n\x10\x11\x03X\x1f++\x1f^O\x1d\x18\x168\x1d\x91+1b\"\x1d\x17w\a\bFF\x02\x02w\x0f\tb\x0f\n\x16\x05\a\x03\x03\xa6\x17\n\v\x13\x03\x02\x9c\n\t\a\xb6\x10\x0e\x0e\x10\xb6\a\t\t\a\x1c\f\n\n\f\x1c\a\t\t\a\f\n\n 6 \n#\x14+<+\t\x13\v88\x18\v85\x1c7\x13'\xcd\x17%\x05\x1b\x020\x01\x1b\x03\x0f\xcd\v\x057\b\f\x1b\x06\x01@\t\x14\x15\f\x01\x02;\x04\v\f\x06\n\x19\x19\n\x06\a\a\t\x12\x13\t\a\x06\a\t\x13\x12\x00\x02\x00\x00\xff\xe0\x02@\x01\xa0\x00\x1c\x00A\x00\x00%\x16\x1d\x01#5'&+\x01\"&546;\x017#\"&=\x01463!2\x17\x1354/\x01&#!\"\x1d\x01\x14\x16;\x012\x16\x0f\x01\x0e\x02+\x01\"\x06\x15\x14;\x012\x1f\x01\x1e\x01\x1d\x01\x02-\x13\xe0d\x04\x04\x84\x17!4$r\x12\xc4!/!\x17\x01&'\x15v\f\x92\a\r\xfe\xda\b\x13\r\xd5\x13\x16\a\x18\x04\x0e\x12\tr\x11\x17\b\x84\r\rc\x0e\x11\x9d\x1d$|H&\x02!\x17$40/!\b\x17!!\xfe\x91L\x15\x12\xe2\v\b\b\r\x13\x1f\x12@\t\x0e\b\x17\x11\b\x05'\x05\x18\x0f\x18\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x01\x01\xc3\x003\x00g\x00\x00\x01\x16\x15\x14\x0f\x01\x0e\x01+\x02\".\x02/\x01.\x025476\x17'&5467&54676\x1e\x01\x1f\x017>\x0232\x1e\x02\x176\a6&\x06\x0f\x01\x06&?\x016&\x06\x0f\x01\x06\"/\x01.\x01\x06\x1f\x01\x16\x06/\x01.\x01\x06\x1f\x01\x16\x15\x14\x06/\x01&\x0e\x01\x1f\x01\x1e\x01;\x02267\x01\xf5\v\x02:\tI*k\x01\f\x1e\x1c\x1a\t\\\x06\v\x06\x14\x1c(\x18\x03(\x1c\x01!\x17\x15&\x1a\x04\x0e\x05\x03\x16\x1f\x10\x06\x0f\x18\x15\x05+\x0f\x04\x16\x1c\x04\x19\x03\x1b\x02\x1d\x03\x16\x1c\x03 \x03\x1a\x04/\x04\x1c\x16\x04+\x03\x1c\x04 \x04\x1d\x15\x05$\n\t\x044\v\x1c\x06\n[\r+\x11\x01k\x1a.\x06\x01L\x12\x15\b\t\xf2(:\a\v\x0f\tV\x06\x13\x14\t\x1d\x15\x1e\bR\v\n\x1c+\x03\x03\x04\x18*\x06\x05\r\x1c\x116\x17\x10\x1b\x10\x03\t\x19\x11\x02R\x10\x13\a\x10h\x0e\a\r\x8b\x11\x13\b\x10\x9b\r\r\xb8\x0f\a\x14\x0f\xa5\x0e\b\x0ei\x10\x05\x14\x0fz\"$\x05\x04\x030\f\v\x1a\fV\f\x11$\x19\x00\x00\x05\xff\xfc\xff\xc0\x01\xc0\x01\xc0\x00\x1e\x00^\x00p\x00\x80\x00\x8c\x00\x00\x016\x16\x1d\x01\x14\x0f\x01\x0e\x01+\x01\"/\x01&676\x175462\x16\x1d\x016\x176\x16\x05&\x0e\x01\x1f\x01\x16;\x012?\x016=\x014&\x06\x15\x14\x0e\x01+\x01\"&=\x014&\x06\x1d\x01\x14\x06+\x01\".\x01=\x014&\x06\x1d\x01\x14\x0e\x01+\x01\"&=\x014&\x06\x1d\x01\x14\x06'\x17546;\x012\x16\x1d\x01\x14\x0e\x02+\x01\"&7546;\x012\x16\x1d\x01\x14\x06+\x01\"&754;\x012\x1d\x01\x14+\x01\"\x01f!9\x02\x1b\x05%\x17\xb2\"\x14m\x10\b\x16\x1d!'7'!\x17\x15-\xfe\xf9\a\x15\a\x06m\x06\t\xb2\x0f\x03\x1b\x01\x12\x13\x04\a\x05\x06\a\t\x13\x12\t\a\a\x04\b\x04\x12\x12\x05\a\x04\a\a\t\x13\x12\x16\aD\b\x06\x06\x06\b\x02\x04\x05\x03\x06\x06\bL\b\x06\x06\x05\t\t\x05\x06\x06\bK\x0e\x06\x0e\x0e\x06\x0e\x01\r\f(#T\b\aw\x17\x1d\x1c\x9a\x167\x10\x15\f\xa1\x1c''\x1cJ\x05\x18\n\vw\n\x04\x12\n\x9a\b\x0fw\x02\x02T\f\n\n\f\x04\b\x04\t\a\x15\f\n\n\f\x15\a\t\x04\b\x04#\f\n\n\f#\x04\b\x04\t\a\xaf\f\n\n\f\xf1\f\a\tR`\a\t\t\a`\x03\x06\x04\x03\t\a`\a\t\t\a`\a\t\t\a`\x10\x10`\x10\x00\x02\xff\xfa\xff\xc0\x01\xc0\x01\xc0\x00#\x00^\x00\x00\x016\x1e\x01\x1d\x01\x14\x0f\x01\x0e\x01+\x01\"/\x01&7'&676\x1e\x01\x1f\x01'462\x16\x1d\x016\x16\x1754&\x06\x15\x14\x06+\x01\"&=\x014&\x06\x1d\x01\x14\x06+\x01\"&=\x014&\x06\x1d\x01\x14\x06+\x01\"/\x01.\x01\x06\x1f\x01\x16\x15\x14\x0f\x01\x06\x1f\x01\x16;\x012?\x016\x01j\x15(\x19\x02\x1b\x05%\x17\xcd'\x137\x1c58\v\x18\x1c\x14%\x1f\a\x13\t+<+\x14#0\x12\x13\t\a\x06\a\t\x13\x12\t\a\a\x06\n\x19\x19\n\x06\f\v\x04;\x06\x1c\x13\x06@\x01\x06\x1b\f\b7\x05\v\xcd\x0f\x03\x1b\x01\x01\x00\a\x0e#\x16F\b\aw\x17\x1d\"b1+\x91\x1d8\v\a\x05\x19\x13O^\x1f++\x1fX\x03\x11\x96F\f\n\n\f\a\t\t\a\x1c\f\n\n\f\x1c\a\t\t\a\xb6\x10\x0e\x0e\x10\xb6\a\t\n\x9c\x0f\x03\x16\x10\xa6\x03\x03\a\x05\x16\n\x0fb\t\x0fw\x02\x00\x00\x04\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00,\x005\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14\x05\x16\x14\x0e\x01+\x01\"/\x01#\x15\x14\x06+\x01\"&=\x0146;\x012\x15\x14\a\x16'254.\x01+\x01\x15\x99Α\x91Α\xa5\xa6uu\xa6u\x016\x02\x03\x06\x03+\a\x030 \a\x05'\x04\b\b\x04Of(\x02: \x05\x12\x10\x1b\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6#\x03\a\x05\x03\x06ZT\x05\a\a\x05\xf8\x05\aU3\x16\x03)!\n\r\b@\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1b\x00;\x00C\x00\x00%\x15\x14+\x01\x15\x14+\x01\"=\x01#\"=\x014;\x0154;\x012\x1d\x01327\x11\x14\x06#!\"&5\x1146;\x0154;\x012\x1d\x01354;\x012\x1d\x0132\x16\x03\x11!\x11\x143!2\x01P\fL\f\x18\fL\f\fL\f\x18\fL\fp\x1c\x14\xfe\xa0\x14\x1c\x1c\x140\f(\f\x80\f(\f0\x14\x1c0\xfe\xa0\x06\x01T\x06\x9c\x18\fL\f\fL\f\x18\fL\f\fL\xa8\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c4\f\f44\f\f4\x1c\xfe\x92\x01*\xfe\xd6\x06\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\v\x00+\x003\x00\x007\"=\x014;\x012\x1d\x01\x14#7\x11\x14\x06#!\"&5\x1146;\x0154;\x012\x1d\x01354;\x012\x1d\x0132\x16\x03\x11!\x11\x143!2|\f\f\xc8\f\f|\x1c\x14\xfe\xa0\x14\x1c\x1c\x140\f(\f\x80\f(\f0\x14\x1c0\xfe\xa0\x06\x01T\x06x\f\x18\f\f\x18\f\xd8\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c4\f\f44\f\f4\x1c\xfe\x92\x01*\xfe\xd6\x06\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1b\x00;\x00C\x00\x00%\a\x06/\x01\a\x06/\x01&?\x01'&?\x016\x1f\x0176\x1f\x01\x16\x0f\x01\x17\x167\x11\x14\x06#!\"&5\x1146;\x0154;\x012\x1d\x01354;\x012\x1d\x0132\x16\x03\x11!\x11\x143!2\x018\x11\t\b66\b\t\x11\b\b66\b\b\x11\t\b66\b\t\x11\b\b66\b\x80\x1c\x14\xfe\xa0\x14\x1c\x1c\x140\f(\f\x80\f(\f0\x14\x1c0\xfe\xa0\x06\x01T\x06I\x11\b\b66\b\b\x11\t\b66\b\t\x11\b\b66\b\b\x11\t\b66\b\xfe\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c4\f\f44\f\f4\x1c\xfe\x92\x01*\xfe\xd6\x06\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00\x1f\x00'\x007\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x0154;\x012\x1d\x01354;\x012\x1d\x01\x1325\x11!\x11\x143%\a\x06/\x01&?\x016\x1f\x0176\x1f\x01\x16\x01\x90\x14\x1c\x1c\x14\xfe\xa0\x14\x1c\x1c\x140\f(\f\x80\f(\f*\x06\xfe\xa0\x06\x01\x1f\x8e\t\bK\t\t\x17\b\t,o\b\t\x16\t\x01\x80\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c4\f\f44\f\f4\xfep\x06\x01*\xfe\xd6\x06Ɏ\b\tK\t\b\x17\b\b-n\t\t\x16\t\x00\x00\x00\x04\x00\x00\xff\xe0\x02@\x01\xa0\x00!\x00%\x00*\x00/\x00\x00\x012\x16\x15\x11\x14\x0e\x01\x0f\x01\x06#\"/\x01\a\x06#\"&5\x114>\x01?\x01632\x1f\x0176\x05\x11\x17\x11\x0173\x11\a\x05\x11\a#\x11\x020\x06\n\x05\n\x05\x98\n\n\n\n\xac\xaa\x03\x03\x06\n\x05\n\x05\x98\n\n\n\n\xac\xaa\x03\xfe\xb3\x80\xfe\xd0\u007f\x01\x80\x01\xe0\u007f\x01\x01\xa0\t\a\xfe\xa6\x06\f\n\x025\x03\x03=?\x01\t\a\x01Z\x06\f\n\x025\x03\x03=?\x01:\xfe\xe2.\x01\x1e\xfe\xe6/\x01\x1e,\xfe\x01!/\xfe\xe2\x00\x00\x00\x00\x02\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x16\x00*\x00\x00\x012\x16\x15\x11\x14\x06+\x01\a\x06#\"=\x01#\"&5\x11463\x01\x114&#!\"\x06\x15\x11\x14\x16;\x01\x15?\x01326\x01\xc0\x1a&&\x1a\x90}\x03\x04\f`\x1a&&\x1a\x01\x90\t\a\xfe\x80\a\t\t\a\x90C\r\xa0\a\t\x01\xc0&\x1a\xfe\xe0\x1a&^\x02\fT&\x1a\x01 \x1a&\xfe\xa0\x01 \a\t\t\a\xfe\xe0\a\t<2\n\t\x00\x00\x00\x00\x04\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x1f\x00/\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%\x15\x14\x06+\x01\"&=\x0146;\x012\x16\a\x15\x14\x06+\x01\"&=\x0146;\x012\x16\x99Α\x91Α\xa5\xa6uu\xa6u\x01(\t\a0\a\t\t\a0\a\tp\t\a0\a\t\t\a0\a\t\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\xa3\xa0\a\t\t\a\xa0\a\t\t\a\xa0\a\t\t\a\xa0\a\t\t\x00\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\x1f\x00\x00\x00\x14\x06\"&462\x04\x14\x16264&\"\x17\x15\x14\x06+\x01\"&=\x0146;\x012\x16\x01\xf8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\xb3\t\a\xa0\a\t\t\a\xa0\a\t\x01'Α\x91Α\xa5\xa6uu\xa6ux\xa0\a\t\t\a\xa0\a\t\t\x00\x00\x00\x05\x00\x00\xff\xff\x02\x80\x01\x80\x00#\x00+\x00L\x00f\x00n\x00\x00\x013\x11#\"&5#\x06\x0f\x01\x0e\x01'\x06#\"'\x06&/\x01#\x14\x0e\x01+\x01\x11376;\x012\x17\x00264&\"\x06\x14\x056/\x01\a\x0e\x01&'&6?\x01#\"\x06#\a#\x153\x17\x166?\x01\x17\x16?\x01\x17\x16?\x015#'&+\x01\"\x0f\x01\x06\x14\x17\x166?\x016\x1f\x01\x16\x0f\x01\x17\x16\x17\x16264&\"\x06\x14\x02\ay@\r\x13:\x03\b\x1a\f#\x11\x13\x1e\x16\x13\x17;\x17U\t\t\x0e\t@v0\x10\x17\xe3\x17\x11\xfeQ\x0e\t\t\x0e\t\x01\x96\x05\x06l\t\x12-\x1d\t\x14\x02\x16'9\x01\x03\x01>*\x1ca\f!\n\x10%\t\t\x1e\x18\x06\x05\x84-=\x03\x03T\x0f\fA\b\a\x06\x15\a7\f\v\v\v\f\rg\x04\x04n\x0e\t\t\x0e\t\x01@\xff\x00\x13\r\r\n \x0f\t\a\x18\x10\x11\x02\x13L\t\x0e\t\x01\x000\x10\x10\xfe\xf0\n\r\t\t\r\x03\a\x05W\a\x11\x03\x0f\t\x16;\x15#\x02>\x80X\n\x04\r\x13 \a\n$\x13\x05\x06I\x80>\x02\v<\x06\x14\b\a\x01\x063\v\f\f\f\n\fS\x04\x040\n\r\t\t\r\x00\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x1d\x005\x00`\x00\x00\x01\x16\x15\x11\x14\x06#!\"&5\x114767>\x052\x1e\x04\x17\x16\x1354'&'\".\x02\"\x0e\x02#\x06\a\x06\x1d\x01\x143!2'\x16\a\x06\a\x0e\x05#\".\x03'&'&?\x016\x17\x16\x172\x1e\x0232>\x047676\x17\x01\xef\x11\x1c\x14\xfe`\x14\x1c\x12(_\x03\x12\f\x15\x11\x16\x14\x16\x12\x14\f\x12\x03d\x05\x02Q4\x01\x1b\x0e\x17\x10\x17\x0e\x1b\x01/V\x02\x06\x01\x94\x06 \b\n7\x10\x03\x12\f\x15\x11\x16\n\f\x19\x19\x0e\x1a\x01\x107\n\b\x0f\b\t7\x10\x01\x1b\x0e\x17\b\x06\r\f\x0f\v\r\x03\x107\t\b\x01\x1b\x0e\x17\xfe\xfa\x14\x1c\x1c\x14\x01\a\x16\x0f!K\x03\x0f\n\x0e\b\x06\x06\b\x0f\t\x0f\x03O\xfe\xbd\xfe\x02\x02B)\x17\n\f\f\t\x18%F\x01\x03\xfe\x06\xc2\n\a-\f\x03\x0f\n\x0e\b\x06\a\x10\n\x15\x02\f-\a\n\x12\t\a,\r\x17\n\f\x05\a\v\b\f\x02\r,\a\t\x00\x00\x04\x00\x00\xff\xc0\x01\xc0\x01\xc0\x00'\x00+\x003\x00H\x00\x00\x01#\x1532\x1d\x01\x14+\x01\x1532\x1d\x01\x14+\x01\x15\x14\x06#!\"&5\x11463!2\x16\x1d\x0132\x1d\x01\x14\x03\x11!\x116\"&462\x16\x14\a\"&=\x014632\x1632632\x16\x1d\x01\x14\x06#\x01\xb4\x14\x14\f\f\x14\x14\f\f\x14\x1c\x14\xfe\xc0\x14\x1c\x1c\x14\x01@\x14\x1c\x14\fP\xfe\xc0\xba4&&4&\x9a\t\r'\x1c\x04\x1a\x0f\x0f\x1a\x04\x1c'\r\t\x01 @\f(\f@\f(\f0\x14\x1c\x1c\x14\x01\xa0\x14\x1c\x1c\x140\f(\f\xfe\xd0\x01\xa0\xfe`\xd0&4&&4\xa6\v\b\x13\x18\"\b\b\"\x18\x13\b\v\x00\a\x00\x00\xff\xe0\x02@\x01\xa0\x00\x0f\x00\x13\x00\x1b\x000\x00<\x00H\x00T\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01\x11!\x116\"&462\x16\x14\a\"&=\x014632\x1632632\x16\x1d\x01\x14\x06#7\"=\x014;\x012\x1d\x01\x14#'\"=\x014;\x012\x1d\x01\x14#'\"=\x014;\x012\x1d\x01\x14#\x02\x10\x14\x1c\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe0\xfe \xba4&&4&\x9a\t\r'\x1c\x04\x1a\x0f\x0f\x1a\x04\x1c'\r\t>\b\bp\b\bp\b\bp\b\bp\b\bp\b\b\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfep\x01`\xfe\xa0\xb0&4&&4\xa6\v\b\x13\x18\"\b\b\"\x18\x13\b\v@\b\x10\b\b\x10\b@\b\x10\b\b\x10\b@\b\x10\b\b\x10\b\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\"\x004\x00\x00\x122\x16\x14\x06\"&4\x16264&\"\x06\x14&2\x16\x14\x06\"&4\x1227&'\x06#\"'\x06\a%654&\"\x06\x15\x14\x17632\x162632\xd0P88P8L(\x1c\x1c(\x1c7Α\x91Α\xae\x948\x18.\x1e\x1e\x1d\x1f-\x19\x01%%u\xa6u%)@\x03%$%\x03@\x01X8P88PX\x1c(\x1c\x1c(ԑΑ\x91\xce\xfe\xd10&\x02\n\n\x01'$4@SuuS@44\n\n\x00\x00\x05\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x0f\x00\x13\x00\x1f\x00'\x00<\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01\x11!\x11\x13\"&46;\x012\x16\x14\x06#\x06\"&462\x16\x14\a\"&=\x014632\x1632632\x16\x1d\x01\x14\x06#\x01P\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14\x01 \xfe\xe0`\a\t\t\a`\a\t\t\a\x164&&4&\x9a\t\r'\x1c\x04\x1a\x0f\x0f\x1a\x04\x1c'\r\t\x01\xc0\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\x14\x1c\xfe0\x01\xa0\xfe`\x01`\t\x0e\t\t\x0e\t\xb0&4&&4\xa6\v\b\x13\x18\"\b\b\"\x18\x13\b\v\x00\x00\x00\x00\x06\x00\x00\xff\xe0\x02@\x01\xa0\x00\x0f\x00$\x000\x00<\x00H\x00P\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01\x11!\x113&54632\x1632632\x16\x15\x14\a7\"=\x014;\x012\x1d\x01\x14#'\"=\x014;\x012\x1d\x01\x14#'\"=\x014;\x012\x1d\x01\x14#\x06\"&462\x16\x14\x02\x10\x14\x1c\x1c\x14\xfe \x14\x1c\x1c\x14\x01\xe0\xfe !\x01'\x1c\x04\x1a\x0f\x0f\x1a\x04\x1c'\x019\b\bp\b\bp\b\bp\b\bp\b\bp\b\b\xfe4&&4&\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfep\x01 \xfe\xe0\x04\x12\x18\"\b\b\"\x18\x12\x04P\b\x10\b\b\x10\b@\b\x10\b\b\x10\b@\b\x10\b\b\x10\b`&4&&4\x00\x00\x02\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x17\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x015!\x15\x143!2\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\xfe`\x06\x01\x94\x06\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfev\xea\xea\x06\x00\x00\x01\x00\x00\xff\xe0\x02\x00\x00 \x00\v\x00\x00\x05!\"&463!2\x16\x14\x06\x01\xe0\xfe@\r\x13\x13\r\x01\xc0\r\x13\x13 \x13\x1a\x13\x13\x1a\x13\x00\x00\x00\x03\x00\x00\xff\xc0\x02\x00\x01\xc0\x00\x19\x00\x1d\x00&\x00\x00\x012\x16\x15\x11\x14\x06+\x01\x15\x14\x06#!\"&5\x1146;\x015463\x135!\x15%\x11!\x1532\x16\x1d\x01\x01\xd0\x14\x1c\x1c\x140\x1c\x14\xfe\xc0\x14\x1c\x1c\x140\x1c\x14\xe0\xfe\xc0\x01\xa0\xfe\xc0\xe0\x14\x1c\x01\xc0\x1c\x14\xfe\xc0\x14\x1c0\x14\x1c\x1c\x14\x01@\x14\x1c0\x14\x1c\xfe0\xd0\xd0`\x01@0\x1c\x14\xe0\x00\x01\xff\xfa\xff\xc0\x01\xc6\x01\xc0\x00\xa2\x00\x00%\x1e\x01\x0f\x01\x06/\x01\x17\x16\x0e\x01\x0f\x01\x06&/\x02\x15\x17\x16\x0f\x01\x06/\x01\x15\x14\x06+\x01\"&=\x01\a\x06/\x01&4?\x015\x0f\x01\x0e\x01/\x01.\x01?\x01\a\x06&/\x01&?\x01'.\x01?\x01>\x01\x1f\x017'\a\x06&/\x01&6?\x01'&?\x016\x1f\x01'&6?\x016\x16\x1f\x025'&?\x016\x1f\x01546;\x012\x16\x1d\x0176\x1f\x01\x16\x0f\x01\x15?\x01>\x01\x1f\x01\x1e\x01\x0f\x0176\x16\x1f\x01\x16\x0f\x01\x17\x1e\x01\x0f\x01\x0e\x01/\x01\a\x1776\x16\x1f\x01\x16\x06\x0f\x01\x01\xb8\x06\x03\x03\b\b\x0e'\t\x01\x02\x06\x04\x0f\x06\f\x02\x15H;\v\v\f\v\v\x19\t\x06\x10\a\t\x19\v\v\v\x04\x04:H\x15\x02\v\x06\x0f\a\x06\x02\t'\x06\r\x03\b\b\x0e'\"\x06\a\x02\x04\x02\v\x06PHHP\x06\v\x02\x04\x02\a\x06\"'\x0e\b\b\b\x0e'\t\x02\x06\a\x0f\x06\f\x01\x15H:\v\v\f\v\v\x19\t\x06\x10\a\t\x19\v\v\v\v\v:H\x15\x02\v\x06\x0f\a\x06\x02\t(\x05\r\x03\b\b\x0e'\"\x06\a\x02\x04\x02\v\x06PHHP\x06\v\x02\x04\x02\a\x06\"]\x04\f\x06\x0e\x0e\b\x17\"\x05\b\x06\x01\x04\x02\a\x06Q*T;\f\v\v\f\f\x19.\a\t\t\a.\x1a\v\v\f\x04\x0e\x04\x01;\x012\x1e\x01\x1f\x01'\a3'&+\x01\"\x13\x11!\x117\"=\x014;\x012\x1d\x01\x14#\x01\f\f\f\x18\f\f\x8c\a\t\t\a\x10\x1c\x14\xfe\xe0\x14\x1c\x10\a\t\t\aR\"\x06\x18\fd\b\x10\x0e\x04\"\xb2\x12\x8c\x12\x02\x03^\x03\xc2\xfe\xe0L\f\f\x18\f\f \f\xd8\f\f\xd8\f\x01P\t\a\x10\a\t\xfe\xb0\x14\x1c\x1c\x14\x01P\t\a\x10\a\t9\t\x0e\x06\v\x069\x1d\x1d\x1d\x03\xfe`\x01P\xfe\xb00\f\xd8\f\f\xd8\f\x00\x00\x00\x05\x00\x00\xff\xe0\x02@\x01\xa0\x00\x18\x00$\x004\x00<\x00G\x00\x00%\x15\x14\x06#!\"&5\x1146;\x01\x15#\"\x1d\x01\x143!2=\x01\x13!\"\x1d\x01\x143!2=\x01452\x16\x15\x11\x14\x06#!\"&5\x11463\x16\x14\x06\"&462\a76\x1f\x0176\x1f\x01\x15!\x01\xe0\x1c\x14\xfe\x80\x14\x1c\x1c\x14\x10\n\x06\x06\x01t\x06Z\xfe\x8c\x06\x06\x01t\x06\x14\x1c\x1c\x14\xfe\x80\x14\x1c\x1c\x14x\x17\"\x17\x17\"1(\b\b(h\b\bH\xfe\xe0 \x10\x14\x1c\x1c\x14\x01\x00\x14\x1c0\x06\xf4\x06\x06\n\x01P\x06\xf4\x06\x06\xf4\x060\x1c\x14\xff\x00\x14\x1c\x1c\x14\x01\x00\x14\x1c_\"\x17\x17\"\x17\x88(\b\b(h\b\bHP\x00\x00\x03\x00\x00\xff\xc0\x01\x80\x01\xc0\x00\x15\x00\x1d\x001\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x1146;\x01462\x16\x15&\"\x06\x14\x16264\x13\x114+\x01\x15\x14+\x01\"=\x01#\"\x15\x11\x143!2\x01P\x14\x1c\x1c\x14\xfe\xe0\x14\x1c\x1c\x14P&4&6\x14\x0e\x0e\x14\x0ex\x06*\f\xa8\f*\x06\x06\x01\x14\x06\x01\x80\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\x1a&&\x1a\x18\x0e\x14\x0e\x0e\x14\xfel\x01T\x06$\f\f$\x06\xfe\xac\x06\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\"\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x1474;\x012\x1d\x0132\x16\x0f\x01\x06/\x01&6;\x01\x99Α\x91Α\xa5\xa6uu\xa6u\xa8\f(\fC\b\x06\x05d\b\bd\x05\x06\bC\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\xc7\f\ft\x0f\x05d\b\bd\x05\x0f\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\"\x00\x006462\x16\x14\x06\"$4&\"\x06\x14\x1627\x15\x14+\x01\x15\x14\x06/\x01&?\x016\x16\x1d\x0132\b\x91Α\x91\xce\x01/u\xa6uu\xa6-\ft\x0f\x05d\b\bd\x05\x0ft\fYΑ\x91Α\xa5\xa6uu\xa6u\xdc(\fC\b\x06\x05d\b\bd\x05\x06\bC\x00\x00\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\"\x00\x00\x00\x14\x06\"&462\x04\x14\x16264&\"\a54;\x01546\x1f\x01\x16\x0f\x01\x06&=\x01#\"\x01\xf8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6-\ft\x0f\x05d\b\bd\x05\x0ft\f\x01'Α\x91Α\xa5\xa6uu\xa6u\xdc(\fC\b\x06\x05d\b\bd\x05\x06\bC\x00\x03\x00\b\xff\xc8\x01\xf8\x01\xb8\x00\a\x00\x0f\x00\"\x00\x00\x04\"&462\x16\x14\x02\"\x06\x14\x16264\a#\"=\x01#\"&?\x016\x1f\x01\x16\x06+\x01\x15\x14\x01gΑ\x91Α\xa5\xa6uu\xa6u\xb4(\fC\b\x06\x05d\b\bd\x05\x06\bC8\x91Α\x91\xce\x01/u\xa6uu\xa6\xd3\ft\x0f\x05d\b\bd\x05\x0ft\f\x00\x00\a\xff\xfd\xff\xbf\x02C\x01\xc0\x00\x0f\x00\x13\x00\x17\x00\x1b\x00\x1e\x00!\x00$\x00\x00\x012\x1f\x01\x16\a\x01\x06\"'\x01&?\x0163\x05#\x173%\a3'#\a37\a\x17'3\x177\a7#\x01\xd0\x06\x04d\x05\x06\xfe\xec\x03\f\x03\xfe\xec\x06\x05d\x03\a\x01M94D\xfe\xf74\xc24\xca?D4dxD3aa\x11x4\x01\xc0\x05\x94\a\a\xfe\xab\x04\x04\x01U\a\a\x94\x050``````\x90\xa0\xa0\xf3\xf3\xa0\xa0\x00\x00\x04\x00\x00\x00\x00\x02\x80\x01\x80\x00\a\x00%\x005\x00E\x00\x00\x002\x16\x14\x06\"&4\x1754+\x0154+\x01\"\x0f\x01\x06\x15\x14\x1f\x01\x16327\x15#\"\x1d\x01\x14;\x012\x132\x16\x15\x11\x14\x06#!\"&5\x11463\x015\"&5!\x14\x06#\x152\x16\x15!46\x01\x18P88P8\x88\b\x10\b\x0e\a\x06\x0f\x04\x02\b\x03\x04\x03\x02\x10\b\b@\b\xf8\r\x13\x13\r\xfd\xc0\r\x13\x13\r\x020\x1b%\xfe`%\x1b\x1b%\x01\xa0%\x010B\\BB\\f\x10\bX\b\x04\n\x03\x04\x02\x02\x0e\x03\x017\b\x10\b\x01\x00\x13\r\xfe\xc0\r\x13\x13\r\x01@\r\x13\xfe\xf0\xa0%\x1b\x1b%\xa0%\x1b\x1b%\x00\x03\x00\x00\xff\xe0\x02\x00\x01\xa0\x00\x0f\x00\x1b\x007\x00\x00\x012\x16\x15\x11\x14\x06#!\"&5\x11463\x01\x114#!\"\x15\x11\x143!2'\a\x17\x16\x0f\x01\x06/\x01\a\x06/\x01&?\x01'&?\x016\x1f\x0176\x1f\x01\x16\x01\xd0\x14\x1c\x1c\x14\xfe`\x14\x1c\x1c\x14\x01\xa0\x06\xfel\x06\x06\x01\x94\x06l==\t\t\x16\b\t==\t\b\x16\t\t==\t\t\x16\b\t==\t\b\x16\t\x01\xa0\x1c\x14\xfe\xa0\x14\x1c\x1c\x14\x01`\x14\x1c\xfev\x01T\x06\x06\xfe\xac\x06\xed==\t\b\x16\t\t==\t\t\x16\b\t==\t\b\x16\t\t==\t\t\x16\b\x00\x00\x05\xff\xfb\xff\xe0\x02\x00\x01\xa0\x00\a\x00\x0f\x00\x17\x00+\x00>\x00\x0062\x16\x14\x06\"&462\x16\x14\x06\"&462\x16\x14\x06\"&4&2\x16\x14\x06#\"'\x06#\"&7>\x027&54\x05264&\"\x06\x15\x14\x1f\x01\a\x06\a6?\x01\x17\x16\x83\x1a\x13\x13\x1a\x13\x83\x1a\x13\x13\x1a\x13\x83\x1a\x13\x13\x1a\x13\xbaԖ\x96j/.AJ\x10\f\n\x02\x0f\x17\a5\x01\x00Vzz\xacz(\x14\n\b\f\x1e\x1b\x14\x17&\xf0\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\xc3z\xacz\x0e.\x1d\v\x02\x11%\x128FV\xf6^\x84^^B3*\x16\x1c\x14\x15\n\x14\r\a\f\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1f\x00'\x009\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14$\x1e\x01\a\x06\"'&>\x01\x16\x17\x16276&\"&462\x16\x1472\x16\x17\x16\x06/\x01&\"\x0f\x01\x06&7>\x02\x91Α\x91Α\xa5\xa6uu\xa6u\x016\x0f\x02\x06/\x94/\x06\x02\x0f\x14\x06!f!\x06\x9d\x1a\x13\x13\x1a\x13\x80\x14%\x03\x01\x0f\x06\n\v&\f\t\x06\x0f\x01\x02\x13\x1a\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6$\r\x14\a99\a\x14\r\x02\b''\bA\x13\x1a\x13\x13\x1a)\x18\x12\b\b\x05\t\t\t\t\x05\b\b\f\x14\n\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00 \x003\x00H\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x1462\x17\x16\x06\a\x06&'&\"\a\x0e\x01.\x01?\x01\x14\x06\"&547'.\x01>\x01\x1f\x01\x1e\x01\a\x066\x16\x06\x0f\x01\x16\x15\x14\x06\"&5\"'&>\x02?\x016\x91Α\x91Α\xa5\xa6uu\xa6u\x93j\"\x06\x02\a\b\x14\x06\x13>\x13\x06\x14\x0f\x02\x06'\x13\x1a\x13\x05\x1c\t\n\x06\x11\nP\t\n\x03\x05\xb2\x06\n\t\x1c\x05\x13\x1a\x13\x12\x05\x02\x02\x04\a\x05P\n\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x1b)\a\x14\x06\a\x02\b\x16\x16\b\x02\r\x14\aq\r\x13\x13\r\b\b\t\x03\x11\x13\n\x03\x18\x03\x11\n\x11@\x13\x11\x03\b\t\b\r\x13\x13\r\x11\x05\t\b\a\x01\x18\x03\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00+\x00G\x00O\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x146\x06\"/\x01\a\x06\"&4?\x01'&462\x1f\x01762\x16\x14\x0f\x01\x17\x166\x16\x14\x0f\x01\x17\x16\x14\x06\"/\x01\a\x06\"&4?\x01'&462\x1f\x0176\x062\x16\x14\x06\"&4\x91Α\x91Α\xa5\xa6uu\xa6u\xac\f\x10\x06\x12\x12\x06\x10\f\x06\x12\x12\x06\f\x10\x06\x12\x12\x06\x10\f\x06\x12\x12\x06\x94\f\x06\x12\x12\x06\f\x10\x06\x12\x12\x06\x10\f\x06\x12\x12\x06\f\x10\x06\x12\x12\x06\x824&&4&\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6k\f\x06\x12\x12\x06\f\x10\x06\x12\x12\x06\x10\f\x06\x12\x12\x06\f\x10\x06\x12\x12\x06L\f\x10\x06\x12\x12\x06\x10\f\x06\x12\x12\x06\f\x10\x06\x12\x12\x06\x10\f\x06\x12\x12\x06\x84&4&&4\x00\x00\x00\t\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00'\x00/\x007\x00?\x00K\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14$2\x16\x14\x06\"&4\x16264&\"\x06\x1462\x16\x14\x06\"&4&\x14\x06\"&462\x06264&\"\x06\x1462\x16\x14\x06\"&4\x172\x16\x14\x06+\x01\"&463\x91Α\x91Α\xa5\xa6uu\xa6u\x01\aB//B/<(\x1c\x1c(\x1c&\x14\x0e\x0e\x14\x0eX/B//B5(\x1c\x1c(\x1c&\x14\x0e\x0e\x14\x0e\xb8\n\x0e\x0e\n\x80\n\x0e\x0e\n\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\xc3/B//BQ\x1c(\x1c\x1c(,\x0e\x14\x0e\x0e\x14\x17B//B/\x80\x1c(\x1c\x1c(,\x0e\x14\x0e\x0e\x14\x82\x0e\x14\x0e\x0e\x14\x0e\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00-\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x146\x14\x06\"&46:\x02\x16\x14\x06\"&4\x062\x16\x17\x16\x06'&\"\a\x06&76\x91Α\x91Α\xa5\xa6uu\xa6u\x98\x13\x1a\x13\x13\x1a\x86\x1a\x13\x13\x1a\x13N<=\x05\x01\r\t141\t\r\x01\x05\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x90\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a]\"\x1b\t\f\x03\x0f\x0f\x03\f\t\x1b\x00\x00\x00\r\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00/\x006\x00=\x00A\x00E\x00I\x00M\x00T\x00[\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x146\"&462\x16\x14\x16\"&462\x16\x14\a2\x16\x1d\x01\x14\x06+\x01\"&=\x01463\x175#\x15\x14\x16375#\"\x06\x1d\x01\x175#\x1575#\x15\x175#\x1575#\x15\x175#\x15326=\x014&+\x01\x15\x91Α\x91Α\xa5\xa6uu\xa6u\x85\x1a\x13\x13\x1a\x13\x8d\x1a\x13\x13\x1a\x13\x10\x14\x1c\x1c\x14\xc0\x14\x1c\x1c\x14\x18(\t\a\x18\x18\a\th000p000h(\x18\a\t\t\a\x18\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6c\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a#\x1c\x14 \x14\x1c\x1c\x14 \x14\x1c`\x18\b\a\t(\x18\t\a\b(\x18\x18(\x18\x18(\x18\x18(\x18\x18\x18\b\x18\t\x1f\b\a\t\x18\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1f\x00'\x00/\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%6\x16\a\x0e\x01#\".\x01'&6\x17\x162&\"&462\x16\x14\x16\"&462\x16\x14\x91Α\x91Α\xa5\xa6uu\xa6u\x012\a\f\x02\x05M)\x1a6(\x03\x02\f\a)\x82\x84\x1a\x13\x13\x1a\x13\x8d\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\"\x03\n\b\".\x14&\x16\b\n\x03\rN\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\r\x00\x1b\x00#\x00+\x009\x00\x007\x06\"'&'6762\x17\x16\x17\x06\x17\x06\"'&'6762\x17\x16\x17\x06&2\x16\x14\x06\"&4\x12264&\"\x06\x14%6\x16\a\x0e\x01\"&'&6\x17\x162\xc8\x05\x15\x06\x0f\x01\x01\x0f\x05\x15\x06\x0f\x01\x01q\x05\x15\x06\x0f\x01\x01\x0f\x05\x15\x06\x0f\x01\x01\xc6Α\x91Α\xa5\xa6uu\xa6u\x012\a\f\x02\x05MRM\x05\x02\f\a)\x82\xc8\t\t\x16\"\"\x16\t\t\x16\"\"\x16\t\t\x16\"\"\x16\t\t\x16\"\"ڑΑ\x91\xce\xfe\xd1u\xa6uu\xa6\"\x03\n\b\"..\"\b\n\x03\r\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1f\x004\x00E\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%6\x16\a\x0e\x01#\".\x01'&6\x17\x162'&7>\x0432\x16\x17\x16\x06/\x01&\"\x0f\x01\x067&7>\x012\x16\x17\x16\x06/\x01&\"\x0f\x01\x06\x91Α\x91Α\xa5\xa6uu\xa6u\x012\a\f\x02\x05M)\x1a6(\x03\x02\f\a)\x82\xc3\a\x01\x01\b\v\x0e\x0f\a\x13#\x02\x01\r\x03\t\r&\r\t\x03\x9a\a\x01\x02#&#\x02\x01\r\x03\t\r&\r\t\x03\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\"\x03\n\b\".\x14&\x16\b\n\x03\rV\x02\a\f\x16\x12\f\a)\x1e\a\x04\x06\x11\x16\x16\x11\x06\x02\x02\a\x1e))\x1e\a\x04\x06\x11\x16\x16\x11\x06\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xc7\x00\n\x00\x1a\x00+\x00E\x00Z\x00\x00\x00\"&5476\x17\x16\x15\x14\x03\".\x01'&6\x17\x16276\x16\a\x0e\x016\x06/\x01&\"\x0f\x01\x06'&7>\x012\x16\x177\x16\x15\x14\x06\"&4632\x17\x06\a&#\"\x06\x14\x162654'2$\"\x0f\x01\x06'&7>\x0432\x16\x17\x16\x06/\x01\x01\xce,\x1f.\a\a.\xf5\x1a6'\x04\x02\f\a)\x82)\a\f\x02\x05M`\r\x03\t\r&\r\t\x03\x06\a\x01\x02#&#\x02d\f\x91Α\x91gC:\x0e\x032:Suu\xa6u\v\x1a\xfe\xec&\r\t\x03\x06\a\x01\x01\b\v\x0e\x0f\a\x13#\x02\x01\r\x03\t\x01 \"\x19\x1cE\v\vE\x1c\x19\xfe\xee\x14%\x17\b\n\x03\r\r\x03\v\a\".\xaa\x03\x05\x11\x16\x16\x11\x06\x02\x02\a\x1e))\x1e,%(g\x91\x91Α\"\x1c\x12 u\xa6uuS!\x1f\x03\x16\x11\x06\x02\x02\a\f\x16\x12\f\a)\x1e\a\x04\x06\x11\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\r\x00\x1f\x004\x00<\x00D\x00\x00%6\x16\a\x0e\x01\"&'&6\x17\x162/\x01.\x017>\x01\x1f\x017>\x01\x17\x1e\x01\x0f\x01\x067\x16\x06\x0f\x01\x06/\x01&676\x1e\x01\x1f\x0176\x1e\x02&2\x16\x14\x06\"&4\x12264&\"\x06\x14\x01b\a\f\x02\x05MRM\x05\x02\f\a)\x82pF\x10\x0e\x05\x05\x1a\x0e\a\x02\x04\x18\x0e\x10\x11\x04\x14\x02\xb5\x05\x0e\x10F\b\x02\x14\x04\x11\x10\t\x12\f\x03\x02\a\x06\x0e\f\n\xf2Α\x91Α\xa5\xa6uu\xa6u\x8f\x03\n\b\"..\"\b\n\x03\r>\x12\x04\x1d\x0f\r\f\x03\x02\a\x0e\x10\x02\x03\x1a\x10F\bD\x0f\x1d\x04\x12\x02\bF\x10\x1a\x03\x01\x06\x0e\t\a\x02\x01\x01\x06\n\xb0\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1f\x00,\x00:\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%6\x16\a\x0e\x01#\".\x01'&6\x17\x162.\x01?\x01'&6\x1f\x01\x16\x14\x0f\x013'&4?\x016\x17\x16\x0f\x01\x17\x16\x06\x91Α\x91Α\xa5\xa6uu\xa6u\x012\a\f\x02\x05M)\x1a6(\x03\x02\f\a)\x82\xbc\r\a!!\a\x0e\bP\x06\x06P\xe4P\x06\x06P\t\x06\a\a!!\a\r\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\"\x03\n\b\".\x14&\x16\b\n\x03\r/\x0f\b((\b\x0f\x050\x03\x0e\x0300\x03\x0e\x030\x05\a\b\b((\b\x0f\x00\a\xff\xfe\xff\xbf\x02\x02\x01\xc1\x00\v\x00\x1d\x00/\x00;\x00J\x00Y\x00h\x00\x0076\x16\a\x06\a\x06\"&4767\x06\a&67632\x17\x06\a&#\"\a\x0e\x01%67\x16\x06\a\x06#\"'67\x16327>\x01'\x06&76762\x16\x14\a\x06\x04\x16\x0f\x01\x06+\x01&/\x02.\x01?\x02\"'&?\x0163\x16\x1f\x02\x1e\x01\x0f\x0167>\x01\x17\x16\x0e\x02'&676u\x05\a\x01\f\x13\x10/\"\x10\x13)\x1b\x14\x1f\x1c7Hg<5\a\x05/6S:.\x14\x01{\x1d\x14$\x189Ig30\a\x06)-S:1\x10C\x05\a\x01\f\x13\x10/\"\x10\x13\xfe\xee\n\x02\x17\x02\t\x01\n\x01\x054\n\x02\nZ4\t\x03\x05\x02\x17\x02\n\n\x01\x054\n\x02\n&.\x13\x04\x0f\x04\x13\x14:T\x1f\x06\x01\a&@\x01\a\x05R\x13\x10\"/\x10\x136\x06\aD\x986I\x1b\x15\x1c\x1c;-\u007f\x84\x06\x06E\xa29I\x15\x13\x1c\x14;0\x89T\x01\a\x05R\x13\x10\"/\x10\x13s\n\aZ\t\x01\n4\x05\x01\x14\x02\x17\x16\x03\x05\aZ\t\x01\n4\x05\x01\x14\x02p/%\a\x01\x06\x1fT:\x15\x14\x04\x0f\x04\x14\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1d\x006\x00P\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%6\x16\a\x0e\x01\"&'&6\x17\x162'7'&6?\x0262\x1f\x02\x1e\x01\x0f\x01\x17\x16\x06/\x01\a\x06&%\x1e\x01\x0f\x01\x17\x16\x0e\x01/\x01\a\x06&?\x01'&6?\x0262\x1f\x01\x91Α\x91Α\xa5\xa6uu\xa6u\x012\a\f\x02\x05MRM\x05\x02\f\a)\x82\xbb\x06\x1a\x03\x03\x05#\x0f\x02\n\x02\x0f#\x05\x03\x03\x1a\x06\x01\b\x04\x1f\x1f\x04\b\x01\x04\x05\x03\x03\x1a\x06\x01\x03\x06\x03\x1f\x1f\x04\b\x01\x06\x1a\x03\x03\x05#\x0f\x02\n\x02\x0f\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\"\x03\n\b\"..\"\b\n\x03\rG#\x18\x04\t\x01\x05\x1f\x05\x05\x1f\x05\x01\t\x04\x18#\x05\x05\x02\x10\x10\x02\x05N\x01\t\x04\x18#\x03\x05\x01\x01\x10\x10\x02\x05\x05#\x18\x04\t\x01\x05\x1f\x05\x05\x1f\x00\x00\x00\a\xff\xff\xff\xc8\x02\x81\x01\xb8\x00\v\x00\x17\x00%\x005\x00C\x00T\x00i\x00\x0076\x16\a\x06\a\x06\"&476\x05\x16\x14\x06\"'&'&6\x17\x16\a\x16\x17\x0e\x01\"&'67\x1e\x0126%&\a>\x022\x1e\x01\x17&\a.\x01\"\x06\x16\"&'&6\x17\x16276\x16\a\x066\x06/\x01&\"\x0f\x01\x06'&7>\x012\x16\x17&\"\x0f\x01\x06'&7>\x0432\x16\x17\x16\x06/\x01u\x05\a\x01\f\x13\x10/\"\x10\x13\x02M\x10\"/\x10\x13\f\x01\a\x05Rl\v\x12#l~l#\x12\v\x19_r_\xfe\xa3\v'\x06Em~mE\x06&\f\vp\x94p\xe3RM\x05\x02\f\a)\x82)\a\f\x02\x05\x13\r\x03\t\r&\r\t\x03\x06\a\x01\x02#&#\x02\xc5&\r\t\x03\x06\a\x01\x01\b\v\x0e\x0f\a\x13#\x02\x01\r\x03\t\xc0\x01\a\x05R\x13\x10\"/\x10\x13\x13\x10/\"\x10\x13R\x05\a\x01\fP \x0f2;;2\x0f 1;;\xad\x01\b>f;;f?\t\x01H``\xf8.\"\b\n\x03\r\r\x03\v\a\"|\x03\x05\x11\x16\x16\x11\x06\x02\x02\a\x1e))\x1e\"\x16\x11\x06\x02\x02\a\f\x16\x12\f\a)\x1e\a\x04\x06\x11\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x1d\x00;\x00C\x00K\x00\x00\x122\x16\x14\x06\"&4\x055'&\x06\x0f\x01\x06\"/\x01.\x01\x0f\x01\x15\x14\x1632>\x01\x17>\x0154&\"\x06\x15\x14\x16\x17&=\x01&'&6\x17\x16276\x16\a\x06\a\x15\x14&2\x16\x14\x06\"&462\x16\x14\x06\"&4\x91Α\x91Α\x018\x12\v\x15\x02\x03\x02\x0e\x02\x02\x03\x15\v\x12%\x1a\x12\x1e\x11\x1c1;u\xa6u;1\x04\x17\x04\x02\f\a)\x82)\a\f\x02\x04\x17\xbd\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xce\xff,\t\x05\v\v\f\a\a\f\v\v\x05\t+\x1a'\x11\x1d\a\x19_9SuuS9_\x19\x0e\v,\x14\x18\b\n\x03\r\r\x03\v\a\x18\x14,\v\xf3\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x1d\x00;\x00H\x00U\x00\x00\x122\x16\x14\x06\"&4\x055'&\x06\x0f\x01\x06\"/\x01.\x01\x0f\x01\x15\x14\x1632>\x01\x17>\x0154&\"\x06\x15\x14\x16\x17&=\x01&'&6\x17\x16276\x16\a\x06\a\x15\x14\x12\x16\x0f\x01\x17\x16\x06/\x01&4?\x01\a\x16\x14\x0f\x01\x06&?\x01'&6\x17\x91Α\x91Α\x018\x12\v\x15\x02\x03\x02\x0e\x02\x02\x03\x15\v\x12%\x1a\x12\x1e\x11\x1c1;u\xa6u;1\x04\x17\x04\x02\f\a)\x82)\a\f\x02\x04\x17\x1a\x0e\a!!\a\r\tP\x06\x06P\x94\x06\x06P\t\r\a!!\a\x0e\b\x01\xb8\x91Α\x91\xce\xff,\t\x05\v\v\f\a\a\f\v\v\x05\t+\x1a'\x11\x1d\a\x19_9SuuS9_\x19\x0e\v,\x14\x18\b\n\x03\r\r\x03\v\a\x18\x14,\v\x01\x12\x0f\b((\b\x0f\x050\x03\x0e\x0300\x03\x0e\x030\x05\x0f\b((\b\x0f\x05\x00\x00\x00\x00\a\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\x11\x00\x19\x00!\x00)\x001\x00G\x00e\x00\x00\x132\x1e\x01\x17\x16\x06/\x01&\"\x0f\x01\x06&7>\x022\x16\x14\x06\"&4\x16264&\"\x06\x1462\x16\x14\x06\"&4&2\x16\x14\x06\"&4\x055'&\x06\x0f\x01\x06\"/\x01.\x01\x0f\x01\x15\x14\x1632>\x01\x17>\x0154&\"\x06\x15\x14\x16\x17&=\x01&'&6\x17\x16276\x16\a\x06\a\x15\x14\x98\r\x1a\x13\x02\x01\x0f\x06\n\v&\v\n\x06\x0f\x01\x03%\xa3B//B/<(\x1c\x1c(\x1c&\x14\x0e\x0e\x14\x0e\x9fΑ\x91Α\x018\x12\v\x15\x02\x03\x02\x0e\x02\x02\x03\x15\v\x12%\x1a\x12\x1e\x11\x1c1;u\xa6u;1\x04\x17\x04\x02\f\a)\x82)\a\f\x02\x04\x17\x01\f\n\x14\f\b\b\x05\t\t\t\t\x06\t\b\x12\x184/B//BQ\x1c(\x1c\x1c(,\x0e\x14\x0e\x0e\x14\xbe\x91Α\x91\xce\xff,\t\x05\v\v\f\a\a\f\v\v\x05\t+\x1a'\x11\x1d\a\x19_9SuuS9_\x19\x0e\v,\x14\x18\b\n\x03\r\r\x03\v\a\x18\x14,\v\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\x0f\x00\x17\x00%\x00-\x005\x00\x00\x002\x16\x17\x16\x06/\x01&\"\x0f\x01\x06&76\x06\"&462\x16\x14\x176\x16\a\x0e\x01\"&'&6\x17\x162\x022\x16\x14\x06\"&4\x12264&\"\x06\x14\x014(%\x03\x01\x0f\x06\n\v&\v\n\x06\x0f\x01\x03Z\x1a\x13\x13\x1a\x13\x9a\a\f\x02\x05MRM\x05\x02\f\a)\x82\xa8Α\x91Α\xa5\xa6uu\xa6u\x01\f\x18\x12\b\t\x06\t\t\t\t\x06\b\t\x12$\x13\x1a\x13\x13\x1aT\x03\n\b\"..\"\b\n\x03\r\x016\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00)\x001\x009\x00A\x00\x00\x122\x16\x14\x06\"&4\x17\x14\a\x16\x15\x14\x06\a#\"'&?\x0164/\x01&4?\x0164/\x01&76\x17\x1e\x03\x022\x16\x14\x06\"&4\x12264&\"\x06\x14$2\x16\x14\x06\"&4\x9b\x1a\x13\x13\x1a\x13\xa8##)\x1e\x01\x06\x02\x01\x06\x11\x15\x15\x11\x04\x04\x11\x15\x15\x11\x06\x01\x02\x06\x10\x1b\x12\v\x9fΑ\x91Α\xa5\xa6uu\xa6u\x01\v\x1a\x13\x13\x1a\x13\x01\x10\x13\x1a\x13\x13\x1aq\x16\x0e\x0e\x16\x10\x1b\x01\x06\x06\x03\a\t\x19\t\a\x02\v\x02\a\t\x1a\b\b\x02\a\a\x01\x01\t\f\x0f\x01%\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\xa3\x13\x1a\x13\x13\x1a\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\x13\x00\x1b\x00#\x00E\x00U\x00\x00\x132\x16\x17\x14\x06/\x01&\"\x0f\x01\x06&7>\x04&2\x16\x14\x06\"&4\x12264&\"\x06\x14%\x14\a\x16\x15\x14\x06\a#\"'&?\x0164/\x01&4?\x0164/\x01&76\x17\x1e\x0362\x16\x17\x14\x06/\x01&\"\x0f\x01\x06&76\xa8\x13#\x02\f\x03\n\f&\r\t\x03\r\x01\x01\b\v\x0e\x0f\x10Α\x91Α\xa5\xa6uu\xa6u\x01\x00##)\x1e\x01\x06\x02\x01\x06\x11\x15\x15\x11\x04\x04\x11\x15\x15\x11\x06\x01\x02\x06\x10\x1b\x12\v\x05&#\x02\f\x03\n\f&\r\t\x03\r\x01\x02\x01()\x1e\a\x04\x06\x11\x16\x16\x11\x05\x03\a\f\x16\x12\f\a\x90\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x1f\x16\x0e\x0e\x16\x10\x1b\x01\x06\x06\x03\a\t\x19\t\a\x02\v\x02\a\t\x1a\b\b\x02\a\a\x01\x01\t\f\x0f\x95)\x1e\a\x04\x06\x11\x16\x16\x11\x05\x03\a\x1e\x00\x05\x00\x00\xff\xc8\x01\xfc\x01\xb8\x00!\x004\x00<\x00O\x00l\x00\x00%\x14\a\x16\x15\x14\x06\a#\"'&?\x0164/\x01&4?\x0164/\x01&763\x1e\x037&\"\x0f\x01\x06&7>\x0332\x16\x17\x16\x06'&462\x16\x14\x06\"\x05\x16\x06\x0f\x01\x06/\x01&>\x0176\x16\x1f\x0176\x16\a\x16\x17\x06#\"&4632\x16\x15\x14\a&#&'654&\"\x06\x14\x1632\x010##)\x1e\x01\x06\x02\x01\x06\x11\x15\x15\x11\x04\x04\x11\x15\x15\x11\x06\x01\x02\x06\x10\x1b\x12\vF\v&\v\n\x06\x0f\x01\x02\f\x10\x14\n\x14%\x03\x01\x0f\x06\xf8\x13\x1a\x13\x13\x1a\x01Z\a\x11\x12S\n\x03\x17\x03\a\x12\f\x11\x1c\x04\x03\b\x10\x1f\xa1\v\x02/4g\x91\x91gg\x91\x11\v\b\a\x0f\nu\xa6uuS-\x8c\x16\x0f\x0e\x16\x0f\x1b\x02\x06\a\x02\b\t\x19\t\a\x02\v\x02\a\t\x19\t\a\x03\x06\a\x01\t\f\x0fL\n\n\t\x05\b\b\t\x10\v\x06\x18\x12\b\b\x05\f\x1b\x13\x13\x1b\x12\xa2\x12!\x05\x16\x02\tS\f\x17\x10\x02\x02\x13\x10\t\x02\x05\x0f1(\a\x15\x91Α\x91g.,\x03\r\v\x1f Suu\xa6u\x00\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00-\x00\x00\x122\x16\x14\x06\"&4\x0064&\"\x06\x14\x166\"&462\x16\x14\x06\"&462\x16\x14\x172\x16\a\x0e\x01+\x01\"&'&63\x91Α\x91Α\x01Kuu\xa6uu\xb0\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13\xa2\a\b\x01\x06E.\x0e.E\x06\x01\b\a\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6u\xe8\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1aS\t\x06-<<-\x06\t\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1f\x00/\x00=\x00\x00\x122\x16\x14\x06\"&4\x0064&\"\x06\x14\x16\x122\x16\x17\x14\x06/\x01&\"\x0f\x01\x06&76\a\x06&7>\x012\x16\x17\x14\x06/\x01&\"\a\x172\x16\a\x0e\x01+\x01\"&'&63\x91Α\x91Α\x01Kuu\xa6uu\x90&#\x02\f\x03\n\f&\r\t\x03\r\x01\x02\x93\x03\r\x01\x02#&#\x02\f\x03\t\r&\r\xe2\a\b\x01\x06E.\x0e.E\x06\x01\b\a\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6u\x010)\x1e\a\x03\x05\x11\x16\x16\x11\x05\x03\a\x1e#\x05\x03\a\x1e))\x1e\a\x03\x05\x11\x16\x16M\t\x06-<<-\x06\t\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1c\x00)\x007\x00\x00\x122\x16\x14\x06\"&4\x0064&\"\x06\x14\x16\x13\x17\x16\x06/\x01&4?\x016\x16\x0f\x01\x06&?\x01'&6\x1f\x01\x16\x14\a\x172\x16\a\x0e\x01+\x01\"&'&63\x91Α\x91Α\x01Kuu\xa6uu\xb3!\a\x0e\bP\x06\x06P\b\x0e\a\xf3\t\r\a!!\a\x0e\bP\x06\x06\x94\a\b\x01\x06E.\x0e.E\x06\x01\b\a\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6u\x01\x04(\b\x0f\x050\x03\x0e\x030\x05\x0f\bb\x05\x0f\b((\b\x0f\x050\x03\x0e\x03R\t\x06-<<-\x06\t\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00!\x00)\x007\x00\x00\x122\x16\x14\x06\"&4\x0064&\"\x06\x14\x16\x122\x1e\x01\x17\x16\x06/\x01&\"\x0f\x01\x06&7>\x01\x06\"&462\x16\x14\x172\x16\a\x0e\x01+\x01\"&'&63\x91Α\x91Α\x01Kuu\xa6uu\x96\x1a\x1a\x13\x02\x01\x0f\x06\n\v&\f\t\x06\x0f\x01\x02\x13l\x1a\x13\x13\x1a\x13\xa2\a\b\x01\x06E.\x0e.E\x06\x01\b\a\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6u\x01$\n\x14\f\b\b\x05\t\t\t\t\x05\b\b\f\x142\x13\x1a\x13\x13\x1aS\t\x06-<<-\x06\t\x00\x04\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x1462\x16\x14\x06\"&462\x16\x14\x06\"&4\x91Α\x91Α\xa5\xa6uu\xa6uk\x1a\x13\x13\x1a\x13\xb3\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\xa3\x13\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x00\x00\x00\a\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00)\x001\x00C\x00O\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14$2\x16\x14\x06\"&4\x162654'\x16\x15\x14\x06\"&547\x06\x15\x14&\x14\x06\"&462\a\x14\x162654'\x16\x15\x14\x06\"&547\x06\x172\x16\x14\x06+\x01\"&463\x91Α\x91Α\xa5\xa6uu\xa6u\x01\x02<**<*7\"\x17\x12\x02\x0e\x14\x0e\x02\x12@*<**\x0232\x16\x1762\x16\x17\x16\x06/\x01&\"\x0f\x01\x06&76\x062\x16\x14\x06\"&4\x91Α\x91Α\x01\x888u\xa6u8\x0e\x14\x0e-f-\x0e\x14\x0e\xb3\x0f\x06\t\f&\v\n\x06\x0f\x01\x02\x13\x1a\r\x14%\x03p(%\x03\x01\x0f\x06\n\v&\v\n\x06\x0f\x01\x03>.!!.!\x01\xb8\x91Α\x91\xce\xf1:PSuuSP:r\n\x0e\x0e\n\x97\x19\x19\x97\n\x0e\x0e\n2\t\x06\t\t\t\t\x06\t\b\f\x14\n\x18\x12*\x18\x12\b\b\x05\t\t\t\t\x05\b\b\x12D&4&&4\x00\x00\x06\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1e\x00&\x00.\x009\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x1472\x17\x16\x06\a\x06&'&#\"&46&\"&462\x16\x1462\x16\x14\x06\"&4\a6\x17\x16\x15\x14\x06\"&54\x91Α\x91Α\xa5\xa6uu\xa6u\xd0<&\a\x02\b\b\x13\x06\x18&\n\x0e\x0eA\x1a\x13\x13\x1a\x13s\x1a\x13\x13\x1a\x13\x86\x06\x06$\x19\"\x19\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6#.\b\x14\x06\x06\x02\a\x1d\x0e\x14\x0e@\x13\x1a\x13\x13\x1a-\x13\x1a\x13\x13\x1aP\b\b1\x13\x11\x18\x18\x11\x13\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1f\x004\x00E\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14%>\x01\x1e\x01\a\x06\"'&>\x01\x16\x17\x162'\a\x06'&7>\x0432\x16\x17\x16\x06/\x01&\"62\x16\x17\x16\x06/\x01&\"\x0f\x01\x06'&76\x91Α\x91Α\xa5\xa6uu\xa6u\x01\x1c\x06\x14\x0f\x02\x06/\x94/\x06\x02\x0f\x14\x06!f\xa3\t\x03\x06\a\x01\x01\b\v\x0e\x0f\a\x13#\x02\x01\r\x03\t\r&\xa0&#\x02\x01\r\x03\t\r&\r\t\x03\x06\a\x01\x02\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\x1a\b\x02\r\x14\a99\a\x14\r\x02\b'\x8d\x11\x06\x02\x02\a\f\x16\x12\f\a)\x1e\a\x04\x06\x11\x16%)\x1e\a\x04\x06\x11\x16\x16\x11\x06\x02\x02\a\x1e\x00\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x17\x00\x1f\x00'\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x1462\x16\x14\x06\"&46\x14\x06\"&46:\x02\x16\x14\x06\"&4\x91Α\x91Α\xa5\xa6uu\xa6u\xae4&&4&\x10\x13\x1a\x13\x13\x1a\x86\x1a\x13\x13\x1a\x13\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6;&4&&4{\x1a\x13\x13\x1a\x13\x13\x1a\x13\x13\x1a\x00\x00\x00\x05\x00\x00\xff\xc8\x01\xf0\x01\xb8\x00\a\x00\x0f\x00\x1c\x00)\x008\x00\x00\x122\x16\x14\x06\"&4\x12264&\"\x06\x14$\x16\x0f\x01\x17\x16\x06/\x01&4?\x01\x06\x14\x0f\x01\x06&?\x01'&6\x1f\x01\x062\x16\x17\x16\x06'&\"\a\x06.\x0176\x91Α\x91Α\xa5\xa6uu\xa6u\x01C\r\a!!\a\r\tP\x06\x06P\x8e\x06P\t\r\a!!\a\x0e\bP\x02HC\x05\x01\n\a#r#\x04\b\x05\x01\x05\x01\xb8\x91Α\x91\xce\xfe\xd1u\xa6uu\xa6\xc2\x0f\b((\b\x0f\x050\x03\x0e\x0303\x0e\x030\x05\x0f\b((\b\x0f\x050J6'\t\f\x03\x0f\x0f\x02\x04\n\x06'\x00\x00\x00\x1c\x01V\x00\x01\x00\x00\x00\x00\x00\x00\x00\x1a\x006\x00\x01\x00\x00\x00\x00\x00\x01\x00\x1b\x00\x89\x00\x01\x00\x00\x00\x00\x00\x02\x00\a\x00\xb5\x00\x01\x00\x00\x00\x00\x00\x03\x00\"\x01\x03\x00\x01\x00\x00\x00\x00\x00\x04\x00\x1b\x01^\x00\x01\x00\x00\x00\x00\x00\x05\x00&\x01\xc8\x00\x01\x00\x00\x00\x00\x00\x06\x00\x18\x02!\x00\x01\x00\x00\x00\x00\x00\n\x00,\x02\x94\x00\x01\x00\x00\x00\x00\x00\v\x00\x17\x02\xf1\x00\x01\x00\x00\x00\x00\x00\x10\x00\x13\x031\x00\x01\x00\x00\x00\x00\x00\x11\x00\a\x03U\x00\x01\x00\x00\x00\x00\x00\x12\x00\x1b\x03\x95\x00\x01\x00\x00\x00\x00\x00\x15\x00\x13\x03\xd9\x00\x01\x00\x00\x00\x00\x00\x16\x00\a\x03\xfd\x00\x03\x00\x01\x04\t\x00\x00\x004\x00\x00\x00\x03\x00\x01\x04\t\x00\x01\x006\x00Q\x00\x03\x00\x01\x04\t\x00\x02\x00\x0e\x00\xa5\x00\x03\x00\x01\x04\t\x00\x03\x00D\x00\xbd\x00\x03\x00\x01\x04\t\x00\x04\x006\x01&\x00\x03\x00\x01\x04\t\x00\x05\x00L\x01z\x00\x03\x00\x01\x04\t\x00\x06\x000\x01\xef\x00\x03\x00\x01\x04\t\x00\n\x00X\x02:\x00\x03\x00\x01\x04\t\x00\v\x00.\x02\xc1\x00\x03\x00\x01\x04\t\x00\x10\x00&\x03\t\x00\x03\x00\x01\x04\t\x00\x11\x00\x0e\x03E\x00\x03\x00\x01\x04\t\x00\x12\x006\x03]\x00\x03\x00\x01\x04\t\x00\x15\x00&\x03\xb1\x00\x03\x00\x01\x04\t\x00\x16\x00\x0e\x03\xed\x00C\x00o\x00p\x00y\x00r\x00i\x00g\x00h\x00t\x00 \x00(\x00c\x00)\x00 \x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00\x00Copyright (c) Font Awesome\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00 \x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Font Awesome 5 Free Regular\x00\x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Regular\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00 \x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00-\x005\x00.\x001\x002\x00.\x000\x00\x00Font Awesome 5 Free Regular-5.12.0\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00 \x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Font Awesome 5 Free Regular\x00\x003\x003\x000\x00.\x007\x005\x002\x00 \x00(\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x00v\x00e\x00r\x00s\x00i\x00o\x00n\x00:\x00 \x005\x00.\x001\x002\x00.\x000\x00)\x00\x00330.752 (Font Awesome version: 5.12.0)\x00\x00F\x00o\x00n\x00t\x00A\x00w\x00e\x00s\x00o\x00m\x00e\x005\x00F\x00r\x00e\x00e\x00-\x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00FontAwesome5Free-Regular\x00\x00T\x00h\x00e\x00 \x00w\x00e\x00b\x00'\x00s\x00 \x00m\x00o\x00s\x00t\x00 \x00p\x00o\x00p\x00u\x00l\x00a\x00r\x00 \x00i\x00c\x00o\x00n\x00 \x00s\x00e\x00t\x00 \x00a\x00n\x00d\x00 \x00t\x00o\x00o\x00l\x00k\x00i\x00t\x00.\x00\x00The web's most popular icon set and toolkit.\x00\x00h\x00t\x00t\x00p\x00s\x00:\x00/\x00/\x00f\x00o\x00n\x00t\x00a\x00w\x00e\x00s\x00o\x00m\x00e\x00.\x00c\x00o\x00m\x00\x00https://fontawesome.com\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00\x00Font Awesome 5 Free\x00\x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Regular\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00 \x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Font Awesome 5 Free Regular\x00\x00F\x00o\x00n\x00t\x00 \x00A\x00w\x00e\x00s\x00o\x00m\x00e\x00 \x005\x00 \x00F\x00r\x00e\x00e\x00\x00Font Awesome 5 Free\x00\x00R\x00e\x00g\x00u\x00l\x00a\x00r\x00\x00Regular\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\xff\xdb\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x00\x00\x01\x00\x02\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01\a\x01\b\x01\t\x01\n\x01\v\x01\f\x01\r\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01!\x01\"\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01+\x01,\x01-\x01.\x01/\x010\x011\x012\x013\x014\x015\x016\x017\x018\x019\x01:\x01;\x01<\x01=\x01>\x01?\x01@\x01A\x01B\x01C\x01D\x01E\x01F\x01G\x01H\x01I\x01J\x00\x8b\x01K\x01L\x01M\x01N\x01O\x01P\x01Q\x01R\x01S\x01T\x01U\x01V\x01W\x00\x8a\x01X\x01Y\x01Z\x01[\x01\\\x01]\x01^\x01_\x01`\x01a\x01b\x01c\x01d\x01e\x01f\x01g\x01h\x01i\x01j\x01k\x01l\x01m\x01n\x01o\x01p\x01q\x01r\x01s\x01t\x01u\x01v\x01w\x01x\x01y\x01z\x01{\x01|\x01}\x01~\x01\u007f\x01\x80\x01\x81\x01\x82\x01\x83\x01\x84\x01\x85\x01\x86\x01\x87\x01\x88\x01\x89\x01\x8a\x01\x8b\x01\x8c\x01\x8d\x01\x8e\x01\x8f\x01\x90\x01\x91\x01\x92\x01\x93\x01\x94\x01\x95\x01\x96\x05heart\x04star\x04user\x05clock\blist-alt\x04flag\bbookmark\x05image\x04edit\ftimes-circle\fcheck-circle\x0fquestion-circle\x03eye\teye-slash\fcalendar-alt\acomment\x06folder\vfolder-open\tchart-bar\bcomments\tstar-half\x05lemon\vcredit-card\x03hdd\x10hand-point-right\x0fhand-point-left\rhand-point-up\x0fhand-point-down\x04copy\x04save\x06square\benvelope\tlightbulb\x04bell\bhospital\vplus-square\x06circle\x05smile\x05frown\x03meh\bkeyboard\bcalendar\vplay-circle\fminus-square\fcheck-square\fshare-square\acompass\x11caret-square-down\x0fcaret-square-up\x12caret-square-right\x04file\bfile-alt\tthumbs-up\vthumbs-down\x03sun\x04moon\x11caret-square-left\ndot-circle\bbuilding\bfile-pdf\tfile-word\nfile-excel\x0ffile-powerpoint\nfile-image\ffile-archive\nfile-audio\nfile-video\tfile-code\tlife-ring\vpaper-plane\x06futbol\tnewspaper\nbell-slash\x11closed-captioning\fobject-group\x0eobject-ungroup\vsticky-note\x05clone\thourglass\thand-rock\nhand-paper\rhand-scissors\vhand-lizard\nhand-spock\fhand-pointer\nhand-peace\rcalendar-plus\x0ecalendar-minus\x0ecalendar-times\x0ecalendar-check\x03map\vcomment-alt\fpause-circle\vstop-circle\thandshake\renvelope-open\faddress-book\faddress-card\vuser-circle\bid-badge\aid-card\x0fwindow-maximize\x0fwindow-minimize\x0ewindow-restore\tsnowflake\ttrash-alt\x06images\tclipboard\x15arrow-alt-circle-down\x15arrow-alt-circle-left\x16arrow-alt-circle-right\x13arrow-alt-circle-up\x03gem\x0emoney-bill-alt\fwindow-close\fcomment-dots\nsmile-wink\x05angry\x05dizzy\aflushed\nfrown-open\agrimace\x04grin\bgrin-alt\tgrin-beam\x0fgrin-beam-sweat\vgrin-hearts\vgrin-squint\x11grin-squint-tears\ngrin-stars\ngrin-tears\vgrin-tongue\x12grin-tongue-squint\x10grin-tongue-wink\tgrin-wink\x04kiss\tkiss-beam\x0fkiss-wink-heart\x05laugh\nlaugh-beam\flaugh-squint\nlaugh-wink\tmeh-blank\x10meh-rolling-eyes\asad-cry\bsad-tear\nsmile-beam\bsurprise\x05tired\x00\x00\x00\x00\x01\xff\xff\x00\x02\x00\x01\x00\x00\x00\f\x00\x00\x00\x16\x00\x00\x00\x02\x00\x01\x00\x03\x00\x99\x00\x02\x00\x04\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\xd9k%\xf9\x00\x00\x00\x00\xda\x15\xc8\v\x00\x00\x00\x00\xda\x15\xc8\x11" var _Assets2b8ba0ba9ee6d47753727f8c81b09020b5f9249c = "wOFF\x00\x01\x00\x00\x00\x01\\\f\x00\r\x00\x00\x00\x02\x02(\x01J\xc0\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00FFTM\x00\x00\x010\x00\x00\x00\x1b\x00\x00\x00\x1c\x8d\x96\xb6\x16GDEF\x00\x00\x01L\x00\x00\x00\x1e\x00\x00\x00\x1e\x00*\x01\xbfOS/2\x00\x00\x01l\x00\x00\x00L\x00\x00\x00`B\x0fV\x9acmap\x00\x00\x01\xb8\x00\x00\x03;\x00\x00\x05\xda\xf2\xaa\xef\xe1gasp\x00\x00\x04\xf4\x00\x00\x00\b\x00\x00\x00\b\xff\xff\x00\x03glyf\x00\x00\x04\xfc\x00\x01A\xbb\x00\x01\xd5\xe4\x94:\x85ahead\x00\x01F\xb8\x00\x00\x003\x00\x00\x006\x17\a\x912hhea\x00\x01F\xec\x00\x00\x00!\x00\x00\x00$\x046\x03\xebhmtx\x00\x01G\x10\x00\x00\x02v\x00\x00\x06\xe4Kc\x06\x89loca\x00\x01I\x88\x00\x00\x03t\x00\x00\x03t\xa2\xe5\x11Vmaxp\x00\x01L\xfc\x00\x00\x00\x1f\x00\x00\x00 \x02\"\x03Oname\x00\x01M\x1c\x00\x00\x02\x11\x00\x00\x05\x85\x8e\x97\xb2\xcdpost\x00\x01O0\x00\x00\f\xdc\x00\x00\x14\x89\x13,\xe7\x97x\x9cc```d\x00\x82\x9b٪?A\xf4-\xd1\x13\xdcPZ\x10\x00D\xd7\x05\xee\x00\x00\x01\x00\x00\x00\f\x00\x00\x00\x16\x00\x00\x00\x02\x00\x01\x00\x03\x01\xb8\x00\x02\x00\x04\x00\x00\x00\x02\x00\x00\x00\x00x\x9cc`a|\xcd8\x81\x81\x95\x81\x81ч1\x8d\x81\x81\xc1\x1dJ\u007fe\x90dha``b`ef\xc0\n\x02\xd2\\S\x18\x1a>4\xfe\xf4d<\xf0\xff\x00\x83\x1e\xe3\x19\x86\x10\xa00#H\x8eъq)\x90R``\x04\x00{\xb3\x0e6x\x9c\xed\xd3\u007fh\x95e\x14\a\xf0\xf7nW\xf7\xfe\xb8\xe7\xdc\xe9B3,\x8a\x14la\xb8Uj\xea4F\x11QAI\x91EE\u007f\x18m\xac\x96\x91\xe1\x8fJ\xb7\xe5\xa2URNӮ\xe6L͙\x9aZ6\xd3p\xb3 [\xb6nu\x9b\xcd\xc0\x96\xeb\xe2\xd2\x04\u007f\xbc\xe7\x9c\xe7}\x9f\xf7jh\x0f\xd7\x11\x11\x04\xfeU\xff\xf4\x85s\xe0\v\xcf\x1f\x87\x0f<\x96e\x15Z\x17f\xa4\x153ۊ\xff`Z,\xdf\xe3\xf1ݖ\x15+5\xa5\xc8*\xf5\x1b\xfc\xd7\xfcf\u007f\x95\xdf\xe3g\xa9\x84\xc6\xd3\x14z\x90\xaa\xa9\x96\x9e\xa6ٴ\x80\xeai\x11-\xa6e\xf4\x16\xad\xa2\x16\xdaL\xbbh/\xa5\xe9G:N\xa7(\xe0Bv\x18y\x18\x97\xf3\x04\x9e\xcaw\xf2#\\õ<\x8b\x17p\x03\xbf\xc2\xcb8ŭ\xbc\x8d\xdbx7w\xf2!>̿\xc8C\xf2\xac\xbc u\xd2(/\xcb\xeb\xb2BV\xca\x1ayWvH\x87|&\xfbd\xbf\xa4%#\xbd\xd2'\xfdrBN\x8bHNΩA\n\xd4pu\x95\xbaZ\x95\xa9\xbb\xd4tu\xbfz@\xf5\xa8_U.\xb8$h\x0eZ\x82\xf5\xc1{\xc1\x8e`g\xb07\xe8\f\xd2\xc1w\x01\x05:8\x13&áᴰ2\\\x1dn\x0f\xbb\xc2tث\xe3\xbaL?\xac\xe7\xea\xe7t\xa3nҋ\xf5\x12\x9d\xd2\x1f\xea\x8ft\xbb\xee\xd4\a\xf4A\x9d\xd5G\xa2\x8a\xa82j\x89Z\xa3\xae\xa8;\xcaF\xbf\xe5\x8ar%\xb9\xcbrW\xe4n?\u007f\u07b2\xfc\xfa\xbcU\xca\xef\x1e\xb0\x9al\xac\x1e\xa7\x1a\x9aE\xcf\xd0<\xaa3VMy\xab\x95\xc6\xea\x1dj\xa3v\xea\xa2\f\x1d\xa3\x93\xe4s\x01\xdb\f\\\xcce\xc6j\x12\xdfa\xac\x1e\xe5'\x8d\xd5\xf3\\Njx)/\xe7\r\xbc\x89?0V\xfb\xb8\x87\u007f\xce[U\xc9\\Y(/\x1a\xabWe\x89\xa4d\xb5\xac\x95Vi3V\x9fK\xa7t\x19\xabnc\x95\x95\xa3r\xcaX\x05ƪ@\x15\xa9!j\x84\xb1\x1a\xfd\x17\xab~u,p/\xd2\xea\xab\x01\xabqy\xab\xf9\x03Vo\xe8\x15z\xbb\xb1\xda3`\xd5g\xacn\x88\xa6\xfd\x93U\xb2!9/9;Y\x9b\x9c\x98\x1c\x8b\xbf\xe3!<\x88\x9f\xe0V|\x1f\xb7\xe0fl\xc5\r\xb8\x1e\xd7`\n\x97㛸\x14\x9b\xb1\t\x1bq>\xce\xc1*|\fg\xe2\f\xbc\x17\xef\xc1\xbbq<\x96\xe38\x1c\x85%8\x14\x87`1\x0e\xc28\x16\xc2Y8\x03\xa7\xe1$\x9c\x80\xe3p\x182\xf0-|\x03\xd3\xe16\xb8\x15n\x81J\xb8\x19\xa6B\x05L\x81Ip\x13L\x84\tp#\\\x0f\xe5P\x06\xd7\xc1X\xb8\x16J\xe1\x1a\x18\x03\xa3a\x14\\\t\x97\xc3H\x18\x01\x97\xc2p\x18\x968\x9b\xd0\tIpbN\xa2:Q\x95\x98\xe1\xfd\xe4e\xbc\xb4\xb7\xdf\xfb\xd4\xeb\xf0vzۼM\xdeF\xef%\xaf\xde[\xe8\xd5x\xd5^\x857\xd9ͺ\x19w\x97\xfb\xb1\xbbѭs\xefsK\xddb7\xe9\x0ev\v]\xcb9\xe7\xe4\x9c~\xe7\x88\xd3\xeb\x1cp\xbet\xbep:\x9cv\xe7\t\xa7\xc6)v\x1c\xfb\xa8\xddg\u007fo\u007fmo\xb5\xd7\xd9o\xdb)\xfb\xa9\v\u007f\xf3\xff\\\\b\x83\xad?\xc1b\x05f\x15\xfc\xfd\xc1\xbf|\xd0\u007f\x90?\x00\xb6\x15\x13\n\x00\x00\x00\x00\x01\xff\xff\x00\x02x\x9c\x84\xbc\t\x9c\x1dGy/\xdaU\xd5]\xd5\xfbrz;\xfb\xd6g\x9b\xed\xcc\xcc\xd9z6͌fF\x96dK\xb24\x92lk\xf3n\xcb\v6\xc6\v\x18\xb0A\x18\x1b\x83\x8d\x01\x83\x93@0\xc1\x84\x04\xc3#\xc4f\xbd\xc6/\x80}\xc3K\xc8\xc2\xf2\x1e\xf7\xf1\xc8\r\t\xce\xcdF\xf2\xf2\xbb\x8f$\xdc@nrG\xf7\xab>gdIp\u007f\xef̜>\xdd\xd5\xdd\xd5\xd5U_}\xdf\xff\xff\xd5W%`A8\xfb\nz\t=#X¢ \xa0N\xe0;\x1e\x8d*\xd5F\xdf\xe9\r\xba\xd2 \xa6\x8c\u007f\x1bQ\x95\x86\x8d&\xf5\xbd\"\x82_\xdf\vB\xda,\xa2.\x8d\xaa͠\xdbYF\xfd\x1ez\x9f\x97\xcf{[\xcf\xf0-\x9avM\xd7\xf5e/p\xf3\xa5\x16;\xdcWdS\xb6\xcdbhڴ\xeaצ\x14֎\xe7\xaf\x1aCϜ\xbb\xe1Z/\xffQӓ\xb1\x11\xea\xa2?S\x91V\xad\x94\xea\xa7(\x92Q\xba&\x11\xece\xf2\xa8\xb8pdJ\x12\xa0\x90\xe7\xca\\;W\xe2\t\xd4\xef\xc6Q\xbf\xb7\x88\xfaPT\x13\x15P\xe4w\xfdh\xf4\x1aâ\xbdkA\xdb\xd5*\xe5s\x85\xb1\xf4\xcaʻ\x92\xa7\x8e\x9e\xff\xc1=Ӎ\x1dR0Y\x8c\xf7|pX\x16x\x8c \x9eW7\x9e\x90\x17\xfa?_?n\xb7\x1f\xf9\x83ΠרR\x0fꠍ\xa1\x9eX\x04\x89\xdd>\x9c\xee\x14q\x01\xa1g\f\xd75\xb6\xce\xf0\xedi\xb4\xee\x94ð\x1c\xa0UjW\xd2a\x85\xa1\xd5u;\xd4m\t\xa3g\xb6/B\xb0\xdd:\xf3\xbd\xef\xfdsX\n\xc3\xd2ֿܗ\xae\x16,\xcf,|\xef\xb6LQ\xf5,\xfd\x16(\x9br^ٮ\x10N\b7\b\xb7\nw\to\x10\x1e\x14\x1e\xf9\x05\xa5\xe4\xcd\xc3[\x907[\x00\xbb}\x13Uۨ\xd9h\xce4{]H\x8a\aq\x9b\xf4{q#\x1e\x04%4\xe8\x84\xcb8\fX\xe0{&\x86m\x1e\xf9^\x836\xba\x03\u058b\xaa\xbe\xd7\xed4h\xb31\b\x9b\x83\x06\xa3a\xd0\x1c4\xe17h\xc0\x0f\x85\xb4f\x95'\x9e/\v\u007f\xdd\xd9qݮ]\xa7\x96;:\xc2\xd41M\xc24&ۊS\xc6r\xca\xcbh\xb6\xa2\xd2P\x91\xbd\tO\xd42T\x95\x1d=르\xc3\f\x11Q\x17\xe1c`\"b\xa2 \xa8!L\x18\xe6\x1f\x91\x12\x8c\t\x16\x11\xc6\b\x11|\xa1\x14m\x9dq\xae\x8c7N\x9dڈ\xaft\xb0\x8a\xca2\\\xa2*\xae\xc4\b\xb2\v\x96Űd\x16\x83\xc0\xf12X\x91\xe0\x83\x99\x8a\xd3~\xca\x0f\x8a\xa6\x84\x15\xdf\x1cC\xea*\x92\x90D\b\xa6\x12\x82=\x8c(\u007f\x98\x86 \x05IJ\xf2d\x06\xa9\b\xe1\x91,\xfe\x18\v\xe8}\xc2\f\x1c$56\xec\x11q\xb5\x91\xfc\xb4\xf1\x0e\x14\x84\r\xa8\\\xdeq\x12\xa1\bG\x9d\n\xfd\x11j\xed\xbd\xf7\x92\xab\xf6j\xe6ޅ\xa8\xaf\xaa\x8ai\xa6\x1bA\x90\x99\xb6\x9a\xaf[\xc5;&ڥZI\xaf\x16\x8b\x01j\x89J\xff\xd6+\a\xd3hj\xac\x84\x88T\x9c\xc8`\x03\x95\xe7\xf2\x99\xd9\x05\xa2\xeb\x13\xcb\x15\x96\xaa\xfb\xa2Q\x86\xf2\xc8g\xff\b\xfd\f\xbd \x14\x05\xa1\xeeQ\xf6\x8b\xbaE\x1b\xc4a\xd0\t\xd0\xcf\xee?v~\x978v\xff\x93\xdfz\U000a54cf\x9b\x9fy\xb5;|\xc6|\xfc\xe4\xe9'\x9f\x14dx\xcf\xef\xa2\x1fC\xbeL0\xa17\xdc$\xdc!\xdc\a\xd2\xf6\xb0 \xc4^D\xfb\xbd\xee\x80\x0e@fh3\xee\xc0\xb6\xe1v\x8a 5\x14\xf6\xfaK\xf0\xb4\xe6\xb2\bb\xc7E\x85Z\xa8Qem\fR\u0095\t\t)3Q\xa3\xd9FӨ\x1a\x16Q\t\x15qg\x05yP\x93\xb4\x99\x94\x93\f\xb3\x85\x9b\x87\xbf\xe1\x05ǍOHT\xa2\x15\"\xf1\xb6jA\xbbIh\xf7ƽ\xeb\xa7.\x93\x15'H\xd7\\S\x87?\xb5j襝E)UW,=4SՌo\x10\xd5/\xab\xd4\x05\xc9\xf5\x98ID\xd1K\a\x8c!E\xdew\xf5\x13\x93\x98\xf0V&\n|Ax\xc4*\x16A\x02EQ!\xfc#uE\x90\x0e$\xca\x18A2\xa3\x18Tԙջ6\x0e\xbf=\x83e\x8aV\xbc2dg\x06\xad\xbc\x9b\xb6JubȊ\xa2\x88\x9aE\xea\xa5L%\xdf\n@\xca\xf4@\x14uG3\x10\xb2\xc4\x14\x93u[DH\x9fATƙ\xb7\x1f\xbe\xe5\xdd[ώ\x9e\xaf\x82ă\xb0\xe1\n<\x9b\xc0\xd7!\x92\x88\xb1\x92\xc8\xdc7\x92\xb6\xb8\x14$\xd0\xe3*x\xb0\x82@\x19w\x06\xe7u\xf3x\x19\xc5P߉\xc4q\xb9D\xa0\f\xe3e\f:\n%\x97\x14E\x1fꞆCa@?~\xf2t#JS\x9b\x96\xddx\xefU;\xf7]\x99\x0f\x18\x17\u007fDR;\xba\xed\x05\xbf滁\x88uJ-\xd5͂\xec\xc3_\x06\xba\xcf\xee+\x9f\xfc\x16j~\xebI\xad\x95Y\xd4\xedc;wl^\xb5\\\x98W\t\xc5!\x11IX\x9d\xd89?Y\xe9\x15r)\xb5\x96S\x15[\xa9fE\x851\x11\xde\xf8\xb4\x97i\xe7\xder\xe0\xf4\x93\xe7\xe9\xf3M\xe8C\x892\x1f\xbd\xcf\x05z+\xee\r~\xf1\vq\xfd\x03\xef\x83KȔ@}m+\xfd\nH\xf8Ky\xef_\x02j\xd1r\xaa\xbeP\xb9r\xe7e\xc9[\xd1\xe4\xa5:S\v~\x14\xa4\xe0\xa54\x96\xc9Yr\xa2L$C\x82\xb7\x86\xf3Ƕ\xd5\t\xba\x8b\xab\x96Z\bo\u05fad|ǡ+\x97\xf3s\x1aa\bڐ\x84\x95\x89չ\xc9r/\x9fMiQN)\x8ab\xde\U000a8b80\xc2\xf0c\xaf\xac\a\x8e\x81\x86\xb9$\xf6\x84\x9c\xa7\xb3'\x84\xf8\x17\xe8iހM\xe8\xa1\xfcݒv\x01e\x11\xf3\n\xf0\x82z\x9f[\x15\xde{\xbb\xfd\xf3\xb5\xeb\xbd\x13}|\xf5<\xc9g\x9d\xbcS˦\xed\\\xbe9\xb6\xb8\x88\xa4\x02\xff\\\xa4\x19\u007fg0)\xcbU+\xef\x14\x9cl\xdd\xcaf\x177\x177\x93\xeb\n\x02\x16tA\xc0\xf7\xa23BNh\x82\xe6\xe0\xfd\x0f*2)\x01KT\a\xb4\x01\b\x18(\x13\t\xec\xaa\x0f\x85\xe9w\xfb]\xf4\x10\xb9y\xf3\xe0]w\x1d\xbc\xac\xdf+\xb6\xcbq\xf9\x92\xd9\xce@\xba\x03\xdd977\x17\xc7s?p\xac÷\xde\xf5\xcc]\x9dN\xa1\xf2\x11\xe4H\xff\xa8?K\xfb\x03q\x9aހ\xae3\x9f\x17\xd13[\xf7\xf6z\xa0\xda\u07bfl\x9a\x8d}\xb9\xdc/͎\xfa\xfa+I\x1f\x10\x10d\x16wY\xb8\x82*1\xffC\xaf\xac\xfe\xf0eoS\xbe\xf7\x1d\xee\xd6\xe7m\xb4_\xdb\xfa\x9c\x03\x99\xbc\xef\xe0\xc1k\xc6&'\xaf\xdb\xeco\x82\xb4\x90\xb3/\xa1\x87An\xda\xc2N\xdez\xf5\x00\xec\a\x03y\xacF\xc9&\xeet\x03\xd0|\xfd6bը\x1f\xc4\xfd\xae?\x00A\xf5\x8b\"@\x15\xbf\x13\f:\xdc\x14\xb5E\xca:\xc12M\xf6\"4\xd8\xcf\xe8\xee\xb5ٌ1\xab\\\xa5\x12\xe6\x18:\"aA\"G\f\x9e\xe6\x96\v\x9e\x81跐\xab\xfa\xa6\xabkTI99\v\x94`\xa8g\xec\xc04\x98\xe6\xbb\x15\xbb\x8c\xbe\x99\xda\xecO\x8a\x1b\xeb\xeb\x1b\v\b\xc9\xf2\x9f\xd8\f\xf5\x10\xba\xfc\x00\xda\u007f9fz*g/\x1c\xb9\x96\xdb\x13Y5\x15\xd0\xff`9пq]#*\xaa\xad\x1a\xae\x06\x16\x857\x1bԹ\t\x9b\x0e\xc8h\x8d\xf7ET$\x05\xe4\xf1\xb7\x84\u007f\xd0\xf5\xdcX6A2\xe1-\xe1\x1fd\xb3\x88\xa4\xb8\x89\x1b\x04\x10\x92&eS\xeem\x93\x93\x9f\x1eo\xaa`\n_=Le\xb7~\xff\xbd\xefE\x1bz-*\xaa\xca\xf1\t'+\xf1\xf3Z\xdd]\x0f\xd3\xc7&R\xc3C)\xfb\xa3\xcdC\x02>\xbbu\xf6\x87\xe8!h#[\x88\xc0\xbe\xcf0\xd0\xc8\xd5\xc6\n\x00\xc6\x01\x88{Xga\xc0S\xa6\xd12\x8eyJ\xf0\xf1Kdu'\x95\xf0\xaeIB\xe9N\r\xec\xe8\xfbN\x10\x89\xaei\xec$*\xed\x19c\xea\x1a\x95\xfe\xeb\x03\xba\"\xbdi\x9f\xa4\xe8W\xfc\x8fga\xfb)\xf0\x01\xd0\xcb\f\xf4\xea\x02\xe8\xd51\x10\x9e\x04\u007f\x00q\x89\xaa;P\xa2hx//\x80\x05\x06E4\xc1\x91@\fໄ\x024\xd0\xfb\x95\xf1\xe5\xa21\xadj\xe3-\x82\xacK\xd4#\xaaz$\xaa(\xa2\x84\x03\xb1l\xb8\xf9\xf6d\xf8>uC\x17͵\xba\xadޣn\xaa\x8f\xe4|\x1dZ\x99\xad\xaaC]\xf7j\xfd\xff\x02D\x84\xa0o78\xbek쀧Ca\x80\xe7\xf7\x86]\x1f\x80\x81\xb7\x888\xee\xebv.p=\x98\x18\x84\x14p\xba\x1f\xf4(\xed\xd1I\x05\x89\xb3\x8c\x16e\xb7\x91\x1b\xbf\xa8\x95\x9e¬\x05P\x14ˆs\x18.\xddC\xd59\x87\xb0\tz\xdc\xcc\xe7SP6\x02\xf5\xfd \x94\xad\xc4\x11J\xdd\vA\xf8\xab\xdc\xf0G\x94w\t\xa8m\x80\a\x80Ry7\xa0M\xe0$\xbc\xaa\x02\xb4\xb2C_(\x9bmǙւقl\xeej[sT\xf4\x83\x82>\x9f\xefΕ\xebbAo\xa4\xc8\xe7W\n\x8d\x83(\x95\x02\xfd\x15\x8c7W.\x01\x15\xafP\xe00\xc5;\x1b\xa4U6=Ժ\xd0\a\xb1\xad/\x04'\x06\xfc\x05z\x81\xeb\a\x02\xfb/\xbc\xf0\x82\xf7\x13\xf8\xa0볟\xfb\xad_~\x1e\u007f\xee?\xa1_\xab~o(s\xc2*^E\xefHt\xc0\x94 \xd4\x12q\vZ/xl\x06\x8b\x8ac\x1c\x06\xc1}\x9b\xe1\xa52\x19\x90i\x99\xfd)S\xf01\xa6h{%&BO\xc2*;\xaehD\x92\xc5\xdb\b\x054\xf1\x95r\xe5\x9f\x15\xd9f\x84\xfc\x92%\xb3\x10}\xce)\\\xca4\x8dn}\x06\xe3\xd7\xc8\xd0cqPg\x9a\xae\x18\xa2,q\a\x1a\xb7K$\xc1\xa7ܮ\xa5\x80c\x9c\xf3\xac\x0f\x91L\xbf\a\xc5\x02\xd8\x0f5\xcf\v\x0e\x86\xbeȋ=\x88\x87\t܍9JA\xef\f+V\xd6\xdaz>\xacT\xc2'l\xed\xb0f\x83\xed\x81\xed˶v\x88\x19\f\x0e\x0ei\x80\xde+\xe1\xd6\xf3p]%\xfc\U00103b70\xb2\xf5\x99-Ͷ\xb5-n\xa6\xde\xfc\x9e\xe4\x96\xf7\xf0\xfd\x91\xac|c\xe4\xe7̽*\xed\x12p\xfcf\x83\xbb*\xb9\xb8\x9b\b\xc0ϓCy\xbe\x9dHH\xd7\u008a\xae7t\xbd\x1a\x9a\xa0\x82^7\x12\xd8C\x92\xed\a\xb2\xa6\x98\x062MES\xcb!\xfbP\xe2~\x80w.\xe3\x1e\xbaV\xd8\x0f\a\xdc4x\xe1\f\xe7\xa7\xf0nm2\xf4,\x8c\xfc/\x1c\x8e\xf78\xc3\n\x13\xf7\xde\x0e\xc4\x053iC\xa8\x82\x0e\xd8\x020\xe1p\x80+d\xac\x8a(5R\x81k\x11\x96[d\xa0w=\xb5\xe5\xea\"\xb2s\xd3\xd7֪S\xa6\xb7\xa8i\xa2\xbfæ\x12pS&2\xf1\x94\xed\xa6ܚ\xa2\xb0\xd4b\x1a]jmt\x91\x02\xcc4\x95\x0e\xd3rFT\xf5@m\x98\x15[յ\xb9^\xfbČ\xea\xa8Ǝk\x15\xe3J\xd3STQ\xa4bp\xaf\x93\xf2\x97<\x17\xa0,\xe3\xef\x84\x15\xf4I\xc1\x10\x1a\u008c\xb0,\\\n\xcc\xfc$$rc\n\x96u\xc09z\x83TG\x96\x9a\x9b<\x9eF\x13\xe3\xc7\xe8 \xa9RP\x16\x03w\x006\x936\xe2\xe1}$\xa9mn\xf0\x8a\x88W>\x18\xf3eԈ\x1bCÈ~\x85fR\x9a.\xa9\x8d\xaeN\\\xe3+G\x1fڷgi\x92\x80Y\xb2\x96\xf6\xba`\x99\xd6D\xb2\xba\xd1S\xaeY]=,\xc3fW\xe7hæu\xea\\\x1a\xeb&]\xd7w\x96\x8b\xa1a,\x15˹\x1bԀR\xc9\vu0$TR8q6Sy\x11T5\x96\xe7k*1\xb6\xfeǾ\x1d\xeb\xfb\xf6\x88\xa4iz\x9a\x94+̂\x19\xf3\xfa\xfd\x89\xf6\xad\x87\xbb\x8cn\xf0\rz\x83\xda>>\xe3\xean\u007fS#\x8e\xbf\xf5Dž\xbc\xa6\xf4s\xb9\xac,w\x91(+\xaa\xabʞ\xe7\x10Y\x11\x81\xeesl6ԯ_\x10\x14`\x80E@@\x1e\xc0\x02\u07b6\xb1[m\xc2\x16\x80\v\x8d\xdbd\a\xe2~\xf4\xefm\xae-\f\xae^\x18[\x99\x9bZѴ\x95\xa9\xf8\xad\x95A3\xb8\xea\xf5(\xdc|\xa4\xbc\xeb\xf8\x8e[w\xa9[^1\u007f\xa8\xdd>\x94/^euW\xf6\x8f}\xc4z\xec\xe4qh\x02\xe8g\u007f\x88Π/q\xdf*\xe8l\xc00\x1c\xdc\xf7\xb8+\xcfD\x80H\x96\x11@\x18\xbe_mK\xcd\x01w\xa2\x0e\xfam2\x88\x01=Y\bX^oY\xec\x84&\x99\x06ðL\x02t\xc6\xea\xccN\x99f\xe9\xbay]\x9f9Tp\xebӓV)\xae\x97\x1cf1L]7\x1b\x86)\x1d\xd7z\x91\x0f\xefN\xa7s\xcd|\xbe\x99\x9b\xf6r\xb03\xedB\xd2\xebݼ\xe1\x1b\xa8{\xdey\xd7\b\xf4\v\xafȻ\x8f\\t\xfc\xffs\x03d\xb9\xf5\xcd\v\x1e\xc9u*=\x87W$a\x1a\x98\xe4Na\xafpH\x10r\x88;v%\xcfB\xcdD\xa9D\xa0G\x82n\xd0\xe5>\x9c\xe4\xb8\x1aq\xc7rXM,:\xa8#\xce\xe4\x00\x1b\xb8\\\xff2\x00\xf5\xbdm\x1fIj\xe4\x05X\xbei\xb0\x86n\xb2\x83}i\x19)\xd5`\x0e$[\xd2\xf4\xca\xf4\xfe\xb4\x82\xe5(\xa0r\xe1\xea\xf8\xf0\x0e\x8c,\xdfO\xbd{'BQ\xadX\xfcivaf\xa7\xbd\x94\x18\x85w<\xfe\xf5\xc7\x1f\xff:\n\xb7\xfe>{zy\xaa\xea\xf4v\xff5F\x0e\a\xa2\x8a\x82O\xbc\xfbo\x93\x83\xc9\xde\\h\xd9\xd5\xe2\xc2\xe7\x11\xd6\x15ԙ\x8e\x17\xae\xcf\xffN\xab\xa6kC\u007f\xc0'x\x1e\x8foc\x9b\x1fC{\xbf/AiB\x9d%\x8e\xec\xd8O\xfc\xf5\xa1\x13;q\x130X?\bcdo\\y\xdf\x1d\x87\xe3]\xfb\x176>\xfb\xf6z\xb1\xb5\xab\x1b\xd9eys\xae\u007fH\x9dP\xe6j\x8d\x05\x86\x8eT\xb6\xce\xad,N{Vʵ\xeaO\xff@\x14\u007f\xe0Ώ\xc7S\xddP\x14\xe7?e]{yM\x14{\xa3q\xd3o\xa0\x1fA{\xe5\x93q\xcasc\rm4\x1aj\x80\aD}\xc0\xb1?z\xe4\xf6\xd3O>y\xfa\xba]\xeb\xe5c\xfb\xe3\xe3\xabQ\\r\xc8\x13\xff \xbex\xdb;\xa1*v\xee,i\x95\xfd\x9d\x9d'C\xe0\xb1W\x04\xd0\xfa\xdbr \x83\x0eX\x04)8*\b\x03.\xd5\\\xa0\xb7=.a\x955\x9aq8t\xea\xc0k5\x1b\x16\x1a\xc68\x04|T2\x18\xc2>ЍС\xb9\x8d\xaar\xa2\xc9\xe1,Ljt\xd8G\xfe\x93o\x9aP\xcdAҪ\x86\xa9\xd6:\xce\x1c$\x98\x9a\xc5vH\xd8\xed\xd4\x14\xcbv\xa9\x85\x0f\fr\xb35\x0f\x81\"<*\x8a\x92\xe4\xecs\x00ߋƺ\xaf\xf1\xfb\xa9\xfe\x1eKU-\xcb{,i\xd9o\xab\x19|@\xd7L˳L\x13\xd1+pFM\x97d&\xb7b+Ss\xc1n\x97\xd2\xf7B.\xa2\xe3p\xeac\xa0c\xc9\xcd*Ӹ\r\x96\xce\xf5}\x038v\x1dPյ\x89\u007f|T\xfc\x004P\xd3\x1b\xa2^\x8ev\x87/3<\x8c\xcfWd\x95N\xc0F\x15\x94\xa0\x8e\xffE\x15\r\x865\x84r\xc0\xd96S\xf0R\x92\xb9ǔ\xae\xb45Ͳ4\xcd>1\xfc\xb1\x9f?_\x83\xddhj́\xbb\b`\x8b\x030[^\x93\xb07hhV\xcag6>\xb2\xb0x\x18\xdb̿Y\x94R)\xc8N2Miv\x94\x8b\xbd\x9d\xed\x97_\xcd,\xff15\x87\x8e\x9a\x00\xb1\xad\xc0\xb6\xa0x\xa7pN\xcbVdY\x19_Z\x1aW\x99\\ɞ\xb3\xb3\x1c\xcfՅ\xf9\xf3}\xa0\xa0\xf4\xc28\x01\xf7C]\xb8\x03E\xc3\xf7\x02u\x17\xce\xf4#\u007f\x98ȚC\x81@C\x02\xf3\x8f\xa6\x16V'\x97'UK]\x98,\x95&_\\\x80\xbdj8Y\xf2\"o\x84\xfb**\xf3U5,N\x8c\x17_#\xab\xaa<\xd5.MN\x94ng\xafk\xcf0UeӪ6]\x9a\xf0\xa2\xa4\xef\x9eE?Eg@Rg\xa1\xa5F\x0f\fc\x9f\v\xe6\x0e\xee\xe4\x1f\x15\x8e[/\xd4\x1d\t&\xd7Ɖ\xc6F?];\xb5V\xed\xc1\xcb?n\x85\xd6\xdat{\xed\n[\x93T&\xae\x9fX\xef}\xe9\x92\xf6\xda\xce\xf6%\xb6\xbd\x9b\xd7۞\x85\x12\xaf\xf0g\xda;\xd7ڗ\xec\xd2,02\xd2ǧVV\xa7j\xd6P\x87\xfc0\xe1Gu\xa1\x9bD1\f\xa5\x81\xfbW8\x00\x1d\xcaD\x98\x80\xd0pۓ\u0087#y\xe1\xba>\xd4\x18\xfa*\xe6\xadL\xa9\xa6`L(\xe1\xedC) }\xa0\xef\"\x1f\xccF\xa8\xf8\xd2\xf3L\xe1_\xf4\x80\xc4x\x1b\"\"c\f8\x93\xf2\xa6\xc4p\t\x1f\xe6\x02\xde#\x92\xad\x0f<\xff\x92\xc2\xe0;\xb4g\x80\x95\x05\xc0\xca\x12 %G\xf0\xc1\xa6U\xa0\x9cc\x80\x98\xfa\xdd\xc4K\x1e\xf9u\xbe\xd3\xedG1\xec\xb3\xfe\xf0\xa0\xe9÷\x9b\f\x98F\x9b\xddG6Kh\xcf#\x8flnn\x96\xbe\t?\xa5ү\xf6\xe0\x83\xbc}\xff\xf6\xdc;N\x9dz\xc7O\xc6\xf2c\xa7N\x8d=\a\xbfpx_7\xf3\x9cpA\u007f\xe2\x18-\x12:`I\x85T\xc2\x1d\xfb\\W%֏\xef_\xdc{$\xde7\xf80;\x8b\xfc\xb8_D\xc31C\xf8\x83#h\xc2o\xa6\f\x8d1\xcd\xd8̓}4ʾq\x81O\xf2_A6\xaa^ʙꚟ\x99(R\x91\x1aA\xb1\xa7\xdb%T)\x85\xe2\x86xk\x90\xfc\xfc\xfay\xdd\xe0w\xa7\xcbA\xddW\xbe\xa5v\xa5\x85\xb56r\xcd\x10?\r\xfbPw\xec\xec\x97\xf1<\xe8o\n\x8ccU\xd8\x10\xbe$\xbc(|U\xf8#\xd0\xe6\xac\xd9I^\x81\a`L\x03\xac&\r\x1e\x92\xb2L\x00\xf7\xc5~\x17\xf6\xe4\x15\xc4K\xccA\fG\xa0\xac\x113\xbfO\x00\xcb\x00_i\x93\x88\x02\xe7/*\x05\x14\xb0\x06m.\xa1\xb87\xe8s\xef\x15'\xc7\xdc\xe1\x95h\x95\x154t\xc4m\xd3k\vm\xeb\r\xcej\xe2\xe6\xa0\xc9Q\x05\tc\x13\x17РHXb\x96C\x06\xb6\xa5\x1b\xccz&\x89~\x02R\xa2\x8b\xd2\x13\x84)\x94\xa1n̴A\x9a\xec\r唚\x92=>n&\xb3ݑl\xe8L\x15U\xa2\x13\x8c\xf4\xc9\xd3D\x065I\x90\xceR\xff\x17ZT\xb3\xc0)\xa3I5\xe5+\xd5\"\xe1>-E\xa4<\x9e\b\x10\xa6\xc6VdTaT\x9dt\xb8\xed\xa7\x98\xbeK\x13\x99\xf2n\x8ceICн\x14i\x06kX\xedOSs̰\r\xec\xdaR\x98J\xa5\f\xa2\x8a&J\xd9A\xb3Pp_P\x88\xbe\xcb,yK,H\xe9H\xb5-\x1b\xfd!@\x82?Pl\xddA\xae2%\xebH\x13\t\xd8\x04b\xca!!\x86\x8c\x82\\\x8e\xa9\x1a3DG\nDb\xa7Of\x92 &\xc9¢\xe4}\x1eʵ\xf5v\xbbd\xa5\x14\xe0\xfe\xd6\xc1˖\xf8\x00!fЧ(waQ\xc5\x00\x9a&ќB*\f\xc9V.\x9d/\x8a\x98\x95\xa9\xa4\xe2\"\xa0l\xe8Q\xa6\xeaa]\x94{mSU\x91\xc4\x00{\xdbU\t({Na\xa6\x8a%\x8a\f/ʭ\xa7\xc9gŮy5\x12\xb1\xc4\x1d\x88x\xe8k.\x83\xbc?\x03\xf2\x9e\x16Z\xc2\x02\x1f]E|\x80aؚ|\xac\x0f\xfe\xb8\x12p\x93\x90/H\x9d\x06v\x1e\x06\x03\xee\xe3\x01Fơ.\xa0\xaaf\xa3ʏ\x12\x1e\xcb\a\xd6y\xf0\x00h\x8ce\f\x1d\x06\xad*\xe9F\xe6\xae\x03\a\xee\xcd6\xf2J\xcbpI\xd9\xd2&\f\tZĭY|\x10R\"\xfe\xc1\x86\xec\x8a\x04h\xb3\xa2b\x82)\xbcB\xe6\x8aаl\xa6\xab;4\xb5:\xe1\xa7#\x93\x99n\xb75\xae\xa83h\xbf\x14L\xeejn\xderǡ\xfa\xc6x(\x05\x9a\x195T\xe6m}A\x12\x116\x19H\tI\xd1\rbS\"C_\x13\x91d\x13\xd1\xc3\xf5q_\x1eOg\xb2՚j\xaaa\x1a͞\xe7k\xff\x18\xbc\xff,p؛@\xc7$\x962\x1c\x84\x8c\xa3\xbf\x12\x02x\xc2)i\x9b\xfb\xb4\x80\x97r\xec\x98 ŀ5\xf9\xf0\x10\x1f\x91L\xe2\x9e\xf8{7\x81\x06\xc4\x1caL\xa3\x983]\xee7n\xf2\xf0\xb0\xc4\xe06\xe2\x10h?\xb7\xc91\x8a\xd2aE\x1c\x8cO:y_\xbdq\xb2[\xb1=C\xf6\xb2o\xbb\xc2t\a\x19R\r\xd3Q1\xb0\xa7&\xad\xa0\xa8\xa9\xc7\xff<(F\x193\xe3\x90̼7i\xe7\x03\xedƩ\x13r\xeb\xfa\x99\xa6ފ\x89\rg\xa2\xacgNN\x9a\xaaVR\x8fi\xe8\xc6LT\xf0\xf5\xf1I\x13n\xbeq\xb2S\xb5\xddAV\xac\\sԄG\xf0\x9c\xe0\xc1sSS<\x1f\xf5\xf8kH%\xccDF`\xc8f0\xba\xe1\x84\xd2B\xddW\x17探\x17\xdf\xf7\xbe9\xf4\xe5JQ\v]\xb2\x9c?\xb9\xb4{\xef\xc2\xc2\xfa\x8b\xf7H\xddL\xf9\xbb\xa9=\xdd\x1e\xba\xe1\xaa\xee\x81\xc3\x13\xad\xbf\x9f\xee^\xff\x8f\xd1w%\xb9\\\x95-\xed\x8aK\x97\x16\xf7\x1f\xcc\xc7E.\xd3\xec\x9c\x0e\xa7\x80\x8a\xb8\x16oB)\xf7p6\xc4CF;\xcd\xe1O\xd8\t\x81\b\xfc\x1c\n\x02\x9b\xc2z\xcdARxΘG\x9e@\xd0iqĕ]\xbf\xdb{\xb14\xd5.\xb2\xecD\xab\xf0p\x9e\xac \xe7W\xceW\xe6\xcf\x1f80\x11e\x97\x8f\x9f*4\u007f\xa5\xb6\xd2RS9\xbbcWIJ\xa9\xde\xf8\xe1L/\x0e\xa7\xa6\x8a\xa6\xfd\xab\xe7\xa9\xf2\aݷ\x8d\xa9Fz\xe6\xa5\xfcDyb\xbcl\xe7\\mZV#\x96\xc8\xe6\xd0/U\x01;\xb4\xc0-Q}\x18\x02\xd5\x1c\xba\x86@\xd4\x06#\xbc\xc0\x1a\xac\x99H\xa6\x14\x00>\x9bF\x03n\xb0\x93\x91\x85\xc1h\xe0\x87n\x0ff\xfex\xed\x9e\xf5\xa3\x0f\a\xd7H\x8dla\x1c\x1di\xcd\xc5\xfb\xe3Ŵ\xf7\x88\xfc\x9e\xebO?\xb9\xf5[V\xc10̲\xe7z\x8a\xec\xb4\xfc\x94\xf27\xddz\xbd[\xdfl\x02\x1f˽\xb4~\xcf\xdaM\x977\xd3\xe5\x89\xe2\x12\x9ak6\a\x83&\xba\x02\x19\xf1\xb5\x0f?\xf9\xb7T/\x16\xa8\x01@\xcc\xf3Z\x8e,\xa7^_\xeb\xd5j=\x9f\xb3\xb6ƅq\xb5\x03a\x190\xba0*g\x11%\xc5\f\x03\xf7Un\r\x80\x88W\xf8\xc5/\xc8\xe5f{\x1c\x8b\r_\x87\xc7&\u007f\x1e\xc0s1\x95rm\xbb\xe1:r\xc1\xfc\xd96\xe3>FRy;\xd7D\x97\xd7\xfbݽݹ u\x1fT\xb97S\xad\xceD\x8bn&S\xcf\xeaށ\\\x9e\xea\xa0d\x1b\rKf\x0e\x00\x93\xab\xb7\xdb\xf2uu+m\xb6\ns\xa8W\xafu\xbb5t\b\x1b3\x1f\xf3\xf2\u007f^\xe5\xf7{\xd9Z6\x9b\xd2=}{\xbcn\xdb\u007f\x98\x11\xda\xc2\xfay>ġo\x99\r\xd13\a\xe4\xf10\x85\x83\x83QZ\xf0\xbfH\x1c9\x1bOQE\xbd\xf6\tCfX}\xe00-˚\xb6\xff\xc6Ό\xad\xcbX]y\xeb\x8c\\\x03\x9d\xb9\xf9浞c\xa8D]\xfad\x9f\x8e\x00\xe9\x0f\x14\xaa\xd1\xf9\x121\xa9\x82\xb3\x1dqM\x93\r6eH\xb6\xaca\xdbɋ\xfb\fՒgl)\xa5\x9a8e\x97\x86!R\xf0\x1e/\xa1U\xc0\x0e^\x12\xf3\x00(\xcaB3,\xea\xc7M\xe8\xc4+\xb8\x8bV\xafg'>fL*\xa7N\xb1+\x9e6'\x94\xeb\xd1\r\x9fW\xcf(G\x94S_P\xf8\x8f\xc0\xa3X\x84>>\x83.\x03\xfd\x10Bϛ\x02\xed\xb0!\x1c\x00Vr\x9fpF\xf8\x80\xf0Q\xe1ӀH\x80Y2\x0f\xbaR3\xee\xc1\xcbv\xfcsG\xe7\xef\xd3\x0e\x0f\xfc\x80\xdd\x15\x94\xec\rS\a\xaf^1\xdcM.\bF\x89\xa0v\xb9\xbf\xb1\xdba<\x05 L2dƯ\x80\xd4\x0e}5\x1f\xa93\xd4X\xdc\xcf\x11\x0f\xf5}\xfd\xbcg7\xcf{b\xf0j\xfak)\x15E\xfe\xe5\x83R\xfcS\xa4\xdc\xcf%IO\x89<\n\x15\xe8K\x16#\xc6\x10\xe0a\x9a\xa1\x8c\x11\xfe\xcb\xe0C\xe9\u007f\x03\x94++<\x00\x01\x8b8\x03\xe6\x97`\xc2G\x9a\x00\x03\x13\xf1\x1e\x8d\xdf\xcesBo\xa9\xb4ە\xff\xac\xc8\xe9l|\xb9dm\xfd-\xe3\xa3\x02\x84\xb4)\x12E\xc4\x1f\x9d5!\x05R_ڹK\x14w\xed\x14Ǥ[wIҮ[\xa5\xb4\xf4І$m<$]K\xa2\x88\xc07C\xe6\xe71\x99\x9b'\x1a\xd9X#dmC\"\x97l\x88\xe2\xc6%wc\xe9s\xab\xb2\\.\u007f\x16\xf1\xd1*,}|\x81\x11\x1e\x80J\xd6>\xc6c\xae\xd3\xf4\xdd딮\xbf{n\xba\\i#\xe5_\x19Q\xf6\x0eؒ\xfc\xae\x9d\xb2\xbc\xf3]\x00\xb5\x9e\\gl\xfdI&\xb2'\xf8\xce\x13#\xd9\xf9s\xf4\x10zZ\x98ଆF&n\xb6\xc5f\xb7ȭ\xe6(\xac\xb1\x88\x86q\xbf\xc9\x00t2\x98r&\x97\xc9\\>\x1eh\xb9\x89zM\xbd\xd4X\x9c\x98*\xd5'\xe2\xe9\u058cJU\x800\xb2\x9c7\x9d}/\xf7h\xefdڠ\xe9\xc5\xcb\xder\xd9\x1d\x8f\xf7'\x97\xdd\x03\xb3\x9d\x9dcK\v\x01ª\x91\v\xda\xd9\xf4\xc2\xfc\xc8\x0f\xf6;\x00\xac\xbe\x9ep\x86\x8c\x90\x17\xcaB\rP\xcd\x04\xe77@\xa9\x80-N'\r\xbe\x82\x06%\xe4\x87q\x93\x85\x80p\xe3\xb0\xdfd+\x88\x1f4Y\xdcg\xe8_T\xf5\xefu\xfd\uf4edz\xcd\xfe\xef\xff\xd6\xfek\xbe\x1a?z\xcd\xfe\xffx\xe0\xc0\x81\x1b\x93\x03T\xa6\xfa\xd3:}Z\x96\x9f\xde\xdeY<\xbdҽ\xe7\x9e\xeeJ\xff\xd2\xfa˰\x9b\x05\xaa\xf1\xf2\xf0\x90\x8f{\x00\xe1ډ\x1e\x82\xd2\xec\x15\xde\n\xf5SD\f\x90.\x97M>>\x9c\x84\xb8\x82n\x98I\x00ƈoqL\xd5\xe7!k\xbc\xceƇ\x01\x11\t\xa0\b\x83n\xd0\xeft9\x00\x1bݟ8ғ\xb1\xf0\xc4\xe9\xceC\xa8\a\x89\xeb\"\xe4c\xd4m\x9c\xa0\x90\xa13\x03\x9d\xad\x96\x14\xd1\xcb\u05fc\xe8O.uj\x8b\xaa\x16\x16(\xa2\xcdƴ\x9ciU\xf7oĆ(\xa1\\\xc1\x9fP\x91_\x9d\xee\f\u0096\x0f\x10\x15˨Q\x8ddb\x14\\3\xb7\xf1\x1b\xbfjO,\x8a\xcdtƕ\xf7ZŢI\xadt\xc5\xc22\xa1\xbadL\x06A\x8eT\xea\xc5\xec\x9a\xe565U\xce\xd7\x1c$cY\x11\xab\xb3\xe9\xf4wݍ\x9a[\x0e\r\x80\xb7\xedj\xb4\x1e\x8a\xd2l>\xef\x8ac\xa1+e\x06u\xa5%\u007f\xb4v\x95'i\xc5A=\xa3(F\xd0\x12\xa1,^\x98nZ\xb2\xbbVZ\x02\xb6xOXN\xb1}j\x98\xd3+9\x17\x19X\xc1\x12S\\\x87\xb1F\xa6\x91\xf2Co\x8f\xa2\xab.\x0f\x8aw\x90\x82$U\x9av\xe5\xc9D6U\xd0\xcf\xff\r\xf4\xf3\t x\xd5$b\xa33k\x12>⿌W\x80\xaf\xb4\xf14\xe2\xd1\xe8q\x91\x94\x10\x1f\xf3\x8fy؇\xbf,\xad ر\x10\a\xb3\xa3k\x93\xeb\x06}\xa00\x01E\xc2\xe9\xf7\x12\xbc\x14#\xd1\xcdhN^\xf5\x1d[W0\x90\x11D$\n]=T\xd4\x02\x00p\xe0\xbcH\xa3tjR\xd1\x10\x06\x03\xc9(\xc2\x05#\xa0\x92\xacR\x83:\xb6cj\x84@\xd5\x06\x9a\x862Ŗ\x87\xd0;\xe7~\xf9\x96\xa5[#1\xd3\x1d\xac\xe5T\r\xd4\t\xc3D̈́i\xcf\x12%\xcd\x13\xa52Q5\x05\xa8EI\x91\xbb\x1dت\x92\"3\x00\xbf\xa8,z\xb2lOt\x1dUA\"\xa3\x04gw\xceϚ&F\xa9\xdc\xec\xc6\xc4\x1d\xef\x16F\xf3H\x86\xf6J\x87>2\x06\xf6x]\xb8L8,\\/<\x0e\x95Ո\x80\xbd\x02\xf6m\xf2\xff \xe4\x03\x14\x00[\x19w\x00\x81N\f\xf8L\x020\xcba\x1c@\xa1\xf8\xa0\x85_\x85sL\x1a$U\xd6\xef\x00ŋ/\xf6\x9f\xba`\xae!\x99w|\ue644\xeb\xab\xc9/`\xe5\x06\xe7\x84q\xc8OrO \xcf\x17\xb6\x1eϲIQ\xd9N-\\W\xb4U55\xb6\xe3o\x18\xb3s9[\xa6\xa1\xaa\xbeKr\xad\x85\xeb\v\xb6\xac\xa7\xc6\x16U\xd5.^\xb7\x90\xb2\xa5\x1dc\xa8\xa6\xcbv\xe1\xfa\x05˅\x83\xd7&v\xf0\x91Ǿ\xfe\xd8c_\xbfa\xfbΐ\xca\xcf\x1af\xd642V/\xa5\xac\x12\xb2\xaa\xa4zv\xda\xd0-\xd30\xd2\xf6yi\xe81\xe2\xe2\xf9\x19\xc5֬\xb6\xfe\x13\xc7R:\xf3\xf3\xb3\n0\x92|\xa9XxCzx\xd20\xedi4\xa5\xd9\xca\xcc\x8f\x9d\a\x93\x8fA\xa6\x1b\x18e\xd39\xcdWu\xd1\xd4˚g\x85:\x81Ή\x01\xea\xea\xe8*,\xdd\xeaq\xe6L.\x03\x16\xe8\xa9\x01\xc1\x1a\x15ю\x8cm\xa8\xbe\x8b\x03\x8c\xd6\x02w8n \x9c\xfdG,\xa0\xf7\x02/\xe8\tK\xc2&\xd4(he\xd7\x1f\xce~Jľ(%\x8cn\x14+\x10'\\\xb8\x84\xa0֪\x8d*\x9f\x11\a\x04\xb83\x18zFA\xe6\x97\xc5\x1d\xfc\\\x9c\xb8\xebB\xbf\x99\x84\x96s.D\xc3ď\x87{\r\x1e\x99\xbcL\xe2n\xb0\x88\xfcȟ\xe1\x8cb\x10\u007f\xbfny\xf9jN5d+\x9f\xad[\x8e\xb4п9p\xac *\x8cMYvТ\xb2!i\xbd~7\xe3\xba\xe9\xb4\xef\xfe\x9a\x04\x00\x80Oz\t\xa5#X\xf2Vt[\xa9\u05fdoW*\xb5\x92\xa8\x03\xd5w\r\x86\x1b\x18\xcf\xef@TˤP5\"n\x10\x94L\tc?\x89S\x91\r\u05c8\x1a\x1d\xdfg\x9e\xeaz\xced\xa1\xa1\x12\xe9\x9f\x14\x89 d(\xa6f\xfcR-\x8aj7\x96\x93`\x19L\xde\x00\xec\xb9\xf2)\x89\x90\xf2O\x14[\x8f\xa2\x94\xfbWN)\xba\r\xc1\xd5u\xa4ء\xb3\xb4\xfbu\xbar\xb7\x9eJ\xe9\x9aa<\xa5\x99\xa6\xa6\xa5R\xe8\xb77\xacA+uɵ\xd7^\xb2vß2\x8dBO\x96\x98N$\xf6Z80U\xa6\xeb(}|\xd5\xf3\x90R]\x8c\xf7\xef\xba\xf6\xc0\"\xea\x1b\x81\x01\xff3ß\xa7w\xf4f\n\xea\xe1\xfb\x0e\x1f\xa9\xf0\xb8)0_:\xe3F\f\x0e\xe0fKO\xb8\x16:\xfb\x1f\xd0Yh\v\x1e\xdfx\x89p\xf5\xab\\k0\xfa\r\x93\xf1\xd8d\xbeX\xbcD\xfb\xd5F\x94\xa7\xfe\xf0\xb0\xc1\x85\x06\xaa\xa2\x9f(H\xae\xedXⴭp\x86\tʰ\xcbi3\xbfb\xf0\xeb\xddZ\xad[\xfb\x02\xdf\xd6\xffT\xd3Y\xb4\xbb8\xa8\xb6\x1a\x88(\x185Z\xd5AiO\xc4t@\xed\b\x80\xc8i\xdd72\xb2co\xfdn\xda)\xad\x8dy\xae\xac\xaa\xb8\xec\x8eo\xa0F\x85\x93\xc5J\xb2\x9d\x97-m\xbcxs\xaf\xa2\xa9\xe3\xd0?M'\xe5\xcaDvS)\vX瘦Uz\xa7\v\x13@\xca\b\xfa=\xbf`\x84\xe6\xefY_\xb3=\xc5;l\x83\xf5\x96U9\x87\xb1\xc5\xdf?\r\x1c\xedG\xc9\x1c\x1a\x06\xfd#\rm\xed'\xb3\x84\xfa͊\xc3\"֏\x1c\xa9_q\xba~\xdcE\x8f66\x9a\x0f\xa2\xd7\xfe\xf6\xfe\xeb\xeeE\x9f\xda\xfa\xa3+7\xf6\xa3cw\xc2\xe7\xf4Y\xe17O\x9c@\x97~\xe0\x0f\xb6\xfe\xeb\xea\xaa A\x9d~\r\xbd\x15\xf2\xe4\x16\xa6\v\xb5z\x05gh\x01\x05\xc0̝\r\x8dd\xe2\x01\x98\xe7Ŀ;\b@}\xf0AT\xa8N\x80щ\xa3\xd8L\xc8R3N\xf4'\xdcՀ˒I\n\xf5A\fF#\x19x\x06\xe8\xdd\xefM\xdch\x12\xfb5\x98(\x00\x02Ul0iV\xa5\x97j\x05\xd1\x04f4q\x87\xecY\xb72\x05\xcb% \xad:;\x8e\x01E\x91\xdb-WYf \xfbfa\xeb\x0f\xfa\x8bp\x9bQUn!ߙee1\x8btY\xd3\xcbE\xa6\xfc\x13\\\xc16u\xdd~\xadb\xc8\xef03R\x95g.\xd9-MR\xffR\xe2\xa2$\xa1\xa2\x945OhT\x1f\xfbZF2\xd4\xef\xa4\x14\xeb\x8b\x12\xb5\xb8\xbe9{\xf6쟡\xc7\xd0\xc7\xe1\xed/\xe3^\"\x1e\xafɇ\xc5c\x97\xbf\xf6\x80\x8f\xe6\xf3\x18\x15Vm\x988汛\xe3\xc4\x14}:\xba\b:=\x8f\x85\xa7|\xe7\xb5|\xf6*\x8f.\xbeL\x92\xd1\"\xd2\xe4\xfc\x9eL\xcdJ\xa9\xe3^\xaat\x87\\\xd2\x1c\xf6\x93\x9a\x1e\xbc\x111L\x81\x06\x12\x1e\xb4l\xaeJ\xc0\xedB\xa4\xa2\xb2V\xb6\x8b\xa9\x8c\xed\xf0\xc0\xcb\x0f\x8a~\xa6\x90\r)\x9f_x\x8f\xac\xf0)#\xa2s\xf9\xe41\xe07\xa2\xf6hn\xed.\x1e\xedM\xc5+EK\x96\x8a\xefV\xb0\xc84\xcb\xcf9)\x9b\xeb_\n\xba\xf8\x85\x043\xf8B.\x197\t\x00P5\xf8\xd0]\x8fu@\xc6y\x88\xea\xa0\v\xd6\b\xf6\xf8\xb87\xe3\xc3>\xc9L\x8f\x8f\xf4K\xba\x9b)\x01d\x9d\x91\xa58\u007fKi\x89\x88\xd2\x13w\xbcŹ[}\xa0\x94q.\xa5\x1e\x10\xd1c:\xdayt\u007fg\xf6\x86\x8eQLW\x97\xe9\xbe\xd7߹_T\xae\xfa\xed\xff\xf8\td\xdey\xf3m\xd7=\xf6ȥ{D\xbamk_\xc1\xabIlB:\x19\xc3\xd93\x8c\xc7\v\xa3x\x86\x872]\x84YP\x1c1\x1er\vh\xa4\x84\xbap\x00\\\xbcч\x8eYB\xf1pJ\x1a\xb0 \xa0\x97\xd5i\x1e\x81\b\x04\xa5\xc9c\x99\xbb\x83\xb8\x1b\xa2\xefɨbC\xc1\xef\x004RNp\xc3+^~\xeb\xaaՉ\xa6\bR\xb7\x8aB\xb7\xf6\xaeL+\xf3\x85j\x88B\xcb\x14%\xdbsK\x0e\xaa\xf9p\u0095\xa8\x93/5\x9f(\x97-ii\x9c\xa1\x9e\xf4'\r6!\xc9\xf8|\x04\xb2\xf5\x8f\x1f\xbe-ح\x03B\xd1\x1e\xfd\xf0\x87;YG\x93\r\xc4P\x85\x19i3\x93R\x15軑\x8c\n\xd9\x0f\x1b\xefq\xc5\x10\f\x17\x1fc\x83w\xff(\xf4U%\xf1D\xf2\xb8\x8cM\xd0Y7\nO\b\x1f\x16\x9e\x13^\x12\xbe)|_\xf8k\xe1\xc7¿\x81*1\xd0\x14\x9aG\x97\x80\x8d\xf1\xaa\xbdJNj\xaa|\xd8:\x8a\x93\xbd\xb0\xe3\xcf\xd0Yo\xb6:\xfak\xcc.\xa1\xd9^\xb77\u06dd\x81\xbf`v\x86\xc1oov\x86{-\xfba\u05fd\xa8^\xc5ĭ\xc4\xcdhT\r\a\xbd&\xf5\xf8\xc4n>\xb6\xcb\xf8\xc4\xf5%\xc2\am@\x10`\x17/\x93\xd1n\x1c\xf9C\xe5\x0f\xb7\xc2Q\x0f:0\x9f\x9b\xc8\xe1\x8f\xef\x81i\t\x06\xdd&݁\xba\xe7\xa6)zA\xdc\x1dq\xfb\xb8Iy\xd8\xd6hV|\x18\xc0wx'\x9c\xe0\xf9&\xbb\x90髗$\xa9\xc3DH\xe0\x93\xec\xc3^\xbf1ۘ\x89\xaa3\x11\x9d\x85\x97\xf7\xbdY\xaf\x1b\x80B\x99\x9d\x19\xcc\ffg@<\x9a\x91\x0fo;,\x1d\xbcK\x913\x94\xce\x00\xfde\xb8\xf5\x8a\xa6i\xf7;Ƚ\x0fl\xf0}\xe8\xbcO\x122\x8dХ\x17H\x89ph~<\x8a\xd1 \x1a\x9f\u007fo\xbf\xdf?f)`{\x99(\xcb|6.%\f\xee\xe1Q\x8c\xf2\x94,1>\xbe+\x8br+4A\xb1\x84\xa1-\x89J:ºa\x00nu\x9d\x9c#\xab\x19E\xa4ւ*ɲ\x8aM\x83\xc1\xf9\x8c,\xb2\xbeL\xd3i*W\x93t2\x0eG\x19\xd8\xe3aO肏\x98D)\xc3\x13E^(>\xbbc|\xfe\xd0,G\xd5H\x91\xc30\xfb\xea\x9b$cZ\xc7\xcf\x13ћ\xef9\x14N=1\x99\xfe\xe9أcc\x8f\xbe\xdeb@\n\xebD\x01=J\xb0\xaa\xc3\xf6\xd5\xdd:0IG\xa3\x92\xa6\x88D$\x00,UY\xc2\x12\xf7n1\x06zJӘ\xa3\x13'\xd4dKV@!\x15DY\xac\xfb2!\xae#I\x8c\x01\xf3Qd*\x95E\x99\xef)R]R\xe04\x13I\xe8\xcaJ\x0e\x12\xde\xcagg?p\xc1{\xbd\x85G1\xc0\xe7\xe8\x02/\xe4Tx\b\xf4\x83~N?P!H\xfc\xf4\xdc\xcf}X\xb8]\xb8Ox\xa3\xf06\xceH\xebCw}|q\xe8\x15\x17\x92\xb0\xcbIe\x9b\x8c\xf39\xee\xc9\xf4T\xfe\x9d@!W\x1d\xdbSx\x9a\r3\x993\x12\xf79[\x1a\x84,\x11݄\x02\xf5\xb7\xc52\xe4Ω\xe1\x10n҃\"_\xea\xf39\x11\x9dA\x1d\xd8h\xb2\xd4D\a˖$Yr\xe2]\x1eJ\xce\x17l\x1cxY\x97\xc8Ԑ셩B>_\xb8ۉ\xe4Z*X\xacg\xb3\xf5\xec\xd5v\xde\xd5R\xc0\x82*e\xeb:\x9d\xaaƤj\xea\x8e,\x9b5_\xa3\xf2k\x82P\xf7\x8c\xf0\x84\x8d\xbe\xd8\xfd\xe77\xa1'\xa9\xb25\xae(\xcc\x12E\xebߍ\xcc\a\xcf\xe7T\x8fo\x02\xdb\"\x1e\x95\xc12l\x9a\x81\x992\x8f\x1c\x89\x17\xb2\xfc!P\xba\xb4\xa5{*\xa6|\xeeF\xca2\xa7U\xd5U\x02U\x95$ʈ\xac\x19\xaac3Q\x97\x8d\x8c\xad\xbb\xea\xe6\xe6\xe6\x17\x9e,\xdf\x1a*?eY\x99\x0e\x00i\x9f\x85\xfa\xdf\t\xf5\xef\nY\xa1-\xc4P\xff;\x85\xfd\x89\xc7\xf6\xb4\xf0f\xe1-h\x16\xedEס;\xd0\xfd\xe8\x8d\xe8i\xf4Q\xb0\x92\x02\xf2\x18\x98\xf4h\t\xb7\xf1\x04G\x1f\xdd\x0e\x1b\x0e\xf6\x80\x92\xf2̤1\xa2&\xe3\x03?1\x8b\x9b\xc9p\xbc\x1f\xf6Y<\xbch\x94\x90\f\xd9Kl\x98հ\xde\xd9yY5\xa3>\x8b\x9a\x90O\xc4\"P\xee<\xaf.\xeb6\xa5d֙\xbf=L\xc0\x15\u007f\x10v\xfb\xf0]\xe6\x83\xd8\xfdN\xd7㇋\x88\x9f\xf0;\xfc\\\x11\xa4\x01\xda\x13l\n\xffVg\x87*\xaf-\x8e\x93\tL\xf9\xe0^\xc4]\x1a\x9c\xe0\x0ea!\x94\xa7ʯ\x19\xc7\xc0]\xf8\x95\xb8\xda\x18\xc7p\xf3\x042IBf\xf8`9ϵ7\x00\xee\x97\aqYB\xfc\xc1\xa02AJWP5Y0\xc5\a\xa1\x899\x01o\xf0\x01/`}\xfc\xc5\x1at\xb8\xcf'\xdd\x04\x80\xa4\xb8hoW\x10\xaf\x8f\xe6\xa0;\xd3邀r\xbfH\xd7\a\x9cA|o\x11\r+\x80G9\x8cj\x04\x88i\b\xb5\x01\th\x97\xae٘P1e7s\x05M\xf3\x81\xc4@\a\xa6\x06\xaex\xfe\xda:hq75V\xabݖYQU_k6\x80\xa5\xc6h\xef\xefj\xaa\r}\xdeAÛ\xbc\x0f\xd9i+\xcd\xe78\xa5\x8a\xe9|.\xf0rO\x85:\xfa.M\x03\x1e\x15\x87Ҟâ+\x92>\x12\v\\5\xbd\x13T֚\xe6\xf2DPA\xb8\xc7$<֒\xe8\x04\xa1e\x92s\xf5\x16@7\xc2$\x8dْ~ZbXCm \x99-lKCu+\xd2HQ\x02Y\x87S\x97cQb\xd4P=Y\xb5\x16\x10(\b$R\x8c\xf1\xe1M\xaa\x02\xf2\x9fA\xa1֔\xf1\a(\"5\xc5\xf2D\xea\x94QY6l3]\xb9R1m#])\xf1\x9flY\xe5o677\x0f\xc8\n\xf19\xb5\x81mcEd|~\xac\xcd\xd2\xe9|\xb6\xe0\xa4K|\xe2\x8f[٧\x87w9\x0eJ\x9b\xd0\xcf\f\xb8H\"8\xb3\xab(3\xebx\xc0Y\a\x02=\xbb+\b\x06\x9e\xa7[\x862\x97#\x8a\xec\xbcS7Ms\xd7meS\x12MS\x97(\xdcP\x80\x1b\x0e\x0e\xe0cY\xbb\xd6֦\xa7[\xf9\xff\x1d\x11|\x9cw\xd8?\xa6\x8aB5\xac\xf0EL\xb4\x8c\x06\xea\x91*\f\x89$\xd0\x199\xe9*\xaa/\x1b\xa0 \x13\x95\xa8\xa7H\x9a\xf8*\x13ņ~'\xbf\xf79\xae6q\xb2\f\tF\x94r\x85\x8c\xe0y\x04\x9fb\x1a\x10FYfL\xb6\xa1j\x14`\"\x06\xc1K\f.\xa4YŢ\x12V5\xcfl\xf1\xd8|U\xf3-\x06FD\xd5\x02\xab\x05/\x81\xcc]W#\a8\xbenYP&&z\xf1\xda\xda\xec\xec\xae^ϲ\xaa\x91\x9eo\xed\x12\x04\xed\x9c\x1e\xe6q/ya\x12\xb4\xc0U\xc2\xdd£¯\t\x9f\x16\xbe\x98D\x92r\xa9\x03X\xdf\xe4\x8b}\x80l\xf7x\x80\x90\x97\xec\xfc\\0\f\x9f\xaf\a<\x00\xf0\xe4\n\xea\r\x16p\xb2\x8a@\x027F\x03\\\x94\x8b5?\x19ƽ\xfe\xf0\xead\xb2\xaf?Ã\xa0\x93\x93\xf10yx\xdd2Z\xc0\xb3\x17g\xe2mg\x92\\\xea\xb3\xe1m\xcd\xce\xc8u3xQWmC\xb1o\xe3\x11J\x9e\f5SN\xa1@\x16\xc9\xf7/0\xfd\xabՖ\x84l$\xba\x12\xb4\x91$J(H\x1fI\x89\x88٩lʴ5D\x1c\x11\xab\xf5U\xe2\x12\x9cհ\x98\x12U\r\xf9p\xf4\xb1\xe4>\xe2\x13$rpN\x87\xb7Q\xc7\xcd8\x96\xad&wM\xc2e6\xec\xa1Km^\x94\xaf*\x86\xa5\x18\x15I5sXK\xe5\xf0C\xe7Y\xee\x0f祛E\x9a\xc5$m\xc8j\xce5S:\x01|\xbf*^\u007f\x12\x00\x01i6D\xb1P\xc2\x05B\xee\xe4ב\xc2y\xd7A\xb1ẊHn\x01d:\v\x0f\xb0T\x1d\x90\xffv{\xb2d\x04|U8(\x1c\a\xe4y\xbd\xf0:hS\xa1\x0e\xc64\xea-#\xd6\x19\x85.\xf0\x88\xa6\x8b\fl\xd8\x1bz\xb1\xc2\xfeh-\b~)\\\xe9'kB\x80\xa1e\xc3V\xe8\xf3\x89\x9ap\x11\xc7b\xdd\xfe\x80\ag\xc5p.\x1c\xadL\u0093\xe3~\xc0\x9b9q\xd5\xf8I\x80!\xdc\x05Y\xa1\u007f\x90՚\xa4\xbc\x8e\xaaTW\xa1\xbf\xffƫ\xb6\xf5\xd2\\NO9\xb6k\x06z.g:~\xca\vs\xbbr\x91o;2I\xdf\x04\xe6\xaeTSw\xd4j\xb5;\xfd|\xc1\xb3t\\\xae\x19\x9fɥ\rϔ\xed\xac\x13\u008dY\xfc\x97\x1a\xd0C\x11+\x96b\xb9\xacϾv\xbeA\xfdW`ߔ)U\xaa\xb8\xba\x93\x82\x0e\xaaWe\u007f_\xb1$\xdfm\xf9R\x9e\x10\xa3K*,\xa5=xԸ\xfe\xc1\a\xdf[`\x85\xc7*\xe5bUS>!\xb7\x94\xae,\x15j\xaa\x936\xfd\x82\xa9\x14d\u007f4v*\xccb\x01]\x0e\xbdF\x88Mq;ʡ(\r'\x16\x82\xeeoK\xa3\x85L^]\\#,*\xbcJ\x1b\xcd6\x1b\xba\\Pg\xb0\x82\xfe\v\xa2)/J-\xafm\xac\x86\xf5lhڌO\xc7\xf3\xc7\xf2;\x88*\xa7Ԭ\xb4\xb14u5[$\x13FJ5]\x9c\x972@\xc8\rI|\xd3%\xbblb\x80\xa97-O/\x8d9\xe5VCQ\x0e!I\x95\xd9%\xeb\x97\xecgZ\xe8ԃ\xb4)\x87%\xafD5Y\xe2\x93\xf9쥩\xe6\xa5,b\xa6j\xda|\x12\x1c`U\xd90]\xf5\xd0`Fi\x99%եt\xba\x9b\x1b\x0f\x1cY\xb9 \x16\xfe\xf4/\x98\xb7\xcb\xdfQ\x9em$2\x13\x0f{i\xd8)ʉд\x95\xd1\vv\xf9\x1b6\xcfE\x81\x14iX\x14/\x88\x91\x17\xf7\x11Pʺh\x13\xd7\xcf\xe6pM\\(\xd4'\x88J\xa1\xbc\xa2\x88q\xa3m#\x05.Pe\xd3Li\xad\t7ʦJ\x94j^\xdeMg]\xc65+\xa8ILT˿x)\x94\xdf\xefR]\x81lx\x80\"\x90\xbf@\x9c\xce\xe4\xebZ\xb2\xba\x14\xe1S\xa4\xdd6\xc9\xd3PrD\x95\x90\x99\xc9|\xc3S%\xb1엲\xe5\xa2(\xea̕\xb3\x92\x96r46\x9c\u05cdϠ\x17\x84\x82\xb0(\xecNj\x82\x8f%o\xcf߉\x86\x81\xf2\xdb~7\xd6kV\x12\xffZe\xb4\nOXI\xa2\b+IeԻ\xdbA\xf8\xbd\x01\xbeE5M\xb5/=yz\xdf\x03\x85\xf5\xf3\xf6\vt\xeb{\xfc\x10\xa5\xb3W\xcf\x1d\xbe\x8f\xa2q~\xb4\xf5\xa3\xe4h\xeb;\xdf\xe1G|\x83ʦg\x86\x99\xd3O\x1e\xd98\xb7sm:\r\xfb\xd3\xf3\xf7\x1d\xde\u07b9}8s\x17\x10w\xfb\xecK\xe8\xfd\xe8%\xc0\xdd\xd3\u009c\xb0\v\xf0\xf6\xa3\xc9\xe8\xe4v\xfc\xd7\xf6D\xb9\xc4\xfd\xdd厃e1\xe1\x86\x16\n\x93Q\\\xe6\x85@\xc1\x1bI\xd0\xe0\xb9H\xbfF\xb8\x9c\xac\xee4\x14r\xee\x00\n\x87Ø\x9c7\x02\x89m4\xabQ2b\x11\x17\xc5s\xeb\x17%\x11-̀\xcf\x1bD'*\xc1\xadW\\rMW.\xa5d}\x9aj\x8e^\x8f\xc1\xa6\xa7\xec0kx\xe1\xc1JuZ\xb3\xbf֦\x85jh\xcbXT\xd8\x0eK\xa23\xbf\x99\xf5\xa9j\x1f\xab\x00\xa3\xba[\xc4\x16\x96]Wv3\x1ana\xac\x8a\xa1[\x9c\xf5\xa9\xcdT&\x11\xa5\xadX\xb6\xe6\xacO\xed\x1c\x002Q\n\u007f'\xcf4\xae\xba\xe7\xe4\xfc\xbc\x19ȩHz\xa4\xa0\xb9\xa6\xfc\t\t\xe1n}:\x9b\xf7K\xee\xd5\xf4\xa1\x94-\x16\xee\x17\xc9M\xeb\x12\xfe?\x99*:\x87d\xd1:\xf9b\xfe\xe0\x82l\x02\xfd\x93Z\xc8\a\xcbL\x8d\xa6'W\x14\x86\x17\xcd\xfc\xce@\xf1\x15\x15̉\xbaR\xab\x8cM?\xe7I:\xa3\x17\xac{\x81\x93\xf8)\xbe&\xc0\xc5\xe36\x1a\x8aH7\x0e_\x99\xb8\x02i\xe7\v\xf0\xcek\xce\\s\xe2\xae4\x1a{\xe6o\xcf\xf7J<\x8bƷ\xbew\xe2\x04\xf77\x18g\xbf\x8d\xbb\xe8\xb3¥\x80\xe07\x85k\x84\x9b\x85[\x85;A\xe3\xdf'\xbcIx;\xb4\xed{\x84\xa7\x84\x0f\tO\v\x1f\x13>)\x03z\xc1\x00\r'$!r\xa3y\xa3\x83\xae\xebw\x9bC\xb6\x96\x84\xa9\ah\xf7\xcd\xfd\xc6_5\xfa\xfd\xc6\xe4+]Œ\x9f0\\\x17]u\xcb\xd6\xd1\xfa\xccL\xfd\xaf\x9b\xf1\xd67P\xff\xcd`\x82=㽆;\x8c\x95\xfa3\x90\xff\x8f$8\xb3\xc0\u05fa\xd9V2&\xaa\x03\a\xe3N\xca8p\xf9pE\xb2`^|.\x8dҷ\x9fLgN\xbe\x1b\x9d~ݳ\x95\xb4_\xf9ͻr\xb5\x94\x1d\xf7ZS\xebo\xa4\xf4\xe8CQ)[\xfd\xd5\xd3\xfac\xd9\xecɷK\xb5'\xae\xab|\xean\xb7x׳\x15w\xeb\xeff\x96M/\xc3\x1e\\\x9b\xba=z\xf8\nQ\xbb\xe5#\xd5\\\xd2\x17\xa1GB\xa3\x9e\x11L\xa1\x0e\xbcW@a\xd4H\\bn\x12\xbe\xec&+>%\t\xf0\xfe\xee(\xa49\xd4\xd0vj\xe24K\u009c\xd1\xdb-mnzjan\xbd49\xb3c|\xecǵj\xdc_\x1e\x1b[\xee\x03bE\xe3˻W\xc7\xc7Ww/\xa3\xea\xf4\x80\xa7\x0e\xa6\xab\x85\xcalznzz.\x9aG\x87\xfe\x15\x15\xf2y\x84݉\xb1\xad\xcfڙ\xb1\xb1\x8c\x8dNE\x85B\xb4\xf5\x1d\x94\xf6\x1b\r\u007f\xebG\xba\xae\x14\nv\x12\x9fN\x01\u05fd\t\xf4\a\xc7\xe8K\xd0\xcfO\x9d\xd3ؕ깱J4\\\xbe\x8awI\xe9\xd5\x19\xb5\xc1y\x13j\xcf?~\xb55\u007f\xd1\x058?\xd6\xdf\xdb\xd9z\xa8\xb3\xb7Y&A3,\xa5\xcd\x13\v\xbbn\xd8\xfa\xa4BKLQX\x89*\xc7`\x97\x93\x1e\xd8\x1c\a\xa9\xddN\xbeR\xa1\x05\x9e\f\x9b\xef\xaa\xeb\x13\xdd={\xba\xb5%K\xd3\xc3F\xe8\xcf\xed\xb9a\x97\xf7\xa5\xd7\xf2+_˯y\xf8\xdc\xe6\xe3\x90\x03l\xf9\xee_PU\x85\x8d\xa2p99\xfb\xbb 7_9o\r\x1d\xbe\"J)\x89\xee\x9c\x00\xfb\xd5\x15b\xb0\xc6+\xc2:X\xe4\xfd\xc2\xd1\xc4\u007f\xf4 X\xb4w\b\x8f\v\xef\x15> \xfc\x8a\xf0a\xe1\xa3\xc2Džg\x81\xcf<'|^\xf8\x0f\xc2W\x84\x97\x05\x81/\xbd\x13\xc6!\x83_\vţ`\xf4x\xb8\xcfϑ\xd1\xe8\n\xffv\xcf\xfbn\x1fs\xffG\xecs0̏\x83\xd18Ts\xc8\xee\xf9\xf8\xdb\xc8&\xd2!.\xea\x0e\xbd\xd8@\xe3\xfb\x12\\_\x87_RqX\xb3\xeeT\x9c\xd0\xedW\x127@8ʓ_\xd1\xe4\xdf\xd1\xca@l\xb4?\x9a\x031:\xbaQ,\x89\xb2T\x14\xdfS\x14\x8b\uf48a\xd2/\xc1\xfe\x17\x8bRi\xb2$\x95\xee.\x89\xa5/W\r\xf8{\xaer\xa6z\xa8\xba\xa3\xf2\\u\xebe\xedP\xb5\xa6U_\xd87\x18\xec\xeb?\x9e.\xa4+yYq\xf3n9S\xc8\x14s\n\x92\v\x96\xee9o\xd4\xd0u\xda\xd6G\xb5q\xf4\xd2\u007f\xf9s\xf4\xf1\xad7\xbd\xfc\u007fl\xbd)\xadiڙ*\"\xf0\xf3\x95\xcawa\xfb\x9eʡ\xea}au\xba\xdaPMUT\r5\aH҇\xfd5\xd5T2\x86j\xc8p\xbcl\xaa\x06:\xad^\xf4\xd9\xfaN\xb5\xfa}\xc8\"\xacj\u007f\xd5\xdf\xd7\xef\xef[\x00\x18/ɖ\x95\xd2M\xc761a\x96a뢵\xb7Z\xfdv\xb5\xba\xbfRA3[\xb7]\u007f\xbd\x8b̭\u007f:\x8a\xce,.>T\xa9LT*\x0fi\xdaǓ\x9d\xfb5m\u007f\xb5\xfa\x10\\\r\x99j\xd5P\xabV5m\xb8\x0e\x0fh\x1d\xf4\xef\xd0ϳI\x04\xc5\xc5\xc8\x15\x84\x9c\x0f\x05&\xab\xb7⋗\xfe\xf9\x8bd\xd6\xf82\xdf\xde\xc6t\xf6\xa2\xa5\xfd\x8f\xb8\t\xe6\xebߓ-:ci[_\xe0\xb3m\xd0>͂\xf3\xad\x96fm\xfd\xa0\x99\x9cL\xfeG\xdc@\x04\xbc\xf8\x80pl4\xef\xadM\xb9\x10$i\x14\x8dt`a2\xa3\xe4vݢ\xb8\xe5\x19\xdb\b\xf4\x94{\x99\xebfʝ٠\xb7p`)\x9cDrny\xe6\xe0\x8d\x17\xafC\xb6g\xb8\x9e\xeb\xf9\xe3\xe6\x04z/_3f\x18\xfe\x14\x87\xc1\xabq\xfdÑQ\xb8\x86#\xe3YH\xc4I\xcc\xddp\xba;zp\xfd\xe1\x93\xf3\xb3\xaf/\x17\x1f:y\xf2\xe4\xbe;\xd1\xfc\xe0\x83w\x14D\xf7\x126\xf1A\x15\x11F2Jvlv*t\x99,\x13\x858`\xf5u\x8cM\xe8\x8a\"P9\x00\xb1\u05ec\x1f?\xf9P\xaetOw\xe9\xe4C[\xb7ޱ\xefҹ\xc1k\xf6\xf5\xa7\xd8FJ\xcc>.a\xea\xcb\x0e\x12S\xfeJ)\x9b\t\xa82FE\xc5\xc04\x9b5E\xc9b\x94\x90ss\x97\xf9:~\x01G\x9a\x88\x81\xdeH\xbe<\x9c7\xf9vA\x1f\x918Bgff6\xcc\xcd\xd3ǎ\x9d\xde47ffV\x0f]}\xe8Ln\x80\x9e\xb9k\xa6<\xf3\x9d\xef\xc0殗^\xda\xfa\xce\xea\x05\xf3\xa1\t_\x1f\x89Gy\x00\xe4\xe3\x1c\x1fj\xc5\xe7\xd3}\xba\xfdf#N\xc6d\xbcsG\x8d\x98\a\u007f\xa0{\x0f/n\\\x99\xe7\x01,\xe5\xe3e\t]\xae\xac\xe3\xf4\xeb\xd3|\x05/\x1e\a\x82\xae\x90\x9ezJ\xaa\x8a\xf4\x11F\x1b\x92Ԡ\xec\x9eO\u007f\xfa]\"NKRH\xc4O\x89D\xb8\xe8\xf9|5A(\x80\x1bG\xc0.\xa6\xd1v\x8c\xc9?\x1c\xa8\xb4\x19է\xa2}\xc5$ۗ\xce\n\xef?a\x1a\xb9\x13\xef\xbbZ\x10\xd2g\xb7\xce~\x13\xaf\x01w{B\xf8\xa0\xf0\xeb\x89o\xebk\xc2\x1f\b\xff\xb7\xf0\x8a\xf0\xff\n?C\x185\xd1\x1cڋN\xa0;ћ\xd0\xdb\xd0{\xd0\xd3\xe8\x93\xe8\v\xe8kɬʀ/\xb0\xc1\xff\x92\x10\xcbƀ\xb3\x15\xf8\xf6`'\xec'\xab+'Q\x98a'\xec\f\xba|H\xb5\xd7o$\xf1\x9dA\xc8\xe3}\xc0&$\xb7\xb0$N\xa4\x99\xc4\xe8/\xa0e\xb1\xbf<\\\xb1\x882\x9fO'\xe9\x04]\x1e\x890Z\xc6\b\xfa\xbd\xe7\xc3m\x81\x1f\xf0\xc8\x06\xbei&\xe1\xa1IPW\x12\xe90\xcc\x0eHU؉\a\r)\x81\x00\x8d$T4\xe41\x0f|\xde\x16 )\v\xf5\xf9\"\nC\xa26\xe4i\x8dh8K}\x19\xc1\xdd|i\x06\xb8\xbf\xc7\x06\xbd\xe68\xa2\x91\x99\xac\xc1@G\xcb\xca\xf2\xe7\x00\xfd\xe3\xeb-\xb5\x87\x8b1\xf1\x8c\xf9䖤J\x86K\x1e\r\xfa|*\x18p9\x02\x150$s\xfc\xa2`\xb8x\x92\xd4\x16\x9b\xdb7\xfa}\xdeO\xa2A?\x19x\x86\x02\x8f\x8a\x99,\xb5\x04Za\x19\x916b\xcb|\xb9\xb1 YI)\x816@\x19\xf9\xc0Ms\x90L\xc0\xe9\r#^\xf9\xdc\xfb!\x02\x1aF\xd3\xf2A@/)\xd1\x00\xef\x00\\\xdb\r\x8bƗ?l\x16\xc2.\x1fZ\x93A\xa7YL1D[cn\n\xcb\x15\xa4H@\xe8D\xd03\xa2\xc8R-˖}\xa8\xaadAX>*f\x98Z%_h֍\xe9\x8f\x1d\xc9ڲ&K\x84\x8f\x1eZ̕$\xc7j\xba\x80\xe3\xe1V\x92\x12UIA>_a\xae\xa8k\xb6h(\x89ӆ\xc8\xf8@ #&\x13\xce6T_Nɀ\xde{\xb2\xa8\x13\x89J\xca\xd6A9 2e\x90m\x8ay\xaa\x98#\xa4#ڒ\xaa\x1bL\xfe\x8a\x1fyS+\x93\x93Gh\x95\xe7\x8a\xc1\xe6\xf6\v\x80\x12\x89\x1c\xc9\xe4R\x82X\xe8\xc9|q\xea\xdau\x92n\xc9|Y#gN2.;4}ٸ\n\xa4X%\xaa\xa7QL\x88_\x00.\xcc\xd4Y\x8a\xd2&\x95\xb0]@D5Y\xaa\x83%\xd3v\x98\x19R\v\xf7\xfb\x131\xa2H\xe6k:A\xef\xeb\xe7\xffY\xd4\x14\x84L\tڎ\xedAE]QE\x9cbJ8\x81R\xd0\x18\x18\xd2͑\xcf\xe2O\xf0\xc3\xe8\xd9$\xe6j\x86\xc7'\f㭪\xa3\x88+\xc0O\xa2I\x18_-\x04:-m\xd3f\x11\xa3g\xb3\x8d\\\xae\xf1S\xbeɢC\xcd\xc5VQ\xa6)\xbd\x99\xceu\xf3z\xb7\xe1\x85W\x1dZ\xb8nm\xbeT\xd4]2~ӯe\x1b\xd9\xe4zآ1,SG\xcb\xda`S&3\xc1\\\xbd\xc9C\xc6e=L\x15\x9d\xb249fn\xcf\xf1ڞs\x13\x01\xf6_\x11.\x17\xae\x14\xaey5\x1a,\x8c\x92\xd1\x00\xbe\xd6\x11J\xc2Z\x87\a\t\x90\n/b8M>\x0eǗ=\xe4+\x9dzlt4\\?\x00\x8f\xf2\xdb^\x13\xf2\x99\xe7\x1f|\xf0\xf9\a\xefEJJ\xc9\xd4kY\xc5Q\xe6[٩\xec\xff\xa7\xb1\x9f\xf11s\xd8\xfcL\xe2\xeb\xbdHO8pI\xca/\x8ef\xf9\u007f諏>\xfa\xd5G\xd1/=\xc8\xef\x97s\x8a\x92\v˲\\\x0e\xf9^k>;\xf57\xef\xe1\xf3\xc4\xdf\x03y\xbc\xef\x11Q|D\xea\xfbjIQJ\xaao\xfa>2\x92P\xe6\xad\xcf?\xca3\xb9 \xa6\xc6\x06Բ(\x1c\x10n\x00\xfb\xd4\xef\xcer$Y\xe5K{Ҩ\xdf\xf9\xb9Q\x99\xc8\v\xf8\f\xdbj\xd3/\xe2N7\xec,\x8b=\xd0\xe6h\xe8\xdb\a\xdeg\"hՠ\x84z\xa0\xa8\x93@@\xd4\x1cN\x82C\xcf7\f\x03I\xa6\x89[\xad[.\x18\xf3t\xcft\xe7y\xa8\xb9\xee|\xab\xba\xba\xab\xaa\xe7\xae\xea\xb9\xd3\xe9)\xe9t'餓\x90y\"\x04\bM\x06 \x8caV\x04\x8c\nA\x01\x05\xe4)aP\x82\f\xe2\xfb\x14QP\x1f\x83\x8f\b\x8a\xfa=\x9f\xfa\xfc\xa9_\x9eH\xf5\xb7\xd6>\xb7\xba\xab\x03\xbc\xef\xf7\xd5p\xcf=\xf3\xb4\xf7Z\xff\xb5\xf6Z\xffu!y)w{4\xe6a\x82u\xd8L\f6\xb4\a\xb8;\x1f\x15\x18\x86\v4_<\xd6A\xb8>\xe4\xff\xed\xf37\xc3\\\x1a\xe7\xf6}\xf2ҷ\xccy\x8c\x90\x82\xfe\xfc\xbfy\u007f\xf6\x90\x93\xf5\xd2{\x8b\x0f\x18\x1fxx\xe9D\xf2{x\xaf\xfa\xfd\xd5\xfd\xa9~v\xff~=]}\xe4\xf9G\x1e\xc1\xb9́\x03zj\x94\x04\xf7ý\a\xd2\xfd\f\xacN\xd5\x1ey\xc5#\x8f\\\x9aK$\xb4\x8b/$l\xba\x9b\xbc\x84\xc7\xc8u\xa1\x0f\xa1\xcf\xe0t\xe26^\xe1\x00c\x00I5\xb6\xe5\xeb\xf1\x10\x19\xceD\xacє\x9b1CU\xa3\xc9\xe9\xc9\xf17\x8c\xba\x80]Xmd8\"ZB\xe3\r\u007f\x01\xcc\x15\xa8\x88]\f:\xd8%&\x92\x91=\xc7aX\xfd\xf2\x99\xd8\xe8\x00π\xc2T\x91\x80\x93\xa8\x188\xeb[ֹٗ\u058b\x85\xda}\xb3\xaddU\xf5N\xd5\xee\x9a\xc4\xf2\x00\xe3w\xd4\xcezZ\xd5^\xfb\xc3\xedgv\xec8sV<4\xcc\x1e(P\x81\xd0¡l\xaeSO\x11\xab|\xec\xd4X\xf9\xf8ɵ?\x9dX\x98\x98Xp\xb3\xbe\x11\x1a\xd9f\x96l\xf2K~\x1e\x96\x8c\xa7\xb2\x98\xd8\xf9!\x06\xe7\xf1,\xcb\xc23[\xf0\xed\ru{vvfڮT\x1fl\x15\xb3H\xbe\x9e)\xce>P<\xb3\x1d\xce\xf4\xc8p\x1f\xd5]\xc7\b\xab\xedɓc\xfc\f/ǣO\xec!^\xd6\bM/\x9b\xf5\xbc\xb2\x87gl\xf3\xac\xd1\xd8\x06'\x17?K6\x93\xe7\xc0j\xe8\xa1m\b\xbd\xbaH\xe2\fU\xd0\x18\x00\xe4\xda\xc3\xc6:\xf3\x17\xc51\xa2A\xc8SC\xeb#\x1a\"|v\xc3\x11nŇG\xbc\xf2|\xb0\xcf4\x8a\xb6?\xbfϬ\xaaƾ`\xa1\x94uT\x96\rD\xa7\xddkiz\x90\x95\x05jXk?\xde7\xa8n\xae\xee\xbb}߶F\xaf\xd1ȸ\x05\xf7ހ\x05\xb8\x8f\x8e\xbb\xc2\x11\xf6\x83%\x9a\x8c\x92\xa6l\t\x9ac)\xb2%\x9b\xba\xe1\xe8_\x1c\xec\xab.\xd4\xfa\xfb\xf6\xf53\xf5z&[w\xf3\x1b\xf3Xe\xce\x1d\f\xfdw0\x8a<~\xb1\xb8\x15GN\x84h\x86\x8c\x12\xe7c>3@\xe5H\xf4\x19.a\x86\xfc`\x96b\xe6ֳ\xa9R*U\xfa\xe7+\xc4\xc6\x1f\xcf\ue61d\xdd\xf1*ѱºS\x90\x99\xe5\x00\x98R\r\xbfn\xb6̜٪\x19\xf09kV\x03W[+\xa7R\xe5\xe8\xc9\rr\xf4*\xd8u{룊\xa8$UQ\x82\x89l)\x00p\f2k\xe6\xe3]\xad\x96!\x9a\xba\xbd\x91O\b\xfd\xa0\x93\xdc;r\x89\u007f\x04\x1d\xbex}\xb1\xa8A\x16\xd3\xe6h\x10\x8b3\x82t\xc8Ϲ\xd1c\xa7O?\x96r\xff(U\x19\xb7\x93\x86\xe6T\xe0\xed\xe7J\x8ef&\xed\x89JJM\x91\v)\xf7\xb5\xa7\x1f{\xec\xf4k\xdd\xd4ڿF\xa5fR7\x92F9\x93\xf4\xb2E\xf8\xa2\xbbc\xa5H\xe5\x9ce\xff\x8b^ oI\xecÈf\x06\xafB\xae6\xd1\x16h\xb4y\xfe\xbd\xbc\x99\xf4\xbb\x01\xb7I\x90\x87\x883\xb4^Z\x80in\xa4\n[l\xa2]D\xef\xb0ȃ\x05}z\xa1\xe9\xb2\xc9F'i\x1d\x91W\x93vt}\xa4\xb5\x92\xbf\x9c,1\xf96SΗ\x99\xb4\xa0\xe8\xd3ov<\xa6\x16Լ'1\xdfu7\x8fK\r\u007fAX\xa6\x0fK\x05\x83\xbc\xc9 c捧\xee\x1b\xff\x82\xf5\xe6:!\xc3oυ-\x02\x00\xd3$\xd0+\xff=g\xcem1\xb5\xd7BO5\x89i\xf8ۼ\xe1\x8cf2\\M\v/W\xdf\"\x92\x8cm\x02Zq/\xf1\xd1 \x0ft\x8e\xb3j\xeeJ\x1cI\x9cJܞx$\xf1\xc6\xc4;\x12\xcf$~3\xf1ۉ\xaf&\xbe\x8elN\xc3\xf5\xca\x02\x12\xa7\xa7\x02\t3\\\xcf\x0en\xfa\xf1\x12N\xe2\x1b;\xa7+H\n\xb8\x85\xc8\xdc?\x11\xe28s\xbf\xc9;\b\xcer\"\x82\x06C\xecӛ\xe4Cv\xb8\xae*\xb3\r\x87\x99%\xa3\xbc\xe3\"AGF/f\a\xe6yBC\x90T\xfc\xf8Í\xdb\x05\x11O\xe5\xc7\x05\x9c\x1f!l\x0emR\xe7[T֏\x84F%\x9e\x12t\x18\xf1\xee\xd8}4Ne~\a\xf2\x96RbǓ{\xf8\x04Yea2\xef8WI\x88\xe8\x15\x80\x9dt\x11l\t@\xbdT\x17\xb6)\x8e\xa28\xa5+v\xf4\x88d\xf3/|rV\xc1\x83\xc0NJ\xe3l燀\x15W\x1e\xe4\xdc\xfd\x1f\xbf\x9f\xec\xbeb/U\xc1\x03\xff\xfa\xee;\xfe\x86+\x8a¥\xbd\xe0r\xae\xba\xbc\x19L<~\x05r|~\x85P[\x1a\x97\x18\xd8\x15\xa2\f\x87\u007f\xc2q\x0eo\xdc\xf5\xcd\x1bnI\xfe.\x85˂\xa3(\x92\x8e\x87P\xec\r\xf7p\xc5Q\xee\xfa\xf8\xfd\x1f\xdf\xcdw\x19=\x92=\x8e3\xca+\xff\x12\x18\x9b\x9f\x064\x93JT\x12S\xa0\x97x\x92?t\xbdfâ\x11\xf7\x16\xf2\xb6R\xe7\x9e\t$\xe2\x00\xebw\xc8\t\xc1\x86\x8f\xef\xaf\xde<ܾi\xb9\xfcG\xe1x5\x9b\x8e\x1aQ\xb5\xdd\xde\xd5&\v\xe5͇\x96W\xefN\v\xb9\xaf\xf9\xfb'\x96N=4\xf6\xc3\a\xa7Z\xe5\xfa6\x9d\xe8Ay\x01\xb6\x83\xadگ\xb8\xeac3u\xf1\xd7k'ʏ6ǕWZo\xb8vu\x91\xfb\xf7\xe8\xa8-\u007f\x14}\x99\xa3\x92,\xcd\x1e\x18\U000315c0sdĮ\a\xfe\x15\xa5\x06\xa6;\x85<\x19\x95\xf3\xac\x12\xb9\x05\xed\xa4\x85^\x9bya\x11c\xf8x\x89\x81V\xa7\xdb\n\xbbat\xf9\xb7\x05\u007fЖ|dB\x0e\"?j\xc1\xaf\xdf\xc1Y\x1fPj\x10\x06!\x00\xda\xc8G\x9a\xe4\bN\xd0\nZ!\x00\xd96\xach\xc1&\x11\x9e\xd5o\xc3\x01\xa2\xc0'/l\xbbo\xfb\xb5\xaf\xb7\x89\x92R\xf2f$\xb8\xd3\xf5k\xbd\x89-\xaa\xa0\"\tp\xd1\x00\x8b\x8c\xd9z\xedl\x16\xb0\x9e]\xbd\x1e:\xb9@X\x1eӦ\x8a\xbd0\xd2=\x8f\x12\x91\xe4\xb3\x125\r\xc64\xc5\xd4\xe9\xe5h\xe2+~\x84\x8d\v$\xfaǒ\xba\xfd\xbem\x0f\x9c\xa4\x8cn\x9f\xf7\xebljl\xbe\x92\x95=\xeb\x86M\x81\x97l\xbb\xaeI=\x10\xecĪjew5\xbb\xb4\xc3{Yꥫ\xbbJ\x95\xc5~1\x93\x9c?\xd8\xdf\xe9=y\xf8\xfa\xbb\xd7V\x92\xa6\x1aUǣ\x95\x93\u007f\\\x98\xcdLl\xf9\xd4\xf6i\xdbJ\xdbYRڱR\xeb:\xa9Ҏ\x03\xb6\xeb\n\x8dj\xe9p\xe9\xfc\xae\xf0\xe0\xd5/\x91&\xd3\xf3\xcd\u007f\xa8ϗ=j\x98\x13\xbf\x9b\x9dJ\rޞYm\x14\x9c\x94\xb5\xae\x1b\xbf\ax\x17\xf3\xab:\xd0\xff\n4\xaa\xae\x8f\x1a \xc5w\x81\xd4\u05cb\xd1\r\x9a\x9c\u007f\x97k\xab\x98\x17\x1c\x10ʹ\xae\xe5\xfcC\x96\xef[\x9b\x02\xc7D#\x99<\x8bs\xbdE\xe9IaX\x8d\xac\xc0\xd2dA2k\x83ܓ~\xe9-\xb3\x13[\xb1K\xbd\xc2\xf2\xbd\xb4ߪ.f\xff\xc1\xb7\xd6\x1e\xb7\xfc-\xe7\v\x8b\xba\xe2\x19ݝ\xb3\v\x91\x9e\x95\x8da\xbe[\x8e\xb9'\x8a\x17\xbf@~\x85|*\xb1\n\xd6\xef=\x897\xe1x*\x9c\x1b4`\u007f\x9d\xa9\x86'=q\x1d\x8ej5G\x83QO\xe4\x04UUX\x1d[\xbe\xc8\xf2\xdf]\xe4\t=\x16\x9d!^o\x91\x17{\x88\t\x9e\xd0\xc9\xe6\xf1\xf4r\xeec\v\x83\x820hbT\x00\x97G\xc3AhC\x83\xe1\f\xcb1\xe5\xc2y\x89\x82\x19gZd~ll\xd3\xc1\x8e\xa2*\xf9Zjb\xceC\xbe\xa2\xe6\xa9\x12\x0fCm،0\xcb\xd2\xfeEQ\x9e'\xf5\x9b\xae^\xa8\xcf\xefٱ\xb9\x95\xccק\xa6g<\x91i\x94\x84\xf5\xd6\xf6*S\u007f\xc0|\xa9\xfd껎\xaaĶ\xb5\xfeʑ#o\xf7\x93\x82\x88Q}I\xd1\x11\x93\xae\xa4K\xd4\x17\x99*\x88\x92t\x8b\xa6\x8a\x02+8\xd7Շ\xf3c\xed\x05[\xc8\tj!\x93o\x90\x90\xa9\xb6\x91\rg\xbd\x94Qj\xdc\xd1l4lU\x13D\xe5\xb3Z\xe1\x891\xafr\xb8?\xb1\xb3iZm2\x01*H\x90\x8c\xb4'j\x8a\x1b\xb8\xd4\x14\x92k\x9fa>kg\x1ag\x96$X\xd5Z\xad+\x857\np\x05\x8a\xec'%GJ\xbā\xb3k\x92\x94\x18\xe5\xde|\x16\xda\xcb4h\xf9\x03\x89s\xd0\xde7\v3X`Ȣrs\xbd> \xca/\xc0R\xf8\x9c\xc1\x98\x13\xa2>\xd7\xc8\xd0dо\xe3O\xb8\x13\x15D\xee\xdf\xf41x\x06\x85+/\x89\xb0(\xe0\xe0\x02\xc3\xee\x0e\xb8N\x05mg\x9b\xb6\xb8\xba\xb2X\x9cI\xa1\x96\x99o\xc8\xe6Lg:\x9f\xa9w\xebɣ\xb9\xbc\xab\xbdN\xae\x1d\x9dm]\xd7u\x04\x10G\xa9p\xd8X\x9e_m\n\xac\xa6\x1a\"\xa8\x1a]d\x13&h]M\x97\x1a\n\x05\x11'ڲ\t\x02\x87\xa1\xd8\xf1-yl9\x99K\xebo73\xb2\x1f\xe7q\xa6\x89z5\xc0:O\x92[%\xfe\xad﹃t\xde\xfb\xc0;\xc9s\xb7\x1c[[\xe3\xe3H\xffI\xbeD\x1eK`a\xa3Q\xa3j\xce\b\b\x82\x16\xc5!w\x9d/a7C\x0e\xb3($\xcf\t'\xafYjf\x01\x1f\x1b\xae\xadJ\x85@\x1b\v\n\xa1\xda3RI\xa7Bs\x94\x06y\xbb|z'il\xbd\xf7\xa5+^uz\xbc\xe5\x06Y\xa5\x9eLiD\xda\xf7n\xc7\xee\xd3\xe9(\xf0\x04v\xbb@\xaf\x18c\xd0\xe21\x8ez\x13\xfa\xaa\x1c\xf1Q\x8c\xcd\xcb\xcb\xcf./_\x8bc\v/\u007f\xf6رgO\xbe\xb8f\xc3Tb\t\xde<ߏ\x97\xc4\x1b\xf6.\xd7\xe1\xebp\x1e\x8axX\xa4\xb7\x053\x9czC4\xe7#XR\xe9!\tvU\x8eb\xb2\x8a%\xd2\xe4\xb1\xde2\x1f\x90\xe6#(\x9fe\xb2Э\x162\xe5d\x0e\x14~\xf0ؔH\xe6\xf4\x1d\x800\xae:\xef\b\x87\xe44,;\x1c\x8a`\x059Y1T\xe5RQ\xe6# ]QSY1\xb4\x8a\xe9\xa0.\xdc%\x13\x9aI\x8b\x18ErO\x9dҔ\xa6\xc9\xff\x92F\x1a\x12\xf2s\x05F\xd9\xed\x8c\b\u007f\x9b\xd2r9-UV\\W\xe1\xf7f\xc1\xbd\xfd\v\xf9e\x90\xe0\xf3\x89ݼ\x02\x13X\xabr\x18\xacW\xd1\x028Σ#8\xb1Ơ\x1b\x93\xe45\xfa\x98H=\x906\x8c\xf1!/<6\xe3J\xccf\x01\x18qC\xb57\xf2l\xb6\xa0\xa6\x84\x97\x9f\x98\xbf~NH\xab\x85l\xe8\xcc\x1f,R\xf5z#r\xa3\xc8u\xa2\x13\xb9C\xf3\xce\xda\xf7R\x80\xa44\x169zR\xff\v\xe4V\t^\x02\xe6\x82,g_\x96\x85%)lj\xa2\u007fm\xb4\r\xddZ:9\xbes\xc2\xd4\xcdV\xd3\x19\x13^\xaf\xd20\x8c\xcaQ\xe4\xf8\xaf\x14\x9a\xf6\xadN\xc4tKq#=y\v\xee\x1c\x04HҒ;\xa2%u7\xc2cIJ?\rX\xe7o\x01\u007fQ\x1e\xa7\xd2jKA\x19\x15\x13X\x1dȼ\x01\x90\x87\xc9\xdd\xc1\f\xe5\xc9\x03\\\xdaFa\x86\xfc\xe1\xdaW\xc8\xe2\xf1k\v\xe9\x0374{;\xe8\xc3\x19\xe5\xe3\x82W(\xea\xc6\xee{j\xc6\xc37.\xdfR\xc8\u007f\xd7\xe9M\x0fT/\xbc\xd5\x0el\xff\x86\xc1c\xf3\xe5\x99¤\xaf\x13\xba\xbbw\xfaU\v\x83\xdez\xed\x98\xff\xc69MĈ\xc6'Γ-\xb8\x88h\x8cB\v\xa3ˑ\x94\x11w:\xc4\x19\xbe\xe4\x19\xdb\x04\x036s<\xd8z\xa2\x83L\xaa\xbb\xef\xae~\xe6=[&\x0f.\x1e?\xbe\xb8gz\xa1xzxͫ_}ͦ\x1b\xfe-\x93\x9d\xba\xfe]3\xdb\x1b\x80\x82W\xb6\xdeqgq\xcf\xf1\xc5\xc5\xe3K\xd5\xd9\xfe\xab\u007f\xfb\xd5\v\xfc\xdd+\xa3\\\xc2K\xb5H\xeaQ\xd0\xf4b\xb7O\xdf\x1b\xcaUr\xae\xfe\xc4\u007f\xb9\xea=\xd1+\xffcf\xe2?^\xf9\xe7_K\xfd\xf9Q\xb2\xf55g\x1bo\xd9T\xf8\xf3\xb5\xff\xd8\xf4\a\xb0g\xf2\xe2s\xe4\x1f\xc9\x17\x13'\x137\x81\x8e\x82{\xe1)\x1f\x9c\u05c9\x17\xaa\xec\xf0\xd1\xf7\x17O\xbb}tG\xfar\x80\xf7\xca)\x05\xa1_T\xb1\x18\x8b\x1c\xfc\x8c=\xea<\x96<\xf6\xf6\x0e7|'\u007f/}\xaa2Q\xf9\x94\x94\x95j\xa3\xff\xba\xae:`\xa5\xea,\x94$\x97\x8aY\x10\xf1\xbam\xd4ŜX\xe7[\xac\xfd\b&\xf0\xf7\xf6x\xf2\xb4\xf8ݳ\x99|>s\xf6\xbb\xa2X\xfaM\xf8/\xf1\xff\xbb\x91o\xc3G\xdekQܬ\x88bc}\x85\xf8\x9b%QZ\x16\xc5e)\xfe\x1c\x8d\x8d\xff'}\x94<\x8eq\x005\x9fgע\xf2\xad\x16\xe8\x02\x19\xddD\xeczF\x8d;IF\x8e!|ѝpQ\x1a\x82\x9e\xe8\xac\xd7\xc4\x1b\xe1n\xecR2\xf2Z\x17\t}T:\x89l\x87\xd2?*\x99\xd0̪'U\xf8˦\x9b~ƺ\x895\xd2\xf9\x89\x89|\xba\xc1$W2D\x15\x14\x87\x15\xa4\x93\xbe,\xb2\xac\xab\xfb\x96j\xa7l7\xcb\nf\x98Q\xc9@\x95N~Y\x13\xfa\xc8\x18P37W\xb2x 5;5\x98\x8a\n\x13\x9b&\n\x11\x02[\xc5\xf2\xccb\xc5\x16\x88㫖\xaf[i˷˛\xcd*\x185\x83\xd8\xdfs\x99\x83\xd5\xc6\xd1\xe7Z\\\xaf\xb7\xb3\xce\r\x12\xa2\xbb\x15S\xb8:dWh\xef\xdae\u007f\x95\x1bbn\xb7\xf6PgW\xedߊ\xe1j\x9e\x1b\x8d\xffϞ\xee\v\xab<\xef{\x14C\xe1%\x86`=_\x8dQOtC\xd4\x13\xef~r,h\x9a\x9cgh8r\x90\xca#&\xb4\xb8s\xd48'T\x83\x03 \x10\xbb\xec\xcaY\xf2\xabAşk\xae\xfd\xf7\xd9m\xc3\t\xf7\xc4`\xebYK\xf7,ճ\xa9(\xa6\\\x89\xad\xf6\xeaKv!Ԕ@\x0f\xf2\xf8H\xa9\x89e\x0e\f\xb9PP\x8cP\xadd\x99n\x1a\xb2\xef\xcbF\xa0\xfe\xb5\x98m\x86\u0379\xed3\x93K\xac\xbbt\xe2\xeb\xf0\xc8t'\xcbL\xd3\x10\x1d\xd3\xf7{\xab\xe3e%T#\xa6\x04\xe3\v\xe3\x0f\xbdvN\r\xf5\xe9ۧ\xf5\x80\xea+\u05cf\xc1LnO^\v\x89\x16c\xd0o\x90Gɯ'\xb2\x18\xa5\x16\a&\f\x00\x9bA'l\xc8(;9&\xe0à\xbcVW\x95!\x83\x8d̉\xc4\xfa=\x9e\xf9\x8eC\xd4\x13\xa9\xebV*\x9b\xfb\xae߭g綏\xefΗ#\x8fx\xe1n2\xa6\x99T\x0e\x9dޑ;\x8e\xd8[\xaa\xe5\xe5Cg24_\x01\xfc?\x91o|1\xdf]9D̢a\xefI5\xebd\xa2\x9aR\xe5\xc0\x1bx\x91\xe4\x1b\xb5\x89\xc9q{\x8a\xacX{r\xcd\xd6V\xc6R\x8a\x12&\xb3\xf91J8\xaf$hC\xb07hBJd\xb8\x16\x97\x9b.\xe81\x1f\x83\xe3gh/.\xd7#\x0f\x9bAs]\xc3\xd5'\t\x99x\x85\x9e*L\xcd\x14f\xb6\xcf\xe7\xf3\xc3\x1d\xd3Sۺ\x99\xf7\x1f|\xe5j\xf6\xf4\xe9\xec*}\x15\t&\x8f\xad\xfd\xefc\x93'\xbb\a\x87\x8d@\r\a7\xbf\xf3ֹTj\xfe\xfc\xde\x13\xaf\xfd\xc4J\xe6\xbak\xb3+\x1f\xbe\xc0\xdb_\x1a\xce߄\xf3\xeb\t\vkoq\xa71\x16q\x8b\xfaQ\xb5\x99\xa7\xc3/\xdd\xf0\x0e\xe1X\xf1\xf6ۋ\xc7\xde\xd6\xebt>w\xfe\x9d_9V\xba\xfd\xf6ұ\xaf\xbd\xafs\xee\xb6s\x1d^O\xed?/\xfe)`\xa2\xdfH0~\x14\x8f\xc7\xeb\x86\xed\xeap\xd0\x11\x86\x1e<ծP\a\xe0\xeb5#\\t\xeb\xfc\xe3s\x82us\xfe\xfb/\xe8\x1f\xfc\xdcu\x89\x8b\xa2\xfe\xc2\xf7\xe7\xe6\x1e\x9f\x87W\xf2\xa1\x8f}L^\xfb\x97\x13k\xdf~V\xbdi\xed\xdb_3\xd5gI\xe3c\xb0\f۵\x0f\xf2\xf5\x1f@\xbe\"\xc7\xed8\x97\xf4\x85\xb8\xe77'H5.\n\x8a\x04\x13\x8b\x14\x8b\x1bջ\xfd*\x80\xc5F3(\x90&|'\u007f싙a\xb50\xb4%_\xb2\x87\x85\xea0#\xfa\x91T\xder\xea\xe6S[\xca\xd2\xda;'&\xbe5}\xd3x\xe3\xf6;\x9ey\xe6\x91\xd4\xdcl1\x93Je\x8a\xb3s\xa9\xc6\xd1Յjua\xf5\xe8\xf4\xa6\xa7\"'YJW\x92\xb7m\x1aq\x03}\xefR\x91\x87B\x00\x06\xf81\xc8vb:\x96\xe7)\xcc\xfc\xe2Fw\xf2r(J\xa2\x84\x89i\"\x12pY;ғ\x19\xcb\bKXw\x86\xc8y\xb0\x0e\x98\xa2\xb0\xbc\xac\x98\x8ah\xa6\x9cJWŁ\x04t!\x94\xd3R\x89Lj\xceԘ\x94K\xa6[\x9a\xd8\xdd\xe0h\xfe\x86RA\x12g\xf4\xc0\x01\xec_r\x97R\xf5\x89\xf1R`\x10\xb2Yg\x96(\x9bX\xcf\xc8\xd0\x1cWv\xd2\xd6\\\x8d\x190\x8fIˮ\x84\xef\fe\x04փݓ\xb8~\x14\xc5ZE\xed\x8e.xr\x89'\x14t\x9d\x18[G\xc3^\xe5r\x90\x1c/5\x1d-\xca\xdd\x0eO\x01\xa6\xb8\x1f\x1f\xc8D2\x06\xcak\x85T\xe5\x8e:֏}!\x98\x8cg\x1f\x19\x8c\xcd\xe4#c\x16K\xa50/\x17:\x8c\xaa\xdbV\xeaG\x06\xb5V:\x04\b\xec2\x1b\xe3\x15e\xf6\x8cD\x04U\xd6\xf5bQ\x89\x92\x84a\x8e 1\xff'\x1dʒ\x92E\x1f\x0fc\x9a\xe1js'\xdb\xcd\xf4\xc0S\x88\b:\xc0U}J&\n\xd3\xe2\xeem\xd3'\xb6\xfaӵ\xdc\xcd\x1a\xa1\xaa\xa8\b\x12\xa5\x872.SU\x91\xb9\xfbǒ\x854\x86\x96,a=\x9c\xb5\x8b\x9f'\xbf\x03\xf7/A\x9b݅~\xefF\x93{\xb31\x19\x99!\xc4\xe4\xd65\x1b\xa5\xbc\xa1\xe7[\xe8\xf7\x9aq\xa0>ܴW\xe0\x10\x02\x9d\r\x18%\x8d4\x1d\x94\xf8\xe9\x99b\xbd\x16\xfa\xa6\x90\xcev\xdf\xdf\x1ds\x1a'\x17\xcay\x9dF\x99M\ar\xddr\xb5\x1d\xa9ĻC\\8xC\x9a\xce6rٽiF\xecmu\xc37[\x13d\x82\xac\xee\xf7O|@4\x8b\xdbW\xf3ss\x13w_\xb7M\x0fB\xf5\xe8\xa6\xcaB\x93Y[\xaf\xde\xdfL\x19\xc3\xf9'w\x10rd\xa1@\x8a\xb5\x1bW2㓦\\\xee(\x9e_\xf0\r+\xfd\xe26\xbf\x8c\x9a\xfa\xa7Ԧo\xc6\xe6C\xb3\x8b>i\x8c\x1a\n#\x9f\x97\x9e_/\x81<\x88\x03eyLRg\xd0\xe0qF\xd0\n\xa0\x9d\U000d89cd)C\u007f\x9f\xd6\fӒ\xdbu\xbaC\xa7\x9ao\xe6\x1df\x15\xc3B\xb3]s`/ϯϥ\xf4T\xe9\xc6ͩ\xce\xf3G\xd0#?\x91\xb8\x9d\x8f\x01\xfa1uL<\xba\xc4\x03\xebx\xd4+R\xd0C\xa3ha\x93f\xc3\x16Hl,\x92\x84\xfedNc\xd1ð\xd9V\a\xa5\x00\x06;\x8c\xa8Uy4\x1c\x96\xd8\xf3\xdb\x05\x91\x93\x1d*\x9b\xb1\xee\x9d*\xa6t\xcfO\x8eU\n\x13I\xdf\xd32\x02VW\xa6N*GT\v\xeeYW\xb1\x80\x10H|0\xd1\x05\x1a\x81\x00\x00\x11\xa5\x18\xf5\xb1\x8c\xa1\x92\xec측\b\xa2\x04\x02C\xb73TJ\x8b\x02#\xcc\vj\x9e$\r\x93*QtQ\x95T#O\x85\x82\x01_\x04C!\x94\xd9*Q\x89\xa0\xdbI\x1b\x04\f\xd1eI\x16Db8\xaa&2\x9aZ\xf125[Jֳ\xdeJ\x8a\"w\xa8i\xe9\x84(\x9a\xac\x13Q\xcf\x04\x81@\xd4\x17՝\xb9\xf3\xa7\xd5\xc8lΰ\xfeOkS\xe4Em\n\x9f\a\xe6\xd4^nS\xf4g\xb4\xa9+\xb2\xf0N\t\x8a\x96\x04\\+ӟhZ\xc6Lvc˒l\"\xf8\x96re\xbb\xa2?\xb3Y]\xd9徬\"\xb7\x11<[\x81\xbe\xb8\x81er\xeb\xedK\x90\x19H\x0e\xdd\xf1\x9d;\xef\xfc\xf6\xc2\r\xbbv\xdex\xe3\xce]\xb1\x1e\xf9&\xf4\x81\x8f\x02\xf2\x9eA\x96q\xaf+W㨭n\x10\x0fO#\xa3\xb8\xa5\xc2k\xee\x03X\x1a\"tjv\xa3\xa1[\x1d\f\xbbn\xaf9\f\xaf\xf9\x8c\xfc\xc9\xfc\xe4\xe4\xb8Q\x1f\xa4&ֶ{c\xa9\x8c\xedh\x9a\xaaʅV\xb9H\xb4\\\xc6[\xec\xfc\xf0\xcf5\xfa\xa9\xb6\xbc\x85\xdc\xef\x8d翖\x1f\xf7\xfa\xf5?J\x8d\xa7\xe6:\xb7.\xefl\x8c\x05\x81i\xb0\"\xedJ3)\xa2gwom\xbf\xefɵ?\xb7$\x12\u0378I\x9f\xe7Y?G\x13\xf0n\xb5\xc4\tx\xab\x0f$\x1eO\xbc-\xf1\xfeć\x13\u007f\x90\xf8o\xa0\x03\xd0ҍ\x8du\xc9g\xbc\x98\xf7(\xc1.掋\xfdg\xb1\x12o4\xc3!\x0f)\x8f\xb3\x8ax$q\x9b\x03\x00\xdeY}\x99\x17\xa3\x8fgj\xf1\xebEi\x19\xf5\x86\xa3T\x828#\x935\xe4Q\t\x11N\xa1\xdd\x1f\xc6c(\xf8\xd4\xf8\\\xe3\xa7\u007f\x1f\x05\x16\r\xf9\xd0>W\xc0\xf1\x1fO$\x8a\xc9uxZB\x81ȃ\xafk\x0e\xe0\x1aI!\r\xcfu\x0fd\bhTGUK\xaaRRUG5\xe5L\xb1\x92\xb1\xed\x92_+\x0e,YM\xd6\"\x97\x01\xd2g$H\xefnj\x8a\x9b\x8e\\\xc0\xa8Ҵ!k\xa6\x9dY\xfb\\2\xe7)\xb6f\x95\x14O\xf6\xa7\v\xa5\x9c\x18HJo8n\xb8\x86\xc0dQ5ڒ&\xa1_\xd7h\xeb.L\U0010e061\x9c\xc6~gv\xa9\xbc\xeb\x14+\xd4+\xaa\x8b\xe7WT<\xbf\xab\x94\x1aFw|\xba2~\x84\x15\x82H\x11\xa6\xc9\x19\xd7\x04\x1c\xaaʯ/\x1d\xf4\x92\xd3p\x95\x96b\xf1\x1f\xccK\x8b\x88\xa4f\x15oXv\nA\xa7_\xb3\x15\x19\xae\xb4Rj\x90\xa4CE\v\av\xc7v(Vx\u007f>\x8al\xd5\xd1ߔ.\xe7\xb7\r\xaa \xf1B\xaae\xfe\x18\xaeK-I2\x83\xe6]b*\x83\x19\xec\t%\xbe\xf8\xcao_,\xccdoݓNw\x16g\x8e\xe5]\x9b\xff8\xd9\x03o\x99X\xaa=\t\x8a\xd3\xf7Ư\xac\x19\x8d\xb5k\xda\x1b⠸\xab\x14S\xec\xe3\x01\x99\x91\xcf/\xf6j\xd4/S0uch\xf0\x89\xea0O\x1f\xd8%\x8cg\x9c\\`L\x97\n~\xb9\xd2\uebac\x90L\xb5Z\x83\x9f\x91z\xffAqXյ\xc9T\xde\frNi\xc6+\x97Vn^\xb9\ri \xabW\xea\xa0-?E\aq\x1a\xe7je4\x90\xd4\x1f\x8c\x8afF#Z\x80\xc1\x162\xe8\xac+\x98\x01y\xb3_(\xf8k\x1f\xc0O2\xa3\x901S\x91\xea\xa9\\\x85\n\xa6\x9f\xf3LC\xb1\x916\x8d4\xf2\xee\x84\x19\x96d\xf2\xf4\xa5\x8d\xaf\xf5\vk\u007f\xfdFP!Hc\xeb\xa9.\x187\x96\xa3}G1,B\xc4i0%\\K\x00\xfb\\\x03\x19\xfb\xdb\xd0\x0f\xb7\x01\x92^M\x1cH\x1cI\x1cK\x9c\x82\x1ey>qW\xe2>\x1e\xbd\xefW\xd1|\x1aM\"\x9cT\x1bm4\x051\xa3\x95\u007f\xce\x12\xf8\xect#\x1cm\xb6I\xd4\x01\x89\x8a\xc4c1a4\x0eq\r\x05\f@\x8bf\x89\a\xffE\x02\x87\xc1\x04Ԩ\xdf\xc4\xcd\xc3%\"G\x9cH:D\xef\xbdM\xc8o\x11\x8d\f)\x05\xc3`;\xa59J\x8e\xc2-n\xa56\xa1\xc9l@\x84l\x83d\x89\xf0rJNQF+5J\xaa\x84\xa6\bY\xa0d\x17\xf9Û\xack\x8c\x97\xf9\xb7}f\xc5;4\xbfl\xee\x9aܤ-\x1e8(^}m\xb6@\xc2\x14=#n#'\xd82\x19\a\xc3fU\xe9J\xff\x9d졠v\xad2\x1dP\x9a\x9a\xa1\xdb\t\xd9I\x0e\x00\xf6H\x93s\x94\x9ay\xfa\x04%\xcd)B\x1f\xa7\xc4M\xd3j@\x88S\"\xa4FH\x83J\xf3\xd7o!\xee\xeck\x86\xe2\xfc\x13\xed\xb5\u007f\xdarݦ?ٲc\xf3c\x8b\xbb\xb6LE;\"\x99\xd8>\xa8\x8c\xd9\x1d\xab\xdb\xc7\nYB+٥\xdaV\x8eOdh\x1b\x9f\x81\xb6\x91\xc1\xbax\xf5\x10\xe5G\x93\x8d\xd0;\x97T\xdc\xeb\u07fc\x1c\xa5\b\xad \x1e\xbf\xe1\t\x93\xcf\x12\xc9\x19\xcb-\xd47ݿ\xf7\xa1\x03\a_\xba\x1ae\x14S\x96\xeeu\xfbss\xdd\xee\x9cgɆ\x1b\x98\xbabf'\xcb\xe3[\xd4l%Zt\xc6\xcem\xbd\xfa\ueece\x9d\xd9Tc\x9a&m\xaa/\x1d:p\xe0\xd0\xc1\x03\x92\x99\xf451\x15e\xe3\x18Ph\xb5t\x91\\H\xa4\xe0\xcar\x89㉻Ao \xee\t\xd7\xd9\xe0\x9b\xb1\xe1\x8d\v\xbc\xa8\xdb\x1f\x86\xbc\xf2\" &\xb0JZ\x16\x99\x11\x861ɳ\x85\xc4\xd9htai\xc4Ei\x96\x14\x04\x8b\u0096\xc1h4\x8a\x17\xb6\xec\xad\xe7\x00]\xbf\x95l7EA\xb2\xf3=Z(E\xa6$\x88\x8f\x90ӂ\xa2k$\xa5[EG\xd62\x96\xa2[\x86\x8a\x95\x91\xb0n\xb3\xe2:\x82c\xa9\x8a(\xbb9S\v\x9c\x94\x89\xbc5$U6\x98$\b\x9f,\x15h/o\xc3Q\xcc\xedd\xab\x03\a6\xc9٥knZ\x86\x03Hbm\xeb\xf5\xed\xd5z\x06y\xbb\xd6>J\xc8\xfb\xa9\x91\xa4\xc5ű\xa6!\xca=\x17\x0e\u008c\xc0A\xbe'*\xb8\x99\x94\x94\x9d\xca\x06\n\x15\xcdj}>\x1fM\x14\xb3IS\x10\xbc\xf1R)\xf2\x95\x0f\xd7W\xdb7,\xd7\xc0\xbeU\x8d囮Yr\x98p9\xcff]\x0e\xe57\xda2\rd\xc3.b\x92Kh\xd3\xce\x12\xe6;\x8d\x8c\x91{\xa9\xae\xfc\x93I\xf4-of\x02\xa1\xf7\x81P,,&ő\xa0I\x1b\xbapZ4\x04\xef$\x98\xff\xf4\x96%\x96\x9f\xd1\xfc\x17\x9dG\xdfp\x9eaU\x1e\x1dv\xec\xeaߺzt\x90\xdfz\xef{\xe3\xd8\xefu߲\x0e\xc8 \xcb\xe3\xa9\x16\x13\xbf\x89\xad0\xa6x\x87\xee\x1a\xf1\xd2\xecXȍ\x17skb\x9c3&\xe6\x14\x98\x85\x85G\x87\x8d\xb8|\xcd:s\xa8\xc7\xf3id\xac\xb2\xda\xe3\x01\x10}\xb4\xaa\x1bh\x92qv\xf5\x88\xe7\xf64\x9a\x15\x1c\xe6\xc1\x97^\x91{m\xac\x8a&[\x02>\x90\x88\x8fҢ\x8b\xa2\x05\xdav\xd0\r\xb1\xa0X\x13D\x0e4\xa2\xaa%\xf1lf\x1e\x00\x83\xd9cdZQ4E\xd1e@\xbb\xaa/\xc5%\x04\x8a\xf0\x89\xdf\x0e8\x9a\x9d)\xf30&\x91S\xbc\xa9\xe3eQ\x17E\xa6)\x8f\xf2\x87p\x90\xa4\xa1[{\x92!\x88\x1a\x9ao\x19\x91\xe6#=p%\x95j\x96jF\xa2\xe2J\x82\xa5K\xd0\x18\x051d\xa0?\x01\xd9:`$\x8a\xe9\x8eD\x05\xb0d\x9c\xc8\x04s\xae)\x8b\xa2\x9e'\xa2\x885\xc4\x15Ya\"\xd6s\x9d\x8d\xbc\xd3\xd6L29\xd6\xfc\a\xb8HU\xd5T\xbcT\x15k\x1d\xc0\xe5\xe9x\x89\xf0\xe3\x195\xbfPd \xb6d\x01\xad\x9b\xa41\x94$]R\x98Lc\xce\xeb\xbf\xd4,\xea\xdbp\x05\x064I\xa44\xb2\xf2Q] \x92\xa9Z9XN\x92v\xa1\x04\x80^\x96\x89\xa9\xa8\x06\x91\x17\x02\x91\t\xb6\xe3HL\xedz\xd0\xfc%=\x90u\x1fn\x9e\xb8\xaa\x963se\t\xe9{\xa8e\xb8n2\xa9XJ\xdf\xd0\xee\x9c\xc8ի\xe9h4\xae\x12繝\xe06e\x03Р\x02&coFi\xf6š\\\x9dQ\xe2h\xffagQ\x19v\x99\x1fUg\xa0E\xc4\t\x02`^\x92\v\x1a\xfbȗ%\x17\xf9\xa8\x04\x01+1P\x01٫\x14G\"\xc2-\n\x00\x04\x01y\xf1T\x8d=)\v'\xf09`\xa9\x04,\xe3 \xd0\f\x81\xf7$*\xaa\x1cl\x9f>ix\xa6\xc5\f\xc9\x16\xcem\xde\xc3X\x86;Ơ\x8b\xca\xd2\xd7\uf167\x80\xec%\xc8ؗV\x8cGD_M\x02P\x02\xbb\x90}@\x88ӒL%\xc9\xf6\x1a+R\xa0\x80\xc9\x02b\xfd\rM\x91\x9aRJ\xada\x99\xbf\r5>m^\xe7\x14yZ\xb7'\x0e#\xa3\xfd\x8b\xf5\xb2\x1cqFŪ\xdc\xe0\x84<\x9c\x1d\xb1\x83\xc5Tz}\xac8_\xadLb\x02\x04/U\x86\x1bbI\xc7f\xe0\a9\x829\x03\xe8V\x8b8'\r\xa6+o4\t\xb3\xfb\xcao\x9b\x94\x990\x997\x02cL\xd2flL9\xb2\f\x81\xa4\x9e&\xc8N\\,\x10\xd5\b\x1f\x80\xe6!\x92\xab\xb1\xd2;\xbb\xd2\xd8\xfb\xf25\x17.\\\xd8<\xee]\xb8\xfa\xea\xe3ǭ\tWK\x82\x18'7\xd6t]\xd5&.(ڵm\xf4\x18HGEQ\xa2ٲ%M\x98\xa3\x98\xfe\xefS\x06}}\n\xd0\xd0&\xb0\x9f\xee\xc6\nU\x84\xf3\x89\xf0x\x9b\xca\xc8U\xceB\x8c\xf4B\xc1\r@:\xe2u\xab\xf8\xaf\x8c1i\xc8&\x8a\xab\x18\x18\x83Q\x05\xfd1\x8dh4\xf4\x8ci+ а\xa8\x19\x8e\x14\xe1\x18v\\\xa2\xb8\x89\xc5\x00B\xf2\xee\xc1\x1c\x13\x99;\xec\x1aJ2T\xd5]w$\xb1[B\xb3\xa5z\xae$\xd0\x1d\xca8\xa8\xed@+˦l\xbe\xfcC:t\x97\x02\x11ƙB\x88O\x9c\xab\x86 \xec\x8db&/K\u007f\xd7Z\xb8\xe7\xd0\xea@\x11S+\xe9TH\x16Vkj\xb2u&\x15y \x99\xbb\xcb\xe5i\xadR.jj\x8d<\x9a\xbbc\xb1\xec\xf5v\xe4\x14\xb0k\xaf\xde\xe6\xf5@O\xb8\xf6\xd6L:c\x84\x92R\xaft\xc6\xf2)\x93Ϳ\xc7\ttv\xb3m\xca\u07b4i\xfa\az\xab\n\xa1r:;\x1e\x92\xdbS\xd7\xcd\x1d\xba\xb7m\xa5=\x17\x00UV\xca\x16\x0f\x94hƶ\xacd\x8a\xa5T\x89\xa4\x9a\x91#\b\x978\xbb\xb1\x06\xa0\x93\x18\xf2\xda\xcd\xf8\xfa76\xa5$\x17\x8b\xed\x1e\x92\x00\xb3(\x0eȆ\x05\x95\x16ZZH\x0f̽\xb2!HϊM\x1a\xbcJ\x02\xe9\xfa-\x1e\u05cc\x85\xe008\xb7\xdd\xc1\xd8?\x00\x80\xd7g\xa6\xd2s͵\xb5\xe6\xdc\\\xf3\xb3\x13!(\x1d\x10>^\x90T5\xdfL\xcd\xfa\xd0j$\x90]\xa2\xa3ZI\xd0a\xb5W\xc8V\b\x10\xf1\xf0xP\x17q\x15l\xe9\x05F\xbc\xa1(\xd9:%O\xa7\xa72\xf1\xe1\bmέ\xfd\xe2\xca\xe1@@G\xaf\xde\xd0%ɘ\x1d7\r>\v\xdd3\xeb\xa2\xf3\x06^\x88f\x04\xba\xe2\x87{.o\xa9]\xdeP\xd67\xc6~$1\v\x81\xc8<\xd7\x17\xa4\xf8\x90\xc77.\x82\xf5\x13k\x05̋\x1c\x90\xe7\x8e/1\xf1\xcc\xce\xea\xa9S\xd5\xe3K\x92xvg\xeb7z\xe2\xa1\xcd\xcd\x1dST8\xb4y\xe1\x14y\xfa\xf8\xe2\xb1]7\xa9\x92\xa1KǷ\x1c\x87o,\xfa\xeb\x85\x13\"\xad,77\x1f\x17\x85\x03\xeb\x1c\xb9\xb1\r)\xf3\xbe\x1ds\x1a$\x12\xeb\xbai=!\xbd\x1e\xc9\xcd\"Af\xc58\ab\x94{A\x13\xef\xfa\xe6\xbb\xde\xf5\xcd\a\x1f\xfb\xccc\xf0\xb7\xf6\x85\xe3\xf5\xe3o\x9f\xb5;m\xab\x1b\xb2\x1d,\xb7\xb3\xb0\xe3\x0e\x1c\\\x9b\xc0\x8d\xdeu1q\xed\xe3\xb8\xe1\xf3\xf5\xe3\xf5#ם;\xf7\x12\xcd\xcaۯ(\xec\xc8g\xa2!\xcaR\xe3\xe2\xda\xc5\xcf\xd0$\xf9BBL\x18\xbc\x9ap3\xd1\x02\xf4\xbf#\xb1?qGⓉ\xdfI$\x06!k\f\xa3\x91Z\xa5\\͂\"Ħ\x81*\xb6\xc6\x1a8\x92\xca\xc7\\y\x1c\\\x81HX͈WHn \x8f\a\xee6h\f\xb8\x8f{\x86\xf05\x98S\xd1b\x01\xe3\xc32\xe8\x94ᡣ\x83\x10S9y4T\x13U/\xca\xecF\x9cw\x8d\xefD\f\xb8\xc2\xe5\t\xb7\xa0iQ\xff\xf2j\x86X\xfdǏ#\xed\v\x14\x13gG\x97r\xbd\xe8\x8b\xda/\x18\x8ab誼\x14\t\x14\x14\x16y\xbd-hI\x1b\xe4\x0ei\xdbIQ\x12\x1dW\x92\xbe\xa2[\nH/K&wH\xa0bA\xdek\x18]9)h:`\xf9\xa3\x86\xad\n\xa0Q\x15\xc1w\x8a颺++\x14v\x06\x80\x89\x1ab*\xa86\xfd\x9b'\xbaGŢy\x1d\x1d#t\x92\x88\x05S\x91%C6-\x8b٪\xe2\x81n\xd6tU\x91S\xbe\xa3\xd2q\x8cC\xa69Ў>#\xb6\v\xfd\x89\xa9\xb4N)\xa8I\xc9\x0f,Q\xf1@\xd58\x9e.N\x05b@\x0f\x81)\t\xca\xd2 ߂քj\xea\x9bz\xd2\x16\xf5\xa4\"\xff\x06X\xe3\x18\xe8\xaf(\xfb\x14jX\"\xdc\xdao\x10Yb\xfc\xe2A\xf3\xcc\x03\xe8\xd44q\xb3*\x98\x0eh!\xf3\xa5\xe5\xbdA\x92Ԃ\x14t\t3\x1fd\xa4\xceRX]e\x9dZ\xc9\xdd\xdaז\xcfjLwo0\xf3\xd0\xe9\x00e\x18\x86 \xa3\"WX\xae\x92\xcbR\x1f.\xd7\x11_B5Iԥ]\x82\x0e\xdb\xd2b\xa5@\x15]ګh\xbe\x83\xb0E\xbd\x8a\xc1\xb5\xc0u\xdb\xfe\x95\xe3\x01\xd3В\xf6s\x8d5\xaa\xcd\xc4\xe5/(b9\x88\xf3\r\xe2\x9c;\x9c\xef\xc4\x18\x1d\x87\xb7^lw\xba \xb6\xcb`R\xb8`S\x94;\x03r\x15H\x12\xb9\x10\x9acn\xa6\x89!\xaf\x96b\x98^\xd63\x88PM\xa7+L6\x1b\x9b7؞\xb7)l\xed\x038\xd6E\xae\x05!\x1d\x88\xc2kE\xc1r\\2\x052\xc02\x94oj\x0e\x96\xe8t\xd5$5M\xc1y\xc3\x15f轸\x0f\xee\x0f\xef\r\xef+u\xf1\xb3\xe4\xc3\xd0o\xc7\xc1\x06ډ\xb1\xfb\x16\x82O\xee\xa8i\xc6\f\x0e`\xed\xa0E\b\r\x9d\xeb\x95v\x01\xccB\xe8/\x8du\x1fd\xe0\v\x1d\xac\x9c«cF\b5ɯ\x9a\xb4\x98'ڸ3\xd1\xf4\x95\xb0]l\xe6\x9bՙ}\x93]\xbb$\x9b;\x1c\uf346\xa4o\xba\xcd\xf2\xa6'\n\x85\xc0\x8a\xac\x1f\x162\xcd\xfc\xae\xad\x83ry̡\xa9\xd9\xe7\xde\xe7\x99I\xefaZ\xaa-N7\xa3͝j\xa6YR\x8e\xa5gL\xb3hm\xb1\xf4\xc3J\xc9\xd8Έ\xff\xc6\xc2D\x01v\x0e\xd6.\xb8c\x91\x95lnm\xf4'\x9a\xa9\xb9\x19,\xa0'\\\xbcx\xf1\x9f\xe8\x13\xe4\xad`A\xb59[7\x98Em^\x9a\f^\x13\x8b}\xf2\xdd\"؎\xd8Y;]\x1e\xa1\xb2Ί\xd0\x18\xc6\x12\x13\xee\xa8\n\u007f\x18\x17\xdeB=\xdc\x01]\xbaD\n\x94l\x9b\x99:-\x93{I\x92\x92\a_\xa6\xc8L\xa2\xa4\xfb\xb4\xf0\xf7\xf0\x0e\x01pn\xda\xe4\x19\xb2\xfby[\xa1\xf7\b\xb2\xfd\x94\xa6Ї\xa1\x8f\xd8,I\x84\x9f\u007f7\x11\x89\xf1vAR\xe5\x85y\xcf}P\xf2\xcc/M\x8cW\x04FRB\x9d!\t\xe3\xfd\x0fa\xc1\x1b\xb2\xede\x02\x99\x14\x01[\x11Q\r~\xe0\x89\xa0\xf6\xc1\xbc\x01\f\xb1\x8f\x87E\x8b\xa4R\x01\x18&\x0e\xa0\xa9h\xab\xa1\xd2#h\xf1\xc49\x95\t\x8e\xaf\x90\xf9\xf2\x15\x89\xd7%\xde\xff\x93\xd8*\xe2\xc9\xe8<\xe9dTb\xa9\x00\xaf\x13\x1fCs3ET\x81$\x10<\xd4}\x91H\xbd\xc6\x04O\x03\xe3\xe3:X]\xa0\xdc\x01)\xee\xf5{\xf2\x04\xe5\x1e\xb9\x19\xc2\xfd\xf4\x18R\x06\xbfȗ\x0f\x8f\xb2\xdf\xc4\x1aY|\xac\x03Dg\xabQ\x99\x91\xfa\xdcϏ\x94\xdc!#\xdfO\x1aFrm!\xa9\x1b\xee;-\xb0\xea\x17\xec \xa0B{{N\x01\x00O\xa4\xaa,\tL\x88\xcb}\xe8\xca\xf2\x165T,\xd9a\x8a\xa0\x0eIW\x14T\xf2\x95\xaf\x10U\x00\x15*\xaa\x84\xbc\x81\xa8\x80\xff-\xb0G\x89Ϣ\x89|\xda\x14\xd3*+\x8dO\xfb\xf0\xa8\xc0\xf6ԓ\x82\xd2S\xebU5J\x19}\xc7\"k\xdf`\x82,0\x100\xd0qv\x02\"o\x90\xa7\xe1b^\xe1\xe9z\x92\xbc\xc65>\xa7\x814Rd\xbd\x19\x16\xcbB\x92\x81\x82\a1\x04\xd8٪dl\xb5h\xa5uWU\xc5LQ\xcad\x19\x80aAN\xd9\xff\x13\x8d\x034)0\xa8\x88\x9c\x82\xde!{\xbbMYq]\xb5\xd3)\xcfx\x98\xf5M1\x1a\xd5Z\x88\x1c\xdb\xebv24\xf2\xf6L#\xf5\xb5(11\x90@\xed\xa0\x05\x93\xae \x8f\xff\v\xf0\x0e\xe1\xae@\x8f\xa6\xc0\x96\x84\xe7\xb8HC)\\\x0f\x96Z\xe459\a_\xd9\u007f\xf5T\n\xfeI\x99\xac\xbcru\xcb\xed\x8d\xfe\xb1\xb4Y\x1b\xfe\x02Q^\xd2+\xdfp[\xaft\x9di\xec}d\xb57m\xedjw\xa3\xf2Ѹm\x8cr\xbe\\@\xde\xd8\xd7\xf7o\xf0\xccq\xed\x94'\xfe\xd2O২\x8b\xb19(\xc70\xf5\x18\x8d\x10\x99g\xcc\xc4\xc8\x14\x13h\xe4u\xa2\x99\xe7V{\xbd\xd5\xdeρD\x1e\x17\xc4\xf7:Y\xa7\x9aZ\xfb\xedT\xb5\x9az\x15\x11<\xdf\xf7@\x00O+\xc6Q\xc6\x14J\xe1\x11k`\xa10\x87m\xbbuu\xf5\xd6U\xa2\xf6pox\xff5*l\x17\xe9?\xc2\xee\xf1\xced5U\xbdڎ\x8b\xd3يaLK\xd0\x14\xa8\xa0*\x8a\x8c%o\xa5\xb5U<\x00\xb7\xc3\x1d\xb8\xc7O\xc0=v\xb16c\\\x8bQ\xae\xc4\x01j\xdc\xe3(\xf47\xd3E\x11\xd5\xed\xa8B\bW\xe8\xa8\xfd=dʶX\x8e\xc65C\xfe\xf9\xfa3\x92\xb0\xdcgr\xf1D\xa5\xd8J;\x98\xd3\xc249\xfc\xf9\x1dTO\x05cDz\"آL\xd0\xf6\xbd\xbf\xb8\xd3\x17Ж\u0092\x06\x99\xe4\x18yzei\xed/\xe0\u0088\x92v\xd3\xc9L1\x94\x89c\xf8\xb6\aF\x86ZP\x1b`\x99\xa8\xf9\xa4(\xc8X b\xb8\xf6\x81\x97\b\xbe\x0e:\n\fP,y\vZ\xd3\xd1\x12\xfa\xc5\x1f'Z\xf4\x029\xc0k\xc0\xedN\x1cK\x9cIܘ\xb89\xf1L\xe2c\x89/%~\x1fd\x99M\x87\xf8G\xe0\x0f\xb3Je\x90\xd7R\xd3\xc6\xd4\x15\x16W\x06+Hm\x94\xd5K$\xde\x12Y\xa0\xf0\xc3\x16`\xab&\x18\x97|p\r^\xe1\x12EgHg\x91F\xb0\xef\xb0)\xcf\xc2\x0e\xb0-\xff\x93q@\xad \xf3\x03\xc1Y\xf8\xb1\x9a!&\xb2\u0099,\x10\xa2\xfcXq3\xc0*\xebq\x8b\x90\x97(\x16b\xa8\xf2QL8$\xbd Ti\x15\xfe+²1[J\x15\xcd\xd2Cf\xce\\\xfb\x8e'愠\x96)SZ\xcf+&\x12%\x8bB\xb3.\t[\x85\x1a4\x81:\xfc\x0eR%5\x14\xf6\n)m\x938\xa6|8\xab\xbaXC\x83\x10\xdbv\xcc\xec\x021lA\x965\x11\x83\x88ߧ\xd8o\x87MJ\U000e9896m\xb0\xbc\xc8\xd4B\x126V\x00{@/kft\xa9dF\xc5I)/9\xb4\x92\xa9\xe3\xb9\x11\xa9+\xba\xa5\x8e[b\xba\xc1\xbek3\x19^!s\xefVL\x99)rEX\"E,ܢ\xeb\x80ҿ\x90R\xfe4'$\x85<\xf5iF\xbc\xe7>\xfa =tՅ\x87\xe8C\xc9Z\x83\xe4+\x94\x94\xb2\xa91\x8a,\xd0\x12+R!\x9b\x15s4I\xb3\x82/\x04\x0fл\x8eќ\x94\xa3\xd7\n6u\x16\xa9K\x98\xa63\xd3#$I\x1a\xaaHrD\x90\xb7mN\xaaFcl\xbfK=\xd0\x157\xdfB\x97\xb6\xd1q\xc3\f\x90\xb0\x1f\x19\xf6D\x01\x8c4à\x933\xf4\xc04\x9d\x9e\xacYMZo\xd2\x12Q$\x05\xc0\x9101\x06{\x1c\x04\t\xa8(`\xfb/c\xa1\rI\xa5)Ѡ`\xc2\x12E\xb3-\x974\xd0\x0e]\xf79\xa5A\x02\f\x13KX)\x84\xf0r}6\x8f<\x1c\x91~\x0ec\xf0ks4\x8c\x01\xea#zOĠ\x8dQ\xb5\xbf\xf0R\x82\xdfe\xd7\xe8\x80$Tѵ$\xe9\xf8\x92m˟\xc6Q\x83\xde6_\x92,W\xdc\xe5I\x98Yo\xa7>\xdd\xc7\xc5y_ĥnG\xd1e\xdd\x189ɾ\xfe\xaa\x93\xa7\x1e\xc1\u007f\xb2ۑ%\xd5Qޝ3\r\u05f8\xaf\xa68\xaa$\xff\xdf\x15\xbe,-O²\n_TOQD\xd7\xf7ܖ\x84֎\"\x9d\tLE\xd5\xebc\xa6\xa6\x1a\xbbn\x0f\f=\x19\x98\xc6\xc1\x9fXh\x9b\xcc\b\xab\xba\x9e*\xe9TP4$vqT\xd3л\x94\xaa`\v\x893\xa0\xf8R \xda)\x18>\xa2\xbac\xe4/\xfeW\xba\x95\xbc31\v\xbd\x10\xbd}Q\xb5\x89\x1fC\x86vq\x03\x9f\xea\x90\xcb\xcf0\xf2\xa2؇\xcb=<\x80\xb2\x02\xf4\x045e\x80\xa1\x94\x05\xb9\x95\x9bg\xd2\xf9\xf2\xeb\xa2Z9\xbc\xa9\xb2\x93L,ܜ/\xb7\v\x93F\xe7w\xdf\xed9+\x9b\xee}ɽG\x8f\x9f\xfa˳\x83\xfd\r\xf2o\xd9\xec\xc1\x9b˵\xf2\x1b\xc2䝻5\xa5_\a\f\xd9\xcd\r\xc7'\xb6\x94\xb4 ]\x9e\xb9*$\x85\x1f\xd8\u0381\u05f9nњ\xea\xccXJsX\x9e\u007f\xa3b<\xfc\x8b\x84\xf5\xb9\x0f\xeb?\xa0ͽ\x06\xbe!\xb7\xfaD\\#U\xaa\xf7\xa5!\xe6\x86\xcb\xd58\xa0-\x92֙\x1f\x9al\x94N #˓D/\xac=\xb7\xf6\x1cY~d\xf0k;\x00.\xe7\xaf\xe9W\xb7\xf5\xbd\xb5\u007f\xadn\xde\\\x9d\xa9\xf4\x8aﰂ\xf1'\xf6\xef\u007fb\xbcM\xdao{?y\xfb\v\x83\xaf~u\xf0\xd5\v\xbb\x839\x91Nt\xa2\xf1\\\xbb\xddη\xee\xd2å\x95\x95\xa5\x02ٱ\xd5?\xca}\xfc\x17\u007f\x04xI\xe2}\xbd\x15[e\x82\x85Ű\xe2\xc2G\xdep\x96,\nm, \x8a\xf4Z6to&#m+\xaf\xd8H\xbe\x9c\xafH\xf3R;\xbf\xf6\xd5\xf5/\xec\f\xc6\xfbɌZI\xc9\xf6\xa4\xf3\xaa\xb73\b\x8cMNo<\x19\xba\xe9\xfb\xc8\xd3\xe3\xf9\xb5?D\xfe8\xd2ˏ\xaf}Py\xa9,iL\x92\x92\x0e\x88\xb9\xa4x\x8f\x94?\x97\x0f͢\xd3\xdab.\xebΝ\x80\xc9/\xfe\xf8\xe2E\xb0C^\rV\xc8\"\xe8\xf0_I<\x8bl\xb5CND\x8e\xd1\xf3X\x16\x15\xfbf\x1bK\xcd \xebV\u007f\x00\xea\x19\x87\xf5\xe2\x82Uq\xf7\xb3\x91\xd3r\xd0oT\x1b,B\x97=\x16\xa2\xaa`\xb8\xfd\x80\x0fctG\x93M$đ\x9d&\x06O\xc3D\xe2ȧ\x17\xc5\xf4W\xcd\x19\x86!I\x8d8n\x04\xf3sи\xe1!\x98Q\x81q\u007f\xa1\x15c}L\xb6+\x10Σ9\b\a\x8d\x18T\x8c\xfc\x1f\xc3\xff\x02\x90դ\xa0VuƂ\x94F\xbcqJ\xa7rAFH\x87A\x9a!\x86\x19\v\x041\x1b&ɱ0%P߳\xc1\xdav?\xad\t\x1dЯ\x91Fke\xaa\xbb:-ש\xeea\x86j\x8f\xeaI\x98\x85\xa5\x89\x8b唢zZ5T\x05\x99\"\xbc\x02t(\xdb!i\x16\x95 \x12\xa9D\xad\xc0\x10u[-\x88\xbed\x8a\xaa$\xf8vR\xef\xbei;%{\x9f\x1dJ\x8cm\xf9\xf4.\xd2{\xf3\xac\x06\xca\u007f\x05\xc0\xa2\xd7kHr\x98\x16e\xfao\x9a\xa3S\x91\xaa\xd44\x14S!\x99b\xaeB\x99\xe3g\x04\x8d\x12O\x94L\xd7\xcf\n\xc2M\x9e\xaex\x12\xb1\x93f2$\xfa\aE\xb0/\x88\xfe\xa67\x01x\xd7\xdf\xf2\x16\x1d\x11\xfa\xaf\x1a\x84\x18O>\tj\xd5\x10\x15]\x15\x14*\x1bR$cy\x1d\f\x1c#J\xc6\r+X\xf2M\xd4d\x0eWu\xd5S\b#\xf0L\x98\x90.Voi\x8c\xef\ue20aPm\x83\x02\xb4\x9cH%\xb2\b\x88FR\xf7\a\x82 ^\x11sX\xc5\x11ɟ2Z\x8d\x00\\\xaer\xe7xw\x9d\xf7\a\x89mg\b\x12\x1d\xc0\x82\x90<\x8d\xb6\xff\xda\x05\xfc$\xcbc\xcb\xee2#\xcb\xcbĜwa\xc6J\xcd\xc0#\v\xa2\x99\x94E\x9e\xbe\xb4\x15|\xae]\xacN\x8c5\xf7\xfe]\xb59\xb6'\xf2lɱ|߶\xe3ܙ\xf5\x1c\x88\xa5\xc4\x11\xe4L_\xf7\xe9\x81\xcd0\xe4\xf5O\xe1\x03\x9a[\xabS\xa0\x9dv\b8\xb0۪4\xd1\xc5Ֆ\xa3\x82Еy9T\xf8@\x988\x90-\x01`x\x15\x11\xea\xd0\x12\xc10\xa4M\xf8\xce\xc8\v\\\x89\v\xf2\x16=\xab\x83\x0e\xc8\xea\x06\xab\xcb\x14\xb0\x0f\xb5\x88\x89I\xc2IA\xf5\xcd*e\xa2D\xf5\xac\xa1\xe9\xf0Q\xe9\xea\xf6X~\x9e0U35K6\xa1{'\xb5\xa4\xa6\xf3\xc6\x03\x86\xb8\xac1\x154\xba!\x9bX\xc1\x8f49\xcc\xf8\xb3\x89`\x9aMRaJ\x9e\x06\x01\x9d\xc7\x1cD\xa3K\xc8\x1e\x85JE\x15M\xceiy\x8a\n\xd3lZu\xf2Ӂ<\x90\x14^\xe1Z،\x83 \xaay\x18#\xbcxv2\x19\b\x14\xabX\xeb\t\xe9\xe2?]\xfc\v\xb0\xbb\xbf\x900y\xa5\xb2~\xe2 X\x1f\xf0\x80x\xcaF\x05\x1d'\x1eg\x05\tQ\xa2\x17\b\x1b2\xee\x1c\xc4\x1cT,\f\x89\xcf\x13\xdf\x1e\xbc\xedao\xb0\x91\xb8\x02z3\xaf`H\x0f\xec\xfe\xea\n\x93\x1ce\xe97\x16eW\xbc\xf5\xec\ri\xea\x9a4\xbc\xfa\xa8&\x9aoP\rA;x$)X.\r\xae\xfb\x05\xc5PUC\xdd\xed8;\xdb흎C\xa8U\xaf\x94\xc1b \xafܾ\x1b\xf6\x95\xb7l\x92\x99\xbdvS\xfe\xd7\xcfj\xd0\xf8\x8e\xbe;#\xb8\xa6$\x18I!\xf3\xb6Ú!j\xa7\u007f\xb5\x8d\xb4\xb5{\xf0\xe3\xcb\x1a<\xc6ݭ\xc9\xc9\xd6n\xfcVn\x97]\xa7\xd4\x19qW%L\xb8\xe7\xfb\x12\nX)i\x1e\xf7\xdf\xc1\xf8zϏkƄ\xc3Qu\xf2\xa1\xdc\xe15b\x86\xddѴ>\x9aF\xdcu\x14o \xe3\xf4\x99Jcw\xb0#\x9f~$\x9f.\xd7w%_\x9bˬ\xec\n^\xc8ev\xef\x02\xb4\x9cO\xefڕ\x1c\xf3\xd3*L^\x96ː]\xb0p\xaf\x9f?\x99N\xa7m\x98<\x96\xb6\xdb'\xf1\u007f\x80\x1f\xaf\xb7\\\x15\xbe\xa6\x9c\xf6\xc9\x11\x1e\xfc\x1e\xf9\x02\xf9\xa5\x84\x93(\x82\x14>\v\xf2w\x91vց\r\xc6(cAŐ\xd9\x14\xbf\x0f\a\x12ZG|\x98\xbd\xd1\\/\x1d8\x1c\x94\xa2\xb8\\m3\xc6\xc0\x18\xb0\x18\xbbt\xe1\xd7_w\xa3pg\xee/\x83u\xaa\x999Q\x91\x85yA\x11\xb7\x8f\xdb\"\xa3\xb2\xda\xea\x89ȡG\"j\x86\x96\xf2\xc1\x0f\xcaЌ\x99\f\x92Tʂ\xdcYae[\xa2\xc7\x00\xb2gE%\xed\x85R\xa5\xe3N\x82\xf0\x11\xe5z ?\xa8\xe6\x03\x8c\xc3\xfcOL\x98\xe7U\xae\buOPAr0\xe2Dp%\xe91+r\xd1֑eU3\xe4\x0f=#{\x19\x89\x10\xb9\xa0\x97\x9e\xfc\xe5O(\x18]+Z\xc5L\x12\x8c\x1cٙa\x9bv[a\t\xc7f\xc5Љ\xe4\xabb\u007fY\xfc\x8c\x1a\xbc\xfef\x82\xb31p\xd6\xc2J\x9c\x0e\xde\x1fă\a#v\x03~\xc7a\x9d\xc5\x19\xf8#V\x0e\x16\xa1\x9a!ܰ\x8e\xb3[\xc9\xe7\xe1\xccZ\xdaH\xe7\x1d\xeb\xf3zeA\xc7+W\xa7K\xc9foN\xae\xe7ǠwN\t\xda\xdas\xaab\xb0\xe9i\xc90\xd9L\xcd\xfd\x8c.\xa8,\xb5}[\x86i\x94\x9a\xf2\xd1\xfd\u007f%\xbdƨ\xa7M\x17f\xa9ܭ\xdb\xd3\xfb\xaeӪ}S\x86n\xa8\x17ơ\xf9\xa0}\xdeQs\"\x02H\x1b\x1e\xe9\xd7XZ\xc10aʹ\xb02,\xf2\x97\\\xcem\xfd\xff\xe2^N\xb8]\xc0\xb9X\x02\xe4ES\xe9\xff\xc7\xf2\v\x17\x1e\xba\xfb\xe7.}\xac=\xfb\u007f\x9a'O_P\xee\xbe\xfb\xa1K\x1fc?{v\x9d\x87\xe8\xf7ȏ\xc8g9\u007fO5\x91\xa8Y|\xa0*\x14fh\xfc\x8e0>\x96\x81U#\xa0\xf1\x12\x0e\xc8>6\xde/\xc3\xff\xdc\xee\xfb\xe6Te\xef\xdc\xec\xcd'\xf7\x80\f|\xef\x1e\xa5\xd0\u07fb\x90\x9bt3ݷ|\xad_\x96&`\xab\xb5?\x11\x0f=\xb2k\xf9\xa6l(\xd6\x16O\xf7\xeex\xf7\xa7+\xdb;3Ym\xfc3\x0f\x18\v\x1bl+|vXs!A\x06h?\x82l\x03\xad\xc0\t\x03\xb0\x1d\x8c\xf29٠\xc1\xd6-\xc5Ktċ \xa0\xe9>\xaa)\x91\xabhf&[k\x0e\t\xd9ןn^\xed\xfb\xfe\n\x1f\x01z\xff\xe3\xd7]\xf7\xf8u\xa4!PY8P\xb9\a\xb6\xfb\x1e\x1f*\xfa\xf1u\xb8\xe1\xa5\x18\x8c\xfd\xa0\xa7\xb4D\tY=.1R5\xd1Za\xa3D\x8cA\x1c\xda\xe33\xb2/lF\x95Ngg\xfbhe\xa6\xb5\xbbݩT\xc7\xfb\xd5\xea\xf4tn\xc4\x1d\xf2'\xd3\xd5\xca\xccL\xa5\xda\x1f\xafV:\xb0`4\xc6u\x91\xdeC\x1e\x05Yw\"qK\xe2\x81ī\x13O\x81,\x19\t\xeb\x05\x12\x0fƣ&\xae\xc6c:q\xd1M\vs\xa0\xb0\x94`\x81\xf0\xa5\xb3\x04\xfaրW\xbd\xc7\xc1^\xc6}\xb1\nr\x8d\x80\xb4\x1f\xf2\xda\x1b\xeb\xca\x1cuAs\xc4\xea\xc7\x11\xdbpC\x8e\xa5\x1c\\洇\x85\xeflK\xb2,\u0382\x00V%;\x99\xd5g&\xfca\u007fV\x1ft\fmw\xa7vO}\xe1\xf0_\xb2\xf9|~JV\x92\x1aI\xa7\x8aʰ\xb6\xd8;\xe2[\x83V2[\x02ӋI\x9a\xa4K:\x91\x8c\xd0T\x1a\x8bc;\xfe\xc7\x18R\x97\x8fɪ\xfaJMˁ\xd1\xf4\xa8\x1a\xaa\xf0w\xb7,f@\xf1\x89i\xe3)Y\x1a\x83\x93:\x92*\x05\x9e\xadN\xf5\xc1\x04\xb3'\x8b\xee\xc9\xf6\xe4|\x9dV\x84ũz\x8e\xb1\xf1|\xa3\xe2\xfb3zuyVT{\xca\xf6(C\x99\xd5̓\x19\a\x87\a\x83\x97\x84\xf3Vح\xd9f\xe1\x97\xe0t\xfc\x9cL\x1b\xd3r\x1a\x13sZ\x9a\x9f\xf2h\nN#\xc1\a\x1fk\xbc\xf8\xa3ī諉\tvH'qU\xe2\xba\xc4K\x13\xbf\x80\xd5\xc4-\x8a\xb6\x8e!\x86Ȁ\x80\a\r\x05\b\x9c\x83\xa7x\tr\xfd\xf0bL\x03|\xacK\x9c\x16\x03\xdf\x1e\x18\xb9Xd(\u07b8\xd1\xe7>\x83\xb8p\xea\x12\x89\xba\xeb\xdf\x16)\xbe$\xbe\x11?m|\x18\x98\xffSA\xb2B\xb3\xc4\x04]W\xc1F\xb4\x01w\xea骠\xd7U\xd7\xd4\xde\x03\x0f\xc1\x00pJ\x14#]\x92\xa5\\r\x8c\t\xc6\xdfخ`I\u07bc\xe1\b\xa2c\xb4DA\x0fD\xb1*bD\xfe&\x19\x93\x9a\xde\x03\b[L;5\xaa|\xcb\xcd\x18\x92J\x15O\x10u\xc1\x00\xf3\x16\xbe\x02tͼ}E\x12\xf5m6\x16\x82\xd1\x1du\x16\xbe\b\xa2\xd7\x17\x04=DǺT\x96\x89B\xffZ\x8f<3\xa5[\xaauF\u007fTg\xba]\xf7<\x80ə\xb1\xb4\x1fDz5\xb2zI+陦\xae\xb0\"\xd3e\xab\"\t7\xda\xde\x13J5Ytʊ$\x8c\xa9\xf62LnX\r\xf4\xc8\x1aS,9\xb4\x8c\xa4\xa9\x03\x16f\x05\xb6\x91\xbbYD_\xb6[\x16\xe4&\xa9F]\x9bD\xed\xc8&\xb3\xa4Z$K\xf0tɅ\xea\xfb\xdeG\xc2\u007fa/\x97\xef\x16\x9f\x11\a}\xa1\xcdn\xbc\xc1\xbc\v\xac\xad\xb5\xfb{=\xb2yV\x98\x05|k\x9b\x8d\xd5|\xfem\x1d\x1e+\xf3U\xf21\xe8\xeb\x19^\x85uC\x8e1\xd6\xc2\x1b%\x90/\x12r\"\xdcZ=\xd3\xc7\xdc\xf1\xfe\x99\xea\xd6\xd0\x1c\xe4'\x16\x17'\xbcF\xe1\xcdG\xaa\x8dI\x00\x83\x93\x8dꑨ\xb8xt\x91'\xfd\xb0Dx\xf1\xb3t\x82|11\x93xY\xe2#\xc4 \xef\"\xef\x05D\xd3\x18r\xee\xe1h\x10S6ȼ\xe0\x1e\xf7\x1a\xe3'O\xd6\bX\xd4\xca\x13\f\x90jH\xad\xa8!\xc74c0\xb5\x89\x8f\xdc_\x9d^\x9b\x0f \r+\xdc1ڒ[`\u007f\x86m\x86\xd6\x1a\xa6.\x88\xc3N\xbbˡ\xc4ȯ\x0e\xa7\x89\x038\x1aM,a\x05\x87oǞj\xb4\xffa\r^\x90<\x88\xb8\x9eE\xfd;\x1c\xb49\xabw\x1cM\x12\x0e}\xee?h4[\xa8\x01*M\xe4\xc7A?\x02f\xa0\xe0!\x9b\xc8q\fۃ\xc18\xd2\xe7\xadN4ʫ\b1\xca&\f@pUd\x98\xe3@\xb59\xa8#\xd73\xee\xc2\xc9ߐ+\xa9و\xc7t\x86\xebTG#\xb8\x84K\xda1\xf13\x8ei\x03\xc8\x1a`ה\xf1i\r\xf0y\x81Z\xc0a\xefΠ\xcb\v\xa8\x82lě\x19\x05\xabɜUz\x88b\x11_go\x91Ʃ\x8er\xa5\x8a\xfe\xe8\b%\xe4\x11@\xf5\x82Z\x11I\x10\x05\xc1\x9c%۪\x01\xb6ZN\xa5ԠTӋ\xba\x03\xf6VI7A\xd7|\x93&\xb3\xb6\x0e\xc6\x1e\xad\xa7\xb3>\xa1\x19\x95T\xc63\x19\x81\x1a$W\x04|N\x9cq\x1c9\x02$\xcf\x04S\x06у\xa5\xe1M\xca\v\xa5b\x86s\xf4mJ\xa6\xf6LV\vIL%T\x89+\x1b\xben\xda\xe3Xg*[\xd7H\x14\x95p\xa0\xa7\x84\x85\xd6(\xfb\x93\x12\xb2\x1e\xa6ʄ\xa4\xb2\x12q3\x85\x96LԘ\xf4\xd7I\xc2I\xb0\x84\xb8-!\t\x92\x02&\nq\x14\xd1#Lī&T\xd1\x05]U\xbd\x14\xe07\xd3\x16\xc0v\x91\t\x80\xb5\xc81\x00\v\x99\xc6\xda\x1b\x98\x13\xb9\x9a$\xbb\xac\xc2\xe0\x98\xb2#H\"\x06g\t\xae\x92\xf1\x98@X\xd2p\xe1>\x90UEHFH\x81\xabP\xa2\xa9`\n\xc9\x06\xa3\x1e\rt\xcd/1\aP\x11\x03\xb0D\x04]$%\x03\xe0>ڠ\xccvl]\x8d\f\xc3\xcbJAE\x13\xbdR!fcrU\xb0\x1bd/`\xca+\b\\\x91BN\x17\x92\xa62\x9e\xd2YR\x04\xb3y\xa1P\xf7\x1cx\xf2Y\xc0eA\xe4h\x06ѓ\x19\x81\x84>\xdcn-\x97\xf1OP\xcc\xd7$p\xa7J\xae0\x8d\x15\r\x052\x93\xb6\xe1\xaa]ӥd:\x0f\xfb\x82\xdd\x05\xe2Mb\x00FU\x01\x99\x9b\xe1\xc1\x12U\xfd\x02\x11\x8e\x99\xb2cF\x98ک\x19*\t\x8a\xed>\xd3''\x04\xa9h\xe6\x1c'\f\x95r\xb1\x96\xcd\xea\xc9\x02\x80`=\xe7\xd6\r\x9f\xba`u\x13[\x92\n%Y.\xdaD\xce&\x9d\x82\x86eCE\xddB\xfa\x10\xb4\xe1M7\t/\xd2@\xeee\x80\u008a\xe3\xc1]\xf9&\x0e\xdcieS\x03<\xa9du\xc6\xe8\x87t\x8dH\xc9\xc0\xd1E\xc0\n\x1a\\\xa7\xad\x01\xcc\xf6%]\x14rI%\x9dTDx\xa3\xba#ʎ\x05\xfb\xd8a Rײ\x91c\x1a䭜tM!\x05\xa7\xf1\x01\x82\nB\x92\x80\x11I\x1d\n\xa8GM\x12\x002\x14\xb9\x8f#\xb8\xd3\xd0\x10\x05\x03\x9e\x8b\xa1C{\xce¶\"\xe0mx䂬\xc3#I*:#.\xc7\x1d(L\xc9\x05\xb0_\x90yoSb5q\np\x17\x96\xd0\xe0\xb1L<\r\x17\x19\x19/SK6\xd7W\xd2+Wr\xf1X\xdf\x10y\xd0w{\x8d\xe6\x8b\xfd\f\x8f\xf4zִ\xed\xa7\"ߚ\xb1\x97\x93yσv\xab<\xda\xeb\x993\x96\xe9\x1bQ\x00k\x97\xbd\x9c\xa78\xaa\xe5\x91\x1d\x97\xdd\b\x9e\x99i42k\x17\xf0\x93\xcc\xfds\xe02Em\xa4\xa3\xa6\xaaH\xce&\xcb\xf3M\xd3\xd7\xec\xf7\xf0\xe5,\xc8;\x1bV(\xb6\xe6\xff\x8eg^L\xf0C\xc1g\xa9\x91\xb9\x98\xe0ǁτ\xc8\xf3L\x9f\a\x1b;\x95ȃ}\xb2/\x91\xc0\xf8\xb8E)\x0e\blv\xe3\x02\xee\xc3\xea\xb0˚\x01V\x17\x9d\x11\xfa<\xde\v\x13\r\x005\r9\x10\b\xfc\x0elϓ\xf6#\x80\xa6_+F\x16\xa6\xf7Rj\t\x02\x13\x0ejj\xaf\xa2?\xfdR\xf7\xe3\xd9S\xabef\x87\x86\x8c\x01WBt\x8dQn\xa4\x89}\x84\b\xa6o\xf9\xce\xd1\xc6 \xad=\xb1,\xa7j\xcb\r迺nj*4sPֲ\xd0M\a\x93\x12\xf9\xd5b\xf1\xf9_\x1b\x1a\xb6\xaf\n\x1aժ\xa1\x91\x9a-\xfe\x99\x03\r\xcew4-\xeb\xa6\xc7k\xab\x85\xb0(\x8c\xfc+\xd0\x02\xbe\xc0\xed\x92\n\xc6La\x95\x14|}<\x1e\xbd\xdf\xeep\x93\x8a'VVA\x1a\x82\xfc\x15\xda\xd5~\xf7\xf8\xea\xeb\x16\x17\xc97\x82\xf4\xb6\xdb6w\x0f\xe5\\}\xba0<\xbd\xf9\xec\xe0\x9a\a\x97\xe7\xae\xfa\xf6\x993\x95\xd5\xd5\xd7n\xf9\xdb\xe5\a\xaf\x19\x9c\xdd|zX\x98\xd6\xdd\xdc\xe1\xce\xe6۶\xa5\x83\xe4Uk\u007fuf\x9d\xef'\xce]6\x13A\xa2\x8eUxj\xebl8\x98\xbf\xb3N\x8d]w\x1b\xcdhc\xca|\xaf1Kf\x04\xc0@\x05\x82!\x896\x19\f\xc1\x0e\xb6hP\xa0]\x14ݳ`\x80\xb4\xb95\xcc\xe4\xa8\x03b\x9b\x8cۺlȢ\f\b\xf3\xbeж\x01%\x8dm\xdab\xad\xfdeP,\x06\xe4DP\\Ij\xaa\x16\xb9\x96(\n^\x89\xb1\xa9[&\xed`\x86V\xeb\xa2\x11P},\xad\xc9V\x04}W\x12+WMږYv\x9d\xack\xd2o\xa5\\\x05^\x9e\xa6\x88N\xcauS\xbf\xb9\xd6\xefη\x8a!9\x15\x16\x8bk/\xd4\xf6z\x9e\xa2K\x82\xc8\xc0:NSO\xf1-!\xabd\x0e\xd6\x00\xdf\xea\x9ah\x83\x18\x14\xa8'\xbb\x92\x16h>\xe6um\x88\x9bӐ\x17؋G\xbd\xa0\x81\r\xbc\xd8t\t|Lp\xfb\xfe\xb5\x8f>z\xed\xf7_s\xaa\xbfw\xefm{\xed\xe8H\x9a<\xfd\xf8\xa7\x9ex^\xbc\xe6\xd5kOÒ\xbd\xfdrn\xafo\x8cl\x92ϓ\xa78\u007f\x84\x0f\xfd\xb5\xdaDZ\xf4I\xe2\x82a\x84\x95xa\xda'o~s\xeb\xec7~\xe7w\x92\xae\x9d\x0eog+\xde\xeb\x90\xc7j\xb0!\"\xc1A\x88\xa3\xe90\xd7\x18\x02\x12j\xf4[\x80\xb0\x10UF|%|kȍ\x17\xb3(\xd0\xd1ݟ\x92\xc7\xf2\x99\xf4\xf6\x0f\x86\x9d(W^~\xa7\x92\x9b\xc9\x04Ji\xef\xce\xd4Lը\xeeX\x91\x9b\xd3cjGn\xf6R\x052\xdbb\x9f\xbb\x820\x81\x9b\xc7\xdf-v\xadڔ\xbb\xb7\x98\x9c\xac\xcb\xce\xdf٥\x82:l[\xeacr\xbe\xe6\x8f\xf5@M\x05VZ67Uf΅\xa5z\v0\xca{7\x96\xe6\xfb\x0fn\x8a\xaf\xd7\xc5y\x9e<\xcdk\xb1$\xdc\xd8}\x86&W\xbf;b\x1e\x0f\xaa\x1f\xb9w\xe7bi\xf3\x99M\x1f\xf9ȱ3\xe7\x0e\xbfd\x99<\xbdk隉Cˍ\xe5뗖\xcf\x0e\xe1yA{\xfe}\xf2W\x9c\x0f4\x9d\xa8%\xa6\x12\xbf\x95\xf8J\xe2[\x89\xbf\x83\xc3/\x92\b\x05sâ\x8dj\\p$d34\x8c\x99\xb8P(]&\x95m2\xd9\xefv\x00\x9cb\xa4e\x8b\xd3\xe9b\xbb\xc1\x92#!\x8e\x9eȱ_\xb5ї\xfdJ\x9f\x81q\x06*\xb1\xbd\x1e\xaf\xd6m`bE\x1cZ\r\x80\x98\a\x83\xd1\xee\xa2\xc0e\x17\x8e\x86\x8f\x8eƱ.\x1a\x8da\x80\a\xc3yٯ\xc7cI,\x0e\x90\xa2X`\x16}\xbc8\xde\xda\xe1Vǰ\x11\xd7jǽ\xa1\t\x90y\x922\b\xd3D\xaa:\x96\xce\xfe@\xf2\x99\x99\x01E`8\xee\xe7MU\x05\x99(\xbd\xcb\xd44S%\a\xf4\xbe\u007f\x1bU\xac\xf2\xb2\xc2\x04\xaah\x82ha\xc5 \x99#$\x95NO\xef!4+\x986ɱ\x10\xa0Y\xdeQ\xe0\x87\xd8%\xfb\x06w^g\xa9\x8aƣ\x90(\xa5\x11\xe0\vF\xa8S\f\x82ڴLD\xaa\x1bTPq\x98B\x1aLT\xc6\x04\"K\x94\x84\x12F$[\xaa\x81)\xd0k\xffD\xcc0o7e%iʻUQ\x16\xbbLBl\x06(\x18.\xdcB\xb2\xa47\xb1\xb1\xa0\x1a*\x92\xba\x87\x19\x01yJ\x13%\x81\x9f\r\xac=\xc1 \x12wJ\x8a\xf4v\xd5RE\xb0\xe9U\x98\xaa\xd6{\xb2\xb9[\x00tk\xcc3\x00\xedH\f\xaeAw0j\a:\x9bF\r\x8bY\xaa\"\xeb\x92ei\xb2\x81\x05.\f\xc0F\xe9\xd3\xf9\x9c\x9d\te\x00l\xb2\xa3\xfb\xb2\x985\xd0b\xd5-\x99\x8e\xa9\x8a\x0f\xa6\xb2\xa1\x888\xd8b\x8a\xd2\f\xc1\xeci\"\x18\x00\xe8\xc1\x9a\xf6D\x95\xa9L\x96\x15\xf9\x17\x1d\x0f\xae\x8d\x98\xf6A\x19ࣔɵ\xa9\x8f\xde}\xb8&I\x95\x94\xab\x91>\xc4\v\xec\x19Y\x03[\xf5\xe0HV\xfd\x1b\xc8\xd97\xf0~l%\n<\xe3ʏ\xaa\xae\x04feu\x91\xd4\xdb]L\xc9m\xa2\xf1\xd7/\xf7\xfa\x83\xe3[\x0f\x9c#;\xab\xd3\xe4\xc3B\x97hG\x0f\x972g\xb7\x1e߽\x83< \x90\xd7\x1f\xbc\xe7\xd5W\x91w\xa83\xf5ڬ\xba\xf6\x92\xcal\xebVBn;\xe9(g\xa0\x0f\x85\xa0s'8\x87)\xe7\x0e\xc4\x12h1\x1b\b\xd2\xc1\xf2\x90\xba.\x89\xf6\x9e;|\xb80\xac95M\x1b˥O>\xfd\xfc\xf3\xa7w\x8d\xcd\xe5\x05J\x0e\xe6\x83\xcd\\\xb7\xac\x8f\xcb4\x13\xdb\xe2\x91\"\x1fG\x1b&\xa8%\xc5\xd4,\x9bIc3A{\x0f\x95y\x84a>\xac\xc2\xf9\x8fy\xe0\xc3\x12\x19tb\x8acBn}\xf3ٷ\xef\xa3\bU%ISlY\x14\x15\x83\xb3\xc2\xd2\x03\xcdm\xd7\xfe\x81d)\aEM܄q\xe7+\x82\xa4I\x97\xe6ȳO\xder\xf4\xe5\xd3q\x9c\n\x18P\x00\x9eex\xed\x12\x8f\x87\xdau{\xf7\xd4R\xfdӊ\xc9\x16\x04aJv\xef\x97tA\xd8̿^\xc2\x1e\x178\xb7Q\x90Ȣ\x17\x93`\xf2'>\r\xf8\xc5\x12O\xf1\xf7\x88\u007f!倯%\x17\x96/<\xf7̅S\x99\fN2˙\xb5o\x93\v\x17x\x02\xf6\x85̅\v\xcb\xef\x81\xcf\xe5\xcc\xf2)\xf2\f,\\\x8f\xdb\xfdK8ϛ@.o\xc6x\x97a\x17ӗ\x03V\xe4E\xef0\xc5\t\x05\xd8(\xe3O^g9\x84g\xe9\x93\xd1\xfaY2\xec\xe2\x1e\xf0~\x84u\x02\xa6\xee\xb0\x1bu\xa3{O\xdb\xfb\t[\xf8d^U\n\x8d~\u007fbv\xa7fb;&\xc4~SN\xd7\xca\xea\x9d\xf0`\u0082\xa1MLjFAj\x04fА\x9e\xef\xbe\x1f\x9e\x16\xbc\x8c\xaa@\xb4\xf7\n\xdd|g\xa68\xa1x\xa6fY%\f\xee\\\xfb1\x18\xb6\xea;\x14A\x1d\xfb:\x15y\xb0\xe7\xfc\xb4\x16\x86\xdat]k4\xac\xc4\xc619=\x11\x91\xc3\x04+\x9b_\xa2]\xdbH\xc1\xd6\xebb:>\xffm\xf9m\x19\xfey\x8a\fΰxI\xe0\xcb9\x12T\xfc\x16\x83\xe5\xf0\xd7\xf6e\x1ff\xb9c\u0097[H\x19j\x93\x80\x05 SsXc\x036`r\x1bֵa\xa6%\xe3z\x8cy\x87\xa5A\x95ɭ\t\xca&h\x9bU'\x846\x16\x0eࡣ\xadJ\x9bO'h\xb55A\x1a\x13R\x1b\xe9\xbb'\bL`y\xa3\xd9\xeas\x17G\xb5\xd5CK\x86gj\xc0\x92V\x1b]\f=\xfe\xdboV\xa0)ϒV\x03\v37{X\x92\xaa\xd2\xc3ﰸ\x81_x[G\xad\xda쵛-\\\x02\x1f\x9bAc\xf4\xf9\xb7^<\v\xbb\xe1\xb2\xcbi5\xf1/\xe7\xa2n\x85\x9c\x819\x14F\x84{՟\x9cV\xfbq\x1e0\xbaw+\xa3\xb8oL\x18\xae`\xb6\xd1O߅Oc\xe7H\x9f\x8f\xec\xf1\x13~]\x14CQ|#\xff|\xcf\f\xf9?\xfcp\x9a!\xca\u007f\x17n\x8a\xa7#& :bm\x16\x90\x1eY\xa41\x91\xf2\xa5-\xe2m`\xf5\xb9\xcd\x1b\xe8\x951c\xf3g\xfe\xcc`\xf4\x18vbY\x16\xe8D7\x95I\xa7\xbb\x93\xa2\u0092\xb6\xc0\xe0B\xf3\xeb\xff`\x8bK\x8e\x14\x82!-\x8aI\f\xcf\xcd(Z~\xc3\x06\x96_\x1c\v©\xa90\x18+\xfa\xdf\x10{\x82\xd0\x13\xe3\xcfWn=\xc8/\x80\xe7\xa9\xc4W*\xa0Â\xae/\xbct\xfd\xb8f\xb4\x1e]\x15\x94\xc47\v2_\x1cqC\x8f揹\xf1ŻW\x8d\x16\xacOD\x85\\\xdekt\x02:\xa2\x95\x8e\xe7/\x9f\x8e\xf0\x03\xb2\xd15a\xba\"\xa5\xeb\xbc\xd4\"9\xb8U\x04\xa1(\"u\a\xa3\xa4\xa0\x83\x88,\nLr~\x83n\xf4\x8f\xb6w\xce\xe3s\xef-\x1eX\x94u9)ضq./\x8a\xf9s\x8an\xe8B\xd2\xd2aEO\x93$\xbd1W\xba\xf5\xb0\xa1/ߺ\xc5\x155\xfdӾ%k\xb2f}@R\x99\x88%H\xc8j\xbb\u007f\xff\x87ķ\x11\xf26\xf1C\xf7\xf7\xdb:\xa0\x96\xe9\xf6\xb9w\x9a\xaf\xa0\xe2-\xe6\x8e\x1b\xe7v\xdc[b\xba&\xe5\xcf/\xee\xbc+}\xad\xa0Z\x8a\xafeK\x8a\xaa\u0605'(}\xa2`3E6\xf2\xa1\xe6\x1bI\xf1\xda\xf4\xdd;\xb7\x9c\xcfK\x9a\u0382嫦\x8f=\xee\xdd\"\xd2W(\xab\xf7noM\x038\xfa5S\xe3\x85O*\"S%\x8d\xd7*\x8f\xed˧8\xbf[\x05\x19D\v4\xbaL}*7b\xbf\xf5\xb0?ġ\x1e\x80\xd3}\xb2\xc3\xcbY\x8c\xec8\u007f\xfa«\xaf\xbdf\xebR\xe3\xce\x03\a\x86\xbd\x06\xa9wS\xbd\a/8\x99\xc8<\xf2\xf8\xb5\xa7\x1f۶\xd4r\x1bpӽ5lus$\xe6#B\x97\xf1$ό\x83\xc67%\x80Pp&\xccLD\x85\xa9|T\xf6\xde]\x8e\xd6>\x1e\x95\xcb\x119\x14\x95\x1f\xcc\x13\xa2\x8c\xe5\x1a=\x8d\x91ͽ\x99\b\xa1n9\x9b\xa92\x9a%\xb2{\xb0\xbc\x9d\x10\xbf^\xd6u*\x9b\xfd\xd2Ĵ_9xy\xdf\xf2\v\x95O\x8d\x91dn\xa2\x16\xa46m\xa6t\x8a\x8a\x191\xed\x95\xe0\x12\xb4\x12q\x8d\xbc\xa7\xb9\x1c\xfb\xe4\xc0\xae\xbe\x91|!\xd1J,\xa1FGb\xb90.Z\xd9\xc7j\x11\xa0\x8d\xd0\x19\x04ȼ7\xbaaX\xd9\xefz\x93I\xfa\xff\xb2\xf6&`r]չ\xe8\xd9{\x9f\xb3\xf7\x99\xe7\xa1檮\xea\xaa깫\xbb\xba\xaaZR\xab\xbb5\xdaH\x1edy\x92d[\x96m\xe4\x01\x0fxb\x1e,lC\f\x01C\x18.!\x831SB \xc9u\x80LJ\x81\x80\x13H>\xc8\r\x84\xf0.p\xc3#\x89C^Hr\xc3M !\tI\xa0\xf5\xd6ڧZ\x96\x1d\xee\xbby\xf7{RWթ3\xec:\xc3\xdek\xd8k\xad\xff/9\xcc\x1ctg\x96CKNz\x8e\x9a\xfd\x8bf\xc1\\\xbftWe\xb9\xa6\x13\xc4\x02\xba\xb9\xfd\xbc\x03\x81\xf5\x96\xd9\xfd*kN\xc5{\nͲ\x10k\xf3\xac\xe7Y\x86\xb5T\xe9\x8a\x19I\x00\xd9hQڽlW\xbb1\xda\xccj\x01#\xbb\xb7>\xf6\xfa\xa2\x00\x1d\x10\x91\xd7\x1fسtYd\xb1 \xbbraus\xfc\x8cd\xadF\xee\xd7+m֏\xb4\t1\x11e\xacK.\u007f\xff{߷\xf5u2\xbcl\xeb\xf7&.\xff\x85\xcb^K\xca[\u007f\x91=J~\xf1ѭ\xef?\x8a\xfa\x1fq!\xffJ\xce+\x18\xf0\x8c#8\xba\xab\xb5\r\x82\xcfS\xc38UwDF\x199\xf0-R\xd8\xfauB\xb6Φ\xe4\xb3.q\xd7\xf6\xec\xd9\xfa\xfdo\xad}\xfd\x8f\xdf\xf3\xebg\x95\xb3\x8aU \x9f,|Ü2\x9b\x9b\x9b[_\xfa\xe35\x89=\xf4\x05\xb2\tvŌr\x99\xccQ˱\x96\xa0\x0f \u007f\xab\x9cK\x94\xe0m\x12\xbb\x95J\xa8\x1f\x0e^\xd5@\x0ei\x89\xfa\xad\x82,\xe8\xe1\xd7Ep\xa3\ue994S\x9dZ\x949\xae\x1dh\x97&\x85\xa467[#j\x18NLM|\x99\xeecjCs3\x83T*D\"lS\x16\xc5\x01S\xa3\xfdo\xd3,p\v\x1cD\x99Pøf\x17S\xeai\xf5հ8\x935֗z\x83\"x\x1e\xd9\\R\xde1=\xf4\x1c{\xdfA:\xaf\xf3d%\f|w\xaeʸnX\x9a\xae\x97\x1b3\x9e)\x848\xa2\x84\n\x85\xfb\xf5j\xe8/\x1de^\xb9T\xb9Jy\xbe\xf2\xf7 \xda\x03\xd2\"=ɍ\xf9\xeb\xe4\x930^\xbeD\xbeA\xfe\x023w$\xaf%\xda\xc80JR\x17\xceb\b\x02\x18\xd3=d\xf7\x01\xe1\f\xf6\xcaH\x92Jv2\xb8|\xc4\xdeq\xd8\xed\xb5:b;>\xce\xd3Q\fb\x01\xcd\x1ai\xb7\xe6H\xacÕsN`\x16K\x13\x17\v\x98\\\xda\xc4\x10F\x1eV\xc7Ծ|I\x9a\xa8(\x8f\xc6\xe5\ry\xcdv\u007fy<\x91=\x8a\xf9ؐ\xcb\xc1\x17\x12L\x89Z\xe9\x8a\x18\xfcp\x8cs/\u007f\xd5\xd5ڥ\xa0\x1ap\xaf~\xdb/e\x1f\xcf<\x90\x13\x04\xe1D\xb8-\xa4\x17\x87Si\xc4G\xd8\fa2\x9a\x93\xe3h\xb4\bN\xa0`\xc8\xc6$\xe7\xda\xd0'\xd18\x06\nA\xb3\xc2j\x18\xf0\xd0\xfb\x85\xab3\x17F\xa7-t\x82\x90\x16R\xa8\xc1\xe3U5U5\xa9\xe6:\xaap,\x92\xce\xceϤ0(5\xc3f\x92\xc4U\xc2^\xc2\u007fU#\x9aj\x98\xf0\xe8a\x04\xf9\x86\x05\xedC\u007f\vMx\xfe\u007ft\xff\xfd\xfb\xc1\xcaqvC\xbfg;\xcc\xfd\a)I\x89Z\xd9Q<\"p\x9e\xefH\xd1!\xa6C\xecG,\xe8\x8e\xdc\x17HǁD\xb4*\x8cQ\u0530\\\ri&\xb0\xc6\x03Ā\xb6\x89\xa9\xb4\xba\xce,\xaaai&\xc8P\x18\u0086\xe6I\xa2\x0e$#\xf6\\8\x8c\x18\x1a\xd3\xd9D\ue0e1\vH\x84\xaa\x83L\x11XíEpj\x94\xd9\xd7S]\b\x9d\x1e\xa16U\x138\u007f\xaa\xf3\x18\xa7\xae\xd0\xfd\xf2\x84a2\xe1\xb8U\xae[\xc2\x10\xa6\xca\x1b\xc1\xeb0\u007f\x15\xc4\xc2\xd2&\xa8\xa8\xc87/k\x152\x8b\x82hɢ\xf6\x91\xfas\x10C\x86??\xbfX\xe1Z\x1a\xf4\x9a\xef\xbaE\xfa\x009N\x82/=-p\x01\x02\x84\xbf\a# \x80\x1eE\x96;-\xb4\brX\xc0ag{\xa2\x01\xf1/50\xb7@w\xcb|\xa5\x01\xfa\x84\xda\xd2\xf9;H\xcf\v\xfb\u007f\x93\x83O\x85\x13\x159Q\x15\x9an2\x97\f\x99\xa4\xe4\xf8\x88\xe5v\xf2)\x1a\xd5\xc2r\x97n\xbdQ\xebV*ӌ\\\xc2A\xf6\xea \xca,\x8335LB?\xf0Akq\x86\x8f\x15\x9f\xc2]\xd8k@%\t\x94\x9e\f\xb6\xc2>\xa8p<\xa6\xe9 \xd3y\x18M&\xa0\xb7b\xd8Ht\xednM*\xb3DU\x83d2\"O\x85\xf5\x98m=ʦ\xca\xe5\x8eJ\xeecӕ\xad\xdbAx\x1bK\aO\x9b.[\xa9k\x1cs-\x90ۓ\x9c\xfd\xc1ٯ\x90߁{<\x99\xe3\xacHf\v0M\xa4#\x83\b\x1f\x92\xd0:t\x93Eʶ\x00\x99\xbc\x96\xe8&\x88TM(gu\xec\xdf$\xba\xfc\x8e7\xe8Dɔ\f\xfa\xd7_\x93σ_\u007f\x93r\x9f\xf2\xa4\xf2%叔?S\xfeF\xf9W\xe5\xc7 /\x1bd\x19\xa4\xc8\x11r\x82\xdc\x02W\xf7A\xf2[\xe4\xf7\xc8\x1f\x92oK\xec@.&p\xea\x14c\x02\xeb$w\x96\xf3D\xb6\xf1ŭH:\x98uM\x16\xeag2\x14+S\xc01\x8b\x95\x91\x9c\x1ef\x98\xe2\x9e\xf0\x87P\x8eH\x803L\x93\xe5\xa1,+\xeaʔ\xefl(\xf3\xc00\x93,/\fF\xfd\x88\xb4\x14X}\x84\xed!Ȋ\x00\x93\x9e\x8f\x93\xe7R\x99S\xee\xd2\x04+\x9bЛ\xc0\t^\x04GI\x13p\xab\xb0\xe0ݥݸ\x99;\xf8\x98R\xd7\x05\x89\x86Sd\xa9\xe8\xf7\xf2\x14|\xd9.\xb8\rK\xa3>|\x1b\xad\xc1ٴ\xe0\xb852\x90F?\xb8F\xf1\xb8\x06*\x1bq\xac\xa1B$\xee4\xeb\xaf,'\xbb\b\xb48B\x9c-\x99e\x81ij\x19B\xb6dȊ\xc3$~\x81\xe8\b\x04Z\x02\x9ffy\t\x93\rѕ\x81\x1d\xe2\x1a\x8b\xc7h\x11\xcb5\xb9'\\2\xde\x1b\x82X\xfdt\x00&\xc5\x18\xa9\x98'.\x959\xf4\xb2ڪB\x13\xa4\xde\xc5_\x82s\xd2p\xa6o\x9d\x81\x93\x98&\xbc\x93\xe5]\x8d\xe2Y\xf7kd\b\x82\xc4\xd4\xf9\xd6\t)u\x19\xa6\x8f0s\xa1L\xc1\x00\x17\xa4\xe8Z\xba\x90\x93\xa3\x946\x98a\x86V\xaaY\xd5\xf6-5\x11x\xae\x1aQLp\xd0\xc1\x1c\v\xd0,\x10[\u007fYY1\xd4\x10D*A\x18m\x8c*\x82\xf1\xc0nw\xd5x\x06\xb45\bjK4}#\xf0\x86\xbc\xe6\x17J$\bZ\xc9\xfcP\x84s\x1a\x15\xa2\xe1P\xc37)V\x1b\xebB\xab\x1c\xac\xef\xf3\x11\xbf\b\xe9\xeb\x13\x11b&S9\xd4\\\x84<\xd3ȟAGO\xab`Ph,\xbaZ\xe0\xebX\x99Hw\x10\x0e\xaa\xc8E+\b~8\xb0\xb3I7!\x97kD8\x04\xecc\xb0)h\xcaA\xbbc\x88\xaf\"\xbe\xafUl\x18\xfb\xad\xc8\xf8\x8c\x9a\"\xc0\\\xa0\xd24:\x15k\xc4B\xc8\x06\xf4F\x98S\xd7)\x97huU\xd49\"p\x02t̘ \x8e\x05\xdaȚ$\b@\xc1\xddp\xc2\xe7\xf4\xf3pa*\xc6b\xc0T\xc2\xff\x84\xb5a\xe3L2\x01-\xf9\xa6\xf7\xfal\x95V\x16\xaf\x02\u007f\xa2\xed\x81I\x03\x0f\x04\x9ah\xb431QJ\xd0ES]\x13<\x17ˠ\xa2\f\xee\x9fiS\xcfS\x93`>\xc5\ty4\x876<#\xb0\xc0\fT\x91\xce)Ӽ \x14S\xaf\xec%\x16uMn\xbb\x84\xa2/\xf1\x90\xdeL\x88\xe4F\xb4<\x86\xea\x17k\xceN\xfa+v\x9c\xaa\\3\xa8w\xd0aOO\x16c\xd5\x15\xbcT\x8d\vqEx]\xb5\xb4qr\xd9qmp\x1ee\xbd\x9e!@\xb4\x80\xf8\x9fh\x9b\x85\xb0d\x18u8Y\xb0\xb3R?\x9a\x86\x1b\xaf\n\r\xae\xef\x11\n\xf6\x12\x11\xbe\x951\xa6\xbb\xa0fA\n\x85\f\xe53\xd8s\xc4nh\b^\xadQ]歁\x89\x19\xec\x12\xa9\x1b\x9b\x9eC\xfcŠ\x04v*K\b\x88]N%\x1d\x97a\xabDw|\x18\xf5h\x9d\xaaQ\xea@\a\x14Ҭ\xd3\x04\xe7\x89\xc9\x1b)Su\x93 ʟ\xe0\xcc\xea4\"\xd5\xc0\x94\x04r\xc2N0r\xacO\xd3Eh\xa9l\xb68XrF\xdd%eMB\xd2i\xf0\xe3З\xedp$\xee,6\xc0\xae3\x04t9\xe8\x8aqy\xc8\xc0\xc9Ȩ\x950G\x80w\xcb8\x87{ޤĘx\xb6\xcd\xcc\xc0\x9a\x1d\xe6lqX\xff\x12K\xa3\x06nB^l\xbe(\xd91s\x92\xc5\x1c\xeb\xb7N\xc6y?\xb0\x1br\xc2\xfd`\x06ܡf8_m\xdeT\uf5ab\xa6\a\x86!\x0f̉h\xba\xd2,\x15\x11\u0091!\x16(\f\x81Ƿ6oz\xf3\x9bKI\xdcm4\xea\x95b\x05Ĉih\xba\x16&\xcdF\x0f\xd9FU\xa1\x83\u007fS\x8ag\x9fm\xd3W\xb6\xa3\xe4\xcfB\x01\xf8\xff|\xae\xe7\x99\xfd\x9f\xff\x8f\x9f\xf3\xb3\x19\x1a\xfe\xa3\xa7\x8f5vg\xbf\x00\xbe\xc2'\x94\x82\xb2\xa0\xecW\xae\x955'/F\xd4u\xd4f\x18=\x00E\xb1\x8c\xbc\xedy\x14A\xea\xf8^\xba\x04*,F{\x12\x8b\x9c\x87]X\x9b\xe5\x9c\x02\x18T\x1aa\xee\xcb:I\xdbyZMW\xa6\xa9w1\xb1}$\xe3LB\xf6ʼ_\x83\x8e\x14}\x89~\vV\xf3hsm\xe9\x92\xc5.3t\xb2\xb4k_\x9fL2Q-$\xe5i\xf2\xf2\x1a%\x8b\x05\xcf\xd2\xc3\"\\\xf3\xfc\x06x\x88[\xff\x97\xc5\x16<\xbdKI\x02\xd6 ](\xc1V\x12\x14ɽQ\xa5\x12Y\xda\x066\x94`+\xd3\xd4I?'\x8c]\x17\xba'_t\xa1\x10\x97\xa9\xa4n\x1d\xb2\x1a\xcdB\xa1\xb9\xb3\xbbk/\x8c_f\x18`\xd4\xd0\xd9\x16˺\x95\xb8T\xf9\xc1\xd2h\xff\xa0H-\xa3\x18\x18\x96\xd7[>43\xf5*\xcb[\xb2̹]s\x9dtiu\xff\xa0\f\x1b\v!\x99\xacv+tm\x0f%\x19\xd1{\x16N\xf4\xb2\xa2h\xe7\x05G\xb0˰\x1c.f\x1b\x90|7ɓ{\x16eR=\xce\n\x90\xb7\x9c\x973\xf5-azz\x94h\xa6o\x84\xe9\x9a9\x01\xbe\xb7\xbe4\x85$\xbd\x1d{\xae1\xdeI\xf6\t\xb2`\x05\x16/E?o\x04\xb6\xc8ҙ\x8b,b[5sc\xa7Y5\x1d\x1anʜ\xab?%\x0f\x82\x9dZW\x94(\xc9\x11\x95\xbc\x1cq\x0e:k\x9e<\ag*\x13H\xdevyz0\x05\x15p\xf8\x1a\x8fE\x85\xf5\xf0\xee\xa9\xc6d7hf\x8dir\xc9\x05/n\xa8Y4\bo\xbf/\x1c\xc6\x19M\xdep\xd1\xcc\xccb\x9b\x94\xb3\xc9tFbJ\b\xb0+\xff\x85\xfc\x96r\xb9r\xb5r\x9dr\xaf\xf2R\xe5U\xe0\xa1\xfe\x94\xf2F\x8c\x1f匏\xf0j\x8a\x1e\x86\xf3{\x9d\xa5\xe6R\x17\u007fx\xb42\xe8\xf5\xc1\xa3\x19\x8c0\xa1$\x86\xdb\xd5\xeb\xc7\xe9R\\E\x8c\x9dAo\xb8\xd4\x1b\xf4\a\xbdu\xb2$\xb7\xf7\xb2\xdeR\x1a\xf7\xe3\xa5^\x1b鲠\xcd\r\x92\f\xbaK\x9d%h\xb1\a\x9fkti\xb0H\x82\r\xda\xf5\x886\x80\xed#\xf8\x9a\xe4\x88\xd4#\xf8N~H\xd4\xebԧƱ\xdd\xdf\xc2\x12Fr\x03\xe8\xa3S\xb8p\x04\xdfNQ\r\xd6\x10\xb2\xf5\xd2\xcb.;\xa27\x17&\x16\xaf\xc5Ջ\xcd'_\xb4\xebȵW\x10}\xfe\xa1'\x16\x9a\x8bӰ\xf5\xd8e\xcdEr\x11!w\xa9lp\x9bF_H\xc8\v\xe1\xe0C\xe3\x88\xf8H\xfe\xc9\u007f_^\xb8m{%\xa5r\xe5\x8d\v\x8b\x8bn\\\xfeb\\\xfa?\xaf]\x19o\xfbF9\xde\xfa\xa2\xba\xaf\xb90XZ\xba\xa6t\xf8\xda?\xbe\xa6\x1c]S\xbejaa\xe1\x9d\v\xd7De\x85\x9f\xab\xb1,*m\x90\x97G\x95\x1b\xe1.+m\xcc\tm.\xcaZ\xd8q\x02G=\xa7\xd2k\x9d\x97\xc9!\xc6˝\xed\x14\x8fq\xcaGN\xc7\xf9\xccg\x9e\xf6\xf1\xef\xe2{\x9d\x9c\xef\x1e\xb4O\x85\xc8\xc45\xd08>\x03\x059\xc1,\x15\x15e\x03t\xfcQ\xb0\x02A\xfe3u\x1eq%\xd5/0V\xaf\xe7\xaf\x05\xc6\xde\xdbkn\xfdys\xb1\xd7$\xd5\xe6\xe2\xfa\xf5?u\xea\x92]\x0eX\x8e\x82\x9b\v;\xfc\xe6\x0f.`dnFU\xe5\ac\x17\xe0\xdf\x1a\xb4F(,\xeeX\x83\xc6\xf3\xff\x16n\xb8\xfa\x99\x86z\xbf0\xbc\xe4\x92\xe1\xd2!\x9d\x81\x9d\x88\x19\xf2je.\xecJ٭p\x90}/\x82\x9e9\xa3\\(k2\xe3\f3\x9c\x06m\xa4N\xc8\v\xde;\x98-\x95 \xf6\x1e\xef\xe6)<\x19&N#\b\tF-\ar\xc2\xcfU;\b\x83\xd0\xc7\xdc\xefK\xca\xf6\\\xa1H\xbe\xe3Y\x95\xc5J\xa9\xd4\xed\x16\x93\xda\xdaL{U/\x15\xb6\xbey\xf1L\xab3UH\x1a8\xbdn\x81\xfe\x9b\xbf\xb8@^\xf8\x87\xb3!\b\xf2\xb8\xdb4\xbd\x8bᘋ}\xd7\xf5\xb3\x8bE7\x0eՏή-\xb4.\xbe\x98|dj(\x84}Ф,%*\x1a\xd3\xd4^y\xf8\x1e\xcb\xca\xd3\xf6\xe9\xd9ϒϐ\xa7\xe0:\"d\x1f\x13AWD\xdd`\x14\x059\xe7E\x90\x91\xcfl>\xf6n\xb2\xf9'\x8d\x8d\xeb\xaf\xdfh\x90ͳʤr\xf6\xdak\xcf*m\xa2\x9cٺV9;yV\x19\x8d\x88\x02\x1f\xe18oj\x13\xdaÌڽ\xca\xfd\x98g\xaa\xf6A\x17H.:\x96`Jv\xea\x12L\xc7\x16Mp\xf5p\xcec\x91̠@\xcfZMɑ,Ɵ#I08\u0090\x9e\xec\x1e9\xb3X\x8e\x88\x95\a\xfbr\xf2\xe5\x1c\xa4\xf6ŘB\xa1\xcaP\x01\xbc\xa9`\x83\xaa\xaaV\x00\xb3Cx\xa6A$00SUf0\x9diL\x98%S{\xd3#\xbe\xff\x88?u\xcc\xf7\x8f\xf9!\t=*t\xbd\xe69\x87o=\xecx5D\xef\xf2B\"4\xc3\xf3=o\xf6\xd0\xecޓ\x9e\xe7\xfb\xba\xf6Uj\xe9\xbaJ\xecP\xd3\x17\x1aN\x1a\xa5y\x1a\bN!\x06\x9cp\xcb\xf6\xf8\x1e#\xe2\xaeA\x19\xfbR\xa3\xb1\xd9hڂ\x12'\xbc;\xea4\xe1\x1dG\xef:\xddM8\xfa\x1d2\x94\x8b\xc1Z\xb9\x94 \xfd\xac\xcbp\xaage\x84\xb1\xe2\xb4ߋe\x96hw\xb9?\xac\xb1L\x06\xa19\xc2Āш\x91\xe8QJf\xd2J5y\xcb̭\xb3\xf5\xce\xe4\u0383\awNv\xff\xce4\xe7\x9e?g\x9a\xbd\x87\xdfP,\xae\u007fb\xbdP\x9a\x9b\x13\xebW\xddt\xe5\x06\x9f\x9b\xfb\x86\xd1\xda)Ԝ\xd0\x1b̞ϫ\xa2\x94V,K\x9d\x84\xf1\xa6\xc9\x19\\\xf2+`\x17\xae\x80\xcf\xcb;\x1d\xf5Pb\x98\xf1\x17j\xb5\x92\xf9\x9e\xf9\x83\xed \x98\xbc`\xfe=fC\xe3Y\xc6\xf9|Fā\x03\x82\x1c\xa8\xdcR!;\xaf\xe8\x90Ε\xbb`\xf13S>\x01ǎ\x83\v\xcb\xf8\x00ơ\x9d\x04\xe0\xa03\\\xa13\xf1\nUs\x1c\x0e\x1e\xf4\x18\xff\xf8\xf3Ч~[٥\xbc@QRL{Ź(\x89ޙgtb6,\f\x19X3<7~`,\xc2\x06\xf8\x9a3eH\x93g\x84k\xa5.FT\xe8\xe5\xc1\nH\xd4m\xde\x129\xc9)sfr\xcd\xfa\xdfcc\xdd\xd4=\x87\xb2Eƞ\xa4\xec\x13\f\xff\x96\x93\x82\x96\xf1j)*\xf4\xa2\xe8I\xf8\x8b\xe3'\x1f\xec\xcd\xdd\xc83pc\x8b\xad\x11\xb8\xc7Ű܌禮\xe2\x8c\x15T\xa2\x16+\xbdtz\xa1\xb3\xa6\xb5\x11]\x1e97\xe8\v\xa8\xfa5\x06\xef\xf0Ǿ\xa6\x92\x9a\xee\xb8_\xe5\xfc\xab\xe5\xba]\xb1\xb2\xaf\xa5\xd6\xed\x16\xfc\xa5_ˬۿT\x9bد\xa9qPE@~\x90\xd6f!\xae\xd47\x19S#\xafd\x1a\x9c\x17r5\xdf\xdbѯ\xcf/-\x8d\xc8_\xb2\xe9\x8a\xcb\xdc\xe8Ҷ\x97\xf9\x8c\b+\xfdi\xeb\x01\xb0<\x10\x17\xefX\xc1\xd1La\xa4\xd6;\xcc\xd7Z2叫Ǫ\xda\xc4ncw\xbbs\x9bj-š\x91\xc5\xedR\xc12\x99\x9dX\xe0|<\xfe\x82\x17<~\xef}Q\x89g\xc3J\xa7k\xa8~\xc1\xc3rE:%\x84Θ\xe3OZ\x0e\x98O\x82\x19\xa0\xa3\x82I\x9b\xd4Z\x82?\x98\x15y\x12ͨ\xact\xabʹO5\xdbTP&\x82|x\vyR\xb2\xff^\xa2\\\xa5\x9cTnV\xee\x02\x8f\xee\xd5\xca\xeb\x94G\x95\xff\xa4<\xa6\xfc\x92\xf2\x04ܡ\x9d\xa4\x86\xa5\xafj\x9a\xc1@\xed\xae\xack\xa3&N\x18.\xa8ݚ\x9a\xc5\v\x84\xe4\xf1\x82\xc1\x18\xe0M\xddF\xd7~\xceg\xfa\xff\xd3\xfa\xed<\x8d\xe1\xf21\xca\xc3 \x8bb\x9bS*\xcc \xae\x05\x94\x1bnX\xf0\xa8\xc6-'2\xa9\x16\x85%\x9b\x801\xd7J\x98U\x8a\x030dɎ\xc6\xde\xdf\xdfۘ\xda{\xf2\xe4ީ\xad\xbf\xf2\v\xfe\xb3\xff\x8e\xfdo\xad\x01ͳ\xfe\xfeua\\\xfa^\xf2\tB\x85\x01\xe7\x12\x12ͳl\xce\x04\xd1|\xcbG\xca\x06\xd56\x1dC\xc0c\xd73_u&J)%\xaa\x9fN\x15\x99\xbek\xebG\x97\x0ez\xbd\xc1\xa5{\xf7.-\xed\xfd\xb8l\xf4\xf2\xcc\xf7\xb3 \u007f\xbf\xff\u007fk\xcd\xfen\xd0h\xf8S\xf0\xa0\xcds\xba\xc0\x00m\x809Z%\xa5\xa5,*;\x94=\xc8=\x9f\xe5\xb5(\x19\xe9\x0fZ\xa0ܹ\x18%\xdd,g\x14\x1f\x81\x8a\bj\f\x99q\x93V\xfe\xca0\xfb\xb8\x89\xec\xe0H\x906\xe8\x0eF\xdd\x1c\x00JVNaD\v|\xd2\x1f\xa2¨\u05f6\xfe\xf1\xcb\xefxǩ\x17N\x1fܑ\x10\xdd\u007fE\xf6\x9a\x89\xd5\xe9\xf4\x91\x03.\xa6Q\xec/%\xc9\x01\xb2\u007f\xbf몓\xae%,\xcf7L[\xa7QX\fVA\x03\xe9[\x8f4\xbe\xf6\x8f\x1b\xb5\xbf\xf4\xf5\x05\xcbԝ\x95\xd1\x12\xb9\xd8]\xdcy\xe1\xa1\xdeD\xad6\xf1\xd7V\xb1T\xf4n\xa9ٵ\x80\x97\xf8Ue\xdb\xce*\xa6iԊsc\xae\xec\xa7\xe9*\xe8(S\xe9+w\"\x02G\xce\b\x86\xa8GXB'\xf3p$\x86\xd9\x00i?;b!\xe7?\xc8s@\xf3\x00>\xf4t\xba\x8b\xaek\xfd\x11&\xe4c\xc5&\xd6D\xc0m\x92\xc5\x11`\xd2\xcf\x12\x81IV\x13\xcd\x05Pu\x88\x93\xd1%\xaf\x19V]JX:\xdd\xf8\\'\xe6\x1a\xf1`p\xb2\x85\x93\x97\xae\xd2\xc80\xc8\xdc\x0e30\v\x9c\a`\xba~F\a\x85\xa4V\xa1\x03\x14\xb3\x88\xf3\x8a\xa5iW\xe9\x16!\x95\x1b\x93z\x80$|p-Yj\xd9[O;\xa1\xa1e5X\xb7\xd5\xd9\xc9\x17\x9f\xa7\xb3\xe8$a\xe1\x9c\xfb\x9b\x03\xcf\x03\xdf\xc0\x99Z\xb3\xaeٹ\xd2\x0e,!\xe0y\\Xw\";\x89Tr\xd4\xf2\x84\xeae\x1e\xa6\x84D\xbaA\fM\x8d\x0e\x87\xa6\x01\r}3\x82\xaeg8\x8e\xa6~34\xb7m\x85\xdf\x03\xff\xe6\xe3p\xbf\xdc\xf1\xdd\xca1\fH\xd0\x0f\xa8r\xc7E\x17݁\xaf-\xe5ďa\xe9g\xef\xbcs\xeb5\xe4\xbb[c,r\xe4\xa2\xffu\xf0\x01B\xa5\xa9\f\xf2|]\xe12\x89\xdc&u\x13\xcb\x13js\xa0F\x1a\xe5i\x16\xc3Q^\x02\xdc\x1d\xd6\b\xb9w\xed\xa8H\xbaSn\xe1`\xe3\xf2W\\u\xf9\xe5\xee\xee\xf5\xc5;\x0f\x1f\xb9kqc\xf3\x81\xbd\xf3\x93;JZRn\x97\xca\xed\xbd\x1drf\xe3\xea\xcb\xef2\x8a\xb3\x95\x8d\x99;\xaf8\xf6\xea\xadp\xc7e7O\x1d\xb9\xff\xfe#S7_\xb6\x83\xd4\xe7\xf6L\x0e\xf6\x94\xc3r9\xac\xdaFy\x17\xca|\xb0W\u0382\xbd\xf2\x9a1>%\xd6\xfde\xa2%\x12\xd1m\x89E\x8a\xc4\xde\x03,\xa1\x18@\xcf\x1f\xd5\xe9r\x92y`\xf2I\x028,\x92\x8b\xf3l\xad\xa4\x83\xf6\x8aĔ\x1e\xa8\xd0uP\x16\x91}\x89^3\xe2ԉc\xc4\xee2\x12\xf95q\xe5W3\x99\x8fK\x01\x89\x1c\xc3\x15_\f\x82\x93d\xf5\xb1\xd5\xe9\xd5 \xd8h\xc0\xc2ַ\x8f\xbf\xfaĉW\x1f\xffd\x12\x1b\r\xbdP\xd0'\fB\xe3ā\xafU=I\x8c\xaaA\xe2D\xb5C\x12A\x13\x86\xbb\xe0\xf7\xfc\xeb\xc9\xea\x88̬\xc2\xd2\xc6\x04,}\xf18\x81㏏\xf9\xa5\xff\x82\x9e!\xbf\bR\xfcb\xe5\x0e\xe5\xb5\xca/*\x9fP\xfeP\xf9\x1b\xe5,(;\x9eg\xf4I\xc4\x02I\x01 y<\xfb\xbd\xe5\xa5q\x94\xb1;&\x99\x90\x19\xb6c݇\xb3s5\xbe\xc41\v\x86\x8b4\x92N\xd8 \x8fY\xc9`\x14\xcfS\xee$\n\x04\xcfq(\x92f\xb22\xc0Q\x84\x8f}$Q\xfe2\x89\xeb\xdb\xc5\xf9\x16\x99\xb1\x82G$XL\x01\xe2\x1b-\xbeng\t\x9d\u007f\x15\xb3c\xba˒\x9au\xb4\x13\xed߾\xe4e\xeev\xb4\xed\xf0\xd3pi\x98\xd5`\x10\xb0\x9eH\xf1I\xc0\n8g\x9e\xa4_k^\xe6h\x84\x9a\v\x86\x8130\xe5\xc3\xcd\xd6\xeatw\xa5\xa6:\xe0\x00\x16\x8dj\xc6ʆ\x9d\xb2J\xb1z\xb4@H\xb8QN\xa7:\xae;I\xc1\xd3slD\x12\xd1\x1e3\x8b\x04\x14\xc3\xef\xd4\xf7\x17\\\xad\x99\xb4[\xbao\t\x12\xabf\xa0\x1f\x8c\x04+;n\xff\xbd3\xc5\xd4Ԉ\x06=p\xf7>$5.5\xbbo\xb1\"\xbfY(E\xa6#\x84\xef\x04\x13Q\x14\x18\xa5\xb8\xe9\x12W\xc5'>U\"A\xd1QC\x03|\xc8\xe9\xbfe\x13\x89p\rO\xf3\x12*C\xaf\xd4v'\xdb\x15r\xad\x9a\x06\x1a\x82\x9c\x85$+\xc8\xf4\x18NUC\xe3\xff\x95TèJ@\xb1\x1b:\x88\x0fM\xbb\x95\x8cV\xe2\x15w?\x06\x94H\x1c2\xd6\\\\lk\x18\xd9!\xa0\xcd38\xa8:\xe7\a\xbaI\xd22c\x9d\x9ea\x98\xa1홾)0W\x81d\xa6\x86\x80\x14[\xef!\xad\xb2\xa7\x93\x84[.&\xc5PU5tU\xf3\xb9\x86<\xd3?rL\xa3\xe4`\x16J\x14\x1bF\xb5\x82\xe1\x94X\x88\xdb\xfc$\xd58\xa8,\xb0k}\x17\x83-\x16\x01\xb3P'H\xa5\xa2\x12\xcd!8Mbi\xe0\"\xf3\xd7S\x1d\x19\x9e\x11Őp\x02&\xde7\xc0\xf5\xa6\xc2f\x82\x12\x17\x93/\xf0\xfa\x10S\xe1\r\xd0^\x9c\xa2\"\x04\x03]әN\xb8\xc4\xc8\xff\x97\xb3\u007f\x0ev\xe0\xe3J\xa6L\x81\xad\xac\xb4]\xe6с\x04\xfc\xf0\x10\xef\v\x93`\xe3.\xa6냻\xd4\rr\xf83\xaeɹ\xe1\r\x8a\xd08\b\xf1\x95p\xba\x8bY\xa6\x01\xee\xf8;\x1df\x16\xeb\xa7\xdb\xdd\x03\xbb\x93\xf4;\xa1n\x9d\x1c^\xb4kq\xf7\xd6\a\x1aA\xa0\x97\f\xe3u7\xc0\x0e\xa5\xfa\u0091\x8bT\xc9\xd5\xf4\xbc\xe1P\xb5\x99a\xb7V\x1dU\xcfD\x18\\\xf9\xd3u\x8d\xb9\xce\xd6\a\xaa\xe4\xddf1Y\xdb1\x9a\xb9\xc3hY\xdcf\xea\xe2\xb0%\xf7\r\x96<\xc9k\xff\xe3\xb3\u007fB\xfe\x0f\xf2>%\x80\xb3\xaf\xc2\xf9\xcfˈ\f\xc8\xe7N\x97u\x86\xa3\xf60\xf5\xe4\xa4ᰣe#\xb8\x82\b\xba}7\x02\xd17\\$\x82\xbc3\xb0\xed\xbfi\xe9-\xed6\xe6X\xc4wS\xdd5\u007f\xf37\x02\xaan\xfd\xf7\xc7n\xf8\x17U\xbb\x9f\xa8\x96n\xd0\a.\x87\x1b\x1bq\xe3\x05'\xc8\x11Rw\xfe\xf22G\xf5ɵnB\xe7i\x16L,\xd5\xfd)U\x1d\xfd\xe0;\x19\xe1[\x8fS\xa3\x10%\xea\xefl\xfd\x0f\xb03wsf|M\xfa\xc5g\xff\xf5\xec\u007f#_ \x1f\x00\xfdߖX\xde\x18\x89\xc7,\x9eD\"\xe5v\xb7ћ\xc0\x0f\xe9/\xd3m\xe8\x1a\xb8\xe7\xb2\x0eM\x8at\x89W\x04f\xf9\n\x06\x92\xc6y>\xe0\xbbm\xe7U\xa0\x88'\x9f\xf0<#K\x1f\xbf}0\x1c\f\x1b\xe9\xed\xa5\xa9\xa9\xa9\x87\xe0\x12unho\b\xeba;\xadp\xd7哅\xb7\xdd΄\x15\xb9\xfdմ^O\uf16d\x9a\xc1u\xe4\xa8\xfc\xe1\xc6B\xa5\xe4Nw|\xcf\xf3;7\xa7\x8d\xe9rok\xcb\x0el\x0e\xdb?\x18փ\xa5jq8*V\x9di\xd3\x05\x93\x8a\x19\x86ZO`\xb7G\xb9aAo\xd7Up\xf2\xfe=W\xfc\xe2O`\x1f\x00\xf3\x1d\xeb\x85\xe5l:|f\xcf,\xef&\xb0\x8d܀d89%\xce2\xf1\x8dո\xfas\xa6\x1bW\x9f\x18\u007f\xc2*\xf2\xf8\xf6\x0eș\xf3+\x86O\xaa\xb1k\xfe\\5\xf6ǟ\xab\xb0\xea9\xbclW\x9e\xcf\xff\x86 \xa7B\"\xef\xf4\x97\x05B\xb0ʯ\xf9l\xd8p\xfb+\x1f\xfb\x1f\x9ds+\xc6B\x18\x8f\xc2܉\xfcs\f^\xfd>\xd5x%x\xa6\xccU\x8d5\xdf`Tw\x06\x8e\xcejX\xb2DIA5Y\x97i\xb4J\x98\xc5t\xa3\xe2 .J\vƦ^\x8f\x04e\xb4(\x98\xb6p\r\xa7u\xa6\xab{\f5\x18\xcf6\xb8p\xeb\xeb \x90\xc4A\x86\x90Jl`\xa8{1\xfb*L6\xaa\xaa\xe0\xe1\xc1Y_SYY\xa8\xda\x01*\xf4\xcey\x18\xff\x1eh\xdeM\xe8m\x92[K{.\x9eX\x9e*ْ6$N\xf1\xd5\xf3\x9c\xc6\x0e\x12\x99\x0fǰ\x86\xcf\xf0\x1d\x0eG\x9dT\xa2\xfb\xe6\xb5:\x9d1\xbcR\xbeD6\x9f\x1a\x1c><\xc0\xb7\x8f\x81$\xd2u\xb0\xb9+\x93\xd4\x01\x0f륚aءO.\xa7Dӄn\x9af\xa3Uo\xfa\xae\xa7OY\xa4O\\\xf7Z\xdb4\x1d\xc74\xed\xed\xcfF\xde\x10\xbe\xfd\x01\xe3\x9a\x15\xfd\xf4\t\xddd\a\x99\xca\xc2@ \x01\x9ce\xe1-n\xb7\x9b]\xb8\v7\xfb\x9e\x1bh\xb6\x1d[\xd6Km;\xb2\xac1\xef\xe8\xf7\xa5\xcd\xdd\xc6z\xaa\xb6莆H\xa9\xc5\xd9\xf28\xd9j\x91h\xa3E2f.@1\xb7NXg@\x8a\xbf[\xf9\xf4TI\xb34\u007f\xef\xfe{\xf7\xbe\xf5\xe6\x03;3R\xef\x99ߺn\xb2زM\xb7ל\xff\x93\xf8u\xaf\xe8|hǍCK\x04]\x1f\\\x8d\xbd\xf7\xed\xbb\xf9\xad\xad#m\xa7Y.\x9b\xd9\xc4t\xbb\xa7\xab\xce\xe6\xe5\xb7o=\xb4~0\xe7\xfcz\x8a\xee\x01\x1b\xad\xa5\xecT\x0e(G\xc6\x11cI\xa0\xdb\xc5\xf8Zw]\x05U\x9b\x03\x1b\xacS\x84g`\xe7P&R\xd1C\x9c'\x9c\x8b\xe9c&{w\f\v\x9aÃJ*\xa0왵\xe4;s\v\vs\xa3\xb7\uf7b8h}\xcaB\xc6iK\rKV\xa1\xae\xd5\xc2К\xda8<\xb1\xfe\xb6\xd7_\xffS?\xf5\x99\u05ed8UJ\xca\xc5؏g\xe7\xc8]nL\x9a\xadxm\xa2E\\\xb0\xa1ޜ\u007f%WT\x8e\\v\xa42Yp\x1a\x15n\xc2@/\x97[~\xb4\xbc~\xb0^\xdc\x19\x04\xc2\xe4պS\xd8\xfa\xe8\xd5/\xbf\xfa\xea݃\xe9\xb9\x11Hq\xc7\xf2#\xeb\x9e\xc8M\xc3 \x81\xa6&\xe4\xa7\x13\xaaj\x98\x9c[\xf9\\>\xc6\xf23㑠m!\x89$<\xd2\xc7Ij^'\xe3Q\xf5\x8eӇ\xd2\xd8}\xccl\x9ao?q\xe5\x15\x87\xd3й{<6\xb6\xfe\xc7K\b\x99\n\x9et\x9c_\xbb\xe9\xa6i\x0f!\x00\xc1\xcbR\xce~\x17\xfa\xffK\xff\x97\x18\x8f\n\xd2&h#I>%)\x14\xb6?\x05~\x8e\x12$9\xd8 95\xd5\x06A\x9a*\xe83\xf8-\x83\x17\xae '\x87\x87.9\xab,4G'\x1aA\xbbeT\xddՂQ\xae\xaa\x19_MXZ\x8d\x93\xb5\n)\xceֵ\xf2ĴޚM\x16\xdcW^P\x18\xcd\xcfV\xfa\xe9\xee\xc1\x91`\xdf\xde㤹Н\xd3*\xcdZ5\xadd\xbbZakoX\b\x97*^\xa5\xe14a@t\x8c\xd4X\xb4\xfd{|\xfd\xd4[.\x9a\xbfbc\u07b9\xec|\xce_ĵQ4q~\x12&\xdfF\xa1|\xaa\xf6օ\xb5\xfd7\xde\xf8\xfa\x1b\x1b\x9fz\xc1\xe1\x8bn\xbb\x88\xd4\xdf\u07b9\xe9\x8d7\xddtp4W\xbf\b}\xaf\x1c_\xfc\xec\xd9?&\x9f\x03\xbf\xf6b̉l\xa7\xfc\x99\xe0\xab\xc8\xebj\xf0\xb6\xe2\x18\xed\xac\xd3\r\xd2\x1d/\x12X\xec`\x94-E\xacq\x04\x9b\xa8Q\xc4\xe8\xae!\xd1@\x86\x9fH\xb7A>\xa3\xb9\uef2f:\xae_R\xfd\x93>\x03S\xd6+i\xfe\n\b?L7\xb2\xc4|m\x00ˌ\xa9\xb69\xef\xcb5^Y\xf5\xaf\xf3\xe08\xe1:&\xf5\xe7ݲ\xe1\xb8\v\xf5y3\xf4\xfe\xedd\xfd\xba\x8f\xc0vo\x11\x1a\xd1\xc9\xf9\xbb\x05\xbf\x90\xf3ka\xf5\x88s\xde\xe5\xfc\x03p\xd8{\x85&\xc7\xf6Y\x19\x17\x11JCYV\xd6\xcf\xc3\xdd\x06=&r\x02\xedE2ȆٸƑKf\x85m~\xc3\ued8e\x96\x92\xa0\xbfL\xde8\xd9o\xb5\xfa\xc7\xf6-\xdeɖ&\xdcJ걝7d\xd5\v\xc8\xde\xc5\xfa\xa0\xf6\x8f\x93e.J\x91\xefu\"5\xe1a\xbb\xfc\x0fs\x8dx2\x9e\xaf7\xc8\x14\x1e6\xb9\xbe\xb8\xef҉93,\xba\xd9\xed]\x97\x9e^\xdc[\x1b\xfc\xfdJ\x9b\x9az\xa7\xe3\xebĠ\xcd?ژ\x8b[I}>\x1f3\x9f\x95\xbaOQ\xfe+\xe6@\xd7\xd4X֑\"\xfd\xdd\x1a\x91\x99\x90]\xc9\x1b\x85\xde*\xe2F\xc9\xf2\xd4$'\xda衦v\xc9R\x0e=\fFXg&OR\xed\x80u\x82\xb6\xf0\xcape\x00]\x10\r\xe4\xb1\xef,\x19\xa8z\xb5<\x05\x13\x8b\x95\xb1\x8c\x15cŠ!\xf3\xa9e\xac8\x86\x0e\xd9i\x0e\x90\xe6j!O\xf3M\xe5\x8cԺ\xcc}]\a\xe3H\x92a\xa4X0\xd2C@\x98\x14!\x0eP@2\xba\xccU\x84\x01\x17\xf0r,d\"\xd2,\x87a\xed\x98J\xf40\x12E\x03\\;\xa6s\"\x182ǡ\x8f\xc5%#P\x15\xfd1*YX\b\xe2\xdb\xd1\xed\x1auu\xb6]\x8d\xab\x1e\xd1}F\x82\x98\n,\x9f\x00\u007f\rAX%S\x1f\xba\x82\\V\xbcsL\x8b\xcf\xeb\xd8UMBw\x82=\x15E\xc5\xf5\x01\xaf숍\x02\xa5\xb59ۯ\xfa\x0e\xe8ἰ]\x03\x1bS \xe3\x98ư\x1a\x9d\xfd\xf0\x12;4\x10fZu\x04\xa1\xd4\x02\x13\x12\xeb\xd95Y#\xa2Q\xa3T4\x1a>smbtc^\xa0\xfa\x8c\x89P\xf9f^\xa7\x8f/f#\x9d\xac\x0e\xd71I\xdc\x1a\xc3j\x11\xa1[\xb1Ɛ\xfc\x12\x8eô\xcf\xc9Y=\x9d\x17\xa6\xbc:\xe6\xe8\x88p\x81\x1e/#\xa6\xcc]\xe5sA\xd5\xc0_\xe7\xb0\xc7\xe4\x8cnk\xd5\xc0M}߂\x93\xe6\xaa\xc3uJ\x8a\x13܄㋖\x05'G\r\u0382\"\xbc\xbb\x96Au\x89=\x84s^\u007f+\xe3\xde\n\xc9\x12\x8f\x83+1\xf2\x182\x15Q\x10\xa5\xa3n\x96\xff_$\xf06\x02\xad]\a\xf9\f\xde\xf5\xd3j\xb1\xbbz\x04\\\xf5\x90\xc6\xfb\xae[ME\"\xe2\xe3;\xdcWy\xbfv\xf4\x97\xee\xbb\xf9\xc7\xf5W\xbe9\\Z\xf8\xdc\xec\x1dv\xa2v\xaa\xb6\x00\x8d\x04\x16le\xee\x92\xfd\x9d\x82\xadn\x92ny\xb2B\x0fi\xceB\u007f\u007f\x16\x0e\xcdW\x84w<\xd09tS'\xbc\xe2\xe5\xab7\x18A\xdb*\xca2.\xe4\x9c<\xab\x1c\xa0g\xc8\r`u\xd4@\x17_\xa2\x9cPnP\xeeT\xeeWޠ|Py\x029'sL\xe2\xee\xb2DK\xea\xd6H;\xce\xc6T\xe3Y\xa7\x05}\x1fIl1\xeb?Od\xc8!'\x9a\xe8\xdc\xe5I>]D!\x911Q\x99ɐ!pL\x8eP\x96\f\xf0@d\xc4\xfd\t\xab$\xbc\t\x86\xb7d\xa8X\xe2\x8f5Gr\xc71BE\"\x13(\xce\xdf*\x01\xc20f\x8bQ\xf1\xd6\x00<\x85\xa4E\xcf\xec\xb9{_kҶO?\xda_\x18\xfc\xf8\tx{\xf4t\xbb阧\x1f]3\fˉc\xdfF\x80#\xc7\xf1\x1c\xdf\xd1=\xf6b/\xacE\xfedS\xefھo{XƷ\x03\x96=\xcf\xf6l\u05f5w0\xcd3hD=\xa3\xado\xe8+\xbaˢJ\x85E\xccջ\xfa.,i\xe2\xb2\xdc\t\x8b\x80>\xd9\x18ֵC\x83ٖ\xbf\xc4\xe7\x9a\xfeR\xa5w@#\xe4\xd0u\x96irõLWG\x02rC\x13\xdc6-W\xb0\x8bGn\x18\xba\xa3Q\x10\xd4/t\xfd\x82_\x9b\xf5\xdc\v\xcf-m즮\xbe\x0e\xed;\x86\xb1\xe1\xea\x8eFS'\x91_\xaf$\xa0\xd44\xa4\xe1\xd24\x85\x80\f\xfb\x11\xe8\xfd\x87т\x80a\x89|\x1a-P\v\xe82t\xf3\xe9\x05\xf2\xd9\xfdz\xf5\x96e\xd3\xd2?\vމ\xf8\xee\xcd\x01\x8dɛ\xbc\x90\\\xb7\xf5\xdbM\xff\xa2\x9eyۯB\x8f\xd7\xde\xd1\xd0b\xf1sZ\xa0<+\xc7l\xea\xdf{ơ\xacFo\"\xf6\xd9\xf9 .\xad\x94<\xe6Ʊ\xbb\xf50\xbe\xbf\xfd\xee\v\xb8vɭ\x97h'\xc5~\x01\u007f'9y|{\x1by\xa5\x1bo\xbd;zu\xe5\xe0\xc1\x95\x18\xb7\x8axulw?\x05:\xf1\xa9<.O\x02\xd1\x1ddI\x86\x93\xb0\x88fC>\xfd\xedo\x1e{\xed#\xa7\xafn\x1e\xbb\xea8\xa6\x9f\x9c9\xf3\xf5\xf9\x17\x1d>\xfcΝ\x83d\xb0\b\n?;\x87\xe3\x8b\xf1\xc2\xe0\xdf\xd9ԈD\xb7\a|\x9c\xe7)\x97\x8e\xb3\xc7nRnW^\x88\x91\xd7n\xbf\x8b\xa4?е\x10\x89\x11\xfap\xfe\x8eY\x15\xe3W6~m/k\xc3Q\x9f\xc3\t\xf6\x13\x818\x88c,D\xd6\xe9Np\xc1\xc6k5\xf9\xad{n\xcf\xf1O$\xff\xf6\xe2\xde\xd7?\u007f\xcb-\xb1\x1b\xbd\x81\xab72~\x17\xa57\xdfr\xfe?\xe2pv\x1ba7n\u007f\xff/\xb1C\xdanX\x84ŭ_Vmr\xb9n\xde\x1f9\xf7\vz\x15\xaci4ޣ\x82\xdf\xed\x1c\xf4\r\xdbiٖe\x1f\b\x82_Ӵ\x16\xa5\at\xfdV\xcf;`\x9a-\xdb~\x0f\x96\xd3|\xd24۶}H\xd7/\xa6[\xb7x`\x9e\x90\xfb4\xed\xed\x9e\xf7I-\xf3\x9c\xb6\xe1\xc7\xdaQǡ\x1ak\x06\x01Α\x88\xb3\xbfI_F~K\x99\x87{v\x17<\x11W\xf3\xd0.\xccg\x87\xa1\x97\x81\x91\xaeb\x91ɨ\xbb\"˽\xd1L\xc9b\xd0cÜ\x196[\x1e\x03\x11\xcb\"\x8a\x16\xac'\x92ԑK\xa7v\xb4\x82G\xcb\xe9[-#?\x13֑\xe0\x81h\xccz\xbb\x93\xd4V\x1c\xc3~\x87\xe5W\xc1\x9dN\x06MP\x00H\\\xe7\"&+\xec\xf3\x11\xa1\xba\xb2\x16\x87\x12ӧ4N(\xb1M\xc4F%\x0fن^k\xc7\t\x1c\x8bJ\x85\n#\xb4@\xc2\xeb\x88\x02ƐAI\xd3\x19y\xb4\xbd\xab\x9e\x99\xba6\x11z_\t\xa8\xda)G\xc1W<\xc3c<(\x8c\x9a:\xce\u007f\x9a\xa6%\v\xfa\xa8\xc9(\x8c_\x1dq\xce|\xca\xe2\x94\xd2B\x8c3\x9b[\x8f\x06QX\v\x19\x85#C\xdfe ^\xfdf\f?i\xa8\x88*E\r\xa6\xc3\b\xcd\xe7\xe0\xf3::Cy\x95\xf2Z\xe5Mʻ\x94\x0f(\xbfA,R\x01\v\x15;\x19X\x0eK\xb1\xc6E\xd6\xfdw\xaf\x96\x80\xdb&F?\xf15X\x81a\x017>\xfb\x89/P7\xcb\xd9H\xa4?\xe9\x05\n\a͜\x8coGO\xc7\xf6\x1aV\x90fr^e\xc0\xbb\xe7-\x9f\xbf>\x03\xb1\xce[\xa9\x1c\U000ddf08\x1d\xafA\xa2\n\xc0\xd2\x02\x19/.\xb5$:\x80\xa41\x8dEgV\xf2P\x8cz\\\xac`\x838Ɂ\x1e\tt\rL\xdcB\xe2\xb6\xd1 o\x16gr\xd0\x12\xfaE\r\xb3\xde\xc1J\x99cbv^\xb7\x9bm\xdb/V\xfd؏\xe2TX)<\x874\xb5D\x1aG^\x14T\x8a\xbe3ٴ\xf5\xf9Y\x9d\xf5\xfbt\xb4J\xf9\xce]\xdc\x18\xed2쥡\xedN-\xb8~\xb9\t\xc2=\n\x02U\r\xfc\xd8\x0e\xbcf\xd9\xf3\x16\xa6\\{\xb8d\x1b\xbbV\r\xbe\xb6\x93\xd3\xd5U\xd2?t\xcb[o\xbd\xf5\xad\x97\x1e\u007f\xe0\xf8\xf1\a^\xa9b\xd5*3\xa7ǟ\xd1\xf8\xf3K \x8c\r-\x04\x8b\xc0P)'\x86\xd0\xd0bb\xc4\xc0\xba\aC%$\xa4\x9c\x81\x1bC|f[\x9c\"1\xa7\x85\xf5 &ź\xd0uղ\xb5\xdby\xc1\x11\xa6m\xdb\bfF\xc2\xf7yBN\xf2\x17\xe38\x8b\xe2\xa0^\x0e\xbdfóړ\x168ü\xd3! H4\xb3ն\xdcz\xd3\vJ\xb50\x8e\xb286\\\a\f\x12Ƣ\xc87\x83\xa0V\xf4ݹ\xaec\xae\xae\x98\xfa\x9e\r\xa1^p\x90\x91\v/T\x0f^\xa0\x8a\x8d=\xba\xb9\xb2j\xd9\xdd9\xd7/ւ\xd0\xf2#\xf0Ԅ\x00\xfd6\x81\x97{\xcb\xdfa\xc8\xe9\xc4\xcb0_NGsQ5\xfd\xf3\x96\xd93\xcb\xd6\t\xe6\xdc\x1d%bSh\x93\xd4f,P#\aS%\t<\xac\x80\xe1\x1a\x18\x84\xbe\t\xbb\x06\xbaZ\x06\xbd\x98T\\\xd0T\x1cq\xa4\x89\x03\xe6\x12q\x98i\v\xe1sG\x9f8\x1d\xa6b\xaf\xadK[Plϻ\xfcP\xea\x9d]\xe8\xc3F\xeb,O\x1b\x93X\x11\xe3b=d\x81\x82\xbe\x03\xaa\xa8\x836\xc88\xd1t\x9d\xe4{H\xecܰ)\xa1ȑ?\n=Y$\f\x04\v\xf9i\u008cԻ\xa9a\x1b\xdc\xe4\x13\xcd\xe7c\xf5\fqC\x970\xdf9\xdd\x04\x9b\x0e64n\xf2\x13\x83E\x93\xfaҒ\x11\x86\x89\xb1o\x9f\x91\x84\xa1An }Ӊ\xcd\xd46\x1c8\xb8ݨ\xa9\x06\x18\xd1\x14g\x03\xc1\xf25\x8dZ\xa3\r\xeb\xe1\xcfN\xad\xc8\xd9\xfa\x94O\xae\xbc\x12,\xd0\xf8\xc5/\x8ek.\xf9\x10\x91\x98\xed6\xf8{\xff\n\xb2\xb4\x0f\x16\xd7i\xe5>\xe5\x8c\xf2k\xe3\xaaO\xd1r\x11I\xc9eM\x10\xac\f\x86ukAH\xc3\u007f\x17\x96\xddbf\x1d\xed\xceH\xfaZ\x91r̦\x87Q\xb5AR\xe4\xcf\\\u05fa1\u00905\xe1je!\a.\xd40\xfa\xdc\xc9d\xa178V+\xf9\x1d螫\xa1\x03\xe1;\x86\x88Ͻ\xce*\xa9\xa9ٲ,\a\xcfR\xf2鉊\xc5\x1c?\x89R7 \xa2y\xa8\r\xb7\xc4T\r\x15\xacm.\x9fU2\x99E\x86,\xcb\xee՞?\xd9Z\xb9\xb2Q0\xb3\x8a\xa8=oN\r\xe6\xa7{\xde4\xd8\xe2f0U%\xba\xba\xbf\xbeY\xe3$p\xd2 \xb4\x1fqh]\x85\x9e1\x9b\x92\xa9\xb6\n\x86\xf7\fN\xf3,rq`\x85\xf3\x9d\x17Yf\xc5\r6\xd2B\xe4\xa3\u007fL\xb4$\x00י\v\xc4\u007f\xc0\n\x1d'\xa8G\x86f\x9a~\x05\xe4\xf9\xa3\xd5W]\x9buʩcb~\xa7P3\x93Yp\x86\f\xda\x03\x8bl\x85'\xa5z\xa3٨\xd9w\xf6\xca%\x92D\xfftɝ\x05\xe1\xfb\x84\x89ț\xba&\x9c^\x9cn\xe9\x97\n\xc1\xb4K\x91\xedV\xd5\xcc k\xdd,x\x03n0]\x9d\x98Cb\xac\x95\x8e\x8a\xa2\x1c:\xfd\xae}\xce\xe1\xf7\x06\x89\xa65\x83\xa8\x90\x14\x83\n\xd7܊),O\x98n`\x1a\x14\xb3L\x8d\"\xc6\xc2l\xc7\xf0\x03SQ\x9e\x9b\xa3\xff\\\xfbI\xc3\xea\xc0\xe19\xad\x88\xf56\xd96\xad3\xcec\x93\xb7E\xa5R\xb4\xf5s\xf8N.b\xcb\xfb\n\xde\x04#qٶ\x03\xa3-\xfcī\xc1\x9bj\x87\x81`qea\xef&y\xfc\xdc\xde7G\xa5wl\x12z\x89a\xa4Ac\xc6\xf5n]\x05\xc7/pJ<\xf6\x16\u05cb\xee\xcaUG\x95\x9csZ9E\x1f\x84n9\xa7\\\xa9<\x00z\xa8\xd9Y\xa4\v\x14;\xdcr\x8dI\xb8\xc5\xe1\x06]W%O\x04\x8d]\x86\xe7\xbeH;?q\xb3\xab\xb6\xba\xcbi\x9d\xa6X\xf0\xadJ\xe4F.\x0f\x92l\x13\xb0[\xff6/S5\x99\x8d\xce\xf9\x04z\xa3\xe0\x86qOX\x94N\x12\x04\x0fa\x13\x068y\xab\xa8bMr+쬮Zɳv$m\x82\xa5\xff\xf9\x8e#\"\xf7\xfc\x1d\xb9\xa3\x19O\xa0P\x06\xf1\xdb\xd6|\x01r\xb6\xad!\x1cɄ\x89-\u008eF`\x9c\xf2tq7\xa1\x98f\x86\x90 \x87\x1d\xc1\xd8a\xa2#`\xa8\xa6\xdeMTS\x17\xb8G\xf8?\xdd\xfax\xbe\x19\xb6\xf3\x9f\xb8\xfd\xd9y\xa5\xbe\xb2W9\n>\x95\x12J\x10\x1b9\x97\x0f\x8e\x1f\x8cEI^\x9cs$\xe6\x16\x94\x04\x84\x90al\x19\xe8I\xe2\xacW\x132\x96\x1e=\xb7\x02H\xfab砝\u007f\xe5\xce\xee\xd4%\xa3ɺ\xb6\xec\xb0\xf8\xab*%\x02\xfa\x1ftX\xc6\xe3̒\x0e\x93\x94\x87\x9djQ-è+\xd5+\xc4ɼ\xa4Y\x15\xf6]:\xd3Ԉ\xb3~}\x92\xb4\xea\x03\xa3@\x9a\x01\r<\x8f\x84\x134\xf2\x8a\x9a)\x84\x86\x05ۮ_\xd2uRIw\x80١iV˯F\x95ɽ\xbfrq\u070e?\x9cE\x1d\x95Z\x85؉\xadbrCV\xccB\a\xf4Z\xc4\r\xedP\x81\xc4ƣ\xf7\xdd\xf7\x8eR\x94\xe3\xb4\xff\x19\xdd$\xef\x81\xd1\xeaI\xe6\xb2\xfd\xca\x11\xe5\x05\xca+q^\x1d\xa7\xc82\xb8%\x89\x9c\xa1{n\U000541b8\x03ا\x91\xefFB\x13\xe0\x9d\xceӏ\xc7H+\b&\x84\xf8\xe7\xfd\x01&od2/\x03\xc4#\xb2\x1eW\xc7w\x14v\u0084j\f\xbbg\xf8\xacZ\x89\x94\x9dd\xa1Z(\\\x1cg\xdc\x16\xe1\xb7A\xda7\xa4\xb4\u007f\x1a\xa4\xfd\xa6m\x1a\xc41\xcc\xf5\x88\x04f\xc0-\x13\\\x01-\x01\xb5h9\xa6\xeaڮ\x06f\xdc\x1b\x8bq?\xa9:\x89}\xc2\fm+\xb4\"\x16ĥ\x8e\xe1\x19\x99\x11ߜ\x16H1\x9d\xa4\xaa\vޞ\xf0\x03p\x16F\xa3\x13\x0e\x96\xff\x9a\xfc\xbf\x9dW\xad\xf8\x06bY\x0e1\xad\xab\x8d$\xb0\\BTU\x900\x9a\xf2\"\xceCco\\xd\xd1Jp\x96M\xb8\x86\x1b脕uW\x04\xfeM\x97]v\x13w}0\xf5%\x1e\xe1g\xc9\x1d`\x83\xfbp_\x17\x94U\xe4\xe2\x12\x15\xb2$\xef\x94̢X\x8erA!Z9\aQ\x9e\xb7\xcc\x02W\xc2D`\xbd\v\xa6\x17\xffn\x93\x90\xd4\x0fSB\x1a\x8c\xaa\xaf\xaf\x9b\xe6\xf5},\xd1\xd6*\xb3\xfd:\xa3W\xcet\xa7ڳ\xaf*7M\xaa}\xd9鯗\xa0\x1f\xee\xb9)\xaeń\xbaA\xe2E\x15\xf0\x92n\x1e\xac-\xbet\tg\xc1\xcb\v{\xf7To\x98\x0f\xbcx\xebs\xe4 [\xdeQ\xbep\xb4p\xd2\t\x0fu/x\xd9\xf31\xe7\xf2\xec\x8f`l\xbd\x16\xc6\xd5)9[\xf5\x1a委\x0f+\x9fW\xbe\xae\xfc\bl\xf7&\x99$]\x10\xed\xe3ځ\xe5\xffE\xed\xc0O(\x1d\xe0\xa3x\\:\x90ȉ]\x14\xfa\xdbU\x03\x83\xcev\xd1\xc0\xe8\x19\xa2:\x8c\xc1\x8e\xb0N\x04\a+t$\x90\xfc\xb0{GNѶa\f翐\xc7\xc9y\xfe\x13㟔\x15\x83i[\x12\n\x9f\u007f\x1e\xe8\xe3\xd51\xffv\t\f!\x81\xb5C\xfd,\x1d\x8cz\x83\x91\xe0\x9d\xe7\\\xcbs\x8f\x85\xb5b\xb4\xbc\x84I\xc9=\x8f\xf4Z\xc8B\xd7\x13q\u009f\xb3_\x02\x12\xa2\x9b\x905\xf0\x97\x19E\xf4\x13\xe8A;\xe5\xdf\x0eB\x10\x9fLЀ\x83c\xcaw\xe6\u007ft\xb6Z\xa7:\xa1\xe0\a\x16Ke\x84\x15\xa2\xd4\xf7\x84\xe3\xda#ƙ*\x84!h\xe4Jl\x01\x140\x12\xb0w\xeb\x1fT\xd2f\xaa\x0fV\xad\xcfT\xe8\xd2\xean\x19hXg\xe4R\xb6\x1b\xbe\xc9?Oe\xb4\xcd\x16\x12\xf0\xa4\xf0/\xfd*\xecHA`\xc1\xdf:\xa5m5\xdf\x13\xde/\xb3\t\x12\xf9\xc2\xff\x1f\x13\xf8\xca\xd6\xc7-\x1c&\x17!X\xbeD\t\xd6\t\x99 d\xaf|\xcf\x17\x10\xb4\r>\xf6\x86࿈\xbdB\x9dP\xe1O\xecE\xa4\xaa\xbdr\xa2\f\x11\xf6\xbd\b\xf4\x0e\xb1t9E6\xcd4\x86\xfe\xab\x1bF\bޡI\x87\x8b\x81\x9d\xfb\x96\xebA\xa8%T\x9d\xd3(\xc2]QmN\xa5\t\xa1\xf4z\x15,w2I\x9f\xff\x1b\xb0\x00V\xa4|F\xf9\x1c\xc62\xb3$\x9f\x84\xe6\x92>!w$\xc1\x03\x90\xf0f\x92\ff k\x87\xb9Hs\xab\xaa;\x1ak\xc1\x9c\x90B\x02^\xcb\xf0\xa6\xa6-\xf7\xb1\x0evw\x9e\xcb*\x91\xd1\xf0@X܅\x84\x18y\x83-\xccL\xcc-\xed$\x1eI\xe2\x99\xff\xb76\xbby\xa9%\x0e\xa4,ǘ\xec\f\x93>X\xbc\xf4t\xb9\xcc\"\x04\xc2\x13\x8cd\x19\xe1\x168\xbf\x11{\xc1\xac[\x8b\x9b\xa5$\x89\x92*%3\x86\x979\x952\x02\xe0!\xfa\xa2jl\xfd<\xb8\xfa\xa6;\xeb\x9a\x02\x0f\x82~\x8a\aɖ\x0e\u007fo\xd6\xf0\v\xfeD\xf9ܱ~\xeaTKI\xe8\x85`Iq\xcdxW\xa3E\xaf\xe7\xad \xf0K\xb5\xac\x95\x90\xf9\x1d\xe5\xe2_\xa4\xa4BRs\xc2.\xc6E\xa2\x1a\x861a64\xaa5\xcc&\x18Y\x85\xb8hO̸M7s\xd3z\xe0\x1a \xe0\xfd\x1at\f\x11W\x1c0\xaeUD\xfeYk\xaa\xc3\xffd8zӀ\xe3x\xddl\xea\x8eY\x88Kք\x91A\xc3F\x13\x1a\xfe\x88\xb3\xcbmZ\xa1\xab\xffO\x1b\xd9?;!\xec\x96Y\x0e\xa3N\xb1\xbd\xb07\u007f\xdeg\u007f|\xf6\xf7\xe8\x83\xe4IX\xfe\xbf\x95\x1f\x10\x01\xeec\x11\x9e\xf7hy\xec顓\x87s-i2V\x05\xa3srF\x8c\xd5\xc3x\xed\xf0\xbc-`]\f\xd0A\xd9@\xb6[\x9a3Sa\xa5\x032I\xa4ψNd\xc8D\xf3p8\x1a\xd3\xfflϯ\xe2\xb4j\x8e\xd6-at\x90\x97'\xceV\xe4d.R\xae\x0e\xfb=X\xc0j\a\x97\xc1!\xe9\x12\xcaϤ7\xe8\x8di\xa50Y\x17\xb6ah$\xceƤ\x0f\xc92\xf2Y\xa0\x9cԆ\xdd\x1eo\xe2\xe5\xa19*\x95\x99\xe4\xbe&\xe8\b-\xaf3\f\xd2,q\x8f\xa6\xd2wG<\xe0\x85\u007f\x99\x06\x1b\x13i\xa75O\xab\xb5[e\x8d\x14L\x1b\xba\x92\xa5\x970{\u008b%\x13clZ\x86ka.H\x85\xabT\xb5\xd1~\xf1=\x13\xf9\xfe,0\x81t\x10$\x1675\xc3&T\xb8\xa6\xae\x1a\xcc\x0f\xd6j\x8ek\xf9\x17c\x92\x881\xdfj\xa8,\x9b\xd8qr\xefK,s\xd7b\xfbBӋ0\xa7C\x8b\xe7/\xbcڷn=\xdc\\B6ER\xdf\t\x8f7\x0e\xe0\xf1ïK\xd3\t\f\x0f䴔\xf0\x18\x92\xd8\x00D\x16\x96 d\x0e\x91h_\xfa$\xb2Fd.B5\x81\xe9R\u07ba\xb7.\xf1\x9ctZn\x18\xa6\xde|[\xa2\x81\xf1\xe6\xa2\x1d\xc3P\xcaj\xe2\xee\xa2\xc6At]S\xa2\x0e7\x0e\\=W\x0eb\x89\x1cl\xd6'U\x15\\\x924\x14H\xf5X\xcd`\xe8:N\xa3JT\xdf.z\\\xd5$*\x13k\x82\xf0\xd2\xca \x01\xa7\x1a5\x1fm\xb7\xa8\xe48\x91o\x18B\xd3\xdb~)\x00!̈\xb3^(\x17u\xb5]\x9b\xec`\xec\xa2Q\x9c\x8e\x83Qm\xd0,\x94f\xa6\xafB\"\n-@\xdc2\x9e\xa8Ɖf\x895\x83V\xa9\x02\xfd\xbb;\x8b Pp\xabA\x1c[\x16\x9a\x11 \xbd]?\x10\x9a\t\xf7\x1e\xef\x81\xee\\e\xaa\x0e\\\x87\xe1h\x86/\xbc\x9d\x81i\x8c\xbf\xf0\x82\xf33M\xe4\xa6Ԉ_\xefh\x9a\xfd\x82><\x16\xdd/\xea\xa1\xe7\b\xe8\x12v\xb8\f\x8fS\x88\x84\xc1\x88-b\xe6Ox._\x11\xf3\xb3\xb8b#\x17\xa3E\xfa\xd9H\x94IKt\xc9\xe9k\x9e~\xfa\x89\xde\xea\xd3\x1f\xfc\xe0\xf0\xde{ə\xad3\xe4\xcc\xf1㍭\xa7I\xe3w\u007fW\xce\xdb\xf9g\x9f&O\x90\xc7\xd1\xf2B\xabc\x03sV\x98\xe8\xe2\x94\x1f2\xcb|\xb2\xd3\xe9|\xa5\xf1\xc4\x13\rr\xf4\xc1\a{\xe5\xbbJ\x1f\xbb\xf6\xda\xef\x1e\xda\xfa\xee\x8d7\x92x\xeb\adr\xeb[{\xf7\xe6uH\xca1\x90\xcdSp\x0e\x86\xccv-+=\xf0k\x9fT>\vB[\xca\xfc\xac+\xc0<\xc7D\x0ed\x15\x1c\xe5tCI\x1a#\xc6-\xcd\xd1oe(9\xe3c\x1e+\x97b\xa7O\x97%\xfaϘ|b4\x00\x89\x1c7\xe5g\u007f\\\x93\xd8\x1fH\x84\xee\xf3\xbe#\x1a\xcd3ߺ\xe3#\xba\xc93\xadtу\x86\xf7\x95>\x96\x8f\xc8\xd3Co\x18k\x94F\"\x86\xff#\xd1폲~\xf7\xf6h%\n\xd6\xd7ף\xeeu\xeb\xc1\xfc|\x10y\xbf\x1dN?\xffufX\xa8\x14B\xd344߮\xd8H:m\x81\xb84\x13\xc3pu\xdd5\x8c\xc44ܫM\xa4|8b\x16\xcd*\x82\xbbi\x1d\x15\x81\xb7q\xb2\xc2\xd2;\x1c\x11ߪf\xc18b\xe9\xb0\xd7\xf1\u007f d\xcf\x1e\x18\x8d\x9c\x93B\x18n\xac\aQ\x81dls\x93\x90\u007f8\xfe\xc5\x10|\x94\xf8\xfd33\x0f?|\xd3\xec\xdaçN\x9d9s\xe6\xfe\xfb\xef\xb7\xed\xb6<\x87(\xab\x14\fM\xa6\x8b\x18v;\x8d\\\x18l\xaa\x1b\xa5a\xbe\xb0\x9fXHXm\x11nh4\x8e\xa9\xc6\n\xae@\x12CM !\x02t3Am5\xc3u\x05\x96\xefa\xf0\xedc\xc0^Q\x99ʠ\xa7\xeb\xa0\xdfK\xd3\x0f=4]\xe2p:2V蚗MM\xcd*\xdaٳ\xca\xcb\xe8k\xc8˔?W\xbe\xab\xfc\x10l\xfc\x92\xac\"\xf4\bb\r\xb2\xee\xa0\x05\x8f\x121R$\xf4 F\x84d\xc6*N\x0em\x90\x16\x97\x15(\\\xe2\xce\xe3\x8eh\xb1v\x91\xc3lLዾ\x1d:\xa7})\x923Lz\xed\xe5\xc8G\x98>,#hC\xb96C\xab\u007f9Ů\x90!\x036\xf8R!\x18\xd3\x03\x9f\x96i&\xb8z\x1a\x825\xa3S,\x82TX=\xd7\t\xc1\xc1\xd5\xc0\x19\x1655A\xd8D\xc7%\xd41\xb8cbn \x82{l\n\xbd>\xbf\xdb\xd5\xed)υ\xc3TN\xda\x19\xd3\xec8\x02+\x10\xc3K\x1cq\xed\xed%\x81\b\x8b\x9a\x89\xb1`\xc4H\xf4\x84\xa8\x13D\xabT}h!\x82=\xd3;G>3+Y\x89\xa7s\xec\xed\x91o\xe6\xa8\xfc\xcc\n\x03c\xbc\xd8\x04\xfd\xe50fņ\xcf\xe4\x9c+;\xfb\x14\xf9M\U00094c80\xe3d<[\x8ai\xb4\xdb\x10Z\xcf\xe0\xf2.#6\x1f\xceΡ\x05K>\xed\x8c\xda\xe9\x85\xd5\xe5\xbd\xe0^Ǯ\x1bg\xcd\xc5fF,/˪N\xfb\x88\x99\xed\xa3\xdc8\xae\xf3\xacR%\xe4\x12?\x02K\xe7%A%k6\xb3\xaa\xdf\xd0`\xd8i\x95\x8a\x8e\xf8\xe7>\xfc\xfe\xdd\xf0\xfb\xe7\xf0QF\xad\xa0\x9f\x05\xf0\x86/\x10\x9a{\x97\x97O\xf7\u007f\xb6\xff\xce\xe5W\x93\xbd\x17m]D>\x86\xaf\u007f\xfegYK\xae\\\x04r~\x1a\x8e5\xc65\r\x1b\xca\x05\xca\xcf+\xefS>\f\xed\fR\xcc\x1d\xe4\xdd\xd1d\xf3\xdcEH\x8e\xcfQҭQd\xffB\xee.\x81\x91C\x18\xffte\xb0\x82\xa5d0\x84\xc5`\x05'\x85\x96\xe5^\x15\xe6jXD\xdc\x1d\xef\x03\xb6[\x92'\"v\xbay\xf99H\x06\xe9ZB\xcb\v\xaa\x94\x04\xd9(\x91\xbe-\xeb\x83[9\xc2!\x98\"t\x95l\xf4-\xe0\fu:\xd3È|\xa0\x10\x04E\u007f\xe7·w\x1e\a\xab\x9b\xe9\\s\x1dKe\x8d\x10mpԴF#I\xd3\xdb\xf1\x1bb\x97\xab\xec\xbc\xedFk\x8fS\x8a\x92Zٲԉ$L\fsgPr\x85\xccmX\x9eN7;l{\xef\x1fV\x17BF\xc3\xf4\xcf\xd3\xf4\x14t\b\xeeX!yi`ێcۯ\xbf\xeb\xae\x0f\x96?\xf7\x12nK\x8a\a0\x0el\x8e0F$\x14\xf9\x1a\xcb\n}\x83\x9e\x98\xb2\xac)\xe7\x8a|/\x03\xc4-\"\x8es\xaa\xe9\x98\x05\x1b\xc9\xd55\xb7\xd4\x18\xa6\xa9\u007f\xd2\x0e\x97\xbc\xa8\xcaʅ\xba\xef\v^=\xe4W\xd3\xd0\x01\x97\xd8#\x9e\x99\xd4k\x8c\xe5G\xd5\xdc\xc0cN\xb7\xb0C6-\xed\x06\xc4Y{\x19\xf4\x03\rY_\xc0^\xe8\x8a\xd6D\x1f\x14_\xf6\xd8;\x8f\xaf\xaf\x1f'\v\xfb^x\xcf\xfey\xf2\xd4ַ\xee\xbf\xff[\xdf:6\xd6\xf3y\x1c \x90\x99w\xeb\xcaQ\xe5\xb8r\xabr\x9f\xf2\x12Ą\x93\xf9\x9b\xe92\x18\xbc\\Vze\xc3,\xe9\b\xd4£D\f4\x99@*=\xb0A\x9e`:\x86/I\xa0\xffkc\x1f)\x19\x13lʤ\x8e\xbe\xac\xec\x92\x1e\x14\xce\x18x89>FG\xc4\xfc\xf2\x14\xfb\xd6\a\x9aM\xc36atť\x87\xedb\xe2\xccu\xae\x9f\xdb:\x9b\x94\x12\xbf\x12\x15\xb3R\x16\xc0\xe2D\xb9\x10'\x99G/'W\xb3\x06,V\xd3FԮך\xc7\x16\x1c\xc3t\xef)N\xb6J\xbeG\xe6\xba\xd470-\xd4Չ~\xef\x1cY\xect6\f\x13\xfc~^\x88\x1f\x9dI\x8di\xe1\xdf\xf2\xae]\x93\xe6\xe4Ia\x88,\xf4R\xb8\x91\x9e%L=\t\xb2\xb2>c\xcd\x1a\xa2dL\xd8\xc1d\xa9\xb5\xb0\x10\xb9\x9eןmOM\xd9\xcb\xe6\x97,\xf7\x15\xa0\xd53}\xaf1\xf1\xaew\xe5\xfc\xa5\xd6\xd9ϒ\x17ýo\xc2}\x8bA\x04牵\xe3\xfb\xa2>s_~~\xa2\xb7\xa3\u05f8\xe3\xda\xe65\xf5+.\x1c5\xf0\xcbm\xc7.ڻ\xff\xd0\x12i\xbb\xa9[\xa8\xed\x9a:|i\xe4\xbcf\xa1\xe5\x17\xbcBu\xb5}\xf8\xaa\xd2\xeb&\x95\xf1\xf3}\x9a<\t\xb6]\x82\x9c\x86\x91Ԛ#\x99\xad/\x03dt\xc4G\xcb\xf9\xf3\x90\x0f⣕\xe9~l\x8b\xce\xd1\xf2\xe4\xf1]\x86\xb3\xf3\xe0\xa4\xfb\x8a7T\xdaNخ\x82\xdf\u007fo\xf1\xf8՛t\xed\xd2W?\xbe\x92\xb9^%R\xadp\xa5{lun\xf7\x81b\xea\x82\x1cq\x15B\xef%\x0f\x80L\xbbF\xb9G\xf9\x98\xf2e\xa2\x90\x1d \x11\xc6I(\xb2V1gr\x19\x93\xa0\xc8\xff\xcdY\xd2l!μ\xacT_\xe9F\xcb}\xc9~\xb7\xed\xbbu\x93x\t#\x14\x9dAo\\7\b^S\xdcϋ\xcaA\xbd\xf7\xe2%\xacQ\xeb\xe7\xfe\x90\f\xbc\x8f\x96QbʟLz0\xfa\xb1C!\x9eC\xb7\x99\xc8<|\xe9\x0f\"\xff\x8c\xe4\xe2\x933N2\x16\xb8\xcd\xc7\xd7\a3t\x8dHf\xbdq\xd0^\xf0x{\x16QKz\xe7N\xbd3\x92\xfbwǿ\xdb̯f\xd0YZ9\x8f\xcc/\xed\xf6\xb2\xde\x06\"\xdf\x0fw\xd1e1\x0e9ܓn\x8e\xef\xdd\xf3r\xb8\xb1\xf4\xea\x85\nR\x05IU*U)g\t\xa9\x84D\x89 \tQ&\x18\x91\x11 \xb2m\x1a7i\xdc\xed6\xe0\x80\x13\xc6\x18\x0f\x18\x03\xc6\x06\xd3\x18{\xda\xe3\x9e\x06l\xf3k\xec\x1e\xd3\x1e\xda\xe3\xf6\x00\xb6_\xcdZ\xfb\xdcW\xaaBؿ\xf9s\xeaջ\xef\xdc{\xcf\xd9g\x9f\x9dV\xd8\xdf\xfa\x16\bGڅ\xaf\xe1ֆ\ue83dfJ#*b::\"\x8b\x02\xb9u\xa1\x10\x10\xe9D\xeaҍ@\xfa\xb3<\x89\x1d(\x10%\xc7\x15\xc22\xf5\xd7\x10\xbd\v\xaa\x04\x89\xe0\x9a\xee\fל\x8a\x017\x85\x0f@5\xd1,\x8d \xbe\xbaQ\a\xc3P\xf78\x15\xd1\xcb\x04\xf7hC\x91\xa60^F\xff;\x88g\xd6(\xda\x02\xb5%\x0efРD\xf0*ь\xea娮Ʉ\x90\xe3`\xe4j\xf4k\x1a\x93p\xc00\xbb\xc8\xfc\xc2\x02<\x97C\x1bv\x18\xba%\\\x0e\xe7\xa0\x12f\f\x1a\xf6\xc3H\x0eE\r\x82\xd9\x19\x92\xc0)JM=O\xa8\x99\x0eF\vh\xd08*\x17\x05|\xf8$3\x89\a\x8fȸ\x05&\x1c\x02\x90\xa8C^Y\xd4i\a\xc6h\x9e \xb0\xe1y\x86\xbe\x97\x051O\xe3g\xe7\x94\xf2/\xa6\xc9\xfd\xf0N\xe3\x8c\xddv\xabi$\x18D\xa1B*\x98\xc5\xc1\x84\x14Ǐa\x87zt\x94\xe7nV\xf1\xef\xc5\xc2\\a_\xe1\xd1¯\x16\xbe\x05\x92\x12c\x9cp\xe4Oi\x16\xa2|褹\x87\"E͠Nj\fw\x00g\u007f\x98g1ό\x94ou\x89\xee\x1a,%\xd1\xdeT\xc9\x139a:̎\x8cD\f' {C\x1ej\xab2+\xa1\xe7a=\x89U|\xb1\x9ay9\xb99R!\xad\xab\x01\x1cc:\xb6\xe9DJ\xe2\x1a\x8d\xd7\xe2\xce\xfa\x1e\xee\x05\xd9\xe8Օ\xc3-\xb2\x96\xa7:\x81\xe1\x8f\x05d\x8bdM\xe4%\xc85t\xa2a\x89Z\xef\xe2lϱ3S\xa71L\xd1\xc1\x1a\xcc\xf8\xf5\x8b\x99Qz\x93\x8b\xe0\x1a\x99\xdf\x03\x1ba\xba\x9e\xacG\xc9`\xef\xcc\xe1+H1\x8a%\x18.5\xcf'?\r\x83\x8dY\x86\xcd]\xe8%\xcf\xd7I\xe7\xd2\xddͯB\xdfϘ*\xc1\t\aK\x1c\xf4d0\x94\x12P\xba\xa3\f\xbe\xf15Jꌋ\x18G:\xb7%\xfbq\x98\x12\xb3\x1ej\x83\x12tC\xeaJ0\xac\xa8I]\x8bښp\xb5\xa2k\x80\xba\xeb:\xbe\x1dH\xf14&\x84\xa0I\xbdd\x1bD\xb7ʔ\x83 \x0f\xbc<Շ0$y3\xd3\x0e\x1eK\u2e79j\xe5\x8a>-a\xae\x8a\xf1\x95\xadn\x1c\v\xd0\x1eh\x92\xb6\x9a\xab3x\xdf\x15\xb0\xf9\xcd\xc0\x8f\x90]\x06\x86i\xd1B\xbc%\xe8\xcb*\x11\x8bN=A\xc8?\xcc\xc0,\xb5\xc1ΰ\x02ϬP\x8b:\xcc\xd7M\f㡘\x11\x19i5\xdf|\xc9F\xeb\x12\xa3ƭ%\ra#8au\x95\x83%\xd4e\xff\x01\xd4z\xe0\xe9n\xd0a\x9cz\x9b\x9e\xd0\xf9\xc3EC\nP\xd0\xe1\vz\xab&\x02\f#\x87z\xe0<\xd1\x14\xf4\x15}\xf3\xa0cHCU\x0f&\xa8u\xc3/Q\xe5\xce\xd9$\xa1\xd0J~\\*VЎ0\xf3)\u0089\xf8\xbf\b\xad\"i\x87ƅ[&\x0e\u061d\x9c\xac\x95-t\xf3\x83\xb9║\x8d\xbcΕ=\xc1L\x95'S%\xda\xf4l/\xc5)Gt\x16֘\xd0\xd4~\xd1gȾ\xa9.\x8bQ\xd6a\x00\xa6;\xd9\xf7\x1e\xf5\xef\xb7\uef13h\xbb\xaf\xba\xe3\xeb_\xbf\xc8\a\xf0i\xf2~\xd0x\x93B\xfdG\xf0\x01\xa8]\xf1Q8P\xe1\xe8\xe4\xd5\xe5n\xb7\xb4\xfb\x9b\xf0Z\xae~\xea\xfa\x17l\x1fz\xe2\x96\xcf\xdcC\xde\xdf-\xef~\x12\xbf!G\xcbݛ_\xfb\xda\xc7\x1f\xdf\xfd\xeek^\xf3h\xceev\x11\x13\xb8\x17\xed\xfb#y\x9e\x91Ni2\xfd%\x1f1\x1c\xc7\xd8=\x87\xafo\x9d\xfb\xe2y\xfcG>\xb8\xf7\ty\xb7\xe1\xec~\xea\x8b_\x9c\x9b;\xa5\xfe_\xc2i@a\xa5\xe8#\xbe\\>k\xe6\xe7\xc9V`f)\xcf!\x88@\x8c\x1cC\xe0_\xee\x80\xfc\xad\xbb\xef&ڥh\xae\x05]T죍\xfa\xa3\xb5\x8a\xe0\xfc\xb27\xff0\x1e\u007f\xfb\x92a\xf3\xb9\xfd\xf5\xe9)Β\xefm\xe6\xe7˲\xbd\xe4_\x86\x89\xc4\xd8\f\xc5\xc0MF\xed\x00\x93(#\xb169\xbb\xfb\xf7\xb7ކ\xac\xd9Ĺ\x15\x0f\xf7|\xfa:}-9\x0fW\xac\x82\xe6\xf0\xfc\xc2K\x11=\x16^B@+\x93\x8bl\xb3\xe3U\xd2qY\xfe\x16\x9eV\xedw\x83\x98\xd5P]\xe8\xaaTH\xa8$\xe4{Vy\xf8\x01\na\xdc\x14W{W\x18~\x9fM\xb9\xa6\xf7n\x80>\x83\x8b\tN\x92\xbd\xac\xee\xff\xc4\xe6\x19\xfc\xbf\xa7Fk\xc2$\xa5ԉt\x18\xcd\xf8\x19M\xab3\xe4\xff\xd15c\x86\xb8I9\xf5\x18-\xb7\x9b`ʏ\xc0\xc0\xaaŽZ\x95\xf2\xf6\"HT\xb1Q\xfe\xfe\xca\u0381\xe5v\x19.K\xbb-\xb72\xe3׃\xca\xcc\xcc\xeb\xc1\x02)\x05\xa4\xf3\xfb\x8c\xfd>s\xa2\xee\x1b\x99!_V\x14 \r,J\xdf\b\x13\x16\x06\xf8\xf5֓aԵ\xb8\xae\xf9\x1d\x18\xec\xa1\xeb\xe8%\xb7\xdeL=\x93.k̑\xccde록\xdbw\xc2[\x19\xfbD}11>:[\tj\xc1\xec`\xf6\xfb\x01\x96\x8fs\xa1\x90\x82\x9e\xfe\x10\x1c!c\xf7N\xe1l\xe1e\x85\xa7\xe1\xd3)\x9b\xdal\xbf\x81\x99\xa5\x95*\xb8\xcd\xe5x\x93\xac\xf0\x05ҕ\x1bt[\x93\x13TA`\xech\x9d.\x1c\xcb\xfe\xb8\x8f\x198\x98\xcbe7OT\xc9\x16xWvg\xc7\xc3\x15mz\x11\xbfx\x11\xef\b\xb8\x8c\xfc\xaf\xff\xf4˿\xfcO\xbf\xbc\xfbG7\xbf릛\xde\xf5\x8b\xef\xba)\x9d\xdf\u007f\xf4\xf4\x06\x98κf\v\x8f\xb9\x14\xd34\xa0\x1f\xe1|\xfbh\xcbu\xf5\b\x84\xaf\x1e\x8a\n3~b\xd6\xe0E\xc350$C\xf9G\xc0\nc\xb3L\x93*#\x1e\xd7`\xf8\x99<\x9c-\\\xc0o\xf6J\x8b4\x0fT\t\x91\x17f\x84ܔ\x8e(\x8a\x94\x19\xe4\x96\xdb_z\xfb\xed/}\xde\xf2\x89;N,/\x9fXI\x97fZ\xb1\xfd^͐\x8a\n\xf2(&\x0e\x90\xd6\x03?\xe7\xfb㢆\x9c9d\xe9\u007f[VZ\x13\x18\xf9\xb0\xee\x19\xa1W\x05\v\xbb\xe3i\x8a\xd1y\xe7\xe2\x85苶\xefW\xd7qt4\x90\x9c{̾\xf0E\xf2\x0f\xe4\x13\xb0\xbe \xb2\xa7\xa0)b\xd5gb\xbe{\xd9X\xd1w+\x1c\xce$\x1e\xef\x11\x0fl\x98\xac\xd3%䁷\xbd\xedKo\x8b\xa8\xc1\x93\x85\x9dΡ;\x17\x8f/\x92\xd9\xd3\x1b\x1b\xa77\xaa&5\u1af7\x9d\x1d\xac0\xbbsp\xadq\xe7A\xfc\x92|x\x03\xbfV\xfc\xec\u007f\v\xfa\xc3;\v\xed\xc2r\xe1\n\x955\xe7\xce\xc2Cj\u007fx\n\xabWLV+t/\x1b\x0e\"{\x91\x81s/\xcbt\x1ev\xf7\xa3\x8f\xb5\xff\x0f\xe7P\x1fW\x89ێo#ݐ^\xdb\xea߆\xef\xdf2\xb3O\xd7\xf7ͼ\x93}\x88\xb1\x0f\xf2K_\t\xbe\xf0\x0f^\xf6J\xdeIj\xd1\xff\x8cj\xdd9J\xab͠\x16\xfdCX_\xe9vWv\xff!e,e\a\x9ey\xe5O\xa4\x9c\xe3q\xfe\x8a\x9f\x80$\xf8\xbb\v\x9f\"O).\xb2\xac\xb0U\xb8\x0e\xec\xd2'`5y'\xb2\x93*\xb5\x1f\x9d\x85k\b\t\xd8A\xef\x03Co\x01\xa8\xe7\xa8#5\xe8ĥ\x8a\xd6\n\x9d\x81\xdbL\xad\x1d\xa1\xd2Y\xa4\xa2\xbfP&\x89z\x9d\x9a\x10}\x95\x9d2\xcaS\xb7\xae\xe6\xc5NT*\x198\x19\xbd\x8b\xca\u0600o\xa7\x9fA\xf9\x98<\x92$ם\xbd\x02\x1a(\x9a\xb3\xcc\xf9\xfa\xec\xfc\xe9\x13\xce=~\x12\x1bDZk\xb3\x894\xe3\xd3i,\xec\xe4%\xadـJ\x03Ḟ\a\x8a1\xe7r\xeb\x81Jt\xd8\x14\tF\xf4r\xad\x1dE\xe5\x18n[͎\xbe\xb1\xdf_\xac\x94\xdb\x16\x97V\x83j\xf3\u007f\xb8\xe2\xea\xec[\x1a\x8d\x87c\u05fb\xea\xc8\f%_j\xf6@\x94\xbe\xe7\xcc0\x9a{\xca1\xec[\xaf\x99\x81U\vİa\x1ezClh6h\x12\x86\xed@\xb1\x96({I%IM\u007f\xae֯\xfb\x93\x03a\xa7\x916~\xb6X\x8fR\xc7a4n\x99&\xe1\xb6\x1d\xe8G\xfb\xf6\xee\xf7\xbb\xdd\b\x95^\x8dڥ\xb4\x968d\xd3\xf6k\x82\xe92(b\xf4\x94\xc1\xa8Oa\x86\xb3e\x01ڴ\xa9k\x8d@w\x8c\xdbЅXO\x053u\xf2S\x06\xafx\xd21t\x04nky|\br\xf0\xfe\xef\xb0n\xfd\\\xe1(Ƣq\x15\x8eMAc\xec\xb9BN\x90\x85\x12\x15J\fO\xeb)Ri\x82@\xa6<蜥\x98\xee\x15\xccZ\xfadډ,\x9d\xb9R+\xcf8\xf5\xa8W\xcb\xc2%{$\x16ݍ\xf2 \xdb\xecR\xc9G\x9a1\u007fߡ\x1bk\xedu\x9f\xf6\x0e\x8e\xceN\x98YMJZ-(v\x8ai\xbfB\xfe\x83W/\a\x01\xd1\x0e9f\x14\x19\x13Xgp\xb7\x9c\x89\xea\x9dZ\xab[\xf3\x8d\xb5\xe5W\x8a\xfd\xfb\xc9'\xde\xf6\xd0\xf3\x9e~\xe7\xd9\a\xde\xf5\xeb͙3/\xb1\x82R\x98\n>_\xae\xd1^\xaf\xd1IH\xd9\x14\xf67\xee\\Lb\x92e$\xee\x94=݉\xa3+*՛66\v\x97\xb7\xe3zaP81}\n\xc50\b\x8f\x11\xf6\xb7\xd9d\xb8\x9e]\xdc^\xefe\xdd\xd1`\x13)\xaa\x06\x99ʢ\u061d\xa4{\xee\xa2\xdc&\x979\xe7P:\x88\xe1\x81*k\xdbW\xf7\xb0aۛ\xb3\x1dS{\xf2v{_52k\xb3\xcbG\xf5j\x9a\xf2\x83\xd6\xf9\xc3\xe4\xe4\x1b\xc5\x137\x9e۾^\xca\xdeF\xa7f\x95\x92v\xc8y\xed\b>\xd8\xe2\xc9ͥ\x14\x9fmw+.w=\x9d\xec\xeb[+\xfeh\xada\x18\xa4QovϜ\xfft\xb8Y\xae\xdd\xf8ĝ3\x96\xb1`\xaf\x99\x89f8\x8d˞˂\x15{\xb6\xb0qy\xef\x84\xfdI6\x1d.\x83Qv\xf1Y2\x19\xef=\r\x8c\xfe4C\x00\xfd@\x0e\xf6:\xe6\xe1sW\x9e>\xb0u\xe0\x80ب\xbd\xd28\xff\xd1\t;\xf0\x80\xfeč\xad\x8d\x85\x86u}\xf5\xd0\\\xbaxh\xa7G>\x81\x83%\xaf\xf2sff\xf6\xedˊv\xb6\xaf\xd6:s\xfeM%Q\x1c,ך7>\x114\x9b\xe1\xcc\xe0&\xf3\x9e\xc7/\xabg\xa9P\xc3l\x84\xe1\xbf4d\xf7\xc2g\xbf\xf7Ã\xd5\xf8\xb5_\xfb\xb5\xfc\xbe\x97\x0fҷ/.\x9eZX\xb8d\x9c\xcaB\x17Y=\xf6\xf0\ua62f\r,\xbe\x1c\xb1\xaa\xb0\x13\x18p\x98\tX\xac\xd7\x06y3\b\x15W\x03}*d\xce\xd3\xf3\xbd٫FE\xf2gV\xb9\x18{3함\x97\x95\xf8ua8\xb8\xe5\u007f\x12\xf9\x923\xc3[\xabW\xb7\xaf\\i\u0379k\xce\x1e{\xcf\u007f\xac\xae6\xc9=A+\r\x96\xeavu\xd8\r\xfc\xee\xda=\u05ee\xfdd\xa5r\xe6%\xfd\x85\xf6\xb06\xef\xf3\xd2TW\xbd\xa4-\x1a`\xa7\x0f\x91\xa9\xee\xf2~S-\x91\xa3G\xc2>\xa2yS\xe5\xe7\\$q\x86\xbe6\xaa\x00\x95\xa0r\"D\xf7bCa#\xdd\b\xad\xf5o\x8e\x1c\x19\x8d;\x86'\xb4\xf0\xae>3\xcba\xb5\xb3\xe3ض[{\xa6\xf5v\xb7T\xd3a\x1b\x92੧\xcee^Q\x90\xebέ\b\xbbh-=u8\x8e\xe6\u007f\xa8\x9eKS\xa6\xa1\u007f\xb9ߚ$V\t\xb3I&\xb3\xd1d8\x9a\xa4\xb1\x84\x81\x97MS]\x8cd\xfc\xac\x1e=\xa1\xb1V\x83\xb2\x8d+\x8d\x03;\xfb\x0f\xbf'&/z\x91>7\x9bݺ\xfc\xa3\xba\xf9?\xb2#`\x10\x97j\xbcZ;P\"G\xea\xdb\xdbg\x97\xe8\xca\xf2\xea\x86\xef\a\xa3\xc5p\xf1\x87תRa\xf3_\xa9\xad\xdcf\xb0\xd8O\xfd\xc8P\xe7A\xa2H\fV`A\x90\x03\x99=\xab\xaa\xbf˫35\xb7;\xaa\xda\xd5ͅd1Ӷ\xd90\x99\xb1@\xa3\xd7\xfa\xa2\xb8\xbe\xfe\xa3j\xfcs\xf5\x85\xa2\xac..&\xed\xfds\xde\xca\xcc\xca\xdc\"\xe8\u007f:YZ_\u007fv]\x1f\xfb\xd7\xea\n_\xa4\x13\\\xe8S\x05\xf3\x80W\xc4\x11M\xf7?\x95Sr\xefO\xd4\x19\xc1\x1c\xc77k\xbd\x91\xfat\x95(\xba\xb1\x90\x18F\xb2\x90\xff9\xbaDǺ\xa5\xcdn\x19\xbe\xb3\xf4\xa3\xea\xb9YY\\\x1d\xaf.V\xf2?\xb5[#\xf7~\xc7 +\x0f9\xee\xad\xe5\u0094\x83~\at\u0383\x8a\x11\xfbD\xe1^\xb0\x95\vd \xbb\x93\f\x9b1\xed\xf6Fy\xa5\xd5\xdeI\x16\x81\x11\x8c\f\x0fjK6\x02۠?\xc8\xe3WP\x10e\x83\x94OY\xbd&\xa3\xce^\xb8\xc5x\x16\xd9}\xf2\x1c\f{\x94*\x19f\x93\xa0wu\x9e3S\xdb\xd2\x10\xc5;_o\x111W\xcd\"Ң\xad\xa8\xd7X\xa1\xe6\xe1bi\xbeM;\xfc\xf0\x9ao\xcdNv?\xbe\\\xab-W\xff\xb1\xe4\xafJ\xdf.Ww\xef'\xf3\x8b\xa2\xcd\xca\xf5`a~a~f\xb1C\x96\x979\xa1\x9f\x1d?n\xba\x87<˰*\x95P\xe3\xa5F\xd90\x13\xebçJs3\x86ަ\xbc\x9d,V\xa2G\xbc\xc6Z\xa3\xb1Vd\x84\x94\xa4\xa5W\xe2j\xc9\x0e\xfcD\x9fo\xcf,\xf4zz\\I\xe2\xaaj\x1b\xf7\xc2\u007f!\xbf\xa2r\xb1^W\xb8\xa7\xf0\xe6»\n\x85\x99\xa9|\x9e\xe4\x0eitF#Ih,\xd6\xd1\xe6\x01==G\xdf!\xb1\x01b!\x91\xc2\x00\xa1\x1e9C|_1\x17\x88t\x9cB\x9f\xe3\x89\x19|\xdd\xf3\x90\x16 \xcd\x19\x0fP\xc3Q1\xa6\xd8|M\x15\xb3\x92\xef\x1f!\u06dd\xfa(?\x86W\xb1g>\xa7\x9eiz֫g<\r\xec\x18\xe2\x81]\xe2\xacT6_\xbbT\x02kY\x9a\x8e4\xb5\x94Z\x98\x9eÈk\x84yNB\xe78\xd7}\x91:\xcc\rݲ+Lc\xf2\xe7\x8c\xd7m\xb4ER\xe2\xd0\u007f\xc7\xe9i\xcc!\xc3i\x180\x85.c4p;\x8c\xf8\xc89\xd158\xe7\xe7\xd4=\xeb\x96kY\xee\aF\x1bk\x99C\x89\xa9\xf5\x96\\\x97\xd0ЖAھf\xb3V\xf6\xb9p\x8aa\xbd]\xefL\xd6R0gH#\x9e)zp\xaa\x9d\xe8n\x19\x17\xe7R\xa3\xe9r^\xba\x13\xd7O{V\x03kIpX^~\x81i\x8c݃\xf1Ɍ%\x0e\xde\x15Lf\xea\x04UL\x95\x1d2Z\xb5\xf8\xe3\xea\xde\xf9^\x9f{\xe1\xeb\xd0O\x1f\x82\xb5\xe1\x1ed\xe1\xce\x11\x92\x11\xf2*\xf7\xb7\xf9d\x90\xaa\x80T\x91o\xb8\xd3\x1d2\xee\xa7\r.7\x19B\x1c\xc1\xe2UhFV\xa31.\x0f`\xe6\"\xc1\xfb\xf4\x80\xfc2<\xd5\xc1\xf9\xb3'\b\xf5\xebi\xa4\a\x9e\x8b\x9e\x19R\x1b\xac\x8f\xa3f♂:a(\xe4\xca\xe7W\x99\x9e\x04\xee5`\x12\n\xadxe\x00\x86\xe2\x95E\x012g\xb5T\xb2\xf9J%\xb58q\x8e\xf5KK\x9a\x1dJh\x1eS\xed\x12QJf=\x06\x96bب-7'\xf5\xba-\xaa+Ր\xf18\xa6ZTYyOq\xb9Tw\x8b\x16X\xbe\xa4\x1aE\x15\x9a\b\xab\xe8\xb4\xd2a\xf4hS\x13e\xcb\xd9ٙ\x81\x85B\xb7\x1f\xbd\x18\xa3K\xaf\x82\xf1\x1a\x16\xfa\x85\xab\n\xd7(\x84E\xda\xcd\x04\xda8\xd3}\xe5\x06\xd1\xc0\x14\x1f\r6\b\xee\xbbb\xda\xc3$\xa7\xbfPɫ\xfbI\x1f\xd3\x10\xa1;Lteܟ\xf4\xba\xf4\xaa[\x0e\xbfp\xae=\xfb\x9c\xb3O}\xe4\xfcu\xaf?\xb9\xbb|վߣ2\fb\xcf,\x96+\x86Q4\x19?\xf2\xf8=\xb7\xbf\xfa/\xf4\xb2\x13\x1a&\xa7\x9af\x19\x9e\x1d뤖:\xd6\xd7O_\xf1\xe85\x06\xdf\u07b6\xcf\x1d\xbd\xfe\xd1\xe1m\x87\xb3\x83\xfeWq\\ԋ\xa5٢\xa5$2\xeb\x1e;t\xf8\xe4\x9d\x04䐥\v]e\a}2a\xe1\xe5\xf9l6An>\x94\xfbVgUF\xd9=}3\x8b\xa1\xde0\xa3\xd4\xc2\x1f\xb9\xbc\x1b\xf7\a\xb00uV\xb4\xe1\x16\xc1\xed\xd0\x06R\t\xb0M\xb2\x0e\v\u007f\x84\x10g\xb5\x0e\xa1\xa4T\xbeO\xe4吝\fѩ\xb0F+\u007f\xadp\xdc4\f\x92f\x99n\x1at\xba\xad\xc6(n\x8e5xP\xa4\x86\xe2\x12\x13^\x1aZ3\x15ݖ\x1am\x14\x93\xa2#\x85I\xa9\xc9|+\b\xfc\xfbMS\xf8\xb3*S\xe2\xa3\xd2+\xb7y\xcdOJ\x94\xa8d\x97\\\xf2G4\x18\xe8*\a\xaa\xae\xb0\xa1\x1a\xf29/Ďx\v\xd55\x10\xb9f5\xad\xaa\f\xf0:\xd5\xcc\xd0j\xb9\xc5er\x15\xe9\xfaQ\xde&\x9f\xa2\x05\xf2\xe7`\x17v\v\xb7\x17\x1eD\xb6\xf3\xa9o&\x0f\xf2DF\xc0i<\xe8\x10C?\xe1\xc1&\x91bb\x1baRެ\xd7QLo\xc8І\x01H{[L\xd3\xeda\xf4\nMy\xce\x13\x99!a}\x1fg\x83\xf8{\x16Z\x83\xba\x9bH^\xf1k3\xdd?\xb0\x88\xef\xf9sg\x87\xa4\xbft\xd5l\xa0\x11\x0eS\x8b\xb5\x8a\x06\xbb\u007f\ue393\xfb\xd5^(\xb1\xd2:a\x89F\x8c\x06,'ri\xe3\xed\x8f(Fl'\xe5D\xab|`\xe8z\xc56\xe1\xd7S\xd2~ \x90\x9cѤ3Wtt\xb7ݞ\xd5K\xe9\x8ck79\xee4\xb1\xc6R\xc3\xe5?\xb6\"\x8a\tc\xb6ѩۏM\x92٣+Ns1\xb3H5\x8d+%\x93i\xeb\x8b\x1a\x97\xfazq\xe9!b[\x84\a\x93\x84S\xe7C:\xf7k\x0em-Tf/\x91˲\xe0\x15\xd2B\xb3\xf0\x9cg\xec\xad\xe2Tr\xfd\xf0\xfbY!\xb3\xf4\xe2o'\x9b`\xaa\x9fg~\x87\x93\x14\xd6\xf0K~\xfb\x18\xbf~\xe9o$\xb3\xdc:\xfb\x89/<\xfd\xf4\x17\x9e\xfe\x89\x8f\xbf\xeaU\x1f\u007f\xd5k?\xf6\xf2\x97\u007f\xec\xe5\xe4\xad½zˏ'3i\xb9\xa69\x15\x87W+\xe9\xcc8\xf1\xb7\xafvʼnӔ\x9e9\xf9\xcc\tU\x0e'h\xb5r:3\x89\xfd\xad\xab\x1dy\xf2\f!\xa7\xf7\f\xb9\x0f?\x8d\xa5\x93\x9dWa\xf1\xbb\u007f\xf4r,?\xdb;\xd7\x15'\xcfL\v\xdb\x0e\xfe廝>\x81'\xf8ɸ\x9bT\xf2\xbb\x15TL\xe1gH\xa6\xf6\x98,\xd5j\x85\x10\xb9Xc\x99ƫd\x87\xa6\x1e\x195\t\xbcL\xee\x99\xe9vo\x98\x9f\x8f\x06\x83\xfb\xbb337ăA\xbbU7\x8bE(\xed\x85X\xad}P\xc5\xd9k\xf1v\x9db\x11\xee\xaf|\x87\xb8\x87\xfe-X\x13>P\xa8\xc0\xda\u007f5\xd8\x17/+\xbc\x064\x96_\xc2P\x8c\f\nh\xa5\xbbt\xd2\xcb\xe3\xb4\xf3\xd4Z\b\x89Q\x95\xcfie\x86\xd9\xf4\xbb\xe1`\f7\x10*\x04\xd4#k\f\x19\xb4S\x95\xa1,O\xfe\x02:KNq\x81_\xb8\xa4\xf7\u05f8c\xa3\xa0J0\xa3\xc0\xd4 JC\xe1\xc2\xceA[\n\x9fAT촮#\x8c\x9c \x05Δ*6\x876Y\xfc\"ԉb\x84\v\\\xad\x10\x19\xd2tm\xaa\u0381\x0f\xa0,M\x80ƈ\x10x\x0e'\x05BW\xe8p\xe4\xacA\xa4:\xe2\xa9\xf1&\x8a\x87VJ]\xb1\xb5\"\x9f\xac&A\x13&\x96\x04\x9d\x9c\xea\x1c\xdes\xae\"Ą\x8a\x9c0-\ri\x10չ\x84I\"\x10[\x8eܜ\x8a\xea\x15\xb9\xabh^S4\x91\xf0>\x98\xda\x1d94\x11\x84\xaf\xa2\u007fԯ\xb0aj@\xe1R\xe6e!ʄ\xe7ej>\x12\xe9\xaa\x0f\xa5l`q\xc8(Ks\xc4\xcbq\xf5\x85j&C\xcb\xf3\xecތ\x900\xceB~\xa5\xee\xd2\xf9\xb6y\xdcsi\xef\xfb\x8b\x8dJuV+\x97{\x01\xe8\xf6\xa4ܝ= \x8b\x89\x88\xc0f\xe2\x9a\x1fj̀\nj\xa9)\x99\xde\xd4tx\x05=\xd8@&$\x03y\x05A'V-Ř\xee\t\xb0;A\xf9CZC\x9b\x99\x86\xe1!\x1e\x1e\x01\xf0\x9a\xad\vk\x9f`\xc5\n\xf4\x02\xb7\xab\x06\xf3\"\x9f#\xf9\x9dmQfٙ\x0e\x16*5$h\x81\x94 /.\x86\x05PMǎ\x97)\xb6\xa6\xb0\xc1\xccd\x98\xf9\xc4\a\xb3S\xf5\xbf\x81\xa4B\xdc#\xdcv8\x12\xea*\x8a_\x89\xc9\fq_<\xe7\x00V\xe6(\xb7\x18a\x11nzk\xaeș~I\x8e}S\x9dl\b\xc5ˈ\xbdG\x89\xc3\xf3a\xa0\x9a\x0e)\x1e\xa9J\x95\xa8\xe2`0\"\x81\x80\xb5\xa3ȁ\xb9\xb4\x130\nt\x84+kB\x97\x98\xa1\x06\x03\x04L\xe8gW\x17\x82r\xc4<\xa1\xc1\x18hv\x8c9\xe5\x03a\xb8H\xaa\xe7\xc7=\xc1\xa4\x1e\x86H\x8b\xbcL\\04A\xb9\xd6|5x\xa4o\xdbz\xd42\xf8\xac\x86\xa3G0_\x83\xb3JPI!\f]:M\xd4\xd0\xe1c\x8a\x8c\xe6W\xb8\xd5%\x10\x00\xac\x1co\\\xfb.m_V\xcfj\xe5`\xa95k\xcb\xf2\xac\x8b\xd8}\xe3\u0085\v\x9f'\xff\x83\xfcFᕅ?&Ur\x17\xbd\x8b\xbe\x97~\x8d\x15\xd95\xe8\xdfR\xfe\x8dd\x0f~\x8a\xe1DSK\x04\x97\x12\x9c\xa45\".[Gr\xed\x03ݾ\x9dl\x01V\xd3\x1c\n{\xe9\x0fF\x9a\xf6pe\x1b\xc2\xca8\x1e\xe1\xefx=\x0f$\xbc\xb8\xde\xf4\x11\xb4\xba\x9e\xefH\xef\xfdL\x91\xa6\x97.\x93ӟ\r2H\xe0\x92ɏ\xf8\x81\xbb\xad?s\xebN\x17Y\xcc&\xeeE\xb8n\x9a/\\\xf9#!\x04\x10\xfe'\xf9\x01r\xf6!\xccvzmW\xd1\xf3\xed\xa1m\x91 fze<\x851>\x83\x00\xce\xd6`a\xc7\a\x9b\xfe\x1f^\xf2`\x17S\x80dkX\x93g=\x91\x82!\xc2\a\r\xa2\xa0\u007fË\xa5\x8c\xf3C\x96\x178\x1c\xd5\xc8:\xdc\x16\xea\n\xbf\xc93\x05\xf4ד\xc9p\xef^\x83\xf1\x14\xa4\x8c\xd9.`\xa5^۫\xe3\xb4\n{\xc2fZ\xefn\xae\x0f\xe6\x04B\xd3\bҋ\x18F\xfc\"g\x00G\x90\xe6Z\x9e\x9fe\x90c\xa1\xa3\xbd\x98\xf8=a1T\x026\xaf*\xbe<\xd3\x01\xd9\xc5\xcaa\x16\xf3(^\xeb\x82\xcc\x02Y\xdcQ\x89`\xe0g\xb8\xbeMֱ/\aÑ\xd2B\x87\xd0\xf4\xeb\xd0\xc3\xe3d\xb2\xd6G\xc2\xfbI\x1fU\xdf(YO\x90Ω?X\x8bA\x93\x85_x\xba\x18F+\xd4\x0f\x8bU\xc5anV\x90J\x9d\xf5!(\xcar\x8c8\xcd\xf8ҁsq\\G\xb9D\xbcl\x9cB\u007f\xaf\xa9\xb6\xd8D\x87\xdfxv:\xfe/\xebkг\xb3\xce*\x19^>覨\xcda\xde\xdb\xdf1m\x10\x1d\x0e\xa2\x96M\xb7X\x9ck6\x8b\f#\x9f\xd9\xde\x1a#\xec\xd2b\xa5\x89\x19\x91,\xcc\x17\xc4uL-\x84p\x12b\x81Ȱ\xbc\xc0Ѩ\xef\x8fR\x8d\x91\xe9\xcaD5\x930\xbb\xd8XtL\xd0oM\xe4\xf0ԩk{\xa6\x1d\x87\x81\xabs]\xcaEW-PH\xf1\x19\xdb\xc5R\xd3\x01\xc9\x12\x04D\xc0\xb0&&3\xe0w\xae]*\xc2*\x8ai\xa5\x15\x11\x10a\x96\xe1D\x95l\xd5r`\x9d\xb3^\x1c\x96\x89\xa4\xa0\x85+(\x90\x05\xd2\xc0\xa2\xe8=\x84:\xf8\xbe)\r\xf8\xc1\xfa(zEX\xe1\xcd\xc0\xf8-\xccq\x107\rn\xe2\x92΅fy \x1b\x84\x125\xdc1\x84\x8d\x8b.H\x05\xa1{\x11?K\x95xD9\xcbQ\xa8\xa1Db\xb9\xb4\xcd\x05\x17\xca<\x91å0\xa5\x17f\xf5\x11\xae\x84R\x1d\xdb\x10\x01ұú\n\xed\x05\x96\x83\xc3%\b\x19\r\xde\v\x81\x98*\xe6\x04\xad\x8e\x94\x16\xf7\x83\xa0ji\x04\xe4\x8cd\xc8\xfe.uӶ4\t\xd2@\xe6k;\xf1\\\xd7\"\x92膤:\xc8[\x10\x0ej\xc1\xcf\x05&S\x02W\xbd\xa5R`\xd9\x18\xb4\x05\xb2\xbb\x97\xeb\v\x9c*\x8f\x1fQYÔe\xc3\x11\xe0\xc5L8\x1d\xaf\x17\xf9\xa3\b\x10\xebJ\xccbT\x1b\xf2L\xc2\xf3bc\xe6\xdf~R\t{\x1bZː\xa0\xa2H\x83\xe8TW\x014\x96\xa1\xe9\xae/A\x00j\xcc1\xf83b\t\a\x00y\x1c\x85\xb8\x8dbHZNh\x18\xa6n\xc2\xc3!\xec\x1b9\xff\x18(\xf0\x96\xe9\xd9\x1c\xfaFź\xe1\xc5\x1f\xcf#\x965\xa3\xd8lf\x02\xca\x0fChTa\xf8\x88\x83\x87ưy\xad\xdc\xef&\x8e\xa2\x86\xa1{\xba\x1364\x86\x0f\x99\xf6\xd2A\xc7\x156\xcdu\x0e\xab(\x90\x10S\xa1\xf1\xedJ\x02\x0f[\x89{e\xc9M\xa5H\x94\x14\xecU\x9a\b\x03$by\xd3ql\xcf6tǦ\xddf\x18\xa4>\x86\x0e\xa3\x00\xcfg\x80U.\xa6\x1cG\x94(\xc2\xf8-\xa6\xd4hTҨ\x1e7-\xacF\xdf\xd1\xe1\xa9@\x1bC\x8bPF\xa1\xe7`\x1a\x00\xe8Ohu\x13\xd4\x1al\bf+g2t\x84\x06\x95\xb5\x1c\x81=\xe7\x06&+\xa5\x8e\x15\aF\r#\xb6\xcdF\xa8\x93\xa4\xac\x19A\x00\xd3A\xf7-\x1b砀b\xb8\xc2\xc00\x93\xe9\xd0\xc1\xba)\xa5\xe3\x81F\xa7[6R\x10z6\xdd@E\x10i\r4f\x99\xa0b\xe1\x1d\xc5̻g\x99\x82\xd5)0\xaf\x86\xa9\x04l\xa8\x00\xd7)u\xf2\xbf\fރz\x01\xea(\xb2\xf9\xc3P\xc7m\xa8Pׅk(\xfd\x8c\x9a\x0eS\x88{d\xb0\xc19\x04g\vݷq\xec*\xdd\x0f\x86\x134\xbe\n5\a\xdd\a#\a\xb8fc.h\x8dK\xe4\x9aT3\x06&\x85\x13\v\x87\xe4}\xe1\xe7\xb9\x03\xa1J\x183\xae\xe51\x8c\x94\x990\xbcb\x98D\xa4\x8c\xa3\x18Yo\x18\x8cS\x1d\xccZ\xf8\x06\xf5f*pj\x98\x02\xb3\xb0\xc3\tz\xae\x17\x92K\x06\xddt\xe4\xa1\x15\xa6O\xf5\xec\xe9I\xf9\x99\nhMxO[\x12\xa6c:\xad\x8a)]\x89\x95ǐ\n!A'\xc1\xe9\x8f\xdd.t\x8d\xb9\x91)u\xe4\"\x16\xbaa\v\xd4\xcdL\xe9\x97\xc0\x06\xe6\xf5\x86fð/\x15#K\xe0\x82CT\x94\x04\xcc\x0e\xa5F2P\xab`\x9a\xba\xa1\x05\xfdoIG:\n\xa7\xfby8\uf4c5\x87\v/\x04\xade\x9c\x8e\xd3^\x8er\x03+hO\xd4\xef\x11\xbf\x8cG9\xa8?Q\xb9\x1a\xf7\xe4\x9c̹\x9d\xa7\xd4:\xa8\xa0$y\xac\xc1v\xbe\x194\x95\x11r/\x03\xe5h\x9bh\xea\xe2{\x8e߱\xb04\xd7>\xb4\xc2\xedz-\x9d\x9d\x91\xe3v\n\x16\xae\xediZ\x9cF8[\x82\xb0[\x8d\x03aن\xcd\x17V\xd7\xdb\xcb4H\x89\xe36t\x0f\x93oU\xd6\xdaM\xd0hq*\t⤌\xfa\r\xa1\x95\xe7N\xec\u007f\xfd\xa4\xfb\xa67}\xf6M\xe4\xf5\xef\xbcᆵ'f\u007f\xfa\xb3\xc7ϼ\xe3\xe7\xdf\x1e\xbd\xbcz\xe6\u007fI\xbfr\xfa\x8e}\xa5S\xa5/|\xe1N\xa3X4\xa2\x92&J\xd4\x14\x8e\a\x82\xda\x16\xefì\x83.\xe3\xae}:\b\x8c(մ4\xfa\x0f\xaf\xc3\x1b\xb6\x9b\x83\xd3\xfd\xcf\u007f\xee˧\x0f\x9e>\xb8{\xe3+n9\xb19\bw>\xf7\xf9}\xf5\xd6-G\x8c \xb4\xe2\x92ूU\xa8]\xf8\f\xf9\xaf\xe43\x85\x9f,\xfct\xe1C\x85\x9f-\xfc|\xe1W\n\xbfQ\xf8\xed\xc2g\v_,|Ee\x8d\x82\x9fx\x85gC\xf8\x1d#`/\x15\xd0\xd4𣾁\xe97\x9e\xc8\xdeD\x0est6\xa8\x9e\x04}\x93\xa0u7i&\x9bd\x82\tH0\x11\x89B\xf4` \xfc\xde\t\xb9\x1f\xa3A\xe3,\x91\x19\xa6\x84\x8b\xb1\xc0L\x15>\xce&H\xf6\x9eb,.\x97#\xec\x0f\x98\xc0\x13ts\x8e\xf1\x10\xe1\xaep\x98\xa1\xc3a(Q?V\x87\xb8\xdf2=\x84\xd3c8\x03\xccK\xcb\xd24\xe4\x1f\x00\xa9\xce,\xaf\x01B\xa9ܔ\x8d\xa2V\x13E#\xac\x18eY\x01E\xa7\u00ad$K\x83\x8cҴ\x18\x11\x90F\x82\xe8\xb7j\x1b\xecy2X\xf2kH\xae%I+I|Fm\a\xb4\xba\xc0\xe5\\/\xe9\xe5z\xd1=1O\xf8\x8bg\x9a[K]ݸ\xdd*z\xb6)\xe8\xcc0!cP\xb4\x13\x90v\x86\xa9\x99\x11H\xd15\xd0\x0eiI\xa6\r\xc75B\xdbHK\xae{\"#\xfa\v\x8f\x91\xb4\x99\b\xf3\xbc\x0f\xa5\v\xd7b\xac\xb5\xbd<\x03Eٱ\a\xfa\xf2\xec8\xa4'A\xa8$I3%řF#\x8d}8\xe7\x0e\xb7\x12X\xbc\a_\x92WļTw\x1c\xc3w5\xb7\x14\xd9P(%/9\x9a\xf8\x9a\xa9\x836\xec\x80\xec\xa1O\xb1\xd6\xceʌ\x91\x97\xa9\xb3\xd9!Iɺ*\x14\xef\xb8\xfb\x03U\x01л\x12\x01\xb5st\xa8]\tk7G4\xa4d\x85\xf5\xc0\xba\xf0M\xf2k\xe4g\n\xb6Z\xa51\xab\xc9]\x85\xb7\x17\xde[\xf8\x18\x18/\xf3\x85¬2\xabUt\x1f\f\xbe\x1eR\xcb\xe7؊\x06U\x89\x17D\x1e\xb6\x9a\xf5@\x9awԙH\xe9\xd8\xe9\xc9A\x12\xad\xbb\x04SQ\xa9P?\x95\xa7\x1b\xbb\x99\xe6\fGi2\xab -.\x85>Ü\x8e\x88\xb6\xecmk\x98\xcfj\x1dN\x81\xaf\x1a,B\x93P&Z\x1f\x19\xf5p\x8b4\xcb\xc95\x14\x1b\xa9\xccI\x8cR\x91\xa9\x18\xc2\xfe\x9a\n\xb9E¤\xf13\x0e\x8d<\xce\x103pua`\xa0\x18@\xc6{uc\xa2\xbc\x04{\x86\xe1\n\x919\x8b\\O\xc0\xcc\xebO\xb2Q\x1c\r\xb6)X\xad\xc3u(a}\x84A\x8c`\x89\xaf\x8f'\xa3\xae \xd7p\xcau\xd4\x1f1E\xe9>C\xd7\x1cT\x9dL!8\xf2:bR\x10t\a\xa1\xc7Kߢ\x98\xccJ\x17&(\x9d\x92\xfd\th\x95\xb0$\xa0\x8a\xcd1\xa6o\xaa\xc5a\xc0_\t4tP\xa3\xfa\xc24\x9c\xc1\xd6U\xdbC\xb74\xcf4\xcf%\x95\xb9~\u007fɵ-gi\xa7\xa3\x1b\x9c\xb4\x8c\xd0绿\x17\a\\[\xea1\xda \xadm\xe9:\x8a\x88\xb1(\xfc}\x9b\xe9\xbaO]\at\x96\xda\"\xf1ҫ\x9b$yQ`\xb8\xde\x15K\x19TK\x86:\xb2/\x12\x8b\x83\x89\a\xf6^\xc8=\xaeyU\x13Ȩ\x1f\x80\xc6t\x14\xed3\xa9\x83\xe5\x84\x0eV\xb45\x94\xc7\x15\xcc\x05[/1^t\xec0m-\xc7$^mu˜#\x93\xc1\xd2`\xb2\xd4\x16\xb8\xb4\x17\xbdF\xa3+\xa3\xa8\xe8SÌRk\xa3Sj\x04\x8dz\xb1\xfa\xa2\x1b\xd6\xc1PC\xf3\x1c\xe1t\xd5q\xfbH\x83[\xe1\xbd\xd4q-az1i\xfae\x173\xf5\x15#\xe8$L;fYA\x15\x8c'\x89\xfe\xc84\xb0c\xdbU\xa9\x97\xfc\xe5HӚe\x87k\x86\x9b\xd4\x11\xc3\xe8\u0601\x81\xea\xaeD\xcb\xe0w\xd0\xea5}\x0eZ\x1d\xea\xcf\x1e\x98\x9eޥ8M\rt\x9fLq\x1b\xc52\xa3{\x98\xa1Q\x86?2Ɵ\x143\xc0\xef\xbd\xfe\xa7N\xbbݹ*O\xfb\xf9\xd4\xfe\xcdJes\u007f\xa5\xd2\xeeT*\x9dv\xe5o;\x9dC\xed6\xb1s\x15\xe1\xff\xbey\xff-\x9bׄ\xe15\x9b\xb7\xec\xbf9\x8a\x0e\xb6\xdb\a\xa7\xafj}uA\xae?\nr]\x16\x8a*\xff|a/\xdcG쭃\xdd\xceD\x81Y\x91\x96(H\x91\x14\xfe\"\r\xfaߤ\xbe\x9f\xfa\x0f\xfb\xa9'm\xddڙ9\xb4Z\u007f\xe8]\xcf]\x8eO\xb5f\xb6\xba'\x9e\u007f\xf2\xe4O\xc0W^\x9a\xc2i\x96n\xcb\xcf\xd6V\x0fu\xaf~\xf0\xc1\xab\xc9u\xdfjww\xbf\xdcݚ\x19\x9f8\xf1\xc8\t\xc4\x06\x85\xa0\x97\xfe\"襦\xcaD\xfb\f\xcdk\x1aws~\xc8Q*Gȡ\xde \xea\xfe\xb0*\x83\x86@:\xc5F\xb1\xda덳7\u007f\xed̋_p\xea\x91G6\xcf,\x1c\xbf\xf1\xd8B؎V\x1a\x8b\xbfPl\x04\xf0]\x96|\x8d\x9e?s\xfd\x13\xa2\xb7\xb33'n\xdbZ8\xbe\x00\xff\xd3\xe1\x92S)ݦ\xe23\u007f\x8f|\x1f\xfa\xa0\x83\x18d\rn\xbd\xd6\xcd\x05\x8c\x12\x15\xdd\x1e\xbeG\x98\x1cCk\"\xca!e\xb9kM\x1bM\xb9yɻk7\xb5Ƀ\xefxǃs\xf740%\x1a\xb9\xff\xa5I}2\xdb9\x98\x90\xfbH\x80ӵ~ \n[~Q\x92^\xb1|\xec8\x01i\f\x1d4[E\xcf\xca\xf5W\xb7\x86\xed\xb6\xef\x94\x03¾n٫\x8b`\x16\x94\xa4\xeeZ~\xd1\xec8r\x8b乱/\\\xf8{(\xe7-\x85x\x1a;T@\x8c\x94\xa2\xa2\xedd\x13ԅ\xf1\b*>\xfdHe?L0\xa3\x06&\xbd\x1f*@\x95De>\xbf\f\f\x9f\xfc3\xec\xefL]\xfc\xc9\xf7\xd5Oo\xd4_\xe2ͻ\xef\xf5\xea\xf3\xde\xfbd\xec\xfe\xbd'\xdf_;]\u05fdHw\xf1\x93\xff\xf3Yg\xc8\xff\x9e\x9f\"\xdd\xe9)\x0f\xbd\xaf\xbeq\x1a\xce\xf1\xde\xeb\xcd\xd5\xdd\xf7\xc1\xa5\xe7\xbdH\xbe\xbf^\xd7#Ow჻/\xfb\x1e\xaf{\xe1\xe5'\xa8X\xb1\xdf\x06;\xe5\xb3\xf0\xac\xad\xc2ja\f\xcf{\xa4p-Z\x82MҠ9\x9d\xef*A\xc6&\x18\x1a\xe9\x02\xe9*2\xe9q/͐oo\xfa>\x1dd T\x16a\x16\xe5\u007f&\x1dWe\x8d\xe8\t%k\xbeT,~Zӵ⧋\xc5\xdf\xd4MS?\xa7\xb7\xf4\xb0\x9e\x86ዛE;L\xf0]\xb1\x91.X\x86a\xd5\x0f\x9b\x86a\xb6\xfe\xa2T#\xb5r\xbbZ\x1d/\x04\xc1B@>a\x9a\xe7\x98i\x8b?\x8b\xcdGL\xf3\x11^4\xfe\xcc(\xf2;\xce6ff\x1e\xe8\xf2V\x9d\x9c\xedtn\xf0\x836\t\xc3^؞k\x8fF\xc5\xee\xcc̔\x0f\r\xc7\x04rQ\x9c\xc9#p\xa3<1#\x8c+\xfc]\x91\xc3)\f3\xc5\xedz\x10>\xdb$\x9d\x06\x81z \x91z\xf9\xab\x1a\x97S\xb0\xe1@\xd9\xc3\xe4ýu\xb3.\rOV\x0eo\x95\xcb[\x87+Fl;\x12נ\xc1lcY7f\xaa\x8e\x19UR\xa1\xaf\xec\xd3\xcd\xc0\xaa\xcb%\xb2ln\x98\xcbdI\xd6\xfdD?\xe8\xb6\xdaVF\xe6\xccN\xcb%?\xbe:\xe3\xb4N\x86\xe9bxd<\xbe\xaa\nJT\x14[\x16(\x11\xad\xe5n\xbdҔܮE\xf5\xeec%n\xf9z\xfd-O\xb5ZO\xbd\xa5\x1e\xd8N\xf2K\xb3\x9d\x17\xbf\xb83\xab0P\n\xb7z\bV\x97\x8d\u008d\xa0\xc1\x15\xc8\x1a.*\x8a\x0e\rm\x01\xda\x1f\x80A\x9e\xe6{\x86\x98\x84\x02I\xd5\x14\xb9 Y\x04\xb9\x8d\xe8/$-\x84?\xf5i6\xe8\xeeh\x93!O>*b`5\x88\xe9\x06.L[\xb0\xc5\xc6S\x83\x1f\x01\xd6\xe4)\xe2:\xb8\x9f$M&\xa5\xa4\x8f\xf2Vx(\xb6l[0\xcf&\xcc`\xc4\xf6\x98\xb0m\xcd\x17ڡ\xb0Ż5\x91\xcc'\xa2\xf6\x93\xc2\xd2\x1c\r\x9d\x1c\xc8\xfe\x84,\xcb\xe4ߟ\x99)Z\vB.\x1az\xd54Μ\xe9\x06֢\x14K\x96\xac\x80P\xde\x04\x85<@\xc7\f\xac\xdd\xc8S\xd1\r\x8b\xf4{D\x13A\xc9\xdeZ\xc7\r\xc8\xf5m\xab\x14\x80`\xfb\x1e-\x86\xaf{\xa4\x9c\xa6\xe5G\x9e4~*\t\xd0+\xf7\x1e\n\x95\xa3hu\xa8MJAϼ\x8c{\xe6\x96incF\xa7\x97\xbd\\\xf8Ǝi\xee\xe0\x1bryN\xe8\xfa\xa59\xda\x159.&$\xca9\x84AC\xe9\xef\xe5Z\u007f#\xf2D\x99\xc4\x02\x03\xcf\"&\xc2\xe7\x9dSgOM\x11Io\xd1,\x02\xdfg\x83A&\xe0\x0e\xa6X\xdf\xd9Q\xe33\x05\xb9\xf0\xdf@.\x048\xebH\xb2\x17\xca\xd0\x1b\xe6\xd9S\xc1\"\xc6\x1d\x94\xde&\x01\xfd\x06T\xb98\x89\x11r\xdc\xc7\x04\xf0\x1dW[O\x06q\"#P\xc8\a\xfdQo4\x88\x92XĠM\x91o\x98\xf1o'\xee\x83\xf7J+\xf9\x14\xfc\xbd\xef\xfdb\x16i\xbc\xa8\xe6D\x9c\x9c£YF4\x10\xf6\x02c\xf3\xc0\xe0\x8aA#8E\xd4\nz \xfcϽGF;v\xfeg\xf7?̀zT\xaa\xdetH\xd3fW\x1fB\xf7\xf2\f\x17:\fN\xca\x1e\xbfW\x88\xea2(\x14k`\xa8\xe5\xf8\v\x17\xec\x88><\x0f\xb4\x1a\xe8~\x8b\x041\xfa\xf13A\xdaq0Q\xe1\xa6\x1e!k\x94h\x87\x85\xf6\xfc\xa6>\xd0\xe1\xffk\xc1\x1a\xd3\x18{\xcbX2\xed\xe9\xc69]'\xdf\xd5\xf5ݯ\xbc^\x18\xf4\rJ~\xff#}\x15y]\xc1+T\x91'\xe7\x87c\xe9ɨ+U\xa8~:\x01ѭ\xe8\xfe\xe8\xe9\xb0Z\r\xff\xf9\xbf\xe0+\x99\xd9\xda\xde\xda\xde\xde\xde\xfa\xfc\x1d\xdb[[\xe4u\xd5p\xf7k\xea\U000d5c3a\xfb\xb5\xaf\x9d8\xf1\xb5\xf3'N\x9cg\xe7\x1ez\bq\xce{6\xb8\xa3\x90X]\x15\xbb\xdb\xcdb\xd9\r\x90\xb0p2\bH0\x19\x85\x83I\x97\x84H%(C\x82dY\xacI\x02I>p\xf7\xb9\x9b\xee\x9b{\xe4e7\u07fb{\xf8؟\xde8<\xb9\xfb\xb9\xe1\xa9뎷\xc8\xf8̩o\xbe\xe5ر\x03?}\xc7\x0e\xf9\xcb\xc6\xc7^\xb4\xb3\xdb'\x1f\xdd\x1d\x8c\xbe\xbf\xfb\xe5\x8c|v7\xdd\xff\xc0\xa3_\x1f\x91\xbf\xd9=B>\xb9\xfb\xbbd\xeb\xd7ϒd\xa4b\xe2\x17ṯ\x87#\xa7p\xb4pC\xe1\x1e\xb4\xcdB\f\x89ȺH\x1a0\x00c^eJ\x10\b\xb0kP\x17\x16\xed\f'\xbd\x00e\xbc\vm=\x1e!%\x88T\x19/\x06`\xb1\xe7y\x15\"9\x8bʺ\x02\xbe\x88\f_e\x86b\x9c\x824F(f\x96\xae`z#9Atf\x86{\xa5\x18\x16\x02*I?Y\x83\x86L\xf1\x12\xb4\x883\x04z\xa2\n\x925\xf48\x83\x1b\x80\xfa\x95\"\xbe\x13\x1e\x05\xb3\xbf+w\x9b\xc0\xf5\x00}/0\xcb{\x93i\f\x06\xe2\x9a\x14\xf9\xbd\x88\xa1\r\x05,\x95J\xa8\xe3\b\x04Q\x06\xc3\x12\xccj\x95\xfe\xa7;\x92\bv\xec\x8e\a\xa0\x19(Bc\xdc=V\nx,UR\xa0\x15\x06\xd5T\n\xd1`\rQ[\xd8\xe4j\xaf@bHG\x17c\x85\a\"g\xc0ν\x84\x18\xbc\x81\xe6<\xf9k\x8d\n\x06\xb6\xa5|\xf5\x9dw\x1c:H\"9G\xea\x8cچ-,\x1fQ)\xc4o\xb6yZQx\r]\xabS{y\xc4\x1c0jj\xa2\x94\xb0n\x9b\a\xc21=\x83P\xdb\r-\fe\xa3\x1a<\xb3\xf1\x82H\xb7\xe13MⶎK\xd3V\xb1\x12\xa1\x11O`\x86ä\xb5M\x97KG\xa6<\xd0\xe60%0S|3\xbb߶\xa8CLj\xd9 \xcb]\x8b\x99\xb8\xfb\a\x86\xa4\xad\xcd'\xab\x15\x97\x04:+\xe2RV\xd6i*\x89Dqi\x80a\xa91\u05c8M\x931\xe1\xf8\x06\xa8\x14\xc2\xc2\xddY$w\"hR3\xdbj\x16\xe3\xb9\x16\x02۩\aR\xd6\xd1\rDdQQ\x94\xdcwCnj\x0e\xd5)\x89\x10\x01ՠ&\t,\xb0\xa1-\xb0\xac)\x88c\xbao\x83\x99\x8dꌛ\xaeI\al\x99}\x8e\xcfE\bbY+\x16뵬\x97z\xa9\xe5\xd1\xc0*F\x8dp\x89 P\xe6U\x86cڎ[%%?(\xba\xf3\x0e\xc7\xec\x0e.\xb7]\xd43,c5(\xb6\xc61\x03\xe3\xd9^*\xc9\x06gF\xa2\t+\xafp\xd82\x1c\xa8\x8e\xc0--\xe2[\x9e\x91P\xf3\xf8R\x05\xca5\x1bM\xdfo\vˀ\x85\x14]!$4b\xca1k\xc2bo\xb1\xc6X\xe8\xfd\xa3\xb4\x10\xaae\v\xdd@*\xaczQR\xe4J\xb2]\x17.\xf0-&B\xca0\x15$\xac\x9c\x13\x8e\x1a\x86\xcaR\xc6y\xc6\x13aٔ\x1c!܃v\x00i`\"~\xd4ps\xb0\x93c\xe1\x1e\xa0\xe5h6\xa6\x05\x94\x9c\xa3\xe7\x03)\xcbu\x9d\xcf1Љm\x8a\x89\n\x8dVPB\x8eO\x01M\x1c \x1e\xc94\xd8W\x84\f\x02\xe2\xb9\xd6\x1d\xe77\xb7n\x83\x1b'\xcb]\x85n\xd38O\x8aF\xc0\x89ѫ\xbbBH\x1b~\xa5\x8cK\xc9r\xd5c\x8e\xd4)\x88\x8b\b7\x96M\xdc\x1c\x15\x1a\xd26\xa1\xe7\xc7\x04\xf5>0\x89\xef\x16\xd3\xe4M\x8ef\x19\xb6\xc9M\xc7\"L\xb7-\xd3\xd7#+\xd0M\"\xa5(\x9a\x12w\x9f\x89\xe0A\xcb6c\xccdG\r\xd9j/h\xd5\xc0\x920b\x84\xa6+\xb0\x1b2\x96PV\xb1\x8a\"A>)\x85\xb7\x82\xaa\x17\x9bE\x81\xdc#<)\xb9n\xbd\x06\xc6\x19\xb6\x1b4\x03\xd7,F\xf6\xf6\xd4yLB\xaaI\xc7N@\xf9\xaa\xcf\xe0\xc7\x02\xe9\xac{\xc4\xd4lf\xb3\xdd_\xb3\x8b\x91^\xe5\xa6G4ܿ\xb6Ҕ\xe9\x9e)\x82\x1a\f\x9e\xd0\xdfL\xa1Sd\xbd\x99\x8a\x982\xcbe\"pBӂ>J\xbc2\xd7K\xe5(\x98/\xc2M̯;m\x16x)\xee\x9f:Q\xd1\xc7!]ug\x96|\x9f\x91\x92\a\xe6\x13\xd1\x12\x8f\x97|\xb2Ta\x86\x81\x01\xa3.\xd7\bR#\x12\x98\x11\xdaަ\xa7.\xab\xb5\xc4_\\\x15P\t4\x01b\x84\xaa\xa1\xf7M\xc0l\xafU]\xce}&\xedZk\xcd8\x06\xcd\xe3\bS#\x0e\xee\xfd2G<\xa1\x19\xb3\x96\xed\xf9k\x03K7\x9d\xb2\xcfylKܟ\xd5<\x930\xe9\"\x15\x1b\f\x89>\xa3\xae`\xebTc\x86/\xa1\xedm\x1b\xf9o1;)\xdc=(\x05\x16R\xc6Y\xa9\x88\x04#\xba\x01\xc3\xdf2m\x06\xddr\x18\x16u\xa2\vX\f\f.\x03˄1j*\xd2]X>`ȡN\x8ey\xb0\x1e\x019\xf9\xc2\xc2\x1bA\xf3\x83U\xbf\xdd\xc1%P1\v*\xa8e\x06k1h\xde]\xfc\x10A\xa3\xc8\x14,\x87\xb8\xf9\x89\xe8\x19T\xdf\am\x10\x9f\x18\xe4\xa7H\x8d\xd3)\xe4\t\x14\xaa\xb4;\xea\x0f\xfa\xd9ڔ\xbb,Nj*1\x06he=\f6R\xe4\xf4 A\x16\x89\xe2\xad\a=C#\xbb\xbf$\xd0{\xf7\xa8\xee\xc1\xeb<\x15`\xcet\x1ec\xe8\xe5Ҩl4p#\x83)\x80K\xd9\xf1&MM\xe1&\xce\xe4\xe8\xcb5wɆǖ\r\xa7Xq\\\x12\x12\xf68\xee\x8b@\xb7\v/A*x\xe7~\xc1~\xd5\x00\xcb\xdb@0\xa7\x8f4\xa8\xd0\x14\xba5\a\xaboě\x860\xeb0\xc8D\xf0\xbc\x04,.X\xb8\x1c\x8d\xd5\"M\xe5}=~̊\x1c\x17\xd4s\x01u\xb4\xcdJ\xc0\x10Ug\x99\xe8\xbd\xf4\xcd\xf8\xca\xe6\xf2fBD\\\xe5e\x91\xb3\xe8\x96\x0fd$\x82\x9a\xfe>b\xfc\xb0\x9b\xe6M=\x8dS\xbd\xf6\\\xa8l\xa1\xe0\xab|\xe0\x9fV\xb6Ç\n\xdf!er\x1b\xf9\x19\xf2-\xcah\x8f\x1e\xa5?\x80.\xaa\xb06[f\xeb\xa0\xff*\x87\x91rO\xcb\xee\n\x1fa\b\x93\xca\xf3\x86\"\x1b$\xf1\x1a\x98\xef\xf1\xda6Y\x87\xce\xc1\xbdg\xc5O\x93\xe5(%eC!\xd4I.\x10\xcc}\xb4A\xa6\xe2\xab\xd3\xedM\x14\x81\xdcZ\xb4ޠ\xaa\xbb\xa0X%i\xfb\xf1Z\x82)\xd4@\xff\xc5S\xe8\xfaHH\xccÊ\x84# \xb7{x\xc3L\xf56\x8e\x86>\xa2}\x15\\/\xeb\xc0\x85\xebQ\x0e\x95\xca#\x90\xc6\x13(u\x9c\x1bs\xb8\x97>%\xa0\xc4*tU0,&\xb8\xa9\x834\x86A\x02\xea9\x1d$\nH\xdd\xd9R\xe9\r\x14\xf5\x03:*\xe2\xb5إ\x91P.|\x90\xeb\xf0h\xdb\nݖuF\x93)\v\x1e\x1a\xe8\xfd\xfc3\x8c\xf8\x95]\x84\xcbEx\xb0\x90+\xf8\xbd\x05\x82HD\xd4?g\x05fm\xc6\x16@缪\\\x17\xc9\xf9\xa2\x04yn\xd6\xe0\xab\x1c%8\xec+\xe4\xde`Z\xeed\r\x99Y\xa1Eq\x10+R1\xd9\xc90\nVm\x10D\x1d\x8cG\xeb!Go\x84Ю8\x82\x9e\x01=\xaf\x87\x80\xef\x1aM\x06H-\x88\xf9\xa4\"\xbc\x1f̤\xd18C\x02\xc1u\xd1\xc1\xfe\x10\xb9\xfb\u007f8\x1a\xa7{\xa1\xa5\xa0H*\xb48\\\x8a\xfaH\x9c\b\xa4\xd9\xec\xa9+\xf11\xa133x\x9e\xbc<\xa8\xcf8\xaff\x17U\x1ch\xc85h\x02\xc1\xc0V\x86\x8b\x17\x9f\x86\xbe\xa9\x91\x04ъ9Zo\x1d\x9a\u007f}8\x19.B\xabC)X9\x15 \x12!ͨ\xe8A\x0f\x89i\x0e\x1c\xd0\xe7:\x91\xf2o\xe1iȗ\x88M\v\n\xf3_\xfe\t\x88\x1a\xe3\xc1\x87(K\xb6\xf6\xc1 b֗\x84q\xef\xbdM\x9d\xd9\x0ei\xb5\x88NV\x12B\u007f\x8b\n\xc76t\x97bl*\xe2l\x1b<\x87w \xd0I[\x03E\xc6\xc7\xe5.\x06\xf9\x0fbS \x9c\xe5\x93s\xf3\x88\x17cY\u05ffM!\xb6\x9f3|\xfb\xcd&\xed\xcdq\xbe\x90\xc1r\xb6x7\xcb!Af\x15VG\xae\xc1r\xcc}\xa7&\xb8c*\x90\x8c\b͜5\x8fjm8ˈ\xa4\xa6\xf0g\xe1'\x84i\xe9\x8e\xc2_sV\ue62cV\xb1Mľ\xe1\xbf\xc5\x15F\xe3\aBԕ\x18g\tHI\xd0\x14\f\x9d\v\x90\xd7,Ը\x12\xad \xdac\xcd@9\xc5\x15\x14\x8a\x90\x80\xd1E\xb9\xb7u\x82Ѳ(\xc4\x19G\x17=\xad\xa0\x0e@1\xa3#Q\x89\xb9@\x15LrJ?Dr\xd0\a\xf1o\x1bk\x83!\xe4p\x92\x97C\xdblD\x98+x\x99\xd6A2f\xd4\xec\x98,z\x1a/J\x84\u0089\xd8\xf2\x88\xe1 \xee\a\xc1HR\x81\xc0\t\xed)\xbc\x17\x82\xfcH\xb1&(uu\x85\x93\xcb[\"\xc2\xc7d\x04\x05\xa9\xfc\xb8>G\xfe\u007f\xf4O\xb5\x9c\x83\xe9\xb4\b\xfd\rr\xeb\x037\x81 g\x1a\b7\x8b>L`(Y\xccc\x1c\xa9\xd5\r\x1b\xd4\"\xcen\xa4B\xc0\x94\xff\x13D\xfd}\xe6e\xd0H\xaf\xf8q\x90\x91\x1b\x9b\xc4\xe9\xb6j\xe8\xd2\xf9\xcb*\xa3\xe2q\x16\xed\x9bذZk\xdf\xde7\x81[\\\a\xcdc\x10DŽ\x0e\xae\n\xecL\x15\x82\xeb\x1c\xb6\xd5\xf6\xb8\xac\x86\x8a\xb8\xb1\f\xe3\xc4RH\xfa\n!G\x8eBk\x1e\xde\xfa\xb6\xd6Ů\xce\x1ag~\x8a\xb0\x83G\x85\xb8\xfa\xd0\xd5\x13բJ\xe9%䥈\xfbs\xa4\xe7\xa2P\x8a\xa0㎭cvYn\x18\n2\x9f\xe8\x14\x86\x8c\x81\xba\x03\x92\xa6\x92\x1cwE`Lag\xc1\xb35\xa4\x19\xb5A\x013\xa1\x8700T\xf0\xb4\x1ewN\xe3ȷ0\x00\b\xcew%\xe36R\xf1\xf1YEȎ\xf0)ʐ9\x1f\xf1s \xacLՒ*\x8d\xb5\x96\xa7\xb2\x06eG\x9bǃUN9\x9dCBL\xb8.\x83\xb1Ư\x9a\x06\x12\xe8j\xecS_A\xd4\xd19\xc6\x10\xe6\x86@w\xd4\xc0Ԟ\x19\x8c\xab\xc1\xf3\x11\x8d\t\x0f+\xa9\x968&\xde\x01\xbf\x06\xcdP\xe8M\xe1\xbe\bKn\xeb\b6C\xa6}d\xb2\xacE\xf0\xd9\x06\x14\xa3\xf9\xae\xd2\xe9\xb0E\xf9\xee\x17\xb4\a\xc1h\xd0\x11b\x86\b\xc8&\xa5MM#f\x8f\x92\xc1\xc6'1Y\x9bU\xc6\x19Q\xf1J ?\xf9\f\xd3z\x02t\x97\xaa\xf8\x82\xa7\xcb\a`\nK\x82\x9c\x1a4\xf5\x85Y\x88\v\x85\xc2m\xf4I\xd2+t\nY\xe1\xf6£\x85\x1f/\xbc\xa6\xf0\xde\xc2_\x16\xbe]\xf8'\x92\xc2sn\x92\xab\xc9-\xe4nr\x8e\xbc\x91\xbc\x87|\x94|\x15l}\x95\x84(J{\x93\f\x14\x98\x1d\x92D`\x1bN\xd0>D\u0085\tZ\xbc\xe3H\x8e3X\x01\xb3d\x02\xab\xa0H\xf3=\xe3\x15(\r.\x8d\x14\x12\x18S\x19\xa3\xf3\tVC̙\x98L\x86`7\xa2\xe5)Ѿ\xdf&\x03\xb9\xb6C\xc0\xb2\x94\xf0\x93\xa2\x0f\x1e\x93$\x8dЉ<\x1a\xca\xd9\f\x99\x1eP\x0e\xf4\xd6\xc7\xcaQ\x82\xf7\x10\xe98\x1b\xf4\xb0\x02\xc8C\x15%q\x8e \x8f\x12\x99\xc4\xfdI\"\xc7=9\x82\xe2S1\x88\a\xa2\vksW\xe5ٞ\x80\xfc\x81\xfb`4\xddx\xbd'\xb7\xa9\xcaa6Y\x9bĽ\xae\xecu\xd1\f\x1e\xad\x8d\xd1\t\x90\x82b\xa7T\b\xbe@\xbbP\x99\x01\xfcǪ\xa9\xe8\xe9m\xa4\xc9\xc0@>\xb9\xc1\xb692u\xadP8-\x8d\x91\n\x02ND\xca\f\x89\xdbu9[\x0e\xd6\u007f\xdc\xeb\x88$\x8bS\xf5=Bl\x06\x88\x13W\t~h<\x1e\x88x\"\xd0\x1f\nR\x05\xb5\x8axm\x83nS(\xb5\x03rn q\xf3m\xefZx\xe4Q6e\xb5\x19g\xfd\xe9\xadcx\xb8A\x0e|G\x054!\x1b\x1a\xc2\u007f-\x81\xack\xe8\xc4\xd2)\xe7:\x03\v\x12f\x901\x03\x9f\x81\x15\x01\x96o\xa4iJ{\xc4E\x93)\xb8\xa1\xa6\xa65\xd7rX\xad\xa6\xe9\x99\xe5X\x86\x82-\xc2\xe0F\x84\xa1\xae9\x86\xf6?\xaa\xed\xfd\xa5\x9a\xaeW\xf5\xd5\xd5\xdd\x1fp0\xb0\x02Mgh\x1f\xe3*\xac\xe6\x05b\x1f-\x18\xb7\xdcU\u0084\xe6t\xb69\"Q\xed\x1a\x83=\x8d\x11DL\xa1)9\x94\v\xc6\x1c\x8cW\x18\xb5\xbc\x02\xb7_\xc0\x85\x1fw\xb0\x15\xdc\x17w\x01v\xbfe\x82)\xa1i\x86t\xed\xd4\xd0-K\xdf\xe7\xa6W\xc0\x90\xc7hh]\xea\fC\x81\x04Sl\xb0\xa0S\x82IN\x1e\xd8t\xaf\x97\xf2\xb8;\x9cu?\xed\x97\x1c!첟ԅ\xacǡ\xebu=\xefj\xb9 \x97\x961,j\xe1\xb8Nd\xbb,1nE\xe0V\xbe\xe5uam\t5\xa6D\x93\xc2\xfe\xfe\xd7L&t\x89\xcaL\xca&\x9dg\x8fz\x01\xe5EO\x1a!\xda/*\x10\x06LU\xa1\x18!u*\xbf\x82\b\x03h\x1a\x1fA\x85\n\u05ccD\r\xc8']\xb4`\xee\x17\xcb\xf8\xa4`_\xc3j!\x14V\\\x03-V\x01KQ,\xee-\xf4\xf8\xe4\xf8x0ݱq\\\x0fĸ\x8e\x14<9\xeeU/\xf1A5Y\xa7\xfaI\x9d^+\xda-\xed~\xc9tC\xe1\x19\xb9\t\x8b#F\xeeX,\xaf?\xa7\x92k\x0ej\xdb\xd8-\xc8SI%\xea\xda\x1c\xb7ƹ\x96k\x18\n\x8bΔdT\x90T\xe8s\xa6@\xb6E5\x04@{\x87\x95\xee\x1cf\x91\xb6\x85\xaa\xa1\xd1\xf2\xea\x86\xe5\xfa\xa5\x18[\x9d\xa9\x8am\x92\x1c\x15\xa1\xd0\xe7~l\x9c\xd0c/\u07b4\x8aq\\\xb4\xe2z=>Y\x83\u007fFh\x18\xe1!\xd9\xeb\xc9\x1b\x85\xc1S\xc5\xdc+\xc0\xf4\x04\xf3\r.\xcd4\xdeA'\x8fĦ\xb8θQ.\x81\xf2c\\k\xf0L_x\x88\xf8\xb6\xa69\xbe\xa1\a\x1c;\fo\x86\x1c\x03\xd0\xeaP\xd2%\xfc\xbaF\xa1\\\xe8\xe6\x1e\xd8\xf1\x94\xe9f4\x98}\x16\xd3n\x9e\a\xb7\x8f萜\xe0\x00\x89o\x94\x976\x9d\xa0+\x1dt\xcdGm[\x04\x01\x99+V*\xc5\xdd\xf7\xe0\xeb\xf3\xd3\xd2\xdaj9}`ǰlc{\xd4j\xbd\xaf\u05ee7Z=\xbd\xfe\xf7\x86~\xc4П\xfb\xf3{g\x92\xe7\x16+\xbb\xff|4h\xfc\xfb\xfa\xc3\r\xdbx\x05\xe8p\xf5^\xa3\xf7\xd8;\x1e}\xf4\x1d!\xcb9{>C\v*n\xbc]8Z\xb8\x06w\x951\xb1\xf9\x00]\x9a0\xe3UN\xb2\x9c\xae\x00\xf4g\x15y\x83\u07b4\xf1d\x85\xa3\xb1\x89\xe0;\x8c\xc1\xd8\xe3\xf1\xce\xf2̈ɘ\x19\x14w\x00H\xe1\x9b\xdf\xfc\xe6$\t7\xb8(\v/6+\x94\xda-G\x9f/c\xb8i\xad|\xb0q\xf5\x9f\\\xd9\x06\xd5\r\xb4\x05Y\x8a\r\tB\xbd\x86@\xec\x14\x06\x87\xd3vEϨ\x8e\xa2xk\x81\x14.\xc0\x8f\xff\xdd\xef~\x97|\x00J\x8c\xa3+\xa0@\xe9Ef\x85Q\x9b\x99\xa2W1X/\x8e\xf4\xc65/\x87\xf2tU^\n\xe5U42-\x8f3\x9bXڬQ\x1d;\xaeA^\x89ő\x02\x94\x97s\xeb\x18\xf4\xd5\xe4|\x81\x17\xbcB\x1f\xda\xe0.\xdc\xf1J\xe58'\xd3D'\xecx\x16\xe9\xeeA\x89WA%\xa0g\x0f\x11\x92\xa0\xf2\xe8\x91t\x1a\xf0)U^\x9e\x15\x85\x1e@sO\xe5\x8d\xc7Pw\xf5\x8a\x1f`\x02 \xc46\xa6\x92\xfc,\x8f\xe7\xdc?\x8c\x91\xf0J\x9a%-%7\xdfG^\xf0\xab/\xb0\x8c\x97p\xcb'\xdc\xd4\xe9\xf57=}Zs\xaf\xbb\xc2,j\u007f\xe74\xe0\x81\xf4jD\xac[\xfa3<\xb6\"\xfe\x18\x8f\xe9\xda\xd7\x1f\xe1\xf1᭫yЎ\xf9\x8bx\xc87\x84GjƊ\xb5\xbd\xaa\x05\x91\x85\x10\xed\x15\xd1\\ߗ\xed\xb3\x12\xd3gM\xd7Z\xa2\x04\x14\xb6\xe2r\u007ff\x10J\x87\xc7\x1e3\x8c\xaf\xb2\xd0rf\xdai\xc91\x97\xb4Ǵ\xa5Ʋ(9V}Y\xbcÏ\x96\xf8\x8f\x8b\xa5F\xa6\x15=\x97\x17*\xc8+F_E^Q\x10\x85Za\xb6ps\xe1\xde\xc2s\v\xef(|\xb8\xf0g0\x1b\x17\xc8\x16\xb9\x91\xdcC^I\xdeK~\x9d|\x81\xfc5\xbd\x99\xdeA\xef\xa3?F_K\xdfBߝgY\x90\xa2\xa7\xe5\xd9Qѕ\xbc\x97f\xa1\xb3\xbe\x96\rwH\x1e{\xd3G/1\xd8n\x989Nefɡ\xda\xe8\xabUTFSJ\xbd.\xc2\xf1\xb69C᪶;1w\x17\xb4n\xba\x8dF\xf0\n\"\xbeF8\x16\xa1D\x8c\xd5J'\xd0/`\x1c\x83\xfe\xd0` \xf2F\xe8$\a\x03n\x94!/\xc1\x0075\x13\x19\xafMr(\xf8\xa4#\xe3~\x93`\xdc\xf0p\x95\x8c:\x98X\xb8\x01\x96\xa4J*:\\A\xa0\xd9\x04\x13\xbb`\xc7waT\xa0'~\x9c\x0e\xc7\xeb]\xbc!\x1c\x0e\xe0\xaep\x98\xe0e)\xdct0\x19#\xf8|\xa0\xe8P\xc0\x94C\xbbp\x057\x1eRl\x14\x05SD\xa38\xdd$\xeb#\x958v2Z\x03\xa5\x06\x1d\aI,\xd5\x06\xc5Dٙ\x93\x15\x10f\x93^7O\x03\xddS\xa9\xfd\xe0\x86\xeb\x9d^V'\xd0\xfb\xfd4Y\x1f\xe1e \xdecx\bL/\xaf\x8c\xd2u,\xa2\x87\xfb\xed\xf0\b2\xf1\b\x88\xf7\xc9h\x85\xe4\xd1\xc1\x9d\xde\x04L\xd0\x06ɹE\xfaxj\x86\xba\x8aG\x95\x93=\xd9\xc1\fR\xb9\xd1/\xb2\xe1(\x93p\x98'\x98L\xd1\r0\x19\x80J\xd2\xc3|dj\xef\"]\x03{\x1d\x11\xc0\xb8\xa9\x80;62\xc5\xef\xa4:\xea)\x9e%\x9c\x0e\xa0\x03\xad)\x88\rv\x1bn\x12fr\r\xbd\f0\x9f20{W)\xcc@\x98.B\"\xdbg\x86\x1b\x12\r6\x9b\x8e\aX\xea6\xb2d7\x18&\xad\x1c\xe5\xfa\x90\xeah\r\xd5\x1e\xb5Z\xc9$O\xab\x98\x8ePk\xec\xf4\xfe\x0f\xcb2M+!w\xf0+\x16\xef\xbd\x19\x15\xe0[\x9f\xb3\xb2\x81N\xd8\u007f\x87\xdbi\xd4\xd0\a/\xf8\xb0\xc5P\xe0c\xa2A\xdfv\xc1\xb0Ը\xb4k\xc9\xf1+\xaez\xf9\x12\xa9=:&z\xf9\xf0\xf1\x17,\x04\xb6S\x04;A\xf8\x16\xe5nٶ\f\x05\xe8\xc2@Q\xa5\xa7\x83\x81#\xf2P\x9b\xc0@\xf6\x01\x10\"\xfbp\x8b\x1d\xe1\xbd)\x8a6\x0e\x16\xd4d\x1a\x03A\x15\x1f\xbd\x89\xa4\xd1:U\xb1\xbf\xca\x12\xa4`~\xa3M\xd1S\xf6\x16FT\xa1j\x0ek\xa6\x83\xc2ٵT\xfc\x12\xc8Ci!v/\x0f\f\xc6[\xba\xb1\xa31\xd7\x01\vUJ\x03\r\x14ak\x8b\x16h\x01\x11T\xb8\b\xaa\x97\x85$\xb6$,\x82}\xa5\x196z\x8c\x99G\\\xc7\x02{G\b\x17\xd4 X\xd1Q\x13\x13\xba\xcaϥ\x02a1l\x19\x04\xba\x8b\xfa\x9c\x8b.q\xf4\xd21郑\xa1\xd3R\x8cA'\x94\xe7f6Z\xc3*<\x06\x14\x91\x84`J,\x94\x8e\xa8yi\xac\xae#//:?U\x92-\xa4ӷ\xb8#A\xb5\x00s\xd8;v\xed\xec\xe1\x83q\a\xa3\xba8\x18\x92>\xac^\xa1\x95\xee\xd7\x02\xca\xea\x8d\xc0\xb5\xef\x86V\x03\xe5l.\xb4\x83\x8a\xc9t^mBI\xa0\xdap\xbb=S\xb3k3\xdaB\x83uh\n\xfd\xc0\x8a1\x81\x1a\x85&\xddr\xd2*j;Ic\x96\x97o\xbf\xf1\xf0\xa1\xe5k\x16\xd3\xddG0C雭\x84\x05V\xf5\xe0\xf3\x8f\x0fRB\x96N\xf4\xd8i\xca,D\x90Kӯ\x99Ďʾn\xc6\xf3\x86\xf4\xd2Z\x14֚\xebG\xaf8\xf3\x90K\x8dr\xbf\xd7\xd8\xfd\x86燎\x88\xa4doյj]\x1c}C\xee\xdc\xd0\xd1:\xc3\x1c\x92\x06\xc9\x03\xf1`x\x80\r\x06\xcfjc\x90r\vz\xdfS\xb1E&\xaa\x1d\xb4AI\x02m\x1d\xab\xb0!n\xa8^@M\x18\x9a\x90\xe5\xf1kBq\"\x19\xa0y\xe9\xb9w\x13\x15]u/\xc1\x19\x9b\x86\xa530hA\xf5^V\xba\x1dƒ\xbb\x92D\xd4`\x86N|\xe6\x1a`\xa6\xa2\xa3E\x04\x86\x05\xba\x18\fpi`O\n]\xd8&?E\xd8Dj\xa8\\zu),\xec_\xab(\u007f\x8cy¢\x9a\xa7\xe9\x12l\xde\n\xde\xc64\xf3\xd0t\xae:\x8e\x90[\xbdY\x15\x85\a\xf7\xb4\x1bR\xf7%\x98<\x9a\xa8\x98\xe4\x0e\xc5^\xccp\x1ai*\xc1\t(\x88\xd8\x04>j\x94TX\n)\xa3\xebt\x01\xda\x00\xec\x03\xcb0\f\xd0\xf7\xe1Y\\\x1cm\x1eHF\x8c\r\x84Z\xae\x1e\xaa\x92٭\x831\x8c\xd3\xfa\x16(\xed0\xf7\xecE\x18þ3c,hux\xe6\x92\xd34\xf7\xdbŪ#\xa4\fK\xb8\xd9A\xccF\xbb\xacߵ\xe8\xdcrĸRۏ\x03\x15!%\x82O4}vQ\xf0*\x8d\xc9)\xc3\x0fc##\xa4\xb9ڽ\x0fj0\xd7\vl\x8b\xbe\xbc\xd9\xdf\xda_\xf5\x999w\xea\xc0\x9c\v\xfd\xe8~\xc4\xf7\x99g\x96\bLwۡ\xd4qJ\xd0\xe8V\x8e\xe3IA\xef\x9aW\xb8K\a\xac]\x8bdU2\x19hU҅\xa1\xf4G_\xf9r\xeb;_\x99\xb4v\x8f\xfc\xe4w\xda_z\"#\xf7\xee~\x90\x90\x9f\xda}\xff\xdd\x0f\x13\xba\xfbM\x0f\x92/\xaa,g\xfd\xc2\xc9\xc2\x03\x85G\n\xaf.\xbc\xae\xf0o\n\x1f/|\xb6\xf0\a\x85\xbf(\xfc\xb7\xc2\x0f0\xd5\v\xb9\x1el\xebW\x92\xbf$߇\x81\xe2\xd05\xba\x81\xd8A\x95=\x12C~&{G2\xb7\x81\xc1\x10D\x8a-\x04\xc7\xe4\xc9\xc9T\xd0\xefx \xfby^\x034\x14\a\xf9q\xbc\xf77C\x8cF\a\xe4\xe9%i\x110\xa9\x01Ҳ\xc7ȍ;\xfdZF\x8b\xb4\xb3\x93gM\x80\xa5W\xae\xc0\x92\t\xff~\x1f+%\x18T\xef\xdb\xcb\xcbrk_\xb9\xec\xb5:\xf7\xf5\x97\xe7\\+\xa4ZZ^H\x85\x16v\xeb\x95\xd8(9\x9e[[o\x1e\x9c\x94J~\xabs\xef`q\xc11C&\x93\xf2|\xaais\xc7\a\x96[\xdc\xfd\x15\xf4\x05\xe3*\xba\xb0\x98V5-\x89\xaa\xd5(Z\xb9\xa5^\"\xbd8\x99]Kk\x9a\x96\x86\x15\xf8l\xf9\x96F\x1aߐ\xc0rk\xcf4\x82\xa2&\x05H,]\xb4\xe6\x8a\x01<\x8f\xaeyf\xb9\xdcj\x16\x03\x01\v\xa9W\x9ck\xe1B\xae\x99R\x1bn\xf0+60\x96\x19=\x19bf&\xf01GM\x10\x95\xcb\xcdf\xd1\a\xa1ü`fF\x18\xb0&K\xf9\b\xfa,<\xf4\x05S\x1b\x1fS\xc3^\xa8]<\xd2Us%(\x1dB\xb5S\xeb\xdbl\xef\xcb\xefH.%6\xed\xf4\uf61b\xae;纶)Č\x10\xcaN.\xa2$\xd8D\xaf8\xc3\x04\xc9QX\xe2,\x05\x93k?wm\xc32D\\\xdd\x0f\xe6\x92\xcd\xf8~\xb6P\xef36Ή\x94F\xb8j\x1fP\x9e\x01X\xd0iu\a˝s\x873\xb6=c\x95\xab\x94T\xab\xf8=f϶\xa4Uo\xbb\xa6\xab>Hu\xab1\x98V\xe9U\xc1\xdaڪ\u007f\xfbb\xed\xd8\x11n\xec\x1c\xb0P\xbcU\x13M+V\\\x8di\xee\xc9mf%3Q\xa3\xef\xc1)G\x8frc\xfb *)xF֨]\xbf\x9f?\t\xa6p\x18`zL\x8bw\x1a\x9aV\xaeQ\xb2}`w\x9c\xdd`jϼ\u007f\u007f)\xe3\"\r\xab\x96\xe4a\x84\xe1\xa9I\x02*C\x1d\x19\x0f\xcdԣ\xac\xd2\xc4\xdd\xcaZ\x95\x1b1\xb4\xa2\x16\x84\xde\xe2\xf2\xb2\x1fE\x84$\xb1\xce+u\x90\x8e\x8d*\x9cV\x87.\xaa\x97\xe1\xac\x18\xe3\xe2\x8bw\x93\xa1\xeb\x0e\t\xe9[V\x9f\xdc8}\"\x97\xe4\aD\x94T\xd3\xec(eL5\xd0\xfdӎ@\x9c\u007f\x19lʿ\"O\xc2ʯa\x86J2\b\b\v\xc0\xc6Ⱥd\xf3#\xbb\xdf\xf8ȷ\xcf]ݸ.O~\x8c\xbfo\xfd\xbb\x139\x8f3\xbd\xf0\xe7\xa0\xf8}\x10l.\x0f\xb3\xd3O\xdai\x1b\x16\xa9Y\x04*\xe2j$\xbb\xa0J\xee߿\xfb-\xa7*\xc8\xef\a\xe1\xfc\xee\x85[\xe0p\xeb\xaf\x1e?\xfa``\x9d\xad\xb6\x8e\x92\xcf\xf8\xd6\xff\xfc\"b:/\xfc3\xc8\vF~\xa7`c֟\t\xda^\xb8K\xa5\x12ʎ\xfbi\x88\x18\xe9N\xb6\xa2m\x93\xf7\xf4\x1bun\xfc\x92n\xf0Wp\xef>\xe1\xf3\uf08d\xfe\x8b\x86fdq\xd36\x8c\xf2\x9f\x8c\u007fz\xbf\xee\xea\xff\xa8\x93o\xe8\xfan\x03\x0e\x8bW/\x1c\x1b\x1c\xdd<\xae\xb0\x96{\xd8\xd1\x1d\x90l.i\xe2V`\x9cv\xc1`\xf0\xd0͈\x04J\xe3U\xe4\xb3D\xe2\xb7\xe4\x92\xc3\x1dd\x1e\xb9x(E\x134\xc7'aȚw\x9b\xa1h\x88\xf0!M\x83nx(\xb0\xb4ẍ́\xa96\x04\xad\x88V\x1b\xa6%\x16{\x9a\xb0\xe6\xaa0[&\x0e\xd5\xf4\x8d\"Ӭ\xe0\xc1{4\xeet#X>^\xf4\xa0\xe9\"<\xd0\xe1ڝRs\x0e\x9b\x8c\x9a\xadM\xaaI\xfd\xd50\x83\xedS\xc7t[\xa6\xe71:j\xbb\xaa\x99\xd4ٔ\x8e&1\xf9\x8f\u007f\t\xafe\xceFX-tU\xbc\x13\xf2\x95\x1f\x9ezLn.ܭ\xbc&#\xb0\x84\x10\xf9ԍe6\xf2H\x17\x8e\xe3\x01Ft\xc0W\xddl2\x18͎`]\x8d\xbb\xd9l\x9c\x81\xe12\xc9\x18B\x96G\x93&\x89\xbb\xf0w\x90Nb\xb4\x99\xba#\x89od6\xc0P\x8f,E_\xd0 &\x9d\xe6\xb5O\xb4\x96\xbb\x93}˖U\xb4\x9eܷ\xef\xc9ۮm\x1d\xda\xf7\xa4i>\xb9\xfb\x9b\xa7Z\xb7\xfb\xb7\x91Z\xeb6\xef\xb6\xe6\xfd˭\x13on_\xfbՓMx\xd7j]\xbb\xda\\~W\xfb\x91\x87\xf7M\x96,륭S\xed\xdb|rW\xf3Ĺf\xf3\xdc\x13\xfb\xd4\xe5?g.C\xa9\xe6\x89\xd6r\xf4\xf0g\x1e\xaa'\x1f\xbf\xb1d\x9a{\x80i\rY\x9d\x85\xed\xa7\x88\xc4\x031UY%.\v\xfc\x9eX\x91q\x1fr\xaa\xca-.u\xb0\xa2\xb1H\xd5f\xb6\x03\x96\xb1\a\x10'\x86mMVn<\xa4H\xc7\xf5\xf5BQ\x1fTk\x88\xda,Mw@<\xb0\xbe\xa7PT\xa5A\xda\x10\xc11\f\xc7\xd8\x1e\xef\x01\x91d\xbd\xa5ʋ\xfb\xaf*r\xaeH\b\\w\xf7\xaf)S\xcbY\xd5,];\xac\xca\v\x9e\xed\b\xed\xef\xeb\xd0\xfeV\xb0\xd7\b\x90\xfb\xcbz\xe9\xc5\x03\xaf\xa6ۂEm_s\xb7\xd00~\xd9\xe8\xd2\xd1(\xcf\xf1\x8e\x0e\xe1(\xffx>J\xbb\xfb.\x19\x8d.\x19A|A\xc0\xed\x97\xd2\xf3t%\xa5\x8f\x14\xf0#\xf4\x1e\xaf\xd3\xda\xd5\x13L\xb9\x9a\xd8@8\x8c\xfd\xf3\x97\xe8\x16rW\xa4\xc9\xfe?\u007f\x15\x8a\x9c7\x19/Ds8,\x98/\xdd;x\xdf\xf7\xfc~\xdc\xfa\xa1\xdd\xcf©\xb4q\xe6ˎ\xf3eW{\xc1u_p\x13\xfe|\xe3Q\xd7}\xd4\xfd\x11~C\x95{=Y\xa5\x1d\xc0;\xf9\xc6]\u074c\xdd\xf3)\xa1G\xfd\xff\x9eǤ\xb3+\n\x90\x8e\xb0+S\xb8w>\xeb#\xf0ƉdL\xb3>MIl\xccS\x94\xe68\xc5/t\xb9\x1c)\x13\xe1\x19\xbfP\xf0w\x9e\xa6\xc7\xc7\xcae\xc4\xec\xa6\xf5\x9b\x1d70-\x1d\x1c\xc6JY\xd3ҏ\x18\xf5\xc8.\x05\x8d\x13z=\x85f\xdf\xd56Jz1&j\x1dMR$\x16\xc0\x87v\xf7\x00w\xfa\x857\xf9\xb6훞\xe4|k\xc22\xb0\xd4i\xb1\x13 \xdaXi]\x99ɒ\xa3=\xd8z\xb9\x99&^\xb1~[K\x96\"ÒJN\xd1\xf54a\xa9\x83x\x1e\xfe\x8e\xd7\xf7ĔY\x1f\xb9pP\xa4$w\x8a\xf7\"2\x9cw\x19\xfc\xad\xaa\x1eG,\xfbl囪z\xe2w;\xbf\xff\xb5+\xae\xb8⫪\xa7^\x86\xf8\xf6\xd9\xea_\xe23\xdaz?n%l)\x18\xe2\x83𫈉\xce\xd0\xfe(\xbb\x90\x87\xd2)@O\xa4lq\xa2v\xd5\xce|\xbax\x9d\xd0K\"w \x1d2\xca\xf4Τ1e\x19R\x1e\x15Ugs\xf9l\x9ac\xb88\x81\xf8FOt\x9c\xbcV\x00\x91\xa5õ\x8d\xa1\a\xd1J\xb7\xbb\x12\aõ\xf5a\b^\xafU\xa9Hf\xb1R\xf3\x8c`:-\xf6\xa2\xaa\xeb$!B\x81\xe940є\xef|\xb7\xdal\x97\xa0Զ\xb3\xe8\xbe`\xcbr4\xa3\x12\xf9\xdef\x12z\xc1:\x0e\xff\xdaa\xf4S\xea\xb0\x11\xfaA<\x10\xa1\xb9\xa5H\xeb\x1b\x94\xe20\xdaܸ\x06\x8a\xb5\xa2G-~\xcd\xc6\xe6\b\xfd\x95\x95\xb4\xd4n\x97\x9c\n\xe558\x17v\xb0\x1d?\x00\u007f\"\xbc^\xb8K\xb8_\xf8S\xe1\xebPD÷\n3\x845\x97õ\xf0*\xb8\x03ۃ\xb8,ԥ\xce-\x81\xec%\xe5\f\xb6\xc0A\x98p\x05!Zf[\xfe\x9f\xa5D\xc3F\x8f#\"\x8dC\x94?K\xf9z\x1c\xa5\xb4\xa7T\xd49\"SG\x1f\x19\xa53\nu/\xfe\xd3!2\x88\xbb\xb3EX_\xa5!\x85cI\xa2\xf1D1\x85L\x9aSĂG\v\x9a\xddE\xd4@\xe5\xf7\xc9\xe2I3oN\xe7\x1d֡\xcc\xf8\tq\xab\xf1gt\x9f\xaa\x94\"A=\x9f\xa4(g\x8b\x92\x03\x96\xf0\x9d\x91ѥxF\xa7Kҁ\xc9\xf2\xbe\x99\x10\xaf\x06>ci\x92\x93\xbe\x1c/RH\x16w\no\xd0ƴC\x8at3\xc6k\xef\x19\xff\x9d\xbc\x80M%\xba\xbcN\xb28\x01!\xe2\x01\x9c\x15I\x15\x8f\v*\xe6\xbb\xd7sF\x121\x93&\xfc\x178\xdb\t|\xd9\x0e\x9b\x9b5\x03\xe6\xe5b\x91b\xa8\xe1\xa4jT=_\x17\xe5t(Z\xbaW\xf0\n\xa9(\xf6\xf5v'\x98\xcdbc\xb5\xa3\xbba\xc1\xf08\x1b\x9d\x84\x17\xd1\xd64\xb7\x04\x89݊\x12OUK\xadd\\\xb6\x14\xdd)]\xd6:2\x1e\xfb\a\x8f\xefﷂ\"\xfe:C\xed\x98.\xb8&\xb3\x98k\x02KS\xb8\x1e\xec\xc4\xd8/\xca:\x93\xa2\xb8\x00U\x1c\x1d\x1e/\xc8\x10ES/\xd4\xe5\x92\xedk\x95̨\x0f\x12I?ډ\x03\xd5\n7D\xd09\xd3\x1c\rIS\x92Ұ\xe8j`:\x9bqP2Ey\xc5\x0f[\xf9\xf6fRf\xb8\x8f¤D\xe2X\xaaa\a\x9e\x01&\x11F\x18^\x95\x02\a\xec\x9fi\fT9/ٶp\xd9K\xd5\xcd-\x95\xae6\x9a\x85\x17U\x90\xa9\xddiݘ\b\xcaИDKKA\x85\xdf]\a\xba\x8crщ\xeeE%\x9b\x80&rY\t=\xb6YZtX\xfa\x13'\xc0\x19\xcdƇ\xb6\xbdV\xe8v\vk\xb6\xf7\x15t\x16\x8a)\xb3\xdbm\xb9/\x9fYK\a#1,i}\xb9\x1d\xb5\xa5\xd1 ]ەp8\x98\x94h/\xf6\xf3\xa1\xad;:\u007f\x90FՕ\xf2+\xca+Ց\xb3\xf6\x8cM;)%G[\x13\x18\f\xa2^\xea8\x91r\vLZZ\x12;i/\xde$\xffVƱu?\xfc\x0e\x8e\xaa\xae\xb0%\\\"\\\x85=Q 5K\x87w\xf21\x9a\xd9\x19\x1aj\xc4̈\v\xfbڴ1%%QN@\xb1\xad\xf05\aJY\x8f\xf39\xd1\x11\xd1\xfa7zT\xe8\x9b\xc5\xd8!\xd5L\xa4X\xcb\x14w\x80\xdbokhY^l8ι˾~V\xd5\"\xbb\xe1\xafG%\x9c!\u009a\x13\xa1\x85\xba\xb5{\xe3\xd5\u05f7\xddx\xb8\xbe\xda\xecn\xa4\xb1\xf6u\xb3\xde*\r\x8a\x8d\x86\xa4؆\xc6t\x8b\xc9Wn\xc5v\x0e~\xeca\x9ft[\xe0\x85\xfeS\xf7\xbdK\xd1J\xa5\xdb^\xe3\x98\xd2\xf7V\xe4\xf5o\xf9h\xb1\xbc،t\xcb4\"3F\xb0\x94\xf9/\xa8\xb2\xbb\xd6\xf8\xf5\xd2J\xa5\x96\x04nXL\xaaͷ\xab\xaa\xd2m\x8es\xed\xe89J\xde*\x84AJ\x9a\xf6N5\xf2\xab\x0e\xe0\x051\n~-\xf23G\xf4uWO\x16x\xbc,\xd4\xc56\xdc\xc4\xe7\xc7c\v\x95\xdc鶊\xbd\xa0C\x89\x17\x14\xb9$_\x86\x91\xf4\xeah\xdcJs\xd2\x05ŗr\xbb!5Z\xf3m\xbe\x80\xc3+_\xe0\xcf\x17ɼK\x82J6\xc8d'Dg\xb0\x9c\xb0\a\xedR\xbb\xb2\xaf{}mR\x99\x80 ~1k\xdf\xda,\x03\x18~\xda\xd8\xf9\x01\xfc鑝\xeb\xe1i\x05\x14C\x01U\x0e\xabp\xfa\xd1c_\xe5\x84\xe3D\x0f\xcd\xd7\r8\xa9\xb8,j\xc1T1<\xbb\x1a\xae{?\x81\xc2\xcb\xfd\x9c\xf2o\x89\x9d\xf3wv\xce\xff;Qd\xa1\x17R\x91KRy\xd1\xd7X\xf4\xfb\xd3\xc2\xf5\xc2{)V*\xee\x92\xf9\xf2\xee;\x80\xa5:\xcc|\x81\x95;\xf3>筥\x82锠 \x95G\xcfy\xfeH\x93\xf3_\xa9\xc3Q\xc25\x1b\x92\xd9\xc2\xe5\x1b\x85}\xe0Uֳ\xeeb\xc6\"\x84\xdf\xec4w\x0f\xc4(\xa7\x95\x93gqe\xe0]:E\x1c=\xf0\xa4Wm\xa5\x12\x8b7\x03J\xa4\x93yz<%Q\xa1AU\xf1\xac\x99\xcd\x06\xa2b*\x8al\xcaF\xca\x18UP\xcbT\x9e\xe6\xdaT\xb6\xa6\xe3\xf5u(\xadOT\x03\xb3\x1cXҍ|\xf0\\$\xbafRCCQ\x0fh\x1f\xaa\x8b\x06\\T\xa9~Q\xae\x84\xa2f0\x1c\x91`iT\x93\xe7\x14\"#\x1a\x944\xd6D\xa4\xcet\xf96ُ\x18-N#\xb8a*\xa7\n\x02\xd12$\xcbT\x1d\x991\xafbN\x1b\xa2^\xd0l\xaa2\xd0!\xa5\xa2+\x9d\xf2BK]32\xf1\x84#\xc7*{\x88L\xfc\xe8?\xf2\xd9`\xe7s\x86\r\xa1,\x0eꥲ\xb7ᘈ\xd2(\x97\xcf\xd6\xc5\x18O4\x8c\v͡UI\x1c\xc9g\xb6\x81\xd0L\xb1|G\x06ݤ\xeb&]\xf86|\x8e\xe7\xf8\rI\xbdiQ\b\xccy\xa5\xb69\xaa\x97p\x96_\xf2\xef\xf3\xba)*\xf3 ޫd\xbeIiDK\x8e\x8f\x85\xda3\xbe#\u007f\xa7\xadYyVHt\xf6\x87\xe5\xc8\xc8^\xa6\xa3E\xb7TSӱ{\"\x12\xb9]w\x06\xb8\xd7uC\xef\xf5\xa2f,V\xb2\x8b^\xadk\xc1\xd6p\xbew\xef|\xb8\x15\x98\xb7\a\xad\x9a\xeb\x14\x83\xce\xca\xe5\xfd\xf6\x86\xe7Da\xabu\xaf9*^\xf6\xbb\xa1\x950\xaa\x9d\xb2TO\x82\xffZho)\xf2x\xcfzo\xcbk\xf6/n\x1f\xff\xad0\x14G\xa7\xb6\xb7O\x8d\xea\u007f\xd9n\x89a\xf5\xe8\xcb(\x17n\x99\x13\xf8'\xc2A\xe1R\x1e\xdd\xfe7\xc2G\x85?\x10>-\x1fg\x96Z\xbc\xaf\xd6\xee\x16(\x1d\xa6\\\xadOd\xe6Mr\x1f\xa1\x81\xdeI\xe4k\x8b\xb2\xd3\xde#&\x9e\xe3B\xc1\xf4¤Ҙ\xf4ֈ\xb8\xb5Ԩ\xea\xfa\xeb\x1bmD\xeb\x03\xf13^\xe2\x97M\xc3\xfdJI\x94j\xa6\xe9?9l\x95\xc5#\xaf\x12\xa3hk\x0f\x8bm\x90\xec\x82n\x9b\x93Û\x8d\xa6\xe2\xe0\xd4J\x94#Q(U\x92\xe6\x91êa:\xdd>3M\x9d\xc8\xd7D\xb0j\xa1֒\xbd\xaa\xa6\xda&\x83\xd61\xa6\xc5R\x1c\x8bU\a\xf1\xbd\xba\xd6\xea|\xfa\xbfٕB\xcc\xda\xcaZ\xe9X$Ire\x10\xcbxq\xab\x9a\xecz\xb5\xce\xd6h\xdd@\x84+v\xfahR\xf7\x95lQL\xca\xdbJp\xa4Μ\xd6\xd0_\xb5\xec\xdbE\xcbҪյז$\xc9\r\"\xeb\xc3\xe0\x05a\x18h\x9f\xabO{\xddn\xa0\xd9\xe8>Dn\xaa+\x89\xef{eI\x8a\xae<'\xaa\x97]Y\xad\x89N\x1d\xfbȾ}kA\xf7\x84\xacyn\xbf\xc3)g\xb9\xbe\x82\x11\x82\xa3&\x15Ѓ,L\x15\v\xc41\x84\xef.w\r\xb0\x83(}Qӌ\xc7M,\xa1\xb8Prns%\xd9)\xf5|\x92\xfa!MP\xd2O\x9c\xffb4\xa5\x813\xf7\xa4;%f\xf5\xbe\xb4\x06\xfe>iFz\xba3h\x99\xa1\xae\x9c>\xedFL\x1c]~\xb9\x17\xca:N'\u007f\xbe^\xdb\xf9fm}\xbd\x06\xab\xb5\xf5;\x87\xe8\xd3y\x95\xf0\xd7\xc3~Z\xb6\\M\x97\xa7\x8f\xbb\xa1\n\xa7u\xcf8r\xccrt\x84\x18\xf2\xc3/}~\xfd\x87{\r\xf0Vd5\xb4]\r1'\x9e\x97Gc\xd9\xc2\xdf\xfdG\xf0\xdbB,\xac\x91\xfec\x9b\vwv\x88\x17\xa9\x06\v\xa6$\xfc\xdb%9\xef\u007f\xb9=m\xef\xbe\xe4lK\xf0\xec\x97$M\xfa\x12c\x03\x99ɏ\xe1\xd3\xc7\xf0\xef\x80\xe1\xbf_\xb2}\xe7\x99\x177ӟ\x8bo\x16śeJD\xbe\x98\xdfR\xf9\x11Yz\xa5(\xbeR\xe2\xdb\x00p\xdbYI:\v\xb0x\xc4\xf6\x8e\x11\xb5\xfeOx\x80G\x87iEj7REM\xee7b\xd2\xf0\x1eK\x9cRc\x1aS\xfd@>\x9ct\xf2)^\x04\xa2_\x87\xf3A\xb1\x18\xbc\xef};\x0f\xac\x15\x83\xb5r\xfb\x10\x1c\xb8n\xed\xe0\xfa\xcdO\xae\xbd\xe1\x14\xc5\tO\xa4E\x94<\xcaTN\xc9\xe00\x02\xfcs^k7B\xeb\xf7fH\xf5в\x19U\x15\xe1\xe4\u007f\a\xda\xf0+\xcdf\xd5V\xd1\x1b\xd7c#,\xabi\xa8k\xb6i!\xaa\x91\xb4\xc8\xd2j\xb3(\xd4\r@76u<]\xa7\x92\x03\x11\xdd\xc3b\\W\x0e\x83\xcb|\xdd\xd140d\xb4Ϧ\xe3\xfb\xbek\xcaR\xb0rL\x92\xf5\x1a\x95Ҭ\xc0~Z^\xff\x15JdSd\x8d\xd9V\xb4\xf3\x85\xca\x10\x8a\xb8w\xa6Yv9\xd4\xc2\x02\x19E\x85\x19\x0e\xb3\x8aUtN\xc3\xc8]\xeb{v\xb0\xa8\xf1RÕ\xd4UM\xf4\xedKh\x8a\x14\x19\xfb\xa31\xbb\xe7p\x98%>\xb1w\x87\u007f\xc3\xcb\x11\x98\xa7\xe0\xb5d؞\xff\x88c\xa7\x87\b\xe7\xcd\xc2c\xc4rEL\x89\xb0\f\xabO9\xf5ڒ\x81g\xf9\x82\xb6\xf3\x80<9 \x94\x1dB51sbGej\x9d\xa3\x05\x12\x86\x1a\xa9MbF\x85L\x1ac#'\xf3\x88\x94\x15\xb6\xa5\tZ\x13\x95'\xb04Y\x9f\x80t7\x8e\xba\xcd\xe1\x942\x98\x8f\xd5\xdf\xff\xda+\xbda͏\xb3j\xaf\xea ~M\x1d|\x92\xc5~m\xf8^\x868\rr\u07fb\xd8\xd7[&1\xe1m\xed\xfc\x9f\xfd\x8e!IfK\xf7/v\xe3\xc05,\x85\x93\xca#|Գ\xfc\xe4\xc9\x12\x9c\xceg9/\t\xa6/\rw\u007f\xf60\xfa\x97?{\xba_\xec\xc3(\xcd\xff\xb1\x04\x85'\x89\xe7\x024\xf9\a\xaa\xeb\"\xba\xfb\xf1-\x87\x8cάf位\x95\xa6\x96\xef\xab\xe9\x154\x90ٞfq\x9f\xdb\x1ch\x9e\xe3ئ\xa1\xcb\xf9\xd1=\xcd\u007f\xfa\xa9\xef\x80O\xfc\x1a\xa0\xd7\x03b\x81\xa7TY7\xae;\xe4\x98\xca\b&\xd5\xc4evQ\x02\xb3\x85\xd7\x16o{\x98\xe9\xe0\xc92Ϧ\xba\x13M\xf3\xda8̛I`k\xa4\x82E\x9b,\xdd\xf4\x1d\x03a$>?\x05\x96\x02\x94\xa7\x02\xae\xa1P\x1d\x9e\xa8\xe9h\x17\xf5Eʭ\xaek\xb2\xa8[\xe2L\r#\x84\rj\x18\xcb\xf2\xaa\xcb\x16\a\x92\x15D\x0f0\xa0\"\x1cߣ\xc4K\xcaٵ\xd0\xf43\x98)A,\x8b\xd9\xe2\x170\x1f\u007fA\xab\x00\xa5\xffL\vh\x16\xa2\x0f\xa3\xa0H>\x95߀\\\xba\xe8j',\x9bn\xdap\xc0\xcbSV\x1c\xee\xdd\xe7gۣz5\xcaEY\xd5t\x13\xc1\x9d\x91\x1f\x01}\xbe\xba\xb0\x8fF y2\xe4\xe4\xf1 P\xf4\xe2\xb3\xc5\xd6Y\x87<>\n\xc2`\x87\xec\xac\xc1l\xd2\xe5LR4]~\xf3M\xbd\xad\xad\xde#\xe8\x8fz\x8fE\x11\u007f\U0006c7e6\xfe\x1fX\xa6y,ȤÊ\xae\x98\xdaݮ\xfbD\xa3\x1f\xb7\x92\xf7o\x9d\xd9J\x9b\xe9\xca\xe2O\x14\xddk\rbEW\xef\xd5,\xbf\xef\x0f\x1a\x1fJ\xda\xf1\xe2\xf7i\xe8\xb7\xfd\x94\xc7+\x1ex)J\xd1F\xec?\xe9\xb0UDJl\xb3/qz\x85L\xe1Rc\\l\x8b\xe7\xf5Ӻ\xd6\fq\x049ob\xba\xf0\x11hVǷYSM#N]'\x12\xab\xcd4A\xd7\x1e\xb7F\x04\x9b\xbb\xdbʘ\xaa\xcaќ~`\x11\xcax\x9ba@1\x12%Swm\xd7qT\xd7N\xa3\xb2\xed\xa9\xa1\xa4KTwGU\xb2\xb2(\xbb\x91,\a\xc5l(K\x05۵\xcd\xd8\xf0\x02\xbc\x9eF\xe0[\x86H\"S\xa6\xa7{\x90\x06݆\x9fR\xaf\bj\x81\x01\xa4#\xa7xUY\xd2\x18\xe9\x8f\x003\x97\xa1\x0f\x1c\x01\x9a\xedQ\xaa\xba\xe1EU\x1c \x16vp{\xb5\x88\x87$\x15\x0f)U\x15\x13\x98by\x92eg\xcc(\x15\x92\x8a\xe3\xe2 \x93L_n\f'\x13D\xb8\x8a\xa2V\xc1E\x8b\vЍ\xe6\xdd\x16\xa5\x81\xa3\x1b\xe9\xb0@tdCU\f9qr7\xd2@\x13-E\xd3\x05\x85\xe7?\x898Ow\xb8R\xeei\xe1Ջե\x84\a\xdbV\xa5.YE\xf4\xef\x97^\x16\xa1\t\x9a\x85%\xe2\v^\b\x1e:r\x8e\x9329\x04c\x9ab9=\xa6:㏬3\xe3\\\xbe\x049\xb92@\xb3\x03?1\xb7\xb7\x8dZ9\xce@L\n\x05\x192\x1c%\xa5\xaav\xb0\xad;\x9e\xef!\xf8\xd0/\xba~\xf3\xe4\xfdwŝ\x8c\xb9\xd1\xf4\xd4\xfa\xa1;-\xf4\x17\xadr\xdc\xdc\x1f\x8c,㘪\x96\xed\xe0\x83\xa5b\xf1l\xb1Tz\xafh9\xa2\xd4*\x16sY*JJ\u007f\xa5>\xfeɡ7eōj\x04q\x15V\x8b\xc9ЮFő\xbbq\xbc{\xd3\xce\xcf\xf5\xac\x97\xf4\xaf\xdan\x9f\xd82W\xb3\xba\xb7\x11\xf9z\x02\x96\xf7\x89\x86\xe34l\x9b?\xf6\x10\xe9j~\x19M\x99o\xa9V\xb2\x02\xed\x05\xfe\xae^\xb8\x00\xff\x03\xde.8B&l\n\xd7 \x1e\xe4\xb4Ƥ\t\xbb\x10\x01_r\xb9v\x9b\x9c\xb1 \x99s<\x8e\xa7L!\xcd\xd9x\x1f\xb4\x17|\x935\x18\xef~C\xe2\xb9\x04\xddE\x90r\x93\x94yfs\xf8\xe8\xea)M;\x17\xf2\xa4q[\xd3T\x83\xaa\xe4\xc4\U0001c99d\xbaZ3p@\xc5\x1b\xab\x15Q\xbe;\x01q\xe7J\x84_.;\r'p\x82r\xe0N\xaf\xd3\x05\x9c\xactK\aƒ\xa2\t+iCU\x8e\xf3`\xb9\xf9\x1d\xa2\xed\xc19\xc6<\xa6*\x8d;E[S\x88Q\x98*)\x83w\xe0\x84\xe8:\xcf\xff\x99\xeb貴\xf3\xbfW;\xa2\x88{\xb1\xa1\\\x17\xe0\xc2\x05\xc4\xef\x9f\xc7\xfe\xb1\xb6\\\xc5\xe40}B\xf2\xdd\tIY\x93\x1f8\xebt\xa7)\xb9\xe2\x1d֥;%\xbb\xc1s\x9a\xf6\x05=տ\xa8i\x8f\x8d\x14\xdd%/\xbfbXR00\aQX-\x8dX\x16\x8dW\xf4\x82\xf6\r\xfc\xd0\x174\xed\x8b\xf8\xe7ѱQU\xefc-\x1b-C[\u007fK\xbfT\v\xa3\xbe>\x8a26\xe9i\x1a\xe5\xad,} \x8a\x98\x0f\x85\x03\xc2a\xec\xb3\xc2<\xe2^\xd0\xdco\xf8\xe1\x84s\\\x92\x91\x8e\xb7`\xb20\xcf\xd4\x03\xc9@O\xf3X\xe5\xeb\xca\xf3EM\xe0\x94\xaf1\xcfs\xbe\xb0\xfc\xe3$\f\x93?\xdb9\xf4\x8c\x1e\xf9\xa6)G\xd8=K\be\xe3\xcc֣b\r\x9a\xa9\x9b\xdao\xab\x94&\x8d\xd0K\xddxX\xdb|\xbc\xb6\x99\xbd\x10\xaf~r\xe7\x10\x9c\xbf \x988\n\x89\xe6\xc6\t\xfcb\x18z!-}9\tzɺ\u007f$*>90\xa3\x93O\xe2?\x8a\xc5Z\x17\xfe\x13\xfc=\xcem3\xe1b\xe1$\xf6\xa3\x9b\x85;\x85{\xb0mǜ\x91wII\x9a\xbf\x14\x85\xe5\xf5X\v\x86^Z\x94\xe4n\x9eJQ\xee*\xe0\x84\x98pB\x1aN؋\xae\u007f\xa7\xebHI\xb7\xc9\xc9\xd3:l\xcc\x03O<\xb0\x8b\xcdC\xc4]\xd4\x18|\xa1\x13=~\xf8\xabbx\xffMw=\xfc\xf0]7\xdd\x1f\x15\xc3;\xaf\xb9\xfd׆\xe7.\uedb2\x8d\xc2d\xc3=~\x99\x97\xad\xa7\xd3~P\t\x8dӯy\xb5,\xb3V5\\+4\xfc\xa7\x8bU4=qY\x97Dg-\\\v\xc3\xd5\xf0MT\x17\\-\xd2C\x0fV\xc3R\x13\r\xec\xa1\xce\xf5\x10[V\x92\x9a\xd6\xddW\x9d}\xf8\xae\xbb\x1e>{ձ\x13\xbfv\xfb\xd1W\xce\xc4a\xab\x9bn\xd4\xfa\x13\xa8\x95\n\x8d\xc2F6\x98\x18a%\x18JW\xfc\x95\xd6j7ղ\xdf(\x1c\xb9Q.\xb7cM\x8a\nU\xf7]\x15-ϵʘ\xa5\xad\xb2\xac%\xadʻ\xcbJ5\xef8\xea\x91V\xc76\xd3Դ\xe3\x04{\x04\xc3yl/ר/\vma*\xec\xa7h\xe6\xae\xed\xa0zJqʩ5)l\x82\xd7_j\xb3.^\xf7y\x8a\xb7y\x8e] \xdb%@d\xdd\x11\xad!\x1f\x84\x11\xf9Ԝ&u\xfe\xec\xf7?\xf2\x91\xef\u007f\xe4\v\xd7U\xfd\xaa\x1f\xe71\xc1\x18\xa5\xdd\u007f\xf4\x04tt\xb7^jkf+yS\xfc\x9a\xe9\x8dIZ\xc1\xb7U\xc5;Wc\xacVt\xfa\xe8\xfd\xe8h\xbeS'\xb6\xe0C\x0f}\xf6\xa1\x87>\xfb7\xb0_\x8e\xebA\x94G\b\xe3\xf3\xceη\x9ek\xb7o\xc8\xf3\x1b>u\xf5\xf3g\xb4n!\xce#8poV\xde\xfb*@\xe4\x11n\n\x14\xcff\xc2Mxn\r\xf4\xfd\xcb8O\xef\x17.\x11N\x11\x17d:\x1f\xf3\x9c-\xbc\xb5G\x99\x94\xa2\xfb\x8f^\xdd4\xe5\xda\xe5\x94\\\x94\x89\x14#\x10\xb9\xca9gW\xefƄ\x83\xa7ػ\xd8,\xa1\xf5-\x96\xc7\xfe`\xb5\xb7a\xf7\xe5\xd2FEY\x87\\\xb6\xeb\xc5\b\xc2J\xc506\a\"\xf3,\xa3`Z\xffK6C.rޟ\x88,pl\x80\xfd$\xf4\xa8I\xb2\x18$1\x9a\xca\xfa\xddw\x9f?q\xe2ԩ\xf3\xa2\x19tK\xe5\x154s\xe7\xdf#\xaaFlG%Q\xac\x80Z\xed\x94-\xf5\xbc\xac:\xe8\x12z\x01U\x90(\xf2\x1d\xe8\xe1X\x96\t\x01Ո\xee\xda|\x03=\xee\x04\xe7ؕ%k/\x0fr쪇\xa48\x88gKU\x92t\xb1Z\x81C\x19\xba\xbd5\xe6\xe7\x85\xc1M\xdcv\u007f,#\xbd?\xcf\xfc\xad\xe1\x81d\xd2:\r\xf2z\xc3,\x94\xbc\x0f\xfe\x117\xb2/|\xedk߳\xe8\xfd\x1fm\xaf\x96\xfa\xf5\xaf\tK>G\xca\x05;J#\x11\xb8\xca\x1a\xa7\xc2%\xce[\"\x9a\xc99\xed+\x9f\xa89\xe1Ћ2\x9fT\b8\x1emQW\xc1i\x86\xf1\x99f\xb1\xd8\xde]\xae\xe2\xf3\x82\x83N\x97\x87\xddxx\x8d'j\xd2\xea\n\xc9\xffn\x8b\x19\xc0y\x85\xa9\x05\xd3\xce\\\xa6~YS\xdc\xcc6\v*S\x14r\xfb4Z\xb6NLI\xd9}\x8b$\xb9TD\x8b\b\x03.\x11\xd1\xdbF\xff\xda\xd9\xdaW\n\r\xe2߸\xe2\xaa\xf5J\xd1\x1e\xec\x8du\xe3\xe4\xc1\xec\xd4Z\x1cx\xdb\xe5Ӈ)H\xec\x04\x9e\a-Sy\xee\x17\x0e\xf0ϏZ\"J\xb0\x05\x98T\x18U\x04\xe1qT\x89\xde\xff\aY\xab\xaf\xe0\xe7a~w3?I9\xee\xd2\xe0\xaa\xfdy\x8956B\xc7z\xd5f\b\x91\ue526f\xde\xe4Al\xc5\xe6\x18N\xe5\xd7\xf33\xd8g\xaf\xe5\xe3\x10\xaf\xa4\x94s*\xdd\xe9d\xc1\xff?\xc5a\x88\x8e\xcbp\xa9\fK@B]67\xcf\xde \xcdӃ0\x1dN\x06\xb0\x145\x8c)oA\x9cS\xbd\xe5\a\x9e\u007f\xaa\xd8?p\xc5\xcamO\xc1\x13T\xd0Ee\xeeP\xe7\\kT;\x88p\xbbX\x92dl\xbeR\xc1\bd\x8d\x8a\xb5\xe4:\xe7\x97\xe1\xf5\xf7\xa5\x03sy~\xa0\x04\xcf=}k\xef\xf2\x03\xfd\xe2\xd3ϿYӘ\x96$N@'\x8f\xfb\xd2\xed(\x8e{\xa1\x8c̀wp\xf5\xb0\x17Ǒ\xcd%\x02\xb0\xf9}7I4W\xebm&\x00\xc9&\x9e\xaf\x85\xe7\xfb38\x8f\xe7\xfe\b\x8eM\x85\xf8\x8a\xf8\x8c~\x00f\xe8\x89\x11\xd5\xd4\xec\xc5N3\xa4̽]\x11C\xbe\xa0D\x13\xba\vKYE^P\xda\xe9r\x96\xcd|\xa1\u007f\xbb`\xb0\xda\xecp̓fNz\xba\xd4LD~\xc5{\xe1^\x18o.u\xfa\xc8fP\x0f{\b\xce\x154p\x1f\xbf\xe1\x96\xdf\xe0|(z\xc1\xb0M\x1b\x98dVj\xb2\x82\xcd\xe0\xb0,A3\x1e\xd6<\xaa\x01\xa9\xa7$F\xe5z\xeb{\x9dR\xadV\xf1\xca<)\x80/\xe9\x13\xa3\x83\xe8\xfb\xc4\xfc\x92FT\x1c&\xa5%e\xa5\xcd\xd5`Eɾ\x1aQ\xb1]\x81\xa3\xfd=\x17\xe9p\xed\xaf\xbe\xeb\x16*r\xd3T\xe2C\\i\xa2\x1f\x89M6pj\x8e\xe3\xba\x1e}\\\xf3L\x90S\xcdFp[\\\xb5\xb8\x9a\x9f\xd8?x\x91\xa7\x84e\x1f\xc4\x17\xb9\x11h!\x82J8\x89пq$\x01\x8a/\xc9jt\xf3\n\xb4:\x8c(\xbe\x05]\xa8\xe3\x9c\xdf\xe5s>eq\xf6p\xd6? \x1c\x17\xce\x10:{q柎\xe3%BH\xc7\xcd\xd9/\xa4\xad\xa2cO6a\xbc(}U\xf3\x86\x0f\xcbD)\x1fp\xaa}m\xafZ\xedU\xf4+\x8f\x87\x8e\x13~e\xaf\xf4\xf9s\x8e\xe1\x9aJ\x12:\xe7>c6\xd3;\x9aYV\x9f?T\xa8\xd4+\x05%{\xd5\xf6+\xa6u\xe3\xc17\xef\xfc=Xo\xb8\xfb\xcdw\xfc\x03\\\x0ẽr\x95v\xf2\xfdw\xbe\xf3\x1b\x85\xfe\x91\x8f~T\xb5|3.\\\xf5\xfe\xa3g\x13;5ҳg\xcf\xfa\u007fQ\xeb\x1f\x9aU\xee\xb8\v\xce\xef\xbc\xec\xb6[n\xb9e\xe7v\xd0K\v\xbf\b.|\x1b\xfe\x18Ϸ&\x1c\xe2\x88A\\\xe8\x05\xe7\x9b9\xe77㩻\x93\xd9\"\x14\xdc%b1\x84jMWl\x12\x859\x8b(^pp\x97ī\v\xbfA>&\xc9C\xc0\xb8B\x10\xb3ӻ\xf1\xc1\ao\xdc\u007f\xdb\xd6]\xa2z\xac\x80\xdeu\xe1\x98*\xee\x8bUQ\xdc\xda\x12E5\xbe\x86E\x89^-\xa0\x1fiu$\xe7\xde\u07fbw\xfe\x8a\xf9\xa5\xe7\xa8\"\xf0\x88,\x1f\x11UI\\?J$ \xbd\x1e\xd12\x1e}i^%́\x1cq\x1a\v)\"M\x1e\x19xCj]\xaa\xe7\x17\xf9M\x99\xd7\xebp\xc9\x10.=\xfa\xf8\xf0z\xb8\xee\x92\xe1Χ\xedql\x0er;(ĚVk\xb6\x1be\xad\xba\x1f\x8e\r/In\xd8{+\xb8;\x9f\x1e^\xe2wL%\n\xad`ȑz\xf5j\xecɄ\xd3\xdd\v_\x85\x1f\xc1\u007f\xc0\x1e\xe1\xf2\\r\xa1\xcdR6 \xee\xf2\xf1Ap\x11|Ki7W(\xfd\xee\x87Y6\xfdRu\xeb\xdd\xefު~\xe9[w|\xe2\xdag\x9e\xb9\xf6\x13\xd0_]\xbd\xf6\x87\xa3\xd1\x1f\x8fG\xefx\xc7h|\xc7\xeb\x9f\xda\xf9\x8b\xce\xd3oy\xfa駅\xff\v\"c\x15\xe9\x00x\x9cc`d``\xf4:м\"bKZ<\xbf\xcdW\x06n&\x06\x10\xb8%z\x82\x1bJ\v\xfe\u007f\xf7\u007f\x1bS+\xe3\x03 \x97\x83\x01,\r\x00\x90\x9b\r\xf4\x00x\x9cc`d``<\xf0\xff\x00\x03\x03S\xc3\xffw\xff?2\xb52\x00E\x90\x01\xe3N\x00\xb9\xc9\b#\x00\x00\x00x\x9c\x95T;\x92\x131\x10\x95d\x97ǻ\xeb5Ƌ\xb1\xa7\xd6\x14>\x01gPBF\xc016\xe4\b:\x02\x19)1\x11\xe1F\xd4\x1c\x80\x03\x10:$C\x14E`\xd6Xt?\xb54=\xaeM\x98\xaa.iZ\xad\xfe\xbc~-g\xe4\xfbd\x8c\xed\x86\xe2\fdj#\xfdG\xa5\x0ff\x86\xfd>\xdb\xd8Pב\xf3fnCJ\xb0[@\xe7\xaa\xcf\b\xbb\x89\xf5\xa6\xc1?\xd9\xc3\xce\xe3\xfc\x02\xb1X\xffN\xd9{\xb3\xacy\x04蟪\xfc\xa6\xb2_\xd9\xef\xea?\x9a)\xf2\x91\x1a$\x06\xc7ܩx}M\xbcz\xd4Uka\x1bZ/\x8bM\xf1C\xe7+Z\x1b:\xbf&\x9d%ِ\xceJn\x13\xdc{LLŎ\xd7W\x92\xc75\xad7\xb2\x9f\xd0\xd9Db\x8dK.\x12\xb3\xc7ާ\x84\xb3\xd8\xfb\x16\\Y.\xe8\xfc@\xb5Xի\xdaCZ\x9d\xb2\xe5\U000d7733\xc6T\xe2\xcfIZ\xfb\r\xff\x8c\xe5\xb2\xf8q}\xad;\x8a\xd3:\x93\xfe\x92\xfe\xd9\x19w\b\xe7́\x12O\xf8\xc2\xf8\x8f+\x9e=\xa7.\x05SW\xb8\xa6\xfa\xdd߯\x9c\x14ߝٸPu\a\xd1-\\H\xa7\xc2\x05\x9c\xfb\x82C:\xf2Y\xe5NLQ\xfb\x16}\xc6\xee\r\xed\xef\xf8^:\"\x8f{\xf8y\x0e\xfb=\xf5\xa0瞱\x1f\xc5n\xdf\xff\x93\xcd\x11}\xcawr-\xa5\x17]\xfa\xe9\xde\xd2\xfa\xbe\xf6w+=ii\xbf\xc3̘\x88w\x1ew\xdb\xcaM#\xb9Br\x9f3\x1f\xaa\xaf\x11\xd9/d\xb6\x1aY\xaf\xc0\xbd@\x18y\xf4kj\xbf\x9cq\xa2\xf8\xa4\xbcr\xcc\xf4\xab\xcc\xe0\xff\x8a\xe41gq\xafU\xff\xf2\x1b\xd4\x0e\xe6\xa53\xb7\x83\xff\xbc\xdf\nG\xafp'\xc0\xd7M\xa9\xbf\xceH\xa8\xf6k\xf2;\x97\xfc\xb7\x05S\x9a\x85\x13\xdd]j\x9c\a\xf8y\xb3\xe6yd\xde\xf1\xbb\xc1\xf6\xf0\x95\xef>\x88\xbfM\xedQPo@\x14\xfc?`N\xf0.\xf1\x1b\r]\xceyL\xbeo\x85'#U\xef\x8c\xf6\xab\xc2c\xf4\xd8\xd4\xder./\x14\x1f\xb8\x17\r\xa4\xcc\xe2\x89\xdeЬ\xe7w\xc6\n\xe7\x9e\xfc\x03\xb7\xdf%+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Z\x00\x8e\x00\xdc\x01\xa0\x01\xe8\x02\x14\x02\xda\x03B\x03\xb6\x04\x04\x04<\x04x\x04\xec\x05\x10\x058\x05X\x05\xca\x06\n\x06B\x06\x90\x06\xb8\x06\xec\a\x80\a\xb4\a\xd6\b\x04\b@\b\x8e\b\xd0\b\xee\t4\v\f\vr\v\xe0\f<\f\x88\f\xba\r\"\r\xbc\r\xf0\x0ef\x0e\x96\x0e\xe8\x0fd\x0f\xe0\x10\x0e\x10<\x10h\x10\xe6\x11p\x11\xbe\x12\x02\x12P\x12\x8e\x12\xee\x14\x06\x14\x86\x15\x1e\x15p\x15\xd4\x16:\x16\xa8\x17\f\x17.\x18*\x18l\x18\xb8\x19x\x1a\x00\x1a\xd6\x1b\x80\x1c*\x1cP\x1c\x98\x1c\xe6\x1d^\x1d\xde\x1e\b\x1e\x88\x1e\xf0\x1f6\x1f\xb4!F\"\x06$\n$\xf2%\xaa&\x1c&\xa0'\x04'\xbe'\xec)\x10)>)\x84)\xde*Z+x+\xb8,.,\x86,\xf4-\x1e-^-~0\x180b0\xe01l1\xbe2\x1e2J2\x823:3\x9e4\b4J4\xb85\xd46\x1e6\xfa767\x967\xe68\xae9>9R9\x909\xaa:\x18:\x94:\xd2;\x16;8;\xbc<2\x0e>j>\xb6?D?\xc4@0@\xacA>A\xd2BlB\xb8CTC\xa6D\xceE\x14EjF\"FnG\x12GFG`HhH\xdaIVJ\x04J\x8eJ\xc8K\x0eL8L\xa4M\x10M\x8aNlN\x98O\nOnP\x9aQ\x0eQ~R^R\xb8S\x04STTjT\xb4UFU\xc0V\x16V\xa8W\x18W~W\xbcX\bX:X\xfeY\xd2Y\xfeZ*\\v\\\xf8]d]\xa2^*^R^t^\xd2_D_\xba_\xdca(a\\a\x80a\xe0b\x14b~dbd\xa6eZe\x8ee\xfef`f~f\xaag\x16i\xd8k(k\\l\x0elLl\xa8m m|p8p\xc2q\x12qrr(rtr\xa8sZs\xf0tTt|u\x1euXu\xc8u\xe4v\x10vJvvw\x0ew\x9ew\xd4xZyPy\xc8z`z~z\xce{>|\xa2}\x00}T}\xcc~\x12~\x8a\u007f\n\u007fP\u007fڀ\n\x80\x82\x80\xe8\x81\x0e\x814\x81\xb6\x82\f\x82p\x82\u0383\xf8\x84H\x850\x85Z\x85\x96\x85\xb6\x86^\x87\x00\x88\x96\x89\x04\x89\xfa\x8aJ\x8a\U0010b08cF\x8c\xba\x8d<\x8d^\x8dr\x8e\x18\x8eƏ \x90\xa6\x91*\x92\x8c\x92\xb4\x93\xac\x95@\x95^\x95\x82\x96\x80\x98\x18\x98X\x98v\x99\\\x99v\x9a\x1a\x9aL\x9a\x82\x9c\"\x9d\xbe\x9dԞ\x04\x9e6\x9e\x84\x9e\x9e\x9fJ\xa0\x06\xa0B\xa0ġ\xa6\xa2\n\xa2L\xa2\xae\xa3\x1a\xa3n\xa3\xa0\xa3\xf4\xa4H\xa4\xa2\xa4\xf8\xa5\x94\xa62\xa6\x8a\xa6\xe0\xa7n\xa8B\xa8Ʃ0\xa9\xba\xaaV\xaa\xf0\xab\x1c\xabĬ\xc0\xadd\xaf\xf6\xb4X\xb5\x04\xb5T\xb6 \xb7\\\xb8(\xb9̺\f\xbaP\xba\x8e\xba\xe2\xbbX\xbbȼ<\xbc\xe4\xbd\x18\xbd\x80\xbd\xac\xbd\xe2\xbe(\xbe\xf6\xbfN\xc2\xe2Þ\xc7>ɴ\xca\fʎ\xcb\"\xce\xc8\xce\xea\xd1\xc0\xd1\xdc\xd2\x02\xd26Ҝ\xd32Ӟ\xd4\x18\xd4V\xd4\xd8\xd5\xf6\xd6,֔\xd7\b\xd70\u05ec\xd9\xcc\xda\x18\xdaVچ\xdbN\xdb\xc6\xdc\\\xdc\xcaݦ\xde\x16\xdf0ߌ\xdf\xe8\xe0&\xe0\xce\xe1\x88\xe3V\xe3\xa6\xe4\\\xe4\xf0\xe5l\xe5\xb2\xe6\x14\xe6\xc0\xe7.\xe7\xa0\xe7\xde\xe8\x88\xe9\x00\xe9\xba\xea2\xea\x8a\xea\xc4\xea\xf2x\x9cc`d``\xdc\xc9\xecà\xce\x00\x02L@\xcc\b\x84\f\f\x0e`>\x03\x00!\x13\x01v\x00x\x9c\xb5\x92\xc1N\xdb@\x10\x86\xff\xb5\r\x11\xa0F\x80\x14\x90P#m\xa5\xaaI\xaa\xc6\t\x017\x92o\x80\x84zh\x0f\x8dP\xd5k0&\xb1\x88\xbd\x96w!B\xbcB\xfb$p\xef\xa1\xc7>C\x0f\xed\xd3t\xb2\x99BS\x81P+\xc5+\xdb\xdf\xee\x8c\xe7\x9f\u07fb\x00\x9e\x8a\x0f\x10\x98^[x\xcd,P\xc5gf\a%|ev\xf1\\c^Cٍ\x98\xd7\x11\xbaW\xcc\x15\xca\xf9μ\x81\xb2\xb7\x89\x03(\xe4\xb8D\x81\x04\x03\fa QG\x84\x06\xbd\x0f)\x96ٕ=\x8c\x11C\xd3<\xa57\x0eT~Y$\x83\xa1\x91\xf5\xa8!\x0fUf\xe4\xde8\xd6*\xa5\xd8C\x1fI\x04t\xef\x93P\x9f\xe2'\xb4.ѣ\xf5\x01\xce1\xa2\xb5\x82>\xfd\xa3\x90\f\xe4~\xd1\xcfN\xb4\xecŃ\xf3Q\x9f\xc2\u007fe߮\xff\xbfb\x932|l\xa3C\xcf\xf6#\xfa\xcd\xc0\xdf\xee\xf8\xedy\x1aܡѦV\xbaT\xa9c\xf7\xe1a\xad\vz\x164OlFh\xd5\xef\xac4\xa8\xd8N\xdb\xef\x06\x1dY\x9f\x11\xbd\x88\v\x9d\xa8,\x94S7\x8d;;\xb3\x02\xc1\x8c\x91\xe6}F\xb8d0uѼuqD\xa7h\xd2\xe1\xa4\xdc1j\xf6?\xa4TV[\x1f\xb9=o\xbf\vI\xea?\xb2\rH\x8a\xc76c**\x89\x15\x8d\x11\xce(ǐ+\x1c\rc9\x8e\x8fkZ\xa6J\x1b\x99\xab|\"(\x93HeR\xc7FR\x1b\xd2(5:K\feO\x8e\xb2!)M?\xa7E\xe3\x94}\xf6g|\xfaV>\xa5tcr\x1d\xb6Z\xa7\xe4\xac?u\xe6G*\xfd\x97\xed\xbe\u007f{\xe7qn\x1f;Hs\xeb\xf9\x17P\x96\x02\xf5\x00\x00\x00x\x9cuW\x05\x94\xebȕ\xfd\xefٖL\r\x1ff&?0\x13f%\x93\x81d\xc2\xcc\xcc\f%\xa9,U[R\xe9W\x95l\xab\xc3\xcc\xcc\xcc̼Yf\xc6,o\x96\x99\x99)\xb9%\u06dd\xce\xfe\xbf}\xfa\xa8\xc0R\xc1\xab\xfb\xee\xbdu\x82Ot\u007f\xdf\xfcƉ\xb3'.\xf0G_\xf3\x8f\x13LL=\xeaӀ\x02\niH#\x1aӄ\xa6\xb4C\xbb\xb4G\xfbt\x92N\xd1i:C\x17\xd1\xc5t\t]\x8b\xceҵ\xe9:t]\xbaމ\xafӥt\x19]\x9fn@7\xa4\x1bэ\xe9&tS\xba\x19ݜnA\xb7\xa4[ѭ)\xa2\xdb\xd0m\xe9r\xba\x1d]AW\xd2Ut5ݞ\xee@\xd7\xd0\x1d\xe9Ntg\xba\vݕ\xeeFw\xa7{\xd0=\xe9^to\xba\x0fݗ\xeeG\xf7\xa7\a\xd0\x03\xe9A\xf4`z\b=\x94\x1eF\x0f\xa7G\xd0#\xe9Q\xf4hz\f=\x96\x1eG\x8f\xa7'\xd0\x13\xe9I\xf4dz\n=\x95\x9eFO\xa7g\x90\xa0\x98\x12JIҌ2\xcaI\xd1\x01ͩ\xa0\x92*\xd2T\xd392d\xc9QC\vZҊZ:\xa4gҳ\xe8\xd9\xf4\x1cz.=\x8f\x9eO/\xa0\x17ҋ\xe8\xc5\xf4\x12z)\xbd\x8c^N\xaf\xa0Wҫ\xe8\xd5\xf4\x1az-\xbd\x8e^Oo\xa07қ\xe8\xcd\xf4\x16z+\xbd\x8d\xdeN\xef\xa0wһ\xe8\xdd\xf4\x1ez/\xbd\x8f\xdeO\x1f\xa0\x0f҇\xe8\xc3\xf4\x11\xfa(}\x8c>N\x9f\xa0Oҧ\xe8\xd3\xf4\x19\xfa,}\x8e>O_\xa0/җ\xe8\xcb\xf4\x15\xfa*}\x17}\x8d\xbe\x9b\xbe\x87\xbe\x97\xbe\x8f\xbe\x9f~\x80~\x90~\x88~\x98~\x84~\x94~\x8c~\x9c~\x82~\x92~\x8a~\x9a~\x86~\x96~\x8e~\x9e~\x81~\x91~\x89\xbeN\xbfL\xbfB\xbfJ\xbfF\xbfN\xbfA\xbfI\xbfEߠߦߡߥߣߧ?\xa0?\xa4?\xa2?\xa6?\xa1?\xa5?\xa3?\xa7\xbf\xa0\xbf\xa4\xbf\xa2\xbf\xa6\xbf\xa1\xbf\xa5\xbf\xa3\xbf\xa7\u007f\xa0\u007f\xa4\u007f\xa2\u007f\xa6\u007f\xa1\u007f\xa5\u007f\xa3\u007f\xa7\xff\xa0\xff\xa4\xff\xa2\xff\xa6\xff\xa1\xff\xa5o\xb2\a\x00s\x8f\xfb<\xe0\x80C\x1e\xf2\x88\xc7<\xe1)\xef\xf0.\xef\xf1>\x9f\xe4S|\x9a\xcf\xf0E|1_\xc2\xd7\xe2\xb3|m\xbe\x0e_\x97\xafǗ\xf2e|}\xbe\x01ߐo\xc47\xe6\x9b\xf0M\xf9f|s\xbe\x05ߒoŷ\xe6\x88o÷\xe5\xcb\xf9v|ʼn\xcb\xf8J\xbe\x8a\xaf\xe6\xdb\xf3\x1d\xf8\x1a\xbe#߉\xef\xccw\xe1\xbb\xf2\xdd\xf8\xee|\x0f\xbe'ߋ\xef\xcd\xf7\xe1\xfb\xf2\xfd\xf8\xfe\xfc\x00~ ?\x88\x1f\xcc\x0f\xe1\x87\xf2\xc3\xf8\xe1\xfc\b~$?\x8a\x1f͏\xe1\xc7\xf2\xe3\xf8\xf1\xfc\x04~\"?\x89\x9f\xccO\xe1\xa7\xf2\xd3\xf8\xe9\xfc\f\x16\x1cs\xc2)K\x9eq\xc69+>\xe09\x17\\rŚk>dž-;nx\xc1K^qˇ\xfcL~\x16?\x9b\x9f\xc3\xcf\xe5\xe7\xf1\xf3\xf9\x05\xfcB~\x11\xbf\x98_\xc2/\xe5\x97\xf1\xcb\xf9\x15\xfcJ~\x15\xbf\x9a_ï\xe5\xd7\xf1\xeb\xf9\r\xfcF~\x13\xbf\x99\xdf\xc2o\xe5\xb7\xf1\xdb\xf9\x1d\xfcN~\x17\xbf\x9b\xdf\xc3\xef\xe5\xf7\xf1\xfb\xf9\x03\xfcA\xfe\x10\u007f\x98?\xc2\x1f\xe5\x8f\xf1\xc7\xf9\x13\xfcI\xfe\x14\u007f\x9a?ß\xe5\xcf\xf1\xe7\xf9\v\xfcE\xfe\x12\u007fy\xd7-\x95s\xd2D\xf6\\#\x8cܛ\x89D\xc6Z\xcf7\xeda\xa1\xaa\xb9LU\xb5\x93)\x977\xf1\xa6;\xdc|5ܾ\x1e\xac\u007f\x1eժB\xb7\xb4n\xff\xa8\xb6\xf9\xe4T\xa6uVȨ.\x1a\xbb\xe9\xda9ޕM\xb6SE\xaa\x1aof\x13\x85\vJ\xb1J\xd2j\x90\xbb\xb2\xb8\xba\x9fX{e/vI\xd8\xea\xc65\xb1\xec\xafT\x95M\xfcc\xbb\xb2\xd4\xe8:֫]\xebD2\x8f\xf4B\x9aY\xa1\x97#U\xa1#3\xa2\ff\x85J\xe6\xa6'\xd2j\x14+\x177\xc9\\\xba\xc05e\\\x98\x9du\xb1\x1dj\xa9\xaaT/m(*\f\xaa\xd2\x01\x16ج\x86\xa9Qq\x1c\x17r`\xe7m-\xc73ݘ\xf5\xfb\x813\xb2(\xf4\x10\xb38U\x8b\x96\x17\xf3\xc1R\xaaX\aFV\xf8\x1f\xd5\"\x93\x18C\xda\xcd\xe2\xe4*\xc9E\x95\xc9\xe9B\x95Rof\x1d\xd8\x02\xbf\x8d\x96ڤ5\xc2g\x03]\xcb\n\x93\xb7\"\xd7:XG\f\x03\xa6\xa9r;\xebb\x1b`ۭ^6\xb5\xae\xa2D\x99\xa4\x90\x93c]\xa3\x14s'J7\xb6\x9f\xaa,۩\x95L\xa3Z\xd58\xfa\xba\xde=\xd6\xf21OMS\x8b\"8к,D\x18K,3\x91\xbb\x9b\xf2h\xa1N\x8ar\xda=\xb7\x11\xb3\xb5vj֎S\xb9P\xa2r¸\xb1\xd5M\x95&\x85n\xd2\xfe\x02{\x0f\x13\x9dJ\xechx`g*M\x11F#cY\x04\xb2\xac\x95\x91\xfe\xdc7c\xf5P\x9d\xe4\b\x05\x96Tɥ\xddq\x12sW.\xeaB\xca\xe7\xce\x05\xa8\xe0\xe0ǶP\xa9\xb4yw\x00@e\x92\xf7[Y\xd4\x01\x0e\x00[\xd8Bl)\x8aB\xba0I\xa2\x85\xb2b\ae)\xb0r\x93\b\x93N\xd0J\x95M\xb1\xaa\xac\x8b6nT\xe1\x86\xc0\x9ap\x98x\xf2\xed\xb4\xaa\x87\xcb\\8+\xea:D\xb0\x13\xad\xaa\xa0D\xfa4崍\x12]ƪ\x12N\x9b\x1d];\xa4T\xa9+\xbfݡ\a\x13\xf6\xec\xa6rU\xe3e'Sk\x8b\x00[$\"E4\xfd\x1ci\xa5\xe7X\x9d\xad\xd4\\\x9d\xf9\x8e\xd6&L\xe3Lb\xc5\xda\xe7\xdad\x89n?\xb9\x88\x96\x81\x153aT\x90\xe4F\x972\x9c\x01\x023\xbd\x1a`\x95F\x9c\xecvZ\xe1;\xac\xb5\xd0F\x9a\x00\xe1tB\x0f\xae\xbe\xfc\xf2z\x15\x88R\x1cj\xf0\x82n\x0e\x0f\xc3u\x06-F\xb1O\x9e\xc8)9\x9a\xe1]\x85\x0f\xect\x93%\xa2P\xb2\xea\xcb4\x93C`PI@\xbe_\xeat5\xc5a\xe0ץ\xb4XB\xaf\xb1\xf1\xb46:m\x12\x17\xe5M冥Zu\xe8\rl\x82\xc4O1C#\x9d\xd6.\x9f\x1cբ\xd8\xd3_!\xe2\xf1\xb2\x8ee\xa6p\xe6&\\\xd6\x18\xb7\xb4\x81\xac\x16ʈA\xe6Q\x1av\xcf(\vp`\xa9\xd4;\xebbK\xb5\xb6\x125\b\xc1\xedn+Q摵w\xd4܄\xf2۹:A\xc0\x80\x04P\x854\x83V\x03\x97#\x97\xcbR*\x8b\x03:F\xaeS\x1f\x8c\xed\x16\x03P\x10rpp\xae\xd1F\xecΌ\xf4\a\x8cU%\xa2\xac\x87N\x16ҳ\xe40\x06\xe9\xf9\x9e>Z\x8b\xbet\xb6\xed\xab2\x8dC\xb4daڡ\al\x82\t'\xb6\xc1Bj\xbd\x04l\xb0\xfd\xa3\xa3*\xa5tM\xbd\u007f|b\xcf,{\"I@j\n\xa4\x14\xf9\xd3\x19\xa2\xddX=sC`\tC\x88bW\xccf\xaaP\xc2\xc9n+\xa1(2\x8d&\x8e\xdb\xf7\xee \xcdL\xbbE\xe6\b\xe0Grb\u009d\xa3Z\xa4\xb4\x1d\xa0%\xcdXض,%\x80:\x0fE\x93\xfa9C\xe1yI\xaezbi\xc1\xfe\xa5\x8e\x0f\x90\x9e!t\xc0\xe7O\x1fe;\xee \x14Kc\xda0.t\x96I3ڔQ\xbc\x1f7\x00\xaa\x06a\xf9\xfc1N\x8e=%\x81F\x10\xc0q\a\x13\x9b\x88b[-!bӮ\xea\xb7\x06^\f\x92\x1a\xb3\x17C\xafb>\x1a\xe3\xa4q\xae\x903e\xf30\x8d\x10\xf1(\x05M#\x82m\xaa\xb3\x10\xac6\a\x14w@\xd7ʉ\"\xd2\t\xc8\"\xec\x98\xca\xe0=_Bzd\x90\xea\x04Z\xe9\vp\xe5Nj\xc4\xcc]\xb1\xf9fo+V\x1b\xec\x04i+\xb0\x97\xb1\x14\x06̢L\n|\x9a\x021\x1d\x1f\xe9\xfe\xec\xd4Q\xb5\xc4IIК\x19w8\xebF\x9e\x1e\xe5U4S\xfb\xc7S\xc7o(\xf4p\x8am:\xc2\xecs#沂b\xe1%9\x02\x1aS\x9cZj'G\xb5(\x9bn0\x8aU.\x8e\x01V\xb4\xd0PU{6\x18d\x06I\xd8Ϛ\xa2>uL\f\xb6\x06\x02t\x89y\xa3\x1c\x84\x0f\xcc\xe5\xda\x1d\b\x13\"\x18^\x87\x02\xe5\x1ah\xedd]D\x95v2<\x90\xd5\x1cN`p\xa0\xc1G|`G\aۡ\x82\xb9la3&s\x98\x03\xeb\x85\v\xa1\x10\xfdt\xd8X\xdbT\x95ȃ\x85\x10\x90\xb1\xc1B\xf9\xf7;a\xe8-\xaa\xc5\xdeV-\xb7\xf6e\x99\x97\x89\xdd?\xf2YQ'\xb70\x940\x8fA\x8b\\\x94\xab3\xeb\"Z\vQ\x17K\xf8\x01\xe1\xd7\xe6\xcd\xc1\xd4{\x85m\xa37+ھ?͞\xb6\n\x9eF$n*\x1a\xa71\xf6L\xad\xa4\xe9[\b\xe2`\xd1\xc8\x03\xef'\x81ga\x02OFN\x0f$\x9c\x809\xf9\x1dL9+D\xe65\x05\xf3B\xe0\xc0\u007f\x01\xb6*\x16\"X;\x91Ẉ\xec\xc0\xb5\xb5\xber\xbc\x96B\xbf\x8c\x9dοl[CϡF6e0\xd7\x06s\x8f\x10\xd0\xd2C\xd6\xecn\xfc\xf3&\x18#\x98b\xb8f\x98\xa1~\xaej۫\xf3zt\xaeA\xa6$\xa2\xf6nS\xa4\xa5\xec\x1f`\x01Ǎ\"\xe2y\xfa\xffz\x84(n\xcf㮝\x8b/\xd0\x17\xc9\xe6\x82\xdd\a\xf5\x05FH\xcf\xef\xab\xd3K.\xd0\xe7Y\xe8\xfca\x8dD\n\x9e?\x84\x15g/\xd0\a\x18 \t.\xfd\u007f\u007f\xe9$\xf5\xfc9:\vz\xd1y݇H\xf7\xbe\x8cE\x1b\x82aba\xe5\xd0;O\x9d\xfaL\x8c@\xef^\x80`Q։\x95A\xf6F>G\xba\xdc\xd9;&\xefkvm\x8a\x04\xc6\xf1d&\x90e\xc8\x1e\xec\v\xe6\x11\xb6~\xef\xa8\a\x84\x8d1\xc6\a\xa0\xa2\xf5\x87\x93\x12 \x06\xe9\x1b\b\xdfT\x17\xe9\xd17\xfb[\xd2\xf0\x10\xc0\x05\xa7\xea[\xe8\xd5>p\x06J\x02\xe5H\xd3!\xfe\xf4R\x173\x80\tY\x1d\v\aMA\xdf0צ\x8aUQ\x8cJ\xa1\x8a$G\xe6\x80\xfc2QC\x0e\x82J\xf9;T\xcf\xc8\xc5\xd0\xe6\xba^\"*\x935\xca,F\xc1\xd5\xd1\xcbz\xa2a\xdfe\\\xb4\xbd\xa5Z\xf5\xfd\xb5i\xbc\xa6w#\xaay0\x17\x19\x94\x00\x812s\\\xc0\xaa~%\xa1釹ʛ\x00\xf3\xfb\xd4\xc3 \x91'\xb2V:uV$\xc0\xaa\xedh\xd3\"Y!\x8fX\b\xa2\x90\xee$\x9eL\xa1ȑ\xd1\xe0\x93\x8d\xc4F\xb1lu\x95\xf6\xe0\xca\xcf\xcc\xfc-ŶH8\x95\xe50\\\xa0O;\x85G\xae\xda\b\xe7\x81H\x9cY\xaaC\xa4\x85\x8d\xf4,\xf2\x93&\xdeeM\\\x0e>\x8b\xfc\x19\xd9I\x97\xeb\x12\xbe\xa0\x96\x03\x91\xc2\x1b\x8c\xa1\x18\x1b\xea\x1du\xa6\xdd\"\xf4\xa7\x13Q\x81\x96\x04\xac\xb8\xf0\x94\x01\xe3?\v\xbcy\xd0v\f5\x9d\xc1K\xe2z\xd3K\xf3b\x88\xb7\xac\xdf\xc0\xc0\x1f\xc2*\xc0\xb3k\xa8\xac\x14C\xb5v\x1b%*\xb0ޘ\xa1\u007f\x00w\x89\xe0\x83\xa8\n\xd9N\r>\xed\xbc\vr\xd4\xdf\x12\x91\xa3\x81\xed\xb8\xdc_\xc4L\x027$e\xdf6\xb0\rM\f\xe6lzMm\xfb\x8dţ\x15\xa6\n\x842q\x15\x8f\xfdIc\x910\xdf#8\x01\xe7ɧ\x0e\xe2f6\x83\x17X{u\xef\xfd\x86\xb8֘NW\xfd\xb5\v\xc6k\f\xff&-\xf4>\x01\xa1\xfb\xe8\x00\xb7\xa9\xf4\xeaЖ\u0df6\xbf\x14\x87\x12\xe4\nWf¬\xf3\xe4n\xd4\xe9\a\xe4-\xdfI\xb4s .x,)\x9a\t\xaeQQ\x15\x81'3ك\xf3\x1c`T\\\x83\xedRAyqy2\xb8\xf2\xecm.\fQlpO\aW\xc2]\x83\xa1;\xe1\xf5\x9e\xed\xe41\xb6ڰ>\x94õ\xdf\x02Y\x99\x10\xae" // Assets returns go-assets FileSystem var Assets = assets.NewFileSystem(map[string][]string{"/": []string{"gateway.go", ".DS_Store", "Makefile", "ipfs.go", "threads.go", "buckets.go"}, "/public": []string{".DS_Store"}, "/public/css": []string{"all.min.css", "style.css"}, "/public/html": []string{"unixfs.gohtml", "error.gohtml", "confirm.gohtml", "index.gohtml", "consent.gohtml", "404.gohtml"}, "/public/img": []string{"favicon-16x16.png", "hex.svg", "favicon.ico", ".DS_Store", "android-chrome-192x192.png", "apple-touch-icon.png", "android-chrome-512x512.png", "site.webmanifest", "favicon-32x32.png"}, "/public/webfonts": []string{"fa-solid-900.ttf", "fa-regular-400.svg", "fa-regular-400.woff2", "fa-solid-900.eot", "fa-brands-400.svg", "fa-regular-400.woff", "fa-brands-400.eot", "fa-solid-900.svg", "fa-solid-900.woff", "fa-regular-400.ttf", "fa-solid-900.woff2", "fa-brands-400.woff2", "fa-brands-400.woff", "fa-brands-400.ttf", "fa-regular-400.eot"}}, map[string]*assets.File{ "/public/html/404.gohtml": &assets.File{ Path: "/public/html/404.gohtml", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992779212230), Data: []byte(_Assets4bf0d0667fe4719e513a3edfeb3a25a2377cf2b7), }, "/public/img/android-chrome-512x512.png": &assets.File{ Path: "/public/img/android-chrome-512x512.png", FileMode: 0x1ed, Mtime: time.Unix(1577812992, 1577812992783316491), Data: []byte(_Assets5505a97055e70f2214132a49de39b49ea42721ef), }, "/public/webfonts/fa-solid-900.ttf": &assets.File{ Path: "/public/webfonts/fa-solid-900.ttf", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992827653985), Data: []byte(_Assetsa778db74bb0610978d68bf45c1d84ed40dc5e19e), }, "/ipfs.go": &assets.File{ Path: "/ipfs.go", FileMode: 0x1a4, Mtime: time.Unix(1609278599, 1609278599357970573), Data: []byte(_Assetsb83960ccf65b57d0332e33d148e2165646ceb9bb), }, "/public/img/hex.svg": &assets.File{ Path: "/public/img/hex.svg", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992786821875), Data: []byte(_Assets747353a94cf1b19b7a2e5c9fbc50b3ea0972f088), }, "/public/img/android-chrome-192x192.png": &assets.File{ Path: "/public/img/android-chrome-192x192.png", FileMode: 0x1ed, Mtime: time.Unix(1577812992, 1577812992782232926), Data: []byte(_Assets8adebf81a81a55248a107972d373b02d60a4d498), }, "/public/webfonts/fa-brands-400.svg": &assets.File{ Path: "/public/webfonts/fa-brands-400.svg", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992799788424), Data: []byte(_Assetsaeddafb109d244dccf51e6a0309f04536e6c7eb7), }, "/public/webfonts/fa-solid-900.woff2": &assets.File{ Path: "/public/webfonts/fa-solid-900.woff2", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992832316200), Data: []byte(_Assetse5228f4473380f8aaf60204d3214f579490bdba3), }, "/public/css/all.min.css": &assets.File{ Path: "/public/css/all.min.css", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992777614723), Data: []byte(_Assets0f3873af67026ef9adff5293b531a01d11ae6c96), }, "/public/html/index.gohtml": &assets.File{ Path: "/public/html/index.gohtml", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992781561441), Data: []byte(_Assets131cd67b6dd480f64ec4b1e6dc1172c43a81c7a9), }, "/public/img/favicon-32x32.png": &assets.File{ Path: "/public/img/favicon-32x32.png", FileMode: 0x1ed, Mtime: time.Unix(1577812992, 1577812992784893936), Data: []byte(_Assets73d5f881dc044ff1def628efb1b6c854a3374148), }, "/public/webfonts/fa-regular-400.woff2": &assets.File{ Path: "/public/webfonts/fa-regular-400.woff2", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992812652044), Data: []byte(_Assetsbddb83b9a8840e063a3c00a419998f20584423c9), }, "/public/.DS_Store": &assets.File{ Path: "/public/.DS_Store", FileMode: 0x1a4, Mtime: time.Unix(1577566128, 1577566128244292637), Data: []byte(_Assets8d3d84b01d8e875fa96f3fb120e5aef152ba2a3b), }, "/public/css/style.css": &assets.File{ Path: "/public/css/style.css", FileMode: 0x1a4, Mtime: time.Unix(1590182432, 1590182432234715885), Data: []byte(_Assetsdde0973434b88ffc53b81b28400233e4fde8bb40), }, "/public/webfonts/fa-solid-900.woff": &assets.File{ Path: "/public/webfonts/fa-solid-900.woff", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992830580650), Data: []byte(_Assets7f20ca1245bb8b3d9d2ba4abac70f5fb42bab011), }, "/public/img/apple-touch-icon.png": &assets.File{ Path: "/public/img/apple-touch-icon.png", FileMode: 0x1ed, Mtime: time.Unix(1577812992, 1577812992783985567), Data: []byte(_Assetsd02de8458478b9207bcc182c71f64095eebd83f2), }, "/public/img/site.webmanifest": &assets.File{ Path: "/public/img/site.webmanifest", FileMode: 0x1ed, Mtime: time.Unix(1577812992, 1577812992787403694), Data: []byte(_Assets8391991a0f9445efcc483e87a0508f7472f04dab), }, "/public/webfonts": &assets.File{ Path: "/public/webfonts", FileMode: 0x800001ed, Mtime: time.Unix(1577812992, 1577812992830919408), Data: nil, }, "/public": &assets.File{ Path: "/public", FileMode: 0x800001ed, Mtime: time.Unix(1577812992, 1577812992787562495), Data: nil, }, "/public/css": &assets.File{ Path: "/public/css", FileMode: 0x800001ed, Mtime: time.Unix(1590182432, 1590182432234425741), Data: nil, }, "/public/html/confirm.gohtml": &assets.File{ Path: "/public/html/confirm.gohtml", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992779698102), Data: []byte(_Assets78386ead3fb287ea2e07758fc3d0fe2187e0d0ad), }, "/public/img": &assets.File{ Path: "/public/img", FileMode: 0x800001ed, Mtime: time.Unix(1577812992, 1577812992787109221), Data: nil, }, "/public/img/favicon.ico": &assets.File{ Path: "/public/img/favicon.ico", FileMode: 0x1ed, Mtime: time.Unix(1577812992, 1577812992785448672), Data: []byte(_Assets0d77b2008fc5e76d7d489317fc8f0df507d753c5), }, "/public/webfonts/fa-regular-400.svg": &assets.File{ Path: "/public/webfonts/fa-regular-400.svg", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992810235265), Data: []byte(_Assets64f30b43055dd09ec44f8eadb40269023d03229e), }, "/public/img/.DS_Store": &assets.File{ Path: "/public/img/.DS_Store", FileMode: 0x1a4, Mtime: time.Unix(1577572179, 1577572179973956094), Data: []byte(_Assetsc8a0243f5b1b2cb8a698f03d938b8a2276eb3240), }, "/public/webfonts/fa-solid-900.eot": &assets.File{ Path: "/public/webfonts/fa-solid-900.eot", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992815475493), Data: []byte(_Assetsc8e5f53dbe9ae4243f36350d1e222609f6af178b), }, "/public/webfonts/fa-solid-900.svg": &assets.File{ Path: "/public/webfonts/fa-solid-900.svg", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992822888483), Data: []byte(_Assets3937419623a4cdffaf5c05b0d497629e127d85b5), }, "/gateway.go": &assets.File{ Path: "/gateway.go", FileMode: 0x1a4, Mtime: time.Unix(1609276829, 1609276829312253728), Data: []byte(_Assetsb289e24e7683deca2454781b8d3914d88103d97a), }, "/Makefile": &assets.File{ Path: "/Makefile", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992720959638), Data: []byte(_Assets5e70439c4378bfd4d8fad0377484821d8d3176bb), }, "/public/html": &assets.File{ Path: "/public/html", FileMode: 0x800001ed, Mtime: time.Unix(1590855336, 1590855336462097125), Data: nil, }, "/public/html/error.gohtml": &assets.File{ Path: "/public/html/error.gohtml", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992781049299), Data: []byte(_Assets86cd0824fababa1fde259c0e52ec8ca0455e8965), }, "/public/html/consent.gohtml": &assets.File{ Path: "/public/html/consent.gohtml", FileMode: 0x1a4, Mtime: time.Unix(1590855336, 1590855336464350483), Data: []byte(_Assetsee5a7899492dd689fa51716a10baa72c11b0a277), }, "/public/webfonts/fa-regular-400.ttf": &assets.File{ Path: "/public/webfonts/fa-regular-400.ttf", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992811238687), Data: []byte(_Assetsaf1761e86eb6c63bb3e05e2d74c4e2f792ae10b3), }, "/public/webfonts/fa-brands-400.woff": &assets.File{ Path: "/public/webfonts/fa-brands-400.woff", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992804987522), Data: []byte(_Assets2b8ba0ba9ee6d47753727f8c81b09020b5f9249c), }, "/public/webfonts/fa-brands-400.woff2": &assets.File{ Path: "/public/webfonts/fa-brands-400.woff2", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992807486742), Data: []byte(_Assets88d58097382a74c60911983bc1037b4ca4d863cc), }, "/public/webfonts/fa-brands-400.ttf": &assets.File{ Path: "/public/webfonts/fa-brands-400.ttf", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992803191548), Data: []byte(_Assetsd049223eb2ab91ac66001a116d54e31249bb6996), }, "/buckets.go": &assets.File{ Path: "/buckets.go", FileMode: 0x1a4, Mtime: time.Unix(1609276834, 1609276834803151826), Data: []byte(_Assets9af9b32d4979a14fbf6f85fef5e28a54c6ceb4d8), }, "/": &assets.File{ Path: "/", FileMode: 0x800001ed, Mtime: time.Unix(1609278616, 1609278616815463805), Data: nil, }, "/public/html/unixfs.gohtml": &assets.File{ Path: "/public/html/unixfs.gohtml", FileMode: 0x1a4, Mtime: time.Unix(1590182432, 1590182432235203654), Data: []byte(_Assetsd05f64fbc9bda08199115722ef3368a3ded9a593), }, "/public/img/favicon-16x16.png": &assets.File{ Path: "/public/img/favicon-16x16.png", FileMode: 0x1ed, Mtime: time.Unix(1577812992, 1577812992784417223), Data: []byte(_Assetsd13d7a53abf40be3e0fd76e8a51bb4835b035bb0), }, "/public/webfonts/fa-regular-400.woff": &assets.File{ Path: "/public/webfonts/fa-regular-400.woff", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992812007588), Data: []byte(_Assets9ec4cdb6b9a1b4a014c65fbde9dbb7ca62e478ab), }, "/public/webfonts/fa-brands-400.eot": &assets.File{ Path: "/public/webfonts/fa-brands-400.eot", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992790736776), Data: []byte(_Assets0d82f92ba8c7e829dd63af485d6dfd5cfee1968d), }, "/.DS_Store": &assets.File{ Path: "/.DS_Store", FileMode: 0x1a4, Mtime: time.Unix(1577565469, 1577565469198572432), Data: []byte(_Assets2eaf811e78c039402383e125deb093600a999e32), }, "/public/webfonts/fa-regular-400.eot": &assets.File{ Path: "/public/webfonts/fa-regular-400.eot", FileMode: 0x1a4, Mtime: time.Unix(1577812992, 1577812992808492887), Data: []byte(_Assetsbea737c26084085e55f9d5af779b4b5af1c1e4f2), }, "/threads.go": &assets.File{ Path: "/threads.go", FileMode: 0x1a4, Mtime: time.Unix(1601056177, 1601056177551998729), Data: []byte(_Assets20bbcb56854340073ddda797ede16b7f86c7d3a3), }}, "") ================================================ FILE: gateway/buckets.go ================================================ package gateway import ( "context" "fmt" "io" "net/http" "path" "strconv" "strings" "time" "github.com/gin-gonic/gin" assets "github.com/textileio/go-assets" "github.com/textileio/go-threads/core/thread" "github.com/textileio/go-threads/db" "github.com/textileio/textile/v2/api/bucketsd/client" bucketsclient "github.com/textileio/textile/v2/api/bucketsd/client" "github.com/textileio/textile/v2/api/common" "github.com/textileio/textile/v2/buckets" mdb "github.com/textileio/textile/v2/mongodb" tdb "github.com/textileio/textile/v2/threaddb" "github.com/textileio/textile/v2/util" ) type fileSystem struct { *assets.FileSystem } func (f *fileSystem) Exists(prefix, path string) bool { pth := strings.TrimPrefix(path, prefix) if pth == "/" { return false } _, ok := f.Files[pth] return ok } func (g *Gateway) renderBucket(c *gin.Context, ctx context.Context, threadID thread.ID, token thread.Token) { rep, err := g.buckets.List(ctx) if err != nil { renderError(c, http.StatusBadRequest, err) return } links := make([]link, len(rep.Roots)) for i, r := range rep.Roots { var name string if r.Name != "" { name = r.Name } else { name = r.Key } p := path.Join("thread", threadID.String(), buckets.CollectionName, r.Key) if token.Defined() { p += "?token=" + string(token) } links[i] = link{ Name: name, Path: p, Size: "", Links: "", } } c.HTML(http.StatusOK, "/public/html/unixfs.gohtml", gin.H{ "Title": "Index of " + path.Join("/thread", threadID.String(), buckets.CollectionName), "Root": "/", "Path": "", "Updated": "", "Back": "", "Links": links, }) } func (g *Gateway) renderBucketPath(c *gin.Context, ctx context.Context, threadID thread.ID, collection, id, pth string, token thread.Token) { var buck tdb.Bucket if err := g.threads.FindByID(ctx, threadID, collection, id, &buck, db.WithTxnToken(token)); err != nil { render404(c) return } rep, err := g.buckets.ListPath(ctx, buck.Key, pth) if err != nil { render404(c) return } if !rep.Item.IsDir { contentType, r, err := getContentTypeFromPullPath(ctx, g.buckets, buck.Key, pth) if err != nil { render404(c) return } c.Writer.Header().Set("Content-Type", contentType) io.Copy(c.Writer, r) } else { var base string if g.subdomains { base = buckets.CollectionName } else { base = path.Join("thread", threadID.String(), buckets.CollectionName) } var links []link for _, item := range rep.Item.Items { pth := path.Join(base, strings.Replace(item.Path, rep.Root.Path, rep.Root.Key, 1)) if token.Defined() { pth += "?token=" + string(token) } links = append(links, link{ Name: item.Name, Path: pth, Size: util.ByteCountDecimal(item.Size), Links: strconv.Itoa(len(item.Items)), }) } var name string if rep.Root.Name != "" { name = rep.Root.Name } else { name = rep.Root.Key } root := strings.Replace(rep.Item.Path, rep.Root.Path, name, 1) back := path.Dir(path.Join(base, strings.Replace(rep.Item.Path, rep.Root.Path, rep.Root.Key, 1))) if token.Defined() { back += "?token=" + string(token) } c.HTML(http.StatusOK, "/public/html/unixfs.gohtml", gin.H{ "Title": "Index of /" + root, "Root": "/" + root, "Path": rep.Item.Path, "Updated": time.Unix(0, rep.Root.UpdatedAt).String(), "Back": back, "Links": links, }) } } type serveBucketFS interface { GetThread(ctx context.Context, key string) (thread.ID, error) Exists(ctx context.Context, bucket, pth string) (bool, string) GetPathWithContentType(ctx context.Context, bucket, pth string) (string, io.Reader, error) ValidHost() string } type bucketFS struct { client *client.Client keys *mdb.IPNSKeys session string host string } func serveBucket(fs serveBucketFS) gin.HandlerFunc { return func(c *gin.Context) { key, err := bucketFromHost(c.Request.Host, fs.ValidHost()) if err != nil { return } ctx, cancel := context.WithTimeout(context.Background(), handlerTimeout) defer cancel() threadID, err := fs.GetThread(ctx, key) if err != nil { return } ctx = common.NewThreadIDContext(ctx, threadID) token := thread.Token(c.Query("token")) if token.Defined() { ctx = thread.NewTokenContext(ctx, token) } exists, target := fs.Exists(ctx, key, c.Request.URL.Path) if exists { c.Writer.WriteHeader(http.StatusOK) contentType, r, err := fs.GetPathWithContentType(ctx, key, c.Request.URL.Path) if err != nil { renderError(c, http.StatusInternalServerError, err) } else { c.Writer.Header().Set("Content-Type", contentType) io.Copy(c.Writer, r) c.Abort() } } else if target != "" { content := path.Join(c.Request.URL.Path, target) c.Writer.WriteHeader(http.StatusOK) contentType, r, err := fs.GetPathWithContentType(ctx, key, content) if err != nil { renderError(c, http.StatusInternalServerError, err) } else { c.Writer.Header().Set("Content-Type", contentType) io.Copy(c.Writer, r) c.Abort() } } } } func (f *bucketFS) GetThread(ctx context.Context, bkey string) (id thread.ID, err error) { key, err := f.keys.GetByCid(ctx, bkey) if err != nil { return } return key.ThreadID, nil } func (f *bucketFS) Exists(ctx context.Context, key, pth string) (ok bool, name string) { if key == "" || pth == "/" { return } ctx = common.NewSessionContext(ctx, f.session) rep, err := f.client.ListPath(ctx, key, pth) if err != nil { return } if rep.Item.IsDir { for _, item := range rep.Item.Items { if item.Name == "index.html" { return false, item.Name } } return } return true, "" } func (f *bucketFS) GetPathWithContentType(ctx context.Context, key, pth string) (string, io.Reader, error) { ctx = common.NewSessionContext(ctx, f.session) contentType, r, err := getContentTypeFromPullPath(ctx, f.client, key, pth) if err != nil { return "", nil, err } return contentType, r, nil } func (f *bucketFS) ValidHost() string { return f.host } // renderWWWBucket renders a bucket as a website. func (g *Gateway) renderWWWBucket(c *gin.Context, key string) { ctx, cancel := context.WithTimeout(common.NewSessionContext(context.Background(), g.apiSession), handlerTimeout) defer cancel() ipnskey, err := g.collections.IPNSKeys.GetByCid(ctx, key) if err != nil { render404(c) return } ctx = common.NewThreadIDContext(ctx, ipnskey.ThreadID) token := thread.Token(c.Query("token")) if token.Defined() { ctx = thread.NewTokenContext(ctx, token) } buck := &tdb.Bucket{} if err := g.threads.FindByID(ctx, ipnskey.ThreadID, buckets.CollectionName, key, &buck, db.WithTxnToken(token)); err != nil { render404(c) return } rep, err := g.buckets.ListPath(ctx, buck.Key, "") if err != nil { render404(c) return } for _, item := range rep.Item.Items { if item.Name == "index.html" { c.Writer.WriteHeader(http.StatusOK) contentType, r, err := getContentTypeFromPullPath(ctx, g.buckets, buck.Key, item.Name) if err != nil { render404(c) } c.Writer.Header().Set("Content-Type", contentType) io.Copy(c.Writer, r) return } } renderError(c, http.StatusNotFound, fmt.Errorf("an index.html file was not found in this bucket")) } func getContentTypeFromPullPath(ctx context.Context, client *bucketsclient.Client, buckKey, pth string) (string, io.Reader, error) { pr, pw := io.Pipe() go func() { defer pw.Close() if err := client.PullPath(ctx, buckKey, pth, pw); err != nil { log.Errorf("pulling path: %s", err) } }() contentType, r, err := detectReaderContentType(pr, pth) if err != nil { return "", nil, fmt.Errorf("detecting content-type: %s", err) } return contentType, r, nil } func bucketFromHost(host, valid string) (key string, err error) { parts := strings.SplitN(host, ".", 2) hostport := parts[len(parts)-1] hostparts := strings.SplitN(hostport, ":", 2) if hostparts[0] != valid || valid == "" { err = fmt.Errorf("invalid bucket host") return } return parts[0], nil } ================================================ FILE: gateway/gateway.go ================================================ package gateway import ( "context" "errors" "fmt" "html/template" "io/ioutil" "net/http" "net/url" "strings" "time" "github.com/gin-contrib/location" "github.com/gin-contrib/pprof" "github.com/gin-contrib/static" "github.com/gin-gonic/gin" "github.com/ipfs/go-cid" logging "github.com/ipfs/go-log/v2" iface "github.com/ipfs/interface-go-ipfs-core" isd "github.com/jbenet/go-is-domain" "github.com/libp2p/go-libp2p-core/peer" ma "github.com/multiformats/go-multiaddr" mbase "github.com/multiformats/go-multibase" "github.com/rs/cors" gincors "github.com/rs/cors/wrapper/gin" threadsclient "github.com/textileio/go-threads/api/client" "github.com/textileio/go-threads/broadcast" "github.com/textileio/go-threads/core/thread" tutil "github.com/textileio/go-threads/util" bucketsclient "github.com/textileio/textile/v2/api/bucketsd/client" "github.com/textileio/textile/v2/api/common" mdb "github.com/textileio/textile/v2/mongodb" "go.mongodb.org/mongo-driver/mongo" "golang.org/x/time/rate" "google.golang.org/grpc" ) var log = logging.Logger("gateway") const handlerTimeout = time.Minute func init() { gin.SetMode(gin.ReleaseMode) } // link is used for Unixfs directory templates. type link struct { Name string Path string Size string Links string } // Gateway provides HTTP-based access to Textile. type Gateway struct { server *http.Server addr ma.Multiaddr url string subdomains bool bucketsDomain string collections *mdb.Collections apiSession string threads *threadsclient.Client buckets *bucketsclient.Client hub bool ipfs iface.CoreAPI emailSessionBus *broadcast.Broadcaster maxEventsPerSec int maxBurstSize int } // Config defines the gateway configuration. type Config struct { Addr ma.Multiaddr URL string Subdomains bool BucketsDomain string APIAddr ma.Multiaddr APISession string Collections *mdb.Collections IPFSClient iface.CoreAPI EmailSessionBus *broadcast.Broadcaster MaxEventsPerSec int MaxBurstSize int Hub bool Debug bool } // NewGateway returns a new gateway. func NewGateway(conf Config) (*Gateway, error) { if conf.Debug { if err := tutil.SetLogLevels(map[string]logging.LogLevel{ "gateway": logging.LevelDebug, }); err != nil { return nil, err } } apiTarget, err := tutil.TCPAddrFromMultiAddr(conf.APIAddr) if err != nil { return nil, err } opts := []grpc.DialOption{ grpc.WithInsecure(), grpc.WithPerRPCCredentials(common.Credentials{}), } tc, err := threadsclient.NewClient(apiTarget, opts...) if err != nil { return nil, err } bc, err := bucketsclient.NewClient(apiTarget, opts...) if err != nil { return nil, err } if conf.MaxEventsPerSec < 1 { conf.MaxEventsPerSec = 1000 } if conf.MaxBurstSize < 1 { conf.MaxBurstSize = 20 } return &Gateway{ addr: conf.Addr, url: conf.URL, subdomains: conf.Subdomains, bucketsDomain: conf.BucketsDomain, collections: conf.Collections, apiSession: conf.APISession, threads: tc, buckets: bc, hub: conf.Hub, ipfs: conf.IPFSClient, emailSessionBus: conf.EmailSessionBus, maxEventsPerSec: conf.MaxEventsPerSec, maxBurstSize: conf.MaxBurstSize, }, nil } // Start the gateway. func (g *Gateway) Start() { addr, err := tutil.TCPAddrFromMultiAddr(g.addr) if err != nil { log.Fatal(err) } router := gin.Default() temp, err := loadTemplate() if err != nil { log.Fatal(err) } router.SetHTMLTemplate(temp) router.Use(throttle(g.maxEventsPerSec, g.maxBurstSize)) router.Use(location.Default()) router.Use(static.Serve("", &fileSystem{Assets})) router.Use(serveBucket(&bucketFS{ client: g.buckets, keys: g.collections.IPNSKeys, session: g.apiSession, host: g.bucketsDomain, })) router.Use(gincors.New(cors.Options{})) pprof.Register(router) router.GET("/health", func(c *gin.Context) { c.Writer.WriteHeader(http.StatusOK) }) router.GET("/thread/:thread/:collection", g.subdomainOptionHandler, g.collectionHandler) router.GET("/thread/:thread/:collection/:id", g.subdomainOptionHandler, g.instanceHandler) router.GET("/thread/:thread/:collection/:id/*path", g.subdomainOptionHandler, g.instanceHandler) router.GET("/ipfs/:root", g.subdomainOptionHandler, g.ipfsHandler) router.GET("/ipfs/:root/*path", g.subdomainOptionHandler, g.ipfsHandler) router.GET("/ipns/:key", g.subdomainOptionHandler, g.ipnsHandler) router.GET("/ipns/:key/*path", g.subdomainOptionHandler, g.ipnsHandler) router.GET("/p2p/:key", g.subdomainOptionHandler, g.p2pHandler) router.GET("/ipld/:root", g.subdomainOptionHandler, g.ipldHandler) router.GET("/ipld/:root/*path", g.subdomainOptionHandler, g.ipldHandler) if g.hub { router.GET("/dashboard/:username", g.dashboardHandler) router.GET("/confirm/:secret", g.confirmEmail) router.GET("/consent/:invite", g.consentInvite) } router.NoRoute(g.subdomainHandler) g.server = &http.Server{ Addr: addr, Handler: router, } go func() { if err := g.server.ListenAndServe(); err != nil && err != http.ErrServerClosed { log.Fatalf("gateway error: %s", err) } log.Info("gateway was shutdown") }() log.Infof("gateway listening at %s", g.server.Addr) } // loadTemplate loads HTML templates. func loadTemplate() (*template.Template, error) { t := template.New("") for name, file := range Assets.Files { if file.IsDir() || !strings.HasSuffix(name, ".gohtml") { continue } h, err := ioutil.ReadAll(file) if err != nil { return nil, err } t, err = t.New(name).Parse(string(h)) if err != nil { return nil, err } } return t, nil } // Addr returns the gateway's address. func (g *Gateway) Addr() string { return g.server.Addr } // Stop the gateway. func (g *Gateway) Stop() error { ctx, cancel := context.WithTimeout(context.Background(), time.Second) defer cancel() if err := g.server.Shutdown(ctx); err != nil { return err } if err := g.threads.Close(); err != nil { return err } if err := g.buckets.Close(); err != nil { return err } return nil } // subdomainOptionHandler redirects valid namespaces to subdomains if the option is enabled. func (g *Gateway) subdomainOptionHandler(c *gin.Context) { if !g.subdomains { return } loc, ok := g.toSubdomainURL(c.Request) if !ok { render404(c) return } // See security note https://github.com/ipfs/go-ipfs/blob/dbfa7bf2b216bad9bec1ff66b1f3814f4faac31e/core/corehttp/hostname.go#L105 c.Request.Header.Set("Clear-Site-Data", "\"cookies\", \"storage\"") c.Redirect(http.StatusPermanentRedirect, loc) } // dashboardHandler renders a dev or org dashboard. func (g *Gateway) dashboardHandler(c *gin.Context) { render404(c) } // confirmEmail verifies an emailed secret. func (g *Gateway) confirmEmail(c *gin.Context) { if err := g.emailSessionBus.Send(c.Param("secret")); err != nil { renderError(c, http.StatusInternalServerError, err) return } c.HTML(http.StatusOK, "/public/html/confirm.gohtml", nil) } // consentInvite marks an invite as accepted. // If the associated email belongs to an existing user, they will be added to the org. func (g *Gateway) consentInvite(c *gin.Context) { ctx, cancel := context.WithTimeout(context.Background(), handlerTimeout) defer cancel() invite, err := g.collections.Invites.Get(ctx, c.Param("invite")) if err != nil { if errors.Is(err, mongo.ErrNoDocuments) { render404(c) } else { renderError(c, http.StatusInternalServerError, err) } return } if !invite.Accepted { if time.Now().After(invite.ExpiresAt) { if err := g.collections.Invites.Delete(ctx, invite.Token); err != nil { renderError(c, http.StatusInternalServerError, err) } else { renderError(c, http.StatusPreconditionFailed, fmt.Errorf("this invitation has expired")) } return } dev, err := g.collections.Accounts.GetByUsernameOrEmail(ctx, invite.EmailTo) if err != nil { if errors.Is(err, mongo.ErrNoDocuments) { if err := g.collections.Invites.Accept(ctx, invite.Token); err != nil { renderError(c, http.StatusInternalServerError, err) } } else { renderError(c, http.StatusInternalServerError, err) return } } if dev != nil { if err := g.collections.Accounts.AddMember(ctx, invite.Org, mdb.Member{ Key: dev.Key, Username: dev.Username, Role: mdb.OrgMember, }); err != nil { if err == mongo.ErrNoDocuments { if err := g.collections.Invites.Delete(ctx, invite.Token); err != nil { renderError(c, http.StatusInternalServerError, err) } else { renderError(c, http.StatusNotFound, fmt.Errorf("org not found")) } } else { renderError(c, http.StatusInternalServerError, err) } return } if err = g.collections.Invites.Delete(ctx, invite.Token); err != nil { renderError(c, http.StatusInternalServerError, err) return } } } c.HTML(http.StatusOK, "/public/html/consent.gohtml", gin.H{ "Org": invite.Org, "Email": invite.EmailTo, }) } // render404 renders the 404 template. func render404(c *gin.Context) { c.HTML(http.StatusNotFound, "/public/html/404.gohtml", nil) } // renderError renders the error template. func renderError(c *gin.Context, code int, err error) { c.HTML(code, "/public/html/error.gohtml", gin.H{ "Code": code, "Error": formatError(err), }) } // formatError formats a go error for browser display. func formatError(err error) string { words := strings.SplitN(err.Error(), " ", 2) words[0] = strings.Title(words[0]) return strings.Join(words, " ") + "." } // subdomainHandler handles requests by parsing the request subdomain. func (g *Gateway) subdomainHandler(c *gin.Context) { c.Status(200) parts := strings.Split(c.Request.Host, ".") key := parts[0] // Render buckets if the domain matches if g.bucketsDomain != "" && strings.HasSuffix(c.Request.Host, g.bucketsDomain) { g.renderWWWBucket(c, key) return } if len(parts) < 3 { render404(c) return } ns := parts[1] if !isSubdomainNamespace(ns) { render404(c) return } switch ns { case "ipfs": g.renderIPFSPath(c, "ipfs/"+key, "/ipfs/"+key+c.Request.URL.Path) case "ipns": g.renderIPNSKey(c, key, c.Request.URL.Path) case "p2p": g.renderP2PKey(c, key) case "ipld": g.renderIPLDPath(c, key+c.Request.URL.Path) case "thread": threadID, err := thread.Decode(key) if err != nil { renderError(c, http.StatusBadRequest, fmt.Errorf("invalid thread ID")) return } parts := strings.SplitN(strings.TrimSuffix(c.Request.URL.Path, "/"), "/", 4) switch len(parts) { case 1: // @todo: Render something at the thread root render404(c) case 2: if parts[1] != "" { g.renderCollection(c, threadID, parts[1]) } else { render404(c) } case 3: g.renderInstance(c, threadID, parts[1], parts[2], "") case 4: g.renderInstance(c, threadID, parts[1], parts[2], parts[3]) default: render404(c) } default: render404(c) } } // Modified from https://github.com/ipfs/go-ipfs/blob/dbfa7bf2b216bad9bec1ff66b1f3814f4faac31e/core/corehttp/hostname.go#L251 func isSubdomainNamespace(ns string) bool { switch ns { case "ipfs", "ipns", "p2p", "ipld", "thread": return true default: return false } } // Copied from https://github.com/ipfs/go-ipfs/blob/dbfa7bf2b216bad9bec1ff66b1f3814f4faac31e/core/corehttp/hostname.go#L260 func isPeerIDNamespace(ns string) bool { switch ns { case "ipns", "p2p": return true default: return false } } // Converts a hostname/path to a subdomain-based URL, if applicable. // Modified from https://github.com/ipfs/go-ipfs/blob/dbfa7bf2b216bad9bec1ff66b1f3814f4faac31e/core/corehttp/hostname.go#L270 func (g *Gateway) toSubdomainURL(r *http.Request) (redirURL string, ok bool) { var ns, rootID, rest string query := r.URL.RawQuery parts := strings.SplitN(r.URL.Path, "/", 4) safeRedirectURL := func(in string) (out string, ok bool) { safeURI, err := url.ParseRequestURI(in) if err != nil { return "", false } return safeURI.String(), true } switch len(parts) { case 4: rest = parts[3] fallthrough case 3: ns = parts[1] rootID = parts[2] default: return "", false } if !isSubdomainNamespace(ns) { return "", false } // add prefix if query is present if query != "" { query = "?" + query } // Normalize problematic PeerIDs (eg. ed25519+identity) to CID representation if isPeerIDNamespace(ns) && !isd.IsDomain(rootID) { peerID, err := peer.Decode(rootID) // Note: PeerID CIDv1 with protobuf multicodec will fail, but we fix it // in the next block if err == nil { rootID = peer.ToCid(peerID).String() } } // If rootID is a CID, ensure it uses DNS-friendly text representation if rootCid, err := cid.Decode(rootID); err == nil { multicodec := rootCid.Type() // PeerIDs represented as CIDv1 are expected to have libp2p-key // multicodec (https://github.com/libp2p/specs/pull/209). // We ease the transition by fixing multicodec on the fly: // https://github.com/ipfs/go-ipfs/issues/5287#issuecomment-492163929 if isPeerIDNamespace(ns) && multicodec != cid.Libp2pKey { multicodec = cid.Libp2pKey } // if object turns out to be a valid CID, // ensure text representation used in subdomain is CIDv1 in Base32 // https://github.com/ipfs/in-web-browsers/issues/89 rootID, err = cid.NewCidV1(multicodec, rootCid.Hash()).StringOfBase(mbase.Base32) if err != nil { // should not error, but if it does, its clealy not possible to // produce a subdomain URL return "", false } } urlparts := strings.Split(g.url, "://") if len(urlparts) < 2 { return "", false } scheme := urlparts[0] host := urlparts[1] return safeRedirectURL(fmt.Sprintf("%s://%s.%s.%s/%s%s", scheme, rootID, ns, host, rest, query)) } func throttle(maxEventsPerSec int, maxBurstSize int) gin.HandlerFunc { limiter := rate.NewLimiter(rate.Limit(maxEventsPerSec), maxBurstSize) return func(context *gin.Context) { if limiter.Allow() { context.Next() return } context.Error(errors.New("limit exceeded")) context.AbortWithStatus(http.StatusTooManyRequests) } } ================================================ FILE: gateway/ipfs.go ================================================ package gateway import ( "bytes" "context" "fmt" "io" "net/http" gopath "path" "path/filepath" "strings" "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/render" files "github.com/ipfs/go-ipfs-files" iface "github.com/ipfs/interface-go-ipfs-core" "github.com/ipfs/interface-go-ipfs-core/path" "github.com/libp2p/go-libp2p-core/peer" "github.com/textileio/textile/v2/util" ) func (g *Gateway) ipfsHandler(c *gin.Context) { base := fmt.Sprintf("ipfs/%s", c.Param("root")) pth := fmt.Sprintf("/%s%s", base, c.Param("path")) g.renderIPFSPath(c, base, pth) } func (g *Gateway) renderIPFSPath(c *gin.Context, base, pth string) { ctx, cancel := context.WithTimeout(context.Background(), handlerTimeout) defer cancel() pth = strings.TrimSuffix(pth, "/") f, err := g.openPath(ctx, path.New(pth)) if err != nil { if err == iface.ErrIsDir { var root, dir, back string parts := strings.Split(pth, "/") if len(parts) > 2 { root = strings.Join(parts[:3], "/") dir = strings.Join(parts[3:], "/") back = gopath.Dir(dir) } if dir == "" { back = "" } if !g.subdomains { dir = gopath.Join(base, dir) if back != "" { back = gopath.Join(base, back) } } lctx, lcancel := context.WithTimeout(context.Background(), handlerTimeout) defer lcancel() ilinks, err := g.ipfs.Object().Links(lctx, path.New(pth)) if err != nil { renderError(c, http.StatusNotFound, err) return } var links []link for _, l := range ilinks { links = append(links, link{ Name: l.Name, Path: gopath.Join(dir, l.Name), Size: util.ByteCountDecimal(int64(l.Size)), }) } var index string if strings.HasPrefix(base, "ipns") { index = gopath.Join("/", base, dir) } else { index = gopath.Join(root, dir) } if !g.subdomains { dir = strings.TrimPrefix(strings.Replace(dir, base, "", 1), "/") } params := gin.H{ "Title": "Index of " + index, "Root": "/" + dir, "Path": pth, "Updated": "", "Back": strings.TrimPrefix(back, "/"), "Links": links, } c.HTML(http.StatusOK, "/public/html/unixfs.gohtml", params) return } renderError(c, http.StatusBadRequest, err) return } defer f.Close() contentType, r, err := detectReaderContentType(f, pth) if err != nil { renderError(c, http.StatusInternalServerError, fmt.Errorf("detecting mime: %s", err)) return } c.Writer.Header().Set("Content-Type", contentType) c.Render(200, render.Reader{ContentLength: -1, Reader: r}) } // detectReaderContentType detects the best available mime type for some bytes. // Note: file extension is used here due to the inability to detect some known // content types from content alone, those include CSS. func detectReaderContentType(r io.Reader, pth string) (string, io.Reader, error) { var buf [512]byte n, err := io.ReadAtLeast(r, buf[:], len(buf)) if err != nil && err != io.ErrUnexpectedEOF { return "", nil, fmt.Errorf("reading reader: %s", err) } reader := io.MultiReader(bytes.NewReader(buf[:n]), r) ext := filepath.Ext(pth) switch ext { case ".htm", ".html": return "text/html", reader, nil case ".css": return "text/css", reader, nil case ".js": return "application/javascript", reader, nil case ".json": return "application/json", reader, nil case ".svg": return "image/svg+xml", reader, nil case ".txt", ".md": return "text/plain", reader, nil default: return http.DetectContentType(buf[:]), reader, nil } } func (g *Gateway) openPath(ctx context.Context, pth path.Path) (io.ReadCloser, error) { f, err := g.ipfs.Unixfs().Get(ctx, pth) if err != nil { return nil, err } var file files.File switch f := f.(type) { case files.File: file = f case files.Directory: return nil, iface.ErrIsDir default: return nil, iface.ErrNotSupported } return file, nil } func (g *Gateway) ipnsHandler(c *gin.Context) { g.renderIPNSKey(c, c.Param("key"), c.Param("path")) } func (g *Gateway) renderIPNSKey(c *gin.Context, key, pth string) { ctx, cancel := context.WithTimeout(context.Background(), handlerTimeout) defer cancel() root, err := g.ipfs.Name().Resolve(ctx, key) if err != nil { renderError(c, http.StatusNotFound, err) return } base := fmt.Sprintf("ipns/%s", key) g.renderIPFSPath(c, base, gopath.Join(root.String(), pth)) } func (g *Gateway) p2pHandler(c *gin.Context) { g.renderP2PKey(c, c.Param("key")) } func (g *Gateway) renderP2PKey(c *gin.Context, key string) { pid, err := peer.Decode(key) if err != nil { renderError(c, http.StatusBadRequest, err) return } ctx, cancel := context.WithTimeout(context.Background(), handlerTimeout) defer cancel() info, err := g.ipfs.Dht().FindPeer(ctx, pid) if err != nil { renderError(c, http.StatusNotFound, err) return } c.JSON(http.StatusOK, info) } func (g *Gateway) ipldHandler(c *gin.Context) { pth := fmt.Sprintf("%s%s", c.Param("root"), strings.TrimSuffix(c.Param("path"), "/")) g.renderP2PKey(c, pth) } func (g *Gateway) renderIPLDPath(c *gin.Context, pth string) { ctx, cancel := context.WithTimeout(context.Background(), handlerTimeout) defer cancel() node, err := g.ipfs.Object().Get(ctx, path.New(pth)) if err != nil { renderError(c, http.StatusNotFound, err) return } c.JSON(http.StatusOK, node) } ================================================ FILE: gateway/public/css/style.css ================================================ html { box-sizing: border-box; margin: 0; padding: 0; height: 100%; } *, *:before, *:after { box-sizing: inherit; } body { margin: 0; padding: 2em; font-family: monospace, sans-serif; color: #666666; background-color: #222222; height: 100%; } .logo { position: absolute; } .title { line-height: 2em; font-size: 0.9em; margin-top: 5em; margin-bottom: 1em; } .title span.yellow { color: #FFCE00; } .updated { font-size: 0.8em; margin: 2em 0 1em; } a { color: #FFB6D5; text-decoration: none; } ul, li { list-style: none; width: 100%; } ul { margin: 0; padding: 0; } li { line-height: 2em; font-size: 0.9em; } li span.right { float: right; } li:nth-child(even) { background: rgba(255,182,213,0.05); } li:nth-child(odd) { background: none; } .aligner { display: flex; align-items: center; justify-content: center; flex-direction: column; height: 100%; } .aligner-item { max-width: 60%; } .aligner-item p { text-align: center; line-height: 1.5em; } .icon-big { font-size: 4em; } ================================================ FILE: gateway/public/html/404.gohtml ================================================ {{template "header" "404 Not Found"}}

Nothing to see here!

{{template "footer"}} ================================================ FILE: gateway/public/html/confirm.gohtml ================================================ {{template "header" "Email Address Confirmed"}}

You have been correctly authenticated. You may now close this window!

{{template "footer"}} ================================================ FILE: gateway/public/html/consent.gohtml ================================================ {{template "header" "Invite Accepted"}}

{{.Email}} is now a member of the {{.Org}} organization.

If you haven't already, download the Hub CLI and initialize a new account. Check out the docs for more. You may now close this window!

{{template "footer"}} ================================================ FILE: gateway/public/html/error.gohtml ================================================ {{template "header" "Oops!"}}

{{.Code}} Error: {{.Error}}

{{template "footer"}} ================================================ FILE: gateway/public/html/index.gohtml ================================================ {{define "header"}} {{.}} {{end}} {{define "footer"}} {{end}} ================================================ FILE: gateway/public/html/unixfs.gohtml ================================================ {{template "header" .Title}}
{{ if ne .Root "" }}{{.Root}}: {{ end }}{{.Path}}
{{ if ne .Updated "" }}
Updated {{.Updated}}
{{ end }} {{template "footer"}} ================================================ FILE: gateway/public/img/site.webmanifest ================================================ {"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} ================================================ FILE: gateway/threads.go ================================================ package gateway import ( "context" "fmt" "net/http" "strings" "github.com/gin-gonic/gin" "github.com/textileio/go-threads/core/thread" "github.com/textileio/go-threads/db" "github.com/textileio/textile/v2/api/common" "github.com/textileio/textile/v2/buckets" ) // collectionHandler handles collection requests. func (g *Gateway) collectionHandler(c *gin.Context) { threadID, err := thread.Decode(c.Param("thread")) if err != nil { renderError(c, http.StatusBadRequest, fmt.Errorf("invalid thread ID")) return } g.renderCollection(c, threadID, c.Param("collection")) } // renderCollection renders all instances in a collection. func (g *Gateway) renderCollection(c *gin.Context, threadID thread.ID, collection string) { ctx, cancel := context.WithTimeout(common.NewSessionContext(context.Background(), g.apiSession), handlerTimeout) defer cancel() ctx = common.NewThreadIDContext(ctx, threadID) token := thread.Token(c.Query("token")) if token.Defined() { ctx = thread.NewTokenContext(ctx, token) } jsn := c.Query("json") == "true" if collection == buckets.CollectionName && !jsn { g.renderBucket(c, ctx, threadID, token) return } else { var dummy interface{} res, err := g.threads.Find(ctx, threadID, collection, &db.Query{}, &dummy, db.WithTxnToken(token)) if err != nil { render404(c) return } c.JSON(http.StatusOK, res) } } // instanceHandler handles collection instance requests. func (g *Gateway) instanceHandler(c *gin.Context) { threadID, err := thread.Decode(c.Param("thread")) if err != nil { renderError(c, http.StatusBadRequest, fmt.Errorf("invalid thread ID")) return } g.renderInstance(c, threadID, c.Param("collection"), c.Param("id"), c.Param("path")) } // renderInstance renders an instance in a collection. // If the collection is buckets, the built-in buckets UI in rendered instead. // This can be overridden with the query param json=true. func (g *Gateway) renderInstance(c *gin.Context, threadID thread.ID, collection, id, pth string) { pth = strings.TrimPrefix(pth, "/") jsn := c.Query("json") == "true" if (collection != buckets.CollectionName || jsn) && pth != "" { render404(c) return } ctx, cancel := context.WithTimeout(common.NewSessionContext(context.Background(), g.apiSession), handlerTimeout) defer cancel() ctx = common.NewThreadIDContext(ctx, threadID) token := thread.Token(c.Query("token")) if token.Defined() { ctx = thread.NewTokenContext(ctx, token) } if collection == buckets.CollectionName && !jsn { g.renderBucketPath(c, ctx, threadID, collection, id, pth, token) return } else { var res interface{} if err := g.threads.FindByID(ctx, threadID, collection, id, &res, db.WithTxnToken(token)); err != nil { render404(c) return } c.JSON(http.StatusOK, res) } } ================================================ FILE: go.mod ================================================ module github.com/textileio/textile/v2 go 1.15 require ( github.com/alecthomas/jsonschema v0.0.0-20191017121752-4bb6e3fae4f2 github.com/blang/semver v3.5.1+incompatible github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect github.com/caarlos0/spin v1.1.0 github.com/cenkalti/backoff/v4 v4.1.1 github.com/cheggaaa/pb/v3 v3.0.5 github.com/cloudflare/cloudflare-go v0.11.6 github.com/customerio/go-customerio v2.0.0+incompatible github.com/dustin/go-humanize v1.0.0 github.com/filecoin-project/go-fil-markets v1.1.9 github.com/gin-contrib/location v0.0.2 github.com/gin-contrib/pprof v1.3.0 github.com/gin-contrib/static v0.0.1 github.com/gin-gonic/gin v1.7.4 github.com/gogo/status v1.1.0 github.com/golang-jwt/jwt v3.2.2+incompatible github.com/golang/protobuf v1.5.2 github.com/google/go-cmp v0.5.5 github.com/gosimple/slug v1.9.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.2.0 github.com/hashicorp/go-multierror v1.1.1 github.com/improbable-eng/grpc-web v0.14.1 github.com/ipfs/go-blockservice v0.1.4 github.com/ipfs/go-cid v0.0.7 github.com/ipfs/go-datastore v0.4.5 github.com/ipfs/go-ds-flatfs v0.4.4 github.com/ipfs/go-ipfs-blockstore v1.0.4 github.com/ipfs/go-ipfs-chunker v0.0.5 github.com/ipfs/go-ipfs-ds-help v1.0.0 github.com/ipfs/go-ipfs-exchange-offline v0.0.1 github.com/ipfs/go-ipfs-files v0.0.8 github.com/ipfs/go-ipfs-http-client v0.1.0 github.com/ipfs/go-ipld-cbor v0.0.5 github.com/ipfs/go-ipld-format v0.2.0 github.com/ipfs/go-log/v2 v2.3.0 github.com/ipfs/go-merkledag v0.3.2 github.com/ipfs/go-unixfs v0.2.6 github.com/ipfs/interface-go-ipfs-core v0.4.0 github.com/jbenet/go-is-domain v1.0.3 github.com/jhump/protoreflect v1.7.0 github.com/launchdarkly/go-country-codes v0.0.0-20191008001159-776cf5214f39 github.com/libp2p/go-libp2p-core v0.8.6 github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381 github.com/manifoldco/promptui v0.7.0 github.com/mattn/go-colorable v0.1.8 // indirect github.com/mitchellh/go-homedir v1.1.0 github.com/mitchellh/mapstructure v1.3.0 // indirect github.com/multiformats/go-multiaddr v0.3.3 github.com/multiformats/go-multibase v0.0.3 github.com/multiformats/go-multihash v0.0.15 github.com/oklog/ulid/v2 v2.0.2 github.com/olekukonko/tablewriter v0.0.5 github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 github.com/radovskyb/watcher v1.0.7 github.com/rhysd/go-github-selfupdate v1.2.2 github.com/robfig/cron/v3 v3.0.1 github.com/rs/cors v1.7.0 github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 github.com/segmentio/backo-go v0.0.0-20200129164019-23eae7c10bd3 // indirect github.com/spf13/afero v1.2.2 // indirect github.com/spf13/cast v1.3.1 // indirect github.com/spf13/cobra v1.1.3 github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/viper v1.7.1 github.com/stretchr/objx v0.2.0 // indirect github.com/stretchr/testify v1.7.0 github.com/stripe/stripe-go/v72 v72.10.0 github.com/tchap/go-patricia v2.3.0+incompatible // indirect github.com/textileio/crypto v0.0.0-20210929130053-08edebc3361a github.com/textileio/dcrypto v0.0.1 github.com/textileio/go-assets v0.0.0-20200430191519-b341e634e2b7 github.com/textileio/go-ds-mongo v0.1.5 github.com/textileio/go-threads v1.1.6-0.20220409162902-a715c2402413 github.com/textileio/powergate/v2 v2.3.0 github.com/textileio/swagger-ui v0.3.29-0.20210224180244-7d73a7a32fe7 github.com/xakep666/mongo-migrate v0.2.1 github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c // indirect go.mongodb.org/mongo-driver v1.8.1 golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d golang.org/x/sync v0.0.0-20210220032951-036812b2e83c golang.org/x/text v0.3.6 golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1 google.golang.org/genproto v0.0.0-20210207032614-bba0dbe2a9ea google.golang.org/grpc v1.39.0 google.golang.org/protobuf v1.27.1 gopkg.in/ini.v1 v1.55.0 // indirect gopkg.in/segmentio/analytics-go.v3 v3.1.0 ) replace github.com/ipfs/go-ipns => github.com/ipfs/go-ipns v0.0.2 replace github.com/improbable-eng/grpc-web v0.14.1 => github.com/jsmouret/grpc-web v0.14.2-0.20211103063242-8c932b2237aa ================================================ FILE: go.sum ================================================ bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= contrib.go.opencensus.io/exporter/jaeger v0.1.0/go.mod h1:VYianECmuFPwU37O699Vc1GOcy+y8kOsfaxHRImmjbA= contrib.go.opencensus.io/exporter/prometheus v0.1.0/go.mod h1:cGFniUXGZlKRjzOyuZJ6mgB+PgBcCIa79kEKR8YCW+A= contrib.go.opencensus.io/exporter/prometheus v0.2.0/go.mod h1:TYmVAyE8Tn1lyPcltF5IYYfWp2KHu7lQGIZnj8iZMys= dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= github.com/AndreasBriese/bbloom v0.0.0-20180913140656-343706a395b7/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 h1:cTp8I5+VIoKjsnZuH8vjyaysT/ses3EvZeaV/1UkF2M= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DataDog/zstd v1.4.1 h1:3oxKN3wbHibqx897utPC2LTQU4J+IHWWJO+glkAkpFM= github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/GeertJohan/go.incremental v1.0.0/go.mod h1:6fAjUhbVuX1KcMD3c8TEgVUqmo4seqhv0i0kdATSkM0= github.com/GeertJohan/go.rice v1.0.0 h1:KkI6O9uMaQU3VEKaj01ulavtF7o1fWT7+pk/4voiMLQ= github.com/GeertJohan/go.rice v1.0.0/go.mod h1:eH6gbSOAUv07dQuZVnBmoDP8mgsM1rtixis4Tib9if0= github.com/Gurpartap/async v0.0.0-20180927173644-4f7f499dd9ee/go.mod h1:W0GbEAA4uFNYOGG2cJpmFJ04E6SD1NLELPYZB57/7AY= github.com/Jeffail/gabs v1.4.0/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Kubuxu/go-os-helper v0.0.1/go.mod h1:N8B+I7vPCT80IcP58r50u4+gEEcsZETFUpAzWW2ep1Y= github.com/Microsoft/go-winio v0.4.14 h1:+hMXMk01us9KgxGb7ftKQt2Xpf5hH/yky+TDA+qxleU= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk= github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/Stebalien/go-bitfield v0.0.0-20180330043415-076a62f9ce6e/go.mod h1:3oM7gXIttpYDAJXpVNnSCiUMYBLIZ6cb1t+Ip982MRo= github.com/Stebalien/go-bitfield v0.0.1 h1:X3kbSSPUaJK60wV2hjOPZwmpljr6VGCqdq4cBLhbQBo= github.com/Stebalien/go-bitfield v0.0.1/go.mod h1:GNjFpasyUVkHMsfEOk8EFLJ9syQ6SI+XWrX9Wf2XH0s= github.com/VividCortex/ewma v1.1.1 h1:MnEK4VOv6n0RSY4vtRe3h11qjxL3+t0B8yOL8iMXdcM= github.com/VividCortex/ewma v1.1.1/go.mod h1:2Tkkvm3sRDVXaiyucHiACn4cqf7DpdyLvmxzcbUokwA= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0= github.com/akavel/rsrc v0.8.0/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c= github.com/alecthomas/jsonschema v0.0.0-20191017121752-4bb6e3fae4f2 h1:swGeCLPiUQ647AIRnFxnAHdzlg6IPpmU6QdkOPZINt8= github.com/alecthomas/jsonschema v0.0.0-20191017121752-4bb6e3fae4f2/go.mod h1:Juc2PrI3wtNfUwptSvAIeNx+HrETwHQs6nf+TkOJlOA= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5 h1:iW0a5ljuFxkLGPNem5Ui+KBjFJzKg4Fv2fnxe4dvzpM= github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5/go.mod h1:Y2QMoi1vgtOIfc+6DhrMOGkLoGzqSV2rKp4Sm+opsyA= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apoorvam/goterminal v0.0.0-20180523175556-614d345c47e5/go.mod h1:E7x8aDc3AQzDKjEoIZCt+XYheHk2OkP+p2UgeNjecH8= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= 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/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/atotto/clipboard v0.1.2/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= github.com/awalterschulze/gographviz v0.0.0-20190522210029-fa59802746ab/go.mod h1:GEV5wmg4YquNw7v1kkyoX9etIk8yVmXj+AkDHuuETHs= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.29.15/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg= github.com/aws/aws-sdk-go v1.32.11/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= github.com/benbjohnson/clock v1.0.1/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= github.com/benbjohnson/clock v1.0.2/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= 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= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= github.com/briandowns/spinner v1.11.1/go.mod h1:QOuQk7x+EaDASo80FEXwlwiA+j/PPIcX3FScO+3/ZPQ= github.com/btcsuite/btcd v0.0.0-20190213025234-306aecffea32/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= github.com/btcsuite/btcd v0.0.0-20190523000118-16327141da8c/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= github.com/btcsuite/btcd v0.0.0-20190605094302-a0d1e3e36d50/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= github.com/btcsuite/btcd v0.0.0-20190824003749-130ea5bddde3/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.21.0-beta h1:At9hIZdJW0s9E/fAz28nrz6AmcNlSVucCH796ZteX1M= github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/buger/goterm v0.0.0-20200322175922-2f3e71b85129/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U= github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= github.com/caarlos0/spin v1.1.0 h1:EjsfGbZJejib25BPnDqf7iL2z9RUna7refvUf+AN9UE= github.com/caarlos0/spin v1.1.0/go.mod h1:HOC4pUvfhjXR2yDt+sEY9dRc2m4CCaK5z5oQYAbzXSA= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v3 v3.0.0 h1:ske+9nBpD9qZsTBoF41nW5L+AIuFBKMeze18XQ3eG1c= github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/cenkalti/backoff/v4 v4.1.1 h1:G2HAfAmvm/GcKan2oOQpBXOd2tT2G57ZnZGWa1PxPBQ= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/certifi/gocertifi v0.0.0-20200211180108-c7c1fbc02894/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= 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/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charmbracelet/bubbles v0.7.6/go.mod h1:0D4XRYK0tjo8JMvflz1obpVcOikNZSG46SFauoZj22s= github.com/charmbracelet/bubbletea v0.12.2/go.mod h1:3gZkYELUOiEUOp0bTInkxguucy/xRbGSOcbMs1geLxg= github.com/charmbracelet/bubbletea v0.12.4/go.mod h1:tp9tr9Dadh0PLhgiwchE5zZJXm5543JYjHG9oY+5qSg= github.com/cheekybits/genny v1.0.0 h1:uGGa4nei+j20rOSeDeP5Of12XVm7TGUd4dJA9RDitfE= github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= github.com/cheggaaa/pb/v3 v3.0.5 h1:lmZOti7CraK9RSjzExsY53+WWfub9Qv13B5m4ptEoPE= github.com/cheggaaa/pb/v3 v3.0.5/go.mod h1:X1L61/+36nz9bjIsrDU52qHKOQukUQe2Ge+YvGuquCw= github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/cloudflare-go v0.11.6 h1:gErXaYucoS8aHdmoJnF4RMFiXJH449sk6rCtoP6EhrE= github.com/cloudflare/cloudflare-go v0.11.6/go.mod h1:lmCbgQdBeSQlMv0W0OSqoGgl8aFrgc5oXHhWMt47dh0= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= github.com/cockroachdb/pebble v0.0.0-20200916222308-4e219a90ba5b/go.mod h1:hU7vhtrqonEphNF+xt8/lHdaBprxmV1h8BOGrd9XwmQ= github.com/cockroachdb/pebble v0.0.0-20201001221639-879f3bfeef07/go.mod h1:hU7vhtrqonEphNF+xt8/lHdaBprxmV1h8BOGrd9XwmQ= github.com/cockroachdb/redact v0.0.0-20200622112456-cd282804bbd3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20200228182428-0f16d7a0959c h1:8ahmSVELW1wghbjerVAyuEYD5+Dio66RYvSS0iGfL1M= github.com/containerd/continuity v0.0.0-20200228182428-0f16d7a0959c/go.mod h1:Dq467ZllaHgAtVp4p1xUQWBrFXR9s/wyoTpG8zOJGkY= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.2.1-0.20180108230905-e214231b295a/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= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosiner/argv v0.1.0/go.mod h1:EusR6TucWKX+zFgtdUsKT2Cvg45K5rtpCcWz4hK06d8= github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= 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/crackcomm/go-gitignore v0.0.0-20170627025303-887ab5e44cc3 h1:HVTnpeuvF6Owjd5mniCL8DEXo7uYXdQEmOP4FJbV5tg= github.com/crackcomm/go-gitignore v0.0.0-20170627025303-887ab5e44cc3/go.mod h1:p1d6YEZWvFzEh4KLyvBcVSnrfNDDvK2zfK/4x2v/4pE= 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/cskr/pubsub v1.0.2 h1:vlOzMhl6PFn60gRlTQQsIfVwaPB/B/8MziK8FhEPt/0= github.com/cskr/pubsub v1.0.2/go.mod h1:/8MzYXk/NJAz782G8RPkFzXTZVu63VotefPnR9TIRis= github.com/customerio/go-customerio v2.0.0+incompatible h1:7E4vuxvPwJHr3qOFHgytA441Ev0kKutk8+JCEELtyvs= github.com/customerio/go-customerio v2.0.0+incompatible/go.mod h1:TydbjoBN6jLzaYPplKhq/BU+mMdzyboIrFLYlkC9RVY= github.com/daaku/go.zipexe v1.0.0 h1:VSOgZtH418pH9L16hC/JrgSNJbbAL26pj7lmD1+CGdY= github.com/daaku/go.zipexe v1.0.0/go.mod h1:z8IiR6TsVLEYKwXAoE/I+8ys/sDkgTzSL0CLnGVd57E= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davidlazar/go-crypto v0.0.0-20170701192655-dcfb0a7ac018/go.mod h1:rQYf4tfk5sSwFsnDg3qYaBxSjsD9S8+59vW0dKUgme4= github.com/davidlazar/go-crypto v0.0.0-20190912175916-7055855a373f/go.mod h1:rQYf4tfk5sSwFsnDg3qYaBxSjsD9S8+59vW0dKUgme4= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= github.com/detailyang/go-fallocate v0.0.0-20180908115635-432fa640bd2e/go.mod h1:3ZQK6DMPSz/QZ73jlWxBtUhNA8xZx7LzUFSq/OfP8vk= github.com/dgraph-io/badger v1.5.5-0.20190226225317-8115aed38f8f/go.mod h1:VZxzAIRPHRVNRKRo6AXrX9BJegn6il06VMTZVJYCIjQ= github.com/dgraph-io/badger v1.6.0-rc1/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= github.com/dgraph-io/badger v1.6.1/go.mod h1:FRmFw3uxvcpa8zG3Rxs0th+hCLIuaQg8HlNV5bjgnuU= github.com/dgraph-io/badger v1.6.2 h1:mNw0qs90GVgGGWylh0umH5iag1j6n/PeJtNvL6KY/x8= github.com/dgraph-io/badger v1.6.2/go.mod h1:JW2yswe3V058sS0kZ2h/AXeDSqFjxnZcRrVH//y2UQE= github.com/dgraph-io/badger/v2 v2.0.3/go.mod h1:3KY8+bsP8wI0OEnQJAKpd4wIJW/Mm32yw2j/9FUVnIM= github.com/dgraph-io/badger/v2 v2.2007.2 h1:EjjK0KqwaFMlPin1ajhP943VPENHJdEz1KLIegjaI3k= github.com/dgraph-io/badger/v2 v2.2007.2/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= github.com/dgraph-io/badger/v3 v3.2011.1 h1:Hmyof0WMEF/QtutX5SQHzIMnJQxb/IrSzhjckV2SD6g= github.com/dgraph-io/badger/v3 v3.2011.1/go.mod h1:0rLLrQpKVQAL0or/lBLMQznhr6dWWX7h5AKnmnqx268= github.com/dgraph-io/ristretto v0.0.2-0.20200115201040-8f368f2f2ab3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.0.4-0.20210122082011-bb5d392ed82d h1:eQYOG6A4td1tht0NdJB9Ls6DsXRGb2Ft6X9REU/MbbE= github.com/dgraph-io/ristretto v0.0.4-0.20210122082011-bb5d392ed82d/go.mod h1:tv2ec8nA7vRpSYX7/MbP52ihrUMXIHit54CQMq8npXQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-farm v0.0.0-20190104051053-3adb47b1fb0f/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dgtony/collections v0.1.6 h1:Qv4xLe4nXJgIeeExex6e7mDyP57tzZN3MYaGfN8uECc= github.com/dgtony/collections v0.1.6/go.mod h1:olD2FRoNisWmjMhK6LDRKv+lMnDoryOZIT+owtd/o6U= github.com/dlclark/regexp2 v1.2.0 h1:8sAhBGEM0dRWogWqWyQeIJnxjWO6oIjl8FKqREDsGfk= github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dop251/goja v0.0.0-20200721192441-a695b0cdd498 h1:Y9vTBSsV4hSwPSj4bacAU/eSnV3dAxVpepaghAdhGoQ= github.com/dop251/goja v0.0.0-20200721192441-a695b0cdd498/go.mod h1:Mw6PkjjMXWbTj+nnj4s3QPXq1jaT0s5pC0iFD4+BOAA= github.com/drand/bls12-381 v0.3.2/go.mod h1:dtcLgPtYT38L3NO6mPDYH0nbpc5tjPassDqiniuAt4Y= github.com/drand/drand v1.2.1/go.mod h1:j0P7RGmVaY7E/OuO2yQOcQj7OgeZCuhgu2gdv0JAm+g= github.com/drand/kyber v1.0.1-0.20200110225416-8de27ed8c0e2/go.mod h1:UpXoA0Upd1N9l4TvRPHr1qAUBBERj6JQ/mnKI3BPEmw= github.com/drand/kyber v1.0.2/go.mod h1:x6KOpK7avKj0GJ4emhXFP5n7M7W7ChAPmnQh/OL6vRw= github.com/drand/kyber v1.1.4/go.mod h1:9+IgTq7kadePhZg7eRwSD7+bA+bmvqRK+8DtmoV5a3U= github.com/drand/kyber-bls12381 v0.2.0/go.mod h1:zQip/bHdeEB6HFZSU3v+d3cQE0GaBVQw9aR2E7AdoeI= github.com/drand/kyber-bls12381 v0.2.1/go.mod h1:JwWn4nHO9Mp4F5qCie5sVIPQZ0X6cw8XAeMRvc/GXBE= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/elastic/go-sysinfo v1.3.0/go.mod h1:i1ZYdU10oLNfRzq4vq62BEwD2fH8KaWh6eh0ikPT9F0= github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6CcloAxnPgU= github.com/elastic/gosigar v0.12.0/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= github.com/ema/qdisc v0.0.0-20190904071900-b82c76788043/go.mod h1:ix4kG2zvdUd8kEKSW0ZTr1XLks0epFpI4j745DXxlNE= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v4.5.0+incompatible h1:ouOWdg56aJriqS0huScTkVXPC5IcNrDCXZ6OoTAWu7M= github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/facebookgo/atomicfile v0.0.0-20151019160806-2de1f203e7d5 h1:BBso6MBKW8ncyZLv37o+KNyy0HrrHgfnOaGQC2qvN+A= github.com/facebookgo/atomicfile v0.0.0-20151019160806-2de1f203e7d5/go.mod h1:JpoxHjuQauoxiFMl1ie8Xc/7TfLuMZ5eOCONd1sUBHg= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.8.0/go.mod h1:3l45GVGkyrnYNl9HoIjnp2NnNWvh6hLAqD8yTfGjnw8= github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fd/go-nat v1.0.0/go.mod h1:BTBu/CKvMmOMUPkKVef1pngt2WFH/lg7E6yQnulfp6E= github.com/filecoin-project/filecoin-ffi v0.30.4-0.20200716204036-cddc56607e1d/go.mod h1:XE4rWG1P7zWPaC11Pkn1CVR20stqN52MnMkIrF4q6ZU= github.com/filecoin-project/filecoin-ffi v0.30.4-0.20200910194244-f640612a1a1f h1:vg/6KEAOBjICMaWj+xofJCp09HYRfpO3ZbJsnJo22pA= github.com/filecoin-project/filecoin-ffi v0.30.4-0.20200910194244-f640612a1a1f/go.mod h1:+If3s2VxyjZn+KGGZIoRXBDSFQ9xL404JBJGf4WhEj0= github.com/filecoin-project/go-address v0.0.2-0.20200218010043-eb9bb40ed5be/go.mod h1:SAOwJoakQ8EPjwNIsiakIQKsoKdkcbx8U3IapgCg9R0= github.com/filecoin-project/go-address v0.0.3/go.mod h1:jr8JxKsYx+lQlQZmF5i2U0Z+cGQ59wMIps/8YW/lDj8= github.com/filecoin-project/go-address v0.0.5 h1:SSaFT/5aLfPXycUlFyemoHYhRgdyXClXCyDdNJKPlDM= github.com/filecoin-project/go-address v0.0.5/go.mod h1:jr8JxKsYx+lQlQZmF5i2U0Z+cGQ59wMIps/8YW/lDj8= github.com/filecoin-project/go-amt-ipld/v2 v2.0.1-0.20200424220931-6263827e49f2/go.mod h1:boRtQhzmxNocrMxOXo1NYn4oUc1NGvR8tEa79wApNXg= github.com/filecoin-project/go-amt-ipld/v2 v2.1.0/go.mod h1:nfFPoGyX0CU9SkXX8EoCcSuHN1XcbN0c6KBh7yvP5fs= github.com/filecoin-project/go-amt-ipld/v2 v2.1.1-0.20201006184820-924ee87a1349 h1:pIuR0dnMD0i+as8wNnjjHyQrnhP5O5bmba/lmgQeRgU= github.com/filecoin-project/go-amt-ipld/v2 v2.1.1-0.20201006184820-924ee87a1349/go.mod h1:vgmwKBkx+ca5OIeEvstiQgzAZnb7R6QaqE1oEDSqa6g= github.com/filecoin-project/go-amt-ipld/v3 v3.0.0 h1:Ou/q82QeHGOhpkedvaxxzpBYuqTxLCcj5OChkDNx4qc= github.com/filecoin-project/go-amt-ipld/v3 v3.0.0/go.mod h1:Qa95YNAbtoVCTSVtX38aAC1ptBnJfPma1R/zZsKmx4o= github.com/filecoin-project/go-bitfield v0.0.1/go.mod h1:Ry9/iUlWSyjPUzlAvdnfy4Gtvrq4kWmWDztCU1yEgJY= github.com/filecoin-project/go-bitfield v0.2.0/go.mod h1:CNl9WG8hgR5mttCnUErjcQjGvuiZjRqK9rHVBsQF4oM= github.com/filecoin-project/go-bitfield v0.2.3/go.mod h1:CNl9WG8hgR5mttCnUErjcQjGvuiZjRqK9rHVBsQF4oM= github.com/filecoin-project/go-bitfield v0.2.4 h1:uZ7MeE+XfM5lqrHJZ93OnhQKc/rveW8p9au0C68JPgk= github.com/filecoin-project/go-bitfield v0.2.4/go.mod h1:CNl9WG8hgR5mttCnUErjcQjGvuiZjRqK9rHVBsQF4oM= github.com/filecoin-project/go-cbor-util v0.0.0-20191219014500-08c40a1e63a2 h1:av5fw6wmm58FYMgJeoB/lK9XXrgdugYiTqkdxjTy9k8= github.com/filecoin-project/go-cbor-util v0.0.0-20191219014500-08c40a1e63a2/go.mod h1:pqTiPHobNkOVM5thSRsHYjyQfq7O5QSCMhvuu9JoDlg= github.com/filecoin-project/go-commp-utils v0.0.0-20201119054358-b88f7a96a434 h1:0kHszkYP3hgApcjl5x4rpwONhN9+j7XDobf6at5XfHs= github.com/filecoin-project/go-commp-utils v0.0.0-20201119054358-b88f7a96a434/go.mod h1:6s95K91mCyHY51RPWECZieD3SGWTqIFLf1mPOes9l5U= github.com/filecoin-project/go-crypto v0.0.0-20191218222705-effae4ea9f03 h1:2pMXdBnCiXjfCYx/hLqFxccPoqsSveQFxVLvNxy9bus= github.com/filecoin-project/go-crypto v0.0.0-20191218222705-effae4ea9f03/go.mod h1:+viYnvGtUTgJRdy6oaeF4MTFKAfatX071MPDPBL11EQ= github.com/filecoin-project/go-data-transfer v1.0.1/go.mod h1:UxvfUAY9v3ub0a21BSK9u3pB2aq30Y0KMsG+w9/ysyo= github.com/filecoin-project/go-data-transfer v1.2.7 h1:WE5Cpp9eMt5BDoWOVR64QegSn6bwHQaDzyyjVU377Y0= github.com/filecoin-project/go-data-transfer v1.2.7/go.mod h1:mvjZ+C3NkBX10JP4JMu27DCjUouHFjHwUGh+Xc4yvDA= github.com/filecoin-project/go-ds-versioning v0.1.0 h1:y/X6UksYTsK8TLCI7rttCKEvl8btmWxyFMEeeWGUxIQ= github.com/filecoin-project/go-ds-versioning v0.1.0/go.mod h1:mp16rb4i2QPmxBnmanUx8i/XANp+PFCCJWiAb+VW4/s= github.com/filecoin-project/go-fil-commcid v0.0.0-20200716160307-8f644712406f/go.mod h1:Eaox7Hvus1JgPrL5+M3+h7aSPHc0cVqpSxA+TxIEpZQ= github.com/filecoin-project/go-fil-commcid v0.0.0-20201016201715-d41df56b4f6a h1:hyJ+pUm/4U4RdEZBlg6k8Ma4rDiuvqyGpoICXAxwsTg= github.com/filecoin-project/go-fil-commcid v0.0.0-20201016201715-d41df56b4f6a/go.mod h1:Eaox7Hvus1JgPrL5+M3+h7aSPHc0cVqpSxA+TxIEpZQ= github.com/filecoin-project/go-fil-markets v1.0.5-0.20201113164554-c5eba40d5335/go.mod h1:AJySOJC00JRWEZzRG2KsfUnqEf5ITXxeX09BE9N4f9c= github.com/filecoin-project/go-fil-markets v1.1.9 h1:sA0NIEOpy7brZaeXeNgdXg5pvHaBtD5OTRlraOUbI0w= github.com/filecoin-project/go-fil-markets v1.1.9/go.mod h1:0yQu5gvrjFoAIyzPSSJ+xUdCG83vjInAFbTswIB5/hk= github.com/filecoin-project/go-hamt-ipld v0.1.5 h1:uoXrKbCQZ49OHpsTCkrThPNelC4W3LPEk0OrS/ytIBM= github.com/filecoin-project/go-hamt-ipld v0.1.5/go.mod h1:6Is+ONR5Cd5R6XZoCse1CWaXZc0Hdb/JeX+EQCQzX24= github.com/filecoin-project/go-hamt-ipld/v2 v2.0.0 h1:b3UDemBYN2HNfk3KOXNuxgTTxlWi3xVvbQP0IT38fvM= github.com/filecoin-project/go-hamt-ipld/v2 v2.0.0/go.mod h1:7aWZdaQ1b16BVoQUYR+eEvrDCGJoPLxFpDynFjYfBjI= github.com/filecoin-project/go-hamt-ipld/v3 v3.0.1 h1:zbzs46G7bOctkZ+JUX3xirrj0RaEsi+27dtlsgrTNBg= github.com/filecoin-project/go-hamt-ipld/v3 v3.0.1/go.mod h1:gXpNmr3oQx8l3o7qkGyDjJjYSRX7hp/FGOStdqrWyDI= github.com/filecoin-project/go-jsonrpc v0.1.4-0.20210217175800-45ea43ac2bec h1:rGI5I7fdU4viManxmDdbk5deZO7afe6L1Wc04dAmlOM= github.com/filecoin-project/go-jsonrpc v0.1.4-0.20210217175800-45ea43ac2bec/go.mod h1:XBBpuKIMaXIIzeqzO1iucq4GvbF8CxmXRFoezRh+Cx4= github.com/filecoin-project/go-multistore v0.0.3 h1:vaRBY4YiA2UZFPK57RNuewypB8u0DzzQwqsL0XarpnI= github.com/filecoin-project/go-multistore v0.0.3/go.mod h1:kaNqCC4IhU4B1uyr7YWFHd23TL4KM32aChS0jNkyUvQ= github.com/filecoin-project/go-padreader v0.0.0-20200903213702-ed5fae088b20 h1:+/4aUeUoKr6AKfPE3mBhXA5spIV6UcKdTYDPNU2Tdmg= github.com/filecoin-project/go-padreader v0.0.0-20200903213702-ed5fae088b20/go.mod h1:mPn+LRRd5gEKNAtc+r3ScpW2JRU/pj4NBKdADYWHiak= github.com/filecoin-project/go-paramfetch v0.0.2-0.20200701152213-3e0f0afdc261/go.mod h1:fZzmf4tftbwf9S37XRifoJlz7nCjRdIrMGLR07dKLCc= github.com/filecoin-project/go-state-types v0.0.0-20200903145444-247639ffa6ad/go.mod h1:IQ0MBPnonv35CJHtWSN3YY1Hz2gkPru1Q9qoaYLxx9I= github.com/filecoin-project/go-state-types v0.0.0-20200904021452-1883f36ca2f4/go.mod h1:IQ0MBPnonv35CJHtWSN3YY1Hz2gkPru1Q9qoaYLxx9I= github.com/filecoin-project/go-state-types v0.0.0-20200928172055-2df22083d8ab/go.mod h1:ezYnPf0bNkTsDibL/psSz5dy4B5awOJ/E7P2Saeep8g= github.com/filecoin-project/go-state-types v0.0.0-20201102161440-c8033295a1fc/go.mod h1:ezYnPf0bNkTsDibL/psSz5dy4B5awOJ/E7P2Saeep8g= github.com/filecoin-project/go-state-types v0.1.0 h1:9r2HCSMMCmyMfGyMKxQtv0GKp6VT/m5GgVk8EhYbLJU= github.com/filecoin-project/go-state-types v0.1.0/go.mod h1:ezYnPf0bNkTsDibL/psSz5dy4B5awOJ/E7P2Saeep8g= github.com/filecoin-project/go-statemachine v0.0.0-20200925024713-05bd7c71fbfe h1:dF8u+LEWeIcTcfUcCf3WFVlc81Fr2JKg8zPzIbBDKDw= github.com/filecoin-project/go-statemachine v0.0.0-20200925024713-05bd7c71fbfe/go.mod h1:FGwQgZAt2Gh5mjlwJUlVB62JeYdo+if0xWxSEfBD9ig= github.com/filecoin-project/go-statestore v0.1.0 h1:t56reH59843TwXHkMcwyuayStBIiWBRilQjQ+5IiwdQ= github.com/filecoin-project/go-statestore v0.1.0/go.mod h1:LFc9hD+fRxPqiHiaqUEZOinUJB4WARkRfNl10O7kTnI= github.com/filecoin-project/go-storedcounter v0.0.0-20200421200003-1c99c62e8a5b h1:fkRZSPrYpk42PV3/lIXiL0LHetxde7vyYYvSsttQtfg= github.com/filecoin-project/go-storedcounter v0.0.0-20200421200003-1c99c62e8a5b/go.mod h1:Q0GQOBtKf1oE10eSXSlhN45kDBdGvEcVOqMiffqX+N8= github.com/filecoin-project/lotus v1.5.0 h1:LE6lALwXyvzNpo1rDXxxfy2NPNT7K54stwg1/kA2yXg= github.com/filecoin-project/lotus v1.5.0/go.mod h1:Xi7fm05RL76CBYgyXnmWXULPvoGLya9gvM4sUYgIY1o= github.com/filecoin-project/specs-actors v0.6.1/go.mod h1:dRdy3cURykh2R8O/DKqy8olScl70rmIS7GrB4hB1IDY= github.com/filecoin-project/specs-actors v0.9.4/go.mod h1:BStZQzx5x7TmCkLv0Bpa07U6cPKol6fd3w9KjMPZ6Z4= github.com/filecoin-project/specs-actors v0.9.12/go.mod h1:TS1AW/7LbG+615j4NsjMK1qlpAwaFsG9w0V2tg2gSao= github.com/filecoin-project/specs-actors v0.9.13 h1:rUEOQouefi9fuVY/2HOroROJlZbOzWYXXeIh41KF2M4= github.com/filecoin-project/specs-actors v0.9.13/go.mod h1:TS1AW/7LbG+615j4NsjMK1qlpAwaFsG9w0V2tg2gSao= github.com/filecoin-project/specs-actors/v2 v2.0.1/go.mod h1:v2NZVYinNIKA9acEMBm5wWXxqv5+frFEbekBFemYghY= github.com/filecoin-project/specs-actors/v2 v2.3.2/go.mod h1:UuJQLoTx/HPvvWeqlIFmC/ywlOLHNe8SNQ3OunFbu2Y= github.com/filecoin-project/specs-actors/v2 v2.3.4 h1:NZK2oMCcA71wNsUzDBmLQyRMzcCnX9tDGvwZ53G67j8= github.com/filecoin-project/specs-actors/v2 v2.3.4/go.mod h1:UuJQLoTx/HPvvWeqlIFmC/ywlOLHNe8SNQ3OunFbu2Y= github.com/filecoin-project/specs-actors/v3 v3.0.3 h1:bq9B1Jnq+Z0A+Yj3KnYhN3kcTpUyP6Umo3MZgai0BRE= github.com/filecoin-project/specs-actors/v3 v3.0.3/go.mod h1:oMcmEed6B7H/wHabM3RQphTIhq0ibAKsbpYs+bQ/uxQ= github.com/filecoin-project/specs-storage v0.1.1-0.20201105051918-5188d9774506 h1:Ur/l2+6qN+lQiqjozWWc5p9UDaAMDZKTlDS98oRnlIw= github.com/filecoin-project/specs-storage v0.1.1-0.20201105051918-5188d9774506/go.mod h1:nJRRM7Aa9XVvygr3W9k6xGF46RWzr2zxF/iGoAIfA/g= github.com/filecoin-project/test-vectors/schema v0.0.5/go.mod h1:iQ9QXLpYWL3m7warwvK1JC/pTri8mnfEmKygNDqqY6E= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/flynn/noise v0.0.0-20180327030543-2492fe189ae6/go.mod h1:1i71OnUq3iUe1ma7Lr6yG6/rjvM3emb6yoL7xLFzcVQ= github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= github.com/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJnXKk= github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/gbrlsnchs/jwt/v3 v3.0.0-beta.1 h1:EzDjxMg43q1tA2c0MV3tNbaontnHLplHyFF6M5KiVP0= github.com/gbrlsnchs/jwt/v3 v3.0.0-beta.1/go.mod h1:0eHX/BVySxPc6SE2mZRoppGq7qcEagxdmQnA3dzork8= github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/ghemawat/stream v0.0.0-20171120220530-696b145b53b9/go.mod h1:106OIgooyS7OzLDOpUGgm9fA3bQENb/cFSyyBmMoJDs= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/location v0.0.2 h1:QZKh1+K/LLR4KG/61eIO3b7MLuKi8tytQhV6texLgP4= github.com/gin-contrib/location v0.0.2/go.mod h1:NGoidiRlf0BlA/VKSVp+g3cuSMeTmip/63PhEjRhUAc= github.com/gin-contrib/pprof v1.3.0 h1:G9eK6HnbkSqDZBYbzG4wrjCsA4e+cvYAHUZw6W+W9K0= github.com/gin-contrib/pprof v1.3.0/go.mod h1:waMjT1H9b179t3CxuG1cV3DHpga6ybizwfBaM5OXaB0= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-contrib/static v0.0.0-20191128031702-f81c604d8ac2/go.mod h1:VhW/Ch/3FhimwZb8Oj+qJmdMmoB8r7lmJ5auRjm50oQ= github.com/gin-contrib/static v0.0.1 h1:JVxuvHPuUfkoul12N7dtQw7KRn/pSMq7Ue1Va9Swm1U= github.com/gin-contrib/static v0.0.1/go.mod h1:CSxeF+wep05e0kCOsqWdAWbSszmc31zTIbD8TvWl7Hs= github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= github.com/gin-gonic/gin v1.6.2/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gin-gonic/gin v1.7.4 h1:QmUZXrvJ9qZ3GfWvQ+2wnW/1ePrTEJqPKMYEU3lD/DM= github.com/gin-gonic/gin v1.7.4/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= github.com/go-delve/delve v1.5.0/go.mod h1:c6b3a1Gry6x8a4LGCe/CWzrocrfaHvkUxCj3k4bvSUQ= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= 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-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-mixins/swagger-ui v0.3.28/go.mod h1:6fi8WWHDpFAnKS+JUijWsG1lSCViN1M+cwemUvRbWwE= github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI= github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE= github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU= github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-sql-driver/mysql v1.4.0/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 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo= github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk= github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw= github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360= github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg= github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE= github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8= github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/godbus/dbus v0.0.0-20190402143921-271e53dc4968/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/googleapis v1.3.1/go.mod h1:d+q1s/xVJxZGKWwC/6UfPIF33J+G1Tq4GYv9Y+Tg/EU= github.com/gogo/googleapis v1.4.0 h1:zgVt4UpGxcqVOw97aRGxT4svlcmdK35fynLNctY32zI= github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/gogo/status v1.0.3/go.mod h1:SavQ51ycCLnc7dGyJxp8YAmudx8xqiVrRf+6IXRsugc= github.com/gogo/status v1.1.0 h1:+eIkrewn5q6b30y+g/BJINVVdi2xH7je5MPJ3ZPK3JA= github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.2-0.20190904063534-ff6b7dc882cf h1:gFVkHXmVAhEbxZVDln5V9GKrLaluNoFHDbrZwAWZgws= github.com/golang/snappy v0.0.2-0.20190904063534-ff6b7dc882cf/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/flatbuffers v1.12.0 h1:/PtAHvnBY4Kqnx/xCQ3OIV9uYcSFGScBsWI3Oogeh6w= github.com/google/flatbuffers v1.12.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-dap v0.2.0/go.mod h1:5q8aYQFnHOAZEMP+6vmq25HKYAEwE+LF5yh7JKrrhSQ= github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-github/v30 v30.1.0 h1:VLDx+UolQICEOKu2m4uAoMti1SxuEBAl7RSEG16L+Oo= github.com/google/go-github/v30 v30.1.0/go.mod h1:n8jBpHl45a/rlBUtRJMOG4GhNADUQFEufcolZ95JfU8= github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gopacket v1.1.17/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM= github.com/google/gopacket v1.1.18/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM= github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= github.com/google/goterm v0.0.0-20190703233501-fc88cf888a3f/go.mod h1:nOFQdrUlIlx6M6ODdSpBj1NVA+VgLC6kmw60mkw34H4= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20190812055157-5d271430af9f h1:KMlcu9X58lhTA/KrfX8Bi1LQSO4pzoVjTiL3h4Jk+Zk= github.com/gopherjs/gopherjs v0.0.0-20190812055157-5d271430af9f/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= 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/gosimple/slug v1.9.0 h1:r5vDcYrFz9BmfIAMC829un9hq7hKM4cHUrsv36LbEqs= github.com/gosimple/slug v1.9.0/go.mod h1:AMZ+sOVe65uByN3kgEyf9WEBKBCSS+dJjMX9x4vDJbg= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= 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/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE= github.com/grpc-ecosystem/go-grpc-middleware v1.2.0/go.mod h1:mJzapYve32yjrKlk9GbyCZHuPgZsrbyIbyKhSzOpg6s= github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.14.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4GkDEdKCRJduHpTxT3/jcw= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.2.0 h1:HlJcTiqGHvaWDG7/s85d68Kw7G7FqMz+9LlcyVauOAw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.2.0/go.mod h1:gRq9gZWcIFvz68EgWqy2qQpRbmtn5j2qLZ4zHjqiLpg= github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= github.com/gxed/go-shellwords v1.0.3/go.mod h1:N7paucT91ByIjmVJHhvoarjoQnmsi3Jd3vH7VqgtMxQ= github.com/gxed/hashland/keccakpg v0.0.1/go.mod h1:kRzw3HkwxFU1mpmPP8v1WyQzwdGfmKFJ6tItnhQ67kU= github.com/gxed/hashland/murmur3 v0.0.1/go.mod h1:KjXop02n4/ckmZSnY2+HKcLud/tcmvhST0bie/0lS48= github.com/gxed/pubsub v0.0.0-20180201040156-26ebdf44f824/go.mod h1:OiEWyHgK+CWrmOlVquHaIK1vhpUJydC9m0Je6mhaiNE= github.com/hako/durafmt v0.0.0-20200710122514-c0fb7b4da026/go.mod h1:5Scbynm8dF1XAPwIwkGPqzkM/shndPm79Jd1003hTjE= github.com/hannahhoward/cbor-gen-for v0.0.0-20200817222906-ea96cece81f1 h1:F9k+7wv5OIk1zcq23QpdiL0hfDuXPjuOmMNaC6fgQ0Q= github.com/hannahhoward/cbor-gen-for v0.0.0-20200817222906-ea96cece81f1/go.mod h1:jvfsLIxk0fY/2BKSQ1xf2406AKA5dwMmKKv0ADcOfN8= github.com/hannahhoward/go-pubsub v0.0.0-20200423002714-8d62886cc36e h1:3YKHER4nmd7b5qy5t0GWDTwSn4OyRgfAXSmo6VnryBY= github.com/hannahhoward/go-pubsub v0.0.0-20200423002714-8d62886cc36e/go.mod h1:I8h3MITA53gN9OnWGCgaMa0JWVRdXthWw4M3CPM54OY= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hodgesds/perf-utils v0.0.8/go.mod h1:F6TfvsbtrF88i++hou29dTXlI2sfsJv+gRZDtmTJkAs= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hsanjuan/ipfs-lite v1.1.21 h1:fSvy4pQM5aqvEZCHJzhTb1dSqgPkDzawn3KllRL9Njg= github.com/hsanjuan/ipfs-lite v1.1.21/go.mod h1:yQu8u9/p2dkXGlmuEpgK0q54jz+g6tLyrbv2cHIKxZM= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/huin/goupnp v0.0.0-20180415215157-1395d1447324/go.mod h1:MZ2ZmwcBpvOoJ22IJsc7va19ZwoheaBk43rKg12SKag= github.com/huin/goupnp v1.0.0 h1:wg75sLpL6DZqwHQN6E1Cfk6mtfzS45z8OV+ic+DtHRo= github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/improbable-eng/grpc-web v0.13.0/go.mod h1:6hRR09jOEG81ADP5wCQju1z71g6OL4eEvELdran/3cs= github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf h1:WfD7VjIE6z8dIvMsI4/s+1qr5EL+zoIGev1BQj1eoJ8= github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf/go.mod h1:hyb9oH7vZsitZCiBt0ZvifOrB+qc8PS5IiilCIb87rg= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/ipfs/bbloom v0.0.1/go.mod h1:oqo8CVWsJFMOZqTglBG4wydCE4IQA/G2/SEofB0rjUI= github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs= github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0= github.com/ipfs/go-bitswap v0.0.3/go.mod h1:jadAZYsP/tcRMl47ZhFxhaNuDQoXawT8iHMg+iFoQbg= github.com/ipfs/go-bitswap v0.0.9/go.mod h1:kAPf5qgn2W2DrgAcscZ3HrM9qh4pH+X8Fkk3UPrwvis= github.com/ipfs/go-bitswap v0.1.0/go.mod h1:FFJEf18E9izuCqUtHxbWEvq+reg7o4CW5wSAE1wsxj0= github.com/ipfs/go-bitswap v0.1.2/go.mod h1:qxSWS4NXGs7jQ6zQvoPY3+NmOfHHG47mhkiLzBpJQIs= github.com/ipfs/go-bitswap v0.1.3/go.mod h1:YEQlFy0kkxops5Vy+OxWdRSEZIoS7I7KDIwoa5Chkps= github.com/ipfs/go-bitswap v0.1.8/go.mod h1:TOWoxllhccevbWFUR2N7B1MTSVVge1s6XSMiCSA4MzM= github.com/ipfs/go-bitswap v0.3.2/go.mod h1:AyWWfN3moBzQX0banEtfKOfbXb3ZeoOeXnZGNPV9S6w= github.com/ipfs/go-bitswap v0.3.4 h1:AhJhRrG8xkxh6x87b4wWs+4U4y3DVB3doI8yFNqgQME= github.com/ipfs/go-bitswap v0.3.4/go.mod h1:4T7fvNv/LmOys+21tnLzGKncMeeXUYUd1nUiJ2teMvI= github.com/ipfs/go-block-format v0.0.1/go.mod h1:DK/YYcsSUIVAFNwo/KZCdIIbpN0ROH/baNLgayt4pFc= github.com/ipfs/go-block-format v0.0.2/go.mod h1:AWR46JfpcObNfg3ok2JHDUfdiHRgWhJgCQF+KIgOPJY= github.com/ipfs/go-block-format v0.0.3 h1:r8t66QstRp/pd/or4dpnbVfXT5Gt7lOqRvC+/dDTpMc= github.com/ipfs/go-block-format v0.0.3/go.mod h1:4LmD4ZUw0mhO+JSKdpWwrzATiEfM7WWgQ8H5l6P8MVk= github.com/ipfs/go-blockservice v0.0.3/go.mod h1:/NNihwTi6V2Yr6g8wBI+BSwPuURpBRMtYNGrlxZ8KuI= github.com/ipfs/go-blockservice v0.0.7/go.mod h1:EOfb9k/Y878ZTRY/CH0x5+ATtaipfbRhbvNSdgc/7So= github.com/ipfs/go-blockservice v0.1.0/go.mod h1:hzmMScl1kXHg3M2BjTymbVPjv627N7sYcvYaKbop39M= github.com/ipfs/go-blockservice v0.1.2/go.mod h1:t+411r7psEUhLueM8C7aPA7cxCclv4O3VsUVxt9kz2I= github.com/ipfs/go-blockservice v0.1.3/go.mod h1:OTZhFpkgY48kNzbgyvcexW9cHrpjBYIjSR0KoDOFOLU= github.com/ipfs/go-blockservice v0.1.4-0.20200624145336-a978cec6e834/go.mod h1:OTZhFpkgY48kNzbgyvcexW9cHrpjBYIjSR0KoDOFOLU= github.com/ipfs/go-blockservice v0.1.4 h1:Vq+MlsH8000KbbUciRyYMEw/NNP8UAGmcqKi4uWmFGA= github.com/ipfs/go-blockservice v0.1.4/go.mod h1:OTZhFpkgY48kNzbgyvcexW9cHrpjBYIjSR0KoDOFOLU= github.com/ipfs/go-cid v0.0.1/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= github.com/ipfs/go-cid v0.0.2/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= github.com/ipfs/go-cid v0.0.3/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= github.com/ipfs/go-cid v0.0.4-0.20191112011718-79e75dffeb10/go.mod h1:/BYOuUoxkE+0f6tGzlzMvycuN+5l35VOR4Bpg2sCmds= github.com/ipfs/go-cid v0.0.4/go.mod h1:4LLaPOQwmk5z9LBgQnpkivrx8BJjUyGwTXCd5Xfj6+M= github.com/ipfs/go-cid v0.0.5/go.mod h1:plgt+Y5MnOey4vO4UlUazGqdbEXuFYitED67FexhXog= github.com/ipfs/go-cid v0.0.6-0.20200501230655-7c82f3b81c00/go.mod h1:plgt+Y5MnOey4vO4UlUazGqdbEXuFYitED67FexhXog= github.com/ipfs/go-cid v0.0.6/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= github.com/ipfs/go-cid v0.0.7 h1:ysQJVJA3fNDF1qigJbsSQOdjhVLsOEoPdh0+R97k3jY= github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= github.com/ipfs/go-cidutil v0.0.2 h1:CNOboQf1t7Qp0nuNh8QMmhJs0+Q//bRL1axtCnIB1Yo= github.com/ipfs/go-cidutil v0.0.2/go.mod h1:ewllrvrxG6AMYStla3GD7Cqn+XYSLqjK0vc+086tB6s= github.com/ipfs/go-datastore v0.0.1/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= github.com/ipfs/go-datastore v0.0.5/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= github.com/ipfs/go-datastore v0.1.0/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= github.com/ipfs/go-datastore v0.1.1/go.mod h1:w38XXW9kVFNp57Zj5knbKWM2T+KOZCGDRVNdgPHtbHw= github.com/ipfs/go-datastore v0.3.0/go.mod h1:w38XXW9kVFNp57Zj5knbKWM2T+KOZCGDRVNdgPHtbHw= github.com/ipfs/go-datastore v0.3.1/go.mod h1:w38XXW9kVFNp57Zj5knbKWM2T+KOZCGDRVNdgPHtbHw= github.com/ipfs/go-datastore v0.4.0/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= github.com/ipfs/go-datastore v0.4.1/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= github.com/ipfs/go-datastore v0.4.2/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= github.com/ipfs/go-datastore v0.4.4/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= github.com/ipfs/go-datastore v0.4.5 h1:cwOUcGMLdLPWgu3SlrCckCMznaGADbPqE0r8h768/Dg= github.com/ipfs/go-datastore v0.4.5/go.mod h1:eXTcaaiN6uOlVCLS9GjJUJtlvJfM3xk23w3fyfrmmJs= github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk= github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= github.com/ipfs/go-ds-badger v0.0.2/go.mod h1:Y3QpeSFWQf6MopLTiZD+VT6IC1yZqaGmjvRcKeSGij8= github.com/ipfs/go-ds-badger v0.0.5/go.mod h1:g5AuuCGmr7efyzQhLL8MzwqcauPojGPUaHzfGTzuE3s= github.com/ipfs/go-ds-badger v0.0.7/go.mod h1:qt0/fWzZDoPW6jpQeqUjR5kBfhDNB65jd9YlmAvpQBk= github.com/ipfs/go-ds-badger v0.2.1/go.mod h1:Tx7l3aTph3FMFrRS838dcSJh+jjA7cX9DrGVwx/NOwE= github.com/ipfs/go-ds-badger v0.2.3/go.mod h1:pEYw0rgg3FIrywKKnL+Snr+w/LjJZVMTBRn4FS6UHUk= github.com/ipfs/go-ds-badger v0.2.7 h1:ju5REfIm+v+wgVnQ19xGLYPHYHbYLR6qJfmMbCDSK1I= github.com/ipfs/go-ds-badger v0.2.7/go.mod h1:02rnztVKA4aZwDuaRPTf8mpqcKmXP7mLl6JPxd14JHA= github.com/ipfs/go-ds-badger2 v0.1.0/go.mod h1:pbR1p817OZbdId9EvLOhKBgUVTM3BMCSTan78lDDVaw= github.com/ipfs/go-ds-badger2 v0.1.1-0.20200708190120-187fc06f714e h1:Xi1nil8K2lBOorBS6Ys7+hmUCzH8fr3U9ipdL/IrcEI= github.com/ipfs/go-ds-badger2 v0.1.1-0.20200708190120-187fc06f714e/go.mod h1:lJnws7amT9Ehqzta0gwMrRsURU04caT0iRPr1W8AsOU= github.com/ipfs/go-ds-flatfs v0.4.4 h1:DmGZ4qOYQLNgu8Mltuz1DtUHpm+BjWMcVN3F3H3VJzQ= github.com/ipfs/go-ds-flatfs v0.4.4/go.mod h1:e4TesLyZoA8k1gV/yCuBTnt2PJtypn4XUlB5n8KQMZY= github.com/ipfs/go-ds-leveldb v0.0.1/go.mod h1:feO8V3kubwsEF22n0YRQCffeb79OOYIykR4L04tMOYc= github.com/ipfs/go-ds-leveldb v0.1.0/go.mod h1:hqAW8y4bwX5LWcCtku2rFNX3vjDZCy5LZCg+cSZvYb8= github.com/ipfs/go-ds-leveldb v0.4.1/go.mod h1:jpbku/YqBSsBc1qgME8BkWS4AxzF2cEu1Ii2r79Hh9s= github.com/ipfs/go-ds-leveldb v0.4.2 h1:QmQoAJ9WkPMUfBLnu1sBVy0xWWlJPg0m4kRAiJL9iaw= github.com/ipfs/go-ds-leveldb v0.4.2/go.mod h1:jpbku/YqBSsBc1qgME8BkWS4AxzF2cEu1Ii2r79Hh9s= github.com/ipfs/go-ds-measure v0.1.0/go.mod h1:1nDiFrhLlwArTME1Ees2XaBOl49OoCgd2A3f8EchMSY= github.com/ipfs/go-ds-pebble v0.0.2-0.20200921225637-ce220f8ac459/go.mod h1:oh4liWHulKcDKVhCska5NLelE3MatWl+1FwSz3tY91g= github.com/ipfs/go-filestore v1.0.0 h1:QR7ekKH+q2AGiWDc7W2Q0qHuYSRZGUJqUn0GsegEPb0= github.com/ipfs/go-filestore v1.0.0/go.mod h1:/XOCuNtIe2f1YPbiXdYvD0BKLA0JR1MgPiFOdcuu9SM= github.com/ipfs/go-fs-lock v0.0.6/go.mod h1:OTR+Rj9sHiRubJh3dRhD15Juhd/+w6VPOY28L7zESmM= github.com/ipfs/go-graphsync v0.1.0/go.mod h1:jMXfqIEDFukLPZHqDPp8tJMbHO9Rmeb9CEGevngQbmE= github.com/ipfs/go-graphsync v0.4.2/go.mod h1:/VmbZTUdUMTbNkgzAiCEucIIAU3BkLE2cZrDCVUhyi0= github.com/ipfs/go-graphsync v0.4.3/go.mod h1:mPOwDYv128gf8gxPFgXnz4fNrSYPsWyqisJ7ych+XDY= github.com/ipfs/go-graphsync v0.5.2 h1:USD+daaSC+7pLHCxROThSaF6SF7WYXF03sjrta0rCfA= github.com/ipfs/go-graphsync v0.5.2/go.mod h1:e2ZxnClqBBYAtd901g9vXMJzS47labjAtOzsWtOzKNk= github.com/ipfs/go-hamt-ipld v0.0.15-0.20200131012125-dd88a59d3f2e/go.mod h1:9aQJu/i/TaRDW6jqB5U217dLIDopn50wxLdHXM2CTfE= github.com/ipfs/go-hamt-ipld v0.1.1/go.mod h1:1EZCr2v0jlCnhpa+aZ0JZYp8Tt2w16+JJOAVz17YcDk= github.com/ipfs/go-ipfs-blockstore v0.0.1/go.mod h1:d3WClOmRQKFnJ0Jz/jj/zmksX0ma1gROTlovZKBmN08= github.com/ipfs/go-ipfs-blockstore v0.1.0/go.mod h1:5aD0AvHPi7mZc6Ci1WCAhiBQu2IsfTduLl+422H6Rqw= github.com/ipfs/go-ipfs-blockstore v0.1.4/go.mod h1:Jxm3XMVjh6R17WvxFEiyKBLUGr86HgIYJW/D/MwqeYQ= github.com/ipfs/go-ipfs-blockstore v1.0.0/go.mod h1:knLVdhVU9L7CC4T+T4nvGdeUIPAXlnd9zmXfp+9MIjU= github.com/ipfs/go-ipfs-blockstore v1.0.1/go.mod h1:MGNZlHNEnR4KGgPHM3/k8lBySIOK2Ve+0KjZubKlaOE= github.com/ipfs/go-ipfs-blockstore v1.0.3/go.mod h1:MGNZlHNEnR4KGgPHM3/k8lBySIOK2Ve+0KjZubKlaOE= github.com/ipfs/go-ipfs-blockstore v1.0.4 h1:DZdeya9Vu4ttvlGheQPGrj6kWehXnYZRFCp9EsZQ1hI= github.com/ipfs/go-ipfs-blockstore v1.0.4/go.mod h1:uL7/gTJ8QIZ3MtA3dWf+s1a0U3fJy2fcEZAsovpRp+w= github.com/ipfs/go-ipfs-blocksutil v0.0.1 h1:Eh/H4pc1hsvhzsQoMEP3Bke/aW5P5rVM1IWFJMcGIPQ= github.com/ipfs/go-ipfs-blocksutil v0.0.1/go.mod h1:Yq4M86uIOmxmGPUHv/uI7uKqZNtLb449gwKqXjIsnRk= github.com/ipfs/go-ipfs-chunker v0.0.1/go.mod h1:tWewYK0we3+rMbOh7pPFGDyypCtvGcBFymgY4rSDLAw= github.com/ipfs/go-ipfs-chunker v0.0.5 h1:ojCf7HV/m+uS2vhUGWcogIIxiO5ubl5O57Q7NapWLY8= github.com/ipfs/go-ipfs-chunker v0.0.5/go.mod h1:jhgdF8vxRHycr00k13FM8Y0E+6BoalYeobXmUyTreP8= github.com/ipfs/go-ipfs-cmds v0.1.0/go.mod h1:TiK4e7/V31tuEb8YWDF8lN3qrnDH+BS7ZqWIeYJlAs8= github.com/ipfs/go-ipfs-cmds v0.3.0 h1:mi9oYrSCox5aBhutqAYqw6/9crlyGbw4E/aJtwS4zI4= github.com/ipfs/go-ipfs-cmds v0.3.0/go.mod h1:ZgYiWVnCk43ChwoH8hAmI1IRbuVtq3GSTHwtRB/Kqhk= github.com/ipfs/go-ipfs-config v0.0.11/go.mod h1:wveA8UT5ywN26oKStByzmz1CO6cXwLKKM6Jn/Hfw08I= github.com/ipfs/go-ipfs-config v0.5.3/go.mod h1:nSLCFtlaL+2rbl3F+9D4gQZQbT1LjRKx7TJg/IHz6oM= github.com/ipfs/go-ipfs-config v0.14.0 h1:KijwGU788UycqPWv4GxzyfyN6EtfJjjDRzd/wSA86VU= github.com/ipfs/go-ipfs-config v0.14.0/go.mod h1:Ei/FLgHGTdPyqCPK0oPCwGTe8VSnsjJjx7HZqUb6Ry0= github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= github.com/ipfs/go-ipfs-delay v0.0.1 h1:r/UXYyRcddO6thwOnhiznIAiSvxMECGgtv35Xs1IeRQ= github.com/ipfs/go-ipfs-delay v0.0.1/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= github.com/ipfs/go-ipfs-ds-help v0.0.1/go.mod h1:gtP9xRaZXqIQRh1HRpp595KbBEdgqWFxefeVKOV8sxo= github.com/ipfs/go-ipfs-ds-help v0.1.1/go.mod h1:SbBafGJuGsPI/QL3j9Fc5YPLeAu+SzOkI0gFwAg+mOs= github.com/ipfs/go-ipfs-ds-help v1.0.0 h1:bEQ8hMGs80h0sR8O4tfDgV6B01aaF9qeTrujrTLYV3g= github.com/ipfs/go-ipfs-ds-help v1.0.0/go.mod h1:ujAbkeIgkKAWtxxNkoZHWLCyk5JpPoKnGyCcsoF6ueE= github.com/ipfs/go-ipfs-exchange-interface v0.0.1 h1:LJXIo9W7CAmugqI+uofioIpRb6rY30GUu7G6LUfpMvM= github.com/ipfs/go-ipfs-exchange-interface v0.0.1/go.mod h1:c8MwfHjtQjPoDyiy9cFquVtVHkO9b9Ob3FG91qJnWCM= github.com/ipfs/go-ipfs-exchange-offline v0.0.1 h1:P56jYKZF7lDDOLx5SotVh5KFxoY6C81I1NSHW1FxGew= github.com/ipfs/go-ipfs-exchange-offline v0.0.1/go.mod h1:WhHSFCVYX36H/anEKQboAzpUws3x7UeEGkzQc3iNkM0= github.com/ipfs/go-ipfs-files v0.0.2/go.mod h1:INEFm0LL2LWXBhNJ2PMIIb2w45hpXgPjNoE7yA8Y1d4= github.com/ipfs/go-ipfs-files v0.0.3/go.mod h1:INEFm0LL2LWXBhNJ2PMIIb2w45hpXgPjNoE7yA8Y1d4= github.com/ipfs/go-ipfs-files v0.0.4/go.mod h1:INEFm0LL2LWXBhNJ2PMIIb2w45hpXgPjNoE7yA8Y1d4= github.com/ipfs/go-ipfs-files v0.0.8 h1:8o0oFJkJ8UkO/ABl8T6ac6tKF3+NIpj67aAB6ZpusRg= github.com/ipfs/go-ipfs-files v0.0.8/go.mod h1:wiN/jSG8FKyk7N0WyctKSvq3ljIa2NNTiZB55kpTdOs= github.com/ipfs/go-ipfs-flags v0.0.1/go.mod h1:RnXBb9WV53GSfTrSDVK61NLTFKvWc60n+K9EgCDh+rA= github.com/ipfs/go-ipfs-http-client v0.0.5/go.mod h1:8EKP9RGUrUex4Ff86WhnKU7seEBOtjdgXlY9XHYvYMw= github.com/ipfs/go-ipfs-http-client v0.1.0 h1:YrJ+/vqmZF1ignpxfHUaJEax7e4tgbaFCTLfIS5yFZY= github.com/ipfs/go-ipfs-http-client v0.1.0/go.mod h1:8e2dQbntMZKxLfny+tyXJ7bJHZFERp/2vyzZdvkeLMc= github.com/ipfs/go-ipfs-posinfo v0.0.1 h1:Esoxj+1JgSjX0+ylc0hUmJCOv6V2vFoZiETLR6OtpRs= github.com/ipfs/go-ipfs-posinfo v0.0.1/go.mod h1:SwyeVP+jCwiDu0C313l/8jg6ZxM0qqtlt2a0vILTc1A= github.com/ipfs/go-ipfs-pq v0.0.1/go.mod h1:LWIqQpqfRG3fNc5XsnIhz/wQ2XXGyugQwls7BgUmUfY= github.com/ipfs/go-ipfs-pq v0.0.2 h1:e1vOOW6MuOwG2lqxcLA+wEn93i/9laCY8sXAw76jFOY= github.com/ipfs/go-ipfs-pq v0.0.2/go.mod h1:LWIqQpqfRG3fNc5XsnIhz/wQ2XXGyugQwls7BgUmUfY= github.com/ipfs/go-ipfs-provider v0.5.1 h1:kZj72jzWLtGcorlwnMvBL6y6KJk6klO2Kb8QSeqEB0o= github.com/ipfs/go-ipfs-provider v0.5.1/go.mod h1:fem6HKSru7n35Ljap6kowWdJrUzvcWJW01uhAkqNnzo= github.com/ipfs/go-ipfs-routing v0.0.1/go.mod h1:k76lf20iKFxQTjcJokbPM9iBXVXVZhcOwc360N4nuKs= github.com/ipfs/go-ipfs-routing v0.1.0 h1:gAJTT1cEeeLj6/DlLX6t+NxD9fQe2ymTO6qWRDI/HQQ= github.com/ipfs/go-ipfs-routing v0.1.0/go.mod h1:hYoUkJLyAUKhF58tysKpids8RNDPO42BVMgK5dNsoqY= github.com/ipfs/go-ipfs-util v0.0.1/go.mod h1:spsl5z8KUnrve+73pOhSVZND1SIxPW5RyBCNzQxlJBc= github.com/ipfs/go-ipfs-util v0.0.2 h1:59Sswnk1MFaiq+VcaknX7aYEyGyGDAA73ilhEK2POp8= github.com/ipfs/go-ipfs-util v0.0.2/go.mod h1:CbPtkWJzjLdEcezDns2XYaehFVNXG9zrdrtMecczcsQ= github.com/ipfs/go-ipld-cbor v0.0.1/go.mod h1:RXHr8s4k0NE0TKhnrxqZC9M888QfsBN9rhS5NjfKzY8= github.com/ipfs/go-ipld-cbor v0.0.2/go.mod h1:wTBtrQZA3SoFKMVkp6cn6HMRteIB1VsmHA0AQFOn7Nc= github.com/ipfs/go-ipld-cbor v0.0.3/go.mod h1:wTBtrQZA3SoFKMVkp6cn6HMRteIB1VsmHA0AQFOn7Nc= github.com/ipfs/go-ipld-cbor v0.0.4/go.mod h1:BkCduEx3XBCO6t2Sfo5BaHzuok7hbhdMm9Oh8B2Ftq4= github.com/ipfs/go-ipld-cbor v0.0.5-0.20200204214505-252690b78669/go.mod h1:BkCduEx3XBCO6t2Sfo5BaHzuok7hbhdMm9Oh8B2Ftq4= github.com/ipfs/go-ipld-cbor v0.0.5 h1:ovz4CHKogtG2KB/h1zUp5U0c/IzZrL435rCh5+K/5G8= github.com/ipfs/go-ipld-cbor v0.0.5/go.mod h1:BkCduEx3XBCO6t2Sfo5BaHzuok7hbhdMm9Oh8B2Ftq4= github.com/ipfs/go-ipld-format v0.0.1/go.mod h1:kyJtbkDALmFHv3QR6et67i35QzO3S0dCDnkOJhcZkms= github.com/ipfs/go-ipld-format v0.0.2/go.mod h1:4B6+FM2u9OJ9zCV+kSbgFAZlOrv1Hqbf0INGQgiKf9k= github.com/ipfs/go-ipld-format v0.2.0 h1:xGlJKkArkmBvowr+GMCX0FEZtkro71K1AwiKnL37mwA= github.com/ipfs/go-ipld-format v0.2.0/go.mod h1:3l3C1uKoadTPbeNfrDi+xMInYKlx2Cvg1BuydPSdzQs= github.com/ipfs/go-ipns v0.0.2 h1:oq4ErrV4hNQ2Eim257RTYRgfOSV/s8BDaf9iIl4NwFs= github.com/ipfs/go-ipns v0.0.2/go.mod h1:WChil4e0/m9cIINWLxZe1Jtf77oz5L05rO2ei/uKJ5U= github.com/ipfs/go-log v0.0.1/go.mod h1:kL1d2/hzSpI0thNYjiKfjanbVNU+IIGA/WnNESY9leM= github.com/ipfs/go-log v1.0.0/go.mod h1:JO7RzlMK6rA+CIxFMLOuB6Wf5b81GDiKElL7UPSIKjA= github.com/ipfs/go-log v1.0.1/go.mod h1:HuWlQttfN6FWNHRhlY5yMk/lW7evQC0HHGOxEwMRR8I= github.com/ipfs/go-log v1.0.2/go.mod h1:1MNjMxe0u6xvJZgeqbJ8vdo2TKaGwZ1a0Bpza+sr2Sk= github.com/ipfs/go-log v1.0.3/go.mod h1:OsLySYkwIbiSUR/yBTdv1qPtcE4FW3WPWk/ewz9Ru+A= github.com/ipfs/go-log v1.0.4/go.mod h1:oDCg2FkjogeFOhqqb+N39l2RpTNPL6F/StPkB3kPgcs= github.com/ipfs/go-log v1.0.5 h1:2dOuUCB1Z7uoczMWgAyDck5JLb72zHzrMnGnCNNbvY8= github.com/ipfs/go-log v1.0.5/go.mod h1:j0b8ZoR+7+R99LD9jZ6+AJsrzkPbSXbZfGakb5JPtIo= github.com/ipfs/go-log/v2 v2.0.1/go.mod h1:O7P1lJt27vWHhOwQmcFEvlmo49ry2VY2+JfBWFaa9+0= github.com/ipfs/go-log/v2 v2.0.2/go.mod h1:O7P1lJt27vWHhOwQmcFEvlmo49ry2VY2+JfBWFaa9+0= github.com/ipfs/go-log/v2 v2.0.3/go.mod h1:O7P1lJt27vWHhOwQmcFEvlmo49ry2VY2+JfBWFaa9+0= github.com/ipfs/go-log/v2 v2.0.5/go.mod h1:eZs4Xt4ZUJQFM3DlanGhy7TkwwawCZcSByscwkWG+dw= github.com/ipfs/go-log/v2 v2.0.8/go.mod h1:eZs4Xt4ZUJQFM3DlanGhy7TkwwawCZcSByscwkWG+dw= github.com/ipfs/go-log/v2 v2.1.1/go.mod h1:2v2nsGfZsvvAJz13SyFzf9ObaqwHiHxsPLEHntrv9KM= github.com/ipfs/go-log/v2 v2.1.2-0.20200626104915-0016c0b4b3e4/go.mod h1:2v2nsGfZsvvAJz13SyFzf9ObaqwHiHxsPLEHntrv9KM= github.com/ipfs/go-log/v2 v2.1.3/go.mod h1:/8d0SH3Su5Ooc31QlL1WysJhvyOTDCjcCZ9Axpmri6g= github.com/ipfs/go-log/v2 v2.3.0 h1:31Re/cPqFHpsRHgyVwjWADPoF0otB1WrjTy8ZFYwEZU= github.com/ipfs/go-log/v2 v2.3.0/go.mod h1:QqGoj30OTpnKaG/LKTGTxoP2mmQtjVMEnK72gynbe/g= github.com/ipfs/go-merkledag v0.0.3/go.mod h1:Oc5kIXLHokkE1hWGMBHw+oxehkAaTOqtEb7Zbh6BhLA= github.com/ipfs/go-merkledag v0.0.6/go.mod h1:QYPdnlvkOg7GnQRofu9XZimC5ZW5Wi3bKys/4GQQfto= github.com/ipfs/go-merkledag v0.2.3/go.mod h1:SQiXrtSts3KGNmgOzMICy5c0POOpUNQLvB3ClKnBAlk= github.com/ipfs/go-merkledag v0.3.1/go.mod h1:fvkZNNZixVW6cKSZ/JfLlON5OlgTXNdRLz0p6QG/I2M= github.com/ipfs/go-merkledag v0.3.2 h1:MRqj40QkrWkvPswXs4EfSslhZ4RVPRbxwX11js0t1xY= github.com/ipfs/go-merkledag v0.3.2/go.mod h1:fvkZNNZixVW6cKSZ/JfLlON5OlgTXNdRLz0p6QG/I2M= github.com/ipfs/go-metrics-interface v0.0.1 h1:j+cpbjYvu4R8zbleSs36gvB7jR+wsL2fGD6n0jO4kdg= github.com/ipfs/go-metrics-interface v0.0.1/go.mod h1:6s6euYU4zowdslK0GKHmqaIZ3j/b/tL7HTWtJ4VPgWY= github.com/ipfs/go-metrics-prometheus v0.0.2/go.mod h1:ELLU99AQQNi+zX6GCGm2lAgnzdSH3u5UVlCdqSXnEks= github.com/ipfs/go-path v0.0.3/go.mod h1:zIRQUez3LuQIU25zFjC2hpBTHimWx7VK5bjZgRLbbdo= github.com/ipfs/go-path v0.0.7 h1:H06hKMquQ0aYtHiHryOMLpQC1qC3QwXwkahcEVD51Ho= github.com/ipfs/go-path v0.0.7/go.mod h1:6KTKmeRnBXgqrTvzFrPV3CamxcgvXX/4z79tfAd2Sno= github.com/ipfs/go-peertaskqueue v0.0.4/go.mod h1:03H8fhyeMfKNFWqzYEVyMbcPUeYrqP1MX6Kd+aN+rMQ= github.com/ipfs/go-peertaskqueue v0.1.0/go.mod h1:Jmk3IyCcfl1W3jTW3YpghSwSEC6IJ3Vzz/jUmWw8Z0U= github.com/ipfs/go-peertaskqueue v0.1.1/go.mod h1:Jmk3IyCcfl1W3jTW3YpghSwSEC6IJ3Vzz/jUmWw8Z0U= github.com/ipfs/go-peertaskqueue v0.2.0 h1:2cSr7exUGKYyDeUyQ7P/nHPs9P7Ht/B+ROrpN1EJOjc= github.com/ipfs/go-peertaskqueue v0.2.0/go.mod h1:5/eNrBEbtSKWCG+kQK8K8fGNixoYUnr+P7jivavs9lY= github.com/ipfs/go-todocounter v0.0.1/go.mod h1:l5aErvQc8qKE2r7NDMjmq5UNAvuZy0rC8BHOplkWvZ4= github.com/ipfs/go-unixfs v0.0.4/go.mod h1:eIo/p9ADu/MFOuyxzwU+Th8D6xoxU//r590vUpWyfz8= github.com/ipfs/go-unixfs v0.2.1/go.mod h1:IwAAgul1UQIcNZzKPYZWOCijryFBeCV79cNubPzol+k= github.com/ipfs/go-unixfs v0.2.4/go.mod h1:SUdisfUjNoSDzzhGVxvCL9QO/nKdwXdr+gbMUdqcbYw= github.com/ipfs/go-unixfs v0.2.6 h1:gq3U3T2vh8x6tXhfo3uSO3n+2z4yW0tYtNgVP/3sIyA= github.com/ipfs/go-unixfs v0.2.6/go.mod h1:GTTzQvaZsTZARdNkkdjDKFFnBhmO3e5mIM1PkH/x4p0= github.com/ipfs/go-verifcid v0.0.1 h1:m2HI7zIuR5TFyQ1b79Da5N9dnnCP1vcu2QqawmWlK2E= github.com/ipfs/go-verifcid v0.0.1/go.mod h1:5Hrva5KBeIog4A+UpqlaIU+DEstipcJYQQZc0g37pY0= github.com/ipfs/interface-go-ipfs-core v0.2.3/go.mod h1:Tihp8zxGpUeE3Tokr94L6zWZZdkRQvG5TL6i9MuNE+s= github.com/ipfs/interface-go-ipfs-core v0.4.0 h1:+mUiamyHIwedqP8ZgbCIwpy40oX7QcXUbo4CZOeJVJg= github.com/ipfs/interface-go-ipfs-core v0.4.0/go.mod h1:UJBcU6iNennuI05amq3FQ7g0JHUkibHFAfhfUIy927o= github.com/ipfs/iptb v1.4.0 h1:YFYTrCkLMRwk/35IMyC6+yjoQSHTEcNcefBStLJzgvo= github.com/ipfs/iptb v1.4.0/go.mod h1:1rzHpCYtNp87/+hTxG5TfCVn/yMY3dKnLn8tBiMfdmg= github.com/ipfs/iptb-plugins v0.2.1/go.mod h1:QXMbtIWZ+jRsW8a4h13qAKU7jcM7qaittO8wOsTP0Rs= github.com/ipfs/iptb-plugins v0.3.0 h1:C1rpq1o5lUZtaAOkLIox5akh6ba4uk/3RwWc6ttVxw0= github.com/ipfs/iptb-plugins v0.3.0/go.mod h1:5QtOvckeIw4bY86gSH4fgh3p3gCSMn3FmIKr4gaBncA= github.com/ipld/go-car v0.1.1-0.20200923150018-8cdef32e2da4/go.mod h1:xrMEcuSq+D1vEwl+YAXsg/JfA98XGpXDwnkIL4Aimqw= github.com/ipld/go-car v0.1.1-0.20201119040415-11b6074b6d4d h1:iphSzTuPqyDgH7WUVZsdqUnQNzYgIblsVr1zhVNA33U= github.com/ipld/go-car v0.1.1-0.20201119040415-11b6074b6d4d/go.mod h1:2Gys8L8MJ6zkh1gktTSXreY63t4UbyvNp5JaudTyxHQ= github.com/ipld/go-ipld-prime v0.0.2-0.20200428162820-8b59dc292b8e/go.mod h1:uVIwe/u0H4VdKv3kaN1ck7uCb6yD9cFLS9/ELyXbsw8= github.com/ipld/go-ipld-prime v0.5.1-0.20200828233916-988837377a7f/go.mod h1:0xEgdD6MKbZ1vF0GC+YcR/C4SQCAlRuOjIJ2i0HxqzM= github.com/ipld/go-ipld-prime v0.5.1-0.20201021195245-109253e8a018 h1:RbRHv8epkmvBYA5cGfz68GUSbOgx5j/7ObLIl4Rsif0= github.com/ipld/go-ipld-prime v0.5.1-0.20201021195245-109253e8a018/go.mod h1:0xEgdD6MKbZ1vF0GC+YcR/C4SQCAlRuOjIJ2i0HxqzM= github.com/ipld/go-ipld-prime-proto v0.0.0-20200428191222-c1ffdadc01e1/go.mod h1:OAV6xBmuTLsPZ+epzKkPB1e25FHk/vCtyatkdHcArLs= github.com/ipld/go-ipld-prime-proto v0.0.0-20200922192210-9a2bfd4440a6/go.mod h1:3pHYooM9Ea65jewRwrb2u5uHZCNkNTe9ABsVB+SrkH0= github.com/ipld/go-ipld-prime-proto v0.1.0 h1:j7gjqrfwbT4+gXpHwEx5iMssma3mnctC7YaCimsFP70= github.com/ipld/go-ipld-prime-proto v0.1.0/go.mod h1:11zp8f3sHVgIqtb/c9Kr5ZGqpnCLF1IVTNOez9TopzE= github.com/ipsn/go-secp256k1 v0.0.0-20180726113642-9d62b9f0bc52 h1:QG4CGBqCeuBo6aZlGAamSkxWdgWfZGeE49eUOWJPA4c= github.com/ipsn/go-secp256k1 v0.0.0-20180726113642-9d62b9f0bc52/go.mod h1:fdg+/X9Gg4AsAIzWpEHwnqd+QY3b7lajxyjE1m4hkq4= github.com/jackpal/gateway v1.0.4/go.mod h1:lTpwd4ACLXmpyiCTRtfiNyVnUmqT9RivzCDQetPfnjA= github.com/jackpal/gateway v1.0.5/go.mod h1:lTpwd4ACLXmpyiCTRtfiNyVnUmqT9RivzCDQetPfnjA= github.com/jackpal/go-nat-pmp v1.0.1/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jbenet/go-cienv v0.0.0-20150120210510-1bb1476777ec/go.mod h1:rGaEvXB4uRSZMmzKNLoXvTu1sfx+1kv/DojUlPrSZGs= github.com/jbenet/go-cienv v0.1.0 h1:Vc/s0QbQtoxX8MwwSLWWh+xNNZvM3Lw7NsTcHrvvhMc= github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA= github.com/jbenet/go-is-domain v1.0.3 h1:FuRBJ0h79p00eseyaLckJT5KnE8RyqI+HLopvNSyNE0= github.com/jbenet/go-is-domain v1.0.3/go.mod h1:xbRLRb0S7FgzDBTJlguhDVwLYM/5yNtvktxj2Ttfy7Q= github.com/jbenet/go-random v0.0.0-20190219211222-123a90aedc0c h1:uUx61FiAa1GI6ZmVd2wf2vULeQZIKG66eybjNXKYCz4= github.com/jbenet/go-random v0.0.0-20190219211222-123a90aedc0c/go.mod h1:sdx1xVM9UuLw1tXnhJWN3piypTUO3vCIHYmG15KE/dU= github.com/jbenet/go-temp-err-catcher v0.0.0-20150120210811-aac704a3f4f2/go.mod h1:8GXXJV31xl8whumTzdZsTt3RnUIiPqzkyf7mxToRCMs= github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABoLk/+KKHggpk= github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= github.com/jbenet/goprocess v0.0.0-20160826012719-b497e2f366b8/go.mod h1:Ly/wlsjFq/qrU3Rar62tu1gASgGw6chQbSh/XgIIXCY= github.com/jbenet/goprocess v0.1.3/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= github.com/jbenet/goprocess v0.1.4 h1:DRGOFReOMqqDNXwW70QkacFW0YN9QnwLV0Vqk+3oU0o= github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= github.com/jessevdk/go-assets v0.0.0-20160921144138-4f4301a06e15 h1:cW/amwGEJK5MSKntPXRjX4dxs/nGxGT8gXKIsKFmHGc= github.com/jessevdk/go-assets v0.0.0-20160921144138-4f4301a06e15/go.mod h1:Fdm/oWRW+CH8PRbLntksCNtmcCBximKPkVQYvmMl80k= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jhump/protoreflect v1.7.0 h1:qJ7piXPrjP3mDrfHf5ATkxfLix8ANs226vpo0aACOn0= github.com/jhump/protoreflect v1.7.0/go.mod h1:RZkzh7Hi9J7qT/sPlWnJ/UwZqCJvciFxKDA0UCeltSM= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jonboulle/clockwork v0.1.1-0.20190114141812-62fb9bc030d1/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/jsimonetti/rtnetlink v0.0.0-20190606172950-9527aa82566a/go.mod h1:Oz+70psSo5OFh8DBl0Zv2ACw7Esh6pPUphlvZG9x7uw= github.com/jsimonetti/rtnetlink v0.0.0-20190830100107-3784a6c7c552/go.mod h1:Oz+70psSo5OFh8DBl0Zv2ACw7Esh6pPUphlvZG9x7uw= github.com/jsimonetti/rtnetlink v0.0.0-20200117123717-f846d4f6c1f4/go.mod h1:WGuG/smIU4J/54PblvSbh+xvCZmpJnFgr3ds6Z55XMQ= github.com/jsmouret/grpc-web v0.14.2-0.20211103063242-8c932b2237aa h1:mH9i4lPP4lWbNSLjQj7GYoZ0qPzTLBZffzT4MDV1KFc= github.com/jsmouret/grpc-web v0.14.2-0.20211103063242-8c932b2237aa/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a h1:FaWFmfWdAUKbSCtOU2QjDaorUexogfaMgbipgYATUMU= github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kabukky/httpscerts v0.0.0-20150320125433-617593d7dcb3/go.mod h1:BYpt4ufZiIGv2nXn4gMxnfKV306n3mWXgNu/d2TqdTU= github.com/kami-zh/go-capturer v0.0.0-20171211120116-e492ea43421d/go.mod h1:P2viExyCEfeWGU259JnaQ34Inuec4R38JCyBx2edgD0= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= github.com/kilic/bls12-381 v0.0.0-20200607163746-32e1441c8a9f/go.mod h1:XXfR6YFCRSrkEXbNlIyDsgXVNJWVUV30m/ebkVy9n6s= github.com/kilic/bls12-381 v0.0.0-20200731194930-64c428e1bff5/go.mod h1:XXfR6YFCRSrkEXbNlIyDsgXVNJWVUV30m/ebkVy9n6s= github.com/kilic/bls12-381 v0.0.0-20200820230200-6b2c19996391/go.mod h1:XXfR6YFCRSrkEXbNlIyDsgXVNJWVUV30m/ebkVy9n6s= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/cpuid/v2 v2.0.4 h1:g0I61F2K2DjRHz1cnxlkNSBIaePVoJIjjnHui8QHbiw= github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/koron/go-ssdp v0.0.0-20180514024734-4a0ed625a78b/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d h1:68u9r4wEvL3gYg2jvAOgROwZ3H+Y3hIDk4tbbmIjcYQ= github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/launchdarkly/go-country-codes v0.0.0-20191008001159-776cf5214f39 h1:jPtNOkAUBQp1CzKBj2xumi1mTxBXvh0Bw0FHCXL92Es= github.com/launchdarkly/go-country-codes v0.0.0-20191008001159-776cf5214f39/go.mod h1:EDMydH9zqezFT0rvCeUdMj6JwZV5kKFxjXmpMhWvJ0A= github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/lib/pq v0.0.0-20180327071824-d34b9ff171c2/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.7.0 h1:h93mCPfUSkaul3Ka/VG8uZdmW1uMHDGxzu0NWHuJmHY= github.com/lib/pq v1.7.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-addr-util v0.0.1/go.mod h1:4ac6O7n9rIAKB1dnd+s8IbbMXkt+oBpzX4/+RACcnlQ= github.com/libp2p/go-addr-util v0.0.2/go.mod h1:Ecd6Fb3yIuLzq4bD7VcywcVSBtefcAwnUISBM3WG15E= github.com/libp2p/go-addr-util v0.1.0 h1:acKsntI33w2bTU7tC9a0SaPimJGfSI0bFKC18ChxeVI= github.com/libp2p/go-addr-util v0.1.0/go.mod h1:6I3ZYuFr2O/9D+SoyM0zEw0EF3YkldtTX406BpdQMqw= github.com/libp2p/go-buffer-pool v0.0.1/go.mod h1:xtyIz9PMobb13WaxR6Zo1Pd1zXJKYg0a8KiIvDp3TzQ= github.com/libp2p/go-buffer-pool v0.0.2 h1:QNK2iAFa8gjAe1SPz6mHSMuCcjs+X1wlHzeOSqcmlfs= github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= github.com/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38yPW7c= github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic= github.com/libp2p/go-conn-security v0.0.1/go.mod h1:bGmu51N0KU9IEjX7kl2PQjgZa40JQWnayTvNMgD/vyk= github.com/libp2p/go-conn-security-multistream v0.0.1/go.mod h1:nc9vud7inQ+d6SO0I/6dSWrdMnHnzZNHeyUQqrAJulE= github.com/libp2p/go-conn-security-multistream v0.0.2/go.mod h1:nc9vud7inQ+d6SO0I/6dSWrdMnHnzZNHeyUQqrAJulE= github.com/libp2p/go-conn-security-multistream v0.1.0/go.mod h1:aw6eD7LOsHEX7+2hJkDxw1MteijaVcI+/eP2/x3J1xc= github.com/libp2p/go-conn-security-multistream v0.2.0/go.mod h1:hZN4MjlNetKD3Rq5Jb/P5ohUnFLNzEAR4DLSzpn2QLU= github.com/libp2p/go-conn-security-multistream v0.2.1 h1:ft6/POSK7F+vl/2qzegnHDaXFU0iWB4yVTYrioC6Zy0= github.com/libp2p/go-conn-security-multistream v0.2.1/go.mod h1:cR1d8gA0Hr59Fj6NhaTpFhJZrjSYuNmhpT2r25zYR70= github.com/libp2p/go-eventbus v0.0.2/go.mod h1:Hr/yGlwxA/stuLnpMiu82lpNKpvRy3EaJxPu40XYOwk= github.com/libp2p/go-eventbus v0.1.0/go.mod h1:vROgu5cs5T7cv7POWlWxBaVLxfSegC5UGQf8A2eEmx4= github.com/libp2p/go-eventbus v0.2.1 h1:VanAdErQnpTioN2TowqNcOijf6YwhuODe4pPKSDpxGc= github.com/libp2p/go-eventbus v0.2.1/go.mod h1:jc2S4SoEVPP48H9Wpzm5aiGwUCBMfGhVhhBjyhhCJs8= github.com/libp2p/go-flow-metrics v0.0.1/go.mod h1:Iv1GH0sG8DtYN3SVJ2eG221wMiNpZxBdp967ls1g+k8= github.com/libp2p/go-flow-metrics v0.0.2/go.mod h1:HeoSNUrOJVK1jEpDqVEiUOIXqhbnS27omG0uWU5slZs= github.com/libp2p/go-flow-metrics v0.0.3 h1:8tAs/hSdNvUiLgtlSy3mxwxWP4I9y/jlkPFT7epKdeM= github.com/libp2p/go-flow-metrics v0.0.3/go.mod h1:HeoSNUrOJVK1jEpDqVEiUOIXqhbnS27omG0uWU5slZs= github.com/libp2p/go-libp2p v0.0.2/go.mod h1:Qu8bWqFXiocPloabFGUcVG4kk94fLvfC8mWTDdFC9wE= github.com/libp2p/go-libp2p v0.0.30/go.mod h1:XWT8FGHlhptAv1+3V/+J5mEpzyui/5bvFsNuWYs611A= github.com/libp2p/go-libp2p v0.1.0/go.mod h1:6D/2OBauqLUoqcADOJpn9WbKqvaM07tDw68qHM0BxUM= github.com/libp2p/go-libp2p v0.1.1/go.mod h1:I00BRo1UuUSdpuc8Q2mN7yDF/oTUTRAX6JWpTiK9Rp8= github.com/libp2p/go-libp2p v0.3.1/go.mod h1:e6bwxbdYH1HqWTz8faTChKGR0BjPc8p+6SyP8GTTR7Y= github.com/libp2p/go-libp2p v0.4.0/go.mod h1:9EsEIf9p2UDuwtPd0DwJsAl0qXVxgAnuDGRvHbfATfI= github.com/libp2p/go-libp2p v0.6.0/go.mod h1:mfKWI7Soz3ABX+XEBR61lGbg+ewyMtJHVt043oWeqwg= github.com/libp2p/go-libp2p v0.6.1/go.mod h1:CTFnWXogryAHjXAKEbOf1OWY+VeAP3lDMZkfEI5sT54= github.com/libp2p/go-libp2p v0.7.0/go.mod h1:hZJf8txWeCduQRDC/WSqBGMxaTHCOYHt2xSU1ivxn0k= github.com/libp2p/go-libp2p v0.7.4/go.mod h1:oXsBlTLF1q7pxr+9w6lqzS1ILpyHsaBPniVO7zIHGMw= github.com/libp2p/go-libp2p v0.8.1/go.mod h1:QRNH9pwdbEBpx5DTJYg+qxcVaDMAz3Ee/qDKwXujH5o= github.com/libp2p/go-libp2p v0.8.3/go.mod h1:EsH1A+8yoWK+L4iKcbPYu6MPluZ+CHWI9El8cTaefiM= github.com/libp2p/go-libp2p v0.9.2/go.mod h1:cunHNLDVus66Ct9iXXcjKRLdmHdFdHVe1TAnbubJQqQ= github.com/libp2p/go-libp2p v0.10.0/go.mod h1:yBJNpb+mGJdgrwbKAKrhPU0u3ogyNFTfjJ6bdM+Q/G8= github.com/libp2p/go-libp2p v0.12.0/go.mod h1:FpHZrfC1q7nA8jitvdjKBDF31hguaC676g/nT9PgQM0= github.com/libp2p/go-libp2p v0.13.0/go.mod h1:pM0beYdACRfHO1WcJlp65WXyG2A6NqYM+t2DTVAJxMo= github.com/libp2p/go-libp2p v0.14.3/go.mod h1:d12V4PdKbpL0T1/gsUNN8DfgMuRPDX8bS2QxCZlwRH0= github.com/libp2p/go-libp2p v0.14.4 h1:QCJE+jGyqxWdrSPuS4jByXCzosgaIg4SJTLCRplJ53w= github.com/libp2p/go-libp2p v0.14.4/go.mod h1:EIRU0Of4J5S8rkockZM7eJp2S0UrCyi55m2kJVru3rM= github.com/libp2p/go-libp2p-asn-util v0.0.0-20200825225859-85005c6cf052 h1:BM7aaOF7RpmNn9+9g6uTjGJ0cTzWr5j9i9IKeun2M8U= github.com/libp2p/go-libp2p-asn-util v0.0.0-20200825225859-85005c6cf052/go.mod h1:nRMRTab+kZuk0LnKZpxhOVH/ndsdr2Nr//Zltc/vwgo= github.com/libp2p/go-libp2p-autonat v0.0.2/go.mod h1:fs71q5Xk+pdnKU014o2iq1RhMs9/PMaG5zXRFNnIIT4= github.com/libp2p/go-libp2p-autonat v0.0.6/go.mod h1:uZneLdOkZHro35xIhpbtTzLlgYturpu4J5+0cZK3MqE= github.com/libp2p/go-libp2p-autonat v0.1.0/go.mod h1:1tLf2yXxiE/oKGtDwPYWTSYG3PtvYlJmg7NeVtPRqH8= github.com/libp2p/go-libp2p-autonat v0.1.1/go.mod h1:OXqkeGOY2xJVWKAGV2inNF5aKN/djNA3fdpCWloIudE= github.com/libp2p/go-libp2p-autonat v0.2.0/go.mod h1:DX+9teU4pEEoZUqR1PiMlqliONQdNbfzE1C718tcViI= github.com/libp2p/go-libp2p-autonat v0.2.1/go.mod h1:MWtAhV5Ko1l6QBsHQNSuM6b1sRkXrpk0/LqCr+vCVxI= github.com/libp2p/go-libp2p-autonat v0.2.2/go.mod h1:HsM62HkqZmHR2k1xgX34WuWDzk/nBwNHoeyyT4IWV6A= github.com/libp2p/go-libp2p-autonat v0.2.3/go.mod h1:2U6bNWCNsAG9LEbwccBDQbjzQ8Krdjge1jLTE9rdoMM= github.com/libp2p/go-libp2p-autonat v0.4.0/go.mod h1:YxaJlpr81FhdOv3W3BTconZPfhaYivRdf53g+S2wobk= github.com/libp2p/go-libp2p-autonat v0.4.2 h1:YMp7StMi2dof+baaxkbxaizXjY1RPvU71CXfxExzcUU= github.com/libp2p/go-libp2p-autonat v0.4.2/go.mod h1:YxaJlpr81FhdOv3W3BTconZPfhaYivRdf53g+S2wobk= github.com/libp2p/go-libp2p-autonat-svc v0.1.0/go.mod h1:fqi8Obl/z3R4PFVLm8xFtZ6PBL9MlV/xumymRFkKq5A= github.com/libp2p/go-libp2p-blankhost v0.0.1/go.mod h1:Ibpbw/7cPPYwFb7PACIWdvxxv0t0XCCI10t7czjAjTc= github.com/libp2p/go-libp2p-blankhost v0.1.1/go.mod h1:pf2fvdLJPsC1FsVrNP3DUUvMzUts2dsLLBEpo1vW1ro= github.com/libp2p/go-libp2p-blankhost v0.1.3/go.mod h1:KML1//wiKR8vuuJO0y3LUd1uLv+tlkGTAr3jC0S5cLg= github.com/libp2p/go-libp2p-blankhost v0.1.4/go.mod h1:oJF0saYsAXQCSfDq254GMNmLNz6ZTHTOvtF4ZydUvwU= github.com/libp2p/go-libp2p-blankhost v0.1.6/go.mod h1:jONCAJqEP+Z8T6EQviGL4JsQcLx1LgTGtVqFNY8EMfQ= github.com/libp2p/go-libp2p-blankhost v0.2.0 h1:3EsGAi0CBGcZ33GwRuXEYJLLPoVWyXJ1bcJzAJjINkk= github.com/libp2p/go-libp2p-blankhost v0.2.0/go.mod h1:eduNKXGTioTuQAUcZ5epXi9vMl+t4d8ugUBRQ4SqaNQ= github.com/libp2p/go-libp2p-circuit v0.0.1/go.mod h1:Dqm0s/BiV63j8EEAs8hr1H5HudqvCAeXxDyic59lCwE= github.com/libp2p/go-libp2p-circuit v0.0.9/go.mod h1:uU+IBvEQzCu953/ps7bYzC/D/R0Ho2A9LfKVVCatlqU= github.com/libp2p/go-libp2p-circuit v0.1.0/go.mod h1:Ahq4cY3V9VJcHcn1SBXjr78AbFkZeIRmfunbA7pmFh8= github.com/libp2p/go-libp2p-circuit v0.1.1/go.mod h1:Ahq4cY3V9VJcHcn1SBXjr78AbFkZeIRmfunbA7pmFh8= github.com/libp2p/go-libp2p-circuit v0.1.3/go.mod h1:Xqh2TjSy8DD5iV2cCOMzdynd6h8OTBGoV1AWbWor3qM= github.com/libp2p/go-libp2p-circuit v0.1.4/go.mod h1:CY67BrEjKNDhdTk8UgBX1Y/H5c3xkAcs3gnksxY7osU= github.com/libp2p/go-libp2p-circuit v0.2.1/go.mod h1:BXPwYDN5A8z4OEY9sOfr2DUQMLQvKt/6oku45YUmjIo= github.com/libp2p/go-libp2p-circuit v0.2.2/go.mod h1:nkG3iE01tR3FoQ2nMm06IUrCpCyJp1Eo4A1xYdpjfs4= github.com/libp2p/go-libp2p-circuit v0.2.3/go.mod h1:nkG3iE01tR3FoQ2nMm06IUrCpCyJp1Eo4A1xYdpjfs4= github.com/libp2p/go-libp2p-circuit v0.4.0 h1:eqQ3sEYkGTtybWgr6JLqJY6QLtPWRErvFjFDfAOO1wc= github.com/libp2p/go-libp2p-circuit v0.4.0/go.mod h1:t/ktoFIUzM6uLQ+o1G6NuBl2ANhBKN9Bc8jRIk31MoA= github.com/libp2p/go-libp2p-connmgr v0.1.1/go.mod h1:wZxh8veAmU5qdrfJ0ZBLcU8oJe9L82ciVP/fl1VHjXk= github.com/libp2p/go-libp2p-connmgr v0.2.3/go.mod h1:Gqjg29zI8CwXX21zRxy6gOg8VYu3zVerJRt2KyktzH4= github.com/libp2p/go-libp2p-connmgr v0.2.4 h1:TMS0vc0TCBomtQJyWr7fYxcVYYhx+q/2gF++G5Jkl/w= github.com/libp2p/go-libp2p-connmgr v0.2.4/go.mod h1:YV0b/RIm8NGPnnNWM7hG9Q38OeQiQfKhHCCs1++ufn0= github.com/libp2p/go-libp2p-core v0.0.1/go.mod h1:g/VxnTZ/1ygHxH3dKok7Vno1VfpvGcGip57wjTU4fco= github.com/libp2p/go-libp2p-core v0.0.2/go.mod h1:9dAcntw/n46XycV4RnlBq3BpgrmyUi9LuoTNdPrbUco= github.com/libp2p/go-libp2p-core v0.0.3/go.mod h1:j+YQMNz9WNSkNezXOsahp9kwZBKBvxLpKD316QWSJXE= github.com/libp2p/go-libp2p-core v0.0.4/go.mod h1:jyuCQP356gzfCFtRKyvAbNkyeuxb7OlyhWZ3nls5d2I= github.com/libp2p/go-libp2p-core v0.0.6/go.mod h1:0d9xmaYAVY5qmbp/fcgxHT3ZJsLjYeYPMJAUKpaCHrE= github.com/libp2p/go-libp2p-core v0.2.0/go.mod h1:X0eyB0Gy93v0DZtSYbEM7RnMChm9Uv3j7yRXjO77xSI= github.com/libp2p/go-libp2p-core v0.2.2/go.mod h1:8fcwTbsG2B+lTgRJ1ICZtiM5GWCWZVoVrLaDRvIRng0= github.com/libp2p/go-libp2p-core v0.2.3/go.mod h1:GqhyQqyIAPsxFYXHMjfXgMv03lxsvM0mFzuYA9Ib42A= github.com/libp2p/go-libp2p-core v0.2.4/go.mod h1:STh4fdfa5vDYr0/SzYYeqnt+E6KfEV5VxfIrm0bcI0g= github.com/libp2p/go-libp2p-core v0.2.5/go.mod h1:6+5zJmKhsf7yHn1RbmYDu08qDUpIUxGdqHuEZckmZOA= github.com/libp2p/go-libp2p-core v0.3.0/go.mod h1:ACp3DmS3/N64c2jDzcV429ukDpicbL6+TrrxANBjPGw= github.com/libp2p/go-libp2p-core v0.3.1/go.mod h1:thvWy0hvaSBhnVBaW37BvzgVV68OUhgJJLAa6almrII= github.com/libp2p/go-libp2p-core v0.4.0/go.mod h1:49XGI+kc38oGVwqSBhDEwytaAxgZasHhFfQKibzTls0= github.com/libp2p/go-libp2p-core v0.5.0/go.mod h1:49XGI+kc38oGVwqSBhDEwytaAxgZasHhFfQKibzTls0= github.com/libp2p/go-libp2p-core v0.5.1/go.mod h1:uN7L2D4EvPCvzSH5SrhR72UWbnSGpt5/a35Sm4upn4Y= github.com/libp2p/go-libp2p-core v0.5.2/go.mod h1:uN7L2D4EvPCvzSH5SrhR72UWbnSGpt5/a35Sm4upn4Y= github.com/libp2p/go-libp2p-core v0.5.3/go.mod h1:uN7L2D4EvPCvzSH5SrhR72UWbnSGpt5/a35Sm4upn4Y= github.com/libp2p/go-libp2p-core v0.5.4/go.mod h1:uN7L2D4EvPCvzSH5SrhR72UWbnSGpt5/a35Sm4upn4Y= github.com/libp2p/go-libp2p-core v0.5.5/go.mod h1:vj3awlOr9+GMZJFH9s4mpt9RHHgGqeHCopzbYKZdRjM= github.com/libp2p/go-libp2p-core v0.5.6/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX0bJvM49Ykaswo= github.com/libp2p/go-libp2p-core v0.5.7/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX0bJvM49Ykaswo= github.com/libp2p/go-libp2p-core v0.6.0/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX0bJvM49Ykaswo= github.com/libp2p/go-libp2p-core v0.6.1/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= github.com/libp2p/go-libp2p-core v0.7.0/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= github.com/libp2p/go-libp2p-core v0.8.0/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= github.com/libp2p/go-libp2p-core v0.8.1/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= github.com/libp2p/go-libp2p-core v0.8.2/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= github.com/libp2p/go-libp2p-core v0.8.3/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= github.com/libp2p/go-libp2p-core v0.8.5/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= github.com/libp2p/go-libp2p-core v0.8.6 h1:3S8g006qG6Tjpj1JdRK2S+TWc2DJQKX/RG9fdLeiLSU= github.com/libp2p/go-libp2p-core v0.8.6/go.mod h1:dgHr0l0hIKfWpGpqAMbpo19pen9wJfdCGv51mTmdpmM= github.com/libp2p/go-libp2p-crypto v0.0.1/go.mod h1:yJkNyDmO341d5wwXxDUGO0LykUVT72ImHNUqh5D/dBE= github.com/libp2p/go-libp2p-crypto v0.0.2/go.mod h1:eETI5OUfBnvARGOHrJz2eWNyTUxEGZnBxMcbUjfIj4I= github.com/libp2p/go-libp2p-crypto v0.1.0 h1:k9MFy+o2zGDNGsaoZl0MA3iZ75qXxr9OOoAZF+sD5OQ= github.com/libp2p/go-libp2p-crypto v0.1.0/go.mod h1:sPUokVISZiy+nNuTTH/TY+leRSxnFj/2GLjtOTW90hI= github.com/libp2p/go-libp2p-daemon v0.2.2/go.mod h1:kyrpsLB2JeNYR2rvXSVWyY0iZuRIMhqzWR3im9BV6NQ= github.com/libp2p/go-libp2p-discovery v0.0.1/go.mod h1:ZkkF9xIFRLA1xCc7bstYFkd80gBGK8Fc1JqGoU2i+zI= github.com/libp2p/go-libp2p-discovery v0.0.5/go.mod h1:YtF20GUxjgoKZ4zmXj8j3Nb2TUSBHFlOCetzYdbZL5I= github.com/libp2p/go-libp2p-discovery v0.1.0/go.mod h1:4F/x+aldVHjHDHuX85x1zWoFTGElt8HnoDzwkFZm29g= github.com/libp2p/go-libp2p-discovery v0.2.0/go.mod h1:s4VGaxYMbw4+4+tsoQTqh7wfxg97AEdo4GYBt6BadWg= github.com/libp2p/go-libp2p-discovery v0.3.0/go.mod h1:o03drFnz9BVAZdzC/QUQ+NeQOu38Fu7LJGEOK2gQltw= github.com/libp2p/go-libp2p-discovery v0.4.0/go.mod h1:bZ0aJSrFc/eX2llP0ryhb1kpgkPyTo23SJ5b7UQCMh4= github.com/libp2p/go-libp2p-discovery v0.5.0/go.mod h1:+srtPIU9gDaBNu//UHvcdliKBIcr4SfDcm0/PfPJLug= github.com/libp2p/go-libp2p-discovery v0.5.1 h1:CJylx+h2+4+s68GvrM4pGNyfNhOYviWBPtVv5PA7sfo= github.com/libp2p/go-libp2p-discovery v0.5.1/go.mod h1:+srtPIU9gDaBNu//UHvcdliKBIcr4SfDcm0/PfPJLug= github.com/libp2p/go-libp2p-gostream v0.3.1 h1:XlwohsPn6uopGluEWs1Csv1QCEjrTXf2ZQagzZ5paAg= github.com/libp2p/go-libp2p-gostream v0.3.1/go.mod h1:1V3b+u4Zhaq407UUY9JLCpboaeufAeVQbnvAt12LRsI= github.com/libp2p/go-libp2p-host v0.0.1/go.mod h1:qWd+H1yuU0m5CwzAkvbSjqKairayEHdR5MMl7Cwa7Go= github.com/libp2p/go-libp2p-host v0.0.3/go.mod h1:Y/qPyA6C8j2coYyos1dfRm0I8+nvd4TGrDGt4tA7JR8= github.com/libp2p/go-libp2p-interface-connmgr v0.0.1/go.mod h1:GarlRLH0LdeWcLnYM/SaBykKFl9U5JFnbBGruAk/D5k= github.com/libp2p/go-libp2p-interface-connmgr v0.0.4/go.mod h1:GarlRLH0LdeWcLnYM/SaBykKFl9U5JFnbBGruAk/D5k= github.com/libp2p/go-libp2p-interface-connmgr v0.0.5/go.mod h1:GarlRLH0LdeWcLnYM/SaBykKFl9U5JFnbBGruAk/D5k= github.com/libp2p/go-libp2p-interface-pnet v0.0.1/go.mod h1:el9jHpQAXK5dnTpKA4yfCNBZXvrzdOU75zz+C6ryp3k= github.com/libp2p/go-libp2p-kad-dht v0.2.1/go.mod h1:k7ONOlup7HKzQ68dE6lSnp07cdxdkmnRa+6B4Fh9/w0= github.com/libp2p/go-libp2p-kad-dht v0.11.0/go.mod h1:5ojtR2acDPqh/jXf5orWy8YGb8bHQDS+qeDcoscL/PI= github.com/libp2p/go-libp2p-kad-dht v0.12.2 h1:INBYK7pEPzka5TrAWB2II+PYLeEaRlu6RWIoukfEBFQ= github.com/libp2p/go-libp2p-kad-dht v0.12.2/go.mod h1:mznpWRg0Nbkr9PB2Dm9XWN24V2BChE3FT1dHmwaDVws= github.com/libp2p/go-libp2p-kbucket v0.2.1/go.mod h1:/Rtu8tqbJ4WQ2KTCOMJhggMukOLNLNPY1EtEWWLxUvc= github.com/libp2p/go-libp2p-kbucket v0.3.1/go.mod h1:oyjT5O7tS9CQurok++ERgc46YLwEpuGoFq9ubvoUOio= github.com/libp2p/go-libp2p-kbucket v0.4.7 h1:spZAcgxifvFZHBD8tErvppbnNiKA5uokDu3CV7axu70= github.com/libp2p/go-libp2p-kbucket v0.4.7/go.mod h1:XyVo99AfQH0foSf176k4jY1xUJ2+jUJIZCSDm7r2YKk= github.com/libp2p/go-libp2p-loggables v0.0.1/go.mod h1:lDipDlBNYbpyqyPX/KcoO+eq0sJYEVR2JgOexcivchg= github.com/libp2p/go-libp2p-loggables v0.1.0 h1:h3w8QFfCt2UJl/0/NW4K829HX/0S4KD31PQ7m8UXXO8= github.com/libp2p/go-libp2p-loggables v0.1.0/go.mod h1:EyumB2Y6PrYjr55Q3/tiJ/o3xoDasoRYM7nOzEpoa90= github.com/libp2p/go-libp2p-metrics v0.0.1/go.mod h1:jQJ95SXXA/K1VZi13h52WZMa9ja78zjyy5rspMsC/08= github.com/libp2p/go-libp2p-mplex v0.1.1/go.mod h1:KUQWpGkCzfV7UIpi8SKsAVxyBgz1c9R5EvxgnwLsb/I= github.com/libp2p/go-libp2p-mplex v0.2.0/go.mod h1:Ejl9IyjvXJ0T9iqUTE1jpYATQ9NM3g+OtR+EMMODbKo= github.com/libp2p/go-libp2p-mplex v0.2.1/go.mod h1:SC99Rxs8Vuzrf/6WhmH41kNn13TiYdAWNYHrwImKLnE= github.com/libp2p/go-libp2p-mplex v0.2.2/go.mod h1:74S9eum0tVQdAfFiKxAyKzNdSuLqw5oadDq7+L/FELo= github.com/libp2p/go-libp2p-mplex v0.2.3/go.mod h1:CK3p2+9qH9x+7ER/gWWDYJ3QW5ZxWDkm+dVvjfuG3ek= github.com/libp2p/go-libp2p-mplex v0.3.0/go.mod h1:l9QWxRbbb5/hQMECEb908GbS9Sm2UAR2KFZKUJEynEs= github.com/libp2p/go-libp2p-mplex v0.4.0/go.mod h1:yCyWJE2sc6TBTnFpjvLuEJgTSw/u+MamvzILKdX7asw= github.com/libp2p/go-libp2p-mplex v0.4.1 h1:/pyhkP1nLwjG3OM+VuaNJkQT/Pqq73WzB3aDN3Fx1sc= github.com/libp2p/go-libp2p-mplex v0.4.1/go.mod h1:cmy+3GfqfM1PceHTLL7zQzAAYaryDu6iPSC+CIb094g= github.com/libp2p/go-libp2p-nat v0.0.2/go.mod h1:QrjXQSD5Dj4IJOdEcjHRkWTSomyxRo6HnUkf/TfQpLQ= github.com/libp2p/go-libp2p-nat v0.0.4/go.mod h1:N9Js/zVtAXqaeT99cXgTV9e75KpnWCvVOiGzlcHmBbY= github.com/libp2p/go-libp2p-nat v0.0.5/go.mod h1:1qubaE5bTZMJE+E/uu2URroMbzdubFz1ChgiN79yKPE= github.com/libp2p/go-libp2p-nat v0.0.6 h1:wMWis3kYynCbHoyKLPBEMu4YRLltbm8Mk08HGSfvTkU= github.com/libp2p/go-libp2p-nat v0.0.6/go.mod h1:iV59LVhB3IkFvS6S6sauVTSOrNEANnINbI/fkaLimiw= github.com/libp2p/go-libp2p-net v0.0.1/go.mod h1:Yt3zgmlsHOgUWSXmt5V/Jpz9upuJBE8EgNU9DrCcR8c= github.com/libp2p/go-libp2p-net v0.0.2/go.mod h1:Yt3zgmlsHOgUWSXmt5V/Jpz9upuJBE8EgNU9DrCcR8c= github.com/libp2p/go-libp2p-netutil v0.0.1/go.mod h1:GdusFvujWZI9Vt0X5BKqwWWmZFxecf9Gt03cKxm2f/Q= github.com/libp2p/go-libp2p-netutil v0.1.0 h1:zscYDNVEcGxyUpMd0JReUZTrpMfia8PmLKcKF72EAMQ= github.com/libp2p/go-libp2p-netutil v0.1.0/go.mod h1:3Qv/aDqtMLTUyQeundkKsA+YCThNdbQD54k3TqjpbFU= github.com/libp2p/go-libp2p-noise v0.1.1/go.mod h1:QDFLdKX7nluB7DEnlVPbz7xlLHdwHFA9HiohJRr3vwM= github.com/libp2p/go-libp2p-noise v0.1.2/go.mod h1:9B10b7ueo7TIxZHHcjcDCo5Hd6kfKT2m77by82SFRfE= github.com/libp2p/go-libp2p-noise v0.2.0 h1:wmk5nhB9a2w2RxMOyvsoKjizgJOEaJdfAakr0jN8gds= github.com/libp2p/go-libp2p-noise v0.2.0/go.mod h1:IEbYhBBzGyvdLBoxxULL/SGbJARhUeqlO8lVSREYu2Q= github.com/libp2p/go-libp2p-peer v0.0.1/go.mod h1:nXQvOBbwVqoP+T5Y5nCjeH4sP9IX/J0AMzcDUVruVoo= github.com/libp2p/go-libp2p-peer v0.1.1/go.mod h1:jkF12jGB4Gk/IOo+yomm+7oLWxF278F7UnrYUQ1Q8es= github.com/libp2p/go-libp2p-peer v0.2.0 h1:EQ8kMjaCUwt/Y5uLgjT8iY2qg0mGUT0N1zUjer50DsY= github.com/libp2p/go-libp2p-peer v0.2.0/go.mod h1:RCffaCvUyW2CJmG2gAWVqwePwW7JMgxjsHm7+J5kjWY= github.com/libp2p/go-libp2p-peerstore v0.0.1/go.mod h1:RabLyPVJLuNQ+GFyoEkfi8H4Ti6k/HtZJ7YKgtSq+20= github.com/libp2p/go-libp2p-peerstore v0.0.6/go.mod h1:RabLyPVJLuNQ+GFyoEkfi8H4Ti6k/HtZJ7YKgtSq+20= github.com/libp2p/go-libp2p-peerstore v0.1.0/go.mod h1:2CeHkQsr8svp4fZ+Oi9ykN1HBb6u0MOvdJ7YIsmcwtY= github.com/libp2p/go-libp2p-peerstore v0.1.3/go.mod h1:BJ9sHlm59/80oSkpWgr1MyY1ciXAXV397W6h1GH/uKI= github.com/libp2p/go-libp2p-peerstore v0.1.4/go.mod h1:+4BDbDiiKf4PzpANZDAT+knVdLxvqh7hXOujessqdzs= github.com/libp2p/go-libp2p-peerstore v0.2.0/go.mod h1:N2l3eVIeAitSg3Pi2ipSrJYnqhVnMNQZo9nkSCuAbnQ= github.com/libp2p/go-libp2p-peerstore v0.2.1/go.mod h1:NQxhNjWxf1d4w6PihR8btWIRjwRLBr4TYKfNgrUkOPA= github.com/libp2p/go-libp2p-peerstore v0.2.2/go.mod h1:NQxhNjWxf1d4w6PihR8btWIRjwRLBr4TYKfNgrUkOPA= github.com/libp2p/go-libp2p-peerstore v0.2.3/go.mod h1:K8ljLdFn590GMttg/luh4caB/3g0vKuY01psze0upRw= github.com/libp2p/go-libp2p-peerstore v0.2.4/go.mod h1:ss/TWTgHZTMpsU/oKVVPQCGuDHItOpf2W8RxAi50P2s= github.com/libp2p/go-libp2p-peerstore v0.2.6/go.mod h1:ss/TWTgHZTMpsU/oKVVPQCGuDHItOpf2W8RxAi50P2s= github.com/libp2p/go-libp2p-peerstore v0.2.7/go.mod h1:ss/TWTgHZTMpsU/oKVVPQCGuDHItOpf2W8RxAi50P2s= github.com/libp2p/go-libp2p-peerstore v0.2.8 h1:nJghUlUkFVvyk7ccsM67oFA6kqUkwyCM1G4WPVMCWYA= github.com/libp2p/go-libp2p-peerstore v0.2.8/go.mod h1:gGiPlXdz7mIHd2vfAsHzBNAMqSDkt2UBFwgcITgw1lA= github.com/libp2p/go-libp2p-pnet v0.2.0 h1:J6htxttBipJujEjz1y0a5+eYoiPcFHhSYHH6na5f0/k= github.com/libp2p/go-libp2p-pnet v0.2.0/go.mod h1:Qqvq6JH/oMZGwqs3N1Fqhv8NVhrdYcO0BW4wssv21LA= github.com/libp2p/go-libp2p-protocol v0.0.1/go.mod h1:Af9n4PiruirSDjHycM1QuiMi/1VZNHYcK8cLgFJLZ4s= github.com/libp2p/go-libp2p-protocol v0.1.0/go.mod h1:KQPHpAabB57XQxGrXCNvbL6UEXfQqUgC/1adR2Xtflk= github.com/libp2p/go-libp2p-pubsub v0.1.1/go.mod h1:ZwlKzRSe1eGvSIdU5bD7+8RZN/Uzw0t1Bp9R1znpR/Q= github.com/libp2p/go-libp2p-pubsub v0.3.2-0.20200527132641-c0712c6e92cf/go.mod h1:TxPOBuo1FPdsTjFnv+FGZbNbWYsp74Culx+4ViQpato= github.com/libp2p/go-libp2p-pubsub v0.4.1/go.mod h1:izkeMLvz6Ht8yAISXjx60XUQZMq9ZMe5h2ih4dLIBIQ= github.com/libp2p/go-libp2p-pubsub v0.5.0/go.mod h1:MKnrsQkFgPcrQs1KVmOXy6Uz2RDQ1xO7dQo/P0Ba+ig= github.com/libp2p/go-libp2p-pubsub v0.5.4 h1:rHl9/Xok4zX3zgi0pg0XnUj9Xj2OeXO8oTu85q2+YA8= github.com/libp2p/go-libp2p-pubsub v0.5.4/go.mod h1:gVOzwebXVdSMDQBTfH8ACO5EJ4SQrvsHqCmYsCZpD0E= github.com/libp2p/go-libp2p-quic-transport v0.1.1/go.mod h1:wqG/jzhF3Pu2NrhJEvE+IE0NTHNXslOPn9JQzyCAxzU= github.com/libp2p/go-libp2p-quic-transport v0.5.0/go.mod h1:IEcuC5MLxvZ5KuHKjRu+dr3LjCT1Be3rcD/4d8JrX8M= github.com/libp2p/go-libp2p-quic-transport v0.9.0/go.mod h1:xyY+IgxL0qsW7Kiutab0+NlxM0/p9yRtrGTYsuMWf70= github.com/libp2p/go-libp2p-quic-transport v0.10.0/go.mod h1:RfJbZ8IqXIhxBRm5hqUEJqjiiY8xmEuq3HUDS993MkA= github.com/libp2p/go-libp2p-quic-transport v0.11.1/go.mod h1:yleTY9UcxoGNaw1nEBjxomPbv7hs1voOZazGjqC3+1w= github.com/libp2p/go-libp2p-quic-transport v0.11.2 h1:p1YQDZRHH4Cv2LPtHubqlQ9ggz4CKng/REZuXZbZMhM= github.com/libp2p/go-libp2p-quic-transport v0.11.2/go.mod h1:wlanzKtIh6pHrq+0U3p3DY9PJfGqxMgPaGKaK5LifwQ= github.com/libp2p/go-libp2p-record v0.0.1/go.mod h1:grzqg263Rug/sRex85QrDOLntdFAymLDLm7lxMgU79Q= github.com/libp2p/go-libp2p-record v0.1.0/go.mod h1:ujNc8iuE5dlKWVy6wuL6dd58t0n7xI4hAIl8pE6wu5Q= github.com/libp2p/go-libp2p-record v0.1.1/go.mod h1:VRgKajOyMVgP/F0L5g3kH7SVskp17vFi2xheb5uMJtg= github.com/libp2p/go-libp2p-record v0.1.2/go.mod h1:pal0eNcT5nqZaTV7UGhqeGqxFgGdsU/9W//C8dqjQDk= github.com/libp2p/go-libp2p-record v0.1.3 h1:R27hoScIhQf/A8XJZ8lYpnqh9LatJ5YbHs28kCIfql0= github.com/libp2p/go-libp2p-record v0.1.3/go.mod h1:yNUff/adKIfPnYQXgp6FQmNu3gLJ6EMg7+/vv2+9pY4= github.com/libp2p/go-libp2p-routing v0.0.1/go.mod h1:N51q3yTr4Zdr7V8Jt2JIktVU+3xBBylx1MZeVA6t1Ys= github.com/libp2p/go-libp2p-routing v0.1.0/go.mod h1:zfLhI1RI8RLEzmEaaPwzonRvXeeSHddONWkcTcB54nE= github.com/libp2p/go-libp2p-routing-helpers v0.2.3 h1:xY61alxJ6PurSi+MXbywZpelvuU4U4p/gPTxjqCqTzY= github.com/libp2p/go-libp2p-routing-helpers v0.2.3/go.mod h1:795bh+9YeoFl99rMASoiVgHdi5bjack0N1+AFAdbvBw= github.com/libp2p/go-libp2p-secio v0.0.1/go.mod h1:IdG6iQybdcYmbTzxp4J5dwtUEDTOvZrT0opIDVNPrJs= github.com/libp2p/go-libp2p-secio v0.0.3/go.mod h1:hS7HQ00MgLhRO/Wyu1bTX6ctJKhVpm+j2/S2A5UqYb0= github.com/libp2p/go-libp2p-secio v0.1.0/go.mod h1:tMJo2w7h3+wN4pgU2LSYeiKPrfqBgkOsdiKK77hE7c8= github.com/libp2p/go-libp2p-secio v0.2.0/go.mod h1:2JdZepB8J5V9mBp79BmwsaPQhRPNN2NrnB2lKQcdy6g= github.com/libp2p/go-libp2p-secio v0.2.1/go.mod h1:cWtZpILJqkqrSkiYcDBh5lA3wbT2Q+hz3rJQq3iftD8= github.com/libp2p/go-libp2p-secio v0.2.2/go.mod h1:wP3bS+m5AUnFA+OFO7Er03uO1mncHG0uVwGrwvjYlNY= github.com/libp2p/go-libp2p-swarm v0.0.1/go.mod h1:mh+KZxkbd3lQnveQ3j2q60BM1Cw2mX36XXQqwfPOShs= github.com/libp2p/go-libp2p-swarm v0.0.6/go.mod h1:s5GZvzg9xXe8sbeESuFpjt8CJPTCa8mhEusweJqyFy8= github.com/libp2p/go-libp2p-swarm v0.1.0/go.mod h1:wQVsCdjsuZoc730CgOvh5ox6K8evllckjebkdiY5ta4= github.com/libp2p/go-libp2p-swarm v0.2.1/go.mod h1:x07b4zkMFo2EvgPV2bMTlNmdQc8i+74Jjio7xGvsTgU= github.com/libp2p/go-libp2p-swarm v0.2.2/go.mod h1:fvmtQ0T1nErXym1/aa1uJEyN7JzaTNyBcHImCxRpPKU= github.com/libp2p/go-libp2p-swarm v0.2.3/go.mod h1:P2VO/EpxRyDxtChXz/VPVXyTnszHvokHKRhfkEgFKNM= github.com/libp2p/go-libp2p-swarm v0.2.4/go.mod h1:/xIpHFPPh3wmSthtxdGbkHZ0OET1h/GGZes8Wku/M5Y= github.com/libp2p/go-libp2p-swarm v0.2.7/go.mod h1:ZSJ0Q+oq/B1JgfPHJAT2HTall+xYRNYp1xs4S2FBWKA= github.com/libp2p/go-libp2p-swarm v0.2.8/go.mod h1:JQKMGSth4SMqonruY0a8yjlPVIkb0mdNSwckW7OYziM= github.com/libp2p/go-libp2p-swarm v0.3.0/go.mod h1:hdv95GWCTmzkgeJpP+GK/9D9puJegb7H57B5hWQR5Kk= github.com/libp2p/go-libp2p-swarm v0.3.1/go.mod h1:hdv95GWCTmzkgeJpP+GK/9D9puJegb7H57B5hWQR5Kk= github.com/libp2p/go-libp2p-swarm v0.4.0/go.mod h1:XVFcO52VoLoo0eitSxNQWYq4D6sydGOweTOAjJNraCw= github.com/libp2p/go-libp2p-swarm v0.4.3/go.mod h1:mmxP1pGBSc1Arw4F5DIjcpjFAmsRzA1KADuMtMuCT4g= github.com/libp2p/go-libp2p-swarm v0.5.0/go.mod h1:sU9i6BoHE0Ve5SKz3y9WfKrh8dUat6JknzUehFx8xW4= github.com/libp2p/go-libp2p-swarm v0.5.3 h1:hsYaD/y6+kZff1o1Mc56NcuwSg80lIphTS/zDk3mO4M= github.com/libp2p/go-libp2p-swarm v0.5.3/go.mod h1:NBn7eNW2lu568L7Ns9wdFrOhgRlkRnIDg0FLKbuu3i8= github.com/libp2p/go-libp2p-testing v0.0.1/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= github.com/libp2p/go-libp2p-testing v0.0.2/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= github.com/libp2p/go-libp2p-testing v0.0.3/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= github.com/libp2p/go-libp2p-testing v0.0.4/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= github.com/libp2p/go-libp2p-testing v0.1.0/go.mod h1:xaZWMJrPUM5GlDBxCeGUi7kI4eqnjVyavGroI2nxEM0= github.com/libp2p/go-libp2p-testing v0.1.1/go.mod h1:xaZWMJrPUM5GlDBxCeGUi7kI4eqnjVyavGroI2nxEM0= github.com/libp2p/go-libp2p-testing v0.1.2-0.20200422005655-8775583591d8/go.mod h1:Qy8sAncLKpwXtS2dSnDOP8ktexIAHKu+J+pnZOFZLTc= github.com/libp2p/go-libp2p-testing v0.3.0/go.mod h1:efZkql4UZ7OVsEfaxNHZPzIehtsBXMrXnCfJIgDti5g= github.com/libp2p/go-libp2p-testing v0.4.0/go.mod h1:Q+PFXYoiYFN5CAEG2w3gLPEzotlKsNSbKQ/lImlOWF0= github.com/libp2p/go-libp2p-testing v0.4.2 h1:IOiA5mMigi+eEjf4J+B7fepDhsjtsoWA9QbsCqbNp5U= github.com/libp2p/go-libp2p-testing v0.4.2/go.mod h1:Q+PFXYoiYFN5CAEG2w3gLPEzotlKsNSbKQ/lImlOWF0= github.com/libp2p/go-libp2p-tls v0.1.3 h1:twKMhMu44jQO+HgQK9X8NHO5HkeJu2QbhLzLJpa8oNM= github.com/libp2p/go-libp2p-tls v0.1.3/go.mod h1:wZfuewxOndz5RTnCAxFliGjvYSDA40sKitV4c50uI1M= github.com/libp2p/go-libp2p-transport v0.0.1/go.mod h1:UzbUs9X+PHOSw7S3ZmeOxfnwaQY5vGDzZmKPod3N3tk= github.com/libp2p/go-libp2p-transport v0.0.4/go.mod h1:StoY3sx6IqsP6XKoabsPnHCwqKXWUMWU7Rfcsubee/A= github.com/libp2p/go-libp2p-transport v0.0.5/go.mod h1:StoY3sx6IqsP6XKoabsPnHCwqKXWUMWU7Rfcsubee/A= github.com/libp2p/go-libp2p-transport-upgrader v0.0.1/go.mod h1:NJpUAgQab/8K6K0m+JmZCe5RUXG10UMEx4kWe9Ipj5c= github.com/libp2p/go-libp2p-transport-upgrader v0.0.4/go.mod h1:RGq+tupk+oj7PzL2kn/m1w6YXxcIAYJYeI90h6BGgUc= github.com/libp2p/go-libp2p-transport-upgrader v0.1.1/go.mod h1:IEtA6or8JUbsV07qPW4r01GnTenLW4oi3lOPbUMGJJA= github.com/libp2p/go-libp2p-transport-upgrader v0.2.0/go.mod h1:mQcrHj4asu6ArfSoMuyojOdjx73Q47cYD7s5+gZOlns= github.com/libp2p/go-libp2p-transport-upgrader v0.3.0/go.mod h1:i+SKzbRnvXdVbU3D1dwydnTmKRPXiAR/fyvi1dXuL4o= github.com/libp2p/go-libp2p-transport-upgrader v0.4.0/go.mod h1:J4ko0ObtZSmgn5BX5AmegP+dK3CSnU2lMCKsSq/EY0s= github.com/libp2p/go-libp2p-transport-upgrader v0.4.2/go.mod h1:NR8ne1VwfreD5VIWIU62Agt/J18ekORFU/j1i2y8zvk= github.com/libp2p/go-libp2p-transport-upgrader v0.4.6 h1:SHt3g0FslnqIkEWF25YOB8UCOCTpGAVvHRWQYJ+veiI= github.com/libp2p/go-libp2p-transport-upgrader v0.4.6/go.mod h1:JE0WQuQdy+uLZ5zOaI3Nw9dWGYJIA7mywEtP2lMvnyk= github.com/libp2p/go-libp2p-xor v0.0.0-20200501025846-71e284145d58/go.mod h1:AYjOiqJIdcmI4SXE2ouKQuFrUbE5myv8txWaB2pl4TI= github.com/libp2p/go-libp2p-yamux v0.1.2/go.mod h1:xUoV/RmYkg6BW/qGxA9XJyg+HzXFYkeXbnhjmnYzKp8= github.com/libp2p/go-libp2p-yamux v0.1.3/go.mod h1:VGSQVrqkh6y4nm0189qqxMtvyBft44MOYYPpYKXiVt4= github.com/libp2p/go-libp2p-yamux v0.2.0/go.mod h1:Db2gU+XfLpm6E4rG5uGCFX6uXA8MEXOxFcRoXUODaK8= github.com/libp2p/go-libp2p-yamux v0.2.1/go.mod h1:1FBXiHDk1VyRM1C0aez2bCfHQ4vMZKkAQzZbkSQt5fI= github.com/libp2p/go-libp2p-yamux v0.2.2/go.mod h1:lIohaR0pT6mOt0AZ0L2dFze9hds9Req3OfS+B+dv4qw= github.com/libp2p/go-libp2p-yamux v0.2.5/go.mod h1:Zpgj6arbyQrmZ3wxSZxfBmbdnWtbZ48OpsfmQVTErwA= github.com/libp2p/go-libp2p-yamux v0.2.7/go.mod h1:X28ENrBMU/nm4I3Nx4sZ4dgjZ6VhLEn0XhIoZ5viCwU= github.com/libp2p/go-libp2p-yamux v0.2.8/go.mod h1:/t6tDqeuZf0INZMTgd0WxIRbtK2EzI2h7HbFm9eAKI4= github.com/libp2p/go-libp2p-yamux v0.4.0/go.mod h1:+DWDjtFMzoAwYLVkNZftoucn7PelNoy5nm3tZ3/Zw30= github.com/libp2p/go-libp2p-yamux v0.4.1/go.mod h1:FA/NjRYRVNjqOzpGuGqcruH7jAU2mYIjtKBicVOL3dc= github.com/libp2p/go-libp2p-yamux v0.5.0/go.mod h1:AyR8k5EzyM2QN9Bbdg6X1SkVVuqLwTGf0L4DFq9g6po= github.com/libp2p/go-libp2p-yamux v0.5.1/go.mod h1:dowuvDu8CRWmr0iqySMiSxK+W0iL5cMVO9S94Y6gkv4= github.com/libp2p/go-libp2p-yamux v0.5.4 h1:/UOPtT/6DHPtr3TtKXBHa6g0Le0szYuI33Xc/Xpd7fQ= github.com/libp2p/go-libp2p-yamux v0.5.4/go.mod h1:tfrXbyaTqqSU654GTvK3ocnSZL3BuHoeTSqhcel1wsE= github.com/libp2p/go-maddr-filter v0.0.1/go.mod h1:6eT12kSQMA9x2pvFQa+xesMKUBlj9VImZbj3B9FBH/Q= github.com/libp2p/go-maddr-filter v0.0.4/go.mod h1:6eT12kSQMA9x2pvFQa+xesMKUBlj9VImZbj3B9FBH/Q= github.com/libp2p/go-maddr-filter v0.0.5/go.mod h1:Jk+36PMfIqCJhAnaASRH83bdAvfDRp/w6ENFaC9bG+M= github.com/libp2p/go-maddr-filter v0.1.0 h1:4ACqZKw8AqiuJfwFGq1CYDFugfXTOos+qQ3DETkhtCE= github.com/libp2p/go-maddr-filter v0.1.0/go.mod h1:VzZhTXkMucEGGEOSKddrwGiOv0tUhgnKqNEmIAz/bPU= github.com/libp2p/go-mplex v0.0.1/go.mod h1:pK5yMLmOoBR1pNCqDlA2GQrdAVTMkqFalaTWe7l4Yd0= github.com/libp2p/go-mplex v0.0.3/go.mod h1:pK5yMLmOoBR1pNCqDlA2GQrdAVTMkqFalaTWe7l4Yd0= github.com/libp2p/go-mplex v0.0.4/go.mod h1:pK5yMLmOoBR1pNCqDlA2GQrdAVTMkqFalaTWe7l4Yd0= github.com/libp2p/go-mplex v0.1.0/go.mod h1:SXgmdki2kwCUlCCbfGLEgHjC4pFqhTp0ZoV6aiKgxDU= github.com/libp2p/go-mplex v0.1.1/go.mod h1:Xgz2RDCi3co0LeZfgjm4OgUF15+sVR8SRcu3SFXI1lk= github.com/libp2p/go-mplex v0.1.2/go.mod h1:Xgz2RDCi3co0LeZfgjm4OgUF15+sVR8SRcu3SFXI1lk= github.com/libp2p/go-mplex v0.2.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ6msjvYQ= github.com/libp2p/go-mplex v0.3.0 h1:U1T+vmCYJaEoDJPV1aq31N56hS+lJgb397GsylNSgrU= github.com/libp2p/go-mplex v0.3.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ6msjvYQ= github.com/libp2p/go-msgio v0.0.1/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= github.com/libp2p/go-msgio v0.0.2/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= github.com/libp2p/go-msgio v0.0.3/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= github.com/libp2p/go-msgio v0.0.4/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= github.com/libp2p/go-msgio v0.0.6 h1:lQ7Uc0kS1wb1EfRxO2Eir/RJoHkHn7t6o+EiwsYIKJA= github.com/libp2p/go-msgio v0.0.6/go.mod h1:4ecVB6d9f4BDSL5fqvPiC4A3KivjWn+Venn/1ALLMWA= github.com/libp2p/go-nat v0.0.3/go.mod h1:88nUEt0k0JD45Bk93NIwDqjlhiOwOoV36GchpcVc1yI= github.com/libp2p/go-nat v0.0.4/go.mod h1:Nmw50VAvKuk38jUBcmNh6p9lUJLoODbJRvYAa/+KSDo= github.com/libp2p/go-nat v0.0.5 h1:qxnwkco8RLKqVh1NmjQ+tJ8p8khNLFxuElYG/TwqW4Q= github.com/libp2p/go-nat v0.0.5/go.mod h1:B7NxsVNPZmRLvMOwiEO1scOSyjA56zxYAGv1yQgRkEU= github.com/libp2p/go-netroute v0.1.2/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk= github.com/libp2p/go-netroute v0.1.3/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk= github.com/libp2p/go-netroute v0.1.5/go.mod h1:V1SR3AaECRkEQCoFFzYwVYWvYIEtlxx89+O3qcpCl4A= github.com/libp2p/go-netroute v0.1.6 h1:ruPJStbYyXVYGQ81uzEDzuvbYRLKRrLvTYd33yomC38= github.com/libp2p/go-netroute v0.1.6/go.mod h1:AqhkMh0VuWmfgtxKPp3Oc1LdU5QSWS7wl0QLhSZqXxQ= github.com/libp2p/go-openssl v0.0.2/go.mod h1:v8Zw2ijCSWBQi8Pq5GAixw6DbFfa9u6VIYDXnvOXkc0= github.com/libp2p/go-openssl v0.0.3/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= github.com/libp2p/go-openssl v0.0.4/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= github.com/libp2p/go-openssl v0.0.5/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= github.com/libp2p/go-openssl v0.0.7 h1:eCAzdLejcNVBzP/iZM9vqHnQm+XyCEbSSIheIPRGNsw= github.com/libp2p/go-openssl v0.0.7/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= github.com/libp2p/go-reuseport v0.0.1/go.mod h1:jn6RmB1ufnQwl0Q1f+YxAj8isJgDCQzaaxIFYDhcYEA= github.com/libp2p/go-reuseport v0.0.2 h1:XSG94b1FJfGA01BUrT82imejHQyTxO4jEWqheyCXYvU= github.com/libp2p/go-reuseport v0.0.2/go.mod h1:SPD+5RwGC7rcnzngoYC86GjPzjSywuQyMVAheVBD9nQ= github.com/libp2p/go-reuseport-transport v0.0.1/go.mod h1:YkbSDrvjUVDL6b8XqriyA20obEtsW9BLkuOUyQAOCbs= github.com/libp2p/go-reuseport-transport v0.0.2/go.mod h1:YkbSDrvjUVDL6b8XqriyA20obEtsW9BLkuOUyQAOCbs= github.com/libp2p/go-reuseport-transport v0.0.3/go.mod h1:Spv+MPft1exxARzP2Sruj2Wb5JSyHNncjf1Oi2dEbzM= github.com/libp2p/go-reuseport-transport v0.0.4/go.mod h1:trPa7r/7TJK/d+0hdBLOCGvpQQVOU74OXbNCIMkufGw= github.com/libp2p/go-reuseport-transport v0.0.5 h1:lJzi+vSYbyJj2faPKLxNGWEIBcaV/uJmyvsUxXy2mLw= github.com/libp2p/go-reuseport-transport v0.0.5/go.mod h1:TC62hhPc8qs5c/RoXDZG6YmjK+/YWUPC0yYmeUecbjc= github.com/libp2p/go-sockaddr v0.0.2/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= github.com/libp2p/go-sockaddr v0.1.0/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= github.com/libp2p/go-sockaddr v0.1.1 h1:yD80l2ZOdGksnOyHrhxDdTDFrf7Oy+v3FMVArIRgZxQ= github.com/libp2p/go-sockaddr v0.1.1/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= github.com/libp2p/go-stream-muxer v0.0.1/go.mod h1:bAo8x7YkSpadMTbtTaxGVHWUQsR/l5MEaHbKaliuT14= github.com/libp2p/go-stream-muxer v0.1.0/go.mod h1:8JAVsjeRBCWwPoZeH0W1imLOcriqXJyFvB0mR4A04sQ= github.com/libp2p/go-stream-muxer-multistream v0.1.1/go.mod h1:zmGdfkQ1AzOECIAcccoL8L//laqawOsO03zX8Sa+eGw= github.com/libp2p/go-stream-muxer-multistream v0.2.0/go.mod h1:j9eyPol/LLRqT+GPLSxvimPhNph4sfYfMoDPd7HkzIc= github.com/libp2p/go-stream-muxer-multistream v0.3.0 h1:TqnSHPJEIqDEO7h1wZZ0p3DXdvDSiLHQidKKUGZtiOY= github.com/libp2p/go-stream-muxer-multistream v0.3.0/go.mod h1:yDh8abSIzmZtqtOt64gFJUXEryejzNb0lisTt+fAMJA= github.com/libp2p/go-tcp-transport v0.0.1/go.mod h1:mnjg0o0O5TmXUaUIanYPUqkW4+u6mK0en8rlpA6BBTs= github.com/libp2p/go-tcp-transport v0.0.4/go.mod h1:+E8HvC8ezEVOxIo3V5vCK9l1y/19K427vCzQ+xHKH/o= github.com/libp2p/go-tcp-transport v0.1.0/go.mod h1:oJ8I5VXryj493DEJ7OsBieu8fcg2nHGctwtInJVpipc= github.com/libp2p/go-tcp-transport v0.1.1/go.mod h1:3HzGvLbx6etZjnFlERyakbaYPdfjg2pWP97dFZworkY= github.com/libp2p/go-tcp-transport v0.2.0/go.mod h1:vX2U0CnWimU4h0SGSEsg++AzvBcroCGYw28kh94oLe0= github.com/libp2p/go-tcp-transport v0.2.1/go.mod h1:zskiJ70MEfWz2MKxvFB/Pv+tPIB1PpPUrHIWQ8aFw7M= github.com/libp2p/go-tcp-transport v0.2.3/go.mod h1:9dvr03yqrPyYGIEN6Dy5UvdJZjyPFvl1S/igQ5QD1SU= github.com/libp2p/go-tcp-transport v0.2.4/go.mod h1:9dvr03yqrPyYGIEN6Dy5UvdJZjyPFvl1S/igQ5QD1SU= github.com/libp2p/go-tcp-transport v0.2.7 h1:Z8Kc/Kb8tD84WiaH55xAlaEnkqzrp88jSEySCKV4+gg= github.com/libp2p/go-tcp-transport v0.2.7/go.mod h1:lue9p1b3VmZj1MhhEGB/etmvF/nBQ0X9CW2DutBT3MM= github.com/libp2p/go-testutil v0.0.1/go.mod h1:iAcJc/DKJQanJ5ws2V+u5ywdL2n12X1WbbEG+Jjy69I= github.com/libp2p/go-testutil v0.1.0/go.mod h1:81b2n5HypcVyrCg/MJx4Wgfp/VHojytjVe/gLzZ2Ehc= github.com/libp2p/go-ws-transport v0.0.1/go.mod h1:p3bKjDWHEgtuKKj+2OdPYs5dAPIjtpQGHF2tJfGz7Ww= github.com/libp2p/go-ws-transport v0.0.5/go.mod h1:Qbl4BxPfXXhhd/o0wcrgoaItHqA9tnZjoFZnxykuaXU= github.com/libp2p/go-ws-transport v0.1.0/go.mod h1:rjw1MG1LU9YDC6gzmwObkPd/Sqwhw7yT74kj3raBFuo= github.com/libp2p/go-ws-transport v0.1.2/go.mod h1:dsh2Ld8F+XNmzpkaAijmg5Is+e9l6/1tK/6VFOdN69Y= github.com/libp2p/go-ws-transport v0.2.0/go.mod h1:9BHJz/4Q5A9ludYWKoGCFC5gUElzlHoKzu0yY9p/klM= github.com/libp2p/go-ws-transport v0.3.0/go.mod h1:bpgTJmRZAvVHrgHybCVyqoBmyLQ1fiZuEaBYusP5zsk= github.com/libp2p/go-ws-transport v0.3.1/go.mod h1:bpgTJmRZAvVHrgHybCVyqoBmyLQ1fiZuEaBYusP5zsk= github.com/libp2p/go-ws-transport v0.4.0 h1:9tvtQ9xbws6cA5LvqdE6Ne3vcmGB4f1z9SByggk4s0k= github.com/libp2p/go-ws-transport v0.4.0/go.mod h1:EcIEKqf/7GDjth6ksuS/6p7R49V4CBY6/E7R/iyhYUA= github.com/libp2p/go-yamux v1.2.1/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= github.com/libp2p/go-yamux v1.2.2/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= github.com/libp2p/go-yamux v1.2.3/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= github.com/libp2p/go-yamux v1.3.0/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= github.com/libp2p/go-yamux v1.3.3/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= github.com/libp2p/go-yamux v1.3.5/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= github.com/libp2p/go-yamux v1.3.6/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= github.com/libp2p/go-yamux v1.3.7/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE= github.com/libp2p/go-yamux v1.4.0/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE= github.com/libp2p/go-yamux v1.4.1 h1:P1Fe9vF4th5JOxxgQvfbOHkrGqIZniTLf+ddhZp8YTI= github.com/libp2p/go-yamux v1.4.1/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE= github.com/libp2p/go-yamux/v2 v2.0.0/go.mod h1:NVWira5+sVUIU6tu1JWvaRn1dRnG+cawOJiflsAM+7U= github.com/libp2p/go-yamux/v2 v2.2.0 h1:RwtpYZ2/wVviZ5+3pjC8qdQ4TKnrak0/E01N1UWoAFU= github.com/libp2p/go-yamux/v2 v2.2.0/go.mod h1:3So6P6TV6r75R9jiBpiIKgU/66lOarCZjqROGxzPpPQ= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381 h1:bqDmpDG49ZRnB5PcgP0RXtQvnMSgIF14M7CBd2shtXs= github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/lucas-clemente/quic-go v0.11.2/go.mod h1:PpMmPfPKO9nKJ/psF49ESTAGQSdfXxlg1otPbEB2nOw= github.com/lucas-clemente/quic-go v0.16.0/go.mod h1:I0+fcNTdb9eS1ZcjQZbDVPGchJ86chcIxPALn9lEJqE= github.com/lucas-clemente/quic-go v0.18.1/go.mod h1:yXttHsSNxQi8AWijC/vLP+OJczXqzHSOcJrM5ITUlCg= github.com/lucas-clemente/quic-go v0.19.3/go.mod h1:ADXpNbTQjq1hIzCpB+y/k5iz4n4z4IwqoLb94Kh5Hu8= github.com/lucas-clemente/quic-go v0.21.1/go.mod h1:U9kFi5LKbNIlU30dkuM9vxmTxWq4Bvzee/MjBI+07UA= github.com/lucas-clemente/quic-go v0.21.2 h1:8LqqL7nBQFDUINadW0fHV/xSaCQJgmJC0Gv+qUnjd78= github.com/lucas-clemente/quic-go v0.21.2/go.mod h1:vF5M1XqhBAHgbjKcJOXY3JZz3GP0T3FQhz/uyOUS38Q= github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/lufia/iostat v1.1.0/go.mod h1:rEPNA0xXgjHQjuI5Cy05sLlS2oRcSlWHRLrvh/AQ+Pg= github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= github.com/lunixbochs/vtclean v1.0.0 h1:xu2sLAri4lGiovBDQKxl5mrXyESr3gUr5m5SM5+LVb8= github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/manifoldco/promptui v0.7.0 h1:3l11YT8tm9MnwGFQ4kETwkzpAwY2Jt9lCrumCUW4+z4= github.com/manifoldco/promptui v0.7.0/go.mod h1:n4zTdgP0vr0S3w7/O/g98U+e0gwLScEXGwov2nIKuGQ= github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/marten-seemann/qpack v0.1.0/go.mod h1:LFt1NU/Ptjip0C2CPkhimBz5CGE3WGDAUWqna+CNTrI= github.com/marten-seemann/qpack v0.2.0/go.mod h1:F7Gl5L1jIgN1D11ucXefiuJS9UMVP2opoCp2jDKb7wc= github.com/marten-seemann/qpack v0.2.1/go.mod h1:F7Gl5L1jIgN1D11ucXefiuJS9UMVP2opoCp2jDKb7wc= github.com/marten-seemann/qtls v0.2.3/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwmjgmPuiQEcYk= github.com/marten-seemann/qtls v0.9.1/go.mod h1:T1MmAdDPyISzxlK6kjRr0pcZFBVd1OZbBb/j3cvzHhk= github.com/marten-seemann/qtls v0.10.0/go.mod h1:UvMd1oaYDACI99/oZUYLzMCkBXQVT0aGm99sJhbT8hs= github.com/marten-seemann/qtls-go1-15 v0.1.0/go.mod h1:GyFwywLKkRt+6mfU99csTEY1joMZz5vmB1WNZH3P81I= github.com/marten-seemann/qtls-go1-15 v0.1.1/go.mod h1:GyFwywLKkRt+6mfU99csTEY1joMZz5vmB1WNZH3P81I= github.com/marten-seemann/qtls-go1-15 v0.1.4/go.mod h1:GyFwywLKkRt+6mfU99csTEY1joMZz5vmB1WNZH3P81I= github.com/marten-seemann/qtls-go1-15 v0.1.5 h1:Ci4EIUN6Rlb+D6GmLdej/bCQ4nPYNtVXQB+xjiXE1nk= github.com/marten-seemann/qtls-go1-15 v0.1.5/go.mod h1:GyFwywLKkRt+6mfU99csTEY1joMZz5vmB1WNZH3P81I= github.com/marten-seemann/qtls-go1-16 v0.1.3/go.mod h1:gNpI2Ol+lRS3WwSOtIUUtRwZEQMXjYK+dQSBFbethAk= github.com/marten-seemann/qtls-go1-16 v0.1.4 h1:xbHbOGGhrenVtII6Co8akhLEdrawwB2iHl5yhJRpnco= github.com/marten-seemann/qtls-go1-16 v0.1.4/go.mod h1:gNpI2Ol+lRS3WwSOtIUUtRwZEQMXjYK+dQSBFbethAk= github.com/marten-seemann/qtls-go1-17 v0.1.0-beta.1.2/go.mod h1:fz4HIxByo+LlWcreM4CZOYNuz3taBQ8rN2X6FqvaWo8= github.com/marten-seemann/qtls-go1-17 v0.1.0-rc.1 h1:/rpmWuGvceLwwWuaKPdjpR4JJEUH0tq64/I3hvzaNLM= github.com/marten-seemann/qtls-go1-17 v0.1.0-rc.1/go.mod h1:fz4HIxByo+LlWcreM4CZOYNuz3taBQ8rN2X6FqvaWo8= github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk= github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU= github.com/mattn/go-colorable v0.0.0-20170327083344-ded68f7a9561/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= 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.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.13 h1:qdl+GuBjcsKKDco5BsxPJlId98mSWNKqYA+Co0SC1yA= github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.10 h1:CoZ3S2P7pvtP45xOtBw+/mDL2z0RKI576gSkzRRpdGg= github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-xmlrpc v0.0.3/go.mod h1:mqc2dz7tP5x5BKlCahN/n+hs7OSZKJkS9JsHNBRlrxA= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mdlayher/genetlink v1.0.0/go.mod h1:0rJ0h4itni50A86M2kHcgS85ttZazNt7a8H2a2cw0Gc= github.com/mdlayher/netlink v0.0.0-20190409211403-11939a169225/go.mod h1:eQB3mZE4aiYnlUsyGGCOpPETfdQq4Jhsgf1fk3cwQaA= github.com/mdlayher/netlink v0.0.0-20190828143259-340058475d09/go.mod h1:KxeJAFOFLG6AjpyDkQ/iIhxygIUKD+vcwqcnu43w/+M= github.com/mdlayher/netlink v1.0.0/go.mod h1:KxeJAFOFLG6AjpyDkQ/iIhxygIUKD+vcwqcnu43w/+M= github.com/mdlayher/netlink v1.1.0/go.mod h1:H4WCitaheIsdF9yOYu8CFmCgQthAPIWZmcKp9uZHgmY= github.com/mdlayher/wifi v0.0.0-20190303161829-b1436901ddee/go.mod h1:Evt/EIne46u9PtQbeTx2NTcqURpr5K4SvKtGmBuDPN8= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.4/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.12/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.28/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/miekg/dns v1.1.41 h1:WMszZWJG0XmzbK9FEmzH2TVcqYzFesusSIB41b8KHxY= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c h1:bzE/A84HN25pxAuk9Eej1Kz9OUelF97nAc82bDquQI8= github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms= github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b h1:z78hV3sbSMAUoyUMM0I83AUIT6Hu17AWfgjzIbtrYFc= github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b/go.mod h1:lxPUiZwKoFL8DUUmalo2yJJUCxbPKtm8OKfqr2/FTNU= github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc h1:PTfri+PuQmWDqERdnNMiD9ZejrlswWrCpBEZgWOiTrc= github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s= github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 h1:lYpkrQH5ajf0OXOcUbGjvZxxijuBwbbmlSxLiuofa+g= github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= github.com/minio/sha256-simd v0.0.0-20190328051042-05b4dd3047e5/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= github.com/minio/sha256-simd v0.1.0/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.0 h1:iDwIio/3gk2QtLLEsqU5lInaMzos0hDTz8a6lazSFVw= github.com/mitchellh/mapstructure v1.3.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mmcloughlin/avo v0.0.0-20201105074841-5d2f697d268f/go.mod h1:6aKT4zZIrpGqB3RpFU14ByCSSyKY6LfJz4J/JJChHfI= github.com/moby/term v0.0.0-20200915141129-7f0af18e79f2 h1:SPoLlS9qUUnXcIY4pvA4CTwYjk0Is5f4UPEkeESr53k= github.com/moby/term v0.0.0-20200915141129-7f0af18e79f2/go.mod h1:TjQg8pa4iejrUrjiz0MCtMV38jdMNW4doKSiBrEvCQQ= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= 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/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= github.com/mr-tron/base58 v1.1.1/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/muesli/reflow v0.2.0/go.mod h1:qT22vjVmM9MIUeLgsVYe/Ye7eZlbv9dZjL3dVhUqLX8= github.com/muesli/reflow v0.2.1-0.20210115123740-9e1d0d53df68/go.mod h1:Xk+z4oIWdQqJzsxyjgl3P22oYZnHdZ8FFTHAQQt5BMQ= github.com/muesli/termenv v0.7.2/go.mod h1:ct2L5N2lmix82RaY3bMWwVu/jUFc9Ule0KGDCiKYPh8= github.com/muesli/termenv v0.7.4/go.mod h1:pZ7qY9l3F7e5xsAOS0zCew2tME+p7bWeBkotCEcIIcc= github.com/multiformats/go-base32 v0.0.3 h1:tw5+NhuwaOjJCC5Pp82QuXbrmLzWg7uxlMFp8Nq/kkI= github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA= github.com/multiformats/go-base36 v0.1.0 h1:JR6TyF7JjGd3m6FbLU2cOxhC0Li8z8dLNGQ89tUg4F4= github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= github.com/multiformats/go-multiaddr v0.0.1/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= github.com/multiformats/go-multiaddr v0.0.2/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= github.com/multiformats/go-multiaddr v0.0.4/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= github.com/multiformats/go-multiaddr v0.1.0/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= github.com/multiformats/go-multiaddr v0.2.1/go.mod h1:s/Apk6IyxfvMjDafnhJgJ3/46z7tZ04iMk5wP4QMGGE= github.com/multiformats/go-multiaddr v0.2.2/go.mod h1:NtfXiOtHvghW9KojvtySjH5y0u0xW5UouOmQQrn6a3Y= github.com/multiformats/go-multiaddr v0.3.0/go.mod h1:dF9kph9wfJ+3VLAaeBqo9Of8x4fJxp6ggJGteB8HQTI= github.com/multiformats/go-multiaddr v0.3.1/go.mod h1:uPbspcUPd5AfaP6ql3ujFY+QWzmBD8uLLL4bXW0XfGc= github.com/multiformats/go-multiaddr v0.3.3 h1:vo2OTSAqnENB2rLk79pLtr+uhj+VAzSe3uef5q0lRSs= github.com/multiformats/go-multiaddr v0.3.3/go.mod h1:lCKNGP1EQ1eZ35Za2wlqnabm9xQkib3fyB+nZXHLag0= github.com/multiformats/go-multiaddr-dns v0.0.1/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= github.com/multiformats/go-multiaddr-dns v0.0.2/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= github.com/multiformats/go-multiaddr-dns v0.0.3/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= github.com/multiformats/go-multiaddr-dns v0.1.0/go.mod h1:01k2RAqtoXIuPa3DCavAE9/6jc6nM0H3EgZyfUhN2oY= github.com/multiformats/go-multiaddr-dns v0.2.0/go.mod h1:TJ5pr5bBO7Y1B18djPuRsVkduhQH2YqYSbxWJzYGdK0= github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= github.com/multiformats/go-multiaddr-fmt v0.0.1/go.mod h1:aBYjqL4T/7j4Qx+R73XSv/8JsgnRFlf0w2KGLCmXl3Q= github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= github.com/multiformats/go-multiaddr-fmt v0.1.0/go.mod h1:hGtDIW4PU4BqJ50gW2quDuPVjyWNZxToGUh/HwTZYJo= github.com/multiformats/go-multiaddr-net v0.0.1/go.mod h1:nw6HSxNmCIQH27XPGBuX+d1tnvM7ihcFwHMSstNAVUU= github.com/multiformats/go-multiaddr-net v0.1.0/go.mod h1:5JNbcfBOP4dnhoZOv10JJVkJO0pCCEf8mTnipAo2UZQ= github.com/multiformats/go-multiaddr-net v0.1.1/go.mod h1:5JNbcfBOP4dnhoZOv10JJVkJO0pCCEf8mTnipAo2UZQ= github.com/multiformats/go-multiaddr-net v0.1.2/go.mod h1:QsWt3XK/3hwvNxZJp92iMQKME1qHfpYmyIjFVsSOY6Y= github.com/multiformats/go-multiaddr-net v0.1.3/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= github.com/multiformats/go-multiaddr-net v0.1.4/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= github.com/multiformats/go-multiaddr-net v0.1.5/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= github.com/multiformats/go-multiaddr-net v0.2.0 h1:MSXRGN0mFymt6B1yo/6BPnIRpLPEnKgQNvVfCX5VDJk= github.com/multiformats/go-multiaddr-net v0.2.0/go.mod h1:gGdH3UXny6U3cKKYCvpXI5rnK7YaOIEOPVDI9tsJbEA= github.com/multiformats/go-multibase v0.0.1/go.mod h1:bja2MqRZ3ggyXtZSEDKpl0uO/gviWFaSteVbWT51qgs= github.com/multiformats/go-multibase v0.0.2/go.mod h1:bja2MqRZ3ggyXtZSEDKpl0uO/gviWFaSteVbWT51qgs= github.com/multiformats/go-multibase v0.0.3 h1:l/B6bJDQjvQ5G52jw4QGSYeOTZoAwIO77RblWplfIqk= github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc= github.com/multiformats/go-multihash v0.0.1/go.mod h1:w/5tugSrLEbWqlcgJabL3oHFKTwfvkofsjW2Qa1ct4U= github.com/multiformats/go-multihash v0.0.5/go.mod h1:lt/HCbqlQwlPBz7lv0sQCdtfcMtlJvakRUn/0Ual8po= github.com/multiformats/go-multihash v0.0.7/go.mod h1:XuKXPp8VHcTygube3OWZC+aZrA+H1IhmjoCDtJc7PXM= github.com/multiformats/go-multihash v0.0.8/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= github.com/multiformats/go-multihash v0.0.9/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= github.com/multiformats/go-multihash v0.0.10/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= github.com/multiformats/go-multihash v0.0.14/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= github.com/multiformats/go-multihash v0.0.15 h1:hWOPdrNqDjwHDx82vsYGSDZNyktOJJ2dzZJzFkOV1jM= github.com/multiformats/go-multihash v0.0.15/go.mod h1:D6aZrWNLFTV/ynMpKsNtB40mJzmCl4jb1alC0OvHiHg= github.com/multiformats/go-multistream v0.0.1/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg= github.com/multiformats/go-multistream v0.0.4/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg= github.com/multiformats/go-multistream v0.1.0/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg= github.com/multiformats/go-multistream v0.1.1/go.mod h1:KmHZ40hzVxiaiwlj3MEbYgK9JFk2/9UktWZAF54Du38= github.com/multiformats/go-multistream v0.2.0/go.mod h1:5GZPQZbkWOLOn3J2y4Y99vVW7vOfsAflxARk3x14o6k= github.com/multiformats/go-multistream v0.2.1/go.mod h1:5GZPQZbkWOLOn3J2y4Y99vVW7vOfsAflxARk3x14o6k= github.com/multiformats/go-multistream v0.2.2 h1:TCYu1BHTDr1F/Qm75qwYISQdzGcRdC21nFgQW7l7GBo= github.com/multiformats/go-multistream v0.2.2/go.mod h1:UIcnm7Zuo8HKG+HkWgfQsGL+/MIEhyTqbODbIUwSXKs= github.com/multiformats/go-varint v0.0.1/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= github.com/multiformats/go-varint v0.0.2/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= github.com/multiformats/go-varint v0.0.6 h1:gk85QWKxh3TazbLxED/NlDVv8+q+ReFJk7Y2W/KhfNY= github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= github.com/namsral/flag v1.7.4-pre/go.mod h1:OXldTctbM6SWH1K899kPZcf65KxJiD7MsceFUpB5yDo= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nikkolasg/hexjson v0.0.0-20181101101858-78e39397e00c/go.mod h1:7qN3Y0BvzRUf4LofcoJplQL10lsFDb4PYlePTVwrP28= github.com/nishanths/predeclared v0.0.0-20200524104333-86fad755b4d3/go.mod h1:nt3d53pc1VYcphSCIaYAJtnPYnr3Zyn8fMq2wvPGPso= github.com/nkovacs/streamquote v0.0.0-20170412213628-49af9bddb229/go.mod h1:0aYXnNPJ8l7uZxf45rWW1a/uME32OF0rhiYGNQ2oF2E= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/odeke-em/go-utils v0.0.0-20170224015737-e8ebaed0777a h1:ID4uUGPTiRgDphmzLbX3+teq4mhp2d6Isw2Tb8cMuJU= github.com/odeke-em/go-utils v0.0.0-20170224015737-e8ebaed0777a/go.mod h1:I31zE0t3yGARXW3nOJIdaNT1BJ2uPHKP0xjmjfRQEVg= github.com/odeke-em/go-uuid v0.0.0-20151221120446-b211d769a9aa h1:XEhClAZN5U0GUTFRgRdPNgAKO4mP++S+zbqXH+Pr9nU= github.com/odeke-em/go-uuid v0.0.0-20151221120446-b211d769a9aa/go.mod h1:omlfAqAAOXYL53jxw8wG+G2xH7NqbkJPlDeGP9YpP6g= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/oklog/ulid/v2 v2.0.2 h1:r4fFzBm+bv0wNKNh5eXTwU7i85y5x+uwkxCUTNVQqLc= github.com/oklog/ulid/v2 v2.0.2/go.mod h1:mtBL0Qe/0HAx6/a4Z30qxVIAL1eQDweXq5lxOEiwQ68= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.13.0 h1:7lLHu94wT9Ij0o6EWWclhu0aOh32VxhkwEJvzuWPeak= github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2iki3E3Ii+WN7gQ= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/runc v1.0.0-rc9 h1:/k06BMULKF5hidyoZymkoDCzdJzltZpz/UU4LguQVtc= github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opentracing-contrib/go-grpc v0.0.0-20180928155321-4b5a12d3ff02/go.mod h1:JNdpVEzCpXBgIiv4ds+TzhN1hrtxq6ClLrTlT9OQRSc= github.com/opentracing-contrib/go-grpc v0.0.0-20191001143057-db30781987df/go.mod h1:DYR5Eij8rJl8h7gblRrOZ8g0kW1umSpKqYIBTgeDtLo= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing-contrib/go-stdlib v0.0.0-20190519235532-cf7a6c988dc9/go.mod h1:PLldrQSroqzH70Xl+1DQcGnefIbqsKR7UDaiux3zV+w= github.com/opentracing-contrib/go-stdlib v1.0.0/go.mod h1:qtI1ogk+2JhVPIXVc6q+NHziSmy2W5GbdQZFUHADCBU= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/ory/dockertest/v3 v3.6.3 h1:L8JWiGgR+fnj90AEOkTFIEp4j5uWAK72P3IUsYgn2cs= github.com/ory/dockertest/v3 v3.6.3/go.mod h1:EFLcVUOl8qCwp9NyDAcCDtq/QviLtYswW/VbWzUnTNE= github.com/oschwald/geoip2-golang v1.4.0 h1:5RlrjCgRyIGDz/mBmPfnAF4h8k0IAcRv9PvrpOfz+Ug= github.com/oschwald/geoip2-golang v1.4.0/go.mod h1:8QwxJvRImBH+Zl6Aa6MaIcs5YdlZSTKtzmPGzQqi9ng= github.com/oschwald/maxminddb-golang v1.6.0 h1:KAJSjdHQ8Kv45nFIbtoLGrGWqHFajOIm7skTyz/+Dls= github.com/oschwald/maxminddb-golang v1.6.0/go.mod h1:DUJFucBg2cvqx42YmDa/+xHvb0elJtOm3o4aFQ/nb/w= github.com/otiai10/copy v1.4.2/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/peterh/liner v0.0.0-20170317030525-88609521dc4b/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/polydawn/refmt v0.0.0-20190221155625-df39d6c2d992/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= github.com/polydawn/refmt v0.0.0-20190408063855-01bf1e26dd14/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= github.com/polydawn/refmt v0.0.0-20190807091052-3d65705ee9f1/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= github.com/polydawn/refmt v0.0.0-20190809202753-05966cbd336a h1:hjZfReYVLbqFkAtr2us7vdy04YWz3LVAirzP7reh8+M= github.com/polydawn/refmt v0.0.0-20190809202753-05966cbd336a/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= 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= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.2.1/go.mod h1:XMU6Z2MjaRKVu/dC1qupJI9SiNkDYzz3xecMgSW/F+U= github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.6.0/go.mod h1:ZLOG9ck3JLRdB5MgO8f+lLTe83AXG6ro35rLTxvnIl4= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU= github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= 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= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.26.0 h1:iMAkS2TDoNWnKM+Kopnx/8tnEStIfpYA0ur0xQzzhMQ= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/node_exporter v1.0.0-rc.0.0.20200428091818-01054558c289/go.mod h1:FGbBv5OPKjch+jNUJmEQpMZytIdyW0NdBtWFcfSKusc= github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= 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-20190425082905-87a4384529e0/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= 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= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.0.6/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.1.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/statsd_exporter v0.15.0/go.mod h1:Dv8HnkoLQkeEjkIE4/2ndAA7WL1zHKK7WMqFQqu72rw= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/radovskyb/watcher v1.0.7 h1:AYePLih6dpmS32vlHfhCeli8127LzkIgwJGcwwe8tUE= github.com/radovskyb/watcher v1.0.7/go.mod h1:78okwvY5wPdzcb1UYnip1pvrZNIVEIh/Cm+ZuvsUYIg= github.com/rainycape/unidecode v0.0.0-20150907023854-cb7f23ec59be h1:ta7tUOvsPHVHGom5hKW5VXNc2xZIkfCKP8iaqOyYtUQ= github.com/rainycape/unidecode v0.0.0-20150907023854-cb7f23ec59be/go.mod h1:MIDFMn7db1kT65GmV94GzpX9Qdi7N/pQlwb+AN8wh+Q= github.com/raulk/clock v1.1.0 h1:dpb29+UKMbLqiU/jqIJptgLR1nn23HLgMY0sTCDza5Y= github.com/raulk/clock v1.1.0/go.mod h1:3MpVxdZ/ODBQDxbN+kzshf5OSZwPjtMDx6BBXBmOeY0= github.com/raulk/go-watchdog v1.0.1/go.mod h1:lzSbAl5sh4rtI8tYHU01BWIDzgzqaQLj6RcA1i4mlqI= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rhysd/go-github-selfupdate v1.2.2 h1:G+mNzkc1wEtpmM6sFS/Ghkeq+ad4Yp6EZEHyp//wGEo= github.com/rhysd/go-github-selfupdate v1.2.2/go.mod h1:khesvSyKcXDUxeySCedFh621iawCks0dS/QnHPcpCws= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= 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/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/segmentio/backo-go v0.0.0-20200129164019-23eae7c10bd3 h1:ZuhckGJ10ulaKkdvJtiAqsLTiPrLaXSdnVgXJKJkTxE= github.com/segmentio/backo-go v0.0.0-20200129164019-23eae7c10bd3/go.mod h1:9/Rh6yILuLysoQnZ2oNooD2g7aBnvM7r/fNVxRNWfBc= github.com/sercand/kuberesolver v2.1.0+incompatible/go.mod h1:lWF3GL0xptCB/vCiJPl/ZshwPsX/n4Y7u0CW9E7aQIQ= github.com/sercand/kuberesolver v2.4.0+incompatible/go.mod h1:lWF3GL0xptCB/vCiJPl/ZshwPsX/n4Y7u0CW9E7aQIQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/shirou/gopsutil v2.18.12+incompatible h1:1eaJvGomDnH74/5cF4CTmTbLHAriGFsTZppLXDX93OM= github.com/shirou/gopsutil v2.18.12+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= github.com/siebenmann/go-kstat v0.0.0-20160321171754-d34789b79745/go.mod h1:G81aIFAMS9ECrwBYR9YxhlPjWgrItd+Kje78O6+uqm8= github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= github.com/smartystreets/assertions v1.0.1 h1:voD4ITNjPL5jjBfgR/r8fPIIBrliWrWHeiJApdr3r4w= github.com/smartystreets/assertions v1.0.1/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= github.com/smartystreets/goconvey v0.0.0-20190222223459-a17d461953aa/go.mod h1:2RVY1rIf+2J2o/IM9+vPq9RzmHDSseB7FoXiSNIUsoU= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v0.0.0-20190731233626-505e41936337/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smola/gocompat v0.2.0/go.mod h1:1B0MlxbmoZNo3h8guHp8HztB3BSYR5itql9qtVc0ypY= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/soundcloud/go-runit v0.0.0-20150630195641-06ad41a06c4a/go.mod h1:LeFCbQYJ3KJlPs/FvPz2dy1tkpxyeNESVyCNNzRXFR0= github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= github.com/spacemonkeygo/openssl v0.0.0-20181017203307-c2dcc5cca94a/go.mod h1:7AyxJNCJ7SBZ1MfVQCWD6Uqo2oubI2Eq2y2eqf+A5r0= github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 h1:RC6RW7j+1+HkWaX/Yh71Ee5ZHaHYt7ZP4sQgUrm6cDU= github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572/go.mod h1:w0SWMsp6j9O/dk4/ZpIhL+3CkG8ofA2vuv7k+ltqUMc= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.0-20170417170307-b6cb39589372/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v0.0.0-20170417173400-9e4c21054fa1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/src-d/envconfig v1.0.0/go.mod h1:Q9YQZ7BKITldTBnoxsE5gOeB5y66RyPXeue/R4aaNBc= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stripe/stripe-go/v72 v72.10.0 h1:4Rsv7Ts4D2qii2r0gW3qZpvPXRV0W8BpagLgvh7kRjY= github.com/stripe/stripe-go/v72 v72.10.0/go.mod h1:QwqJQtduHubZht9mek5sds9CtQcKFdsykV9ZepRWwo0= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE= github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/tchap/go-patricia v2.3.0+incompatible h1:GkY4dP3cEfEASBPPkWd+AmjYxhmDkqO9/zg7R0lSQRs= github.com/tchap/go-patricia v2.3.0+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= github.com/tcnksm/go-gitconfig v0.1.2 h1:iiDhRitByXAEyjgBqsKi9QU4o2TNtv9kPP3RgPgXBPw= github.com/tcnksm/go-gitconfig v0.1.2/go.mod h1:/8EhP4H7oJZdIPyT+/UIsG87kTzrzM4UsLGSItWYCpE= github.com/textileio/crypto v0.0.0-20210928200545-9b5a55171e1b/go.mod h1:p2BwrUs69ZtGA27KXYYOiToLs1PyPV5etdUFMko3d9c= github.com/textileio/crypto v0.0.0-20210929130053-08edebc3361a h1:ECSeaC+8iE/EmAqsX3JltDebB5q2IsDWy4KQqkl5c+8= github.com/textileio/crypto v0.0.0-20210929130053-08edebc3361a/go.mod h1:p2BwrUs69ZtGA27KXYYOiToLs1PyPV5etdUFMko3d9c= github.com/textileio/dcrypto v0.0.1 h1:ftXQKd+CAM7a0XFrw+hJqizo+ux8+g5RttKjImZRc7U= github.com/textileio/dcrypto v0.0.1/go.mod h1:rDlYXuL+HQwkyrxOR230zEUouRnlTwH6O5XWoPbmfcE= github.com/textileio/dsutils v1.0.1/go.mod h1:A2RXLoDWyLTCuEmC41+WjC8jRsE7BeRy1c6s3acc3PY= github.com/textileio/go-assets v0.0.0-20200430191519-b341e634e2b7 h1:J7+UXJT/Ku8ylMqqHH4T+CiHtOSd8woUZjynG3fEwDI= github.com/textileio/go-assets v0.0.0-20200430191519-b341e634e2b7/go.mod h1:j7aKMh8sbbtvttp7V7yCOkHW/pfRtIM/6h+8qEDsLyI= github.com/textileio/go-datastore-extensions v1.0.1 h1:qIJGqJaigQ1wD4TdwS/hf73u0HChhXvvUSJuxBEKS+c= github.com/textileio/go-datastore-extensions v1.0.1/go.mod h1:Pzj9FDRkb55910dr/FX8M7WywvnS26gBgEDez1ZBuLE= github.com/textileio/go-ds-badger v0.2.7-0.20201204225019-4ee78c4a40e2 h1:VIWkccJp5k8x1hbwQsSn6Xnns4wUDEW6XdiMLiOpr7k= github.com/textileio/go-ds-badger v0.2.7-0.20201204225019-4ee78c4a40e2/go.mod h1:qEZ/z1KyoRhGS5MYEbIcWUCCPd/0HxCkFDVeJgP1RcI= github.com/textileio/go-ds-badger3 v0.0.0-20210324034212-7b7fb3be3d1c h1:iOWa9/AXFssCi7VhbEvVkpCYXqq/n3E2zKH6u+9pIfM= github.com/textileio/go-ds-badger3 v0.0.0-20210324034212-7b7fb3be3d1c/go.mod h1:VX3oCNk7szANGG+baANuhTx7dheWiEPH7lp1n69ef4M= github.com/textileio/go-ds-mongo v0.1.4/go.mod h1:Zf6JlMPiIQUUmGlFFn5Z65C9p9LAvPg7XvX+qdGmTsU= github.com/textileio/go-ds-mongo v0.1.5 h1:y4Ch0qkWdriUtNoD/kuYtmvattklIDSE5mbgRM6Lphs= github.com/textileio/go-ds-mongo v0.1.5/go.mod h1:08w4gf1jrbE1DwpFNJHFzhakMMFfZm/eQHNiuMW7GOY= github.com/textileio/go-libp2p-pubsub-rpc v0.0.5 h1:De54sqNpQocJebf7P+4RrwtuUw8s8BsQhJD7LLD+vSw= github.com/textileio/go-libp2p-pubsub-rpc v0.0.5/go.mod h1:MlOMOz3KZxexobvUuFXT/QY9Vjh9eKJpZPr48hDUdVo= github.com/textileio/go-log/v2 v2.1.3-gke-1 h1:7e3xSUXQB8hn4uUe5fp41kLThW1o9T65gSM7qjS323g= github.com/textileio/go-log/v2 v2.1.3-gke-1/go.mod h1:DwACkjFS3kjZZR/4Spx3aPfSsciyslwUe5bxV8CEU2w= github.com/textileio/go-threads v1.1.6-0.20220406044848-cdd032536e1f h1:E6Cshg8EsNVluIB6Q6XjVSL0QRm2+w5e5K5Ze1vDIhE= github.com/textileio/go-threads v1.1.6-0.20220406044848-cdd032536e1f/go.mod h1:yPnVPdm8mpCq+fEDw5AamqZy4cQ+wE9wOCaDm3BVEmQ= github.com/textileio/go-threads v1.1.6-0.20220409162902-a715c2402413 h1:Aw8sTmDHQ4we8dN3WCuR3KnUFTIkk/Tn3LOPq/cqvEs= github.com/textileio/go-threads v1.1.6-0.20220409162902-a715c2402413/go.mod h1:yPnVPdm8mpCq+fEDw5AamqZy4cQ+wE9wOCaDm3BVEmQ= github.com/textileio/powergate/v2 v2.3.0 h1:kelYh+ZWDQao1rL5YiMznQscd6CsDjgt6P/D1S5UYwQ= github.com/textileio/powergate/v2 v2.3.0/go.mod h1:2j2NL1oevaVdrI6MpKfHnfgUOy1D4L7eP3I+1czxDjw= github.com/textileio/swagger-ui v0.3.29-0.20210224180244-7d73a7a32fe7 h1:qUEurT6kJF+nFkiNjUPMJJ7hgg9OIDnb8iLn6VtBukE= github.com/textileio/swagger-ui v0.3.29-0.20210224180244-7d73a7a32fe7/go.mod h1:IG3de1dcR5Hmcz57nScHHoq5Ju1AABd8z5GnLDgDCks= github.com/texttheater/golang-levenshtein v0.0.0-20180516184445-d188e65d659e/go.mod h1:XDKHRm5ThF8YJjx001LtgelzsoaEcvnA7lVWz9EeX3g= github.com/tidwall/gjson v1.10.2 h1:APbLGOM0rrEkd8WBw9C24nllro4ajFuJu0Sc9hRz8Bo= github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v0.0.0-20190325153808-1166b9ac2b65/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.3 h1:5+deguEhHSEjmuICXZ21uSSsXotWMA0orU783+Z7Cp8= github.com/tidwall/sjson v1.2.3/go.mod h1:5WdjKx3AQMvCJ4RG6/2UYT7dLrGvJUV1x4jdTAyGvZs= github.com/tj/go-spin v1.1.0 h1:lhdWZsvImxvZ3q1C5OIB7d72DuOwP4O2NdBg9PyzNds= github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/twitchyliquid64/golang-asm v0.15.0/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/uber/jaeger-client-go v2.15.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-client-go v2.23.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-lib v1.5.1-0.20181102163054-1fc5c315e03c/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ulikunitz/xz v0.5.5 h1:pFrO0lVpTBXLpYw+pnLj6TbvHuyjXMfjGeCwSqCVwok= github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.3 h1:FpNT6zq26xNpHZy08emi755QwzLPs6Pukqjlc7RfOMU= github.com/urfave/cli v1.22.3/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli/v2 v2.0.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= github.com/urfave/cli/v2 v2.1.1/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= github.com/urfave/cli/v2 v2.2.0 h1:JTTnM6wKzdA0Jqodd966MVj4vWbbquZykeX1sKbe2C4= github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= github.com/wangjia184/sortedset v0.0.0-20160527075905-f5d03557ba30/go.mod h1:YkocrP2K2tcw938x9gCOmT5G5eCD6jsTz0SZuyAqwIE= github.com/warpfork/go-wish v0.0.0-20180510122957-5ad1f5abf436/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= github.com/warpfork/go-wish v0.0.0-20190328234359-8b3e70f8e830/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a h1:G++j5e0OC488te356JvdhaM8YS6nMsjLAYF7JxCv07w= github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= github.com/weaveworks/common v0.0.0-20200512154658-384f10054ec5/go.mod h1:c98fKi5B9u8OsKGiWHLRKus6ToQ1Tubeow44ECO1uxY= github.com/weaveworks/promrus v1.2.0/go.mod h1:SaE82+OJ91yqjrE1rsvBWVzNZKcHYFtMUyS1+Ogs/KA= github.com/whyrusleeping/base32 v0.0.0-20170828182744-c30ac30633cc h1:BCPnHtcboadS0DvysUuJXZ4lWVv5Bh5i7+tbIyi+ck4= github.com/whyrusleeping/base32 v0.0.0-20170828182744-c30ac30633cc/go.mod h1:r45hJU7yEoA81k6MWNhpMj/kms0n14dkzkxYHoB96UM= github.com/whyrusleeping/bencher v0.0.0-20190829221104-bb6607aa8bba h1:X4n8JG2e2biEZZXdBKt9HX7DN3bYGFUqljqqy0DqgnY= github.com/whyrusleeping/bencher v0.0.0-20190829221104-bb6607aa8bba/go.mod h1:CHQnYnQUEPydYCwuy8lmTHfGmdw9TKrhWV0xLx8l0oM= github.com/whyrusleeping/cbor-gen v0.0.0-20191216205031-b047b6acb3c0/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY= github.com/whyrusleeping/cbor-gen v0.0.0-20200123233031-1cdf64d27158/go.mod h1:Xj/M2wWU+QdTdRbu/L/1dIZY8/Wb2K9pAhtroQuxJJI= github.com/whyrusleeping/cbor-gen v0.0.0-20200402171437-3d27c146c105/go.mod h1:Xj/M2wWU+QdTdRbu/L/1dIZY8/Wb2K9pAhtroQuxJJI= github.com/whyrusleeping/cbor-gen v0.0.0-20200414195334-429a0b5e922e/go.mod h1:Xj/M2wWU+QdTdRbu/L/1dIZY8/Wb2K9pAhtroQuxJJI= github.com/whyrusleeping/cbor-gen v0.0.0-20200504204219-64967432584d/go.mod h1:W5MvapuoHRP8rz4vxjwCK1pDqF1aQcWsV5PZ+AHbqdg= github.com/whyrusleeping/cbor-gen v0.0.0-20200710004633-5379fc63235d/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= github.com/whyrusleeping/cbor-gen v0.0.0-20200715143311-227fab5a2377/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= github.com/whyrusleeping/cbor-gen v0.0.0-20200723185710-6a3894a6352b/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= github.com/whyrusleeping/cbor-gen v0.0.0-20200806213330-63aa96ca5488/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= github.com/whyrusleeping/cbor-gen v0.0.0-20200810223238-211df3b9e24c/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= github.com/whyrusleeping/cbor-gen v0.0.0-20200812213548-958ddffe352c/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= github.com/whyrusleeping/cbor-gen v0.0.0-20200826160007-0b9f6c5fb163/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= github.com/whyrusleeping/cbor-gen v0.0.0-20210118024343-169e9d70c0c2/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= github.com/whyrusleeping/cbor-gen v0.0.0-20210219115102-f37d292932f2 h1:bsUlNhdmbtlfdLVXAVfuvKQ01RnWAM09TVrJkI7NZs4= github.com/whyrusleeping/cbor-gen v0.0.0-20210219115102-f37d292932f2/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f h1:jQa4QT2UP9WYv2nzyawpKMOCl+Z/jW7djv2/J50lj9E= github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f/go.mod h1:p9UJB6dDgdPgMJZs7UjUOdulKyRr9fqkS+6JKAInPy8= github.com/whyrusleeping/go-ctrlnet v0.0.0-20180313164037-f564fbbdaa95/go.mod h1:SJqKCCPXRfBFCwXjfNT/skfsceF7+MBFLI2OrvuRA7g= github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 h1:EKhdznlJHPMoKr0XTrX+IlJs1LH3lyx2nfr1dOlZ79k= github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1/go.mod h1:8UvriyWtv5Q5EOgjHaSseUEdkQfvwFv1I/In/O2M9gc= github.com/whyrusleeping/go-logging v0.0.0-20170515211332-0457bb6b88fc/go.mod h1:bopw91TMyo8J3tvftk8xmU2kPmlrt4nScJQZU2hE5EM= github.com/whyrusleeping/go-logging v0.0.1/go.mod h1:lDPYj54zutzG1XYfHAhcc7oNXEburHQBn+Iqd4yS4vE= github.com/whyrusleeping/go-notifier v0.0.0-20170827234753-097c5d47330f/go.mod h1:cZNvX9cFybI01GriPRMXDtczuvUhgbcYr9iCGaNlRv8= github.com/whyrusleeping/go-smux-multiplex v3.0.16+incompatible/go.mod h1:34LEDbeKFZInPUrAG+bjuJmUXONGdEFW7XL0SpTY1y4= github.com/whyrusleeping/go-smux-multistream v2.0.2+incompatible/go.mod h1:dRWHHvc4HDQSHh9gbKEBbUZ+f2Q8iZTPG3UOGYODxSQ= github.com/whyrusleeping/go-smux-yamux v2.0.8+incompatible/go.mod h1:6qHUzBXUbB9MXmw3AUdB52L8sEb/hScCqOdW2kj/wuI= github.com/whyrusleeping/go-smux-yamux v2.0.9+incompatible/go.mod h1:6qHUzBXUbB9MXmw3AUdB52L8sEb/hScCqOdW2kj/wuI= github.com/whyrusleeping/ledger-filecoin-go v0.9.1-0.20201010031517-c3dcc1bddce4/go.mod h1:K+EVq8d5QcQ2At5VECsA+SNZvWefyBXh8TnIsxo1OvQ= github.com/whyrusleeping/mafmt v1.2.8/go.mod h1:faQJFPbLSxzD9xpA02ttW/tS9vZykNvXwGvqIpk20FA= github.com/whyrusleeping/mdns v0.0.0-20180901202407-ef14215e6b30/go.mod h1:j4l84WPFclQPj320J9gp0XwNKBb3U0zt5CBqjPp22G4= github.com/whyrusleeping/mdns v0.0.0-20190826153040-b9b60ed33aa9 h1:Y1/FEOpaCpD21WxrmfeIYCFPuVPRCY2XZTWzTNHGw30= github.com/whyrusleeping/mdns v0.0.0-20190826153040-b9b60ed33aa9/go.mod h1:j4l84WPFclQPj320J9gp0XwNKBb3U0zt5CBqjPp22G4= github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7 h1:E9S12nwJwEOXe2d6gT6qxdvqMnNq+VnSsKPgm2ZZNds= github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7/go.mod h1:X2c0RVCI1eSUFI8eLcY3c0423ykwiUdxLJtkDvruhjI= github.com/whyrusleeping/pubsub v0.0.0-20190708150250-92bcb0691325/go.mod h1:g7ckxrjiFh8mi1AY7ox23PZD0g6QU/TxW3U3unX7I3A= github.com/whyrusleeping/timecache v0.0.0-20160911033111-cfcb2f1abfee h1:lYbXeSvJi5zk5GLKVuid9TVjS9a0OmLIDKTfoZBL6Ow= github.com/whyrusleeping/timecache v0.0.0-20160911033111-cfcb2f1abfee/go.mod h1:m2aV4LZI4Aez7dP5PMyVKEHhUyEJ/RjmPEDOpDvudHg= github.com/whyrusleeping/yamux v1.1.5/go.mod h1:E8LnQQ8HKx5KD29HZFUwM1PxCOdPRzGwur1mcYhXcD8= github.com/x-cray/logrus-prefixed-formatter v0.5.2/go.mod h1:2duySbKsL6M18s5GU7VPsoEPHyzalCE06qoARUCeBBE= github.com/xakep666/mongo-migrate v0.2.1 h1:pRK966a44ujuGMEl73MOzv4MajcH8Q6MWo+TBlxjhvs= github.com/xakep666/mongo-migrate v0.2.1/go.mod h1:pVQysP+es2wX4TaeVd7zLkRZhKMcBqcC/KRyLms6Eyk= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.0.2 h1:akYIkZ28e6A96dkWNJQu3nmCzH3YfwMPQExUYDaRv7w= github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= github.com/xdg-go/stringprep v1.0.2 h1:6iq84/ryjjeRmMJwxutI51F2GIPlP5BfTvXHeYjyhBc= github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/c-for-go v0.0.0-20200718154222-87b0065af829 h1:wb7xrDzfkLgPHsSEBm+VSx6aDdi64VtV0xvP0E6j8bk= github.com/xlab/c-for-go v0.0.0-20200718154222-87b0065af829/go.mod h1:h/1PEBwj7Ym/8kOuMWvO2ujZ6Lt+TMbySEXNhjjR87I= github.com/xlab/pkgconfig v0.0.0-20170226114623-cea12a0fd245 h1:Sw125DKxZhPUI4JLlWugkzsrlB50jR9v2khiD9FxuSo= github.com/xlab/pkgconfig v0.0.0-20170226114623-cea12a0fd245/go.mod h1:C+diUUz7pxhNY6KAoLgrTYARGWnt82zWTylZlxT92vk= github.com/xorcare/golden v0.6.0/go.mod h1:7T39/ZMvaSEZlBPoYfVFmsBLmUl3uz9IuzWj/U6FtvQ= github.com/xorcare/golden v0.6.1-0.20191112154924-b87f686d7542 h1:oWgZJmC1DorFZDpfMfWg7xk29yEOZiXmo/wZl+utTI8= github.com/xorcare/golden v0.6.1-0.20191112154924-b87f686d7542/go.mod h1:7T39/ZMvaSEZlBPoYfVFmsBLmUl3uz9IuzWj/U6FtvQ= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c h1:3lbZUMbMiGUW/LMkfsEABsc5zNT9+b1CvsJx47JzJ8g= github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c/go.mod h1:UrdRz5enIKZ63MEE3IF9l2/ebyx59GyGgPi+tICQdmM= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/zondax/hid v0.9.0/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= github.com/zondax/ledger-go v0.12.1/go.mod h1:KatxXrVDzgWwbssUWsF5+cOJHXPvzQ09YSlzGNuhOEo= go.dedis.ch/fixbuf v1.0.3/go.mod h1:yzJMt34Wa5xD37V5RTdmp38cz3QhMagdGoem9anUalw= go.dedis.ch/kyber/v3 v3.0.4/go.mod h1:OzvaEnPvKlyrWyp3kGXlFdp7ap1VC6RkZDTaPikqhsQ= go.dedis.ch/kyber/v3 v3.0.9/go.mod h1:rhNjUUg6ahf8HEg5HUvVBYoWY4boAafX8tYxX+PS+qg= go.dedis.ch/protobuf v1.0.5/go.mod h1:eIV4wicvi6JK0q/QnfIEGeSFNG0ZeB24kzut5+HaRLo= go.dedis.ch/protobuf v1.0.7/go.mod h1:pv5ysfkDX/EawiPqcW3ikOxsL5t+BqnV6xHSmE79KI4= go.dedis.ch/protobuf v1.0.11/go.mod h1:97QR256dnkimeNdfmURz0wAMNVbd1VmLXhG1CrTYrJ4= 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/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.mongodb.org/mongo-driver v1.0.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.4.0/go.mod h1:llVBH2pkj9HywK0Dtdt6lDikOjFLbceHVu/Rc0iMKLs= go.mongodb.org/mongo-driver v1.7.1/go.mod h1:Q4oFMbo1+MSNqICAdYMlC/zSTrwCogR4R8NzkI+yfU8= go.mongodb.org/mongo-driver v1.8.1 h1:OZE4Wni/SJlrcmSIBRYNzunX5TKxjrTS4jKSnA99oKU= go.mongodb.org/mongo-driver v1.8.1/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= 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.1/go.mod h1:Ap50jQcDJrx6rB6VgeeFPtuPIf3wMRvRfrfYDO6+BmA= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.22.6/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.starlark.net v0.0.0-20190702223751-32f345186213/go.mod h1:c1/X6cHgvdXj6pUlmWKMkuqRnW4K8x2vwt6JAaaircg= 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/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.5.1/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/dig v1.10.0/go.mod h1:X34SnWGr8Fyla9zQNO2GSO2D+TIuqB14OS8JhYocIyw= go.uber.org/fx v1.9.0/go.mod h1:mFdUyAUuJ3w4jAckiKSKbldsxy1ojpAMJ+dVZg5Y0Aw= go.uber.org/goleak v1.0.0/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE= go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= go4.org v0.0.0-20200411211856-f5505b9728dd h1:BNJlw5kRTzdmyfh5U8F93HA2OwkP7ZGwA51eJ/0wKOU= go4.org v0.0.0-20200411211856-f5505b9728dd/go.mod h1:CIiUVy99QCPfoE13bO4EZaz5GZMZXMSBGhxRdsvzbkg= golang.org/x/arch v0.0.0-20190927153633-4e8777c89be4/go.mod h1:flIaEI6LNU6xOCD5PaJvn9wGP0agmIOqjrtsKGRguv4= golang.org/x/arch v0.0.0-20201008161808-52c3e6f60cff/go.mod h1:flIaEI6LNU6xOCD5PaJvn9wGP0agmIOqjrtsKGRguv4= golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/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= golang.org/x/crypto v0.0.0-20190123085648-057139ce5d2b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190225124518-7f87c0fbb88b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= 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-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190618222545-ea8f1a30c443/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200423211502-4bdfaf469ed5/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201012173705-84dcc777aaee/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/exp v0.0.0-20200513190911-00229845015e h1:rMqLP+9XLy+LdbCXHjJHAmTfXCr93W7oruWA6Hq1Alc= golang.org/x/exp v0.0.0-20200513190911-00229845015e/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= 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.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180524181706-dfa909b99c79/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/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-20181011144130-49bb7cea24b1/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-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181106065722-10aee1819953/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= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190227160552-c95aed5357e7/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190228165749-92fc7df08ae7/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190611141213-3f473d35a33a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190921015927-1a5e07d1ff72/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191003171128-d98b1b443823/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191007182048-72f939374954/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/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-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/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-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200519113804-d87ec0cfa476/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d h1:20cMwl2fHAzkJMEA+8J4JgqBQcQGzbisXo31MIeenXI= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/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-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210201163806-010130855d6c h1:HiAZXo96zOhVhtFHchj/ojzoxCFiPrp9/j0GtS38V3g= golang.org/x/oauth2 v0.0.0-20210201163806-010130855d6c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= 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= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180202135801-37707fdb30a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 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-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/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= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190124100055-b90733256f2e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190219092855-153ac476189d/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190302025703-b6889370fb10/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190411185658-b44545bcd369/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/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= golang.org/x/sys v0.0.0-20190524122548-abf6ff778158/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190524152521-dbbf3f1254d4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190526052359-791d8a0f4d09/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190610200419-93c9922d18ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190902133755-9109b7679e13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191025021431-6c3a3bfe00ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191025090151-53bf42e6b339/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191113165036-4c7a9d0fe056/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191224085550-c709ea063b76/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200509044756-6aff5f38e54f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200812155832-6a926be9bd1d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200926100807-9d91bd62050c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201020230747-6e5568b54d1a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210426080607-c94f62235c83/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210511113859-b0526f3d8744/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e h1:WUoyKPm6nCo1BnNUvPGnFG3T5DUVem42yDJZZ4CNxMA= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1 h1:NusfzzA6yGQ+ua51ck7E3omNUX/JuqbFSaRGqU8CcLI= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181130052023-1c3d964395ce/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 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-20191030062658-86caa796c7ab/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/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-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/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-20191127201027-ecd32218bd7f/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/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200216192241-b320d3a0f5a2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200522201501-cb1345f3a375/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200711155855-7342f9734a7d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200827010519-17fd2f27a9e3/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20201105001634-bc3cf281b174/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2 h1:kRBLX7v7Af8W7Gdbbc908OJcdgtK8bOz9Uaj8/F1ACA= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= 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/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.3.2/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= 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/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= 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.3.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/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= 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= google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200608115520-7c474a2e3482/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210207032614-bba0dbe2a9ea h1:N98SvVh7Hdle2lgUVFuIkf0B3u29CUakMUQa7Hwz8Wc= google.golang.org/genproto v0.0.0-20210207032614-bba0dbe2a9ea/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.28.1/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.39.0 h1:Klz8I9kdtkIN6EpHHUOMLCYhTn/2WAe5a0s1hcBkdTI= google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.0.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/cheggaaa/pb.v1 v1.0.28/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/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/validator.v9 v9.29.1/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.55.0 h1:E8yzL5unfpW3M6fz/eB7Cb5MQAYSZ7GKo4Qth+N2sgQ= gopkg.in/ini.v1 v1.55.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/segmentio/analytics-go.v3 v3.1.0 h1:UzxH1uaGZRpMKDhJyBz0pexz6yUoBU3x8bJsRk/HV6U= gopkg.in/segmentio/analytics-go.v3 v3.1.0/go.mod h1:4QqqlTlSSpVlWA9/9nDcPw+FkM2yv1NQoYjUbL9/JAw= gopkg.in/src-d/go-cli.v0 v0.0.0-20181105080154-d492247bbc0d/go.mod h1:z+K8VcOYVYcSwSjGebuDL6176A1XskgbtNl64NSg+n8= gopkg.in/src-d/go-log.v1 v1.0.1/go.mod h1:GN34hKP0g305ysm2/hctJ0Y8nWP3zxXXJ8GFabTyABE= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2 h1:kG1BFyqVHuQoVQiR1bWGnfz/fmHvvuiSPIV7rvl360E= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= 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.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= modernc.org/cc v1.0.0 h1:nPibNuDEx6tvYrUAtvDTTw98rx5juGsa5zuDnKwEEQQ= modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= modernc.org/golex v1.0.0 h1:wWpDlbK8ejRfSyi0frMyhilD3JBvtcx2AdGDnU+JtsE= modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= modernc.org/mathutil v1.1.1 h1:FeylZSVX8S+58VsyJlkEj2bcpdytmp9MmDKZkKx8OIE= modernc.org/mathutil v1.1.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= modernc.org/strutil v1.1.0 h1:+1/yCzZxY2pZwwrsbH+4T7BQMoLQ9QiBshRC9eicYsc= modernc.org/strutil v1.1.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= modernc.org/xc v1.0.0 h1:7ccXrupWZIS3twbUGrtKmHS2DXY6xegFua+6O3xgAFU= modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= ================================================ FILE: integrationtest/pg/docker-compose.yml ================================================ version: "3" services: powergate: image: textile/powergate:v2.3.3 ports: - "8889:8889" - "8888:8888" - "6060:6060" - "5002:5002" - "6002:6002" depends_on: - ipfs - ipfsbuckets - lotus environment: - POWD_DEVNET=true - POWD_LOTUSHOST=/dns4/lotus/tcp/7777 - POWD_IPFSAPIADDR=/dns4/ipfs/tcp/5001 - POWD_FFSMINERSELECTOR=reputation restart: unless-stopped lotus: image: textile/lotus-devnet:v1.5.2 environment: - TEXLOTUSDEVNET_SPEED=100 - TEXLOTUSDEVNET_IPFSADDR=/dns4/ipfs/tcp/5001 - TEXLOTUSDEVNET_BIGSECTORS=false - TEXLOTUSDEVNET_ONLINEMODE=${LOTUS_ONLINEMODE} ipfs: image: ipfs/go-ipfs:v0.8.0 environment: - IPFS_PROFILE=local-discovery ports: - "5022:5001" ipfsbuckets: image: ipfs/go-ipfs:v0.8.0 environment: - IPFS_PROFILE=local-discovery ports: - "5011:5001" mongo: image: mongo:latest ports: - "27017:27017" ================================================ FILE: integrationtest/pg/pg_test.go ================================================ package pg import ( "bytes" "context" "fmt" "io/ioutil" "os" "sort" "strings" "testing" "time" "github.com/ipfs/go-cid" httpapi "github.com/ipfs/go-ipfs-http-client" "github.com/ipfs/interface-go-ipfs-core/options" "github.com/ipfs/interface-go-ipfs-core/path" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tc "github.com/textileio/go-threads/api/client" "github.com/textileio/go-threads/core/thread" tutil "github.com/textileio/go-threads/util" "github.com/textileio/textile/v2/api/apitest" c "github.com/textileio/textile/v2/api/bucketsd/client" pb "github.com/textileio/textile/v2/api/bucketsd/pb" "github.com/textileio/textile/v2/api/common" hc "github.com/textileio/textile/v2/api/hubd/client" uc "github.com/textileio/textile/v2/api/usersd/client" userspb "github.com/textileio/textile/v2/api/usersd/pb" "github.com/textileio/textile/v2/buckets/archive/retrieval" "github.com/textileio/textile/v2/buckets/archive/tracker" "github.com/textileio/textile/v2/core" "github.com/textileio/textile/v2/util" "google.golang.org/grpc" ) func TestMain(m *testing.M) { retrieval.CITest = true tracker.CheckInterval = time.Second * 5 os.Exit(m.Run()) } func TestCreateBucket(t *testing.T) { powc, _ := StartPowergate(t) ctx, _, _, _, client, _, shutdown := setup(t) defer shutdown() // User is now created, so it should exist after spinup. res, err := powc.Admin.Users.List(ctx) require.NoError(t, err) require.Equal(t, 1, len(res.Users)) _, err = client.Create(ctx) require.NoError(t, err) // No new user should be created for the bucket. res, err = powc.Admin.Users.List(ctx) require.NoError(t, err) require.Equal(t, 1, len(res.Users)) } func TestArchiveTracker(t *testing.T) { util.RunFlaky(t, func(t *util.FlakyT) { _, _ = StartPowergate(t) ctx, conf, _, _, client, repo, shutdown := setup(t) // Create bucket with a file. b, err := client.Create(ctx) require.Nil(t, err) time.Sleep(4 * time.Second) // Give a sec to fund the Fil address. rootCid1 := addDataFileToBucket(ctx, t, client, b.Root.Key, "Data1.txt") // Archive it (push to PG) err = client.Archive(ctx, b.Root.Key) require.NoError(t, err) time.Sleep(4 * time.Second) // Give some time to push the archive to PG. // Force stop the Hub. fmt.Println("<<< Force stopping Hub") shutdown() fmt.Println("<<< Hub stopped") // Re-spin up Hub. fmt.Println(">>> Re-spinning the Hub") client = reSetup(t, conf, repo) time.Sleep(5 * time.Second) // Wait for Hub to spinup and resume archives tracking. fmt.Println(">>> Hub started") // ## Continue on as nothing "bad" happened and check for success... // Wait for the archive to finish. require.Eventually(t, archiveFinalState(ctx, t, client, b.Root.Key), 2*time.Minute, 2*time.Second) // Verify that the current archive status is Done. res, err := client.Archives(ctx, b.Root.Key) require.NoError(t, err) require.Equal(t, pb.ArchiveStatus_ARCHIVE_STATUS_SUCCESS, res.Current.ArchiveStatus) require.Equal(t, rootCid1, res.Current.Cid) require.Len(t, res.Current.DealInfo, 1) deal := res.Current.DealInfo[0] require.NotEmpty(t, deal.ProposalCid) require.NotEmpty(t, deal.Miner) }) } func TestArchiveBucketWorkflow(t *testing.T) { util.RunFlaky(t, func(t *util.FlakyT) { _, _ = StartPowergate(t) ctx, _, _, usersClient, buckClient, _, shutdown := setup(t) defer shutdown() // Create bucket with a file. b, err := buckClient.Create(ctx) require.NoError(t, err) time.Sleep(4 * time.Second) // Give a sec to fund the Fil address. rootCid1 := addDataFileToBucket(ctx, t, buckClient, b.Root.Key, "Data1.txt") // Archive it (push to PG) err = buckClient.Archive(ctx, b.Root.Key) require.NoError(t, err) // Wait for the archive to finish. require.Eventually(t, archiveFinalState(ctx, t, buckClient, b.Root.Key), 2*time.Minute, 2*time.Second) // Verify that the current archive status is Done. res, err := buckClient.Archives(ctx, b.Root.Key) require.NoError(t, err) require.Equal(t, pb.ArchiveStatus_ARCHIVE_STATUS_SUCCESS, res.Current.ArchiveStatus, res.Current.FailureMsg) require.Equal(t, rootCid1, res.Current.Cid) require.Len(t, res.Current.DealInfo, 1) deal1 := res.Current.DealInfo[0] require.NotEmpty(t, deal1.ProposalCid) require.NotEmpty(t, deal1.Miner) // List archives. as, err := usersClient.ArchivesLs(ctx) require.NoError(t, err) require.Len(t, as.Archives, 1) require.Equal(t, rootCid1, as.Archives[0].Cid) require.Len(t, as.Archives[0].Info, 1) require.Equal(t, as.Archives[0].Info[0].DealId, deal1.DealId) // Add another file to the bucket. rootCid2 := addDataFileToBucket(ctx, t, buckClient, b.Root.Key, "Data2.txt") // Archive again. err = buckClient.Archive(ctx, b.Root.Key) require.NoError(t, err) require.Eventually(t, archiveFinalState(ctx, t, buckClient, b.Root.Key), 2*time.Minute, 2*time.Second) res, err = buckClient.Archives(ctx, b.Root.Key) require.NoError(t, err) require.Equal(t, pb.ArchiveStatus_ARCHIVE_STATUS_SUCCESS, res.Current.ArchiveStatus) require.Equal(t, rootCid2, res.Current.Cid) require.Len(t, res.Current.DealInfo, 1) deal2 := res.Current.DealInfo[0] require.NotEmpty(t, deal2.ProposalCid) require.NotEmpty(t, deal2.Miner) // List archives. as, err = usersClient.ArchivesLs(ctx) require.NoError(t, err) require.Len(t, as.Archives, 1) require.Equal(t, rootCid2, as.Archives[0].Cid) require.Len(t, as.Archives[0].Info, 1) require.Equal(t, as.Archives[0].Info[0].DealId, deal2.DealId) }) } func TestArchivesLs(t *testing.T) { util.RunFlaky(t, func(t *util.FlakyT) { _, _ = StartPowergate(t) ctx, _, _, usersClient, buckClient, _, shutdown := setup(t) defer shutdown() // Create Bucket 1, and archive it. b, err := buckClient.Create(ctx) require.NoError(t, err) time.Sleep(4 * time.Second) rootCid1 := addDataFileToBucket(ctx, t, buckClient, b.Root.Key, "Data1.txt") err = buckClient.Archive(ctx, b.Root.Key) require.NoError(t, err) require.Eventually(t, archiveFinalState(ctx, t, buckClient, b.Root.Key), 2*time.Minute, 2*time.Second) res, err := buckClient.Archives(ctx, b.Root.Key) require.NoError(t, err) require.Equal(t, pb.ArchiveStatus_ARCHIVE_STATUS_SUCCESS, res.Current.ArchiveStatus, res.Current.FailureMsg) deal1 := res.Current.DealInfo[0] // List archives, length should be 1. as, err := usersClient.ArchivesLs(ctx) require.NoError(t, err) require.Len(t, as.Archives, 1) require.Equal(t, rootCid1, as.Archives[0].Cid) require.Len(t, as.Archives[0].Info, 1) require.Equal(t, deal1.DealId, as.Archives[0].Info[0].DealId) // Create Bucket 2, and archive it. b, err = buckClient.Create(ctx) require.NoError(t, err) time.Sleep(4 * time.Second) rootCid2 := addDataFileToBucket(ctx, t, buckClient, b.Root.Key, "Data2.txt") err = buckClient.Archive(ctx, b.Root.Key) require.NoError(t, err) require.Eventually(t, archiveFinalState(ctx, t, buckClient, b.Root.Key), 2*time.Minute, 2*time.Second) res, err = buckClient.Archives(ctx, b.Root.Key) require.NoError(t, err) require.Equal(t, pb.ArchiveStatus_ARCHIVE_STATUS_SUCCESS, res.Current.ArchiveStatus, res.Current.FailureMsg) deal2 := res.Current.DealInfo[0] // List archives, length should be 2. as, err = usersClient.ArchivesLs(ctx) require.NoError(t, err) require.Len(t, as.Archives, 2) sort.Slice(as.Archives, func(i, j int) bool { return as.Archives[i].Cid < as.Archives[j].Cid }) cids := []struct { c string dealID uint64 }{ {c: rootCid1, dealID: deal1.DealId}, {c: rootCid2, dealID: deal2.DealId}, } sort.Slice(cids, func(i, j int) bool { return cids[i].c < cids[j].c }) require.Equal(t, cids[0].c, as.Archives[0].Cid) require.Len(t, as.Archives[0].Info, 1) require.Equal(t, cids[0].dealID, as.Archives[0].Info[0].DealId) require.Equal(t, cids[1].c, as.Archives[1].Cid) require.Len(t, as.Archives[1].Info, 1) require.Equal(t, cids[1].dealID, as.Archives[1].Info[0].DealId) }) } func TestArchivesImport(t *testing.T) { util.RunFlaky(t, func(t *util.FlakyT) { _, _ = StartPowergate(t) hubClient, usersClient, threadsclient, buckClient, conf, _, shutdown := createInfra(t) defer shutdown() // Create an archive for account-1. ctxAccount1 := createAccount(t, hubClient, threadsclient, conf) b, err := buckClient.Create(ctxAccount1) require.NoError(t, err) time.Sleep(4 * time.Second) // Give a sec to fund the Fil address. rootCid1 := addDataFileToBucket(ctxAccount1, t, buckClient, b.Root.Key, "Data1.txt") cid1, err := cid.Decode(rootCid1) require.NoError(t, err) err = buckClient.Archive(ctxAccount1, b.Root.Key) require.NoError(t, err) require.Eventually(t, archiveFinalState(ctxAccount1, t, buckClient, b.Root.Key), 2*time.Minute, 2*time.Second) res, err := buckClient.Archives(ctxAccount1, b.Root.Key) require.NoError(t, err) require.Equal(t, pb.ArchiveStatus_ARCHIVE_STATUS_SUCCESS, res.Current.ArchiveStatus) deal := res.Current.DealInfo[0] // Create account-2, and import the DealID // created by account-1. ctxAccount2 := createAccount(t, hubClient, threadsclient, conf) // Check no archives exist for account-2 as, err := usersClient.ArchivesLs(ctxAccount2) require.NoError(t, err) require.Len(t, as.Archives, 0) // Import deal made by account-1. err = usersClient.ArchivesImport(ctxAccount2, cid1, []uint64{deal.DealId}) require.NoError(t, err) // Assert archives listing includes imported archive. as, err = usersClient.ArchivesLs(ctxAccount2) require.NoError(t, err) require.Len(t, as.Archives, 1) require.Equal(t, rootCid1, as.Archives[0].Cid) require.Len(t, as.Archives[0].Info, 1) require.Equal(t, as.Archives[0].Info[0].DealId, deal.DealId) }) } func TestArchiveUnfreeze(t *testing.T) { util.RunFlaky(t, func(t *util.FlakyT) { _, ipfsPow := StartPowergate(t) hubClient, usersClient, threadsclient, client, conf, _, shutdown := createInfra(t) defer shutdown() // Create an archive for account-1. ctxAccount1 := createAccount(t, hubClient, threadsclient, conf) buck, err := client.Create(ctxAccount1) require.NoError(t, err) time.Sleep(4 * time.Second) // Give a sec to fund the Fil address. rootCid1 := addDataFileToBucket(ctxAccount1, t, client, buck.Root.Key, "Data1.txt") err = client.Archive(ctxAccount1, buck.Root.Key) require.NoError(t, err) require.Eventually(t, archiveFinalState(ctxAccount1, t, client, buck.Root.Key), 2*time.Minute, 2*time.Second) res, err := client.Archives(ctxAccount1, buck.Root.Key) require.NoError(t, err) require.Equal(t, pb.ArchiveStatus_ARCHIVE_STATUS_SUCCESS, res.Current.ArchiveStatus) deal := res.Current.DealInfo[0] ccid, err := cid.Decode(rootCid1) require.NoError(t, err) // Create account-2, and import the DealID // created by account-1. ctxAccount2 := createAccount(t, hubClient, threadsclient, conf) // Obvious assertion about no existing retrievals. rs, err := usersClient.ArchiveRetrievalLs(ctxAccount2) require.NoError(t, err) require.Len(t, rs.Retrievals, 0) // Import deal made by account-1. err = usersClient.ArchivesImport(ctxAccount2, ccid, []uint64{deal.DealId}) require.NoError(t, err) // Delete `ccid` from go-ipfs of Powergate, and go-ipfs of Hub. // We need to do this to be sure that we're unfreezing from Filecoin, // and not leveraging that the Cid is already in the 'network'. // // In the real world, if people unfreeze archived data from the Hub, then // most probably Powergate will leverage that the data is still available // in the Hub. But in this test we want to *force* a real unfreeze, we // we'll delete now the archive bucket data from both go-ipfs nodes (Hub's // and Powergate). ctx := context.Background() err = ipfsPow.Dag().Remove(context.Background(), ccid) require.NoError(t, err) // Delete the bucket data from Hub's go-ipfs, basically // force deleting the bucket. This is to avoid that go-ipfs from // Powergate finds the data since both are conneted. // We have to do an extra .Pin().Rm() call since you can't // simply remove pinned data without an error. ipfsHub, err := httpapi.NewApi(conf.AddrIPFSAPI) require.NoError(t, err) err = ipfsHub.Pin().Rm(ctx, path.IpldPath(ccid), options.Pin.RmRecursive(true)) require.NoError(t, err) err = ipfsHub.Dag().Remove(context.Background(), ccid) require.NoError(t, err) // At this point, the archived bucket data was remove from // both go-ipfs nodes; so the only way to get this data back if it // comes from the miners sector. // This was verified anyway. If you change the code below to see // Powergate logs, you can doble-check this is the case (since Powergate // logs explain from where the data was retrieved). // Unfreeze to a bucket. buck, err = client.Create(ctxAccount2, c.WithName("super-bucket"), c.WithCid(ccid), c.WithUnfreeze(true)) require.NoError(t, err) // Wait for the retrieval to finish. var r *userspb.ArchiveRetrievalLsItem require.Eventually(t, func() bool { rs, err = usersClient.ArchiveRetrievalLs(ctxAccount2) require.NoError(t, err) require.Len(t, rs.Retrievals, 1) r = rs.Retrievals[0] require.NotEqual(t, userspb.ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_FAILED, r.Status) return r.Status == userspb.ArchiveRetrievalStatus_ARCHIVE_RETRIEVAL_STATUS_SUCCESS }, 2*time.Minute, 2*time.Second) // Check if what we got from Filecoin is the same file that // account-1 saved in the archived bucket. lr, err := client.List(ctxAccount2) require.NoError(t, err) require.Len(t, lr.Roots, 1) require.Equal(t, "super-bucket", lr.Roots[0].Name) buf := bytes.NewBuffer(nil) err = client.PullPath(ctxAccount2, lr.Roots[0].Key, "Data1.txt", buf) require.NoError(t, err) f, err := os.Open("testdata/Data1.txt") require.NoError(t, err) t.Cleanup(func() { f.Close() }) originalFile, err := ioutil.ReadAll(f) require.NoError(t, err) require.True(t, bytes.Equal(originalFile, buf.Bytes())) // Assert there're messages in the retrieval log. ctxAccount2, cancel := context.WithCancel(ctxAccount2) defer cancel() ch := make(chan string, 100) go func() { err = usersClient.ArchiveRetrievalLogs(ctxAccount2, r.Id, ch) close(ch) }() count := 0 for s := range ch { require.NotEmpty(t, s) count++ if count > 4 { cancel() } } require.NoError(t, err) require.Greater(t, count, 3) }) } func TestArchiveWatch(t *testing.T) { util.RunFlaky(t, func(t *util.FlakyT) { _, _ = StartPowergate(t) ctx, _, _, _, client, _, shutdown := setup(t) defer shutdown() b, err := client.Create(ctx) require.NoError(t, err) time.Sleep(4 * time.Second) addDataFileToBucket(ctx, t, client, b.Root.Key, "Data1.txt") err = client.Archive(ctx, b.Root.Key) require.NoError(t, err) ctx, cancel := context.WithCancel(ctx) defer cancel() ch := make(chan string, 100) go func() { err = client.ArchiveWatch(ctx, b.Root.Key, ch) close(ch) }() count := 0 for s := range ch { require.NotEmpty(t, s) count++ if count > 4 { cancel() } } require.NoError(t, err) require.Greater(t, count, 3) }) } func TestFailingArchive(t *testing.T) { util.RunFlaky(t, func(t *util.FlakyT) { _, _ = StartPowergate(t) ctx, _, _, _, client, _, shutdown := setup(t) defer shutdown() b, err := client.Create(ctx) require.NoError(t, err) time.Sleep(4 * time.Second) // Store a file that is bigger than the sector size, this // should lead to an error on the PG side. addDataFileToBucket(ctx, t, client, b.Root.Key, "Data3.txt") err = client.Archive(ctx, b.Root.Key) require.NoError(t, err) require.Eventually(t, archiveFinalState(ctx, t, client, b.Root.Key), time.Minute, 2*time.Second) res, err := client.Archives(ctx, b.Root.Key) require.NoError(t, err) require.Equal(t, pb.ArchiveStatus_ARCHIVE_STATUS_FAILED, res.Current.ArchiveStatus) require.NotEmpty(t, res.Current.FailureMsg) }) } func archiveFinalState(ctx context.Context, t util.TestingTWithCleanup, client *c.Client, bucketKey string) func() bool { return func() bool { res, err := client.Archives(ctx, bucketKey) require.NoError(t, err) if res.Current == nil { return false } switch res.Current.ArchiveStatus { case pb.ArchiveStatus_ARCHIVE_STATUS_FAILED, pb.ArchiveStatus_ARCHIVE_STATUS_SUCCESS, pb.ArchiveStatus_ARCHIVE_STATUS_CANCELED: return true case pb.ArchiveStatus_ARCHIVE_STATUS_QUEUED: case pb.ArchiveStatus_ARCHIVE_STATUS_EXECUTING: case pb.ArchiveStatus_ARCHIVE_STATUS_UNSPECIFIED: default: t.Errorf("unknown archive status %v", pb.ArchiveStatus_name[int32(res.Current.ArchiveStatus)]) t.FailNow() } return false } } // addDataFileToBucket add a file from the testdata folder, and returns the // new stringified root Cid of the bucket. func addDataFileToBucket(ctx context.Context, t util.TestingTWithCleanup, client *c.Client, bucketKey string, fileName string) string { q, err := client.PushPaths(ctx, bucketKey) require.NoError(t, err) err = q.AddFile(fileName, "testdata/"+fileName) require.NoError(t, err) for q.Next() { require.NoError(t, q.Err()) assert.NotEmpty(t, q.Current.Path) assert.NotEmpty(t, q.Current.Root) } q.Close() return strings.SplitN(q.Current.Root.String(), "/", 4)[2] } func setup(t util.TestingTWithCleanup) (context.Context, core.Config, *hc.Client, *uc.Client, *c.Client, string, func()) { hubClient, usersClient, threadsclient, buckClient, conf, repo, shutdown := createInfra(t) ctx := createAccount(t, hubClient, threadsclient, conf) return ctx, conf, hubClient, usersClient, buckClient, repo, shutdown } func createInfra(t util.TestingTWithCleanup) (*hc.Client, *uc.Client, *tc.Client, *c.Client, core.Config, string, func()) { conf := apitest.DefaultTextileConfig(t) conf.AddrPowergateAPI = powAddr conf.ArchiveJobPollIntervalFast = time.Second * 5 conf.ArchiveJobPollIntervalSlow = time.Second * 10 conf.MinBucketArchiveSize = 0 conf.MaxBucketArchiveSize = 500 * 1024 * 1024 repo := t.TempDir() shutdown := apitest.MakeTextileWithConfig(t, conf, apitest.WithRepoPath(repo), apitest.WithoutAutoShutdown()) target, err := tutil.TCPAddrFromMultiAddr(conf.AddrAPI) require.NoError(t, err) opts := []grpc.DialOption{grpc.WithInsecure(), grpc.WithPerRPCCredentials(common.Credentials{})} client, err := c.NewClient(target, opts...) require.NoError(t, err) t.Cleanup(func() { err := client.Close() require.NoError(t, err) }) hubclient, err := hc.NewClient(target, opts...) require.NoError(t, err) usersclient, err := uc.NewClient(target, opts...) require.NoError(t, err) threadsclient, err := tc.NewClient(target, opts...) require.NoError(t, err) return hubclient, usersclient, threadsclient, client, conf, repo, shutdown } func createAccount(t util.TestingTWithCleanup, hubclient *hc.Client, threadsclient *tc.Client, conf core.Config) context.Context { user := apitest.Signup(t, hubclient, conf, apitest.NewUsername(), apitest.NewEmail()) ctx := common.NewSessionContext(context.Background(), user.Session) id := thread.NewIDV1(thread.Raw, 32) ctx = common.NewThreadNameContext(ctx, "buckets") err := threadsclient.NewDB(ctx, id) require.NoError(t, err) return common.NewThreadIDContext(ctx, id) } func reSetup(t util.TestingTWithCleanup, conf core.Config, repo string) *c.Client { apitest.MakeTextileWithConfig(t, conf, apitest.WithRepoPath(repo)) target, err := tutil.TCPAddrFromMultiAddr(conf.AddrAPI) require.Nil(t, err) opts := []grpc.DialOption{grpc.WithInsecure(), grpc.WithPerRPCCredentials(common.Credentials{})} client, err := c.NewClient(target, opts...) require.Nil(t, err) t.Cleanup(func() { err := client.Close() require.Nil(t, err) }) return client } ================================================ FILE: integrationtest/pg/pow_client_test.go ================================================ package pg import ( "context" "testing" "github.com/stretchr/testify/require" tutil "github.com/textileio/go-threads/util" userPb "github.com/textileio/powergate/v2/api/gen/powergate/user/v1" "github.com/textileio/textile/v2/api/apitest" "github.com/textileio/textile/v2/api/common" fc "github.com/textileio/textile/v2/api/filecoin/client" hc "github.com/textileio/textile/v2/api/hubd/client" "github.com/textileio/textile/v2/core" "github.com/textileio/textile/v2/util" "google.golang.org/grpc" ) func TestPowClient(t *testing.T) { _, _ = StartPowergate(t) ctx, _, client := setupPowClient(t) t.Run("Addresses", func(t *testing.T) { res, err := client.Addresses(ctx) require.NoError(t, err) require.NotNil(t, res) }) t.Run("Balance", func(t *testing.T) { res0, err := client.Addresses(ctx) require.NoError(t, err) require.NotNil(t, res0) require.GreaterOrEqual(t, len(res0.Addresses), 1) res1, err := client.Balance(ctx, res0.Addresses[0].Address) require.NoError(t, err) require.NotNil(t, res1) }) t.Run("StorageDealRecords", func(t *testing.T) { res, err := client.StorageDealRecords(ctx, &userPb.DealRecordsConfig{IncludeFinal: true}) require.NoError(t, err) require.NotNil(t, res) }) t.Run("RetrievalDealRecords", func(t *testing.T) { res, err := client.RetrievalDealRecords(ctx, nil) require.NoError(t, err) require.NotNil(t, res) }) } func setupPowClient(t util.TestingTWithCleanup) (context.Context, core.Config, *fc.Client) { conf := apitest.DefaultTextileConfig(t) conf.AddrPowergateAPI = powAddr apitest.MakeTextileWithConfig(t, conf) target, err := tutil.TCPAddrFromMultiAddr(conf.AddrAPI) require.NoError(t, err) opts := []grpc.DialOption{grpc.WithInsecure(), grpc.WithPerRPCCredentials(common.Credentials{})} client, err := fc.NewClient(target, opts...) require.NoError(t, err) hubclient, err := hc.NewClient(target, opts...) require.NoError(t, err) user := apitest.Signup(t, hubclient, conf, apitest.NewUsername(), apitest.NewEmail()) ctx := common.NewSessionContext(context.Background(), user.Session) t.Cleanup(func() { err := client.Close() require.NoError(t, err) }) return ctx, conf, client } ================================================ FILE: integrationtest/pg/powcli/Makefile ================================================ up: docker-compose -f docker-compose-pow.yml down -v --remove-orphans rm -rf ~/.textile rm -rf .textile docker-compose -f docker-compose-pow.yml up --build -V ================================================ FILE: integrationtest/pg/powcli/docker-compose-pow.yml ================================================ version: "3.7" services: textile: build: context: ../../../ dockerfile: ./cmd/hubd/Dockerfile.dev volumes: - "${REPO_PATH}/textile:/data/textile" environment: - HUB_LOG_DEBUG=true - HUB_ADDR_API=/ip4/0.0.0.0/tcp/3006 - HUB_ADDR_API_PROXY=/ip4/0.0.0.0/tcp/3007 - HUB_ADDR_MONGO_URI=mongodb://mongo:27017 - HUB_ADDR_MONGO_NAME=textile - HUB_ADDR_THREADS_HOST=/ip4/0.0.0.0/tcp/4006 - HUB_ADDR_THREADS_MONGO_URI=mongodb://mongo:27017 - HUB_ADDR_THREADS_MONGO_NAME=textile_threads - HUB_ADDR_GATEWAY_HOST=/ip4/0.0.0.0/tcp/8006 - HUB_ADDR_GATEWAY_URL - HUB_ADDR_IPFS_API=/dns4/ipfsbuckets/tcp/5001 - HUB_ADDR_BILLING_API= - HUB_ADDR_POWERGATE_API=powergate:5002 - HUB_GATEWAY_SUBDOMAINS - HUB_BUCKETS_MAX_SIZE - HUB_THREADS_MAX_NUMBER_PER_OWNER - HUB_CUSTOMERIO_API_KEY - HUB_EMAIL_SESSION_SECRET=hubsession - HUB_SEGMENT_API_KEY - HUB_SEGMENT_PREFIX - HUB_ARCHIVES_JOB_POLL_INTERVAL_SLOW=5s - HUB_ARCHIVES_JOB_POLL_INTERVAL_FAST=5s ports: - "127.0.0.1:3006:3006" - "127.0.0.1:3007:3007" - "4006:4006" - "127.0.0.1:8006:8006" - "127.0.0.1:40000:40000" security_opt: - "seccomp:unconfined" cap_add: - SYS_PTRACE depends_on: - ipfsbuckets - mongo - powergate - billing powergate: image: textile/powergate:v2.0.0 depends_on: - ipfs - ipfsbuckets - lotus environment: - POWD_DEVNET=true - POWD_LOTUSHOST=/dns4/lotus/tcp/7777 - POWD_IPFSAPIADDR=/dns4/ipfs/tcp/5001 restart: unless-stopped ipfs: image: ipfs/go-ipfs:v0.8.0 ipfsbuckets: image: ipfs/go-ipfs:v0.8.0 volumes: - "${REPO_PATH}/ipfs:/data/ipfs" mongo: image: mongo:latest command: - /bin/bash - -c - | /usr/bin/mongod --fork --logpath /var/log/mongod.log --bind_ip_all --replSet rs0 mongo --eval 'rs.initiate({_id: "rs0", version: 1, members: [{ _id: 0, host: "mongo:27017" }]})' tail -f /var/log/mongod.log lotus: image: textile/lotus-devnet:v1.4.2 environment: - TEXLOTUSDEVNET_SPEED=100 - TEXLOTUSDEVNET_IPFSADDR=/dns4/ipfs/tcp/5001 - TEXLOTUSDEVNET_BIGSECTORS=true - TEXLOTUSDEVNET_ONLINEMODE=true ports: - 1234:7777 logging: driver: none billing: build: context: ../../../ dockerfile: ./api/billingd/Dockerfile.dev environment: - BILLING_LOG_DEBUG=true - BILLING_ADDR_API=/ip4/0.0.0.0/tcp/10006 - BILLING_ADDR_MONGO_URI=mongodb://mongo:27017 - BILLING_ADDR_MONGO_NAME=textile_billing - BILLING_ADDR_GATEWAY_HOST=/ip4/0.0.0.0/tcp/8010 - BILLING_ADDR_GATEWAY_URL - BILLING_STRIPE_API_KEY - BILLING_SEGMENT_API_KEY - BILLING_SEGMENT_PREFIX ports: - "127.0.0.1:10006:10006" - "127.0.0.1:8010:8010" - "127.0.0.1:40001:40000" security_opt: - "seccomp:unconfined" cap_add: - SYS_PTRACE depends_on: - mongo ================================================ FILE: integrationtest/pg/powergate.go ================================================ package pg import ( "context" "fmt" "os" "os/exec" "path" "runtime" "strconv" "time" httpapi "github.com/ipfs/go-ipfs-http-client" "github.com/stretchr/testify/require" pc "github.com/textileio/powergate/v2/api/client" "github.com/textileio/textile/v2/util" "google.golang.org/grpc" ) var powAddr = "127.0.0.1:5002" var ipfsAddr = "/ip4/127.0.0.1/tcp/5022" func StartPowergate(t util.TestingTWithCleanup) (*pc.Client, *httpapi.HttpApi) { os.Setenv("LOTUS_ONLINEMODE", strconv.FormatBool(false)) _, currentFilePath, _, _ := runtime.Caller(0) dirpath := path.Dir(currentFilePath) makeDown := func() { cmd := exec.Command( "docker-compose", "-f", fmt.Sprintf("%s/docker-compose.yml", dirpath), "down", "-v", "--remove-orphans", ) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr if err := cmd.Run(); err != nil { t.Errorf("docker-compose down: %s", err) t.FailNow() } } makeDown() cmd := exec.Command( "docker-compose", "-f", fmt.Sprintf("%s/docker-compose.yml", dirpath), "build", ) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr if err := cmd.Run(); err != nil { t.Errorf("docker-compose build: %s", err) t.FailNow() } cmd = exec.Command( "docker-compose", "-f", fmt.Sprintf("%s/docker-compose.yml", dirpath), "up", "-V", ) //cmd.Stdout = os.Stdout //cmd.Stderr = os.Stderr if err := cmd.Start(); err != nil { t.Errorf("running docker-compose: %s", err) t.FailNow() } t.Cleanup(makeDown) var powc *pc.Client var err error limit := 100 retries := 0 require.Nil(t, err) for retries < limit { powc, err = pc.NewClient(powAddr, grpc.WithInsecure()) require.NoError(t, err) ctx, cancel := context.WithTimeout(context.Background(), time.Second*3) _, err = powc.BuildInfo(ctx) if err == nil { cancel() break } time.Sleep(time.Second) retries++ cancel() } if retries == limit { if err != nil { t.Errorf("trying to confirm build info: %s", err) t.FailNow() } t.Errorf("max retries to connect with Powergate") t.FailNow() } ia := util.MustParseAddr(ipfsAddr) ipfs, err := httpapi.NewApi(ia) require.NoError(t, err) return powc, ipfs } ================================================ FILE: integrationtest/pg/testdata/Data1.txt ================================================ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vulputate quam eget rhoncus sagittis. Suspendisse in tempor arcu, id tempor ante. Cras arcu ipsum, suscipit id elementum ut, sagittis vel ante. Donec non tellus ac urna vestibulum pellentesque et vel urna. Nulla imperdiet sit amet risus nec maximus. Donec a tortor sollicitudin, efficitur ipsum vel, auctor metus. Suspendisse tellus turpis, porttitor vel vehicula ut, iaculis non quam. Suspendisse suscipit vel arcu ut congue. Nullam vel purus sed est accumsan suscipit. ================================================ FILE: integrationtest/pg/testdata/Data2.txt ================================================ Etiam sodales auctor quam sed varius. Sed lobortis nibh nulla, venenatis lobortis neque sollicitudin pellentesque. Ut nec porta ligula. Ut hendrerit nec urna quis molestie. Pellentesque sed interdum arcu. Donec rhoncus venenatis neque, id suscipit velit gravida porttitor. Sed molestie, nisi quis porta maximus, urna risus facilisis nibh, id congue magna odio a nibh. Sed eu quam eu ipsum convallis faucibus vitae et est. Donec viverra, erat at facilisis vehicula, felis diam iaculis lacus, vel ultricies felis augue a orci. Donec ac ex ut urna mattis auctor vel non tellus. Morbi ultricies ipsum sagittis auctor tempus. Proin tortor nulla, sagittis sed augue vel, tempus semper mi. Cras id mollis nulla. Donec finibus diam quis condimentum ultrices. Aenean facilisis purus eget sem imperdiet nullam. ================================================ FILE: integrationtest/pg/testdata/Data3.txt ================================================ Quisque mattis massa sed ante vehicula euismod. Mauris lectus tortor, rhoncus at ipsum sed, faucibus semper mi. Nam eu interdum turpis, id gravida libero. Aliquam pellentesque odio a condimentum auctor. Quisque sit amet pellentesque risus, vestibulum eleifend elit. Cras in facilisis odio. Donec efficitur at velit eu pellentesque. Nunc sodales diam eget ipsum pretium pretium. Phasellus iaculis neque nulla, non vehicula dolor cursus non. Phasellus mollis sem quam, non euismod enim volutpat eget. Fusce a lobortis felis. Etiam vel felis ipsum. Pellentesque ullamcorper arcu gravida turpis pellentesque, at ornare mauris ultrices. Sed sed nisl sed odio pellentesque tincidunt. Integer lobortis eros nisl, vitae interdum felis tristique eget. Proin facilisis eget nunc eget accumsan. Aliquam ut tincidunt nisl, ac tincidunt odio. Cras in ullamcorper risus, eget posuere sem. Morbi in nunc vitae augue tempus sagittis. Donec iaculis, augue ut lacinia faucibus, augue lacus hendrerit libero, ac porttitor ex justo sed enim. Aenean pellentesque, ex sagittis molestie vehicula, mauris urna hendrerit mi, nec venenatis dui ligula sit amet purus. Ut tellus ligula, dapibus a convallis non, elementum vel tortor. Nam eget tincidunt ante, nec faucibus nunc. Proin sed placerat risus. Etiam quis porttitor elit, quis feugiat ante. Ut convallis ut est at ornare. Praesent interdum, lorem luctus euismod varius, turpis augue condimentum dolor, nec posuere elit eros vulputate nulla. Pellentesque habitant integer. Quisque mattis massa sed ante vehicula euismod. Mauris lectus tortor, rhoncus at ipsum sed, faucibus semper mi. Nam eu interdum turpis, id gravida libero. Aliquam pellentesque odio a condimentum auctor. Quisque sit amet pellentesque risus, vestibulum eleifend elit. Cras in facilisis odio. Donec efficitur at velit eu pellentesque. Nunc sodales diam eget ipsum pretium pretium. Phasellus iaculis neque nulla, non vehicula dolor cursus non. Phasellus mollis sem quam, non euismod enim volutpat eget. Fusce a lobortis felis. Etiam vel felis ipsum. Pellentesque ullamcorper arcu gravida turpis pellentesque, at ornare mauris ultrices. Sed sed nisl sed odio pellentesque tincidunt. Integer lobortis eros nisl, vitae interdum felis tristique eget. Proin facilisis eget nunc eget accumsan. Aliquam ut tincidunt nisl, ac tincidunt odio. Cras in ullamcorper risus, eget posuere sem. Morbi in nunc vitae augue tempus sagittis. Donec iaculis, augue ut lacinia faucibus, augue lacus hendrerit libero, ac porttitor ex justo sed enim. Aenean pellentesque, ex sagittis molestie vehicula, mauris urna hendrerit mi, nec venenatis dui ligula sit amet purus. Ut tellus ligula, dapibus a convallis non, elementum vel tortor. Nam eget tincidunt ante, nec faucibus nunc. Proin sed placerat risus. Etiam quis porttitor elit, quis feugiat ante. Ut convallis ut est at ornare. Praesent interdum, lorem luctus euismod varius, turpis augue condimentum dolor, nec posuere elit eros vulputate nulla. Pellentesque habitant integer. Quisque mattis massa sed ante vehicula euismod. Mauris lectus tortor, rhoncus at ipsum sed, faucibus semper mi. Nam eu interdum turpis, id gravida libero. Aliquam pellentesque odio a condimentum auctor. Quisque sit amet pellentesque risus, vestibulum eleifend elit. Cras in facilisis odio. Donec efficitur at velit eu pellentesque. Nunc sodales diam eget ipsum pretium pretium. Phasellus iaculis neque nulla, non vehicula dolor cursus non. Phasellus mollis sem quam, non euismod enim volutpat eget. Fusce a lobortis felis. Etiam vel felis ipsum. Pellentesque ullamcorper arcu gravida turpis pellentesque, at ornare mauris ultrices. Sed sed nisl sed odio pellentesque tincidunt. Integer lobortis eros nisl, vitae interdum felis tristique eget. Proin facilisis eget nunc eget accumsan. Aliquam ut tincidunt nisl, ac tincidunt odio. Cras in ullamcorper risus, eget posuere sem. Morbi in nunc vitae augue tempus sagittis. Donec iaculis, augue ut lacinia faucibus, augue lacus hendrerit libero, ac porttitor ex justo sed enim. Aenean pellentesque, ex sagittis molestie vehicula, mauris urna hendrerit mi, nec venenatis dui ligula sit amet purus. Ut tellus ligula, dapibus a convallis non, elementum vel tortor. Nam eget tincidunt ante, nec faucibus nunc. Proin sed placerat risus. Etiam quis porttitor elit, quis feugiat ante. Ut convallis ut est at ornare. Praesent interdum, lorem luctus euismod varius, turpis augue condimentum dolor, nec posuere elit eros vulputate nulla. Pellentesque habitant integer. ================================================ FILE: ipns/ipns.go ================================================ package ipns import ( "context" "errors" "sync" "time" logging "github.com/ipfs/go-log/v2" iface "github.com/ipfs/interface-go-ipfs-core" "github.com/ipfs/interface-go-ipfs-core/options" "github.com/ipfs/interface-go-ipfs-core/path" "github.com/libp2p/go-libp2p-core/peer" mbase "github.com/multiformats/go-multibase" cron "github.com/robfig/cron/v3" "github.com/textileio/go-threads/core/thread" tutil "github.com/textileio/go-threads/util" mdb "github.com/textileio/textile/v2/mongodb" "github.com/textileio/textile/v2/util" "golang.org/x/sync/errgroup" ) var log = logging.Logger("ipns") const ( // nameLen is the length of the random IPNS key name. nameLen = 16 // publishTimeout publishTimeout = time.Minute * 2 // maxCancelPublishTries is the number of time cancelling a publish is allowed to fail. maxCancelPublishTries = 10 // list all keys timeout listKeysTimeout = time.Hour ) // Manager handles bucket name publishing to IPNS. type Manager struct { keys *mdb.IPNSKeys keyAPI iface.KeyAPI nameAPI iface.NameAPI sync.Mutex keyLocks map[string]chan struct{} ctxsLock sync.Mutex ctxs map[string]context.CancelFunc republisher *cron.Cron republishConcurrency int } // NewManager returns a new IPNS manager. func NewManager( keys *mdb.IPNSKeys, keyAPI iface.KeyAPI, nameAPI iface.NameAPI, republishConcurrency int, debug bool, ) (*Manager, error) { if debug { if err := tutil.SetLogLevels(map[string]logging.LogLevel{ "ipns": logging.LevelDebug, }); err != nil { return nil, err } } return &Manager{ keys: keys, keyAPI: keyAPI, nameAPI: nameAPI, ctxs: make(map[string]context.CancelFunc), keyLocks: make(map[string]chan struct{}), republisher: cron.New(), republishConcurrency: republishConcurrency, }, nil } // StartRepublishing initializes a key republishing cron func (m *Manager) StartRepublishing(schedule string) error { if _, err := m.republisher.AddFunc(schedule, func() { if err := m.republish(); err != nil { log.Errorf("republishing ipns keys: %v", err) } }); err != nil { log.Errorf("republishing aborted: %v", err) return err } m.republisher.Start() return nil } // CreateKey generates and saves a new IPNS key. func (m *Manager) CreateKey(ctx context.Context, dbID thread.ID, path path.Path) (keyID string, err error) { key, err := m.keyAPI.Generate(ctx, util.MakeToken(nameLen), options.Key.Type(options.RSAKey)) if err != nil { return } keyID, err = peer.ToCid(key.ID()).StringOfBase(mbase.Base32) if err != nil { return } if err = m.keys.Create(ctx, key.Name(), keyID, dbID, path.String()); err != nil { return } return keyID, nil } // RemoveKey removes an IPNS key. func (m *Manager) RemoveKey(ctx context.Context, keyID string) error { key, err := m.keys.GetByCid(ctx, keyID) if err != nil { return err } if _, err = m.keyAPI.Remove(ctx, key.Name); err != nil { return err } return m.keys.Delete(ctx, key.Name) } // Publish publishes a path to IPNS with key ID. // Publishing can take up to a minute. Pending publishes are cancelled by consecutive // calls with the same key ID, which results in only the most recent publish succeeding. func (m *Manager) Publish(pth path.Path, keyID string) { ctx, cancel := context.WithTimeout(context.Background(), publishTimeout) defer cancel() key, err := m.keys.GetByCid(ctx, keyID) if err != nil { log.Error("key not found: %s", keyID) return } err = m.keys.SetPath(ctx, pth.String(), key.Name) if err != nil { log.Error("set path failed: %s", keyID) return } m.publish(pth, keyID) } // Close manager. func (m *Manager) Close() { ctx := m.republisher.Stop() <-ctx.Done() log.Info("republisher was shutdown") m.cancel() log.Info("all pending ipns publishes were cancelled") } // cancel all pending publishes. func (m *Manager) cancel() { m.Lock() defer m.Unlock() m.ctxsLock.Lock() defer m.ctxsLock.Unlock() for _, cancel := range m.ctxs { cancel() } } func (m *Manager) publish(pth path.Path, keyID string) { ptl := m.getSemaphore(keyID) try := 0 for { select { case ptl <- struct{}{}: pctx, cancel := context.WithTimeout(context.Background(), publishTimeout) m.ctxsLock.Lock() m.ctxs[keyID] = cancel m.ctxsLock.Unlock() if err := m.publishUnsafe(pctx, pth, keyID); err != nil { if !errors.Is(err, context.Canceled) { // The publish saturation did not meet the default level before the context expired. // In most cases, the entry can still be discovered on the network. log.Debugf("error publishing path %s: %v", pth, err) } else { log.Debugf("publishing path %s was cancelled: %v", pth, err) } } cancel() m.ctxsLock.Lock() delete(m.ctxs, keyID) m.ctxsLock.Unlock() <-ptl return default: m.ctxsLock.Lock() cancel, ok := m.ctxs[keyID] m.ctxsLock.Unlock() if ok { cancel() } else { try++ if try > maxCancelPublishTries { log.Debugf("failed to publish path %s: max tries exceeded", pth) return } else { log.Debugf("failed to cancel publish (%v tries remaining)", maxCancelPublishTries-try) } } } } } func (m *Manager) publishUnsafe(ctx context.Context, pth path.Path, keyID string) error { key, err := m.keys.GetByCid(ctx, keyID) if err != nil { return err } entry, err := m.nameAPI.Publish(ctx, pth, options.Name.Key(key.Name)) if err != nil { return err } log.Debugf("published %s => %s", entry.Value(), entry.Name()) return nil } func (m *Manager) getSemaphore(key string) chan struct{} { var ptl chan struct{} var ok bool m.Lock() defer m.Unlock() if ptl, ok = m.keyLocks[key]; !ok { ptl = make(chan struct{}, 1) m.keyLocks[key] = ptl } return ptl } func (m *Manager) republish() error { ctx, cancel := context.WithTimeout(context.Background(), listKeysTimeout) defer cancel() start := time.Now() keys, err := m.keys.List(ctx) if err != nil { return err } withPath := 0 eg, gctx := errgroup.WithContext(context.Background()) lim := make(chan struct{}, m.republishConcurrency) for _, key := range keys { key := key if key.Path != "" { withPath++ lim <- struct{}{} eg.Go(func() error { defer func() { <-lim }() if gctx.Err() != nil { return nil } m.publish(path.New(key.Path), key.Cid) return nil }) } } for i := 0; i < cap(lim); i++ { lim <- struct{}{} } if err := eg.Wait(); err != nil { return err } log.Infof("republished %d/%d keys in %v", withPath, len(keys), time.Since(start)) return nil } ================================================ FILE: mail/local/mail.go ================================================ package local import ( "context" "encoding/base64" "errors" "os" "path/filepath" "github.com/spf13/cobra" "github.com/textileio/go-threads/core/thread" "github.com/textileio/textile/v2/cmd" ) var ( // ErrNotAMailbox indicates the given path is not within a mailbox. ErrNotAMailbox = errors.New("not a mailbox (or any of the parent directories): .textile") // ErrMailboxExists is used during initialization to indicate the path already contains a mailbox. ErrMailboxExists = errors.New("mailbox is already initialized") // ErrIdentityRequired indicates the operation requires a thread Identity but none was given. ErrIdentityRequired = errors.New("thread Identity is required") // ErrAPIKeyRequired indicates the operation requires am API keybut none was given. ErrAPIKeyRequired = errors.New("api key is required") flags = map[string]cmd.Flag{ "identity": {Key: "identity", DefValue: ""}, "api_key": {Key: "api_key", DefValue: ""}, "api_secret": {Key: "api_secret", DefValue: ""}, } ) // DefaultConfConfig returns the default ConfConfig. func DefaultConfConfig() cmd.ConfConfig { return cmd.ConfConfig{ Dir: ".textile", Name: "config", Type: "yaml", EnvPrefix: "MAIL", } } // Mail is used to create new mailboxes based on the provided clients and config. type Mail struct { config cmd.ConfConfig clients *cmd.Clients } // NewMail creates Mail from clients and config. func NewMail(clients *cmd.Clients, config cmd.ConfConfig) *Mail { return &Mail{clients: clients, config: config} } // Clients returns the underlying clients object. func (m *Mail) Clients() *cmd.Clients { return m.clients } // Config contains details for a new local mailbox. type Config struct { // Path is the path in which the new mailbox should be created (required). Path string // Identity is the thread.Identity of the mailbox owner (required). // It's value may be inflated from a --identity flag or {EnvPrefix}_IDENTITY env variable. Identity thread.Identity // APIKey is hub API key (required). // It's value may be inflated from a --api-key flag or {EnvPrefix}_API_KEY env variable. APIKey string // APISecret is hub API key secret (optional). // It's value may be inflated from a --api-secret flag or {EnvPrefix}_API_SECRET env variable. APISecret string } // NewConfigFromCmd returns a config by inflating values from the given cobra command and path. // First, flags for "identity", "api_key", and "api_secret" are used if they exist. // If still unset, the env vars {EnvPrefix}_IDENTITY, {EnvPrefix}_API_KEY, and {EnvPrefix}_API_SECRET are used. func (m *Mail) NewConfigFromCmd(c *cobra.Command, pth string) (conf Config, err error) { conf.Path = pth id := cmd.GetFlagOrEnvValue(c, "identity", m.config.EnvPrefix) if id == "" { return conf, ErrIdentityRequired } idb, err := base64.StdEncoding.DecodeString(id) if err != nil { return } conf.Identity = &thread.Libp2pIdentity{} if err = conf.Identity.UnmarshalBinary(idb); err != nil { return } conf.APIKey = cmd.GetFlagOrEnvValue(c, "api_key", m.config.EnvPrefix) if conf.APIKey == "" { return conf, ErrAPIKeyRequired } conf.APISecret = cmd.GetFlagOrEnvValue(c, "api_secret", m.config.EnvPrefix) return conf, nil } // NewMailbox initializes a new mailbox from the config. func (m *Mail) NewMailbox(ctx context.Context, conf Config) (box *Mailbox, err error) { // Ensure we're not going to overwrite an existing local config cwd, err := filepath.Abs(conf.Path) if err != nil { return } mc, found, err := m.config.NewConfig(cwd, flags, true) if err != nil { return } if found { return nil, ErrMailboxExists } // Check config values if conf.Identity == nil { return nil, ErrIdentityRequired } idb, err := conf.Identity.MarshalBinary() if err != nil { return } mc.Viper.Set("identity", base64.StdEncoding.EncodeToString(idb)) mc.Viper.Set("api_key", conf.APIKey) if conf.APIKey == "" { return nil, ErrAPIKeyRequired } mc.Viper.Set("api_secret", conf.APISecret) box = &Mailbox{ cwd: cwd, conf: mc, clients: m.clients, id: conf.Identity, } ctx, err = box.context(ctx) if err != nil { return } if _, err = m.clients.Users.SetupMailbox(ctx); err != nil { return } // Write the local config to disk dir := filepath.Join(cwd, box.conf.Dir) if err = os.MkdirAll(dir, os.ModePerm); err != nil { return } config := filepath.Join(dir, box.conf.Name+".yml") if err = box.conf.Viper.WriteConfigAs(config); err != nil { return } cfile, err := filepath.Abs(config) if err != nil { return } box.conf.Viper.SetConfigFile(cfile) return box, nil } // GetLocalMailbox loads and returns the mailbox at path if it exists. func (m *Mail) GetLocalMailbox(_ context.Context, pth string) (*Mailbox, error) { cwd, err := filepath.Abs(pth) if err != nil { return nil, err } mc, found, err := m.config.NewConfig(cwd, flags, true) if err != nil { return nil, err } if !found { return nil, ErrNotAMailbox } cmd.ExpandConfigVars(mc.Viper, mc.Flags) box := &Mailbox{ cwd: cwd, conf: mc, clients: m.clients, } if err = box.loadIdentity(); err != nil { return nil, err } return box, nil } ================================================ FILE: mail/local/mail_test.go ================================================ package local_test import ( "context" "crypto/rand" "encoding/base64" "io/ioutil" "os" "testing" "github.com/libp2p/go-libp2p-core/crypto" "github.com/spf13/cobra" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/textileio/go-threads/core/thread" tutil "github.com/textileio/go-threads/util" "github.com/textileio/textile/v2/api/apitest" "github.com/textileio/textile/v2/api/common" hubpb "github.com/textileio/textile/v2/api/hubd/pb" "github.com/textileio/textile/v2/cmd" . "github.com/textileio/textile/v2/mail/local" ) func TestMain(m *testing.M) { cleanup := func() {} if os.Getenv("SKIP_SERVICES") != "true" { cleanup = apitest.StartServices() } exitVal := m.Run() cleanup() os.Exit(exitVal) } func TestMail_NewMailbox(t *testing.T) { mail, key, secret := setup(t) t.Run("new mailbox", func(t *testing.T) { conf := getConf(t, key, secret) box, err := mail.NewMailbox(context.Background(), conf) require.NoError(t, err) assert.NotEmpty(t, box) reloaded, err := mail.GetLocalMailbox(context.Background(), conf.Path) require.NoError(t, err) assert.NotEmpty(t, reloaded) }) } func TestBuckets_NewConfigFromCmd(t *testing.T) { mail, key, secret := setup(t) id := createIdentity(t) t.Run("no identity", func(t *testing.T) { dir := newDir(t) c := &cobra.Command{ Use: "init", Run: func(c *cobra.Command, args []string) { _, err := mail.NewConfigFromCmd(c, dir) require.Error(t, err) assert.Equal(t, ErrIdentityRequired, err) }, } err := c.Execute() require.NoError(t, err) }) t.Run("no api key", func(t *testing.T) { dir := newDir(t) c := &cobra.Command{ Use: "init", Run: func(c *cobra.Command, args []string) { _, err := mail.NewConfigFromCmd(c, dir) require.Error(t, err) assert.Equal(t, ErrAPIKeyRequired, err) }, } c.PersistentFlags().String("identity", "", "") idb, err := id.MarshalBinary() require.NoError(t, err) ids := base64.StdEncoding.EncodeToString(idb) err = c.PersistentFlags().Set("identity", ids) require.NoError(t, err) err = c.Execute() require.NoError(t, err) }) t.Run("with flags and set values", func(t *testing.T) { c := initCmd(t, mail, id, key, secret, true, false) idb, err := id.MarshalBinary() require.NoError(t, err) ids := base64.StdEncoding.EncodeToString(idb) err = c.PersistentFlags().Set("identity", ids) require.NoError(t, err) err = c.PersistentFlags().Set("api_key", key) require.NoError(t, err) err = c.PersistentFlags().Set("api_secret", secret) require.NoError(t, err) err = c.Execute() require.NoError(t, err) }) t.Run("no flags and env values", func(t *testing.T) { c := initCmd(t, mail, id, key, secret, false, false) idb, err := id.MarshalBinary() require.NoError(t, err) ids := base64.StdEncoding.EncodeToString(idb) err = os.Setenv("MAIL_IDENTITY", ids) require.NoError(t, err) err = os.Setenv("MAIL_API_KEY", key) require.NoError(t, err) err = os.Setenv("MAIL_API_SECRET", secret) require.NoError(t, err) err = c.Execute() require.NoError(t, err) }) t.Run("with flags and env values", func(t *testing.T) { c := initCmd(t, mail, id, key, secret, true, false) idb, err := id.MarshalBinary() require.NoError(t, err) ids := base64.StdEncoding.EncodeToString(idb) err = os.Setenv("MAIL_IDENTITY", ids) require.NoError(t, err) err = os.Setenv("MAIL_API_KEY", key) require.NoError(t, err) err = os.Setenv("MAIL_API_SECRET", secret) require.NoError(t, err) err = c.Execute() require.NoError(t, err) }) } func initCmd( t *testing.T, mail *Mail, id thread.Identity, key, secret string, addFlags, setDefaults bool, ) *cobra.Command { dir := newDir(t) c := &cobra.Command{ Use: "init", Run: func(c *cobra.Command, args []string) { conf, err := mail.NewConfigFromCmd(c, dir) require.NoError(t, err) assert.Equal(t, dir, conf.Path) assert.Equal(t, id.GetPublic().String(), conf.Identity.GetPublic().String()) assert.Equal(t, key, conf.APIKey) assert.Equal(t, secret, conf.APISecret) }, } var did, dkey, dsecret string if setDefaults { idb, err := id.MarshalBinary() require.NoError(t, err) did = base64.StdEncoding.EncodeToString(idb) dkey = key dsecret = secret } if addFlags { c.PersistentFlags().String("identity", did, "") c.PersistentFlags().String("api_key", dkey, "") c.PersistentFlags().String("api_secret", dsecret, "") } return c } func setup(t *testing.T) (m *Mail, key string, secret string) { conf := apitest.MakeTextile(t) target, err := tutil.TCPAddrFromMultiAddr(conf.AddrAPI) require.NoError(t, err) clients := cmd.NewClients(target, true, "") t.Cleanup(func() { clients.Close() }) dev := apitest.Signup(t, clients.Hub, conf, apitest.NewUsername(), apitest.NewEmail()) res, err := clients.Hub.CreateKey( common.NewSessionContext(context.Background(), dev.Session), hubpb.KeyType_KEY_TYPE_USER, true, ) require.NoError(t, err) return NewMail(clients, DefaultConfConfig()), res.KeyInfo.Key, res.KeyInfo.Secret } func getConf(t *testing.T, key, secret string) Config { return Config{ Path: newDir(t), Identity: createIdentity(t), APIKey: key, APISecret: secret, } } func createIdentity(t *testing.T) thread.Identity { sk, _, err := crypto.GenerateEd25519Key(rand.Reader) if err != nil { t.Fatal(err) } return thread.NewLibp2pIdentity(sk) } func newDir(t *testing.T) string { dir, err := ioutil.TempDir("", "") require.NoError(t, err) t.Cleanup(func() { _ = os.RemoveAll(dir) }) return dir } ================================================ FILE: mail/local/mailbox.go ================================================ package local import ( "context" "encoding/base64" "fmt" "time" tc "github.com/textileio/go-threads/api/client" "github.com/textileio/go-threads/core/db" "github.com/textileio/go-threads/core/thread" "github.com/textileio/textile/v2/api/common" "github.com/textileio/textile/v2/api/usersd/client" "github.com/textileio/textile/v2/cmd" "github.com/textileio/textile/v2/mail" ) // Mailbox is a local-first messaging library built on ThreadDB and IPFS. type Mailbox struct { cwd string conf *cmd.Config clients *cmd.Clients id thread.Identity token thread.Token } // Identity returns the mailbox's identity. func (m *Mailbox) Identity() thread.Identity { return m.id } // SendMessage sends the message body to a recipient. func (m *Mailbox) SendMessage(ctx context.Context, to thread.PubKey, body []byte) (msg client.Message, err error) { ctx, err = m.context(ctx) if err != nil { return } return m.clients.Users.SendMessage(ctx, m.id, to, body) } // ListInboxMessages lists messages from the inbox. // Use options to paginate with seek and limit, // and filter by read status. func (m *Mailbox) ListInboxMessages(ctx context.Context, opts ...client.ListOption) ([]client.Message, error) { ctx, err := m.context(ctx) if err != nil { return nil, err } return m.clients.Users.ListInboxMessages(ctx, opts...) } // ListSentboxMessages lists messages from the sentbox. // Use options to paginate with seek and limit. func (m *Mailbox) ListSentboxMessages(ctx context.Context, opts ...client.ListOption) ([]client.Message, error) { ctx, err := m.context(ctx) if err != nil { return nil, err } return m.clients.Users.ListSentboxMessages(ctx, opts...) } const reconnectInterval = time.Second * 5 // MailboxEvent describes an event that occurred in a mailbox. type MailboxEvent struct { // Type of event. Type MailboxEventType // Message identifier. MessageID db.InstanceID // Message will contain the full message unless this is a delete event. Message client.Message } // MailboxEventType is the type of mailbox event. type MailboxEventType int const ( // NewMessage indicates the mailbox has a new message. NewMessage MailboxEventType = iota // MessageRead indicates a message was read in the mailbox. MessageRead // MessageDeleted indicates a message was deleted from the mailbox. MessageDeleted ) // WatchInbox watches the inbox for new mailbox events. // If offline is true, this will keep watching during network interruptions. // Returns a channel of watch connectivity states. // Cancel context to stop watching. func (m *Mailbox) WatchInbox(ctx context.Context, mevents chan<- MailboxEvent, offline bool) (<-chan cmd.WatchState, error) { ctx, err := m.context(ctx) if err != nil { return nil, err } box, err := m.clients.Users.SetupMailbox(ctx) if err != nil { return nil, err } if !offline { return m.listenWhileConnected(ctx, box, mail.InboxCollectionName, mevents) } return cmd.Watch(ctx, func(ctx context.Context) (<-chan cmd.WatchState, error) { return m.listenWhileConnected(ctx, box, mail.InboxCollectionName, mevents) }, reconnectInterval) } // WatchSentbox watches the sentbox for new mailbox events. // If offline is true, this will keep watching during network interruptions. // Returns a channel of watch connectivity states. // Cancel context to stop watching. func (m *Mailbox) WatchSentbox(ctx context.Context, mevents chan<- MailboxEvent, offline bool) (<-chan cmd.WatchState, error) { ctx, err := m.context(ctx) if err != nil { return nil, err } box, err := m.clients.Users.SetupMailbox(ctx) if err != nil { return nil, err } if !offline { return m.listenWhileConnected(ctx, box, mail.SentboxCollectionName, mevents) } return cmd.Watch(ctx, func(ctx context.Context) (<-chan cmd.WatchState, error) { return m.listenWhileConnected(ctx, box, mail.SentboxCollectionName, mevents) }, reconnectInterval) } // listenWhileConnected will listen until context is canceled or an error occurs. func (m *Mailbox) listenWhileConnected(ctx context.Context, boxID thread.ID, boxName string, mevents chan<- MailboxEvent) (<-chan cmd.WatchState, error) { state := make(chan cmd.WatchState) go func() { defer close(state) // Start listening for remote changes events, err := m.clients.Threads.Listen(ctx, boxID, []tc.ListenOption{{ Type: tc.ListenAll, Collection: boxName, }}) if err != nil { state <- cmd.WatchState{Err: err, Aborted: !cmd.IsConnectionError(err)} return } errs := make(chan error) go func() { for e := range events { if e.Err != nil { errs <- e.Err // events will close on error continue } switch e.Action.Type { case tc.ActionCreate, tc.ActionSave: var msg client.Message if err := msg.UnmarshalInstance(e.Action.Instance); err != nil { errs <- err return } var t MailboxEventType if e.Action.Type == tc.ActionCreate { t = NewMessage } else { t = MessageRead } mevents <- MailboxEvent{ Type: t, MessageID: db.InstanceID(e.Action.InstanceID), Message: msg, } case tc.ActionDelete: mevents <- MailboxEvent{ Type: MessageDeleted, MessageID: db.InstanceID(e.Action.InstanceID), } } } }() // If we made it here, we must be online state <- cmd.WatchState{State: cmd.Online} for { select { case err := <-errs: state <- cmd.WatchState{Err: err, Aborted: !cmd.IsConnectionError(err)} return case <-ctx.Done(): return } } }() return state, nil } // ReadInboxMessage marks a message as read by ID. func (m *Mailbox) ReadInboxMessage(ctx context.Context, id string) error { ctx, err := m.context(ctx) if err != nil { return err } return m.clients.Users.ReadInboxMessage(ctx, id) } // DeleteInboxMessage deletes an inbox message by ID. func (m *Mailbox) DeleteInboxMessage(ctx context.Context, id string) error { ctx, err := m.context(ctx) if err != nil { return err } return m.clients.Users.DeleteInboxMessage(ctx, id) } // DeleteSentboxMessage deletes a sent message by ID. func (m *Mailbox) DeleteSentboxMessage(ctx context.Context, id string) error { ctx, err := m.context(ctx) if err != nil { return err } return m.clients.Users.DeleteSentboxMessage(ctx, id) } // Identity returns the mailbox's user identity. func (m *Mailbox) loadIdentity() error { ids := m.conf.Viper.GetString("identity") if ids == "" { return fmt.Errorf("identity not found") } idb, err := base64.StdEncoding.DecodeString(ids) if err != nil { return fmt.Errorf("loading identity: %v", err) } m.id = &thread.Libp2pIdentity{} if err = m.id.UnmarshalBinary(idb); err != nil { return fmt.Errorf("unmarshalling identity: %v", err) } return nil } func (m *Mailbox) context(ctx context.Context) (context.Context, error) { ctx = common.NewAPIKeyContext(ctx, m.conf.Viper.GetString("api_key")) secret := m.conf.Viper.GetString("api_secret") if secret != "" { var err error ctx, err = common.CreateAPISigContext(ctx, time.Now().Add(time.Hour), secret) if err != nil { return nil, err } } if m.token == "" { tok, err := m.clients.Threads.GetToken(ctx, m.id) if err != nil { return nil, err } m.token = tok } ctx = thread.NewTokenContext(ctx, m.token) return ctx, nil } ================================================ FILE: mail/local/mailbox_test.go ================================================ package local_test import ( "context" "fmt" "sync" "testing" "time" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/textileio/textile/v2/api/usersd/client" . "github.com/textileio/textile/v2/mail/local" ) func TestMailbox_Identity(t *testing.T) { mail, key, secret := setup(t) conf := getConf(t, key, secret) box, err := mail.NewMailbox(context.Background(), conf) require.NoError(t, err) assert.Equal(t, conf.Identity.GetPublic(), box.Identity().GetPublic()) } func TestMailbox_SendMessage(t *testing.T) { mail, key, secret := setup(t) conf1 := getConf(t, key, secret) box1, err := mail.NewMailbox(context.Background(), conf1) require.NoError(t, err) conf2 := getConf(t, key, secret) box2, err := mail.NewMailbox(context.Background(), conf2) require.NoError(t, err) m1, err := box1.SendMessage(context.Background(), box2.Identity().GetPublic(), []byte("howdy")) require.NoError(t, err) assert.NotEmpty(t, m1.ID) assert.Equal(t, box1.Identity().GetPublic(), m1.From) assert.Equal(t, box2.Identity().GetPublic(), m1.To) ok, err := box1.Identity().GetPublic().Verify(m1.Body, m1.Signature) require.NoError(t, err) require.True(t, ok) assert.Equal(t, false, m1.IsRead()) assert.NotEmpty(t, m1.CreatedAt) b1, err := m1.Open(context.Background(), box1.Identity()) require.NoError(t, err) assert.Equal(t, "howdy", string(b1)) list2, err := box2.ListInboxMessages(context.Background()) require.NoError(t, err) assert.Len(t, list2, 1) m2 := list2[0] b2, err := m2.Open(context.Background(), box2.Identity()) require.NoError(t, err) assert.Equal(t, "howdy", string(b2)) } func TestMailbox_Watch(t *testing.T) { mail, key, secret := setup(t) conf1 := getConf(t, key, secret) box1, err := mail.NewMailbox(context.Background(), conf1) require.NoError(t, err) conf2 := getConf(t, key, secret) box2, err := mail.NewMailbox(context.Background(), conf2) require.NoError(t, err) var wg sync.WaitGroup ctx, cancel := context.WithCancel(context.Background()) defer cancel() events1 := make(chan MailboxEvent) defer close(events1) ec1 := &eventCollector{} go ec1.collect(events1) wg.Add(1) go func() { defer wg.Done() state, err := box1.WatchInbox(ctx, events1, true) require.NoError(t, err) for s := range state { fmt.Println(fmt.Sprintf("received inbox watch state: %s", s.State)) } }() events2 := make(chan MailboxEvent) defer close(events2) ec2 := &eventCollector{} go ec2.collect(events2) wg.Add(1) go func() { defer wg.Done() state, err := box2.WatchSentbox(ctx, events2, true) require.NoError(t, err) for s := range state { fmt.Println(fmt.Sprintf("received sentbox watch state: %s", s.State)) } }() time.Sleep(time.Second) // Ensure the listener is ready sent := make([]client.Message, 3) for i := range sent { sent[i], err = box2.SendMessage(context.Background(), box1.Identity().GetPublic(), []byte("hi")) require.NoError(t, err) } err = box1.ReadInboxMessage(context.Background(), sent[0].ID) require.NoError(t, err) err = box1.DeleteInboxMessage(context.Background(), sent[1].ID) require.NoError(t, err) err = box2.DeleteSentboxMessage(context.Background(), sent[2].ID) require.NoError(t, err) cancel() // Stop listening wg.Wait() ec1.check(t, len(sent), 1, 1) ec2.check(t, len(sent), 0, 1) } type eventCollector struct { new int read int deleted int sync.Mutex } func (c *eventCollector) collect(events chan MailboxEvent) { for e := range events { c.Lock() switch e.Type { case NewMessage: c.new++ case MessageRead: c.read++ case MessageDeleted: c.deleted++ } c.Unlock() } } func (c *eventCollector) check(t *testing.T, numNew, numRead, numDeleted int) { time.Sleep(5 * time.Second) c.Lock() defer c.Unlock() assert.Equal(t, numNew, c.new) assert.Equal(t, numRead, c.read) assert.Equal(t, numDeleted, c.deleted) } ================================================ FILE: mail/mail.go ================================================ package mail const ( // ThreadName is the name of the threaddb used for mail. ThreadName = "hubmail" // InboxCollectionName is the name of the threaddb collection used for an inbox. InboxCollectionName = "inbox" // SentbocCollectionName is the name of the threaddb collection used for a sentbox. SentboxCollectionName = "sentbox" ) ================================================ FILE: mongodb/accounts.go ================================================ package mongodb import ( "context" "crypto/rand" "errors" "fmt" "regexp" "time" "github.com/gosimple/slug" "github.com/libp2p/go-libp2p-core/crypto" "github.com/textileio/go-threads/core/thread" "github.com/textileio/textile/v2/util" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) var ( usernameRx *regexp.Regexp ErrInvalidUsername = fmt.Errorf("username may only contain alphanumeric characters or single hyphens, " + "and cannot begin or end with a hyphen") ) func init() { usernameRx = regexp.MustCompile(`^[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)?$`) } type Account struct { Type AccountType Key thread.PubKey Secret thread.Identity Name string Username string Email string Token thread.Token Members []Member PowInfo *PowInfo CreatedAt time.Time } type AccountType int const ( Dev AccountType = iota Org User ) type Member struct { Key thread.PubKey Username string Role Role } type Role int const ( OrgOwner Role = iota OrgMember ) func (r Role) String() (s string) { switch r { case OrgOwner: s = "owner" case OrgMember: s = "member" } return } type AccountCtx struct { User *Account Org *Account } func NewAccountContext(ctx context.Context, user, org *Account) context.Context { return context.WithValue(ctx, ctxKey("account"), &AccountCtx{ User: user, Org: org, }) } func AccountCtxForAccount(account *Account) *AccountCtx { actx := &AccountCtx{} if account.Type == Org { actx.Org = account } else { actx.User = account } return actx } func AccountFromContext(ctx context.Context) (*AccountCtx, bool) { acc, ok := ctx.Value(ctxKey("account")).(*AccountCtx) return acc, ok } func (ac *AccountCtx) Owner() *Account { if ac.Org != nil { return ac.Org } return ac.User } type Accounts struct { col *mongo.Collection } func NewAccounts(ctx context.Context, db *mongo.Database) (*Accounts, error) { a := &Accounts{col: db.Collection("accounts")} _, err := a.col.Indexes().CreateMany(ctx, []mongo.IndexModel{ { Keys: bson.D{primitive.E{Key: "username", Value: 1}}, Options: options.Index(). SetUnique(true). SetCollation(&options.Collation{Locale: "en", Strength: 2}). SetSparse(true), }, { Keys: bson.D{primitive.E{Key: "email", Value: 1}}, Options: options.Index(). SetUnique(true). SetSparse(true), }, { Keys: bson.D{primitive.E{Key: "members._id", Value: 1}}, }, }) return a, err } func (a *Accounts) CreateDev(ctx context.Context, username, email string, powInfo *PowInfo) (*Account, error) { if err := a.ValidateUsername(username); err != nil { return nil, err } sk, pk, err := crypto.GenerateEd25519Key(rand.Reader) if err != nil { return nil, err } doc := &Account{ Type: Dev, Key: thread.NewLibp2pPubKey(pk), Secret: thread.NewLibp2pIdentity(sk), Email: email, Username: username, PowInfo: powInfo, CreatedAt: time.Now(), } id, err := doc.Key.MarshalBinary() if err != nil { return nil, err } secret, err := doc.Secret.MarshalBinary() if err != nil { return nil, err } data := bson.M{ "_id": id, "type": int32(doc.Type), "secret": secret, "email": doc.Email, "username": doc.Username, "created_at": doc.CreatedAt, } encodePowInfo(data, doc.PowInfo) if _, err := a.col.InsertOne(ctx, data); err != nil { return nil, err } return doc, nil } func (a *Accounts) CreateOrg(ctx context.Context, name string, members []Member, powInfo *PowInfo) (*Account, error) { slg, ok := util.ToValidName(name) if !ok { return nil, fmt.Errorf("name '%s' is not available", name) } sk, pk, err := crypto.GenerateEd25519Key(rand.Reader) if err != nil { return nil, err } var haveOwner bool for _, m := range members { if m.Role == OrgOwner { haveOwner = true break } } if !haveOwner { return nil, fmt.Errorf("an org must have at least one owner") } doc := &Account{ Type: Org, Key: thread.NewLibp2pPubKey(pk), Secret: thread.NewLibp2pIdentity(sk), Name: name, Username: slg, Members: members, PowInfo: powInfo, CreatedAt: time.Now(), } id, err := doc.Key.MarshalBinary() if err != nil { return nil, err } secret, err := doc.Secret.MarshalBinary() if err != nil { return nil, err } rmems := make(bson.A, len(doc.Members)) for i, m := range doc.Members { k, err := m.Key.MarshalBinary() if err != nil { return nil, err } rmems[i] = bson.M{ "_id": k, "username": m.Username, "role": int32(m.Role), } } data := bson.M{ "_id": id, "type": doc.Type, "secret": secret, "name": doc.Name, "username": doc.Username, "members": rmems, "created_at": doc.CreatedAt, } encodePowInfo(data, doc.PowInfo) if _, err = a.col.InsertOne(ctx, data); err != nil { return nil, err } return doc, nil } func (a *Accounts) CreateUser(ctx context.Context, key thread.PubKey, powInfo *PowInfo) (*Account, error) { doc := &Account{ Type: User, Key: key, PowInfo: powInfo, CreatedAt: time.Now(), } id, err := doc.Key.MarshalBinary() if err != nil { return nil, err } data := bson.M{ "_id": id, "type": int32(doc.Type), "created_at": doc.CreatedAt, } encodePowInfo(data, doc.PowInfo) if _, err := a.col.InsertOne(ctx, data); err != nil { return nil, err } return doc, nil } func (a *Accounts) Get(ctx context.Context, key thread.PubKey) (*Account, error) { id, err := key.MarshalBinary() if err != nil { return nil, err } res := a.col.FindOne(ctx, bson.M{"_id": id}) if res.Err() != nil { return nil, res.Err() } var raw bson.M if err := res.Decode(&raw); err != nil { return nil, err } return decodeAccount(raw) } func (a *Accounts) GetByUsername(ctx context.Context, username string) (*Account, error) { res := a.col.FindOne(ctx, bson.M{"username": username}) if res.Err() != nil { return nil, res.Err() } var raw bson.M if err := res.Decode(&raw); err != nil { return nil, err } return decodeAccount(raw) } func (a *Accounts) GetByUsernameOrEmail(ctx context.Context, usernameOrEmail string) (*Account, error) { res := a.col.FindOne(ctx, bson.D{ primitive.E{Key: "$or", Value: bson.A{ bson.D{ primitive.E{Key: "username", Value: usernameOrEmail}, }, bson.D{ primitive.E{Key: "email", Value: usernameOrEmail}, }, }}, }) if res.Err() != nil { return nil, res.Err() } var raw bson.M if err := res.Decode(&raw); err != nil { return nil, err } return decodeAccount(raw) } func (a *Accounts) ValidateUsername(username string) error { if !usernameRx.MatchString(username) { return ErrInvalidUsername } return nil } func (a *Accounts) IsUsernameAvailable(ctx context.Context, username string) error { if err := a.ValidateUsername(username); err != nil { return err } res := a.col.FindOne(ctx, bson.M{"username": username}) if res.Err() != nil { if errors.Is(res.Err(), mongo.ErrNoDocuments) { return nil } return res.Err() } return fmt.Errorf("username '%s' is not available", username) } func (a *Accounts) IsNameAvailable(ctx context.Context, name string) (s string, err error) { s = slug.Make(name) res := a.col.FindOne(ctx, bson.M{"username": s}) if res.Err() != nil { if errors.Is(res.Err(), mongo.ErrNoDocuments) { return } err = res.Err() return } return s, fmt.Errorf("the name '%s' is already taken", name) } func (a *Accounts) SetToken(ctx context.Context, key thread.PubKey, token thread.Token) error { id, err := key.MarshalBinary() if err != nil { return err } res, err := a.col.UpdateOne(ctx, bson.M{"_id": id}, bson.M{"$set": bson.M{"token": token}}) if err != nil { return err } if res.MatchedCount == 0 { return mongo.ErrNoDocuments } return nil } func (a *Accounts) UpdatePowInfo(ctx context.Context, key thread.PubKey, powInfo *PowInfo) (*Account, error) { id, err := key.MarshalBinary() if err != nil { return nil, err } update := bson.M{} encodePowInfo(update, powInfo) res, err := a.col.UpdateOne( ctx, bson.M{"_id": id}, bson.M{"$set": update}, ) if err != nil { return nil, err } if res.ModifiedCount != 1 { return nil, fmt.Errorf("should have modified 1 record but updated %v", res.ModifiedCount) } return a.Get(ctx, key) } func (a *Accounts) ListByMember(ctx context.Context, member thread.PubKey) ([]Account, error) { mid, err := member.MarshalBinary() if err != nil { return nil, err } filter := bson.M{"members": bson.M{"$elemMatch": bson.M{"_id": mid}}} cursor, err := a.col.Find(ctx, filter) if err != nil { return nil, err } defer cursor.Close(ctx) var docs []Account for cursor.Next(ctx) { var raw bson.M if err := cursor.Decode(&raw); err != nil { return nil, err } doc, err := decodeAccount(raw) if err != nil { return nil, err } docs = append(docs, *doc) } if err := cursor.Err(); err != nil { return nil, err } return docs, nil } func (a *Accounts) ListByOwner(ctx context.Context, owner thread.PubKey) ([]Account, error) { oid, err := owner.MarshalBinary() if err != nil { return nil, err } filter := bson.M{"members": bson.M{"$elemMatch": bson.M{"_id": oid, "role": OrgOwner}}} cursor, err := a.col.Find(ctx, filter) if err != nil { return nil, err } defer cursor.Close(ctx) var docs []Account for cursor.Next(ctx) { var raw bson.M if err := cursor.Decode(&raw); err != nil { return nil, err } doc, err := decodeAccount(raw) if err != nil { return nil, err } docs = append(docs, *doc) } if err := cursor.Err(); err != nil { return nil, err } return docs, nil } func (a *Accounts) ListMembers(ctx context.Context, members []Member) ([]Account, error) { keys := make([][]byte, len(members)) var err error for i, m := range members { keys[i], err = m.Key.MarshalBinary() if err != nil { return nil, err } } cursor, err := a.col.Find(ctx, bson.M{"_id": bson.M{"$in": keys}}) if err != nil { return nil, err } defer cursor.Close(ctx) var docs []Account for cursor.Next(ctx) { var raw bson.M if err := cursor.Decode(&raw); err != nil { return nil, err } doc, err := decodeAccount(raw) if err != nil { return nil, err } docs = append(docs, *doc) } if err := cursor.Err(); err != nil { return nil, err } return docs, nil } func (a *Accounts) IsOwner(ctx context.Context, username string, member thread.PubKey) (bool, error) { mid, err := member.MarshalBinary() if err != nil { return false, err } filter := bson.M{"username": username, "members": bson.M{"$elemMatch": bson.M{"_id": mid, "role": OrgOwner}}} res := a.col.FindOne(ctx, filter) if res.Err() != nil { if errors.Is(res.Err(), mongo.ErrNoDocuments) { return false, nil } else { return false, res.Err() } } return true, nil } func (a *Accounts) IsMember(ctx context.Context, username string, member thread.PubKey) (bool, error) { mid, err := member.MarshalBinary() if err != nil { return false, err } filter := bson.M{"username": username, "members": bson.M{"$elemMatch": bson.M{"_id": mid}}} res := a.col.FindOne(ctx, filter) if res.Err() != nil { if errors.Is(res.Err(), mongo.ErrNoDocuments) { return false, nil } else { return false, res.Err() } } return true, nil } func (a *Accounts) AddMember(ctx context.Context, username string, member Member) error { mk, err := member.Key.MarshalBinary() if err != nil { return err } raw := bson.M{ "_id": mk, "username": member.Username, "role": int(member.Role), } _, err = a.col.UpdateOne(ctx, bson.M{ "username": username, "members._id": bson.M{"$ne": mk}, }, bson.M{"$push": bson.M{"members": raw}}) return err } func (a *Accounts) RemoveMember(ctx context.Context, username string, member thread.PubKey) error { isOwner, err := a.IsOwner(ctx, username, member) if err != nil { return err } if isOwner { // Ensure there will still be at least one owner left cursor, err := a.col.Aggregate(ctx, mongo.Pipeline{ bson.D{primitive.E{Key: "$match", Value: bson.M{"username": username}}}, bson.D{primitive.E{Key: "$project", Value: bson.M{ "members": bson.M{ "$filter": bson.M{ "input": "$members", "as": "member", "cond": bson.M{"$eq": bson.A{"$$member.role", 0}}, }, }, }}}, bson.D{primitive.E{Key: "$count", Value: "members"}}, }, options.Aggregate().SetHint(bson.D{primitive.E{Key: "username", Value: 1}})) if err != nil { return err } defer cursor.Close(ctx) type res struct { Owners int `bson:"members"` } var r res cursor.Next(ctx) if err := cursor.Decode(&r); err != nil { return err } if err := cursor.Err(); err != nil { return err } if r.Owners < 2 { return fmt.Errorf("an org must have at least one owner") } } mid, err := member.MarshalBinary() if err != nil { return err } res, err := a.col.UpdateOne(ctx, bson.M{ "username": username, }, bson.M{"$pull": bson.M{"members": bson.M{"_id": mid}}}) if err != nil { return err } if res.MatchedCount == 0 { return mongo.ErrNoDocuments } return nil } func (a *Accounts) Delete(ctx context.Context, key thread.PubKey) error { id, err := key.MarshalBinary() if err != nil { return err } res, err := a.col.DeleteOne(ctx, bson.M{"_id": id}) if err != nil { return err } if res.DeletedCount == 0 { return mongo.ErrNoDocuments } return nil } func decodeAccount(raw bson.M) (*Account, error) { key := &thread.Libp2pPubKey{} err := key.UnmarshalBinary(raw["_id"].(primitive.Binary).Data) if err != nil { return nil, err } var username, name, email string if v, ok := raw["username"]; ok { username = v.(string) } if v, ok := raw["name"]; ok { name = v.(string) } if v, ok := raw["email"]; ok { email = v.(string) } var secret *thread.Libp2pIdentity if v, ok := raw["secret"]; ok { secret = &thread.Libp2pIdentity{} err := secret.UnmarshalBinary(v.(primitive.Binary).Data) if err != nil { return nil, err } } var token thread.Token if v, ok := raw["token"]; ok { token = thread.Token(v.(string)) } var mems []Member if v, ok := raw["members"]; ok { rmems := v.(bson.A) mems = make([]Member, len(rmems)) for i, m := range raw["members"].(bson.A) { mem := m.(bson.M) k := &thread.Libp2pPubKey{} err := k.UnmarshalBinary(mem["_id"].(primitive.Binary).Data) if err != nil { return nil, err } mems[i] = Member{ Key: k, Username: mem["username"].(string), Role: Role(mem["role"].(int32)), } } } var created time.Time if v, ok := raw["created_at"]; ok { created = v.(primitive.DateTime).Time() } return &Account{ Type: AccountType(raw["type"].(int32)), Key: key, Secret: secret, Name: name, Username: username, Email: email, Token: token, Members: mems, PowInfo: decodePowInfo(raw), CreatedAt: created, }, nil } ================================================ FILE: mongodb/accounts_test.go ================================================ package mongodb_test import ( "context" "crypto/rand" "testing" "github.com/libp2p/go-libp2p-core/crypto" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/textileio/go-threads/core/thread" . "github.com/textileio/textile/v2/mongodb" ) func TestAccounts_CreateDev(t *testing.T) { db := newDB(t) col, err := NewAccounts(context.Background(), db) require.NoError(t, err) created, err := col.CreateDev(context.Background(), "jon", "jon@doe.com", &PowInfo{ID: "id", Token: "token"}) require.NoError(t, err) assert.Equal(t, Dev, created.Type) assert.Equal(t, "jon", created.Username) assert.Equal(t, "jon@doe.com", created.Email) assert.NotEmpty(t, created.Key) assert.NotEmpty(t, created.Secret) assert.Equal(t, "id", created.PowInfo.ID) assert.Equal(t, "token", created.PowInfo.Token) _, err = col.CreateDev(context.Background(), "jon", "jon2@doe.com", &PowInfo{ID: "id2", Token: "token2"}) require.Error(t, err) _, err = col.CreateDev(context.Background(), "jon2", "jon@doe.com", &PowInfo{ID: "id3", Token: "token3"}) require.Error(t, err) _, mem, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) _, err = col.CreateOrg(context.Background(), "jon", []Member{{ Key: thread.NewLibp2pPubKey(mem), Username: "test", Role: OrgOwner, }}, &PowInfo{ID: "id", Token: "token"}) require.Error(t, err) } func TestAccounts_CreateOrg(t *testing.T) { db := newDB(t) col, err := NewAccounts(context.Background(), db) require.NoError(t, err) _, mem, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.CreateOrg(context.Background(), "test", []Member{{ Key: thread.NewLibp2pPubKey(mem), Username: "test", Role: OrgOwner, }}, &PowInfo{ID: "id", Token: "token"}) require.NoError(t, err) assert.Equal(t, Org, created.Type) assert.Equal(t, created.Name, "test") assert.NotNil(t, created.Key) assert.True(t, created.CreatedAt.Unix() > 0) assert.Equal(t, "id", created.PowInfo.ID) assert.Equal(t, "token", created.PowInfo.Token) _, err = col.CreateOrg(context.Background(), "test", []Member{{ Key: thread.NewLibp2pPubKey(mem), Username: "test", Role: OrgOwner, }}, nil) require.Error(t, err) _, err = col.CreateOrg(context.Background(), "empty", []Member{}, nil) require.Error(t, err) _, err = col.CreateDev(context.Background(), "test", "jon@doe.com", nil) require.Error(t, err) } func TestAccounts_CreateUser(t *testing.T) { db := newDB(t) col, err := NewAccounts(context.Background(), db) require.NoError(t, err) _, pk, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.CreateUser(context.Background(), thread.NewLibp2pPubKey(pk), &PowInfo{ID: "id", Token: "token"}) require.NoError(t, err) assert.Equal(t, User, created.Type) assert.NotEmpty(t, created.Key) assert.Empty(t, created.Secret) assert.Equal(t, "id", created.PowInfo.ID) assert.Equal(t, "token", created.PowInfo.Token) _, err = col.CreateUser(context.Background(), thread.NewLibp2pPubKey(pk), &PowInfo{ID: "id2", Token: "token2"}) require.Error(t, err) } func TestAccounts_Get(t *testing.T) { db := newDB(t) col, err := NewAccounts(context.Background(), db) require.NoError(t, err) created, err := col.CreateDev(context.Background(), "jon", "jon@doe.com", &PowInfo{ID: "id", Token: "token"}) require.NoError(t, err) got, err := col.Get(context.Background(), created.Key) require.NoError(t, err) assert.Equal(t, created.Key, got.Key) assert.Equal(t, "id", created.PowInfo.ID) assert.Equal(t, "token", created.PowInfo.Token) } func TestAccounts_GetByUsernameOrEmail(t *testing.T) { db := newDB(t) col, err := NewAccounts(context.Background(), db) require.NoError(t, err) created, err := col.CreateDev(context.Background(), "jon", "jon@doe.com", nil) require.NoError(t, err) got, err := col.GetByUsernameOrEmail(context.Background(), "jon") require.NoError(t, err) assert.Equal(t, created.Key, got.Key) got, err = col.GetByUsernameOrEmail(context.Background(), "jon@doe.com") require.NoError(t, err) assert.Equal(t, created.Key, got.Key) _, err = col.GetByUsernameOrEmail(context.Background(), "jon2") require.Error(t, err) } func TestAccounts_ValidateUsername(t *testing.T) { db := newDB(t) col, err := NewAccounts(context.Background(), db) require.NoError(t, err) tests := map[string]bool{ "": false, " ": false, "f oo": false, "-": false, "-foo": false, "foo-": false, "f-o-o": false, "fo--o": false, "foo": true, "fo-o": true, "fOO": true, "f00": true, } for un, valid := range tests { err := col.ValidateUsername(un) assert.Equal(t, valid, err == nil) } } func TestAccounts_GetByUsername(t *testing.T) { db := newDB(t) col, err := NewAccounts(context.Background(), db) require.NoError(t, err) _, mem, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.CreateOrg(context.Background(), "test", []Member{{ Key: thread.NewLibp2pPubKey(mem), Username: "test", Role: OrgOwner, }}, nil) require.NoError(t, err) got, err := col.GetByUsername(context.Background(), created.Username) require.NoError(t, err) assert.Equal(t, created.Key, got.Key) } func TestAccounts_IsUsernameAvailable(t *testing.T) { db := newDB(t) col, err := NewAccounts(context.Background(), db) require.NoError(t, err) err = col.IsUsernameAvailable(context.Background(), "jon") require.NoError(t, err) _, err = col.CreateDev(context.Background(), "jon", "jon@doe.com", nil) require.NoError(t, err) err = col.IsUsernameAvailable(context.Background(), "jon") require.Error(t, err) } func TestAccounts_IsNameAvailable(t *testing.T) { db := newDB(t) col, err := NewAccounts(context.Background(), db) require.NoError(t, err) _, err = col.IsNameAvailable(context.Background(), "test") require.NoError(t, err) _, mem, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.CreateOrg(context.Background(), "Test!", []Member{{ Key: thread.NewLibp2pPubKey(mem), Username: "test", Role: OrgOwner, }}, nil) require.NoError(t, err) assert.Equal(t, created.Username, "Test") name, err := col.IsNameAvailable(context.Background(), "Test!") require.Error(t, err) assert.Equal(t, created.Username, name) } func TestAccounts_SetToken(t *testing.T) { db := newDB(t) col, err := NewAccounts(context.Background(), db) require.NoError(t, err) created, err := col.CreateDev(context.Background(), "jon", "jon@doe.com", nil) require.NoError(t, err) iss, _, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) tok, err := thread.NewToken(iss, created.Key) require.NoError(t, err) err = col.SetToken(context.Background(), created.Key, tok) require.NoError(t, err) got, err := col.Get(context.Background(), created.Key) require.NoError(t, err) assert.NotEmpty(t, got.Token) } func TestAccounts_UpdatePowInfo(t *testing.T) { db := newDB(t) col, err := NewAccounts(context.Background(), db) require.NoError(t, err) created, err := col.CreateDev(context.Background(), "jon", "jon@doe.com", &PowInfo{ID: "id", Token: "token"}) require.NoError(t, err) assert.Equal(t, "id", created.PowInfo.ID) assert.Equal(t, "token", created.PowInfo.Token) updated, err := col.UpdatePowInfo(context.Background(), created.Key, &PowInfo{ID: "id2", Token: "token2"}) require.NoError(t, err) assert.Equal(t, created.Key, updated.Key) assert.Equal(t, "id2", updated.PowInfo.ID) assert.Equal(t, "token2", updated.PowInfo.Token) got, err := col.Get(context.Background(), created.Key) require.NoError(t, err) assert.Equal(t, created.Key, got.Key) assert.Equal(t, "id2", got.PowInfo.ID) assert.Equal(t, "token2", got.PowInfo.Token) } func TestAccounts_ListByMember(t *testing.T) { db := newDB(t) col, err := NewAccounts(context.Background(), db) require.NoError(t, err) _, mem, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.CreateOrg(context.Background(), "test", []Member{{ Key: thread.NewLibp2pPubKey(mem), Username: "test", Role: OrgOwner, }}, nil) require.NoError(t, err) list, err := col.ListByMember(context.Background(), thread.NewLibp2pPubKey(mem)) require.NoError(t, err) assert.Equal(t, 1, len(list)) assert.Equal(t, created.Name, list[0].Name) } func TestAccounts_ListByOwner(t *testing.T) { db := newDB(t) col, err := NewAccounts(context.Background(), db) require.NoError(t, err) _, mem1, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.CreateOrg(context.Background(), "test", []Member{{ Key: thread.NewLibp2pPubKey(mem1), Username: "test", Role: OrgOwner, }}, nil) require.NoError(t, err) list, err := col.ListByOwner(context.Background(), thread.NewLibp2pPubKey(mem1)) require.NoError(t, err) assert.Equal(t, 1, len(list)) assert.Equal(t, created.Name, list[0].Name) _, mem2, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) err = col.AddMember(context.Background(), created.Username, Member{ Key: thread.NewLibp2pPubKey(mem2), Username: "member", Role: OrgMember, }) require.NoError(t, err) list, err = col.ListByOwner(context.Background(), thread.NewLibp2pPubKey(mem2)) require.NoError(t, err) assert.Equal(t, 0, len(list)) } func TestAccounts_ListMembers(t *testing.T) { db := newDB(t) col, err := NewAccounts(context.Background(), db) require.NoError(t, err) one, err := col.CreateDev(context.Background(), "jon", "jon@doe.com", nil) require.NoError(t, err) two, err := col.CreateDev(context.Background(), "jane", "jane@doe.com", nil) require.NoError(t, err) _, err = col.CreateDev(context.Background(), "jone", "jone@doe.com", nil) require.NoError(t, err) list, err := col.ListMembers(context.Background(), []Member{{Key: one.Key}, {Key: two.Key}}) require.NoError(t, err) assert.Equal(t, 2, len(list)) } func TestAccounts_IsOwner(t *testing.T) { db := newDB(t) col, err := NewAccounts(context.Background(), db) require.NoError(t, err) _, mem1, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.CreateOrg(context.Background(), "test", []Member{{ Key: thread.NewLibp2pPubKey(mem1), Username: "test", Role: OrgOwner, }}, nil) require.NoError(t, err) _, mem2, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) err = col.AddMember(context.Background(), created.Username, Member{ Key: thread.NewLibp2pPubKey(mem2), Username: "member", Role: OrgMember, }) require.NoError(t, err) is, err := col.IsOwner(context.Background(), created.Username, thread.NewLibp2pPubKey(mem1)) require.NoError(t, err) assert.True(t, is) is, err = col.IsOwner(context.Background(), created.Username, thread.NewLibp2pPubKey(mem2)) require.NoError(t, err) assert.False(t, is) } func TestAccounts_IsMember(t *testing.T) { db := newDB(t) col, err := NewAccounts(context.Background(), db) require.NoError(t, err) _, mem1, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.CreateOrg(context.Background(), "test", []Member{{ Key: thread.NewLibp2pPubKey(mem1), Username: "test", Role: OrgOwner, }}, nil) require.NoError(t, err) _, mem2, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) err = col.AddMember(context.Background(), created.Username, Member{ Key: thread.NewLibp2pPubKey(mem2), Username: "member", Role: OrgMember, }) require.NoError(t, err) is, err := col.IsMember(context.Background(), created.Username, thread.NewLibp2pPubKey(mem2)) require.NoError(t, err) assert.True(t, is) err = col.RemoveMember(context.Background(), created.Username, thread.NewLibp2pPubKey(mem2)) require.NoError(t, err) is, err = col.IsMember(context.Background(), created.Username, thread.NewLibp2pPubKey(mem2)) require.NoError(t, err) assert.False(t, is) } func TestAccounts_AddMember(t *testing.T) { db := newDB(t) col, err := NewAccounts(context.Background(), db) require.NoError(t, err) _, mem1, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.CreateOrg(context.Background(), "test", []Member{{ Key: thread.NewLibp2pPubKey(mem1), Username: "test", Role: OrgOwner, }}, nil) require.NoError(t, err) _, mem2, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) err = col.AddMember(context.Background(), created.Username, Member{ Key: thread.NewLibp2pPubKey(mem2), Username: "member", Role: OrgMember, }) require.NoError(t, err) err = col.AddMember(context.Background(), created.Username, Member{ // Add again should not duplicate entry Key: thread.NewLibp2pPubKey(mem2), Username: "member", Role: OrgMember, }) require.NoError(t, err) got, err := col.GetByUsername(context.Background(), created.Username) require.NoError(t, err) assert.Equal(t, 2, len(got.Members)) } func TestAccounts_RemoveMember(t *testing.T) { db := newDB(t) col, err := NewAccounts(context.Background(), db) require.NoError(t, err) _, mem1, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.CreateOrg(context.Background(), "test", []Member{{ Key: thread.NewLibp2pPubKey(mem1), Username: "test", Role: OrgOwner, }}, nil) require.NoError(t, err) err = col.RemoveMember(context.Background(), created.Username, thread.NewLibp2pPubKey(mem1)) require.Error(t, err) // Can't remove the sole owner _, mem2, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) err = col.AddMember(context.Background(), created.Username, Member{ Key: thread.NewLibp2pPubKey(mem2), Username: "member", Role: OrgMember, }) require.NoError(t, err) err = col.RemoveMember(context.Background(), created.Username, thread.NewLibp2pPubKey(mem2)) require.NoError(t, err) list, err := col.ListByMember(context.Background(), thread.NewLibp2pPubKey(mem2)) require.NoError(t, err) assert.Equal(t, 0, len(list)) } func TestAccounts_Delete(t *testing.T) { db := newDB(t) col, err := NewAccounts(context.Background(), db) require.NoError(t, err) created, err := col.CreateDev(context.Background(), "jon", "jon@doe.com", nil) require.NoError(t, err) err = col.Delete(context.Background(), created.Key) require.NoError(t, err) _, err = col.Get(context.Background(), created.Key) require.Error(t, err) } ================================================ FILE: mongodb/apikeys.go ================================================ package mongodb import ( "context" "time" "github.com/textileio/go-threads/core/thread" "github.com/textileio/textile/v2/util" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" ) const ( keyLen = 16 secretLen = 24 ) type APIKeyType int const ( AccountKey APIKeyType = iota UserKey ) type APIKey struct { Key string Secret string Owner thread.PubKey Type APIKeyType Secure bool Valid bool CreatedAt time.Time } func NewAPIKeyContext(ctx context.Context, key *APIKey) context.Context { return context.WithValue(ctx, ctxKey("apiKey"), key) } func APIKeyFromContext(ctx context.Context) (*APIKey, bool) { key, ok := ctx.Value(ctxKey("apiKey")).(*APIKey) return key, ok } type APIKeys struct { col *mongo.Collection } func NewAPIKeys(ctx context.Context, db *mongo.Database) (*APIKeys, error) { k := &APIKeys{col: db.Collection("apikeys")} _, err := k.col.Indexes().CreateMany(ctx, []mongo.IndexModel{ { Keys: bson.D{primitive.E{Key: "owner_id", Value: 1}}, }, }) return k, err } func (k *APIKeys) Create(ctx context.Context, owner thread.PubKey, keyType APIKeyType, secure bool) (*APIKey, error) { doc := &APIKey{ Key: util.MakeToken(keyLen), Secret: util.MakeToken(secretLen), Owner: owner, Type: keyType, Secure: secure, Valid: true, CreatedAt: time.Now(), } ownerID, err := owner.MarshalBinary() if err != nil { return nil, err } if _, err := k.col.InsertOne(ctx, bson.M{ "_id": doc.Key, "secret": doc.Secret, "owner_id": ownerID, "type": int32(doc.Type), "secure": doc.Secure, "valid": doc.Valid, "created_at": doc.CreatedAt, }); err != nil { return nil, err } return doc, nil } func (k *APIKeys) Get(ctx context.Context, key string) (*APIKey, error) { res := k.col.FindOne(ctx, bson.M{"_id": key}) if res.Err() != nil { return nil, res.Err() } var raw bson.M if err := res.Decode(&raw); err != nil { return nil, err } return decodeAPIKey(raw) } func (k *APIKeys) ListByOwner(ctx context.Context, owner thread.PubKey) ([]APIKey, error) { ownerID, err := owner.MarshalBinary() if err != nil { return nil, err } cursor, err := k.col.Find(ctx, bson.M{"owner_id": ownerID}) if err != nil { return nil, err } defer cursor.Close(ctx) var docs []APIKey for cursor.Next(ctx) { var raw bson.M if err := cursor.Decode(&raw); err != nil { return nil, err } doc, err := decodeAPIKey(raw) if err != nil { return nil, err } docs = append(docs, *doc) } if err := cursor.Err(); err != nil { return nil, err } return docs, nil } func (k *APIKeys) Invalidate(ctx context.Context, key string) error { res, err := k.col.UpdateOne(ctx, bson.M{"_id": key}, bson.M{"$set": bson.M{"valid": false}}) if err != nil { return err } if res.MatchedCount == 0 { return mongo.ErrNoDocuments } return nil } func (k *APIKeys) DeleteByOwner(ctx context.Context, owner thread.PubKey) error { ownerID, err := owner.MarshalBinary() if err != nil { return err } _, err = k.col.DeleteMany(ctx, bson.M{"owner_id": ownerID}) return err } func decodeAPIKey(raw bson.M) (*APIKey, error) { owner := &thread.Libp2pPubKey{} err := owner.UnmarshalBinary(raw["owner_id"].(primitive.Binary).Data) if err != nil { return nil, err } var created time.Time if v, ok := raw["created_at"]; ok { created = v.(primitive.DateTime).Time() } var secure bool if v, ok := raw["secure"]; ok { secure = v.(bool) } return &APIKey{ Key: raw["_id"].(string), Secret: raw["secret"].(string), Owner: owner, Type: APIKeyType(raw["type"].(int32)), Secure: secure, Valid: raw["valid"].(bool), CreatedAt: created, }, nil } ================================================ FILE: mongodb/apikeys_test.go ================================================ package mongodb_test import ( "context" "crypto/rand" "testing" "github.com/libp2p/go-libp2p-core/crypto" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/textileio/go-threads/core/thread" . "github.com/textileio/textile/v2/mongodb" ) func TestAPIKeys_Create(t *testing.T) { db := newDB(t) col, err := NewAPIKeys(context.Background(), db) require.NoError(t, err) _, owner, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(context.Background(), thread.NewLibp2pPubKey(owner), AccountKey, true) require.NoError(t, err) assert.NotEmpty(t, created.Secret) assert.Equal(t, AccountKey, created.Type) assert.True(t, created.Secure) } func TestAPIKeys_Get(t *testing.T) { db := newDB(t) col, err := NewAPIKeys(context.Background(), db) require.NoError(t, err) _, owner, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(context.Background(), thread.NewLibp2pPubKey(owner), UserKey, false) require.NoError(t, err) got, err := col.Get(context.Background(), created.Key) require.NoError(t, err) assert.Equal(t, created.Key, got.Key) } func TestAPIKeys_ListByOwner(t *testing.T) { db := newDB(t) col, err := NewAPIKeys(context.Background(), db) require.NoError(t, err) _, owner1, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) _, err = col.Create(context.Background(), thread.NewLibp2pPubKey(owner1), UserKey, false) require.NoError(t, err) _, err = col.Create(context.Background(), thread.NewLibp2pPubKey(owner1), UserKey, false) require.NoError(t, err) list1, err := col.ListByOwner(context.Background(), thread.NewLibp2pPubKey(owner1)) require.NoError(t, err) assert.Equal(t, 2, len(list1)) _, owner2, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) list2, err := col.ListByOwner(context.Background(), thread.NewLibp2pPubKey(owner2)) require.NoError(t, err) assert.Equal(t, 0, len(list2)) } func TestAPIKeys_Invalidate(t *testing.T) { db := newDB(t) col, err := NewAPIKeys(context.Background(), db) require.NoError(t, err) _, owner, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(context.Background(), thread.NewLibp2pPubKey(owner), UserKey, false) require.NoError(t, err) err = col.Invalidate(context.Background(), created.Key) require.NoError(t, err) got, err := col.Get(context.Background(), created.Key) require.NoError(t, err) require.False(t, got.Valid) } func TestAPIKeys_DeleteByOwner(t *testing.T) { db := newDB(t) col, err := NewAPIKeys(context.Background(), db) require.NoError(t, err) _, owner, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(context.Background(), thread.NewLibp2pPubKey(owner), UserKey, false) require.NoError(t, err) err = col.DeleteByOwner(context.Background(), thread.NewLibp2pPubKey(owner)) require.NoError(t, err) _, err = col.Get(context.Background(), created.Key) require.Error(t, err) } ================================================ FILE: mongodb/archivetracking.go ================================================ package mongodb import ( "context" "fmt" "time" "github.com/ipfs/go-cid" "github.com/textileio/go-threads/core/thread" "github.com/textileio/textile/v2/buckets/archive" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) type TrackedJob struct { JID string Type archive.TrackedJobType ReadyAt time.Time Cause string Active bool // Set by TrackedJobTypeArchive type. DbID thread.ID DbToken thread.Token BucketKey string BucketRoot cid.Cid Owner thread.PubKey // Set by TrackedJobTypeRetrieval type. PowToken string AccKey string } // trackedJob is an internal representation for storage. // Any field modifications should be reflected in the cast() func. type trackedJob struct { JID string `bson:"_id"` Type archive.TrackedJobType `bson:"type"` ReadyAt time.Time `bson:"ready_at"` Cause string `bson:"cause"` Active bool `bson:"active"` // Set by TrackedJobTypeArchive type. DbID thread.ID `bson:"db_id"` DbToken thread.Token `bson:"db_token"` BucketKey string `bson:"bucket_key"` BucketRoot []byte `bson:"bucket_root"` Owner []byte `bson:"owner"` // Set by TrackedJobTypeRetrieval type. PowToken string `bson:"pow_token"` AccKey string } type ArchiveTracking struct { col *mongo.Collection } func NewArchiveTracking(_ context.Context, db *mongo.Database) (*ArchiveTracking, error) { s := &ArchiveTracking{ col: db.Collection("archivetrackings"), } return s, nil } func (at *ArchiveTracking) CreateArchive(ctx context.Context, dbID thread.ID, dbToken thread.Token, bucketKey string, jid string, bucketRoot cid.Cid, owner thread.PubKey) error { ownerBytes, err := owner.MarshalBinary() if err != nil { return fmt.Errorf("marshaling owner to bytes: %v", err) } newTA := trackedJob{ Type: archive.TrackedJobTypeArchive, JID: jid, DbID: dbID, DbToken: dbToken, BucketKey: bucketKey, BucketRoot: bucketRoot.Bytes(), Owner: ownerBytes, ReadyAt: time.Now(), Cause: "", Active: true, } if _, err = at.col.InsertOne(ctx, newTA); err != nil { return fmt.Errorf("inserting in collection: %s", err) } return nil } func (at *ArchiveTracking) CreateRetrieval(ctx context.Context, accKey, jobID, powToken string) error { newTA := trackedJob{ Type: archive.TrackedJobTypeRetrieval, JID: jobID, AccKey: accKey, PowToken: powToken, ReadyAt: time.Now(), Cause: "", Active: true, } if _, err := at.col.InsertOne(ctx, newTA); err != nil { return fmt.Errorf("inserting in collection: %s", err) } return nil } func (at *ArchiveTracking) GetReadyToCheck(ctx context.Context, n int64) ([]*TrackedJob, error) { opts := options.Find() opts.SetLimit(n) filter := bson.M{"ready_at": bson.M{"$lte": time.Now()}, "active": true} cursor, err := at.col.Find(ctx, filter, opts) if err != nil { return nil, fmt.Errorf("querying ready tracked archives: %s", err) } defer cursor.Close(ctx) var tas []*trackedJob for cursor.Next(ctx) { var ta trackedJob if err := cursor.Decode(&ta); err != nil { return nil, err } tas = append(tas, &ta) } if err := cursor.Err(); err != nil { return nil, err } return castSlice(tas) } func (at *ArchiveTracking) Get(ctx context.Context, jid string) (*TrackedJob, error) { filter := bson.M{"_id": jid} res := at.col.FindOne(ctx, filter) if res.Err() != nil { return nil, fmt.Errorf("getting tracked archive: %s", res.Err()) } var ta trackedJob if err := res.Decode(&ta); err != nil { return nil, err } return cast(&ta) } func (at *ArchiveTracking) Finalize(ctx context.Context, jid string, cause string) error { res, err := at.col.UpdateOne(ctx, bson.M{"_id": jid}, bson.M{ "$set": bson.M{ "active": false, "cause": cause, }, }) if err != nil { return err } if res.MatchedCount == 0 { return mongo.ErrNoDocuments } return nil } func (at *ArchiveTracking) Reschedule(ctx context.Context, jid string, dur time.Duration, cause string) error { readyAt := time.Now().Add(dur) res, err := at.col.UpdateOne(ctx, bson.M{"_id": jid}, bson.M{ "$set": bson.M{ "ready_at": readyAt, "cause": cause, }, }) if err != nil { return err } if res.MatchedCount == 0 { return mongo.ErrNoDocuments } return nil } func cast(ta *trackedJob) (*TrackedJob, error) { tj := &TrackedJob{ JID: ta.JID, Type: ta.Type, DbID: ta.DbID, DbToken: ta.DbToken, BucketKey: ta.BucketKey, ReadyAt: ta.ReadyAt, Cause: ta.Cause, Active: ta.Active, PowToken: ta.PowToken, AccKey: ta.AccKey, } var err error if len(ta.BucketRoot) > 0 { tj.BucketRoot, err = cid.Cast(ta.BucketRoot) if err != nil { return nil, fmt.Errorf("casting bucket root: %s", err) } } if len(ta.Owner) > 0 { owner := &thread.Libp2pPubKey{} err = owner.UnmarshalBinary(ta.Owner) if err != nil { return nil, fmt.Errorf("unmarshaling public key: %s", err) } tj.Owner = owner } return tj, nil } func castSlice(tas []*trackedJob) ([]*TrackedJob, error) { ret := make([]*TrackedJob, len(tas)) for i, ta := range tas { castedTA, err := cast(ta) if err != nil { return nil, fmt.Errorf("casting tracked archive slice: %s", err) } ret[i] = castedTA } return ret, nil } ================================================ FILE: mongodb/archivetracking_test.go ================================================ package mongodb_test import ( "context" "crypto/rand" "testing" "time" "github.com/ipfs/go-cid" "github.com/libp2p/go-libp2p-core/crypto" "github.com/stretchr/testify/require" "github.com/textileio/go-threads/core/thread" . "github.com/textileio/textile/v2/mongodb" ) func TestArchiveTracking_Create(t *testing.T) { db := newDB(t) col, err := NewArchiveTracking(context.Background(), db) require.NoError(t, err) ctx := context.Background() dbID := thread.NewIDV1(thread.Raw, 16) dbToken := thread.Token("token") bucketKey := "buckKey" jid := "jobID1" bucketRoot, _ := cid.Decode("QmSnuWmxptJZdLJpKRarxBMS2Ju2oANVrgbr2xWbie9b2D") _, key, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) err = col.CreateArchive(ctx, dbID, dbToken, bucketKey, jid, bucketRoot, thread.NewLibp2pPubKey(key)) require.NoError(t, err) } func TestArchiveTracking_Get(t *testing.T) { db := newDB(t) col, err := NewArchiveTracking(context.Background(), db) require.NoError(t, err) ctx := context.Background() dbID := thread.NewIDV1(thread.Raw, 16) dbToken := thread.Token("token") bucketKey := "buckKey" jid := "jobID1" bucketRoot, _ := cid.Decode("QmSnuWmxptJZdLJpKRarxBMS2Ju2oANVrgbr2xWbie9b2D") _, key, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) err = col.CreateArchive(ctx, dbID, dbToken, bucketKey, jid, bucketRoot, thread.NewLibp2pPubKey(key)) require.NoError(t, err) ta, err := col.Get(ctx, jid) require.NoError(t, err) require.Equal(t, jid, ta.JID) require.Equal(t, dbID, ta.DbID) require.Equal(t, dbToken, ta.DbToken) require.Equal(t, bucketKey, ta.BucketKey) require.Equal(t, bucketRoot, ta.BucketRoot) require.Equal(t, thread.NewLibp2pPubKey(key), ta.Owner) require.True(t, time.Since(ta.ReadyAt) > 0) require.True(t, ta.Active) } func TestArchiveTracking_GetReadyToCheck(t *testing.T) { db := newDB(t) col, err := NewArchiveTracking(context.Background(), db) require.NoError(t, err) ctx := context.Background() tas, err := col.GetReadyToCheck(ctx, 10) require.NoError(t, err) require.Equal(t, 0, len(tas)) dbID := thread.NewIDV1(thread.Raw, 16) dbToken := thread.Token("token") bucketKey := "buckKey" jid := "jobID1" bucketRoot, _ := cid.Decode("QmSnuWmxptJZdLJpKRarxBMS2Ju2oANVrgbr2xWbie9b2D") _, key, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) err = col.CreateArchive(ctx, dbID, dbToken, bucketKey, jid, bucketRoot, thread.NewLibp2pPubKey(key)) require.NoError(t, err) tas, err = col.GetReadyToCheck(ctx, 10) require.NoError(t, err) require.Equal(t, 1, len(tas)) require.Equal(t, jid, tas[0].JID) require.Equal(t, dbID, tas[0].DbID) require.Equal(t, dbToken, tas[0].DbToken) require.Equal(t, bucketKey, tas[0].BucketKey) require.Equal(t, bucketRoot, tas[0].BucketRoot) require.Equal(t, thread.NewLibp2pPubKey(key), tas[0].Owner) require.True(t, time.Since(tas[0].ReadyAt) > 0) require.True(t, tas[0].Active) } func TestArchiveTracking_Finalize(t *testing.T) { db := newDB(t) col, err := NewArchiveTracking(context.Background(), db) require.NoError(t, err) ctx := context.Background() dbID := thread.NewIDV1(thread.Raw, 16) dbToken := thread.Token("token") bucketKey := "buckKey" jid := "jobID1" bucketRoot, _ := cid.Decode("QmSnuWmxptJZdLJpKRarxBMS2Ju2oANVrgbr2xWbie9b2D") _, key, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) err = col.CreateArchive(ctx, dbID, dbToken, bucketKey, jid, bucketRoot, thread.NewLibp2pPubKey(key)) require.NoError(t, err) cause := "all good" err = col.Finalize(ctx, jid, cause) require.NoError(t, err) ta, err := col.Get(ctx, jid) require.NoError(t, err) require.False(t, ta.Active) require.Equal(t, cause, ta.Cause) tas, err := col.GetReadyToCheck(ctx, 10) require.NoError(t, err) require.Equal(t, 0, len(tas)) } func TestArchiveTracking_Reschedule(t *testing.T) { db := newDB(t) col, err := NewArchiveTracking(context.Background(), db) require.NoError(t, err) ctx := context.Background() dbID := thread.NewIDV1(thread.Raw, 16) dbToken := thread.Token("token") bucketKey := "buckKey" jid := "jobID1" bucketRoot, _ := cid.Decode("QmSnuWmxptJZdLJpKRarxBMS2Ju2oANVrgbr2xWbie9b2D") _, key, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) err = col.CreateArchive(ctx, dbID, dbToken, bucketKey, jid, bucketRoot, thread.NewLibp2pPubKey(key)) require.NoError(t, err) err = col.Reschedule(ctx, jid, time.Hour+time.Second*5, "retry me") require.NoError(t, err) ta, err := col.Get(ctx, jid) require.NoError(t, err) require.True(t, time.Until(ta.ReadyAt) > time.Hour) require.True(t, ta.Active) } ================================================ FILE: mongodb/bucketarchives.go ================================================ package mongodb import ( "context" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" ) type BucketArchive struct { BucketKey string `bson:"_id"` Archives Archives `bson:"archives"` DefaultArchiveConfig *ArchiveConfig `bson:"default_archive_config"` } type Archives struct { Current Archive `bson:"current"` History []Archive `bson:"history"` } type Archive struct { Cid []byte `bson:"cid"` JobID string `bson:"job_id"` Status int `bson:"status"` Aborted bool `bson:"aborted"` AbortedMsg string `bson:"aborted_msg"` FailureMsg string `bson:"failure_msg"` CreatedAt int64 `bson:"created_at"` DealInfo []DealInfo `bson:"deal_info"` } type DealInfo struct { ProposalCid string `bson:"proposal_cid"` StateID uint64 `bson:"state_id"` StateName string `bson:"state_name"` Miner string `bson:"miner"` PieceCID string `bson:"piece_cid"` Size uint64 `bson:"size"` PricePerEpoch uint64 `bson:"price_per_epoch"` StartEpoch uint64 `bson:"start_epoch"` Duration uint64 `bson:"duration"` DealID uint64 `bson:"deal_id"` ActivationEpoch int64 `bson:"activation_epoch"` Message string `bson:"message"` } // ArchiveConfig is the desired state of a Cid in the Filecoin network. type ArchiveConfig struct { // RepFactor (ignored in Filecoin mainnet) indicates the desired amount of active deals // with different miners to store the data. While making deals // the other attributes of FilConfig are considered for miner selection. RepFactor int `bson:"rep_factor"` // DealMinDuration indicates the duration to be used when making new deals. DealMinDuration int64 `bson:"deal_min_duration"` // ExcludedMiners (ignored in Filecoin mainnet) is a set of miner addresses won't be ever be selected // when making new deals, even if they comply to other filters. ExcludedMiners []string `bson:"excluded_miners"` // TrustedMiners (ignored in Filecoin mainnet) is a set of miner addresses which will be forcibly used // when making new deals. An empty/nil list disables this feature. TrustedMiners []string `bson:"trusted_miners"` // CountryCodes (ignored in Filecoin mainnet) indicates that new deals should select miners on specific // countries. CountryCodes []string `bson:"country_codes"` // Renew indicates deal-renewal configuration. Renew ArchiveRenew `bson:"renew"` // MaxPrice is the maximum price that will be spent to store the data MaxPrice uint64 `bson:"max_price"` // FastRetrieval indicates that created deals should enable the // fast retrieval feature. FastRetrieval bool `bson:"fast_retrieval"` // DealStartOffset indicates how many epochs in the future impose a // deadline to new deals being active on-chain. This value might influence // if miners accept deals, since they should seal fast enough to satisfy // this constraint. DealStartOffset int64 `bson:"deal_start_offset"` // VerifiedDeal indicates that new deals should be marked as verified, // assuming the wallet address has enough data-cap. VerifiedDeal bool `bson:"verified_deal"` } // ArchiveRenew contains renew configuration for a ArchiveConfig. type ArchiveRenew struct { // Enabled indicates that deal-renewal is enabled for this Cid. Enabled bool `bson:"enabled"` // Threshold indicates how many epochs before expiring should trigger // deal renewal. e.g: 100 epoch before expiring. Threshold int `bson:"threshold"` } type BucketArchives struct { col *mongo.Collection } func NewBucketArchives(_ context.Context, db *mongo.Database) (*BucketArchives, error) { s := &BucketArchives{col: db.Collection("bucketarchives")} return s, nil } func (k *BucketArchives) Create(ctx context.Context, bucketKey string) (*BucketArchive, error) { ba := &BucketArchive{ BucketKey: bucketKey, } _, err := k.col.InsertOne(ctx, ba) return ba, err } func (k *BucketArchives) Replace(ctx context.Context, ba *BucketArchive) error { res, err := k.col.ReplaceOne(ctx, bson.M{"_id": ba.BucketKey}, ba) if err != nil { return err } if res.MatchedCount == 0 { return mongo.ErrNoDocuments } return nil } func (k *BucketArchives) GetOrCreate(ctx context.Context, bucketKey string) (*BucketArchive, error) { res := k.col.FindOne(ctx, bson.M{"_id": bucketKey}) if res.Err() != nil { if res.Err() == mongo.ErrNoDocuments { return k.Create(ctx, bucketKey) } else { return nil, res.Err() } } var doc BucketArchive if err := res.Decode(&doc); err != nil { return nil, err } return &doc, nil } ================================================ FILE: mongodb/bucketarchives_test.go ================================================ package mongodb_test import ( "context" "testing" "time" "github.com/ipfs/go-cid" "github.com/stretchr/testify/require" . "github.com/textileio/textile/v2/mongodb" ) func TestBucketArchives_Create(t *testing.T) { db := newDB(t) col, err := NewBucketArchives(context.Background(), db) require.NoError(t, err) res, err := col.Create(context.Background(), "buckkey1") require.NoError(t, err) require.Equal(t, "buckkey1", res.BucketKey) } func TestBucketArchives_Get(t *testing.T) { db := newDB(t) col, err := NewBucketArchives(context.Background(), db) require.NoError(t, err) res, err := col.Create(context.Background(), "buckkey1") require.NoError(t, err) require.Equal(t, "buckkey1", res.BucketKey) got, err := col.GetOrCreate(context.Background(), "buckkey1") require.NoError(t, err) require.Equal(t, "buckkey1", got.BucketKey) } func TestBucketArchives_Replace(t *testing.T) { ctx := context.Background() db := newDB(t) col, err := NewBucketArchives(context.Background(), db) require.NoError(t, err) res, err := col.Create(context.Background(), "buckkey1") require.NoError(t, err) require.Equal(t, "buckkey1", res.BucketKey) ba, err := col.GetOrCreate(context.Background(), "buckkey1") require.NoError(t, err) c1, _ := cid.Decode("QmSnuWmxptJZdLJpKRarxBMS2Ju2oANVrgbr2xWbie9b2D") c2, _ := cid.Decode("QmU7gJi6Bz3jrvbuVfB7zzXStLJrTHf6vWh8ZqkCsTGoRC") ba.Archives.Current = Archive{ Cid: c1.Bytes(), JobID: "JobID1", Status: 123, CreatedAt: time.Now().Unix(), } ba.Archives.History = []Archive{ { Cid: c2.Bytes(), JobID: "JobID2", Status: 456, CreatedAt: time.Now().Add(time.Hour * -24).Unix(), }, } err = col.Replace(ctx, ba) require.NoError(t, err) ba2, err := col.GetOrCreate(context.Background(), "buckkey1") require.NoError(t, err) require.Equal(t, ba, ba2) } ================================================ FILE: mongodb/collections.go ================================================ package mongodb import ( "context" "time" "github.com/textileio/textile/v2/mongodb/migrations" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) const ( tokenLen = 44 DuplicateErrMsg = "E11000 duplicate key error" ) type ctxKey string type Collections struct { m *mongo.Client Sessions *Sessions Accounts *Accounts Invites *Invites Threads *Threads APIKeys *APIKeys IPNSKeys *IPNSKeys BucketArchives *BucketArchives ArchiveTracking *ArchiveTracking } // NewCollections gets or create store instances for active collections. func NewCollections(ctx context.Context, uri, database string, hub bool) (*Collections, error) { client, err := mongo.Connect(ctx, options.Client().ApplyURI(uri)) if err != nil { return nil, err } db := client.Database(database) if err = migrations.Migrate(db); err != nil { return nil, err } c := &Collections{m: client} if hub { c.Sessions, err = NewSessions(ctx, db) if err != nil { return nil, err } c.Accounts, err = NewAccounts(ctx, db) if err != nil { return nil, err } c.Invites, err = NewInvites(ctx, db) if err != nil { return nil, err } c.Threads, err = NewThreads(ctx, db) if err != nil { return nil, err } c.APIKeys, err = NewAPIKeys(ctx, db) if err != nil { return nil, err } } c.ArchiveTracking, err = NewArchiveTracking(ctx, db) if err != nil { return nil, err } c.IPNSKeys, err = NewIPNSKeys(ctx, db) if err != nil { return nil, err } c.BucketArchives, err = NewBucketArchives(ctx, db) if err != nil { return nil, err } return c, nil } func (c *Collections) Close() error { ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) defer cancel() return c.m.Disconnect(ctx) } ================================================ FILE: mongodb/collections_test.go ================================================ package mongodb_test import ( "context" "os" "testing" "github.com/stretchr/testify/require" "github.com/textileio/go-ds-mongo/test" "github.com/textileio/textile/v2/util" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) func TestMain(m *testing.M) { cleanup := func() {} if os.Getenv("SKIP_SERVICES") != "true" { cleanup = test.StartMongoDB() } exitVal := m.Run() cleanup() os.Exit(exitVal) } func newDB(t *testing.T) *mongo.Database { ctx, cancel := context.WithCancel(context.Background()) m, err := mongo.Connect(ctx, options.Client().ApplyURI(test.GetMongoUri())) require.NoError(t, err) db := m.Database(util.MakeToken(12)) t.Cleanup(func() { err := db.Drop(ctx) require.NoError(t, err) err = m.Disconnect(ctx) require.NoError(t, err) cancel() }) return db } ================================================ FILE: mongodb/common.go ================================================ package mongodb import ( "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" ) type PowInfo struct { ID string Token string } const ( key = "pow_info" idKey = "id" tokenKey = "token" ) func encodePowInfo(data bson.M, powInfo *PowInfo) { if powInfo != nil { data[key] = bson.M{ idKey: powInfo.ID, tokenKey: powInfo.Token, } } } func decodePowInfo(raw primitive.M) *PowInfo { var powInfo *PowInfo if v, ok := raw[key]; ok { powInfo = &PowInfo{} raw := v.(bson.M) if v, ok := raw[idKey]; ok { powInfo.ID = v.(string) } if v, ok := raw[tokenKey]; ok { powInfo.Token = v.(string) } } return powInfo } ================================================ FILE: mongodb/invites.go ================================================ package mongodb import ( "context" "time" "github.com/textileio/go-threads/core/thread" "github.com/textileio/textile/v2/util" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" ) const ( inviteDur = time.Hour * 24 * 7 * 30 ) type Invite struct { Token string Org string From thread.PubKey EmailTo string Accepted bool ExpiresAt time.Time } type Invites struct { col *mongo.Collection } func NewInvites(ctx context.Context, db *mongo.Database) (*Invites, error) { i := &Invites{col: db.Collection("invites")} _, err := i.col.Indexes().CreateMany(ctx, []mongo.IndexModel{ { Keys: bson.D{primitive.E{Key: "org", Value: 1}}, }, { Keys: bson.D{primitive.E{Key: "from_id", Value: 1}}, }, { Keys: bson.D{primitive.E{Key: "email_to", Value: 1}}, }, }) return i, err } func (i *Invites) Create(ctx context.Context, from thread.PubKey, org, emailTo string) (*Invite, error) { doc := &Invite{ Token: util.MakeToken(tokenLen), Org: org, From: from, EmailTo: emailTo, Accepted: false, ExpiresAt: time.Now().Add(inviteDur), } fromID, err := from.MarshalBinary() if err != nil { return nil, err } if _, err := i.col.InsertOne(ctx, bson.M{ "_id": doc.Token, "org": doc.Org, "from_id": fromID, "email_to": doc.EmailTo, "accepted": doc.Accepted, "expires_at": doc.ExpiresAt, }); err != nil { return nil, err } return doc, nil } func (i *Invites) Get(ctx context.Context, token string) (*Invite, error) { res := i.col.FindOne(ctx, bson.M{"_id": token}) if res.Err() != nil { return nil, res.Err() } var raw bson.M if err := res.Decode(&raw); err != nil { return nil, err } return decodeInvite(raw) } func (i *Invites) ListByEmail(ctx context.Context, email string) ([]Invite, error) { cursor, err := i.col.Find(ctx, bson.M{"email_to": email}) if err != nil { return nil, err } defer cursor.Close(ctx) var docs []Invite for cursor.Next(ctx) { var raw bson.M if err := cursor.Decode(&raw); err != nil { return nil, err } doc, err := decodeInvite(raw) if err != nil { return nil, err } docs = append(docs, *doc) } if err := cursor.Err(); err != nil { return nil, err } return docs, nil } func (i *Invites) Accept(ctx context.Context, token string) error { res, err := i.col.UpdateOne(ctx, bson.M{"_id": token}, bson.M{"$set": bson.M{"accepted": true}}) if err != nil { return err } if res.MatchedCount == 0 { return mongo.ErrNoDocuments } return nil } func (i *Invites) Delete(ctx context.Context, token string) error { res, err := i.col.DeleteOne(ctx, bson.M{"_id": token}) if err != nil { return err } if res.DeletedCount == 0 { return mongo.ErrNoDocuments } return nil } func (i *Invites) DeleteByFrom(ctx context.Context, from thread.PubKey) error { fromID, err := from.MarshalBinary() if err != nil { return err } _, err = i.col.DeleteMany(ctx, bson.M{"from_id": fromID}) return err } func (i *Invites) DeleteByOrg(ctx context.Context, org string) error { _, err := i.col.DeleteMany(ctx, bson.M{"org": org}) return err } func (i *Invites) DeleteByFromAndOrg(ctx context.Context, from thread.PubKey, org string) error { fromID, err := from.MarshalBinary() if err != nil { return err } _, err = i.col.DeleteMany(ctx, bson.M{"from_id": fromID, "org": org}) return err } func decodeInvite(raw bson.M) (*Invite, error) { from := &thread.Libp2pPubKey{} err := from.UnmarshalBinary(raw["from_id"].(primitive.Binary).Data) if err != nil { return nil, err } var expiry time.Time if v, ok := raw["expires_at"]; ok { expiry = v.(primitive.DateTime).Time() } return &Invite{ Token: raw["_id"].(string), Org: raw["org"].(string), From: from, EmailTo: raw["email_to"].(string), Accepted: raw["accepted"].(bool), ExpiresAt: expiry, }, nil } ================================================ FILE: mongodb/invites_test.go ================================================ package mongodb_test import ( "context" "crypto/rand" "testing" "time" "github.com/libp2p/go-libp2p-core/crypto" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/textileio/go-threads/core/thread" . "github.com/textileio/textile/v2/mongodb" ) func TestInvites_Create(t *testing.T) { db := newDB(t) col, err := NewInvites(context.Background(), db) require.NoError(t, err) _, from, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(context.Background(), thread.NewLibp2pPubKey(from), "myorg", "jane@doe.com") require.NoError(t, err) assert.True(t, created.ExpiresAt.After(time.Now())) } func TestInvites_Get(t *testing.T) { db := newDB(t) col, err := NewInvites(context.Background(), db) require.NoError(t, err) _, from, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(context.Background(), thread.NewLibp2pPubKey(from), "myorg", "jane@doe.com") require.NoError(t, err) got, err := col.Get(context.Background(), created.Token) require.NoError(t, err) assert.Equal(t, created.Token, got.Token) } func TestInvites_ListByEmail(t *testing.T) { db := newDB(t) col, err := NewInvites(context.Background(), db) require.NoError(t, err) list, err := col.ListByEmail(context.Background(), "jane@doe.com") require.NoError(t, err) require.Empty(t, list) _, from, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(context.Background(), thread.NewLibp2pPubKey(from), "myorg", "jane@doe.com") require.NoError(t, err) list, err = col.ListByEmail(context.Background(), "jane@doe.com") require.NoError(t, err) require.Equal(t, 1, len(list)) require.Equal(t, created.Token, list[0].Token) } func TestInvites_Accept(t *testing.T) { db := newDB(t) col, err := NewInvites(context.Background(), db) require.NoError(t, err) _, from, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(context.Background(), thread.NewLibp2pPubKey(from), "myorg", "jane@doe.com") require.NoError(t, err) assert.False(t, created.Accepted) err = col.Accept(context.Background(), created.Token) require.NoError(t, err) got, err := col.Get(context.Background(), created.Token) require.NoError(t, err) assert.True(t, got.Accepted) } func TestInvites_Delete(t *testing.T) { db := newDB(t) col, err := NewInvites(context.Background(), db) require.NoError(t, err) _, from, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(context.Background(), thread.NewLibp2pPubKey(from), "myorg", "jane@doe.com") require.NoError(t, err) err = col.Delete(context.Background(), created.Token) require.NoError(t, err) _, err = col.Get(context.Background(), created.Token) require.Error(t, err) } func TestInvites_DeleteByFrom(t *testing.T) { db := newDB(t) col, err := NewInvites(context.Background(), db) require.NoError(t, err) _, from, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(context.Background(), thread.NewLibp2pPubKey(from), "myorg", "jane@doe.com") require.NoError(t, err) err = col.DeleteByFrom(context.Background(), created.From) require.NoError(t, err) _, err = col.Get(context.Background(), created.Token) require.Error(t, err) } func TestInvites_DeleteByOrg(t *testing.T) { db := newDB(t) col, err := NewInvites(context.Background(), db) require.NoError(t, err) _, from, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(context.Background(), thread.NewLibp2pPubKey(from), "myorg", "jane@doe.com") require.NoError(t, err) err = col.DeleteByOrg(context.Background(), created.Org) require.NoError(t, err) _, err = col.Get(context.Background(), created.Token) require.Error(t, err) } func TestInvites_DeleteByFromAndOrg(t *testing.T) { db := newDB(t) col, err := NewInvites(context.Background(), db) require.NoError(t, err) _, from, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(context.Background(), thread.NewLibp2pPubKey(from), "myorg", "jane@doe.com") require.NoError(t, err) err = col.DeleteByFromAndOrg(context.Background(), thread.NewLibp2pPubKey(from), created.Org) require.NoError(t, err) _, err = col.Get(context.Background(), created.Token) require.Error(t, err) } ================================================ FILE: mongodb/ipnskeys.go ================================================ package mongodb import ( "context" "time" "github.com/textileio/go-threads/core/thread" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" ) type IPNSKey struct { Name string Cid string Path string ThreadID thread.ID CreatedAt time.Time } type IPNSKeys struct { col *mongo.Collection } func NewIPNSKeys(ctx context.Context, db *mongo.Database) (*IPNSKeys, error) { k := &IPNSKeys{col: db.Collection("ipnskeys")} _, err := k.col.Indexes().CreateMany(ctx, []mongo.IndexModel{ { Keys: bson.D{primitive.E{Key: "cid", Value: 1}}, }, { Keys: bson.D{primitive.E{Key: "thread_id", Value: 1}}, }, }) return k, err } func (k *IPNSKeys) Create(ctx context.Context, name, cid string, threadID thread.ID, pth string) error { _, err := k.col.InsertOne(ctx, bson.M{ "_id": name, "cid": cid, "path": pth, "thread_id": threadID.Bytes(), "created_at": time.Now(), }) return err } func (k *IPNSKeys) Get(ctx context.Context, name string) (*IPNSKey, error) { res := k.col.FindOne(ctx, bson.M{"_id": name}) if res.Err() != nil { return nil, res.Err() } var raw bson.M if err := res.Decode(&raw); err != nil { return nil, err } return decodeIPNSKey(raw) } func (k *IPNSKeys) GetByCid(ctx context.Context, cid string) (*IPNSKey, error) { res := k.col.FindOne(ctx, bson.M{"cid": cid}) if res.Err() != nil { return nil, res.Err() } var raw bson.M if err := res.Decode(&raw); err != nil { return nil, err } return decodeIPNSKey(raw) } func (k *IPNSKeys) ListByThreadID(ctx context.Context, threadID thread.ID) ([]IPNSKey, error) { cursor, err := k.col.Find(ctx, bson.M{"thread_id": threadID.Bytes()}) if err != nil { return nil, err } defer cursor.Close(ctx) var docs []IPNSKey for cursor.Next(ctx) { var raw bson.M if err := cursor.Decode(&raw); err != nil { return nil, err } doc, err := decodeIPNSKey(raw) if err != nil { return nil, err } docs = append(docs, *doc) } if err := cursor.Err(); err != nil { return nil, err } return docs, nil } func (k *IPNSKeys) List(ctx context.Context) ([]IPNSKey, error) { cursor, err := k.col.Find(ctx, bson.M{}) if err != nil { return nil, err } defer cursor.Close(ctx) var docs []IPNSKey for cursor.Next(ctx) { var raw bson.M if err := cursor.Decode(&raw); err != nil { return nil, err } doc, err := decodeIPNSKey(raw) if err != nil { return nil, err } docs = append(docs, *doc) } if err := cursor.Err(); err != nil { return nil, err } return docs, nil } // SetPath updates the latest path for the ipnskey func (k *IPNSKeys) SetPath(ctx context.Context, pth string, name string) error { res, err := k.col.UpdateOne( ctx, bson.M{"_id": name}, bson.D{{"$set", bson.D{{"path", pth}}}}, ) if err != nil { return err } if res.MatchedCount == 0 { return mongo.ErrNoDocuments } return nil } func (k *IPNSKeys) Delete(ctx context.Context, name string) error { res, err := k.col.DeleteOne(ctx, bson.M{"_id": name}) if err != nil { return err } if res.DeletedCount == 0 { return mongo.ErrNoDocuments } return nil } func decodeIPNSKey(raw bson.M) (*IPNSKey, error) { threadID, err := thread.Cast(raw["thread_id"].(primitive.Binary).Data) if err != nil { return nil, err } var created time.Time if v, ok := raw["created_at"]; ok { created = v.(primitive.DateTime).Time() } return &IPNSKey{ Name: raw["_id"].(string), Cid: raw["cid"].(string), Path: raw["path"].(string), ThreadID: threadID, CreatedAt: created, }, nil } ================================================ FILE: mongodb/ipnskeys_test.go ================================================ package mongodb_test import ( "context" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/textileio/go-threads/core/thread" . "github.com/textileio/textile/v2/mongodb" ) func TestIPNSKeys_Create(t *testing.T) { db := newDB(t) col, err := NewIPNSKeys(context.Background(), db) require.NoError(t, err) err = col.Create(context.Background(), "foo", "cid", thread.NewIDV1(thread.Raw, 32), "path") require.NoError(t, err) } func TestIPNSKeys_Get(t *testing.T) { db := newDB(t) col, err := NewIPNSKeys(context.Background(), db) require.NoError(t, err) threadID := thread.NewIDV1(thread.Raw, 32) err = col.Create(context.Background(), "foo", "cid", threadID, "path") require.NoError(t, err) got, err := col.Get(context.Background(), "foo") require.NoError(t, err) assert.Equal(t, "cid", got.Cid) assert.Equal(t, "path", got.Path) assert.Equal(t, threadID, got.ThreadID) } func TestIPNSKeys_GetByCid(t *testing.T) { db := newDB(t) col, err := NewIPNSKeys(context.Background(), db) require.NoError(t, err) threadID := thread.NewIDV1(thread.Raw, 32) err = col.Create(context.Background(), "foo", "cid", threadID, "path") require.NoError(t, err) got, err := col.GetByCid(context.Background(), "cid") require.NoError(t, err) assert.Equal(t, "foo", got.Name) assert.Equal(t, "path", got.Path) assert.Equal(t, threadID, got.ThreadID) } func TestIPNSKeys_SetPath(t *testing.T) { db := newDB(t) col, err := NewIPNSKeys(context.Background(), db) require.NoError(t, err) threadID := thread.NewIDV1(thread.Raw, 32) err = col.Create(context.Background(), "foo", "cid", threadID, "path") require.NoError(t, err) err = col.SetPath(context.Background(), "path2", "foo") require.NoError(t, err) err = col.SetPath(context.Background(), "path2", "notfoo") require.Error(t, err) got, err := col.GetByCid(context.Background(), "cid") require.NoError(t, err) assert.Equal(t, "foo", got.Name) assert.Equal(t, "path2", got.Path) assert.Equal(t, threadID, got.ThreadID) } func TestIPNSKeys_ListByThreadID(t *testing.T) { db := newDB(t) col, err := NewIPNSKeys(context.Background(), db) require.NoError(t, err) threadID := thread.NewIDV1(thread.Raw, 32) err = col.Create(context.Background(), "foo1", "cid1", threadID, "path1") require.NoError(t, err) err = col.Create(context.Background(), "foo2", "cid2", threadID, "path2") require.NoError(t, err) list1, err := col.ListByThreadID(context.Background(), threadID) require.NoError(t, err) assert.Equal(t, 2, len(list1)) list2, err := col.ListByThreadID(context.Background(), thread.NewIDV1(thread.Raw, 32)) require.NoError(t, err) assert.Equal(t, 0, len(list2)) } func TestIPNSKeys_Delete(t *testing.T) { db := newDB(t) col, err := NewIPNSKeys(context.Background(), db) require.NoError(t, err) err = col.Create(context.Background(), "foo", "cid", thread.NewIDV1(thread.Raw, 32), "path") require.NoError(t, err) err = col.Delete(context.Background(), "foo") require.NoError(t, err) _, err = col.Get(context.Background(), "foo") require.Error(t, err) } ================================================ FILE: mongodb/migrations/migrations.go ================================================ package migrations import ( "context" "strings" "time" logging "github.com/ipfs/go-log/v2" migrate "github.com/xakep666/mongo-migrate" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) var ( log = logging.Logger("migrations") migrateTimeout = time.Hour ) var m001 = migrate.Migration{ Version: 1, Description: "make accounts username index sparse", Up: func(db *mongo.Database) error { log.Info("migrating 001 up") ctx, cancel := context.WithTimeout(context.Background(), migrateTimeout) defer cancel() count, err := db.Collection("accounts").CountDocuments(ctx, bson.M{}) if err != nil { return err } if count == 0 { return nil // namespace doesn't exist } _, err = db.Collection("accounts").Indexes().DropOne(ctx, "username_1") if err != nil { return err } _, err = db.Collection("accounts").Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{{"username", 1}}, Options: options.Index(). SetUnique(true). SetCollation(&options.Collation{Locale: "en", Strength: 2}). SetSparse(true), }) return err }, Down: func(db *mongo.Database) error { log.Info("migrating 001 down") ctx, cancel := context.WithTimeout(context.Background(), migrateTimeout) defer cancel() count, err := db.Collection("accounts").CountDocuments(ctx, bson.M{}) if err != nil { return err } if count == 0 { return nil // namespace doesn't exist } _, err = db.Collection("accounts").Indexes().DropOne(ctx, "username_1") if err != nil { return err } _, err = db.Collection("accounts").Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{{"username", 1}}, Options: options.Index(). SetUnique(true). SetCollation(&options.Collation{Locale: "en", Strength: 2}), }) return err }, } var m002 = migrate.Migration{ Version: 2, Description: "consolidate users and accounts", Up: func(db *mongo.Database) error { log.Info("migrating 002 up") ctx, cancel := context.WithTimeout(context.Background(), migrateTimeout) defer cancel() cursor, err := db.Collection("users").Find(ctx, bson.M{}) if err != nil { return err } defer cursor.Close(ctx) for cursor.Next(ctx) { var user bson.M if err := cursor.Decode(&user); err != nil { return err } user["type"] = 2 _, err := db.Collection("accounts").InsertOne(ctx, user) if err != nil { if !strings.Contains(err.Error(), "E11000 duplicate key error") { return err } } } if cursor.Err() != nil { return cursor.Err() } return db.Collection("users").Drop(ctx) }, Down: func(db *mongo.Database) error { log.Info("migrating 002 down") ctx, cancel := context.WithTimeout(context.Background(), migrateTimeout) defer cancel() cursor, err := db.Collection("accounts").Find(ctx, bson.M{}) if err != nil { return err } defer cursor.Close(ctx) for cursor.Next(ctx) { var account bson.M if err := cursor.Decode(&account); err != nil { return err } if v, ok := account["type"]; ok && v.(int32) == 2 { delete(account, "type") _, err := db.Collection("users").InsertOne(ctx, account) if err != nil { return err } _, err = db.Collection("accounts").DeleteOne(ctx, bson.M{"_id": account["_id"]}) if err != nil { return err } } } return cursor.Err() }, } var m003 = migrate.Migration{ Version: 3, Description: "remove buckets_total_size from accounts", Up: func(db *mongo.Database) error { log.Info("migrating 003 up") ctx, cancel := context.WithTimeout(context.Background(), migrateTimeout) defer cancel() _, err := db.Collection("accounts").UpdateMany(ctx, bson.M{ "buckets_total_size": bson.M{"$exists": 1}, }, bson.M{ "$unset": bson.M{"buckets_total_size": 1}, }) return err }, Down: func(db *mongo.Database) error { log.Info("migrating 003 down") ctx, cancel := context.WithTimeout(context.Background(), migrateTimeout) defer cancel() _, err := db.Collection("accounts").UpdateMany(ctx, bson.M{}, bson.M{ "$set": bson.M{"buckets_total_size": 0}, }) return err }, } var m004 = migrate.Migration{ Version: 4, Description: "set empty path field on all ipnskeys", Up: func(db *mongo.Database) error { log.Info("migrating 004 up") ctx, cancel := context.WithTimeout(context.Background(), migrateTimeout) defer cancel() _, err := db.Collection("ipnskeys").UpdateMany(ctx, bson.M{}, bson.M{ "$set": bson.M{"path": ""}, }) return err }, Down: func(db *mongo.Database) error { log.Info("migrating 004 down") ctx, cancel := context.WithTimeout(context.Background(), migrateTimeout) defer cancel() _, err := db.Collection("ipnskeys").UpdateMany(ctx, bson.M{ "path": bson.M{"$exists": 1}, }, bson.M{ "$unset": bson.M{"path": 1}, }) return err }, } var m005 = migrate.Migration{ Version: 5, Description: "rename any bucket archive job_status to status", Up: func(db *mongo.Database) error { log.Info("migrating 005 up") ctx, cancel := context.WithTimeout(context.Background(), migrateTimeout) defer cancel() if _, err := db.Collection("bucketarchives").UpdateMany(ctx, bson.M{}, bson.M{ "$rename": bson.M{"archives.current.job_status": "archives.current.status"}, }); err != nil { return err } if _, err := db.Collection("bucketarchives").Aggregate(ctx, mongo.Pipeline{ bson.D{primitive.E{Key: "$addFields", Value: bson.M{ "archives.history": bson.M{ "$map": bson.M{ "input": "$archives.history", "as": "archive", "in": bson.M{ "$mergeObjects": bson.A{ bson.M{"status": "$$archive.job_status"}, bson.M{ "$arrayToObject": bson.M{ "$filter": bson.M{ "input": bson.M{"$objectToArray": "$$archive"}, "as": "archive", "cond": bson.M{"$ne": bson.A{"$$archive.k", "job_status"}}, }, }, }, }, }, }, }, }}}, bson.D{ primitive.E{Key: "$out", Value: "bucketarchives"}, }, }); err != nil { return err } return nil }, Down: func(db *mongo.Database) error { log.Info("nothing to do for 005 down") return nil }, } func Migrate(db *mongo.Database) error { m := migrate.NewMigrate( db, m001, m002, m003, m004, m005, ) return m.Up(migrate.AllAvailable) } ================================================ FILE: mongodb/migrations/migrations_test.go ================================================ package migrations import ( "context" "os" "testing" "time" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/textileio/go-ds-mongo/test" migrate "github.com/xakep666/mongo-migrate" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) func TestMain(m *testing.M) { cleanup := func() {} if os.Getenv("SKIP_SERVICES") != "true" { cleanup = test.StartMongoDB() } exitVal := m.Run() cleanup() os.Exit(exitVal) } // Test make accounts username index sparse func TestMigrations_m001(t *testing.T) { ctx := context.Background() db := setup(t, ctx) // Preload collection _, err := db.Collection("accounts").Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{{"username", 1}}, Options: options.Index(). SetUnique(true). SetCollation(&options.Collation{Locale: "en", Strength: 2}), }) require.NoError(t, err) _, err = db.Collection("accounts").InsertMany(ctx, []interface{}{ bson.M{"username": "one"}, bson.M{"username": "two"}, bson.M{"username": "three"}, }) require.NoError(t, err) // Test that nil username causes duplicate key error users := []interface{}{ bson.M{"foo": 1}, // nil username bson.M{"bar": 1}, // nil username } _, err = db.Collection("accounts").InsertMany(ctx, users) require.Error(t, err) // Duplicate key error // Run up err = migrate.NewMigrate(db, m001).Up(migrate.AllAvailable) require.NoError(t, err) // No duplicate key error this time _, err = db.Collection("accounts").InsertMany(ctx, users) require.NoError(t, err) // Clean up _, err = db.Collection("accounts").DeleteMany(ctx, bson.M{}) require.NoError(t, err) // Run down err = migrate.NewMigrate(db, m001).Down(migrate.AllAvailable) require.NoError(t, err) } // Test consolidate users and accounts func TestMigrations_m002(t *testing.T) { ctx := context.Background() db := setup(t, ctx) // Preload collections _, err := db.Collection("accounts").InsertMany(ctx, []interface{}{ bson.M{"type": 0, "created_at": time.Now()}, bson.M{"type": 0, "created_at": time.Now()}, bson.M{"type": 0, "created_at": time.Now()}, }) require.NoError(t, err) _, err = db.Collection("users").InsertMany(ctx, []interface{}{ bson.M{"created_at": time.Now()}, bson.M{"created_at": time.Now()}, bson.M{"created_at": time.Now()}, }) require.NoError(t, err) // Run up err = migrate.NewMigrate(db, m002).Up(migrate.AllAvailable) require.NoError(t, err) count, err := db.Collection("accounts").CountDocuments(ctx, bson.M{}) require.NoError(t, err) assert.Equal(t, 6, int(count)) count, err = db.Collection("accounts").CountDocuments(ctx, bson.M{"type": 2}) require.NoError(t, err) assert.Equal(t, 3, int(count)) count, err = db.Collection("users").CountDocuments(ctx, bson.M{}) require.NoError(t, err) assert.Equal(t, 0, int(count)) // Run down err = migrate.NewMigrate(db, m002).Down(migrate.AllAvailable) require.NoError(t, err) count, err = db.Collection("accounts").CountDocuments(ctx, bson.M{}) require.NoError(t, err) assert.Equal(t, 3, int(count)) count, err = db.Collection("users").CountDocuments(ctx, bson.M{}) require.NoError(t, err) assert.Equal(t, 3, int(count)) } // Test remove buckets_total_size from accounts func TestMigrations_m003(t *testing.T) { ctx := context.Background() db := setup(t, ctx) // Preload collections _, err := db.Collection("accounts").InsertMany(ctx, []interface{}{ bson.M{"buckets_total_size": 1024, "created_at": time.Now()}, }) require.NoError(t, err) // Run up err = migrate.NewMigrate(db, m003).Up(migrate.AllAvailable) require.NoError(t, err) res := db.Collection("accounts").FindOne(ctx, bson.M{}) require.NoError(t, res.Err()) var account bson.M err = res.Decode(&account) require.NoError(t, err) assert.Nil(t, account["buckets_total_size"]) // Run down err = migrate.NewMigrate(db, m003).Down(migrate.AllAvailable) require.NoError(t, err) res = db.Collection("accounts").FindOne(ctx, bson.M{}) require.NoError(t, res.Err()) var account2 bson.M err = res.Decode(&account2) require.NoError(t, err) assert.NotNil(t, account2["buckets_total_size"]) } // Test remove buckets_total_size from accounts func TestMigrations_m004(t *testing.T) { ctx := context.Background() db := setup(t, ctx) // Preload collections _, err := db.Collection("ipnskeys").InsertMany(ctx, []interface{}{ bson.M{"_id": "name", "cid": "cid", "created_at": time.Now()}, }) require.NoError(t, err) // Run up err = migrate.NewMigrate(db, m004).Up(migrate.AllAvailable) require.NoError(t, err) res := db.Collection("ipnskeys").FindOne(ctx, bson.M{}) require.NoError(t, res.Err()) var key bson.M err = res.Decode(&key) require.NoError(t, err) assert.NotNil(t, key["path"]) // Run down err = migrate.NewMigrate(db, m004).Down(migrate.AllAvailable) require.NoError(t, err) res = db.Collection("ipnskeys").FindOne(ctx, bson.M{}) require.NoError(t, res.Err()) var key2 bson.M err = res.Decode(&key2) require.NoError(t, err) assert.Nil(t, key2["path"]) } func TestMigrations_m005(t *testing.T) { ctx := context.Background() db := setup(t, ctx) _, err := db.Collection("bucketarchives").InsertMany(ctx, []interface{}{ bson.M{ "_id": "id1", "archives": bson.M{ "current": bson.M{ "job_id": "job3", "status": 1, "created_at": 1000, }, "history": bson.A{ bson.M{ "job_id": "job2", "status": 1, "created_at": 1000, }, bson.M{ "job_id": "job1", "status": 1, "created_at": 1000, }, }, }, }, bson.M{ "_id": "id2", "archives": bson.M{ "current": bson.M{ "job_id": "job6", "job_status": 1, "created_at": 1000, }, "history": bson.A{ bson.M{ "job_id": "job5", "job_status": 1, "created_at": 1000, }, bson.M{ "job_id": "job4", "job_status": 1, "created_at": 1000, }, }, }, }, bson.M{ "_id": "id3", "archives": bson.M{ "current": bson.M{ "job_id": "job9", "status": 1, "created_at": 1000, }, "history": bson.A{ bson.M{ "job_id": "job8", "job_status": 1, "created_at": 1000, }, bson.M{ "job_id": "job7", "status": 1, "created_at": 1000, }, }, }, }, bson.M{ "_id": "id4", "archives": bson.M{ "current": bson.M{ "job_id": "job12", "job_status": 1, "created_at": 1000, }, "history": bson.A{ bson.M{ "job_id": "job11", "status": 1, "created_at": 1000, }, bson.M{ "job_id": "job10", "status": 1, "created_at": 1000, }, }, }, }, bson.M{ "_id": "id5", "archives": bson.M{ "history": bson.A{ bson.M{ "job_id": "job14", "job_status": 1, "created_at": 1000, }, bson.M{ "job_id": "job13", "status": 1, "created_at": 1000, }, }, }, }, bson.M{ "_id": "id6", "archives": bson.M{ "current": bson.M{ "job_id": "job15", "job_status": 1, "created_at": 1000, }, }, }, }) require.NoError(t, err) // Run up err = migrate.NewMigrate(db, m005).Up(migrate.AllAvailable) require.NoError(t, err) count, err := db.Collection("bucketarchives").CountDocuments(ctx, bson.M{}) require.NoError(t, err) assert.Equal(t, 6, int(count)) cursor, err := db.Collection("bucketarchives").Find(ctx, bson.M{}) require.NoError(t, err) defer cursor.Close(ctx) validateItem := func(item bson.M) { require.NotEmpty(t, item["job_id"]) require.Contains(t, item["job_id"], "job") require.Equal(t, 1000, int(item["created_at"].(int32))) require.Nil(t, item["job_status"]) require.Equal(t, 1, int(item["status"].(int32))) } for cursor.Next(ctx) { var item bson.M require.NoError(t, cursor.Decode(&item)) require.NotEmpty(t, item["_id"]) require.NotEmpty(t, item["archives"]) if item["_id"] == "id1" || item["_id"] == "id2" || item["_id"] == "id3" || item["_id"] == "id4" { require.NotNil(t, item["archives"].(bson.M)["current"]) require.NotNil(t, item["archives"].(bson.M)["history"]) } if item["_id"] == "id5" { require.Nil(t, item["archives"].(bson.M)["current"]) require.NotNil(t, item["archives"].(bson.M)["history"]) } if item["_id"] == "id6" { require.NotNil(t, item["archives"].(bson.M)["current"]) require.Nil(t, item["archives"].(bson.M)["history"]) } if item["archives"].(bson.M)["current"] != nil { validateItem(item["archives"].(bson.M)["current"].(bson.M)) } if item["archives"].(bson.M)["history"] != nil { for _, item := range item["archives"].(bson.M)["history"].(bson.A) { validateItem(item.(bson.M)) } } } require.NoError(t, cursor.Err()) } func setup(t *testing.T, ctx context.Context) *mongo.Database { client, err := mongo.Connect(ctx, options.Client().ApplyURI(test.GetMongoUri())) require.NoError(t, err) db := client.Database("test_textile_migrations") t.Cleanup(func() { err := db.Drop(ctx) require.NoError(t, err) }) return db } ================================================ FILE: mongodb/sessions.go ================================================ package mongodb import ( "context" "time" "github.com/textileio/go-threads/core/thread" "github.com/textileio/textile/v2/util" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" ) const ( sessionDur = time.Hour * 24 * 7 * 30 * 6 ) type Session struct { ID string Owner thread.PubKey ExpiresAt time.Time } func NewSessionContext(ctx context.Context, session *Session) context.Context { return context.WithValue(ctx, ctxKey("session"), session) } func SessionFromContext(ctx context.Context) (*Session, bool) { session, ok := ctx.Value(ctxKey("session")).(*Session) return session, ok } type Sessions struct { col *mongo.Collection } func NewSessions(ctx context.Context, db *mongo.Database) (*Sessions, error) { s := &Sessions{col: db.Collection("sessions")} _, err := s.col.Indexes().CreateMany(ctx, []mongo.IndexModel{ { Keys: bson.D{primitive.E{Key: "developer_id", Value: 1}}, }, }) return s, err } func (s *Sessions) Create(ctx context.Context, owner thread.PubKey) (*Session, error) { doc := &Session{ ID: util.MakeToken(tokenLen), Owner: owner, ExpiresAt: time.Now().Add(sessionDur), } ownerID, err := owner.MarshalBinary() if err != nil { return nil, err } if _, err := s.col.InsertOne(ctx, bson.M{ "_id": doc.ID, "owner_id": ownerID, "expires_at": doc.ExpiresAt, }); err != nil { return nil, err } return doc, nil } func (s *Sessions) Get(ctx context.Context, id string) (*Session, error) { res := s.col.FindOne(ctx, bson.M{"_id": id}) if res.Err() != nil { return nil, res.Err() } var raw bson.M if err := res.Decode(&raw); err != nil { return nil, err } return decodeSession(raw) } func (s *Sessions) Touch(ctx context.Context, id string) error { expiry := time.Now().Add(sessionDur) res, err := s.col.UpdateOne(ctx, bson.M{"_id": id}, bson.M{"$set": bson.M{"expires_at": expiry}}) if err != nil { return err } if res.MatchedCount == 0 { return mongo.ErrNoDocuments } return nil } func (s *Sessions) Delete(ctx context.Context, id string) error { res, err := s.col.DeleteOne(ctx, bson.M{"_id": id}) if err != nil { return err } if res.DeletedCount == 0 { return mongo.ErrNoDocuments } return nil } func (s *Sessions) DeleteByOwner(ctx context.Context, owner thread.PubKey) error { ownerID, err := owner.MarshalBinary() if err != nil { return err } _, err = s.col.DeleteMany(ctx, bson.M{"owner_id": ownerID}) return err } func decodeSession(raw bson.M) (*Session, error) { owner := &thread.Libp2pPubKey{} err := owner.UnmarshalBinary(raw["owner_id"].(primitive.Binary).Data) if err != nil { return nil, err } var expiry time.Time if v, ok := raw["expires_at"]; ok { expiry = v.(primitive.DateTime).Time() } return &Session{ ID: raw["_id"].(string), Owner: owner, ExpiresAt: expiry, }, nil } ================================================ FILE: mongodb/sessions_test.go ================================================ package mongodb_test import ( "context" "crypto/rand" "testing" "time" "github.com/libp2p/go-libp2p-core/crypto" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/textileio/go-threads/core/thread" . "github.com/textileio/textile/v2/mongodb" ) func TestSessions_Create(t *testing.T) { db := newDB(t) col, err := NewSessions(context.Background(), db) require.NoError(t, err) _, owner, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(context.Background(), thread.NewLibp2pPubKey(owner)) require.NoError(t, err) assert.True(t, created.ExpiresAt.After(time.Now())) } func TestSessions_Get(t *testing.T) { db := newDB(t) col, err := NewSessions(context.Background(), db) require.NoError(t, err) _, owner, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(context.Background(), thread.NewLibp2pPubKey(owner)) require.NoError(t, err) got, err := col.Get(context.Background(), created.ID) require.NoError(t, err) assert.Equal(t, created.ID, got.ID) } func TestSessions_Touch(t *testing.T) { db := newDB(t) col, err := NewSessions(context.Background(), db) require.NoError(t, err) _, owner, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(context.Background(), thread.NewLibp2pPubKey(owner)) require.NoError(t, err) time.Sleep(time.Second) err = col.Touch(context.Background(), created.ID) require.NoError(t, err) got, err := col.Get(context.Background(), created.ID) require.NoError(t, err) assert.True(t, got.ExpiresAt.After(created.ExpiresAt)) } func TestSessions_Delete(t *testing.T) { db := newDB(t) col, err := NewSessions(context.Background(), db) require.NoError(t, err) _, owner, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(context.Background(), thread.NewLibp2pPubKey(owner)) require.NoError(t, err) err = col.Delete(context.Background(), created.ID) require.NoError(t, err) _, err = col.Get(context.Background(), created.ID) require.Error(t, err) } func TestSessions_DeleteByOwner(t *testing.T) { db := newDB(t) col, err := NewSessions(context.Background(), db) require.NoError(t, err) _, owner, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(context.Background(), thread.NewLibp2pPubKey(owner)) require.NoError(t, err) err = col.DeleteByOwner(context.Background(), created.Owner) require.NoError(t, err) _, err = col.Get(context.Background(), created.ID) require.Error(t, err) } ================================================ FILE: mongodb/threads.go ================================================ package mongodb import ( "context" "fmt" "regexp" "time" "github.com/textileio/go-threads/core/thread" "github.com/textileio/textile/v2/api/common" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) var ( threadNameRx *regexp.Regexp ErrInvalidThreadName = fmt.Errorf("name may only contain alphanumeric characters or non-consecutive hyphens, and cannot begin or end with a hyphen") ) func init() { threadNameRx = regexp.MustCompile(`^[A-Za-z0-9]+(?:[-][A-Za-z0-9]+)*$`) } type Thread struct { ID thread.ID Owner thread.PubKey Name string Key string IsDB bool CreatedAt time.Time } type Threads struct { col *mongo.Collection } func NewThreads(ctx context.Context, db *mongo.Database) (*Threads, error) { t := &Threads{col: db.Collection("threads")} _, err := t.col.Indexes().CreateMany(ctx, []mongo.IndexModel{ { Keys: bson.D{primitive.E{Key: "_id.owner", Value: 1}, primitive.E{Key: "name", Value: 1}}, Options: options.Index().SetUnique(true). SetPartialFilterExpression(bson.D{primitive.E{Key: "name", Value: bson.M{"$exists": 1}}}). SetCollation(&options.Collation{Locale: "en", Strength: 2}), }, { Keys: bson.D{primitive.E{Key: "_id.thread", Value: 1}}, }, { Keys: bson.D{primitive.E{Key: "key_id", Value: 1}}, }, }) return t, err } func (t *Threads) Create(ctx context.Context, id thread.ID, owner thread.PubKey, isDB bool) (*Thread, error) { name, _ := common.ThreadNameFromContext(ctx) if name != "" && !threadNameRx.MatchString(name) { return nil, ErrInvalidThreadName } key, _ := common.APIKeyFromContext(ctx) doc := &Thread{ ID: id, Owner: owner, Name: name, Key: key, IsDB: isDB, CreatedAt: time.Now(), } ownerID, err := owner.MarshalBinary() if err != nil { return nil, err } raw := bson.M{ "_id": bson.D{primitive.E{Key: "owner", Value: ownerID}, primitive.E{Key: "thread", Value: id.Bytes()}}, "key_id": doc.Key, "is_db": doc.IsDB, "created_at": doc.CreatedAt, } if doc.Name != "" { raw["name"] = doc.Name } if _, err := t.col.InsertOne(ctx, raw); err != nil { return nil, err } return doc, nil } func (t *Threads) Get(ctx context.Context, id thread.ID, owner thread.PubKey) (*Thread, error) { ownerID, err := owner.MarshalBinary() if err != nil { return nil, err } res := t.col.FindOne(ctx, bson.M{"_id": bson.D{primitive.E{Key: "owner", Value: ownerID}, primitive.E{Key: "thread", Value: id.Bytes()}}}) if res.Err() != nil { return nil, res.Err() } var raw bson.M if err := res.Decode(&raw); err != nil { return nil, err } return decodeThread(raw) } func (t *Threads) GetByName(ctx context.Context, name string, owner thread.PubKey) (*Thread, error) { ownerID, err := owner.MarshalBinary() if err != nil { return nil, err } res := t.col.FindOne(ctx, bson.M{"_id.owner": ownerID, "name": name}) if res.Err() != nil { return nil, res.Err() } var raw bson.M if err := res.Decode(&raw); err != nil { return nil, err } return decodeThread(raw) } func (t *Threads) ListByOwner(ctx context.Context, owner thread.PubKey) ([]Thread, error) { ownerID, err := owner.MarshalBinary() if err != nil { return nil, err } cursor, err := t.col.Find(ctx, bson.M{"_id.owner": ownerID}) if err != nil { return nil, err } defer cursor.Close(ctx) var docs []Thread for cursor.Next(ctx) { var raw bson.M if err := cursor.Decode(&raw); err != nil { return nil, err } doc, err := decodeThread(raw) if err != nil { return nil, err } docs = append(docs, *doc) } if err := cursor.Err(); err != nil { return nil, err } return docs, nil } func (t *Threads) ListByKey(ctx context.Context, key string) ([]Thread, error) { cursor, err := t.col.Find(ctx, bson.M{"key_id": key}) if err != nil { return nil, err } defer cursor.Close(ctx) var docs []Thread for cursor.Next(ctx) { var raw bson.M if err := cursor.Decode(&raw); err != nil { return nil, err } doc, err := decodeThread(raw) if err != nil { return nil, err } docs = append(docs, *doc) } if err := cursor.Err(); err != nil { return nil, err } return docs, nil } func (t *Threads) Delete(ctx context.Context, id thread.ID, owner thread.PubKey) error { ownerID, err := owner.MarshalBinary() if err != nil { return err } res, err := t.col.DeleteOne(ctx, bson.M{"_id": bson.D{primitive.E{Key: "owner", Value: ownerID}, primitive.E{Key: "thread", Value: id.Bytes()}}}) if err != nil { return err } if res.DeletedCount == 0 { return mongo.ErrNoDocuments } return nil } func (t *Threads) DeleteByOwner(ctx context.Context, owner thread.PubKey) error { ownerID, err := owner.MarshalBinary() if err != nil { return err } _, err = t.col.DeleteMany(ctx, bson.M{"_id.owner": ownerID}) return err } func decodeThread(raw bson.M) (*Thread, error) { rid := raw["_id"].(bson.M) owner := &thread.Libp2pPubKey{} err := owner.UnmarshalBinary(rid["owner"].(primitive.Binary).Data) if err != nil { return nil, err } id, err := thread.Cast(rid["thread"].(primitive.Binary).Data) if err != nil { return nil, err } var name string if raw["name"] != nil { name = raw["name"].(string) } var key string if raw["key_id"] != nil { key = raw["key_id"].(string) } var isDB bool if v, ok := raw["is_db"]; ok { isDB = v.(bool) } else { isDB = true } var created time.Time if v, ok := raw["created_at"]; ok { created = v.(primitive.DateTime).Time() } return &Thread{ ID: id, Owner: owner, Name: name, Key: key, IsDB: isDB, CreatedAt: created, }, nil } ================================================ FILE: mongodb/threads_test.go ================================================ package mongodb_test import ( "context" "crypto/rand" "testing" "github.com/libp2p/go-libp2p-core/crypto" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/textileio/go-threads/core/thread" "github.com/textileio/textile/v2/api/common" . "github.com/textileio/textile/v2/mongodb" "github.com/textileio/textile/v2/util" ) func TestThreads_Create(t *testing.T) { db := newDB(t) ctx := context.Background() col, err := NewThreads(ctx, db) require.NoError(t, err) id := thread.NewIDV1(thread.Raw, 32) _, owner, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created1, err := col.Create(ctx, id, thread.NewLibp2pPubKey(owner), false) require.NoError(t, err) assert.True(t, created1.ID.Defined()) assert.False(t, created1.IsDB) _, err = col.Create(ctx, id, thread.NewLibp2pPubKey(owner), false) require.Error(t, err) _, err = col.Create(common.NewThreadNameContext(ctx, "db1"), thread.NewIDV1(thread.Raw, 32), thread.NewLibp2pPubKey(owner), true) require.NoError(t, err) _, err = col.Create(common.NewThreadNameContext(ctx, "db1"), thread.NewIDV1(thread.Raw, 32), thread.NewLibp2pPubKey(owner), true) require.Error(t, err) } func TestThreads_Get(t *testing.T) { db := newDB(t) ctx := context.Background() col, err := NewThreads(ctx, db) require.NoError(t, err) _, owner, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(ctx, thread.NewIDV1(thread.Raw, 32), thread.NewLibp2pPubKey(owner), true) require.NoError(t, err) got, err := col.Get(ctx, created.ID, thread.NewLibp2pPubKey(owner)) require.NoError(t, err) assert.Equal(t, created.Owner, got.Owner) assert.Equal(t, created.ID, got.ID) assert.True(t, created.IsDB) } func TestThreads_GetByName(t *testing.T) { db := newDB(t) ctx := context.Background() col, err := NewThreads(ctx, db) require.NoError(t, err) _, owner, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(common.NewThreadNameContext(ctx, "db1"), thread.NewIDV1(thread.Raw, 32), thread.NewLibp2pPubKey(owner), true) require.NoError(t, err) got, err := col.GetByName(ctx, "db1", thread.NewLibp2pPubKey(owner)) require.NoError(t, err) assert.Equal(t, created.Owner, got.Owner) assert.Equal(t, created.ID, got.ID) } func TestThreads_ListByOwner(t *testing.T) { db := newDB(t) ctx := context.Background() col, err := NewThreads(ctx, db) require.NoError(t, err) _, owner1, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) _, err = col.Create(ctx, thread.NewIDV1(thread.Raw, 32), thread.NewLibp2pPubKey(owner1), true) require.NoError(t, err) _, err = col.Create(ctx, thread.NewIDV1(thread.Raw, 32), thread.NewLibp2pPubKey(owner1), true) require.NoError(t, err) list1, err := col.ListByOwner(ctx, thread.NewLibp2pPubKey(owner1)) require.NoError(t, err) assert.Equal(t, 2, len(list1)) _, owner2, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) list2, err := col.ListByOwner(ctx, thread.NewLibp2pPubKey(owner2)) require.NoError(t, err) assert.Equal(t, 0, len(list2)) } func TestThreads_ListByKey(t *testing.T) { db := newDB(t) ctx := context.Background() col, err := NewThreads(ctx, db) require.NoError(t, err) key := util.MakeToken(12) _, owner1, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) _, err = col.Create(common.NewAPIKeyContext(ctx, key), thread.NewIDV1(thread.Raw, 32), thread.NewLibp2pPubKey(owner1), true) require.NoError(t, err) _, owner2, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) _, err = col.Create(common.NewAPIKeyContext(ctx, key), thread.NewIDV1(thread.Raw, 32), thread.NewLibp2pPubKey(owner2), true) require.NoError(t, err) list1, err := col.ListByKey(ctx, key) require.NoError(t, err) assert.Equal(t, 2, len(list1)) _, owner3, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) list2, err := col.ListByOwner(ctx, thread.NewLibp2pPubKey(owner3)) require.NoError(t, err) assert.Equal(t, 0, len(list2)) } func TestThreads_Delete(t *testing.T) { db := newDB(t) ctx := context.Background() col, err := NewThreads(ctx, db) require.NoError(t, err) _, owner, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(ctx, thread.NewIDV1(thread.Raw, 32), thread.NewLibp2pPubKey(owner), true) require.NoError(t, err) err = col.Delete(ctx, created.ID, thread.NewLibp2pPubKey(owner)) require.NoError(t, err) _, err = col.Get(ctx, created.ID, thread.NewLibp2pPubKey(owner)) require.Error(t, err) } func TestThreads_DeleteByOwner(t *testing.T) { db := newDB(t) ctx := context.Background() col, err := NewThreads(ctx, db) require.NoError(t, err) _, owner, err := crypto.GenerateEd25519Key(rand.Reader) require.NoError(t, err) created, err := col.Create(ctx, thread.NewIDV1(thread.Raw, 32), thread.NewLibp2pPubKey(owner), true) require.NoError(t, err) err = col.DeleteByOwner(ctx, thread.NewLibp2pPubKey(owner)) require.NoError(t, err) _, err = col.Get(ctx, created.ID, thread.NewLibp2pPubKey(owner)) require.Error(t, err) } ================================================ FILE: scripts/gen_js_protos.bash ================================================ #!/bin/bash set -eo pipefail wd="$(pwd -P)" js_paths=() while IFS= read -r -d $'\0'; do js_paths+=("$REPLY") done < <(find . -path "*/pb/javascript" ! -path "*/node_modules/*" -print0) echo installing dependencies for path in "${js_paths[@]}"; do cd "${path}" && npm install >/dev/null 2>&1 && cd "${wd}" done echo generating js-protos in api/hubd/pb/javascript ./buildtools/protoc/bin/protoc \ --proto_path=. \ --plugin=protoc-gen-ts=api/hubd/pb/javascript/node_modules/.bin/protoc-gen-ts \ --js_out=import_style=commonjs,binary:api/hubd/pb/javascript \ --ts_out=service=grpc-web:api/hubd/pb/javascript \ api/billingd/pb/billingd.proto api/hubd/pb/hubd.proto echo generating js-protos in api/usersd/pb/javascript ./buildtools/protoc/bin/protoc \ --proto_path=. \ --plugin=protoc-gen-ts=api/usersd/pb/javascript/node_modules/.bin/protoc-gen-ts \ --js_out=import_style=commonjs,binary:api/usersd/pb/javascript \ --ts_out=service=grpc-web:api/usersd/pb/javascript \ api/billingd/pb/billingd.proto api/usersd/pb/usersd.proto echo generating js-protos in api/bucketsd/pb/javascript ./buildtools/protoc/bin/protoc \ --proto_path=. \ --plugin=protoc-gen-ts=api/bucketsd/pb/javascript/node_modules/.bin/protoc-gen-ts \ --js_out=import_style=commonjs,binary:api/bucketsd/pb/javascript \ --ts_out=service=grpc-web:api/bucketsd/pb/javascript \ api/bucketsd/pb/bucketsd.proto ================================================ FILE: scripts/protoc_gen_plugin.bash ================================================ #!/bin/bash set -eo pipefail # From https://github.com/bufbuild/buf/blob/master/make/go/scripts/protoc_gen_plugin.bash fail() { echo "$@" >&2 exit 1 } usage() { echo "usage: ${0} \ --proto_path=path/to/one \ --proto_path=path/to/two \ --proto_include_path=path/to/one \ --proto_include_path=path/to/two \ --plugin_name=go \ --plugin_out=gen/proto/go \ --plugin_opt=plugins=grpc" } check_flag_value_set() { if [ -z "${1}" ]; then usage exit 1 fi } PROTO_PATHS=() PROTO_INCLUDE_PATHS=() PLUGIN_NAME= PLUGIN_OUT= PLUGIN_OPT= while test $# -gt 0; do case "${1}" in -h|--help) usage exit 0 ;; --proto_path*) PROTO_PATHS+=("$(echo ${1} | sed -e 's/^[^=]*=//g')") shift ;; --proto_include_path*) PROTO_INCLUDE_PATHS+=("$(echo ${1} | sed -e 's/^[^=]*=//g')") shift ;; --plugin_name*) PLUGIN_NAME="$(echo ${1} | sed -e 's/^[^=]*=//g')" shift ;; --plugin_out*) PLUGIN_OUT="$(echo ${1} | sed -e 's/^[^=]*=//g')" shift ;; --plugin_opt*) PLUGIN_OPT="$(echo ${1} | sed -e 's/^[^=]*=//g')" shift ;; *) usage exit 1 ;; esac done check_flag_value_set "${PROTO_PATHS[@]}" check_flag_value_set "${PLUGIN_NAME}" check_flag_value_set "${PLUGIN_OUT}" PROTOC_FLAGS=() for proto_path in "${PROTO_PATHS[@]}"; do PROTOC_FLAGS+=("--proto_path=${proto_path}") done for proto_path in "${PROTO_INCLUDE_PATHS[@]}"; do PROTOC_FLAGS+=("--proto_path=${proto_path}") done PROTOC_FLAGS+=("--${PLUGIN_NAME}_out=${PLUGIN_OUT}") if [ -n "${PLUGIN_OPT}" ]; then PROTOC_FLAGS+=("--${PLUGIN_NAME}_opt=${PLUGIN_OPT}") fi mkdir -p "${PLUGIN_OUT}" for proto_path in "${PROTO_PATHS[@]}"; do for dir in $(find "${proto_path}" -type f ! -path './buildtools/*' ! -path '*/node_modules/*' ! -path '*/pb/google/*' ! -path '*/pb/protoc-gen-openapiv2/*' -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq); do echo protoc "${PROTOC_FLAGS[@]}" "$(find "${dir}" -name '*.proto' ! -path '*/node_modules/*' ! -path '*/pb/google/*' ! -path '*/pb/protoc-gen-openapiv2/*')" ./buildtools/protoc/bin/protoc "${PROTOC_FLAGS[@]}" "$(find "${dir}" -name '*.proto' ! -path '*/node_modules/*' ! -path '*/pb/google/*' ! -path '*/pb/protoc-gen-openapiv2/*')" done done ================================================ FILE: scripts/publish_js_protos.bash ================================================ #!/bin/bash set -eo pipefail tag="latest" while getopts v:t:p: option do case "${option}" in v) version=${OPTARG};; t) token=${OPTARG};; p) if [[ "$OPTARG" == "true" ]]; then tag="next" fi ;; esac done [[ -z "$version" ]] && { echo "Please specify a new version, e.g., -v v1.0.0" ; exit 1; } [[ -z "$token" ]] && { echo "Please specify an NPM auth token, e.g., -t mytoken" ; exit 1; } wd="$(pwd -P)" js_paths=() while IFS= read -r -d $'\0'; do js_paths+=("$REPLY") done < <(find . -path "*/pb/javascript" ! -path "*/node_modules/*" -print0) echo installing dependencies npm install -g json >/dev/null 2>&1 for path in "${js_paths[@]}"; do cd "${path}" json -I -f package.json -e "this.version=('$version').replace('v', '')" >/dev/null 2>&1 echo publishing js-protos in "${path}" with version "${version}" and token "${token}" NODE_AUTH_TOKEN="${token}" npm publish --access=public --tag ${tag} json -I -f package.json -e "this.version=('0.0.0')" >/dev/null 2>&1 cd "${wd}" done ================================================ FILE: threaddb/buckets.go ================================================ package threaddb import ( "context" "encoding/base64" "fmt" gopath "path" "strings" "sync" "time" "github.com/alecthomas/jsonschema" "github.com/ipfs/go-cid" "github.com/ipfs/interface-go-ipfs-core/path" "github.com/textileio/dcrypto" dbc "github.com/textileio/go-threads/api/client" "github.com/textileio/go-threads/core/thread" db "github.com/textileio/go-threads/db" powc "github.com/textileio/powergate/v2/api/client" userPb "github.com/textileio/powergate/v2/api/gen/powergate/user/v1" "github.com/textileio/textile/v2/buckets" mdb "github.com/textileio/textile/v2/mongodb" ) const Version = 1 var ( bucketsSchema *jsonschema.Schema bucketsIndexes = []db.Index{{ Path: "path", }} bucketsConfig db.CollectionConfig ) // Bucket represents the buckets threaddb collection schema. type Bucket struct { Key string `json:"_id"` Owner string `json:"owner"` Name string `json:"name"` Version int `json:"version"` LinkKey string `json:"key,omitempty"` Path string `json:"path"` Metadata map[string]Metadata `json:"metadata"` Archives Archives `json:"archives"` CreatedAt int64 `json:"created_at"` UpdatedAt int64 `json:"updated_at"` } // Metadata contains metadata about a bucket item (a file or folder). type Metadata struct { Key string `json:"key,omitempty"` Roles map[string]buckets.Role `json:"roles"` UpdatedAt int64 `json:"updated_at"` } // NewDefaultMetadata returns the default metadata for a path. func NewDefaultMetadata(owner thread.PubKey, key []byte, ts time.Time) Metadata { roles := make(map[string]buckets.Role) if owner != nil { if key == nil { roles["*"] = buckets.Reader } roles[owner.String()] = buckets.Admin } md := Metadata{ Roles: roles, UpdatedAt: ts.UnixNano(), } md.SetFileEncryptionKey(key) return md } // SetFileEncryptionKey sets the file encryption key. func (m *Metadata) SetFileEncryptionKey(key []byte) { if key != nil { m.Key = base64.StdEncoding.EncodeToString(key) } } // Archives contains info about bucket Filecoin archives. type Archives struct { Current Archive `json:"current"` History []Archive `json:"history"` } // Archive is a single Filecoin archive containing a list of deals. type Archive struct { Cid string `json:"cid"` Deals []Deal `json:"deals"` } // Deal contains info about an archive's Filecoin deal. type Deal struct { ProposalCid string `json:"proposal_cid"` Miner string `json:"miner"` } // IsPrivate returns whether or not the bucket is private. func (b *Bucket) IsPrivate() bool { return b.LinkKey != "" } // GetLinkEncryptionKey returns the bucket encryption key as bytes if present. // Version 0 buckets use the link key for all files and folders. // Version 1 buckets only use the link for folders. func (b *Bucket) GetLinkEncryptionKey() []byte { return keyBytes(b.LinkKey) } // GetFileEncryptionKeyForPath returns the encryption key for path. // Version 0 buckets use the link key for all paths. // Version 1 buckets use a different key defined in path metadata. func (b *Bucket) GetFileEncryptionKeyForPath(pth string) ([]byte, error) { if b.Version == 0 { return b.GetLinkEncryptionKey(), nil } md, _, ok := b.GetMetadataForPath(pth, true) if !ok { return nil, fmt.Errorf("could not resolve path: %s", pth) } return keyBytes(md.Key), nil } func keyBytes(k string) []byte { if k == "" { return nil } b, _ := base64.StdEncoding.DecodeString(k) return b } // GetFileEncryptionKeysForPrefix returns a map of keys for every path under prefix. func (b *Bucket) GetFileEncryptionKeysForPrefix(pre string) (map[string][]byte, error) { if b.Version == 0 { return map[string][]byte{"": b.GetLinkEncryptionKey()}, nil } keys := make(map[string][]byte) for p := range b.Metadata { if strings.HasPrefix(p, pre) { md, _, ok := b.GetMetadataForPath(p, true) if !ok { return nil, fmt.Errorf("could not resolve path: %s", p) } keys[p] = keyBytes(md.Key) } } return keys, nil } // RotateFileEncryptionKeysForPrefix re-generates existing metadata keys for every path under prefix. func (b *Bucket) RotateFileEncryptionKeysForPrefix(pre string) error { if b.Version == 0 { return nil } for p, md := range b.Metadata { if strings.HasPrefix(p, pre) { if md.Key != "" { key, err := dcrypto.NewKey() if err != nil { return err } md.SetFileEncryptionKey(key) } } } return nil } // GetMetadataForPath returns metadata for path. // The returned metadata could be from an exact path match or // the nearest parent, i.e., path was added as part of a folder. // If requireKey is true, metadata w/o a key is ignored and the search continues toward root. func (b *Bucket) GetMetadataForPath(pth string, requireKey bool) (md Metadata, at string, ok bool) { if b.Version == 0 { return md, at, true } // Check for an exact match if md, ok = b.Metadata[pth]; ok { if !b.IsPrivate() || !requireKey || md.Key != "" { return md, pth, true } } // Check if we can see this path via a parent parent := pth var done bool for { if done { break } parent = gopath.Dir(parent) if parent == "." { parent = "" done = true } if md, ok = b.Metadata[parent]; ok { if !b.IsPrivate() || !requireKey || md.Key != "" { return md, parent, true } } } return md, at, false } // SetMetadataAtPath create new or merges existing metadata at path. func (b *Bucket) SetMetadataAtPath(pth string, md Metadata) { if b.Version == 0 { return } x, ok := b.Metadata[pth] if ok { if md.Key != "" { x.Key = md.Key } if md.Roles != nil { x.Roles = md.Roles } x.UpdatedAt = md.UpdatedAt b.Metadata[pth] = x } else { if md.Roles == nil { md.Roles = make(map[string]buckets.Role) } b.Metadata[pth] = md } } // UnsetMetadataWithPrefix removes metadata with the path prefix. func (b *Bucket) UnsetMetadataWithPrefix(pre string) { if b.Version == 0 { return } for p := range b.Metadata { if strings.HasPrefix(p, pre) { delete(b.Metadata, p) } } } // ensureNoNulls inflates any values that are nil due to schema updates. func (b *Bucket) ensureNoNulls() { if b.Metadata == nil { b.Metadata = make(map[string]Metadata) } if len(b.Archives.History) == 0 { current := b.Archives.Current if len(current.Deals) == 0 { b.Archives.Current = Archive{Deals: []Deal{}} } b.Archives = Archives{Current: current, History: []Archive{}} } } func (b *Bucket) Copy() *Bucket { md := make(map[string]Metadata) for k, v := range b.Metadata { md[k] = v } ar := Archives{ Current: copyArchives(b.Archives.Current), History: make([]Archive, len(b.Archives.History)), } for i, j := range b.Archives.History { ar.History[i] = copyArchives(j) } return &Bucket{ Key: b.Key, Owner: b.Owner, Name: b.Name, Version: b.Version, LinkKey: b.LinkKey, Path: b.Path, Metadata: md, Archives: ar, CreatedAt: b.CreatedAt, UpdatedAt: b.UpdatedAt, } } func copyArchives(archive Archive) Archive { a := Archive{ Cid: archive.Cid, Deals: make([]Deal, len(archive.Deals)), } for i, j := range archive.Deals { a.Deals[i] = j } return a } // BucketOptions defines options for interacting with buckets. type BucketOptions struct { Name string Key []byte Token thread.Token } // BucketOption holds a bucket option. type BucketOption func(*BucketOptions) // WithNewBucketName specifies a name for a bucket. // Note: This is only valid when creating a new bucket. func WithNewBucketName(n string) BucketOption { return func(args *BucketOptions) { args.Name = n } } // WithNewBucketKey sets the bucket encryption key. func WithNewBucketKey(k []byte) BucketOption { return func(args *BucketOptions) { args.Key = k } } // WithNewBucketToken sets the threaddb token. func WithNewBucketToken(t thread.Token) BucketOption { return func(args *BucketOptions) { args.Token = t } } func init() { reflector := jsonschema.Reflector{ExpandedStruct: true} bucketsSchema = reflector.Reflect(&Bucket{}) bucketsConfig = db.CollectionConfig{ Name: buckets.CollectionName, Schema: bucketsSchema, Indexes: bucketsIndexes, WriteValidator: ` if (instance && !instance.version) { return true } var type = event.patch.type var patch = event.patch.json_patch var restricted = ["owner", "name", "version", "key", "archives", "created_at"] switch (type) { case "create": if (patch.owner !== "" && writer !== patch.owner) { return "permission denied" // writer must match new bucket owner } break case "save": if (instance.owner === "") { return true } if (writer !== instance.owner) { for (i = 0; i < restricted.length; i++) { if (patch[restricted[i]]) { return "permission denied" } } } if (!patch.metadata) { if (patch.path && writer !== instance.owner) { return "permission denied" } else { patch.metadata = {} } } var keys = Object.keys(patch.metadata) for (i = 0; i < keys.length; i++) { var p = patch.metadata[keys[i]] var x = instance.metadata[keys[i]] if (x) { if (!x.roles[writer]) { x.roles[writer] = 0 } if (!x.roles["*"]) { x.roles["*"] = 0 } // merge all parents, taking most privileged role if (keys[i].length > 0) { var parts = keys[i].split("/") parts.unshift("") var path = "" for (j = 0; j < parts.length; j++) { if (path.length > 0) { path += "/" } path += parts[j] var y = instance.metadata[path] if (!y) { continue } if (!y.roles[writer]) { y.roles[writer] = 0 } if (!y.roles["*"]) { y.roles["*"] = 0 } if (y.roles[writer] > x.roles[writer]) { x.roles[writer] = y.roles[writer] } if (y.roles["*"] > x.roles["*"]) { x.roles["*"] = y.roles["*"] } } } // check access against merged roles if (!p) { if (x.roles[writer] < 3) { return "permission denied" // no admin access to delete items } } else { if (p.roles && x.roles[writer] < 3) { return "permission denied" // no admin access to edit roles } } if (x.roles[writer] < 2 && x.roles["*"] < 2) { return "permission denied" // no write access } } else { if (writer !== instance.owner) { return "permission denied" // no owner access to create items } } } break case "delete": if (instance.owner !== "" && writer !== instance.owner) { return "permission denied" // no owner access to delete instance } break } return true `, ReadFilter: ` if (!instance.version) { return instance } if (instance.owner === "") { return instance } var filtered = {} var keys = Object.keys(instance.metadata) outer: for (i = 0; i < keys.length; i++) { var m = instance.metadata[keys[i]] var parts = keys[i].split("/") if (keys[i].length > 0) { parts.unshift("") } var path = "" for (j = 0; j < parts.length; j++) { if (path.length > 0) { path += "/" } path += parts[j] var x = instance.metadata[path] if (x && (x.roles[reader] > 0 || x.roles["*"] > 0)) { filtered[keys[i]] = m continue outer } } } instance.metadata = filtered if (Object.keys(instance.metadata).length === 0) { delete instance.key } return instance `, } } // Buckets is a wrapper around a threaddb collection that performs object storage on IPFS and Filecoin. type Buckets struct { Collection baCol *mdb.BucketArchives pgClient *powc.Client ctx context.Context cancel context.CancelFunc wg sync.WaitGroup } // NewBuckets returns a new buckets collection mananger. func NewBuckets(tc *dbc.Client, pgc *powc.Client, col *mdb.BucketArchives) (*Buckets, error) { ctx, cancel := context.WithCancel(context.Background()) return &Buckets{ Collection: Collection{ c: tc, config: bucketsConfig, }, baCol: col, pgClient: pgc, ctx: ctx, cancel: cancel, }, nil } // Create a bucket instance. func (b *Buckets) New( ctx context.Context, dbID thread.ID, key string, pth path.Path, now time.Time, owner thread.PubKey, metadata map[string]Metadata, opts ...BucketOption, ) (*Bucket, error) { args := &BucketOptions{} for _, opt := range opts { opt(args) } var encKey string if args.Key != nil { encKey = base64.StdEncoding.EncodeToString(args.Key) } if args.Token.Defined() { tokenOwner, err := args.Token.PubKey() if err != nil { return nil, err } if tokenOwner != nil && owner.String() != tokenOwner.String() { return nil, fmt.Errorf("creating bucket: token owner mismatch") } } if metadata == nil { metadata = make(map[string]Metadata) } bucket := &Bucket{ Key: key, Name: args.Name, Version: Version, LinkKey: encKey, Path: pth.String(), Metadata: metadata, Archives: Archives{Current: Archive{Deals: []Deal{}}, History: []Archive{}}, CreatedAt: now.UnixNano(), UpdatedAt: now.UnixNano(), } if owner != nil { bucket.Owner = owner.String() } if _, err := b.Create(ctx, dbID, bucket, WithToken(args.Token)); err != nil { return nil, fmt.Errorf("creating bucket in thread: %s", err) } if _, err := b.baCol.Create(ctx, key); err != nil { return nil, fmt.Errorf("creating BucketArchive data: %s", err) } if err := b.Get(ctx, dbID, key, &bucket, WithToken(args.Token)); err != nil { return nil, fmt.Errorf("getting bucket in thread: %s", err) } return bucket, nil } // GetSafe gets a bucket instance and inflates any values that are nil due to schema updates. func (b *Buckets) GetSafe(ctx context.Context, dbID thread.ID, key string, buck *Bucket, opts ...Option) error { if err := b.Get(ctx, dbID, key, buck, opts...); err != nil { return err } buck.ensureNoNulls() return nil } // IsArchivingEnabled returns whether or not Powergate archiving is enabled. func (b *Buckets) IsArchivingEnabled() bool { return b.pgClient != nil } // ArchiveStatus returns the last known archive status on Powergate. If the return status is Failed, // an extra string with the error message is provided. func (b *Buckets) ArchiveStatus(ctx context.Context, key string) (userPb.JobStatus, string, error) { ba, err := b.baCol.GetOrCreate(ctx, key) if err != nil { return userPb.JobStatus_JOB_STATUS_UNSPECIFIED, "", fmt.Errorf("getting BucketArchive data: %s", err) } if ba.Archives.Current.JobID == "" { return userPb.JobStatus_JOB_STATUS_UNSPECIFIED, "", buckets.ErrNoCurrentArchive } current := ba.Archives.Current if current.Aborted { return userPb.JobStatus_JOB_STATUS_UNSPECIFIED, "", fmt.Errorf("job status tracking was aborted: %s", current.AbortedMsg) } if statusName, found := userPb.JobStatus_name[int32(current.Status)]; !found { return userPb.JobStatus_JOB_STATUS_UNSPECIFIED, "", fmt.Errorf("unknown powergate job status: %s", statusName) } return userPb.JobStatus(current.Status), current.FailureMsg, nil } // ArchiveWatch allows to have the last log execution for the last archive, plus realtime // human-friendly log output of how the current archive is executing. // If the last archive is already done, it will simply return the log history and close the channel. func (b *Buckets) ArchiveWatch(ctx context.Context, key string, powToken string, ch chan<- string) error { ba, err := b.baCol.GetOrCreate(ctx, key) if err != nil { return fmt.Errorf("getting BucketArchive data: %s", err) } if ba.Archives.Current.JobID == "" { return buckets.ErrNoCurrentArchive } current := ba.Archives.Current if current.Aborted { return fmt.Errorf("job status tracking was aborted: %s", current.AbortedMsg) } c, err := cid.Cast(current.Cid) if err != nil { return fmt.Errorf("parsing current archive cid: %s", err) } ctx = context.WithValue(ctx, powc.AuthKey, powToken) ctx, cancel := context.WithCancel(ctx) defer cancel() logsCh := make(chan powc.WatchLogsEvent) if err := b.pgClient.Data.WatchLogs( ctx, logsCh, c.String(), powc.WithJobIDFilter(current.JobID), powc.WithHistory(true), ); err != nil { return fmt.Errorf("watching log events in Powergate: %s", err) } for le := range logsCh { if le.Err != nil { return le.Err } timestamp := time.Unix(le.Res.LogEntry.Time, 0) ch <- fmt.Sprintf("%s: %s", timestamp.Format("2006-01-02 15:04:05"), le.Res.LogEntry.Message) } return nil } func (b *Buckets) Close() error { b.cancel() b.wg.Wait() return nil } ================================================ FILE: threaddb/mail.go ================================================ package threaddb import ( "context" "errors" "strings" "github.com/alecthomas/jsonschema" dbc "github.com/textileio/go-threads/api/client" "github.com/textileio/go-threads/core/thread" db "github.com/textileio/go-threads/db" "github.com/textileio/textile/v2/api/common" "github.com/textileio/textile/v2/mail" mdb "github.com/textileio/textile/v2/mongodb" ) var ( inboxSchema *jsonschema.Schema inboxIndexes = []db.Index{{ Path: "from", }, { Path: "to", }, { Path: "created_at", }, { Path: "read_at", }} inboxConfig db.CollectionConfig sentboxSchema *jsonschema.Schema sentboxIndexes = []db.Index{{ Path: "from", }, { Path: "to", }, { Path: "created_at", }} sentboxConfig db.CollectionConfig // ErrMailboxExists indicates that a mailbox with the same name and owner already exists. ErrMailboxExists = errors.New("mailbox already exists") ) // InboxMessage represents the inbox threaddb collection schema. type InboxMessage struct { ID string `json:"_id"` From string `json:"from"` To string `json:"to"` Body string `json:"body"` Signature string `json:"signature"` CreatedAt int64 `json:"created_at"` ReadAt int64 `json:"read_at"` } // SentboxMessage represents the sentbox threaddb collection schema. type SentboxMessage struct { ID string `json:"_id"` From string `json:"from"` To string `json:"to"` Body string `json:"body"` Signature string `json:"signature"` CreatedAt int64 `json:"created_at"` } func init() { reflector := jsonschema.Reflector{ExpandedStruct: true} inboxSchema = reflector.Reflect(&InboxMessage{}) inboxConfig = db.CollectionConfig{ Name: mail.InboxCollectionName, Schema: inboxSchema, Indexes: inboxIndexes, } sentboxSchema = reflector.Reflect(&SentboxMessage{}) sentboxConfig = db.CollectionConfig{ Name: mail.SentboxCollectionName, Schema: sentboxSchema, Indexes: sentboxIndexes, } } // Mail is a wrapper around a threaddb collection for sending mail between users. type Mail struct { c *dbc.Client Inbox Collection Sentbox Collection } // NewMail returns a new mail collection mananger. func NewMail(tc *dbc.Client) (*Mail, error) { return &Mail{ c: tc, Inbox: Collection{ c: tc, config: inboxConfig, }, Sentbox: Collection{ c: tc, config: sentboxConfig, }, }, nil } // NewMailbox creates a new threaddb mail box. func (m *Mail) NewMailbox(ctx context.Context, opts ...Option) (thread.ID, error) { args := &Options{} for _, opt := range opts { opt(args) } id := thread.NewIDV1(thread.Raw, 32) ctx = common.NewThreadNameContext(ctx, mail.ThreadName) err := m.c.NewDB( ctx, id, db.WithNewManagedName(mail.ThreadName), db.WithNewManagedCollections(inboxConfig, sentboxConfig), db.WithNewManagedToken(args.Token)) if err != nil && strings.Contains(err.Error(), mdb.DuplicateErrMsg) { return id, ErrMailboxExists } return id, err } ================================================ FILE: threaddb/threaddb.go ================================================ package threaddb import ( "context" "strings" dbc "github.com/textileio/go-threads/api/client" coredb "github.com/textileio/go-threads/core/db" "github.com/textileio/go-threads/core/thread" "github.com/textileio/go-threads/db" ) // Collection wraps a ThreadDB collection with some convenience methods. type Collection struct { c *dbc.Client config db.CollectionConfig } // Options defines options for interacting with a collection. type Options struct { Token thread.Token } // Option holds a collection option. type Option func(*Options) // WithToken sets the token. func WithToken(t thread.Token) Option { return func(args *Options) { args.Token = t } } // Create a collection instance. func (c *Collection) Create(ctx context.Context, dbID thread.ID, instance interface{}, opts ...Option) ( coredb.InstanceID, error) { args := &Options{} for _, opt := range opts { opt(args) } ids, err := c.c.Create(ctx, dbID, c.config.Name, dbc.Instances{instance}, db.WithTxnToken(args.Token)) if isColNotFoundErr(err) { if err := c.addCollection(ctx, dbID, args.Token); err != nil { return coredb.EmptyInstanceID, err } return c.Create(ctx, dbID, instance, opts...) } if isInvalidSchemaErr(err) { if err := c.updateCollection(ctx, dbID, args.Token); err != nil { return coredb.EmptyInstanceID, err } return c.Create(ctx, dbID, instance, opts...) } if err != nil { return coredb.EmptyInstanceID, err } return coredb.InstanceID(ids[0]), nil } // Get a collection instance. func (c *Collection) Get(ctx context.Context, dbID thread.ID, key string, instance interface{}, opts ...Option) error { args := &Options{} for _, opt := range opts { opt(args) } err := c.c.FindByID(ctx, dbID, c.config.Name, key, instance, db.WithTxnToken(args.Token)) if isColNotFoundErr(err) { if err := c.addCollection(ctx, dbID, args.Token); err != nil { return err } return c.Get(ctx, dbID, key, instance, opts...) } return err } // List collection instances. func (c *Collection) List(ctx context.Context, dbID thread.ID, query *db.Query, instance interface{}, opts ...Option) ( interface{}, error) { args := &Options{} for _, opt := range opts { opt(args) } res, err := c.c.Find(ctx, dbID, c.config.Name, query, instance, db.WithTxnToken(args.Token)) if isColNotFoundErr(err) { if err := c.addCollection(ctx, dbID, args.Token); err != nil { return nil, err } return c.List(ctx, dbID, query, instance, opts...) } if err != nil { return nil, err } return res, nil } // Save a collection instance. func (c *Collection) Save(ctx context.Context, dbID thread.ID, instance interface{}, opts ...Option) error { args := &Options{} for _, opt := range opts { opt(args) } err := c.c.Save(ctx, dbID, c.config.Name, dbc.Instances{instance}, db.WithTxnToken(args.Token)) if isInvalidSchemaErr(err) { if err := c.updateCollection(ctx, dbID, args.Token); err != nil { return err } return c.Save(ctx, dbID, instance, opts...) } return err } // Verify verifies instance changes. func (c *Collection) Verify(ctx context.Context, dbID thread.ID, instance interface{}, opts ...Option) error { args := &Options{} for _, opt := range opts { opt(args) } err := c.c.Verify(ctx, dbID, c.config.Name, dbc.Instances{instance}, db.WithTxnToken(args.Token)) if isInvalidSchemaErr(err) { if err := c.updateCollection(ctx, dbID, args.Token); err != nil { return err } return c.Verify(ctx, dbID, instance, opts...) } return err } // Delete a collection instance. func (c *Collection) Delete(ctx context.Context, dbID thread.ID, id string, opts ...Option) error { args := &Options{} for _, opt := range opts { opt(args) } return c.c.Delete(ctx, dbID, c.config.Name, []string{id}, db.WithTxnToken(args.Token)) } // WriteTxn wraps a write transaction in a collection. type WriteTxn struct { c *Collection t *dbc.WriteTransaction end dbc.EndTransactionFunc id thread.ID token thread.Token } // WriteTxn returns a write transaction in the collection. // Call WriteTxn.End to commit the transaction. Using a defer statement and a named err param is the usual pattern: // // func MyFunc() (err error) { // defer func() { // if e := txn.End(err); err == nil { // err = e // } // }() // ... // if err = txn.Save(...); err != nil { // return nil, err // } // ... // if err = txn.Save(...); err != nil { // return nil, err // } // ... // } // // See WriteTxn.End for more. func (c *Collection) WriteTxn(ctx context.Context, dbID thread.ID, opts ...Option) (*WriteTxn, error) { args := &Options{} for _, opt := range opts { opt(args) } txn, err := c.c.WriteTransaction(ctx, dbID, c.config.Name, db.WithTxnToken(args.Token)) if err != nil { return nil, err } end, err := txn.Start() if err != nil { return nil, err } return &WriteTxn{ c: c, t: txn, end: end, id: dbID, token: args.Token, }, nil } // Verify a collection instance in the transaction. func (t *WriteTxn) Verify(ctx context.Context, instance interface{}) error { err := t.t.Verify(instance) if isInvalidSchemaErr(err) { if err := t.c.updateCollection(ctx, t.id, t.token); err != nil { return err } return t.t.Verify(instance) } return err } // Save a collection instance in the transaction. func (t *WriteTxn) Save(ctx context.Context, instance interface{}) error { err := t.t.Save(instance) if isInvalidSchemaErr(err) { if err := t.c.updateCollection(ctx, t.id, t.token); err != nil { return err } return t.t.Save(instance) } return err } // Delete a collection instance in the transaction. func (t *WriteTxn) Delete(_ context.Context, id string) error { return t.t.Delete(id) } // Discard the transaction. func (t *WriteTxn) Discard() { // Ignore the error, which can only arise from a network issue. // A subsequent End will also fail. _ = t.t.Discard() } // End ends the underlying transaction. // A non-nil err results in the transaction being discarded before it's ended. func (t *WriteTxn) End(err error) error { if err != nil { t.Discard() } return t.end() } func (c *Collection) addCollection(ctx context.Context, dbID thread.ID, token thread.Token) error { return c.c.NewCollection(ctx, dbID, c.config, db.WithManagedToken(token)) } func (c *Collection) updateCollection(ctx context.Context, dbID thread.ID, token thread.Token) error { return c.c.UpdateCollection(ctx, dbID, c.config, db.WithManagedToken(token)) } func isColNotFoundErr(err error) bool { if err == nil { return false } return strings.Contains(err.Error(), "collection not found") } func isInvalidSchemaErr(err error) bool { if err == nil { return false } return strings.Contains(err.Error(), "instance doesn't correspond to schema: (root)") } ================================================ FILE: util/ctxutil.go ================================================ package util import ( "context" "time" ) // NewClonedContext returns a context with the same Values // but not inherited cancelation. func NewClonedContext(ctx context.Context) context.Context { return valueOnlyContext{Context: ctx} } type valueOnlyContext struct{ context.Context } func (valueOnlyContext) Deadline() (deadline time.Time, ok bool) { return } func (valueOnlyContext) Done() <-chan struct{} { return nil } func (valueOnlyContext) Err() error { return nil } ================================================ FILE: util/flakyt.go ================================================ package util import ( "runtime" "sync" "testing" "github.com/stretchr/testify/require" ) // TestingTWithCleanup is an augmented require.TestingT with a Cleanup function. type TestingTWithCleanup interface { require.TestingT TempDir() string Cleanup(func()) } // FlakyT provides retry mechanisms to test. type FlakyT struct { t *testing.T failed bool cls []func() } // NewFlakyT creates a new FlakyT. func NewFlakyT(t *testing.T) *FlakyT { return &FlakyT{ t: t, } } var _ require.TestingT = (*FlakyT)(nil) // Errorf registers an error message. func (ft *FlakyT) Errorf(format string, args ...interface{}) { ft.t.Logf(format, args...) } // FailNow indicates to fail the test. func (ft *FlakyT) FailNow() { ft.failed = true runtime.Goexit() } // TempDir returns a temporary directory for the test to use. // The directory is automatically removed by Cleanup when the test and // all its subtests complete. func (ft *FlakyT) TempDir() string { return ft.t.TempDir() } // Cleanup registers a cleanup function. func (ft *FlakyT) Cleanup(cls func()) { ft.cls = append([]func(){cls}, ft.cls...) } var numRetries = 10 // RunFlaky runs a flaky test with retries. func RunFlaky(t *testing.T, f func(ft *FlakyT)) { for i := 0; i < numRetries; i++ { var wg sync.WaitGroup wg.Add(1) ft := NewFlakyT(t) go func() { defer wg.Done() f(ft) }() wg.Wait() for _, f := range ft.cls { f() } if !ft.failed { return } ft.t.Logf("test %s attempt %d/%d failed, retrying...", t.Name(), i+1, numRetries) } t.Fatalf("test failed after %d retries", numRetries) } ================================================ FILE: util/util.go ================================================ package util import ( "crypto/rand" "fmt" "strings" "github.com/gosimple/slug" "github.com/ipfs/go-cid" "github.com/ipfs/interface-go-ipfs-core/path" ma "github.com/multiformats/go-multiaddr" mbase "github.com/multiformats/go-multibase" ) func init() { slug.MaxLength = 32 slug.Lowercase = false } func ToValidName(str string) (name string, ok bool) { name = slug.Make(str) if len(name) == 0 { ok = false return } return name, true } func GenerateRandomBytes(n int) []byte { b := make([]byte, n) _, err := rand.Read(b) if err != nil { panic(err) } return b } func MakeToken(n int) string { bytes := GenerateRandomBytes(n) encoded, err := mbase.Encode(mbase.Base32, bytes) if err != nil { panic(err) } return encoded } func MustParseAddr(str string) ma.Multiaddr { addr, err := ma.NewMultiaddr(str) if err != nil { panic(err) } return addr } func NewResolvedPath(s string) (path.Resolved, error) { parts := strings.SplitN(s, "/", 3) if len(parts) != 3 { return nil, fmt.Errorf("path is not resolvable") } c, err := cid.Decode(parts[2]) if err != nil { return nil, err } return path.IpfsPath(c), nil } func ParsePath(p path.Path) (resolved path.Resolved, fpath string, err error) { parts := strings.SplitN(p.String(), "/", 4) if len(parts) < 3 { err = fmt.Errorf("path does not contain a resolvable segment") return } c, err := cid.Decode(parts[2]) if err != nil { return } if len(parts) > 3 { fpath = parts[3] } return path.IpfsPath(c), fpath, nil } func ByteCountDecimal(b int64) string { const unit = 1000 if b < unit { return fmt.Sprintf("%d B", b) } div, exp := int64(unit), 0 for n := b / unit; n >= unit; n /= unit { div *= unit exp++ } return fmt.Sprintf("%.1f %cB", float64(b)/float64(div), "kMGTPE"[exp]) }