diff --git a/go.mod b/go.mod index 7420321dd..a33606cd0 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.21 require ( github.com/ahmetb/gen-crd-api-reference-docs v0.3.0 github.com/gardener/cert-management v0.10.1 - github.com/gardener/gardener v1.85.0 + github.com/gardener/gardener v1.86.0 github.com/go-logr/logr v1.2.4 github.com/onsi/ginkgo/v2 v2.13.0 github.com/onsi/gomega v1.29.0 diff --git a/go.sum b/go.sum index 835118fac..271f5e509 100644 --- a/go.sum +++ b/go.sum @@ -137,8 +137,8 @@ github.com/gardener/cert-management v0.10.1 h1:Y4YYYEaW4SSwPL4OYOqn/HgMekKtSVQ6n github.com/gardener/cert-management v0.10.1/go.mod h1:STtKapgvQVb1gdzLAaBwYXsnlaYzgZXEiMYZO5wWXFE= github.com/gardener/etcd-druid v0.21.0 h1:kgr3KR+lVL4+k2WD+9PMrTY1eePkQ7CZHSCB5A+Q9TQ= github.com/gardener/etcd-druid v0.21.0/go.mod h1:1tAeHycB0Vb2GfCX6sUCc6V6frGrCQI//quVg4K3GNA= -github.com/gardener/gardener v1.85.0 h1:YzEcRkZn0ktmrrtZ2dNQDQDDodZ+jsNQGCu3nrB+C0c= -github.com/gardener/gardener v1.85.0/go.mod h1:8eHlXs2EkaghrgQwK8qEiVw3dZGpNJaq+I9IkPpReA4= +github.com/gardener/gardener v1.86.0 h1:r0DjNZbUc2F/feWDrySZ/AU/5LAr0LoKXdraFtPb6NQ= +github.com/gardener/gardener v1.86.0/go.mod h1:8eHlXs2EkaghrgQwK8qEiVw3dZGpNJaq+I9IkPpReA4= github.com/gardener/hvpa-controller/api v0.5.0 h1:f4F3O7YUrenwh4S3TgPREPiB287JjjUiUL18OqPLyAA= github.com/gardener/hvpa-controller/api v0.5.0/go.mod h1:QQl3ELkCaki+8RhXl0FZMfvnm0WCGwGJlGmrxJj6lvM= github.com/gardener/machine-controller-manager v0.50.0 h1:3dcQjzueFU1TGgprV00adjb3OCR99myTBx8DQGxywks= diff --git a/vendor/github.com/gardener/gardener/hack/.ci/component_descriptor b/vendor/github.com/gardener/gardener/hack/.ci/component_descriptor old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/.ci/doc.go b/vendor/github.com/gardener/gardener/hack/.ci/doc.go old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/.ci/prepare_release b/vendor/github.com/gardener/gardener/hack/.ci/prepare_release old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/.ci/set_dependency_version b/vendor/github.com/gardener/gardener/hack/.ci/set_dependency_version old mode 100755 new mode 100644 index b34e9a491..95997760f --- a/vendor/github.com/gardener/gardener/hack/.ci/set_dependency_version +++ b/vendor/github.com/gardener/gardener/hack/.ci/set_dependency_version @@ -125,7 +125,7 @@ elif name == 'logging': elif name == 'etcd-custom-image': names = ['etcd'] elif name == 'egress-filter-refresher': - names = ['egress-filter-blackholer', 'egress-filter-firewaller'] + names = ['egress-filter'] elif name == 'apiserver-proxy': names = ['apiserver-proxy-sidecar'] else: diff --git a/vendor/github.com/gardener/gardener/hack/LICENSE_BOILERPLATE.txt b/vendor/github.com/gardener/gardener/hack/LICENSE_BOILERPLATE.txt old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/add-license-header.sh b/vendor/github.com/gardener/gardener/hack/add-license-header.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/check-apidiff.sh b/vendor/github.com/gardener/gardener/hack/check-apidiff.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/check-charts.sh b/vendor/github.com/gardener/gardener/hack/check-charts.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/check-generate.sh b/vendor/github.com/gardener/gardener/hack/check-generate.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/check-imports.sh b/vendor/github.com/gardener/gardener/hack/check-imports.sh old mode 100755 new mode 100644 index 2ea80cd25..9da10643b --- a/vendor/github.com/gardener/gardener/hack/check-imports.sh +++ b/vendor/github.com/gardener/gardener/hack/check-imports.sh @@ -31,23 +31,8 @@ echo "> Check Imports" this_module=$(go list -m) -SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" -VGOPATH="$VGOPATH" - -# Ensure that if GOPATH is set, the GOPATH/{bin,pkg} directory exists. This seems to be not always -# the case in certain environments like Prow. As we will create a symlink against the bin folder we -# need to make sure that the bin directory is present in the GOPATH. -if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/bin" ]; then mkdir -p "$GOPATH/bin"; fi -if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/pkg" ]; then mkdir -p "$GOPATH/pkg"; fi - -VIRTUAL_GOPATH="$(mktemp -d)" -trap 'rm -rf "$VIRTUAL_GOPATH"' EXIT - -# Setup virtual GOPATH so the codegen tools work as expected. -(cd "$SCRIPT_DIR/.."; go mod download && "$VGOPATH" -o "$VIRTUAL_GOPATH") - -export GOROOT="${GOROOT:-"$(go env GOROOT)"}" -export GOPATH="$VIRTUAL_GOPATH" +# setup virtual GOPATH +source $(dirname $0)/vgopath-setup.sh # We need to explicitly pass GO111MODULE=off to import-boss as it is significantly slower otherwise, # see https://github.com/kubernetes/code-generator/issues/100. diff --git a/vendor/github.com/gardener/gardener/hack/check-license-header.sh b/vendor/github.com/gardener/gardener/hack/check-license-header.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/check-plutono-dashboards.sh b/vendor/github.com/gardener/gardener/hack/check-plutono-dashboards.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/check-skaffold-deps-for-binary.sh b/vendor/github.com/gardener/gardener/hack/check-skaffold-deps-for-binary.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/check-skaffold-deps.sh b/vendor/github.com/gardener/gardener/hack/check-skaffold-deps.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/check.sh b/vendor/github.com/gardener/gardener/hack/check.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/cherry-pick-pull.sh b/vendor/github.com/gardener/gardener/hack/cherry-pick-pull.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/ci-common.sh b/vendor/github.com/gardener/gardener/hack/ci-common.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-multi-zone.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-multi-zone.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-single-zone.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-single-zone.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration-ha-single-zone.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration-ha-single-zone.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-operator.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-operator.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-upgrade.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-upgrade.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/clean.sh b/vendor/github.com/gardener/gardener/hack/clean.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/compare-k8s-admission-plugins.sh b/vendor/github.com/gardener/gardener/hack/compare-k8s-admission-plugins.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/compare-k8s-api-groups.sh b/vendor/github.com/gardener/gardener/hack/compare-k8s-api-groups.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/compare-k8s-controllers.sh b/vendor/github.com/gardener/gardener/hack/compare-k8s-controllers.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/compare-k8s-feature-gates.sh b/vendor/github.com/gardener/gardener/hack/compare-k8s-feature-gates.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/compute-k8s-controllers.sh b/vendor/github.com/gardener/gardener/hack/compute-k8s-controllers.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/download_gardener_source_code.sh b/vendor/github.com/gardener/gardener/hack/download_gardener_source_code.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/format.sh b/vendor/github.com/gardener/gardener/hack/format.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/gardener-down.sh b/vendor/github.com/gardener/gardener/hack/gardener-down.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/gardener-extensions-down.sh b/vendor/github.com/gardener/gardener/hack/gardener-extensions-down.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/gardener-extensions-up.sh b/vendor/github.com/gardener/gardener/hack/gardener-extensions-up.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/generate-controller-registration.sh b/vendor/github.com/gardener/gardener/hack/generate-controller-registration.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/generate-crds.sh b/vendor/github.com/gardener/gardener/hack/generate-crds.sh old mode 100755 new mode 100644 index 1655ef6e3..89e8372e2 --- a/vendor/github.com/gardener/gardener/hack/generate-crds.sh +++ b/vendor/github.com/gardener/gardener/hack/generate-crds.sh @@ -42,23 +42,9 @@ add_keep_object_annotation=false k8s_io_api_approval_reason="unapproved, temporarily squatting" crd_options="" -SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" -VGOPATH="$VGOPATH" +# setup virtual GOPATH +source $(dirname $0)/vgopath-setup.sh -# Ensure that if GOPATH is set, the GOPATH/{bin,pkg} directory exists. This seems to be not always -# the case in certain environments like Prow. As we will create a symlink against the bin folder we -# need to make sure that the bin directory is present in the GOPATH. -if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/bin" ]; then mkdir -p "$GOPATH/bin"; fi -if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/pkg" ]; then mkdir -p "$GOPATH/pkg"; fi - -VIRTUAL_GOPATH="$(mktemp -d)" -trap 'rm -rf "$VIRTUAL_GOPATH"' EXIT - -# Setup virtual GOPATH so the codegen tools work as expected. -(cd "$SCRIPT_DIR/.."; go mod download && "$VGOPATH" -o "$VIRTUAL_GOPATH") - -export GOROOT="${GOROOT:-"$(go env GOROOT)"}" -export GOPATH="$VIRTUAL_GOPATH" export GO111MODULE=off get_group_package () { diff --git a/vendor/github.com/gardener/gardener/hack/generate-groups.sh b/vendor/github.com/gardener/gardener/hack/generate-groups.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/generate-imagename-constants.sh b/vendor/github.com/gardener/gardener/hack/generate-imagename-constants.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/generate-internal-groups.sh b/vendor/github.com/gardener/gardener/hack/generate-internal-groups.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/generate-logcheck-symlinks.sh b/vendor/github.com/gardener/gardener/hack/generate-logcheck-symlinks.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/generate-monitoring-docs.sh b/vendor/github.com/gardener/gardener/hack/generate-monitoring-docs.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/generate-parallel.sh b/vendor/github.com/gardener/gardener/hack/generate-parallel.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/generate-sequential.sh b/vendor/github.com/gardener/gardener/hack/generate-sequential.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/generate.sh b/vendor/github.com/gardener/gardener/hack/generate.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/get-build-ld-flags.sh b/vendor/github.com/gardener/gardener/hack/get-build-ld-flags.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/hook-me.sh b/vendor/github.com/gardener/gardener/hack/hook-me.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/install.sh b/vendor/github.com/gardener/gardener/hack/install.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/kind-down.sh b/vendor/github.com/gardener/gardener/hack/kind-down.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/kind-extensions-up.sh b/vendor/github.com/gardener/gardener/hack/kind-extensions-up.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/kind-up.sh b/vendor/github.com/gardener/gardener/hack/kind-up.sh old mode 100755 new mode 100644 index 23397b052..f39f9b8c6 --- a/vendor/github.com/gardener/gardener/hack/kind-up.sh +++ b/vendor/github.com/gardener/gardener/hack/kind-up.sh @@ -18,6 +18,7 @@ set -o errexit set -o nounset set -o pipefail +REGISTRY_CACHE=${CI:-false} CLUSTER_NAME="" PATH_CLUSTER_VALUES="" PATH_KUBECONFIG="" @@ -128,6 +129,7 @@ setup_containerd_registry_mirrors() { setup_containerd_registry_mirror $NODE "ghcr.io" "https://ghcr.io" "http://${REGISTRY_HOSTNAME}:5005" setup_containerd_registry_mirror $NODE "registry.k8s.io" "https://registry.k8s.io" "http://${REGISTRY_HOSTNAME}:5006" setup_containerd_registry_mirror $NODE "quay.io" "https://quay.io" "http://${REGISTRY_HOSTNAME}:5007" + setup_containerd_registry_mirror $NODE "europe-docker.pkg.dev" "https://europe-docker.pkg.dev" "http://${REGISTRY_HOSTNAME}:5008" done } @@ -149,6 +151,22 @@ server = "${UPSTREAM_SERVER}" EOF } +check_registry_cache_availability() { + local registry_cache_ip + local registry_cache_dns + if [[ "$REGISTRY_CACHE" != "true" ]]; then + return + fi + echo "Registry-cache enabled. Checking if registry-cache instances are deployed in prow cluster." + for registry_cache_dns in $(kubectl create -k "$(dirname "$0")/../example/gardener-local/registry-prow" --dry-run=client -o yaml | grep kube-system.svc.cluster.local | awk '{ print $2 }' | sed -e "s/^http:\/\///" -e "s/:5000$//"); do + registry_cache_ip=$(getent hosts "$registry_cache_dns" | awk '{ print $1 }') + if [[ "$registry_cache_ip" == "" ]]; then + echo "Unable to resolve IP of $registry_cache_dns in prow cluster. Disabling registry-cache." + REGISTRY_CACHE=false + fi + done +} + parse_flags "$@" mkdir -m 0755 -p \ @@ -262,7 +280,14 @@ kubectl -n kube-system get configmap coredns -ojson | \ kubectl -n kube-system rollout restart deployment coredns if [[ "$DEPLOY_REGISTRY" == "true" ]]; then - kubectl apply -k "$(dirname "$0")/../example/gardener-local/registry" --server-side + check_registry_cache_availability + if [[ "$REGISTRY_CACHE" == "true" ]]; then + echo "Deploying local container registries in registry-cache configuration" + kubectl apply -k "$(dirname "$0")/../example/gardener-local/registry-prow" --server-side + else + echo "Deploying local container registries in default configuration" + kubectl apply -k "$(dirname "$0")/../example/gardener-local/registry" --server-side + fi kubectl wait --for=condition=available deployment -l app=registry -n registry --timeout 5m fi kubectl apply -k "$(dirname "$0")/../example/gardener-local/calico/$IPFAMILY" --server-side diff --git a/vendor/github.com/gardener/gardener/hack/prepare-envtest.sh b/vendor/github.com/gardener/gardener/hack/prepare-envtest.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/start-envtest.sh b/vendor/github.com/gardener/gardener/hack/start-envtest.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/test-cover-clean.sh b/vendor/github.com/gardener/gardener/hack/test-cover-clean.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/test-cover.sh b/vendor/github.com/gardener/gardener/hack/test-cover.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/test-e2e-local.env b/vendor/github.com/gardener/gardener/hack/test-e2e-local.env old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/test-e2e-local.sh b/vendor/github.com/gardener/gardener/hack/test-e2e-local.sh old mode 100755 new mode 100644 index 2d7f6d687..c4e8e2fe7 --- a/vendor/github.com/gardener/gardener/hack/test-e2e-local.sh +++ b/vendor/github.com/gardener/gardener/hack/test-e2e-local.sh @@ -52,6 +52,7 @@ if [[ "$1" != "operator" ]]; then e2e-wake-up-wl.local e2e-migrate.local e2e-migrate-wl.local + e2e-mgr-hib.local e2e-rotate.local e2e-rotate-wl.local e2e-default.local diff --git a/vendor/github.com/gardener/gardener/hack/test-integration.env b/vendor/github.com/gardener/gardener/hack/test-integration.env old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/test-integration.sh b/vendor/github.com/gardener/gardener/hack/test-integration.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/test-prometheus.sh b/vendor/github.com/gardener/gardener/hack/test-prometheus.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/test.sh b/vendor/github.com/gardener/gardener/hack/test.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/tools.go b/vendor/github.com/gardener/gardener/hack/tools.go old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/tools.mk b/vendor/github.com/gardener/gardener/hack/tools.mk old mode 100755 new mode 100644 index b699684ad..b59196f37 --- a/vendor/github.com/gardener/gardener/hack/tools.mk +++ b/vendor/github.com/gardener/gardener/hack/tools.mk @@ -57,18 +57,18 @@ YQ := $(TOOLS_BIN_DIR)/yq VGOPATH := $(TOOLS_BIN_DIR)/vgopath # default tool versions -GOLANGCI_LINT_VERSION ?= v1.55.1 -GO_APIDIFF_VERSION ?= v0.6.1 +GOLANGCI_LINT_VERSION ?= v1.55.2 +GO_APIDIFF_VERSION ?= v0.7.0 GO_ADD_LICENSE_VERSION ?= v1.1.1 -GOIMPORTSREVISER_VERSION ?= v3.5.6 +GOIMPORTSREVISER_VERSION ?= v3.6.0 GO_VULN_CHECK_VERSION ?= latest -HELM_VERSION ?= v3.13.1 +HELM_VERSION ?= v3.13.2 KIND_VERSION ?= v0.20.0 -KUBECTL_VERSION ?= v1.28.3 -PROMTOOL_VERSION ?= 2.47.2 -PROTOC_VERSION ?= 24.4 -SKAFFOLD_VERSION ?= v2.8.0 -YQ_VERSION ?= v4.35.2 +KUBECTL_VERSION ?= v1.28.4 +PROMTOOL_VERSION ?= 2.48.0 +PROTOC_VERSION ?= 25.1 +SKAFFOLD_VERSION ?= v2.9.0 +YQ_VERSION ?= v4.40.4 VGOPATH_VERSION ?= v0.1.3 # tool versions from go.mod diff --git a/vendor/github.com/gardener/gardener/hack/update-codegen.sh b/vendor/github.com/gardener/gardener/hack/update-codegen.sh old mode 100755 new mode 100644 index 4d404a194..d5aca0593 --- a/vendor/github.com/gardener/gardener/hack/update-codegen.sh +++ b/vendor/github.com/gardener/gardener/hack/update-codegen.sh @@ -42,23 +42,8 @@ AVAILABLE_CODEGEN_OPTIONS=( "nodeagent_groups" ) -SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" -VGOPATH="$VGOPATH" - -# Ensure that if GOPATH is set, the GOPATH/{bin,pkg} directory exists. This seems to be not always -# the case in certain environments like Prow. As we will create a symlink against the bin folder we -# need to make sure that the bin directory is present in the GOPATH. -if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/bin" ]; then mkdir -p "$GOPATH/bin"; fi -if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/pkg" ]; then mkdir -p "$GOPATH/pkg"; fi - -VIRTUAL_GOPATH="$(mktemp -d)" -trap 'rm -rf "$VIRTUAL_GOPATH"' EXIT - -# Setup virtual GOPATH so the codegen tools work as expected. -(cd "$SCRIPT_DIR/.."; go mod download && "$VGOPATH" -o "$VIRTUAL_GOPATH") - -export GOROOT="${GOROOT:-"$(go env GOROOT)"}" -export GOPATH="$VIRTUAL_GOPATH" +# setup virtual GOPATH +source $(dirname $0)/vgopath-setup.sh # We need to explicitly pass GO111MODULE=off to k8s.io/code-generator as it is significantly slower otherwise, # see https://github.com/kubernetes/code-generator/issues/100. diff --git a/vendor/github.com/gardener/gardener/hack/update-protobuf.sh b/vendor/github.com/gardener/gardener/hack/update-protobuf.sh old mode 100755 new mode 100644 index e0583c301..656847107 --- a/vendor/github.com/gardener/gardener/hack/update-protobuf.sh +++ b/vendor/github.com/gardener/gardener/hack/update-protobuf.sh @@ -18,23 +18,8 @@ set -o errexit set -o nounset set -o pipefail -SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" -VGOPATH="$VGOPATH" - -# Ensure that if GOPATH is set, the GOPATH/{bin,pkg} directory exists. This seems to be not always -# the case in certain environments like Prow. As we will create a symlink against the bin folder we -# need to make sure that the bin directory is present in the GOPATH. -if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/bin" ]; then mkdir -p "$GOPATH/bin"; fi -if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/pkg" ]; then mkdir -p "$GOPATH/pkg"; fi - -VIRTUAL_GOPATH="$(mktemp -d)" -trap 'rm -rf "$VIRTUAL_GOPATH"' EXIT - -# Setup virtual GOPATH so the codegen tools work as expected. -(cd "$SCRIPT_DIR/.."; go mod download && "$VGOPATH" -o "$VIRTUAL_GOPATH") - -export GOROOT="${GOROOT:-"$(go env GOROOT)"}" -export GOPATH="$VIRTUAL_GOPATH" +# setup virtual GOPATH +source $(dirname $0)/vgopath-setup.sh # We need to explicitly pass GO111MODULE=off to k8s.io/code-generator as it is significantly slower otherwise, # see https://github.com/kubernetes/code-generator/issues/100. diff --git a/vendor/github.com/gardener/gardener/hack/update-skaffold-deps.sh b/vendor/github.com/gardener/gardener/hack/update-skaffold-deps.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/gardener/gardener/hack/vgopath-setup.sh b/vendor/github.com/gardener/gardener/hack/vgopath-setup.sh new file mode 100644 index 000000000..ee841f385 --- /dev/null +++ b/vendor/github.com/gardener/gardener/hack/vgopath-setup.sh @@ -0,0 +1,33 @@ +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# +# 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. + +SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" + +# Ensure that if GOPATH is set, the GOPATH/{bin,pkg} directory exists. This seems to be not always +# the case in certain environments like Prow. As we will create a symlink against the bin folder we +# need to make sure that the bin directory is present in the GOPATH. +if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/bin" ]; then mkdir -p "$GOPATH/bin"; fi +if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/pkg" ]; then mkdir -p "$GOPATH/pkg"; fi + +VIRTUAL_GOPATH="$(mktemp -d)" +trap 'rm -rf "$VIRTUAL_GOPATH"' EXIT + +# Use REPO_ROOT if set, otherwise default to $SCRIPT_DIR/.. +TARGET_DIR="${REPO_ROOT:-$SCRIPT_DIR/..}" + +# Setup virtual GOPATH +(cd "$TARGET_DIR"; go mod download && "$VGOPATH" -o "$VIRTUAL_GOPATH") + +export GOROOT="${GOROOT:-"$(go env GOROOT)"}" +export GOPATH="$VIRTUAL_GOPATH" diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/register.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/register.go index 35263a6e7..6bba21a9d 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/register.go @@ -47,7 +47,7 @@ var ( // Adds the list of known types to the given scheme. func addKnownTypes(scheme *runtime.Scheme) error { scheme.AddKnownTypes(SchemeGroupVersion, - &AdminKubeconfigRequest{}, + &KubeconfigRequest{}, ) return nil } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/types_adminkubeconfigrequest.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/types_kubeconfigrequest.go similarity index 54% rename from vendor/github.com/gardener/gardener/pkg/apis/authentication/types_adminkubeconfigrequest.go rename to vendor/github.com/gardener/gardener/pkg/apis/authentication/types_kubeconfigrequest.go index 3ffa508ac..6c588347f 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/types_adminkubeconfigrequest.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/types_kubeconfigrequest.go @@ -1,5 +1,5 @@ /* -Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -23,32 +23,31 @@ import ( // +genclient // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// AdminKubeconfigRequest can be used to request a kubeconfig with admin credentials -// for a Shoot cluster. -type AdminKubeconfigRequest struct { +// KubeconfigRequest can be used to request a kubeconfig for a Shoot cluster. +type KubeconfigRequest struct { metav1.TypeMeta // Standard object metadata. metav1.ObjectMeta - // Spec is the specification of the AdminKubeconfigRequest. - Spec AdminKubeconfigRequestSpec - // Status is the status of the AdminKubeconfigRequest. - Status AdminKubeconfigRequestStatus + // Spec is the specification of the KubeconfigRequest. + Spec KubeconfigRequestSpec + // Status is the status of the KubeconfigRequest. + Status KubeconfigRequestStatus } -// AdminKubeconfigRequestStatus is the status of the AdminKubeconfigRequest containing -// the kubeconfig and expiration of the credential. -type AdminKubeconfigRequestStatus struct { - // Kubeconfig contains the kubeconfig with cluster-admin privileges for the shoot cluster. +// KubeconfigRequestSpec contains the expiration time of the kubeconfig. +type KubeconfigRequestSpec struct { + // ExpirationSeconds is the requested validity duration of the credential. The credential issuer may return a + // credential with a different validity duration so a client needs to check the 'expirationTimestamp' field in a + // response. + // Defaults to 1 hour. + ExpirationSeconds int64 +} + +// KubeconfigRequestStatus is the status of the KubeconfigRequest containing the kubeconfig and expiration of the +// credential. +type KubeconfigRequestStatus struct { + // Kubeconfig contains the kubeconfig for the shoot cluster. Kubeconfig []byte // ExpirationTimestamp is the expiration timestamp of the returned credential. ExpirationTimestamp metav1.Time } - -// AdminKubeconfigRequestSpec contains the expiration time of the kubeconfig. -type AdminKubeconfigRequestSpec struct { - // ExpirationSeconds is the requested validity duration of the credential. The - // credential issuer may return a credential with a different validity duration so a - // client needs to check the 'expirationTimestamp' field in a response. - // Defaults to 1 hour. - ExpirationSeconds int64 -} diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/conversions.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/conversions.go new file mode 100644 index 000000000..b04a15224 --- /dev/null +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/conversions.go @@ -0,0 +1,51 @@ +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// +// 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. + +//nolint:revive +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/utils/pointer" + + "github.com/gardener/gardener/pkg/apis/authentication" +) + +func Convert_v1alpha1_AdminKubeconfigRequest_To_authentication_KubeconfigRequest(in *AdminKubeconfigRequest, out *authentication.KubeconfigRequest, _ conversion.Scope) error { + out.Spec.ExpirationSeconds = pointer.Int64Deref(in.Spec.ExpirationSeconds, 0) + out.Status.Kubeconfig = in.Status.Kubeconfig + out.Status.ExpirationTimestamp = in.Status.ExpirationTimestamp + return nil +} + +func Convert_authentication_KubeconfigRequest_To_v1alpha1_AdminKubeconfigRequest(in *authentication.KubeconfigRequest, out *AdminKubeconfigRequest, _ conversion.Scope) error { + out.Spec.ExpirationSeconds = &in.Spec.ExpirationSeconds + out.Status.Kubeconfig = in.Status.Kubeconfig + out.Status.ExpirationTimestamp = in.Status.ExpirationTimestamp + return nil +} + +func Convert_v1alpha1_ViewerKubeconfigRequest_To_authentication_KubeconfigRequest(in *ViewerKubeconfigRequest, out *authentication.KubeconfigRequest, _ conversion.Scope) error { + out.Spec.ExpirationSeconds = pointer.Int64Deref(in.Spec.ExpirationSeconds, 0) + out.Status.Kubeconfig = in.Status.Kubeconfig + out.Status.ExpirationTimestamp = in.Status.ExpirationTimestamp + return nil +} + +func Convert_authentication_KubeconfigRequest_To_v1alpha1_ViewerKubeconfigRequest(in *authentication.KubeconfigRequest, out *ViewerKubeconfigRequest, _ conversion.Scope) error { + out.Spec.ExpirationSeconds = &in.Spec.ExpirationSeconds + out.Status.Kubeconfig = in.Status.Kubeconfig + out.Status.ExpirationTimestamp = in.Status.ExpirationTimestamp + return nil +} diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/defaults.go new file mode 100644 index 000000000..84a181886 --- /dev/null +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/defaults.go @@ -0,0 +1,25 @@ +/* +Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file + +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. +*/ + +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return RegisterDefaults(scheme) +} diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/defaults_adminkubeconfigrequest.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/defaults_adminkubeconfigrequest.go index ad987fd35..fc22bdbad 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/defaults_adminkubeconfigrequest.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/defaults_adminkubeconfigrequest.go @@ -17,14 +17,9 @@ limitations under the License. package v1alpha1 import ( - "k8s.io/apimachinery/pkg/runtime" "k8s.io/utils/pointer" ) -func addDefaultingFuncs(scheme *runtime.Scheme) error { - return RegisterDefaults(scheme) -} - // SetDefaults_AdminKubeconfigRequestSpec sets default values for AdminKubeconfigRequestSpec objects. func SetDefaults_AdminKubeconfigRequestSpec(obj *AdminKubeconfigRequestSpec) { if obj.ExpirationSeconds == nil { diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/defaults_viewerkubeconfigrequest.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/defaults_viewerkubeconfigrequest.go new file mode 100644 index 000000000..a8e2e9b35 --- /dev/null +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/defaults_viewerkubeconfigrequest.go @@ -0,0 +1,28 @@ +/* +Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file + +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. +*/ + +package v1alpha1 + +import ( + "k8s.io/utils/pointer" +) + +// SetDefaults_ViewerKubeconfigRequestSpec sets default values for ViewerKubeconfigRequestSpec objects. +func SetDefaults_ViewerKubeconfigRequestSpec(obj *ViewerKubeconfigRequestSpec) { + if obj.ExpirationSeconds == nil { + obj.ExpirationSeconds = pointer.Int64(60 * 60) + } +} diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/generated.pb.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/generated.pb.go index 4b9e29081..1d390a71d 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/generated.pb.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/generated.pb.go @@ -126,10 +126,97 @@ func (m *AdminKubeconfigRequestStatus) XXX_DiscardUnknown() { var xxx_messageInfo_AdminKubeconfigRequestStatus proto.InternalMessageInfo +func (m *ViewerKubeconfigRequest) Reset() { *m = ViewerKubeconfigRequest{} } +func (*ViewerKubeconfigRequest) ProtoMessage() {} +func (*ViewerKubeconfigRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_4ad0cb10cdbf25b8, []int{3} +} +func (m *ViewerKubeconfigRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ViewerKubeconfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *ViewerKubeconfigRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ViewerKubeconfigRequest.Merge(m, src) +} +func (m *ViewerKubeconfigRequest) XXX_Size() int { + return m.Size() +} +func (m *ViewerKubeconfigRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ViewerKubeconfigRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ViewerKubeconfigRequest proto.InternalMessageInfo + +func (m *ViewerKubeconfigRequestSpec) Reset() { *m = ViewerKubeconfigRequestSpec{} } +func (*ViewerKubeconfigRequestSpec) ProtoMessage() {} +func (*ViewerKubeconfigRequestSpec) Descriptor() ([]byte, []int) { + return fileDescriptor_4ad0cb10cdbf25b8, []int{4} +} +func (m *ViewerKubeconfigRequestSpec) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ViewerKubeconfigRequestSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *ViewerKubeconfigRequestSpec) XXX_Merge(src proto.Message) { + xxx_messageInfo_ViewerKubeconfigRequestSpec.Merge(m, src) +} +func (m *ViewerKubeconfigRequestSpec) XXX_Size() int { + return m.Size() +} +func (m *ViewerKubeconfigRequestSpec) XXX_DiscardUnknown() { + xxx_messageInfo_ViewerKubeconfigRequestSpec.DiscardUnknown(m) +} + +var xxx_messageInfo_ViewerKubeconfigRequestSpec proto.InternalMessageInfo + +func (m *ViewerKubeconfigRequestStatus) Reset() { *m = ViewerKubeconfigRequestStatus{} } +func (*ViewerKubeconfigRequestStatus) ProtoMessage() {} +func (*ViewerKubeconfigRequestStatus) Descriptor() ([]byte, []int) { + return fileDescriptor_4ad0cb10cdbf25b8, []int{5} +} +func (m *ViewerKubeconfigRequestStatus) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ViewerKubeconfigRequestStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *ViewerKubeconfigRequestStatus) XXX_Merge(src proto.Message) { + xxx_messageInfo_ViewerKubeconfigRequestStatus.Merge(m, src) +} +func (m *ViewerKubeconfigRequestStatus) XXX_Size() int { + return m.Size() +} +func (m *ViewerKubeconfigRequestStatus) XXX_DiscardUnknown() { + xxx_messageInfo_ViewerKubeconfigRequestStatus.DiscardUnknown(m) +} + +var xxx_messageInfo_ViewerKubeconfigRequestStatus proto.InternalMessageInfo + func init() { proto.RegisterType((*AdminKubeconfigRequest)(nil), "github.com.gardener.gardener.pkg.apis.authentication.v1alpha1.AdminKubeconfigRequest") proto.RegisterType((*AdminKubeconfigRequestSpec)(nil), "github.com.gardener.gardener.pkg.apis.authentication.v1alpha1.AdminKubeconfigRequestSpec") proto.RegisterType((*AdminKubeconfigRequestStatus)(nil), "github.com.gardener.gardener.pkg.apis.authentication.v1alpha1.AdminKubeconfigRequestStatus") + proto.RegisterType((*ViewerKubeconfigRequest)(nil), "github.com.gardener.gardener.pkg.apis.authentication.v1alpha1.ViewerKubeconfigRequest") + proto.RegisterType((*ViewerKubeconfigRequestSpec)(nil), "github.com.gardener.gardener.pkg.apis.authentication.v1alpha1.ViewerKubeconfigRequestSpec") + proto.RegisterType((*ViewerKubeconfigRequestStatus)(nil), "github.com.gardener.gardener.pkg.apis.authentication.v1alpha1.ViewerKubeconfigRequestStatus") } func init() { @@ -137,37 +224,40 @@ func init() { } var fileDescriptor_4ad0cb10cdbf25b8 = []byte{ - // 469 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x94, 0x41, 0x6b, 0xd4, 0x40, - 0x14, 0xc7, 0x33, 0x6d, 0x29, 0x32, 0x96, 0x42, 0x53, 0x94, 0x65, 0x95, 0x59, 0xd9, 0x93, 0x08, - 0x4e, 0x5c, 0x11, 0xf1, 0xd2, 0x83, 0x91, 0x9e, 0xa4, 0x08, 0xa9, 0x17, 0xf5, 0xe2, 0xdb, 0xc9, - 0x6b, 0x32, 0xae, 0x49, 0xc6, 0xcc, 0x64, 0xb1, 0x78, 0x11, 0xfc, 0x02, 0x7e, 0xac, 0xf5, 0xd6, - 0x63, 0x4f, 0x8b, 0x1b, 0x3f, 0x87, 0x20, 0x33, 0x9b, 0x36, 0x6b, 0xb7, 0x55, 0x61, 0xf1, 0xf6, - 0x5e, 0xe6, 0xfd, 0xff, 0xbf, 0x7f, 0xe6, 0x85, 0xd0, 0x83, 0x44, 0x9a, 0xb4, 0x1a, 0x72, 0x51, - 0x64, 0x41, 0x02, 0x65, 0x8c, 0x39, 0x96, 0x6d, 0xa1, 0x46, 0x49, 0x00, 0x4a, 0xea, 0x00, 0x2a, - 0x93, 0x62, 0x6e, 0xa4, 0x00, 0x23, 0x8b, 0x3c, 0x18, 0x0f, 0xe0, 0xbd, 0x4a, 0x61, 0x10, 0x24, - 0x76, 0x0c, 0x0c, 0xc6, 0x5c, 0x95, 0x85, 0x29, 0xfc, 0xbd, 0xd6, 0x8e, 0x9f, 0xb9, 0xb4, 0x85, - 0x1a, 0x25, 0xdc, 0xda, 0xf1, 0xdf, 0xed, 0xf8, 0x99, 0x5d, 0xf7, 0xfe, 0x62, 0x9a, 0x22, 0x29, - 0x02, 0xe7, 0x3a, 0xac, 0x8e, 0x5c, 0xe7, 0x1a, 0x57, 0xcd, 0x69, 0xdd, 0x47, 0xa3, 0x27, 0x9a, - 0xcb, 0xc2, 0x46, 0xcc, 0x40, 0xa4, 0x32, 0xc7, 0xf2, 0xb8, 0xcd, 0x9c, 0xa1, 0x81, 0x60, 0xbc, - 0x94, 0xb1, 0x1b, 0x5c, 0xa5, 0x2a, 0xab, 0xdc, 0xc8, 0x0c, 0x97, 0x04, 0x8f, 0xff, 0x26, 0xd0, - 0x22, 0xc5, 0x0c, 0x2e, 0xea, 0xfa, 0x3f, 0xd7, 0xe8, 0xcd, 0xa7, 0x71, 0x26, 0xf3, 0xe7, 0xd5, - 0x10, 0x45, 0x91, 0x1f, 0xc9, 0x24, 0xc2, 0x0f, 0x15, 0x6a, 0xe3, 0xbf, 0xa5, 0xd7, 0x6c, 0xbc, - 0x18, 0x0c, 0x74, 0xc8, 0x1d, 0x72, 0xf7, 0xfa, 0xc3, 0x07, 0x7c, 0x4e, 0xe1, 0x8b, 0x94, 0xf6, - 0xc6, 0xec, 0x34, 0x1f, 0x0f, 0xf8, 0x8b, 0xe1, 0x3b, 0x14, 0xe6, 0x00, 0x0d, 0x84, 0xfe, 0x64, - 0xda, 0xf3, 0xea, 0x69, 0x8f, 0xb6, 0xcf, 0xa2, 0x73, 0x57, 0xff, 0x13, 0xdd, 0xd0, 0x0a, 0x45, - 0x67, 0xcd, 0xb9, 0xbf, 0xe2, 0x2b, 0x2d, 0x86, 0x5f, 0xfe, 0x1a, 0x87, 0x0a, 0x45, 0xb8, 0xd5, - 0xc4, 0xd8, 0xb0, 0x5d, 0xe4, 0xa0, 0xfe, 0x17, 0x42, 0x37, 0xb5, 0x01, 0x53, 0xe9, 0xce, 0xba, - 0xe3, 0xbf, 0xf9, 0x3f, 0x7c, 0x87, 0x08, 0xb7, 0x9b, 0x04, 0x9b, 0xf3, 0x3e, 0x6a, 0xd0, 0x7d, - 0xa0, 0xdd, 0xab, 0x73, 0xfb, 0xcf, 0xe8, 0x0e, 0x7e, 0x54, 0xb2, 0x74, 0xa4, 0x43, 0x3b, 0x10, - 0x6b, 0xb7, 0x8b, 0xf5, 0xf0, 0x46, 0x3d, 0xed, 0xed, 0xec, 0x5f, 0x3c, 0x8c, 0x96, 0xe7, 0xfb, - 0xdf, 0x08, 0xbd, 0xfd, 0xa7, 0x6c, 0x3e, 0xa7, 0x74, 0x74, 0x7e, 0xe4, 0xec, 0xb7, 0xc2, 0x6d, - 0xbb, 0xb4, 0x05, 0xc1, 0xc2, 0x84, 0x7f, 0x4c, 0x77, 0x5b, 0xca, 0x4b, 0x99, 0xa1, 0x36, 0x90, - 0xa9, 0x66, 0x8b, 0xf7, 0xfe, 0xed, 0x1b, 0xb1, 0xb2, 0xf0, 0x56, 0x73, 0x29, 0xbb, 0xfb, 0xcb, - 0x76, 0xd1, 0x65, 0x8c, 0x50, 0x4c, 0x66, 0xcc, 0x3b, 0x99, 0x31, 0xef, 0x74, 0xc6, 0xbc, 0xcf, - 0x35, 0x23, 0x93, 0x9a, 0x91, 0x93, 0x9a, 0x91, 0xd3, 0x9a, 0x91, 0xef, 0x35, 0x23, 0x5f, 0x7f, - 0x30, 0xef, 0xf5, 0xde, 0x4a, 0x3f, 0x8c, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xac, 0xfa, 0xde, - 0x47, 0x70, 0x04, 0x00, 0x00, + // 524 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x55, 0x4f, 0x6b, 0xd4, 0x40, + 0x14, 0xcf, 0x74, 0x4b, 0x91, 0xb1, 0x14, 0x9a, 0xa2, 0x2e, 0x5b, 0xcd, 0xca, 0x9e, 0x44, 0x70, + 0xe2, 0x8a, 0x88, 0x97, 0x1e, 0x8c, 0xf4, 0x24, 0x45, 0x48, 0x45, 0xb0, 0x7a, 0x70, 0x92, 0xbc, + 0x26, 0xe3, 0x9a, 0x64, 0xcc, 0x4c, 0x56, 0x8b, 0x1e, 0x0a, 0xfa, 0x01, 0xfc, 0x58, 0xab, 0xa7, + 0x1e, 0x7b, 0x5a, 0xdc, 0xf8, 0x39, 0x04, 0x99, 0xd9, 0xb4, 0xd9, 0xee, 0x76, 0x57, 0x61, 0x5d, + 0xa4, 0xb7, 0xf7, 0x32, 0xef, 0xf7, 0x67, 0xe6, 0xfd, 0x20, 0x78, 0x27, 0x64, 0x32, 0xca, 0x3d, + 0xe2, 0xa7, 0xb1, 0x1d, 0xd2, 0x2c, 0x80, 0x04, 0xb2, 0xaa, 0xe0, 0x9d, 0xd0, 0xa6, 0x9c, 0x09, + 0x9b, 0xe6, 0x32, 0x82, 0x44, 0x32, 0x9f, 0x4a, 0x96, 0x26, 0x76, 0xb7, 0x4d, 0xdf, 0xf2, 0x88, + 0xb6, 0xed, 0x50, 0x8d, 0x51, 0x09, 0x01, 0xe1, 0x59, 0x2a, 0x53, 0x73, 0xab, 0xa2, 0x23, 0x27, + 0x2c, 0x55, 0xc1, 0x3b, 0x21, 0x51, 0x74, 0xe4, 0x2c, 0x1d, 0x39, 0xa1, 0x6b, 0xdc, 0x19, 0x75, + 0x93, 0x86, 0xa9, 0xad, 0x59, 0xbd, 0x7c, 0x5f, 0x77, 0xba, 0xd1, 0xd5, 0x50, 0xad, 0x71, 0xbf, + 0xf3, 0x50, 0x10, 0x96, 0x2a, 0x8b, 0x31, 0xf5, 0x23, 0x96, 0x40, 0x76, 0x50, 0x79, 0x8e, 0x41, + 0x52, 0xbb, 0x3b, 0xe1, 0xb1, 0x61, 0x4f, 0x43, 0x65, 0x79, 0x22, 0x59, 0x0c, 0x13, 0x80, 0x07, + 0x7f, 0x02, 0x08, 0x3f, 0x82, 0x98, 0x8e, 0xe3, 0x5a, 0xbf, 0x96, 0xf0, 0xd5, 0x47, 0x41, 0xcc, + 0x92, 0x27, 0xb9, 0x07, 0x7e, 0x9a, 0xec, 0xb3, 0xd0, 0x85, 0x77, 0x39, 0x08, 0x69, 0xbe, 0xc6, + 0x97, 0x94, 0xbd, 0x80, 0x4a, 0x5a, 0x47, 0x37, 0xd1, 0xad, 0xcb, 0xf7, 0xee, 0x92, 0xa1, 0x0a, + 0x19, 0x55, 0xa9, 0x5e, 0x4c, 0x4d, 0x93, 0x6e, 0x9b, 0x3c, 0xf5, 0xde, 0x80, 0x2f, 0x77, 0x40, + 0x52, 0xc7, 0xec, 0xf5, 0x9b, 0x46, 0xd1, 0x6f, 0xe2, 0xea, 0x9b, 0x7b, 0xca, 0x6a, 0x7e, 0xc4, + 0xcb, 0x82, 0x83, 0x5f, 0x5f, 0xd2, 0xec, 0x2f, 0xc8, 0x5c, 0x8b, 0x21, 0xe7, 0x5f, 0x63, 0x97, + 0x83, 0xef, 0xac, 0x96, 0x36, 0x96, 0x55, 0xe7, 0x6a, 0x51, 0xf3, 0x33, 0xc2, 0x2b, 0x42, 0x52, + 0x99, 0x8b, 0x7a, 0x4d, 0xeb, 0xbf, 0x5c, 0x8c, 0xbe, 0x96, 0x70, 0xd6, 0x4a, 0x07, 0x2b, 0xc3, + 0xde, 0x2d, 0xa5, 0x5b, 0x14, 0x37, 0xa6, 0xfb, 0x36, 0x1f, 0xe3, 0x75, 0xf8, 0xc0, 0x59, 0xa6, + 0x95, 0x76, 0xd5, 0x40, 0x20, 0xf4, 0x2e, 0x6a, 0xce, 0x95, 0xa2, 0xdf, 0x5c, 0xdf, 0x1e, 0x3f, + 0x74, 0x27, 0xe7, 0x5b, 0xdf, 0x10, 0xbe, 0x3e, 0xcb, 0x9b, 0x49, 0x30, 0xee, 0x9c, 0x1e, 0x69, + 0xfa, 0x55, 0x67, 0x4d, 0x2d, 0x6d, 0x04, 0x30, 0x32, 0x61, 0x1e, 0xe0, 0x8d, 0x4a, 0xe5, 0x19, + 0x8b, 0x41, 0x48, 0x1a, 0xf3, 0x72, 0x8b, 0xb7, 0xff, 0x2e, 0x23, 0x0a, 0xe6, 0x6c, 0x96, 0x8f, + 0xb2, 0xb1, 0x3d, 0x49, 0xe7, 0x9e, 0xa7, 0xd1, 0x3a, 0xac, 0xe1, 0x6b, 0xcf, 0x19, 0xbc, 0x87, + 0xec, 0x7f, 0xe4, 0xf5, 0xd3, 0x99, 0xbc, 0xee, 0xcd, 0x99, 0x97, 0x29, 0xf7, 0x98, 0x1a, 0xd8, + 0x2f, 0xe3, 0x81, 0x7d, 0xb5, 0x20, 0x03, 0xb3, 0x13, 0xeb, 0xe1, 0xcd, 0x19, 0xce, 0xff, 0x4d, + 0x64, 0xbf, 0x23, 0x7c, 0x63, 0xa6, 0xbb, 0x0b, 0x94, 0x59, 0xc7, 0xef, 0x0d, 0x2c, 0xe3, 0x68, + 0x60, 0x19, 0xc7, 0x03, 0xcb, 0x38, 0x2c, 0x2c, 0xd4, 0x2b, 0x2c, 0x74, 0x54, 0x58, 0xe8, 0xb8, + 0xb0, 0xd0, 0x8f, 0xc2, 0x42, 0x5f, 0x7f, 0x5a, 0xc6, 0xde, 0xd6, 0x5c, 0x3f, 0xb9, 0xdf, 0x01, + 0x00, 0x00, 0xff, 0xff, 0x70, 0x4f, 0x31, 0xf7, 0x24, 0x07, 0x00, 0x00, } func (m *AdminKubeconfigRequest) Marshal() (dAtA []byte, err error) { @@ -291,6 +381,127 @@ func (m *AdminKubeconfigRequestStatus) MarshalToSizedBuffer(dAtA []byte) (int, e return len(dAtA) - i, nil } +func (m *ViewerKubeconfigRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ViewerKubeconfigRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ViewerKubeconfigRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Status.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + { + size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + { + size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *ViewerKubeconfigRequestSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ViewerKubeconfigRequestSpec) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ViewerKubeconfigRequestSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.ExpirationSeconds != nil { + i = encodeVarintGenerated(dAtA, i, uint64(*m.ExpirationSeconds)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *ViewerKubeconfigRequestStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ViewerKubeconfigRequestStatus) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ViewerKubeconfigRequestStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.ExpirationTimestamp.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if m.Kubeconfig != nil { + i -= len(m.Kubeconfig) + copy(dAtA[i:], m.Kubeconfig) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kubeconfig))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { offset -= sovGenerated(v) base := offset @@ -344,6 +555,48 @@ func (m *AdminKubeconfigRequestStatus) Size() (n int) { return n } +func (m *ViewerKubeconfigRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ViewerKubeconfigRequestSpec) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ExpirationSeconds != nil { + n += 1 + sovGenerated(uint64(*m.ExpirationSeconds)) + } + return n +} + +func (m *ViewerKubeconfigRequestStatus) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Kubeconfig != nil { + l = len(m.Kubeconfig) + n += 1 + l + sovGenerated(uint64(l)) + } + l = m.ExpirationTimestamp.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + func sovGenerated(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -383,6 +636,39 @@ func (this *AdminKubeconfigRequestStatus) String() string { }, "") return s } +func (this *ViewerKubeconfigRequest) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ViewerKubeconfigRequest{`, + `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ViewerKubeconfigRequestSpec", "ViewerKubeconfigRequestSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "ViewerKubeconfigRequestStatus", "ViewerKubeconfigRequestStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ViewerKubeconfigRequestSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ViewerKubeconfigRequestSpec{`, + `ExpirationSeconds:` + valueToStringGenerated(this.ExpirationSeconds) + `,`, + `}`, + }, "") + return s +} +func (this *ViewerKubeconfigRequestStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ViewerKubeconfigRequestStatus{`, + `Kubeconfig:` + valueToStringGenerated(this.Kubeconfig) + `,`, + `ExpirationTimestamp:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ExpirationTimestamp), "Time", "v1.Time", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} func valueToStringGenerated(v interface{}) string { rv := reflect.ValueOf(v) if rv.IsNil() { @@ -727,6 +1013,342 @@ func (m *AdminKubeconfigRequestStatus) Unmarshal(dAtA []byte) error { } return nil } +func (m *ViewerKubeconfigRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ViewerKubeconfigRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ViewerKubeconfigRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ViewerKubeconfigRequestSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ViewerKubeconfigRequestSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ViewerKubeconfigRequestSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpirationSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.ExpirationSeconds = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ViewerKubeconfigRequestStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ViewerKubeconfigRequestStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ViewerKubeconfigRequestStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kubeconfig", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kubeconfig = append(m.Kubeconfig[:0], dAtA[iNdEx:postIndex]...) + if m.Kubeconfig == nil { + m.Kubeconfig = []byte{} + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpirationTimestamp", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ExpirationTimestamp.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipGenerated(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/generated.proto b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/generated.proto index be4e0c734..d5caaa6a0 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/generated.proto +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/generated.proto @@ -60,3 +60,36 @@ message AdminKubeconfigRequestStatus { optional k8s.io.apimachinery.pkg.apis.meta.v1.Time expirationTimestamp = 2; } +// ViewerKubeconfigRequest can be used to request a kubeconfig with viewer credentials (excluding Secrets) +// for a Shoot cluster. +message ViewerKubeconfigRequest { + // Standard object metadata. + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec is the specification of the ViewerKubeconfigRequest. + optional ViewerKubeconfigRequestSpec spec = 2; + + // Status is the status of the ViewerKubeconfigRequest. + optional ViewerKubeconfigRequestStatus status = 3; +} + +// ViewerKubeconfigRequestSpec contains the expiration time of the kubeconfig. +message ViewerKubeconfigRequestSpec { + // ExpirationSeconds is the requested validity duration of the credential. The + // credential issuer may return a credential with a different validity duration so a + // client needs to check the 'expirationTimestamp' field in a response. + // Defaults to 1 hour. + // +optional + optional int64 expirationSeconds = 1; +} + +// ViewerKubeconfigRequestStatus is the status of the ViewerKubeconfigRequest containing +// the kubeconfig and expiration of the credential. +message ViewerKubeconfigRequestStatus { + // Kubeconfig contains the kubeconfig with viewer privileges (excluding Secrets) for the shoot cluster. + optional bytes kubeconfig = 1; + + // ExpirationTimestamp is the expiration timestamp of the returned credential. + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time expirationTimestamp = 2; +} + diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/register.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/register.go index 3d51bc136..ffe9df3a8 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/register.go @@ -48,6 +48,7 @@ var ( func addKnownTypes(scheme *runtime.Scheme) error { scheme.AddKnownTypes(SchemeGroupVersion, &AdminKubeconfigRequest{}, + &ViewerKubeconfigRequest{}, ) return nil } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/types_adminkubeconfigrequest.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/types_adminkubeconfigrequest.go index 5df13609b..1a0ab71b1 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/types_adminkubeconfigrequest.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/types_adminkubeconfigrequest.go @@ -39,9 +39,9 @@ type AdminKubeconfigRequest struct { // the kubeconfig and expiration of the credential. type AdminKubeconfigRequestStatus struct { // Kubeconfig contains the kubeconfig with cluster-admin privileges for the shoot cluster. - Kubeconfig []byte `json:"kubeconfig" protobuf:"bytes,1,name=kubeconfig"` + Kubeconfig []byte `json:"kubeconfig" protobuf:"bytes,1,opt,name=kubeconfig"` // ExpirationTimestamp is the expiration timestamp of the returned credential. - ExpirationTimestamp metav1.Time `json:"expirationTimestamp" protobuf:"bytes,2,name=expirationTimestamp"` + ExpirationTimestamp metav1.Time `json:"expirationTimestamp" protobuf:"bytes,2,opt,name=expirationTimestamp"` } // AdminKubeconfigRequestSpec contains the expiration time of the kubeconfig. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/types_viewerkubeconfigrequest.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/types_viewerkubeconfigrequest.go new file mode 100644 index 000000000..df4ff2870 --- /dev/null +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/types_viewerkubeconfigrequest.go @@ -0,0 +1,55 @@ +/* +Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file + +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. +*/ + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ViewerKubeconfigRequest can be used to request a kubeconfig with viewer credentials (excluding Secrets) +// for a Shoot cluster. +type ViewerKubeconfigRequest struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata. + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + // Spec is the specification of the ViewerKubeconfigRequest. + Spec ViewerKubeconfigRequestSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + // Status is the status of the ViewerKubeconfigRequest. + Status ViewerKubeconfigRequestStatus `json:"status" protobuf:"bytes,3,opt,name=status"` +} + +// ViewerKubeconfigRequestStatus is the status of the ViewerKubeconfigRequest containing +// the kubeconfig and expiration of the credential. +type ViewerKubeconfigRequestStatus struct { + // Kubeconfig contains the kubeconfig with viewer privileges (excluding Secrets) for the shoot cluster. + Kubeconfig []byte `json:"kubeconfig" protobuf:"bytes,1,opt,name=kubeconfig"` + // ExpirationTimestamp is the expiration timestamp of the returned credential. + ExpirationTimestamp metav1.Time `json:"expirationTimestamp" protobuf:"bytes,2,opt,name=expirationTimestamp"` +} + +// ViewerKubeconfigRequestSpec contains the expiration time of the kubeconfig. +type ViewerKubeconfigRequestSpec struct { + // ExpirationSeconds is the requested validity duration of the credential. The + // credential issuer may return a credential with a different validity duration so a + // client needs to check the 'expirationTimestamp' field in a response. + // Defaults to 1 hour. + // +optional + ExpirationSeconds *int64 `json:"expirationSeconds,omitempty" protobuf:"varint,1,opt,name=expirationSeconds"` +} diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.conversion.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.conversion.go index 0b4cbd3e3..a92a42e23 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.conversion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.conversion.go @@ -22,10 +22,7 @@ limitations under the License. package v1alpha1 import ( - unsafe "unsafe" - authentication "github.com/gardener/gardener/pkg/apis/authentication" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" ) @@ -37,113 +34,25 @@ func init() { // RegisterConversions adds conversion functions to the given scheme. // Public to allow building arbitrary schemes. func RegisterConversions(s *runtime.Scheme) error { - if err := s.AddGeneratedConversionFunc((*AdminKubeconfigRequest)(nil), (*authentication.AdminKubeconfigRequest)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_AdminKubeconfigRequest_To_authentication_AdminKubeconfigRequest(a.(*AdminKubeconfigRequest), b.(*authentication.AdminKubeconfigRequest), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*authentication.AdminKubeconfigRequest)(nil), (*AdminKubeconfigRequest)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_authentication_AdminKubeconfigRequest_To_v1alpha1_AdminKubeconfigRequest(a.(*authentication.AdminKubeconfigRequest), b.(*AdminKubeconfigRequest), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*AdminKubeconfigRequestSpec)(nil), (*authentication.AdminKubeconfigRequestSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_AdminKubeconfigRequestSpec_To_authentication_AdminKubeconfigRequestSpec(a.(*AdminKubeconfigRequestSpec), b.(*authentication.AdminKubeconfigRequestSpec), scope) + if err := s.AddConversionFunc((*authentication.KubeconfigRequest)(nil), (*AdminKubeconfigRequest)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_authentication_KubeconfigRequest_To_v1alpha1_AdminKubeconfigRequest(a.(*authentication.KubeconfigRequest), b.(*AdminKubeconfigRequest), scope) }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*authentication.AdminKubeconfigRequestSpec)(nil), (*AdminKubeconfigRequestSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_authentication_AdminKubeconfigRequestSpec_To_v1alpha1_AdminKubeconfigRequestSpec(a.(*authentication.AdminKubeconfigRequestSpec), b.(*AdminKubeconfigRequestSpec), scope) + if err := s.AddConversionFunc((*authentication.KubeconfigRequest)(nil), (*ViewerKubeconfigRequest)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_authentication_KubeconfigRequest_To_v1alpha1_ViewerKubeconfigRequest(a.(*authentication.KubeconfigRequest), b.(*ViewerKubeconfigRequest), scope) }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*AdminKubeconfigRequestStatus)(nil), (*authentication.AdminKubeconfigRequestStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_AdminKubeconfigRequestStatus_To_authentication_AdminKubeconfigRequestStatus(a.(*AdminKubeconfigRequestStatus), b.(*authentication.AdminKubeconfigRequestStatus), scope) + if err := s.AddConversionFunc((*AdminKubeconfigRequest)(nil), (*authentication.KubeconfigRequest)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_AdminKubeconfigRequest_To_authentication_KubeconfigRequest(a.(*AdminKubeconfigRequest), b.(*authentication.KubeconfigRequest), scope) }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*authentication.AdminKubeconfigRequestStatus)(nil), (*AdminKubeconfigRequestStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_authentication_AdminKubeconfigRequestStatus_To_v1alpha1_AdminKubeconfigRequestStatus(a.(*authentication.AdminKubeconfigRequestStatus), b.(*AdminKubeconfigRequestStatus), scope) + if err := s.AddConversionFunc((*ViewerKubeconfigRequest)(nil), (*authentication.KubeconfigRequest)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ViewerKubeconfigRequest_To_authentication_KubeconfigRequest(a.(*ViewerKubeconfigRequest), b.(*authentication.KubeconfigRequest), scope) }); err != nil { return err } return nil } - -func autoConvert_v1alpha1_AdminKubeconfigRequest_To_authentication_AdminKubeconfigRequest(in *AdminKubeconfigRequest, out *authentication.AdminKubeconfigRequest, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1alpha1_AdminKubeconfigRequestSpec_To_authentication_AdminKubeconfigRequestSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1alpha1_AdminKubeconfigRequestStatus_To_authentication_AdminKubeconfigRequestStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha1_AdminKubeconfigRequest_To_authentication_AdminKubeconfigRequest is an autogenerated conversion function. -func Convert_v1alpha1_AdminKubeconfigRequest_To_authentication_AdminKubeconfigRequest(in *AdminKubeconfigRequest, out *authentication.AdminKubeconfigRequest, s conversion.Scope) error { - return autoConvert_v1alpha1_AdminKubeconfigRequest_To_authentication_AdminKubeconfigRequest(in, out, s) -} - -func autoConvert_authentication_AdminKubeconfigRequest_To_v1alpha1_AdminKubeconfigRequest(in *authentication.AdminKubeconfigRequest, out *AdminKubeconfigRequest, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_authentication_AdminKubeconfigRequestSpec_To_v1alpha1_AdminKubeconfigRequestSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_authentication_AdminKubeconfigRequestStatus_To_v1alpha1_AdminKubeconfigRequestStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_authentication_AdminKubeconfigRequest_To_v1alpha1_AdminKubeconfigRequest is an autogenerated conversion function. -func Convert_authentication_AdminKubeconfigRequest_To_v1alpha1_AdminKubeconfigRequest(in *authentication.AdminKubeconfigRequest, out *AdminKubeconfigRequest, s conversion.Scope) error { - return autoConvert_authentication_AdminKubeconfigRequest_To_v1alpha1_AdminKubeconfigRequest(in, out, s) -} - -func autoConvert_v1alpha1_AdminKubeconfigRequestSpec_To_authentication_AdminKubeconfigRequestSpec(in *AdminKubeconfigRequestSpec, out *authentication.AdminKubeconfigRequestSpec, s conversion.Scope) error { - if err := v1.Convert_Pointer_int64_To_int64(&in.ExpirationSeconds, &out.ExpirationSeconds, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha1_AdminKubeconfigRequestSpec_To_authentication_AdminKubeconfigRequestSpec is an autogenerated conversion function. -func Convert_v1alpha1_AdminKubeconfigRequestSpec_To_authentication_AdminKubeconfigRequestSpec(in *AdminKubeconfigRequestSpec, out *authentication.AdminKubeconfigRequestSpec, s conversion.Scope) error { - return autoConvert_v1alpha1_AdminKubeconfigRequestSpec_To_authentication_AdminKubeconfigRequestSpec(in, out, s) -} - -func autoConvert_authentication_AdminKubeconfigRequestSpec_To_v1alpha1_AdminKubeconfigRequestSpec(in *authentication.AdminKubeconfigRequestSpec, out *AdminKubeconfigRequestSpec, s conversion.Scope) error { - if err := v1.Convert_int64_To_Pointer_int64(&in.ExpirationSeconds, &out.ExpirationSeconds, s); err != nil { - return err - } - return nil -} - -// Convert_authentication_AdminKubeconfigRequestSpec_To_v1alpha1_AdminKubeconfigRequestSpec is an autogenerated conversion function. -func Convert_authentication_AdminKubeconfigRequestSpec_To_v1alpha1_AdminKubeconfigRequestSpec(in *authentication.AdminKubeconfigRequestSpec, out *AdminKubeconfigRequestSpec, s conversion.Scope) error { - return autoConvert_authentication_AdminKubeconfigRequestSpec_To_v1alpha1_AdminKubeconfigRequestSpec(in, out, s) -} - -func autoConvert_v1alpha1_AdminKubeconfigRequestStatus_To_authentication_AdminKubeconfigRequestStatus(in *AdminKubeconfigRequestStatus, out *authentication.AdminKubeconfigRequestStatus, s conversion.Scope) error { - out.Kubeconfig = *(*[]byte)(unsafe.Pointer(&in.Kubeconfig)) - out.ExpirationTimestamp = in.ExpirationTimestamp - return nil -} - -// Convert_v1alpha1_AdminKubeconfigRequestStatus_To_authentication_AdminKubeconfigRequestStatus is an autogenerated conversion function. -func Convert_v1alpha1_AdminKubeconfigRequestStatus_To_authentication_AdminKubeconfigRequestStatus(in *AdminKubeconfigRequestStatus, out *authentication.AdminKubeconfigRequestStatus, s conversion.Scope) error { - return autoConvert_v1alpha1_AdminKubeconfigRequestStatus_To_authentication_AdminKubeconfigRequestStatus(in, out, s) -} - -func autoConvert_authentication_AdminKubeconfigRequestStatus_To_v1alpha1_AdminKubeconfigRequestStatus(in *authentication.AdminKubeconfigRequestStatus, out *AdminKubeconfigRequestStatus, s conversion.Scope) error { - out.Kubeconfig = *(*[]byte)(unsafe.Pointer(&in.Kubeconfig)) - out.ExpirationTimestamp = in.ExpirationTimestamp - return nil -} - -// Convert_authentication_AdminKubeconfigRequestStatus_To_v1alpha1_AdminKubeconfigRequestStatus is an autogenerated conversion function. -func Convert_authentication_AdminKubeconfigRequestStatus_To_v1alpha1_AdminKubeconfigRequestStatus(in *authentication.AdminKubeconfigRequestStatus, out *AdminKubeconfigRequestStatus, s conversion.Scope) error { - return autoConvert_authentication_AdminKubeconfigRequestStatus_To_v1alpha1_AdminKubeconfigRequestStatus(in, out, s) -} diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.deepcopy.go index 65cdee80b..3cbaad76c 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.deepcopy.go @@ -95,3 +95,74 @@ func (in *AdminKubeconfigRequestStatus) DeepCopy() *AdminKubeconfigRequestStatus in.DeepCopyInto(out) return out } + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ViewerKubeconfigRequest) DeepCopyInto(out *ViewerKubeconfigRequest) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ViewerKubeconfigRequest. +func (in *ViewerKubeconfigRequest) DeepCopy() *ViewerKubeconfigRequest { + if in == nil { + return nil + } + out := new(ViewerKubeconfigRequest) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ViewerKubeconfigRequest) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ViewerKubeconfigRequestSpec) DeepCopyInto(out *ViewerKubeconfigRequestSpec) { + *out = *in + if in.ExpirationSeconds != nil { + in, out := &in.ExpirationSeconds, &out.ExpirationSeconds + *out = new(int64) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ViewerKubeconfigRequestSpec. +func (in *ViewerKubeconfigRequestSpec) DeepCopy() *ViewerKubeconfigRequestSpec { + if in == nil { + return nil + } + out := new(ViewerKubeconfigRequestSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ViewerKubeconfigRequestStatus) DeepCopyInto(out *ViewerKubeconfigRequestStatus) { + *out = *in + if in.Kubeconfig != nil { + in, out := &in.Kubeconfig, &out.Kubeconfig + *out = make([]byte, len(*in)) + copy(*out, *in) + } + in.ExpirationTimestamp.DeepCopyInto(&out.ExpirationTimestamp) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ViewerKubeconfigRequestStatus. +func (in *ViewerKubeconfigRequestStatus) DeepCopy() *ViewerKubeconfigRequestStatus { + if in == nil { + return nil + } + out := new(ViewerKubeconfigRequestStatus) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.defaults.go index e90796cbd..0531bd66a 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/zz_generated.defaults.go @@ -30,9 +30,14 @@ import ( // All generated defaulters are covering - they call all nested defaulters. func RegisterDefaults(scheme *runtime.Scheme) error { scheme.AddTypeDefaultingFunc(&AdminKubeconfigRequest{}, func(obj interface{}) { SetObjectDefaults_AdminKubeconfigRequest(obj.(*AdminKubeconfigRequest)) }) + scheme.AddTypeDefaultingFunc(&ViewerKubeconfigRequest{}, func(obj interface{}) { SetObjectDefaults_ViewerKubeconfigRequest(obj.(*ViewerKubeconfigRequest)) }) return nil } func SetObjectDefaults_AdminKubeconfigRequest(in *AdminKubeconfigRequest) { SetDefaults_AdminKubeconfigRequestSpec(&in.Spec) } + +func SetObjectDefaults_ViewerKubeconfigRequest(in *ViewerKubeconfigRequest) { + SetDefaults_ViewerKubeconfigRequestSpec(&in.Spec) +} diff --git a/vendor/github.com/gardener/gardener/pkg/apis/authentication/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/authentication/zz_generated.deepcopy.go index f4f5f2ff4..7ea8105ce 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/authentication/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/authentication/zz_generated.deepcopy.go @@ -26,7 +26,7 @@ import ( ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AdminKubeconfigRequest) DeepCopyInto(out *AdminKubeconfigRequest) { +func (in *KubeconfigRequest) DeepCopyInto(out *KubeconfigRequest) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) @@ -35,18 +35,18 @@ func (in *AdminKubeconfigRequest) DeepCopyInto(out *AdminKubeconfigRequest) { return } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdminKubeconfigRequest. -func (in *AdminKubeconfigRequest) DeepCopy() *AdminKubeconfigRequest { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeconfigRequest. +func (in *KubeconfigRequest) DeepCopy() *KubeconfigRequest { if in == nil { return nil } - out := new(AdminKubeconfigRequest) + out := new(KubeconfigRequest) in.DeepCopyInto(out) return out } // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *AdminKubeconfigRequest) DeepCopyObject() runtime.Object { +func (in *KubeconfigRequest) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -54,23 +54,23 @@ func (in *AdminKubeconfigRequest) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AdminKubeconfigRequestSpec) DeepCopyInto(out *AdminKubeconfigRequestSpec) { +func (in *KubeconfigRequestSpec) DeepCopyInto(out *KubeconfigRequestSpec) { *out = *in return } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdminKubeconfigRequestSpec. -func (in *AdminKubeconfigRequestSpec) DeepCopy() *AdminKubeconfigRequestSpec { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeconfigRequestSpec. +func (in *KubeconfigRequestSpec) DeepCopy() *KubeconfigRequestSpec { if in == nil { return nil } - out := new(AdminKubeconfigRequestSpec) + out := new(KubeconfigRequestSpec) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AdminKubeconfigRequestStatus) DeepCopyInto(out *AdminKubeconfigRequestStatus) { +func (in *KubeconfigRequestStatus) DeepCopyInto(out *KubeconfigRequestStatus) { *out = *in if in.Kubeconfig != nil { in, out := &in.Kubeconfig, &out.Kubeconfig @@ -81,12 +81,12 @@ func (in *AdminKubeconfigRequestStatus) DeepCopyInto(out *AdminKubeconfigRequest return } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdminKubeconfigRequestStatus. -func (in *AdminKubeconfigRequestStatus) DeepCopy() *AdminKubeconfigRequestStatus { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeconfigRequestStatus. +func (in *KubeconfigRequestStatus) DeepCopy() *KubeconfigRequestStatus { if in == nil { return nil } - out := new(AdminKubeconfigRequestStatus) + out := new(KubeconfigRequestStatus) in.DeepCopyInto(out) return out } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types_shoot.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_shoot.go index d7d922162..d5bc10dc1 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_shoot.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_shoot.go @@ -159,6 +159,10 @@ type ShootStatus struct { Credentials *ShootCredentials // LastMaintenance holds information about the last maintenance operations on the Shoot. LastMaintenance *LastMaintenance + // EncryptedResources is the list of resources in the Shoot which are currently encrypted. + // Secrets are encrypted by default and are not part of the list. + // See https://github.com/gardener/gardener/blob/master/docs/usage/etcd_encryption_config.md for more details. + EncryptedResources []string } // LastMaintenance holds information about a maintenance operation on the Shoot. @@ -581,6 +585,8 @@ type KubeAPIServerConfig struct { // that is added by default to every pod that does not already have such a toleration (flag `--default-unreachable-toleration-seconds`). // The field has effect only when the `DefaultTolerationSeconds` admission plugin is enabled. DefaultUnreachableTolerationSeconds *int64 + // EncryptionConfig contains customizable encryption configuration of the API server. + EncryptionConfig *EncryptionConfig } // APIServerLogging contains configuration for the logs level and http access logs @@ -601,6 +607,16 @@ type APIServerRequests struct { MaxMutatingInflight *int32 } +// EncryptionConfig contains customizable encryption configuration of the API server. +type EncryptionConfig struct { + // Resources contains the list of resources that shall be encrypted in addition to secrets. + // Each item is a Kubernetes resource name in plural (resource or resource.group) that should be encrypted. + // Note that configuring a custom resource is only supported for versions >= 1.26. + // Wildcards are not supported for now. + // See https://github.com/gardener/gardener/blob/master/docs/usage/etcd_encryption_config.md for more details. + Resources []string +} + // ServiceAccountConfig is the kube-apiserver configuration for service accounts. type ServiceAccountConfig struct { // Issuer is the identifier of the service account token issuer. The issuer will assert this diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/types_constants.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/types_constants.go index 3df01b229..2d5a3f585 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/types_constants.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/types_constants.go @@ -698,6 +698,10 @@ const ( // SeedUserNamePrefix is the identity user name prefix for gardenlets when authenticating to the API server. SeedUserNamePrefix = "gardener.cloud:system:seed:" + // ShootGroupViewers is a constant for a group name in shoot clusters whose users get read-only privileges (except + // for core/v1.Secrets). + ShootGroupViewers = "gardener.cloud:system:viewers" + // ProjectName is the key of a label on namespaces whose value holds the project name. ProjectName = "project.gardener.cloud/name" // ProjectSkipStaleCheck is the key of an annotation on a project namespace that marks the associated Project to be diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_shoot.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_shoot.go index 51c7534c0..3cb60f84e 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_shoot.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_shoot.go @@ -32,9 +32,6 @@ func SetDefaults_Shoot(obj *Shoot) { if obj.Spec.Kubernetes.KubeAPIServer == nil { obj.Spec.Kubernetes.KubeAPIServer = &KubeAPIServerConfig{} } - if obj.Spec.Kubernetes.KubeControllerManager == nil { - obj.Spec.Kubernetes.KubeControllerManager = &KubeControllerManagerConfig{} - } if obj.Spec.Purpose == nil { p := ShootPurposeEvaluation @@ -97,6 +94,10 @@ func SetDefaults_Shoot(obj *Shoot) { obj.Spec.Kubernetes.KubeAPIServer.DefaultUnreachableTolerationSeconds = pointer.Int64(300) } + if obj.Spec.Kubernetes.KubeControllerManager == nil { + obj.Spec.Kubernetes.KubeControllerManager = &KubeControllerManagerConfig{} + } + if obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize == nil { obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize = calculateDefaultNodeCIDRMaskSize(&obj.Spec) } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.pb.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.pb.go index 86f454346..770b46fb8 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.pb.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.pb.go @@ -1397,10 +1397,38 @@ func (m *ETCDEncryptionKeyRotation) XXX_DiscardUnknown() { var xxx_messageInfo_ETCDEncryptionKeyRotation proto.InternalMessageInfo +func (m *EncryptionConfig) Reset() { *m = EncryptionConfig{} } +func (*EncryptionConfig) ProtoMessage() {} +func (*EncryptionConfig) Descriptor() ([]byte, []int) { + return fileDescriptor_ca37af0df9a5bbd2, []int{48} +} +func (m *EncryptionConfig) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EncryptionConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *EncryptionConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_EncryptionConfig.Merge(m, src) +} +func (m *EncryptionConfig) XXX_Size() int { + return m.Size() +} +func (m *EncryptionConfig) XXX_DiscardUnknown() { + xxx_messageInfo_EncryptionConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_EncryptionConfig proto.InternalMessageInfo + func (m *ExpirableVersion) Reset() { *m = ExpirableVersion{} } func (*ExpirableVersion) ProtoMessage() {} func (*ExpirableVersion) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{48} + return fileDescriptor_ca37af0df9a5bbd2, []int{49} } func (m *ExpirableVersion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1428,7 +1456,7 @@ var xxx_messageInfo_ExpirableVersion proto.InternalMessageInfo func (m *ExposureClass) Reset() { *m = ExposureClass{} } func (*ExposureClass) ProtoMessage() {} func (*ExposureClass) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{49} + return fileDescriptor_ca37af0df9a5bbd2, []int{50} } func (m *ExposureClass) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1456,7 +1484,7 @@ var xxx_messageInfo_ExposureClass proto.InternalMessageInfo func (m *ExposureClassList) Reset() { *m = ExposureClassList{} } func (*ExposureClassList) ProtoMessage() {} func (*ExposureClassList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{50} + return fileDescriptor_ca37af0df9a5bbd2, []int{51} } func (m *ExposureClassList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1484,7 +1512,7 @@ var xxx_messageInfo_ExposureClassList proto.InternalMessageInfo func (m *ExposureClassScheduling) Reset() { *m = ExposureClassScheduling{} } func (*ExposureClassScheduling) ProtoMessage() {} func (*ExposureClassScheduling) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{51} + return fileDescriptor_ca37af0df9a5bbd2, []int{52} } func (m *ExposureClassScheduling) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1512,7 +1540,7 @@ var xxx_messageInfo_ExposureClassScheduling proto.InternalMessageInfo func (m *Extension) Reset() { *m = Extension{} } func (*Extension) ProtoMessage() {} func (*Extension) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{52} + return fileDescriptor_ca37af0df9a5bbd2, []int{53} } func (m *Extension) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1540,7 +1568,7 @@ var xxx_messageInfo_Extension proto.InternalMessageInfo func (m *ExtensionResourceState) Reset() { *m = ExtensionResourceState{} } func (*ExtensionResourceState) ProtoMessage() {} func (*ExtensionResourceState) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{53} + return fileDescriptor_ca37af0df9a5bbd2, []int{54} } func (m *ExtensionResourceState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1568,7 +1596,7 @@ var xxx_messageInfo_ExtensionResourceState proto.InternalMessageInfo func (m *FailureTolerance) Reset() { *m = FailureTolerance{} } func (*FailureTolerance) ProtoMessage() {} func (*FailureTolerance) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{54} + return fileDescriptor_ca37af0df9a5bbd2, []int{55} } func (m *FailureTolerance) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1596,7 +1624,7 @@ var xxx_messageInfo_FailureTolerance proto.InternalMessageInfo func (m *Gardener) Reset() { *m = Gardener{} } func (*Gardener) ProtoMessage() {} func (*Gardener) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{55} + return fileDescriptor_ca37af0df9a5bbd2, []int{56} } func (m *Gardener) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1624,7 +1652,7 @@ var xxx_messageInfo_Gardener proto.InternalMessageInfo func (m *GardenerResourceData) Reset() { *m = GardenerResourceData{} } func (*GardenerResourceData) ProtoMessage() {} func (*GardenerResourceData) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{56} + return fileDescriptor_ca37af0df9a5bbd2, []int{57} } func (m *GardenerResourceData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1652,7 +1680,7 @@ var xxx_messageInfo_GardenerResourceData proto.InternalMessageInfo func (m *Hibernation) Reset() { *m = Hibernation{} } func (*Hibernation) ProtoMessage() {} func (*Hibernation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{57} + return fileDescriptor_ca37af0df9a5bbd2, []int{58} } func (m *Hibernation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1680,7 +1708,7 @@ var xxx_messageInfo_Hibernation proto.InternalMessageInfo func (m *HibernationSchedule) Reset() { *m = HibernationSchedule{} } func (*HibernationSchedule) ProtoMessage() {} func (*HibernationSchedule) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{58} + return fileDescriptor_ca37af0df9a5bbd2, []int{59} } func (m *HibernationSchedule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1708,7 +1736,7 @@ var xxx_messageInfo_HibernationSchedule proto.InternalMessageInfo func (m *HighAvailability) Reset() { *m = HighAvailability{} } func (*HighAvailability) ProtoMessage() {} func (*HighAvailability) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{59} + return fileDescriptor_ca37af0df9a5bbd2, []int{60} } func (m *HighAvailability) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1736,7 +1764,7 @@ var xxx_messageInfo_HighAvailability proto.InternalMessageInfo func (m *HorizontalPodAutoscalerConfig) Reset() { *m = HorizontalPodAutoscalerConfig{} } func (*HorizontalPodAutoscalerConfig) ProtoMessage() {} func (*HorizontalPodAutoscalerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{60} + return fileDescriptor_ca37af0df9a5bbd2, []int{61} } func (m *HorizontalPodAutoscalerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1764,7 +1792,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerConfig proto.InternalMessageInfo func (m *Ingress) Reset() { *m = Ingress{} } func (*Ingress) ProtoMessage() {} func (*Ingress) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{61} + return fileDescriptor_ca37af0df9a5bbd2, []int{62} } func (m *Ingress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1792,7 +1820,7 @@ var xxx_messageInfo_Ingress proto.InternalMessageInfo func (m *IngressController) Reset() { *m = IngressController{} } func (*IngressController) ProtoMessage() {} func (*IngressController) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{62} + return fileDescriptor_ca37af0df9a5bbd2, []int{63} } func (m *IngressController) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1820,7 +1848,7 @@ var xxx_messageInfo_IngressController proto.InternalMessageInfo func (m *InternalSecret) Reset() { *m = InternalSecret{} } func (*InternalSecret) ProtoMessage() {} func (*InternalSecret) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{63} + return fileDescriptor_ca37af0df9a5bbd2, []int{64} } func (m *InternalSecret) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1848,7 +1876,7 @@ var xxx_messageInfo_InternalSecret proto.InternalMessageInfo func (m *InternalSecretList) Reset() { *m = InternalSecretList{} } func (*InternalSecretList) ProtoMessage() {} func (*InternalSecretList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{64} + return fileDescriptor_ca37af0df9a5bbd2, []int{65} } func (m *InternalSecretList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1876,7 +1904,7 @@ var xxx_messageInfo_InternalSecretList proto.InternalMessageInfo func (m *KubeAPIServerConfig) Reset() { *m = KubeAPIServerConfig{} } func (*KubeAPIServerConfig) ProtoMessage() {} func (*KubeAPIServerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{65} + return fileDescriptor_ca37af0df9a5bbd2, []int{66} } func (m *KubeAPIServerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1904,7 +1932,7 @@ var xxx_messageInfo_KubeAPIServerConfig proto.InternalMessageInfo func (m *KubeControllerManagerConfig) Reset() { *m = KubeControllerManagerConfig{} } func (*KubeControllerManagerConfig) ProtoMessage() {} func (*KubeControllerManagerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{66} + return fileDescriptor_ca37af0df9a5bbd2, []int{67} } func (m *KubeControllerManagerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1932,7 +1960,7 @@ var xxx_messageInfo_KubeControllerManagerConfig proto.InternalMessageInfo func (m *KubeProxyConfig) Reset() { *m = KubeProxyConfig{} } func (*KubeProxyConfig) ProtoMessage() {} func (*KubeProxyConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{67} + return fileDescriptor_ca37af0df9a5bbd2, []int{68} } func (m *KubeProxyConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1960,7 +1988,7 @@ var xxx_messageInfo_KubeProxyConfig proto.InternalMessageInfo func (m *KubeSchedulerConfig) Reset() { *m = KubeSchedulerConfig{} } func (*KubeSchedulerConfig) ProtoMessage() {} func (*KubeSchedulerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{68} + return fileDescriptor_ca37af0df9a5bbd2, []int{69} } func (m *KubeSchedulerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1988,7 +2016,7 @@ var xxx_messageInfo_KubeSchedulerConfig proto.InternalMessageInfo func (m *KubeletConfig) Reset() { *m = KubeletConfig{} } func (*KubeletConfig) ProtoMessage() {} func (*KubeletConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{69} + return fileDescriptor_ca37af0df9a5bbd2, []int{70} } func (m *KubeletConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2016,7 +2044,7 @@ var xxx_messageInfo_KubeletConfig proto.InternalMessageInfo func (m *KubeletConfigEviction) Reset() { *m = KubeletConfigEviction{} } func (*KubeletConfigEviction) ProtoMessage() {} func (*KubeletConfigEviction) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{70} + return fileDescriptor_ca37af0df9a5bbd2, []int{71} } func (m *KubeletConfigEviction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2044,7 +2072,7 @@ var xxx_messageInfo_KubeletConfigEviction proto.InternalMessageInfo func (m *KubeletConfigEvictionMinimumReclaim) Reset() { *m = KubeletConfigEvictionMinimumReclaim{} } func (*KubeletConfigEvictionMinimumReclaim) ProtoMessage() {} func (*KubeletConfigEvictionMinimumReclaim) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{71} + return fileDescriptor_ca37af0df9a5bbd2, []int{72} } func (m *KubeletConfigEvictionMinimumReclaim) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2072,7 +2100,7 @@ var xxx_messageInfo_KubeletConfigEvictionMinimumReclaim proto.InternalMessageInf func (m *KubeletConfigEvictionSoftGracePeriod) Reset() { *m = KubeletConfigEvictionSoftGracePeriod{} } func (*KubeletConfigEvictionSoftGracePeriod) ProtoMessage() {} func (*KubeletConfigEvictionSoftGracePeriod) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{72} + return fileDescriptor_ca37af0df9a5bbd2, []int{73} } func (m *KubeletConfigEvictionSoftGracePeriod) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2100,7 +2128,7 @@ var xxx_messageInfo_KubeletConfigEvictionSoftGracePeriod proto.InternalMessageIn func (m *KubeletConfigReserved) Reset() { *m = KubeletConfigReserved{} } func (*KubeletConfigReserved) ProtoMessage() {} func (*KubeletConfigReserved) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{73} + return fileDescriptor_ca37af0df9a5bbd2, []int{74} } func (m *KubeletConfigReserved) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2128,7 +2156,7 @@ var xxx_messageInfo_KubeletConfigReserved proto.InternalMessageInfo func (m *Kubernetes) Reset() { *m = Kubernetes{} } func (*Kubernetes) ProtoMessage() {} func (*Kubernetes) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{74} + return fileDescriptor_ca37af0df9a5bbd2, []int{75} } func (m *Kubernetes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2156,7 +2184,7 @@ var xxx_messageInfo_Kubernetes proto.InternalMessageInfo func (m *KubernetesConfig) Reset() { *m = KubernetesConfig{} } func (*KubernetesConfig) ProtoMessage() {} func (*KubernetesConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{75} + return fileDescriptor_ca37af0df9a5bbd2, []int{76} } func (m *KubernetesConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2184,7 +2212,7 @@ var xxx_messageInfo_KubernetesConfig proto.InternalMessageInfo func (m *KubernetesDashboard) Reset() { *m = KubernetesDashboard{} } func (*KubernetesDashboard) ProtoMessage() {} func (*KubernetesDashboard) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{76} + return fileDescriptor_ca37af0df9a5bbd2, []int{77} } func (m *KubernetesDashboard) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2212,7 +2240,7 @@ var xxx_messageInfo_KubernetesDashboard proto.InternalMessageInfo func (m *KubernetesSettings) Reset() { *m = KubernetesSettings{} } func (*KubernetesSettings) ProtoMessage() {} func (*KubernetesSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{77} + return fileDescriptor_ca37af0df9a5bbd2, []int{78} } func (m *KubernetesSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2240,7 +2268,7 @@ var xxx_messageInfo_KubernetesSettings proto.InternalMessageInfo func (m *LastError) Reset() { *m = LastError{} } func (*LastError) ProtoMessage() {} func (*LastError) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{78} + return fileDescriptor_ca37af0df9a5bbd2, []int{79} } func (m *LastError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2268,7 +2296,7 @@ var xxx_messageInfo_LastError proto.InternalMessageInfo func (m *LastMaintenance) Reset() { *m = LastMaintenance{} } func (*LastMaintenance) ProtoMessage() {} func (*LastMaintenance) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{79} + return fileDescriptor_ca37af0df9a5bbd2, []int{80} } func (m *LastMaintenance) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2296,7 +2324,7 @@ var xxx_messageInfo_LastMaintenance proto.InternalMessageInfo func (m *LastOperation) Reset() { *m = LastOperation{} } func (*LastOperation) ProtoMessage() {} func (*LastOperation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{80} + return fileDescriptor_ca37af0df9a5bbd2, []int{81} } func (m *LastOperation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2324,7 +2352,7 @@ var xxx_messageInfo_LastOperation proto.InternalMessageInfo func (m *Machine) Reset() { *m = Machine{} } func (*Machine) ProtoMessage() {} func (*Machine) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{81} + return fileDescriptor_ca37af0df9a5bbd2, []int{82} } func (m *Machine) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2352,7 +2380,7 @@ var xxx_messageInfo_Machine proto.InternalMessageInfo func (m *MachineControllerManagerSettings) Reset() { *m = MachineControllerManagerSettings{} } func (*MachineControllerManagerSettings) ProtoMessage() {} func (*MachineControllerManagerSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{82} + return fileDescriptor_ca37af0df9a5bbd2, []int{83} } func (m *MachineControllerManagerSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2380,7 +2408,7 @@ var xxx_messageInfo_MachineControllerManagerSettings proto.InternalMessageInfo func (m *MachineImage) Reset() { *m = MachineImage{} } func (*MachineImage) ProtoMessage() {} func (*MachineImage) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{83} + return fileDescriptor_ca37af0df9a5bbd2, []int{84} } func (m *MachineImage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2408,7 +2436,7 @@ var xxx_messageInfo_MachineImage proto.InternalMessageInfo func (m *MachineImageVersion) Reset() { *m = MachineImageVersion{} } func (*MachineImageVersion) ProtoMessage() {} func (*MachineImageVersion) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{84} + return fileDescriptor_ca37af0df9a5bbd2, []int{85} } func (m *MachineImageVersion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2436,7 +2464,7 @@ var xxx_messageInfo_MachineImageVersion proto.InternalMessageInfo func (m *MachineType) Reset() { *m = MachineType{} } func (*MachineType) ProtoMessage() {} func (*MachineType) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{85} + return fileDescriptor_ca37af0df9a5bbd2, []int{86} } func (m *MachineType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2464,7 +2492,7 @@ var xxx_messageInfo_MachineType proto.InternalMessageInfo func (m *MachineTypeStorage) Reset() { *m = MachineTypeStorage{} } func (*MachineTypeStorage) ProtoMessage() {} func (*MachineTypeStorage) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{86} + return fileDescriptor_ca37af0df9a5bbd2, []int{87} } func (m *MachineTypeStorage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2492,7 +2520,7 @@ var xxx_messageInfo_MachineTypeStorage proto.InternalMessageInfo func (m *Maintenance) Reset() { *m = Maintenance{} } func (*Maintenance) ProtoMessage() {} func (*Maintenance) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{87} + return fileDescriptor_ca37af0df9a5bbd2, []int{88} } func (m *Maintenance) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2520,7 +2548,7 @@ var xxx_messageInfo_Maintenance proto.InternalMessageInfo func (m *MaintenanceAutoUpdate) Reset() { *m = MaintenanceAutoUpdate{} } func (*MaintenanceAutoUpdate) ProtoMessage() {} func (*MaintenanceAutoUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{88} + return fileDescriptor_ca37af0df9a5bbd2, []int{89} } func (m *MaintenanceAutoUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2548,7 +2576,7 @@ var xxx_messageInfo_MaintenanceAutoUpdate proto.InternalMessageInfo func (m *MaintenanceTimeWindow) Reset() { *m = MaintenanceTimeWindow{} } func (*MaintenanceTimeWindow) ProtoMessage() {} func (*MaintenanceTimeWindow) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{89} + return fileDescriptor_ca37af0df9a5bbd2, []int{90} } func (m *MaintenanceTimeWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2576,7 +2604,7 @@ var xxx_messageInfo_MaintenanceTimeWindow proto.InternalMessageInfo func (m *MemorySwapConfiguration) Reset() { *m = MemorySwapConfiguration{} } func (*MemorySwapConfiguration) ProtoMessage() {} func (*MemorySwapConfiguration) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{90} + return fileDescriptor_ca37af0df9a5bbd2, []int{91} } func (m *MemorySwapConfiguration) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2604,7 +2632,7 @@ var xxx_messageInfo_MemorySwapConfiguration proto.InternalMessageInfo func (m *Monitoring) Reset() { *m = Monitoring{} } func (*Monitoring) ProtoMessage() {} func (*Monitoring) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{91} + return fileDescriptor_ca37af0df9a5bbd2, []int{92} } func (m *Monitoring) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2632,7 +2660,7 @@ var xxx_messageInfo_Monitoring proto.InternalMessageInfo func (m *NamedResourceReference) Reset() { *m = NamedResourceReference{} } func (*NamedResourceReference) ProtoMessage() {} func (*NamedResourceReference) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{92} + return fileDescriptor_ca37af0df9a5bbd2, []int{93} } func (m *NamedResourceReference) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2660,7 +2688,7 @@ var xxx_messageInfo_NamedResourceReference proto.InternalMessageInfo func (m *Networking) Reset() { *m = Networking{} } func (*Networking) ProtoMessage() {} func (*Networking) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{93} + return fileDescriptor_ca37af0df9a5bbd2, []int{94} } func (m *Networking) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2688,7 +2716,7 @@ var xxx_messageInfo_Networking proto.InternalMessageInfo func (m *NginxIngress) Reset() { *m = NginxIngress{} } func (*NginxIngress) ProtoMessage() {} func (*NginxIngress) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{94} + return fileDescriptor_ca37af0df9a5bbd2, []int{95} } func (m *NginxIngress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2716,7 +2744,7 @@ var xxx_messageInfo_NginxIngress proto.InternalMessageInfo func (m *NodeLocalDNS) Reset() { *m = NodeLocalDNS{} } func (*NodeLocalDNS) ProtoMessage() {} func (*NodeLocalDNS) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{95} + return fileDescriptor_ca37af0df9a5bbd2, []int{96} } func (m *NodeLocalDNS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2744,7 +2772,7 @@ var xxx_messageInfo_NodeLocalDNS proto.InternalMessageInfo func (m *OIDCConfig) Reset() { *m = OIDCConfig{} } func (*OIDCConfig) ProtoMessage() {} func (*OIDCConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{96} + return fileDescriptor_ca37af0df9a5bbd2, []int{97} } func (m *OIDCConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2772,7 +2800,7 @@ var xxx_messageInfo_OIDCConfig proto.InternalMessageInfo func (m *ObservabilityRotation) Reset() { *m = ObservabilityRotation{} } func (*ObservabilityRotation) ProtoMessage() {} func (*ObservabilityRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{97} + return fileDescriptor_ca37af0df9a5bbd2, []int{98} } func (m *ObservabilityRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2800,7 +2828,7 @@ var xxx_messageInfo_ObservabilityRotation proto.InternalMessageInfo func (m *OpenIDConnectClientAuthentication) Reset() { *m = OpenIDConnectClientAuthentication{} } func (*OpenIDConnectClientAuthentication) ProtoMessage() {} func (*OpenIDConnectClientAuthentication) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{98} + return fileDescriptor_ca37af0df9a5bbd2, []int{99} } func (m *OpenIDConnectClientAuthentication) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2828,7 +2856,7 @@ var xxx_messageInfo_OpenIDConnectClientAuthentication proto.InternalMessageInfo func (m *Project) Reset() { *m = Project{} } func (*Project) ProtoMessage() {} func (*Project) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{99} + return fileDescriptor_ca37af0df9a5bbd2, []int{100} } func (m *Project) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2856,7 +2884,7 @@ var xxx_messageInfo_Project proto.InternalMessageInfo func (m *ProjectList) Reset() { *m = ProjectList{} } func (*ProjectList) ProtoMessage() {} func (*ProjectList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{100} + return fileDescriptor_ca37af0df9a5bbd2, []int{101} } func (m *ProjectList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2884,7 +2912,7 @@ var xxx_messageInfo_ProjectList proto.InternalMessageInfo func (m *ProjectMember) Reset() { *m = ProjectMember{} } func (*ProjectMember) ProtoMessage() {} func (*ProjectMember) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{101} + return fileDescriptor_ca37af0df9a5bbd2, []int{102} } func (m *ProjectMember) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2912,7 +2940,7 @@ var xxx_messageInfo_ProjectMember proto.InternalMessageInfo func (m *ProjectSpec) Reset() { *m = ProjectSpec{} } func (*ProjectSpec) ProtoMessage() {} func (*ProjectSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{102} + return fileDescriptor_ca37af0df9a5bbd2, []int{103} } func (m *ProjectSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2940,7 +2968,7 @@ var xxx_messageInfo_ProjectSpec proto.InternalMessageInfo func (m *ProjectStatus) Reset() { *m = ProjectStatus{} } func (*ProjectStatus) ProtoMessage() {} func (*ProjectStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{103} + return fileDescriptor_ca37af0df9a5bbd2, []int{104} } func (m *ProjectStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2968,7 +2996,7 @@ var xxx_messageInfo_ProjectStatus proto.InternalMessageInfo func (m *ProjectTolerations) Reset() { *m = ProjectTolerations{} } func (*ProjectTolerations) ProtoMessage() {} func (*ProjectTolerations) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{104} + return fileDescriptor_ca37af0df9a5bbd2, []int{105} } func (m *ProjectTolerations) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2996,7 +3024,7 @@ var xxx_messageInfo_ProjectTolerations proto.InternalMessageInfo func (m *Provider) Reset() { *m = Provider{} } func (*Provider) ProtoMessage() {} func (*Provider) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{105} + return fileDescriptor_ca37af0df9a5bbd2, []int{106} } func (m *Provider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3024,7 +3052,7 @@ var xxx_messageInfo_Provider proto.InternalMessageInfo func (m *Quota) Reset() { *m = Quota{} } func (*Quota) ProtoMessage() {} func (*Quota) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{106} + return fileDescriptor_ca37af0df9a5bbd2, []int{107} } func (m *Quota) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3052,7 +3080,7 @@ var xxx_messageInfo_Quota proto.InternalMessageInfo func (m *QuotaList) Reset() { *m = QuotaList{} } func (*QuotaList) ProtoMessage() {} func (*QuotaList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{107} + return fileDescriptor_ca37af0df9a5bbd2, []int{108} } func (m *QuotaList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3080,7 +3108,7 @@ var xxx_messageInfo_QuotaList proto.InternalMessageInfo func (m *QuotaSpec) Reset() { *m = QuotaSpec{} } func (*QuotaSpec) ProtoMessage() {} func (*QuotaSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{108} + return fileDescriptor_ca37af0df9a5bbd2, []int{109} } func (m *QuotaSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3108,7 +3136,7 @@ var xxx_messageInfo_QuotaSpec proto.InternalMessageInfo func (m *Region) Reset() { *m = Region{} } func (*Region) ProtoMessage() {} func (*Region) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{109} + return fileDescriptor_ca37af0df9a5bbd2, []int{110} } func (m *Region) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3136,7 +3164,7 @@ var xxx_messageInfo_Region proto.InternalMessageInfo func (m *ResourceData) Reset() { *m = ResourceData{} } func (*ResourceData) ProtoMessage() {} func (*ResourceData) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{110} + return fileDescriptor_ca37af0df9a5bbd2, []int{111} } func (m *ResourceData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3164,7 +3192,7 @@ var xxx_messageInfo_ResourceData proto.InternalMessageInfo func (m *ResourceWatchCacheSize) Reset() { *m = ResourceWatchCacheSize{} } func (*ResourceWatchCacheSize) ProtoMessage() {} func (*ResourceWatchCacheSize) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{111} + return fileDescriptor_ca37af0df9a5bbd2, []int{112} } func (m *ResourceWatchCacheSize) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3192,7 +3220,7 @@ var xxx_messageInfo_ResourceWatchCacheSize proto.InternalMessageInfo func (m *SSHAccess) Reset() { *m = SSHAccess{} } func (*SSHAccess) ProtoMessage() {} func (*SSHAccess) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{112} + return fileDescriptor_ca37af0df9a5bbd2, []int{113} } func (m *SSHAccess) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3220,7 +3248,7 @@ var xxx_messageInfo_SSHAccess proto.InternalMessageInfo func (m *SecretBinding) Reset() { *m = SecretBinding{} } func (*SecretBinding) ProtoMessage() {} func (*SecretBinding) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{113} + return fileDescriptor_ca37af0df9a5bbd2, []int{114} } func (m *SecretBinding) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3248,7 +3276,7 @@ var xxx_messageInfo_SecretBinding proto.InternalMessageInfo func (m *SecretBindingList) Reset() { *m = SecretBindingList{} } func (*SecretBindingList) ProtoMessage() {} func (*SecretBindingList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{114} + return fileDescriptor_ca37af0df9a5bbd2, []int{115} } func (m *SecretBindingList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3276,7 +3304,7 @@ var xxx_messageInfo_SecretBindingList proto.InternalMessageInfo func (m *SecretBindingProvider) Reset() { *m = SecretBindingProvider{} } func (*SecretBindingProvider) ProtoMessage() {} func (*SecretBindingProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{115} + return fileDescriptor_ca37af0df9a5bbd2, []int{116} } func (m *SecretBindingProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3304,7 +3332,7 @@ var xxx_messageInfo_SecretBindingProvider proto.InternalMessageInfo func (m *Seed) Reset() { *m = Seed{} } func (*Seed) ProtoMessage() {} func (*Seed) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{116} + return fileDescriptor_ca37af0df9a5bbd2, []int{117} } func (m *Seed) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3332,7 +3360,7 @@ var xxx_messageInfo_Seed proto.InternalMessageInfo func (m *SeedBackup) Reset() { *m = SeedBackup{} } func (*SeedBackup) ProtoMessage() {} func (*SeedBackup) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{117} + return fileDescriptor_ca37af0df9a5bbd2, []int{118} } func (m *SeedBackup) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3360,7 +3388,7 @@ var xxx_messageInfo_SeedBackup proto.InternalMessageInfo func (m *SeedDNS) Reset() { *m = SeedDNS{} } func (*SeedDNS) ProtoMessage() {} func (*SeedDNS) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{118} + return fileDescriptor_ca37af0df9a5bbd2, []int{119} } func (m *SeedDNS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3388,7 +3416,7 @@ var xxx_messageInfo_SeedDNS proto.InternalMessageInfo func (m *SeedDNSProvider) Reset() { *m = SeedDNSProvider{} } func (*SeedDNSProvider) ProtoMessage() {} func (*SeedDNSProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{119} + return fileDescriptor_ca37af0df9a5bbd2, []int{120} } func (m *SeedDNSProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3416,7 +3444,7 @@ var xxx_messageInfo_SeedDNSProvider proto.InternalMessageInfo func (m *SeedList) Reset() { *m = SeedList{} } func (*SeedList) ProtoMessage() {} func (*SeedList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{120} + return fileDescriptor_ca37af0df9a5bbd2, []int{121} } func (m *SeedList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3444,7 +3472,7 @@ var xxx_messageInfo_SeedList proto.InternalMessageInfo func (m *SeedNetworks) Reset() { *m = SeedNetworks{} } func (*SeedNetworks) ProtoMessage() {} func (*SeedNetworks) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{121} + return fileDescriptor_ca37af0df9a5bbd2, []int{122} } func (m *SeedNetworks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3472,7 +3500,7 @@ var xxx_messageInfo_SeedNetworks proto.InternalMessageInfo func (m *SeedProvider) Reset() { *m = SeedProvider{} } func (*SeedProvider) ProtoMessage() {} func (*SeedProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{122} + return fileDescriptor_ca37af0df9a5bbd2, []int{123} } func (m *SeedProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3500,7 +3528,7 @@ var xxx_messageInfo_SeedProvider proto.InternalMessageInfo func (m *SeedSelector) Reset() { *m = SeedSelector{} } func (*SeedSelector) ProtoMessage() {} func (*SeedSelector) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{123} + return fileDescriptor_ca37af0df9a5bbd2, []int{124} } func (m *SeedSelector) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3528,7 +3556,7 @@ var xxx_messageInfo_SeedSelector proto.InternalMessageInfo func (m *SeedSettingDependencyWatchdog) Reset() { *m = SeedSettingDependencyWatchdog{} } func (*SeedSettingDependencyWatchdog) ProtoMessage() {} func (*SeedSettingDependencyWatchdog) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{124} + return fileDescriptor_ca37af0df9a5bbd2, []int{125} } func (m *SeedSettingDependencyWatchdog) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3556,7 +3584,7 @@ var xxx_messageInfo_SeedSettingDependencyWatchdog proto.InternalMessageInfo func (m *SeedSettingDependencyWatchdogProber) Reset() { *m = SeedSettingDependencyWatchdogProber{} } func (*SeedSettingDependencyWatchdogProber) ProtoMessage() {} func (*SeedSettingDependencyWatchdogProber) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{125} + return fileDescriptor_ca37af0df9a5bbd2, []int{126} } func (m *SeedSettingDependencyWatchdogProber) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3584,7 +3612,7 @@ var xxx_messageInfo_SeedSettingDependencyWatchdogProber proto.InternalMessageInf func (m *SeedSettingDependencyWatchdogWeeder) Reset() { *m = SeedSettingDependencyWatchdogWeeder{} } func (*SeedSettingDependencyWatchdogWeeder) ProtoMessage() {} func (*SeedSettingDependencyWatchdogWeeder) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{126} + return fileDescriptor_ca37af0df9a5bbd2, []int{127} } func (m *SeedSettingDependencyWatchdogWeeder) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3612,7 +3640,7 @@ var xxx_messageInfo_SeedSettingDependencyWatchdogWeeder proto.InternalMessageInf func (m *SeedSettingExcessCapacityReservation) Reset() { *m = SeedSettingExcessCapacityReservation{} } func (*SeedSettingExcessCapacityReservation) ProtoMessage() {} func (*SeedSettingExcessCapacityReservation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{127} + return fileDescriptor_ca37af0df9a5bbd2, []int{128} } func (m *SeedSettingExcessCapacityReservation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3642,7 +3670,7 @@ func (m *SeedSettingExcessCapacityReservationConfig) Reset() { } func (*SeedSettingExcessCapacityReservationConfig) ProtoMessage() {} func (*SeedSettingExcessCapacityReservationConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{128} + return fileDescriptor_ca37af0df9a5bbd2, []int{129} } func (m *SeedSettingExcessCapacityReservationConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3670,7 +3698,7 @@ var xxx_messageInfo_SeedSettingExcessCapacityReservationConfig proto.InternalMes func (m *SeedSettingLoadBalancerServices) Reset() { *m = SeedSettingLoadBalancerServices{} } func (*SeedSettingLoadBalancerServices) ProtoMessage() {} func (*SeedSettingLoadBalancerServices) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{129} + return fileDescriptor_ca37af0df9a5bbd2, []int{130} } func (m *SeedSettingLoadBalancerServices) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3698,7 +3726,7 @@ var xxx_messageInfo_SeedSettingLoadBalancerServices proto.InternalMessageInfo func (m *SeedSettingLoadBalancerServicesZones) Reset() { *m = SeedSettingLoadBalancerServicesZones{} } func (*SeedSettingLoadBalancerServicesZones) ProtoMessage() {} func (*SeedSettingLoadBalancerServicesZones) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{130} + return fileDescriptor_ca37af0df9a5bbd2, []int{131} } func (m *SeedSettingLoadBalancerServicesZones) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3726,7 +3754,7 @@ var xxx_messageInfo_SeedSettingLoadBalancerServicesZones proto.InternalMessageIn func (m *SeedSettingScheduling) Reset() { *m = SeedSettingScheduling{} } func (*SeedSettingScheduling) ProtoMessage() {} func (*SeedSettingScheduling) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{131} + return fileDescriptor_ca37af0df9a5bbd2, []int{132} } func (m *SeedSettingScheduling) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3754,7 +3782,7 @@ var xxx_messageInfo_SeedSettingScheduling proto.InternalMessageInfo func (m *SeedSettingTopologyAwareRouting) Reset() { *m = SeedSettingTopologyAwareRouting{} } func (*SeedSettingTopologyAwareRouting) ProtoMessage() {} func (*SeedSettingTopologyAwareRouting) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{132} + return fileDescriptor_ca37af0df9a5bbd2, []int{133} } func (m *SeedSettingTopologyAwareRouting) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3782,7 +3810,7 @@ var xxx_messageInfo_SeedSettingTopologyAwareRouting proto.InternalMessageInfo func (m *SeedSettingVerticalPodAutoscaler) Reset() { *m = SeedSettingVerticalPodAutoscaler{} } func (*SeedSettingVerticalPodAutoscaler) ProtoMessage() {} func (*SeedSettingVerticalPodAutoscaler) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{133} + return fileDescriptor_ca37af0df9a5bbd2, []int{134} } func (m *SeedSettingVerticalPodAutoscaler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3810,7 +3838,7 @@ var xxx_messageInfo_SeedSettingVerticalPodAutoscaler proto.InternalMessageInfo func (m *SeedSettings) Reset() { *m = SeedSettings{} } func (*SeedSettings) ProtoMessage() {} func (*SeedSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{134} + return fileDescriptor_ca37af0df9a5bbd2, []int{135} } func (m *SeedSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3838,7 +3866,7 @@ var xxx_messageInfo_SeedSettings proto.InternalMessageInfo func (m *SeedSpec) Reset() { *m = SeedSpec{} } func (*SeedSpec) ProtoMessage() {} func (*SeedSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{135} + return fileDescriptor_ca37af0df9a5bbd2, []int{136} } func (m *SeedSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3866,7 +3894,7 @@ var xxx_messageInfo_SeedSpec proto.InternalMessageInfo func (m *SeedStatus) Reset() { *m = SeedStatus{} } func (*SeedStatus) ProtoMessage() {} func (*SeedStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{136} + return fileDescriptor_ca37af0df9a5bbd2, []int{137} } func (m *SeedStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3894,7 +3922,7 @@ var xxx_messageInfo_SeedStatus proto.InternalMessageInfo func (m *SeedTaint) Reset() { *m = SeedTaint{} } func (*SeedTaint) ProtoMessage() {} func (*SeedTaint) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{137} + return fileDescriptor_ca37af0df9a5bbd2, []int{138} } func (m *SeedTaint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3922,7 +3950,7 @@ var xxx_messageInfo_SeedTaint proto.InternalMessageInfo func (m *SeedTemplate) Reset() { *m = SeedTemplate{} } func (*SeedTemplate) ProtoMessage() {} func (*SeedTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{138} + return fileDescriptor_ca37af0df9a5bbd2, []int{139} } func (m *SeedTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3950,7 +3978,7 @@ var xxx_messageInfo_SeedTemplate proto.InternalMessageInfo func (m *SeedVolume) Reset() { *m = SeedVolume{} } func (*SeedVolume) ProtoMessage() {} func (*SeedVolume) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{139} + return fileDescriptor_ca37af0df9a5bbd2, []int{140} } func (m *SeedVolume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3978,7 +4006,7 @@ var xxx_messageInfo_SeedVolume proto.InternalMessageInfo func (m *SeedVolumeProvider) Reset() { *m = SeedVolumeProvider{} } func (*SeedVolumeProvider) ProtoMessage() {} func (*SeedVolumeProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{140} + return fileDescriptor_ca37af0df9a5bbd2, []int{141} } func (m *SeedVolumeProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4006,7 +4034,7 @@ var xxx_messageInfo_SeedVolumeProvider proto.InternalMessageInfo func (m *ServiceAccountConfig) Reset() { *m = ServiceAccountConfig{} } func (*ServiceAccountConfig) ProtoMessage() {} func (*ServiceAccountConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{141} + return fileDescriptor_ca37af0df9a5bbd2, []int{142} } func (m *ServiceAccountConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4034,7 +4062,7 @@ var xxx_messageInfo_ServiceAccountConfig proto.InternalMessageInfo func (m *ServiceAccountKeyRotation) Reset() { *m = ServiceAccountKeyRotation{} } func (*ServiceAccountKeyRotation) ProtoMessage() {} func (*ServiceAccountKeyRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{142} + return fileDescriptor_ca37af0df9a5bbd2, []int{143} } func (m *ServiceAccountKeyRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4062,7 +4090,7 @@ var xxx_messageInfo_ServiceAccountKeyRotation proto.InternalMessageInfo func (m *Shoot) Reset() { *m = Shoot{} } func (*Shoot) ProtoMessage() {} func (*Shoot) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{143} + return fileDescriptor_ca37af0df9a5bbd2, []int{144} } func (m *Shoot) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4090,7 +4118,7 @@ var xxx_messageInfo_Shoot proto.InternalMessageInfo func (m *ShootAdvertisedAddress) Reset() { *m = ShootAdvertisedAddress{} } func (*ShootAdvertisedAddress) ProtoMessage() {} func (*ShootAdvertisedAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{144} + return fileDescriptor_ca37af0df9a5bbd2, []int{145} } func (m *ShootAdvertisedAddress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4118,7 +4146,7 @@ var xxx_messageInfo_ShootAdvertisedAddress proto.InternalMessageInfo func (m *ShootCredentials) Reset() { *m = ShootCredentials{} } func (*ShootCredentials) ProtoMessage() {} func (*ShootCredentials) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{145} + return fileDescriptor_ca37af0df9a5bbd2, []int{146} } func (m *ShootCredentials) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4146,7 +4174,7 @@ var xxx_messageInfo_ShootCredentials proto.InternalMessageInfo func (m *ShootCredentialsRotation) Reset() { *m = ShootCredentialsRotation{} } func (*ShootCredentialsRotation) ProtoMessage() {} func (*ShootCredentialsRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{146} + return fileDescriptor_ca37af0df9a5bbd2, []int{147} } func (m *ShootCredentialsRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4174,7 +4202,7 @@ var xxx_messageInfo_ShootCredentialsRotation proto.InternalMessageInfo func (m *ShootKubeconfigRotation) Reset() { *m = ShootKubeconfigRotation{} } func (*ShootKubeconfigRotation) ProtoMessage() {} func (*ShootKubeconfigRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{147} + return fileDescriptor_ca37af0df9a5bbd2, []int{148} } func (m *ShootKubeconfigRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4202,7 +4230,7 @@ var xxx_messageInfo_ShootKubeconfigRotation proto.InternalMessageInfo func (m *ShootList) Reset() { *m = ShootList{} } func (*ShootList) ProtoMessage() {} func (*ShootList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{148} + return fileDescriptor_ca37af0df9a5bbd2, []int{149} } func (m *ShootList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4230,7 +4258,7 @@ var xxx_messageInfo_ShootList proto.InternalMessageInfo func (m *ShootMachineImage) Reset() { *m = ShootMachineImage{} } func (*ShootMachineImage) ProtoMessage() {} func (*ShootMachineImage) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{149} + return fileDescriptor_ca37af0df9a5bbd2, []int{150} } func (m *ShootMachineImage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4258,7 +4286,7 @@ var xxx_messageInfo_ShootMachineImage proto.InternalMessageInfo func (m *ShootNetworks) Reset() { *m = ShootNetworks{} } func (*ShootNetworks) ProtoMessage() {} func (*ShootNetworks) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{150} + return fileDescriptor_ca37af0df9a5bbd2, []int{151} } func (m *ShootNetworks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4286,7 +4314,7 @@ var xxx_messageInfo_ShootNetworks proto.InternalMessageInfo func (m *ShootSSHKeypairRotation) Reset() { *m = ShootSSHKeypairRotation{} } func (*ShootSSHKeypairRotation) ProtoMessage() {} func (*ShootSSHKeypairRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{151} + return fileDescriptor_ca37af0df9a5bbd2, []int{152} } func (m *ShootSSHKeypairRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4314,7 +4342,7 @@ var xxx_messageInfo_ShootSSHKeypairRotation proto.InternalMessageInfo func (m *ShootSpec) Reset() { *m = ShootSpec{} } func (*ShootSpec) ProtoMessage() {} func (*ShootSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{152} + return fileDescriptor_ca37af0df9a5bbd2, []int{153} } func (m *ShootSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4342,7 +4370,7 @@ var xxx_messageInfo_ShootSpec proto.InternalMessageInfo func (m *ShootState) Reset() { *m = ShootState{} } func (*ShootState) ProtoMessage() {} func (*ShootState) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{153} + return fileDescriptor_ca37af0df9a5bbd2, []int{154} } func (m *ShootState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4370,7 +4398,7 @@ var xxx_messageInfo_ShootState proto.InternalMessageInfo func (m *ShootStateList) Reset() { *m = ShootStateList{} } func (*ShootStateList) ProtoMessage() {} func (*ShootStateList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{154} + return fileDescriptor_ca37af0df9a5bbd2, []int{155} } func (m *ShootStateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4398,7 +4426,7 @@ var xxx_messageInfo_ShootStateList proto.InternalMessageInfo func (m *ShootStateSpec) Reset() { *m = ShootStateSpec{} } func (*ShootStateSpec) ProtoMessage() {} func (*ShootStateSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{155} + return fileDescriptor_ca37af0df9a5bbd2, []int{156} } func (m *ShootStateSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4426,7 +4454,7 @@ var xxx_messageInfo_ShootStateSpec proto.InternalMessageInfo func (m *ShootStatus) Reset() { *m = ShootStatus{} } func (*ShootStatus) ProtoMessage() {} func (*ShootStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{156} + return fileDescriptor_ca37af0df9a5bbd2, []int{157} } func (m *ShootStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4454,7 +4482,7 @@ var xxx_messageInfo_ShootStatus proto.InternalMessageInfo func (m *ShootTemplate) Reset() { *m = ShootTemplate{} } func (*ShootTemplate) ProtoMessage() {} func (*ShootTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{157} + return fileDescriptor_ca37af0df9a5bbd2, []int{158} } func (m *ShootTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4482,7 +4510,7 @@ var xxx_messageInfo_ShootTemplate proto.InternalMessageInfo func (m *SystemComponents) Reset() { *m = SystemComponents{} } func (*SystemComponents) ProtoMessage() {} func (*SystemComponents) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{158} + return fileDescriptor_ca37af0df9a5bbd2, []int{159} } func (m *SystemComponents) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4510,7 +4538,7 @@ var xxx_messageInfo_SystemComponents proto.InternalMessageInfo func (m *Toleration) Reset() { *m = Toleration{} } func (*Toleration) ProtoMessage() {} func (*Toleration) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{159} + return fileDescriptor_ca37af0df9a5bbd2, []int{160} } func (m *Toleration) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4538,7 +4566,7 @@ var xxx_messageInfo_Toleration proto.InternalMessageInfo func (m *VerticalPodAutoscaler) Reset() { *m = VerticalPodAutoscaler{} } func (*VerticalPodAutoscaler) ProtoMessage() {} func (*VerticalPodAutoscaler) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{160} + return fileDescriptor_ca37af0df9a5bbd2, []int{161} } func (m *VerticalPodAutoscaler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4566,7 +4594,7 @@ var xxx_messageInfo_VerticalPodAutoscaler proto.InternalMessageInfo func (m *Volume) Reset() { *m = Volume{} } func (*Volume) ProtoMessage() {} func (*Volume) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{161} + return fileDescriptor_ca37af0df9a5bbd2, []int{162} } func (m *Volume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4594,7 +4622,7 @@ var xxx_messageInfo_Volume proto.InternalMessageInfo func (m *VolumeType) Reset() { *m = VolumeType{} } func (*VolumeType) ProtoMessage() {} func (*VolumeType) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{162} + return fileDescriptor_ca37af0df9a5bbd2, []int{163} } func (m *VolumeType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4622,7 +4650,7 @@ var xxx_messageInfo_VolumeType proto.InternalMessageInfo func (m *WatchCacheSizes) Reset() { *m = WatchCacheSizes{} } func (*WatchCacheSizes) ProtoMessage() {} func (*WatchCacheSizes) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{163} + return fileDescriptor_ca37af0df9a5bbd2, []int{164} } func (m *WatchCacheSizes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4650,7 +4678,7 @@ var xxx_messageInfo_WatchCacheSizes proto.InternalMessageInfo func (m *Worker) Reset() { *m = Worker{} } func (*Worker) ProtoMessage() {} func (*Worker) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{164} + return fileDescriptor_ca37af0df9a5bbd2, []int{165} } func (m *Worker) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4678,7 +4706,7 @@ var xxx_messageInfo_Worker proto.InternalMessageInfo func (m *WorkerKubernetes) Reset() { *m = WorkerKubernetes{} } func (*WorkerKubernetes) ProtoMessage() {} func (*WorkerKubernetes) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{165} + return fileDescriptor_ca37af0df9a5bbd2, []int{166} } func (m *WorkerKubernetes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4706,7 +4734,7 @@ var xxx_messageInfo_WorkerKubernetes proto.InternalMessageInfo func (m *WorkerSystemComponents) Reset() { *m = WorkerSystemComponents{} } func (*WorkerSystemComponents) ProtoMessage() {} func (*WorkerSystemComponents) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{166} + return fileDescriptor_ca37af0df9a5bbd2, []int{167} } func (m *WorkerSystemComponents) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4734,7 +4762,7 @@ var xxx_messageInfo_WorkerSystemComponents proto.InternalMessageInfo func (m *WorkersSettings) Reset() { *m = WorkersSettings{} } func (*WorkersSettings) ProtoMessage() {} func (*WorkersSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{167} + return fileDescriptor_ca37af0df9a5bbd2, []int{168} } func (m *WorkersSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4808,6 +4836,7 @@ func init() { proto.RegisterType((*DataVolume)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.DataVolume") proto.RegisterType((*DeploymentRef)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.DeploymentRef") proto.RegisterType((*ETCDEncryptionKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ETCDEncryptionKeyRotation") + proto.RegisterType((*EncryptionConfig)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.EncryptionConfig") proto.RegisterType((*ExpirableVersion)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ExpirableVersion") proto.RegisterType((*ExposureClass)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ExposureClass") proto.RegisterType((*ExposureClassList)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ExposureClassList") @@ -4954,755 +4983,759 @@ func init() { } var fileDescriptor_ca37af0df9a5bbd2 = []byte{ - // 11965 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7d, 0x6c, 0x25, 0x59, - 0x56, 0x18, 0xbe, 0xf5, 0xfc, 0x7d, 0xfc, 0xd1, 0xee, 0xdb, 0x1f, 0xe3, 0x76, 0xcf, 0xf4, 0xeb, - 0xad, 0x99, 0xdd, 0xdf, 0x0c, 0xbb, 0xb8, 0x99, 0x61, 0x97, 0xdd, 0xe9, 0x65, 0x76, 0xd6, 0x7e, - 0xcf, 0xdd, 0xfd, 0x68, 0xdb, 0xed, 0xb9, 0xcf, 0x9e, 0x19, 0x06, 0x7e, 0x03, 0xe5, 0xaa, 0xeb, - 0xe7, 0x1a, 0xd7, 0xab, 0x7a, 0x53, 0x55, 0xcf, 0xed, 0x37, 0x03, 0x81, 0xdd, 0xb0, 0x84, 0x1d, - 0xd8, 0x08, 0x21, 0x91, 0xd5, 0x2e, 0x24, 0x2c, 0x42, 0xe4, 0x8b, 0x88, 0x20, 0x22, 0x22, 0x01, - 0x8a, 0x84, 0x90, 0x12, 0x76, 0x11, 0xa0, 0x15, 0x24, 0xca, 0xa2, 0x04, 0x93, 0x75, 0x08, 0x44, - 0x4a, 0x84, 0x22, 0xa1, 0x28, 0x4a, 0x07, 0x91, 0xe8, 0x7e, 0x55, 0xdd, 0xfa, 0x7a, 0xb6, 0xeb, - 0xd9, 0xde, 0x1d, 0xc1, 0x5f, 0xf6, 0xbb, 0xe7, 0xde, 0x73, 0xee, 0xbd, 0x75, 0xef, 0xb9, 0xe7, - 0x9e, 0x7b, 0x3e, 0x60, 0xa9, 0x65, 0x87, 0x3b, 0xdd, 0xad, 0x05, 0xd3, 0x6b, 0xdf, 0x6a, 0x19, - 0xbe, 0x45, 0x5c, 0xe2, 0xc7, 0xff, 0x74, 0x76, 0x5b, 0xb7, 0x8c, 0x8e, 0x1d, 0xdc, 0x32, 0x3d, - 0x9f, 0xdc, 0xda, 0x7b, 0x76, 0x8b, 0x84, 0xc6, 0xb3, 0xb7, 0x5a, 0x14, 0x66, 0x84, 0xc4, 0x5a, - 0xe8, 0xf8, 0x5e, 0xe8, 0xa1, 0xe7, 0x62, 0x1c, 0x0b, 0xb2, 0x69, 0xfc, 0x4f, 0x67, 0xb7, 0xb5, - 0x40, 0x71, 0x2c, 0x50, 0x1c, 0x0b, 0x02, 0xc7, 0xfc, 0x37, 0xab, 0x74, 0xbd, 0x96, 0x77, 0x8b, - 0xa1, 0xda, 0xea, 0x6e, 0xb3, 0x5f, 0xec, 0x07, 0xfb, 0x8f, 0x93, 0x98, 0x7f, 0x66, 0xf7, 0xa3, - 0xc1, 0x82, 0xed, 0xd1, 0xce, 0xdc, 0x32, 0xba, 0xa1, 0x17, 0x98, 0x86, 0x63, 0xbb, 0xad, 0x5b, - 0x7b, 0x99, 0xde, 0xcc, 0xeb, 0x4a, 0x55, 0xd1, 0xed, 0xbe, 0x75, 0xfc, 0x2d, 0xc3, 0xcc, 0xab, - 0xf3, 0xa1, 0xb8, 0x4e, 0xdb, 0x30, 0x77, 0x6c, 0x97, 0xf8, 0x3d, 0x39, 0x21, 0xb7, 0x7c, 0x12, - 0x78, 0x5d, 0xdf, 0x24, 0x27, 0x6a, 0x15, 0xdc, 0x6a, 0x93, 0xd0, 0xc8, 0xa3, 0x75, 0xab, 0xa8, - 0x95, 0xdf, 0x75, 0x43, 0xbb, 0x9d, 0x25, 0xf3, 0x6d, 0x47, 0x35, 0x08, 0xcc, 0x1d, 0xd2, 0x36, - 0x32, 0xed, 0xbe, 0xb5, 0xa8, 0x5d, 0x37, 0xb4, 0x9d, 0x5b, 0xb6, 0x1b, 0x06, 0xa1, 0x9f, 0x6e, - 0xa4, 0xbf, 0xa3, 0xc1, 0xec, 0xe2, 0x7a, 0xa3, 0x49, 0xfc, 0x3d, 0xe2, 0xaf, 0x78, 0xad, 0x96, - 0xed, 0xb6, 0xd0, 0x07, 0x60, 0x62, 0x8f, 0xf8, 0x5b, 0x5e, 0x60, 0x87, 0xbd, 0x39, 0xed, 0xa6, - 0xf6, 0xf4, 0xc8, 0xd2, 0xf4, 0xe1, 0x41, 0x75, 0xe2, 0x65, 0x59, 0x88, 0x63, 0x38, 0x6a, 0xc0, - 0xa5, 0x9d, 0x30, 0xec, 0x2c, 0x9a, 0x26, 0x09, 0x82, 0xa8, 0xc6, 0x5c, 0x85, 0x35, 0x7b, 0xec, - 0xf0, 0xa0, 0x7a, 0xe9, 0xde, 0xc6, 0xc6, 0x7a, 0x0a, 0x8c, 0xf3, 0xda, 0xe8, 0xbf, 0xac, 0xc1, - 0xc5, 0xa8, 0x33, 0x98, 0xbc, 0xd9, 0x25, 0x41, 0x18, 0x20, 0x0c, 0x57, 0xdb, 0xc6, 0xfe, 0x9a, - 0xe7, 0xae, 0x76, 0x43, 0x23, 0xb4, 0xdd, 0x56, 0xc3, 0xdd, 0x76, 0xec, 0xd6, 0x4e, 0x28, 0xba, - 0x36, 0x7f, 0x78, 0x50, 0xbd, 0xba, 0x9a, 0x5b, 0x03, 0x17, 0xb4, 0xa4, 0x9d, 0x6e, 0x1b, 0xfb, - 0x19, 0x84, 0x4a, 0xa7, 0x57, 0xb3, 0x60, 0x9c, 0xd7, 0x46, 0x7f, 0x0e, 0x46, 0x16, 0x2d, 0xcb, - 0x73, 0xd1, 0x33, 0x30, 0x46, 0x5c, 0x63, 0xcb, 0x21, 0x16, 0xeb, 0xd8, 0xf8, 0xd2, 0x85, 0x2f, - 0x1d, 0x54, 0xdf, 0x73, 0x78, 0x50, 0x1d, 0x5b, 0xe6, 0xc5, 0x58, 0xc2, 0xf5, 0x9f, 0xac, 0xc0, - 0x28, 0x6b, 0x14, 0xa0, 0x9f, 0xd0, 0xe0, 0xd2, 0x6e, 0x77, 0x8b, 0xf8, 0x2e, 0x09, 0x49, 0x50, - 0x37, 0x82, 0x9d, 0x2d, 0xcf, 0xf0, 0x39, 0x8a, 0xc9, 0xe7, 0xee, 0x2e, 0x9c, 0x7c, 0xff, 0x2d, - 0xdc, 0xcf, 0xa2, 0xe3, 0x63, 0xca, 0x01, 0xe0, 0x3c, 0xe2, 0x68, 0x0f, 0xa6, 0xdc, 0x96, 0xed, - 0xee, 0x37, 0xdc, 0x96, 0x4f, 0x82, 0x80, 0xcd, 0xcb, 0xe4, 0x73, 0x9f, 0x28, 0xd3, 0x99, 0x35, - 0x05, 0xcf, 0xd2, 0xec, 0xe1, 0x41, 0x75, 0x4a, 0x2d, 0xc1, 0x09, 0x3a, 0xfa, 0x5f, 0x69, 0x70, - 0x61, 0xd1, 0x6a, 0xdb, 0x41, 0x60, 0x7b, 0xee, 0xba, 0xd3, 0x6d, 0xd9, 0x2e, 0xba, 0x09, 0xc3, - 0xae, 0xd1, 0x26, 0x6c, 0x42, 0x26, 0x96, 0xa6, 0xc4, 0x9c, 0x0e, 0xaf, 0x19, 0x6d, 0x82, 0x19, - 0x04, 0xbd, 0x04, 0xa3, 0xa6, 0xe7, 0x6e, 0xdb, 0x2d, 0xd1, 0xcf, 0x6f, 0x5e, 0xe0, 0x3b, 0x61, - 0x41, 0xdd, 0x09, 0xac, 0x7b, 0x62, 0x07, 0x2d, 0x60, 0xe3, 0xe1, 0xf2, 0x7e, 0x48, 0x5c, 0x4a, - 0x66, 0x09, 0x0e, 0x0f, 0xaa, 0xa3, 0x35, 0x86, 0x00, 0x0b, 0x44, 0xe8, 0x69, 0x18, 0xb7, 0xec, - 0x80, 0x7f, 0xcc, 0x21, 0xf6, 0x31, 0xa7, 0x0e, 0x0f, 0xaa, 0xe3, 0x75, 0x51, 0x86, 0x23, 0x28, - 0x5a, 0x81, 0xcb, 0x74, 0x06, 0x79, 0xbb, 0x26, 0x31, 0x7d, 0x12, 0xd2, 0xae, 0xcd, 0x0d, 0xb3, - 0xee, 0xce, 0x1d, 0x1e, 0x54, 0x2f, 0xdf, 0xcf, 0x81, 0xe3, 0xdc, 0x56, 0xfa, 0x1d, 0x18, 0x5f, - 0x74, 0x88, 0x4f, 0x17, 0x18, 0xba, 0x0d, 0x33, 0xa4, 0x6d, 0xd8, 0x0e, 0x26, 0x26, 0xb1, 0xf7, - 0x88, 0x1f, 0xcc, 0x69, 0x37, 0x87, 0x9e, 0x9e, 0x58, 0x42, 0x87, 0x07, 0xd5, 0x99, 0xe5, 0x04, - 0x04, 0xa7, 0x6a, 0xea, 0x9f, 0xd4, 0x60, 0x72, 0xb1, 0x6b, 0xd9, 0x21, 0x1f, 0x17, 0xf2, 0x61, - 0xd2, 0xa0, 0x3f, 0xd7, 0x3d, 0xc7, 0x36, 0x7b, 0x62, 0x71, 0xbd, 0x58, 0xe6, 0x7b, 0x2e, 0xc6, - 0x68, 0x96, 0x2e, 0x1c, 0x1e, 0x54, 0x27, 0x95, 0x02, 0xac, 0x12, 0xd1, 0x77, 0x40, 0x85, 0xa1, - 0xef, 0x84, 0x29, 0x3e, 0xdc, 0x55, 0xa3, 0x83, 0xc9, 0xb6, 0xe8, 0xc3, 0x93, 0xca, 0xb7, 0x92, - 0x84, 0x16, 0x1e, 0x6c, 0xbd, 0x41, 0xcc, 0x10, 0x93, 0x6d, 0xe2, 0x13, 0xd7, 0x24, 0x7c, 0xd9, - 0xd4, 0x94, 0xc6, 0x38, 0x81, 0x4a, 0xff, 0x63, 0xca, 0xc4, 0xf6, 0x0c, 0xdb, 0x31, 0xb6, 0x6c, - 0xc7, 0x0e, 0x7b, 0xaf, 0x79, 0x2e, 0x39, 0xc6, 0xba, 0xd9, 0x84, 0xc7, 0xba, 0xae, 0xc1, 0xdb, - 0x39, 0x64, 0x95, 0xaf, 0x94, 0x8d, 0x5e, 0x87, 0xd0, 0x05, 0x4f, 0x67, 0xfa, 0xfa, 0xe1, 0x41, - 0xf5, 0xb1, 0xcd, 0xfc, 0x2a, 0xb8, 0xa8, 0x2d, 0xe5, 0x57, 0x0a, 0xe8, 0x65, 0xcf, 0xe9, 0xb6, - 0x05, 0xd6, 0x21, 0x86, 0x95, 0xf1, 0xab, 0xcd, 0xdc, 0x1a, 0xb8, 0xa0, 0xa5, 0xfe, 0xa5, 0x0a, - 0x4c, 0x2d, 0x19, 0xe6, 0x6e, 0xb7, 0xb3, 0xd4, 0x35, 0x77, 0x49, 0x88, 0xbe, 0x17, 0xc6, 0xe9, - 0x81, 0x63, 0x19, 0xa1, 0x21, 0x66, 0xf2, 0x5b, 0x0a, 0x57, 0x3d, 0xfb, 0x88, 0xb4, 0x76, 0x3c, - 0xb7, 0xab, 0x24, 0x34, 0x96, 0x90, 0x98, 0x13, 0x88, 0xcb, 0x70, 0x84, 0x15, 0x6d, 0xc3, 0x70, - 0xd0, 0x21, 0xa6, 0xd8, 0x53, 0xf5, 0x32, 0x6b, 0x45, 0xed, 0x71, 0xb3, 0x43, 0xcc, 0xf8, 0x2b, - 0xd0, 0x5f, 0x98, 0xe1, 0x47, 0x2e, 0x8c, 0x06, 0xa1, 0x11, 0x76, 0x03, 0xb6, 0xd1, 0x26, 0x9f, - 0xbb, 0x33, 0x30, 0x25, 0x86, 0x6d, 0x69, 0x46, 0xd0, 0x1a, 0xe5, 0xbf, 0xb1, 0xa0, 0xa2, 0xff, - 0x7b, 0x0d, 0x66, 0xd5, 0xea, 0x2b, 0x76, 0x10, 0xa2, 0xef, 0xce, 0x4c, 0xe7, 0xc2, 0xf1, 0xa6, - 0x93, 0xb6, 0x66, 0x93, 0x39, 0x2b, 0xc8, 0x8d, 0xcb, 0x12, 0x65, 0x2a, 0x09, 0x8c, 0xd8, 0x21, - 0x69, 0xf3, 0x65, 0x55, 0x92, 0x8f, 0xaa, 0x5d, 0x5e, 0x9a, 0x16, 0xc4, 0x46, 0x1a, 0x14, 0x2d, - 0xe6, 0xd8, 0xf5, 0xef, 0x85, 0xcb, 0x6a, 0xad, 0x75, 0xdf, 0xdb, 0xb3, 0x2d, 0xe2, 0xd3, 0x9d, - 0x10, 0xf6, 0x3a, 0x99, 0x9d, 0x40, 0x57, 0x16, 0x66, 0x10, 0xf4, 0x7e, 0x18, 0xf5, 0x49, 0xcb, - 0xf6, 0x5c, 0xf6, 0xb5, 0x27, 0xe2, 0xb9, 0xc3, 0xac, 0x14, 0x0b, 0xa8, 0xfe, 0x3f, 0x2b, 0xc9, - 0xb9, 0xa3, 0x9f, 0x11, 0xed, 0xc1, 0x78, 0x47, 0x90, 0x12, 0x73, 0x77, 0x6f, 0xd0, 0x01, 0xca, - 0xae, 0xc7, 0xb3, 0x2a, 0x4b, 0x70, 0x44, 0x0b, 0xd9, 0x30, 0x23, 0xff, 0xaf, 0x0d, 0xc0, 0xfe, - 0x19, 0x3b, 0x5d, 0x4f, 0x20, 0xc2, 0x29, 0xc4, 0x68, 0x03, 0x26, 0x02, 0xc6, 0xa4, 0x29, 0xe3, - 0x1a, 0x2a, 0x66, 0x5c, 0x4d, 0x59, 0x49, 0x30, 0xae, 0x8b, 0xa2, 0xfb, 0x13, 0x11, 0x00, 0xc7, - 0x88, 0xe8, 0x21, 0x13, 0x10, 0x62, 0x29, 0xc7, 0x05, 0x3b, 0x64, 0x9a, 0xa2, 0x0c, 0x47, 0x50, - 0xfd, 0x8b, 0xc3, 0x80, 0xb2, 0x4b, 0x5c, 0x9d, 0x01, 0x5e, 0x22, 0xe6, 0x7f, 0x90, 0x19, 0x10, - 0xbb, 0x25, 0x85, 0x18, 0xbd, 0x05, 0xd3, 0x8e, 0x11, 0x84, 0x0f, 0x3a, 0x54, 0x7a, 0x94, 0x0b, - 0x65, 0xf2, 0xb9, 0xc5, 0x32, 0x5f, 0x7a, 0x45, 0x45, 0xb4, 0x74, 0xf1, 0xf0, 0xa0, 0x3a, 0x9d, - 0x28, 0xc2, 0x49, 0x52, 0xe8, 0x0d, 0x98, 0xa0, 0x05, 0xcb, 0xbe, 0xef, 0xf9, 0x62, 0xf6, 0x5f, - 0x28, 0x4b, 0x97, 0x21, 0xe1, 0xd2, 0x6c, 0xf4, 0x13, 0xc7, 0xe8, 0xd1, 0x77, 0x00, 0xf2, 0xb6, - 0x02, 0x2a, 0x80, 0x5a, 0x77, 0xb9, 0xa8, 0x4c, 0x07, 0x4b, 0xbf, 0xce, 0xd0, 0xd2, 0xbc, 0xf8, - 0x9a, 0xe8, 0x41, 0xa6, 0x06, 0xce, 0x69, 0x85, 0x76, 0x01, 0x45, 0xe2, 0x76, 0xb4, 0x00, 0xe6, - 0x46, 0x8e, 0xbf, 0x7c, 0xae, 0x52, 0x62, 0x77, 0x33, 0x28, 0x70, 0x0e, 0x5a, 0xfd, 0x5f, 0x57, - 0x60, 0x92, 0x2f, 0x91, 0x65, 0x37, 0xf4, 0x7b, 0xe7, 0x70, 0x40, 0x90, 0xc4, 0x01, 0x51, 0x2b, - 0xbf, 0xe7, 0x59, 0x87, 0x0b, 0xcf, 0x87, 0x76, 0xea, 0x7c, 0x58, 0x1e, 0x94, 0x50, 0xff, 0xe3, - 0xe1, 0xdf, 0x69, 0x70, 0x41, 0xa9, 0x7d, 0x0e, 0xa7, 0x83, 0x95, 0x3c, 0x1d, 0x5e, 0x1c, 0x70, - 0x7c, 0x05, 0x87, 0x83, 0x97, 0x18, 0x16, 0x63, 0xdc, 0xcf, 0x01, 0x6c, 0x31, 0x76, 0xb2, 0x16, - 0xcb, 0x49, 0xd1, 0x27, 0x5f, 0x8a, 0x20, 0x58, 0xa9, 0x95, 0xe0, 0x59, 0x95, 0xbe, 0x3c, 0xeb, - 0xbf, 0x0c, 0xc1, 0xc5, 0xcc, 0xb4, 0x67, 0xf9, 0x88, 0xf6, 0x75, 0xe2, 0x23, 0x95, 0xaf, 0x07, - 0x1f, 0x19, 0x2a, 0xc5, 0x47, 0x8e, 0x7d, 0x4e, 0x20, 0x1f, 0x50, 0xdb, 0x6e, 0xf1, 0x66, 0xcd, - 0xd0, 0xf0, 0xc3, 0x0d, 0xbb, 0x4d, 0x04, 0xc7, 0xf9, 0xa6, 0xe3, 0x2d, 0x59, 0xda, 0x82, 0x33, - 0x9e, 0xd5, 0x0c, 0x26, 0x9c, 0x83, 0x5d, 0xff, 0xfd, 0x61, 0x80, 0xda, 0x22, 0xf6, 0x42, 0xde, - 0xd9, 0x17, 0x61, 0xa4, 0xb3, 0x63, 0x04, 0x72, 0x3d, 0x3d, 0x23, 0x17, 0xe3, 0x3a, 0x2d, 0x7c, - 0x74, 0x50, 0x9d, 0xab, 0xf9, 0xc4, 0x22, 0x6e, 0x68, 0x1b, 0x4e, 0x20, 0x1b, 0x31, 0x18, 0xe6, - 0xed, 0xe8, 0x18, 0xe8, 0x34, 0xd6, 0xbc, 0x76, 0xc7, 0x21, 0x14, 0xca, 0xc6, 0x50, 0x29, 0x37, - 0x86, 0x95, 0x0c, 0x26, 0x9c, 0x83, 0x5d, 0xd2, 0x6c, 0xb8, 0x76, 0x68, 0x1b, 0x11, 0xcd, 0xa1, - 0xf2, 0x34, 0x93, 0x98, 0x70, 0x0e, 0x76, 0xf4, 0x8e, 0x06, 0xf3, 0xc9, 0xe2, 0x3b, 0xb6, 0x6b, - 0x07, 0x3b, 0xc4, 0x62, 0xc4, 0x87, 0x4f, 0x4c, 0xfc, 0xc6, 0xe1, 0x41, 0x75, 0x7e, 0xa5, 0x10, - 0x23, 0xee, 0x43, 0x0d, 0x7d, 0x56, 0x83, 0xeb, 0xa9, 0x79, 0xf1, 0xed, 0x56, 0x8b, 0xf8, 0xa2, - 0x37, 0x27, 0x5f, 0x42, 0xd5, 0xc3, 0x83, 0xea, 0xf5, 0x95, 0x62, 0x94, 0xb8, 0x1f, 0x3d, 0xfd, - 0x37, 0x35, 0x18, 0xaa, 0xe1, 0x06, 0xfa, 0x40, 0xe2, 0x12, 0xf7, 0x98, 0x7a, 0x89, 0x7b, 0x74, - 0x50, 0x1d, 0xab, 0xe1, 0x86, 0x72, 0x9f, 0xfb, 0xac, 0x06, 0x17, 0x4d, 0xcf, 0x0d, 0x0d, 0xda, - 0x2f, 0xcc, 0x25, 0x1d, 0xc9, 0x55, 0x4b, 0xdd, 0x5f, 0x6a, 0x29, 0x64, 0x4b, 0xd7, 0x44, 0x07, - 0x2e, 0xa6, 0x21, 0x01, 0xce, 0x52, 0xd6, 0xbf, 0xaa, 0xc1, 0x54, 0xcd, 0xf1, 0xba, 0xd6, 0xba, - 0xef, 0x6d, 0xdb, 0x0e, 0x79, 0x77, 0x5c, 0xda, 0xd4, 0x1e, 0x17, 0x1d, 0xca, 0xec, 0x12, 0xa5, - 0x56, 0x7c, 0x97, 0x5c, 0xa2, 0xd4, 0x2e, 0x17, 0x9c, 0x93, 0x3f, 0x39, 0x96, 0x1c, 0x19, 0x3b, - 0x29, 0x9f, 0x86, 0x71, 0xd3, 0x58, 0xea, 0xba, 0x96, 0x13, 0xdd, 0xa2, 0x68, 0x2f, 0x6b, 0x8b, - 0xbc, 0x0c, 0x47, 0x50, 0xf4, 0x16, 0x40, 0xac, 0x50, 0x13, 0x9f, 0xe1, 0xce, 0x60, 0x4a, 0xbc, - 0x26, 0x09, 0x43, 0xdb, 0x6d, 0x05, 0xf1, 0xa7, 0x8f, 0x61, 0x58, 0xa1, 0x86, 0xbe, 0x1f, 0xa6, - 0xc5, 0x24, 0x37, 0xda, 0x46, 0x4b, 0xe8, 0x1b, 0x4a, 0xce, 0xd4, 0xaa, 0x82, 0x68, 0xe9, 0x8a, - 0x20, 0x3c, 0xad, 0x96, 0x06, 0x38, 0x49, 0x0d, 0xf5, 0x60, 0xaa, 0xad, 0xea, 0x50, 0x86, 0xcb, - 0x8b, 0x33, 0x8a, 0x3e, 0x65, 0xe9, 0xb2, 0x20, 0x3e, 0x95, 0xd0, 0xbe, 0x24, 0x48, 0xe5, 0x5c, - 0x05, 0x47, 0xce, 0xea, 0x2a, 0x48, 0x60, 0x8c, 0x5f, 0x86, 0x83, 0xb9, 0x51, 0x36, 0xc0, 0xdb, - 0x65, 0x06, 0xc8, 0xef, 0xd5, 0xb1, 0x86, 0x98, 0xff, 0x0e, 0xb0, 0xc4, 0x8d, 0xf6, 0x60, 0x8a, - 0x9e, 0xea, 0x4d, 0xe2, 0x10, 0x33, 0xf4, 0xfc, 0xb9, 0xb1, 0xf2, 0x1a, 0xd8, 0xa6, 0x82, 0x87, - 0xab, 0xd2, 0xd4, 0x12, 0x9c, 0xa0, 0x13, 0xe9, 0x0a, 0xc6, 0x0b, 0x75, 0x05, 0x5d, 0x98, 0xdc, - 0x53, 0x74, 0x5a, 0x13, 0x6c, 0x12, 0x3e, 0x5e, 0xa6, 0x63, 0xb1, 0x82, 0x6b, 0xe9, 0x92, 0x20, - 0x34, 0xa9, 0x2a, 0xc3, 0x54, 0x3a, 0xfa, 0x3f, 0x00, 0xb8, 0x58, 0x73, 0xba, 0x41, 0x48, 0xfc, - 0x45, 0xf1, 0x48, 0x44, 0x7c, 0xf4, 0x29, 0x0d, 0xae, 0xb2, 0x7f, 0xeb, 0xde, 0x43, 0xb7, 0x4e, - 0x1c, 0xa3, 0xb7, 0xb8, 0x4d, 0x6b, 0x58, 0xd6, 0xc9, 0x38, 0x50, 0xbd, 0x2b, 0xa4, 0x48, 0xa6, - 0x9c, 0x6b, 0xe6, 0x62, 0xc4, 0x05, 0x94, 0xd0, 0x8f, 0x6a, 0x70, 0x2d, 0x07, 0x54, 0x27, 0x0e, - 0x09, 0xa5, 0xe4, 0x72, 0xd2, 0x7e, 0x3c, 0x71, 0x78, 0x50, 0xbd, 0xd6, 0x2c, 0x42, 0x8a, 0x8b, - 0xe9, 0xa1, 0xbf, 0xab, 0xc1, 0x7c, 0x0e, 0xf4, 0x8e, 0x61, 0x3b, 0x5d, 0x5f, 0x0a, 0x35, 0x27, - 0xed, 0x0e, 0x93, 0x2d, 0x9a, 0x85, 0x58, 0x71, 0x1f, 0x8a, 0xe8, 0x07, 0xe0, 0x4a, 0x04, 0xdd, - 0x74, 0x5d, 0x42, 0xac, 0x84, 0x88, 0x73, 0xd2, 0xae, 0x5c, 0x3b, 0x3c, 0xa8, 0x5e, 0x69, 0xe6, - 0x21, 0xc4, 0xf9, 0x74, 0x50, 0x0b, 0x9e, 0x88, 0x01, 0xa1, 0xed, 0xd8, 0x6f, 0x71, 0x29, 0x6c, - 0xc7, 0x27, 0xc1, 0x8e, 0xe7, 0x58, 0x8c, 0x59, 0x68, 0x4b, 0xef, 0x3d, 0x3c, 0xa8, 0x3e, 0xd1, - 0xec, 0x57, 0x11, 0xf7, 0xc7, 0x83, 0x2c, 0x98, 0x0a, 0x4c, 0xc3, 0x6d, 0xb8, 0x21, 0xf1, 0xf7, - 0x0c, 0x67, 0x6e, 0xb4, 0xd4, 0x00, 0xf9, 0x16, 0x55, 0xf0, 0xe0, 0x04, 0x56, 0xf4, 0x51, 0x18, - 0x27, 0xfb, 0x1d, 0xc3, 0xb5, 0x08, 0x67, 0x0b, 0x13, 0x4b, 0x8f, 0xd3, 0xc3, 0x68, 0x59, 0x94, - 0x3d, 0x3a, 0xa8, 0x4e, 0xc9, 0xff, 0x57, 0x3d, 0x8b, 0xe0, 0xa8, 0x36, 0xfa, 0x3e, 0xb8, 0xcc, - 0xde, 0xc3, 0x2c, 0xc2, 0x98, 0x5c, 0x20, 0x05, 0xdd, 0xf1, 0x52, 0xfd, 0x64, 0x6f, 0x1b, 0xab, - 0x39, 0xf8, 0x70, 0x2e, 0x15, 0xfa, 0x19, 0xda, 0xc6, 0xfe, 0x5d, 0xdf, 0x30, 0xc9, 0x76, 0xd7, - 0xd9, 0x20, 0x7e, 0xdb, 0x76, 0xf9, 0x5d, 0x82, 0x98, 0x9e, 0x6b, 0x51, 0x56, 0xa2, 0x3d, 0x3d, - 0xc2, 0x3f, 0xc3, 0x6a, 0xbf, 0x8a, 0xb8, 0x3f, 0x1e, 0xf4, 0x21, 0x98, 0xb2, 0x5b, 0xae, 0xe7, - 0x93, 0x0d, 0xc3, 0x76, 0xc3, 0x60, 0x0e, 0x98, 0xda, 0x9d, 0x4d, 0x6b, 0x43, 0x29, 0xc7, 0x89, - 0x5a, 0x68, 0x0f, 0x90, 0x4b, 0x1e, 0xae, 0x7b, 0x16, 0x5b, 0x02, 0x9b, 0x1d, 0xb6, 0x90, 0xe7, - 0x26, 0x4b, 0x4d, 0x0d, 0xbb, 0x07, 0xac, 0x65, 0xb0, 0xe1, 0x1c, 0x0a, 0xe8, 0x0e, 0xa0, 0xb6, - 0xb1, 0xbf, 0xdc, 0xee, 0x84, 0xbd, 0xa5, 0xae, 0xb3, 0x2b, 0xb8, 0xc6, 0x14, 0x9b, 0x0b, 0x7e, - 0x0f, 0xcb, 0x40, 0x71, 0x4e, 0x0b, 0xfd, 0x60, 0x08, 0x26, 0x6a, 0x9e, 0x6b, 0xd9, 0xec, 0x1a, - 0xf6, 0x6c, 0x42, 0xe7, 0xfb, 0x84, 0xca, 0xc7, 0x1f, 0x1d, 0x54, 0xa7, 0xa3, 0x8a, 0x0a, 0x63, - 0x7f, 0x3e, 0x52, 0xb4, 0xf0, 0x8b, 0xfd, 0x7b, 0x93, 0x1a, 0x92, 0x47, 0x07, 0xd5, 0x0b, 0x51, - 0xb3, 0xa4, 0xd2, 0x84, 0xce, 0x1d, 0x95, 0xe6, 0x37, 0x7c, 0xc3, 0x0d, 0xec, 0x01, 0xee, 0x4f, - 0xd1, 0xcd, 0x78, 0x25, 0x83, 0x0d, 0xe7, 0x50, 0x40, 0x6f, 0xc0, 0x0c, 0x2d, 0xdd, 0xec, 0x58, - 0x46, 0x48, 0x4a, 0x5e, 0x9b, 0xae, 0x0a, 0x9a, 0x33, 0x2b, 0x09, 0x4c, 0x38, 0x85, 0x99, 0xeb, - 0xc8, 0x8d, 0xc0, 0x73, 0x19, 0xbb, 0x48, 0xe8, 0xc8, 0x69, 0x29, 0x16, 0x50, 0xf4, 0x0c, 0x8c, - 0xb5, 0x49, 0x10, 0x18, 0x2d, 0xc2, 0xf6, 0xff, 0x44, 0x7c, 0xc8, 0xaf, 0xf2, 0x62, 0x2c, 0xe1, - 0xe8, 0x83, 0x30, 0x62, 0x7a, 0x16, 0x09, 0xe6, 0xc6, 0xd8, 0x0a, 0xa5, 0x5f, 0x7b, 0xa4, 0x46, - 0x0b, 0x1e, 0x1d, 0x54, 0x27, 0x98, 0x1e, 0x81, 0xfe, 0xc2, 0xbc, 0x92, 0xfe, 0x33, 0x54, 0xe6, - 0x4e, 0x5d, 0x32, 0x8e, 0xa1, 0xdb, 0x3f, 0x3f, 0x35, 0xb9, 0xfe, 0x39, 0x7a, 0xe1, 0xf1, 0xdc, - 0xd0, 0xf7, 0x9c, 0x75, 0xc7, 0x70, 0x09, 0xfa, 0x61, 0x0d, 0x66, 0x77, 0xec, 0xd6, 0x8e, 0xfa, - 0x38, 0x27, 0x0e, 0xe6, 0x52, 0x77, 0x93, 0x7b, 0x29, 0x5c, 0x4b, 0x97, 0x0f, 0x0f, 0xaa, 0xb3, - 0xe9, 0x52, 0x9c, 0xa1, 0xa9, 0x7f, 0xa6, 0x02, 0x97, 0x45, 0xcf, 0x1c, 0x7a, 0x52, 0x76, 0x1c, - 0xaf, 0xd7, 0x26, 0xee, 0x79, 0xbc, 0xa3, 0xc9, 0x2f, 0x54, 0x29, 0xfc, 0x42, 0xed, 0xcc, 0x17, - 0x1a, 0x2a, 0xf3, 0x85, 0xa2, 0x85, 0x7c, 0xc4, 0x57, 0xfa, 0x33, 0x0d, 0xe6, 0xf2, 0xe6, 0xe2, - 0x1c, 0xee, 0x70, 0xed, 0xe4, 0x1d, 0xee, 0x5e, 0xd9, 0x4b, 0x79, 0xba, 0xeb, 0x05, 0x77, 0xb9, - 0x3f, 0xad, 0xc0, 0xd5, 0xb8, 0x7a, 0xc3, 0x0d, 0x42, 0xc3, 0x71, 0xb8, 0x9a, 0xea, 0xec, 0xbf, - 0x7b, 0x27, 0x71, 0x15, 0x5f, 0x1b, 0x6c, 0xa8, 0x6a, 0xdf, 0x0b, 0x35, 0xe5, 0xfb, 0x29, 0x4d, - 0xf9, 0xfa, 0x29, 0xd2, 0xec, 0xaf, 0x34, 0xff, 0x6f, 0x1a, 0xcc, 0xe7, 0x37, 0x3c, 0x87, 0x45, - 0xe5, 0x25, 0x17, 0xd5, 0x77, 0x9c, 0xde, 0xa8, 0x0b, 0x96, 0xd5, 0x2f, 0x57, 0x8a, 0x46, 0xcb, - 0x94, 0x05, 0xdb, 0x70, 0x81, 0xde, 0xe2, 0x82, 0x50, 0xa8, 0x74, 0x4f, 0x66, 0xeb, 0x20, 0x75, - 0x5c, 0x17, 0x70, 0x12, 0x07, 0x4e, 0x23, 0x45, 0x6b, 0x30, 0x46, 0xaf, 0x6e, 0x14, 0x7f, 0xe5, - 0xf8, 0xf8, 0xa3, 0xd3, 0xa8, 0xc9, 0xdb, 0x62, 0x89, 0x04, 0x7d, 0x37, 0x4c, 0x5b, 0xd1, 0x8e, - 0x3a, 0xe2, 0xa1, 0x33, 0x8d, 0x95, 0x29, 0xdf, 0xeb, 0x6a, 0x6b, 0x9c, 0x44, 0xa6, 0xff, 0xa5, - 0x06, 0x8f, 0xf7, 0x5b, 0x5b, 0xe8, 0x4d, 0x00, 0x53, 0x8a, 0x17, 0xdc, 0xd4, 0xa5, 0xa4, 0x7a, - 0x3e, 0x12, 0x52, 0xe2, 0x0d, 0x1a, 0x15, 0x05, 0x58, 0x21, 0x92, 0xf3, 0x7e, 0x5a, 0x39, 0xa3, - 0xf7, 0x53, 0xfd, 0xbf, 0x6b, 0x2a, 0x2b, 0x52, 0xbf, 0xed, 0xbb, 0x8d, 0x15, 0xa9, 0x7d, 0x2f, - 0xd4, 0x0f, 0xfe, 0x41, 0x05, 0x6e, 0xe6, 0x37, 0x51, 0xce, 0xde, 0x4f, 0xc0, 0x68, 0x87, 0xdb, - 0x23, 0x0d, 0xb1, 0xb3, 0xf1, 0x69, 0xca, 0x59, 0xb8, 0xb5, 0xd0, 0xa3, 0x83, 0xea, 0x7c, 0x1e, - 0xa3, 0x17, 0x76, 0x46, 0xa2, 0x1d, 0xb2, 0x53, 0x5a, 0x12, 0x2e, 0xfd, 0x7d, 0xeb, 0x31, 0x99, - 0x8b, 0xb1, 0x45, 0x9c, 0x63, 0x2b, 0x46, 0x3e, 0xa9, 0xc1, 0x4c, 0x62, 0x45, 0x07, 0x73, 0x23, - 0x6c, 0x8d, 0x96, 0x7a, 0xba, 0x4a, 0x6c, 0x95, 0xf8, 0xe4, 0x4e, 0x14, 0x07, 0x38, 0x45, 0x30, - 0xc5, 0x66, 0xd5, 0x59, 0x7d, 0xd7, 0xb1, 0x59, 0xb5, 0xf3, 0x05, 0x6c, 0xf6, 0xa7, 0x2b, 0x45, - 0xa3, 0x65, 0x6c, 0xf6, 0x21, 0x4c, 0x48, 0x4b, 0x5d, 0xc9, 0x2e, 0xee, 0x0c, 0xda, 0x27, 0x8e, - 0x2e, 0x36, 0xdb, 0x90, 0x25, 0x01, 0x8e, 0x69, 0xa1, 0x1f, 0xd2, 0x00, 0xe2, 0x0f, 0x23, 0x36, - 0xd5, 0xc6, 0xe9, 0x4d, 0x87, 0x22, 0xd6, 0xcc, 0xd0, 0x2d, 0xad, 0x2c, 0x0a, 0x85, 0xae, 0xfe, - 0xbf, 0x87, 0x00, 0x65, 0xfb, 0x4e, 0xc5, 0xcd, 0x5d, 0xdb, 0xb5, 0xd2, 0x17, 0x82, 0xfb, 0xb6, - 0x6b, 0x61, 0x06, 0x39, 0x86, 0x40, 0xfa, 0x02, 0x5c, 0x68, 0x39, 0xde, 0x96, 0xe1, 0x38, 0x3d, - 0x61, 0xba, 0x2a, 0x8c, 0x20, 0x2f, 0xd1, 0x83, 0xe9, 0x6e, 0x12, 0x84, 0xd3, 0x75, 0x51, 0x07, - 0x66, 0x7d, 0x7a, 0x15, 0x37, 0x6d, 0x87, 0x5d, 0x9d, 0xbc, 0x6e, 0x58, 0x52, 0xd7, 0xc3, 0xc4, - 0x7b, 0x9c, 0xc2, 0x85, 0x33, 0xd8, 0xd1, 0xfb, 0x60, 0xac, 0xe3, 0xdb, 0x6d, 0xc3, 0xef, 0xb1, - 0xcb, 0xd9, 0xf8, 0xd2, 0x24, 0x3d, 0xe1, 0xd6, 0x79, 0x11, 0x96, 0x30, 0xf4, 0x7d, 0x30, 0xe1, - 0xd8, 0xdb, 0xc4, 0xec, 0x99, 0x0e, 0x11, 0xca, 0x99, 0x07, 0xa7, 0xb3, 0x64, 0x56, 0x24, 0x5a, - 0xf1, 0x24, 0x2c, 0x7f, 0xe2, 0x98, 0x20, 0x6a, 0xc0, 0xa5, 0x87, 0x9e, 0xbf, 0x4b, 0x7c, 0x87, - 0x04, 0x41, 0xb3, 0xdb, 0xe9, 0x78, 0x7e, 0x48, 0x2c, 0xa6, 0xc2, 0x19, 0xe7, 0xf6, 0xb9, 0xaf, - 0x64, 0xc1, 0x38, 0xaf, 0x8d, 0xfe, 0x4e, 0x05, 0xae, 0xf7, 0xe9, 0x04, 0xc2, 0x74, 0x6f, 0x88, - 0x39, 0x12, 0x2b, 0xe1, 0x43, 0x7c, 0x3d, 0x8b, 0xc2, 0x47, 0x07, 0xd5, 0x27, 0xfb, 0x20, 0x68, - 0xd2, 0xa5, 0x48, 0x5a, 0x3d, 0x1c, 0xa3, 0x41, 0x0d, 0x18, 0xb5, 0x62, 0x8d, 0xe6, 0xc4, 0xd2, - 0xb3, 0x94, 0x5b, 0x73, 0xdd, 0xc3, 0x71, 0xb1, 0x09, 0x04, 0x68, 0x05, 0xc6, 0xf8, 0x43, 0x32, - 0x11, 0x9c, 0xff, 0x39, 0x76, 0x3d, 0xe6, 0x45, 0xc7, 0x45, 0x26, 0x51, 0xe8, 0xff, 0x4b, 0x83, - 0xb1, 0x9a, 0xe7, 0x93, 0xfa, 0x5a, 0x13, 0xf5, 0x60, 0x52, 0x71, 0x21, 0x10, 0x5c, 0xb0, 0x24, - 0x5b, 0x60, 0x18, 0x17, 0x63, 0x6c, 0xd2, 0xdc, 0x35, 0x2a, 0xc0, 0x2a, 0x2d, 0xf4, 0x26, 0x9d, - 0xf3, 0x87, 0xbe, 0x1d, 0x52, 0xc2, 0x83, 0xbc, 0xbf, 0x71, 0xc2, 0x58, 0xe2, 0xe2, 0x2b, 0x2a, - 0xfa, 0x89, 0x63, 0x2a, 0xfa, 0x3a, 0xe5, 0x00, 0xe9, 0x6e, 0xa2, 0xdb, 0x30, 0xdc, 0xf6, 0x2c, - 0xf9, 0xdd, 0xdf, 0x2f, 0xf7, 0xf7, 0xaa, 0x67, 0xd1, 0xb9, 0xbd, 0x9a, 0x6d, 0xc1, 0xb4, 0x84, - 0xac, 0x8d, 0xbe, 0x06, 0xb3, 0x69, 0xfa, 0xe8, 0x36, 0xcc, 0x98, 0x5e, 0xbb, 0xed, 0xb9, 0xcd, - 0xee, 0xf6, 0xb6, 0xbd, 0x4f, 0x12, 0x76, 0xc8, 0xb5, 0x04, 0x04, 0xa7, 0x6a, 0xea, 0x3f, 0xa5, - 0xc1, 0x10, 0xfd, 0x2e, 0x3a, 0x8c, 0x5a, 0x5e, 0xdb, 0xb0, 0x5d, 0xd1, 0x2b, 0x66, 0x73, 0x5d, - 0x67, 0x25, 0x58, 0x40, 0x50, 0x07, 0x26, 0xa4, 0xd0, 0x34, 0x90, 0x2d, 0x4c, 0x7d, 0xad, 0x19, - 0xd9, 0x0f, 0x46, 0x9c, 0x5c, 0x96, 0x04, 0x38, 0x26, 0xa2, 0x1b, 0x70, 0xb1, 0xbe, 0xd6, 0x6c, - 0xb8, 0xa6, 0xd3, 0xb5, 0xc8, 0xf2, 0x3e, 0xfb, 0x43, 0x79, 0x89, 0xcd, 0x4b, 0xc4, 0x38, 0x19, - 0x2f, 0x11, 0x95, 0xb0, 0x84, 0xd1, 0x6a, 0x84, 0xb7, 0x10, 0xc6, 0xc2, 0xac, 0x9a, 0x40, 0x82, - 0x25, 0x4c, 0xff, 0x6a, 0x05, 0x26, 0x95, 0x0e, 0x21, 0x07, 0xc6, 0xf8, 0x70, 0xa5, 0xad, 0xde, - 0x72, 0xc9, 0x21, 0x26, 0x7b, 0xcd, 0xa9, 0xf3, 0x09, 0x0d, 0xb0, 0x24, 0xa1, 0xf2, 0xc5, 0x4a, - 0x1f, 0xbe, 0xb8, 0x00, 0x10, 0xc4, 0x96, 0xeb, 0x7c, 0x4b, 0xb2, 0xa3, 0x47, 0xb1, 0x57, 0x57, - 0x6a, 0xa0, 0xc7, 0xc5, 0x09, 0xc2, 0x8d, 0x51, 0xc6, 0x53, 0xa7, 0xc7, 0x36, 0x8c, 0xbc, 0xe5, - 0xb9, 0x24, 0x10, 0x6f, 0x70, 0xa7, 0x34, 0xc0, 0x09, 0x2a, 0x1f, 0xbc, 0x46, 0xf1, 0x62, 0x8e, - 0x5e, 0xff, 0x59, 0x0d, 0xa0, 0x6e, 0x84, 0x06, 0x7f, 0x32, 0x3a, 0x86, 0xbd, 0xf7, 0xe3, 0x89, - 0x83, 0x6f, 0x3c, 0x63, 0x03, 0x3b, 0x1c, 0xd8, 0x6f, 0xc9, 0xe1, 0x47, 0x02, 0x35, 0xc7, 0xde, - 0xb4, 0xdf, 0x22, 0x98, 0xc1, 0xd1, 0x07, 0x60, 0x82, 0xb8, 0xa6, 0xdf, 0xeb, 0x50, 0xe6, 0x3d, - 0xcc, 0x66, 0x95, 0xed, 0xd0, 0x65, 0x59, 0x88, 0x63, 0xb8, 0xfe, 0x2c, 0x24, 0x6f, 0x45, 0x47, - 0xf7, 0x52, 0xff, 0xda, 0x30, 0x5c, 0x5b, 0xde, 0xa8, 0xd5, 0x05, 0x3e, 0xdb, 0x73, 0xef, 0x93, - 0xde, 0xdf, 0x98, 0xd7, 0xfc, 0x8d, 0x79, 0xcd, 0x29, 0x9a, 0xd7, 0x3c, 0xd2, 0x60, 0x76, 0x79, - 0xbf, 0x63, 0xfb, 0xcc, 0xcf, 0x80, 0xf8, 0xf4, 0x1a, 0x8b, 0x9e, 0x81, 0xb1, 0x3d, 0xfe, 0xaf, - 0x58, 0x5c, 0x91, 0xaa, 0x40, 0xd4, 0xc0, 0x12, 0x8e, 0xb6, 0x61, 0x86, 0xb0, 0xe6, 0x4c, 0x5e, - 0x35, 0xc2, 0x32, 0x0b, 0x88, 0xbb, 0xb1, 0x24, 0xb0, 0xe0, 0x14, 0x56, 0xd4, 0x84, 0x19, 0xd3, - 0x31, 0x82, 0xc0, 0xde, 0xb6, 0xcd, 0xd8, 0x82, 0x6e, 0x62, 0xe9, 0x03, 0xec, 0xe8, 0x49, 0x40, - 0x1e, 0x1d, 0x54, 0xaf, 0x88, 0x7e, 0x26, 0x01, 0x38, 0x85, 0x42, 0xff, 0x7c, 0x05, 0xa6, 0x97, - 0xf7, 0x3b, 0x5e, 0xd0, 0xf5, 0x09, 0xab, 0x7a, 0x0e, 0x37, 0xf0, 0x67, 0x60, 0x6c, 0xc7, 0x70, - 0x2d, 0x87, 0xf8, 0x82, 0xfb, 0x44, 0x73, 0x7b, 0x8f, 0x17, 0x63, 0x09, 0x47, 0x6f, 0x03, 0x04, - 0xe6, 0x0e, 0xb1, 0xba, 0x4c, 0x82, 0xe1, 0x9b, 0xe4, 0x7e, 0x19, 0x1e, 0x9a, 0x18, 0x63, 0x33, - 0x42, 0x29, 0x38, 0x7b, 0xf4, 0x1b, 0x2b, 0xe4, 0xf4, 0x3f, 0xd4, 0xe0, 0x62, 0xa2, 0xdd, 0x39, - 0x5c, 0x2c, 0xb7, 0x93, 0x17, 0xcb, 0xc5, 0x81, 0xc7, 0x5a, 0x70, 0x9f, 0xfc, 0x91, 0x0a, 0x3c, - 0x56, 0x30, 0x27, 0x19, 0x73, 0x0b, 0xed, 0x9c, 0xcc, 0x2d, 0xba, 0x30, 0x19, 0x7a, 0x8e, 0x30, - 0xf4, 0x94, 0x33, 0x50, 0xca, 0x98, 0x62, 0x23, 0x42, 0x13, 0x1b, 0x53, 0xc4, 0x65, 0x01, 0x56, - 0xe9, 0xe8, 0xbf, 0xa9, 0xc1, 0x44, 0xa4, 0xbf, 0xfa, 0x86, 0x7a, 0x43, 0x3a, 0xbe, 0xe7, 0x9d, - 0xfe, 0x3b, 0x15, 0xb8, 0x1a, 0xe1, 0x96, 0xf7, 0x84, 0x66, 0x48, 0xf9, 0xc6, 0xd1, 0x97, 0xe0, - 0xc7, 0xc5, 0x39, 0xac, 0xc8, 0x02, 0x8a, 0xa4, 0x40, 0xe5, 0xa6, 0xae, 0xdf, 0xf1, 0x02, 0x29, - 0x0e, 0x70, 0xb9, 0x89, 0x17, 0x61, 0x09, 0x43, 0x6b, 0x30, 0x12, 0x50, 0x7a, 0xe2, 0x34, 0x39, - 0xe1, 0x6c, 0x30, 0x89, 0x86, 0xf5, 0x17, 0x73, 0x34, 0xe8, 0x6d, 0x55, 0xa5, 0x31, 0x52, 0x5e, - 0xcd, 0x42, 0x47, 0x62, 0xc9, 0x19, 0xc9, 0xf1, 0x46, 0xc9, 0x53, 0x6b, 0xe8, 0x2b, 0x30, 0x2b, - 0x2c, 0x36, 0xf8, 0xb2, 0x71, 0x4d, 0x82, 0x3e, 0x9a, 0x58, 0x19, 0x4f, 0xa5, 0x5e, 0x91, 0x2f, - 0xa7, 0xeb, 0xc7, 0x2b, 0x46, 0x0f, 0x60, 0xfc, 0xae, 0xe8, 0x24, 0x9a, 0x87, 0x8a, 0x2d, 0xbf, - 0x05, 0x08, 0x1c, 0x95, 0x46, 0x1d, 0x57, 0x6c, 0x2b, 0x92, 0x87, 0x2a, 0x85, 0x52, 0x9b, 0x72, - 0x2c, 0x0d, 0xf5, 0x3f, 0x96, 0xf4, 0x3f, 0xa9, 0xc0, 0x65, 0x49, 0x55, 0x8e, 0xb1, 0x2e, 0xde, - 0xe0, 0x8e, 0x90, 0x0d, 0x8f, 0x56, 0x8a, 0x3c, 0x80, 0x61, 0xc6, 0x00, 0x4b, 0xbd, 0xcd, 0x45, - 0x08, 0x69, 0x77, 0x30, 0x43, 0x84, 0xbe, 0x0f, 0x46, 0x1d, 0x63, 0x8b, 0x38, 0xd2, 0x52, 0xae, - 0x94, 0x0a, 0x29, 0x6f, 0xb8, 0x5c, 0xb3, 0x19, 0x70, 0x6f, 0x80, 0xe8, 0xc9, 0x86, 0x17, 0x62, - 0x41, 0x73, 0xfe, 0x79, 0x98, 0x54, 0xaa, 0xa1, 0x59, 0x18, 0xda, 0x25, 0xfc, 0x6d, 0x76, 0x02, - 0xd3, 0x7f, 0xd1, 0x65, 0x18, 0xd9, 0x33, 0x9c, 0xae, 0x98, 0x12, 0xcc, 0x7f, 0xdc, 0xae, 0x7c, - 0x54, 0xd3, 0x7f, 0x51, 0x83, 0xc9, 0x7b, 0xf6, 0x16, 0xf1, 0xb9, 0xd9, 0x05, 0xbb, 0x0a, 0x25, - 0x1c, 0x9f, 0x27, 0xf3, 0x9c, 0x9e, 0xd1, 0x3e, 0x4c, 0x88, 0x93, 0x26, 0xb2, 0xca, 0xbd, 0x5b, - 0xee, 0x11, 0x38, 0x22, 0x2d, 0x38, 0xb8, 0xea, 0x68, 0x25, 0x29, 0xe0, 0x98, 0x98, 0xfe, 0x36, - 0x5c, 0xca, 0x69, 0x84, 0xaa, 0x6c, 0xfb, 0xfa, 0xa1, 0x58, 0x16, 0x72, 0x3f, 0xfa, 0x21, 0xe6, - 0xe5, 0xe8, 0x1a, 0x0c, 0x11, 0xd7, 0x12, 0x6b, 0x62, 0xec, 0xf0, 0xa0, 0x3a, 0xb4, 0xec, 0x5a, - 0x98, 0x96, 0x51, 0x36, 0xe5, 0x78, 0x09, 0x99, 0x84, 0xb1, 0xa9, 0x15, 0x51, 0x86, 0x23, 0x28, - 0x7b, 0xb6, 0x4f, 0xbf, 0x50, 0x53, 0xe9, 0x74, 0x76, 0x3b, 0xb5, 0x7b, 0x06, 0x79, 0x18, 0x4f, - 0xef, 0xc4, 0xa5, 0x39, 0x31, 0x21, 0x99, 0x3d, 0x8d, 0x33, 0x74, 0xf5, 0x5f, 0x1b, 0x86, 0x27, - 0xee, 0x79, 0xbe, 0xfd, 0x96, 0xe7, 0x86, 0x86, 0xb3, 0xee, 0x59, 0xb1, 0x81, 0x9d, 0x60, 0xca, - 0x9f, 0xd6, 0xe0, 0x31, 0xb3, 0xd3, 0xe5, 0xd2, 0xad, 0xb4, 0x7b, 0x5a, 0x27, 0xbe, 0xed, 0x95, - 0xb5, 0xb3, 0x63, 0xae, 0xb5, 0xb5, 0xf5, 0xcd, 0x3c, 0x94, 0xb8, 0x88, 0x16, 0x33, 0xf7, 0xb3, - 0xbc, 0x87, 0x2e, 0xeb, 0x5c, 0x33, 0x64, 0xb3, 0xf9, 0x56, 0xfc, 0x11, 0x4a, 0x9a, 0xfb, 0xd5, - 0x73, 0x31, 0xe2, 0x02, 0x4a, 0xe8, 0x07, 0xe0, 0x8a, 0xcd, 0x3b, 0x87, 0x89, 0x61, 0xd9, 0x2e, - 0x09, 0x02, 0x6e, 0x2b, 0x34, 0x80, 0x3d, 0x5b, 0x23, 0x0f, 0x21, 0xce, 0xa7, 0x83, 0x5e, 0x07, - 0x08, 0x7a, 0xae, 0x29, 0xe6, 0x7f, 0xa4, 0x14, 0x55, 0x2e, 0x04, 0x46, 0x58, 0xb0, 0x82, 0x91, - 0xde, 0x70, 0xc3, 0x68, 0x51, 0x8e, 0x32, 0xdb, 0x38, 0x76, 0xc3, 0x8d, 0xd7, 0x50, 0x0c, 0xd7, - 0xff, 0x99, 0x06, 0x63, 0xc2, 0x7d, 0x1f, 0xbd, 0x3f, 0xa5, 0xe5, 0x89, 0x78, 0x4f, 0x4a, 0xd3, - 0xd3, 0x63, 0x4f, 0x7d, 0x42, 0xc3, 0x27, 0x44, 0x89, 0x52, 0x6a, 0x02, 0x41, 0x38, 0x56, 0x17, - 0x26, 0x9e, 0xfc, 0xa4, 0x0a, 0x51, 0x21, 0xa6, 0x7f, 0x51, 0x83, 0x8b, 0x99, 0x56, 0xc7, 0x90, - 0x17, 0xce, 0xd1, 0x8a, 0xe6, 0x0f, 0x86, 0x61, 0x86, 0x19, 0xfb, 0xb9, 0x86, 0xc3, 0x15, 0x30, - 0xe7, 0x70, 0x41, 0xf9, 0x00, 0x4c, 0xd8, 0xed, 0x76, 0x37, 0xa4, 0xac, 0x5a, 0xe8, 0xd0, 0xd9, - 0x37, 0x6f, 0xc8, 0x42, 0x1c, 0xc3, 0x91, 0x2b, 0x8e, 0x42, 0xce, 0xc4, 0x57, 0xca, 0x7d, 0x39, - 0x75, 0x80, 0x0b, 0xf4, 0xd8, 0xe2, 0xe7, 0x55, 0xde, 0x49, 0xf9, 0xc3, 0x1a, 0x40, 0x10, 0xfa, - 0xb6, 0xdb, 0xa2, 0x85, 0xe2, 0xb8, 0xc4, 0xa7, 0x40, 0xb6, 0x19, 0x21, 0xe5, 0xc4, 0xa3, 0x39, - 0x8a, 0x01, 0x58, 0xa1, 0x8c, 0x16, 0x85, 0x94, 0xc0, 0x39, 0xfe, 0x37, 0xa7, 0xe4, 0xa1, 0x27, - 0xb2, 0xd1, 0x69, 0x84, 0x4b, 0x67, 0x2c, 0x46, 0xcc, 0x7f, 0x04, 0x26, 0x22, 0x7a, 0x47, 0x9d, - 0xba, 0x53, 0xca, 0xa9, 0x3b, 0xff, 0x02, 0x5c, 0x48, 0x75, 0xf7, 0x44, 0x87, 0xf6, 0x7f, 0xd0, - 0x00, 0x25, 0x47, 0x7f, 0x0e, 0x57, 0xbb, 0x56, 0xf2, 0x6a, 0xb7, 0x34, 0xf8, 0x27, 0x2b, 0xb8, - 0xdb, 0x7d, 0x65, 0x1a, 0x58, 0x74, 0x93, 0x28, 0x7a, 0x8c, 0x38, 0xb8, 0xe8, 0x39, 0x1b, 0x7b, - 0x48, 0x88, 0x9d, 0x3b, 0xc0, 0x39, 0x7b, 0x3f, 0x85, 0x2b, 0x3e, 0x67, 0xd3, 0x10, 0x9c, 0xa1, - 0x8b, 0x3e, 0xa3, 0xc1, 0xac, 0x91, 0x8c, 0x6e, 0x22, 0x67, 0xa6, 0x94, 0xf7, 0x6c, 0x2a, 0x52, - 0x4a, 0xdc, 0x97, 0x14, 0x20, 0xc0, 0x19, 0xb2, 0xe8, 0x43, 0x30, 0x65, 0x74, 0xec, 0xc5, 0xae, - 0x65, 0xd3, 0xab, 0x81, 0x0c, 0x4d, 0xc1, 0xae, 0xab, 0x8b, 0xeb, 0x8d, 0xa8, 0x1c, 0x27, 0x6a, - 0x45, 0x61, 0x44, 0xc4, 0x44, 0x0e, 0x0f, 0x18, 0x46, 0x44, 0xcc, 0x61, 0x1c, 0x46, 0x44, 0x4c, - 0x9d, 0x4a, 0x04, 0xb9, 0x00, 0x9e, 0x6d, 0x99, 0x82, 0x24, 0x7f, 0xb5, 0x2b, 0x75, 0x43, 0x7e, - 0xd0, 0xa8, 0xd7, 0x04, 0x45, 0x76, 0xfa, 0xc5, 0xbf, 0xb1, 0x42, 0x01, 0x7d, 0x4e, 0x83, 0x69, - 0xc1, 0xbb, 0x05, 0xcd, 0x31, 0xf6, 0x89, 0x5e, 0x2b, 0xbb, 0x5e, 0x52, 0x6b, 0x72, 0x01, 0xab, - 0xc8, 0x39, 0xdf, 0x89, 0x1c, 0x6c, 0x12, 0x30, 0x9c, 0xec, 0x07, 0xfa, 0x7b, 0x1a, 0x5c, 0x0e, - 0x88, 0xbf, 0x67, 0x9b, 0x64, 0xd1, 0x34, 0xbd, 0xae, 0x2b, 0xbf, 0xc3, 0x78, 0xf9, 0xa8, 0x0b, - 0xcd, 0x1c, 0x7c, 0xdc, 0xb2, 0x3b, 0x0f, 0x82, 0x73, 0xe9, 0x53, 0xb1, 0xec, 0xc2, 0x43, 0x23, - 0x34, 0x77, 0x6a, 0x86, 0xb9, 0xc3, 0x74, 0xe5, 0xdc, 0x98, 0xbb, 0xe4, 0xba, 0x7e, 0x25, 0x89, - 0x8a, 0xbf, 0x3a, 0xa7, 0x0a, 0x71, 0x9a, 0x20, 0xf2, 0x60, 0xdc, 0x17, 0x21, 0xa3, 0xe6, 0xa0, - 0xbc, 0x48, 0x91, 0x89, 0x3f, 0xc5, 0x05, 0x7b, 0xf9, 0x0b, 0x47, 0x44, 0x50, 0x0b, 0x9e, 0xe0, - 0x57, 0x9b, 0x45, 0xd7, 0x73, 0x7b, 0x6d, 0xaf, 0x1b, 0x2c, 0x76, 0xc3, 0x1d, 0xe2, 0x86, 0x52, - 0x57, 0x39, 0xc9, 0x8e, 0x51, 0x66, 0xcf, 0xbe, 0xdc, 0xaf, 0x22, 0xee, 0x8f, 0x07, 0xbd, 0x0a, - 0xe3, 0x64, 0x8f, 0xb8, 0xe1, 0xc6, 0xc6, 0x0a, 0xb3, 0x0b, 0x3f, 0xb9, 0xb4, 0xc7, 0x86, 0xb0, - 0x2c, 0x70, 0xe0, 0x08, 0x1b, 0xda, 0x85, 0x31, 0x87, 0xc7, 0xfc, 0x9a, 0x9b, 0x2e, 0xcf, 0x14, - 0xd3, 0xf1, 0xc3, 0xf8, 0xfd, 0x4f, 0xfc, 0xc0, 0x92, 0x02, 0xea, 0xc0, 0x4d, 0x8b, 0x6c, 0x1b, - 0x5d, 0x27, 0x5c, 0xf3, 0x42, 0x2a, 0xd2, 0xf6, 0x62, 0xfd, 0x94, 0x74, 0x01, 0x98, 0x61, 0x0e, - 0xd2, 0x4f, 0x1d, 0x1e, 0x54, 0x6f, 0xd6, 0x8f, 0xa8, 0x8b, 0x8f, 0xc4, 0x86, 0x7a, 0xf0, 0xa4, - 0xa8, 0xb3, 0xe9, 0xfa, 0xc4, 0x30, 0x77, 0xe8, 0x2c, 0x67, 0x89, 0x5e, 0x60, 0x44, 0xff, 0xbf, - 0xc3, 0x83, 0xea, 0x93, 0xf5, 0xa3, 0xab, 0xe3, 0xe3, 0xe0, 0x9c, 0xff, 0x04, 0xa0, 0xec, 0x3e, - 0x3f, 0xea, 0xc0, 0x1e, 0x57, 0x0f, 0xec, 0x2f, 0x8c, 0xc0, 0x75, 0xca, 0x3e, 0x62, 0x31, 0x75, - 0xd5, 0x70, 0x8d, 0xd6, 0x37, 0xe6, 0xd1, 0xf6, 0x8b, 0x1a, 0x3c, 0xb6, 0x93, 0x7f, 0x85, 0x14, - 0x82, 0xf2, 0x4b, 0xa5, 0xae, 0xfa, 0xfd, 0x6e, 0xa5, 0x7c, 0x67, 0xf5, 0xad, 0x82, 0x8b, 0x3a, - 0x85, 0x3e, 0x01, 0xb3, 0xae, 0x67, 0x91, 0x5a, 0xa3, 0x8e, 0x57, 0x8d, 0x60, 0xb7, 0x29, 0x5f, - 0xfe, 0x46, 0xb8, 0xcd, 0xc9, 0x5a, 0x0a, 0x86, 0x33, 0xb5, 0xd1, 0x1e, 0xa0, 0x8e, 0x67, 0x2d, - 0xef, 0xd9, 0xa6, 0x7c, 0x73, 0x2a, 0x6f, 0xe7, 0xc2, 0x1e, 0xb6, 0xd6, 0x33, 0xd8, 0x70, 0x0e, - 0x05, 0x76, 0x07, 0xa6, 0x9d, 0x59, 0xf5, 0x5c, 0x3b, 0xf4, 0x7c, 0xe6, 0x07, 0x33, 0xd0, 0x55, - 0x90, 0xdd, 0x81, 0xd7, 0x72, 0x31, 0xe2, 0x02, 0x4a, 0xfa, 0xff, 0xd0, 0xe0, 0x02, 0x5d, 0x16, - 0xeb, 0xbe, 0xb7, 0xdf, 0xfb, 0x46, 0x5c, 0x90, 0xcf, 0x08, 0x23, 0x08, 0xae, 0xbb, 0xb9, 0xa2, - 0x18, 0x40, 0x4c, 0xb0, 0x3e, 0xc7, 0x36, 0x0f, 0xaa, 0xfa, 0x6a, 0xa8, 0x58, 0x7d, 0xa5, 0x7f, - 0xae, 0xc2, 0x45, 0x4c, 0xa9, 0x3e, 0xfa, 0x86, 0xdc, 0x87, 0x1f, 0x81, 0x69, 0x5a, 0xb6, 0x6a, - 0xec, 0xaf, 0xd7, 0x5f, 0xf6, 0x1c, 0xe9, 0xca, 0xc3, 0xcc, 0x73, 0xef, 0xab, 0x00, 0x9c, 0xac, - 0x87, 0x6e, 0xc3, 0x58, 0x87, 0x3b, 0x3c, 0x8b, 0xcb, 0xcd, 0x4d, 0x6e, 0x29, 0xc0, 0x8a, 0x1e, - 0x1d, 0x54, 0x2f, 0xc6, 0x8f, 0x25, 0xa2, 0x10, 0xcb, 0x06, 0xfa, 0x67, 0xaf, 0x00, 0x43, 0xee, - 0x90, 0xf0, 0x1b, 0x71, 0x4e, 0x9e, 0x85, 0x49, 0xb3, 0xd3, 0xad, 0xdd, 0x69, 0xbe, 0xd4, 0xf5, - 0xd8, 0xa5, 0x95, 0xc5, 0x66, 0xa4, 0x32, 0x67, 0x6d, 0x7d, 0x53, 0x16, 0x63, 0xb5, 0x0e, 0xe5, - 0x0e, 0x66, 0xa7, 0x2b, 0xf8, 0xed, 0xba, 0x6a, 0xa3, 0xca, 0xb8, 0x43, 0x6d, 0x7d, 0x33, 0x01, - 0xc3, 0x99, 0xda, 0xe8, 0x07, 0x60, 0x8a, 0x88, 0x8d, 0x7b, 0xcf, 0xf0, 0x2d, 0xc1, 0x17, 0x1a, - 0x65, 0x07, 0x1f, 0x4d, 0xad, 0xe4, 0x06, 0x5c, 0x54, 0x5f, 0x56, 0x48, 0xe0, 0x04, 0x41, 0xf4, - 0x5d, 0x70, 0x4d, 0xfe, 0xa6, 0x5f, 0xd9, 0xb3, 0xd2, 0x8c, 0x62, 0x84, 0xfb, 0x98, 0x2e, 0x17, - 0x55, 0xc2, 0xc5, 0xed, 0xd1, 0x2f, 0x68, 0x70, 0x35, 0x82, 0xda, 0xae, 0xdd, 0xee, 0xb6, 0x31, - 0x31, 0x1d, 0xc3, 0x6e, 0x0b, 0x01, 0xfd, 0x95, 0x53, 0x1b, 0x68, 0x12, 0x3d, 0x67, 0x56, 0xf9, - 0x30, 0x5c, 0xd0, 0x25, 0xf4, 0x45, 0x0d, 0x6e, 0x4a, 0xd0, 0xba, 0x4f, 0x82, 0xa0, 0xeb, 0x93, - 0xd8, 0x91, 0x4c, 0x4c, 0xc9, 0x58, 0x29, 0xde, 0xc9, 0x24, 0x95, 0xe5, 0x23, 0x70, 0xe3, 0x23, - 0xa9, 0xab, 0xcb, 0xa5, 0xe9, 0x6d, 0x87, 0x42, 0xa2, 0x3f, 0xab, 0xe5, 0x42, 0x49, 0xe0, 0x04, - 0x41, 0xf4, 0xcf, 0x35, 0x78, 0x4c, 0x2d, 0x50, 0x57, 0x0b, 0x17, 0xe5, 0x5f, 0x3d, 0xb5, 0xce, - 0xa4, 0xf0, 0x73, 0x5d, 0x70, 0x01, 0x10, 0x17, 0xf5, 0x8a, 0xb2, 0xed, 0x36, 0x5b, 0x98, 0x5c, - 0xdc, 0x1f, 0xe1, 0x6c, 0x9b, 0xaf, 0xd5, 0x00, 0x4b, 0x18, 0xbd, 0xe8, 0x76, 0x3c, 0x6b, 0xdd, - 0xb6, 0x82, 0x15, 0xbb, 0x6d, 0x87, 0x4c, 0x28, 0x1f, 0xe2, 0xd3, 0xb1, 0xee, 0x59, 0xeb, 0x8d, - 0x3a, 0x2f, 0xc7, 0x89, 0x5a, 0xcc, 0xa5, 0xdb, 0x6e, 0x1b, 0x2d, 0xb2, 0xde, 0x75, 0x9c, 0x75, - 0xdf, 0x63, 0x0a, 0xc3, 0x3a, 0x31, 0x2c, 0xc7, 0x76, 0x49, 0x49, 0x21, 0x9c, 0x6d, 0xb7, 0x46, - 0x11, 0x52, 0x5c, 0x4c, 0x0f, 0x2d, 0x00, 0x6c, 0x1b, 0xb6, 0xd3, 0x7c, 0x68, 0x74, 0x1e, 0xb8, - 0x4c, 0x52, 0x1f, 0xe7, 0x57, 0xd8, 0x3b, 0x51, 0x29, 0x56, 0x6a, 0xd0, 0xd5, 0x44, 0xb9, 0x20, - 0x26, 0x3c, 0x94, 0x10, 0x93, 0xaa, 0x4f, 0x63, 0x35, 0x49, 0x84, 0x7c, 0xfa, 0xee, 0x2b, 0x24, - 0x70, 0x82, 0x20, 0xfa, 0xb4, 0x06, 0x33, 0x41, 0x2f, 0x08, 0x49, 0x3b, 0xea, 0xc3, 0x85, 0xd3, - 0xee, 0x03, 0x53, 0xa5, 0x36, 0x13, 0x44, 0x70, 0x8a, 0x28, 0x32, 0xe0, 0x3a, 0x9b, 0xd5, 0xbb, - 0xb5, 0x7b, 0x76, 0x6b, 0x27, 0x72, 0xd4, 0x5e, 0x27, 0xbe, 0x49, 0xdc, 0x70, 0x6e, 0x96, 0xad, - 0x1b, 0x66, 0x4a, 0xd3, 0x28, 0xae, 0x86, 0xfb, 0xe1, 0x40, 0xaf, 0xc3, 0xbc, 0x00, 0xaf, 0x78, - 0x0f, 0x33, 0x14, 0x2e, 0x32, 0x0a, 0xcc, 0x74, 0xa8, 0x51, 0x58, 0x0b, 0xf7, 0xc1, 0x80, 0x1a, - 0x70, 0x29, 0x20, 0x3e, 0x7b, 0x09, 0x21, 0xd1, 0xe2, 0x09, 0xe6, 0x50, 0x6c, 0x35, 0xdc, 0xcc, - 0x82, 0x71, 0x5e, 0x1b, 0xf4, 0x42, 0xe4, 0x98, 0xd4, 0xa3, 0x05, 0x2f, 0xad, 0x37, 0xe7, 0x2e, - 0xb1, 0xfe, 0x5d, 0x52, 0xfc, 0x8d, 0x24, 0x08, 0xa7, 0xeb, 0x52, 0xd9, 0x42, 0x16, 0x2d, 0x75, - 0xfd, 0x20, 0x9c, 0xbb, 0xcc, 0x1a, 0x33, 0xd9, 0x02, 0xab, 0x00, 0x9c, 0xac, 0x87, 0x6e, 0xc3, - 0x4c, 0x40, 0x4c, 0xd3, 0x6b, 0x77, 0xc4, 0xf5, 0x6a, 0xee, 0x0a, 0xeb, 0x3d, 0xff, 0x82, 0x09, - 0x08, 0x4e, 0xd5, 0x44, 0x3d, 0xb8, 0x14, 0x05, 0xd6, 0x59, 0xf1, 0x5a, 0xab, 0xc6, 0x3e, 0x13, - 0xd5, 0xaf, 0x1e, 0xbd, 0x03, 0x17, 0xe4, 0xd3, 0xf6, 0xc2, 0x4b, 0x5d, 0xc3, 0x0d, 0xed, 0xb0, - 0xc7, 0xa7, 0xab, 0x96, 0x45, 0x87, 0xf3, 0x68, 0xa0, 0x15, 0xb8, 0x9c, 0x2a, 0xbe, 0x63, 0x3b, - 0x24, 0x98, 0x7b, 0x8c, 0x0d, 0x9b, 0xe9, 0x48, 0x6a, 0x39, 0x70, 0x9c, 0xdb, 0x0a, 0x3d, 0x80, - 0x2b, 0x1d, 0xdf, 0x0b, 0x89, 0x19, 0xde, 0xa7, 0xe2, 0x89, 0x23, 0x06, 0x18, 0xcc, 0xcd, 0xb1, - 0xb9, 0x60, 0xaf, 0x40, 0xeb, 0x79, 0x15, 0x70, 0x7e, 0x3b, 0xf4, 0x05, 0x0d, 0x6e, 0x04, 0xa1, - 0x4f, 0x8c, 0xb6, 0xed, 0xb6, 0x6a, 0x9e, 0xeb, 0x12, 0xc6, 0x26, 0x1b, 0x56, 0x6c, 0x74, 0x7f, - 0xad, 0x14, 0x9f, 0xd2, 0x0f, 0x0f, 0xaa, 0x37, 0x9a, 0x7d, 0x31, 0xe3, 0x23, 0x28, 0xa3, 0xb7, - 0x01, 0xda, 0xa4, 0xed, 0xf9, 0x3d, 0xca, 0x91, 0xe6, 0xe6, 0xcb, 0x1b, 0x31, 0xad, 0x46, 0x58, - 0xf8, 0xf6, 0x4f, 0xbc, 0x5f, 0xc5, 0x40, 0xac, 0x90, 0xd3, 0x0f, 0x2a, 0x70, 0x25, 0xf7, 0xe0, - 0xa1, 0x3b, 0x80, 0xd7, 0x5b, 0x94, 0x41, 0x76, 0xc5, 0x93, 0x0f, 0xdb, 0x01, 0xab, 0x49, 0x10, - 0x4e, 0xd7, 0xa5, 0x62, 0x21, 0xdb, 0xa9, 0x77, 0x9a, 0x71, 0xfb, 0x4a, 0x2c, 0x16, 0x36, 0x52, - 0x30, 0x9c, 0xa9, 0x8d, 0x6a, 0x70, 0x51, 0x94, 0x35, 0xe8, 0xcd, 0x2a, 0xb8, 0xe3, 0x13, 0x29, - 0x70, 0xd3, 0x3b, 0xca, 0xc5, 0x46, 0x1a, 0x88, 0xb3, 0xf5, 0xe9, 0x28, 0xe8, 0x0f, 0xb5, 0x17, - 0xc3, 0xf1, 0x28, 0xd6, 0x92, 0x20, 0x9c, 0xae, 0x2b, 0xaf, 0xbe, 0x89, 0x2e, 0x8c, 0xc4, 0xa3, - 0x58, 0x4b, 0xc1, 0x70, 0xa6, 0xb6, 0xfe, 0x1f, 0x87, 0xe1, 0xc9, 0x63, 0x08, 0x6b, 0xa8, 0x9d, - 0x3f, 0xdd, 0x27, 0xdf, 0xb8, 0xc7, 0xfb, 0x3c, 0x9d, 0x82, 0xcf, 0x73, 0x72, 0x7a, 0xc7, 0xfd, - 0x9c, 0x41, 0xd1, 0xe7, 0x3c, 0x39, 0xc9, 0xe3, 0x7f, 0xfe, 0x76, 0xfe, 0xe7, 0x2f, 0x39, 0xab, - 0x47, 0x2e, 0x97, 0x4e, 0xc1, 0x72, 0x29, 0x39, 0xab, 0xc7, 0x58, 0x5e, 0x7f, 0x34, 0x0c, 0x4f, - 0x1d, 0x47, 0x70, 0x2c, 0xb9, 0xbe, 0x72, 0x58, 0xde, 0x99, 0xae, 0xaf, 0x22, 0xbf, 0xa6, 0x33, - 0x5c, 0x5f, 0x39, 0x24, 0xcf, 0x7a, 0x7d, 0x15, 0xcd, 0xea, 0x59, 0xad, 0xaf, 0xa2, 0x59, 0x3d, - 0xc6, 0xfa, 0xfa, 0x8b, 0xf4, 0xf9, 0x10, 0xc9, 0x8b, 0x0d, 0x18, 0x32, 0x3b, 0xdd, 0x92, 0x4c, - 0x8a, 0x19, 0x08, 0xd5, 0xd6, 0x37, 0x31, 0xc5, 0x81, 0x30, 0x8c, 0xf2, 0xf5, 0x53, 0x92, 0x05, - 0x31, 0x0f, 0x19, 0xbe, 0x24, 0xb1, 0xc0, 0x44, 0xa7, 0x8a, 0x74, 0x76, 0x48, 0x9b, 0xf8, 0x86, - 0xd3, 0x0c, 0x3d, 0xdf, 0x68, 0x95, 0xe5, 0x36, 0x6c, 0xaa, 0x96, 0x53, 0xb8, 0x70, 0x06, 0x3b, - 0x9d, 0x90, 0x8e, 0x6d, 0x95, 0xe4, 0x2f, 0x6c, 0x42, 0xd6, 0x1b, 0x75, 0x4c, 0x71, 0xe8, 0xff, - 0x70, 0x02, 0x94, 0xc0, 0x75, 0xe8, 0xbb, 0xe0, 0x9a, 0xe1, 0x38, 0xde, 0xc3, 0x75, 0xdf, 0xde, - 0xb3, 0x1d, 0xd2, 0x22, 0x56, 0x24, 0x4c, 0x05, 0xc2, 0x8c, 0x8c, 0x5d, 0x98, 0x16, 0x8b, 0x2a, - 0xe1, 0xe2, 0xf6, 0xe8, 0x1d, 0x0d, 0x2e, 0x9a, 0xe9, 0x60, 0x61, 0x83, 0x18, 0x9a, 0x64, 0x22, - 0x8f, 0xf1, 0xfd, 0x94, 0x29, 0xc6, 0x59, 0xb2, 0xe8, 0x07, 0x35, 0xae, 0x94, 0x8b, 0x9e, 0x49, - 0xc4, 0x37, 0xbb, 0x7b, 0x4a, 0x0f, 0x8a, 0xb1, 0x76, 0x2f, 0x7e, 0xbb, 0x4a, 0x12, 0x44, 0x5f, - 0xd4, 0xe0, 0xca, 0x6e, 0xde, 0x5b, 0x82, 0xf8, 0xb2, 0x0f, 0xca, 0x76, 0xa5, 0xe0, 0x71, 0x82, - 0x8b, 0xb3, 0xb9, 0x15, 0x70, 0x7e, 0x47, 0xa2, 0x59, 0x8a, 0xd4, 0xab, 0x82, 0x09, 0x94, 0x9e, - 0xa5, 0x94, 0x9e, 0x36, 0x9e, 0xa5, 0x08, 0x80, 0x93, 0x04, 0x51, 0x07, 0x26, 0x76, 0xa5, 0x4e, - 0x5b, 0xe8, 0xb1, 0x6a, 0x65, 0xa9, 0x2b, 0x8a, 0x71, 0x6e, 0x48, 0x13, 0x15, 0xe2, 0x98, 0x08, - 0xda, 0x81, 0xb1, 0x5d, 0xce, 0x88, 0x84, 0xfe, 0x69, 0x71, 0xe0, 0xfb, 0x31, 0x57, 0x83, 0x88, - 0x22, 0x2c, 0xd1, 0xab, 0x56, 0xb4, 0xe3, 0x47, 0x38, 0x77, 0x7c, 0x41, 0x83, 0x2b, 0x7b, 0xc4, - 0x0f, 0x6d, 0x33, 0xfd, 0x92, 0x33, 0x51, 0xfe, 0x0e, 0xff, 0x72, 0x1e, 0x42, 0xbe, 0x4c, 0x72, - 0x41, 0x38, 0xbf, 0x0b, 0xf4, 0x46, 0xcf, 0x15, 0xf2, 0xcd, 0xd0, 0x08, 0x6d, 0x73, 0xc3, 0xdb, - 0x25, 0x6e, 0x9c, 0x5f, 0x85, 0x69, 0x82, 0xc6, 0xf9, 0x8d, 0x7e, 0xb9, 0xb8, 0x1a, 0xee, 0x87, - 0x43, 0xff, 0x53, 0x0d, 0x32, 0x6a, 0x65, 0xf4, 0xe3, 0x1a, 0x4c, 0x6d, 0x13, 0x23, 0xec, 0xfa, - 0xe4, 0xae, 0x11, 0x46, 0x1e, 0xe7, 0x2f, 0x9f, 0x86, 0x36, 0x7b, 0xe1, 0x8e, 0x82, 0x98, 0x1b, - 0x04, 0x44, 0x41, 0x2f, 0x55, 0x10, 0x4e, 0xf4, 0x60, 0xfe, 0x45, 0xb8, 0x98, 0x69, 0x78, 0xa2, - 0x17, 0xc6, 0x7f, 0xa5, 0x41, 0x5e, 0x4a, 0x20, 0xf4, 0x3a, 0x8c, 0x18, 0x96, 0x15, 0xc5, 0xf8, - 0x7f, 0xbe, 0x9c, 0x6d, 0x8a, 0xa5, 0x3a, 0xf6, 0xb3, 0x9f, 0x98, 0xa3, 0x45, 0x77, 0x00, 0x19, - 0x89, 0x17, 0xee, 0xd5, 0xd8, 0x5d, 0x95, 0xbd, 0x84, 0x2d, 0x66, 0xa0, 0x38, 0xa7, 0x85, 0xfe, - 0x23, 0x1a, 0xa0, 0x6c, 0x98, 0x54, 0xe4, 0xc3, 0xb8, 0x58, 0xca, 0xf2, 0x2b, 0xd5, 0x4b, 0xba, - 0x94, 0x24, 0xfc, 0xa3, 0x62, 0x43, 0x27, 0x51, 0x10, 0xe0, 0x88, 0x8e, 0xfe, 0x97, 0x1a, 0xc4, - 0x71, 0xc0, 0xd1, 0x87, 0x61, 0xd2, 0x22, 0x81, 0xe9, 0xdb, 0x9d, 0x30, 0xf6, 0xa6, 0x8a, 0xbc, - 0x32, 0xea, 0x31, 0x08, 0xab, 0xf5, 0x90, 0x0e, 0xa3, 0xa1, 0x11, 0xec, 0x36, 0xea, 0xe2, 0x52, - 0xc9, 0x44, 0x80, 0x0d, 0x56, 0x82, 0x05, 0x24, 0x0e, 0x19, 0x36, 0x74, 0x8c, 0x90, 0x61, 0x68, - 0xfb, 0x14, 0xe2, 0xa3, 0xa1, 0xa3, 0x63, 0xa3, 0xe9, 0x3f, 0x5f, 0x81, 0x0b, 0xb4, 0xca, 0xaa, - 0x61, 0xbb, 0x21, 0x71, 0x99, 0xef, 0x40, 0xc9, 0x49, 0x68, 0xc1, 0x74, 0x98, 0xf0, 0x8d, 0x3b, - 0xb9, 0x67, 0x59, 0x64, 0x4d, 0x93, 0xf4, 0x88, 0x4b, 0xe2, 0x45, 0xcf, 0x4b, 0xe7, 0x0d, 0x7e, - 0xfd, 0x7e, 0x52, 0x2e, 0x55, 0xe6, 0x91, 0xf1, 0x48, 0x38, 0x1a, 0x46, 0xc1, 0xe3, 0x13, 0x7e, - 0x1a, 0x1f, 0x81, 0x69, 0x61, 0x44, 0xcd, 0x63, 0xbf, 0x89, 0xeb, 0x37, 0x3b, 0x61, 0xee, 0xa8, - 0x00, 0x9c, 0xac, 0xa7, 0xff, 0x7e, 0x05, 0x92, 0x21, 0xea, 0xcb, 0xce, 0x52, 0x36, 0xf0, 0x5d, - 0xe5, 0xcc, 0x02, 0xdf, 0x7d, 0x90, 0xe5, 0x77, 0xe1, 0x89, 0xc0, 0xf8, 0x13, 0xb9, 0x9a, 0x95, - 0x85, 0xa7, 0xf1, 0x8a, 0x6a, 0xc4, 0xd3, 0x3a, 0x7c, 0xe2, 0x69, 0xfd, 0xb0, 0xb0, 0xae, 0x1c, - 0x49, 0x84, 0x1f, 0x94, 0xd6, 0x95, 0x17, 0x13, 0x0d, 0x15, 0x57, 0x93, 0x2f, 0x6b, 0x30, 0x26, - 0x62, 0x03, 0x1f, 0xc3, 0x95, 0x69, 0x1b, 0x46, 0xd8, 0x95, 0x67, 0x10, 0x69, 0xb0, 0xb9, 0xe3, - 0x79, 0x61, 0x22, 0x42, 0x32, 0xf3, 0x1d, 0x60, 0xff, 0x62, 0x8e, 0x9e, 0x19, 0xd8, 0xf9, 0xe6, - 0x8e, 0x1d, 0x12, 0x33, 0x94, 0x71, 0x57, 0xa5, 0x81, 0x9d, 0x52, 0x8e, 0x13, 0xb5, 0xf4, 0x9f, - 0x1a, 0x86, 0x9b, 0x02, 0x71, 0x46, 0x44, 0x8a, 0x18, 0x5c, 0x0f, 0x2e, 0x89, 0x6f, 0x5b, 0xf7, - 0x0d, 0x3b, 0x32, 0x3d, 0x28, 0x77, 0xf5, 0x15, 0xc9, 0xee, 0x32, 0xe8, 0x70, 0x1e, 0x0d, 0x1e, - 0x41, 0x94, 0x15, 0xdf, 0x23, 0x86, 0x13, 0xee, 0x48, 0xda, 0x95, 0x41, 0x22, 0x88, 0x66, 0xf1, - 0xe1, 0x5c, 0x2a, 0xcc, 0xf4, 0x41, 0x00, 0x6a, 0x3e, 0x31, 0x54, 0xbb, 0x8b, 0x01, 0xcc, 0xff, - 0x57, 0x73, 0x31, 0xe2, 0x02, 0x4a, 0x4c, 0x87, 0x68, 0xec, 0x33, 0x95, 0x04, 0x26, 0xa1, 0x6f, - 0xb3, 0x48, 0xd7, 0x91, 0x16, 0x7d, 0x35, 0x09, 0xc2, 0xe9, 0xba, 0xe8, 0x36, 0xcc, 0x30, 0x53, - 0x92, 0x38, 0xd4, 0xd5, 0x48, 0x1c, 0x4d, 0x61, 0x2d, 0x01, 0xc1, 0xa9, 0x9a, 0xfa, 0x27, 0x2b, - 0x30, 0xa5, 0x2e, 0xbb, 0x63, 0xf8, 0x35, 0x75, 0x95, 0xc3, 0x70, 0x00, 0x9f, 0x1b, 0x95, 0xea, - 0x31, 0xce, 0x43, 0xf4, 0x2a, 0xcc, 0x74, 0x19, 0x07, 0x91, 0xe1, 0x3a, 0xc4, 0xfa, 0xff, 0x16, - 0x3a, 0xca, 0xcd, 0x04, 0xe4, 0xd1, 0x41, 0x75, 0x5e, 0x45, 0x9f, 0x84, 0xe2, 0x14, 0x1e, 0xfd, - 0xb3, 0x43, 0x70, 0x29, 0xa7, 0x37, 0xcc, 0xe4, 0x80, 0xa4, 0x8e, 0xec, 0x41, 0x4c, 0x0e, 0x32, - 0xc7, 0x7f, 0x64, 0x72, 0x90, 0x86, 0xe0, 0x0c, 0x5d, 0xf4, 0x32, 0x0c, 0x99, 0xbe, 0x2d, 0x26, - 0xfc, 0x23, 0xa5, 0x2e, 0x9c, 0xb8, 0xb1, 0x34, 0x29, 0x28, 0x0e, 0xd5, 0x70, 0x03, 0x53, 0x84, - 0xf4, 0xe0, 0x51, 0xd9, 0x85, 0x94, 0x02, 0xd8, 0xc1, 0xa3, 0x72, 0x95, 0x00, 0x27, 0xeb, 0xa1, - 0x57, 0x61, 0x4e, 0xdc, 0x04, 0xa4, 0x8f, 0xb4, 0xe7, 0x06, 0x21, 0xdd, 0xd9, 0xa1, 0x60, 0xd4, - 0x8f, 0x1f, 0x1e, 0x54, 0xe7, 0xee, 0x17, 0xd4, 0xc1, 0x85, 0xad, 0xf5, 0x3f, 0x1f, 0x82, 0x49, - 0x25, 0x32, 0x3b, 0x5a, 0x1d, 0x44, 0x85, 0x12, 0x8f, 0x58, 0xaa, 0x51, 0x56, 0x61, 0xa8, 0xd5, - 0xe9, 0x96, 0xd4, 0xa1, 0x44, 0xe8, 0xee, 0x52, 0x74, 0xad, 0x4e, 0x17, 0xbd, 0x1c, 0x69, 0x65, - 0xca, 0xe9, 0x4d, 0x22, 0x8f, 0x96, 0x94, 0x66, 0x46, 0x6e, 0xc4, 0xe1, 0xc2, 0x8d, 0xd8, 0x86, - 0xb1, 0x40, 0xa8, 0x6c, 0x46, 0xca, 0x47, 0xa5, 0x51, 0x66, 0x5a, 0xa8, 0x68, 0xf8, 0x7d, 0x4f, - 0x6a, 0x70, 0x24, 0x0d, 0x2a, 0x4b, 0x76, 0x99, 0x9f, 0x2c, 0xbb, 0xc8, 0x8e, 0x73, 0x59, 0x72, - 0x93, 0x95, 0x60, 0x01, 0xc9, 0x1c, 0x51, 0x63, 0xc7, 0x3a, 0xa2, 0xfe, 0x4e, 0x05, 0x50, 0xb6, - 0x1b, 0xe8, 0x49, 0x18, 0x61, 0x7e, 0xf6, 0x82, 0x17, 0x45, 0x92, 0x3f, 0xf3, 0xb4, 0xc6, 0x1c, - 0x86, 0x9a, 0x22, 0xc6, 0x46, 0xb9, 0xcf, 0xc9, 0x6c, 0x76, 0x04, 0x3d, 0x25, 0x20, 0xc7, 0xcd, - 0x84, 0x53, 0x46, 0xde, 0x99, 0xbf, 0x09, 0x63, 0x6d, 0xdb, 0x65, 0x0f, 0x87, 0xe5, 0x34, 0x59, - 0xdc, 0xb4, 0x80, 0xa3, 0xc0, 0x12, 0x97, 0xfe, 0x47, 0x15, 0xba, 0xf4, 0x63, 0x89, 0xb7, 0x07, - 0x60, 0x74, 0x43, 0x8f, 0x33, 0x30, 0xb1, 0x03, 0x1a, 0xe5, 0xbe, 0x72, 0x84, 0x74, 0x31, 0x42, - 0xc8, 0x9f, 0xbc, 0xe2, 0xdf, 0x58, 0x21, 0x46, 0x49, 0x87, 0x76, 0x9b, 0xbc, 0x62, 0xbb, 0x96, - 0xf7, 0x50, 0x4c, 0xef, 0xa0, 0xa4, 0x37, 0x22, 0x84, 0x9c, 0x74, 0xfc, 0x1b, 0x2b, 0xc4, 0x28, - 0x6b, 0x61, 0x17, 0x67, 0x97, 0xa5, 0xca, 0x10, 0x7d, 0xf3, 0x1c, 0x47, 0x9e, 0xca, 0xe3, 0x9c, - 0xb5, 0xd4, 0x0a, 0xea, 0xe0, 0xc2, 0xd6, 0xfa, 0x2f, 0x68, 0x70, 0x25, 0x77, 0x2a, 0xd0, 0x5d, - 0xb8, 0x18, 0x9b, 0x79, 0xa9, 0xcc, 0x7e, 0x3c, 0x4e, 0xd1, 0x72, 0x3f, 0x5d, 0x01, 0x67, 0xdb, - 0xf0, 0x3c, 0xc0, 0x99, 0xc3, 0x44, 0xd8, 0x88, 0xa9, 0xa2, 0x91, 0x0a, 0xc6, 0x79, 0x6d, 0xf4, - 0xef, 0x4a, 0x74, 0x36, 0x9e, 0x2c, 0xba, 0x33, 0xb6, 0x48, 0x2b, 0x72, 0x8a, 0x8b, 0x76, 0xc6, - 0x12, 0x2d, 0xc4, 0x1c, 0x86, 0x9e, 0x50, 0x5d, 0x4d, 0x23, 0xbe, 0x25, 0xdd, 0x4d, 0xf5, 0xef, - 0x81, 0xc7, 0x0a, 0x5e, 0x42, 0x51, 0x1d, 0xa6, 0x82, 0x87, 0x46, 0x67, 0x89, 0xec, 0x18, 0x7b, - 0xb6, 0x08, 0x5d, 0xc0, 0xcd, 0xf7, 0xa6, 0x9a, 0x4a, 0xf9, 0xa3, 0xd4, 0x6f, 0x9c, 0x68, 0xa5, - 0x87, 0x00, 0xc2, 0xcc, 0xd3, 0x76, 0x5b, 0x68, 0x1b, 0xc6, 0x0d, 0x91, 0x86, 0x56, 0xac, 0xe3, - 0x6f, 0x2f, 0xa5, 0x04, 0x10, 0x38, 0xb8, 0xfd, 0xb9, 0xfc, 0x85, 0x23, 0xdc, 0xfa, 0x3f, 0xd1, - 0xe0, 0x6a, 0xbe, 0xb3, 0xfa, 0x31, 0x44, 0x9b, 0x36, 0x4c, 0xfa, 0x71, 0x33, 0xb1, 0xe8, 0xbf, - 0x4d, 0x8d, 0x56, 0xaa, 0x84, 0xe7, 0xa2, 0x62, 0x5f, 0xcd, 0xf7, 0x02, 0xf9, 0xe5, 0xd3, 0x01, - 0x4c, 0xa3, 0x2b, 0x97, 0xd2, 0x13, 0xac, 0xe2, 0xd7, 0x7f, 0xad, 0x02, 0xb0, 0x46, 0xc2, 0x87, - 0x9e, 0xbf, 0x4b, 0xa7, 0xe8, 0xf1, 0xc4, 0x4d, 0x63, 0xfc, 0xeb, 0x17, 0x30, 0xe1, 0x71, 0x18, - 0xee, 0x78, 0x56, 0x20, 0xd8, 0x1f, 0xeb, 0x08, 0xb3, 0x80, 0x62, 0xa5, 0xa8, 0x0a, 0x23, 0xec, - 0xe1, 0x43, 0x9c, 0x4c, 0xec, 0x9e, 0x42, 0xa5, 0xcc, 0x00, 0xf3, 0x72, 0x9e, 0x5c, 0x8c, 0xf9, - 0x74, 0x04, 0xe2, 0xe2, 0x25, 0x92, 0x8b, 0xf1, 0x32, 0x1c, 0x41, 0xd1, 0x6d, 0x00, 0xbb, 0x73, - 0xc7, 0x68, 0xdb, 0x0e, 0x95, 0x79, 0x47, 0xa3, 0x5c, 0xb6, 0xd0, 0x58, 0x97, 0xa5, 0x8f, 0x0e, - 0xaa, 0xe3, 0xe2, 0x57, 0x0f, 0x2b, 0xb5, 0xf5, 0xbf, 0x1a, 0x82, 0x44, 0xde, 0xe7, 0x58, 0xc7, - 0xa4, 0x9d, 0x8d, 0x8e, 0xe9, 0x55, 0x98, 0x73, 0x3c, 0xc3, 0x5a, 0x32, 0x1c, 0xba, 0x1b, 0xfd, - 0x26, 0xff, 0x8c, 0x86, 0xdb, 0x8a, 0x92, 0xfb, 0x32, 0xae, 0xb4, 0x52, 0x50, 0x07, 0x17, 0xb6, - 0x46, 0x61, 0x94, 0x6d, 0x7a, 0xa8, 0xbc, 0xfb, 0xa3, 0x3a, 0x17, 0x0b, 0xaa, 0x27, 0x50, 0x24, - 0x60, 0xa4, 0x12, 0x52, 0x7f, 0x4a, 0x83, 0x2b, 0x64, 0x9f, 0x7b, 0xc2, 0x6d, 0xf8, 0xc6, 0xf6, - 0xb6, 0x6d, 0x0a, 0xbb, 0x54, 0xfe, 0x61, 0x57, 0x0e, 0x0f, 0xaa, 0x57, 0x96, 0xf3, 0x2a, 0x3c, - 0x3a, 0xa8, 0xde, 0xca, 0x75, 0x4c, 0x64, 0x9f, 0x35, 0xb7, 0x09, 0xce, 0x27, 0x35, 0xff, 0x3c, - 0x4c, 0x9e, 0xc0, 0x9b, 0x21, 0xe1, 0x7e, 0xf8, 0xeb, 0x15, 0x98, 0xa2, 0xeb, 0x6e, 0xc5, 0x33, - 0x0d, 0xa7, 0xbe, 0xd6, 0x3c, 0x41, 0xb6, 0x74, 0xb4, 0x02, 0x97, 0xb7, 0x3d, 0xdf, 0x24, 0x1b, - 0xb5, 0xf5, 0x0d, 0x4f, 0x3c, 0xb9, 0xd4, 0xd7, 0x9a, 0x82, 0x4b, 0xb3, 0x4b, 0xe4, 0x9d, 0x1c, - 0x38, 0xce, 0x6d, 0x85, 0x1e, 0xc0, 0x95, 0xb8, 0x7c, 0xb3, 0xc3, 0x0d, 0x59, 0x28, 0xba, 0xa1, - 0xd8, 0x10, 0xe7, 0x4e, 0x5e, 0x05, 0x9c, 0xdf, 0x0e, 0x19, 0x70, 0x5d, 0xc4, 0x24, 0xb9, 0xe3, - 0xf9, 0x0f, 0x0d, 0xdf, 0x4a, 0xa2, 0x1d, 0x8e, 0x55, 0xd2, 0xf5, 0xe2, 0x6a, 0xb8, 0x1f, 0x0e, - 0xfd, 0xa7, 0x47, 0x41, 0x71, 0x57, 0x3b, 0x41, 0x3a, 0xaa, 0x9f, 0xd3, 0xe0, 0xb2, 0xe9, 0xd8, - 0xc4, 0x0d, 0x53, 0xbe, 0x49, 0x9c, 0x1d, 0x6d, 0x96, 0xf2, 0xa3, 0xeb, 0x10, 0xb7, 0x51, 0x17, - 0x76, 0x3f, 0xb5, 0x1c, 0xe4, 0xc2, 0x36, 0x2a, 0x07, 0x82, 0x73, 0x3b, 0xc3, 0xc6, 0xc3, 0xca, - 0x1b, 0x75, 0x35, 0x98, 0x42, 0x4d, 0x94, 0xe1, 0x08, 0x8a, 0x9e, 0x85, 0xc9, 0x96, 0xef, 0x75, - 0x3b, 0x41, 0x8d, 0x19, 0x1b, 0xf3, 0xb5, 0xcf, 0xe4, 0xc2, 0xbb, 0x71, 0x31, 0x56, 0xeb, 0x50, - 0x29, 0x97, 0xff, 0x5c, 0xf7, 0xc9, 0xb6, 0xbd, 0x2f, 0x98, 0x1c, 0x93, 0x72, 0xef, 0x2a, 0xe5, - 0x38, 0x51, 0x8b, 0xf9, 0x43, 0x07, 0x41, 0x97, 0xf8, 0x9b, 0x78, 0x45, 0xe4, 0x71, 0xe0, 0xfe, - 0xd0, 0xb2, 0x10, 0xc7, 0x70, 0xf4, 0x13, 0x1a, 0xcc, 0xf8, 0xe4, 0xcd, 0xae, 0xed, 0x13, 0x8b, - 0x11, 0x0d, 0x84, 0xcf, 0x20, 0x1e, 0xcc, 0x4f, 0x71, 0x01, 0x27, 0x90, 0x72, 0x0e, 0x11, 0xa9, - 0xed, 0x92, 0x40, 0x9c, 0xea, 0x01, 0x9d, 0xaa, 0xc0, 0x6e, 0xb9, 0xb6, 0xdb, 0x5a, 0x74, 0x5a, - 0xc1, 0xdc, 0x38, 0x63, 0x7a, 0x5c, 0x84, 0x8e, 0x8b, 0xb1, 0x5a, 0x87, 0x5e, 0x2f, 0xbb, 0x01, - 0xdd, 0xf7, 0x6d, 0xc2, 0xe7, 0x77, 0x22, 0xd6, 0x6b, 0x6e, 0xaa, 0x00, 0x9c, 0xac, 0x87, 0x6e, - 0xc3, 0x8c, 0x2c, 0x10, 0xb3, 0x0c, 0x3c, 0x8a, 0x1e, 0xbb, 0xee, 0x27, 0x20, 0x38, 0x55, 0x73, - 0x7e, 0x11, 0x2e, 0xe5, 0x0c, 0xf3, 0x44, 0xcc, 0xe5, 0xff, 0x6a, 0x70, 0x85, 0xe7, 0xd2, 0x94, - 0x19, 0x20, 0x64, 0xb8, 0xbc, 0xfc, 0xc8, 0x73, 0xda, 0x99, 0x46, 0x9e, 0xfb, 0x3a, 0x44, 0xd8, - 0xd3, 0xff, 0x51, 0x05, 0xde, 0x7b, 0xe4, 0xbe, 0x44, 0x7f, 0x5f, 0x83, 0x49, 0xb2, 0x1f, 0xfa, - 0x46, 0xe4, 0x91, 0x41, 0x17, 0xe9, 0xf6, 0x99, 0x30, 0x81, 0x85, 0xe5, 0x98, 0x10, 0x5f, 0xb8, - 0x91, 0x88, 0xa5, 0x40, 0xb0, 0xda, 0x1f, 0x7a, 0x69, 0xe5, 0x51, 0x26, 0xd5, 0x07, 0x10, 0x91, - 0xe2, 0x58, 0x40, 0xe6, 0x3f, 0x0e, 0xb3, 0x69, 0xcc, 0x27, 0x5a, 0x2b, 0xbf, 0x5a, 0x81, 0xb1, - 0x75, 0xdf, 0xa3, 0xd2, 0xdf, 0x39, 0x84, 0x55, 0x30, 0x12, 0x91, 0xd7, 0x4b, 0x79, 0x4a, 0x8b, - 0xce, 0x16, 0x66, 0x7d, 0xb0, 0x53, 0x59, 0x1f, 0x16, 0x07, 0x21, 0xd2, 0x3f, 0xcd, 0xc3, 0xef, - 0x6a, 0x30, 0x29, 0x6a, 0x9e, 0x43, 0xf0, 0x80, 0xef, 0x4d, 0x06, 0x0f, 0xf8, 0xd8, 0x00, 0xe3, - 0x2a, 0x88, 0x1a, 0xf0, 0x05, 0x0d, 0xa6, 0x45, 0x8d, 0x55, 0xd2, 0xde, 0x22, 0x3e, 0xba, 0x03, - 0x63, 0x41, 0x97, 0x7d, 0x48, 0x31, 0xa0, 0xeb, 0xea, 0x7d, 0xc2, 0xdf, 0x32, 0x4c, 0x96, 0xa7, - 0x9b, 0x57, 0x51, 0x72, 0x29, 0xf0, 0x02, 0x2c, 0x1b, 0xd3, 0xdb, 0x8b, 0xef, 0x39, 0x99, 0x70, - 0x52, 0xd8, 0x73, 0x08, 0x66, 0x10, 0x2a, 0x98, 0xd3, 0xbf, 0x52, 0x85, 0xc7, 0x04, 0x73, 0x0a, - 0x0e, 0x30, 0x2f, 0xd7, 0x3f, 0x3d, 0x1c, 0x4d, 0x36, 0x8b, 0x77, 0x7e, 0x0f, 0x26, 0x4c, 0x9f, - 0x18, 0x21, 0xb1, 0x96, 0x7a, 0xc7, 0xe9, 0x1c, 0x3b, 0xae, 0x6a, 0xb2, 0x05, 0x8e, 0x1b, 0xd3, - 0x93, 0x41, 0x7d, 0x73, 0xaa, 0xc4, 0x87, 0x68, 0xe1, 0x7b, 0xd3, 0xb7, 0xc3, 0x88, 0xf7, 0xd0, - 0x8d, 0x4c, 0x57, 0xfa, 0x12, 0x66, 0x43, 0x79, 0x40, 0x6b, 0x63, 0xde, 0x48, 0x0d, 0xa7, 0x36, - 0xdc, 0x27, 0x9c, 0x9a, 0x03, 0x63, 0x6d, 0xf6, 0x19, 0x06, 0x0a, 0xad, 0x9f, 0xf8, 0xa0, 0x6a, - 0xf2, 0x25, 0x86, 0x19, 0x4b, 0x12, 0xf4, 0x84, 0xa7, 0xa7, 0x50, 0xd0, 0x31, 0x4c, 0xa2, 0x9e, - 0xf0, 0x6b, 0xb2, 0x10, 0xc7, 0x70, 0xd4, 0x4b, 0xc6, 0xe9, 0x1b, 0x2b, 0xaf, 0xc1, 0x13, 0xdd, - 0x53, 0x42, 0xf3, 0xf1, 0xa9, 0x2f, 0x8c, 0xd5, 0xf7, 0xa3, 0xc3, 0xd1, 0x22, 0x15, 0x99, 0x32, - 0xf2, 0x73, 0x4b, 0x6b, 0xa5, 0x72, 0x4b, 0x7f, 0xab, 0x8c, 0x27, 0x5b, 0x49, 0x24, 0x0a, 0x8b, - 0xe2, 0xc9, 0x4e, 0x09, 0xd2, 0x89, 0x18, 0xb2, 0x5d, 0xb8, 0x14, 0x84, 0x86, 0x43, 0x9a, 0xb6, - 0xd0, 0x74, 0x04, 0xa1, 0xd1, 0xee, 0x94, 0x08, 0xe8, 0xca, 0xfd, 0x17, 0xb2, 0xa8, 0x70, 0x1e, - 0x7e, 0xf4, 0x43, 0x1a, 0xcc, 0xb1, 0xf2, 0xc5, 0x6e, 0xe8, 0xf1, 0xc8, 0xe3, 0x31, 0xf1, 0x93, - 0x3f, 0x6c, 0xb3, 0x0b, 0x60, 0xb3, 0x00, 0x1f, 0x2e, 0xa4, 0x84, 0xde, 0x86, 0x2b, 0xf4, 0x04, - 0x5e, 0x34, 0x43, 0x7b, 0xcf, 0x0e, 0x7b, 0x71, 0x17, 0x4e, 0x1e, 0xc5, 0x95, 0x5d, 0x36, 0x56, - 0xf2, 0x90, 0xe1, 0x7c, 0x1a, 0xfa, 0x5f, 0x68, 0x80, 0xb2, 0x4b, 0x08, 0x39, 0x30, 0x6e, 0x49, - 0x87, 0x02, 0xed, 0x54, 0x82, 0x48, 0x46, 0x9c, 0x39, 0xf2, 0x43, 0x88, 0x28, 0x20, 0x0f, 0x26, - 0x1e, 0xee, 0xd8, 0x21, 0x71, 0xec, 0x20, 0x3c, 0xa5, 0x98, 0x95, 0x51, 0x00, 0xb7, 0x57, 0x24, - 0x62, 0x1c, 0xd3, 0xd0, 0x7f, 0x6c, 0x18, 0xc6, 0xa3, 0x10, 0xda, 0x47, 0xbf, 0xf1, 0x76, 0x01, - 0x99, 0x4a, 0x1a, 0xb2, 0x41, 0x34, 0x30, 0x4c, 0x08, 0xab, 0x65, 0x90, 0xe1, 0x1c, 0x02, 0xe8, - 0x6d, 0xb8, 0x6c, 0xbb, 0xdb, 0xbe, 0x11, 0x84, 0x7e, 0x97, 0xe9, 0xca, 0x07, 0xc9, 0xe6, 0xc5, - 0xee, 0x50, 0x8d, 0x1c, 0x74, 0x38, 0x97, 0x08, 0x22, 0x30, 0xc6, 0x33, 0x05, 0xc8, 0x70, 0x82, - 0xa5, 0xf2, 0xd2, 0xf2, 0x0c, 0x04, 0x31, 0xd7, 0xe4, 0xbf, 0x03, 0x2c, 0x71, 0xf3, 0x50, 0x1f, - 0xfc, 0x7f, 0xf9, 0x1e, 0x2d, 0xd6, 0x7d, 0xad, 0x3c, 0xbd, 0x38, 0xc5, 0x31, 0x0f, 0xf5, 0x91, - 0x2c, 0xc4, 0x69, 0x82, 0xfa, 0x6f, 0x6b, 0x30, 0xc2, 0x1d, 0x75, 0xcf, 0x5e, 0x82, 0xfb, 0x9e, - 0x84, 0x04, 0x57, 0x2a, 0x21, 0x11, 0xeb, 0x6a, 0x61, 0xaa, 0x9c, 0x2f, 0x6b, 0x30, 0xc1, 0x6a, - 0x9c, 0x83, 0x48, 0xf5, 0x7a, 0x52, 0xa4, 0x7a, 0xbe, 0xf4, 0x68, 0x0a, 0x04, 0xaa, 0xdf, 0x1e, - 0x12, 0x63, 0x61, 0x12, 0x4b, 0x03, 0x2e, 0x09, 0x6b, 0xd8, 0x15, 0x7b, 0x9b, 0xd0, 0x25, 0x5e, - 0x37, 0x7a, 0xfc, 0x81, 0x68, 0x44, 0xf8, 0x62, 0x65, 0xc1, 0x38, 0xaf, 0x0d, 0xfa, 0x75, 0x8d, - 0xca, 0x06, 0xa1, 0x6f, 0x9b, 0x03, 0xe5, 0x9f, 0x89, 0xfa, 0xb6, 0xb0, 0xca, 0x91, 0xf1, 0x9b, - 0xc9, 0x66, 0x2c, 0x24, 0xb0, 0xd2, 0x47, 0x07, 0xd5, 0x6a, 0x8e, 0xca, 0x2c, 0xce, 0x45, 0x11, - 0x84, 0x9f, 0xfa, 0xe3, 0xbe, 0x55, 0x98, 0x9a, 0x5a, 0xf6, 0x18, 0xdd, 0x83, 0x91, 0xc0, 0xf4, - 0x3a, 0xe4, 0x24, 0x19, 0xb5, 0xa2, 0x09, 0x6e, 0xd2, 0x96, 0x98, 0x23, 0x98, 0x7f, 0x03, 0xa6, - 0xd4, 0x9e, 0xe7, 0xdc, 0x7c, 0xea, 0xea, 0xcd, 0xe7, 0xc4, 0x2f, 0x5d, 0xea, 0x4d, 0xe9, 0x37, - 0x2a, 0x30, 0xca, 0xf3, 0x52, 0x1f, 0x43, 0x19, 0x6f, 0xcb, 0xa0, 0xff, 0x03, 0xa4, 0xdb, 0x57, - 0x23, 0x64, 0xbe, 0xe6, 0xb9, 0xca, 0x1c, 0xa8, 0x71, 0xff, 0x91, 0x1b, 0xc5, 0x4d, 0x1d, 0x2a, - 0x9f, 0xf5, 0x87, 0x0f, 0xec, 0xac, 0x23, 0xa5, 0xfe, 0x9e, 0x06, 0x53, 0x89, 0x40, 0xb4, 0x6d, - 0x18, 0xf2, 0xa3, 0x7c, 0x70, 0x65, 0xdf, 0x2a, 0xa4, 0x4d, 0xd5, 0xf5, 0x3e, 0x95, 0x30, 0xa5, - 0x13, 0xc5, 0xac, 0xad, 0x9c, 0x52, 0xcc, 0x5a, 0xfd, 0x73, 0x1a, 0x5c, 0x95, 0x03, 0x4a, 0x46, - 0x64, 0x42, 0x4f, 0xc3, 0xb8, 0xd1, 0xb1, 0x99, 0x4a, 0x4d, 0x55, 0x4a, 0x2e, 0xae, 0x37, 0x58, - 0x19, 0x8e, 0xa0, 0xe8, 0x83, 0x30, 0x2e, 0x17, 0x9e, 0x10, 0x3b, 0x23, 0x9e, 0x15, 0xbd, 0xbe, - 0x44, 0x35, 0xd0, 0xfb, 0x94, 0xbc, 0x0c, 0x23, 0xb1, 0x9c, 0x10, 0x11, 0xe6, 0xaf, 0xc0, 0xfa, - 0xb7, 0xc1, 0x44, 0xb3, 0x79, 0x6f, 0xd1, 0x34, 0x49, 0x10, 0x9c, 0x40, 0xb9, 0xac, 0x7f, 0x66, - 0x08, 0xa6, 0x45, 0x68, 0x39, 0xdb, 0xb5, 0x6c, 0xb7, 0x75, 0x0e, 0x67, 0xca, 0x06, 0x4c, 0x70, - 0x6d, 0xc6, 0x11, 0xb9, 0xfb, 0x9a, 0xb2, 0x52, 0x3a, 0x80, 0x73, 0x04, 0xc0, 0x31, 0x22, 0x74, - 0x1f, 0x46, 0xdf, 0xa4, 0xfc, 0x4d, 0xee, 0x8b, 0x63, 0xb1, 0x99, 0x68, 0xd1, 0x33, 0xd6, 0x18, - 0x60, 0x81, 0x02, 0x05, 0xcc, 0xe8, 0x8f, 0x09, 0x5c, 0x83, 0xc4, 0xae, 0x48, 0xcc, 0x6c, 0x94, - 0x95, 0x65, 0x4a, 0xd8, 0x0e, 0xb2, 0x5f, 0x38, 0x22, 0xc4, 0xa2, 0xcf, 0x27, 0x5a, 0xbc, 0x4b, - 0xa2, 0xcf, 0x27, 0xfa, 0x5c, 0x70, 0x34, 0x3e, 0x0f, 0x57, 0x72, 0x27, 0xe3, 0x68, 0x71, 0x56, - 0xff, 0xa5, 0x0a, 0x0c, 0x37, 0x09, 0xb1, 0xce, 0x61, 0x65, 0xbe, 0x9e, 0x90, 0x76, 0xbe, 0xbd, - 0x74, 0xfc, 0xfb, 0x22, 0x65, 0xd5, 0x76, 0x4a, 0x59, 0xf5, 0xf1, 0xd2, 0x14, 0xfa, 0x6b, 0xaa, - 0x7e, 0xa6, 0x02, 0x40, 0xab, 0x2d, 0x19, 0xe6, 0x2e, 0xe7, 0x38, 0xd1, 0x6a, 0xd6, 0x92, 0x1c, - 0x27, 0xbb, 0x0c, 0xcf, 0xf3, 0xf1, 0x56, 0x87, 0x51, 0x9f, 0x9d, 0x44, 0xe2, 0xdd, 0x03, 0x78, - 0x42, 0x69, 0x5a, 0x82, 0x05, 0x24, 0xc9, 0x2d, 0x86, 0x4f, 0x89, 0x5b, 0xe8, 0xfb, 0xc0, 0x32, - 0x80, 0xd6, 0xd7, 0x9a, 0xa8, 0xad, 0xcc, 0x4e, 0xa5, 0xbc, 0x2c, 0x2f, 0xd0, 0x1d, 0xb9, 0xcb, - 0x3f, 0xa3, 0xc1, 0x85, 0x54, 0xdd, 0x63, 0xdc, 0xe9, 0xce, 0x84, 0x67, 0xea, 0xbf, 0xa5, 0xc1, - 0x38, 0xed, 0xcb, 0x39, 0x30, 0x9a, 0xff, 0x3f, 0xc9, 0x68, 0x3e, 0x5a, 0x76, 0x8a, 0x0b, 0xf8, - 0xcb, 0x9f, 0x55, 0x80, 0x25, 0x9a, 0x10, 0x26, 0x0a, 0xca, 0xcb, 0xbf, 0x56, 0xf0, 0xf2, 0x7f, - 0x53, 0x18, 0x0e, 0xa4, 0x74, 0x94, 0x8a, 0xf1, 0xc0, 0x07, 0x15, 0xdb, 0x80, 0xa1, 0xe4, 0xb6, - 0xc9, 0xb1, 0x0f, 0x78, 0x0b, 0xa6, 0x83, 0x1d, 0xcf, 0x0b, 0xa3, 0xc8, 0x06, 0xc3, 0xe5, 0xf5, - 0xd1, 0xcc, 0xc2, 0x5a, 0x0e, 0x85, 0x3f, 0x40, 0x35, 0x55, 0xdc, 0x38, 0x49, 0x0a, 0x2d, 0x00, - 0x6c, 0x39, 0x9e, 0xb9, 0x5b, 0x6b, 0xd4, 0xb1, 0xb4, 0xa8, 0x65, 0x46, 0x4b, 0x4b, 0x51, 0x29, - 0x56, 0x6a, 0x0c, 0x64, 0xcb, 0xf0, 0x27, 0x1a, 0x9f, 0xe9, 0x13, 0x2c, 0xde, 0x73, 0xe4, 0x28, - 0xef, 0x4f, 0x71, 0x14, 0x25, 0x4d, 0x7d, 0x82, 0xab, 0x54, 0xa5, 0xc0, 0x3e, 0x1c, 0xeb, 0x9f, - 0x13, 0xe9, 0xb5, 0x7e, 0x55, 0x0c, 0x33, 0xca, 0x55, 0xd2, 0x81, 0x69, 0x47, 0x4d, 0x99, 0x2a, - 0xf6, 0x48, 0xa9, 0x6c, 0xab, 0x91, 0x8b, 0x46, 0xa2, 0x18, 0x27, 0x09, 0xa0, 0x8f, 0xc0, 0xb4, - 0x1c, 0x1d, 0x9d, 0x4c, 0x69, 0xb9, 0xc1, 0x96, 0xc3, 0xba, 0x0a, 0xc0, 0xc9, 0x7a, 0xfa, 0xe7, - 0x2b, 0xf0, 0x04, 0xef, 0x3b, 0xd3, 0x18, 0xd4, 0x49, 0x87, 0xb8, 0x16, 0x71, 0xcd, 0x1e, 0x93, - 0x59, 0x2d, 0xaf, 0x85, 0xde, 0x86, 0xd1, 0x87, 0x84, 0x58, 0x91, 0x46, 0xfb, 0x95, 0xf2, 0xa9, - 0x5e, 0x0a, 0x48, 0xbc, 0xc2, 0xd0, 0x73, 0x8e, 0xce, 0xff, 0xc7, 0x82, 0x24, 0x25, 0xde, 0xf1, - 0xbd, 0xad, 0x48, 0xb4, 0x3a, 0x7d, 0xe2, 0xeb, 0x0c, 0x3d, 0x27, 0xce, 0xff, 0xc7, 0x82, 0xa4, - 0xbe, 0x0e, 0x4f, 0x1e, 0xa3, 0xe9, 0x49, 0x44, 0xe8, 0xa3, 0x30, 0xf2, 0xd1, 0x9f, 0x04, 0xe3, - 0x1f, 0x6a, 0xf0, 0x94, 0x82, 0x72, 0x79, 0x9f, 0x4a, 0xf5, 0x35, 0xa3, 0x63, 0x98, 0xf4, 0x8e, - 0xca, 0xbc, 0xb5, 0x4f, 0x94, 0x7a, 0xe2, 0x33, 0x1a, 0x8c, 0x71, 0x43, 0x1a, 0xc9, 0x7e, 0x5f, - 0x1f, 0x70, 0xca, 0x0b, 0xbb, 0x24, 0x63, 0x1a, 0xcb, 0xb1, 0xf1, 0xdf, 0x01, 0x96, 0xf4, 0xf5, - 0x7f, 0x33, 0x02, 0xdf, 0x74, 0x7c, 0x44, 0xe8, 0x4f, 0xb4, 0x6c, 0x9e, 0xdb, 0xf6, 0xd9, 0x76, - 0x3e, 0xd2, 0x62, 0x88, 0x8b, 0xf1, 0x2b, 0x99, 0xbc, 0x31, 0xa7, 0xa4, 0x20, 0x51, 0x92, 0xea, - 0xfe, 0x53, 0x0d, 0xa6, 0xe8, 0xb1, 0x14, 0x31, 0x17, 0xfe, 0x99, 0x3a, 0x67, 0x3c, 0xd2, 0x35, - 0x85, 0x64, 0xca, 0xf3, 0x52, 0x05, 0xe1, 0x44, 0xdf, 0xd0, 0x66, 0xf2, 0x35, 0x88, 0x5f, 0xb7, - 0x6e, 0xe4, 0x49, 0x23, 0x27, 0xc9, 0xca, 0x34, 0xef, 0xc0, 0x4c, 0x72, 0xe6, 0xcf, 0x52, 0xbd, - 0x33, 0xff, 0x22, 0x5c, 0xcc, 0x8c, 0xfe, 0x44, 0xca, 0x8d, 0xbf, 0x3d, 0x0c, 0x55, 0x65, 0xaa, - 0x13, 0xa6, 0x74, 0x52, 0x26, 0xf8, 0x29, 0x0d, 0x26, 0x0d, 0xd7, 0x15, 0xe6, 0x18, 0x72, 0xfd, - 0x5a, 0x03, 0x7e, 0xd5, 0x3c, 0x52, 0x0b, 0x8b, 0x31, 0x99, 0x94, 0xbd, 0x81, 0x02, 0xc1, 0x6a, - 0x6f, 0xfa, 0x18, 0xd5, 0x55, 0xce, 0xcd, 0xa8, 0x0e, 0x7d, 0xbf, 0x3c, 0x88, 0xf9, 0x32, 0x7a, - 0xf5, 0x0c, 0xe6, 0x86, 0x9d, 0xeb, 0xf9, 0xda, 0xb4, 0xf9, 0x8f, 0xc3, 0x6c, 0x7a, 0xe6, 0x4e, - 0xb4, 0x0a, 0x7e, 0x69, 0x28, 0xc1, 0xaa, 0x0b, 0xc9, 0x1f, 0x43, 0x87, 0xf8, 0xc5, 0xd4, 0x62, - 0xe1, 0x2c, 0xc0, 0x3e, 0xab, 0x09, 0x39, 0xdd, 0x15, 0x33, 0x74, 0x7e, 0x66, 0x98, 0x83, 0x7e, - 0xb2, 0x25, 0xb8, 0xa2, 0xcc, 0x8f, 0x92, 0x05, 0xef, 0x19, 0x18, 0xdb, 0xb3, 0x03, 0x5b, 0xc6, - 0xd1, 0x51, 0x4e, 0xe8, 0x97, 0x79, 0x31, 0x96, 0x70, 0x7d, 0x25, 0xb1, 0xf7, 0x37, 0xbc, 0x8e, - 0xe7, 0x78, 0xad, 0xde, 0xe2, 0x43, 0xc3, 0x27, 0xd8, 0xeb, 0x86, 0x02, 0xdb, 0x71, 0xcf, 0xfb, - 0x55, 0xb8, 0xa9, 0x60, 0xcb, 0x0d, 0x08, 0x70, 0x12, 0x74, 0xbf, 0x3b, 0x26, 0x45, 0x57, 0xe1, - 0x31, 0xf9, 0x2b, 0x1a, 0x5c, 0x23, 0x45, 0x47, 0x81, 0x90, 0x63, 0x5f, 0x3d, 0xab, 0xa3, 0x46, - 0xc4, 0x59, 0x2d, 0x02, 0xe3, 0xe2, 0x9e, 0xa1, 0x5e, 0x22, 0x17, 0x64, 0x65, 0x10, 0x3d, 0x5c, - 0xce, 0xf7, 0xee, 0x97, 0x09, 0x12, 0xfd, 0xac, 0x06, 0x97, 0x9d, 0x9c, 0xad, 0x23, 0x44, 0xd6, - 0xe6, 0x19, 0xec, 0x4a, 0xfe, 0xe6, 0x99, 0x07, 0xc1, 0xb9, 0x5d, 0x41, 0x3f, 0x5f, 0x18, 0xa9, - 0x62, 0xa4, 0x7c, 0x52, 0xfe, 0xa3, 0x16, 0x62, 0x89, 0xa0, 0x15, 0x9f, 0xd7, 0x00, 0x59, 0x19, - 0xb1, 0x58, 0x58, 0x91, 0xbc, 0x74, 0xea, 0xc2, 0x3f, 0x7f, 0xb4, 0xce, 0x96, 0xe3, 0x9c, 0x4e, - 0xb0, 0xef, 0x1c, 0xe6, 0x6c, 0x5f, 0x11, 0x82, 0x76, 0xd0, 0xef, 0x9c, 0xc7, 0x19, 0xf8, 0x77, - 0xce, 0x83, 0xe0, 0xdc, 0xae, 0xe8, 0x9f, 0x1b, 0xe3, 0x5a, 0x1a, 0xf6, 0xaa, 0xb8, 0x05, 0xa3, - 0x5b, 0x4c, 0xab, 0x27, 0xf6, 0x6d, 0x69, 0x15, 0x22, 0xd7, 0x0d, 0xf2, 0x3b, 0x12, 0xff, 0x1f, - 0x0b, 0xcc, 0xe8, 0x35, 0x18, 0xb2, 0xdc, 0x40, 0x6c, 0xb8, 0x8f, 0x0d, 0xa0, 0x0c, 0x8b, 0x5d, - 0x79, 0xea, 0x6b, 0x4d, 0x4c, 0x91, 0x22, 0x17, 0xc6, 0x5d, 0xa1, 0xd8, 0x10, 0x77, 0xcf, 0xd2, - 0x69, 0x46, 0x23, 0x05, 0x49, 0xa4, 0x96, 0x91, 0x25, 0x38, 0xa2, 0x41, 0xe9, 0xa5, 0x34, 0xf9, - 0xa5, 0xe9, 0x45, 0xaa, 0xbd, 0x7e, 0xda, 0xd3, 0x75, 0x55, 0x51, 0x37, 0x72, 0x7c, 0x45, 0xdd, - 0x74, 0xe1, 0xc3, 0x06, 0x81, 0xd1, 0xd0, 0xb0, 0xdd, 0x90, 0x2b, 0x6a, 0x4a, 0x3e, 0xc2, 0xd3, - 0xfe, 0x6f, 0x50, 0x2c, 0xb1, 0x46, 0x84, 0xfd, 0x0c, 0xb0, 0x40, 0x4e, 0x17, 0xd6, 0x1e, 0x4b, - 0xf6, 0x2d, 0x36, 0x66, 0xe9, 0x85, 0xc5, 0x53, 0x86, 0xf3, 0x85, 0xc5, 0xff, 0xc7, 0x02, 0x33, - 0x7a, 0x03, 0xc6, 0x03, 0x69, 0x36, 0x31, 0x3e, 0x68, 0x8e, 0x59, 0x61, 0x33, 0x21, 0xfc, 0x75, - 0x84, 0xb1, 0x44, 0x84, 0x1f, 0x6d, 0xc1, 0x98, 0xcd, 0x3d, 0x4c, 0x44, 0xe0, 0x9e, 0x8f, 0x0d, - 0x90, 0x62, 0x4d, 0x66, 0xc1, 0xe7, 0xe1, 0x1e, 0x24, 0x62, 0xfd, 0x77, 0x81, 0xeb, 0xd9, 0x85, - 0x65, 0xda, 0x36, 0x8c, 0x4b, 0x74, 0x83, 0xf8, 0x8d, 0xc9, 0xa4, 0x96, 0x7c, 0x68, 0x51, 0x8a, - 0xcb, 0x08, 0x37, 0xaa, 0xe5, 0xf9, 0xff, 0xc5, 0xa1, 0xfe, 0x8f, 0xe7, 0xfb, 0xf7, 0x26, 0xcb, - 0x42, 0x27, 0xbd, 0xf0, 0x87, 0xca, 0x2f, 0xad, 0xc8, 0x43, 0x3f, 0x91, 0x7d, 0x4e, 0x3a, 0xf1, - 0x2b, 0x44, 0x0a, 0x2c, 0xf7, 0x86, 0x4b, 0x59, 0xee, 0xbd, 0x00, 0x17, 0x84, 0xa5, 0x44, 0x83, - 0x25, 0x7c, 0x0f, 0x7b, 0xc2, 0xb5, 0x81, 0xd9, 0xd0, 0xd4, 0x92, 0x20, 0x9c, 0xae, 0x8b, 0x7e, - 0x43, 0x83, 0x71, 0x53, 0x88, 0x1c, 0x62, 0x5f, 0xad, 0x0c, 0xf6, 0x18, 0xb3, 0x20, 0x25, 0x18, - 0x2e, 0x4c, 0xbf, 0x2c, 0x79, 0x84, 0x2c, 0x3e, 0x25, 0xa5, 0x41, 0xd4, 0x6b, 0xf4, 0x3b, 0xf4, - 0xbe, 0xe0, 0xb0, 0x44, 0x9b, 0xcc, 0xd3, 0x99, 0xfb, 0x5c, 0x3c, 0x18, 0x70, 0x14, 0x8b, 0x31, - 0x46, 0x3e, 0x90, 0xef, 0x8c, 0x6e, 0x05, 0x31, 0xe4, 0x94, 0xc6, 0xa2, 0x76, 0x1f, 0xfd, 0x63, - 0x0d, 0x9e, 0xe2, 0x8e, 0x2e, 0x35, 0x2a, 0x45, 0xb0, 0x7c, 0xe5, 0x24, 0x4e, 0x90, 0x1e, 0xdb, - 0x19, 0x8e, 0x9f, 0xd8, 0xce, 0xf0, 0xe9, 0xc3, 0x83, 0xea, 0x53, 0xb5, 0x63, 0xe0, 0xc6, 0xc7, - 0xea, 0x01, 0x7a, 0x0b, 0xa6, 0x1d, 0x35, 0x1a, 0x8b, 0x60, 0x30, 0xa5, 0x54, 0xfd, 0x89, 0xb0, - 0x2e, 0x5c, 0xb7, 0x9b, 0x28, 0xc2, 0x49, 0x52, 0xf3, 0xbb, 0x30, 0x9d, 0x58, 0x68, 0x67, 0xaa, - 0x24, 0x71, 0x61, 0x36, 0xbd, 0x1e, 0xce, 0xd4, 0xe6, 0xe6, 0x3e, 0x4c, 0x44, 0x07, 0x15, 0x7a, - 0x42, 0x21, 0x14, 0x0b, 0x12, 0xf7, 0x49, 0x8f, 0x53, 0xad, 0x26, 0x2e, 0x78, 0x5c, 0x83, 0xff, - 0x32, 0x2d, 0x10, 0x08, 0xf5, 0xaf, 0x08, 0x0d, 0xfe, 0x06, 0x69, 0x77, 0x1c, 0x23, 0x24, 0xef, - 0xfe, 0xf7, 0x63, 0xfd, 0xbf, 0x6a, 0xfc, 0xbc, 0xe1, 0xc7, 0x2a, 0x32, 0x60, 0xb2, 0xcd, 0x43, - 0x0e, 0x33, 0xe7, 0x7e, 0xad, 0x7c, 0x58, 0x81, 0xd5, 0x18, 0x0d, 0x56, 0x71, 0xa2, 0x87, 0x30, - 0x21, 0x45, 0x1b, 0xa9, 0x91, 0xb8, 0x33, 0x98, 0x60, 0x10, 0x49, 0x51, 0xd1, 0xd3, 0xa4, 0x2c, - 0x09, 0x70, 0x4c, 0x4b, 0x37, 0x00, 0x65, 0xdb, 0xd0, 0x5b, 0xb0, 0x34, 0xa5, 0xd7, 0x92, 0x71, - 0xfc, 0x32, 0xe6, 0xf4, 0x47, 0xa6, 0xd6, 0xd6, 0x7f, 0xb3, 0x02, 0xb9, 0x69, 0xde, 0x90, 0x0e, - 0xa3, 0xdc, 0xbb, 0x4d, 0x66, 0xed, 0xa6, 0xa2, 0x0c, 0x77, 0x7d, 0xc3, 0x02, 0x82, 0x1e, 0x70, - 0x4d, 0x88, 0x6b, 0xb1, 0xf8, 0x79, 0x31, 0x97, 0x50, 0xfd, 0x28, 0x97, 0xf3, 0x2a, 0xe0, 0xfc, - 0x76, 0x68, 0x0f, 0x50, 0xdb, 0xd8, 0x4f, 0x63, 0x1b, 0x20, 0xa1, 0xd2, 0x6a, 0x06, 0x1b, 0xce, - 0xa1, 0x40, 0x0f, 0x52, 0xc3, 0x34, 0x49, 0x27, 0x24, 0x16, 0x1f, 0xa2, 0x7c, 0x40, 0x64, 0x07, - 0xe9, 0x62, 0x12, 0x84, 0xd3, 0x75, 0xf5, 0xaf, 0x0d, 0xc3, 0xb5, 0xe4, 0x24, 0xd2, 0x1d, 0x2a, - 0x1d, 0xd0, 0x5e, 0x94, 0xf6, 0xf5, 0x7c, 0x22, 0x9f, 0x49, 0xdb, 0xd7, 0xcf, 0xd5, 0x7c, 0xc2, - 0x8e, 0x64, 0xc3, 0x09, 0x64, 0xa3, 0x84, 0xad, 0xfd, 0xd7, 0xc1, 0x9b, 0xac, 0xc0, 0x6b, 0x6e, - 0xe8, 0x4c, 0xbd, 0xe6, 0xde, 0xd1, 0x60, 0x3e, 0x59, 0x7c, 0xc7, 0x76, 0xed, 0x60, 0x47, 0x44, - 0x81, 0x3b, 0xb9, 0x79, 0x3f, 0x4b, 0xba, 0xb0, 0x52, 0x88, 0x11, 0xf7, 0xa1, 0x86, 0x3e, 0xab, - 0xc1, 0xf5, 0xd4, 0xbc, 0x24, 0x62, 0xd2, 0x9d, 0xdc, 0xd2, 0x9f, 0xf9, 0xff, 0xae, 0x14, 0xa3, - 0xc4, 0xfd, 0xe8, 0xe9, 0xff, 0xa2, 0x02, 0x23, 0xec, 0xfd, 0xfb, 0xdd, 0x61, 0xf0, 0xcc, 0xba, - 0x5a, 0x68, 0x03, 0xd4, 0x4a, 0xd9, 0x00, 0xbd, 0x58, 0x9e, 0x44, 0x7f, 0x23, 0xa0, 0xef, 0x84, - 0xab, 0xac, 0xda, 0xa2, 0xc5, 0xd4, 0x32, 0x01, 0xb1, 0x16, 0x2d, 0x8b, 0x45, 0x1f, 0x38, 0x5a, - 0x17, 0xfd, 0x04, 0x0c, 0x75, 0x7d, 0x27, 0x1d, 0x8f, 0x63, 0x13, 0xaf, 0x60, 0x5a, 0xae, 0xbf, - 0xa3, 0xc1, 0x2c, 0xc3, 0xad, 0x6c, 0x5f, 0xb4, 0x07, 0xe3, 0xbe, 0xd8, 0xc2, 0xe2, 0xdb, 0xac, - 0x94, 0x1e, 0x5a, 0x0e, 0x5b, 0x10, 0x89, 0x28, 0xc5, 0x2f, 0x1c, 0xd1, 0xd2, 0xbf, 0x3a, 0x0a, - 0x73, 0x45, 0x8d, 0xd0, 0x4f, 0x68, 0x70, 0xd5, 0x8c, 0xa5, 0xb9, 0xc5, 0x6e, 0xb8, 0xe3, 0xf9, - 0x76, 0x68, 0x0b, 0xc3, 0x90, 0x92, 0xd7, 0xdc, 0xda, 0x62, 0xd4, 0x2b, 0x16, 0x43, 0xad, 0x96, - 0x4b, 0x01, 0x17, 0x50, 0x46, 0x6f, 0x03, 0xec, 0xc6, 0x41, 0x5b, 0x2b, 0xe5, 0xd3, 0x43, 0xb0, - 0x61, 0x2b, 0x81, 0x5d, 0x65, 0xa7, 0x98, 0x66, 0x53, 0x29, 0x57, 0xc8, 0x51, 0xe2, 0x41, 0xb0, - 0x73, 0x9f, 0xf4, 0x3a, 0x86, 0x2d, 0x9f, 0xff, 0xcb, 0x13, 0x6f, 0x36, 0xef, 0x09, 0x54, 0x49, - 0xe2, 0x4a, 0xb9, 0x42, 0x0e, 0x7d, 0x4a, 0x83, 0x69, 0x4f, 0x75, 0x55, 0x1e, 0xc4, 0xba, 0x32, - 0xd7, 0xe7, 0x99, 0x8b, 0xd0, 0x49, 0x50, 0x92, 0x24, 0x5d, 0x13, 0x17, 0x83, 0xf4, 0x91, 0x25, - 0x98, 0xda, 0xea, 0xe0, 0x59, 0x64, 0x95, 0xf3, 0x8f, 0x5f, 0xc7, 0xb3, 0xe0, 0x2c, 0x79, 0xd6, - 0x29, 0x12, 0x9a, 0xd6, 0xb2, 0x6b, 0xfa, 0x3d, 0xe6, 0x75, 0x48, 0x3b, 0x35, 0x5a, 0xbe, 0x53, - 0xcb, 0x1b, 0xb5, 0x7a, 0x02, 0x59, 0xb2, 0x53, 0x59, 0x70, 0x96, 0xbc, 0xfe, 0xc9, 0x0a, 0x3c, - 0x56, 0xb0, 0xc6, 0xfe, 0xda, 0xf8, 0x96, 0x7f, 0x59, 0x83, 0x09, 0x36, 0x07, 0xef, 0x12, 0x07, - 0x15, 0xd6, 0xd7, 0x02, 0x2b, 0xb9, 0xdf, 0xd2, 0xe0, 0x62, 0x26, 0x7a, 0xe7, 0xb1, 0xdc, 0x1b, - 0xce, 0xcd, 0x80, 0xeb, 0x7d, 0x71, 0xa4, 0xee, 0xa1, 0xd8, 0x59, 0x36, 0x1d, 0xa5, 0x5b, 0x7f, - 0x05, 0xa6, 0x13, 0x46, 0x72, 0x51, 0x1c, 0x20, 0x2d, 0x37, 0x0e, 0x90, 0x1a, 0xe6, 0xa7, 0xd2, - 0x2f, 0xcc, 0x4f, 0xbc, 0xe4, 0xb3, 0x9c, 0xed, 0xaf, 0xcd, 0x92, 0xff, 0xc3, 0x0b, 0x62, 0xc9, - 0xb3, 0x17, 0x87, 0xd7, 0x61, 0x94, 0x05, 0x15, 0x92, 0x27, 0xe6, 0xed, 0xd2, 0xc1, 0x8a, 0x02, - 0x7e, 0x93, 0xe2, 0xff, 0x63, 0x81, 0x15, 0xd5, 0x61, 0xd6, 0x74, 0xbc, 0xae, 0x25, 0x12, 0x6b, - 0xae, 0xc5, 0x97, 0xb6, 0x28, 0xe6, 0x64, 0x2d, 0x05, 0xc7, 0x99, 0x16, 0x08, 0xf3, 0x37, 0x0b, - 0x7e, 0x9e, 0x95, 0x8a, 0x39, 0x59, 0x5f, 0x6b, 0xf2, 0x9c, 0x0d, 0xd1, 0x5b, 0xc5, 0x9b, 0x00, - 0x44, 0x2e, 0x5e, 0xe9, 0x57, 0xf8, 0x42, 0xb9, 0x68, 0x9a, 0xd1, 0x16, 0x90, 0xc2, 0x67, 0x54, - 0x14, 0x60, 0x85, 0x08, 0xf2, 0x61, 0x72, 0xc7, 0xde, 0x22, 0xbe, 0xcb, 0xe5, 0xa8, 0x91, 0xf2, - 0x22, 0xe2, 0xbd, 0x18, 0x0d, 0xbf, 0xe3, 0x2b, 0x05, 0x58, 0x25, 0x82, 0x7c, 0x2e, 0x8e, 0x70, - 0xf5, 0xf0, 0x20, 0x29, 0xe6, 0x63, 0xbd, 0x73, 0x3c, 0xce, 0xb8, 0x0c, 0x2b, 0x54, 0x90, 0x0b, - 0xe0, 0x46, 0xd1, 0xc4, 0x06, 0x79, 0x71, 0x88, 0x63, 0x92, 0x71, 0xc1, 0x23, 0xfe, 0x8d, 0x15, - 0x0a, 0x74, 0x5e, 0xdb, 0x71, 0x78, 0x3a, 0xa1, 0x43, 0x7c, 0x71, 0xc0, 0x10, 0x81, 0x42, 0x77, - 0x12, 0x17, 0x60, 0x95, 0x08, 0x1d, 0x63, 0x3b, 0x0a, 0x2a, 0x27, 0x74, 0x84, 0xa5, 0xc6, 0x18, - 0x87, 0xa6, 0x13, 0x89, 0xbf, 0xa2, 0xdf, 0x58, 0xa1, 0x80, 0xde, 0x50, 0x9e, 0xba, 0xa0, 0xbc, - 0x06, 0xea, 0x58, 0xcf, 0x5c, 0x1f, 0x8e, 0x15, 0x31, 0x93, 0x6c, 0xaf, 0x5e, 0x57, 0x94, 0x30, - 0x2c, 0xd8, 0x1e, 0xe5, 0x1f, 0x19, 0xa5, 0x4c, 0x6c, 0x9e, 0x3b, 0xd5, 0xd7, 0x3c, 0xb7, 0x46, - 0x25, 0x34, 0xc5, 0x5d, 0x84, 0x31, 0x85, 0xe9, 0xf8, 0x85, 0xa3, 0x99, 0x06, 0xe2, 0x6c, 0x7d, - 0xce, 0xf4, 0x89, 0xc5, 0xda, 0xce, 0xa8, 0x4c, 0x9f, 0x97, 0xe1, 0x08, 0x8a, 0xf6, 0x60, 0x2a, - 0x50, 0x6c, 0x7d, 0x45, 0xb6, 0xc6, 0x01, 0xde, 0xa6, 0x84, 0x9d, 0x2f, 0x0b, 0xb3, 0xa4, 0x96, - 0xe0, 0x04, 0x1d, 0xf4, 0xb6, 0x6a, 0xdc, 0x38, 0x5b, 0xde, 0xb1, 0x33, 0x3f, 0x88, 0x60, 0xac, - 0x61, 0x8b, 0xec, 0xea, 0x54, 0x9b, 0xc3, 0x6e, 0xd2, 0x8c, 0xef, 0xe2, 0xa9, 0x38, 0xb2, 0x1f, - 0x69, 0xe6, 0x47, 0x3f, 0x2d, 0xd9, 0xef, 0x78, 0x41, 0xd7, 0x27, 0x2c, 0x38, 0x2a, 0xfb, 0x3c, - 0x28, 0xfe, 0xb4, 0xcb, 0x69, 0x20, 0xce, 0xd6, 0x47, 0x3f, 0xac, 0xc1, 0x2c, 0x4f, 0x76, 0x49, - 0x8f, 0x2e, 0xcf, 0x25, 0x6e, 0x18, 0xb0, 0x6c, 0x8e, 0x25, 0x7d, 0x2f, 0x9b, 0x29, 0x5c, 0x3c, - 0x43, 0x50, 0xba, 0x14, 0x67, 0x68, 0xd2, 0x95, 0xa3, 0xba, 0xc2, 0xb3, 0xa4, 0x90, 0x25, 0x57, - 0x8e, 0xea, 0x66, 0xcf, 0x57, 0x8e, 0x5a, 0x82, 0x13, 0x74, 0xd0, 0x47, 0x60, 0x3a, 0x90, 0x99, - 0x5b, 0xd8, 0x0c, 0x5e, 0x89, 0x63, 0x55, 0x35, 0x55, 0x00, 0x4e, 0xd6, 0xd3, 0xff, 0xad, 0x06, - 0x10, 0x69, 0x0f, 0xce, 0x43, 0x27, 0x6e, 0x25, 0x14, 0x2a, 0x4b, 0x03, 0x69, 0x3b, 0x48, 0xa1, - 0x66, 0xfc, 0x0f, 0x34, 0x98, 0x89, 0xab, 0x9d, 0x83, 0xa8, 0x6e, 0x26, 0x45, 0xf5, 0x8f, 0x0f, - 0x36, 0xae, 0x02, 0x79, 0xfd, 0xff, 0x54, 0xd4, 0x51, 0x31, 0x69, 0x6c, 0x2f, 0xf1, 0xc6, 0x4c, - 0x49, 0xdf, 0x1b, 0xe4, 0x8d, 0x59, 0x75, 0xcf, 0x8d, 0xc7, 0x9b, 0xf3, 0xe6, 0xfc, 0xb7, 0x12, - 0xb2, 0xd0, 0x00, 0x4e, 0xe8, 0x91, 0xe0, 0x23, 0x49, 0xf3, 0x09, 0x38, 0x4a, 0x30, 0x7a, 0x53, - 0x65, 0x95, 0xfc, 0xb5, 0xfa, 0x13, 0xe5, 0x3c, 0x9f, 0x95, 0x01, 0xf7, 0x65, 0x90, 0xfa, 0x97, - 0xa7, 0x61, 0x52, 0x51, 0xb4, 0xa5, 0x5e, 0xcc, 0xb5, 0xf3, 0x78, 0x31, 0x0f, 0x61, 0xd2, 0x8c, - 0x82, 0x8d, 0xcb, 0x69, 0x1f, 0x90, 0x66, 0xc4, 0xa2, 0xe3, 0x30, 0xe6, 0x01, 0x56, 0xc9, 0x50, - 0x41, 0x22, 0x5a, 0x63, 0x43, 0xa7, 0x60, 0xc7, 0xd0, 0x6f, 0x5d, 0x7d, 0x08, 0x40, 0xca, 0xa2, - 0xc4, 0x12, 0xd1, 0x22, 0x23, 0x23, 0xf4, 0x46, 0x70, 0x2f, 0x82, 0x61, 0xa5, 0x5e, 0xf6, 0x05, - 0x76, 0xe4, 0xdc, 0x5e, 0x60, 0xe9, 0x32, 0x70, 0x64, 0xae, 0x9b, 0x81, 0x6c, 0x72, 0xa2, 0x8c, - 0x39, 0xf1, 0x32, 0x88, 0x8a, 0x02, 0xac, 0x10, 0x29, 0x30, 0x9c, 0x18, 0x2b, 0x65, 0x38, 0xd1, - 0x85, 0x4b, 0x3e, 0x09, 0xfd, 0x5e, 0xad, 0x67, 0xb2, 0x14, 0x50, 0x7e, 0xc8, 0x6e, 0x94, 0xe3, - 0xe5, 0xa2, 0x17, 0xe1, 0x2c, 0x2a, 0x9c, 0x87, 0x3f, 0x21, 0x8c, 0x4d, 0xf4, 0x15, 0xc6, 0x3e, - 0x0c, 0x93, 0x21, 0x31, 0x77, 0x5c, 0xdb, 0x34, 0x9c, 0x46, 0x5d, 0x84, 0x52, 0x8c, 0xe5, 0x8a, - 0x18, 0x84, 0xd5, 0x7a, 0x68, 0x09, 0x86, 0xba, 0xb6, 0x25, 0xa4, 0xd1, 0x6f, 0x89, 0x54, 0xd6, - 0x8d, 0xfa, 0xa3, 0x83, 0xea, 0x7b, 0x63, 0x4b, 0x84, 0x68, 0x54, 0xb7, 0x3a, 0xbb, 0xad, 0x5b, - 0x61, 0xaf, 0x43, 0x82, 0x85, 0xcd, 0x46, 0x1d, 0xd3, 0xc6, 0x79, 0x46, 0x25, 0x53, 0x27, 0x30, - 0x2a, 0xf9, 0xbc, 0x06, 0x97, 0x8c, 0xb4, 0xb6, 0x9d, 0x04, 0x73, 0xd3, 0xe5, 0xb9, 0x65, 0xbe, - 0x06, 0x7f, 0xe9, 0xba, 0x18, 0xdf, 0xa5, 0xc5, 0x2c, 0x39, 0x9c, 0xd7, 0x07, 0xe4, 0x03, 0x6a, - 0xdb, 0xad, 0x28, 0xed, 0x8c, 0xf8, 0xea, 0x33, 0xe5, 0xf4, 0x08, 0xab, 0x19, 0x4c, 0x38, 0x07, - 0x3b, 0x7a, 0x08, 0x93, 0x66, 0xac, 0x93, 0x17, 0x52, 0x75, 0xfd, 0x34, 0x1e, 0x05, 0xf8, 0xcd, - 0x4b, 0x55, 0xf8, 0xab, 0x94, 0xa2, 0xd7, 0x34, 0xe5, 0xca, 0x2b, 0x5e, 0x94, 0xd8, 0xa8, 0x67, - 0xcb, 0xbf, 0xa6, 0xe5, 0x63, 0xc4, 0x7d, 0xa8, 0xb1, 0x98, 0x41, 0x4e, 0x32, 0x3b, 0x14, 0x4b, - 0x8c, 0x5e, 0xd2, 0xcf, 0x38, 0x95, 0x68, 0x8a, 0x2f, 0xcd, 0x54, 0x21, 0x4e, 0x13, 0xd4, 0x7f, - 0x5f, 0x13, 0x0a, 0xb3, 0x73, 0xb4, 0x86, 0x38, 0xeb, 0xa7, 0x34, 0xfd, 0xcf, 0x35, 0xc8, 0xc8, - 0xe8, 0x68, 0x0b, 0xc6, 0x28, 0x8a, 0xfa, 0x5a, 0x53, 0x0c, 0xeb, 0x63, 0xe5, 0x8e, 0x4b, 0x86, - 0x82, 0x6b, 0x1f, 0xc5, 0x0f, 0x2c, 0x11, 0x53, 0xa9, 0xdf, 0x55, 0xa2, 0x39, 0x8b, 0x11, 0x96, - 0x92, 0x47, 0xd4, 0xa8, 0xd0, 0x5c, 0xea, 0x57, 0x4b, 0x70, 0x82, 0x8e, 0xbe, 0x02, 0x10, 0xdf, - 0xab, 0x06, 0x36, 0x90, 0xf9, 0xd3, 0x11, 0xb8, 0x32, 0xa8, 0xb3, 0x01, 0x4b, 0x4a, 0x44, 0xf6, - 0x6c, 0x33, 0x5c, 0xdc, 0x0e, 0x89, 0xff, 0xe0, 0xc1, 0x6a, 0x94, 0xc2, 0xbf, 0x64, 0x56, 0x24, - 0xf6, 0xa0, 0xb6, 0x9c, 0x8b, 0x11, 0x17, 0x50, 0x62, 0x77, 0x4a, 0x91, 0x24, 0x19, 0x53, 0x61, - 0x92, 0xe5, 0xe7, 0xe7, 0x11, 0x53, 0xf8, 0x9d, 0x32, 0x0d, 0xc4, 0xd9, 0xfa, 0x69, 0x24, 0x2b, - 0x76, 0xdb, 0xe6, 0xd9, 0x61, 0xb4, 0x2c, 0x12, 0x06, 0xc4, 0xd9, 0xfa, 0x2a, 0x12, 0xfe, 0xa5, - 0xe8, 0x6e, 0x1f, 0xc9, 0x22, 0x89, 0x80, 0x38, 0x5b, 0x1f, 0x59, 0xf0, 0xb8, 0x4f, 0x4c, 0xaf, - 0xdd, 0x26, 0xae, 0xc5, 0xf3, 0xfd, 0x19, 0x7e, 0xcb, 0x76, 0xef, 0xf8, 0x06, 0xab, 0xc8, 0x54, - 0x74, 0x1a, 0xcb, 0x71, 0xf0, 0x38, 0xee, 0x53, 0x0f, 0xf7, 0xc5, 0x82, 0xda, 0x70, 0x81, 0x27, - 0x17, 0xf2, 0x1b, 0x6e, 0x48, 0xfc, 0x3d, 0xc3, 0x11, 0x7a, 0xb8, 0x52, 0x89, 0x8e, 0x37, 0x93, - 0xa8, 0x70, 0x1a, 0x37, 0xea, 0x51, 0xb9, 0x43, 0x74, 0x47, 0x21, 0x39, 0x5e, 0x3e, 0x6d, 0x17, - 0xce, 0xa2, 0xc3, 0x79, 0x34, 0xf4, 0xcf, 0x6b, 0x20, 0x2c, 0x91, 0xd1, 0xe3, 0x89, 0xb7, 0x8e, - 0xf1, 0xd4, 0x3b, 0x87, 0xcc, 0x6a, 0x50, 0xc9, 0xcd, 0x6a, 0xf0, 0x7e, 0x25, 0x14, 0xcf, 0x44, - 0xcc, 0xfb, 0x38, 0x66, 0x25, 0x23, 0xcb, 0x07, 0x60, 0x82, 0xf0, 0x67, 0xb4, 0x48, 0xa2, 0x65, - 0xd6, 0xdd, 0xcb, 0xb2, 0x10, 0xc7, 0x70, 0xfd, 0xf7, 0x34, 0x10, 0x18, 0x58, 0xfe, 0xa0, 0x63, - 0xe5, 0x91, 0x39, 0xd2, 0xb4, 0x49, 0xc9, 0x7f, 0x33, 0x54, 0x98, 0xff, 0xe6, 0x8c, 0xd2, 0xc2, - 0xfc, 0x8a, 0x06, 0x17, 0x92, 0xb1, 0x91, 0x02, 0xf4, 0x3e, 0x18, 0x13, 0xd1, 0x13, 0x45, 0xf8, - 0x33, 0xd6, 0x54, 0x84, 0x2f, 0xc0, 0x12, 0x96, 0x54, 0x87, 0x0d, 0x70, 0xc5, 0xcc, 0x0f, 0xd1, - 0x74, 0xc4, 0x6d, 0xef, 0xd3, 0xb3, 0x30, 0xca, 0x43, 0xef, 0x51, 0x9e, 0x96, 0xe3, 0xb6, 0x79, - 0xbf, 0x7c, 0x84, 0xbf, 0x32, 0xbe, 0x76, 0x6a, 0x94, 0xfb, 0x4a, 0xdf, 0x28, 0xf7, 0x98, 0xa7, - 0xdb, 0x1a, 0xe0, 0xe9, 0xa3, 0x86, 0x1b, 0x22, 0x7f, 0xb7, 0x4c, 0xb5, 0x15, 0x26, 0xde, 0x04, - 0x86, 0xcb, 0x4b, 0x6e, 0x7c, 0x02, 0x94, 0x97, 0x81, 0x99, 0xbe, 0xaf, 0x02, 0x32, 0xb6, 0xd9, - 0x48, 0x79, 0x53, 0x43, 0x31, 0xe5, 0xc7, 0x88, 0x6d, 0x16, 0x6d, 0xa4, 0xd1, 0xc2, 0x8d, 0xb4, - 0x0d, 0x63, 0x62, 0x2b, 0x08, 0xe6, 0xf8, 0xb1, 0x01, 0xf2, 0x56, 0x29, 0xe1, 0x78, 0x79, 0x01, - 0x96, 0xc8, 0xe9, 0x89, 0xdb, 0x36, 0xf6, 0xed, 0x76, 0xb7, 0xcd, 0x38, 0xe2, 0x88, 0x5a, 0x95, - 0x15, 0x63, 0x09, 0x67, 0x55, 0xb9, 0x85, 0x26, 0xbb, 0x48, 0xa9, 0x55, 0x79, 0x31, 0x96, 0x70, - 0xf4, 0x1a, 0x8c, 0xb7, 0x8d, 0xfd, 0x66, 0xd7, 0x6f, 0x11, 0xf1, 0x22, 0x50, 0x2c, 0xe3, 0x75, - 0x43, 0xdb, 0x59, 0xa0, 0xd7, 0xff, 0xd0, 0x5f, 0x68, 0xb8, 0xe1, 0x03, 0xbf, 0x19, 0xfa, 0x51, - 0xf2, 0x9a, 0x55, 0x81, 0x05, 0x47, 0xf8, 0x90, 0x03, 0x33, 0x6d, 0x63, 0x7f, 0xd3, 0x35, 0xa2, - 0x34, 0xf9, 0x93, 0x25, 0x29, 0xb0, 0x67, 0xe1, 0xd5, 0x04, 0x2e, 0x9c, 0xc2, 0x9d, 0xf3, 0x02, - 0x3d, 0x75, 0x56, 0x2f, 0xd0, 0x8b, 0x91, 0xbf, 0x0d, 0xbf, 0xb7, 0x5d, 0xcb, 0xf5, 0x6c, 0xef, - 0xeb, 0x4b, 0xf3, 0x7a, 0xe4, 0x4b, 0x33, 0x53, 0xfe, 0xc9, 0xb4, 0x8f, 0x1f, 0x4d, 0x17, 0x26, - 0xa9, 0x84, 0xcd, 0x4b, 0xe9, 0xc5, 0xaa, 0xb4, 0x0a, 0xb2, 0x1e, 0xa1, 0x51, 0xd2, 0xae, 0xc6, - 0xa8, 0xb1, 0x4a, 0x07, 0x3d, 0xe0, 0x69, 0xd4, 0x1d, 0x12, 0xc6, 0x55, 0xd8, 0x85, 0x7e, 0x96, - 0xed, 0x9f, 0x28, 0xeb, 0x79, 0xa6, 0x02, 0xce, 0x6f, 0x17, 0x47, 0x61, 0xb9, 0x98, 0x1f, 0x85, - 0x05, 0xfd, 0x58, 0x9e, 0x9e, 0x1f, 0xb1, 0x39, 0xfd, 0x8e, 0xf2, 0xbc, 0xa1, 0xb4, 0xb6, 0xff, - 0x5f, 0x6a, 0x30, 0xd7, 0x2e, 0xc8, 0x4f, 0x2a, 0x9e, 0x1f, 0x36, 0x06, 0xe0, 0x0f, 0x85, 0x39, - 0x4f, 0x97, 0x9e, 0x3a, 0x3c, 0xa8, 0x1e, 0x99, 0x19, 0x15, 0x17, 0xf6, 0x0d, 0xf9, 0x30, 0x16, - 0xf4, 0x02, 0x33, 0x74, 0x82, 0xb9, 0xcb, 0xe5, 0xd3, 0x60, 0x0a, 0xce, 0xda, 0xe4, 0x98, 0x38, - 0x6b, 0x8d, 0x83, 0xc0, 0xf3, 0x52, 0x2c, 0x09, 0x0d, 0xea, 0xa7, 0x3d, 0x40, 0xe0, 0xc9, 0xf9, - 0xdb, 0x30, 0xa5, 0x76, 0xf2, 0x44, 0xee, 0xe1, 0x3f, 0xa7, 0xc1, 0x6c, 0xfa, 0xd0, 0x52, 0x33, - 0xd5, 0x6b, 0x67, 0x9b, 0xa9, 0x5e, 0xb1, 0x7f, 0xa9, 0xf4, 0xb1, 0x7f, 0x79, 0x01, 0xae, 0xe6, - 0xaf, 0x65, 0x2a, 0x41, 0x1a, 0x8e, 0xe3, 0x3d, 0x14, 0x37, 0xb7, 0x38, 0x3f, 0x14, 0x2d, 0xc4, - 0x1c, 0xa6, 0x7f, 0x3f, 0xa4, 0xc3, 0x0c, 0xa3, 0x37, 0x60, 0x22, 0x08, 0x76, 0x78, 0x04, 0x49, - 0x31, 0xc8, 0x72, 0x57, 0x76, 0x19, 0x86, 0x52, 0xb8, 0x34, 0xca, 0x9f, 0x38, 0x46, 0xbf, 0xf4, - 0xea, 0x97, 0xbe, 0x76, 0xe3, 0x3d, 0x5f, 0xf9, 0xda, 0x8d, 0xf7, 0x7c, 0xf5, 0x6b, 0x37, 0xde, - 0xf3, 0x83, 0x87, 0x37, 0xb4, 0x2f, 0x1d, 0xde, 0xd0, 0xbe, 0x72, 0x78, 0x43, 0xfb, 0xea, 0xe1, - 0x0d, 0xed, 0x3f, 0x1d, 0xde, 0xd0, 0x7e, 0xfc, 0x3f, 0xdf, 0x78, 0xcf, 0x6b, 0xcf, 0xc5, 0xd4, - 0x6f, 0x49, 0xa2, 0xf1, 0x3f, 0x9d, 0xdd, 0xd6, 0x2d, 0x4a, 0x5d, 0xba, 0x16, 0x31, 0xea, 0xff, - 0x2f, 0x00, 0x00, 0xff, 0xff, 0x46, 0x8c, 0x06, 0x22, 0xf5, 0xe9, 0x00, 0x00, + // 12018 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6b, 0x6c, 0x24, 0xc9, + 0x79, 0x98, 0x7a, 0xf8, 0xfe, 0xf8, 0x58, 0x6e, 0xed, 0xe3, 0xb8, 0xdc, 0xbb, 0x9d, 0x55, 0xdf, + 0x49, 0xb9, 0xf3, 0xc9, 0x5c, 0xdf, 0xe9, 0x71, 0xba, 0x95, 0x4e, 0x27, 0x72, 0x86, 0xdc, 0x1d, + 0x2d, 0xc9, 0xe5, 0xd5, 0x90, 0x77, 0xa7, 0x93, 0x73, 0x56, 0x73, 0xba, 0x38, 0xec, 0x63, 0x4f, + 0xf7, 0x5c, 0x77, 0x0f, 0x97, 0x73, 0x27, 0x45, 0x96, 0x62, 0x39, 0xd6, 0xd9, 0x0a, 0x1c, 0x01, + 0x8e, 0x20, 0xc9, 0x89, 0x65, 0x18, 0xce, 0xcb, 0x81, 0x63, 0x38, 0x70, 0x00, 0xdb, 0x08, 0x60, + 0x08, 0x48, 0x2c, 0x19, 0x96, 0x21, 0x48, 0x09, 0x22, 0x21, 0x31, 0x1d, 0x31, 0x8a, 0x1c, 0x20, + 0x81, 0x11, 0xc0, 0x08, 0x82, 0x6c, 0x0c, 0x27, 0xa8, 0x57, 0x77, 0xf5, 0x6b, 0x48, 0xf6, 0x90, + 0x94, 0x0e, 0xf6, 0x2f, 0x72, 0xea, 0xf1, 0x7d, 0x55, 0xd5, 0x55, 0x5f, 0x7d, 0xdf, 0x57, 0xdf, + 0x03, 0x16, 0x9a, 0x56, 0xb0, 0xdd, 0xd9, 0x9c, 0x6b, 0xb8, 0xad, 0x1b, 0x4d, 0xc3, 0x33, 0x89, + 0x43, 0xbc, 0xe8, 0x9f, 0xf6, 0x4e, 0xf3, 0x86, 0xd1, 0xb6, 0xfc, 0x1b, 0x0d, 0xd7, 0x23, 0x37, + 0x76, 0x9f, 0xd8, 0x24, 0x81, 0xf1, 0xc4, 0x8d, 0x26, 0xad, 0x33, 0x02, 0x62, 0xce, 0xb5, 0x3d, + 0x37, 0x70, 0xd1, 0x93, 0x11, 0x8c, 0x39, 0xd9, 0x35, 0xfa, 0xa7, 0xbd, 0xd3, 0x9c, 0xa3, 0x30, + 0xe6, 0x28, 0x8c, 0x39, 0x01, 0x63, 0xf6, 0x47, 0x55, 0xbc, 0x6e, 0xd3, 0xbd, 0xc1, 0x40, 0x6d, + 0x76, 0xb6, 0xd8, 0x2f, 0xf6, 0x83, 0xfd, 0xc7, 0x51, 0xcc, 0x3e, 0xb6, 0xf3, 0x5e, 0x7f, 0xce, + 0x72, 0xe9, 0x60, 0x6e, 0x18, 0x9d, 0xc0, 0xf5, 0x1b, 0x86, 0x6d, 0x39, 0xcd, 0x1b, 0xbb, 0xa9, + 0xd1, 0xcc, 0xea, 0x4a, 0x53, 0x31, 0xec, 0x9e, 0x6d, 0xbc, 0x4d, 0xa3, 0x91, 0xd5, 0xe6, 0x5d, + 0x51, 0x9b, 0x96, 0xd1, 0xd8, 0xb6, 0x1c, 0xe2, 0x75, 0xe5, 0x82, 0xdc, 0xf0, 0x88, 0xef, 0x76, + 0xbc, 0x06, 0x39, 0x56, 0x2f, 0xff, 0x46, 0x8b, 0x04, 0x46, 0x16, 0xae, 0x1b, 0x79, 0xbd, 0xbc, + 0x8e, 0x13, 0x58, 0xad, 0x34, 0x9a, 0xf7, 0x1c, 0xd6, 0xc1, 0x6f, 0x6c, 0x93, 0x96, 0x91, 0xea, + 0xf7, 0xce, 0xbc, 0x7e, 0x9d, 0xc0, 0xb2, 0x6f, 0x58, 0x4e, 0xe0, 0x07, 0x5e, 0xb2, 0x93, 0xfe, + 0x86, 0x06, 0xd3, 0xf3, 0x6b, 0xb5, 0x3a, 0xf1, 0x76, 0x89, 0xb7, 0xec, 0x36, 0x9b, 0x96, 0xd3, + 0x44, 0x8f, 0xc3, 0xd8, 0x2e, 0xf1, 0x36, 0x5d, 0xdf, 0x0a, 0xba, 0x33, 0xda, 0x75, 0xed, 0xd1, + 0xa1, 0x85, 0xc9, 0x83, 0xfd, 0xf2, 0xd8, 0xf3, 0xb2, 0x10, 0x47, 0xf5, 0xa8, 0x06, 0x17, 0xb6, + 0x83, 0xa0, 0x3d, 0xdf, 0x68, 0x10, 0xdf, 0x0f, 0x5b, 0xcc, 0x94, 0x58, 0xb7, 0x07, 0x0e, 0xf6, + 0xcb, 0x17, 0x6e, 0xaf, 0xaf, 0xaf, 0x25, 0xaa, 0x71, 0x56, 0x1f, 0xfd, 0x37, 0x35, 0x38, 0x1f, + 0x0e, 0x06, 0x93, 0x57, 0x3b, 0xc4, 0x0f, 0x7c, 0x84, 0xe1, 0x72, 0xcb, 0xd8, 0x5b, 0x75, 0x9d, + 0x95, 0x4e, 0x60, 0x04, 0x96, 0xd3, 0xac, 0x39, 0x5b, 0xb6, 0xd5, 0xdc, 0x0e, 0xc4, 0xd0, 0x66, + 0x0f, 0xf6, 0xcb, 0x97, 0x57, 0x32, 0x5b, 0xe0, 0x9c, 0x9e, 0x74, 0xd0, 0x2d, 0x63, 0x2f, 0x05, + 0x50, 0x19, 0xf4, 0x4a, 0xba, 0x1a, 0x67, 0xf5, 0xd1, 0x9f, 0x84, 0xa1, 0x79, 0xd3, 0x74, 0x1d, + 0xf4, 0x18, 0x8c, 0x10, 0xc7, 0xd8, 0xb4, 0x89, 0xc9, 0x06, 0x36, 0xba, 0x70, 0xee, 0xab, 0xfb, + 0xe5, 0xb7, 0x1c, 0xec, 0x97, 0x47, 0x16, 0x79, 0x31, 0x96, 0xf5, 0xfa, 0x2f, 0x94, 0x60, 0x98, + 0x75, 0xf2, 0xd1, 0xe7, 0x34, 0xb8, 0xb0, 0xd3, 0xd9, 0x24, 0x9e, 0x43, 0x02, 0xe2, 0x57, 0x0d, + 0x7f, 0x7b, 0xd3, 0x35, 0x3c, 0x0e, 0x62, 0xfc, 0xc9, 0x5b, 0x73, 0xc7, 0x3f, 0x7f, 0x73, 0x77, + 0xd2, 0xe0, 0xf8, 0x9c, 0x32, 0x2a, 0x70, 0x16, 0x72, 0xb4, 0x0b, 0x13, 0x4e, 0xd3, 0x72, 0xf6, + 0x6a, 0x4e, 0xd3, 0x23, 0xbe, 0xcf, 0xd6, 0x65, 0xfc, 0xc9, 0x0f, 0x16, 0x19, 0xcc, 0xaa, 0x02, + 0x67, 0x61, 0xfa, 0x60, 0xbf, 0x3c, 0xa1, 0x96, 0xe0, 0x18, 0x1e, 0xfd, 0x2f, 0x35, 0x38, 0x37, + 0x6f, 0xb6, 0x2c, 0xdf, 0xb7, 0x5c, 0x67, 0xcd, 0xee, 0x34, 0x2d, 0x07, 0x5d, 0x87, 0x41, 0xc7, + 0x68, 0x11, 0xb6, 0x20, 0x63, 0x0b, 0x13, 0x62, 0x4d, 0x07, 0x57, 0x8d, 0x16, 0xc1, 0xac, 0x06, + 0x3d, 0x07, 0xc3, 0x0d, 0xd7, 0xd9, 0xb2, 0x9a, 0x62, 0x9c, 0x3f, 0x3a, 0xc7, 0x4f, 0xc2, 0x9c, + 0x7a, 0x12, 0xd8, 0xf0, 0xc4, 0x09, 0x9a, 0xc3, 0xc6, 0xbd, 0xc5, 0xbd, 0x80, 0x38, 0x14, 0xcd, + 0x02, 0x1c, 0xec, 0x97, 0x87, 0x2b, 0x0c, 0x00, 0x16, 0x80, 0xd0, 0xa3, 0x30, 0x6a, 0x5a, 0x3e, + 0xff, 0x98, 0x03, 0xec, 0x63, 0x4e, 0x1c, 0xec, 0x97, 0x47, 0xab, 0xa2, 0x0c, 0x87, 0xb5, 0x68, + 0x19, 0x2e, 0xd2, 0x15, 0xe4, 0xfd, 0xea, 0xa4, 0xe1, 0x91, 0x80, 0x0e, 0x6d, 0x66, 0x90, 0x0d, + 0x77, 0xe6, 0x60, 0xbf, 0x7c, 0xf1, 0x4e, 0x46, 0x3d, 0xce, 0xec, 0xa5, 0x2f, 0xc1, 0xe8, 0xbc, + 0x4d, 0x3c, 0xba, 0xc1, 0xd0, 0x4d, 0x98, 0x22, 0x2d, 0xc3, 0xb2, 0x31, 0x69, 0x10, 0x6b, 0x97, + 0x78, 0xfe, 0x8c, 0x76, 0x7d, 0xe0, 0xd1, 0xb1, 0x05, 0x74, 0xb0, 0x5f, 0x9e, 0x5a, 0x8c, 0xd5, + 0xe0, 0x44, 0x4b, 0xfd, 0x93, 0x1a, 0x8c, 0xcf, 0x77, 0x4c, 0x2b, 0xe0, 0xf3, 0x42, 0x1e, 0x8c, + 0x1b, 0xf4, 0xe7, 0x9a, 0x6b, 0x5b, 0x8d, 0xae, 0xd8, 0x5c, 0xcf, 0x16, 0xf9, 0x9e, 0xf3, 0x11, + 0x98, 0x85, 0x73, 0x07, 0xfb, 0xe5, 0x71, 0xa5, 0x00, 0xab, 0x48, 0xf4, 0x6d, 0x50, 0xeb, 0xd0, + 0x87, 0x61, 0x82, 0x4f, 0x77, 0xc5, 0x68, 0x63, 0xb2, 0x25, 0xc6, 0xf0, 0xb0, 0xf2, 0xad, 0x24, + 0xa2, 0xb9, 0xbb, 0x9b, 0xaf, 0x90, 0x46, 0x80, 0xc9, 0x16, 0xf1, 0x88, 0xd3, 0x20, 0x7c, 0xdb, + 0x54, 0x94, 0xce, 0x38, 0x06, 0x4a, 0xff, 0x13, 0x4a, 0xc4, 0x76, 0x0d, 0xcb, 0x36, 0x36, 0x2d, + 0xdb, 0x0a, 0xba, 0x2f, 0xb9, 0x0e, 0x39, 0xc2, 0xbe, 0xd9, 0x80, 0x07, 0x3a, 0x8e, 0xc1, 0xfb, + 0xd9, 0x64, 0x85, 0xef, 0x94, 0xf5, 0x6e, 0x9b, 0xd0, 0x0d, 0x4f, 0x57, 0xfa, 0xea, 0xc1, 0x7e, + 0xf9, 0x81, 0x8d, 0xec, 0x26, 0x38, 0xaf, 0x2f, 0xa5, 0x57, 0x4a, 0xd5, 0xf3, 0xae, 0xdd, 0x69, + 0x09, 0xa8, 0x03, 0x0c, 0x2a, 0xa3, 0x57, 0x1b, 0x99, 0x2d, 0x70, 0x4e, 0x4f, 0xfd, 0xab, 0x25, + 0x98, 0x58, 0x30, 0x1a, 0x3b, 0x9d, 0xf6, 0x42, 0xa7, 0xb1, 0x43, 0x02, 0xf4, 0x51, 0x18, 0xa5, + 0x17, 0x8e, 0x69, 0x04, 0x86, 0x58, 0xc9, 0x1f, 0xcb, 0xdd, 0xf5, 0xec, 0x23, 0xd2, 0xd6, 0xd1, + 0xda, 0xae, 0x90, 0xc0, 0x58, 0x40, 0x62, 0x4d, 0x20, 0x2a, 0xc3, 0x21, 0x54, 0xb4, 0x05, 0x83, + 0x7e, 0x9b, 0x34, 0xc4, 0x99, 0xaa, 0x16, 0xd9, 0x2b, 0xea, 0x88, 0xeb, 0x6d, 0xd2, 0x88, 0xbe, + 0x02, 0xfd, 0x85, 0x19, 0x7c, 0xe4, 0xc0, 0xb0, 0x1f, 0x18, 0x41, 0xc7, 0x67, 0x07, 0x6d, 0xfc, + 0xc9, 0xa5, 0xbe, 0x31, 0x31, 0x68, 0x0b, 0x53, 0x02, 0xd7, 0x30, 0xff, 0x8d, 0x05, 0x16, 0xfd, + 0x3f, 0x68, 0x30, 0xad, 0x36, 0x5f, 0xb6, 0xfc, 0x00, 0xfd, 0x78, 0x6a, 0x39, 0xe7, 0x8e, 0xb6, + 0x9c, 0xb4, 0x37, 0x5b, 0xcc, 0x69, 0x81, 0x6e, 0x54, 0x96, 0x28, 0x4b, 0x49, 0x60, 0xc8, 0x0a, + 0x48, 0x8b, 0x6f, 0xab, 0x82, 0x74, 0x54, 0x1d, 0xf2, 0xc2, 0xa4, 0x40, 0x36, 0x54, 0xa3, 0x60, + 0x31, 0x87, 0xae, 0x7f, 0x14, 0x2e, 0xaa, 0xad, 0xd6, 0x3c, 0x77, 0xd7, 0x32, 0x89, 0x47, 0x4f, + 0x42, 0xd0, 0x6d, 0xa7, 0x4e, 0x02, 0xdd, 0x59, 0x98, 0xd5, 0xa0, 0xb7, 0xc3, 0xb0, 0x47, 0x9a, + 0x96, 0xeb, 0xb0, 0xaf, 0x3d, 0x16, 0xad, 0x1d, 0x66, 0xa5, 0x58, 0xd4, 0xea, 0xff, 0xab, 0x14, + 0x5f, 0x3b, 0xfa, 0x19, 0xd1, 0x2e, 0x8c, 0xb6, 0x05, 0x2a, 0xb1, 0x76, 0xb7, 0xfb, 0x9d, 0xa0, + 0x1c, 0x7a, 0xb4, 0xaa, 0xb2, 0x04, 0x87, 0xb8, 0x90, 0x05, 0x53, 0xf2, 0xff, 0x4a, 0x1f, 0xe4, + 0x9f, 0x91, 0xd3, 0xb5, 0x18, 0x20, 0x9c, 0x00, 0x8c, 0xd6, 0x61, 0xcc, 0x67, 0x44, 0x9a, 0x12, + 0xae, 0x81, 0x7c, 0xc2, 0x55, 0x97, 0x8d, 0x04, 0xe1, 0x3a, 0x2f, 0x86, 0x3f, 0x16, 0x56, 0xe0, + 0x08, 0x10, 0xbd, 0x64, 0x7c, 0x42, 0x4c, 0xe5, 0xba, 0x60, 0x97, 0x4c, 0x5d, 0x94, 0xe1, 0xb0, + 0x56, 0xff, 0xf2, 0x20, 0xa0, 0xf4, 0x16, 0x57, 0x57, 0x80, 0x97, 0x88, 0xf5, 0xef, 0x67, 0x05, + 0xc4, 0x69, 0x49, 0x00, 0x46, 0xaf, 0xc1, 0xa4, 0x6d, 0xf8, 0xc1, 0xdd, 0x36, 0xe5, 0x1e, 0xe5, + 0x46, 0x19, 0x7f, 0x72, 0xbe, 0xc8, 0x97, 0x5e, 0x56, 0x01, 0x2d, 0x9c, 0x3f, 0xd8, 0x2f, 0x4f, + 0xc6, 0x8a, 0x70, 0x1c, 0x15, 0x7a, 0x05, 0xc6, 0x68, 0xc1, 0xa2, 0xe7, 0xb9, 0x9e, 0x58, 0xfd, + 0x67, 0x8a, 0xe2, 0x65, 0x40, 0x38, 0x37, 0x1b, 0xfe, 0xc4, 0x11, 0x78, 0xf4, 0x21, 0x40, 0xee, + 0xa6, 0x4f, 0x19, 0x50, 0xf3, 0x16, 0x67, 0x95, 0xe9, 0x64, 0xe9, 0xd7, 0x19, 0x58, 0x98, 0x15, + 0x5f, 0x13, 0xdd, 0x4d, 0xb5, 0xc0, 0x19, 0xbd, 0xd0, 0x0e, 0xa0, 0x90, 0xdd, 0x0e, 0x37, 0xc0, + 0xcc, 0xd0, 0xd1, 0xb7, 0xcf, 0x65, 0x8a, 0xec, 0x56, 0x0a, 0x04, 0xce, 0x00, 0xab, 0xff, 0x9b, + 0x12, 0x8c, 0xf3, 0x2d, 0xb2, 0xe8, 0x04, 0x5e, 0xf7, 0x0c, 0x2e, 0x08, 0x12, 0xbb, 0x20, 0x2a, + 0xc5, 0xcf, 0x3c, 0x1b, 0x70, 0xee, 0xfd, 0xd0, 0x4a, 0xdc, 0x0f, 0x8b, 0xfd, 0x22, 0xea, 0x7d, + 0x3d, 0xfc, 0x7b, 0x0d, 0xce, 0x29, 0xad, 0xcf, 0xe0, 0x76, 0x30, 0xe3, 0xb7, 0xc3, 0xb3, 0x7d, + 0xce, 0x2f, 0xe7, 0x72, 0x70, 0x63, 0xd3, 0x62, 0x84, 0xfb, 0x49, 0x80, 0x4d, 0x46, 0x4e, 0x56, + 0x23, 0x3e, 0x29, 0xfc, 0xe4, 0x0b, 0x61, 0x0d, 0x56, 0x5a, 0xc5, 0x68, 0x56, 0xa9, 0x27, 0xcd, + 0xfa, 0xaf, 0x03, 0x70, 0x3e, 0xb5, 0xec, 0x69, 0x3a, 0xa2, 0xfd, 0x80, 0xe8, 0x48, 0xe9, 0x07, + 0x41, 0x47, 0x06, 0x0a, 0xd1, 0x91, 0x23, 0xdf, 0x13, 0xc8, 0x03, 0xd4, 0xb2, 0x9a, 0xbc, 0x5b, + 0x3d, 0x30, 0xbc, 0x60, 0xdd, 0x6a, 0x11, 0x41, 0x71, 0x7e, 0xe4, 0x68, 0x5b, 0x96, 0xf6, 0xe0, + 0x84, 0x67, 0x25, 0x05, 0x09, 0x67, 0x40, 0xd7, 0xbf, 0x39, 0x08, 0x50, 0x99, 0xc7, 0x6e, 0xc0, + 0x07, 0xfb, 0x2c, 0x0c, 0xb5, 0xb7, 0x0d, 0x5f, 0xee, 0xa7, 0xc7, 0xe4, 0x66, 0x5c, 0xa3, 0x85, + 0xf7, 0xf7, 0xcb, 0x33, 0x15, 0x8f, 0x98, 0xc4, 0x09, 0x2c, 0xc3, 0xf6, 0x65, 0x27, 0x56, 0x87, + 0x79, 0x3f, 0x3a, 0x07, 0xba, 0x8c, 0x15, 0xb7, 0xd5, 0xb6, 0x09, 0xad, 0x65, 0x73, 0x28, 0x15, + 0x9b, 0xc3, 0x72, 0x0a, 0x12, 0xce, 0x80, 0x2e, 0x71, 0xd6, 0x1c, 0x2b, 0xb0, 0x8c, 0x10, 0xe7, + 0x40, 0x71, 0x9c, 0x71, 0x48, 0x38, 0x03, 0x3a, 0x7a, 0x43, 0x83, 0xd9, 0x78, 0xf1, 0x92, 0xe5, + 0x58, 0xfe, 0x36, 0x31, 0x19, 0xf2, 0xc1, 0x63, 0x23, 0xbf, 0x76, 0xb0, 0x5f, 0x9e, 0x5d, 0xce, + 0x85, 0x88, 0x7b, 0x60, 0x43, 0x9f, 0xd5, 0xe0, 0x6a, 0x62, 0x5d, 0x3c, 0xab, 0xd9, 0x24, 0x9e, + 0x18, 0xcd, 0xf1, 0xb7, 0x50, 0xf9, 0x60, 0xbf, 0x7c, 0x75, 0x39, 0x1f, 0x24, 0xee, 0x85, 0x4f, + 0xff, 0x8a, 0x06, 0x03, 0x15, 0x5c, 0x43, 0x8f, 0xc7, 0x84, 0xb8, 0x07, 0x54, 0x21, 0xee, 0xfe, + 0x7e, 0x79, 0xa4, 0x82, 0x6b, 0x8a, 0x3c, 0xf7, 0x59, 0x0d, 0xce, 0x37, 0x5c, 0x27, 0x30, 0xe8, + 0xb8, 0x30, 0xe7, 0x74, 0x24, 0x55, 0x2d, 0x24, 0xbf, 0x54, 0x12, 0xc0, 0x16, 0xae, 0x88, 0x01, + 0x9c, 0x4f, 0xd6, 0xf8, 0x38, 0x8d, 0x59, 0xff, 0xb6, 0x06, 0x13, 0x15, 0xdb, 0xed, 0x98, 0x6b, + 0x9e, 0xbb, 0x65, 0xd9, 0xe4, 0xcd, 0x21, 0xb4, 0xa9, 0x23, 0xce, 0xbb, 0x94, 0x99, 0x10, 0xa5, + 0x36, 0x7c, 0x93, 0x08, 0x51, 0xea, 0x90, 0x73, 0xee, 0xc9, 0x5f, 0x18, 0x89, 0xcf, 0x8c, 0xdd, + 0x94, 0x8f, 0xc2, 0x68, 0xc3, 0x58, 0xe8, 0x38, 0xa6, 0x1d, 0x4a, 0x51, 0x74, 0x94, 0x95, 0x79, + 0x5e, 0x86, 0xc3, 0x5a, 0xf4, 0x1a, 0x40, 0xa4, 0x50, 0x13, 0x9f, 0x61, 0xa9, 0x3f, 0x25, 0x5e, + 0x9d, 0x04, 0x81, 0xe5, 0x34, 0xfd, 0xe8, 0xd3, 0x47, 0x75, 0x58, 0xc1, 0x86, 0x3e, 0x0e, 0x93, + 0x62, 0x91, 0x6b, 0x2d, 0xa3, 0x29, 0xf4, 0x0d, 0x05, 0x57, 0x6a, 0x45, 0x01, 0xb4, 0x70, 0x49, + 0x20, 0x9e, 0x54, 0x4b, 0x7d, 0x1c, 0xc7, 0x86, 0xba, 0x30, 0xd1, 0x52, 0x75, 0x28, 0x83, 0xc5, + 0xd9, 0x19, 0x45, 0x9f, 0xb2, 0x70, 0x51, 0x20, 0x9f, 0x88, 0x69, 0x5f, 0x62, 0xa8, 0x32, 0x44, + 0xc1, 0xa1, 0xd3, 0x12, 0x05, 0x09, 0x8c, 0x70, 0x61, 0xd8, 0x9f, 0x19, 0x66, 0x13, 0xbc, 0x59, + 0x64, 0x82, 0x5c, 0xae, 0x8e, 0x34, 0xc4, 0xfc, 0xb7, 0x8f, 0x25, 0x6c, 0xb4, 0x0b, 0x13, 0xf4, + 0x56, 0xaf, 0x13, 0x9b, 0x34, 0x02, 0xd7, 0x9b, 0x19, 0x29, 0xae, 0x81, 0xad, 0x2b, 0x70, 0xb8, + 0x2a, 0x4d, 0x2d, 0xc1, 0x31, 0x3c, 0xa1, 0xae, 0x60, 0x34, 0x57, 0x57, 0xd0, 0x81, 0xf1, 0x5d, + 0x45, 0xa7, 0x35, 0xc6, 0x16, 0xe1, 0x03, 0x45, 0x06, 0x16, 0x29, 0xb8, 0x16, 0x2e, 0x08, 0x44, + 0xe3, 0xaa, 0x32, 0x4c, 0xc5, 0xa3, 0xff, 0x43, 0x80, 0xf3, 0x15, 0xbb, 0xe3, 0x07, 0xc4, 0x9b, + 0x17, 0x8f, 0x44, 0xc4, 0x43, 0x9f, 0xd2, 0xe0, 0x32, 0xfb, 0xb7, 0xea, 0xde, 0x73, 0xaa, 0xc4, + 0x36, 0xba, 0xf3, 0x5b, 0xb4, 0x85, 0x69, 0x1e, 0x8f, 0x02, 0x55, 0x3b, 0x82, 0x8b, 0x64, 0xca, + 0xb9, 0x7a, 0x26, 0x44, 0x9c, 0x83, 0x09, 0xfd, 0xac, 0x06, 0x57, 0x32, 0xaa, 0xaa, 0xc4, 0x26, + 0x81, 0xe4, 0x5c, 0x8e, 0x3b, 0x8e, 0x87, 0x0e, 0xf6, 0xcb, 0x57, 0xea, 0x79, 0x40, 0x71, 0x3e, + 0x3e, 0xf4, 0x77, 0x35, 0x98, 0xcd, 0xa8, 0x5d, 0x32, 0x2c, 0xbb, 0xe3, 0x49, 0xa6, 0xe6, 0xb8, + 0xc3, 0x61, 0xbc, 0x45, 0x3d, 0x17, 0x2a, 0xee, 0x81, 0x11, 0x7d, 0x02, 0x2e, 0x85, 0xb5, 0x1b, + 0x8e, 0x43, 0x88, 0x19, 0x63, 0x71, 0x8e, 0x3b, 0x94, 0x2b, 0x07, 0xfb, 0xe5, 0x4b, 0xf5, 0x2c, + 0x80, 0x38, 0x1b, 0x0f, 0x6a, 0xc2, 0x43, 0x51, 0x45, 0x60, 0xd9, 0xd6, 0x6b, 0x9c, 0x0b, 0xdb, + 0xf6, 0x88, 0xbf, 0xed, 0xda, 0x26, 0x23, 0x16, 0xda, 0xc2, 0x5b, 0x0f, 0xf6, 0xcb, 0x0f, 0xd5, + 0x7b, 0x35, 0xc4, 0xbd, 0xe1, 0x20, 0x13, 0x26, 0xfc, 0x86, 0xe1, 0xd4, 0x9c, 0x80, 0x78, 0xbb, + 0x86, 0x3d, 0x33, 0x5c, 0x68, 0x82, 0xfc, 0x88, 0x2a, 0x70, 0x70, 0x0c, 0x2a, 0x7a, 0x2f, 0x8c, + 0x92, 0xbd, 0xb6, 0xe1, 0x98, 0x84, 0x93, 0x85, 0xb1, 0x85, 0x07, 0xe9, 0x65, 0xb4, 0x28, 0xca, + 0xee, 0xef, 0x97, 0x27, 0xe4, 0xff, 0x2b, 0xae, 0x49, 0x70, 0xd8, 0x1a, 0x7d, 0x0c, 0x2e, 0xb2, + 0xf7, 0x30, 0x93, 0x30, 0x22, 0xe7, 0x4b, 0x46, 0x77, 0xb4, 0xd0, 0x38, 0xd9, 0xdb, 0xc6, 0x4a, + 0x06, 0x3c, 0x9c, 0x89, 0x85, 0x7e, 0x86, 0x96, 0xb1, 0x77, 0xcb, 0x33, 0x1a, 0x64, 0xab, 0x63, + 0xaf, 0x13, 0xaf, 0x65, 0x39, 0x5c, 0x96, 0x20, 0x0d, 0xd7, 0x31, 0x29, 0x29, 0xd1, 0x1e, 0x1d, + 0xe2, 0x9f, 0x61, 0xa5, 0x57, 0x43, 0xdc, 0x1b, 0x0e, 0x7a, 0x17, 0x4c, 0x58, 0x4d, 0xc7, 0xf5, + 0xc8, 0xba, 0x61, 0x39, 0x81, 0x3f, 0x03, 0x4c, 0xed, 0xce, 0x96, 0xb5, 0xa6, 0x94, 0xe3, 0x58, + 0x2b, 0xb4, 0x0b, 0xc8, 0x21, 0xf7, 0xd6, 0x5c, 0x93, 0x6d, 0x81, 0x8d, 0x36, 0xdb, 0xc8, 0x33, + 0xe3, 0x85, 0x96, 0x86, 0xc9, 0x01, 0xab, 0x29, 0x68, 0x38, 0x03, 0x03, 0x5a, 0x02, 0xd4, 0x32, + 0xf6, 0x16, 0x5b, 0xed, 0xa0, 0xbb, 0xd0, 0xb1, 0x77, 0x04, 0xd5, 0x98, 0x60, 0x6b, 0xc1, 0xe5, + 0xb0, 0x54, 0x2d, 0xce, 0xe8, 0xa1, 0xef, 0x0f, 0xc0, 0x58, 0xc5, 0x75, 0x4c, 0x8b, 0x89, 0x61, + 0x4f, 0xc4, 0x74, 0xbe, 0x0f, 0xa9, 0x74, 0xfc, 0xfe, 0x7e, 0x79, 0x32, 0x6c, 0xa8, 0x10, 0xf6, + 0xa7, 0x43, 0x45, 0x0b, 0x17, 0xec, 0xdf, 0x1a, 0xd7, 0x90, 0xdc, 0xdf, 0x2f, 0x9f, 0x0b, 0xbb, + 0xc5, 0x95, 0x26, 0x74, 0xed, 0x28, 0x37, 0xbf, 0xee, 0x19, 0x8e, 0x6f, 0xf5, 0x21, 0x3f, 0x85, + 0x92, 0xf1, 0x72, 0x0a, 0x1a, 0xce, 0xc0, 0x80, 0x5e, 0x81, 0x29, 0x5a, 0xba, 0xd1, 0x36, 0x8d, + 0x80, 0x14, 0x14, 0x9b, 0x2e, 0x0b, 0x9c, 0x53, 0xcb, 0x31, 0x48, 0x38, 0x01, 0x99, 0xeb, 0xc8, + 0x0d, 0xdf, 0x75, 0x18, 0xb9, 0x88, 0xe9, 0xc8, 0x69, 0x29, 0x16, 0xb5, 0xe8, 0x31, 0x18, 0x69, + 0x11, 0xdf, 0x37, 0x9a, 0x84, 0x9d, 0xff, 0xb1, 0xe8, 0x92, 0x5f, 0xe1, 0xc5, 0x58, 0xd6, 0xa3, + 0x77, 0xc0, 0x50, 0xc3, 0x35, 0x89, 0x3f, 0x33, 0xc2, 0x76, 0x28, 0xfd, 0xda, 0x43, 0x15, 0x5a, + 0x70, 0x7f, 0xbf, 0x3c, 0xc6, 0xf4, 0x08, 0xf4, 0x17, 0xe6, 0x8d, 0xf4, 0x5f, 0xa2, 0x3c, 0x77, + 0x42, 0xc8, 0x38, 0x82, 0x6e, 0xff, 0xec, 0xd4, 0xe4, 0xfa, 0xe7, 0xa9, 0xc0, 0xe3, 0x3a, 0x81, + 0xe7, 0xda, 0x6b, 0xb6, 0xe1, 0x10, 0xf4, 0xd3, 0x1a, 0x4c, 0x6f, 0x5b, 0xcd, 0x6d, 0xf5, 0x71, + 0x4e, 0x5c, 0xcc, 0x85, 0x64, 0x93, 0xdb, 0x09, 0x58, 0x0b, 0x17, 0x0f, 0xf6, 0xcb, 0xd3, 0xc9, + 0x52, 0x9c, 0xc2, 0xa9, 0x7f, 0xa6, 0x04, 0x17, 0xc5, 0xc8, 0x6c, 0x7a, 0x53, 0xb6, 0x6d, 0xb7, + 0xdb, 0x22, 0xce, 0x59, 0xbc, 0xa3, 0xc9, 0x2f, 0x54, 0xca, 0xfd, 0x42, 0xad, 0xd4, 0x17, 0x1a, + 0x28, 0xf2, 0x85, 0xc2, 0x8d, 0x7c, 0xc8, 0x57, 0xfa, 0x53, 0x0d, 0x66, 0xb2, 0xd6, 0xe2, 0x0c, + 0x64, 0xb8, 0x56, 0x5c, 0x86, 0xbb, 0x5d, 0x54, 0x28, 0x4f, 0x0e, 0x3d, 0x47, 0x96, 0xfb, 0x7e, + 0x09, 0x2e, 0x47, 0xcd, 0x6b, 0x8e, 0x1f, 0x18, 0xb6, 0xcd, 0xd5, 0x54, 0xa7, 0xff, 0xdd, 0xdb, + 0x31, 0x51, 0x7c, 0xb5, 0xbf, 0xa9, 0xaa, 0x63, 0xcf, 0xd5, 0x94, 0xef, 0x25, 0x34, 0xe5, 0x6b, + 0x27, 0x88, 0xb3, 0xb7, 0xd2, 0xfc, 0xbf, 0x6b, 0x30, 0x9b, 0xdd, 0xf1, 0x0c, 0x36, 0x95, 0x1b, + 0xdf, 0x54, 0x1f, 0x3a, 0xb9, 0x59, 0xe7, 0x6c, 0xab, 0xdf, 0x2c, 0xe5, 0xcd, 0x96, 0x29, 0x0b, + 0xb6, 0xe0, 0x1c, 0x95, 0xe2, 0xfc, 0x40, 0xa8, 0x74, 0x8f, 0x67, 0xeb, 0x20, 0x75, 0x5c, 0xe7, + 0x70, 0x1c, 0x06, 0x4e, 0x02, 0x45, 0xab, 0x30, 0x42, 0x45, 0x37, 0x0a, 0xbf, 0x74, 0x74, 0xf8, + 0xe1, 0x6d, 0x54, 0xe7, 0x7d, 0xb1, 0x04, 0x82, 0x7e, 0x1c, 0x26, 0xcd, 0xf0, 0x44, 0x1d, 0xf2, + 0xd0, 0x99, 0x84, 0xca, 0x94, 0xef, 0x55, 0xb5, 0x37, 0x8e, 0x03, 0xd3, 0xff, 0x42, 0x83, 0x07, + 0x7b, 0xed, 0x2d, 0xf4, 0x2a, 0x40, 0x43, 0xb2, 0x17, 0xdc, 0xd4, 0xa5, 0xa0, 0x7a, 0x3e, 0x64, + 0x52, 0xa2, 0x03, 0x1a, 0x16, 0xf9, 0x58, 0x41, 0x92, 0xf1, 0x7e, 0x5a, 0x3a, 0xa5, 0xf7, 0x53, + 0xfd, 0x7f, 0x68, 0x2a, 0x29, 0x52, 0xbf, 0xed, 0x9b, 0x8d, 0x14, 0xa9, 0x63, 0xcf, 0xd5, 0x0f, + 0x7e, 0xab, 0x04, 0xd7, 0xb3, 0xbb, 0x28, 0x77, 0xef, 0x07, 0x61, 0xb8, 0xcd, 0xed, 0x91, 0x06, + 0xd8, 0xdd, 0xf8, 0x28, 0xa5, 0x2c, 0xdc, 0x5a, 0xe8, 0xfe, 0x7e, 0x79, 0x36, 0x8b, 0xd0, 0x0b, + 0x3b, 0x23, 0xd1, 0x0f, 0x59, 0x09, 0x2d, 0x09, 0xe7, 0xfe, 0xde, 0x79, 0x44, 0xe2, 0x62, 0x6c, + 0x12, 0xfb, 0xc8, 0x8a, 0x91, 0x4f, 0x6a, 0x30, 0x15, 0xdb, 0xd1, 0xfe, 0xcc, 0x10, 0xdb, 0xa3, + 0x85, 0x9e, 0xae, 0x62, 0x47, 0x25, 0xba, 0xb9, 0x63, 0xc5, 0x3e, 0x4e, 0x20, 0x4c, 0x90, 0x59, + 0x75, 0x55, 0xdf, 0x74, 0x64, 0x56, 0x1d, 0x7c, 0x0e, 0x99, 0xfd, 0xc5, 0x52, 0xde, 0x6c, 0x19, + 0x99, 0xbd, 0x07, 0x63, 0xd2, 0x52, 0x57, 0x92, 0x8b, 0xa5, 0x7e, 0xc7, 0xc4, 0xc1, 0x45, 0x66, + 0x1b, 0xb2, 0xc4, 0xc7, 0x11, 0x2e, 0xf4, 0x53, 0x1a, 0x40, 0xf4, 0x61, 0xc4, 0xa1, 0x5a, 0x3f, + 0xb9, 0xe5, 0x50, 0xd8, 0x9a, 0x29, 0x7a, 0xa4, 0x95, 0x4d, 0xa1, 0xe0, 0xd5, 0xff, 0xcf, 0x00, + 0xa0, 0xf4, 0xd8, 0x29, 0xbb, 0xb9, 0x63, 0x39, 0x66, 0x52, 0x20, 0xb8, 0x63, 0x39, 0x26, 0x66, + 0x35, 0x47, 0x60, 0x48, 0x9f, 0x81, 0x73, 0x4d, 0xdb, 0xdd, 0x34, 0x6c, 0xbb, 0x2b, 0x4c, 0x57, + 0x85, 0x11, 0xe4, 0x05, 0x7a, 0x31, 0xdd, 0x8a, 0x57, 0xe1, 0x64, 0x5b, 0xd4, 0x86, 0x69, 0x8f, + 0x8a, 0xe2, 0x0d, 0xcb, 0x66, 0xa2, 0x93, 0xdb, 0x09, 0x0a, 0xea, 0x7a, 0x18, 0x7b, 0x8f, 0x13, + 0xb0, 0x70, 0x0a, 0x3a, 0x7a, 0x1b, 0x8c, 0xb4, 0x3d, 0xab, 0x65, 0x78, 0x5d, 0x26, 0x9c, 0x8d, + 0x2e, 0x8c, 0xd3, 0x1b, 0x6e, 0x8d, 0x17, 0x61, 0x59, 0x87, 0x3e, 0x06, 0x63, 0xb6, 0xb5, 0x45, + 0x1a, 0xdd, 0x86, 0x4d, 0x84, 0x72, 0xe6, 0xee, 0xc9, 0x6c, 0x99, 0x65, 0x09, 0x56, 0x3c, 0x09, + 0xcb, 0x9f, 0x38, 0x42, 0x88, 0x6a, 0x70, 0xe1, 0x9e, 0xeb, 0xed, 0x10, 0xcf, 0x26, 0xbe, 0x5f, + 0xef, 0xb4, 0xdb, 0xae, 0x17, 0x10, 0x93, 0xa9, 0x70, 0x46, 0xb9, 0x7d, 0xee, 0x0b, 0xe9, 0x6a, + 0x9c, 0xd5, 0x47, 0x7f, 0xa3, 0x04, 0x57, 0x7b, 0x0c, 0x02, 0x61, 0x7a, 0x36, 0xc4, 0x1a, 0x89, + 0x9d, 0xf0, 0x2e, 0xbe, 0x9f, 0x45, 0xe1, 0xfd, 0xfd, 0xf2, 0xc3, 0x3d, 0x00, 0xd4, 0xe9, 0x56, + 0x24, 0xcd, 0x2e, 0x8e, 0xc0, 0xa0, 0x1a, 0x0c, 0x9b, 0x91, 0x46, 0x73, 0x6c, 0xe1, 0x09, 0x4a, + 0xad, 0xb9, 0xee, 0xe1, 0xa8, 0xd0, 0x04, 0x00, 0xb4, 0x0c, 0x23, 0xfc, 0x21, 0x99, 0x08, 0xca, + 0xff, 0x24, 0x13, 0x8f, 0x79, 0xd1, 0x51, 0x81, 0x49, 0x10, 0xfa, 0xff, 0xd6, 0x60, 0xa4, 0xe2, + 0x7a, 0xa4, 0xba, 0x5a, 0x47, 0x5d, 0x18, 0x57, 0x5c, 0x08, 0x04, 0x15, 0x2c, 0x48, 0x16, 0x18, + 0xc4, 0xf9, 0x08, 0x9a, 0x34, 0x77, 0x0d, 0x0b, 0xb0, 0x8a, 0x0b, 0xbd, 0x4a, 0xd7, 0xfc, 0x9e, + 0x67, 0x05, 0x14, 0x71, 0x3f, 0xef, 0x6f, 0x1c, 0x31, 0x96, 0xb0, 0xf8, 0x8e, 0x0a, 0x7f, 0xe2, + 0x08, 0x8b, 0xbe, 0x46, 0x29, 0x40, 0x72, 0x98, 0xe8, 0x26, 0x0c, 0xb6, 0x5c, 0x53, 0x7e, 0xf7, + 0xb7, 0xcb, 0xf3, 0xbd, 0xe2, 0x9a, 0x74, 0x6d, 0x2f, 0xa7, 0x7b, 0x30, 0x2d, 0x21, 0xeb, 0xa3, + 0xaf, 0xc2, 0x74, 0x12, 0x3f, 0xba, 0x09, 0x53, 0x0d, 0xb7, 0xd5, 0x72, 0x9d, 0x7a, 0x67, 0x6b, + 0xcb, 0xda, 0x23, 0x31, 0x3b, 0xe4, 0x4a, 0xac, 0x06, 0x27, 0x5a, 0xea, 0x5f, 0xd2, 0x60, 0x80, + 0x7e, 0x17, 0x1d, 0x86, 0x4d, 0xb7, 0x65, 0x58, 0x8e, 0x18, 0x15, 0xb3, 0xb9, 0xae, 0xb2, 0x12, + 0x2c, 0x6a, 0x50, 0x1b, 0xc6, 0x24, 0xd3, 0xd4, 0x97, 0x2d, 0x4c, 0x75, 0xb5, 0x1e, 0xda, 0x0f, + 0x86, 0x94, 0x5c, 0x96, 0xf8, 0x38, 0x42, 0xa2, 0x1b, 0x70, 0xbe, 0xba, 0x5a, 0xaf, 0x39, 0x0d, + 0xbb, 0x63, 0x92, 0xc5, 0x3d, 0xf6, 0x87, 0xd2, 0x12, 0x8b, 0x97, 0x88, 0x79, 0x32, 0x5a, 0x22, + 0x1a, 0x61, 0x59, 0x47, 0x9b, 0x11, 0xde, 0x43, 0x18, 0x0b, 0xb3, 0x66, 0x02, 0x08, 0x96, 0x75, + 0xfa, 0xb7, 0x4b, 0x30, 0xae, 0x0c, 0x08, 0xd9, 0x30, 0xc2, 0xa7, 0x2b, 0x6d, 0xf5, 0x16, 0x0b, + 0x4e, 0x31, 0x3e, 0x6a, 0x8e, 0x9d, 0x2f, 0xa8, 0x8f, 0x25, 0x0a, 0x95, 0x2e, 0x96, 0x7a, 0xd0, + 0xc5, 0x39, 0x00, 0x3f, 0xb2, 0x5c, 0xe7, 0x47, 0x92, 0x5d, 0x3d, 0x8a, 0xbd, 0xba, 0xd2, 0x02, + 0x3d, 0x28, 0x6e, 0x10, 0x6e, 0x8c, 0x32, 0x9a, 0xb8, 0x3d, 0xb6, 0x60, 0xe8, 0x35, 0xd7, 0x21, + 0xbe, 0x78, 0x83, 0x3b, 0xa1, 0x09, 0x8e, 0x51, 0xfe, 0xe0, 0x25, 0x0a, 0x17, 0x73, 0xf0, 0xfa, + 0x2f, 0x6b, 0x00, 0x55, 0x23, 0x30, 0xf8, 0x93, 0xd1, 0x11, 0xec, 0xbd, 0x1f, 0x8c, 0x5d, 0x7c, + 0xa3, 0x29, 0x1b, 0xd8, 0x41, 0xdf, 0x7a, 0x4d, 0x4e, 0x3f, 0x64, 0xa8, 0x39, 0xf4, 0xba, 0xf5, + 0x1a, 0xc1, 0xac, 0x1e, 0x3d, 0x0e, 0x63, 0xc4, 0x69, 0x78, 0xdd, 0x36, 0x25, 0xde, 0x83, 0x6c, + 0x55, 0xd9, 0x09, 0x5d, 0x94, 0x85, 0x38, 0xaa, 0xd7, 0x9f, 0x80, 0xb8, 0x54, 0x74, 0xf8, 0x28, + 0xf5, 0xef, 0x0e, 0xc2, 0x95, 0xc5, 0xf5, 0x4a, 0x55, 0xc0, 0xb3, 0x5c, 0xe7, 0x0e, 0xe9, 0xfe, + 0xb5, 0x79, 0xcd, 0x5f, 0x9b, 0xd7, 0x9c, 0xa0, 0x79, 0xcd, 0xb3, 0x30, 0x1d, 0x6d, 0x2f, 0xf1, + 0xb0, 0xfd, 0x78, 0x92, 0x9f, 0x1e, 0x93, 0x37, 0x4f, 0x9a, 0x07, 0xd6, 0xef, 0x6b, 0x30, 0xbd, + 0xb8, 0xd7, 0xb6, 0x3c, 0xe6, 0xa8, 0x40, 0x3c, 0x2a, 0x07, 0xa3, 0xc7, 0x60, 0x64, 0x97, 0xff, + 0x2b, 0x76, 0x67, 0xa8, 0x6b, 0x10, 0x2d, 0xb0, 0xac, 0x47, 0x5b, 0x30, 0x45, 0x58, 0x77, 0xc6, + 0xf0, 0x1a, 0x41, 0x91, 0x1d, 0xc8, 0xfd, 0x60, 0x62, 0x50, 0x70, 0x02, 0x2a, 0xaa, 0xc3, 0x54, + 0xc3, 0x36, 0x7c, 0xdf, 0xda, 0xb2, 0x1a, 0x91, 0x09, 0xde, 0xd8, 0xc2, 0xe3, 0xec, 0xee, 0x8a, + 0xd5, 0xdc, 0xdf, 0x2f, 0x5f, 0x12, 0xe3, 0x8c, 0x57, 0xe0, 0x04, 0x08, 0xfd, 0x0b, 0x25, 0x98, + 0x5c, 0xdc, 0x6b, 0xbb, 0x7e, 0xc7, 0x23, 0xac, 0xe9, 0x19, 0x88, 0xf0, 0x8f, 0xc1, 0xc8, 0xb6, + 0xe1, 0x98, 0x36, 0xf1, 0x04, 0xf9, 0x0a, 0xd7, 0xf6, 0x36, 0x2f, 0xc6, 0xb2, 0x1e, 0xbd, 0x0e, + 0xe0, 0x37, 0xb6, 0x89, 0xd9, 0x61, 0x2c, 0x10, 0x3f, 0x65, 0x77, 0x8a, 0x10, 0xe1, 0xd8, 0x1c, + 0xeb, 0x21, 0x48, 0x71, 0x35, 0x84, 0xbf, 0xb1, 0x82, 0x4e, 0xff, 0x8e, 0x06, 0xe7, 0x63, 0xfd, + 0xce, 0x40, 0x32, 0xdd, 0x8a, 0x4b, 0xa6, 0xf3, 0x7d, 0xcf, 0x35, 0x47, 0x20, 0xfd, 0x99, 0x12, + 0x3c, 0x90, 0xb3, 0x26, 0x29, 0x7b, 0x0d, 0xed, 0x8c, 0xec, 0x35, 0x3a, 0x30, 0x1e, 0xb8, 0xb6, + 0xb0, 0x14, 0x95, 0x2b, 0x50, 0xc8, 0x1a, 0x63, 0x3d, 0x04, 0x13, 0x59, 0x63, 0x44, 0x65, 0x3e, + 0x56, 0xf1, 0xe8, 0x5f, 0xd1, 0x60, 0x2c, 0x54, 0x80, 0xfd, 0x50, 0x3d, 0x42, 0x1d, 0xdd, 0x75, + 0x4f, 0xff, 0xc3, 0x12, 0x5c, 0x0e, 0x61, 0x4b, 0x32, 0x57, 0x0f, 0x28, 0xdd, 0x38, 0x5c, 0x8a, + 0x7e, 0x50, 0x5c, 0xe4, 0x0a, 0x33, 0xa1, 0xb0, 0x1a, 0x94, 0xf1, 0xea, 0x78, 0x6d, 0xd7, 0x97, + 0xfc, 0x04, 0x67, 0xbc, 0x78, 0x11, 0x96, 0x75, 0x68, 0x15, 0x86, 0x7c, 0x8a, 0x4f, 0x5c, 0x47, + 0xc7, 0x5c, 0x0d, 0xc6, 0x12, 0xb1, 0xf1, 0x62, 0x0e, 0x06, 0xbd, 0xae, 0xd2, 0xf0, 0xa1, 0xe2, + 0x7a, 0x1a, 0x3a, 0x13, 0x53, 0xae, 0x48, 0x86, 0x3b, 0x4b, 0xe6, 0x9d, 0xb0, 0x0c, 0xd3, 0xc2, + 0xe4, 0x83, 0x6f, 0x1b, 0xa7, 0x41, 0xd0, 0x7b, 0x63, 0x3b, 0xe3, 0x91, 0xc4, 0x33, 0xf4, 0xc5, + 0x64, 0xfb, 0x68, 0xc7, 0xe8, 0x3e, 0x8c, 0xde, 0x12, 0x83, 0x44, 0xb3, 0x50, 0xb2, 0xe4, 0xb7, + 0x00, 0x01, 0xa3, 0x54, 0xab, 0xe2, 0x92, 0x65, 0x86, 0x0c, 0x55, 0x29, 0x97, 0xed, 0x53, 0xae, + 0xa5, 0x81, 0xde, 0xd7, 0x92, 0xfe, 0xbd, 0x12, 0x5c, 0x94, 0x58, 0xe5, 0x1c, 0xab, 0xe2, 0x11, + 0xef, 0x10, 0xe6, 0xf2, 0x70, 0xad, 0xca, 0x5d, 0x18, 0x64, 0x04, 0xb0, 0xd0, 0xe3, 0x5e, 0x08, + 0x90, 0x0e, 0x07, 0x33, 0x40, 0xe8, 0x63, 0x30, 0x6c, 0x1b, 0x9b, 0xc4, 0x96, 0xa6, 0x76, 0x85, + 0x74, 0x50, 0x59, 0xd3, 0xe5, 0xaa, 0x51, 0x9f, 0xbb, 0x13, 0x84, 0x6f, 0x3e, 0xbc, 0x10, 0x0b, + 0x9c, 0xb3, 0x4f, 0xc3, 0xb8, 0xd2, 0x0c, 0x4d, 0xc3, 0xc0, 0x0e, 0xe1, 0x8f, 0xbb, 0x63, 0x98, + 0xfe, 0x8b, 0x2e, 0xc2, 0xd0, 0xae, 0x61, 0x77, 0xc4, 0x92, 0x60, 0xfe, 0xe3, 0x66, 0xe9, 0xbd, + 0x9a, 0xfe, 0xeb, 0x1a, 0x8c, 0xdf, 0xb6, 0x36, 0x89, 0xc7, 0xed, 0x36, 0x98, 0x2c, 0x15, 0xf3, + 0x9c, 0x1e, 0xcf, 0xf2, 0x9a, 0x46, 0x7b, 0x30, 0x26, 0x6e, 0x9a, 0xd0, 0xac, 0xf7, 0x56, 0xb1, + 0x57, 0xe4, 0x10, 0xb5, 0xa0, 0xe0, 0xaa, 0xa7, 0x96, 0xc4, 0x80, 0x23, 0x64, 0xfa, 0xeb, 0x70, + 0x21, 0xa3, 0x13, 0x2a, 0xb3, 0xe3, 0xeb, 0x05, 0x62, 0x5b, 0xc8, 0xf3, 0xe8, 0x05, 0x98, 0x97, + 0xa3, 0x2b, 0x30, 0x40, 0x1c, 0x53, 0xec, 0x89, 0x91, 0x83, 0xfd, 0xf2, 0xc0, 0xa2, 0x63, 0x62, + 0x5a, 0x46, 0xc9, 0x94, 0xed, 0xc6, 0x78, 0x12, 0x46, 0xa6, 0x96, 0x45, 0x19, 0x0e, 0x6b, 0xd9, + 0xbb, 0x7f, 0xf2, 0x89, 0x9b, 0xb2, 0xb7, 0xd3, 0x5b, 0x89, 0xd3, 0xd3, 0xcf, 0xcb, 0x7a, 0xf2, + 0x24, 0x2e, 0xcc, 0x88, 0x05, 0x49, 0x9d, 0x69, 0x9c, 0xc2, 0xab, 0xff, 0xce, 0x20, 0x3c, 0x74, + 0xdb, 0xf5, 0xac, 0xd7, 0x5c, 0x27, 0x30, 0xec, 0x35, 0xd7, 0x8c, 0x2c, 0xf4, 0x04, 0x51, 0xfe, + 0xb4, 0x06, 0x0f, 0x34, 0xda, 0x1d, 0xce, 0x1e, 0x4b, 0xc3, 0xa9, 0x35, 0xe2, 0x59, 0x6e, 0x51, + 0x43, 0x3d, 0xe6, 0x9b, 0x5b, 0x59, 0xdb, 0xc8, 0x02, 0x89, 0xf3, 0x70, 0x31, 0x7b, 0x41, 0xd3, + 0xbd, 0xe7, 0xb0, 0xc1, 0xd5, 0x03, 0xb6, 0x9a, 0xaf, 0x45, 0x1f, 0xa1, 0xa0, 0xbd, 0x60, 0x35, + 0x13, 0x22, 0xce, 0xc1, 0x84, 0x3e, 0x01, 0x97, 0x2c, 0x3e, 0x38, 0x4c, 0x0c, 0xd3, 0x72, 0x88, + 0xef, 0x73, 0x63, 0xa3, 0x3e, 0x0c, 0xe2, 0x6a, 0x59, 0x00, 0x71, 0x36, 0x1e, 0xf4, 0x32, 0x80, + 0xdf, 0x75, 0x1a, 0x62, 0xfd, 0x87, 0x0a, 0x61, 0xe5, 0x4c, 0x60, 0x08, 0x05, 0x2b, 0x10, 0xa9, + 0x28, 0x11, 0x84, 0x9b, 0x72, 0x98, 0x19, 0xd7, 0x31, 0x51, 0x22, 0xda, 0x43, 0x51, 0xbd, 0xfe, + 0xcf, 0x35, 0x18, 0x11, 0xfe, 0xff, 0xe8, 0xed, 0x09, 0x35, 0x51, 0x48, 0x7b, 0x12, 0xaa, 0xa2, + 0x2e, 0x7b, 0x2b, 0x14, 0x2a, 0x42, 0xc1, 0x4a, 0x14, 0xd2, 0x33, 0x08, 0xc4, 0x91, 0xbe, 0x31, + 0xf6, 0x66, 0x28, 0x75, 0x90, 0x0a, 0x32, 0xfd, 0xcb, 0x1a, 0x9c, 0x4f, 0xf5, 0x3a, 0x02, 0xbf, + 0x70, 0x86, 0x66, 0x38, 0xdf, 0x1a, 0x84, 0x29, 0x66, 0x2d, 0xe8, 0x18, 0x36, 0xd7, 0xe0, 0x9c, + 0x81, 0x80, 0xf2, 0x38, 0x8c, 0x59, 0xad, 0x56, 0x27, 0xa0, 0xa4, 0x5a, 0x28, 0xe1, 0xd9, 0x37, + 0xaf, 0xc9, 0x42, 0x1c, 0xd5, 0x23, 0x47, 0x5c, 0x85, 0x9c, 0x88, 0x2f, 0x17, 0xfb, 0x72, 0xea, + 0x04, 0xe7, 0xe8, 0xb5, 0xc5, 0xef, 0xab, 0xac, 0x9b, 0xf2, 0xa7, 0x35, 0x00, 0x3f, 0xf0, 0x2c, + 0xa7, 0x49, 0x0b, 0xc5, 0x75, 0x89, 0x4f, 0x00, 0x6d, 0x3d, 0x04, 0xca, 0x91, 0x87, 0x6b, 0x14, + 0x55, 0x60, 0x05, 0x33, 0x9a, 0x17, 0x5c, 0x02, 0xa7, 0xf8, 0x3f, 0x9a, 0xe0, 0x87, 0x1e, 0x4a, + 0x87, 0xb7, 0x11, 0x3e, 0xa1, 0x11, 0x1b, 0x31, 0xfb, 0x14, 0x8c, 0x85, 0xf8, 0x0e, 0xbb, 0x75, + 0x27, 0x94, 0x5b, 0x77, 0xf6, 0x19, 0x38, 0x97, 0x18, 0xee, 0xb1, 0x2e, 0xed, 0xff, 0xa8, 0x01, + 0x8a, 0xcf, 0xfe, 0x0c, 0x44, 0xbb, 0x66, 0x5c, 0xb4, 0x5b, 0xe8, 0xff, 0x93, 0xe5, 0xc8, 0x76, + 0xdf, 0x99, 0x02, 0x16, 0x1e, 0x25, 0x0c, 0x3f, 0x23, 0x2e, 0x2e, 0x7a, 0xcf, 0x46, 0x2e, 0x16, + 0xe2, 0xe4, 0xf6, 0x71, 0xcf, 0xde, 0x49, 0xc0, 0x8a, 0xee, 0xd9, 0x64, 0x0d, 0x4e, 0xe1, 0x45, + 0x9f, 0xd1, 0x60, 0xda, 0x88, 0x87, 0x47, 0x91, 0x2b, 0x53, 0xc8, 0xfd, 0x36, 0x11, 0x6a, 0x25, + 0x1a, 0x4b, 0xa2, 0xc2, 0xc7, 0x29, 0xb4, 0xe8, 0x5d, 0x30, 0x61, 0xb4, 0xad, 0xf9, 0x8e, 0x69, + 0x51, 0xd1, 0x40, 0xc6, 0xb6, 0x60, 0xe2, 0xea, 0xfc, 0x5a, 0x2d, 0x2c, 0xc7, 0xb1, 0x56, 0x61, + 0x1c, 0x12, 0xb1, 0x90, 0x83, 0x7d, 0xc6, 0x21, 0x11, 0x6b, 0x18, 0xc5, 0x21, 0x11, 0x4b, 0xa7, + 0x22, 0x41, 0x0e, 0x80, 0x6b, 0x99, 0x0d, 0x81, 0x92, 0x3f, 0xfb, 0x15, 0x92, 0x90, 0xef, 0xd6, + 0xaa, 0x15, 0x81, 0x91, 0xdd, 0x7e, 0xd1, 0x6f, 0xac, 0x60, 0x40, 0x9f, 0xd7, 0x60, 0x52, 0xd0, + 0x6e, 0x81, 0x73, 0x84, 0x7d, 0xa2, 0x97, 0x8a, 0xee, 0x97, 0xc4, 0x9e, 0x9c, 0xc3, 0x2a, 0x70, + 0x4e, 0x77, 0x42, 0x0f, 0x9d, 0x58, 0x1d, 0x8e, 0x8f, 0x03, 0xfd, 0x7d, 0x0d, 0x2e, 0xfa, 0xc4, + 0xdb, 0xb5, 0x1a, 0x64, 0xbe, 0xd1, 0x70, 0x3b, 0x8e, 0xfc, 0x0e, 0xa3, 0xc5, 0xc3, 0x36, 0xd4, + 0x33, 0xe0, 0x71, 0xd3, 0xf0, 0xac, 0x1a, 0x9c, 0x89, 0x9f, 0xb2, 0x65, 0xe7, 0xee, 0x19, 0x41, + 0x63, 0xbb, 0x62, 0x34, 0xb6, 0x99, 0xb2, 0x9d, 0x5b, 0x83, 0x17, 0xdc, 0xd7, 0x2f, 0xc4, 0x41, + 0xf1, 0x67, 0xeb, 0x44, 0x21, 0x4e, 0x22, 0x44, 0x2e, 0x8c, 0x7a, 0x22, 0xe6, 0xd4, 0x0c, 0x14, + 0x67, 0x29, 0x52, 0x01, 0xac, 0x38, 0x63, 0x2f, 0x7f, 0xe1, 0x10, 0x09, 0x6a, 0xc2, 0x43, 0x5c, + 0xb4, 0x99, 0x77, 0x5c, 0xa7, 0xdb, 0x72, 0x3b, 0xfe, 0x7c, 0x27, 0xd8, 0x26, 0x4e, 0x20, 0x75, + 0x95, 0xe3, 0xec, 0x1a, 0x65, 0x06, 0xf1, 0x8b, 0xbd, 0x1a, 0xe2, 0xde, 0x70, 0xd0, 0x8b, 0x30, + 0x4a, 0x76, 0x89, 0x13, 0xac, 0xaf, 0x2f, 0x33, 0xc3, 0xf2, 0xe3, 0x73, 0x7b, 0x6c, 0x0a, 0x8b, + 0x02, 0x06, 0x0e, 0xa1, 0xa1, 0x1d, 0x18, 0xb1, 0x79, 0xd0, 0xb0, 0x99, 0xc9, 0xe2, 0x44, 0x31, + 0x19, 0x80, 0x8c, 0xcb, 0x7f, 0xe2, 0x07, 0x96, 0x18, 0x50, 0x1b, 0xae, 0x9b, 0x64, 0xcb, 0xe8, + 0xd8, 0xc1, 0xaa, 0x1b, 0x50, 0x96, 0xb6, 0x1b, 0xe9, 0xa7, 0xa4, 0x0f, 0xc1, 0x14, 0xf3, 0xb0, + 0x7e, 0xe4, 0x60, 0xbf, 0x7c, 0xbd, 0x7a, 0x48, 0x5b, 0x7c, 0x28, 0x34, 0xd4, 0x85, 0x87, 0x45, + 0x9b, 0x0d, 0xc7, 0x23, 0x46, 0x63, 0x9b, 0xae, 0x72, 0x1a, 0xe9, 0x39, 0x86, 0xf4, 0x6f, 0x1c, + 0xec, 0x97, 0x1f, 0xae, 0x1e, 0xde, 0x1c, 0x1f, 0x05, 0x26, 0x33, 0x9d, 0x26, 0x09, 0x1d, 0xfd, + 0xcc, 0x74, 0xf1, 0x35, 0x4e, 0xea, 0xfb, 0xb9, 0x6d, 0x45, 0xb2, 0x14, 0xa7, 0x70, 0xce, 0x7e, + 0x10, 0x50, 0x9a, 0xe0, 0x1c, 0xc6, 0x39, 0x8c, 0xaa, 0x9c, 0xc3, 0x17, 0x87, 0xe0, 0x2a, 0xa5, + 0x63, 0x11, 0xbf, 0xbc, 0x62, 0x38, 0x46, 0xf3, 0x87, 0xf3, 0x8e, 0xfd, 0x75, 0x0d, 0x1e, 0xd8, + 0xce, 0x96, 0x65, 0x05, 0xc7, 0xfe, 0x5c, 0x21, 0x9d, 0x43, 0x2f, 0xf1, 0x98, 0x1f, 0xf1, 0x9e, + 0x4d, 0x70, 0xde, 0xa0, 0xd0, 0x07, 0x61, 0xda, 0x71, 0x4d, 0x52, 0xa9, 0x55, 0xf1, 0x8a, 0xe1, + 0xef, 0xd4, 0xe5, 0x1b, 0xe6, 0x10, 0xff, 0xc2, 0xab, 0x89, 0x3a, 0x9c, 0x6a, 0x8d, 0x76, 0x01, + 0xb5, 0x5d, 0x73, 0x71, 0xd7, 0x6a, 0xc8, 0xd7, 0xb3, 0xe2, 0x16, 0x3b, 0xec, 0x89, 0x6e, 0x2d, + 0x05, 0x0d, 0x67, 0x60, 0x60, 0xc2, 0x38, 0x1d, 0xcc, 0x8a, 0xeb, 0x58, 0x81, 0xeb, 0x31, 0x8f, + 0x9e, 0xbe, 0x64, 0x52, 0x26, 0x8c, 0xaf, 0x66, 0x42, 0xc4, 0x39, 0x98, 0xf4, 0xff, 0xa9, 0xc1, + 0x39, 0xba, 0x2d, 0xd6, 0x3c, 0x77, 0xaf, 0xfb, 0xc3, 0xb8, 0x21, 0x1f, 0x13, 0xe6, 0x1c, 0x5c, + 0x89, 0x74, 0x49, 0x31, 0xe5, 0x18, 0x63, 0x63, 0x8e, 0xac, 0x37, 0x54, 0x3d, 0xda, 0x40, 0xbe, + 0x1e, 0x4d, 0xff, 0x7c, 0x89, 0xf3, 0xba, 0x52, 0x8f, 0xf5, 0x43, 0x79, 0x0e, 0x9f, 0x82, 0x49, + 0x5a, 0xb6, 0x62, 0xec, 0xad, 0x55, 0x9f, 0x77, 0x6d, 0xe9, 0x94, 0xc4, 0x0c, 0x8d, 0xef, 0xa8, + 0x15, 0x38, 0xde, 0x0e, 0xdd, 0x84, 0x91, 0x36, 0x77, 0xdd, 0x16, 0x52, 0xd6, 0x75, 0x6e, 0xf3, + 0xc0, 0x8a, 0xee, 0xef, 0x97, 0xcf, 0x47, 0xaf, 0x36, 0xa2, 0x10, 0xcb, 0x0e, 0xfa, 0x67, 0x2f, + 0x01, 0x03, 0x6e, 0x93, 0xe0, 0x87, 0x71, 0x4d, 0x9e, 0x80, 0xf1, 0x46, 0xbb, 0x53, 0x59, 0xaa, + 0x3f, 0xd7, 0x71, 0x99, 0xf4, 0xcc, 0xa2, 0x4c, 0x52, 0xe6, 0xb7, 0xb2, 0xb6, 0x21, 0x8b, 0xb1, + 0xda, 0x86, 0x52, 0x87, 0x46, 0xbb, 0x23, 0xe8, 0xed, 0x9a, 0x6a, 0x6d, 0xcb, 0xa8, 0x43, 0x65, + 0x6d, 0x23, 0x56, 0x87, 0x53, 0xad, 0xd1, 0x27, 0x60, 0x82, 0x88, 0x83, 0x7b, 0xdb, 0xf0, 0x4c, + 0x41, 0x17, 0x6a, 0x45, 0x27, 0x1f, 0x2e, 0xad, 0xa4, 0x06, 0x5c, 0x66, 0x58, 0x54, 0x50, 0xe0, + 0x18, 0x42, 0xf4, 0x11, 0xb8, 0x22, 0x7f, 0xd3, 0xaf, 0xec, 0x9a, 0x49, 0x42, 0x31, 0xc4, 0xbd, + 0x65, 0x17, 0xf3, 0x1a, 0xe1, 0xfc, 0xfe, 0xe8, 0xd7, 0x34, 0xb8, 0x1c, 0xd6, 0x5a, 0x8e, 0xd5, + 0xea, 0xb4, 0x30, 0x69, 0xd8, 0x86, 0xd5, 0x12, 0x92, 0xc2, 0x0b, 0x27, 0x36, 0xd1, 0x38, 0x78, + 0x4e, 0xac, 0xb2, 0xeb, 0x70, 0xce, 0x90, 0xd0, 0x97, 0x35, 0xb8, 0x2e, 0xab, 0xd6, 0x3c, 0xe2, + 0xfb, 0x1d, 0x8f, 0x44, 0x2e, 0x71, 0x62, 0x49, 0x46, 0x0a, 0xd1, 0x4e, 0xc6, 0x32, 0x2d, 0x1e, + 0x02, 0x1b, 0x1f, 0x8a, 0x5d, 0xdd, 0x2e, 0x75, 0x77, 0x2b, 0x10, 0xa2, 0xc5, 0x69, 0x6d, 0x17, + 0x8a, 0x02, 0xc7, 0x10, 0xa2, 0x7f, 0xa1, 0xc1, 0x03, 0x6a, 0x81, 0xba, 0x5b, 0xb8, 0x4c, 0xf1, + 0xe2, 0x89, 0x0d, 0x26, 0x01, 0x9f, 0x2b, 0xa5, 0x73, 0x2a, 0x71, 0xde, 0xa8, 0x28, 0xd9, 0x6e, + 0xb1, 0x8d, 0xc9, 0xe5, 0x8e, 0x21, 0x4e, 0xb6, 0xf9, 0x5e, 0xf5, 0xb1, 0xac, 0xa3, 0x12, 0x77, + 0xdb, 0x35, 0xd7, 0x2c, 0xd3, 0x5f, 0xb6, 0x5a, 0x56, 0xc0, 0xa4, 0x83, 0x01, 0xbe, 0x1c, 0x6b, + 0xae, 0xb9, 0x56, 0xab, 0xf2, 0x72, 0x1c, 0x6b, 0xc5, 0x9c, 0xd3, 0xad, 0x96, 0xd1, 0x24, 0x6b, + 0x1d, 0xdb, 0x5e, 0xf3, 0x5c, 0xa6, 0xb9, 0xac, 0x12, 0xc3, 0xb4, 0x2d, 0x87, 0x14, 0x94, 0x06, + 0xd8, 0x71, 0xab, 0xe5, 0x01, 0xc5, 0xf9, 0xf8, 0xd0, 0x1c, 0xc0, 0x96, 0x61, 0xd9, 0xf5, 0x7b, + 0x46, 0xfb, 0xae, 0xc3, 0x44, 0x86, 0x51, 0x2e, 0x4b, 0x2f, 0x85, 0xa5, 0x58, 0x69, 0x41, 0x77, + 0x13, 0xa5, 0x82, 0x98, 0xf0, 0xa0, 0x48, 0x8c, 0xbd, 0x3f, 0x89, 0xdd, 0x24, 0x01, 0xf2, 0xe5, + 0xbb, 0xa3, 0xa0, 0xc0, 0x31, 0x84, 0xe8, 0xd3, 0x1a, 0x4c, 0xf9, 0x5d, 0x3f, 0x20, 0xad, 0x70, + 0x0c, 0xe7, 0x4e, 0x7a, 0x0c, 0x4c, 0xa7, 0x5b, 0x8f, 0x21, 0xc1, 0x09, 0xa4, 0xc8, 0x80, 0xab, + 0x6c, 0x55, 0x6f, 0x55, 0x6e, 0x5b, 0xcd, 0xed, 0xd0, 0xe5, 0x7c, 0x8d, 0x78, 0x0d, 0xe2, 0x04, + 0x4c, 0x30, 0x18, 0xe2, 0x46, 0x41, 0xb5, 0xfc, 0x66, 0xb8, 0x17, 0x0c, 0xf4, 0x32, 0xcc, 0x8a, + 0xea, 0x65, 0xf7, 0x5e, 0x0a, 0xc3, 0x79, 0x86, 0x81, 0x19, 0x41, 0xd5, 0x72, 0x5b, 0xe1, 0x1e, + 0x10, 0x50, 0x0d, 0x2e, 0xf8, 0xc4, 0x63, 0x4f, 0x32, 0x24, 0xdc, 0x3c, 0xfe, 0x0c, 0x8a, 0xec, + 0x9f, 0xeb, 0xe9, 0x6a, 0x9c, 0xd5, 0x07, 0x3d, 0x13, 0xba, 0x58, 0x75, 0x69, 0xc1, 0x73, 0x6b, + 0xf5, 0x99, 0x0b, 0x6c, 0x7c, 0x17, 0x14, 0xcf, 0x29, 0x59, 0x85, 0x93, 0x6d, 0x29, 0x6f, 0x21, + 0x8b, 0x16, 0x3a, 0x9e, 0x1f, 0xcc, 0x5c, 0x64, 0x9d, 0x19, 0x6f, 0x81, 0xd5, 0x0a, 0x1c, 0x6f, + 0x87, 0x6e, 0xc2, 0x94, 0x4f, 0x1a, 0x0d, 0xb7, 0xd5, 0x16, 0x72, 0xde, 0xcc, 0x25, 0x36, 0x7a, + 0xfe, 0x05, 0x63, 0x35, 0x38, 0xd1, 0x12, 0x75, 0xe1, 0x42, 0x18, 0x22, 0x68, 0xd9, 0x6d, 0xae, + 0x18, 0x7b, 0x8c, 0x55, 0xbf, 0x7c, 0xf8, 0x09, 0x9c, 0x93, 0x6f, 0xec, 0x73, 0xcf, 0x75, 0x0c, + 0x27, 0xb0, 0x82, 0x2e, 0x5f, 0xae, 0x4a, 0x1a, 0x1c, 0xce, 0xc2, 0x81, 0x96, 0xe1, 0x62, 0xa2, + 0x78, 0xc9, 0xb2, 0x89, 0x3f, 0xf3, 0x00, 0x9b, 0x36, 0x53, 0xd6, 0x54, 0x32, 0xea, 0x71, 0x66, + 0x2f, 0x74, 0x17, 0x2e, 0xb5, 0x3d, 0x37, 0x20, 0x8d, 0xe0, 0x0e, 0x65, 0x4f, 0x6c, 0x31, 0x41, + 0x7f, 0x66, 0x86, 0xad, 0x05, 0x7b, 0x8e, 0x5a, 0xcb, 0x6a, 0x80, 0xb3, 0xfb, 0xa1, 0x2f, 0x6a, + 0x70, 0xcd, 0x0f, 0x3c, 0x62, 0xb4, 0x2c, 0xa7, 0x59, 0x71, 0x1d, 0x87, 0x30, 0x32, 0x59, 0x33, + 0x23, 0xf7, 0x81, 0x2b, 0x85, 0xe8, 0x94, 0x7e, 0xb0, 0x5f, 0xbe, 0x56, 0xef, 0x09, 0x19, 0x1f, + 0x82, 0x19, 0xbd, 0x0e, 0xd0, 0x22, 0x2d, 0xd7, 0xeb, 0x52, 0x8a, 0x34, 0x33, 0x5b, 0xdc, 0x9a, + 0x6a, 0x25, 0x84, 0xc2, 0x8f, 0x7f, 0xec, 0x21, 0x2d, 0xaa, 0xc4, 0x0a, 0x3a, 0x7d, 0xbf, 0x04, + 0x97, 0x32, 0x2f, 0x1e, 0x7a, 0x02, 0x78, 0xbb, 0x79, 0x19, 0x2e, 0x58, 0xbc, 0x3d, 0xb1, 0x13, + 0xb0, 0x12, 0xaf, 0xc2, 0xc9, 0xb6, 0x94, 0x2d, 0x64, 0x27, 0x75, 0xa9, 0x1e, 0xf5, 0x2f, 0x45, + 0x6c, 0x61, 0x2d, 0x51, 0x87, 0x53, 0xad, 0x51, 0x05, 0xce, 0x8b, 0xb2, 0x1a, 0x95, 0xac, 0xfc, + 0x25, 0x8f, 0x48, 0x86, 0x9b, 0xca, 0x28, 0xe7, 0x6b, 0xc9, 0x4a, 0x9c, 0x6e, 0x4f, 0x67, 0x41, + 0x7f, 0xa8, 0xa3, 0x18, 0x8c, 0x66, 0xb1, 0x1a, 0xaf, 0xc2, 0xc9, 0xb6, 0x52, 0xf4, 0x8d, 0x0d, + 0x61, 0x28, 0x9a, 0xc5, 0x6a, 0xa2, 0x0e, 0xa7, 0x5a, 0xeb, 0xff, 0x69, 0x10, 0x1e, 0x3e, 0x02, + 0xb3, 0x86, 0x5a, 0xd9, 0xcb, 0x7d, 0xfc, 0x83, 0x7b, 0xb4, 0xcf, 0xd3, 0xce, 0xf9, 0x3c, 0xc7, + 0xc7, 0x77, 0xd4, 0xcf, 0xe9, 0xe7, 0x7d, 0xce, 0xe3, 0xa3, 0x3c, 0xfa, 0xe7, 0x6f, 0x65, 0x7f, + 0xfe, 0x82, 0xab, 0x7a, 0xe8, 0x76, 0x69, 0xe7, 0x6c, 0x97, 0x82, 0xab, 0x7a, 0x84, 0xed, 0xf5, + 0xc7, 0x83, 0xf0, 0xc8, 0x51, 0x18, 0xc7, 0x82, 0xfb, 0x2b, 0x83, 0xe4, 0x9d, 0xea, 0xfe, 0xca, + 0xf3, 0xd0, 0x3a, 0xc5, 0xfd, 0x95, 0x81, 0xf2, 0xb4, 0xf7, 0x57, 0xde, 0xaa, 0x9e, 0xd6, 0xfe, + 0xca, 0x5b, 0xd5, 0x23, 0xec, 0xaf, 0x3f, 0x4f, 0xde, 0x0f, 0x21, 0xbf, 0x58, 0x83, 0x81, 0x46, + 0xbb, 0x53, 0x90, 0x48, 0x31, 0x4b, 0xa5, 0xca, 0xda, 0x06, 0xa6, 0x30, 0x10, 0x86, 0x61, 0xbe, + 0x7f, 0x0a, 0x92, 0x20, 0xe6, 0xeb, 0xc3, 0xb7, 0x24, 0x16, 0x90, 0xe8, 0x52, 0x91, 0xf6, 0x36, + 0x69, 0x11, 0xcf, 0xb0, 0xeb, 0x81, 0xeb, 0x19, 0xcd, 0xa2, 0xd4, 0x86, 0xab, 0xb1, 0x13, 0xb0, + 0x70, 0x0a, 0x3a, 0x5d, 0x90, 0xb6, 0x65, 0x16, 0xa4, 0x2f, 0x6c, 0x41, 0xd6, 0x6a, 0x55, 0x4c, + 0x61, 0xe8, 0xff, 0x68, 0x0c, 0x94, 0x10, 0x7c, 0xe8, 0x23, 0x70, 0xc5, 0xb0, 0x6d, 0xf7, 0xde, + 0x9a, 0x67, 0xed, 0x5a, 0x36, 0x69, 0x12, 0x33, 0x64, 0xa6, 0x7c, 0x61, 0xcf, 0xc6, 0x04, 0xa6, + 0xf9, 0xbc, 0x46, 0x38, 0xbf, 0x3f, 0x7a, 0x43, 0x83, 0xf3, 0x8d, 0x64, 0xd8, 0xb3, 0x7e, 0x2c, + 0x5e, 0x52, 0x31, 0xd4, 0xf8, 0x79, 0x4a, 0x15, 0xe3, 0x34, 0x5a, 0xf4, 0x93, 0x1a, 0x57, 0xca, + 0x85, 0xef, 0x35, 0xe2, 0x9b, 0xdd, 0x3a, 0xa1, 0x97, 0xcd, 0x48, 0xbb, 0x17, 0x3d, 0xa2, 0xc5, + 0x11, 0xa2, 0x2f, 0x6b, 0x70, 0x69, 0x27, 0xeb, 0x2d, 0x41, 0x7c, 0xd9, 0xbb, 0x45, 0x87, 0x92, + 0xf3, 0x38, 0xc1, 0xd9, 0xd9, 0xcc, 0x06, 0x38, 0x7b, 0x20, 0xe1, 0x2a, 0x85, 0xea, 0x55, 0x41, + 0x04, 0x0a, 0xaf, 0x52, 0x42, 0x4f, 0x1b, 0xad, 0x52, 0x58, 0x81, 0xe3, 0x08, 0x51, 0x1b, 0xc6, + 0x76, 0xa4, 0x4e, 0x5b, 0xe8, 0xb1, 0x2a, 0x45, 0xb1, 0x2b, 0x8a, 0x71, 0x6e, 0xd1, 0x13, 0x16, + 0xe2, 0x08, 0x09, 0xda, 0x86, 0x91, 0x1d, 0x4e, 0x88, 0x84, 0xfe, 0x69, 0xbe, 0x6f, 0xf9, 0x98, + 0xab, 0x41, 0x44, 0x11, 0x96, 0xe0, 0x55, 0x73, 0xde, 0xd1, 0x43, 0xbc, 0x4c, 0xbe, 0xa8, 0xc1, + 0xa5, 0x5d, 0xe2, 0x05, 0x56, 0x23, 0xf9, 0x92, 0x33, 0x56, 0x5c, 0x86, 0x7f, 0x3e, 0x0b, 0x20, + 0xdf, 0x26, 0x99, 0x55, 0x38, 0x7b, 0x08, 0x54, 0xa2, 0xe7, 0x0a, 0xf9, 0x7a, 0x60, 0x04, 0x56, + 0x63, 0xdd, 0xdd, 0x21, 0x4e, 0x94, 0x29, 0x86, 0x69, 0x82, 0x46, 0xb9, 0x44, 0xbf, 0x98, 0xdf, + 0x0c, 0xf7, 0x82, 0xa1, 0x7f, 0x5f, 0x83, 0x94, 0x5a, 0x19, 0xfd, 0xbc, 0x06, 0x13, 0x5b, 0xc4, + 0x08, 0x3a, 0x1e, 0xb9, 0x65, 0x04, 0xa1, 0xef, 0xfc, 0xf3, 0x27, 0xa1, 0xcd, 0x9e, 0x5b, 0x52, + 0x00, 0x73, 0xcb, 0x84, 0x30, 0x7c, 0xa7, 0x5a, 0x85, 0x63, 0x23, 0x98, 0x7d, 0x16, 0xce, 0xa7, + 0x3a, 0x1e, 0xeb, 0x85, 0xf1, 0x5f, 0x6b, 0x90, 0x95, 0xdc, 0x08, 0xbd, 0x0c, 0x43, 0x86, 0x69, + 0x86, 0xd9, 0x0a, 0x9e, 0x2e, 0x66, 0x24, 0x63, 0xaa, 0x21, 0x0a, 0xd8, 0x4f, 0xcc, 0xc1, 0xa2, + 0x25, 0x40, 0x46, 0xec, 0xa9, 0x7d, 0x25, 0x72, 0xbc, 0x65, 0x2f, 0x61, 0xf3, 0xa9, 0x5a, 0x9c, + 0xd1, 0x43, 0xff, 0x19, 0x0d, 0x50, 0x3a, 0xe0, 0x2b, 0xf2, 0x60, 0x54, 0x6c, 0x65, 0xf9, 0x95, + 0xaa, 0x05, 0x7d, 0x5b, 0x62, 0x8e, 0x5a, 0x91, 0xc5, 0x95, 0x28, 0xf0, 0x71, 0x88, 0x47, 0xff, + 0x0b, 0x0d, 0xa2, 0x88, 0xe6, 0xe8, 0xdd, 0x30, 0x6e, 0x12, 0xbf, 0xe1, 0x59, 0xed, 0x20, 0x72, + 0xeb, 0x0a, 0xdd, 0x43, 0xaa, 0x51, 0x15, 0x56, 0xdb, 0x21, 0x1d, 0x86, 0x03, 0xc3, 0xdf, 0xa9, + 0x55, 0x85, 0x50, 0xc9, 0x58, 0x80, 0x75, 0x56, 0x82, 0x45, 0x4d, 0x14, 0xfc, 0x6c, 0xe0, 0x08, + 0xc1, 0xcf, 0xd0, 0xd6, 0x09, 0x44, 0x7a, 0x43, 0x87, 0x47, 0x79, 0xd3, 0x7f, 0xb5, 0x04, 0xe7, + 0x68, 0x93, 0x15, 0xc3, 0x72, 0x02, 0xe2, 0x30, 0x27, 0x86, 0x82, 0x8b, 0xd0, 0x84, 0xc9, 0x20, + 0xe6, 0xe5, 0x77, 0x7c, 0x17, 0xb7, 0xd0, 0xac, 0x27, 0xee, 0xdb, 0x17, 0x87, 0x8b, 0x9e, 0x96, + 0x5e, 0x24, 0x5c, 0xfc, 0x7e, 0x58, 0x6e, 0x55, 0xe6, 0x1a, 0x72, 0x5f, 0xb8, 0x4c, 0x86, 0x61, + 0xf0, 0x63, 0x0e, 0x23, 0x4f, 0xc1, 0xa4, 0xb0, 0xe6, 0xe6, 0x51, 0xec, 0x84, 0xf8, 0xcd, 0x6e, + 0x98, 0x25, 0xb5, 0x02, 0xc7, 0xdb, 0xe9, 0xdf, 0x2c, 0x41, 0x3c, 0xd8, 0x7e, 0xd1, 0x55, 0x4a, + 0x87, 0xf0, 0x2b, 0x9d, 0x5a, 0x08, 0xbf, 0x77, 0xb0, 0x4c, 0x35, 0x3c, 0xa5, 0x19, 0x7f, 0x22, + 0x57, 0xf3, 0xcb, 0xf0, 0x84, 0x64, 0x61, 0x8b, 0x68, 0x59, 0x07, 0x8f, 0xbd, 0xac, 0xef, 0x16, + 0x66, 0x9e, 0x43, 0xb1, 0x40, 0x8a, 0xd2, 0xcc, 0xf3, 0x7c, 0xac, 0xa3, 0xe2, 0xf3, 0xf2, 0x35, + 0x0d, 0x46, 0x44, 0x94, 0xe3, 0x23, 0xf8, 0x54, 0x6d, 0xc1, 0x10, 0x13, 0x79, 0xfa, 0xe1, 0x06, + 0xeb, 0xdb, 0xae, 0x1b, 0xc4, 0x62, 0x3d, 0x33, 0x27, 0x06, 0xf6, 0x2f, 0xe6, 0xe0, 0x99, 0xa5, + 0x9f, 0xd7, 0xd8, 0xb6, 0x02, 0xd2, 0x08, 0x64, 0x04, 0x59, 0x69, 0xe9, 0xa7, 0x94, 0xe3, 0x58, + 0x2b, 0xfd, 0x4b, 0x83, 0x70, 0x5d, 0x00, 0x4e, 0xb1, 0x48, 0x21, 0x81, 0xeb, 0xc2, 0x05, 0xf1, + 0x6d, 0xab, 0x9e, 0x61, 0x85, 0xa6, 0x07, 0xc5, 0x44, 0x5f, 0x91, 0xb6, 0x2f, 0x05, 0x0e, 0x67, + 0xe1, 0xe0, 0xb1, 0x50, 0x59, 0xf1, 0x6d, 0x62, 0xd8, 0xc1, 0xb6, 0xc4, 0x5d, 0xea, 0x27, 0x16, + 0x6a, 0x1a, 0x1e, 0xce, 0xc4, 0xc2, 0x4c, 0x1f, 0x44, 0x45, 0xc5, 0x23, 0x86, 0x6a, 0x77, 0xd1, + 0x87, 0x1f, 0xc2, 0x4a, 0x26, 0x44, 0x9c, 0x83, 0x89, 0xe9, 0x10, 0x8d, 0x3d, 0xa6, 0x92, 0xc0, + 0x24, 0xf0, 0x2c, 0x16, 0xb3, 0x3b, 0xd4, 0xa2, 0xaf, 0xc4, 0xab, 0x70, 0xb2, 0x2d, 0xba, 0x09, + 0x53, 0xcc, 0x94, 0x24, 0x0a, 0xda, 0x35, 0x14, 0xc5, 0x85, 0x58, 0x8d, 0xd5, 0xe0, 0x44, 0x4b, + 0xfd, 0x93, 0x25, 0x98, 0x50, 0xb7, 0xdd, 0x11, 0x1c, 0xac, 0x3a, 0xca, 0x65, 0xd8, 0x87, 0xf3, + 0x8f, 0x8a, 0xf5, 0x08, 0xf7, 0x21, 0x7a, 0x11, 0xa6, 0x3a, 0x8c, 0x82, 0xc8, 0xc0, 0x23, 0x62, + 0xff, 0xff, 0x18, 0x9d, 0xe5, 0x46, 0xac, 0xe6, 0xfe, 0x7e, 0x79, 0x56, 0x05, 0x1f, 0xaf, 0xc5, + 0x09, 0x38, 0xfa, 0x67, 0x07, 0xe0, 0x42, 0xc6, 0x68, 0x98, 0xc9, 0x01, 0x49, 0x5c, 0xd9, 0xfd, + 0x98, 0x1c, 0xa4, 0xae, 0xff, 0xd0, 0xe4, 0x20, 0x59, 0x83, 0x53, 0x78, 0xd1, 0xf3, 0x30, 0xd0, + 0xf0, 0x2c, 0xb1, 0xe0, 0x4f, 0x15, 0x12, 0x38, 0x71, 0x6d, 0x61, 0x5c, 0x60, 0x1c, 0xa8, 0xe0, + 0x1a, 0xa6, 0x00, 0xe9, 0xc5, 0xa3, 0x92, 0x0b, 0xc9, 0x05, 0xb0, 0x8b, 0x47, 0xa5, 0x2a, 0x3e, + 0x8e, 0xb7, 0x43, 0x2f, 0xc2, 0x8c, 0x90, 0x04, 0xa4, 0xb3, 0xb6, 0xeb, 0xf8, 0x01, 0x3d, 0xd9, + 0x81, 0x20, 0xd4, 0x0f, 0x1e, 0xec, 0x97, 0x67, 0xee, 0xe4, 0xb4, 0xc1, 0xb9, 0xbd, 0xf5, 0x3f, + 0x1b, 0x80, 0x71, 0x25, 0xc6, 0x3c, 0x5a, 0xe9, 0x47, 0x85, 0x12, 0xcd, 0x58, 0xaa, 0x51, 0x56, + 0x60, 0xa0, 0xd9, 0xee, 0x14, 0xd4, 0xa1, 0x84, 0xe0, 0x6e, 0x51, 0x70, 0xcd, 0x76, 0x07, 0x3d, + 0x1f, 0x6a, 0x65, 0x8a, 0xe9, 0x4d, 0x42, 0xd7, 0x9a, 0x84, 0x66, 0x46, 0x1e, 0xc4, 0xc1, 0xdc, + 0x83, 0xd8, 0x82, 0x11, 0x5f, 0xa8, 0x6c, 0x86, 0x8a, 0xc7, 0xd7, 0x51, 0x56, 0x5a, 0xa8, 0x68, + 0xb8, 0xbc, 0x27, 0x35, 0x38, 0x12, 0x07, 0xe5, 0x25, 0x3b, 0xcc, 0x61, 0x97, 0x09, 0xb2, 0xa3, + 0x9c, 0x97, 0xdc, 0x60, 0x25, 0x58, 0xd4, 0xa4, 0xae, 0xa8, 0x91, 0x23, 0x5d, 0x51, 0x7f, 0xa7, + 0x04, 0x28, 0x3d, 0x0c, 0xf4, 0x30, 0x0c, 0x31, 0x87, 0x7f, 0x41, 0x8b, 0x42, 0xce, 0x9f, 0xb9, + 0x7c, 0x63, 0x5e, 0x87, 0xea, 0x22, 0x5a, 0x48, 0xb1, 0xcf, 0xc9, 0x6c, 0x76, 0x04, 0x3e, 0x25, + 0xb4, 0xc8, 0xf5, 0x98, 0x77, 0x48, 0xd6, 0x9d, 0xbf, 0x01, 0x23, 0x2d, 0xcb, 0x61, 0x0f, 0x87, + 0xc5, 0x34, 0x59, 0xdc, 0xb4, 0x80, 0x83, 0xc0, 0x12, 0x96, 0xfe, 0xc7, 0x25, 0xba, 0xf5, 0x23, + 0x8e, 0xb7, 0x0b, 0x60, 0x74, 0x02, 0x97, 0x13, 0x30, 0x71, 0x02, 0x6a, 0xc5, 0xbe, 0x72, 0x08, + 0x74, 0x3e, 0x04, 0xc8, 0x9f, 0xbc, 0xa2, 0xdf, 0x58, 0x41, 0x46, 0x51, 0x07, 0x56, 0x8b, 0xbc, + 0x60, 0x39, 0xa6, 0x7b, 0x4f, 0x2c, 0x6f, 0xbf, 0xa8, 0xd7, 0x43, 0x80, 0x1c, 0x75, 0xf4, 0x1b, + 0x2b, 0xc8, 0x28, 0x69, 0x61, 0x82, 0xb3, 0xc3, 0x92, 0x7e, 0x88, 0xb1, 0xb9, 0xb6, 0x2d, 0x6f, + 0xe5, 0x51, 0x4e, 0x5a, 0x2a, 0x39, 0x6d, 0x70, 0x6e, 0x6f, 0xfd, 0xd7, 0x34, 0xb8, 0x94, 0xb9, + 0x14, 0xe8, 0x16, 0x9c, 0x8f, 0xcc, 0xbc, 0x54, 0x62, 0x3f, 0x1a, 0x25, 0x9b, 0xb9, 0x93, 0x6c, + 0x80, 0xd3, 0x7d, 0x78, 0x46, 0xe3, 0xd4, 0x65, 0x22, 0x6c, 0xc4, 0x54, 0xd6, 0x48, 0xad, 0xc6, + 0x59, 0x7d, 0xf4, 0x8f, 0xc4, 0x06, 0x1b, 0x2d, 0x16, 0x3d, 0x19, 0x9b, 0xa4, 0x19, 0x7a, 0xe7, + 0x85, 0x27, 0x63, 0x81, 0x16, 0x62, 0x5e, 0x87, 0x1e, 0x52, 0x7d, 0x5e, 0x43, 0xba, 0x25, 0xfd, + 0x5e, 0xf5, 0x9f, 0x80, 0x07, 0x72, 0x5e, 0x42, 0x51, 0x15, 0x26, 0xfc, 0x7b, 0x46, 0x7b, 0x81, + 0x6c, 0x1b, 0xbb, 0x96, 0x88, 0xa1, 0xc0, 0xcd, 0xf7, 0x26, 0xea, 0x4a, 0xf9, 0xfd, 0xc4, 0x6f, + 0x1c, 0xeb, 0xa5, 0x07, 0x00, 0xc2, 0xcc, 0xd3, 0x72, 0x9a, 0x68, 0x0b, 0x46, 0x0d, 0x91, 0x50, + 0x57, 0xec, 0xe3, 0xf7, 0x17, 0x52, 0x02, 0x08, 0x18, 0xdc, 0x10, 0x5e, 0xfe, 0xc2, 0x21, 0x6c, + 0xfd, 0x9f, 0x6a, 0x70, 0x39, 0xdb, 0x6b, 0xfe, 0x08, 0xac, 0x4d, 0x0b, 0xc6, 0xbd, 0xa8, 0x9b, + 0xd8, 0xf4, 0xef, 0x51, 0xe3, 0xae, 0x2a, 0x81, 0xc6, 0x28, 0xdb, 0x57, 0xf1, 0x5c, 0x5f, 0x7e, + 0xf9, 0x64, 0x28, 0xd6, 0x50, 0xe4, 0x52, 0x46, 0x82, 0x55, 0xf8, 0xfa, 0xef, 0x94, 0x00, 0x56, + 0x49, 0x70, 0xcf, 0xf5, 0x76, 0xe8, 0x12, 0x3d, 0x18, 0x93, 0x34, 0x46, 0x7f, 0x70, 0x91, 0x1b, + 0x1e, 0x84, 0xc1, 0xb6, 0x6b, 0xfa, 0x82, 0xfc, 0xb1, 0x81, 0x30, 0x0b, 0x28, 0x56, 0x8a, 0xca, + 0x30, 0xc4, 0x1e, 0x3e, 0xc4, 0xcd, 0xc4, 0xe4, 0x14, 0xca, 0x65, 0xfa, 0x98, 0x97, 0xf3, 0x34, + 0x69, 0xcc, 0xb9, 0xc4, 0x17, 0x82, 0x97, 0x48, 0x93, 0xc6, 0xcb, 0x70, 0x58, 0x8b, 0x6e, 0x02, + 0x58, 0xed, 0x25, 0xa3, 0x65, 0xd9, 0x94, 0xe7, 0x1d, 0x0e, 0xb3, 0xf2, 0x42, 0x6d, 0x4d, 0x96, + 0xde, 0xdf, 0x2f, 0x8f, 0x8a, 0x5f, 0x5d, 0xac, 0xb4, 0xd6, 0xff, 0x72, 0x00, 0x62, 0x19, 0xac, + 0x23, 0x1d, 0x93, 0x76, 0x3a, 0x3a, 0xa6, 0x17, 0x61, 0xc6, 0x76, 0x0d, 0x73, 0xc1, 0xb0, 0xe9, + 0x69, 0xf4, 0xea, 0xfc, 0x33, 0x1a, 0x4e, 0x33, 0x4c, 0x53, 0xcc, 0xa8, 0xd2, 0x72, 0x4e, 0x1b, + 0x9c, 0xdb, 0x1b, 0x05, 0x61, 0xde, 0xec, 0x81, 0xe2, 0x7e, 0x98, 0xea, 0x5a, 0xcc, 0xa9, 0x2e, + 0x49, 0x21, 0x83, 0x91, 0x48, 0xad, 0xfd, 0x29, 0x0d, 0x2e, 0x91, 0x3d, 0xee, 0x92, 0xb7, 0xee, + 0x19, 0x5b, 0x5b, 0x56, 0x43, 0xd8, 0xa5, 0xf2, 0x0f, 0xbb, 0x7c, 0xb0, 0x5f, 0xbe, 0xb4, 0x98, + 0xd5, 0xe0, 0xfe, 0x7e, 0xf9, 0x46, 0xa6, 0x87, 0x24, 0xfb, 0xac, 0x99, 0x5d, 0x70, 0x36, 0xaa, + 0xd9, 0xa7, 0x61, 0xfc, 0x18, 0xde, 0x0c, 0x31, 0x3f, 0xc8, 0xdf, 0x2d, 0xc1, 0x04, 0xdd, 0x77, + 0xcb, 0x6e, 0xc3, 0xb0, 0xab, 0xab, 0xf5, 0x63, 0xe4, 0x7d, 0x47, 0xcb, 0x70, 0x71, 0xcb, 0xf5, + 0x1a, 0x64, 0xbd, 0xb2, 0xb6, 0xee, 0x8a, 0x27, 0x97, 0xea, 0x6a, 0x5d, 0x50, 0x69, 0x26, 0x44, + 0x2e, 0x65, 0xd4, 0xe3, 0xcc, 0x5e, 0xe8, 0x2e, 0x5c, 0x8a, 0xca, 0x37, 0xda, 0xdc, 0x90, 0x85, + 0x82, 0x1b, 0x88, 0x0c, 0x71, 0x96, 0xb2, 0x1a, 0xe0, 0xec, 0x7e, 0xc8, 0x80, 0xab, 0x22, 0x38, + 0xca, 0x92, 0xeb, 0xdd, 0x33, 0x3c, 0x33, 0x0e, 0x76, 0x30, 0x52, 0x49, 0x57, 0xf3, 0x9b, 0xe1, + 0x5e, 0x30, 0xf4, 0x5f, 0x1c, 0x06, 0xc5, 0x6f, 0xee, 0x18, 0x89, 0xb5, 0x7e, 0x45, 0x83, 0x8b, + 0x0d, 0xdb, 0x22, 0x4e, 0x90, 0x70, 0x92, 0xe2, 0xe4, 0x68, 0xa3, 0x90, 0x43, 0x5f, 0x9b, 0x38, + 0xb5, 0xaa, 0xb0, 0xfb, 0xa9, 0x64, 0x00, 0x17, 0xb6, 0x51, 0x19, 0x35, 0x38, 0x73, 0x30, 0x6c, + 0x3e, 0xac, 0xbc, 0x56, 0x55, 0xa3, 0x3a, 0x54, 0x44, 0x19, 0x0e, 0x6b, 0xd1, 0x13, 0x30, 0xde, + 0xf4, 0xdc, 0x4e, 0xdb, 0xaf, 0x30, 0x63, 0x63, 0xbe, 0xf7, 0x19, 0x5f, 0x78, 0x2b, 0x2a, 0xc6, + 0x6a, 0x1b, 0xca, 0xe5, 0xf2, 0x9f, 0x6b, 0x1e, 0xd9, 0xb2, 0xf6, 0x04, 0x91, 0x63, 0x5c, 0xee, + 0x2d, 0xa5, 0x1c, 0xc7, 0x5a, 0x31, 0xc7, 0x6c, 0xdf, 0xef, 0x10, 0x6f, 0x03, 0x2f, 0x8b, 0x8c, + 0x14, 0xdc, 0x31, 0x5b, 0x16, 0xe2, 0xa8, 0x1e, 0x7d, 0x4e, 0x83, 0x29, 0x8f, 0xbc, 0xda, 0xb1, + 0x3c, 0x62, 0x32, 0xa4, 0xbe, 0x70, 0x5e, 0xc4, 0xfd, 0x39, 0x4c, 0xce, 0xe1, 0x18, 0x50, 0x4e, + 0x21, 0x42, 0xb5, 0x5d, 0xbc, 0x12, 0x27, 0x46, 0x40, 0x97, 0xca, 0xb7, 0x9a, 0x8e, 0xe5, 0x34, + 0xe7, 0xed, 0xa6, 0x3f, 0x33, 0xca, 0x88, 0x1e, 0x67, 0xa1, 0xa3, 0x62, 0xac, 0xb6, 0xa1, 0xe2, + 0x65, 0xc7, 0xa7, 0xe7, 0xbe, 0x45, 0xf8, 0xfa, 0x8e, 0x45, 0x7a, 0xcd, 0x0d, 0xb5, 0x02, 0xc7, + 0xdb, 0xa1, 0x9b, 0x30, 0x25, 0x0b, 0xc4, 0x2a, 0x03, 0x8f, 0x07, 0xc8, 0xc4, 0xfd, 0x58, 0x0d, + 0x4e, 0xb4, 0x9c, 0x9d, 0x87, 0x0b, 0x19, 0xd3, 0x3c, 0x16, 0x71, 0xf9, 0x7f, 0x1a, 0x5c, 0xe2, + 0x59, 0x41, 0x65, 0x2e, 0x0b, 0x19, 0xf8, 0x2f, 0x3b, 0x86, 0x9e, 0x76, 0xaa, 0x31, 0xf4, 0x7e, + 0x00, 0xb1, 0x02, 0xf5, 0x7f, 0x5c, 0x82, 0xb7, 0x1e, 0x7a, 0x2e, 0xd1, 0x3f, 0xd0, 0x60, 0x9c, + 0xec, 0x05, 0x9e, 0x11, 0x7a, 0x64, 0xd0, 0x4d, 0xba, 0x75, 0x2a, 0x44, 0x60, 0x6e, 0x31, 0x42, + 0xc4, 0x37, 0x6e, 0xc8, 0x62, 0x29, 0x35, 0x58, 0x1d, 0x0f, 0x15, 0x5a, 0x79, 0xbc, 0x4c, 0xf5, + 0x01, 0x44, 0x24, 0x6b, 0x16, 0x35, 0xb3, 0x1f, 0x80, 0xe9, 0x24, 0xe4, 0x63, 0xed, 0x95, 0xdf, + 0x2e, 0xc1, 0xc8, 0x9a, 0xe7, 0x52, 0xee, 0xef, 0x0c, 0xe2, 0x3b, 0x18, 0xb1, 0x18, 0xf2, 0x85, + 0x5c, 0xb6, 0xc5, 0x60, 0x73, 0xf3, 0x57, 0x58, 0x89, 0xfc, 0x15, 0xf3, 0xfd, 0x20, 0xe9, 0x9d, + 0xb0, 0xe2, 0xeb, 0x1a, 0x8c, 0x8b, 0x96, 0x67, 0x10, 0xc5, 0xe0, 0xa3, 0xf1, 0x28, 0x06, 0xef, + 0xeb, 0x63, 0x5e, 0x39, 0xe1, 0x0b, 0xbe, 0xa8, 0xc1, 0xa4, 0x68, 0xb1, 0x42, 0x5a, 0x9b, 0xc4, + 0x43, 0x4b, 0x30, 0xe2, 0x77, 0xd8, 0x87, 0x14, 0x13, 0xba, 0xaa, 0xca, 0x13, 0xde, 0xa6, 0xd1, + 0x60, 0x19, 0xc7, 0x79, 0x13, 0x25, 0x2b, 0x04, 0x2f, 0xc0, 0xb2, 0x33, 0x95, 0x5e, 0x3c, 0xd7, + 0x4e, 0xc5, 0xb5, 0xc2, 0xae, 0x4d, 0x30, 0xab, 0xa1, 0x8c, 0x39, 0xfd, 0x2b, 0x55, 0x78, 0x8c, + 0x31, 0xa7, 0xd5, 0x3e, 0xe6, 0xe5, 0xfa, 0xa7, 0x07, 0xc3, 0xc5, 0x66, 0x91, 0xdb, 0x6f, 0xc3, + 0x58, 0xc3, 0x23, 0x46, 0x40, 0xcc, 0x85, 0xee, 0x51, 0x06, 0xc7, 0xae, 0xab, 0x8a, 0xec, 0x81, + 0xa3, 0xce, 0xf4, 0x66, 0x50, 0xdf, 0x9c, 0x4a, 0xd1, 0x25, 0x9a, 0xfb, 0xde, 0xf4, 0x7e, 0x18, + 0x72, 0xef, 0x39, 0xa1, 0xe9, 0x4a, 0x4f, 0xc4, 0x6c, 0x2a, 0x77, 0x69, 0x6b, 0xcc, 0x3b, 0xa9, + 0x71, 0xdd, 0x06, 0x7b, 0xc4, 0x75, 0xb3, 0x61, 0xa4, 0xc5, 0x3e, 0x43, 0x5f, 0x49, 0x02, 0x62, + 0x1f, 0x54, 0x4d, 0x23, 0xc5, 0x20, 0x63, 0x89, 0x82, 0xde, 0xf0, 0xf4, 0x16, 0xf2, 0xdb, 0x46, + 0x83, 0xa8, 0x37, 0xfc, 0xaa, 0x2c, 0xc4, 0x51, 0x3d, 0xea, 0xc6, 0x03, 0x06, 0x8e, 0x14, 0xd7, + 0xe0, 0x89, 0xe1, 0x29, 0x31, 0x02, 0xf9, 0xd2, 0xe7, 0x06, 0x0d, 0xfc, 0xd9, 0xc1, 0x70, 0x93, + 0x8a, 0x9c, 0x1f, 0xd9, 0x59, 0xb2, 0xb5, 0x42, 0x59, 0xb2, 0xdf, 0x29, 0x23, 0xe3, 0x96, 0x62, + 0x29, 0xcf, 0xc2, 0xc8, 0xb8, 0x13, 0x02, 0x75, 0x2c, 0x1a, 0x6e, 0x07, 0x2e, 0xf8, 0x81, 0x61, + 0x93, 0xba, 0x25, 0x34, 0x1d, 0x7e, 0x60, 0xb4, 0xda, 0x05, 0x42, 0xd3, 0x72, 0xff, 0x85, 0x34, + 0x28, 0x9c, 0x05, 0x1f, 0xfd, 0x94, 0x06, 0x33, 0xac, 0x7c, 0xbe, 0x13, 0xb8, 0x3c, 0x86, 0x7a, + 0x84, 0xfc, 0xf8, 0x0f, 0xdb, 0x4c, 0x00, 0xac, 0xe7, 0xc0, 0xc3, 0xb9, 0x98, 0xd0, 0xeb, 0x70, + 0x89, 0xde, 0xc0, 0xf3, 0x8d, 0xc0, 0xda, 0xb5, 0x82, 0x6e, 0x34, 0x84, 0xe3, 0xc7, 0xa3, 0x65, + 0xc2, 0xc6, 0x72, 0x16, 0x30, 0x9c, 0x8d, 0x43, 0xff, 0x73, 0x0d, 0x50, 0x7a, 0x0b, 0x21, 0x1b, + 0x46, 0x4d, 0xe9, 0x50, 0xa0, 0x9d, 0x48, 0x34, 0xcb, 0x90, 0x32, 0x87, 0x7e, 0x08, 0x21, 0x06, + 0xe4, 0xc2, 0xd8, 0xbd, 0x6d, 0x2b, 0x20, 0xb6, 0xe5, 0x07, 0x27, 0x14, 0x3c, 0x33, 0x8c, 0x24, + 0xf7, 0x82, 0x04, 0x8c, 0x23, 0x1c, 0xfa, 0xcf, 0x0d, 0xc2, 0x68, 0x18, 0x0c, 0xfc, 0xf0, 0x37, + 0xde, 0x0e, 0xa0, 0x86, 0x92, 0x50, 0xad, 0x1f, 0x0d, 0x0c, 0x63, 0xc2, 0x2a, 0x29, 0x60, 0x38, + 0x03, 0x01, 0x7a, 0x1d, 0x2e, 0x5a, 0xce, 0x96, 0x67, 0xf8, 0x81, 0xd7, 0x61, 0xba, 0xf2, 0x7e, + 0xf2, 0x92, 0x31, 0x19, 0xaa, 0x96, 0x01, 0x0e, 0x67, 0x22, 0x41, 0x04, 0x46, 0x78, 0xce, 0x03, + 0x19, 0xd7, 0xb0, 0x50, 0x86, 0x5d, 0x9e, 0x4b, 0x21, 0xa2, 0x9a, 0xfc, 0xb7, 0x8f, 0x25, 0x6c, + 0x1e, 0x73, 0x84, 0xff, 0x2f, 0xdf, 0xa3, 0xc5, 0xbe, 0xaf, 0x14, 0xc7, 0x17, 0x25, 0x6b, 0xe6, + 0x31, 0x47, 0xe2, 0x85, 0x38, 0x89, 0x50, 0xff, 0x03, 0x0d, 0x86, 0xb8, 0xa3, 0xee, 0xe9, 0x73, + 0x70, 0x3f, 0x11, 0xe3, 0xe0, 0x0a, 0xa5, 0x56, 0x62, 0x43, 0xcd, 0x4d, 0xfa, 0xf3, 0x35, 0x0d, + 0xc6, 0x58, 0x8b, 0x33, 0x60, 0xa9, 0x5e, 0x8e, 0xb3, 0x54, 0x4f, 0x17, 0x9e, 0x4d, 0x0e, 0x43, + 0xf5, 0x07, 0x03, 0x62, 0x2e, 0x8c, 0x63, 0xa9, 0xc1, 0x05, 0x61, 0x0d, 0xbb, 0x6c, 0x6d, 0x11, + 0xba, 0xc5, 0xab, 0x46, 0x97, 0x3f, 0x10, 0x0d, 0x09, 0x5f, 0xac, 0x74, 0x35, 0xce, 0xea, 0x83, + 0x7e, 0x57, 0xa3, 0xbc, 0x41, 0xe0, 0x59, 0x8d, 0xbe, 0x32, 0xe9, 0x84, 0x63, 0x9b, 0x5b, 0xe1, + 0xc0, 0xb8, 0x64, 0xb2, 0x11, 0x31, 0x09, 0xac, 0xf4, 0xfe, 0x7e, 0xb9, 0x9c, 0xa1, 0x32, 0x8b, + 0xb2, 0x6a, 0xf8, 0xc1, 0xa7, 0xfe, 0xa4, 0x67, 0x13, 0xa6, 0xa6, 0x96, 0x23, 0x46, 0xb7, 0x61, + 0xc8, 0x6f, 0xb8, 0x6d, 0x72, 0x9c, 0xdc, 0x60, 0xe1, 0x02, 0xd7, 0x69, 0x4f, 0xcc, 0x01, 0xcc, + 0xbe, 0x02, 0x13, 0xea, 0xc8, 0x33, 0x24, 0x9f, 0xaa, 0x2a, 0xf9, 0x1c, 0xfb, 0xa5, 0x4b, 0x95, + 0x94, 0x7e, 0xaf, 0x04, 0xc3, 0x3c, 0xc3, 0xf6, 0x11, 0x94, 0xf1, 0x96, 0x4c, 0x5f, 0x50, 0x2a, + 0x6e, 0x71, 0xa7, 0x86, 0xea, 0x7c, 0xc9, 0x75, 0x94, 0x35, 0x50, 0x33, 0x18, 0x20, 0x27, 0x0c, + 0xe0, 0x3a, 0x50, 0x3c, 0x7f, 0x11, 0x9f, 0xd8, 0x69, 0x87, 0x6c, 0xfd, 0x23, 0x0d, 0x26, 0x62, + 0x11, 0x71, 0x5b, 0x30, 0xe0, 0x85, 0x99, 0xed, 0x8a, 0xbe, 0x55, 0x48, 0x9b, 0xaa, 0xab, 0x3d, + 0x1a, 0x61, 0x8a, 0x27, 0x0c, 0x9e, 0x5b, 0x3a, 0xa1, 0xe0, 0xb9, 0xfa, 0xe7, 0x35, 0xb8, 0x2c, + 0x27, 0x14, 0x0f, 0x0d, 0x85, 0x1e, 0x85, 0x51, 0xa3, 0x6d, 0x31, 0x95, 0x9a, 0xaa, 0x94, 0x9c, + 0x5f, 0xab, 0xb1, 0x32, 0x1c, 0xd6, 0xa2, 0x77, 0xc0, 0xa8, 0xdc, 0x78, 0x82, 0xed, 0x0c, 0x69, + 0x56, 0xf8, 0xfa, 0x12, 0xb6, 0x40, 0x6f, 0x53, 0x32, 0x4c, 0x0c, 0x45, 0x7c, 0x42, 0x88, 0x98, + 0xbf, 0x02, 0xeb, 0xef, 0x81, 0xb1, 0x7a, 0xfd, 0xf6, 0x7c, 0xa3, 0x41, 0x7c, 0xff, 0x18, 0xca, + 0x65, 0xfd, 0x33, 0x03, 0x30, 0x29, 0x62, 0xdc, 0x59, 0x8e, 0x69, 0x39, 0xcd, 0x33, 0xb8, 0x53, + 0xd6, 0x61, 0x8c, 0x6b, 0x33, 0x0e, 0xc9, 0x42, 0x58, 0x97, 0x8d, 0x92, 0x91, 0xa4, 0xc3, 0x0a, + 0x1c, 0x01, 0x42, 0x77, 0x60, 0xf8, 0x55, 0x4a, 0xdf, 0xe4, 0xb9, 0x38, 0x12, 0x99, 0x09, 0x37, + 0x3d, 0x23, 0x8d, 0x3e, 0x16, 0x20, 0x90, 0xcf, 0x8c, 0xfe, 0x18, 0xc3, 0xd5, 0x4f, 0xec, 0x8a, + 0xd8, 0xca, 0x86, 0xf9, 0x65, 0x26, 0x84, 0xed, 0x20, 0xfb, 0x85, 0x43, 0x44, 0x2c, 0x0c, 0x7e, + 0xac, 0xc7, 0x9b, 0x24, 0x0c, 0x7e, 0x6c, 0xcc, 0x39, 0x57, 0xe3, 0xd3, 0x70, 0x29, 0x73, 0x31, + 0x0e, 0x67, 0x67, 0xf5, 0xdf, 0x28, 0xc1, 0x60, 0x9d, 0x10, 0xf3, 0x0c, 0x76, 0xe6, 0xcb, 0x31, + 0x6e, 0xe7, 0xfd, 0x85, 0x03, 0xf1, 0xe7, 0x29, 0xab, 0xb6, 0x12, 0xca, 0xaa, 0x0f, 0x14, 0xc6, + 0xd0, 0x5b, 0x53, 0xf5, 0x4b, 0x25, 0x00, 0xda, 0x6c, 0xc1, 0x68, 0xec, 0x70, 0x8a, 0x13, 0xee, + 0x66, 0x2d, 0x4e, 0x71, 0xd2, 0xdb, 0xf0, 0x2c, 0x1f, 0x6f, 0x75, 0x18, 0xf6, 0xd8, 0x4d, 0x24, + 0xde, 0x3d, 0x80, 0xa7, 0xc6, 0xa6, 0x25, 0x58, 0xd4, 0xc4, 0xa9, 0xc5, 0xe0, 0x09, 0x51, 0x0b, + 0x7d, 0x0f, 0x58, 0x2e, 0xd3, 0xea, 0x6a, 0x1d, 0xb5, 0x94, 0xd5, 0x29, 0x15, 0xe7, 0xe5, 0x05, + 0xb8, 0x43, 0x4f, 0xf9, 0x67, 0x34, 0x38, 0x97, 0x68, 0x7b, 0x04, 0x99, 0xee, 0x54, 0x68, 0xa6, + 0xfe, 0xfb, 0x1a, 0x8c, 0xd2, 0xb1, 0x9c, 0x01, 0xa1, 0xf9, 0x9b, 0x71, 0x42, 0xf3, 0xde, 0xa2, + 0x4b, 0x9c, 0x43, 0x5f, 0xfe, 0xb4, 0x04, 0x2c, 0xe3, 0x85, 0x30, 0x51, 0x50, 0x5e, 0xfe, 0xb5, + 0x9c, 0x97, 0xff, 0xeb, 0xc2, 0x70, 0x20, 0xa1, 0xa3, 0x54, 0x8c, 0x07, 0xde, 0xa1, 0xd8, 0x06, + 0x0c, 0xc4, 0x8f, 0x4d, 0x86, 0x7d, 0xc0, 0x6b, 0x30, 0xe9, 0x6f, 0xbb, 0x6e, 0x10, 0x46, 0x36, + 0x18, 0x2c, 0xae, 0x8f, 0x66, 0x16, 0xd6, 0x72, 0x2a, 0xfc, 0x01, 0xaa, 0xae, 0xc2, 0xc6, 0x71, + 0x54, 0x68, 0x0e, 0x60, 0xd3, 0x76, 0x1b, 0x3b, 0x95, 0x5a, 0x15, 0x4b, 0x8b, 0x5a, 0x66, 0xb4, + 0xb4, 0x10, 0x96, 0x62, 0xa5, 0x45, 0x5f, 0xb6, 0x0c, 0xdf, 0xd3, 0xf8, 0x4a, 0x1f, 0x63, 0xf3, + 0x9e, 0x21, 0x45, 0x79, 0x7b, 0x82, 0xa2, 0x28, 0x09, 0xf7, 0x63, 0x54, 0xa5, 0x2c, 0x19, 0xf6, + 0xc1, 0x48, 0xff, 0x1c, 0x4b, 0x14, 0xf6, 0xdb, 0x62, 0x9a, 0x61, 0xd2, 0x94, 0x36, 0x4c, 0xda, + 0x6a, 0xf2, 0x57, 0x71, 0x46, 0x0a, 0xe5, 0x8d, 0x0d, 0x5d, 0x34, 0x62, 0xc5, 0x38, 0x8e, 0x00, + 0x3d, 0x05, 0x93, 0x72, 0x76, 0x74, 0x31, 0xa5, 0xe5, 0x06, 0xdb, 0x0e, 0x6b, 0x6a, 0x05, 0x8e, + 0xb7, 0xd3, 0xbf, 0x50, 0x82, 0x87, 0xf8, 0xd8, 0x99, 0xc6, 0xa0, 0x4a, 0xda, 0xc4, 0x31, 0x89, + 0xd3, 0xe8, 0x32, 0x9e, 0xd5, 0x74, 0x9b, 0xe8, 0x75, 0x18, 0xbe, 0x47, 0x88, 0x19, 0x6a, 0xb4, + 0x5f, 0x28, 0x9e, 0x73, 0x26, 0x07, 0xc5, 0x0b, 0x0c, 0x3c, 0xa7, 0xe8, 0xfc, 0x7f, 0x2c, 0x50, + 0x52, 0xe4, 0x6d, 0xcf, 0xdd, 0x0c, 0x59, 0xab, 0x93, 0x47, 0xbe, 0xc6, 0xc0, 0x73, 0xe4, 0xfc, + 0x7f, 0x2c, 0x50, 0xea, 0x6b, 0xf0, 0xf0, 0x11, 0xba, 0x1e, 0x87, 0x85, 0x3e, 0x0c, 0x22, 0x9f, + 0xfd, 0x71, 0x20, 0x7e, 0x47, 0x83, 0x47, 0x14, 0x90, 0x8b, 0x7b, 0x94, 0xab, 0xaf, 0x18, 0x6d, + 0xa3, 0x41, 0x65, 0x54, 0xe6, 0xad, 0x7d, 0xac, 0x1c, 0x18, 0x9f, 0xd1, 0x60, 0x84, 0x1b, 0xd2, + 0x48, 0xf2, 0xfb, 0x72, 0x9f, 0x4b, 0x9e, 0x3b, 0x24, 0x19, 0x5c, 0x59, 0xce, 0x8d, 0xff, 0xf6, + 0xb1, 0xc4, 0xaf, 0xff, 0xdb, 0x21, 0xf8, 0x91, 0xa3, 0x03, 0x42, 0xdf, 0xd3, 0xd2, 0x19, 0x7b, + 0x5b, 0xa7, 0x3b, 0xf8, 0x50, 0x8b, 0x21, 0x04, 0xe3, 0x17, 0x52, 0x09, 0x6c, 0x4e, 0x48, 0x41, + 0xa2, 0xa4, 0x07, 0xfe, 0x67, 0x1a, 0x4c, 0xd0, 0x6b, 0x29, 0x24, 0x2e, 0xfc, 0x33, 0xb5, 0x4f, + 0x79, 0xa6, 0xab, 0x0a, 0xca, 0x84, 0xe7, 0xa5, 0x5a, 0x85, 0x63, 0x63, 0x43, 0x1b, 0xf1, 0xd7, + 0x20, 0x2e, 0x6e, 0x5d, 0xcb, 0xe2, 0x46, 0x8e, 0x93, 0x1e, 0x6a, 0xd6, 0x86, 0xa9, 0xf8, 0xca, + 0x9f, 0xa6, 0x7a, 0x67, 0xf6, 0x59, 0x38, 0x9f, 0x9a, 0xfd, 0xb1, 0x94, 0x1b, 0x7f, 0x7b, 0x10, + 0xca, 0xca, 0x52, 0xc7, 0x4c, 0xe9, 0x24, 0x4f, 0xf0, 0x25, 0x0d, 0xc6, 0x0d, 0xc7, 0x11, 0xe6, + 0x18, 0x72, 0xff, 0x9a, 0x7d, 0x7e, 0xd5, 0x2c, 0x54, 0x73, 0xf3, 0x11, 0x9a, 0x84, 0xbd, 0x81, + 0x52, 0x83, 0xd5, 0xd1, 0xf4, 0x30, 0xaa, 0x2b, 0x9d, 0x99, 0x51, 0x1d, 0xfa, 0xb8, 0xbc, 0x88, + 0xf9, 0x36, 0x7a, 0xf1, 0x14, 0xd6, 0x86, 0xdd, 0xeb, 0xd9, 0xda, 0xb4, 0xd9, 0x0f, 0xc0, 0x74, + 0x72, 0xe5, 0x8e, 0xb5, 0x0b, 0x7e, 0x63, 0x20, 0x46, 0xaa, 0x73, 0xd1, 0x1f, 0x41, 0x87, 0xf8, + 0xe5, 0xc4, 0x66, 0xe1, 0x24, 0xc0, 0x3a, 0xad, 0x05, 0x39, 0xd9, 0x1d, 0x33, 0x70, 0x76, 0x66, + 0x98, 0xfd, 0x7e, 0xb2, 0x05, 0xb8, 0xa4, 0xac, 0x8f, 0x92, 0x8e, 0xef, 0x31, 0x18, 0xd9, 0xb5, + 0x7c, 0x4b, 0xc6, 0xd1, 0x51, 0x6e, 0xe8, 0xe7, 0x79, 0x31, 0x96, 0xf5, 0xfa, 0x72, 0xec, 0xec, + 0xaf, 0xbb, 0x6d, 0xd7, 0x76, 0x9b, 0xdd, 0xf9, 0x7b, 0x86, 0x47, 0xb0, 0xdb, 0x09, 0x04, 0xb4, + 0xa3, 0xde, 0xf7, 0x2b, 0x70, 0x5d, 0x81, 0x96, 0x19, 0x10, 0xe0, 0x38, 0xe0, 0xbe, 0x3e, 0x22, + 0x59, 0x57, 0xe1, 0x31, 0xf9, 0x5b, 0x1a, 0x5c, 0x21, 0x79, 0x57, 0x81, 0xe0, 0x63, 0x5f, 0x3c, + 0xad, 0xab, 0x46, 0xc4, 0x59, 0xcd, 0xab, 0xc6, 0xf9, 0x23, 0x43, 0xdd, 0x58, 0x52, 0xca, 0x52, + 0x3f, 0x7a, 0xb8, 0x8c, 0xef, 0xdd, 0x2b, 0x25, 0x25, 0xfa, 0x65, 0x0d, 0x2e, 0xda, 0x19, 0x47, + 0x47, 0xb0, 0xac, 0xf5, 0x53, 0x38, 0x95, 0xfc, 0xcd, 0x33, 0xab, 0x06, 0x67, 0x0e, 0x05, 0xfd, + 0x6a, 0x6e, 0xa4, 0x0a, 0xfe, 0x24, 0xb9, 0xde, 0xe7, 0x20, 0x4f, 0x2a, 0x68, 0xc5, 0x17, 0x34, + 0x40, 0x66, 0x8a, 0x2d, 0x16, 0x56, 0x24, 0xcf, 0x9d, 0x38, 0xf3, 0xcf, 0x1f, 0xad, 0xd3, 0xe5, + 0x38, 0x63, 0x10, 0xec, 0x3b, 0x07, 0x19, 0xc7, 0x57, 0x84, 0xa0, 0xed, 0xf7, 0x3b, 0x67, 0x51, + 0x06, 0xfe, 0x9d, 0xb3, 0x6a, 0x70, 0xe6, 0x50, 0xf4, 0xcf, 0x8f, 0x70, 0x2d, 0x0d, 0x7b, 0x55, + 0xdc, 0x84, 0xe1, 0x4d, 0xa6, 0xd5, 0x13, 0xe7, 0xb6, 0xb0, 0x0a, 0x91, 0xeb, 0x06, 0xb9, 0x8c, + 0xc4, 0xff, 0xc7, 0x02, 0x32, 0x7a, 0x09, 0x06, 0x4c, 0xc7, 0x17, 0x07, 0xee, 0x7d, 0x7d, 0x28, + 0xc3, 0x22, 0x57, 0x9e, 0xea, 0x6a, 0x1d, 0x53, 0xa0, 0xc8, 0x81, 0x51, 0x47, 0x28, 0x36, 0x84, + 0xec, 0x59, 0x38, 0xdf, 0x69, 0xa8, 0x20, 0x09, 0xd5, 0x32, 0xb2, 0x04, 0x87, 0x38, 0x28, 0xbe, + 0x84, 0x26, 0xbf, 0x30, 0xbe, 0x50, 0xb5, 0xd7, 0x4b, 0x7b, 0xba, 0xa6, 0x2a, 0xea, 0x86, 0x8e, + 0xae, 0xa8, 0x9b, 0xcc, 0x7d, 0xd8, 0x20, 0x30, 0x1c, 0x18, 0x96, 0x13, 0x70, 0x45, 0x4d, 0xc1, + 0x47, 0x78, 0x3a, 0xfe, 0x75, 0x0a, 0x25, 0xd2, 0x88, 0xb0, 0x9f, 0x3e, 0x16, 0xc0, 0xe9, 0xc6, + 0xda, 0x65, 0x69, 0xcb, 0xc5, 0xc1, 0x2c, 0xbc, 0xb1, 0x78, 0xf2, 0x73, 0xbe, 0xb1, 0xf8, 0xff, + 0x58, 0x40, 0x46, 0xaf, 0xc0, 0xa8, 0x2f, 0xcd, 0x26, 0x46, 0xfb, 0x4d, 0x76, 0x2b, 0x6c, 0x26, + 0x84, 0xbf, 0x8e, 0x30, 0x96, 0x08, 0xe1, 0xa3, 0x4d, 0x18, 0xb1, 0xb8, 0x87, 0x89, 0x08, 0xdc, + 0xf3, 0xbe, 0x3e, 0x72, 0xbd, 0xc9, 0x7c, 0xfe, 0x3c, 0xdc, 0x83, 0x04, 0xac, 0x7f, 0x1d, 0xb8, + 0x9e, 0x5d, 0x58, 0xa6, 0x6d, 0xc1, 0xa8, 0x04, 0xd7, 0x8f, 0xdf, 0x98, 0xcc, 0xae, 0xc9, 0xa7, + 0x16, 0xe6, 0xda, 0x0c, 0x61, 0xa3, 0x4a, 0x96, 0xff, 0x5f, 0x14, 0xea, 0xff, 0x68, 0xbe, 0x7f, + 0xaf, 0xb2, 0x74, 0x78, 0xd2, 0x0b, 0x7f, 0xa0, 0xf8, 0xd6, 0x0a, 0x3d, 0xf4, 0x63, 0x69, 0xf0, + 0xa4, 0x13, 0xbf, 0x82, 0x24, 0xc7, 0x72, 0x6f, 0xb0, 0x90, 0xe5, 0xde, 0x33, 0x70, 0x4e, 0x58, + 0x4a, 0xd4, 0x58, 0xea, 0xfa, 0xa0, 0x2b, 0x5c, 0x1b, 0x98, 0x0d, 0x4d, 0x25, 0x5e, 0x85, 0x93, + 0x6d, 0xd1, 0xef, 0x69, 0x30, 0xda, 0x10, 0x2c, 0x87, 0x38, 0x57, 0xcb, 0xfd, 0x3d, 0xc6, 0xcc, + 0x49, 0x0e, 0x86, 0x33, 0xd3, 0xcf, 0x4b, 0x1a, 0x21, 0x8b, 0x4f, 0x48, 0x69, 0x10, 0x8e, 0x1a, + 0xfd, 0x21, 0x95, 0x17, 0x6c, 0x96, 0xf1, 0x93, 0x79, 0x3a, 0x73, 0x9f, 0x8b, 0xbb, 0x7d, 0xce, + 0x62, 0x3e, 0x82, 0xc8, 0x27, 0xf2, 0xe1, 0x50, 0x2a, 0x88, 0x6a, 0x4e, 0x68, 0x2e, 0xea, 0xf0, + 0xd1, 0x3f, 0xd1, 0xe0, 0x11, 0xee, 0xe8, 0x52, 0xa1, 0x5c, 0x04, 0x4b, 0x9c, 0x4e, 0xa2, 0x4c, + 0xed, 0x91, 0x9d, 0xe1, 0xe8, 0xb1, 0xed, 0x0c, 0x1f, 0x3d, 0xd8, 0x2f, 0x3f, 0x52, 0x39, 0x02, + 0x6c, 0x7c, 0xa4, 0x11, 0xa0, 0xd7, 0x60, 0xd2, 0x56, 0xa3, 0xb1, 0x08, 0x02, 0x53, 0x48, 0xd5, + 0x1f, 0x0b, 0xeb, 0xc2, 0x75, 0xbb, 0xb1, 0x22, 0x1c, 0x47, 0x35, 0xbb, 0x03, 0x93, 0xb1, 0x8d, + 0x76, 0xaa, 0x4a, 0x12, 0x07, 0xa6, 0x93, 0xfb, 0xe1, 0x54, 0x6d, 0x6e, 0xee, 0xc0, 0x58, 0x78, + 0x51, 0xa1, 0x87, 0x14, 0x44, 0x11, 0x23, 0x71, 0x87, 0x74, 0x39, 0xd6, 0x72, 0x4c, 0xc0, 0xe3, + 0x1a, 0xfc, 0xe7, 0x69, 0x81, 0x00, 0xa8, 0x7f, 0x43, 0x68, 0xf0, 0xd7, 0x49, 0xab, 0x6d, 0x1b, + 0x01, 0x79, 0xf3, 0xbf, 0x1f, 0xeb, 0xff, 0x4d, 0xe3, 0xf7, 0x0d, 0xbf, 0x56, 0x91, 0x01, 0xe3, + 0x2d, 0x1e, 0x72, 0x98, 0x39, 0xf7, 0x6b, 0xc5, 0xc3, 0x0a, 0xac, 0x44, 0x60, 0xb0, 0x0a, 0x13, + 0xdd, 0x83, 0x31, 0xc9, 0xda, 0x48, 0x8d, 0xc4, 0x52, 0x7f, 0x8c, 0x41, 0xc8, 0x45, 0x85, 0x4f, + 0x93, 0xb2, 0xc4, 0xc7, 0x11, 0x2e, 0xdd, 0x00, 0x94, 0xee, 0x43, 0xa5, 0x60, 0x69, 0x4a, 0xaf, + 0xc5, 0xe3, 0xf8, 0xa5, 0xcc, 0xe9, 0x0f, 0xcd, 0xf1, 0xad, 0x7f, 0xa5, 0x04, 0x99, 0xf9, 0xe6, + 0x90, 0x0e, 0xc3, 0xdc, 0xbb, 0x4d, 0xa6, 0x0f, 0xa7, 0xac, 0x0c, 0x77, 0x7d, 0xc3, 0xa2, 0x06, + 0xdd, 0xe5, 0x9a, 0x10, 0xc7, 0x64, 0xf1, 0xf3, 0x22, 0x2a, 0xa1, 0xfa, 0x51, 0x2e, 0x66, 0x35, + 0xc0, 0xd9, 0xfd, 0xd0, 0x2e, 0xa0, 0x96, 0xb1, 0x97, 0x84, 0xd6, 0x47, 0x42, 0xa5, 0x95, 0x14, + 0x34, 0x9c, 0x81, 0x81, 0x5e, 0xa4, 0x46, 0xa3, 0x41, 0xda, 0x01, 0x31, 0xf9, 0x14, 0xe5, 0x03, + 0x22, 0xbb, 0x48, 0xe7, 0xe3, 0x55, 0x38, 0xd9, 0x56, 0xff, 0xee, 0x20, 0x5c, 0x89, 0x2f, 0x22, + 0x3d, 0xa1, 0xd2, 0x01, 0xed, 0x59, 0x69, 0x5f, 0xcf, 0x17, 0xf2, 0xb1, 0xa4, 0x7d, 0xfd, 0x4c, + 0xc5, 0x23, 0xec, 0x4a, 0x36, 0x6c, 0x5f, 0x76, 0x8a, 0xd9, 0xda, 0xff, 0x00, 0xbc, 0xc9, 0x72, + 0xbc, 0xe6, 0x06, 0x4e, 0xd5, 0x6b, 0xee, 0x0d, 0x0d, 0x66, 0xe3, 0xc5, 0x4b, 0x96, 0x63, 0xf9, + 0xdb, 0x22, 0x0a, 0xdc, 0xf1, 0xcd, 0xfb, 0x59, 0xd2, 0x85, 0xe5, 0x5c, 0x88, 0xb8, 0x07, 0x36, + 0xf4, 0x59, 0x0d, 0xae, 0x26, 0xd6, 0x25, 0x16, 0x93, 0xee, 0xf8, 0x96, 0xfe, 0xcc, 0xff, 0x77, + 0x39, 0x1f, 0x24, 0xee, 0x85, 0x4f, 0xff, 0x97, 0x25, 0x18, 0x62, 0xef, 0xdf, 0x6f, 0x0e, 0x83, + 0x67, 0x36, 0xd4, 0x5c, 0x1b, 0xa0, 0x66, 0xc2, 0x06, 0xe8, 0xd9, 0xe2, 0x28, 0x7a, 0x1b, 0x01, + 0x7d, 0x18, 0x2e, 0xb3, 0x66, 0xf3, 0x26, 0x53, 0xcb, 0xf8, 0xc4, 0x9c, 0x37, 0x4d, 0x16, 0x7d, + 0xe0, 0x70, 0x5d, 0xf4, 0x43, 0x30, 0xd0, 0xf1, 0xec, 0x64, 0x3c, 0x8e, 0x0d, 0xbc, 0x8c, 0x69, + 0xb9, 0xfe, 0x86, 0x06, 0xd3, 0x0c, 0xb6, 0x72, 0x7c, 0xd1, 0x2e, 0x8c, 0x7a, 0xe2, 0x08, 0x8b, + 0x6f, 0xb3, 0x5c, 0x78, 0x6a, 0x19, 0x64, 0x41, 0x64, 0xc4, 0x14, 0xbf, 0x70, 0x88, 0x4b, 0xff, + 0xf6, 0x30, 0xcc, 0xe4, 0x75, 0x42, 0x9f, 0xd3, 0xe0, 0x72, 0x23, 0xe2, 0xe6, 0xe6, 0x3b, 0xc1, + 0xb6, 0xeb, 0x59, 0x81, 0x25, 0x0c, 0x43, 0x0a, 0x8a, 0xb9, 0x95, 0xf9, 0x70, 0x54, 0x2c, 0x86, + 0x5a, 0x25, 0x13, 0x03, 0xce, 0xc1, 0x8c, 0x5e, 0x07, 0xd8, 0x89, 0x82, 0xb6, 0x96, 0x8a, 0xa7, + 0x87, 0x60, 0xd3, 0x56, 0x02, 0xbb, 0xca, 0x41, 0x31, 0xcd, 0xa6, 0x52, 0xae, 0xa0, 0xa3, 0xc8, + 0x7d, 0x7f, 0xfb, 0x0e, 0xe9, 0xb6, 0x0d, 0x4b, 0x3e, 0xff, 0x17, 0x47, 0x5e, 0xaf, 0xdf, 0x16, + 0xa0, 0xe2, 0xc8, 0x95, 0x72, 0x05, 0x1d, 0xfa, 0x94, 0x06, 0x93, 0xae, 0xea, 0xaa, 0xdc, 0x8f, + 0x75, 0x65, 0xa6, 0xcf, 0x33, 0x67, 0xa1, 0xe3, 0x55, 0x71, 0x94, 0x74, 0x4f, 0x9c, 0xf7, 0x93, + 0x57, 0x96, 0x20, 0x6a, 0x2b, 0xfd, 0xa7, 0xb3, 0x55, 0xee, 0x3f, 0x2e, 0x8e, 0xa7, 0xab, 0xd3, + 0xe8, 0xd9, 0xa0, 0x48, 0xd0, 0x30, 0xa3, 0xe4, 0x9a, 0x74, 0x50, 0xc3, 0xc5, 0x07, 0xb5, 0xb8, + 0x5e, 0xa9, 0xc6, 0x80, 0xc5, 0x07, 0x95, 0xae, 0x4e, 0xa3, 0xd7, 0x3f, 0x59, 0x82, 0x07, 0x72, + 0xf6, 0xd8, 0x5f, 0x19, 0xdf, 0xf2, 0xaf, 0x69, 0x30, 0xc6, 0xd6, 0xe0, 0x4d, 0xe2, 0xa0, 0xc2, + 0xc6, 0x9a, 0x63, 0x25, 0xf7, 0xfb, 0x1a, 0x9c, 0x4f, 0x45, 0xef, 0x3c, 0x92, 0x7b, 0xc3, 0x99, + 0x19, 0x70, 0xbd, 0x2d, 0x8a, 0xd4, 0x3d, 0x10, 0x39, 0xcb, 0x26, 0xa3, 0x74, 0xeb, 0x2f, 0xc0, + 0x64, 0xcc, 0x48, 0x2e, 0x8c, 0x03, 0xa4, 0x65, 0xc6, 0x01, 0x52, 0xc3, 0xfc, 0x94, 0x7a, 0x85, + 0xf9, 0x89, 0xb6, 0x7c, 0x9a, 0xb2, 0xfd, 0x95, 0xd9, 0xf2, 0xdf, 0x39, 0x27, 0xb6, 0x3c, 0x7b, + 0x71, 0x78, 0x19, 0x86, 0x59, 0x50, 0x21, 0x79, 0x63, 0xde, 0x2c, 0x1c, 0xac, 0xc8, 0xe7, 0x92, + 0x14, 0xff, 0x1f, 0x0b, 0xa8, 0xa8, 0x0a, 0xd3, 0x0d, 0xdb, 0xed, 0x98, 0x22, 0xb1, 0xe6, 0x6a, + 0x24, 0xb4, 0x85, 0x31, 0x27, 0x2b, 0x89, 0x7a, 0x9c, 0xea, 0x81, 0x30, 0x7f, 0xb3, 0xe0, 0xf7, + 0x59, 0xa1, 0x98, 0x93, 0xd5, 0xd5, 0x3a, 0xcf, 0xd9, 0x10, 0xbe, 0x55, 0xbc, 0x0a, 0x40, 0xe4, + 0xe6, 0x95, 0x7e, 0x85, 0xcf, 0x14, 0x8b, 0xa6, 0x19, 0x1e, 0x01, 0xc9, 0x7c, 0x86, 0x45, 0x3e, + 0x56, 0x90, 0x20, 0x0f, 0xc6, 0xb7, 0xad, 0x4d, 0xe2, 0x39, 0x9c, 0x8f, 0x1a, 0x2a, 0xce, 0x22, + 0xde, 0x8e, 0xc0, 0x70, 0x19, 0x5f, 0x29, 0xc0, 0x2a, 0x12, 0xe4, 0x71, 0x76, 0x84, 0xab, 0x87, + 0xfb, 0xc9, 0x75, 0x1f, 0xe9, 0x9d, 0xa3, 0x79, 0x46, 0x65, 0x58, 0xc1, 0x82, 0x1c, 0x00, 0x27, + 0x8c, 0x26, 0xd6, 0xcf, 0x8b, 0x43, 0x14, 0x93, 0x8c, 0x33, 0x1e, 0xd1, 0x6f, 0xac, 0x60, 0xa0, + 0xeb, 0xda, 0x8a, 0xc2, 0xd3, 0x09, 0x1d, 0xe2, 0xb3, 0x7d, 0x86, 0x08, 0x14, 0xba, 0x93, 0xa8, + 0x00, 0xab, 0x48, 0xe8, 0x1c, 0x5b, 0x61, 0x50, 0x39, 0xa1, 0x23, 0x2c, 0x34, 0xc7, 0x28, 0x34, + 0x9d, 0x48, 0xfc, 0x15, 0xfe, 0xc6, 0x0a, 0x06, 0xf4, 0x8a, 0xf2, 0xd4, 0x05, 0xc5, 0x35, 0x50, + 0x47, 0x7a, 0xe6, 0x7a, 0x77, 0xa4, 0x88, 0x19, 0x67, 0x67, 0xf5, 0xaa, 0xa2, 0x84, 0x61, 0xc1, + 0xf6, 0x28, 0xfd, 0x48, 0x29, 0x65, 0x22, 0xf3, 0xdc, 0x89, 0x9e, 0xe6, 0xb9, 0x15, 0xca, 0xa1, + 0x29, 0xee, 0x22, 0x8c, 0x28, 0x4c, 0x46, 0x2f, 0x1c, 0xf5, 0x64, 0x25, 0x4e, 0xb7, 0xe7, 0x44, + 0x9f, 0x98, 0xac, 0xef, 0x94, 0x4a, 0xf4, 0x79, 0x19, 0x0e, 0x6b, 0xd1, 0x2e, 0x4c, 0xf8, 0x8a, + 0xad, 0xaf, 0xc8, 0xd6, 0xd8, 0xc7, 0xdb, 0x94, 0xb0, 0xf3, 0x65, 0x61, 0x96, 0xd4, 0x12, 0x1c, + 0xc3, 0x83, 0x5e, 0x57, 0x8d, 0x1b, 0xa7, 0x8b, 0x3b, 0x76, 0x66, 0x07, 0x11, 0x8c, 0x34, 0x6c, + 0xa1, 0x5d, 0x9d, 0x6a, 0x73, 0xd8, 0x89, 0x9b, 0xf1, 0x9d, 0x3f, 0x11, 0x47, 0xf6, 0x43, 0xcd, + 0xfc, 0xe8, 0xa7, 0x25, 0x7b, 0x6d, 0xd7, 0xef, 0x78, 0x84, 0x05, 0x47, 0x65, 0x9f, 0x07, 0x45, + 0x9f, 0x76, 0x31, 0x59, 0x89, 0xd3, 0xed, 0x59, 0xa2, 0x7b, 0x9e, 0xec, 0x92, 0x5e, 0x5d, 0xae, + 0x43, 0x9c, 0xc0, 0x67, 0xd9, 0x1c, 0x0b, 0xfa, 0x5e, 0xd6, 0x13, 0xb0, 0x78, 0x86, 0xa0, 0x64, + 0x29, 0x4e, 0xe1, 0xa4, 0x3b, 0x47, 0x75, 0x85, 0x67, 0x49, 0x21, 0x0b, 0xee, 0x1c, 0xd5, 0xcd, + 0x9e, 0xef, 0x1c, 0xb5, 0x04, 0xc7, 0xf0, 0xa0, 0xa7, 0x60, 0xd2, 0x97, 0x99, 0x5b, 0xd8, 0x0a, + 0x5e, 0x8a, 0x62, 0x55, 0xd5, 0xd5, 0x0a, 0x1c, 0x6f, 0xa7, 0xff, 0x3b, 0x0d, 0x20, 0xd4, 0x1e, + 0x9c, 0x85, 0x4e, 0xdc, 0x8c, 0x29, 0x54, 0x16, 0xfa, 0xd2, 0x76, 0x90, 0x5c, 0xcd, 0xf8, 0xb7, + 0x34, 0x98, 0x8a, 0x9a, 0x9d, 0x01, 0xab, 0xde, 0x88, 0xb3, 0xea, 0x1f, 0xe8, 0x6f, 0x5e, 0x39, + 0xfc, 0xfa, 0xff, 0x2d, 0xa9, 0xb3, 0x62, 0xdc, 0xd8, 0x6e, 0xec, 0x8d, 0x99, 0xa2, 0xbe, 0xdd, + 0xcf, 0x1b, 0xb3, 0xea, 0x9e, 0x1b, 0xcd, 0x37, 0xe3, 0xcd, 0xf9, 0x6f, 0xc5, 0x78, 0xa1, 0x3e, + 0x9c, 0xd0, 0x43, 0xc6, 0x47, 0xa2, 0xe6, 0x0b, 0x70, 0x18, 0x63, 0xf4, 0xaa, 0x4a, 0x2a, 0xf9, + 0x6b, 0xf5, 0x07, 0x8b, 0x79, 0x3e, 0x2b, 0x13, 0xee, 0x49, 0x20, 0xf5, 0xbf, 0x37, 0x05, 0xe3, + 0x8a, 0xa2, 0x2d, 0xf1, 0x62, 0xae, 0x9d, 0xc5, 0x8b, 0x79, 0x00, 0xe3, 0x8d, 0x30, 0xd8, 0xb8, + 0x5c, 0xf6, 0x3e, 0x71, 0x86, 0x24, 0x3a, 0x0a, 0x63, 0xee, 0x63, 0x15, 0x0d, 0x65, 0x24, 0xc2, + 0x3d, 0x36, 0x70, 0x02, 0x76, 0x0c, 0xbd, 0xf6, 0xd5, 0xbb, 0x00, 0x24, 0x2f, 0x4a, 0x4c, 0x11, + 0x2d, 0x32, 0x34, 0x42, 0xaf, 0xf9, 0xb7, 0xc3, 0x3a, 0xac, 0xb4, 0x4b, 0xbf, 0xc0, 0x0e, 0x9d, + 0xd9, 0x0b, 0x2c, 0xdd, 0x06, 0xb6, 0xcc, 0x75, 0xd3, 0x97, 0x4d, 0x4e, 0x98, 0x31, 0x27, 0xda, + 0x06, 0x61, 0x91, 0x8f, 0x15, 0x24, 0x39, 0x86, 0x13, 0x23, 0x85, 0x0c, 0x27, 0x3a, 0x70, 0xc1, + 0x23, 0x81, 0xd7, 0xad, 0x74, 0x1b, 0x2c, 0x05, 0x94, 0x17, 0x30, 0x89, 0x72, 0xb4, 0x58, 0xf4, + 0x22, 0x9c, 0x06, 0x85, 0xb3, 0xe0, 0xc7, 0x98, 0xb1, 0xb1, 0x9e, 0xcc, 0xd8, 0xbb, 0x61, 0x3c, + 0x20, 0x8d, 0x6d, 0xc7, 0x6a, 0x18, 0x76, 0xad, 0x2a, 0x42, 0x29, 0x46, 0x7c, 0x45, 0x54, 0x85, + 0xd5, 0x76, 0x68, 0x01, 0x06, 0x3a, 0x96, 0x29, 0xb8, 0xd1, 0x1f, 0x0b, 0x55, 0xd6, 0xb5, 0xea, + 0xfd, 0xfd, 0xf2, 0x5b, 0x23, 0x4b, 0x84, 0x70, 0x56, 0x37, 0xda, 0x3b, 0xcd, 0x1b, 0x41, 0xb7, + 0x4d, 0xfc, 0xb9, 0x8d, 0x5a, 0x15, 0xd3, 0xce, 0x59, 0x46, 0x25, 0x13, 0xc7, 0x30, 0x2a, 0xf9, + 0x82, 0x06, 0x17, 0x8c, 0xa4, 0xb6, 0x9d, 0xf8, 0x33, 0x93, 0xc5, 0xa9, 0x65, 0xb6, 0x06, 0x7f, + 0xe1, 0xaa, 0x98, 0xdf, 0x85, 0xf9, 0x34, 0x3a, 0x9c, 0x35, 0x06, 0xe4, 0x01, 0x6a, 0x59, 0xcd, + 0x30, 0xed, 0x8c, 0xf8, 0xea, 0x53, 0xc5, 0xf4, 0x08, 0x2b, 0x29, 0x48, 0x38, 0x03, 0x3a, 0xba, + 0x07, 0xe3, 0x8d, 0x48, 0x27, 0x2f, 0xb8, 0xea, 0xea, 0x49, 0x3c, 0x0a, 0x70, 0xc9, 0x4b, 0x55, + 0xf8, 0xab, 0x98, 0xc2, 0xd7, 0x34, 0x45, 0xe4, 0x15, 0x2f, 0x4a, 0x6c, 0xd6, 0xd3, 0xc5, 0x5f, + 0xd3, 0xb2, 0x21, 0xe2, 0x1e, 0xd8, 0x58, 0xcc, 0x20, 0x3b, 0x9e, 0x1d, 0x8a, 0x25, 0x46, 0x2f, + 0xe8, 0x67, 0x9c, 0x48, 0x34, 0xc5, 0xb7, 0x66, 0xa2, 0x10, 0x27, 0x11, 0xa2, 0x25, 0x40, 0x84, + 0xab, 0x76, 0x23, 0x41, 0xc1, 0x9f, 0x41, 0x61, 0x16, 0x2d, 0xb4, 0x98, 0xaa, 0xc5, 0x19, 0x3d, + 0xf4, 0x6f, 0x6a, 0x42, 0xf1, 0x76, 0x86, 0x56, 0x15, 0xa7, 0xfd, 0x24, 0xa7, 0xff, 0x99, 0x06, + 0x29, 0x5e, 0x1f, 0x6d, 0xc2, 0x08, 0x05, 0x51, 0x5d, 0xad, 0x8b, 0x69, 0xbd, 0xaf, 0xd8, 0xb5, + 0xcb, 0x40, 0x70, 0x2d, 0xa6, 0xf8, 0x81, 0x25, 0x60, 0x2a, 0x3d, 0x38, 0x4a, 0x54, 0x68, 0x31, + 0xc3, 0x42, 0x7c, 0x8d, 0x1a, 0x5d, 0x9a, 0x4b, 0x0f, 0x6a, 0x09, 0x8e, 0xe1, 0xd1, 0x97, 0x01, + 0x22, 0xf9, 0xac, 0x6f, 0x43, 0x9b, 0xef, 0x0f, 0xc1, 0xa5, 0x7e, 0x9d, 0x16, 0x58, 0x72, 0x23, + 0xb2, 0x6b, 0x35, 0x82, 0xf9, 0xad, 0x80, 0x78, 0x77, 0xef, 0xae, 0xac, 0x6f, 0x7b, 0xc4, 0xdf, + 0x76, 0x6d, 0xb3, 0x60, 0x76, 0x25, 0xf6, 0x30, 0xb7, 0x98, 0x09, 0x11, 0xe7, 0x60, 0x62, 0xb2, + 0xa9, 0x48, 0xb6, 0x8c, 0x29, 0x53, 0xca, 0xf2, 0xfc, 0xf3, 0xc8, 0x2b, 0x5c, 0x36, 0x4d, 0x56, + 0xe2, 0x74, 0xfb, 0x24, 0x90, 0x65, 0xab, 0x65, 0xf1, 0x2c, 0x33, 0x5a, 0x1a, 0x08, 0xab, 0xc4, + 0xe9, 0xf6, 0x2a, 0x10, 0xfe, 0xa5, 0x28, 0xd5, 0x18, 0x4a, 0x03, 0x09, 0x2b, 0x71, 0xba, 0x3d, + 0x32, 0xe1, 0x41, 0x8f, 0x34, 0xdc, 0x56, 0x8b, 0x38, 0x26, 0xcf, 0x1b, 0x68, 0x78, 0x4d, 0xcb, + 0x59, 0xf2, 0x0c, 0xd6, 0x90, 0xa9, 0xfa, 0x34, 0x96, 0x2b, 0xe1, 0x41, 0xdc, 0xa3, 0x1d, 0xee, + 0x09, 0x05, 0xb5, 0xe0, 0x1c, 0x4f, 0x52, 0xe4, 0xd5, 0x9c, 0x80, 0x78, 0xbb, 0x86, 0x2d, 0xf4, + 0x79, 0x85, 0x12, 0x26, 0x6f, 0xc4, 0x41, 0xe1, 0x24, 0x6c, 0xd4, 0xa5, 0xfc, 0x8b, 0x18, 0x8e, + 0x82, 0x72, 0xb4, 0x78, 0xfa, 0x2f, 0x9c, 0x06, 0x87, 0xb3, 0x70, 0xe8, 0x5f, 0xd0, 0x40, 0x58, + 0x34, 0xa3, 0x07, 0x63, 0x6f, 0x26, 0xa3, 0x89, 0xf7, 0x12, 0x99, 0x1d, 0xa1, 0x94, 0x99, 0x1d, + 0xe1, 0xed, 0x4a, 0x48, 0x9f, 0xb1, 0x88, 0xf6, 0x71, 0xc8, 0x4a, 0x66, 0x97, 0xc7, 0x61, 0x2c, + 0xa4, 0xc0, 0x82, 0x33, 0x66, 0x56, 0xe2, 0x11, 0xa9, 0x8e, 0xea, 0xf5, 0x3f, 0xd2, 0x40, 0x40, + 0x60, 0x79, 0x88, 0x8e, 0x94, 0x8f, 0xe6, 0x50, 0x13, 0x29, 0x25, 0x8f, 0xce, 0x40, 0x6e, 0x1e, + 0x9d, 0x53, 0x4a, 0x2f, 0xf3, 0x5b, 0x1a, 0x9c, 0x8b, 0xc7, 0x58, 0xf2, 0xd1, 0xdb, 0x60, 0x44, + 0x44, 0x61, 0x14, 0x61, 0xd4, 0x58, 0x57, 0x11, 0x06, 0x01, 0xcb, 0xba, 0xb8, 0x5a, 0xad, 0x0f, + 0x51, 0x35, 0x3b, 0xd4, 0xd3, 0x21, 0x52, 0xe3, 0xa7, 0xa7, 0x61, 0x98, 0x87, 0xf0, 0xa3, 0x34, + 0x2d, 0xc3, 0xfd, 0xf3, 0x4e, 0xf1, 0x48, 0x81, 0x45, 0x7c, 0xf6, 0xd4, 0x68, 0xf9, 0xa5, 0x9e, + 0xd1, 0xf2, 0x31, 0x4f, 0xdb, 0xd5, 0xc7, 0x13, 0x4a, 0x05, 0xd7, 0x44, 0x1e, 0x70, 0x99, 0xb2, + 0x2b, 0x88, 0xbd, 0x2d, 0x0c, 0x16, 0xe7, 0x00, 0xf9, 0x02, 0x28, 0x2f, 0x0c, 0x53, 0x3d, 0x5f, + 0x17, 0x64, 0x8c, 0xb4, 0xa1, 0xe2, 0x26, 0x8b, 0x62, 0xc9, 0x8f, 0x10, 0x23, 0x2d, 0x3c, 0x48, + 0xc3, 0xb9, 0x07, 0x69, 0x0b, 0x46, 0xc4, 0x51, 0x10, 0xc4, 0xf1, 0x7d, 0x7d, 0xe4, 0xbf, 0x52, + 0xc2, 0xfa, 0xf2, 0x02, 0x2c, 0x81, 0xd3, 0x1b, 0xb7, 0x65, 0xec, 0x59, 0xad, 0x4e, 0x8b, 0x51, + 0xc4, 0x21, 0xb5, 0x29, 0x2b, 0xc6, 0xb2, 0x9e, 0x35, 0xe5, 0x96, 0x9e, 0x4c, 0x20, 0x53, 0x9b, + 0xf2, 0x62, 0x2c, 0xeb, 0xd1, 0x4b, 0x30, 0xda, 0x32, 0xf6, 0xea, 0x1d, 0xaf, 0x49, 0xc4, 0xcb, + 0x42, 0x3e, 0x8f, 0xd7, 0x09, 0x2c, 0x7b, 0xce, 0x72, 0x02, 0x3f, 0xf0, 0xe6, 0x6a, 0x4e, 0x70, + 0xd7, 0xab, 0x07, 0x5e, 0x98, 0x04, 0x67, 0x45, 0x40, 0xc1, 0x21, 0x3c, 0x64, 0xc3, 0x54, 0xcb, + 0xd8, 0xdb, 0x70, 0x8c, 0x30, 0xdd, 0xfe, 0x78, 0x41, 0x0c, 0xec, 0x79, 0x79, 0x25, 0x06, 0x0b, + 0x27, 0x60, 0x67, 0xbc, 0x64, 0x4f, 0x9c, 0xd6, 0x4b, 0xf6, 0x7c, 0xe8, 0xb7, 0xc3, 0xe5, 0xbf, + 0x2b, 0x99, 0x1e, 0xf2, 0x3d, 0x7d, 0x72, 0x5e, 0x0e, 0x7d, 0x72, 0xa6, 0x8a, 0x3f, 0xbd, 0xf6, + 0xf0, 0xc7, 0xe9, 0xc0, 0x38, 0xe5, 0xb0, 0x79, 0x29, 0x15, 0xd0, 0x0a, 0xab, 0x32, 0xab, 0x21, + 0x18, 0x25, 0x7d, 0x6b, 0x04, 0x1a, 0xab, 0x78, 0xd0, 0x5d, 0x9e, 0x8e, 0xdd, 0x26, 0x41, 0xd4, + 0x84, 0x29, 0x06, 0xa6, 0xd9, 0xf9, 0x09, 0xb3, 0xa7, 0xa7, 0x1a, 0xe0, 0xec, 0x7e, 0x51, 0x34, + 0x97, 0xf3, 0xd9, 0xd1, 0x5c, 0xd0, 0xcf, 0x65, 0xbd, 0x17, 0x20, 0xb6, 0xa6, 0x1f, 0x2a, 0x4e, + 0x1b, 0x0a, 0xbf, 0x1a, 0xfc, 0x2b, 0x0d, 0x66, 0x5a, 0x39, 0x79, 0x4e, 0xc5, 0x33, 0xc6, 0x7a, + 0x1f, 0xf4, 0x21, 0x37, 0x77, 0xea, 0xc2, 0x23, 0x07, 0xfb, 0xe5, 0x43, 0x33, 0xac, 0xe2, 0xdc, + 0xb1, 0x21, 0x0f, 0x46, 0xfc, 0xae, 0xdf, 0x08, 0x6c, 0x7f, 0xe6, 0x62, 0xf1, 0x74, 0x9a, 0x82, + 0xb2, 0xd6, 0x39, 0x24, 0x4e, 0x5a, 0xa3, 0x60, 0xf2, 0xbc, 0x14, 0x4b, 0x44, 0xfd, 0xfa, 0x7b, + 0xf7, 0x11, 0xc0, 0x72, 0xf6, 0x26, 0x4c, 0xa8, 0x83, 0x3c, 0x96, 0x9b, 0xf9, 0xaf, 0x68, 0x30, + 0x9d, 0xbc, 0xb4, 0xd4, 0x8c, 0xf7, 0xda, 0xe9, 0x66, 0xbc, 0x57, 0xec, 0x68, 0x4a, 0x3d, 0xec, + 0x68, 0x9e, 0x81, 0xcb, 0xd9, 0x7b, 0x99, 0x72, 0x90, 0x86, 0x6d, 0xbb, 0xf7, 0x84, 0xe4, 0x16, + 0xe5, 0x99, 0xa2, 0x85, 0x98, 0xd7, 0xe9, 0x1f, 0x87, 0x64, 0xb8, 0x62, 0xf4, 0x0a, 0x8c, 0xf9, + 0xfe, 0x36, 0x8f, 0x44, 0x29, 0x26, 0x59, 0x4c, 0x64, 0x97, 0xe1, 0x2c, 0x85, 0x6b, 0xa4, 0xfc, + 0x89, 0x23, 0xf0, 0x0b, 0x2f, 0x7e, 0xf5, 0xbb, 0xd7, 0xde, 0xf2, 0x8d, 0xef, 0x5e, 0x7b, 0xcb, + 0xb7, 0xbf, 0x7b, 0xed, 0x2d, 0x3f, 0x79, 0x70, 0x4d, 0xfb, 0xea, 0xc1, 0x35, 0xed, 0x1b, 0x07, + 0xd7, 0xb4, 0x6f, 0x1f, 0x5c, 0xd3, 0xfe, 0xf3, 0xc1, 0x35, 0xed, 0xe7, 0xff, 0xcb, 0xb5, 0xb7, + 0xbc, 0xf4, 0x64, 0x84, 0xfd, 0x86, 0x44, 0x1a, 0xfd, 0xd3, 0xde, 0x69, 0xde, 0xa0, 0xd8, 0xa5, + 0x8b, 0x12, 0xc3, 0xfe, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x20, 0x88, 0xea, 0xbb, 0x07, 0xeb, + 0x00, 0x00, } func (m *APIServerLogging) Marshal() (dAtA []byte, err error) { @@ -8188,6 +8221,38 @@ func (m *ETCDEncryptionKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, erro return len(dAtA) - i, nil } +func (m *EncryptionConfig) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EncryptionConfig) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EncryptionConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Resources) > 0 { + for iNdEx := len(m.Resources) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Resources[iNdEx]) + copy(dAtA[i:], m.Resources[iNdEx]) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Resources[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func (m *ExpirableVersion) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -9076,6 +9141,20 @@ func (m *KubeAPIServerConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.EncryptionConfig != nil { + { + size, err := m.EncryptionConfig.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x82 + } if m.DefaultUnreachableTolerationSeconds != nil { i = encodeVarintGenerated(dAtA, i, uint64(*m.DefaultUnreachableTolerationSeconds)) i-- @@ -14754,6 +14833,17 @@ func (m *ShootStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.EncryptedResources) > 0 { + for iNdEx := len(m.EncryptedResources) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.EncryptedResources[iNdEx]) + copy(dAtA[i:], m.EncryptedResources[iNdEx]) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.EncryptedResources[iNdEx]))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x92 + } + } if m.LastMaintenance != nil { { size, err := m.LastMaintenance.MarshalToSizedBuffer(dAtA[:i]) @@ -16624,6 +16714,21 @@ func (m *ETCDEncryptionKeyRotation) Size() (n int) { return n } +func (m *EncryptionConfig) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Resources) > 0 { + for _, s := range m.Resources { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + func (m *ExpirableVersion) Size() (n int) { if m == nil { return 0 @@ -17016,6 +17121,10 @@ func (m *KubeAPIServerConfig) Size() (n int) { if m.DefaultUnreachableTolerationSeconds != nil { n += 1 + sovGenerated(uint64(*m.DefaultUnreachableTolerationSeconds)) } + if m.EncryptionConfig != nil { + l = m.EncryptionConfig.Size() + n += 2 + l + sovGenerated(uint64(l)) + } return n } @@ -19124,6 +19233,12 @@ func (m *ShootStatus) Size() (n int) { l = m.LastMaintenance.Size() n += 2 + l + sovGenerated(uint64(l)) } + if len(m.EncryptedResources) > 0 { + for _, s := range m.EncryptedResources { + l = len(s) + n += 2 + l + sovGenerated(uint64(l)) + } + } return n } @@ -20060,6 +20175,16 @@ func (this *ETCDEncryptionKeyRotation) String() string { }, "") return s } +func (this *EncryptionConfig) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EncryptionConfig{`, + `Resources:` + fmt.Sprintf("%v", this.Resources) + `,`, + `}`, + }, "") + return s +} func (this *ExpirableVersion) String() string { if this == nil { return "nil" @@ -20350,6 +20475,7 @@ func (this *KubeAPIServerConfig) String() string { `Logging:` + strings.Replace(this.Logging.String(), "APIServerLogging", "APIServerLogging", 1) + `,`, `DefaultNotReadyTolerationSeconds:` + valueToStringGenerated(this.DefaultNotReadyTolerationSeconds) + `,`, `DefaultUnreachableTolerationSeconds:` + valueToStringGenerated(this.DefaultUnreachableTolerationSeconds) + `,`, + `EncryptionConfig:` + strings.Replace(this.EncryptionConfig.String(), "EncryptionConfig", "EncryptionConfig", 1) + `,`, `}`, }, "") return s @@ -21793,6 +21919,7 @@ func (this *ShootStatus) String() string { `Credentials:` + strings.Replace(this.Credentials.String(), "ShootCredentials", "ShootCredentials", 1) + `,`, `LastHibernationTriggerTime:` + strings.Replace(fmt.Sprintf("%v", this.LastHibernationTriggerTime), "Time", "v11.Time", 1) + `,`, `LastMaintenance:` + strings.Replace(this.LastMaintenance.String(), "LastMaintenance", "LastMaintenance", 1) + `,`, + `EncryptedResources:` + fmt.Sprintf("%v", this.EncryptedResources) + `,`, `}`, }, "") return s @@ -29049,6 +29176,88 @@ func (m *ETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { } return nil } +func (m *EncryptionConfig) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EncryptionConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EncryptionConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Resources = append(m.Resources, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *ExpirableVersion) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -32287,6 +32496,42 @@ func (m *KubeAPIServerConfig) Unmarshal(dAtA []byte) error { } } m.DefaultUnreachableTolerationSeconds = &v + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EncryptionConfig", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.EncryptionConfig == nil { + m.EncryptionConfig = &EncryptionConfig{} + } + if err := m.EncryptionConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -49275,6 +49520,38 @@ func (m *ShootStatus) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EncryptedResources", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EncryptedResources = append(m.EncryptedResources, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.proto b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.proto index 7ad1593c3..3ad9f35f9 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.proto +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.proto @@ -761,6 +761,16 @@ message ETCDEncryptionKeyRotation { optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTriggeredTime = 5; } +// EncryptionConfig contains customizable encryption configuration of the API server. +message EncryptionConfig { + // Resources contains the list of resources that shall be encrypted in addition to secrets. + // Each item is a Kubernetes resource name in plural (resource or resource.group) that should be encrypted. + // Note that configuring a custom resource is only supported for versions >= 1.26. + // Wildcards are not supported for now. + // See https://github.com/gardener/gardener/blob/master/docs/usage/etcd_encryption_config.md for more details. + repeated string resources = 1; +} + // ExpirableVersion contains a version and an expiration date. message ExpirableVersion { // Version is the version identifier. @@ -1093,6 +1103,10 @@ message KubeAPIServerConfig { // Defaults to 300. // +optional optional int64 defaultUnreachableTolerationSeconds = 15; + + // EncryptionConfig contains customizable encryption configuration of the Kube API server. + // +optional + optional EncryptionConfig encryptionConfig = 16; } // KubeControllerManagerConfig contains configuration settings for the kube-controller-manager. @@ -2874,6 +2888,12 @@ message ShootStatus { // LastMaintenance holds information about the last maintenance operations on the Shoot. // +optional optional LastMaintenance lastMaintenance = 17; + + // EncryptedResources is the list of resources in the Shoot which are currently encrypted. + // Secrets are encrypted by default and are not part of the list. + // See https://github.com/gardener/gardener/blob/master/docs/usage/etcd_encryption_config.md for more details. + // +optional + repeated string encryptedResources = 18; } // ShootTemplate is a template for creating a Shoot object. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shoot.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shoot.go index 35689dd7f..ba4a919bd 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shoot.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shoot.go @@ -203,6 +203,11 @@ type ShootStatus struct { // LastMaintenance holds information about the last maintenance operations on the Shoot. // +optional LastMaintenance *LastMaintenance `json:"lastMaintenance,omitempty" protobuf:"bytes,17,opt,name=lastMaintenance"` + // EncryptedResources is the list of resources in the Shoot which are currently encrypted. + // Secrets are encrypted by default and are not part of the list. + // See https://github.com/gardener/gardener/blob/master/docs/usage/etcd_encryption_config.md for more details. + // +optional + EncryptedResources []string `json:"encryptedResources,omitempty" protobuf:"bytes,18,rep,name=encryptedResources"` } // LastMaintenance holds information about a maintenance operation on the Shoot. @@ -747,6 +752,9 @@ type KubeAPIServerConfig struct { // Defaults to 300. // +optional DefaultUnreachableTolerationSeconds *int64 `json:"defaultUnreachableTolerationSeconds,omitempty" protobuf:"varint,15,opt,name=defaultUnreachableTolerationSeconds"` + // EncryptionConfig contains customizable encryption configuration of the Kube API server. + // +optional + EncryptionConfig *EncryptionConfig `json:"encryptionConfig,omitempty" protobuf:"bytes,16,opt,name=encryptionConfig"` } // APIServerLogging contains configuration for the logs level and http access logs @@ -772,6 +780,16 @@ type APIServerRequests struct { MaxMutatingInflight *int32 `json:"maxMutatingInflight,omitempty" protobuf:"bytes,2,name=maxMutatingInflight"` } +// EncryptionConfig contains customizable encryption configuration of the API server. +type EncryptionConfig struct { + // Resources contains the list of resources that shall be encrypted in addition to secrets. + // Each item is a Kubernetes resource name in plural (resource or resource.group) that should be encrypted. + // Note that configuring a custom resource is only supported for versions >= 1.26. + // Wildcards are not supported for now. + // See https://github.com/gardener/gardener/blob/master/docs/usage/etcd_encryption_config.md for more details. + Resources []string `json:"resources" protobuf:"bytes,1,rep,name=resources"` +} + // ServiceAccountConfig is the kube-apiserver configuration for service accounts. type ServiceAccountConfig struct { // Issuer is the identifier of the service account token issuer. The issuer will assert this diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.conversion.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.conversion.go index c0aef342e..5af375b1d 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.conversion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.conversion.go @@ -522,6 +522,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*EncryptionConfig)(nil), (*core.EncryptionConfig)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_EncryptionConfig_To_core_EncryptionConfig(a.(*EncryptionConfig), b.(*core.EncryptionConfig), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.EncryptionConfig)(nil), (*EncryptionConfig)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_EncryptionConfig_To_v1beta1_EncryptionConfig(a.(*core.EncryptionConfig), b.(*EncryptionConfig), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*ExpirableVersion)(nil), (*core.ExpirableVersion)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_ExpirableVersion_To_core_ExpirableVersion(a.(*ExpirableVersion), b.(*core.ExpirableVersion), scope) }); err != nil { @@ -2941,6 +2951,26 @@ func Convert_core_ETCDEncryptionKeyRotation_To_v1beta1_ETCDEncryptionKeyRotation return autoConvert_core_ETCDEncryptionKeyRotation_To_v1beta1_ETCDEncryptionKeyRotation(in, out, s) } +func autoConvert_v1beta1_EncryptionConfig_To_core_EncryptionConfig(in *EncryptionConfig, out *core.EncryptionConfig, s conversion.Scope) error { + out.Resources = *(*[]string)(unsafe.Pointer(&in.Resources)) + return nil +} + +// Convert_v1beta1_EncryptionConfig_To_core_EncryptionConfig is an autogenerated conversion function. +func Convert_v1beta1_EncryptionConfig_To_core_EncryptionConfig(in *EncryptionConfig, out *core.EncryptionConfig, s conversion.Scope) error { + return autoConvert_v1beta1_EncryptionConfig_To_core_EncryptionConfig(in, out, s) +} + +func autoConvert_core_EncryptionConfig_To_v1beta1_EncryptionConfig(in *core.EncryptionConfig, out *EncryptionConfig, s conversion.Scope) error { + out.Resources = *(*[]string)(unsafe.Pointer(&in.Resources)) + return nil +} + +// Convert_core_EncryptionConfig_To_v1beta1_EncryptionConfig is an autogenerated conversion function. +func Convert_core_EncryptionConfig_To_v1beta1_EncryptionConfig(in *core.EncryptionConfig, out *EncryptionConfig, s conversion.Scope) error { + return autoConvert_core_EncryptionConfig_To_v1beta1_EncryptionConfig(in, out, s) +} + func autoConvert_v1beta1_ExpirableVersion_To_core_ExpirableVersion(in *ExpirableVersion, out *core.ExpirableVersion, s conversion.Scope) error { out.Version = in.Version out.ExpirationDate = (*metav1.Time)(unsafe.Pointer(in.ExpirationDate)) @@ -3392,6 +3422,7 @@ func autoConvert_v1beta1_KubeAPIServerConfig_To_core_KubeAPIServerConfig(in *Kub out.Logging = (*core.APIServerLogging)(unsafe.Pointer(in.Logging)) out.DefaultNotReadyTolerationSeconds = (*int64)(unsafe.Pointer(in.DefaultNotReadyTolerationSeconds)) out.DefaultUnreachableTolerationSeconds = (*int64)(unsafe.Pointer(in.DefaultUnreachableTolerationSeconds)) + out.EncryptionConfig = (*core.EncryptionConfig)(unsafe.Pointer(in.EncryptionConfig)) return nil } @@ -3427,6 +3458,7 @@ func autoConvert_core_KubeAPIServerConfig_To_v1beta1_KubeAPIServerConfig(in *cor out.Logging = (*APIServerLogging)(unsafe.Pointer(in.Logging)) out.DefaultNotReadyTolerationSeconds = (*int64)(unsafe.Pointer(in.DefaultNotReadyTolerationSeconds)) out.DefaultUnreachableTolerationSeconds = (*int64)(unsafe.Pointer(in.DefaultUnreachableTolerationSeconds)) + out.EncryptionConfig = (*EncryptionConfig)(unsafe.Pointer(in.EncryptionConfig)) return nil } @@ -5954,6 +5986,7 @@ func autoConvert_v1beta1_ShootStatus_To_core_ShootStatus(in *ShootStatus, out *c out.Credentials = (*core.ShootCredentials)(unsafe.Pointer(in.Credentials)) out.LastHibernationTriggerTime = (*metav1.Time)(unsafe.Pointer(in.LastHibernationTriggerTime)) out.LastMaintenance = (*core.LastMaintenance)(unsafe.Pointer(in.LastMaintenance)) + out.EncryptedResources = *(*[]string)(unsafe.Pointer(&in.EncryptedResources)) return nil } @@ -5982,6 +6015,7 @@ func autoConvert_core_ShootStatus_To_v1beta1_ShootStatus(in *core.ShootStatus, o out.MigrationStartTime = (*metav1.Time)(unsafe.Pointer(in.MigrationStartTime)) out.Credentials = (*ShootCredentials)(unsafe.Pointer(in.Credentials)) out.LastMaintenance = (*LastMaintenance)(unsafe.Pointer(in.LastMaintenance)) + out.EncryptedResources = *(*[]string)(unsafe.Pointer(&in.EncryptedResources)) return nil } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.deepcopy.go index 98df27cd5..56962c2c4 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.deepcopy.go @@ -1412,6 +1412,27 @@ func (in *ETCDEncryptionKeyRotation) DeepCopy() *ETCDEncryptionKeyRotation { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EncryptionConfig) DeepCopyInto(out *EncryptionConfig) { + *out = *in + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EncryptionConfig. +func (in *EncryptionConfig) DeepCopy() *EncryptionConfig { + if in == nil { + return nil + } + out := new(EncryptionConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ExpirableVersion) DeepCopyInto(out *ExpirableVersion) { *out = *in @@ -1961,6 +1982,11 @@ func (in *KubeAPIServerConfig) DeepCopyInto(out *KubeAPIServerConfig) { *out = new(int64) **out = **in } + if in.EncryptionConfig != nil { + in, out := &in.EncryptionConfig, &out.EncryptionConfig + *out = new(EncryptionConfig) + (*in).DeepCopyInto(*out) + } return } @@ -4869,6 +4895,11 @@ func (in *ShootStatus) DeepCopyInto(out *ShootStatus) { *out = new(LastMaintenance) (*in).DeepCopyInto(*out) } + if in.EncryptedResources != nil { + in, out := &in.EncryptedResources, &out.EncryptedResources + *out = make([]string, len(*in)) + copy(*out, *in) + } return } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/core/zz_generated.deepcopy.go index 1c213ccc6..eaed0aa2c 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/zz_generated.deepcopy.go @@ -1414,6 +1414,27 @@ func (in *ETCDEncryptionKeyRotation) DeepCopy() *ETCDEncryptionKeyRotation { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EncryptionConfig) DeepCopyInto(out *EncryptionConfig) { + *out = *in + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EncryptionConfig. +func (in *EncryptionConfig) DeepCopy() *EncryptionConfig { + if in == nil { + return nil + } + out := new(EncryptionConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ExpirableVersion) DeepCopyInto(out *ExpirableVersion) { *out = *in @@ -1956,6 +1977,11 @@ func (in *KubeAPIServerConfig) DeepCopyInto(out *KubeAPIServerConfig) { *out = new(int64) **out = **in } + if in.EncryptionConfig != nil { + in, out := &in.EncryptionConfig, &out.EncryptionConfig + *out = new(EncryptionConfig) + (*in).DeepCopyInto(*out) + } return } @@ -4859,6 +4885,11 @@ func (in *ShootStatus) DeepCopyInto(out *ShootStatus) { *out = new(LastMaintenance) (*in).DeepCopyInto(*out) } + if in.EncryptedResources != nil { + in, out := &in.EncryptedResources, &out.EncryptedResources + *out = make([]string, len(*in)) + copy(*out, *in) + } return } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_infrastructure.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_infrastructure.go index 32609974f..5135ba2f0 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_infrastructure.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_infrastructure.go @@ -89,4 +89,8 @@ type InfrastructureStatus struct { // be statically defined in the Shoot resource but must be computed dynamically. // +optional NodesCIDR *string `json:"nodesCIDR,omitempty"` + // EgressCIDRs is a list of CIDRs used by the shoot as the source IP for egress traffic. For certain environments the egress + // IPs may not be stable in which case the extension controller may opt to not populate this field. + // +optional + EgressCIDRs []string `json:"egressCIDRs,omitempty"` } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/zz_generated.deepcopy.go index b60aa5ea6..dba2757b4 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/zz_generated.deepcopy.go @@ -1215,6 +1215,11 @@ func (in *InfrastructureStatus) DeepCopyInto(out *InfrastructureStatus) { *out = new(string) **out = **in } + if in.EgressCIDRs != nil { + in, out := &in.EgressCIDRs, &out.EgressCIDRs + *out = make([]string, len(*in)) + copy(*out, *in) + } return } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/types.go b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/types.go index 19b94151a..4ce759a76 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/types.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/types.go @@ -421,6 +421,9 @@ type GardenerAPIServerConfig struct { // cache size flags will have no effect, except when setting it to 0 (which disables the watch cache). // +optional WatchCacheSizes *gardencorev1beta1.WatchCacheSizes `json:"watchCacheSizes,omitempty"` + // EncryptionConfig contains customizable encryption configuration of the Gardener API server. + // +optional + EncryptionConfig *gardencorev1beta1.EncryptionConfig `json:"encryptionConfig,omitempty"` } // GardenerAdmissionControllerConfig contains configuration settings for the gardener-admission-controller. @@ -517,6 +520,11 @@ type GardenStatus struct { // Credentials contains information about the virtual garden cluster credentials. // +optional Credentials *Credentials `json:"credentials,omitempty"` + // EncryptedResources is the list of resources which are currently encrypted in the virtual garden by the virtual kube-apiserver. + // Resources which are encrypted by default will not appear here. + // See https://github.com/gardener/gardener/blob/master/docs/concepts/operator.md#etcd-encryption-config for more details. + // +optional + EncryptedResources []string `json:"encryptedResources,omitempty"` } // Credentials contains information about the virtual garden cluster credentials. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/zz_generated.deepcopy.go index fd1880463..4be368952 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/zz_generated.deepcopy.go @@ -394,6 +394,11 @@ func (in *GardenStatus) DeepCopyInto(out *GardenStatus) { *out = new(Credentials) (*in).DeepCopyInto(*out) } + if in.EncryptedResources != nil { + in, out := &in.EncryptedResources, &out.EncryptedResources + *out = make([]string, len(*in)) + copy(*out, *in) + } return } @@ -479,6 +484,11 @@ func (in *GardenerAPIServerConfig) DeepCopyInto(out *GardenerAPIServerConfig) { *out = new(v1beta1.WatchCacheSizes) (*in).DeepCopyInto(*out) } + if in.EncryptionConfig != nil { + in, out := &in.EncryptionConfig, &out.EncryptionConfig + *out = new(v1beta1.EncryptionConfig) + (*in).DeepCopyInto(*out) + } return } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/types.go b/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/types.go index 7e63aaabd..70ce212e5 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/types.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/types.go @@ -179,17 +179,6 @@ const ( // NetworkingFromWorldToPorts is a constant for an annotation on a Service which contains a list of ports to which // ingress traffic from everywhere shall be allowed. NetworkingFromWorldToPorts = "networking.resources.gardener.cloud/from-world-to-ports" - // NetworkingFromPolicyPodLabelSelector is a constant for an annotation on a Service which contains the label - // selector which should be used for pods initiating the communication with this Service. Note that the ports must - // be container ports, not service ports. - // Deprecated: Use `networking.resources.gardener.cloud/from--allowed-ports` - // (NetworkPolicyFromPolicyAnnotationPrefix and NetworkPolicyFromPolicyAnnotationSuffix) instead. - NetworkingFromPolicyPodLabelSelector = "networking.resources.gardener.cloud/from-policy-pod-label-selector" - // NetworkingFromPolicyAllowedPorts is a constant for an annotation on a Service which contains a list of ports to - // which ingress traffic shall be allowed. Note that the ports must be container ports, not service ports. - // Deprecated: Use `networking.resources.gardener.cloud/from--allowed-ports` - // (NetworkPolicyFromPolicyAnnotationPrefix and NetworkPolicyFromPolicyAnnotationSuffix) instead. - NetworkingFromPolicyAllowedPorts = "networking.resources.gardener.cloud/from-policy-allowed-ports" // NetworkPolicyFromPolicyAnnotationPrefix is a constant for an annotation key prefix on a Service which contains // the label selector alias which is used by pods initiating the communication to this Service. The annotation key // must be suffixed with NetworkPolicyFromPolicyAnnotationSuffix, and the annotations value must be a list of diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/types_shared.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/types_shared.go index 75dd1a44a..8fe047f9c 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/types_shared.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/types_shared.go @@ -23,13 +23,13 @@ import ( type OpenIDConnectPresetSpec struct { // Server contains the kube-apiserver's OpenID Connect configuration. - // This configuration is not overwritting any existing OpenID Connect + // This configuration is not overwriting any existing OpenID Connect // configuration already set on the Shoot object. Server KubeAPIServerOpenIDConnect // Client contains the configuration used for client OIDC authentication // of Shoot clusters. - // This configuration is not overwritting any existing OpenID Connect + // This configuration is not overwriting any existing OpenID Connect // client authentication already set on the Shoot object. Client *OpenIDConnectClientAuthentication diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.proto b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.proto index 9613ec5ef..866c96b35 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.proto +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.proto @@ -139,13 +139,13 @@ message OpenIDConnectPresetList { // a specific OpenID Connect configuration is applied. message OpenIDConnectPresetSpec { // Server contains the kube-apiserver's OpenID Connect configuration. - // This configuration is not overwritting any existing OpenID Connect + // This configuration is not overwriting any existing OpenID Connect // configuration already set on the Shoot object. optional KubeAPIServerOpenIDConnect server = 1; // Client contains the configuration used for client OIDC authentication // of Shoot clusters. - // This configuration is not overwritting any existing OpenID Connect + // This configuration is not overwriting any existing OpenID Connect // client authentication already set on the Shoot object. // +optional optional OpenIDConnectClientAuthentication client = 2; diff --git a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_shared.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_shared.go index ebc64a882..399d8b5a7 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_shared.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_shared.go @@ -30,13 +30,13 @@ const ( type OpenIDConnectPresetSpec struct { // Server contains the kube-apiserver's OpenID Connect configuration. - // This configuration is not overwritting any existing OpenID Connect + // This configuration is not overwriting any existing OpenID Connect // configuration already set on the Shoot object. Server KubeAPIServerOpenIDConnect `json:"server" protobuf:"bytes,1,opt,name=server"` // Client contains the configuration used for client OIDC authentication // of Shoot clusters. - // This configuration is not overwritting any existing OpenID Connect + // This configuration is not overwriting any existing OpenID Connect // client authentication already set on the Shoot object. // +optional Client *OpenIDConnectClientAuthentication `json:"client,omitempty" protobuf:"bytes,2,opt,name=client"` diff --git a/vendor/github.com/gardener/gardener/pkg/utils/flow/taskfn.go b/vendor/github.com/gardener/gardener/pkg/utils/flow/taskfn.go index 1db945334..84c9fdffd 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/flow/taskfn.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/flow/taskfn.go @@ -97,6 +97,53 @@ func Sequential(fns ...TaskFn) TaskFn { } } +// ParallelN returns a function that runs the given TaskFns in parallel by spawning N workers, +// collecting their errors in a multierror. If N <= 0, then N will be defaulted to len(fns). +func ParallelN(n int, fns ...TaskFn) TaskFn { + workers := n + if n <= 0 { + workers = len(fns) + } + return func(ctx context.Context) error { + var ( + wg sync.WaitGroup + fnsCh = make(chan TaskFn) + errCh = make(chan error) + result error + ) + + for i := 0; i < workers; i++ { + wg.Add(1) + go func() { + for fn := range fnsCh { + fn := fn + errCh <- fn(ctx) + } + wg.Done() + }() + } + + go func() { + for _, f := range fns { + fnsCh <- f + } + close(fnsCh) + }() + + go func() { + defer close(errCh) + wg.Wait() + }() + + for err := range errCh { + if err != nil { + result = multierror.Append(result, err) + } + } + return result + } +} + // Parallel runs the given TaskFns in parallel, collecting their errors in a multierror. func Parallel(fns ...TaskFn) TaskFn { return func(ctx context.Context) error { diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/garden.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/garden.go index d6ddc34d2..f8f1dba9d 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/garden.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/garden.go @@ -24,12 +24,19 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/selection" + "k8s.io/apimachinery/pkg/util/sets" "k8s.io/client-go/rest" "sigs.k8s.io/controller-runtime/pkg/client" + gardencore "github.com/gardener/gardener/pkg/apis/core" + gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" + "github.com/gardener/gardener/pkg/apis/operations" resourcesv1alpha1 "github.com/gardener/gardener/pkg/apis/resources/v1alpha1" + "github.com/gardener/gardener/pkg/apis/seedmanagement" + "github.com/gardener/gardener/pkg/apis/settings" "github.com/gardener/gardener/pkg/utils" kubernetesutils "github.com/gardener/gardener/pkg/utils/kubernetes" "github.com/gardener/gardener/pkg/utils/secrets" @@ -323,3 +330,44 @@ func PrepareGardenClientRestConfig(baseConfig *rest.Config, address *string, caC } return gardenClientRestConfig } + +// DefaultGardenerGVKsForEncryption returns the list of GroupVersionKinds served by Gardener API Server which are encrypted by default. +func DefaultGardenerGVKsForEncryption() []schema.GroupVersionKind { + return []schema.GroupVersionKind{ + gardencorev1beta1.SchemeGroupVersion.WithKind("ControllerDeployment"), + gardencorev1beta1.SchemeGroupVersion.WithKind("ControllerRegistration"), + gardencorev1beta1.SchemeGroupVersion.WithKind("InternalSecret"), + gardencorev1beta1.SchemeGroupVersion.WithKind("ShootState"), + } +} + +// DefaultGardenerResourcesForEncryption returns the list of resources served by Gardener API Server which are encrypted by default. +func DefaultGardenerResourcesForEncryption() sets.Set[string] { + return sets.New( + gardencorev1beta1.Resource("controllerdeployments").String(), + gardencorev1beta1.Resource("controllerregistrations").String(), + gardencorev1beta1.Resource("internalsecrets").String(), + gardencorev1beta1.Resource("shootstates").String(), + ) +} + +// IsServedByGardenerAPIServer returns true if the passed resources is served by the Gardener API Server. +func IsServedByGardenerAPIServer(resource string) bool { + for _, groupName := range []string{ + gardencore.GroupName, + operations.GroupName, + settings.GroupName, + seedmanagement.GroupName, + } { + if strings.HasSuffix(resource, groupName) { + return true + } + } + + return false +} + +// IsServedByKubeAPIServer returns true if the passed resources is served by the Kube API Server. +func IsServedByKubeAPIServer(resource string) bool { + return !IsServedByGardenerAPIServer(resource) +} diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot.go index 901351350..615e1e9a5 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot.go @@ -26,6 +26,7 @@ import ( corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/util/sets" clientcmdlatest "k8s.io/client-go/tools/clientcmd/api/latest" clientcmdv1 "k8s.io/client-go/tools/clientcmd/api/v1" @@ -704,3 +705,15 @@ func GetShootConditionTypes(workerless bool) []gardencorev1beta1.ConditionType { return append(shootConditionTypes, gardencorev1beta1.ShootSystemComponentsHealthy) } + +// DefaultGVKsForEncryption returns the list of GroupVersionKinds which are encrypted by default. +func DefaultGVKsForEncryption() []schema.GroupVersionKind { + return []schema.GroupVersionKind{ + corev1.SchemeGroupVersion.WithKind("Secret"), + } +} + +// DefaultResourcesForEncryption returns the list of resources which are encrypted by default. +func DefaultResourcesForEncryption() sets.Set[string] { + return sets.New(corev1.Resource("secrets").String()) +} diff --git a/vendor/github.com/gardener/gardener/pkg/utils/miscellaneous.go b/vendor/github.com/gardener/gardener/pkg/utils/miscellaneous.go index 944848e23..62211fa14 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/miscellaneous.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/miscellaneous.go @@ -214,6 +214,19 @@ func FilterEntriesByPrefix(prefix string, entries []string) []string { return result } +// FilterEntriesByFilterFn returns a list of entries which passes the filter function. +func FilterEntriesByFilterFn(entries []string, filterFn func(entry string) bool) []string { + var result []string + for _, entry := range entries { + if filterFn != nil && !filterFn(entry) { + continue + } + + result = append(result, entry) + } + return result +} + // ComputeOffsetIP parses the provided and offsets with the value of . // For example, = 100.64.0.0/11 and = 10 the result would be 100.64.0.10 // IPv6 and IPv4 is supported. diff --git a/vendor/github.com/gardener/gardener/test/utils/access/adminkubeconfig.go b/vendor/github.com/gardener/gardener/test/utils/access/adminkubeconfig.go index d40d24993..f8a18a8e9 100644 --- a/vendor/github.com/gardener/gardener/test/utils/access/adminkubeconfig.go +++ b/vendor/github.com/gardener/gardener/test/utils/access/adminkubeconfig.go @@ -27,7 +27,24 @@ import ( // CreateShootClientFromAdminKubeconfig requests an admin kubeconfig and creates a shoot client. func CreateShootClientFromAdminKubeconfig(ctx context.Context, gardenClient kubernetes.Interface, shoot *gardencorev1beta1.Shoot) (kubernetes.Interface, error) { - kubeconfig, err := RequestAdminKubeconfigForShoot(ctx, gardenClient, shoot, pointer.Int64(7200)) + return createShootClientFromDynamicKubeconfig(ctx, gardenClient, shoot, RequestAdminKubeconfigForShoot) +} + +// CreateShootClientFromViewerKubeconfig requests a viewer kubeconfig and creates a shoot client. +func CreateShootClientFromViewerKubeconfig(ctx context.Context, gardenClient kubernetes.Interface, shoot *gardencorev1beta1.Shoot) (kubernetes.Interface, error) { + return createShootClientFromDynamicKubeconfig(ctx, gardenClient, shoot, RequestViewerKubeconfigForShoot) +} + +func createShootClientFromDynamicKubeconfig( + ctx context.Context, + gardenClient kubernetes.Interface, + shoot *gardencorev1beta1.Shoot, + requestFn func(context.Context, kubernetes.Interface, *gardencorev1beta1.Shoot, *int64) ([]byte, error), +) ( + kubernetes.Interface, + error, +) { + kubeconfig, err := requestFn(ctx, gardenClient, shoot, pointer.Int64(7200)) if err != nil { return nil, err } @@ -52,3 +69,17 @@ func RequestAdminKubeconfigForShoot(ctx context.Context, gardenClient kubernetes return adminKubeconfigRequest.Status.Kubeconfig, nil } + +// RequestViewerKubeconfigForShoot requests an viewer kubeconfig for the given shoot. +func RequestViewerKubeconfigForShoot(ctx context.Context, gardenClient kubernetes.Interface, shoot *gardencorev1beta1.Shoot, expirationSeconds *int64) ([]byte, error) { + viewerKubeconfigRequest := &authenticationv1alpha1.ViewerKubeconfigRequest{ + Spec: authenticationv1alpha1.ViewerKubeconfigRequestSpec{ + ExpirationSeconds: expirationSeconds, + }, + } + if err := gardenClient.Client().SubResource("viewerkubeconfig").Create(ctx, shoot, viewerKubeconfigRequest); err != nil { + return nil, err + } + + return viewerKubeconfigRequest.Status.Kubeconfig, nil +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 1957f9dc9..7ebfec53a 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -67,7 +67,7 @@ github.com/gardener/cert-management/pkg/apis/cert/v1alpha1 # github.com/gardener/etcd-druid v0.21.0 ## explicit; go 1.20 github.com/gardener/etcd-druid/api/v1alpha1 -# github.com/gardener/gardener v1.85.0 +# github.com/gardener/gardener v1.86.0 ## explicit; go 1.21 github.com/gardener/gardener/.github github.com/gardener/gardener/.github/ISSUE_TEMPLATE