diff --git a/.dockerignore b/.dockerignore index 00b5d1a..e997c01 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,4 @@ # More info: https://docs.docker.com/engine/reference/builder/#dockerignore-file # Ignore build and test binaries. bin/ - -bundle.Dockerfile \ No newline at end of file +bundle.Dockerfile* \ No newline at end of file diff --git a/.gitignore b/.gitignore index 2a9ff10..2dfa946 100644 --- a/.gitignore +++ b/.gitignore @@ -26,4 +26,13 @@ Dockerfile.cross *~ bundle.Dockerfile -bundle \ No newline at end of file +bundle + +**/__debug_* + +bundle* + +kind-kubeconfig* + +catalog.Dockerfile +catalog diff --git a/Dockerfile b/Dockerfile index 6620662..37d822b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ RUN go mod download # Copy the go source COPY cmd/main.go cmd/main.go COPY api/ api/ -COPY internal/controller/ internal/controller/ +COPY internal/ internal/ # Build # the GOARCH has not a default value to allow the binary be built according to the host where the command diff --git a/Makefile b/Makefile index 9b16876..438d68a 100644 --- a/Makefile +++ b/Makefile @@ -249,12 +249,28 @@ bundle: manifests kustomize operator-sdk ## Generate bundle manifests and metada .PHONY: bundle-build bundle-build: ## Build the bundle image. - docker build -f bundle.Dockerfile -t $(BUNDLE_IMG) . + docker build -f bundle.Dockerfile -t $(BUNDLE_IMG) --no-cache . .PHONY: bundle-push bundle-push: ## Push the bundle image. $(MAKE) docker-push IMG=$(BUNDLE_IMG) + +.PHONY: bundle-buildx +bundle-buildx: ## Build the bundle image. + - $(CONTAINER_TOOL) buildx create --name project-v3-builder + $(CONTAINER_TOOL) buildx use project-v3-builder + $(CONTAINER_TOOL) buildx build --push --platform=$(PLATFORMS) --tag $(BUNDLE_IMG) -f bundle.Dockerfile.cross . + $(CONTAINER_TOOL) buildx rm project-v3-builder + +.PHONY: bundle-run +bundle-run: ## Run the bundle image. + $(OPERATOR_SDK) run bundle $(BUNDLE_IMG) + +.PHONY: bundle-cleanup +bundle-cleanup: ## Clean up the bundle image. + $(OPERATOR_SDK) cleanup $(PROJECT_NAME) + .PHONY: opm OPM = ./bin/opm opm: ## Download opm locally if necessary. @@ -264,7 +280,7 @@ ifeq (,$(shell which opm 2>/dev/null)) set -e ;\ mkdir -p $(dir $(OPM)) ;\ OS=$(shell go env GOOS) && ARCH=$(shell go env GOARCH) && \ - curl -sSLo $(OPM) https://github.com/operator-framework/operator-registry/releases/download/v1.23.0/$${OS}-$${ARCH}-opm ;\ + curl -sSLo $(OPM) https://github.com/operator-framework/operator-registry/releases/download/v1.39.0/$${OS}-$${ARCH}-opm ;\ chmod +x $(OPM) ;\ } else @@ -276,9 +292,6 @@ endif # These images MUST exist in a registry and be pull-able. BUNDLE_IMGS ?= $(BUNDLE_IMG) -# The image tag given to the resulting catalog image (e.g. make catalog-build CATALOG_IMG=example.com/operator-catalog:v0.2.0). -CATALOG_IMG ?= $(IMAGE_TAG_BASE)-catalog:v$(VERSION) - # Set CATALOG_BASE_IMG to an existing catalog image tag to add $BUNDLE_IMGS to that image. ifneq ($(origin CATALOG_BASE_IMG), undefined) FROM_INDEX_OPT := --from-index $(CATALOG_BASE_IMG) @@ -287,11 +300,36 @@ endif # Build a catalog image by adding bundle images to an empty catalog using the operator package manager tool, 'opm'. # This recipe invokes 'opm' in 'semver' bundle add mode. For more information on add modes, see: # https://github.com/operator-framework/community-operators/blob/7f1438c/docs/packaging-operator.md#updating-your-existing-operator +CATALOG_IMG ?= $(IMAGE_TAG_BASE)-catalog:latest + .PHONY: catalog-build -catalog-build: opm ## Build a catalog image. - $(OPM) index add --container-tool docker --mode semver --tag $(CATALOG_IMG) --bundles $(BUNDLE_IMGS) $(FROM_INDEX_OPT) +catalog-build: opm ## Build a catalog manifests. + mkdir -p catalog + @if ! test -f ./catalog.Dockerfile; then \ + $(OPM) generate dockerfile catalog; \ + fi + $(OPM) alpha render-template basic -o yaml catalog-template.yaml > catalog/catalog.yaml + +.PHONY: catalog-validate +catalog-validate: opm ## Validate a catalog manifests. + $(OPM) validate catalog + +#.PHONY: catalog-render +#catalog-render: opm ## render a bundle to catalog. +# $(OPM) render $(BUNDLE_IMGS) --output=yaml >> catalog/catalog.yaml + +.PHONY: catalog-docker-build +catalog-docker-build: ## Build a catalog image. + $(CONTAINER_TOOL) build -t ${CATALOG_IMG} -f catalog.Dockerfile . # Push the catalog image. -.PHONY: catalog-push -catalog-push: ## Push a catalog image. +.PHONY: catalog-docker-push +catalog-docker-push: ## Push a catalog image. $(MAKE) docker-push IMG=$(CATALOG_IMG) + +.PHONY: catalog-docker-buildx +catalog-docker-buildx: ## Build and push a catalog image for cross-platform support + - $(CONTAINER_TOOL) buildx create --name project-v3-builder + $(CONTAINER_TOOL) buildx use project-v3-builder + $(CONTAINER_TOOL) buildx build --push --platform=$(PLATFORMS) -f catalog.Dockerfile --tag ${CATALOG_IMG} . + $(CONTAINER_TOOL) buildx rm project-v3-builder \ No newline at end of file diff --git a/catalog-template.yaml b/catalog-template.yaml new file mode 100644 index 0000000..89d2595 --- /dev/null +++ b/catalog-template.yaml @@ -0,0 +1,111 @@ +--- +defaultChannel: stable +description: |+ + # hdfs-operator + // TODO(user): Add simple overview of use/purpose + + ## Description + // TODO(user): An in-depth paragraph about your project and overview of use + + ## Getting Started + You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster. + **Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster `kubectl cluster-info` shows). + + ### Running on the cluster + 1. Install Instances of Custom Resources: + + ```sh + kubectl apply -f config/samples/ + ``` + + 2. Build and push your image to the location specified by `IMG`: + + ```sh + make docker-build docker-push IMG=/hdfs-operator:tag + ``` + + 3. Deploy the controller to the cluster with the image specified by `IMG`: + + ```sh + make deploy IMG=/hdfs-operator:tag + ``` + + ### Uninstall CRDs + To delete the CRDs from the cluster: + + ```sh + make uninstall + ``` + + ### Undeploy controller + UnDeploy the controller from the cluster: + + ```sh + make undeploy + ``` + + ## Contributing + // TODO(user): Add detailed information on how you would like others to contribute to this project + + ### How it works + This project aims to follow the Kubernetes [Operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/). + + It uses [Controllers](https://kubernetes.io/docs/concepts/architecture/controller/), + which provide a reconcile function responsible for synchronizing resources until the desired state is reached on the cluster. + + ### Test It Out + 1. Install the CRDs into the cluster: + + ```sh + make install + ``` + + 2. Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running): + + ```sh + make run + ``` + + **NOTE:** You can also run this in one step by running: `make install run` + + ### Modifying the API definitions + If you are editing the API definitions, generate the manifests such as CRs or CRDs using: + + ```sh + make manifests + ``` + + **NOTE:** Run `make --help` for more information on all potential `make` targets + + More information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html) + + ## License + + Copyright 2024. + + 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. + +icon: + base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB2ZXJzaW9uPSIxLjEiCiAgIHdpZHRoPSI2NjMuODk3MjgiCiAgIGhlaWdodD0iMTcyLjQ4MDYyIgogICBpZD0ic3ZnMiIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHRpdGxlCiAgICAgaWQ9InRpdGxlMzExNyI+SGFkb29wIGxvZ288L3RpdGxlPjxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTgiPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+PGRjOnRpdGxlPkhhZG9vcCBsb2dvPC9kYzp0aXRsZT48Y2M6bGljZW5zZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wLmh0bWwiIC8+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxkZWZzCiAgICAgaWQ9ImRlZnM2Ij48Y2xpcFBhdGgKICAgICAgIGlkPSJjbGlwUGF0aDE2Ij48cGF0aAogICAgICAgICBkPSJtIC05LC05IDYxNCwwIDAsMjMxIC02MTQsMCAwLC0yMzEgeiIKICAgICAgICAgaWQ9InBhdGgxOCIgLz48L2NsaXBQYXRoPjxjbGlwUGF0aAogICAgICAgaWQ9ImNsaXBQYXRoMTE2Ij48cGF0aAogICAgICAgICBkPSJtIDkxLjczNjgsMTQ2LjMyNTMgLTkuNzAzOSwtMS41NzcgLTguODU0OCwtMy44ODE0IC03LjUyMDYsLTQuNzMwOCAtNy4xNTY2LC04LjczMzUgLTQuMDQzMSwtNC4yODIgLTMuOTA5MywtMS40NDA5IC0xLjAzNCwyLjUyNzEgMS44MDc5LDIuNjA5NiAwLjQwNjIsMy42ODAyIDEuMjExLC0wLjA0ODggMS4zMjMyLC0xLjIwNjkgLTAuMzU2OSwzLjc0ODggLTEuNDY2NywwLjk4MzkgMC4wNDQ1LDEuNDI4NiAtMy40NzQ0LC0xLjk2NTUgLTMuMTQ2MiwtMy43MTIgLTAuNjU1OSwtMy4zMTc2IDEuMzQ1MywtMi42NTY3IDEuMjU0OSwtNC41MTMzIDIuNTUyMSwtMS4yMDg0IDIuNjg0NywwLjEzMTggMi41NDU1LDEuNDc5MSAtMS42OTgsLTguNjEyMiAxLjY5OCwtOS41ODI1IC0xLjg2OTIsLTQuNDI0NiAtNi4xMjIzLC02LjU5NjUgMS4wODg1LC0zLjk0MSAyLjkwMDIsLTQuNTY2OSA1LjQ2ODgsLTMuODQ4NiAyLjkwMDcsLTAuMzk2OSAzLjIyNSwtMC4xMDk0IC0yLjAxMiwtOC4yNjAxIDcuMzk5MywtMy4wMzI2IDkuMjE4OCwtMS4yMTI5IDMuMTUzNSwyLjA2MTkgMC4yNDI3LDUuNTc5NyAzLjUxNzgsNS44MjI0IDAuMjQyNiw0LjYwOTQgOC40OTA5LC0wLjYwNjYgNy44ODQzLDAuNzI3OSAtNy44ODQzLC00LjczMDcgMS4zMzQzLC01LjcwMSA0Ljk3MzEsLTcuNzYzIDQuODUyMSwtMi4wNjIyIDMuODgxNCwxLjU3NjkgMS41NzcsMy4xNTM4IDguMTI2OSw2LjE4NjEgMS41NzY5LC0xLjMzNDMgMTIuNzM2MywtMC40ODUgMi41NDczLDIuMDYxOSAwLjI0MjYsMy42MzkxIC0wLjg0OSwxLjU3NjcgLTAuNjA2Niw5LjgyNTEgLTQuMjQ1NCw4LjQ5MDkgMC43Mjc2LDMuNzYwNSAyLjU0NzUsLTEuMzM0MyA3LjE1NjYsLTYuNjcxNiAzLjUxNzUsLTAuMjQyNCAzLjg4MTUsMS41NzY5IDMuODgxOCwyLjkxMDkgMS45NDA2LDYuMzA3NyAxMS40MDIxLC0wLjcyNzcgNi45MTQsMi42Njg2IDUuNTc5Nyw1LjIxNTcgNC4wMDI4LDcuNTIwNiAwLjk3MDYsOC44NTQ2IC0wLjg0OTMsMTAuMzEwNSAtMi4xODMyLDkuMjE4NSAtMi4xODM2LDIuOTExMiAtMy4wMzIyLDAuOTcwNiAtNS4zMzczLC01LjgyMjQgLTQuODUxOCwtMS42OTgyIC00LjI0NTUsNy4wMzUzIC00LjI0NTQsMy44ODE1IC0yLjMwNDksMS40NTU2IC05LjIxODUsNy42NDE5IC03LjM5OTMsNC4wMDI4IC03LjM5OTMsMC42MDY2IC04LjYxMTksLTEuNDU1NiAtNy41MjA2LC0yLjc4OTkgLTUuMjE1OCwtNC4yNDU0IC00LjEyNDEsLTQuOTczNCAtNC4yNDU0LC0xLjIxMjkiCiAgICAgICAgIGlkPSJwYXRoMTE4IiAvPjwvY2xpcFBhdGg+PGNsaXBQYXRoCiAgICAgICBpZD0iY2xpcFBhdGgxMjgiPjxwYXRoCiAgICAgICAgIGQ9Im0gOTEuNzM2OCwxNDYuMzI1MyAtOS43MDM5LC0xLjU3NyAtOC44NTQ4LC0zLjg4MTQgLTcuNTIwNiwtNC43MzA4IC03LjE1NjYsLTguNzMzNSAtNC4wNDMxLC00LjI4MiAtMy45MDkzLC0xLjQ0MDkgLTEuMDM0LDIuNTI3MSAxLjgwNzksMi42MDk2IDAuNDA2MiwzLjY4MDIgMS4yMTEsLTAuMDQ4OCAxLjMyMzIsLTEuMjA2OSAtMC4zNTY5LDMuNzQ4OCAtMS40NjY3LDAuOTgzOSAwLjA0NDUsMS40Mjg2IC0zLjQ3NDQsLTEuOTY1NSAtMy4xNDYyLC0zLjcxMiAtMC42NTU5LC0zLjMxNzYgMS4zNDUzLC0yLjY1NjcgMS4yNTQ5LC00LjUxMzMgMi41NTIxLC0xLjIwODQgMi42ODQ3LDAuMTMxOCAyLjU0NTUsMS40NzkxIC0xLjY5OCwtOC42MTIyIDEuNjk4LC05LjU4MjUgLTEuODY5MiwtNC40MjQ2IC02LjEyMjMsLTYuNTk2NSAxLjA4ODUsLTMuOTQxIDIuOTAwMiwtNC41NjY5IDUuNDY4OCwtMy44NDg2IDIuOTAwNywtMC4zOTY5IDMuMjI1LC0wLjEwOTQgLTIuMDEyLC04LjI2MDEgNy4zOTkzLC0zLjAzMjYgOS4yMTg4LC0xLjIxMjkgMy4xNTM1LDIuMDYxOSAwLjI0MjcsNS41Nzk3IDMuNTE3OCw1LjgyMjQgMC4yNDI2LDQuNjA5NCA4LjQ5MDksLTAuNjA2NiA3Ljg4NDMsMC43Mjc5IC03Ljg4NDMsLTQuNzMwNyAxLjMzNDMsLTUuNzAxIDQuOTczMSwtNy43NjMgNC44NTIxLC0yLjA2MjIgMy44ODE0LDEuNTc2OSAxLjU3NywzLjE1MzggOC4xMjY5LDYuMTg2MSAxLjU3NjksLTEuMzM0MyAxMi43MzYzLC0wLjQ4NSAyLjU0NzMsMi4wNjE5IDAuMjQyNiwzLjYzOTEgLTAuODQ5LDEuNTc2NyAtMC42MDY2LDkuODI1MSAtNC4yNDU0LDguNDkwOSAwLjcyNzYsMy43NjA1IDIuNTQ3NSwtMS4zMzQzIDcuMTU2NiwtNi42NzE2IDMuNTE3NSwtMC4yNDI0IDMuODgxNSwxLjU3NjkgMy44ODE4LDIuOTEwOSAxLjk0MDYsNi4zMDc3IDExLjQwMjEsLTAuNzI3NyA2LjkxNCwyLjY2ODYgNS41Nzk3LDUuMjE1NyA0LjAwMjgsNy41MjA2IDAuOTcwNiw4Ljg1NDYgLTAuODQ5MywxMC4zMTA1IC0yLjE4MzIsOS4yMTg1IC0yLjE4MzYsMi45MTEyIC0zLjAzMjIsMC45NzA2IC01LjMzNzMsLTUuODIyNCAtNC44NTE4LC0xLjY5ODIgLTQuMjQ1NSw3LjAzNTMgLTQuMjQ1NCwzLjg4MTUgLTIuMzA0OSwxLjQ1NTYgLTkuMjE4NSw3LjY0MTkgLTcuMzk5Myw0LjAwMjggLTcuMzk5MywwLjYwNjYgLTguNjExOSwtMS40NTU2IC03LjUyMDYsLTIuNzg5OSAtNS4yMTU4LC00LjI0NTQgLTQuMTI0MSwtNC45NzM0IC00LjI0NTQsLTEuMjEyOSIKICAgICAgICAgaWQ9InBhdGgxMzAiIC8+PC9jbGlwUGF0aD48L2RlZnM+PGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLjI1LDAsMCwtMS4yNSwtMzcuNDM5NDE1LDIyMy4wMzk2MikiCiAgICAgaWQ9ImcxMCI+PHBhdGgKICAgICAgIGQ9Im0gNDY2Ljc4NTQsNDguNDQ3MiBjIDEwLjA1OTMsMCAyMC4xMTg2LDAgMzAuMTc4NCwwIDEuMjQ1Niw1LjY2ODUgMi40OTE0LDExLjMzNjMgMy43MzcyLDE3LjAwNDUgOC42MTI4LDAgMTcuNTAzNywtMC4wNTU2IDI2LjExNywtMC4wNTU2IDQuMjA1OCwwIDcuOTI5MSwxLjMwNjIgMTEuMjM2OSwzLjU0MTMgMy45OTIzLDIuNjk3OCA2Ljk3MzIsNi44MzE1IDguMDkyOSwxMS45MzE2IDEuODkzNSw4LjYyNyAzLjc5ODcsMTcuMjUyNSA1LjcwMywyNS44NzcgMS4wODYyLDQuOTI0IDIuNDk5MywxMC40ODQyIC0xLjAzMTUsMTQuOTMxNCAtMy4yNDc0LDQuMDkyMSAtNy41NTc1LDQuNDEwMiAtMTIuMjg5Myw0LjQxMDIgLTM0LjA3MjUsLTAuMDM3NCAtNjguMTQ2Myw4ZS00IC0xMDIuMjE5MSw4ZS00IC0zLjQzOTUsMCAtNi4zMjA3LC0xLjExMjMgLTkuMzI3MSwtMi42NjI1IC0yLjgyMDIsMS45OTQxIC01LjM2NTQsMi42NjI1IC04LjgyMzQsMi42NjI1IC0xNS41ODkxLDAgLTMxLjE3OTEsMCAtNDYuNzY4MiwwIDEuMjc3LDUuNzQ2MiAyLjU1MzcsMTEuNDkyMyAzLjgzMDQsMTcuMjM4MSAtMTAuMDc0NiwwIC0yMC4xNDk4LDAgLTMwLjIyNSwwIC0xLjI0NTUsLTUuNjA1OCAtMi40OTEzLC0xMS4yMTE2IC0zLjczNzIsLTE2LjgxNzQgLTguODYwNSwwIC0xNy43MjEsMCAtMjYuNTgxOCwwIC0zLjY3MTUsMCAtNy4xOTgxLC0xLjE1MiAtMTAuMjc2OCwtMy4xMyAtMi45ODQ5LDEuODU2NyAtNS4yODY2LDIuNjYyOSAtOC44MjI1LDIuNjYyOSAtMjkuMjQ2NSwwIC01OC40OTI0LDAgLTg3LjczODgsMCAxLjMzOTMsNS44MjM0IDIuNjc4NywxMS42NDc1IDQuMDE3NSwxNy40NzE2IC0xMC4wNTkzLDAuMDE1MyAtMjAuMTE4NiwwLjAzMDkgLTMwLjE3ODIsMC4wNDY1IC01Ljc5OTQsLTI1LjkzOSAtMTEuNTk4OCwtNTEuODc4IC0xNy4zOTgyLC03Ny44MTY3IDEwLjA1LC0wLjAwMjkgMjAuMDk5OSwtMC4wMDU3IDMwLjE0OTMsLTAuMDA4NSAzLjAyMzQsMTMuMjc0OSA2LjA0NjMsMjYuNTUwMSA5LjA2OTIsMzkuODI1MyAzLjQwMDQsMCA2LjgwMDgsMCAxMC4yMDIxLDAgMS4yMTQxLDAgMC45NzUyLC0wLjY5MTYgMC43NzE2LC0xLjYwNTUgLTIuODU5MywtMTIuNzM5OCAtNS43MTg5LC0yNS40ODAxIC04LjU3NzksLTM4LjIxOTggNjYuNjI1OCwwIDEzMy4yNTE5LC0zZS00IDE5OS44Nzk0LC0zZS00IDMuMzkxMywwIDYuMDQ1MSwwLjcwMTMgOS4wOTgxLDIuMjU4MSAzLjAwODQsLTIuMDEwMSA1LjY2NywtMi42Nzc5IDkuMzQyNywtMi42NDYyIGwgNDYuMjk0NSwwLjM4ODQgYyAtMS4yNDE4LC01Ljc2MjYgLTIuNDgzNCwtMTEuNTI1MSAtMy43MjUyLC0xNy4yODc3IHogbSAtMTMwLjU0NTcsNTcuMDU3NSBjIC0yLjk2NTMsMCAtNS45MzA5LDAgLTguODk3MSwwIC0xLjU2MDcsMCAtMS45ODE0LC0wLjcxMTggLTIuMjkxOCwtMi4xMTEgLTEuMTE0LC00Ljk5NjEgLTIuMjI3NSwtOS45OTMgLTMuMzQxNSwtMTQuOTg4NSAtMC4zMTc1LC0xLjQzNiAwLjQwOTEsLTEuNjcwNyAxLjY2NTcsLTEuNjcwNyAyLjg4NjUsMCA1Ljc3MywwIDguNjU5MiwwIDEuNDAyMSw2LjI1NjYgMi44MDM4LDEyLjUxMzIgNC4yMDU1LDE4Ljc3MDIgeiBtIDUxLjAzNzIsLTAuMzYyMyBjIDMuMTY3OCwwIDYuMzM1NSwwIDkuNTAzNSwwIDEuODI4OSwwIDEuNzI4OCwtMC45NTkgMS4zOTk3LC0yLjQ0MDQgLTEuMDg4NSwtNC44OTM3IC0yLjE3NywtOS43ODgzIC0zLjI2NTIsLTE0LjY4MjMgLTAuMzc5NiwtMS43MDkgLTEuNDQ0MywtMS42Nzk4IC0yLjkxMjYsLTEuNjc5OCAtMy4yMjM2LDAgLTYuNDQ3MSwwIC05LjY3MSwwIC0xLjQyMDcsMCAtMS40MzMyLDAuODM5OSAtMS4xODA2LDEuOTg4NSAxLjA4NDMsNC44OTI5IDIuMTY5Niw5Ljc4NjMgMy4yNTE5LDE0LjY3OTIgMC40MDA4LDEuODEzMSAxLjExNDYsMi4xMzQ4IDIuODc0MywyLjEzNDggeiBtIDYyLjU1OSwwIGMgMy4xNjc3LDAgNi4zMzU0LDAgOS41MDM0LDAgMS44Mjg5LDAgMS43Mjg5LC0wLjk1OSAxLjM5OTUsLTIuNDQwNCAtMS4wODgyLC00Ljg5MzcgLTIuMTc3LC05Ljc4ODMgLTMuMjY1LC0xNC42ODIzIC0wLjM3OTUsLTEuNzA5IC0xLjQ0NDIsLTEuNjc5OCAtMi45MTI5LC0xLjY3OTggLTMuMjIzMiwwIC02LjQ0NjgsMCAtOS42NzA2LDAgLTEuNDIwOCwwIC0xLjQzMzIsMC44Mzk5IC0xLjE4MDksMS45ODg1IDEuMDg0Miw0Ljg5MjkgMi4xNjk5LDkuNzg2MyAzLjI1MjEsMTQuNjc5MiAwLjQwMDksMS44MTMxIDEuMTE0NiwyLjEzNDggMi44NzQ0LDIuMTM0OCB6IE0gNTA1LjYyNDgsODYuMTk5IGMgMi45NjUzLDAgNS45MzA5LDAgOC44OTcxLDAgMS41NjA4LDAgMS45ODE3LDAuNzExOCAyLjI5MTgsMi4xMTEgMS4xMTQsNC45OTYgMi4yMjc1LDkuOTkzIDMuMzQxNSwxNC45ODg1IDAuMzE3NSwxLjQzNiAtMC40MDksMS42NzA3IC0xLjY2NTYsMS42NzA3IC0yLjg4NjUsMCAtNS43NzI4LDAgLTguNjU5MywwIC0xLjQwMiwtNi4yNTY2IC0yLjgwMzcsLTEyLjUxMzMgLTQuMjA1NSwtMTguNzcwMiIKICAgICAgIGlkPSJwYXRoMjAiCiAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICBkPSJtIDM4MC4zMTg3LDEyMS43MTQ5IDM3LjkwNTUsMCBjIDUuOTE1NiwwIDkuNjgyNiwtNC44NDA1IDguMzcyNCwtMTAuNzU0NyBMIDQxOS44NDMxLDgwLjQ3NDcgQyA0MTguNTMyOSw3NC41NiA0MTIuNjIwNyw2OS43MjAxIDQwNi43MDU5LDY5LjcyMDEgbCAtMzcuOTA1MiwwIGMgLTUuOTE0NywwIC05LjY4MjgsNC44MzkzIC04LjM3MjQsMTAuNzU0NiBsIDYuNzUzMywzMC40ODU1IGMgMS4zMTA3LDUuOTE1NiA3LjIyMTgsMTAuNzU0NyAxMy4xMzcxLDEwLjc1NDcgeiBtIDYuODcwOSwtMTIuMjM5MiAxOC43NDEzLDAgYyAzLjEzMTQsMCA1LjEyNDUsLTIuNTYxNCA0LjQzMTQsLTUuNjkwNSBsIC0zLjU3NDUsLTE2LjEzNiBjIC0wLjY5MzMsLTMuMTI4OSAtMy44MjIyLC01LjY5MDIgLTYuOTUyNSwtNS42OTAyIGwgLTE4Ljc0MTYsMCBjIC0zLjEzMDMsMCAtNS4xMjQ0LDIuNTYwOCAtNC40MzExLDUuNjkwMiBsIDMuNTc0NSwxNi4xMzYgYyAwLjY5MzQsMy4xMzAzIDMuODIxMSw1LjY5MDUgNi45NTI1LDUuNjkwNSIKICAgICAgIGlkPSJwYXRoMjIiCiAgICAgICBzdHlsZT0iZmlsbDojMWYxOTE3O2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICBkPSJtIDQ0Mi44MDMxLDEyMS43MTQ5IDM3LjkwNTgsMCBjIDUuOTE1OSwwIDkuNjgyOCwtNC44NDA1IDguMzcyNiwtMTAuNzU0NyBMIDQ4Mi4zMjgzLDgwLjQ3NDcgQyA0ODEuMDE3OCw3NC41NiA0NzUuMTA1Niw2OS43MjAxIDQ2OS4xOTA2LDY5LjcyMDEgbCAtMzcuOTA1NSwwIGMgLTUuOTE0OCwwIC05LjY4MjksNC44MzkzIC04LjM3MjQsMTAuNzU0NiBsIDYuNzUzMywzMC40ODU1IGMgMS4zMTA3LDUuOTE1NiA3LjIyMTgsMTAuNzU0NyAxMy4xMzcxLDEwLjc1NDcgeiBtIDYuODcwOSwtMTIuMjM5MiAxOC43NDIxLDAgYyAzLjEzMTIsMCA1LjEyNDIsLTIuNTYxNCA0LjQzMDksLTUuNjkwNSBsIC0zLjU3NDUsLTE2LjEzNiBjIC0wLjY5MzQsLTMuMTI4OSAtMy44MjIsLTUuNjkwMiAtNi45NTIzLC01LjY5MDIgbCAtMTguNzQyMSwwIGMgLTMuMTMwMywwIC01LjEyNDUsMi41NjA4IC00LjQzMTEsNS42OTAyIGwgMy41NzQ1LDE2LjEzNiBjIDAuNjkzMywzLjEzMDMgMy44MjExLDUuNjkwNSA2Ljk1MjUsNS42OTA1IgogICAgICAgaWQ9InBhdGgyNCIKICAgICAgIHN0eWxlPSJmaWxsOiMxZjE5MTc7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgIGQ9Im0gNDk0LjU2NjMsMTIxLjcxNDkgNDUuNDk0MSwwIGMgNS45MTU2LDAgOS42ODIzLC00Ljg0MTYgOC4zNzI0LC0xMC43NTQ3IEwgNTQxLjY3OTUsODAuNDc0NyBDIDU0MC4zNjk2LDc0LjU2MiA1MzQuNDU0Niw2OS43MTcgNTI4LjU0MjQsNjkuNzIwMSBsIC00NS40OTQxLDAuMDIxOCAxMS41MTgsNTEuOTczIHogbSAxMS44OTI4LC0xMi4yMzkyIDIxLjMwODMsMCBjIDMuMTMxMSwwIDUuMTIzOSwtMi41NjE5IDQuNDMxMSwtNS42OTA1IGwgLTMuNTc0NSwtMTYuMTM2IGMgLTAuNjkzMSwtMy4xMjc0IC0zLjgyMzEsLTUuNjkwMiAtNi45NTI1LC01LjY5MDIgbCAtMjEuMzI3MywwIgogICAgICAgaWQ9InBhdGgyNiIKICAgICAgIHN0eWxlPSJmaWxsOiMxZjE5MTc7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgIGQ9Im0gMzU0LjkyNzcsNzAuMTI5MSAtNDUuNDkzOCwwIGMgLTUuOTE1NiwwIC05LjY4MjYsNC44NDE5IC04LjM3MjQsMTAuNzU1MiBsIDYuNzUzMiwzMC40ODUgYyAxLjMwOTksNS45MTM2IDcuMjI0NywxMC43NTggMTMuMTM3NSwxMC43NTQ2IGwgNDUuNDk0MSwtMC4wMjEzIC0xMS41MTg2LC01MS45NzM1IHogbSAtMTEuODkyOCwxMi4yMzk1IC0yMS4zMDgzLDAgYyAtMy4xMzA5LDAgLTUuMTIzOSwyLjU2MjUgLTQuNDMwOCw1LjY5IGwgMy41NzQ1LDE2LjEzNjUgYyAwLjY5MywzLjEyNzcgMy44MjI4LDUuNjkwNSA2Ljk1MjIsNS42OTA1IGwgMjEuMzI3NiwwIgogICAgICAgaWQ9InBhdGgzMCIKICAgICAgIHN0eWxlPSJmaWxsOiMxZjE5MTc7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgIGQ9Im0gMTk5LjEzMDcsMTIxLjcxNDkgMzQuNzcyOSwwIGMgNS45MTU0LDAgOS42ODI2LC00LjgzOTYgOC4zNzI3LC0xMC43NTQ3IGwgLTQuOTM3NCwtMjIuMjg2NSAtMTQuNjQ0NiwwIDMuMzQ3NywxNS4xMTE1IGMgMC42OTI4LDMuMTMwMyAtMS4zMDE5LDUuNjkwNSAtNC40MzE0LDUuNjkwNSBsIC0yMS41NDQ0LDAgYyAtMy4xMjg5LDAgLTAuMzI0LC0yLjU2MTkgLTEuMDE2NSwtNS42OTA1IGwgLTMuMzAzNSwtMTQuOTA5NyAtMTQuNjQ0OSwwIDQuODkyOCwyMi4wODQ3IGMgMS4zMTAyLDUuOTE1NiA3LjIyMSwxMC43NTQ3IDEzLjEzNjYsMTAuNzU0NyIKICAgICAgIGlkPSJwYXRoMzQiCiAgICAgICBzdHlsZT0iZmlsbDojMWYxOTE3O2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICBkPSJtIDE3Ni45NzA2LDcwLjEyOTEgOS45OTYxLDQ0Ljk5MjcgMTQuNjA1LDAgLTEwLjAxMiwtNDQuOTkyNyIKICAgICAgIGlkPSJwYXRoMzYiCiAgICAgICBzdHlsZT0iZmlsbDojMWYxOTE3O2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICBkPSJtIDI5NS41NzYyLDcwLjEyOTEgLTQ4LjYyNjQsMCBjIC01LjkxNDgsMCAtOS42ODI5LDQuODQxIC04LjM3MjcsMTAuNzU1MiBsIDEuOTU5Myw4Ljg0NTYgMC4wMDksMCAwLjM3NjcsMS43MDEgYyAxLjMwOTMsNS45MTM3IDcuMjIzOCwxMC43NTcyIDEzLjEzNzIsMTAuNzU0NyBsIDM0LjAyMzksLTAuMDE1MyAwLjUwMiwyLjI1ODYgYyAwLjUzNDEsMi45NDggLTEuMzI0Myw1LjMzNzEgLTQuMjQ2NSw1LjQ1NjcgbCAtMzkuMzg2MywwIDIuNzExMywxMi4yMzM1IDQ4Ljg3ODQsLTAuMDEzOSBjIDUuNzkzMiwtMC4xMTQyIDkuNDU2NCwtNC45MDY4IDguMTYyMSwtMTAuNzUxMiBsIC0wLjkxOTksLTQuMTUyIDAuMDA4LDAgLTEuMTE2NiwtNS4wMzggMC4wMTA4LDAgLTUuNzM1NiwtMjUuODgwMyAtMC4wMTA4LDAgLTEuMzY0LC02LjE1NDYgeiBtIC0zNy43OTc4LDEyLjIzOTUgMjUuOTA0NywwIDEuNjg0NCw3LjU3ODQgLTI1LjQ2MTQsMCBjIC0wLjEyMjQsMC4wMTI1IC0wLjI0ODYsMC4wMTk2IC0wLjM3NzMsMC4wMTk2IGwgMCwwIGMgLTIuMDg1NywwIC00LjE2OCwtMS43MDU5IC00LjYyNzgsLTMuNzkxNCBsIDAsMCBjIC0wLjQ1NSwtMi4wNjEzIDAuODM4MiwtMy43NTExIDIuODgxMSwtMy43OTEzIC0wLjAwMSwtMC4wMDUxIC0wLjAwMiwtMC4wMTA1IC0wLjAwNCwtMC4wMTUzIgogICAgICAgaWQ9InBhdGg0MiIKICAgICAgIHN0eWxlPSJmaWxsOiMxZjE5MTc7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgIGQ9Im0gMzgwLjMxODcsMTIxLjcxNDkgMzcuOTA1NSwwIGMgNS45MTU2LDAgOS42ODI2LC00Ljg0MDUgOC4zNzI0LC0xMC43NTQ3IEwgNDE5Ljg0MzEsODAuNDc0NyBDIDQxOC41MzI5LDc0LjU2IDQxMi42MjA3LDY5LjcyMDEgNDA2LjcwNTksNjkuNzIwMSBsIC0zNy45MDUyLDAgYyAtNS45MTQ3LDAgLTkuNjgyOCw0LjgzOTMgLTguMzcyNCwxMC43NTQ2IGwgNi43NTMzLDMwLjQ4NTUgYyAxLjMxMDcsNS45MTU2IDcuMjIxOCwxMC43NTQ3IDEzLjEzNzEsMTAuNzU0NyB6IG0gNi44NzA5LC0xMi4yMzkyIDE4Ljc0MTMsMCBjIDMuMTMxNCwwIDUuMTI0NSwtMi41NjE0IDQuNDMxNCwtNS42OTA1IGwgLTMuNTc0NSwtMTYuMTM2IGMgLTAuNjkzMywtMy4xMjg5IC0zLjgyMjIsLTUuNjkwMiAtNi45NTI1LC01LjY5MDIgbCAtMTguNzQxNiwwIGMgLTMuMTMwMywwIC01LjEyNDQsMi41NjA4IC00LjQzMTEsNS42OTAyIGwgMy41NzQ1LDE2LjEzNiBjIDAuNjkzNCwzLjEzMDMgMy44MjExLDUuNjkwNSA2Ljk1MjUsNS42OTA1IgogICAgICAgaWQ9InBhdGg0NCIKICAgICAgIHN0eWxlPSJmaWxsOiM2NmNjZmY7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgIGQ9Im0gNDQyLjgwMzEsMTIxLjcxNDkgMzcuOTA1OCwwIGMgNS45MTU5LDAgOS42ODI4LC00Ljg0MDUgOC4zNzI2LC0xMC43NTQ3IEwgNDgyLjMyODMsODAuNDc0NyBDIDQ4MS4wMTc4LDc0LjU2IDQ3NS4xMDU2LDY5LjcyMDEgNDY5LjE5MDYsNjkuNzIwMSBsIC0zNy45MDU1LDAgYyAtNS45MTQ4LDAgLTkuNjgyOSw0LjgzOTMgLTguMzcyNCwxMC43NTQ2IGwgNi43NTMzLDMwLjQ4NTUgYyAxLjMxMDcsNS45MTU2IDcuMjIxOCwxMC43NTQ3IDEzLjEzNzEsMTAuNzU0NyB6IG0gNi44NzA5LC0xMi4yMzkyIDE4Ljc0MjEsMCBjIDMuMTMxMiwwIDUuMTI0MiwtMi41NjE0IDQuNDMwOSwtNS42OTA1IGwgLTMuNTc0NSwtMTYuMTM2IGMgLTAuNjkzNCwtMy4xMjg5IC0zLjgyMiwtNS42OTAyIC02Ljk1MjMsLTUuNjkwMiBsIC0xOC43NDIxLDAgYyAtMy4xMzAzLDAgLTUuMTI0NSwyLjU2MDggLTQuNDMxMSw1LjY5MDIgbCAzLjU3NDUsMTYuMTM2IGMgMC42OTMzLDMuMTMwMyAzLjgyMTEsNS42OTA1IDYuOTUyNSw1LjY5MDUiCiAgICAgICBpZD0icGF0aDQ2IgogICAgICAgc3R5bGU9ImZpbGw6IzY2Y2NmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgZD0ibSA2MTguMjE4NzUsMTE0LjA5Mzc1IC0xMS44NzUsNTMuNSAtMi41MzEyNSwxMS40Njg3NSAtNC44MTI1LDIxLjc4MTI1IDE4LjIxODc1LDAgNC44NDM3NSwtMjEuNzgxMjUgMzguNjI1LDAuMDMxMiBjIDcuMzkwMjUsMC4wMDQgMTQuNzY4ODcsLTYuMDQ2NjIgMTYuNDA2MjUsLTEzLjQzNzUgbCA4LjQzNzUsLTM4LjA5Mzc1IEMgNjg3LjE2ODYzLDEyMC4xNzEwOCA2ODIuNDU3LDExNC4wOTM3IDY3NS4wNjI1LDExNC4wOTM3IGwgLTU2Ljg0Mzc1LDAgeiBtIDE0Ljg0Mzc1LDE1LjMxMjUgMjYuNjU2MjUsMCBjIDMuOTEzODcsMCA2LjM5NzI1LDMuMjE0MjUgNS41MzEyNSw3LjEyNSBsIC00LjQ2ODc1LDIwLjE1NjI1IGMgLTAuODY2MzcsMy45MDkyNSAtNC43NzU3NSw3LjEyNSAtOC42ODc1LDcuMTI1IGwgLTI2LjY1NjI1LDAgNy42MjUsLTM0LjQwNjI1IHoiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjgsMCwwLC0wLjgsMCwyMTMpIgogICAgICAgaWQ9InBhdGg0OCIKICAgICAgIHN0eWxlPSJmaWxsOiM2NmNjZmY7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgIGQ9Im0gNDQ0LjY1NjI1LDkxLjg0Mzc1IC00Ljg0Mzc1LDIxLjc4MTI1IC0zOC42MjUsLTAuMDMxMiBjIC03LjM5MSwtMC4wMDQgLTE0Ljc2ODg3LDYuMDQ1NSAtMTYuNDA2MjUsMTMuNDM3NSBsIC04LjQ2ODc1LDM4LjEyNSBjIC0xLjYzNzc1LDcuMzkxNjMgMy4wNzQyNSwxMy40Mzc1IDEwLjQ2ODc1LDEzLjQzNzUgbCA1Ni44NzUsMCAxNC40MDYyNSwtNjQuOTY4NzUgNC44MTI1LC0yMS43ODEyNSAtMTguMjE4NzUsMCB6IG0gLTM0Ljg3NSwzNy4wNjI1IDI2LjY1NjI1LDAgLTcuNjU2MjUsMzQuMzc1IC0yNi42MjUsMCBjIC0zLjkxMzYyLDAgLTYuMzk3NjMsLTMuMTg0MzggLTUuNTMxMjUsLTcuMDkzNzUgTCA0MDEuMDkzNzUsMTM2IGMgMC44NjYyNSwtMy45MDk2MyA0Ljc3NTc1LC03LjA5Mzc1IDguNjg3NSwtNy4wOTM3NSB6IgogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC44LDAsMCwtMC44LDAsMjEzKSIKICAgICAgIGlkPSJwYXRoNTIiCiAgICAgICBzdHlsZT0iZmlsbDojNjZjY2ZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICBkPSJtIDI0MC40MDYyNSw5MS44NDM3NSAtNy4zNzUsMzMuMjUgMC4wOTM3LDAgLTAuMzEyNSwxLjMxMjUgYyAtMC4xMTY5MiwwLjM4MDI4IC0wLjIyNjQ4LDAuNzY3ODYgLTAuMzEyNSwxLjE1NjI1IGwgLTYuMTI1LDI3LjU5Mzc1IDAuMDYyNSwwIC01LjIxODc1LDIzLjQzNzUgMTguMjE4NzUsMCA1LjIxODc1LC0yMy40Mzc1IDAuMDMxMiwwIDQuMTI1LC0xOC42MjUgYyAwLjAwNywtMC4wMjk3IC0wLjAwNiwtMC4wNjQxIDAsLTAuMDkzNyBsIDEuNTkzNzUsLTcuMDMxMjUgMjYuNTkzNzUsMCBjIDMuOTExODgsMCA2LjQyODUsMy4yMTIxMiA1LjU2MjUsNy4xMjUgbCAtNC4xODc1LDE4Ljg3NSAtNS4xMjUsMjMuMTg3NSAxOC4yNSwwIDUuMTU2MjUsLTIzLjE4NzUgMC4wMzEyLDAgNi4xNTYyNSwtMjcuODQzNzUgYyAxLjYzNzM4LC03LjM5Mzg3IC0zLjA3NDUsLTEzLjQ2ODc1IC0xMC40Njg3NSwtMTMuNDY4NzUgbCAtMzguNjU2MjUsMCA0LjkzNzUsLTIyLjI1IC0xOC4yNSwwIHoiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjgsMCwwLC0wLjgsMCwyMTMpIgogICAgICAgaWQ9InBhdGg1NiIKICAgICAgIHN0eWxlPSJmaWxsOiM2NmNjZmY7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgIGQ9Im0gMjk1LjU3NjIsNzAuMTI5MSAtNDguNjI2NCwwIGMgLTUuOTE0OCwwIC05LjY4MjksNC44NDEgLTguMzcyNywxMC43NTUyIGwgMS45NTkzLDguODQ1NiAwLjAwOSwwIDAuMzc2NywxLjcwMSBjIDEuMzA5Myw1LjkxMzcgNy4yMjM4LDEwLjc1NzIgMTMuMTM3MiwxMC43NTQ3IGwgMzQuMDIzOSwtMC4wMTUzIDAuNTAyLDIuMjU4NiBjIDAuNTM0MSwyLjk0OCAtMS4zMjQzLDUuMzM3MSAtNC4yNDY1LDUuNDU2NyBsIC0zOS4zODYzLDAgMi43MTEzLDEyLjIzMzUgNDguODc4NCwtMC4wMTM5IGMgNS43OTMyLC0wLjExNDIgOS40NTY0LC00LjkwNjggOC4xNjIxLC0xMC43NTEyIGwgLTAuOTE5OSwtNC4xNTIgMC4wMDgsMCAtMS4xMTY2LC01LjAzOCAwLjAxMDgsMCAtNS43MzU2LC0yNS44ODAzIC0wLjAxMDgsMCAtMS4zNjQsLTYuMTU0NiB6IG0gLTM3Ljc5NzgsMTIuMjM5NSAyNS45MDQ3LDAgMS42ODQ0LDcuNTc4NCAtMjUuNDYxNCwwIGMgLTAuMTIyNCwwLjAxMjUgLTAuMjQ4NiwwLjAxOTYgLTAuMzc3MywwLjAxOTYgbCAwLDAgYyAtMi4wODU3LDAgLTQuMTY4LC0xLjcwNTkgLTQuNjI3OCwtMy43OTE0IGwgMCwwIGMgLTAuNDU1LC0yLjA2MTMgMC44MzgyLC0zLjc1MTEgMi44ODExLC0zLjc5MTMgLTAuMDAxLC0wLjAwNTEgLTAuMDAyLC0wLjAxMDUgLTAuMDA0LC0wLjAxNTMiCiAgICAgICBpZD0icGF0aDY0IgogICAgICAgc3R5bGU9ImZpbGw6IzY2Y2NmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgZD0iTSA1NC4xNCwxMDIuMDQ0NCBDIDUzLjU0MTksMTAwLjQxNjUgNTIuOTQzLDk4Ljc4OCA1Mi4zNDQ5LDk3LjE1OTIgNTAuODYzNyw5NS42OTM0IDQ5LjM4MjYsOTQuMjI1IDQ3LjkwMSw5Mi43NTg0IDQ2LjI4MTUsOTEuMTU0IDQ1LjkzMzIsOTEuMTY1IDQ2LjMxMzYsODguODk1NiBjIDAuNDQ2NywtMi42NjY1IDEuNzI4OCwtNS40MTQ0IDQuMDg5LC03Ljc4MDggMi40ODE0LC0yLjQ4NzQgNy42OTE1LC02LjAwNzcgMTEuNDQwNiwtNC4zNDgzIC0wLjM0ODQsLTEuMjU5OCAtMC44MTEsLTIuNTgwNyAtMS4zOTk4LC0zLjg3MjIgLTIuNTE0LC01LjUxMjIgMy42MTI4LC02LjU5MTkgNy45MDA1LC03Ljc1MTYgMy41NjM0LC0wLjk2MzUgMTIuMzA4NiwtMy41MzExIDEzLjU3MDYsMS4xNTIzIDAuNTY3NSwyLjEwNzMgMC42NTU2LDMuMjM5NyAwLjQ1MzUsNS4yNTE3IDEuMTA4OSwyLjQ3NSAxLjQ2MywyLjg2OTYgMi4zODA4LDQuMjMxNiAxLjI1OTUsMS44NjggMS4xNjksMi41NzkgMC44OTM1LDQuODk3MSAtMC4wNTMzLDAuNDQ2OCAtMC4xMTgyLDAuOTM0IC0wLjE5MzMsMS40NDYgNC4yNDM0LC0wLjYzODQgOC4zMjMzLC0wLjYzMDcgMTIuNDgxOCwtMC4xMTQ4IC0xLjI2MjYsLTAuNzM1NiAtMi41Mjg4LC0xLjM3OTkgLTQuMTk4NywtMi4yMzg1IC0zLjk2MzQsLTIuMDM3MyAtMC4yMjg1LC04LjA0NzkgMS40Nzk3LC0xMC42ODAxIDMuNTg1LC01LjUyNDUgNi43OTk0LC05LjMyNTQgMTIuODU1NCwtNi4wNDgzIDIuMDM0NCwxLjEwMTIgMi4xOTE0LDIuMjc0MiAzLjQ2MTEsNC4xNyAwLjcwMTMsMC4zODQ3IDQuMzE1NywzLjQ1ODYgNi40NjUyLDUuMTk1MSAwLjgxNDcsLTAuOTc3NCAyLjM3NDEsLTEuMTU3NCA0LjczOSwtMS4zMjgzIDEuMTksLTAuMDg2NSA1Ljg1NjcsLTAuMDU3IDcuMDkzNywtMC4wNjQ5IDMuNzExMSwtMC4wMjMzIDUuOTM4MywwLjM2MTkgNi4yMjg2LDQuNDA2NCAwLjEzNzUsMS45MTc5IDAuMDU1MiwyLjMyNTggLTAuODg4NCw0LjAwMjMgLTAuMDU3LDIuMTE1NyAtMC4xMTM0LDQuMjMxOCAtMC4xNjk4LDYuMzQ3IC0wLjA2NDYsMi4zODMxIC0wLjUxOTYsMy44NDQ5IC0xLjQ1NDcsNi4wNzEzIC0wLjg1MDQsMi4wMjE5IC0xLjMyNjcsMy43NDc2IC0yLjMxOTYsNS43MDg0IDAuMTM2MywwLjc2ODcgMC4yNDQzLDEuNTYxOSAwLjMxNzcsMi4zOTA3IDEuMjYxNywtMS4yMTUyIDIuNTIzMSwtMi40MzEzIDMuNzg0OSwtMy42NDY4IDIuNDA1MSwtMi4zMTY3IDQuMzkyNSwtNC4yMDg5IDguMDU5NywtNC4wMzU3IDMuODE5MSwwLjE4IDguMTkxMywzLjE4ODcgOS4zMTEsNi44NjkgMC4zNzMzLDEuMjI4NSAwLjc0NTUsMi40NTY3IDEuMTE4OCwzLjY4NDcgNS43NTk0LC0xLjA4ODUgMTIuNDkwMywtMC44MzkzIDE3LjUwNTEsMS44MzYzIDcuMzc1NCwzLjkzNjIgMTAuODI2MywxMS44NDk5IDExLjY3NDUsMjAuMjIxMiAwLjY4NjIsNi43NzIgLTAuNjM0NywxOC4xNTk5IC0zLjg2MzQsMjQuMzM4OSAtMC45NDkzLDEuODE3IC01LjIzNjQsNC4xMTYxIC03LjExNTgsMi4yMTE2IC0xLjQxNTksLTEuNDM1MiAtMi4zODg1LC0zLjYyMTYgLTMuOTE3MiwtNC45Mjc4IC0xLjE4NCwtMS4wMTE3IC0yLjY1MDcsLTEuNTEyNiAtMy45MzU5LC0yLjA0MjEgLTAuOTk1LDIuNjg2MSAtMi40MjUsNC43NzM5IC00LjE3Niw2Ljg2MDEgLTEuMzkyNCwxLjY1OCAtMi43MDQzLDIuNDg0MyAtNC41NDA1LDMuNjM0MSAtMy42Mjg0LDIuMjcyMiAtNi40NDQsNS4xNDA2IC05Ljc0NTUsNy44NjI0IC05Ljk5MDUsOC4yMzc1IC0xOC41Njk4LDcuOTg0OSAtMzEuMDE3NiwyLjc0NTcgLTUuOTM4NiwtMi40OTk5IC04LjgwMywtNS44OTI0IC0xMi40NDU1LC0xMC43NjQ5IC0yLjIwMTEsLTAuMTE0OCAtMy43MTM0LC0wLjU0MTEgLTYuMDQwMSwtMi41OTQ1IC0xLjcxNzUsLTEuNTE1NyAtMy4zMTY1LC0zLjA3NTEgLTQuODY0MiwtNC42OTA4IC0xMS42MzU3LC0xLjg1NDQgLTE4Ljg2MiwtNC4wNzE3IC0yNi41MDcxLC0xMC44NDkzIC0zLjExMSwtMi43NTgxIC01LjM3MjUsLTUuODE0NSAtNy4xMzY1LC05LjI1MDMgLTEuNjM3NiwtMS44MDk3IC0zLjI2NTgsLTMuNjY0NyAtNS40MjgsLTQuNDk3MiAtMS41MjIyLC0wLjU4NTQgLTEuNDkzOSwtMC41ODM5IC0yLjAzMDIsMC44NDc4IDEuODA5OSwxLjM2MDEgMS43ODEzLDMuOTIwNCAxLjk0ODgsNi4yMzc3IDEuMTQxOCwtMC4wNTQ0IDEuNTY5OCwtMS4zMzUxIDIuMzQ2MiwtMi4zMTUxIDAuNDU4MSwyLjA0OTIgMC43MjM3LDUuMjMxNiAtMS40MzI5LDYuMzQ4NSAwLjM1MDcsMC45Mzc0IDAuNzQ3NSwxLjg4MjIgMS4xMTA5LDIuOTE2IC0zLjE4MSwtMC41NTIyIC0xNC4wODY3LC03LjkwMyAtOC4yNjc4LC0xMy41MDk0IDAuMzgzLC0xLjU1NjcgMC42ODQ2LC0yLjYyOTEgMS4xOTA2LC0zLjY4MTYgMS4zMzE0LC0yLjc2ODkgNC4zMjUxLC0zLjI0MzQgNi45MzM4LC0yLjIyNiAtMC43MTQ5LC0zLjI3NzcgLTAuODU5OCwtNi44NDQgLTAuNDI5NSwtMTEuODUwMyAwLjEwMzIsLTEuMjAwMiAwLjI3NjQsLTIuNDExMSAwLjUwOTQsLTMuNjI1NSIKICAgICAgIGlkPSJwYXRoNjYiCiAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICBkPSJtIDU0LjgzMTEsMTAxLjc5MSBjIC0wLjI0MDEsLTAuNjU0MiAtMC40ODEzLC0xLjMwOTYgLTAuNzIxNywtMS45NjQxIGwgLTEuMzgyMiwwLjUwNjggYyAwLjI0MDQsMC42NTQ1IDAuNDgxNywxLjMwOTkgMC43MjE3LDEuOTY0MSBsIDEuMzgyMiwtMC41MDY4IHogbSAtMC43MjE3LC0xLjk2NDEgYyAtMC4zNTc3LC0wLjk3MzIgLTAuNzE2LC0xLjk0NzcgLTEuMDczNSwtMi45MjExIGwgLTEuMzgyMSwwLjUwNjggYyAwLjM1NzQsMC45NzM0IDAuNzE1NywxLjk0OCAxLjA3MzQsMi45MjExIGwgMS4zODIyLC0wLjUwNjggeiBtIC0xLjA3MzUsLTIuOTIxMSAtMC4xNzI5LC0wLjI2NzYgLTAuNTE4MSwwLjUyMSAwLjY5MSwtMC4yNTM0IHogTSA1Mi44NjMsOTYuNjM4MiBjIC0wLjc4NDYsLTAuNzc2NyAtMS41NzAxLC0xLjU1NDggLTIuMzU1LC0yLjMzMjEgbCAtMS4wMzYzLDEuMDQyIGMgMC43ODQ5LDAuNzc3MyAxLjU3MDMsMS41NTU0IDIuMzU1LDIuMzMyMSBsIDEuMDM2MywtMS4wNDIgeiBtIC0yLjM1NSwtMi4zMzIxIGMgLTAuNjk1OSwtMC42ODk0IC0xLjM5MjcsLTEuMzc5NiAtMi4wODg5LC0yLjA2ODcgbCAtMS4wMzYzLDEuMDQyIGMgMC42OTYyLDAuNjg5MSAxLjM5MjksMS4zNzkzIDIuMDg4OSwyLjA2ODcgbCAxLjAzNjMsLTEuMDQyIHogTSA0OC40MTkxLDkyLjIzNzQgQyA0OC4xMDA4LDkxLjkyMjUgNDcuOTkyOCw5MS44MTg0IDQ3Ljg5Nyw5MS43MjYgbCAtMS4wMTkzLDEuMDY1MyBjIDAuMjEyNiwwLjIwNDYgMC40NDczLDAuNDMwOCAwLjUwNTEsMC40ODgxIGwgMS4wMzYzLC0xLjA0MiB6IE0gNDcuODk3LDkxLjcyNiBjIC0wLjk0MjgsLTAuOTA3NiAtMS4xMjkzLC0xLjA4NzYgLTAuODU3OCwtMi43MDkzIGwgLTEuNDUxMywtMC4yNDIxIGMgLTAuNDAwMiwyLjM4OTMgLTAuMTIxLDIuNjU4NiAxLjI4OTgsNC4wMTY3IEwgNDcuODk3LDkxLjcyNiB6IG0gLTAuODU3OCwtMi43MDkzIGMgMC4yMTg5LC0xLjMwNTcgMC42NTMxLC0yLjYzOCAxLjMzNDYsLTMuOTM0OCBsIC0xLjMwNzMsLTAuNjg1NCBjIC0wLjc1MjEsMS40MzA5IC0xLjIzMzQsMi45MTQgLTEuNDc4Niw0LjM3ODEgbCAxLjQ1MTMsMC4yNDIxIHogbSAxLjMzNDYsLTMuOTM0OCBjIDAuNjMyNywtMS4yMDQ1IDEuNDc0OSwtMi4zNzA5IDIuNTQ5OCwtMy40NDg5IGwgLTEuMDQyMSwtMS4wMzY0IGMgLTEuMTkyOCwxLjE5NjMgLTIuMTIyLDIuNDgwOSAtMi44MTUsMy43OTk5IGwgMS4zMDczLDAuNjg1NCB6IG0gMi41NDk4LC0zLjQ0ODkgYyAxLjM3NTMsLTEuMzc4OCAzLjYyMDQsLTMuMDg3MiA1Ljk1NywtMy45NzUgbCAtMC41MTgyLC0xLjM3NjYgYyAtMi41NTM1LDAuOTcwMyAtNC45OTIxLDIuODIzMSAtNi40ODA5LDQuMzE1MiBsIDEuMDQyMSwxLjAzNjQgeiBtIDUuOTU3LC0zLjk3NSBjIDEuNjI1NCwtMC42MTc3IDMuMjgxOSwtMC44MzAzIDQuNjY2MSwtMC4yMTc3IGwgMC41OTMsLTEuMzQ3NiBjIC0xLjc4NTYsLTAuNzkwMyAtMy44MjIsLTAuNTU0NSAtNS43NzczLDAuMTg4NyBsIDAuNTE4MiwxLjM3NjYgeiBtIDQuNjY2MSwtMC4yMTc3IDEuNDIyMSwwLjYyOTUgLTAuNDE0NCwtMS40OTkyIC0wLjcxMTIsMC4xOTU5IC0wLjI5NjUsMC42NzM4IHogbSAxLjAwNzcsLTAuODY5NyBjIC0wLjE4NDgsLTAuNjY4NyAtMC40MDExLC0xLjM1NDQgLTAuNjQ5NywtMi4wNDIxIGwgLTEuMzg3OCwwLjUwMTIgYyAwLjIzNTgsMC42NTI4IDAuNDQwNywxLjMwMTQgMC42MTUxLDEuOTMyNiBsIDEuNDIyNCwtMC4zOTE3IHogTSA2MS45MDQ3LDc0LjUyODUgQyA2MS42NzI1LDczLjg4NyA2MS40MDk4LDczLjIzNjggNjEuMTE0NCw3Mi41ODkgbCAtMS4zNDE5LDAuNjEwNiBjIDAuMjc0MSwwLjYwMTMgMC41MjIxLDEuMjE1OCAwLjc0NDQsMS44MzAxIGwgMS4zODc4LC0wLjUwMTIgeiBNIDYxLjExNDQsNzIuNTg5IGMgLTEuMjQ1MywtMi43MzAzIDAuMDU5OCwtNC4xNjggMi4wODI2LC01LjA5MDcgbCAtMC42MTA2LC0xLjM0MTkgYyAtMi43Njc3LDEuMjYyMiAtNC41NDU5LDMuMjQ1MSAtMi44MTM5LDcuMDQzMiBsIDEuMzQxOSwtMC42MTA2IHogbSAyLjA4MjYsLTUuMDkwNyBjIDEuMjkyNiwtMC41ODkzIDIuODU2OCwtMC45OTY3IDQuMzEwNCwtMS4zNzU0IGwgLTAuMzY4NSwtMS40MjI0IGMgLTEuNTI3MywwLjM5NzcgLTMuMTcwNiwwLjgyNiAtNC41NTI1LDEuNDU1OSBsIDAuNjEwNiwxLjM0MTkgeiBtIDQuMzEwNCwtMS4zNzU0IGMgMC4zODQxLC0wLjA5OTUgMC43NTYzLC0wLjE5NjcgMS4wMjM2LC0wLjI2OSBsIC0wLjM3NDIsLTEuNDIyNCBjIC0wLjM5MzcsMC4xMDY2IC0wLjcwNjEsMC4xODgyIC0xLjAxNzksMC4yNjkgbCAwLjM2ODUsMS40MjI0IHogbSAxLjAyMzYsLTAuMjY5IGMgMS43NTI5LC0wLjQ3MzkgNC43ODM0LC0xLjM0MyA3LjUwNzUsLTEuNTE1NyBsIC0wLjA5MjQsLTEuNDc0IGMgLTIuODU0NSwwLjE4MDkgLTUuOTc5NywxLjA3OCAtNy43ODkzLDEuNTY3MyBsIDAuMzc0MiwxLjQyMjQgeiBtIDcuNTA3NSwtMS41MTU3IGMgMi40NjE5LC0wLjE1NTkgNC42NTY4LDAuMjU4OCA1LjE2NDcsMi4xNDM5IGwgMS40MjI1LC0wLjM3NDIgQyA4MS44NzE5LDYzLjMxMDQgNzkuMDYyLDYyLjY2NjYgNzUuOTQ2MSw2Mi44NjQyIGwgMC4wOTI0LDEuNDc0IHogbSA1LjE2NDcsMi4xNDM5IGMgMC4yNjg4LDAuOTk4NiAwLjQyNDcsMS43Njk5IDAuNDg5NiwyLjUzNDcgbCAxLjQ3NCwtMC4xMjA3IEMgODMuMDk2NSw2OC4wNjUyIDgyLjkyMzksNjcuMjE2IDgyLjYyNTcsNjYuMTA3OSBsIC0xLjQyMjUsMC4zNzQyIHogbSAwLjQ4OTYsMi41MzQ3IGMgMC4wNjUyLDAuNzY4NSAwLjAzODUsMS41MTQ2IC0wLjA1NjEsMi40NjA4IGwgMS40NjI2LDAuMTM4MyBjIDAuMTA2NiwtMS4wNjUzIDAuMTM3NSwtMS44OTI0IDAuMDY3NSwtMi43MTk4IGwgLTEuNDc0LDAuMTIwNyB6IG0gLTAuMDU2MSwyLjQ2MDggMC4wNTc1LDAuMzY4NSAwLjY3MzgsLTAuMjk5NCAtMC43MzEzLC0wLjA2OTEgeiBtIDAuMDU3NSwwLjM2ODUgYyAwLjk5MTYsMi4yMTM2IDEuNDAwMywyLjgxMTQgMi4xMjIsMy44Njg0IGwgMS4yMTQ5LC0wLjgyOTQgQyA4NC4zNjM5LDczLjkwOCA4My45ODYsNzMuMzU0NyA4My4wNDE4LDcxLjI0NzQgbCAtMS4zNDc2LDAuNTk4NyB6IG0gMi4xMjIsMy44Njg0IGMgMC4wNzM3LDAuMTA4IDAuMTM2NywwLjE5OTkgMC4zMjIzLDAuNDc1NCBsIDEuMjIwNiwtMC44MjMyIGMgLTAuMDQ2OCwtMC4wNjk3IC0wLjIwMDQsLTAuMjk0NSAtMC4zMjgsLTAuNDgxNiBsIC0xLjIxNDksMC44Mjk0IHogbSAwLjMyMjMsMC40NzU0IGMgMC41NjI3LDAuODM0OCAwLjgyMTUsMS4zOTI0IDAuOTA0MywxLjk2ODkgbCAxLjQ1NywtMC4yMDE4IEMgODYuMzgxMyw3Ny4xMzE2IDg2LjA1NSw3Ni4zOTk0IDg1LjM1OTEsNzUuMzY2NyBsIC0xLjIyMDYsMC44MjMyIHogbSAwLjkwNDMsMS45Njg5IGMgMC4wODY0LDAuNjA1NSAtNmUtNCwxLjMyODMgLTAuMTMxOCwyLjQzMyBsIDEuNDYyNiwwLjE2NzMgYyAwLjE0NCwtMS4yMTMgMC4yNDAxLC0yLjAwNjEgMC4xMjYyLC0yLjgwMjEgbCAtMS40NTcsMC4yMDE4IHogbSAtMC4xMzE4LDIuNDMzIGMgLTAuMDM2LDAuMzAxOSAtMC4wNjU4LDAuNTQwNiAtMC4wODY1LDAuNjk2NSBsIDEuNDU3LDAuMTg0MiBjIDAuMDQ0MiwtMC4zMzEzIDAuMDc0NiwtMC41NjUyIDAuMDkyMSwtMC43MTM0IEwgODQuOTExLDgwLjU5MTggeiBtIC0wLjA4NjUsMC42OTY1IGMgLTAuMDE2NCwwLjEyNSAtMC4wNTMsMC4zNzY0IC0wLjEwNCwwLjcyNjUgbCAxLjQ1NywwLjIxMzIgYyAwLjAyMjcsLTAuMTU2OCAwLjA1NywtMC40MDE0IDAuMTA0LC0wLjc1NTUgbCAtMS40NTcsLTAuMTg0MiB6IG0gLTAuMTA0LDAuNzI2NSAtMC4xNDM3LDAuOTgzMSAwLjk4MTYsLTAuMTQ4IC0wLjEwOTQsLTAuNzI4NSAtMC43Mjg1LC0wLjEwNjYgeiBtIDAuODM3OSwwLjgzNTEgYyAyLjA4NDksLTAuMzEzNSA0LjEzMDksLTAuNDY4NiA2LjE2NjIsLTAuNDgxOSBsIC0wLjAwNTcsLTEuNDc0IGMgLTIuMTA0MSwwLjAxMzYgLTQuMjIxLDAuMTc0MyAtNi4zNzkzLDAuNDk4OSBsIDAuMjE4OCwxLjQ1NyB6IG0gNi4xNjYyLC0wLjQ4MTkgYyAyLjA0MTUsLTAuMDEzIDQuMDcyLDAuMTE1OSA2LjExOTcsMC4zNjk5IGwgMC4xNzI5LC0xLjQ2MjcgQyA5NS45MDcxLDgxLjAxMzYgOTMuODE3MSw4MC44ODA3IDkxLjcxODksODAuODk0IGwgMC4wMDU3LDEuNDc0IHogbSA2LjExOTcsMC4zNjk5IDAuNDU1LC0xLjM3MDUgLTAuMzY4NSwwLjYzOTIgLTAuMDg2NSwwLjczMTMgeiBtIDAuNDU1LC0xLjM3MDUgQyA5Ny4xMDk2LDgwLjY3NDMgOTUuOTIyMSw4MC4wNjM3IDk0LjQwNyw3OS4yODUzIGwgLTAuNjczNSwxLjMxMyBjIDEuNDk1MywwLjc2ODIgMi42NjcxLDEuMzcwOSAzLjgyODgsMi4wNDc1IGwgMC43MzcsLTEuMjc4NCB6IE0gOTQuNDA3LDc5LjI4NTMgYyAtMC4xMTA1LC0wLjA1NjcgLTAuMjIzOSwtMC4xMTUxIC0wLjMzODEsLTAuMTczNyBsIC0wLjY3MzYsMS4zMTMgYyAwLjExNDMsMC4wNTg2IDAuMjI3NywwLjExNyAwLjMzODIsMC4xNzM3IGwgMC42NzM1LC0xLjMxMyB6IG0gLTAuMzM4MSwtMC4xNzM3IGMgLTEuNTU3MSwtMC44MDA1IC0xLjU3MTMsLTIuNDgxMiAtMS4wMjE0LC00LjI0MTUgbCAtMS40MDQ4LC0wLjQzNzcgYyAtMC43NTM1LDIuNDExNyAtMC42NTMxLDQuNzU1NCAxLjc1MjYsNS45OTIyIGwgMC42NzM2LC0xLjMxMyB6IG0gLTEuMDIxNCwtNC4yNDE1IGMgMC42MjM5LC0xLjk5NzkgMS45NDg4LC00LjEwMDMgMi43ODA1LC01LjM4MTkgbCAtMS4yMzI1LC0wLjgwMDUgYyAtMC44NzYyLDEuMzUwMiAtMi4yNzM2LDMuNTcgLTIuOTUyOCw1Ljc0NDcgbCAxLjQwNDgsMC40Mzc3IHogbSAyLjc4MDUsLTUuMzgxOSBjIDEuNzQwOCwtMi42ODMgMy4zODI2LC00Ljk0MTkgNS4yNjc5LC02LjA5NzMgTCAxMDAuMzMsNjIuMTM1NyBjIC0yLjEzMTksMS4zMDY1IC0zLjg5MTEsMy43MTA5IC01LjczNDUsNi41NTIgbCAxLjIzMjUsMC44MDA1IHogbSA1LjI2NzksLTYuMDk3MyBjIDEuNzgxMywtMS4wOTE5IDMuODY0MiwtMS4xOTMxIDYuNjIyOSwwLjI5OTYgbCAwLjY5NjgsLTEuMzAxNiBjIC0zLjI5NjcsLTEuNzg0MiAtNS44NDk5LC0xLjYyMzcgLTguMDg1NiwtMC4yNTMyIGwgMC43NjU5LDEuMjU1MiB6IG0gNi42MjI5LDAuMjk5NiBjIDEuMzAzNywwLjcwNTYgMS43NDEzLDEuNDcxOCAyLjMzMDYsMi41MDQ0IGwgMS4yODQxLC0wLjcyNTYgYyAtMC43MTIsLTEuMjQ3MyAtMS4yNDA3LC0yLjE3MjUgLTIuOTE3OSwtMy4wODA0IGwgLTAuNjk2OCwxLjMwMTYgeiBtIDIuMzMwNiwyLjUwNDQgYyAwLjIzNDUsMC40MTA4IDAuNDkxOSwwLjg2MDkgMC44Njg2LDEuNDIzNiBsIDEuMjIwNiwtMC44MTc1IGMgLTAuMzAxNiwtMC40NTA0IC0wLjU2NSwtMC45MTE0IC0wLjgwNTEsLTEuMzMxNyBsIC0xLjI4NDEsMC43MjU2IHogbSAwLjg2ODYsMS40MjM2IDAuMjU2MiwwLjIzODkgMC4zNTQxLC0wLjY0NzcgLTAuNjEwMywwLjQwODggeiBtIDAuMjU2MiwwLjIzODkgYyAwLjQzMDMsMC4yMzYyIDIuMjY4NiwxLjc1NDcgNC4wNTY0LDMuMjMyMSBsIDAuOTM4OCwtMS4xMzQ0IGMgLTEuODQ4NywtMS41Mjc5IC0zLjc1MDUsLTMuMDk4OCAtNC4yODcxLC0zLjM5MzEgbCAtMC43MDgxLDEuMjk1NCB6IG0gNC4wNTY0LDMuMjMyMSBjIDAuOTIwNCwwLjc2MDMgMS44Mjg0LDEuNTEwNiAyLjI5OTUsMS44OTEgbCAwLjkyNjksLTEuMTUxNCBjIC0wLjg2MjMsLTAuNjk2OCAtMS41NzE4LC0xLjI4MjcgLTIuMjg3NiwtMS44NzQgbCAtMC45Mzg4LDEuMTM0NCB6IG0gMi4yOTk1LDEuODkxIDAuNTY0NiwwLjQ1NjEgMC40NjYxLC0wLjU1OTYgLTAuNTY3MywtMC40NzIyIC0wLjQ2MzQsMC41NzU3IHogbSAxLjAzMDcsLTAuMTAzNSBjIDAuMjkzOSwtMC4zNTI2IDAuNzU4OCwtMC41NzA2IDEuMzkwNiwtMC43MjE5IGwgLTAuMzM5NiwtMS40MzM4IGMgLTAuOTQyMiwwLjIyNTMgLTEuNjY1MywwLjU4NzMgLTIuMTg1NSwxLjIxMTIgbCAxLjEzNDUsMC45NDQ1IHogbSAxLjM5MDYsLTAuNzIxOSBjIDAuNzI1NCwtMC4xNzM1IDEuNjc4NCwtMC4yNTg2IDIuODMzLC0wLjM0MTYgbCAtMC4xMDM4LC0xLjQ3NCBjIC0xLjIxMDEsMC4wODczIC0yLjIyMDMsMC4xNzg4IC0zLjA2ODgsMC4zODE4IGwgMC4zMzk2LDEuNDMzOCB6IG0gMi44MzMsLTAuMzQxNiBjIDAuOTA1NCwtMC4wNjU1IDMuNzk3OCwtMC4wNjQxIDUuNjY1NiwtMC4wNjM1IGwgMCwtMS40NzQgYyAtMS45MDgzLC05ZS00IC00Ljg2MzEsLTAuMDAyMyAtNS43Njk0LDAuMDYzNSBsIDAuMTAzOCwxLjQ3NCB6IE0gMTI4LjQ1LDcxLjc1IGMgMC41OTI0LDNlLTQgMS4wODQ1LDNlLTQgMS4zNzksLTAuMDAxNCBsIC0wLjAwNiwtMS40NzQgYyAtMC4yOTQsMC4wMDE3IC0wLjc4MzgsMC4wMDE0IC0xLjM3MzQsMC4wMDE0IGwgMCwxLjQ3NCB6IG0gMS4zNzksLTAuMDAxNCBjIDEuNzQwNSwtMC4wMTA4IDMuMTIwNCwwLjA2NjYgNC4wMzE1LDAuNTgyOCBsIDAuNzI1NiwtMS4yODQxIGMgLTEuMjAyNCwtMC42ODEyIC0yLjc5MjcsLTAuNzg0OSAtNC43NjI3LC0wLjc3MjcgbCAwLjAwNiwxLjQ3NCB6IG0gNC4wMzE1LDAuNTgyOCBjIDAuODMyNSwwLjQ3MTcgMS4zMzI4LDEuNDAwOSAxLjQ1NzMsMy4xMzg1IGwgMS40NzQsLTAuMTAzOCBjIC0wLjE2NTMsLTIuMzA2MiAtMC45MjQ0LC0zLjU5MjkgLTIuMjA1NywtNC4zMTg4IGwgLTAuNzI1NiwxLjI4NDEgeiBtIDEuNDU3MywzLjEzODUgYyAwLjA2MzcsMC44OTI2IDAuMDc4OCwxLjQyNSAtMC4wMjE2LDEuODgxMyBsIDEuNDM5NSwwLjMxNyBjIDAuMTQyLC0wLjY0NTggMC4xMjkyLC0xLjI3NzMgMC4wNTYxLC0yLjMwMjEgbCAtMS40NzQsMC4xMDM4IHogbSAtMC4wMjE2LDEuODgxMyBjIC0wLjEwMDMsMC40NTcgLTAuMzM2NywwLjkzMDcgLTAuNzc0NywxLjcwOTEgbCAxLjI4OTgsMC43MiBjIDAuNTA1MSwtMC44OTc1IDAuNzgyNiwtMS40NjcgMC45MjQ0LC0yLjExMjEgbCAtMS40Mzk1LC0wLjMxNyB6IG0gLTAuNzc0NywxLjcwOTEgLTAuMDkyMSwwLjM0MjcgMC43MzcsMC4wMTczIC0wLjY0NDksLTAuMzYgeiBtIC0wLjA5MjEsMC4zNDI3IGMgLTAuMDI4NCwxLjA1NzYgLTAuMDU3MywyLjExNiAtMC4wODUxLDMuMTczNiBsIDEuNDc0MSwwLjAzNDYgYyAwLjAyNzcsLTEuMDU3NiAwLjA1NjcsLTIuMTE2MSAwLjA4NSwtMy4xNzM3IGwgLTEuNDc0LC0wLjAzNDUgeiBtIC0wLjA4NTEsMy4xNzM2IGMgLTAuMDI4LDEuMDU3NiAtMC4wNTY5LDIuMTE2MSAtMC4wODQ3LDMuMTczNCBsIDEuNDc0LDAuMDM0NiBjIDAuMDI3OCwtMS4wNTczIDAuMDU2NywtMi4xMTU4IDAuMDg0OCwtMy4xNzM0IGwgLTEuNDc0MSwtMC4wMzQ2IHogbSAtMC4wODQ3LDMuMTczNCBjIC0wLjAzMDYsMS4xMzU2IC0wLjE1MzQsMi4wNDY5IC0wLjM3NzksMi45MzMgbCAxLjQyODEsMC4zNTcyIGMgMC4yNTI2LC0wLjk5NjQgMC4zOTAxLC0yLjAwODYgMC40MjM4LC0zLjI1NTYgbCAtMS40NzQsLTAuMDM0NiB6IG0gLTAuMzc3OSwyLjkzMyBjIC0wLjIyNjUsMC44OTI3IC0wLjU2MzgsMS43ODU2IC0xLjAxOTMsMi44NzA0IGwgMS4zNTg5LDAuNTcwMyBjIDAuNDc5MSwtMS4xNDA5IDAuODM3NCwtMi4wOTMxIDEuMDg4NSwtMy4wODM1IGwgLTEuNDI4MSwtMC4zNTcyIHogbSAtMS4wMTkzLDIuODcwNCBjIC0wLjMyMjYsMC43NjcgLTAuNTk5LDEuNTEyMyAtMC44Njk3LDIuMjQyOCBsIDEuMzgyMiwwLjUwNjggYyAwLjI1OCwtMC42OTYyIDAuNTIxMywtMS40MDY2IDAuODQ2NCwtMi4xNzkzIGwgLTEuMzU4OSwtMC41NzAzIHogbSAwLjUxMjUsMi43NTI0IDAsLTAuMDAyOCAtMC42OTExLC0wLjI1MzQgMC42OTExLDAuMjU2MiB6IG0gLTEuMzgyMiwtMC41MTI1IGMgLTAuNDIxMiwxLjEzNjEgLTAuODMsMi4yMzgzIC0xLjQyOTgsMy40MjI2IGwgMS4zMTg3LDAuNjYyMSBjIDAuNjI5NiwtMS4yNDI5IDEuMDU1MSwtMi4zODk4IDEuNDkzMywtMy41NzIyIGwgLTEuMzgyMiwtMC41MTI1IHogbSAtMS40Mjk4LDMuNDIyNiAtMC4wNjYzLDAuNDU3OCAwLjcyNTcsLTAuMTI2NyAtMC42NTk0LC0wLjMzMTEgeiBtIC0wLjA2NjMsMC40NTc4IGMgMC4wNzI2LDAuNDExIDAuMTMzNSwwLjc5MjUgMC4xNzk3LDEuMTM4MSBsIDEuNDU3LC0wLjE4NDMgYyAtMC4wNjAxLC0wLjQ0OTggLTAuMTIyMiwtMC44NTAxIC0wLjE4NTQsLTEuMjA3MiBsIC0xLjQ1MTMsMC4yNTM0IHogbSAwLjE3OTcsMS4xMzgxIGMgMC4wNDE3LDAuMzEzOCAwLjA4NDIsMC43MDY3IDAuMTI2NywxLjE4NjMgbCAxLjQ3NCwtMC4xMjA4IGMgLTAuMDMwOSwtMC4zNDg2IC0wLjA3OTYsLTAuNzY4MiAtMC4xNDM3LC0xLjI0OTggbCAtMS40NTcsMC4xODQzIHogbSAwLjEyNjcsMS4xODYzIDAuMTM3MiwxLjU0MTIgMS4xMDk1LC0xLjA2OSAtMC41MDk3LC0wLjUzMjYgLTAuNzM3LDAuMDYwNCB6IG0gMS4yNDY3LDAuNDcyMiBjIDAuNzIxNywtMC42OTUgMS40NDQsLTEuMzkxMiAyLjE2NTcsLTIuMDg2NiBsIC0xLjAxOTQsLTEuMDY1MiBjIC0wLjcyMTcsMC42OTUzIC0xLjQ0MzksMS4zOTE1IC0yLjE2NTYsMi4wODY2IGwgMS4wMTkzLDEuMDY1MiB6IG0gMi4xNjU3LC0yLjA4NjYgMS42MTkxLC0xLjU2MDEgLTEuMDE5MywtMS4wNjUzIC0xLjYxOTIsMS41NjAyIDEuMDE5NCwxLjA2NTIgeiBtIDEuNjE5MSwtMS41NjAxIGMgMS4xNjg3LC0xLjEyNiAyLjIzNjMsLTIuMTQ5IDMuNDIxMiwtMi44NDggbCAtMC43NDg0LC0xLjI3MjggYyAtMS4zMjY2LDAuNzgyNyAtMi40NTYyLDEuODY0NyAtMy42OTIxLDMuMDU1NSBsIDEuMDE5MywxLjA2NTMgeiBtIDMuNDIxMiwtMi44NDggYyAxLjEzOTUsLTAuNjcyNCAyLjQyNDcsLTEuMDYyMiA0LjA5NDMsLTAuOTgzMyBsIDAuMDY5MiwtMS40NzQxIGMgLTEuOTk3MywtMC4wOTQ0IC0zLjU0MDIsMC4zNzUzIC00LjkxMTksMS4xODQ2IGwgMC43NDg0LDEuMjcyOCB6IG0gNC4wOTQzLC0wLjk4MzMgYyAxLjgwMTcsMC4wODQ3IDMuNzQ3NywwLjg1OCA1LjM2NTQsMi4wNTE0IGwgMC44NzU0LC0xLjE4NiBjIC0xLjg0MjUsLTEuMzU5MiAtNC4wNzk5LC0yLjI0MDggLTYuMTcxNiwtMi4zMzk1IGwgLTAuMDY5MiwxLjQ3NDEgeiBtIDUuMzY1NCwyLjA1MTQgYyAxLjU0MzgsMS4xMzg3IDIuNzc0NiwyLjY0OTUgMy4yNzQ2LDQuMjkzNiBsIDEuNDExMSwtMC40MjYzIGMgLTAuNTk3MywtMS45NjMzIC0yLjAyNzksLTMuNzM4MyAtMy44MTAzLC01LjA1MzMgbCAtMC44NzU0LDEuMTg2IHogbSAzLjI3NDYsNC4yOTM2IGMgMC4xNzI0LDAuNTY3NSAwLjM0NSwxLjEzNTYgMC41MTcxLDEuNzAyOCBsIDEuNDExLC0wLjQyNjMgYyAtMC4xNzIsLTAuNTY3MiAtMC4zNDQ3LC0xLjEzNTMgLTAuNTE3LC0xLjcwMjggbCAtMS40MTExLDAuNDI2MyB6IG0gMC41MTcxLDEuNzAyOCBjIDAuMjAwMSwwLjY2MDUgMC40MDEzLDEuMzIxOCAwLjYwMTgsMS45ODIgbCAxLjQxMSwtMC40MjY0IGMgLTAuMjAwNCwtMC42NjAxIC0wLjQwMTYsLTEuMzIxNSAtMC42MDE4LC0xLjk4MTkgbCAtMS40MTEsMC40MjYzIHogbSAwLjYwMTgsMS45ODIgMC4xOTIxLDAuNjMyMSAwLjY0ODYsLTAuMTIyNyAtMC4xMzUyLC0wLjcyMjYgLTAuNzA1NSwwLjIxMzIgeiBtIDAuODQwNywwLjUwOTQgYyAyLjk4NDYsLTAuNTY0MSA2LjIzNDgsLTAuNzYxMSA5LjM1ODMsLTAuNDMzNyBsIDAuMTQ0LC0xLjQ2MjcgYyAtMy4yNjU4LC0wLjM0MjQgLTYuNjU5NCwtMC4xMzY5IC05Ljc3MjcsMC40NTEzIGwgMC4yNzA0LDEuNDQ1MSB6IG0gOS4zNTgzLC0wLjQzMzcgYyAyLjc0NDIsMC4yODc3IDUuMzkwOSwwLjk4NDQgNy42NjYsMi4xOTgyIGwgMC42OTExLC0xLjMwMTYgYyAtMi40NDQzLC0xLjMwNDMgLTUuMjc4NywtMi4wNTE1IC04LjIxMzEsLTIuMzU5MyBsIC0wLjE0NCwxLjQ2MjcgeiBtIDcuNjY2LDIuMTk4MiBjIDMuMzMyNCwxLjc3ODUgNS44MzUxLDQuNDA1NCA3LjYzNzEsNy41MjY5IGwgMS4yNzg0LC0wLjczMTQgYyAtMS45MzYzLC0zLjM1MzkgLTQuNjMwNiwtNi4xNzkyIC04LjIyNDQsLTguMDk3MSBsIC0wLjY5MTEsMS4zMDE2IHogbSA3LjYzNzEsNy41MjY5IDAsMC4wMDMgMC42MzkyLC0wLjM2ODUgLTAuNjM5MiwwLjM2NTcgeiBtIDAsMC4wMDMgYyAyLjA1OTEsMy41NjY2IDMuMjEyNSw3Ljc3NDkgMy42NTE2LDEyLjEwOTkgbCAxLjQ2MjcsLTAuMTM4MyBjIC0wLjQ2MDQsLTQuNTQ0NSAtMS42NzE5LC04Ljk2MDQgLTMuODM1OSwtMTIuNzA4NiBsIC0xLjI3ODQsMC43MzcgeiBtIDMuNjUxNiwxMi4xMDk5IGMgMC4zNTc3LDMuNTMyOCAwLjE1OTYsOC4zNTA5IC0wLjU4LDEzLjAxMDcgbCAxLjQ1MTQsMC4yMzAyIGMgMC43NTg1LC00Ljc3ODkgMC45NjA0LC05LjczNDIgMC41OTEzLC0xMy4zNzkyIGwgLTEuNDYyNywwLjEzODMgeiBtIC0wLjU4LDEzLjAxMDcgYyAtMC42NTIyLDQuMTEwMyAtMS43MjUxLDguMDg1MyAtMy4yMDU3LDEwLjkxOTEgbCAxLjMwNzQsMC42Nzk3IGMgMS41NTM3LC0yLjk3MzggMi42NzM5LC03LjEwOSAzLjM0OTcsLTExLjM2ODYgbCAtMS40NTE0LC0wLjIzMDIgeiBtIC0zLjIwNTcsMTAuOTE5MSBjIC0wLjExNTksMC4yMjIyIC0wLjMwODYsMC40NjQ2IC0wLjU1NjEsMC43MDg5IGwgMS4wMzA3LDEuMDU0IGMgMC4zNTU0LC0wLjM1MTMgMC42NDM0LC0wLjcyIDAuODMyOCwtMS4wODMyIGwgLTEuMzA3NCwtMC42Nzk3IHogbSAtMC41NTYxLDAuNzA4OSBjIC0wLjYzMTksMC42MjM0IC0xLjU3MDcsMS4yMTM4IC0yLjU0MywxLjU0ODMgbCAwLjQ3NzksMS4zOTM1IGMgMS4xODEsLTAuNDA2MiAyLjMyMzksLTEuMTI2MiAzLjA5NTgsLTEuODg3OCBsIC0xLjAzMDcsLTEuMDU0IHogbSAtMi41NDMsMS41NDgzIGMgLTAuOTAyLDAuMzEwNCAtMS44MTEsMC4zOTYgLTIuNDYwMiwwLjA1NjcgbCAtMC42Nzk3LDEuMzA3MyBjIDEuMDQ3NCwwLjU0NzQgMi4zNjY2LDAuNDU5OCAzLjYxNzgsMC4wMjk1IGwgLTAuNDc3OSwtMS4zOTM1IHogbSAtMi40NjAyLDAuMDU2NyBjIC0wLjEzNiwtMC4wNzA5IC0wLjI2MywtMC4xNjMzIC0wLjM3NTgsLTAuMjc3OCBsIC0xLjA1NCwxLjAzMDcgYyAwLjIyNTcsMC4yMjg3IDAuNDc4MiwwLjQxMjcgMC43NTAxLDAuNTU0NCBsIDAuNjc5NywtMS4zMDczIHogbSAtMC4zNzU4LC0wLjI3NzggYyAtMC42MDI3LC0wLjYxMDkgLTEuMTMxNiwtMS4zODMzIC0xLjY2MTcsLTIuMTU3NyBsIC0xLjIxNDksMC44Mjk0IGMgMC41NzI2LDAuODM2OCAxLjE0NDMsMS42NzEzIDEuODIyNiwyLjM1OSBsIDEuMDU0LC0xLjAzMDcgeiBtIC0xLjY2MTcsLTIuMTU3NyBjIC0wLjY5NzMsLTEuMDE4NSAtMS4zOTc4LC0yLjA0MTUgLTIuMzA0NiwtMi44MTYyIGwgLTAuOTU1OCwxLjEyMyBjIDAuNzY2OCwwLjY1NTEgMS40MDc3LDEuNTkxMSAyLjA0NTUsMi41MjI2IGwgMS4yMTQ5LC0wLjgyOTQgeiBtIC0yLjMwNDYsLTIuODE2MiBjIC0xLjExLC0wLjk0ODUgLTIuMzk2OSwtMS40NjQ3IC0zLjU5MiwtMS45NDQgbCAtMC41NDcxLDEuMzcwMiBjIDEuMDg2OCwwLjQzNTcgMi4yNTY5LDAuOTA1NCAzLjE4MzMsMS42OTY4IGwgMC45NTU4LC0xLjEyMyB6IG0gLTMuNTkyLC0xLjk0NCBjIC0wLjIwODQsLTAuMDgzNCAtMC40MTI4LC0wLjE2NTYgLTAuNTQyNiwtMC4yMTg5IGwgLTAuNTU4NCwxLjM2NDYgYyAwLjIyOSwwLjA5NDEgMC4zOTIsMC4xNTk2IDAuNTUzOSwwLjIyNDUgbCAwLjU0NzEsLTEuMzcwMiB6IG0gLTAuNTQyNiwtMC4yMTg5IC0wLjcwMzgsLTAuMjkgLTAuMjY2NSwwLjcxODkgMC42OTExLDAuMjUzNCAwLjI3OTIsLTAuNjgyMyB6IG0gLTAuOTcwMywwLjQyODkgYyAtMC40NzY1LDEuMjg2OSAtMS4wNjEzLDIuNDM2NCAtMS43MzgyLDMuNTE3IGwgMS4yNDk1LDAuNzgyOSBjIDAuNzI0MywtMS4xNTYgMS4zNTMsLTIuMzk0NCAxLjg3MDksLTMuNzkzMSBsIC0xLjM4MjIsLTAuNTA2OCB6IG0gLTEuNzM4MiwzLjUxNyBjIC0wLjY4NCwxLjA5MjEgLTEuNDU5NSwyLjEwOTUgLTIuMzExMSwzLjEyNDMgbCAxLjEyODgsMC45NDQ1IGMgMC44OTg2LC0xLjA3MDkgMS43MTQ5LC0yLjE0MTYgMi40MzE4LC0zLjI4NTkgbCAtMS4yNDk1LC0wLjc4MjkgeiBtIC0yLjMxMTEsMy4xMjQzIGMgLTAuNjU3OSwwLjc4MzUgLTEuMjk2MywxLjM3MDMgLTEuOTg1NiwxLjg5NTIgbCAwLjg5MjMsMS4xNjkgYyAwLjc3MzMsLTAuNTg5IDEuNDg3OSwtMS4yNDU1IDIuMjIyMSwtMi4xMTk3IGwgLTEuMTI4OCwtMC45NDQ1IHogbSAtMS45ODU2LDEuODk1MiBjIC0wLjY4OCwwLjUyNDIgLTEuNDY5OCwxLjAxNTQgLTIuMzgyLDEuNTg2MyBsIDAuNzgyOSwxLjI0OTUgYyAwLjkyMzYsLTAuNTc4MiAxLjcxNjQsLTEuMDc2MyAyLjQ5MTQsLTEuNjY2OCBsIC0wLjg5MjMsLTEuMTY5IHogbSAtMi4zODIsMS41ODYzIGMgLTIuNTY5OSwxLjYwOTIgLTQuNzIzOSwzLjQ5ODggLTYuOTIxNCw1LjQyNjcgbCAwLjk2NzIsMS4xMTExIGMgMi4xNTEyLC0xLjg4NzMgNC4yNTk5LC0zLjczNjkgNi43MzcxLC01LjI4ODMgbCAtMC43ODI5LC0xLjI0OTUgeiBtIC02LjkyMTQsNS40MjY3IGMgLTAuOTI1MiwwLjgxMTIgLTEuODU4NiwxLjYzMDIgLTIuOTAyMSwyLjQ5MDUgbCAwLjkzODksMS4xNDAxIGMgMC45NjU3LC0wLjc5NjMgMS45NTI4LC0xLjY2MiAyLjkzMDQsLTIuNTE5NSBsIC0wLjk2NzIsLTEuMTExMSB6IG0gLTIuOTAyMSwyLjQ5MDUgYyAtNC44Njc2LDQuMDEzNSAtOS4zNzU2LDUuOTU4MSAtMTQuMTY0MSw2LjI1OTcgbCAwLjA5MjQsMS40NzQgYyA1LjExMDMsLTAuMzIxNyA5Ljg4ODQsLTIuMzcwMyAxNS4wMTA2LC02LjU5MzYgbCAtMC45Mzg5LC0xLjE0MDEgeiBtIC0xNC4xNjQxLDYuMjU5NyBjIC00LjgyNCwwLjMwMzYgLTkuOTc4OCwtMS4wNDc0IC0xNi4wOTg4LC0zLjYyMzUgbCAtMC41NzA0LDEuMzU4OSBjIDYuMzI3LDIuNjYzMiAxMS42ODY3LDQuMDU3OCAxNi43NjE2LDMuNzM4NiBsIC0wLjA5MjQsLTEuNDc0IHogTSAxMTQuOTY3MywxNjQuODcgYyAtMi44ODQzLC0xLjIxMzggLTUuMDE4OCwtMi42NDE5IC02Ljg3MDksLTQuMzU0NiBsIC0wLjk5NjEsMS4wODI4IGMgMS45NzQ5LDEuODI2NCA0LjI0MjksMy4zNDU1IDcuMjk2Niw0LjYzMDcgbCAwLjU3MDQsLTEuMzU4OSB6IG0gLTYuODcwOSwtNC4zNTQ2IGMgLTEuODY2MSwtMS43MjU3IC0zLjQ3MDUsLTMuNzY0NCAtNS4yNjk2LC02LjE3MTMgbCAtMS4xODA0LDAuODgxIGMgMS44NDI4LDIuNDY1MyAzLjQ5MzIsNC41NTk4IDUuNDUzOSw2LjM3MzEgbCAwLjk5NjEsLTEuMDgyOCB6IG0gLTUuMjY5NiwtNi4xNzEzIC0wLjIwODEsLTAuMjc4NiAtMC4zNDQ3LC0wLjAxNzkgLTAuMDM3NCwwLjczNyAwLjU5MDIsLTAuNDQwNSB6IG0gLTAuNTUyOCwtMC4yOTY1IGMgLTEuMDI1LC0wLjA1MzMgLTEuODgzMywtMC4xNzcyIC0yLjczNjgsLTAuNTE4NSBsIC0wLjU0NzEsMS4zNzAzIGMgMS4wMzM1LDAuNDEzMyAyLjAzMjcsMC41NjEzIDMuMjA5MSwwLjYyMjIgbCAwLjA3NDgsLTEuNDc0IHogbSAtMi43MzY4LC0wLjUxODUgYyAtMC44NjY2LC0wLjM0NjMgLTEuNzU5OCwtMC45MjYgLTIuODU0LC0xLjg5MTggbCAtMC45NzM0LDEuMTA1NSBjIDEuMjMxNywxLjA4NzEgMi4yNTk1LDEuNzQ4NCAzLjI4MDMsMi4xNTY2IGwgMC41NDcxLC0xLjM3MDMgeiBtIC0yLjg1NCwtMS44OTE4IGMgLTAuODQyNywtMC43NDM1IC0xLjY2MzksLTEuNTA1MiAtMi40NzAxLC0yLjI4NSBsIC0xLjAyNSwxLjA1OTYgYyAwLjgwOSwwLjc4MjYgMS42NDcsMS41NTkzIDIuNTIxNywyLjMzMDkgbCAwLjk3MzQsLTEuMTA1NSB6IG0gLTIuNDcwMSwtMi4yODUgLTAuMDAyOCwtMC4wMDMgLTAuNTA5NywwLjUzMjYgMC41MTI1LC0wLjUyOTggeiBtIC0wLjAwMjgsLTAuMDAzIGMgLTAuNzk4NSwtMC43NzIyIC0xLjU3ODMsLTEuNTU5MSAtMi4zNDU0LC0yLjM1OTkgbCAtMS4wNjUyLDEuMDE5NCBjIDAuNzc5OCwwLjgxNDEgMS41NzQ2LDEuNjE2IDIuMzkxMywyLjQwNTcgbCAxLjAxOTMsLTEuMDY1MiB6IG0gLTIuMzQ1NCwtMi4zNTk5IC0wLjQxNzUsLTAuMjE2IC0wLjExNTEsMC43MjU3IDAuNTMyNiwtMC41MDk3IHogbSAtMC40MTc1LC0wLjIxNiBDIDg1LjY4NiwxNDUuODU1MyA4MS4wMTcsMTQ0Ljg0NzYgNzYuODQ3LDE0My4yMzI0IGwgLTAuNTI5NiwxLjM3NjUgYyA0LjI2MzQsMS42NTEyIDkuMDI2MSwyLjY3OTkgMTQuODk5OCwzLjYxNTkgbCAwLjIzMDIsLTEuNDUxNCB6IG0gLTE0LjYwMDQsLTMuNTQxIGMgLTQuMTM0MSwtMS42MDEzIC03Ljc4MjYsLTMuODA4NyAtMTEuNTM1MSwtNy4xMzU0IGwgLTAuOTczNCwxLjEwNTUgYyAzLjg5MiwzLjQ1MDYgNy42ODA4LDUuNzQxNiAxMS45Nzg5LDcuNDA2NCBsIDAuNTI5NiwtMS4zNzY1IHogTSA2NS4zMTE5LDEzNi4wOTcgYyAtMS41MjA1LC0xLjM0NzkgLTIuODMxOCwtMi43NjY2IC0zLjk3NTYsLTQuMjY0NCBsIC0xLjE2OSwwLjg5MjMgYyAxLjIwNSwxLjU3ODMgMi41ODEsMy4wNjggNC4xNzEyLDQuNDc3NiBsIDAuOTczNCwtMS4xMDU1IHogbSAtMy45NzU2LC00LjI2NDQgYyAtMS4xNDQzLC0xLjQ5ODQgLTIuMTI3NiwtMy4wODUgLTIuOTkxMSwtNC43NjcxIGwgLTEuMzEzLDAuNjY3OSBjIDAuOSwxLjc1MzIgMS45MzA0LDMuNDEzNyAzLjEzNTEsNC45OTE1IGwgMS4xNjksLTAuODkyMyB6IG0gLTIuOTkxMSwtNC43NjcxIC0wLjEwOTQsLTAuMTU4NCAtMC41NDcxLDAuNDkyNCAwLjY1NjUsLTAuMzM0IHogbSAtMC4xMDk0LC0wLjE1ODQgYyAtMC44MzgyLC0wLjkyNjEgLTEuNjc0NywtMS44NjQ5IC0yLjU3MTksLTIuNjcyNSBsIC0wLjk4NDcsMS4wOTk4IGMgMC44NjYyLDAuNzgwMSAxLjY2MzQsMS42NzQ1IDIuNDYyNCwyLjU1NzQgbCAxLjA5NDIsLTAuOTg0NyB6IG0gLTIuNTcxOSwtMi42NzI1IGMgLTAuOTQwNSwtMC44NDY3IC0xLjk2MDEsLTEuNTY2NyAtMy4xMzg1LC0yLjAyMDYgbCAtMC41Mjk1LDEuMzc2NiBjIDAuOTgzMywwLjM3ODcgMS44NjAxLDEuMDAyOCAyLjY4MzMsMS43NDM4IGwgMC45ODQ3LC0xLjA5OTggeiBtIC0zLjEzODUsLTIuMDIwNiAtMC4wMDI4LDAgLTAuMjYxOSwwLjY4ODMgMC4yNjQ3LC0wLjY4ODMgeiBtIC0wLjAwMjgsMCBjIC0wLjk0NTcsLTAuMzYzNCAtMS40MDgsLTAuNTQ1NiAtMS45MzE4LC0wLjMyMzcgbCAwLjU3MDMsMS4zNTkgYyAwLjAyMzgsLTAuMDEgMC4yNjE0LDAuMTE5OSAwLjgzNzYsMC4zNDEzIGwgMC41MjM5LC0xLjM3NjYgeiBtIC0xLjkzMTgsLTAuMzIzNyAtMC4wMDI5LDAuMDAzIDAuMjg4LDAuNjc2NiAtMC4yODUxLC0wLjY3OTUgeiBtIC0wLjAwMjksMC4wMDMgYyAtMC41NTI0LDAuMjM0NCAtMC43MDY2LDAuNjg4MiAtMS4wNDg1LDEuNjAwNyBsIDEuMzgyMiwwLjUxMjUgYyAwLjE5NDEsLTAuNTE4NyAwLjE5MDIsLTAuNzM3OSAwLjI0MjMsLTAuNzYgbCAtMC41NzYsLTEuMzUzMiB6IG0gLTEuMDQ4NSwxLjYwMDcgLTAuMTkyMiwwLjUxMzMgMC40NDI4LDAuMzMzMSAwLjQ0MDUsLTAuNTkwMiAtMC42OTExLC0wLjI1NjIgeiBtIDAuMjUwNiwwLjg0NjQgYyAxLjM1NDQsMS4wMTc3IDEuNDgyOCwzLjA0NDQgMS42MDYxLDQuOTk2NCBsIDEuNDc0LC0wLjA5MjQgYyAtMC4xNDQsLTIuMjgyNSAtMC4yOTQ1LC00LjY1MzEgLTIuMTk5MSwtNi4wODQzIGwgLTAuODgxLDEuMTgwMyB6IG0gMS42MDYxLDQuOTk2NCBjIDAuMDE1OSwwLjI1NTQgMC4wMzIzLDAuNTA5MyAwLjA0NjIsMC43MDMgbCAxLjQ3NCwtMC4xMDM4IGMgLTAuMDE5MywtMC4yNjY3IC0wLjAzMjksLTAuNDc5OSAtMC4wNDYyLC0wLjY5MTYgbCAtMS40NzQsMC4wOTI0IHogbSAwLjA0NjIsMC43MDMgMC4wNTI0LDAuNzE5MSAwLjcxOTIsLTAuMDM0IC0wLjAzNDYsLTAuNzM3IC0wLjczNywwLjA1MTkgeiBtIDAuNzcxNiwwLjY4NTEgYyAxLjIxNTgsLTAuMDU3OCAxLjc2OTcsLTAuOTE1NiAyLjM2NzIsLTEuODQwOCBsIC0xLjIzODIsLTAuNzk0OSBjIC0wLjM4MTgsMC41OTEzIC0wLjczNjEsMS4xMzk4IC0xLjE5ODIsMS4xNjE3IGwgMC4wNjkyLDEuNDc0IHogbSAyLjM2NzIsLTEuODQwOCBjIDAuMTY2NywtMC4yNTgzIDAuMzM4NSwtMC41MjQyIDAuNTIwMiwtMC43NTM1IGwgLTEuMTUxNSwtMC45MTU2IGMgLTAuMjI5LDAuMjg5MiAtMC40MjA2LDAuNTg1NyAtMC42MDY5LDAuODc0MiBsIDEuMjM4MiwwLjc5NDkgeiBtIDAuNjY0MiwtMS4zNjk3IC0wLjMzNzEsLTEuNTA4MyAtMC45NTg0LDEuMjA4OSAwLjU3NTcsMC40NTc4IDAuNzE5OCwtMC4xNTg0IHogbSAtMS40Mzk1LDAuMzE2OSBjIDAuMjQ4OSwxLjExMzEgMC40Mzk3LDIuNTcyNyAwLjE3MDEsMy43Njc1IGwgMS40MzM4LDAuMzIyNiBjIDAuMzI5NCwtMS40NTkzIDAuMTE4MiwtMy4xNDI4IC0wLjE2NDQsLTQuNDA3IGwgLTEuNDM5NSwwLjMxNjkgeiBtIDAuMTcwMSwzLjc2NzUgYyAtMC4xNzEyLDAuNzU5NyAtMC41MzgsMS40MTI4IC0xLjIyLDEuNzY2IGwgMC42NzM1LDEuMzEzIGMgMS4xMjc2LC0wLjU4NDIgMS43MTg5LC0xLjU5NjggMS45ODAzLC0yLjc1NjQgbCAtMS40MzM4LC0wLjMyMjYgeiBtIC0xLjIyLDEuNzY2IC0wLjU4MjgsMC4zMDE5IDAuMjI4NCwwLjYxMDggMC42OTExLC0wLjI1NjIgLTAuMzM2NywtMC42NTY1IHogbSAtMC4zNTQ0LDAuOTEyNyBjIDAuMTA4OSwwLjI5MTIgMC4yNjc0LDAuNjk1NCAwLjQzMDMsMS4xMTA3IGwgMS4zNzAzLC0wLjUzNTggYyAtMC4xMjc1LC0wLjMyNTEgLTAuMjU1NCwtMC42NTIgLTAuNDE4NCwtMS4wODc0IGwgLTEuMzgyMiwwLjUxMjUgeiBtIDAuNDMwMywxLjExMDcgYyAwLjIxNzIsMC41NTQ0IDAuNDQwMywxLjEyMyAwLjY3NSwxLjc5MDkgbCAxLjM5MzUsLTAuNDgzNiBjIC0wLjIwOTgsLTAuNTk2NyAtMC40NTc1LC0xLjIyODMgLTAuNjk4MiwtMS44NDMxIGwgLTEuMzcwMywwLjUzNTggeiBtIDEuMjQ3OSwyLjI3NDggMS4yMzY0LDAuMjE0NSAtMC40MTU4LC0xLjE4MiAtMC42OTY4LDAuMjQxOCAtMC4xMjM4LDAuNzI1NyB6IG0gMC4yNDc3LC0xLjQ1MTQgYyAtMS40MjcyLC0wLjI0NzcgLTQuNTcwMywtMi4wMTE0IC02Ljg1MTksLTQuMzc5NSBsIC0xLjA2NTMsMS4wMTkzIGMgMi40ODkxLDIuNTgzNSA2LjAyNDUsNC41MjYxIDcuNjY5NSw0LjgxMTYgbCAwLjI0NzcsLTEuNDUxNCB6IG0gLTYuODUxOSwtNC4zNzk1IGMgLTAuODI2OSwtMC44NTgzIC0xLjUyNzksLTEuNzg1MyAtMS45NzA2LC0yLjczIGwgLTEuMzM1NywwLjYxNjIgYyAwLjUyMTgsMS4xMTM1IDEuMzE2NywyLjE3MzYgMi4yNDEsMy4xMzMxIGwgMS4wNjUzLC0xLjAxOTMgeiBtIC0xLjk3MDYsLTIuNzMgYyAtMC40MjI0LC0wLjkwMDkgLTAuNjE1MiwtMS44MjMgLTAuNDU5OCwtMi43MTgyIGwgLTEuNDUxNCwtMC4yNDc3IGMgLTAuMjEwNiwxLjIxMzIgMC4wMzI2LDIuNDI0MiAwLjU3NTUsMy41ODIxIGwgMS4zMzU3LC0wLjYxNjIgeiBtIC0wLjQ1OTgsLTIuNzE4MiBjIDAuMTQwOSwtMC44MTMyIDAuNTc3NywtMS42MzA4IDEuNDAwMywtMi40MjMzIGwgLTEuMDE5NCwtMS4wNjUzIGMgLTEuMDY2MywxLjAyNzYgLTEuNjM4NywyLjEyMzcgLTEuODMyMywzLjI0MDkgbCAxLjQ1MTQsMC4yNDc3IHogbSAxLjQwMDMsLTIuNDIzMyAwLjIwNDQsLTAuMzU2OSAtMC43MTQxLC0wLjE3NTggMC41MDk3LDAuNTMyNyB6IG0gMC4yMDQ0LC0wLjM1NjkgYyAwLjE4NzEsLTAuNzYxNCAwLjM1NDksLTEuNDA1MSAwLjUzNzQsLTEuOTg2OCBsIC0xLjQwNDgsLTAuNDM3NyBjIC0wLjE5MDIsMC42MDYxIC0wLjM2NTQsMS4yNzgyIC0wLjU2MDcsMi4wNzMgbCAxLjQyODEsMC4zNTE1IHogbSAwLjUzNzQsLTEuOTg2OCBjIDAuMTc0NiwtMC41NTY1IDAuMzY1MSwtMS4wNTY4IDAuNjA0MSwtMS41NTQgbCAtMS4zMywtMC42MzMyIGMgLTAuMjY2OCwwLjU1NSAtMC40ODA4LDEuMTE4NSAtMC42Nzg5LDEuNzQ5NSBsIDEuNDA0OCwwLjQzNzcgeiBtIDAuNjA0MSwtMS41NTQgYyAwLjUzMDEsLTEuMTAyNiAxLjM2ODgsLTEuNzczOSAyLjMzNTQsLTIuMDg0MyBsIC0wLjQ0OSwtMS40MDQ4IGMgLTEuMzM2MiwwLjQyOTEgLTIuNDkxOSwxLjM0OSAtMy4yMTY0LDIuODU1OSBsIDEuMzMsMC42MzMyIHogbSAyLjMzNTQsLTIuMDg0MyBjIDEuMTI3NywtMC4zNjIgMi40Mzk4LC0wLjI1MTEgMy42NjU1LDAuMjI2OCBsIDAuNTM1OCwtMS4zNzAzIGMgLTEuNTMyNCwtMC41OTc1IC0zLjE5NSwtMC43Mjg1IC00LjY1MDMsLTAuMjYxMyBsIDAuNDQ5LDEuNDA0OCB6IG0gMy42NjU1LDAuMjI2OCAxLjI3OTksMC40OTkyIC0wLjI5MjMsLTEuMzM5NyAtMC43MTk3LDAuMTU1NCAtMC4yNjc5LDAuNjg1MSB6IG0gMC45ODc2LC0wLjg0MDUgYyAtMC4zNDcyLC0xLjU5MjggLTAuNTU2NywtMy4yNjIxIC0wLjYyNywtNS4xNDc0IGwgLTEuNDc0LDAuMDUxNiBjIDAuMDczNCwxLjk2ODYgMC4yOTQ1LDMuNzIyNCAwLjY2MTYsNS40MDY1IGwgMS40Mzk0LC0wLjMxMDcgeiBtIC0wLjYyNywtNS4xNDc0IGMgLTAuMDcsLTEuODg1OSAwLjAwMTQsLTQuMDAxNyAwLjIxNDksLTYuNDg3MSBsIC0xLjQ3NDEsLTAuMTIwOCBjIC0wLjIxNjUsMi41MjA2IC0wLjI4OCw0LjY5MTkgLTAuMjE0OCw2LjY1OTUgbCAxLjQ3NCwtMC4wNTE2IHogbSAwLjIxNDksLTYuNDg3MSBjIDAuMDU0NCwtMC42MzI3IDAuMTE5NiwtMS4yMTU1IDAuMTk0NCwtMS43NDg0IGwgLTEuNDU3LC0wLjE5NTYgYyAtMC4wOTI3LDAuNjYxMyAtMC4xNjQxLDEuMjcwOCAtMC4yMTE1LDEuODIzMiBsIDEuNDc0MSwwLjEyMDggeiBtIDAuMTk0NCwtMS43NDg0IGMgMC4wODI1LC0wLjU4NzMgMC4xODM0LC0xLjE4ODMgMC4zMDA1LC0xLjc5OTIgbCAtMS40NDUxLC0wLjI3NjYgYyAtMC4xMTg1LDAuNjE3NiAtMC4yMjM0LDEuMjQ0NyAtMC4zMTI0LDEuODgwMiBsIDEuNDU3LDAuMTk1NiB6IG0gMC4zMDA1LC0xLjc5OTIgLTAuMDMxNSwtMC4zOTE3IC0wLjY5MTEsMC4yNTM0IgogICAgICAgaWQ9InBhdGg2OCIKICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgIGQ9Im0gOTEuNzM2OCwxNDYuMzI1MyAtOS43MDM5LC0xLjU3NyAtOC44NTQ4LC0zLjg4MTQgLTcuNTIwNiwtNC43MzA4IC03LjE1NjYsLTguNzMzNSAtNC4wNDMxLC00LjI4MiAtMy45MDkzLC0xLjQ0MDkgLTEuMDM0LDIuNTI3MSAxLjgwNzksMi42MDk2IDAuNDA2MiwzLjY4MDIgMS4yMTEsLTAuMDQ4OCAxLjMyMzIsLTEuMjA2OSAtMC4zNTY5LDMuNzQ4OCAtMS40NjY3LDAuOTgzOSAwLjA0NDUsMS40Mjg2IC0zLjQ3NDQsLTEuOTY1NSAtMy4xNDYyLC0zLjcxMiAtMC42NTU5LC0zLjMxNzYgMS4zNDUzLC0yLjY1NjcgMS4yNTQ5LC00LjUxMzMgMi41NTIxLC0xLjIwODQgMi42ODQ3LDAuMTMxOCAyLjU0NTUsMS40NzkxIC0xLjY5OCwtOC42MTIyIDEuNjk4LC05LjU4MjUgLTEuODY5MiwtNC40MjQ2IC02LjEyMjMsLTYuNTk2NSAxLjA4ODUsLTMuOTQxIDIuOTAwMiwtNC41NjY5IDUuNDY4OCwtMy44NDg2IDIuOTAwNywtMC4zOTY5IDMuMjI1LC0wLjEwOTQgLTIuMDEyLC04LjI2MDEgNy4zOTkzLC0zLjAzMjYgOS4yMTg4LC0xLjIxMjkgMy4xNTM1LDIuMDYxOSAwLjI0MjcsNS41Nzk3IDMuNTE3OCw1LjgyMjQgMC4yNDI2LDQuNjA5NCA4LjQ5MDksLTAuNjA2NiA3Ljg4NDMsMC43Mjc5IC03Ljg4NDMsLTQuNzMwNyAxLjMzNDMsLTUuNzAxIDQuOTczMSwtNy43NjMgNC44NTIxLC0yLjA2MjIgMy44ODE0LDEuNTc2OSAxLjU3NywzLjE1MzggOC4xMjY5LDYuMTg2MSAxLjU3NjksLTEuMzM0MyAxMi43MzYzLC0wLjQ4NSAyLjU0NzMsMi4wNjE5IDAuMjQyNiwzLjYzOTEgLTAuODQ5LDEuNTc2NyAtMC42MDY2LDkuODI1MSAtNC4yNDU0LDguNDkwOSAwLjcyNzYsMy43NjA1IDIuNTQ3NSwtMS4zMzQzIDcuMTU2NiwtNi42NzE2IDMuNTE3NSwtMC4yNDI0IDMuODgxNSwxLjU3NjkgMy44ODE4LDIuOTEwOSAxLjk0MDYsNi4zMDc3IDExLjQwMjEsLTAuNzI3NyA2LjkxNCwyLjY2ODYgNS41Nzk3LDUuMjE1NyA0LjAwMjgsNy41MjA2IDAuOTcwNiw4Ljg1NDYgLTAuODQ5MywxMC4zMTA1IC0yLjE4MzIsOS4yMTg1IC0yLjE4MzYsMi45MTEyIC0zLjAzMjIsMC45NzA2IC01LjMzNzMsLTUuODIyNCAtNC44NTE4LC0xLjY5ODIgLTQuMjQ1NSw3LjAzNTMgLTQuMjQ1NCwzLjg4MTUgLTIuMzA0OSwxLjQ1NTYgLTkuMjE4NSw3LjY0MTkgLTcuMzk5Myw0LjAwMjggLTcuMzk5MywwLjYwNjYgLTguNjExOSwtMS40NTU2IC03LjUyMDYsLTIuNzg5OSAtNS4yMTU4LC00LjI0NTQgLTQuMTI0MSwtNC45NzM0IC00LjI0NTQsLTEuMjEyOSAtNy4zOTkzLC03LjAzNTMgeiIKICAgICAgIGlkPSJwYXRoNzAiCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZjAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMWYxOTE3O3N0cm9rZS13aWR0aDowLjIxNjAwMDAxO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1vcGFjaXR5OjE7c3Ryb2tlLWRhc2hhcnJheTpub25lIiAvPjxwYXRoCiAgICAgICBkPSJtIDYzLjU5MywxMjQuNDMzMyBjIC04LjMxMjMsLTkuNjk0OCAtNi40NjU4LC0yMS40NTMyIC00LjE2MjEsLTMyLjk3MjkgLTEuMjI5NCwzLjEwNjIgLTIuNDU5MSw2LjIxMjEgLTMuNjg4NCw5LjMxODMgLTAuNDUzLDIuODQ3NCAtMC45MDYsNS42OTQ4IC0xLjM1OSw4LjU0MjIgMC4xMjkzLDIuOTEyMSAwLjI1ODgsNS44MjQxIDAuMzg4NCw4LjczNjEgMS4xNjQ3LDIuNzgyNSAyLjMyOTUsNS41NjUgMy40OTQyLDguMzQ3OCAxLjc0NzMsMi41ODgzIDMuNDk0Niw1LjE3NjkgNS4yNDE5LDcuNzY1NSAyLjcxNzgsMi4yNjQ5IDUuNDM1Nyw0LjUyOTggOC4xNTM1LDYuNzk0NiAyLjk3NjcsMS4yMjk0IDUuOTUzNiwyLjQ1OTEgOC45MzAzLDMuNjg4NSAzLjQ5NDMsMC40NTMgNi45ODg4LDAuOTA1OSAxMC40ODM0LDEuMzU4OSAtMy4yMzU4LC0zLjY4ODQgLTYuNDcxMiwtNy4zNzcyIC05LjcwNywtMTEuMDY1NiAtNy43OTM4LC0yLjUyNzkgLTEyLjM5MDIsLTQuMjMwNCAtMTcuNzc1MiwtMTAuNTEzNCIKICAgICAgIGlkPSJwYXRoNzIiCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmNjO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICBkPSJtIDEwMi43MjMzLDE1My45NzIgYyAtNS43Nzg3LC01LjYzNzggLTguOTM1MSwtOS44ODk4IC0xMi42MTI1LC0xNi40OTExIC0yLjYzMDUsLTQuNzIyMyAtNS41ODExLC05LjI3MDIgLTguMzQ2NiwtMTMuOTI2MyAtMS4zOTg5LC0yLjM1NjggLTEuNTMxLC00LjMzMzEgLTEuOTQ5MSwtNy4wNTA3IC0xLjM1ODksMS42MTc4IC0yLjcxNzgsMy4yMzU1IC00LjA3NjgsNC44NTMyIDAuNjQ3MiwxLjk0MTUgMS4yOTQzLDMuODgyOSAxLjk0MTUsNS44MjQxIDIuMjAwMiwzLjk0NzUgNC40MDA1LDcuODk1MSA2LjYwMDUsMTEuODQyMyA0LjY1OTMsNC41OTQ3IDkuMzE4Niw5LjE4OTEgMTMuOTc3OSwxMy43ODM3IDEuNDg4MiwwLjM4ODQgMi45NzY2LDAuNzc2NSA0LjQ2NTEsMS4xNjQ4IgogICAgICAgaWQ9InBhdGg3NCIKICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmY2M7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgIGQ9Im0gMTMxLjI2MTEsMTY3Ljk0OTYgYyAtNC42MjgxLC0xLjczNTMgLTEyLjMxNDMsLTIuMzA2OCAtMTIuODQ3NSwtNy42MTg5IC0wLjM3OTgsLTMuNzcyNCAwLjI4NDQsLTUuNjY3OSAyLjU1ODMsLTkuNjU5MSAtNS42MTYzLDUuODExNiAtNy4wMDUzLDQuOTEyMiAtMTcuODYwNSwzLjEwNjIgMS41NTMxLDIuMjAwMyAzLjEwNjIsNC40MDA1IDQuNjU5Myw2LjYwMDggMi43MTc4LDEuNjgyMyA1LjQzNiwzLjM2NSA4LjE1MzgsNS4wNDc0IDMuNDk0MywwLjc3NjYgNi45ODg5LDEuNTUzMSAxMC40ODM0LDIuMzI5NyAxLjYxNzcsMC4wNjQ3IDMuMjM1NSwwLjEyOTMgNC44NTMyLDAuMTkzOSIKICAgICAgIGlkPSJwYXRoNzYiCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmNjO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICBkPSJtIDE0NC4wMzIsOTYuMDk1NiBjIDEuNTQwOSwtMC45NTEgMS41MDc4LC0xLjY0MDEgMS4yNTAxLC0yLjI5MjEgMS4yMTU1LDAuNDg2NSAyLjQzMDcsMC45NzI2IDMuNjQ2MiwxLjQ1ODUgMC43ODc1LDEuMDU3MyAxLjU3NDcsMi4xMTQzIDIuMzYyMSwzLjE3MTkgMC41ODQ1LDEuNTA2NCAxLjE2OSwzLjAxMjcgMS43NTM1LDQuNTE5MyAtMC43NDY5LDAuNTYxNSAtMS40OTM1LDEuMTIzMSAtMi4yNDA1LDEuNjg0OSAtMy4yNjQxLC0wLjQxNjcgLTYuNTI4NCwtMC44MzM0IC05Ljc5MjUsLTEuMjUwMSAtMC4yNDMsLTAuNjU5OSAtMC40ODYyLC0xLjMxOTggLTAuNzI5NCwtMS45Nzk0IDAuMDY5NywtMC45Mzc3IDAuMTM5MiwtMS44NzUxIDAuMjA4NiwtMi44MTI4IDAuMzEyNCwtMC41NTU2IDAuNjI1MSwtMS4xMTE1IDAuOTM3NSwtMS42NjY4IDAuNDg2NCwtMC4yNDMyIDAuOTcyNSwtMC40ODY0IDEuNDU4NCwtMC43MjkzIDAuMzgyNCwtMC4wMzQ5IDAuNzY0MiwtMC4wNjk4IDEuMTQ2LC0wLjEwNDEiCiAgICAgICBpZD0icGF0aDc4IgogICAgICAgc3R5bGU9ImZpbGw6I2NjY2MwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgZD0ibSAxNDMuMTIwNCwxMTIuODQyNCBjIC00LjkwODUsLTEuNDE3IC00Ljg3MDIsLTEuODA3MyAtNi4zMTk4LC02LjY3NyAxLjkxMzYsMy4wNzAyIDMuMzMwNCw0LjYxOTYgNi4zMTk4LDYuNjc3IgogICAgICAgaWQ9InBhdGg4MCIKICAgICAgIHN0eWxlPSJmaWxsOiNjY2NjMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgIGQ9Im0gMTc1Ljc1ODgsMTQ5LjI4NDkgYyAtMC44NzI1LC0wLjQwMzEgLTEuNzIyLC0wLjU5NzIgLTIuMjY3NCwtMS4zOTU1IC0xLjE3NDQsLTEuNzE4MSAtMi4xODA3LC0zLjE2MzQgLTQuMTIyNywtNC4zNjk2IC0wLjk3OCwtMC42MDc3IC0xLjk4OTcsLTEuMDAxMiAtMy4wMjY5LC0xLjMyNDMgLTAuODYwMywtMC4yNjc2IC0xLjM3NjgsLTAuMDI4NyAtMi4xMDkyLC0wLjU1NDggMC40MzQ1LC0wLjA3NTkgMC44Njg4LC0wLjE1MTkgMS4zMDMzLC0wLjIyODIgMC45NTc5LDAgMS45MTU3LDAgMi44NzM1LDAgMS4xODA5LDAuNzI5NCAyLjM2MTYsMS40NTg3IDMuNTQyMiwyLjE4NzggMC42OTQ4LDAuNzI5NCAxLjM4OSwxLjQ1ODQgMi4wODM1LDIuMTg3OCAwLjU3NDUsMS4xNjU2IDEuMTQ5MSwyLjMzMTUgMS43MjM3LDMuNDk2OCIKICAgICAgIGlkPSJwYXRoODIiCiAgICAgICBzdHlsZT0iZmlsbDojY2NjYzAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICBkPSJtIDk3LjU2ODgsMTM4LjM5MTcgYyAtMS45MzEzLC01LjI4NDEgLTMuNjE4NCwtOS44MTM5IC02LjU0NDEsLTE0LjU5ODIgMy43NDg4LDQuMDM4OCA2LjAyMTEsNy40NzE2IDguMTY4MSwxMi4wMzc5IDAuODMzOSwxLjc3MzYgMC45OTE1LDMuODU1MSAzLjMxNDUsMy4wODEgMC4xMDQzLC0xLjc3MTEgMC40Nzg4LC0zLjU0MTkgMC41ODMxLC01LjMxMyAxLjI1NTIsOC45OTc1IDQuNzk0NSwxMi43NTk5IDEzLjAyMjEsMTYuMjUxNiAtMi4zMjY3LC0wLjI3ODEgLTQuNjUzNCwtMC41NTU2IC02Ljk3OTgsLTAuODMzNCAtMi4xODc4LC0wLjQ4NjQgLTQuMzc1NSwtMC45NzIzIC02LjU2MzMsLTEuNDU4NCAtMS4wNzY2LC0xLjU2MjggLTIuMTUzMiwtMy4xMjU1IC0zLjIyOTUsLTQuNjg4IC0wLjU5MDUsLTEuNDkzMiAtMS4xODA3LC0yLjk4NjUgLTEuNzcxMSwtNC40Nzk1IgogICAgICAgaWQ9InBhdGg4NCIKICAgICAgIHN0eWxlPSJmaWxsOiNjY2NjMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgIGQ9Im0gMTEzLjUwOCwxMzguNiBjIDEuNzc0MiwtOC4zNTExIDQuMzI4OCwtMTYuMzY1NSA1LjQzODYsLTI0Ljg0OTEgMC43MjA4LC01LjUxMjUgMC43OTk2LC04LjE2MDkgLTEuOTc0MSwtMTIuOTE2NiAtMy4wMzExLDAuMTk1OSAtNC45MTMsLTAuMTQ2IC03Ljg0NDksLTEuMTA2NiAtMTEuNjcyMiwtMy44MjYzIC0xOC4zNjYyLC05LjQ1MTkgLTI2LjIzMDksMS44ODMzIDIuNTEwNiwtMS4xODI5IDUuMDIxNSwtMi4zNjYxIDcuNTMxOSwtMy41NDk2IDEuNzg5OCwwLjM1MTggMy41Nzk2LDAuNzAzNiA1LjM2OTQsMS4wNTU0IDMuMTYsMS44NDA1IDYuMzIwMSwzLjY4MDggOS40ODAyLDUuNTIxMyAyLjQ2NTUsMC40ODY0IDQuOTMxMSwwLjk3MjMgNy4zOTY0LDEuNDU4NCAwLjc5ODgsMy4zMzM2IDEuNTk3Myw2LjY2NzQgMi4zOTYxLDEwLjAwMDkgLTAuNTkwNCw0LjQxMDUgLTEuMTgwOSw4LjgyMDYgLTEuNzcxLDEzLjIzMDggLTAuMDY5MiwyLjA4MzQgLTAuMTM4Nyw0LjE2NjkgLTAuMjA4NCw2LjI1MDYgMC4xMzkyLDEuMDA3MiAwLjI3ODEsMi4wMTQxIDAuNDE2NywzLjAyMTIiCiAgICAgICBpZD0icGF0aDg2IgogICAgICAgc3R5bGU9ImZpbGw6I2NjY2MwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgZD0ibSAxMzMuNjE0NCw4Ni45Mjc4IGMgLTAuOTgwNSwtNi43ODQ3IDIuMjU3NSwtMTAuNDMyMSAwLjkxNywtMTIuMzA1NSAtMC4zNzk4LC0wLjUzMDYgLTAuODk0MywtMS40NTYxIC0xLjQ2ODYsLTEuNzA5OCAtMi4wNTE3LC0wLjkwNjMgLTQuODcyMiwwLjE2OTUgLTUuMDc0LC0wLjM2MTIgLTIuMjU3MiwwIC00LjUxNDIsMCAtNi43NzE3LDAgLTAuOTAyNSwwLjM4MjQgLTEuODA1NCwwLjc2NDMgLTIuNzA4NSwxLjE0NjEgMS4zODksMS42MzIyIDIuNzc4MiwzLjI2NDQgNC4xNjcyLDQuODk2MyAxLjM1NDEsMi45NTE3IDIuNzA4NSw1LjkwMzcgNC4wNjI5LDguODU1MSAwLjg2ODMsMi45ODYzIDEuNzM2NSw1Ljk3MjYgMi42MDQyLDguOTU5MiAwLjQ1MTYsMCAwLjkwMzEsMCAxLjM1NDQsMCAwLjk3MjYsLTMuMTYwMSAxLjk0NDgsLTYuMzIwMSAyLjkxNzEsLTkuNDgwMiIKICAgICAgIGlkPSJwYXRoODgiCiAgICAgICBzdHlsZT0iZmlsbDojY2NjYzAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICBkPSJtIDEyMi4yMzMsMTA2LjY1MTggYyAwLjU1LC0zLjA4MDcgMS41MDUyLC0zLjgxMjYgMi45NTQzLC02Ljc5NDYgLTAuOTY0NiwtNC44NjQ4IC0yLjUxNCwtMTAuNjUwMyAtNC4zNzg3LC0xNC45NDI2IC0wLjc4NjMsLTEuODEwMiAtMS40MjEsLTIuODA4MiAtMi44MDc0LC00LjIwNzEgLTIuMzQwNiwtMi4zNjM2IC00LjcwNjksLTQuNDIyNiAtNy4zNjE2LC02LjQ3MTIgLTEuOTEwNSwtMS40NzI5IC0zLjI0NDIsLTAuNzM0MiAtNS42MDE4LC0wLjQwMDMgLTEuMDAyNiwtMS44MTc2IC0xLjI3OTYsLTIuODI3MyAtMy4xMjQ5LC0zLjc1IC0yLjgzODEsLTEuNDE5IC01LjM3NzksMS42MzkgLTcuNjA1NCwzLjQzNzYgMS42MDgxLC0yLjUxMTggMy4yMTYyLC01LjAyMzUgNC44MjQsLTcuNTM1MyAxLjExMTUsLTEuMDQxNyAyLjIyMjcsLTIuMDgzNSAzLjMzMzksLTMuMTI1NSAwLjkzNzQsLTAuMTM4NiAxLjg3NTEsLTAuMjc3NSAyLjgxMjgsLTAuNDE2NyAxLjI1MDEsMC43NjQyIDIuNTAwMSwxLjUyODIgMy43NTAyLDIuMjkyMSAwLjY1OTksMS4yNTAxIDEuMzE5OCwyLjUwMDIgMS45Nzk0LDMuNzUwMiAxLjM4OSwxLjA0MTggMi43NzgzLDIuMDgzNSA0LjE2NywzLjEyNTUgMS43MDE5LDEuNDU4NCAzLjQwMzUsMi45MTY5IDUuMTA0OSw0LjM3NTMgMS4wNzY2LDEuNTI4MiAyLjE1MjksMy4wNTYgMy4yMjk1LDQuNTgzOSAwLjk3MiwxLjgwNTcgMS45NDQ2LDMuNjExNiAyLjkxNjgsNS40MTczIDEuMjUwMSwzLjc1MDIgMi41MDAyLDcuNTAwNyAzLjc1MDYsMTEuMjUxIDAuMTA0LDEuNDI0MSAwLjIwODMsMi44NDc3IDAuMzEyMyw0LjI3MTIgLTEuNTYyNywwLjY5NDggLTMuMTI1MiwxLjM4OTMgLTQuNjg3OSwyLjA4MzggLTEuMTQ2LDEuMDc2NiAtMi40MjE5LDEuOTc5MSAtMy41NjgsMy4wNTU0IgogICAgICAgaWQ9InBhdGg5MCIKICAgICAgIHN0eWxlPSJmaWxsOiNjY2NjMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgIGQ9Im0gODQuODU5NCw4NC45NDg3IGMgNS4yNTgsMCAxMC44MTA3LDAuMjkxNiAxNS42MjY1LDIuNTAwMSAxLjM2MjksMi4wNDQ2IDIuNzA4LDMuNzE0MyA0LjM3NTYsNS41MjEzIC0xLjUxNzcsLTIuODY2NCAtMS45OTM2LC00LjQ4NjYgLTIuMzk2MSwtNy43MDkxIC0wLjUyMTEsLTAuNzYzNiAtMS4wNDE4LC0xLjUyNzggLTEuNTYyOCwtMi4yOTE4IC0zLjk1ODksLTAuMTA0MyAtNy45MTc0LC0wLjIwODMgLTExLjg3NjMsLTAuMzEyNiAtMS4yODQ5LDAuMTM5MSAtMi41Njk5LDAuMjc4IC0zLjg1NDYsMC40MTY3IC0wLjEzODgsMC4xMzkxIC0wLjI3NzcsMC4yNzggLTAuNDE2NiwwLjQxNjcgMC4wMzQ4LDAuNDg2NCAwLjA2OTcsMC45NzI1IDAuMTA0MywxLjQ1ODciCiAgICAgICBpZD0icGF0aDkyIgogICAgICAgc3R5bGU9ImZpbGw6I2NjY2MwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgZD0ibSA4NC4xMyw4OC41OTQ5IGMgLTAuMTM2LDEuMjMyNSAtMC4yNzIxLDIuNDY1NSAtMC40MDgyLDMuNjk4NiAtMC44OTgzLC01LjQwNzEgLTAuNjgyMywtOS4wMzA2IC0zLjE3MDgsLTEzLjg3NDIgLTEuODU5LC0yLjE1NCAtNC4xNDc3LC00LjExMzkgLTYuNzY5MSwtNS4xNjI3IDAuMjIxMywtMS4zMjggMC4yODc0LC0yLjE1NzcgMC4xNTksLTMuMTMxNCAtMC40NjE4LC0zLjUwMjIgLTcuNDY3OSwtMS45NTUxIC0xMC4zNDk2LC0xLjgxNTYgNC42MjM5LC0xLjE5MDYgOS4yNDc4LC0yLjM4MDggMTMuODcxMywtMy41NzE0IDEuMDQxOCwwLjQxNjcgMi4wODM1LDAuODMzNCAzLjEyNTUsMS4yNTAxIDAuMzQ3MywyLjAxNCAwLjY5NDUsNC4wMjgzIDEuMDQxOCw2LjA0MjMgMC45NzIyLDEuODA1NyAxLjk0NDgsMy42MTE2IDIuOTE2OCw1LjQxNyAwLjE3MzUsMS4xMTE1IDAuMzQ3MywyLjIyMjcgMC41MjEsMy4zMzM4IC0wLjMxMjYsMi42MDQ1IC0wLjYyNSw1LjIwOSAtMC45Mzc3LDcuODEzNSIKICAgICAgIGlkPSJwYXRoOTQiCiAgICAgICBzdHlsZT0iZmlsbDojY2NjYzAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICBkPSJtIDc2LjMxNjYsMTE5LjExODYgYyAtMC4xNDU0LC0yLjYyOTEgLTAuMzE1MiwtMy43MjUzIDAuODQ0MiwtNi4wNDc0IDEuNDc0LC0yLjk1MTUgMy4yODQyLC01LjcyNDMgNC44ODU4LC04LjY0MTQgMC4xNzM0LDEuOTQ0OCAwLjM0NjksMy44ODk0IDAuNTIwNyw1LjgzMzkgLTIuMDgzNSwyLjk1MTggLTQuMTY3LDUuOTAzNSAtNi4yNTA3LDguODU0OSIKICAgICAgIGlkPSJwYXRoOTYiCiAgICAgICBzdHlsZT0iZmlsbDojY2NjYzAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICBkPSJtIDU0LjkzMTIsOTkuMjU4IGMgLTAuNDUxLC0wLjk1OTkgLTAuOTAyLC0xLjkyIC0xLjM1MywtMi44Nzk4IDEuMjQxMywtNC4xODA4IDIuMzQ0NSwtNi44MjkyIDQuNzA4MSwtMTAuNDgxNiAtMC40MTE2LC0xLjQ4IC0wLjcxOTcsLTIuMTI3NCAtMS42NjY4LC0zLjMzMzYgLTIuMDgwMSwwLjMyMDEgLTMuOTI3MSwwLjQxMjUgLTYuMDM0NywwLjQwNjIgMi4zMjcsLTEuODA1NiA0LjY1MzcsLTMuNjExMyA2Ljk4MDEsLTUuNDE3MyAxLjE0NTcsMC4yMDg0IDIuMjkxOCwwLjQxNjcgMy40Mzc4LDAuNjI1MSAxLjE0NTgsMS4xNDYgMi4yOTE4LDIuMjkxOCAzLjQzNzksMy40Mzc4IC0xLjYzMjUsMi41MzUxIC0zLjI2NDQsNS4wNzAxIC00Ljg5NjMsNy42MDUxIC0xLjUzNzgsMy4zNDYgLTMuMDc1Niw2LjY5MjMgLTQuNjEzMSwxMC4wMzgxIgogICAgICAgaWQ9InBhdGg5OCIKICAgICAgIHN0eWxlPSJmaWxsOiNjY2NjMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgIGQ9Im0gMTc1Ljc3NDEsMTUwLjY2ODIgYyAxLjQxNjgsLTYuMzc1NCAzLjI0NDMsLTEyLjI1NzggMy4wNzQ4LC0xOC43ODcyIC0wLjIwODEsLTguMDEwNCAtMS43Njk0LC0xOC4xMjg5IC05LjE5MTQsLTIyLjk1OTUgLTguMzExNywtNS40MDk2IC0xOC4wNjg2LC0yLjg1MSAtMjcuMTg4MiwtMC41MzMyIDMuNzE1OSwtMS41Mjc4IDcuNDMxNiwtMy4wNTU0IDExLjE0NywtNC41ODM2IDMuNDcyNywtMC4xNzM3IDYuOTQ1NCwtMC4zNDcyIDEwLjQxNzgsLTAuNTIxIDIuMzYxNiwwLjY5NDggNC43MjI4LDEuMzg5MyA3LjA4NDEsMi4wODM1IDEuODQwNSwxLjUyODEgMy42ODExLDMuMDU2IDUuNTIxMyw0LjU4MzkgMS4zODksMi45MTY4IDIuNzc4LDUuODM0IDQuMTY3Miw4Ljc1MDggMC41MjA4LDMuMzY4NyAxLjA0MTgsNi43MzcxIDEuNTYyNSwxMC4xMDUyIC0wLjQxNjcsMy4yOTkzIC0wLjgzMzQsNi41OTggLTEuMjUwMSw5Ljg5NjkgLTAuNzYzOSwzLjI2NDQgLTEuNTI4MSw2LjUyODggLTIuMjkxOCw5Ljc5MjYgLTEuMDE3NiwwLjcyNCAtMi4wMzUzLDEuNDQ3NyAtMy4wNTMyLDIuMTcxNiIKICAgICAgIGlkPSJwYXRoMTAwIgogICAgICAgc3R5bGU9ImZpbGw6I2NjY2MwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgZD0ibSA1MS43MzQzLDEzMS42NjczIGMgLTMuNzczNSwtMi40NTU5IC01LjI1NTUsLTMuNTM0MiAtNC44NDE5LC04LjA4NTggMC4zNzU5LC0xLjM2MzIgMC43NTIsLTIuNzI2NyAxLjEyODIsLTQuMDg5OCAwLjUzMjYsLTAuMzYwNiAxLjA2NTUsLTAuNzIwOSAxLjU5ODIsLTEuMDgxNSAwLjY1ODIsLTAuMjE5MSAxLjMxNjQsLTAuNDM4NSAxLjk3NDYsLTAuNjU3OSAxLjE5MDgsMC4yODIxIDIuMzgxNywwLjU2NDEgMy41NzI4LDAuODQ2MiAwLjYxMTEsMS44OTYxIDEuMjIyMywzLjc5MjEgMS44MzM0LDUuNjg4MiAtMS42OTI1LC0wLjgzMDUgLTMuMzg0OCwtMS42NjExIC01LjA3NzEsLTIuNDkxNiAtMC4zOTE4LDAgLTAuNzgzNSwwIC0xLjE3NTMsMCAtMC40Mzg4LDAuNjczOCAtMC44Nzc2LDEuMzQ3NiAtMS4zMTY0LDIuMDIxNCAwLjUzMjksMC43ODM1IDEuMDY1NiwxLjU2NyAxLjU5ODUsMi4zNTA1IDAuMjgyLDEuNDg4NyAwLjU2NDEsMi45Nzc1IDAuODQ2MSw0LjQ2NTkgMC4zNjAzLC0wLjEwOTcgMC43MjA5LC0wLjIxOTEgMS4wODEyLC0wLjMyODggMC40Mzg4LC0wLjM0NSAwLjg3NzYsLTAuNjg5NiAxLjMxNjQsLTEuMDM0MyAtMC4wNjI3LDAuNzgzNSAtMC4xMjUzLDEuNTY3IC0wLjE4ODIsMi4zNTA1IC0wLjI5NzcsMC41MDE0IC0wLjU5NTMsMS4wMDI4IC0wLjg5MzIsMS41MDQzIC0wLjI5NzcsMC4yNTA5IC0wLjU5NTMsMC41MDE0IC0wLjg5MzIsMC43NTIzIC0wLjE4OCwtMC43MzY3IC0wLjM3NTksLTEuNDczMiAtMC41NjQxLC0yLjIwOTYiCiAgICAgICBpZD0icGF0aDEwMiIKICAgICAgIHN0eWxlPSJmaWxsOiNjY2NjMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgIGQ9Im0gMTM2LjM5MTUsMTY3LjUzNDEgYyAzLjM0ODYsLTMuMTA5NiA3LjQ1OTEsLTUuODEyNyAxMC4xMzc2LC05LjYxMzIgMS4wMzY2LC0xLjQ3MTQgMi4xODg2LC0yLjIyMzcgLTAuMDE3NiwtNC4zMDE1IDIuMzMwOSwwLjY2NTggMy4xOTY5LDAuNTkzNSA1LjA2MjcsMC4zNjczIDMuMzk0MiwtMC40MTA3IDYuNTc1NSwtNS4yMzU2IDYuNzc4NSwtOC42OTMzIC0wLjA0LC0wLjMyMzQgLTAuOTQyOCwtMS4wNTczIC0zLjU2NzIsLTEuNzgxOCAtMC4wNTIxLC0wLjEwMDkgLTEuNDgxMSwwLjE5NTYgLTEuNDQ1NiwwLjA5ODkgMC4yNzI3LC0wLjc0NjMgMC42MzcyLC0wLjg2MDYgMS4xOTM2LC0xLjIwOTggMC4xMjA4LC0wLjgzIDAuMTk4NSwtMi4xMDk4IDAuNzYzNywtMy4wMTcyIDEuNjUxNSwwLjAyODkgMy4yNjUyLC0wLjE1MDggNC44ODI0LC0wLjQ3MTEgMC41NDQyLC0wLjkwMjYgMC40NjIsLTEuODA1MSAwLjQxNjcsLTIuNzA4NSAwLjYyNSwwLjEwNCAxLjI1MDEsMC4yMDgzIDEuODc1MSwwLjMxMjQgLTAuMTczOCwxLjQyNDEgLTAuMzQ3MiwyLjg0NzYgLTAuNTIwNyw0LjI3MTIgMC41NTUzLDAuOTM3NyAxLjExMDksMS44NzU0IDEuNjY2NywyLjgxMjggLTAuNzk5LDEuODA1NyAtMS41OTc2LDMuNjExNCAtMi4zOTYxLDUuNDE3MyAtMS41MjgxLDEuNDU4NCAtMy4wNTYsMi45MTY5IC00LjU4MzksNC4zNzU2IC0wLjE0NjgsMC4wMDcgLTAuMjk0NSwwLjAxNDcgLTAuNDQxMywwLjAyMTggLTEuNzE4NCwxLjA1NDggLTMuNDM2NSwyLjEwOSAtNS4xNTQ2LDMuMTYzNSAtMi44MDI2LDIuMjkyOSAtNS42MDUyLDQuNTg2MSAtOC40MDc4LDYuODc5MSAtMi4wODA5LDEuMzU4OSAtNC4xNjE1LDIuNzE3OCAtNi4yNDIyLDQuMDc2NSIKICAgICAgIGlkPSJwYXRoMTA0IgogICAgICAgc3R5bGU9ImZpbGw6I2NjY2MwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgZD0ibSAxNDIuMDMyOCwxNDEuODY2MSBjIC0wLjE3NjYsLTAuMzA5IC0wLjQ0MzQsLTAuODAyOCAtMC43ODUyLC0xLjE0NDcgMS4zOTQ5LC0xLjMxOTUgMi4wODMxLC0yLjIwMyAyLjU4MDMsLTQuMDY5MSAtMS41NzY5LC0wLjc4MjkgLTMuMTUzNSwtMS41NjU4IC00LjczMDQsLTIuMzQ4OCAtMS4zMzQzLC0xLjI3OSAtMi42Njg2LC0yLjU1ODIgLTQuMDAyOCwtMy44MzcyIC0xLjc1NjEsMC45NDUzIC0yLjE5MzgsMS42NzEzIC0zLjA0MzYsMy40NzM1IC0wLjk4OTYsLTAuMjYxOSAtMS45MjczLC0wLjUxNDIgLTIuNzQ0NSwtMC4yMTQzIDAuNTE4NSwtMC4wMDQgMC44MzcxLDAuMTI1NiAxLjM1NSwwLjQ0NTkgMC44NDkyLDAuODgyMiAxLjY5ODIsMS43NjQzIDIuNTQ3MiwyLjY0NjUgMS40OTk4LDEuMTM1OCAyLjk5OTYsMi4yNzE2IDQuNDk5MSwzLjQwNzIgMC45ODE0LDAuMzIgMS45NjMsMC42Mzk4IDIuOTQ0NCwwLjk1OTUgMC4zNzQ3LDAuMTU0MiAxLjAwNTQsMC41MjcgMS4zODA1LDAuNjgxNSIKICAgICAgIGlkPSJwYXRoMTA2IgogICAgICAgc3R5bGU9ImZpbGw6I2NjY2MwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgZD0ibSAxNDYuMzg1NCwxMzcuMTYwMyBjIC01LjAxNjgsLTIuNzAxMiAtOS44MjE4LC01LjQxNzkgLTEyLjM4NjksLTEwLjU0OCAwLDYuNTExNyA2LjUzODEsOS4zNzgxIDEyLjM4NjksMTAuNTQ4IgogICAgICAgaWQ9InBhdGgxMDgiCiAgICAgICBzdHlsZT0iZmlsbDojY2NjYzAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICBkPSJtIDEzMy4wMDI0LDE0OS45Njk1IGMgLTMuNzI1LC0yLjUzOTkgLTYuMzU5MiwtNy42NjU1IC02LjAyODEsLTEyLjY2MSAtMS4yMTM1LDQuMzI1NCAtMC43ODM1LDguNDEyNyAyLjk0MjMsMTEuNDAwNCAwLjYyODgsMC4zMDU2IDEuMjU3MiwwLjYxMTIgMS44ODU2LDAuOTE2NyAwLjQwMDMsMC4xMTQ2IDAuODAwMywwLjIyOTEgMS4yMDAyLDAuMzQzOSIKICAgICAgIGlkPSJwYXRoMTEwIgogICAgICAgc3R5bGU9ImZpbGw6I2NjY2MwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZSIgLz48ZwogICAgICAgaWQ9ImcxMTIiIC8+PGcKICAgICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYxLjIzNjUyNCwxMDYuMTYxMTQpIgogICAgICAgaWQ9ImcxMjQiPjxnCiAgICAgICAgIGNsaXAtcGF0aD0idXJsKCNjbGlwUGF0aDEyOCkiCiAgICAgICAgIGlkPSJnMTI2Ij48ZwogICAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDEzNi44OTcyMywwLDAsMTA1LjA0NDg4LDQ1LjIwNzIsNjIuOTkzMikiCiAgICAgICAgICAgaWQ9ImcxMzIiIC8+PC9nPjwvZz48cGF0aAogICAgICAgZD0ibSAxNDAuMTIyOCwxMTEuNDA4MSBjIDAuNzY5OSwwLjQxOSAyLjE2NzYsMC45OTUyIDIuOTM3NSwxLjQxNDIgLTAuNzkyLC0wLjEzMzggLTIuMjExOSwtMC40MjQ5IC0zLjAwMzksLTAuNTU4NCAtMi4xMTU1LC0wLjM1NzIgLTIuMzY0MywtMC44NjU3IC0yLjY5MjYsLTIuOTQ4NiAtMC4xNTQ4LC0wLjk4MDggLTAuMzY3OSwtMi4xOTc3IC0wLjUyMjcsLTMuMTc4OCAwLjQxNDcsMS4xMDkyIDAuOTEzNiwyLjM5ODQgMS4zOTY5LDMuNDU2MyAwLjUxMTQsMS4xMTg4IDAuNzk5NCwxLjIyNDMgMS44ODQ4LDEuODE1MyB6IG0gLTM5LjI1MTksNTMuNjQzMSBjIDEuNjYyNSwyLjQ5MzcgMi42MTk3LDMuMzA0OSA1LjE3OCw0Ljg4NDcgLTMuNDczOCwtMC44MzY4IC00LjEzNiwtMS40OCAtNS4xNzgsLTQuODg0NyB6IG0gLTAuNTQ3MSwtNS40OTM4IGMgMi45MDkyLDUuODQ4NCA1LjExMiw4LjAwMTkgMTEuMjAyOCwxMC44NzQzIC02Ljg4OTMsLTEuNjg4NiAtOC45MTQ0LC0yLjg4OTQgLTExLjIwMjgsLTEwLjg3NDMgeiBNIDM4LjAyNDIsMTI5LjExNjEgYyAwLjYzODQsMi45Mjg1IDEuMjMzNCw0LjAzMzIgMy4wMzksNi40MzcyIC0yLjkyOSwtMi4wNDYzIC0zLjMxMDgsLTIuODg2OCAtMy4wMzksLTYuNDM3MiB6IE0gMTAzLjIzMzUsODAuMTAyIGMgLTAuMDg4MSwwLjcxMDYgLTAuMTc2NiwxLjQyMTggLTAuMjY1MywyLjEzMjUgLTAuMTU5NiwxLjI4NzUgLTAuMTUzMywyLjMzMzggLTAuMDUwNywzLjYyOTggMC4wOTg5LDEuMjU0MyAwLjE5NzMsMi41MDg2IDAuMjk1OSwzLjc2MzIgLTAuMzY1NCwtMS4yNzUgLTEuMDk1NiwtMi41NSAtMS40NjA3LC0zLjgyNSAtMC4xNDYsLTAuNTEwMyAtMC4yNjcsLTAuOTIzIC0wLjMzNjIsLTEuMzA0NSAtNS40NTEzLC0xLjExMzggLTEwLjg2MjksLTEuMTgzNSAtMTYuMzE1NiwtMC4yMTA3IC0wLjM0NzgsMi4wMTg2IC0wLjc3MTMsNC4xMjIyIC0xLjEyNjUsNS42Mjk5IC0wLjEwNzcsLTEuNjg4OSAtMC4wMzgzLC02LjM1NzggLTAuMDQ3MSwtOC45NzE5IC0wLjAwNjgsLTIuMDI1NiAtMC4wOTIxLC0yLjcxOSAtMS4xMzY0LC00LjQ0MTkgLTAuOTc3OSwtMS42MTMyIC0xLjM5MjEsLTEuOTc5MSAtMi43NjA5LC00LjcwNDQgMC4xMTM3LC0xLjcxOTUgMC4xMTU5LC0yLjg1NjcgLTAuMzQxLC00LjQ4ODkgLTAuNzYsLTIuNzEzMSAtOC40MjQ2LC0wLjYxMDkgLTEwLjQ0NjgsLTAuMDU3MyAtMi40OSwwLjY4MTUgLTcuNjM4LDEuNjk0NiAtNi4zNDM0LDUuMDE0MiAxLjEzOTUsMi45MjE0IDEuODYxNSw2LjAwMTUgMi40MTgyLDEwLjA4OTcgLTQuNTYyLDYuNTcxOCAtOC44MDQ5LDE1LjU3ODMgLTkuNjE4OCwyMy41NTc5IC0wLjYzMjEsNi4xOTYyIC0wLjI1MjgsMTAuMDA5OSAxLjA4OCwxMy43OTk5IDIuMTI0NSw2LjAwNDkgNS4wOTY0LDExLjIwMyA5Ljg2NTcsMTUuMzg4NyA2LjQzMjksNS42NDQ2IDEyLjQ0NjYsNy45MTIgMjEuODYyMiw5LjM0NSAtMi4yNjQxLC0yLjUzNDUgLTQuNTA0MywtNS4yMTQ5IC02Ljk0NiwtOC4wODg3IC0yLjQ3MTgsLTIuOTA5OCAtMy45NDA4LC01Ljg0ODQgLTUuNTEsLTkuMDMwNiAtMi4xNjgyLC00LjM5NTQgLTIuMTIxOCwtNi4wNjc5IDAuNzUyNiwtOS45MjY0IDIuNDc2OSwtMy4zMjUzIDMuODE0LC00LjgyMjYgNC44OTU0LC04LjA3NTkgLTAuODkzMiwtMS44NDExIC0xLjIxNzgsLTMuMzk2NyAtMS41MTgyLC01LjkxMDggMy4wMzI4LC0zLjMxNDggNS4yODYzLC01LjU4NjUgOC4yMzA5LC02LjI4NjQgMi44ODgzLC0wLjY4NjUgNS4zMDA1LC0wLjU1MzMgNy44ODQzLDAuNzY3NCA1LjczOTMsMi45MzQ0IDExLjA0OTUsNi43MjI5IDE3LjUyMzUsNi44Nzk2IDIuOTk1MSw3LjM2MzYgMi42OTI0LDEzLjUxNTkgMS4yNTQzLDIwLjY0MDIgLTAuOTgxOSw0Ljg2NTQgLTEuMzc1Niw5LjQ3MjMgLTEuNjgxMiwxNC40MzI2IC0xLjIxNDMsLTUuMTA4MyAtMS40NDIsLTkuNjAwNiAtMC41NDE0LC0xNC42ODg4IDEuMDg2MiwtNi4xMzIyIDEuOTMwNCwtMTIuOTA3IC0xLjA5MDgsLTE4LjI5NjIgLTUuODUzOCwtMC40NDgyIC0xMC44NzA4LC00LjAwOTYgLTE2LjE0NzIsLTYuNzQyMiAtMi4xMjA2LC0xLjA5ODggLTQuMzI4NiwtMS4yMDU2IC02LjY3NjIsLTAuNTYxMyAtMi4xNzksMC41OTg0IC0zLjY0OTMsMi4wMzk4IC01Ljk5NjcsNC43NDcyIC0wLjAzNjYsMi43MTgxIDAuNTc2NiwzLjk3MjcgMS44MjQ3LDYuNDM0MSAyLjAwNTUsMy45NTMxIDQuMjE5Myw3LjYzMjggNi42NDgzLDExLjUyMjggLTIuOTc0NiwtMy41OTA3IC01Ljc5MjYsLTYuNTkgLTguMTMzNywtMTAuMTk5NiAtMC44OTQ5LDIuNTQ5NyAtMi4xNzQyLDMuODQ0IC00LjI5MzksNi43MTQ3IC0yLjA3MDQsMi44MDM3IC0yLjI4NzMsNC4wMzE3IC0wLjczOTMsNy4yNzYyIDEuNTU2NSwzLjI2MDcgMi44NzY2LDYuMTI2OCA1LjUyNTksOC45ODczIDQuNTc3Niw0Ljk0MzMgOC43NzA5LDEwLjQ0NTEgMTMuNzc2OSwxNS4zMTMzIDIuNzE3OSwyLjY0MzMgMy44MjE0LDIuNTUyIDcuNDI2OCwzLjA5ODUgMy4yNTg0LDAuNDkzOCA2LjQ0MDMsMS4xMTc1IDkuNzYzNiwxLjg4OTYgLTMuMjE0MiwtMC4yOTk2IC02LjMyMDksLTAuNDA5OSAtOS40NDk4LC0wLjQ4NzUgLTAuMDMyNiwtOWUtNCAtMC4wNjQ2LC0wLjAwMiAtMC4wOTcsLTAuMDAyIDMuMDc4NSwzLjkzMTYgNC44NjUxLDYuMTIyMyA5Ljg2NDksOC4yOTQ3IDEyLjMxLDUuMzQ2NSAyMC4xMzE2LDUuOTI0NyAyOS44MDE1LC0yLjIwMzkgMi41MDYxLC0yLjEwNjcgNC42OTUsLTQuMTUxOSA3LjIzNjMsLTUuOTY5NSAtMC45MjEzLC0wLjA3ODggLTEuNzE1MywtMC4yNDQgLTIuNzY1NSwtMC42NTY1IDEuMjc4MSwwLjI0MzUgMi43NTQxLDAuMDAyIDQuMDgwNCwtMC4yNDA0IDAuMzcyNSwtMC4yNDE1IDAuNzU0OSwtMC40NzcgMS4xNDcyLC0wLjcwODMgMS43OTM1LC0xLjA1NjggMi44MTE3LC0xLjY0MDUgNC4wMjQ5LC0zLjMzMSAxLjI4MjQsLTEuNzg2NCAyLjM1MTEsLTMuNTcxNCAzLjI5MzMsLTUuNTM4OSAtMC42MTc0LDAuMjIwNSAtMS4xMzUsMC40MDcgLTEuNTk2NCwwLjU0NDIgLTAuMzM5NiwwLjE1NTYgLTAuNzA5LDAuMjU4NSAtMS4xMDA3LDAuMjk2MiAtMC43NzU5LDAuMDc0NiAtMS41MTgzLC0wLjExNjIgLTIuMTM2OCwtMC40OTY5IC0wLjAyNDksLTAuMDExNiAtMC4wNDk2LC0wLjAyMjkgLTAuMDc0OCwtMC4wMzUxIC0wLjk5MjIsLTAuNDgzIC0yLjUyOTQsLTEuMDMzOCAtMy41NTgxLC0xLjIwMDggMC41MjQ0LC0wLjE4MTEgMS42ODQ5LC0wLjI0ODkgMi4yMzIzLC0wLjAzMjMgMC4wNzM0LDAuMDI5MiAwLjE0OCwwLjA1MTMgMC4yMjQ1LDAuMDY5NyAtMC4yNDY5LC0wLjQyMDEgLTAuNDA4MiwtMC44OTc0IC0wLjQ1NzgsLTEuNDEyOCAtMC4wNjU3LC0wLjY4MzQgMC4wNzMyLC0xLjMzOTMgMC4zNjcxLC0xLjkwODggMC4wMDEsLTAuMDAyIDAuMDAyLC0wLjAwNCAwLjAwMywtMC4wMDYgMC4wOTMsLTAuMjE4NSAwLjIyMiwtMC40MjAzIDAuMzY0LC0wLjU2NTUgLTAuNDcwNSwtMC4xNzI5IC0wLjk1MDIsLTAuMzcxIC0xLjQ0NDgsLTAuNTg1OSAyLjI5MzgsMC4zNDk1IDQuMzYyMiwwLjQwOTYgNi42MDEzLDAuMTE0NSAwLjE0NzcsLTAuNzA1OCAwLjI5NjUsLTEuNDUzNiAwLjQzNDMsLTIuMjE0NCAtMC4yNzc1LC0wLjAyMjEgLTAuNTU0MiwtMC4wNDMxIC0wLjgzMTQsLTAuMDY0OSAtMC4wMjI0LC0wLjAwMiAtMC4wNDUxLC0wLjAwNCAtMC4wNjc1LC0wLjAwNiAtMS4wNTkzLDAuODQ2NyAtMi4yMzk2LDAuNzA0NCAtMy44NTIsMC4zMzY0IC00LjkwMzQsLTEuMTE4MiAtMy43NTExLC0zLjg2OTggLTYuMDA3MiwtOC4wMTU1IDIuMzQyMywyLjg2MzMgMi4xNjg4LDUuODU4OSA1Ljk4NTcsNi43NjI5IDAuODg5NSwwLjIxMDYgMS40OTUsMC40NzQgMi4wOTcsMC4zODM1IC0xLjA4MzYsLTAuNTQ1MSAtMi4wMjExLC0xLjQ0ODUgLTIuMzkyNywtMi40OTc2IC0xLjA0NzcsLTIuOTU4NSAtMC4zOTcxLC01LjQ1MTMgLTEuNTQ4LC04LjIxNDUgMS40MjU4LDIuNDcwMSAxLjUxMTcsNC44ODEgMi43ODY1LDcuNDc5OCAwLjQ1NzgsMC45MzM3IDIuMTU3MSwyLjQyODEgMy4yMDAzLDIuNDUxMSAwLjI4NjMsMC4wMDYgMC41NzIsMC4wMTIyIDAuODU4NiwwLjAxODQgMC4yNTE0LC0xLjY0NDYgMC40MDQyLC0zLjI3NzEgMC4zMDY3LC00LjYzMTUgLTAuMTc3NywtMi40NzEyIC0wLjgxOTgsLTYuMTM5MyAtMS4yMDQxLC03LjU0MjcgMS4yOTE0LDEuNjYgMS44Nzk2LDUuMTc2MSAyLjQ0NjgsNy42NTEgMC41OTA4LDIuNTc3NSAwLjQ0MTcsNS42NzAxIC0wLjA3NTQsOC40Mzg3IC0wLjcwOTUsMy43OTkgMy4yMDI5LDMuMTgxMSA1LjQ3NDMsNC45NzE0IDEuNjY5NiwxLjMxNjQgMi44MTg4LDMuNDE4IDQuMzQ5Nyw0LjkwNjggMS41MTg2LDEuNDc2MyAzLjkwODcsLTAuNjkzMSA0LjUwNTcsLTIuMTM2NSAyLjU5LC02LjI2NTEgMy43Njk4LC0xNi4xMjIgMy4wODU4LC0yMi40Mzc2IC0wLjc2NzYsLTcuMDg2OSAtNC4xOTEsLTE0LjgyMzUgLTEwLjQ0MTcsLTE4LjMxMjcgLTcuOTY4MiwtNC40NDczIC0xNy4zNjM2LC0xLjczMDIgLTI1LjI4MDIsMC45MzY5IC0xLjY4OTcsMC41NjkyIC0yLjg2NDcsMS4zOTg5IC00LjM1MDEsMi4zMzQ2IDAuNDA0NSwtMS44MjEgMC41ODgyLC0zLjc0ODMgMC4wNTAyLC01LjU2NyAtMC44NTQxLC0yLjg4NTQgLTIuMjMzNCwtNy42MDY1IDEuNjg0NCwtOC40NzczIDEuNDkxLC0wLjMzMTMgMi4xNjcxLC0wLjI4MzQgNC4yNzIzLDAuODAyOCAtMS43MDM5LC0wLjM4NTIgLTIuNTYyOCwtMC4yOTA4IC0zLjczMzgsLTAuMDc0NSAtMS4wNjEyLDAuMTk1NSAtMS42MjM5LDAuODY5OSAtMS45MjA0LDEuNjY0NyAwLjM3MDcsLTAuMjY3OCAwLjk3NTQsLTAuNDEzNSAyLjAwODYsLTAuNjYyNCAyLjkwNDQsLTAuNjk5OSA1LjY3MjEsMC42OTc5IDYuMjEzMywyLjcxMjIgMC4zMTU3LDEuMTc2NiAwLjI2MTksMS43OTQ2IDAuOTMwNiwzLjM5NzkgMC42MDA2LC0wLjE4NTEgMS4yMjIzLC0wLjM1NDYgMS44NTk1LC0wLjUwODYgLTAuMzU5NCwtMS4xNzI3IC0wLjcxOTQsLTIuMzQ2OCAtMS4wNzkxLC0zLjUxOTUgLTAuOTMzNSwtMy4wNDQ5IC00LjU3MDEsLTUuNTAwMyAtNy43ODE0LC01LjQ0MzkgLTIuOTY4NSwwLjA1MjcgLTQuODUwNCwxLjkxMjIgLTYuODk5NiwzLjczNTIgLTEuNDExOSwxLjI1NjMgLTIuNzcwNSwyLjQ1ODIgLTQuMTE3MywzLjY0ODUgLTMuNjk0NCwxLjE2NTYgLTYuNjU1NywyLjUyNzkgLTEwLjA4NDUsNS4wNjYzIDIuNDQsLTIuODY3OCA0LjA5NTUsLTQuNDU1MiA3LjQ5ODUsLTUuODgyMSAtMC40OTUyLC01LjA0ODMgLTIuMjQ5NiwtOC43MjkgLTMuNzQ1NCwtMTMuNTYwNCAtMC42NzY3LC0yLjE4NSAtNi4wMjE0LC0xMC45MzgzIC03LjUwMjUsLTExLjc5MTkgLTEuMDU2MiwtMC42MDgzIC03LjY3MTEsLTYuMTgwMyAtOC45MTU4LC02LjkxNTEgLTAuOTI2NywtMS4yMzExIC0xLjc0MDIsLTIuOTMxNiAtMy4xMzM0LC0zLjY2OCAtNC4yNDU4LC0yLjI0NSAtNi45NzQxLDIuMDUzNyAtOS4yNTkxLDUuNjg0NiAtMS4wNDA2LDEuNjU0IC0zLjkyOTEsNi40MTc5IC0xLjQxMDgsNy43NTI1IDIuMzgxMSwxLjI2MTQgMy43MTQ1LDIuMTYyMiA2LjE0MzgsMy43NTcgMC4zNTY5LC0wLjY1MDUgMC45Njk3LC0xLjI3ODEgMS4zNjg4LC0xLjkyODEgeiBtIDE0Ljc2MDMsLTcuNjk3MiBjIC0yLjE0OTUsLTEuNzM2NSAtNS43NjQyLC00LjgxMDQgLTYuNDY1NSwtNS4xOTU0IC0xLjI2OTksLTEuODk1NSAtMS40MjY3LC0zLjA2ODUgLTMuNDYxMSwtNC4xNjk3IC02LjA1NjIsLTMuMjc3MSAtOS4yNzA0LDAuNTIzNSAtMTIuODU1NCw2LjA0ODMgLTEuNzA4MiwyLjYzMjUgLTUuNDQzMSw4LjY0MjggLTEuNDc5NywxMC42ODAzIDEuNjY5OSwwLjg1ODQgMi45MzU2LDEuNTAxOCA0LjE5ODEsMi4yMzcxIC00LjE1NzksLTAuNTE1OSAtOC4yMzg2LC0wLjUyMjEgLTEyLjQ4MTgsMC4xMTYzIDAuMDc1MSwtMC41MTIgMC4xNDA2LC0wLjk5OTIgMC4xOTM2LC0xLjQ0NiAwLjI3NTgsLTIuMzE4NCAwLjM2NjMsLTMuMDI5NCAtMC44OTMyLC00Ljg5NzQgLTAuOTE4MSwtMS4zNjIzIC0xLjI3MTksLTEuNzU2NiAtMi4zODA4LC00LjIzMTYgMC4yMDE4LC0yLjAxMiAwLjExNDIsLTMuMTQ0NCAtMC40NTM1LC01LjI1MTcgLTEuMjYyLC00LjY4MzEgLTEwLjAwNzIsLTIuMTE2MSAtMTMuNTcwNiwtMS4xNTIzIC00LjI4NzcsMS4xNTk0IC0xMC40MTQ1LDIuMjM5MSAtNy45MDA1LDcuNzUxNiAwLjU4OTEsMS4yOTE1IDEuMDUxNywyLjYxMjQgMS4zOTk4LDMuODcyMiAtMy43NDkxLC0xLjY1OTQgLTguOTU5MiwxLjg2MDYgLTExLjQ0MDYsNC4zNDgzIC0yLjM2MDIsMi4zNjY0IC0zLjY0MjMsNS4xMTQzIC00LjA4OSw3Ljc4MDggLTAuMzgwNCwyLjI2OTQgLTAuMDMyMSwyLjI1ODQgMS41ODc0LDMuODYyOCAxLjQ4MTYsMS40NjY2IDIuOTYyNywyLjkzNSA0LjQ0MzksNC40MDA4IDAuNTk4MSwxLjYyODIgMS4xOTczLDMuMjU1IDEuNzk1MSw0Ljg4MjEgLTAuMjMzLDEuMjE1NSAtMC40MDYyLDIuNDI3OSAtMC41MDk0LDMuNjI4NiAtMC40MzAzLDUuMDA2MyAtMC4yODU3LDguNTcxNCAwLjQyOTUsMTEuODQ4OCAtMi42MDg3LC0xLjAxNzkgLTUuNjAyMSwtMC41NDExIC02LjkzMzUsMi4yMjc1IC0wLjUwNjMsMS4wNTI1IC0wLjgwNzksMi4xMjQ2IC0xLjE5MDMsMy42ODExIC01LjgxOTMsNS42MDY5IDUuMDg1OSwxMi45NTc0IDguMjY3MiwxMy41MTAyIC0wLjM2MzcsLTEuMDMzNSAtMC43NjIyLC0xLjk3ODkgLTEuMTEyOSwtMi45MTYzIDIuMTU3NSwtMS4xMTY5IDEuODkzLC00LjI5OTMgMS40MzQ5LC02LjM0ODIgLTAuNzc2MSwwLjk3OTQgLTEuMjA1LDIuMjYwMSAtMi4zNDY1LDIuMzE1MSAtMC4xNjcyLC0yLjMxNzEgLTAuMTM4MywtNC44Nzc2IC0xLjk0NzksLTYuMjM4IDAuNTM1NywtMS40MzIgMC41MDc2LC0xLjQzMzIgMi4wMzAxLC0wLjg0NzggMi4xNjIzLDAuODMyNSAzLjc5MDUsMi42ODcgNS40Mjg0LDQuNDk2OSAxLjc2NCwzLjQzNjEgNC4wMjUyLDYuNDkyNyA3LjEzNTksOS4yNTA2IDcuNjQ0Miw2Ljc3NzMgMTQuODY5Nyw4Ljk5NDYgMjYuNTA0MiwxMC44NDg3IDEuNTQ4NiwxLjYxNjEgMy4xNDksMy4xNzU0IDQuODY2OCw0LjY5MTYgMi4zMjczLDIuMDUzNyAzLjgzODQsMi40ODAxIDYuMDM5NSwyLjU5NDkgMy42NDIzLDQuODcxOSA2LjUwODEsOC4yNjQ3IDEyLjQ0NjQsMTAuNzY0MyAxMi40NDcyLDUuMjM5MiAyMS4wMjY4LDUuNDkxOCAzMS4wMTczLC0yLjc0NTcgMy4zMDE1LC0yLjcyMTggNi4xMTcxLC01LjU5MDIgOS43NDU1LC03Ljg2MjQgMS44MzYyLC0xLjE0OTggMy4xNDg0LC0xLjk3NjMgNC41NDA1LC0zLjYzNDEgMS43NTA3LC0yLjA4NjIgMy4xODA1LC00LjE3MjUgNC4xNzU3LC02Ljg1NzggMS4yODU4LDAuNTI5MiAyLjc1MjIsMS4wMjc4IDMuOTM2MiwyLjAzOTggMS41Mjg3LDEuMzA2MiAyLjUwMTMsMy40OTI2IDMuOTE3Miw0LjkyNzggMS44Nzk0LDEuOTA0NSA2LjE2NjUsLTAuMzk0NiA3LjExNTgsLTIuMjExNiAzLjIyODcsLTYuMTc5IDQuNTQ5NiwtMTcuNTY2OSAzLjg2MzQsLTI0LjMzODkgLTAuODQ4MiwtOC4zNzEzIC00LjI5OTEsLTE2LjI4NSAtMTEuNjc0NSwtMjAuMjIxMiAtNS4wMTQ4LC0yLjY3NTYgLTExLjc0NTQsLTIuOTI0OCAtMTcuNTA1NCwtMS44MzYgLTAuMzczMywtMS4yMjgzIC0wLjc0NTIsLTIuNDU2NSAtMS4xMTg1LC0zLjY4NDggLTEuMTIsLTMuNjgwNSAtNS40OTE5LC02LjY4ODkgLTkuMzExLC02Ljg2OTQgLTMuNjY2OSwtMC4xNzMgLTUuNjU0NiwxLjcxOTUgLTguMDU5NSw0LjAzNTkgLTEuMjYxNywxLjIxNTUgLTIuNTI0MiwyLjQzMDIgLTMuNzg1OSwzLjY0NTcgLTAuMDczNCwtMC44MjggLTAuMTgxNywtMS42MjIgLTAuMzE4MSwtMi4zOTA1IDAuOTkzMywtMS45NjEzIDEuNDcwNCwtMy42ODU2IDIuMzIwNSwtNS43MDc1IDAuOTM1NCwtMi4yMjY3IDEuMzkwNywtMy42ODgyIDEuNDU1LC02LjA3MTMgMC4wNTY0LC0yLjExNTUgMC4xMTMxLC00LjIzMTYgMC4xNjk4LC02LjM0NyAwLjk0MzYsLTEuNjc2NSAxLjAyNjEsLTIuMDg0NCAwLjg4ODcsLTQuMDAyOSAtMC4yOTA2LC00LjA0MzMgLTIuNTE3NSwtNC40MjkxIC02LjIyODksLTQuNDA1OCAtMS4yMzY1LDAuMDA3OSAtNS45MDM3LC0wLjAyMSAtNy4wOTM0LDAuMDY0OSAtMi4zNjUsMC4xNzA5IC0zLjkyNCwwLjM1MTUgLTQuNzM5LDEuMzI4MyB6IG0gMTIuNTE0NCwyMi4wNTY5IGMgLTAuNzQ2NiwtMi42NjYyIC0xLjc1MDEsLTUuMTgzMSAtMi42NjYyLC04LjA2NzkgLTAuODY2OSwtMi43MzA5IC01LjMxMzMsLTEwLjY2MDkgLTcuOTMwNSwtMTIuNTgyNyAwLjUwOTQsLTAuMzc5MyAxLjQ0NDUsLTAuNTI3OSAzLjExMDEsLTAuNjcxNiAxLjE3ODQsLTAuMTAxNyA1LjgyNDEsLTAuMTIzMyA2Ljk5MDYsLTAuMTQzNCAyLjU2ODEsLTAuMDQ0OCAzLjU0MjcsMC4xNDgyIDMuODAyNCwzLjA3MjUgMC4xMjY5LDEuNDMxNSAwLjAxNSwxLjY5OTEgLTAuNzAxMSwyLjk1NCAtMC4wNjM1LDIuMjM4MiAtMC4xMjY5LDQuNDc3IC0wLjE4OTksNi43MTUyIC0wLjA1OTgsMi4xMjIgLTAuNDY3MSwzLjM0NDMgLTEuMzAxNCw1LjMyMTggLTAuNDk5NCwxLjE4MzUgLTAuNzcwNCwyLjI4ODEgLTEuMTE0LDMuNDAyMSB6IG0gLTc4LjIyMzcsMzYuNjI4MiBjIDAuNTc2NSwwLjA2NTUgMC45MzMxLC0wLjIzNyAxLjM3OSwtMC42ODI2IC0wLjA4MjUsMS4wNjQ3IC0wLjI3OTIsMS44NTQxIC0xLjAyNjcsMi4yODkzIC0wLjA1MjQsLTAuMTczMiAtMC4xMDE3LC0wLjM0NjEgLTAuMTQ4MiwtMC41MjE5IC0wLjA5MDUsLTAuMzQyNyAtMC4xNTUxLC0wLjcwNjcgLTAuMjA0MSwtMS4wODQ4IHogbSAzLjYyMjQsLTcuNjkyNyBjIC0wLjQxNSwtMS4wNzM3IC0wLjgsLTIuMTgwNCAtMS4xNjI1LC0zLjMyMzkgLTAuMDYwMSwtMC4xODkgLTAuMTE3NywtMC4zNzkzIC0wLjE3MzgsLTAuNTY4NiAtMi4xOTI5LC0wLjkzMDEgLTUuMDc2MywtMS41MjExIC02LjE4MDEsMC43ODM1IC0wLjUzNiwxLjExODUgLTAuODM4NSwyLjIxNjEgLTEuMjI5NCwzLjYzIC0zLjYxMTMsMy43NDEyIDEuNzg3LDguNjgwMyA0LjcyNzQsMTAuNDUxOSAtMC40MjU1LC0wLjkxNDcgLTAuNzI3NywtMS42MDcyIC0wLjkzNCwtMi4zMjAxIC0wLjg5NDEsLTMuMDg5OCAwLjQwNDcsLTUuODQ3MyAtMi4zOTk2LC04LjA4NzMgMS4zMTc5LC0yLjY1OTQgMS4yNTcyLC0zLjcxOTkgNC4zMjM0LC0yLjQ5MSAxLjE4MjksMC40NzM5IDIuMTU4MywxLjEzOTIgMy4wMjg2LDEuOTI1NSB6IG0gLTAuODQ1LC0yNS4xNzcgYyAxLjY2MjIsLTUuNzQ4NyA0LjQ5MjksLTExLjM5NzMgNy42MzExLC0xNi4xNDU5IC0zZS00LC0wLjAyNzUgLTZlLTQsLTAuMDU0NyAtOGUtNCwtMC4wODI3IC0wLjE5NjUsLTAuODE2NCAtMC40MjQxLC0xLjYxMjEgLTAuOTAwOSwtMi4yNTA3IC0yLjI0MywtMy4wMDA4IC03Ljk0ODksMS40MDQyIC05LjYwMDQsMy4wOTAzIC0xLjgwNTQsMS44NDM0IC0zLjAxMzgsNC4wMjY2IC0zLjMwMTUsNi4wNzM4IC0wLjIwOTIsMS40OTM2IC0wLjAwNjIsMS41Mjk4IDEuMDM1OCwyLjU4NjMgMS40MDQzLDEuNDIxNiAyLjgxLDIuODQ0MyA0LjIxMzcsNC4yNjU2IDAuMzA3MywwLjgyMTUgMC42MTU3LDEuNjQyMSAwLjkyMywyLjQ2MzMgeiBtIDEwNi4yMTUsNDYuMTQwOSBjIDAuMzIsLTAuMzE2MyAwLjU3ODIsLTAuNjkzIDAuNzU2MywtMS4xMDk3IDAuMDk2OSwwLjA4OSAwLjIwMDcsMC4xNzMyIDAuMzA5MiwwLjI1MzEgLTAuMTMxNSwwLjI5NjIgLTAuMjY1MywwLjU4ODIgLTAuNDAxOSwwLjg3NTkgLTAuMjI3NCwtMC4wMDUgLTAuNDQ4MiwtMC4wMTEzIC0wLjY2MzYsLTAuMDE5MyB6IG0gLTI3LjQ3NTcsLTEwLjM0MDUgYyAtMC4yOTI1LDAuNjEzNCAtMC40MzI1LDEuMjYwNiAtMC40Mzc2LDEuODk5OCAtMS4wNzY2LC0wLjg2IC0yLjI0NzEsLTEuNjc1MyAtMy40NjE3LC0yLjE0NjQgMS42NzcsMS40OTc2IDMuOTU0OSw1LjAyOTUgNS42MDU1LDYuMTQ0NCAxLjg3MzEsMS4yNjU3IDQuNDE1MiwxLjAxOTMgNi41OTkxLDIuMDI5NiAtMC43NDU2LC0wLjY3NzUgLTEuNzAxMSwtMS4yMjM0IC0yLjY3NCwtMS43NDMgMS4wNzE4LC0wLjM5MjMgMS45OTc5LC0xLjE4NiAyLjUyNjMsLTIuMjkzOCAwLjIyMjgsLTAuNDY3MiAwLjM1NiwtMC45NTUgMC40MDk5LC0xLjQ0MzEgMS40NjcyLDAuNDgxOSAyLjkwOCwwLjcxIDQuMTI0OSwwLjY5MjUgLTQuMzUzMSwtMS4yMjIgLTguOTgzNSwtNC4wNzk5IC0xMi4xNzYyLC03Ljg2NDUgMC4zNTg2LDAuOTg3IDAuODU5OCwxLjg3NzcgMS40NjM1LDIuNjczMSAtMC44MzY3LDAuNDM3NCAtMS41NDMxLDEuMTM2NyAtMS45Nzk3LDIuMDUxNCB6IG0gLTIwLjE4NjYsMTUuNzQ3OSBjIC0yLjQwMzgsLTAuOTM4IC00LjU5NjQsLTEuNjQxOCAtNi45Mzk4LC0yLjIzMDYgLTIuMTM4MiwtMi44MTAyIC0zLjQ0MDcsLTQuMjY2MSAtMy45MzI4LC04LjAzMjggLTAuNTc4OCwzLjcwNTUgLTAuNjk5Myw0LjM5MzQgMC45NDk5LDcuMTU5MiAtMC40Nzc5LC0wLjI0MjkgLTAuOTIyNCwtMC41NzY5IC0xLjU1OTMsLTEuMTIxNCAtMi4zMDQsLTEuOTcwMSAtNS4zMDczLC05LjcxMjEgLTYuNTA4MSwtMTIuNDgwMSAwLjc2MjIsMy4zMzE2IDMuMTQ2NSwxMS42NTkyIDUuNjAyMSwxNC4wODY1IDEuNjE0OSwxLjU5NjUgMS45ODExLDEuNTU5OSA0LjI1ODIsMS43NzUzIDIuNzEyMiwwLjI1NzEgNS40MTksMC41Mzc1IDguMTI5OCwwLjg0MzkgeiBtIDUwLjE3NDMsLTguMDc4MiBjIDEuOTUsLTAuMTg0NSAzLjA2NDksLTAuNDg1NSA0LjgxMSwwLjM3ODIgMy4yNTQ3LDEuNjEwNiA1LjY0OTUsNC4yNCA3LjIwMjMsNy4zODQ4IC0wLjk0OTksLTMuNzUxOSAtMi44NjE2LC02Ljk0MDEgLTYuODI3LC04LjM1NDMgLTEuOTQ3NCwtMC42OTM5IC0zLjIwMzEsMC4wMjI3IC01LjE4NjMsMC41OTEzIHogbSAtMzcuNDI0OSwtMC4zNjY1IGMgMC43MzQ3LDMuMjUzNiAyLjAzOTIsNi4zODg1IDcuMDkyMyw4LjgxMzggLTYuNjk3NSwtMS42NzcgLTcuOTUzMiwtNC40ODk4IC03LjA5MjMsLTguODEzOCB6IE0gMzkuNTE5NSwxMjMuODAxNCBjIDAuNTc0Niw2LjUwNjcgMS44NCw5LjMxNTUgNi40NjMsMTQuMjEyMSAtNS43OTg2LC00LjA4NTggLTcuMjQ1NiwtNS45NDI1IC02LjQ2MywtMTQuMjEyMSIKICAgICAgIGlkPSJwYXRoMTM2IgogICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgZD0ibSAxMzQuNjc0OSwxMzIuOTczMiBjIC0wLjQ0NzYsMC45MzYgLTAuMDQ3NCwyLjA2MzkgMC44OTA5LDIuNTEwNCAwLjkzODUsMC40NDcgMi4wNjg3LDAuMDQ3NiAyLjUxNjMsLTAuODg5IDAuMDQyNSwtMC4wODg3IDAuMDc2MywtMC4xOCAwLjEwMzgsLTAuMjcxNSAtMC44OTYxLC0wLjY2NDcgLTEuNzE3OCwtMS40NDg1IC0yLjQwNjQsLTIuMzU2MiAtMC40NjQzLDAuMTg2NSAtMC44NzQ3LDAuNTI1NiAtMS4xMDQ2LDEuMDA2MyIKICAgICAgIGlkPSJwYXRoMTM4IgogICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZjYztmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgZD0ibSAxNTUuNjQyNywxNDEuMDg0NiBjIDAuMDc0OSwwLjc3NTUgMC43MzYyLDEuMzQ3MyAxLjUxMTUsMS4yNzI0IDAuNzc1MiwtMC4wNzUxIDEuMzQ3NiwtMC43NjgxIDEuMjczLC0xLjU0MzcgLTAuMDE1OSwtMC4xNjUgLTAuMDYwNiwtMC4zMTk4IC0wLjEyNzUsLTAuNDYyMyAtMC43MDk4LC0wLjEyMDggLTEuNDE5NCwtMC4zMjkxIC0yLjE1MDcsLTAuNTk3OSAtMC4zMDU5LDAuMzEzIC0wLjU0OTMsMC44ODQ0IC0wLjUwNjMsMS4zMzE1IgogICAgICAgaWQ9InBhdGgxNDAiCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmNjO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAvPjwvZz48L3N2Zz4= + mediatype: image/svg+xml +name: hdfs-operator +schema: olm.package +--- +schema: olm.channel +package: hdfs-operator +name: stable +entries: + - name: hdfs-operator.v0.0.1 +--- +schema: olm.bundle +image: registry.cn-hangzhou.aliyuncs.com/luwei-dev/hdfs-operator-bundle:v0.0.1 diff --git a/cmd/main.go b/cmd/main.go index 52bbba1..723d24b 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -18,8 +18,11 @@ package main import ( "flag" + "fmt" "os" + "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/metrics/server" + "strings" // Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.) // to ensure that exec-entrypoint and run can make use of them. @@ -68,6 +71,23 @@ func main() { ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts))) + watchNamespaces, err := getWatchNamespaces() + if err != nil { + setupLog.Error(err, "unable to get WatchNamespace, "+ + "the manager will watch and manage resources in all namespaces") + } + + cachedNamespaces := make(map[string]cache.Config) + + if len(watchNamespaces) > 0 { + setupLog.Info("watchNamespaces", "namespaces", watchNamespaces) + cachedNamespaces = make(map[string]cache.Config) + for _, ns := range watchNamespaces { + cachedNamespaces[ns] = cache.Config{} + } + } else { + setupLog.Info("watchNamespaces", "namespaces", "all") + } mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ Scheme: scheme, Metrics: server.Options{BindAddress: metricsAddr}, @@ -85,6 +105,7 @@ func main() { // if you are doing or is intended to do any operation such as perform cleanups // after the manager stops then its usage might be unsafe. // LeaderElectionReleaseOnCancel: true, + Cache: cache.Options{DefaultNamespaces: cachedNamespaces}, }) if err != nil { setupLog.Error(err, "unable to start manager") @@ -116,3 +137,30 @@ func main() { os.Exit(1) } } + +// getWatchNamespaces returns the Namespaces the operator should be watching for changes +func getWatchNamespaces() ([]string, error) { + // WatchNamespacesEnvVar is the constant for env variable WATCH_NAMESPACES + // which specifies the Namespaces to watch. + // An empty value means the operator is running with cluster scope. + var watchNamespacesEnvVar = "WATCH_NAMESPACES" + + ns, found := os.LookupEnv(watchNamespacesEnvVar) + if !found { + return nil, fmt.Errorf("%s must be set", watchNamespacesEnvVar) + } + return cleanNamespaceList(ns), nil +} + +func cleanNamespaceList(namespaces string) (result []string) { + unfilteredList := strings.Split(namespaces, ",") + result = make([]string, 0, len(unfilteredList)) + + for _, elem := range unfilteredList { + elem = strings.TrimSpace(elem) + if len(elem) != 0 { + result = append(result, elem) + } + } + return +} diff --git a/config/manager/kustomization.yaml b/config/manager/kustomization.yaml index fbad4e3..6694943 100644 --- a/config/manager/kustomization.yaml +++ b/config/manager/kustomization.yaml @@ -4,5 +4,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization images: - name: controller - newName: quay.io/zncdata/hdfs-operator + newName: registry.cn-hangzhou.aliyuncs.com/luwei-dev/hdfs-operator newTag: v0.0.1 diff --git a/deploy/catalog.yaml b/deploy/catalog.yaml new file mode 100644 index 0000000..b4198bd --- /dev/null +++ b/deploy/catalog.yaml @@ -0,0 +1,13 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: CatalogSource +metadata: + name: hdfs-catalog + # namespace: olm +spec: + sourceType: grpc + image: registry.cn-hangzhou.aliyuncs.com/luwei-dev/hdfs-operator-catalog:latest + displayName: hdfs-catalog + publisher: zncdata-labs + updateStrategy: + registryPoll: + interval: 20m diff --git a/deploy/cluster.yaml b/deploy/cluster.yaml new file mode 100644 index 0000000..d5805e9 --- /dev/null +++ b/deploy/cluster.yaml @@ -0,0 +1,78 @@ +apiVersion: hdfs.zncdata.dev/v1alpha1 +kind: HdfsCluster +metadata: + labels: + app.kubernetes.io/name: hdfscluster + app.kubernetes.io/instance: hdfscluster-sample + app.kubernetes.io/part-of: hdfs-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: hdfs-operator + name: hdfscluster-sample +spec: + image: + repository: docker.stackable.tech/stackable/hadoop + tag: 3.3.4-stackable24.3.0 + clusterConfig: + zookeeperDiscoveryZNode: sample-hdfs + nameNode: + roleGroups: + default: + replicas: 2 + config: + resources: + cpu: + min: 1 + max: 2 + memory: + limit: "3Gi" + logging: + namenode: + loggers: + test: + level: DEBUG + console: + level: WARN + file: + level: ERROR + formatNameNode: + loggers: + test-format: + level: DEBUG + journalNode: + roleGroups: + default: + replicas: 3 + config: + resources: + cpu: + min: 1 + max: 2 + memory: + limit: "3Gi" + logging: + journalNode: + loggers: + test: + level: DEBUG + console: + level: WARN + file: + level: ERROR + dataNode: + roleGroups: + default: + replicas: 3 + config: + resources: + cpu: + min: 1 + max: 2 + memory: + limit: "3Gi" + logging: + datanode: + loggers: + test: + level: DEBUG + console: + level: WARN \ No newline at end of file diff --git a/deploy/namespace.yaml b/deploy/namespace.yaml new file mode 100644 index 0000000..9c0e6f4 --- /dev/null +++ b/deploy/namespace.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: kubedatastack-operators +--- +apiVersion: v1 +kind: Namespace +metadata: + name: kubedatastack diff --git a/deploy/operator-group.yaml b/deploy/operator-group.yaml new file mode 100644 index 0000000..d35e0f6 --- /dev/null +++ b/deploy/operator-group.yaml @@ -0,0 +1,10 @@ +apiVersion: operators.coreos.com/v1 +kind: OperatorGroup +metadata: + name: zncdata-stack + namespace: kubedatastack-operators +spec: + # if not specified, the operator group will target all namespaces + # so the operator will be able to watch and manage resources in all namespaces + targetNamespaces: + - kubedatastack diff --git a/deploy/subscription.yaml b/deploy/subscription.yaml new file mode 100644 index 0000000..3d765dc --- /dev/null +++ b/deploy/subscription.yaml @@ -0,0 +1,11 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: Subscription +metadata: + name: hdfs-sub + namespace: kubedatastack-operators +spec: + channel: stable + name: hdfs-operator + source: hdfs-catalog + sourceNamespace: olm + installPlanApproval: Automated \ No newline at end of file