From 4f261aea7f6258be02090aec3c2435b578bc43d2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 15 Dec 2023 19:15:25 +0000 Subject: [PATCH] Bump github.com/gardener/gardener from 1.84.1 to 1.86.0 Bumps [github.com/gardener/gardener](https://github.com/gardener/gardener) from 1.84.1 to 1.86.0. - [Release notes](https://github.com/gardener/gardener/releases) - [Commits](https://github.com/gardener/gardener/compare/v1.84.1...v1.86.0) --- updated-dependencies: - dependency-name: github.com/gardener/gardener dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 12 +- go.sum | 25 +- .../pkg/webhook/certificates/add.go | 18 +- .../pkg/webhook/certificates/reconciler.go | 85 +- .../pkg/webhook/certificates/reloader.go | 13 +- .../extensions/pkg/webhook/cmd/options.go | 122 +- .../controlplane/genericmutator/mutator.go | 53 +- .../genericmutator/noopensurer.go | 10 + .../extensions/pkg/webhook/handler.go | 44 +- .../pkg/webhook/handler_shootclient.go | 2 +- .../extensions/pkg/webhook/mutator.go | 15 +- .../extensions/pkg/webhook/registration.go | 219 +- .../extensions/pkg/webhook/shoot/webhook.go | 10 +- .../extensions/pkg/webhook/validator.go | 5 +- .../extensions/pkg/webhook/webhook.go | 59 +- .../gardener/hack/.ci/component_descriptor | 0 .../gardener/gardener/hack/.ci/doc.go | 0 .../gardener/hack/.ci/prepare_release | 0 .../gardener/hack/.ci/set_dependency_version | 2 +- .../gardener/hack/LICENSE_BOILERPLATE.txt | 0 .../gardener/hack/add-license-header.sh | 0 .../gardener/gardener/hack/check-apidiff.sh | 0 .../gardener/gardener/hack/check-charts.sh | 0 .../gardener/gardener/hack/check-generate.sh | 0 .../gardener/gardener/hack/check-imports.sh | 19 +- .../gardener/hack/check-license-header.sh | 0 .../gardener/hack/check-plutono-dashboards.sh | 0 .../hack/check-skaffold-deps-for-binary.sh | 0 .../gardener/hack/check-skaffold-deps.sh | 1 + .../gardener/gardener/hack/check.sh | 0 .../gardener/hack/cherry-pick-pull.sh | 0 .../gardener/gardener/hack/ci-common.sh | 4 +- .../hack/ci-e2e-kind-ha-multi-zone.sh | 0 .../hack/ci-e2e-kind-ha-single-zone.sh | 0 .../ci-e2e-kind-migration-ha-single-zone.sh | 0 .../gardener/hack/ci-e2e-kind-migration.sh | 0 .../gardener/hack/ci-e2e-kind-operator.sh | 0 .../gardener/hack/ci-e2e-kind-upgrade.sh | 0 .../gardener/gardener/hack/ci-e2e-kind.sh | 0 .../gardener/gardener/hack/clean.sh | 0 .../hack/compare-k8s-admission-plugins.sh | 0 .../gardener/hack/compare-k8s-api-groups.sh | 0 .../gardener/hack/compare-k8s-controllers.sh | 0 .../hack/compare-k8s-feature-gates.sh | 0 .../gardener/hack/compute-k8s-controllers.sh | 0 .../hack/download_gardener_source_code.sh | 0 .../gardener/gardener/hack/format.sh | 0 .../gardener/gardener/hack/gardener-down.sh | 0 .../gardener/hack/gardener-extensions-down.sh | 0 .../gardener/hack/gardener-extensions-up.sh | 0 .../hack/generate-controller-registration.sh | 0 .../gardener/gardener/hack/generate-crds.sh | 18 +- .../gardener/gardener/hack/generate-groups.sh | 0 .../hack/generate-imagename-constants.sh | 0 .../gardener/hack/generate-internal-groups.sh | 0 .../hack/generate-logcheck-symlinks.sh | 0 .../gardener/hack/generate-monitoring-docs.sh | 0 .../gardener/hack/generate-parallel.sh | 0 .../gardener/hack/generate-sequential.sh | 0 .../gardener/gardener/hack/generate.sh | 0 .../gardener/hack/get-build-ld-flags.sh | 0 .../gardener/gardener/hack/hook-me.sh | 0 .../gardener/gardener/hack/install.sh | 0 .../gardener/gardener/hack/kind-down.sh | 0 .../gardener/hack/kind-extensions-up.sh | 0 .../gardener/gardener/hack/kind-up.sh | 27 +- .../gardener/gardener/hack/prepare-envtest.sh | 0 .../gardener/gardener/hack/start-envtest.sh | 0 .../gardener/hack/test-cover-clean.sh | 0 .../gardener/gardener/hack/test-cover.sh | 0 .../gardener/gardener/hack/test-e2e-local.env | 0 .../gardener/gardener/hack/test-e2e-local.sh | 1 + .../gardener/hack/test-integration.env | 0 .../gardener/hack/test-integration.sh | 0 .../gardener/gardener/hack/test-prometheus.sh | 0 .../github.com/gardener/gardener/hack/test.sh | 0 .../gardener/gardener/hack/tools.go | 0 .../gardener/gardener/hack/tools.mk | 18 +- .../gardener/gardener/hack/update-codegen.sh | 19 +- .../gardener/gardener/hack/update-protobuf.sh | 19 +- .../gardener/hack/update-skaffold-deps.sh | 0 .../gardener/gardener/hack/vgopath-setup.sh | 33 + .../gardener/gardener/imagevector/images.yaml | 26 +- .../pkg/apis/authentication/register.go | 2 +- ...grequest.go => types_kubeconfigrequest.go} | 41 +- .../authentication/v1alpha1/conversions.go | 51 + .../apis/authentication/v1alpha1/defaults.go | 25 + .../defaults_adminkubeconfigrequest.go | 5 - .../defaults_viewerkubeconfigrequest.go | 28 + .../authentication/v1alpha1/generated.pb.go | 684 +++++- .../authentication/v1alpha1/generated.proto | 33 + .../apis/authentication/v1alpha1/register.go | 1 + .../v1alpha1/types_adminkubeconfigrequest.go | 4 +- .../v1alpha1/types_viewerkubeconfigrequest.go | 55 + .../v1alpha1/zz_generated.conversion.go | 107 +- .../v1alpha1/zz_generated.deepcopy.go | 71 + .../v1alpha1/zz_generated.defaults.go | 5 + .../authentication/zz_generated.deepcopy.go | 26 +- .../gardener/pkg/apis/core/types_shoot.go | 16 + .../core/v1beta1/constants/types_constants.go | 20 +- .../core/v1beta1/defaults_secretbinding.go | 28 + .../pkg/apis/core/v1beta1/defaults_seed.go | 85 + .../{defaults.go => defaults_shoot.go} | 85 +- .../pkg/apis/core/v1beta1/generated.pb.go | 2015 ++++++++++------- .../pkg/apis/core/v1beta1/generated.proto | 22 +- .../pkg/apis/core/v1beta1/register.go | 4 + .../pkg/apis/core/v1beta1/types_shoot.go | 20 +- .../core/v1beta1/zz_generated.conversion.go | 34 + .../core/v1beta1/zz_generated.deepcopy.go | 31 + .../core/v1beta1/zz_generated.defaults.go | 4 +- .../pkg/apis/core/zz_generated.deepcopy.go | 31 + .../apis/extensions/v1alpha1/helper/helper.go | 11 + .../v1alpha1/types_infrastructure.go | 4 + .../v1alpha1/types_operatingsystemconfig.go | 2 +- .../v1alpha1/zz_generated.deepcopy.go | 5 + .../pkg/apis/operator/v1alpha1/types.go | 8 + .../v1alpha1/zz_generated.deepcopy.go | 10 + .../pkg/apis/resources/v1alpha1/types.go | 11 - .../v1alpha1/defaults_managedseed.go | 10 +- .../pkg/apis/settings/types_shared.go | 4 +- .../apis/settings/v1alpha1/generated.proto | 4 +- .../apis/settings/v1alpha1/types_shared.go | 4 +- .../testdata/alpine/templates/secret.yaml | 9 + .../components/containerd/component.go | 28 +- .../containerd/logrotate/logrotate.go | 48 +- .../original/components/docker/component.go | 114 - .../original/components/docker/logging.go | 102 - .../components/docker/logrotate/logrotate.go | 91 - .../templates/scripts/health-monitor.tpl.sh | 20 - .../original/components/kubelet/component.go | 98 +- .../machinecontrollermanager/bootstrap.go | 2 + .../component/machinecontrollermanager/crd.go | 27 +- .../machine_controller_manager.go | 25 + .../gardener/pkg/features/features.go | 6 +- .../gardener/pkg/utils/flow/taskfn.go | 47 + .../gardener/pkg/utils/gardener/garden.go | 48 + .../gardener/pkg/utils/gardener/shoot.go | 33 +- .../gardener/pkg/utils/miscellaneous.go | 13 + .../gardener/gardener/pkg/utils/test/afero.go | 55 + .../gardener/pkg/utils/test/manager.go | 15 +- .../gardener/test/framework/gardener_utils.go | 29 +- .../gardener/test/framework/shoot_utils.go | 55 +- .../test/framework/shootcreationframework.go | 10 - .../test/framework/shootmigrationtest.go | 9 +- .../test/utils/access/adminkubeconfig.go | 33 +- .../api/analysis/v1alpha1/message.pb.go | 2 +- .../istio.io/api/meta/v1alpha1/status.pb.go | 2 +- .../v1alpha3/destination_rule.gen.json | 12 +- .../v1alpha3/destination_rule.pb.go | 772 ++++--- .../v1alpha3/destination_rule.proto | 72 +- .../networking/v1alpha3/envoy_filter.gen.json | 2 +- .../networking/v1alpha3/envoy_filter.pb.go | 431 ++-- .../networking/v1alpha3/envoy_filter.proto | 41 +- .../api/networking/v1alpha3/gateway.gen.json | 9 +- .../api/networking/v1alpha3/gateway.pb.go | 242 +- .../api/networking/v1alpha3/gateway.proto | 50 +- .../v1alpha3/service_entry.gen.json | 4 +- .../networking/v1alpha3/service_entry.pb.go | 108 +- .../api/networking/v1alpha3/sidecar.gen.json | 9 +- .../api/networking/v1alpha3/sidecar.pb.go | 114 +- .../v1alpha3/virtual_service.gen.json | 39 +- .../networking/v1alpha3/virtual_service.pb.go | 1262 ++++++----- .../networking/v1alpha3/virtual_service.proto | 95 +- .../v1alpha3/virtual_service_deepcopy.gen.go | 42 + .../v1alpha3/virtual_service_json.gen.go | 22 + .../v1alpha3/workload_entry.gen.json | 4 +- .../networking/v1alpha3/workload_entry.pb.go | 108 +- .../networking/v1alpha3/workload_entry.proto | 45 +- .../v1alpha3/workload_group.gen.json | 4 +- .../networking/v1alpha3/workload_group.pb.go | 200 +- .../networking/v1alpha3/workload_group.proto | 34 + .../v1beta1/destination_rule.gen.json | 12 +- .../networking/v1beta1/destination_rule.pb.go | 770 ++++--- .../networking/v1beta1/destination_rule.proto | 72 +- .../api/networking/v1beta1/gateway.gen.json | 9 +- .../api/networking/v1beta1/gateway.pb.go | 242 +- .../api/networking/v1beta1/gateway.proto | 50 +- .../api/networking/v1beta1/proxy_config.pb.go | 2 +- .../networking/v1beta1/service_entry.gen.json | 4 +- .../networking/v1beta1/service_entry.pb.go | 107 +- .../api/networking/v1beta1/sidecar.gen.json | 9 +- .../api/networking/v1beta1/sidecar.pb.go | 126 +- .../v1beta1/virtual_service.gen.json | 39 +- .../networking/v1beta1/virtual_service.pb.go | 1260 ++++++----- .../networking/v1beta1/virtual_service.proto | 95 +- .../v1beta1/virtual_service_deepcopy.gen.go | 42 + .../v1beta1/virtual_service_json.gen.go | 22 + .../v1beta1/workload_entry.gen.json | 4 +- .../networking/v1beta1/workload_entry.pb.go | 107 +- .../networking/v1beta1/workload_entry.proto | 45 +- .../v1beta1/workload_group.gen.json | 4 +- .../networking/v1beta1/workload_group.pb.go | 203 +- .../networking/v1beta1/workload_group.proto | 35 + .../istio.io/api/type/v1beta1/selector.pb.go | 38 +- .../pkg/apis/autoscaling.k8s.io/v1/types.go | 35 +- vendor/modules.txt | 14 +- .../v4/merge/conflict.go | 2 +- .../structured-merge-diff/v4/merge/update.go | 51 +- .../v4/schema/elements.go | 3 +- .../v4/schema/schemaschema.go | 2 +- .../structured-merge-diff/v4/typed/merge.go | 11 +- .../structured-merge-diff/v4/typed/typed.go | 7 +- .../v4/typed/validate.go | 6 + .../v4/value/mapreflect.go | 2 +- .../v4/value/mapunstructured.go | 8 +- .../v4/value/reflectcache.go | 4 +- 206 files changed, 7645 insertions(+), 4924 deletions(-) mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/.ci/component_descriptor mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/.ci/doc.go mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/.ci/prepare_release mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/.ci/set_dependency_version mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/LICENSE_BOILERPLATE.txt mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/add-license-header.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/check-apidiff.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/check-charts.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/check-generate.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/check-imports.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/check-license-header.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/check-plutono-dashboards.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/check-skaffold-deps-for-binary.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/check-skaffold-deps.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/check.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/cherry-pick-pull.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/ci-common.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-multi-zone.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-single-zone.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration-ha-single-zone.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/ci-e2e-kind-operator.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/ci-e2e-kind-upgrade.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/ci-e2e-kind.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/clean.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/compare-k8s-admission-plugins.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/compare-k8s-api-groups.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/compare-k8s-controllers.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/compare-k8s-feature-gates.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/compute-k8s-controllers.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/download_gardener_source_code.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/format.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/gardener-down.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/gardener-extensions-down.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/gardener-extensions-up.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/generate-controller-registration.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/generate-crds.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/generate-groups.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/generate-imagename-constants.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/generate-internal-groups.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/generate-logcheck-symlinks.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/generate-monitoring-docs.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/generate-parallel.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/generate-sequential.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/generate.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/get-build-ld-flags.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/hook-me.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/install.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/kind-down.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/kind-extensions-up.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/kind-up.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/prepare-envtest.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/start-envtest.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/test-cover-clean.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/test-cover.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/test-e2e-local.env mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/test-e2e-local.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/test-integration.env mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/test-integration.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/test-prometheus.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/test.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/tools.go mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/tools.mk mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/update-codegen.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/update-protobuf.sh mode change 100755 => 100644 vendor/github.com/gardener/gardener/hack/update-skaffold-deps.sh create mode 100644 vendor/github.com/gardener/gardener/hack/vgopath-setup.sh rename vendor/github.com/gardener/gardener/pkg/apis/authentication/{types_adminkubeconfigrequest.go => types_kubeconfigrequest.go} (54%) create mode 100644 vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/conversions.go create mode 100644 vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/defaults.go create mode 100644 vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/defaults_viewerkubeconfigrequest.go create mode 100644 vendor/github.com/gardener/gardener/pkg/apis/authentication/v1alpha1/types_viewerkubeconfigrequest.go create mode 100644 vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_secretbinding.go create mode 100644 vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_seed.go rename vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/{defaults.go => defaults_shoot.go} (82%) create mode 100644 vendor/github.com/gardener/gardener/pkg/chartrenderer/testdata/alpine/templates/secret.yaml delete mode 100644 vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker/component.go delete mode 100644 vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker/logging.go delete mode 100644 vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker/logrotate/logrotate.go delete mode 100644 vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker/templates/scripts/health-monitor.tpl.sh create mode 100644 vendor/github.com/gardener/gardener/pkg/utils/test/afero.go diff --git a/go.mod b/go.mod index 23cb17a5..248f71a1 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.21.0 require ( github.com/ahmetb/gen-crd-api-reference-docs v0.3.0 - github.com/gardener/gardener v1.84.1 + 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 @@ -14,7 +14,7 @@ require ( golang.org/x/tools v0.13.0 k8s.io/api v0.28.3 k8s.io/apimachinery v0.28.3 - k8s.io/autoscaler/vertical-pod-autoscaler v0.14.0 + k8s.io/autoscaler/vertical-pod-autoscaler v1.0.0 k8s.io/code-generator v0.28.3 k8s.io/component-base v0.28.3 k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 @@ -41,7 +41,7 @@ require ( github.com/fatih/color v1.15.0 // indirect github.com/fluent/fluent-operator/v2 v2.2.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/gardener/etcd-druid v0.20.1 // indirect + github.com/gardener/etcd-druid v0.21.0 // indirect github.com/gardener/hvpa-controller/api v0.5.0 // indirect github.com/gardener/machine-controller-manager v0.50.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect @@ -109,8 +109,8 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - istio.io/api v0.0.0-20230217221049-9d422bf48675 // indirect - istio.io/client-go v1.17.1 // indirect + istio.io/api v1.19.2-0.20231011000955-f3015ebb5bd4 // indirect + istio.io/client-go v1.19.3 // indirect k8s.io/apiextensions-apiserver v0.28.3 // indirect k8s.io/apiserver v0.28.3 // indirect k8s.io/client-go v0.28.3 // indirect @@ -125,6 +125,6 @@ require ( sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20231015215740-bf15e44028f9 // indirect sigs.k8s.io/controller-tools v0.13.0 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.3.0 // indirect sigs.k8s.io/yaml v1.3.0 // indirect ) diff --git a/go.sum b/go.sum index 64ec6b36..32b57a55 100644 --- a/go.sum +++ b/go.sum @@ -134,10 +134,10 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/gardener/etcd-druid v0.20.1 h1:o6F4higujfg7dvBXvk+yPb86+3t2+XLE0Hmw5W1kXtM= -github.com/gardener/etcd-druid v0.20.1/go.mod h1:1tAeHycB0Vb2GfCX6sUCc6V6frGrCQI//quVg4K3GNA= -github.com/gardener/gardener v1.84.1 h1:iRWByHwBkn6Ig2kRY9HvOTKlNF8Nk2ro03XDhKYyYZs= -github.com/gardener/gardener v1.84.1/go.mod h1:3XZ+Yn5iHl0acqUIVZ0K78p1OYWp52sRBQOJW6sCRR8= +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.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= @@ -234,6 +234,7 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -834,10 +835,10 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -istio.io/api v0.0.0-20230217221049-9d422bf48675 h1:dxHqYbJwurfq+x2OOG4WP+NkbyjURgcP9PQTsxh7HXM= -istio.io/api v0.0.0-20230217221049-9d422bf48675/go.mod h1:owGDRg9uqMob8CN1gxaOzk6nJxnbT8wrP7PmggpJHHY= -istio.io/client-go v1.17.1 h1:W0kQXYCzIluA/20zLzxeNF7bNMJXXArmGYRt/MIg2io= -istio.io/client-go v1.17.1/go.mod h1:mLTRYYFxHctzUbt8Iclgj+Sueq34+qC2ZEJTn6BxRuE= +istio.io/api v1.19.2-0.20231011000955-f3015ebb5bd4 h1:NoiArVONh9DPs/DovhCCl771BUeEkKp+/GhsRB1YbOk= +istio.io/api v1.19.2-0.20231011000955-f3015ebb5bd4/go.mod h1:KstZe4bKbXouALUJ5PqpjNEhu5nj90HrDFitZfpNhlU= +istio.io/client-go v1.19.3 h1:nxNcBhtpJJmSoiTbCzO4Ay4Y1qve4Uct6oiqPSJVNMg= +istio.io/client-go v1.19.3/go.mod h1:ra3fVlXcquh7EuQnNssuLxfp6lFv/nx5314PvNEzOUs= k8s.io/api v0.18.3/go.mod h1:UOaMwERbqJMfeeeHc8XJKawj4P9TgDRnViIqqBeH2QA= k8s.io/api v0.18.8/go.mod h1:d/CXqwWv+Z2XEG1LgceeDmHQwpUJhROPx16SlxJgERY= k8s.io/api v0.19.0/go.mod h1:I1K45XlvTrDjmj5LoM5LuP/KYrhWbjUKT/SoPG0qTjw= @@ -853,8 +854,8 @@ k8s.io/apimachinery v0.28.3/go.mod h1:uQTKmIqs+rAYaq+DFaoD2X7pcjLOqbQX2AOiO0nIpb k8s.io/apiserver v0.28.3 h1:8Ov47O1cMyeDzTXz0rwcfIIGAP/dP7L8rWbEljRcg5w= k8s.io/apiserver v0.28.3/go.mod h1:YIpM+9wngNAv8Ctt0rHG4vQuX/I5rvkEMtZtsxW2rNM= k8s.io/autoscaler/vertical-pod-autoscaler v0.9.0/go.mod h1:PwWTGRRCxefhAezrDbG/tRYSAW7etHjjMPAr8fXKVAA= -k8s.io/autoscaler/vertical-pod-autoscaler v0.14.0 h1:HkQHkcuwVP3BgJpVqTGeYHro83qGBj8mWotygHZND1k= -k8s.io/autoscaler/vertical-pod-autoscaler v0.14.0/go.mod h1:w6/LjLR3DPQd57vlgvgbpzpuJKsCiily0+OzQI+nyfI= +k8s.io/autoscaler/vertical-pod-autoscaler v1.0.0 h1:y0TgWoHaeYEv3L1MfLC+D2WVxyN1fGr6axURHXq+wHE= +k8s.io/autoscaler/vertical-pod-autoscaler v1.0.0/go.mod h1:w6/LjLR3DPQd57vlgvgbpzpuJKsCiily0+OzQI+nyfI= k8s.io/client-go v0.18.3/go.mod h1:4a/dpQEvzAhT1BbuWW09qvIaGw6Gbu1gZYiQZIi1DMw= k8s.io/client-go v0.19.0/go.mod h1:H9E/VT95blcFQnlyShFgnFT9ZnJOAceiUHM3MlRC+mU= k8s.io/client-go v0.28.3 h1:2OqNb72ZuTZPKCl+4gTKvqao0AMOl9f3o2ijbAj3LI4= @@ -913,8 +914,8 @@ sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h6 sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= +sigs.k8s.io/structured-merge-diff/v4 v4.3.0 h1:UZbZAZfX0wV2zr7YZorDz6GXROfDFj6LvqCRm4VUVKk= +sigs.k8s.io/structured-merge-diff/v4 v4.3.0/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/certificates/add.go b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/certificates/add.go index 7734a56e..a4b80d39 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/certificates/add.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/certificates/add.go @@ -20,9 +20,8 @@ import ( "sync/atomic" "time" - admissionregistrationv1 "k8s.io/api/admissionregistration/v1" "k8s.io/utils/clock" - "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/cluster" "sigs.k8s.io/controller-runtime/pkg/manager" "github.com/gardener/gardener/extensions/pkg/webhook" @@ -37,10 +36,11 @@ var DefaultSyncPeriod = 5 * time.Minute func AddCertificateManagementToManager( ctx context.Context, mgr manager.Manager, + sourceCluster cluster.Cluster, clock clock.Clock, - sourceWebhookConfigs []client.Object, - shootWebhookConfig *admissionregistrationv1.MutatingWebhookConfiguration, - atomicShootWebhookConfig *atomic.Value, + sourceWebhookConfigs webhook.Configs, + shootWebhookConfigs *webhook.Configs, + atomicShootWebhookConfigs *atomic.Value, shootNamespaceSelector map[string]string, shootWebhookManagedResourceName string, componentName string, @@ -60,8 +60,8 @@ func AddCertificateManagementToManager( Clock: clock, SyncPeriod: DefaultSyncPeriod, SourceWebhookConfigs: sourceWebhookConfigs, - ShootWebhookConfig: shootWebhookConfig, - AtomicShootWebhookConfig: atomicShootWebhookConfig, + ShootWebhookConfigs: shootWebhookConfigs, + AtomicShootWebhookConfigs: atomicShootWebhookConfigs, CASecretName: caSecretName, ServerSecretName: serverSecretName, Namespace: namespace, @@ -71,7 +71,7 @@ func AddCertificateManagementToManager( ShootNamespaceSelector: shootNamespaceSelector, Mode: mode, URL: url, - }).AddToManager(ctx, mgr); err != nil { + }).AddToManager(ctx, mgr, sourceCluster); err != nil { return fmt.Errorf("failed to add webhook server certificate reconciler: %w", err) } @@ -82,7 +82,7 @@ func AddCertificateManagementToManager( ServerSecretName: serverSecretName, Namespace: namespace, Identity: identity, - }).AddToManager(ctx, mgr); err != nil { + }).AddToManager(ctx, mgr, sourceCluster); err != nil { return fmt.Errorf("failed to add webhook server certificate reloader: %w", err) } diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/certificates/reconciler.go b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/certificates/reconciler.go index a2b776ca..e36b7365 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/certificates/reconciler.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/certificates/reconciler.go @@ -21,18 +21,17 @@ import ( "time" "github.com/go-logr/logr" - admissionregistrationv1 "k8s.io/api/admissionregistration/v1" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/util/workqueue" "k8s.io/utils/clock" "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/cluster" "sigs.k8s.io/controller-runtime/pkg/controller" logf "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/manager" "sigs.k8s.io/controller-runtime/pkg/reconcile" - "sigs.k8s.io/controller-runtime/pkg/webhook" extensionswebhook "github.com/gardener/gardener/extensions/pkg/webhook" extensionsshootwebhook "github.com/gardener/gardener/extensions/pkg/webhook/shoot" @@ -53,14 +52,14 @@ type reconciler struct { // SyncPeriod is the frequency with which to reload the server cert. Defaults to 5m. SyncPeriod time.Duration // SourceWebhookConfigs are the webhook configurations to reconcile in the Source cluster. - SourceWebhookConfigs []client.Object - // ShootWebhookConfig is the webhook configuration to reconcile in all Shoot clusters. - ShootWebhookConfig *admissionregistrationv1.MutatingWebhookConfiguration - // AtomicShootWebhookConfig is an atomic value in which this reconciler will store the updated ShootWebhookConfig. + SourceWebhookConfigs extensionswebhook.Configs + // ShootWebhookConfigs are the webhook configurations to reconcile in all Shoot clusters. + ShootWebhookConfigs *extensionswebhook.Configs + // AtomicShootWebhookConfigs is an atomic value in which this reconciler will store the updated ShootWebhookConfigs. // It is supposed to be shared with the ControlPlane actuator. I.e. if the CA bundle changes, this reconciler // updates the CA bundle in this value so that the ControlPlane actuator can configure the correct (the new) CA // bundle for newly created shoots by loading this value. - AtomicShootWebhookConfig *atomic.Value + AtomicShootWebhookConfigs *atomic.Value // CASecretName is the CA config name. CASecretName string // ServerSecretName is the server certificate config name. @@ -80,23 +79,28 @@ type reconciler struct { // URL is the URL that is used to register the webhooks in Kubernetes. URL string - serverPort int32 - client client.Client + // client is the client used to update webhook configuration objects. + client client.Client + // sourceClient is the client used to manage certificate secrets. + sourceClient client.Client } -// AddToManager generates webhook CA and server cert if it doesn't exist on the cluster yet. Then it adds reconciler to -// the given manager in order to periodically regenerate the webhook secrets. -func (r *reconciler) AddToManager(ctx context.Context, mgr manager.Manager) error { - webhookServer := mgr.GetWebhookServer() - defaultServer, ok := webhookServer.(*webhook.DefaultServer) - if !ok { - return fmt.Errorf("expected *webhook.DefaultServer, got %T", webhookServer) - } - - r.serverPort = int32(defaultServer.Options.Port) +// AddToManager generates webhook CA and server cert if it doesn't exist on the cluster yet. +// Then it adds the reconciler to the given manager in order to periodically regenerate the webhook secrets. +// An 'sourceCluster' can be optionally passed to let the certificate secrets be managed in a different cluster. +func (r *reconciler) AddToManager(ctx context.Context, mgr manager.Manager, sourceCluster cluster.Cluster) error { r.client = mgr.GetClient() + r.sourceClient = mgr.GetClient() + apiReader := mgr.GetAPIReader() + scheme := mgr.GetScheme() + + if sourceCluster != nil { + r.sourceClient = sourceCluster.GetClient() + apiReader = sourceCluster.GetAPIReader() + scheme = sourceCluster.GetScheme() + } - present, err := isWebhookServerSecretPresent(ctx, mgr.GetAPIReader(), mgr.GetScheme(), r.ServerSecretName, r.Namespace, r.Identity) + present, err := isWebhookServerSecretPresent(ctx, apiReader, scheme, r.ServerSecretName, r.Namespace, r.Identity) if err != nil { return err } @@ -105,10 +109,15 @@ func (r *reconciler) AddToManager(ctx context.Context, mgr manager.Manager) erro // otherwise the webhook server will not be able to start (which is a non-leader election runnable and is therefore // started before this controller) if !present { + restConfig := mgr.GetConfig() + if sourceCluster != nil { + restConfig = sourceCluster.GetConfig() + } + // cache is not started yet, we need an uncached client for the initial setup - uncachedClient, err := client.New(mgr.GetConfig(), client.Options{ + uncachedClient, err := client.New(restConfig, client.Options{ Cache: &client.CacheOptions{ - Reader: mgr.GetAPIReader(), + Reader: apiReader, }, }) if err != nil { @@ -147,7 +156,7 @@ func (r *reconciler) AddToManager(ctx context.Context, mgr manager.Manager) erro func (r *reconciler) Reconcile(ctx context.Context, _ reconcile.Request) (reconcile.Result, error) { log := logf.FromContext(ctx) - sm, err := r.newSecretsManager(ctx, log, r.client) + sm, err := r.newSecretsManager(ctx, log, r.sourceClient) if err != nil { return reconcile.Result{}, fmt.Errorf("failed to create new SecretsManager: %w", err) } @@ -175,29 +184,35 @@ func (r *reconciler) Reconcile(ctx context.Context, _ reconcile.Request) (reconc } log.Info("Generated webhook server cert", "serverSecretName", serverSecret.Name) - for _, sourceWebhookConfig := range r.SourceWebhookConfigs { - if sourceWebhookConfig == nil { - continue - } + for _, sourceWebhookConfig := range r.SourceWebhookConfigs.GetWebhookConfigs() { if err := r.reconcileSourceWebhookConfig(ctx, sourceWebhookConfig, caBundleSecret); err != nil { return reconcile.Result{}, fmt.Errorf("error reconciling source webhook config %s: %w", client.ObjectKeyFromObject(sourceWebhookConfig), err) } log.Info("Updated source webhook config with new CA bundle", "webhookConfig", sourceWebhookConfig) } - if r.ShootWebhookConfig != nil { - // update shoot webhook config object (in memory) with the freshly created CA bundle which is also used by the - // ControlPlane actuator - if err := extensionswebhook.InjectCABundleIntoWebhookConfig(r.ShootWebhookConfig, caBundleSecret.Data[secretsutils.DataKeyCertificateBundle]); err != nil { - return reconcile.Result{}, err + if r.ShootWebhookConfigs != nil && r.ShootWebhookConfigs.HasWebhookConfig() { + for _, shootWebhookConfig := range r.ShootWebhookConfigs.GetWebhookConfigs() { + // update shoot webhook config object (in memory) with the freshly created CA bundle which is also used by the + // ControlPlane actuator + if err := extensionswebhook.InjectCABundleIntoWebhookConfig(shootWebhookConfig, caBundleSecret.Data[secretsutils.DataKeyCertificateBundle]); err != nil { + return reconcile.Result{}, err + } } - r.AtomicShootWebhookConfig.Store(r.ShootWebhookConfig.DeepCopy()) + + r.AtomicShootWebhookConfigs.Store(r.ShootWebhookConfigs.DeepCopy()) // reconcile all shoot webhook configs with the freshly created CA bundle - if err := extensionsshootwebhook.ReconcileWebhooksForAllNamespaces(ctx, r.client, r.Namespace, r.ComponentName, r.ShootWebhookManagedResourceName, r.ShootNamespaceSelector, r.ShootWebhookConfig); err != nil { + if err := extensionsshootwebhook.ReconcileWebhooksForAllNamespaces(ctx, r.client, r.Namespace, r.ComponentName, r.ShootWebhookManagedResourceName, r.ShootNamespaceSelector, *r.ShootWebhookConfigs); err != nil { return reconcile.Result{}, fmt.Errorf("error reconciling all shoot webhook configs: %w", err) } - log.Info("Updated all shoot webhook configs with new CA bundle", "webhookConfig", r.ShootWebhookConfig) + + if r.ShootWebhookConfigs.MutatingWebhookConfig != nil { + log.Info("Updated all shoot mutating webhook configs with new CA bundle", "webhookConfig", r.ShootWebhookConfigs.MutatingWebhookConfig) + } + if r.ShootWebhookConfigs.ValidatingWebhookConfig != nil { + log.Info("Updated all shoot validating webhook configs with new CA bundle", "webhookConfig", r.ShootWebhookConfigs.ValidatingWebhookConfig) + } } if err := sm.Cleanup(ctx); err != nil { diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/certificates/reloader.go b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/certificates/reloader.go index 87e4fd7e..d5eec7bd 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/certificates/reloader.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/certificates/reloader.go @@ -24,6 +24,7 @@ import ( "k8s.io/client-go/util/workqueue" "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/cluster" "sigs.k8s.io/controller-runtime/pkg/controller" logf "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/manager" @@ -57,8 +58,11 @@ type reloader struct { // AddToManager does an initial retrieval of an existing webhook server secret and then adds reloader to the given // manager in order to periodically reload the secret from the cluster. -func (r *reloader) AddToManager(ctx context.Context, mgr manager.Manager) error { +func (r *reloader) AddToManager(ctx context.Context, mgr manager.Manager, sourceCluster cluster.Cluster) error { r.reader = mgr.GetClient() + if sourceCluster != nil { + r.reader = sourceCluster.GetClient() + } webhookServer := mgr.GetWebhookServer() defaultServer, ok := webhookServer.(*webhook.DefaultServer) @@ -68,7 +72,12 @@ func (r *reloader) AddToManager(ctx context.Context, mgr manager.Manager) error r.certDir = defaultServer.Options.CertDir // initial retrieval of server cert, needed in order for the webhook server to start successfully - found, _, serverCert, serverKey, err := r.getServerCert(ctx, mgr.GetAPIReader()) + apiReader := mgr.GetAPIReader() + if sourceCluster != nil { + apiReader = sourceCluster.GetAPIReader() + } + + found, _, serverCert, serverKey, err := r.getServerCert(ctx, apiReader) if err != nil { return err } diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/cmd/options.go b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/cmd/options.go index 972f9430..e021dae5 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/cmd/options.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/cmd/options.go @@ -17,13 +17,13 @@ package cmd import ( "context" "fmt" + "strings" "sync/atomic" "github.com/spf13/pflag" - admissionregistrationv1 "k8s.io/api/admissionregistration/v1" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/utils/clock" - "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/cluster" "sigs.k8s.io/controller-runtime/pkg/manager" "sigs.k8s.io/controller-runtime/pkg/webhook" @@ -235,7 +235,7 @@ type AddToManagerConfig struct { // AddToManager instantiates all webhooks of this configuration. If there are any webhooks, it creates a // webhook server, registers the webhooks and adds the server to the manager. Otherwise, it is a no-op. // It generates and registers the seed targeted webhooks via a MutatingWebhookConfiguration. -func (c *AddToManagerConfig) AddToManager(ctx context.Context, mgr manager.Manager) (*atomic.Value, error) { +func (c *AddToManagerConfig) AddToManager(ctx context.Context, mgr manager.Manager, sourceCluster cluster.Cluster) (*atomic.Value, error) { if c.Clock == nil { c.Clock = &clock.RealClock{} } @@ -257,14 +257,21 @@ func (c *AddToManagerConfig) AddToManager(ctx context.Context, mgr manager.Manag } for _, wh := range webhooks { + path := wh.Path + if path == "" { + path = "/" + wh.Name + } else if !strings.HasPrefix(path, "/") { + path = "/" + path + } + if wh.Handler != nil { - webhookServer.Register("/"+wh.Name, wh.Handler) + webhookServer.Register(path, wh.Handler) } else { - webhookServer.Register("/"+wh.Name, wh.Webhook) + webhookServer.Register(path, wh.Webhook) } } - seedWebhookConfig, shootWebhookConfig, err := extensionswebhook.BuildWebhookConfigs( + seedWebhookConfigs, shootWebhookConfigs, err := extensionswebhook.BuildWebhookConfigs( webhooks, mgr.GetClient(), c.Server.Namespace, @@ -278,7 +285,7 @@ func (c *AddToManagerConfig) AddToManager(ctx context.Context, mgr manager.Manag return nil, fmt.Errorf("could not create webhooks: %w", err) } - atomicShootWebhookConfig := &atomic.Value{} + atomicShootWebhookConfigs := &atomic.Value{} if c.Server.Namespace == "" { // If the namespace is not set (e.g. when running locally), then we can't use the secrets manager for managing @@ -291,23 +298,23 @@ func (c *AddToManagerConfig) AddToManager(ctx context.Context, mgr manager.Manag return nil, fmt.Errorf("error generating new certificates for webhook server: %w", err) } - if shootWebhookConfig != nil { - if err := extensionswebhook.InjectCABundleIntoWebhookConfig(shootWebhookConfig, caBundle); err != nil { + for _, webhookConfig := range shootWebhookConfigs.GetWebhookConfigs() { + if err := extensionswebhook.InjectCABundleIntoWebhookConfig(webhookConfig, caBundle); err != nil { return nil, err } - atomicShootWebhookConfig.Store(shootWebhookConfig.DeepCopy()) } + atomicShootWebhookConfigs.Store(shootWebhookConfigs.DeepCopy()) // register seed webhook config once we become leader – with the CA bundle we just generated // also reconcile all shoot webhook configs to update the CA bundle if err := mgr.Add(runOnceWithLeaderElection(flow.Sequential( - c.reconcileSeedWebhookConfig(mgr, seedWebhookConfig, caBundle), - c.reconcileShootWebhookConfigs(mgr, shootWebhookConfig, caBundle), + c.reconcileSeedWebhookConfig(mgr, seedWebhookConfigs, caBundle), + c.reconcileShootWebhookConfigs(mgr, shootWebhookConfigs), ))); err != nil { return nil, err } - return atomicShootWebhookConfig, nil + return atomicShootWebhookConfigs, nil } // register seed webhook config once we become leader – without CA bundle @@ -315,23 +322,19 @@ func (c *AddToManagerConfig) AddToManager(ctx context.Context, mgr manager.Manag // reconciler. That's why we also don't reconcile the shoot webhook configs here. They are registered in the // ControlPlane actuator and our reconciler will update the included CA bundles if necessary. if err := mgr.Add(runOnceWithLeaderElection( - c.reconcileSeedWebhookConfig(mgr, seedWebhookConfig, nil), + c.reconcileSeedWebhookConfig(mgr, seedWebhookConfigs, nil), )); err != nil { return nil, err } - var sourceWebhookConfigs []client.Object - if seedWebhookConfig != nil { - sourceWebhookConfigs = append(sourceWebhookConfigs, seedWebhookConfig) - } - if err := certificates.AddCertificateManagementToManager( ctx, mgr, + sourceCluster, c.Clock, - sourceWebhookConfigs, - shootWebhookConfig, - atomicShootWebhookConfig, + seedWebhookConfigs, + &shootWebhookConfigs, + atomicShootWebhookConfigs, c.shootNamespaceSelector, c.shootWebhookManagedResourceName, c.extensionName, @@ -342,13 +345,13 @@ func (c *AddToManagerConfig) AddToManager(ctx context.Context, mgr manager.Manag return nil, err } - return atomicShootWebhookConfig, nil + return atomicShootWebhookConfigs, nil } -func (c *AddToManagerConfig) reconcileSeedWebhookConfig(mgr manager.Manager, seedWebhookConfig client.Object, caBundle []byte) func(ctx context.Context) error { +func (c *AddToManagerConfig) reconcileSeedWebhookConfig(mgr manager.Manager, webhookConfigs extensionswebhook.Configs, caBundle []byte) func(ctx context.Context) error { return func(ctx context.Context) error { - if seedWebhookConfig != nil { - if err := extensionswebhook.ReconcileSeedWebhookConfig(ctx, mgr.GetClient(), seedWebhookConfig, c.Server.Namespace, caBundle); err != nil { + for _, webhookConfig := range webhookConfigs.GetWebhookConfigs() { + if err := extensionswebhook.ReconcileSeedWebhookConfig(ctx, mgr.GetClient(), webhookConfig, c.Server.Namespace, caBundle); err != nil { return fmt.Errorf("error reconciling seed webhook config: %w", err) } } @@ -356,14 +359,10 @@ func (c *AddToManagerConfig) reconcileSeedWebhookConfig(mgr manager.Manager, see } } -func (c *AddToManagerConfig) reconcileShootWebhookConfigs(mgr manager.Manager, shootWebhookConfig *admissionregistrationv1.MutatingWebhookConfiguration, caBundle []byte) func(ctx context.Context) error { +func (c *AddToManagerConfig) reconcileShootWebhookConfigs(mgr manager.Manager, shootWebhookConfigs extensionswebhook.Configs) func(ctx context.Context) error { return func(ctx context.Context) error { - if shootWebhookConfig != nil { - if err := extensionswebhook.InjectCABundleIntoWebhookConfig(shootWebhookConfig, caBundle); err != nil { - return err - } - - if err := extensionsshootwebhook.ReconcileWebhooksForAllNamespaces(ctx, mgr.GetClient(), c.Server.Namespace, c.extensionName, c.shootWebhookManagedResourceName, c.shootNamespaceSelector, shootWebhookConfig); err != nil { + if shootWebhookConfigs.HasWebhookConfig() { + if err := extensionsshootwebhook.ReconcileWebhooksForAllNamespaces(ctx, mgr.GetClient(), c.Server.Namespace, c.extensionName, c.shootWebhookManagedResourceName, c.shootNamespaceSelector, shootWebhookConfigs); err != nil { return fmt.Errorf("error reconciling all shoot webhook configs: %w", err) } } @@ -382,60 +381,3 @@ func (r runOnceWithLeaderElection) NeedLeaderElection() bool { func (r runOnceWithLeaderElection) Start(ctx context.Context) error { return r(ctx) } - -// NewAddToManagerSimpleOptions creates new AddToManagerSimpleOptions with the given switch options. -// It can be used for webhooks which are required to run only without an automatic registration in the K8s cluster. -// Hence, ValidatingWebhookConfiguration or MutatingWebhookConfiguration must be created separately. -func NewAddToManagerSimpleOptions(switchOpts *SwitchOptions) *AddToManagerSimpleOptions { - return &AddToManagerSimpleOptions{ - Switch: *switchOpts, - } -} - -// AddToManagerSimpleOptions are options to create an `AddToManager` function from SwitchOptions. -type AddToManagerSimpleOptions struct { - Switch SwitchOptions -} - -// AddFlags implements Option. -func (o *AddToManagerSimpleOptions) AddFlags(fs *pflag.FlagSet) { - o.Switch.AddFlags(fs) -} - -// Complete implements Option. -func (o *AddToManagerSimpleOptions) Complete() error { - return o.Switch.Complete() -} - -// Completed returns the completed AddToManagerSimpleOptions. Only call this if a previous call to `Complete` succeeded. -func (o *AddToManagerSimpleOptions) Completed() *AddToManagerSimple { - return &AddToManagerSimple{ - Switch: *o.Switch.Completed(), - } -} - -// AddToManagerSimple is a completed AddToManager configuration w/o webhook registration. -type AddToManagerSimple struct { - Switch SwitchConfig -} - -// AddToManager makes the configured webhooks known to the given manager. -// The registration for these webhooks must happen separately via ValidatingWebhookConfiguration or MutatingWebhookConfiguration. -func (s *AddToManagerSimple) AddToManager(mgr manager.Manager) error { - webhooks, err := s.Switch.WebhooksFactory(mgr) - if err != nil { - return fmt.Errorf("could not create webhooks: %w", err) - } - - webhookServer := mgr.GetWebhookServer() - - for _, wh := range webhooks { - if wh.Handler != nil { - webhookServer.Register(wh.Path, wh.Handler) - } else { - webhookServer.Register(wh.Path, wh.Webhook) - } - } - - return nil -} diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/controlplane/genericmutator/mutator.go b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/controlplane/genericmutator/mutator.go index 1d541299..6fa61f72 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/controlplane/genericmutator/mutator.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/controlplane/genericmutator/mutator.go @@ -91,6 +91,12 @@ type Ensurer interface { // EnsureAdditionalFiles ensures additional systemd files // "old" might be "nil" and must always be checked. EnsureAdditionalFiles(ctx context.Context, gctx extensionscontextwebhook.GardenContext, new, old *[]extensionsv1alpha1.File) error + // EnsureAdditionalProvisionUnits ensures additional systemd units for the 'provision' OSC + // "old" might be "nil" and must always be checked. + EnsureAdditionalProvisionUnits(ctx context.Context, gctx extensionscontextwebhook.GardenContext, new, old *[]extensionsv1alpha1.Unit) error + // EnsureAdditionalProvisionFiles ensures additional systemd files for the 'provision' OSC + // "old" might be "nil" and must always be checked. + EnsureAdditionalProvisionFiles(ctx context.Context, gctx extensionscontextwebhook.GardenContext, new, old *[]extensionsv1alpha1.File) error } // NewMutator creates a new controlplane mutator. @@ -205,20 +211,25 @@ func (m *mutator) Mutate(ctx context.Context, new, old client.Object) error { return m.ensurer.EnsureETCD(ctx, gctx, x, oldEtcd) } case *extensionsv1alpha1.OperatingSystemConfig: - if x.Spec.Purpose == extensionsv1alpha1.OperatingSystemConfigPurposeReconcile { - var oldOSC *extensionsv1alpha1.OperatingSystemConfig - if old != nil { - var ok bool - oldOSC, ok = old.(*extensionsv1alpha1.OperatingSystemConfig) - if !ok { - return errors.New("could not cast old object to extensionsv1alpha1.OperatingSystemConfig") - } + var oldOSC *extensionsv1alpha1.OperatingSystemConfig + if old != nil { + var ok bool + oldOSC, ok = old.(*extensionsv1alpha1.OperatingSystemConfig) + if !ok { + return errors.New("could not cast old object to extensionsv1alpha1.OperatingSystemConfig") } + } - extensionswebhook.LogMutation(m.logger, x.Kind, x.Namespace, x.Name) - return m.mutateOperatingSystemConfig(ctx, gctx, x, oldOSC) + extensionswebhook.LogMutation(m.logger, x.Kind, x.Namespace, x.Name) + + switch x.Spec.Purpose { + case extensionsv1alpha1.OperatingSystemConfigPurposeProvision: + return m.mutateOperatingSystemConfigProvision(ctx, gctx, x, oldOSC) + case extensionsv1alpha1.OperatingSystemConfigPurposeReconcile: + return m.mutateOperatingSystemConfigReconcile(ctx, gctx, x, oldOSC) + default: + return nil } - return nil } return nil } @@ -251,7 +262,25 @@ func findFileWithPath(osc *extensionsv1alpha1.OperatingSystemConfig, path string return nil } -func (m *mutator) mutateOperatingSystemConfig(ctx context.Context, gctx extensionscontextwebhook.GardenContext, osc, oldOSC *extensionsv1alpha1.OperatingSystemConfig) error { +func (m *mutator) mutateOperatingSystemConfigProvision(ctx context.Context, gctx extensionscontextwebhook.GardenContext, osc, oldOSC *extensionsv1alpha1.OperatingSystemConfig) error { + var ( + oldFiles *[]extensionsv1alpha1.File + oldUnits *[]extensionsv1alpha1.Unit + ) + + if oldOSC != nil { + oldFiles = &oldOSC.Spec.Files + oldUnits = &oldOSC.Spec.Units + } + + if err := m.ensurer.EnsureAdditionalProvisionFiles(ctx, gctx, &osc.Spec.Files, oldFiles); err != nil { + return err + } + + return m.ensurer.EnsureAdditionalProvisionUnits(ctx, gctx, &osc.Spec.Units, oldUnits) +} + +func (m *mutator) mutateOperatingSystemConfigReconcile(ctx context.Context, gctx extensionscontextwebhook.GardenContext, osc, oldOSC *extensionsv1alpha1.OperatingSystemConfig) error { cluster, err := gctx.GetCluster(ctx) if err != nil { return err diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/controlplane/genericmutator/noopensurer.go b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/controlplane/genericmutator/noopensurer.go index 0f2da7ad..ef65d28c 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/controlplane/genericmutator/noopensurer.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/controlplane/genericmutator/noopensurer.go @@ -113,3 +113,13 @@ func (e *NoopEnsurer) EnsureAdditionalUnits(_ context.Context, _ extensionsconte func (e *NoopEnsurer) EnsureAdditionalFiles(_ context.Context, _ extensionscontextwebhook.GardenContext, _, _ *[]extensionsv1alpha1.File) error { return nil } + +// EnsureAdditionalProvisionUnits ensures that additional required system units are added. +func (e *NoopEnsurer) EnsureAdditionalProvisionUnits(_ context.Context, _ extensionscontextwebhook.GardenContext, _, _ *[]extensionsv1alpha1.Unit) error { + return nil +} + +// EnsureAdditionalProvisionFiles ensures that additional required system files are added. +func (e *NoopEnsurer) EnsureAdditionalProvisionFiles(_ context.Context, _ extensionscontextwebhook.GardenContext, _, _ *[]extensionsv1alpha1.File) error { + return nil +} diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/handler.go b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/handler.go index 2ede05d8..e8ce8f30 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/handler.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/handler.go @@ -36,7 +36,7 @@ import ( // HandlerBuilder contains information which are required to create an admission handler. type HandlerBuilder struct { - mutatorMap map[Mutator][]Type + actionMap map[handlerAction][]Type predicates []predicate.Predicate scheme *runtime.Scheme logger logr.Logger @@ -45,24 +45,25 @@ type HandlerBuilder struct { // NewBuilder creates a new HandlerBuilder. func NewBuilder(mgr manager.Manager, logger logr.Logger) *HandlerBuilder { return &HandlerBuilder{ - mutatorMap: make(map[Mutator][]Type), - scheme: mgr.GetScheme(), - logger: logger.WithName("handler"), + actionMap: make(map[handlerAction][]Type), + scheme: mgr.GetScheme(), + logger: logger.WithName("handler"), } } // WithMutator adds the given mutator for the given types to the HandlerBuilder. func (b *HandlerBuilder) WithMutator(mutator Mutator, types ...Type) *HandlerBuilder { - mutator = hybridMutator(mutator) - b.mutatorMap[mutator] = append(b.mutatorMap[mutator], types...) + mutatingAction := mutatingActionHandler(mutator) + b.actionMap[mutatingAction] = append(b.actionMap[mutatingAction], types...) return b } // WithValidator adds the given validator for the given types to the HandlerBuilder. func (b *HandlerBuilder) WithValidator(validator Validator, types ...Type) *HandlerBuilder { - mutator := hybridValidator(validator) - b.mutatorMap[mutator] = append(b.mutatorMap[mutator], types...) + validatingAction := validatingActionHandler(validator) + b.actionMap[validatingAction] = append(b.actionMap[validatingAction], types...) + return b } @@ -76,13 +77,13 @@ func (b *HandlerBuilder) WithPredicates(predicates ...predicate.Predicate) *Hand func (b *HandlerBuilder) Build() (admission.Handler, error) { h := &handler{ typesMap: make(map[metav1.GroupVersionKind]client.Object), - mutatorMap: make(map[metav1.GroupVersionKind]Mutator), + actionMap: make(map[metav1.GroupVersionKind]handlerAction), predicates: b.predicates, scheme: b.scheme, logger: b.logger, } - for m, t := range b.mutatorMap { + for m, t := range b.actionMap { typesMap, err := buildTypesMap(b.scheme, objectsFromTypes(t)) if err != nil { return nil, err @@ -90,7 +91,7 @@ func (b *HandlerBuilder) Build() (admission.Handler, error) { mutator := m for gvk, obj := range typesMap { h.typesMap[gvk] = obj - h.mutatorMap[gvk] = mutator + h.actionMap[gvk] = mutator } } h.decoder = serializer.NewCodecFactory(b.scheme).UniversalDecoder() @@ -98,9 +99,20 @@ func (b *HandlerBuilder) Build() (admission.Handler, error) { return h, nil } +type handlerAction interface { + do(ctx context.Context, new, old client.Object) error +} + +// actionFunc is a func to be used directly as an implementation for handlerAction. +type actionFunc func(ctx context.Context, new, old client.Object) error + +func (mf actionFunc) do(ctx context.Context, new, old client.Object) error { + return mf(ctx, new, old) +} + type handler struct { + actionMap map[metav1.GroupVersionKind]handlerAction typesMap map[metav1.GroupVersionKind]client.Object - mutatorMap map[metav1.GroupVersionKind]Mutator predicates []predicate.Predicate decoder runtime.Decoder scheme *runtime.Scheme @@ -126,10 +138,10 @@ func (h *handler) Handle(ctx context.Context, req admission.Request) admission.R } } - mutator, ok := h.mutatorMap[ar.Kind] + mutator, ok := h.actionMap[ar.Kind] if !ok { // check if we can find an internal type - for gvk, m := range h.mutatorMap { + for gvk, m := range h.actionMap { if gvk.Version == runtime.APIVersionInternal && gvk.Group == ar.Kind.Group && gvk.Kind == ar.Kind.Kind { mutator = m break @@ -143,7 +155,7 @@ func (h *handler) Handle(ctx context.Context, req admission.Request) admission.R return handle(ctx, req, mutator, t, h.decoder, h.logger, h.predicates...) } -func handle(ctx context.Context, req admission.Request, m Mutator, t client.Object, decoder runtime.Decoder, logger logr.Logger, predicates ...predicate.Predicate) admission.Response { +func handle(ctx context.Context, req admission.Request, m handlerAction, t client.Object, decoder runtime.Decoder, logger logr.Logger, predicates ...predicate.Predicate) admission.Response { ar := req.AdmissionRequest // Decode object @@ -172,7 +184,7 @@ func handle(ctx context.Context, req admission.Request, m Mutator, t client.Obje // Process the resource newObj := obj.DeepCopyObject().(client.Object) - if err = m.Mutate(ctx, newObj, oldObj); err != nil { + if err = m.do(ctx, newObj, oldObj); err != nil { logger.Error(fmt.Errorf("could not process: %w", err), "Admission denied", "kind", ar.Kind.Kind, "namespace", obj.GetNamespace(), "name", obj.GetName()) return admission.Errored(http.StatusUnprocessableEntity, err) } diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/handler_shootclient.go b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/handler_shootclient.go index c414c49a..21798072 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/handler_shootclient.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/handler_shootclient.go @@ -67,7 +67,7 @@ type handlerShootClient struct { } func (h *handlerShootClient) Handle(ctx context.Context, req admission.Request) admission.Response { - var mut MutateFunc = func(ctx context.Context, new, old client.Object) error { + var mut actionFunc = func(ctx context.Context, new, old client.Object) error { // TODO: replace this logic with a proper authentication mechanism // see https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#authenticate-apiservers // API servers should authenticate against webhooks servers using TLS client certs, from which the webhook diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/mutator.go b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/mutator.go index 5b356f1c..e4ffe172 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/mutator.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/mutator.go @@ -33,18 +33,15 @@ type MutatorWithShootClient interface { // "old" is optional and it must always be checked for nil. Mutate(ctx context.Context, new, old client.Object, shootClient client.Client) error } -type mutatorWrapper struct { + +type mutationWrapper struct { Mutator } -func hybridMutator(mut Mutator) Mutator { - return &mutatorWrapper{mut} +func (d *mutationWrapper) do(ctx context.Context, new, old client.Object) error { + return d.Mutate(ctx, new, old) } -// MutateFunc is a func to be used directly as an implementation for Mutator -type MutateFunc func(ctx context.Context, new, old client.Object) error - -// Mutate validates and if needed mutates the given object. -func (mf MutateFunc) Mutate(ctx context.Context, new, old client.Object) error { - return mf(ctx, new, old) +func mutatingActionHandler(val Mutator) handlerAction { + return &mutationWrapper{val} } diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/registration.go b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/registration.go index db174e6d..768ba8cc 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/registration.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/registration.go @@ -23,6 +23,7 @@ import ( admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/apiutil" @@ -57,7 +58,42 @@ func PrefixedName(componentName string) string { return componentName } -// BuildWebhookConfigs builds MutatingWebhookConfiguration objects for seed and shoots from the given webhooks slice. +// Configs contains mutating and validating webhook configurations. +type Configs struct { + MutatingWebhookConfig *admissionregistrationv1.MutatingWebhookConfiguration + ValidatingWebhookConfig *admissionregistrationv1.ValidatingWebhookConfiguration +} + +// GetWebhookConfigs returns a slice of webhook configurations. +func (c *Configs) GetWebhookConfigs() []client.Object { + configs := make([]client.Object, 0, 2) + if c.MutatingWebhookConfig != nil { + configs = append(configs, c.MutatingWebhookConfig) + } + if c.ValidatingWebhookConfig != nil { + configs = append(configs, c.ValidatingWebhookConfig) + } + return configs +} + +// DeepCopy returns a deep copy of the 'Configs' object. +func (c *Configs) DeepCopy() *Configs { + deepCopy := Configs{} + if c.MutatingWebhookConfig != nil { + deepCopy.MutatingWebhookConfig = c.MutatingWebhookConfig.DeepCopy() + } + if c.ValidatingWebhookConfig != nil { + deepCopy.ValidatingWebhookConfig = c.ValidatingWebhookConfig.DeepCopy() + } + return &deepCopy +} + +// HasWebhookConfig returns true if 'Configs' contains at least one webhook configuration. +func (c *Configs) HasWebhookConfig() bool { + return c.MutatingWebhookConfig != nil || c.ValidatingWebhookConfig != nil +} + +// BuildWebhookConfigs builds webhook.Configs for seed and shoot from the given webhooks slice. func BuildWebhookConfigs( webhooks []*Webhook, c client.Client, @@ -66,87 +102,67 @@ func BuildWebhookConfigs( mode, url string, caBundle []byte, ) ( - seedWebhookConfig client.Object, - shootWebhookConfig *admissionregistrationv1.MutatingWebhookConfiguration, + seedWebhookConfigs Configs, + shootWebhookConfigs Configs, err error, ) { var ( exact = admissionregistrationv1.Exact sideEffects = admissionregistrationv1.SideEffectClassNone - - seedWebhooks []admissionregistrationv1.MutatingWebhook - shootWebhooks []admissionregistrationv1.MutatingWebhook + shootMode = ModeURLWithServiceName ) + if mode == ModeURL { + shootMode = ModeURL + } + for _, webhook := range webhooks { - var rules []admissionregistrationv1.RuleWithOperations + var ( + name = NamePrefix + providerName + rules []admissionregistrationv1.RuleWithOperations + ) for _, t := range webhook.Types { rule, err := buildRule(c, t) if err != nil { - return nil, nil, err + return seedWebhookConfigs, shootWebhookConfigs, err } rules = append(rules, *rule) } - - webhookToRegister := admissionregistrationv1.MutatingWebhook{ - AdmissionReviewVersions: []string{"v1", "v1beta1"}, - Name: fmt.Sprintf("%s.%s.extensions.gardener.cloud", webhook.Name, strings.TrimPrefix(providerName, "provider-")), - NamespaceSelector: webhook.Selector, - ObjectSelector: webhook.ObjectSelector, - Rules: rules, - SideEffects: &sideEffects, - TimeoutSeconds: pointer.Int32(10), - } - - if webhook.TimeoutSeconds != nil { - webhookToRegister.TimeoutSeconds = webhook.TimeoutSeconds - } - - shootMode := ModeURLWithServiceName - if mode == ModeURL { - shootMode = ModeURL - } - switch webhook.Target { case TargetSeed: - webhookToRegister.FailurePolicy = getFailurePolicy(admissionregistrationv1.Fail, webhook.FailurePolicy) - webhookToRegister.MatchPolicy = &exact - webhookToRegister.ClientConfig = BuildClientConfigFor(webhook.Path, namespace, providerName, servicePort, mode, url, caBundle) - seedWebhooks = append(seedWebhooks, webhookToRegister) + // if all webhooks for one target are removed in a new version, extensions need to explicitly delete the respective + // webhook config + createAndAddToWebhookConfig( + &seedWebhookConfigs, + name, + *webhook, + providerName, + rules, + getFailurePolicy(admissionregistrationv1.Fail, webhook.FailurePolicy), + &exact, + BuildClientConfigFor(webhook.Path, namespace, providerName, servicePort, mode, url, caBundle), + &sideEffects, + ) + case TargetShoot: - webhookToRegister.FailurePolicy = getFailurePolicy(admissionregistrationv1.Ignore, webhook.FailurePolicy) - webhookToRegister.MatchPolicy = &exact - webhookToRegister.ClientConfig = BuildClientConfigFor(webhook.Path, namespace, providerName, servicePort, shootMode, url, caBundle) - shootWebhooks = append(shootWebhooks, webhookToRegister) + createAndAddToWebhookConfig( + &shootWebhookConfigs, + name+NameSuffixShoot, + *webhook, + providerName, + rules, + getFailurePolicy(admissionregistrationv1.Ignore, webhook.FailurePolicy), + &exact, + BuildClientConfigFor(webhook.Path, namespace, providerName, servicePort, shootMode, url, caBundle), + &sideEffects, + ) default: - return nil, nil, fmt.Errorf("invalid webhook target: %s", webhook.Target) - } - } - - // if all webhooks for one target are removed in a new version, extensions need to explicitly delete the respective - // webhook config - if len(seedWebhooks) > 0 { - seedWebhookConfig = &admissionregistrationv1.MutatingWebhookConfiguration{ - ObjectMeta: metav1.ObjectMeta{ - Name: NamePrefix + providerName, - Labels: map[string]string{v1beta1constants.LabelExcludeWebhookFromRemediation: "true"}, - }, - Webhooks: seedWebhooks, + return seedWebhookConfigs, shootWebhookConfigs, fmt.Errorf("invalid webhook target: %s", webhook.Target) } } - if len(shootWebhooks) > 0 { - shootWebhookConfig = &admissionregistrationv1.MutatingWebhookConfiguration{ - ObjectMeta: metav1.ObjectMeta{ - Name: NamePrefix + providerName + NameSuffixShoot, - Labels: map[string]string{v1beta1constants.LabelExcludeWebhookFromRemediation: "true"}, - }, - Webhooks: shootWebhooks, - } - } - - return seedWebhookConfig, shootWebhookConfig, nil + return seedWebhookConfigs, shootWebhookConfigs, nil } // ReconcileSeedWebhookConfig reconciles the given webhook config in the seed cluster. @@ -291,12 +307,18 @@ func buildRule(c client.Client, t Type) (*admissionregistrationv1.RuleWithOperat return nil, fmt.Errorf("could not get GroupVersionKind from object %v: %w", t.Obj, err) } - // Get REST mapping from GVK - mapping, err := c.RESTMapper().RESTMapping(gvk.GroupKind(), gvk.Version) + // Get REST mapping from GVK. Don't specify a version to retrieve a mapping since this fails for '__internal' versions. + mapping, err := c.RESTMapper().RESTMapping(gvk.GroupKind()) if err != nil { return nil, fmt.Errorf("could not get REST mapping from GroupVersionKind '%s': %w", gvk.String(), err) } + apiVersions := gvk.Version + // The internal API version ('__internal') cannot be considered in the webhook rule, take all versions instead. + if apiVersions == runtime.APIVersionInternal { + apiVersions = "*" + } + resource := mapping.Resource.Resource if t.Subresource != nil { resource += fmt.Sprintf("/%s", *t.Subresource) @@ -310,7 +332,7 @@ func buildRule(c client.Client, t Type) (*admissionregistrationv1.RuleWithOperat }, Rule: admissionregistrationv1.Rule{ APIGroups: []string{gvk.Group}, - APIVersions: []string{gvk.Version}, + APIVersions: []string{apiVersions}, Resources: []string{resource}, }, }, nil @@ -345,3 +367,74 @@ func BuildClientConfigFor(webhookPath string, namespace, componentName string, s return clientConfig } + +func createAndAddToWebhookConfig( + webhookConfigs *Configs, + name string, + webhook Webhook, + providerName string, + rules []admissionregistrationv1.RuleWithOperations, + failurePolicy *admissionregistrationv1.FailurePolicyType, + matchPolicy *admissionregistrationv1.MatchPolicyType, + clientConfig admissionregistrationv1.WebhookClientConfig, + sideEffects *admissionregistrationv1.SideEffectClass, +) { + objectMeta := metav1.ObjectMeta{ + Name: name, + Labels: map[string]string{v1beta1constants.LabelExcludeWebhookFromRemediation: "true"}, + } + + // Create a validating or mutating webhook configuration based on the webhooks action. If the action is not set or + // unknown fall back to mutating webhook since this is the safest option to pick. + switch webhook.Action { + case ActionValidating: + if webhookConfigs.ValidatingWebhookConfig == nil { + webhookConfigs.ValidatingWebhookConfig = &admissionregistrationv1.ValidatingWebhookConfiguration{ + ObjectMeta: objectMeta, + } + } + webhookToRegister := admissionregistrationv1.ValidatingWebhook{ + AdmissionReviewVersions: []string{"v1", "v1beta1"}, + Name: fmt.Sprintf("%s.%s.extensions.gardener.cloud", webhook.Name, strings.TrimPrefix(providerName, "provider-")), + NamespaceSelector: webhook.Selector, + ObjectSelector: webhook.ObjectSelector, + Rules: rules, + SideEffects: sideEffects, + TimeoutSeconds: pointer.Int32(10), + } + + if webhook.TimeoutSeconds != nil { + webhookToRegister.TimeoutSeconds = webhook.TimeoutSeconds + } + + webhookToRegister.FailurePolicy = failurePolicy + webhookToRegister.MatchPolicy = matchPolicy + webhookToRegister.ClientConfig = clientConfig + webhookConfigs.ValidatingWebhookConfig.Webhooks = append(webhookConfigs.ValidatingWebhookConfig.Webhooks, webhookToRegister) + default: + if webhookConfigs.MutatingWebhookConfig == nil { + webhookConfigs.MutatingWebhookConfig = &admissionregistrationv1.MutatingWebhookConfiguration{ + ObjectMeta: objectMeta, + } + } + + webhookToRegister := admissionregistrationv1.MutatingWebhook{ + AdmissionReviewVersions: []string{"v1", "v1beta1"}, + Name: fmt.Sprintf("%s.%s.extensions.gardener.cloud", webhook.Name, strings.TrimPrefix(providerName, "provider-")), + NamespaceSelector: webhook.Selector, + ObjectSelector: webhook.ObjectSelector, + Rules: rules, + SideEffects: sideEffects, + TimeoutSeconds: pointer.Int32(10), + } + + if webhook.TimeoutSeconds != nil { + webhookToRegister.TimeoutSeconds = webhook.TimeoutSeconds + } + + webhookToRegister.FailurePolicy = failurePolicy + webhookToRegister.MatchPolicy = matchPolicy + webhookToRegister.ClientConfig = clientConfig + webhookConfigs.MutatingWebhookConfig.Webhooks = append(webhookConfigs.MutatingWebhookConfig.Webhooks, webhookToRegister) + } +} diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/shoot/webhook.go b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/shoot/webhook.go index ad0b3b70..42f5a31d 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/shoot/webhook.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/shoot/webhook.go @@ -18,7 +18,6 @@ import ( "context" "fmt" - admissionregistrationv1 "k8s.io/api/admissionregistration/v1" corev1 "k8s.io/api/core/v1" networkingv1 "k8s.io/api/networking/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" @@ -26,6 +25,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "github.com/gardener/gardener/extensions/pkg/controller" + "github.com/gardener/gardener/extensions/pkg/webhook" v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" resourcesv1alpha1 "github.com/gardener/gardener/pkg/apis/resources/v1alpha1" "github.com/gardener/gardener/pkg/client/kubernetes" @@ -44,7 +44,7 @@ func ReconcileWebhookConfig( extensionNamespace string, extensionName string, managedResourceName string, - shootWebhookConfig *admissionregistrationv1.MutatingWebhookConfiguration, + shootWebhookConfigs webhook.Configs, cluster *controller.Cluster, ) error { if cluster.Shoot == nil { @@ -63,7 +63,7 @@ func ReconcileWebhookConfig( data, err := managedresources. NewRegistry(kubernetes.ShootScheme, kubernetes.ShootCodec, kubernetes.ShootSerializer). - AddAllAndSerialize(shootWebhookConfig) + AddAllAndSerialize(shootWebhookConfigs.GetWebhookConfigs()...) if err != nil { return err } @@ -85,7 +85,7 @@ func ReconcileWebhooksForAllNamespaces( extensionName string, managedResourceName string, shootNamespaceSelector map[string]string, - shootWebhookConfig *admissionregistrationv1.MutatingWebhookConfiguration, + shootWebhookConfigs webhook.Configs, ) error { namespaceList := &corev1.NamespaceList{} if err := c.List(ctx, namespaceList, client.MatchingLabels(utils.MergeStringMaps(map[string]string{ @@ -114,7 +114,7 @@ func ReconcileWebhooksForAllNamespaces( return err } - return ReconcileWebhookConfig(ctx, c, namespaceName, extensionNamespace, extensionName, managedResourceName, shootWebhookConfig.DeepCopy(), cluster) + return ReconcileWebhookConfig(ctx, c, namespaceName, extensionNamespace, extensionName, managedResourceName, *shootWebhookConfigs.DeepCopy(), cluster) }) } diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/validator.go b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/validator.go index b0d58a3a..67892bea 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/validator.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/validator.go @@ -29,11 +29,10 @@ type validationWrapper struct { Validator } -// Mutate implements the `Mutator` interface and calls the `Validate` function of the underlying validator. -func (d *validationWrapper) Mutate(ctx context.Context, new, old client.Object) error { +func (d *validationWrapper) do(ctx context.Context, new, old client.Object) error { return d.Validate(ctx, new, old) } -func hybridValidator(val Validator) Mutator { +func validatingActionHandler(val Validator) handlerAction { return &validationWrapper{val} } diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/webhook.go b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/webhook.go index bc23c249..205246a7 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/webhook.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/webhook.go @@ -15,6 +15,7 @@ package webhook import ( + "fmt" "net/http" admissionregistrationv1 "k8s.io/api/admissionregistration/v1" @@ -27,6 +28,10 @@ import ( ) const ( + // ActionMutating defines the webhook as a mutating webhook. + ActionMutating = "mutating" + // ActionValidating defines the webhook as a validating webhook. + ActionValidating = "validating" // TargetSeed defines that the webhook is to be installed in the seed. TargetSeed = "seed" // TargetShoot defines that the webhook is to be installed in the shoot. @@ -35,6 +40,7 @@ const ( // Webhook is the specification of a webhook. type Webhook struct { + Action string Name string Provider string Path string @@ -56,27 +62,47 @@ type Type struct { // Args contains Webhook creation arguments. type Args struct { - Provider string - Name string - Path string - Predicates []predicate.Predicate - Validators map[Validator][]Type - Mutators map[Mutator][]Type + Provider string + Name string + Path string + Target string + Selector *metav1.LabelSelector + ObjectSelector *metav1.LabelSelector + Predicates []predicate.Predicate + Validators map[Validator][]Type + Mutators map[Mutator][]Type } // New creates a new Webhook with the given args. func New(mgr manager.Manager, args Args) (*Webhook, error) { - logger := log.Log.WithName(args.Name).WithValues("provider", args.Provider) + var ( + objTypes []Type - // Create handler - builder := NewBuilder(mgr, logger) + logger = log.Log.WithName(args.Name).WithValues("provider", args.Provider) + builder = NewBuilder(mgr, logger) + ) - for val, objs := range args.Validators { - builder.WithValidator(val, objs...) + var actionType string + if len(args.Mutators) > 0 { + actionType = ActionMutating + } + if len(args.Validators) > 0 { + // Mutators and validators must not be configured at the same time because mutators are supposed to be placed in + // a 'MutatingWebhookConfiugration' while validators should reside in a 'ValidatingWebhookConfiguration'. + if actionType == ActionMutating { + return nil, fmt.Errorf("failed to create webhook because a mixture of mutating and validating functions is not permitted") + } + actionType = ActionValidating } for mut, objs := range args.Mutators { builder.WithMutator(mut, objs...) + objTypes = append(objTypes, objs...) + } + + for val, objs := range args.Validators { + builder.WithValidator(val, objs...) + objTypes = append(objTypes, objs...) } builder.WithPredicates(args.Predicates...) @@ -90,7 +116,14 @@ func New(mgr manager.Manager, args Args) (*Webhook, error) { logger.Info("Creating webhook") return &Webhook{ - Path: args.Path, - Webhook: &admission.Webhook{Handler: handler, RecoverPanic: true}, + Name: args.Name, + Provider: args.Provider, + Action: actionType, + Selector: args.Selector, + ObjectSelector: args.ObjectSelector, + Path: args.Path, + Target: args.Target, + Webhook: &admission.Webhook{Handler: handler, RecoverPanic: true}, + Types: objTypes, }, nil } 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 b34e9a49..95997760 --- 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 2ea80cd2..9da10643 --- 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 index 48cf864e..bb89cb7c --- a/vendor/github.com/gardener/gardener/hack/check-skaffold-deps.sh +++ b/vendor/github.com/gardener/gardener/hack/check-skaffold-deps.sh @@ -35,6 +35,7 @@ run "skaffold.yaml" "gardener-apiserver" "controlplane" run "skaffold.yaml" "gardener-controller-manager" "controlplane" run "skaffold.yaml" "gardener-extension-provider-local" "provider-local" run "skaffold.yaml" "gardener-resource-manager" "gardenlet" +run "skaffold.yaml" "gardener-node-agent" "gardenlet" run "skaffold.yaml" "gardener-scheduler" "controlplane" run "skaffold.yaml" "gardenlet" "gardenlet" 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 index 779b5396..9540a8cc --- a/vendor/github.com/gardener/gardener/hack/ci-common.sh +++ b/vendor/github.com/gardener/gardener/hack/ci-common.sh @@ -38,8 +38,8 @@ export_artifacts() { kubectl -n "$namespace" exec "$node" -- crictl images >"$node_dir/images.log" || true kubectl -n "$namespace" get pod "$node" --show-managed-fields -oyaml >"$node_dir/pod.yaml" || true - # systemd units - for unit in cloud-config-downloader kubelet containerd containerd-configuration-local-setup; do + # relevant systemd units + for unit in cloud-config-downloader gardener-node-agent kubelet containerd containerd-configuration-local-setup; do kubectl -n "$namespace" exec "$node" -- journalctl --no-pager -u $unit.service >"$node_dir/$unit.log" || true done kubectl -n "$namespace" exec "$node" -- journalctl --no-pager >"$node_dir/journal.log" || true 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 1655ef6e..89e8372e --- 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 23397b05..f39f9b8c --- 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 2d7f6d68..c4e8e2fe --- 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 b699684a..b59196f3 --- 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 4d404a19..d5aca059 --- 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 e0583c30..65684710 --- 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 00000000..ee841f38 --- /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/imagevector/images.yaml b/vendor/github.com/gardener/gardener/imagevector/images.yaml index 2f0a3d96..8880cf3c 100644 --- a/vendor/github.com/gardener/gardener/imagevector/images.yaml +++ b/vendor/github.com/gardener/gardener/imagevector/images.yaml @@ -54,7 +54,7 @@ images: - name: etcd-druid sourceRepository: github.com/gardener/etcd-druid repository: eu.gcr.io/gardener-project/gardener/etcd-druid - tag: "v0.20.3" + tag: "v0.21.0" - name: dependency-watchdog sourceRepository: github.com/gardener/dependency-watchdog repository: eu.gcr.io/gardener-project/gardener/dependency-watchdog @@ -75,7 +75,7 @@ images: - name: ingress-default-backend sourceRepository: github.com/gardener/ingress-default-backend repository: eu.gcr.io/gardener-project/gardener/ingress-default-backend - tag: "0.17.0" + tag: "0.18.0" labels: - name: 'gardener.cloud/cve-categorisation' value: @@ -139,8 +139,8 @@ images: targetVersion: "1.24.x" - name: vpn-seed-server sourceRepository: github.com/gardener/vpn2 - repository: eu.gcr.io/gardener-project/gardener/vpn-seed-server - tag: "0.19.0" + repository: europe-docker.pkg.dev/gardener-project/releases/gardener/vpn-seed-server + tag: "0.22.0" # Monitoring - name: alertmanager @@ -214,7 +214,7 @@ images: - name: gardener-metrics-exporter sourceRepository: github.com/gardener/gardener-metrics-exporter repository: eu.gcr.io/gardener-project/gardener/metrics-exporter - tag: "0.27.0" + tag: "0.28.0" resourceId: name: metrics-exporter - name: node-exporter @@ -291,8 +291,8 @@ images: # Shoot core addons - name: vpn-shoot-client sourceRepository: github.com/gardener/vpn2 - repository: eu.gcr.io/gardener-project/gardener/vpn-shoot-client - tag: "0.19.0" + repository: europe-docker.pkg.dev/gardener-project/releases/gardener/vpn-shoot-client + tag: "0.22.0" - name: coredns sourceRepository: github.com/coredns/coredns repository: registry.k8s.io/coredns/coredns @@ -541,7 +541,7 @@ images: - name: vpa-admission-controller sourceRepository: github.com/kubernetes/autoscaler repository: registry.k8s.io/autoscaling/vpa-admission-controller - tag: "0.14.0" + tag: "1.0.0" labels: - name: 'gardener.cloud/cve-categorisation' value: @@ -554,7 +554,7 @@ images: - name: vpa-recommender sourceRepository: github.com/kubernetes/autoscaler repository: registry.k8s.io/autoscaling/vpa-recommender - tag: "0.14.0" + tag: "1.0.0" labels: - name: 'gardener.cloud/cve-categorisation' value: @@ -567,7 +567,7 @@ images: - name: vpa-updater sourceRepository: github.com/kubernetes/autoscaler repository: registry.k8s.io/autoscaling/vpa-updater - tag: "0.14.0" + tag: "1.0.0" labels: - name: 'gardener.cloud/cve-categorisation' value: @@ -603,7 +603,7 @@ images: - name: istio-proxy sourceRepository: github.com/istio/istio repository: gcr.io/istio-release/proxyv2 - tag: "1.17.1-distroless" + tag: "1.19.3-distroless" labels: - name: 'gardener.cloud/cve-categorisation' value: @@ -620,7 +620,7 @@ images: - name: istio-istiod sourceRepository: github.com/istio/istio repository: gcr.io/istio-release/pilot - tag: "1.17.1-distroless" + tag: "1.19.3-distroless" labels: - name: 'gardener.cloud/cve-categorisation' value: @@ -664,4 +664,4 @@ images: name: apiserver-proxy sourceRepository: github.com/gardener/apiserver-proxy repository: eu.gcr.io/gardener-project/gardener/apiserver-proxy - tag: "v0.14.0" + tag: "v0.15.0" 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 35263a6e..6bba21a9 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 3ffa508a..6c588347 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 00000000..b04a1522 --- /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 00000000..84a18188 --- /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 ad987fd3..fc22bdba 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 00000000..a8e2e9b3 --- /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 4b9e2908..1d390a71 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.aaakk.us.kg.gardener.gardener.pkg.apis.authentication.v1alpha1.AdminKubeconfigRequest") proto.RegisterType((*AdminKubeconfigRequestSpec)(nil), "github.aaakk.us.kg.gardener.gardener.pkg.apis.authentication.v1alpha1.AdminKubeconfigRequestSpec") proto.RegisterType((*AdminKubeconfigRequestStatus)(nil), "github.aaakk.us.kg.gardener.gardener.pkg.apis.authentication.v1alpha1.AdminKubeconfigRequestStatus") + proto.RegisterType((*ViewerKubeconfigRequest)(nil), "github.aaakk.us.kg.gardener.gardener.pkg.apis.authentication.v1alpha1.ViewerKubeconfigRequest") + proto.RegisterType((*ViewerKubeconfigRequestSpec)(nil), "github.aaakk.us.kg.gardener.gardener.pkg.apis.authentication.v1alpha1.ViewerKubeconfigRequestSpec") + proto.RegisterType((*ViewerKubeconfigRequestStatus)(nil), "github.aaakk.us.kg.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 be4e0c73..d5caaa6a 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 3d51bc13..ffe9df3a 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 5df13609..1a0ab71b 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 00000000..df4ff287 --- /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 0b4cbd3e..a92a42e2 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 65cdee80..3cbaad76 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 e90796cb..0531bd66 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 f4f5f2ff..7ea8105c 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 d7d92216..d5bc10dc 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 52884c2c..2d5a3f58 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 @@ -267,6 +267,8 @@ const ( GardenRoleOptionalAddon = "optional-addon" // GardenRoleCloudConfig is the value of the GardenRole key indicating type 'cloud-config'. GardenRoleCloudConfig = "cloud-config" + // GardenRoleOperatingSystemConfig is the value of the GardenRole key indicating type 'operating-system-config'. + GardenRoleOperatingSystemConfig = "operating-system-config" // GardenRoleKubeconfig is the value of the GardenRole key indicating type 'kubeconfig'. GardenRoleKubeconfig = "kubeconfig" // GardenRoleCACluster is the value of the GardenRole key indicating type 'ca-cluster'. @@ -603,10 +605,10 @@ const ( AnnotationShootInfrastructureCleanupWaitPeriodSeconds = "shoot.gardener.cloud/infrastructure-cleanup-wait-period-seconds" // AnnotationShootCloudConfigExecutionMaxDelaySeconds is a key for an annotation on a Shoot resource that declares // the maximum delay in seconds when potentially updated cloud-config user data is executed on the worker nodes. - // Concretely, the cloud-config-downloader systemd service running on all worker nodes will wait for a random - // duration based on the configured value before executing the user data (default value is 300) plus an additional - // offset of 30s. If set to 0 then no random delay will be applied and the minimum delay (30s) applies. Any value - // above 1800 is ignored (in this case the default value is used). + // Concretely, the cloud-config-downloader/gardener-node-agent systemd service running on all worker nodes will wait + // for a random duration based on the configured value before executing the user data (default value is 300) plus an + // additional offset of 30s. If set to 0 then no random delay will be applied and the minimum delay (30s) applies. + // Any value above 1800 is ignored (in this case the default value is used). // Note that changing this value only applies to new nodes. Existing nodes which already computed their individual // delays will not recompute it. AnnotationShootCloudConfigExecutionMaxDelaySeconds = "shoot.gardener.cloud/cloud-config-execution-max-delay-seconds" @@ -626,8 +628,6 @@ const ( AnnotationPodSecurityEnforce = "security.gardener.cloud/pod-security-enforce" // OperatingSystemConfigUnitNameKubeletService is a constant for a unit in the operating system config that contains the kubelet service. OperatingSystemConfigUnitNameKubeletService = "kubelet.service" - // OperatingSystemConfigUnitNameDockerService is a constant for a unit in the operating system config that contains the docker service. - OperatingSystemConfigUnitNameDockerService = "docker.service" // OperatingSystemConfigUnitNameContainerDService is a constant for a unit in the operating system config that contains the containerd service. OperatingSystemConfigUnitNameContainerDService = "containerd.service" // OperatingSystemConfigFilePathKernelSettings is a constant for a path to a file in the operating system config that contains some general kernel settings. @@ -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 @@ -715,8 +719,10 @@ const ( // or the specified namespace was not present. NamespaceCreatedByProjectController = "namespace.gardener.cloud/created-by-project-controller" - // DefaultVPNRange is the default network range for the VPN between seed and shoot cluster. + // DefaultVPNRange is the default IPv4 network range for the VPN between seed and shoot cluster. DefaultVPNRange = "192.168.123.0/24" + // DefaultVPNRangeV6 is the default IPv6 network range for the VPN between seed and shoot cluster. + DefaultVPNRangeV6 = "fd8f:6d53:b97a:1::/120" // BackupSecretName is the name of secret having credentials for etcd backups. BackupSecretName string = "etcd-backup" diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_secretbinding.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_secretbinding.go new file mode 100644 index 00000000..6608e8b1 --- /dev/null +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_secretbinding.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 v1beta1 + +// SetDefaults_SecretBinding sets default values for SecretBinding objects. +func SetDefaults_SecretBinding(obj *SecretBinding) { + if len(obj.SecretRef.Namespace) == 0 { + obj.SecretRef.Namespace = obj.Namespace + } + + for i, quota := range obj.Quotas { + if len(quota.Namespace) == 0 { + obj.Quotas[i].Namespace = obj.Namespace + } + } +} diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_seed.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_seed.go new file mode 100644 index 00000000..d3dfb8c7 --- /dev/null +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_seed.go @@ -0,0 +1,85 @@ +// 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 v1beta1 + +import ( + corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/resource" + "k8s.io/utils/pointer" +) + +// SetDefaults_Seed sets default values for Seed objects. +func SetDefaults_Seed(obj *Seed) { + if obj.Spec.Settings == nil { + obj.Spec.Settings = &SeedSettings{} + } +} + +// SetDefaults_SeedSettings sets default values for SeedSettings objects. +func SetDefaults_SeedSettings(obj *SeedSettings) { + if obj.ExcessCapacityReservation == nil { + obj.ExcessCapacityReservation = &SeedSettingExcessCapacityReservation{} + setDefaults_ExcessCapacityReservationConfig(obj.ExcessCapacityReservation) + } + + if pointer.BoolDeref(obj.ExcessCapacityReservation.Enabled, true) && len(obj.ExcessCapacityReservation.Configs) == 0 { + setDefaults_ExcessCapacityReservationConfig(obj.ExcessCapacityReservation) + } + + if obj.Scheduling == nil { + obj.Scheduling = &SeedSettingScheduling{Visible: true} + } + + if obj.VerticalPodAutoscaler == nil { + obj.VerticalPodAutoscaler = &SeedSettingVerticalPodAutoscaler{Enabled: true} + } + + if obj.DependencyWatchdog == nil { + obj.DependencyWatchdog = &SeedSettingDependencyWatchdog{} + } + + if obj.TopologyAwareRouting == nil { + obj.TopologyAwareRouting = &SeedSettingTopologyAwareRouting{Enabled: false} + } +} + +// SetDefaults_SeedNetworks sets default values for SeedNetworks objects. +func SetDefaults_SeedNetworks(obj *SeedNetworks) { + if len(obj.IPFamilies) == 0 { + obj.IPFamilies = []IPFamily{IPFamilyIPv4} + } +} + +// SetDefaults_SeedSettingDependencyWatchdog sets defaults for SeedSettingDependencyWatchdog objects. +func SetDefaults_SeedSettingDependencyWatchdog(obj *SeedSettingDependencyWatchdog) { + if obj.Weeder == nil { + obj.Weeder = &SeedSettingDependencyWatchdogWeeder{Enabled: true} + } + if obj.Prober == nil { + obj.Prober = &SeedSettingDependencyWatchdogProber{Enabled: true} + } +} + +func setDefaults_ExcessCapacityReservationConfig(excessCapacityReservation *SeedSettingExcessCapacityReservation) { + excessCapacityReservation.Configs = []SeedSettingExcessCapacityReservationConfig{ + // This roughly corresponds to a single, moderately large control-plane. + { + Resources: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("2"), + corev1.ResourceMemory: resource.MustParse("6Gi"), + }, + }, + } +} diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_shoot.go similarity index 82% rename from vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults.go rename to vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_shoot.go index 2d23f268..3cb60f84 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_shoot.go @@ -1,4 +1,4 @@ -// Copyright 2018 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. @@ -21,93 +21,17 @@ import ( corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/utils/pointer" v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" "github.com/gardener/gardener/pkg/utils/timewindow" ) -func addDefaultingFuncs(scheme *runtime.Scheme) error { - return RegisterDefaults(scheme) -} - -// SetDefaults_SecretBinding sets default values for SecretBinding objects. -func SetDefaults_SecretBinding(obj *SecretBinding) { - if len(obj.SecretRef.Namespace) == 0 { - obj.SecretRef.Namespace = obj.Namespace - } - - for i, quota := range obj.Quotas { - if len(quota.Namespace) == 0 { - obj.Quotas[i].Namespace = obj.Namespace - } - } -} - -// SetDefaults_Seed sets default values for Seed objects. -func SetDefaults_Seed(obj *Seed) { - if obj.Spec.Settings == nil { - obj.Spec.Settings = &SeedSettings{} - } - - var defaultExcessCapacityReservationConfigs = []SeedSettingExcessCapacityReservationConfig{ - // This roughly corresponds to a single, moderately large control-plane. - {Resources: corev1.ResourceList{corev1.ResourceCPU: resource.MustParse("2"), corev1.ResourceMemory: resource.MustParse("6Gi")}}, - } - - if obj.Spec.Settings.ExcessCapacityReservation == nil { - obj.Spec.Settings.ExcessCapacityReservation = &SeedSettingExcessCapacityReservation{ - Configs: defaultExcessCapacityReservationConfigs, - } - } - - if pointer.BoolDeref(obj.Spec.Settings.ExcessCapacityReservation.Enabled, true) && len(obj.Spec.Settings.ExcessCapacityReservation.Configs) == 0 { - obj.Spec.Settings.ExcessCapacityReservation.Configs = defaultExcessCapacityReservationConfigs - } - - if obj.Spec.Settings.Scheduling == nil { - obj.Spec.Settings.Scheduling = &SeedSettingScheduling{Visible: true} - } - - if obj.Spec.Settings.VerticalPodAutoscaler == nil { - obj.Spec.Settings.VerticalPodAutoscaler = &SeedSettingVerticalPodAutoscaler{Enabled: true} - } - - if obj.Spec.Settings.DependencyWatchdog == nil { - obj.Spec.Settings.DependencyWatchdog = &SeedSettingDependencyWatchdog{} - } - - if obj.Spec.Settings.TopologyAwareRouting == nil { - obj.Spec.Settings.TopologyAwareRouting = &SeedSettingTopologyAwareRouting{Enabled: false} - } -} - -// SetDefaults_SeedNetworks sets default values for SeedNetworks objects. -func SetDefaults_SeedNetworks(obj *SeedNetworks) { - if len(obj.IPFamilies) == 0 { - obj.IPFamilies = []IPFamily{IPFamilyIPv4} - } -} - -// SetDefaults_SeedSettingDependencyWatchdog sets defaults for SeedSettingDependencyWatchdog objects. -func SetDefaults_SeedSettingDependencyWatchdog(obj *SeedSettingDependencyWatchdog) { - if obj.Weeder == nil { - obj.Weeder = &SeedSettingDependencyWatchdogWeeder{Enabled: true} - } - if obj.Prober == nil { - obj.Prober = &SeedSettingDependencyWatchdogProber{Enabled: true} - } -} - // SetDefaults_Shoot sets default values for Shoot objects. 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 @@ -170,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) } @@ -306,9 +234,6 @@ func SetDefaults_KubeAPIServerConfig(obj *KubeAPIServerConfig) { } } -// SetDefaults_KubeControllerManagerConfig sets default values for KubeControllerManagerConfig objects. -func SetDefaults_KubeControllerManagerConfig(_ *KubeControllerManagerConfig) {} - // SetDefaults_Networking sets default values for Networking objects. func SetDefaults_Networking(obj *Networking) { if len(obj.IPFamilies) == 0 { 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 86f45434..770b46fb 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.aaakk.us.kg.gardener.gardener.pkg.apis.core.v1beta1.DataVolume") proto.RegisterType((*DeploymentRef)(nil), "github.aaakk.us.kg.gardener.gardener.pkg.apis.core.v1beta1.DeploymentRef") proto.RegisterType((*ETCDEncryptionKeyRotation)(nil), "github.aaakk.us.kg.gardener.gardener.pkg.apis.core.v1beta1.ETCDEncryptionKeyRotation") + proto.RegisterType((*EncryptionConfig)(nil), "github.aaakk.us.kg.gardener.gardener.pkg.apis.core.v1beta1.EncryptionConfig") proto.RegisterType((*ExpirableVersion)(nil), "github.aaakk.us.kg.gardener.gardener.pkg.apis.core.v1beta1.ExpirableVersion") proto.RegisterType((*ExposureClass)(nil), "github.aaakk.us.kg.gardener.gardener.pkg.apis.core.v1beta1.ExposureClass") proto.RegisterType((*ExposureClassList)(nil), "github.aaakk.us.kg.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 563b1517..3ad9f35f 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 @@ -288,7 +288,7 @@ message CARotation { // CRI contains information about the Container Runtimes. message CRI { - // The name of the CRI library. Supported values are `docker` and `containerd`. + // The name of the CRI library. Supported values are `containerd`. optional string name = 1; // ContainerRuntimes is the list of the required container runtimes supported for a worker pool. @@ -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/register.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/register.go index de711097..15ae55fb 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/register.go @@ -79,3 +79,7 @@ func addKnownTypes(scheme *runtime.Scheme) error { metav1.AddToGroupVersion(scheme, SchemeGroupVersion) return nil } + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return RegisterDefaults(scheme) +} 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 ebb9c292..ba4a919b 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 @@ -1513,7 +1531,7 @@ type DataVolume struct { // CRI contains information about the Container Runtimes. type CRI struct { - // The name of the CRI library. Supported values are `docker` and `containerd`. + // The name of the CRI library. Supported values are `containerd`. Name CRIName `json:"name" protobuf:"bytes,1,opt,name=name,casttype=CRIName"` // ContainerRuntimes is the list of the required container runtimes supported for a worker pool. // +optional 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 c0aef342..5af375b1 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 98df27cd..56962c2c 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/v1beta1/zz_generated.defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.defaults.go index 64aeb979..2df61749 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.defaults.go @@ -120,6 +120,7 @@ func SetObjectDefaults_Seed(in *Seed) { SetDefaults_Seed(in) SetDefaults_SeedNetworks(&in.Spec.Networks) if in.Spec.Settings != nil { + SetDefaults_SeedSettings(in.Spec.Settings) if in.Spec.Settings.DependencyWatchdog != nil { SetDefaults_SeedSettingDependencyWatchdog(in.Spec.Settings.DependencyWatchdog) } @@ -146,9 +147,6 @@ func SetObjectDefaults_Shoot(in *Shoot) { if in.Spec.Kubernetes.KubeAPIServer != nil { SetDefaults_KubeAPIServerConfig(in.Spec.Kubernetes.KubeAPIServer) } - if in.Spec.Kubernetes.KubeControllerManager != nil { - SetDefaults_KubeControllerManagerConfig(in.Spec.Kubernetes.KubeControllerManager) - } if in.Spec.Kubernetes.VerticalPodAutoscaler != nil { SetDefaults_VerticalPodAutoscaler(in.Spec.Kubernetes.VerticalPodAutoscaler) } 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 1c213ccc..eaed0aa2 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/helper/helper.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/helper/helper.go index 798a631d..5d3e39ac 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/helper/helper.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/helper/helper.go @@ -57,3 +57,14 @@ func DeterminePrimaryIPFamily(ipFamilies []extensionsv1alpha1.IPFamily) extensio } return ipFamilies[0] } + +// FilePathsFrom returns the paths for all the given files. +func FilePathsFrom(files []extensionsv1alpha1.File) []string { + var out []string + + for _, file := range files { + out = append(out, file.Path) + } + + return out +} 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 32609974..5135ba2f 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/types_operatingsystemconfig.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_operatingsystemconfig.go index 9eb156e3..746d6625 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_operatingsystemconfig.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_operatingsystemconfig.go @@ -268,7 +268,7 @@ const ( // CRIConfig contains configurations of the CRI library. type CRIConfig struct { - // Name is a mandatory string containing the name of the CRI library. Supported values are `docker` and `containerd`. + // Name is a mandatory string containing the name of the CRI library. Supported values are `containerd`. Name CRIName `json:"name"` } 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 b60aa5ea..dba2757b 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 19b94151..4ce759a7 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 fd188046..4be36895 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 7e63aaab..70ce212e 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/seedmanagement/v1alpha1/defaults_managedseed.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/defaults_managedseed.go index 013523f8..1a3bd93b 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/defaults_managedseed.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/defaults_managedseed.go @@ -134,7 +134,7 @@ func setDefaultsGardenletConfiguration(obj *gardenletv1alpha1.GardenletConfigura } // Set seed spec defaults - setDefaultsSeedSpec(&obj.SeedConfig.SeedTemplate.Spec, name, namespace, false) + setDefaultsSeedSpec(&obj.SeedConfig.SeedTemplate.Spec, name, namespace) } func setDefaultsResources(obj *gardenletv1alpha1.ResourcesConfiguration) { @@ -146,13 +146,7 @@ func setDefaultsResources(obj *gardenletv1alpha1.ResourcesConfiguration) { } } -func setDefaultsSeedSpec(spec *gardencorev1beta1.SeedSpec, name, namespace string, withSecretRef bool) { - if spec.SecretRef == nil && withSecretRef { - spec.SecretRef = &corev1.SecretReference{ - Name: fmt.Sprintf("seed-%s", name), - Namespace: namespace, - } - } +func setDefaultsSeedSpec(spec *gardencorev1beta1.SeedSpec, name, namespace string) { if spec.Backup != nil && spec.Backup.SecretRef == (corev1.SecretReference{}) { spec.Backup.SecretRef = corev1.SecretReference{ Name: fmt.Sprintf("backup-%s", name), 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 75dd1a44..8fe047f9 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 9613ec5e..866c96b3 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 ebc64a88..399d8b5a 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/chartrenderer/testdata/alpine/templates/secret.yaml b/vendor/github.com/gardener/gardener/pkg/chartrenderer/testdata/alpine/templates/secret.yaml new file mode 100644 index 00000000..e5f285cb --- /dev/null +++ b/vendor/github.com/gardener/gardener/pkg/chartrenderer/testdata/alpine/templates/secret.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + name: test + namespace: {{ .Release.Namespace }} + labels: + chartName: {{ .Chart.Name }} + chartVersion: {{ .Chart.Version | quote }} +type: Opaque diff --git a/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/containerd/component.go b/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/containerd/component.go index 09d8d19c..e900ca02 100644 --- a/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/containerd/component.go +++ b/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/containerd/component.go @@ -26,7 +26,6 @@ import ( extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" "github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components" "github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/containerd/logrotate" - "github.com/gardener/gardener/pkg/features" "github.com/gardener/gardener/pkg/utils" ) @@ -85,6 +84,17 @@ func (containerd) Config(_ components.Context) ([]extensionsv1alpha1.Unit, []ext logRotateUnits, logRotateFiles := logrotate.Config(pathLogRotateConfig, "/var/log/pods/*/*/*.log", ContainerRuntime) + monitorFile := extensionsv1alpha1.File{ + Path: pathHealthMonitor, + Permissions: pointer.Int32(0755), + Content: extensionsv1alpha1.FileContent{ + Inline: &extensionsv1alpha1.FileContentInline{ + Encoding: "b64", + Data: utils.EncodeBase64(healthMonitorScript.Bytes()), + }, + }, + } + monitorUnit := extensionsv1alpha1.Unit{ Name: UnitNameMonitor, Command: extensionsv1alpha1.UnitCommandPtr(extensionsv1alpha1.CommandStart), @@ -98,21 +108,7 @@ WantedBy=multi-user.target Restart=always EnvironmentFile=/etc/environment ExecStart=` + pathHealthMonitor), - } - - monitorFile := extensionsv1alpha1.File{ - Path: pathHealthMonitor, - Permissions: pointer.Int32(0755), - Content: extensionsv1alpha1.FileContent{ - Inline: &extensionsv1alpha1.FileContentInline{ - Encoding: "b64", - Data: utils.EncodeBase64(healthMonitorScript.Bytes()), - }, - }, - } - - if features.DefaultFeatureGate.Enabled(features.UseGardenerNodeAgent) { - monitorUnit.FilePaths = []string{monitorFile.Path} + FilePaths: []string{monitorFile.Path}, } return append(logRotateUnits, monitorUnit), append(logRotateFiles, monitorFile), nil diff --git a/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/containerd/logrotate/logrotate.go b/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/containerd/logrotate/logrotate.go index 0f8d491c..634eca34 100644 --- a/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/containerd/logrotate/logrotate.go +++ b/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/containerd/logrotate/logrotate.go @@ -18,7 +18,6 @@ import ( "k8s.io/utils/pointer" extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" - "github.com/gardener/gardener/pkg/features" ) // Config returns the content for logrotate units and files. @@ -28,6 +27,27 @@ import ( // Prefix carries the target container runtime (such as containerd, docker). // When containerd is used the log rotation based on size is performed by kubelet. func Config(pathConfig, pathLogFiles, prefix string) ([]extensionsv1alpha1.Unit, []extensionsv1alpha1.File) { + serviceFile := extensionsv1alpha1.File{ + Path: pathConfig, + Permissions: pointer.Int32(0644), + Content: extensionsv1alpha1.FileContent{ + Inline: &extensionsv1alpha1.FileContentInline{ + Data: pathLogFiles + ` { + rotate 14 + copytruncate + missingok + notifempty + compress + daily + dateext + dateformat -%Y%m%d-%s + create 0644 root root +} +`, + }, + }, + } + serviceUnit := extensionsv1alpha1.Unit{ Name: prefix + "-logrotate.service", Enable: pointer.Bool(true), @@ -37,6 +57,7 @@ Description=Rotate and Compress System Logs ExecStart=/usr/sbin/logrotate -s /var/lib/` + prefix + `-logrotate.status ` + pathConfig + ` [Install] WantedBy=multi-user.target`), + FilePaths: []string{serviceFile.Path}, } timerUnit := extensionsv1alpha1.Unit{ @@ -53,30 +74,5 @@ Persistent=true WantedBy=multi-user.target`), } - serviceFile := extensionsv1alpha1.File{ - Path: pathConfig, - Permissions: pointer.Int32(0644), - Content: extensionsv1alpha1.FileContent{ - Inline: &extensionsv1alpha1.FileContentInline{ - Data: pathLogFiles + ` { - rotate 14 - copytruncate - missingok - notifempty - compress - daily - dateext - dateformat -%Y%m%d-%s - create 0644 root root -} -`, - }, - }, - } - - if features.DefaultFeatureGate.Enabled(features.UseGardenerNodeAgent) { - serviceUnit.FilePaths = []string{serviceFile.Path} - } - return []extensionsv1alpha1.Unit{serviceUnit, timerUnit}, []extensionsv1alpha1.File{serviceFile} } diff --git a/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker/component.go b/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker/component.go deleted file mode 100644 index cf6690ee..00000000 --- a/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker/component.go +++ /dev/null @@ -1,114 +0,0 @@ -// 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 -// -// 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 docker - -import ( - "bytes" - _ "embed" - "text/template" - - "github.com/Masterminds/sprig/v3" - "k8s.io/utils/pointer" - - v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" - extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" - "github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components" - "github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker/logrotate" - "github.com/gardener/gardener/pkg/utils" -) - -var ( - tplNameHealthMonitor = "health-monitor" - //go:embed templates/scripts/health-monitor.tpl.sh - tplContentHealthMonitor string - tplHealthMonitor *template.Template -) - -func init() { - var err error - tplHealthMonitor, err = template. - New(tplNameHealthMonitor). - Funcs(sprig.TxtFuncMap()). - Parse(tplContentHealthMonitor) - if err != nil { - panic(err) - } -} - -const ( - // UnitName is the name of the Docker service unit. - UnitName = v1beta1constants.OperatingSystemConfigUnitNameDockerService - // UnitNameMonitor is the name of the Docker monitor service unit. - UnitNameMonitor = "docker-monitor.service" - // PathBinary is the path to the docker binary. - PathBinary = "/usr/bin/docker" - // ContainerRuntime designates the runtime type. - ContainerRuntime = "docker" -) - -type component struct{} - -// New returns a new docker component. -func New() *component { - return &component{} -} - -func (component) Name() string { - return ContainerRuntime -} - -func (component) Config(_ components.Context) ([]extensionsv1alpha1.Unit, []extensionsv1alpha1.File, error) { - const ( - pathHealthMonitor = v1beta1constants.OperatingSystemConfigFilePathBinaries + "/health-monitor-docker" - pathLogRotateConfig = "/etc/systemd/docker.conf" - ) - - var healthMonitorScript bytes.Buffer - if err := tplHealthMonitor.Execute(&healthMonitorScript, nil); err != nil { - return nil, nil, err - } - - logRotateUnits, logRotateFiles := logrotate.Config(pathLogRotateConfig, "/var/lib/docker/containers/*/*.log", ContainerRuntime) - - return append([]extensionsv1alpha1.Unit{ - { - Name: UnitNameMonitor, - Command: extensionsv1alpha1.UnitCommandPtr(extensionsv1alpha1.CommandStart), - Enable: pointer.Bool(true), - Content: pointer.String(`[Unit] -Description=Docker-monitor daemon -After=` + UnitName + ` -[Install] -WantedBy=multi-user.target -[Service] -Restart=always -EnvironmentFile=/etc/environment -ExecStart=` + pathHealthMonitor), - }, - }, logRotateUnits...), - append([]extensionsv1alpha1.File{ - { - Path: pathHealthMonitor, - Permissions: pointer.Int32(0755), - Content: extensionsv1alpha1.FileContent{ - Inline: &extensionsv1alpha1.FileContentInline{ - Encoding: "b64", - Data: utils.EncodeBase64(healthMonitorScript.Bytes()), - }, - }, - }, - }, logRotateFiles...), - nil -} diff --git a/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker/logging.go b/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker/logging.go deleted file mode 100644 index 16716304..00000000 --- a/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker/logging.go +++ /dev/null @@ -1,102 +0,0 @@ -// 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 docker - -import ( - fluentbitv1alpha2 "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2" - fluentbitv1alpha2filter "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/filter" - fluentbitv1alpha2input "github.com/fluent/fluent-operator/v2/apis/fluentbit/v1alpha2/plugins/input" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - - v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" - comp "github.com/gardener/gardener/pkg/component" -) - -var ( - journaldServiceName = "journald-docker" -) - -// CentralLoggingConfiguration returns a fluent-bit parser and filter for the docker logs. -func CentralLoggingConfiguration() (comp.CentralLoggingConfig, error) { - return comp.CentralLoggingConfig{Inputs: generateClusterInputs(), Filters: generateClusterFilters()}, nil -} - -func generateClusterInputs() []*fluentbitv1alpha2.ClusterInput { - return []*fluentbitv1alpha2.ClusterInput{ - { - ObjectMeta: metav1.ObjectMeta{ - Name: journaldServiceName, - Labels: map[string]string{v1beta1constants.LabelKeyCustomLoggingResource: v1beta1constants.LabelValueCustomLoggingResource}, - }, - Spec: fluentbitv1alpha2.InputSpec{ - Systemd: &fluentbitv1alpha2input.Systemd{ - Tag: "journald.docker", - ReadFromTail: "on", - SystemdFilter: []string{"_SYSTEMD_UNIT=docker.service"}, - }, - }, - }, - { - ObjectMeta: metav1.ObjectMeta{ - Name: journaldServiceName + "-monitor", - Labels: map[string]string{v1beta1constants.LabelKeyCustomLoggingResource: v1beta1constants.LabelValueCustomLoggingResource}, - }, - Spec: fluentbitv1alpha2.InputSpec{ - Systemd: &fluentbitv1alpha2input.Systemd{ - Tag: "journald.docker-monitor", - ReadFromTail: "on", - SystemdFilter: []string{"_SYSTEMD_UNIT=docker-monitor.service"}, - }, - }, - }, - } -} - -func generateClusterFilters() []*fluentbitv1alpha2.ClusterFilter { - return []*fluentbitv1alpha2.ClusterFilter{ - { - ObjectMeta: metav1.ObjectMeta{ - Name: journaldServiceName, - Labels: map[string]string{v1beta1constants.LabelKeyCustomLoggingResource: v1beta1constants.LabelValueCustomLoggingResource}, - }, - Spec: fluentbitv1alpha2.FilterSpec{ - Match: "journald.docker", - FilterItems: []fluentbitv1alpha2.FilterItem{ - { - RecordModifier: &fluentbitv1alpha2filter.RecordModifier{ - Records: []string{"hostname ${NODE_NAME}", "unit docker"}, - }, - }, - }, - }, - }, - { - ObjectMeta: metav1.ObjectMeta{ - Name: journaldServiceName + "-monitor", - Labels: map[string]string{v1beta1constants.LabelKeyCustomLoggingResource: v1beta1constants.LabelValueCustomLoggingResource}, - }, - Spec: fluentbitv1alpha2.FilterSpec{ - Match: "journald.docker-monitor", - FilterItems: []fluentbitv1alpha2.FilterItem{ - { - RecordModifier: &fluentbitv1alpha2filter.RecordModifier{ - Records: []string{"hostname ${NODE_NAME}", "unit docker-monitor"}, - }, - }, - }, - }, - }, - } -} diff --git a/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker/logrotate/logrotate.go b/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker/logrotate/logrotate.go deleted file mode 100644 index 6234cda6..00000000 --- a/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker/logrotate/logrotate.go +++ /dev/null @@ -1,91 +0,0 @@ -// 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 -// -// 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 logrotate - -import ( - "k8s.io/utils/pointer" - - extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" -) - -// Config returns the content for logrotate units and files. -// Whenever logrotate is ran, this config will: -// - rotate the log file if its size is > 100Mb OR if one day has elapsed -// - save rotated logs into a gzipped timestamped backup -// - log file timestamp (controlled by 'dateformat') includes seconds too. This -// ensures that logrotate can generate unique logfiles during each rotation -// (otherwise it skips rotation if 'maxsize' is reached multiple times in a -// day). -// - keep only 14 old (rotated) logs, and will discard older logs. -// -// prefix carries the target container runtime such as (containerd, docker) -func Config(pathConfig, pathLogFiles, prefix string) ([]extensionsv1alpha1.Unit, []extensionsv1alpha1.File) { - var ( - extUnit []extensionsv1alpha1.Unit - extFile []extensionsv1alpha1.File - ) - - extUnit = []extensionsv1alpha1.Unit{ - { - Name: prefix + "-logrotate.service", - Enable: pointer.Bool(true), - Content: pointer.String(`[Unit] -Description=Rotate and Compress System Logs -[Service] -ExecStart=/usr/sbin/logrotate -s /var/lib/` + prefix + `-logrotate.status ` + pathConfig + ` -[Install] -WantedBy=multi-user.target`), - }, - { - Name: prefix + "-logrotate.timer", - Command: extensionsv1alpha1.UnitCommandPtr(extensionsv1alpha1.CommandStart), - Enable: pointer.Bool(true), - Content: pointer.String(`[Unit] -Description=Log Rotation at each 10 minutes -[Timer] -OnCalendar=*:0/10 -AccuracySec=1min -Persistent=true -[Install] -WantedBy=multi-user.target`), - }, - } - - extFile = []extensionsv1alpha1.File{ - { - Path: pathConfig, - Permissions: pointer.Int32(0644), - Content: extensionsv1alpha1.FileContent{ - Inline: &extensionsv1alpha1.FileContentInline{ - Data: pathLogFiles + ` { - rotate 14 - copytruncate - missingok - notifempty - compress - maxsize 100M - daily - dateext - dateformat -%Y%m%d-%s - create 0644 root root -} -`, - }, - }, - }, - } - - return extUnit, extFile -} diff --git a/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker/templates/scripts/health-monitor.tpl.sh b/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker/templates/scripts/health-monitor.tpl.sh deleted file mode 100644 index 6a40cd84..00000000 --- a/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker/templates/scripts/health-monitor.tpl.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -set -o nounset -set -o pipefail - -function docker_monitoring { - echo "Docker monitor has started !" - while [ 1 ]; do - if ! timeout 60 docker ps > /dev/null; then - echo "Docker daemon failed!" - pkill docker - sleep 30 - else - sleep $SLEEP_SECONDS - fi - done -} - -SLEEP_SECONDS=10 -echo "Start health monitoring for docker" -docker_monitoring diff --git a/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/kubelet/component.go b/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/kubelet/component.go index 11aabcd6..6af34fe1 100644 --- a/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/kubelet/component.go +++ b/vendor/github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/kubelet/component.go @@ -27,9 +27,9 @@ import ( "github.com/gardener/gardener/imagevector" v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" + extensionsv1alpha1helper "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/helper" "github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components" "github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/containerd" - "github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker" oscutils "github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/utils" "github.com/gardener/gardener/pkg/features" "github.com/gardener/gardener/pkg/utils" @@ -119,40 +119,6 @@ ExecStartPre=` + PathScriptCopyKubernetesBinary + ` kubelet` ExecStartPre=` + PathScriptCopyKubernetesBinary + ` kubectl` } - kubeletUnit := extensionsv1alpha1.Unit{ - Name: UnitName, - Command: extensionsv1alpha1.UnitCommandPtr(extensionsv1alpha1.CommandStart), - Enable: pointer.Bool(true), - Content: pointer.String(`[Unit] -Description=kubelet daemon -Documentation=https://kubernetes.io/docs/admin/kubelet -` + unitConfigAfterCRI(ctx.CRIName) + ` -[Install] -WantedBy=multi-user.target -[Service] -Restart=always -RestartSec=5 -EnvironmentFile=/etc/environment -EnvironmentFile=-/var/lib/kubelet/extra_args` + kubeletStartPre + ` -ExecStart=` + v1beta1constants.OperatingSystemConfigFilePathBinaries + `/kubelet \ - ` + utils.Indent(strings.Join(cliFlags, " \\\n"), 4) + ` $KUBELET_EXTRA_ARGS`), - } - - healthMonitorUnit := extensionsv1alpha1.Unit{ - Name: "kubelet-monitor.service", - Command: extensionsv1alpha1.UnitCommandPtr(extensionsv1alpha1.CommandStart), - Enable: pointer.Bool(true), - Content: pointer.String(`[Unit] -Description=Kubelet-monitor daemon -After=` + UnitName + ` -[Install] -WantedBy=multi-user.target -[Service] -Restart=always -EnvironmentFile=/etc/environment` + healthMonitorStartPre + ` -ExecStart=` + pathHealthMonitor), - } - kubeletFiles := []extensionsv1alpha1.File{ { Path: PathKubeletCACert, @@ -186,8 +152,44 @@ ExecStart=` + pathHealthMonitor), }, } + kubeletUnit := extensionsv1alpha1.Unit{ + Name: UnitName, + Command: extensionsv1alpha1.UnitCommandPtr(extensionsv1alpha1.CommandStart), + Enable: pointer.Bool(true), + Content: pointer.String(`[Unit] +Description=kubelet daemon +Documentation=https://kubernetes.io/docs/admin/kubelet +After=` + containerd.UnitName + ` +[Install] +WantedBy=multi-user.target +[Service] +Restart=always +RestartSec=5 +EnvironmentFile=/etc/environment +EnvironmentFile=-/var/lib/kubelet/extra_args` + kubeletStartPre + ` +ExecStart=` + v1beta1constants.OperatingSystemConfigFilePathBinaries + `/kubelet \ + ` + utils.Indent(strings.Join(cliFlags, " \\\n"), 4) + ` $KUBELET_EXTRA_ARGS`), + FilePaths: extensionsv1alpha1helper.FilePathsFrom(kubeletFiles), + } + + healthMonitorUnit := extensionsv1alpha1.Unit{ + Name: "kubelet-monitor.service", + Command: extensionsv1alpha1.UnitCommandPtr(extensionsv1alpha1.CommandStart), + Enable: pointer.Bool(true), + Content: pointer.String(`[Unit] +Description=Kubelet-monitor daemon +After=` + UnitName + ` +[Install] +WantedBy=multi-user.target +[Service] +Restart=always +EnvironmentFile=/etc/environment` + healthMonitorStartPre + ` +ExecStart=` + pathHealthMonitor), + FilePaths: extensionsv1alpha1helper.FilePathsFrom(healthMonitorFiles), + } + if features.DefaultFeatureGate.Enabled(features.UseGardenerNodeAgent) { - kubeletFiles = append(kubeletFiles, extensionsv1alpha1.File{ + kubeletBinaryFile := extensionsv1alpha1.File{ Path: v1beta1constants.OperatingSystemConfigFilePathBinaries + "/kubelet", Permissions: pointer.Int32(0755), Content: extensionsv1alpha1.FileContent{ @@ -196,8 +198,11 @@ ExecStart=` + pathHealthMonitor), FilePathInImage: "/kubelet", }, }, - }) - healthMonitorFiles = append(healthMonitorFiles, extensionsv1alpha1.File{ + } + kubeletFiles = append(kubeletFiles, kubeletBinaryFile) + kubeletUnit.FilePaths = append(kubeletUnit.FilePaths, kubeletBinaryFile.Path) + + kubectlBinaryFile := extensionsv1alpha1.File{ Path: v1beta1constants.OperatingSystemConfigFilePathBinaries + "/kubectl", Permissions: pointer.Int32(0755), Content: extensionsv1alpha1.FileContent{ @@ -206,14 +211,9 @@ ExecStart=` + pathHealthMonitor), FilePathInImage: "/kubectl", }, }, - }) - - for _, file := range kubeletFiles { - kubeletUnit.FilePaths = append(kubeletUnit.FilePaths, file.Path) - } - for _, file := range healthMonitorFiles { - healthMonitorUnit.FilePaths = append(healthMonitorUnit.FilePaths, file.Path) } + healthMonitorFiles = append(healthMonitorFiles, kubectlBinaryFile) + healthMonitorUnit.FilePaths = append(healthMonitorUnit.FilePaths, kubectlBinaryFile.Path) } return []extensionsv1alpha1.Unit{kubeletUnit, healthMonitorUnit}, append(kubeletFiles, healthMonitorFiles...), nil @@ -228,11 +228,3 @@ func getFileContentKubeletConfig(kubernetesVersion *semver.Version, clusterDNSAd return kcCodec.Encode(kubeletConfig, configFCI.Encoding) } - -func unitConfigAfterCRI(criName extensionsv1alpha1.CRIName) string { - if criName == extensionsv1alpha1.CRINameContainerD { - return `After=` + containerd.UnitName - } - return `After=` + docker.UnitName + ` -Wants=docker.socket rpc-statd.service` -} diff --git a/vendor/github.com/gardener/gardener/pkg/component/machinecontrollermanager/bootstrap.go b/vendor/github.com/gardener/gardener/pkg/component/machinecontrollermanager/bootstrap.go index 9def5605..dfff1167 100644 --- a/vendor/github.com/gardener/gardener/pkg/component/machinecontrollermanager/bootstrap.go +++ b/vendor/github.com/gardener/gardener/pkg/component/machinecontrollermanager/bootstrap.go @@ -33,6 +33,8 @@ import ( const ( managedResourceControlName = "machine-controller-manager" clusterRoleName = "system:machine-controller-manager-runtime" + // TODO(himanshu-kun): remove after g/g v1.88 has been released + unsupportedClusterRoleName = "system:machine-controller-manager-seed" ) // NewBootstrapper creates a new instance of DeployWaiter for the machine-controller-manager bootstrapper. diff --git a/vendor/github.com/gardener/gardener/pkg/component/machinecontrollermanager/crd.go b/vendor/github.com/gardener/gardener/pkg/component/machinecontrollermanager/crd.go index b04da536..f0e1b16a 100644 --- a/vendor/github.com/gardener/gardener/pkg/component/machinecontrollermanager/crd.go +++ b/vendor/github.com/gardener/gardener/pkg/component/machinecontrollermanager/crd.go @@ -19,14 +19,11 @@ import ( _ "embed" "fmt" - apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/client" "github.com/gardener/gardener/pkg/client/kubernetes" "github.com/gardener/gardener/pkg/component" gardenerutils "github.com/gardener/gardener/pkg/utils/gardener" - kubernetesutils "github.com/gardener/gardener/pkg/utils/kubernetes" ) var ( @@ -72,7 +69,7 @@ func (c *crd) Deploy(ctx context.Context) error { } } - return c.deleteLegacyCRDs(ctx) + return nil } func (c *crd) Destroy(ctx context.Context) error { @@ -93,27 +90,5 @@ func (c *crd) Destroy(ctx context.Context) error { } } - return c.deleteLegacyCRDs(ctx) -} - -// TODO(rfranzke): Remove this code after Gardener v1.83 has been released. -func (c *crd) deleteLegacyCRDs(ctx context.Context) error { - for _, name := range []string{ - "alicloudmachineclasses.machine.sapcloud.io", - "awsmachineclasses.machine.sapcloud.io", - "azuremachineclasses.machine.sapcloud.io", - "gcpmachineclasses.machine.sapcloud.io", - "openstackmachineclasses.machine.sapcloud.io", - "packetmachineclasses.machine.sapcloud.io", - } { - obj := &apiextensionsv1.CustomResourceDefinition{ObjectMeta: metav1.ObjectMeta{Name: name}} - if err := gardenerutils.ConfirmDeletion(ctx, c.client, obj); client.IgnoreNotFound(err) != nil { - return err - } - if err := kubernetesutils.DeleteObject(ctx, c.client, obj); err != nil { - return err - } - } - return nil } diff --git a/vendor/github.com/gardener/gardener/pkg/component/machinecontrollermanager/machine_controller_manager.go b/vendor/github.com/gardener/gardener/pkg/component/machinecontrollermanager/machine_controller_manager.go index aae3ebb7..f9c8371c 100644 --- a/vendor/github.com/gardener/gardener/pkg/component/machinecontrollermanager/machine_controller_manager.go +++ b/vendor/github.com/gardener/gardener/pkg/component/machinecontrollermanager/machine_controller_manager.go @@ -129,6 +129,14 @@ func (m *machineControllerManager) Deploy(ctx context.Context) error { return err } + if exists, err := m.checkUnsupportedClusterRoleBindingSeed(ctx); err != nil { + return err + } else if exists { + if err = kubernetesutils.DeleteObject(ctx, m.client, m.emptyClusterRoleBindingSeed()); err != nil { + return err + } + } + if _, err := controllerutils.GetAndCreateOrStrategicMergePatch(ctx, m.client, clusterRoleBinding, func() error { clusterRoleBinding.OwnerReferences = []metav1.OwnerReference{{ APIVersion: "v1", @@ -452,6 +460,10 @@ func (m *machineControllerManager) emptyServiceAccount() *corev1.ServiceAccount return &corev1.ServiceAccount{ObjectMeta: metav1.ObjectMeta{Name: "machine-controller-manager", Namespace: m.namespace}} } +func (m *machineControllerManager) emptyClusterRoleBindingSeed() *rbacv1.ClusterRoleBinding { + return &rbacv1.ClusterRoleBinding{ObjectMeta: metav1.ObjectMeta{Name: "machine-controller-manager-" + m.namespace}} +} + func (m *machineControllerManager) emptyClusterRoleBindingRuntime() *rbacv1.ClusterRoleBinding { return &rbacv1.ClusterRoleBinding{ObjectMeta: metav1.ObjectMeta{Name: "machine-controller-manager-" + m.namespace}} } @@ -491,3 +503,16 @@ func getLabels() map[string]string { v1beta1constants.LabelRole: "machine-controller-manager", } } + +// TODO(himanshu-kun): remove after g/g v1.88 has been released +func (m *machineControllerManager) checkUnsupportedClusterRoleBindingSeed(ctx context.Context) (bool, error) { + crb := &rbacv1.ClusterRoleBinding{} + if err := m.client.Get(ctx, client.ObjectKeyFromObject(m.emptyClusterRoleBindingSeed()), crb); err != nil { + if apierrors.IsNotFound(err) { + return false, nil + } + return false, err + } + + return crb.RoleRef.Name == unsupportedClusterRoleName, nil +} diff --git a/vendor/github.com/gardener/gardener/pkg/features/features.go b/vendor/github.com/gardener/gardener/pkg/features/features.go index 3a069e38..9b1d94ed 100644 --- a/vendor/github.com/gardener/gardener/pkg/features/features.go +++ b/vendor/github.com/gardener/gardener/pkg/features/features.go @@ -62,6 +62,7 @@ const ( // owner: @acumino @ary1992 @shafeeqes // alpha: v1.70.0 // beta: v1.79.0 + // GA: v1.86.0 WorkerlessShoots featuregate.Feature = "WorkerlessShoots" // ShootForceDeletion allows force deletion of Shoots. @@ -94,6 +95,7 @@ const ( // // owner: @ialidzhikov, @dimitar-kostadinov // alpha: v1.77.0 + // beta: v1.86.0 ContainerdRegistryHostsDir featuregate.Feature = "ContainerdRegistryHostsDir" // APIServerFastRollout enables fast rollouts for Shoot kube-apiservers on the given Seed. @@ -140,10 +142,10 @@ var AllFeatureGates = map[featuregate.Feature]featuregate.FeatureSpec{ CoreDNSQueryRewriting: {Default: false, PreRelease: featuregate.Alpha}, IPv6SingleStack: {Default: false, PreRelease: featuregate.Alpha}, MutableShootSpecNetworkingNodes: {Default: false, PreRelease: featuregate.Alpha}, - WorkerlessShoots: {Default: true, PreRelease: featuregate.Beta}, + WorkerlessShoots: {Default: true, PreRelease: featuregate.Beta, LockToDefault: true}, ShootForceDeletion: {Default: false, PreRelease: featuregate.Alpha}, MachineControllerManagerDeployment: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - ContainerdRegistryHostsDir: {Default: false, PreRelease: featuregate.Alpha}, + ContainerdRegistryHostsDir: {Default: true, PreRelease: featuregate.Beta}, APIServerFastRollout: {Default: true, PreRelease: featuregate.Beta}, UseGardenerNodeAgent: {Default: false, PreRelease: featuregate.Alpha}, } 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 1db94533..84c9fdff 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 d6ddc34d..f8f1dba9 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 bd7272a9..615e1e9a 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot.go @@ -15,8 +15,10 @@ package gardener import ( + "cmp" "context" "fmt" + "slices" "strconv" "strings" "time" @@ -24,7 +26,8 @@ import ( corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" - utilsets "k8s.io/apimachinery/pkg/util/sets" + "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" "k8s.io/component-base/version" @@ -478,7 +481,7 @@ func GetShootSeedNames(obj client.Object) (*string, *string) { // on the given workers. Tolerations are only considered for workers which have `SystemComponents.Allow: true`. func ExtractSystemComponentsTolerations(workers []gardencorev1beta1.Worker) []corev1.Toleration { var ( - tolerations = utilsets.New[corev1.Toleration]() + tolerations = sets.New[corev1.Toleration]() // We need to use semantically equal tolerations, i.e. equality of underlying values of pointers, // before they are added to the tolerations set. @@ -494,7 +497,13 @@ func ExtractSystemComponentsTolerations(workers []gardencorev1beta1.Worker) []co } } - return tolerations.UnsortedList() + sortedTolerations := tolerations.UnsortedList() + + // sort system component tolerations for a stable output + slices.SortFunc(sortedTolerations, func(a, b corev1.Toleration) int { + return cmp.Compare(a.Key, b.Key) + }) + return sortedTolerations } // IncompleteDNSConfigError is a custom error type. @@ -587,8 +596,8 @@ func ConstructExternalDomain(ctx context.Context, c client.Reader, shoot *garden // ComputeRequiredExtensionsForShoot computes the extension kind/type combinations that are required for the // shoot reconciliation flow. -func ComputeRequiredExtensionsForShoot(shoot *gardencorev1beta1.Shoot, seed *gardencorev1beta1.Seed, controllerRegistrationList *gardencorev1beta1.ControllerRegistrationList, internalDomain, externalDomain *Domain) utilsets.Set[string] { - requiredExtensions := utilsets.New[string]() +func ComputeRequiredExtensionsForShoot(shoot *gardencorev1beta1.Shoot, seed *gardencorev1beta1.Seed, controllerRegistrationList *gardencorev1beta1.ControllerRegistrationList, internalDomain, externalDomain *Domain) sets.Set[string] { + requiredExtensions := sets.New[string]() if seed.Spec.Backup != nil { requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.BackupBucketResource, seed.Spec.Backup.Provider)) @@ -608,7 +617,7 @@ func ComputeRequiredExtensionsForShoot(shoot *gardencorev1beta1.Shoot, seed *gar } } - disabledExtensions := utilsets.New[string]() + disabledExtensions := sets.New[string]() for _, extension := range shoot.Spec.Extensions { id := ExtensionsID(extensionsv1alpha1.ExtensionResource, extension.Type) @@ -696,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 944848e2..62211fa1 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/pkg/utils/test/afero.go b/vendor/github.com/gardener/gardener/pkg/utils/test/afero.go new file mode 100644 index 00000000..9b0b82fa --- /dev/null +++ b/vendor/github.com/gardener/gardener/pkg/utils/test/afero.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 test + +import ( + "io/fs" + + . "github.com/onsi/gomega" + "github.com/spf13/afero" +) + +// AssertFileOnDisk asserts that a given file exists and has the expected content and mode. +func AssertFileOnDisk(fakeFS afero.Afero, path, expectedContent string, fileMode uint32) { + description := "file path " + path + + content, err := fakeFS.ReadFile(path) + ExpectWithOffset(1, err).NotTo(HaveOccurred(), description) + ExpectWithOffset(1, string(content)).To(Equal(expectedContent), description) + + fileInfo, err := fakeFS.Stat(path) + ExpectWithOffset(1, err).NotTo(HaveOccurred(), description) + ExpectWithOffset(1, fileInfo.Mode()).To(Equal(fs.FileMode(fileMode)), description) +} + +// AssertNoFileOnDisk asserts that a given file does not exist. +func AssertNoFileOnDisk(fakeFS afero.Afero, path string) { + _, err := fakeFS.ReadFile(path) + ExpectWithOffset(1, err).To(MatchError(afero.ErrFileNotFound), "file path "+path) +} + +// AssertDirectoryOnDisk asserts that a given directory exists. +func AssertDirectoryOnDisk(fakeFS afero.Afero, path string) { + exists, err := fakeFS.DirExists(path) + ExpectWithOffset(1, err).NotTo(HaveOccurred(), "directory path "+path) + ExpectWithOffset(1, exists).To(BeTrue(), "directory path "+path) +} + +// AssertNoDirectoryOnDisk asserts that a given directory does not exist. +func AssertNoDirectoryOnDisk(fakeFS afero.Afero, path string) { + exists, err := fakeFS.DirExists(path) + ExpectWithOffset(1, err).NotTo(HaveOccurred(), "directory path "+path) + ExpectWithOffset(1, exists).To(BeFalse(), "directory path "+path) +} diff --git a/vendor/github.com/gardener/gardener/pkg/utils/test/manager.go b/vendor/github.com/gardener/gardener/pkg/utils/test/manager.go index 6aa73ae9..85f57a08 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/test/manager.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/test/manager.go @@ -15,6 +15,7 @@ package test import ( + "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/tools/record" "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/client" @@ -29,24 +30,30 @@ type FakeManager struct { Cache cache.Cache EventRecorder record.EventRecorder APIReader client.Reader + Scheme *runtime.Scheme } -// GetClient returns the given client. +// GetClient returns the client of the FakeManager. func (f FakeManager) GetClient() client.Client { return f.Client } -// GetCache returns the given cache. +// GetCache returns the cache of the FakeManager. func (f FakeManager) GetCache() cache.Cache { return f.Cache } -// GetEventRecorderFor returns the given eventRecorder. +// GetEventRecorderFor returns the eventRecorder of the FakeManager. func (f FakeManager) GetEventRecorderFor(_ string) record.EventRecorder { return f.EventRecorder } -// GetAPIReader returns the given apiReader. +// GetAPIReader returns the apiReader of the FakeManager. func (f FakeManager) GetAPIReader() client.Reader { return f.APIReader } + +// GetScheme returns the Scheme of the FakeManager. +func (f FakeManager) GetScheme() *runtime.Scheme { + return f.Scheme +} diff --git a/vendor/github.com/gardener/gardener/test/framework/gardener_utils.go b/vendor/github.com/gardener/gardener/test/framework/gardener_utils.go index d17a3185..8487ba04 100644 --- a/vendor/github.com/gardener/gardener/test/framework/gardener_utils.go +++ b/vendor/github.com/gardener/gardener/test/framework/gardener_utils.go @@ -27,7 +27,6 @@ import ( gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" - v1beta1helper "github.com/gardener/gardener/pkg/apis/core/v1beta1/helper" seedmanagementv1alpha1 "github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1" "github.com/gardener/gardener/pkg/client/kubernetes" gardenerutils "github.com/gardener/gardener/pkg/utils/gardener" @@ -59,23 +58,31 @@ func (f *GardenerFramework) GetSeed(ctx context.Context, seedName string) (*gard managedSeed := &seedmanagementv1alpha1.ManagedSeed{} if err := f.GardenClient.Client().Get(ctx, kubernetesutils.Key(v1beta1constants.GardenNamespace, seed.Name), managedSeed); err != nil { if apierrors.IsNotFound(err) { - f.Logger.Info("Seed is not a ManagedSeed, checking seed.spec.secretRef") + f.Logger.Info("Seed is not a ManagedSeed, checking seed secret") + + // For tests, we expect the seed kubeconfig secret to be present in the garden namespace + seedSecret := &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: "seed-" + seedName, + Namespace: "garden", + }, + } - seedSecretRef := seed.Spec.SecretRef - if seedSecretRef == nil { - f.Logger.Info("Seed does not have secretRef set, skip constructing seed client") - return seed, nil, nil + if err := f.GardenClient.Client().Get(ctx, client.ObjectKeyFromObject(seedSecret), seedSecret); err != nil { + return seed, nil, fmt.Errorf("seed is not a ManagedSeed also no seed kubeconfig secret present in the garden namespace, %s: %w", client.ObjectKeyFromObject(seed), err) } - seedClient, err := kubernetes.NewClientFromSecret(ctx, f.GardenClient.Client(), seedSecretRef.Namespace, seedSecretRef.Name, + seedClient, err := kubernetes.NewClientFromSecret(ctx, f.GardenClient.Client(), seedSecret.Namespace, seedSecret.Name, kubernetes.WithClientOptions(client.Options{Scheme: kubernetes.SeedScheme}), kubernetes.WithDisabledCachedClient(), ) if err != nil { return nil, nil, fmt.Errorf("could not construct Seed client: %w", err) } + return seed, seedClient, nil } + return seed, nil, fmt.Errorf("failed to get ManagedSeed for Seed, %s: %w", client.ObjectKeyFromObject(seed), err) } @@ -339,11 +346,9 @@ func (f *GardenerFramework) HibernateShoot(ctx context.Context, shoot *gardencor return err } - if !v1beta1helper.IsWorkerless(shoot) { - // Verify no running pods after hibernation - if err := f.VerifyNoRunningPods(ctx, shoot); err != nil { - return fmt.Errorf("failed to verify no running pods after hibernation: %v", err) - } + // Verify no running pods after hibernation + if err := f.VerifyNoRunningPods(ctx, shoot); err != nil { + return fmt.Errorf("failed to verify no running pods after hibernation: %v", err) } log.Info("Shoot was hibernated successfully") diff --git a/vendor/github.com/gardener/gardener/test/framework/shoot_utils.go b/vendor/github.com/gardener/gardener/test/framework/shoot_utils.go index 72c83e7f..a9c44118 100644 --- a/vendor/github.com/gardener/gardener/test/framework/shoot_utils.go +++ b/vendor/github.com/gardener/gardener/test/framework/shoot_utils.go @@ -21,6 +21,7 @@ import ( "io" "strings" + "github.com/go-logr/logr" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" @@ -37,6 +38,8 @@ import ( versionutils "github.com/gardener/gardener/pkg/utils/version" ) +var authEnabledMap = map[string]bool{} + // ShootSeedNamespace gets the shoot namespace in the seed func (f *ShootFramework) ShootSeedNamespace() string { return ComputeTechnicalID(f.Project.Name, f.Shoot) @@ -48,24 +51,34 @@ func (f *ShootFramework) ShootKubeconfigSecretName() string { } // GetValiLogs gets logs from the last 1 hour for , from the vali instance in -func (f *ShootFramework) GetValiLogs(ctx context.Context, valiLabels map[string]string, tenant, valiNamespace, key, value string, client kubernetes.Interface) (*SearchResponse, error) { +func (f *ShootFramework) GetValiLogs(ctx context.Context, valiLabels map[string]string, valiNamespace, key, value string, client kubernetes.Interface) (*SearchResponse, error) { valiLabelsSelector := labels.SelectorFromSet(labels.Set(valiLabels)) - if tenant == "" { - tenant = "fake" - } - query := fmt.Sprintf("query=count_over_time({%s=~\"%s\"}[1h])", key, value) - command := fmt.Sprintf("wget 'http://localhost:%d/vali/api/v1/query' -O- '--header=X-Scope-OrgID: %s' --post-data='%s'", valiPort, tenant, query) + log := f.Logger.WithValues("namespace", valiNamespace, "labels", valiLabels, "q", query) + + command := fmt.Sprintf("wget 'http://localhost:%d/vali/api/v1/query' -O- --post-data='%s'", valiPort, query) + + // TODO(nickytd): Remove this code after v1.88 has been released. + enabled, err := isValiAuthEnabled(ctx, log, valiLabelsSelector, valiNamespace, client) + if err != nil { + log.Error(err, "Error fetching logs") + return nil, err + } + + if enabled { + command = command + fmt.Sprintf(" '--header=X-Scope-OrgID: %s'", "operator") + } var reader io.Reader - err := retry.Until(ctx, defaultPollInterval, func(ctx context.Context) (bool, error) { + log.Info("Fetching logs") + err = retry.Until(ctx, defaultPollInterval, func(ctx context.Context) (bool, error) { var err error reader, err = PodExecByLabel(ctx, valiLabelsSelector, valiLogging, command, valiNamespace, client) if err != nil { - f.Logger.Error(err, "Error exec'ing into pod") + log.Error(err, "Error fetching logs") return retry.MinorError(err) } return retry.Ok() @@ -83,6 +96,32 @@ func (f *ShootFramework) GetValiLogs(ctx context.Context, valiLabels map[string] return search, nil } +func isValiAuthEnabled(ctx context.Context, log logr.Logger, selector labels.Selector, namespace string, c kubernetes.Interface) (bool, error) { + //Check if the auth is enabled in the configuration of the target + enabled, ok := authEnabledMap[selector.String()] + if ok { + return enabled, nil + } + + commandAuthEnabled := fmt.Sprintf("wget 'http://localhost:%d/config' -O-", valiPort) + r, err := PodExecByLabel(ctx, selector, valiLogging, commandAuthEnabled, namespace, c) + if err != nil { + return false, err + } + + configBytes, err := io.ReadAll(r) + if err != nil { + return false, err + } + if strings.Contains(string(configBytes), "auth_enabled: true") { + log.Info("Parsing configuration", "auth_enabled", true) + authEnabledMap[selector.String()] = true + return true, nil + } + + return false, nil +} + // DumpState dumps the state of a shoot // The state includes all k8s components running in the shoot itself as well as the controlplane func (f *ShootFramework) DumpState(ctx context.Context) { diff --git a/vendor/github.com/gardener/gardener/test/framework/shootcreationframework.go b/vendor/github.com/gardener/gardener/test/framework/shootcreationframework.go index 4cfade02..4559f667 100644 --- a/vendor/github.com/gardener/gardener/test/framework/shootcreationframework.go +++ b/vendor/github.com/gardener/gardener/test/framework/shootcreationframework.go @@ -434,16 +434,6 @@ func (f *ShootCreationFramework) CreateShootAndWaitForCreation(ctx context.Conte } } - if f.Config.seedKubeconfigPath == "" { - f.Logger.Info("Seed kubeconfig path is not specified, skipping downloading the static token kubeconfig for the Seed") - } else if seedSecretRef := shootFramework.Seed.Spec.SecretRef; seedSecretRef == nil { - f.Logger.Info("Seed does not have secretRef set, skipping constructing seed client") - } else { - if err := DownloadKubeconfig(ctx, shootFramework.GardenClient, shootFramework.Seed.Spec.SecretRef.Namespace, shootFramework.Seed.Spec.SecretRef.Name, f.Config.seedKubeconfigPath); err != nil { - return fmt.Errorf("failed downloading seed kubeconfig: %w", err) - } - } - log.Info("Finished creating shoot") return nil } diff --git a/vendor/github.com/gardener/gardener/test/framework/shootmigrationtest.go b/vendor/github.com/gardener/gardener/test/framework/shootmigrationtest.go index 92b67ac8..3988a5b4 100644 --- a/vendor/github.com/gardener/gardener/test/framework/shootmigrationtest.go +++ b/vendor/github.com/gardener/gardener/test/framework/shootmigrationtest.go @@ -16,6 +16,7 @@ package framework import ( "context" + "errors" "fmt" "os" "reflect" @@ -461,11 +462,11 @@ func (t ShootMigrationTest) CheckSecretAndServiceAccount(ctx context.Context) er // CleanUpSecretAndServiceAccount cleans up the test secret and service account func (t ShootMigrationTest) CleanUpSecretAndServiceAccount(ctx context.Context) error { testSecret, testServiceAccount := constructTestSecretAndServiceAccount() - if err := t.ShootClient.Client().Delete(ctx, testSecret); err != nil { - return err - } - return t.ShootClient.Client().Delete(ctx, testServiceAccount) + return errors.Join( + t.ShootClient.Client().Delete(ctx, testSecret), + t.ShootClient.Client().Delete(ctx, testServiceAccount), + ) } func constructTestSecretAndServiceAccount() (*corev1.Secret, *corev1.ServiceAccount) { 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 d40d2499..f8a18a8e 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/istio.io/api/analysis/v1alpha1/message.pb.go b/vendor/istio.io/api/analysis/v1alpha1/message.pb.go index 72ec6d49..29675c0c 100644 --- a/vendor/istio.io/api/analysis/v1alpha1/message.pb.go +++ b/vendor/istio.io/api/analysis/v1alpha1/message.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: analysis/v1alpha1/message.proto diff --git a/vendor/istio.io/api/meta/v1alpha1/status.pb.go b/vendor/istio.io/api/meta/v1alpha1/status.pb.go index 47ed2b0f..801c0439 100644 --- a/vendor/istio.io/api/meta/v1alpha1/status.pb.go +++ b/vendor/istio.io/api/meta/v1alpha1/status.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: meta/v1alpha1/status.proto diff --git a/vendor/istio.io/api/networking/v1alpha3/destination_rule.gen.json b/vendor/istio.io/api/networking/v1alpha3/destination_rule.gen.json index 6f8245ea..1ece1c85 100644 --- a/vendor/istio.io/api/networking/v1alpha3/destination_rule.gen.json +++ b/vendor/istio.io/api/networking/v1alpha3/destination_rule.gen.json @@ -26,7 +26,7 @@ "type": "string" }, "credentialName": { - "description": "The name of the secret that holds the TLS certs for the client including the CA certificates. Secret must exist in the same namespace with the proxy using the certificates. The secret (of type `generic`)should contain the following keys and values: `key: \u003cprivateKey\u003e`, `cert: \u003cclientCert\u003e`, `cacert: \u003cCACertificate\u003e`. Here CACertificate is used to verify the server certificate. Secret of type tls for client certificates along with ca.crt key for CA certificates is also supported. Only one of client certificates and CA certificate or credentialName can be specified.", + "description": "The name of the secret that holds the TLS certs for the client including the CA certificates. This secret must exist in the namespace of the proxy using the certificates. An Opaque secret should contain the following keys and values: `key: \u003cprivateKey\u003e`, `cert: \u003cclientCert\u003e`, `cacert: \u003cCACertificate\u003e`, `crl: \u003ccertificateRevocationList\u003e` Here CACertificate is used to verify the server certificate. For mutual TLS, `cacert: \u003cCACertificate\u003e` can be provided in the same secret or a separate secret named `\u003csecret\u003e-cacert`. A TLS secret for client certificates with an additional `ca.crt` key for CA certificates and `ca.crl` key for certificate revocation list(CRL) is also supported. Only one of client certificates and CA certificate or credentialName can be specified.", "type": "string" }, "subjectAltNames": { @@ -41,7 +41,7 @@ "type": "string" }, "insecureSkipVerify": { - "description": "InsecureSkipVerify specifies whether the proxy should skip verifying the CA signature and SAN for the server certificate corresponding to the host. This flag should only be set if global CA signature verifcation is enabled, `VerifyCertAtClient` environmental variable is set to `true`, but no verification is desired for a specific host. If enabled with or without `VerifyCertAtClient` enabled, verification of the CA signature and SAN will be skipped.", + "description": "InsecureSkipVerify specifies whether the proxy should skip verifying the CA signature and SAN for the server certificate corresponding to the host. This flag should only be set if global CA signature verification is enabled, `VerifyCertAtClient` environmental variable is set to `true`, but no verification is desired for a specific host. If enabled with or without `VerifyCertAtClient` enabled, verification of the CA signature and SAN will be skipped.", "type": "boolean", "nullable": true } @@ -74,12 +74,12 @@ "type": "object", "properties": { "http1MaxPendingRequests": { - "description": "Maximum number of requests that will be queued while waiting for a ready connection pool connection. Default 1024. Refer to https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/circuit_breaking under which conditions a new connection is created for HTTP2. Please note that this is applicable to both HTTP/1.1 and HTTP2.", + "description": "Maximum number of requests that will be queued while waiting for a ready connection pool connection. Default 2^32-1. Refer to https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/circuit_breaking under which conditions a new connection is created for HTTP2. Please note that this is applicable to both HTTP/1.1 and HTTP2.", "type": "integer", "format": "int32" }, "http2MaxRequests": { - "description": "Maximum number of active requests to a destination. Default 1024. Please note that this is applicable to both HTTP/1.1 and HTTP2.", + "description": "Maximum number of active requests to a destination. Default 2^32-1. Please note that this is applicable to both HTTP/1.1 and HTTP2.", "type": "integer", "format": "int32" }, @@ -472,7 +472,7 @@ } }, "failoverPriority": { - "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing. This is to support traffic failover across different groups of endpoints. Suppose there are total N labels specified: 1. Endpoints matching all N labels with the client proxy have priority P(0) i.e. the highest priority. 2. Endpoints matching the first N-1 labels with the client proxy have priority P(1) i.e. second highest priority. 3. By extension of this logic, endpoints matching only the first label with the client proxy has priority P(N-1) i.e. second lowest priority. 4. All the other endpoints have priority P(N) i.e. lowest priority.", + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing. This is to support traffic failover across different groups of endpoints. Two kinds of labels can be specified: - Specify only label keys `[key1, key2, key3]`, istio would compare the label values of client with endpoints. Suppose there are total N label keys `[key1, key2, key3, ...keyN]` specified: 1. Endpoints matching all N labels with the client proxy have priority P(0) i.e. the highest priority. 2. Endpoints matching the first N-1 labels with the client proxy have priority P(1) i.e. second highest priority. 3. By extension of this logic, endpoints matching only the first label with the client proxy has priority P(N-1) i.e. second lowest priority. 4. All the other endpoints have priority P(N) i.e. lowest priority.", "type": "array", "items": { "type": "string" @@ -527,7 +527,7 @@ "deprecated": true }, "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors. If set to true consecutive_local_origin_failure is taken into account for outlier detection calculations. This should be used when you want to derive the outlier detection status based on the errors seen locally such as failure to connect, timeout while connecting etc. rather than the status code retuned by upstream service. This is especially useful when the upstream service explicitly returns a 5xx for some requests and you want to ignore those responses from upstream service while determining the outlier detection status of a host. Defaults to false.", + "description": "Determines whether to distinguish local origin failures from external errors. If set to true consecutive_local_origin_failure is taken into account for outlier detection calculations. This should be used when you want to derive the outlier detection status based on the errors seen locally such as failure to connect, timeout while connecting etc. rather than the status code returned by upstream service. This is especially useful when the upstream service explicitly returns a 5xx for some requests and you want to ignore those responses from upstream service while determining the outlier detection status of a host. Defaults to false.", "type": "boolean" }, "consecutiveLocalOriginFailures": { diff --git a/vendor/istio.io/api/networking/v1alpha3/destination_rule.pb.go b/vendor/istio.io/api/networking/v1alpha3/destination_rule.pb.go index 342e0133..672cc908 100644 --- a/vendor/istio.io/api/networking/v1alpha3/destination_rule.pb.go +++ b/vendor/istio.io/api/networking/v1alpha3/destination_rule.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: networking/v1alpha3/destination_rule.proto @@ -244,7 +244,7 @@ const ( LoadBalancerSettings_UNSPECIFIED LoadBalancerSettings_SimpleLB = 0 // Deprecated. Use LEAST_REQUEST instead. // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in networking/v1alpha3/destination_rule.proto. LoadBalancerSettings_LEAST_CONN LoadBalancerSettings_SimpleLB = 1 // The random load balancer selects a random healthy host. The random // load balancer generally performs better than round robin if no health @@ -257,7 +257,7 @@ const ( // Envoy for further details. LoadBalancerSettings_PASSTHROUGH LoadBalancerSettings_SimpleLB = 3 // A basic round robin load balancing policy. This is generally unsafe - // for many scenarios (e.g. when enpoint weighting is used) as it can + // for many scenarios (e.g. when endpoint weighting is used) as it can // overburden endpoints. In general, prefer to use LEAST_REQUEST as a // drop-in replacement for ROUND_ROBIN. LoadBalancerSettings_ROUND_ROBIN LoadBalancerSettings_SimpleLB = 4 @@ -1219,13 +1219,13 @@ type OutlierDetection struct { // connection error/failure events qualify as an error. // $hide_from_docs // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in networking/v1alpha3/destination_rule.proto. ConsecutiveErrors int32 `protobuf:"varint,1,opt,name=consecutive_errors,json=consecutiveErrors,proto3" json:"consecutive_errors,omitempty"` // Determines whether to distinguish local origin failures from external errors. If set to true // consecutive_local_origin_failure is taken into account for outlier detection calculations. // This should be used when you want to derive the outlier detection status based on the errors // seen locally such as failure to connect, timeout while connecting etc. rather than the status code - // retuned by upstream service. This is especially useful when the upstream service explicitly returns + // returned by upstream service. This is especially useful when the upstream service explicitly returns // a 5xx for some requests and you want to ignore those responses from upstream service while determining // the outlier detection status of a host. // Defaults to false. @@ -1315,7 +1315,7 @@ func (*OutlierDetection) Descriptor() ([]byte, []int) { return file_networking_v1alpha3_destination_rule_proto_rawDescGZIP(), []int{5} } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in networking/v1alpha3/destination_rule.proto. func (x *OutlierDetection) GetConsecutiveErrors() int32 { if x != nil { return x.ConsecutiveErrors @@ -1533,14 +1533,17 @@ type ClientTLSSettings struct { // Should be empty if mode is `ISTIO_MUTUAL`. CaCertificates string `protobuf:"bytes,4,opt,name=ca_certificates,json=caCertificates,proto3" json:"ca_certificates,omitempty"` // The name of the secret that holds the TLS certs for the - // client including the CA certificates. Secret must exist in the - // same namespace with the proxy using the certificates. - // The secret (of type `generic`)should contain the - // following keys and values: `key: `, - // `cert: `, `cacert: `. + // client including the CA certificates. This secret must exist in + // the namespace of the proxy using the certificates. + // An Opaque secret should contain the following keys and values: + // `key: `, `cert: `, `cacert: `, + // `crl: ` // Here CACertificate is used to verify the server certificate. - // Secret of type tls for client certificates along with - // ca.crt key for CA certificates is also supported. + // For mutual TLS, `cacert: ` can be provided in the + // same secret or a separate secret named `-cacert`. + // A TLS secret for client certificates with an additional + // `ca.crt` key for CA certificates and `ca.crl` key for + // certificate revocation list(CRL) is also supported. // Only one of client certificates and CA certificate // or credentialName can be specified. // @@ -1565,7 +1568,7 @@ type ClientTLSSettings struct { Sni string `protobuf:"bytes,6,opt,name=sni,proto3" json:"sni,omitempty"` // InsecureSkipVerify specifies whether the proxy should skip verifying the // CA signature and SAN for the server certificate corresponding to the host. - // This flag should only be set if global CA signature verifcation is + // This flag should only be set if global CA signature verification is // enabled, `VerifyCertAtClient` environmental variable is set to `true`, // but no verification is desired for a specific host. If enabled with or // without `VerifyCertAtClient` enabled, verification of the CA signature and @@ -1734,12 +1737,23 @@ type LocalityLoadBalancerSetting struct { Failover []*LocalityLoadBalancerSetting_Failover `protobuf:"bytes,2,rep,name=failover,proto3" json:"failover,omitempty"` // failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing. // This is to support traffic failover across different groups of endpoints. - // Suppose there are total N labels specified: + // Two kinds of labels can be specified: // - // 1. Endpoints matching all N labels with the client proxy have priority P(0) i.e. the highest priority. - // 2. Endpoints matching the first N-1 labels with the client proxy have priority P(1) i.e. second highest priority. - // 3. By extension of this logic, endpoints matching only the first label with the client proxy has priority P(N-1) i.e. second lowest priority. - // 4. All the other endpoints have priority P(N) i.e. lowest priority. + // - Specify only label keys `[key1, key2, key3]`, istio would compare the label values of client with endpoints. + // Suppose there are total N label keys `[key1, key2, key3, ...keyN]` specified: + // + // 1. Endpoints matching all N labels with the client proxy have priority P(0) i.e. the highest priority. + // 2. Endpoints matching the first N-1 labels with the client proxy have priority P(1) i.e. second highest priority. + // 3. By extension of this logic, endpoints matching only the first label with the client proxy has priority P(N-1) i.e. second lowest priority. + // 4. All the other endpoints have priority P(N) i.e. lowest priority. + // + // - Specify labels with key and value `[key1=value1, key2=value2, key3=value3]`, istio would compare the labels with endpoints. + // Suppose there are total N labels `[key1=value1, key2=value2, key3=value3, ...keyN=valueN]` specified: + // + // 1. Endpoints matching all N labels have priority P(0) i.e. the highest priority. + // 2. Endpoints matching the first N-1 labels have priority P(1) i.e. second highest priority. + // 3. By extension of this logic, endpoints matching only the first label has priority P(N-1) i.e. second lowest priority. + // 4. All the other endpoints have priority P(N) i.e. lowest priority. // // Note: For a label to be considered for match, the previous labels must match, i.e. nth label would be considered matched only if first n-1 labels match. // @@ -1768,6 +1782,17 @@ type LocalityLoadBalancerSetting struct { // 4. endpoints have same [network] but different [region] labels with the client proxy have the fourth highest priority. // 5. all the other endpoints have the same lowest priority. // + // Suppose a service associated endpoints reside in multi clusters, the below example represents: + // 1. endpoints in `clusterA` and has `version=v1` label have P(0) priority. + // 2. endpoints not in `clusterA` but has `version=v1` label have P(1) priority. + // 2. all the other endpoints have P(2) priority. + // + // ```yaml + // failoverPriority: + // - "version=v1" + // - "topology.istio.io/cluster=clusterA" + // ``` + // // Optional: only one of distribute, failover or failoverPriority can be set. // And it should be used together with `OutlierDetection` to detect unhealthy endpoints, otherwise has no effect. FailoverPriority []string `protobuf:"bytes,4,rep,name=failover_priority,json=failoverPriority,proto3" json:"failover_priority,omitempty"` @@ -2039,7 +2064,7 @@ type LoadBalancerSettings_ConsistentHashLB struct { HashAlgorithm isLoadBalancerSettings_ConsistentHashLB_HashAlgorithm `protobuf_oneof:"hash_algorithm"` // Deprecated. Use RingHash instead. // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in networking/v1alpha3/destination_rule.proto. MinimumRingSize uint64 `protobuf:"varint,4,opt,name=minimum_ring_size,json=minimumRingSize,proto3" json:"minimum_ring_size,omitempty"` } @@ -2131,7 +2156,7 @@ func (x *LoadBalancerSettings_ConsistentHashLB) GetMaglev() *LoadBalancerSetting return nil } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in networking/v1alpha3/destination_rule.proto. func (x *LoadBalancerSettings_ConsistentHashLB) GetMinimumRingSize() uint64 { if x != nil { return x.MinimumRingSize @@ -2453,12 +2478,12 @@ type ConnectionPoolSettings_HTTPSettings struct { unknownFields protoimpl.UnknownFields // Maximum number of requests that will be queued while waiting for - // a ready connection pool connection. Default 1024. + // a ready connection pool connection. Default 2^32-1. // Refer to https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/circuit_breaking // under which conditions a new connection is created for HTTP2. // Please note that this is applicable to both HTTP/1.1 and HTTP2. Http1MaxPendingRequests int32 `protobuf:"varint,1,opt,name=http1_max_pending_requests,json=http1MaxPendingRequests,proto3" json:"http1_max_pending_requests,omitempty"` - // Maximum number of active requests to a destination. Default 1024. + // Maximum number of active requests to a destination. Default 2^32-1. // Please note that this is applicable to both HTTP/1.1 and HTTP2. Http2MaxRequests int32 `protobuf:"varint,2,opt,name=http2_max_requests,json=http2MaxRequests,proto3" json:"http2_max_requests,omitempty"` // Maximum number of requests per connection to a backend. Setting this @@ -2790,370 +2815,369 @@ var file_networking_v1alpha3_destination_rule_proto_rawDesc = []byte{ 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0xa9, 0x02, 0x0a, 0x0f, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x75, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x4f, - 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x33, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x52, 0x0d, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, - 0x3b, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x75, 0x62, - 0x73, 0x65, 0x74, 0x52, 0x07, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, - 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x08, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x6f, 0x12, 0x51, 0x0a, 0x11, 0x77, 0x6f, 0x72, - 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x79, 0x70, - 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, - 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xb3, 0x08, 0x0a, - 0x0d, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x54, - 0x0a, 0x0d, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, + 0x22, 0xa8, 0x02, 0x0a, 0x0f, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x75, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x4f, 0x0a, + 0x0e, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x33, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0c, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x72, 0x12, 0x5a, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, - 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, - 0x12, 0x58, 0x0a, 0x11, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x73, - 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, - 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, - 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x03, 0x74, 0x6c, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x6a, 0x0a, 0x13, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x33, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x52, 0x11, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4f, 0x0a, 0x06, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, + 0x33, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, + 0x0d, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3b, + 0x0a, 0x07, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x75, 0x62, 0x73, + 0x65, 0x74, 0x52, 0x07, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x65, + 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, + 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x6f, 0x12, 0x51, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, + 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x6c, + 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xb1, 0x08, 0x0a, 0x0d, + 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x54, 0x0a, + 0x0d, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, + 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0c, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x72, 0x12, 0x5a, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x69, + 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, + 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, + 0x58, 0x0a, 0x11, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x73, 0x74, + 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, + 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, + 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x03, 0x74, 0x6c, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x33, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, - 0x06, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x1a, 0x9c, 0x03, 0x0a, 0x11, 0x50, 0x6f, 0x72, 0x74, - 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3b, 0x0a, - 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x73, - 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x54, 0x0a, 0x0d, 0x6c, 0x6f, - 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x6f, - 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x52, 0x0c, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, - 0x12, 0x5a, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, - 0x6f, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x69, 0x73, 0x74, 0x69, - 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0e, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x58, 0x0a, 0x11, - 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x33, 0x2e, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x1a, 0x7a, 0x0a, 0x0e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x25, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x68, - 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, - 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0b, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, - 0x72, 0x74, 0x22, 0xf5, 0x01, 0x0a, 0x06, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x18, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, - 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x33, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x4f, - 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, + 0x61, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x6a, 0x0a, 0x13, 0x70, 0x6f, 0x72, + 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x52, 0x0d, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, - 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8a, 0x0a, 0x0a, 0x14, 0x4c, - 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x12, 0x52, 0x0a, 0x06, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, - 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4c, 0x42, 0x48, 0x00, 0x52, - 0x06, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x6b, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x40, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x52, 0x11, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4f, 0x0a, 0x06, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x33, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, + 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x1a, 0x9c, 0x03, 0x0a, 0x11, 0x50, 0x6f, 0x72, 0x74, 0x54, + 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3b, 0x0a, 0x04, + 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x73, 0x74, + 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x54, 0x0a, 0x0d, 0x6c, 0x6f, 0x61, + 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, - 0x4c, 0x42, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, - 0x48, 0x61, 0x73, 0x68, 0x12, 0x66, 0x0a, 0x13, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, - 0x5f, 0x6c, 0x62, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x36, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x6f, - 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, - 0x69, 0x74, 0x79, 0x4c, 0x62, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x4b, 0x0a, 0x14, - 0x77, 0x61, 0x72, 0x6d, 0x75, 0x70, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x73, 0x65, 0x63, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x77, 0x61, 0x72, 0x6d, 0x75, 0x70, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x73, 0x1a, 0xfc, 0x05, 0x0a, 0x10, 0x43, 0x6f, - 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x42, 0x12, 0x2a, - 0x0a, 0x10, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x68, 0x74, 0x74, 0x70, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x6e, 0x0a, 0x0b, 0x68, 0x74, - 0x74, 0x70, 0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x4b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, + 0x73, 0x52, 0x0c, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x12, + 0x5a, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, + 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0e, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x58, 0x0a, 0x11, 0x6f, + 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x33, 0x2e, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x52, 0x03, 0x74, 0x6c, 0x73, 0x1a, 0x78, 0x0a, 0x0e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x12, 0x24, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x68, 0x6f, + 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x74, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x22, + 0xf4, 0x01, 0x0a, 0x06, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, + 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x4f, 0x0a, 0x0e, 0x74, 0x72, + 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x54, + 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0d, 0x74, 0x72, + 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x88, 0x0a, 0x0a, 0x14, 0x4c, 0x6f, 0x61, 0x64, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, + 0x52, 0x0a, 0x06, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x38, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4c, - 0x42, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x48, 0x00, 0x52, 0x0a, - 0x68, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x73, - 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x00, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x70, - 0x12, 0x3b, 0x0a, 0x19, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x16, 0x68, 0x74, 0x74, 0x70, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x68, 0x0a, - 0x09, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x49, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x6f, 0x61, - 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, - 0x4c, 0x42, 0x2e, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x48, 0x01, 0x52, 0x08, 0x72, - 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x12, 0x61, 0x0a, 0x06, 0x6d, 0x61, 0x67, 0x6c, 0x65, - 0x76, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x42, 0x2e, 0x4d, 0x61, 0x67, 0x4c, 0x65, 0x76, - 0x48, 0x01, 0x52, 0x06, 0x6d, 0x61, 0x67, 0x6c, 0x65, 0x76, 0x12, 0x2e, 0x0a, 0x11, 0x6d, 0x69, - 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, - 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x36, 0x0a, 0x08, 0x52, 0x69, - 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, - 0x6d, 0x5f, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, - 0x7a, 0x65, 0x1a, 0x27, 0x0a, 0x06, 0x4d, 0x61, 0x67, 0x4c, 0x65, 0x76, 0x12, 0x1d, 0x0a, 0x0a, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x6d, 0x0a, 0x0a, 0x48, - 0x54, 0x54, 0x50, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x18, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x31, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x42, 0x0a, 0x0a, 0x08, 0x68, 0x61, - 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x10, 0x0a, 0x0e, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, - 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x22, 0x70, 0x0a, 0x08, 0x53, 0x69, 0x6d, 0x70, - 0x6c, 0x65, 0x4c, 0x42, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0a, 0x4c, 0x45, 0x41, 0x53, 0x54, 0x5f, 0x43, - 0x4f, 0x4e, 0x4e, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x41, 0x4e, - 0x44, 0x4f, 0x4d, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x41, 0x53, 0x53, 0x54, 0x48, 0x52, - 0x4f, 0x55, 0x47, 0x48, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x5f, - 0x52, 0x4f, 0x42, 0x49, 0x4e, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x45, 0x41, 0x53, 0x54, - 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x05, 0x42, 0x0b, 0x0a, 0x09, 0x6c, 0x62, - 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x94, 0x09, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x12, 0x4f, 0x0a, 0x03, 0x74, 0x63, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x2e, 0x54, 0x43, 0x50, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, - 0x74, 0x63, 0x70, 0x12, 0x52, 0x0a, 0x04, 0x68, 0x74, 0x74, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x52, 0x04, 0x68, 0x74, 0x74, 0x70, 0x1a, 0xcd, 0x03, 0x0a, 0x0b, 0x54, 0x43, 0x50, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x12, 0x6f, 0x0a, 0x0d, 0x74, 0x63, 0x70, 0x5f, 0x6b, 0x65, 0x65, 0x70, - 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x69, 0x73, - 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, - 0x43, 0x50, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x63, 0x70, 0x4b, 0x65, - 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x52, 0x0c, 0x74, 0x63, 0x70, 0x4b, 0x65, 0x65, 0x70, - 0x61, 0x6c, 0x69, 0x76, 0x65, 0x12, 0x51, 0x0a, 0x17, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4c, 0x42, 0x48, 0x00, 0x52, 0x06, 0x73, 0x69, 0x6d, + 0x70, 0x6c, 0x65, 0x12, 0x6b, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x69, + 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, + 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x6f, + 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x42, 0x48, 0x00, + 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, + 0x12, 0x66, 0x0a, 0x13, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6c, 0x62, 0x5f, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, + 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, + 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, + 0x62, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x4b, 0x0a, 0x14, 0x77, 0x61, 0x72, 0x6d, + 0x75, 0x70, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x8c, 0x01, 0x0a, 0x0c, 0x54, 0x63, 0x70, - 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x6f, - 0x62, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x62, 0x65, - 0x73, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, - 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x1a, 0x84, 0x04, 0x0a, 0x0c, 0x48, 0x54, 0x54, 0x50, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x68, 0x74, 0x74, 0x70, - 0x31, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x68, 0x74, - 0x74, 0x70, 0x31, 0x4d, 0x61, 0x78, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x68, 0x74, 0x74, 0x70, 0x32, 0x5f, 0x6d, - 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x10, 0x68, 0x74, 0x74, 0x70, 0x32, 0x4d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x73, 0x12, 0x3d, 0x0a, 0x1b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x12, 0x7a, 0x0a, 0x11, 0x68, 0x32, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4e, 0x2e, 0x69, + 0x6e, 0x52, 0x12, 0x77, 0x61, 0x72, 0x6d, 0x75, 0x70, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x63, 0x73, 0x1a, 0xfa, 0x05, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x42, 0x12, 0x2a, 0x0a, 0x10, 0x68, 0x74, + 0x74, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x68, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x6e, 0x0a, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x63, + 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x69, 0x73, + 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x6f, 0x6e, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x42, 0x2e, 0x48, 0x54, + 0x54, 0x50, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x68, 0x74, 0x74, 0x70, + 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, + 0x0b, 0x75, 0x73, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x70, 0x12, 0x3b, 0x0a, 0x19, + 0x68, 0x74, 0x74, 0x70, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x16, 0x68, 0x74, 0x74, 0x70, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x68, 0x0a, 0x09, 0x72, 0x69, 0x6e, + 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x48, 0x54, 0x54, 0x50, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x48, 0x32, 0x55, - 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0f, 0x68, 0x32, - 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2e, 0x0a, - 0x13, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x75, 0x73, 0x65, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0x3f, 0x0a, - 0x0f, 0x48, 0x32, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, - 0x0e, 0x44, 0x4f, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, - 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0x02, 0x22, 0x8a, - 0x05, 0x0a, 0x10, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, - 0x02, 0x18, 0x01, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x4a, 0x0a, 0x22, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x5f, - 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6f, - 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x1e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0x12, 0x67, 0x0a, 0x21, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x66, - 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1e, 0x63, 0x6f, 0x6e, - 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4f, 0x72, 0x69, - 0x67, 0x69, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x1a, 0x63, - 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x63, - 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x52, 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x73, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x35, 0x78, 0x78, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x76, 0x65, 0x35, 0x78, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x12, 0x47, 0x0a, 0x12, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x65, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, 0x45, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6d, - 0x61, 0x78, 0x5f, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, - 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x45, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, - 0x12, 0x6d, 0x69, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x70, 0x65, 0x72, 0x63, - 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x48, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x22, 0xd3, 0x03, 0x0a, 0x11, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x12, 0x4e, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x34, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x4c, - 0x53, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x6d, 0x6f, 0x64, - 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, - 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x43, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, - 0x6c, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, - 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, - 0x10, 0x0a, 0x03, 0x73, 0x6e, 0x69, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x6e, - 0x69, 0x12, 0x4c, 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x6b, - 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x69, 0x6e, 0x73, - 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x22, - 0x40, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x49, - 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x49, 0x4d, 0x50, 0x4c, - 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x10, 0x02, 0x12, - 0x10, 0x0a, 0x0c, 0x49, 0x53, 0x54, 0x49, 0x4f, 0x5f, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x10, - 0x03, 0x22, 0xa5, 0x04, 0x0a, 0x1b, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, - 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x12, 0x61, 0x0a, 0x0a, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, + 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x6f, + 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x42, 0x2e, 0x52, + 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x48, 0x01, 0x52, 0x08, 0x72, 0x69, 0x6e, 0x67, 0x48, + 0x61, 0x73, 0x68, 0x12, 0x61, 0x0a, 0x06, 0x6d, 0x61, 0x67, 0x6c, 0x65, 0x76, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, + 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, + 0x61, 0x73, 0x68, 0x4c, 0x42, 0x2e, 0x4d, 0x61, 0x67, 0x4c, 0x65, 0x76, 0x48, 0x01, 0x52, 0x06, + 0x6d, 0x61, 0x67, 0x6c, 0x65, 0x76, 0x12, 0x2e, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, + 0x6d, 0x5f, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x69, + 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x36, 0x0a, 0x08, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, + 0x73, 0x68, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x69, + 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6d, + 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x27, + 0x0a, 0x06, 0x4d, 0x61, 0x67, 0x4c, 0x65, 0x76, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x6b, 0x0a, 0x0a, 0x48, 0x54, 0x54, 0x50, 0x43, + 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x12, 0x30, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x03, 0x74, 0x74, 0x6c, 0x42, 0x0a, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, + 0x42, 0x10, 0x0a, 0x0e, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, + 0x68, 0x6d, 0x22, 0x70, 0x0a, 0x08, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4c, 0x42, 0x12, 0x0f, + 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x12, 0x0a, 0x0a, 0x4c, 0x45, 0x41, 0x53, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x10, 0x01, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x10, 0x02, 0x12, + 0x0f, 0x0a, 0x0b, 0x50, 0x41, 0x53, 0x53, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x10, 0x03, + 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x42, 0x49, 0x4e, 0x10, + 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x45, 0x41, 0x53, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, + 0x53, 0x54, 0x10, 0x05, 0x42, 0x0b, 0x0a, 0x09, 0x6c, 0x62, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x22, 0x94, 0x09, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4f, 0x0a, 0x03, + 0x74, 0x63, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x43, 0x50, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, 0x74, 0x63, 0x70, 0x12, 0x52, 0x0a, + 0x04, 0x68, 0x74, 0x74, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x73, + 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x48, + 0x54, 0x54, 0x50, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x04, 0x68, 0x74, 0x74, + 0x70, 0x1a, 0xcd, 0x03, 0x0a, 0x0b, 0x54, 0x43, 0x50, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x6f, + 0x0a, 0x0d, 0x74, 0x63, 0x70, 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x69, - 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x12, 0x5b, 0x0a, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, + 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x43, 0x50, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x63, 0x70, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, + 0x65, 0x52, 0x0c, 0x74, 0x63, 0x70, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x12, + 0x51, 0x0a, 0x17, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x6d, 0x61, 0x78, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x1a, 0x8c, 0x01, 0x0a, 0x0c, 0x54, 0x63, 0x70, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, + 0x69, 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x04, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x1a, 0x84, 0x04, 0x0a, 0x0c, 0x48, 0x54, 0x54, 0x50, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x31, 0x5f, 0x6d, 0x61, 0x78, 0x5f, + 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x68, 0x74, 0x74, 0x70, 0x31, 0x4d, 0x61, 0x78, + 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, + 0x2c, 0x0a, 0x12, 0x68, 0x74, 0x74, 0x70, 0x32, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x68, 0x74, 0x74, + 0x70, 0x32, 0x4d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x3d, 0x0a, + 0x1b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x70, 0x65, + 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x18, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x50, + 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, + 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3c, 0x0a, + 0x0c, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, + 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x7a, 0x0a, 0x11, 0x68, + 0x32, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x46, - 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, - 0x72, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x66, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x34, - 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x1a, 0xb2, 0x01, 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x59, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, - 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x69, 0x73, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, 0x54, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x02, - 0x74, 0x6f, 0x1a, 0x35, 0x0a, 0x07, 0x54, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x2e, 0x0a, 0x08, 0x46, 0x61, 0x69, - 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x42, 0x22, 0x5a, 0x20, 0x69, 0x73, 0x74, - 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, + 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x48, 0x32, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0f, 0x68, 0x32, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, + 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x75, 0x73, 0x65, 0x5f, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0x3f, 0x0a, 0x0f, 0x48, 0x32, 0x55, 0x70, 0x67, + 0x72, 0x61, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, + 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x4f, 0x5f, 0x4e, 0x4f, + 0x54, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x55, + 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0x02, 0x22, 0x8a, 0x05, 0x0a, 0x10, 0x4f, 0x75, 0x74, + 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, + 0x12, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x11, 0x63, + 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, + 0x12, 0x4a, 0x0a, 0x22, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1e, 0x73, 0x70, + 0x6c, 0x69, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4c, 0x6f, 0x63, 0x61, 0x6c, + 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x67, 0x0a, 0x21, + 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, + 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1e, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x46, 0x61, 0x69, + 0x6c, 0x75, 0x72, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x1a, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, + 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x76, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x73, 0x12, 0x52, 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x35, 0x78, 0x78, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x14, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x35, 0x78, 0x78, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x47, 0x0a, 0x12, + 0x62, 0x61, 0x73, 0x65, 0x5f, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x45, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x69, 0x6e, 0x5f, 0x68, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x50, 0x65, + 0x72, 0x63, 0x65, 0x6e, 0x74, 0x22, 0xd2, 0x03, 0x0a, 0x11, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x04, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x4c, 0x53, 0x6d, 0x6f, 0x64, 0x65, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x61, + 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, + 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x6e, 0x69, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x6e, 0x69, 0x12, 0x4c, 0x0a, 0x14, 0x69, 0x6e, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, + 0x66, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, + 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x22, 0x40, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x6d, + 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x00, + 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, + 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x53, 0x54, 0x49, + 0x4f, 0x5f, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x10, 0x03, 0x22, 0xa5, 0x04, 0x0a, 0x1b, 0x4c, + 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x61, 0x0a, 0x0a, 0x64, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, + 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, + 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x5b, 0x0a, + 0x08, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x3f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, + 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, + 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x61, + 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x50, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0xb2, 0x01, + 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, + 0x12, 0x59, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x69, + 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, + 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, + 0x54, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x02, 0x74, 0x6f, 0x1a, 0x35, 0x0a, 0x07, 0x54, + 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x2e, 0x0a, 0x08, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, + 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x74, 0x6f, 0x42, 0x22, 0x5a, 0x20, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/vendor/istio.io/api/networking/v1alpha3/destination_rule.proto b/vendor/istio.io/api/networking/v1alpha3/destination_rule.proto index d6e5debd..0837768c 100644 --- a/vendor/istio.io/api/networking/v1alpha3/destination_rule.proto +++ b/vendor/istio.io/api/networking/v1alpha3/destination_rule.proto @@ -545,7 +545,7 @@ message LoadBalancerSettings { PASSTHROUGH = 3; // A basic round robin load balancing policy. This is generally unsafe - // for many scenarios (e.g. when enpoint weighting is used) as it can + // for many scenarios (e.g. when endpoint weighting is used) as it can // overburden endpoints. In general, prefer to use LEAST_REQUEST as a // drop-in replacement for ROUND_ROBIN. ROUND_ROBIN = 4; @@ -583,11 +583,11 @@ message LoadBalancerSettings { // single virtual node. uint64 minimum_ring_size = 1; }; - + message MagLev { - // The table size for Maglev hashing. This helps in controlling the + // The table size for Maglev hashing. This helps in controlling the // disruption when the backend hosts change. - // Increasing the table size reduces the amount of disruption. + // Increasing the table size reduces the amount of disruption. uint64 table_size = 1; }; // Describes a HTTP cookie that will be used as the hash key for the @@ -618,7 +618,7 @@ message LoadBalancerSettings { string http_query_parameter_name = 5; }; - // The hash algorithm to use. + // The hash algorithm to use. // Please refer to https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/load_balancers#ring-hash // and https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/load_balancers#maglev for // considerations on choosing an algorithm. @@ -626,7 +626,7 @@ message LoadBalancerSettings { oneof hash_algorithm { // The ring/modulo hash load balancer implements consistent hashing to backend hosts. RingHash ring_hash = 6; - // The Maglev load balancer implements consistent hashing to backend hosts. + // The Maglev load balancer implements consistent hashing to backend hosts. MagLev maglev = 7; }; @@ -652,8 +652,8 @@ message LoadBalancerSettings { // remains in warmup mode starting from its creation time for the duration of this window and // Istio progressively increases amount of traffic for that endpoint instead of sending proportional amount of traffic. // This should be enabled for services that require warm up time to serve full production load with reasonable latency. - // Please note that this is most effective when few new endpoints come up like scale event in Kubernetes. When all the - // endpoints are relatively new like new deployment, this is not very effective as all endpoints end up getting same + // Please note that this is most effective when few new endpoints come up like scale event in Kubernetes. When all the + // endpoints are relatively new like new deployment, this is not very effective as all endpoints end up getting same // amount of requests. // Currently this is only supported for ROUND_ROBIN and LEAST_REQUEST load balancers. google.protobuf.Duration warmup_duration_secs = 4; @@ -748,13 +748,13 @@ message ConnectionPoolSettings { // Settings applicable to HTTP1.1/HTTP2/GRPC connections. message HTTPSettings { // Maximum number of requests that will be queued while waiting for - // a ready connection pool connection. Default 1024. + // a ready connection pool connection. Default 2^32-1. // Refer to https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/circuit_breaking // under which conditions a new connection is created for HTTP2. // Please note that this is applicable to both HTTP/1.1 and HTTP2. int32 http1_max_pending_requests = 1; - // Maximum number of active requests to a destination. Default 1024. + // Maximum number of active requests to a destination. Default 2^32-1. // Please note that this is applicable to both HTTP/1.1 and HTTP2. int32 http2_max_requests = 2; @@ -877,7 +877,7 @@ message OutlierDetection { // consecutive_local_origin_failure is taken into account for outlier detection calculations. // This should be used when you want to derive the outlier detection status based on the errors // seen locally such as failure to connect, timeout while connecting etc. rather than the status code - // retuned by upstream service. This is especially useful when the upstream service explicitly returns + // returned by upstream service. This is especially useful when the upstream service explicitly returns // a 5xx for some requests and you want to ignore those responses from upstream service while determining // the outlier detection status of a host. // Defaults to false. @@ -1093,14 +1093,17 @@ message ClientTLSSettings { string ca_certificates = 4; // The name of the secret that holds the TLS certs for the - // client including the CA certificates. Secret must exist in the - // same namespace with the proxy using the certificates. - // The secret (of type `generic`)should contain the - // following keys and values: `key: `, - // `cert: `, `cacert: `. + // client including the CA certificates. This secret must exist in + // the namespace of the proxy using the certificates. + // An Opaque secret should contain the following keys and values: + // `key: `, `cert: `, `cacert: `, + // `crl: ` // Here CACertificate is used to verify the server certificate. - // Secret of type tls for client certificates along with - // ca.crt key for CA certificates is also supported. + // For mutual TLS, `cacert: ` can be provided in the + // same secret or a separate secret named `-cacert`. + // A TLS secret for client certificates with an additional + // `ca.crt` key for CA certificates and `ca.crl` key for + // certificate revocation list(CRL) is also supported. // Only one of client certificates and CA certificate // or credentialName can be specified. // @@ -1128,7 +1131,7 @@ message ClientTLSSettings { // InsecureSkipVerify specifies whether the proxy should skip verifying the // CA signature and SAN for the server certificate corresponding to the host. - // This flag should only be set if global CA signature verifcation is + // This flag should only be set if global CA signature verification is // enabled, `VerifyCertAtClient` environmental variable is set to `true`, // but no verification is desired for a specific host. If enabled with or // without `VerifyCertAtClient` enabled, verification of the CA signature and @@ -1239,12 +1242,22 @@ message LocalityLoadBalancerSetting{ // failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing. // This is to support traffic failover across different groups of endpoints. - // Suppose there are total N labels specified: + // Two kinds of labels can be specified: + // - Specify only label keys `[key1, key2, key3]`, istio would compare the label values of client with endpoints. + // Suppose there are total N label keys `[key1, key2, key3, ...keyN]` specified: + // + // 1. Endpoints matching all N labels with the client proxy have priority P(0) i.e. the highest priority. + // 2. Endpoints matching the first N-1 labels with the client proxy have priority P(1) i.e. second highest priority. + // 3. By extension of this logic, endpoints matching only the first label with the client proxy has priority P(N-1) i.e. second lowest priority. + // 4. All the other endpoints have priority P(N) i.e. lowest priority. // - // 1. Endpoints matching all N labels with the client proxy have priority P(0) i.e. the highest priority. - // 2. Endpoints matching the first N-1 labels with the client proxy have priority P(1) i.e. second highest priority. - // 3. By extension of this logic, endpoints matching only the first label with the client proxy has priority P(N-1) i.e. second lowest priority. - // 4. All the other endpoints have priority P(N) i.e. lowest priority. + // - Specify labels with key and value `[key1=value1, key2=value2, key3=value3]`, istio would compare the labels with endpoints. + // Suppose there are total N labels `[key1=value1, key2=value2, key3=value3, ...keyN=valueN]` specified: + // + // 1. Endpoints matching all N labels have priority P(0) i.e. the highest priority. + // 2. Endpoints matching the first N-1 labels have priority P(1) i.e. second highest priority. + // 3. By extension of this logic, endpoints matching only the first label has priority P(N-1) i.e. second lowest priority. + // 4. All the other endpoints have priority P(N) i.e. lowest priority. // // Note: For a label to be considered for match, the previous labels must match, i.e. nth label would be considered matched only if first n-1 labels match. // @@ -1273,6 +1286,17 @@ message LocalityLoadBalancerSetting{ // 4. endpoints have same [network] but different [region] labels with the client proxy have the fourth highest priority. // 5. all the other endpoints have the same lowest priority. // + // Suppose a service associated endpoints reside in multi clusters, the below example represents: + // 1. endpoints in `clusterA` and has `version=v1` label have P(0) priority. + // 2. endpoints not in `clusterA` but has `version=v1` label have P(1) priority. + // 2. all the other endpoints have P(2) priority. + // + // ```yaml + // failoverPriority: + // - "version=v1" + // - "topology.istio.io/cluster=clusterA" + // ``` + // // Optional: only one of distribute, failover or failoverPriority can be set. // And it should be used together with `OutlierDetection` to detect unhealthy endpoints, otherwise has no effect. repeated string failover_priority = 4; diff --git a/vendor/istio.io/api/networking/v1alpha3/envoy_filter.gen.json b/vendor/istio.io/api/networking/v1alpha3/envoy_filter.gen.json index 28425295..e2c849c2 100644 --- a/vendor/istio.io/api/networking/v1alpha3/envoy_filter.gen.json +++ b/vendor/istio.io/api/networking/v1alpha3/envoy_filter.gen.json @@ -256,7 +256,7 @@ } }, "istio.networking.v1alpha3.EnvoyFilter.Patch.FilterClass": { - "description": "FilterClass determines the filter insertion point in the filter chain relative to the filters implicitly inserted by the control plane. It is used in conjuction with the `ADD` operation. This is the preferred insertion mechanism for adding filters over the `INSERT_*` operations since those operations rely on potentially unstable filter names. Filter ordering is important if your filter depends on or affects the functioning of a another filter in the filter chain. Within a filter class, filters are inserted in the order of processing.", + "description": "FilterClass determines the filter insertion point in the filter chain relative to the filters implicitly inserted by the control plane. It is used in conjunction with the `ADD` operation. This is the preferred insertion mechanism for adding filters over the `INSERT_*` operations since those operations rely on potentially unstable filter names. Filter ordering is important if your filter depends on or affects the functioning of a another filter in the filter chain. Within a filter class, filters are inserted in the order of processing.", "type": "string", "enum": [ "UNSPECIFIED", diff --git a/vendor/istio.io/api/networking/v1alpha3/envoy_filter.pb.go b/vendor/istio.io/api/networking/v1alpha3/envoy_filter.pb.go index c762986a..e0282014 100644 --- a/vendor/istio.io/api/networking/v1alpha3/envoy_filter.pb.go +++ b/vendor/istio.io/api/networking/v1alpha3/envoy_filter.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: networking/v1alpha3/envoy_filter.proto @@ -139,19 +139,20 @@ // name: envoy.filters.http.lua // typed_config: // "@type": "type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua" -// inlineCode: | -// function envoy_on_request(request_handle) -// -- Make an HTTP call to an upstream host with the following headers, body, and timeout. -// local headers, body = request_handle:httpCall( -// "lua_cluster", -// { -// [":method"] = "POST", -// [":path"] = "/acl", -// [":authority"] = "internal.org.net" -// }, -// "authorize call", -// 5000) -// end +// defaultSourceCode: +// inlineString: | +// function envoy_on_request(request_handle) +// -- Make an HTTP call to an upstream host with the following headers, body, and timeout. +// local headers, body = request_handle:httpCall( +// "lua_cluster", +// { +// [":method"] = "POST", +// [":path"] = "/acl", +// [":authority"] = "internal.org.net" +// }, +// "authorize call", +// 5000) +// end // # The second patch adds the cluster that is referenced by the lua code // # cds match is omitted as a new cluster is being added // - applyTo: CLUSTER @@ -329,7 +330,7 @@ // # and the binary configuration. It should come before the next patch that applies it. // # This resource is visible to all proxies in the namespace "myns". It is possible to provide // # multiple definitions for the same name "my-wasm-extension" in multiple namespaces. We recommend that: -// # - if overriding is desired, then the root level definition can be overriden per namespace with REPLACE. +// # - if overriding is desired, then the root level definition can be overridden per namespace with REPLACE. // # - if overriding is not desired, then the name should be qualified with the namespace "myns/my-wasm-extension", // # to avoid accidental name collisions. // - applyTo: EXTENSION_CONFIG @@ -380,11 +381,11 @@ // apiVersion: networking.istio.io/v1alpha3 // kind: EnvoyFilter // metadata: -// name: listener-filter-example +// name: wasm-service // namespace: myns // spec: // configPatches: -// - applyTo: LISTENER_FILTER +// - applyTo: BOOTSTRAP // patch: // operation: MERGE // value: @@ -412,7 +413,7 @@ // apiVersion: networking.istio.io/v1alpha3 // kind: EnvoyFilter // metadata: -// name: wasm-service +// name: listener-filter-example // namespace: myns // spec: // configPatches: @@ -770,7 +771,7 @@ func (EnvoyFilter_Patch_Operation) EnumDescriptor() ([]byte, []int) { // FilterClass determines the filter insertion point in the filter chain // relative to the filters implicitly inserted by the control plane. -// It is used in conjuction with the `ADD` operation. +// It is used in conjunction with the `ADD` operation. // This is the preferred insertion mechanism for adding filters over // the `INSERT_*` operations since those operations rely on potentially unstable // filter names. @@ -1929,220 +1930,220 @@ var file_networking_v1alpha3_envoy_filter_proto_rawDesc = []byte{ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa0, 0x1a, 0x0a, 0x0b, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9f, 0x1a, 0x0a, 0x0b, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, - 0x6a, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x69, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0d, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x1a, 0xcb, 0x01, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x78, - 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, - 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x75, 0x0a, 0x0c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6f, 0x72, 0x74, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0xc4, 0x04, 0x0a, - 0x17, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, - 0x6f, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x72, - 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, - 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x12, 0x65, 0x0a, 0x05, 0x76, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x4f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, - 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, - 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x05, 0x76, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0xcb, 0x01, 0x0a, 0x0a, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x68, - 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x50, + 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x50, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x1a, 0xcb, 0x01, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x78, 0x79, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, + 0x6f, 0x78, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x69, + 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x75, 0x0a, 0x0c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0xc4, 0x04, 0x0a, 0x17, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x72, 0x74, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6f, + 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x72, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, + 0x65, 0x0a, 0x05, 0x76, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3f, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4e, 0x59, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x52, - 0x4f, 0x55, 0x54, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, - 0x43, 0x54, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x52, - 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x10, 0x03, 0x1a, 0x87, 0x01, 0x0a, 0x10, 0x56, 0x69, - 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x56, + 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x05, 0x76, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0xcb, 0x01, 0x0a, 0x0a, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x68, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x50, 0x2e, + 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3f, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4e, 0x59, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x4f, + 0x55, 0x54, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, + 0x54, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, + 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x10, 0x03, 0x1a, 0x87, 0x01, 0x0a, 0x10, 0x56, 0x69, 0x72, + 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x5f, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x49, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, + 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x1a, 0xc6, 0x05, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x68, 0x0a, 0x0c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61, + 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x0b, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x27, 0x0a, 0x0f, + 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0xa1, 0x02, 0x0a, 0x10, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x5f, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x49, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x6e, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x73, 0x6e, 0x69, 0x12, 0x2d, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, + 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x12, 0x33, 0x0a, 0x15, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x64, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x1a, 0x85, 0x01, + 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x62, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x53, 0x75, 0x62, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x09, 0x73, 0x75, 0x62, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x24, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0xa8, 0x03, 0x0a, 0x05, + 0x50, 0x61, 0x74, 0x63, 0x68, 0x12, 0x54, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x5b, 0x0a, 0x0c, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x38, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, + 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x0b, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x22, 0x7c, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, + 0x00, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x45, 0x52, 0x47, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, + 0x41, 0x44, 0x44, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, + 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x5f, 0x42, 0x45, 0x46, 0x4f, + 0x52, 0x45, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x5f, 0x41, + 0x46, 0x54, 0x45, 0x52, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, + 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x50, 0x4c, + 0x41, 0x43, 0x45, 0x10, 0x07, 0x22, 0x3f, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x55, 0x54, 0x48, 0x4e, 0x10, 0x01, + 0x12, 0x09, 0x0a, 0x05, 0x41, 0x55, 0x54, 0x48, 0x5a, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x53, + 0x54, 0x41, 0x54, 0x53, 0x10, 0x03, 0x1a, 0xd8, 0x03, 0x0a, 0x16, 0x45, 0x6e, 0x76, 0x6f, 0x79, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x12, 0x4d, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, + 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x12, 0x47, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x31, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, + 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x52, 0x0a, 0x08, 0x6c, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x69, 0x73, + 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x48, 0x00, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x71, 0x0a, + 0x13, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x73, 0x74, + 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x48, 0x00, 0x52, 0x12, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x4f, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, - 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x1a, 0xc6, 0x05, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6f, 0x72, 0x74, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x68, 0x0a, 0x0c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x68, - 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x69, 0x73, 0x74, 0x69, - 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x0b, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x27, 0x0a, - 0x0f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0xa1, 0x02, 0x0a, 0x10, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x6e, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x73, 0x6e, 0x69, 0x12, 0x2d, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x33, 0x0a, 0x15, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x06, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x69, 0x73, 0x74, 0x69, - 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x06, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x64, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x1a, 0x85, - 0x01, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x62, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, + 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x1a, 0xfc, 0x01, 0x0a, 0x16, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x12, 0x49, 0x0a, 0x08, + 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x74, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, + 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x52, 0x07, + 0x61, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x12, 0x53, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x53, 0x75, 0x62, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x09, 0x73, 0x75, 0x62, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x24, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0xa8, 0x03, 0x0a, - 0x05, 0x50, 0x61, 0x74, 0x63, 0x68, 0x12, 0x54, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x69, 0x73, 0x74, 0x69, - 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x5b, 0x0a, 0x0c, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x38, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, - 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x2e, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x0b, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x22, 0x7c, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, - 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x45, 0x52, 0x47, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, - 0x03, 0x41, 0x44, 0x44, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, - 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x5f, 0x42, 0x45, 0x46, - 0x4f, 0x52, 0x45, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x5f, - 0x41, 0x46, 0x54, 0x45, 0x52, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x53, 0x45, 0x52, - 0x54, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x50, - 0x4c, 0x41, 0x43, 0x45, 0x10, 0x07, 0x22, 0x3f, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x55, 0x54, 0x48, 0x4e, 0x10, - 0x01, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x55, 0x54, 0x48, 0x5a, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, - 0x53, 0x54, 0x41, 0x54, 0x53, 0x10, 0x03, 0x1a, 0xd8, 0x03, 0x0a, 0x16, 0x45, 0x6e, 0x76, 0x6f, - 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x12, 0x4d, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, - 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x74, 0x63, - 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x12, 0x47, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x31, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, - 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x52, 0x0a, 0x08, 0x6c, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x69, - 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x48, 0x00, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x71, - 0x0a, 0x13, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x73, + 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x45, + 0x6e, 0x76, 0x6f, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x42, 0x0a, 0x05, + 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x48, 0x00, 0x52, 0x12, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x4f, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, - 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x1a, 0xfc, 0x01, 0x0a, 0x16, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x12, 0x49, 0x0a, - 0x08, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x74, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, - 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x52, - 0x07, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x12, 0x53, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, - 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x42, 0x0a, - 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, - 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, - 0x68, 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x12, 0x0b, 0x0a, - 0x07, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x49, - 0x53, 0x54, 0x45, 0x4e, 0x45, 0x52, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x49, 0x4c, 0x54, - 0x45, 0x52, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x45, - 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x10, 0x03, 0x12, 0x0f, - 0x0a, 0x0b, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, - 0x17, 0x0a, 0x13, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, - 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x49, 0x52, 0x54, - 0x55, 0x41, 0x4c, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x48, 0x54, - 0x54, 0x50, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x10, 0x07, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4c, - 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x08, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x58, 0x54, 0x45, 0x4e, - 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x09, 0x12, 0x0d, 0x0a, - 0x09, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, - 0x4c, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x45, 0x52, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x10, - 0x0b, 0x22, 0x4f, 0x0a, 0x0c, 0x50, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4e, 0x59, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x49, - 0x44, 0x45, 0x43, 0x41, 0x52, 0x5f, 0x49, 0x4e, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, - 0x14, 0x0a, 0x10, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x42, 0x4f, - 0x55, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, - 0x10, 0x03, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x07, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x42, 0x22, 0x5a, 0x20, 0x69, 0x73, 0x74, 0x69, - 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, + 0x22, 0xdd, 0x01, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x12, 0x0b, 0x0a, 0x07, + 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x49, 0x53, + 0x54, 0x45, 0x4e, 0x45, 0x52, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x49, 0x4c, 0x54, 0x45, + 0x52, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x45, 0x54, + 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x10, 0x03, 0x12, 0x0f, 0x0a, + 0x0b, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, 0x17, + 0x0a, 0x13, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x49, 0x52, 0x54, 0x55, + 0x41, 0x4c, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x48, 0x54, 0x54, + 0x50, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x10, 0x07, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4c, 0x55, + 0x53, 0x54, 0x45, 0x52, 0x10, 0x08, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, + 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x09, 0x12, 0x0d, 0x0a, 0x09, + 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x4c, + 0x49, 0x53, 0x54, 0x45, 0x4e, 0x45, 0x52, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x10, 0x0b, + 0x22, 0x4f, 0x0a, 0x0c, 0x50, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4e, 0x59, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x49, 0x44, + 0x45, 0x43, 0x41, 0x52, 0x5f, 0x49, 0x4e, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x14, + 0x0a, 0x10, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x42, 0x4f, 0x55, + 0x4e, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x10, + 0x03, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x07, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, + 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x42, 0x22, 0x5a, 0x20, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, + 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( diff --git a/vendor/istio.io/api/networking/v1alpha3/envoy_filter.proto b/vendor/istio.io/api/networking/v1alpha3/envoy_filter.proto index b507028a..633015c3 100644 --- a/vendor/istio.io/api/networking/v1alpha3/envoy_filter.proto +++ b/vendor/istio.io/api/networking/v1alpha3/envoy_filter.proto @@ -139,19 +139,20 @@ import "networking/v1alpha3/sidecar.proto"; // name: envoy.filters.http.lua // typed_config: // "@type": "type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua" -// inlineCode: | -// function envoy_on_request(request_handle) -// -- Make an HTTP call to an upstream host with the following headers, body, and timeout. -// local headers, body = request_handle:httpCall( -// "lua_cluster", -// { -// [":method"] = "POST", -// [":path"] = "/acl", -// [":authority"] = "internal.org.net" -// }, -// "authorize call", -// 5000) -// end +// defaultSourceCode: +// inlineString: | +// function envoy_on_request(request_handle) +// -- Make an HTTP call to an upstream host with the following headers, body, and timeout. +// local headers, body = request_handle:httpCall( +// "lua_cluster", +// { +// [":method"] = "POST", +// [":path"] = "/acl", +// [":authority"] = "internal.org.net" +// }, +// "authorize call", +// 5000) +// end // # The second patch adds the cluster that is referenced by the lua code // # cds match is omitted as a new cluster is being added // - applyTo: CLUSTER @@ -329,7 +330,7 @@ import "networking/v1alpha3/sidecar.proto"; // # and the binary configuration. It should come before the next patch that applies it. // # This resource is visible to all proxies in the namespace "myns". It is possible to provide // # multiple definitions for the same name "my-wasm-extension" in multiple namespaces. We recommend that: -// # - if overriding is desired, then the root level definition can be overriden per namespace with REPLACE. +// # - if overriding is desired, then the root level definition can be overridden per namespace with REPLACE. // # - if overriding is not desired, then the name should be qualified with the namespace "myns/my-wasm-extension", // # to avoid accidental name collisions. // - applyTo: EXTENSION_CONFIG @@ -380,11 +381,11 @@ import "networking/v1alpha3/sidecar.proto"; // apiVersion: networking.istio.io/v1alpha3 // kind: EnvoyFilter // metadata: -// name: listener-filter-example +// name: wasm-service // namespace: myns // spec: // configPatches: -// - applyTo: LISTENER_FILTER +// - applyTo: BOOTSTRAP // patch: // operation: MERGE // value: @@ -412,7 +413,7 @@ import "networking/v1alpha3/sidecar.proto"; // apiVersion: networking.istio.io/v1alpha3 // kind: EnvoyFilter // metadata: -// name: wasm-service +// name: listener-filter-example // namespace: myns // spec: // configPatches: @@ -804,7 +805,7 @@ message EnvoyFilter { // FilterClass determines the filter insertion point in the filter chain // relative to the filters implicitly inserted by the control plane. - // It is used in conjuction with the `ADD` operation. + // It is used in conjunction with the `ADD` operation. // This is the preferred insertion mechanism for adding filters over // the `INSERT_*` operations since those operations rely on potentially unstable // filter names. @@ -886,7 +887,7 @@ message EnvoyFilter { // One or more patches with match conditions. repeated EnvoyConfigObjectPatch config_patches = 4 [(google.api.field_behavior) = REQUIRED]; - + // Priority defines the order in which patch sets are applied within a context. // When one patch depends on another patch, the order of patch application // is significant. The API provides two primary ways to order patches. @@ -897,7 +898,7 @@ message EnvoyFilter { // The default value for priority is 0 and the range is [ min-int32, max-int32 ]. // A patch set with a negative priority is processed before the default. A patch // set with a positive priority is processed after the default. - // + // // It is recommended to start with priority values that are multiples of 10 // to leave room for further insertion. // diff --git a/vendor/istio.io/api/networking/v1alpha3/gateway.gen.json b/vendor/istio.io/api/networking/v1alpha3/gateway.gen.json index 467d4896..7871cdb6 100644 --- a/vendor/istio.io/api/networking/v1alpha3/gateway.gen.json +++ b/vendor/istio.io/api/networking/v1alpha3/gateway.gen.json @@ -99,11 +99,11 @@ "type": "string" }, "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`. The path to a file containing certificate authority certificates to use in verifying a presented client side certificate.", + "description": "REQUIRED if mode is `MUTUAL` or `OPTIONAL_MUTUAL`. The path to a file containing certificate authority certificates to use in verifying a presented client side certificate.", "type": "string" }, "credentialName": { - "description": "For gateways running on Kubernetes, the name of the secret that holds the TLS certs including the CA certificates. Applicable only on Kubernetes. The secret (of type `generic`) should contain the following keys and values: `key: \u003cprivateKey\u003e` and `cert: \u003cserverCert\u003e`. For mutual TLS, `cacert: \u003cCACertificate\u003e` can be provided in the same secret or a separate secret named `\u003csecret\u003e-cacert`. Secret of type tls for server certificates along with ca.crt key for CA certificates is also supported. Only one of server certificates and CA certificate or credentialName can be specified.", + "description": "For gateways running on Kubernetes, the name of the secret that holds the TLS certs including the CA certificates. Applicable only on Kubernetes. An Opaque secret should contain the following keys and values: `key: \u003cprivateKey\u003e` and `cert: \u003cserverCert\u003e`. For mutual TLS, `cacert: \u003cCACertificate\u003e` and `crl: \u003cCertificateRevocationList\u003e` can be provided in the same secret or a separate secret named `\u003csecret\u003e-cacert`. A TLS secret for server certificates with an additional `tls.ocsp-staple` key for specifying OCSP staple information, `ca.crt` key for CA certificates and `ca.crl` for certificate revocation list is also supported. Only one of server certificates and CA certificate or credentialName can be specified.", "type": "string" }, "subjectAltNames": { @@ -134,7 +134,7 @@ "$ref": "#/components/schemas/istio.networking.v1alpha3.ServerTLSSettings.TLSProtocol" }, "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list. Otherwise default to the default cipher list supported by Envoy.", + "description": "Optional: If specified, only support the specified cipher list. Otherwise default to the default cipher list supported by Envoy as specified [here](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/transport_sockets/tls/v3/common.proto). The supported list of ciphers are: * `ECDHE-ECDSA-AES128-GCM-SHA256` * `ECDHE-RSA-AES128-GCM-SHA256` * `ECDHE-ECDSA-AES256-GCM-SHA384` * `ECDHE-RSA-AES256-GCM-SHA384` * `ECDHE-ECDSA-CHACHA20-POLY1305` * `ECDHE-RSA-CHACHA20-POLY1305` * `ECDHE-ECDSA-AES128-SHA` * `ECDHE-RSA-AES128-SHA` * `ECDHE-ECDSA-AES256-SHA` * `ECDHE-RSA-AES256-SHA` * `AES128-GCM-SHA256` * `AES256-GCM-SHA384` * `AES128-SHA` * `AES256-SHA` * `DES-CBC3-SHA`", "type": "array", "items": { "type": "string" @@ -161,7 +161,8 @@ "SIMPLE", "MUTUAL", "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" + "ISTIO_MUTUAL", + "OPTIONAL_MUTUAL" ] } } diff --git a/vendor/istio.io/api/networking/v1alpha3/gateway.pb.go b/vendor/istio.io/api/networking/v1alpha3/gateway.pb.go index 61740448..4b1a0f5e 100644 --- a/vendor/istio.io/api/networking/v1alpha3/gateway.pb.go +++ b/vendor/istio.io/api/networking/v1alpha3/gateway.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: networking/v1alpha3/gateway.proto @@ -375,10 +375,13 @@ const ( // match criterion in a VirtualService TLS route to determine // the destination service from the service registry. ServerTLSSettings_PASSTHROUGH ServerTLSSettings_TLSmode = 0 - // Secure connections with standard TLS semantics. + // Secure connections with standard TLS semantics. In this mode + // client certificate is not requested during handshake. ServerTLSSettings_SIMPLE ServerTLSSettings_TLSmode = 1 // Secure connections to the downstream using mutual TLS by // presenting server certificates for authentication. + // A client certificate will also be requested during the handshake and + // at least one valid certificate is required to be sent by the client. ServerTLSSettings_MUTUAL ServerTLSSettings_TLSmode = 2 // Similar to the passthrough mode, except servers with this TLS // mode do not require an associated VirtualService to map from @@ -399,6 +402,13 @@ const ( // for mTLS authentication. When this mode is used, all other // fields in `TLSOptions` should be empty. ServerTLSSettings_ISTIO_MUTUAL ServerTLSSettings_TLSmode = 4 + // Similar to MUTUAL mode, except that the client certificate + // is optional. Unlike SIMPLE mode, A client certificate will + // still be explicitly requested during handshake, but the client + // is not required to send a certificate. If a client certificate + // is presented, it will be validated. ca_certificates should + // be specified for validating client certificates. + ServerTLSSettings_OPTIONAL_MUTUAL ServerTLSSettings_TLSmode = 5 ) // Enum value maps for ServerTLSSettings_TLSmode. @@ -409,6 +419,7 @@ var ( 2: "MUTUAL", 3: "AUTO_PASSTHROUGH", 4: "ISTIO_MUTUAL", + 5: "OPTIONAL_MUTUAL", } ServerTLSSettings_TLSmode_value = map[string]int32{ "PASSTHROUGH": 0, @@ -416,6 +427,7 @@ var ( "MUTUAL": 2, "AUTO_PASSTHROUGH": 3, "ISTIO_MUTUAL": 4, + "OPTIONAL_MUTUAL": 5, } ) @@ -911,7 +923,7 @@ type Port struct { // received. Applicable only when used with ServiceEntries. // $hide_from_docs // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in networking/v1alpha3/gateway.proto. TargetPort uint32 `protobuf:"varint,4,opt,name=target_port,json=targetPort,proto3" json:"target_port,omitempty"` } @@ -968,7 +980,7 @@ func (x *Port) GetName() string { return "" } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in networking/v1alpha3/gateway.proto. func (x *Port) GetTargetPort() uint32 { if x != nil { return x.TargetPort @@ -994,19 +1006,19 @@ type ServerTLSSettings struct { // REQUIRED if mode is `SIMPLE` or `MUTUAL`. The path to the file // holding the server's private key. PrivateKey string `protobuf:"bytes,4,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` - // REQUIRED if mode is `MUTUAL`. The path to a file containing - // certificate authority certificates to use in verifying a presented + // REQUIRED if mode is `MUTUAL` or `OPTIONAL_MUTUAL`. The path to a file + // containing certificate authority certificates to use in verifying a presented // client side certificate. CaCertificates string `protobuf:"bytes,5,opt,name=ca_certificates,json=caCertificates,proto3" json:"ca_certificates,omitempty"` // For gateways running on Kubernetes, the name of the secret that // holds the TLS certs including the CA certificates. Applicable - // only on Kubernetes. The secret (of type `generic`) should - // contain the following keys and values: `key: - // ` and `cert: `. For mutual TLS, - // `cacert: ` can be provided in the same secret or - // a separate secret named `-cacert`. - // Secret of type tls for server certificates along with - // ca.crt key for CA certificates is also supported. + // only on Kubernetes. An Opaque secret should contain the following + // keys and values: `key: ` and `cert: `. + // For mutual TLS, `cacert: ` and `crl: ` + // can be provided in the same secret or a separate secret named `-cacert`. + // A TLS secret for server certificates with an additional `tls.ocsp-staple` key + // for specifying OCSP staple information, `ca.crt` key for CA certificates + // and `ca.crl` for certificate revocation list is also supported. // Only one of server certificates and CA certificate // or credentialName can be specified. CredentialName string `protobuf:"bytes,10,opt,name=credential_name,json=credentialName,proto3" json:"credential_name,omitempty"` @@ -1035,7 +1047,24 @@ type ServerTLSSettings struct { // Optional: Maximum TLS protocol version. MaxProtocolVersion ServerTLSSettings_TLSProtocol `protobuf:"varint,8,opt,name=max_protocol_version,json=maxProtocolVersion,proto3,enum=istio.networking.v1alpha3.ServerTLSSettings_TLSProtocol" json:"max_protocol_version,omitempty"` // Optional: If specified, only support the specified cipher list. - // Otherwise default to the default cipher list supported by Envoy. + // Otherwise default to the default cipher list supported by Envoy + // as specified [here](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/transport_sockets/tls/v3/common.proto). + // The supported list of ciphers are: + // * `ECDHE-ECDSA-AES128-GCM-SHA256` + // * `ECDHE-RSA-AES128-GCM-SHA256` + // * `ECDHE-ECDSA-AES256-GCM-SHA384` + // * `ECDHE-RSA-AES256-GCM-SHA384` + // * `ECDHE-ECDSA-CHACHA20-POLY1305` + // * `ECDHE-RSA-CHACHA20-POLY1305` + // * `ECDHE-ECDSA-AES128-SHA` + // * `ECDHE-RSA-AES128-SHA` + // * `ECDHE-ECDSA-AES256-SHA` + // * `ECDHE-RSA-AES256-SHA` + // * `AES128-GCM-SHA256` + // * `AES256-GCM-SHA384` + // * `AES128-SHA` + // * `AES256-SHA` + // * `DES-CBC3-SHA` CipherSuites []string `protobuf:"bytes,9,rep,name=cipher_suites,json=cipherSuites,proto3" json:"cipher_suites,omitempty"` } @@ -1164,102 +1193,103 @@ var file_networking_v1alpha3_gateway_proto_rawDesc = []byte{ 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0xdd, 0x01, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x41, 0x0a, 0x07, 0x73, + 0xdb, 0x01, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x40, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x42, - 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x52, - 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x30, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x1a, 0x3b, 0x0a, 0x0d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0xf2, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x04, 0x70, 0x6f, - 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, + 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x30, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x1a, 0x3b, 0x0a, 0x0d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf0, 0x01, + 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x33, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x70, 0x6f, + 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x62, 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, + 0x73, 0x12, 0x3e, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, + 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, 0x74, 0x6c, + 0x73, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x65, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x82, 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x23, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x81, 0x07, 0x0a, 0x11, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x68, + 0x74, 0x74, 0x70, 0x73, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, 0x74, 0x74, 0x70, 0x73, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x12, 0x48, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x34, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, + 0x4c, 0x53, 0x6d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x12, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, + 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, + 0x0a, 0x11, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x76, 0x65, + 0x72, 0x69, 0x66, 0x79, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x5f, 0x73, 0x70, 0x6b, 0x69, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x76, 0x65, 0x72, + 0x69, 0x66, 0x79, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x70, + 0x6b, 0x69, 0x12, 0x36, 0x0a, 0x17, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x63, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0c, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x15, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x6a, 0x0a, 0x14, 0x6d, 0x69, + 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x33, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, - 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x69, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x05, 0x68, 0x6f, 0x73, - 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x05, - 0x68, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1c, 0x0a, - 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x04, 0xe2, - 0x41, 0x01, 0x02, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x08, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, - 0x41, 0x01, 0x02, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, - 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, - 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x22, 0xec, 0x06, 0x0a, - 0x11, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x5f, 0x72, 0x65, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, 0x74, 0x74, 0x70, - 0x73, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x48, 0x0a, 0x04, 0x6d, 0x6f, 0x64, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x4c, 0x53, 0x6d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, - 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x11, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, - 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, - 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, - 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x12, 0x36, 0x0a, 0x17, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x63, 0x65, 0x72, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x6b, 0x69, 0x18, 0x0b, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x15, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x70, 0x6b, 0x69, 0x12, 0x36, 0x0a, 0x17, 0x76, 0x65, 0x72, - 0x69, 0x66, 0x79, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, - 0x68, 0x61, 0x73, 0x68, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x76, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x61, 0x73, - 0x68, 0x12, 0x6a, 0x0a, 0x14, 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x38, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x4c, - 0x53, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x12, 0x6d, 0x69, 0x6e, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x6a, 0x0a, - 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x69, 0x73, - 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x4c, - 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x4c, 0x53, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x69, 0x70, - 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0c, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x22, 0x5a, - 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x41, 0x53, - 0x53, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x49, - 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, - 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x54, - 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x53, 0x54, 0x49, - 0x4f, 0x5f, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x10, 0x04, 0x22, 0x4f, 0x0a, 0x0b, 0x54, 0x4c, - 0x53, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x4c, 0x53, - 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x56, 0x31, - 0x5f, 0x30, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x56, 0x31, 0x5f, 0x31, 0x10, - 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x56, 0x31, 0x5f, 0x32, 0x10, 0x03, 0x12, 0x0b, - 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x56, 0x31, 0x5f, 0x33, 0x10, 0x04, 0x42, 0x22, 0x5a, 0x20, 0x69, - 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x4c, 0x53, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x4c, 0x53, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x52, 0x12, 0x6d, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x6a, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, + 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x54, 0x4c, 0x53, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x12, + 0x6d, 0x61, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, + 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x69, 0x70, 0x68, 0x65, + 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x22, 0x6f, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x6d, 0x6f, + 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x41, 0x53, 0x53, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, + 0x48, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x01, 0x12, + 0x0a, 0x0a, 0x06, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x41, + 0x55, 0x54, 0x4f, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x10, + 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x53, 0x54, 0x49, 0x4f, 0x5f, 0x4d, 0x55, 0x54, 0x55, 0x41, + 0x4c, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, + 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x10, 0x05, 0x22, 0x4f, 0x0a, 0x0b, 0x54, 0x4c, 0x53, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x4c, 0x53, 0x5f, 0x41, + 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x56, 0x31, 0x5f, 0x30, + 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x56, 0x31, 0x5f, 0x31, 0x10, 0x02, 0x12, + 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x56, 0x31, 0x5f, 0x32, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, + 0x54, 0x4c, 0x53, 0x56, 0x31, 0x5f, 0x33, 0x10, 0x04, 0x42, 0x22, 0x5a, 0x20, 0x69, 0x73, 0x74, + 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/vendor/istio.io/api/networking/v1alpha3/gateway.proto b/vendor/istio.io/api/networking/v1alpha3/gateway.proto index 27c2a85f..1efb1fe2 100644 --- a/vendor/istio.io/api/networking/v1alpha3/gateway.proto +++ b/vendor/istio.io/api/networking/v1alpha3/gateway.proto @@ -623,11 +623,14 @@ message ServerTLSSettings { // the destination service from the service registry. PASSTHROUGH = 0; - // Secure connections with standard TLS semantics. + // Secure connections with standard TLS semantics. In this mode + // client certificate is not requested during handshake. SIMPLE = 1; // Secure connections to the downstream using mutual TLS by // presenting server certificates for authentication. + // A client certificate will also be requested during the handshake and + // at least one valid certificate is required to be sent by the client. MUTUAL = 2; // Similar to the passthrough mode, except servers with this TLS @@ -650,6 +653,14 @@ message ServerTLSSettings { // for mTLS authentication. When this mode is used, all other // fields in `TLSOptions` should be empty. ISTIO_MUTUAL = 4; + + // Similar to MUTUAL mode, except that the client certificate + // is optional. Unlike SIMPLE mode, A client certificate will + // still be explicitly requested during handshake, but the client + // is not required to send a certificate. If a client certificate + // is presented, it will be validated. ca_certificates should + // be specified for validating client certificates. + OPTIONAL_MUTUAL = 5; }; // Optional: Indicates whether connections to this port should be @@ -665,20 +676,20 @@ message ServerTLSSettings { // holding the server's private key. string private_key = 4; - // REQUIRED if mode is `MUTUAL`. The path to a file containing - // certificate authority certificates to use in verifying a presented + // REQUIRED if mode is `MUTUAL` or `OPTIONAL_MUTUAL`. The path to a file + // containing certificate authority certificates to use in verifying a presented // client side certificate. string ca_certificates = 5; // For gateways running on Kubernetes, the name of the secret that // holds the TLS certs including the CA certificates. Applicable - // only on Kubernetes. The secret (of type `generic`) should - // contain the following keys and values: `key: - // ` and `cert: `. For mutual TLS, - // `cacert: ` can be provided in the same secret or - // a separate secret named `-cacert`. - // Secret of type tls for server certificates along with - // ca.crt key for CA certificates is also supported. + // only on Kubernetes. An Opaque secret should contain the following + // keys and values: `key: ` and `cert: `. + // For mutual TLS, `cacert: ` and `crl: ` + // can be provided in the same secret or a separate secret named `-cacert`. + // A TLS secret for server certificates with an additional `tls.ocsp-staple` key + // for specifying OCSP staple information, `ca.crt` key for CA certificates + // and `ca.crl` for certificate revocation list is also supported. // Only one of server certificates and CA certificate // or credentialName can be specified. string credential_name = 10; @@ -731,6 +742,23 @@ message ServerTLSSettings { TLSProtocol max_protocol_version = 8; // Optional: If specified, only support the specified cipher list. - // Otherwise default to the default cipher list supported by Envoy. + // Otherwise default to the default cipher list supported by Envoy + // as specified [here](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/transport_sockets/tls/v3/common.proto). + // The supported list of ciphers are: + // * `ECDHE-ECDSA-AES128-GCM-SHA256` + // * `ECDHE-RSA-AES128-GCM-SHA256` + // * `ECDHE-ECDSA-AES256-GCM-SHA384` + // * `ECDHE-RSA-AES256-GCM-SHA384` + // * `ECDHE-ECDSA-CHACHA20-POLY1305` + // * `ECDHE-RSA-CHACHA20-POLY1305` + // * `ECDHE-ECDSA-AES128-SHA` + // * `ECDHE-RSA-AES128-SHA` + // * `ECDHE-ECDSA-AES256-SHA` + // * `ECDHE-RSA-AES256-SHA` + // * `AES128-GCM-SHA256` + // * `AES256-GCM-SHA384` + // * `AES128-SHA` + // * `AES256-SHA` + // * `DES-CBC3-SHA` repeated string cipher_suites = 9; } diff --git a/vendor/istio.io/api/networking/v1alpha3/service_entry.gen.json b/vendor/istio.io/api/networking/v1alpha3/service_entry.gen.json index d29ff4ab..db45bc73 100644 --- a/vendor/istio.io/api/networking/v1alpha3/service_entry.gen.json +++ b/vendor/istio.io/api/networking/v1alpha3/service_entry.gen.json @@ -108,7 +108,7 @@ "type": "object", "properties": { "address": { - "description": "Address associated with the network endpoint without the port. Domain names can be used if and only if the resolution is set to DNS, and must be fully-qualified without wildcards. Use the form unix:///absolute/path/to/socket for Unix domain socket endpoints.", + "description": "Address associated with the network endpoint without the port. Domain names can be used if and only if the resolution is set to DNS, and must be fully-qualified without wildcards. Use the form unix:///absolute/path/to/socket for Unix domain socket endpoints. If address is empty, network must be specified.", "type": "string" }, "ports": { @@ -126,7 +126,7 @@ } }, "network": { - "description": "Network enables Istio to group endpoints resident in the same L3 domain/network. All endpoints in the same network are assumed to be directly reachable from one another. When endpoints in different networks cannot reach each other directly, an Istio Gateway can be used to establish connectivity (usually using the `AUTO_PASSTHROUGH` mode in a Gateway Server). This is an advanced configuration used typically for spanning an Istio mesh over multiple clusters.", + "description": "Network enables Istio to group endpoints resident in the same L3 domain/network. All endpoints in the same network are assumed to be directly reachable from one another. When endpoints in different networks cannot reach each other directly, an Istio Gateway can be used to establish connectivity (usually using the `AUTO_PASSTHROUGH` mode in a Gateway Server). This is an advanced configuration used typically for spanning an Istio mesh over multiple clusters. Required if address is not provided.", "type": "string" }, "locality": { diff --git a/vendor/istio.io/api/networking/v1alpha3/service_entry.pb.go b/vendor/istio.io/api/networking/v1alpha3/service_entry.pb.go index afa041bb..075bbf13 100644 --- a/vendor/istio.io/api/networking/v1alpha3/service_entry.pb.go +++ b/vendor/istio.io/api/networking/v1alpha3/service_entry.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: networking/v1alpha3/service_entry.proto @@ -1243,59 +1243,59 @@ var file_networking_v1alpha3_service_entry_proto_rawDesc = []byte{ 0x61, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0x93, 0x05, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x12, - 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x42, 0x0a, - 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, - 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x50, 0x6f, 0x72, 0x74, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, - 0x73, 0x12, 0x4c, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x58, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x73, - 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0a, 0x72, - 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x09, 0x65, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, - 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x12, 0x58, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, - 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x65, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x6f, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, - 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x6f, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x75, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6c, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x22, 0x30, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x45, 0x53, 0x48, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, - 0x4c, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x45, 0x53, 0x48, 0x5f, 0x49, 0x4e, 0x54, 0x45, - 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x22, 0x40, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0a, - 0x0a, 0x06, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x4e, - 0x53, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x4e, 0x53, 0x5f, 0x52, 0x4f, 0x55, 0x4e, 0x44, - 0x5f, 0x52, 0x4f, 0x42, 0x49, 0x4e, 0x10, 0x03, 0x22, 0x88, 0x01, 0x0a, 0x0b, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1c, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x06, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, - 0x6f, 0x72, 0x74, 0x42, 0x22, 0x5a, 0x20, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x6f, 0x22, 0x90, 0x05, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x19, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x1c, + 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x05, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, + 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, + 0x6f, 0x72, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, + 0x4c, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x30, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, + 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x32, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, + 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x58, + 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x74, 0x6f, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x70, + 0x6f, 0x72, 0x74, 0x54, 0x6f, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x22, 0x30, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x11, 0x0a, + 0x0d, 0x4d, 0x45, 0x53, 0x48, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x00, + 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x45, 0x53, 0x48, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, + 0x4c, 0x10, 0x01, 0x22, 0x40, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, + 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x4e, 0x53, 0x10, 0x02, + 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x4e, 0x53, 0x5f, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x52, 0x4f, + 0x42, 0x49, 0x4e, 0x10, 0x03, 0x22, 0x85, 0x01, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x42, 0x22, 0x5a, + 0x20, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/vendor/istio.io/api/networking/v1alpha3/sidecar.gen.json b/vendor/istio.io/api/networking/v1alpha3/sidecar.gen.json index 77d012b0..4d1fd4e4 100644 --- a/vendor/istio.io/api/networking/v1alpha3/sidecar.gen.json +++ b/vendor/istio.io/api/networking/v1alpha3/sidecar.gen.json @@ -149,11 +149,11 @@ "type": "string" }, "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`. The path to a file containing certificate authority certificates to use in verifying a presented client side certificate.", + "description": "REQUIRED if mode is `MUTUAL` or `OPTIONAL_MUTUAL`. The path to a file containing certificate authority certificates to use in verifying a presented client side certificate.", "type": "string" }, "credentialName": { - "description": "For gateways running on Kubernetes, the name of the secret that holds the TLS certs including the CA certificates. Applicable only on Kubernetes. The secret (of type `generic`) should contain the following keys and values: `key: \u003cprivateKey\u003e` and `cert: \u003cserverCert\u003e`. For mutual TLS, `cacert: \u003cCACertificate\u003e` can be provided in the same secret or a separate secret named `\u003csecret\u003e-cacert`. Secret of type tls for server certificates along with ca.crt key for CA certificates is also supported. Only one of server certificates and CA certificate or credentialName can be specified.", + "description": "For gateways running on Kubernetes, the name of the secret that holds the TLS certs including the CA certificates. Applicable only on Kubernetes. An Opaque secret should contain the following keys and values: `key: \u003cprivateKey\u003e` and `cert: \u003cserverCert\u003e`. For mutual TLS, `cacert: \u003cCACertificate\u003e` and `crl: \u003cCertificateRevocationList\u003e` can be provided in the same secret or a separate secret named `\u003csecret\u003e-cacert`. A TLS secret for server certificates with an additional `tls.ocsp-staple` key for specifying OCSP staple information, `ca.crt` key for CA certificates and `ca.crl` for certificate revocation list is also supported. Only one of server certificates and CA certificate or credentialName can be specified.", "type": "string" }, "subjectAltNames": { @@ -184,7 +184,7 @@ "$ref": "#/components/schemas/istio.networking.v1alpha3.ServerTLSSettings.TLSProtocol" }, "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list. Otherwise default to the default cipher list supported by Envoy.", + "description": "Optional: If specified, only support the specified cipher list. Otherwise default to the default cipher list supported by Envoy as specified [here](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/transport_sockets/tls/v3/common.proto). The supported list of ciphers are: * `ECDHE-ECDSA-AES128-GCM-SHA256` * `ECDHE-RSA-AES128-GCM-SHA256` * `ECDHE-ECDSA-AES256-GCM-SHA384` * `ECDHE-RSA-AES256-GCM-SHA384` * `ECDHE-ECDSA-CHACHA20-POLY1305` * `ECDHE-RSA-CHACHA20-POLY1305` * `ECDHE-ECDSA-AES128-SHA` * `ECDHE-RSA-AES128-SHA` * `ECDHE-ECDSA-AES256-SHA` * `ECDHE-RSA-AES256-SHA` * `AES128-GCM-SHA256` * `AES256-GCM-SHA384` * `AES128-SHA` * `AES256-SHA` * `DES-CBC3-SHA`", "type": "array", "items": { "type": "string" @@ -211,7 +211,8 @@ "SIMPLE", "MUTUAL", "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" + "ISTIO_MUTUAL", + "OPTIONAL_MUTUAL" ] }, "istio.networking.v1alpha3.Sidecar": { diff --git a/vendor/istio.io/api/networking/v1alpha3/sidecar.pb.go b/vendor/istio.io/api/networking/v1alpha3/sidecar.pb.go index 6f3e277d..b83d46e7 100644 --- a/vendor/istio.io/api/networking/v1alpha3/sidecar.pb.go +++ b/vendor/istio.io/api/networking/v1alpha3/sidecar.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: networking/v1alpha3/sidecar.proto @@ -1116,72 +1116,72 @@ var file_networking_v1alpha3_sidecar_proto_rawDesc = []byte{ 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x15, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x52, 0x09, 0x6c, 0x6f, - 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x22, 0xc3, 0x02, 0x0a, 0x14, 0x49, 0x73, 0x74, 0x69, + 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x22, 0xc1, 0x02, 0x0a, 0x14, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, - 0x12, 0x39, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x12, 0x38, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x42, - 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x62, - 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x69, 0x6e, 0x64, 0x12, - 0x49, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x33, 0x2e, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x63, - 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2f, 0x0a, 0x10, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x03, 0x74, - 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x4c, 0x53, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x4a, 0x04, 0x08, 0x05, 0x10, - 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x52, 0x14, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, - 0x73, 0x74, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6c, 0x73, 0x22, 0xe7, 0x01, - 0x0a, 0x13, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, - 0x50, 0x6f, 0x72, 0x74, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x69, 0x6e, 0x64, 0x12, 0x49, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x63, 0x61, - 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x05, 0x68, 0x6f, 0x73, - 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x05, - 0x68, 0x6f, 0x73, 0x74, 0x73, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, - 0x07, 0x52, 0x14, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x5f, 0x74, 0x6c, 0x73, 0x22, 0xa4, 0x01, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x55, 0x0a, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x69, - 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x06, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd7, - 0x01, 0x0a, 0x15, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, - 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x49, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, + 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2e, 0x0a, 0x10, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x03, 0x74, 0x6c, 0x73, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x33, 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, - 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, - 0x6f, 0x64, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x61, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, + 0x04, 0x08, 0x06, 0x10, 0x07, 0x52, 0x14, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, + 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6c, 0x73, 0x22, 0xe6, 0x01, 0x0a, 0x13, + 0x49, 0x73, 0x74, 0x69, 0x6f, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x50, 0x6f, + 0x72, 0x74, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, 0x6e, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x69, 0x6e, 0x64, 0x12, 0x49, 0x0a, 0x0c, + 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, + 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x63, 0x61, 0x70, 0x74, + 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x68, 0x6f, 0x73, + 0x74, 0x73, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x52, 0x14, + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x5f, 0x74, 0x6c, 0x73, 0x22, 0xa3, 0x01, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x54, 0x0a, 0x06, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0b, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x28, - 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, - 0x52, 0x59, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x4c, 0x4c, - 0x4f, 0x57, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x01, 0x2a, 0x32, 0x0a, 0x0b, 0x43, 0x61, 0x70, 0x74, - 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, - 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x50, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, - 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x42, 0x22, 0x5a, 0x20, - 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, + 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd7, 0x01, 0x0a, 0x15, 0x4f, + 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x12, 0x49, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4f, + 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, + 0x49, 0x0a, 0x0c, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x33, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x65, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x28, 0x0a, 0x04, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, 0x59, 0x5f, 0x4f, + 0x4e, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x41, + 0x4e, 0x59, 0x10, 0x01, 0x2a, 0x32, 0x0a, 0x0b, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, + 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x50, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x01, 0x12, 0x08, + 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x42, 0x22, 0x5a, 0x20, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/vendor/istio.io/api/networking/v1alpha3/virtual_service.gen.json b/vendor/istio.io/api/networking/v1alpha3/virtual_service.gen.json index e67a537e..a3ae5a97 100644 --- a/vendor/istio.io/api/networking/v1alpha3/virtual_service.gen.json +++ b/vendor/istio.io/api/networking/v1alpha3/virtual_service.gen.json @@ -391,6 +391,18 @@ } } }, + "istio.networking.v1alpha3.HTTPMirrorPolicy": { + "description": "Hide this from doc until implemented.", + "type": "object", + "properties": { + "destination": { + "$ref": "#/components/schemas/istio.networking.v1alpha3.Destination" + }, + "percentage": { + "$ref": "#/components/schemas/istio.networking.v1alpha3.Percent" + } + } + }, "istio.networking.v1alpha3.HTTPRedirect": { "description": "HTTPRedirect can be used to send a 301 redirect response to the caller, where the Authority/Host and the URI in the response can be swapped with the specified values. For example, the following rule redirects requests for /v1/getProductRatings API on the ratings service to /v1/bookRatings provided by the bookratings service.", "type": "object", @@ -505,6 +517,9 @@ "authority": { "description": "rewrite the Authority/Host header with this value.", "type": "string" + }, + "uriRegexRewrite": { + "$ref": "#/components/schemas/istio.networking.v1alpha3.RegexRewrite" } } }, @@ -555,6 +570,13 @@ "mirror": { "$ref": "#/components/schemas/istio.networking.v1alpha3.Destination" }, + "mirrors": { + "description": "Hide this from doc until implemented.", + "type": "array", + "items": { + "$ref": "#/components/schemas/istio.networking.v1alpha3.HTTPMirrorPolicy" + } + }, "mirrorPercent": { "description": "Percentage of the traffic to be mirrored by the `mirror` field. Use of integer `mirror_percent` value is deprecated. Use the double `mirror_percentage` field instead $hide_from_docs", "type": "integer", @@ -687,6 +709,19 @@ } } }, + "istio.networking.v1alpha3.RegexRewrite": { + "type": "object", + "properties": { + "match": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + }, + "rewrite": { + "description": "The string that should replace into matching portions of original URI. Capture groups in the pattern can be referenced in the new URI. Examples: Example 1: rewrite with capture groups Path pattern \"/service/update/v1/api\" with match \"^/service/([^/]+)(/.*)$\" and rewrite string of \"/customprefix/\\2/\\1\" would transform into \"/customprefix/v1/api/update\".", + "type": "string" + } + } + }, "istio.networking.v1alpha3.RouteDestination": { "description": "L4 routing rule weighted destination.", "type": "object", @@ -804,7 +839,7 @@ "type": "object", "properties": { "sniHosts": { - "description": "SNI (server name indicator) to match on. Wildcard prefixes can be used in the SNI value, e.g., *.com will match foo.example.com as well as example.com. An SNI value must be a subset (i.e., fall within the domain) of the corresponding virtual serivce's hosts.", + "description": "SNI (server name indicator) to match on. Wildcard prefixes can be used in the SNI value, e.g., *.com will match foo.example.com as well as example.com. An SNI value must be a subset (i.e., fall within the domain) of the corresponding virtual service's hosts.", "type": "array", "items": { "type": "string" @@ -880,7 +915,7 @@ } }, "http": { - "description": "An ordered list of route rules for HTTP traffic. HTTP routes will be applied to platform service ports named 'http-*'/'http2-*'/'grpc-*', gateway ports with protocol HTTP/HTTP2/GRPC/ TLS-terminated-HTTPS and service entry ports using HTTP/HTTP2/GRPC protocols. The first rule matching an incoming request is used.", + "description": "An ordered list of route rules for HTTP traffic. HTTP routes will be applied to platform service ports using HTTP/HTTP2/GRPC protocols, gateway ports with protocol HTTP/HTTP2/GRPC/TLS-terminated-HTTPS and service entry ports using HTTP/HTTP2/GRPC protocols. The first rule matching an incoming request is used.", "type": "array", "items": { "$ref": "#/components/schemas/istio.networking.v1alpha3.HTTPRoute" diff --git a/vendor/istio.io/api/networking/v1alpha3/virtual_service.pb.go b/vendor/istio.io/api/networking/v1alpha3/virtual_service.pb.go index 5ba69fe9..ab1a4202 100644 --- a/vendor/istio.io/api/networking/v1alpha3/virtual_service.pb.go +++ b/vendor/istio.io/api/networking/v1alpha3/virtual_service.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: networking/v1alpha3/virtual_service.proto @@ -317,8 +317,8 @@ type VirtualService struct { // gateways and sidecars, specify `mesh` as one of the gateway names. Gateways []string `protobuf:"bytes,2,rep,name=gateways,proto3" json:"gateways,omitempty"` // An ordered list of route rules for HTTP traffic. HTTP routes will be - // applied to platform service ports named 'http-*'/'http2-*'/'grpc-*', gateway - // ports with protocol HTTP/HTTP2/GRPC/ TLS-terminated-HTTPS and service + // applied to platform service ports using HTTP/HTTP2/GRPC protocols, gateway + // ports with protocol HTTP/HTTP2/GRPC/TLS-terminated-HTTPS and service // entry ports using HTTP/HTTP2/GRPC protocols. The first rule matching // an incoming request is used. Http []*HTTPRoute `protobuf:"bytes,3,rep,name=http,proto3" json:"http,omitempty"` @@ -852,12 +852,22 @@ type HTTPRoute struct { // original destination. Statistics will be generated for the mirrored // destination. Mirror *Destination `protobuf:"bytes,9,opt,name=mirror,proto3" json:"mirror,omitempty"` + // $hide_from_docs + // Hide this from doc until implemented. + // + // Specifies the destinations to mirror HTTP traffic in addition + // to the original destination. Mirrored traffic is on a + // best effort basis where the sidecar/gateway will not wait for the + // mirrored destinations to respond before returning the response from the + // original destination. Statistics will be generated for the mirrored + // destination. + Mirrors []*HTTPMirrorPolicy `protobuf:"bytes,22,rep,name=mirrors,proto3" json:"mirrors,omitempty"` // Percentage of the traffic to be mirrored by the `mirror` field. // Use of integer `mirror_percent` value is deprecated. Use the // double `mirror_percentage` field instead // $hide_from_docs // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in networking/v1alpha3/virtual_service.proto. MirrorPercent *wrappers.UInt32Value `protobuf:"bytes,18,opt,name=mirror_percent,json=mirrorPercent,proto3" json:"mirror_percent,omitempty"` // Percentage of the traffic to be mirrored by the `mirror` field. // If this field is absent, all the traffic (100%) will be mirrored. @@ -980,7 +990,14 @@ func (x *HTTPRoute) GetMirror() *Destination { return nil } -// Deprecated: Do not use. +func (x *HTTPRoute) GetMirrors() []*HTTPMirrorPolicy { + if x != nil { + return x.Mirrors + } + return nil +} + +// Deprecated: Marked as deprecated in networking/v1alpha3/virtual_service.proto. func (x *HTTPRoute) GetMirrorPercent() *wrappers.UInt32Value { if x != nil { return x.MirrorPercent @@ -1646,6 +1663,14 @@ type HTTPMatchRequest struct { // - `regex: "value"` for RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax). // // If the value is empty and only the name of header is specified, presence of the header is checked. + // To provide an empty value, use `{}`, for example: + // + // ``` + // - match: + // - headers: + // myheader: {} + // + // ``` // **Note:** The keys `uri`, `scheme`, `method`, and `authority` will be ignored. Headers map[string]*StringMatch `protobuf:"bytes,5,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Specifies the ports on the host that is being addressed. Many services @@ -1671,11 +1696,12 @@ type HTTPMatchRequest struct { // - For a query parameter like "?key", the map key would be "key" and the // string match could be defined as `exact: ""`. // + // - For a query parameter like "?key=abc" or "?key=abx", the map key would be "key" and the + // string match could be defined as `prefix: "ab"`. + // // - For a query parameter like "?key=123", the map key would be "key" and the // string match could be defined as `regex: "\d+$"`. Note that this // configuration will only match values like "123" but not "a123" or "123a". - // - // **Note:** `prefix` matching is currently not supported. QueryParams map[string]*StringMatch `protobuf:"bytes,9,rep,name=query_params,json=queryParams,proto3" json:"query_params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Flag to specify whether the URI matching should be case-insensitive. // @@ -2236,7 +2262,7 @@ type TLSMatchAttributes struct { // SNI (server name indicator) to match on. Wildcard prefixes // can be used in the SNI value, e.g., *.com will match foo.example.com // as well as example.com. An SNI value must be a subset (i.e., fall - // within the domain) of the corresponding virtual serivce's hosts. + // within the domain) of the corresponding virtual service's hosts. SniHosts []string `protobuf:"bytes,1,rep,name=sni_hosts,json=sniHosts,proto3" json:"sni_hosts,omitempty"` // IPv4 or IPv6 ip addresses of destination with optional subnet. E.g., // a.b.c.d/xx form or just a.b.c.d. @@ -2657,7 +2683,7 @@ func (*HTTPRedirect_DerivePort) isHTTPRedirect_RedirectPort() {} // headers: // response: // set: -// content-type: "appliation/json" +// content-type: "application/json" // ... // // ``` @@ -2903,6 +2929,8 @@ type HTTPRewrite struct { Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"` // rewrite the Authority/Host header with this value. Authority string `protobuf:"bytes,2,opt,name=authority,proto3" json:"authority,omitempty"` + // rewrite the path portion of the URI with the specified regex. + UriRegexRewrite *RegexRewrite `protobuf:"bytes,3,opt,name=uri_regex_rewrite,json=uriRegexRewrite,proto3" json:"uri_regex_rewrite,omitempty"` } func (x *HTTPRewrite) Reset() { @@ -2951,6 +2979,80 @@ func (x *HTTPRewrite) GetAuthority() string { return "" } +func (x *HTTPRewrite) GetUriRegexRewrite() *RegexRewrite { + if x != nil { + return x.UriRegexRewrite + } + return nil +} + +type RegexRewrite struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax). + Match string `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"` + // The string that should replace into matching portions of original URI. + // Capture groups in the pattern can be referenced in the new URI. + // Examples: + // + // Example 1: rewrite with capture groups + // Path pattern "/service/update/v1/api" with match "^/service/([^/]+)(/.*)$" and + // rewrite string of "/customprefix/\2/\1" would transform into "/customprefix/v1/api/update". + // + // Example 2: case insensitive rewrite + // Path pattern "/aaa/XxX/bbb" with match "(?i)/xxx/" and a rewrite string of /yyy/ would do a + // case-insensitive match and transform the path to "/aaa/yyy/bbb". + Rewrite string `protobuf:"bytes,2,opt,name=rewrite,proto3" json:"rewrite,omitempty"` +} + +func (x *RegexRewrite) Reset() { + *x = RegexRewrite{} + if protoimpl.UnsafeEnabled { + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RegexRewrite) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegexRewrite) ProtoMessage() {} + +func (x *RegexRewrite) ProtoReflect() protoreflect.Message { + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RegexRewrite.ProtoReflect.Descriptor instead. +func (*RegexRewrite) Descriptor() ([]byte, []int) { + return file_networking_v1alpha3_virtual_service_proto_rawDescGZIP(), []int{16} +} + +func (x *RegexRewrite) GetMatch() string { + if x != nil { + return x.Match + } + return "" +} + +func (x *RegexRewrite) GetRewrite() string { + if x != nil { + return x.Rewrite + } + return "" +} + // Describes how to match a given string in HTTP headers. Match is // case-sensitive. type StringMatch struct { @@ -2969,7 +3071,7 @@ type StringMatch struct { func (x *StringMatch) Reset() { *x = StringMatch{} if protoimpl.UnsafeEnabled { - mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[16] + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2982,7 +3084,7 @@ func (x *StringMatch) String() string { func (*StringMatch) ProtoMessage() {} func (x *StringMatch) ProtoReflect() protoreflect.Message { - mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[16] + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2995,7 +3097,7 @@ func (x *StringMatch) ProtoReflect() protoreflect.Message { // Deprecated: Use StringMatch.ProtoReflect.Descriptor instead. func (*StringMatch) Descriptor() ([]byte, []int) { - return file_networking_v1alpha3_virtual_service_proto_rawDescGZIP(), []int{16} + return file_networking_v1alpha3_virtual_service_proto_rawDescGZIP(), []int{17} } func (m *StringMatch) GetMatchType() isStringMatch_MatchType { @@ -3138,7 +3240,7 @@ type HTTPRetry struct { func (x *HTTPRetry) Reset() { *x = HTTPRetry{} if protoimpl.UnsafeEnabled { - mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[17] + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3151,7 +3253,7 @@ func (x *HTTPRetry) String() string { func (*HTTPRetry) ProtoMessage() {} func (x *HTTPRetry) ProtoReflect() protoreflect.Message { - mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[17] + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3164,7 +3266,7 @@ func (x *HTTPRetry) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPRetry.ProtoReflect.Descriptor instead. func (*HTTPRetry) Descriptor() ([]byte, []int) { - return file_networking_v1alpha3_virtual_service_proto_rawDescGZIP(), []int{17} + return file_networking_v1alpha3_virtual_service_proto_rawDescGZIP(), []int{18} } func (x *HTTPRetry) GetAttempts() int32 { @@ -3276,7 +3378,7 @@ type CorsPolicy struct { // header. Wildcard * will allow all origins. // $hide_from_docs // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in networking/v1alpha3/virtual_service.proto. AllowOrigin []string `protobuf:"bytes,1,rep,name=allow_origin,json=allowOrigin,proto3" json:"allow_origin,omitempty"` // String patterns that match allowed origins. // An origin is allowed if any of the string matchers match. @@ -3303,7 +3405,7 @@ type CorsPolicy struct { func (x *CorsPolicy) Reset() { *x = CorsPolicy{} if protoimpl.UnsafeEnabled { - mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[18] + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3316,7 +3418,7 @@ func (x *CorsPolicy) String() string { func (*CorsPolicy) ProtoMessage() {} func (x *CorsPolicy) ProtoReflect() protoreflect.Message { - mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[18] + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3329,10 +3431,10 @@ func (x *CorsPolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use CorsPolicy.ProtoReflect.Descriptor instead. func (*CorsPolicy) Descriptor() ([]byte, []int) { - return file_networking_v1alpha3_virtual_service_proto_rawDescGZIP(), []int{18} + return file_networking_v1alpha3_virtual_service_proto_rawDescGZIP(), []int{19} } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in networking/v1alpha3/virtual_service.proto. func (x *CorsPolicy) GetAllowOrigin() []string { if x != nil { return x.AllowOrigin @@ -3406,7 +3508,7 @@ type HTTPFaultInjection struct { func (x *HTTPFaultInjection) Reset() { *x = HTTPFaultInjection{} if protoimpl.UnsafeEnabled { - mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[19] + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3419,7 +3521,7 @@ func (x *HTTPFaultInjection) String() string { func (*HTTPFaultInjection) ProtoMessage() {} func (x *HTTPFaultInjection) ProtoReflect() protoreflect.Message { - mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[19] + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3432,7 +3534,7 @@ func (x *HTTPFaultInjection) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPFaultInjection.ProtoReflect.Descriptor instead. func (*HTTPFaultInjection) Descriptor() ([]byte, []int) { - return file_networking_v1alpha3_virtual_service_proto_rawDescGZIP(), []int{19} + return file_networking_v1alpha3_virtual_service_proto_rawDescGZIP(), []int{20} } func (x *HTTPFaultInjection) GetDelay() *HTTPFaultInjection_Delay { @@ -3449,6 +3551,80 @@ func (x *HTTPFaultInjection) GetAbort() *HTTPFaultInjection_Abort { return nil } +// $hide_from_docs +// Hide this from doc until implemented. +// +// HTTPMirrorPolicy can be used to specify the destinations to mirror HTTP traffic in addition +// to the original destination. Mirrored traffic is on a +// best effort basis where the sidecar/gateway will not wait for the +// mirrored destinations to respond before returning the response from the +// original destination. Statistics will be generated for the mirrored +// destination. +type HTTPMirrorPolicy struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // $hide_from_docs + // Hide this from doc until implemented. + // + // Destination specifies the target of the mirror operation. + Destination *Destination `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"` + // $hide_from_docs + // Hide this from doc until implemented. + // + // Percentage of the traffic to be mirrored by the `destination` field. + // If this field is absent, all the traffic (100%) will be mirrored. + // Max value is 100. + Percentage *Percent `protobuf:"bytes,2,opt,name=percentage,proto3" json:"percentage,omitempty"` +} + +func (x *HTTPMirrorPolicy) Reset() { + *x = HTTPMirrorPolicy{} + if protoimpl.UnsafeEnabled { + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HTTPMirrorPolicy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HTTPMirrorPolicy) ProtoMessage() {} + +func (x *HTTPMirrorPolicy) ProtoReflect() protoreflect.Message { + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HTTPMirrorPolicy.ProtoReflect.Descriptor instead. +func (*HTTPMirrorPolicy) Descriptor() ([]byte, []int) { + return file_networking_v1alpha3_virtual_service_proto_rawDescGZIP(), []int{21} +} + +func (x *HTTPMirrorPolicy) GetDestination() *Destination { + if x != nil { + return x.Destination + } + return nil +} + +func (x *HTTPMirrorPolicy) GetPercentage() *Percent { + if x != nil { + return x.Percentage + } + return nil +} + // PortSelector specifies the number of a port to be used for // matching or selection for final routing. type PortSelector struct { @@ -3463,7 +3639,7 @@ type PortSelector struct { func (x *PortSelector) Reset() { *x = PortSelector{} if protoimpl.UnsafeEnabled { - mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[20] + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3476,7 +3652,7 @@ func (x *PortSelector) String() string { func (*PortSelector) ProtoMessage() {} func (x *PortSelector) ProtoReflect() protoreflect.Message { - mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[20] + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3489,7 +3665,7 @@ func (x *PortSelector) ProtoReflect() protoreflect.Message { // Deprecated: Use PortSelector.ProtoReflect.Descriptor instead. func (*PortSelector) Descriptor() ([]byte, []int) { - return file_networking_v1alpha3_virtual_service_proto_rawDescGZIP(), []int{20} + return file_networking_v1alpha3_virtual_service_proto_rawDescGZIP(), []int{22} } func (x *PortSelector) GetNumber() uint32 { @@ -3511,7 +3687,7 @@ type Percent struct { func (x *Percent) Reset() { *x = Percent{} if protoimpl.UnsafeEnabled { - mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[21] + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3524,7 +3700,7 @@ func (x *Percent) String() string { func (*Percent) ProtoMessage() {} func (x *Percent) ProtoReflect() protoreflect.Message { - mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[21] + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3537,7 +3713,7 @@ func (x *Percent) ProtoReflect() protoreflect.Message { // Deprecated: Use Percent.ProtoReflect.Descriptor instead. func (*Percent) Descriptor() ([]byte, []int) { - return file_networking_v1alpha3_virtual_service_proto_rawDescGZIP(), []int{21} + return file_networking_v1alpha3_virtual_service_proto_rawDescGZIP(), []int{23} } func (x *Percent) GetValue() float64 { @@ -3565,7 +3741,7 @@ type Headers_HeaderOperations struct { func (x *Headers_HeaderOperations) Reset() { *x = Headers_HeaderOperations{} if protoimpl.UnsafeEnabled { - mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[22] + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3578,7 +3754,7 @@ func (x *Headers_HeaderOperations) String() string { func (*Headers_HeaderOperations) ProtoMessage() {} func (x *Headers_HeaderOperations) ProtoReflect() protoreflect.Message { - mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[22] + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3692,7 +3868,7 @@ type HTTPFaultInjection_Delay struct { // Use of integer `percent` value is deprecated. Use the double `percentage` // field instead. // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in networking/v1alpha3/virtual_service.proto. Percent int32 `protobuf:"varint,1,opt,name=percent,proto3" json:"percent,omitempty"` // Types that are assignable to HttpDelayType: // @@ -3707,7 +3883,7 @@ type HTTPFaultInjection_Delay struct { func (x *HTTPFaultInjection_Delay) Reset() { *x = HTTPFaultInjection_Delay{} if protoimpl.UnsafeEnabled { - mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[31] + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3720,7 +3896,7 @@ func (x *HTTPFaultInjection_Delay) String() string { func (*HTTPFaultInjection_Delay) ProtoMessage() {} func (x *HTTPFaultInjection_Delay) ProtoReflect() protoreflect.Message { - mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[31] + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3733,10 +3909,10 @@ func (x *HTTPFaultInjection_Delay) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPFaultInjection_Delay.ProtoReflect.Descriptor instead. func (*HTTPFaultInjection_Delay) Descriptor() ([]byte, []int) { - return file_networking_v1alpha3_virtual_service_proto_rawDescGZIP(), []int{19, 0} + return file_networking_v1alpha3_virtual_service_proto_rawDescGZIP(), []int{20, 0} } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in networking/v1alpha3/virtual_service.proto. func (x *HTTPFaultInjection_Delay) GetPercent() int32 { if x != nil { return x.Percent @@ -3872,7 +4048,7 @@ type HTTPFaultInjection_Abort struct { func (x *HTTPFaultInjection_Abort) Reset() { *x = HTTPFaultInjection_Abort{} if protoimpl.UnsafeEnabled { - mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[32] + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3885,7 +4061,7 @@ func (x *HTTPFaultInjection_Abort) String() string { func (*HTTPFaultInjection_Abort) ProtoMessage() {} func (x *HTTPFaultInjection_Abort) ProtoReflect() protoreflect.Message { - mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[32] + mi := &file_networking_v1alpha3_virtual_service_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3898,7 +4074,7 @@ func (x *HTTPFaultInjection_Abort) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPFaultInjection_Abort.ProtoReflect.Descriptor instead. func (*HTTPFaultInjection_Abort) Descriptor() ([]byte, []int) { - return file_networking_v1alpha3_virtual_service_proto_rawDescGZIP(), []int{19, 1} + return file_networking_v1alpha3_virtual_service_proto_rawDescGZIP(), []int{20, 1} } func (m *HTTPFaultInjection_Abort) GetErrorType() isHTTPFaultInjection_Abort_ErrorType { @@ -3994,418 +4170,442 @@ var file_networking_v1alpha3_virtual_service_proto_rawDesc = []byte{ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x54, 0x43, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x03, 0x74, 0x63, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x54, - 0x6f, 0x22, 0x7c, 0x0a, 0x0b, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x18, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, - 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, - 0x62, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x73, - 0x65, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x27, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x50, 0x6f, 0x72, - 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, - 0xf4, 0x08, 0x0a, 0x09, 0x48, 0x54, 0x54, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x41, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, - 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x05, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x12, 0x45, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, - 0x48, 0x54, 0x54, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x12, 0x56, 0x0a, 0x0f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x69, 0x73, 0x74, 0x69, - 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x64, 0x65, 0x6c, 0x65, - 0x67, 0x61, 0x74, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x73, 0x74, - 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, - 0x08, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x07, 0x72, 0x65, 0x77, - 0x72, 0x69, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, - 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x77, 0x72, 0x69, - 0x74, 0x65, 0x52, 0x07, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x12, 0x3e, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, - 0x54, 0x50, 0x52, 0x65, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x12, 0x43, 0x0a, 0x05, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, + 0x6f, 0x22, 0x7b, 0x0a, 0x0b, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x17, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, + 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, + 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x50, 0x6f, 0x72, 0x74, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xbb, + 0x09, 0x0a, 0x09, 0x48, 0x54, 0x54, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x41, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, - 0x46, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x33, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6d, - 0x69, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x47, 0x0a, 0x0e, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, - 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, - 0x0d, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x4f, - 0x0a, 0x11, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, - 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x05, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x12, 0x45, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, + 0x54, 0x54, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x72, 0x65, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, + 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, + 0x56, 0x0a, 0x0f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x08, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x10, 0x6d, - 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, - 0x46, 0x0a, 0x0b, 0x63, 0x6f, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, + 0x65, 0x52, 0x07, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, + 0x3e, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, + 0x50, 0x52, 0x65, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, + 0x43, 0x0a, 0x05, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, + 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x46, + 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, - 0x2e, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0a, 0x63, 0x6f, 0x72, - 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3c, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6d, 0x69, + 0x72, 0x72, 0x6f, 0x72, 0x12, 0x45, 0x0a, 0x07, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, + 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x52, 0x07, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x47, 0x0a, 0x0e, 0x6d, + 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x65, 0x72, + 0x63, 0x65, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x11, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x70, + 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x50, 0x65, 0x72, 0x63, + 0x65, 0x6e, 0x74, 0x52, 0x10, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, + 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x63, 0x6f, 0x72, 0x73, 0x5f, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, + 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x52, 0x0a, 0x63, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3c, 0x0a, + 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x05, 0x10, + 0x06, 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x10, 0x52, 0x11, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, + 0x65, 0x74, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x65, + 0x6e, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x17, 0x72, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x52, 0x17, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x16, 0x72, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x52, 0x16, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x3c, 0x0a, 0x08, + 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xe6, 0x03, 0x0a, 0x07, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x08, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0xba, 0x02, 0x0a, 0x10, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4e, 0x0a, 0x03, 0x73, + 0x65, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x07, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x0b, 0x10, - 0x10, 0x52, 0x11, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x75, 0x70, 0x67, - 0x72, 0x61, 0x64, 0x65, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x52, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x17, 0x61, - 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x16, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x16, - 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x3c, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, - 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x22, 0xe6, 0x03, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x12, 0x4d, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x4f, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x1a, 0xba, 0x02, 0x0a, 0x10, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4e, 0x0a, 0x03, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x03, 0x73, 0x65, 0x74, 0x12, 0x4e, 0x0a, 0x03, 0x61, 0x64, 0x64, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x03, 0x61, 0x64, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x1a, 0x36, 0x0a, - 0x08, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x36, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x98, 0x01, - 0x0a, 0x08, 0x54, 0x4c, 0x53, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x49, 0x0a, 0x05, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x53, 0x65, + 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x73, 0x65, 0x74, 0x12, 0x4e, 0x0a, 0x03, 0x61, + 0x64, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, + 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x61, 0x64, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x1a, 0x36, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x36, 0x0a, 0x08, 0x41, + 0x64, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x97, 0x01, 0x0a, 0x08, 0x54, 0x4c, 0x53, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x12, 0x48, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x54, 0x4c, 0x53, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x41, 0x0a, 0x05, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x54, 0x4c, 0x53, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x05, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x41, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x22, 0x91, 0x01, + 0x0a, 0x08, 0x54, 0x43, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x05, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x34, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x41, + 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, + 0x65, 0x22, 0xc5, 0x09, 0x0a, 0x10, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x03, 0x75, 0x72, + 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x33, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x03, 0x75, 0x72, 0x69, 0x12, 0x3e, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, - 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x08, 0x54, 0x43, 0x50, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x06, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, - 0x2e, 0x4c, 0x34, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x41, 0x0a, 0x05, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x06, 0x6d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x12, 0x44, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x33, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x52, 0x0a, 0x07, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x69, 0x73, + 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, + 0x72, 0x74, 0x12, 0x62, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x73, 0x12, 0x5f, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x22, 0xc5, 0x09, 0x0a, - 0x10, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, - 0x3e, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, - 0x3e, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, - 0x44, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x52, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x62, 0x0a, - 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, + 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x75, 0x72, + 0x69, 0x5f, 0x63, 0x61, 0x73, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x67, + 0x6e, 0x6f, 0x72, 0x65, 0x55, 0x72, 0x69, 0x43, 0x61, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x0f, 0x77, + 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x0c, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x5f, 0x0a, - 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x09, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, - 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x26, - 0x0a, 0x0f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x5f, 0x63, 0x61, 0x73, - 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x55, - 0x72, 0x69, 0x43, 0x61, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x3f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x57, 0x69, 0x74, - 0x68, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0e, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x12, 0x29, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, - 0x74, 0x61, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x1a, 0x62, 0x0a, 0x0c, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x66, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x1a, 0x62, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x66, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, + 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x69, + 0x0a, 0x13, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x69, 0x0a, 0x13, 0x57, 0x69, 0x74, - 0x68, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa4, 0x02, 0x0a, 0x14, 0x48, 0x54, 0x54, 0x50, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x44, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, - 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x77, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x3c, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x07, 0x52, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x52, 0x17, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x16, 0x72, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x52, 0x16, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x7a, 0x0a, 0x10, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x4e, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, - 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xe2, 0x41, - 0x01, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xea, 0x02, 0x0a, 0x11, 0x4c, 0x34, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2f, 0x0a, - 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x62, - 0x6e, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x12, - 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, - 0x72, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x75, 0x62, - 0x6e, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x12, 0x63, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, - 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, - 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x34, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0xff, 0x02, 0x0a, 0x12, 0x54, 0x4c, 0x53, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x09, 0x73, - 0x6e, 0x69, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x04, - 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x73, 0x6e, 0x69, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x2f, - 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x75, - 0x62, 0x6e, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, - 0x6f, 0x72, 0x74, 0x12, 0x64, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x69, 0x73, 0x74, - 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x54, 0x4c, 0x53, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, - 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x22, 0xcf, 0x02, 0x0a, 0x0c, 0x48, 0x54, 0x54, 0x50, 0x52, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x60, 0x0a, - 0x0b, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, - 0x54, 0x54, 0x50, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, - 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x49, 0x0a, 0x15, - 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x50, 0x52, - 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, - 0x12, 0x15, 0x0a, 0x11, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, - 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x72, 0x65, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x6b, 0x0a, 0x12, 0x48, 0x54, 0x54, 0x50, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x04, - 0xe2, 0x41, 0x01, 0x02, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x37, 0x0a, 0x04, - 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x73, 0x74, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa3, 0x02, 0x0a, 0x14, 0x48, 0x54, + 0x54, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x33, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x3c, 0x0a, 0x07, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x42, 0x6f, 0x64, 0x79, 0x52, - 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x49, 0x0a, 0x08, 0x48, 0x54, 0x54, 0x50, 0x42, 0x6f, 0x64, - 0x79, 0x12, 0x18, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x05, 0x62, - 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x05, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x22, 0x3d, 0x0a, 0x0b, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, - 0x69, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, - 0x65, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x16, - 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, - 0x12, 0x16, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdf, 0x01, 0x0a, 0x09, 0x48, 0x54, 0x54, 0x50, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x08, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x61, 0x74, - 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x5f, 0x74, 0x72, - 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x54, - 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x74, - 0x72, 0x79, 0x5f, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x74, - 0x72, 0x79, 0x4f, 0x6e, 0x12, 0x52, 0x0a, 0x17, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x15, 0x72, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4c, 0x6f, - 0x63, 0x61, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0xee, 0x02, 0x0a, 0x0a, 0x43, 0x6f, 0x72, - 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x25, 0x0a, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, - 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, - 0x01, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x4b, - 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x33, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x0c, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, - 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x5f, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x65, - 0x78, 0x70, 0x6f, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x32, 0x0a, 0x07, - 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x41, 0x67, 0x65, - 0x12, 0x47, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x07, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x07, 0x52, 0x17, 0x72, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x17, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, + 0x16, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x16, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, + 0x79, 0x0a, 0x10, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x33, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xea, 0x02, 0x0a, 0x11, 0x4c, + 0x34, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x64, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, + 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x12, 0x63, 0x0a, 0x0d, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x34, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfe, 0x02, 0x0a, 0x12, 0x54, 0x4c, 0x53, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x20, + 0x0a, 0x09, 0x73, 0x6e, 0x69, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x73, 0x6e, 0x69, 0x48, 0x6f, 0x73, 0x74, 0x73, + 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x64, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, + 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x64, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x69, + 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x54, 0x4c, 0x53, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x22, 0xcf, 0x02, 0x0a, 0x0c, 0x48, 0x54, 0x54, + 0x50, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x1c, 0x0a, 0x09, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x04, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, + 0x60, 0x0a, 0x0b, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, + 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x50, 0x6f, 0x72, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0c, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x49, + 0x0a, 0x15, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x52, 0x4f, 0x4d, 0x5f, + 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, + 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, + 0x53, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x72, 0x65, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x6a, 0x0a, 0x12, 0x48, 0x54, + 0x54, 0x50, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x37, 0x0a, + 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x73, + 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x42, 0x6f, 0x64, 0x79, + 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x49, 0x0a, 0x08, 0x48, 0x54, 0x54, 0x50, 0x42, 0x6f, + 0x64, 0x79, 0x12, 0x18, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x05, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x05, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x22, 0x92, 0x01, 0x0a, 0x0b, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x75, 0x72, 0x69, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x12, 0x53, 0x0a, 0x11, 0x75, 0x72, 0x69, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x72, + 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, + 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x52, 0x65, + 0x77, 0x72, 0x69, 0x74, 0x65, 0x52, 0x0f, 0x75, 0x72, 0x69, 0x52, 0x65, 0x67, 0x65, 0x78, 0x52, + 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x22, 0x3e, 0x0a, 0x0c, 0x52, 0x65, 0x67, 0x65, 0x78, 0x52, + 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, + 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, + 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x22, 0x65, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x12, 0x18, 0x0a, + 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x16, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x42, + 0x0c, 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xde, 0x01, + 0x0a, 0x09, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x74, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x08, 0x61, + 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x08, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0f, + 0x70, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0d, 0x70, 0x65, 0x72, 0x54, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, + 0x19, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x12, 0x52, 0x0a, 0x17, 0x72, 0x65, + 0x74, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, - 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x91, 0x05, 0x0a, 0x12, 0x48, 0x54, - 0x54, 0x50, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x49, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, - 0x46, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, - 0x65, 0x6c, 0x61, 0x79, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x49, 0x0a, 0x05, 0x61, - 0x62, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, - 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x46, 0x61, 0x75, 0x6c, 0x74, - 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, - 0x05, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x1a, 0x8a, 0x02, 0x0a, 0x05, 0x44, 0x65, 0x6c, 0x61, 0x79, - 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x42, - 0x0a, 0x0b, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x72, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0xee, + 0x02, 0x0a, 0x0a, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x25, 0x0a, + 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, + 0x69, 0x67, 0x69, 0x6e, 0x12, 0x4b, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, + 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, + 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, + 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, + 0x78, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, - 0xe2, 0x41, 0x01, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x66, 0x69, 0x78, 0x65, 0x64, 0x44, 0x65, 0x6c, - 0x61, 0x79, 0x12, 0x48, 0x0a, 0x11, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x65, 0x78, 0x70, 0x6f, - 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x42, 0x0a, 0x0a, - 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x50, 0x65, 0x72, - 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, - 0x42, 0x11, 0x0a, 0x0f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x1a, 0xd7, 0x01, 0x0a, 0x05, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x27, 0x0a, - 0x0b, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x68, 0x74, 0x74, 0x70, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0b, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x67, - 0x72, 0x70, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0b, 0x68, 0x74, 0x74, - 0x70, 0x32, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x0a, 0x68, 0x74, 0x74, 0x70, 0x32, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x42, 0x0a, 0x0a, - 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x50, 0x65, 0x72, - 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, - 0x42, 0x0c, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x4a, 0x04, - 0x08, 0x01, 0x10, 0x02, 0x52, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x22, 0x32, 0x0a, - 0x0c, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, - 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0x1f, 0x0a, 0x07, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x42, 0x22, 0x5a, 0x20, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, + 0x6d, 0x61, 0x78, 0x41, 0x67, 0x65, 0x12, 0x47, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, + 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, + 0x8f, 0x05, 0x0a, 0x12, 0x48, 0x54, 0x54, 0x50, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, + 0x79, 0x12, 0x49, 0x0a, 0x05, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, + 0x50, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x1a, 0x89, 0x02, 0x0a, + 0x05, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x70, 0x65, 0x72, + 0x63, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x0b, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x64, 0x65, + 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x66, 0x69, 0x78, + 0x65, 0x64, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x48, 0x0a, 0x11, 0x65, 0x78, 0x70, 0x6f, 0x6e, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, + 0x10, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x61, + 0x79, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x33, 0x2e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, + 0x6e, 0x74, 0x61, 0x67, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x64, 0x65, + 0x6c, 0x61, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x1a, 0xd6, 0x01, 0x0a, 0x05, 0x41, 0x62, 0x6f, + 0x72, 0x74, 0x12, 0x26, 0x0a, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, + 0x68, 0x74, 0x74, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0b, 0x67, 0x72, + 0x70, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x0a, 0x67, 0x72, 0x70, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, + 0x0b, 0x68, 0x74, 0x74, 0x70, 0x32, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x68, 0x74, 0x74, 0x70, 0x32, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, + 0x2e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x61, 0x67, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x22, 0xa5, 0x01, 0x0a, 0x10, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x4d, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, + 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, + 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x70, + 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x22, 0x32, 0x0a, 0x0c, 0x50, 0x6f, 0x72, + 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, + 0x07, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x22, + 0x5a, 0x20, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4421,7 +4621,7 @@ func file_networking_v1alpha3_virtual_service_proto_rawDescGZIP() []byte { } var file_networking_v1alpha3_virtual_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_networking_v1alpha3_virtual_service_proto_msgTypes = make([]protoimpl.MessageInfo, 33) +var file_networking_v1alpha3_virtual_service_proto_msgTypes = make([]protoimpl.MessageInfo, 35) var file_networking_v1alpha3_virtual_service_proto_goTypes = []interface{}{ (HTTPRedirect_RedirectPortSelection)(0), // 0: istio.networking.v1alpha3.HTTPRedirect.RedirectPortSelection (*VirtualService)(nil), // 1: istio.networking.v1alpha3.VirtualService @@ -4440,88 +4640,94 @@ var file_networking_v1alpha3_virtual_service_proto_goTypes = []interface{}{ (*HTTPDirectResponse)(nil), // 14: istio.networking.v1alpha3.HTTPDirectResponse (*HTTPBody)(nil), // 15: istio.networking.v1alpha3.HTTPBody (*HTTPRewrite)(nil), // 16: istio.networking.v1alpha3.HTTPRewrite - (*StringMatch)(nil), // 17: istio.networking.v1alpha3.StringMatch - (*HTTPRetry)(nil), // 18: istio.networking.v1alpha3.HTTPRetry - (*CorsPolicy)(nil), // 19: istio.networking.v1alpha3.CorsPolicy - (*HTTPFaultInjection)(nil), // 20: istio.networking.v1alpha3.HTTPFaultInjection - (*PortSelector)(nil), // 21: istio.networking.v1alpha3.PortSelector - (*Percent)(nil), // 22: istio.networking.v1alpha3.Percent - (*Headers_HeaderOperations)(nil), // 23: istio.networking.v1alpha3.Headers.HeaderOperations - nil, // 24: istio.networking.v1alpha3.Headers.HeaderOperations.SetEntry - nil, // 25: istio.networking.v1alpha3.Headers.HeaderOperations.AddEntry - nil, // 26: istio.networking.v1alpha3.HTTPMatchRequest.HeadersEntry - nil, // 27: istio.networking.v1alpha3.HTTPMatchRequest.SourceLabelsEntry - nil, // 28: istio.networking.v1alpha3.HTTPMatchRequest.QueryParamsEntry - nil, // 29: istio.networking.v1alpha3.HTTPMatchRequest.WithoutHeadersEntry - nil, // 30: istio.networking.v1alpha3.L4MatchAttributes.SourceLabelsEntry - nil, // 31: istio.networking.v1alpha3.TLSMatchAttributes.SourceLabelsEntry - (*HTTPFaultInjection_Delay)(nil), // 32: istio.networking.v1alpha3.HTTPFaultInjection.Delay - (*HTTPFaultInjection_Abort)(nil), // 33: istio.networking.v1alpha3.HTTPFaultInjection.Abort - (*duration.Duration)(nil), // 34: google.protobuf.Duration - (*wrappers.UInt32Value)(nil), // 35: google.protobuf.UInt32Value - (*wrappers.BoolValue)(nil), // 36: google.protobuf.BoolValue + (*RegexRewrite)(nil), // 17: istio.networking.v1alpha3.RegexRewrite + (*StringMatch)(nil), // 18: istio.networking.v1alpha3.StringMatch + (*HTTPRetry)(nil), // 19: istio.networking.v1alpha3.HTTPRetry + (*CorsPolicy)(nil), // 20: istio.networking.v1alpha3.CorsPolicy + (*HTTPFaultInjection)(nil), // 21: istio.networking.v1alpha3.HTTPFaultInjection + (*HTTPMirrorPolicy)(nil), // 22: istio.networking.v1alpha3.HTTPMirrorPolicy + (*PortSelector)(nil), // 23: istio.networking.v1alpha3.PortSelector + (*Percent)(nil), // 24: istio.networking.v1alpha3.Percent + (*Headers_HeaderOperations)(nil), // 25: istio.networking.v1alpha3.Headers.HeaderOperations + nil, // 26: istio.networking.v1alpha3.Headers.HeaderOperations.SetEntry + nil, // 27: istio.networking.v1alpha3.Headers.HeaderOperations.AddEntry + nil, // 28: istio.networking.v1alpha3.HTTPMatchRequest.HeadersEntry + nil, // 29: istio.networking.v1alpha3.HTTPMatchRequest.SourceLabelsEntry + nil, // 30: istio.networking.v1alpha3.HTTPMatchRequest.QueryParamsEntry + nil, // 31: istio.networking.v1alpha3.HTTPMatchRequest.WithoutHeadersEntry + nil, // 32: istio.networking.v1alpha3.L4MatchAttributes.SourceLabelsEntry + nil, // 33: istio.networking.v1alpha3.TLSMatchAttributes.SourceLabelsEntry + (*HTTPFaultInjection_Delay)(nil), // 34: istio.networking.v1alpha3.HTTPFaultInjection.Delay + (*HTTPFaultInjection_Abort)(nil), // 35: istio.networking.v1alpha3.HTTPFaultInjection.Abort + (*duration.Duration)(nil), // 36: google.protobuf.Duration + (*wrappers.UInt32Value)(nil), // 37: google.protobuf.UInt32Value + (*wrappers.BoolValue)(nil), // 38: google.protobuf.BoolValue } var file_networking_v1alpha3_virtual_service_proto_depIdxs = []int32{ 3, // 0: istio.networking.v1alpha3.VirtualService.http:type_name -> istio.networking.v1alpha3.HTTPRoute 6, // 1: istio.networking.v1alpha3.VirtualService.tls:type_name -> istio.networking.v1alpha3.TLSRoute 7, // 2: istio.networking.v1alpha3.VirtualService.tcp:type_name -> istio.networking.v1alpha3.TCPRoute - 21, // 3: istio.networking.v1alpha3.Destination.port:type_name -> istio.networking.v1alpha3.PortSelector + 23, // 3: istio.networking.v1alpha3.Destination.port:type_name -> istio.networking.v1alpha3.PortSelector 8, // 4: istio.networking.v1alpha3.HTTPRoute.match:type_name -> istio.networking.v1alpha3.HTTPMatchRequest 9, // 5: istio.networking.v1alpha3.HTTPRoute.route:type_name -> istio.networking.v1alpha3.HTTPRouteDestination 13, // 6: istio.networking.v1alpha3.HTTPRoute.redirect:type_name -> istio.networking.v1alpha3.HTTPRedirect 14, // 7: istio.networking.v1alpha3.HTTPRoute.direct_response:type_name -> istio.networking.v1alpha3.HTTPDirectResponse 4, // 8: istio.networking.v1alpha3.HTTPRoute.delegate:type_name -> istio.networking.v1alpha3.Delegate 16, // 9: istio.networking.v1alpha3.HTTPRoute.rewrite:type_name -> istio.networking.v1alpha3.HTTPRewrite - 34, // 10: istio.networking.v1alpha3.HTTPRoute.timeout:type_name -> google.protobuf.Duration - 18, // 11: istio.networking.v1alpha3.HTTPRoute.retries:type_name -> istio.networking.v1alpha3.HTTPRetry - 20, // 12: istio.networking.v1alpha3.HTTPRoute.fault:type_name -> istio.networking.v1alpha3.HTTPFaultInjection + 36, // 10: istio.networking.v1alpha3.HTTPRoute.timeout:type_name -> google.protobuf.Duration + 19, // 11: istio.networking.v1alpha3.HTTPRoute.retries:type_name -> istio.networking.v1alpha3.HTTPRetry + 21, // 12: istio.networking.v1alpha3.HTTPRoute.fault:type_name -> istio.networking.v1alpha3.HTTPFaultInjection 2, // 13: istio.networking.v1alpha3.HTTPRoute.mirror:type_name -> istio.networking.v1alpha3.Destination - 35, // 14: istio.networking.v1alpha3.HTTPRoute.mirror_percent:type_name -> google.protobuf.UInt32Value - 22, // 15: istio.networking.v1alpha3.HTTPRoute.mirror_percentage:type_name -> istio.networking.v1alpha3.Percent - 19, // 16: istio.networking.v1alpha3.HTTPRoute.cors_policy:type_name -> istio.networking.v1alpha3.CorsPolicy - 5, // 17: istio.networking.v1alpha3.HTTPRoute.headers:type_name -> istio.networking.v1alpha3.Headers - 23, // 18: istio.networking.v1alpha3.Headers.request:type_name -> istio.networking.v1alpha3.Headers.HeaderOperations - 23, // 19: istio.networking.v1alpha3.Headers.response:type_name -> istio.networking.v1alpha3.Headers.HeaderOperations - 12, // 20: istio.networking.v1alpha3.TLSRoute.match:type_name -> istio.networking.v1alpha3.TLSMatchAttributes - 10, // 21: istio.networking.v1alpha3.TLSRoute.route:type_name -> istio.networking.v1alpha3.RouteDestination - 11, // 22: istio.networking.v1alpha3.TCPRoute.match:type_name -> istio.networking.v1alpha3.L4MatchAttributes - 10, // 23: istio.networking.v1alpha3.TCPRoute.route:type_name -> istio.networking.v1alpha3.RouteDestination - 17, // 24: istio.networking.v1alpha3.HTTPMatchRequest.uri:type_name -> istio.networking.v1alpha3.StringMatch - 17, // 25: istio.networking.v1alpha3.HTTPMatchRequest.scheme:type_name -> istio.networking.v1alpha3.StringMatch - 17, // 26: istio.networking.v1alpha3.HTTPMatchRequest.method:type_name -> istio.networking.v1alpha3.StringMatch - 17, // 27: istio.networking.v1alpha3.HTTPMatchRequest.authority:type_name -> istio.networking.v1alpha3.StringMatch - 26, // 28: istio.networking.v1alpha3.HTTPMatchRequest.headers:type_name -> istio.networking.v1alpha3.HTTPMatchRequest.HeadersEntry - 27, // 29: istio.networking.v1alpha3.HTTPMatchRequest.source_labels:type_name -> istio.networking.v1alpha3.HTTPMatchRequest.SourceLabelsEntry - 28, // 30: istio.networking.v1alpha3.HTTPMatchRequest.query_params:type_name -> istio.networking.v1alpha3.HTTPMatchRequest.QueryParamsEntry - 29, // 31: istio.networking.v1alpha3.HTTPMatchRequest.without_headers:type_name -> istio.networking.v1alpha3.HTTPMatchRequest.WithoutHeadersEntry - 2, // 32: istio.networking.v1alpha3.HTTPRouteDestination.destination:type_name -> istio.networking.v1alpha3.Destination - 5, // 33: istio.networking.v1alpha3.HTTPRouteDestination.headers:type_name -> istio.networking.v1alpha3.Headers - 2, // 34: istio.networking.v1alpha3.RouteDestination.destination:type_name -> istio.networking.v1alpha3.Destination - 30, // 35: istio.networking.v1alpha3.L4MatchAttributes.source_labels:type_name -> istio.networking.v1alpha3.L4MatchAttributes.SourceLabelsEntry - 31, // 36: istio.networking.v1alpha3.TLSMatchAttributes.source_labels:type_name -> istio.networking.v1alpha3.TLSMatchAttributes.SourceLabelsEntry - 0, // 37: istio.networking.v1alpha3.HTTPRedirect.derive_port:type_name -> istio.networking.v1alpha3.HTTPRedirect.RedirectPortSelection - 15, // 38: istio.networking.v1alpha3.HTTPDirectResponse.body:type_name -> istio.networking.v1alpha3.HTTPBody - 34, // 39: istio.networking.v1alpha3.HTTPRetry.per_try_timeout:type_name -> google.protobuf.Duration - 36, // 40: istio.networking.v1alpha3.HTTPRetry.retry_remote_localities:type_name -> google.protobuf.BoolValue - 17, // 41: istio.networking.v1alpha3.CorsPolicy.allow_origins:type_name -> istio.networking.v1alpha3.StringMatch - 34, // 42: istio.networking.v1alpha3.CorsPolicy.max_age:type_name -> google.protobuf.Duration - 36, // 43: istio.networking.v1alpha3.CorsPolicy.allow_credentials:type_name -> google.protobuf.BoolValue - 32, // 44: istio.networking.v1alpha3.HTTPFaultInjection.delay:type_name -> istio.networking.v1alpha3.HTTPFaultInjection.Delay - 33, // 45: istio.networking.v1alpha3.HTTPFaultInjection.abort:type_name -> istio.networking.v1alpha3.HTTPFaultInjection.Abort - 24, // 46: istio.networking.v1alpha3.Headers.HeaderOperations.set:type_name -> istio.networking.v1alpha3.Headers.HeaderOperations.SetEntry - 25, // 47: istio.networking.v1alpha3.Headers.HeaderOperations.add:type_name -> istio.networking.v1alpha3.Headers.HeaderOperations.AddEntry - 17, // 48: istio.networking.v1alpha3.HTTPMatchRequest.HeadersEntry.value:type_name -> istio.networking.v1alpha3.StringMatch - 17, // 49: istio.networking.v1alpha3.HTTPMatchRequest.QueryParamsEntry.value:type_name -> istio.networking.v1alpha3.StringMatch - 17, // 50: istio.networking.v1alpha3.HTTPMatchRequest.WithoutHeadersEntry.value:type_name -> istio.networking.v1alpha3.StringMatch - 34, // 51: istio.networking.v1alpha3.HTTPFaultInjection.Delay.fixed_delay:type_name -> google.protobuf.Duration - 34, // 52: istio.networking.v1alpha3.HTTPFaultInjection.Delay.exponential_delay:type_name -> google.protobuf.Duration - 22, // 53: istio.networking.v1alpha3.HTTPFaultInjection.Delay.percentage:type_name -> istio.networking.v1alpha3.Percent - 22, // 54: istio.networking.v1alpha3.HTTPFaultInjection.Abort.percentage:type_name -> istio.networking.v1alpha3.Percent - 55, // [55:55] is the sub-list for method output_type - 55, // [55:55] is the sub-list for method input_type - 55, // [55:55] is the sub-list for extension type_name - 55, // [55:55] is the sub-list for extension extendee - 0, // [0:55] is the sub-list for field type_name + 22, // 14: istio.networking.v1alpha3.HTTPRoute.mirrors:type_name -> istio.networking.v1alpha3.HTTPMirrorPolicy + 37, // 15: istio.networking.v1alpha3.HTTPRoute.mirror_percent:type_name -> google.protobuf.UInt32Value + 24, // 16: istio.networking.v1alpha3.HTTPRoute.mirror_percentage:type_name -> istio.networking.v1alpha3.Percent + 20, // 17: istio.networking.v1alpha3.HTTPRoute.cors_policy:type_name -> istio.networking.v1alpha3.CorsPolicy + 5, // 18: istio.networking.v1alpha3.HTTPRoute.headers:type_name -> istio.networking.v1alpha3.Headers + 25, // 19: istio.networking.v1alpha3.Headers.request:type_name -> istio.networking.v1alpha3.Headers.HeaderOperations + 25, // 20: istio.networking.v1alpha3.Headers.response:type_name -> istio.networking.v1alpha3.Headers.HeaderOperations + 12, // 21: istio.networking.v1alpha3.TLSRoute.match:type_name -> istio.networking.v1alpha3.TLSMatchAttributes + 10, // 22: istio.networking.v1alpha3.TLSRoute.route:type_name -> istio.networking.v1alpha3.RouteDestination + 11, // 23: istio.networking.v1alpha3.TCPRoute.match:type_name -> istio.networking.v1alpha3.L4MatchAttributes + 10, // 24: istio.networking.v1alpha3.TCPRoute.route:type_name -> istio.networking.v1alpha3.RouteDestination + 18, // 25: istio.networking.v1alpha3.HTTPMatchRequest.uri:type_name -> istio.networking.v1alpha3.StringMatch + 18, // 26: istio.networking.v1alpha3.HTTPMatchRequest.scheme:type_name -> istio.networking.v1alpha3.StringMatch + 18, // 27: istio.networking.v1alpha3.HTTPMatchRequest.method:type_name -> istio.networking.v1alpha3.StringMatch + 18, // 28: istio.networking.v1alpha3.HTTPMatchRequest.authority:type_name -> istio.networking.v1alpha3.StringMatch + 28, // 29: istio.networking.v1alpha3.HTTPMatchRequest.headers:type_name -> istio.networking.v1alpha3.HTTPMatchRequest.HeadersEntry + 29, // 30: istio.networking.v1alpha3.HTTPMatchRequest.source_labels:type_name -> istio.networking.v1alpha3.HTTPMatchRequest.SourceLabelsEntry + 30, // 31: istio.networking.v1alpha3.HTTPMatchRequest.query_params:type_name -> istio.networking.v1alpha3.HTTPMatchRequest.QueryParamsEntry + 31, // 32: istio.networking.v1alpha3.HTTPMatchRequest.without_headers:type_name -> istio.networking.v1alpha3.HTTPMatchRequest.WithoutHeadersEntry + 2, // 33: istio.networking.v1alpha3.HTTPRouteDestination.destination:type_name -> istio.networking.v1alpha3.Destination + 5, // 34: istio.networking.v1alpha3.HTTPRouteDestination.headers:type_name -> istio.networking.v1alpha3.Headers + 2, // 35: istio.networking.v1alpha3.RouteDestination.destination:type_name -> istio.networking.v1alpha3.Destination + 32, // 36: istio.networking.v1alpha3.L4MatchAttributes.source_labels:type_name -> istio.networking.v1alpha3.L4MatchAttributes.SourceLabelsEntry + 33, // 37: istio.networking.v1alpha3.TLSMatchAttributes.source_labels:type_name -> istio.networking.v1alpha3.TLSMatchAttributes.SourceLabelsEntry + 0, // 38: istio.networking.v1alpha3.HTTPRedirect.derive_port:type_name -> istio.networking.v1alpha3.HTTPRedirect.RedirectPortSelection + 15, // 39: istio.networking.v1alpha3.HTTPDirectResponse.body:type_name -> istio.networking.v1alpha3.HTTPBody + 17, // 40: istio.networking.v1alpha3.HTTPRewrite.uri_regex_rewrite:type_name -> istio.networking.v1alpha3.RegexRewrite + 36, // 41: istio.networking.v1alpha3.HTTPRetry.per_try_timeout:type_name -> google.protobuf.Duration + 38, // 42: istio.networking.v1alpha3.HTTPRetry.retry_remote_localities:type_name -> google.protobuf.BoolValue + 18, // 43: istio.networking.v1alpha3.CorsPolicy.allow_origins:type_name -> istio.networking.v1alpha3.StringMatch + 36, // 44: istio.networking.v1alpha3.CorsPolicy.max_age:type_name -> google.protobuf.Duration + 38, // 45: istio.networking.v1alpha3.CorsPolicy.allow_credentials:type_name -> google.protobuf.BoolValue + 34, // 46: istio.networking.v1alpha3.HTTPFaultInjection.delay:type_name -> istio.networking.v1alpha3.HTTPFaultInjection.Delay + 35, // 47: istio.networking.v1alpha3.HTTPFaultInjection.abort:type_name -> istio.networking.v1alpha3.HTTPFaultInjection.Abort + 2, // 48: istio.networking.v1alpha3.HTTPMirrorPolicy.destination:type_name -> istio.networking.v1alpha3.Destination + 24, // 49: istio.networking.v1alpha3.HTTPMirrorPolicy.percentage:type_name -> istio.networking.v1alpha3.Percent + 26, // 50: istio.networking.v1alpha3.Headers.HeaderOperations.set:type_name -> istio.networking.v1alpha3.Headers.HeaderOperations.SetEntry + 27, // 51: istio.networking.v1alpha3.Headers.HeaderOperations.add:type_name -> istio.networking.v1alpha3.Headers.HeaderOperations.AddEntry + 18, // 52: istio.networking.v1alpha3.HTTPMatchRequest.HeadersEntry.value:type_name -> istio.networking.v1alpha3.StringMatch + 18, // 53: istio.networking.v1alpha3.HTTPMatchRequest.QueryParamsEntry.value:type_name -> istio.networking.v1alpha3.StringMatch + 18, // 54: istio.networking.v1alpha3.HTTPMatchRequest.WithoutHeadersEntry.value:type_name -> istio.networking.v1alpha3.StringMatch + 36, // 55: istio.networking.v1alpha3.HTTPFaultInjection.Delay.fixed_delay:type_name -> google.protobuf.Duration + 36, // 56: istio.networking.v1alpha3.HTTPFaultInjection.Delay.exponential_delay:type_name -> google.protobuf.Duration + 24, // 57: istio.networking.v1alpha3.HTTPFaultInjection.Delay.percentage:type_name -> istio.networking.v1alpha3.Percent + 24, // 58: istio.networking.v1alpha3.HTTPFaultInjection.Abort.percentage:type_name -> istio.networking.v1alpha3.Percent + 59, // [59:59] is the sub-list for method output_type + 59, // [59:59] is the sub-list for method input_type + 59, // [59:59] is the sub-list for extension type_name + 59, // [59:59] is the sub-list for extension extendee + 0, // [0:59] is the sub-list for field type_name } func init() { file_networking_v1alpha3_virtual_service_proto_init() } @@ -4723,7 +4929,7 @@ func file_networking_v1alpha3_virtual_service_proto_init() { } } file_networking_v1alpha3_virtual_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StringMatch); i { + switch v := v.(*RegexRewrite); i { case 0: return &v.state case 1: @@ -4735,7 +4941,7 @@ func file_networking_v1alpha3_virtual_service_proto_init() { } } file_networking_v1alpha3_virtual_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HTTPRetry); i { + switch v := v.(*StringMatch); i { case 0: return &v.state case 1: @@ -4747,7 +4953,7 @@ func file_networking_v1alpha3_virtual_service_proto_init() { } } file_networking_v1alpha3_virtual_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CorsPolicy); i { + switch v := v.(*HTTPRetry); i { case 0: return &v.state case 1: @@ -4759,7 +4965,7 @@ func file_networking_v1alpha3_virtual_service_proto_init() { } } file_networking_v1alpha3_virtual_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HTTPFaultInjection); i { + switch v := v.(*CorsPolicy); i { case 0: return &v.state case 1: @@ -4771,7 +4977,7 @@ func file_networking_v1alpha3_virtual_service_proto_init() { } } file_networking_v1alpha3_virtual_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortSelector); i { + switch v := v.(*HTTPFaultInjection); i { case 0: return &v.state case 1: @@ -4783,7 +4989,7 @@ func file_networking_v1alpha3_virtual_service_proto_init() { } } file_networking_v1alpha3_virtual_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Percent); i { + switch v := v.(*HTTPMirrorPolicy); i { case 0: return &v.state case 1: @@ -4795,6 +5001,30 @@ func file_networking_v1alpha3_virtual_service_proto_init() { } } file_networking_v1alpha3_virtual_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PortSelector); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_networking_v1alpha3_virtual_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Percent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_networking_v1alpha3_virtual_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Headers_HeaderOperations); i { case 0: return &v.state @@ -4806,7 +5036,7 @@ func file_networking_v1alpha3_virtual_service_proto_init() { return nil } } - file_networking_v1alpha3_virtual_service_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_networking_v1alpha3_virtual_service_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HTTPFaultInjection_Delay); i { case 0: return &v.state @@ -4818,7 +5048,7 @@ func file_networking_v1alpha3_virtual_service_proto_init() { return nil } } - file_networking_v1alpha3_virtual_service_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_networking_v1alpha3_virtual_service_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HTTPFaultInjection_Abort); i { case 0: return &v.state @@ -4839,16 +5069,16 @@ func file_networking_v1alpha3_virtual_service_proto_init() { (*HTTPBody_String_)(nil), (*HTTPBody_Bytes)(nil), } - file_networking_v1alpha3_virtual_service_proto_msgTypes[16].OneofWrappers = []interface{}{ + file_networking_v1alpha3_virtual_service_proto_msgTypes[17].OneofWrappers = []interface{}{ (*StringMatch_Exact)(nil), (*StringMatch_Prefix)(nil), (*StringMatch_Regex)(nil), } - file_networking_v1alpha3_virtual_service_proto_msgTypes[31].OneofWrappers = []interface{}{ + file_networking_v1alpha3_virtual_service_proto_msgTypes[33].OneofWrappers = []interface{}{ (*HTTPFaultInjection_Delay_FixedDelay)(nil), (*HTTPFaultInjection_Delay_ExponentialDelay)(nil), } - file_networking_v1alpha3_virtual_service_proto_msgTypes[32].OneofWrappers = []interface{}{ + file_networking_v1alpha3_virtual_service_proto_msgTypes[34].OneofWrappers = []interface{}{ (*HTTPFaultInjection_Abort_HttpStatus)(nil), (*HTTPFaultInjection_Abort_GrpcStatus)(nil), (*HTTPFaultInjection_Abort_Http2Error)(nil), @@ -4859,7 +5089,7 @@ func file_networking_v1alpha3_virtual_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_networking_v1alpha3_virtual_service_proto_rawDesc, NumEnums: 1, - NumMessages: 33, + NumMessages: 35, NumExtensions: 0, NumServices: 0, }, diff --git a/vendor/istio.io/api/networking/v1alpha3/virtual_service.proto b/vendor/istio.io/api/networking/v1alpha3/virtual_service.proto index 3ee8fdf3..4e29bd61 100644 --- a/vendor/istio.io/api/networking/v1alpha3/virtual_service.proto +++ b/vendor/istio.io/api/networking/v1alpha3/virtual_service.proto @@ -186,11 +186,11 @@ option go_package = "istio.io/api/networking/v1alpha3"; // +cue-gen:VirtualService:subresource:status // +cue-gen:VirtualService:scope:Namespaced // +cue-gen:VirtualService:resource:categories=istio-io,networking-istio-io,shortNames=vs -// +cue-gen:VirtualService:printerColumn:name=Gateways,type=string,JSONPath=.spec.gateways,description="The names of gateways and sidecars +// +cue-gen:VirtualService:printerColumn:name=Gateways,type=string,JSONPath=.spec.gateways,description="The names of gateways and sidecars // that should apply these routes" // +cue-gen:VirtualService:printerColumn:name=Hosts,type=string,JSONPath=.spec.hosts,description="The destination hosts to which traffic is being sent" -// +cue-gen:VirtualService:printerColumn:name=Age,type=date,JSONPath=.metadata.creationTimestamp,description="CreationTimestamp is a timestamp -// representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. +// +cue-gen:VirtualService:printerColumn:name=Age,type=date,JSONPath=.metadata.creationTimestamp,description="CreationTimestamp is a timestamp +// representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. // Clients may not set this value. It is represented in RFC3339 form and is in UTC. // Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata" // +cue-gen:VirtualService:preserveUnknownFields:false @@ -253,8 +253,8 @@ message VirtualService { repeated string gateways = 2; // An ordered list of route rules for HTTP traffic. HTTP routes will be - // applied to platform service ports named 'http-*'/'http2-*'/'grpc-*', gateway - // ports with protocol HTTP/HTTP2/GRPC/ TLS-terminated-HTTPS and service + // applied to platform service ports using HTTP/HTTP2/GRPC protocols, gateway + // ports with protocol HTTP/HTTP2/GRPC/TLS-terminated-HTTPS and service // entry ports using HTTP/HTTP2/GRPC protocols. The first rule matching // an incoming request is used. repeated HTTPRoute http = 3; @@ -633,6 +633,17 @@ message HTTPRoute { // destination. Destination mirror = 9; + // $hide_from_docs + // Hide this from doc until implemented. + // + // Specifies the destinations to mirror HTTP traffic in addition + // to the original destination. Mirrored traffic is on a + // best effort basis where the sidecar/gateway will not wait for the + // mirrored destinations to respond before returning the response from the + // original destination. Statistics will be generated for the mirrored + // destination. + repeated HTTPMirrorPolicy mirrors = 22; + // Percentage of the traffic to be mirrored by the `mirror` field. // Use of integer `mirror_percent` value is deprecated. Use the // double `mirror_percentage` field instead @@ -656,7 +667,7 @@ message HTTPRoute { Headers headers = 16; // $hide_from_docs - // Next available field number: 22 + // Next available field number: 23 } @@ -1071,6 +1082,13 @@ message HTTPMatchRequest { // - `regex: "value"` for RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax). // // If the value is empty and only the name of header is specified, presence of the header is checked. + // To provide an empty value, use `{}`, for example: + // + // ``` + // - match: + // - headers: + // myheader: {} + // ``` // **Note:** The keys `uri`, `scheme`, `method`, and `authority` will be ignored. map headers = 5; @@ -1100,11 +1118,12 @@ message HTTPMatchRequest { // - For a query parameter like "?key", the map key would be "key" and the // string match could be defined as `exact: ""`. // + // - For a query parameter like "?key=abc" or "?key=abx", the map key would be "key" and the + // string match could be defined as `prefix: "ab"`. + // // - For a query parameter like "?key=123", the map key would be "key" and the // string match could be defined as `regex: "\d+$"`. Note that this // configuration will only match values like "123" but not "a123" or "123a". - // - // **Note:** `prefix` matching is currently not supported. map query_params = 9; // Flag to specify whether the URI matching should be case-insensitive. @@ -1126,7 +1145,7 @@ message HTTPMatchRequest { // The statistics are generated with prefix route.. // This should be set for highly critical routes that one wishes to get "per-route" statistics on. // This prefix is only for proxy-level statistics (envoy_*) and not service-level (istio_*) statistics. - // Refer to https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-field-config-route-v3-route-stat-prefix + // Refer to https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-field-config-route-v3-route-stat-prefix // for statistics that are generated when this is configured. string stat_prefix = 14; } @@ -1338,7 +1357,7 @@ message TLSMatchAttributes { // SNI (server name indicator) to match on. Wildcard prefixes // can be used in the SNI value, e.g., *.com will match foo.example.com // as well as example.com. An SNI value must be a subset (i.e., fall - // within the domain) of the corresponding virtual serivce's hosts. + // within the domain) of the corresponding virtual service's hosts. repeated string sni_hosts = 1 [(google.api.field_behavior) = REQUIRED]; // IPv4 or IPv6 ip addresses of destination with optional subnet. E.g., @@ -1573,7 +1592,7 @@ message HTTPRedirect { // headers: // response: // set: -// content-type: "appliation/json" +// content-type: "application/json" // ... // ``` // {{}} @@ -1683,6 +1702,27 @@ message HTTPRewrite { // rewrite the Authority/Host header with this value. string authority = 2; + + // rewrite the path portion of the URI with the specified regex. + RegexRewrite uri_regex_rewrite = 3; +} + +message RegexRewrite { + // RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax). + string match = 1; + + // The string that should replace into matching portions of original URI. + // Capture groups in the pattern can be referenced in the new URI. + // Examples: + // + // Example 1: rewrite with capture groups + // Path pattern "/service/update/v1/api" with match "^/service/([^/]+)(/.*)$" and + // rewrite string of "/customprefix/\2/\1" would transform into "/customprefix/v1/api/update". + // + // Example 2: case insensitive rewrite + // Path pattern "/aaa/XxX/bbb" with match "(?i)/xxx/" and a rewrite string of /yyy/ would do a + // case-insensitive match and transform the path to "/aaa/yyy/bbb". + string rewrite = 2; } // Describes how to match a given string in HTTP headers. Match is @@ -1753,15 +1793,15 @@ message StringMatch { // message HTTPRetry { // Number of retries to be allowed for a given request. The interval - // between retries will be determined automatically (25ms+). When request - // `timeout` of the [HTTP route](https://istio.io/docs/reference/config/networking/virtual-service/#HTTPRoute) + // between retries will be determined automatically (25ms+). When request + // `timeout` of the [HTTP route](https://istio.io/docs/reference/config/networking/virtual-service/#HTTPRoute) // or `per_try_timeout` is configured, the actual number of retries attempted also depends on // the specified request `timeout` and `per_try_timeout` values. int32 attempts = 1 [(google.api.field_behavior) = REQUIRED]; // Timeout per attempt for a given request, including the initial call and any retries. Format: 1h/1m/1s/1ms. MUST BE >=1ms. - // Default is same value as request - // `timeout` of the [HTTP route](https://istio.io/docs/reference/config/networking/virtual-service/#HTTPRoute), + // Default is same value as request + // `timeout` of the [HTTP route](https://istio.io/docs/reference/config/networking/virtual-service/#HTTPRoute), // which means no timeout. google.protobuf.Duration per_try_timeout = 2; @@ -2050,6 +2090,31 @@ message HTTPFaultInjection { } } +// $hide_from_docs +// Hide this from doc until implemented. +// +// HTTPMirrorPolicy can be used to specify the destinations to mirror HTTP traffic in addition +// to the original destination. Mirrored traffic is on a +// best effort basis where the sidecar/gateway will not wait for the +// mirrored destinations to respond before returning the response from the +// original destination. Statistics will be generated for the mirrored +// destination. +message HTTPMirrorPolicy { + // $hide_from_docs + // Hide this from doc until implemented. + // + // Destination specifies the target of the mirror operation. + Destination destination = 1 [(google.api.field_behavior) = REQUIRED]; + + // $hide_from_docs + // Hide this from doc until implemented. + // + // Percentage of the traffic to be mirrored by the `destination` field. + // If this field is absent, all the traffic (100%) will be mirrored. + // Max value is 100. + Percent percentage = 2; +} + // PortSelector specifies the number of a port to be used for // matching or selection for final routing. message PortSelector { diff --git a/vendor/istio.io/api/networking/v1alpha3/virtual_service_deepcopy.gen.go b/vendor/istio.io/api/networking/v1alpha3/virtual_service_deepcopy.gen.go index d3bbfdfd..4314564c 100644 --- a/vendor/istio.io/api/networking/v1alpha3/virtual_service_deepcopy.gen.go +++ b/vendor/istio.io/api/networking/v1alpha3/virtual_service_deepcopy.gen.go @@ -362,6 +362,27 @@ func (in *HTTPRewrite) DeepCopyInterface() interface{} { return in.DeepCopy() } +// DeepCopyInto supports using RegexRewrite within kubernetes types, where deepcopy-gen is used. +func (in *RegexRewrite) DeepCopyInto(out *RegexRewrite) { + p := proto.Clone(in).(*RegexRewrite) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegexRewrite. Required by controller-gen. +func (in *RegexRewrite) DeepCopy() *RegexRewrite { + if in == nil { + return nil + } + out := new(RegexRewrite) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new RegexRewrite. Required by controller-gen. +func (in *RegexRewrite) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + // DeepCopyInto supports using StringMatch within kubernetes types, where deepcopy-gen is used. func (in *StringMatch) DeepCopyInto(out *StringMatch) { p := proto.Clone(in).(*StringMatch) @@ -488,6 +509,27 @@ func (in *HTTPFaultInjection_Abort) DeepCopyInterface() interface{} { return in.DeepCopy() } +// DeepCopyInto supports using HTTPMirrorPolicy within kubernetes types, where deepcopy-gen is used. +func (in *HTTPMirrorPolicy) DeepCopyInto(out *HTTPMirrorPolicy) { + p := proto.Clone(in).(*HTTPMirrorPolicy) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPMirrorPolicy. Required by controller-gen. +func (in *HTTPMirrorPolicy) DeepCopy() *HTTPMirrorPolicy { + if in == nil { + return nil + } + out := new(HTTPMirrorPolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new HTTPMirrorPolicy. Required by controller-gen. +func (in *HTTPMirrorPolicy) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + // DeepCopyInto supports using PortSelector within kubernetes types, where deepcopy-gen is used. func (in *PortSelector) DeepCopyInto(out *PortSelector) { p := proto.Clone(in).(*PortSelector) diff --git a/vendor/istio.io/api/networking/v1alpha3/virtual_service_json.gen.go b/vendor/istio.io/api/networking/v1alpha3/virtual_service_json.gen.go index e7dc64fd..63189430 100644 --- a/vendor/istio.io/api/networking/v1alpha3/virtual_service_json.gen.go +++ b/vendor/istio.io/api/networking/v1alpha3/virtual_service_json.gen.go @@ -193,6 +193,17 @@ func (this *HTTPRewrite) UnmarshalJSON(b []byte) error { return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this) } +// MarshalJSON is a custom marshaler for RegexRewrite +func (this *RegexRewrite) MarshalJSON() ([]byte, error) { + str, err := VirtualServiceMarshaler.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for RegexRewrite +func (this *RegexRewrite) UnmarshalJSON(b []byte) error { + return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this) +} + // MarshalJSON is a custom marshaler for StringMatch func (this *StringMatch) MarshalJSON() ([]byte, error) { str, err := VirtualServiceMarshaler.MarshalToString(this) @@ -259,6 +270,17 @@ func (this *HTTPFaultInjection_Abort) UnmarshalJSON(b []byte) error { return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this) } +// MarshalJSON is a custom marshaler for HTTPMirrorPolicy +func (this *HTTPMirrorPolicy) MarshalJSON() ([]byte, error) { + str, err := VirtualServiceMarshaler.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for HTTPMirrorPolicy +func (this *HTTPMirrorPolicy) UnmarshalJSON(b []byte) error { + return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this) +} + // MarshalJSON is a custom marshaler for PortSelector func (this *PortSelector) MarshalJSON() ([]byte, error) { str, err := VirtualServiceMarshaler.MarshalToString(this) diff --git a/vendor/istio.io/api/networking/v1alpha3/workload_entry.gen.json b/vendor/istio.io/api/networking/v1alpha3/workload_entry.gen.json index 65aba5a3..5ba666c1 100644 --- a/vendor/istio.io/api/networking/v1alpha3/workload_entry.gen.json +++ b/vendor/istio.io/api/networking/v1alpha3/workload_entry.gen.json @@ -11,7 +11,7 @@ "type": "object", "properties": { "address": { - "description": "Address associated with the network endpoint without the port. Domain names can be used if and only if the resolution is set to DNS, and must be fully-qualified without wildcards. Use the form unix:///absolute/path/to/socket for Unix domain socket endpoints.", + "description": "Address associated with the network endpoint without the port. Domain names can be used if and only if the resolution is set to DNS, and must be fully-qualified without wildcards. Use the form unix:///absolute/path/to/socket for Unix domain socket endpoints. If address is empty, network must be specified.", "type": "string" }, "ports": { @@ -29,7 +29,7 @@ } }, "network": { - "description": "Network enables Istio to group endpoints resident in the same L3 domain/network. All endpoints in the same network are assumed to be directly reachable from one another. When endpoints in different networks cannot reach each other directly, an Istio Gateway can be used to establish connectivity (usually using the `AUTO_PASSTHROUGH` mode in a Gateway Server). This is an advanced configuration used typically for spanning an Istio mesh over multiple clusters.", + "description": "Network enables Istio to group endpoints resident in the same L3 domain/network. All endpoints in the same network are assumed to be directly reachable from one another. When endpoints in different networks cannot reach each other directly, an Istio Gateway can be used to establish connectivity (usually using the `AUTO_PASSTHROUGH` mode in a Gateway Server). This is an advanced configuration used typically for spanning an Istio mesh over multiple clusters. Required if address is not provided.", "type": "string" }, "locality": { diff --git a/vendor/istio.io/api/networking/v1alpha3/workload_entry.pb.go b/vendor/istio.io/api/networking/v1alpha3/workload_entry.pb.go index 5462a81f..cc5d5f9f 100644 --- a/vendor/istio.io/api/networking/v1alpha3/workload_entry.pb.go +++ b/vendor/istio.io/api/networking/v1alpha3/workload_entry.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: networking/v1alpha3/workload_entry.proto @@ -230,11 +230,48 @@ // {{}} // {{}} // +// +// The following example declares a VM workload without an address. +// An alternative to having istiod read from remote API servers is +// to write a `WorkloadEntry` in the local cluster that represents +// the Workload(s) in the remote network with the given labels. A +// single `WorkloadEntry` with weights represent the aggregate of all +// the actual workloads in a given remote network. +// +// {{}} +// {{}} +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: WorkloadEntry +// metadata: +// name: foo-workloads-cluster-2 +// spec: +// serviceAccount: foo +// network: cluster-2-network +// labels: +// app: foo +// ``` +// {{}} +// +// {{}} +// ```yaml +// apiVersion: networking.istio.io/v1beta1 +// kind: WorkloadEntry +// metadata: +// name: foo-workloads-cluster-2 +// spec: +// serviceAccount: foo +// network: cluster-2-network +// labels: +// app: foo +// ``` +// {{}} +// {{}} +// package v1alpha3 import ( - _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -285,6 +322,7 @@ type WorkloadEntry struct { // port. Domain names can be used if and only if the resolution is set // to DNS, and must be fully-qualified without wildcards. Use the form // unix:///absolute/path/to/socket for Unix domain socket endpoints. + // If address is empty, network must be specified. Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` // Set of ports associated with the endpoint. If the port map is // specified, it must be a map of servicePortName to this endpoint's @@ -310,7 +348,7 @@ type WorkloadEntry struct { // used to establish connectivity (usually using the // `AUTO_PASSTHROUGH` mode in a Gateway Server). This is // an advanced configuration used typically for spanning an Istio mesh - // over multiple clusters. + // over multiple clusters. Required if address is not provided. Network string `protobuf:"bytes,4,opt,name=network,proto3" json:"network,omitempty"` // The locality associated with the endpoint. A locality corresponds // to a failure domain (e.g., country/region/zone). Arbitrary failure @@ -428,39 +466,37 @@ var file_networking_v1alpha3_workload_entry_proto_rawDesc = []byte{ 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x19, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x33, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb4, 0x03, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, - 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x33, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x70, 0x6f, - 0x72, 0x74, 0x73, 0x12, 0x4c, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, - 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x6c, - 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, - 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, - 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x38, 0x0a, 0x0a, 0x50, 0x6f, 0x72, 0x74, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x22, 0x5a, - 0x20, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x22, 0xae, 0x03, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x49, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x57, 0x6f, 0x72, + 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x4c, 0x0a, 0x06, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x69, + 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x1a, 0x38, 0x0a, 0x0a, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x22, 0x5a, 0x20, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, + 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, + 0x67, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( diff --git a/vendor/istio.io/api/networking/v1alpha3/workload_entry.proto b/vendor/istio.io/api/networking/v1alpha3/workload_entry.proto index 13657d12..2a13bc3a 100644 --- a/vendor/istio.io/api/networking/v1alpha3/workload_entry.proto +++ b/vendor/istio.io/api/networking/v1alpha3/workload_entry.proto @@ -14,8 +14,6 @@ syntax = "proto3"; -import "google/api/field_behavior.proto"; - // $schema: istio.networking.v1alpha3.WorkloadEntry // $title: Workload Entry // $description: Configuration affecting VMs onboarded into the mesh. @@ -228,6 +226,44 @@ import "google/api/field_behavior.proto"; // {{}} // {{}} // +// +// The following example declares a VM workload without an address. +// An alternative to having istiod read from remote API servers is +// to write a `WorkloadEntry` in the local cluster that represents +// the Workload(s) in the remote network with the given labels. A +// single `WorkloadEntry` with weights represent the aggregate of all +// the actual workloads in a given remote network. +// +// {{}} +// {{}} +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: WorkloadEntry +// metadata: +// name: foo-workloads-cluster-2 +// spec: +// serviceAccount: foo +// network: cluster-2-network +// labels: +// app: foo +// ``` +// {{}} +// +// {{}} +// ```yaml +// apiVersion: networking.istio.io/v1beta1 +// kind: WorkloadEntry +// metadata: +// name: foo-workloads-cluster-2 +// spec: +// serviceAccount: foo +// network: cluster-2-network +// labels: +// app: foo +// ``` +// {{}} +// {{}} +// package istio.networking.v1alpha3; option go_package = "istio.io/api/networking/v1alpha3"; @@ -265,7 +301,8 @@ message WorkloadEntry { // port. Domain names can be used if and only if the resolution is set // to DNS, and must be fully-qualified without wildcards. Use the form // unix:///absolute/path/to/socket for Unix domain socket endpoints. - string address = 1 [(google.api.field_behavior) = REQUIRED]; + // If address is empty, network must be specified. + string address = 1; // Set of ports associated with the endpoint. If the port map is // specified, it must be a map of servicePortName to this endpoint's @@ -293,7 +330,7 @@ message WorkloadEntry { // used to establish connectivity (usually using the // `AUTO_PASSTHROUGH` mode in a Gateway Server). This is // an advanced configuration used typically for spanning an Istio mesh - // over multiple clusters. + // over multiple clusters. Required if address is not provided. string network = 4; // The locality associated with the endpoint. A locality corresponds diff --git a/vendor/istio.io/api/networking/v1alpha3/workload_group.gen.json b/vendor/istio.io/api/networking/v1alpha3/workload_group.gen.json index c0aeb2b2..d7653fa0 100644 --- a/vendor/istio.io/api/networking/v1alpha3/workload_group.gen.json +++ b/vendor/istio.io/api/networking/v1alpha3/workload_group.gen.json @@ -175,7 +175,7 @@ "type": "object", "properties": { "address": { - "description": "Address associated with the network endpoint without the port. Domain names can be used if and only if the resolution is set to DNS, and must be fully-qualified without wildcards. Use the form unix:///absolute/path/to/socket for Unix domain socket endpoints.", + "description": "Address associated with the network endpoint without the port. Domain names can be used if and only if the resolution is set to DNS, and must be fully-qualified without wildcards. Use the form unix:///absolute/path/to/socket for Unix domain socket endpoints. If address is empty, network must be specified.", "type": "string" }, "ports": { @@ -193,7 +193,7 @@ } }, "network": { - "description": "Network enables Istio to group endpoints resident in the same L3 domain/network. All endpoints in the same network are assumed to be directly reachable from one another. When endpoints in different networks cannot reach each other directly, an Istio Gateway can be used to establish connectivity (usually using the `AUTO_PASSTHROUGH` mode in a Gateway Server). This is an advanced configuration used typically for spanning an Istio mesh over multiple clusters.", + "description": "Network enables Istio to group endpoints resident in the same L3 domain/network. All endpoints in the same network are assumed to be directly reachable from one another. When endpoints in different networks cannot reach each other directly, an Istio Gateway can be used to establish connectivity (usually using the `AUTO_PASSTHROUGH` mode in a Gateway Server). This is an advanced configuration used typically for spanning an Istio mesh over multiple clusters. Required if address is not provided.", "type": "string" }, "locality": { diff --git a/vendor/istio.io/api/networking/v1alpha3/workload_group.pb.go b/vendor/istio.io/api/networking/v1alpha3/workload_group.pb.go index 36ff2672..b310834c 100644 --- a/vendor/istio.io/api/networking/v1alpha3/workload_group.pb.go +++ b/vendor/istio.io/api/networking/v1alpha3/workload_group.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: networking/v1alpha3/workload_group.proto @@ -72,6 +72,40 @@ // value: Im-The-Best // ``` // {{}} +// +// {{}} +// ```yaml +// apiVersion: networking.istio.io/v1beta1 +// kind: WorkloadGroup +// metadata: +// name: reviews +// namespace: bookinfo +// spec: +// metadata: +// labels: +// app.kubernetes.io/name: reviews +// app.kubernetes.io/version: "1.3.4" +// template: +// ports: +// grpc: 3550 +// http: 8080 +// serviceAccount: default +// probe: +// initialDelaySeconds: 5 +// timeoutSeconds: 3 +// periodSeconds: 4 +// successThreshold: 3 +// failureThreshold: 3 +// httpGet: +// path: /foo/bar +// host: 127.0.0.1 +// port: 3100 +// scheme: HTTPS +// httpHeaders: +// - name: Lit-Header +// value: Im-The-Best +// ``` +// {{}} // {{}} // @@ -665,99 +699,99 @@ var file_networking_v1alpha3_workload_group_proto_rawDesc = []byte{ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0xb8, 0x04, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f, + 0x22, 0xb7, 0x04, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x4f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x4a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, + 0x61, 0x74, 0x61, 0x12, 0x49, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, - 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, - 0x3f, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3f, + 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, + 0x65, 0x73, 0x73, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x1a, + 0xc8, 0x02, 0x0a, 0x0a, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x57, + 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, - 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, - 0x6e, 0x65, 0x73, 0x73, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x62, 0x65, - 0x1a, 0xc8, 0x02, 0x0a, 0x0a, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, - 0x57, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x3f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x57, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x66, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, + 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, + 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, + 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x66, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x69, + 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, + 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xee, 0x03, 0x0a, 0x0e, 0x52, + 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x12, 0x32, 0x0a, + 0x15, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x73, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, + 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x65, + 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x73, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x2b, + 0x0a, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, + 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x4d, 0x0a, 0x08, 0x68, + 0x74, 0x74, 0x70, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, - 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, - 0x74, 0x61, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xee, 0x03, 0x0a, 0x0e, - 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x12, 0x32, - 0x0a, 0x15, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, - 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x70, - 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x68, - 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, - 0x2b, 0x0a, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, - 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x66, 0x61, 0x69, 0x6c, - 0x75, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x4d, 0x0a, 0x08, - 0x68, 0x74, 0x74, 0x70, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, + 0x00, 0x52, 0x07, 0x68, 0x74, 0x74, 0x70, 0x47, 0x65, 0x74, 0x12, 0x50, 0x0a, 0x0a, 0x74, 0x63, + 0x70, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, - 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x48, 0x00, 0x52, 0x07, 0x68, 0x74, 0x74, 0x70, 0x47, 0x65, 0x74, 0x12, 0x50, 0x0a, 0x0a, 0x74, - 0x63, 0x70, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x54, 0x43, 0x50, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x48, 0x00, 0x52, 0x09, 0x74, 0x63, 0x70, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x46, 0x0a, - 0x04, 0x65, 0x78, 0x65, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x69, 0x73, - 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x48, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, - 0x04, 0x65, 0x78, 0x65, 0x63, 0x42, 0x15, 0x0a, 0x13, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0xbb, 0x01, 0x0a, - 0x15, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x04, 0x70, 0x6f, - 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, - 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, - 0x12, 0x48, 0x0a, 0x0c, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x33, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0b, 0x68, - 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x36, 0x0a, 0x0a, 0x48, 0x54, - 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x22, 0x44, 0x0a, 0x14, 0x54, 0x43, 0x50, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, - 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x18, - 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x04, 0xe2, 0x41, - 0x01, 0x02, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x31, 0x0a, 0x15, 0x45, 0x78, 0x65, 0x63, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x42, 0x22, 0x5a, 0x20, 0x69, - 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x54, 0x43, 0x50, 0x48, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, + 0x00, 0x52, 0x09, 0x74, 0x63, 0x70, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x46, 0x0a, 0x04, + 0x65, 0x78, 0x65, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x69, 0x73, 0x74, + 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x48, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x04, + 0x65, 0x78, 0x65, 0x63, 0x42, 0x15, 0x0a, 0x13, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0xba, 0x01, 0x0a, 0x15, + 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x70, 0x6f, + 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x48, + 0x0a, 0x0c, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, + 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0b, 0x68, 0x74, 0x74, + 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x36, 0x0a, 0x0a, 0x48, 0x54, 0x54, 0x50, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0x43, 0x0a, 0x14, 0x54, 0x43, 0x50, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x04, + 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x31, 0x0a, 0x15, 0x45, 0x78, 0x65, 0x63, 0x48, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, + 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x42, 0x22, 0x5a, 0x20, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/vendor/istio.io/api/networking/v1alpha3/workload_group.proto b/vendor/istio.io/api/networking/v1alpha3/workload_group.proto index c669e9d4..eb199255 100644 --- a/vendor/istio.io/api/networking/v1alpha3/workload_group.proto +++ b/vendor/istio.io/api/networking/v1alpha3/workload_group.proto @@ -71,6 +71,40 @@ import "networking/v1alpha3/workload_entry.proto"; // value: Im-The-Best // ``` // {{}} +// +// {{}} +// ```yaml +// apiVersion: networking.istio.io/v1beta1 +// kind: WorkloadGroup +// metadata: +// name: reviews +// namespace: bookinfo +// spec: +// metadata: +// labels: +// app.kubernetes.io/name: reviews +// app.kubernetes.io/version: "1.3.4" +// template: +// ports: +// grpc: 3550 +// http: 8080 +// serviceAccount: default +// probe: +// initialDelaySeconds: 5 +// timeoutSeconds: 3 +// periodSeconds: 4 +// successThreshold: 3 +// failureThreshold: 3 +// httpGet: +// path: /foo/bar +// host: 127.0.0.1 +// port: 3100 +// scheme: HTTPS +// httpHeaders: +// - name: Lit-Header +// value: Im-The-Best +// ``` +// {{}} // {{}} // package istio.networking.v1alpha3; diff --git a/vendor/istio.io/api/networking/v1beta1/destination_rule.gen.json b/vendor/istio.io/api/networking/v1beta1/destination_rule.gen.json index ac00a279..bbb3b154 100644 --- a/vendor/istio.io/api/networking/v1beta1/destination_rule.gen.json +++ b/vendor/istio.io/api/networking/v1beta1/destination_rule.gen.json @@ -26,7 +26,7 @@ "type": "string" }, "credentialName": { - "description": "The name of the secret that holds the TLS certs for the client including the CA certificates. Secret must exist in the same namespace with the proxy using the certificates. The secret (of type `generic`)should contain the following keys and values: `key: \u003cprivateKey\u003e`, `cert: \u003cclientCert\u003e`, `cacert: \u003cCACertificate\u003e`. Here CACertificate is used to verify the server certificate. Secret of type tls for client certificates along with ca.crt key for CA certificates is also supported. Only one of client certificates and CA certificate or credentialName can be specified.", + "description": "The name of the secret that holds the TLS certs for the client including the CA certificates. This secret must exist in the namespace of the proxy using the certificates. An Opaque secret should contain the following keys and values: `key: \u003cprivateKey\u003e`, `cert: \u003cclientCert\u003e`, `cacert: \u003cCACertificate\u003e`, `crl: \u003ccertificateRevocationList\u003e` Here CACertificate is used to verify the server certificate. For mutual TLS, `cacert: \u003cCACertificate\u003e` can be provided in the same secret or a separate secret named `\u003csecret\u003e-cacert`. A TLS secret for client certificates with an additional `ca.crt` key for CA certificates and `ca.crl` key for certificate revocation list(CRL) is also supported. Only one of client certificates and CA certificate or credentialName can be specified.", "type": "string" }, "subjectAltNames": { @@ -41,7 +41,7 @@ "type": "string" }, "insecureSkipVerify": { - "description": "InsecureSkipVerify specifies whether the proxy should skip verifying the CA signature and SAN for the server certificate corresponding to the host. This flag should only be set if global CA signature verifcation is enabled, `VerifyCertAtClient` environmental variable is set to `true`, but no verification is desired for a specific host. If enabled with or without `VerifyCertAtClient` enabled, verification of the CA signature and SAN will be skipped.", + "description": "InsecureSkipVerify specifies whether the proxy should skip verifying the CA signature and SAN for the server certificate corresponding to the host. This flag should only be set if global CA signature verification is enabled, `VerifyCertAtClient` environmental variable is set to `true`, but no verification is desired for a specific host. If enabled with or without `VerifyCertAtClient` enabled, verification of the CA signature and SAN will be skipped.", "type": "boolean", "nullable": true } @@ -74,12 +74,12 @@ "type": "object", "properties": { "http1MaxPendingRequests": { - "description": "Maximum number of requests that will be queued while waiting for a ready connection pool connection. Default 1024. Refer to https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/circuit_breaking under which conditions a new connection is created for HTTP2. Please note that this is applicable to both HTTP/1.1 and HTTP2.", + "description": "Maximum number of requests that will be queued while waiting for a ready connection pool connection. Default 2^32-1. Refer to https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/circuit_breaking under which conditions a new connection is created for HTTP2. Please note that this is applicable to both HTTP/1.1 and HTTP2.", "type": "integer", "format": "int32" }, "http2MaxRequests": { - "description": "Maximum number of active requests to a destination. Default 1024. Please note that this is applicable to both HTTP/1.1 and HTTP2.", + "description": "Maximum number of active requests to a destination. Default 2^32-1. Please note that this is applicable to both HTTP/1.1 and HTTP2.", "type": "integer", "format": "int32" }, @@ -472,7 +472,7 @@ } }, "failoverPriority": { - "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing. This is to support traffic failover across different groups of endpoints. Suppose there are total N labels specified: 1. Endpoints matching all N labels with the client proxy have priority P(0) i.e. the highest priority. 2. Endpoints matching the first N-1 labels with the client proxy have priority P(1) i.e. second highest priority. 3. By extension of this logic, endpoints matching only the first label with the client proxy has priority P(N-1) i.e. second lowest priority. 4. All the other endpoints have priority P(N) i.e. lowest priority.", + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing. This is to support traffic failover across different groups of endpoints. Two kinds of labels can be specified: - Specify only label keys `[key1, key2, key3]`, istio would compare the label values of client with endpoints. Suppose there are total N label keys `[key1, key2, key3, ...keyN]` specified: 1. Endpoints matching all N labels with the client proxy have priority P(0) i.e. the highest priority. 2. Endpoints matching the first N-1 labels with the client proxy have priority P(1) i.e. second highest priority. 3. By extension of this logic, endpoints matching only the first label with the client proxy has priority P(N-1) i.e. second lowest priority. 4. All the other endpoints have priority P(N) i.e. lowest priority.", "type": "array", "items": { "type": "string" @@ -527,7 +527,7 @@ "deprecated": true }, "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors. If set to true consecutive_local_origin_failure is taken into account for outlier detection calculations. This should be used when you want to derive the outlier detection status based on the errors seen locally such as failure to connect, timeout while connecting etc. rather than the status code retuned by upstream service. This is especially useful when the upstream service explicitly returns a 5xx for some requests and you want to ignore those responses from upstream service while determining the outlier detection status of a host. Defaults to false.", + "description": "Determines whether to distinguish local origin failures from external errors. If set to true consecutive_local_origin_failure is taken into account for outlier detection calculations. This should be used when you want to derive the outlier detection status based on the errors seen locally such as failure to connect, timeout while connecting etc. rather than the status code returned by upstream service. This is especially useful when the upstream service explicitly returns a 5xx for some requests and you want to ignore those responses from upstream service while determining the outlier detection status of a host. Defaults to false.", "type": "boolean" }, "consecutiveLocalOriginFailures": { diff --git a/vendor/istio.io/api/networking/v1beta1/destination_rule.pb.go b/vendor/istio.io/api/networking/v1beta1/destination_rule.pb.go index c90daada..67464b7a 100644 --- a/vendor/istio.io/api/networking/v1beta1/destination_rule.pb.go +++ b/vendor/istio.io/api/networking/v1beta1/destination_rule.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: networking/v1beta1/destination_rule.proto @@ -194,7 +194,7 @@ const ( LoadBalancerSettings_UNSPECIFIED LoadBalancerSettings_SimpleLB = 0 // Deprecated. Use LEAST_REQUEST instead. // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in networking/v1beta1/destination_rule.proto. LoadBalancerSettings_LEAST_CONN LoadBalancerSettings_SimpleLB = 1 // The random load balancer selects a random healthy host. The random // load balancer generally performs better than round robin if no health @@ -207,7 +207,7 @@ const ( // Envoy for further details. LoadBalancerSettings_PASSTHROUGH LoadBalancerSettings_SimpleLB = 3 // A basic round robin load balancing policy. This is generally unsafe - // for many scenarios (e.g. when enpoint weighting is used) as it can + // for many scenarios (e.g. when endpoint weighting is used) as it can // overburden endpoints. In general, prefer to use LEAST_REQUEST as a // drop-in replacement for ROUND_ROBIN. LoadBalancerSettings_ROUND_ROBIN LoadBalancerSettings_SimpleLB = 4 @@ -1168,13 +1168,13 @@ type OutlierDetection struct { // connection error/failure events qualify as an error. // $hide_from_docs // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in networking/v1beta1/destination_rule.proto. ConsecutiveErrors int32 `protobuf:"varint,1,opt,name=consecutive_errors,json=consecutiveErrors,proto3" json:"consecutive_errors,omitempty"` // Determines whether to distinguish local origin failures from external errors. If set to true // consecutive_local_origin_failure is taken into account for outlier detection calculations. // This should be used when you want to derive the outlier detection status based on the errors // seen locally such as failure to connect, timeout while connecting etc. rather than the status code - // retuned by upstream service. This is especially useful when the upstream service explicitly returns + // returned by upstream service. This is especially useful when the upstream service explicitly returns // a 5xx for some requests and you want to ignore those responses from upstream service while determining // the outlier detection status of a host. // Defaults to false. @@ -1264,7 +1264,7 @@ func (*OutlierDetection) Descriptor() ([]byte, []int) { return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{5} } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in networking/v1beta1/destination_rule.proto. func (x *OutlierDetection) GetConsecutiveErrors() int32 { if x != nil { return x.ConsecutiveErrors @@ -1482,14 +1482,17 @@ type ClientTLSSettings struct { // Should be empty if mode is `ISTIO_MUTUAL`. CaCertificates string `protobuf:"bytes,4,opt,name=ca_certificates,json=caCertificates,proto3" json:"ca_certificates,omitempty"` // The name of the secret that holds the TLS certs for the - // client including the CA certificates. Secret must exist in the - // same namespace with the proxy using the certificates. - // The secret (of type `generic`)should contain the - // following keys and values: `key: `, - // `cert: `, `cacert: `. + // client including the CA certificates. This secret must exist in + // the namespace of the proxy using the certificates. + // An Opaque secret should contain the following keys and values: + // `key: `, `cert: `, `cacert: `, + // `crl: ` // Here CACertificate is used to verify the server certificate. - // Secret of type tls for client certificates along with - // ca.crt key for CA certificates is also supported. + // For mutual TLS, `cacert: ` can be provided in the + // same secret or a separate secret named `-cacert`. + // A TLS secret for client certificates with an additional + // `ca.crt` key for CA certificates and `ca.crl` key for + // certificate revocation list(CRL) is also supported. // Only one of client certificates and CA certificate // or credentialName can be specified. // @@ -1514,7 +1517,7 @@ type ClientTLSSettings struct { Sni string `protobuf:"bytes,6,opt,name=sni,proto3" json:"sni,omitempty"` // InsecureSkipVerify specifies whether the proxy should skip verifying the // CA signature and SAN for the server certificate corresponding to the host. - // This flag should only be set if global CA signature verifcation is + // This flag should only be set if global CA signature verification is // enabled, `VerifyCertAtClient` environmental variable is set to `true`, // but no verification is desired for a specific host. If enabled with or // without `VerifyCertAtClient` enabled, verification of the CA signature and @@ -1683,12 +1686,23 @@ type LocalityLoadBalancerSetting struct { Failover []*LocalityLoadBalancerSetting_Failover `protobuf:"bytes,2,rep,name=failover,proto3" json:"failover,omitempty"` // failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing. // This is to support traffic failover across different groups of endpoints. - // Suppose there are total N labels specified: + // Two kinds of labels can be specified: // - // 1. Endpoints matching all N labels with the client proxy have priority P(0) i.e. the highest priority. - // 2. Endpoints matching the first N-1 labels with the client proxy have priority P(1) i.e. second highest priority. - // 3. By extension of this logic, endpoints matching only the first label with the client proxy has priority P(N-1) i.e. second lowest priority. - // 4. All the other endpoints have priority P(N) i.e. lowest priority. + // - Specify only label keys `[key1, key2, key3]`, istio would compare the label values of client with endpoints. + // Suppose there are total N label keys `[key1, key2, key3, ...keyN]` specified: + // + // 1. Endpoints matching all N labels with the client proxy have priority P(0) i.e. the highest priority. + // 2. Endpoints matching the first N-1 labels with the client proxy have priority P(1) i.e. second highest priority. + // 3. By extension of this logic, endpoints matching only the first label with the client proxy has priority P(N-1) i.e. second lowest priority. + // 4. All the other endpoints have priority P(N) i.e. lowest priority. + // + // - Specify labels with key and value `[key1=value1, key2=value2, key3=value3]`, istio would compare the labels with endpoints. + // Suppose there are total N labels `[key1=value1, key2=value2, key3=value3, ...keyN=valueN]` specified: + // + // 1. Endpoints matching all N labels have priority P(0) i.e. the highest priority. + // 2. Endpoints matching the first N-1 labels have priority P(1) i.e. second highest priority. + // 3. By extension of this logic, endpoints matching only the first label has priority P(N-1) i.e. second lowest priority. + // 4. All the other endpoints have priority P(N) i.e. lowest priority. // // Note: For a label to be considered for match, the previous labels must match, i.e. nth label would be considered matched only if first n-1 labels match. // @@ -1717,6 +1731,17 @@ type LocalityLoadBalancerSetting struct { // 4. endpoints have same [network] but different [region] labels with the client proxy have the fourth highest priority. // 5. all the other endpoints have the same lowest priority. // + // Suppose a service associated endpoints reside in multi clusters, the below example represents: + // 1. endpoints in `clusterA` and has `version=v1` label have P(0) priority. + // 2. endpoints not in `clusterA` but has `version=v1` label have P(1) priority. + // 2. all the other endpoints have P(2) priority. + // + // ```yaml + // failoverPriority: + // - "version=v1" + // - "topology.istio.io/cluster=clusterA" + // ``` + // // Optional: only one of distribute, failover or failoverPriority can be set. // And it should be used together with `OutlierDetection` to detect unhealthy endpoints, otherwise has no effect. FailoverPriority []string `protobuf:"bytes,4,rep,name=failover_priority,json=failoverPriority,proto3" json:"failover_priority,omitempty"` @@ -1988,7 +2013,7 @@ type LoadBalancerSettings_ConsistentHashLB struct { HashAlgorithm isLoadBalancerSettings_ConsistentHashLB_HashAlgorithm `protobuf_oneof:"hash_algorithm"` // Deprecated. Use RingHash instead. // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in networking/v1beta1/destination_rule.proto. MinimumRingSize uint64 `protobuf:"varint,4,opt,name=minimum_ring_size,json=minimumRingSize,proto3" json:"minimum_ring_size,omitempty"` } @@ -2080,7 +2105,7 @@ func (x *LoadBalancerSettings_ConsistentHashLB) GetMaglev() *LoadBalancerSetting return nil } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in networking/v1beta1/destination_rule.proto. func (x *LoadBalancerSettings_ConsistentHashLB) GetMinimumRingSize() uint64 { if x != nil { return x.MinimumRingSize @@ -2402,12 +2427,12 @@ type ConnectionPoolSettings_HTTPSettings struct { unknownFields protoimpl.UnknownFields // Maximum number of requests that will be queued while waiting for - // a ready connection pool connection. Default 1024. + // a ready connection pool connection. Default 2^32-1. // Refer to https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/circuit_breaking // under which conditions a new connection is created for HTTP2. // Please note that this is applicable to both HTTP/1.1 and HTTP2. Http1MaxPendingRequests int32 `protobuf:"varint,1,opt,name=http1_max_pending_requests,json=http1MaxPendingRequests,proto3" json:"http1_max_pending_requests,omitempty"` - // Maximum number of active requests to a destination. Default 1024. + // Maximum number of active requests to a destination. Default 2^32-1. // Please note that this is applicable to both HTTP/1.1 and HTTP2. Http2MaxRequests int32 `protobuf:"varint,2,opt,name=http2_max_requests,json=http2MaxRequests,proto3" json:"http2_max_requests,omitempty"` // Maximum number of requests per connection to a backend. Setting this @@ -2738,369 +2763,368 @@ var file_networking_v1beta1_destination_rule_proto_rawDesc = []byte{ 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa7, 0x02, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa6, 0x02, 0x0a, 0x0f, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, - 0x65, 0x12, 0x18, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x4e, 0x0a, 0x0e, 0x74, - 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, - 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0d, 0x74, 0x72, - 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3a, 0x0a, 0x07, 0x73, - 0x75, 0x62, 0x73, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, - 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x52, 0x07, - 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x5f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x54, 0x6f, 0x12, 0x51, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xa8, 0x08, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x66, - 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x53, 0x0a, 0x0d, 0x6c, 0x6f, 0x61, - 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, - 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x52, 0x0c, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x12, 0x59, - 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6f, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, - 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x57, 0x0a, 0x11, 0x6f, 0x75, 0x74, - 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x10, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, 0x74, 0x6c, - 0x73, 0x12, 0x69, 0x0a, 0x13, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, + 0x65, 0x12, 0x17, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x4e, 0x0a, 0x0e, 0x74, 0x72, + 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, + 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0d, 0x74, 0x72, 0x61, + 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3a, 0x0a, 0x07, 0x73, 0x75, + 0x62, 0x73, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, 0x73, + 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x52, 0x07, 0x73, + 0x75, 0x62, 0x73, 0x65, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x54, 0x6f, 0x12, 0x51, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, + 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xa6, 0x08, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x66, 0x66, + 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x53, 0x0a, 0x0d, 0x6c, 0x6f, 0x61, 0x64, + 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, + 0x0c, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x12, 0x59, 0x0a, + 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x57, 0x0a, 0x11, 0x6f, 0x75, 0x74, 0x6c, + 0x69, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4f, + 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x10, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x3d, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, - 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, - 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x66, - 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x11, 0x70, 0x6f, 0x72, 0x74, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4e, 0x0a, 0x06, - 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x69, - 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x1a, 0x97, 0x03, 0x0a, - 0x11, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x12, 0x3a, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x53, - 0x0a, 0x0d, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0c, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x69, - 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0e, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x57, - 0x0a, 0x11, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x73, 0x74, 0x69, - 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, - 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, + 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, 0x74, 0x6c, 0x73, + 0x12, 0x69, 0x0a, 0x13, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, + 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x66, 0x66, + 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x11, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4e, 0x0a, 0x06, 0x74, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x69, 0x73, + 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x52, 0x06, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x1a, 0x97, 0x03, 0x0a, 0x11, + 0x50, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x12, 0x3a, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x53, 0x0a, + 0x0d, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x1a, 0x7a, 0x0a, 0x0e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x25, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x68, - 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, - 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0b, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, - 0x72, 0x74, 0x22, 0xf3, 0x01, 0x0a, 0x06, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x18, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, - 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x4e, 0x0a, - 0x0e, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0d, - 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x39, 0x0a, - 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x84, 0x0a, 0x0a, 0x14, 0x4c, 0x6f, 0x61, - 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x12, 0x51, 0x0a, 0x06, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x37, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x61, - 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4c, 0x42, 0x48, 0x00, 0x52, 0x06, 0x73, 0x69, - 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x6a, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, + 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0c, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x72, 0x12, 0x59, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x69, 0x73, + 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0e, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x57, 0x0a, + 0x11, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x52, 0x03, 0x74, 0x6c, 0x73, 0x1a, 0x78, 0x0a, 0x0e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x12, 0x24, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x68, 0x6f, + 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x74, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x22, + 0xf2, 0x01, 0x0a, 0x06, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, + 0x75, 0x62, 0x73, 0x65, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x4e, 0x0a, 0x0e, 0x74, 0x72, 0x61, + 0x66, 0x66, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, + 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x66, + 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x82, 0x0a, 0x0a, 0x14, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, + 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x51, 0x0a, + 0x06, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x6f, - 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x42, 0x48, 0x00, - 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, - 0x12, 0x65, 0x0a, 0x13, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6c, 0x62, 0x5f, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, - 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, - 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x62, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x4b, 0x0a, 0x14, 0x77, 0x61, 0x72, 0x6d, 0x75, - 0x70, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x12, 0x77, 0x61, 0x72, 0x6d, 0x75, 0x70, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x63, 0x73, 0x1a, 0xf9, 0x05, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x42, 0x12, 0x2a, 0x0a, 0x10, 0x68, 0x74, 0x74, - 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x68, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x6d, 0x0a, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x63, 0x6f, - 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x69, 0x73, 0x74, - 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x42, 0x2e, 0x48, 0x54, 0x54, 0x50, - 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x68, 0x74, 0x74, 0x70, 0x43, 0x6f, - 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0b, 0x75, - 0x73, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x70, 0x12, 0x3b, 0x0a, 0x19, 0x68, 0x74, - 0x74, 0x70, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x16, 0x68, 0x74, 0x74, 0x70, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x67, 0x0a, 0x09, 0x72, 0x69, 0x6e, 0x67, 0x5f, - 0x68, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x69, 0x73, 0x74, - 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x42, 0x2e, 0x52, 0x69, 0x6e, 0x67, - 0x48, 0x61, 0x73, 0x68, 0x48, 0x01, 0x52, 0x08, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, - 0x12, 0x60, 0x0a, 0x06, 0x6d, 0x61, 0x67, 0x6c, 0x65, 0x76, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x46, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, - 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4c, - 0x42, 0x2e, 0x4d, 0x61, 0x67, 0x4c, 0x65, 0x76, 0x48, 0x01, 0x52, 0x06, 0x6d, 0x61, 0x67, 0x6c, - 0x65, 0x76, 0x12, 0x2e, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x69, - 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x02, 0x18, - 0x01, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, - 0x7a, 0x65, 0x1a, 0x36, 0x0a, 0x08, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2a, + 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x53, 0x69, + 0x6d, 0x70, 0x6c, 0x65, 0x4c, 0x42, 0x48, 0x00, 0x52, 0x06, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, + 0x12, 0x6a, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x68, + 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, + 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x42, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, + 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x65, 0x0a, 0x13, + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6c, 0x62, 0x5f, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, + 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x62, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x12, 0x4b, 0x0a, 0x14, 0x77, 0x61, 0x72, 0x6d, 0x75, 0x70, 0x5f, 0x64, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x77, 0x61, + 0x72, 0x6d, 0x75, 0x70, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x73, + 0x1a, 0xf7, 0x05, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, + 0x61, 0x73, 0x68, 0x4c, 0x42, 0x12, 0x2a, 0x0a, 0x10, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x0e, 0x68, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x6d, 0x0a, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x74, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x42, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x43, 0x6f, 0x6f, 0x6b, + 0x69, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x68, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, + 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, + 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x49, 0x70, 0x12, 0x3b, 0x0a, 0x19, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x16, 0x68, 0x74, 0x74, + 0x70, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x67, 0x0a, 0x09, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x74, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x42, 0x2e, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, + 0x48, 0x01, 0x52, 0x08, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x12, 0x60, 0x0a, 0x06, + 0x6d, 0x61, 0x67, 0x6c, 0x65, 0x76, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x69, + 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x6f, 0x6e, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x42, 0x2e, 0x4d, 0x61, + 0x67, 0x4c, 0x65, 0x76, 0x48, 0x01, 0x52, 0x06, 0x6d, 0x61, 0x67, 0x6c, 0x65, 0x76, 0x12, 0x2e, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, - 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x27, 0x0a, 0x06, 0x4d, 0x61, - 0x67, 0x4c, 0x65, 0x76, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, - 0x69, 0x7a, 0x65, 0x1a, 0x6d, 0x0a, 0x0a, 0x48, 0x54, 0x54, 0x50, 0x43, 0x6f, 0x6f, 0x6b, 0x69, - 0x65, 0x12, 0x18, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, - 0x31, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x03, 0x74, - 0x74, 0x6c, 0x42, 0x0a, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x10, - 0x0a, 0x0e, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, - 0x22, 0x70, 0x0a, 0x08, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4c, 0x42, 0x12, 0x0f, 0x0a, 0x0b, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, - 0x0a, 0x4c, 0x45, 0x41, 0x53, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x10, 0x01, 0x1a, 0x02, 0x08, - 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x10, 0x02, 0x12, 0x0f, 0x0a, - 0x0b, 0x50, 0x41, 0x53, 0x53, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x10, 0x03, 0x12, 0x0f, - 0x0a, 0x0b, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x42, 0x49, 0x4e, 0x10, 0x04, 0x12, - 0x11, 0x0a, 0x0d, 0x4c, 0x45, 0x41, 0x53, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, - 0x10, 0x05, 0x42, 0x0b, 0x0a, 0x09, 0x6c, 0x62, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, - 0x90, 0x09, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, - 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4e, 0x0a, 0x03, 0x74, 0x63, - 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, - 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x43, 0x50, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, 0x74, 0x63, 0x70, 0x12, 0x51, 0x0a, 0x04, 0x68, 0x74, - 0x74, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, - 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x04, 0x68, 0x74, 0x74, 0x70, 0x1a, 0xcc, 0x03, - 0x0a, 0x0b, 0x54, 0x43, 0x50, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x27, 0x0a, - 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x6e, 0x0a, 0x0d, 0x74, 0x63, - 0x70, 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x49, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x43, 0x50, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x54, 0x63, 0x70, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x52, 0x0c, 0x74, 0x63, - 0x70, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x12, 0x51, 0x0a, 0x17, 0x6d, 0x61, - 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x8c, 0x01, - 0x0a, 0x0c, 0x54, 0x63, 0x70, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, - 0x70, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x6d, + 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x36, + 0x0a, 0x08, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x69, + 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x69, + 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x27, 0x0a, 0x06, 0x4d, 0x61, 0x67, 0x4c, 0x65, 0x76, + 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x1a, + 0x6b, 0x0a, 0x0a, 0x48, 0x54, 0x54, 0x50, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x17, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x30, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x1a, 0x83, 0x04, 0x0a, - 0x0c, 0x48, 0x54, 0x54, 0x50, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3b, 0x0a, - 0x1a, 0x68, 0x74, 0x74, 0x70, 0x31, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x17, 0x68, 0x74, 0x74, 0x70, 0x31, 0x4d, 0x61, 0x78, 0x50, 0x65, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x68, 0x74, - 0x74, 0x70, 0x32, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x68, 0x74, 0x74, 0x70, 0x32, 0x4d, 0x61, 0x78, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x3d, 0x0a, 0x1b, 0x6d, 0x61, 0x78, 0x5f, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x6d, - 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, - 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, - 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x69, 0x64, 0x6c, 0x65, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x64, 0x6c, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x79, 0x0a, 0x11, 0x68, 0x32, 0x5f, 0x75, 0x70, 0x67, - 0x72, 0x61, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x4d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x42, 0x0a, 0x0a, 0x08, + 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x10, 0x0a, 0x0e, 0x68, 0x61, 0x73, 0x68, + 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x22, 0x70, 0x0a, 0x08, 0x53, 0x69, + 0x6d, 0x70, 0x6c, 0x65, 0x4c, 0x42, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0a, 0x4c, 0x45, 0x41, 0x53, 0x54, + 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x52, + 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x41, 0x53, 0x53, 0x54, + 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x4f, 0x55, 0x4e, + 0x44, 0x5f, 0x52, 0x4f, 0x42, 0x49, 0x4e, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x45, 0x41, + 0x53, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x05, 0x42, 0x0b, 0x0a, 0x09, + 0x6c, 0x62, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x90, 0x09, 0x0a, 0x16, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4e, 0x0a, 0x03, 0x74, 0x63, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x48, 0x32, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x52, 0x0f, 0x68, 0x32, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, - 0x75, 0x73, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x22, 0x3f, 0x0a, 0x0f, 0x48, 0x32, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, - 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x4f, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x55, 0x50, 0x47, 0x52, - 0x41, 0x44, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, - 0x10, 0x02, 0x22, 0x8a, 0x05, 0x0a, 0x10, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, - 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x73, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x76, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x4a, 0x0a, 0x22, 0x73, 0x70, - 0x6c, 0x69, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x6c, 0x6f, 0x63, - 0x61, 0x6c, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x45, 0x78, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x67, 0x0a, 0x21, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6f, 0x72, 0x69, 0x67, - 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x1e, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, - 0x6c, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x12, - 0x5a, 0x0a, 0x1a, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x52, 0x0a, 0x16, 0x63, - 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x35, 0x78, 0x78, 0x5f, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, - 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x73, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x35, 0x78, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, - 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x43, 0x50, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, + 0x03, 0x74, 0x63, 0x70, 0x12, 0x51, 0x0a, 0x04, 0x68, 0x74, 0x74, 0x70, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x52, 0x04, 0x68, 0x74, 0x74, 0x70, 0x1a, 0xcc, 0x03, 0x0a, 0x0b, 0x54, 0x43, 0x50, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x12, 0x6e, 0x0a, 0x0d, 0x74, 0x63, 0x70, 0x5f, 0x6b, 0x65, 0x65, 0x70, + 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x69, 0x73, + 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x43, + 0x50, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x63, 0x70, 0x4b, 0x65, 0x65, + 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x52, 0x0c, 0x74, 0x63, 0x70, 0x4b, 0x65, 0x65, 0x70, 0x61, + 0x6c, 0x69, 0x76, 0x65, 0x12, 0x51, 0x0a, 0x17, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x15, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x8c, 0x01, 0x0a, 0x0c, 0x54, 0x63, 0x70, 0x4b, + 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x6f, 0x62, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x73, + 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, + 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x47, 0x0a, 0x12, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x65, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x62, - 0x61, 0x73, 0x65, 0x45, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x30, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x6d, - 0x61, 0x78, 0x45, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, - 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x69, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, - 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, - 0x69, 0x6e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x22, - 0xd2, 0x03, 0x0a, 0x11, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x54, 0x4c, 0x53, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, - 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, - 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x65, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, - 0x61, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x27, 0x0a, - 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x6e, 0x69, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x73, 0x6e, 0x69, 0x12, 0x4c, 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, - 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, - 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x22, 0x40, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, - 0x07, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x49, - 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, - 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x53, 0x54, 0x49, 0x4f, 0x5f, 0x4d, 0x55, 0x54, 0x55, - 0x41, 0x4c, 0x10, 0x03, 0x22, 0xa2, 0x04, 0x0a, 0x1b, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x1a, 0x83, 0x04, 0x0a, 0x0c, 0x48, 0x54, 0x54, 0x50, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x31, + 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x68, 0x74, 0x74, + 0x70, 0x31, 0x4d, 0x61, 0x78, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x68, 0x74, 0x74, 0x70, 0x32, 0x5f, 0x6d, 0x61, + 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x10, 0x68, 0x74, 0x74, 0x70, 0x32, 0x4d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x73, 0x12, 0x3d, 0x0a, 0x1b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x12, 0x79, 0x0a, 0x11, 0x68, 0x32, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4d, 0x2e, 0x69, 0x73, + 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x48, 0x54, + 0x54, 0x50, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x48, 0x32, 0x55, 0x70, 0x67, + 0x72, 0x61, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0f, 0x68, 0x32, 0x55, 0x70, + 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x75, + 0x73, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0x3f, 0x0a, 0x0f, 0x48, + 0x32, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0b, + 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x44, + 0x4f, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0x01, 0x12, + 0x0b, 0x0a, 0x07, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0x02, 0x22, 0x8a, 0x05, 0x0a, + 0x10, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x31, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x73, 0x12, 0x4a, 0x0a, 0x22, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x5f, 0x65, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6f, 0x72, 0x69, + 0x67, 0x69, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x1e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4c, + 0x6f, 0x63, 0x61, 0x6c, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, + 0x12, 0x67, 0x0a, 0x21, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x69, + 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, + 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1e, 0x63, 0x6f, 0x6e, 0x73, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4f, 0x72, 0x69, 0x67, 0x69, + 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x1a, 0x63, 0x6f, 0x6e, + 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x63, 0x6f, 0x6e, + 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x52, 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x35, 0x78, 0x78, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, + 0x35, 0x78, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x12, 0x47, 0x0a, 0x12, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6d, 0x61, 0x78, + 0x5f, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x45, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x6d, + 0x69, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x48, 0x65, 0x61, 0x6c, + 0x74, 0x68, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x22, 0xd1, 0x03, 0x0a, 0x11, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, + 0x4c, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, + 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, + 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x4c, 0x53, 0x6d, 0x6f, + 0x64, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, + 0x12, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, + 0x0f, 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x2a, 0x0a, 0x11, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x73, + 0x6e, 0x69, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x6e, 0x69, 0x12, 0x4c, 0x0a, + 0x14, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, + 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, + 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x22, 0x40, 0x0a, 0x07, 0x54, + 0x4c, 0x53, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, + 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x01, 0x12, + 0x0a, 0x0a, 0x06, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x49, + 0x53, 0x54, 0x49, 0x4f, 0x5f, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x10, 0x03, 0x22, 0xa2, 0x04, + 0x0a, 0x1b, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x60, 0x0a, + 0x0a, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x40, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, + 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x5a, 0x0a, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, + 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, + 0x72, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x11, 0x66, + 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, + 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0xb1, + 0x01, 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, + 0x6d, 0x12, 0x58, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, + 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x12, 0x60, 0x0a, 0x0a, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, - 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, - 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x5a, 0x0a, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, - 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, - 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, - 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x70, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x66, - 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, - 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0xb1, 0x01, 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x58, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x69, 0x73, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, 0x54, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x02, - 0x74, 0x6f, 0x1a, 0x35, 0x0a, 0x07, 0x54, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x2e, 0x0a, 0x08, 0x46, 0x61, 0x69, - 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x42, 0x21, 0x5a, 0x1f, 0x69, 0x73, 0x74, - 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, + 0x54, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x02, 0x74, 0x6f, 0x1a, 0x35, 0x0a, 0x07, 0x54, + 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x2e, 0x0a, 0x08, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, + 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x74, 0x6f, 0x42, 0x21, 0x5a, 0x1f, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/vendor/istio.io/api/networking/v1beta1/destination_rule.proto b/vendor/istio.io/api/networking/v1beta1/destination_rule.proto index 09262530..a144b722 100644 --- a/vendor/istio.io/api/networking/v1beta1/destination_rule.proto +++ b/vendor/istio.io/api/networking/v1beta1/destination_rule.proto @@ -494,7 +494,7 @@ message LoadBalancerSettings { PASSTHROUGH = 3; // A basic round robin load balancing policy. This is generally unsafe - // for many scenarios (e.g. when enpoint weighting is used) as it can + // for many scenarios (e.g. when endpoint weighting is used) as it can // overburden endpoints. In general, prefer to use LEAST_REQUEST as a // drop-in replacement for ROUND_ROBIN. ROUND_ROBIN = 4; @@ -532,11 +532,11 @@ message LoadBalancerSettings { // single virtual node. uint64 minimum_ring_size = 1; }; - + message MagLev { - // The table size for Maglev hashing. This helps in controlling the + // The table size for Maglev hashing. This helps in controlling the // disruption when the backend hosts change. - // Increasing the table size reduces the amount of disruption. + // Increasing the table size reduces the amount of disruption. uint64 table_size = 1; }; // Describes a HTTP cookie that will be used as the hash key for the @@ -567,7 +567,7 @@ message LoadBalancerSettings { string http_query_parameter_name = 5; }; - // The hash algorithm to use. + // The hash algorithm to use. // Please refer to https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/load_balancers#ring-hash // and https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/load_balancers#maglev for // considerations on choosing an algorithm. @@ -575,7 +575,7 @@ message LoadBalancerSettings { oneof hash_algorithm { // The ring/modulo hash load balancer implements consistent hashing to backend hosts. RingHash ring_hash = 6; - // The Maglev load balancer implements consistent hashing to backend hosts. + // The Maglev load balancer implements consistent hashing to backend hosts. MagLev maglev = 7; }; @@ -601,8 +601,8 @@ message LoadBalancerSettings { // remains in warmup mode starting from its creation time for the duration of this window and // Istio progressively increases amount of traffic for that endpoint instead of sending proportional amount of traffic. // This should be enabled for services that require warm up time to serve full production load with reasonable latency. - // Please note that this is most effective when few new endpoints come up like scale event in Kubernetes. When all the - // endpoints are relatively new like new deployment, this is not very effective as all endpoints end up getting same + // Please note that this is most effective when few new endpoints come up like scale event in Kubernetes. When all the + // endpoints are relatively new like new deployment, this is not very effective as all endpoints end up getting same // amount of requests. // Currently this is only supported for ROUND_ROBIN and LEAST_REQUEST load balancers. google.protobuf.Duration warmup_duration_secs = 4; @@ -697,13 +697,13 @@ message ConnectionPoolSettings { // Settings applicable to HTTP1.1/HTTP2/GRPC connections. message HTTPSettings { // Maximum number of requests that will be queued while waiting for - // a ready connection pool connection. Default 1024. + // a ready connection pool connection. Default 2^32-1. // Refer to https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/circuit_breaking // under which conditions a new connection is created for HTTP2. // Please note that this is applicable to both HTTP/1.1 and HTTP2. int32 http1_max_pending_requests = 1; - // Maximum number of active requests to a destination. Default 1024. + // Maximum number of active requests to a destination. Default 2^32-1. // Please note that this is applicable to both HTTP/1.1 and HTTP2. int32 http2_max_requests = 2; @@ -826,7 +826,7 @@ message OutlierDetection { // consecutive_local_origin_failure is taken into account for outlier detection calculations. // This should be used when you want to derive the outlier detection status based on the errors // seen locally such as failure to connect, timeout while connecting etc. rather than the status code - // retuned by upstream service. This is especially useful when the upstream service explicitly returns + // returned by upstream service. This is especially useful when the upstream service explicitly returns // a 5xx for some requests and you want to ignore those responses from upstream service while determining // the outlier detection status of a host. // Defaults to false. @@ -1042,14 +1042,17 @@ message ClientTLSSettings { string ca_certificates = 4; // The name of the secret that holds the TLS certs for the - // client including the CA certificates. Secret must exist in the - // same namespace with the proxy using the certificates. - // The secret (of type `generic`)should contain the - // following keys and values: `key: `, - // `cert: `, `cacert: `. + // client including the CA certificates. This secret must exist in + // the namespace of the proxy using the certificates. + // An Opaque secret should contain the following keys and values: + // `key: `, `cert: `, `cacert: `, + // `crl: ` // Here CACertificate is used to verify the server certificate. - // Secret of type tls for client certificates along with - // ca.crt key for CA certificates is also supported. + // For mutual TLS, `cacert: ` can be provided in the + // same secret or a separate secret named `-cacert`. + // A TLS secret for client certificates with an additional + // `ca.crt` key for CA certificates and `ca.crl` key for + // certificate revocation list(CRL) is also supported. // Only one of client certificates and CA certificate // or credentialName can be specified. // @@ -1077,7 +1080,7 @@ message ClientTLSSettings { // InsecureSkipVerify specifies whether the proxy should skip verifying the // CA signature and SAN for the server certificate corresponding to the host. - // This flag should only be set if global CA signature verifcation is + // This flag should only be set if global CA signature verification is // enabled, `VerifyCertAtClient` environmental variable is set to `true`, // but no verification is desired for a specific host. If enabled with or // without `VerifyCertAtClient` enabled, verification of the CA signature and @@ -1188,12 +1191,22 @@ message LocalityLoadBalancerSetting{ // failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing. // This is to support traffic failover across different groups of endpoints. - // Suppose there are total N labels specified: + // Two kinds of labels can be specified: + // - Specify only label keys `[key1, key2, key3]`, istio would compare the label values of client with endpoints. + // Suppose there are total N label keys `[key1, key2, key3, ...keyN]` specified: + // + // 1. Endpoints matching all N labels with the client proxy have priority P(0) i.e. the highest priority. + // 2. Endpoints matching the first N-1 labels with the client proxy have priority P(1) i.e. second highest priority. + // 3. By extension of this logic, endpoints matching only the first label with the client proxy has priority P(N-1) i.e. second lowest priority. + // 4. All the other endpoints have priority P(N) i.e. lowest priority. // - // 1. Endpoints matching all N labels with the client proxy have priority P(0) i.e. the highest priority. - // 2. Endpoints matching the first N-1 labels with the client proxy have priority P(1) i.e. second highest priority. - // 3. By extension of this logic, endpoints matching only the first label with the client proxy has priority P(N-1) i.e. second lowest priority. - // 4. All the other endpoints have priority P(N) i.e. lowest priority. + // - Specify labels with key and value `[key1=value1, key2=value2, key3=value3]`, istio would compare the labels with endpoints. + // Suppose there are total N labels `[key1=value1, key2=value2, key3=value3, ...keyN=valueN]` specified: + // + // 1. Endpoints matching all N labels have priority P(0) i.e. the highest priority. + // 2. Endpoints matching the first N-1 labels have priority P(1) i.e. second highest priority. + // 3. By extension of this logic, endpoints matching only the first label has priority P(N-1) i.e. second lowest priority. + // 4. All the other endpoints have priority P(N) i.e. lowest priority. // // Note: For a label to be considered for match, the previous labels must match, i.e. nth label would be considered matched only if first n-1 labels match. // @@ -1222,6 +1235,17 @@ message LocalityLoadBalancerSetting{ // 4. endpoints have same [network] but different [region] labels with the client proxy have the fourth highest priority. // 5. all the other endpoints have the same lowest priority. // + // Suppose a service associated endpoints reside in multi clusters, the below example represents: + // 1. endpoints in `clusterA` and has `version=v1` label have P(0) priority. + // 2. endpoints not in `clusterA` but has `version=v1` label have P(1) priority. + // 2. all the other endpoints have P(2) priority. + // + // ```yaml + // failoverPriority: + // - "version=v1" + // - "topology.istio.io/cluster=clusterA" + // ``` + // // Optional: only one of distribute, failover or failoverPriority can be set. // And it should be used together with `OutlierDetection` to detect unhealthy endpoints, otherwise has no effect. repeated string failover_priority = 4; diff --git a/vendor/istio.io/api/networking/v1beta1/gateway.gen.json b/vendor/istio.io/api/networking/v1beta1/gateway.gen.json index e5014de0..a0171758 100644 --- a/vendor/istio.io/api/networking/v1beta1/gateway.gen.json +++ b/vendor/istio.io/api/networking/v1beta1/gateway.gen.json @@ -99,11 +99,11 @@ "type": "string" }, "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`. The path to a file containing certificate authority certificates to use in verifying a presented client side certificate.", + "description": "REQUIRED if mode is `MUTUAL` or `OPTIONAL_MUTUAL`. The path to a file containing certificate authority certificates to use in verifying a presented client side certificate.", "type": "string" }, "credentialName": { - "description": "For gateways running on Kubernetes, the name of the secret that holds the TLS certs including the CA certificates. Applicable only on Kubernetes. The secret (of type `generic`) should contain the following keys and values: `key: \u003cprivateKey\u003e` and `cert: \u003cserverCert\u003e`. For mutual TLS, `cacert: \u003cCACertificate\u003e` can be provided in the same secret or a separate secret named `\u003csecret\u003e-cacert`. Secret of type tls for server certificates along with ca.crt key for CA certificates is also supported. Only one of server certificates and CA certificate or credentialName can be specified.", + "description": "For gateways running on Kubernetes, the name of the secret that holds the TLS certs including the CA certificates. Applicable only on Kubernetes. An Opaque secret should contain the following keys and values: `key: \u003cprivateKey\u003e` and `cert: \u003cserverCert\u003e`. For mutual TLS, `cacert: \u003cCACertificate\u003e` and `crl: \u003cCertificateRevocationList\u003e` can be provided in the same secret or a separate secret named `\u003csecret\u003e-cacert`. A TLS secret for server certificates with an additional `tls.ocsp-staple` key for specifying OCSP staple information, `ca.crt` key for CA certificates and `ca.crl` for certificate revocation list is also supported. Only one of server certificates and CA certificate or credentialName can be specified.", "type": "string" }, "subjectAltNames": { @@ -134,7 +134,7 @@ "$ref": "#/components/schemas/istio.networking.v1beta1.ServerTLSSettings.TLSProtocol" }, "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list. Otherwise default to the default cipher list supported by Envoy.", + "description": "Optional: If specified, only support the specified cipher list. Otherwise default to the default cipher list supported by Envoy as specified [here](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/transport_sockets/tls/v3/common.proto). The supported list of ciphers are: * `ECDHE-ECDSA-AES128-GCM-SHA256` * `ECDHE-RSA-AES128-GCM-SHA256` * `ECDHE-ECDSA-AES256-GCM-SHA384` * `ECDHE-RSA-AES256-GCM-SHA384` * `ECDHE-ECDSA-CHACHA20-POLY1305` * `ECDHE-RSA-CHACHA20-POLY1305` * `ECDHE-ECDSA-AES128-SHA` * `ECDHE-RSA-AES128-SHA` * `ECDHE-ECDSA-AES256-SHA` * `ECDHE-RSA-AES256-SHA` * `AES128-GCM-SHA256` * `AES256-GCM-SHA384` * `AES128-SHA` * `AES256-SHA` * `DES-CBC3-SHA`", "type": "array", "items": { "type": "string" @@ -161,7 +161,8 @@ "SIMPLE", "MUTUAL", "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" + "ISTIO_MUTUAL", + "OPTIONAL_MUTUAL" ] } } diff --git a/vendor/istio.io/api/networking/v1beta1/gateway.pb.go b/vendor/istio.io/api/networking/v1beta1/gateway.pb.go index 5d594b0a..e6ab49f5 100644 --- a/vendor/istio.io/api/networking/v1beta1/gateway.pb.go +++ b/vendor/istio.io/api/networking/v1beta1/gateway.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: networking/v1beta1/gateway.proto @@ -376,10 +376,13 @@ const ( // match criterion in a VirtualService TLS route to determine // the destination service from the service registry. ServerTLSSettings_PASSTHROUGH ServerTLSSettings_TLSmode = 0 - // Secure connections with standard TLS semantics. + // Secure connections with standard TLS semantics. In this mode + // client certificate is not requested during handshake. ServerTLSSettings_SIMPLE ServerTLSSettings_TLSmode = 1 // Secure connections to the downstream using mutual TLS by // presenting server certificates for authentication. + // A client certificate will also be requested during the handshake and + // at least one valid certificate is required to be sent by the client. ServerTLSSettings_MUTUAL ServerTLSSettings_TLSmode = 2 // Similar to the passthrough mode, except servers with this TLS // mode do not require an associated VirtualService to map from @@ -400,6 +403,13 @@ const ( // for mTLS authentication. When this mode is used, all other // fields in `TLSOptions` should be empty. ServerTLSSettings_ISTIO_MUTUAL ServerTLSSettings_TLSmode = 4 + // Similar to MUTUAL mode, except that the client certificate + // is optional. Unlike SIMPLE mode, A client certificate will + // still be explicitly requested during handshake, but the client + // is not required to send a certificate. If a client certificate + // is presented, it will be validated. ca_certificates should + // be specified for validating client certificates. + ServerTLSSettings_OPTIONAL_MUTUAL ServerTLSSettings_TLSmode = 5 ) // Enum value maps for ServerTLSSettings_TLSmode. @@ -410,6 +420,7 @@ var ( 2: "MUTUAL", 3: "AUTO_PASSTHROUGH", 4: "ISTIO_MUTUAL", + 5: "OPTIONAL_MUTUAL", } ServerTLSSettings_TLSmode_value = map[string]int32{ "PASSTHROUGH": 0, @@ -417,6 +428,7 @@ var ( "MUTUAL": 2, "AUTO_PASSTHROUGH": 3, "ISTIO_MUTUAL": 4, + "OPTIONAL_MUTUAL": 5, } ) @@ -911,7 +923,7 @@ type Port struct { // received. Applicable only when used with ServiceEntries. // $hide_from_docs // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in networking/v1beta1/gateway.proto. TargetPort uint32 `protobuf:"varint,4,opt,name=target_port,json=targetPort,proto3" json:"target_port,omitempty"` } @@ -968,7 +980,7 @@ func (x *Port) GetName() string { return "" } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in networking/v1beta1/gateway.proto. func (x *Port) GetTargetPort() uint32 { if x != nil { return x.TargetPort @@ -994,19 +1006,19 @@ type ServerTLSSettings struct { // REQUIRED if mode is `SIMPLE` or `MUTUAL`. The path to the file // holding the server's private key. PrivateKey string `protobuf:"bytes,4,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` - // REQUIRED if mode is `MUTUAL`. The path to a file containing - // certificate authority certificates to use in verifying a presented + // REQUIRED if mode is `MUTUAL` or `OPTIONAL_MUTUAL`. The path to a file + // containing certificate authority certificates to use in verifying a presented // client side certificate. CaCertificates string `protobuf:"bytes,5,opt,name=ca_certificates,json=caCertificates,proto3" json:"ca_certificates,omitempty"` // For gateways running on Kubernetes, the name of the secret that // holds the TLS certs including the CA certificates. Applicable - // only on Kubernetes. The secret (of type `generic`) should - // contain the following keys and values: `key: - // ` and `cert: `. For mutual TLS, - // `cacert: ` can be provided in the same secret or - // a separate secret named `-cacert`. - // Secret of type tls for server certificates along with - // ca.crt key for CA certificates is also supported. + // only on Kubernetes. An Opaque secret should contain the following + // keys and values: `key: ` and `cert: `. + // For mutual TLS, `cacert: ` and `crl: ` + // can be provided in the same secret or a separate secret named `-cacert`. + // A TLS secret for server certificates with an additional `tls.ocsp-staple` key + // for specifying OCSP staple information, `ca.crt` key for CA certificates + // and `ca.crl` for certificate revocation list is also supported. // Only one of server certificates and CA certificate // or credentialName can be specified. CredentialName string `protobuf:"bytes,10,opt,name=credential_name,json=credentialName,proto3" json:"credential_name,omitempty"` @@ -1035,7 +1047,24 @@ type ServerTLSSettings struct { // Optional: Maximum TLS protocol version. MaxProtocolVersion ServerTLSSettings_TLSProtocol `protobuf:"varint,8,opt,name=max_protocol_version,json=maxProtocolVersion,proto3,enum=istio.networking.v1beta1.ServerTLSSettings_TLSProtocol" json:"max_protocol_version,omitempty"` // Optional: If specified, only support the specified cipher list. - // Otherwise default to the default cipher list supported by Envoy. + // Otherwise default to the default cipher list supported by Envoy + // as specified [here](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/transport_sockets/tls/v3/common.proto). + // The supported list of ciphers are: + // * `ECDHE-ECDSA-AES128-GCM-SHA256` + // * `ECDHE-RSA-AES128-GCM-SHA256` + // * `ECDHE-ECDSA-AES256-GCM-SHA384` + // * `ECDHE-RSA-AES256-GCM-SHA384` + // * `ECDHE-ECDSA-CHACHA20-POLY1305` + // * `ECDHE-RSA-CHACHA20-POLY1305` + // * `ECDHE-ECDSA-AES128-SHA` + // * `ECDHE-RSA-AES128-SHA` + // * `ECDHE-ECDSA-AES256-SHA` + // * `ECDHE-RSA-AES256-SHA` + // * `AES128-GCM-SHA256` + // * `AES256-GCM-SHA384` + // * `AES128-SHA` + // * `AES256-SHA` + // * `DES-CBC3-SHA` CipherSuites []string `protobuf:"bytes,9,rep,name=cipher_suites,json=cipherSuites,proto3" json:"cipher_suites,omitempty"` } @@ -1163,102 +1192,103 @@ var file_networking_v1beta1_gateway_proto_rawDesc = []byte{ 0x74, 0x6f, 0x12, 0x18, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, - 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdb, 0x01, - 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x40, 0x0a, 0x07, 0x73, 0x65, 0x72, + 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd9, 0x01, + 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x3f, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x42, 0x04, 0xe2, 0x41, - 0x01, 0x02, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x08, 0x73, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, - 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, - 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0x3b, - 0x0a, 0x0d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf0, 0x01, 0x0a, 0x06, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x50, 0x6f, 0x72, 0x74, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x62, 0x69, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, - 0x12, 0x3d, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, - 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, - 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, - 0x29, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x85, - 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1c, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x06, 0x6e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x23, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x06, 0x0a, 0x11, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x25, 0x0a, 0x0e, - 0x68, 0x74, 0x74, 0x70, 0x73, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, 0x74, 0x74, 0x70, 0x73, 0x52, 0x65, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x12, 0x47, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x50, 0x0a, 0x08, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x69, + 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0x3b, 0x0a, 0x0d, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xee, 0x01, 0x0a, 0x06, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, + 0x72, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x69, 0x6e, + 0x64, 0x12, 0x19, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x3d, 0x0a, 0x03, + 0x74, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x4c, 0x53, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x04, 0x50, + 0x6f, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0b, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x22, + 0xfe, 0x06, 0x0a, 0x11, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x5f, 0x72, + 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, + 0x74, 0x74, 0x70, 0x73, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x47, 0x0a, 0x04, + 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, + 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x4c, 0x53, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x4c, 0x53, 0x6d, 0x6f, 0x64, 0x65, 0x52, + 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, + 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x11, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x63, 0x61, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x27, + 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x75, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x63, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x6b, 0x69, 0x18, 0x0b, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x70, 0x6b, 0x69, 0x12, 0x36, 0x0a, 0x17, 0x76, + 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x76, 0x65, + 0x72, 0x69, 0x66, 0x79, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, + 0x61, 0x73, 0x68, 0x12, 0x69, 0x0a, 0x14, 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x37, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, - 0x4c, 0x53, 0x6d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x12, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, - 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, - 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, - 0x0a, 0x11, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x76, 0x65, - 0x72, 0x69, 0x66, 0x79, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x5f, 0x73, 0x70, 0x6b, 0x69, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x76, 0x65, 0x72, - 0x69, 0x66, 0x79, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x70, - 0x6b, 0x69, 0x12, 0x36, 0x0a, 0x17, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x63, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0c, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x15, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x69, 0x0a, 0x14, 0x6d, 0x69, - 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x4c, 0x53, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x52, 0x12, 0x6d, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x69, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x54, 0x4c, 0x53, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x12, 0x6d, 0x61, - 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, - 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, - 0x75, 0x69, 0x74, 0x65, 0x73, 0x22, 0x5a, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x6d, 0x6f, 0x64, 0x65, - 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x41, 0x53, 0x53, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x10, - 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, - 0x06, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x55, 0x54, - 0x4f, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x10, 0x03, 0x12, - 0x10, 0x0a, 0x0c, 0x49, 0x53, 0x54, 0x49, 0x4f, 0x5f, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x10, - 0x04, 0x22, 0x4f, 0x0a, 0x0b, 0x54, 0x4c, 0x53, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x4c, 0x53, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x0b, - 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x56, 0x31, 0x5f, 0x30, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x54, - 0x4c, 0x53, 0x56, 0x31, 0x5f, 0x31, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x56, - 0x31, 0x5f, 0x32, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x56, 0x31, 0x5f, 0x33, - 0x10, 0x04, 0x42, 0x21, 0x5a, 0x1f, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x4c, 0x53, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x12, 0x6d, 0x69, 0x6e, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x69, + 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x69, + 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x4c, + 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x4c, 0x53, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x69, 0x70, + 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0c, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x22, 0x6f, + 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x41, 0x53, + 0x53, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x49, + 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, + 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x54, + 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x53, 0x54, 0x49, + 0x4f, 0x5f, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, + 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x10, 0x05, 0x22, + 0x4f, 0x0a, 0x0b, 0x54, 0x4c, 0x53, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x0c, + 0x0a, 0x08, 0x54, 0x4c, 0x53, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, + 0x54, 0x4c, 0x53, 0x56, 0x31, 0x5f, 0x30, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, + 0x56, 0x31, 0x5f, 0x31, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x56, 0x31, 0x5f, + 0x32, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x56, 0x31, 0x5f, 0x33, 0x10, 0x04, + 0x42, 0x21, 0x5a, 0x1f, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/vendor/istio.io/api/networking/v1beta1/gateway.proto b/vendor/istio.io/api/networking/v1beta1/gateway.proto index 4683809a..bd22e275 100644 --- a/vendor/istio.io/api/networking/v1beta1/gateway.proto +++ b/vendor/istio.io/api/networking/v1beta1/gateway.proto @@ -623,11 +623,14 @@ message ServerTLSSettings { // the destination service from the service registry. PASSTHROUGH = 0; - // Secure connections with standard TLS semantics. + // Secure connections with standard TLS semantics. In this mode + // client certificate is not requested during handshake. SIMPLE = 1; // Secure connections to the downstream using mutual TLS by // presenting server certificates for authentication. + // A client certificate will also be requested during the handshake and + // at least one valid certificate is required to be sent by the client. MUTUAL = 2; // Similar to the passthrough mode, except servers with this TLS @@ -650,6 +653,14 @@ message ServerTLSSettings { // for mTLS authentication. When this mode is used, all other // fields in `TLSOptions` should be empty. ISTIO_MUTUAL = 4; + + // Similar to MUTUAL mode, except that the client certificate + // is optional. Unlike SIMPLE mode, A client certificate will + // still be explicitly requested during handshake, but the client + // is not required to send a certificate. If a client certificate + // is presented, it will be validated. ca_certificates should + // be specified for validating client certificates. + OPTIONAL_MUTUAL = 5; }; // Optional: Indicates whether connections to this port should be @@ -665,20 +676,20 @@ message ServerTLSSettings { // holding the server's private key. string private_key = 4; - // REQUIRED if mode is `MUTUAL`. The path to a file containing - // certificate authority certificates to use in verifying a presented + // REQUIRED if mode is `MUTUAL` or `OPTIONAL_MUTUAL`. The path to a file + // containing certificate authority certificates to use in verifying a presented // client side certificate. string ca_certificates = 5; // For gateways running on Kubernetes, the name of the secret that // holds the TLS certs including the CA certificates. Applicable - // only on Kubernetes. The secret (of type `generic`) should - // contain the following keys and values: `key: - // ` and `cert: `. For mutual TLS, - // `cacert: ` can be provided in the same secret or - // a separate secret named `-cacert`. - // Secret of type tls for server certificates along with - // ca.crt key for CA certificates is also supported. + // only on Kubernetes. An Opaque secret should contain the following + // keys and values: `key: ` and `cert: `. + // For mutual TLS, `cacert: ` and `crl: ` + // can be provided in the same secret or a separate secret named `-cacert`. + // A TLS secret for server certificates with an additional `tls.ocsp-staple` key + // for specifying OCSP staple information, `ca.crt` key for CA certificates + // and `ca.crl` for certificate revocation list is also supported. // Only one of server certificates and CA certificate // or credentialName can be specified. string credential_name = 10; @@ -731,6 +742,23 @@ message ServerTLSSettings { TLSProtocol max_protocol_version = 8; // Optional: If specified, only support the specified cipher list. - // Otherwise default to the default cipher list supported by Envoy. + // Otherwise default to the default cipher list supported by Envoy + // as specified [here](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/transport_sockets/tls/v3/common.proto). + // The supported list of ciphers are: + // * `ECDHE-ECDSA-AES128-GCM-SHA256` + // * `ECDHE-RSA-AES128-GCM-SHA256` + // * `ECDHE-ECDSA-AES256-GCM-SHA384` + // * `ECDHE-RSA-AES256-GCM-SHA384` + // * `ECDHE-ECDSA-CHACHA20-POLY1305` + // * `ECDHE-RSA-CHACHA20-POLY1305` + // * `ECDHE-ECDSA-AES128-SHA` + // * `ECDHE-RSA-AES128-SHA` + // * `ECDHE-ECDSA-AES256-SHA` + // * `ECDHE-RSA-AES256-SHA` + // * `AES128-GCM-SHA256` + // * `AES256-GCM-SHA384` + // * `AES128-SHA` + // * `AES256-SHA` + // * `DES-CBC3-SHA` repeated string cipher_suites = 9; } diff --git a/vendor/istio.io/api/networking/v1beta1/proxy_config.pb.go b/vendor/istio.io/api/networking/v1beta1/proxy_config.pb.go index 97b927bd..50d84caf 100644 --- a/vendor/istio.io/api/networking/v1beta1/proxy_config.pb.go +++ b/vendor/istio.io/api/networking/v1beta1/proxy_config.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: networking/v1beta1/proxy_config.proto diff --git a/vendor/istio.io/api/networking/v1beta1/service_entry.gen.json b/vendor/istio.io/api/networking/v1beta1/service_entry.gen.json index 7196f455..6452a5aa 100644 --- a/vendor/istio.io/api/networking/v1beta1/service_entry.gen.json +++ b/vendor/istio.io/api/networking/v1beta1/service_entry.gen.json @@ -108,7 +108,7 @@ "type": "object", "properties": { "address": { - "description": "Address associated with the network endpoint without the port. Domain names can be used if and only if the resolution is set to DNS, and must be fully-qualified without wildcards. Use the form unix:///absolute/path/to/socket for Unix domain socket endpoints.", + "description": "Address associated with the network endpoint without the port. Domain names can be used if and only if the resolution is set to DNS, and must be fully-qualified without wildcards. Use the form unix:///absolute/path/to/socket for Unix domain socket endpoints. If address is empty, network must be specified.", "type": "string" }, "ports": { @@ -126,7 +126,7 @@ } }, "network": { - "description": "Network enables Istio to group endpoints resident in the same L3 domain/network. All endpoints in the same network are assumed to be directly reachable from one another. When endpoints in different networks cannot reach each other directly, an Istio Gateway can be used to establish connectivity (usually using the `AUTO_PASSTHROUGH` mode in a Gateway Server). This is an advanced configuration used typically for spanning an Istio mesh over multiple clusters.", + "description": "Network enables Istio to group endpoints resident in the same L3 domain/network. All endpoints in the same network are assumed to be directly reachable from one another. When endpoints in different networks cannot reach each other directly, an Istio Gateway can be used to establish connectivity (usually using the `AUTO_PASSTHROUGH` mode in a Gateway Server). This is an advanced configuration used typically for spanning an Istio mesh over multiple clusters. Required if address is not provided.", "type": "string" }, "locality": { diff --git a/vendor/istio.io/api/networking/v1beta1/service_entry.pb.go b/vendor/istio.io/api/networking/v1beta1/service_entry.pb.go index e4fdfc2b..0dd0809c 100644 --- a/vendor/istio.io/api/networking/v1beta1/service_entry.pb.go +++ b/vendor/istio.io/api/networking/v1beta1/service_entry.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: networking/v1beta1/service_entry.proto @@ -1242,60 +1242,59 @@ var file_networking_v1beta1_service_entry_proto_rawDesc = []byte{ 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, - 0x61, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8e, + 0x61, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8b, 0x05, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x1a, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x04, - 0xe2, 0x41, 0x01, 0x02, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x70, 0x6f, 0x72, - 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x42, - 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x08, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, - 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, - 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x0a, 0x72, 0x65, 0x73, - 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, - 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, - 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x57, 0x0a, 0x11, 0x77, 0x6f, 0x72, - 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x6f, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x6f, 0x12, - 0x2a, 0x0a, 0x11, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x30, 0x0a, 0x08, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x45, 0x53, 0x48, 0x5f, - 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x45, - 0x53, 0x48, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x22, 0x40, 0x0a, - 0x0a, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x4e, - 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, - 0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x4e, 0x53, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x4e, - 0x53, 0x5f, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x42, 0x49, 0x4e, 0x10, 0x03, 0x22, - 0x88, 0x01, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, - 0x1c, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, - 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, - 0x18, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, - 0x41, 0x01, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x42, 0x21, 0x5a, 0x1f, 0x69, 0x73, - 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x19, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x08, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x69, + 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x69, 0x73, + 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x45, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, + 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x65, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x57, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, + 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x10, 0x77, + 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, + 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x6f, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x6f, 0x12, 0x2a, 0x0a, 0x11, + 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x30, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x45, 0x53, 0x48, 0x5f, 0x45, 0x58, 0x54, + 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x45, 0x53, 0x48, 0x5f, + 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x22, 0x40, 0x0a, 0x0a, 0x52, 0x65, + 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, + 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x01, 0x12, 0x07, + 0x0a, 0x03, 0x44, 0x4e, 0x53, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x4e, 0x53, 0x5f, 0x52, + 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x42, 0x49, 0x4e, 0x10, 0x03, 0x22, 0x85, 0x01, 0x0a, + 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x06, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x50, 0x6f, 0x72, 0x74, 0x42, 0x21, 0x5a, 0x1f, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/vendor/istio.io/api/networking/v1beta1/sidecar.gen.json b/vendor/istio.io/api/networking/v1beta1/sidecar.gen.json index 8fee00d3..8cbd647b 100644 --- a/vendor/istio.io/api/networking/v1beta1/sidecar.gen.json +++ b/vendor/istio.io/api/networking/v1beta1/sidecar.gen.json @@ -149,11 +149,11 @@ "type": "string" }, "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`. The path to a file containing certificate authority certificates to use in verifying a presented client side certificate.", + "description": "REQUIRED if mode is `MUTUAL` or `OPTIONAL_MUTUAL`. The path to a file containing certificate authority certificates to use in verifying a presented client side certificate.", "type": "string" }, "credentialName": { - "description": "For gateways running on Kubernetes, the name of the secret that holds the TLS certs including the CA certificates. Applicable only on Kubernetes. The secret (of type `generic`) should contain the following keys and values: `key: \u003cprivateKey\u003e` and `cert: \u003cserverCert\u003e`. For mutual TLS, `cacert: \u003cCACertificate\u003e` can be provided in the same secret or a separate secret named `\u003csecret\u003e-cacert`. Secret of type tls for server certificates along with ca.crt key for CA certificates is also supported. Only one of server certificates and CA certificate or credentialName can be specified.", + "description": "For gateways running on Kubernetes, the name of the secret that holds the TLS certs including the CA certificates. Applicable only on Kubernetes. An Opaque secret should contain the following keys and values: `key: \u003cprivateKey\u003e` and `cert: \u003cserverCert\u003e`. For mutual TLS, `cacert: \u003cCACertificate\u003e` and `crl: \u003cCertificateRevocationList\u003e` can be provided in the same secret or a separate secret named `\u003csecret\u003e-cacert`. A TLS secret for server certificates with an additional `tls.ocsp-staple` key for specifying OCSP staple information, `ca.crt` key for CA certificates and `ca.crl` for certificate revocation list is also supported. Only one of server certificates and CA certificate or credentialName can be specified.", "type": "string" }, "subjectAltNames": { @@ -184,7 +184,7 @@ "$ref": "#/components/schemas/istio.networking.v1beta1.ServerTLSSettings.TLSProtocol" }, "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list. Otherwise default to the default cipher list supported by Envoy.", + "description": "Optional: If specified, only support the specified cipher list. Otherwise default to the default cipher list supported by Envoy as specified [here](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/transport_sockets/tls/v3/common.proto). The supported list of ciphers are: * `ECDHE-ECDSA-AES128-GCM-SHA256` * `ECDHE-RSA-AES128-GCM-SHA256` * `ECDHE-ECDSA-AES256-GCM-SHA384` * `ECDHE-RSA-AES256-GCM-SHA384` * `ECDHE-ECDSA-CHACHA20-POLY1305` * `ECDHE-RSA-CHACHA20-POLY1305` * `ECDHE-ECDSA-AES128-SHA` * `ECDHE-RSA-AES128-SHA` * `ECDHE-ECDSA-AES256-SHA` * `ECDHE-RSA-AES256-SHA` * `AES128-GCM-SHA256` * `AES256-GCM-SHA384` * `AES128-SHA` * `AES256-SHA` * `DES-CBC3-SHA`", "type": "array", "items": { "type": "string" @@ -211,7 +211,8 @@ "SIMPLE", "MUTUAL", "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" + "ISTIO_MUTUAL", + "OPTIONAL_MUTUAL" ] }, "istio.networking.v1beta1.Sidecar": { diff --git a/vendor/istio.io/api/networking/v1beta1/sidecar.pb.go b/vendor/istio.io/api/networking/v1beta1/sidecar.pb.go index 9391d69f..92acaea5 100644 --- a/vendor/istio.io/api/networking/v1beta1/sidecar.pb.go +++ b/vendor/istio.io/api/networking/v1beta1/sidecar.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: networking/v1beta1/sidecar.proto @@ -1040,71 +1040,71 @@ var file_networking_v1beta1_sidecar_proto_rawDesc = []byte{ 0x79, 0x52, 0x15, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x22, - 0xc0, 0x02, 0x0a, 0x14, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, + 0xbe, 0x02, 0x0a, 0x14, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x70, 0x6f, - 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x62, 0x69, 0x6e, 0x64, 0x12, 0x48, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, - 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x69, + 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x70, 0x6f, 0x72, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x62, 0x69, 0x6e, 0x64, 0x12, 0x48, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x69, 0x73, + 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x52, 0x0b, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, + 0x2e, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, + 0x3d, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, - 0x12, 0x2f, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, - 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x12, 0x3d, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, - 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, - 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, 0x74, 0x6c, 0x73, - 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x52, 0x14, 0x6c, 0x6f, - 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, - 0x6c, 0x73, 0x22, 0xe5, 0x01, 0x0a, 0x13, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x45, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x04, 0x70, 0x6f, - 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x69, - 0x6e, 0x64, 0x12, 0x48, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, - 0x0b, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x05, - 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, - 0x02, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, - 0x08, 0x06, 0x10, 0x07, 0x52, 0x14, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x5f, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x6c, 0x73, 0x22, 0xa3, 0x01, 0x0a, 0x10, 0x57, - 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, - 0x54, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x36, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0xd5, 0x01, 0x0a, 0x15, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x61, - 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x48, 0x0a, 0x04, 0x6d, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x66, - 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, - 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x48, 0x0a, 0x0c, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, - 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0b, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x28, - 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, - 0x52, 0x59, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x4c, 0x4c, - 0x4f, 0x57, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x01, 0x2a, 0x32, 0x0a, 0x0b, 0x43, 0x61, 0x70, 0x74, - 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, - 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x50, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, - 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x42, 0x21, 0x5a, 0x1f, - 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x4c, + 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x4a, 0x04, + 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x52, 0x14, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6c, 0x73, + 0x22, 0xe4, 0x01, 0x0a, 0x13, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x62, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x69, 0x6e, 0x64, + 0x12, 0x48, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x63, + 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x68, 0x6f, + 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, + 0x68, 0x6f, 0x73, 0x74, 0x73, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, + 0x07, 0x52, 0x14, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x5f, 0x74, 0x6c, 0x73, 0x22, 0xa2, 0x01, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, + 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x53, 0x0a, 0x06, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x69, + 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd5, 0x01, 0x0a, + 0x15, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x48, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, + 0x12, 0x48, 0x0a, 0x0c, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x65, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x28, 0x0a, 0x04, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, 0x59, 0x5f, 0x4f, + 0x4e, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x41, + 0x4e, 0x59, 0x10, 0x01, 0x2a, 0x32, 0x0a, 0x0b, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, + 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x50, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x01, 0x12, 0x08, + 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x42, 0x21, 0x5a, 0x1f, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( diff --git a/vendor/istio.io/api/networking/v1beta1/virtual_service.gen.json b/vendor/istio.io/api/networking/v1beta1/virtual_service.gen.json index 439a6aa0..193035c5 100644 --- a/vendor/istio.io/api/networking/v1beta1/virtual_service.gen.json +++ b/vendor/istio.io/api/networking/v1beta1/virtual_service.gen.json @@ -391,6 +391,18 @@ } } }, + "istio.networking.v1beta1.HTTPMirrorPolicy": { + "description": "Hide this from doc until implemented.", + "type": "object", + "properties": { + "destination": { + "$ref": "#/components/schemas/istio.networking.v1beta1.Destination" + }, + "percentage": { + "$ref": "#/components/schemas/istio.networking.v1beta1.Percent" + } + } + }, "istio.networking.v1beta1.HTTPRedirect": { "description": "HTTPRedirect can be used to send a 301 redirect response to the caller, where the Authority/Host and the URI in the response can be swapped with the specified values. For example, the following rule redirects requests for /v1/getProductRatings API on the ratings service to /v1/bookRatings provided by the bookratings service.", "type": "object", @@ -505,6 +517,9 @@ "authority": { "description": "rewrite the Authority/Host header with this value.", "type": "string" + }, + "uriRegexRewrite": { + "$ref": "#/components/schemas/istio.networking.v1beta1.RegexRewrite" } } }, @@ -555,6 +570,13 @@ "mirror": { "$ref": "#/components/schemas/istio.networking.v1beta1.Destination" }, + "mirrors": { + "description": "Hide this from doc until implemented.", + "type": "array", + "items": { + "$ref": "#/components/schemas/istio.networking.v1beta1.HTTPMirrorPolicy" + } + }, "mirrorPercent": { "description": "Percentage of the traffic to be mirrored by the `mirror` field. Use of integer `mirror_percent` value is deprecated. Use the double `mirror_percentage` field instead $hide_from_docs", "type": "integer", @@ -687,6 +709,19 @@ } } }, + "istio.networking.v1beta1.RegexRewrite": { + "type": "object", + "properties": { + "match": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + }, + "rewrite": { + "description": "The string that should replace into matching portions of original URI. Capture groups in the pattern can be referenced in the new URI. Examples: Example 1: rewrite with capture groups Path pattern \"/service/update/v1/api\" with match \"^/service/([^/]+)(/.*)$\" and rewrite string of \"/customprefix/\\2/\\1\" would transform into \"/customprefix/v1/api/update\".", + "type": "string" + } + } + }, "istio.networking.v1beta1.RouteDestination": { "description": "L4 routing rule weighted destination.", "type": "object", @@ -804,7 +839,7 @@ "type": "object", "properties": { "sniHosts": { - "description": "SNI (server name indicator) to match on. Wildcard prefixes can be used in the SNI value, e.g., *.com will match foo.example.com as well as example.com. An SNI value must be a subset (i.e., fall within the domain) of the corresponding virtual serivce's hosts.", + "description": "SNI (server name indicator) to match on. Wildcard prefixes can be used in the SNI value, e.g., *.com will match foo.example.com as well as example.com. An SNI value must be a subset (i.e., fall within the domain) of the corresponding virtual service's hosts.", "type": "array", "items": { "type": "string" @@ -880,7 +915,7 @@ } }, "http": { - "description": "An ordered list of route rules for HTTP traffic. HTTP routes will be applied to platform service ports named 'http-*'/'http2-*'/'grpc-*', gateway ports with protocol HTTP/HTTP2/GRPC/ TLS-terminated-HTTPS and service entry ports using HTTP/HTTP2/GRPC protocols. The first rule matching an incoming request is used.", + "description": "An ordered list of route rules for HTTP traffic. HTTP routes will be applied to platform service ports using HTTP/HTTP2/GRPC protocols, gateway ports with protocol HTTP/HTTP2/GRPC/TLS-terminated-HTTPS and service entry ports using HTTP/HTTP2/GRPC protocols. The first rule matching an incoming request is used.", "type": "array", "items": { "$ref": "#/components/schemas/istio.networking.v1beta1.HTTPRoute" diff --git a/vendor/istio.io/api/networking/v1beta1/virtual_service.pb.go b/vendor/istio.io/api/networking/v1beta1/virtual_service.pb.go index d14e4518..4521f1fb 100644 --- a/vendor/istio.io/api/networking/v1beta1/virtual_service.pb.go +++ b/vendor/istio.io/api/networking/v1beta1/virtual_service.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: networking/v1beta1/virtual_service.proto @@ -317,8 +317,8 @@ type VirtualService struct { // gateways and sidecars, specify `mesh` as one of the gateway names. Gateways []string `protobuf:"bytes,2,rep,name=gateways,proto3" json:"gateways,omitempty"` // An ordered list of route rules for HTTP traffic. HTTP routes will be - // applied to platform service ports named 'http-*'/'http2-*'/'grpc-*', gateway - // ports with protocol HTTP/HTTP2/GRPC/ TLS-terminated-HTTPS and service + // applied to platform service ports using HTTP/HTTP2/GRPC protocols, gateway + // ports with protocol HTTP/HTTP2/GRPC/TLS-terminated-HTTPS and service // entry ports using HTTP/HTTP2/GRPC protocols. The first rule matching // an incoming request is used. Http []*HTTPRoute `protobuf:"bytes,3,rep,name=http,proto3" json:"http,omitempty"` @@ -852,12 +852,22 @@ type HTTPRoute struct { // original destination. Statistics will be generated for the mirrored // destination. Mirror *Destination `protobuf:"bytes,9,opt,name=mirror,proto3" json:"mirror,omitempty"` + // $hide_from_docs + // Hide this from doc until implemented. + // + // Specifies the destinations to mirror HTTP traffic in addition + // to the original destination. Mirrored traffic is on a + // best effort basis where the sidecar/gateway will not wait for the + // mirrored destinations to respond before returning the response from the + // original destination. Statistics will be generated for the mirrored + // destination. + Mirrors []*HTTPMirrorPolicy `protobuf:"bytes,22,rep,name=mirrors,proto3" json:"mirrors,omitempty"` // Percentage of the traffic to be mirrored by the `mirror` field. // Use of integer `mirror_percent` value is deprecated. Use the // double `mirror_percentage` field instead // $hide_from_docs // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in networking/v1beta1/virtual_service.proto. MirrorPercent *wrappers.UInt32Value `protobuf:"bytes,18,opt,name=mirror_percent,json=mirrorPercent,proto3" json:"mirror_percent,omitempty"` // Percentage of the traffic to be mirrored by the `mirror` field. // If this field is absent, all the traffic (100%) will be mirrored. @@ -980,7 +990,14 @@ func (x *HTTPRoute) GetMirror() *Destination { return nil } -// Deprecated: Do not use. +func (x *HTTPRoute) GetMirrors() []*HTTPMirrorPolicy { + if x != nil { + return x.Mirrors + } + return nil +} + +// Deprecated: Marked as deprecated in networking/v1beta1/virtual_service.proto. func (x *HTTPRoute) GetMirrorPercent() *wrappers.UInt32Value { if x != nil { return x.MirrorPercent @@ -1646,6 +1663,14 @@ type HTTPMatchRequest struct { // - `regex: "value"` for RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax). // // If the value is empty and only the name of header is specified, presence of the header is checked. + // To provide an empty value, use `{}`, for example: + // + // ``` + // - match: + // - headers: + // myheader: {} + // + // ``` // **Note:** The keys `uri`, `scheme`, `method`, and `authority` will be ignored. Headers map[string]*StringMatch `protobuf:"bytes,5,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Specifies the ports on the host that is being addressed. Many services @@ -1671,11 +1696,12 @@ type HTTPMatchRequest struct { // - For a query parameter like "?key", the map key would be "key" and the // string match could be defined as `exact: ""`. // + // - For a query parameter like "?key=abc" or "?key=abx", the map key would be "key" and the + // string match could be defined as `prefix: "ab"`. + // // - For a query parameter like "?key=123", the map key would be "key" and the // string match could be defined as `regex: "\d+$"`. Note that this // configuration will only match values like "123" but not "a123" or "123a". - // - // **Note:** `prefix` matching is currently not supported. QueryParams map[string]*StringMatch `protobuf:"bytes,9,rep,name=query_params,json=queryParams,proto3" json:"query_params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Flag to specify whether the URI matching should be case-insensitive. // @@ -2236,7 +2262,7 @@ type TLSMatchAttributes struct { // SNI (server name indicator) to match on. Wildcard prefixes // can be used in the SNI value, e.g., *.com will match foo.example.com // as well as example.com. An SNI value must be a subset (i.e., fall - // within the domain) of the corresponding virtual serivce's hosts. + // within the domain) of the corresponding virtual service's hosts. SniHosts []string `protobuf:"bytes,1,rep,name=sni_hosts,json=sniHosts,proto3" json:"sni_hosts,omitempty"` // IPv4 or IPv6 ip addresses of destination with optional subnet. E.g., // a.b.c.d/xx form or just a.b.c.d. @@ -2657,7 +2683,7 @@ func (*HTTPRedirect_DerivePort) isHTTPRedirect_RedirectPort() {} // headers: // response: // set: -// content-type: "appliation/json" +// content-type: "application/json" // ... // // ``` @@ -2903,6 +2929,8 @@ type HTTPRewrite struct { Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"` // rewrite the Authority/Host header with this value. Authority string `protobuf:"bytes,2,opt,name=authority,proto3" json:"authority,omitempty"` + // rewrite the path portion of the URI with the specified regex. + UriRegexRewrite *RegexRewrite `protobuf:"bytes,3,opt,name=uri_regex_rewrite,json=uriRegexRewrite,proto3" json:"uri_regex_rewrite,omitempty"` } func (x *HTTPRewrite) Reset() { @@ -2951,6 +2979,80 @@ func (x *HTTPRewrite) GetAuthority() string { return "" } +func (x *HTTPRewrite) GetUriRegexRewrite() *RegexRewrite { + if x != nil { + return x.UriRegexRewrite + } + return nil +} + +type RegexRewrite struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax). + Match string `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"` + // The string that should replace into matching portions of original URI. + // Capture groups in the pattern can be referenced in the new URI. + // Examples: + // + // Example 1: rewrite with capture groups + // Path pattern "/service/update/v1/api" with match "^/service/([^/]+)(/.*)$" and + // rewrite string of "/customprefix/\2/\1" would transform into "/customprefix/v1/api/update". + // + // Example 2: case insensitive rewrite + // Path pattern "/aaa/XxX/bbb" with match "(?i)/xxx/" and a rewrite string of /yyy/ would do a + // case-insensitive match and transform the path to "/aaa/yyy/bbb". + Rewrite string `protobuf:"bytes,2,opt,name=rewrite,proto3" json:"rewrite,omitempty"` +} + +func (x *RegexRewrite) Reset() { + *x = RegexRewrite{} + if protoimpl.UnsafeEnabled { + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RegexRewrite) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegexRewrite) ProtoMessage() {} + +func (x *RegexRewrite) ProtoReflect() protoreflect.Message { + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RegexRewrite.ProtoReflect.Descriptor instead. +func (*RegexRewrite) Descriptor() ([]byte, []int) { + return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{16} +} + +func (x *RegexRewrite) GetMatch() string { + if x != nil { + return x.Match + } + return "" +} + +func (x *RegexRewrite) GetRewrite() string { + if x != nil { + return x.Rewrite + } + return "" +} + // Describes how to match a given string in HTTP headers. Match is // case-sensitive. type StringMatch struct { @@ -2969,7 +3071,7 @@ type StringMatch struct { func (x *StringMatch) Reset() { *x = StringMatch{} if protoimpl.UnsafeEnabled { - mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[16] + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2982,7 +3084,7 @@ func (x *StringMatch) String() string { func (*StringMatch) ProtoMessage() {} func (x *StringMatch) ProtoReflect() protoreflect.Message { - mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[16] + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2995,7 +3097,7 @@ func (x *StringMatch) ProtoReflect() protoreflect.Message { // Deprecated: Use StringMatch.ProtoReflect.Descriptor instead. func (*StringMatch) Descriptor() ([]byte, []int) { - return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{16} + return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{17} } func (m *StringMatch) GetMatchType() isStringMatch_MatchType { @@ -3138,7 +3240,7 @@ type HTTPRetry struct { func (x *HTTPRetry) Reset() { *x = HTTPRetry{} if protoimpl.UnsafeEnabled { - mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[17] + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3151,7 +3253,7 @@ func (x *HTTPRetry) String() string { func (*HTTPRetry) ProtoMessage() {} func (x *HTTPRetry) ProtoReflect() protoreflect.Message { - mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[17] + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3164,7 +3266,7 @@ func (x *HTTPRetry) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPRetry.ProtoReflect.Descriptor instead. func (*HTTPRetry) Descriptor() ([]byte, []int) { - return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{17} + return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{18} } func (x *HTTPRetry) GetAttempts() int32 { @@ -3276,7 +3378,7 @@ type CorsPolicy struct { // header. Wildcard * will allow all origins. // $hide_from_docs // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in networking/v1beta1/virtual_service.proto. AllowOrigin []string `protobuf:"bytes,1,rep,name=allow_origin,json=allowOrigin,proto3" json:"allow_origin,omitempty"` // String patterns that match allowed origins. // An origin is allowed if any of the string matchers match. @@ -3303,7 +3405,7 @@ type CorsPolicy struct { func (x *CorsPolicy) Reset() { *x = CorsPolicy{} if protoimpl.UnsafeEnabled { - mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[18] + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3316,7 +3418,7 @@ func (x *CorsPolicy) String() string { func (*CorsPolicy) ProtoMessage() {} func (x *CorsPolicy) ProtoReflect() protoreflect.Message { - mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[18] + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3329,10 +3431,10 @@ func (x *CorsPolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use CorsPolicy.ProtoReflect.Descriptor instead. func (*CorsPolicy) Descriptor() ([]byte, []int) { - return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{18} + return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{19} } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in networking/v1beta1/virtual_service.proto. func (x *CorsPolicy) GetAllowOrigin() []string { if x != nil { return x.AllowOrigin @@ -3406,7 +3508,7 @@ type HTTPFaultInjection struct { func (x *HTTPFaultInjection) Reset() { *x = HTTPFaultInjection{} if protoimpl.UnsafeEnabled { - mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[19] + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3419,7 +3521,7 @@ func (x *HTTPFaultInjection) String() string { func (*HTTPFaultInjection) ProtoMessage() {} func (x *HTTPFaultInjection) ProtoReflect() protoreflect.Message { - mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[19] + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3432,7 +3534,7 @@ func (x *HTTPFaultInjection) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPFaultInjection.ProtoReflect.Descriptor instead. func (*HTTPFaultInjection) Descriptor() ([]byte, []int) { - return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{19} + return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{20} } func (x *HTTPFaultInjection) GetDelay() *HTTPFaultInjection_Delay { @@ -3449,6 +3551,80 @@ func (x *HTTPFaultInjection) GetAbort() *HTTPFaultInjection_Abort { return nil } +// $hide_from_docs +// Hide this from doc until implemented. +// +// HTTPMirrorPolicy can be used to specify the destinations to mirror HTTP traffic in addition +// to the original destination. Mirrored traffic is on a +// best effort basis where the sidecar/gateway will not wait for the +// mirrored destinations to respond before returning the response from the +// original destination. Statistics will be generated for the mirrored +// destination. +type HTTPMirrorPolicy struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // $hide_from_docs + // Hide this from doc until implemented. + // + // Destination specifies the target of the mirror operation. + Destination *Destination `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"` + // $hide_from_docs + // Hide this from doc until implemented. + // + // Percentage of the traffic to be mirrored by the `destination` field. + // If this field is absent, all the traffic (100%) will be mirrored. + // Max value is 100. + Percentage *Percent `protobuf:"bytes,2,opt,name=percentage,proto3" json:"percentage,omitempty"` +} + +func (x *HTTPMirrorPolicy) Reset() { + *x = HTTPMirrorPolicy{} + if protoimpl.UnsafeEnabled { + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HTTPMirrorPolicy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HTTPMirrorPolicy) ProtoMessage() {} + +func (x *HTTPMirrorPolicy) ProtoReflect() protoreflect.Message { + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HTTPMirrorPolicy.ProtoReflect.Descriptor instead. +func (*HTTPMirrorPolicy) Descriptor() ([]byte, []int) { + return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{21} +} + +func (x *HTTPMirrorPolicy) GetDestination() *Destination { + if x != nil { + return x.Destination + } + return nil +} + +func (x *HTTPMirrorPolicy) GetPercentage() *Percent { + if x != nil { + return x.Percentage + } + return nil +} + // PortSelector specifies the number of a port to be used for // matching or selection for final routing. type PortSelector struct { @@ -3463,7 +3639,7 @@ type PortSelector struct { func (x *PortSelector) Reset() { *x = PortSelector{} if protoimpl.UnsafeEnabled { - mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[20] + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3476,7 +3652,7 @@ func (x *PortSelector) String() string { func (*PortSelector) ProtoMessage() {} func (x *PortSelector) ProtoReflect() protoreflect.Message { - mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[20] + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3489,7 +3665,7 @@ func (x *PortSelector) ProtoReflect() protoreflect.Message { // Deprecated: Use PortSelector.ProtoReflect.Descriptor instead. func (*PortSelector) Descriptor() ([]byte, []int) { - return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{20} + return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{22} } func (x *PortSelector) GetNumber() uint32 { @@ -3511,7 +3687,7 @@ type Percent struct { func (x *Percent) Reset() { *x = Percent{} if protoimpl.UnsafeEnabled { - mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[21] + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3524,7 +3700,7 @@ func (x *Percent) String() string { func (*Percent) ProtoMessage() {} func (x *Percent) ProtoReflect() protoreflect.Message { - mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[21] + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3537,7 +3713,7 @@ func (x *Percent) ProtoReflect() protoreflect.Message { // Deprecated: Use Percent.ProtoReflect.Descriptor instead. func (*Percent) Descriptor() ([]byte, []int) { - return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{21} + return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{23} } func (x *Percent) GetValue() float64 { @@ -3565,7 +3741,7 @@ type Headers_HeaderOperations struct { func (x *Headers_HeaderOperations) Reset() { *x = Headers_HeaderOperations{} if protoimpl.UnsafeEnabled { - mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[22] + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3578,7 +3754,7 @@ func (x *Headers_HeaderOperations) String() string { func (*Headers_HeaderOperations) ProtoMessage() {} func (x *Headers_HeaderOperations) ProtoReflect() protoreflect.Message { - mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[22] + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3692,7 +3868,7 @@ type HTTPFaultInjection_Delay struct { // Use of integer `percent` value is deprecated. Use the double `percentage` // field instead. // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in networking/v1beta1/virtual_service.proto. Percent int32 `protobuf:"varint,1,opt,name=percent,proto3" json:"percent,omitempty"` // Types that are assignable to HttpDelayType: // @@ -3707,7 +3883,7 @@ type HTTPFaultInjection_Delay struct { func (x *HTTPFaultInjection_Delay) Reset() { *x = HTTPFaultInjection_Delay{} if protoimpl.UnsafeEnabled { - mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[31] + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3720,7 +3896,7 @@ func (x *HTTPFaultInjection_Delay) String() string { func (*HTTPFaultInjection_Delay) ProtoMessage() {} func (x *HTTPFaultInjection_Delay) ProtoReflect() protoreflect.Message { - mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[31] + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3733,10 +3909,10 @@ func (x *HTTPFaultInjection_Delay) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPFaultInjection_Delay.ProtoReflect.Descriptor instead. func (*HTTPFaultInjection_Delay) Descriptor() ([]byte, []int) { - return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{19, 0} + return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{20, 0} } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in networking/v1beta1/virtual_service.proto. func (x *HTTPFaultInjection_Delay) GetPercent() int32 { if x != nil { return x.Percent @@ -3872,7 +4048,7 @@ type HTTPFaultInjection_Abort struct { func (x *HTTPFaultInjection_Abort) Reset() { *x = HTTPFaultInjection_Abort{} if protoimpl.UnsafeEnabled { - mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[32] + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3885,7 +4061,7 @@ func (x *HTTPFaultInjection_Abort) String() string { func (*HTTPFaultInjection_Abort) ProtoMessage() {} func (x *HTTPFaultInjection_Abort) ProtoReflect() protoreflect.Message { - mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[32] + mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3898,7 +4074,7 @@ func (x *HTTPFaultInjection_Abort) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPFaultInjection_Abort.ProtoReflect.Descriptor instead. func (*HTTPFaultInjection_Abort) Descriptor() ([]byte, []int) { - return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{19, 1} + return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{20, 1} } func (m *HTTPFaultInjection_Abort) GetErrorType() isHTTPFaultInjection_Abort_ErrorType { @@ -3993,311 +4169,315 @@ var file_networking_v1beta1_virtual_service_proto_rawDesc = []byte{ 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x43, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x03, 0x74, 0x63, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x6f, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x6f, 0x22, 0x7b, 0x0a, 0x0b, - 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x04, 0x68, - 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, - 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x3a, 0x0a, - 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, - 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe8, 0x08, 0x0a, 0x09, 0x48, 0x54, - 0x54, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x05, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x73, 0x74, + 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x6f, 0x22, 0x7a, 0x0a, 0x0b, + 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x68, + 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, + 0x68, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x3a, 0x0a, 0x04, + 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x44, 0x0a, - 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x69, - 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x08, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x55, 0x0a, 0x0f, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0e, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, - 0x0a, 0x08, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x67, 0x61, 0x74, 0x65, 0x52, 0x08, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x3f, - 0x0a, 0x07, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, - 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x52, 0x07, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, - 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3d, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x05, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, - 0x54, 0x50, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x05, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x6d, 0x69, 0x72, 0x72, 0x6f, - 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, - 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x47, 0x0a, 0x0e, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, - 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x18, 0x01, - 0x52, 0x0d, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, - 0x4e, 0x0a, 0x11, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, - 0x74, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x73, 0x74, - 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x10, 0x6d, - 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, - 0x45, 0x0a, 0x0b, 0x63, 0x6f, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xae, 0x09, 0x0a, 0x09, 0x48, 0x54, 0x54, + 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x05, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x44, 0x0a, 0x05, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x69, 0x73, + 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x12, 0x42, 0x0a, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0a, 0x63, 0x6f, 0x72, 0x73, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3b, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x10, 0x52, - 0x11, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, - 0x64, 0x65, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x52, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x17, 0x61, 0x70, 0x70, - 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x52, 0x16, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x16, 0x61, 0x70, - 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x22, 0x3c, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x22, 0xe2, 0x03, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x4c, - 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x32, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4e, 0x0a, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, - 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, - 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0xb8, 0x02, 0x0a, - 0x10, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x4d, 0x0a, 0x03, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, + 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x08, 0x72, 0x65, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x55, 0x0a, 0x0f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x44, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0e, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, + 0x08, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x65, 0x52, 0x08, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, + 0x07, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, - 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x73, 0x65, 0x74, - 0x12, 0x4d, 0x0a, 0x03, 0x61, 0x64, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, - 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x41, 0x64, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x61, 0x64, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x1a, 0x36, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x36, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x96, 0x01, 0x0a, 0x08, 0x54, 0x4c, 0x53, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x12, 0x48, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, - 0x4c, 0x53, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x40, - 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, - 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, - 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x22, 0x8f, 0x01, 0x0a, 0x08, 0x54, 0x43, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x41, 0x0a, - 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, + 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, + 0x77, 0x72, 0x69, 0x74, 0x65, 0x52, 0x07, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x33, + 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x12, 0x3d, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x12, 0x42, 0x0a, 0x05, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, + 0x50, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x05, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6d, + 0x69, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x44, 0x0a, 0x07, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x73, + 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x52, 0x07, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x47, 0x0a, 0x0e, 0x6d, + 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x65, 0x72, + 0x63, 0x65, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x11, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x70, + 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x63, 0x65, + 0x6e, 0x74, 0x52, 0x10, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x61, 0x67, 0x65, 0x12, 0x45, 0x0a, 0x0b, 0x63, 0x6f, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, + 0x0a, 0x63, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3b, 0x0a, 0x07, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x34, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x12, 0x40, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x22, 0xba, 0x09, 0x0a, 0x10, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x03, 0x75, - 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, - 0x03, 0x75, 0x72, 0x69, 0x12, 0x3d, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, + 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, + 0x08, 0x0b, 0x10, 0x10, 0x52, 0x11, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, + 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x52, 0x17, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x16, 0x72, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x52, 0x16, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x3c, 0x0a, 0x08, 0x44, 0x65, 0x6c, + 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xe2, 0x03, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x12, 0x4c, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x06, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x12, 0x43, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x09, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x51, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, - 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x61, - 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x5e, 0x0a, - 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x09, 0x20, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x4e, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x1a, 0xb8, 0x02, 0x0a, 0x10, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x0a, 0x03, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, - 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x26, 0x0a, - 0x0f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x5f, 0x63, 0x61, 0x73, 0x65, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x55, 0x72, - 0x69, 0x43, 0x61, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, - 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, - 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, - 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x6f, - 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, - 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x29, - 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, - 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x73, 0x74, 0x61, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x1a, 0x61, 0x0a, 0x0c, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, - 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, - 0x11, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x65, - 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x68, 0x0a, 0x13, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, - 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0xa2, 0x02, 0x0a, 0x14, 0x48, 0x54, 0x54, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, - 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, - 0x3b, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x03, - 0x10, 0x07, 0x52, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x17, 0x61, 0x70, 0x70, - 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x52, 0x16, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x16, 0x61, 0x70, - 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x22, 0x79, 0x0a, 0x10, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, - 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, - 0xe9, 0x02, 0x0a, 0x11, 0x4c, 0x34, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x12, - 0x62, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x4c, 0x34, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, - 0x29, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfe, 0x02, 0x0a, 0x12, - 0x54, 0x4c, 0x53, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x12, 0x21, 0x0a, 0x09, 0x73, 0x6e, 0x69, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x73, 0x6e, 0x69, - 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x63, 0x0a, 0x0d, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x4c, 0x53, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, - 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x0d, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x22, 0xce, 0x02, 0x0a, - 0x0c, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, - 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, - 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x04, 0x70, - 0x6f, 0x72, 0x74, 0x12, 0x5f, 0x0a, 0x0b, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x03, 0x73, 0x65, 0x74, 0x12, 0x4d, 0x0a, 0x03, 0x61, 0x64, 0x64, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x03, 0x61, 0x64, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x1a, 0x36, 0x0a, 0x08, + 0x53, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x36, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x95, 0x01, 0x0a, + 0x08, 0x54, 0x4c, 0x53, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x47, 0x0a, 0x05, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x54, 0x4c, 0x53, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x12, 0x40, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x08, 0x54, 0x43, 0x50, 0x52, 0x6f, 0x75, 0x74, + 0x65, 0x12, 0x41, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x34, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x05, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x12, 0x40, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x22, 0xba, 0x09, 0x0a, 0x10, 0x48, 0x54, 0x54, 0x50, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x37, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, + 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x3d, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x43, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x51, 0x0a, 0x07, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x69, + 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, + 0x72, 0x74, 0x12, 0x61, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x73, 0x12, 0x5e, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x5f, + 0x63, 0x61, 0x73, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x67, 0x6e, 0x6f, + 0x72, 0x65, 0x55, 0x72, 0x69, 0x43, 0x61, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x0f, 0x77, 0x69, 0x74, + 0x68, 0x6f, 0x75, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x0c, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, + 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x57, + 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0e, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, + 0x0b, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x1a, 0x61, + 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x65, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x68, 0x0a, 0x13, 0x57, 0x69, 0x74, + 0x68, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0xa1, 0x02, 0x0a, 0x14, 0x48, 0x54, 0x54, 0x50, 0x52, 0x6f, 0x75, 0x74, + 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4a, + 0x04, 0x08, 0x03, 0x10, 0x07, 0x52, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x17, + 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x16, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, + 0x16, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x78, 0x0a, 0x10, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x22, 0xe9, 0x02, 0x0a, 0x11, 0x4c, 0x34, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x23, 0x0a, 0x0d, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, + 0x74, 0x12, 0x62, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x2e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, - 0x50, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, - 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x22, 0x49, 0x0a, 0x15, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x72, - 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x52, - 0x4f, 0x4d, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x44, 0x45, 0x46, 0x41, - 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x52, 0x45, - 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x42, 0x0f, 0x0a, 0x0d, - 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x6a, 0x0a, - 0x12, 0x48, 0x54, 0x54, 0x50, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x34, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x3f, 0x0a, 0x11, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfd, 0x02, + 0x0a, 0x12, 0x54, 0x4c, 0x53, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x73, 0x6e, 0x69, 0x5f, 0x68, 0x6f, 0x73, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x73, 0x6e, + 0x69, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x63, 0x0a, 0x0d, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x4c, + 0x53, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x29, 0x0a, 0x10, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x0d, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x22, 0xce, 0x02, + 0x0a, 0x0c, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, + 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, + 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x04, + 0x70, 0x6f, 0x72, 0x74, 0x12, 0x5f, 0x0a, 0x0b, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, 0x72, 0x69, 0x76, + 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x23, 0x0a, + 0x0d, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x22, 0x49, 0x0a, 0x15, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x6f, + 0x72, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x15, 0x46, + 0x52, 0x4f, 0x4d, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x44, 0x45, 0x46, + 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x52, + 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x42, 0x0f, 0x0a, + 0x0d, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x69, + 0x0a, 0x12, 0x48, 0x54, 0x54, 0x50, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x42, @@ -4306,103 +4486,123 @@ var file_networking_v1beta1_virtual_service_proto_rawDesc = []byte{ 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x22, 0x3d, 0x0a, 0x0b, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x77, 0x72, - 0x69, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x22, 0x65, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x06, 0x70, 0x72, - 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x70, 0x72, - 0x65, 0x66, 0x69, 0x78, 0x12, 0x16, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x42, 0x0c, 0x0a, 0x0a, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdf, 0x01, 0x0a, 0x09, 0x48, - 0x54, 0x54, 0x50, 0x52, 0x65, 0x74, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x08, 0x61, 0x74, 0x74, 0x65, - 0x6d, 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, - 0x52, 0x08, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0f, 0x70, 0x65, - 0x72, 0x5f, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, - 0x70, 0x65, 0x72, 0x54, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x19, 0x0a, - 0x08, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x72, 0x65, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x12, 0x52, 0x0a, 0x17, 0x72, 0x65, 0x74, 0x72, - 0x79, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x72, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0xed, 0x02, 0x0a, - 0x0a, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x25, 0x0a, 0x0c, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x69, 0x67, - 0x69, 0x6e, 0x12, 0x4a, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, 0x69, 0x67, - 0x69, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, - 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x23, - 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x6f, - 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, - 0x32, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6d, 0x61, 0x78, - 0x41, 0x67, 0x65, 0x12, 0x47, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x8d, 0x05, 0x0a, - 0x12, 0x48, 0x54, 0x54, 0x50, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, - 0x54, 0x50, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x48, 0x0a, - 0x05, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, - 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x46, 0x61, 0x75, 0x6c, - 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, - 0x52, 0x05, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x1a, 0x89, 0x02, 0x0a, 0x05, 0x44, 0x65, 0x6c, 0x61, - 0x79, 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, - 0x42, 0x0a, 0x0b, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x02, + 0x66, 0x69, 0x65, 0x72, 0x22, 0x91, 0x01, 0x0a, 0x0b, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x12, 0x52, 0x0a, 0x11, 0x75, 0x72, 0x69, 0x5f, 0x72, 0x65, 0x67, 0x65, + 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, + 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x52, 0x0f, 0x75, 0x72, 0x69, 0x52, 0x65, 0x67, 0x65, + 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x22, 0x3e, 0x0a, 0x0c, 0x52, 0x65, 0x67, 0x65, + 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x18, + 0x0a, 0x07, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x22, 0x65, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x12, + 0x18, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x16, 0x0a, 0x05, 0x72, 0x65, 0x67, + 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, + 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, + 0xde, 0x01, 0x0a, 0x09, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x74, 0x72, 0x79, 0x12, 0x1f, 0x0a, + 0x08, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x41, + 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x54, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x12, 0x52, 0x0a, 0x17, + 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x72, 0x65, 0x74, 0x72, 0x79, + 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, + 0x22, 0xed, 0x02, 0x0a, 0x0a, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, + 0x25, 0x0a, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x4a, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, + 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x69, 0x67, 0x69, + 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, + 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x04, 0xe2, 0x41, 0x01, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x66, 0x69, 0x78, 0x65, 0x64, 0x44, 0x65, - 0x6c, 0x61, 0x79, 0x12, 0x48, 0x0a, 0x11, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x65, 0x78, 0x70, - 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x41, 0x0a, - 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x65, 0x72, - 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, - 0x42, 0x11, 0x0a, 0x0f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x1a, 0xd6, 0x01, 0x0a, 0x05, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x27, 0x0a, - 0x0b, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x68, 0x74, 0x74, 0x70, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0b, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x67, - 0x72, 0x70, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0b, 0x68, 0x74, 0x74, - 0x70, 0x32, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x0a, 0x68, 0x74, 0x74, 0x70, 0x32, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x41, 0x0a, 0x0a, - 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x63, - 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x42, - 0x0c, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x4a, 0x04, 0x08, - 0x01, 0x10, 0x02, 0x52, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x22, 0x32, 0x0a, 0x0c, - 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x1f, 0x0a, 0x07, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x42, 0x21, 0x5a, 0x1f, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x06, 0x6d, 0x61, 0x78, 0x41, 0x67, 0x65, 0x12, 0x47, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x22, 0x8b, 0x05, 0x0a, 0x12, 0x48, 0x54, 0x54, 0x50, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, + 0x79, 0x12, 0x48, 0x0a, 0x05, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x32, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, + 0x46, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, + 0x62, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x1a, 0x88, 0x02, 0x0a, 0x05, + 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x70, 0x65, 0x72, 0x63, + 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x0b, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x6c, + 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x66, 0x69, 0x78, 0x65, + 0x64, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x48, 0x0a, 0x11, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x10, + 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, + 0x12, 0x41, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, + 0x61, 0x67, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x64, 0x65, 0x6c, 0x61, + 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x1a, 0xd5, 0x01, 0x0a, 0x05, 0x41, 0x62, 0x6f, 0x72, 0x74, + 0x12, 0x26, 0x0a, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x68, 0x74, + 0x74, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0b, 0x67, 0x72, 0x70, 0x63, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x0a, 0x67, 0x72, 0x70, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0b, 0x68, + 0x74, 0x74, 0x70, 0x32, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x0a, 0x68, 0x74, 0x74, 0x70, 0x32, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x41, + 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x65, + 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, + 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x4a, + 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x22, 0xa3, + 0x01, 0x0a, 0x10, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x12, 0x4c, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x41, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x61, 0x67, 0x65, 0x22, 0x32, 0x0a, 0x0c, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x02, + 0x10, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x07, 0x50, 0x65, 0x72, 0x63, + 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x21, 0x5a, 0x1f, 0x69, 0x73, 0x74, + 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4418,7 +4618,7 @@ func file_networking_v1beta1_virtual_service_proto_rawDescGZIP() []byte { } var file_networking_v1beta1_virtual_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_networking_v1beta1_virtual_service_proto_msgTypes = make([]protoimpl.MessageInfo, 33) +var file_networking_v1beta1_virtual_service_proto_msgTypes = make([]protoimpl.MessageInfo, 35) var file_networking_v1beta1_virtual_service_proto_goTypes = []interface{}{ (HTTPRedirect_RedirectPortSelection)(0), // 0: istio.networking.v1beta1.HTTPRedirect.RedirectPortSelection (*VirtualService)(nil), // 1: istio.networking.v1beta1.VirtualService @@ -4437,88 +4637,94 @@ var file_networking_v1beta1_virtual_service_proto_goTypes = []interface{}{ (*HTTPDirectResponse)(nil), // 14: istio.networking.v1beta1.HTTPDirectResponse (*HTTPBody)(nil), // 15: istio.networking.v1beta1.HTTPBody (*HTTPRewrite)(nil), // 16: istio.networking.v1beta1.HTTPRewrite - (*StringMatch)(nil), // 17: istio.networking.v1beta1.StringMatch - (*HTTPRetry)(nil), // 18: istio.networking.v1beta1.HTTPRetry - (*CorsPolicy)(nil), // 19: istio.networking.v1beta1.CorsPolicy - (*HTTPFaultInjection)(nil), // 20: istio.networking.v1beta1.HTTPFaultInjection - (*PortSelector)(nil), // 21: istio.networking.v1beta1.PortSelector - (*Percent)(nil), // 22: istio.networking.v1beta1.Percent - (*Headers_HeaderOperations)(nil), // 23: istio.networking.v1beta1.Headers.HeaderOperations - nil, // 24: istio.networking.v1beta1.Headers.HeaderOperations.SetEntry - nil, // 25: istio.networking.v1beta1.Headers.HeaderOperations.AddEntry - nil, // 26: istio.networking.v1beta1.HTTPMatchRequest.HeadersEntry - nil, // 27: istio.networking.v1beta1.HTTPMatchRequest.SourceLabelsEntry - nil, // 28: istio.networking.v1beta1.HTTPMatchRequest.QueryParamsEntry - nil, // 29: istio.networking.v1beta1.HTTPMatchRequest.WithoutHeadersEntry - nil, // 30: istio.networking.v1beta1.L4MatchAttributes.SourceLabelsEntry - nil, // 31: istio.networking.v1beta1.TLSMatchAttributes.SourceLabelsEntry - (*HTTPFaultInjection_Delay)(nil), // 32: istio.networking.v1beta1.HTTPFaultInjection.Delay - (*HTTPFaultInjection_Abort)(nil), // 33: istio.networking.v1beta1.HTTPFaultInjection.Abort - (*duration.Duration)(nil), // 34: google.protobuf.Duration - (*wrappers.UInt32Value)(nil), // 35: google.protobuf.UInt32Value - (*wrappers.BoolValue)(nil), // 36: google.protobuf.BoolValue + (*RegexRewrite)(nil), // 17: istio.networking.v1beta1.RegexRewrite + (*StringMatch)(nil), // 18: istio.networking.v1beta1.StringMatch + (*HTTPRetry)(nil), // 19: istio.networking.v1beta1.HTTPRetry + (*CorsPolicy)(nil), // 20: istio.networking.v1beta1.CorsPolicy + (*HTTPFaultInjection)(nil), // 21: istio.networking.v1beta1.HTTPFaultInjection + (*HTTPMirrorPolicy)(nil), // 22: istio.networking.v1beta1.HTTPMirrorPolicy + (*PortSelector)(nil), // 23: istio.networking.v1beta1.PortSelector + (*Percent)(nil), // 24: istio.networking.v1beta1.Percent + (*Headers_HeaderOperations)(nil), // 25: istio.networking.v1beta1.Headers.HeaderOperations + nil, // 26: istio.networking.v1beta1.Headers.HeaderOperations.SetEntry + nil, // 27: istio.networking.v1beta1.Headers.HeaderOperations.AddEntry + nil, // 28: istio.networking.v1beta1.HTTPMatchRequest.HeadersEntry + nil, // 29: istio.networking.v1beta1.HTTPMatchRequest.SourceLabelsEntry + nil, // 30: istio.networking.v1beta1.HTTPMatchRequest.QueryParamsEntry + nil, // 31: istio.networking.v1beta1.HTTPMatchRequest.WithoutHeadersEntry + nil, // 32: istio.networking.v1beta1.L4MatchAttributes.SourceLabelsEntry + nil, // 33: istio.networking.v1beta1.TLSMatchAttributes.SourceLabelsEntry + (*HTTPFaultInjection_Delay)(nil), // 34: istio.networking.v1beta1.HTTPFaultInjection.Delay + (*HTTPFaultInjection_Abort)(nil), // 35: istio.networking.v1beta1.HTTPFaultInjection.Abort + (*duration.Duration)(nil), // 36: google.protobuf.Duration + (*wrappers.UInt32Value)(nil), // 37: google.protobuf.UInt32Value + (*wrappers.BoolValue)(nil), // 38: google.protobuf.BoolValue } var file_networking_v1beta1_virtual_service_proto_depIdxs = []int32{ 3, // 0: istio.networking.v1beta1.VirtualService.http:type_name -> istio.networking.v1beta1.HTTPRoute 6, // 1: istio.networking.v1beta1.VirtualService.tls:type_name -> istio.networking.v1beta1.TLSRoute 7, // 2: istio.networking.v1beta1.VirtualService.tcp:type_name -> istio.networking.v1beta1.TCPRoute - 21, // 3: istio.networking.v1beta1.Destination.port:type_name -> istio.networking.v1beta1.PortSelector + 23, // 3: istio.networking.v1beta1.Destination.port:type_name -> istio.networking.v1beta1.PortSelector 8, // 4: istio.networking.v1beta1.HTTPRoute.match:type_name -> istio.networking.v1beta1.HTTPMatchRequest 9, // 5: istio.networking.v1beta1.HTTPRoute.route:type_name -> istio.networking.v1beta1.HTTPRouteDestination 13, // 6: istio.networking.v1beta1.HTTPRoute.redirect:type_name -> istio.networking.v1beta1.HTTPRedirect 14, // 7: istio.networking.v1beta1.HTTPRoute.direct_response:type_name -> istio.networking.v1beta1.HTTPDirectResponse 4, // 8: istio.networking.v1beta1.HTTPRoute.delegate:type_name -> istio.networking.v1beta1.Delegate 16, // 9: istio.networking.v1beta1.HTTPRoute.rewrite:type_name -> istio.networking.v1beta1.HTTPRewrite - 34, // 10: istio.networking.v1beta1.HTTPRoute.timeout:type_name -> google.protobuf.Duration - 18, // 11: istio.networking.v1beta1.HTTPRoute.retries:type_name -> istio.networking.v1beta1.HTTPRetry - 20, // 12: istio.networking.v1beta1.HTTPRoute.fault:type_name -> istio.networking.v1beta1.HTTPFaultInjection + 36, // 10: istio.networking.v1beta1.HTTPRoute.timeout:type_name -> google.protobuf.Duration + 19, // 11: istio.networking.v1beta1.HTTPRoute.retries:type_name -> istio.networking.v1beta1.HTTPRetry + 21, // 12: istio.networking.v1beta1.HTTPRoute.fault:type_name -> istio.networking.v1beta1.HTTPFaultInjection 2, // 13: istio.networking.v1beta1.HTTPRoute.mirror:type_name -> istio.networking.v1beta1.Destination - 35, // 14: istio.networking.v1beta1.HTTPRoute.mirror_percent:type_name -> google.protobuf.UInt32Value - 22, // 15: istio.networking.v1beta1.HTTPRoute.mirror_percentage:type_name -> istio.networking.v1beta1.Percent - 19, // 16: istio.networking.v1beta1.HTTPRoute.cors_policy:type_name -> istio.networking.v1beta1.CorsPolicy - 5, // 17: istio.networking.v1beta1.HTTPRoute.headers:type_name -> istio.networking.v1beta1.Headers - 23, // 18: istio.networking.v1beta1.Headers.request:type_name -> istio.networking.v1beta1.Headers.HeaderOperations - 23, // 19: istio.networking.v1beta1.Headers.response:type_name -> istio.networking.v1beta1.Headers.HeaderOperations - 12, // 20: istio.networking.v1beta1.TLSRoute.match:type_name -> istio.networking.v1beta1.TLSMatchAttributes - 10, // 21: istio.networking.v1beta1.TLSRoute.route:type_name -> istio.networking.v1beta1.RouteDestination - 11, // 22: istio.networking.v1beta1.TCPRoute.match:type_name -> istio.networking.v1beta1.L4MatchAttributes - 10, // 23: istio.networking.v1beta1.TCPRoute.route:type_name -> istio.networking.v1beta1.RouteDestination - 17, // 24: istio.networking.v1beta1.HTTPMatchRequest.uri:type_name -> istio.networking.v1beta1.StringMatch - 17, // 25: istio.networking.v1beta1.HTTPMatchRequest.scheme:type_name -> istio.networking.v1beta1.StringMatch - 17, // 26: istio.networking.v1beta1.HTTPMatchRequest.method:type_name -> istio.networking.v1beta1.StringMatch - 17, // 27: istio.networking.v1beta1.HTTPMatchRequest.authority:type_name -> istio.networking.v1beta1.StringMatch - 26, // 28: istio.networking.v1beta1.HTTPMatchRequest.headers:type_name -> istio.networking.v1beta1.HTTPMatchRequest.HeadersEntry - 27, // 29: istio.networking.v1beta1.HTTPMatchRequest.source_labels:type_name -> istio.networking.v1beta1.HTTPMatchRequest.SourceLabelsEntry - 28, // 30: istio.networking.v1beta1.HTTPMatchRequest.query_params:type_name -> istio.networking.v1beta1.HTTPMatchRequest.QueryParamsEntry - 29, // 31: istio.networking.v1beta1.HTTPMatchRequest.without_headers:type_name -> istio.networking.v1beta1.HTTPMatchRequest.WithoutHeadersEntry - 2, // 32: istio.networking.v1beta1.HTTPRouteDestination.destination:type_name -> istio.networking.v1beta1.Destination - 5, // 33: istio.networking.v1beta1.HTTPRouteDestination.headers:type_name -> istio.networking.v1beta1.Headers - 2, // 34: istio.networking.v1beta1.RouteDestination.destination:type_name -> istio.networking.v1beta1.Destination - 30, // 35: istio.networking.v1beta1.L4MatchAttributes.source_labels:type_name -> istio.networking.v1beta1.L4MatchAttributes.SourceLabelsEntry - 31, // 36: istio.networking.v1beta1.TLSMatchAttributes.source_labels:type_name -> istio.networking.v1beta1.TLSMatchAttributes.SourceLabelsEntry - 0, // 37: istio.networking.v1beta1.HTTPRedirect.derive_port:type_name -> istio.networking.v1beta1.HTTPRedirect.RedirectPortSelection - 15, // 38: istio.networking.v1beta1.HTTPDirectResponse.body:type_name -> istio.networking.v1beta1.HTTPBody - 34, // 39: istio.networking.v1beta1.HTTPRetry.per_try_timeout:type_name -> google.protobuf.Duration - 36, // 40: istio.networking.v1beta1.HTTPRetry.retry_remote_localities:type_name -> google.protobuf.BoolValue - 17, // 41: istio.networking.v1beta1.CorsPolicy.allow_origins:type_name -> istio.networking.v1beta1.StringMatch - 34, // 42: istio.networking.v1beta1.CorsPolicy.max_age:type_name -> google.protobuf.Duration - 36, // 43: istio.networking.v1beta1.CorsPolicy.allow_credentials:type_name -> google.protobuf.BoolValue - 32, // 44: istio.networking.v1beta1.HTTPFaultInjection.delay:type_name -> istio.networking.v1beta1.HTTPFaultInjection.Delay - 33, // 45: istio.networking.v1beta1.HTTPFaultInjection.abort:type_name -> istio.networking.v1beta1.HTTPFaultInjection.Abort - 24, // 46: istio.networking.v1beta1.Headers.HeaderOperations.set:type_name -> istio.networking.v1beta1.Headers.HeaderOperations.SetEntry - 25, // 47: istio.networking.v1beta1.Headers.HeaderOperations.add:type_name -> istio.networking.v1beta1.Headers.HeaderOperations.AddEntry - 17, // 48: istio.networking.v1beta1.HTTPMatchRequest.HeadersEntry.value:type_name -> istio.networking.v1beta1.StringMatch - 17, // 49: istio.networking.v1beta1.HTTPMatchRequest.QueryParamsEntry.value:type_name -> istio.networking.v1beta1.StringMatch - 17, // 50: istio.networking.v1beta1.HTTPMatchRequest.WithoutHeadersEntry.value:type_name -> istio.networking.v1beta1.StringMatch - 34, // 51: istio.networking.v1beta1.HTTPFaultInjection.Delay.fixed_delay:type_name -> google.protobuf.Duration - 34, // 52: istio.networking.v1beta1.HTTPFaultInjection.Delay.exponential_delay:type_name -> google.protobuf.Duration - 22, // 53: istio.networking.v1beta1.HTTPFaultInjection.Delay.percentage:type_name -> istio.networking.v1beta1.Percent - 22, // 54: istio.networking.v1beta1.HTTPFaultInjection.Abort.percentage:type_name -> istio.networking.v1beta1.Percent - 55, // [55:55] is the sub-list for method output_type - 55, // [55:55] is the sub-list for method input_type - 55, // [55:55] is the sub-list for extension type_name - 55, // [55:55] is the sub-list for extension extendee - 0, // [0:55] is the sub-list for field type_name + 22, // 14: istio.networking.v1beta1.HTTPRoute.mirrors:type_name -> istio.networking.v1beta1.HTTPMirrorPolicy + 37, // 15: istio.networking.v1beta1.HTTPRoute.mirror_percent:type_name -> google.protobuf.UInt32Value + 24, // 16: istio.networking.v1beta1.HTTPRoute.mirror_percentage:type_name -> istio.networking.v1beta1.Percent + 20, // 17: istio.networking.v1beta1.HTTPRoute.cors_policy:type_name -> istio.networking.v1beta1.CorsPolicy + 5, // 18: istio.networking.v1beta1.HTTPRoute.headers:type_name -> istio.networking.v1beta1.Headers + 25, // 19: istio.networking.v1beta1.Headers.request:type_name -> istio.networking.v1beta1.Headers.HeaderOperations + 25, // 20: istio.networking.v1beta1.Headers.response:type_name -> istio.networking.v1beta1.Headers.HeaderOperations + 12, // 21: istio.networking.v1beta1.TLSRoute.match:type_name -> istio.networking.v1beta1.TLSMatchAttributes + 10, // 22: istio.networking.v1beta1.TLSRoute.route:type_name -> istio.networking.v1beta1.RouteDestination + 11, // 23: istio.networking.v1beta1.TCPRoute.match:type_name -> istio.networking.v1beta1.L4MatchAttributes + 10, // 24: istio.networking.v1beta1.TCPRoute.route:type_name -> istio.networking.v1beta1.RouteDestination + 18, // 25: istio.networking.v1beta1.HTTPMatchRequest.uri:type_name -> istio.networking.v1beta1.StringMatch + 18, // 26: istio.networking.v1beta1.HTTPMatchRequest.scheme:type_name -> istio.networking.v1beta1.StringMatch + 18, // 27: istio.networking.v1beta1.HTTPMatchRequest.method:type_name -> istio.networking.v1beta1.StringMatch + 18, // 28: istio.networking.v1beta1.HTTPMatchRequest.authority:type_name -> istio.networking.v1beta1.StringMatch + 28, // 29: istio.networking.v1beta1.HTTPMatchRequest.headers:type_name -> istio.networking.v1beta1.HTTPMatchRequest.HeadersEntry + 29, // 30: istio.networking.v1beta1.HTTPMatchRequest.source_labels:type_name -> istio.networking.v1beta1.HTTPMatchRequest.SourceLabelsEntry + 30, // 31: istio.networking.v1beta1.HTTPMatchRequest.query_params:type_name -> istio.networking.v1beta1.HTTPMatchRequest.QueryParamsEntry + 31, // 32: istio.networking.v1beta1.HTTPMatchRequest.without_headers:type_name -> istio.networking.v1beta1.HTTPMatchRequest.WithoutHeadersEntry + 2, // 33: istio.networking.v1beta1.HTTPRouteDestination.destination:type_name -> istio.networking.v1beta1.Destination + 5, // 34: istio.networking.v1beta1.HTTPRouteDestination.headers:type_name -> istio.networking.v1beta1.Headers + 2, // 35: istio.networking.v1beta1.RouteDestination.destination:type_name -> istio.networking.v1beta1.Destination + 32, // 36: istio.networking.v1beta1.L4MatchAttributes.source_labels:type_name -> istio.networking.v1beta1.L4MatchAttributes.SourceLabelsEntry + 33, // 37: istio.networking.v1beta1.TLSMatchAttributes.source_labels:type_name -> istio.networking.v1beta1.TLSMatchAttributes.SourceLabelsEntry + 0, // 38: istio.networking.v1beta1.HTTPRedirect.derive_port:type_name -> istio.networking.v1beta1.HTTPRedirect.RedirectPortSelection + 15, // 39: istio.networking.v1beta1.HTTPDirectResponse.body:type_name -> istio.networking.v1beta1.HTTPBody + 17, // 40: istio.networking.v1beta1.HTTPRewrite.uri_regex_rewrite:type_name -> istio.networking.v1beta1.RegexRewrite + 36, // 41: istio.networking.v1beta1.HTTPRetry.per_try_timeout:type_name -> google.protobuf.Duration + 38, // 42: istio.networking.v1beta1.HTTPRetry.retry_remote_localities:type_name -> google.protobuf.BoolValue + 18, // 43: istio.networking.v1beta1.CorsPolicy.allow_origins:type_name -> istio.networking.v1beta1.StringMatch + 36, // 44: istio.networking.v1beta1.CorsPolicy.max_age:type_name -> google.protobuf.Duration + 38, // 45: istio.networking.v1beta1.CorsPolicy.allow_credentials:type_name -> google.protobuf.BoolValue + 34, // 46: istio.networking.v1beta1.HTTPFaultInjection.delay:type_name -> istio.networking.v1beta1.HTTPFaultInjection.Delay + 35, // 47: istio.networking.v1beta1.HTTPFaultInjection.abort:type_name -> istio.networking.v1beta1.HTTPFaultInjection.Abort + 2, // 48: istio.networking.v1beta1.HTTPMirrorPolicy.destination:type_name -> istio.networking.v1beta1.Destination + 24, // 49: istio.networking.v1beta1.HTTPMirrorPolicy.percentage:type_name -> istio.networking.v1beta1.Percent + 26, // 50: istio.networking.v1beta1.Headers.HeaderOperations.set:type_name -> istio.networking.v1beta1.Headers.HeaderOperations.SetEntry + 27, // 51: istio.networking.v1beta1.Headers.HeaderOperations.add:type_name -> istio.networking.v1beta1.Headers.HeaderOperations.AddEntry + 18, // 52: istio.networking.v1beta1.HTTPMatchRequest.HeadersEntry.value:type_name -> istio.networking.v1beta1.StringMatch + 18, // 53: istio.networking.v1beta1.HTTPMatchRequest.QueryParamsEntry.value:type_name -> istio.networking.v1beta1.StringMatch + 18, // 54: istio.networking.v1beta1.HTTPMatchRequest.WithoutHeadersEntry.value:type_name -> istio.networking.v1beta1.StringMatch + 36, // 55: istio.networking.v1beta1.HTTPFaultInjection.Delay.fixed_delay:type_name -> google.protobuf.Duration + 36, // 56: istio.networking.v1beta1.HTTPFaultInjection.Delay.exponential_delay:type_name -> google.protobuf.Duration + 24, // 57: istio.networking.v1beta1.HTTPFaultInjection.Delay.percentage:type_name -> istio.networking.v1beta1.Percent + 24, // 58: istio.networking.v1beta1.HTTPFaultInjection.Abort.percentage:type_name -> istio.networking.v1beta1.Percent + 59, // [59:59] is the sub-list for method output_type + 59, // [59:59] is the sub-list for method input_type + 59, // [59:59] is the sub-list for extension type_name + 59, // [59:59] is the sub-list for extension extendee + 0, // [0:59] is the sub-list for field type_name } func init() { file_networking_v1beta1_virtual_service_proto_init() } @@ -4720,7 +4926,7 @@ func file_networking_v1beta1_virtual_service_proto_init() { } } file_networking_v1beta1_virtual_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StringMatch); i { + switch v := v.(*RegexRewrite); i { case 0: return &v.state case 1: @@ -4732,7 +4938,7 @@ func file_networking_v1beta1_virtual_service_proto_init() { } } file_networking_v1beta1_virtual_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HTTPRetry); i { + switch v := v.(*StringMatch); i { case 0: return &v.state case 1: @@ -4744,7 +4950,7 @@ func file_networking_v1beta1_virtual_service_proto_init() { } } file_networking_v1beta1_virtual_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CorsPolicy); i { + switch v := v.(*HTTPRetry); i { case 0: return &v.state case 1: @@ -4756,7 +4962,7 @@ func file_networking_v1beta1_virtual_service_proto_init() { } } file_networking_v1beta1_virtual_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HTTPFaultInjection); i { + switch v := v.(*CorsPolicy); i { case 0: return &v.state case 1: @@ -4768,7 +4974,7 @@ func file_networking_v1beta1_virtual_service_proto_init() { } } file_networking_v1beta1_virtual_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortSelector); i { + switch v := v.(*HTTPFaultInjection); i { case 0: return &v.state case 1: @@ -4780,7 +4986,7 @@ func file_networking_v1beta1_virtual_service_proto_init() { } } file_networking_v1beta1_virtual_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Percent); i { + switch v := v.(*HTTPMirrorPolicy); i { case 0: return &v.state case 1: @@ -4792,6 +4998,30 @@ func file_networking_v1beta1_virtual_service_proto_init() { } } file_networking_v1beta1_virtual_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PortSelector); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_networking_v1beta1_virtual_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Percent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_networking_v1beta1_virtual_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Headers_HeaderOperations); i { case 0: return &v.state @@ -4803,7 +5033,7 @@ func file_networking_v1beta1_virtual_service_proto_init() { return nil } } - file_networking_v1beta1_virtual_service_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_networking_v1beta1_virtual_service_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HTTPFaultInjection_Delay); i { case 0: return &v.state @@ -4815,7 +5045,7 @@ func file_networking_v1beta1_virtual_service_proto_init() { return nil } } - file_networking_v1beta1_virtual_service_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_networking_v1beta1_virtual_service_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HTTPFaultInjection_Abort); i { case 0: return &v.state @@ -4836,16 +5066,16 @@ func file_networking_v1beta1_virtual_service_proto_init() { (*HTTPBody_String_)(nil), (*HTTPBody_Bytes)(nil), } - file_networking_v1beta1_virtual_service_proto_msgTypes[16].OneofWrappers = []interface{}{ + file_networking_v1beta1_virtual_service_proto_msgTypes[17].OneofWrappers = []interface{}{ (*StringMatch_Exact)(nil), (*StringMatch_Prefix)(nil), (*StringMatch_Regex)(nil), } - file_networking_v1beta1_virtual_service_proto_msgTypes[31].OneofWrappers = []interface{}{ + file_networking_v1beta1_virtual_service_proto_msgTypes[33].OneofWrappers = []interface{}{ (*HTTPFaultInjection_Delay_FixedDelay)(nil), (*HTTPFaultInjection_Delay_ExponentialDelay)(nil), } - file_networking_v1beta1_virtual_service_proto_msgTypes[32].OneofWrappers = []interface{}{ + file_networking_v1beta1_virtual_service_proto_msgTypes[34].OneofWrappers = []interface{}{ (*HTTPFaultInjection_Abort_HttpStatus)(nil), (*HTTPFaultInjection_Abort_GrpcStatus)(nil), (*HTTPFaultInjection_Abort_Http2Error)(nil), @@ -4856,7 +5086,7 @@ func file_networking_v1beta1_virtual_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_networking_v1beta1_virtual_service_proto_rawDesc, NumEnums: 1, - NumMessages: 33, + NumMessages: 35, NumExtensions: 0, NumServices: 0, }, diff --git a/vendor/istio.io/api/networking/v1beta1/virtual_service.proto b/vendor/istio.io/api/networking/v1beta1/virtual_service.proto index 66f8f9f1..6894f882 100644 --- a/vendor/istio.io/api/networking/v1beta1/virtual_service.proto +++ b/vendor/istio.io/api/networking/v1beta1/virtual_service.proto @@ -186,11 +186,11 @@ option go_package = "istio.io/api/networking/v1beta1"; // +cue-gen:VirtualService:subresource:status // +cue-gen:VirtualService:scope:Namespaced // +cue-gen:VirtualService:resource:categories=istio-io,networking-istio-io,shortNames=vs -// +cue-gen:VirtualService:printerColumn:name=Gateways,type=string,JSONPath=.spec.gateways,description="The names of gateways and sidecars +// +cue-gen:VirtualService:printerColumn:name=Gateways,type=string,JSONPath=.spec.gateways,description="The names of gateways and sidecars // that should apply these routes" // +cue-gen:VirtualService:printerColumn:name=Hosts,type=string,JSONPath=.spec.hosts,description="The destination hosts to which traffic is being sent" -// +cue-gen:VirtualService:printerColumn:name=Age,type=date,JSONPath=.metadata.creationTimestamp,description="CreationTimestamp is a timestamp -// representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. +// +cue-gen:VirtualService:printerColumn:name=Age,type=date,JSONPath=.metadata.creationTimestamp,description="CreationTimestamp is a timestamp +// representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. // Clients may not set this value. It is represented in RFC3339 form and is in UTC. // Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata" // +cue-gen:VirtualService:preserveUnknownFields:false @@ -253,8 +253,8 @@ message VirtualService { repeated string gateways = 2; // An ordered list of route rules for HTTP traffic. HTTP routes will be - // applied to platform service ports named 'http-*'/'http2-*'/'grpc-*', gateway - // ports with protocol HTTP/HTTP2/GRPC/ TLS-terminated-HTTPS and service + // applied to platform service ports using HTTP/HTTP2/GRPC protocols, gateway + // ports with protocol HTTP/HTTP2/GRPC/TLS-terminated-HTTPS and service // entry ports using HTTP/HTTP2/GRPC protocols. The first rule matching // an incoming request is used. repeated HTTPRoute http = 3; @@ -633,6 +633,17 @@ message HTTPRoute { // destination. Destination mirror = 9; + // $hide_from_docs + // Hide this from doc until implemented. + // + // Specifies the destinations to mirror HTTP traffic in addition + // to the original destination. Mirrored traffic is on a + // best effort basis where the sidecar/gateway will not wait for the + // mirrored destinations to respond before returning the response from the + // original destination. Statistics will be generated for the mirrored + // destination. + repeated HTTPMirrorPolicy mirrors = 22; + // Percentage of the traffic to be mirrored by the `mirror` field. // Use of integer `mirror_percent` value is deprecated. Use the // double `mirror_percentage` field instead @@ -656,7 +667,7 @@ message HTTPRoute { Headers headers = 16; // $hide_from_docs - // Next available field number: 22 + // Next available field number: 23 } @@ -1071,6 +1082,13 @@ message HTTPMatchRequest { // - `regex: "value"` for RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax). // // If the value is empty and only the name of header is specified, presence of the header is checked. + // To provide an empty value, use `{}`, for example: + // + // ``` + // - match: + // - headers: + // myheader: {} + // ``` // **Note:** The keys `uri`, `scheme`, `method`, and `authority` will be ignored. map headers = 5; @@ -1100,11 +1118,12 @@ message HTTPMatchRequest { // - For a query parameter like "?key", the map key would be "key" and the // string match could be defined as `exact: ""`. // + // - For a query parameter like "?key=abc" or "?key=abx", the map key would be "key" and the + // string match could be defined as `prefix: "ab"`. + // // - For a query parameter like "?key=123", the map key would be "key" and the // string match could be defined as `regex: "\d+$"`. Note that this // configuration will only match values like "123" but not "a123" or "123a". - // - // **Note:** `prefix` matching is currently not supported. map query_params = 9; // Flag to specify whether the URI matching should be case-insensitive. @@ -1126,7 +1145,7 @@ message HTTPMatchRequest { // The statistics are generated with prefix route.. // This should be set for highly critical routes that one wishes to get "per-route" statistics on. // This prefix is only for proxy-level statistics (envoy_*) and not service-level (istio_*) statistics. - // Refer to https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-field-config-route-v3-route-stat-prefix + // Refer to https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-field-config-route-v3-route-stat-prefix // for statistics that are generated when this is configured. string stat_prefix = 14; } @@ -1338,7 +1357,7 @@ message TLSMatchAttributes { // SNI (server name indicator) to match on. Wildcard prefixes // can be used in the SNI value, e.g., *.com will match foo.example.com // as well as example.com. An SNI value must be a subset (i.e., fall - // within the domain) of the corresponding virtual serivce's hosts. + // within the domain) of the corresponding virtual service's hosts. repeated string sni_hosts = 1 [(google.api.field_behavior) = REQUIRED]; // IPv4 or IPv6 ip addresses of destination with optional subnet. E.g., @@ -1573,7 +1592,7 @@ message HTTPRedirect { // headers: // response: // set: -// content-type: "appliation/json" +// content-type: "application/json" // ... // ``` // {{}} @@ -1683,6 +1702,27 @@ message HTTPRewrite { // rewrite the Authority/Host header with this value. string authority = 2; + + // rewrite the path portion of the URI with the specified regex. + RegexRewrite uri_regex_rewrite = 3; +} + +message RegexRewrite { + // RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax). + string match = 1; + + // The string that should replace into matching portions of original URI. + // Capture groups in the pattern can be referenced in the new URI. + // Examples: + // + // Example 1: rewrite with capture groups + // Path pattern "/service/update/v1/api" with match "^/service/([^/]+)(/.*)$" and + // rewrite string of "/customprefix/\2/\1" would transform into "/customprefix/v1/api/update". + // + // Example 2: case insensitive rewrite + // Path pattern "/aaa/XxX/bbb" with match "(?i)/xxx/" and a rewrite string of /yyy/ would do a + // case-insensitive match and transform the path to "/aaa/yyy/bbb". + string rewrite = 2; } // Describes how to match a given string in HTTP headers. Match is @@ -1753,15 +1793,15 @@ message StringMatch { // message HTTPRetry { // Number of retries to be allowed for a given request. The interval - // between retries will be determined automatically (25ms+). When request - // `timeout` of the [HTTP route](https://istio.io/docs/reference/config/networking/virtual-service/#HTTPRoute) + // between retries will be determined automatically (25ms+). When request + // `timeout` of the [HTTP route](https://istio.io/docs/reference/config/networking/virtual-service/#HTTPRoute) // or `per_try_timeout` is configured, the actual number of retries attempted also depends on // the specified request `timeout` and `per_try_timeout` values. int32 attempts = 1 [(google.api.field_behavior) = REQUIRED]; // Timeout per attempt for a given request, including the initial call and any retries. Format: 1h/1m/1s/1ms. MUST BE >=1ms. - // Default is same value as request - // `timeout` of the [HTTP route](https://istio.io/docs/reference/config/networking/virtual-service/#HTTPRoute), + // Default is same value as request + // `timeout` of the [HTTP route](https://istio.io/docs/reference/config/networking/virtual-service/#HTTPRoute), // which means no timeout. google.protobuf.Duration per_try_timeout = 2; @@ -2050,6 +2090,31 @@ message HTTPFaultInjection { } } +// $hide_from_docs +// Hide this from doc until implemented. +// +// HTTPMirrorPolicy can be used to specify the destinations to mirror HTTP traffic in addition +// to the original destination. Mirrored traffic is on a +// best effort basis where the sidecar/gateway will not wait for the +// mirrored destinations to respond before returning the response from the +// original destination. Statistics will be generated for the mirrored +// destination. +message HTTPMirrorPolicy { + // $hide_from_docs + // Hide this from doc until implemented. + // + // Destination specifies the target of the mirror operation. + Destination destination = 1 [(google.api.field_behavior) = REQUIRED]; + + // $hide_from_docs + // Hide this from doc until implemented. + // + // Percentage of the traffic to be mirrored by the `destination` field. + // If this field is absent, all the traffic (100%) will be mirrored. + // Max value is 100. + Percent percentage = 2; +} + // PortSelector specifies the number of a port to be used for // matching or selection for final routing. message PortSelector { diff --git a/vendor/istio.io/api/networking/v1beta1/virtual_service_deepcopy.gen.go b/vendor/istio.io/api/networking/v1beta1/virtual_service_deepcopy.gen.go index 34370c0f..30cf8d5f 100644 --- a/vendor/istio.io/api/networking/v1beta1/virtual_service_deepcopy.gen.go +++ b/vendor/istio.io/api/networking/v1beta1/virtual_service_deepcopy.gen.go @@ -362,6 +362,27 @@ func (in *HTTPRewrite) DeepCopyInterface() interface{} { return in.DeepCopy() } +// DeepCopyInto supports using RegexRewrite within kubernetes types, where deepcopy-gen is used. +func (in *RegexRewrite) DeepCopyInto(out *RegexRewrite) { + p := proto.Clone(in).(*RegexRewrite) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegexRewrite. Required by controller-gen. +func (in *RegexRewrite) DeepCopy() *RegexRewrite { + if in == nil { + return nil + } + out := new(RegexRewrite) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new RegexRewrite. Required by controller-gen. +func (in *RegexRewrite) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + // DeepCopyInto supports using StringMatch within kubernetes types, where deepcopy-gen is used. func (in *StringMatch) DeepCopyInto(out *StringMatch) { p := proto.Clone(in).(*StringMatch) @@ -488,6 +509,27 @@ func (in *HTTPFaultInjection_Abort) DeepCopyInterface() interface{} { return in.DeepCopy() } +// DeepCopyInto supports using HTTPMirrorPolicy within kubernetes types, where deepcopy-gen is used. +func (in *HTTPMirrorPolicy) DeepCopyInto(out *HTTPMirrorPolicy) { + p := proto.Clone(in).(*HTTPMirrorPolicy) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPMirrorPolicy. Required by controller-gen. +func (in *HTTPMirrorPolicy) DeepCopy() *HTTPMirrorPolicy { + if in == nil { + return nil + } + out := new(HTTPMirrorPolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new HTTPMirrorPolicy. Required by controller-gen. +func (in *HTTPMirrorPolicy) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + // DeepCopyInto supports using PortSelector within kubernetes types, where deepcopy-gen is used. func (in *PortSelector) DeepCopyInto(out *PortSelector) { p := proto.Clone(in).(*PortSelector) diff --git a/vendor/istio.io/api/networking/v1beta1/virtual_service_json.gen.go b/vendor/istio.io/api/networking/v1beta1/virtual_service_json.gen.go index 8aae39cb..82fa8451 100644 --- a/vendor/istio.io/api/networking/v1beta1/virtual_service_json.gen.go +++ b/vendor/istio.io/api/networking/v1beta1/virtual_service_json.gen.go @@ -193,6 +193,17 @@ func (this *HTTPRewrite) UnmarshalJSON(b []byte) error { return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this) } +// MarshalJSON is a custom marshaler for RegexRewrite +func (this *RegexRewrite) MarshalJSON() ([]byte, error) { + str, err := VirtualServiceMarshaler.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for RegexRewrite +func (this *RegexRewrite) UnmarshalJSON(b []byte) error { + return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this) +} + // MarshalJSON is a custom marshaler for StringMatch func (this *StringMatch) MarshalJSON() ([]byte, error) { str, err := VirtualServiceMarshaler.MarshalToString(this) @@ -259,6 +270,17 @@ func (this *HTTPFaultInjection_Abort) UnmarshalJSON(b []byte) error { return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this) } +// MarshalJSON is a custom marshaler for HTTPMirrorPolicy +func (this *HTTPMirrorPolicy) MarshalJSON() ([]byte, error) { + str, err := VirtualServiceMarshaler.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for HTTPMirrorPolicy +func (this *HTTPMirrorPolicy) UnmarshalJSON(b []byte) error { + return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this) +} + // MarshalJSON is a custom marshaler for PortSelector func (this *PortSelector) MarshalJSON() ([]byte, error) { str, err := VirtualServiceMarshaler.MarshalToString(this) diff --git a/vendor/istio.io/api/networking/v1beta1/workload_entry.gen.json b/vendor/istio.io/api/networking/v1beta1/workload_entry.gen.json index 764418e9..f0fc0010 100644 --- a/vendor/istio.io/api/networking/v1beta1/workload_entry.gen.json +++ b/vendor/istio.io/api/networking/v1beta1/workload_entry.gen.json @@ -11,7 +11,7 @@ "type": "object", "properties": { "address": { - "description": "Address associated with the network endpoint without the port. Domain names can be used if and only if the resolution is set to DNS, and must be fully-qualified without wildcards. Use the form unix:///absolute/path/to/socket for Unix domain socket endpoints.", + "description": "Address associated with the network endpoint without the port. Domain names can be used if and only if the resolution is set to DNS, and must be fully-qualified without wildcards. Use the form unix:///absolute/path/to/socket for Unix domain socket endpoints. If address is empty, network must be specified.", "type": "string" }, "ports": { @@ -29,7 +29,7 @@ } }, "network": { - "description": "Network enables Istio to group endpoints resident in the same L3 domain/network. All endpoints in the same network are assumed to be directly reachable from one another. When endpoints in different networks cannot reach each other directly, an Istio Gateway can be used to establish connectivity (usually using the `AUTO_PASSTHROUGH` mode in a Gateway Server). This is an advanced configuration used typically for spanning an Istio mesh over multiple clusters.", + "description": "Network enables Istio to group endpoints resident in the same L3 domain/network. All endpoints in the same network are assumed to be directly reachable from one another. When endpoints in different networks cannot reach each other directly, an Istio Gateway can be used to establish connectivity (usually using the `AUTO_PASSTHROUGH` mode in a Gateway Server). This is an advanced configuration used typically for spanning an Istio mesh over multiple clusters. Required if address is not provided.", "type": "string" }, "locality": { diff --git a/vendor/istio.io/api/networking/v1beta1/workload_entry.pb.go b/vendor/istio.io/api/networking/v1beta1/workload_entry.pb.go index 9fd16e4d..09957251 100644 --- a/vendor/istio.io/api/networking/v1beta1/workload_entry.pb.go +++ b/vendor/istio.io/api/networking/v1beta1/workload_entry.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: networking/v1beta1/workload_entry.proto @@ -231,11 +231,48 @@ // {{}} // {{}} // +// +// The following example declares a VM workload without an address. +// An alternative to having istiod read from remote API servers is +// to write a `WorkloadEntry` in the local cluster that represents +// the Workload(s) in the remote network with the given labels. A +// single `WorkloadEntry` with weights represent the aggregate of all +// the actual workloads in a given remote network. +// +// {{}} +// {{}} +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: WorkloadEntry +// metadata: +// name: foo-workloads-cluster-2 +// spec: +// serviceAccount: foo +// network: cluster-2-network +// labels: +// app: foo +// ``` +// {{}} +// +// {{}} +// ```yaml +// apiVersion: networking.istio.io/v1beta1 +// kind: WorkloadEntry +// metadata: +// name: foo-workloads-cluster-2 +// spec: +// serviceAccount: foo +// network: cluster-2-network +// labels: +// app: foo +// ``` +// {{}} +// {{}} +// package v1beta1 import ( - _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -285,6 +322,7 @@ type WorkloadEntry struct { // port. Domain names can be used if and only if the resolution is set // to DNS, and must be fully-qualified without wildcards. Use the form // unix:///absolute/path/to/socket for Unix domain socket endpoints. + // If address is empty, network must be specified. Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` // Set of ports associated with the endpoint. If the port map is // specified, it must be a map of servicePortName to this endpoint's @@ -310,7 +348,7 @@ type WorkloadEntry struct { // used to establish connectivity (usually using the // `AUTO_PASSTHROUGH` mode in a Gateway Server). This is // an advanced configuration used typically for spanning an Istio mesh - // over multiple clusters. + // over multiple clusters. Required if address is not provided. Network string `protobuf:"bytes,4,opt,name=network,proto3" json:"network,omitempty"` // The locality associated with the endpoint. A locality corresponds // to a failure domain (e.g., country/region/zone). Arbitrary failure @@ -428,39 +466,36 @@ var file_networking_v1beta1_workload_entry_proto_rawDesc = []byte{ 0x65, 0x74, 0x61, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb2, 0x03, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x07, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x48, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x50, - 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, - 0x12, 0x4b, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x18, 0x0a, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, - 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, - 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x38, 0x0a, 0x0a, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, - 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x21, 0x5a, 0x1f, 0x69, 0x73, 0x74, - 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x61, 0x31, 0x22, 0xac, 0x03, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x48, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, + 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x06, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, + 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x77, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x38, 0x0a, + 0x0a, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x42, 0x21, 0x5a, 0x1f, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/vendor/istio.io/api/networking/v1beta1/workload_entry.proto b/vendor/istio.io/api/networking/v1beta1/workload_entry.proto index f3b08108..50cbee0c 100644 --- a/vendor/istio.io/api/networking/v1beta1/workload_entry.proto +++ b/vendor/istio.io/api/networking/v1beta1/workload_entry.proto @@ -14,8 +14,6 @@ syntax = "proto3"; -import "google/api/field_behavior.proto"; - // $schema: istio.networking.v1beta1.WorkloadEntry // $title: Workload Entry // $description: Configuration affecting VMs onboarded into the mesh. @@ -229,6 +227,44 @@ import "google/api/field_behavior.proto"; // {{}} // {{}} // +// +// The following example declares a VM workload without an address. +// An alternative to having istiod read from remote API servers is +// to write a `WorkloadEntry` in the local cluster that represents +// the Workload(s) in the remote network with the given labels. A +// single `WorkloadEntry` with weights represent the aggregate of all +// the actual workloads in a given remote network. +// +// {{}} +// {{}} +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: WorkloadEntry +// metadata: +// name: foo-workloads-cluster-2 +// spec: +// serviceAccount: foo +// network: cluster-2-network +// labels: +// app: foo +// ``` +// {{}} +// +// {{}} +// ```yaml +// apiVersion: networking.istio.io/v1beta1 +// kind: WorkloadEntry +// metadata: +// name: foo-workloads-cluster-2 +// spec: +// serviceAccount: foo +// network: cluster-2-network +// labels: +// app: foo +// ``` +// {{}} +// {{}} +// package istio.networking.v1beta1; option go_package = "istio.io/api/networking/v1beta1"; @@ -265,7 +301,8 @@ message WorkloadEntry { // port. Domain names can be used if and only if the resolution is set // to DNS, and must be fully-qualified without wildcards. Use the form // unix:///absolute/path/to/socket for Unix domain socket endpoints. - string address = 1 [(google.api.field_behavior) = REQUIRED]; + // If address is empty, network must be specified. + string address = 1; // Set of ports associated with the endpoint. If the port map is // specified, it must be a map of servicePortName to this endpoint's @@ -293,7 +330,7 @@ message WorkloadEntry { // used to establish connectivity (usually using the // `AUTO_PASSTHROUGH` mode in a Gateway Server). This is // an advanced configuration used typically for spanning an Istio mesh - // over multiple clusters. + // over multiple clusters. Required if address is not provided. string network = 4; // The locality associated with the endpoint. A locality corresponds diff --git a/vendor/istio.io/api/networking/v1beta1/workload_group.gen.json b/vendor/istio.io/api/networking/v1beta1/workload_group.gen.json index eaa85ccb..2652a9d2 100644 --- a/vendor/istio.io/api/networking/v1beta1/workload_group.gen.json +++ b/vendor/istio.io/api/networking/v1beta1/workload_group.gen.json @@ -175,7 +175,7 @@ "type": "object", "properties": { "address": { - "description": "Address associated with the network endpoint without the port. Domain names can be used if and only if the resolution is set to DNS, and must be fully-qualified without wildcards. Use the form unix:///absolute/path/to/socket for Unix domain socket endpoints.", + "description": "Address associated with the network endpoint without the port. Domain names can be used if and only if the resolution is set to DNS, and must be fully-qualified without wildcards. Use the form unix:///absolute/path/to/socket for Unix domain socket endpoints. If address is empty, network must be specified.", "type": "string" }, "ports": { @@ -193,7 +193,7 @@ } }, "network": { - "description": "Network enables Istio to group endpoints resident in the same L3 domain/network. All endpoints in the same network are assumed to be directly reachable from one another. When endpoints in different networks cannot reach each other directly, an Istio Gateway can be used to establish connectivity (usually using the `AUTO_PASSTHROUGH` mode in a Gateway Server). This is an advanced configuration used typically for spanning an Istio mesh over multiple clusters.", + "description": "Network enables Istio to group endpoints resident in the same L3 domain/network. All endpoints in the same network are assumed to be directly reachable from one another. When endpoints in different networks cannot reach each other directly, an Istio Gateway can be used to establish connectivity (usually using the `AUTO_PASSTHROUGH` mode in a Gateway Server). This is an advanced configuration used typically for spanning an Istio mesh over multiple clusters. Required if address is not provided.", "type": "string" }, "locality": { diff --git a/vendor/istio.io/api/networking/v1beta1/workload_group.pb.go b/vendor/istio.io/api/networking/v1beta1/workload_group.pb.go index ed01e568..9f139643 100644 --- a/vendor/istio.io/api/networking/v1beta1/workload_group.pb.go +++ b/vendor/istio.io/api/networking/v1beta1/workload_group.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: networking/v1beta1/workload_group.proto @@ -23,6 +23,7 @@ // $description: Describes a collection of workload instances. // $location: https://istio.io/docs/reference/config/networking/workload-group.html // $aliases: [/docs/reference/config/networking/v1alpha3/workload-group] +// $mode: none // `WorkloadGroup` describes a collection of workload instances. // It provides a specification that the workload instances can use to bootstrap @@ -72,6 +73,40 @@ // value: Im-The-Best // ``` // {{}} +// +// {{}} +// ```yaml +// apiVersion: networking.istio.io/v1beta1 +// kind: WorkloadGroup +// metadata: +// name: reviews +// namespace: bookinfo +// spec: +// metadata: +// labels: +// app.kubernetes.io/name: reviews +// app.kubernetes.io/version: "1.3.4" +// template: +// ports: +// grpc: 3550 +// http: 8080 +// serviceAccount: default +// probe: +// initialDelaySeconds: 5 +// timeoutSeconds: 3 +// periodSeconds: 4 +// successThreshold: 3 +// failureThreshold: 3 +// httpGet: +// path: /foo/bar +// host: 127.0.0.1 +// port: 3100 +// scheme: HTTPS +// httpHeaders: +// - name: Lit-Header +// value: Im-The-Best +// ``` +// {{}} // {{}} // @@ -663,99 +698,99 @@ var file_networking_v1beta1_workload_group_proto_rawDesc = []byte{ 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb3, 0x04, + 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb2, 0x04, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x4e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x49, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x48, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, - 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, - 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x70, 0x72, - 0x6f, 0x62, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, 0x73, 0x74, 0x69, - 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x50, 0x72, - 0x6f, 0x62, 0x65, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x1a, 0xc6, 0x02, 0x0a, 0x0a, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x56, 0x0a, 0x06, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x70, 0x72, 0x6f, + 0x62, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x50, 0x72, 0x6f, + 0x62, 0x65, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x1a, 0xc6, 0x02, 0x0a, 0x0a, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x56, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x12, 0x65, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0xeb, 0x03, 0x0a, 0x0e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, + 0x50, 0x72, 0x6f, 0x62, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, + 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, 0x6c, + 0x61, 0x79, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, + 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, + 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x69, + 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x75, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x12, 0x4c, 0x0a, 0x08, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x67, 0x65, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x07, 0x68, 0x74, 0x74, 0x70, 0x47, 0x65, + 0x74, 0x12, 0x4f, 0x0a, 0x0a, 0x74, 0x63, 0x70, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x54, 0x43, 0x50, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x09, 0x74, 0x63, 0x70, 0x53, 0x6f, 0x63, 0x6b, + 0x65, 0x74, 0x12, 0x45, 0x0a, 0x04, 0x65, 0x78, 0x65, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, + 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x48, 0x00, 0x52, 0x04, 0x65, 0x78, 0x65, 0x63, 0x42, 0x15, 0x0a, 0x13, 0x68, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x22, 0xb9, 0x01, 0x0a, 0x15, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x17, + 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x12, 0x65, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0xeb, 0x03, 0x0a, 0x0e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, - 0x73, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, - 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, - 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x70, 0x65, 0x72, - 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x68, - 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x75, - 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, - 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x4c, 0x0a, 0x08, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x67, 0x65, 0x74, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x07, 0x68, 0x74, 0x74, 0x70, 0x47, - 0x65, 0x74, 0x12, 0x4f, 0x0a, 0x0a, 0x74, 0x63, 0x70, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x54, 0x43, 0x50, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x09, 0x74, 0x63, 0x70, 0x53, 0x6f, 0x63, - 0x6b, 0x65, 0x74, 0x12, 0x45, 0x0a, 0x04, 0x65, 0x78, 0x65, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x65, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, + 0x0b, 0x68, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x36, 0x0a, 0x0a, + 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x43, 0x0a, 0x14, 0x54, 0x43, 0x50, 0x48, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, + 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, + 0x12, 0x17, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x31, 0x0a, 0x15, 0x45, 0x78, 0x65, 0x63, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x48, 0x00, 0x52, 0x04, 0x65, 0x78, 0x65, 0x63, 0x42, 0x15, 0x0a, 0x13, 0x68, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x22, 0xba, 0x01, 0x0a, 0x15, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, - 0x18, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x04, 0xe2, - 0x41, 0x01, 0x02, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x73, - 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x52, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x36, - 0x0a, 0x0a, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x44, 0x0a, 0x14, 0x54, 0x43, 0x50, 0x48, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, - 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, - 0x73, 0x74, 0x12, 0x18, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x31, 0x0a, 0x15, - 0x45, 0x78, 0x65, 0x63, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x42, - 0x21, 0x5a, 0x1f, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x42, 0x21, 0x5a, 0x1f, + 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/vendor/istio.io/api/networking/v1beta1/workload_group.proto b/vendor/istio.io/api/networking/v1beta1/workload_group.proto index a7d28ae7..e528d992 100644 --- a/vendor/istio.io/api/networking/v1beta1/workload_group.proto +++ b/vendor/istio.io/api/networking/v1beta1/workload_group.proto @@ -22,6 +22,7 @@ import "networking/v1beta1/workload_entry.proto"; // $description: Describes a collection of workload instances. // $location: https://istio.io/docs/reference/config/networking/workload-group.html // $aliases: [/docs/reference/config/networking/v1alpha3/workload-group] +// $mode: none // `WorkloadGroup` describes a collection of workload instances. // It provides a specification that the workload instances can use to bootstrap @@ -71,6 +72,40 @@ import "networking/v1beta1/workload_entry.proto"; // value: Im-The-Best // ``` // {{}} +// +// {{}} +// ```yaml +// apiVersion: networking.istio.io/v1beta1 +// kind: WorkloadGroup +// metadata: +// name: reviews +// namespace: bookinfo +// spec: +// metadata: +// labels: +// app.kubernetes.io/name: reviews +// app.kubernetes.io/version: "1.3.4" +// template: +// ports: +// grpc: 3550 +// http: 8080 +// serviceAccount: default +// probe: +// initialDelaySeconds: 5 +// timeoutSeconds: 3 +// periodSeconds: 4 +// successThreshold: 3 +// failureThreshold: 3 +// httpGet: +// path: /foo/bar +// host: 127.0.0.1 +// port: 3100 +// scheme: HTTPS +// httpHeaders: +// - name: Lit-Header +// value: Im-The-Best +// ``` +// {{}} // {{}} // package istio.networking.v1beta1; diff --git a/vendor/istio.io/api/type/v1beta1/selector.pb.go b/vendor/istio.io/api/type/v1beta1/selector.pb.go index 61925ef5..cfd7b256 100644 --- a/vendor/istio.io/api/type/v1beta1/selector.pb.go +++ b/vendor/istio.io/api/type/v1beta1/selector.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: type/v1beta1/selector.proto @@ -219,28 +219,28 @@ var file_type_v1beta1_selector_proto_rawDesc = []byte{ 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xb2, 0x01, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x5e, 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x74, 0x6f, 0x22, 0xb1, 0x01, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x5d, 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x26, 0x0a, 0x0c, 0x50, 0x6f, 0x72, 0x74, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2a, - 0x4c, 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, - 0x0d, 0x0a, 0x09, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, - 0x0a, 0x06, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x45, - 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, - 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x03, 0x42, 0x1b, 0x5a, - 0x19, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x79, - 0x70, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x26, 0x0a, 0x0c, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2a, 0x4c, + 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0d, + 0x0a, 0x09, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, + 0x06, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x45, 0x52, + 0x56, 0x45, 0x52, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, + 0x41, 0x4e, 0x44, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x03, 0x42, 0x1b, 0x5a, 0x19, + 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( diff --git a/vendor/k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1/types.go b/vendor/k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1/types.go index aff68d6f..cd3eba2e 100644 --- a/vendor/k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1/types.go +++ b/vendor/k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1/types.go @@ -40,6 +40,7 @@ type VerticalPodAutoscalerList struct { // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +kubebuilder:storageversion // +kubebuilder:resource:shortName=vpa +// +kubebuilder:subresource:status // +kubebuilder:printcolumn:name="Mode",type="string",JSONPath=".spec.updatePolicy.updateMode" // +kubebuilder:printcolumn:name="CPU",type="string",JSONPath=".status.recommendation.containerRecommendations[0].target.cpu" // +kubebuilder:printcolumn:name="Mem",type="string",JSONPath=".status.recommendation.containerRecommendations[0].target.memory" @@ -93,8 +94,11 @@ type VerticalPodAutoscalerSpec struct { // Controls how the autoscaler computes recommended resources. // The resource policy may be used to set constraints on the recommendations - // for individual containers. If not specified, the autoscaler computes recommended - // resources for all containers in the pod, without additional constraints. + // for individual containers. + // If any individual containers need to be excluded from getting the VPA recommendations, then + // it must be disabled explicitly by setting mode to "Off" under containerPolicies. + // If not specified, the autoscaler computes recommended resources for all containers in the pod, + // without additional constraints. // +optional ResourcePolicy *PodResourcePolicy `json:"resourcePolicy,omitempty" protobuf:"bytes,3,opt,name=resourcePolicy"` @@ -105,6 +109,27 @@ type VerticalPodAutoscalerSpec struct { Recommenders []*VerticalPodAutoscalerRecommenderSelector `json:"recommenders,omitempty" protobuf:"bytes,4,opt,name=recommenders"` } +// EvictionChangeRequirement refers to the relationship between the new target recommendation for a Pod and its current requests, what kind of change is necessary for the Pod to be evicted +// +kubebuilder:validation:Enum:=TargetHigherThanRequests;TargetLowerThanRequests +type EvictionChangeRequirement string + +const ( + // TargetHigherThanRequests means the new target recommendation for a Pod is higher than its current requests, i.e. the Pod is scaled up + TargetHigherThanRequests EvictionChangeRequirement = "TargetHigherThanRequests" + // TargetLowerThanRequests means the new target recommendation for a Pod is lower than its current requests, i.e. the Pod is scaled down + TargetLowerThanRequests EvictionChangeRequirement = "TargetLowerThanRequests" +) + +// EvictionRequirement defines a single condition which needs to be true in +// order to evict a Pod +type EvictionRequirement struct { + // Resources is a list of one or more resources that the condition applies + // to. If more than one resource is given, the EvictionRequirement is fulfilled + // if at least one resource meets `changeRequirement`. + Resources []v1.ResourceName `json:"resource" protobuf:"bytes,1,name=resources"` + ChangeRequirement EvictionChangeRequirement `json:"changeRequirement" protobuf:"bytes,2,name=changeRequirement"` +} + // PodUpdatePolicy describes the rules on how changes are applied to the pods. type PodUpdatePolicy struct { // Controls when autoscaler applies changes to the pod resources. @@ -117,6 +142,12 @@ type PodUpdatePolicy struct { // allowed. Overrides global '--min-replicas' flag. // +optional MinReplicas *int32 `json:"minReplicas,omitempty" protobuf:"varint,2,opt,name=minReplicas"` + + // EvictionRequirements is a list of EvictionRequirements that need to + // evaluate to true in order for a Pod to be evicted. If more than one + // EvictionRequirement is specified, all of them need to be fulfilled to allow eviction. + // +optional + EvictionRequirements []*EvictionRequirement `json:"evictionRequirements,omitempty" protobuf:"bytes,3,opt,name=evictionRequirements"` } // UpdateMode controls when autoscaler applies changes to the pod resources. diff --git a/vendor/modules.txt b/vendor/modules.txt index db719d69..72784a2a 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -69,10 +69,10 @@ github.com/fluent/fluent-operator/v2/pkg/utils # github.com/fsnotify/fsnotify v1.6.0 ## explicit; go 1.16 github.com/fsnotify/fsnotify -# github.com/gardener/etcd-druid v0.20.1 +# github.com/gardener/etcd-druid v0.21.0 ## explicit; go 1.20 github.com/gardener/etcd-druid/api/v1alpha1 -# github.com/gardener/gardener v1.84.1 +# github.com/gardener/gardener v1.86.0 ## explicit; go 1.21 github.com/gardener/gardener/.github github.com/gardener/gardener/.github/ISSUE_TEMPLATE @@ -128,8 +128,6 @@ github.com/gardener/gardener/pkg/component github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/containerd github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/containerd/logrotate -github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker -github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/docker/logrotate github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/kubelet github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/utils github.com/gardener/gardener/pkg/component/kubeapiserver/constants @@ -610,14 +608,14 @@ gopkg.in/yaml.v2 # gopkg.in/yaml.v3 v3.0.1 ## explicit gopkg.in/yaml.v3 -# istio.io/api v0.0.0-20230217221049-9d422bf48675 +# istio.io/api v1.19.2-0.20231011000955-f3015ebb5bd4 ## explicit; go 1.18 istio.io/api/analysis/v1alpha1 istio.io/api/meta/v1alpha1 istio.io/api/networking/v1alpha3 istio.io/api/networking/v1beta1 istio.io/api/type/v1beta1 -# istio.io/client-go v1.17.1 +# istio.io/client-go v1.19.3 ## explicit; go 1.18 istio.io/client-go/pkg/apis/networking/v1alpha3 istio.io/client-go/pkg/apis/networking/v1beta1 @@ -744,7 +742,7 @@ k8s.io/apimachinery/third_party/forked/golang/reflect # k8s.io/apiserver v0.28.3 ## explicit; go 1.20 k8s.io/apiserver/pkg/util/feature -# k8s.io/autoscaler/vertical-pod-autoscaler v0.14.0 +# k8s.io/autoscaler/vertical-pod-autoscaler v1.0.0 ## explicit; go 1.19 k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1 # k8s.io/client-go v0.28.3 @@ -1096,7 +1094,7 @@ sigs.k8s.io/controller-tools/pkg/webhook ## explicit; go 1.18 sigs.k8s.io/json sigs.k8s.io/json/internal/golang/encoding/json -# sigs.k8s.io/structured-merge-diff/v4 v4.2.3 +# sigs.k8s.io/structured-merge-diff/v4 v4.3.0 ## explicit; go 1.13 sigs.k8s.io/structured-merge-diff/v4/fieldpath sigs.k8s.io/structured-merge-diff/v4/merge diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/merge/conflict.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/merge/conflict.go index 75a492d8..f1aa2586 100644 --- a/vendor/sigs.k8s.io/structured-merge-diff/v4/merge/conflict.go +++ b/vendor/sigs.k8s.io/structured-merge-diff/v4/merge/conflict.go @@ -112,7 +112,7 @@ func ConflictsFromManagers(sets fieldpath.ManagedFields) Conflicts { set.Set().Iterate(func(p fieldpath.Path) { conflicts = append(conflicts, Conflict{ Manager: manager, - Path: p, + Path: p.Copy(), }) }) } diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/merge/update.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/merge/update.go index 1b23dcbd..e1540841 100644 --- a/vendor/sigs.k8s.io/structured-merge-diff/v4/merge/update.go +++ b/vendor/sigs.k8s.io/structured-merge-diff/v4/merge/update.go @@ -18,6 +18,7 @@ import ( "sigs.k8s.io/structured-merge-diff/v4/fieldpath" "sigs.k8s.io/structured-merge-diff/v4/typed" + "sigs.k8s.io/structured-merge-diff/v4/value" ) // Converter is an interface to the conversion logic. The converter @@ -27,17 +28,50 @@ type Converter interface { IsMissingVersionError(error) bool } +// UpdateBuilder allows you to create a new Updater by exposing all of +// the options and setting them once. +type UpdaterBuilder struct { + Converter Converter + IgnoredFields map[fieldpath.APIVersion]*fieldpath.Set + + EnableUnions bool + + // Stop comparing the new object with old object after applying. + // This was initially used to avoid spurious etcd update, but + // since that's vastly inefficient, we've come-up with a better + // way of doing that. Create this flag to stop it. + // Comparing has become more expensive too now that we're not using + // `Compare` but `value.Equals` so this gives an option to avoid it. + ReturnInputOnNoop bool +} + +func (u *UpdaterBuilder) BuildUpdater() *Updater { + return &Updater{ + Converter: u.Converter, + IgnoredFields: u.IgnoredFields, + enableUnions: u.EnableUnions, + returnInputOnNoop: u.ReturnInputOnNoop, + } +} + // Updater is the object used to compute updated FieldSets and also // merge the object on Apply. type Updater struct { - Converter Converter + // Deprecated: This will eventually become private. + Converter Converter + + // Deprecated: This will eventually become private. IgnoredFields map[fieldpath.APIVersion]*fieldpath.Set enableUnions bool + + returnInputOnNoop bool } // EnableUnionFeature turns on union handling. It is disabled by default until the // feature is complete. +// +// Deprecated: Use the builder instead. func (s *Updater) EnableUnionFeature() { s.enableUnions = true } @@ -157,8 +191,7 @@ func (s *Updater) Update(liveObject, newObject *typed.TypedValue, version fieldp // Apply should be called when Apply is run, given the current object as // well as the configuration that is applied. This will merge the object -// and return it. If the object hasn't changed, nil is returned (the -// managers can still have changed though). +// and return it. func (s *Updater) Apply(liveObject, configObject *typed.TypedValue, version fieldpath.APIVersion, managers fieldpath.ManagedFields, manager string, force bool) (*typed.TypedValue, fieldpath.ManagedFields, error) { var err error managers, err = s.reconcileManagedFieldsWithSchemaChanges(liveObject, managers) @@ -200,11 +233,11 @@ func (s *Updater) Apply(liveObject, configObject *typed.TypedValue, version fiel if err != nil { return nil, fieldpath.ManagedFields{}, fmt.Errorf("failed to prune fields: %v", err) } - managers, compare, err := s.update(liveObject, newObject, version, managers, manager, force) + managers, _, err = s.update(liveObject, newObject, version, managers, manager, force) if err != nil { return nil, fieldpath.ManagedFields{}, err } - if compare.IsSame() { + if !s.returnInputOnNoop && value.EqualsUsing(value.NewFreelistAllocator(), liveObject.AsValue(), newObject.AsValue()) { newObject = nil } return newObject, managers, nil @@ -218,7 +251,8 @@ func (s *Updater) prune(merged *typed.TypedValue, managers fieldpath.ManagedFiel if lastSet == nil || lastSet.Set().Empty() { return merged, nil } - convertedMerged, err := s.Converter.Convert(merged, lastSet.APIVersion()) + version := lastSet.APIVersion() + convertedMerged, err := s.Converter.Convert(merged, version) if err != nil { if s.Converter.IsMissingVersionError(err) { return merged, nil @@ -228,7 +262,7 @@ func (s *Updater) prune(merged *typed.TypedValue, managers fieldpath.ManagedFiel sc, tr := convertedMerged.Schema(), convertedMerged.TypeRef() pruned := convertedMerged.RemoveItems(lastSet.Set().EnsureNamedFieldsAreMembers(sc, tr)) - pruned, err = s.addBackOwnedItems(convertedMerged, pruned, managers, applyingManager) + pruned, err = s.addBackOwnedItems(convertedMerged, pruned, version, managers, applyingManager) if err != nil { return nil, fmt.Errorf("failed add back owned items: %v", err) } @@ -241,7 +275,7 @@ func (s *Updater) prune(merged *typed.TypedValue, managers fieldpath.ManagedFiel // addBackOwnedItems adds back any fields, list and map items that were removed by prune, // but other appliers or updaters (or the current applier's new config) claim to own. -func (s *Updater) addBackOwnedItems(merged, pruned *typed.TypedValue, managedFields fieldpath.ManagedFields, applyingManager string) (*typed.TypedValue, error) { +func (s *Updater) addBackOwnedItems(merged, pruned *typed.TypedValue, prunedVersion fieldpath.APIVersion, managedFields fieldpath.ManagedFields, applyingManager string) (*typed.TypedValue, error) { var err error managedAtVersion := map[fieldpath.APIVersion]*fieldpath.Set{} for _, managerSet := range managedFields { @@ -252,7 +286,6 @@ func (s *Updater) addBackOwnedItems(merged, pruned *typed.TypedValue, managedFie } // Add back owned items at pruned version first to avoid conversion failure // caused by pruned fields which are required for conversion. - prunedVersion := fieldpath.APIVersion(*pruned.TypeRef().NamedType) if managed, ok := managedAtVersion[prunedVersion]; ok { merged, pruned, err = s.addBackOwnedItemsForVersion(merged, pruned, prunedVersion, managed) if err != nil { diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/elements.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/elements.go index 7e5dc758..5d3707a5 100644 --- a/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/elements.go +++ b/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/elements.go @@ -73,7 +73,7 @@ type Atom struct { } // Scalar (AKA "primitive") represents a type which has a single value which is -// either numeric, string, or boolean. +// either numeric, string, or boolean, or untyped for any of them. // // TODO: split numeric into float/int? Something even more fine-grained? type Scalar string @@ -82,6 +82,7 @@ const ( Numeric = Scalar("numeric") String = Scalar("string") Boolean = Scalar("boolean") + Untyped = Scalar("untyped") ) // ElementRelationship is an enum of the different possible relationships diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/schemaschema.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/schemaschema.go index 7d64d130..e4c5caa2 100644 --- a/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/schemaschema.go +++ b/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/schemaschema.go @@ -110,7 +110,7 @@ var SchemaSchemaYAML = `types: scalar: string - name: deduceInvalidDiscriminator type: - scalar: bool + scalar: boolean - name: fields type: list: diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/merge.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/merge.go index 91364408..09209ec8 100644 --- a/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/merge.go +++ b/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/merge.go @@ -113,11 +113,12 @@ func (w *mergingWalker) doLeaf() { w.rule(w) } -func (w *mergingWalker) doScalar(t *schema.Scalar) (errs ValidationErrors) { - errs = append(errs, validateScalar(t, w.lhs, "lhs: ")...) - errs = append(errs, validateScalar(t, w.rhs, "rhs: ")...) - if len(errs) > 0 { - return errs +func (w *mergingWalker) doScalar(t *schema.Scalar) ValidationErrors { + // Make sure at least one side is a valid scalar. + lerrs := validateScalar(t, w.lhs, "lhs: ") + rerrs := validateScalar(t, w.rhs, "rhs: ") + if len(lerrs) > 0 && len(rerrs) > 0 { + return append(lerrs, rerrs...) } // All scalars are leaf fields. diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/typed.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/typed.go index d63a97fe..6411bd51 100644 --- a/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/typed.go +++ b/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/typed.go @@ -45,6 +45,10 @@ func AsTyped(v value.Value, s *schema.Schema, typeRef schema.TypeRef) (*TypedVal // conforms to the schema, for cases where that has already been checked or // where you're going to call a method that validates as a side-effect (like // ToFieldSet). +// +// Deprecated: This function was initially created because validation +// was expensive. Now that this has been solved, objects should always +// be created as validated, using `AsTyped`. func AsTypedUnvalidated(v value.Value, s *schema.Schema, typeRef schema.TypeRef) *TypedValue { tv := &TypedValue{ value: v, @@ -125,12 +129,13 @@ func (tv TypedValue) Compare(rhs *TypedValue) (c *Comparison, err error) { Modified: fieldpath.NewSet(), Added: fieldpath.NewSet(), } + a := value.NewFreelistAllocator() _, err = merge(&tv, rhs, func(w *mergingWalker) { if w.lhs == nil { c.Added.Insert(w.path) } else if w.rhs == nil { c.Removed.Insert(w.path) - } else if !value.Equals(w.rhs, w.lhs) { + } else if !value.EqualsUsing(a, w.rhs, w.lhs) { // TODO: Equality is not sufficient for this. // Need to implement equality check on the value type. c.Modified.Insert(w.path) diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/validate.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/validate.go index 378d3021..edddbafa 100644 --- a/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/validate.go +++ b/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/validate.go @@ -102,6 +102,12 @@ func validateScalar(t *schema.Scalar, v value.Value, prefix string) (errs Valida if !v.IsBool() { return errorf("%vexpected boolean, got %v", prefix, v) } + case schema.Untyped: + if !v.IsFloat() && !v.IsInt() && !v.IsString() && !v.IsBool() { + return errorf("%vexpected any scalar, got %v", prefix, v) + } + default: + return errorf("%vunexpected scalar type in schema: %v", prefix, *t) } return nil } diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/mapreflect.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/mapreflect.go index dc8b8c72..c38402b9 100644 --- a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/mapreflect.go +++ b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/mapreflect.go @@ -136,7 +136,7 @@ func (r mapReflect) EqualsUsing(a Allocator, m Map) bool { if !ok { return false } - return Equals(vr.mustReuse(lhsVal, entry, nil, nil), value) + return EqualsUsing(a, vr.mustReuse(lhsVal, entry, nil, nil), value) }) } diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/mapunstructured.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/mapunstructured.go index d8e20862..c3ae00b1 100644 --- a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/mapunstructured.go +++ b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/mapunstructured.go @@ -88,12 +88,12 @@ func (m mapUnstructuredInterface) EqualsUsing(a Allocator, other Map) bool { } vv := a.allocValueUnstructured() defer a.Free(vv) - return other.Iterate(func(key string, value Value) bool { + return other.IterateUsing(a, func(key string, value Value) bool { lhsVal, ok := m[key] if !ok { return false } - return Equals(vv.reuse(lhsVal), value) + return EqualsUsing(a, vv.reuse(lhsVal), value) }) } @@ -168,12 +168,12 @@ func (m mapUnstructuredString) EqualsUsing(a Allocator, other Map) bool { } vv := a.allocValueUnstructured() defer a.Free(vv) - return other.Iterate(func(key string, value Value) bool { + return other.IterateUsing(a, func(key string, value Value) bool { lhsVal, ok := m[key] if !ok { return false } - return Equals(vv.reuse(lhsVal), value) + return EqualsUsing(a, vv.reuse(lhsVal), value) }) } diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/reflectcache.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/reflectcache.go index a5a467c0..f0d58d42 100644 --- a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/reflectcache.go +++ b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/reflectcache.go @@ -154,7 +154,9 @@ func buildStructCacheEntry(t reflect.Type, infos map[string]*FieldCacheEntry, fi if field.Type.Kind() == reflect.Ptr { e = field.Type.Elem() } - buildStructCacheEntry(e, infos, append(fieldPath, field.Index)) + if e.Kind() == reflect.Struct { + buildStructCacheEntry(e, infos, append(fieldPath, field.Index)) + } continue } info := &FieldCacheEntry{JsonName: jsonName, isOmitEmpty: isOmitempty, fieldPath: append(fieldPath, field.Index), fieldType: field.Type}