From ad98f668db15b50f5a7e2d69533291b59c50674e Mon Sep 17 00:00:00 2001 From: Johannes Scheerer Date: Fri, 3 Mar 2023 13:14:39 +0100 Subject: [PATCH 01/12] Revendor gardener/gardener@1.66 --- go.mod | 12 +- go.sum | 23 +- .../controlplane/genericactuator/actuator.go | 5 +- .../pkg/webhook/certificates/reconciler.go | 2 +- .../extensions/pkg/webhook/cmd/options.go | 2 +- .../pkg/webhook/handler_shootclient.go | 2 +- .../pkg/webhook/shoot/networkpolicy.go | 69 +- .../extensions/pkg/webhook/shoot/webhook.go | 20 +- .../gardener/gardener/hack/tools.mk | 3 +- .../gardener/pkg/apis/core/types_seed.go | 15 +- .../gardener/pkg/apis/core/types_shoot.go | 19 +- .../pkg/apis/core/v1alpha1/defaults.go | 14 +- .../pkg/apis/core/v1alpha1/generated.pb.go | 3432 ++++++++-------- .../pkg/apis/core/v1alpha1/generated.proto | 125 +- .../pkg/apis/core/v1alpha1/types_seed.go | 16 +- .../pkg/apis/core/v1alpha1/types_shoot.go | 19 +- .../core/v1alpha1/zz_generated.conversion.go | 192 +- .../core/v1alpha1/zz_generated.deepcopy.go | 153 +- .../core/v1beta1/constants/types_constants.go | 9 +- .../pkg/apis/core/v1beta1/defaults.go | 14 +- .../pkg/apis/core/v1beta1/generated.pb.go | 3448 +++++++++-------- .../pkg/apis/core/v1beta1/generated.proto | 125 +- .../pkg/apis/core/v1beta1/helper/helper.go | 32 +- .../pkg/apis/core/v1beta1/types_seed.go | 16 +- .../pkg/apis/core/v1beta1/types_shoot.go | 19 +- .../core/v1beta1/zz_generated.conversion.go | 192 +- .../core/v1beta1/zz_generated.deepcopy.go | 153 +- .../pkg/apis/core/zz_generated.deepcopy.go | 153 +- .../pkg/apis/operator/v1alpha1/types.go | 6 + .../v1alpha1/zz_generated.deepcopy.go | 10 + .../pkg/apis/resources/v1alpha1/types.go | 6 + .../gardener/gardener/pkg/extensions/id.go | 24 - .../pkg/gardenlet/apis/config/types.go | 34 - .../apis/config/v1alpha1/defaults.go | 52 - .../gardenlet/apis/config/v1alpha1/types.go | 44 - .../v1alpha1/zz_generated.conversion.go | 76 - .../config/v1alpha1/zz_generated.deepcopy.go | 82 - .../config/v1alpha1/zz_generated.defaults.go | 6 - .../apis/config/zz_generated.deepcopy.go | 82 - .../gardener/pkg/utils/gardener/garden.go | 234 ++ .../gardener/pkg/utils/gardener/shoot.go | 172 + .../pkg/utils/gardener/shoot_status.go | 120 + .../utils/gardener/topology_aware_routing.go | 33 + vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md | 109 +- vendor/github.com/onsi/ginkgo/v2/core_dsl.go | 29 +- .../onsi/ginkgo/v2/decorator_dsl.go | 14 +- .../onsi/ginkgo/v2/formatter/formatter.go | 34 +- .../v2/ginkgo/generators/bootstrap_command.go | 24 +- .../v2/ginkgo/generators/generate_command.go | 24 +- .../v2/ginkgo/generators/generators_common.go | 1 + .../onsi/ginkgo/v2/ginkgo/internal/run.go | 7 + .../onsi/ginkgo/v2/ginkgo/outline/ginkgo.go | 90 +- .../onsi/ginkgo/v2/ginkgo/outline/outline.go | 11 +- .../github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go | 2 +- .../onsi/ginkgo/v2/internal/group.go | 41 +- .../onsi/ginkgo/v2/internal/node.go | 44 +- .../onsi/ginkgo/v2/internal/ordering.go | 77 +- .../onsi/ginkgo/v2/internal/suite.go | 7 + .../internal/testingtproxy/testing_t_proxy.go | 2 +- .../ginkgo/v2/reporters/default_reporter.go | 49 +- vendor/github.com/onsi/ginkgo/v2/table_dsl.go | 33 +- vendor/github.com/onsi/ginkgo/v2/tools.go | 8 + .../onsi/ginkgo/v2/types/code_location.go | 77 +- .../github.com/onsi/ginkgo/v2/types/config.go | 1 + .../github.com/onsi/ginkgo/v2/types/errors.go | 9 + .../onsi/ginkgo/v2/types/label_filter.go | 11 + .../github.com/onsi/ginkgo/v2/types/types.go | 3 + .../onsi/ginkgo/v2/types/version.go | 2 +- vendor/github.com/onsi/gomega/.gitignore | 3 +- vendor/github.com/onsi/gomega/CHANGELOG.md | 44 + vendor/github.com/onsi/gomega/gomega_dsl.go | 12 +- .../onsi/gomega/internal/async_assertion.go | 198 +- .../github.com/onsi/gomega/internal/gomega.go | 2 +- vendor/github.com/onsi/gomega/matchers.go | 14 + .../gomega/matchers/have_exact_elements.go | 75 + .../gomega/matchers/match_error_matcher.go | 12 +- .../onsi/gomega/matchers/succeed_matcher.go | 9 + vendor/github.com/onsi/gomega/types/types.go | 1 + vendor/golang.org/x/crypto/cast5/cast5.go | 11 +- .../curve25519/internal/field/fe_generic.go | 2 +- .../x/crypto/openpgp/armor/armor.go | 2 +- vendor/golang.org/x/crypto/openpgp/keys.go | 4 +- vendor/golang.org/x/crypto/ssh/common.go | 15 + vendor/golang.org/x/crypto/ssh/handshake.go | 69 +- vendor/golang.org/x/crypto/ssh/messages.go | 2 +- vendor/golang.org/x/crypto/ssh/server.go | 13 +- .../x/tools/go/ast/inspector/inspector.go | 68 +- .../x/tools/go/gcexportdata/gcexportdata.go | 24 +- .../x/tools/go/packages/packages.go | 39 +- .../x/tools/internal/gcimporter/gcimporter.go | 919 +---- .../x/tools/internal/gcimporter/iexport.go | 128 +- .../x/tools/internal/gcimporter/iimport.go | 82 +- .../tools/internal/gcimporter/ureader_yes.go | 39 +- .../x/tools/internal/gocommand/version.go | 16 +- .../x/tools/internal/imports/fix.go | 6 +- .../x/tools/internal/imports/sortimports.go | 1 + .../x/tools/internal/imports/zstdlib.go | 188 +- .../x/tools/internal/pkgbits/decoder.go | 2 +- .../x/tools/internal/pkgbits/encoder.go | 2 +- .../internal/tokeninternal/tokeninternal.go | 59 + vendor/modules.txt | 15 +- 101 files changed, 6636 insertions(+), 5414 deletions(-) delete mode 100644 vendor/github.com/gardener/gardener/pkg/extensions/id.go create mode 100644 vendor/github.com/gardener/gardener/pkg/utils/gardener/garden.go create mode 100644 vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot_status.go create mode 100644 vendor/github.com/gardener/gardener/pkg/utils/gardener/topology_aware_routing.go create mode 100644 vendor/github.com/onsi/ginkgo/v2/tools.go create mode 100644 vendor/github.com/onsi/gomega/matchers/have_exact_elements.go create mode 100644 vendor/golang.org/x/tools/internal/tokeninternal/tokeninternal.go diff --git a/go.mod b/go.mod index 2db97707f..162f96dc9 100644 --- a/go.mod +++ b/go.mod @@ -9,18 +9,18 @@ require ( github.com/aliyun/aliyun-oss-go-sdk v2.1.8+incompatible github.com/coreos/go-systemd/v22 v22.3.2 github.com/gardener/etcd-druid v0.15.3 - github.com/gardener/gardener v1.65.0 + github.com/gardener/gardener v1.66.0 github.com/gardener/gardener-extension-networking-calico v1.27.1 github.com/gardener/gardener-extension-networking-cilium v1.18.0 github.com/gardener/machine-controller-manager v0.46.0 github.com/go-logr/logr v1.2.3 github.com/golang/mock v1.6.0 - github.com/onsi/ginkgo/v2 v2.6.1 - github.com/onsi/gomega v1.24.2 + github.com/onsi/ginkgo/v2 v2.8.3 + github.com/onsi/gomega v1.27.1 github.com/spf13/cobra v1.6.1 github.com/spf13/pflag v1.0.5 golang.org/x/time v0.3.0 - golang.org/x/tools v0.4.0 + golang.org/x/tools v0.6.0 k8s.io/api v0.26.1 k8s.io/apiextensions-apiserver v0.26.1 k8s.io/apimachinery v0.26.1 @@ -114,8 +114,8 @@ require ( go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.7.0 // indirect go.uber.org/zap v1.24.0 // indirect - golang.org/x/crypto v0.1.0 // indirect - golang.org/x/mod v0.7.0 // indirect + golang.org/x/crypto v0.6.0 // indirect + golang.org/x/mod v0.8.0 // indirect golang.org/x/net v0.7.0 // indirect golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 // indirect golang.org/x/sys v0.5.0 // indirect diff --git a/go.sum b/go.sum index a48746324..8c1f2a10b 100644 --- a/go.sum +++ b/go.sum @@ -143,8 +143,8 @@ github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4 github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/gardener/etcd-druid v0.15.3 h1:IMsJTaUaSOXusfgOOF5GX5eJ0o1CI/9XtKzgxwWJ0Eo= github.com/gardener/etcd-druid v0.15.3/go.mod h1:VTxoQXmaE2RSP+LQS5qWUDoXzmdK6xlKLUdFhaGu6KM= -github.com/gardener/gardener v1.65.0 h1:YwSW++VUdkQ80lOP/9xZLlrNFn2jrdxOAv/gLQtmUsg= -github.com/gardener/gardener v1.65.0/go.mod h1:gYzfsgsvmnev6LYAYCLw3QKsvxELVXSXz55Ws1HrOq4= +github.com/gardener/gardener v1.66.0 h1:krDrGx6asbjLBJGI7MtAHTV5NtRk9K3LJy1/4zQS0uU= +github.com/gardener/gardener v1.66.0/go.mod h1:nS3b9qWHphOkzK3aZZYHSlwKz2qTxcKSQ35iHnk80UY= github.com/gardener/gardener-extension-networking-calico v1.27.1 h1:q/lsdqbwV+qlwNPxlqFxGeqKMDwPk+dPhUGXjxObzGE= github.com/gardener/gardener-extension-networking-calico v1.27.1/go.mod h1:MURFRmYPHiXSfmJ82S3nXH3qGcszeYQwhMVKn/J5XoU= github.com/gardener/gardener-extension-networking-cilium v1.18.0 h1:LNBMqVAkltHBDkP+C5Vq/dFgve/YOG8MIvTJJuWWCtU= @@ -419,8 +419,8 @@ github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47 github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk= github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0= github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo= -github.com/onsi/ginkgo/v2 v2.6.1 h1:1xQPCjcqYw/J5LchOcp4/2q/jzJFjiAOc25chhnDw+Q= -github.com/onsi/ginkgo/v2 v2.6.1/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo= +github.com/onsi/ginkgo/v2 v2.8.3 h1:RpbK1G8nWPNaCVFBWsOGnEQQGgASi6b8fxcWBvDYjxQ= +github.com/onsi/ginkgo/v2 v2.8.3/go.mod h1:6OaUA8BCi0aZfmzYT/q9AacwTzDpNbxILUT+TlBq6MY= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= @@ -431,8 +431,8 @@ github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeR github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc= github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM= github.com/onsi/gomega v1.23.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= -github.com/onsi/gomega v1.24.2 h1:J/tulyYK6JwBldPViHJReihxxZ+22FHs0piGjQAvoUE= -github.com/onsi/gomega v1.24.2/go.mod h1:gs3J10IS7Z7r7eXRoNJIrNqU4ToQukCJhFtKrWgHWnk= +github.com/onsi/gomega v1.27.1 h1:rfztXRbg6nv/5f+Raen9RcGoSecHIFgBBLQK3Wdj754= +github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw= github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.0.0-beta.8 h1:dy81yyLYJDwMTifq24Oi/IslOslRrDSb3jwDggjz3Z0= @@ -561,8 +561,9 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -602,8 +603,8 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= -golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= -golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -837,8 +838,8 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= -golang.org/x/tools v0.4.0 h1:7mTAgkunk3fr4GAloyyCasadO6h9zSsQZbwvcaIciV4= -golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= +golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/controlplane/genericactuator/actuator.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/controlplane/genericactuator/actuator.go index b46f445b3..fa482ae9a 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/controlplane/genericactuator/actuator.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/controlplane/genericactuator/actuator.go @@ -75,6 +75,7 @@ func NewActuator( imageVector imagevector.ImageVector, configName string, atomicShootWebhookConfig *atomic.Value, + webhookServerNamespace string, webhookServerPort int, ) controlplane.Actuator { return &actuator{ @@ -97,6 +98,7 @@ func NewActuator( imageVector: imageVector, configName: configName, atomicShootWebhookConfig: atomicShootWebhookConfig, + webhookServerNamespace: webhookServerNamespace, webhookServerPort: webhookServerPort, newSecretsManager: extensionssecretsmanager.SecretsManagerForCluster, @@ -126,6 +128,7 @@ type actuator struct { imageVector imagevector.ImageVector configName string atomicShootWebhookConfig *atomic.Value + webhookServerNamespace string webhookServerPort int gardenerClientset kubernetesclient.Interface @@ -262,7 +265,7 @@ func (a *actuator) reconcileControlPlane( return false, fmt.Errorf("expected *admissionregistrationv1.MutatingWebhookConfiguration, got %T", value) } - if err := extensionsshootwebhook.ReconcileWebhookConfig(ctx, a.client, cp.Namespace, a.providerName, ShootWebhooksResourceName, a.webhookServerPort, webhookConfig, cluster); err != nil { + if err := extensionsshootwebhook.ReconcileWebhookConfig(ctx, a.client, cp.Namespace, a.webhookServerNamespace, a.providerName, ShootWebhooksResourceName, a.webhookServerPort, webhookConfig, cluster); err != nil { return false, fmt.Errorf("could not reconcile shoot webhooks: %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 2a1c5ed0c..325633261 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 @@ -182,7 +182,7 @@ func (r *reconciler) Reconcile(ctx context.Context, _ reconcile.Request) (reconc r.AtomicShootWebhookConfig.Store(r.ShootWebhookConfig.DeepCopy()) // reconcile all shoot webhook configs with the freshly created CA bundle - if err := extensionsshootwebhook.ReconcileWebhooksForAllNamespaces(ctx, r.client, r.ComponentName, r.ShootWebhookManagedResourceName, r.ShootNamespaceSelector, r.serverPort, r.ShootWebhookConfig); err != nil { + if err := extensionsshootwebhook.ReconcileWebhooksForAllNamespaces(ctx, r.client, r.Namespace, r.ComponentName, r.ShootWebhookManagedResourceName, r.ShootNamespaceSelector, r.serverPort, r.ShootWebhookConfig); 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) 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 81d30a03b..c15da1dde 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 @@ -351,7 +351,7 @@ func (c *AddToManagerConfig) reconcileShootWebhookConfigs(mgr manager.Manager, s if err := extensionswebhook.InjectCABundleIntoWebhookConfig(shootWebhookConfig, caBundle); err != nil { return err } - if err := extensionsshootwebhook.ReconcileWebhooksForAllNamespaces(ctx, mgr.GetClient(), c.extensionName, c.shootWebhookManagedResourceName, c.shootNamespaceSelector, mgr.GetWebhookServer().Port, shootWebhookConfig); err != nil { + if err := extensionsshootwebhook.ReconcileWebhooksForAllNamespaces(ctx, mgr.GetClient(), c.Server.Namespace, c.extensionName, c.shootWebhookManagedResourceName, c.shootNamespaceSelector, mgr.GetWebhookServer().Port, shootWebhookConfig); err != nil { return fmt.Errorf("error reconciling all shoot webhook configs: %w", 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 7a4a9821b..c92944753 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 @@ -121,7 +121,7 @@ func (h *handlerShootClient) Handle(ctx context.Context, req admission.Request) } if len(shootNamespace) == 0 { - return fmt.Errorf("could not find shoot namespace for webhook request") + return fmt.Errorf("could not find shoot namespace for webhook request from remote address %s", remoteAddr) } _, shootClient, err := util.NewClientForShoot(ctx, h.client, shootNamespace, client.Options{}, extensionsconfig.RESTOptions{}) diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/shoot/networkpolicy.go b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/shoot/networkpolicy.go index 3c0ac11d6..ba50af698 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/shoot/networkpolicy.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/shoot/networkpolicy.go @@ -20,27 +20,23 @@ import ( corev1 "k8s.io/api/core/v1" networkingv1 "k8s.io/api/networking/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/util/intstr" "sigs.k8s.io/controller-runtime/pkg/client" v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" "github.com/gardener/gardener/pkg/controllerutils" + "github.com/gardener/gardener/pkg/utils" kubernetesutils "github.com/gardener/gardener/pkg/utils/kubernetes" ) -// GetNetworkPolicyMeta returns the network policy object with filled meta data. -func GetNetworkPolicyMeta(namespace, extensionName string) *networkingv1.NetworkPolicy { - return &networkingv1.NetworkPolicy{ObjectMeta: kubernetesutils.ObjectMeta(namespace, "gardener-extension-"+extensionName)} +// GetNetworkPolicyMeta returns the network policy object with filled metadata. +func GetNetworkPolicyMeta(shootNamespace, extensionName string) *networkingv1.NetworkPolicy { + return &networkingv1.NetworkPolicy{ObjectMeta: kubernetesutils.ObjectMeta(shootNamespace, "gardener-extension-"+extensionName)} } -// EnsureNetworkPolicy ensures that the required network policy that allows the kube-apiserver running in the given -// namespace to talk to the extension webhook is installed. -func EnsureNetworkPolicy(ctx context.Context, c client.Client, namespace, extensionName string, port int) error { - networkPolicy := GetNetworkPolicyMeta(namespace, extensionName) - - policyPort := intstr.FromInt(port) - policyProtocol := corev1.ProtocolTCP - +// EnsureEgressNetworkPolicy ensures that the required egress network policy is installed that allows the kube-apiserver +// running in the given shoot namespace to talk to the extension webhook . +func EnsureEgressNetworkPolicy(ctx context.Context, c client.Client, shootNamespace, extensionNamespace, extensionName string, port int) error { + networkPolicy := GetNetworkPolicyMeta(shootNamespace, extensionName) _, err := controllerutils.GetAndCreateOrMergePatch(ctx, c, networkPolicy, func() error { networkPolicy.Spec = networkingv1.NetworkPolicySpec{ PolicyTypes: []networkingv1.PolicyType{networkingv1.PolicyTypeEgress}, @@ -48,15 +44,15 @@ func EnsureNetworkPolicy(ctx context.Context, c client.Client, namespace, extens { Ports: []networkingv1.NetworkPolicyPort{ { - Port: &policyPort, - Protocol: &policyProtocol, + Port: utils.IntStrPtrFromInt(port), + Protocol: utils.ProtocolPtr(corev1.ProtocolTCP), }, }, To: []networkingv1.NetworkPolicyPeer{ { NamespaceSelector: &metav1.LabelSelector{ MatchLabels: map[string]string{ - v1beta1constants.GardenRole: v1beta1constants.GardenRoleExtension, + corev1.LabelMetadataName: extensionNamespace, }, }, PodSelector: &metav1.LabelSelector{ @@ -79,3 +75,46 @@ func EnsureNetworkPolicy(ctx context.Context, c client.Client, namespace, extens }) return err } + +// EnsureIngressNetworkPolicy ensures that the required ingress network policy is installed that allows the +// kube-apiservers of shoot namespaces to talk to the extension webhook. +func EnsureIngressNetworkPolicy(ctx context.Context, c client.Client, extensionNamespace, extensionName string, port int) error { + networkPolicy := &networkingv1.NetworkPolicy{ObjectMeta: metav1.ObjectMeta{Namespace: extensionNamespace, Name: "ingress-from-all-shoots-kube-apiserver"}} + _, err := controllerutils.GetAndCreateOrMergePatch(ctx, c, networkPolicy, func() error { + networkPolicy.Spec = networkingv1.NetworkPolicySpec{ + PolicyTypes: []networkingv1.PolicyType{networkingv1.PolicyTypeIngress}, + Ingress: []networkingv1.NetworkPolicyIngressRule{ + { + Ports: []networkingv1.NetworkPolicyPort{ + { + Port: utils.IntStrPtrFromInt(port), + Protocol: utils.ProtocolPtr(corev1.ProtocolTCP), + }, + }, + From: []networkingv1.NetworkPolicyPeer{ + { + NamespaceSelector: &metav1.LabelSelector{ + MatchLabels: map[string]string{ + v1beta1constants.GardenRole: v1beta1constants.GardenRoleShoot, + }, + }, + PodSelector: &metav1.LabelSelector{ + MatchLabels: map[string]string{ + v1beta1constants.LabelApp: v1beta1constants.LabelKubernetes, + v1beta1constants.LabelRole: v1beta1constants.LabelAPIServer, + }, + }, + }, + }, + }, + }, + PodSelector: metav1.LabelSelector{ + MatchLabels: map[string]string{ + "app.kubernetes.io/name": "gardener-extension-" + extensionName, + }, + }, + } + return nil + }) + return err +} 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 4caad0aea..7b72ef4b8 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 @@ -39,15 +39,16 @@ import ( func ReconcileWebhookConfig( ctx context.Context, c client.Client, - namespace string, + shootNamespace string, + extensionNamespace string, extensionName string, managedResourceName string, serverPort int, shootWebhookConfig *admissionregistrationv1.MutatingWebhookConfiguration, cluster *controller.Cluster, ) error { - if err := EnsureNetworkPolicy(ctx, c, namespace, extensionName, serverPort); err != nil { - return fmt.Errorf("could not create or update network policy for shoot webhooks in namespace '%s': %w", namespace, err) + if err := EnsureEgressNetworkPolicy(ctx, c, shootNamespace, extensionNamespace, extensionName, serverPort); err != nil { + return fmt.Errorf("could not create or update network policy for shoot webhooks in namespace '%s': %w", shootNamespace, err) } if cluster.Shoot == nil { @@ -61,8 +62,8 @@ func ReconcileWebhookConfig( return err } - if err := managedresources.Create(ctx, c, namespace, managedResourceName, nil, false, "", data, nil, nil, nil); err != nil { - return fmt.Errorf("could not create or update managed resource '%s/%s' containing shoot webhooks: %w", namespace, managedResourceName, err) + if err := managedresources.Create(ctx, c, shootNamespace, managedResourceName, nil, false, "", data, nil, nil, nil); err != nil { + return fmt.Errorf("could not create or update managed resource '%s/%s' containing shoot webhooks: %w", shootNamespace, managedResourceName, err) } return nil @@ -74,6 +75,7 @@ func ReconcileWebhookConfig( func ReconcileWebhooksForAllNamespaces( ctx context.Context, c client.Client, + extensionNamespace string, extensionName string, managedResourceName string, shootNamespaceSelector map[string]string, @@ -87,7 +89,11 @@ func ReconcileWebhooksForAllNamespaces( return err } - fns := make([]flow.TaskFn, 0, len(namespaceList.Items)) + fns := make([]flow.TaskFn, 0, len(namespaceList.Items)+1) + + fns = append(fns, func(ctx context.Context) error { + return EnsureIngressNetworkPolicy(ctx, c, extensionNamespace, extensionName, port) + }) for _, namespace := range namespaceList.Items { var ( @@ -109,7 +115,7 @@ func ReconcileWebhooksForAllNamespaces( return err } - return ReconcileWebhookConfig(ctx, c, namespaceName, extensionName, managedResourceName, port, shootWebhookConfig.DeepCopy(), cluster) + return ReconcileWebhookConfig(ctx, c, namespaceName, extensionNamespace, extensionName, managedResourceName, port, shootWebhookConfig.DeepCopy(), cluster) }) } diff --git a/vendor/github.com/gardener/gardener/hack/tools.mk b/vendor/github.com/gardener/gardener/hack/tools.mk index 43f40a435..a5d4fee55 100755 --- a/vendor/github.com/gardener/gardener/hack/tools.mk +++ b/vendor/github.com/gardener/gardener/hack/tools.mk @@ -59,8 +59,7 @@ YQ := $(TOOLS_BIN_DIR)/yq DOCFORGE_VERSION ?= v0.33.0 GOLANGCI_LINT_VERSION ?= v1.51.2 GO_APIDIFF_VERSION ?= v0.5.0 -# TODO(vpnachev): Update goimports-reviser to v3.4.0 when there is a release including https://github.com/incu6us/goimports-reviser/pull/95. -GOIMPORTSREVISER_VERSION ?= 32c80678d5d73a50b6966f06b346de58b1d018f1 +GOIMPORTSREVISER_VERSION ?= v3.3.1 GO_VULN_CHECK_VERSION ?= latest HELM_VERSION ?= v3.6.3 KIND_VERSION ?= v0.14.0 diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types_seed.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_seed.go index 8b28db65c..d27a1c974 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_seed.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_seed.go @@ -126,7 +126,7 @@ type SeedBackup struct { type SeedDNS struct { // IngressDomain is the domain of the Seed cluster pointing to the ingress controller endpoint. It will be used // to construct ingress URLs for system applications running in Shoot clusters. This field is immutable. - // This will be removed in the next API version and replaced by spec.ingress.domain. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use spec.ingress.domain instead. IngressDomain *string // Provider configures a DNSProvider Provider *SeedDNSProvider @@ -139,8 +139,10 @@ type SeedDNSProvider struct { // SecretRef is a reference to a Secret object containing cloud provider credentials used for registering external domains. SecretRef corev1.SecretReference // Domains contains information about which domains shall be included/excluded for this provider. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Domains *DNSIncludeExclude // Zones contains information about which hosted zones shall be included/excluded for this provider. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Zones *DNSIncludeExclude } @@ -214,6 +216,9 @@ type SeedSettings struct { OwnerChecks *SeedSettingOwnerChecks // DependencyWatchdog controls certain settings for the dependency-watchdog components deployed in the seed. DependencyWatchdog *SeedSettingDependencyWatchdog + // TopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. + // See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. + TopologyAwareRouting *SeedSettingTopologyAwareRouting } // SeedSettingExcessCapacityReservation controls the excess capacity reservation for shoot control planes in the @@ -297,6 +302,14 @@ type SeedSettingDependencyWatchdogProbe struct { Enabled bool } +// SeedSettingTopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. +// See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. +type SeedSettingTopologyAwareRouting struct { + // Enabled controls whether certain Services deployed in the seed cluster should be topology-aware. + // These Services are etcd-main-client, etcd-events-client, kube-apiserver, gardener-resource-manager and vpa-webhook. + Enabled bool +} + // SeedTaint describes a taint on a seed. type SeedTaint struct { // Key is the taint key to be applied to a seed. 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 24baa88e8..9bf0ed81c 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 @@ -187,9 +187,9 @@ type ShootCredentialsRotation struct { // Observability contains information about the observability credential rotation. Observability *ShootObservabilityRotation // ServiceAccountKey contains information about the service account key credential rotation. - ServiceAccountKey *ShootServiceAccountKeyRotation + ServiceAccountKey *ServiceAccountKeyRotation // ETCDEncryptionKey contains information about the ETCD encryption key credential rotation. - ETCDEncryptionKey *ShootETCDEncryptionKeyRotation + ETCDEncryptionKey *ETCDEncryptionKeyRotation } // CARotation contains information about the certificate authority credential rotation. @@ -233,8 +233,8 @@ type ShootObservabilityRotation struct { LastCompletionTime *metav1.Time } -// ShootServiceAccountKeyRotation contains information about the service account key credential rotation. -type ShootServiceAccountKeyRotation struct { +// ServiceAccountKeyRotation contains information about the service account key credential rotation. +type ServiceAccountKeyRotation struct { // Phase describes the phase of the service account key credential rotation. Phase CredentialsRotationPhase // LastInitiationTime is the most recent time when the service account key credential rotation was initiated. @@ -250,8 +250,8 @@ type ShootServiceAccountKeyRotation struct { LastCompletionTriggeredTime *metav1.Time } -// ShootETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. -type ShootETCDEncryptionKeyRotation struct { +// ETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. +type ETCDEncryptionKeyRotation struct { // Phase describes the phase of the ETCD encryption key credential rotation. Phase CredentialsRotationPhase // LastInitiationTime is the most recent time when the ETCD encryption key credential rotation was initiated. @@ -312,9 +312,6 @@ type KubernetesDashboard struct { } const ( - // KubernetesDashboardAuthModeBasic uses basic authentication mode for auth. - // Deprecated: basic authentication has been removed in Kubernetes v1.19+. - KubernetesDashboardAuthModeBasic = "basic" // KubernetesDashboardAuthModeToken uses token-based mode for auth. KubernetesDashboardAuthModeToken = "token" ) @@ -533,8 +530,8 @@ type KubeAPIServerConfig struct { // AuditConfig contains configuration settings for the audit of the kube-apiserver. AuditConfig *AuditConfig // EnableBasicAuthentication defines whether basic authentication should be enabled for this cluster or not. - // Defaults to false. - // Deprecated: basic authentication has been removed in Kubernetes v1.19+. This field will be removed in a future version. + // + // Deprecated: basic authentication has been removed in Kubernetes v1.19+. The field is no-op and will be removed in a future version. EnableBasicAuthentication *bool // OIDCConfig contains configuration settings for the OIDC provider. OIDCConfig *OIDCConfig diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults.go index c8ab94303..40aeee858 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults.go @@ -71,6 +71,10 @@ func SetDefaults_Seed(obj *Seed) { 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. @@ -100,9 +104,6 @@ func SetDefaults_Shoot(obj *Shoot) { if obj.Spec.Kubernetes.KubeAPIServer == nil { obj.Spec.Kubernetes.KubeAPIServer = &KubeAPIServerConfig{} } - if obj.Spec.Kubernetes.KubeAPIServer.EnableBasicAuthentication == nil { - obj.Spec.Kubernetes.KubeAPIServer.EnableBasicAuthentication = pointer.Bool(false) - } if obj.Spec.Kubernetes.KubeAPIServer.Requests == nil { obj.Spec.Kubernetes.KubeAPIServer.Requests = &KubeAPIServerRequests{} } @@ -176,12 +177,7 @@ func SetDefaults_Shoot(obj *Shoot) { obj.Spec.Addons.KubernetesDashboard = &KubernetesDashboard{} } if obj.Spec.Addons.KubernetesDashboard.AuthenticationMode == nil { - var defaultAuthMode string - if *obj.Spec.Kubernetes.KubeAPIServer.EnableBasicAuthentication { - defaultAuthMode = KubernetesDashboardAuthModeBasic - } else { - defaultAuthMode = KubernetesDashboardAuthModeToken - } + defaultAuthMode := KubernetesDashboardAuthModeToken obj.Spec.Addons.KubernetesDashboard.AuthenticationMode = &defaultAuthMode } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.pb.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.pb.go index 712286f46..9093e9ea5 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.pb.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.pb.go @@ -1315,10 +1315,38 @@ func (m *DeploymentRef) XXX_DiscardUnknown() { var xxx_messageInfo_DeploymentRef proto.InternalMessageInfo +func (m *ETCDEncryptionKeyRotation) Reset() { *m = ETCDEncryptionKeyRotation{} } +func (*ETCDEncryptionKeyRotation) ProtoMessage() {} +func (*ETCDEncryptionKeyRotation) Descriptor() ([]byte, []int) { + return fileDescriptor_f1caaec5647a9dbf, []int{45} +} +func (m *ETCDEncryptionKeyRotation) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ETCDEncryptionKeyRotation) 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 *ETCDEncryptionKeyRotation) XXX_Merge(src proto.Message) { + xxx_messageInfo_ETCDEncryptionKeyRotation.Merge(m, src) +} +func (m *ETCDEncryptionKeyRotation) XXX_Size() int { + return m.Size() +} +func (m *ETCDEncryptionKeyRotation) XXX_DiscardUnknown() { + xxx_messageInfo_ETCDEncryptionKeyRotation.DiscardUnknown(m) +} + +var xxx_messageInfo_ETCDEncryptionKeyRotation proto.InternalMessageInfo + func (m *ExpirableVersion) Reset() { *m = ExpirableVersion{} } func (*ExpirableVersion) ProtoMessage() {} func (*ExpirableVersion) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{45} + return fileDescriptor_f1caaec5647a9dbf, []int{46} } func (m *ExpirableVersion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1346,7 +1374,7 @@ var xxx_messageInfo_ExpirableVersion proto.InternalMessageInfo func (m *ExposureClass) Reset() { *m = ExposureClass{} } func (*ExposureClass) ProtoMessage() {} func (*ExposureClass) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{46} + return fileDescriptor_f1caaec5647a9dbf, []int{47} } func (m *ExposureClass) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1374,7 +1402,7 @@ var xxx_messageInfo_ExposureClass proto.InternalMessageInfo func (m *ExposureClassList) Reset() { *m = ExposureClassList{} } func (*ExposureClassList) ProtoMessage() {} func (*ExposureClassList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{47} + return fileDescriptor_f1caaec5647a9dbf, []int{48} } func (m *ExposureClassList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1402,7 +1430,7 @@ var xxx_messageInfo_ExposureClassList proto.InternalMessageInfo func (m *ExposureClassScheduling) Reset() { *m = ExposureClassScheduling{} } func (*ExposureClassScheduling) ProtoMessage() {} func (*ExposureClassScheduling) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{48} + return fileDescriptor_f1caaec5647a9dbf, []int{49} } func (m *ExposureClassScheduling) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1430,7 +1458,7 @@ var xxx_messageInfo_ExposureClassScheduling proto.InternalMessageInfo func (m *Extension) Reset() { *m = Extension{} } func (*Extension) ProtoMessage() {} func (*Extension) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{49} + return fileDescriptor_f1caaec5647a9dbf, []int{50} } func (m *Extension) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1458,7 +1486,7 @@ var xxx_messageInfo_Extension proto.InternalMessageInfo func (m *ExtensionResourceState) Reset() { *m = ExtensionResourceState{} } func (*ExtensionResourceState) ProtoMessage() {} func (*ExtensionResourceState) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{50} + return fileDescriptor_f1caaec5647a9dbf, []int{51} } func (m *ExtensionResourceState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1486,7 +1514,7 @@ var xxx_messageInfo_ExtensionResourceState proto.InternalMessageInfo func (m *FailureTolerance) Reset() { *m = FailureTolerance{} } func (*FailureTolerance) ProtoMessage() {} func (*FailureTolerance) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{51} + return fileDescriptor_f1caaec5647a9dbf, []int{52} } func (m *FailureTolerance) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1514,7 +1542,7 @@ var xxx_messageInfo_FailureTolerance proto.InternalMessageInfo func (m *Gardener) Reset() { *m = Gardener{} } func (*Gardener) ProtoMessage() {} func (*Gardener) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{52} + return fileDescriptor_f1caaec5647a9dbf, []int{53} } func (m *Gardener) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1542,7 +1570,7 @@ var xxx_messageInfo_Gardener proto.InternalMessageInfo func (m *GardenerResourceData) Reset() { *m = GardenerResourceData{} } func (*GardenerResourceData) ProtoMessage() {} func (*GardenerResourceData) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{53} + return fileDescriptor_f1caaec5647a9dbf, []int{54} } func (m *GardenerResourceData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1570,7 +1598,7 @@ var xxx_messageInfo_GardenerResourceData proto.InternalMessageInfo func (m *Hibernation) Reset() { *m = Hibernation{} } func (*Hibernation) ProtoMessage() {} func (*Hibernation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{54} + return fileDescriptor_f1caaec5647a9dbf, []int{55} } func (m *Hibernation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1598,7 +1626,7 @@ var xxx_messageInfo_Hibernation proto.InternalMessageInfo func (m *HibernationSchedule) Reset() { *m = HibernationSchedule{} } func (*HibernationSchedule) ProtoMessage() {} func (*HibernationSchedule) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{55} + return fileDescriptor_f1caaec5647a9dbf, []int{56} } func (m *HibernationSchedule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1626,7 +1654,7 @@ var xxx_messageInfo_HibernationSchedule proto.InternalMessageInfo func (m *HighAvailability) Reset() { *m = HighAvailability{} } func (*HighAvailability) ProtoMessage() {} func (*HighAvailability) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{56} + return fileDescriptor_f1caaec5647a9dbf, []int{57} } func (m *HighAvailability) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1654,7 +1682,7 @@ var xxx_messageInfo_HighAvailability proto.InternalMessageInfo func (m *HorizontalPodAutoscalerConfig) Reset() { *m = HorizontalPodAutoscalerConfig{} } func (*HorizontalPodAutoscalerConfig) ProtoMessage() {} func (*HorizontalPodAutoscalerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{57} + return fileDescriptor_f1caaec5647a9dbf, []int{58} } func (m *HorizontalPodAutoscalerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1682,7 +1710,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerConfig proto.InternalMessageInfo func (m *Ingress) Reset() { *m = Ingress{} } func (*Ingress) ProtoMessage() {} func (*Ingress) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{58} + return fileDescriptor_f1caaec5647a9dbf, []int{59} } func (m *Ingress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1710,7 +1738,7 @@ var xxx_messageInfo_Ingress proto.InternalMessageInfo func (m *IngressController) Reset() { *m = IngressController{} } func (*IngressController) ProtoMessage() {} func (*IngressController) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{59} + return fileDescriptor_f1caaec5647a9dbf, []int{60} } func (m *IngressController) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1738,7 +1766,7 @@ var xxx_messageInfo_IngressController proto.InternalMessageInfo func (m *KubeAPIServerConfig) Reset() { *m = KubeAPIServerConfig{} } func (*KubeAPIServerConfig) ProtoMessage() {} func (*KubeAPIServerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{60} + return fileDescriptor_f1caaec5647a9dbf, []int{61} } func (m *KubeAPIServerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1766,7 +1794,7 @@ var xxx_messageInfo_KubeAPIServerConfig proto.InternalMessageInfo func (m *KubeAPIServerLogging) Reset() { *m = KubeAPIServerLogging{} } func (*KubeAPIServerLogging) ProtoMessage() {} func (*KubeAPIServerLogging) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{61} + return fileDescriptor_f1caaec5647a9dbf, []int{62} } func (m *KubeAPIServerLogging) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1794,7 +1822,7 @@ var xxx_messageInfo_KubeAPIServerLogging proto.InternalMessageInfo func (m *KubeAPIServerRequests) Reset() { *m = KubeAPIServerRequests{} } func (*KubeAPIServerRequests) ProtoMessage() {} func (*KubeAPIServerRequests) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{62} + return fileDescriptor_f1caaec5647a9dbf, []int{63} } func (m *KubeAPIServerRequests) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1822,7 +1850,7 @@ var xxx_messageInfo_KubeAPIServerRequests proto.InternalMessageInfo func (m *KubeControllerManagerConfig) Reset() { *m = KubeControllerManagerConfig{} } func (*KubeControllerManagerConfig) ProtoMessage() {} func (*KubeControllerManagerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{63} + return fileDescriptor_f1caaec5647a9dbf, []int{64} } func (m *KubeControllerManagerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1850,7 +1878,7 @@ var xxx_messageInfo_KubeControllerManagerConfig proto.InternalMessageInfo func (m *KubeProxyConfig) Reset() { *m = KubeProxyConfig{} } func (*KubeProxyConfig) ProtoMessage() {} func (*KubeProxyConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{64} + return fileDescriptor_f1caaec5647a9dbf, []int{65} } func (m *KubeProxyConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1878,7 +1906,7 @@ var xxx_messageInfo_KubeProxyConfig proto.InternalMessageInfo func (m *KubeSchedulerConfig) Reset() { *m = KubeSchedulerConfig{} } func (*KubeSchedulerConfig) ProtoMessage() {} func (*KubeSchedulerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{65} + return fileDescriptor_f1caaec5647a9dbf, []int{66} } func (m *KubeSchedulerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1906,7 +1934,7 @@ var xxx_messageInfo_KubeSchedulerConfig proto.InternalMessageInfo func (m *KubeletConfig) Reset() { *m = KubeletConfig{} } func (*KubeletConfig) ProtoMessage() {} func (*KubeletConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{66} + return fileDescriptor_f1caaec5647a9dbf, []int{67} } func (m *KubeletConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1934,7 +1962,7 @@ var xxx_messageInfo_KubeletConfig proto.InternalMessageInfo func (m *KubeletConfigEviction) Reset() { *m = KubeletConfigEviction{} } func (*KubeletConfigEviction) ProtoMessage() {} func (*KubeletConfigEviction) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{67} + return fileDescriptor_f1caaec5647a9dbf, []int{68} } func (m *KubeletConfigEviction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1962,7 +1990,7 @@ var xxx_messageInfo_KubeletConfigEviction proto.InternalMessageInfo func (m *KubeletConfigEvictionMinimumReclaim) Reset() { *m = KubeletConfigEvictionMinimumReclaim{} } func (*KubeletConfigEvictionMinimumReclaim) ProtoMessage() {} func (*KubeletConfigEvictionMinimumReclaim) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{68} + return fileDescriptor_f1caaec5647a9dbf, []int{69} } func (m *KubeletConfigEvictionMinimumReclaim) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1990,7 +2018,7 @@ var xxx_messageInfo_KubeletConfigEvictionMinimumReclaim proto.InternalMessageInf func (m *KubeletConfigEvictionSoftGracePeriod) Reset() { *m = KubeletConfigEvictionSoftGracePeriod{} } func (*KubeletConfigEvictionSoftGracePeriod) ProtoMessage() {} func (*KubeletConfigEvictionSoftGracePeriod) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{69} + return fileDescriptor_f1caaec5647a9dbf, []int{70} } func (m *KubeletConfigEvictionSoftGracePeriod) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2018,7 +2046,7 @@ var xxx_messageInfo_KubeletConfigEvictionSoftGracePeriod proto.InternalMessageIn func (m *KubeletConfigReserved) Reset() { *m = KubeletConfigReserved{} } func (*KubeletConfigReserved) ProtoMessage() {} func (*KubeletConfigReserved) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{70} + return fileDescriptor_f1caaec5647a9dbf, []int{71} } func (m *KubeletConfigReserved) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2046,7 +2074,7 @@ var xxx_messageInfo_KubeletConfigReserved proto.InternalMessageInfo func (m *Kubernetes) Reset() { *m = Kubernetes{} } func (*Kubernetes) ProtoMessage() {} func (*Kubernetes) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{71} + return fileDescriptor_f1caaec5647a9dbf, []int{72} } func (m *Kubernetes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2074,7 +2102,7 @@ var xxx_messageInfo_Kubernetes proto.InternalMessageInfo func (m *KubernetesConfig) Reset() { *m = KubernetesConfig{} } func (*KubernetesConfig) ProtoMessage() {} func (*KubernetesConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{72} + return fileDescriptor_f1caaec5647a9dbf, []int{73} } func (m *KubernetesConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2102,7 +2130,7 @@ var xxx_messageInfo_KubernetesConfig proto.InternalMessageInfo func (m *KubernetesDashboard) Reset() { *m = KubernetesDashboard{} } func (*KubernetesDashboard) ProtoMessage() {} func (*KubernetesDashboard) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{73} + return fileDescriptor_f1caaec5647a9dbf, []int{74} } func (m *KubernetesDashboard) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2130,7 +2158,7 @@ var xxx_messageInfo_KubernetesDashboard proto.InternalMessageInfo func (m *KubernetesSettings) Reset() { *m = KubernetesSettings{} } func (*KubernetesSettings) ProtoMessage() {} func (*KubernetesSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{74} + return fileDescriptor_f1caaec5647a9dbf, []int{75} } func (m *KubernetesSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2158,7 +2186,7 @@ var xxx_messageInfo_KubernetesSettings proto.InternalMessageInfo func (m *LastError) Reset() { *m = LastError{} } func (*LastError) ProtoMessage() {} func (*LastError) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{75} + return fileDescriptor_f1caaec5647a9dbf, []int{76} } func (m *LastError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2186,7 +2214,7 @@ var xxx_messageInfo_LastError proto.InternalMessageInfo func (m *LastMaintenance) Reset() { *m = LastMaintenance{} } func (*LastMaintenance) ProtoMessage() {} func (*LastMaintenance) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{76} + return fileDescriptor_f1caaec5647a9dbf, []int{77} } func (m *LastMaintenance) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2214,7 +2242,7 @@ var xxx_messageInfo_LastMaintenance proto.InternalMessageInfo func (m *LastOperation) Reset() { *m = LastOperation{} } func (*LastOperation) ProtoMessage() {} func (*LastOperation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{77} + return fileDescriptor_f1caaec5647a9dbf, []int{78} } func (m *LastOperation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2242,7 +2270,7 @@ var xxx_messageInfo_LastOperation proto.InternalMessageInfo func (m *Machine) Reset() { *m = Machine{} } func (*Machine) ProtoMessage() {} func (*Machine) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{78} + return fileDescriptor_f1caaec5647a9dbf, []int{79} } func (m *Machine) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2270,7 +2298,7 @@ var xxx_messageInfo_Machine proto.InternalMessageInfo func (m *MachineControllerManagerSettings) Reset() { *m = MachineControllerManagerSettings{} } func (*MachineControllerManagerSettings) ProtoMessage() {} func (*MachineControllerManagerSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{79} + return fileDescriptor_f1caaec5647a9dbf, []int{80} } func (m *MachineControllerManagerSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2298,7 +2326,7 @@ var xxx_messageInfo_MachineControllerManagerSettings proto.InternalMessageInfo func (m *MachineImage) Reset() { *m = MachineImage{} } func (*MachineImage) ProtoMessage() {} func (*MachineImage) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{80} + return fileDescriptor_f1caaec5647a9dbf, []int{81} } func (m *MachineImage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2326,7 +2354,7 @@ var xxx_messageInfo_MachineImage proto.InternalMessageInfo func (m *MachineImageVersion) Reset() { *m = MachineImageVersion{} } func (*MachineImageVersion) ProtoMessage() {} func (*MachineImageVersion) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{81} + return fileDescriptor_f1caaec5647a9dbf, []int{82} } func (m *MachineImageVersion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2354,7 +2382,7 @@ var xxx_messageInfo_MachineImageVersion proto.InternalMessageInfo func (m *MachineType) Reset() { *m = MachineType{} } func (*MachineType) ProtoMessage() {} func (*MachineType) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{82} + return fileDescriptor_f1caaec5647a9dbf, []int{83} } func (m *MachineType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2382,7 +2410,7 @@ var xxx_messageInfo_MachineType proto.InternalMessageInfo func (m *MachineTypeStorage) Reset() { *m = MachineTypeStorage{} } func (*MachineTypeStorage) ProtoMessage() {} func (*MachineTypeStorage) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{83} + return fileDescriptor_f1caaec5647a9dbf, []int{84} } func (m *MachineTypeStorage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2410,7 +2438,7 @@ var xxx_messageInfo_MachineTypeStorage proto.InternalMessageInfo func (m *Maintenance) Reset() { *m = Maintenance{} } func (*Maintenance) ProtoMessage() {} func (*Maintenance) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{84} + return fileDescriptor_f1caaec5647a9dbf, []int{85} } func (m *Maintenance) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2438,7 +2466,7 @@ var xxx_messageInfo_Maintenance proto.InternalMessageInfo func (m *MaintenanceAutoUpdate) Reset() { *m = MaintenanceAutoUpdate{} } func (*MaintenanceAutoUpdate) ProtoMessage() {} func (*MaintenanceAutoUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{85} + return fileDescriptor_f1caaec5647a9dbf, []int{86} } func (m *MaintenanceAutoUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2466,7 +2494,7 @@ var xxx_messageInfo_MaintenanceAutoUpdate proto.InternalMessageInfo func (m *MaintenanceTimeWindow) Reset() { *m = MaintenanceTimeWindow{} } func (*MaintenanceTimeWindow) ProtoMessage() {} func (*MaintenanceTimeWindow) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{86} + return fileDescriptor_f1caaec5647a9dbf, []int{87} } func (m *MaintenanceTimeWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2494,7 +2522,7 @@ var xxx_messageInfo_MaintenanceTimeWindow proto.InternalMessageInfo func (m *Monitoring) Reset() { *m = Monitoring{} } func (*Monitoring) ProtoMessage() {} func (*Monitoring) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{87} + return fileDescriptor_f1caaec5647a9dbf, []int{88} } func (m *Monitoring) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2522,7 +2550,7 @@ var xxx_messageInfo_Monitoring proto.InternalMessageInfo func (m *NamedResourceReference) Reset() { *m = NamedResourceReference{} } func (*NamedResourceReference) ProtoMessage() {} func (*NamedResourceReference) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{88} + return fileDescriptor_f1caaec5647a9dbf, []int{89} } func (m *NamedResourceReference) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2550,7 +2578,7 @@ var xxx_messageInfo_NamedResourceReference proto.InternalMessageInfo func (m *Networking) Reset() { *m = Networking{} } func (*Networking) ProtoMessage() {} func (*Networking) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{89} + return fileDescriptor_f1caaec5647a9dbf, []int{90} } func (m *Networking) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2578,7 +2606,7 @@ var xxx_messageInfo_Networking proto.InternalMessageInfo func (m *NginxIngress) Reset() { *m = NginxIngress{} } func (*NginxIngress) ProtoMessage() {} func (*NginxIngress) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{90} + return fileDescriptor_f1caaec5647a9dbf, []int{91} } func (m *NginxIngress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2606,7 +2634,7 @@ var xxx_messageInfo_NginxIngress proto.InternalMessageInfo func (m *NodeLocalDNS) Reset() { *m = NodeLocalDNS{} } func (*NodeLocalDNS) ProtoMessage() {} func (*NodeLocalDNS) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{91} + return fileDescriptor_f1caaec5647a9dbf, []int{92} } func (m *NodeLocalDNS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2634,7 +2662,7 @@ var xxx_messageInfo_NodeLocalDNS proto.InternalMessageInfo func (m *OIDCConfig) Reset() { *m = OIDCConfig{} } func (*OIDCConfig) ProtoMessage() {} func (*OIDCConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{92} + return fileDescriptor_f1caaec5647a9dbf, []int{93} } func (m *OIDCConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2662,7 +2690,7 @@ var xxx_messageInfo_OIDCConfig proto.InternalMessageInfo func (m *OpenIDConnectClientAuthentication) Reset() { *m = OpenIDConnectClientAuthentication{} } func (*OpenIDConnectClientAuthentication) ProtoMessage() {} func (*OpenIDConnectClientAuthentication) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{93} + return fileDescriptor_f1caaec5647a9dbf, []int{94} } func (m *OpenIDConnectClientAuthentication) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2690,7 +2718,7 @@ var xxx_messageInfo_OpenIDConnectClientAuthentication proto.InternalMessageInfo func (m *Project) Reset() { *m = Project{} } func (*Project) ProtoMessage() {} func (*Project) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{94} + return fileDescriptor_f1caaec5647a9dbf, []int{95} } func (m *Project) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2718,7 +2746,7 @@ var xxx_messageInfo_Project proto.InternalMessageInfo func (m *ProjectList) Reset() { *m = ProjectList{} } func (*ProjectList) ProtoMessage() {} func (*ProjectList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{95} + return fileDescriptor_f1caaec5647a9dbf, []int{96} } func (m *ProjectList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2746,7 +2774,7 @@ var xxx_messageInfo_ProjectList proto.InternalMessageInfo func (m *ProjectMember) Reset() { *m = ProjectMember{} } func (*ProjectMember) ProtoMessage() {} func (*ProjectMember) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{96} + return fileDescriptor_f1caaec5647a9dbf, []int{97} } func (m *ProjectMember) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2774,7 +2802,7 @@ var xxx_messageInfo_ProjectMember proto.InternalMessageInfo func (m *ProjectSpec) Reset() { *m = ProjectSpec{} } func (*ProjectSpec) ProtoMessage() {} func (*ProjectSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{97} + return fileDescriptor_f1caaec5647a9dbf, []int{98} } func (m *ProjectSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2802,7 +2830,7 @@ var xxx_messageInfo_ProjectSpec proto.InternalMessageInfo func (m *ProjectStatus) Reset() { *m = ProjectStatus{} } func (*ProjectStatus) ProtoMessage() {} func (*ProjectStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{98} + return fileDescriptor_f1caaec5647a9dbf, []int{99} } func (m *ProjectStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2830,7 +2858,7 @@ var xxx_messageInfo_ProjectStatus proto.InternalMessageInfo func (m *ProjectTolerations) Reset() { *m = ProjectTolerations{} } func (*ProjectTolerations) ProtoMessage() {} func (*ProjectTolerations) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{99} + return fileDescriptor_f1caaec5647a9dbf, []int{100} } func (m *ProjectTolerations) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2858,7 +2886,7 @@ var xxx_messageInfo_ProjectTolerations proto.InternalMessageInfo func (m *Provider) Reset() { *m = Provider{} } func (*Provider) ProtoMessage() {} func (*Provider) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{100} + return fileDescriptor_f1caaec5647a9dbf, []int{101} } func (m *Provider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2886,7 +2914,7 @@ var xxx_messageInfo_Provider proto.InternalMessageInfo func (m *Quota) Reset() { *m = Quota{} } func (*Quota) ProtoMessage() {} func (*Quota) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{101} + return fileDescriptor_f1caaec5647a9dbf, []int{102} } func (m *Quota) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2914,7 +2942,7 @@ var xxx_messageInfo_Quota proto.InternalMessageInfo func (m *QuotaList) Reset() { *m = QuotaList{} } func (*QuotaList) ProtoMessage() {} func (*QuotaList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{102} + return fileDescriptor_f1caaec5647a9dbf, []int{103} } func (m *QuotaList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2942,7 +2970,7 @@ var xxx_messageInfo_QuotaList proto.InternalMessageInfo func (m *QuotaSpec) Reset() { *m = QuotaSpec{} } func (*QuotaSpec) ProtoMessage() {} func (*QuotaSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{103} + return fileDescriptor_f1caaec5647a9dbf, []int{104} } func (m *QuotaSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2970,7 +2998,7 @@ var xxx_messageInfo_QuotaSpec proto.InternalMessageInfo func (m *Region) Reset() { *m = Region{} } func (*Region) ProtoMessage() {} func (*Region) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{104} + return fileDescriptor_f1caaec5647a9dbf, []int{105} } func (m *Region) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2998,7 +3026,7 @@ var xxx_messageInfo_Region proto.InternalMessageInfo func (m *ResourceData) Reset() { *m = ResourceData{} } func (*ResourceData) ProtoMessage() {} func (*ResourceData) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{105} + return fileDescriptor_f1caaec5647a9dbf, []int{106} } func (m *ResourceData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3026,7 +3054,7 @@ var xxx_messageInfo_ResourceData proto.InternalMessageInfo func (m *ResourceWatchCacheSize) Reset() { *m = ResourceWatchCacheSize{} } func (*ResourceWatchCacheSize) ProtoMessage() {} func (*ResourceWatchCacheSize) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{106} + return fileDescriptor_f1caaec5647a9dbf, []int{107} } func (m *ResourceWatchCacheSize) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3054,7 +3082,7 @@ var xxx_messageInfo_ResourceWatchCacheSize proto.InternalMessageInfo func (m *SSHAccess) Reset() { *m = SSHAccess{} } func (*SSHAccess) ProtoMessage() {} func (*SSHAccess) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{107} + return fileDescriptor_f1caaec5647a9dbf, []int{108} } func (m *SSHAccess) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3082,7 +3110,7 @@ var xxx_messageInfo_SSHAccess proto.InternalMessageInfo func (m *SecretBinding) Reset() { *m = SecretBinding{} } func (*SecretBinding) ProtoMessage() {} func (*SecretBinding) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{108} + return fileDescriptor_f1caaec5647a9dbf, []int{109} } func (m *SecretBinding) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3110,7 +3138,7 @@ var xxx_messageInfo_SecretBinding proto.InternalMessageInfo func (m *SecretBindingList) Reset() { *m = SecretBindingList{} } func (*SecretBindingList) ProtoMessage() {} func (*SecretBindingList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{109} + return fileDescriptor_f1caaec5647a9dbf, []int{110} } func (m *SecretBindingList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3138,7 +3166,7 @@ var xxx_messageInfo_SecretBindingList proto.InternalMessageInfo func (m *SecretBindingProvider) Reset() { *m = SecretBindingProvider{} } func (*SecretBindingProvider) ProtoMessage() {} func (*SecretBindingProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{110} + return fileDescriptor_f1caaec5647a9dbf, []int{111} } func (m *SecretBindingProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3166,7 +3194,7 @@ var xxx_messageInfo_SecretBindingProvider proto.InternalMessageInfo func (m *Seed) Reset() { *m = Seed{} } func (*Seed) ProtoMessage() {} func (*Seed) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{111} + return fileDescriptor_f1caaec5647a9dbf, []int{112} } func (m *Seed) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3194,7 +3222,7 @@ var xxx_messageInfo_Seed proto.InternalMessageInfo func (m *SeedBackup) Reset() { *m = SeedBackup{} } func (*SeedBackup) ProtoMessage() {} func (*SeedBackup) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{112} + return fileDescriptor_f1caaec5647a9dbf, []int{113} } func (m *SeedBackup) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3222,7 +3250,7 @@ var xxx_messageInfo_SeedBackup proto.InternalMessageInfo func (m *SeedDNS) Reset() { *m = SeedDNS{} } func (*SeedDNS) ProtoMessage() {} func (*SeedDNS) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{113} + return fileDescriptor_f1caaec5647a9dbf, []int{114} } func (m *SeedDNS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3250,7 +3278,7 @@ var xxx_messageInfo_SeedDNS proto.InternalMessageInfo func (m *SeedDNSProvider) Reset() { *m = SeedDNSProvider{} } func (*SeedDNSProvider) ProtoMessage() {} func (*SeedDNSProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{114} + return fileDescriptor_f1caaec5647a9dbf, []int{115} } func (m *SeedDNSProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3278,7 +3306,7 @@ var xxx_messageInfo_SeedDNSProvider proto.InternalMessageInfo func (m *SeedList) Reset() { *m = SeedList{} } func (*SeedList) ProtoMessage() {} func (*SeedList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{115} + return fileDescriptor_f1caaec5647a9dbf, []int{116} } func (m *SeedList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3306,7 +3334,7 @@ var xxx_messageInfo_SeedList proto.InternalMessageInfo func (m *SeedNetworks) Reset() { *m = SeedNetworks{} } func (*SeedNetworks) ProtoMessage() {} func (*SeedNetworks) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{116} + return fileDescriptor_f1caaec5647a9dbf, []int{117} } func (m *SeedNetworks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3334,7 +3362,7 @@ var xxx_messageInfo_SeedNetworks proto.InternalMessageInfo func (m *SeedProvider) Reset() { *m = SeedProvider{} } func (*SeedProvider) ProtoMessage() {} func (*SeedProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{117} + return fileDescriptor_f1caaec5647a9dbf, []int{118} } func (m *SeedProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3362,7 +3390,7 @@ var xxx_messageInfo_SeedProvider proto.InternalMessageInfo func (m *SeedSelector) Reset() { *m = SeedSelector{} } func (*SeedSelector) ProtoMessage() {} func (*SeedSelector) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{118} + return fileDescriptor_f1caaec5647a9dbf, []int{119} } func (m *SeedSelector) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3390,7 +3418,7 @@ var xxx_messageInfo_SeedSelector proto.InternalMessageInfo func (m *SeedSettingDependencyWatchdog) Reset() { *m = SeedSettingDependencyWatchdog{} } func (*SeedSettingDependencyWatchdog) ProtoMessage() {} func (*SeedSettingDependencyWatchdog) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{119} + return fileDescriptor_f1caaec5647a9dbf, []int{120} } func (m *SeedSettingDependencyWatchdog) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3418,7 +3446,7 @@ var xxx_messageInfo_SeedSettingDependencyWatchdog proto.InternalMessageInfo func (m *SeedSettingDependencyWatchdogEndpoint) Reset() { *m = SeedSettingDependencyWatchdogEndpoint{} } func (*SeedSettingDependencyWatchdogEndpoint) ProtoMessage() {} func (*SeedSettingDependencyWatchdogEndpoint) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{120} + return fileDescriptor_f1caaec5647a9dbf, []int{121} } func (m *SeedSettingDependencyWatchdogEndpoint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3446,7 +3474,7 @@ var xxx_messageInfo_SeedSettingDependencyWatchdogEndpoint proto.InternalMessageI func (m *SeedSettingDependencyWatchdogProbe) Reset() { *m = SeedSettingDependencyWatchdogProbe{} } func (*SeedSettingDependencyWatchdogProbe) ProtoMessage() {} func (*SeedSettingDependencyWatchdogProbe) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{121} + return fileDescriptor_f1caaec5647a9dbf, []int{122} } func (m *SeedSettingDependencyWatchdogProbe) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3474,7 +3502,7 @@ var xxx_messageInfo_SeedSettingDependencyWatchdogProbe proto.InternalMessageInfo func (m *SeedSettingExcessCapacityReservation) Reset() { *m = SeedSettingExcessCapacityReservation{} } func (*SeedSettingExcessCapacityReservation) ProtoMessage() {} func (*SeedSettingExcessCapacityReservation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{122} + return fileDescriptor_f1caaec5647a9dbf, []int{123} } func (m *SeedSettingExcessCapacityReservation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3502,7 +3530,7 @@ var xxx_messageInfo_SeedSettingExcessCapacityReservation proto.InternalMessageIn func (m *SeedSettingLoadBalancerServices) Reset() { *m = SeedSettingLoadBalancerServices{} } func (*SeedSettingLoadBalancerServices) ProtoMessage() {} func (*SeedSettingLoadBalancerServices) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{123} + return fileDescriptor_f1caaec5647a9dbf, []int{124} } func (m *SeedSettingLoadBalancerServices) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3530,7 +3558,7 @@ var xxx_messageInfo_SeedSettingLoadBalancerServices proto.InternalMessageInfo func (m *SeedSettingLoadBalancerServicesZones) Reset() { *m = SeedSettingLoadBalancerServicesZones{} } func (*SeedSettingLoadBalancerServicesZones) ProtoMessage() {} func (*SeedSettingLoadBalancerServicesZones) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{124} + return fileDescriptor_f1caaec5647a9dbf, []int{125} } func (m *SeedSettingLoadBalancerServicesZones) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3558,7 +3586,7 @@ var xxx_messageInfo_SeedSettingLoadBalancerServicesZones proto.InternalMessageIn func (m *SeedSettingOwnerChecks) Reset() { *m = SeedSettingOwnerChecks{} } func (*SeedSettingOwnerChecks) ProtoMessage() {} func (*SeedSettingOwnerChecks) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{125} + return fileDescriptor_f1caaec5647a9dbf, []int{126} } func (m *SeedSettingOwnerChecks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3586,7 +3614,7 @@ var xxx_messageInfo_SeedSettingOwnerChecks proto.InternalMessageInfo func (m *SeedSettingScheduling) Reset() { *m = SeedSettingScheduling{} } func (*SeedSettingScheduling) ProtoMessage() {} func (*SeedSettingScheduling) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{126} + return fileDescriptor_f1caaec5647a9dbf, []int{127} } func (m *SeedSettingScheduling) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3611,10 +3639,38 @@ func (m *SeedSettingScheduling) XXX_DiscardUnknown() { var xxx_messageInfo_SeedSettingScheduling proto.InternalMessageInfo +func (m *SeedSettingTopologyAwareRouting) Reset() { *m = SeedSettingTopologyAwareRouting{} } +func (*SeedSettingTopologyAwareRouting) ProtoMessage() {} +func (*SeedSettingTopologyAwareRouting) Descriptor() ([]byte, []int) { + return fileDescriptor_f1caaec5647a9dbf, []int{128} +} +func (m *SeedSettingTopologyAwareRouting) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SeedSettingTopologyAwareRouting) 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 *SeedSettingTopologyAwareRouting) XXX_Merge(src proto.Message) { + xxx_messageInfo_SeedSettingTopologyAwareRouting.Merge(m, src) +} +func (m *SeedSettingTopologyAwareRouting) XXX_Size() int { + return m.Size() +} +func (m *SeedSettingTopologyAwareRouting) XXX_DiscardUnknown() { + xxx_messageInfo_SeedSettingTopologyAwareRouting.DiscardUnknown(m) +} + +var xxx_messageInfo_SeedSettingTopologyAwareRouting proto.InternalMessageInfo + func (m *SeedSettingVerticalPodAutoscaler) Reset() { *m = SeedSettingVerticalPodAutoscaler{} } func (*SeedSettingVerticalPodAutoscaler) ProtoMessage() {} func (*SeedSettingVerticalPodAutoscaler) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{127} + return fileDescriptor_f1caaec5647a9dbf, []int{129} } func (m *SeedSettingVerticalPodAutoscaler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3642,7 +3698,7 @@ var xxx_messageInfo_SeedSettingVerticalPodAutoscaler proto.InternalMessageInfo func (m *SeedSettings) Reset() { *m = SeedSettings{} } func (*SeedSettings) ProtoMessage() {} func (*SeedSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{128} + return fileDescriptor_f1caaec5647a9dbf, []int{130} } func (m *SeedSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3670,7 +3726,7 @@ var xxx_messageInfo_SeedSettings proto.InternalMessageInfo func (m *SeedSpec) Reset() { *m = SeedSpec{} } func (*SeedSpec) ProtoMessage() {} func (*SeedSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{129} + return fileDescriptor_f1caaec5647a9dbf, []int{131} } func (m *SeedSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3698,7 +3754,7 @@ var xxx_messageInfo_SeedSpec proto.InternalMessageInfo func (m *SeedStatus) Reset() { *m = SeedStatus{} } func (*SeedStatus) ProtoMessage() {} func (*SeedStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{130} + return fileDescriptor_f1caaec5647a9dbf, []int{132} } func (m *SeedStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3726,7 +3782,7 @@ var xxx_messageInfo_SeedStatus proto.InternalMessageInfo func (m *SeedTaint) Reset() { *m = SeedTaint{} } func (*SeedTaint) ProtoMessage() {} func (*SeedTaint) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{131} + return fileDescriptor_f1caaec5647a9dbf, []int{133} } func (m *SeedTaint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3754,7 +3810,7 @@ var xxx_messageInfo_SeedTaint proto.InternalMessageInfo func (m *SeedVolume) Reset() { *m = SeedVolume{} } func (*SeedVolume) ProtoMessage() {} func (*SeedVolume) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{132} + return fileDescriptor_f1caaec5647a9dbf, []int{134} } func (m *SeedVolume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3782,7 +3838,7 @@ var xxx_messageInfo_SeedVolume proto.InternalMessageInfo func (m *SeedVolumeProvider) Reset() { *m = SeedVolumeProvider{} } func (*SeedVolumeProvider) ProtoMessage() {} func (*SeedVolumeProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{133} + return fileDescriptor_f1caaec5647a9dbf, []int{135} } func (m *SeedVolumeProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3810,7 +3866,7 @@ var xxx_messageInfo_SeedVolumeProvider proto.InternalMessageInfo func (m *ServiceAccountConfig) Reset() { *m = ServiceAccountConfig{} } func (*ServiceAccountConfig) ProtoMessage() {} func (*ServiceAccountConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{134} + return fileDescriptor_f1caaec5647a9dbf, []int{136} } func (m *ServiceAccountConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3835,10 +3891,38 @@ func (m *ServiceAccountConfig) XXX_DiscardUnknown() { var xxx_messageInfo_ServiceAccountConfig proto.InternalMessageInfo +func (m *ServiceAccountKeyRotation) Reset() { *m = ServiceAccountKeyRotation{} } +func (*ServiceAccountKeyRotation) ProtoMessage() {} +func (*ServiceAccountKeyRotation) Descriptor() ([]byte, []int) { + return fileDescriptor_f1caaec5647a9dbf, []int{137} +} +func (m *ServiceAccountKeyRotation) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ServiceAccountKeyRotation) 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 *ServiceAccountKeyRotation) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceAccountKeyRotation.Merge(m, src) +} +func (m *ServiceAccountKeyRotation) XXX_Size() int { + return m.Size() +} +func (m *ServiceAccountKeyRotation) XXX_DiscardUnknown() { + xxx_messageInfo_ServiceAccountKeyRotation.DiscardUnknown(m) +} + +var xxx_messageInfo_ServiceAccountKeyRotation proto.InternalMessageInfo + func (m *Shoot) Reset() { *m = Shoot{} } func (*Shoot) ProtoMessage() {} func (*Shoot) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{135} + return fileDescriptor_f1caaec5647a9dbf, []int{138} } func (m *Shoot) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3866,7 +3950,7 @@ var xxx_messageInfo_Shoot proto.InternalMessageInfo func (m *ShootAdvertisedAddress) Reset() { *m = ShootAdvertisedAddress{} } func (*ShootAdvertisedAddress) ProtoMessage() {} func (*ShootAdvertisedAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{136} + return fileDescriptor_f1caaec5647a9dbf, []int{139} } func (m *ShootAdvertisedAddress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3894,7 +3978,7 @@ var xxx_messageInfo_ShootAdvertisedAddress proto.InternalMessageInfo func (m *ShootCredentials) Reset() { *m = ShootCredentials{} } func (*ShootCredentials) ProtoMessage() {} func (*ShootCredentials) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{137} + return fileDescriptor_f1caaec5647a9dbf, []int{140} } func (m *ShootCredentials) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3922,7 +4006,7 @@ var xxx_messageInfo_ShootCredentials proto.InternalMessageInfo func (m *ShootCredentialsRotation) Reset() { *m = ShootCredentialsRotation{} } func (*ShootCredentialsRotation) ProtoMessage() {} func (*ShootCredentialsRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{138} + return fileDescriptor_f1caaec5647a9dbf, []int{141} } func (m *ShootCredentialsRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3947,38 +4031,10 @@ func (m *ShootCredentialsRotation) XXX_DiscardUnknown() { var xxx_messageInfo_ShootCredentialsRotation proto.InternalMessageInfo -func (m *ShootETCDEncryptionKeyRotation) Reset() { *m = ShootETCDEncryptionKeyRotation{} } -func (*ShootETCDEncryptionKeyRotation) ProtoMessage() {} -func (*ShootETCDEncryptionKeyRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{139} -} -func (m *ShootETCDEncryptionKeyRotation) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ShootETCDEncryptionKeyRotation) 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 *ShootETCDEncryptionKeyRotation) XXX_Merge(src proto.Message) { - xxx_messageInfo_ShootETCDEncryptionKeyRotation.Merge(m, src) -} -func (m *ShootETCDEncryptionKeyRotation) XXX_Size() int { - return m.Size() -} -func (m *ShootETCDEncryptionKeyRotation) XXX_DiscardUnknown() { - xxx_messageInfo_ShootETCDEncryptionKeyRotation.DiscardUnknown(m) -} - -var xxx_messageInfo_ShootETCDEncryptionKeyRotation proto.InternalMessageInfo - func (m *ShootKubeconfigRotation) Reset() { *m = ShootKubeconfigRotation{} } func (*ShootKubeconfigRotation) ProtoMessage() {} func (*ShootKubeconfigRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{140} + return fileDescriptor_f1caaec5647a9dbf, []int{142} } func (m *ShootKubeconfigRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4006,7 +4062,7 @@ var xxx_messageInfo_ShootKubeconfigRotation proto.InternalMessageInfo func (m *ShootList) Reset() { *m = ShootList{} } func (*ShootList) ProtoMessage() {} func (*ShootList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{141} + return fileDescriptor_f1caaec5647a9dbf, []int{143} } func (m *ShootList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4034,7 +4090,7 @@ var xxx_messageInfo_ShootList proto.InternalMessageInfo func (m *ShootMachineImage) Reset() { *m = ShootMachineImage{} } func (*ShootMachineImage) ProtoMessage() {} func (*ShootMachineImage) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{142} + return fileDescriptor_f1caaec5647a9dbf, []int{144} } func (m *ShootMachineImage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4062,7 +4118,7 @@ var xxx_messageInfo_ShootMachineImage proto.InternalMessageInfo func (m *ShootNetworks) Reset() { *m = ShootNetworks{} } func (*ShootNetworks) ProtoMessage() {} func (*ShootNetworks) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{143} + return fileDescriptor_f1caaec5647a9dbf, []int{145} } func (m *ShootNetworks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4090,7 +4146,7 @@ var xxx_messageInfo_ShootNetworks proto.InternalMessageInfo func (m *ShootObservabilityRotation) Reset() { *m = ShootObservabilityRotation{} } func (*ShootObservabilityRotation) ProtoMessage() {} func (*ShootObservabilityRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{144} + return fileDescriptor_f1caaec5647a9dbf, []int{146} } func (m *ShootObservabilityRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4118,7 +4174,7 @@ var xxx_messageInfo_ShootObservabilityRotation proto.InternalMessageInfo func (m *ShootSSHKeypairRotation) Reset() { *m = ShootSSHKeypairRotation{} } func (*ShootSSHKeypairRotation) ProtoMessage() {} func (*ShootSSHKeypairRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{145} + return fileDescriptor_f1caaec5647a9dbf, []int{147} } func (m *ShootSSHKeypairRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4143,38 +4199,10 @@ func (m *ShootSSHKeypairRotation) XXX_DiscardUnknown() { var xxx_messageInfo_ShootSSHKeypairRotation proto.InternalMessageInfo -func (m *ShootServiceAccountKeyRotation) Reset() { *m = ShootServiceAccountKeyRotation{} } -func (*ShootServiceAccountKeyRotation) ProtoMessage() {} -func (*ShootServiceAccountKeyRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{146} -} -func (m *ShootServiceAccountKeyRotation) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ShootServiceAccountKeyRotation) 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 *ShootServiceAccountKeyRotation) XXX_Merge(src proto.Message) { - xxx_messageInfo_ShootServiceAccountKeyRotation.Merge(m, src) -} -func (m *ShootServiceAccountKeyRotation) XXX_Size() int { - return m.Size() -} -func (m *ShootServiceAccountKeyRotation) XXX_DiscardUnknown() { - xxx_messageInfo_ShootServiceAccountKeyRotation.DiscardUnknown(m) -} - -var xxx_messageInfo_ShootServiceAccountKeyRotation proto.InternalMessageInfo - func (m *ShootSpec) Reset() { *m = ShootSpec{} } func (*ShootSpec) ProtoMessage() {} func (*ShootSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{147} + return fileDescriptor_f1caaec5647a9dbf, []int{148} } func (m *ShootSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4202,7 +4230,7 @@ var xxx_messageInfo_ShootSpec proto.InternalMessageInfo func (m *ShootState) Reset() { *m = ShootState{} } func (*ShootState) ProtoMessage() {} func (*ShootState) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{148} + return fileDescriptor_f1caaec5647a9dbf, []int{149} } func (m *ShootState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4230,7 +4258,7 @@ var xxx_messageInfo_ShootState proto.InternalMessageInfo func (m *ShootStateList) Reset() { *m = ShootStateList{} } func (*ShootStateList) ProtoMessage() {} func (*ShootStateList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{149} + return fileDescriptor_f1caaec5647a9dbf, []int{150} } func (m *ShootStateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4258,7 +4286,7 @@ var xxx_messageInfo_ShootStateList proto.InternalMessageInfo func (m *ShootStateSpec) Reset() { *m = ShootStateSpec{} } func (*ShootStateSpec) ProtoMessage() {} func (*ShootStateSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{150} + return fileDescriptor_f1caaec5647a9dbf, []int{151} } func (m *ShootStateSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4286,7 +4314,7 @@ var xxx_messageInfo_ShootStateSpec proto.InternalMessageInfo func (m *ShootStatus) Reset() { *m = ShootStatus{} } func (*ShootStatus) ProtoMessage() {} func (*ShootStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{151} + return fileDescriptor_f1caaec5647a9dbf, []int{152} } func (m *ShootStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4314,7 +4342,7 @@ var xxx_messageInfo_ShootStatus proto.InternalMessageInfo func (m *SystemComponents) Reset() { *m = SystemComponents{} } func (*SystemComponents) ProtoMessage() {} func (*SystemComponents) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{152} + return fileDescriptor_f1caaec5647a9dbf, []int{153} } func (m *SystemComponents) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4342,7 +4370,7 @@ var xxx_messageInfo_SystemComponents proto.InternalMessageInfo func (m *Toleration) Reset() { *m = Toleration{} } func (*Toleration) ProtoMessage() {} func (*Toleration) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{153} + return fileDescriptor_f1caaec5647a9dbf, []int{154} } func (m *Toleration) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4370,7 +4398,7 @@ var xxx_messageInfo_Toleration proto.InternalMessageInfo func (m *VerticalPodAutoscaler) Reset() { *m = VerticalPodAutoscaler{} } func (*VerticalPodAutoscaler) ProtoMessage() {} func (*VerticalPodAutoscaler) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{154} + return fileDescriptor_f1caaec5647a9dbf, []int{155} } func (m *VerticalPodAutoscaler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4398,7 +4426,7 @@ var xxx_messageInfo_VerticalPodAutoscaler proto.InternalMessageInfo func (m *Volume) Reset() { *m = Volume{} } func (*Volume) ProtoMessage() {} func (*Volume) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{155} + return fileDescriptor_f1caaec5647a9dbf, []int{156} } func (m *Volume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4426,7 +4454,7 @@ var xxx_messageInfo_Volume proto.InternalMessageInfo func (m *VolumeType) Reset() { *m = VolumeType{} } func (*VolumeType) ProtoMessage() {} func (*VolumeType) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{156} + return fileDescriptor_f1caaec5647a9dbf, []int{157} } func (m *VolumeType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4454,7 +4482,7 @@ var xxx_messageInfo_VolumeType proto.InternalMessageInfo func (m *WatchCacheSizes) Reset() { *m = WatchCacheSizes{} } func (*WatchCacheSizes) ProtoMessage() {} func (*WatchCacheSizes) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{157} + return fileDescriptor_f1caaec5647a9dbf, []int{158} } func (m *WatchCacheSizes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4482,7 +4510,7 @@ var xxx_messageInfo_WatchCacheSizes proto.InternalMessageInfo func (m *Worker) Reset() { *m = Worker{} } func (*Worker) ProtoMessage() {} func (*Worker) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{158} + return fileDescriptor_f1caaec5647a9dbf, []int{159} } func (m *Worker) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4510,7 +4538,7 @@ var xxx_messageInfo_Worker proto.InternalMessageInfo func (m *WorkerKubernetes) Reset() { *m = WorkerKubernetes{} } func (*WorkerKubernetes) ProtoMessage() {} func (*WorkerKubernetes) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{159} + return fileDescriptor_f1caaec5647a9dbf, []int{160} } func (m *WorkerKubernetes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4538,7 +4566,7 @@ var xxx_messageInfo_WorkerKubernetes proto.InternalMessageInfo func (m *WorkerSystemComponents) Reset() { *m = WorkerSystemComponents{} } func (*WorkerSystemComponents) ProtoMessage() {} func (*WorkerSystemComponents) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{160} + return fileDescriptor_f1caaec5647a9dbf, []int{161} } func (m *WorkerSystemComponents) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4566,7 +4594,7 @@ var xxx_messageInfo_WorkerSystemComponents proto.InternalMessageInfo func (m *WorkersSettings) Reset() { *m = WorkersSettings{} } func (*WorkersSettings) ProtoMessage() {} func (*WorkersSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{161} + return fileDescriptor_f1caaec5647a9dbf, []int{162} } func (m *WorkersSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4637,6 +4665,7 @@ func init() { proto.RegisterType((*DNSProvider)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.DNSProvider") proto.RegisterType((*DataVolume)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.DataVolume") proto.RegisterType((*DeploymentRef)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.DeploymentRef") + proto.RegisterType((*ETCDEncryptionKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ETCDEncryptionKeyRotation") proto.RegisterType((*ExpirableVersion)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ExpirableVersion") proto.RegisterType((*ExposureClass)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ExposureClass") proto.RegisterType((*ExposureClassList)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ExposureClassList") @@ -4729,6 +4758,7 @@ func init() { proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingLoadBalancerServicesZones.AnnotationsEntry") proto.RegisterType((*SeedSettingOwnerChecks)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingOwnerChecks") proto.RegisterType((*SeedSettingScheduling)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingScheduling") + proto.RegisterType((*SeedSettingTopologyAwareRouting)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingTopologyAwareRouting") proto.RegisterType((*SeedSettingVerticalPodAutoscaler)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingVerticalPodAutoscaler") proto.RegisterType((*SeedSettings)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettings") proto.RegisterType((*SeedSpec)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSpec") @@ -4737,18 +4767,17 @@ func init() { proto.RegisterType((*SeedVolume)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedVolume") proto.RegisterType((*SeedVolumeProvider)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedVolumeProvider") proto.RegisterType((*ServiceAccountConfig)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ServiceAccountConfig") + proto.RegisterType((*ServiceAccountKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ServiceAccountKeyRotation") proto.RegisterType((*Shoot)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.Shoot") proto.RegisterType((*ShootAdvertisedAddress)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootAdvertisedAddress") proto.RegisterType((*ShootCredentials)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootCredentials") proto.RegisterType((*ShootCredentialsRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootCredentialsRotation") - proto.RegisterType((*ShootETCDEncryptionKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootETCDEncryptionKeyRotation") proto.RegisterType((*ShootKubeconfigRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootKubeconfigRotation") proto.RegisterType((*ShootList)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootList") proto.RegisterType((*ShootMachineImage)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootMachineImage") proto.RegisterType((*ShootNetworks)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootNetworks") proto.RegisterType((*ShootObservabilityRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootObservabilityRotation") proto.RegisterType((*ShootSSHKeypairRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootSSHKeypairRotation") - proto.RegisterType((*ShootServiceAccountKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootServiceAccountKeyRotation") proto.RegisterType((*ShootSpec)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootSpec") proto.RegisterType((*ShootState)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootState") proto.RegisterType((*ShootStateList)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootStateList") @@ -4773,724 +4802,721 @@ func init() { } var fileDescriptor_f1caaec5647a9dbf = []byte{ - // 11463 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x6c, 0x24, 0xc9, - 0x75, 0x98, 0x7a, 0xf8, 0xfd, 0xf8, 0xb1, 0xbb, 0xb5, 0x1f, 0xc7, 0xdb, 0xdd, 0xdb, 0x59, 0xf5, - 0x9d, 0xe4, 0xbb, 0x48, 0xe6, 0xfa, 0x3e, 0x64, 0xdf, 0x9d, 0xef, 0x8b, 0x33, 0xc3, 0xdd, 0x1d, - 0x2f, 0xc9, 0xe5, 0xd5, 0xec, 0xde, 0x49, 0x27, 0xc3, 0x72, 0xb3, 0xbb, 0x38, 0xec, 0x63, 0x4f, - 0xf7, 0x5c, 0x77, 0x0f, 0x97, 0xdc, 0x93, 0x65, 0x5b, 0x91, 0xad, 0xf8, 0x04, 0x3b, 0x09, 0x8c, - 0xc0, 0xc2, 0xd9, 0xb0, 0x25, 0xc3, 0x09, 0x14, 0x20, 0x8e, 0x0c, 0x01, 0x56, 0x3e, 0xa1, 0x1f, - 0xca, 0x0f, 0x0b, 0x72, 0xa0, 0x18, 0x86, 0x13, 0x28, 0x46, 0x42, 0x45, 0x8c, 0x63, 0x3b, 0x41, - 0x8c, 0x24, 0x08, 0xf2, 0x23, 0x8b, 0x24, 0x08, 0xea, 0xa3, 0xab, 0xab, 0xbf, 0x86, 0x64, 0xf7, - 0x2e, 0xa5, 0x83, 0xfd, 0x8b, 0x9c, 0x7a, 0x55, 0xef, 0x55, 0xd7, 0xc7, 0xab, 0xf7, 0x5e, 0xbd, - 0x7a, 0x0f, 0x9a, 0x5d, 0x3b, 0xdc, 0x1c, 0xac, 0x2f, 0x98, 0x5e, 0xef, 0x4a, 0xd7, 0xf0, 0x2d, - 0xe2, 0x12, 0x3f, 0xfe, 0xa7, 0xbf, 0xd5, 0xbd, 0x62, 0xf4, 0xed, 0xe0, 0x8a, 0xe9, 0xf9, 0xe4, - 0xca, 0xf6, 0x93, 0x86, 0xd3, 0xdf, 0x34, 0x9e, 0xbc, 0xd2, 0xa5, 0x40, 0x23, 0x24, 0xd6, 0x42, - 0xdf, 0xf7, 0x42, 0x0f, 0x3d, 0x1d, 0x23, 0x59, 0x88, 0xda, 0xc6, 0xff, 0xf4, 0xb7, 0xba, 0x0b, - 0x14, 0xc9, 0x02, 0x45, 0xb2, 0x10, 0x21, 0x39, 0xdf, 0x38, 0x12, 0xe5, 0x75, 0x12, 0x66, 0x09, - 0x9f, 0xff, 0x41, 0x15, 0x87, 0xd7, 0xf5, 0xae, 0xb0, 0xe2, 0xf5, 0xc1, 0x06, 0xfb, 0xc5, 0x7e, - 0xb0, 0xff, 0x44, 0xf5, 0x27, 0xb6, 0x9e, 0x0d, 0x16, 0x6c, 0x8f, 0x22, 0xbe, 0x62, 0x0c, 0x42, - 0x2f, 0x30, 0x0d, 0xc7, 0x76, 0xbb, 0x57, 0xb6, 0xb3, 0x98, 0x75, 0xa5, 0xaa, 0xe8, 0xc2, 0xd0, - 0x3a, 0xfe, 0xba, 0x61, 0xe6, 0xd5, 0x79, 0x26, 0xae, 0xd3, 0x33, 0xcc, 0x4d, 0xdb, 0x25, 0xfe, - 0x6e, 0xf4, 0x71, 0x57, 0x7c, 0x12, 0x78, 0x03, 0xdf, 0x24, 0x47, 0x6a, 0x15, 0x5c, 0xe9, 0x91, - 0xd0, 0xc8, 0xa3, 0x75, 0xa5, 0xa8, 0x95, 0x3f, 0x70, 0x43, 0xbb, 0x97, 0x25, 0xf3, 0xc3, 0x07, - 0x35, 0x08, 0xcc, 0x4d, 0xd2, 0x33, 0x32, 0xed, 0x9e, 0x2e, 0x6a, 0x37, 0x08, 0x6d, 0xe7, 0x8a, - 0xed, 0x86, 0x41, 0xe8, 0xa7, 0x1b, 0xe9, 0x4f, 0xc1, 0xd8, 0xa2, 0x65, 0x79, 0x2e, 0x7a, 0x02, - 0x26, 0x88, 0x6b, 0xac, 0x3b, 0xc4, 0x9a, 0xd7, 0x2e, 0x6b, 0x8f, 0x4f, 0x36, 0x4e, 0x7c, 0x63, - 0xaf, 0xfe, 0xbe, 0xfd, 0xbd, 0xfa, 0xc4, 0x12, 0x2f, 0xc6, 0x11, 0x5c, 0xff, 0x95, 0x1a, 0x8c, - 0xb3, 0x46, 0x01, 0xfa, 0x65, 0x0d, 0x4e, 0x6f, 0x0d, 0xd6, 0x89, 0xef, 0x92, 0x90, 0x04, 0x2d, - 0x23, 0xd8, 0x5c, 0xf7, 0x0c, 0x9f, 0xa3, 0x98, 0x7e, 0xea, 0xfa, 0x42, 0x89, 0x25, 0xb8, 0x70, - 0x23, 0x8b, 0xaf, 0xf1, 0xd0, 0xfe, 0x5e, 0xfd, 0x74, 0x0e, 0x00, 0xe7, 0x51, 0x47, 0x77, 0x60, - 0xc6, 0xed, 0xda, 0xee, 0x4e, 0xdb, 0xed, 0xfa, 0x24, 0x08, 0xe6, 0x6b, 0xac, 0x37, 0x8b, 0xa5, - 0x7a, 0xb3, 0xaa, 0x20, 0x6a, 0x9c, 0xdc, 0xdf, 0xab, 0xcf, 0xa8, 0x25, 0x38, 0x41, 0x48, 0xff, - 0x1d, 0x0d, 0x4e, 0x2c, 0x5a, 0x3d, 0x3b, 0x08, 0x6c, 0xcf, 0x5d, 0x73, 0x06, 0x5d, 0xdb, 0x45, - 0x97, 0x61, 0xd4, 0x35, 0x7a, 0x84, 0x0d, 0xc9, 0x54, 0x63, 0x46, 0x8c, 0xea, 0xe8, 0xaa, 0xd1, - 0x23, 0x98, 0x41, 0xd0, 0xab, 0x30, 0x6e, 0x7a, 0xee, 0x86, 0xdd, 0x15, 0x1d, 0xfd, 0xc1, 0x05, - 0x3e, 0x93, 0x0b, 0xea, 0x4c, 0xb2, 0xfe, 0x89, 0x15, 0xb0, 0x80, 0x8d, 0x3b, 0x4b, 0x3b, 0x21, - 0x71, 0x29, 0x99, 0x06, 0xec, 0xef, 0xd5, 0xc7, 0x9b, 0x0c, 0x01, 0x16, 0x88, 0xd0, 0xe3, 0x30, - 0x69, 0xd9, 0x01, 0x9f, 0xce, 0x11, 0x36, 0x9d, 0x33, 0xfb, 0x7b, 0xf5, 0xc9, 0x96, 0x28, 0xc3, - 0x12, 0xaa, 0x5f, 0x85, 0xc9, 0x45, 0x87, 0xf8, 0xa1, 0xed, 0x76, 0xd1, 0xf3, 0x30, 0x47, 0x7a, - 0x86, 0xed, 0x60, 0x62, 0x12, 0x7b, 0x9b, 0xf8, 0xc1, 0xbc, 0x76, 0x79, 0xe4, 0xf1, 0xa9, 0x06, - 0xda, 0xdf, 0xab, 0xcf, 0x2d, 0x25, 0x20, 0x38, 0x55, 0x53, 0xff, 0xb4, 0x06, 0xd3, 0x8b, 0x03, - 0xcb, 0x0e, 0x79, 0x4f, 0x50, 0x00, 0xd3, 0x06, 0xfd, 0xb9, 0xe6, 0x39, 0xb6, 0xb9, 0x2b, 0x16, - 0xc4, 0x2b, 0xa5, 0xa6, 0x60, 0x31, 0xc6, 0xd3, 0x38, 0xb1, 0xbf, 0x57, 0x9f, 0x56, 0x0a, 0xb0, - 0x4a, 0x45, 0xdf, 0x04, 0x15, 0x86, 0x3e, 0x06, 0x33, 0x7c, 0x3c, 0x56, 0x8c, 0x3e, 0x26, 0x1b, - 0xa2, 0x13, 0x8f, 0x2a, 0xc3, 0x1b, 0x51, 0x5a, 0xb8, 0xb9, 0xfe, 0x26, 0x31, 0x43, 0x4c, 0x36, - 0x88, 0x4f, 0x5c, 0x93, 0xf0, 0x99, 0x6e, 0x2a, 0x8d, 0x71, 0x02, 0x95, 0xfe, 0x1d, 0x0d, 0x4e, - 0x2e, 0x6e, 0x1b, 0xb6, 0x63, 0xac, 0xdb, 0x8e, 0x1d, 0xee, 0xbe, 0xe1, 0xb9, 0xe4, 0x10, 0x53, - 0x7d, 0x1b, 0x1e, 0x1a, 0xb8, 0x06, 0x6f, 0xe7, 0x90, 0x15, 0x3e, 0xb9, 0xb7, 0x76, 0xfb, 0x84, - 0x2e, 0x52, 0x3a, 0xd4, 0x17, 0xf6, 0xf7, 0xea, 0x0f, 0xdd, 0xce, 0xaf, 0x82, 0x8b, 0xda, 0x22, - 0x0c, 0xe7, 0x14, 0xd0, 0x6b, 0x9e, 0x33, 0xe8, 0x09, 0xac, 0x23, 0x0c, 0xeb, 0xf9, 0xfd, 0xbd, - 0xfa, 0xb9, 0xdb, 0xb9, 0x35, 0x70, 0x41, 0x4b, 0xfd, 0x9b, 0x35, 0x98, 0x69, 0x18, 0xe6, 0xd6, - 0xa0, 0xdf, 0x18, 0x98, 0x5b, 0x24, 0x44, 0x3f, 0x09, 0x93, 0x94, 0xc7, 0x59, 0x46, 0x68, 0x88, - 0x91, 0xfc, 0xa1, 0xc2, 0x85, 0xca, 0x66, 0x91, 0xd6, 0x8e, 0xc7, 0x76, 0x85, 0x84, 0x46, 0x03, - 0x89, 0x31, 0x81, 0xb8, 0x0c, 0x4b, 0xac, 0xa8, 0x0b, 0xa3, 0x41, 0x9f, 0x98, 0x62, 0x1b, 0x2c, - 0x95, 0x5a, 0x2c, 0x6a, 0x97, 0x3b, 0x7d, 0x62, 0xc6, 0xd3, 0x40, 0x7f, 0x61, 0x46, 0x00, 0x79, - 0x30, 0x1e, 0x84, 0x46, 0x38, 0x08, 0xd8, 0xe6, 0x98, 0x7e, 0xea, 0x5a, 0x75, 0x52, 0x0c, 0x5d, - 0x63, 0x4e, 0x10, 0x1b, 0xe7, 0xbf, 0xb1, 0x20, 0xa3, 0x7f, 0x5b, 0x83, 0x93, 0x6a, 0xf5, 0x65, - 0x3b, 0x08, 0xd1, 0x8f, 0x67, 0x06, 0x74, 0xe1, 0x70, 0x03, 0x4a, 0x5b, 0xb3, 0xe1, 0x3c, 0x29, - 0xc8, 0x4d, 0x46, 0x25, 0xca, 0x60, 0x6e, 0xc0, 0x98, 0x1d, 0x92, 0x1e, 0x5f, 0x58, 0x65, 0xb9, - 0x9f, 0xda, 0xe7, 0xc6, 0xac, 0xa0, 0x36, 0xd6, 0xa6, 0x78, 0x31, 0x47, 0xaf, 0xff, 0x24, 0x9c, - 0x51, 0x6b, 0xad, 0xf9, 0xde, 0xb6, 0x6d, 0x11, 0x9f, 0x6e, 0x86, 0x70, 0xb7, 0x9f, 0xd9, 0x0c, - 0x74, 0x71, 0x61, 0x06, 0x41, 0x1f, 0x84, 0x71, 0x9f, 0x74, 0x6d, 0xcf, 0x65, 0x13, 0x3e, 0x15, - 0x0f, 0x1e, 0x66, 0xa5, 0x58, 0x40, 0xf5, 0xff, 0x52, 0x4b, 0x0e, 0x1e, 0x9d, 0x48, 0x74, 0x07, - 0x26, 0xfb, 0x82, 0x94, 0x18, 0xbc, 0x76, 0xe5, 0x2f, 0x8c, 0xfa, 0x1e, 0x8f, 0x6b, 0x54, 0x82, - 0x25, 0x31, 0x64, 0xc3, 0x5c, 0xf4, 0x7f, 0xb3, 0x02, 0xd7, 0x66, 0x3c, 0x75, 0x2d, 0x81, 0x08, - 0xa7, 0x10, 0xa3, 0x5b, 0x30, 0x15, 0x10, 0xd3, 0x27, 0x94, 0x2f, 0x89, 0x95, 0x9a, 0xcb, 0xbc, - 0x3a, 0x51, 0x25, 0xc1, 0xbc, 0x4e, 0x89, 0xee, 0x4f, 0x49, 0x00, 0x8e, 0x11, 0xa1, 0x8b, 0x30, - 0x1a, 0x10, 0x62, 0xcd, 0x8f, 0xb2, 0x41, 0x9f, 0x64, 0x5b, 0x83, 0x10, 0x0b, 0xb3, 0x52, 0xfd, - 0x37, 0x47, 0x01, 0x65, 0x17, 0xb6, 0xfa, 0xd5, 0xbc, 0x44, 0x0c, 0x7a, 0x95, 0xaf, 0x16, 0x7b, - 0x24, 0x85, 0x18, 0xbd, 0x0d, 0xb3, 0x8e, 0x11, 0x84, 0x37, 0xfb, 0x54, 0x50, 0x89, 0x56, 0xc7, - 0xf4, 0x53, 0x8d, 0x52, 0xd3, 0xbb, 0xac, 0x62, 0x6a, 0x9c, 0xda, 0xdf, 0xab, 0xcf, 0x26, 0x8a, - 0x70, 0x92, 0x16, 0xda, 0x82, 0x29, 0x5a, 0xb0, 0xe4, 0xfb, 0x9e, 0x2f, 0x86, 0xfc, 0xa5, 0xd2, - 0x84, 0x19, 0x96, 0xc6, 0x2c, 0x9d, 0x09, 0xf9, 0x13, 0xc7, 0xf8, 0xd1, 0x8f, 0x01, 0xf2, 0xd6, - 0x03, 0xe2, 0x6f, 0x13, 0xeb, 0x1a, 0x97, 0xcb, 0xe8, 0xe7, 0xd2, 0x79, 0x19, 0x69, 0x9c, 0x17, - 0x73, 0x88, 0x6e, 0x66, 0x6a, 0xe0, 0x9c, 0x56, 0x68, 0x0b, 0x90, 0x94, 0xed, 0xe4, 0xb4, 0xcf, - 0x8f, 0x1d, 0x7e, 0xd1, 0x9c, 0xa3, 0xc4, 0xae, 0x65, 0x50, 0xe0, 0x1c, 0xb4, 0xfa, 0xef, 0xd5, - 0x60, 0x9a, 0x2f, 0x92, 0x25, 0x37, 0xf4, 0x77, 0x8f, 0xe1, 0x68, 0xd8, 0x48, 0x1c, 0x0d, 0xad, - 0x0a, 0x5b, 0x9d, 0xf5, 0xb8, 0xf0, 0x64, 0x70, 0x53, 0x27, 0xc3, 0xd5, 0xca, 0x94, 0x86, 0x1f, - 0x0c, 0xff, 0x46, 0x83, 0x13, 0x4a, 0xed, 0x63, 0x38, 0x17, 0x48, 0xf2, 0x5c, 0x78, 0xa5, 0xea, - 0x07, 0x16, 0x1c, 0x0b, 0x66, 0xe2, 0xbb, 0x18, 0xcb, 0x7e, 0x0a, 0x60, 0x9d, 0xf1, 0x94, 0xd5, - 0x58, 0x48, 0x92, 0xb3, 0xde, 0x90, 0x10, 0xac, 0xd4, 0x92, 0xcc, 0xaa, 0x96, 0xcb, 0xac, 0xfe, - 0x6c, 0x04, 0x4e, 0x65, 0xc6, 0x3a, 0xcb, 0x40, 0xb4, 0xef, 0x15, 0x03, 0xa9, 0x7d, 0x4f, 0x18, - 0xc8, 0x48, 0x29, 0x06, 0xf2, 0x38, 0x4c, 0xd2, 0x31, 0x65, 0x73, 0xc3, 0x8f, 0x06, 0xa6, 0x32, - 0x74, 0x44, 0x19, 0x96, 0x50, 0xe4, 0x03, 0xea, 0xd9, 0x5d, 0xde, 0xac, 0x13, 0x1a, 0x7e, 0x78, - 0xcb, 0xee, 0x11, 0xc1, 0x6a, 0xfe, 0xda, 0xe1, 0x56, 0x2a, 0x6d, 0xc1, 0x39, 0xce, 0x4a, 0x06, - 0x13, 0xce, 0xc1, 0xae, 0xff, 0xe1, 0x28, 0x40, 0x73, 0x11, 0x7b, 0x21, 0xef, 0xec, 0xcb, 0x30, - 0xd6, 0xdf, 0x34, 0x82, 0x68, 0x15, 0x3d, 0x11, 0x2d, 0xc1, 0x35, 0x5a, 0x78, 0x6f, 0xaf, 0x3e, - 0xdf, 0xf4, 0x89, 0x45, 0xdc, 0xd0, 0x36, 0x9c, 0x20, 0x6a, 0xc4, 0x60, 0x98, 0xb7, 0xa3, 0xdf, - 0x40, 0x87, 0xb1, 0xe9, 0xf5, 0xfa, 0x0e, 0xa1, 0x50, 0xf6, 0x0d, 0xb5, 0x72, 0xdf, 0xb0, 0x9c, - 0xc1, 0x84, 0x73, 0xb0, 0x47, 0x34, 0xdb, 0xae, 0x1d, 0xda, 0x86, 0xa4, 0x39, 0x52, 0x9e, 0x66, - 0x12, 0x13, 0xce, 0xc1, 0x8e, 0xde, 0xd1, 0xe0, 0x7c, 0xb2, 0xf8, 0xaa, 0xed, 0xda, 0xc1, 0x26, - 0xb1, 0x18, 0xf1, 0xd1, 0x23, 0x13, 0xbf, 0xb4, 0xbf, 0x57, 0x3f, 0xbf, 0x5c, 0x88, 0x11, 0x0f, - 0xa1, 0x86, 0x7e, 0x51, 0x83, 0x0b, 0xa9, 0x71, 0xf1, 0xed, 0x6e, 0x97, 0xf8, 0xa2, 0x37, 0x47, - 0x5f, 0x42, 0xf5, 0xfd, 0xbd, 0xfa, 0x85, 0xe5, 0x62, 0x94, 0x78, 0x18, 0x3d, 0xfd, 0x5f, 0x68, - 0x30, 0xd2, 0xc4, 0x6d, 0xf4, 0xa1, 0x84, 0xde, 0xf6, 0x90, 0xaa, 0xb7, 0xdd, 0xdb, 0xab, 0x4f, - 0x34, 0x71, 0x5b, 0x51, 0xe1, 0x7e, 0x49, 0x83, 0x53, 0xa6, 0xe7, 0x86, 0x06, 0xed, 0x17, 0xe6, - 0x42, 0x4e, 0xc4, 0x4c, 0xcb, 0xa9, 0x2c, 0xcd, 0x14, 0xb6, 0xc6, 0xc3, 0xa2, 0x07, 0xa7, 0xd2, - 0x90, 0x00, 0x67, 0x49, 0xeb, 0xff, 0x56, 0x83, 0x99, 0xa6, 0xe3, 0x0d, 0xac, 0x35, 0xdf, 0xdb, - 0xb0, 0x1d, 0xf2, 0x1e, 0x51, 0xd4, 0xd4, 0x2e, 0x17, 0x1d, 0xc7, 0x4c, 0x6f, 0x52, 0x2b, 0xbe, - 0x57, 0xf4, 0x26, 0xb5, 0xcf, 0x05, 0x07, 0xe4, 0xaf, 0x4e, 0x24, 0x3f, 0x8d, 0x1d, 0x91, 0x8f, - 0xc3, 0xa4, 0x69, 0x34, 0x06, 0xae, 0xe5, 0x48, 0xc5, 0x89, 0x76, 0xb3, 0xb9, 0xc8, 0xcb, 0xb0, - 0x84, 0xa2, 0xb7, 0x01, 0x62, 0xd3, 0x97, 0x98, 0x88, 0x6b, 0x15, 0xed, 0x6d, 0x1d, 0x12, 0x86, - 0xb6, 0xdb, 0x0d, 0xe2, 0xd9, 0x8f, 0x61, 0x58, 0x21, 0x87, 0x3e, 0x05, 0xb3, 0x62, 0x98, 0xdb, - 0x3d, 0xa3, 0x2b, 0xcc, 0x0c, 0x65, 0xc7, 0x6a, 0x45, 0xc1, 0xd4, 0x38, 0x2b, 0x28, 0xcf, 0xaa, - 0xa5, 0x01, 0x4e, 0x92, 0x43, 0x77, 0x61, 0xa6, 0xa7, 0xda, 0x4e, 0x46, 0x2b, 0x88, 0x32, 0x8a, - 0x21, 0xa5, 0x71, 0x46, 0x50, 0x9f, 0x49, 0x98, 0x5d, 0x12, 0xb4, 0x72, 0xf4, 0xbf, 0xb1, 0x07, - 0xa5, 0xff, 0x6d, 0xc0, 0x04, 0x57, 0x81, 0x83, 0xf9, 0x71, 0xf6, 0x85, 0x3f, 0x5a, 0xea, 0x0b, - 0xb9, 0x3a, 0x1d, 0x1b, 0x74, 0xf9, 0xef, 0x00, 0x47, 0xc8, 0xd1, 0x1d, 0x98, 0xa1, 0x87, 0x7b, - 0x87, 0x38, 0xc4, 0x0c, 0x3d, 0x7f, 0x7e, 0xa2, 0x82, 0xbd, 0xb4, 0xa3, 0x20, 0xe2, 0x56, 0x34, - 0xb5, 0x04, 0x27, 0x08, 0x49, 0x1b, 0xc1, 0x64, 0xa1, 0x8d, 0x60, 0x1b, 0xa6, 0xb7, 0x15, 0x73, - 0xd6, 0x14, 0x1b, 0x86, 0x97, 0x4b, 0xf5, 0x2c, 0x36, 0x6e, 0x35, 0x4e, 0x0b, 0x4a, 0xd3, 0xaa, - 0x21, 0x4c, 0x25, 0xa4, 0xef, 0x4d, 0xc2, 0xa9, 0xa6, 0x33, 0x08, 0x42, 0xe2, 0x2f, 0x8a, 0x3b, - 0x09, 0xe2, 0xa3, 0x4f, 0x6b, 0x70, 0x8e, 0xfd, 0xdb, 0xf2, 0xee, 0xb8, 0x2d, 0xe2, 0x18, 0xbb, - 0x8b, 0x1b, 0xb4, 0x86, 0x65, 0x1d, 0x8d, 0x11, 0xb5, 0x06, 0x42, 0x9e, 0x64, 0x86, 0xb9, 0x4e, - 0x2e, 0x46, 0x5c, 0x40, 0x09, 0x7d, 0x4e, 0x83, 0x87, 0x73, 0x40, 0x2d, 0xe2, 0x90, 0x30, 0x12, - 0x61, 0x8e, 0xda, 0x8f, 0x47, 0xf6, 0xf7, 0xea, 0x0f, 0x77, 0x8a, 0x90, 0xe2, 0x62, 0x7a, 0xf4, - 0x38, 0x3c, 0x9f, 0x03, 0xbd, 0x6a, 0xd8, 0xce, 0xc0, 0x8f, 0xa4, 0x9b, 0xa3, 0x76, 0x87, 0x09, - 0x19, 0x9d, 0x42, 0xac, 0x78, 0x08, 0x45, 0xf4, 0xd3, 0x70, 0x56, 0x42, 0x6f, 0xbb, 0x2e, 0x21, - 0x56, 0x42, 0xd6, 0x39, 0x6a, 0x57, 0x1e, 0xde, 0xdf, 0xab, 0x9f, 0xed, 0xe4, 0x21, 0xc4, 0xf9, - 0x74, 0x50, 0x17, 0x1e, 0x89, 0x01, 0xa1, 0xed, 0xd8, 0x77, 0xb9, 0x38, 0xb6, 0xe9, 0x93, 0x60, - 0xd3, 0x73, 0x2c, 0xc6, 0x2f, 0xb4, 0xc6, 0xfb, 0xf7, 0xf7, 0xea, 0x8f, 0x74, 0x86, 0x55, 0xc4, - 0xc3, 0xf1, 0x20, 0x0b, 0x66, 0x02, 0xd3, 0x70, 0xdb, 0x6e, 0x48, 0xfc, 0x6d, 0xc3, 0x99, 0x1f, - 0x2f, 0xf5, 0x81, 0x7c, 0x8f, 0x2a, 0x78, 0x70, 0x02, 0x2b, 0x7a, 0x16, 0x26, 0xc9, 0x4e, 0xdf, - 0x70, 0x2d, 0xc2, 0x19, 0xc3, 0x54, 0xe3, 0x22, 0x3d, 0x92, 0x96, 0x44, 0xd9, 0xbd, 0xbd, 0xfa, - 0x4c, 0xf4, 0xff, 0x8a, 0x67, 0x11, 0x2c, 0x6b, 0xa3, 0x4f, 0xc2, 0x99, 0x9e, 0xb1, 0xb3, 0xea, - 0x59, 0x84, 0xf1, 0xb9, 0x20, 0x92, 0x78, 0x27, 0x4b, 0xf5, 0x73, 0x7e, 0x7f, 0xaf, 0x7e, 0x66, - 0x25, 0x07, 0x1f, 0xce, 0xa5, 0x42, 0xa7, 0xa1, 0x67, 0xec, 0x5c, 0xf3, 0x0d, 0x93, 0x6c, 0x0c, - 0x9c, 0x5b, 0xc4, 0xef, 0xd9, 0x2e, 0x57, 0x2a, 0x88, 0xe9, 0xb9, 0x16, 0xe5, 0x25, 0xda, 0xe3, - 0x63, 0x7c, 0x1a, 0x56, 0x86, 0x55, 0xc4, 0xc3, 0xf1, 0xa0, 0x67, 0x60, 0xc6, 0xee, 0xba, 0x9e, - 0x4f, 0x6e, 0x19, 0xb6, 0x1b, 0x06, 0xf3, 0xc0, 0x4c, 0xee, 0x6c, 0x58, 0xdb, 0x4a, 0x39, 0x4e, - 0xd4, 0xd2, 0xf7, 0x46, 0x60, 0xaa, 0xe9, 0xb9, 0x96, 0xcd, 0xf4, 0x99, 0x27, 0x13, 0xc6, 0xd2, - 0x47, 0x54, 0x46, 0x78, 0x6f, 0xaf, 0x3e, 0x2b, 0x2b, 0x2a, 0x9c, 0xf1, 0x39, 0x69, 0xa9, 0xe0, - 0xba, 0xf1, 0xfb, 0x93, 0x16, 0x86, 0x7b, 0x7b, 0xf5, 0x13, 0xb2, 0x59, 0xd2, 0xe8, 0x80, 0xb6, - 0xb9, 0x22, 0x72, 0xcb, 0x37, 0xdc, 0xc0, 0xae, 0xa0, 0x88, 0x48, 0x15, 0x73, 0x39, 0x83, 0x0d, - 0xe7, 0x50, 0x40, 0x6f, 0xc2, 0x1c, 0x2d, 0xbd, 0xdd, 0xb7, 0x8c, 0x90, 0x94, 0xd4, 0x3f, 0xce, - 0x09, 0x9a, 0x73, 0xcb, 0x09, 0x4c, 0x38, 0x85, 0x99, 0x1b, 0x97, 0x8d, 0xc0, 0x73, 0xd9, 0x76, - 0x4b, 0x18, 0x97, 0x69, 0x29, 0x16, 0x50, 0xf4, 0x04, 0x4c, 0xf4, 0x48, 0x10, 0x18, 0x5d, 0xc2, - 0xf6, 0xcf, 0x54, 0x7c, 0x4c, 0xae, 0xf0, 0x62, 0x1c, 0xc1, 0xd1, 0x87, 0x61, 0xcc, 0xf4, 0x2c, - 0x12, 0xcc, 0x4f, 0xb0, 0x19, 0xa6, 0x6a, 0xd8, 0x58, 0x93, 0x16, 0xdc, 0xdb, 0xab, 0x4f, 0x31, - 0x85, 0x9c, 0xfe, 0xc2, 0xbc, 0x92, 0xfe, 0x1b, 0x54, 0x74, 0x4d, 0x09, 0xeb, 0x45, 0x37, 0x44, - 0x7c, 0x5a, 0x99, 0x7a, 0x71, 0x7c, 0xe6, 0x65, 0xfd, 0xf3, 0x54, 0x71, 0xf0, 0xdc, 0xd0, 0xf7, - 0x9c, 0x35, 0xc7, 0x70, 0x09, 0xfa, 0xac, 0x06, 0x27, 0x37, 0xed, 0xee, 0xa6, 0x7a, 0xb1, 0x25, - 0x0e, 0xb6, 0x72, 0x32, 0xfe, 0xf5, 0x14, 0xb2, 0xc6, 0x99, 0xfd, 0xbd, 0xfa, 0xc9, 0x74, 0x29, - 0xce, 0x10, 0xd5, 0x7f, 0xa1, 0x06, 0x67, 0x44, 0xd7, 0x1c, 0x7a, 0xd4, 0xf4, 0x1d, 0x6f, 0xb7, - 0x47, 0xdc, 0xe3, 0xb8, 0x84, 0x8a, 0x64, 0x92, 0x5a, 0xa1, 0x4c, 0xd2, 0xcb, 0x4c, 0xd1, 0x48, - 0x99, 0x29, 0x92, 0x2b, 0xf9, 0x80, 0x69, 0xfa, 0x73, 0x0d, 0xe6, 0xf3, 0xc6, 0xe2, 0x18, 0x74, - 0x21, 0x37, 0xa9, 0x0b, 0xb5, 0x4b, 0xab, 0xb7, 0xe9, 0xbe, 0x17, 0xe8, 0x44, 0x7f, 0x5e, 0x83, - 0x73, 0x71, 0xf5, 0xb6, 0x1b, 0x84, 0x86, 0xe3, 0x70, 0x8b, 0xcf, 0x83, 0x9f, 0xf8, 0xb7, 0x12, - 0x4a, 0xed, 0xcd, 0x8a, 0xdf, 0xaa, 0x76, 0xbe, 0xd0, 0xda, 0xbc, 0x9b, 0xb2, 0x36, 0xbf, 0x7a, - 0x3f, 0x89, 0x0e, 0x37, 0x3c, 0xff, 0x57, 0x0d, 0xce, 0xe7, 0x37, 0x3c, 0x86, 0x75, 0xd5, 0x4f, - 0xae, 0xab, 0x1b, 0xf7, 0xf1, 0xb3, 0x0b, 0x56, 0xd6, 0x57, 0x6a, 0x45, 0x9f, 0xcb, 0xf4, 0xee, - 0x0d, 0x38, 0x41, 0x95, 0xa1, 0x20, 0x14, 0x06, 0xd2, 0xa3, 0x39, 0x0b, 0x44, 0x16, 0xa3, 0x13, - 0x38, 0x89, 0x03, 0xa7, 0x91, 0xa2, 0x55, 0x98, 0xa0, 0x0a, 0x10, 0xc5, 0x5f, 0x3b, 0x3c, 0x7e, - 0x79, 0x24, 0x75, 0x78, 0x5b, 0x1c, 0x21, 0x41, 0x3f, 0x0e, 0xb3, 0x96, 0xdc, 0x54, 0x07, 0xdc, - 0x12, 0xa6, 0xb1, 0x32, 0x5b, 0x76, 0x4b, 0x6d, 0x8d, 0x93, 0xc8, 0xf4, 0xff, 0xab, 0xc1, 0xc5, - 0x61, 0x8b, 0x0b, 0xf9, 0x00, 0x66, 0x24, 0x63, 0x70, 0x67, 0x91, 0xb2, 0xd6, 0x6e, 0x29, 0xaa, - 0xc4, 0x9b, 0x54, 0x16, 0x05, 0x58, 0xa1, 0x92, 0x73, 0x13, 0x59, 0x7b, 0x40, 0x37, 0x91, 0xfa, - 0x5f, 0x68, 0x2a, 0x3b, 0x52, 0x27, 0xf7, 0x3d, 0xc7, 0x8e, 0xd4, 0xce, 0x17, 0x5a, 0xdb, 0xfe, - 0xa8, 0x06, 0x97, 0xf3, 0x9b, 0x28, 0x27, 0xf0, 0x2b, 0x30, 0xde, 0xe7, 0x3e, 0x3d, 0x23, 0xec, - 0x84, 0x7c, 0x9c, 0x32, 0x17, 0xee, 0x70, 0x73, 0x6f, 0xaf, 0x7e, 0x3e, 0x8f, 0xdb, 0x0b, 0x57, - 0x1d, 0xd1, 0x0e, 0xd9, 0x29, 0x73, 0x03, 0x17, 0x02, 0x9f, 0x3e, 0x24, 0x7f, 0x31, 0xd6, 0x89, - 0x73, 0x68, 0x03, 0xc3, 0xa7, 0x35, 0x98, 0x4b, 0xac, 0xe9, 0x60, 0x7e, 0x8c, 0xad, 0xd2, 0x72, - 0x97, 0x41, 0x89, 0xdd, 0x12, 0x1f, 0xe0, 0x89, 0xe2, 0x00, 0xa7, 0x28, 0xa6, 0x58, 0xad, 0x3a, - 0xac, 0xef, 0x3d, 0x56, 0xab, 0xf6, 0xbe, 0x80, 0xd5, 0xfe, 0x7a, 0xad, 0xe8, 0x73, 0x19, 0xab, - 0xdd, 0x81, 0xa9, 0xc8, 0xc3, 0x32, 0x62, 0x19, 0xd7, 0x2a, 0x77, 0x8a, 0xe3, 0x8b, 0x1d, 0x1f, - 0xa2, 0x92, 0x00, 0xc7, 0xc4, 0xd0, 0xcf, 0x69, 0x00, 0xf1, 0xd4, 0x88, 0x8d, 0x75, 0xfb, 0x3e, - 0x0e, 0x88, 0x22, 0xdf, 0xcc, 0xd1, 0x7d, 0xad, 0xac, 0x0b, 0x85, 0xb0, 0xfe, 0xe5, 0x11, 0x40, - 0xd9, 0xce, 0x53, 0xc1, 0x73, 0xcb, 0x76, 0xad, 0xb4, 0x6e, 0x70, 0xc3, 0x76, 0x2d, 0xcc, 0x20, - 0x87, 0x10, 0x4d, 0x5f, 0x84, 0x13, 0x5d, 0xc7, 0x5b, 0x37, 0x1c, 0x67, 0x57, 0xb8, 0x6d, 0x0a, - 0xf7, 0xbf, 0xd3, 0xf4, 0x78, 0xba, 0x96, 0x04, 0xe1, 0x74, 0x5d, 0xd4, 0x87, 0x93, 0x3e, 0xd5, - 0x6a, 0x4d, 0xdb, 0x61, 0x5a, 0x94, 0x37, 0x08, 0x4b, 0x9a, 0x4d, 0x98, 0xa0, 0x8f, 0x53, 0xb8, - 0x70, 0x06, 0x3b, 0xfa, 0x00, 0x4c, 0xf4, 0x7d, 0xbb, 0x67, 0xf8, 0xbb, 0x4c, 0x4f, 0x9b, 0x6c, - 0x4c, 0xd3, 0x73, 0x6e, 0x8d, 0x17, 0xe1, 0x08, 0x86, 0x7e, 0x0a, 0xa6, 0x1c, 0x7b, 0x83, 0x98, - 0xbb, 0xa6, 0x43, 0x84, 0x9d, 0x63, 0xed, 0x3e, 0x2d, 0x9a, 0xe5, 0x08, 0xaf, 0xb8, 0x67, 0x8d, - 0x7e, 0xe2, 0x98, 0xa2, 0xfe, 0x4e, 0x0d, 0x2e, 0x0c, 0x69, 0x89, 0x30, 0x5d, 0xd3, 0xe2, 0xcb, - 0xc4, 0xfc, 0x3d, 0xc3, 0x97, 0xa1, 0x28, 0xbc, 0xb7, 0x57, 0x7f, 0x74, 0x08, 0x82, 0x0e, 0x5d, - 0x40, 0xa4, 0xbb, 0x8b, 0x63, 0x34, 0xa8, 0x0d, 0xe3, 0x56, 0x6c, 0xd2, 0x9b, 0x6a, 0x3c, 0x49, - 0xf9, 0x2c, 0x37, 0xba, 0x1d, 0x16, 0x9b, 0x40, 0x80, 0x96, 0x61, 0x82, 0x5f, 0xa9, 0x12, 0xc1, - 0xb3, 0x9f, 0x62, 0xfa, 0x2d, 0x2f, 0x3a, 0x2c, 0xb2, 0x08, 0x85, 0xfe, 0xbf, 0x35, 0x98, 0x68, - 0x7a, 0x3e, 0x69, 0xad, 0x76, 0xd0, 0x5d, 0x98, 0x56, 0x5c, 0xb6, 0x05, 0xfb, 0x2a, 0xbb, 0x9d, - 0x19, 0xca, 0xc5, 0x18, 0x5d, 0xe4, 0xec, 0x29, 0x0b, 0xb0, 0x4a, 0x0c, 0xf9, 0x74, 0xd0, 0xef, - 0xf8, 0x76, 0x48, 0x29, 0x57, 0xba, 0x89, 0xe2, 0x94, 0x71, 0x84, 0x8c, 0x2f, 0x04, 0xf9, 0x13, - 0xc7, 0x64, 0xf4, 0x35, 0xba, 0x73, 0xd3, 0xfd, 0x44, 0xcf, 0xc3, 0x68, 0xcf, 0xb3, 0xa2, 0x99, - 0xff, 0x60, 0xb4, 0x2f, 0x57, 0x3c, 0x8b, 0x8e, 0xee, 0xb9, 0x6c, 0x0b, 0x66, 0x28, 0x63, 0x6d, - 0xf4, 0x55, 0x38, 0x99, 0xa6, 0x8f, 0x9e, 0x87, 0x39, 0xd3, 0xeb, 0xf5, 0x3c, 0xb7, 0x33, 0xd8, - 0xd8, 0xb0, 0x77, 0x48, 0xc2, 0x0f, 0xb7, 0x99, 0x80, 0xe0, 0x54, 0x4d, 0xfd, 0xd7, 0x34, 0x18, - 0xa1, 0x33, 0xa3, 0xc3, 0xb8, 0xe5, 0xf5, 0x0c, 0xdb, 0x15, 0xbd, 0x62, 0x5e, 0xc2, 0x2d, 0x56, - 0x82, 0x05, 0x04, 0xbd, 0x05, 0x53, 0x91, 0xc4, 0x53, 0xcd, 0x1d, 0xa4, 0xb5, 0xda, 0x91, 0xbe, - 0x73, 0x92, 0x07, 0x47, 0x25, 0x01, 0x8e, 0xa9, 0xe8, 0x06, 0x9c, 0x6a, 0xad, 0x76, 0xda, 0xae, - 0xe9, 0x0c, 0x2c, 0xb2, 0xb4, 0xc3, 0xfe, 0x50, 0x26, 0x60, 0xf3, 0x12, 0xf1, 0xa1, 0x8c, 0x09, - 0x88, 0x4a, 0x38, 0x82, 0xd1, 0x6a, 0x84, 0xb7, 0x10, 0xce, 0xb2, 0xac, 0x9a, 0x40, 0x82, 0x23, - 0x98, 0xfe, 0xc7, 0x35, 0x98, 0x56, 0x3a, 0x84, 0x7a, 0x30, 0xc1, 0xbf, 0x37, 0xf2, 0x59, 0xbb, - 0x5a, 0xf6, 0x1b, 0x93, 0xdd, 0xe6, 0xe4, 0xf9, 0x90, 0x06, 0x38, 0xa2, 0xa1, 0x72, 0xb4, 0xda, - 0x10, 0x8e, 0xb6, 0x00, 0xc0, 0x5d, 0xf2, 0x98, 0xc3, 0x05, 0xdf, 0x96, 0xec, 0xd0, 0xe8, 0xc8, - 0x52, 0xac, 0xd4, 0x40, 0x17, 0x05, 0xef, 0x57, 0xbc, 0xf6, 0x14, 0xbe, 0xdf, 0x85, 0xb1, 0xbb, - 0x9e, 0x4b, 0x02, 0x71, 0x17, 0x75, 0xbf, 0xbe, 0x70, 0x8a, 0x1e, 0xee, 0x6f, 0x50, 0xc4, 0x98, - 0xe3, 0xd7, 0xbf, 0xa8, 0x01, 0xb4, 0x8c, 0xd0, 0xe0, 0x17, 0x27, 0x87, 0xf0, 0x78, 0xbe, 0x98, - 0x38, 0xb3, 0x26, 0x33, 0x2e, 0xa0, 0xa3, 0x81, 0x7d, 0x37, 0xfa, 0x7e, 0x29, 0x10, 0x73, 0xec, - 0x1d, 0xfb, 0x2e, 0xc1, 0x0c, 0x8e, 0x3e, 0x04, 0x53, 0xc4, 0x35, 0xfd, 0xdd, 0x7e, 0x28, 0x1c, - 0x17, 0x27, 0xf9, 0x26, 0x5d, 0x8a, 0x0a, 0x71, 0x0c, 0xd7, 0x9f, 0x84, 0xa4, 0x5a, 0x73, 0x70, - 0x2f, 0xf5, 0x7b, 0x1a, 0x9c, 0x5c, 0xda, 0xe9, 0xdb, 0x3e, 0xf3, 0x82, 0x26, 0x3e, 0x55, 0x11, - 0xd0, 0x13, 0x30, 0xb1, 0xcd, 0xff, 0x15, 0x2d, 0xa5, 0x1e, 0x26, 0x6a, 0xe0, 0x08, 0x8e, 0x36, - 0x60, 0x8e, 0xb0, 0xe6, 0x4c, 0x0c, 0x30, 0xc2, 0x32, 0xae, 0x24, 0xdc, 0xcb, 0x3e, 0x81, 0x05, - 0xa7, 0xb0, 0xa2, 0x0e, 0xcc, 0x99, 0x8e, 0x11, 0x04, 0xf6, 0x86, 0x6d, 0xc6, 0xce, 0x3e, 0x53, - 0x8d, 0x0f, 0x31, 0xce, 0x90, 0x80, 0xdc, 0xdb, 0xab, 0x9f, 0x15, 0xfd, 0x4c, 0x02, 0x70, 0x0a, - 0x85, 0xfe, 0x6e, 0x0d, 0x66, 0x97, 0x76, 0xfa, 0x5e, 0x30, 0xf0, 0x09, 0xab, 0x7a, 0x0c, 0xda, - 0xcd, 0x13, 0x30, 0xb1, 0x69, 0xb8, 0x96, 0x43, 0x7c, 0xb1, 0x32, 0xe4, 0xd8, 0x5e, 0xe7, 0xc5, - 0x38, 0x82, 0xa3, 0x4f, 0x02, 0x04, 0xe6, 0x26, 0xb1, 0x06, 0xec, 0x88, 0xe1, 0x0a, 0xee, 0x72, - 0xa9, 0x05, 0x9e, 0xf8, 0xc8, 0x8e, 0xc4, 0x29, 0xf6, 0x9d, 0xfc, 0x8d, 0x15, 0x7a, 0xfa, 0x1f, - 0x6b, 0x70, 0x2a, 0xd1, 0xee, 0x18, 0x64, 0xf6, 0x6e, 0x52, 0x66, 0x6f, 0x54, 0xff, 0xd8, 0x02, - 0x51, 0xfd, 0x9d, 0x1a, 0x3c, 0x54, 0x30, 0x28, 0x99, 0x4b, 0x61, 0xed, 0xb8, 0x2e, 0x85, 0xb7, - 0x61, 0x3a, 0xf4, 0x1c, 0xe1, 0x96, 0x16, 0x8d, 0x41, 0xb9, 0x2b, 0xdf, 0x5b, 0x12, 0x4f, 0x7c, - 0xe5, 0x1b, 0x97, 0x05, 0x58, 0x25, 0xa4, 0x7f, 0x5d, 0x83, 0x29, 0x69, 0x1f, 0x38, 0x84, 0xfb, - 0xfa, 0x31, 0x3a, 0x82, 0x1f, 0xfe, 0x39, 0xcf, 0xbf, 0xac, 0xc1, 0x39, 0x89, 0x3b, 0x12, 0xe6, - 0x3a, 0x21, 0xe5, 0x1d, 0x07, 0xeb, 0x17, 0x17, 0x05, 0x9f, 0x54, 0x78, 0xb5, 0xc2, 0xc9, 0xe9, - 0xc1, 0x36, 0xf0, 0xfb, 0x5e, 0x10, 0xb1, 0x6b, 0x7e, 0xb0, 0xf1, 0x22, 0x1c, 0xc1, 0xd0, 0x2a, - 0x8c, 0x05, 0x94, 0x9e, 0x50, 0x1c, 0x8e, 0x38, 0x1a, 0xec, 0xc4, 0x61, 0xfd, 0xc5, 0x1c, 0x0d, - 0x7a, 0x5b, 0xd5, 0x17, 0xb9, 0xf2, 0xfe, 0x63, 0x47, 0x5b, 0x0c, 0xec, 0x95, 0xe2, 0x02, 0xfd, - 0x12, 0x2b, 0x1a, 0x91, 0x1c, 0x5f, 0xf9, 0x3c, 0x95, 0x51, 0x5f, 0x86, 0x93, 0xe2, 0x5e, 0x99, - 0x2f, 0x1b, 0xd7, 0x24, 0xe8, 0xd9, 0xc4, 0xca, 0x78, 0x2c, 0x75, 0x57, 0x77, 0x26, 0x5d, 0x3f, - 0x5e, 0x31, 0x7a, 0x00, 0x93, 0xd7, 0x44, 0x27, 0xd1, 0x79, 0xa8, 0xd9, 0xd1, 0x5c, 0x80, 0xc0, - 0x51, 0x6b, 0xb7, 0x70, 0xcd, 0xb6, 0xe4, 0x79, 0x55, 0x2b, 0x3c, 0x55, 0x95, 0xa3, 0x69, 0x64, - 0xf8, 0xd1, 0xa4, 0xff, 0xa7, 0x1a, 0x9c, 0x89, 0xa8, 0x46, 0xdf, 0xd8, 0x12, 0x17, 0x1d, 0x07, - 0x9c, 0xdd, 0x07, 0xeb, 0x9b, 0x37, 0x61, 0x94, 0xf1, 0xc0, 0x52, 0x17, 0x20, 0x12, 0x21, 0xed, - 0x0e, 0x66, 0x88, 0xd0, 0x4f, 0xc1, 0xb8, 0x63, 0xac, 0x13, 0x27, 0xf2, 0xe9, 0x29, 0xa7, 0x9e, - 0xe7, 0x7d, 0x2f, 0xb7, 0x1c, 0x05, 0xdc, 0x67, 0x59, 0x5a, 0xc5, 0x79, 0x21, 0x16, 0x44, 0xcf, - 0x3f, 0x07, 0xd3, 0x4a, 0x35, 0x74, 0x12, 0x46, 0xb6, 0x08, 0xbf, 0x02, 0x9b, 0xc2, 0xf4, 0x5f, - 0x74, 0x06, 0xc6, 0xb6, 0x0d, 0x67, 0x20, 0xc6, 0x04, 0xf3, 0x1f, 0xcf, 0xd7, 0x9e, 0xd5, 0xf4, - 0x2f, 0x6b, 0x30, 0x7d, 0xdd, 0x5e, 0x27, 0x3e, 0xbf, 0x1d, 0x66, 0xd2, 0x6a, 0xe2, 0x41, 0xe5, - 0x74, 0xde, 0x63, 0x4a, 0xb4, 0x0b, 0x53, 0xe2, 0xb4, 0x91, 0x5e, 0x84, 0xd7, 0x4b, 0xde, 0xb5, - 0x49, 0xda, 0x82, 0x8b, 0xab, 0x0f, 0x41, 0x22, 0x12, 0x38, 0xa6, 0xa6, 0xbf, 0x0d, 0xa7, 0x73, - 0x1a, 0xa1, 0x3a, 0xdb, 0xc0, 0x7e, 0x28, 0x16, 0x46, 0xb4, 0x23, 0xfd, 0x10, 0xf3, 0x72, 0xf4, - 0x30, 0x8c, 0x10, 0x37, 0x72, 0xc9, 0x9e, 0xd8, 0xdf, 0xab, 0x8f, 0x2c, 0xb9, 0x16, 0xa6, 0x65, - 0x94, 0x51, 0x39, 0x5e, 0x42, 0x32, 0x61, 0x8c, 0x6a, 0x59, 0x94, 0x61, 0x09, 0xd5, 0xbf, 0xa0, - 0x41, 0xe6, 0x22, 0x10, 0x7d, 0x4e, 0x83, 0x93, 0x1b, 0xa9, 0xfd, 0x53, 0xe9, 0x02, 0x32, 0xbd, - 0x19, 0x1b, 0xf3, 0x62, 0x44, 0x32, 0xdb, 0x1a, 0x67, 0x08, 0xeb, 0xff, 0x74, 0x14, 0x1e, 0xb9, - 0xee, 0xf9, 0xf6, 0x5d, 0xcf, 0x0d, 0x0d, 0x67, 0xcd, 0xb3, 0x62, 0x4f, 0x20, 0xc1, 0x97, 0x7f, - 0x4e, 0x83, 0x87, 0xcc, 0xfe, 0x80, 0xbb, 0xbb, 0x46, 0x0e, 0x1a, 0x6b, 0xc4, 0xb7, 0xbd, 0xb2, - 0x0e, 0x41, 0xec, 0xfd, 0x5f, 0x73, 0xed, 0x76, 0x1e, 0x4a, 0x5c, 0x44, 0x8b, 0xf9, 0x25, 0x59, - 0xde, 0x1d, 0x97, 0x75, 0xae, 0x13, 0xb2, 0xe1, 0xbc, 0x1b, 0xcf, 0x42, 0x49, 0xbf, 0xa4, 0x56, - 0x2e, 0x46, 0x5c, 0x40, 0x09, 0xfd, 0x34, 0x9c, 0xb5, 0x79, 0xe7, 0x30, 0x31, 0x2c, 0xdb, 0x25, - 0x41, 0xc0, 0xbc, 0x73, 0xaa, 0x38, 0xde, 0xb4, 0xf3, 0x10, 0xe2, 0x7c, 0x3a, 0xe8, 0x27, 0x00, - 0x82, 0x5d, 0xd7, 0x14, 0xe3, 0x3f, 0x56, 0x8a, 0x2a, 0x17, 0x05, 0x25, 0x16, 0xac, 0x60, 0xa4, - 0x4a, 0x48, 0x28, 0x57, 0xe5, 0x38, 0x73, 0xe2, 0x61, 0x4a, 0x48, 0xbc, 0x86, 0x62, 0xb8, 0xfe, - 0xdb, 0x1a, 0x4c, 0x88, 0x67, 0xc1, 0xe8, 0x83, 0x29, 0x5d, 0x5c, 0x72, 0x9f, 0x94, 0x3e, 0x7e, - 0x97, 0x5d, 0xa7, 0x08, 0x4b, 0x8c, 0x90, 0x26, 0xca, 0xa9, 0x72, 0x82, 0x72, 0x6c, 0xd7, 0x49, - 0x5c, 0xab, 0x44, 0xb6, 0x1e, 0x85, 0x1a, 0xdd, 0x8f, 0xa7, 0x32, 0xad, 0x0e, 0x21, 0x33, 0x1c, - 0xa3, 0xbf, 0xc2, 0xd7, 0xe6, 0x80, 0xbd, 0x01, 0x5f, 0x5c, 0x6b, 0x77, 0x88, 0xbf, 0x2d, 0x77, - 0x21, 0xe5, 0x1a, 0xb1, 0x73, 0xaa, 0xe8, 0x45, 0x15, 0xae, 0x71, 0x23, 0x85, 0x2c, 0xe6, 0x1a, - 0x69, 0x08, 0xce, 0x10, 0x46, 0xef, 0x68, 0x70, 0xd2, 0x48, 0xbe, 0x01, 0x8f, 0x18, 0x7b, 0xb9, - 0x67, 0x4b, 0xa9, 0x07, 0xe5, 0x71, 0x67, 0x52, 0x80, 0x00, 0x67, 0xe8, 0xa2, 0x67, 0x60, 0xc6, - 0xe8, 0xdb, 0x8b, 0x03, 0xcb, 0xa6, 0xc2, 0x4e, 0xf4, 0x1c, 0x98, 0x49, 0xe0, 0x8b, 0x6b, 0x6d, - 0x59, 0x8e, 0x13, 0xb5, 0xe4, 0xdb, 0x6d, 0x31, 0x94, 0xa3, 0x55, 0xdf, 0x6e, 0x8b, 0x51, 0x8c, - 0xdf, 0x6e, 0x8b, 0xc1, 0x53, 0xa9, 0xa0, 0x8f, 0xc3, 0xc3, 0xfc, 0x4c, 0x6c, 0x18, 0x81, 0x6d, - 0x2e, 0x0e, 0xc2, 0x4d, 0xe2, 0x86, 0x91, 0x96, 0xcb, 0x6d, 0xc3, 0xcc, 0x4b, 0x71, 0xa9, 0xa8, - 0x12, 0x2e, 0x6e, 0x8f, 0x3c, 0x00, 0xcf, 0xb6, 0x4c, 0xf1, 0x41, 0xdc, 0x80, 0x5c, 0x4e, 0xa5, - 0xb8, 0xd9, 0x6e, 0x35, 0xc5, 0xf7, 0x30, 0x5e, 0x11, 0xff, 0xc6, 0x0a, 0x09, 0xf4, 0x79, 0x0d, - 0x66, 0xc5, 0x42, 0x17, 0x44, 0x27, 0xd8, 0x12, 0xf8, 0x78, 0xe9, 0x05, 0x99, 0x5a, 0xf5, 0x0b, - 0x58, 0xc5, 0xce, 0xa5, 0x1a, 0xe9, 0x3c, 0x9d, 0x80, 0xe1, 0x64, 0x47, 0xd0, 0xaf, 0x68, 0x70, - 0x26, 0x20, 0xfe, 0xb6, 0x6d, 0x92, 0x45, 0xd3, 0xf4, 0x06, 0x6e, 0x34, 0xcf, 0x93, 0x15, 0x9e, - 0xd1, 0x76, 0x72, 0x10, 0x72, 0x97, 0xbd, 0x3c, 0x08, 0xce, 0xed, 0x00, 0xfa, 0xeb, 0x1a, 0x9c, - 0xb8, 0x63, 0x84, 0xe6, 0x66, 0xd3, 0x30, 0x37, 0x99, 0xf9, 0x87, 0x7b, 0xe9, 0x95, 0xdd, 0x39, - 0xaf, 0x27, 0x71, 0xf1, 0x4b, 0x90, 0x54, 0x21, 0x4e, 0x53, 0x44, 0x21, 0x4c, 0xfa, 0xe4, 0xad, - 0x01, 0x09, 0x98, 0x2f, 0x9f, 0x76, 0x74, 0x7d, 0x23, 0x6f, 0xd2, 0xb0, 0xc0, 0xc8, 0xe5, 0xa1, - 0xe8, 0x17, 0x96, 0x94, 0x50, 0x17, 0x1e, 0xe1, 0xcb, 0x77, 0xd1, 0xf5, 0xdc, 0xdd, 0x9e, 0x37, - 0x08, 0x52, 0x5b, 0x60, 0x9a, 0x6d, 0x01, 0xe6, 0xae, 0xb8, 0x34, 0xac, 0x22, 0x1e, 0x8e, 0x07, - 0x7d, 0x14, 0x26, 0xc9, 0x36, 0x71, 0xc3, 0x5b, 0xb7, 0x96, 0xe7, 0x67, 0x4a, 0x9d, 0x91, 0xec, - 0x13, 0x96, 0x04, 0x0e, 0x2c, 0xb1, 0xa1, 0x3e, 0x4c, 0x38, 0x5e, 0xb7, 0x6b, 0xbb, 0xdd, 0xf9, - 0xd9, 0x0a, 0x4b, 0x29, 0x31, 0x6e, 0xcb, 0x1c, 0x21, 0x17, 0x9e, 0xc5, 0x0f, 0x1c, 0x91, 0x41, - 0x7d, 0xb8, 0x6c, 0x91, 0x0d, 0x63, 0xe0, 0x84, 0xab, 0x5e, 0x48, 0xa5, 0x81, 0xdd, 0x58, 0xbb, - 0x8f, 0xdc, 0x3c, 0xe7, 0xd8, 0x6b, 0xb8, 0xc7, 0xf6, 0xf7, 0xea, 0x97, 0x5b, 0x07, 0xd4, 0xc5, - 0x07, 0x62, 0x43, 0xbb, 0xf0, 0xa8, 0xa8, 0x73, 0xdb, 0xf5, 0x89, 0x61, 0x6e, 0xd2, 0xa1, 0xce, - 0x12, 0x3d, 0xc1, 0x88, 0xfe, 0xc0, 0xfe, 0x5e, 0xfd, 0xd1, 0xd6, 0xc1, 0xd5, 0xf1, 0x61, 0x70, - 0x9e, 0x7f, 0x05, 0x50, 0x76, 0xcf, 0x1f, 0xa4, 0xa2, 0x4c, 0xaa, 0x2a, 0xca, 0x2f, 0x69, 0x70, - 0x26, 0x6f, 0x74, 0xa9, 0x64, 0xb3, 0x4d, 0xfc, 0x75, 0x2f, 0x88, 0x1c, 0xfe, 0xc6, 0xb8, 0x64, - 0xf3, 0x5a, 0x54, 0x88, 0x63, 0x38, 0x6a, 0xc3, 0xe9, 0xcd, 0x30, 0xec, 0x2f, 0x9a, 0x26, 0x09, - 0x02, 0x59, 0x83, 0x51, 0x1b, 0xe3, 0x81, 0x5a, 0xae, 0xdf, 0xba, 0xb5, 0x96, 0x02, 0xe3, 0xbc, - 0x36, 0xfa, 0x57, 0x35, 0x38, 0x9b, 0xbb, 0x4d, 0x10, 0x86, 0x73, 0xcc, 0xab, 0xd7, 0x5d, 0x19, - 0x84, 0x46, 0x68, 0xbb, 0xdd, 0xb6, 0xbb, 0xe1, 0xd8, 0xdd, 0xcd, 0x50, 0x74, 0x8f, 0x09, 0xa8, - 0x2b, 0xb9, 0x35, 0x70, 0x41, 0x4b, 0xda, 0xf1, 0x9e, 0xb1, 0x93, 0x41, 0xa8, 0x74, 0x7c, 0x25, - 0x0b, 0xc6, 0x79, 0x6d, 0xf4, 0x5f, 0x1b, 0x83, 0x0b, 0xb4, 0xe3, 0xb1, 0xa8, 0xb4, 0x62, 0xb8, - 0x46, 0xf7, 0xfb, 0x54, 0x24, 0xf9, 0xb2, 0x06, 0x0f, 0x6d, 0xe6, 0x2b, 0x32, 0x42, 0x5a, 0xc3, - 0xe5, 0x54, 0xce, 0x61, 0xca, 0x11, 0x67, 0x55, 0x43, 0xab, 0xe0, 0xa2, 0x5e, 0xa1, 0x57, 0xe0, - 0xa4, 0xeb, 0x59, 0xa4, 0xd9, 0x6e, 0xe1, 0x15, 0x23, 0xd8, 0xea, 0x44, 0x77, 0x04, 0x63, 0xfc, - 0x62, 0x79, 0x35, 0x05, 0xc3, 0x99, 0xda, 0x68, 0x1b, 0x50, 0xdf, 0xb3, 0x96, 0xb6, 0x6d, 0x33, - 0x72, 0x3f, 0x2e, 0x7f, 0x99, 0xcd, 0x1e, 0x5c, 0xae, 0x65, 0xb0, 0xe1, 0x1c, 0x0a, 0x4c, 0x15, - 0xa3, 0x9d, 0x59, 0xf1, 0x5c, 0x3b, 0xf4, 0x7c, 0xe6, 0x37, 0x5e, 0x49, 0x23, 0x61, 0x2b, 0x7d, - 0x35, 0x17, 0x23, 0x2e, 0xa0, 0xa4, 0xff, 0x0f, 0x0d, 0x4e, 0xd0, 0x75, 0xb1, 0xe6, 0x7b, 0x3b, - 0xbb, 0xdf, 0x97, 0x4b, 0xf2, 0x09, 0x71, 0x65, 0xca, 0x8d, 0x08, 0x67, 0x95, 0xeb, 0xd2, 0x29, - 0xd6, 0xe9, 0xf8, 0x86, 0x54, 0x35, 0xa4, 0x8c, 0x14, 0x1b, 0x52, 0xf4, 0xcf, 0xd7, 0xb8, 0x76, - 0x10, 0xd9, 0x31, 0xbe, 0x3f, 0xb7, 0xe2, 0x8f, 0xc0, 0x2c, 0x2d, 0x5b, 0x31, 0x76, 0xd6, 0x5a, - 0xaf, 0x79, 0x4e, 0xe4, 0xbc, 0xcf, 0x7c, 0xf1, 0x6e, 0xa8, 0x00, 0x9c, 0xac, 0x87, 0x9e, 0x87, - 0x89, 0x3e, 0x7f, 0x28, 0x28, 0x0c, 0x2b, 0x97, 0xf9, 0xb5, 0x22, 0x2b, 0xba, 0xb7, 0x57, 0x3f, - 0x15, 0x9b, 0xee, 0x45, 0x21, 0x8e, 0x1a, 0xe8, 0xef, 0x9e, 0x01, 0x86, 0xdc, 0x21, 0xe1, 0xf7, - 0xe5, 0xa0, 0x3c, 0x09, 0xd3, 0x66, 0x7f, 0xd0, 0xbc, 0xda, 0x79, 0x75, 0xe0, 0x85, 0x86, 0xb8, - 0x36, 0x65, 0xda, 0x42, 0x73, 0xed, 0x76, 0x54, 0x8c, 0xd5, 0x3a, 0x94, 0x41, 0x98, 0xfd, 0x81, - 0x60, 0xba, 0x6b, 0xaa, 0x3f, 0x1a, 0x63, 0x10, 0xcd, 0xb5, 0xdb, 0x09, 0x18, 0xce, 0xd4, 0x46, - 0x3f, 0xa3, 0xc1, 0x0c, 0x11, 0x9b, 0xf7, 0xba, 0xe1, 0x5b, 0x82, 0x37, 0x94, 0x97, 0xf5, 0xe4, - 0xe8, 0x46, 0x2c, 0x81, 0xeb, 0x59, 0x4b, 0x0a, 0x0d, 0x9c, 0xa0, 0xc8, 0x54, 0x1e, 0xf1, 0x9b, - 0x4e, 0xb4, 0x67, 0xa5, 0xb9, 0xc5, 0x98, 0x50, 0x79, 0x8a, 0x2a, 0xe1, 0xe2, 0xf6, 0xe8, 0x1f, - 0x68, 0x70, 0x4e, 0x42, 0x6d, 0xd7, 0xee, 0x0d, 0x7a, 0x98, 0x98, 0x8e, 0x61, 0xf7, 0x84, 0xfe, - 0xf3, 0xd1, 0xfb, 0xf7, 0xa5, 0x49, 0xfc, 0x9c, 0x65, 0xe5, 0xc3, 0x70, 0x41, 0x9f, 0xd0, 0x17, - 0x34, 0xb8, 0x1c, 0x81, 0xd6, 0x7c, 0x12, 0x04, 0x03, 0x9f, 0xc4, 0xcf, 0x47, 0xc4, 0x98, 0x4c, - 0x94, 0xe2, 0xa0, 0x4c, 0xf6, 0x5b, 0x3a, 0x00, 0x37, 0x3e, 0x90, 0x7a, 0x62, 0xc5, 0x74, 0xbc, - 0x8d, 0x50, 0x28, 0x4c, 0x0f, 0x6c, 0xc5, 0x50, 0x1a, 0x38, 0x41, 0x11, 0xfd, 0x8e, 0x06, 0x0f, - 0xa9, 0x05, 0xea, 0x82, 0xe1, 0x9a, 0xd2, 0xc7, 0xee, 0x5f, 0x6f, 0x52, 0x04, 0xb8, 0x6d, 0xb2, - 0x00, 0x88, 0x8b, 0xba, 0x45, 0xd9, 0x77, 0x8f, 0x2d, 0x4e, 0xae, 0x4d, 0x8d, 0x71, 0xf6, 0xcd, - 0xd7, 0x6b, 0x80, 0x23, 0x18, 0x7a, 0x06, 0x66, 0xfa, 0x9e, 0xb5, 0x66, 0x5b, 0xc1, 0xb2, 0xdd, - 0xb3, 0x43, 0xa6, 0xee, 0x8c, 0xf0, 0xf1, 0x58, 0xf3, 0xac, 0xb5, 0x76, 0x8b, 0x97, 0xe3, 0x44, - 0x2d, 0xf6, 0x16, 0xd2, 0xee, 0x19, 0x5d, 0xb2, 0x36, 0x70, 0x9c, 0x35, 0xdf, 0x63, 0xf6, 0xab, - 0x16, 0x31, 0x2c, 0xc7, 0x76, 0x49, 0x49, 0xf5, 0x86, 0x6d, 0xb9, 0x76, 0x11, 0x52, 0x5c, 0x4c, - 0x0f, 0x2d, 0x00, 0x6c, 0x18, 0xb6, 0xd3, 0xb9, 0x63, 0xf4, 0x6f, 0xba, 0x4c, 0x07, 0x9a, 0xe4, - 0x46, 0x82, 0xab, 0xb2, 0x14, 0x2b, 0x35, 0xd8, 0x82, 0xa2, 0xcc, 0x10, 0x13, 0x1e, 0x8d, 0x83, - 0xe9, 0x2a, 0xf7, 0x65, 0x41, 0x45, 0x18, 0xf9, 0x00, 0xde, 0x50, 0x68, 0xe0, 0x04, 0x45, 0xf4, - 0xf3, 0x1a, 0xcc, 0x05, 0xbb, 0x41, 0x48, 0x7a, 0xb2, 0x13, 0x27, 0xee, 0x7b, 0x27, 0x98, 0x71, - 0xaf, 0x93, 0xa0, 0x82, 0x53, 0x54, 0x91, 0x01, 0x17, 0xd8, 0xc0, 0x5e, 0x6b, 0x5e, 0xb7, 0xbb, - 0x9b, 0xf2, 0x91, 0xe3, 0x1a, 0xf1, 0x4d, 0xe2, 0x86, 0xf3, 0x27, 0xd9, 0xd2, 0x61, 0xe1, 0x1e, - 0xda, 0xc5, 0xd5, 0xf0, 0x30, 0x1c, 0xe8, 0x27, 0xe0, 0xbc, 0x00, 0x2f, 0x7b, 0x77, 0x32, 0x14, - 0x4e, 0x31, 0x0a, 0xec, 0xe5, 0x69, 0xbb, 0xb0, 0x16, 0x1e, 0x82, 0x81, 0xea, 0x17, 0x01, 0xf1, - 0x99, 0x71, 0x9e, 0xc8, 0xf5, 0x13, 0xcc, 0x23, 0xb6, 0x0e, 0x98, 0x7e, 0xd1, 0xc9, 0x82, 0x71, - 0x5e, 0x1b, 0xf4, 0xa2, 0x7c, 0x8f, 0xb0, 0x4b, 0x0b, 0x5e, 0x5d, 0xeb, 0xcc, 0x9f, 0x66, 0xfd, - 0x3b, 0xad, 0x3c, 0x33, 0x88, 0x40, 0x38, 0x5d, 0x97, 0x4a, 0x19, 0x51, 0x51, 0x63, 0xe0, 0x07, - 0xe1, 0xfc, 0x19, 0xd6, 0x98, 0x49, 0x19, 0x58, 0x05, 0xe0, 0x64, 0x3d, 0xf4, 0x3c, 0xcc, 0x05, - 0xc4, 0x34, 0xbd, 0x5e, 0x5f, 0xa8, 0xad, 0xf3, 0x67, 0x59, 0xef, 0xf9, 0x0c, 0x26, 0x20, 0x38, - 0x55, 0x13, 0xed, 0xc2, 0x69, 0x19, 0x9c, 0x62, 0xd9, 0xeb, 0xae, 0x18, 0x3b, 0x4c, 0x6c, 0x3f, - 0x77, 0xf0, 0x26, 0x5c, 0x88, 0x2e, 0x5c, 0x17, 0x5e, 0x1d, 0x18, 0x6e, 0x68, 0x87, 0xbb, 0x7c, - 0xb8, 0x9a, 0x59, 0x74, 0x38, 0x8f, 0x06, 0x5a, 0x86, 0x33, 0xa9, 0xe2, 0xab, 0xb6, 0x43, 0x82, - 0xf9, 0x87, 0xd8, 0x67, 0x33, 0x33, 0x54, 0x33, 0x07, 0x8e, 0x73, 0x5b, 0xa1, 0x9b, 0x70, 0xb6, - 0xef, 0x7b, 0x21, 0x31, 0xc3, 0x1b, 0x54, 0x4e, 0x71, 0xc4, 0x07, 0x06, 0xf3, 0xf3, 0x6c, 0x2c, - 0xd8, 0xc5, 0xc4, 0x5a, 0x5e, 0x05, 0x9c, 0xdf, 0x0e, 0xbd, 0xab, 0xc1, 0xa5, 0x20, 0xf4, 0x89, - 0xd1, 0xb3, 0xdd, 0x6e, 0xd3, 0x73, 0x5d, 0xc2, 0x38, 0x65, 0xdb, 0x8a, 0xbd, 0x6c, 0x1f, 0x2e, - 0xc5, 0xaa, 0xf4, 0xfd, 0xbd, 0xfa, 0xa5, 0xce, 0x50, 0xcc, 0xf8, 0x00, 0xca, 0xfa, 0x5e, 0x8d, - 0xeb, 0xe0, 0x19, 0xf6, 0x4f, 0x17, 0x61, 0x8f, 0xf4, 0x3c, 0x7f, 0x77, 0x31, 0x8a, 0x0f, 0x29, - 0xee, 0x01, 0xd8, 0x22, 0x5c, 0x49, 0x82, 0x70, 0xba, 0x2e, 0x15, 0xd1, 0xd8, 0x66, 0xb9, 0xda, - 0x89, 0xdb, 0xd7, 0x62, 0x11, 0xad, 0x9d, 0x82, 0xe1, 0x4c, 0x6d, 0xd4, 0x84, 0x53, 0xa2, 0xac, - 0x4d, 0x15, 0x9d, 0xe0, 0xaa, 0x4f, 0x22, 0xe9, 0x97, 0x6a, 0x0c, 0xa7, 0xda, 0x69, 0x20, 0xce, - 0xd6, 0xa7, 0x5f, 0x41, 0x7f, 0xa8, 0xbd, 0x18, 0x8d, 0xbf, 0x62, 0x35, 0x09, 0xc2, 0xe9, 0xba, - 0x91, 0x26, 0x9a, 0xe8, 0xc2, 0x58, 0xfc, 0x15, 0xab, 0x29, 0x18, 0xce, 0xd4, 0xd6, 0xff, 0xdd, - 0x28, 0x3c, 0x7a, 0x08, 0xa9, 0x09, 0xf5, 0xf2, 0x87, 0xfb, 0xe8, 0x7b, 0xe7, 0x70, 0xd3, 0xd3, - 0x2f, 0x98, 0x9e, 0xa3, 0xd3, 0x3b, 0xec, 0x74, 0x06, 0x45, 0xd3, 0x79, 0x74, 0x92, 0x87, 0x9f, - 0xfe, 0x5e, 0xfe, 0xf4, 0x97, 0x1c, 0xd5, 0x03, 0x97, 0x4b, 0xbf, 0x60, 0xb9, 0x94, 0x1c, 0xd5, - 0x43, 0x2c, 0xaf, 0x7f, 0x3f, 0x0a, 0x8f, 0x1d, 0x46, 0x7c, 0x2b, 0xb9, 0xbe, 0x72, 0xb8, 0xce, - 0x03, 0x5d, 0x5f, 0x45, 0x6f, 0x09, 0x1e, 0xe0, 0xfa, 0xca, 0x21, 0xf9, 0xa0, 0xd7, 0x57, 0xd1, - 0xa8, 0x3e, 0xa8, 0xf5, 0x55, 0x34, 0xaa, 0x87, 0x58, 0x5f, 0xff, 0x33, 0x7d, 0x3e, 0x48, 0x91, - 0xad, 0x0d, 0x23, 0x66, 0x7f, 0x50, 0x92, 0x49, 0x31, 0xbf, 0x91, 0xe6, 0xda, 0x6d, 0x4c, 0x71, - 0x20, 0x0c, 0xe3, 0x7c, 0xfd, 0x94, 0x64, 0x41, 0xcc, 0xbb, 0x9d, 0x2f, 0x49, 0x2c, 0x30, 0xd1, - 0xa1, 0x22, 0xfd, 0x4d, 0xd2, 0x23, 0xbe, 0xe1, 0x74, 0x42, 0xcf, 0x37, 0xba, 0x65, 0xb9, 0x0d, - 0x1b, 0xaa, 0xa5, 0x14, 0x2e, 0x9c, 0xc1, 0x4e, 0x07, 0xa4, 0x6f, 0x5b, 0x25, 0xf9, 0x0b, 0x1b, - 0x90, 0xb5, 0x76, 0x0b, 0x53, 0x1c, 0xfa, 0x6f, 0x4f, 0x81, 0x12, 0x7c, 0x09, 0x7d, 0x1c, 0x1e, - 0x36, 0x1c, 0xc7, 0xbb, 0xb3, 0xe6, 0xdb, 0xdb, 0xb6, 0x43, 0xba, 0xc4, 0x92, 0xf2, 0x4c, 0x20, - 0xdc, 0x8b, 0x98, 0xda, 0xb2, 0x58, 0x54, 0x09, 0x17, 0xb7, 0xa7, 0x4a, 0xd4, 0x29, 0x33, 0x1d, - 0xeb, 0xa6, 0x92, 0xfb, 0x41, 0x26, 0x72, 0x0e, 0xdf, 0x50, 0x99, 0x62, 0x9c, 0xa5, 0x8b, 0x7e, - 0x56, 0xe3, 0x26, 0x32, 0x79, 0x27, 0x20, 0x26, 0xed, 0xfa, 0xfd, 0xba, 0x39, 0x8d, 0x8d, 0x6d, - 0xf1, 0xb5, 0x43, 0x92, 0x22, 0xfa, 0xa2, 0x06, 0x67, 0xb7, 0xf2, 0xcc, 0xfb, 0x62, 0x6e, 0xd7, - 0x4a, 0xf7, 0xa5, 0xe0, 0xc2, 0x80, 0x0b, 0x95, 0xb9, 0x15, 0x70, 0x7e, 0x4f, 0xe4, 0x38, 0x49, - 0x7b, 0xa7, 0xe0, 0x03, 0xe5, 0xc7, 0x29, 0x65, 0x39, 0x8d, 0xc7, 0x49, 0x02, 0x70, 0x92, 0x22, - 0x7a, 0x0b, 0xa6, 0xb6, 0x22, 0x33, 0xb3, 0xb0, 0x2a, 0xb5, 0x4a, 0x93, 0x57, 0x8c, 0xd5, 0xfc, - 0xf6, 0x49, 0x16, 0xe2, 0x98, 0x0a, 0xb2, 0x61, 0x62, 0x8b, 0x73, 0x23, 0x61, 0x0d, 0x6a, 0x54, - 0x57, 0x54, 0xb9, 0x49, 0x42, 0x14, 0xe1, 0x08, 0xbf, 0xea, 0x64, 0x39, 0x79, 0x80, 0xff, 0xff, - 0xaf, 0x6a, 0x70, 0x76, 0x9b, 0xf8, 0xa1, 0x6d, 0xa6, 0xef, 0x57, 0xa6, 0x2a, 0x68, 0xd3, 0xaf, - 0xe5, 0x61, 0xe4, 0x4b, 0x25, 0x17, 0x84, 0xf3, 0xfb, 0x40, 0x75, 0x6b, 0x6e, 0x25, 0xef, 0x84, - 0x46, 0x68, 0x9b, 0xb7, 0xbc, 0x2d, 0xe2, 0xd2, 0xaf, 0x15, 0x59, 0x07, 0x80, 0xf1, 0x0f, 0xa6, - 0x5b, 0x2f, 0x15, 0x57, 0xc3, 0xc3, 0x70, 0xe8, 0x7f, 0xa6, 0x41, 0xc6, 0xd2, 0x8b, 0xfe, 0xb6, - 0x06, 0x33, 0x1b, 0xc4, 0x08, 0x07, 0x3e, 0xb9, 0x66, 0x84, 0xf2, 0xb9, 0xe7, 0xeb, 0xf7, 0xc5, - 0xc2, 0xbc, 0x70, 0x55, 0xc1, 0xcc, 0xfd, 0x1f, 0x64, 0xf8, 0x36, 0x15, 0x84, 0x13, 0x5d, 0x38, - 0xff, 0x32, 0x9c, 0xca, 0x34, 0x3c, 0xd2, 0x25, 0xea, 0xd7, 0x34, 0xc8, 0xcb, 0x44, 0x81, 0x3e, - 0x01, 0x63, 0x86, 0x65, 0xc9, 0x70, 0xd5, 0xcf, 0x97, 0xf4, 0xf5, 0xb1, 0xd4, 0x77, 0xb5, 0xec, - 0x27, 0xe6, 0x78, 0xd1, 0x55, 0x40, 0x46, 0xe2, 0x2a, 0x7f, 0x25, 0x7e, 0x73, 0xc6, 0x6e, 0xa8, - 0x16, 0x33, 0x50, 0x9c, 0xd3, 0x42, 0xff, 0x05, 0x0d, 0x50, 0x36, 0xe6, 0x1f, 0x0a, 0x60, 0x52, - 0xac, 0xe6, 0x68, 0x9e, 0x96, 0xca, 0xbe, 0x3b, 0x48, 0x3c, 0xa3, 0x89, 0x5f, 0x3a, 0x88, 0x82, - 0x00, 0x4b, 0x42, 0xfa, 0xff, 0xd1, 0x20, 0x8e, 0x6c, 0x8b, 0x3e, 0x02, 0xd3, 0x16, 0x09, 0x4c, - 0xdf, 0xee, 0x87, 0xf1, 0xa3, 0x1b, 0xe9, 0xb8, 0xdf, 0x8a, 0x41, 0x58, 0xad, 0x87, 0x74, 0x18, - 0x0f, 0x8d, 0x60, 0xab, 0xdd, 0x12, 0xea, 0x25, 0x13, 0x06, 0x6e, 0xb1, 0x12, 0x2c, 0x20, 0x71, - 0xec, 0x9e, 0x91, 0x43, 0xc4, 0xee, 0x41, 0x1b, 0xf7, 0x21, 0x50, 0x11, 0x3a, 0x38, 0x48, 0x91, - 0xfe, 0x77, 0x6b, 0x70, 0x82, 0x56, 0x59, 0x31, 0x6c, 0x37, 0x24, 0x2e, 0x73, 0x2f, 0x2f, 0x39, - 0x08, 0x5d, 0x98, 0x0d, 0x13, 0xc1, 0x54, 0x8f, 0xfe, 0x00, 0x49, 0xba, 0x0f, 0x25, 0x43, 0xa8, - 0x26, 0xf1, 0xa2, 0xe7, 0x22, 0xff, 0x7e, 0xae, 0x88, 0x3f, 0x1a, 0xad, 0x55, 0xe6, 0xb4, 0x7f, - 0x4f, 0x04, 0x83, 0x92, 0xf1, 0x90, 0x13, 0xae, 0xfc, 0x3f, 0x02, 0xb3, 0xc2, 0xc9, 0x96, 0x07, - 0x61, 0x12, 0x8a, 0x38, 0x3b, 0x67, 0xae, 0xaa, 0x00, 0x9c, 0xac, 0xa7, 0xff, 0x61, 0x0d, 0x92, - 0x51, 0x97, 0xcb, 0x8e, 0x52, 0x36, 0x02, 0x55, 0xed, 0x81, 0x45, 0xa0, 0xfa, 0x30, 0xcb, 0x50, - 0xc0, 0x33, 0xd0, 0xf0, 0xbb, 0x6b, 0x35, 0xad, 0x00, 0x4f, 0x1f, 0x23, 0x6b, 0xc4, 0xc3, 0x3a, - 0x7a, 0xe4, 0x61, 0xfd, 0x88, 0x70, 0xd3, 0x1f, 0x4b, 0xc4, 0x01, 0x8b, 0x1e, 0x24, 0x9c, 0x4a, - 0x34, 0x54, 0x5e, 0x23, 0x7c, 0x53, 0x83, 0x09, 0x11, 0xe7, 0xf2, 0x10, 0xaf, 0x5d, 0xba, 0x30, - 0xc6, 0x94, 0x9f, 0x4a, 0x72, 0x61, 0x67, 0xd3, 0xf3, 0xc2, 0x44, 0xbc, 0x4f, 0xe6, 0x5d, 0xce, - 0xfe, 0xc5, 0x1c, 0x3f, 0x73, 0x59, 0xf4, 0xcd, 0x4d, 0x3b, 0x24, 0x66, 0x18, 0x45, 0x10, 0x8c, - 0x5c, 0x16, 0x95, 0x72, 0x9c, 0xa8, 0xa5, 0xff, 0xea, 0x28, 0x5c, 0x16, 0x88, 0x33, 0xa2, 0x92, - 0x64, 0x71, 0xbb, 0x70, 0x5a, 0x4c, 0x6e, 0xcb, 0x37, 0x6c, 0xe9, 0x14, 0x50, 0x4e, 0x0b, 0x16, - 0x0e, 0x23, 0x19, 0x74, 0x38, 0x8f, 0x06, 0x8f, 0x85, 0xc7, 0x8a, 0xaf, 0x13, 0xc3, 0x09, 0x37, - 0x23, 0xda, 0xb5, 0x2a, 0xb1, 0xf0, 0xb2, 0xf8, 0x70, 0x2e, 0x15, 0xe6, 0x94, 0x20, 0x00, 0x4d, - 0x9f, 0x18, 0xaa, 0x47, 0x44, 0x05, 0xff, 0xf0, 0x95, 0x5c, 0x8c, 0xb8, 0x80, 0x12, 0x33, 0x27, - 0x1a, 0x3b, 0xcc, 0x3a, 0x81, 0x49, 0xe8, 0xdb, 0x2c, 0x6e, 0xab, 0xb4, 0x69, 0xaf, 0x24, 0x41, - 0x38, 0x5d, 0x17, 0x3d, 0x0f, 0x73, 0xcc, 0xc9, 0x23, 0x8e, 0x37, 0x33, 0x16, 0x3f, 0x8a, 0x5e, - 0x4d, 0x40, 0x70, 0xaa, 0xa6, 0xfe, 0x25, 0x0d, 0x66, 0xd4, 0x65, 0x77, 0x88, 0xb7, 0x2f, 0xdb, - 0xca, 0x71, 0x58, 0xe5, 0x59, 0x86, 0x4a, 0xf6, 0x30, 0x27, 0xe2, 0xdf, 0x1c, 0x81, 0xd3, 0x39, - 0x6d, 0xd8, 0x8d, 0x3d, 0x49, 0x1d, 0xad, 0x95, 0x6e, 0xec, 0x33, 0xe7, 0xb4, 0xbc, 0xb1, 0x4f, - 0x43, 0x70, 0x86, 0x30, 0x7a, 0x1d, 0x46, 0x4c, 0xdf, 0x16, 0x03, 0xf3, 0x6c, 0x39, 0x1d, 0x11, - 0xb7, 0x1b, 0xd3, 0x82, 0xe4, 0x48, 0x13, 0xb7, 0x31, 0xc5, 0x48, 0x8f, 0x08, 0x75, 0x5f, 0x47, - 0xe7, 0x35, 0x3b, 0x22, 0xd4, 0xed, 0x1f, 0xe0, 0x64, 0x3d, 0xf4, 0x51, 0x98, 0x17, 0x72, 0x7b, - 0xf4, 0xe8, 0xd5, 0x73, 0x83, 0x90, 0x6e, 0xc1, 0x50, 0xb0, 0xd4, 0x8b, 0xfb, 0x7b, 0xf5, 0xf9, - 0x1b, 0x05, 0x75, 0x70, 0x61, 0x6b, 0xfd, 0xbf, 0x8d, 0xc0, 0xb4, 0x12, 0x0f, 0x18, 0xad, 0x54, - 0x31, 0x7b, 0xc4, 0x5f, 0x1c, 0x99, 0x3e, 0x56, 0x60, 0xa4, 0xdb, 0x1f, 0x94, 0xb4, 0x7b, 0x48, - 0x74, 0xd7, 0x28, 0xba, 0x6e, 0x7f, 0x80, 0x5e, 0x93, 0x96, 0x94, 0x72, 0xb6, 0x0e, 0xf9, 0x36, - 0x21, 0x65, 0x4d, 0x89, 0x76, 0xcc, 0x68, 0xe1, 0x8e, 0x71, 0x61, 0x22, 0x10, 0x66, 0x96, 0xb1, - 0x0a, 0x71, 0x20, 0x94, 0xa1, 0x16, 0x76, 0x15, 0xae, 0x9e, 0x45, 0x66, 0x97, 0x88, 0x08, 0x15, - 0xfb, 0x06, 0xec, 0xd5, 0x23, 0xd3, 0x3c, 0x27, 0xb9, 0xd8, 0x77, 0x9b, 0x95, 0x60, 0x01, 0xc9, - 0x1c, 0x26, 0x13, 0x87, 0x3a, 0x4c, 0x3e, 0x5b, 0x03, 0x94, 0xed, 0x06, 0x7a, 0x14, 0xc6, 0xd8, - 0xcb, 0x69, 0xc1, 0x35, 0xa4, 0x94, 0xce, 0x5e, 0xce, 0x62, 0x0e, 0x43, 0x1d, 0xf1, 0xa2, 0xbd, - 0xdc, 0x7c, 0x32, 0xa7, 0x17, 0x41, 0x4f, 0x79, 0xfe, 0x1e, 0x1d, 0xcf, 0x23, 0x85, 0xc7, 0xf3, - 0x6d, 0x98, 0xe8, 0xd9, 0x2e, 0xbb, 0x70, 0x2b, 0x67, 0x7e, 0xe2, 0xb7, 0xf2, 0x1c, 0x05, 0x8e, - 0x70, 0xe9, 0xdf, 0xa9, 0xd1, 0xb5, 0x1f, 0x0b, 0xa7, 0x77, 0x01, 0x8c, 0x41, 0xe8, 0x71, 0x29, - 0x47, 0x6c, 0x81, 0x1f, 0x2b, 0x39, 0xcd, 0x12, 0xeb, 0xa2, 0xc4, 0xc8, 0x6f, 0xcb, 0xe3, 0xdf, - 0x58, 0xa1, 0x46, 0x69, 0x87, 0x76, 0x8f, 0xbc, 0x6e, 0xbb, 0x96, 0x77, 0x47, 0x8c, 0x6f, 0x65, - 0xda, 0xb7, 0x24, 0x46, 0x4e, 0x3b, 0xfe, 0x8d, 0x15, 0x6a, 0x94, 0xbb, 0x30, 0x45, 0xd7, 0x65, - 0x61, 0xda, 0x45, 0xe7, 0x3c, 0xc7, 0x89, 0x4e, 0xd0, 0x49, 0xce, 0x5d, 0x9a, 0x05, 0x75, 0x70, - 0x61, 0x6b, 0xfd, 0xcb, 0x1a, 0x9c, 0xcd, 0x1d, 0x0b, 0x74, 0x0d, 0x4e, 0xc5, 0x9e, 0x52, 0x2a, - 0xc7, 0x9f, 0x8c, 0x13, 0x04, 0xdc, 0x48, 0x57, 0xc0, 0xd9, 0x36, 0x68, 0x45, 0x8a, 0x3d, 0xea, - 0x89, 0x22, 0xdc, 0xac, 0x2e, 0x08, 0x54, 0x79, 0x87, 0x0e, 0xce, 0x6b, 0xa7, 0x7f, 0x3c, 0xd1, - 0xe1, 0x78, 0xc0, 0xe8, 0xfe, 0x58, 0x27, 0x5d, 0xf9, 0xca, 0x49, 0xee, 0x8f, 0x06, 0x2d, 0xc4, - 0x1c, 0x86, 0x1e, 0x51, 0x1f, 0x0f, 0x4a, 0xf6, 0x15, 0x3d, 0x20, 0xd4, 0x07, 0x00, 0xc2, 0x9f, - 0xd1, 0x76, 0xbb, 0xa8, 0x0b, 0x93, 0x86, 0x48, 0x4e, 0x28, 0x16, 0xdb, 0x8b, 0xe5, 0xd4, 0x6a, - 0x81, 0x84, 0xbb, 0xae, 0x47, 0xbf, 0xb0, 0x44, 0xae, 0xff, 0x7d, 0x0d, 0xce, 0xe5, 0x3f, 0x10, - 0x3e, 0x84, 0xa8, 0xd0, 0x83, 0x69, 0x3f, 0x6e, 0x26, 0x56, 0xe6, 0x0f, 0xab, 0x21, 0xf8, 0x94, - 0xb0, 0x35, 0x54, 0x8c, 0x6a, 0xfa, 0x5e, 0x10, 0xcd, 0x4e, 0x3a, 0x2a, 0x9f, 0xd4, 0x61, 0x94, - 0x9e, 0x60, 0x15, 0xbf, 0xfe, 0xb5, 0x1a, 0xc0, 0x2a, 0x09, 0xef, 0x78, 0xfe, 0x16, 0x1d, 0xa3, - 0xef, 0xab, 0x87, 0xea, 0x17, 0x61, 0xb4, 0xef, 0x59, 0x81, 0x60, 0x54, 0xec, 0x05, 0x39, 0x73, - 0xf3, 0x61, 0xa5, 0xa8, 0x0e, 0x63, 0xec, 0x5e, 0x41, 0x1c, 0x22, 0x4c, 0xf6, 0xa7, 0x92, 0x5b, - 0x80, 0x79, 0x39, 0xcf, 0x41, 0xc3, 0x1e, 0x86, 0x04, 0x42, 0x9b, 0x11, 0x39, 0x68, 0x78, 0x19, - 0x96, 0x50, 0xf4, 0x3c, 0x80, 0xdd, 0xbf, 0x6a, 0xf4, 0x6c, 0x87, 0xca, 0x91, 0xe3, 0x32, 0xcb, - 0x21, 0xb4, 0xd7, 0xa2, 0xd2, 0x7b, 0x7b, 0xf5, 0x49, 0xf1, 0x6b, 0x17, 0x2b, 0xb5, 0xf5, 0xcf, - 0x8c, 0x42, 0x22, 0x89, 0x67, 0x6c, 0xba, 0x19, 0x7d, 0x40, 0xa6, 0x9b, 0x8f, 0xc2, 0xbc, 0xe3, - 0x19, 0x56, 0xc3, 0x70, 0xe8, 0x96, 0xf1, 0x3b, 0x7c, 0x2e, 0x0d, 0xb7, 0x2b, 0x43, 0xfb, 0x30, - 0xf6, 0xb1, 0x5c, 0x50, 0x07, 0x17, 0xb6, 0x46, 0x03, 0x25, 0x77, 0x28, 0x95, 0xc5, 0x56, 0x2a, - 0x27, 0x39, 0x5d, 0x50, 0x5f, 0x14, 0x49, 0x69, 0x20, 0x95, 0x5f, 0xf4, 0xe7, 0x35, 0x38, 0x4b, - 0x76, 0x42, 0xe2, 0xbb, 0x86, 0x73, 0xcb, 0x37, 0x36, 0x36, 0x6c, 0x33, 0xe1, 0x84, 0xb9, 0xb6, - 0xbf, 0x57, 0x3f, 0xbb, 0x94, 0x57, 0xe1, 0xde, 0x5e, 0xfd, 0xe9, 0x6c, 0x16, 0xdf, 0xe8, 0xfd, - 0x50, 0x6e, 0x13, 0xb6, 0x94, 0xf3, 0xc9, 0x9d, 0x7f, 0x0e, 0xa6, 0x8f, 0xf0, 0x1a, 0x22, 0xf1, - 0x60, 0xfb, 0x9f, 0xd5, 0x60, 0x86, 0xae, 0xbe, 0x65, 0xcf, 0x34, 0x9c, 0xd6, 0x6a, 0xe7, 0x08, - 0x29, 0x70, 0xd1, 0x32, 0x9c, 0xd9, 0xf0, 0x7c, 0x93, 0xdc, 0x6a, 0xae, 0xdd, 0xf2, 0xc4, 0xb5, - 0x46, 0x6b, 0xb5, 0x23, 0x78, 0x2a, 0x53, 0xcf, 0xae, 0xe6, 0xc0, 0x71, 0x6e, 0x2b, 0x74, 0x13, - 0xce, 0xc6, 0xe5, 0xb7, 0xfb, 0xdc, 0x61, 0x83, 0xa2, 0x1b, 0x89, 0x1d, 0x4e, 0xae, 0xe6, 0x55, - 0xc0, 0xf9, 0xed, 0x90, 0x01, 0x17, 0x44, 0x44, 0x88, 0xab, 0x9e, 0x7f, 0xc7, 0xf0, 0xad, 0x24, - 0xda, 0xd1, 0xd8, 0xe0, 0xdb, 0x2a, 0xae, 0x86, 0x87, 0xe1, 0xd0, 0x7f, 0x7d, 0x1c, 0x94, 0xb7, - 0x6f, 0x47, 0x48, 0x5c, 0xf2, 0x5b, 0x1a, 0x9c, 0x31, 0x1d, 0x9b, 0xb8, 0x61, 0xea, 0x81, 0x13, - 0x67, 0x4a, 0xaf, 0x95, 0x7b, 0x95, 0xd7, 0x27, 0x6e, 0xbb, 0x25, 0x1c, 0x5c, 0x9a, 0x39, 0xd8, - 0x85, 0x13, 0x50, 0x0e, 0x04, 0xe7, 0xf6, 0x86, 0x7d, 0x10, 0x2b, 0x6f, 0xb7, 0xd4, 0x97, 0xec, - 0x4d, 0x51, 0x86, 0x25, 0x14, 0x3d, 0x09, 0xd3, 0x5d, 0xdf, 0x1b, 0xf4, 0x83, 0x26, 0x73, 0xae, - 0xe5, 0xbc, 0x8d, 0x09, 0x72, 0xd7, 0xe2, 0x62, 0xac, 0xd6, 0xa1, 0x62, 0x29, 0xff, 0xb9, 0xe6, - 0x93, 0x0d, 0x7b, 0x47, 0xf0, 0x3a, 0x26, 0x96, 0x5e, 0x53, 0xca, 0x71, 0xa2, 0x16, 0xfa, 0x10, - 0x4c, 0xd9, 0x41, 0x30, 0x20, 0xfe, 0x6d, 0xbc, 0x2c, 0x82, 0x95, 0xb3, 0x7b, 0x92, 0x76, 0x54, - 0x88, 0x63, 0x38, 0xfa, 0x65, 0x0d, 0xe6, 0x7c, 0xf2, 0xd6, 0xc0, 0xf6, 0x89, 0xc5, 0x88, 0x06, - 0xe2, 0x05, 0x62, 0xa7, 0xe2, 0xb3, 0xc7, 0x05, 0x9c, 0xc0, 0xca, 0xf9, 0x84, 0xb4, 0x89, 0x25, - 0x81, 0x38, 0xd5, 0x05, 0x3a, 0x56, 0x81, 0xdd, 0x75, 0x6d, 0xb7, 0xbb, 0xe8, 0x74, 0x83, 0xf9, - 0x49, 0xc6, 0xfb, 0xb8, 0xd0, 0x1b, 0x17, 0x63, 0xb5, 0x0e, 0xd5, 0x08, 0x07, 0x01, 0xdd, 0xf9, - 0x3d, 0xc2, 0x07, 0x78, 0x2a, 0x36, 0x1a, 0xde, 0x56, 0x01, 0x38, 0x59, 0x0f, 0x3d, 0x0f, 0x73, - 0x51, 0x81, 0x18, 0x66, 0xe0, 0x51, 0xa6, 0x68, 0x3f, 0x6f, 0x27, 0x20, 0x38, 0x55, 0xf3, 0xfc, - 0x22, 0x9c, 0xce, 0xf9, 0xcc, 0x23, 0xb1, 0x97, 0x2f, 0xd5, 0xe0, 0xfd, 0x07, 0x2e, 0x4b, 0xf4, - 0xeb, 0x1a, 0x4c, 0x93, 0x9d, 0xd0, 0x37, 0xa4, 0x0f, 0x3e, 0x9d, 0xa3, 0xee, 0x83, 0xd9, 0x04, - 0x0b, 0x4b, 0x31, 0x25, 0x3e, 0x6f, 0x52, 0xda, 0x50, 0x20, 0x58, 0xed, 0x10, 0xd5, 0xb2, 0x78, - 0x14, 0x32, 0xd5, 0xb8, 0x2e, 0x32, 0x41, 0x0a, 0xc8, 0xf9, 0x97, 0xe0, 0x64, 0x1a, 0xf3, 0x51, - 0x39, 0xf1, 0xc4, 0x9a, 0xef, 0x51, 0x41, 0xe8, 0x18, 0x42, 0x4f, 0xad, 0x27, 0x02, 0xeb, 0x96, - 0x7b, 0xd6, 0x2c, 0x7a, 0x5b, 0x18, 0xd8, 0xfb, 0xcd, 0x54, 0x60, 0xef, 0x46, 0x25, 0x2a, 0xc3, - 0x23, 0x79, 0x7f, 0x4b, 0x83, 0x69, 0x51, 0xf3, 0x18, 0x62, 0x53, 0x19, 0xc9, 0xd8, 0x54, 0x2f, - 0x54, 0xf9, 0xb0, 0x82, 0xa8, 0x54, 0xef, 0x6a, 0x30, 0x2b, 0x6a, 0xac, 0x90, 0xde, 0x3a, 0xf1, - 0xd1, 0x55, 0x98, 0x08, 0x06, 0x6c, 0x2e, 0xc5, 0x17, 0x5d, 0x50, 0xa5, 0x6b, 0x7f, 0xdd, 0x30, - 0x59, 0x46, 0x53, 0x5e, 0x45, 0x09, 0x97, 0xcd, 0x0b, 0x70, 0xd4, 0x98, 0xca, 0xca, 0xbe, 0xe7, - 0x64, 0x02, 0xda, 0x60, 0xcf, 0x21, 0x98, 0x41, 0xa8, 0x88, 0x4a, 0xff, 0x46, 0x76, 0x27, 0x26, - 0xa2, 0x52, 0x70, 0x80, 0x79, 0xb9, 0xfe, 0xd9, 0x51, 0x39, 0xda, 0x2c, 0x9c, 0xed, 0x75, 0x98, - 0x32, 0x7d, 0x62, 0x84, 0xc4, 0x6a, 0xec, 0x1e, 0xa6, 0x73, 0x8c, 0x63, 0x37, 0xa3, 0x16, 0x38, - 0x6e, 0x4c, 0x79, 0xa3, 0x7a, 0xa5, 0x51, 0x8b, 0xcf, 0x91, 0xc2, 0xeb, 0x8c, 0x17, 0x60, 0xcc, - 0xbb, 0xe3, 0x4a, 0x17, 0x89, 0xa1, 0x84, 0xd9, 0xa7, 0xdc, 0xa4, 0xb5, 0x31, 0x6f, 0xa4, 0x06, - 0x74, 0x1a, 0x1d, 0x12, 0xd0, 0xa9, 0x07, 0x13, 0x3d, 0x36, 0x0d, 0xd5, 0x62, 0x27, 0x27, 0x66, - 0x54, 0xcd, 0xb2, 0xc1, 0x50, 0xe3, 0x88, 0x06, 0x3d, 0xe5, 0x28, 0x23, 0x0e, 0xfa, 0x86, 0x49, - 0xd4, 0x53, 0x6e, 0x35, 0x2a, 0xc4, 0x31, 0x1c, 0xdd, 0x4d, 0xc6, 0x0a, 0x9b, 0xa8, 0x60, 0x77, - 0x12, 0xfd, 0x53, 0xc2, 0x83, 0xf1, 0xc1, 0x2f, 0x8c, 0x17, 0xf6, 0xb9, 0x51, 0xb9, 0x4c, 0x45, - 0x38, 0xf4, 0xfc, 0x74, 0x9c, 0x5a, 0xa9, 0x74, 0x9c, 0x4f, 0x47, 0x19, 0x2e, 0x6b, 0x89, 0x94, - 0x30, 0x32, 0xc3, 0xe5, 0x8c, 0x20, 0x9d, 0xc8, 0x6a, 0x39, 0x80, 0xd3, 0x41, 0x68, 0x38, 0xa4, - 0x63, 0x0b, 0xcd, 0x3c, 0x08, 0x8d, 0x5e, 0xbf, 0x44, 0x66, 0x17, 0xee, 0xad, 0x9e, 0x45, 0x85, - 0xf3, 0xf0, 0xa3, 0xcf, 0x68, 0x30, 0xcf, 0xca, 0x17, 0x07, 0xa1, 0xc7, 0x43, 0xd4, 0xc6, 0xc4, - 0x8f, 0x7e, 0x73, 0xca, 0x74, 0xa1, 0x4e, 0x01, 0x3e, 0x5c, 0x48, 0x09, 0xbd, 0x0d, 0x67, 0x1d, - 0x23, 0x08, 0x17, 0xcd, 0xd0, 0xde, 0xb6, 0xc3, 0xdd, 0xb8, 0x0b, 0x47, 0xcf, 0x2b, 0xc9, 0x44, - 0xee, 0xe5, 0x3c, 0x64, 0x38, 0x9f, 0x86, 0xfe, 0xbf, 0x34, 0x40, 0xd9, 0x25, 0x84, 0x7a, 0x30, - 0x69, 0x45, 0xee, 0xe3, 0xda, 0xfd, 0x89, 0x64, 0x27, 0xb9, 0xb3, 0x74, 0x3b, 0x97, 0x24, 0x50, - 0x1f, 0xa6, 0xee, 0x6c, 0xda, 0x21, 0x71, 0xec, 0x20, 0xbc, 0x5f, 0x91, 0xf3, 0x64, 0x10, 0xa9, - 0xd7, 0x23, 0xcc, 0x38, 0x26, 0xa2, 0xff, 0xd2, 0x28, 0x4c, 0x1e, 0x21, 0xe7, 0xfb, 0x00, 0x90, - 0xa9, 0xa4, 0x9c, 0xa9, 0x62, 0x8f, 0x60, 0x3e, 0x0f, 0xcd, 0x0c, 0x32, 0x9c, 0x43, 0x00, 0xbd, - 0x0d, 0x67, 0x6c, 0x77, 0xc3, 0x37, 0x82, 0xd0, 0x1f, 0x30, 0x1b, 0x6f, 0x95, 0xc4, 0x2d, 0x4c, - 0x95, 0x68, 0xe7, 0xa0, 0xc3, 0xb9, 0x44, 0xd0, 0x06, 0x4c, 0xdc, 0xf1, 0xfc, 0x2d, 0xca, 0x40, - 0x47, 0x2b, 0xa4, 0xf1, 0x7b, 0x9d, 0xe1, 0x88, 0x39, 0x27, 0xff, 0x1d, 0xe0, 0x08, 0x39, 0x0f, - 0x9f, 0xc1, 0xff, 0x8f, 0xae, 0x3c, 0xc5, 0xd2, 0x6f, 0x55, 0x20, 0x18, 0x67, 0x85, 0xe4, 0xe1, - 0x33, 0x92, 0x85, 0x38, 0x4d, 0x51, 0xff, 0x7d, 0x0d, 0xc6, 0xf8, 0x1b, 0xcd, 0x07, 0x2f, 0xca, - 0xfd, 0x64, 0x42, 0x94, 0x2b, 0x97, 0x79, 0x82, 0xf5, 0xb5, 0x30, 0x25, 0xc2, 0x37, 0x35, 0x98, - 0x62, 0x35, 0x8e, 0x41, 0xb4, 0xfa, 0x44, 0x52, 0xb4, 0x7a, 0xbe, 0xfc, 0xe7, 0x14, 0x08, 0x56, - 0xbf, 0x3f, 0x22, 0x3e, 0x86, 0x49, 0x2e, 0x6d, 0x38, 0x2d, 0xbc, 0x2f, 0x97, 0xed, 0x0d, 0x42, - 0x97, 0x79, 0xcb, 0xd8, 0x0d, 0x44, 0x7c, 0x05, 0xfe, 0xfe, 0x26, 0x0b, 0xc6, 0x79, 0x6d, 0xd0, - 0x3f, 0xd7, 0xa8, 0x8c, 0x10, 0xfa, 0xb6, 0x59, 0x2d, 0xcf, 0x80, 0xec, 0xdc, 0xc2, 0x0a, 0xc7, - 0xc6, 0xb5, 0x94, 0xdb, 0xb1, 0xb0, 0xc0, 0x4a, 0xef, 0xed, 0xd5, 0xeb, 0x39, 0x36, 0xa4, 0x38, - 0x76, 0x79, 0x10, 0x7e, 0xfa, 0x3b, 0x43, 0xab, 0x30, 0xeb, 0x6d, 0xd4, 0x65, 0x74, 0x1d, 0xc6, - 0x02, 0xd3, 0xeb, 0x93, 0xa3, 0x64, 0x4f, 0x91, 0x23, 0xdc, 0xa1, 0x2d, 0x31, 0x47, 0x70, 0xfe, - 0x4d, 0x98, 0x51, 0x7b, 0x9e, 0xa3, 0x05, 0xb5, 0x54, 0x2d, 0xe8, 0xc8, 0xd7, 0x34, 0xaa, 0xd6, - 0xf4, 0xf5, 0x1a, 0x8c, 0xf3, 0x54, 0x9e, 0x87, 0xb0, 0x51, 0xbf, 0x19, 0x05, 0x88, 0xae, 0x92, - 0xa8, 0x58, 0x8d, 0xd5, 0xf7, 0x86, 0xe7, 0x2a, 0x83, 0xa0, 0xc6, 0x88, 0x46, 0x9e, 0x8c, 0xe1, - 0x38, 0x52, 0x21, 0xbd, 0x03, 0xff, 0xb4, 0x07, 0x1d, 0xb5, 0xf1, 0x5b, 0x1a, 0xcc, 0x24, 0xa2, - 0x62, 0xf6, 0x60, 0xc4, 0x97, 0xd9, 0x7f, 0xca, 0x1a, 0xf1, 0x23, 0xef, 0x9d, 0x0b, 0x43, 0x2a, - 0x61, 0x4a, 0x47, 0x06, 0xd0, 0xac, 0xdd, 0xa7, 0x00, 0x9a, 0xfa, 0xaf, 0x68, 0x70, 0x2e, 0xfa, - 0xa0, 0x64, 0xa8, 0x23, 0xf4, 0x38, 0x4c, 0x1a, 0x7d, 0x9b, 0x19, 0x98, 0x54, 0x1b, 0xdd, 0xe2, - 0x5a, 0x9b, 0x95, 0x61, 0x09, 0x45, 0x1f, 0x86, 0xc9, 0x68, 0xe9, 0x09, 0xf9, 0x53, 0xf2, 0x2d, - 0x79, 0x2d, 0x21, 0x6b, 0xa0, 0x0f, 0x28, 0x41, 0xbc, 0xc7, 0x62, 0x71, 0x41, 0x12, 0xe6, 0x97, - 0x98, 0xfa, 0x0f, 0xc3, 0x54, 0xa7, 0x73, 0x9d, 0x87, 0x80, 0x39, 0x82, 0xad, 0x55, 0x7f, 0x67, - 0x04, 0x66, 0xb9, 0xc1, 0xa1, 0x61, 0xbb, 0x96, 0xed, 0x76, 0x8f, 0xe1, 0x60, 0xb9, 0x05, 0x53, - 0xdc, 0xb6, 0x71, 0x40, 0xa6, 0xa6, 0x4e, 0x54, 0x29, 0x1d, 0x4d, 0x56, 0x02, 0x70, 0x8c, 0x08, - 0xdd, 0x80, 0xf1, 0xb7, 0x28, 0x87, 0x8b, 0x36, 0xc6, 0xa1, 0x18, 0x8d, 0x5c, 0xf4, 0x8c, 0x39, - 0x06, 0x58, 0xa0, 0x40, 0x21, 0x73, 0x2f, 0x63, 0x72, 0x57, 0xa5, 0xd0, 0x05, 0x89, 0xa1, 0x95, - 0x51, 0xfc, 0x67, 0x84, 0x9b, 0x1a, 0xfb, 0x85, 0x25, 0x25, 0x16, 0x0e, 0x3b, 0xd1, 0xe2, 0xbd, - 0x12, 0x0e, 0x3b, 0xd1, 0xe9, 0x82, 0xf3, 0xf1, 0x39, 0x38, 0x9b, 0x3b, 0x1a, 0x07, 0xcb, 0xb5, - 0xfa, 0x57, 0x6a, 0x30, 0xda, 0x21, 0xc4, 0x3a, 0x86, 0xb5, 0xf9, 0x89, 0x84, 0xd0, 0xf3, 0x62, - 0xf9, 0x80, 0xdc, 0x45, 0xc6, 0xab, 0x6e, 0xca, 0x78, 0xf5, 0x72, 0x79, 0x12, 0xc3, 0x2d, 0x57, - 0xbf, 0x51, 0x03, 0xa0, 0xd5, 0x1a, 0x86, 0xb9, 0xc5, 0xb9, 0x8e, 0x5c, 0xd1, 0x5a, 0x92, 0xeb, - 0x64, 0x57, 0xe2, 0x71, 0xde, 0x6a, 0xea, 0x30, 0xce, 0x53, 0x65, 0x8b, 0x9b, 0x00, 0xe0, 0x79, - 0x44, 0x69, 0x09, 0x16, 0x90, 0x24, 0xc7, 0x18, 0xbd, 0x4f, 0x1c, 0x43, 0xff, 0x8a, 0x06, 0x2c, - 0xe9, 0x5b, 0x6b, 0x95, 0x3d, 0xea, 0xb6, 0xf9, 0x15, 0x5d, 0x4b, 0x0d, 0x26, 0xca, 0x0c, 0xe1, - 0x6d, 0x15, 0x80, 0x93, 0xf5, 0x90, 0xab, 0x8c, 0x6b, 0xad, 0x82, 0x3e, 0x20, 0x3a, 0x72, 0x20, - 0x8f, 0xf8, 0x6e, 0x0d, 0x4e, 0xa4, 0xea, 0x1e, 0x42, 0x33, 0x7c, 0x30, 0x2c, 0x57, 0x49, 0xfe, - 0x31, 0x72, 0x0c, 0xc9, 0x3f, 0x64, 0x1e, 0x8e, 0xd1, 0x07, 0x9c, 0x87, 0xe3, 0x1b, 0x1a, 0x4c, - 0xd2, 0x31, 0x3e, 0x06, 0xf6, 0xfb, 0x13, 0x49, 0xf6, 0xfb, 0x5c, 0xe9, 0xb5, 0x53, 0xc0, 0x75, - 0xff, 0x71, 0x0d, 0x58, 0x3a, 0x00, 0xe1, 0xd3, 0xa0, 0xb8, 0x09, 0x68, 0x05, 0x6e, 0x02, 0x97, - 0x85, 0x97, 0x41, 0xca, 0x8c, 0xab, 0x78, 0x1a, 0x7c, 0x58, 0x71, 0x24, 0x18, 0x49, 0xb2, 0x92, - 0x1c, 0x67, 0x82, 0xb7, 0x61, 0x36, 0xd8, 0xf4, 0xbc, 0x50, 0x3e, 0xf4, 0x1f, 0xad, 0x60, 0xb4, - 0x67, 0x3e, 0xce, 0xd1, 0xb7, 0xf0, 0xdd, 0xd9, 0x51, 0x91, 0xe3, 0x24, 0xad, 0x94, 0x27, 0xc3, - 0xd8, 0x91, 0x3c, 0x19, 0xfe, 0x44, 0xe3, 0x43, 0x77, 0x84, 0x6d, 0x76, 0x8c, 0x6c, 0xf3, 0x83, - 0x29, 0xb6, 0xa9, 0xa4, 0x60, 0x4e, 0xb0, 0xce, 0x7a, 0xbc, 0x69, 0xa4, 0xcd, 0x3d, 0xb1, 0xd8, - 0xff, 0x89, 0xf8, 0x4c, 0x99, 0x22, 0xa2, 0x0f, 0xb3, 0x8e, 0x9a, 0x07, 0x50, 0xac, 0xfa, 0x52, - 0x29, 0x04, 0xe5, 0xab, 0x87, 0x44, 0x31, 0x4e, 0x12, 0xa0, 0xcc, 0x37, 0xfa, 0x3a, 0x3a, 0x98, - 0x81, 0xc8, 0x40, 0xc4, 0xa6, 0x77, 0x4d, 0x05, 0xe0, 0x64, 0x3d, 0xfd, 0x0b, 0x35, 0x78, 0x84, - 0xf7, 0x9d, 0xd9, 0x47, 0x5a, 0xa4, 0x4f, 0x5c, 0x8b, 0xb8, 0xe6, 0x2e, 0x13, 0xce, 0x2d, 0xaf, - 0x8b, 0x3e, 0xa3, 0xc1, 0x24, 0x71, 0xad, 0xbe, 0x67, 0xbb, 0xd1, 0xf5, 0xc6, 0x1b, 0x15, 0xb2, - 0x6c, 0x14, 0x90, 0x59, 0x12, 0x14, 0x44, 0xf4, 0x4e, 0xf1, 0x0b, 0x4b, 0xca, 0x68, 0x07, 0xc6, - 0xfa, 0xbe, 0xb7, 0x1e, 0x29, 0xa6, 0xaf, 0xdf, 0xff, 0x2e, 0xac, 0x51, 0xf4, 0x7c, 0x7a, 0xd9, - 0xbf, 0x98, 0x13, 0xd4, 0x31, 0x7c, 0xe0, 0x50, 0x5d, 0x3f, 0x8a, 0xd2, 0x70, 0x13, 0xf4, 0x83, - 0xfb, 0x72, 0x14, 0x84, 0xaf, 0xc2, 0x63, 0x0a, 0xc2, 0xa5, 0x1d, 0xaa, 0xc5, 0x34, 0x8d, 0xbe, - 0x61, 0x52, 0xad, 0x9c, 0xbd, 0x88, 0xe6, 0x76, 0xfb, 0x23, 0xa0, 0xfc, 0x85, 0x51, 0xa8, 0x2b, - 0x38, 0x13, 0xde, 0x3f, 0x11, 0x6b, 0xfa, 0x35, 0x0d, 0xa6, 0x0d, 0xd7, 0xf5, 0x42, 0x43, 0xcd, - 0xb1, 0x4a, 0xaa, 0x4e, 0x4e, 0x1e, 0xad, 0x85, 0xc5, 0x98, 0x4e, 0xea, 0x76, 0x58, 0x81, 0x60, - 0xb5, 0x3b, 0x43, 0xfc, 0x80, 0x6a, 0xc7, 0xea, 0x07, 0x84, 0x3e, 0x15, 0xf1, 0x10, 0xae, 0x59, - 0x7d, 0xec, 0x41, 0x0c, 0x10, 0xe3, 0x49, 0xf9, 0x36, 0x8f, 0xf3, 0x2f, 0xc1, 0xc9, 0xf4, 0xf0, - 0x1d, 0xc9, 0x0e, 0xf1, 0xbb, 0x23, 0x89, 0xf5, 0x55, 0x48, 0xfe, 0x10, 0xa6, 0x9e, 0x2f, 0xa6, - 0x96, 0x0c, 0x3f, 0xb6, 0xdf, 0x7c, 0x60, 0x23, 0x72, 0x7f, 0xd7, 0xcd, 0x31, 0xfb, 0x8f, 0x55, - 0x9d, 0xb7, 0x26, 0x9c, 0x53, 0xc6, 0x88, 0x5d, 0xaf, 0x36, 0x37, 0x89, 0xb9, 0x75, 0x24, 0x0b, - 0x47, 0x83, 0xea, 0x9d, 0x12, 0x89, 0x92, 0x83, 0xe9, 0x09, 0x98, 0xd8, 0xb6, 0x03, 0x3b, 0x0a, - 0xd5, 0xa1, 0xe0, 0x78, 0x8d, 0x17, 0xe3, 0x08, 0xae, 0xaf, 0xc0, 0x65, 0x05, 0x47, 0xee, 0xf3, - 0xe0, 0xa3, 0x74, 0xe9, 0x1f, 0x4e, 0x44, 0x47, 0xae, 0x78, 0x3b, 0xf5, 0x55, 0x0d, 0x1e, 0x26, - 0x45, 0x5c, 0x4f, 0x1c, 0x5b, 0x95, 0x77, 0x5d, 0x21, 0x5b, 0x15, 0x71, 0x10, 0x8b, 0xc0, 0xb8, - 0xb8, 0x6b, 0xe8, 0x6e, 0x22, 0x7d, 0x58, 0xad, 0x92, 0xa5, 0x24, 0x67, 0x8e, 0x86, 0x25, 0x0f, - 0x43, 0xbf, 0xa9, 0xc1, 0x19, 0x27, 0x67, 0xdf, 0x08, 0x01, 0xf3, 0xd6, 0x83, 0xd8, 0x93, 0xfc, - 0x7a, 0x2a, 0x0f, 0x82, 0x73, 0xfb, 0x82, 0xfe, 0x5e, 0xe1, 0xdb, 0xf5, 0xb1, 0x0a, 0x19, 0x72, - 0x0f, 0x5a, 0x8c, 0x25, 0x9e, 0xb1, 0x7f, 0x0a, 0xa6, 0xbd, 0x78, 0x83, 0x89, 0x78, 0x03, 0x37, - 0xaa, 0xf6, 0x4e, 0xd9, 0xb3, 0xfc, 0xc2, 0x5f, 0x29, 0xc0, 0x2a, 0x41, 0xf4, 0xae, 0x06, 0xc8, - 0xca, 0x48, 0x12, 0xc2, 0xe9, 0x00, 0xdf, 0x7f, 0x79, 0x89, 0xdf, 0x70, 0x66, 0xcb, 0x71, 0x4e, - 0x2f, 0xf4, 0x7f, 0x35, 0xc1, 0x15, 0x42, 0x76, 0xb5, 0x63, 0xc2, 0xf8, 0x3a, 0xb3, 0xa9, 0x88, - 0x8d, 0x59, 0xde, 0x82, 0xc3, 0x4d, 0x33, 0xdc, 0xe2, 0xc1, 0xff, 0xc7, 0x02, 0x35, 0x5a, 0x00, - 0x58, 0x77, 0x3c, 0x73, 0xab, 0xd9, 0x6e, 0xe1, 0x48, 0x1e, 0x66, 0x9b, 0xa1, 0x21, 0x4b, 0xb1, - 0x52, 0x03, 0x7d, 0x1c, 0x46, 0x2c, 0xa9, 0x86, 0xbf, 0x50, 0xc5, 0x02, 0x11, 0xbf, 0x1b, 0x68, - 0xad, 0x76, 0x30, 0xc5, 0x8a, 0x3c, 0x98, 0x74, 0x85, 0xce, 0x25, 0x36, 0x57, 0xf9, 0x4c, 0x75, - 0x52, 0x79, 0x93, 0x3a, 0x63, 0x54, 0x82, 0x25, 0x11, 0x4a, 0x50, 0x1a, 0x55, 0xc6, 0x2a, 0x12, - 0x94, 0x16, 0x95, 0x61, 0xf6, 0xae, 0x35, 0xd5, 0x3e, 0x32, 0x7e, 0x78, 0xfb, 0xc8, 0x6c, 0xa1, - 0x6d, 0x64, 0x03, 0xc6, 0x43, 0xc3, 0x76, 0xc3, 0xc8, 0x33, 0xf4, 0xa5, 0xd2, 0x1f, 0x70, 0x8b, - 0xa2, 0x89, 0xf5, 0x3b, 0xf6, 0x33, 0xc0, 0x02, 0x3b, 0x5d, 0x8d, 0xdb, 0x2c, 0xa1, 0xa7, 0x08, - 0x98, 0x5a, 0x7e, 0x35, 0xf2, 0xbc, 0xa0, 0x7c, 0x35, 0xf2, 0xff, 0xb1, 0x40, 0x8d, 0xb6, 0xa8, - 0xc6, 0x2f, 0x2e, 0xbd, 0xa7, 0x2a, 0xa7, 0x2a, 0x14, 0x37, 0xde, 0xe2, 0xf5, 0x81, 0xb8, 0xea, - 0x96, 0x04, 0x90, 0x09, 0x13, 0xc2, 0xc4, 0x26, 0x32, 0x44, 0xbc, 0x50, 0x25, 0x4b, 0x4f, 0x94, - 0xee, 0x96, 0x3f, 0x09, 0x8f, 0x30, 0xeb, 0x7f, 0x32, 0xca, 0xad, 0xa3, 0xc2, 0xb9, 0xc8, 0x67, - 0xc9, 0x81, 0xa2, 0xb7, 0xaf, 0x5a, 0x85, 0x19, 0x93, 0x0f, 0x63, 0x13, 0x49, 0x81, 0xa2, 0xb7, - 0xb3, 0x0a, 0x15, 0xd4, 0x85, 0xc9, 0x08, 0x59, 0x25, 0x73, 0x73, 0x94, 0x8f, 0x8d, 0x0f, 0xa8, - 0xcc, 0xce, 0x26, 0x91, 0xa3, 0x66, 0xde, 0x5b, 0x27, 0x25, 0xd2, 0xdf, 0xa1, 0xde, 0x39, 0xe5, - 0xbb, 0x5f, 0x8d, 0x96, 0x72, 0xbf, 0x7a, 0x11, 0x4e, 0x88, 0x8b, 0xee, 0xb6, 0x45, 0xd8, 0xd5, - 0xab, 0x70, 0xd2, 0x66, 0x4e, 0x10, 0xcd, 0x24, 0x08, 0xa7, 0xeb, 0xa2, 0x2f, 0x69, 0xf0, 0x18, - 0x77, 0x10, 0x6f, 0xd2, 0xa3, 0x8c, 0xa5, 0x5a, 0x25, 0x71, 0x6e, 0xd7, 0xd8, 0x35, 0x69, 0xfc, - 0xc8, 0xae, 0x49, 0x8f, 0xef, 0xef, 0xd5, 0x1f, 0x6b, 0x1e, 0x02, 0x37, 0x3e, 0x54, 0x0f, 0xf4, - 0x1b, 0x30, 0x25, 0xb7, 0x30, 0x7a, 0x44, 0x11, 0x7d, 0x63, 0x2e, 0x7b, 0x83, 0xec, 0x72, 0x39, - 0xb8, 0x9e, 0x90, 0x83, 0xb9, 0x2a, 0xff, 0x1a, 0x2d, 0x10, 0x22, 0xb1, 0xfe, 0x9f, 0x35, 0xbe, - 0x66, 0x45, 0x7a, 0x60, 0x03, 0xa6, 0x7b, 0x3c, 0xc8, 0x21, 0x7b, 0x99, 0xa8, 0x95, 0x7f, 0x13, - 0xb9, 0x12, 0xa3, 0xc1, 0x2a, 0x4e, 0xb4, 0x93, 0xcd, 0x61, 0x7d, 0xad, 0x22, 0x7f, 0x39, 0x74, - 0x2a, 0x6b, 0x94, 0x6d, 0x43, 0x65, 0xec, 0xc8, 0xa9, 0x32, 0x95, 0x34, 0x38, 0xe3, 0x58, 0x79, - 0x60, 0x9a, 0x47, 0xfd, 0xeb, 0x35, 0xc8, 0xcd, 0x9f, 0x83, 0x74, 0x18, 0xe7, 0xae, 0xfe, 0x6a, - 0x76, 0x6f, 0xfe, 0x0e, 0x00, 0x0b, 0x08, 0xba, 0xc9, 0x55, 0x2c, 0xd7, 0x62, 0xb1, 0x7a, 0xe2, - 0xa9, 0x57, 0x5f, 0x95, 0x2c, 0xe5, 0x55, 0xc0, 0xf9, 0xed, 0xd0, 0x36, 0xa0, 0x9e, 0xb1, 0x93, - 0xc6, 0x56, 0x21, 0xa5, 0xc2, 0x4a, 0x06, 0x1b, 0xce, 0xa1, 0x40, 0xf7, 0xa2, 0x61, 0x9a, 0xa4, - 0x1f, 0x12, 0x8b, 0x7f, 0x62, 0x64, 0x26, 0x65, 0x7b, 0x71, 0x31, 0x09, 0xc2, 0xe9, 0xba, 0xfa, - 0xef, 0xd6, 0x60, 0x8c, 0x59, 0x60, 0xdf, 0x23, 0x0e, 0x49, 0xac, 0xaf, 0x85, 0x97, 0x73, 0x9b, - 0xa9, 0xcb, 0xb9, 0x57, 0x2a, 0xd0, 0x18, 0x7e, 0x3b, 0xf7, 0x31, 0x38, 0xc7, 0xaa, 0x2d, 0x5a, - 0x4c, 0x1c, 0x0f, 0x88, 0xb5, 0x68, 0x59, 0xec, 0xbd, 0xdc, 0xc1, 0x36, 0x88, 0x47, 0x60, 0x64, - 0xe0, 0x3b, 0xe9, 0x57, 0x9e, 0xb7, 0xf1, 0x32, 0xa6, 0xe5, 0xfa, 0xe7, 0x34, 0x38, 0xc9, 0x70, - 0x37, 0x7d, 0xc2, 0x58, 0xa6, 0xe1, 0x04, 0xe8, 0x0e, 0x4c, 0xfa, 0x42, 0x11, 0x17, 0xb3, 0xb3, - 0x52, 0xfe, 0xdb, 0x14, 0xc4, 0x58, 0x20, 0x15, 0xa9, 0x97, 0xc4, 0x2f, 0x2c, 0x89, 0xe9, 0x7f, - 0x31, 0x0e, 0xf3, 0x45, 0x8d, 0xd0, 0x2f, 0x6b, 0x70, 0xce, 0x8c, 0x39, 0xe8, 0xe2, 0x20, 0xdc, - 0xf4, 0x7c, 0x3b, 0xb4, 0x49, 0x50, 0x49, 0xb6, 0x6e, 0x2e, 0xca, 0x6e, 0xb1, 0x58, 0x1a, 0xcd, - 0x5c, 0x12, 0xb8, 0x80, 0x34, 0xfa, 0x24, 0xc0, 0x56, 0x1c, 0xc0, 0xab, 0x56, 0x21, 0x27, 0x36, - 0xfb, 0x70, 0x25, 0xca, 0x57, 0xd4, 0x2b, 0x26, 0xc9, 0x2b, 0xe5, 0x0a, 0x3d, 0x96, 0x91, 0x3b, - 0xd8, 0xbc, 0x41, 0x76, 0xfb, 0x86, 0xed, 0x57, 0xca, 0xc8, 0xcd, 0xd7, 0x61, 0xe7, 0xba, 0xc0, - 0x95, 0xa4, 0xae, 0x94, 0x2b, 0xf4, 0xd0, 0xdf, 0xd0, 0x60, 0x96, 0x9f, 0xd8, 0xc2, 0x15, 0x49, - 0xb0, 0xa0, 0x9b, 0xe5, 0x7b, 0x70, 0x53, 0x45, 0x27, 0x3b, 0xc1, 0x8c, 0xfb, 0x49, 0x50, 0x92, - 0x30, 0xfa, 0xbc, 0x06, 0xa7, 0x92, 0x99, 0xcc, 0x6e, 0x90, 0x5d, 0xa1, 0x0e, 0x74, 0x2a, 0x0c, - 0x48, 0x1a, 0xa5, 0xec, 0x12, 0x13, 0x86, 0xb2, 0xe0, 0x6c, 0x27, 0x58, 0xd7, 0x48, 0x68, 0x5a, - 0x22, 0x43, 0xbe, 0xed, 0xb9, 0xb4, 0x6b, 0xe3, 0x55, 0xbb, 0xb6, 0x74, 0xab, 0xd9, 0x4a, 0xa0, - 0x4c, 0x76, 0x2d, 0x0b, 0xce, 0x76, 0x42, 0xff, 0xd3, 0x51, 0xb8, 0x34, 0x1c, 0x19, 0x7a, 0x39, - 0xf2, 0x7e, 0xe7, 0x2c, 0xe6, 0x89, 0xb4, 0xf7, 0xfb, 0x7c, 0xce, 0x56, 0x4d, 0x78, 0xc2, 0xfb, - 0x80, 0x1c, 0x23, 0x08, 0x9b, 0x5e, 0xaf, 0xef, 0x90, 0x48, 0xe0, 0x29, 0x13, 0xec, 0x69, 0x5f, - 0x84, 0x5e, 0x4a, 0x62, 0xc2, 0x39, 0xd8, 0x23, 0x9a, 0x3c, 0x67, 0xa9, 0xa4, 0x39, 0x52, 0x9e, - 0x66, 0x12, 0x13, 0xce, 0xc1, 0x8e, 0xde, 0xd1, 0xe0, 0x7c, 0xb2, 0xf8, 0xaa, 0xed, 0xda, 0xc1, - 0xa6, 0x08, 0x02, 0x76, 0x74, 0xe7, 0x7b, 0x16, 0x00, 0x7f, 0xb9, 0x10, 0x23, 0x1e, 0x42, 0x0d, - 0xfd, 0xa2, 0x06, 0x17, 0x52, 0xe3, 0x92, 0x08, 0x49, 0x76, 0x74, 0x3f, 0x7c, 0xf6, 0x46, 0x75, - 0xb9, 0x18, 0x25, 0x1e, 0x46, 0x4f, 0xff, 0xd9, 0x1a, 0x3c, 0x54, 0xc0, 0xdf, 0x0a, 0x26, 0x4b, - 0x7b, 0xa0, 0x93, 0xf5, 0x3d, 0x58, 0x94, 0xcc, 0x81, 0x99, 0x8d, 0xc1, 0x7b, 0xc5, 0x81, 0x99, - 0x75, 0xb6, 0xc0, 0x55, 0xe0, 0xf7, 0x34, 0x38, 0x95, 0x89, 0x21, 0x76, 0x08, 0x71, 0xe4, 0x18, - 0x2f, 0xbd, 0x3f, 0x90, 0xce, 0xcc, 0x3e, 0x9d, 0x9b, 0x95, 0xfd, 0x75, 0x98, 0x4d, 0x38, 0x0a, - 0xc8, 0xc8, 0x09, 0x5a, 0x6e, 0xe4, 0x04, 0x35, 0x30, 0x42, 0x6d, 0x58, 0x60, 0x04, 0xfd, 0x33, - 0x35, 0x38, 0x5f, 0x7c, 0xa6, 0xfd, 0xa5, 0x59, 0xf6, 0x72, 0xeb, 0x67, 0x85, 0x8b, 0xbf, 0x34, - 0x63, 0x20, 0xcf, 0xd9, 0x42, 0x79, 0xe2, 0xaf, 0xce, 0xd9, 0xbf, 0x3a, 0x67, 0xef, 0xc3, 0x39, - 0xfb, 0xd5, 0x13, 0xe2, 0x8c, 0x61, 0x97, 0x0f, 0x9f, 0x80, 0x71, 0x16, 0xf5, 0x24, 0x52, 0x90, - 0x7e, 0xb4, 0x7c, 0x38, 0x95, 0x80, 0x1b, 0x36, 0xf8, 0xff, 0x58, 0xa0, 0x45, 0x2d, 0x38, 0x69, - 0x3a, 0xde, 0xc0, 0x12, 0x79, 0xee, 0x56, 0x63, 0x1b, 0x8a, 0x0c, 0x61, 0xd7, 0x4c, 0xc1, 0x71, - 0xa6, 0x05, 0xea, 0xa8, 0xd7, 0x11, 0xcf, 0x96, 0x75, 0xd4, 0xe3, 0x61, 0xdb, 0xe5, 0x35, 0x84, - 0x0f, 0x40, 0xa2, 0xe3, 0x22, 0x7a, 0xed, 0xf5, 0x52, 0xc9, 0xf0, 0x7c, 0xf2, 0xd4, 0x89, 0x2c, - 0x0e, 0xb2, 0x28, 0xc0, 0x0a, 0x15, 0x14, 0xc0, 0xf4, 0xa6, 0xbd, 0x4e, 0x7c, 0x37, 0x4e, 0x95, - 0x5d, 0xd6, 0x2c, 0x70, 0x3d, 0xc6, 0xc3, 0xcd, 0x6e, 0x4a, 0x01, 0x56, 0xa9, 0xa0, 0x80, 0x2b, - 0xa0, 0xdc, 0x00, 0x5b, 0x29, 0xa1, 0x76, 0x6c, 0xda, 0x8d, 0xbf, 0x34, 0x2e, 0xc3, 0x0a, 0x19, - 0x4a, 0xd4, 0x95, 0x81, 0x8f, 0xc4, 0xbd, 0x5b, 0x39, 0xa2, 0x71, 0xfc, 0xa4, 0x98, 0x68, 0x5c, - 0x86, 0x15, 0x32, 0x74, 0x78, 0x7b, 0x71, 0xb8, 0x2b, 0x71, 0x85, 0xf1, 0x4a, 0xd5, 0xb8, 0x63, - 0xc2, 0xaa, 0x19, 0x17, 0x60, 0x95, 0x0a, 0xf2, 0x00, 0x7a, 0x32, 0x0c, 0x96, 0xb8, 0xcf, 0x28, - 0xf7, 0xa5, 0x71, 0x34, 0x2d, 0xae, 0x54, 0xc7, 0xbf, 0xb1, 0x42, 0x02, 0x6d, 0x29, 0xd7, 0x59, - 0x50, 0xc1, 0xd2, 0x7f, 0xa8, 0xab, 0xac, 0x8f, 0xc4, 0x36, 0xd2, 0x69, 0xb6, 0x6f, 0x2f, 0x28, - 0xf6, 0xd1, 0x7b, 0x7b, 0xf5, 0x19, 0xc6, 0x4c, 0x32, 0xf6, 0xd2, 0xd8, 0x9f, 0x70, 0x66, 0xa8, - 0x3f, 0xe1, 0x35, 0xaa, 0x94, 0x2b, 0x6e, 0xfc, 0x8c, 0x41, 0xcc, 0xb2, 0x26, 0x32, 0x70, 0x5a, - 0x27, 0x5d, 0x01, 0x67, 0xdb, 0x70, 0xa9, 0x8b, 0x58, 0xac, 0xfd, 0x9c, 0x2a, 0x75, 0xf1, 0x32, - 0x2c, 0xa1, 0xe8, 0x0e, 0xcc, 0x04, 0x8a, 0x83, 0xa2, 0xc8, 0xa1, 0x56, 0xe5, 0x06, 0x4a, 0x78, - 0x27, 0xb2, 0x98, 0x30, 0x6a, 0x09, 0x4e, 0x10, 0x42, 0x9f, 0x84, 0xa9, 0xc8, 0x62, 0x1e, 0xcc, - 0x9f, 0xac, 0xf0, 0xf4, 0x2e, 0x3f, 0xfa, 0x59, 0x6c, 0x02, 0x8f, 0x40, 0x01, 0x8e, 0x09, 0xa2, - 0xed, 0xe4, 0xf3, 0xfb, 0x53, 0xf7, 0xe7, 0xc1, 0xb1, 0x74, 0x1f, 0x2a, 0x7a, 0x7a, 0x8f, 0x9a, - 0x70, 0x8a, 0xec, 0xf4, 0xbd, 0x60, 0xe0, 0x13, 0x16, 0x7c, 0x91, 0xcd, 0x10, 0x8a, 0xaf, 0x8b, - 0x96, 0xd2, 0x40, 0x9c, 0xad, 0x8f, 0x3e, 0xab, 0xc1, 0x49, 0x9e, 0x84, 0x8e, 0x9e, 0x6b, 0x9e, - 0x4b, 0xdc, 0x30, 0x60, 0x59, 0xd6, 0xca, 0x3e, 0x8f, 0xeb, 0xa4, 0x90, 0xf1, 0xbc, 0x21, 0xe9, - 0x52, 0x9c, 0x21, 0x4a, 0x57, 0x8f, 0xfa, 0x66, 0x99, 0x65, 0x6b, 0x2b, 0xbb, 0x7a, 0xd4, 0x07, - 0xd1, 0x7c, 0xf5, 0xa8, 0x25, 0x38, 0x41, 0x48, 0xff, 0xd7, 0x1a, 0x80, 0x34, 0x05, 0x93, 0x63, - 0xb0, 0x8f, 0x93, 0x84, 0x7d, 0xbc, 0x59, 0xcd, 0x76, 0x4d, 0x0a, 0x5f, 0xed, 0xfe, 0x91, 0x06, - 0x73, 0x71, 0xb5, 0x63, 0xd0, 0x7c, 0xad, 0xa4, 0xe6, 0xfb, 0x72, 0xc5, 0x0f, 0x2b, 0x50, 0x7f, - 0xff, 0x5f, 0x4d, 0xfd, 0x2c, 0x26, 0x6c, 0xdd, 0x51, 0x6e, 0x68, 0xf9, 0x9d, 0x70, 0xbb, 0xd2, - 0x0d, 0xad, 0xfa, 0x16, 0x32, 0xfe, 0xe2, 0x9c, 0x1b, 0xdb, 0x9f, 0x4e, 0x48, 0x3a, 0x55, 0x1e, - 0xfd, 0x4a, 0xb1, 0x26, 0xa2, 0xcd, 0x87, 0xe0, 0x20, 0xb1, 0xc7, 0x57, 0x39, 0x1f, 0xf7, 0xfa, - 0x5c, 0x2c, 0xf9, 0xd0, 0x54, 0xf9, 0xe4, 0xa1, 0xfc, 0x4e, 0xff, 0xca, 0x1c, 0x4c, 0x2b, 0x57, - 0x27, 0xdf, 0x93, 0x3b, 0xf9, 0x01, 0x4c, 0x9b, 0x32, 0x38, 0x71, 0x34, 0xf2, 0x55, 0x89, 0x4a, - 0x96, 0x1b, 0xc7, 0x3d, 0x0e, 0xb0, 0x4a, 0x87, 0x0a, 0x08, 0x72, 0xa1, 0x8d, 0xdc, 0x0f, 0x57, - 0x80, 0x61, 0x8b, 0xeb, 0x19, 0x80, 0x48, 0xd8, 0x24, 0x96, 0x08, 0x57, 0x27, 0x93, 0x7b, 0xb4, - 0x83, 0xeb, 0x12, 0x86, 0x95, 0x7a, 0xe8, 0x6d, 0x98, 0x75, 0xd4, 0x58, 0xf7, 0x42, 0x14, 0x2e, - 0xf7, 0x8c, 0x23, 0x11, 0x35, 0x9f, 0x5f, 0x05, 0x24, 0x8a, 0x70, 0x92, 0x16, 0xda, 0x82, 0x29, - 0x27, 0x4a, 0x64, 0x21, 0xe4, 0xe1, 0x97, 0x4a, 0x13, 0x66, 0x58, 0xb8, 0xe7, 0x8e, 0xfc, 0x89, - 0x63, 0xfc, 0x74, 0xdd, 0xc9, 0x1f, 0xd5, 0xbc, 0x77, 0x62, 0x6a, 0x72, 0xdd, 0xc9, 0xa2, 0x00, - 0x2b, 0x54, 0x0a, 0xbc, 0x2b, 0x26, 0x4b, 0x79, 0x57, 0x0c, 0xe0, 0xb4, 0x4f, 0x42, 0x7f, 0xb7, - 0xb9, 0x6b, 0xb2, 0x84, 0x32, 0x7e, 0xc8, 0xf4, 0xd6, 0xa9, 0x72, 0x71, 0x6a, 0x70, 0x16, 0x15, - 0xce, 0xc3, 0x8f, 0x2e, 0xc2, 0x28, 0x15, 0x9e, 0x44, 0x1c, 0x38, 0x66, 0x63, 0xa3, 0xa2, 0x15, - 0x66, 0xa5, 0xe8, 0x23, 0x30, 0x1d, 0x12, 0x73, 0xd3, 0xb5, 0x4d, 0xc3, 0x69, 0xb7, 0x84, 0x64, - 0x1a, 0xcb, 0x22, 0x31, 0x08, 0xab, 0xf5, 0x50, 0x03, 0x46, 0x06, 0xb6, 0x25, 0x44, 0xd2, 0x1f, - 0x92, 0x57, 0x9d, 0xed, 0xd6, 0xbd, 0xbd, 0xfa, 0xfb, 0x63, 0x4f, 0x65, 0xf9, 0x25, 0x57, 0xfa, - 0x5b, 0xdd, 0x2b, 0xe1, 0x6e, 0x9f, 0x04, 0x0b, 0xb7, 0xdb, 0x2d, 0x4c, 0x1b, 0xe7, 0x79, 0x9b, - 0xcc, 0x1e, 0xc1, 0xdb, 0xe4, 0x5d, 0x0d, 0x4e, 0x1b, 0xe9, 0x5b, 0x5a, 0x12, 0xcc, 0xcf, 0x55, - 0xe0, 0xca, 0xf9, 0x57, 0xbf, 0x71, 0xb8, 0xe0, 0xc5, 0x2c, 0x3d, 0x9c, 0xd7, 0x09, 0xe4, 0x03, - 0xea, 0xd9, 0x5d, 0x99, 0xb6, 0x42, 0x4c, 0xf5, 0x89, 0x72, 0xd6, 0x9a, 0x95, 0x0c, 0x26, 0x9c, - 0x83, 0x1d, 0xed, 0xc0, 0xb4, 0x19, 0x1b, 0xae, 0x58, 0xf2, 0xe0, 0xd2, 0x42, 0x5d, 0xea, 0x62, - 0x58, 0xe4, 0xa5, 0x57, 0xcc, 0x62, 0x2a, 0x29, 0x69, 0x27, 0x52, 0x14, 0x67, 0x61, 0x2b, 0x61, - 0x9f, 0x7d, 0xaa, 0xbc, 0x9d, 0x28, 0x1f, 0x23, 0x1e, 0x42, 0x8d, 0x05, 0x84, 0x71, 0x92, 0xe9, - 0x65, 0x98, 0x94, 0x5c, 0xf6, 0x01, 0x68, 0x2a, 0x55, 0x0d, 0x5f, 0x9d, 0xa9, 0x42, 0x9c, 0xa6, - 0xa8, 0xff, 0x77, 0x0d, 0x32, 0x42, 0x30, 0x32, 0x61, 0x82, 0xe2, 0x6e, 0xad, 0x76, 0x84, 0x34, - 0xf6, 0x42, 0xc9, 0x13, 0x8c, 0xe1, 0xe0, 0x46, 0x76, 0xf1, 0x03, 0x47, 0x98, 0xa9, 0x5c, 0xed, - 0x2a, 0x01, 0x5e, 0x85, 0xd4, 0x59, 0x4e, 0x4a, 0x50, 0x23, 0xc5, 0x72, 0xb9, 0x5a, 0x2d, 0xc1, - 0x09, 0x42, 0xfa, 0x32, 0x40, 0xac, 0xbb, 0x54, 0x76, 0xaa, 0xfa, 0xd3, 0x31, 0x38, 0x5b, 0xd5, - 0xa1, 0x9f, 0xa5, 0x00, 0x61, 0x29, 0xda, 0x17, 0x37, 0x42, 0xe2, 0xdf, 0xbc, 0xb9, 0x22, 0xd3, - 0x57, 0x97, 0xcc, 0x41, 0x12, 0x27, 0xf9, 0xcf, 0x60, 0xc4, 0x05, 0x94, 0x98, 0xde, 0x26, 0xb2, - 0x93, 0x62, 0x2a, 0xe3, 0xb1, 0xdc, 0xd4, 0x3c, 0x6c, 0x04, 0xd7, 0xdb, 0xd2, 0x40, 0x9c, 0xad, - 0x9f, 0x46, 0xc2, 0xd3, 0xc5, 0x53, 0x19, 0x41, 0xcb, 0x22, 0xe1, 0x39, 0xe3, 0xb3, 0xf5, 0x55, - 0x24, 0x7c, 0xa6, 0xe8, 0xde, 0x18, 0xcb, 0x22, 0x91, 0x40, 0x9c, 0xad, 0x8f, 0x2c, 0xb8, 0xe8, - 0x13, 0xd3, 0xeb, 0xf5, 0x88, 0x6b, 0xf1, 0xfc, 0x5a, 0x86, 0xdf, 0xb5, 0xdd, 0xab, 0xbe, 0xc1, - 0x2a, 0x32, 0x31, 0x40, 0x6b, 0x5c, 0xde, 0xdf, 0xab, 0x5f, 0xc4, 0x43, 0xea, 0xe1, 0xa1, 0x58, - 0x50, 0x0f, 0x4e, 0x0c, 0x58, 0x44, 0x78, 0xbf, 0xed, 0x86, 0xc4, 0xdf, 0x36, 0x1c, 0x61, 0xfa, - 0x2a, 0x95, 0x61, 0xf4, 0x76, 0x12, 0x15, 0x4e, 0xe3, 0x46, 0xbb, 0xf4, 0x6c, 0x16, 0xdd, 0x51, - 0x48, 0x4e, 0x96, 0x4f, 0x92, 0x83, 0xb3, 0xe8, 0x70, 0x1e, 0x0d, 0xfd, 0xef, 0x68, 0x20, 0xdc, - 0x7a, 0xe9, 0x51, 0xad, 0xdc, 0xe9, 0x4d, 0xa6, 0xee, 0xf3, 0x2e, 0x8a, 0x67, 0xae, 0xb5, 0x18, - 0xaa, 0x3c, 0x71, 0xfd, 0xa0, 0x12, 0x8f, 0x64, 0x2a, 0x96, 0x6b, 0x38, 0x66, 0x25, 0xab, 0xc2, - 0x0f, 0xc0, 0x44, 0xdf, 0xb7, 0x7b, 0x86, 0xbf, 0x2b, 0x44, 0x4c, 0x26, 0x70, 0x09, 0x87, 0x04, - 0xba, 0x77, 0x04, 0x54, 0xff, 0x96, 0x06, 0xa2, 0x35, 0x4b, 0x00, 0x72, 0xa8, 0x3c, 0x10, 0x07, - 0x3a, 0xf7, 0x29, 0xf9, 0x2b, 0x46, 0x0a, 0xf3, 0x57, 0x3c, 0xa0, 0xb4, 0x0e, 0x5f, 0xd5, 0xe0, - 0x44, 0x32, 0x38, 0x4c, 0x80, 0x3e, 0x00, 0x13, 0x22, 0x8c, 0x9c, 0x08, 0x01, 0xc5, 0x5f, 0xb8, - 0x8b, 0x64, 0xef, 0x11, 0x2c, 0x69, 0x70, 0xaa, 0xa2, 0xf6, 0xe5, 0x07, 0xa9, 0x39, 0x40, 0x01, - 0xdb, 0x9b, 0x83, 0x71, 0x1e, 0x81, 0x8c, 0x1e, 0x6e, 0x39, 0x2f, 0x23, 0x97, 0x2b, 0x44, 0x3a, - 0x2b, 0xf3, 0x90, 0x4d, 0x8d, 0x7b, 0x5d, 0x1b, 0x1a, 0xf7, 0xba, 0xc3, 0x53, 0xe6, 0x54, 0xb9, - 0x6f, 0x68, 0xe2, 0xb6, 0xc8, 0x9b, 0x1b, 0xa5, 0xcb, 0x19, 0x24, 0xcc, 0xf0, 0xa3, 0x15, 0xe4, - 0x1c, 0x3e, 0x04, 0x8a, 0x31, 0x7e, 0x6e, 0x88, 0x21, 0x3e, 0x8e, 0xf0, 0x34, 0x56, 0xc1, 0xe3, - 0x56, 0x8c, 0xfa, 0x21, 0x22, 0x3c, 0xc9, 0xdd, 0x34, 0x5e, 0xb8, 0x9b, 0xba, 0x30, 0x21, 0xf6, - 0x83, 0xe0, 0x8e, 0x2f, 0x54, 0xc9, 0x3e, 0xa3, 0xc4, 0x27, 0xe5, 0x05, 0x38, 0xc2, 0x4e, 0xcf, - 0xdc, 0x9e, 0xb1, 0x63, 0xf7, 0x06, 0x3d, 0xc6, 0x13, 0xc7, 0xd4, 0xaa, 0xac, 0x18, 0x47, 0x70, - 0x56, 0x95, 0xbb, 0x2a, 0x33, 0xd5, 0x46, 0xad, 0x2a, 0x52, 0xbf, 0x47, 0x70, 0xf4, 0x06, 0x4c, - 0xf6, 0x8c, 0x9d, 0xce, 0xc0, 0xef, 0x12, 0x61, 0x7f, 0x2f, 0x36, 0xbd, 0x0d, 0x42, 0xdb, 0x59, - 0xa0, 0x4a, 0x79, 0xe8, 0x2f, 0xb4, 0xdd, 0xf0, 0xa6, 0xdf, 0x09, 0x7d, 0x99, 0xdc, 0x62, 0x45, - 0x60, 0xc1, 0x12, 0x1f, 0x72, 0x60, 0xae, 0x67, 0xec, 0xdc, 0x76, 0x0d, 0x99, 0xa1, 0x7a, 0xba, - 0x24, 0x05, 0xe6, 0x00, 0xb1, 0x92, 0xc0, 0x85, 0x53, 0xb8, 0x73, 0x7c, 0x2d, 0x66, 0x1e, 0x94, - 0xaf, 0xc5, 0xa2, 0x7c, 0xc0, 0x32, 0xcb, 0x96, 0xe1, 0xc3, 0x79, 0xef, 0x61, 0x86, 0xbf, 0x4d, - 0xf9, 0x84, 0x7c, 0x9b, 0x32, 0x57, 0xe1, 0xb2, 0x72, 0xc8, 0xbb, 0x94, 0x6d, 0x98, 0xb6, 0x8c, - 0xd0, 0xe0, 0xa5, 0xc1, 0xfc, 0x89, 0x0a, 0xf6, 0xc1, 0x96, 0xc4, 0xa3, 0x64, 0x3a, 0x8c, 0x71, - 0x63, 0x95, 0x10, 0xba, 0xc9, 0x33, 0x18, 0x3b, 0x24, 0x8c, 0xab, 0x30, 0x33, 0xf9, 0x49, 0x7e, - 0x11, 0x12, 0xe5, 0x1b, 0xce, 0x54, 0xc0, 0xf9, 0xed, 0xe2, 0x28, 0x0d, 0xa7, 0xf2, 0xa3, 0x34, - 0xa0, 0x5f, 0xcc, 0xb3, 0xa7, 0xa3, 0x0a, 0x8f, 0xf4, 0x38, 0x7f, 0x28, 0x6d, 0x55, 0xff, 0x47, - 0x1a, 0xcc, 0xf7, 0x0a, 0x52, 0x02, 0x0a, 0x3b, 0xff, 0xed, 0x2a, 0x3c, 0xa2, 0x30, 0xcf, 0x60, - 0xe3, 0xb1, 0xfd, 0xbd, 0xfa, 0x81, 0xd9, 0x08, 0x71, 0x61, 0xe7, 0xaa, 0x3e, 0x4a, 0xae, 0x12, - 0x0f, 0xef, 0xb7, 0x34, 0x38, 0x99, 0x3e, 0x0a, 0xd4, 0x9c, 0xcb, 0xda, 0x03, 0xce, 0xb9, 0xac, - 0xb8, 0x4f, 0xd5, 0x86, 0xb8, 0x4f, 0xbd, 0x08, 0xe7, 0xf2, 0x57, 0x07, 0x15, 0xce, 0x58, 0xa6, - 0x73, 0xa1, 0x10, 0xc5, 0xf9, 0x58, 0x68, 0x21, 0xe6, 0x30, 0xfd, 0x53, 0x90, 0x8e, 0x63, 0x8a, - 0xb6, 0x60, 0x2a, 0x08, 0x36, 0x79, 0x74, 0x3a, 0xf1, 0x95, 0x25, 0xdd, 0xf7, 0xa3, 0x18, 0x77, - 0xe2, 0xe5, 0x5d, 0xf4, 0x13, 0xc7, 0xf8, 0x1b, 0x1f, 0xfb, 0xc6, 0x77, 0x2f, 0xbd, 0xef, 0x0f, - 0xbe, 0x7b, 0xe9, 0x7d, 0xdf, 0xfe, 0xee, 0xa5, 0xf7, 0xfd, 0xcc, 0xfe, 0x25, 0xed, 0x1b, 0xfb, - 0x97, 0xb4, 0x3f, 0xd8, 0xbf, 0xa4, 0x7d, 0x7b, 0xff, 0x92, 0xf6, 0x1f, 0xf6, 0x2f, 0x69, 0x7f, - 0xeb, 0x3f, 0x5e, 0x7a, 0xdf, 0x1b, 0x4f, 0xc7, 0xe4, 0xaf, 0x44, 0x54, 0xe3, 0x7f, 0xfa, 0x5b, - 0xdd, 0x2b, 0x94, 0x7c, 0xf4, 0x04, 0x9e, 0x93, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xcf, - 0x73, 0x5b, 0x75, 0x3b, 0xde, 0x00, 0x00, + // 11417 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6b, 0x8c, 0x25, 0xc7, + 0x75, 0x18, 0xac, 0xbe, 0xf3, 0x3e, 0xf3, 0xd8, 0xdd, 0xda, 0x07, 0x87, 0xcb, 0xe5, 0xde, 0x55, + 0x93, 0x92, 0xc9, 0x4f, 0xf2, 0xac, 0xf9, 0x90, 0x4d, 0xd2, 0x24, 0xc5, 0xb9, 0xf7, 0xce, 0xee, + 0x5e, 0xef, 0xcc, 0xec, 0xb0, 0xee, 0x0e, 0x29, 0x51, 0x86, 0xe5, 0x9e, 0xee, 0x9a, 0x3b, 0xcd, + 0xe9, 0xdb, 0x7d, 0xd9, 0xdd, 0x77, 0x76, 0x66, 0x29, 0x4b, 0xb6, 0x3e, 0xd9, 0x8a, 0x24, 0x58, + 0x49, 0x20, 0x04, 0x12, 0x28, 0x41, 0x96, 0x0c, 0x27, 0x50, 0x80, 0x18, 0x32, 0x04, 0x58, 0x79, + 0x42, 0x3f, 0x94, 0x1f, 0x16, 0xe4, 0x40, 0x31, 0x1c, 0x27, 0x50, 0x8c, 0x64, 0x14, 0x8d, 0x9d, + 0xd8, 0x09, 0x12, 0x24, 0x41, 0x90, 0x1f, 0x59, 0x24, 0x41, 0x50, 0x8f, 0xae, 0xae, 0x7e, 0xcd, + 0xa3, 0x7b, 0x76, 0x24, 0xc2, 0xfa, 0x35, 0x73, 0xeb, 0x54, 0x9d, 0x53, 0x5d, 0x8f, 0x53, 0xe7, + 0x9c, 0x3a, 0x75, 0x0e, 0x34, 0xbb, 0x76, 0xb8, 0x31, 0x58, 0x9b, 0x33, 0xbd, 0xde, 0xd5, 0xae, + 0xe1, 0x5b, 0xc4, 0x25, 0x7e, 0xfc, 0x4f, 0x7f, 0xb3, 0x7b, 0xd5, 0xe8, 0xdb, 0xc1, 0x55, 0xd3, + 0xf3, 0xc9, 0xd5, 0xad, 0x27, 0x0c, 0xa7, 0xbf, 0x61, 0x3c, 0x71, 0xb5, 0x4b, 0x81, 0x46, 0x48, + 0xac, 0xb9, 0xbe, 0xef, 0x85, 0x1e, 0x7a, 0x2a, 0x46, 0x32, 0x17, 0xb5, 0x8d, 0xff, 0xe9, 0x6f, + 0x76, 0xe7, 0x28, 0x92, 0x39, 0x8a, 0x64, 0x2e, 0x42, 0x72, 0xb1, 0x71, 0x24, 0xca, 0x6b, 0x24, + 0xcc, 0x12, 0xbe, 0xf8, 0xd3, 0x2a, 0x0e, 0xaf, 0xeb, 0x5d, 0x65, 0xc5, 0x6b, 0x83, 0x75, 0xf6, + 0x8b, 0xfd, 0x60, 0xff, 0x89, 0xea, 0x8f, 0x6f, 0x3e, 0x13, 0xcc, 0xd9, 0x1e, 0x45, 0x7c, 0xd5, + 0x18, 0x84, 0x5e, 0x60, 0x1a, 0x8e, 0xed, 0x76, 0xaf, 0x6e, 0x65, 0x31, 0xeb, 0x4a, 0x55, 0xd1, + 0x85, 0x7d, 0xeb, 0xf8, 0x6b, 0x86, 0x99, 0x57, 0xe7, 0xe9, 0xb8, 0x4e, 0xcf, 0x30, 0x37, 0x6c, + 0x97, 0xf8, 0x3b, 0xd1, 0xc7, 0x5d, 0xf5, 0x49, 0xe0, 0x0d, 0x7c, 0x93, 0x1c, 0xa9, 0x55, 0x70, + 0xb5, 0x47, 0x42, 0x23, 0x8f, 0xd6, 0xd5, 0xa2, 0x56, 0xfe, 0xc0, 0x0d, 0xed, 0x5e, 0x96, 0xcc, + 0xcf, 0x1e, 0xd4, 0x20, 0x30, 0x37, 0x48, 0xcf, 0xc8, 0xb4, 0x7b, 0xaa, 0xa8, 0xdd, 0x20, 0xb4, + 0x9d, 0xab, 0xb6, 0x1b, 0x06, 0xa1, 0x9f, 0x6e, 0xa4, 0x3f, 0x09, 0x23, 0xf3, 0x96, 0xe5, 0xb9, + 0xe8, 0x71, 0x18, 0x23, 0xae, 0xb1, 0xe6, 0x10, 0x6b, 0x56, 0xbb, 0xa2, 0x3d, 0x36, 0xde, 0x38, + 0xf5, 0x9d, 0xdd, 0xfa, 0x3b, 0xf6, 0x76, 0xeb, 0x63, 0x0b, 0xbc, 0x18, 0x47, 0x70, 0xfd, 0xf3, + 0x35, 0x18, 0x65, 0x8d, 0x02, 0xf4, 0x39, 0x0d, 0xce, 0x6e, 0x0e, 0xd6, 0x88, 0xef, 0x92, 0x90, + 0x04, 0x2d, 0x23, 0xd8, 0x58, 0xf3, 0x0c, 0x9f, 0xa3, 0x98, 0x7c, 0xf2, 0xc6, 0x5c, 0x89, 0x25, + 0x38, 0x77, 0x33, 0x8b, 0xaf, 0xf1, 0xc0, 0xde, 0x6e, 0xfd, 0x6c, 0x0e, 0x00, 0xe7, 0x51, 0x47, + 0x77, 0x60, 0xca, 0xed, 0xda, 0xee, 0x76, 0xdb, 0xed, 0xfa, 0x24, 0x08, 0x66, 0x6b, 0xac, 0x37, + 0xf3, 0xa5, 0x7a, 0xb3, 0xac, 0x20, 0x6a, 0x9c, 0xde, 0xdb, 0xad, 0x4f, 0xa9, 0x25, 0x38, 0x41, + 0x48, 0xff, 0x3d, 0x0d, 0x4e, 0xcd, 0x5b, 0x3d, 0x3b, 0x08, 0x6c, 0xcf, 0x5d, 0x71, 0x06, 0x5d, + 0xdb, 0x45, 0x57, 0x60, 0xd8, 0x35, 0x7a, 0x84, 0x0d, 0xc9, 0x44, 0x63, 0x4a, 0x8c, 0xea, 0xf0, + 0xb2, 0xd1, 0x23, 0x98, 0x41, 0xd0, 0xcb, 0x30, 0x6a, 0x7a, 0xee, 0xba, 0xdd, 0x15, 0x1d, 0xfd, + 0xe9, 0x39, 0x3e, 0x93, 0x73, 0xea, 0x4c, 0xb2, 0xfe, 0x89, 0x15, 0x30, 0x87, 0x8d, 0x3b, 0x0b, + 0xdb, 0x21, 0x71, 0x29, 0x99, 0x06, 0xec, 0xed, 0xd6, 0x47, 0x9b, 0x0c, 0x01, 0x16, 0x88, 0xd0, + 0x63, 0x30, 0x6e, 0xd9, 0x01, 0x9f, 0xce, 0x21, 0x36, 0x9d, 0x53, 0x7b, 0xbb, 0xf5, 0xf1, 0x96, + 0x28, 0xc3, 0x12, 0xaa, 0x5f, 0x83, 0xf1, 0x79, 0x87, 0xf8, 0xa1, 0xed, 0x76, 0xd1, 0x73, 0x30, + 0x43, 0x7a, 0x86, 0xed, 0x60, 0x62, 0x12, 0x7b, 0x8b, 0xf8, 0xc1, 0xac, 0x76, 0x65, 0xe8, 0xb1, + 0x89, 0x06, 0xda, 0xdb, 0xad, 0xcf, 0x2c, 0x24, 0x20, 0x38, 0x55, 0x53, 0xff, 0xb8, 0x06, 0x93, + 0xf3, 0x03, 0xcb, 0x0e, 0x79, 0x4f, 0x50, 0x00, 0x93, 0x06, 0xfd, 0xb9, 0xe2, 0x39, 0xb6, 0xb9, + 0x23, 0x16, 0xc4, 0x4b, 0xa5, 0xa6, 0x60, 0x3e, 0xc6, 0xd3, 0x38, 0xb5, 0xb7, 0x5b, 0x9f, 0x54, + 0x0a, 0xb0, 0x4a, 0x45, 0xdf, 0x00, 0x15, 0x86, 0x3e, 0x08, 0x53, 0x7c, 0x3c, 0x96, 0x8c, 0x3e, + 0x26, 0xeb, 0xa2, 0x13, 0x8f, 0x28, 0xc3, 0x1b, 0x51, 0x9a, 0xbb, 0xb5, 0xf6, 0x3a, 0x31, 0x43, + 0x4c, 0xd6, 0x89, 0x4f, 0x5c, 0x93, 0xf0, 0x99, 0x6e, 0x2a, 0x8d, 0x71, 0x02, 0x95, 0xfe, 0x03, + 0x0d, 0x4e, 0xcf, 0x6f, 0x19, 0xb6, 0x63, 0xac, 0xd9, 0x8e, 0x1d, 0xee, 0xbc, 0xe6, 0xb9, 0xe4, + 0x10, 0x53, 0xbd, 0x0a, 0x0f, 0x0c, 0x5c, 0x83, 0xb7, 0x73, 0xc8, 0x12, 0x9f, 0xdc, 0xdb, 0x3b, + 0x7d, 0x42, 0x17, 0x29, 0x1d, 0xea, 0x87, 0xf6, 0x76, 0xeb, 0x0f, 0xac, 0xe6, 0x57, 0xc1, 0x45, + 0x6d, 0x11, 0x86, 0x0b, 0x0a, 0xe8, 0x15, 0xcf, 0x19, 0xf4, 0x04, 0xd6, 0x21, 0x86, 0xf5, 0xe2, + 0xde, 0x6e, 0xfd, 0xc2, 0x6a, 0x6e, 0x0d, 0x5c, 0xd0, 0x52, 0xff, 0x6e, 0x0d, 0xa6, 0x1a, 0x86, + 0xb9, 0x39, 0xe8, 0x37, 0x06, 0xe6, 0x26, 0x09, 0xd1, 0x2f, 0xc3, 0x38, 0xe5, 0x71, 0x96, 0x11, + 0x1a, 0x62, 0x24, 0x7f, 0xa6, 0x70, 0xa1, 0xb2, 0x59, 0xa4, 0xb5, 0xe3, 0xb1, 0x5d, 0x22, 0xa1, + 0xd1, 0x40, 0x62, 0x4c, 0x20, 0x2e, 0xc3, 0x12, 0x2b, 0xea, 0xc2, 0x70, 0xd0, 0x27, 0xa6, 0xd8, + 0x06, 0x0b, 0xa5, 0x16, 0x8b, 0xda, 0xe5, 0x4e, 0x9f, 0x98, 0xf1, 0x34, 0xd0, 0x5f, 0x98, 0x11, + 0x40, 0x1e, 0x8c, 0x06, 0xa1, 0x11, 0x0e, 0x02, 0xb6, 0x39, 0x26, 0x9f, 0xbc, 0x5e, 0x9d, 0x14, + 0x43, 0xd7, 0x98, 0x11, 0xc4, 0x46, 0xf9, 0x6f, 0x2c, 0xc8, 0xe8, 0xdf, 0xd7, 0xe0, 0xb4, 0x5a, + 0x7d, 0xd1, 0x0e, 0x42, 0xf4, 0x8b, 0x99, 0x01, 0x9d, 0x3b, 0xdc, 0x80, 0xd2, 0xd6, 0x6c, 0x38, + 0x4f, 0x0b, 0x72, 0xe3, 0x51, 0x89, 0x32, 0x98, 0xeb, 0x30, 0x62, 0x87, 0xa4, 0xc7, 0x17, 0x56, + 0x59, 0xee, 0xa7, 0xf6, 0xb9, 0x31, 0x2d, 0xa8, 0x8d, 0xb4, 0x29, 0x5e, 0xcc, 0xd1, 0xeb, 0xbf, + 0x0c, 0xe7, 0xd4, 0x5a, 0x2b, 0xbe, 0xb7, 0x65, 0x5b, 0xc4, 0xa7, 0x9b, 0x21, 0xdc, 0xe9, 0x67, + 0x36, 0x03, 0x5d, 0x5c, 0x98, 0x41, 0xd0, 0xbb, 0x61, 0xd4, 0x27, 0x5d, 0xdb, 0x73, 0xd9, 0x84, + 0x4f, 0xc4, 0x83, 0x87, 0x59, 0x29, 0x16, 0x50, 0xfd, 0x3f, 0xd5, 0x92, 0x83, 0x47, 0x27, 0x12, + 0xdd, 0x81, 0xf1, 0xbe, 0x20, 0x25, 0x06, 0xaf, 0x5d, 0xf9, 0x0b, 0xa3, 0xbe, 0xc7, 0xe3, 0x1a, + 0x95, 0x60, 0x49, 0x0c, 0xd9, 0x30, 0x13, 0xfd, 0xdf, 0xac, 0xc0, 0xb5, 0x19, 0x4f, 0x5d, 0x49, + 0x20, 0xc2, 0x29, 0xc4, 0xe8, 0x36, 0x4c, 0x04, 0xc4, 0xf4, 0x09, 0xe5, 0x4b, 0x62, 0xa5, 0xe6, + 0x32, 0xaf, 0x4e, 0x54, 0x49, 0x30, 0xaf, 0x33, 0xa2, 0xfb, 0x13, 0x12, 0x80, 0x63, 0x44, 0xe8, + 0x12, 0x0c, 0x07, 0x84, 0x58, 0xb3, 0xc3, 0x6c, 0xd0, 0xc7, 0xd9, 0xd6, 0x20, 0xc4, 0xc2, 0xac, + 0x54, 0xff, 0xed, 0x61, 0x40, 0xd9, 0x85, 0xad, 0x7e, 0x35, 0x2f, 0x11, 0x83, 0x5e, 0xe5, 0xab, + 0xc5, 0x1e, 0x49, 0x21, 0x46, 0x6f, 0xc2, 0xb4, 0x63, 0x04, 0xe1, 0xad, 0x3e, 0x15, 0x54, 0xa2, + 0xd5, 0x31, 0xf9, 0x64, 0xa3, 0xd4, 0xf4, 0x2e, 0xaa, 0x98, 0x1a, 0x67, 0xf6, 0x76, 0xeb, 0xd3, + 0x89, 0x22, 0x9c, 0xa4, 0x85, 0x36, 0x61, 0x82, 0x16, 0x2c, 0xf8, 0xbe, 0xe7, 0x8b, 0x21, 0x7f, + 0xb1, 0x34, 0x61, 0x86, 0xa5, 0x31, 0x4d, 0x67, 0x42, 0xfe, 0xc4, 0x31, 0x7e, 0xf4, 0x0b, 0x80, + 0xbc, 0xb5, 0x80, 0xf8, 0x5b, 0xc4, 0xba, 0xce, 0xe5, 0x32, 0xfa, 0xb9, 0x74, 0x5e, 0x86, 0x1a, + 0x17, 0xc5, 0x1c, 0xa2, 0x5b, 0x99, 0x1a, 0x38, 0xa7, 0x15, 0xda, 0x04, 0x24, 0x65, 0x3b, 0x39, + 0xed, 0xb3, 0x23, 0x87, 0x5f, 0x34, 0x17, 0x28, 0xb1, 0xeb, 0x19, 0x14, 0x38, 0x07, 0xad, 0xfe, + 0x07, 0x35, 0x98, 0xe4, 0x8b, 0x64, 0xc1, 0x0d, 0xfd, 0x9d, 0x13, 0x38, 0x1a, 0xd6, 0x13, 0x47, + 0x43, 0xab, 0xc2, 0x56, 0x67, 0x3d, 0x2e, 0x3c, 0x19, 0xdc, 0xd4, 0xc9, 0x70, 0xad, 0x32, 0xa5, + 0xfd, 0x0f, 0x86, 0x7f, 0xa5, 0xc1, 0x29, 0xa5, 0xf6, 0x09, 0x9c, 0x0b, 0x24, 0x79, 0x2e, 0xbc, + 0x54, 0xf5, 0x03, 0x0b, 0x8e, 0x05, 0x33, 0xf1, 0x5d, 0x8c, 0x65, 0x3f, 0x09, 0xb0, 0xc6, 0x78, + 0xca, 0x72, 0x2c, 0x24, 0xc9, 0x59, 0x6f, 0x48, 0x08, 0x56, 0x6a, 0x49, 0x66, 0x55, 0xcb, 0x65, + 0x56, 0x7f, 0x31, 0x04, 0x67, 0x32, 0x63, 0x9d, 0x65, 0x20, 0xda, 0x8f, 0x8a, 0x81, 0xd4, 0x7e, + 0x24, 0x0c, 0x64, 0xa8, 0x14, 0x03, 0x79, 0x0c, 0xc6, 0xe9, 0x98, 0xb2, 0xb9, 0xe1, 0x47, 0x03, + 0x53, 0x19, 0x3a, 0xa2, 0x0c, 0x4b, 0x28, 0xf2, 0x01, 0xf5, 0xec, 0x2e, 0x6f, 0xd6, 0x09, 0x0d, + 0x3f, 0xbc, 0x6d, 0xf7, 0x88, 0x60, 0x35, 0xff, 0xdf, 0xe1, 0x56, 0x2a, 0x6d, 0xc1, 0x39, 0xce, + 0x52, 0x06, 0x13, 0xce, 0xc1, 0xae, 0xff, 0xf1, 0x30, 0x40, 0x73, 0x1e, 0x7b, 0x21, 0xef, 0xec, + 0xfb, 0x61, 0xa4, 0xbf, 0x61, 0x04, 0xd1, 0x2a, 0x7a, 0x3c, 0x5a, 0x82, 0x2b, 0xb4, 0xf0, 0xde, + 0x6e, 0x7d, 0xb6, 0xe9, 0x13, 0x8b, 0xb8, 0xa1, 0x6d, 0x38, 0x41, 0xd4, 0x88, 0xc1, 0x30, 0x6f, + 0x47, 0xbf, 0x81, 0x0e, 0x63, 0xd3, 0xeb, 0xf5, 0x1d, 0x42, 0xa1, 0xec, 0x1b, 0x6a, 0xe5, 0xbe, + 0x61, 0x31, 0x83, 0x09, 0xe7, 0x60, 0x8f, 0x68, 0xb6, 0x5d, 0x3b, 0xb4, 0x0d, 0x49, 0x73, 0xa8, + 0x3c, 0xcd, 0x24, 0x26, 0x9c, 0x83, 0x1d, 0x7d, 0x5a, 0x83, 0x8b, 0xc9, 0xe2, 0x6b, 0xb6, 0x6b, + 0x07, 0x1b, 0xc4, 0x62, 0xc4, 0x87, 0x8f, 0x4c, 0xfc, 0xf2, 0xde, 0x6e, 0xfd, 0xe2, 0x62, 0x21, + 0x46, 0xbc, 0x0f, 0x35, 0xf4, 0x9b, 0x1a, 0x3c, 0x94, 0x1a, 0x17, 0xdf, 0xee, 0x76, 0x89, 0x2f, + 0x7a, 0x73, 0xf4, 0x25, 0x54, 0xdf, 0xdb, 0xad, 0x3f, 0xb4, 0x58, 0x8c, 0x12, 0xef, 0x47, 0x4f, + 0xff, 0xa7, 0x1a, 0x0c, 0x35, 0x71, 0x1b, 0xbd, 0x27, 0xa1, 0xb7, 0x3d, 0xa0, 0xea, 0x6d, 0xf7, + 0x76, 0xeb, 0x63, 0x4d, 0xdc, 0x56, 0x54, 0xb8, 0xcf, 0x6a, 0x70, 0xc6, 0xf4, 0xdc, 0xd0, 0xa0, + 0xfd, 0xc2, 0x5c, 0xc8, 0x89, 0x98, 0x69, 0x39, 0x95, 0xa5, 0x99, 0xc2, 0xd6, 0x78, 0x50, 0xf4, + 0xe0, 0x4c, 0x1a, 0x12, 0xe0, 0x2c, 0x69, 0xfd, 0x5f, 0x6b, 0x30, 0xd5, 0x74, 0xbc, 0x81, 0xb5, + 0xe2, 0x7b, 0xeb, 0xb6, 0x43, 0xde, 0x26, 0x8a, 0x9a, 0xda, 0xe5, 0xa2, 0xe3, 0x98, 0xe9, 0x4d, + 0x6a, 0xc5, 0xb7, 0x8b, 0xde, 0xa4, 0xf6, 0xb9, 0xe0, 0x80, 0xfc, 0xe2, 0x58, 0xf2, 0xd3, 0xd8, + 0x11, 0xf9, 0x18, 0x8c, 0x9b, 0x46, 0x63, 0xe0, 0x5a, 0x8e, 0x54, 0x9c, 0x68, 0x37, 0x9b, 0xf3, + 0xbc, 0x0c, 0x4b, 0x28, 0x7a, 0x13, 0x20, 0x36, 0x7d, 0x89, 0x89, 0xb8, 0x5e, 0xd1, 0xde, 0xd6, + 0x21, 0x61, 0x68, 0xbb, 0xdd, 0x20, 0x9e, 0xfd, 0x18, 0x86, 0x15, 0x72, 0xe8, 0xa3, 0x30, 0x2d, + 0x86, 0xb9, 0xdd, 0x33, 0xba, 0xc2, 0xcc, 0x50, 0x76, 0xac, 0x96, 0x14, 0x4c, 0x8d, 0xf3, 0x82, + 0xf2, 0xb4, 0x5a, 0x1a, 0xe0, 0x24, 0x39, 0x74, 0x17, 0xa6, 0x7a, 0xaa, 0xed, 0x64, 0xb8, 0x82, + 0x28, 0xa3, 0x18, 0x52, 0x1a, 0xe7, 0x04, 0xf5, 0xa9, 0x84, 0xd9, 0x25, 0x41, 0x2b, 0x47, 0xff, + 0x1b, 0xb9, 0x5f, 0xfa, 0xdf, 0x3a, 0x8c, 0x71, 0x15, 0x38, 0x98, 0x1d, 0x65, 0x5f, 0xf8, 0xf3, + 0xa5, 0xbe, 0x90, 0xab, 0xd3, 0xb1, 0x41, 0x97, 0xff, 0x0e, 0x70, 0x84, 0x1c, 0xdd, 0x81, 0x29, + 0x7a, 0xb8, 0x77, 0x88, 0x43, 0xcc, 0xd0, 0xf3, 0x67, 0xc7, 0x2a, 0xd8, 0x4b, 0x3b, 0x0a, 0x22, + 0x6e, 0x45, 0x53, 0x4b, 0x70, 0x82, 0x90, 0xb4, 0x11, 0x8c, 0x17, 0xda, 0x08, 0xb6, 0x60, 0x72, + 0x4b, 0x31, 0x67, 0x4d, 0xb0, 0x61, 0x78, 0x7f, 0xa9, 0x9e, 0xc5, 0xc6, 0xad, 0xc6, 0x59, 0x41, + 0x69, 0x52, 0x35, 0x84, 0xa9, 0x84, 0xf4, 0xdd, 0x71, 0x38, 0xd3, 0x74, 0x06, 0x41, 0x48, 0xfc, + 0x79, 0x71, 0x27, 0x41, 0x7c, 0xf4, 0x71, 0x0d, 0x2e, 0xb0, 0x7f, 0x5b, 0xde, 0x1d, 0xb7, 0x45, + 0x1c, 0x63, 0x67, 0x7e, 0x9d, 0xd6, 0xb0, 0xac, 0xa3, 0x31, 0xa2, 0xd6, 0x40, 0xc8, 0x93, 0xcc, + 0x30, 0xd7, 0xc9, 0xc5, 0x88, 0x0b, 0x28, 0xa1, 0xcf, 0x68, 0xf0, 0x60, 0x0e, 0xa8, 0x45, 0x1c, + 0x12, 0x46, 0x22, 0xcc, 0x51, 0xfb, 0xf1, 0xf0, 0xde, 0x6e, 0xfd, 0xc1, 0x4e, 0x11, 0x52, 0x5c, + 0x4c, 0x8f, 0x1e, 0x87, 0x17, 0x73, 0xa0, 0xd7, 0x0c, 0xdb, 0x19, 0xf8, 0x91, 0x74, 0x73, 0xd4, + 0xee, 0x30, 0x21, 0xa3, 0x53, 0x88, 0x15, 0xef, 0x43, 0x11, 0x7d, 0x0c, 0xce, 0x4b, 0xe8, 0xaa, + 0xeb, 0x12, 0x62, 0x25, 0x64, 0x9d, 0xa3, 0x76, 0xe5, 0xc1, 0xbd, 0xdd, 0xfa, 0xf9, 0x4e, 0x1e, + 0x42, 0x9c, 0x4f, 0x07, 0x75, 0xe1, 0xe1, 0x18, 0x10, 0xda, 0x8e, 0x7d, 0x97, 0x8b, 0x63, 0x1b, + 0x3e, 0x09, 0x36, 0x3c, 0xc7, 0x62, 0xfc, 0x42, 0x6b, 0xbc, 0x73, 0x6f, 0xb7, 0xfe, 0x70, 0x67, + 0xbf, 0x8a, 0x78, 0x7f, 0x3c, 0xc8, 0x82, 0xa9, 0xc0, 0x34, 0xdc, 0xb6, 0x1b, 0x12, 0x7f, 0xcb, + 0x70, 0x66, 0x47, 0x4b, 0x7d, 0x20, 0xdf, 0xa3, 0x0a, 0x1e, 0x9c, 0xc0, 0x8a, 0x9e, 0x81, 0x71, + 0xb2, 0xdd, 0x37, 0x5c, 0x8b, 0x70, 0xc6, 0x30, 0xd1, 0xb8, 0x44, 0x8f, 0xa4, 0x05, 0x51, 0x76, + 0x6f, 0xb7, 0x3e, 0x15, 0xfd, 0xbf, 0xe4, 0x59, 0x04, 0xcb, 0xda, 0xe8, 0x23, 0x70, 0xae, 0x67, + 0x6c, 0x2f, 0x7b, 0x16, 0x61, 0x7c, 0x2e, 0x88, 0x24, 0xde, 0xf1, 0x52, 0xfd, 0x9c, 0xdd, 0xdb, + 0xad, 0x9f, 0x5b, 0xca, 0xc1, 0x87, 0x73, 0xa9, 0xd0, 0x69, 0xe8, 0x19, 0xdb, 0xd7, 0x7d, 0xc3, + 0x24, 0xeb, 0x03, 0xe7, 0x36, 0xf1, 0x7b, 0xb6, 0xcb, 0x95, 0x0a, 0x62, 0x7a, 0xae, 0x45, 0x79, + 0x89, 0xf6, 0xd8, 0x08, 0x9f, 0x86, 0xa5, 0xfd, 0x2a, 0xe2, 0xfd, 0xf1, 0xa0, 0xa7, 0x61, 0xca, + 0xee, 0xba, 0x9e, 0x4f, 0x6e, 0x1b, 0xb6, 0x1b, 0x06, 0xb3, 0xc0, 0x4c, 0xee, 0x6c, 0x58, 0xdb, + 0x4a, 0x39, 0x4e, 0xd4, 0xd2, 0x77, 0x87, 0x60, 0xa2, 0xe9, 0xb9, 0x96, 0xcd, 0xf4, 0x99, 0x27, + 0x12, 0xc6, 0xd2, 0x87, 0x55, 0x46, 0x78, 0x6f, 0xb7, 0x3e, 0x2d, 0x2b, 0x2a, 0x9c, 0xf1, 0x59, + 0x69, 0xa9, 0xe0, 0xba, 0xf1, 0x3b, 0x93, 0x16, 0x86, 0x7b, 0xbb, 0xf5, 0x53, 0xb2, 0x59, 0xd2, + 0xe8, 0x80, 0xb6, 0xb8, 0x22, 0x72, 0xdb, 0x37, 0xdc, 0xc0, 0xae, 0xa0, 0x88, 0x48, 0x15, 0x73, + 0x31, 0x83, 0x0d, 0xe7, 0x50, 0x40, 0xaf, 0xc3, 0x0c, 0x2d, 0x5d, 0xed, 0x5b, 0x46, 0x48, 0x4a, + 0xea, 0x1f, 0x17, 0x04, 0xcd, 0x99, 0xc5, 0x04, 0x26, 0x9c, 0xc2, 0xcc, 0x8d, 0xcb, 0x46, 0xe0, + 0xb9, 0x6c, 0xbb, 0x25, 0x8c, 0xcb, 0xb4, 0x14, 0x0b, 0x28, 0x7a, 0x1c, 0xc6, 0x7a, 0x24, 0x08, + 0x8c, 0x2e, 0x61, 0xfb, 0x67, 0x22, 0x3e, 0x26, 0x97, 0x78, 0x31, 0x8e, 0xe0, 0xe8, 0xbd, 0x30, + 0x62, 0x7a, 0x16, 0x09, 0x66, 0xc7, 0xd8, 0x0c, 0x53, 0x35, 0x6c, 0xa4, 0x49, 0x0b, 0xee, 0xed, + 0xd6, 0x27, 0x98, 0x42, 0x4e, 0x7f, 0x61, 0x5e, 0x49, 0xff, 0x2d, 0x2a, 0xba, 0xa6, 0x84, 0xf5, + 0xa2, 0x1b, 0x22, 0x3e, 0xad, 0x4c, 0xbd, 0x38, 0x39, 0xf3, 0xb2, 0xfe, 0x05, 0xaa, 0x38, 0x78, + 0x6e, 0xe8, 0x7b, 0xce, 0x8a, 0x63, 0xb8, 0x04, 0x7d, 0x52, 0x83, 0xd3, 0x1b, 0x76, 0x77, 0x43, + 0xbd, 0xd8, 0x12, 0x07, 0x5b, 0x39, 0x19, 0xff, 0x46, 0x0a, 0x59, 0xe3, 0xdc, 0xde, 0x6e, 0xfd, + 0x74, 0xba, 0x14, 0x67, 0x88, 0xea, 0x9f, 0xaa, 0xc1, 0x39, 0xd1, 0x35, 0x87, 0x1e, 0x35, 0x7d, + 0xc7, 0xdb, 0xe9, 0x11, 0xf7, 0x24, 0x2e, 0xa1, 0x22, 0x99, 0xa4, 0x56, 0x28, 0x93, 0xf4, 0x32, + 0x53, 0x34, 0x54, 0x66, 0x8a, 0xe4, 0x4a, 0x3e, 0x60, 0x9a, 0xfe, 0x52, 0x83, 0xd9, 0xbc, 0xb1, + 0x38, 0x01, 0x5d, 0xc8, 0x4d, 0xea, 0x42, 0xed, 0xd2, 0xea, 0x6d, 0xba, 0xef, 0x05, 0x3a, 0xd1, + 0x5f, 0xd6, 0xe0, 0x42, 0x5c, 0xbd, 0xed, 0x06, 0xa1, 0xe1, 0x38, 0xdc, 0xe2, 0x73, 0xff, 0x27, + 0xfe, 0x8d, 0x84, 0x52, 0x7b, 0xab, 0xe2, 0xb7, 0xaa, 0x9d, 0x2f, 0xb4, 0x36, 0xef, 0xa4, 0xac, + 0xcd, 0x2f, 0x1f, 0x27, 0xd1, 0xfd, 0x0d, 0xcf, 0xff, 0x59, 0x83, 0x8b, 0xf9, 0x0d, 0x4f, 0x60, + 0x5d, 0xf5, 0x93, 0xeb, 0xea, 0xe6, 0x31, 0x7e, 0x76, 0xc1, 0xca, 0xfa, 0x46, 0xad, 0xe8, 0x73, + 0x99, 0xde, 0xbd, 0x0e, 0xa7, 0xa8, 0x32, 0x14, 0x84, 0xc2, 0x40, 0x7a, 0x34, 0x67, 0x81, 0xc8, + 0x62, 0x74, 0x0a, 0x27, 0x71, 0xe0, 0x34, 0x52, 0xb4, 0x0c, 0x63, 0x54, 0x01, 0xa2, 0xf8, 0x6b, + 0x87, 0xc7, 0x2f, 0x8f, 0xa4, 0x0e, 0x6f, 0x8b, 0x23, 0x24, 0xe8, 0x17, 0x61, 0xda, 0x92, 0x9b, + 0xea, 0x80, 0x5b, 0xc2, 0x34, 0x56, 0x66, 0xcb, 0x6e, 0xa9, 0xad, 0x71, 0x12, 0x99, 0xfe, 0x7f, + 0x34, 0xb8, 0xb4, 0xdf, 0xe2, 0x42, 0x3e, 0x80, 0x19, 0xc9, 0x18, 0xdc, 0x59, 0xa4, 0xac, 0xb5, + 0x5b, 0x8a, 0x2a, 0xf1, 0x26, 0x95, 0x45, 0x01, 0x56, 0xa8, 0xe4, 0xdc, 0x44, 0xd6, 0xee, 0xd3, + 0x4d, 0xa4, 0xfe, 0x5f, 0x34, 0x95, 0x1d, 0xa9, 0x93, 0xfb, 0xb6, 0x63, 0x47, 0x6a, 0xe7, 0x0b, + 0xad, 0x6d, 0x7f, 0x52, 0x83, 0x2b, 0xf9, 0x4d, 0x94, 0x13, 0xf8, 0x25, 0x18, 0xed, 0x73, 0x9f, + 0x9e, 0x21, 0x76, 0x42, 0x3e, 0x46, 0x99, 0x0b, 0x77, 0xb8, 0xb9, 0xb7, 0x5b, 0xbf, 0x98, 0xc7, + 0xed, 0x85, 0xab, 0x8e, 0x68, 0x87, 0xec, 0x94, 0xb9, 0x81, 0x0b, 0x81, 0x4f, 0x1d, 0x92, 0xbf, + 0x18, 0x6b, 0xc4, 0x39, 0xb4, 0x81, 0xe1, 0xe3, 0x1a, 0xcc, 0x24, 0xd6, 0x74, 0x30, 0x3b, 0xc2, + 0x56, 0x69, 0xb9, 0xcb, 0xa0, 0xc4, 0x6e, 0x89, 0x0f, 0xf0, 0x44, 0x71, 0x80, 0x53, 0x14, 0x53, + 0xac, 0x56, 0x1d, 0xd6, 0xb7, 0x1f, 0xab, 0x55, 0x7b, 0x5f, 0xc0, 0x6a, 0xbf, 0x5c, 0x2b, 0xfa, + 0x5c, 0xc6, 0x6a, 0xb7, 0x61, 0x22, 0xf2, 0xb0, 0x8c, 0x58, 0xc6, 0xf5, 0xca, 0x9d, 0xe2, 0xf8, + 0x62, 0xc7, 0x87, 0xa8, 0x24, 0xc0, 0x31, 0x31, 0xf4, 0xeb, 0x1a, 0x40, 0x3c, 0x35, 0x62, 0x63, + 0xad, 0x1e, 0xe3, 0x80, 0x28, 0xf2, 0xcd, 0x0c, 0xdd, 0xd7, 0xca, 0xba, 0x50, 0x08, 0xeb, 0x5f, + 0x1f, 0x02, 0x94, 0xed, 0x3c, 0x15, 0x3c, 0x37, 0x6d, 0xd7, 0x4a, 0xeb, 0x06, 0x37, 0x6d, 0xd7, + 0xc2, 0x0c, 0x72, 0x08, 0xd1, 0xf4, 0x05, 0x38, 0xd5, 0x75, 0xbc, 0x35, 0xc3, 0x71, 0x76, 0x84, + 0xdb, 0xa6, 0x70, 0xff, 0x3b, 0x4b, 0x8f, 0xa7, 0xeb, 0x49, 0x10, 0x4e, 0xd7, 0x45, 0x7d, 0x38, + 0xed, 0x53, 0xad, 0xd6, 0xb4, 0x1d, 0xa6, 0x45, 0x79, 0x83, 0xb0, 0xa4, 0xd9, 0x84, 0x09, 0xfa, + 0x38, 0x85, 0x0b, 0x67, 0xb0, 0xa3, 0x77, 0xc1, 0x58, 0xdf, 0xb7, 0x7b, 0x86, 0xbf, 0xc3, 0xf4, + 0xb4, 0xf1, 0xc6, 0x24, 0x3d, 0xe7, 0x56, 0x78, 0x11, 0x8e, 0x60, 0xe8, 0x57, 0x60, 0xc2, 0xb1, + 0xd7, 0x89, 0xb9, 0x63, 0x3a, 0x44, 0xd8, 0x39, 0x56, 0x8e, 0x69, 0xd1, 0x2c, 0x46, 0x78, 0xc5, + 0x3d, 0x6b, 0xf4, 0x13, 0xc7, 0x14, 0xf5, 0x4f, 0xd7, 0xe0, 0xa1, 0x7d, 0x5a, 0x22, 0x4c, 0xd7, + 0xb4, 0xf8, 0x32, 0x31, 0x7f, 0x4f, 0xf3, 0x65, 0x28, 0x0a, 0xef, 0xed, 0xd6, 0x1f, 0xd9, 0x07, + 0x41, 0x87, 0x2e, 0x20, 0xd2, 0xdd, 0xc1, 0x31, 0x1a, 0xd4, 0x86, 0x51, 0x2b, 0x36, 0xe9, 0x4d, + 0x34, 0x9e, 0xa0, 0x7c, 0x96, 0x1b, 0xdd, 0x0e, 0x8b, 0x4d, 0x20, 0x40, 0x8b, 0x30, 0xc6, 0xaf, + 0x54, 0x89, 0xe0, 0xd9, 0x4f, 0x32, 0xfd, 0x96, 0x17, 0x1d, 0x16, 0x59, 0x84, 0x42, 0xff, 0x5f, + 0x1a, 0x8c, 0x35, 0x3d, 0x9f, 0xb4, 0x96, 0x3b, 0xe8, 0x2e, 0x4c, 0x2a, 0x2e, 0xdb, 0x82, 0x7d, + 0x95, 0xdd, 0xce, 0x0c, 0xe5, 0x7c, 0x8c, 0x2e, 0x72, 0xf6, 0x94, 0x05, 0x58, 0x25, 0x86, 0x7c, + 0x3a, 0xe8, 0x77, 0x7c, 0x3b, 0xa4, 0x94, 0x2b, 0xdd, 0x44, 0x71, 0xca, 0x38, 0x42, 0xc6, 0x17, + 0x82, 0xfc, 0x89, 0x63, 0x32, 0xfa, 0x0a, 0xdd, 0xb9, 0xe9, 0x7e, 0xa2, 0xe7, 0x60, 0xb8, 0xe7, + 0x59, 0xd1, 0xcc, 0xbf, 0x3b, 0xda, 0x97, 0x4b, 0x9e, 0x45, 0x47, 0xf7, 0x42, 0xb6, 0x05, 0x33, + 0x94, 0xb1, 0x36, 0xfa, 0x32, 0x9c, 0x4e, 0xd3, 0x47, 0xcf, 0xc1, 0x8c, 0xe9, 0xf5, 0x7a, 0x9e, + 0xdb, 0x19, 0xac, 0xaf, 0xdb, 0xdb, 0x24, 0xe1, 0x87, 0xdb, 0x4c, 0x40, 0x70, 0xaa, 0xa6, 0xfe, + 0x25, 0x0d, 0x86, 0xe8, 0xcc, 0xe8, 0x30, 0x6a, 0x79, 0x3d, 0xc3, 0x76, 0x45, 0xaf, 0x98, 0x97, + 0x70, 0x8b, 0x95, 0x60, 0x01, 0x41, 0x6f, 0xc0, 0x44, 0x24, 0xf1, 0x54, 0x73, 0x07, 0x69, 0x2d, + 0x77, 0xa4, 0xef, 0x9c, 0xe4, 0xc1, 0x51, 0x49, 0x80, 0x63, 0x2a, 0xba, 0x01, 0x67, 0x5a, 0xcb, + 0x9d, 0xb6, 0x6b, 0x3a, 0x03, 0x8b, 0x2c, 0x6c, 0xb3, 0x3f, 0x94, 0x09, 0xd8, 0xbc, 0x44, 0x7c, + 0x28, 0x63, 0x02, 0xa2, 0x12, 0x8e, 0x60, 0xb4, 0x1a, 0xe1, 0x2d, 0x84, 0xb3, 0x2c, 0xab, 0x26, + 0x90, 0xe0, 0x08, 0xa6, 0xff, 0x69, 0x0d, 0x26, 0x95, 0x0e, 0xa1, 0x1e, 0x8c, 0xf1, 0xef, 0x8d, + 0x7c, 0xd6, 0xae, 0x95, 0xfd, 0xc6, 0x64, 0xb7, 0x39, 0x79, 0x3e, 0xa4, 0x01, 0x8e, 0x68, 0xa8, + 0x1c, 0xad, 0xb6, 0x0f, 0x47, 0x9b, 0x03, 0xe0, 0x2e, 0x79, 0xcc, 0xe1, 0x82, 0x6f, 0x4b, 0x76, + 0x68, 0x74, 0x64, 0x29, 0x56, 0x6a, 0xa0, 0x4b, 0x82, 0xf7, 0x2b, 0x5e, 0x7b, 0x0a, 0xdf, 0xef, + 0xc2, 0xc8, 0x5d, 0xcf, 0x25, 0x81, 0xb8, 0x8b, 0x3a, 0xae, 0x2f, 0x9c, 0xa0, 0x87, 0xfb, 0x6b, + 0x14, 0x31, 0xe6, 0xf8, 0xf5, 0xaf, 0x6a, 0x00, 0x2d, 0x23, 0x34, 0xf8, 0xc5, 0xc9, 0x21, 0x3c, + 0x9e, 0x2f, 0x25, 0xce, 0xac, 0xf1, 0x8c, 0x0b, 0xe8, 0x70, 0x60, 0xdf, 0x8d, 0xbe, 0x5f, 0x0a, + 0xc4, 0x1c, 0x7b, 0xc7, 0xbe, 0x4b, 0x30, 0x83, 0xa3, 0xf7, 0xc0, 0x04, 0x71, 0x4d, 0x7f, 0xa7, + 0x1f, 0x0a, 0xc7, 0xc5, 0x71, 0xbe, 0x49, 0x17, 0xa2, 0x42, 0x1c, 0xc3, 0xf5, 0x27, 0x20, 0xa9, + 0xd6, 0x1c, 0xdc, 0x4b, 0xfd, 0x87, 0xc3, 0xf0, 0xe0, 0xc2, 0xed, 0x66, 0x4b, 0xe0, 0xb3, 0x3d, + 0xf7, 0x26, 0xd9, 0xf9, 0x89, 0xb7, 0xc9, 0x4f, 0xbc, 0x4d, 0x8e, 0xd1, 0xdb, 0xe4, 0x9e, 0x06, + 0xa7, 0x17, 0xb6, 0xfb, 0xb6, 0xcf, 0x3c, 0xed, 0x89, 0x4f, 0xd5, 0x50, 0xf4, 0x38, 0x8c, 0x6d, + 0xf1, 0x7f, 0xc5, 0xe2, 0x92, 0xba, 0xbe, 0xa8, 0x81, 0x23, 0x38, 0x5a, 0x87, 0x19, 0xc2, 0x9a, + 0x33, 0x51, 0xd3, 0x08, 0xcb, 0x2c, 0x20, 0xfe, 0x92, 0x23, 0x81, 0x05, 0xa7, 0xb0, 0xa2, 0x0e, + 0xcc, 0x98, 0x8e, 0x11, 0x04, 0xf6, 0xba, 0x6d, 0xc6, 0x0e, 0x65, 0x13, 0x8d, 0xf7, 0xb0, 0xd3, + 0x27, 0x01, 0xb9, 0xb7, 0x5b, 0x3f, 0x2f, 0xfa, 0x99, 0x04, 0xe0, 0x14, 0x0a, 0xfd, 0xad, 0x1a, + 0x4c, 0x2f, 0x6c, 0xf7, 0xbd, 0x60, 0xe0, 0x13, 0x56, 0xf5, 0x04, 0x34, 0xe8, 0xc7, 0x61, 0x6c, + 0xc3, 0x70, 0x2d, 0x87, 0xf8, 0x82, 0xfb, 0xc8, 0xb1, 0xbd, 0xc1, 0x8b, 0x71, 0x04, 0x47, 0x1f, + 0x01, 0x08, 0xcc, 0x0d, 0x62, 0x0d, 0x98, 0x18, 0xc3, 0x37, 0xc9, 0x62, 0x29, 0x26, 0x9a, 0xf8, + 0xc8, 0x8e, 0xc4, 0x29, 0x78, 0xbb, 0xfc, 0x8d, 0x15, 0x7a, 0xfa, 0x9f, 0x6a, 0x70, 0x26, 0xd1, + 0xee, 0x04, 0xf4, 0xc2, 0x6e, 0x52, 0x2f, 0x6c, 0x54, 0xff, 0xd8, 0x02, 0x75, 0xf0, 0xd3, 0x35, + 0x78, 0xa0, 0x60, 0x50, 0x32, 0x8e, 0x07, 0xda, 0x49, 0x39, 0x1e, 0x6c, 0xc1, 0x64, 0xe8, 0x39, + 0xc2, 0xf5, 0x31, 0x1a, 0x83, 0x72, 0x6e, 0x05, 0xb7, 0x25, 0x9e, 0xd8, 0xad, 0x20, 0x2e, 0x0b, + 0xb0, 0x4a, 0x48, 0xff, 0xb6, 0x06, 0x13, 0xd2, 0x06, 0x75, 0x88, 0x27, 0x12, 0x27, 0xf8, 0xd8, + 0xe0, 0xf0, 0x4f, 0xc6, 0xfe, 0x59, 0x0d, 0x2e, 0x48, 0xdc, 0x91, 0xc2, 0xd0, 0x09, 0x29, 0xef, + 0x38, 0x58, 0x87, 0xbd, 0x24, 0xce, 0x62, 0x45, 0x1e, 0x50, 0xa4, 0x05, 0x2a, 0x3c, 0x0d, 0xfc, + 0xbe, 0x17, 0x44, 0x22, 0x01, 0x17, 0x9e, 0x78, 0x11, 0x8e, 0x60, 0x68, 0x19, 0x46, 0x02, 0x4a, + 0x4f, 0x9c, 0x28, 0x47, 0x1c, 0x0d, 0x26, 0xd5, 0xb0, 0xfe, 0x62, 0x8e, 0x06, 0xbd, 0xa9, 0xda, + 0x24, 0xb8, 0x81, 0xe8, 0x17, 0x8e, 0xb6, 0x18, 0xd8, 0x4b, 0xd8, 0x39, 0xfa, 0x25, 0x56, 0x34, + 0x22, 0x39, 0xef, 0x31, 0xf2, 0xcc, 0x12, 0xfa, 0x22, 0x9c, 0x16, 0xbe, 0x0b, 0x7c, 0xd9, 0xb8, + 0x26, 0x41, 0xcf, 0x24, 0x56, 0xc6, 0xa3, 0xa9, 0xfb, 0xe0, 0x73, 0xe9, 0xfa, 0xf1, 0x8a, 0xd1, + 0x03, 0x18, 0xbf, 0x2e, 0x3a, 0x89, 0x2e, 0x42, 0xcd, 0x8e, 0xe6, 0x02, 0x04, 0x8e, 0x5a, 0xbb, + 0x85, 0x6b, 0xb6, 0x25, 0x65, 0xa2, 0x5a, 0xa1, 0xe4, 0xa6, 0x1c, 0x4d, 0x43, 0xfb, 0x1f, 0x4d, + 0xfa, 0xbf, 0xaf, 0xc1, 0xb9, 0x88, 0x6a, 0xf4, 0x8d, 0x2d, 0x71, 0x99, 0x76, 0x80, 0x7c, 0x78, + 0xb0, 0x4d, 0xe3, 0x16, 0x0c, 0x33, 0x1e, 0x58, 0xea, 0x92, 0x4d, 0x22, 0xa4, 0xdd, 0xc1, 0x0c, + 0x11, 0xfa, 0x15, 0x18, 0x75, 0x8c, 0x35, 0xe2, 0x44, 0x7e, 0x63, 0xe5, 0x4c, 0x40, 0x79, 0xdf, + 0xcb, 0xad, 0x93, 0x01, 0xf7, 0x8b, 0x97, 0x37, 0x2f, 0xbc, 0x10, 0x0b, 0xa2, 0x17, 0x9f, 0x85, + 0x49, 0xa5, 0x1a, 0x3a, 0x0d, 0x43, 0x9b, 0x84, 0x5f, 0xb3, 0x4e, 0x60, 0xfa, 0x2f, 0x3a, 0x07, + 0x23, 0x5b, 0x86, 0x33, 0x10, 0x63, 0x82, 0xf9, 0x8f, 0xe7, 0x6a, 0xcf, 0x68, 0xfa, 0xd7, 0x35, + 0x98, 0xbc, 0x61, 0xaf, 0x11, 0x9f, 0x7b, 0x20, 0x30, 0x8d, 0x28, 0xf1, 0x68, 0x77, 0x32, 0xef, + 0xc1, 0x2e, 0xda, 0x81, 0x09, 0x71, 0xda, 0x48, 0x4f, 0xd5, 0x1b, 0x25, 0xef, 0x73, 0x25, 0x6d, + 0xc1, 0xc5, 0xd5, 0xc7, 0x46, 0x11, 0x09, 0x1c, 0x53, 0xd3, 0xdf, 0x84, 0xb3, 0x39, 0x8d, 0x50, + 0x9d, 0x6d, 0x60, 0x3f, 0x14, 0x0b, 0x23, 0xda, 0x91, 0x7e, 0x88, 0x79, 0x39, 0x7a, 0x10, 0x86, + 0x88, 0x1b, 0xb9, 0xfd, 0x8f, 0xed, 0xed, 0xd6, 0x87, 0x16, 0x5c, 0x0b, 0xd3, 0x32, 0xca, 0xa8, + 0x1c, 0x2f, 0x21, 0x99, 0x30, 0x46, 0xb5, 0x28, 0xca, 0xb0, 0x84, 0xea, 0x5f, 0xd1, 0x20, 0x73, + 0xd9, 0x8c, 0x3e, 0xa3, 0xc1, 0xe9, 0xf5, 0xd4, 0xfe, 0xa9, 0x74, 0xc9, 0x9d, 0xde, 0x8c, 0x8d, + 0x59, 0x31, 0x22, 0x99, 0x6d, 0x8d, 0x33, 0x84, 0xf5, 0x7f, 0x34, 0x0c, 0x0f, 0xdf, 0xf0, 0x7c, + 0xfb, 0xae, 0xe7, 0x86, 0x86, 0xb3, 0xe2, 0x59, 0xb1, 0xb7, 0x99, 0xe0, 0xcb, 0xbf, 0xae, 0xc1, + 0x03, 0x66, 0x7f, 0xc0, 0x85, 0xdc, 0xc8, 0x09, 0x68, 0x85, 0xf8, 0xb6, 0x57, 0xd6, 0xe9, 0x8c, + 0xbd, 0x31, 0x6d, 0xae, 0xac, 0xe6, 0xa1, 0xc4, 0x45, 0xb4, 0x98, 0xef, 0x9b, 0xe5, 0xdd, 0x71, + 0x59, 0xe7, 0x3a, 0x21, 0x1b, 0xce, 0xbb, 0xf1, 0x2c, 0x94, 0xf4, 0x7d, 0x6b, 0xe5, 0x62, 0xc4, + 0x05, 0x94, 0xd0, 0xc7, 0xe0, 0xbc, 0xcd, 0x3b, 0x87, 0x89, 0x61, 0xd9, 0x2e, 0x09, 0x02, 0xe6, + 0x01, 0x56, 0xc5, 0xb9, 0xab, 0x9d, 0x87, 0x10, 0xe7, 0xd3, 0x41, 0xbf, 0x04, 0x10, 0xec, 0xb8, + 0xa6, 0x18, 0xff, 0x91, 0x52, 0x54, 0xb9, 0x28, 0x28, 0xb1, 0x60, 0x05, 0x23, 0x55, 0x74, 0x43, + 0xb9, 0x2a, 0x47, 0x99, 0xa3, 0x18, 0x53, 0x74, 0xe3, 0x35, 0x14, 0xc3, 0xf5, 0xdf, 0xd5, 0x60, + 0x4c, 0x3c, 0x3d, 0x47, 0xef, 0x4e, 0xd9, 0x7b, 0x24, 0xf7, 0x49, 0xd9, 0x7c, 0xee, 0xb2, 0x2b, + 0x3b, 0x61, 0xed, 0x13, 0xd2, 0x44, 0x39, 0x73, 0x81, 0xa0, 0x1c, 0xdb, 0x0e, 0x13, 0x57, 0x77, + 0x91, 0x3d, 0x51, 0xa1, 0x46, 0xf7, 0xe3, 0x99, 0x4c, 0xab, 0x43, 0xc8, 0x0c, 0x27, 0xe8, 0x13, + 0xf3, 0xad, 0x19, 0x60, 0x71, 0x06, 0xe6, 0x57, 0xda, 0x1d, 0xe2, 0x6f, 0xc9, 0x5d, 0x48, 0xb9, + 0x46, 0xec, 0x00, 0x2d, 0x7a, 0x51, 0x85, 0x6b, 0xdc, 0x4c, 0x21, 0x8b, 0xb9, 0x46, 0x1a, 0x82, + 0x33, 0x84, 0xa9, 0x9e, 0x7d, 0xda, 0x48, 0xc6, 0x19, 0x88, 0x18, 0x7b, 0xb9, 0xa7, 0x71, 0xa9, + 0xa0, 0x05, 0x71, 0x67, 0x52, 0x80, 0x00, 0x67, 0xe8, 0xa2, 0xa7, 0x61, 0xca, 0xe8, 0xdb, 0xf3, + 0x03, 0xcb, 0xa6, 0xc2, 0x4e, 0xf4, 0xe4, 0x9c, 0x49, 0xe0, 0xf3, 0x2b, 0x6d, 0x59, 0x8e, 0x13, + 0xb5, 0x64, 0x7c, 0x00, 0x31, 0x94, 0xc3, 0x55, 0xe3, 0x03, 0x88, 0x51, 0x8c, 0xe3, 0x03, 0x88, + 0xc1, 0x53, 0xa9, 0xa0, 0x0f, 0xc1, 0x83, 0xfc, 0x4c, 0x6c, 0x18, 0x81, 0x6d, 0xce, 0x0f, 0xc2, + 0x0d, 0xe2, 0x86, 0x91, 0x96, 0xcb, 0xef, 0x1f, 0x98, 0x27, 0xec, 0x42, 0x51, 0x25, 0x5c, 0xdc, + 0x1e, 0x79, 0x00, 0x9e, 0x6d, 0x99, 0xe2, 0x83, 0xf8, 0x25, 0x45, 0x39, 0x95, 0xe2, 0x56, 0xbb, + 0xd5, 0x14, 0xdf, 0xc3, 0x78, 0x45, 0xfc, 0x1b, 0x2b, 0x24, 0xd0, 0x17, 0x34, 0x98, 0x16, 0x0b, + 0x5d, 0x10, 0x1d, 0x63, 0x4b, 0xe0, 0x43, 0xa5, 0x17, 0x64, 0x6a, 0xd5, 0xcf, 0x61, 0x15, 0x3b, + 0x97, 0x6a, 0xa4, 0x83, 0x7e, 0x02, 0x86, 0x93, 0x1d, 0x41, 0x9f, 0xd7, 0xe0, 0x5c, 0x40, 0xfc, + 0x2d, 0xdb, 0x24, 0xf3, 0xa6, 0xe9, 0x0d, 0xdc, 0x68, 0x9e, 0xc7, 0x2b, 0x3c, 0xd5, 0xee, 0xe4, + 0x20, 0xe4, 0x6e, 0xa1, 0x79, 0x10, 0x9c, 0xdb, 0x01, 0xf4, 0xff, 0x6b, 0x70, 0xea, 0x8e, 0x11, + 0x9a, 0x1b, 0x4d, 0xc3, 0xdc, 0x60, 0x26, 0x46, 0xee, 0x09, 0x5a, 0x76, 0xe7, 0xbc, 0x9a, 0xc4, + 0xc5, 0x2f, 0xda, 0x52, 0x85, 0x38, 0x4d, 0x11, 0x85, 0x30, 0xee, 0x93, 0x37, 0x06, 0x24, 0x60, + 0xfe, 0xa2, 0xda, 0xd1, 0xf5, 0x8d, 0xbc, 0x49, 0xc3, 0x02, 0x23, 0x97, 0x87, 0xa2, 0x5f, 0x58, + 0x52, 0x42, 0x5d, 0x78, 0x98, 0x2f, 0xdf, 0x79, 0xd7, 0x73, 0x77, 0x7a, 0xde, 0x20, 0x48, 0x6d, + 0x81, 0x49, 0xb6, 0x05, 0x98, 0x4b, 0xec, 0xc2, 0x7e, 0x15, 0xf1, 0xfe, 0x78, 0xd0, 0x07, 0x60, + 0x9c, 0x6c, 0x11, 0x37, 0xbc, 0x7d, 0x7b, 0x71, 0x76, 0xaa, 0xd4, 0x19, 0xc9, 0x3e, 0x61, 0x41, + 0xe0, 0xc0, 0x12, 0x1b, 0xea, 0xc3, 0x98, 0xe3, 0x75, 0xbb, 0xb6, 0xdb, 0x9d, 0x9d, 0xae, 0xb0, + 0x94, 0x12, 0xe3, 0xb6, 0xc8, 0x11, 0x72, 0xe1, 0x59, 0xfc, 0xc0, 0x11, 0x19, 0xd4, 0x87, 0x2b, + 0x16, 0x59, 0x37, 0x06, 0x4e, 0xb8, 0xec, 0x85, 0x54, 0x1a, 0xd8, 0x89, 0xb5, 0xfb, 0xc8, 0x95, + 0x78, 0x86, 0xbd, 0xb8, 0x7c, 0x74, 0x6f, 0xb7, 0x7e, 0xa5, 0x75, 0x40, 0x5d, 0x7c, 0x20, 0x36, + 0xb4, 0x03, 0x8f, 0x88, 0x3a, 0xab, 0xae, 0x4f, 0x0c, 0x73, 0x83, 0x0e, 0x75, 0x96, 0xe8, 0x29, + 0x46, 0xf4, 0xa7, 0xf6, 0x76, 0xeb, 0x8f, 0xb4, 0x0e, 0xae, 0x8e, 0x0f, 0x83, 0xf3, 0xe2, 0x4b, + 0x80, 0xb2, 0x7b, 0xfe, 0x20, 0x15, 0x65, 0x5c, 0x55, 0x51, 0x3e, 0xab, 0xc1, 0xb9, 0xbc, 0xd1, + 0xa5, 0x92, 0xcd, 0x16, 0xf1, 0xd7, 0xbc, 0x20, 0x72, 0x2a, 0x1d, 0xe1, 0x92, 0xcd, 0x2b, 0x51, + 0x21, 0x8e, 0xe1, 0xa8, 0x0d, 0x67, 0x37, 0xc2, 0xb0, 0x3f, 0x6f, 0x9a, 0x24, 0x08, 0x64, 0x0d, + 0x46, 0x6d, 0x84, 0x07, 0x03, 0xba, 0x71, 0xfb, 0xf6, 0x4a, 0x0a, 0x8c, 0xf3, 0xda, 0xe8, 0xdf, + 0xd4, 0xe0, 0x7c, 0xee, 0x36, 0x41, 0x18, 0x2e, 0x30, 0xcf, 0x71, 0x77, 0x69, 0x10, 0x1a, 0xa1, + 0xed, 0x76, 0xdb, 0xee, 0xba, 0x63, 0x77, 0x37, 0x42, 0xd1, 0x3d, 0x26, 0xa0, 0x2e, 0xe5, 0xd6, + 0xc0, 0x05, 0x2d, 0x69, 0xc7, 0x7b, 0xc6, 0x76, 0x06, 0xa1, 0xd2, 0xf1, 0xa5, 0x2c, 0x18, 0xe7, + 0xb5, 0xd1, 0xbf, 0x34, 0x02, 0x0f, 0xd1, 0x8e, 0xc7, 0xa2, 0xd2, 0x92, 0xe1, 0x1a, 0xdd, 0x1f, + 0x53, 0x91, 0xe4, 0xeb, 0x1a, 0x3c, 0xb0, 0x91, 0xaf, 0xc8, 0x08, 0x69, 0x0d, 0x97, 0x53, 0x39, + 0xf7, 0x53, 0x8e, 0x38, 0xab, 0xda, 0xb7, 0x0a, 0x2e, 0xea, 0x15, 0x7a, 0x09, 0x4e, 0xbb, 0x9e, + 0x45, 0x9a, 0xed, 0x16, 0x5e, 0x32, 0x82, 0xcd, 0x4e, 0x74, 0x0f, 0x35, 0xc2, 0x9d, 0x17, 0x96, + 0x53, 0x30, 0x9c, 0xa9, 0x8d, 0xb6, 0x00, 0xf5, 0x3d, 0x6b, 0x61, 0xcb, 0x36, 0xa3, 0x1b, 0x90, + 0xf2, 0x0e, 0x13, 0xec, 0x9a, 0x65, 0x25, 0x83, 0x0d, 0xe7, 0x50, 0x60, 0xaa, 0x18, 0xed, 0xcc, + 0x92, 0xe7, 0xda, 0xa1, 0xe7, 0xb3, 0xb7, 0x09, 0x95, 0x34, 0x12, 0xb6, 0xd2, 0x97, 0x73, 0x31, + 0xe2, 0x02, 0x4a, 0xfa, 0x7f, 0xd7, 0xe0, 0x14, 0x5d, 0x17, 0x2b, 0xbe, 0xb7, 0xbd, 0xf3, 0x63, + 0xb9, 0x24, 0x1f, 0x17, 0xd7, 0xf2, 0xdc, 0x88, 0x70, 0x5e, 0xb9, 0x92, 0x9f, 0x60, 0x9d, 0x8e, + 0x6f, 0xe1, 0x55, 0x43, 0xca, 0x50, 0xb1, 0x21, 0x45, 0xff, 0x42, 0x8d, 0x6b, 0x07, 0x91, 0x1d, + 0xe3, 0xc7, 0x73, 0x2b, 0xfe, 0x1c, 0x4c, 0xd3, 0xb2, 0x25, 0x63, 0x7b, 0xa5, 0xf5, 0x8a, 0xe7, + 0x44, 0x0f, 0x44, 0x98, 0xbf, 0xe7, 0x4d, 0x15, 0x80, 0x93, 0xf5, 0xd0, 0x73, 0x30, 0xd6, 0xe7, + 0x8f, 0x51, 0x85, 0x61, 0xe5, 0x0a, 0xbf, 0xba, 0x66, 0x45, 0xf7, 0x76, 0xeb, 0x67, 0x62, 0xd3, + 0xbd, 0x28, 0xc4, 0x51, 0x03, 0xfd, 0xad, 0x73, 0xc0, 0x90, 0x3b, 0x24, 0xfc, 0xb1, 0x1c, 0x94, + 0x27, 0x60, 0xd2, 0xec, 0x0f, 0x9a, 0xd7, 0x3a, 0x2f, 0x0f, 0xbc, 0xd0, 0x10, 0x57, 0xf3, 0x4c, + 0x5b, 0x68, 0xae, 0xac, 0x46, 0xc5, 0x58, 0xad, 0x43, 0x19, 0x84, 0xd9, 0x1f, 0x08, 0xa6, 0xbb, + 0xa2, 0xfa, 0x3c, 0x32, 0x06, 0xd1, 0x5c, 0x59, 0x4d, 0xc0, 0x70, 0xa6, 0x36, 0xfa, 0x55, 0x0d, + 0xa6, 0x88, 0xd8, 0xbc, 0x37, 0x0c, 0xdf, 0x12, 0xbc, 0xa1, 0xbc, 0xac, 0x27, 0x47, 0x37, 0x62, + 0x09, 0x5c, 0xcf, 0x5a, 0x50, 0x68, 0xe0, 0x04, 0x45, 0xa6, 0xf2, 0x88, 0xdf, 0x74, 0xa2, 0x3d, + 0x2b, 0xcd, 0x2d, 0x46, 0x84, 0xca, 0x53, 0x54, 0x09, 0x17, 0xb7, 0x47, 0x7f, 0x4f, 0x83, 0x0b, + 0x12, 0x6a, 0xbb, 0x76, 0x6f, 0xd0, 0xc3, 0xc4, 0x74, 0x0c, 0xbb, 0x27, 0xf4, 0x9f, 0x0f, 0x1c, + 0xdf, 0x97, 0x26, 0xf1, 0x73, 0x96, 0x95, 0x0f, 0xc3, 0x05, 0x7d, 0x42, 0x5f, 0xd1, 0xe0, 0x4a, + 0x04, 0x5a, 0xf1, 0x49, 0x10, 0x0c, 0x7c, 0x12, 0x3f, 0x51, 0x12, 0x63, 0x32, 0x56, 0x8a, 0x83, + 0x32, 0xd9, 0x6f, 0xe1, 0x00, 0xdc, 0xf8, 0x40, 0xea, 0x89, 0x15, 0xd3, 0xf1, 0xd6, 0x43, 0xa1, + 0x30, 0xdd, 0xb7, 0x15, 0x43, 0x69, 0xe0, 0x04, 0x45, 0xf4, 0x7b, 0x1a, 0x3c, 0xa0, 0x16, 0xa8, + 0x0b, 0x86, 0x6b, 0x4a, 0x1f, 0x3c, 0xbe, 0xde, 0xa4, 0x08, 0x70, 0xdb, 0x64, 0x01, 0x10, 0x17, + 0x75, 0x8b, 0xb2, 0xef, 0x1e, 0x5b, 0x9c, 0x5c, 0x9b, 0x1a, 0xe1, 0xec, 0x9b, 0xaf, 0xd7, 0x00, + 0x47, 0x30, 0xf4, 0x34, 0x4c, 0xf5, 0x3d, 0x6b, 0xc5, 0xb6, 0x82, 0x45, 0xbb, 0x67, 0x87, 0x4c, + 0xdd, 0x19, 0xe2, 0xe3, 0xb1, 0xe2, 0x59, 0x2b, 0xed, 0x16, 0x2f, 0xc7, 0x89, 0x5a, 0xec, 0xbd, + 0xad, 0xdd, 0x33, 0xba, 0x64, 0x65, 0xe0, 0x38, 0x2b, 0xbe, 0xc7, 0xec, 0x57, 0x2d, 0x62, 0x58, + 0x8e, 0xed, 0x92, 0x92, 0xea, 0x0d, 0xdb, 0x72, 0xed, 0x22, 0xa4, 0xb8, 0x98, 0x1e, 0x9a, 0x03, + 0x58, 0x37, 0x6c, 0xa7, 0x73, 0xc7, 0xe8, 0xdf, 0x72, 0x99, 0x0e, 0x34, 0xce, 0x8d, 0x04, 0xd7, + 0x64, 0x29, 0x56, 0x6a, 0xb0, 0x05, 0x45, 0x99, 0x21, 0x26, 0x3c, 0xe2, 0x0b, 0xd3, 0x55, 0x8e, + 0x65, 0x41, 0x45, 0x18, 0xf9, 0x00, 0xde, 0x54, 0x68, 0xe0, 0x04, 0x45, 0xf4, 0x1b, 0x1a, 0xcc, + 0x04, 0x3b, 0x41, 0x48, 0x7a, 0xb2, 0x13, 0xa7, 0x8e, 0xbd, 0x13, 0xcc, 0xb8, 0xd7, 0x49, 0x50, + 0xc1, 0x29, 0xaa, 0xc8, 0x80, 0x87, 0xd8, 0xc0, 0x5e, 0x6f, 0xde, 0xb0, 0xbb, 0x1b, 0xf2, 0x21, + 0xed, 0x0a, 0xf1, 0x4d, 0xe2, 0x86, 0xb3, 0xa7, 0xd9, 0xd2, 0x61, 0x4e, 0x1e, 0xed, 0xe2, 0x6a, + 0x78, 0x3f, 0x1c, 0xe8, 0x97, 0xe0, 0xa2, 0x00, 0x2f, 0x7a, 0x77, 0x32, 0x14, 0xce, 0x30, 0x0a, + 0xcc, 0xa9, 0xa5, 0x5d, 0x58, 0x0b, 0xef, 0x83, 0x81, 0xea, 0x17, 0x01, 0xf1, 0x99, 0x71, 0x9e, + 0xc8, 0xf5, 0x13, 0xcc, 0x22, 0xb6, 0x0e, 0x98, 0x7e, 0xd1, 0xc9, 0x82, 0x71, 0x5e, 0x1b, 0xf4, + 0x82, 0x7c, 0xf3, 0xb2, 0x43, 0x0b, 0x5e, 0x5e, 0xe9, 0xcc, 0x9e, 0x65, 0xfd, 0x3b, 0xab, 0x3c, + 0x65, 0x89, 0x40, 0x38, 0x5d, 0x97, 0x4a, 0x19, 0x51, 0x51, 0x63, 0xe0, 0x07, 0xe1, 0xec, 0x39, + 0xd6, 0x98, 0x49, 0x19, 0x58, 0x05, 0xe0, 0x64, 0x3d, 0xf4, 0x1c, 0xcc, 0x04, 0xc4, 0x34, 0xbd, + 0x5e, 0x5f, 0xa8, 0xad, 0xb3, 0xe7, 0x59, 0xef, 0xf9, 0x0c, 0x26, 0x20, 0x38, 0x55, 0x13, 0xed, + 0xc0, 0x59, 0x19, 0x00, 0x65, 0xd1, 0xeb, 0x2e, 0x19, 0xdb, 0x4c, 0x6c, 0xbf, 0x70, 0xf0, 0x26, + 0x9c, 0x8b, 0x2e, 0x5c, 0xe7, 0x5e, 0x1e, 0x18, 0x6e, 0x68, 0x87, 0x3b, 0x7c, 0xb8, 0x9a, 0x59, + 0x74, 0x38, 0x8f, 0x06, 0x5a, 0x84, 0x73, 0xa9, 0xe2, 0x6b, 0xb6, 0x43, 0x82, 0xd9, 0x07, 0xd8, + 0x67, 0x33, 0x33, 0x54, 0x33, 0x07, 0x8e, 0x73, 0x5b, 0xa1, 0x5b, 0x70, 0xbe, 0xef, 0x7b, 0x21, + 0x31, 0xc3, 0x9b, 0x54, 0x4e, 0x71, 0xc4, 0x07, 0x06, 0xb3, 0xb3, 0x6c, 0x2c, 0xd8, 0xc5, 0xc4, + 0x4a, 0x5e, 0x05, 0x9c, 0xdf, 0x0e, 0xbd, 0xa5, 0xc1, 0xe5, 0x20, 0xf4, 0x89, 0xd1, 0xb3, 0xdd, + 0x6e, 0xd3, 0x73, 0x5d, 0xc2, 0x38, 0x65, 0xdb, 0x8a, 0x3d, 0xb9, 0x1f, 0x2c, 0xc5, 0xaa, 0xf4, + 0xbd, 0xdd, 0xfa, 0xe5, 0xce, 0xbe, 0x98, 0xf1, 0x01, 0x94, 0xf5, 0xdd, 0x1a, 0xd7, 0xc1, 0x33, + 0xec, 0x9f, 0x2e, 0xc2, 0x1e, 0xe9, 0x79, 0xfe, 0xce, 0x7c, 0x14, 0x83, 0x54, 0xdc, 0x03, 0xb0, + 0x45, 0xb8, 0x94, 0x04, 0xe1, 0x74, 0x5d, 0x2a, 0xa2, 0xb1, 0xcd, 0x72, 0xad, 0x13, 0xb7, 0xaf, + 0xc5, 0x22, 0x5a, 0x3b, 0x05, 0xc3, 0x99, 0xda, 0xa8, 0x09, 0x67, 0x44, 0x59, 0x9b, 0x2a, 0x3a, + 0xc1, 0x35, 0x9f, 0x44, 0xd2, 0x2f, 0xd5, 0x18, 0xce, 0xb4, 0xd3, 0x40, 0x9c, 0xad, 0x4f, 0xbf, + 0x82, 0xfe, 0x50, 0x7b, 0x31, 0x1c, 0x7f, 0xc5, 0x72, 0x12, 0x84, 0xd3, 0x75, 0x23, 0x4d, 0x34, + 0xd1, 0x85, 0x91, 0xf8, 0x2b, 0x96, 0x53, 0x30, 0x9c, 0xa9, 0xad, 0xff, 0x9b, 0x61, 0x78, 0xe4, + 0x10, 0x52, 0x13, 0xea, 0xe5, 0x0f, 0xf7, 0xd1, 0xf7, 0xce, 0xe1, 0xa6, 0xa7, 0x5f, 0x30, 0x3d, + 0x47, 0xa7, 0x77, 0xd8, 0xe9, 0x0c, 0x8a, 0xa6, 0xf3, 0xe8, 0x24, 0x0f, 0x3f, 0xfd, 0xbd, 0xfc, + 0xe9, 0x2f, 0x39, 0xaa, 0x07, 0x2e, 0x97, 0x7e, 0xc1, 0x72, 0x29, 0x39, 0xaa, 0x87, 0x58, 0x5e, + 0xff, 0x76, 0x18, 0x1e, 0x3d, 0x8c, 0xf8, 0x56, 0x72, 0x7d, 0xe5, 0x70, 0x9d, 0xfb, 0xba, 0xbe, + 0x8a, 0xde, 0xab, 0xdc, 0xc7, 0xf5, 0x95, 0x43, 0xf2, 0x7e, 0xaf, 0xaf, 0xa2, 0x51, 0xbd, 0x5f, + 0xeb, 0xab, 0x68, 0x54, 0x0f, 0xb1, 0xbe, 0xfe, 0x47, 0xfa, 0x7c, 0x90, 0x22, 0x5b, 0x1b, 0x86, + 0xcc, 0xfe, 0xa0, 0x24, 0x93, 0x62, 0x7e, 0x23, 0xcd, 0x95, 0x55, 0x4c, 0x71, 0x20, 0x0c, 0xa3, + 0x7c, 0xfd, 0x94, 0x64, 0x41, 0xec, 0x05, 0x05, 0x5f, 0x92, 0x58, 0x60, 0xa2, 0x43, 0x45, 0xfa, + 0x1b, 0xa4, 0x47, 0x7c, 0xc3, 0xe9, 0x84, 0x9e, 0x6f, 0x74, 0xcb, 0x72, 0x1b, 0x36, 0x54, 0x0b, + 0x29, 0x5c, 0x38, 0x83, 0x9d, 0x0e, 0x48, 0xdf, 0xb6, 0x4a, 0xf2, 0x17, 0x36, 0x20, 0x2b, 0xed, + 0x16, 0xa6, 0x38, 0xf4, 0xdf, 0x9d, 0x00, 0x25, 0xc0, 0x17, 0xfa, 0x10, 0x3c, 0x68, 0x38, 0x8e, + 0x77, 0x67, 0xc5, 0xb7, 0xb7, 0x6c, 0x87, 0x74, 0x89, 0x25, 0xe5, 0x99, 0x40, 0xb8, 0x17, 0x31, + 0xb5, 0x65, 0xbe, 0xa8, 0x12, 0x2e, 0x6e, 0x4f, 0x95, 0xa8, 0x33, 0x66, 0x3a, 0x9e, 0x52, 0x25, + 0xf7, 0x83, 0x4c, 0x74, 0x26, 0xbe, 0xa1, 0x32, 0xc5, 0x38, 0x4b, 0x17, 0xfd, 0x9a, 0xc6, 0x4d, + 0x64, 0xf2, 0x4e, 0x40, 0x4c, 0xda, 0x8d, 0xe3, 0xba, 0x39, 0x8d, 0x8d, 0x6d, 0xf1, 0xb5, 0x43, + 0x92, 0x22, 0xfa, 0xaa, 0x06, 0xe7, 0x37, 0xf3, 0xcc, 0xfb, 0x62, 0x6e, 0x57, 0x4a, 0xf7, 0xa5, + 0xe0, 0xc2, 0x80, 0x0b, 0x95, 0xb9, 0x15, 0x70, 0x7e, 0x4f, 0xe4, 0x38, 0x49, 0x7b, 0xa7, 0xe0, + 0x03, 0xe5, 0xc7, 0x29, 0x65, 0x39, 0x8d, 0xc7, 0x49, 0x02, 0x70, 0x92, 0x22, 0x7a, 0x03, 0x26, + 0x36, 0x23, 0x33, 0xb3, 0xb0, 0x2a, 0xb5, 0x4a, 0x93, 0x57, 0x8c, 0xd5, 0xfc, 0xf6, 0x49, 0x16, + 0xe2, 0x98, 0x0a, 0xb2, 0x61, 0x6c, 0x93, 0x73, 0x23, 0x61, 0x0d, 0x6a, 0x54, 0x57, 0x54, 0xb9, + 0x49, 0x42, 0x14, 0xe1, 0x08, 0xbf, 0xea, 0x64, 0x39, 0x7e, 0x80, 0xff, 0xff, 0x17, 0x35, 0x38, + 0xbf, 0x45, 0xfc, 0xd0, 0x36, 0xd3, 0xf7, 0x2b, 0x13, 0x15, 0xb4, 0xe9, 0x57, 0xf2, 0x30, 0xf2, + 0xa5, 0x92, 0x0b, 0xc2, 0xf9, 0x7d, 0xa0, 0xba, 0x35, 0xb7, 0x92, 0x77, 0x42, 0x23, 0xb4, 0xcd, + 0xdb, 0xde, 0x26, 0x71, 0xe9, 0xd7, 0x8a, 0xcc, 0x16, 0xc0, 0xf8, 0x07, 0xd3, 0xad, 0x17, 0x8a, + 0xab, 0xe1, 0xfd, 0x70, 0xe8, 0x7f, 0xa1, 0x41, 0xc6, 0xd2, 0x8b, 0xfe, 0xa6, 0x06, 0x53, 0xeb, + 0xc4, 0x08, 0x07, 0x3e, 0xb9, 0x6e, 0x84, 0xf2, 0x49, 0xf1, 0xab, 0xc7, 0x62, 0x61, 0x9e, 0xbb, + 0xa6, 0x60, 0xe6, 0xfe, 0x0f, 0x32, 0x44, 0xa0, 0x0a, 0xc2, 0x89, 0x2e, 0x5c, 0x7c, 0x3f, 0x9c, + 0xc9, 0x34, 0x3c, 0xd2, 0x25, 0xea, 0xb7, 0x34, 0xc8, 0xcb, 0x76, 0x82, 0x3e, 0x0c, 0x23, 0x86, + 0x65, 0xc9, 0x90, 0xe8, 0xcf, 0x95, 0xf4, 0xf5, 0xb1, 0xd4, 0xb7, 0xdb, 0xec, 0x27, 0xe6, 0x78, + 0xd1, 0x35, 0x40, 0x46, 0xe2, 0x2a, 0x7f, 0x29, 0x7e, 0xd7, 0xc8, 0x6e, 0xa8, 0xe6, 0x33, 0x50, + 0x9c, 0xd3, 0x42, 0xff, 0x94, 0x06, 0x28, 0x1b, 0x57, 0x12, 0x05, 0x30, 0x2e, 0x56, 0x73, 0x34, + 0x4f, 0x0b, 0x65, 0xdf, 0x1d, 0x24, 0x9e, 0xd1, 0xc4, 0x2f, 0x1d, 0x44, 0x41, 0x80, 0x25, 0x21, + 0xfd, 0x7f, 0x6b, 0x10, 0x47, 0x4f, 0x46, 0xef, 0x83, 0x49, 0x8b, 0x04, 0xa6, 0x6f, 0xf7, 0xc3, + 0xf8, 0xd1, 0x8d, 0x74, 0xdc, 0x6f, 0xc5, 0x20, 0xac, 0xd6, 0x43, 0x3a, 0x8c, 0x86, 0x46, 0xb0, + 0xd9, 0x6e, 0x09, 0xf5, 0x92, 0x09, 0x03, 0xb7, 0x59, 0x09, 0x16, 0x90, 0x38, 0x3e, 0xd4, 0xd0, + 0x21, 0xe2, 0x43, 0xa1, 0xf5, 0x63, 0x08, 0x86, 0x85, 0x0e, 0x0e, 0x84, 0xa5, 0xff, 0xed, 0x1a, + 0x9c, 0xa2, 0x55, 0x96, 0x0c, 0xdb, 0x0d, 0x89, 0xcb, 0xdc, 0xcb, 0x4b, 0x0e, 0x42, 0x17, 0xa6, + 0xc3, 0xc4, 0x13, 0xaa, 0xa3, 0x3f, 0x40, 0x92, 0xee, 0x43, 0xc9, 0x87, 0x53, 0x49, 0xbc, 0xe8, + 0xd9, 0xc8, 0xbf, 0x9f, 0x2b, 0xe2, 0x8f, 0x44, 0x6b, 0x95, 0x39, 0xed, 0xdf, 0x13, 0xef, 0xd1, + 0x64, 0xcc, 0xed, 0x84, 0x2b, 0xff, 0xcf, 0xc1, 0xb4, 0x70, 0xb2, 0xe5, 0x81, 0xbe, 0x84, 0x22, + 0xce, 0xce, 0x99, 0x6b, 0x2a, 0x00, 0x27, 0xeb, 0xe9, 0x7f, 0x5c, 0x83, 0x64, 0x64, 0xef, 0xb2, + 0xa3, 0x94, 0x8d, 0x72, 0x56, 0xbb, 0x6f, 0x51, 0xce, 0xde, 0xcb, 0xb2, 0x60, 0xf0, 0x2c, 0x47, + 0xfc, 0xee, 0x5a, 0x4d, 0x5d, 0xc1, 0x53, 0x14, 0xc9, 0x1a, 0xf1, 0xb0, 0x0e, 0x1f, 0x79, 0x58, + 0xdf, 0x27, 0xdc, 0xf4, 0x47, 0x12, 0xb1, 0xe6, 0xa2, 0x07, 0x09, 0x67, 0x12, 0x0d, 0x95, 0xd7, + 0x08, 0xdf, 0xd5, 0x60, 0x4c, 0xc4, 0x52, 0x3d, 0xc4, 0x6b, 0x97, 0x2e, 0x8c, 0x30, 0xe5, 0xa7, + 0x92, 0x5c, 0xd8, 0xd9, 0xf0, 0xbc, 0x30, 0x11, 0x53, 0x96, 0x79, 0x97, 0xb3, 0x7f, 0x31, 0xc7, + 0xcf, 0x5c, 0x16, 0x7d, 0x73, 0xc3, 0x0e, 0x89, 0x19, 0x46, 0x51, 0x2a, 0x23, 0x97, 0x45, 0xa5, + 0x1c, 0x27, 0x6a, 0xe9, 0x5f, 0x1c, 0x86, 0x2b, 0x02, 0x71, 0x46, 0x54, 0x92, 0x2c, 0x6e, 0x07, + 0xce, 0x8a, 0xc9, 0x6d, 0xf9, 0x86, 0x2d, 0x9d, 0x02, 0xca, 0x69, 0xc1, 0xc2, 0x61, 0x24, 0x83, + 0x0e, 0xe7, 0xd1, 0xe0, 0xf1, 0x16, 0x59, 0xf1, 0x0d, 0x62, 0x38, 0xe1, 0x46, 0x44, 0xbb, 0x56, + 0x25, 0xde, 0x62, 0x16, 0x1f, 0xce, 0xa5, 0xc2, 0x9c, 0x12, 0x04, 0xa0, 0xe9, 0x13, 0x43, 0xf5, + 0x88, 0xa8, 0xe0, 0x1f, 0xbe, 0x94, 0x8b, 0x11, 0x17, 0x50, 0x62, 0xe6, 0x44, 0x63, 0x9b, 0x59, + 0x27, 0x30, 0x09, 0x7d, 0x9b, 0xc5, 0x06, 0x96, 0x36, 0xed, 0xa5, 0x24, 0x08, 0xa7, 0xeb, 0xa2, + 0xe7, 0x60, 0x86, 0x39, 0x79, 0xc4, 0x31, 0x8d, 0x46, 0xe2, 0x87, 0xf7, 0xcb, 0x09, 0x08, 0x4e, + 0xd5, 0xd4, 0xbf, 0xa6, 0xc1, 0x94, 0xba, 0xec, 0x0e, 0xf1, 0xf6, 0x65, 0x4b, 0x39, 0x0e, 0xab, + 0x3c, 0xcb, 0x50, 0xc9, 0x1e, 0xe6, 0x44, 0xfc, 0xeb, 0x43, 0x70, 0x36, 0xa7, 0x0d, 0xbb, 0xb1, + 0x27, 0xa9, 0xa3, 0xb5, 0xd2, 0x8d, 0x7d, 0xe6, 0x9c, 0x96, 0x37, 0xf6, 0x69, 0x08, 0xce, 0x10, + 0x46, 0xaf, 0xc2, 0x90, 0xe9, 0xdb, 0x62, 0x60, 0x9e, 0x29, 0xa7, 0x23, 0xe2, 0x76, 0x63, 0x52, + 0x90, 0x1c, 0x6a, 0xe2, 0x36, 0xa6, 0x18, 0xe9, 0x11, 0xa1, 0xee, 0xeb, 0xe8, 0xbc, 0x66, 0x47, + 0x84, 0xba, 0xfd, 0x03, 0x9c, 0xac, 0x87, 0x3e, 0x00, 0xb3, 0x42, 0x6e, 0x8f, 0x1e, 0xbd, 0x7a, + 0x6e, 0x10, 0xd2, 0x2d, 0x18, 0x0a, 0x96, 0x7a, 0x69, 0x6f, 0xb7, 0x3e, 0x7b, 0xb3, 0xa0, 0x0e, + 0x2e, 0x6c, 0xad, 0xff, 0xd7, 0x21, 0x98, 0x54, 0x62, 0x4e, 0xa3, 0xa5, 0x2a, 0x66, 0x8f, 0xf8, + 0x8b, 0x23, 0xd3, 0xc7, 0x12, 0x0c, 0x75, 0xfb, 0x83, 0x92, 0x76, 0x0f, 0x89, 0xee, 0x3a, 0x45, + 0xd7, 0xed, 0x0f, 0xd0, 0x2b, 0xd2, 0x92, 0x52, 0xce, 0xd6, 0x21, 0xdf, 0x26, 0xa4, 0xac, 0x29, + 0xd1, 0x8e, 0x19, 0x2e, 0xdc, 0x31, 0x2e, 0x8c, 0x05, 0xc2, 0xcc, 0x32, 0x52, 0x21, 0xd6, 0x88, + 0x32, 0xd4, 0xc2, 0xae, 0xc2, 0xd5, 0xb3, 0xc8, 0xec, 0x12, 0x11, 0xa1, 0x62, 0xdf, 0x80, 0xbd, + 0x7a, 0x64, 0x9a, 0xe7, 0x38, 0x17, 0xfb, 0x56, 0x59, 0x09, 0x16, 0x90, 0xcc, 0x61, 0x32, 0x76, + 0xa8, 0xc3, 0xe4, 0x93, 0x35, 0x40, 0xd9, 0x6e, 0xa0, 0x47, 0x60, 0x84, 0xbd, 0x9c, 0x16, 0x5c, + 0x43, 0x4a, 0xe9, 0xec, 0xe5, 0x2c, 0xe6, 0x30, 0xd4, 0x11, 0x51, 0x13, 0xca, 0xcd, 0x27, 0x73, + 0x7a, 0x11, 0xf4, 0x94, 0x10, 0x0b, 0xd1, 0xf1, 0x3c, 0x54, 0x78, 0x3c, 0xaf, 0xc2, 0x58, 0xcf, + 0x76, 0xd9, 0x85, 0x5b, 0x39, 0xf3, 0x13, 0xbf, 0x95, 0xe7, 0x28, 0x70, 0x84, 0x4b, 0xff, 0x41, + 0x8d, 0xae, 0xfd, 0x58, 0x38, 0xbd, 0x0b, 0x60, 0x0c, 0x42, 0x8f, 0x4b, 0x39, 0x62, 0x0b, 0xfc, + 0x42, 0xc9, 0x69, 0x96, 0x58, 0xe7, 0x25, 0x46, 0x7e, 0x5b, 0x1e, 0xff, 0xc6, 0x0a, 0x35, 0x4a, + 0x3b, 0xb4, 0x7b, 0xe4, 0x55, 0xdb, 0xb5, 0xbc, 0x3b, 0x62, 0x7c, 0x2b, 0xd3, 0xbe, 0x2d, 0x31, + 0x72, 0xda, 0xf1, 0x6f, 0xac, 0x50, 0xa3, 0xdc, 0x85, 0x29, 0xba, 0x2e, 0x4b, 0x05, 0x20, 0x3a, + 0xe7, 0x39, 0x4e, 0x74, 0x82, 0x8e, 0x73, 0xee, 0xd2, 0x2c, 0xa8, 0x83, 0x0b, 0x5b, 0xeb, 0x5f, + 0xd7, 0xe0, 0x7c, 0xee, 0x58, 0xa0, 0xeb, 0x70, 0x26, 0xf6, 0x94, 0x52, 0x39, 0xfe, 0x78, 0x9c, + 0x84, 0xe2, 0x66, 0xba, 0x02, 0xce, 0xb6, 0x41, 0x4b, 0x52, 0xec, 0x51, 0x4f, 0x14, 0xe1, 0x66, + 0xf5, 0x90, 0x40, 0x95, 0x77, 0xe8, 0xe0, 0xbc, 0x76, 0xfa, 0x87, 0x12, 0x1d, 0x8e, 0x07, 0x8c, + 0xee, 0x8f, 0x35, 0xd2, 0x95, 0xaf, 0x9c, 0xe4, 0xfe, 0x68, 0xd0, 0x42, 0xcc, 0x61, 0xe8, 0x61, + 0xf5, 0xf1, 0xa0, 0x64, 0x5f, 0xd1, 0x03, 0x42, 0x7d, 0x00, 0x20, 0xfc, 0x19, 0x6d, 0xb7, 0x8b, + 0xba, 0x30, 0x6e, 0x88, 0x04, 0x98, 0x62, 0xb1, 0xbd, 0x50, 0x4e, 0xad, 0x16, 0x48, 0xb8, 0xeb, + 0x7a, 0xf4, 0x0b, 0x4b, 0xe4, 0xfa, 0xdf, 0xd5, 0xe0, 0x42, 0xfe, 0x03, 0xe1, 0x43, 0x88, 0x0a, + 0x3d, 0x98, 0xf4, 0xe3, 0x66, 0x62, 0x65, 0xfe, 0xac, 0x1a, 0xe6, 0x51, 0x09, 0x8d, 0x44, 0xc5, + 0xa8, 0xa6, 0xef, 0x05, 0xd1, 0xec, 0xa4, 0x23, 0x3f, 0x4a, 0x1d, 0x46, 0xe9, 0x09, 0x56, 0xf1, + 0xeb, 0xdf, 0xaa, 0x01, 0x2c, 0x93, 0xf0, 0x8e, 0xe7, 0x6f, 0xd2, 0x31, 0xfa, 0xb1, 0x7a, 0xa8, + 0x7e, 0x09, 0x86, 0xfb, 0x9e, 0x15, 0x08, 0x46, 0xc5, 0x5e, 0x90, 0x33, 0x37, 0x1f, 0x56, 0x8a, + 0xea, 0x30, 0xc2, 0xee, 0x15, 0xc4, 0x21, 0xc2, 0x64, 0x7f, 0x2a, 0xb9, 0x05, 0x98, 0x97, 0xf3, + 0x3c, 0x47, 0xec, 0x61, 0x48, 0x20, 0xb4, 0x19, 0x91, 0xe7, 0x88, 0x97, 0x61, 0x09, 0x45, 0xcf, + 0x01, 0xd8, 0xfd, 0x6b, 0x46, 0xcf, 0x76, 0xa8, 0x1c, 0x39, 0x2a, 0x33, 0x69, 0x42, 0x7b, 0x25, + 0x2a, 0xbd, 0xb7, 0x5b, 0x1f, 0x17, 0xbf, 0x76, 0xb0, 0x52, 0x5b, 0xff, 0xc4, 0x30, 0x24, 0x12, + 0xc5, 0xc6, 0xa6, 0x9b, 0xe1, 0xfb, 0x64, 0xba, 0xf9, 0x00, 0xcc, 0x3a, 0x9e, 0x61, 0x35, 0x0c, + 0x87, 0x6e, 0x19, 0xbf, 0xc3, 0xe7, 0xd2, 0x70, 0xbb, 0x32, 0x7c, 0x14, 0x63, 0x1f, 0x8b, 0x05, + 0x75, 0x70, 0x61, 0x6b, 0x34, 0x50, 0xf2, 0xd3, 0x52, 0x59, 0x6c, 0xa9, 0x72, 0x22, 0xdd, 0x39, + 0xf5, 0x45, 0x91, 0x94, 0x06, 0x52, 0x39, 0x6c, 0x7f, 0x43, 0x83, 0xf3, 0x64, 0x3b, 0x24, 0xbe, + 0x6b, 0x38, 0xb7, 0x7d, 0x63, 0x7d, 0xdd, 0x36, 0x13, 0x4e, 0x98, 0x2b, 0x7b, 0xbb, 0xf5, 0xf3, + 0x0b, 0x79, 0x15, 0xee, 0xed, 0xd6, 0x9f, 0xca, 0x66, 0x8a, 0x8e, 0xde, 0x0f, 0xe5, 0x36, 0x61, + 0x4b, 0x39, 0x9f, 0xdc, 0xc5, 0x67, 0x61, 0xf2, 0x08, 0xaf, 0x21, 0x12, 0x0f, 0xb6, 0xff, 0x71, + 0x0d, 0xa6, 0xe8, 0xea, 0x5b, 0xf4, 0x4c, 0xc3, 0x69, 0x2d, 0x77, 0x8e, 0x90, 0x66, 0x19, 0x2d, + 0xc2, 0xb9, 0x75, 0xcf, 0x37, 0xc9, 0xed, 0xe6, 0xca, 0x6d, 0x4f, 0x5c, 0x6b, 0xb4, 0x96, 0x3b, + 0x82, 0xa7, 0x32, 0xf5, 0xec, 0x5a, 0x0e, 0x1c, 0xe7, 0xb6, 0x42, 0xb7, 0xe0, 0x7c, 0x5c, 0xbe, + 0xda, 0xe7, 0x0e, 0x1b, 0x14, 0xdd, 0x50, 0xec, 0x70, 0x72, 0x2d, 0xaf, 0x02, 0xce, 0x6f, 0x87, + 0x0c, 0x78, 0x48, 0x44, 0x84, 0xb8, 0xe6, 0xf9, 0x77, 0x0c, 0xdf, 0x4a, 0xa2, 0x1d, 0x8e, 0x0d, + 0xbe, 0xad, 0xe2, 0x6a, 0x78, 0x3f, 0x1c, 0xfa, 0x97, 0x47, 0x41, 0x79, 0xfb, 0x76, 0x84, 0xe4, + 0x38, 0xbf, 0xa3, 0xc1, 0x39, 0xd3, 0xb1, 0x89, 0x1b, 0xa6, 0x1e, 0x38, 0x71, 0xa6, 0xf4, 0x4a, + 0xb9, 0x57, 0x79, 0x7d, 0xe2, 0xb6, 0x5b, 0xc2, 0xc1, 0xa5, 0x99, 0x83, 0x5d, 0x38, 0x01, 0xe5, + 0x40, 0x70, 0x6e, 0x6f, 0xd8, 0x07, 0xb1, 0xf2, 0x76, 0x4b, 0x7d, 0xc9, 0xde, 0x14, 0x65, 0x58, + 0x42, 0xd1, 0x13, 0x30, 0xd9, 0xf5, 0xbd, 0x41, 0x3f, 0x68, 0x32, 0xe7, 0x5a, 0xce, 0xdb, 0x98, + 0x20, 0x77, 0x3d, 0x2e, 0xc6, 0x6a, 0x1d, 0x2a, 0x96, 0xf2, 0x9f, 0x2b, 0x3e, 0x59, 0xb7, 0xb7, + 0x05, 0xaf, 0x63, 0x62, 0xe9, 0x75, 0xa5, 0x1c, 0x27, 0x6a, 0xa1, 0xf7, 0xc0, 0x84, 0x1d, 0x04, + 0x03, 0xe2, 0xaf, 0xe2, 0x45, 0x11, 0x10, 0x9f, 0xdd, 0x93, 0xb4, 0xa3, 0x42, 0x1c, 0xc3, 0xd1, + 0xe7, 0x34, 0x98, 0xf1, 0xc9, 0x1b, 0x03, 0xdb, 0x27, 0x16, 0x23, 0x1a, 0x88, 0x17, 0x88, 0x9d, + 0x8a, 0xcf, 0x1e, 0xe7, 0x70, 0x02, 0x2b, 0xe7, 0x13, 0xd2, 0x26, 0x96, 0x04, 0xe2, 0x54, 0x17, + 0xe8, 0x58, 0x05, 0x76, 0xd7, 0xb5, 0xdd, 0xee, 0xbc, 0xd3, 0x0d, 0x66, 0xc7, 0x19, 0xef, 0xe3, + 0x42, 0x6f, 0x5c, 0x8c, 0xd5, 0x3a, 0x54, 0x23, 0x1c, 0x04, 0x74, 0xe7, 0xf7, 0x08, 0x1f, 0xe0, + 0x89, 0xd8, 0x68, 0xb8, 0xaa, 0x02, 0x70, 0xb2, 0x1e, 0x7a, 0x0e, 0x66, 0xa2, 0x02, 0x31, 0xcc, + 0xc0, 0x23, 0x99, 0xd1, 0x7e, 0xae, 0x26, 0x20, 0x38, 0x55, 0xf3, 0xe2, 0x3c, 0x9c, 0xcd, 0xf9, + 0xcc, 0x23, 0xb1, 0x97, 0xaf, 0xd5, 0xe0, 0x9d, 0x07, 0x2e, 0x4b, 0xf4, 0x65, 0x0d, 0x26, 0xc9, + 0x76, 0xe8, 0x1b, 0xd2, 0x07, 0x9f, 0xce, 0x51, 0xf7, 0xfe, 0x6c, 0x82, 0xb9, 0x85, 0x98, 0x12, + 0x9f, 0x37, 0x29, 0x6d, 0x28, 0x10, 0xac, 0x76, 0x88, 0x6a, 0x59, 0x3c, 0xd2, 0x9d, 0x6a, 0x5c, + 0x17, 0xd9, 0x46, 0x05, 0xe4, 0xe2, 0x8b, 0x70, 0x3a, 0x8d, 0xf9, 0xa8, 0x9c, 0x78, 0x6c, 0xc5, + 0xf7, 0xa8, 0x20, 0x74, 0x02, 0xa1, 0xa7, 0xd6, 0x12, 0xc1, 0x9b, 0xcb, 0x3d, 0x6b, 0x16, 0xbd, + 0x2d, 0x0c, 0x1e, 0xff, 0x7a, 0x2a, 0x78, 0x7c, 0xa3, 0x12, 0x95, 0xfd, 0xa3, 0xc5, 0x7f, 0x4f, + 0x83, 0x49, 0x51, 0xf3, 0x04, 0x62, 0x53, 0x19, 0xc9, 0xd8, 0x54, 0xcf, 0x57, 0xf9, 0xb0, 0x82, + 0xa8, 0x54, 0x6f, 0x69, 0x30, 0x2d, 0x6a, 0x2c, 0x91, 0xde, 0x1a, 0xf1, 0xd1, 0x35, 0x18, 0x0b, + 0x06, 0x6c, 0x2e, 0xc5, 0x17, 0x3d, 0xa4, 0x4a, 0xd7, 0xfe, 0x9a, 0x61, 0xb2, 0xac, 0xb9, 0xbc, + 0x8a, 0x12, 0x92, 0x9d, 0x17, 0xe0, 0xa8, 0x31, 0x95, 0x95, 0x7d, 0xcf, 0xc9, 0x04, 0xb4, 0xc1, + 0x9e, 0x43, 0x30, 0x83, 0x50, 0x11, 0x95, 0xfe, 0x8d, 0xec, 0x4e, 0x4c, 0x44, 0xa5, 0xe0, 0x00, + 0xf3, 0x72, 0xfd, 0x93, 0xc3, 0x72, 0xb4, 0x59, 0xc8, 0xe4, 0x1b, 0x30, 0x61, 0xfa, 0xc4, 0x08, + 0x89, 0xd5, 0xd8, 0x39, 0x4c, 0xe7, 0x18, 0xc7, 0x6e, 0x46, 0x2d, 0x70, 0xdc, 0x98, 0xf2, 0x46, + 0xf5, 0x4a, 0xa3, 0x16, 0x9f, 0x23, 0x85, 0xd7, 0x19, 0xcf, 0xc3, 0x88, 0x77, 0xc7, 0x95, 0x2e, + 0x12, 0xfb, 0x12, 0x66, 0x9f, 0x72, 0x8b, 0xd6, 0xc6, 0xbc, 0x91, 0x1a, 0xd0, 0x69, 0x78, 0x9f, + 0x80, 0x4e, 0x3d, 0x18, 0xeb, 0xb1, 0x69, 0xa8, 0x16, 0x9f, 0x3b, 0x31, 0xa3, 0x6a, 0x26, 0x17, + 0x86, 0x1a, 0x47, 0x34, 0xe8, 0x29, 0x47, 0x19, 0x71, 0xd0, 0x37, 0x4c, 0xa2, 0x9e, 0x72, 0xcb, + 0x51, 0x21, 0x8e, 0xe1, 0xe8, 0x6e, 0x32, 0x56, 0xd8, 0x58, 0x05, 0xbb, 0x93, 0xe8, 0x9f, 0x12, + 0x1e, 0x8c, 0x0f, 0x7e, 0x61, 0xbc, 0xb0, 0xcf, 0x0c, 0xcb, 0x65, 0x2a, 0x42, 0xee, 0xe7, 0xa7, + 0x7c, 0xd5, 0x4a, 0xa5, 0x7c, 0x7d, 0x2a, 0x8a, 0x6b, 0x59, 0x4b, 0xa4, 0x1d, 0x92, 0x71, 0x2d, + 0xa7, 0x04, 0xe9, 0x44, 0x2c, 0xcb, 0x01, 0x9c, 0x0d, 0x42, 0xc3, 0x21, 0x1d, 0x5b, 0x68, 0xe6, + 0x41, 0x68, 0xf4, 0xfa, 0x25, 0x02, 0x4b, 0x72, 0x6f, 0xf5, 0x2c, 0x2a, 0x9c, 0x87, 0x1f, 0x7d, + 0x42, 0x83, 0x59, 0x56, 0x3e, 0x3f, 0x08, 0x3d, 0x1e, 0x06, 0x39, 0x26, 0x7e, 0xf4, 0x9b, 0x53, + 0xa6, 0x0b, 0x75, 0x0a, 0xf0, 0xe1, 0x42, 0x4a, 0xe8, 0x4d, 0x38, 0xef, 0x18, 0x41, 0x38, 0x6f, + 0x86, 0xf6, 0x96, 0x1d, 0xee, 0xc4, 0x5d, 0x38, 0x7a, 0x34, 0x49, 0x26, 0x72, 0x2f, 0xe6, 0x21, + 0xc3, 0xf9, 0x34, 0xf4, 0xff, 0xa9, 0x01, 0xca, 0x2e, 0x21, 0xd4, 0x83, 0x71, 0x2b, 0x72, 0x1f, + 0xd7, 0x8e, 0x27, 0x92, 0x9d, 0xe4, 0xce, 0xd2, 0xed, 0x5c, 0x92, 0x40, 0x7d, 0x98, 0xb8, 0xb3, + 0x61, 0x87, 0xc4, 0xb1, 0x83, 0xf0, 0xb8, 0x22, 0xe7, 0xc9, 0x20, 0x52, 0xaf, 0x46, 0x98, 0x71, + 0x4c, 0x44, 0xff, 0xec, 0x30, 0xc8, 0x4c, 0xfc, 0x87, 0xb0, 0x45, 0x0c, 0x00, 0x99, 0x4a, 0x5a, + 0xa3, 0x2a, 0xf6, 0x08, 0xe6, 0xf3, 0xd0, 0xcc, 0x20, 0xc3, 0x39, 0x04, 0xd0, 0x9b, 0x70, 0xce, + 0x76, 0xd7, 0x7d, 0x23, 0x08, 0xfd, 0x01, 0xb3, 0xf1, 0x56, 0x49, 0x0e, 0xc4, 0x54, 0x89, 0x76, + 0x0e, 0x3a, 0x9c, 0x4b, 0x04, 0xad, 0xc3, 0xd8, 0x1d, 0xcf, 0xdf, 0xa4, 0x0c, 0x74, 0xb8, 0x42, + 0xaa, 0xc8, 0x57, 0x19, 0x8e, 0x98, 0x73, 0xf2, 0xdf, 0x01, 0x8e, 0x90, 0xf3, 0xf0, 0x19, 0xfc, + 0xff, 0xe8, 0xca, 0x53, 0x2c, 0xfd, 0x56, 0x05, 0x82, 0x71, 0xe6, 0x51, 0x1e, 0x3e, 0x23, 0x59, + 0x88, 0xd3, 0x14, 0xf5, 0x3f, 0xd4, 0x60, 0x84, 0xbf, 0xd1, 0xbc, 0xff, 0xa2, 0xdc, 0x2f, 0x27, + 0x44, 0xb9, 0x72, 0xd9, 0x4d, 0x58, 0x5f, 0x0b, 0xd3, 0x6e, 0x7c, 0x57, 0x83, 0x09, 0x56, 0xe3, + 0x04, 0x44, 0xab, 0x0f, 0x27, 0x45, 0xab, 0xe7, 0xca, 0x7f, 0x4e, 0x81, 0x60, 0xf5, 0x87, 0x43, + 0xe2, 0x63, 0x98, 0xe4, 0xd2, 0x86, 0xb3, 0xc2, 0xfb, 0x72, 0xd1, 0x5e, 0x27, 0x74, 0x99, 0xb7, + 0x8c, 0x9d, 0x40, 0xc4, 0x57, 0xe0, 0xef, 0x6f, 0xb2, 0x60, 0x9c, 0xd7, 0x06, 0xfd, 0x13, 0x8d, + 0xca, 0x08, 0xa1, 0x6f, 0x9b, 0xd5, 0x72, 0x59, 0xc8, 0xce, 0xcd, 0x2d, 0x71, 0x6c, 0x5c, 0x4b, + 0x59, 0x8d, 0x85, 0x05, 0x56, 0x7a, 0x6f, 0xb7, 0x5e, 0xcf, 0xb1, 0x21, 0xc5, 0xf1, 0xf1, 0x83, + 0xf0, 0xe3, 0x3f, 0xd8, 0xb7, 0x0a, 0xb3, 0xde, 0x46, 0x5d, 0x46, 0x37, 0x60, 0x24, 0x30, 0xbd, + 0x3e, 0x39, 0x4a, 0x86, 0x1e, 0x39, 0xc2, 0x1d, 0xda, 0x12, 0x73, 0x04, 0x17, 0x5f, 0x87, 0x29, + 0xb5, 0xe7, 0x39, 0x5a, 0x50, 0x4b, 0xd5, 0x82, 0x8e, 0x7c, 0x4d, 0xa3, 0x6a, 0x4d, 0xdf, 0xae, + 0xc1, 0x28, 0x4f, 0x17, 0x7b, 0x08, 0x1b, 0xf5, 0xeb, 0x51, 0x10, 0xf2, 0x2a, 0xc9, 0xb0, 0xd5, + 0x58, 0x7d, 0xaf, 0x79, 0xae, 0x32, 0x08, 0x6a, 0x1c, 0x72, 0xe4, 0xc9, 0x18, 0x8e, 0x43, 0x15, + 0x52, 0x88, 0xf0, 0x4f, 0xbb, 0xdf, 0x51, 0x1b, 0xbf, 0xa7, 0xc1, 0x54, 0x22, 0x2a, 0x66, 0x0f, + 0x86, 0x7c, 0x99, 0x61, 0xaa, 0xac, 0x11, 0x3f, 0xf2, 0xde, 0x79, 0x68, 0x9f, 0x4a, 0x98, 0xd2, + 0x91, 0x01, 0x34, 0x6b, 0xc7, 0x14, 0x40, 0x53, 0xff, 0xbc, 0x06, 0x17, 0xa2, 0x0f, 0x4a, 0x86, + 0x3a, 0x42, 0x8f, 0xc1, 0xb8, 0xd1, 0xb7, 0x99, 0x81, 0x49, 0xb5, 0xd1, 0xcd, 0xaf, 0xb4, 0x59, + 0x19, 0x96, 0x50, 0xf4, 0x5e, 0x18, 0x8f, 0x96, 0x9e, 0x90, 0x3f, 0x25, 0xdf, 0x92, 0xd7, 0x12, + 0xb2, 0x06, 0x7a, 0x97, 0x12, 0x28, 0x7e, 0x24, 0x16, 0x17, 0x24, 0x61, 0x7e, 0x89, 0xa9, 0xff, + 0x2c, 0x4c, 0x74, 0x3a, 0x37, 0x78, 0x08, 0x98, 0x23, 0xd8, 0x5a, 0xf5, 0x4f, 0x0f, 0xc1, 0x34, + 0x37, 0x38, 0x34, 0x6c, 0xd7, 0xb2, 0xdd, 0xee, 0x09, 0x1c, 0x2c, 0xb7, 0x61, 0x82, 0xdb, 0x36, + 0x0e, 0xc8, 0x06, 0xd6, 0x89, 0x2a, 0xa5, 0xa3, 0xc9, 0x4a, 0x00, 0x8e, 0x11, 0xa1, 0x9b, 0x30, + 0xfa, 0x06, 0xe5, 0x70, 0xd1, 0xc6, 0x38, 0x14, 0xa3, 0x91, 0x8b, 0x9e, 0x31, 0xc7, 0x00, 0x0b, + 0x14, 0x28, 0x64, 0xee, 0x65, 0x4c, 0xee, 0xaa, 0x14, 0xba, 0x20, 0x31, 0xb4, 0x32, 0x53, 0xc4, + 0x94, 0x70, 0x53, 0x63, 0xbf, 0xb0, 0xa4, 0xc4, 0xc2, 0x61, 0x27, 0x5a, 0xbc, 0x5d, 0xc2, 0x61, + 0x27, 0x3a, 0x5d, 0x70, 0x3e, 0x3e, 0x0b, 0xe7, 0x73, 0x47, 0xe3, 0x60, 0xb9, 0x56, 0xff, 0x46, + 0x0d, 0x86, 0x3b, 0x84, 0x58, 0x27, 0xb0, 0x36, 0x3f, 0x9c, 0x10, 0x7a, 0x5e, 0x28, 0x1f, 0x90, + 0xbb, 0xc8, 0x78, 0xd5, 0x4d, 0x19, 0xaf, 0xde, 0x5f, 0x9e, 0xc4, 0xfe, 0x96, 0xab, 0xdf, 0xaa, + 0x01, 0xd0, 0x6a, 0x0d, 0xc3, 0xdc, 0xe4, 0x5c, 0x47, 0xae, 0x68, 0x2d, 0xc9, 0x75, 0xb2, 0x2b, + 0xf1, 0x24, 0x6f, 0x35, 0x75, 0x18, 0xe5, 0xe9, 0xd8, 0xc5, 0x4d, 0x00, 0xf0, 0x5c, 0xb5, 0xb4, + 0x04, 0x0b, 0x48, 0x92, 0x63, 0x0c, 0x1f, 0x13, 0xc7, 0xd0, 0xbf, 0xa1, 0x01, 0x4b, 0x2c, 0xd8, + 0x5a, 0x66, 0x8f, 0xba, 0x6d, 0x7e, 0x45, 0xd7, 0x52, 0x83, 0x89, 0x32, 0x43, 0x78, 0x5b, 0x05, + 0xe0, 0x64, 0x3d, 0xe4, 0x2a, 0xe3, 0x5a, 0xab, 0xa0, 0x0f, 0x88, 0x8e, 0x1c, 0xc8, 0x23, 0x7e, + 0x58, 0x83, 0x53, 0xa9, 0xba, 0x87, 0xd0, 0x0c, 0xef, 0x0f, 0xcb, 0x55, 0x12, 0xcc, 0x0c, 0x9d, + 0x40, 0x82, 0x19, 0x99, 0xeb, 0x65, 0xf8, 0x3e, 0xe7, 0x7a, 0xf9, 0x8e, 0x06, 0xe3, 0x74, 0x8c, + 0x4f, 0x80, 0xfd, 0xfe, 0x52, 0x92, 0xfd, 0x3e, 0x5b, 0x7a, 0xed, 0x14, 0x70, 0xdd, 0x7f, 0x50, + 0x03, 0x96, 0x0e, 0x40, 0xf8, 0x34, 0x28, 0x6e, 0x02, 0x5a, 0x81, 0x9b, 0xc0, 0x15, 0xe1, 0x65, + 0x90, 0x32, 0xe3, 0x2a, 0x9e, 0x06, 0xef, 0x55, 0x1c, 0x09, 0x86, 0x92, 0xac, 0x24, 0xc7, 0x99, + 0xe0, 0x4d, 0x98, 0x0e, 0x36, 0x3c, 0x2f, 0x94, 0x0f, 0xfd, 0x87, 0x2b, 0x18, 0xed, 0x99, 0x8f, + 0x73, 0xf4, 0x2d, 0x7c, 0x77, 0x76, 0x54, 0xe4, 0x38, 0x49, 0x2b, 0xe5, 0xc9, 0x30, 0x72, 0x24, + 0x4f, 0x86, 0x3f, 0xd7, 0xf8, 0xd0, 0x1d, 0x61, 0x9b, 0x9d, 0x20, 0xdb, 0x7c, 0x77, 0x8a, 0x6d, + 0x2a, 0x69, 0xbe, 0x13, 0xac, 0xb3, 0x1e, 0x6f, 0x1a, 0x69, 0x73, 0x4f, 0x2c, 0xf6, 0x7f, 0x28, + 0x3e, 0x53, 0xa6, 0x88, 0xe8, 0xc3, 0xb4, 0xa3, 0xe6, 0x9a, 0x14, 0xab, 0xbe, 0x54, 0x9a, 0x4a, + 0xf9, 0xea, 0x21, 0x51, 0x8c, 0x93, 0x04, 0x28, 0xf3, 0x8d, 0xbe, 0x8e, 0x0e, 0x66, 0x20, 0xb2, + 0x5c, 0xb1, 0xe9, 0x5d, 0x51, 0x01, 0x38, 0x59, 0x4f, 0xff, 0x4a, 0x0d, 0x1e, 0xe6, 0x7d, 0x67, + 0xf6, 0x91, 0x16, 0xe9, 0x13, 0xd7, 0x22, 0xae, 0xb9, 0xc3, 0x84, 0x73, 0xcb, 0xeb, 0xa2, 0x4f, + 0x68, 0x30, 0x4e, 0x5c, 0xab, 0xef, 0xd9, 0x6e, 0x74, 0xbd, 0xf1, 0x5a, 0x85, 0x2c, 0x1b, 0x05, + 0x64, 0x16, 0x04, 0x05, 0x11, 0xbd, 0x53, 0xfc, 0xc2, 0x92, 0x32, 0xda, 0x86, 0x91, 0xbe, 0xef, + 0xad, 0x45, 0x8a, 0xe9, 0xab, 0xc7, 0xdf, 0x85, 0x15, 0x8a, 0x9e, 0x4f, 0x2f, 0xfb, 0x17, 0x73, + 0x82, 0x3a, 0x86, 0x77, 0x1d, 0xaa, 0xeb, 0x47, 0x51, 0x1a, 0x6e, 0x81, 0x7e, 0x70, 0x5f, 0x8e, + 0x82, 0xf0, 0x65, 0x78, 0x54, 0x41, 0xb8, 0xb0, 0x4d, 0xb5, 0x98, 0xa6, 0xd1, 0x37, 0x4c, 0xaa, + 0x95, 0xb3, 0x17, 0xd1, 0xdc, 0x6e, 0x7f, 0x04, 0x94, 0x9f, 0x1a, 0x86, 0xba, 0x82, 0x33, 0xe1, + 0xfd, 0x13, 0xb1, 0xa6, 0x2f, 0x69, 0x30, 0x69, 0xb8, 0xae, 0x48, 0x5c, 0x15, 0xd9, 0x90, 0x49, + 0xd5, 0xc9, 0xc9, 0xa3, 0x35, 0x37, 0x1f, 0xd3, 0x49, 0xdd, 0x0e, 0x2b, 0x10, 0xac, 0x76, 0x67, + 0x1f, 0x3f, 0xa0, 0xda, 0x89, 0xfa, 0x01, 0xa1, 0x8f, 0x46, 0x3c, 0x84, 0x6b, 0x56, 0x1f, 0xbc, + 0x1f, 0x03, 0xc4, 0x78, 0x52, 0xbe, 0xcd, 0xe3, 0xe2, 0x8b, 0x70, 0x3a, 0x3d, 0x7c, 0x47, 0xb2, + 0x43, 0xfc, 0xfe, 0x50, 0x62, 0x7d, 0x15, 0x92, 0x3f, 0x84, 0xa9, 0xe7, 0xab, 0xa9, 0x25, 0xc3, + 0x8f, 0xed, 0xd7, 0xef, 0xdb, 0x88, 0x1c, 0xef, 0xba, 0x39, 0x61, 0xff, 0xb1, 0xaa, 0xf3, 0xd6, + 0x84, 0x0b, 0xca, 0x18, 0xb1, 0xeb, 0xd5, 0xe6, 0x06, 0x31, 0x37, 0x8f, 0x64, 0xe1, 0x68, 0x50, + 0xbd, 0x53, 0x22, 0x51, 0x72, 0x30, 0x3d, 0x0e, 0x63, 0x5b, 0x76, 0x60, 0x47, 0xa1, 0x3a, 0x14, + 0x1c, 0xaf, 0xf0, 0x62, 0x1c, 0xc1, 0xf5, 0xc5, 0x04, 0x2f, 0xb9, 0xed, 0xf5, 0x3d, 0xc7, 0xeb, + 0xee, 0xcc, 0xdf, 0x31, 0x7c, 0x82, 0xbd, 0x41, 0x28, 0xb0, 0x1d, 0xb6, 0x47, 0x4b, 0x70, 0x45, + 0xc1, 0x96, 0xfb, 0xd8, 0xf8, 0x28, 0xe8, 0xfe, 0xc5, 0x78, 0x74, 0x80, 0x8b, 0x97, 0x58, 0xdf, + 0xd4, 0xe0, 0x41, 0x52, 0xc4, 0x43, 0xc5, 0x21, 0x58, 0x79, 0x0f, 0x17, 0x32, 0x69, 0x11, 0x55, + 0xb1, 0x08, 0x8c, 0x8b, 0xbb, 0x86, 0xee, 0x26, 0x92, 0x91, 0xd5, 0x2a, 0xd9, 0x5d, 0x72, 0x66, + 0x7c, 0xbf, 0x54, 0x64, 0xe8, 0xb7, 0x35, 0x38, 0xe7, 0xe4, 0xec, 0x42, 0x21, 0xae, 0xde, 0xbe, + 0x1f, 0x3b, 0x9c, 0x5f, 0x76, 0xe5, 0x41, 0x70, 0x6e, 0x5f, 0xd0, 0xdf, 0x29, 0x7c, 0x09, 0x3f, + 0x52, 0x21, 0xa7, 0xf3, 0x41, 0x8b, 0xb1, 0xc4, 0xa3, 0xf8, 0x8f, 0xc2, 0xa4, 0x17, 0x6f, 0x57, + 0x11, 0xbd, 0xe0, 0x66, 0xd5, 0xde, 0x29, 0x1c, 0x80, 0xbb, 0x0f, 0x28, 0x05, 0x58, 0x25, 0x88, + 0xde, 0xd2, 0x00, 0x59, 0x19, 0xb9, 0x44, 0xb8, 0x30, 0xe0, 0xe3, 0x97, 0xbe, 0xf8, 0x7d, 0x69, + 0xb6, 0x1c, 0xe7, 0xf4, 0x82, 0x2d, 0xb5, 0x30, 0x87, 0x87, 0x88, 0x90, 0x97, 0x95, 0x97, 0x5a, + 0x1e, 0x7f, 0xe2, 0x4b, 0x2d, 0x0f, 0x82, 0x73, 0xfb, 0xa2, 0xff, 0xf3, 0x31, 0xae, 0x03, 0xb3, + 0xdb, 0x2c, 0x13, 0x46, 0xd7, 0x98, 0x19, 0x49, 0x70, 0x8f, 0xf2, 0x46, 0x2b, 0x6e, 0x8d, 0xe2, + 0x46, 0x1e, 0xfe, 0x3f, 0x16, 0xa8, 0xd1, 0x1c, 0xc0, 0x9a, 0xe3, 0x99, 0x9b, 0xcd, 0x76, 0x0b, + 0x47, 0x2a, 0x00, 0xdb, 0xb1, 0x0d, 0x59, 0x8a, 0x95, 0x1a, 0xe8, 0x43, 0x30, 0x64, 0x49, 0xcb, + 0xc3, 0xf3, 0x55, 0x8c, 0x2e, 0xf1, 0x53, 0x89, 0xd6, 0x72, 0x07, 0x53, 0xac, 0xc8, 0x83, 0x71, + 0x57, 0xa8, 0x99, 0x82, 0x03, 0x94, 0x4f, 0xce, 0x27, 0xf5, 0x55, 0xa9, 0x26, 0x47, 0x25, 0x58, + 0x12, 0xa1, 0x04, 0xa5, 0x1d, 0x69, 0xa4, 0x22, 0x41, 0x69, 0x44, 0xda, 0xcf, 0xc4, 0xb7, 0xa2, + 0x9a, 0x84, 0x46, 0x0f, 0x6f, 0x12, 0x9a, 0x2e, 0x34, 0x07, 0xad, 0xc3, 0x68, 0x68, 0xd8, 0x6e, + 0x18, 0x39, 0xc3, 0xbe, 0x58, 0xfa, 0x03, 0x6e, 0x53, 0x34, 0xb1, 0x4a, 0xcb, 0x7e, 0x06, 0x58, + 0x60, 0xa7, 0xab, 0x71, 0x8b, 0xe5, 0xc9, 0x15, 0x1b, 0xa6, 0xfc, 0x6a, 0xe4, 0xe9, 0x76, 0xf9, + 0x6a, 0xe4, 0xff, 0x63, 0x81, 0x1a, 0x6d, 0xc2, 0x78, 0x10, 0xdd, 0xf3, 0x4f, 0x54, 0xce, 0xce, + 0x28, 0x2e, 0xf9, 0xc5, 0x83, 0x0b, 0x71, 0xbb, 0x2f, 0x09, 0x20, 0x13, 0xc6, 0x84, 0x55, 0x51, + 0x24, 0xc5, 0x78, 0xbe, 0x4a, 0x62, 0xa2, 0x28, 0x8b, 0x34, 0x7f, 0x05, 0x1f, 0x61, 0xd6, 0xff, + 0x7c, 0x98, 0x1b, 0x84, 0x85, 0x3f, 0x95, 0xcf, 0xf2, 0x21, 0x45, 0xcf, 0x7d, 0xb5, 0x0a, 0x33, + 0x26, 0xdf, 0x02, 0x27, 0xf2, 0x20, 0x45, 0xcf, 0x85, 0x15, 0x2a, 0xa8, 0x0b, 0xe3, 0x11, 0xb2, + 0x4a, 0x16, 0xf6, 0x28, 0x05, 0x1d, 0x1f, 0x50, 0x99, 0x90, 0x4e, 0x22, 0x47, 0xcd, 0xbc, 0xe7, + 0x5d, 0x4a, 0x70, 0xc3, 0x43, 0x3d, 0xed, 0xca, 0xf7, 0x38, 0x1b, 0x2e, 0xe5, 0x71, 0xf6, 0x02, + 0x9c, 0x12, 0x77, 0xfb, 0x6d, 0x96, 0x30, 0x39, 0xdc, 0x11, 0x7e, 0xe9, 0xcc, 0xef, 0xa3, 0x99, + 0x04, 0xe1, 0x74, 0x5d, 0xf4, 0x35, 0x0d, 0x1e, 0xe5, 0x3e, 0xf1, 0x4d, 0x7a, 0xde, 0xb2, 0xec, + 0xb2, 0x24, 0x4e, 0x67, 0x1b, 0x7b, 0x63, 0x8d, 0x1e, 0xd9, 0x1b, 0xeb, 0xb1, 0xbd, 0xdd, 0xfa, + 0xa3, 0xcd, 0x43, 0xe0, 0xc6, 0x87, 0xea, 0x81, 0x7e, 0x13, 0x26, 0xe4, 0x16, 0x46, 0x0f, 0x2b, + 0xd2, 0x7e, 0xcc, 0x65, 0x6f, 0x92, 0x1d, 0x2e, 0xfa, 0xd7, 0x13, 0xa2, 0x3f, 0xb7, 0x5e, 0xbc, + 0x42, 0x0b, 0x84, 0x16, 0xa0, 0xff, 0x47, 0x8d, 0xaf, 0x59, 0x91, 0x75, 0xdb, 0x80, 0xc9, 0x1e, + 0x8f, 0xeb, 0xc8, 0x1e, 0x63, 0x6a, 0xe5, 0x9f, 0x81, 0x2e, 0xc5, 0x68, 0xb0, 0x8a, 0x13, 0x6d, + 0x67, 0x53, 0xc3, 0x5f, 0xaf, 0xc8, 0x5f, 0x0e, 0x9d, 0x21, 0x1e, 0x65, 0xdb, 0x50, 0x45, 0x20, + 0xf2, 0x23, 0x4d, 0xe5, 0x49, 0xce, 0xf8, 0x92, 0x1e, 0x98, 0xd9, 0x52, 0xff, 0x76, 0x0d, 0x72, + 0x53, 0x06, 0x21, 0x1d, 0x46, 0xf9, 0xeb, 0x06, 0x35, 0x69, 0x3e, 0x7f, 0xfa, 0x80, 0x05, 0x04, + 0xdd, 0xe2, 0x5a, 0xa5, 0x6b, 0xb1, 0xf0, 0x44, 0xf1, 0xd4, 0xab, 0x0f, 0x69, 0x16, 0xf2, 0x2a, + 0xe0, 0xfc, 0x76, 0x68, 0x0b, 0x50, 0xcf, 0xd8, 0x4e, 0x63, 0xab, 0x90, 0x45, 0x62, 0x29, 0x83, + 0x0d, 0xe7, 0x50, 0xa0, 0x7b, 0xd1, 0x30, 0x4d, 0xd2, 0x0f, 0x89, 0xc5, 0x3f, 0x31, 0xb2, 0x0c, + 0xb3, 0xbd, 0x38, 0x9f, 0x04, 0xe1, 0x74, 0x5d, 0x96, 0x32, 0x3d, 0x39, 0x88, 0x3f, 0x49, 0x99, + 0xfe, 0x93, 0x94, 0xe9, 0xc7, 0x9b, 0x32, 0xfd, 0xf7, 0x6b, 0x30, 0xc2, 0x2e, 0x36, 0xde, 0x26, + 0x7e, 0x7e, 0xac, 0xaf, 0x85, 0x77, 0xde, 0x1b, 0xa9, 0x3b, 0xef, 0x97, 0x2a, 0xd0, 0xd8, 0xff, + 0xd2, 0xfb, 0x83, 0x70, 0x81, 0x55, 0x9b, 0xb7, 0x98, 0x5e, 0x1a, 0x10, 0x6b, 0xde, 0xb2, 0xd8, + 0x33, 0xd4, 0x83, 0x4d, 0x7b, 0x0f, 0xc3, 0xd0, 0xc0, 0x77, 0xd2, 0x8f, 0xa7, 0x57, 0xf1, 0x22, + 0xa6, 0xe5, 0xfa, 0x67, 0x34, 0x38, 0xcd, 0x70, 0x2b, 0x1b, 0x18, 0xdd, 0x81, 0x71, 0x5f, 0x6c, + 0x62, 0x31, 0x3b, 0x4b, 0xe5, 0xbf, 0x2d, 0x87, 0x33, 0x88, 0x8c, 0x66, 0xe2, 0x17, 0x96, 0xc4, + 0xf4, 0x3f, 0x1b, 0x85, 0xd9, 0xa2, 0x46, 0xe8, 0x73, 0x1a, 0x5c, 0x30, 0xe3, 0x53, 0x7a, 0x7e, + 0x10, 0x6e, 0x78, 0xbe, 0x1d, 0xda, 0xe2, 0xd6, 0xaf, 0xac, 0xc4, 0xdc, 0x9c, 0x97, 0xdd, 0x62, + 0x21, 0x6a, 0x9a, 0xb9, 0x24, 0x70, 0x01, 0x69, 0xf4, 0x11, 0x80, 0xcd, 0x38, 0x2e, 0x5e, 0xad, + 0x42, 0xaa, 0x79, 0xf6, 0xe1, 0x4a, 0xf0, 0xbc, 0xa8, 0x57, 0x4c, 0x5b, 0x54, 0xca, 0x15, 0x7a, + 0x2c, 0xd1, 0x7d, 0xb0, 0x71, 0x93, 0xec, 0xf4, 0x0d, 0xdb, 0xaf, 0x94, 0xe8, 0x9e, 0xaf, 0xc3, + 0xce, 0x0d, 0x81, 0x2b, 0x49, 0x5d, 0x29, 0x57, 0xe8, 0xa1, 0xbf, 0xa6, 0xc1, 0x34, 0x97, 0x0a, + 0x85, 0x87, 0x9f, 0xe0, 0x6f, 0xb7, 0xca, 0xf7, 0xe0, 0x96, 0x8a, 0x4e, 0x76, 0x82, 0xdd, 0x99, + 0x25, 0x41, 0x49, 0xc2, 0x74, 0x71, 0x9c, 0x09, 0xd2, 0xc7, 0x97, 0x60, 0x70, 0xcb, 0xc7, 0x90, + 0x9e, 0x50, 0x39, 0x0c, 0xb9, 0xac, 0x9d, 0x05, 0x67, 0xe9, 0xb3, 0x5e, 0x91, 0xd0, 0xb4, 0x16, + 0x5c, 0xd3, 0xdf, 0x61, 0xef, 0x6f, 0x68, 0xaf, 0x46, 0x2b, 0xf4, 0x6a, 0xe1, 0x76, 0xb3, 0x95, + 0xc0, 0x96, 0xec, 0x55, 0x16, 0x9c, 0xa5, 0xaf, 0xff, 0x5a, 0x0d, 0x1e, 0x28, 0x58, 0x6c, 0x05, + 0x67, 0xa6, 0x76, 0x5f, 0xcf, 0xcc, 0x1f, 0x81, 0x6c, 0xc0, 0x9c, 0xb4, 0xd9, 0x18, 0xbc, 0x5d, + 0x9c, 0xb4, 0x59, 0x67, 0x0b, 0xdc, 0x21, 0xfe, 0x40, 0x83, 0x33, 0x99, 0x38, 0x69, 0x87, 0x38, + 0x1b, 0x4e, 0xf0, 0x62, 0xff, 0x5d, 0xe9, 0xec, 0xf3, 0x93, 0xb9, 0x99, 0xe7, 0x5f, 0x85, 0xe9, + 0x84, 0x33, 0x84, 0x8c, 0x0e, 0xa1, 0xe5, 0x46, 0x87, 0x50, 0x83, 0x3f, 0xd4, 0xf6, 0x0b, 0xfe, + 0xa0, 0x7f, 0xa2, 0x06, 0x17, 0x8b, 0x19, 0xcc, 0x5f, 0x99, 0x65, 0x2f, 0xb7, 0x7e, 0x96, 0xd3, + 0xff, 0x95, 0x19, 0x83, 0x6f, 0x9e, 0x12, 0x5b, 0x9f, 0x19, 0x81, 0x3f, 0x0c, 0xa3, 0x2c, 0xe0, + 0x46, 0x24, 0x44, 0xfc, 0x7c, 0xf9, 0x48, 0x1e, 0x01, 0x57, 0x30, 0xf9, 0xff, 0x58, 0xa0, 0x45, + 0x2d, 0x38, 0x6d, 0x3a, 0xde, 0xc0, 0x12, 0x29, 0xd6, 0x96, 0x63, 0x5d, 0x56, 0x46, 0x4f, 0x6b, + 0xa6, 0xe0, 0x38, 0xd3, 0x02, 0x75, 0x54, 0xb3, 0xf0, 0x33, 0x65, 0x7d, 0xc4, 0x78, 0xc4, 0x70, + 0x69, 0x0e, 0xf6, 0x01, 0x48, 0xb4, 0x8b, 0xa3, 0x87, 0x46, 0x2f, 0x96, 0x8c, 0x0c, 0x27, 0x99, + 0x41, 0x24, 0x95, 0xcb, 0xa2, 0x00, 0x2b, 0x54, 0x50, 0x00, 0x93, 0x1b, 0xf6, 0x1a, 0xf1, 0xdd, + 0x38, 0x4b, 0x73, 0x59, 0xd1, 0xf9, 0x46, 0x8c, 0x87, 0x9b, 0x3f, 0x94, 0x02, 0xac, 0x52, 0x41, + 0x01, 0x17, 0xd2, 0xb8, 0x21, 0xac, 0x52, 0x2e, 0xe7, 0xd8, 0xc4, 0x16, 0x7f, 0x69, 0x5c, 0x86, + 0x15, 0x32, 0x94, 0xa8, 0x2b, 0x63, 0xee, 0x88, 0x4b, 0x9a, 0x72, 0x44, 0xe3, 0xd0, 0x3d, 0x31, + 0xd1, 0xb8, 0x0c, 0x2b, 0x64, 0xe8, 0xf0, 0xf6, 0xe2, 0x48, 0x4b, 0xc2, 0x94, 0xfc, 0x52, 0xd5, + 0x90, 0x57, 0xc2, 0xba, 0x14, 0x17, 0x60, 0x95, 0x0a, 0xf2, 0x00, 0x7a, 0x32, 0x02, 0x93, 0xb0, + 0x2b, 0x97, 0xfb, 0xd2, 0x38, 0x90, 0x13, 0x17, 0x3c, 0xe3, 0xdf, 0x58, 0x21, 0x81, 0x36, 0x95, + 0x6b, 0x05, 0xa8, 0x60, 0x71, 0x3d, 0xd4, 0x95, 0xc2, 0xfb, 0x62, 0x5b, 0xd5, 0x24, 0xdb, 0xb7, + 0x0f, 0x29, 0x76, 0xaa, 0x7b, 0xbb, 0xf5, 0x29, 0xc6, 0x4c, 0x32, 0x76, 0xab, 0xd8, 0x95, 0x6d, + 0x6a, 0x5f, 0x57, 0xb6, 0xeb, 0x54, 0x70, 0x55, 0x3c, 0xc8, 0x19, 0x83, 0x98, 0x66, 0x4d, 0x64, + 0xcc, 0xae, 0x4e, 0xba, 0x02, 0xce, 0xb6, 0xe1, 0x87, 0x21, 0xb1, 0x58, 0xfb, 0x19, 0xf5, 0x30, + 0xe4, 0x65, 0x58, 0x42, 0xd1, 0x1d, 0x98, 0x0a, 0x14, 0xdf, 0x38, 0x91, 0xbe, 0xab, 0xca, 0x4d, + 0x80, 0x70, 0x8c, 0x63, 0xe1, 0x48, 0xd4, 0x12, 0x9c, 0x20, 0x84, 0x3e, 0x02, 0x13, 0x91, 0xe5, + 0x32, 0x98, 0x3d, 0x5d, 0xe1, 0xd5, 0x57, 0x7e, 0xe0, 0xad, 0xd8, 0x14, 0x19, 0x81, 0x02, 0x1c, + 0x13, 0x44, 0x5b, 0xc9, 0x97, 0xdf, 0x67, 0x8e, 0xe7, 0xad, 0xab, 0xf4, 0x5c, 0x29, 0x7a, 0xf5, + 0x8d, 0x9a, 0x70, 0x86, 0x6c, 0xf7, 0xbd, 0x60, 0xe0, 0x13, 0x16, 0xf7, 0x8f, 0xcd, 0x10, 0x8a, + 0xcd, 0xf6, 0x0b, 0x69, 0x20, 0xce, 0xd6, 0x47, 0x9f, 0xd4, 0xe0, 0x34, 0xcf, 0x7f, 0x46, 0x8f, + 0x33, 0xcf, 0x25, 0x6e, 0x18, 0xb0, 0x04, 0x5f, 0x65, 0x5f, 0x66, 0x75, 0x52, 0xc8, 0x78, 0xca, + 0x8a, 0x74, 0x29, 0xce, 0x10, 0xa5, 0xab, 0x47, 0x7d, 0x2e, 0xcb, 0x12, 0x85, 0x95, 0x5d, 0x3d, + 0xea, 0x5b, 0x5c, 0xbe, 0x7a, 0xd4, 0x12, 0x9c, 0x20, 0xa4, 0xff, 0x4b, 0x0d, 0x40, 0x9a, 0x4b, + 0xc8, 0x09, 0xd8, 0x90, 0x48, 0xc2, 0x86, 0xd4, 0xac, 0x66, 0xdf, 0x21, 0x85, 0x0f, 0x46, 0xff, + 0x44, 0x83, 0x99, 0xb8, 0xda, 0x09, 0x28, 0x24, 0x56, 0x52, 0x21, 0x79, 0x7f, 0xc5, 0x0f, 0x2b, + 0xd0, 0x4a, 0xfe, 0x6f, 0x4d, 0xfd, 0x2c, 0x26, 0x6c, 0xdd, 0x51, 0x6e, 0xca, 0xf8, 0xdd, 0x5c, + 0xbb, 0xd2, 0x4d, 0x99, 0xfa, 0x0c, 0x2f, 0xfe, 0xe2, 0x9c, 0x9b, 0xb3, 0x8f, 0x25, 0x24, 0x9d, + 0x2a, 0xef, 0x4d, 0xa5, 0x58, 0x13, 0xd1, 0xe6, 0x43, 0x70, 0x90, 0xd8, 0xe3, 0xab, 0x9c, 0x8f, + 0x3b, 0x1c, 0xce, 0x97, 0x7c, 0xe3, 0xa8, 0x7c, 0xf2, 0xbe, 0xfc, 0x4e, 0xff, 0xc6, 0x0c, 0x4c, + 0x2a, 0xe6, 0xc5, 0x1f, 0xc9, 0xdd, 0xe8, 0x00, 0x26, 0x4d, 0x19, 0x17, 0x37, 0x1a, 0xf9, 0xaa, + 0x44, 0x25, 0xcb, 0x8d, 0x43, 0xee, 0x06, 0x58, 0xa5, 0x43, 0x05, 0x04, 0xb9, 0xd0, 0x86, 0x8e, + 0xe3, 0x4a, 0x76, 0xbf, 0xc5, 0xf5, 0x34, 0x40, 0x24, 0x6c, 0x12, 0x4b, 0x44, 0x4a, 0x93, 0x79, + 0x25, 0xda, 0xc1, 0x0d, 0x09, 0xc3, 0x4a, 0x3d, 0xf4, 0x26, 0x4c, 0x3b, 0x6a, 0x98, 0x75, 0x21, + 0x0a, 0x97, 0x7b, 0x41, 0x90, 0x08, 0xd8, 0xce, 0xcd, 0x65, 0x89, 0x22, 0x9c, 0xa4, 0x85, 0x36, + 0x61, 0xc2, 0x89, 0x72, 0x28, 0x08, 0x79, 0xf8, 0xc5, 0xd2, 0x84, 0x19, 0x16, 0xee, 0x41, 0x21, + 0x7f, 0xe2, 0x18, 0x3f, 0x5d, 0x77, 0xf2, 0x47, 0x35, 0x2f, 0x8a, 0x98, 0x9a, 0x5c, 0x77, 0xb2, + 0x28, 0xc0, 0x0a, 0x95, 0x82, 0x5b, 0xee, 0xf1, 0x52, 0xb7, 0xdc, 0x03, 0x38, 0xeb, 0x93, 0xd0, + 0xdf, 0x69, 0xee, 0x98, 0x2c, 0x97, 0x89, 0x1f, 0x32, 0x2d, 0x75, 0xa2, 0x5c, 0x88, 0x14, 0x9c, + 0x45, 0x85, 0xf3, 0xf0, 0xa3, 0x4b, 0x30, 0x4c, 0x85, 0x27, 0x11, 0x82, 0x8c, 0x99, 0x3e, 0xa8, + 0x68, 0x85, 0x59, 0x29, 0x7a, 0x1f, 0x4c, 0x86, 0xc4, 0xdc, 0x70, 0x6d, 0xd3, 0x70, 0xda, 0x2d, + 0x21, 0x99, 0xc6, 0xb2, 0x48, 0x0c, 0xc2, 0x6a, 0x3d, 0xd4, 0x80, 0xa1, 0x81, 0x6d, 0x09, 0x91, + 0xf4, 0x67, 0xe4, 0x75, 0x40, 0xbb, 0x75, 0x6f, 0xb7, 0xfe, 0xce, 0xd8, 0x49, 0x56, 0x7e, 0xc9, + 0xd5, 0xfe, 0x66, 0xf7, 0x6a, 0xb8, 0xd3, 0x27, 0xc1, 0xdc, 0x6a, 0xbb, 0x85, 0x69, 0xe3, 0xbc, + 0x5b, 0xff, 0xe9, 0x23, 0xdc, 0xfa, 0xbf, 0xa5, 0xc1, 0x59, 0x23, 0x7d, 0x93, 0x41, 0x82, 0xd9, + 0x99, 0x0a, 0x5c, 0x39, 0xff, 0x7a, 0x24, 0x8e, 0x54, 0x3b, 0x9f, 0xa5, 0x87, 0xf3, 0x3a, 0x81, + 0x7c, 0x40, 0x3d, 0xbb, 0x2b, 0x33, 0x26, 0x88, 0xa9, 0x3e, 0x55, 0xce, 0x20, 0xb1, 0x94, 0xc1, + 0x84, 0x73, 0xb0, 0xa3, 0x6d, 0x98, 0x34, 0xe3, 0xfb, 0x0e, 0x96, 0xb7, 0xb6, 0xb4, 0x50, 0x97, + 0xba, 0x3c, 0x11, 0x29, 0xd1, 0x95, 0xdb, 0x14, 0x95, 0x94, 0xbc, 0xad, 0x54, 0x14, 0x67, 0x71, + 0x63, 0xc7, 0x3e, 0xfb, 0x4c, 0xf9, 0xdb, 0xca, 0x7c, 0x8c, 0x78, 0x1f, 0x6a, 0x2c, 0x16, 0x89, + 0x93, 0xcc, 0x6c, 0xc2, 0xa4, 0xe4, 0xb2, 0x6f, 0x0f, 0x53, 0x59, 0x52, 0xf8, 0xea, 0x4c, 0x15, + 0xe2, 0x34, 0x45, 0xfd, 0xbf, 0x69, 0x90, 0x11, 0x82, 0x91, 0x09, 0x63, 0x14, 0x77, 0x6b, 0xb9, + 0x23, 0xa4, 0xb1, 0xe7, 0x4b, 0x9e, 0x60, 0x0c, 0x07, 0xb7, 0x7d, 0x8a, 0x1f, 0x38, 0xc2, 0x4c, + 0xe5, 0x6a, 0x57, 0x89, 0x2d, 0x2a, 0xa4, 0xce, 0x72, 0x52, 0x82, 0x1a, 0xa4, 0x94, 0xcb, 0xd5, + 0x6a, 0x09, 0x4e, 0x10, 0xd2, 0x17, 0x01, 0x62, 0xdd, 0xa5, 0xb2, 0x73, 0xcb, 0x7f, 0x18, 0x81, + 0xf3, 0x55, 0xbd, 0xbf, 0x59, 0xf6, 0x09, 0x96, 0x1d, 0x7c, 0x7e, 0x3d, 0x24, 0xfe, 0xad, 0x5b, + 0x4b, 0x32, 0x73, 0x72, 0xc9, 0xf4, 0x17, 0x71, 0x7e, 0xf9, 0x0c, 0x46, 0x5c, 0x40, 0x89, 0xe9, + 0x6d, 0x22, 0x31, 0x26, 0xa6, 0x32, 0x1e, 0x4b, 0x8b, 0xcc, 0x23, 0x16, 0x70, 0xbd, 0x2d, 0x0d, + 0xc4, 0xd9, 0xfa, 0x69, 0x24, 0x3c, 0x53, 0x39, 0x95, 0x11, 0xb4, 0x2c, 0x12, 0x9e, 0xae, 0x3c, + 0x5b, 0x5f, 0x45, 0xc2, 0x67, 0x8a, 0xee, 0x8d, 0x91, 0x2c, 0x12, 0x09, 0xc4, 0xd9, 0xfa, 0xc8, + 0x82, 0x4b, 0x3e, 0x31, 0xbd, 0x5e, 0x8f, 0xb8, 0x16, 0x4f, 0xed, 0x64, 0xf8, 0x5d, 0xdb, 0xbd, + 0xe6, 0x1b, 0xac, 0x22, 0x13, 0x03, 0xb4, 0xc6, 0x95, 0xbd, 0xdd, 0xfa, 0x25, 0xbc, 0x4f, 0x3d, + 0xbc, 0x2f, 0x16, 0xd4, 0x83, 0x53, 0x03, 0x16, 0x8c, 0xdc, 0x6f, 0xbb, 0x21, 0xf1, 0xb7, 0x0c, + 0xa7, 0x64, 0x0a, 0x7e, 0xb6, 0x5d, 0x57, 0x93, 0xa8, 0x70, 0x1a, 0x37, 0xda, 0xa1, 0x67, 0xb3, + 0xe8, 0x8e, 0x42, 0x72, 0xbc, 0x7c, 0x7e, 0x16, 0x9c, 0x45, 0x87, 0xf3, 0x68, 0xe8, 0x7f, 0x4b, + 0x03, 0xe1, 0x5e, 0x49, 0x8f, 0x6a, 0xe5, 0xaa, 0x65, 0x3c, 0x75, 0xcd, 0x72, 0x49, 0xbc, 0xb0, + 0xac, 0xc5, 0x50, 0xe5, 0x75, 0xe5, 0xbb, 0x95, 0x50, 0x18, 0x13, 0xb1, 0x5c, 0xc3, 0x31, 0x2b, + 0x01, 0xfd, 0x7f, 0x0a, 0xc6, 0xfa, 0xbe, 0xdd, 0x33, 0xfc, 0x1d, 0x21, 0x62, 0x32, 0x81, 0x4b, + 0xdc, 0xec, 0xd1, 0xbd, 0x23, 0xa0, 0xfa, 0xf7, 0x34, 0x10, 0xad, 0x59, 0xee, 0x89, 0x43, 0xa5, + 0x20, 0x38, 0xd0, 0xc9, 0x4a, 0x49, 0x9d, 0x30, 0x54, 0x98, 0x3a, 0xe1, 0x3e, 0x65, 0x14, 0xf8, + 0xa6, 0x06, 0xa7, 0x92, 0x71, 0x49, 0x02, 0xf4, 0x2e, 0x18, 0x13, 0x11, 0xcc, 0x44, 0xf4, 0x21, + 0xfe, 0xb8, 0x5a, 0xe4, 0x19, 0x8f, 0x60, 0x49, 0x83, 0x53, 0x15, 0xb5, 0x2f, 0x3f, 0x3e, 0xca, + 0x01, 0x0a, 0xd8, 0xee, 0x0c, 0x8c, 0xf2, 0xe0, 0x57, 0xf4, 0x70, 0xcb, 0x79, 0x94, 0xb7, 0x58, + 0x21, 0xc8, 0x56, 0x99, 0x37, 0x54, 0x6a, 0xc8, 0xe5, 0xda, 0xbe, 0x21, 0x97, 0x3b, 0x3c, 0x5b, + 0x4b, 0x95, 0xfb, 0x86, 0x26, 0x6e, 0x8b, 0x94, 0xad, 0x51, 0xa6, 0x96, 0x41, 0xc2, 0x0c, 0x3f, + 0x5c, 0x41, 0xce, 0xe1, 0x43, 0xa0, 0x18, 0xe3, 0x67, 0xf6, 0x31, 0xc4, 0xc7, 0xc1, 0x85, 0x46, + 0x2a, 0x78, 0x3e, 0x8a, 0x51, 0x3f, 0x44, 0x70, 0x21, 0xb9, 0x9b, 0x46, 0x0b, 0x77, 0x53, 0x17, + 0xc6, 0xc4, 0x7e, 0x10, 0xdc, 0xf1, 0xf9, 0x2a, 0x89, 0x4f, 0x94, 0xd0, 0x98, 0xbc, 0x00, 0x47, + 0xd8, 0xe9, 0x99, 0xdb, 0x33, 0xb6, 0xed, 0xde, 0xa0, 0xc7, 0x78, 0xe2, 0x88, 0x5a, 0x95, 0x15, + 0xe3, 0x08, 0xce, 0xaa, 0x72, 0x97, 0x51, 0xa6, 0xda, 0xa8, 0x55, 0x45, 0xd6, 0xf1, 0x08, 0x8e, + 0x5e, 0x83, 0xf1, 0x9e, 0xb1, 0xdd, 0x19, 0xf8, 0x5d, 0x22, 0xec, 0xef, 0xc5, 0xa6, 0xb7, 0x41, + 0x68, 0x3b, 0x73, 0x54, 0x29, 0x0f, 0xfd, 0xb9, 0xb6, 0x1b, 0xde, 0xf2, 0x3b, 0xa1, 0x2f, 0xf3, + 0x2a, 0x2c, 0x09, 0x2c, 0x58, 0xe2, 0x43, 0x0e, 0xcc, 0xf4, 0x8c, 0xed, 0x55, 0xd7, 0x90, 0xc9, + 0x91, 0x27, 0x4b, 0x52, 0x60, 0xf7, 0xd2, 0x4b, 0x09, 0x5c, 0x38, 0x85, 0x3b, 0xe7, 0x0a, 0x7c, + 0xea, 0x7e, 0x5d, 0x81, 0xcf, 0xcb, 0x87, 0x04, 0xd3, 0x6c, 0x19, 0x3e, 0x98, 0xf7, 0x2e, 0x61, + 0xff, 0x37, 0x02, 0x1f, 0x96, 0x6f, 0x04, 0x66, 0x2a, 0x5c, 0x56, 0xee, 0xf3, 0x3e, 0x60, 0x0b, + 0x26, 0x2d, 0x23, 0x34, 0x78, 0x69, 0x30, 0x7b, 0xaa, 0x82, 0x7d, 0xb0, 0x25, 0xf1, 0x28, 0x49, + 0xf6, 0x62, 0xdc, 0x58, 0x25, 0x84, 0x6e, 0xf1, 0xe4, 0xb9, 0x0e, 0x09, 0xe3, 0x2a, 0xcc, 0x4c, + 0x7e, 0x9a, 0x5f, 0x84, 0x44, 0xa9, 0x6e, 0x33, 0x15, 0x70, 0x7e, 0xbb, 0x38, 0x40, 0xc0, 0x99, + 0xfc, 0x00, 0x01, 0xe8, 0x37, 0xf3, 0xec, 0xe9, 0xa8, 0xc2, 0x8b, 0x2e, 0xce, 0x1f, 0x4a, 0x5b, + 0xd5, 0xff, 0xbe, 0x06, 0xb3, 0xbd, 0x82, 0x6c, 0x74, 0xc2, 0xce, 0xbf, 0x5a, 0x85, 0x47, 0x14, + 0xa6, 0xb8, 0x6b, 0x3c, 0xba, 0xb7, 0x5b, 0x3f, 0x30, 0x11, 0x1e, 0x2e, 0xec, 0x5c, 0xd5, 0xf7, + 0xb0, 0x55, 0x42, 0xb1, 0xfd, 0x8e, 0x06, 0xa7, 0xd3, 0x47, 0x81, 0x9a, 0xee, 0x57, 0xbb, 0xcf, + 0xe9, 0x7e, 0x15, 0xaf, 0x96, 0xda, 0x3e, 0x5e, 0x2d, 0x2f, 0xc0, 0x85, 0xfc, 0xd5, 0x41, 0x85, + 0x33, 0x96, 0x64, 0x5b, 0x28, 0x44, 0x71, 0x2a, 0x10, 0x5a, 0x88, 0x39, 0x4c, 0xff, 0x28, 0xa4, + 0x43, 0x68, 0xa2, 0x4d, 0x98, 0x08, 0x82, 0x0d, 0x1e, 0x18, 0x4d, 0x7c, 0x65, 0x49, 0x17, 0xd7, + 0x28, 0xbc, 0x9a, 0x78, 0x01, 0x15, 0xfd, 0xc4, 0x31, 0xfe, 0xc6, 0x07, 0xbf, 0xf3, 0xc3, 0xcb, + 0xef, 0xf8, 0xa3, 0x1f, 0x5e, 0x7e, 0xc7, 0xf7, 0x7f, 0x78, 0xf9, 0x1d, 0xbf, 0xba, 0x77, 0x59, + 0xfb, 0xce, 0xde, 0x65, 0xed, 0x8f, 0xf6, 0x2e, 0x6b, 0xdf, 0xdf, 0xbb, 0xac, 0xfd, 0xbb, 0xbd, + 0xcb, 0xda, 0xdf, 0xf8, 0xb3, 0xcb, 0xef, 0x78, 0xed, 0xa9, 0x98, 0xfc, 0xd5, 0x88, 0x6a, 0xfc, + 0x4f, 0x7f, 0xb3, 0x7b, 0x95, 0x92, 0x8f, 0x5e, 0x5f, 0x73, 0xf2, 0xff, 0x2f, 0x00, 0x00, 0xff, + 0xff, 0xe9, 0x39, 0x2d, 0x17, 0x1a, 0xdf, 0x00, 0x00, } func (m *Addon) Marshal() (dAtA []byte, err error) { @@ -7800,6 +7826,82 @@ func (m *DeploymentRef) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ETCDEncryptionKeyRotation) 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 *ETCDEncryptionKeyRotation) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ETCDEncryptionKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.LastCompletionTriggeredTime != nil { + { + size, err := m.LastCompletionTriggeredTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if m.LastInitiationFinishedTime != nil { + { + size, err := m.LastInitiationFinishedTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.LastInitiationTime != nil { + { + size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.LastCompletionTime != nil { + { + size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + i -= len(m.Phase) + copy(dAtA[i:], m.Phase) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *ExpirableVersion) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -12547,6 +12649,37 @@ func (m *SeedSettingScheduling) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *SeedSettingTopologyAwareRouting) 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 *SeedSettingTopologyAwareRouting) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SeedSettingTopologyAwareRouting) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i-- + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + return len(dAtA) - i, nil +} + func (m *SeedSettingVerticalPodAutoscaler) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -12598,6 +12731,18 @@ func (m *SeedSettings) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.TopologyAwareRouting != nil { + { + size, err := m.TopologyAwareRouting.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } if m.DependencyWatchdog != nil { { size, err := m.DependencyWatchdog.MarshalToSizedBuffer(dAtA[:i]) @@ -13065,6 +13210,82 @@ func (m *ServiceAccountConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ServiceAccountKeyRotation) 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 *ServiceAccountKeyRotation) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ServiceAccountKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.LastCompletionTriggeredTime != nil { + { + size, err := m.LastCompletionTriggeredTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if m.LastInitiationFinishedTime != nil { + { + size, err := m.LastInitiationFinishedTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.LastInitiationTime != nil { + { + size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.LastCompletionTime != nil { + { + size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + i -= len(m.Phase) + copy(dAtA[i:], m.Phase) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *Shoot) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -13281,82 +13502,6 @@ func (m *ShootCredentialsRotation) MarshalToSizedBuffer(dAtA []byte) (int, error return len(dAtA) - i, nil } -func (m *ShootETCDEncryptionKeyRotation) 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 *ShootETCDEncryptionKeyRotation) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ShootETCDEncryptionKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.LastCompletionTriggeredTime != nil { - { - size, err := m.LastCompletionTriggeredTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - if m.LastInitiationFinishedTime != nil { - { - size, err := m.LastInitiationFinishedTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - if m.LastInitiationTime != nil { - { - size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - if m.LastCompletionTime != nil { - { - size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - i -= len(m.Phase) - copy(dAtA[i:], m.Phase) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - func (m *ShootKubeconfigRotation) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -13629,82 +13774,6 @@ func (m *ShootSSHKeypairRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *ShootServiceAccountKeyRotation) 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 *ShootServiceAccountKeyRotation) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ShootServiceAccountKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.LastCompletionTriggeredTime != nil { - { - size, err := m.LastCompletionTriggeredTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - if m.LastInitiationFinishedTime != nil { - { - size, err := m.LastInitiationFinishedTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - if m.LastInitiationTime != nil { - { - size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - if m.LastCompletionTime != nil { - { - size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - i -= len(m.Phase) - copy(dAtA[i:], m.Phase) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - func (m *ShootSpec) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -15861,6 +15930,33 @@ func (m *DeploymentRef) Size() (n int) { return n } +func (m *ETCDEncryptionKeyRotation) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + if m.LastCompletionTime != nil { + l = m.LastCompletionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastInitiationTime != nil { + l = m.LastInitiationTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastInitiationFinishedTime != nil { + l = m.LastInitiationFinishedTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastCompletionTriggeredTime != nil { + l = m.LastCompletionTriggeredTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *ExpirableVersion) Size() (n int) { if m == nil { return 0 @@ -17635,6 +17731,16 @@ func (m *SeedSettingScheduling) Size() (n int) { return n } +func (m *SeedSettingTopologyAwareRouting) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + n += 2 + return n +} + func (m *SeedSettingVerticalPodAutoscaler) Size() (n int) { if m == nil { return 0 @@ -17675,6 +17781,10 @@ func (m *SeedSettings) Size() (n int) { l = m.DependencyWatchdog.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.TopologyAwareRouting != nil { + l = m.TopologyAwareRouting.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -17830,6 +17940,33 @@ func (m *ServiceAccountConfig) Size() (n int) { return n } +func (m *ServiceAccountKeyRotation) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + if m.LastCompletionTime != nil { + l = m.LastCompletionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastInitiationTime != nil { + l = m.LastInitiationTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastInitiationFinishedTime != nil { + l = m.LastInitiationFinishedTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastCompletionTriggeredTime != nil { + l = m.LastCompletionTriggeredTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *Shoot) Size() (n int) { if m == nil { return 0 @@ -17904,33 +18041,6 @@ func (m *ShootCredentialsRotation) Size() (n int) { return n } -func (m *ShootETCDEncryptionKeyRotation) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Phase) - n += 1 + l + sovGenerated(uint64(l)) - if m.LastCompletionTime != nil { - l = m.LastCompletionTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.LastInitiationTime != nil { - l = m.LastInitiationTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.LastInitiationFinishedTime != nil { - l = m.LastInitiationFinishedTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.LastCompletionTriggeredTime != nil { - l = m.LastCompletionTriggeredTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - return n -} - func (m *ShootKubeconfigRotation) Size() (n int) { if m == nil { return 0 @@ -18035,33 +18145,6 @@ func (m *ShootSSHKeypairRotation) Size() (n int) { return n } -func (m *ShootServiceAccountKeyRotation) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Phase) - n += 1 + l + sovGenerated(uint64(l)) - if m.LastCompletionTime != nil { - l = m.LastCompletionTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.LastInitiationTime != nil { - l = m.LastInitiationTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.LastInitiationFinishedTime != nil { - l = m.LastInitiationFinishedTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.LastCompletionTriggeredTime != nil { - l = m.LastCompletionTriggeredTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - return n -} - func (m *ShootSpec) Size() (n int) { if m == nil { return 0 @@ -19151,6 +19234,20 @@ func (this *DeploymentRef) String() string { }, "") return s } +func (this *ETCDEncryptionKeyRotation) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ETCDEncryptionKeyRotation{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationFinishedTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationFinishedTime), "Time", "v11.Time", 1) + `,`, + `LastCompletionTriggeredTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTriggeredTime), "Time", "v11.Time", 1) + `,`, + `}`, + }, "") + return s +} func (this *ExpirableVersion) String() string { if this == nil { return "nil" @@ -20376,6 +20473,16 @@ func (this *SeedSettingScheduling) String() string { }, "") return s } +func (this *SeedSettingTopologyAwareRouting) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SeedSettingTopologyAwareRouting{`, + `Enabled:` + fmt.Sprintf("%v", this.Enabled) + `,`, + `}`, + }, "") + return s +} func (this *SeedSettingVerticalPodAutoscaler) String() string { if this == nil { return "nil" @@ -20397,6 +20504,7 @@ func (this *SeedSettings) String() string { `VerticalPodAutoscaler:` + strings.Replace(this.VerticalPodAutoscaler.String(), "SeedSettingVerticalPodAutoscaler", "SeedSettingVerticalPodAutoscaler", 1) + `,`, `OwnerChecks:` + strings.Replace(this.OwnerChecks.String(), "SeedSettingOwnerChecks", "SeedSettingOwnerChecks", 1) + `,`, `DependencyWatchdog:` + strings.Replace(this.DependencyWatchdog.String(), "SeedSettingDependencyWatchdog", "SeedSettingDependencyWatchdog", 1) + `,`, + `TopologyAwareRouting:` + strings.Replace(this.TopologyAwareRouting.String(), "SeedSettingTopologyAwareRouting", "SeedSettingTopologyAwareRouting", 1) + `,`, `}`, }, "") return s @@ -20496,6 +20604,20 @@ func (this *ServiceAccountConfig) String() string { }, "") return s } +func (this *ServiceAccountKeyRotation) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServiceAccountKeyRotation{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationFinishedTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationFinishedTime), "Time", "v11.Time", 1) + `,`, + `LastCompletionTriggeredTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTriggeredTime), "Time", "v11.Time", 1) + `,`, + `}`, + }, "") + return s +} func (this *Shoot) String() string { if this == nil { return "nil" @@ -20538,22 +20660,8 @@ func (this *ShootCredentialsRotation) String() string { `Kubeconfig:` + strings.Replace(this.Kubeconfig.String(), "ShootKubeconfigRotation", "ShootKubeconfigRotation", 1) + `,`, `SSHKeypair:` + strings.Replace(this.SSHKeypair.String(), "ShootSSHKeypairRotation", "ShootSSHKeypairRotation", 1) + `,`, `Observability:` + strings.Replace(this.Observability.String(), "ShootObservabilityRotation", "ShootObservabilityRotation", 1) + `,`, - `ServiceAccountKey:` + strings.Replace(this.ServiceAccountKey.String(), "ShootServiceAccountKeyRotation", "ShootServiceAccountKeyRotation", 1) + `,`, - `ETCDEncryptionKey:` + strings.Replace(this.ETCDEncryptionKey.String(), "ShootETCDEncryptionKeyRotation", "ShootETCDEncryptionKeyRotation", 1) + `,`, - `}`, - }, "") - return s -} -func (this *ShootETCDEncryptionKeyRotation) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&ShootETCDEncryptionKeyRotation{`, - `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, - `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, - `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, - `LastInitiationFinishedTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationFinishedTime), "Time", "v11.Time", 1) + `,`, - `LastCompletionTriggeredTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTriggeredTime), "Time", "v11.Time", 1) + `,`, + `ServiceAccountKey:` + strings.Replace(this.ServiceAccountKey.String(), "ServiceAccountKeyRotation", "ServiceAccountKeyRotation", 1) + `,`, + `ETCDEncryptionKey:` + strings.Replace(this.ETCDEncryptionKey.String(), "ETCDEncryptionKeyRotation", "ETCDEncryptionKeyRotation", 1) + `,`, `}`, }, "") return s @@ -20630,20 +20738,6 @@ func (this *ShootSSHKeypairRotation) String() string { }, "") return s } -func (this *ShootServiceAccountKeyRotation) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&ShootServiceAccountKeyRotation{`, - `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, - `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, - `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, - `LastInitiationFinishedTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationFinishedTime), "Time", "v11.Time", 1) + `,`, - `LastCompletionTriggeredTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTriggeredTime), "Time", "v11.Time", 1) + `,`, - `}`, - }, "") - return s -} func (this *ShootSpec) String() string { if this == nil { return "nil" @@ -27503,6 +27597,232 @@ func (m *DeploymentRef) Unmarshal(dAtA []byte) error { } return nil } +func (m *ETCDEncryptionKeyRotation) 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: ETCDEncryptionKeyRotation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ETCDEncryptionKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Phase", 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.Phase = CredentialsRotationPhase(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", 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.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} + } + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", 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.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} + } + if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationFinishedTime", 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.LastInitiationFinishedTime == nil { + m.LastInitiationFinishedTime = &v11.Time{} + } + if err := m.LastInitiationFinishedTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTriggeredTime", 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.LastCompletionTriggeredTime == nil { + m.LastCompletionTriggeredTime = &v11.Time{} + } + if err := m.LastCompletionTriggeredTime.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 *ExpirableVersion) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -41765,6 +42085,76 @@ func (m *SeedSettingScheduling) Unmarshal(dAtA []byte) error { } return nil } +func (m *SeedSettingTopologyAwareRouting) 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: SeedSettingTopologyAwareRouting: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SeedSettingTopologyAwareRouting: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Enabled = bool(v != 0) + 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 *SeedSettingVerticalPodAutoscaler) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -42080,6 +42470,42 @@ func (m *SeedSettings) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TopologyAwareRouting", 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.TopologyAwareRouting == nil { + m.TopologyAwareRouting = &SeedSettingTopologyAwareRouting{} + } + if err := m.TopologyAwareRouting.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -43145,14 +43571,221 @@ func (m *ServiceAccountConfig) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - s := string(dAtA[iNdEx:postIndex]) - m.Issuer = &s + s := string(dAtA[iNdEx:postIndex]) + m.Issuer = &s + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ExtendTokenExpiration", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.ExtendTokenExpiration = &b + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxTokenExpiration", 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.MaxTokenExpiration == nil { + m.MaxTokenExpiration = &v11.Duration{} + } + if err := m.MaxTokenExpiration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AcceptedIssuers", 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.AcceptedIssuers = append(m.AcceptedIssuers, 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 *ServiceAccountKeyRotation) 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: ServiceAccountKeyRotation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServiceAccountKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Phase", 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.Phase = CredentialsRotationPhase(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", 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.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} + } + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ExtendTokenExpiration", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) } - var v int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -43162,16 +43795,31 @@ func (m *ServiceAccountConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - b := bool(v != 0) - m.ExtendTokenExpiration = &b + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} + } + if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MaxTokenExpiration", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationFinishedTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -43198,18 +43846,18 @@ func (m *ServiceAccountConfig) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.MaxTokenExpiration == nil { - m.MaxTokenExpiration = &v11.Duration{} + if m.LastInitiationFinishedTime == nil { + m.LastInitiationFinishedTime = &v11.Time{} } - if err := m.MaxTokenExpiration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastInitiationFinishedTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AcceptedIssuers", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTriggeredTime", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -43219,23 +43867,27 @@ func (m *ServiceAccountConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.AcceptedIssuers = append(m.AcceptedIssuers, string(dAtA[iNdEx:postIndex])) + if m.LastCompletionTriggeredTime == nil { + m.LastCompletionTriggeredTime = &v11.Time{} + } + if err := m.LastCompletionTriggeredTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -43737,242 +44389,16 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.SSHKeypair == nil { - m.SSHKeypair = &ShootSSHKeypairRotation{} - } - if err := m.SSHKeypair.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Observability", 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.Observability == nil { - m.Observability = &ShootObservabilityRotation{} - } - if err := m.Observability.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccountKey", 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.ServiceAccountKey == nil { - m.ServiceAccountKey = &ShootServiceAccountKeyRotation{} - } - if err := m.ServiceAccountKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ETCDEncryptionKey", 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.ETCDEncryptionKey == nil { - m.ETCDEncryptionKey = &ShootETCDEncryptionKeyRotation{} - } - if err := m.ETCDEncryptionKey.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 *ShootETCDEncryptionKeyRotation) 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: ShootETCDEncryptionKeyRotation: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ShootETCDEncryptionKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Phase", 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.Phase = CredentialsRotationPhase(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", 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.LastCompletionTime == nil { - m.LastCompletionTime = &v11.Time{} + if m.SSHKeypair == nil { + m.SSHKeypair = &ShootSSHKeypairRotation{} } - if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.SSHKeypair.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Observability", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -43999,16 +44425,16 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastInitiationTime == nil { - m.LastInitiationTime = &v11.Time{} + if m.Observability == nil { + m.Observability = &ShootObservabilityRotation{} } - if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Observability.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 4: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationFinishedTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccountKey", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44035,16 +44461,16 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastInitiationFinishedTime == nil { - m.LastInitiationFinishedTime = &v11.Time{} + if m.ServiceAccountKey == nil { + m.ServiceAccountKey = &ServiceAccountKeyRotation{} } - if err := m.LastInitiationFinishedTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ServiceAccountKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 5: + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTriggeredTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ETCDEncryptionKey", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44071,10 +44497,10 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastCompletionTriggeredTime == nil { - m.LastCompletionTriggeredTime = &v11.Time{} + if m.ETCDEncryptionKey == nil { + m.ETCDEncryptionKey = &ETCDEncryptionKeyRotation{} } - if err := m.LastCompletionTriggeredTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ETCDEncryptionKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -44849,232 +45275,6 @@ func (m *ShootSSHKeypairRotation) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootServiceAccountKeyRotation) 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: ShootServiceAccountKeyRotation: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ShootServiceAccountKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Phase", 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.Phase = CredentialsRotationPhase(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", 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.LastCompletionTime == nil { - m.LastCompletionTime = &v11.Time{} - } - if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", 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.LastInitiationTime == nil { - m.LastInitiationTime = &v11.Time{} - } - if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationFinishedTime", 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.LastInitiationFinishedTime == nil { - m.LastInitiationFinishedTime = &v11.Time{} - } - if err := m.LastInitiationFinishedTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTriggeredTime", 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.LastCompletionTriggeredTime == nil { - m.LastCompletionTriggeredTime = &v11.Time{} - } - if err := m.LastCompletionTriggeredTime.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 *ShootSpec) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.proto b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.proto index 01d6edaf7..ecf70c048 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.proto +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.proto @@ -693,6 +693,31 @@ message DeploymentRef { optional string name = 1; } +// ETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. +message ETCDEncryptionKeyRotation { + // Phase describes the phase of the ETCD encryption key credential rotation. + optional string phase = 1; + + // LastCompletionTime is the most recent time when the ETCD encryption key credential rotation was successfully + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; + + // LastInitiationTime is the most recent time when the ETCD encryption key credential rotation was initiated. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; + + // LastInitiationFinishedTime is the recent time when the certificate authority credential rotation initiation was + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationFinishedTime = 4; + + // LastCompletionTriggeredTime is the recent time when the certificate authority credential rotation completion was + // triggered. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTriggeredTime = 5; +} + // ExpirableVersion contains a version and an expiration date. message ExpirableVersion { // Version is the version identifier. @@ -919,9 +944,9 @@ message KubeAPIServerConfig { optional AuditConfig auditConfig = 4; // EnableBasicAuthentication defines whether basic authentication should be enabled for this cluster or not. + // + // Deprecated: basic authentication has been removed in Kubernetes v1.19+. The field is no-op and will be removed in a future version. // +optional - // Defaults to false. - // Deprecated: basic authentication has been removed in Kubernetes v1.19+. This field will be removed in a future version. optional bool enableBasicAuthentication = 5; // OIDCConfig contains configuration settings for the OIDC provider. @@ -2019,7 +2044,7 @@ message SeedBackup { message SeedDNS { // IngressDomain is the domain of the Seed cluster pointing to the ingress controller endpoint. It will be used // to construct ingress URLs for system applications running in Shoot clusters. This field is immutable. - // This will be removed in the next API version and replaced by spec.ingress.domain. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use spec.ingress.domain instead. // +optional optional string ingressDomain = 1; @@ -2037,10 +2062,12 @@ message SeedDNSProvider { optional k8s.io.api.core.v1.SecretReference secretRef = 2; // Domains contains information about which domains shall be included/excluded for this provider. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. // +optional optional DNSIncludeExclude domains = 3; // Zones contains information about which hosted zones shall be included/excluded for this provider. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. // +optional optional DNSIncludeExclude zones = 4; } @@ -2189,6 +2216,14 @@ message SeedSettingScheduling { optional bool visible = 1; } +// SeedSettingTopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. +// See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. +message SeedSettingTopologyAwareRouting { + // Enabled controls whether certain Services deployed in the seed cluster should be topology-aware. + // These Services are etcd-main-client, etcd-events-client, kube-apiserver, gardener-resource-manager and vpa-webhook. + optional bool enabled = 1; +} + // SeedSettingVerticalPodAutoscaler controls certain settings for the vertical pod autoscaler components deployed in the // seed. message SeedSettingVerticalPodAutoscaler { @@ -2223,6 +2258,11 @@ message SeedSettings { // DependencyWatchdog controls certain settings for the dependency-watchdog components deployed in the seed. // +optional optional SeedSettingDependencyWatchdog dependencyWatchdog = 7; + + // TopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. + // See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. + // +optional + optional SeedSettingTopologyAwareRouting topologyAwareRouting = 8; } // SeedSpec is the specification of a Seed. @@ -2362,6 +2402,31 @@ message ServiceAccountConfig { repeated string acceptedIssuers = 5; } +// ServiceAccountKeyRotation contains information about the service account key credential rotation. +message ServiceAccountKeyRotation { + // Phase describes the phase of the service account key credential rotation. + optional string phase = 1; + + // LastCompletionTime is the most recent time when the service account key credential rotation was successfully + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; + + // LastInitiationTime is the most recent time when the service account key credential rotation was initiated. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; + + // LastInitiationFinishedTime is the recent time when the certificate authority credential rotation initiation was + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationFinishedTime = 4; + + // LastCompletionTriggeredTime is the recent time when the certificate authority credential rotation completion was + // triggered. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTriggeredTime = 5; +} + // Shoot represents a Shoot cluster created and managed by Gardener. message Shoot { // Standard object metadata. @@ -2414,36 +2479,11 @@ message ShootCredentialsRotation { // ServiceAccountKey contains information about the service account key credential rotation. // +optional - optional ShootServiceAccountKeyRotation serviceAccountKey = 5; + optional ServiceAccountKeyRotation serviceAccountKey = 5; // ETCDEncryptionKey contains information about the ETCD encryption key credential rotation. // +optional - optional ShootETCDEncryptionKeyRotation etcdEncryptionKey = 6; -} - -// ShootETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. -message ShootETCDEncryptionKeyRotation { - // Phase describes the phase of the ETCD encryption key credential rotation. - optional string phase = 1; - - // LastCompletionTime is the most recent time when the ETCD encryption key credential rotation was successfully - // completed. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; - - // LastInitiationTime is the most recent time when the ETCD encryption key credential rotation was initiated. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; - - // LastInitiationFinishedTime is the recent time when the certificate authority credential rotation initiation was - // completed. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationFinishedTime = 4; - - // LastCompletionTriggeredTime is the recent time when the certificate authority credential rotation completion was - // triggered. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTriggeredTime = 5; + optional ETCDEncryptionKeyRotation etcdEncryptionKey = 6; } // ShootKubeconfigRotation contains information about the kubeconfig credential rotation. @@ -2516,31 +2556,6 @@ message ShootSSHKeypairRotation { optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; } -// ShootServiceAccountKeyRotation contains information about the service account key credential rotation. -message ShootServiceAccountKeyRotation { - // Phase describes the phase of the service account key credential rotation. - optional string phase = 1; - - // LastCompletionTime is the most recent time when the service account key credential rotation was successfully - // completed. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; - - // LastInitiationTime is the most recent time when the service account key credential rotation was initiated. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; - - // LastInitiationFinishedTime is the recent time when the certificate authority credential rotation initiation was - // completed. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationFinishedTime = 4; - - // LastCompletionTriggeredTime is the recent time when the certificate authority credential rotation completion was - // triggered. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTriggeredTime = 5; -} - // ShootSpec is the specification of a Shoot. message ShootSpec { // Addons contains information about enabled/disabled addons and their configuration. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_seed.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_seed.go index f78db4f28..745c60f36 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_seed.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_seed.go @@ -129,7 +129,7 @@ type SeedBackup struct { type SeedDNS struct { // IngressDomain is the domain of the Seed cluster pointing to the ingress controller endpoint. It will be used // to construct ingress URLs for system applications running in Shoot clusters. This field is immutable. - // This will be removed in the next API version and replaced by spec.ingress.domain. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use spec.ingress.domain instead. // +optional IngressDomain *string `json:"ingressDomain,omitempty" protobuf:"bytes,1,opt,name=ingressDomain"` // Provider configures a DNSProvider @@ -144,9 +144,11 @@ type SeedDNSProvider struct { // SecretRef is a reference to a Secret object containing cloud provider credentials used for registering external domains. SecretRef corev1.SecretReference `json:"secretRef" protobuf:"bytes,2,opt,name=secretRef"` // Domains contains information about which domains shall be included/excluded for this provider. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. // +optional Domains *DNSIncludeExclude `json:"domains,omitempty" protobuf:"bytes,3,opt,name=domains"` // Zones contains information about which hosted zones shall be included/excluded for this provider. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. // +optional Zones *DNSIncludeExclude `json:"zones,omitempty" protobuf:"bytes,4,opt,name=zones"` } @@ -236,6 +238,10 @@ type SeedSettings struct { // DependencyWatchdog controls certain settings for the dependency-watchdog components deployed in the seed. // +optional DependencyWatchdog *SeedSettingDependencyWatchdog `json:"dependencyWatchdog,omitempty" protobuf:"bytes,7,opt,name=dependencyWatchdog"` + // TopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. + // See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. + // +optional + TopologyAwareRouting *SeedSettingTopologyAwareRouting `json:"topologyAwareRouting,omitempty" protobuf:"bytes,8,opt,name=topologyAwareRouting"` } // SeedSettingExcessCapacityReservation controls the excess capacity reservation for shoot control planes in the seed. @@ -325,6 +331,14 @@ type SeedSettingDependencyWatchdogProbe struct { Enabled bool `json:"enabled" protobuf:"bytes,1,opt,name=enabled"` } +// SeedSettingTopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. +// See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. +type SeedSettingTopologyAwareRouting struct { + // Enabled controls whether certain Services deployed in the seed cluster should be topology-aware. + // These Services are etcd-main-client, etcd-events-client, kube-apiserver, gardener-resource-manager and vpa-webhook. + Enabled bool `json:"enabled" protobuf:"bytes,1,opt,name=enabled"` +} + // SeedTaint describes a taint on a seed. type SeedTaint struct { // Key is the taint key to be applied to a seed. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shoot.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shoot.go index 3c2034e88..e3fbe943a 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shoot.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shoot.go @@ -223,10 +223,10 @@ type ShootCredentialsRotation struct { Observability *ShootObservabilityRotation `json:"observability,omitempty" protobuf:"bytes,4,opt,name=observability"` // ServiceAccountKey contains information about the service account key credential rotation. // +optional - ServiceAccountKey *ShootServiceAccountKeyRotation `json:"serviceAccountKey,omitempty" protobuf:"bytes,5,opt,name=serviceAccountKey"` + ServiceAccountKey *ServiceAccountKeyRotation `json:"serviceAccountKey,omitempty" protobuf:"bytes,5,opt,name=serviceAccountKey"` // ETCDEncryptionKey contains information about the ETCD encryption key credential rotation. // +optional - ETCDEncryptionKey *ShootETCDEncryptionKeyRotation `json:"etcdEncryptionKey,omitempty" protobuf:"bytes,6,opt,name=etcdEncryptionKey"` + ETCDEncryptionKey *ETCDEncryptionKeyRotation `json:"etcdEncryptionKey,omitempty" protobuf:"bytes,6,opt,name=etcdEncryptionKey"` } // CARotation contains information about the certificate authority credential rotation. @@ -280,8 +280,8 @@ type ShootObservabilityRotation struct { LastCompletionTime *metav1.Time `json:"lastCompletionTime,omitempty" protobuf:"bytes,2,opt,name=lastCompletionTime"` } -// ShootServiceAccountKeyRotation contains information about the service account key credential rotation. -type ShootServiceAccountKeyRotation struct { +// ServiceAccountKeyRotation contains information about the service account key credential rotation. +type ServiceAccountKeyRotation struct { // Phase describes the phase of the service account key credential rotation. Phase CredentialsRotationPhase `json:"phase" protobuf:"bytes,1,opt,name=phase"` // LastCompletionTime is the most recent time when the service account key credential rotation was successfully @@ -301,8 +301,8 @@ type ShootServiceAccountKeyRotation struct { LastCompletionTriggeredTime *metav1.Time `json:"lastCompletionTriggeredTime,omitempty" protobuf:"bytes,5,opt,name=lastCompletionTriggeredTime"` } -// ShootETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. -type ShootETCDEncryptionKeyRotation struct { +// ETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. +type ETCDEncryptionKeyRotation struct { // Phase describes the phase of the ETCD encryption key credential rotation. Phase CredentialsRotationPhase `json:"phase" protobuf:"bytes,1,opt,name=phase"` // LastCompletionTime is the most recent time when the ETCD encryption key credential rotation was successfully @@ -370,9 +370,6 @@ type KubernetesDashboard struct { } const ( - // KubernetesDashboardAuthModeBasic uses basic authentication mode for auth. - // Deprecated: basic authentication has been removed in Kubernetes v1.19+. - KubernetesDashboardAuthModeBasic = "basic" // KubernetesDashboardAuthModeToken uses token-based mode for auth. KubernetesDashboardAuthModeToken = "token" ) @@ -664,9 +661,9 @@ type KubeAPIServerConfig struct { // +optional AuditConfig *AuditConfig `json:"auditConfig,omitempty" protobuf:"bytes,4,opt,name=auditConfig"` // EnableBasicAuthentication defines whether basic authentication should be enabled for this cluster or not. + // + // Deprecated: basic authentication has been removed in Kubernetes v1.19+. The field is no-op and will be removed in a future version. // +optional - // Defaults to false. - // Deprecated: basic authentication has been removed in Kubernetes v1.19+. This field will be removed in a future version. EnableBasicAuthentication *bool `json:"enableBasicAuthentication,omitempty" protobuf:"varint,5,opt,name=enableBasicAuthentication"` // OIDCConfig contains configuration settings for the OIDC provider. // +optional diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.conversion.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.conversion.go index 6c7c028b6..5897d90a6 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.conversion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.conversion.go @@ -453,6 +453,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*ETCDEncryptionKeyRotation)(nil), (*core.ETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation(a.(*ETCDEncryptionKeyRotation), b.(*core.ETCDEncryptionKeyRotation), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.ETCDEncryptionKeyRotation)(nil), (*ETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_ETCDEncryptionKeyRotation_To_v1alpha1_ETCDEncryptionKeyRotation(a.(*core.ETCDEncryptionKeyRotation), b.(*ETCDEncryptionKeyRotation), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*ExpirableVersion)(nil), (*core.ExpirableVersion)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_ExpirableVersion_To_core_ExpirableVersion(a.(*ExpirableVersion), b.(*core.ExpirableVersion), scope) }); err != nil { @@ -1233,6 +1243,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*SeedSettingTopologyAwareRouting)(nil), (*core.SeedSettingTopologyAwareRouting)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting(a.(*SeedSettingTopologyAwareRouting), b.(*core.SeedSettingTopologyAwareRouting), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.SeedSettingTopologyAwareRouting)(nil), (*SeedSettingTopologyAwareRouting)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_SeedSettingTopologyAwareRouting_To_v1alpha1_SeedSettingTopologyAwareRouting(a.(*core.SeedSettingTopologyAwareRouting), b.(*SeedSettingTopologyAwareRouting), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*SeedSettingVerticalPodAutoscaler)(nil), (*core.SeedSettingVerticalPodAutoscaler)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_SeedSettingVerticalPodAutoscaler_To_core_SeedSettingVerticalPodAutoscaler(a.(*SeedSettingVerticalPodAutoscaler), b.(*core.SeedSettingVerticalPodAutoscaler), scope) }); err != nil { @@ -1298,6 +1318,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*ServiceAccountKeyRotation)(nil), (*core.ServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation(a.(*ServiceAccountKeyRotation), b.(*core.ServiceAccountKeyRotation), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.ServiceAccountKeyRotation)(nil), (*ServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_ServiceAccountKeyRotation_To_v1alpha1_ServiceAccountKeyRotation(a.(*core.ServiceAccountKeyRotation), b.(*ServiceAccountKeyRotation), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*Shoot)(nil), (*core.Shoot)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_Shoot_To_core_Shoot(a.(*Shoot), b.(*core.Shoot), scope) }); err != nil { @@ -1338,16 +1368,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*ShootETCDEncryptionKeyRotation)(nil), (*core.ShootETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(a.(*ShootETCDEncryptionKeyRotation), b.(*core.ShootETCDEncryptionKeyRotation), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*core.ShootETCDEncryptionKeyRotation)(nil), (*ShootETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_core_ShootETCDEncryptionKeyRotation_To_v1alpha1_ShootETCDEncryptionKeyRotation(a.(*core.ShootETCDEncryptionKeyRotation), b.(*ShootETCDEncryptionKeyRotation), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*ShootKubeconfigRotation)(nil), (*core.ShootKubeconfigRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_ShootKubeconfigRotation_To_core_ShootKubeconfigRotation(a.(*ShootKubeconfigRotation), b.(*core.ShootKubeconfigRotation), scope) }); err != nil { @@ -1408,16 +1428,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*ShootServiceAccountKeyRotation)(nil), (*core.ShootServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(a.(*ShootServiceAccountKeyRotation), b.(*core.ShootServiceAccountKeyRotation), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*core.ShootServiceAccountKeyRotation)(nil), (*ShootServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_core_ShootServiceAccountKeyRotation_To_v1alpha1_ShootServiceAccountKeyRotation(a.(*core.ShootServiceAccountKeyRotation), b.(*ShootServiceAccountKeyRotation), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*ShootSpec)(nil), (*core.ShootSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_ShootSpec_To_core_ShootSpec(a.(*ShootSpec), b.(*core.ShootSpec), scope) }); err != nil { @@ -2802,6 +2812,34 @@ func Convert_core_DeploymentRef_To_v1alpha1_DeploymentRef(in *core.DeploymentRef return autoConvert_core_DeploymentRef_To_v1alpha1_DeploymentRef(in, out, s) } +func autoConvert_v1alpha1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation(in *ETCDEncryptionKeyRotation, out *core.ETCDEncryptionKeyRotation, s conversion.Scope) error { + out.Phase = core.CredentialsRotationPhase(in.Phase) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) + out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) + return nil +} + +// Convert_v1alpha1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation is an autogenerated conversion function. +func Convert_v1alpha1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation(in *ETCDEncryptionKeyRotation, out *core.ETCDEncryptionKeyRotation, s conversion.Scope) error { + return autoConvert_v1alpha1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation(in, out, s) +} + +func autoConvert_core_ETCDEncryptionKeyRotation_To_v1alpha1_ETCDEncryptionKeyRotation(in *core.ETCDEncryptionKeyRotation, out *ETCDEncryptionKeyRotation, s conversion.Scope) error { + out.Phase = CredentialsRotationPhase(in.Phase) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) + return nil +} + +// Convert_core_ETCDEncryptionKeyRotation_To_v1alpha1_ETCDEncryptionKeyRotation is an autogenerated conversion function. +func Convert_core_ETCDEncryptionKeyRotation_To_v1alpha1_ETCDEncryptionKeyRotation(in *core.ETCDEncryptionKeyRotation, out *ETCDEncryptionKeyRotation, s conversion.Scope) error { + return autoConvert_core_ETCDEncryptionKeyRotation_To_v1alpha1_ETCDEncryptionKeyRotation(in, out, s) +} + func autoConvert_v1alpha1_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)) @@ -5030,6 +5068,26 @@ func Convert_core_SeedSettingScheduling_To_v1alpha1_SeedSettingScheduling(in *co return autoConvert_core_SeedSettingScheduling_To_v1alpha1_SeedSettingScheduling(in, out, s) } +func autoConvert_v1alpha1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting(in *SeedSettingTopologyAwareRouting, out *core.SeedSettingTopologyAwareRouting, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_v1alpha1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting is an autogenerated conversion function. +func Convert_v1alpha1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting(in *SeedSettingTopologyAwareRouting, out *core.SeedSettingTopologyAwareRouting, s conversion.Scope) error { + return autoConvert_v1alpha1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting(in, out, s) +} + +func autoConvert_core_SeedSettingTopologyAwareRouting_To_v1alpha1_SeedSettingTopologyAwareRouting(in *core.SeedSettingTopologyAwareRouting, out *SeedSettingTopologyAwareRouting, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_core_SeedSettingTopologyAwareRouting_To_v1alpha1_SeedSettingTopologyAwareRouting is an autogenerated conversion function. +func Convert_core_SeedSettingTopologyAwareRouting_To_v1alpha1_SeedSettingTopologyAwareRouting(in *core.SeedSettingTopologyAwareRouting, out *SeedSettingTopologyAwareRouting, s conversion.Scope) error { + return autoConvert_core_SeedSettingTopologyAwareRouting_To_v1alpha1_SeedSettingTopologyAwareRouting(in, out, s) +} + func autoConvert_v1alpha1_SeedSettingVerticalPodAutoscaler_To_core_SeedSettingVerticalPodAutoscaler(in *SeedSettingVerticalPodAutoscaler, out *core.SeedSettingVerticalPodAutoscaler, s conversion.Scope) error { out.Enabled = in.Enabled return nil @@ -5057,6 +5115,7 @@ func autoConvert_v1alpha1_SeedSettings_To_core_SeedSettings(in *SeedSettings, ou out.VerticalPodAutoscaler = (*core.SeedSettingVerticalPodAutoscaler)(unsafe.Pointer(in.VerticalPodAutoscaler)) out.OwnerChecks = (*core.SeedSettingOwnerChecks)(unsafe.Pointer(in.OwnerChecks)) out.DependencyWatchdog = (*core.SeedSettingDependencyWatchdog)(unsafe.Pointer(in.DependencyWatchdog)) + out.TopologyAwareRouting = (*core.SeedSettingTopologyAwareRouting)(unsafe.Pointer(in.TopologyAwareRouting)) return nil } @@ -5072,6 +5131,7 @@ func autoConvert_core_SeedSettings_To_v1alpha1_SeedSettings(in *core.SeedSetting out.VerticalPodAutoscaler = (*SeedSettingVerticalPodAutoscaler)(unsafe.Pointer(in.VerticalPodAutoscaler)) out.OwnerChecks = (*SeedSettingOwnerChecks)(unsafe.Pointer(in.OwnerChecks)) out.DependencyWatchdog = (*SeedSettingDependencyWatchdog)(unsafe.Pointer(in.DependencyWatchdog)) + out.TopologyAwareRouting = (*SeedSettingTopologyAwareRouting)(unsafe.Pointer(in.TopologyAwareRouting)) return nil } @@ -5238,6 +5298,34 @@ func Convert_core_ServiceAccountConfig_To_v1alpha1_ServiceAccountConfig(in *core return autoConvert_core_ServiceAccountConfig_To_v1alpha1_ServiceAccountConfig(in, out, s) } +func autoConvert_v1alpha1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation(in *ServiceAccountKeyRotation, out *core.ServiceAccountKeyRotation, s conversion.Scope) error { + out.Phase = core.CredentialsRotationPhase(in.Phase) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) + out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) + return nil +} + +// Convert_v1alpha1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation is an autogenerated conversion function. +func Convert_v1alpha1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation(in *ServiceAccountKeyRotation, out *core.ServiceAccountKeyRotation, s conversion.Scope) error { + return autoConvert_v1alpha1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation(in, out, s) +} + +func autoConvert_core_ServiceAccountKeyRotation_To_v1alpha1_ServiceAccountKeyRotation(in *core.ServiceAccountKeyRotation, out *ServiceAccountKeyRotation, s conversion.Scope) error { + out.Phase = CredentialsRotationPhase(in.Phase) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) + return nil +} + +// Convert_core_ServiceAccountKeyRotation_To_v1alpha1_ServiceAccountKeyRotation is an autogenerated conversion function. +func Convert_core_ServiceAccountKeyRotation_To_v1alpha1_ServiceAccountKeyRotation(in *core.ServiceAccountKeyRotation, out *ServiceAccountKeyRotation, s conversion.Scope) error { + return autoConvert_core_ServiceAccountKeyRotation_To_v1alpha1_ServiceAccountKeyRotation(in, out, s) +} + func autoConvert_v1alpha1_Shoot_To_core_Shoot(in *Shoot, out *core.Shoot, s conversion.Scope) error { out.ObjectMeta = in.ObjectMeta if err := Convert_v1alpha1_ShootSpec_To_core_ShootSpec(&in.Spec, &out.Spec, s); err != nil { @@ -5317,8 +5405,8 @@ func autoConvert_v1alpha1_ShootCredentialsRotation_To_core_ShootCredentialsRotat out.Kubeconfig = (*core.ShootKubeconfigRotation)(unsafe.Pointer(in.Kubeconfig)) out.SSHKeypair = (*core.ShootSSHKeypairRotation)(unsafe.Pointer(in.SSHKeypair)) out.Observability = (*core.ShootObservabilityRotation)(unsafe.Pointer(in.Observability)) - out.ServiceAccountKey = (*core.ShootServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) - out.ETCDEncryptionKey = (*core.ShootETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) + out.ServiceAccountKey = (*core.ServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) + out.ETCDEncryptionKey = (*core.ETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) return nil } @@ -5332,8 +5420,8 @@ func autoConvert_core_ShootCredentialsRotation_To_v1alpha1_ShootCredentialsRotat out.Kubeconfig = (*ShootKubeconfigRotation)(unsafe.Pointer(in.Kubeconfig)) out.SSHKeypair = (*ShootSSHKeypairRotation)(unsafe.Pointer(in.SSHKeypair)) out.Observability = (*ShootObservabilityRotation)(unsafe.Pointer(in.Observability)) - out.ServiceAccountKey = (*ShootServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) - out.ETCDEncryptionKey = (*ShootETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) + out.ServiceAccountKey = (*ServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) + out.ETCDEncryptionKey = (*ETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) return nil } @@ -5342,34 +5430,6 @@ func Convert_core_ShootCredentialsRotation_To_v1alpha1_ShootCredentialsRotation( return autoConvert_core_ShootCredentialsRotation_To_v1alpha1_ShootCredentialsRotation(in, out, s) } -func autoConvert_v1alpha1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(in *ShootETCDEncryptionKeyRotation, out *core.ShootETCDEncryptionKeyRotation, s conversion.Scope) error { - out.Phase = core.CredentialsRotationPhase(in.Phase) - out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) - out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) - out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) - out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) - return nil -} - -// Convert_v1alpha1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation is an autogenerated conversion function. -func Convert_v1alpha1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(in *ShootETCDEncryptionKeyRotation, out *core.ShootETCDEncryptionKeyRotation, s conversion.Scope) error { - return autoConvert_v1alpha1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(in, out, s) -} - -func autoConvert_core_ShootETCDEncryptionKeyRotation_To_v1alpha1_ShootETCDEncryptionKeyRotation(in *core.ShootETCDEncryptionKeyRotation, out *ShootETCDEncryptionKeyRotation, s conversion.Scope) error { - out.Phase = CredentialsRotationPhase(in.Phase) - out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) - out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) - out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) - out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) - return nil -} - -// Convert_core_ShootETCDEncryptionKeyRotation_To_v1alpha1_ShootETCDEncryptionKeyRotation is an autogenerated conversion function. -func Convert_core_ShootETCDEncryptionKeyRotation_To_v1alpha1_ShootETCDEncryptionKeyRotation(in *core.ShootETCDEncryptionKeyRotation, out *ShootETCDEncryptionKeyRotation, s conversion.Scope) error { - return autoConvert_core_ShootETCDEncryptionKeyRotation_To_v1alpha1_ShootETCDEncryptionKeyRotation(in, out, s) -} - func autoConvert_v1alpha1_ShootKubeconfigRotation_To_core_ShootKubeconfigRotation(in *ShootKubeconfigRotation, out *core.ShootKubeconfigRotation, s conversion.Scope) error { out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) @@ -5528,34 +5588,6 @@ func Convert_core_ShootSSHKeypairRotation_To_v1alpha1_ShootSSHKeypairRotation(in return autoConvert_core_ShootSSHKeypairRotation_To_v1alpha1_ShootSSHKeypairRotation(in, out, s) } -func autoConvert_v1alpha1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(in *ShootServiceAccountKeyRotation, out *core.ShootServiceAccountKeyRotation, s conversion.Scope) error { - out.Phase = core.CredentialsRotationPhase(in.Phase) - out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) - out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) - out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) - out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) - return nil -} - -// Convert_v1alpha1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation is an autogenerated conversion function. -func Convert_v1alpha1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(in *ShootServiceAccountKeyRotation, out *core.ShootServiceAccountKeyRotation, s conversion.Scope) error { - return autoConvert_v1alpha1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(in, out, s) -} - -func autoConvert_core_ShootServiceAccountKeyRotation_To_v1alpha1_ShootServiceAccountKeyRotation(in *core.ShootServiceAccountKeyRotation, out *ShootServiceAccountKeyRotation, s conversion.Scope) error { - out.Phase = CredentialsRotationPhase(in.Phase) - out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) - out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) - out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) - out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) - return nil -} - -// Convert_core_ShootServiceAccountKeyRotation_To_v1alpha1_ShootServiceAccountKeyRotation is an autogenerated conversion function. -func Convert_core_ShootServiceAccountKeyRotation_To_v1alpha1_ShootServiceAccountKeyRotation(in *core.ShootServiceAccountKeyRotation, out *ShootServiceAccountKeyRotation, s conversion.Scope) error { - return autoConvert_core_ShootServiceAccountKeyRotation_To_v1alpha1_ShootServiceAccountKeyRotation(in, out, s) -} - func autoConvert_v1alpha1_ShootSpec_To_core_ShootSpec(in *ShootSpec, out *core.ShootSpec, s conversion.Scope) error { out.Addons = (*core.Addons)(unsafe.Pointer(in.Addons)) out.CloudProfileName = in.CloudProfileName diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go index d3fed6a7f..1b94eee91 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go @@ -1309,6 +1309,38 @@ func (in *DeploymentRef) DeepCopy() *DeploymentRef { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ETCDEncryptionKeyRotation) DeepCopyInto(out *ETCDEncryptionKeyRotation) { + *out = *in + if in.LastCompletionTime != nil { + in, out := &in.LastCompletionTime, &out.LastCompletionTime + *out = (*in).DeepCopy() + } + if in.LastInitiationTime != nil { + in, out := &in.LastInitiationTime, &out.LastInitiationTime + *out = (*in).DeepCopy() + } + if in.LastInitiationFinishedTime != nil { + in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTriggeredTime != nil { + in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime + *out = (*in).DeepCopy() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ETCDEncryptionKeyRotation. +func (in *ETCDEncryptionKeyRotation) DeepCopy() *ETCDEncryptionKeyRotation { + if in == nil { + return nil + } + out := new(ETCDEncryptionKeyRotation) + 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 @@ -3795,6 +3827,22 @@ func (in *SeedSettingScheduling) DeepCopy() *SeedSettingScheduling { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SeedSettingTopologyAwareRouting) DeepCopyInto(out *SeedSettingTopologyAwareRouting) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SeedSettingTopologyAwareRouting. +func (in *SeedSettingTopologyAwareRouting) DeepCopy() *SeedSettingTopologyAwareRouting { + if in == nil { + return nil + } + out := new(SeedSettingTopologyAwareRouting) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SeedSettingVerticalPodAutoscaler) DeepCopyInto(out *SeedSettingVerticalPodAutoscaler) { *out = *in @@ -3844,6 +3892,11 @@ func (in *SeedSettings) DeepCopyInto(out *SeedSettings) { *out = new(SeedSettingDependencyWatchdog) (*in).DeepCopyInto(*out) } + if in.TopologyAwareRouting != nil { + in, out := &in.TopologyAwareRouting, &out.TopologyAwareRouting + *out = new(SeedSettingTopologyAwareRouting) + **out = **in + } return } @@ -4054,6 +4107,38 @@ func (in *ServiceAccountConfig) DeepCopy() *ServiceAccountConfig { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountKeyRotation) DeepCopyInto(out *ServiceAccountKeyRotation) { + *out = *in + if in.LastCompletionTime != nil { + in, out := &in.LastCompletionTime, &out.LastCompletionTime + *out = (*in).DeepCopy() + } + if in.LastInitiationTime != nil { + in, out := &in.LastInitiationTime, &out.LastInitiationTime + *out = (*in).DeepCopy() + } + if in.LastInitiationFinishedTime != nil { + in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTriggeredTime != nil { + in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime + *out = (*in).DeepCopy() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountKeyRotation. +func (in *ServiceAccountKeyRotation) DeepCopy() *ServiceAccountKeyRotation { + if in == nil { + return nil + } + out := new(ServiceAccountKeyRotation) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Shoot) DeepCopyInto(out *Shoot) { *out = *in @@ -4144,12 +4229,12 @@ func (in *ShootCredentialsRotation) DeepCopyInto(out *ShootCredentialsRotation) } if in.ServiceAccountKey != nil { in, out := &in.ServiceAccountKey, &out.ServiceAccountKey - *out = new(ShootServiceAccountKeyRotation) + *out = new(ServiceAccountKeyRotation) (*in).DeepCopyInto(*out) } if in.ETCDEncryptionKey != nil { in, out := &in.ETCDEncryptionKey, &out.ETCDEncryptionKey - *out = new(ShootETCDEncryptionKeyRotation) + *out = new(ETCDEncryptionKeyRotation) (*in).DeepCopyInto(*out) } return @@ -4165,38 +4250,6 @@ func (in *ShootCredentialsRotation) DeepCopy() *ShootCredentialsRotation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ShootETCDEncryptionKeyRotation) DeepCopyInto(out *ShootETCDEncryptionKeyRotation) { - *out = *in - if in.LastCompletionTime != nil { - in, out := &in.LastCompletionTime, &out.LastCompletionTime - *out = (*in).DeepCopy() - } - if in.LastInitiationTime != nil { - in, out := &in.LastInitiationTime, &out.LastInitiationTime - *out = (*in).DeepCopy() - } - if in.LastInitiationFinishedTime != nil { - in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime - *out = (*in).DeepCopy() - } - if in.LastCompletionTriggeredTime != nil { - in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime - *out = (*in).DeepCopy() - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootETCDEncryptionKeyRotation. -func (in *ShootETCDEncryptionKeyRotation) DeepCopy() *ShootETCDEncryptionKeyRotation { - if in == nil { - return nil - } - out := new(ShootETCDEncryptionKeyRotation) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootKubeconfigRotation) DeepCopyInto(out *ShootKubeconfigRotation) { *out = *in @@ -4354,38 +4407,6 @@ func (in *ShootSSHKeypairRotation) DeepCopy() *ShootSSHKeypairRotation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ShootServiceAccountKeyRotation) DeepCopyInto(out *ShootServiceAccountKeyRotation) { - *out = *in - if in.LastCompletionTime != nil { - in, out := &in.LastCompletionTime, &out.LastCompletionTime - *out = (*in).DeepCopy() - } - if in.LastInitiationTime != nil { - in, out := &in.LastInitiationTime, &out.LastInitiationTime - *out = (*in).DeepCopy() - } - if in.LastInitiationFinishedTime != nil { - in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime - *out = (*in).DeepCopy() - } - if in.LastCompletionTriggeredTime != nil { - in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime - *out = (*in).DeepCopy() - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootServiceAccountKeyRotation. -func (in *ShootServiceAccountKeyRotation) DeepCopy() *ShootServiceAccountKeyRotation { - if in == nil { - return nil - } - out := new(ShootServiceAccountKeyRotation) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { *out = *in 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 d5e7c9229..83a30fd99 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 @@ -472,9 +472,16 @@ const ( // which should be scraped by Prometheus. // See https://github.com/gardener/gardener/blob/master/docs/concepts/resource-manager.md#overwriting-the-pod-selector-label. LabelNetworkPolicyScrapeTargets = "all-scrape-targets" + // LabelNetworkPolicySeedScrapeTargets is a constant for pod selector label which can be used on Services for + // seed system components or extensions which should be scraped by Prometheus. + // See https://github.com/gardener/gardener/blob/master/docs/concepts/resource-manager.md#overwriting-the-pod-selector-label. + LabelNetworkPolicySeedScrapeTargets = "all-seed-scrape-targets" // LabelNetworkPolicyShootNamespaceAlias is a constant for the alias for shoot namespaces used in NetworkPolicy // labels. LabelNetworkPolicyShootNamespaceAlias = "all-shoots" + // LabelNetworkPolicyIstioIngressNamespaceAlias is a constant for the alias for shoot namespaces used in + // NetworkPolicy labels. + LabelNetworkPolicyIstioIngressNamespaceAlias = "all-istio-ingresses" // LabelApp is a constant for a label key. LabelApp = "app" @@ -562,8 +569,6 @@ const ( // 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" - // AnnotationShootForceRestore is a key for an annotation on a Shoot or BackupEntry resource to trigger a forceful restoration to a different seed. - AnnotationShootForceRestore = "shoot.gardener.cloud/force-restore" // AnnotationNodeLocalDNS enables a per node dns cache on the shoot cluster. AnnotationNodeLocalDNS = "alpha.featuregates.shoot.gardener.cloud/node-local-dns" // AnnotationNodeLocalDNSForceTcpToClusterDns enforces upgrade to tcp connections for communication between node local and cluster dns. 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.go index 2342242e5..a69e9f53a 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults.go @@ -71,6 +71,10 @@ func SetDefaults_Seed(obj *Seed) { 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. @@ -100,9 +104,6 @@ func SetDefaults_Shoot(obj *Shoot) { if obj.Spec.Kubernetes.KubeAPIServer == nil { obj.Spec.Kubernetes.KubeAPIServer = &KubeAPIServerConfig{} } - if obj.Spec.Kubernetes.KubeAPIServer.EnableBasicAuthentication == nil { - obj.Spec.Kubernetes.KubeAPIServer.EnableBasicAuthentication = pointer.Bool(false) - } if obj.Spec.Kubernetes.KubeAPIServer.Requests == nil { obj.Spec.Kubernetes.KubeAPIServer.Requests = &KubeAPIServerRequests{} } @@ -176,12 +177,7 @@ func SetDefaults_Shoot(obj *Shoot) { obj.Spec.Addons.KubernetesDashboard = &KubernetesDashboard{} } if obj.Spec.Addons.KubernetesDashboard.AuthenticationMode == nil { - var defaultAuthMode string - if *obj.Spec.Kubernetes.KubeAPIServer.EnableBasicAuthentication { - defaultAuthMode = KubernetesDashboardAuthModeBasic - } else { - defaultAuthMode = KubernetesDashboardAuthModeToken - } + defaultAuthMode := KubernetesDashboardAuthModeToken obj.Spec.Addons.KubernetesDashboard.AuthenticationMode = &defaultAuthMode } 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 d65538470..d637d9773 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 @@ -1313,10 +1313,38 @@ func (m *DeploymentRef) XXX_DiscardUnknown() { var xxx_messageInfo_DeploymentRef proto.InternalMessageInfo +func (m *ETCDEncryptionKeyRotation) Reset() { *m = ETCDEncryptionKeyRotation{} } +func (*ETCDEncryptionKeyRotation) ProtoMessage() {} +func (*ETCDEncryptionKeyRotation) Descriptor() ([]byte, []int) { + return fileDescriptor_ca37af0df9a5bbd2, []int{45} +} +func (m *ETCDEncryptionKeyRotation) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ETCDEncryptionKeyRotation) 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 *ETCDEncryptionKeyRotation) XXX_Merge(src proto.Message) { + xxx_messageInfo_ETCDEncryptionKeyRotation.Merge(m, src) +} +func (m *ETCDEncryptionKeyRotation) XXX_Size() int { + return m.Size() +} +func (m *ETCDEncryptionKeyRotation) XXX_DiscardUnknown() { + xxx_messageInfo_ETCDEncryptionKeyRotation.DiscardUnknown(m) +} + +var xxx_messageInfo_ETCDEncryptionKeyRotation proto.InternalMessageInfo + func (m *ExpirableVersion) Reset() { *m = ExpirableVersion{} } func (*ExpirableVersion) ProtoMessage() {} func (*ExpirableVersion) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{45} + return fileDescriptor_ca37af0df9a5bbd2, []int{46} } func (m *ExpirableVersion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1344,7 +1372,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{46} + return fileDescriptor_ca37af0df9a5bbd2, []int{47} } func (m *ExposureClass) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1372,7 +1400,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{47} + return fileDescriptor_ca37af0df9a5bbd2, []int{48} } func (m *ExposureClassList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1400,7 +1428,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{48} + return fileDescriptor_ca37af0df9a5bbd2, []int{49} } func (m *ExposureClassScheduling) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1428,7 +1456,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{49} + return fileDescriptor_ca37af0df9a5bbd2, []int{50} } func (m *Extension) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1456,7 +1484,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{50} + return fileDescriptor_ca37af0df9a5bbd2, []int{51} } func (m *ExtensionResourceState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1484,7 +1512,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{51} + return fileDescriptor_ca37af0df9a5bbd2, []int{52} } func (m *FailureTolerance) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1512,7 +1540,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{52} + return fileDescriptor_ca37af0df9a5bbd2, []int{53} } func (m *Gardener) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1540,7 +1568,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{53} + return fileDescriptor_ca37af0df9a5bbd2, []int{54} } func (m *GardenerResourceData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1568,7 +1596,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{54} + return fileDescriptor_ca37af0df9a5bbd2, []int{55} } func (m *Hibernation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1596,7 +1624,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{55} + return fileDescriptor_ca37af0df9a5bbd2, []int{56} } func (m *HibernationSchedule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1624,7 +1652,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{56} + return fileDescriptor_ca37af0df9a5bbd2, []int{57} } func (m *HighAvailability) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1652,7 +1680,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{57} + return fileDescriptor_ca37af0df9a5bbd2, []int{58} } func (m *HorizontalPodAutoscalerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1680,7 +1708,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{58} + return fileDescriptor_ca37af0df9a5bbd2, []int{59} } func (m *Ingress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1708,7 +1736,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{59} + return fileDescriptor_ca37af0df9a5bbd2, []int{60} } func (m *IngressController) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1736,7 +1764,7 @@ var xxx_messageInfo_IngressController proto.InternalMessageInfo func (m *KubeAPIServerConfig) Reset() { *m = KubeAPIServerConfig{} } func (*KubeAPIServerConfig) ProtoMessage() {} func (*KubeAPIServerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{60} + return fileDescriptor_ca37af0df9a5bbd2, []int{61} } func (m *KubeAPIServerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1764,7 +1792,7 @@ var xxx_messageInfo_KubeAPIServerConfig proto.InternalMessageInfo func (m *KubeAPIServerLogging) Reset() { *m = KubeAPIServerLogging{} } func (*KubeAPIServerLogging) ProtoMessage() {} func (*KubeAPIServerLogging) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{61} + return fileDescriptor_ca37af0df9a5bbd2, []int{62} } func (m *KubeAPIServerLogging) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1792,7 +1820,7 @@ var xxx_messageInfo_KubeAPIServerLogging proto.InternalMessageInfo func (m *KubeAPIServerRequests) Reset() { *m = KubeAPIServerRequests{} } func (*KubeAPIServerRequests) ProtoMessage() {} func (*KubeAPIServerRequests) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{62} + return fileDescriptor_ca37af0df9a5bbd2, []int{63} } func (m *KubeAPIServerRequests) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1820,7 +1848,7 @@ var xxx_messageInfo_KubeAPIServerRequests proto.InternalMessageInfo func (m *KubeControllerManagerConfig) Reset() { *m = KubeControllerManagerConfig{} } func (*KubeControllerManagerConfig) ProtoMessage() {} func (*KubeControllerManagerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{63} + return fileDescriptor_ca37af0df9a5bbd2, []int{64} } func (m *KubeControllerManagerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1848,7 +1876,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{64} + return fileDescriptor_ca37af0df9a5bbd2, []int{65} } func (m *KubeProxyConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1876,7 +1904,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{65} + return fileDescriptor_ca37af0df9a5bbd2, []int{66} } func (m *KubeSchedulerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1904,7 +1932,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{66} + return fileDescriptor_ca37af0df9a5bbd2, []int{67} } func (m *KubeletConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1932,7 +1960,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{67} + return fileDescriptor_ca37af0df9a5bbd2, []int{68} } func (m *KubeletConfigEviction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1960,7 +1988,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{68} + return fileDescriptor_ca37af0df9a5bbd2, []int{69} } func (m *KubeletConfigEvictionMinimumReclaim) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1988,7 +2016,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{69} + return fileDescriptor_ca37af0df9a5bbd2, []int{70} } func (m *KubeletConfigEvictionSoftGracePeriod) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2016,7 +2044,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{70} + return fileDescriptor_ca37af0df9a5bbd2, []int{71} } func (m *KubeletConfigReserved) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2044,7 +2072,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{71} + return fileDescriptor_ca37af0df9a5bbd2, []int{72} } func (m *Kubernetes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2072,7 +2100,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{72} + return fileDescriptor_ca37af0df9a5bbd2, []int{73} } func (m *KubernetesConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2100,7 +2128,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{73} + return fileDescriptor_ca37af0df9a5bbd2, []int{74} } func (m *KubernetesDashboard) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2128,7 +2156,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{74} + return fileDescriptor_ca37af0df9a5bbd2, []int{75} } func (m *KubernetesSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2156,7 +2184,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{75} + return fileDescriptor_ca37af0df9a5bbd2, []int{76} } func (m *LastError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2184,7 +2212,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{76} + return fileDescriptor_ca37af0df9a5bbd2, []int{77} } func (m *LastMaintenance) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2212,7 +2240,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{77} + return fileDescriptor_ca37af0df9a5bbd2, []int{78} } func (m *LastOperation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2240,7 +2268,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{78} + return fileDescriptor_ca37af0df9a5bbd2, []int{79} } func (m *Machine) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2268,7 +2296,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{79} + return fileDescriptor_ca37af0df9a5bbd2, []int{80} } func (m *MachineControllerManagerSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2296,7 +2324,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{80} + return fileDescriptor_ca37af0df9a5bbd2, []int{81} } func (m *MachineImage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2324,7 +2352,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{81} + return fileDescriptor_ca37af0df9a5bbd2, []int{82} } func (m *MachineImageVersion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2352,7 +2380,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{82} + return fileDescriptor_ca37af0df9a5bbd2, []int{83} } func (m *MachineType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2380,7 +2408,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{83} + return fileDescriptor_ca37af0df9a5bbd2, []int{84} } func (m *MachineTypeStorage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2408,7 +2436,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{84} + return fileDescriptor_ca37af0df9a5bbd2, []int{85} } func (m *Maintenance) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2436,7 +2464,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{85} + return fileDescriptor_ca37af0df9a5bbd2, []int{86} } func (m *MaintenanceAutoUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2464,7 +2492,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{86} + return fileDescriptor_ca37af0df9a5bbd2, []int{87} } func (m *MaintenanceTimeWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2492,7 +2520,7 @@ var xxx_messageInfo_MaintenanceTimeWindow proto.InternalMessageInfo func (m *Monitoring) Reset() { *m = Monitoring{} } func (*Monitoring) ProtoMessage() {} func (*Monitoring) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{87} + return fileDescriptor_ca37af0df9a5bbd2, []int{88} } func (m *Monitoring) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2520,7 +2548,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{88} + return fileDescriptor_ca37af0df9a5bbd2, []int{89} } func (m *NamedResourceReference) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2548,7 +2576,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{89} + return fileDescriptor_ca37af0df9a5bbd2, []int{90} } func (m *Networking) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2576,7 +2604,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{90} + return fileDescriptor_ca37af0df9a5bbd2, []int{91} } func (m *NginxIngress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2604,7 +2632,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{91} + return fileDescriptor_ca37af0df9a5bbd2, []int{92} } func (m *NodeLocalDNS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2632,7 +2660,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{92} + return fileDescriptor_ca37af0df9a5bbd2, []int{93} } func (m *OIDCConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2660,7 +2688,7 @@ var xxx_messageInfo_OIDCConfig proto.InternalMessageInfo func (m *OpenIDConnectClientAuthentication) Reset() { *m = OpenIDConnectClientAuthentication{} } func (*OpenIDConnectClientAuthentication) ProtoMessage() {} func (*OpenIDConnectClientAuthentication) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{93} + return fileDescriptor_ca37af0df9a5bbd2, []int{94} } func (m *OpenIDConnectClientAuthentication) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2688,7 +2716,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{94} + return fileDescriptor_ca37af0df9a5bbd2, []int{95} } func (m *Project) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2716,7 +2744,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{95} + return fileDescriptor_ca37af0df9a5bbd2, []int{96} } func (m *ProjectList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2744,7 +2772,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{96} + return fileDescriptor_ca37af0df9a5bbd2, []int{97} } func (m *ProjectMember) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2772,7 +2800,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{97} + return fileDescriptor_ca37af0df9a5bbd2, []int{98} } func (m *ProjectSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2800,7 +2828,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{98} + return fileDescriptor_ca37af0df9a5bbd2, []int{99} } func (m *ProjectStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2828,7 +2856,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{99} + return fileDescriptor_ca37af0df9a5bbd2, []int{100} } func (m *ProjectTolerations) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2856,7 +2884,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{100} + return fileDescriptor_ca37af0df9a5bbd2, []int{101} } func (m *Provider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2884,7 +2912,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{101} + return fileDescriptor_ca37af0df9a5bbd2, []int{102} } func (m *Quota) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2912,7 +2940,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{102} + return fileDescriptor_ca37af0df9a5bbd2, []int{103} } func (m *QuotaList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2940,7 +2968,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{103} + return fileDescriptor_ca37af0df9a5bbd2, []int{104} } func (m *QuotaSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2968,7 +2996,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{104} + return fileDescriptor_ca37af0df9a5bbd2, []int{105} } func (m *Region) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2996,7 +3024,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{105} + return fileDescriptor_ca37af0df9a5bbd2, []int{106} } func (m *ResourceData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3024,7 +3052,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{106} + return fileDescriptor_ca37af0df9a5bbd2, []int{107} } func (m *ResourceWatchCacheSize) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3052,7 +3080,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{107} + return fileDescriptor_ca37af0df9a5bbd2, []int{108} } func (m *SSHAccess) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3080,7 +3108,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{108} + return fileDescriptor_ca37af0df9a5bbd2, []int{109} } func (m *SecretBinding) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3108,7 +3136,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{109} + return fileDescriptor_ca37af0df9a5bbd2, []int{110} } func (m *SecretBindingList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3136,7 +3164,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{110} + return fileDescriptor_ca37af0df9a5bbd2, []int{111} } func (m *SecretBindingProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3164,7 +3192,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{111} + return fileDescriptor_ca37af0df9a5bbd2, []int{112} } func (m *Seed) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3192,7 +3220,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{112} + return fileDescriptor_ca37af0df9a5bbd2, []int{113} } func (m *SeedBackup) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3220,7 +3248,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{113} + return fileDescriptor_ca37af0df9a5bbd2, []int{114} } func (m *SeedDNS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3248,7 +3276,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{114} + return fileDescriptor_ca37af0df9a5bbd2, []int{115} } func (m *SeedDNSProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3276,7 +3304,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{115} + return fileDescriptor_ca37af0df9a5bbd2, []int{116} } func (m *SeedList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3304,7 +3332,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{116} + return fileDescriptor_ca37af0df9a5bbd2, []int{117} } func (m *SeedNetworks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3332,7 +3360,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{117} + return fileDescriptor_ca37af0df9a5bbd2, []int{118} } func (m *SeedProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3360,7 +3388,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{118} + return fileDescriptor_ca37af0df9a5bbd2, []int{119} } func (m *SeedSelector) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3388,7 +3416,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{119} + return fileDescriptor_ca37af0df9a5bbd2, []int{120} } func (m *SeedSettingDependencyWatchdog) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3416,7 +3444,7 @@ var xxx_messageInfo_SeedSettingDependencyWatchdog proto.InternalMessageInfo func (m *SeedSettingDependencyWatchdogEndpoint) Reset() { *m = SeedSettingDependencyWatchdogEndpoint{} } func (*SeedSettingDependencyWatchdogEndpoint) ProtoMessage() {} func (*SeedSettingDependencyWatchdogEndpoint) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{120} + return fileDescriptor_ca37af0df9a5bbd2, []int{121} } func (m *SeedSettingDependencyWatchdogEndpoint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3444,7 +3472,7 @@ var xxx_messageInfo_SeedSettingDependencyWatchdogEndpoint proto.InternalMessageI func (m *SeedSettingDependencyWatchdogProbe) Reset() { *m = SeedSettingDependencyWatchdogProbe{} } func (*SeedSettingDependencyWatchdogProbe) ProtoMessage() {} func (*SeedSettingDependencyWatchdogProbe) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{121} + return fileDescriptor_ca37af0df9a5bbd2, []int{122} } func (m *SeedSettingDependencyWatchdogProbe) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3472,7 +3500,7 @@ var xxx_messageInfo_SeedSettingDependencyWatchdogProbe proto.InternalMessageInfo func (m *SeedSettingExcessCapacityReservation) Reset() { *m = SeedSettingExcessCapacityReservation{} } func (*SeedSettingExcessCapacityReservation) ProtoMessage() {} func (*SeedSettingExcessCapacityReservation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{122} + return fileDescriptor_ca37af0df9a5bbd2, []int{123} } func (m *SeedSettingExcessCapacityReservation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3500,7 +3528,7 @@ var xxx_messageInfo_SeedSettingExcessCapacityReservation proto.InternalMessageIn func (m *SeedSettingLoadBalancerServices) Reset() { *m = SeedSettingLoadBalancerServices{} } func (*SeedSettingLoadBalancerServices) ProtoMessage() {} func (*SeedSettingLoadBalancerServices) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{123} + return fileDescriptor_ca37af0df9a5bbd2, []int{124} } func (m *SeedSettingLoadBalancerServices) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3528,7 +3556,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{124} + return fileDescriptor_ca37af0df9a5bbd2, []int{125} } func (m *SeedSettingLoadBalancerServicesZones) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3556,7 +3584,7 @@ var xxx_messageInfo_SeedSettingLoadBalancerServicesZones proto.InternalMessageIn func (m *SeedSettingOwnerChecks) Reset() { *m = SeedSettingOwnerChecks{} } func (*SeedSettingOwnerChecks) ProtoMessage() {} func (*SeedSettingOwnerChecks) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{125} + return fileDescriptor_ca37af0df9a5bbd2, []int{126} } func (m *SeedSettingOwnerChecks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3584,7 +3612,7 @@ var xxx_messageInfo_SeedSettingOwnerChecks proto.InternalMessageInfo func (m *SeedSettingScheduling) Reset() { *m = SeedSettingScheduling{} } func (*SeedSettingScheduling) ProtoMessage() {} func (*SeedSettingScheduling) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{126} + return fileDescriptor_ca37af0df9a5bbd2, []int{127} } func (m *SeedSettingScheduling) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3609,10 +3637,38 @@ func (m *SeedSettingScheduling) XXX_DiscardUnknown() { var xxx_messageInfo_SeedSettingScheduling proto.InternalMessageInfo +func (m *SeedSettingTopologyAwareRouting) Reset() { *m = SeedSettingTopologyAwareRouting{} } +func (*SeedSettingTopologyAwareRouting) ProtoMessage() {} +func (*SeedSettingTopologyAwareRouting) Descriptor() ([]byte, []int) { + return fileDescriptor_ca37af0df9a5bbd2, []int{128} +} +func (m *SeedSettingTopologyAwareRouting) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SeedSettingTopologyAwareRouting) 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 *SeedSettingTopologyAwareRouting) XXX_Merge(src proto.Message) { + xxx_messageInfo_SeedSettingTopologyAwareRouting.Merge(m, src) +} +func (m *SeedSettingTopologyAwareRouting) XXX_Size() int { + return m.Size() +} +func (m *SeedSettingTopologyAwareRouting) XXX_DiscardUnknown() { + xxx_messageInfo_SeedSettingTopologyAwareRouting.DiscardUnknown(m) +} + +var xxx_messageInfo_SeedSettingTopologyAwareRouting proto.InternalMessageInfo + func (m *SeedSettingVerticalPodAutoscaler) Reset() { *m = SeedSettingVerticalPodAutoscaler{} } func (*SeedSettingVerticalPodAutoscaler) ProtoMessage() {} func (*SeedSettingVerticalPodAutoscaler) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{127} + return fileDescriptor_ca37af0df9a5bbd2, []int{129} } func (m *SeedSettingVerticalPodAutoscaler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3640,7 +3696,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{128} + return fileDescriptor_ca37af0df9a5bbd2, []int{130} } func (m *SeedSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3668,7 +3724,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{129} + return fileDescriptor_ca37af0df9a5bbd2, []int{131} } func (m *SeedSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3696,7 +3752,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{130} + return fileDescriptor_ca37af0df9a5bbd2, []int{132} } func (m *SeedStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3724,7 +3780,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{131} + return fileDescriptor_ca37af0df9a5bbd2, []int{133} } func (m *SeedTaint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3752,7 +3808,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{132} + return fileDescriptor_ca37af0df9a5bbd2, []int{134} } func (m *SeedTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3780,7 +3836,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{133} + return fileDescriptor_ca37af0df9a5bbd2, []int{135} } func (m *SeedVolume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3808,7 +3864,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{134} + return fileDescriptor_ca37af0df9a5bbd2, []int{136} } func (m *SeedVolumeProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3836,7 +3892,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{135} + return fileDescriptor_ca37af0df9a5bbd2, []int{137} } func (m *ServiceAccountConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3861,10 +3917,38 @@ func (m *ServiceAccountConfig) XXX_DiscardUnknown() { var xxx_messageInfo_ServiceAccountConfig proto.InternalMessageInfo +func (m *ServiceAccountKeyRotation) Reset() { *m = ServiceAccountKeyRotation{} } +func (*ServiceAccountKeyRotation) ProtoMessage() {} +func (*ServiceAccountKeyRotation) Descriptor() ([]byte, []int) { + return fileDescriptor_ca37af0df9a5bbd2, []int{138} +} +func (m *ServiceAccountKeyRotation) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ServiceAccountKeyRotation) 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 *ServiceAccountKeyRotation) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceAccountKeyRotation.Merge(m, src) +} +func (m *ServiceAccountKeyRotation) XXX_Size() int { + return m.Size() +} +func (m *ServiceAccountKeyRotation) XXX_DiscardUnknown() { + xxx_messageInfo_ServiceAccountKeyRotation.DiscardUnknown(m) +} + +var xxx_messageInfo_ServiceAccountKeyRotation proto.InternalMessageInfo + func (m *Shoot) Reset() { *m = Shoot{} } func (*Shoot) ProtoMessage() {} func (*Shoot) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{136} + return fileDescriptor_ca37af0df9a5bbd2, []int{139} } func (m *Shoot) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3892,7 +3976,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{137} + return fileDescriptor_ca37af0df9a5bbd2, []int{140} } func (m *ShootAdvertisedAddress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3920,7 +4004,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{138} + return fileDescriptor_ca37af0df9a5bbd2, []int{141} } func (m *ShootCredentials) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3948,7 +4032,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{139} + return fileDescriptor_ca37af0df9a5bbd2, []int{142} } func (m *ShootCredentialsRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3973,38 +4057,10 @@ func (m *ShootCredentialsRotation) XXX_DiscardUnknown() { var xxx_messageInfo_ShootCredentialsRotation proto.InternalMessageInfo -func (m *ShootETCDEncryptionKeyRotation) Reset() { *m = ShootETCDEncryptionKeyRotation{} } -func (*ShootETCDEncryptionKeyRotation) ProtoMessage() {} -func (*ShootETCDEncryptionKeyRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{140} -} -func (m *ShootETCDEncryptionKeyRotation) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ShootETCDEncryptionKeyRotation) 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 *ShootETCDEncryptionKeyRotation) XXX_Merge(src proto.Message) { - xxx_messageInfo_ShootETCDEncryptionKeyRotation.Merge(m, src) -} -func (m *ShootETCDEncryptionKeyRotation) XXX_Size() int { - return m.Size() -} -func (m *ShootETCDEncryptionKeyRotation) XXX_DiscardUnknown() { - xxx_messageInfo_ShootETCDEncryptionKeyRotation.DiscardUnknown(m) -} - -var xxx_messageInfo_ShootETCDEncryptionKeyRotation proto.InternalMessageInfo - func (m *ShootKubeconfigRotation) Reset() { *m = ShootKubeconfigRotation{} } func (*ShootKubeconfigRotation) ProtoMessage() {} func (*ShootKubeconfigRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{141} + return fileDescriptor_ca37af0df9a5bbd2, []int{143} } func (m *ShootKubeconfigRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4032,7 +4088,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{142} + return fileDescriptor_ca37af0df9a5bbd2, []int{144} } func (m *ShootList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4060,7 +4116,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{143} + return fileDescriptor_ca37af0df9a5bbd2, []int{145} } func (m *ShootMachineImage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4088,7 +4144,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{144} + return fileDescriptor_ca37af0df9a5bbd2, []int{146} } func (m *ShootNetworks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4116,7 +4172,7 @@ var xxx_messageInfo_ShootNetworks proto.InternalMessageInfo func (m *ShootObservabilityRotation) Reset() { *m = ShootObservabilityRotation{} } func (*ShootObservabilityRotation) ProtoMessage() {} func (*ShootObservabilityRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{145} + return fileDescriptor_ca37af0df9a5bbd2, []int{147} } func (m *ShootObservabilityRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4144,7 +4200,7 @@ var xxx_messageInfo_ShootObservabilityRotation proto.InternalMessageInfo func (m *ShootSSHKeypairRotation) Reset() { *m = ShootSSHKeypairRotation{} } func (*ShootSSHKeypairRotation) ProtoMessage() {} func (*ShootSSHKeypairRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{146} + return fileDescriptor_ca37af0df9a5bbd2, []int{148} } func (m *ShootSSHKeypairRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4169,38 +4225,10 @@ func (m *ShootSSHKeypairRotation) XXX_DiscardUnknown() { var xxx_messageInfo_ShootSSHKeypairRotation proto.InternalMessageInfo -func (m *ShootServiceAccountKeyRotation) Reset() { *m = ShootServiceAccountKeyRotation{} } -func (*ShootServiceAccountKeyRotation) ProtoMessage() {} -func (*ShootServiceAccountKeyRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{147} -} -func (m *ShootServiceAccountKeyRotation) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ShootServiceAccountKeyRotation) 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 *ShootServiceAccountKeyRotation) XXX_Merge(src proto.Message) { - xxx_messageInfo_ShootServiceAccountKeyRotation.Merge(m, src) -} -func (m *ShootServiceAccountKeyRotation) XXX_Size() int { - return m.Size() -} -func (m *ShootServiceAccountKeyRotation) XXX_DiscardUnknown() { - xxx_messageInfo_ShootServiceAccountKeyRotation.DiscardUnknown(m) -} - -var xxx_messageInfo_ShootServiceAccountKeyRotation proto.InternalMessageInfo - func (m *ShootSpec) Reset() { *m = ShootSpec{} } func (*ShootSpec) ProtoMessage() {} func (*ShootSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{148} + return fileDescriptor_ca37af0df9a5bbd2, []int{149} } func (m *ShootSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4228,7 +4256,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{149} + return fileDescriptor_ca37af0df9a5bbd2, []int{150} } func (m *ShootState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4256,7 +4284,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{150} + return fileDescriptor_ca37af0df9a5bbd2, []int{151} } func (m *ShootStateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4284,7 +4312,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{151} + return fileDescriptor_ca37af0df9a5bbd2, []int{152} } func (m *ShootStateSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4312,7 +4340,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{152} + return fileDescriptor_ca37af0df9a5bbd2, []int{153} } func (m *ShootStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4340,7 +4368,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{153} + return fileDescriptor_ca37af0df9a5bbd2, []int{154} } func (m *ShootTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4368,7 +4396,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{154} + return fileDescriptor_ca37af0df9a5bbd2, []int{155} } func (m *SystemComponents) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4396,7 +4424,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{155} + return fileDescriptor_ca37af0df9a5bbd2, []int{156} } func (m *Toleration) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4424,7 +4452,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{156} + return fileDescriptor_ca37af0df9a5bbd2, []int{157} } func (m *VerticalPodAutoscaler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4452,7 +4480,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{157} + return fileDescriptor_ca37af0df9a5bbd2, []int{158} } func (m *Volume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4480,7 +4508,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{158} + return fileDescriptor_ca37af0df9a5bbd2, []int{159} } func (m *VolumeType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4508,7 +4536,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{159} + return fileDescriptor_ca37af0df9a5bbd2, []int{160} } func (m *WatchCacheSizes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4536,7 +4564,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{160} + return fileDescriptor_ca37af0df9a5bbd2, []int{161} } func (m *Worker) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4564,7 +4592,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{161} + return fileDescriptor_ca37af0df9a5bbd2, []int{162} } func (m *WorkerKubernetes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4592,7 +4620,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{162} + return fileDescriptor_ca37af0df9a5bbd2, []int{163} } func (m *WorkerSystemComponents) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4620,7 +4648,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{163} + return fileDescriptor_ca37af0df9a5bbd2, []int{164} } func (m *WorkersSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4691,6 +4719,7 @@ func init() { proto.RegisterType((*DNSProvider)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.DNSProvider") proto.RegisterType((*DataVolume)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.DataVolume") proto.RegisterType((*DeploymentRef)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.DeploymentRef") + proto.RegisterType((*ETCDEncryptionKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ETCDEncryptionKeyRotation") proto.RegisterType((*ExpirableVersion)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ExpirableVersion") proto.RegisterType((*ExposureClass)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ExposureClass") proto.RegisterType((*ExposureClassList)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ExposureClassList") @@ -4783,6 +4812,7 @@ func init() { proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingLoadBalancerServicesZones.AnnotationsEntry") proto.RegisterType((*SeedSettingOwnerChecks)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingOwnerChecks") proto.RegisterType((*SeedSettingScheduling)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingScheduling") + proto.RegisterType((*SeedSettingTopologyAwareRouting)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingTopologyAwareRouting") proto.RegisterType((*SeedSettingVerticalPodAutoscaler)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingVerticalPodAutoscaler") proto.RegisterType((*SeedSettings)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettings") proto.RegisterType((*SeedSpec)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSpec") @@ -4794,18 +4824,17 @@ func init() { proto.RegisterType((*SeedVolume)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedVolume") proto.RegisterType((*SeedVolumeProvider)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedVolumeProvider") proto.RegisterType((*ServiceAccountConfig)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ServiceAccountConfig") + proto.RegisterType((*ServiceAccountKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ServiceAccountKeyRotation") proto.RegisterType((*Shoot)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.Shoot") proto.RegisterType((*ShootAdvertisedAddress)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootAdvertisedAddress") proto.RegisterType((*ShootCredentials)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootCredentials") proto.RegisterType((*ShootCredentialsRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootCredentialsRotation") - proto.RegisterType((*ShootETCDEncryptionKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootETCDEncryptionKeyRotation") proto.RegisterType((*ShootKubeconfigRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootKubeconfigRotation") proto.RegisterType((*ShootList)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootList") proto.RegisterType((*ShootMachineImage)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootMachineImage") proto.RegisterType((*ShootNetworks)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootNetworks") proto.RegisterType((*ShootObservabilityRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootObservabilityRotation") proto.RegisterType((*ShootSSHKeypairRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootSSHKeypairRotation") - proto.RegisterType((*ShootServiceAccountKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootServiceAccountKeyRotation") proto.RegisterType((*ShootSpec)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootSpec") proto.RegisterType((*ShootState)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootState") proto.RegisterType((*ShootStateList)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootStateList") @@ -4831,727 +4860,730 @@ func init() { } var fileDescriptor_ca37af0df9a5bbd2 = []byte{ - // 11515 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6b, 0x6c, 0x25, 0xd7, - 0x79, 0x98, 0xe7, 0xf2, 0x75, 0xf9, 0xf1, 0xb1, 0xdc, 0xb3, 0x0f, 0x51, 0x5c, 0x69, 0xef, 0x7a, - 0x24, 0xbb, 0x52, 0xed, 0x70, 0x23, 0x59, 0x8e, 0x2d, 0x39, 0xb2, 0x4c, 0xde, 0xcb, 0xdd, 0xbd, - 0x59, 0x92, 0x4b, 0x9d, 0xbb, 0x2b, 0xc9, 0x4a, 0xaa, 0x66, 0x38, 0x73, 0x78, 0x39, 0xe2, 0xdc, - 0x99, 0xab, 0x99, 0xb9, 0x5c, 0x52, 0xb2, 0xeb, 0xd8, 0xf5, 0x23, 0x56, 0xe2, 0xc0, 0x30, 0x90, - 0x0a, 0xb6, 0xd3, 0xc6, 0x41, 0x90, 0xc6, 0x45, 0x0b, 0x27, 0x7d, 0x38, 0x40, 0x1a, 0xb4, 0x08, - 0x0c, 0x14, 0xb1, 0x83, 0x34, 0x70, 0x9d, 0x06, 0x75, 0x81, 0x86, 0xae, 0xd9, 0xd4, 0x2e, 0xd0, - 0x22, 0x28, 0x10, 0x14, 0x05, 0xb6, 0xf9, 0x51, 0x9c, 0xc7, 0x9c, 0x39, 0xf3, 0xba, 0x24, 0xe7, - 0x92, 0xb4, 0x84, 0xe4, 0x17, 0x79, 0xcf, 0xe3, 0xfb, 0xce, 0x9c, 0xc7, 0x77, 0xbe, 0xef, 0x3b, - 0xdf, 0x03, 0x16, 0xdb, 0x76, 0xb8, 0xd9, 0x5b, 0x9f, 0x37, 0xbd, 0xce, 0xd5, 0xb6, 0xe1, 0x5b, - 0xc4, 0x25, 0x7e, 0xfc, 0x4f, 0x77, 0xab, 0x7d, 0xd5, 0xe8, 0xda, 0xc1, 0x55, 0xd3, 0xf3, 0xc9, - 0xd5, 0xed, 0xc7, 0xd6, 0x49, 0x68, 0x3c, 0x76, 0xb5, 0x4d, 0xeb, 0x8c, 0x90, 0x58, 0xf3, 0x5d, - 0xdf, 0x0b, 0x3d, 0xf4, 0x78, 0x0c, 0x63, 0x3e, 0xea, 0x1a, 0xff, 0xd3, 0xdd, 0x6a, 0xcf, 0x53, - 0x18, 0xf3, 0x14, 0xc6, 0xbc, 0x80, 0x31, 0xf7, 0x63, 0x2a, 0x5e, 0xaf, 0xed, 0x5d, 0x65, 0xa0, - 0xd6, 0x7b, 0x1b, 0xec, 0x17, 0xfb, 0xc1, 0xfe, 0xe3, 0x28, 0xe6, 0x1e, 0xdd, 0x7a, 0x7f, 0x30, - 0x6f, 0x7b, 0x74, 0x30, 0x57, 0x8d, 0x5e, 0xe8, 0x05, 0xa6, 0xe1, 0xd8, 0x6e, 0xfb, 0xea, 0x76, - 0x66, 0x34, 0x73, 0xba, 0xd2, 0x54, 0x0c, 0xbb, 0x6f, 0x1b, 0x7f, 0xdd, 0x30, 0xf3, 0xda, 0x3c, - 0x11, 0xb7, 0xe9, 0x18, 0xe6, 0xa6, 0xed, 0x12, 0x7f, 0x37, 0x9a, 0x90, 0xab, 0x3e, 0x09, 0xbc, - 0x9e, 0x6f, 0x92, 0x23, 0xf5, 0x0a, 0xae, 0x76, 0x48, 0x68, 0xe4, 0xe1, 0xba, 0x5a, 0xd4, 0xcb, - 0xef, 0xb9, 0xa1, 0xdd, 0xc9, 0xa2, 0xf9, 0x89, 0x83, 0x3a, 0x04, 0xe6, 0x26, 0xe9, 0x18, 0x99, - 0x7e, 0xef, 0x29, 0xea, 0xd7, 0x0b, 0x6d, 0xe7, 0xaa, 0xed, 0x86, 0x41, 0xe8, 0xa7, 0x3b, 0xe9, - 0x8f, 0xc3, 0xc8, 0x82, 0x65, 0x79, 0x2e, 0x7a, 0x14, 0xc6, 0x88, 0x6b, 0xac, 0x3b, 0xc4, 0x9a, - 0xd5, 0xae, 0x68, 0x8f, 0x54, 0x17, 0xcf, 0x7c, 0x73, 0xaf, 0xf6, 0xb6, 0xfd, 0xbd, 0xda, 0xd8, - 0x12, 0x2f, 0xc6, 0x51, 0xbd, 0xfe, 0xcb, 0x15, 0x18, 0x65, 0x9d, 0x02, 0xf4, 0x05, 0x0d, 0xce, - 0x6d, 0xf5, 0xd6, 0x89, 0xef, 0x92, 0x90, 0x04, 0x0d, 0x23, 0xd8, 0x5c, 0xf7, 0x0c, 0x9f, 0x83, - 0x98, 0x78, 0xfc, 0xfa, 0xfc, 0xd1, 0x77, 0xcf, 0xfc, 0xcd, 0x2c, 0xb8, 0xc5, 0xfb, 0xf6, 0xf7, - 0x6a, 0xe7, 0x72, 0x2a, 0x70, 0x1e, 0x72, 0xb4, 0x0d, 0x93, 0x6e, 0xdb, 0x76, 0x77, 0x9a, 0x6e, - 0xdb, 0x27, 0x41, 0x30, 0x5b, 0x61, 0x83, 0xf9, 0x50, 0x99, 0xc1, 0xac, 0x2a, 0x70, 0x16, 0x67, - 0xf6, 0xf7, 0x6a, 0x93, 0x6a, 0x09, 0x4e, 0xe0, 0xd1, 0x7f, 0x5b, 0x83, 0x33, 0x0b, 0x56, 0xc7, - 0x0e, 0x02, 0xdb, 0x73, 0xd7, 0x9c, 0x5e, 0xdb, 0x76, 0xd1, 0x15, 0x18, 0x76, 0x8d, 0x0e, 0x61, - 0x13, 0x32, 0xbe, 0x38, 0x29, 0xe6, 0x74, 0x78, 0xd5, 0xe8, 0x10, 0xcc, 0x6a, 0xd0, 0xb3, 0x30, - 0x6a, 0x7a, 0xee, 0x86, 0xdd, 0x16, 0xe3, 0xfc, 0xb1, 0x79, 0xbe, 0x8e, 0xf3, 0xea, 0x3a, 0xb2, - 0xe1, 0x89, 0xf5, 0x9f, 0xc7, 0xc6, 0xdd, 0xa5, 0x9d, 0x90, 0xb8, 0x14, 0xcd, 0x22, 0xec, 0xef, - 0xd5, 0x46, 0xeb, 0x0c, 0x00, 0x16, 0x80, 0xd0, 0x23, 0x50, 0xb5, 0xec, 0x80, 0x2f, 0xe6, 0x10, - 0x5b, 0xcc, 0xc9, 0xfd, 0xbd, 0x5a, 0xb5, 0x21, 0xca, 0xb0, 0xac, 0xd5, 0xaf, 0x41, 0x75, 0xc1, - 0x21, 0x7e, 0x68, 0xbb, 0x6d, 0xf4, 0x14, 0x4c, 0x93, 0x8e, 0x61, 0x3b, 0x98, 0x98, 0xc4, 0xde, - 0x26, 0x7e, 0x30, 0xab, 0x5d, 0x19, 0x7a, 0x64, 0x7c, 0x11, 0xed, 0xef, 0xd5, 0xa6, 0x97, 0x12, - 0x35, 0x38, 0xd5, 0x52, 0xff, 0xb8, 0x06, 0x13, 0x0b, 0x3d, 0xcb, 0x0e, 0xf9, 0x48, 0x90, 0x0f, - 0x13, 0x06, 0xfd, 0xb9, 0xe6, 0x39, 0xb6, 0xb9, 0x2b, 0xb6, 0xc3, 0x33, 0x65, 0x56, 0x60, 0x21, - 0x06, 0xb3, 0x78, 0x66, 0x7f, 0xaf, 0x36, 0xa1, 0x14, 0x60, 0x15, 0x89, 0xbe, 0x09, 0x6a, 0x1d, - 0xfa, 0x30, 0x4c, 0xf2, 0xe9, 0x58, 0x31, 0xba, 0x98, 0x6c, 0x88, 0x31, 0x3c, 0xa4, 0xcc, 0x6e, - 0x84, 0x68, 0xfe, 0xd6, 0xfa, 0xcb, 0xc4, 0x0c, 0x31, 0xd9, 0x20, 0x3e, 0x71, 0x4d, 0xc2, 0x17, - 0xba, 0xae, 0x74, 0xc6, 0x09, 0x50, 0xfa, 0xf7, 0x34, 0x98, 0x59, 0xd8, 0x36, 0x6c, 0xc7, 0x58, - 0xb7, 0x1d, 0x3b, 0xdc, 0x7d, 0xd1, 0x73, 0xc9, 0x21, 0x56, 0xfa, 0x0e, 0xdc, 0xd7, 0x73, 0x0d, - 0xde, 0xcf, 0x21, 0x2b, 0x7c, 0x6d, 0x6f, 0xef, 0x76, 0x09, 0xdd, 0xa2, 0x74, 0xa6, 0x2f, 0xed, - 0xef, 0xd5, 0xee, 0xbb, 0x93, 0xdf, 0x04, 0x17, 0xf5, 0x45, 0x18, 0x2e, 0x2a, 0x55, 0xcf, 0x79, - 0x4e, 0xaf, 0x23, 0xa0, 0x0e, 0x31, 0xa8, 0x73, 0xfb, 0x7b, 0xb5, 0x8b, 0x77, 0x72, 0x5b, 0xe0, - 0x82, 0x9e, 0xfa, 0x37, 0x2b, 0x30, 0xb9, 0x68, 0x98, 0x5b, 0xbd, 0xee, 0x62, 0xcf, 0xdc, 0x22, - 0x21, 0xfa, 0x59, 0xa8, 0x52, 0x02, 0x67, 0x19, 0xa1, 0x21, 0x66, 0xf2, 0xc7, 0x0b, 0xf7, 0x29, - 0x5b, 0x44, 0xda, 0x3a, 0x9e, 0xdb, 0x15, 0x12, 0x1a, 0x8b, 0x48, 0xcc, 0x09, 0xc4, 0x65, 0x58, - 0x42, 0x45, 0x1b, 0x30, 0x1c, 0x74, 0x89, 0x29, 0x4e, 0x41, 0xa3, 0xcc, 0x5e, 0x51, 0x47, 0xdc, - 0xea, 0x12, 0x33, 0x5e, 0x05, 0xfa, 0x0b, 0x33, 0xf8, 0xc8, 0x85, 0xd1, 0x20, 0x34, 0xc2, 0x5e, - 0xc0, 0x8e, 0xc6, 0xc4, 0xe3, 0xd7, 0x06, 0xc6, 0xc4, 0xa0, 0x2d, 0x4e, 0x0b, 0x5c, 0xa3, 0xfc, - 0x37, 0x16, 0x58, 0xf4, 0xff, 0xa4, 0xc1, 0x8c, 0xda, 0x7c, 0xd9, 0x0e, 0x42, 0xf4, 0x33, 0x99, - 0xe9, 0x9c, 0x3f, 0xdc, 0x74, 0xd2, 0xde, 0x6c, 0x32, 0x67, 0x04, 0xba, 0x6a, 0x54, 0xa2, 0x4c, - 0x25, 0x81, 0x11, 0x3b, 0x24, 0x1d, 0xbe, 0xad, 0x4a, 0x52, 0x3e, 0x75, 0xc8, 0x8b, 0x53, 0x02, - 0xd9, 0x48, 0x93, 0x82, 0xc5, 0x1c, 0xba, 0xfe, 0xb3, 0x70, 0x5e, 0x6d, 0xb5, 0xe6, 0x7b, 0xdb, - 0xb6, 0x45, 0x7c, 0x7a, 0x12, 0xc2, 0xdd, 0x6e, 0xe6, 0x24, 0xd0, 0x9d, 0x85, 0x59, 0x0d, 0x7a, - 0x27, 0x8c, 0xfa, 0xa4, 0x6d, 0x7b, 0x2e, 0x5b, 0xed, 0xf1, 0x78, 0xee, 0x30, 0x2b, 0xc5, 0xa2, - 0x56, 0xff, 0x3f, 0x95, 0xe4, 0xdc, 0xd1, 0x65, 0x44, 0xdb, 0x50, 0xed, 0x0a, 0x54, 0x62, 0xee, - 0x6e, 0x0c, 0xfa, 0x81, 0xd1, 0xd0, 0xe3, 0x59, 0x8d, 0x4a, 0xb0, 0xc4, 0x85, 0x6c, 0x98, 0x8e, - 0xfe, 0xaf, 0x0f, 0x40, 0xb0, 0x19, 0x39, 0x5d, 0x4b, 0x00, 0xc2, 0x29, 0xc0, 0xe8, 0x36, 0x8c, - 0x07, 0xc4, 0xf4, 0x09, 0xa5, 0x49, 0x62, 0x9b, 0xe6, 0x12, 0xae, 0x56, 0xd4, 0x48, 0x10, 0xae, - 0xb3, 0x62, 0xf8, 0xe3, 0xb2, 0x02, 0xc7, 0x80, 0xe8, 0xb5, 0x10, 0x10, 0x62, 0x51, 0x8a, 0x34, - 0x3b, 0xcc, 0xd7, 0x86, 0x7e, 0x6a, 0x4b, 0x94, 0x61, 0x59, 0xab, 0x7f, 0x65, 0x18, 0x50, 0x76, - 0x8b, 0xab, 0x33, 0xc0, 0x4b, 0xc4, 0xfc, 0x0f, 0x32, 0x03, 0xe2, 0xb4, 0xa4, 0x00, 0xa3, 0x57, - 0x61, 0xca, 0x31, 0x82, 0xf0, 0x56, 0x97, 0x72, 0x2b, 0xd1, 0x46, 0x99, 0x78, 0x7c, 0xa1, 0xcc, - 0x4a, 0x2f, 0xab, 0x80, 0x16, 0xcf, 0xee, 0xef, 0xd5, 0xa6, 0x12, 0x45, 0x38, 0x89, 0x0a, 0xbd, - 0x0c, 0xe3, 0xb4, 0x60, 0xc9, 0xf7, 0x3d, 0x5f, 0xcc, 0xfe, 0xd3, 0x65, 0xf1, 0x32, 0x20, 0x8b, - 0x53, 0x74, 0x4d, 0xe4, 0x4f, 0x1c, 0x83, 0x47, 0x3f, 0x05, 0xc8, 0x5b, 0x0f, 0x88, 0xbf, 0x4d, - 0xac, 0xeb, 0x9c, 0x35, 0xa3, 0x1f, 0x4b, 0x57, 0x67, 0x68, 0x71, 0x4e, 0xac, 0x26, 0xba, 0x95, - 0x69, 0x81, 0x73, 0x7a, 0xa1, 0x2d, 0x40, 0x92, 0xbd, 0x93, 0x1b, 0x60, 0x76, 0xe4, 0xf0, 0xdb, - 0xe7, 0x22, 0x45, 0x76, 0x3d, 0x03, 0x02, 0xe7, 0x80, 0xd5, 0xff, 0x5d, 0x05, 0x26, 0xf8, 0x16, - 0x59, 0x72, 0x43, 0x7f, 0xf7, 0x14, 0x2e, 0x08, 0x92, 0xb8, 0x20, 0xea, 0xe5, 0xcf, 0x3c, 0x1b, - 0x70, 0xe1, 0xfd, 0xd0, 0x49, 0xdd, 0x0f, 0x4b, 0x83, 0x22, 0xea, 0x7f, 0x3d, 0xfc, 0xa9, 0x06, - 0x67, 0x94, 0xd6, 0xa7, 0x70, 0x3b, 0x58, 0xc9, 0xdb, 0xe1, 0x99, 0x01, 0xbf, 0xaf, 0xe0, 0x72, - 0xf0, 0x12, 0x9f, 0xc5, 0x08, 0xf7, 0xe3, 0x00, 0xeb, 0x8c, 0x9c, 0xac, 0xc6, 0x7c, 0x92, 0x5c, - 0xf2, 0x45, 0x59, 0x83, 0x95, 0x56, 0x09, 0x9a, 0x55, 0xe9, 0x4b, 0xb3, 0xfe, 0xfb, 0x10, 0x9c, - 0xcd, 0x4c, 0x7b, 0x96, 0x8e, 0x68, 0x3f, 0x22, 0x3a, 0x52, 0xf9, 0x51, 0xd0, 0x91, 0xa1, 0x52, - 0x74, 0xe4, 0xd0, 0xf7, 0x04, 0xf2, 0x01, 0x75, 0xec, 0x36, 0xef, 0xd6, 0x0a, 0x0d, 0x3f, 0xbc, - 0x6d, 0x77, 0x88, 0xa0, 0x38, 0x7f, 0xfb, 0x70, 0x5b, 0x96, 0xf6, 0xe0, 0x84, 0x67, 0x25, 0x03, - 0x09, 0xe7, 0x40, 0xd7, 0xbf, 0x33, 0x0c, 0x50, 0x5f, 0xc0, 0x5e, 0xc8, 0x07, 0xfb, 0x0c, 0x8c, - 0x74, 0x37, 0x8d, 0x20, 0xda, 0x4f, 0x8f, 0x46, 0x9b, 0x71, 0x8d, 0x16, 0xde, 0xdb, 0xab, 0xcd, - 0xd6, 0x7d, 0x62, 0x11, 0x37, 0xb4, 0x0d, 0x27, 0x88, 0x3a, 0xb1, 0x3a, 0xcc, 0xfb, 0xd1, 0x6f, - 0xa0, 0xd3, 0x58, 0xf7, 0x3a, 0x5d, 0x87, 0xd0, 0x5a, 0xf6, 0x0d, 0x95, 0x72, 0xdf, 0xb0, 0x9c, - 0x81, 0x84, 0x73, 0xa0, 0x47, 0x38, 0x9b, 0xae, 0x1d, 0xda, 0x86, 0xc4, 0x39, 0x54, 0x1e, 0x67, - 0x12, 0x12, 0xce, 0x81, 0x8e, 0x5e, 0xd7, 0x60, 0x2e, 0x59, 0x7c, 0xcd, 0x76, 0xed, 0x60, 0x93, - 0x58, 0x0c, 0xf9, 0xf0, 0x91, 0x91, 0x5f, 0xde, 0xdf, 0xab, 0xcd, 0x2d, 0x17, 0x42, 0xc4, 0x7d, - 0xb0, 0xa1, 0xcf, 0x69, 0x70, 0x29, 0x35, 0x2f, 0xbe, 0xdd, 0x6e, 0x13, 0x5f, 0x8c, 0xe6, 0xe8, - 0x5b, 0xa8, 0xb6, 0xbf, 0x57, 0xbb, 0xb4, 0x5c, 0x0c, 0x12, 0xf7, 0xc3, 0xa7, 0x7f, 0x43, 0x83, - 0xa1, 0x3a, 0x6e, 0xa2, 0x77, 0x25, 0x84, 0xb8, 0xfb, 0x54, 0x21, 0xee, 0xde, 0x5e, 0x6d, 0xac, - 0x8e, 0x9b, 0x8a, 0x3c, 0xf7, 0x39, 0x0d, 0xce, 0x9a, 0x9e, 0x1b, 0x1a, 0x74, 0x5c, 0x98, 0x73, - 0x3a, 0x11, 0x55, 0x2d, 0x25, 0xbf, 0xd4, 0x53, 0xc0, 0x16, 0xef, 0x17, 0x03, 0x38, 0x9b, 0xae, - 0x09, 0x70, 0x16, 0xb3, 0xfe, 0x5d, 0x0d, 0x26, 0xeb, 0x8e, 0xd7, 0xb3, 0xd6, 0x7c, 0x6f, 0xc3, - 0x76, 0xc8, 0x5b, 0x43, 0x68, 0x53, 0x47, 0x5c, 0x74, 0x29, 0x33, 0x21, 0x4a, 0x6d, 0xf8, 0x16, - 0x11, 0xa2, 0xd4, 0x21, 0x17, 0xdc, 0x93, 0xbf, 0x3c, 0x96, 0xfc, 0x32, 0x76, 0x53, 0x3e, 0x02, - 0x55, 0xd3, 0x58, 0xec, 0xb9, 0x96, 0x23, 0xa5, 0x28, 0x3a, 0xca, 0xfa, 0x02, 0x2f, 0xc3, 0xb2, - 0x16, 0xbd, 0x0a, 0x10, 0xab, 0xc0, 0xc4, 0x32, 0x5c, 0x1b, 0x4c, 0xed, 0xd6, 0x22, 0x61, 0x68, - 0xbb, 0xed, 0x20, 0x5e, 0xfa, 0xb8, 0x0e, 0x2b, 0xd8, 0xd0, 0x47, 0x61, 0x4a, 0x4c, 0x72, 0xb3, - 0x63, 0xb4, 0x85, 0xbe, 0xa1, 0xe4, 0x4c, 0xad, 0x28, 0x80, 0x16, 0x2f, 0x08, 0xc4, 0x53, 0x6a, - 0x69, 0x80, 0x93, 0xd8, 0xd0, 0x2e, 0x4c, 0x76, 0x54, 0x1d, 0xca, 0x70, 0x79, 0x76, 0x46, 0xd1, - 0xa7, 0x2c, 0x9e, 0x17, 0xc8, 0x27, 0x13, 0xda, 0x97, 0x04, 0xaa, 0x1c, 0x51, 0x70, 0xe4, 0xa4, - 0x44, 0x41, 0x02, 0x63, 0x5c, 0x18, 0x0e, 0x66, 0x47, 0xd9, 0x07, 0x3e, 0x55, 0xe6, 0x03, 0xb9, - 0x5c, 0x1d, 0xeb, 0x74, 0xf9, 0xef, 0x00, 0x47, 0xb0, 0xd1, 0x36, 0x4c, 0xd2, 0x5b, 0xbd, 0x45, - 0x1c, 0x62, 0x86, 0x9e, 0x3f, 0x3b, 0x56, 0x5e, 0x67, 0xda, 0x52, 0xe0, 0x70, 0x55, 0x9a, 0x5a, - 0x82, 0x13, 0x78, 0xa4, 0xae, 0xa0, 0x5a, 0xa8, 0x2b, 0xe8, 0xc1, 0xc4, 0xb6, 0xa2, 0xd3, 0x1a, - 0x67, 0x93, 0xf0, 0xc1, 0x32, 0x03, 0x8b, 0x15, 0x5c, 0x8b, 0xe7, 0x04, 0xa2, 0x09, 0x55, 0x19, - 0xa6, 0xe2, 0xd1, 0xf7, 0xaa, 0x70, 0xb6, 0xee, 0xf4, 0x82, 0x90, 0xf8, 0x0b, 0xe2, 0x51, 0x82, - 0xf8, 0xe8, 0x13, 0x1a, 0x5c, 0x64, 0xff, 0x36, 0xbc, 0xbb, 0x6e, 0x83, 0x38, 0xc6, 0xee, 0xc2, - 0x06, 0x6d, 0x61, 0x59, 0x47, 0xa3, 0x40, 0x8d, 0x9e, 0xe0, 0x22, 0x99, 0x72, 0xae, 0x95, 0x0b, - 0x11, 0x17, 0x60, 0x42, 0xbf, 0xa0, 0xc1, 0xfd, 0x39, 0x55, 0x0d, 0xe2, 0x90, 0x30, 0xe2, 0x5c, - 0x8e, 0x3a, 0x8e, 0x07, 0xf7, 0xf7, 0x6a, 0xf7, 0xb7, 0x8a, 0x80, 0xe2, 0x62, 0x7c, 0xe8, 0x97, - 0x34, 0x98, 0xcb, 0xa9, 0xbd, 0x66, 0xd8, 0x4e, 0xcf, 0x8f, 0x98, 0x9a, 0xa3, 0x0e, 0x87, 0xf1, - 0x16, 0xad, 0x42, 0xa8, 0xb8, 0x0f, 0x46, 0xf4, 0x31, 0xb8, 0x20, 0x6b, 0xef, 0xb8, 0x2e, 0x21, - 0x56, 0x82, 0xc5, 0x39, 0xea, 0x50, 0xee, 0xdf, 0xdf, 0xab, 0x5d, 0x68, 0xe5, 0x01, 0xc4, 0xf9, - 0x78, 0x50, 0x1b, 0x1e, 0x8c, 0x2b, 0x42, 0xdb, 0xb1, 0x5f, 0xe5, 0x5c, 0xd8, 0xa6, 0x4f, 0x82, - 0x4d, 0xcf, 0xb1, 0x18, 0xb1, 0xd0, 0x16, 0xdf, 0xbe, 0xbf, 0x57, 0x7b, 0xb0, 0xd5, 0xaf, 0x21, - 0xee, 0x0f, 0x07, 0x59, 0x30, 0x19, 0x98, 0x86, 0xdb, 0x74, 0x43, 0xe2, 0x6f, 0x1b, 0xce, 0xec, - 0x68, 0xa9, 0x0f, 0xe4, 0x47, 0x54, 0x81, 0x83, 0x13, 0x50, 0xd1, 0xfb, 0xa1, 0x4a, 0x76, 0xba, - 0x86, 0x6b, 0x11, 0x4e, 0x16, 0xc6, 0x17, 0x1f, 0xa0, 0x97, 0xd1, 0x92, 0x28, 0xbb, 0xb7, 0x57, - 0x9b, 0x8c, 0xfe, 0x5f, 0xf1, 0x2c, 0x82, 0x65, 0x6b, 0xf4, 0x11, 0x38, 0xdf, 0x31, 0x76, 0x56, - 0x3d, 0x8b, 0x30, 0x22, 0x17, 0x44, 0x8c, 0x6e, 0xb5, 0xd4, 0x38, 0x67, 0xf7, 0xf7, 0x6a, 0xe7, - 0x57, 0x72, 0xe0, 0xe1, 0x5c, 0x2c, 0x74, 0x19, 0x3a, 0xc6, 0xce, 0x75, 0xdf, 0x30, 0xc9, 0x46, - 0xcf, 0xb9, 0x4d, 0xfc, 0x8e, 0xed, 0x72, 0x59, 0x82, 0x98, 0x9e, 0x6b, 0x51, 0x52, 0xa2, 0x3d, - 0x32, 0xc2, 0x97, 0x61, 0xa5, 0x5f, 0x43, 0xdc, 0x1f, 0x0e, 0x7a, 0x02, 0x26, 0xed, 0xb6, 0xeb, - 0xf9, 0xe4, 0xb6, 0x61, 0xbb, 0x61, 0x30, 0x0b, 0x4c, 0xed, 0xce, 0xa6, 0xb5, 0xa9, 0x94, 0xe3, - 0x44, 0x2b, 0x7d, 0x6f, 0x08, 0xc6, 0xeb, 0x9e, 0x6b, 0xd9, 0x4c, 0x8c, 0x79, 0x2c, 0xa1, 0x33, - 0x7d, 0x50, 0xa5, 0x83, 0xf7, 0xf6, 0x6a, 0x53, 0xb2, 0xa1, 0x42, 0x18, 0x9f, 0x94, 0x8a, 0x0a, - 0x2e, 0x18, 0xbf, 0x3d, 0xa9, 0x61, 0xb8, 0xb7, 0x57, 0x3b, 0x23, 0xbb, 0x25, 0x95, 0x0e, 0x68, - 0x9b, 0xcb, 0x1f, 0xb7, 0x7d, 0xc3, 0x0d, 0xec, 0x01, 0xe4, 0x0f, 0x29, 0x59, 0x2e, 0x67, 0xa0, - 0xe1, 0x1c, 0x0c, 0xe8, 0x65, 0x98, 0xa6, 0xa5, 0x77, 0xba, 0x96, 0x11, 0x92, 0x92, 0x62, 0xc7, - 0x45, 0x81, 0x73, 0x7a, 0x39, 0x01, 0x09, 0xa7, 0x20, 0x73, 0x1d, 0xb3, 0x11, 0x78, 0x2e, 0x3b, - 0x6e, 0x09, 0x1d, 0x33, 0x2d, 0xc5, 0xa2, 0x16, 0x3d, 0x0a, 0x63, 0x1d, 0x12, 0x04, 0x46, 0x9b, - 0xb0, 0xf3, 0x33, 0x1e, 0x5f, 0x92, 0x2b, 0xbc, 0x18, 0x47, 0xf5, 0xe8, 0xdd, 0x30, 0x62, 0x7a, - 0x16, 0x09, 0x66, 0xc7, 0xd8, 0x0a, 0x53, 0xe9, 0x6b, 0xa4, 0x4e, 0x0b, 0xee, 0xed, 0xd5, 0xc6, - 0x99, 0x1c, 0x4e, 0x7f, 0x61, 0xde, 0x48, 0xff, 0x55, 0xca, 0xb3, 0xa6, 0x98, 0xf4, 0x43, 0xe8, - 0xc6, 0x4f, 0x4f, 0xcd, 0xac, 0xbf, 0x41, 0x05, 0x06, 0xcf, 0x0d, 0x7d, 0xcf, 0x59, 0x73, 0x0c, - 0x97, 0xa0, 0x4f, 0x6b, 0x30, 0xb3, 0x69, 0xb7, 0x37, 0xd5, 0xc7, 0x2d, 0x71, 0xb1, 0x95, 0xe2, - 0xed, 0x6f, 0xa4, 0x60, 0x2d, 0x9e, 0xdf, 0xdf, 0xab, 0xcd, 0xa4, 0x4b, 0x71, 0x06, 0xa7, 0xfe, - 0xd9, 0x0a, 0x9c, 0x17, 0x23, 0x73, 0xe8, 0x4d, 0xd3, 0x75, 0xbc, 0xdd, 0x0e, 0x71, 0x4f, 0xe3, - 0x1d, 0x2a, 0x5a, 0xa1, 0x4a, 0xe1, 0x0a, 0x75, 0x32, 0x2b, 0x34, 0x54, 0x66, 0x85, 0xe4, 0x46, - 0x3e, 0x60, 0x95, 0x7e, 0xa8, 0xc1, 0x6c, 0xde, 0x5c, 0x9c, 0x82, 0x0c, 0xd4, 0x49, 0xca, 0x40, - 0x37, 0xca, 0x0a, 0xb5, 0xe9, 0xa1, 0x17, 0xc8, 0x42, 0x3f, 0xa8, 0xc0, 0xc5, 0xb8, 0x79, 0xd3, - 0x0d, 0x42, 0xc3, 0x71, 0xb8, 0x9a, 0xe7, 0xe4, 0xd7, 0xbd, 0x9b, 0x10, 0x65, 0x57, 0x07, 0xfb, - 0x54, 0x75, 0xec, 0x85, 0x9a, 0xe6, 0x9d, 0x94, 0xa6, 0x79, 0xed, 0x18, 0x71, 0xf6, 0x57, 0x3a, - 0xff, 0x4f, 0x0d, 0xe6, 0xf2, 0x3b, 0x9e, 0xc2, 0xa6, 0xf2, 0x92, 0x9b, 0xea, 0xa7, 0x8e, 0xef, - 0xab, 0x0b, 0xb6, 0xd5, 0xbf, 0xa8, 0x14, 0x7d, 0x2d, 0x13, 0xb6, 0x37, 0xe0, 0x0c, 0x95, 0x82, - 0x82, 0x50, 0xa8, 0x44, 0x8f, 0x66, 0x2b, 0x10, 0xe9, 0x88, 0xce, 0xe0, 0x24, 0x0c, 0x9c, 0x06, - 0x8a, 0x56, 0x61, 0x8c, 0x8a, 0x3e, 0x14, 0x7e, 0xe5, 0xf0, 0xf0, 0xe5, 0x6d, 0xd4, 0xe2, 0x7d, - 0x71, 0x04, 0x04, 0xfd, 0x0c, 0x4c, 0x59, 0xf2, 0x44, 0x1d, 0xf0, 0x50, 0x98, 0x86, 0xca, 0x94, - 0xd7, 0x0d, 0xb5, 0x37, 0x4e, 0x02, 0xd3, 0xff, 0x4a, 0x83, 0x07, 0xfa, 0xed, 0x2d, 0xf4, 0x0a, - 0x80, 0x19, 0xb1, 0x17, 0xdc, 0x54, 0xa4, 0xa4, 0x7a, 0x5b, 0x32, 0x29, 0xf1, 0x01, 0x95, 0x45, - 0x01, 0x56, 0x90, 0xe4, 0xbc, 0x3f, 0x56, 0x4e, 0xe8, 0xfd, 0x51, 0xff, 0x5f, 0x9a, 0x4a, 0x8a, - 0xd4, 0xb5, 0x7d, 0xab, 0x91, 0x22, 0x75, 0xec, 0x85, 0xfa, 0xb5, 0x3f, 0xa9, 0xc0, 0x95, 0xfc, - 0x2e, 0xca, 0xdd, 0xfb, 0x21, 0x18, 0xed, 0x72, 0x7b, 0x9e, 0x21, 0x76, 0x37, 0x3e, 0x42, 0x29, - 0x0b, 0xb7, 0xb6, 0xb9, 0xb7, 0x57, 0x9b, 0xcb, 0x23, 0xf4, 0xc2, 0x4e, 0x47, 0xf4, 0x43, 0x76, - 0x4a, 0xcb, 0xc0, 0xb9, 0xbf, 0xf7, 0x1c, 0x92, 0xb8, 0x18, 0xeb, 0xc4, 0x39, 0xb4, 0x62, 0xe1, - 0xe3, 0x1a, 0x4c, 0x27, 0x76, 0x74, 0x30, 0x3b, 0xc2, 0xf6, 0x68, 0xa9, 0xa7, 0x9f, 0xc4, 0x51, - 0x89, 0x6f, 0xee, 0x44, 0x71, 0x80, 0x53, 0x08, 0x53, 0x64, 0x56, 0x9d, 0xd5, 0xb7, 0x1c, 0x99, - 0x55, 0x07, 0x5f, 0x40, 0x66, 0x7f, 0xa5, 0x52, 0xf4, 0xb5, 0x8c, 0xcc, 0xde, 0x85, 0xf1, 0xc8, - 0xb2, 0x32, 0x22, 0x17, 0xd7, 0x06, 0x1d, 0x13, 0x07, 0x17, 0x9b, 0x3d, 0x44, 0x25, 0x01, 0x8e, - 0x71, 0xa1, 0x4f, 0x6a, 0x00, 0xf1, 0xc2, 0x88, 0x43, 0x75, 0xfb, 0xf8, 0xa6, 0x43, 0x61, 0x6b, - 0xa6, 0xe9, 0x91, 0x56, 0x36, 0x85, 0x82, 0x57, 0xff, 0xda, 0x10, 0xa0, 0xec, 0xd8, 0x29, 0xbb, - 0xb9, 0x65, 0xbb, 0x56, 0x5a, 0x20, 0xb8, 0x69, 0xbb, 0x16, 0x66, 0x35, 0x87, 0x60, 0x48, 0x9f, - 0x86, 0x33, 0x6d, 0xc7, 0x5b, 0x37, 0x1c, 0x67, 0x57, 0x18, 0x6b, 0x0a, 0xb3, 0xbf, 0x73, 0xf4, - 0x62, 0xba, 0x9e, 0xac, 0xc2, 0xe9, 0xb6, 0xa8, 0x0b, 0x33, 0x3e, 0x15, 0x65, 0x4d, 0xdb, 0x61, - 0xa2, 0x93, 0xd7, 0x0b, 0x4b, 0xea, 0x4a, 0x18, 0x7b, 0x8f, 0x53, 0xb0, 0x70, 0x06, 0x3a, 0x7a, - 0x07, 0x8c, 0x75, 0x7d, 0xbb, 0x63, 0xf8, 0xbb, 0x4c, 0x38, 0xab, 0x2e, 0x4e, 0xd0, 0x1b, 0x6e, - 0x8d, 0x17, 0xe1, 0xa8, 0x0e, 0x7d, 0x04, 0xc6, 0x1d, 0x7b, 0x83, 0x98, 0xbb, 0xa6, 0x43, 0x84, - 0x72, 0xe3, 0xd6, 0xf1, 0x6c, 0x99, 0xe5, 0x08, 0xac, 0x78, 0x52, 0x8d, 0x7e, 0xe2, 0x18, 0xa1, - 0xfe, 0x7a, 0x05, 0x2e, 0xf5, 0xe9, 0x89, 0x30, 0xdd, 0xd0, 0xe2, 0xc3, 0xc4, 0xf2, 0x3d, 0xc1, - 0x37, 0xa1, 0x28, 0xbc, 0xb7, 0x57, 0x7b, 0xa8, 0x0f, 0x80, 0x16, 0xdd, 0x3f, 0xa4, 0xbd, 0x8b, - 0x63, 0x30, 0xa8, 0x09, 0xa3, 0x56, 0xac, 0xc6, 0x1b, 0x5f, 0x7c, 0x8c, 0x92, 0x58, 0xae, 0x68, - 0x3b, 0x2c, 0x34, 0x01, 0x00, 0x2d, 0xc3, 0x18, 0x7f, 0x3d, 0x25, 0x82, 0x5c, 0x3f, 0xce, 0x64, - 0x5a, 0x5e, 0x74, 0x58, 0x60, 0x11, 0x08, 0xfd, 0xff, 0x6a, 0x30, 0x56, 0xf7, 0x7c, 0xd2, 0x58, - 0x6d, 0xa1, 0x5d, 0x98, 0x50, 0xec, 0xb4, 0x05, 0xe9, 0x2a, 0x79, 0x96, 0x19, 0xc4, 0x85, 0x18, - 0x5a, 0x64, 0xe3, 0x29, 0x0b, 0xb0, 0x8a, 0x0b, 0xbd, 0x42, 0xe7, 0xfc, 0xae, 0x6f, 0x87, 0x14, - 0xf1, 0x20, 0x8f, 0x4e, 0x1c, 0x31, 0x8e, 0x60, 0xf1, 0x6d, 0x20, 0x7f, 0xe2, 0x18, 0x8b, 0xbe, - 0x46, 0x8f, 0x6d, 0x7a, 0x98, 0xe8, 0x29, 0x18, 0xee, 0x78, 0x56, 0xb4, 0xee, 0xef, 0x8c, 0x0e, - 0xe5, 0x8a, 0x67, 0xd1, 0xb9, 0xbd, 0x98, 0xed, 0xc1, 0x54, 0x63, 0xac, 0x8f, 0xbe, 0x0a, 0x33, - 0x69, 0xfc, 0xe8, 0x29, 0x98, 0x36, 0xbd, 0x4e, 0xc7, 0x73, 0x5b, 0xbd, 0x8d, 0x0d, 0x7b, 0x87, - 0x24, 0x8c, 0x6f, 0xeb, 0x89, 0x1a, 0x9c, 0x6a, 0xa9, 0x7f, 0x59, 0x83, 0x21, 0xba, 0x2e, 0x3a, - 0x8c, 0x5a, 0x5e, 0xc7, 0xb0, 0x5d, 0x31, 0x2a, 0x66, 0x1a, 0xdc, 0x60, 0x25, 0x58, 0xd4, 0xa0, - 0x2e, 0x8c, 0x47, 0x9c, 0xce, 0x40, 0x06, 0x20, 0x8d, 0xd5, 0x96, 0x34, 0x9a, 0x93, 0xe4, 0x37, - 0x2a, 0x09, 0x70, 0x8c, 0x44, 0x37, 0xe0, 0x6c, 0x63, 0xb5, 0xd5, 0x74, 0x4d, 0xa7, 0x67, 0x91, - 0xa5, 0x1d, 0xf6, 0x87, 0x12, 0x00, 0x9b, 0x97, 0x88, 0xef, 0x64, 0x04, 0x40, 0x34, 0xc2, 0x51, - 0x1d, 0x6d, 0x46, 0x78, 0x0f, 0x61, 0x21, 0xcb, 0x9a, 0x09, 0x20, 0x38, 0xaa, 0xd3, 0xbf, 0x5b, - 0x81, 0x09, 0x65, 0x40, 0xc8, 0x81, 0x31, 0xfe, 0xb9, 0x91, 0x81, 0xda, 0x52, 0xc9, 0x4f, 0x4c, - 0x8e, 0x9a, 0x63, 0xe7, 0x13, 0x1a, 0xe0, 0x08, 0x85, 0x4a, 0xcc, 0x2a, 0x7d, 0x88, 0xd9, 0x3c, - 0x00, 0x37, 0xc5, 0x63, 0x76, 0x15, 0xfc, 0x48, 0xb2, 0xfb, 0xa2, 0x25, 0x4b, 0xb1, 0xd2, 0x02, - 0x3d, 0x20, 0xc8, 0x3e, 0xb7, 0xc0, 0xa8, 0xa6, 0x48, 0xfe, 0x06, 0x8c, 0xbc, 0xea, 0xb9, 0x24, - 0x10, 0x0f, 0x4f, 0xc7, 0xf4, 0x81, 0xe3, 0xf4, 0x52, 0x7f, 0x91, 0xc2, 0xc5, 0x1c, 0xbc, 0xfe, - 0x6b, 0x1a, 0x40, 0xc3, 0x08, 0x0d, 0xfe, 0x4e, 0x72, 0x08, 0x23, 0xe7, 0x07, 0x12, 0xb7, 0x55, - 0x35, 0x63, 0xf8, 0x39, 0x1c, 0xd8, 0xaf, 0x46, 0x9f, 0x2f, 0xb9, 0x60, 0x0e, 0xbd, 0x65, 0xbf, - 0x4a, 0x30, 0xab, 0x47, 0xef, 0x82, 0x71, 0xe2, 0x9a, 0xfe, 0x6e, 0x37, 0x24, 0x16, 0x9b, 0x81, - 0x2a, 0x3f, 0xa1, 0x4b, 0x51, 0x21, 0x8e, 0xeb, 0xf5, 0xc7, 0x20, 0x29, 0xca, 0x1c, 0x3c, 0x4a, - 0xfd, 0x9e, 0x06, 0x33, 0x4b, 0x3b, 0x5d, 0xdb, 0x67, 0x86, 0xcf, 0xc4, 0xa7, 0x72, 0x01, 0x7a, - 0x14, 0xc6, 0xb6, 0xf9, 0xbf, 0xa2, 0xa7, 0x94, 0xbd, 0x44, 0x0b, 0x1c, 0xd5, 0xa3, 0x0d, 0x98, - 0x26, 0xac, 0x3b, 0x63, 0x00, 0x8c, 0xb0, 0x8c, 0xc1, 0x08, 0xb7, 0xab, 0x4f, 0x40, 0xc1, 0x29, - 0xa8, 0xa8, 0x05, 0xd3, 0xa6, 0x63, 0x04, 0x81, 0xbd, 0x61, 0x9b, 0xb1, 0x49, 0xcf, 0xf8, 0xe2, - 0xbb, 0x18, 0x59, 0x48, 0xd4, 0xdc, 0xdb, 0xab, 0x5d, 0x10, 0xe3, 0x4c, 0x56, 0xe0, 0x14, 0x08, - 0xfd, 0x8b, 0x15, 0x98, 0x5a, 0xda, 0xe9, 0x7a, 0x41, 0xcf, 0x27, 0xac, 0xe9, 0x29, 0x88, 0x34, - 0x8f, 0xc2, 0xd8, 0xa6, 0xe1, 0x5a, 0x0e, 0xf1, 0xc5, 0xce, 0x90, 0x73, 0x7b, 0x83, 0x17, 0xe3, - 0xa8, 0x1e, 0xbd, 0x06, 0x10, 0x98, 0x9b, 0xc4, 0xea, 0xb1, 0xdb, 0x85, 0x0b, 0xb5, 0x37, 0xcb, - 0xec, 0xef, 0xc4, 0x37, 0xb6, 0x24, 0x48, 0x71, 0xea, 0xe4, 0x6f, 0xac, 0xa0, 0xd3, 0xff, 0xb3, - 0x06, 0x67, 0x13, 0xfd, 0x4e, 0x81, 0x53, 0xdf, 0x48, 0x72, 0xea, 0x0b, 0x03, 0x7f, 0x6b, 0x01, - 0x83, 0xfe, 0xf3, 0x15, 0xb8, 0xaf, 0x60, 0x4e, 0x32, 0xef, 0xbf, 0xda, 0x29, 0xbd, 0xff, 0xf6, - 0x60, 0x22, 0xf4, 0x1c, 0x61, 0x79, 0x16, 0xcd, 0x40, 0xa9, 0xd7, 0xdd, 0xdb, 0x12, 0x4c, 0xfc, - 0xba, 0x1b, 0x97, 0x05, 0x58, 0xc5, 0xa3, 0x7f, 0x43, 0x83, 0x71, 0xa9, 0x10, 0x78, 0x53, 0x29, - 0xe5, 0x8f, 0xe0, 0xbc, 0xf3, 0x47, 0x15, 0xb8, 0x28, 0x61, 0x47, 0x3c, 0x5c, 0x2b, 0xa4, 0x74, - 0xe3, 0x60, 0xa9, 0xe2, 0x01, 0x41, 0x23, 0x15, 0x3a, 0xad, 0x50, 0x71, 0x7a, 0xa7, 0xf5, 0xfc, - 0xae, 0x17, 0x44, 0xa4, 0x9a, 0xdf, 0x69, 0xbc, 0x08, 0x47, 0x75, 0x68, 0x15, 0x46, 0x02, 0x8a, - 0x4f, 0x88, 0x0b, 0x47, 0x9c, 0x0d, 0x76, 0xdb, 0xb0, 0xf1, 0x62, 0x0e, 0x06, 0xbd, 0xa6, 0xca, - 0x88, 0x23, 0xe5, 0xe5, 0x56, 0xfa, 0x25, 0x56, 0x34, 0x23, 0x39, 0xe6, 0xf1, 0x79, 0x72, 0xa2, - 0xbe, 0x0c, 0x33, 0xe2, 0x09, 0x99, 0x6f, 0x1b, 0xd7, 0x24, 0xe8, 0xfd, 0x89, 0x9d, 0xf1, 0x70, - 0xea, 0x59, 0xee, 0x7c, 0xba, 0x7d, 0xbc, 0x63, 0xf4, 0x00, 0xaa, 0xd7, 0xc5, 0x20, 0xd1, 0x1c, - 0x54, 0xec, 0x68, 0x2d, 0x40, 0xc0, 0xa8, 0x34, 0x1b, 0xb8, 0x62, 0x5b, 0xf2, 0xae, 0xaa, 0x14, - 0xde, 0xa8, 0xca, 0xb5, 0x34, 0xd4, 0xff, 0x5a, 0xd2, 0xff, 0xbc, 0x02, 0xe7, 0x23, 0xac, 0xd1, - 0x37, 0x36, 0xc4, 0xa3, 0xc6, 0x01, 0xf7, 0xf6, 0xc1, 0x52, 0xe6, 0x2d, 0x18, 0x66, 0x04, 0xb0, - 0xd4, 0x63, 0x87, 0x04, 0x48, 0x87, 0x83, 0x19, 0x20, 0xf4, 0x11, 0x18, 0x75, 0x8c, 0x75, 0xe2, - 0x44, 0xa6, 0x3b, 0xa5, 0x64, 0xf2, 0xbc, 0xcf, 0xe5, 0xaa, 0xa2, 0x80, 0x9b, 0x27, 0x4b, 0x1d, - 0x38, 0x2f, 0xc4, 0x02, 0xe7, 0xdc, 0x93, 0x30, 0xa1, 0x34, 0x43, 0x33, 0x30, 0xb4, 0x45, 0xf8, - 0x63, 0xd7, 0x38, 0xa6, 0xff, 0xa2, 0xf3, 0x30, 0xb2, 0x6d, 0x38, 0x3d, 0x31, 0x25, 0x98, 0xff, - 0x78, 0xaa, 0xf2, 0x7e, 0x4d, 0xff, 0x9a, 0x06, 0x13, 0x37, 0xec, 0x75, 0xe2, 0xf3, 0x77, 0x60, - 0xc6, 0xa6, 0x26, 0x7c, 0x27, 0x27, 0xf2, 0xfc, 0x26, 0xd1, 0x0e, 0x8c, 0x8b, 0x9b, 0x46, 0x9a, - 0x09, 0x5e, 0x2f, 0xf7, 0xaa, 0x26, 0x51, 0x0b, 0x0a, 0xae, 0x7a, 0x7e, 0x44, 0x18, 0x70, 0x8c, - 0x4c, 0x7f, 0x0d, 0xce, 0xe5, 0x74, 0x42, 0x35, 0x76, 0x7c, 0xfd, 0x50, 0x6c, 0x8b, 0xe8, 0x3c, - 0xfa, 0x21, 0xe6, 0xe5, 0xe8, 0x7e, 0x18, 0x22, 0xae, 0x25, 0xf6, 0xc4, 0xd8, 0xfe, 0x5e, 0x6d, - 0x68, 0xc9, 0xb5, 0x30, 0x2d, 0xa3, 0x64, 0xca, 0xf1, 0x12, 0x3c, 0x09, 0x23, 0x53, 0xcb, 0xa2, - 0x0c, 0xcb, 0x5a, 0xf6, 0x0e, 0x9a, 0x7e, 0xf2, 0x43, 0xaf, 0x6b, 0x30, 0xb3, 0x91, 0x3a, 0x3d, - 0x83, 0xbc, 0x34, 0xa6, 0x4f, 0xe2, 0xe2, 0xac, 0x98, 0x90, 0xcc, 0x99, 0xc6, 0x19, 0xbc, 0xfa, - 0xbf, 0x1e, 0x86, 0x07, 0x6f, 0x78, 0xbe, 0xfd, 0xaa, 0xe7, 0x86, 0x86, 0xb3, 0xe6, 0x59, 0xb1, - 0xc5, 0x8f, 0x20, 0xca, 0x9f, 0xd2, 0xe0, 0x3e, 0xb3, 0xdb, 0xe3, 0xd6, 0xac, 0x91, 0x21, 0xc6, - 0x1a, 0xf1, 0x6d, 0xaf, 0xac, 0xe1, 0x0f, 0xf3, 0xf5, 0xab, 0xaf, 0xdd, 0xc9, 0x03, 0x89, 0x8b, - 0x70, 0x31, 0xfb, 0x23, 0xcb, 0xbb, 0xeb, 0xb2, 0xc1, 0xb5, 0x42, 0x36, 0x9b, 0xaf, 0xc6, 0x8b, - 0x50, 0xd2, 0xfe, 0xa8, 0x91, 0x0b, 0x11, 0x17, 0x60, 0x42, 0x1f, 0x83, 0x0b, 0x36, 0x1f, 0x1c, - 0x26, 0x86, 0x65, 0xbb, 0x24, 0x08, 0x98, 0x15, 0xce, 0x20, 0x06, 0x36, 0xcd, 0x3c, 0x80, 0x38, - 0x1f, 0x0f, 0x7a, 0x09, 0x20, 0xd8, 0x75, 0x4d, 0x31, 0xff, 0x23, 0xa5, 0xb0, 0x72, 0x26, 0x50, - 0x42, 0xc1, 0x0a, 0x44, 0x2a, 0x7d, 0x84, 0x72, 0x53, 0x8e, 0x32, 0x63, 0x1d, 0x26, 0x7d, 0xc4, - 0x7b, 0x28, 0xae, 0xd7, 0xff, 0x99, 0x06, 0x63, 0xc2, 0x03, 0x18, 0xbd, 0x33, 0x25, 0x81, 0x4b, - 0xda, 0x93, 0x92, 0xc2, 0x77, 0xd9, 0xdb, 0x89, 0xd0, 0xbe, 0x08, 0x56, 0xa2, 0x94, 0x08, 0x27, - 0x10, 0xc7, 0xaa, 0x9c, 0xc4, 0x1b, 0x4a, 0xa4, 0xde, 0x51, 0x90, 0xe9, 0x5f, 0xd1, 0xe0, 0x6c, - 0xa6, 0xd7, 0x21, 0xf8, 0x85, 0x53, 0x34, 0x4b, 0xf8, 0xfa, 0x34, 0x30, 0x67, 0xef, 0x85, 0xb5, - 0x66, 0x8b, 0xf8, 0xdb, 0xf2, 0x10, 0x52, 0x9a, 0x11, 0x9b, 0x9f, 0x8a, 0x51, 0x0c, 0x40, 0x33, - 0x6e, 0xa6, 0x60, 0xc5, 0x34, 0x23, 0x5d, 0x83, 0x33, 0x78, 0xd1, 0x67, 0x35, 0x98, 0x31, 0x92, - 0xce, 0xde, 0x11, 0x51, 0x2f, 0xe5, 0x9a, 0x94, 0x72, 0x1c, 0x8f, 0xc7, 0x92, 0xaa, 0x08, 0x70, - 0x06, 0x2d, 0x7a, 0x02, 0x26, 0x8d, 0xae, 0xbd, 0xd0, 0xb3, 0x6c, 0xca, 0xe6, 0x44, 0x7e, 0xbf, - 0x8c, 0xf5, 0x5e, 0x58, 0x6b, 0xca, 0x72, 0x9c, 0x68, 0x25, 0x7d, 0xb4, 0xc5, 0x44, 0x0e, 0x0f, - 0xe8, 0xa3, 0x2d, 0xe6, 0x30, 0xf6, 0xd1, 0x16, 0x53, 0xa7, 0x22, 0x41, 0x3f, 0x0d, 0xf7, 0xf3, - 0xdb, 0x70, 0xd1, 0x08, 0x6c, 0x73, 0xa1, 0x17, 0x6e, 0x12, 0x37, 0x8c, 0x44, 0x5b, 0xae, 0x0a, - 0x66, 0x96, 0x88, 0x4b, 0x45, 0x8d, 0x70, 0x71, 0x7f, 0xe4, 0x02, 0x78, 0xb6, 0x65, 0x8a, 0xef, - 0xe1, 0xfa, 0xe2, 0x52, 0xa2, 0xc4, 0xad, 0x66, 0xa3, 0x2e, 0x3e, 0x87, 0x91, 0x89, 0xf8, 0x37, - 0x56, 0x30, 0xa0, 0x37, 0x34, 0x98, 0x12, 0x9b, 0x5c, 0xe0, 0x1c, 0x63, 0xeb, 0xff, 0x62, 0xd9, - 0xcd, 0x98, 0xda, 0xf0, 0xf3, 0x58, 0x05, 0xce, 0xb9, 0x19, 0x69, 0x1a, 0x9d, 0xa8, 0xc3, 0xc9, - 0x71, 0xa0, 0x7f, 0xa0, 0xc1, 0xf9, 0x80, 0xf8, 0xdb, 0xb6, 0x49, 0x16, 0x4c, 0xd3, 0xeb, 0xb9, - 0xd1, 0x22, 0x57, 0xcb, 0xfb, 0xcb, 0xb6, 0x72, 0xe0, 0x71, 0x9b, 0xbc, 0xbc, 0x1a, 0x9c, 0x8b, - 0x9f, 0xde, 0x5f, 0x67, 0xee, 0x1a, 0xa1, 0xb9, 0x59, 0x37, 0xcc, 0x4d, 0xa6, 0xf0, 0xe1, 0x66, - 0x78, 0x25, 0x0f, 0xcd, 0xf3, 0x49, 0x50, 0xfc, 0xbd, 0x23, 0x55, 0x88, 0xd3, 0x08, 0x51, 0x00, - 0x55, 0x9f, 0xbc, 0xd2, 0x23, 0x01, 0xb3, 0xd5, 0xa3, 0xc8, 0x9b, 0x03, 0xaf, 0x18, 0x16, 0x00, - 0x39, 0x17, 0x14, 0xfd, 0xc2, 0x12, 0x11, 0x6a, 0xc3, 0x83, 0x7c, 0xe7, 0x2e, 0xb8, 0x9e, 0xbb, - 0xdb, 0xf1, 0x7a, 0x41, 0x6a, 0xf7, 0x4f, 0xb0, 0xdd, 0xcf, 0xac, 0x11, 0x97, 0xfa, 0x35, 0xc4, - 0xfd, 0xe1, 0xa0, 0x17, 0xa0, 0x4a, 0xb6, 0x89, 0x1b, 0xde, 0xbe, 0xbd, 0x3c, 0x3b, 0x59, 0xea, - 0x6a, 0x64, 0x9f, 0xb0, 0x24, 0x60, 0x60, 0x09, 0x0d, 0x79, 0x30, 0xe6, 0x78, 0xed, 0xb6, 0xed, - 0xb6, 0x67, 0xa7, 0xca, 0xef, 0xa3, 0xc4, 0xb4, 0x2d, 0x73, 0x78, 0x9c, 0x61, 0x16, 0x3f, 0x70, - 0x84, 0x05, 0x75, 0xe1, 0x8a, 0x45, 0x36, 0x8c, 0x9e, 0x13, 0xae, 0x7a, 0x21, 0xe5, 0x01, 0x76, - 0x63, 0x81, 0x3e, 0x32, 0xe2, 0x9c, 0x66, 0x2e, 0x6e, 0x0f, 0xef, 0xef, 0xd5, 0xae, 0x34, 0x0e, - 0x68, 0x8b, 0x0f, 0x84, 0x86, 0x76, 0xe1, 0x21, 0xd1, 0xe6, 0x8e, 0xeb, 0x13, 0xc3, 0xdc, 0xa4, - 0x33, 0x9d, 0x45, 0x7a, 0x86, 0x21, 0xfd, 0x5b, 0xfb, 0x7b, 0xb5, 0x87, 0x1a, 0x07, 0x37, 0xc7, - 0x87, 0x81, 0x39, 0xf7, 0x21, 0x40, 0xd9, 0xf3, 0x7e, 0x90, 0x58, 0x52, 0x55, 0xc5, 0x92, 0x5f, - 0xd2, 0xe0, 0x7c, 0xde, 0xec, 0x52, 0x7e, 0x66, 0x9b, 0xf8, 0xeb, 0x5e, 0x10, 0x99, 0xf3, 0x8d, - 0x70, 0x7e, 0xe6, 0xb9, 0xa8, 0x10, 0xc7, 0xf5, 0xa8, 0x09, 0xe7, 0x36, 0xc3, 0xb0, 0xbb, 0x60, - 0x9a, 0x24, 0x08, 0x64, 0x0b, 0x86, 0x6d, 0x84, 0x07, 0x62, 0xb9, 0x71, 0xfb, 0xf6, 0x5a, 0xaa, - 0x1a, 0xe7, 0xf5, 0xd1, 0x7f, 0x47, 0x83, 0x0b, 0xb9, 0xa7, 0x04, 0x61, 0xb8, 0xc8, 0x6c, 0x76, - 0xdd, 0x95, 0x5e, 0x68, 0x84, 0xb6, 0xdb, 0x6e, 0xba, 0x1b, 0x8e, 0xdd, 0xde, 0x0c, 0xc5, 0xf0, - 0x18, 0x5b, 0xba, 0x92, 0xdb, 0x02, 0x17, 0xf4, 0xa4, 0x03, 0xef, 0x18, 0x3b, 0x19, 0x80, 0xca, - 0xc0, 0x57, 0xb2, 0xd5, 0x38, 0xaf, 0x8f, 0xfe, 0xa5, 0x11, 0xb8, 0x44, 0x07, 0x1e, 0x73, 0x48, - 0x2b, 0x86, 0x6b, 0xb4, 0xdf, 0x9c, 0x9c, 0xc8, 0xd7, 0x34, 0xb8, 0x6f, 0x33, 0x5f, 0x7a, 0x11, - 0x3c, 0xda, 0xb3, 0xa5, 0xa4, 0xcc, 0x7e, 0x02, 0x11, 0xa7, 0x53, 0x7d, 0x9b, 0xe0, 0xa2, 0x41, - 0xa1, 0x0f, 0xc1, 0x8c, 0xeb, 0x59, 0xa4, 0xde, 0x6c, 0xe0, 0x15, 0x23, 0xd8, 0x6a, 0x45, 0x0f, - 0x02, 0x23, 0xfc, 0xfd, 0x78, 0x35, 0x55, 0x87, 0x33, 0xad, 0xd1, 0x36, 0xa0, 0xae, 0x67, 0x2d, - 0x6d, 0xdb, 0x66, 0x64, 0x5a, 0x5c, 0xfe, 0xcd, 0x9a, 0xf9, 0x50, 0xae, 0x65, 0xa0, 0xe1, 0x1c, - 0x0c, 0x4c, 0xfc, 0xa2, 0x83, 0x59, 0xf1, 0x5c, 0x3b, 0xf4, 0x7c, 0x66, 0x13, 0x3e, 0x90, 0x14, - 0xc2, 0xf6, 0xf9, 0x6a, 0x2e, 0x44, 0x5c, 0x80, 0x49, 0xff, 0xdf, 0x1a, 0x9c, 0xa1, 0xdb, 0x62, - 0xcd, 0xf7, 0x76, 0x76, 0xdf, 0x8c, 0x1b, 0xf2, 0x51, 0xf1, 0x36, 0xca, 0xd5, 0x06, 0x17, 0x94, - 0x77, 0xd1, 0x71, 0x36, 0xe6, 0xf8, 0x29, 0x54, 0xd5, 0x9c, 0x0c, 0x15, 0x6b, 0x4e, 0xf4, 0x37, - 0x2a, 0x5c, 0x22, 0x88, 0x34, 0x17, 0x6f, 0xca, 0x73, 0xf8, 0x3e, 0x98, 0xa2, 0x65, 0x2b, 0xc6, - 0xce, 0x5a, 0xe3, 0x39, 0xcf, 0x89, 0xcc, 0xf2, 0x99, 0xa9, 0xdd, 0x4d, 0xb5, 0x02, 0x27, 0xdb, - 0xa1, 0xa7, 0x60, 0xac, 0xcb, 0x9d, 0xff, 0x84, 0x26, 0xe5, 0x0a, 0x7f, 0x40, 0x64, 0x45, 0xf7, - 0xf6, 0x6a, 0x67, 0x63, 0x3d, 0xbd, 0x28, 0xc4, 0x51, 0x07, 0xfd, 0xf3, 0xe7, 0x81, 0x01, 0x77, - 0x48, 0xf8, 0x66, 0x9c, 0x93, 0xc7, 0x60, 0xc2, 0xec, 0xf6, 0xea, 0xd7, 0x5a, 0xcf, 0xf6, 0xbc, - 0xd0, 0x10, 0xef, 0xa3, 0x4c, 0x44, 0xa8, 0xaf, 0xdd, 0x89, 0x8a, 0xb1, 0xda, 0x86, 0x52, 0x07, - 0xb3, 0xdb, 0x13, 0xf4, 0x76, 0x4d, 0xb5, 0x37, 0x63, 0xd4, 0xa1, 0xbe, 0x76, 0x27, 0x51, 0x87, - 0x33, 0xad, 0xd1, 0xc7, 0x60, 0x92, 0x88, 0x83, 0x7b, 0xc3, 0xf0, 0x2d, 0x41, 0x17, 0x4a, 0xf3, - 0x78, 0x72, 0x6a, 0x23, 0x6a, 0xc0, 0x25, 0xab, 0x25, 0x05, 0x05, 0x4e, 0x20, 0x64, 0x52, 0x8e, - 0xf8, 0x4d, 0x57, 0xd9, 0xb3, 0xd2, 0x84, 0x62, 0x44, 0x48, 0x39, 0x45, 0x8d, 0x70, 0x71, 0x7f, - 0xf4, 0x4f, 0x35, 0xb8, 0x28, 0x6b, 0x6d, 0xd7, 0xee, 0xf4, 0x3a, 0x98, 0x98, 0x8e, 0x61, 0x77, - 0x84, 0xc8, 0xf3, 0xfc, 0xb1, 0x7d, 0x68, 0x12, 0x3c, 0x27, 0x56, 0xf9, 0x75, 0xb8, 0x60, 0x48, - 0xe8, 0x2b, 0x1a, 0x5c, 0x89, 0xaa, 0xd6, 0x7c, 0x12, 0x04, 0x3d, 0x9f, 0xc4, 0x4e, 0x21, 0x62, - 0x4a, 0xc6, 0x4a, 0xd1, 0x4e, 0xc6, 0xf3, 0x2d, 0x1d, 0x00, 0x1b, 0x1f, 0x88, 0x5d, 0xdd, 0x2e, - 0x2d, 0x6f, 0x23, 0x14, 0x32, 0xd2, 0x49, 0x6d, 0x17, 0x8a, 0x02, 0x27, 0x10, 0xa2, 0xdf, 0xd2, - 0xe0, 0x3e, 0xb5, 0x40, 0xdd, 0x2d, 0x5c, 0x38, 0x7a, 0xe1, 0xd8, 0x06, 0x93, 0x82, 0xcf, 0xd5, - 0x90, 0x05, 0x95, 0xb8, 0x68, 0x54, 0x94, 0x6c, 0x77, 0xd8, 0xc6, 0xe4, 0x02, 0xd4, 0x08, 0x27, - 0xdb, 0x7c, 0xaf, 0x06, 0x38, 0xaa, 0x43, 0x4f, 0xc0, 0x64, 0xd7, 0xb3, 0xd6, 0x6c, 0x2b, 0x58, - 0xb6, 0x3b, 0x76, 0xc8, 0x44, 0x9c, 0x21, 0x3e, 0x1d, 0x6b, 0x9e, 0xb5, 0xd6, 0x6c, 0xf0, 0x72, - 0x9c, 0x68, 0xc5, 0xdc, 0x1b, 0xed, 0x8e, 0xd1, 0x26, 0x6b, 0x3d, 0xc7, 0x59, 0xf3, 0x3d, 0xa6, - 0xab, 0x6a, 0x10, 0xc3, 0x72, 0x6c, 0x97, 0x94, 0x14, 0x69, 0xd8, 0x71, 0x6b, 0x16, 0x01, 0xc5, - 0xc5, 0xf8, 0xd0, 0x3c, 0xc0, 0x86, 0x61, 0x3b, 0xad, 0xbb, 0x46, 0xf7, 0x96, 0xcb, 0xe4, 0x9e, - 0x2a, 0x57, 0x0a, 0x5c, 0x93, 0xa5, 0x58, 0x69, 0x41, 0x77, 0x13, 0xa5, 0x82, 0x98, 0xf0, 0xb0, - 0x1a, 0x4c, 0x3e, 0x39, 0x8e, 0xdd, 0x14, 0x01, 0xe4, 0xd3, 0x77, 0x53, 0x41, 0x81, 0x13, 0x08, - 0xd1, 0xa7, 0x34, 0x98, 0x0e, 0x76, 0x83, 0x90, 0x74, 0xe4, 0x18, 0xce, 0x1c, 0xf7, 0x18, 0x98, - 0x16, 0xaf, 0x95, 0x40, 0x82, 0x53, 0x48, 0x91, 0x01, 0x97, 0xd8, 0xac, 0x5e, 0xaf, 0xdf, 0xb0, - 0xdb, 0x9b, 0xd2, 0x69, 0x71, 0x8d, 0xf8, 0x26, 0x71, 0xc3, 0xd9, 0x19, 0xb6, 0x6f, 0x58, 0xd4, - 0x86, 0x66, 0x71, 0x33, 0xdc, 0x0f, 0x06, 0x7a, 0x09, 0xe6, 0x44, 0xf5, 0xb2, 0x77, 0x37, 0x83, - 0xe1, 0x2c, 0xc3, 0xc0, 0x3c, 0x49, 0x9b, 0x85, 0xad, 0x70, 0x1f, 0x08, 0x54, 0xa2, 0x08, 0x88, - 0xcf, 0x94, 0xf0, 0x44, 0x6e, 0x9e, 0x60, 0x16, 0xb1, 0x4d, 0xc0, 0x24, 0x8a, 0x56, 0xb6, 0x1a, - 0xe7, 0xf5, 0x41, 0x4f, 0x4b, 0x27, 0x83, 0x5d, 0x5a, 0xf0, 0xec, 0x5a, 0x6b, 0xf6, 0x1c, 0x1b, - 0xdf, 0x39, 0xc5, 0x77, 0x20, 0xaa, 0xc2, 0xe9, 0xb6, 0x94, 0xb7, 0x88, 0x8a, 0x16, 0x7b, 0x7e, - 0x10, 0xce, 0x9e, 0x67, 0x9d, 0x19, 0x6f, 0x81, 0xd5, 0x0a, 0x9c, 0x6c, 0x87, 0x9e, 0x82, 0xe9, - 0x80, 0x98, 0xa6, 0xd7, 0xe9, 0x0a, 0x41, 0x75, 0xf6, 0x02, 0x1b, 0x3d, 0x5f, 0xc1, 0x44, 0x0d, - 0x4e, 0xb5, 0x44, 0xbb, 0x70, 0x4e, 0x06, 0x99, 0x58, 0xf6, 0xda, 0x2b, 0xc6, 0x0e, 0x63, 0xd5, - 0x2f, 0x1e, 0x7c, 0x02, 0xe7, 0xa3, 0x57, 0xd5, 0xf9, 0x67, 0x7b, 0x86, 0x1b, 0xda, 0xe1, 0x2e, - 0x9f, 0xae, 0x7a, 0x16, 0x1c, 0xce, 0xc3, 0x81, 0x96, 0xe1, 0x7c, 0xaa, 0xf8, 0x9a, 0xed, 0x90, - 0x60, 0xf6, 0x3e, 0xf6, 0xd9, 0x4c, 0xeb, 0x54, 0xcf, 0xa9, 0xc7, 0xb9, 0xbd, 0xd0, 0x2d, 0xb8, - 0xd0, 0xf5, 0xbd, 0x90, 0x98, 0xe1, 0x4d, 0xca, 0x9e, 0x38, 0xe2, 0x03, 0x83, 0xd9, 0x59, 0x36, - 0x17, 0xec, 0x01, 0x62, 0x2d, 0xaf, 0x01, 0xce, 0xef, 0x87, 0xbe, 0xa4, 0xc1, 0xe5, 0x20, 0xf4, - 0x89, 0xd1, 0xb1, 0xdd, 0x76, 0xdd, 0x73, 0x5d, 0xc2, 0xc8, 0x64, 0xd3, 0x8a, 0x0d, 0x68, 0xef, - 0x2f, 0x45, 0xa7, 0xf4, 0xfd, 0xbd, 0xda, 0xe5, 0x56, 0x5f, 0xc8, 0xf8, 0x00, 0xcc, 0xfa, 0x5e, - 0x85, 0x4b, 0xdd, 0x19, 0xda, 0x4f, 0x37, 0x61, 0x87, 0x74, 0x3c, 0x7f, 0x77, 0x21, 0x8a, 0xf9, - 0x28, 0x14, 0xfe, 0x6c, 0x13, 0xae, 0x24, 0xab, 0x70, 0xba, 0x2d, 0xe5, 0xcc, 0xd8, 0x61, 0xb9, - 0xd6, 0x8a, 0xfb, 0x57, 0x62, 0xce, 0xac, 0x99, 0xaa, 0xc3, 0x99, 0xd6, 0xa8, 0x0e, 0x67, 0x45, - 0x59, 0x93, 0x0a, 0x37, 0xc1, 0x35, 0x9f, 0x44, 0x3c, 0x2f, 0x15, 0x13, 0xce, 0x36, 0xd3, 0x95, - 0x38, 0xdb, 0x9e, 0x7e, 0x05, 0xfd, 0xa1, 0x8e, 0x62, 0x38, 0xfe, 0x8a, 0xd5, 0x64, 0x15, 0x4e, - 0xb7, 0x8d, 0xa4, 0xcf, 0xc4, 0x10, 0x46, 0xe2, 0xaf, 0x58, 0x4d, 0xd5, 0xe1, 0x4c, 0x6b, 0xfd, - 0xbf, 0x0c, 0xc3, 0x43, 0x87, 0xe0, 0x97, 0x50, 0x27, 0x7f, 0xba, 0x8f, 0x7e, 0x76, 0x0e, 0xb7, - 0x3c, 0xdd, 0x82, 0xe5, 0x39, 0x3a, 0xbe, 0xc3, 0x2e, 0x67, 0x50, 0xb4, 0x9c, 0x47, 0x47, 0x79, - 0xf8, 0xe5, 0xef, 0xe4, 0x2f, 0x7f, 0xc9, 0x59, 0x3d, 0x70, 0xbb, 0x74, 0x0b, 0xb6, 0x4b, 0xc9, - 0x59, 0x3d, 0xc4, 0xf6, 0xfa, 0xb3, 0x61, 0x78, 0xf8, 0x30, 0xbc, 0x5b, 0xc9, 0xfd, 0x95, 0x43, - 0x75, 0x4e, 0x74, 0x7f, 0x15, 0xb9, 0x09, 0x9c, 0xe0, 0xfe, 0xca, 0x41, 0x79, 0xd2, 0xfb, 0xab, - 0x68, 0x56, 0x4f, 0x6a, 0x7f, 0x15, 0xcd, 0xea, 0x21, 0xf6, 0xd7, 0x5f, 0xa6, 0xef, 0x07, 0xc9, - 0xb2, 0x35, 0x61, 0xc8, 0xec, 0xf6, 0x4a, 0x12, 0x29, 0x66, 0x1e, 0x52, 0x5f, 0xbb, 0x83, 0x29, - 0x0c, 0x84, 0x61, 0x94, 0xef, 0x9f, 0x92, 0x24, 0x88, 0xd9, 0xae, 0xf3, 0x2d, 0x89, 0x05, 0x24, - 0x3a, 0x55, 0xa4, 0xbb, 0x49, 0x3a, 0xc4, 0x37, 0x9c, 0x56, 0xe8, 0xf9, 0x46, 0xbb, 0x2c, 0xb5, - 0x61, 0x53, 0xb5, 0x94, 0x82, 0x85, 0x33, 0xd0, 0xe9, 0x84, 0x74, 0x6d, 0xab, 0x24, 0x7d, 0x61, - 0x13, 0xb2, 0xd6, 0x6c, 0x60, 0x0a, 0x43, 0xff, 0xc7, 0xe3, 0xa0, 0xc4, 0x51, 0x42, 0x3f, 0x0d, - 0xf7, 0x1b, 0x8e, 0xe3, 0xdd, 0x5d, 0xf3, 0xed, 0x6d, 0xdb, 0x21, 0x6d, 0x62, 0x49, 0x7e, 0x26, - 0x10, 0x46, 0x44, 0x4c, 0x66, 0x59, 0x28, 0x6a, 0x84, 0x8b, 0xfb, 0xa3, 0xd7, 0x35, 0x38, 0x6b, - 0xa6, 0x63, 0xd7, 0x0c, 0x62, 0x66, 0x90, 0x09, 0x84, 0xc3, 0xcf, 0x53, 0xa6, 0x18, 0x67, 0xd1, - 0xa2, 0x9f, 0xd3, 0xb8, 0x5e, 0x4c, 0x3e, 0x02, 0x88, 0x35, 0xbb, 0x7e, 0x4c, 0xaf, 0xa4, 0xb1, - 0x82, 0x2d, 0x7e, 0x66, 0x48, 0x22, 0x44, 0x5f, 0xd1, 0xe0, 0xc2, 0x56, 0x9e, 0x3a, 0x5f, 0xac, - 0xec, 0xad, 0xb2, 0x43, 0x29, 0x78, 0x1f, 0xe0, 0x1c, 0x65, 0x6e, 0x03, 0x9c, 0x3f, 0x10, 0x39, - 0x4b, 0x52, 0xc3, 0x29, 0x88, 0x40, 0xe9, 0x59, 0x4a, 0xa9, 0x4a, 0xe3, 0x59, 0x92, 0x15, 0x38, - 0x89, 0x10, 0x75, 0x61, 0x7c, 0x2b, 0x52, 0x2b, 0x0b, 0x55, 0x52, 0xbd, 0x2c, 0x76, 0x45, 0x37, - 0xcd, 0x9f, 0x9a, 0x64, 0x21, 0x8e, 0x91, 0xa0, 0x4d, 0x18, 0xdb, 0xe2, 0x84, 0x48, 0xa8, 0x80, - 0x16, 0x06, 0x16, 0x51, 0xb9, 0x26, 0x42, 0x14, 0xe1, 0x08, 0xbc, 0x6a, 0x43, 0x59, 0x3d, 0xc0, - 0xb4, 0xff, 0x4b, 0x1a, 0x5c, 0xd8, 0x26, 0x7e, 0x68, 0x9b, 0xe9, 0xc7, 0x94, 0xf1, 0xf2, 0x62, - 0xf4, 0x73, 0x79, 0x00, 0xf9, 0x36, 0xc9, 0xad, 0xc2, 0xf9, 0x43, 0xa0, 0x42, 0x35, 0xd7, 0x89, - 0xb7, 0x42, 0x23, 0xb4, 0xcd, 0xdb, 0xde, 0x16, 0x71, 0xe9, 0xc7, 0x8a, 0x0c, 0x02, 0xc0, 0x08, - 0x07, 0x13, 0xaa, 0x97, 0x8a, 0x9b, 0xe1, 0x7e, 0x30, 0xf4, 0x1f, 0x68, 0x90, 0xd1, 0xec, 0xa2, - 0xcf, 0x6b, 0x30, 0xb9, 0x41, 0x8c, 0xb0, 0xe7, 0x93, 0xeb, 0x46, 0x28, 0x1d, 0x38, 0x9f, 0x3b, - 0x0e, 0x85, 0xf2, 0xfc, 0x35, 0x05, 0x30, 0xb7, 0x72, 0x90, 0x31, 0xd8, 0xd4, 0x2a, 0x9c, 0x18, - 0xc1, 0xdc, 0x33, 0x70, 0x36, 0xd3, 0xf1, 0x48, 0xcf, 0xa5, 0xff, 0x46, 0x83, 0xbc, 0x9c, 0x12, - 0xe8, 0x25, 0x18, 0x31, 0x2c, 0x4b, 0x86, 0x9c, 0x7e, 0xb2, 0x9c, 0x35, 0x8f, 0xa5, 0xfa, 0xc9, - 0xb2, 0x9f, 0x98, 0x83, 0x45, 0xd7, 0x00, 0x19, 0x89, 0x27, 0xfb, 0x95, 0xd8, 0x91, 0x8c, 0x3d, - 0x46, 0x2d, 0x64, 0x6a, 0x71, 0x4e, 0x0f, 0xfd, 0xe7, 0x35, 0x40, 0xd9, 0xa8, 0x7d, 0xc8, 0x87, - 0xaa, 0xd8, 0xca, 0xd1, 0x2a, 0x35, 0x4a, 0x3a, 0x14, 0x24, 0xbc, 0x63, 0x62, 0x0f, 0x06, 0x51, - 0x10, 0x60, 0x89, 0x47, 0xff, 0x2b, 0x0d, 0xe2, 0xb0, 0xb4, 0xe8, 0xbd, 0x30, 0x61, 0x91, 0xc0, - 0xf4, 0xed, 0x6e, 0x18, 0xfb, 0xd2, 0x48, 0x9b, 0xfc, 0x46, 0x5c, 0x85, 0xd5, 0x76, 0x48, 0x87, - 0xd1, 0xd0, 0x08, 0xb6, 0x9a, 0x0d, 0x21, 0x54, 0x32, 0x16, 0xe0, 0x36, 0x2b, 0xc1, 0xa2, 0x26, - 0x8e, 0xc0, 0x33, 0x74, 0x88, 0x08, 0x3c, 0x68, 0xe3, 0x18, 0xc2, 0x0d, 0xa1, 0x83, 0x43, 0x0d, - 0xe9, 0xbf, 0x51, 0x81, 0x33, 0xb4, 0xc9, 0x8a, 0x61, 0xbb, 0x21, 0x71, 0x99, 0xe5, 0x78, 0xc9, - 0x49, 0x68, 0xc3, 0x54, 0x98, 0x88, 0x84, 0x7a, 0x74, 0xbf, 0x22, 0x69, 0x22, 0x94, 0x8c, 0x7f, - 0x9a, 0x84, 0x8b, 0x9e, 0x8c, 0x4c, 0xf7, 0xb9, 0xf8, 0xfd, 0x50, 0xb4, 0x55, 0x99, 0x3d, 0xfe, - 0x3d, 0x11, 0xd2, 0x49, 0xc6, 0x32, 0x4e, 0x58, 0xe9, 0xbf, 0x0f, 0xa6, 0x84, 0x09, 0x2d, 0x0f, - 0xa5, 0x24, 0xc4, 0x6f, 0x76, 0xc3, 0x5c, 0x53, 0x2b, 0x70, 0xb2, 0x9d, 0xfe, 0x9d, 0x0a, 0x24, - 0x23, 0x26, 0x97, 0x9d, 0xa5, 0x6c, 0x1c, 0xa9, 0xca, 0x89, 0xc5, 0x91, 0x7a, 0x37, 0x4b, 0x37, - 0xc0, 0x33, 0xc9, 0xf0, 0x57, 0x6a, 0x35, 0x49, 0x00, 0xcf, 0x03, 0x23, 0x5b, 0xc4, 0xd3, 0x3a, - 0x7c, 0xe4, 0x69, 0x7d, 0xaf, 0xb0, 0xc0, 0x1f, 0x49, 0x44, 0xf3, 0x8a, 0x7c, 0x0d, 0xce, 0x26, - 0x3a, 0x2a, 0x8e, 0x06, 0xdf, 0xd2, 0x60, 0x4c, 0x84, 0xaa, 0x3c, 0x84, 0x23, 0xcb, 0x06, 0x8c, - 0x30, 0x91, 0x67, 0x10, 0x6e, 0xb0, 0xb5, 0xe9, 0x79, 0x61, 0x22, 0x60, 0x27, 0xb3, 0x1c, 0x67, - 0xff, 0x62, 0x0e, 0x9e, 0x99, 0x24, 0xfa, 0xe6, 0xa6, 0x1d, 0x12, 0x33, 0x8c, 0xc2, 0x00, 0x46, - 0x26, 0x89, 0x4a, 0x39, 0x4e, 0xb4, 0xd2, 0xbf, 0x3c, 0x0c, 0x57, 0x04, 0xe0, 0x0c, 0x8b, 0x24, - 0x09, 0xdc, 0x2e, 0x9c, 0x13, 0x6b, 0xdb, 0xf0, 0x0d, 0x5b, 0xbe, 0xfe, 0x97, 0x13, 0x7d, 0x85, - 0x5d, 0x48, 0x06, 0x1c, 0xce, 0xc3, 0xc1, 0x03, 0xda, 0xb1, 0xe2, 0x1b, 0xc4, 0x70, 0xc2, 0xcd, - 0x08, 0x77, 0x65, 0x90, 0x80, 0x76, 0x59, 0x78, 0x38, 0x17, 0x0b, 0xb3, 0x3e, 0x10, 0x15, 0x75, - 0x9f, 0x18, 0xaa, 0xe9, 0xc3, 0x00, 0xc6, 0xdf, 0x2b, 0xb9, 0x10, 0x71, 0x01, 0x26, 0xa6, 0x43, - 0x34, 0x76, 0x98, 0x4a, 0x02, 0x93, 0xd0, 0xb7, 0x59, 0xe0, 0x55, 0xa9, 0xc8, 0x5e, 0x49, 0x56, - 0xe1, 0x74, 0x5b, 0xf4, 0x14, 0x4c, 0x33, 0x6b, 0x8e, 0x38, 0x72, 0xcc, 0x48, 0xec, 0xe7, 0xbc, - 0x9a, 0xa8, 0xc1, 0xa9, 0x96, 0xfa, 0x6f, 0x6a, 0x30, 0xa9, 0x6e, 0xbb, 0x43, 0x78, 0xb5, 0xf4, - 0x94, 0xcb, 0x70, 0x00, 0x8f, 0x0b, 0x15, 0xeb, 0x61, 0xee, 0xc3, 0xcf, 0x0d, 0xc1, 0xb9, 0x9c, - 0x3e, 0xec, 0x6d, 0x9e, 0xa4, 0x2e, 0xd6, 0x41, 0xde, 0xe6, 0x33, 0x97, 0xb4, 0x7c, 0x9b, 0x4f, - 0xd7, 0xe0, 0x0c, 0x5e, 0xf4, 0x1c, 0x0c, 0x99, 0xbe, 0x2d, 0xa6, 0xe5, 0x7d, 0xa5, 0xc4, 0x42, - 0xdc, 0x5c, 0x9c, 0x10, 0x18, 0x87, 0xea, 0xb8, 0x89, 0x29, 0x40, 0x7a, 0x3d, 0xa8, 0x87, 0x3a, - 0xba, 0xab, 0xd9, 0xf5, 0xa0, 0x9e, 0xfd, 0x00, 0x27, 0xdb, 0xa1, 0x17, 0x60, 0x56, 0xf0, 0xeb, - 0x91, 0x1f, 0xab, 0xe7, 0x06, 0x21, 0x3d, 0x7f, 0xa1, 0x20, 0xa7, 0x0f, 0xec, 0xef, 0xd5, 0x66, - 0x6f, 0x16, 0xb4, 0xc1, 0x85, 0xbd, 0xf5, 0xbf, 0x18, 0x82, 0x09, 0x25, 0x9c, 0x2f, 0x5a, 0x19, - 0x44, 0xd1, 0x11, 0x7f, 0x71, 0xa4, 0xec, 0x58, 0x81, 0xa1, 0x76, 0xb7, 0x57, 0x52, 0xd3, 0x21, - 0xc1, 0x5d, 0xa7, 0xe0, 0xda, 0xdd, 0x1e, 0x7a, 0x4e, 0xea, 0x4e, 0xca, 0x69, 0x37, 0xa4, 0xd7, - 0x41, 0x4a, 0x7f, 0x12, 0x1d, 0x97, 0xe1, 0xc2, 0xe3, 0xd2, 0x81, 0xb1, 0x40, 0x28, 0x56, 0x46, - 0xca, 0x47, 0x75, 0x50, 0x66, 0x5a, 0x28, 0x52, 0xb8, 0x54, 0x16, 0xe9, 0x59, 0x22, 0x1c, 0x94, - 0xe3, 0xeb, 0x31, 0x5f, 0x46, 0x26, 0x6e, 0x56, 0x39, 0xc7, 0x77, 0x87, 0x95, 0x60, 0x51, 0x93, - 0xb9, 0x48, 0xc6, 0x0e, 0x75, 0x91, 0x7c, 0xa6, 0x02, 0x28, 0x3b, 0x0c, 0xf4, 0x10, 0x8c, 0x30, - 0x5f, 0x68, 0x41, 0x31, 0x24, 0x7f, 0xce, 0xbc, 0x61, 0x31, 0xaf, 0x43, 0x2d, 0xe1, 0xa3, 0x5e, - 0x6e, 0x39, 0x99, 0x71, 0x8b, 0xc0, 0xa7, 0x38, 0xb4, 0x47, 0x37, 0xf3, 0x50, 0xe1, 0xcd, 0x7c, - 0x07, 0xc6, 0x3a, 0xb6, 0xcb, 0x5e, 0xd8, 0xca, 0xe9, 0x9b, 0xf8, 0x1b, 0x3c, 0x07, 0x81, 0x23, - 0x58, 0xfa, 0x9f, 0x55, 0xe8, 0xd6, 0x8f, 0xf9, 0xd2, 0x5d, 0x00, 0xa3, 0x17, 0x7a, 0x9c, 0xc1, - 0x11, 0x27, 0xa0, 0x59, 0x6e, 0x95, 0x25, 0xd0, 0x05, 0x09, 0x90, 0x3f, 0x8d, 0xc7, 0xbf, 0xb1, - 0x82, 0x8c, 0xa2, 0x0e, 0xed, 0x0e, 0x79, 0xde, 0x76, 0x2d, 0xef, 0xae, 0x98, 0xde, 0x41, 0x51, - 0xdf, 0x96, 0x00, 0x39, 0xea, 0xf8, 0x37, 0x56, 0x90, 0x51, 0xd2, 0xc2, 0xc4, 0x5b, 0x97, 0xc5, - 0x57, 0x17, 0x63, 0xf3, 0x1c, 0x27, 0xba, 0x3b, 0xab, 0x9c, 0xb4, 0xd4, 0x0b, 0xda, 0xe0, 0xc2, - 0xde, 0xfa, 0x6f, 0x69, 0x70, 0x21, 0x77, 0x2a, 0xd0, 0x75, 0x38, 0x1b, 0xdb, 0x43, 0xa9, 0xc4, - 0xbe, 0x1a, 0xc7, 0xf5, 0xbf, 0x99, 0x6e, 0x80, 0xb3, 0x7d, 0xd0, 0x8a, 0x64, 0x78, 0xd4, 0xcb, - 0x44, 0x18, 0x53, 0x5d, 0x12, 0xa0, 0xf2, 0xee, 0x1b, 0x9c, 0xd7, 0x4f, 0xff, 0xe9, 0xc4, 0x80, - 0xe3, 0x09, 0xa3, 0xa7, 0x63, 0x9d, 0xb4, 0xa5, 0xf3, 0x92, 0x3c, 0x1d, 0x8b, 0xb4, 0x10, 0xf3, - 0x3a, 0xf4, 0xa0, 0xea, 0x12, 0x28, 0x69, 0x57, 0xe4, 0x16, 0xa8, 0x87, 0x00, 0xc2, 0x64, 0xd1, - 0x76, 0xdb, 0x68, 0x03, 0xaa, 0x86, 0x48, 0x2f, 0x28, 0xb6, 0xda, 0x4f, 0x96, 0x92, 0xa6, 0x05, - 0x0c, 0x6e, 0x99, 0x1e, 0xfd, 0xc2, 0x12, 0xb6, 0xfe, 0x4f, 0x34, 0xb8, 0x98, 0xef, 0xf3, 0x7b, - 0x08, 0x1e, 0xa1, 0x03, 0x13, 0x7e, 0xdc, 0x4d, 0xec, 0xcb, 0x9f, 0x50, 0xa3, 0xe8, 0x29, 0x11, - 0x68, 0x28, 0xff, 0x54, 0xf7, 0xbd, 0x20, 0x5a, 0x9c, 0x74, 0x60, 0x3d, 0x29, 0xbb, 0x28, 0x23, - 0xc1, 0x2a, 0x7c, 0xfd, 0xdf, 0x56, 0x00, 0x56, 0x49, 0x78, 0xd7, 0xf3, 0xb7, 0xe8, 0x14, 0xbd, - 0xa9, 0x7c, 0xcf, 0x1f, 0x80, 0xe1, 0xae, 0x67, 0x05, 0x82, 0x4a, 0x31, 0xa7, 0x70, 0x66, 0xd1, - 0xc3, 0x4a, 0x51, 0x0d, 0x46, 0xd8, 0x2b, 0x82, 0xb8, 0x40, 0x18, 0xd3, 0x4f, 0x59, 0xb6, 0x00, - 0xf3, 0x72, 0x9e, 0x38, 0x86, 0x79, 0x7d, 0x04, 0x42, 0x8a, 0x11, 0x89, 0x63, 0x78, 0x19, 0x96, - 0xb5, 0xe8, 0x29, 0x00, 0xbb, 0x7b, 0xcd, 0xe8, 0xd8, 0x0e, 0x65, 0x20, 0x47, 0x65, 0x9e, 0x42, - 0x68, 0xae, 0x45, 0xa5, 0xf7, 0xf6, 0x6a, 0x55, 0xf1, 0x6b, 0x17, 0x2b, 0xad, 0xf5, 0x4f, 0x0c, - 0x43, 0x22, 0x0b, 0x67, 0xac, 0xb0, 0xd1, 0x4e, 0x46, 0x61, 0xf3, 0x02, 0xcc, 0x3a, 0x9e, 0x61, - 0x2d, 0x1a, 0x0e, 0x3d, 0x30, 0x7e, 0x8b, 0x2f, 0xa5, 0xe1, 0xb6, 0x65, 0xe2, 0x46, 0x46, 0x3c, - 0x96, 0x0b, 0xda, 0xe0, 0xc2, 0xde, 0x28, 0x94, 0xb9, 0x3f, 0x79, 0xea, 0x84, 0xe5, 0x41, 0x73, - 0x94, 0xce, 0xab, 0xbe, 0x42, 0x92, 0x0f, 0x48, 0xa5, 0x07, 0xfd, 0xb4, 0x06, 0x17, 0xc8, 0x4e, - 0x48, 0x7c, 0xd7, 0x70, 0x6e, 0xfb, 0xc6, 0xc6, 0x86, 0x6d, 0x0a, 0x3b, 0x4b, 0xbe, 0xb0, 0x6b, - 0xfb, 0x7b, 0xb5, 0x0b, 0x4b, 0x79, 0x0d, 0xee, 0xed, 0xd5, 0xde, 0x93, 0x4d, 0xc1, 0x1b, 0xb9, - 0x06, 0xe5, 0x76, 0x61, 0x1b, 0x39, 0x1f, 0xdd, 0xdc, 0x93, 0x30, 0x71, 0x04, 0x5f, 0x87, 0x84, - 0x0b, 0xf6, 0xef, 0x55, 0x60, 0x92, 0xee, 0xbd, 0x65, 0xcf, 0x34, 0x9c, 0xc6, 0x6a, 0xeb, 0x08, - 0xf9, 0x6b, 0xd1, 0x32, 0x9c, 0xdf, 0xf0, 0x7c, 0x93, 0xdc, 0xae, 0xaf, 0xdd, 0xf6, 0xc4, 0x1b, - 0x46, 0x63, 0xb5, 0x25, 0x08, 0x2a, 0x93, 0xca, 0xae, 0xe5, 0xd4, 0xe3, 0xdc, 0x5e, 0xe8, 0x16, - 0x5c, 0x88, 0xcb, 0xef, 0x74, 0xb9, 0x71, 0x06, 0x05, 0x37, 0x14, 0x1b, 0x97, 0x5c, 0xcb, 0x6b, - 0x80, 0xf3, 0xfb, 0x21, 0x03, 0x2e, 0x89, 0x10, 0x0f, 0xd7, 0x3c, 0xff, 0xae, 0xe1, 0x5b, 0x49, - 0xb0, 0xc3, 0xb1, 0x8e, 0xb7, 0x51, 0xdc, 0x0c, 0xf7, 0x83, 0xa1, 0xff, 0xca, 0x28, 0x28, 0x4e, - 0x6d, 0x47, 0x48, 0x37, 0xf2, 0xeb, 0x1a, 0x9c, 0x37, 0x1d, 0x9b, 0xb8, 0x61, 0xca, 0x7b, 0x89, - 0x93, 0xa4, 0x3b, 0xa5, 0xbc, 0xed, 0xba, 0xc4, 0x6d, 0x36, 0x84, 0x2d, 0x4b, 0x3d, 0x07, 0xb8, - 0xb0, 0xf7, 0xc9, 0xa9, 0xc1, 0xb9, 0x83, 0x61, 0xdf, 0xc3, 0xca, 0x9b, 0x0d, 0xd5, 0x37, 0xbd, - 0x2e, 0xca, 0xb0, 0xac, 0x45, 0x8f, 0xc1, 0x44, 0xdb, 0xf7, 0x7a, 0xdd, 0xa0, 0xce, 0x0c, 0x68, - 0xf9, 0xfe, 0x67, 0x2c, 0xdc, 0xf5, 0xb8, 0x18, 0xab, 0x6d, 0x28, 0x43, 0xca, 0x7f, 0xae, 0xf9, - 0x64, 0xc3, 0xde, 0x11, 0x84, 0x8e, 0x31, 0xa4, 0xd7, 0x95, 0x72, 0x9c, 0x68, 0x85, 0xde, 0x05, - 0xe3, 0x76, 0x10, 0xf4, 0x88, 0x7f, 0x07, 0x2f, 0x8b, 0x38, 0xe3, 0xec, 0x5d, 0xa4, 0x19, 0x15, - 0xe2, 0xb8, 0x1e, 0x7d, 0x41, 0x83, 0x69, 0x9f, 0xbc, 0xd2, 0xb3, 0x7d, 0x62, 0x31, 0xa4, 0x81, - 0xf0, 0x2c, 0xc4, 0x83, 0x79, 0x33, 0xce, 0xe3, 0x04, 0x50, 0x4e, 0x25, 0xa4, 0x1e, 0x2c, 0x59, - 0x89, 0x53, 0x23, 0xa0, 0x53, 0x15, 0xd8, 0x6d, 0xd7, 0x76, 0xdb, 0x0b, 0x4e, 0x3b, 0x98, 0xad, - 0x32, 0xc2, 0xc7, 0xb9, 0xdd, 0xb8, 0x18, 0xab, 0x6d, 0xa8, 0x24, 0xd8, 0x0b, 0xe8, 0xb9, 0xef, - 0x10, 0x3e, 0xbf, 0xe3, 0xb1, 0xa2, 0xf0, 0x8e, 0x5a, 0x81, 0x93, 0xed, 0xd0, 0x53, 0x30, 0x1d, - 0x15, 0x88, 0x59, 0x06, 0x1e, 0x30, 0x8a, 0x8e, 0xf3, 0x4e, 0xa2, 0x06, 0xa7, 0x5a, 0xce, 0x2d, - 0xc0, 0xb9, 0x9c, 0xcf, 0x3c, 0x12, 0x71, 0xf9, 0xcd, 0x0a, 0xbc, 0xfd, 0xc0, 0x5d, 0x89, 0xfe, - 0xa1, 0x06, 0x13, 0x64, 0x27, 0xf4, 0x0d, 0x69, 0x63, 0x4f, 0x97, 0x68, 0xe3, 0x44, 0x8e, 0xc0, - 0xfc, 0x52, 0x8c, 0x88, 0x2f, 0x9b, 0x64, 0x34, 0x94, 0x1a, 0xac, 0x8e, 0x87, 0x4a, 0x57, 0x3c, - 0x9c, 0x98, 0xaa, 0x4f, 0x17, 0x09, 0x1c, 0x45, 0xcd, 0xdc, 0x07, 0x61, 0x26, 0x0d, 0xf9, 0x48, - 0x33, 0xf5, 0xbb, 0x15, 0x18, 0x5b, 0xf3, 0x3d, 0xca, 0x03, 0x9d, 0x42, 0x10, 0x29, 0x23, 0x11, - 0x17, 0xb7, 0x94, 0xab, 0xb2, 0x18, 0x6c, 0x61, 0x4c, 0x6e, 0x3b, 0x15, 0x93, 0x7b, 0x61, 0x10, - 0x24, 0xfd, 0x83, 0x70, 0xff, 0x7b, 0x0d, 0x26, 0x44, 0xcb, 0x53, 0x08, 0x32, 0xf5, 0xb3, 0xc9, - 0x20, 0x53, 0x1f, 0x18, 0xe0, 0xbb, 0x0a, 0xc2, 0x4b, 0x7d, 0x49, 0x83, 0x29, 0xd1, 0x62, 0x85, - 0x74, 0xd6, 0x89, 0x8f, 0xae, 0xc1, 0x58, 0xd0, 0x63, 0x0b, 0x29, 0x3e, 0xe8, 0x92, 0xca, 0x55, - 0xfb, 0xeb, 0x86, 0xc9, 0xb2, 0x90, 0xf2, 0x26, 0x4a, 0xa4, 0x6b, 0x5e, 0x80, 0xa3, 0xce, 0x94, - 0x47, 0xf6, 0x3d, 0x27, 0x13, 0x9b, 0x06, 0x7b, 0x0e, 0xc1, 0xac, 0x86, 0xb2, 0xa6, 0xf4, 0x6f, - 0xa4, 0x6b, 0x62, 0xac, 0x29, 0xad, 0x0e, 0x30, 0x2f, 0xd7, 0x3f, 0x35, 0x2c, 0x27, 0x9b, 0x45, - 0xa3, 0xbd, 0x01, 0xe3, 0xa6, 0x4f, 0x8c, 0x90, 0x58, 0x8b, 0xbb, 0x87, 0x19, 0x1c, 0x23, 0xd6, - 0xf5, 0xa8, 0x07, 0x8e, 0x3b, 0x53, 0xba, 0xa8, 0x3e, 0x61, 0x54, 0xe2, 0x2b, 0xa4, 0xf0, 0xf9, - 0xe2, 0x27, 0x61, 0xc4, 0xbb, 0xeb, 0x4a, 0x4b, 0x88, 0xbe, 0x88, 0xd9, 0xa7, 0xdc, 0xa2, 0xad, - 0x31, 0xef, 0xa4, 0xc6, 0x66, 0x1a, 0xee, 0x13, 0x9b, 0xc9, 0x81, 0xb1, 0x0e, 0x5b, 0x86, 0x81, - 0x02, 0x1f, 0x27, 0x16, 0x54, 0x4d, 0x8d, 0xc1, 0x20, 0xe3, 0x08, 0x05, 0xbd, 0xdf, 0x28, 0x0d, - 0x0e, 0xba, 0x86, 0x49, 0xd4, 0xfb, 0x6d, 0x35, 0x2a, 0xc4, 0x71, 0x3d, 0xda, 0x4d, 0x06, 0xfd, - 0x1a, 0x2b, 0xaf, 0x6a, 0x12, 0xc3, 0x53, 0xe2, 0x7c, 0xf1, 0xa9, 0x2f, 0x0c, 0xfc, 0xf5, 0x0b, - 0xc3, 0x72, 0x93, 0x8a, 0x38, 0xe6, 0xf9, 0x99, 0x33, 0xb5, 0x52, 0x99, 0x33, 0xdf, 0x13, 0x25, - 0xa3, 0xac, 0x24, 0xd2, 0xb8, 0xc8, 0x64, 0x94, 0x93, 0x02, 0x75, 0x22, 0x01, 0x65, 0x0f, 0xce, - 0x05, 0xa1, 0xe1, 0x90, 0x96, 0x2d, 0xc4, 0xf1, 0x20, 0x34, 0x3a, 0xdd, 0x12, 0xd9, 0x58, 0xb8, - 0x45, 0x7a, 0x16, 0x14, 0xce, 0x83, 0x8f, 0x3e, 0xa9, 0xc1, 0x2c, 0x2b, 0x5f, 0xe8, 0x85, 0x1e, - 0x0f, 0x31, 0x1b, 0x23, 0x3f, 0xfa, 0x3b, 0x29, 0x13, 0x81, 0x5a, 0x05, 0xf0, 0x70, 0x21, 0x26, - 0xf4, 0x1a, 0x5c, 0x70, 0x8c, 0x20, 0x5c, 0x30, 0x43, 0x7b, 0xdb, 0x0e, 0x77, 0xe3, 0x21, 0x1c, - 0x3d, 0x05, 0x24, 0x63, 0xb5, 0x97, 0xf3, 0x80, 0xe1, 0x7c, 0x1c, 0xfa, 0x5f, 0x6a, 0x80, 0xb2, - 0x5b, 0x08, 0x39, 0x50, 0xb5, 0x22, 0x13, 0x71, 0xed, 0x58, 0x22, 0xd2, 0x49, 0xca, 0x2c, 0x2d, - 0xcb, 0x25, 0x06, 0xe4, 0xc1, 0xf8, 0xdd, 0x4d, 0x3b, 0x24, 0x8e, 0x1d, 0x84, 0xc7, 0x14, 0x00, - 0x4f, 0x46, 0x83, 0x7a, 0x3e, 0x02, 0x8c, 0x63, 0x1c, 0xfa, 0x2f, 0x0e, 0x43, 0xf5, 0x08, 0xc9, - 0xda, 0x7b, 0x80, 0x4c, 0x25, 0x49, 0xcc, 0x20, 0x3a, 0x08, 0x66, 0xde, 0x50, 0xcf, 0x00, 0xc3, - 0x39, 0x08, 0xd0, 0x6b, 0x70, 0xde, 0x76, 0x37, 0x7c, 0x23, 0x08, 0xfd, 0x1e, 0x53, 0xea, 0x0e, - 0x92, 0x6b, 0x85, 0x49, 0x10, 0xcd, 0x1c, 0x70, 0x38, 0x17, 0x09, 0x22, 0x30, 0x76, 0xd7, 0xf3, - 0xb7, 0x28, 0xf1, 0x1c, 0x2e, 0x9f, 0x75, 0xef, 0x79, 0x06, 0x22, 0xa6, 0x9a, 0xfc, 0x77, 0x80, - 0x23, 0xd8, 0x3c, 0x1c, 0x06, 0xff, 0x3f, 0x7a, 0xde, 0x14, 0xfb, 0xbe, 0x5e, 0x1e, 0x5f, 0x9c, - 0xc0, 0x91, 0x87, 0xc3, 0x48, 0x16, 0xe2, 0x34, 0x42, 0xfd, 0x0f, 0x35, 0x18, 0xe1, 0xae, 0x97, - 0x27, 0xcf, 0xc1, 0xfd, 0xdd, 0x04, 0x07, 0x57, 0x2a, 0x5d, 0x04, 0x1b, 0x6a, 0x61, 0x22, 0x83, - 0x6f, 0x69, 0x30, 0xce, 0x5a, 0x9c, 0x02, 0x4b, 0xf5, 0x52, 0x92, 0xa5, 0x7a, 0xb2, 0xf4, 0xd7, - 0x14, 0x30, 0x54, 0x7f, 0x38, 0x24, 0xbe, 0x85, 0x71, 0x2c, 0x4d, 0x38, 0x27, 0x8c, 0x2b, 0x97, - 0xed, 0x0d, 0x42, 0xb7, 0x78, 0xc3, 0xd8, 0x0d, 0x44, 0xbc, 0x04, 0xee, 0x5d, 0x93, 0xad, 0xc6, - 0x79, 0x7d, 0xd0, 0xef, 0x69, 0x94, 0x37, 0x08, 0x7d, 0xdb, 0x1c, 0x28, 0x3b, 0x80, 0x1c, 0xdb, - 0xfc, 0x0a, 0x07, 0xc6, 0x25, 0x93, 0x3b, 0x31, 0x93, 0xc0, 0x4a, 0xef, 0xed, 0xd5, 0x6a, 0x39, - 0x4a, 0xa3, 0x38, 0xe8, 0x78, 0x10, 0x7e, 0xe2, 0x7b, 0x7d, 0x9b, 0x30, 0x65, 0x6d, 0x34, 0x62, - 0x74, 0x03, 0x46, 0x02, 0xd3, 0xeb, 0x92, 0xa3, 0xe4, 0x3b, 0x91, 0x13, 0xdc, 0xa2, 0x3d, 0x31, - 0x07, 0x30, 0xf7, 0x32, 0x4c, 0xaa, 0x23, 0xcf, 0x91, 0x7c, 0x1a, 0xaa, 0xe4, 0x73, 0xe4, 0x27, - 0x19, 0x55, 0x52, 0xfa, 0xfd, 0x0a, 0x8c, 0xf2, 0xac, 0x9b, 0x87, 0x50, 0x49, 0xdb, 0x51, 0x74, - 0xe7, 0x01, 0x92, 0x09, 0xab, 0xe1, 0xf6, 0x5e, 0xf4, 0x5c, 0x65, 0x0e, 0xd4, 0x00, 0xcf, 0xc8, - 0x95, 0x41, 0x18, 0x87, 0xca, 0xe7, 0x64, 0xe0, 0x1f, 0x76, 0xd2, 0x61, 0x17, 0xff, 0x58, 0x83, - 0xc9, 0x44, 0x54, 0xcb, 0x0e, 0x0c, 0xf9, 0x32, 0x5b, 0x4f, 0x59, 0x8d, 0x7d, 0x64, 0xa2, 0x73, - 0xa9, 0x4f, 0x23, 0x4c, 0xf1, 0xc8, 0x00, 0x98, 0x95, 0x63, 0x0a, 0x80, 0xa9, 0xbf, 0xa1, 0xc1, - 0xc5, 0xe8, 0x83, 0x92, 0x51, 0x8b, 0xd0, 0x23, 0x50, 0x35, 0xba, 0x36, 0x53, 0x28, 0xa9, 0x2a, - 0xb9, 0x85, 0xb5, 0x26, 0x2b, 0xc3, 0xb2, 0x16, 0xbd, 0x1b, 0xaa, 0xd1, 0xc6, 0x13, 0x6c, 0xa7, - 0xa4, 0x59, 0xf2, 0x0d, 0x42, 0xb6, 0x40, 0xef, 0x50, 0x02, 0x70, 0x8f, 0xc4, 0x7c, 0x82, 0x44, - 0xcc, 0x9f, 0x2b, 0xf5, 0x9f, 0x80, 0xf1, 0x56, 0xeb, 0x06, 0x8f, 0xe7, 0x72, 0x04, 0xd5, 0xaa, - 0xfe, 0xd9, 0x21, 0x98, 0xe2, 0x2a, 0x86, 0x45, 0xdb, 0xb5, 0x6c, 0xb7, 0x7d, 0x0a, 0x77, 0xca, - 0x6d, 0x18, 0xe7, 0xda, 0x8c, 0x03, 0x32, 0x2b, 0xb5, 0xa2, 0x46, 0xe9, 0x68, 0xb0, 0xb2, 0x02, - 0xc7, 0x80, 0xd0, 0x4d, 0x18, 0x7d, 0x85, 0xd2, 0xb7, 0xe8, 0x5c, 0x1c, 0x8a, 0xcc, 0xc8, 0x4d, - 0xcf, 0x48, 0x63, 0x80, 0x05, 0x08, 0x14, 0x30, 0x1b, 0x32, 0xc6, 0x70, 0x0d, 0x12, 0x8d, 0x20, - 0x31, 0xb3, 0x32, 0xfc, 0xfe, 0xa4, 0x30, 0x45, 0x63, 0xbf, 0xb0, 0x44, 0xc4, 0x42, 0x59, 0x27, - 0x7a, 0xbc, 0x45, 0x42, 0x59, 0x27, 0xc6, 0x5c, 0x70, 0x35, 0x3e, 0x09, 0x17, 0x72, 0x27, 0xe3, - 0x60, 0x76, 0x56, 0xff, 0xed, 0x0a, 0x0c, 0xb7, 0x08, 0xb1, 0x4e, 0x61, 0x67, 0xbe, 0x94, 0xe0, - 0x76, 0x7e, 0xb2, 0x74, 0x30, 0xed, 0x22, 0x65, 0xd5, 0x46, 0x4a, 0x59, 0xf5, 0xc1, 0xd2, 0x18, - 0xfa, 0x6b, 0xaa, 0x7e, 0xb5, 0x02, 0x40, 0x9b, 0x2d, 0x1a, 0xe6, 0x16, 0xa7, 0x38, 0x72, 0x37, - 0x6b, 0x49, 0x8a, 0x93, 0xdd, 0x86, 0xa7, 0xf9, 0x7c, 0xa9, 0xc3, 0x28, 0xcf, 0x67, 0x2d, 0xb4, - 0xfe, 0xc0, 0xd3, 0x7d, 0xd2, 0x12, 0x2c, 0x6a, 0x92, 0xd4, 0x62, 0xf8, 0x98, 0xa8, 0x85, 0xfe, - 0xcf, 0x35, 0x60, 0x09, 0xda, 0x1a, 0xab, 0xcc, 0x57, 0xdb, 0xe6, 0xaf, 0x71, 0x0d, 0x35, 0x16, - 0x28, 0xd3, 0x7a, 0x37, 0xd5, 0x0a, 0x9c, 0x6c, 0x87, 0x3a, 0xca, 0xbc, 0x56, 0xca, 0x4b, 0x01, - 0x62, 0x1c, 0x07, 0xd2, 0x87, 0xef, 0x55, 0xe0, 0x4c, 0xaa, 0xed, 0x21, 0xa4, 0xc1, 0x93, 0xa1, - 0xb6, 0x4a, 0xc6, 0x8e, 0xa1, 0x93, 0xcf, 0xd8, 0x21, 0x93, 0x67, 0x0c, 0x9f, 0x6c, 0xf2, 0x8c, - 0x3f, 0xd0, 0xa0, 0x4a, 0x67, 0xf8, 0x14, 0x08, 0xef, 0xdf, 0x49, 0x12, 0xde, 0xf7, 0x97, 0xdd, - 0x38, 0x05, 0xf4, 0xf6, 0x87, 0x15, 0x60, 0x51, 0xfc, 0x85, 0xe1, 0x82, 0x62, 0x0b, 0xa0, 0x15, - 0xd8, 0x02, 0x5c, 0x11, 0xa6, 0x04, 0x29, 0x9d, 0xad, 0x62, 0x4e, 0xf0, 0x6e, 0xc5, 0x5a, 0x60, - 0x28, 0x49, 0x46, 0x72, 0x2c, 0x06, 0x5e, 0x85, 0xa9, 0x60, 0xd3, 0xf3, 0x42, 0xe9, 0xbb, 0x3f, - 0x5c, 0x5e, 0x3f, 0xcf, 0x0c, 0x98, 0xa3, 0x4f, 0xe1, 0x07, 0xb3, 0xa5, 0xc2, 0xc6, 0x49, 0x54, - 0x68, 0x1e, 0x60, 0xdd, 0xf1, 0xcc, 0xad, 0x7a, 0xb3, 0x81, 0x23, 0x83, 0x55, 0x66, 0x6d, 0xb4, - 0x28, 0x4b, 0xb1, 0xd2, 0x62, 0x20, 0xeb, 0x86, 0x3f, 0xd7, 0xf8, 0x4c, 0x1f, 0xe1, 0x48, 0x9e, - 0x22, 0x85, 0x7d, 0x67, 0x8a, 0xc2, 0x2a, 0x49, 0x95, 0x13, 0x54, 0xb6, 0x16, 0x9f, 0x30, 0xa9, - 0x8f, 0x4f, 0x1c, 0x8d, 0xdf, 0x15, 0x9f, 0x29, 0x13, 0x41, 0x74, 0x61, 0xca, 0x51, 0x13, 0xfc, - 0x89, 0x33, 0x52, 0x2a, 0x37, 0xa0, 0xf4, 0x80, 0x48, 0x14, 0xe3, 0x24, 0x02, 0x4a, 0xa7, 0xa3, - 0xaf, 0x63, 0x29, 0xff, 0x85, 0x2d, 0x07, 0xdb, 0x0e, 0x6b, 0x6a, 0x05, 0x4e, 0xb6, 0xd3, 0xff, - 0x51, 0x05, 0x1e, 0xe4, 0x63, 0x67, 0x1a, 0x94, 0x06, 0xe9, 0x12, 0xd7, 0x22, 0xae, 0xb9, 0xcb, - 0x78, 0x78, 0xcb, 0x6b, 0xa3, 0xbf, 0xaf, 0x41, 0x95, 0xb8, 0x56, 0xd7, 0xb3, 0xdd, 0xe8, 0xe9, - 0xe3, 0xc3, 0xe5, 0x53, 0x69, 0x14, 0x60, 0x59, 0x12, 0x08, 0x44, 0xbc, 0x4e, 0xf1, 0x0b, 0x4b, - 0xc4, 0xe8, 0x2e, 0x8c, 0x74, 0x7d, 0x6f, 0x3d, 0x12, 0x5e, 0x9f, 0x3b, 0xf6, 0x11, 0xac, 0x51, - 0xe8, 0x7c, 0x71, 0xd9, 0xbf, 0x98, 0xe3, 0xd3, 0x31, 0xbc, 0xe3, 0x50, 0x23, 0x3f, 0x8a, 0x64, - 0x71, 0x0b, 0xf4, 0x83, 0xc7, 0x72, 0x14, 0x80, 0xcf, 0xc2, 0xc3, 0x0a, 0xc0, 0xa5, 0x1d, 0x2a, - 0xea, 0xd4, 0x8d, 0xae, 0x61, 0x52, 0xc1, 0x9d, 0x79, 0x44, 0x73, 0x9d, 0xfe, 0x11, 0x40, 0x7e, - 0x66, 0x18, 0x6a, 0x0a, 0xcc, 0x84, 0x41, 0x50, 0x44, 0xc7, 0xbe, 0xac, 0xc1, 0x84, 0xe1, 0xba, - 0x5e, 0x68, 0xa8, 0x89, 0x53, 0xad, 0x01, 0xd7, 0x26, 0x0f, 0xd5, 0xfc, 0x42, 0x8c, 0x26, 0xf5, - 0x66, 0xac, 0xd4, 0x60, 0x75, 0x34, 0x7d, 0x4c, 0x83, 0x2a, 0xa7, 0x6a, 0x1a, 0x84, 0x3e, 0x1a, - 0x11, 0x10, 0x2e, 0x7d, 0xbd, 0x70, 0x02, 0xf3, 0xc3, 0xe8, 0x51, 0xbe, 0x56, 0x64, 0xee, 0x83, - 0x30, 0x93, 0x9e, 0xbd, 0x23, 0xa9, 0x2a, 0xfe, 0xd5, 0x50, 0x62, 0x77, 0x15, 0xa2, 0x3f, 0x84, - 0x2e, 0xe8, 0x2b, 0xa9, 0x0d, 0xc3, 0x2f, 0x78, 0xfb, 0xa4, 0x26, 0xe4, 0x78, 0x77, 0xcd, 0xd0, - 0xe9, 0x1a, 0x94, 0x0d, 0xba, 0x6c, 0x75, 0xb8, 0xa8, 0xcc, 0x11, 0x7b, 0x75, 0xad, 0x6f, 0x12, - 0x73, 0xeb, 0x48, 0x3a, 0x90, 0x45, 0x2a, 0x9b, 0x4a, 0x20, 0x4a, 0x8e, 0xa5, 0x47, 0x61, 0x6c, - 0xdb, 0x0e, 0xec, 0x28, 0x4e, 0x87, 0x02, 0xe3, 0x39, 0x5e, 0x8c, 0xa3, 0x7a, 0x7d, 0x05, 0xae, - 0x28, 0x30, 0x72, 0x5d, 0x84, 0x8f, 0x32, 0xa4, 0xaf, 0x8e, 0x45, 0xb7, 0xad, 0xf0, 0xa1, 0xfa, - 0xba, 0x06, 0xf7, 0x93, 0x22, 0x92, 0x27, 0x6e, 0xac, 0x41, 0xcf, 0x5c, 0x21, 0x49, 0x15, 0xc1, - 0x0f, 0x8b, 0xaa, 0x71, 0xf1, 0xc8, 0xd0, 0x6e, 0x22, 0x37, 0x58, 0x65, 0x10, 0x55, 0x4a, 0xce, - 0x0a, 0xf5, 0xcb, 0x0c, 0x86, 0x7e, 0x4d, 0x83, 0xf3, 0x4e, 0xce, 0xa9, 0x11, 0x8c, 0x68, 0xeb, - 0x04, 0x0e, 0x24, 0x7f, 0xb6, 0xca, 0xab, 0xc1, 0xb9, 0x43, 0x41, 0xbf, 0x51, 0xe8, 0xbb, 0x3e, - 0x52, 0x3e, 0xeb, 0xed, 0x41, 0x1b, 0xb1, 0x84, 0x1b, 0xfb, 0x47, 0x61, 0xc2, 0x8b, 0x0f, 0x97, - 0x08, 0x36, 0xf0, 0x53, 0x03, 0x0e, 0x4e, 0x39, 0xae, 0xdc, 0x08, 0x40, 0x29, 0xc0, 0x2a, 0x3e, - 0xf4, 0x45, 0x0d, 0x90, 0x95, 0xe1, 0x20, 0x84, 0x1d, 0xc2, 0xb3, 0xc7, 0xce, 0x26, 0xf1, 0x67, - 0xcf, 0x6c, 0x39, 0xce, 0x19, 0x84, 0xfe, 0xc6, 0x18, 0x97, 0x19, 0xd9, 0x9b, 0xcf, 0x3a, 0x8c, - 0xae, 0x33, 0x9d, 0x8b, 0x38, 0x92, 0xa5, 0x15, 0x3c, 0x5c, 0x73, 0xc3, 0x15, 0x22, 0xfc, 0x7f, - 0x2c, 0x20, 0xa3, 0x17, 0x61, 0xc8, 0x72, 0xa3, 0x4c, 0xea, 0x1f, 0x18, 0x40, 0xe1, 0x10, 0x7b, - 0x03, 0x34, 0x56, 0x5b, 0x98, 0x02, 0x45, 0x2e, 0x54, 0x5d, 0x21, 0x66, 0x09, 0xb9, 0xbe, 0x74, - 0x46, 0x39, 0x29, 0xae, 0x49, 0x21, 0x31, 0x2a, 0xc1, 0x12, 0x07, 0xc5, 0x97, 0xd2, 0xb3, 0x96, - 0xc6, 0x27, 0xd5, 0x27, 0xfd, 0x74, 0x5b, 0x6b, 0xaa, 0x32, 0x64, 0xe4, 0xf0, 0xca, 0x90, 0xa9, - 0x42, 0x45, 0x08, 0x81, 0xd1, 0xd0, 0xb0, 0xdd, 0x90, 0x8b, 0x8d, 0x25, 0x9f, 0x48, 0xe9, 0xf8, - 0x6f, 0x53, 0x28, 0xb1, 0x7c, 0xc6, 0x7e, 0x06, 0x58, 0x00, 0xa7, 0x1b, 0x6b, 0x9b, 0xe5, 0xdc, - 0x14, 0x9b, 0xbe, 0xf4, 0xc6, 0xe2, 0x99, 0x3b, 0xf9, 0xc6, 0xe2, 0xff, 0x63, 0x01, 0x19, 0xbd, - 0x4c, 0xe5, 0x7b, 0xf1, 0xa8, 0x5d, 0x1d, 0x34, 0x9d, 0xa0, 0x78, 0xd1, 0x16, 0xfe, 0x04, 0xe2, - 0x29, 0x5b, 0xc2, 0x47, 0xeb, 0x30, 0x26, 0x74, 0x69, 0x22, 0x4a, 0xc7, 0x07, 0x06, 0xc8, 0xa6, - 0x13, 0x25, 0xa3, 0xe5, 0xbe, 0xdd, 0x11, 0x60, 0xfd, 0x3f, 0x8c, 0x73, 0x2d, 0xa8, 0xb0, 0x1b, - 0xda, 0x80, 0x6a, 0x04, 0x6e, 0x10, 0xdf, 0x96, 0x28, 0x7f, 0x19, 0xff, 0x34, 0x99, 0xcd, 0x4c, - 0xc2, 0x46, 0xf5, 0x3c, 0x37, 0xa2, 0x38, 0xb4, 0xf6, 0xe1, 0x5c, 0x88, 0x5e, 0x61, 0x09, 0x87, - 0x22, 0x97, 0xdb, 0xa1, 0xf2, 0x5b, 0x4b, 0xba, 0xe3, 0x26, 0x12, 0x0d, 0x45, 0x1e, 0xbb, 0x0a, - 0x92, 0x02, 0xbb, 0xaa, 0xe1, 0x52, 0x76, 0x55, 0x4f, 0xc3, 0x19, 0xf1, 0x8e, 0xdd, 0xb4, 0x08, - 0x7b, 0x5a, 0x15, 0x66, 0xd7, 0xcc, 0xc2, 0xa1, 0x9e, 0xac, 0xc2, 0xe9, 0xb6, 0xe8, 0xf7, 0x35, - 0xa8, 0x9a, 0x82, 0x9b, 0x10, 0xe7, 0x6a, 0x79, 0x30, 0x55, 0xf9, 0x7c, 0xc4, 0x9c, 0x70, 0x16, - 0xf9, 0xb9, 0x88, 0x46, 0x44, 0xc5, 0xc7, 0xf4, 0xe6, 0x2d, 0x47, 0x8d, 0xfe, 0x88, 0x4a, 0x01, - 0x0e, 0xcb, 0xa9, 0xc6, 0x1c, 0x26, 0xb9, 0x3d, 0xf8, 0xad, 0x01, 0xbf, 0x62, 0x21, 0x86, 0xc8, - 0x3f, 0xe4, 0xc3, 0x92, 0xd7, 0x8f, 0x6b, 0x8e, 0xe9, 0x5b, 0xd4, 0xe1, 0xa3, 0xaf, 0x6a, 0xf0, - 0x30, 0x37, 0xc2, 0xaf, 0x53, 0x06, 0x81, 0xa5, 0xa6, 0x25, 0x71, 0x2e, 0xdc, 0xd8, 0x0a, 0xac, - 0x7a, 0x64, 0x2b, 0xb0, 0x47, 0xf6, 0xf7, 0x6a, 0x0f, 0xd7, 0x0f, 0x01, 0x1b, 0x1f, 0x6a, 0x04, - 0x73, 0x5b, 0x30, 0x95, 0x58, 0xec, 0x93, 0xb4, 0x12, 0x98, 0x73, 0x61, 0x26, 0xbd, 0x26, 0x27, - 0x6a, 0x95, 0x70, 0x13, 0xc6, 0xe5, 0x65, 0x81, 0x1e, 0x54, 0x10, 0xc5, 0x97, 0xf9, 0x4d, 0xb2, - 0xcb, 0xb1, 0xd6, 0x12, 0x62, 0x13, 0x57, 0xfb, 0x3c, 0x47, 0x0b, 0x04, 0x40, 0xfd, 0xdb, 0x42, - 0xa7, 0x77, 0x9b, 0x74, 0xba, 0x8e, 0x11, 0x92, 0xb7, 0xfe, 0x0b, 0x9b, 0xfe, 0x3f, 0x34, 0x4e, - 0xf3, 0x45, 0xfa, 0x6b, 0x03, 0x26, 0x3a, 0x3c, 0xc6, 0x27, 0xf3, 0xd3, 0xd5, 0xca, 0x7b, 0x08, - 0xaf, 0xc4, 0x60, 0xb0, 0x0a, 0x13, 0xdd, 0xcd, 0x26, 0x68, 0xbf, 0x36, 0xd8, 0xe5, 0x7c, 0xe8, - 0x3c, 0xed, 0x28, 0xdb, 0x87, 0x0a, 0x99, 0x91, 0xb1, 0x71, 0x2a, 0x27, 0x76, 0xc6, 0xe0, 0xf8, - 0xc0, 0x4c, 0xa6, 0xfa, 0x37, 0x2a, 0x90, 0x9b, 0x2c, 0x0a, 0xe9, 0x30, 0xca, 0xbd, 0x5f, 0xd4, - 0xcc, 0xf5, 0xdc, 0x35, 0x06, 0x8b, 0x1a, 0x74, 0x8b, 0xeb, 0x18, 0x5c, 0x8b, 0x05, 0xac, 0x8a, - 0x4f, 0xaa, 0xea, 0x67, 0xb5, 0x94, 0xd7, 0x00, 0xe7, 0xf7, 0x43, 0xdb, 0x80, 0x3a, 0xc6, 0x4e, - 0x1a, 0xda, 0x00, 0x49, 0x44, 0x56, 0x32, 0xd0, 0x70, 0x0e, 0x06, 0x7a, 0x99, 0x19, 0xa6, 0x49, - 0xba, 0x21, 0xb1, 0xf8, 0x27, 0x46, 0x4f, 0x0a, 0xec, 0x32, 0x5b, 0x48, 0x56, 0xe1, 0x74, 0x5b, - 0xfd, 0x5f, 0x56, 0x60, 0x84, 0xbd, 0x56, 0xbc, 0x35, 0xcc, 0xf5, 0xd8, 0x50, 0x0b, 0x5f, 0xb0, - 0xdb, 0xa9, 0x17, 0xec, 0x67, 0xca, 0xa3, 0xe8, 0xff, 0x84, 0xfd, 0x61, 0xb8, 0xc8, 0x9a, 0x2d, - 0x58, 0x4c, 0x22, 0x0d, 0x88, 0xb5, 0x60, 0x59, 0xcc, 0x7b, 0xf4, 0x60, 0x0d, 0xdc, 0x83, 0x30, - 0xd4, 0xf3, 0x9d, 0xb4, 0xcb, 0xf3, 0x1d, 0xbc, 0x8c, 0x69, 0xb9, 0xfe, 0xba, 0x06, 0x33, 0x0c, - 0x76, 0xdd, 0x27, 0x8c, 0xe3, 0x30, 0x9c, 0x00, 0x6d, 0x43, 0xd5, 0x17, 0x7a, 0x28, 0xb1, 0x36, - 0xcb, 0xa5, 0x3f, 0x4d, 0x81, 0x8b, 0x05, 0x4c, 0x91, 0x66, 0x4c, 0xfc, 0xc2, 0x12, 0x97, 0xfe, - 0xc3, 0x51, 0x98, 0x2d, 0xea, 0x84, 0xbe, 0xa0, 0xc1, 0x45, 0x33, 0xbe, 0xed, 0x16, 0x7a, 0xe1, - 0xa6, 0xe7, 0xdb, 0xa1, 0x2d, 0x9e, 0xf1, 0x4a, 0x8a, 0x01, 0xf5, 0x05, 0x39, 0x2a, 0x16, 0x50, - 0xa6, 0x9e, 0x8b, 0x01, 0x17, 0x60, 0x46, 0xaf, 0x01, 0x6c, 0xc5, 0x11, 0xec, 0x2a, 0xe5, 0xd3, - 0xbd, 0xb3, 0xcf, 0x56, 0xa2, 0xdc, 0x45, 0x83, 0x62, 0x4a, 0x1d, 0xa5, 0x5c, 0x41, 0xc7, 0x72, - 0xcd, 0x07, 0x9b, 0x37, 0xc9, 0x6e, 0xd7, 0xb0, 0xfd, 0x41, 0x72, 0xcd, 0xf3, 0x3d, 0xd8, 0xba, - 0x21, 0x40, 0x25, 0x91, 0x2b, 0xe5, 0x0a, 0x3a, 0xf4, 0x19, 0x0d, 0xa6, 0x38, 0xb3, 0x2b, 0xcc, - 0xf4, 0x04, 0xf1, 0x59, 0x2d, 0x3d, 0x80, 0x5b, 0x2a, 0x34, 0x39, 0x06, 0xf6, 0xa2, 0x95, 0xac, - 0x4a, 0xe2, 0x45, 0x6f, 0x68, 0x70, 0x36, 0x99, 0xaf, 0xef, 0x26, 0xd9, 0x15, 0x02, 0x2d, 0x2e, - 0x3f, 0x1d, 0x69, 0x88, 0x72, 0x44, 0x4c, 0x70, 0xc9, 0x56, 0x67, 0xc7, 0xc0, 0x46, 0x46, 0x42, - 0xd3, 0x5a, 0x72, 0x4d, 0x7f, 0x97, 0x79, 0xcf, 0xd0, 0x91, 0x8d, 0x0e, 0x38, 0xb2, 0xa5, 0xdb, - 0xf5, 0x46, 0x02, 0x62, 0x72, 0x64, 0xd9, 0xea, 0xec, 0x18, 0xf4, 0x1f, 0x0c, 0xc3, 0xe5, 0xfe, - 0xc0, 0xd0, 0x33, 0x91, 0x3b, 0x08, 0xa7, 0x2d, 0x8f, 0xa6, 0xdd, 0x41, 0x66, 0x73, 0x0e, 0x69, - 0xc2, 0x35, 0xc4, 0x07, 0xe4, 0x18, 0x41, 0x58, 0xf7, 0x3a, 0x5d, 0x87, 0x44, 0x6c, 0x69, 0x99, - 0x58, 0x67, 0xfb, 0x22, 0xf2, 0x58, 0x12, 0x12, 0xce, 0x81, 0x1e, 0xe1, 0xe4, 0x09, 0x79, 0x25, - 0xce, 0xa1, 0xf2, 0x38, 0x93, 0x90, 0x70, 0x0e, 0x74, 0xf4, 0xba, 0x06, 0x73, 0xc9, 0xe2, 0x6b, - 0xb6, 0x6b, 0x07, 0x9b, 0x22, 0x06, 0xde, 0xd1, 0xbd, 0x51, 0x58, 0xd6, 0x87, 0xe5, 0x42, 0x88, - 0xb8, 0x0f, 0x36, 0xf4, 0x39, 0x0d, 0x2e, 0xa5, 0xe6, 0x25, 0x11, 0x91, 0xef, 0xe8, 0x8e, 0x29, - 0xcc, 0x59, 0x7b, 0xb9, 0x18, 0x24, 0xee, 0x87, 0x4f, 0xff, 0x78, 0x05, 0xee, 0x2b, 0xa0, 0x6d, - 0x05, 0x8b, 0xa5, 0x9d, 0xe8, 0x62, 0xfd, 0x08, 0x36, 0x25, 0x33, 0xeb, 0x67, 0x73, 0xf0, 0x16, - 0x31, 0xeb, 0x67, 0x63, 0x2d, 0xb0, 0xa5, 0xf9, 0x03, 0x0d, 0xce, 0x66, 0x42, 0xe8, 0x1d, 0xca, - 0x28, 0xfc, 0xd4, 0xcc, 0x3c, 0xde, 0x11, 0x87, 0xcb, 0x1d, 0x8a, 0x5d, 0x0c, 0xd3, 0xa1, 0x72, - 0xf5, 0xe7, 0x61, 0x2a, 0x61, 0x4a, 0x23, 0xe3, 0x87, 0x68, 0xb9, 0xf1, 0x43, 0xd4, 0xf0, 0x20, - 0x95, 0x7e, 0xe1, 0x41, 0xf4, 0x4f, 0x56, 0x60, 0xae, 0xf8, 0x42, 0xfb, 0x6b, 0xb3, 0xeb, 0xe5, - 0xc9, 0xcf, 0x32, 0x16, 0x7f, 0x6d, 0xe6, 0x40, 0x5e, 0xb3, 0x85, 0xdc, 0xc4, 0xdf, 0x5c, 0xb3, - 0x7f, 0x73, 0xcd, 0x1e, 0xc3, 0x35, 0xfb, 0xd5, 0x33, 0xe2, 0x8a, 0x61, 0x2f, 0x6f, 0x2f, 0xc1, - 0x28, 0x0b, 0xfe, 0x13, 0x49, 0x46, 0x4f, 0x95, 0x0e, 0x2a, 0x14, 0x70, 0x6d, 0x06, 0xff, 0x1f, - 0x0b, 0xa8, 0xa8, 0x01, 0x33, 0xa6, 0xe3, 0xf5, 0x2c, 0x91, 0xd0, 0x71, 0x35, 0x56, 0x9c, 0xc8, - 0x10, 0x8e, 0xf5, 0x54, 0x3d, 0xce, 0xf4, 0x40, 0x98, 0xbf, 0xdd, 0xf1, 0x5d, 0xf3, 0xbe, 0x92, - 0x66, 0xac, 0x3c, 0x51, 0x81, 0x7c, 0xb3, 0x7b, 0x05, 0x80, 0x44, 0x97, 0x45, 0xe4, 0xfd, 0xf8, - 0x74, 0xb9, 0xe0, 0x94, 0xf2, 0xca, 0x89, 0x94, 0x0c, 0xb2, 0x28, 0xc0, 0x0a, 0x12, 0xe4, 0xc3, - 0xc4, 0xa6, 0xbd, 0x4e, 0x7c, 0x37, 0xce, 0x03, 0x5f, 0x52, 0x15, 0x70, 0x23, 0x06, 0xc3, 0xf5, - 0x6c, 0x4a, 0x01, 0x56, 0x91, 0x20, 0x9f, 0x8b, 0x9d, 0xfc, 0x99, 0x64, 0x90, 0x64, 0xf1, 0xf1, - 0xfb, 0x4b, 0xfc, 0x9d, 0x71, 0x19, 0x56, 0xb0, 0x50, 0x9c, 0xae, 0x8c, 0xfc, 0x35, 0xc8, 0xcb, - 0x5b, 0x1c, 0x3f, 0x2c, 0xc6, 0x19, 0x97, 0x61, 0x05, 0x0b, 0x9d, 0xdb, 0x4e, 0x1c, 0xed, 0x4d, - 0xe8, 0xd3, 0x9f, 0x19, 0x30, 0xea, 0x9e, 0xd0, 0x61, 0xc6, 0x05, 0x58, 0x45, 0x82, 0x5c, 0x80, - 0x8e, 0x0c, 0x02, 0x27, 0x1e, 0xe4, 0x4a, 0x7d, 0x67, 0x1c, 0x4a, 0x8e, 0x0b, 0xd2, 0xf1, 0x6f, - 0xac, 0x60, 0x40, 0x2f, 0x2b, 0xcf, 0xbe, 0x50, 0x5e, 0x13, 0x7c, 0xa8, 0x27, 0xdf, 0xf7, 0xc6, - 0x0a, 0xd1, 0x09, 0x76, 0x5e, 0x2f, 0x29, 0xca, 0xd0, 0x7b, 0x7b, 0xb5, 0x49, 0x46, 0x43, 0x32, - 0xca, 0xd1, 0xd8, 0x70, 0x76, 0xb2, 0xaf, 0xe1, 0xec, 0x75, 0x2a, 0x88, 0x2b, 0x8e, 0x2d, 0x8c, - 0x30, 0x4c, 0xb1, 0x2e, 0x32, 0x68, 0x60, 0x2b, 0xdd, 0x00, 0x67, 0xfb, 0x70, 0x66, 0x8b, 0x58, - 0xac, 0xff, 0xb4, 0xca, 0x6c, 0xf1, 0x32, 0x2c, 0x6b, 0xd1, 0x36, 0x4c, 0x06, 0x8a, 0x25, 0xae, - 0xc8, 0x16, 0x38, 0xc0, 0x5b, 0xad, 0xb0, 0xc2, 0x65, 0x21, 0x91, 0xd4, 0x12, 0x9c, 0xc0, 0x83, - 0x5e, 0x83, 0xf1, 0x48, 0x39, 0x1e, 0xcc, 0xce, 0x94, 0x77, 0x43, 0xcd, 0x0f, 0xfc, 0x17, 0x6b, - 0xbb, 0xa3, 0xaa, 0x00, 0xc7, 0xf8, 0x50, 0x2f, 0x19, 0x82, 0xe2, 0xec, 0xb1, 0xb8, 0xdd, 0x4b, - 0x4b, 0xb9, 0xa2, 0xf0, 0x13, 0xa8, 0x0e, 0x67, 0xc9, 0x4e, 0xd7, 0x0b, 0x7a, 0x3e, 0x61, 0x31, - 0x47, 0xd9, 0xf2, 0xa0, 0xf8, 0x31, 0x77, 0x29, 0x5d, 0x89, 0xb3, 0xed, 0xd1, 0xa7, 0x35, 0x98, - 0xe1, 0xc9, 0x16, 0xe9, 0x5d, 0xe6, 0xb9, 0xc4, 0x0d, 0x03, 0x96, 0x4d, 0xb0, 0xa4, 0xa7, 0x68, - 0x2b, 0x05, 0x8b, 0xa7, 0xc7, 0x49, 0x97, 0xe2, 0x0c, 0x4e, 0xba, 0x73, 0x54, 0xc7, 0x7d, 0x96, - 0x94, 0xb0, 0xe4, 0xce, 0x51, 0x83, 0x02, 0xf0, 0x9d, 0xa3, 0x96, 0xe0, 0x04, 0x1e, 0xfd, 0x3f, - 0x6a, 0x00, 0x52, 0xe9, 0x7b, 0x1a, 0xcf, 0x4c, 0x56, 0x42, 0x0f, 0xbe, 0x38, 0x90, 0x92, 0x9a, - 0x14, 0x3e, 0x36, 0xfd, 0x89, 0x06, 0xd3, 0x71, 0xb3, 0x53, 0x90, 0x74, 0xcd, 0xa4, 0xa4, 0xfb, - 0xc1, 0xc1, 0xbe, 0xab, 0x40, 0xdc, 0xfd, 0x7f, 0x15, 0xf5, 0xab, 0x18, 0x73, 0xb5, 0x9d, 0x30, - 0x9d, 0xa0, 0xa8, 0x6f, 0x0c, 0x62, 0x3a, 0xa1, 0xfa, 0x04, 0xc7, 0xdf, 0x9b, 0x63, 0x4a, 0xf1, - 0xf7, 0x12, 0xac, 0xcd, 0x00, 0x9e, 0xef, 0x92, 0x8f, 0x89, 0x50, 0xf3, 0x09, 0x38, 0x88, 0xcf, - 0x79, 0x45, 0xa5, 0x78, 0xdc, 0x08, 0xe3, 0x43, 0xe5, 0xdc, 0xad, 0x95, 0x0f, 0xee, 0x4b, 0xe7, - 0xf4, 0x6f, 0x4d, 0xc1, 0x84, 0xf2, 0x3e, 0x92, 0x32, 0x04, 0xd1, 0x4e, 0xc3, 0x10, 0x24, 0x84, - 0x09, 0x53, 0x86, 0xe2, 0x8e, 0xa6, 0x7d, 0x40, 0x9c, 0x92, 0xd2, 0xc6, 0x41, 0xbe, 0x03, 0xac, - 0xa2, 0xa1, 0x3c, 0x81, 0xdc, 0x63, 0x43, 0xc7, 0x60, 0x9e, 0xd3, 0x6f, 0x5f, 0x3d, 0x01, 0x10, - 0xb1, 0x96, 0xc4, 0x12, 0x01, 0x1a, 0x65, 0x0a, 0x9b, 0x66, 0x70, 0x43, 0xd6, 0x61, 0xa5, 0x1d, - 0x7a, 0x15, 0xa6, 0x1c, 0x35, 0xa7, 0x83, 0xe0, 0x7b, 0x4b, 0x79, 0x34, 0x25, 0x92, 0x43, 0x70, - 0x85, 0x7f, 0xa2, 0x08, 0x27, 0x51, 0xd1, 0x6d, 0xe0, 0x44, 0xf9, 0x5a, 0x06, 0x32, 0x35, 0x93, - 0x59, 0x5f, 0xe2, 0x6d, 0x20, 0x8b, 0x02, 0xac, 0x20, 0x29, 0xb0, 0x07, 0x1a, 0x2b, 0x65, 0x0f, - 0xd4, 0x83, 0x73, 0x3e, 0x09, 0xfd, 0xdd, 0xfa, 0xae, 0xc9, 0xd2, 0x18, 0xf9, 0x21, 0x13, 0x19, - 0xab, 0xe5, 0x42, 0x26, 0xe1, 0x2c, 0x28, 0x9c, 0x07, 0x3f, 0xc1, 0x53, 0x8d, 0xf7, 0xe5, 0xa9, - 0xde, 0x0b, 0x13, 0x21, 0x31, 0x37, 0x5d, 0xdb, 0x34, 0x9c, 0x66, 0x43, 0x44, 0x2f, 0x8c, 0xd9, - 0x83, 0xb8, 0x0a, 0xab, 0xed, 0xd0, 0x22, 0x0c, 0xf5, 0x6c, 0x4b, 0x30, 0x96, 0x3f, 0x2e, 0x5f, - 0x1a, 0x9b, 0x8d, 0x7b, 0x7b, 0xb5, 0xb7, 0xc7, 0x06, 0x36, 0xf2, 0xab, 0xae, 0x76, 0xb7, 0xda, - 0x57, 0xc3, 0xdd, 0x2e, 0x09, 0xe6, 0xef, 0x34, 0x1b, 0x98, 0x76, 0xce, 0xb3, 0x95, 0x9a, 0x3c, - 0x82, 0xad, 0xd4, 0x17, 0x35, 0x38, 0x67, 0xa4, 0x1f, 0x49, 0x49, 0x30, 0x3b, 0x55, 0x9e, 0x5a, - 0xe6, 0x3f, 0xbc, 0xc6, 0x91, 0xab, 0x17, 0xb2, 0xe8, 0x70, 0xde, 0x18, 0x90, 0x0f, 0xa8, 0x63, - 0xb7, 0x65, 0xea, 0x14, 0xb1, 0xea, 0xd3, 0xe5, 0x74, 0x26, 0x2b, 0x19, 0x48, 0x38, 0x07, 0x3a, - 0xba, 0x0b, 0x13, 0x66, 0xac, 0x3e, 0x12, 0xcc, 0x71, 0xe3, 0x38, 0xde, 0x72, 0xb9, 0x10, 0xa5, - 0xea, 0xa6, 0x54, 0x4c, 0x52, 0x59, 0xa3, 0x48, 0xb0, 0x42, 0x61, 0xc1, 0xbe, 0x7a, 0xa6, 0xbc, - 0xb2, 0x26, 0x1f, 0x22, 0xee, 0x83, 0x8d, 0x05, 0x2a, 0x72, 0x92, 0x19, 0x8e, 0x58, 0x7e, 0xed, - 0x92, 0x2e, 0xca, 0xa9, 0x64, 0x49, 0x7c, 0x6b, 0xa6, 0x0a, 0x71, 0x1a, 0xa1, 0xfe, 0x1d, 0x4d, - 0xe8, 0x9b, 0x4f, 0xd1, 0xc0, 0xe8, 0xa4, 0x2d, 0x20, 0xf4, 0xbf, 0xd0, 0x20, 0xc3, 0x6a, 0xa3, - 0x75, 0x18, 0xa3, 0x20, 0x1a, 0xab, 0x2d, 0xf1, 0x59, 0x1f, 0x28, 0x77, 0x5d, 0x32, 0x10, 0x5c, - 0x79, 0x2f, 0x7e, 0xe0, 0x08, 0x30, 0x65, 0xde, 0x5d, 0x25, 0x80, 0xb2, 0xf8, 0xc2, 0x52, 0xfc, - 0x88, 0x1a, 0x88, 0x99, 0x33, 0xef, 0x6a, 0x09, 0x4e, 0xe0, 0xd1, 0x97, 0x01, 0x62, 0xf1, 0x68, - 0x60, 0x9b, 0xb3, 0x1f, 0x8c, 0xc0, 0x85, 0x41, 0xdd, 0x63, 0x58, 0x62, 0x1d, 0xb2, 0x6d, 0x9b, - 0xe1, 0xc2, 0x46, 0x48, 0xfc, 0x5b, 0xb7, 0x56, 0x64, 0x26, 0xf8, 0x92, 0x99, 0x7d, 0x98, 0x1d, - 0xc4, 0x52, 0x2e, 0x44, 0x5c, 0x80, 0x89, 0x89, 0x86, 0x22, 0xd1, 0x2f, 0xa6, 0xcc, 0x24, 0x4b, - 0xf3, 0xce, 0xc3, 0xb4, 0x70, 0xd1, 0x30, 0x5d, 0x89, 0xb3, 0xed, 0xd3, 0x40, 0x96, 0xed, 0x8e, - 0xcd, 0x73, 0xa7, 0x68, 0x59, 0x20, 0xac, 0x12, 0x67, 0xdb, 0xab, 0x40, 0xf8, 0x4a, 0xd1, 0xd3, - 0x3e, 0x92, 0x05, 0x22, 0x2b, 0x71, 0xb6, 0x3d, 0xb2, 0xe0, 0x01, 0x9f, 0x98, 0x5e, 0xa7, 0x43, - 0x5c, 0x8b, 0xe7, 0xac, 0x33, 0xfc, 0xb6, 0xed, 0x5e, 0xf3, 0x0d, 0xd6, 0x90, 0x69, 0xdc, 0xb4, - 0xc5, 0x2b, 0xfb, 0x7b, 0xb5, 0x07, 0x70, 0x9f, 0x76, 0xb8, 0x2f, 0x14, 0xd4, 0x81, 0x33, 0x3d, - 0x96, 0x6d, 0xc1, 0x6f, 0xba, 0x21, 0xf1, 0xb7, 0x0d, 0x47, 0xa8, 0xd5, 0x4a, 0x25, 0xeb, 0xbd, - 0x93, 0x04, 0x85, 0xd3, 0xb0, 0xd1, 0x2e, 0xe5, 0x3b, 0xc4, 0x70, 0x14, 0x94, 0xd5, 0xf2, 0xa9, - 0xa7, 0x70, 0x16, 0x1c, 0xce, 0xc3, 0xa1, 0x7f, 0x51, 0x03, 0x61, 0x60, 0x8f, 0x1e, 0x48, 0x3c, - 0x15, 0x56, 0x53, 0xcf, 0x84, 0x0f, 0x08, 0x7f, 0xf1, 0x4a, 0x5c, 0xab, 0xf8, 0x8a, 0xbf, 0x53, - 0x89, 0xff, 0x33, 0x1e, 0xd3, 0x3e, 0x0e, 0x59, 0xc9, 0x57, 0xf2, 0x2e, 0x18, 0x27, 0xdc, 0xa6, - 0x41, 0x72, 0xb4, 0xcc, 0x69, 0x61, 0x29, 0x2a, 0xc4, 0x71, 0xbd, 0xfe, 0xc7, 0x1a, 0x08, 0x08, - 0x2c, 0xbb, 0xce, 0xa1, 0xb2, 0xac, 0x1c, 0x68, 0x2d, 0xa8, 0x64, 0x87, 0x19, 0x2a, 0xcc, 0x0e, - 0x73, 0x42, 0x49, 0x53, 0xbe, 0xae, 0xc1, 0x99, 0x64, 0x40, 0xa6, 0x00, 0xbd, 0x03, 0xc6, 0x44, - 0xc8, 0x46, 0x11, 0x73, 0x8d, 0xc7, 0x96, 0xe0, 0x45, 0x38, 0xaa, 0x4b, 0x6a, 0xb5, 0x06, 0x10, - 0x31, 0xf3, 0xe3, 0x42, 0x1d, 0x20, 0xed, 0xfd, 0xe9, 0x34, 0x8c, 0xf2, 0x78, 0x7f, 0x94, 0xa6, - 0xe5, 0xf8, 0x19, 0xdf, 0x2c, 0x1f, 0x56, 0xb0, 0x8c, 0x63, 0xa8, 0x1a, 0x58, 0xbe, 0xd2, 0x37, - 0xb0, 0x3c, 0xe6, 0xc9, 0xa8, 0x06, 0x78, 0xc9, 0xa8, 0xe3, 0xa6, 0xc8, 0x41, 0x1d, 0x25, 0xa2, - 0x0a, 0x13, 0x2a, 0xfe, 0xe1, 0xf2, 0x9c, 0x1b, 0x9f, 0x00, 0x45, 0xd1, 0x3f, 0xdd, 0x47, 0xc9, - 0x1f, 0x07, 0x54, 0x1b, 0x29, 0x6f, 0xbd, 0x2b, 0xa6, 0xfc, 0x10, 0x01, 0xd5, 0xe4, 0x41, 0x1a, - 0x2d, 0x3c, 0x48, 0x1b, 0x30, 0x26, 0x8e, 0x82, 0x20, 0x8e, 0x1f, 0x18, 0x20, 0xab, 0x93, 0x12, - 0x03, 0x98, 0x17, 0xe0, 0x08, 0x38, 0xbd, 0x71, 0x3b, 0xc6, 0x8e, 0xdd, 0xe9, 0x75, 0x18, 0x45, - 0x1c, 0x51, 0x9b, 0xb2, 0x62, 0x1c, 0xd5, 0xb3, 0xa6, 0xdc, 0xe8, 0x99, 0x09, 0x52, 0x6a, 0x53, - 0x5e, 0x8c, 0xa3, 0x7a, 0xf4, 0x22, 0x54, 0x3b, 0xc6, 0x4e, 0xab, 0xe7, 0xb7, 0x89, 0x50, 0xee, - 0x17, 0xf3, 0x78, 0xbd, 0xd0, 0x76, 0xe6, 0xa9, 0xf8, 0x1f, 0xfa, 0xf3, 0x4d, 0x37, 0xbc, 0xe5, - 0xb7, 0x42, 0x5f, 0xe6, 0x8d, 0x59, 0x11, 0x50, 0xb0, 0x84, 0x87, 0x1c, 0x98, 0xee, 0x18, 0x3b, - 0x77, 0x5c, 0x43, 0xa6, 0x7a, 0x9f, 0x28, 0x89, 0x81, 0x59, 0x55, 0xac, 0x24, 0x60, 0xe1, 0x14, - 0xec, 0x1c, 0x03, 0x8e, 0xc9, 0x93, 0x32, 0xe0, 0x58, 0x90, 0x6e, 0x64, 0x5c, 0x6e, 0xbb, 0x3f, - 0xcf, 0x2b, 0xad, 0xbf, 0x8b, 0xd8, 0x4b, 0xd2, 0x45, 0x6c, 0xba, 0xfc, 0x0b, 0x68, 0x1f, 0xf7, - 0xb0, 0x1e, 0x4c, 0x50, 0x0e, 0x9b, 0x97, 0x52, 0xc1, 0xaa, 0xb4, 0x0a, 0xb2, 0x21, 0xc1, 0x28, - 0xa9, 0x43, 0x63, 0xd0, 0x58, 0xc5, 0x83, 0x6e, 0xf1, 0x54, 0xe0, 0x0e, 0x09, 0xe3, 0x26, 0x4c, - 0xa0, 0x9f, 0xe1, 0x8f, 0x2c, 0x51, 0xe6, 0xee, 0x4c, 0x03, 0x9c, 0xdf, 0x2f, 0x0e, 0x75, 0x72, - 0x36, 0x3f, 0xd4, 0x09, 0xfa, 0xc5, 0x3c, 0x75, 0x3d, 0x2a, 0xef, 0xf2, 0xca, 0x69, 0x43, 0x69, - 0xa5, 0xfd, 0xef, 0x68, 0x30, 0xdb, 0x29, 0xc8, 0xb1, 0x29, 0x5e, 0x11, 0x6e, 0x0f, 0x40, 0x1f, - 0x0a, 0xf3, 0x76, 0x2e, 0x3e, 0xbc, 0xbf, 0x57, 0x3b, 0x30, 0xbb, 0x27, 0x2e, 0x1c, 0xdb, 0xa0, - 0xce, 0xfd, 0x83, 0x44, 0x9e, 0xfc, 0x75, 0x0d, 0x66, 0xd2, 0x97, 0x80, 0x9a, 0xbd, 0x5c, 0x3b, - 0xd9, 0xec, 0xe5, 0x8a, 0x39, 0x56, 0xa5, 0x8f, 0x39, 0xd6, 0xd3, 0x70, 0x31, 0x7f, 0x6f, 0x50, - 0x8e, 0xcc, 0x70, 0x1c, 0xef, 0xae, 0x90, 0x84, 0xe2, 0x34, 0x47, 0xb4, 0x10, 0xf3, 0x3a, 0xfd, - 0xa3, 0x90, 0x8e, 0x15, 0x8c, 0x5e, 0x86, 0xf1, 0x20, 0xd8, 0xe4, 0x61, 0x20, 0xc5, 0x47, 0x96, - 0x13, 0x81, 0xa3, 0x58, 0x92, 0xc2, 0xf3, 0x35, 0xfa, 0x89, 0x63, 0xf0, 0x8b, 0x2f, 0x7c, 0xf3, - 0xfb, 0x97, 0xdf, 0xf6, 0xed, 0xef, 0x5f, 0x7e, 0xdb, 0x77, 0xbf, 0x7f, 0xf9, 0x6d, 0x3f, 0xb7, - 0x7f, 0x59, 0xfb, 0xe6, 0xfe, 0x65, 0xed, 0xdb, 0xfb, 0x97, 0xb5, 0xef, 0xee, 0x5f, 0xd6, 0xfe, - 0xeb, 0xfe, 0x65, 0xed, 0xf3, 0xff, 0xed, 0xf2, 0xdb, 0x5e, 0x7c, 0x3c, 0xc6, 0x7e, 0x35, 0x42, - 0x1a, 0xff, 0xd3, 0xdd, 0x6a, 0x5f, 0xa5, 0xd8, 0x23, 0x0f, 0x34, 0x86, 0xfd, 0xff, 0x07, 0x00, - 0x00, 0xff, 0xff, 0x01, 0xc2, 0xb9, 0xda, 0x08, 0xe1, 0x00, 0x00, + // 11566 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x6c, 0x24, 0xc9, + 0x75, 0x98, 0x7a, 0xf8, 0x35, 0x7c, 0xfc, 0x58, 0x6e, 0xed, 0xc7, 0x71, 0xf7, 0xee, 0x76, 0x56, + 0x7d, 0x27, 0xe5, 0x2e, 0x92, 0xb9, 0xbe, 0xd3, 0xc9, 0xd2, 0x9d, 0x74, 0x3a, 0x91, 0x33, 0xdc, + 0xdd, 0xd1, 0x92, 0x5c, 0x5e, 0x0d, 0xf7, 0xee, 0x74, 0x72, 0x2e, 0x6a, 0x76, 0x17, 0x87, 0x7d, + 0xec, 0xe9, 0x9e, 0xeb, 0xee, 0xe1, 0x92, 0x77, 0x52, 0x64, 0x29, 0xfa, 0xb0, 0x64, 0xcb, 0x10, + 0x04, 0x38, 0x82, 0x24, 0x27, 0x96, 0x61, 0x38, 0x76, 0x90, 0x40, 0x76, 0x3e, 0x64, 0xc0, 0x31, + 0x12, 0x18, 0x02, 0x02, 0x4b, 0x86, 0x62, 0x28, 0x72, 0x8c, 0x28, 0x40, 0x44, 0x45, 0x8c, 0x23, + 0x07, 0x48, 0x60, 0x04, 0x30, 0x82, 0x00, 0x1b, 0xff, 0x08, 0xea, 0xa3, 0xab, 0xab, 0xbf, 0x86, + 0x64, 0x0f, 0x49, 0xdd, 0xc1, 0xfe, 0x45, 0x4e, 0xbd, 0xaa, 0xf7, 0xaa, 0xeb, 0xe3, 0xd5, 0x7b, + 0xaf, 0x5e, 0xbd, 0x07, 0x0b, 0x6d, 0x3b, 0xdc, 0xec, 0xad, 0xcf, 0x99, 0x5e, 0xe7, 0x5a, 0xdb, + 0xf0, 0x2d, 0xe2, 0x12, 0x3f, 0xfe, 0xa7, 0xbb, 0xd5, 0xbe, 0x66, 0x74, 0xed, 0xe0, 0x9a, 0xe9, + 0xf9, 0xe4, 0xda, 0xf6, 0x63, 0xeb, 0x24, 0x34, 0x1e, 0xbb, 0xd6, 0xa6, 0x30, 0x23, 0x24, 0xd6, + 0x5c, 0xd7, 0xf7, 0x42, 0x0f, 0x3d, 0x1e, 0xe3, 0x98, 0x8b, 0x9a, 0xc6, 0xff, 0x74, 0xb7, 0xda, + 0x73, 0x14, 0xc7, 0x1c, 0xc5, 0x31, 0x27, 0x70, 0x5c, 0xfe, 0x29, 0x95, 0xae, 0xd7, 0xf6, 0xae, + 0x31, 0x54, 0xeb, 0xbd, 0x0d, 0xf6, 0x8b, 0xfd, 0x60, 0xff, 0x71, 0x12, 0x97, 0x1f, 0xdd, 0x7a, + 0x77, 0x30, 0x67, 0x7b, 0xb4, 0x33, 0xd7, 0x8c, 0x5e, 0xe8, 0x05, 0xa6, 0xe1, 0xd8, 0x6e, 0xfb, + 0xda, 0x76, 0xa6, 0x37, 0x97, 0x75, 0xa5, 0xaa, 0xe8, 0x76, 0xdf, 0x3a, 0xfe, 0xba, 0x61, 0xe6, + 0xd5, 0x79, 0x22, 0xae, 0xd3, 0x31, 0xcc, 0x4d, 0xdb, 0x25, 0xfe, 0x6e, 0x34, 0x20, 0xd7, 0x7c, + 0x12, 0x78, 0x3d, 0xdf, 0x24, 0x47, 0x6a, 0x15, 0x5c, 0xeb, 0x90, 0xd0, 0xc8, 0xa3, 0x75, 0xad, + 0xa8, 0x95, 0xdf, 0x73, 0x43, 0xbb, 0x93, 0x25, 0xf3, 0x33, 0x07, 0x35, 0x08, 0xcc, 0x4d, 0xd2, + 0x31, 0x32, 0xed, 0xde, 0x51, 0xd4, 0xae, 0x17, 0xda, 0xce, 0x35, 0xdb, 0x0d, 0x83, 0xd0, 0x4f, + 0x37, 0xd2, 0x1f, 0x87, 0x91, 0x79, 0xcb, 0xf2, 0x5c, 0xf4, 0x28, 0x8c, 0x11, 0xd7, 0x58, 0x77, + 0x88, 0x35, 0xab, 0x5d, 0xd5, 0x1e, 0xa9, 0x2e, 0x9c, 0xf9, 0xd6, 0x5e, 0xed, 0x4d, 0xfb, 0x7b, + 0xb5, 0xb1, 0x45, 0x5e, 0x8c, 0x23, 0xb8, 0xfe, 0xcb, 0x15, 0x18, 0x65, 0x8d, 0x02, 0xf4, 0x45, + 0x0d, 0xce, 0x6d, 0xf5, 0xd6, 0x89, 0xef, 0x92, 0x90, 0x04, 0x0d, 0x23, 0xd8, 0x5c, 0xf7, 0x0c, + 0x9f, 0xa3, 0x98, 0x78, 0xfc, 0xc6, 0xdc, 0xd1, 0x57, 0xcf, 0xdc, 0xad, 0x2c, 0xba, 0x85, 0xfb, + 0xf6, 0xf7, 0x6a, 0xe7, 0x72, 0x00, 0x38, 0x8f, 0x38, 0xda, 0x86, 0x49, 0xb7, 0x6d, 0xbb, 0x3b, + 0x4d, 0xb7, 0xed, 0x93, 0x20, 0x98, 0xad, 0xb0, 0xce, 0xbc, 0xbf, 0x4c, 0x67, 0x56, 0x14, 0x3c, + 0x0b, 0x33, 0xfb, 0x7b, 0xb5, 0x49, 0xb5, 0x04, 0x27, 0xe8, 0xe8, 0xbf, 0xa3, 0xc1, 0x99, 0x79, + 0xab, 0x63, 0x07, 0x81, 0xed, 0xb9, 0xab, 0x4e, 0xaf, 0x6d, 0xbb, 0xe8, 0x2a, 0x0c, 0xbb, 0x46, + 0x87, 0xb0, 0x01, 0x19, 0x5f, 0x98, 0x14, 0x63, 0x3a, 0xbc, 0x62, 0x74, 0x08, 0x66, 0x10, 0xf4, + 0x2c, 0x8c, 0x9a, 0x9e, 0xbb, 0x61, 0xb7, 0x45, 0x3f, 0x7f, 0x6a, 0x8e, 0xcf, 0xe3, 0x9c, 0x3a, + 0x8f, 0xac, 0x7b, 0x62, 0xfe, 0xe7, 0xb0, 0x71, 0x77, 0x71, 0x27, 0x24, 0x2e, 0x25, 0xb3, 0x00, + 0xfb, 0x7b, 0xb5, 0xd1, 0x3a, 0x43, 0x80, 0x05, 0x22, 0xf4, 0x08, 0x54, 0x2d, 0x3b, 0xe0, 0x93, + 0x39, 0xc4, 0x26, 0x73, 0x72, 0x7f, 0xaf, 0x56, 0x6d, 0x88, 0x32, 0x2c, 0xa1, 0xfa, 0x75, 0xa8, + 0xce, 0x3b, 0xc4, 0x0f, 0x6d, 0xb7, 0x8d, 0x9e, 0x82, 0x69, 0xd2, 0x31, 0x6c, 0x07, 0x13, 0x93, + 0xd8, 0xdb, 0xc4, 0x0f, 0x66, 0xb5, 0xab, 0x43, 0x8f, 0x8c, 0x2f, 0xa0, 0xfd, 0xbd, 0xda, 0xf4, + 0x62, 0x02, 0x82, 0x53, 0x35, 0xf5, 0x8f, 0x6b, 0x30, 0x31, 0xdf, 0xb3, 0xec, 0x90, 0xf7, 0x04, + 0xf9, 0x30, 0x61, 0xd0, 0x9f, 0xab, 0x9e, 0x63, 0x9b, 0xbb, 0x62, 0x39, 0x3c, 0x53, 0x66, 0x06, + 0xe6, 0x63, 0x34, 0x0b, 0x67, 0xf6, 0xf7, 0x6a, 0x13, 0x4a, 0x01, 0x56, 0x89, 0xe8, 0x9b, 0xa0, + 0xc2, 0xd0, 0x07, 0x61, 0x92, 0x0f, 0xc7, 0xb2, 0xd1, 0xc5, 0x64, 0x43, 0xf4, 0xe1, 0x21, 0x65, + 0x74, 0x23, 0x42, 0x73, 0xb7, 0xd7, 0x5f, 0x26, 0x66, 0x88, 0xc9, 0x06, 0xf1, 0x89, 0x6b, 0x12, + 0x3e, 0xd1, 0x75, 0xa5, 0x31, 0x4e, 0xa0, 0xd2, 0x7f, 0xa8, 0xc1, 0xcc, 0xfc, 0xb6, 0x61, 0x3b, + 0xc6, 0xba, 0xed, 0xd8, 0xe1, 0xee, 0x8b, 0x9e, 0x4b, 0x0e, 0x31, 0xd3, 0x77, 0xe0, 0xbe, 0x9e, + 0x6b, 0xf0, 0x76, 0x0e, 0x59, 0xe6, 0x73, 0xbb, 0xb6, 0xdb, 0x25, 0x74, 0x89, 0xd2, 0x91, 0xbe, + 0x7f, 0x7f, 0xaf, 0x76, 0xdf, 0x9d, 0xfc, 0x2a, 0xb8, 0xa8, 0x2d, 0xc2, 0x70, 0x51, 0x01, 0x3d, + 0xe7, 0x39, 0xbd, 0x8e, 0xc0, 0x3a, 0xc4, 0xb0, 0x5e, 0xde, 0xdf, 0xab, 0x5d, 0xbc, 0x93, 0x5b, + 0x03, 0x17, 0xb4, 0xd4, 0xbf, 0x55, 0x81, 0xc9, 0x05, 0xc3, 0xdc, 0xea, 0x75, 0x17, 0x7a, 0xe6, + 0x16, 0x09, 0xd1, 0x87, 0xa1, 0x4a, 0x19, 0x9c, 0x65, 0x84, 0x86, 0x18, 0xc9, 0x9f, 0x2e, 0x5c, + 0xa7, 0x6c, 0x12, 0x69, 0xed, 0x78, 0x6c, 0x97, 0x49, 0x68, 0x2c, 0x20, 0x31, 0x26, 0x10, 0x97, + 0x61, 0x89, 0x15, 0x6d, 0xc0, 0x70, 0xd0, 0x25, 0xa6, 0xd8, 0x05, 0x8d, 0x32, 0x6b, 0x45, 0xed, + 0x71, 0xab, 0x4b, 0xcc, 0x78, 0x16, 0xe8, 0x2f, 0xcc, 0xf0, 0x23, 0x17, 0x46, 0x83, 0xd0, 0x08, + 0x7b, 0x01, 0xdb, 0x1a, 0x13, 0x8f, 0x5f, 0x1f, 0x98, 0x12, 0xc3, 0xb6, 0x30, 0x2d, 0x68, 0x8d, + 0xf2, 0xdf, 0x58, 0x50, 0xd1, 0xff, 0x93, 0x06, 0x33, 0x6a, 0xf5, 0x25, 0x3b, 0x08, 0xd1, 0xcf, + 0x66, 0x86, 0x73, 0xee, 0x70, 0xc3, 0x49, 0x5b, 0xb3, 0xc1, 0x9c, 0x11, 0xe4, 0xaa, 0x51, 0x89, + 0x32, 0x94, 0x04, 0x46, 0xec, 0x90, 0x74, 0xf8, 0xb2, 0x2a, 0xc9, 0xf9, 0xd4, 0x2e, 0x2f, 0x4c, + 0x09, 0x62, 0x23, 0x4d, 0x8a, 0x16, 0x73, 0xec, 0xfa, 0x87, 0xe1, 0xbc, 0x5a, 0x6b, 0xd5, 0xf7, + 0xb6, 0x6d, 0x8b, 0xf8, 0x74, 0x27, 0x84, 0xbb, 0xdd, 0xcc, 0x4e, 0xa0, 0x2b, 0x0b, 0x33, 0x08, + 0x7a, 0x2b, 0x8c, 0xfa, 0xa4, 0x6d, 0x7b, 0x2e, 0x9b, 0xed, 0xf1, 0x78, 0xec, 0x30, 0x2b, 0xc5, + 0x02, 0xaa, 0xff, 0x9f, 0x4a, 0x72, 0xec, 0xe8, 0x34, 0xa2, 0x6d, 0xa8, 0x76, 0x05, 0x29, 0x31, + 0x76, 0x37, 0x07, 0xfd, 0xc0, 0xa8, 0xeb, 0xf1, 0xa8, 0x46, 0x25, 0x58, 0xd2, 0x42, 0x36, 0x4c, + 0x47, 0xff, 0xd7, 0x07, 0x60, 0xd8, 0x8c, 0x9d, 0xae, 0x26, 0x10, 0xe1, 0x14, 0x62, 0xb4, 0x06, + 0xe3, 0x01, 0x31, 0x7d, 0x42, 0x79, 0x92, 0x58, 0xa6, 0xb9, 0x8c, 0xab, 0x15, 0x55, 0x12, 0x8c, + 0xeb, 0xac, 0xe8, 0xfe, 0xb8, 0x04, 0xe0, 0x18, 0x11, 0x3d, 0x16, 0x02, 0x42, 0x2c, 0xca, 0x91, + 0x66, 0x87, 0xf9, 0xdc, 0xd0, 0x4f, 0x6d, 0x89, 0x32, 0x2c, 0xa1, 0xfa, 0xd7, 0x86, 0x01, 0x65, + 0x97, 0xb8, 0x3a, 0x02, 0xbc, 0x44, 0x8c, 0xff, 0x20, 0x23, 0x20, 0x76, 0x4b, 0x0a, 0x31, 0x7a, + 0x15, 0xa6, 0x1c, 0x23, 0x08, 0x6f, 0x77, 0xa9, 0xb4, 0x12, 0x2d, 0x94, 0x89, 0xc7, 0xe7, 0xcb, + 0xcc, 0xf4, 0x92, 0x8a, 0x68, 0xe1, 0xec, 0xfe, 0x5e, 0x6d, 0x2a, 0x51, 0x84, 0x93, 0xa4, 0xd0, + 0xcb, 0x30, 0x4e, 0x0b, 0x16, 0x7d, 0xdf, 0xf3, 0xc5, 0xe8, 0x3f, 0x5d, 0x96, 0x2e, 0x43, 0xb2, + 0x30, 0x45, 0xe7, 0x44, 0xfe, 0xc4, 0x31, 0x7a, 0xf4, 0x01, 0x40, 0xde, 0x7a, 0x40, 0xfc, 0x6d, + 0x62, 0xdd, 0xe0, 0xa2, 0x19, 0xfd, 0x58, 0x3a, 0x3b, 0x43, 0x0b, 0x97, 0xc5, 0x6c, 0xa2, 0xdb, + 0x99, 0x1a, 0x38, 0xa7, 0x15, 0xda, 0x02, 0x24, 0xc5, 0x3b, 0xb9, 0x00, 0x66, 0x47, 0x0e, 0xbf, + 0x7c, 0x2e, 0x52, 0x62, 0x37, 0x32, 0x28, 0x70, 0x0e, 0x5a, 0xfd, 0xdf, 0x55, 0x60, 0x82, 0x2f, + 0x91, 0x45, 0x37, 0xf4, 0x77, 0x4f, 0xe1, 0x80, 0x20, 0x89, 0x03, 0xa2, 0x5e, 0x7e, 0xcf, 0xb3, + 0x0e, 0x17, 0x9e, 0x0f, 0x9d, 0xd4, 0xf9, 0xb0, 0x38, 0x28, 0xa1, 0xfe, 0xc7, 0xc3, 0x9f, 0x6a, + 0x70, 0x46, 0xa9, 0x7d, 0x0a, 0xa7, 0x83, 0x95, 0x3c, 0x1d, 0x9e, 0x19, 0xf0, 0xfb, 0x0a, 0x0e, + 0x07, 0x2f, 0xf1, 0x59, 0x8c, 0x71, 0x3f, 0x0e, 0xb0, 0xce, 0xd8, 0xc9, 0x4a, 0x2c, 0x27, 0xc9, + 0x29, 0x5f, 0x90, 0x10, 0xac, 0xd4, 0x4a, 0xf0, 0xac, 0x4a, 0x5f, 0x9e, 0xf5, 0xdf, 0x87, 0xe0, + 0x6c, 0x66, 0xd8, 0xb3, 0x7c, 0x44, 0xfb, 0x09, 0xf1, 0x91, 0xca, 0x4f, 0x82, 0x8f, 0x0c, 0x95, + 0xe2, 0x23, 0x87, 0x3e, 0x27, 0x90, 0x0f, 0xa8, 0x63, 0xb7, 0x79, 0xb3, 0x56, 0x68, 0xf8, 0xe1, + 0x9a, 0xdd, 0x21, 0x82, 0xe3, 0xfc, 0xed, 0xc3, 0x2d, 0x59, 0xda, 0x82, 0x33, 0x9e, 0xe5, 0x0c, + 0x26, 0x9c, 0x83, 0x5d, 0xff, 0xde, 0x30, 0x40, 0x7d, 0x1e, 0x7b, 0x21, 0xef, 0xec, 0x33, 0x30, + 0xd2, 0xdd, 0x34, 0x82, 0x68, 0x3d, 0x3d, 0x1a, 0x2d, 0xc6, 0x55, 0x5a, 0x78, 0x6f, 0xaf, 0x36, + 0x5b, 0xf7, 0x89, 0x45, 0xdc, 0xd0, 0x36, 0x9c, 0x20, 0x6a, 0xc4, 0x60, 0x98, 0xb7, 0xa3, 0xdf, + 0x40, 0x87, 0xb1, 0xee, 0x75, 0xba, 0x0e, 0xa1, 0x50, 0xf6, 0x0d, 0x95, 0x72, 0xdf, 0xb0, 0x94, + 0xc1, 0x84, 0x73, 0xb0, 0x47, 0x34, 0x9b, 0xae, 0x1d, 0xda, 0x86, 0xa4, 0x39, 0x54, 0x9e, 0x66, + 0x12, 0x13, 0xce, 0xc1, 0x8e, 0x3e, 0xa7, 0xc1, 0xe5, 0x64, 0xf1, 0x75, 0xdb, 0xb5, 0x83, 0x4d, + 0x62, 0x31, 0xe2, 0xc3, 0x47, 0x26, 0x7e, 0x65, 0x7f, 0xaf, 0x76, 0x79, 0xa9, 0x10, 0x23, 0xee, + 0x43, 0x0d, 0x7d, 0x5e, 0x83, 0xfb, 0x53, 0xe3, 0xe2, 0xdb, 0xed, 0x36, 0xf1, 0x45, 0x6f, 0x8e, + 0xbe, 0x84, 0x6a, 0xfb, 0x7b, 0xb5, 0xfb, 0x97, 0x8a, 0x51, 0xe2, 0x7e, 0xf4, 0xf4, 0x6f, 0x6a, + 0x30, 0x54, 0xc7, 0x4d, 0xf4, 0xb6, 0x84, 0x12, 0x77, 0x9f, 0xaa, 0xc4, 0xdd, 0xdb, 0xab, 0x8d, + 0xd5, 0x71, 0x53, 0xd1, 0xe7, 0x3e, 0xaf, 0xc1, 0x59, 0xd3, 0x73, 0x43, 0x83, 0xf6, 0x0b, 0x73, + 0x49, 0x27, 0xe2, 0xaa, 0xa5, 0xf4, 0x97, 0x7a, 0x0a, 0xd9, 0xc2, 0x25, 0xd1, 0x81, 0xb3, 0x69, + 0x48, 0x80, 0xb3, 0x94, 0xf5, 0xef, 0x6b, 0x30, 0x59, 0x77, 0xbc, 0x9e, 0xb5, 0xea, 0x7b, 0x1b, + 0xb6, 0x43, 0xde, 0x18, 0x4a, 0x9b, 0xda, 0xe3, 0xa2, 0x43, 0x99, 0x29, 0x51, 0x6a, 0xc5, 0x37, + 0x88, 0x12, 0xa5, 0x76, 0xb9, 0xe0, 0x9c, 0xfc, 0xe5, 0xb1, 0xe4, 0x97, 0xb1, 0x93, 0xf2, 0x11, + 0xa8, 0x9a, 0xc6, 0x42, 0xcf, 0xb5, 0x1c, 0xa9, 0x45, 0xd1, 0x5e, 0xd6, 0xe7, 0x79, 0x19, 0x96, + 0x50, 0xf4, 0x2a, 0x40, 0x6c, 0x02, 0x13, 0xd3, 0x70, 0x7d, 0x30, 0xb3, 0x5b, 0x8b, 0x84, 0xa1, + 0xed, 0xb6, 0x83, 0x78, 0xea, 0x63, 0x18, 0x56, 0xa8, 0xa1, 0x8f, 0xc2, 0x94, 0x18, 0xe4, 0x66, + 0xc7, 0x68, 0x0b, 0x7b, 0x43, 0xc9, 0x91, 0x5a, 0x56, 0x10, 0x2d, 0x5c, 0x10, 0x84, 0xa7, 0xd4, + 0xd2, 0x00, 0x27, 0xa9, 0xa1, 0x5d, 0x98, 0xec, 0xa8, 0x36, 0x94, 0xe1, 0xf2, 0xe2, 0x8c, 0x62, + 0x4f, 0x59, 0x38, 0x2f, 0x88, 0x4f, 0x26, 0xac, 0x2f, 0x09, 0x52, 0x39, 0xaa, 0xe0, 0xc8, 0x49, + 0xa9, 0x82, 0x04, 0xc6, 0xb8, 0x32, 0x1c, 0xcc, 0x8e, 0xb2, 0x0f, 0x7c, 0xaa, 0xcc, 0x07, 0x72, + 0xbd, 0x3a, 0xb6, 0xe9, 0xf2, 0xdf, 0x01, 0x8e, 0x70, 0xa3, 0x6d, 0x98, 0xa4, 0xa7, 0x7a, 0x8b, + 0x38, 0xc4, 0x0c, 0x3d, 0x7f, 0x76, 0xac, 0xbc, 0xcd, 0xb4, 0xa5, 0xe0, 0xe1, 0xa6, 0x34, 0xb5, + 0x04, 0x27, 0xe8, 0x48, 0x5b, 0x41, 0xb5, 0xd0, 0x56, 0xd0, 0x83, 0x89, 0x6d, 0xc5, 0xa6, 0x35, + 0xce, 0x06, 0xe1, 0x7d, 0x65, 0x3a, 0x16, 0x1b, 0xb8, 0x16, 0xce, 0x09, 0x42, 0x13, 0xaa, 0x31, + 0x4c, 0xa5, 0xa3, 0xef, 0x55, 0xe1, 0x6c, 0xdd, 0xe9, 0x05, 0x21, 0xf1, 0xe7, 0xc5, 0xa5, 0x04, + 0xf1, 0xd1, 0x27, 0x34, 0xb8, 0xc8, 0xfe, 0x6d, 0x78, 0x77, 0xdd, 0x06, 0x71, 0x8c, 0xdd, 0xf9, + 0x0d, 0x5a, 0xc3, 0xb2, 0x8e, 0xc6, 0x81, 0x1a, 0x3d, 0x21, 0x45, 0x32, 0xe3, 0x5c, 0x2b, 0x17, + 0x23, 0x2e, 0xa0, 0x84, 0x7e, 0x41, 0x83, 0x4b, 0x39, 0xa0, 0x06, 0x71, 0x48, 0x18, 0x49, 0x2e, + 0x47, 0xed, 0xc7, 0x83, 0xfb, 0x7b, 0xb5, 0x4b, 0xad, 0x22, 0xa4, 0xb8, 0x98, 0x1e, 0xfa, 0x25, + 0x0d, 0x2e, 0xe7, 0x40, 0xaf, 0x1b, 0xb6, 0xd3, 0xf3, 0x23, 0xa1, 0xe6, 0xa8, 0xdd, 0x61, 0xb2, + 0x45, 0xab, 0x10, 0x2b, 0xee, 0x43, 0x11, 0x7d, 0x0c, 0x2e, 0x48, 0xe8, 0x1d, 0xd7, 0x25, 0xc4, + 0x4a, 0x88, 0x38, 0x47, 0xed, 0xca, 0xa5, 0xfd, 0xbd, 0xda, 0x85, 0x56, 0x1e, 0x42, 0x9c, 0x4f, + 0x07, 0xb5, 0xe1, 0xc1, 0x18, 0x10, 0xda, 0x8e, 0xfd, 0x2a, 0x97, 0xc2, 0x36, 0x7d, 0x12, 0x6c, + 0x7a, 0x8e, 0xc5, 0x98, 0x85, 0xb6, 0xf0, 0xe6, 0xfd, 0xbd, 0xda, 0x83, 0xad, 0x7e, 0x15, 0x71, + 0x7f, 0x3c, 0xc8, 0x82, 0xc9, 0xc0, 0x34, 0xdc, 0xa6, 0x1b, 0x12, 0x7f, 0xdb, 0x70, 0x66, 0x47, + 0x4b, 0x7d, 0x20, 0xdf, 0xa2, 0x0a, 0x1e, 0x9c, 0xc0, 0x8a, 0xde, 0x0d, 0x55, 0xb2, 0xd3, 0x35, + 0x5c, 0x8b, 0x70, 0xb6, 0x30, 0xbe, 0xf0, 0x00, 0x3d, 0x8c, 0x16, 0x45, 0xd9, 0xbd, 0xbd, 0xda, + 0x64, 0xf4, 0xff, 0xb2, 0x67, 0x11, 0x2c, 0x6b, 0xa3, 0x8f, 0xc0, 0xf9, 0x8e, 0xb1, 0xb3, 0xe2, + 0x59, 0x84, 0x31, 0xb9, 0x20, 0x12, 0x74, 0xab, 0xa5, 0xfa, 0x39, 0xbb, 0xbf, 0x57, 0x3b, 0xbf, + 0x9c, 0x83, 0x0f, 0xe7, 0x52, 0xa1, 0xd3, 0xd0, 0x31, 0x76, 0x6e, 0xf8, 0x86, 0x49, 0x36, 0x7a, + 0xce, 0x1a, 0xf1, 0x3b, 0xb6, 0xcb, 0x75, 0x09, 0x62, 0x7a, 0xae, 0x45, 0x59, 0x89, 0xf6, 0xc8, + 0x08, 0x9f, 0x86, 0xe5, 0x7e, 0x15, 0x71, 0x7f, 0x3c, 0xe8, 0x09, 0x98, 0xb4, 0xdb, 0xae, 0xe7, + 0x93, 0x35, 0xc3, 0x76, 0xc3, 0x60, 0x16, 0x98, 0xd9, 0x9d, 0x0d, 0x6b, 0x53, 0x29, 0xc7, 0x89, + 0x5a, 0xfa, 0xde, 0x10, 0x8c, 0xd7, 0x3d, 0xd7, 0xb2, 0x99, 0x1a, 0xf3, 0x58, 0xc2, 0x66, 0xfa, + 0xa0, 0xca, 0x07, 0xef, 0xed, 0xd5, 0xa6, 0x64, 0x45, 0x85, 0x31, 0x3e, 0x29, 0x0d, 0x15, 0x5c, + 0x31, 0x7e, 0x73, 0xd2, 0xc2, 0x70, 0x6f, 0xaf, 0x76, 0x46, 0x36, 0x4b, 0x1a, 0x1d, 0xd0, 0x36, + 0xd7, 0x3f, 0xd6, 0x7c, 0xc3, 0x0d, 0xec, 0x01, 0xf4, 0x0f, 0xa9, 0x59, 0x2e, 0x65, 0xb0, 0xe1, + 0x1c, 0x0a, 0xe8, 0x65, 0x98, 0xa6, 0xa5, 0x77, 0xba, 0x96, 0x11, 0x92, 0x92, 0x6a, 0xc7, 0x45, + 0x41, 0x73, 0x7a, 0x29, 0x81, 0x09, 0xa7, 0x30, 0x73, 0x1b, 0xb3, 0x11, 0x78, 0x2e, 0xdb, 0x6e, + 0x09, 0x1b, 0x33, 0x2d, 0xc5, 0x02, 0x8a, 0x1e, 0x85, 0xb1, 0x0e, 0x09, 0x02, 0xa3, 0x4d, 0xd8, + 0xfe, 0x19, 0x8f, 0x0f, 0xc9, 0x65, 0x5e, 0x8c, 0x23, 0x38, 0x7a, 0x3b, 0x8c, 0x98, 0x9e, 0x45, + 0x82, 0xd9, 0x31, 0x36, 0xc3, 0x54, 0xfb, 0x1a, 0xa9, 0xd3, 0x82, 0x7b, 0x7b, 0xb5, 0x71, 0xa6, + 0x87, 0xd3, 0x5f, 0x98, 0x57, 0xd2, 0x7f, 0x95, 0xca, 0xac, 0x29, 0x21, 0xfd, 0x10, 0xb6, 0xf1, + 0xd3, 0x33, 0x33, 0xeb, 0x5f, 0xa2, 0x0a, 0x83, 0xe7, 0x86, 0xbe, 0xe7, 0xac, 0x3a, 0x86, 0x4b, + 0xd0, 0xa7, 0x35, 0x98, 0xd9, 0xb4, 0xdb, 0x9b, 0xea, 0xe5, 0x96, 0x38, 0xd8, 0x4a, 0xc9, 0xf6, + 0x37, 0x53, 0xb8, 0x16, 0xce, 0xef, 0xef, 0xd5, 0x66, 0xd2, 0xa5, 0x38, 0x43, 0x53, 0xff, 0x6c, + 0x05, 0xce, 0x8b, 0x9e, 0x39, 0xf4, 0xa4, 0xe9, 0x3a, 0xde, 0x6e, 0x87, 0xb8, 0xa7, 0x71, 0x0f, + 0x15, 0xcd, 0x50, 0xa5, 0x70, 0x86, 0x3a, 0x99, 0x19, 0x1a, 0x2a, 0x33, 0x43, 0x72, 0x21, 0x1f, + 0x30, 0x4b, 0x7f, 0xae, 0xc1, 0x6c, 0xde, 0x58, 0x9c, 0x82, 0x0e, 0xd4, 0x49, 0xea, 0x40, 0x37, + 0xcb, 0x2a, 0xb5, 0xe9, 0xae, 0x17, 0xe8, 0x42, 0x3f, 0xae, 0xc0, 0xc5, 0xb8, 0x7a, 0xd3, 0x0d, + 0x42, 0xc3, 0x71, 0xb8, 0x99, 0xe7, 0xe4, 0xe7, 0xbd, 0x9b, 0x50, 0x65, 0x57, 0x06, 0xfb, 0x54, + 0xb5, 0xef, 0x85, 0x96, 0xe6, 0x9d, 0x94, 0xa5, 0x79, 0xf5, 0x18, 0x69, 0xf6, 0x37, 0x3a, 0xff, + 0x4f, 0x0d, 0x2e, 0xe7, 0x37, 0x3c, 0x85, 0x45, 0xe5, 0x25, 0x17, 0xd5, 0x07, 0x8e, 0xef, 0xab, + 0x0b, 0x96, 0xd5, 0xbf, 0xa8, 0x14, 0x7d, 0x2d, 0x53, 0xb6, 0x37, 0xe0, 0x0c, 0xd5, 0x82, 0x82, + 0x50, 0x98, 0x44, 0x8f, 0xe6, 0x2b, 0x10, 0xd9, 0x88, 0xce, 0xe0, 0x24, 0x0e, 0x9c, 0x46, 0x8a, + 0x56, 0x60, 0x8c, 0xaa, 0x3e, 0x14, 0x7f, 0xe5, 0xf0, 0xf8, 0xe5, 0x69, 0xd4, 0xe2, 0x6d, 0x71, + 0x84, 0x04, 0xfd, 0x2c, 0x4c, 0x59, 0x72, 0x47, 0x1d, 0x70, 0x51, 0x98, 0xc6, 0xca, 0x8c, 0xd7, + 0x0d, 0xb5, 0x35, 0x4e, 0x22, 0xd3, 0xff, 0x4a, 0x83, 0x07, 0xfa, 0xad, 0x2d, 0xf4, 0x0a, 0x80, + 0x19, 0x89, 0x17, 0xdc, 0x55, 0xa4, 0xa4, 0x79, 0x5b, 0x0a, 0x29, 0xf1, 0x06, 0x95, 0x45, 0x01, + 0x56, 0x88, 0xe4, 0xdc, 0x3f, 0x56, 0x4e, 0xe8, 0xfe, 0x51, 0xff, 0x5f, 0x9a, 0xca, 0x8a, 0xd4, + 0xb9, 0x7d, 0xa3, 0xb1, 0x22, 0xb5, 0xef, 0x85, 0xf6, 0xb5, 0x3f, 0xa9, 0xc0, 0xd5, 0xfc, 0x26, + 0xca, 0xd9, 0xfb, 0x7e, 0x18, 0xed, 0x72, 0x7f, 0x9e, 0x21, 0x76, 0x36, 0x3e, 0x42, 0x39, 0x0b, + 0xf7, 0xb6, 0xb9, 0xb7, 0x57, 0xbb, 0x9c, 0xc7, 0xe8, 0x85, 0x9f, 0x8e, 0x68, 0x87, 0xec, 0x94, + 0x95, 0x81, 0x4b, 0x7f, 0xef, 0x38, 0x24, 0x73, 0x31, 0xd6, 0x89, 0x73, 0x68, 0xc3, 0xc2, 0xc7, + 0x35, 0x98, 0x4e, 0xac, 0xe8, 0x60, 0x76, 0x84, 0xad, 0xd1, 0x52, 0x57, 0x3f, 0x89, 0xad, 0x12, + 0x9f, 0xdc, 0x89, 0xe2, 0x00, 0xa7, 0x08, 0xa6, 0xd8, 0xac, 0x3a, 0xaa, 0x6f, 0x38, 0x36, 0xab, + 0x76, 0xbe, 0x80, 0xcd, 0xfe, 0x4a, 0xa5, 0xe8, 0x6b, 0x19, 0x9b, 0xbd, 0x0b, 0xe3, 0x91, 0x67, + 0x65, 0xc4, 0x2e, 0xae, 0x0f, 0xda, 0x27, 0x8e, 0x2e, 0x76, 0x7b, 0x88, 0x4a, 0x02, 0x1c, 0xd3, + 0x42, 0x9f, 0xd4, 0x00, 0xe2, 0x89, 0x11, 0x9b, 0x6a, 0xed, 0xf8, 0x86, 0x43, 0x11, 0x6b, 0xa6, + 0xe9, 0x96, 0x56, 0x16, 0x85, 0x42, 0x57, 0xff, 0xfa, 0x10, 0xa0, 0x6c, 0xdf, 0xa9, 0xb8, 0xb9, + 0x65, 0xbb, 0x56, 0x5a, 0x21, 0xb8, 0x65, 0xbb, 0x16, 0x66, 0x90, 0x43, 0x08, 0xa4, 0x4f, 0xc3, + 0x99, 0xb6, 0xe3, 0xad, 0x1b, 0x8e, 0xb3, 0x2b, 0x9c, 0x35, 0x85, 0xdb, 0xdf, 0x39, 0x7a, 0x30, + 0xdd, 0x48, 0x82, 0x70, 0xba, 0x2e, 0xea, 0xc2, 0x8c, 0x4f, 0x55, 0x59, 0xd3, 0x76, 0x98, 0xea, + 0xe4, 0xf5, 0xc2, 0x92, 0xb6, 0x12, 0x26, 0xde, 0xe3, 0x14, 0x2e, 0x9c, 0xc1, 0x8e, 0xde, 0x02, + 0x63, 0x5d, 0xdf, 0xee, 0x18, 0xfe, 0x2e, 0x53, 0xce, 0xaa, 0x0b, 0x13, 0xf4, 0x84, 0x5b, 0xe5, + 0x45, 0x38, 0x82, 0xa1, 0x8f, 0xc0, 0xb8, 0x63, 0x6f, 0x10, 0x73, 0xd7, 0x74, 0x88, 0x30, 0x6e, + 0xdc, 0x3e, 0x9e, 0x25, 0xb3, 0x14, 0xa1, 0x15, 0x57, 0xaa, 0xd1, 0x4f, 0x1c, 0x13, 0xd4, 0x3f, + 0x57, 0x81, 0xfb, 0xfb, 0xb4, 0x44, 0x98, 0x2e, 0x68, 0xf1, 0x61, 0x62, 0xfa, 0x9e, 0xe0, 0x8b, + 0x50, 0x14, 0xde, 0xdb, 0xab, 0x3d, 0xd4, 0x07, 0x41, 0x8b, 0xae, 0x1f, 0xd2, 0xde, 0xc5, 0x31, + 0x1a, 0xd4, 0x84, 0x51, 0x2b, 0x36, 0xe3, 0x8d, 0x2f, 0x3c, 0x46, 0x59, 0x2c, 0x37, 0xb4, 0x1d, + 0x16, 0x9b, 0x40, 0x80, 0x96, 0x60, 0x8c, 0xdf, 0x9e, 0x12, 0xc1, 0xae, 0x1f, 0x67, 0x3a, 0x2d, + 0x2f, 0x3a, 0x2c, 0xb2, 0x08, 0x85, 0xfe, 0x7f, 0x35, 0x18, 0xab, 0x7b, 0x3e, 0x69, 0xac, 0xb4, + 0xd0, 0x2e, 0x4c, 0x28, 0x7e, 0xda, 0x82, 0x75, 0x95, 0xdc, 0xcb, 0x0c, 0xe3, 0x7c, 0x8c, 0x2d, + 0xf2, 0xf1, 0x94, 0x05, 0x58, 0xa5, 0x85, 0x5e, 0xa1, 0x63, 0x7e, 0xd7, 0xb7, 0x43, 0x4a, 0x78, + 0x90, 0x4b, 0x27, 0x4e, 0x18, 0x47, 0xb8, 0xf8, 0x32, 0x90, 0x3f, 0x71, 0x4c, 0x45, 0x5f, 0xa5, + 0xdb, 0x36, 0xdd, 0x4d, 0xf4, 0x14, 0x0c, 0x77, 0x3c, 0x2b, 0x9a, 0xf7, 0xb7, 0x46, 0x9b, 0x72, + 0xd9, 0xb3, 0xe8, 0xd8, 0x5e, 0xcc, 0xb6, 0x60, 0xa6, 0x31, 0xd6, 0x46, 0x5f, 0x81, 0x99, 0x34, + 0x7d, 0xf4, 0x14, 0x4c, 0x9b, 0x5e, 0xa7, 0xe3, 0xb9, 0xad, 0xde, 0xc6, 0x86, 0xbd, 0x43, 0x12, + 0xce, 0xb7, 0xf5, 0x04, 0x04, 0xa7, 0x6a, 0xea, 0x5f, 0xd5, 0x60, 0x88, 0xce, 0x8b, 0x0e, 0xa3, + 0x96, 0xd7, 0x31, 0x6c, 0x57, 0xf4, 0x8a, 0xb9, 0x06, 0x37, 0x58, 0x09, 0x16, 0x10, 0xd4, 0x85, + 0xf1, 0x48, 0xd2, 0x19, 0xc8, 0x01, 0xa4, 0xb1, 0xd2, 0x92, 0x4e, 0x73, 0x92, 0xfd, 0x46, 0x25, + 0x01, 0x8e, 0x89, 0xe8, 0x06, 0x9c, 0x6d, 0xac, 0xb4, 0x9a, 0xae, 0xe9, 0xf4, 0x2c, 0xb2, 0xb8, + 0xc3, 0xfe, 0x50, 0x06, 0x60, 0xf3, 0x12, 0xf1, 0x9d, 0x8c, 0x01, 0x88, 0x4a, 0x38, 0x82, 0xd1, + 0x6a, 0x84, 0xb7, 0x10, 0x1e, 0xb2, 0xac, 0x9a, 0x40, 0x82, 0x23, 0x98, 0xfe, 0xfd, 0x0a, 0x4c, + 0x28, 0x1d, 0x42, 0x0e, 0x8c, 0xf1, 0xcf, 0x8d, 0x1c, 0xd4, 0x16, 0x4b, 0x7e, 0x62, 0xb2, 0xd7, + 0x9c, 0x3a, 0x1f, 0xd0, 0x00, 0x47, 0x24, 0x54, 0x66, 0x56, 0xe9, 0xc3, 0xcc, 0xe6, 0x00, 0xb8, + 0x2b, 0x1e, 0xf3, 0xab, 0xe0, 0x5b, 0x92, 0x9d, 0x17, 0x2d, 0x59, 0x8a, 0x95, 0x1a, 0xe8, 0x01, + 0xc1, 0xf6, 0xb9, 0x07, 0x46, 0x35, 0xc5, 0xf2, 0x37, 0x60, 0xe4, 0x55, 0xcf, 0x25, 0x81, 0xb8, + 0x78, 0x3a, 0xa6, 0x0f, 0x1c, 0xa7, 0x87, 0xfa, 0x8b, 0x14, 0x2f, 0xe6, 0xe8, 0xf5, 0x5f, 0xd3, + 0x00, 0x1a, 0x46, 0x68, 0xf0, 0x7b, 0x92, 0x43, 0x38, 0x39, 0x3f, 0x90, 0x38, 0xad, 0xaa, 0x19, + 0xc7, 0xcf, 0xe1, 0xc0, 0x7e, 0x35, 0xfa, 0x7c, 0x29, 0x05, 0x73, 0xec, 0x2d, 0xfb, 0x55, 0x82, + 0x19, 0x1c, 0xbd, 0x0d, 0xc6, 0x89, 0x6b, 0xfa, 0xbb, 0xdd, 0x90, 0x58, 0x6c, 0x04, 0xaa, 0x7c, + 0x87, 0x2e, 0x46, 0x85, 0x38, 0x86, 0xeb, 0x8f, 0x41, 0x52, 0x95, 0x39, 0xb8, 0x97, 0xfa, 0x8f, + 0x86, 0xe1, 0xd2, 0xe2, 0x5a, 0xbd, 0x21, 0xf0, 0xd9, 0x9e, 0x7b, 0x8b, 0xec, 0xfe, 0x8d, 0x4f, + 0xc9, 0xdf, 0xf8, 0x94, 0x1c, 0xa3, 0x4f, 0xc9, 0x3d, 0x0d, 0x66, 0x16, 0x77, 0xba, 0xb6, 0xcf, + 0x9c, 0xeb, 0x89, 0x4f, 0x75, 0x4f, 0xf4, 0x28, 0x8c, 0x6d, 0xf3, 0x7f, 0xc5, 0xe2, 0x92, 0xfa, + 0xbd, 0xa8, 0x81, 0x23, 0x38, 0xda, 0x80, 0x69, 0xc2, 0x9a, 0x33, 0x21, 0xd3, 0x08, 0xcb, 0x2c, + 0x20, 0xfe, 0x76, 0x23, 0x81, 0x05, 0xa7, 0xb0, 0xa2, 0x16, 0x4c, 0x9b, 0x8e, 0x11, 0x04, 0xf6, + 0x86, 0x6d, 0xc6, 0x6e, 0x63, 0xe3, 0x0b, 0x6f, 0x63, 0x47, 0x4f, 0x02, 0x72, 0x6f, 0xaf, 0x76, + 0x41, 0xf4, 0x33, 0x09, 0xc0, 0x29, 0x14, 0xfa, 0x97, 0x2b, 0x30, 0xb5, 0xb8, 0xd3, 0xf5, 0x82, + 0x9e, 0x4f, 0x58, 0xd5, 0x53, 0x50, 0x9b, 0x1f, 0x85, 0xb1, 0x4d, 0xc3, 0xb5, 0x1c, 0xe2, 0x0b, + 0xee, 0x23, 0xc7, 0xf6, 0x26, 0x2f, 0xc6, 0x11, 0x1c, 0xbd, 0x06, 0x10, 0x98, 0x9b, 0xc4, 0xea, + 0x31, 0x09, 0x86, 0x6f, 0x92, 0x5b, 0x65, 0x78, 0x68, 0xe2, 0x1b, 0x5b, 0x12, 0xa5, 0xe0, 0xec, + 0xf2, 0x37, 0x56, 0xc8, 0xe9, 0xff, 0x59, 0x83, 0xb3, 0x89, 0x76, 0xa7, 0xa0, 0x0d, 0x6e, 0x24, + 0xb5, 0xc1, 0xf9, 0x81, 0xbf, 0xb5, 0x40, 0x09, 0xfc, 0xf9, 0x0a, 0xdc, 0x57, 0x30, 0x26, 0x19, + 0x1f, 0x03, 0xed, 0x94, 0x7c, 0x0c, 0x7a, 0x30, 0x11, 0x7a, 0x8e, 0xf0, 0x6e, 0x8c, 0x46, 0xa0, + 0x94, 0x07, 0xc1, 0x9a, 0x44, 0x13, 0x7b, 0x10, 0xc4, 0x65, 0x01, 0x56, 0xe9, 0xe8, 0xdf, 0xd4, + 0x60, 0x5c, 0x1a, 0x9d, 0x5e, 0x57, 0x17, 0x3f, 0x47, 0x78, 0x20, 0xf6, 0x9d, 0x0a, 0x5c, 0x94, + 0xb8, 0x23, 0x3d, 0xa1, 0x15, 0x52, 0xbe, 0x71, 0xb0, 0xe6, 0xfa, 0x80, 0x38, 0x87, 0x15, 0x59, + 0x40, 0x91, 0x14, 0xa8, 0xdc, 0xd4, 0xf3, 0xbb, 0x5e, 0x10, 0x89, 0x03, 0x5c, 0x6e, 0xe2, 0x45, + 0x38, 0x82, 0xa1, 0x15, 0x18, 0x09, 0x28, 0x3d, 0x71, 0x9a, 0x1c, 0x71, 0x34, 0x98, 0x44, 0xc3, + 0xfa, 0x8b, 0x39, 0x1a, 0xf4, 0x9a, 0x6a, 0x87, 0x18, 0x29, 0x6f, 0x1b, 0xa1, 0x5f, 0x62, 0x45, + 0x23, 0x92, 0xf3, 0x04, 0x23, 0xcf, 0x16, 0xa1, 0x2f, 0xc1, 0x8c, 0x70, 0x53, 0xe0, 0xcb, 0xc6, + 0x35, 0x09, 0x7a, 0x77, 0x62, 0x65, 0x3c, 0x9c, 0xba, 0xfa, 0x3d, 0x9f, 0xae, 0x1f, 0xaf, 0x18, + 0x3d, 0x80, 0xea, 0x0d, 0xd1, 0x49, 0x74, 0x19, 0x2a, 0x76, 0x34, 0x17, 0x20, 0x70, 0x54, 0x9a, + 0x0d, 0x5c, 0xb1, 0x2d, 0x29, 0x0f, 0x55, 0x0a, 0xa5, 0x36, 0xe5, 0x58, 0x1a, 0xea, 0x7f, 0x2c, + 0xe9, 0x7f, 0x56, 0x81, 0xf3, 0x11, 0xd5, 0xe8, 0x1b, 0x1b, 0xe2, 0xe2, 0xec, 0x00, 0xd9, 0xf0, + 0x60, 0x4b, 0xc6, 0x6d, 0x18, 0x66, 0x0c, 0xb0, 0xd4, 0x85, 0x9a, 0x44, 0x48, 0xbb, 0x83, 0x19, + 0x22, 0xf4, 0x11, 0x18, 0x75, 0x8c, 0x75, 0xe2, 0x44, 0xee, 0x61, 0xa5, 0xec, 0x3e, 0x79, 0x9f, + 0xcb, 0xcd, 0x91, 0x01, 0x77, 0x81, 0x97, 0xf7, 0x2c, 0xbc, 0x10, 0x0b, 0x9a, 0x97, 0x9f, 0x84, + 0x09, 0xa5, 0x1a, 0x9a, 0x81, 0xa1, 0x2d, 0xc2, 0x2f, 0x54, 0xc7, 0x31, 0xfd, 0x17, 0x9d, 0x87, + 0x91, 0x6d, 0xc3, 0xe9, 0x89, 0x21, 0xc1, 0xfc, 0xc7, 0x53, 0x95, 0x77, 0x6b, 0xfa, 0xd7, 0x35, + 0x98, 0xb8, 0x69, 0xaf, 0x13, 0x9f, 0xfb, 0x1a, 0x30, 0x55, 0x28, 0xf1, 0x3e, 0x77, 0x22, 0xef, + 0x6d, 0x2e, 0xda, 0x81, 0x71, 0x71, 0xd2, 0x48, 0x57, 0xd4, 0x1b, 0xe5, 0x6e, 0x6e, 0x25, 0x69, + 0xc1, 0xc1, 0xd5, 0xd7, 0x45, 0x11, 0x05, 0x1c, 0x13, 0xd3, 0x5f, 0x83, 0x73, 0x39, 0x8d, 0x50, + 0x8d, 0x6d, 0x5f, 0x3f, 0x14, 0xcb, 0x22, 0xda, 0x8f, 0x7e, 0x88, 0x79, 0x39, 0xba, 0x04, 0x43, + 0xc4, 0xb5, 0xc4, 0x9a, 0x18, 0xdb, 0xdf, 0xab, 0x0d, 0x2d, 0xba, 0x16, 0xa6, 0x65, 0x94, 0x4d, + 0x39, 0x5e, 0x42, 0x26, 0x61, 0x6c, 0x6a, 0x49, 0x94, 0x61, 0x09, 0x65, 0x77, 0xed, 0xe9, 0x6b, + 0x65, 0x2a, 0x9d, 0xce, 0x6c, 0xa4, 0x76, 0xcf, 0x20, 0xb7, 0xd9, 0xe9, 0x9d, 0xb8, 0x30, 0x2b, + 0x06, 0x24, 0xb3, 0xa7, 0x71, 0x86, 0xae, 0xfe, 0xaf, 0x87, 0xe1, 0xc1, 0x9b, 0x9e, 0x6f, 0xbf, + 0xea, 0xb9, 0xa1, 0xe1, 0xac, 0x7a, 0x56, 0xec, 0x55, 0x26, 0x98, 0xf2, 0xa7, 0x34, 0xb8, 0xcf, + 0xec, 0xf6, 0xb8, 0x74, 0x1b, 0x39, 0xfb, 0xac, 0x12, 0xdf, 0xf6, 0xca, 0x3a, 0x97, 0xb1, 0xf7, + 0xa4, 0xf5, 0xd5, 0x3b, 0x79, 0x28, 0x71, 0x11, 0x2d, 0xe6, 0xe3, 0x66, 0x79, 0x77, 0x5d, 0xd6, + 0xb9, 0x56, 0xc8, 0x46, 0xf3, 0xd5, 0x78, 0x12, 0x4a, 0xfa, 0xb8, 0x35, 0x72, 0x31, 0xe2, 0x02, + 0x4a, 0xe8, 0x63, 0x70, 0xc1, 0xe6, 0x9d, 0xc3, 0xc4, 0xb0, 0x6c, 0x97, 0x04, 0x01, 0xf3, 0xf4, + 0x1a, 0xc4, 0x89, 0xab, 0x99, 0x87, 0x10, 0xe7, 0xd3, 0x41, 0x2f, 0x01, 0x04, 0xbb, 0xae, 0x29, + 0xc6, 0x7f, 0xa4, 0x14, 0x55, 0x2e, 0x04, 0x4a, 0x2c, 0x58, 0xc1, 0x48, 0x35, 0xdc, 0x50, 0x2e, + 0xca, 0x51, 0xe6, 0x10, 0xc6, 0x34, 0xdc, 0x78, 0x0d, 0xc5, 0x70, 0xfd, 0x9f, 0x69, 0x30, 0x26, + 0x5e, 0x99, 0xa3, 0xb7, 0xa6, 0xac, 0x3c, 0x92, 0xf7, 0xa4, 0x2c, 0x3d, 0xbb, 0xec, 0x7e, 0x4e, + 0x58, 0xf8, 0x84, 0x28, 0x51, 0xca, 0x4c, 0x20, 0x08, 0xc7, 0xe6, 0xc2, 0xc4, 0x3d, 0x5d, 0x64, + 0x42, 0x54, 0x88, 0xe9, 0x5f, 0xd3, 0xe0, 0x6c, 0xa6, 0xd5, 0x21, 0xe4, 0x85, 0x53, 0x74, 0x7d, + 0xf9, 0xc6, 0x34, 0xb0, 0x80, 0x02, 0xf3, 0xab, 0xcd, 0x16, 0xf1, 0xb7, 0xe5, 0x26, 0xa4, 0x3c, + 0x23, 0x76, 0x71, 0x16, 0xbd, 0x18, 0x80, 0x67, 0xdc, 0x4a, 0xe1, 0x8a, 0x79, 0x46, 0x1a, 0x82, + 0x33, 0x74, 0xd1, 0x67, 0x35, 0x98, 0x31, 0x92, 0x01, 0x05, 0x22, 0xa6, 0x5e, 0xea, 0xf9, 0x5b, + 0x2a, 0x38, 0x41, 0xdc, 0x97, 0x14, 0x20, 0xc0, 0x19, 0xb2, 0xe8, 0x09, 0x98, 0x34, 0xba, 0xf6, + 0x7c, 0xcf, 0xb2, 0xa9, 0x98, 0x13, 0xbd, 0x2d, 0x67, 0xa2, 0xf7, 0xfc, 0x6a, 0x53, 0x96, 0xe3, + 0x44, 0x2d, 0x19, 0x07, 0x40, 0x0c, 0xe4, 0xf0, 0x80, 0x71, 0x00, 0xc4, 0x18, 0xc6, 0x71, 0x00, + 0xc4, 0xd0, 0xa9, 0x44, 0xd0, 0x87, 0xe0, 0x12, 0x3f, 0x0d, 0x17, 0x8c, 0xc0, 0x36, 0xe7, 0x7b, + 0xe1, 0x26, 0x71, 0xc3, 0x48, 0xb5, 0xe5, 0xd7, 0x0d, 0xcc, 0xdb, 0x75, 0xb1, 0xa8, 0x12, 0x2e, + 0x6e, 0x8f, 0x5c, 0x00, 0xcf, 0xb6, 0x4c, 0xf1, 0x3d, 0xfc, 0x4e, 0xa2, 0x94, 0x2a, 0x71, 0xbb, + 0xd9, 0xa8, 0x8b, 0xcf, 0x61, 0x6c, 0x22, 0xfe, 0x8d, 0x15, 0x0a, 0xe8, 0x4b, 0x1a, 0x4c, 0x89, + 0x45, 0x2e, 0x68, 0x8e, 0xb1, 0xf9, 0x7f, 0xb1, 0xec, 0x62, 0x4c, 0x2d, 0xf8, 0x39, 0xac, 0x22, + 0xe7, 0xd2, 0x8c, 0x74, 0xbf, 0x4f, 0xc0, 0x70, 0xb2, 0x1f, 0xe8, 0x1f, 0x68, 0x70, 0x3e, 0x20, + 0xfe, 0xb6, 0x6d, 0x92, 0x79, 0xd3, 0xf4, 0x7a, 0x6e, 0x34, 0xc9, 0xd5, 0xf2, 0x6f, 0xb2, 0x5b, + 0x39, 0xf8, 0xb8, 0xdf, 0x67, 0x1e, 0x04, 0xe7, 0xd2, 0xa7, 0xe7, 0xd7, 0x99, 0xbb, 0x46, 0x68, + 0x6e, 0xd6, 0x0d, 0x73, 0x93, 0x19, 0x15, 0xb9, 0xab, 0x67, 0xc9, 0x4d, 0xf3, 0x7c, 0x12, 0x15, + 0xbf, 0x53, 0x4b, 0x15, 0xe2, 0x34, 0x41, 0x14, 0x40, 0xd5, 0x27, 0xaf, 0xf4, 0x48, 0xc0, 0xfc, + 0x41, 0x29, 0xf1, 0xe6, 0xc0, 0x33, 0x86, 0x05, 0x42, 0x2e, 0x05, 0x45, 0xbf, 0xb0, 0x24, 0x84, + 0xda, 0xf0, 0x20, 0x5f, 0xb9, 0xf3, 0xae, 0xe7, 0xee, 0x76, 0xbc, 0x5e, 0x90, 0x5a, 0xfd, 0x13, + 0x6c, 0xf5, 0x33, 0x8f, 0xd7, 0xc5, 0x7e, 0x15, 0x71, 0x7f, 0x3c, 0xe8, 0x05, 0xa8, 0x92, 0x6d, + 0xe2, 0x86, 0x6b, 0x6b, 0x4b, 0xb3, 0x93, 0xa5, 0x8e, 0x46, 0xf6, 0x09, 0x8b, 0x02, 0x07, 0x96, + 0xd8, 0x90, 0x07, 0x63, 0x8e, 0xd7, 0x6e, 0xdb, 0x6e, 0x7b, 0x76, 0xaa, 0xfc, 0x3a, 0x4a, 0x0c, + 0xdb, 0x12, 0xc7, 0xc7, 0x05, 0x66, 0xf1, 0x03, 0x47, 0x54, 0x50, 0x17, 0xae, 0x5a, 0x64, 0xc3, + 0xe8, 0x39, 0xe1, 0x8a, 0x17, 0x52, 0x19, 0x60, 0x37, 0x56, 0xe8, 0x23, 0x47, 0xe1, 0x69, 0xf6, + 0x8c, 0xf2, 0xe1, 0xfd, 0xbd, 0xda, 0xd5, 0xc6, 0x01, 0x75, 0xf1, 0x81, 0xd8, 0xd0, 0x2e, 0x3c, + 0x24, 0xea, 0xdc, 0x71, 0x7d, 0x62, 0x98, 0x9b, 0x74, 0xa4, 0xb3, 0x44, 0xcf, 0x30, 0xa2, 0x7f, + 0x6b, 0x7f, 0xaf, 0xf6, 0x50, 0xe3, 0xe0, 0xea, 0xf8, 0x30, 0x38, 0x2f, 0xbf, 0x1f, 0x50, 0x76, + 0xbf, 0x1f, 0xa4, 0x96, 0x54, 0x55, 0xb5, 0xe4, 0x97, 0x34, 0x38, 0x9f, 0x37, 0xba, 0x54, 0x9e, + 0xd9, 0x26, 0xfe, 0xba, 0x17, 0x44, 0x2e, 0xa3, 0x23, 0x5c, 0x9e, 0x79, 0x2e, 0x2a, 0xc4, 0x31, + 0x1c, 0x35, 0xe1, 0xdc, 0x66, 0x18, 0x76, 0xe7, 0x4d, 0x93, 0x04, 0x81, 0xac, 0xc1, 0xa8, 0x8d, + 0xf0, 0x60, 0x3f, 0x37, 0xd7, 0xd6, 0x56, 0x53, 0x60, 0x9c, 0xd7, 0x46, 0xff, 0x5d, 0x0d, 0x2e, + 0xe4, 0xee, 0x12, 0x84, 0xe1, 0x22, 0xf3, 0x0b, 0x77, 0x97, 0x7b, 0xa1, 0x11, 0xda, 0x6e, 0xbb, + 0xe9, 0x6e, 0x38, 0x76, 0x7b, 0x33, 0x14, 0xdd, 0x63, 0x62, 0xe9, 0x72, 0x6e, 0x0d, 0x5c, 0xd0, + 0x92, 0x76, 0xbc, 0x63, 0xec, 0x64, 0x10, 0x2a, 0x1d, 0x5f, 0xce, 0x82, 0x71, 0x5e, 0x1b, 0xfd, + 0x2b, 0x23, 0x70, 0x3f, 0xed, 0x78, 0x2c, 0x21, 0x2d, 0x1b, 0xae, 0xd1, 0x7e, 0x7d, 0x4a, 0x22, + 0x5f, 0xd7, 0xe0, 0xbe, 0xcd, 0x7c, 0xed, 0x45, 0xc8, 0x68, 0xcf, 0x96, 0xd2, 0x32, 0xfb, 0x29, + 0x44, 0x9c, 0x4f, 0xf5, 0xad, 0x82, 0x8b, 0x3a, 0x85, 0xde, 0x0f, 0x33, 0xae, 0x67, 0x91, 0x7a, + 0xb3, 0x81, 0x97, 0x8d, 0x60, 0xab, 0x15, 0x5d, 0x3a, 0x8d, 0x70, 0x1f, 0x85, 0x95, 0x14, 0x0c, + 0x67, 0x6a, 0xa3, 0x6d, 0x40, 0x5d, 0xcf, 0x5a, 0xdc, 0xb6, 0xcd, 0xe8, 0xba, 0xa3, 0xbc, 0x5f, + 0x04, 0xbb, 0x53, 0x59, 0xcd, 0x60, 0xc3, 0x39, 0x14, 0x98, 0xfa, 0x45, 0x3b, 0xb3, 0xec, 0xb9, + 0x76, 0xe8, 0xf9, 0xec, 0xdd, 0xc1, 0x40, 0x5a, 0x08, 0x5b, 0xe7, 0x2b, 0xb9, 0x18, 0x71, 0x01, + 0x25, 0xfd, 0x7f, 0x6b, 0x70, 0x86, 0x2e, 0x8b, 0x55, 0xdf, 0xdb, 0xd9, 0x7d, 0x3d, 0x2e, 0xc8, + 0x47, 0xc5, 0xfd, 0x3b, 0x37, 0x1b, 0x5c, 0x50, 0xee, 0xde, 0xc7, 0x59, 0x9f, 0xe3, 0xeb, 0x76, + 0xd5, 0x72, 0x32, 0x54, 0x6c, 0x39, 0xd1, 0xbf, 0x54, 0xe1, 0x1a, 0x41, 0x64, 0xb9, 0x78, 0x5d, + 0xee, 0xc3, 0x77, 0xc1, 0x14, 0x2d, 0x5b, 0x36, 0x76, 0x56, 0x1b, 0xcf, 0x79, 0x4e, 0xf4, 0xf4, + 0x83, 0xb9, 0x73, 0xde, 0x52, 0x01, 0x38, 0x59, 0x0f, 0x3d, 0x05, 0x63, 0x5d, 0xfe, 0xc0, 0x54, + 0x58, 0x52, 0xae, 0xf2, 0x4b, 0x6a, 0x56, 0x74, 0x6f, 0xaf, 0x76, 0x36, 0xb6, 0xd3, 0x8b, 0x42, + 0x1c, 0x35, 0xd0, 0xbf, 0x70, 0x1e, 0x18, 0x72, 0x87, 0x84, 0xaf, 0xc7, 0x31, 0x79, 0x0c, 0x26, + 0xcc, 0x6e, 0xaf, 0x7e, 0xbd, 0xf5, 0x6c, 0xcf, 0x0b, 0x0d, 0x71, 0x07, 0xcf, 0x54, 0x84, 0xfa, + 0xea, 0x9d, 0xa8, 0x18, 0xab, 0x75, 0x28, 0x77, 0x30, 0xbb, 0x3d, 0xc1, 0x6f, 0x57, 0x55, 0x9f, + 0x46, 0xc6, 0x1d, 0xea, 0xab, 0x77, 0x12, 0x30, 0x9c, 0xa9, 0x8d, 0x3e, 0x06, 0x93, 0x44, 0x6c, + 0xdc, 0x9b, 0x86, 0x6f, 0x09, 0xbe, 0x50, 0x5a, 0xc6, 0x93, 0x43, 0x1b, 0x71, 0x03, 0xae, 0x59, + 0x2d, 0x2a, 0x24, 0x70, 0x82, 0x20, 0xd3, 0x72, 0xc4, 0x6f, 0x3a, 0xcb, 0x9e, 0x95, 0x66, 0x14, + 0x23, 0x42, 0xcb, 0x29, 0xaa, 0x84, 0x8b, 0xdb, 0xa3, 0x7f, 0xaa, 0xc1, 0x45, 0x09, 0xb5, 0x5d, + 0xbb, 0xd3, 0xeb, 0x60, 0x62, 0x3a, 0x86, 0xdd, 0x11, 0x2a, 0xcf, 0xf3, 0xc7, 0xf6, 0xa1, 0x49, + 0xf4, 0x9c, 0x59, 0xe5, 0xc3, 0x70, 0x41, 0x97, 0xd0, 0xd7, 0x34, 0xb8, 0x1a, 0x81, 0x56, 0x7d, + 0x12, 0x04, 0x3d, 0x9f, 0xc4, 0x0f, 0x8f, 0xc4, 0x90, 0x8c, 0x95, 0xe2, 0x9d, 0x4c, 0xe6, 0x5b, + 0x3c, 0x00, 0x37, 0x3e, 0x90, 0xba, 0xba, 0x5c, 0x5a, 0xde, 0x46, 0x28, 0x74, 0xa4, 0x93, 0x5a, + 0x2e, 0x94, 0x04, 0x4e, 0x10, 0x44, 0xbf, 0xad, 0xc1, 0x7d, 0x6a, 0x81, 0xba, 0x5a, 0xb8, 0x72, + 0xf4, 0xc2, 0xb1, 0x75, 0x26, 0x85, 0x9f, 0x9b, 0x21, 0x0b, 0x80, 0xb8, 0xa8, 0x57, 0x94, 0x6d, + 0x77, 0xd8, 0xc2, 0xe4, 0x0a, 0xd4, 0x08, 0x67, 0xdb, 0x7c, 0xad, 0x06, 0x38, 0x82, 0xa1, 0x27, + 0x60, 0xb2, 0xeb, 0x59, 0xab, 0xb6, 0x15, 0x2c, 0xd9, 0x1d, 0x3b, 0x64, 0x2a, 0xce, 0x10, 0x1f, + 0x8e, 0x55, 0xcf, 0x5a, 0x6d, 0x36, 0x78, 0x39, 0x4e, 0xd4, 0x62, 0x4f, 0x68, 0xed, 0x8e, 0xd1, + 0x26, 0xab, 0x3d, 0xc7, 0x59, 0xf5, 0x3d, 0x66, 0xab, 0x6a, 0x10, 0xc3, 0x72, 0x6c, 0x97, 0x94, + 0x54, 0x69, 0xd8, 0x76, 0x6b, 0x16, 0x21, 0xc5, 0xc5, 0xf4, 0xd0, 0x1c, 0xc0, 0x86, 0x61, 0x3b, + 0xad, 0xbb, 0x46, 0xf7, 0xb6, 0xcb, 0xf4, 0x9e, 0x2a, 0x37, 0x0a, 0x5c, 0x97, 0xa5, 0x58, 0xa9, + 0x41, 0x57, 0x13, 0xe5, 0x82, 0x98, 0xf0, 0xd0, 0x2d, 0x4c, 0x3f, 0x39, 0x8e, 0xd5, 0x14, 0x21, + 0xe4, 0xc3, 0x77, 0x4b, 0x21, 0x81, 0x13, 0x04, 0xd1, 0xa7, 0x34, 0x98, 0x0e, 0x76, 0x83, 0x90, + 0x74, 0x64, 0x1f, 0xce, 0x1c, 0x77, 0x1f, 0x98, 0x15, 0xaf, 0x95, 0x20, 0x82, 0x53, 0x44, 0x91, + 0x01, 0xf7, 0xb3, 0x51, 0xbd, 0x51, 0xbf, 0x69, 0xb7, 0x37, 0xe5, 0xc3, 0xd8, 0x55, 0xe2, 0x9b, + 0xc4, 0x0d, 0x67, 0x67, 0xd8, 0xba, 0x61, 0x5e, 0x1c, 0xcd, 0xe2, 0x6a, 0xb8, 0x1f, 0x0e, 0xf4, + 0x12, 0x5c, 0x16, 0xe0, 0x25, 0xef, 0x6e, 0x86, 0xc2, 0x59, 0x46, 0x81, 0x79, 0xad, 0x34, 0x0b, + 0x6b, 0xe1, 0x3e, 0x18, 0xa8, 0x46, 0x11, 0x10, 0x9f, 0x19, 0xe1, 0x89, 0x5c, 0x3c, 0xc1, 0x2c, + 0x62, 0x8b, 0x80, 0x69, 0x14, 0xad, 0x2c, 0x18, 0xe7, 0xb5, 0x41, 0x4f, 0xcb, 0x87, 0x2c, 0xbb, + 0xb4, 0xe0, 0xd9, 0xd5, 0xd6, 0xec, 0x39, 0xd6, 0xbf, 0x73, 0xca, 0xfb, 0x94, 0x08, 0x84, 0xd3, + 0x75, 0xa9, 0x6c, 0x11, 0x15, 0x2d, 0xf4, 0xfc, 0x20, 0x9c, 0x3d, 0xcf, 0x1a, 0x33, 0xd9, 0x02, + 0xab, 0x00, 0x9c, 0xac, 0x87, 0x9e, 0x82, 0xe9, 0x80, 0x98, 0xa6, 0xd7, 0xe9, 0x0a, 0x45, 0x75, + 0xf6, 0x02, 0xeb, 0x3d, 0x9f, 0xc1, 0x04, 0x04, 0xa7, 0x6a, 0xa2, 0x5d, 0x38, 0x27, 0x03, 0x99, + 0x2c, 0x79, 0xed, 0x65, 0x63, 0x87, 0x89, 0xea, 0x17, 0x0f, 0xde, 0x81, 0x73, 0xd1, 0xad, 0xea, + 0xdc, 0xb3, 0x3d, 0xc3, 0x0d, 0xed, 0x70, 0x97, 0x0f, 0x57, 0x3d, 0x8b, 0x0e, 0xe7, 0xd1, 0x40, + 0x4b, 0x70, 0x3e, 0x55, 0x7c, 0xdd, 0x76, 0x48, 0x30, 0x7b, 0x1f, 0xfb, 0x6c, 0x66, 0x75, 0xaa, + 0xe7, 0xc0, 0x71, 0x6e, 0x2b, 0x74, 0x1b, 0x2e, 0x74, 0x7d, 0x2f, 0x24, 0x66, 0x78, 0x8b, 0x8a, + 0x27, 0x8e, 0xf8, 0xc0, 0x60, 0x76, 0x96, 0x8d, 0x05, 0xbb, 0x80, 0x58, 0xcd, 0xab, 0x80, 0xf3, + 0xdb, 0xa1, 0xaf, 0x68, 0x70, 0x25, 0x08, 0x7d, 0x62, 0x74, 0x6c, 0xb7, 0x5d, 0xf7, 0x5c, 0x97, + 0x30, 0x36, 0xd9, 0xb4, 0x62, 0x27, 0xed, 0x4b, 0xa5, 0xf8, 0x94, 0xbe, 0xbf, 0x57, 0xbb, 0xd2, + 0xea, 0x8b, 0x19, 0x1f, 0x40, 0x59, 0xdf, 0xab, 0x70, 0xad, 0x3b, 0xc3, 0xfb, 0xe9, 0x22, 0xec, + 0x90, 0x8e, 0xe7, 0xef, 0xce, 0x47, 0x71, 0x45, 0x85, 0xc1, 0x9f, 0x2d, 0xc2, 0xe5, 0x24, 0x08, + 0xa7, 0xeb, 0x52, 0xc9, 0x8c, 0x6d, 0x96, 0xeb, 0xad, 0xb8, 0x7d, 0x25, 0x96, 0xcc, 0x9a, 0x29, + 0x18, 0xce, 0xd4, 0x46, 0x75, 0x38, 0x2b, 0xca, 0x9a, 0x54, 0xb9, 0x09, 0xae, 0xfb, 0x24, 0x92, + 0x79, 0xa9, 0x9a, 0x70, 0xb6, 0x99, 0x06, 0xe2, 0x6c, 0x7d, 0xfa, 0x15, 0xf4, 0x87, 0xda, 0x8b, + 0xe1, 0xf8, 0x2b, 0x56, 0x92, 0x20, 0x9c, 0xae, 0x1b, 0x69, 0x9f, 0x89, 0x2e, 0x8c, 0xc4, 0x5f, + 0xb1, 0x92, 0x82, 0xe1, 0x4c, 0x6d, 0xfd, 0xbf, 0x0c, 0xc3, 0x43, 0x87, 0x90, 0x97, 0x50, 0x27, + 0x7f, 0xb8, 0x8f, 0xbe, 0x77, 0x0e, 0x37, 0x3d, 0xdd, 0x82, 0xe9, 0x39, 0x3a, 0xbd, 0xc3, 0x4e, + 0x67, 0x50, 0x34, 0x9d, 0x47, 0x27, 0x79, 0xf8, 0xe9, 0xef, 0xe4, 0x4f, 0x7f, 0xc9, 0x51, 0x3d, + 0x70, 0xb9, 0x74, 0x0b, 0x96, 0x4b, 0xc9, 0x51, 0x3d, 0xc4, 0xf2, 0xfa, 0xc1, 0x30, 0x3c, 0x7c, + 0x18, 0xd9, 0xad, 0xe4, 0xfa, 0xca, 0xe1, 0x3a, 0x27, 0xba, 0xbe, 0x8a, 0x9e, 0xa2, 0x9c, 0xe0, + 0xfa, 0xca, 0x21, 0x79, 0xd2, 0xeb, 0xab, 0x68, 0x54, 0x4f, 0x6a, 0x7d, 0x15, 0x8d, 0xea, 0x21, + 0xd6, 0xd7, 0x5f, 0xa6, 0xcf, 0x07, 0x29, 0xb2, 0x35, 0x61, 0xc8, 0xec, 0xf6, 0x4a, 0x32, 0x29, + 0xe6, 0x1e, 0x52, 0x5f, 0xbd, 0x83, 0x29, 0x0e, 0x84, 0x61, 0x94, 0xaf, 0x9f, 0x92, 0x2c, 0x88, + 0xbd, 0x8f, 0xe0, 0x4b, 0x12, 0x0b, 0x4c, 0x74, 0xa8, 0x48, 0x77, 0x93, 0x74, 0x88, 0x6f, 0x38, + 0xad, 0xd0, 0xf3, 0x8d, 0x76, 0x59, 0x6e, 0xc3, 0x86, 0x6a, 0x31, 0x85, 0x0b, 0x67, 0xb0, 0xd3, + 0x01, 0xe9, 0xda, 0x56, 0x49, 0xfe, 0xc2, 0x06, 0x64, 0xb5, 0xd9, 0xc0, 0x14, 0x87, 0xfe, 0x8f, + 0xc7, 0x41, 0x89, 0xd5, 0x85, 0x3e, 0x04, 0x97, 0x0c, 0xc7, 0xf1, 0xee, 0xae, 0xfa, 0xf6, 0xb6, + 0xed, 0x90, 0x36, 0xb1, 0xa4, 0x3c, 0x13, 0x08, 0x27, 0x22, 0xa6, 0xb3, 0xcc, 0x17, 0x55, 0xc2, + 0xc5, 0xed, 0xd1, 0xe7, 0x34, 0x38, 0x6b, 0xa6, 0xe3, 0x23, 0x0d, 0xe2, 0x66, 0x90, 0x09, 0xb6, + 0xc4, 0xf7, 0x53, 0xa6, 0x18, 0x67, 0xc9, 0xa2, 0x9f, 0xd3, 0xb8, 0x5d, 0x4c, 0x5e, 0x02, 0x88, + 0x39, 0xbb, 0x71, 0x4c, 0xb7, 0xa4, 0xb1, 0x81, 0x2d, 0xbe, 0x66, 0x48, 0x12, 0x44, 0x5f, 0xd3, + 0xe0, 0xc2, 0x56, 0x9e, 0x39, 0x5f, 0xcc, 0xec, 0xed, 0xb2, 0x5d, 0x29, 0xb8, 0x1f, 0xe0, 0x12, + 0x65, 0x6e, 0x05, 0x9c, 0xdf, 0x11, 0x39, 0x4a, 0xd2, 0xc2, 0x29, 0x98, 0x40, 0xe9, 0x51, 0x4a, + 0x99, 0x4a, 0xe3, 0x51, 0x92, 0x00, 0x9c, 0x24, 0x88, 0xba, 0x30, 0xbe, 0x15, 0x99, 0x95, 0x85, + 0x29, 0xa9, 0x5e, 0x96, 0xba, 0x62, 0x9b, 0xe6, 0x57, 0x4d, 0xb2, 0x10, 0xc7, 0x44, 0xd0, 0x26, + 0x8c, 0x6d, 0x71, 0x46, 0x24, 0x4c, 0x40, 0xf3, 0x03, 0xab, 0xa8, 0xdc, 0x12, 0x21, 0x8a, 0x70, + 0x84, 0x5e, 0xf5, 0xa1, 0xac, 0x1e, 0xe0, 0xda, 0xff, 0x15, 0x0d, 0x2e, 0x6c, 0x13, 0x3f, 0xb4, + 0xcd, 0xf4, 0x65, 0xca, 0x78, 0x79, 0x35, 0xfa, 0xb9, 0x3c, 0x84, 0x7c, 0x99, 0xe4, 0x82, 0x70, + 0x7e, 0x17, 0xa8, 0x52, 0xcd, 0x6d, 0xe2, 0xad, 0xd0, 0x08, 0x6d, 0x73, 0xcd, 0xdb, 0x22, 0x2e, + 0xfd, 0x58, 0x91, 0xa5, 0x02, 0x18, 0xe3, 0x60, 0x4a, 0xf5, 0x62, 0x71, 0x35, 0xdc, 0x0f, 0x87, + 0xfe, 0x63, 0x0d, 0x32, 0x96, 0x5d, 0xf4, 0x05, 0x0d, 0x26, 0x37, 0x88, 0x11, 0xf6, 0x7c, 0x72, + 0xc3, 0x08, 0xe5, 0x23, 0xe1, 0xe7, 0x8e, 0xc3, 0xa0, 0x3c, 0x77, 0x5d, 0x41, 0xcc, 0xbd, 0x1c, + 0x64, 0x9c, 0x3f, 0x15, 0x84, 0x13, 0x3d, 0xb8, 0xfc, 0x0c, 0x9c, 0xcd, 0x34, 0x3c, 0xd2, 0x75, + 0xe9, 0xbf, 0xd1, 0x20, 0x2f, 0x6f, 0x09, 0x7a, 0x09, 0x46, 0x0c, 0xcb, 0x92, 0x61, 0xcd, 0x9f, + 0x2c, 0xe7, 0xcd, 0x63, 0xa9, 0x6f, 0xb1, 0xd9, 0x4f, 0xcc, 0xd1, 0xa2, 0xeb, 0x80, 0x8c, 0xc4, + 0x95, 0xfd, 0x72, 0xfc, 0x58, 0x91, 0x5d, 0x46, 0xcd, 0x67, 0xa0, 0x38, 0xa7, 0x85, 0xfe, 0xf3, + 0x1a, 0xa0, 0x6c, 0x64, 0x48, 0xe4, 0x43, 0x55, 0x2c, 0xe5, 0x68, 0x96, 0x1a, 0x25, 0x1f, 0x14, + 0x24, 0x5e, 0xc7, 0xc4, 0x2f, 0x18, 0x44, 0x41, 0x80, 0x25, 0x1d, 0xfd, 0xaf, 0x34, 0x88, 0x43, + 0x1f, 0xa3, 0x77, 0xc2, 0x84, 0x45, 0x02, 0xd3, 0xb7, 0xbb, 0x61, 0xfc, 0x96, 0x46, 0xfa, 0xe4, + 0x37, 0x62, 0x10, 0x56, 0xeb, 0x21, 0x1d, 0x46, 0x43, 0x23, 0xd8, 0x6a, 0x36, 0x84, 0x52, 0xc9, + 0x44, 0x80, 0x35, 0x56, 0x82, 0x05, 0x24, 0x8e, 0xf2, 0x34, 0x74, 0x88, 0x28, 0x4f, 0x68, 0xe3, + 0x18, 0x42, 0x5a, 0xa1, 0x83, 0xc3, 0x59, 0xe9, 0xbf, 0x51, 0x81, 0x33, 0xb4, 0xca, 0xb2, 0x61, + 0xbb, 0x21, 0x71, 0x99, 0xe7, 0x78, 0xc9, 0x41, 0x68, 0xc3, 0x54, 0x98, 0x78, 0x19, 0x75, 0xf4, + 0x77, 0x45, 0xd2, 0x45, 0x28, 0xf9, 0x1e, 0x2a, 0x89, 0x17, 0x3d, 0x19, 0xb9, 0xee, 0x73, 0xf5, + 0xfb, 0xa1, 0x68, 0xa9, 0x32, 0x7f, 0xfc, 0x7b, 0xe2, 0x99, 0x99, 0x8c, 0x97, 0x9d, 0xf0, 0xd2, + 0x7f, 0x17, 0x4c, 0x09, 0x17, 0x5a, 0x1e, 0xae, 0x4b, 0xa8, 0xdf, 0xec, 0x84, 0xb9, 0xae, 0x02, + 0x70, 0xb2, 0x9e, 0xfe, 0xbd, 0x0a, 0x24, 0xa3, 0x72, 0x97, 0x1d, 0xa5, 0x6c, 0xac, 0xb2, 0xca, + 0x89, 0xc5, 0x2a, 0x7b, 0x3b, 0x4b, 0x69, 0xc1, 0xb3, 0x15, 0xf1, 0x5b, 0x6a, 0x35, 0x11, 0x05, + 0xcf, 0x35, 0x24, 0x6b, 0xc4, 0xc3, 0x3a, 0x7c, 0xe4, 0x61, 0x7d, 0xa7, 0xf0, 0xc0, 0x1f, 0x49, + 0x44, 0x8c, 0x8b, 0xde, 0x1a, 0x9c, 0x4d, 0x34, 0x54, 0x1e, 0x1a, 0x7c, 0x5b, 0x83, 0x31, 0x11, + 0x0e, 0xf5, 0x10, 0x0f, 0x59, 0x36, 0x60, 0x84, 0xa9, 0x3c, 0x83, 0x48, 0x83, 0xad, 0x4d, 0xcf, + 0x0b, 0x13, 0x41, 0x61, 0x99, 0xe7, 0x38, 0xfb, 0x17, 0x73, 0xf4, 0xcc, 0x25, 0xd1, 0x37, 0x37, + 0xed, 0x90, 0x98, 0x61, 0x14, 0x6a, 0x32, 0x72, 0x49, 0x54, 0xca, 0x71, 0xa2, 0x96, 0xfe, 0xd5, + 0x61, 0xb8, 0x2a, 0x10, 0x67, 0x44, 0x24, 0xc9, 0xe0, 0x76, 0xe1, 0x9c, 0x98, 0xdb, 0x86, 0x6f, + 0xd8, 0xf2, 0xf6, 0xbf, 0x9c, 0xea, 0x2b, 0xfc, 0x42, 0x32, 0xe8, 0x70, 0x1e, 0x0d, 0x1e, 0x34, + 0x91, 0x15, 0xdf, 0x24, 0x86, 0x13, 0x6e, 0x46, 0xb4, 0x2b, 0x83, 0x04, 0x4d, 0xcc, 0xe2, 0xc3, + 0xb9, 0x54, 0x98, 0xf7, 0x81, 0x00, 0xd4, 0x7d, 0x62, 0xa8, 0xae, 0x0f, 0x03, 0x38, 0x7f, 0x2f, + 0xe7, 0x62, 0xc4, 0x05, 0x94, 0x98, 0x0d, 0xd1, 0xd8, 0x61, 0x26, 0x09, 0x4c, 0x42, 0xdf, 0x66, + 0xc1, 0x7d, 0xa5, 0x21, 0x7b, 0x39, 0x09, 0xc2, 0xe9, 0xba, 0xe8, 0x29, 0x98, 0x66, 0xde, 0x1c, + 0x71, 0x74, 0xa2, 0x91, 0xf8, 0x2d, 0xfd, 0x4a, 0x02, 0x82, 0x53, 0x35, 0xf5, 0xdf, 0xd4, 0x60, + 0x52, 0x5d, 0x76, 0x87, 0x78, 0xd5, 0xd2, 0x53, 0x0e, 0xc3, 0x01, 0x5e, 0x5c, 0xa8, 0x54, 0x0f, + 0x73, 0x1e, 0x7e, 0x7e, 0x08, 0xce, 0xe5, 0xb4, 0x61, 0x77, 0xf3, 0x24, 0x75, 0xb0, 0x0e, 0x72, + 0x37, 0x9f, 0x39, 0xa4, 0xe5, 0xdd, 0x7c, 0x1a, 0x82, 0x33, 0x74, 0xd1, 0x73, 0x30, 0x64, 0xfa, + 0xb6, 0x18, 0x96, 0x77, 0x95, 0x52, 0x0b, 0x71, 0x73, 0x61, 0x42, 0x50, 0x1c, 0xaa, 0xe3, 0x26, + 0xa6, 0x08, 0xe9, 0xf1, 0xa0, 0x6e, 0xea, 0xe8, 0xac, 0x66, 0xc7, 0x83, 0xba, 0xf7, 0x03, 0x9c, + 0xac, 0x87, 0x5e, 0x80, 0x59, 0x21, 0xaf, 0x47, 0xef, 0x58, 0x3d, 0x37, 0x08, 0xe9, 0xfe, 0x0b, + 0x05, 0x3b, 0x7d, 0x60, 0x7f, 0xaf, 0x36, 0x7b, 0xab, 0xa0, 0x0e, 0x2e, 0x6c, 0xad, 0xff, 0xc5, + 0x10, 0x4c, 0x28, 0x21, 0xa3, 0xd1, 0xf2, 0x20, 0x86, 0x8e, 0xf8, 0x8b, 0x23, 0x63, 0xc7, 0x32, + 0x0c, 0xb5, 0xbb, 0xbd, 0x92, 0x96, 0x0e, 0x89, 0xee, 0x06, 0x45, 0xd7, 0xee, 0xf6, 0xd0, 0x73, + 0xd2, 0x76, 0x52, 0xce, 0xba, 0x21, 0x5f, 0x1d, 0xa4, 0xec, 0x27, 0xd1, 0x76, 0x19, 0x2e, 0xdc, + 0x2e, 0x1d, 0x18, 0x0b, 0x84, 0x61, 0x65, 0xa4, 0x7c, 0xe4, 0x10, 0x65, 0xa4, 0x85, 0x21, 0x85, + 0x6b, 0x65, 0x91, 0x9d, 0x25, 0xa2, 0x41, 0x25, 0xbe, 0x1e, 0x7b, 0xcb, 0xc8, 0xd4, 0xcd, 0x2a, + 0x97, 0xf8, 0xee, 0xb0, 0x12, 0x2c, 0x20, 0x99, 0x83, 0x64, 0xec, 0x50, 0x07, 0xc9, 0x67, 0x2a, + 0x80, 0xb2, 0xdd, 0x40, 0x0f, 0xc1, 0x08, 0x7b, 0x0b, 0x2d, 0x38, 0x86, 0x94, 0xcf, 0xd9, 0x6b, + 0x58, 0xcc, 0x61, 0xa8, 0x25, 0xe2, 0x20, 0x94, 0x9b, 0x4e, 0xe6, 0xdc, 0x22, 0xe8, 0x29, 0x41, + 0x13, 0xa2, 0x93, 0x79, 0xa8, 0xf0, 0x64, 0xbe, 0x03, 0x63, 0x1d, 0xdb, 0x65, 0x37, 0x6c, 0xe5, + 0xec, 0x4d, 0xfc, 0x0e, 0x9e, 0xa3, 0xc0, 0x11, 0x2e, 0xfd, 0x07, 0x15, 0xba, 0xf4, 0x63, 0xb9, + 0x74, 0x17, 0xc0, 0xe8, 0x85, 0x1e, 0x17, 0x70, 0xc4, 0x0e, 0x68, 0x96, 0x9b, 0x65, 0x89, 0x74, + 0x5e, 0x22, 0xe4, 0x57, 0xe3, 0xf1, 0x6f, 0xac, 0x10, 0xa3, 0xa4, 0x43, 0xbb, 0x43, 0x9e, 0xb7, + 0x5d, 0xcb, 0xbb, 0x2b, 0x86, 0x77, 0x50, 0xd2, 0x6b, 0x12, 0x21, 0x27, 0x1d, 0xff, 0xc6, 0x0a, + 0x31, 0xca, 0x5a, 0x98, 0x7a, 0xeb, 0xb2, 0x18, 0xfe, 0xa2, 0x6f, 0x9e, 0xe3, 0x44, 0x67, 0x67, + 0x95, 0xb3, 0x96, 0x7a, 0x41, 0x1d, 0x5c, 0xd8, 0x5a, 0xff, 0x6d, 0x0d, 0x2e, 0xe4, 0x0e, 0x05, + 0xba, 0x01, 0x67, 0x63, 0x7f, 0x28, 0x95, 0xd9, 0x57, 0xe3, 0xdc, 0x11, 0xb7, 0xd2, 0x15, 0x70, + 0xb6, 0x0d, 0x5a, 0x96, 0x02, 0x8f, 0x7a, 0x98, 0x08, 0x67, 0xaa, 0xfb, 0x05, 0xaa, 0xbc, 0xf3, + 0x06, 0xe7, 0xb5, 0xd3, 0x3f, 0x94, 0xe8, 0x70, 0x3c, 0x60, 0x74, 0x77, 0xac, 0x93, 0xb6, 0x7c, + 0xbc, 0x24, 0x77, 0xc7, 0x02, 0x2d, 0xc4, 0x1c, 0x86, 0x1e, 0x54, 0x9f, 0x04, 0x4a, 0xde, 0x15, + 0x3d, 0x0b, 0xd4, 0x43, 0x00, 0xe1, 0xb2, 0x68, 0xbb, 0x6d, 0xb4, 0x01, 0x55, 0x43, 0xa4, 0xb0, + 0x14, 0x4b, 0xed, 0xbd, 0xa5, 0xb4, 0x69, 0x81, 0x83, 0x7b, 0xa6, 0x47, 0xbf, 0xb0, 0xc4, 0xad, + 0xff, 0x13, 0x0d, 0x2e, 0xe6, 0xbf, 0xf9, 0x3d, 0x84, 0x8c, 0xd0, 0x81, 0x09, 0x3f, 0x6e, 0x26, + 0xd6, 0xe5, 0xcf, 0xa8, 0x91, 0x1a, 0x95, 0x28, 0x47, 0x54, 0x7e, 0xaa, 0xfb, 0x5e, 0x10, 0x4d, + 0x4e, 0x3a, 0x78, 0xa3, 0xd4, 0x5d, 0x94, 0x9e, 0x60, 0x15, 0xbf, 0xfe, 0x6f, 0x2b, 0x00, 0x2b, + 0x24, 0xbc, 0xeb, 0xf9, 0x5b, 0x74, 0x88, 0x5e, 0x57, 0x6f, 0xcf, 0x1f, 0x80, 0xe1, 0xae, 0x67, + 0x05, 0x82, 0x4b, 0xb1, 0x47, 0xe1, 0xcc, 0xa3, 0x87, 0x95, 0xa2, 0x1a, 0x8c, 0xb0, 0x5b, 0x04, + 0x71, 0x80, 0x30, 0xa1, 0x9f, 0x8a, 0x6c, 0x01, 0xe6, 0xe5, 0x3c, 0x39, 0x11, 0x7b, 0xf5, 0x11, + 0x08, 0x2d, 0x46, 0x24, 0x27, 0xe2, 0x65, 0x58, 0x42, 0xd1, 0x53, 0x00, 0x76, 0xf7, 0xba, 0xd1, + 0xb1, 0x1d, 0x2a, 0x40, 0x8e, 0xca, 0x5c, 0x98, 0xd0, 0x5c, 0x8d, 0x4a, 0xef, 0xed, 0xd5, 0xaa, + 0xe2, 0xd7, 0x2e, 0x56, 0x6a, 0xeb, 0x9f, 0x18, 0x86, 0x44, 0xa6, 0xd7, 0xd8, 0x60, 0xa3, 0x9d, + 0x8c, 0xc1, 0xe6, 0x05, 0x98, 0x75, 0x3c, 0xc3, 0x5a, 0x30, 0x1c, 0xba, 0x61, 0xfc, 0x16, 0x9f, + 0x4a, 0xc3, 0x6d, 0xcb, 0xe4, 0xa0, 0x8c, 0x79, 0x2c, 0x15, 0xd4, 0xc1, 0x85, 0xad, 0x51, 0x28, + 0xf3, 0xcb, 0xf2, 0xf4, 0x1c, 0x4b, 0x83, 0xe6, 0xc1, 0x9d, 0x53, 0xdf, 0x0a, 0x49, 0x39, 0x20, + 0x95, 0x82, 0xf6, 0xd3, 0x1a, 0x5c, 0x20, 0x3b, 0x21, 0xf1, 0x5d, 0xc3, 0x59, 0xf3, 0x8d, 0x8d, + 0x0d, 0xdb, 0x14, 0x7e, 0x96, 0x7c, 0x62, 0x57, 0xf7, 0xf7, 0x6a, 0x17, 0x16, 0xf3, 0x2a, 0xdc, + 0xdb, 0xab, 0xbd, 0x23, 0x9b, 0xe6, 0x39, 0x7a, 0x1a, 0x94, 0xdb, 0x84, 0x2d, 0xe4, 0x7c, 0x72, + 0x97, 0x9f, 0x84, 0x89, 0x23, 0xbc, 0x75, 0x48, 0x3c, 0xc1, 0xfe, 0xfd, 0x0a, 0x4c, 0xd2, 0xb5, + 0xb7, 0xe4, 0x99, 0x86, 0xd3, 0x58, 0x69, 0x1d, 0x21, 0x47, 0x32, 0x5a, 0x82, 0xf3, 0x1b, 0x9e, + 0x6f, 0x92, 0xb5, 0xfa, 0xea, 0x9a, 0x27, 0xee, 0x30, 0x1a, 0x2b, 0x2d, 0xc1, 0x50, 0x99, 0x56, + 0x76, 0x3d, 0x07, 0x8e, 0x73, 0x5b, 0xa1, 0xdb, 0x70, 0x21, 0x2e, 0xbf, 0xd3, 0xe5, 0xce, 0x19, + 0x14, 0xdd, 0x50, 0xec, 0x5c, 0x72, 0x3d, 0xaf, 0x02, 0xce, 0x6f, 0x87, 0x0c, 0xb8, 0x5f, 0x84, + 0x78, 0xb8, 0xee, 0xf9, 0x77, 0x0d, 0xdf, 0x4a, 0xa2, 0x1d, 0x8e, 0x6d, 0xbc, 0x8d, 0xe2, 0x6a, + 0xb8, 0x1f, 0x0e, 0xfd, 0x57, 0x46, 0x41, 0x79, 0xd4, 0x76, 0x84, 0x94, 0x36, 0xbf, 0xae, 0xc1, + 0x79, 0xd3, 0xb1, 0x89, 0x1b, 0xa6, 0x5e, 0x2f, 0x71, 0x96, 0x74, 0xa7, 0xd4, 0x6b, 0xbb, 0x2e, + 0x71, 0x9b, 0x0d, 0xe1, 0xcb, 0x52, 0xcf, 0x41, 0x2e, 0xfc, 0x7d, 0x72, 0x20, 0x38, 0xb7, 0x33, + 0xec, 0x7b, 0x58, 0x79, 0xb3, 0xa1, 0xbe, 0x4d, 0xaf, 0x8b, 0x32, 0x2c, 0xa1, 0xe8, 0x31, 0x98, + 0x68, 0xfb, 0x5e, 0xaf, 0x1b, 0xd4, 0x99, 0x03, 0x2d, 0x5f, 0xff, 0x4c, 0x84, 0xbb, 0x11, 0x17, + 0x63, 0xb5, 0x0e, 0x15, 0x48, 0xf9, 0xcf, 0x55, 0x9f, 0x6c, 0xd8, 0x3b, 0x82, 0xd1, 0x31, 0x81, + 0xf4, 0x86, 0x52, 0x8e, 0x13, 0xb5, 0xd0, 0xdb, 0x60, 0xdc, 0x0e, 0x82, 0x1e, 0xf1, 0xef, 0xe0, + 0x25, 0x11, 0xcb, 0x9e, 0xdd, 0x8b, 0x34, 0xa3, 0x42, 0x1c, 0xc3, 0xd1, 0x17, 0x35, 0x98, 0xf6, + 0xc9, 0x2b, 0x3d, 0xdb, 0x27, 0x16, 0x23, 0x1a, 0x88, 0x97, 0x85, 0x78, 0xb0, 0xd7, 0x8c, 0x73, + 0x38, 0x81, 0x94, 0x73, 0x09, 0x69, 0x07, 0x4b, 0x02, 0x71, 0xaa, 0x07, 0x74, 0xa8, 0x02, 0xbb, + 0xed, 0xda, 0x6e, 0x7b, 0xde, 0x69, 0x07, 0xb3, 0x55, 0xc6, 0xf8, 0xb8, 0xb4, 0x1b, 0x17, 0x63, + 0xb5, 0x0e, 0xd5, 0x04, 0x7b, 0x01, 0xdd, 0xf7, 0x1d, 0xc2, 0xc7, 0x77, 0x3c, 0x36, 0x14, 0xde, + 0x51, 0x01, 0x38, 0x59, 0x0f, 0x3d, 0x05, 0xd3, 0x51, 0x81, 0x18, 0x65, 0xe0, 0x41, 0xc9, 0x68, + 0x3f, 0xef, 0x24, 0x20, 0x38, 0x55, 0xf3, 0xf2, 0x3c, 0x9c, 0xcb, 0xf9, 0xcc, 0x23, 0x31, 0x97, + 0xdf, 0xac, 0xc0, 0x9b, 0x0f, 0x5c, 0x95, 0xe8, 0x1f, 0x6a, 0x30, 0x41, 0x76, 0x42, 0xdf, 0x90, + 0x3e, 0xf6, 0x74, 0x8a, 0x36, 0x4e, 0x64, 0x0b, 0xcc, 0x2d, 0xc6, 0x84, 0xf8, 0xb4, 0x49, 0x41, + 0x43, 0x81, 0x60, 0xb5, 0x3f, 0x54, 0xbb, 0xe2, 0x21, 0xeb, 0x54, 0x7b, 0xba, 0x48, 0x12, 0x2a, + 0x20, 0x97, 0xdf, 0x07, 0x33, 0x69, 0xcc, 0x47, 0x1a, 0xa9, 0xdf, 0xab, 0xc0, 0xd8, 0xaa, 0xef, + 0x51, 0x19, 0xe8, 0x14, 0x82, 0x48, 0x19, 0x89, 0xd8, 0xcb, 0xa5, 0x9e, 0x2a, 0x8b, 0xce, 0x16, + 0xc6, 0x7d, 0xb7, 0x53, 0x71, 0xdf, 0xe7, 0x07, 0x21, 0xd2, 0x3f, 0xd0, 0xfb, 0xbf, 0xd7, 0x60, + 0x42, 0xd4, 0x3c, 0x85, 0x20, 0x53, 0x1f, 0x4e, 0x06, 0x99, 0x7a, 0xcf, 0x00, 0xdf, 0x55, 0x10, + 0x5e, 0xea, 0x2b, 0x1a, 0x4c, 0x89, 0x1a, 0xcb, 0xa4, 0xb3, 0x4e, 0x7c, 0x74, 0x1d, 0xc6, 0x82, + 0x1e, 0x9b, 0x48, 0xf1, 0x41, 0xf7, 0xab, 0x52, 0xb5, 0xbf, 0x6e, 0x98, 0x2c, 0xd3, 0x2d, 0xaf, + 0xa2, 0x44, 0x53, 0xe7, 0x05, 0x38, 0x6a, 0x4c, 0x65, 0x64, 0xdf, 0x73, 0x32, 0xb1, 0x69, 0xb0, + 0xe7, 0x10, 0xcc, 0x20, 0x54, 0x34, 0xa5, 0x7f, 0x23, 0x5b, 0x13, 0x13, 0x4d, 0x29, 0x38, 0xc0, + 0xbc, 0x5c, 0xff, 0xd4, 0xb0, 0x1c, 0x6c, 0x16, 0xf1, 0xf8, 0x26, 0x8c, 0x9b, 0x3e, 0x31, 0x42, + 0x62, 0x2d, 0xec, 0x1e, 0xa6, 0x73, 0x8c, 0x59, 0xd7, 0xa3, 0x16, 0x38, 0x6e, 0x4c, 0xf9, 0xa2, + 0x7a, 0x85, 0x51, 0x89, 0x8f, 0x90, 0xc2, 0xeb, 0x8b, 0xf7, 0xc2, 0x88, 0x77, 0xd7, 0x95, 0x9e, + 0x10, 0x7d, 0x09, 0xb3, 0x4f, 0xb9, 0x4d, 0x6b, 0x63, 0xde, 0x48, 0x8d, 0xcd, 0x34, 0xdc, 0x27, + 0x36, 0x93, 0x03, 0x63, 0x1d, 0x36, 0x0d, 0x03, 0x05, 0xd7, 0x4e, 0x4c, 0xa8, 0x9a, 0x7e, 0x85, + 0x61, 0xc6, 0x11, 0x09, 0x7a, 0xbe, 0x51, 0x1e, 0x1c, 0x74, 0x0d, 0x93, 0xa8, 0xe7, 0xdb, 0x4a, + 0x54, 0x88, 0x63, 0x38, 0xda, 0x4d, 0x06, 0xfd, 0x1a, 0x2b, 0x6f, 0x6a, 0x12, 0xdd, 0x53, 0xe2, + 0x7c, 0xf1, 0xa1, 0x2f, 0x0c, 0xfc, 0xf5, 0x0b, 0xc3, 0x72, 0x91, 0x8a, 0x58, 0xf9, 0xf9, 0xd9, + 0x59, 0xb5, 0x52, 0xd9, 0x59, 0xdf, 0x11, 0x05, 0xa7, 0xac, 0x24, 0x52, 0x05, 0xc9, 0xe0, 0x94, + 0x93, 0x82, 0x74, 0x22, 0x20, 0x65, 0x0f, 0xce, 0x05, 0xa1, 0xe1, 0x90, 0x96, 0x2d, 0xd4, 0xf1, + 0x20, 0x34, 0x3a, 0xdd, 0x12, 0xd1, 0x21, 0xb9, 0x47, 0x7a, 0x16, 0x15, 0xce, 0xc3, 0x8f, 0x3e, + 0xa9, 0xc1, 0x2c, 0x2b, 0x9f, 0xef, 0x85, 0x1e, 0x0f, 0x63, 0x1c, 0x13, 0x3f, 0xfa, 0x3d, 0x29, + 0x53, 0x81, 0x5a, 0x05, 0xf8, 0x70, 0x21, 0x25, 0xf4, 0x1a, 0x5c, 0x70, 0x8c, 0x20, 0x9c, 0x37, + 0x43, 0x7b, 0xdb, 0x0e, 0x77, 0xe3, 0x2e, 0x1c, 0x3d, 0x24, 0x24, 0x13, 0xb5, 0x97, 0xf2, 0x90, + 0xe1, 0x7c, 0x1a, 0xfa, 0x5f, 0x6a, 0x80, 0xb2, 0x4b, 0x08, 0x39, 0x50, 0xb5, 0x22, 0x17, 0x71, + 0xed, 0x58, 0x22, 0xd2, 0x49, 0xce, 0x2c, 0x3d, 0xcb, 0x25, 0x05, 0xe4, 0xc1, 0xf8, 0xdd, 0x4d, + 0x3b, 0x24, 0x8e, 0x1d, 0x84, 0xc7, 0x14, 0x00, 0x4f, 0x46, 0x83, 0x7a, 0x3e, 0x42, 0x8c, 0x63, + 0x1a, 0xfa, 0x2f, 0x0e, 0x83, 0xcc, 0xa1, 0x7f, 0x08, 0xfb, 0x43, 0x0f, 0x90, 0xa9, 0x24, 0x22, + 0x1a, 0xc4, 0x06, 0xc1, 0xdc, 0x1b, 0xea, 0x19, 0x64, 0x38, 0x87, 0x00, 0x7a, 0x0d, 0xce, 0xdb, + 0xee, 0x86, 0x6f, 0x04, 0xa1, 0xdf, 0x63, 0x46, 0xdd, 0x41, 0xf2, 0xf9, 0x30, 0x0d, 0xa2, 0x99, + 0x83, 0x0e, 0xe7, 0x12, 0x41, 0x04, 0xc6, 0xee, 0x7a, 0xfe, 0x16, 0x65, 0x9e, 0xc3, 0xe5, 0x33, + 0x3b, 0x3e, 0xcf, 0x50, 0xc4, 0x5c, 0x93, 0xff, 0x0e, 0x70, 0x84, 0x9b, 0x87, 0xc3, 0xe0, 0xff, + 0x47, 0xd7, 0x9b, 0x62, 0xdd, 0xd7, 0xcb, 0xd3, 0x8b, 0x93, 0x84, 0xf2, 0x70, 0x18, 0xc9, 0x42, + 0x9c, 0x26, 0xa8, 0xff, 0x91, 0x06, 0x23, 0xfc, 0xe9, 0xe5, 0xc9, 0x4b, 0x70, 0x7f, 0x37, 0x21, + 0xc1, 0x95, 0x4a, 0x49, 0xc2, 0xba, 0x5a, 0x98, 0x2c, 0xe3, 0xdb, 0x1a, 0x8c, 0xb3, 0x1a, 0xa7, + 0x20, 0x52, 0xbd, 0x94, 0x14, 0xa9, 0x9e, 0x2c, 0xfd, 0x35, 0x05, 0x02, 0xd5, 0x1f, 0x0d, 0x89, + 0x6f, 0x61, 0x12, 0x4b, 0x13, 0xce, 0x09, 0xe7, 0xca, 0x25, 0x7b, 0x83, 0xd0, 0x25, 0xde, 0x30, + 0x76, 0x03, 0x11, 0x2f, 0x81, 0xbf, 0xae, 0xc9, 0x82, 0x71, 0x5e, 0x1b, 0xf4, 0xfb, 0x1a, 0x95, + 0x0d, 0x42, 0xdf, 0x36, 0x07, 0xca, 0x40, 0x21, 0xfb, 0x36, 0xb7, 0xcc, 0x91, 0x71, 0xcd, 0xe4, + 0x4e, 0x2c, 0x24, 0xb0, 0xd2, 0x7b, 0x7b, 0xb5, 0x5a, 0x8e, 0xd1, 0x28, 0x0e, 0x6c, 0x1f, 0x84, + 0x9f, 0xf8, 0x61, 0xdf, 0x2a, 0xcc, 0x58, 0x1b, 0xf5, 0x18, 0xdd, 0x84, 0x91, 0xc0, 0xf4, 0xba, + 0xe4, 0x28, 0x39, 0x75, 0xe4, 0x00, 0xb7, 0x68, 0x4b, 0xcc, 0x11, 0x5c, 0x7e, 0x19, 0x26, 0xd5, + 0x9e, 0xe7, 0x68, 0x3e, 0x0d, 0x55, 0xf3, 0x39, 0xf2, 0x95, 0x8c, 0xaa, 0x29, 0xfd, 0x41, 0x05, + 0x46, 0x79, 0x66, 0xd7, 0x43, 0x98, 0xa4, 0xed, 0x28, 0x82, 0xf8, 0x00, 0x09, 0xab, 0xd5, 0x70, + 0x7b, 0x2f, 0x7a, 0xae, 0x32, 0x06, 0x6a, 0x10, 0x71, 0xe4, 0xca, 0x20, 0x8c, 0x43, 0xe5, 0xf3, + 0x7e, 0xf0, 0x0f, 0x3b, 0xe9, 0xb0, 0x8b, 0x7f, 0xac, 0xc1, 0x64, 0x22, 0xaa, 0x65, 0x07, 0x86, + 0x7c, 0x99, 0x11, 0xaa, 0xac, 0xc5, 0x3e, 0x72, 0xd1, 0xb9, 0xbf, 0x4f, 0x25, 0x4c, 0xe9, 0xc8, + 0x00, 0x98, 0x95, 0x63, 0x0a, 0x80, 0xa9, 0x7f, 0x49, 0x83, 0x8b, 0xd1, 0x07, 0x25, 0xa3, 0x16, + 0xa1, 0x47, 0xa0, 0x6a, 0x74, 0x6d, 0x66, 0x50, 0x52, 0x4d, 0x72, 0xf3, 0xab, 0x4d, 0x56, 0x86, + 0x25, 0x14, 0xbd, 0x1d, 0xaa, 0xd1, 0xc2, 0x13, 0x62, 0xa7, 0xe4, 0x59, 0xf2, 0x0e, 0x42, 0xd6, + 0x40, 0x6f, 0x51, 0x82, 0xbc, 0x8f, 0xc4, 0x72, 0x82, 0x24, 0xcc, 0xaf, 0x2b, 0xf5, 0x9f, 0x81, + 0xf1, 0x56, 0xeb, 0x26, 0x8f, 0xe7, 0x72, 0x04, 0xd3, 0xaa, 0xfe, 0xd9, 0x21, 0x98, 0xe2, 0x26, + 0x86, 0x05, 0xdb, 0xb5, 0x6c, 0xb7, 0x7d, 0x0a, 0x67, 0xca, 0x1a, 0x8c, 0x73, 0x6b, 0xc6, 0x01, + 0xd9, 0xbb, 0x5a, 0x51, 0xa5, 0x74, 0x34, 0x58, 0x09, 0xc0, 0x31, 0x22, 0x74, 0x0b, 0x46, 0x5f, + 0xa1, 0xfc, 0x2d, 0xda, 0x17, 0x87, 0x62, 0x33, 0x72, 0xd1, 0x33, 0xd6, 0x18, 0x60, 0x81, 0x02, + 0x05, 0xcc, 0x87, 0x8c, 0x09, 0x5c, 0x83, 0x44, 0x23, 0x48, 0x8c, 0xac, 0x4c, 0xf1, 0x30, 0x29, + 0x5c, 0xd1, 0xd8, 0x2f, 0x2c, 0x09, 0xb1, 0x50, 0xd6, 0x89, 0x16, 0x6f, 0x90, 0x50, 0xd6, 0x89, + 0x3e, 0x17, 0x1c, 0x8d, 0x4f, 0xc2, 0x85, 0xdc, 0xc1, 0x38, 0x58, 0x9c, 0xd5, 0x7f, 0xa7, 0x02, + 0xc3, 0x2d, 0x42, 0xac, 0x53, 0x58, 0x99, 0x2f, 0x25, 0xa4, 0x9d, 0xf7, 0x96, 0x0e, 0xa6, 0x5d, + 0x64, 0xac, 0xda, 0x48, 0x19, 0xab, 0xde, 0x57, 0x9a, 0x42, 0x7f, 0x4b, 0xd5, 0xaf, 0x56, 0x00, + 0x68, 0xb5, 0x05, 0xc3, 0xdc, 0xe2, 0x1c, 0x47, 0xae, 0x66, 0x2d, 0xc9, 0x71, 0xb2, 0xcb, 0xf0, + 0x34, 0xaf, 0x2f, 0x75, 0x18, 0xe5, 0x39, 0xd3, 0x85, 0xd5, 0x1f, 0x78, 0x4a, 0x59, 0x5a, 0x82, + 0x05, 0x24, 0xc9, 0x2d, 0x86, 0x8f, 0x89, 0x5b, 0xe8, 0xff, 0x5c, 0x03, 0x96, 0x04, 0xb0, 0xb1, + 0xc2, 0xde, 0x6a, 0xdb, 0xfc, 0x36, 0xae, 0xa1, 0xc6, 0x02, 0x65, 0x56, 0xef, 0xa6, 0x0a, 0xc0, + 0xc9, 0x7a, 0xa8, 0xa3, 0x8c, 0x6b, 0xa5, 0xbc, 0x16, 0x20, 0xfa, 0x71, 0x20, 0x7f, 0xf8, 0x61, + 0x05, 0xce, 0xa4, 0xea, 0x1e, 0x42, 0x1b, 0x3c, 0x19, 0x6e, 0xab, 0x64, 0x85, 0x19, 0x3a, 0xf9, + 0xac, 0x30, 0x32, 0x41, 0xcb, 0xf0, 0xc9, 0x26, 0x68, 0xf9, 0x43, 0x0d, 0xaa, 0x74, 0x84, 0x4f, + 0x81, 0xf1, 0xfe, 0x9d, 0x24, 0xe3, 0x7d, 0x77, 0xd9, 0x85, 0x53, 0xc0, 0x6f, 0xff, 0xbc, 0x02, + 0x2c, 0x8a, 0xbf, 0x70, 0x5c, 0x50, 0x7c, 0x01, 0xb4, 0x02, 0x5f, 0x80, 0xab, 0xc2, 0x95, 0x20, + 0x65, 0xb3, 0x55, 0xdc, 0x09, 0xde, 0xae, 0x78, 0x0b, 0x0c, 0x25, 0xd9, 0x48, 0x8e, 0xc7, 0xc0, + 0xab, 0x30, 0x15, 0x6c, 0x7a, 0x5e, 0x28, 0xdf, 0xee, 0x0f, 0x97, 0xb7, 0xcf, 0x33, 0x07, 0xe6, + 0xe8, 0x53, 0xf8, 0xc6, 0x6c, 0xa9, 0xb8, 0x71, 0x92, 0x14, 0x9a, 0x03, 0x58, 0x77, 0x3c, 0x73, + 0xab, 0xde, 0x6c, 0xe0, 0xc8, 0x61, 0x95, 0x79, 0x1b, 0x2d, 0xc8, 0x52, 0xac, 0xd4, 0x18, 0xc8, + 0xbb, 0xe1, 0xcf, 0x34, 0x3e, 0xd2, 0x47, 0xd8, 0x92, 0xa7, 0xc8, 0x61, 0xdf, 0x9a, 0xe2, 0xb0, + 0x4a, 0xe2, 0xee, 0x04, 0x97, 0xad, 0xc5, 0x3b, 0x4c, 0xda, 0xe3, 0x13, 0x5b, 0xe3, 0xf7, 0xc4, + 0x67, 0xca, 0x44, 0x10, 0x5d, 0x98, 0x72, 0xd4, 0x24, 0x92, 0x62, 0x8f, 0x94, 0xca, 0x3f, 0x29, + 0x5f, 0x40, 0x24, 0x8a, 0x71, 0x92, 0x00, 0xe5, 0xd3, 0xd1, 0xd7, 0xd1, 0xc1, 0x8c, 0x7c, 0x39, + 0xd8, 0x72, 0x58, 0x55, 0x01, 0x38, 0x59, 0x4f, 0xff, 0x47, 0x15, 0x78, 0x90, 0xf7, 0x9d, 0x59, + 0x50, 0x1a, 0xa4, 0x4b, 0x5c, 0x8b, 0xb8, 0xe6, 0x2e, 0x93, 0xe1, 0x2d, 0xaf, 0x8d, 0xfe, 0xbe, + 0x06, 0x55, 0xe2, 0x5a, 0x5d, 0xcf, 0x76, 0xa3, 0xab, 0x8f, 0x0f, 0x96, 0x4f, 0xa5, 0x51, 0x40, + 0x65, 0x51, 0x10, 0x10, 0xf1, 0x3a, 0xc5, 0x2f, 0x2c, 0x09, 0xa3, 0xbb, 0x30, 0xd2, 0xf5, 0xbd, + 0xf5, 0x48, 0x79, 0x7d, 0xee, 0xd8, 0x7b, 0xb0, 0x4a, 0xb1, 0xf3, 0xc9, 0x65, 0xff, 0x62, 0x4e, + 0x4f, 0xc7, 0xf0, 0x96, 0x43, 0xf5, 0xfc, 0x28, 0x9a, 0xc5, 0x6d, 0xd0, 0x0f, 0xee, 0xcb, 0x51, + 0x10, 0x3e, 0x0b, 0x0f, 0x2b, 0x08, 0x17, 0x77, 0xa8, 0xaa, 0x53, 0x37, 0xba, 0x86, 0x49, 0x15, + 0x77, 0xf6, 0x22, 0x9a, 0xdb, 0xf4, 0x8f, 0x80, 0xf2, 0x33, 0xc3, 0x50, 0x53, 0x70, 0x26, 0x1c, + 0x82, 0x22, 0x3e, 0xf6, 0x55, 0x0d, 0x26, 0x0c, 0xd7, 0x15, 0x99, 0xa9, 0x22, 0xfb, 0xb2, 0x35, + 0xe0, 0xdc, 0xe4, 0x91, 0x9a, 0x9b, 0x8f, 0xc9, 0xa4, 0xee, 0x8c, 0x15, 0x08, 0x56, 0x7b, 0xd3, + 0xc7, 0x35, 0xa8, 0x72, 0xaa, 0xae, 0x41, 0xe8, 0xa3, 0x11, 0x03, 0xe1, 0xda, 0xd7, 0x0b, 0x27, + 0x30, 0x3e, 0x8c, 0x1f, 0xe5, 0x5b, 0x45, 0x2e, 0xbf, 0x0f, 0x66, 0xd2, 0xa3, 0x77, 0x24, 0x53, + 0xc5, 0xbf, 0x1a, 0x4a, 0xac, 0xae, 0x42, 0xf2, 0x87, 0xb0, 0x05, 0x7d, 0x2d, 0xb5, 0x60, 0xf8, + 0x01, 0x6f, 0x9f, 0xd4, 0x80, 0x1c, 0xef, 0xaa, 0x19, 0x3a, 0x5d, 0x87, 0xb2, 0x41, 0xa7, 0xad, + 0x0e, 0x17, 0x95, 0x31, 0x62, 0xb7, 0xae, 0xf5, 0x4d, 0x62, 0x6e, 0x1d, 0xc9, 0x06, 0xb2, 0x40, + 0x75, 0x53, 0x89, 0x44, 0xc9, 0xb1, 0xf4, 0x28, 0x8c, 0x6d, 0xdb, 0x81, 0x1d, 0xc5, 0xe9, 0x50, + 0x70, 0x3c, 0xc7, 0x8b, 0x71, 0x04, 0xd7, 0x97, 0x12, 0x8c, 0x64, 0xcd, 0xeb, 0x7a, 0x8e, 0xd7, + 0xde, 0x9d, 0xbf, 0x6b, 0xf8, 0x04, 0x7b, 0xbd, 0x50, 0x60, 0x3b, 0x6c, 0x8f, 0x96, 0xe1, 0xaa, + 0x82, 0x2d, 0xf7, 0xc1, 0xf1, 0x51, 0xd0, 0x7d, 0xa7, 0x1a, 0x9d, 0xdd, 0xe2, 0x45, 0xd6, 0x37, + 0x34, 0xb8, 0x44, 0x8a, 0x18, 0xa8, 0x38, 0xff, 0x06, 0xdd, 0xc1, 0x85, 0x0c, 0x5a, 0x84, 0x52, + 0x2c, 0x02, 0xe3, 0xe2, 0x9e, 0xa1, 0xdd, 0x44, 0xa6, 0xb1, 0xca, 0x20, 0x86, 0x99, 0x9c, 0xf9, + 0xee, 0x97, 0x67, 0x0c, 0xfd, 0x9a, 0x06, 0xe7, 0x9d, 0x9c, 0x3d, 0x28, 0xc4, 0xda, 0xd6, 0x09, + 0x6c, 0x6f, 0x7e, 0x09, 0x96, 0x07, 0xc1, 0xb9, 0x5d, 0x41, 0xbf, 0x51, 0xf8, 0x12, 0x7e, 0xa4, + 0x7c, 0x9e, 0xe6, 0x83, 0x16, 0x62, 0x89, 0x47, 0xf1, 0x1f, 0x85, 0x09, 0x2f, 0xde, 0xaa, 0x22, + 0x74, 0xc1, 0x07, 0x06, 0xec, 0x9c, 0xb2, 0xf9, 0xb9, 0x4b, 0x81, 0x52, 0x80, 0x55, 0x7a, 0xe8, + 0xcb, 0x1a, 0x20, 0x2b, 0x23, 0x8f, 0x08, 0xaf, 0x86, 0x67, 0x8f, 0x5d, 0xe8, 0xe2, 0x97, 0xa8, + 0xd9, 0x72, 0x9c, 0xd3, 0x09, 0xb6, 0xcc, 0xc2, 0x1c, 0xee, 0x21, 0x82, 0x5c, 0x0e, 0xba, 0xcc, + 0xf2, 0x18, 0x13, 0x5f, 0x66, 0x79, 0x10, 0x9c, 0xdb, 0x15, 0xfd, 0x4b, 0x63, 0x5c, 0x4b, 0x66, + 0xb7, 0x5c, 0xeb, 0x30, 0xba, 0xce, 0xac, 0x4c, 0x82, 0x6d, 0x94, 0x36, 0x69, 0x71, 0x5b, 0x15, + 0x37, 0x01, 0xf1, 0xff, 0xb1, 0xc0, 0x8c, 0x5e, 0x84, 0x21, 0xcb, 0x0d, 0xc4, 0x7e, 0x7f, 0xcf, + 0x00, 0x26, 0x96, 0xf8, 0xfd, 0x43, 0x63, 0xa5, 0x85, 0x29, 0x52, 0xe4, 0x42, 0xd5, 0x15, 0x8a, + 0xa5, 0xb0, 0x64, 0x94, 0xce, 0xa1, 0x27, 0x15, 0x54, 0xa9, 0x16, 0x47, 0x25, 0x58, 0xd2, 0xa0, + 0xf4, 0x52, 0x96, 0xe5, 0xd2, 0xf4, 0xa4, 0xc1, 0xa8, 0x9f, 0x35, 0x6f, 0x55, 0x35, 0xff, 0x8c, + 0x1c, 0xde, 0xfc, 0x33, 0x55, 0x68, 0xfa, 0x21, 0x30, 0x1a, 0x1a, 0xb6, 0x1b, 0x72, 0x45, 0xb9, + 0xe4, 0xa5, 0x30, 0xed, 0xff, 0x1a, 0xc5, 0x12, 0x6b, 0xa4, 0xec, 0x67, 0x80, 0x05, 0x72, 0xba, + 0xb0, 0xb6, 0x59, 0x26, 0x5b, 0xb1, 0x31, 0x4b, 0x2f, 0x2c, 0x9e, 0x0f, 0x97, 0x2f, 0x2c, 0xfe, + 0x3f, 0x16, 0x98, 0xd1, 0xcb, 0x50, 0x0d, 0xa2, 0x6b, 0xfc, 0xea, 0xa0, 0x09, 0x14, 0xc5, 0x1d, + 0xbe, 0x78, 0x41, 0x21, 0x2e, 0xef, 0x25, 0x7e, 0xb4, 0x0e, 0x63, 0xc2, 0x7a, 0x28, 0xe2, 0x92, + 0xbc, 0x67, 0x80, 0xfc, 0x41, 0x51, 0x8a, 0x67, 0xfe, 0x9a, 0x3d, 0x42, 0xac, 0xff, 0x87, 0x71, + 0x6e, 0xf7, 0x15, 0x9e, 0x52, 0x1b, 0x50, 0x8d, 0xd0, 0x0d, 0xf2, 0x9a, 0x27, 0xca, 0xd8, 0xc6, + 0x3f, 0x4d, 0xe6, 0x6f, 0x93, 0xb8, 0x51, 0x3d, 0xef, 0xe1, 0x54, 0x1c, 0x4c, 0xfc, 0x70, 0x8f, + 0xa6, 0x5e, 0x61, 0x29, 0x96, 0xa2, 0x47, 0xc6, 0x43, 0xe5, 0x97, 0x96, 0x7c, 0x80, 0x9c, 0x48, + 0xad, 0x14, 0xbd, 0x51, 0x56, 0x88, 0x14, 0x78, 0x92, 0x0d, 0x97, 0xf2, 0x24, 0x7b, 0x1a, 0xce, + 0x88, 0x9b, 0xfb, 0x26, 0xcb, 0x66, 0x1c, 0xee, 0x0a, 0x47, 0x73, 0xe6, 0xd3, 0x51, 0x4f, 0x82, + 0x70, 0xba, 0x2e, 0xfa, 0x03, 0x0d, 0xaa, 0xa6, 0x90, 0x78, 0xc4, 0xbe, 0x5a, 0x1a, 0xec, 0x72, + 0x60, 0x2e, 0x12, 0xa0, 0xb8, 0x52, 0xf0, 0x5c, 0xc4, 0x23, 0xa2, 0xe2, 0x63, 0xba, 0xe5, 0x97, + 0xbd, 0x46, 0xdf, 0xa1, 0x7a, 0x8f, 0xc3, 0xb2, 0xc8, 0xb1, 0x27, 0xa2, 0xdc, 0x03, 0xfe, 0xf6, + 0x80, 0x5f, 0x31, 0x1f, 0x63, 0xe4, 0x1f, 0xf2, 0x41, 0xa9, 0xdd, 0xc4, 0x90, 0x63, 0xfa, 0x16, + 0xb5, 0xfb, 0xe8, 0xb7, 0x34, 0x78, 0x98, 0x3f, 0x3b, 0xa8, 0x53, 0x21, 0x86, 0x25, 0xe3, 0x25, + 0x71, 0xf6, 0xdf, 0xd8, 0xef, 0xad, 0x7a, 0x64, 0xbf, 0xb7, 0x47, 0xf6, 0xf7, 0x6a, 0x0f, 0xd7, + 0x0f, 0x81, 0x1b, 0x1f, 0xaa, 0x07, 0x97, 0xb7, 0x60, 0x2a, 0x31, 0xd9, 0x27, 0xe9, 0x17, 0x71, + 0xd9, 0x85, 0x99, 0xf4, 0x9c, 0x9c, 0xa8, 0x1f, 0xc6, 0x2d, 0x18, 0x97, 0x87, 0x05, 0x7a, 0x50, + 0x21, 0x14, 0x1f, 0xe6, 0xb7, 0xc8, 0x2e, 0xa7, 0x5a, 0x4b, 0x28, 0x8a, 0xdc, 0xd0, 0xf5, 0x1c, + 0x2d, 0x10, 0x08, 0xf5, 0xef, 0x0a, 0x2b, 0xe6, 0x1a, 0xe9, 0x74, 0x1d, 0x23, 0x24, 0x6f, 0xfc, + 0x3b, 0x45, 0xfd, 0x7f, 0x68, 0x9c, 0xe7, 0x8b, 0xa4, 0xf2, 0x06, 0x4c, 0x74, 0x78, 0x54, 0x53, + 0xf6, 0x32, 0x59, 0x2b, 0xff, 0x26, 0x7a, 0x39, 0x46, 0x83, 0x55, 0x9c, 0xe8, 0x2e, 0x8c, 0x47, + 0xe2, 0x45, 0x64, 0xdd, 0xb8, 0x3e, 0xd8, 0xe1, 0x2c, 0x25, 0x19, 0x79, 0xe9, 0x14, 0x95, 0x04, + 0x38, 0xa6, 0xa5, 0x1b, 0x80, 0xb2, 0x6d, 0xa8, 0x22, 0x1c, 0xb9, 0x57, 0xa7, 0xb2, 0x80, 0x67, + 0x5c, 0xac, 0x0f, 0xcc, 0xdd, 0xaa, 0x7f, 0xb3, 0x02, 0xb9, 0xe9, 0xb1, 0x90, 0x0e, 0xa3, 0xfc, + 0xbd, 0x4f, 0x94, 0x16, 0x96, 0x8a, 0x13, 0xfc, 0x31, 0x10, 0x16, 0x10, 0x74, 0x9b, 0x5b, 0x55, + 0x5c, 0x8b, 0x85, 0xe8, 0x8a, 0x77, 0xaa, 0xfa, 0xb2, 0x6c, 0x31, 0xaf, 0x02, 0xce, 0x6f, 0x87, + 0xb6, 0x01, 0x75, 0x8c, 0x9d, 0x34, 0xb6, 0x01, 0xd2, 0xa6, 0x2c, 0x67, 0xb0, 0xe1, 0x1c, 0x0a, + 0xf4, 0x30, 0x33, 0x4c, 0x93, 0x74, 0x43, 0x62, 0xf1, 0x4f, 0x8c, 0x2e, 0x51, 0xd8, 0x61, 0x36, + 0x9f, 0x04, 0xe1, 0x74, 0x5d, 0xfd, 0x47, 0xc3, 0x70, 0x29, 0x39, 0x88, 0x74, 0x87, 0x0a, 0x2b, + 0x0f, 0x7a, 0x26, 0xf2, 0xb9, 0xe6, 0x03, 0xf9, 0x68, 0xda, 0xe7, 0x7a, 0xb6, 0xee, 0x13, 0x76, + 0x2c, 0x1a, 0x4e, 0x10, 0x35, 0x4a, 0xf8, 0x5f, 0x8b, 0xe4, 0xfc, 0xc9, 0x94, 0xfd, 0x65, 0x02, + 0x0a, 0x45, 0xc9, 0xf9, 0x93, 0x98, 0x70, 0x0e, 0xf6, 0x88, 0x66, 0x32, 0x65, 0x7f, 0x09, 0x97, + 0x6f, 0x49, 0x33, 0x89, 0x09, 0xe7, 0x60, 0x47, 0x9f, 0xd3, 0xa0, 0x4f, 0x8a, 0xfe, 0x12, 0x2e, + 0xdf, 0x2c, 0xb4, 0xfa, 0x52, 0x21, 0x46, 0xdc, 0x87, 0x1a, 0xfa, 0xbc, 0x06, 0xfd, 0x12, 0xf4, + 0x97, 0xf0, 0xfe, 0x66, 0x2f, 0x22, 0x97, 0x8a, 0x51, 0xe2, 0x7e, 0xf4, 0xf4, 0x7f, 0x59, 0x81, + 0x11, 0x76, 0x07, 0xf8, 0xc6, 0x70, 0x82, 0x65, 0x5d, 0x2d, 0xf4, 0x0b, 0x69, 0xa7, 0xfc, 0x42, + 0x9e, 0x29, 0x4f, 0xa2, 0xbf, 0x63, 0xc8, 0x07, 0xe1, 0x22, 0xab, 0x36, 0x6f, 0x31, 0xcb, 0x4c, + 0x40, 0xac, 0x79, 0xcb, 0x62, 0x6f, 0xb2, 0x0f, 0xb6, 0x6b, 0x3f, 0x08, 0x43, 0x3d, 0xdf, 0x49, + 0x07, 0x12, 0xb8, 0x83, 0x97, 0x30, 0x2d, 0xd7, 0x3f, 0xa7, 0xc1, 0x0c, 0xc3, 0xad, 0x6c, 0x5f, + 0xb4, 0x0d, 0x55, 0x5f, 0x6c, 0x61, 0x31, 0x37, 0x4b, 0xa5, 0x3f, 0x2d, 0x87, 0x2d, 0x88, 0xe4, + 0x7d, 0xe2, 0x17, 0x96, 0xb4, 0xf4, 0x1f, 0x8c, 0xc2, 0x6c, 0x51, 0x23, 0xf4, 0x45, 0x0d, 0x2e, + 0x9a, 0xb1, 0x44, 0x35, 0xdf, 0x0b, 0x37, 0x3d, 0xdf, 0x0e, 0x6d, 0x71, 0x39, 0x5e, 0x52, 0xd5, + 0xac, 0xcf, 0xcb, 0x5e, 0xb1, 0x30, 0x4d, 0xf5, 0x5c, 0x0a, 0xb8, 0x80, 0x32, 0x7a, 0x0d, 0x60, + 0x2b, 0x8e, 0x0b, 0xc9, 0x57, 0xda, 0xad, 0xd2, 0x63, 0xa5, 0xc4, 0x8e, 0x8c, 0x3a, 0xc5, 0x8c, + 0x9b, 0x4a, 0xb9, 0x42, 0x8e, 0x12, 0x0f, 0x82, 0xcd, 0x5b, 0x64, 0xb7, 0x6b, 0xd8, 0xd1, 0x23, + 0xa7, 0xf2, 0xc4, 0x5b, 0xad, 0x9b, 0x02, 0x55, 0x92, 0xb8, 0x52, 0xae, 0x90, 0x43, 0x9f, 0xd1, + 0x60, 0x8a, 0x2b, 0x54, 0xc2, 0xf9, 0x55, 0x70, 0xb6, 0x95, 0xd2, 0x1d, 0xb8, 0xad, 0x62, 0x93, + 0x7d, 0x60, 0xf7, 0xc4, 0x49, 0x50, 0x92, 0x2e, 0x5d, 0x18, 0x67, 0x83, 0xf4, 0xb9, 0x25, 0x38, + 0xdb, 0xf2, 0xe0, 0x29, 0x38, 0x95, 0x43, 0x90, 0xeb, 0xc5, 0x59, 0x70, 0x96, 0x3c, 0xeb, 0x14, + 0x09, 0x4d, 0x6b, 0xd1, 0x35, 0xfd, 0x5d, 0xf6, 0x1c, 0x8d, 0x76, 0x6a, 0xb4, 0x7c, 0xa7, 0x16, + 0xd7, 0xea, 0x8d, 0x04, 0xb2, 0x64, 0xa7, 0xb2, 0xe0, 0x2c, 0x79, 0xfd, 0xe3, 0x15, 0xb8, 0xaf, + 0x60, 0xa1, 0x15, 0x1c, 0x95, 0xda, 0x89, 0x1e, 0x95, 0x3f, 0x01, 0x91, 0x80, 0xbd, 0x5c, 0x60, + 0x63, 0xf0, 0x06, 0x79, 0xb9, 0xc0, 0xfa, 0x5a, 0xe0, 0x2e, 0xf4, 0x87, 0x1a, 0x9c, 0xcd, 0x44, + 0x09, 0x3c, 0x94, 0xdf, 0xfb, 0xa9, 0x79, 0xb2, 0xbc, 0x25, 0x8e, 0x08, 0x3c, 0x14, 0xbf, 0xa2, + 0x4c, 0x47, 0x03, 0xd6, 0x9f, 0x87, 0xa9, 0x84, 0xb7, 0x90, 0x0c, 0x91, 0xa2, 0xe5, 0x86, 0x48, + 0x51, 0x23, 0xa0, 0x54, 0xfa, 0x45, 0x40, 0xd1, 0x3f, 0x59, 0x81, 0xcb, 0xc5, 0xdc, 0xe5, 0xaf, + 0xcd, 0xaa, 0x97, 0x3b, 0x3f, 0xcb, 0xe5, 0xff, 0xda, 0x8c, 0xc1, 0x6f, 0x9d, 0x11, 0x3b, 0x9f, + 0xdd, 0x80, 0xbc, 0x04, 0xa3, 0x2c, 0xec, 0x4c, 0x24, 0x3d, 0x3c, 0x55, 0x3a, 0x9c, 0x4d, 0xc0, + 0xb5, 0x4a, 0xfe, 0x3f, 0x16, 0x58, 0x51, 0x03, 0x66, 0x4c, 0xc7, 0xeb, 0x59, 0x22, 0x95, 0xe0, + 0x4a, 0xac, 0xc0, 0xca, 0xe0, 0x81, 0xf5, 0x14, 0x1c, 0x67, 0x5a, 0x20, 0xcc, 0xef, 0x50, 0xf8, + 0xd9, 0xfe, 0xae, 0x92, 0x0e, 0x94, 0x3c, 0x44, 0xbe, 0xbc, 0x3b, 0x79, 0x05, 0x80, 0x44, 0x7b, + 0x38, 0x7a, 0x77, 0xf7, 0x74, 0xb9, 0xb0, 0x88, 0x92, 0x13, 0x44, 0x82, 0xb8, 0x2c, 0x0a, 0xb0, + 0x42, 0x04, 0xf9, 0x30, 0xb1, 0x69, 0xaf, 0x13, 0xdf, 0x8d, 0x33, 0x90, 0x97, 0x14, 0x97, 0x6f, + 0xc6, 0x68, 0xb8, 0xbd, 0x43, 0x29, 0xc0, 0x2a, 0x11, 0xe4, 0x73, 0xd1, 0x8c, 0x9b, 0xab, 0x07, + 0x49, 0x53, 0x1e, 0xdb, 0xc1, 0xe3, 0xef, 0x8c, 0xcb, 0xb0, 0x42, 0x85, 0xd2, 0x74, 0x65, 0xcc, + 0xa9, 0x41, 0x6e, 0x40, 0xe2, 0xc8, 0x55, 0x31, 0xcd, 0xb8, 0x0c, 0x2b, 0x54, 0xe8, 0xd8, 0x76, + 0xe2, 0x38, 0x63, 0xc2, 0xae, 0xf9, 0xcc, 0x80, 0xf1, 0xde, 0x84, 0x2d, 0x29, 0x2e, 0xc0, 0x2a, + 0x11, 0xe4, 0x02, 0x74, 0x64, 0xf8, 0x31, 0x71, 0x31, 0x52, 0xea, 0x3b, 0xe3, 0x20, 0x66, 0x5c, + 0xd8, 0x8c, 0x7f, 0x63, 0x85, 0x02, 0x7a, 0x59, 0xb9, 0x7e, 0x83, 0xf2, 0x16, 0xb9, 0x43, 0x5d, + 0xbd, 0xbd, 0x33, 0x36, 0x4c, 0x4d, 0xb0, 0xfd, 0x7a, 0xbf, 0x62, 0x94, 0xba, 0xb7, 0x57, 0x9b, + 0x64, 0x3c, 0x24, 0x63, 0xa4, 0x8a, 0x5d, 0x36, 0x27, 0xfb, 0xba, 0x6c, 0xde, 0xa0, 0xc2, 0xaa, + 0xf2, 0xa4, 0x82, 0x31, 0x86, 0x29, 0xd6, 0x44, 0x86, 0xab, 0x6b, 0xa5, 0x2b, 0xe0, 0x6c, 0x1b, + 0x7e, 0x06, 0x12, 0x8b, 0xb5, 0x9f, 0x56, 0xcf, 0x40, 0x5e, 0x86, 0x25, 0x14, 0x6d, 0xc3, 0x64, + 0xa0, 0xf8, 0x80, 0x8a, 0x3c, 0x75, 0x03, 0xdc, 0x99, 0x09, 0xff, 0x4f, 0x16, 0x8c, 0x47, 0x2d, + 0xc1, 0x09, 0x3a, 0xe8, 0x35, 0x18, 0x8f, 0x8c, 0x94, 0xc1, 0xec, 0x4c, 0xf9, 0x07, 0x90, 0xf9, + 0x21, 0xe7, 0x62, 0xab, 0x63, 0x04, 0x0a, 0x70, 0x4c, 0x0f, 0xf5, 0x92, 0xc1, 0x0f, 0xce, 0x1e, + 0xcb, 0x83, 0x6f, 0xe9, 0xa3, 0x55, 0x14, 0xf8, 0x00, 0xd5, 0xe1, 0x2c, 0xd9, 0xe9, 0x7a, 0x41, + 0xcf, 0x27, 0x2c, 0xda, 0x25, 0x9b, 0x1e, 0x14, 0x5f, 0xaa, 0x2d, 0xa6, 0x81, 0x38, 0x5b, 0x1f, + 0x7d, 0x5a, 0x83, 0x19, 0x9e, 0xe6, 0x8f, 0x1e, 0x61, 0x9e, 0x4b, 0xdc, 0x30, 0x60, 0x79, 0xec, + 0x4a, 0xbe, 0x51, 0x6c, 0xa5, 0x70, 0xf1, 0xc4, 0x2c, 0xe9, 0x52, 0x9c, 0xa1, 0x49, 0x57, 0x8e, + 0xfa, 0x64, 0x9c, 0xa5, 0xc3, 0x2b, 0xb9, 0x72, 0xd4, 0xe7, 0xe8, 0x7c, 0xe5, 0xa8, 0x25, 0x38, + 0x41, 0x47, 0xff, 0x8f, 0x1a, 0x80, 0x34, 0x8c, 0x9c, 0x86, 0xb9, 0xdf, 0x4a, 0xd8, 0x8a, 0x16, + 0x06, 0x32, 0xe4, 0x90, 0x42, 0xa3, 0xff, 0x9f, 0x68, 0x30, 0x1d, 0x57, 0x3b, 0x05, 0x05, 0xc4, + 0x4c, 0x2a, 0x20, 0xef, 0x1b, 0xec, 0xbb, 0x0a, 0xb4, 0x90, 0xff, 0x57, 0x51, 0xbf, 0x8a, 0x09, + 0x57, 0xdb, 0x89, 0x2b, 0x6c, 0x4a, 0xfa, 0xe6, 0x20, 0x57, 0xd8, 0xea, 0x6b, 0xd4, 0xf8, 0x7b, + 0x73, 0xae, 0xb4, 0xff, 0x5e, 0x42, 0xb4, 0x19, 0xe0, 0xcd, 0xb5, 0x94, 0x63, 0x22, 0xd2, 0x7c, + 0x00, 0x0e, 0x92, 0x73, 0x5e, 0x51, 0x39, 0x1e, 0xbf, 0x0c, 0x7f, 0x7f, 0xb9, 0x87, 0xbe, 0xca, + 0x07, 0xf7, 0xe5, 0x73, 0xfa, 0xb7, 0xa7, 0x60, 0x42, 0xb1, 0x21, 0xa6, 0x2e, 0xe4, 0xb5, 0xd3, + 0xb8, 0x90, 0x0f, 0x61, 0xc2, 0x94, 0x41, 0xa0, 0xa3, 0x61, 0x1f, 0x90, 0xa6, 0xe4, 0xb4, 0x71, + 0x78, 0xe9, 0x00, 0xab, 0x64, 0xa8, 0x4c, 0x20, 0xd7, 0xd8, 0xd0, 0x31, 0xb8, 0x49, 0xf4, 0x5b, + 0x57, 0x4f, 0x00, 0x44, 0xa2, 0x25, 0xb1, 0x44, 0x68, 0x40, 0x99, 0x3c, 0xa5, 0x19, 0xdc, 0x94, + 0x30, 0xac, 0xd4, 0x43, 0xaf, 0xc2, 0x94, 0xa3, 0x66, 0x13, 0x10, 0x72, 0x6f, 0xa9, 0xb7, 0x34, + 0x89, 0xb4, 0x04, 0xdc, 0x28, 0x96, 0x28, 0xc2, 0x49, 0x52, 0x74, 0x19, 0x38, 0x51, 0xa6, 0x90, + 0x81, 0x5c, 0x7e, 0x64, 0xbe, 0x91, 0x78, 0x19, 0xc8, 0xa2, 0x00, 0x2b, 0x44, 0x0a, 0xfc, 0x32, + 0xc6, 0x4a, 0xf9, 0x65, 0xf4, 0xe0, 0x9c, 0x4f, 0x42, 0x7f, 0xb7, 0xbe, 0x6b, 0xb2, 0x04, 0x3a, + 0x7e, 0xc8, 0x14, 0xc4, 0x6a, 0xb9, 0x60, 0x3d, 0x38, 0x8b, 0x0a, 0xe7, 0xe1, 0x4f, 0xc8, 0x54, + 0xe3, 0x7d, 0x65, 0xaa, 0x77, 0xc2, 0x44, 0x48, 0xcc, 0x4d, 0xd7, 0x36, 0x0d, 0xa7, 0xd9, 0x10, + 0x71, 0xf3, 0x62, 0xf1, 0x20, 0x06, 0x61, 0xb5, 0x1e, 0x5a, 0x80, 0xa1, 0x9e, 0x6d, 0x09, 0xc1, + 0xf2, 0xa7, 0xa5, 0x35, 0xbe, 0xd9, 0xb8, 0xb7, 0x57, 0x7b, 0x73, 0xec, 0xe8, 0x20, 0xbf, 0xea, + 0x5a, 0x77, 0xab, 0x7d, 0x2d, 0xdc, 0xed, 0x92, 0x60, 0xee, 0x4e, 0xb3, 0x81, 0x69, 0xe3, 0x3c, + 0x9f, 0x95, 0xc9, 0x23, 0xf8, 0xac, 0x7c, 0x59, 0x83, 0x73, 0x46, 0xfa, 0x22, 0x81, 0x04, 0xb3, + 0x53, 0xe5, 0xb9, 0x65, 0xfe, 0xe5, 0x44, 0x1c, 0x33, 0x79, 0x3e, 0x4b, 0x0e, 0xe7, 0xf5, 0x01, + 0xf9, 0x80, 0x3a, 0x76, 0x5b, 0x26, 0xed, 0x10, 0xb3, 0x3e, 0x5d, 0xce, 0x2c, 0xb0, 0x9c, 0xc1, + 0x84, 0x73, 0xb0, 0xa3, 0xbb, 0x30, 0x61, 0xc6, 0xd7, 0x0d, 0x42, 0x38, 0x6e, 0x1c, 0xc7, 0x7d, + 0x87, 0xc8, 0xc0, 0xaf, 0xdc, 0x65, 0xa8, 0x94, 0xe4, 0x45, 0xa1, 0xa2, 0xc1, 0x8a, 0xcb, 0x32, + 0xf6, 0xd5, 0x33, 0xe5, 0x2f, 0x0a, 0xf3, 0x31, 0xe2, 0x3e, 0xd4, 0x58, 0x88, 0x1c, 0x27, 0x99, + 0x5b, 0x87, 0x65, 0x76, 0x2e, 0xf9, 0x38, 0x36, 0x95, 0xa6, 0x87, 0x2f, 0xcd, 0x54, 0x21, 0x4e, + 0x13, 0xd4, 0xbf, 0xa7, 0x09, 0x33, 0xe0, 0x29, 0x3a, 0x7a, 0x9c, 0xf4, 0x2d, 0xa1, 0xfe, 0x17, + 0x1a, 0x64, 0x44, 0x6d, 0xb4, 0x0e, 0x63, 0x14, 0x45, 0x63, 0xa5, 0x25, 0x3e, 0xeb, 0x3d, 0xe5, + 0x8e, 0x4b, 0x86, 0x82, 0xdb, 0x54, 0xc5, 0x0f, 0x1c, 0x21, 0xa6, 0xc2, 0xbb, 0xab, 0x84, 0xee, + 0x15, 0x5f, 0x58, 0x4a, 0x1e, 0x51, 0x43, 0x00, 0x73, 0xe1, 0x5d, 0x2d, 0xc1, 0x09, 0x3a, 0xfa, + 0x12, 0x40, 0xac, 0x1e, 0x0d, 0xec, 0xfb, 0xf3, 0xe3, 0x11, 0xb8, 0x30, 0xe8, 0x53, 0x0a, 0x96, + 0xd2, 0x85, 0x25, 0xd9, 0x9f, 0xdf, 0x08, 0x89, 0x7f, 0xfb, 0xf6, 0xb2, 0xcc, 0x41, 0x5e, 0x32, + 0xa7, 0x0c, 0xbb, 0x2b, 0x5c, 0xcc, 0xc5, 0x88, 0x0b, 0x28, 0x31, 0xd5, 0x50, 0xa4, 0x98, 0xc5, + 0x54, 0x98, 0x64, 0x09, 0xc6, 0x79, 0x80, 0x10, 0xae, 0x1a, 0xa6, 0x81, 0x38, 0x5b, 0x3f, 0x8d, + 0x84, 0x27, 0xfc, 0xa7, 0x02, 0x89, 0x96, 0x45, 0xc2, 0xb3, 0xfe, 0x67, 0xeb, 0xab, 0x48, 0xf8, + 0x4c, 0xd1, 0xdd, 0x3e, 0x92, 0x45, 0x22, 0x81, 0x38, 0x5b, 0x1f, 0x59, 0xf0, 0x80, 0x4f, 0x4c, + 0xaf, 0xd3, 0x21, 0xae, 0xc5, 0xb3, 0xa5, 0x19, 0x7e, 0xdb, 0x76, 0xaf, 0xfb, 0x06, 0xab, 0xc8, + 0x2c, 0x6e, 0xda, 0xc2, 0xd5, 0xfd, 0xbd, 0xda, 0x03, 0xb8, 0x4f, 0x3d, 0xdc, 0x17, 0x0b, 0xea, + 0xc0, 0x99, 0x1e, 0x8b, 0xf3, 0xef, 0x37, 0xdd, 0x90, 0xf8, 0xdb, 0x86, 0x23, 0xcc, 0x6a, 0xa5, + 0xd2, 0xc4, 0xde, 0x49, 0xa2, 0xc2, 0x69, 0xdc, 0x68, 0x97, 0xca, 0x1d, 0xa2, 0x3b, 0x0a, 0xc9, + 0x6a, 0xf9, 0xa4, 0x47, 0x38, 0x8b, 0x0e, 0xe7, 0xd1, 0xd0, 0xbf, 0xac, 0x81, 0x70, 0x74, 0x46, + 0x0f, 0x24, 0x6e, 0x70, 0xaa, 0xa9, 0xdb, 0x9b, 0x07, 0xc4, 0x4b, 0xe5, 0x4a, 0x0c, 0x55, 0x5e, + 0x29, 0xbf, 0x55, 0x89, 0x3c, 0x33, 0x1e, 0xf3, 0x3e, 0x8e, 0x59, 0xc9, 0x94, 0xf1, 0x36, 0x18, + 0x27, 0xfc, 0x72, 0x50, 0x4a, 0xb4, 0xcc, 0x79, 0x7c, 0x31, 0x2a, 0xc4, 0x31, 0x5c, 0xff, 0x63, + 0x0d, 0x04, 0x06, 0x96, 0xd7, 0xe5, 0x50, 0xf9, 0x3d, 0x0e, 0xf4, 0xda, 0x52, 0xf2, 0x92, 0x0c, + 0x15, 0xe6, 0x25, 0x39, 0xa1, 0x74, 0x1d, 0xdf, 0xd0, 0xe0, 0x4c, 0x32, 0x14, 0x50, 0x80, 0xde, + 0x02, 0x63, 0x22, 0x58, 0xa0, 0x88, 0xf6, 0xc5, 0xa3, 0x1a, 0x88, 0xac, 0xfd, 0x11, 0x2c, 0x69, + 0xd5, 0x1a, 0x40, 0xc5, 0xcc, 0x8f, 0x48, 0x74, 0x80, 0xb6, 0xf7, 0xa7, 0xd3, 0x30, 0xca, 0x23, + 0xcd, 0x51, 0x9e, 0x96, 0xf3, 0xc2, 0xf5, 0x56, 0xf9, 0x80, 0x76, 0x65, 0x9e, 0x24, 0xaa, 0x21, + 0xcd, 0x2b, 0x7d, 0x43, 0x9a, 0x63, 0x9e, 0x06, 0x69, 0x80, 0x9b, 0x8c, 0x3a, 0x6e, 0x8a, 0xec, + 0xc7, 0x51, 0x0a, 0xa4, 0x30, 0x61, 0xe2, 0x1f, 0x2e, 0x2f, 0xb9, 0xf1, 0x01, 0x50, 0x0c, 0xfd, + 0xd3, 0x7d, 0x8c, 0xfc, 0x71, 0x28, 0xaf, 0x91, 0xf2, 0x5e, 0x94, 0x62, 0xc8, 0x0f, 0x11, 0xca, + 0x4b, 0x6e, 0xa4, 0xd1, 0xc2, 0x8d, 0xb4, 0x01, 0x63, 0x62, 0x2b, 0x08, 0xe6, 0xf8, 0x9e, 0x01, + 0xf2, 0x09, 0x29, 0xd1, 0x67, 0x79, 0x01, 0x8e, 0x90, 0xd3, 0x13, 0xb7, 0x63, 0xec, 0xd8, 0x9d, + 0x5e, 0x87, 0x71, 0xc4, 0x11, 0xb5, 0x2a, 0x2b, 0xc6, 0x11, 0x9c, 0x55, 0xe5, 0xce, 0xa7, 0x4c, + 0x91, 0x52, 0xab, 0x8a, 0xec, 0xfd, 0x11, 0x1c, 0xbd, 0x08, 0xd5, 0x8e, 0xb1, 0xd3, 0xea, 0xf9, + 0x6d, 0x22, 0x8c, 0xfb, 0xc5, 0x32, 0x5e, 0x2f, 0xb4, 0x9d, 0x39, 0xaa, 0xfe, 0x87, 0xfe, 0x5c, + 0xd3, 0x0d, 0x6f, 0xfb, 0xad, 0xd0, 0x97, 0x19, 0x4b, 0x96, 0x05, 0x16, 0x2c, 0xf1, 0x21, 0x07, + 0xa6, 0x3b, 0xc6, 0xce, 0x1d, 0xd7, 0x90, 0x49, 0xc6, 0x27, 0x4a, 0x52, 0x60, 0x97, 0xdd, 0xcb, + 0x09, 0x5c, 0x38, 0x85, 0x3b, 0xe7, 0x5e, 0x7d, 0xf2, 0xa4, 0xee, 0xd5, 0xe7, 0xe5, 0x73, 0x1e, + 0xae, 0xb7, 0x5d, 0xca, 0x7b, 0x1d, 0xd4, 0xff, 0xa9, 0xce, 0x4b, 0xf2, 0xa9, 0xce, 0x74, 0xf9, + 0x1b, 0xd0, 0x3e, 0xcf, 0x74, 0x7a, 0x30, 0x41, 0x25, 0x6c, 0x5e, 0x4a, 0x15, 0xab, 0xd2, 0x26, + 0xc8, 0x86, 0x44, 0xa3, 0x24, 0xad, 0x8c, 0x51, 0x63, 0x95, 0x0e, 0xba, 0xcd, 0x93, 0x50, 0x3b, + 0x24, 0x8c, 0xab, 0x30, 0x85, 0x7e, 0x86, 0x5f, 0xb2, 0x44, 0x39, 0xa3, 0x33, 0x15, 0x70, 0x7e, + 0xbb, 0x38, 0xc8, 0xc6, 0xd9, 0xfc, 0x20, 0x1b, 0xe8, 0x17, 0xf3, 0xcc, 0xf5, 0xa8, 0xfc, 0xf3, + 0x48, 0xce, 0x1b, 0x4a, 0x1b, 0xed, 0x7f, 0x57, 0x83, 0xd9, 0x4e, 0x41, 0x76, 0x47, 0x71, 0x8b, + 0xb0, 0x36, 0x00, 0x7f, 0x28, 0xcc, 0x18, 0xb9, 0xf0, 0xf0, 0xfe, 0x5e, 0xed, 0xc0, 0xbc, 0x92, + 0xb8, 0xb0, 0x6f, 0x83, 0x3e, 0x2b, 0x1f, 0x24, 0xe6, 0xe1, 0xaf, 0x6b, 0x30, 0x93, 0x3e, 0x04, + 0xd4, 0xbc, 0xd9, 0xda, 0xc9, 0xe6, 0xcd, 0x56, 0xbc, 0x64, 0x2a, 0x7d, 0xbc, 0x64, 0x9e, 0x86, + 0x8b, 0xf9, 0x6b, 0x83, 0x4a, 0x64, 0x2c, 0x4f, 0xbd, 0xd0, 0x84, 0xe2, 0x04, 0x3b, 0xb4, 0x10, + 0x73, 0x98, 0xfe, 0x51, 0x48, 0x47, 0xa9, 0x45, 0x2f, 0xc3, 0x78, 0x10, 0x6c, 0xf2, 0x00, 0x84, + 0xe2, 0x23, 0xcb, 0xa9, 0xc0, 0x51, 0x14, 0x43, 0xf1, 0x02, 0x31, 0xfa, 0x89, 0x63, 0xf4, 0x0b, + 0x2f, 0x7c, 0xeb, 0x47, 0x57, 0xde, 0xf4, 0xdd, 0x1f, 0x5d, 0x79, 0xd3, 0xf7, 0x7f, 0x74, 0xe5, + 0x4d, 0x3f, 0xb7, 0x7f, 0x45, 0xfb, 0xd6, 0xfe, 0x15, 0xed, 0xbb, 0xfb, 0x57, 0xb4, 0xef, 0xef, + 0x5f, 0xd1, 0xfe, 0xeb, 0xfe, 0x15, 0xed, 0x0b, 0xff, 0xed, 0xca, 0x9b, 0x5e, 0x7c, 0x3c, 0xa6, + 0x7e, 0x2d, 0x22, 0x1a, 0xff, 0xd3, 0xdd, 0x6a, 0x5f, 0xa3, 0xd4, 0xa3, 0x97, 0x40, 0x8c, 0xfa, + 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x83, 0x80, 0x4a, 0x81, 0xe6, 0xe1, 0x00, 0x00, } func (m *Addon) Marshal() (dAtA []byte, err error) { @@ -7861,6 +7893,82 @@ func (m *DeploymentRef) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ETCDEncryptionKeyRotation) 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 *ETCDEncryptionKeyRotation) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ETCDEncryptionKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.LastCompletionTriggeredTime != nil { + { + size, err := m.LastCompletionTriggeredTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if m.LastInitiationFinishedTime != nil { + { + size, err := m.LastInitiationFinishedTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.LastInitiationTime != nil { + { + size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.LastCompletionTime != nil { + { + size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + i -= len(m.Phase) + copy(dAtA[i:], m.Phase) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *ExpirableVersion) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -12617,6 +12725,37 @@ func (m *SeedSettingScheduling) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *SeedSettingTopologyAwareRouting) 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 *SeedSettingTopologyAwareRouting) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SeedSettingTopologyAwareRouting) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i-- + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + return len(dAtA) - i, nil +} + func (m *SeedSettingVerticalPodAutoscaler) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -12668,6 +12807,18 @@ func (m *SeedSettings) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.TopologyAwareRouting != nil { + { + size, err := m.TopologyAwareRouting.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } if m.DependencyWatchdog != nil { { size, err := m.DependencyWatchdog.MarshalToSizedBuffer(dAtA[:i]) @@ -13227,6 +13378,82 @@ func (m *ServiceAccountConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ServiceAccountKeyRotation) 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 *ServiceAccountKeyRotation) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ServiceAccountKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.LastCompletionTriggeredTime != nil { + { + size, err := m.LastCompletionTriggeredTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if m.LastInitiationFinishedTime != nil { + { + size, err := m.LastInitiationFinishedTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.LastInitiationTime != nil { + { + size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.LastCompletionTime != nil { + { + size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + i -= len(m.Phase) + copy(dAtA[i:], m.Phase) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *Shoot) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -13443,82 +13670,6 @@ func (m *ShootCredentialsRotation) MarshalToSizedBuffer(dAtA []byte) (int, error return len(dAtA) - i, nil } -func (m *ShootETCDEncryptionKeyRotation) 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 *ShootETCDEncryptionKeyRotation) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ShootETCDEncryptionKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.LastCompletionTriggeredTime != nil { - { - size, err := m.LastCompletionTriggeredTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - if m.LastInitiationFinishedTime != nil { - { - size, err := m.LastInitiationFinishedTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - if m.LastInitiationTime != nil { - { - size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - if m.LastCompletionTime != nil { - { - size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - i -= len(m.Phase) - copy(dAtA[i:], m.Phase) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - func (m *ShootKubeconfigRotation) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -13791,82 +13942,6 @@ func (m *ShootSSHKeypairRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *ShootServiceAccountKeyRotation) 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 *ShootServiceAccountKeyRotation) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ShootServiceAccountKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.LastCompletionTriggeredTime != nil { - { - size, err := m.LastCompletionTriggeredTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - if m.LastInitiationFinishedTime != nil { - { - size, err := m.LastInitiationFinishedTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - if m.LastInitiationTime != nil { - { - size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - if m.LastCompletionTime != nil { - { - size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - i -= len(m.Phase) - copy(dAtA[i:], m.Phase) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - func (m *ShootSpec) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -16052,6 +16127,33 @@ func (m *DeploymentRef) Size() (n int) { return n } +func (m *ETCDEncryptionKeyRotation) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + if m.LastCompletionTime != nil { + l = m.LastCompletionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastInitiationTime != nil { + l = m.LastInitiationTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastInitiationFinishedTime != nil { + l = m.LastInitiationFinishedTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastCompletionTriggeredTime != nil { + l = m.LastCompletionTriggeredTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *ExpirableVersion) Size() (n int) { if m == nil { return 0 @@ -17832,6 +17934,16 @@ func (m *SeedSettingScheduling) Size() (n int) { return n } +func (m *SeedSettingTopologyAwareRouting) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + n += 2 + return n +} + func (m *SeedSettingVerticalPodAutoscaler) Size() (n int) { if m == nil { return 0 @@ -17872,6 +17984,10 @@ func (m *SeedSettings) Size() (n int) { l = m.DependencyWatchdog.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.TopologyAwareRouting != nil { + l = m.TopologyAwareRouting.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -18052,6 +18168,33 @@ func (m *ServiceAccountConfig) Size() (n int) { return n } +func (m *ServiceAccountKeyRotation) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + if m.LastCompletionTime != nil { + l = m.LastCompletionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastInitiationTime != nil { + l = m.LastInitiationTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastInitiationFinishedTime != nil { + l = m.LastInitiationFinishedTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastCompletionTriggeredTime != nil { + l = m.LastCompletionTriggeredTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *Shoot) Size() (n int) { if m == nil { return 0 @@ -18126,33 +18269,6 @@ func (m *ShootCredentialsRotation) Size() (n int) { return n } -func (m *ShootETCDEncryptionKeyRotation) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Phase) - n += 1 + l + sovGenerated(uint64(l)) - if m.LastCompletionTime != nil { - l = m.LastCompletionTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.LastInitiationTime != nil { - l = m.LastInitiationTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.LastInitiationFinishedTime != nil { - l = m.LastInitiationFinishedTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.LastCompletionTriggeredTime != nil { - l = m.LastCompletionTriggeredTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - return n -} - func (m *ShootKubeconfigRotation) Size() (n int) { if m == nil { return 0 @@ -18257,33 +18373,6 @@ func (m *ShootSSHKeypairRotation) Size() (n int) { return n } -func (m *ShootServiceAccountKeyRotation) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Phase) - n += 1 + l + sovGenerated(uint64(l)) - if m.LastCompletionTime != nil { - l = m.LastCompletionTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.LastInitiationTime != nil { - l = m.LastInitiationTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.LastInitiationFinishedTime != nil { - l = m.LastInitiationFinishedTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.LastCompletionTriggeredTime != nil { - l = m.LastCompletionTriggeredTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - return n -} - func (m *ShootSpec) Size() (n int) { if m == nil { return 0 @@ -19382,6 +19471,20 @@ func (this *DeploymentRef) String() string { }, "") return s } +func (this *ETCDEncryptionKeyRotation) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ETCDEncryptionKeyRotation{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationFinishedTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationFinishedTime), "Time", "v11.Time", 1) + `,`, + `LastCompletionTriggeredTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTriggeredTime), "Time", "v11.Time", 1) + `,`, + `}`, + }, "") + return s +} func (this *ExpirableVersion) String() string { if this == nil { return "nil" @@ -20608,6 +20711,16 @@ func (this *SeedSettingScheduling) String() string { }, "") return s } +func (this *SeedSettingTopologyAwareRouting) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SeedSettingTopologyAwareRouting{`, + `Enabled:` + fmt.Sprintf("%v", this.Enabled) + `,`, + `}`, + }, "") + return s +} func (this *SeedSettingVerticalPodAutoscaler) String() string { if this == nil { return "nil" @@ -20629,6 +20742,7 @@ func (this *SeedSettings) String() string { `VerticalPodAutoscaler:` + strings.Replace(this.VerticalPodAutoscaler.String(), "SeedSettingVerticalPodAutoscaler", "SeedSettingVerticalPodAutoscaler", 1) + `,`, `OwnerChecks:` + strings.Replace(this.OwnerChecks.String(), "SeedSettingOwnerChecks", "SeedSettingOwnerChecks", 1) + `,`, `DependencyWatchdog:` + strings.Replace(this.DependencyWatchdog.String(), "SeedSettingDependencyWatchdog", "SeedSettingDependencyWatchdog", 1) + `,`, + `TopologyAwareRouting:` + strings.Replace(this.TopologyAwareRouting.String(), "SeedSettingTopologyAwareRouting", "SeedSettingTopologyAwareRouting", 1) + `,`, `}`, }, "") return s @@ -20760,6 +20874,20 @@ func (this *ServiceAccountConfig) String() string { }, "") return s } +func (this *ServiceAccountKeyRotation) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServiceAccountKeyRotation{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationFinishedTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationFinishedTime), "Time", "v11.Time", 1) + `,`, + `LastCompletionTriggeredTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTriggeredTime), "Time", "v11.Time", 1) + `,`, + `}`, + }, "") + return s +} func (this *Shoot) String() string { if this == nil { return "nil" @@ -20802,22 +20930,8 @@ func (this *ShootCredentialsRotation) String() string { `Kubeconfig:` + strings.Replace(this.Kubeconfig.String(), "ShootKubeconfigRotation", "ShootKubeconfigRotation", 1) + `,`, `SSHKeypair:` + strings.Replace(this.SSHKeypair.String(), "ShootSSHKeypairRotation", "ShootSSHKeypairRotation", 1) + `,`, `Observability:` + strings.Replace(this.Observability.String(), "ShootObservabilityRotation", "ShootObservabilityRotation", 1) + `,`, - `ServiceAccountKey:` + strings.Replace(this.ServiceAccountKey.String(), "ShootServiceAccountKeyRotation", "ShootServiceAccountKeyRotation", 1) + `,`, - `ETCDEncryptionKey:` + strings.Replace(this.ETCDEncryptionKey.String(), "ShootETCDEncryptionKeyRotation", "ShootETCDEncryptionKeyRotation", 1) + `,`, - `}`, - }, "") - return s -} -func (this *ShootETCDEncryptionKeyRotation) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&ShootETCDEncryptionKeyRotation{`, - `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, - `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, - `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, - `LastInitiationFinishedTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationFinishedTime), "Time", "v11.Time", 1) + `,`, - `LastCompletionTriggeredTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTriggeredTime), "Time", "v11.Time", 1) + `,`, + `ServiceAccountKey:` + strings.Replace(this.ServiceAccountKey.String(), "ServiceAccountKeyRotation", "ServiceAccountKeyRotation", 1) + `,`, + `ETCDEncryptionKey:` + strings.Replace(this.ETCDEncryptionKey.String(), "ETCDEncryptionKeyRotation", "ETCDEncryptionKeyRotation", 1) + `,`, `}`, }, "") return s @@ -20894,20 +21008,6 @@ func (this *ShootSSHKeypairRotation) String() string { }, "") return s } -func (this *ShootServiceAccountKeyRotation) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&ShootServiceAccountKeyRotation{`, - `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, - `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, - `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, - `LastInitiationFinishedTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationFinishedTime), "Time", "v11.Time", 1) + `,`, - `LastCompletionTriggeredTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTriggeredTime), "Time", "v11.Time", 1) + `,`, - `}`, - }, "") - return s -} func (this *ShootSpec) String() string { if this == nil { return "nil" @@ -27777,6 +27877,232 @@ func (m *DeploymentRef) Unmarshal(dAtA []byte) error { } return nil } +func (m *ETCDEncryptionKeyRotation) 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: ETCDEncryptionKeyRotation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ETCDEncryptionKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Phase", 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.Phase = CredentialsRotationPhase(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", 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.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} + } + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", 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.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} + } + if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationFinishedTime", 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.LastInitiationFinishedTime == nil { + m.LastInitiationFinishedTime = &v11.Time{} + } + if err := m.LastInitiationFinishedTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTriggeredTime", 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.LastCompletionTriggeredTime == nil { + m.LastCompletionTriggeredTime = &v11.Time{} + } + if err := m.LastCompletionTriggeredTime.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 *ExpirableVersion) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -42071,6 +42397,76 @@ func (m *SeedSettingScheduling) Unmarshal(dAtA []byte) error { } return nil } +func (m *SeedSettingTopologyAwareRouting) 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: SeedSettingTopologyAwareRouting: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SeedSettingTopologyAwareRouting: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Enabled = bool(v != 0) + 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 *SeedSettingVerticalPodAutoscaler) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -42386,6 +42782,42 @@ func (m *SeedSettings) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TopologyAwareRouting", 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.TopologyAwareRouting == nil { + m.TopologyAwareRouting = &SeedSettingTopologyAwareRouting{} + } + if err := m.TopologyAwareRouting.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -43793,14 +44225,221 @@ func (m *ServiceAccountConfig) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - s := string(dAtA[iNdEx:postIndex]) - m.Issuer = &s + s := string(dAtA[iNdEx:postIndex]) + m.Issuer = &s + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ExtendTokenExpiration", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.ExtendTokenExpiration = &b + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxTokenExpiration", 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.MaxTokenExpiration == nil { + m.MaxTokenExpiration = &v11.Duration{} + } + if err := m.MaxTokenExpiration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AcceptedIssuers", 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.AcceptedIssuers = append(m.AcceptedIssuers, 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 *ServiceAccountKeyRotation) 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: ServiceAccountKeyRotation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServiceAccountKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Phase", 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.Phase = CredentialsRotationPhase(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", 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.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} + } + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ExtendTokenExpiration", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) } - var v int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -43810,16 +44449,31 @@ func (m *ServiceAccountConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - b := bool(v != 0) - m.ExtendTokenExpiration = &b + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} + } + if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MaxTokenExpiration", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationFinishedTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -43846,18 +44500,18 @@ func (m *ServiceAccountConfig) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.MaxTokenExpiration == nil { - m.MaxTokenExpiration = &v11.Duration{} + if m.LastInitiationFinishedTime == nil { + m.LastInitiationFinishedTime = &v11.Time{} } - if err := m.MaxTokenExpiration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastInitiationFinishedTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AcceptedIssuers", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTriggeredTime", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -43867,23 +44521,27 @@ func (m *ServiceAccountConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.AcceptedIssuers = append(m.AcceptedIssuers, string(dAtA[iNdEx:postIndex])) + if m.LastCompletionTriggeredTime == nil { + m.LastCompletionTriggeredTime = &v11.Time{} + } + if err := m.LastCompletionTriggeredTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -44385,242 +45043,16 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.SSHKeypair == nil { - m.SSHKeypair = &ShootSSHKeypairRotation{} - } - if err := m.SSHKeypair.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Observability", 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.Observability == nil { - m.Observability = &ShootObservabilityRotation{} - } - if err := m.Observability.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccountKey", 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.ServiceAccountKey == nil { - m.ServiceAccountKey = &ShootServiceAccountKeyRotation{} - } - if err := m.ServiceAccountKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ETCDEncryptionKey", 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.ETCDEncryptionKey == nil { - m.ETCDEncryptionKey = &ShootETCDEncryptionKeyRotation{} - } - if err := m.ETCDEncryptionKey.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 *ShootETCDEncryptionKeyRotation) 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: ShootETCDEncryptionKeyRotation: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ShootETCDEncryptionKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Phase", 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.Phase = CredentialsRotationPhase(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", 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.LastCompletionTime == nil { - m.LastCompletionTime = &v11.Time{} + if m.SSHKeypair == nil { + m.SSHKeypair = &ShootSSHKeypairRotation{} } - if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.SSHKeypair.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Observability", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44647,16 +45079,16 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastInitiationTime == nil { - m.LastInitiationTime = &v11.Time{} + if m.Observability == nil { + m.Observability = &ShootObservabilityRotation{} } - if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Observability.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 4: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationFinishedTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccountKey", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44683,16 +45115,16 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastInitiationFinishedTime == nil { - m.LastInitiationFinishedTime = &v11.Time{} + if m.ServiceAccountKey == nil { + m.ServiceAccountKey = &ServiceAccountKeyRotation{} } - if err := m.LastInitiationFinishedTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ServiceAccountKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 5: + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTriggeredTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ETCDEncryptionKey", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -44719,10 +45151,10 @@ func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastCompletionTriggeredTime == nil { - m.LastCompletionTriggeredTime = &v11.Time{} + if m.ETCDEncryptionKey == nil { + m.ETCDEncryptionKey = &ETCDEncryptionKeyRotation{} } - if err := m.LastCompletionTriggeredTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ETCDEncryptionKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -45497,232 +45929,6 @@ func (m *ShootSSHKeypairRotation) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootServiceAccountKeyRotation) 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: ShootServiceAccountKeyRotation: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ShootServiceAccountKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Phase", 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.Phase = CredentialsRotationPhase(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", 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.LastCompletionTime == nil { - m.LastCompletionTime = &v11.Time{} - } - if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", 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.LastInitiationTime == nil { - m.LastInitiationTime = &v11.Time{} - } - if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationFinishedTime", 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.LastInitiationFinishedTime == nil { - m.LastInitiationFinishedTime = &v11.Time{} - } - if err := m.LastInitiationFinishedTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTriggeredTime", 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.LastCompletionTriggeredTime == nil { - m.LastCompletionTriggeredTime = &v11.Time{} - } - if err := m.LastCompletionTriggeredTime.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 *ShootSpec) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 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 f3140e757..cce994d6b 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 @@ -692,6 +692,31 @@ message DeploymentRef { optional string name = 1; } +// ETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. +message ETCDEncryptionKeyRotation { + // Phase describes the phase of the ETCD encryption key credential rotation. + optional string phase = 1; + + // LastCompletionTime is the most recent time when the ETCD encryption key credential rotation was successfully + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; + + // LastInitiationTime is the most recent time when the ETCD encryption key credential rotation was initiated. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; + + // LastInitiationFinishedTime is the recent time when the certificate authority credential rotation initiation was + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationFinishedTime = 4; + + // LastCompletionTriggeredTime is the recent time when the certificate authority credential rotation completion was + // triggered. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTriggeredTime = 5; +} + // ExpirableVersion contains a version and an expiration date. message ExpirableVersion { // Version is the version identifier. @@ -918,9 +943,9 @@ message KubeAPIServerConfig { optional AuditConfig auditConfig = 4; // EnableBasicAuthentication defines whether basic authentication should be enabled for this cluster or not. + // + // Deprecated: basic authentication has been removed in Kubernetes v1.19+. The field is no-op and will be removed in a future version. // +optional - // Defaults to false. - // Deprecated: basic authentication has been removed in Kubernetes v1.19+. This field will be removed in a future version. optional bool enableBasicAuthentication = 5; // OIDCConfig contains configuration settings for the OIDC provider. @@ -2022,7 +2047,7 @@ message SeedBackup { message SeedDNS { // IngressDomain is the domain of the Seed cluster pointing to the ingress controller endpoint. It will be used // to construct ingress URLs for system applications running in Shoot clusters. This field is immutable. - // This will be removed in the next API version and replaced by spec.ingress.domain. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use spec.ingress.domain instead. // +optional optional string ingressDomain = 1; @@ -2040,10 +2065,12 @@ message SeedDNSProvider { optional k8s.io.api.core.v1.SecretReference secretRef = 2; // Domains contains information about which domains shall be included/excluded for this provider. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. // +optional optional DNSIncludeExclude domains = 3; // Zones contains information about which hosted zones shall be included/excluded for this provider. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. // +optional optional DNSIncludeExclude zones = 4; } @@ -2197,6 +2224,14 @@ message SeedSettingScheduling { optional bool visible = 1; } +// SeedSettingTopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. +// See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. +message SeedSettingTopologyAwareRouting { + // Enabled controls whether certain Services deployed in the seed cluster should be topology-aware. + // These Services are etcd-main-client, etcd-events-client, kube-apiserver, gardener-resource-manager and vpa-webhook. + optional bool enabled = 1; +} + // SeedSettingVerticalPodAutoscaler controls certain settings for the vertical pod autoscaler components deployed in the // seed. message SeedSettingVerticalPodAutoscaler { @@ -2231,6 +2266,11 @@ message SeedSettings { // DependencyWatchdog controls certain settings for the dependency-watchdog components deployed in the seed. // +optional optional SeedSettingDependencyWatchdog dependencyWatchdog = 7; + + // TopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. + // See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. + // +optional + optional SeedSettingTopologyAwareRouting topologyAwareRouting = 8; } // SeedSpec is the specification of a Seed. @@ -2385,6 +2425,31 @@ message ServiceAccountConfig { repeated string acceptedIssuers = 5; } +// ServiceAccountKeyRotation contains information about the service account key credential rotation. +message ServiceAccountKeyRotation { + // Phase describes the phase of the service account key credential rotation. + optional string phase = 1; + + // LastCompletionTime is the most recent time when the service account key credential rotation was successfully + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; + + // LastInitiationTime is the most recent time when the service account key credential rotation was initiated. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; + + // LastInitiationFinishedTime is the recent time when the certificate authority credential rotation initiation was + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationFinishedTime = 4; + + // LastCompletionTriggeredTime is the recent time when the certificate authority credential rotation completion was + // triggered. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTriggeredTime = 5; +} + // Shoot represents a Shoot cluster created and managed by Gardener. message Shoot { // Standard object metadata. @@ -2437,36 +2502,11 @@ message ShootCredentialsRotation { // ServiceAccountKey contains information about the service account key credential rotation. // +optional - optional ShootServiceAccountKeyRotation serviceAccountKey = 5; + optional ServiceAccountKeyRotation serviceAccountKey = 5; // ETCDEncryptionKey contains information about the ETCD encryption key credential rotation. // +optional - optional ShootETCDEncryptionKeyRotation etcdEncryptionKey = 6; -} - -// ShootETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. -message ShootETCDEncryptionKeyRotation { - // Phase describes the phase of the ETCD encryption key credential rotation. - optional string phase = 1; - - // LastCompletionTime is the most recent time when the ETCD encryption key credential rotation was successfully - // completed. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; - - // LastInitiationTime is the most recent time when the ETCD encryption key credential rotation was initiated. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; - - // LastInitiationFinishedTime is the recent time when the certificate authority credential rotation initiation was - // completed. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationFinishedTime = 4; - - // LastCompletionTriggeredTime is the recent time when the certificate authority credential rotation completion was - // triggered. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTriggeredTime = 5; + optional ETCDEncryptionKeyRotation etcdEncryptionKey = 6; } // ShootKubeconfigRotation contains information about the kubeconfig credential rotation. @@ -2539,31 +2579,6 @@ message ShootSSHKeypairRotation { optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; } -// ShootServiceAccountKeyRotation contains information about the service account key credential rotation. -message ShootServiceAccountKeyRotation { - // Phase describes the phase of the service account key credential rotation. - optional string phase = 1; - - // LastCompletionTime is the most recent time when the service account key credential rotation was successfully - // completed. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; - - // LastInitiationTime is the most recent time when the service account key credential rotation was initiated. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; - - // LastInitiationFinishedTime is the recent time when the certificate authority credential rotation initiation was - // completed. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationFinishedTime = 4; - - // LastCompletionTriggeredTime is the recent time when the certificate authority credential rotation completion was - // triggered. - // +optional - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTriggeredTime = 5; -} - // ShootSpec is the specification of a Shoot. message ShootSpec { // Addons contains information about enabled/disabled addons and their configuration. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/helper.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/helper.go index 43cbe0688..2ef64882c 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/helper.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/helper.go @@ -470,19 +470,6 @@ func ShootWantsAlertManager(shoot *gardencorev1beta1.Shoot) bool { return !ShootIgnoresAlerts(shoot) && shoot.Spec.Monitoring != nil && shoot.Spec.Monitoring.Alerting != nil && len(shoot.Spec.Monitoring.Alerting.EmailReceivers) > 0 } -// ShootWantsBasicAuthentication returns true if basic authentication is not configured or -// if it is set explicitly to 'true'. -func ShootWantsBasicAuthentication(shoot *gardencorev1beta1.Shoot) bool { - kubeAPIServerConfig := shoot.Spec.Kubernetes.KubeAPIServer - if kubeAPIServerConfig == nil { - return true - } - if kubeAPIServerConfig.EnableBasicAuthentication == nil { - return true - } - return *kubeAPIServerConfig.EnableBasicAuthentication -} - // ShootUsesUnmanagedDNS returns true if the shoot's DNS section is marked as 'unmanaged'. func ShootUsesUnmanagedDNS(shoot *gardencorev1beta1.Shoot) bool { return shoot.Spec.DNS != nil && len(shoot.Spec.DNS.Providers) > 0 && shoot.Spec.DNS.Providers[0].Type != nil && *shoot.Spec.DNS.Providers[0].Type == "unmanaged" @@ -521,6 +508,11 @@ func SeedSettingDependencyWatchdogProbeEnabled(settings *gardencorev1beta1.SeedS return settings == nil || settings.DependencyWatchdog == nil || settings.DependencyWatchdog.Probe == nil || settings.DependencyWatchdog.Probe.Enabled } +// SeedSettingTopologyAwareRoutingEnabled returns true if the topology-aware routing is enabled. +func SeedSettingTopologyAwareRoutingEnabled(settings *gardencorev1beta1.SeedSettings) bool { + return settings != nil && settings.TopologyAwareRouting != nil && settings.TopologyAwareRouting.Enabled +} + // SeedUsesNginxIngressController returns true if the seed's specification requires an nginx ingress controller to be deployed. func SeedUsesNginxIngressController(seed *gardencorev1beta1.Seed) bool { return seed.Spec.DNS.Provider != nil && seed.Spec.Ingress != nil && seed.Spec.Ingress.Controller.Kind == v1beta1constants.IngressKindNginx @@ -1307,7 +1299,7 @@ func GetShootServiceAccountKeyRotationPhase(credentials *gardencorev1beta1.Shoot // MutateShootServiceAccountKeyRotation mutates the .status.credentials.rotation.serviceAccountKey field based on the // provided mutation function. If the field is nil then it is initialized. -func MutateShootServiceAccountKeyRotation(shoot *gardencorev1beta1.Shoot, f func(*gardencorev1beta1.ShootServiceAccountKeyRotation)) { +func MutateShootServiceAccountKeyRotation(shoot *gardencorev1beta1.Shoot, f func(*gardencorev1beta1.ServiceAccountKeyRotation)) { if f == nil { return } @@ -1319,7 +1311,7 @@ func MutateShootServiceAccountKeyRotation(shoot *gardencorev1beta1.Shoot, f func shoot.Status.Credentials.Rotation = &gardencorev1beta1.ShootCredentialsRotation{} } if shoot.Status.Credentials.Rotation.ServiceAccountKey == nil { - shoot.Status.Credentials.Rotation.ServiceAccountKey = &gardencorev1beta1.ShootServiceAccountKeyRotation{} + shoot.Status.Credentials.Rotation.ServiceAccountKey = &gardencorev1beta1.ServiceAccountKeyRotation{} } f(shoot.Status.Credentials.Rotation.ServiceAccountKey) @@ -1336,7 +1328,7 @@ func GetShootETCDEncryptionKeyRotationPhase(credentials *gardencorev1beta1.Shoot // MutateShootETCDEncryptionKeyRotation mutates the .status.credentials.rotation.etcdEncryptionKey field based on the // provided mutation function. If the field is nil then it is initialized. -func MutateShootETCDEncryptionKeyRotation(shoot *gardencorev1beta1.Shoot, f func(*gardencorev1beta1.ShootETCDEncryptionKeyRotation)) { +func MutateShootETCDEncryptionKeyRotation(shoot *gardencorev1beta1.Shoot, f func(*gardencorev1beta1.ETCDEncryptionKeyRotation)) { if f == nil { return } @@ -1348,7 +1340,7 @@ func MutateShootETCDEncryptionKeyRotation(shoot *gardencorev1beta1.Shoot, f func shoot.Status.Credentials.Rotation = &gardencorev1beta1.ShootCredentialsRotation{} } if shoot.Status.Credentials.Rotation.ETCDEncryptionKey == nil { - shoot.Status.Credentials.Rotation.ETCDEncryptionKey = &gardencorev1beta1.ShootETCDEncryptionKeyRotation{} + shoot.Status.Credentials.Rotation.ETCDEncryptionKey = &gardencorev1beta1.ETCDEncryptionKeyRotation{} } f(shoot.Status.Credentials.Rotation.ETCDEncryptionKey) @@ -1407,3 +1399,9 @@ func GetFailureToleranceType(shoot *gardencorev1beta1.Shoot) *gardencorev1beta1. func SeedWantsManagedIngress(seed *gardencorev1beta1.Seed) bool { return seed.Spec.DNS.Provider != nil && seed.Spec.Ingress != nil && seed.Spec.Ingress.Controller.Kind == v1beta1constants.IngressKindNginx } + +// IsTopologyAwareRoutingForShootControlPlaneEnabled returns whether the topology aware routing is enabled for the given Shoot control plane. +// Topology-aware routing is enabled when the corresponding Seed setting is enabled and the Shoot has a multi-zonal control plane. +func IsTopologyAwareRoutingForShootControlPlaneEnabled(seed *gardencorev1beta1.Seed, shoot *gardencorev1beta1.Shoot) bool { + return SeedSettingTopologyAwareRoutingEnabled(seed.Spec.Settings) && IsMultiZonalShootControlPlane(shoot) +} diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_seed.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_seed.go index b15c8e400..4cb3aed54 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_seed.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_seed.go @@ -142,7 +142,7 @@ type SeedBackup struct { type SeedDNS struct { // IngressDomain is the domain of the Seed cluster pointing to the ingress controller endpoint. It will be used // to construct ingress URLs for system applications running in Shoot clusters. This field is immutable. - // This will be removed in the next API version and replaced by spec.ingress.domain. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use spec.ingress.domain instead. // +optional IngressDomain *string `json:"ingressDomain,omitempty" protobuf:"bytes,1,opt,name=ingressDomain"` // Provider configures a DNSProvider @@ -157,9 +157,11 @@ type SeedDNSProvider struct { // SecretRef is a reference to a Secret object containing cloud provider credentials used for registering external domains. SecretRef corev1.SecretReference `json:"secretRef" protobuf:"bytes,2,opt,name=secretRef"` // Domains contains information about which domains shall be included/excluded for this provider. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. // +optional Domains *DNSIncludeExclude `json:"domains,omitempty" protobuf:"bytes,3,opt,name=domains"` // Zones contains information about which hosted zones shall be included/excluded for this provider. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. // +optional Zones *DNSIncludeExclude `json:"zones,omitempty" protobuf:"bytes,4,opt,name=zones"` } @@ -253,6 +255,10 @@ type SeedSettings struct { // DependencyWatchdog controls certain settings for the dependency-watchdog components deployed in the seed. // +optional DependencyWatchdog *SeedSettingDependencyWatchdog `json:"dependencyWatchdog,omitempty" protobuf:"bytes,7,opt,name=dependencyWatchdog"` + // TopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. + // See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. + // +optional + TopologyAwareRouting *SeedSettingTopologyAwareRouting `json:"topologyAwareRouting,omitempty" protobuf:"bytes,8,opt,name=topologyAwareRouting"` } // SeedSettingExcessCapacityReservation controls the excess capacity reservation for shoot control planes in the seed. @@ -342,6 +348,14 @@ type SeedSettingDependencyWatchdogProbe struct { Enabled bool `json:"enabled" protobuf:"bytes,1,opt,name=enabled"` } +// SeedSettingTopologyAwareRouting controls certain settings for topology-aware traffic routing in the seed. +// See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. +type SeedSettingTopologyAwareRouting struct { + // Enabled controls whether certain Services deployed in the seed cluster should be topology-aware. + // These Services are etcd-main-client, etcd-events-client, kube-apiserver, gardener-resource-manager and vpa-webhook. + Enabled bool `json:"enabled" protobuf:"bytes,1,opt,name=enabled"` +} + // SeedTaint describes a taint on a seed. type SeedTaint struct { // Key is the taint key to be applied to a seed. 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 b0b158e1f..e147ebd04 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 @@ -235,10 +235,10 @@ type ShootCredentialsRotation struct { Observability *ShootObservabilityRotation `json:"observability,omitempty" protobuf:"bytes,4,opt,name=observability"` // ServiceAccountKey contains information about the service account key credential rotation. // +optional - ServiceAccountKey *ShootServiceAccountKeyRotation `json:"serviceAccountKey,omitempty" protobuf:"bytes,5,opt,name=serviceAccountKey"` + ServiceAccountKey *ServiceAccountKeyRotation `json:"serviceAccountKey,omitempty" protobuf:"bytes,5,opt,name=serviceAccountKey"` // ETCDEncryptionKey contains information about the ETCD encryption key credential rotation. // +optional - ETCDEncryptionKey *ShootETCDEncryptionKeyRotation `json:"etcdEncryptionKey,omitempty" protobuf:"bytes,6,opt,name=etcdEncryptionKey"` + ETCDEncryptionKey *ETCDEncryptionKeyRotation `json:"etcdEncryptionKey,omitempty" protobuf:"bytes,6,opt,name=etcdEncryptionKey"` } // CARotation contains information about the certificate authority credential rotation. @@ -292,8 +292,8 @@ type ShootObservabilityRotation struct { LastCompletionTime *metav1.Time `json:"lastCompletionTime,omitempty" protobuf:"bytes,2,opt,name=lastCompletionTime"` } -// ShootServiceAccountKeyRotation contains information about the service account key credential rotation. -type ShootServiceAccountKeyRotation struct { +// ServiceAccountKeyRotation contains information about the service account key credential rotation. +type ServiceAccountKeyRotation struct { // Phase describes the phase of the service account key credential rotation. Phase CredentialsRotationPhase `json:"phase" protobuf:"bytes,1,opt,name=phase"` // LastCompletionTime is the most recent time when the service account key credential rotation was successfully @@ -313,8 +313,8 @@ type ShootServiceAccountKeyRotation struct { LastCompletionTriggeredTime *metav1.Time `json:"lastCompletionTriggeredTime,omitempty" protobuf:"bytes,5,opt,name=lastCompletionTriggeredTime"` } -// ShootETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. -type ShootETCDEncryptionKeyRotation struct { +// ETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. +type ETCDEncryptionKeyRotation struct { // Phase describes the phase of the ETCD encryption key credential rotation. Phase CredentialsRotationPhase `json:"phase" protobuf:"bytes,1,opt,name=phase"` // LastCompletionTime is the most recent time when the ETCD encryption key credential rotation was successfully @@ -382,9 +382,6 @@ type KubernetesDashboard struct { } const ( - // KubernetesDashboardAuthModeBasic uses basic authentication mode for auth. - // Deprecated: basic authentication has been removed in Kubernetes v1.19+. - KubernetesDashboardAuthModeBasic = "basic" // KubernetesDashboardAuthModeToken uses token-based mode for auth. KubernetesDashboardAuthModeToken = "token" ) @@ -676,9 +673,9 @@ type KubeAPIServerConfig struct { // +optional AuditConfig *AuditConfig `json:"auditConfig,omitempty" protobuf:"bytes,4,opt,name=auditConfig"` // EnableBasicAuthentication defines whether basic authentication should be enabled for this cluster or not. + // + // Deprecated: basic authentication has been removed in Kubernetes v1.19+. The field is no-op and will be removed in a future version. // +optional - // Defaults to false. - // Deprecated: basic authentication has been removed in Kubernetes v1.19+. This field will be removed in a future version. EnableBasicAuthentication *bool `json:"enableBasicAuthentication,omitempty" protobuf:"varint,5,opt,name=enableBasicAuthentication"` // OIDCConfig contains configuration settings for the OIDC provider. // +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 67a4433d7..7393f2c42 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 @@ -492,6 +492,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*ETCDEncryptionKeyRotation)(nil), (*core.ETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation(a.(*ETCDEncryptionKeyRotation), b.(*core.ETCDEncryptionKeyRotation), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.ETCDEncryptionKeyRotation)(nil), (*ETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_ETCDEncryptionKeyRotation_To_v1beta1_ETCDEncryptionKeyRotation(a.(*core.ETCDEncryptionKeyRotation), b.(*ETCDEncryptionKeyRotation), 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 { @@ -1292,6 +1302,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*SeedSettingTopologyAwareRouting)(nil), (*core.SeedSettingTopologyAwareRouting)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting(a.(*SeedSettingTopologyAwareRouting), b.(*core.SeedSettingTopologyAwareRouting), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.SeedSettingTopologyAwareRouting)(nil), (*SeedSettingTopologyAwareRouting)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_SeedSettingTopologyAwareRouting_To_v1beta1_SeedSettingTopologyAwareRouting(a.(*core.SeedSettingTopologyAwareRouting), b.(*SeedSettingTopologyAwareRouting), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*SeedSettingVerticalPodAutoscaler)(nil), (*core.SeedSettingVerticalPodAutoscaler)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_SeedSettingVerticalPodAutoscaler_To_core_SeedSettingVerticalPodAutoscaler(a.(*SeedSettingVerticalPodAutoscaler), b.(*core.SeedSettingVerticalPodAutoscaler), scope) }); err != nil { @@ -1382,6 +1402,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*ServiceAccountKeyRotation)(nil), (*core.ServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation(a.(*ServiceAccountKeyRotation), b.(*core.ServiceAccountKeyRotation), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.ServiceAccountKeyRotation)(nil), (*ServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_ServiceAccountKeyRotation_To_v1beta1_ServiceAccountKeyRotation(a.(*core.ServiceAccountKeyRotation), b.(*ServiceAccountKeyRotation), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*Shoot)(nil), (*core.Shoot)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_Shoot_To_core_Shoot(a.(*Shoot), b.(*core.Shoot), scope) }); err != nil { @@ -1422,16 +1452,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*ShootETCDEncryptionKeyRotation)(nil), (*core.ShootETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(a.(*ShootETCDEncryptionKeyRotation), b.(*core.ShootETCDEncryptionKeyRotation), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*core.ShootETCDEncryptionKeyRotation)(nil), (*ShootETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_core_ShootETCDEncryptionKeyRotation_To_v1beta1_ShootETCDEncryptionKeyRotation(a.(*core.ShootETCDEncryptionKeyRotation), b.(*ShootETCDEncryptionKeyRotation), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*ShootKubeconfigRotation)(nil), (*core.ShootKubeconfigRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_ShootKubeconfigRotation_To_core_ShootKubeconfigRotation(a.(*ShootKubeconfigRotation), b.(*core.ShootKubeconfigRotation), scope) }); err != nil { @@ -1492,16 +1512,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*ShootServiceAccountKeyRotation)(nil), (*core.ShootServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(a.(*ShootServiceAccountKeyRotation), b.(*core.ShootServiceAccountKeyRotation), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*core.ShootServiceAccountKeyRotation)(nil), (*ShootServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_core_ShootServiceAccountKeyRotation_To_v1beta1_ShootServiceAccountKeyRotation(a.(*core.ShootServiceAccountKeyRotation), b.(*ShootServiceAccountKeyRotation), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*ShootSpec)(nil), (*core.ShootSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_ShootSpec_To_core_ShootSpec(a.(*ShootSpec), b.(*core.ShootSpec), scope) }); err != nil { @@ -2821,6 +2831,34 @@ func Convert_core_DeploymentRef_To_v1beta1_DeploymentRef(in *core.DeploymentRef, return autoConvert_core_DeploymentRef_To_v1beta1_DeploymentRef(in, out, s) } +func autoConvert_v1beta1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation(in *ETCDEncryptionKeyRotation, out *core.ETCDEncryptionKeyRotation, s conversion.Scope) error { + out.Phase = core.CredentialsRotationPhase(in.Phase) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) + out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) + return nil +} + +// Convert_v1beta1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation is an autogenerated conversion function. +func Convert_v1beta1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation(in *ETCDEncryptionKeyRotation, out *core.ETCDEncryptionKeyRotation, s conversion.Scope) error { + return autoConvert_v1beta1_ETCDEncryptionKeyRotation_To_core_ETCDEncryptionKeyRotation(in, out, s) +} + +func autoConvert_core_ETCDEncryptionKeyRotation_To_v1beta1_ETCDEncryptionKeyRotation(in *core.ETCDEncryptionKeyRotation, out *ETCDEncryptionKeyRotation, s conversion.Scope) error { + out.Phase = CredentialsRotationPhase(in.Phase) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) + return nil +} + +// Convert_core_ETCDEncryptionKeyRotation_To_v1beta1_ETCDEncryptionKeyRotation is an autogenerated conversion function. +func Convert_core_ETCDEncryptionKeyRotation_To_v1beta1_ETCDEncryptionKeyRotation(in *core.ETCDEncryptionKeyRotation, out *ETCDEncryptionKeyRotation, s conversion.Scope) error { + return autoConvert_core_ETCDEncryptionKeyRotation_To_v1beta1_ETCDEncryptionKeyRotation(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)) @@ -5070,6 +5108,26 @@ func Convert_core_SeedSettingScheduling_To_v1beta1_SeedSettingScheduling(in *cor return autoConvert_core_SeedSettingScheduling_To_v1beta1_SeedSettingScheduling(in, out, s) } +func autoConvert_v1beta1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting(in *SeedSettingTopologyAwareRouting, out *core.SeedSettingTopologyAwareRouting, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_v1beta1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting is an autogenerated conversion function. +func Convert_v1beta1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting(in *SeedSettingTopologyAwareRouting, out *core.SeedSettingTopologyAwareRouting, s conversion.Scope) error { + return autoConvert_v1beta1_SeedSettingTopologyAwareRouting_To_core_SeedSettingTopologyAwareRouting(in, out, s) +} + +func autoConvert_core_SeedSettingTopologyAwareRouting_To_v1beta1_SeedSettingTopologyAwareRouting(in *core.SeedSettingTopologyAwareRouting, out *SeedSettingTopologyAwareRouting, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_core_SeedSettingTopologyAwareRouting_To_v1beta1_SeedSettingTopologyAwareRouting is an autogenerated conversion function. +func Convert_core_SeedSettingTopologyAwareRouting_To_v1beta1_SeedSettingTopologyAwareRouting(in *core.SeedSettingTopologyAwareRouting, out *SeedSettingTopologyAwareRouting, s conversion.Scope) error { + return autoConvert_core_SeedSettingTopologyAwareRouting_To_v1beta1_SeedSettingTopologyAwareRouting(in, out, s) +} + func autoConvert_v1beta1_SeedSettingVerticalPodAutoscaler_To_core_SeedSettingVerticalPodAutoscaler(in *SeedSettingVerticalPodAutoscaler, out *core.SeedSettingVerticalPodAutoscaler, s conversion.Scope) error { out.Enabled = in.Enabled return nil @@ -5097,6 +5155,7 @@ func autoConvert_v1beta1_SeedSettings_To_core_SeedSettings(in *SeedSettings, out out.VerticalPodAutoscaler = (*core.SeedSettingVerticalPodAutoscaler)(unsafe.Pointer(in.VerticalPodAutoscaler)) out.OwnerChecks = (*core.SeedSettingOwnerChecks)(unsafe.Pointer(in.OwnerChecks)) out.DependencyWatchdog = (*core.SeedSettingDependencyWatchdog)(unsafe.Pointer(in.DependencyWatchdog)) + out.TopologyAwareRouting = (*core.SeedSettingTopologyAwareRouting)(unsafe.Pointer(in.TopologyAwareRouting)) return nil } @@ -5112,6 +5171,7 @@ func autoConvert_core_SeedSettings_To_v1beta1_SeedSettings(in *core.SeedSettings out.VerticalPodAutoscaler = (*SeedSettingVerticalPodAutoscaler)(unsafe.Pointer(in.VerticalPodAutoscaler)) out.OwnerChecks = (*SeedSettingOwnerChecks)(unsafe.Pointer(in.OwnerChecks)) out.DependencyWatchdog = (*SeedSettingDependencyWatchdog)(unsafe.Pointer(in.DependencyWatchdog)) + out.TopologyAwareRouting = (*SeedSettingTopologyAwareRouting)(unsafe.Pointer(in.TopologyAwareRouting)) return nil } @@ -5320,6 +5380,34 @@ func Convert_core_ServiceAccountConfig_To_v1beta1_ServiceAccountConfig(in *core. return autoConvert_core_ServiceAccountConfig_To_v1beta1_ServiceAccountConfig(in, out, s) } +func autoConvert_v1beta1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation(in *ServiceAccountKeyRotation, out *core.ServiceAccountKeyRotation, s conversion.Scope) error { + out.Phase = core.CredentialsRotationPhase(in.Phase) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) + out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) + return nil +} + +// Convert_v1beta1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation is an autogenerated conversion function. +func Convert_v1beta1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation(in *ServiceAccountKeyRotation, out *core.ServiceAccountKeyRotation, s conversion.Scope) error { + return autoConvert_v1beta1_ServiceAccountKeyRotation_To_core_ServiceAccountKeyRotation(in, out, s) +} + +func autoConvert_core_ServiceAccountKeyRotation_To_v1beta1_ServiceAccountKeyRotation(in *core.ServiceAccountKeyRotation, out *ServiceAccountKeyRotation, s conversion.Scope) error { + out.Phase = CredentialsRotationPhase(in.Phase) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) + return nil +} + +// Convert_core_ServiceAccountKeyRotation_To_v1beta1_ServiceAccountKeyRotation is an autogenerated conversion function. +func Convert_core_ServiceAccountKeyRotation_To_v1beta1_ServiceAccountKeyRotation(in *core.ServiceAccountKeyRotation, out *ServiceAccountKeyRotation, s conversion.Scope) error { + return autoConvert_core_ServiceAccountKeyRotation_To_v1beta1_ServiceAccountKeyRotation(in, out, s) +} + func autoConvert_v1beta1_Shoot_To_core_Shoot(in *Shoot, out *core.Shoot, s conversion.Scope) error { out.ObjectMeta = in.ObjectMeta if err := Convert_v1beta1_ShootSpec_To_core_ShootSpec(&in.Spec, &out.Spec, s); err != nil { @@ -5399,8 +5487,8 @@ func autoConvert_v1beta1_ShootCredentialsRotation_To_core_ShootCredentialsRotati out.Kubeconfig = (*core.ShootKubeconfigRotation)(unsafe.Pointer(in.Kubeconfig)) out.SSHKeypair = (*core.ShootSSHKeypairRotation)(unsafe.Pointer(in.SSHKeypair)) out.Observability = (*core.ShootObservabilityRotation)(unsafe.Pointer(in.Observability)) - out.ServiceAccountKey = (*core.ShootServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) - out.ETCDEncryptionKey = (*core.ShootETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) + out.ServiceAccountKey = (*core.ServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) + out.ETCDEncryptionKey = (*core.ETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) return nil } @@ -5414,8 +5502,8 @@ func autoConvert_core_ShootCredentialsRotation_To_v1beta1_ShootCredentialsRotati out.Kubeconfig = (*ShootKubeconfigRotation)(unsafe.Pointer(in.Kubeconfig)) out.SSHKeypair = (*ShootSSHKeypairRotation)(unsafe.Pointer(in.SSHKeypair)) out.Observability = (*ShootObservabilityRotation)(unsafe.Pointer(in.Observability)) - out.ServiceAccountKey = (*ShootServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) - out.ETCDEncryptionKey = (*ShootETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) + out.ServiceAccountKey = (*ServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) + out.ETCDEncryptionKey = (*ETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) return nil } @@ -5424,34 +5512,6 @@ func Convert_core_ShootCredentialsRotation_To_v1beta1_ShootCredentialsRotation(i return autoConvert_core_ShootCredentialsRotation_To_v1beta1_ShootCredentialsRotation(in, out, s) } -func autoConvert_v1beta1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(in *ShootETCDEncryptionKeyRotation, out *core.ShootETCDEncryptionKeyRotation, s conversion.Scope) error { - out.Phase = core.CredentialsRotationPhase(in.Phase) - out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) - out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) - out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) - out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) - return nil -} - -// Convert_v1beta1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation is an autogenerated conversion function. -func Convert_v1beta1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(in *ShootETCDEncryptionKeyRotation, out *core.ShootETCDEncryptionKeyRotation, s conversion.Scope) error { - return autoConvert_v1beta1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(in, out, s) -} - -func autoConvert_core_ShootETCDEncryptionKeyRotation_To_v1beta1_ShootETCDEncryptionKeyRotation(in *core.ShootETCDEncryptionKeyRotation, out *ShootETCDEncryptionKeyRotation, s conversion.Scope) error { - out.Phase = CredentialsRotationPhase(in.Phase) - out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) - out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) - out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) - out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) - return nil -} - -// Convert_core_ShootETCDEncryptionKeyRotation_To_v1beta1_ShootETCDEncryptionKeyRotation is an autogenerated conversion function. -func Convert_core_ShootETCDEncryptionKeyRotation_To_v1beta1_ShootETCDEncryptionKeyRotation(in *core.ShootETCDEncryptionKeyRotation, out *ShootETCDEncryptionKeyRotation, s conversion.Scope) error { - return autoConvert_core_ShootETCDEncryptionKeyRotation_To_v1beta1_ShootETCDEncryptionKeyRotation(in, out, s) -} - func autoConvert_v1beta1_ShootKubeconfigRotation_To_core_ShootKubeconfigRotation(in *ShootKubeconfigRotation, out *core.ShootKubeconfigRotation, s conversion.Scope) error { out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) @@ -5610,34 +5670,6 @@ func Convert_core_ShootSSHKeypairRotation_To_v1beta1_ShootSSHKeypairRotation(in return autoConvert_core_ShootSSHKeypairRotation_To_v1beta1_ShootSSHKeypairRotation(in, out, s) } -func autoConvert_v1beta1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(in *ShootServiceAccountKeyRotation, out *core.ShootServiceAccountKeyRotation, s conversion.Scope) error { - out.Phase = core.CredentialsRotationPhase(in.Phase) - out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) - out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) - out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) - out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) - return nil -} - -// Convert_v1beta1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation is an autogenerated conversion function. -func Convert_v1beta1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(in *ShootServiceAccountKeyRotation, out *core.ShootServiceAccountKeyRotation, s conversion.Scope) error { - return autoConvert_v1beta1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(in, out, s) -} - -func autoConvert_core_ShootServiceAccountKeyRotation_To_v1beta1_ShootServiceAccountKeyRotation(in *core.ShootServiceAccountKeyRotation, out *ShootServiceAccountKeyRotation, s conversion.Scope) error { - out.Phase = CredentialsRotationPhase(in.Phase) - out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) - out.LastInitiationFinishedTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationFinishedTime)) - out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) - out.LastCompletionTriggeredTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTriggeredTime)) - return nil -} - -// Convert_core_ShootServiceAccountKeyRotation_To_v1beta1_ShootServiceAccountKeyRotation is an autogenerated conversion function. -func Convert_core_ShootServiceAccountKeyRotation_To_v1beta1_ShootServiceAccountKeyRotation(in *core.ShootServiceAccountKeyRotation, out *ShootServiceAccountKeyRotation, s conversion.Scope) error { - return autoConvert_core_ShootServiceAccountKeyRotation_To_v1beta1_ShootServiceAccountKeyRotation(in, out, s) -} - func autoConvert_v1beta1_ShootSpec_To_core_ShootSpec(in *ShootSpec, out *core.ShootSpec, s conversion.Scope) error { out.Addons = (*core.Addons)(unsafe.Pointer(in.Addons)) out.CloudProfileName = in.CloudProfileName 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 184f7db88..8909791be 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 @@ -1308,6 +1308,38 @@ func (in *DeploymentRef) DeepCopy() *DeploymentRef { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ETCDEncryptionKeyRotation) DeepCopyInto(out *ETCDEncryptionKeyRotation) { + *out = *in + if in.LastCompletionTime != nil { + in, out := &in.LastCompletionTime, &out.LastCompletionTime + *out = (*in).DeepCopy() + } + if in.LastInitiationTime != nil { + in, out := &in.LastInitiationTime, &out.LastInitiationTime + *out = (*in).DeepCopy() + } + if in.LastInitiationFinishedTime != nil { + in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTriggeredTime != nil { + in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime + *out = (*in).DeepCopy() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ETCDEncryptionKeyRotation. +func (in *ETCDEncryptionKeyRotation) DeepCopy() *ETCDEncryptionKeyRotation { + if in == nil { + return nil + } + out := new(ETCDEncryptionKeyRotation) + 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 @@ -3799,6 +3831,22 @@ func (in *SeedSettingScheduling) DeepCopy() *SeedSettingScheduling { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SeedSettingTopologyAwareRouting) DeepCopyInto(out *SeedSettingTopologyAwareRouting) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SeedSettingTopologyAwareRouting. +func (in *SeedSettingTopologyAwareRouting) DeepCopy() *SeedSettingTopologyAwareRouting { + if in == nil { + return nil + } + out := new(SeedSettingTopologyAwareRouting) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SeedSettingVerticalPodAutoscaler) DeepCopyInto(out *SeedSettingVerticalPodAutoscaler) { *out = *in @@ -3848,6 +3896,11 @@ func (in *SeedSettings) DeepCopyInto(out *SeedSettings) { *out = new(SeedSettingDependencyWatchdog) (*in).DeepCopyInto(*out) } + if in.TopologyAwareRouting != nil { + in, out := &in.TopologyAwareRouting, &out.TopologyAwareRouting + *out = new(SeedSettingTopologyAwareRouting) + **out = **in + } return } @@ -4085,6 +4138,38 @@ func (in *ServiceAccountConfig) DeepCopy() *ServiceAccountConfig { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountKeyRotation) DeepCopyInto(out *ServiceAccountKeyRotation) { + *out = *in + if in.LastCompletionTime != nil { + in, out := &in.LastCompletionTime, &out.LastCompletionTime + *out = (*in).DeepCopy() + } + if in.LastInitiationTime != nil { + in, out := &in.LastInitiationTime, &out.LastInitiationTime + *out = (*in).DeepCopy() + } + if in.LastInitiationFinishedTime != nil { + in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTriggeredTime != nil { + in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime + *out = (*in).DeepCopy() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountKeyRotation. +func (in *ServiceAccountKeyRotation) DeepCopy() *ServiceAccountKeyRotation { + if in == nil { + return nil + } + out := new(ServiceAccountKeyRotation) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Shoot) DeepCopyInto(out *Shoot) { *out = *in @@ -4175,12 +4260,12 @@ func (in *ShootCredentialsRotation) DeepCopyInto(out *ShootCredentialsRotation) } if in.ServiceAccountKey != nil { in, out := &in.ServiceAccountKey, &out.ServiceAccountKey - *out = new(ShootServiceAccountKeyRotation) + *out = new(ServiceAccountKeyRotation) (*in).DeepCopyInto(*out) } if in.ETCDEncryptionKey != nil { in, out := &in.ETCDEncryptionKey, &out.ETCDEncryptionKey - *out = new(ShootETCDEncryptionKeyRotation) + *out = new(ETCDEncryptionKeyRotation) (*in).DeepCopyInto(*out) } return @@ -4196,38 +4281,6 @@ func (in *ShootCredentialsRotation) DeepCopy() *ShootCredentialsRotation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ShootETCDEncryptionKeyRotation) DeepCopyInto(out *ShootETCDEncryptionKeyRotation) { - *out = *in - if in.LastCompletionTime != nil { - in, out := &in.LastCompletionTime, &out.LastCompletionTime - *out = (*in).DeepCopy() - } - if in.LastInitiationTime != nil { - in, out := &in.LastInitiationTime, &out.LastInitiationTime - *out = (*in).DeepCopy() - } - if in.LastInitiationFinishedTime != nil { - in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime - *out = (*in).DeepCopy() - } - if in.LastCompletionTriggeredTime != nil { - in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime - *out = (*in).DeepCopy() - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootETCDEncryptionKeyRotation. -func (in *ShootETCDEncryptionKeyRotation) DeepCopy() *ShootETCDEncryptionKeyRotation { - if in == nil { - return nil - } - out := new(ShootETCDEncryptionKeyRotation) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootKubeconfigRotation) DeepCopyInto(out *ShootKubeconfigRotation) { *out = *in @@ -4385,38 +4438,6 @@ func (in *ShootSSHKeypairRotation) DeepCopy() *ShootSSHKeypairRotation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ShootServiceAccountKeyRotation) DeepCopyInto(out *ShootServiceAccountKeyRotation) { - *out = *in - if in.LastCompletionTime != nil { - in, out := &in.LastCompletionTime, &out.LastCompletionTime - *out = (*in).DeepCopy() - } - if in.LastInitiationTime != nil { - in, out := &in.LastInitiationTime, &out.LastInitiationTime - *out = (*in).DeepCopy() - } - if in.LastInitiationFinishedTime != nil { - in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime - *out = (*in).DeepCopy() - } - if in.LastCompletionTriggeredTime != nil { - in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime - *out = (*in).DeepCopy() - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootServiceAccountKeyRotation. -func (in *ShootServiceAccountKeyRotation) DeepCopy() *ShootServiceAccountKeyRotation { - if in == nil { - return nil - } - out := new(ShootServiceAccountKeyRotation) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { *out = *in 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 d6da1e2e6..298131357 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 @@ -1310,6 +1310,38 @@ func (in *DeploymentRef) DeepCopy() *DeploymentRef { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ETCDEncryptionKeyRotation) DeepCopyInto(out *ETCDEncryptionKeyRotation) { + *out = *in + if in.LastInitiationTime != nil { + in, out := &in.LastInitiationTime, &out.LastInitiationTime + *out = (*in).DeepCopy() + } + if in.LastInitiationFinishedTime != nil { + in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTime != nil { + in, out := &in.LastCompletionTime, &out.LastCompletionTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTriggeredTime != nil { + in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime + *out = (*in).DeepCopy() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ETCDEncryptionKeyRotation. +func (in *ETCDEncryptionKeyRotation) DeepCopy() *ETCDEncryptionKeyRotation { + if in == nil { + return nil + } + out := new(ETCDEncryptionKeyRotation) + 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 @@ -3801,6 +3833,22 @@ func (in *SeedSettingScheduling) DeepCopy() *SeedSettingScheduling { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SeedSettingTopologyAwareRouting) DeepCopyInto(out *SeedSettingTopologyAwareRouting) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SeedSettingTopologyAwareRouting. +func (in *SeedSettingTopologyAwareRouting) DeepCopy() *SeedSettingTopologyAwareRouting { + if in == nil { + return nil + } + out := new(SeedSettingTopologyAwareRouting) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SeedSettingVerticalPodAutoscaler) DeepCopyInto(out *SeedSettingVerticalPodAutoscaler) { *out = *in @@ -3850,6 +3898,11 @@ func (in *SeedSettings) DeepCopyInto(out *SeedSettings) { *out = new(SeedSettingDependencyWatchdog) (*in).DeepCopyInto(*out) } + if in.TopologyAwareRouting != nil { + in, out := &in.TopologyAwareRouting, &out.TopologyAwareRouting + *out = new(SeedSettingTopologyAwareRouting) + **out = **in + } return } @@ -4087,6 +4140,38 @@ func (in *ServiceAccountConfig) DeepCopy() *ServiceAccountConfig { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountKeyRotation) DeepCopyInto(out *ServiceAccountKeyRotation) { + *out = *in + if in.LastInitiationTime != nil { + in, out := &in.LastInitiationTime, &out.LastInitiationTime + *out = (*in).DeepCopy() + } + if in.LastInitiationFinishedTime != nil { + in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTime != nil { + in, out := &in.LastCompletionTime, &out.LastCompletionTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTriggeredTime != nil { + in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime + *out = (*in).DeepCopy() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountKeyRotation. +func (in *ServiceAccountKeyRotation) DeepCopy() *ServiceAccountKeyRotation { + if in == nil { + return nil + } + out := new(ServiceAccountKeyRotation) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Shoot) DeepCopyInto(out *Shoot) { *out = *in @@ -4177,12 +4262,12 @@ func (in *ShootCredentialsRotation) DeepCopyInto(out *ShootCredentialsRotation) } if in.ServiceAccountKey != nil { in, out := &in.ServiceAccountKey, &out.ServiceAccountKey - *out = new(ShootServiceAccountKeyRotation) + *out = new(ServiceAccountKeyRotation) (*in).DeepCopyInto(*out) } if in.ETCDEncryptionKey != nil { in, out := &in.ETCDEncryptionKey, &out.ETCDEncryptionKey - *out = new(ShootETCDEncryptionKeyRotation) + *out = new(ETCDEncryptionKeyRotation) (*in).DeepCopyInto(*out) } return @@ -4198,38 +4283,6 @@ func (in *ShootCredentialsRotation) DeepCopy() *ShootCredentialsRotation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ShootETCDEncryptionKeyRotation) DeepCopyInto(out *ShootETCDEncryptionKeyRotation) { - *out = *in - if in.LastInitiationTime != nil { - in, out := &in.LastInitiationTime, &out.LastInitiationTime - *out = (*in).DeepCopy() - } - if in.LastInitiationFinishedTime != nil { - in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime - *out = (*in).DeepCopy() - } - if in.LastCompletionTime != nil { - in, out := &in.LastCompletionTime, &out.LastCompletionTime - *out = (*in).DeepCopy() - } - if in.LastCompletionTriggeredTime != nil { - in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime - *out = (*in).DeepCopy() - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootETCDEncryptionKeyRotation. -func (in *ShootETCDEncryptionKeyRotation) DeepCopy() *ShootETCDEncryptionKeyRotation { - if in == nil { - return nil - } - out := new(ShootETCDEncryptionKeyRotation) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootKubeconfigRotation) DeepCopyInto(out *ShootKubeconfigRotation) { *out = *in @@ -4382,38 +4435,6 @@ func (in *ShootSSHKeypairRotation) DeepCopy() *ShootSSHKeypairRotation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ShootServiceAccountKeyRotation) DeepCopyInto(out *ShootServiceAccountKeyRotation) { - *out = *in - if in.LastInitiationTime != nil { - in, out := &in.LastInitiationTime, &out.LastInitiationTime - *out = (*in).DeepCopy() - } - if in.LastInitiationFinishedTime != nil { - in, out := &in.LastInitiationFinishedTime, &out.LastInitiationFinishedTime - *out = (*in).DeepCopy() - } - if in.LastCompletionTime != nil { - in, out := &in.LastCompletionTime, &out.LastCompletionTime - *out = (*in).DeepCopy() - } - if in.LastCompletionTriggeredTime != nil { - in, out := &in.LastCompletionTriggeredTime, &out.LastCompletionTriggeredTime - *out = (*in).DeepCopy() - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootServiceAccountKeyRotation. -func (in *ShootServiceAccountKeyRotation) DeepCopy() *ShootServiceAccountKeyRotation { - if in == nil { - return nil - } - out := new(ShootServiceAccountKeyRotation) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { *out = *in 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 d1c0a2858..e810d2b4a 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 @@ -214,6 +214,12 @@ type CredentialsRotation struct { // CertificateAuthorities contains information about the certificate authority credential rotation. // +optional CertificateAuthorities *gardencorev1beta1.CARotation `json:"certificateAuthorities,omitempty"` + // ServiceAccountKey contains information about the service account key credential rotation. + // +optional + ServiceAccountKey *gardencorev1beta1.ServiceAccountKeyRotation `json:"serviceAccountKey,omitempty"` + // ETCDEncryptionKey contains information about the ETCD encryption key credential rotation. + // +optional + ETCDEncryptionKey *gardencorev1beta1.ETCDEncryptionKeyRotation `json:"etcdEncryptionKey,omitempty"` } const ( 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 2461c394c..a4d593dcc 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 @@ -93,6 +93,16 @@ func (in *CredentialsRotation) DeepCopyInto(out *CredentialsRotation) { *out = new(v1beta1.CARotation) (*in).DeepCopyInto(*out) } + if in.ServiceAccountKey != nil { + in, out := &in.ServiceAccountKey, &out.ServiceAccountKey + *out = new(v1beta1.ServiceAccountKeyRotation) + (*in).DeepCopyInto(*out) + } + if in.ETCDEncryptionKey != nil { + in, out := &in.ETCDEncryptionKey, &out.ETCDEncryptionKey + *out = new(v1beta1.ETCDEncryptionKeyRotation) + (*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 36921a43a..baa073fb2 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 @@ -146,6 +146,12 @@ const ( // adding the pod-template-hash selector to the topology spread constraint. PodTopologySpreadConstraintsSkip = "topology-spread-constraints.resources.gardener.cloud/skip" + // EndpointSliceHintsConsider is a constant for a label on an Service which indicates that the EndpointSlices of the + // Service should be considered by the EndpointSlice hints webhook. This label is added to the Service object, Kubernetes + // maintains the Service label as EndpointSlice label. Finally, the EndpointSlice hints webhook mutates EndpointSlice resources + // containing this label. + EndpointSliceHintsConsider = "endpoint-slice-hints.resources.gardener.cloud/consider" + // NetworkingNamespaceSelectors is a constant for an annotation on a Service which contains a list of namespace // selectors. By default, NetworkPolicy resources are only created in the Service's namespace. If any selector is // present, NetworkPolicy resources are also created in all namespaces matching any of the provided selectors. diff --git a/vendor/github.com/gardener/gardener/pkg/extensions/id.go b/vendor/github.com/gardener/gardener/pkg/extensions/id.go deleted file mode 100644 index c0386f357..000000000 --- a/vendor/github.com/gardener/gardener/pkg/extensions/id.go +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) 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 extensions - -import ( - "fmt" -) - -// Id returns an identifier for the given extension kind/type. -func Id(extensionKind, extensionType string) string { - return fmt.Sprintf("%s/%s", extensionKind, extensionType) -} diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/types.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/types.go index dc3009de5..c21609e61 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/types.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/types.go @@ -133,8 +133,6 @@ type GardenletControllerConfiguration struct { BackupBucket *BackupBucketControllerConfiguration // BackupEntry defines the configuration of the BackupEntry controller. BackupEntry *BackupEntryControllerConfiguration - // BackupEntryMigration defines the configuration of the BackupEntryMigration controller. - BackupEntryMigration *BackupEntryMigrationControllerConfiguration // Bastion defines the configuration of the Bastion controller. Bastion *BastionControllerConfiguration // ControllerInstallation defines the configuration of the ControllerInstallation controller. @@ -151,8 +149,6 @@ type GardenletControllerConfiguration struct { Shoot *ShootControllerConfiguration // ShootCare defines the configuration of the ShootCare controller. ShootCare *ShootCareControllerConfiguration - // ShootMigration defines the configuration of the ShootMigration controller. - ShootMigration *ShootMigrationControllerConfiguration // ShootStateSync defines the configuration of the ShootState controller. ShootStateSync *ShootStateSyncControllerConfiguration // NetworkPolicy defines the configuration of the NetworkPolicy controller. @@ -183,21 +179,6 @@ type BackupEntryControllerConfiguration struct { DeletionGracePeriodShootPurposes []gardencore.ShootPurpose } -// BackupEntryMigrationControllerConfiguration defines the configuration of the BackupEntryMigration -// controller. -type BackupEntryMigrationControllerConfiguration struct { - // ConcurrentSyncs is the number of workers used for the controller to work on - // events. - ConcurrentSyncs *int - // SyncPeriod is the duration how often the existing resources are reconciled. - // It is only relevant for backup entries that are currently being migrated. - SyncPeriod *metav1.Duration - // GracePeriod is the period to wait before forcing the restoration after the migration has started. - GracePeriod *metav1.Duration - // LastOperationStaleDuration is the duration to consider the last operation stale after it was last updated. - LastOperationStaleDuration *metav1.Duration -} - // BastionControllerConfiguration defines the configuration of the Bastion // controller. type BastionControllerConfiguration struct { @@ -306,21 +287,6 @@ type SeedCareControllerConfiguration struct { ConditionThresholds []ConditionThreshold } -// ShootMigrationControllerConfiguration defines the configuration of the ShootMigration -// controller. -type ShootMigrationControllerConfiguration struct { - // ConcurrentSyncs is the number of workers used for the controller to work on - // events. - ConcurrentSyncs *int - // SyncPeriod is the duration how often the existing resources are reconciled. - // It is only relevant for shoots that are currently being migrated. - SyncPeriod *metav1.Duration - // GracePeriod is the period to wait before forcing the restoration after the migration has started. - GracePeriod *metav1.Duration - // LastOperationStaleDuration is the duration to consider the last operation stale after it was last updated. - LastOperationStaleDuration *metav1.Duration -} - // ShootSecretControllerConfiguration defines the configuration of the ShootSecret controller. type ShootSecretControllerConfiguration struct { // ConcurrentSyncs is the number of workers used for the controller to work on events. diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/defaults.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/defaults.go index 49c306d6d..a3a288796 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/defaults.go @@ -141,9 +141,6 @@ func SetDefaults_GardenletControllerConfiguration(obj *GardenletControllerConfig if obj.BackupEntry == nil { obj.BackupEntry = &BackupEntryControllerConfiguration{} } - if obj.BackupEntryMigration == nil { - obj.BackupEntryMigration = &BackupEntryMigrationControllerConfiguration{} - } if obj.Bastion == nil { obj.Bastion = &BastionControllerConfiguration{} } @@ -168,9 +165,6 @@ func SetDefaults_GardenletControllerConfiguration(obj *GardenletControllerConfig if obj.SeedCare == nil { obj.SeedCare = &SeedCareControllerConfiguration{} } - if obj.ShootMigration == nil { - obj.ShootMigration = &ShootMigrationControllerConfiguration{} - } if obj.ShootSecret == nil { obj.ShootSecret = &ShootSecretControllerConfiguration{} } @@ -249,29 +243,6 @@ func SetDefaults_ShootMonitoringConfig(obj *ShootMonitoringConfig) { } } -// SetDefaults_BackupEntryMigrationControllerConfiguration sets defaults for the backup entry migration controller. -func SetDefaults_BackupEntryMigrationControllerConfiguration(obj *BackupEntryMigrationControllerConfiguration) { - if obj.ConcurrentSyncs == nil { - v := 5 - obj.ConcurrentSyncs = &v - } - - if obj.SyncPeriod == nil { - v := metav1.Duration{Duration: time.Minute} - obj.SyncPeriod = &v - } - - if obj.GracePeriod == nil { - v := metav1.Duration{Duration: 10 * time.Minute} - obj.GracePeriod = &v - } - - if obj.LastOperationStaleDuration == nil { - v := metav1.Duration{Duration: 2 * time.Minute} - obj.LastOperationStaleDuration = &v - } -} - // SetDefaults_BastionControllerConfiguration sets defaults for the backup bucket controller. func SetDefaults_BastionControllerConfiguration(obj *BastionControllerConfiguration) { if obj.ConcurrentSyncs == nil { @@ -385,29 +356,6 @@ func SetDefaults_ShootCareControllerConfiguration(obj *ShootCareControllerConfig } } -// SetDefaults_ShootMigrationControllerConfiguration sets defaults for the shoot migration controller. -func SetDefaults_ShootMigrationControllerConfiguration(obj *ShootMigrationControllerConfiguration) { - if obj.ConcurrentSyncs == nil { - v := 5 - obj.ConcurrentSyncs = &v - } - - if obj.SyncPeriod == nil { - v := metav1.Duration{Duration: time.Minute} - obj.SyncPeriod = &v - } - - if obj.GracePeriod == nil { - v := metav1.Duration{Duration: 2 * time.Hour} - obj.GracePeriod = &v - } - - if obj.LastOperationStaleDuration == nil { - v := metav1.Duration{Duration: 10 * time.Minute} - obj.LastOperationStaleDuration = &v - } -} - // SetDefaults_StaleExtensionHealthChecks sets defaults for the stale extension health checks. func SetDefaults_StaleExtensionHealthChecks(obj *StaleExtensionHealthChecks) { if obj.Threshold == nil { diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/types.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/types.go index 0cf9faa0a..256a31dfa 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/types.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/types.go @@ -159,9 +159,6 @@ type GardenletControllerConfiguration struct { // BackupEntry defines the configuration of the BackupEntry controller. // +optional BackupEntry *BackupEntryControllerConfiguration `json:"backupEntry,omitempty"` - // BackupEntryMigration defines the configuration of the BackupEntryMigration controller. - // +optional - BackupEntryMigration *BackupEntryMigrationControllerConfiguration `json:"backupEntryMigration,omitempty"` // Bastion defines the configuration of the Bastion controller. // +optional Bastion *BastionControllerConfiguration `json:"bastion,omitempty"` @@ -186,9 +183,6 @@ type GardenletControllerConfiguration struct { // ShootCare defines the configuration of the ShootCare controller. // +optional ShootCare *ShootCareControllerConfiguration `json:"shootCare,omitempty"` - // ShootMigration defines the configuration of the ShootMigration controller. - // +optional - ShootMigration *ShootMigrationControllerConfiguration `json:"shootMigration,omitempty"` // ShootStateSync defines the configuration of the ShootState controller // +optional ShootStateSync *ShootStateSyncControllerConfiguration `json:"shootStateSync,omitempty"` @@ -227,25 +221,6 @@ type BackupEntryControllerConfiguration struct { DeletionGracePeriodShootPurposes []gardencorev1beta1.ShootPurpose `json:"deletionGracePeriodShootPurposes,omitempty"` } -// BackupEntryMigrationControllerConfiguration defines the configuration of the BackupEntryMigration -// controller. -type BackupEntryMigrationControllerConfiguration struct { - // ConcurrentSyncs is the number of workers used for the controller to work on - // events. - // +optional - ConcurrentSyncs *int `json:"concurrentSyncs,omitempty"` - // SyncPeriod is the duration how often the existing resources are reconciled. - // It is only relevant for backup entries that are currently being migrated. - // +optional - SyncPeriod *metav1.Duration `json:"syncPeriod,omitempty"` - // GracePeriod is the period to wait before forcing the restoration after the migration has started. - // +optional - GracePeriod *metav1.Duration `json:"gracePeriod,omitempty"` - // LastOperationStaleDuration is the duration to consider the last operation stale after it was last updated. - // +optional - LastOperationStaleDuration *metav1.Duration `json:"lastOperationStaleDuration,omitempty"` -} - // BastionControllerConfiguration defines the configuration of the Bastion // controller. type BastionControllerConfiguration struct { @@ -377,25 +352,6 @@ type SeedCareControllerConfiguration struct { ConditionThresholds []ConditionThreshold `json:"conditionThresholds,omitempty"` } -// ShootMigrationControllerConfiguration defines the configuration of the ShootMigration -// controller. -type ShootMigrationControllerConfiguration struct { - // ConcurrentSyncs is the number of workers used for the controller to work on - // events. - // +optional - ConcurrentSyncs *int `json:"concurrentSyncs,omitempty"` - // SyncPeriod is the duration how often the existing resources are reconciled. - // +optional - SyncPeriod *metav1.Duration `json:"syncPeriod,omitempty"` - // GracePeriod is the period to wait before forcing the restoration after the migration has started. - // It is only relevant for shoots that are currently being migrated. - // +optional - GracePeriod *metav1.Duration `json:"gracePeriod,omitempty"` - // LastOperationStaleDuration is the duration to consider the last operation stale after it was last updated. - // +optional - LastOperationStaleDuration *metav1.Duration `json:"lastOperationStaleDuration,omitempty"` -} - // ShootSecretControllerConfiguration defines the configuration of the ShootSecret controller. type ShootSecretControllerConfiguration struct { // ConcurrentSyncs is the number of workers used for the controller to work on events. diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.conversion.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.conversion.go index 0a16239b2..6d5b48dc1 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.conversion.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.conversion.go @@ -73,16 +73,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*BackupEntryMigrationControllerConfiguration)(nil), (*config.BackupEntryMigrationControllerConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_BackupEntryMigrationControllerConfiguration_To_config_BackupEntryMigrationControllerConfiguration(a.(*BackupEntryMigrationControllerConfiguration), b.(*config.BackupEntryMigrationControllerConfiguration), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*config.BackupEntryMigrationControllerConfiguration)(nil), (*BackupEntryMigrationControllerConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_config_BackupEntryMigrationControllerConfiguration_To_v1alpha1_BackupEntryMigrationControllerConfiguration(a.(*config.BackupEntryMigrationControllerConfiguration), b.(*BackupEntryMigrationControllerConfiguration), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*BastionControllerConfiguration)(nil), (*config.BastionControllerConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_BastionControllerConfiguration_To_config_BastionControllerConfiguration(a.(*BastionControllerConfiguration), b.(*config.BastionControllerConfiguration), scope) }); err != nil { @@ -453,16 +443,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*ShootMigrationControllerConfiguration)(nil), (*config.ShootMigrationControllerConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ShootMigrationControllerConfiguration_To_config_ShootMigrationControllerConfiguration(a.(*ShootMigrationControllerConfiguration), b.(*config.ShootMigrationControllerConfiguration), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*config.ShootMigrationControllerConfiguration)(nil), (*ShootMigrationControllerConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_config_ShootMigrationControllerConfiguration_To_v1alpha1_ShootMigrationControllerConfiguration(a.(*config.ShootMigrationControllerConfiguration), b.(*ShootMigrationControllerConfiguration), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*ShootMonitoringConfig)(nil), (*config.ShootMonitoringConfig)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_ShootMonitoringConfig_To_config_ShootMonitoringConfig(a.(*ShootMonitoringConfig), b.(*config.ShootMonitoringConfig), scope) }); err != nil { @@ -596,32 +576,6 @@ func Convert_config_BackupEntryControllerConfiguration_To_v1alpha1_BackupEntryCo return autoConvert_config_BackupEntryControllerConfiguration_To_v1alpha1_BackupEntryControllerConfiguration(in, out, s) } -func autoConvert_v1alpha1_BackupEntryMigrationControllerConfiguration_To_config_BackupEntryMigrationControllerConfiguration(in *BackupEntryMigrationControllerConfiguration, out *config.BackupEntryMigrationControllerConfiguration, s conversion.Scope) error { - out.ConcurrentSyncs = (*int)(unsafe.Pointer(in.ConcurrentSyncs)) - out.SyncPeriod = (*v1.Duration)(unsafe.Pointer(in.SyncPeriod)) - out.GracePeriod = (*v1.Duration)(unsafe.Pointer(in.GracePeriod)) - out.LastOperationStaleDuration = (*v1.Duration)(unsafe.Pointer(in.LastOperationStaleDuration)) - return nil -} - -// Convert_v1alpha1_BackupEntryMigrationControllerConfiguration_To_config_BackupEntryMigrationControllerConfiguration is an autogenerated conversion function. -func Convert_v1alpha1_BackupEntryMigrationControllerConfiguration_To_config_BackupEntryMigrationControllerConfiguration(in *BackupEntryMigrationControllerConfiguration, out *config.BackupEntryMigrationControllerConfiguration, s conversion.Scope) error { - return autoConvert_v1alpha1_BackupEntryMigrationControllerConfiguration_To_config_BackupEntryMigrationControllerConfiguration(in, out, s) -} - -func autoConvert_config_BackupEntryMigrationControllerConfiguration_To_v1alpha1_BackupEntryMigrationControllerConfiguration(in *config.BackupEntryMigrationControllerConfiguration, out *BackupEntryMigrationControllerConfiguration, s conversion.Scope) error { - out.ConcurrentSyncs = (*int)(unsafe.Pointer(in.ConcurrentSyncs)) - out.SyncPeriod = (*v1.Duration)(unsafe.Pointer(in.SyncPeriod)) - out.GracePeriod = (*v1.Duration)(unsafe.Pointer(in.GracePeriod)) - out.LastOperationStaleDuration = (*v1.Duration)(unsafe.Pointer(in.LastOperationStaleDuration)) - return nil -} - -// Convert_config_BackupEntryMigrationControllerConfiguration_To_v1alpha1_BackupEntryMigrationControllerConfiguration is an autogenerated conversion function. -func Convert_config_BackupEntryMigrationControllerConfiguration_To_v1alpha1_BackupEntryMigrationControllerConfiguration(in *config.BackupEntryMigrationControllerConfiguration, out *BackupEntryMigrationControllerConfiguration, s conversion.Scope) error { - return autoConvert_config_BackupEntryMigrationControllerConfiguration_To_v1alpha1_BackupEntryMigrationControllerConfiguration(in, out, s) -} - func autoConvert_v1alpha1_BastionControllerConfiguration_To_config_BastionControllerConfiguration(in *BastionControllerConfiguration, out *config.BastionControllerConfiguration, s conversion.Scope) error { out.ConcurrentSyncs = (*int)(unsafe.Pointer(in.ConcurrentSyncs)) return nil @@ -1097,7 +1051,6 @@ func Convert_config_GardenletConfiguration_To_v1alpha1_GardenletConfiguration(in func autoConvert_v1alpha1_GardenletControllerConfiguration_To_config_GardenletControllerConfiguration(in *GardenletControllerConfiguration, out *config.GardenletControllerConfiguration, s conversion.Scope) error { out.BackupBucket = (*config.BackupBucketControllerConfiguration)(unsafe.Pointer(in.BackupBucket)) out.BackupEntry = (*config.BackupEntryControllerConfiguration)(unsafe.Pointer(in.BackupEntry)) - out.BackupEntryMigration = (*config.BackupEntryMigrationControllerConfiguration)(unsafe.Pointer(in.BackupEntryMigration)) out.Bastion = (*config.BastionControllerConfiguration)(unsafe.Pointer(in.Bastion)) out.ControllerInstallation = (*config.ControllerInstallationControllerConfiguration)(unsafe.Pointer(in.ControllerInstallation)) out.ControllerInstallationCare = (*config.ControllerInstallationCareControllerConfiguration)(unsafe.Pointer(in.ControllerInstallationCare)) @@ -1106,7 +1059,6 @@ func autoConvert_v1alpha1_GardenletControllerConfiguration_To_config_GardenletCo out.SeedCare = (*config.SeedCareControllerConfiguration)(unsafe.Pointer(in.SeedCare)) out.Shoot = (*config.ShootControllerConfiguration)(unsafe.Pointer(in.Shoot)) out.ShootCare = (*config.ShootCareControllerConfiguration)(unsafe.Pointer(in.ShootCare)) - out.ShootMigration = (*config.ShootMigrationControllerConfiguration)(unsafe.Pointer(in.ShootMigration)) out.ShootStateSync = (*config.ShootStateSyncControllerConfiguration)(unsafe.Pointer(in.ShootStateSync)) out.NetworkPolicy = (*config.NetworkPolicyControllerConfiguration)(unsafe.Pointer(in.NetworkPolicy)) out.ManagedSeed = (*config.ManagedSeedControllerConfiguration)(unsafe.Pointer(in.ManagedSeed)) @@ -1122,7 +1074,6 @@ func Convert_v1alpha1_GardenletControllerConfiguration_To_config_GardenletContro func autoConvert_config_GardenletControllerConfiguration_To_v1alpha1_GardenletControllerConfiguration(in *config.GardenletControllerConfiguration, out *GardenletControllerConfiguration, s conversion.Scope) error { out.BackupBucket = (*BackupBucketControllerConfiguration)(unsafe.Pointer(in.BackupBucket)) out.BackupEntry = (*BackupEntryControllerConfiguration)(unsafe.Pointer(in.BackupEntry)) - out.BackupEntryMigration = (*BackupEntryMigrationControllerConfiguration)(unsafe.Pointer(in.BackupEntryMigration)) out.Bastion = (*BastionControllerConfiguration)(unsafe.Pointer(in.Bastion)) out.ControllerInstallation = (*ControllerInstallationControllerConfiguration)(unsafe.Pointer(in.ControllerInstallation)) out.ControllerInstallationCare = (*ControllerInstallationCareControllerConfiguration)(unsafe.Pointer(in.ControllerInstallationCare)) @@ -1131,7 +1082,6 @@ func autoConvert_config_GardenletControllerConfiguration_To_v1alpha1_GardenletCo out.SeedCare = (*SeedCareControllerConfiguration)(unsafe.Pointer(in.SeedCare)) out.Shoot = (*ShootControllerConfiguration)(unsafe.Pointer(in.Shoot)) out.ShootCare = (*ShootCareControllerConfiguration)(unsafe.Pointer(in.ShootCare)) - out.ShootMigration = (*ShootMigrationControllerConfiguration)(unsafe.Pointer(in.ShootMigration)) out.ShootStateSync = (*ShootStateSyncControllerConfiguration)(unsafe.Pointer(in.ShootStateSync)) out.NetworkPolicy = (*NetworkPolicyControllerConfiguration)(unsafe.Pointer(in.NetworkPolicy)) out.ManagedSeed = (*ManagedSeedControllerConfiguration)(unsafe.Pointer(in.ManagedSeed)) @@ -1642,32 +1592,6 @@ func Convert_config_ShootEventLogging_To_v1alpha1_ShootEventLogging(in *config.S return autoConvert_config_ShootEventLogging_To_v1alpha1_ShootEventLogging(in, out, s) } -func autoConvert_v1alpha1_ShootMigrationControllerConfiguration_To_config_ShootMigrationControllerConfiguration(in *ShootMigrationControllerConfiguration, out *config.ShootMigrationControllerConfiguration, s conversion.Scope) error { - out.ConcurrentSyncs = (*int)(unsafe.Pointer(in.ConcurrentSyncs)) - out.SyncPeriod = (*v1.Duration)(unsafe.Pointer(in.SyncPeriod)) - out.GracePeriod = (*v1.Duration)(unsafe.Pointer(in.GracePeriod)) - out.LastOperationStaleDuration = (*v1.Duration)(unsafe.Pointer(in.LastOperationStaleDuration)) - return nil -} - -// Convert_v1alpha1_ShootMigrationControllerConfiguration_To_config_ShootMigrationControllerConfiguration is an autogenerated conversion function. -func Convert_v1alpha1_ShootMigrationControllerConfiguration_To_config_ShootMigrationControllerConfiguration(in *ShootMigrationControllerConfiguration, out *config.ShootMigrationControllerConfiguration, s conversion.Scope) error { - return autoConvert_v1alpha1_ShootMigrationControllerConfiguration_To_config_ShootMigrationControllerConfiguration(in, out, s) -} - -func autoConvert_config_ShootMigrationControllerConfiguration_To_v1alpha1_ShootMigrationControllerConfiguration(in *config.ShootMigrationControllerConfiguration, out *ShootMigrationControllerConfiguration, s conversion.Scope) error { - out.ConcurrentSyncs = (*int)(unsafe.Pointer(in.ConcurrentSyncs)) - out.SyncPeriod = (*v1.Duration)(unsafe.Pointer(in.SyncPeriod)) - out.GracePeriod = (*v1.Duration)(unsafe.Pointer(in.GracePeriod)) - out.LastOperationStaleDuration = (*v1.Duration)(unsafe.Pointer(in.LastOperationStaleDuration)) - return nil -} - -// Convert_config_ShootMigrationControllerConfiguration_To_v1alpha1_ShootMigrationControllerConfiguration is an autogenerated conversion function. -func Convert_config_ShootMigrationControllerConfiguration_To_v1alpha1_ShootMigrationControllerConfiguration(in *config.ShootMigrationControllerConfiguration, out *ShootMigrationControllerConfiguration, s conversion.Scope) error { - return autoConvert_config_ShootMigrationControllerConfiguration_To_v1alpha1_ShootMigrationControllerConfiguration(in, out, s) -} - func autoConvert_v1alpha1_ShootMonitoringConfig_To_config_ShootMonitoringConfig(in *ShootMonitoringConfig, out *config.ShootMonitoringConfig, s conversion.Scope) error { out.Enabled = (*bool)(unsafe.Pointer(in.Enabled)) out.RemoteWrite = (*config.RemoteWriteMonitoringConfig)(unsafe.Pointer(in.RemoteWrite)) diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.deepcopy.go index 483274793..a17e1db5c 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.deepcopy.go @@ -117,42 +117,6 @@ func (in *BackupEntryControllerConfiguration) DeepCopy() *BackupEntryControllerC return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *BackupEntryMigrationControllerConfiguration) DeepCopyInto(out *BackupEntryMigrationControllerConfiguration) { - *out = *in - if in.ConcurrentSyncs != nil { - in, out := &in.ConcurrentSyncs, &out.ConcurrentSyncs - *out = new(int) - **out = **in - } - if in.SyncPeriod != nil { - in, out := &in.SyncPeriod, &out.SyncPeriod - *out = new(v1.Duration) - **out = **in - } - if in.GracePeriod != nil { - in, out := &in.GracePeriod, &out.GracePeriod - *out = new(v1.Duration) - **out = **in - } - if in.LastOperationStaleDuration != nil { - in, out := &in.LastOperationStaleDuration, &out.LastOperationStaleDuration - *out = new(v1.Duration) - **out = **in - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackupEntryMigrationControllerConfiguration. -func (in *BackupEntryMigrationControllerConfiguration) DeepCopy() *BackupEntryMigrationControllerConfiguration { - if in == nil { - return nil - } - out := new(BackupEntryMigrationControllerConfiguration) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *BastionControllerConfiguration) DeepCopyInto(out *BastionControllerConfiguration) { *out = *in @@ -618,11 +582,6 @@ func (in *GardenletControllerConfiguration) DeepCopyInto(out *GardenletControlle *out = new(BackupEntryControllerConfiguration) (*in).DeepCopyInto(*out) } - if in.BackupEntryMigration != nil { - in, out := &in.BackupEntryMigration, &out.BackupEntryMigration - *out = new(BackupEntryMigrationControllerConfiguration) - (*in).DeepCopyInto(*out) - } if in.Bastion != nil { in, out := &in.Bastion, &out.Bastion *out = new(BastionControllerConfiguration) @@ -663,11 +622,6 @@ func (in *GardenletControllerConfiguration) DeepCopyInto(out *GardenletControlle *out = new(ShootCareControllerConfiguration) (*in).DeepCopyInto(*out) } - if in.ShootMigration != nil { - in, out := &in.ShootMigration, &out.ShootMigration - *out = new(ShootMigrationControllerConfiguration) - (*in).DeepCopyInto(*out) - } if in.ShootStateSync != nil { in, out := &in.ShootStateSync, &out.ShootStateSync *out = new(ShootStateSyncControllerConfiguration) @@ -1288,42 +1242,6 @@ func (in *ShootEventLogging) DeepCopy() *ShootEventLogging { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ShootMigrationControllerConfiguration) DeepCopyInto(out *ShootMigrationControllerConfiguration) { - *out = *in - if in.ConcurrentSyncs != nil { - in, out := &in.ConcurrentSyncs, &out.ConcurrentSyncs - *out = new(int) - **out = **in - } - if in.SyncPeriod != nil { - in, out := &in.SyncPeriod, &out.SyncPeriod - *out = new(v1.Duration) - **out = **in - } - if in.GracePeriod != nil { - in, out := &in.GracePeriod, &out.GracePeriod - *out = new(v1.Duration) - **out = **in - } - if in.LastOperationStaleDuration != nil { - in, out := &in.LastOperationStaleDuration, &out.LastOperationStaleDuration - *out = new(v1.Duration) - **out = **in - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootMigrationControllerConfiguration. -func (in *ShootMigrationControllerConfiguration) DeepCopy() *ShootMigrationControllerConfiguration { - if in == nil { - return nil - } - out := new(ShootMigrationControllerConfiguration) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootMonitoringConfig) DeepCopyInto(out *ShootMonitoringConfig) { *out = *in diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.defaults.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.defaults.go index 1c1399df6..21b1a3632 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.defaults.go @@ -56,9 +56,6 @@ func SetObjectDefaults_GardenletConfiguration(in *GardenletConfiguration) { if in.Controllers.BackupEntry != nil { SetDefaults_BackupEntryControllerConfiguration(in.Controllers.BackupEntry) } - if in.Controllers.BackupEntryMigration != nil { - SetDefaults_BackupEntryMigrationControllerConfiguration(in.Controllers.BackupEntryMigration) - } if in.Controllers.Bastion != nil { SetDefaults_BastionControllerConfiguration(in.Controllers.Bastion) } @@ -86,9 +83,6 @@ func SetObjectDefaults_GardenletConfiguration(in *GardenletConfiguration) { SetDefaults_StaleExtensionHealthChecks(in.Controllers.ShootCare.StaleExtensionHealthChecks) } } - if in.Controllers.ShootMigration != nil { - SetDefaults_ShootMigrationControllerConfiguration(in.Controllers.ShootMigration) - } if in.Controllers.ShootStateSync != nil { SetDefaults_ShootStateSyncControllerConfiguration(in.Controllers.ShootStateSync) } diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/zz_generated.deepcopy.go index 69224daf2..0e7087b58 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/zz_generated.deepcopy.go @@ -117,42 +117,6 @@ func (in *BackupEntryControllerConfiguration) DeepCopy() *BackupEntryControllerC return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *BackupEntryMigrationControllerConfiguration) DeepCopyInto(out *BackupEntryMigrationControllerConfiguration) { - *out = *in - if in.ConcurrentSyncs != nil { - in, out := &in.ConcurrentSyncs, &out.ConcurrentSyncs - *out = new(int) - **out = **in - } - if in.SyncPeriod != nil { - in, out := &in.SyncPeriod, &out.SyncPeriod - *out = new(v1.Duration) - **out = **in - } - if in.GracePeriod != nil { - in, out := &in.GracePeriod, &out.GracePeriod - *out = new(v1.Duration) - **out = **in - } - if in.LastOperationStaleDuration != nil { - in, out := &in.LastOperationStaleDuration, &out.LastOperationStaleDuration - *out = new(v1.Duration) - **out = **in - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackupEntryMigrationControllerConfiguration. -func (in *BackupEntryMigrationControllerConfiguration) DeepCopy() *BackupEntryMigrationControllerConfiguration { - if in == nil { - return nil - } - out := new(BackupEntryMigrationControllerConfiguration) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *BastionControllerConfiguration) DeepCopyInto(out *BastionControllerConfiguration) { *out = *in @@ -618,11 +582,6 @@ func (in *GardenletControllerConfiguration) DeepCopyInto(out *GardenletControlle *out = new(BackupEntryControllerConfiguration) (*in).DeepCopyInto(*out) } - if in.BackupEntryMigration != nil { - in, out := &in.BackupEntryMigration, &out.BackupEntryMigration - *out = new(BackupEntryMigrationControllerConfiguration) - (*in).DeepCopyInto(*out) - } if in.Bastion != nil { in, out := &in.Bastion, &out.Bastion *out = new(BastionControllerConfiguration) @@ -663,11 +622,6 @@ func (in *GardenletControllerConfiguration) DeepCopyInto(out *GardenletControlle *out = new(ShootCareControllerConfiguration) (*in).DeepCopyInto(*out) } - if in.ShootMigration != nil { - in, out := &in.ShootMigration, &out.ShootMigration - *out = new(ShootMigrationControllerConfiguration) - (*in).DeepCopyInto(*out) - } if in.ShootStateSync != nil { in, out := &in.ShootStateSync, &out.ShootStateSync *out = new(ShootStateSyncControllerConfiguration) @@ -1288,42 +1242,6 @@ func (in *ShootEventLogging) DeepCopy() *ShootEventLogging { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ShootMigrationControllerConfiguration) DeepCopyInto(out *ShootMigrationControllerConfiguration) { - *out = *in - if in.ConcurrentSyncs != nil { - in, out := &in.ConcurrentSyncs, &out.ConcurrentSyncs - *out = new(int) - **out = **in - } - if in.SyncPeriod != nil { - in, out := &in.SyncPeriod, &out.SyncPeriod - *out = new(v1.Duration) - **out = **in - } - if in.GracePeriod != nil { - in, out := &in.GracePeriod, &out.GracePeriod - *out = new(v1.Duration) - **out = **in - } - if in.LastOperationStaleDuration != nil { - in, out := &in.LastOperationStaleDuration, &out.LastOperationStaleDuration - *out = new(v1.Duration) - **out = **in - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootMigrationControllerConfiguration. -func (in *ShootMigrationControllerConfiguration) DeepCopy() *ShootMigrationControllerConfiguration { - if in == nil { - return nil - } - out := new(ShootMigrationControllerConfiguration) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootMonitoringConfig) DeepCopyInto(out *ShootMonitoringConfig) { *out = *in diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/garden.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/garden.go new file mode 100644 index 000000000..4faea822b --- /dev/null +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/garden.go @@ -0,0 +1,234 @@ +// Copyright (c) 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 +// +// 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 gardener + +import ( + "context" + "fmt" + "strings" + + "github.com/go-logr/logr" + corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/selection" + "sigs.k8s.io/controller-runtime/pkg/client" + + v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" + "github.com/gardener/gardener/pkg/utils" +) + +// Domain contains information about a domain configured in the garden cluster. +type Domain struct { + Domain string + Provider string + Zone string + SecretData map[string][]byte + IncludeDomains []string + ExcludeDomains []string + IncludeZones []string + ExcludeZones []string +} + +// GetDefaultDomains finds all the default domain secrets within the given map and returns a list of +// objects that contains all relevant information about the default domains. +func GetDefaultDomains(secrets map[string]*corev1.Secret) ([]*Domain, error) { + var defaultDomains []*Domain + + for key, secret := range secrets { + if strings.HasPrefix(key, v1beta1constants.GardenRoleDefaultDomain) { + domain, err := constructDomainFromSecret(secret) + if err != nil { + return nil, fmt.Errorf("error getting information out of default domain secret: %+v", err) + } + defaultDomains = append(defaultDomains, domain) + } + } + + return defaultDomains, nil +} + +// GetInternalDomain finds the internal domain secret within the given map and returns the object +// that contains all relevant information about the internal domain. +func GetInternalDomain(secrets map[string]*corev1.Secret) (*Domain, error) { + internalDomainSecret, ok := secrets[v1beta1constants.GardenRoleInternalDomain] + if !ok { + return nil, nil + } + + return constructDomainFromSecret(internalDomainSecret) +} + +func constructDomainFromSecret(secret *corev1.Secret) (*Domain, error) { + provider, domain, zone, includeZones, excludeZones, err := GetDomainInfoFromAnnotations(secret.Annotations) + if err != nil { + return nil, err + } + + return &Domain{ + Domain: domain, + Provider: provider, + Zone: zone, + SecretData: secret.Data, + IncludeZones: includeZones, + ExcludeZones: excludeZones, + }, nil +} + +// DomainIsDefaultDomain identifies whether the given domain is a default domain. +func DomainIsDefaultDomain(domain string, defaultDomains []*Domain) *Domain { + for _, defaultDomain := range defaultDomains { + if strings.HasSuffix(domain, "."+defaultDomain.Domain) { + return defaultDomain + } + } + return nil +} + +var gardenRoleReq = utils.MustNewRequirement(v1beta1constants.GardenRole, selection.Exists) + +// ReadGardenSecrets reads the Kubernetes Secrets from the Garden cluster which are independent of Shoot clusters. +// The Secret objects are stored on the Controller in order to pass them to created Garden objects later. +func ReadGardenSecrets( + ctx context.Context, + log logr.Logger, + c client.Reader, + namespace string, + enforceInternalDomainSecret bool, +) ( + map[string]*corev1.Secret, + error, +) { + var ( + logInfo []string + secretsMap = make(map[string]*corev1.Secret) + numberOfInternalDomainSecrets = 0 + numberOfOpenVPNDiffieHellmanSecrets = 0 + numberOfAlertingSecrets = 0 + numberOfGlobalMonitoringSecrets = 0 + ) + + secretList := &corev1.SecretList{} + if err := c.List(ctx, secretList, client.InNamespace(namespace), client.MatchingLabelsSelector{Selector: labels.NewSelector().Add(gardenRoleReq)}); err != nil { + return nil, err + } + + for _, secret := range secretList.Items { + // Retrieving default domain secrets based on all secrets in the Garden namespace which have + // a label indicating the Garden role default-domain. + if secret.Labels[v1beta1constants.GardenRole] == v1beta1constants.GardenRoleDefaultDomain { + _, domain, _, _, _, err := GetDomainInfoFromAnnotations(secret.Annotations) + if err != nil { + log.Error(err, "Error getting information out of default domain secret", "secret", client.ObjectKeyFromObject(&secret)) + continue + } + + defaultDomainSecret := secret + secretsMap[fmt.Sprintf("%s-%s", v1beta1constants.GardenRoleDefaultDomain, domain)] = &defaultDomainSecret + logInfo = append(logInfo, fmt.Sprintf("default domain secret %q for domain %q", secret.Name, domain)) + } + + // Retrieving internal domain secrets based on all secrets in the Garden namespace which have + // a label indicating the Garden role internal-domain. + if secret.Labels[v1beta1constants.GardenRole] == v1beta1constants.GardenRoleInternalDomain { + _, domain, _, _, _, err := GetDomainInfoFromAnnotations(secret.Annotations) + if err != nil { + log.Error(err, "Error getting information out of internal domain secret", "secret", client.ObjectKeyFromObject(&secret)) + continue + } + + internalDomainSecret := secret + secretsMap[v1beta1constants.GardenRoleInternalDomain] = &internalDomainSecret + logInfo = append(logInfo, fmt.Sprintf("internal domain secret %q for domain %q", secret.Name, domain)) + numberOfInternalDomainSecrets++ + } + + // Retrieving Diffie-Hellman secret for OpenVPN based on all secrets in the Garden namespace which have + // a label indicating the Garden role openvpn-diffie-hellman. + if secret.Labels[v1beta1constants.GardenRole] == v1beta1constants.GardenRoleOpenVPNDiffieHellman { + openvpnDiffieHellman := secret + key := "dh2048.pem" + if _, ok := secret.Data[key]; !ok { + return nil, fmt.Errorf("cannot use OpenVPN Diffie Hellman secret '%s' as it does not contain key '%s' (whose value should be the actual Diffie Hellman key)", secret.Name, key) + } + secretsMap[v1beta1constants.GardenRoleOpenVPNDiffieHellman] = &openvpnDiffieHellman + logInfo = append(logInfo, fmt.Sprintf("OpenVPN Diffie Hellman secret %q", secret.Name)) + numberOfOpenVPNDiffieHellmanSecrets++ + } + + // Retrieve the alerting secret to configure alerting. Either in cluster email alerting or + // external alertmanager configuration. + if secret.Labels[v1beta1constants.GardenRole] == v1beta1constants.GardenRoleAlerting { + authType := string(secret.Data["auth_type"]) + if authType != "smtp" && authType != "none" && authType != "basic" && authType != "certificate" { + return nil, fmt.Errorf("invalid or missing field 'auth_type' in secret %s", secret.Name) + } + alertingSecret := secret + secretsMap[v1beta1constants.GardenRoleAlerting] = &alertingSecret + logInfo = append(logInfo, fmt.Sprintf("alerting secret %q", secret.Name)) + numberOfAlertingSecrets++ + } + + // Retrieving basic auth secret for aggregate monitoring with a label + // indicating the Garden role global-monitoring. + if secret.Labels[v1beta1constants.GardenRole] == v1beta1constants.GardenRoleGlobalMonitoring { + monitoringSecret := secret + secretsMap[v1beta1constants.GardenRoleGlobalMonitoring] = &monitoringSecret + logInfo = append(logInfo, fmt.Sprintf("monitoring basic auth secret %q", secret.Name)) + numberOfGlobalMonitoringSecrets++ + } + + // Retrieving basic auth secret for remote write monitoring with a label + // indicating the Garden role global-shoot-remote-write-monitoring. + if secret.Labels[v1beta1constants.GardenRole] == v1beta1constants.GardenRoleGlobalShootRemoteWriteMonitoring { + monitoringSecret := secret + secretsMap[v1beta1constants.GardenRoleGlobalShootRemoteWriteMonitoring] = &monitoringSecret + logInfo = append(logInfo, fmt.Sprintf("monitoring basic auth secret %q", secret.Name)) + } + } + + // For each Shoot we create a LoadBalancer(LB) pointing to the API server of the Shoot. Because the technical address + // of the LB (ip or hostname) can change we cannot directly write it into the kubeconfig of the components + // which talk from outside (kube-proxy, kubelet etc.) (otherwise those kubeconfigs would be broken once ip/hostname + // of LB changed; and we don't have means to exchange kubeconfigs currently). + // Therefore, to have a stable endpoint, we create a DNS record pointing to the ip/hostname of the LB. This DNS record + // is used in all kubeconfigs. With that we have a robust endpoint stable against underlying ip/hostname changes. + // And there can only be one of this internal domain secret because otherwise the gardener would not know which + // domain it should use. + if enforceInternalDomainSecret && numberOfInternalDomainSecrets == 0 { + return nil, fmt.Errorf("need an internal domain secret but found none") + } + + // The VPN bridge from a Shoot's control plane running in the Seed cluster to the worker nodes of the Shoots is based + // on OpenVPN. It requires a Diffie Hellman key. If no such key is explicitly provided as secret in the garden namespace + // then the Gardener will use a default one (not recommended, but useful for local development). If a secret is specified + // its key will be used for all Shoots. However, at most only one of such a secret is allowed to be specified (otherwise, + // the Gardener cannot determine which to choose). + if numberOfOpenVPNDiffieHellmanSecrets > 1 { + return nil, fmt.Errorf("can only accept at most one OpenVPN Diffie Hellman secret, but found %d", numberOfOpenVPNDiffieHellmanSecrets) + } + + // Operators can configure gardener to send email alerts or send the alerts to an external alertmanager. If no configuration + // is provided then no alerts will be sent. + if numberOfAlertingSecrets > 1 { + return nil, fmt.Errorf("can only accept at most one alerting secret, but found %d", numberOfAlertingSecrets) + } + + if numberOfGlobalMonitoringSecrets > 1 { + return nil, fmt.Errorf("can only accept at most one global monitoring secret, but found %d", numberOfGlobalMonitoringSecrets) + } + + log.Info("Found secrets", "namespace", namespace, "secrets", logInfo) + return secretsMap, nil +} 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 ab43fcf2b..109356e6f 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot.go @@ -37,6 +37,7 @@ import ( "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/client" + "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" v1beta1helper "github.com/gardener/gardener/pkg/apis/core/v1beta1/helper" @@ -514,3 +515,174 @@ func ExtractSystemComponentsTolerations(workers []gardencorev1beta1.Worker) []co return tolerations.UnsortedList() } + +// IncompleteDNSConfigError is a custom error type. +type IncompleteDNSConfigError struct{} + +// Error prints the error message of the IncompleteDNSConfigError error. +func (e *IncompleteDNSConfigError) Error() string { + return "unable to figure out which secret should be used for dns" +} + +// IsIncompleteDNSConfigError returns true if the error indicates that not the DNS config is incomplete. +func IsIncompleteDNSConfigError(err error) bool { + _, ok := err.(*IncompleteDNSConfigError) + return ok +} + +// ConstructInternalClusterDomain constructs the internal base domain for this shoot cluster. +// It is only used for internal purposes (all kubeconfigs except the one which is received by the +// user will only talk with the kube-apiserver via a DNS record of domain). In case the given +// already contains "internal", the result is constructed as "..." +// In case it does not, the word "internal" will be appended, resulting in +// "..internal.". +func ConstructInternalClusterDomain(shootName, shootProject string, internalDomain *Domain) string { + if internalDomain == nil { + return "" + } + if strings.Contains(internalDomain.Domain, InternalDomainKey) { + return fmt.Sprintf("%s.%s.%s", shootName, shootProject, internalDomain.Domain) + } + return fmt.Sprintf("%s.%s.%s.%s", shootName, shootProject, InternalDomainKey, internalDomain.Domain) +} + +// ConstructExternalClusterDomain constructs the external Shoot cluster domain, i.e. the domain which will be put +// into the Kubeconfig handed out to the user. +func ConstructExternalClusterDomain(shoot *gardencorev1beta1.Shoot) *string { + if shoot.Spec.DNS == nil || shoot.Spec.DNS.Domain == nil { + return nil + } + return shoot.Spec.DNS.Domain +} + +// ConstructExternalDomain constructs an object containing all relevant information of the external domain that +// shall be used for a shoot cluster - based on the configuration of the Garden cluster and the shoot itself. +func ConstructExternalDomain(ctx context.Context, c client.Reader, shoot *gardencorev1beta1.Shoot, shootSecret *corev1.Secret, defaultDomains []*Domain) (*Domain, error) { + externalClusterDomain := ConstructExternalClusterDomain(shoot) + if externalClusterDomain == nil { + return nil, nil + } + + var ( + externalDomain = &Domain{Domain: *shoot.Spec.DNS.Domain} + defaultDomain = DomainIsDefaultDomain(*externalClusterDomain, defaultDomains) + primaryProvider = v1beta1helper.FindPrimaryDNSProvider(shoot.Spec.DNS.Providers) + ) + + switch { + case defaultDomain != nil: + externalDomain.SecretData = defaultDomain.SecretData + externalDomain.Provider = defaultDomain.Provider + externalDomain.Zone = defaultDomain.Zone + externalDomain.IncludeDomains = defaultDomain.IncludeDomains + externalDomain.ExcludeDomains = defaultDomain.ExcludeDomains + externalDomain.IncludeZones = defaultDomain.IncludeZones + externalDomain.ExcludeZones = defaultDomain.ExcludeZones + + case primaryProvider != nil: + if primaryProvider.SecretName != nil { + secret := &corev1.Secret{} + if err := c.Get(ctx, kubernetesutils.Key(shoot.Namespace, *primaryProvider.SecretName), secret); err != nil { + return nil, fmt.Errorf("could not get dns provider secret %q: %+v", *shoot.Spec.DNS.Providers[0].SecretName, err) + } + externalDomain.SecretData = secret.Data + } else { + externalDomain.SecretData = shootSecret.Data + } + if primaryProvider.Type != nil { + externalDomain.Provider = *primaryProvider.Type + } + if domains := primaryProvider.Domains; domains != nil { + externalDomain.IncludeDomains = domains.Include + externalDomain.ExcludeDomains = domains.Exclude + } + if zones := primaryProvider.Zones; zones != nil { + externalDomain.IncludeZones = zones.Include + externalDomain.ExcludeZones = zones.Exclude + if len(zones.Include) == 1 { + externalDomain.Zone = zones.Include[0] + } + } + + default: + return nil, &IncompleteDNSConfigError{} + } + + return externalDomain, nil +} + +// ComputeRequiredExtensions compute the extension kind/type combinations that are required for the +// reconciliation flow. +func ComputeRequiredExtensions(shoot *gardencorev1beta1.Shoot, seed *gardencorev1beta1.Seed, controllerRegistrationList *gardencorev1beta1.ControllerRegistrationList, internalDomain, externalDomain *Domain) utilsets.Set[string] { + requiredExtensions := utilsets.New[string]() + + if seed.Spec.Backup != nil { + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.BackupBucketResource, seed.Spec.Backup.Provider)) + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.BackupEntryResource, seed.Spec.Backup.Provider)) + } + // Hint: This is actually a temporary work-around to request the control plane extension of the seed provider type as + // it might come with webhooks that are configuring the exposure of shoot control planes. The ControllerRegistration resource + // does not reflect this today. + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.ControlPlaneResource, seed.Spec.Provider.Type)) + + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.ControlPlaneResource, shoot.Spec.Provider.Type)) + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.InfrastructureResource, shoot.Spec.Provider.Type)) + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.NetworkResource, shoot.Spec.Networking.Type)) + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.WorkerResource, shoot.Spec.Provider.Type)) + + disabledExtensions := utilsets.New[string]() + for _, extension := range shoot.Spec.Extensions { + id := ExtensionsID(extensionsv1alpha1.ExtensionResource, extension.Type) + + if pointer.BoolDeref(extension.Disabled, false) { + disabledExtensions.Insert(id) + } else { + requiredExtensions.Insert(id) + } + } + + for _, pool := range shoot.Spec.Provider.Workers { + if pool.Machine.Image != nil { + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.OperatingSystemConfigResource, pool.Machine.Image.Name)) + } + if pool.CRI != nil { + for _, cr := range pool.CRI.ContainerRuntimes { + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.ContainerRuntimeResource, cr.Type)) + } + } + } + + if shoot.Spec.DNS != nil { + for _, provider := range shoot.Spec.DNS.Providers { + if provider.Type != nil && *provider.Type != core.DNSUnmanaged { + if provider.Primary != nil && *provider.Primary { + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.DNSRecordResource, *provider.Type)) + } + } + } + } + + if internalDomain != nil && internalDomain.Provider != core.DNSUnmanaged { + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.DNSRecordResource, internalDomain.Provider)) + } + + if externalDomain != nil && externalDomain.Provider != core.DNSUnmanaged { + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.DNSRecordResource, externalDomain.Provider)) + } + + for _, controllerRegistration := range controllerRegistrationList.Items { + for _, resource := range controllerRegistration.Spec.Resources { + id := ExtensionsID(extensionsv1alpha1.ExtensionResource, resource.Type) + if resource.Kind == extensionsv1alpha1.ExtensionResource && resource.GloballyEnabled != nil && *resource.GloballyEnabled && !disabledExtensions.Has(id) { + requiredExtensions.Insert(id) + } + } + } + + return requiredExtensions +} + +// ExtensionsID returns an identifier for the given extension kind/type. +func ExtensionsID(extensionKind, extensionType string) string { + return fmt.Sprintf("%s/%s", extensionKind, extensionType) +} diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot_status.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot_status.go new file mode 100644 index 000000000..62c17a565 --- /dev/null +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot_status.go @@ -0,0 +1,120 @@ +// Copyright (c) 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 gardener + +import ( + "fmt" + + gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" +) + +// ShootStatus is the status of a shoot used in the common.ShootStatus label. +type ShootStatus string + +const ( + // ShootStatusHealthy indicates that a shoot is considered healthy. + ShootStatusHealthy ShootStatus = "healthy" + // ShootStatusProgressing indicates that a shoot was once healthy, currently experienced an issue + // but is still within a predefined grace period. + ShootStatusProgressing ShootStatus = "progressing" + // ShootStatusUnhealthy indicates that a shoot is considered unhealthy. + ShootStatusUnhealthy ShootStatus = "unhealthy" + // ShootStatusUnknown indicates that the shoot health status is not known. + ShootStatusUnknown ShootStatus = "unknown" +) + +var ( + shootStatusValues = map[ShootStatus]int{ + ShootStatusHealthy: 3, + ShootStatusProgressing: 2, + ShootStatusUnknown: 1, + ShootStatusUnhealthy: 0, + } +) + +// ShootStatusValue returns the value of the given ShootStatus. +func ShootStatusValue(s ShootStatus) int { + value, ok := shootStatusValues[s] + if !ok { + panic(fmt.Sprintf("invalid shoot status %q", s)) + } + + return value +} + +// OrWorse returns the worse ShootStatus of the given two states. +func (s ShootStatus) OrWorse(other ShootStatus) ShootStatus { + if ShootStatusValue(other) < ShootStatusValue(s) { + return other + } + return s +} + +// ConditionStatusToShootStatus converts the given ConditionStatus to a shoot label ShootStatus. +func ConditionStatusToShootStatus(status gardencorev1beta1.ConditionStatus) ShootStatus { + switch status { + case gardencorev1beta1.ConditionTrue: + return ShootStatusHealthy + case gardencorev1beta1.ConditionProgressing: + return ShootStatusProgressing + case gardencorev1beta1.ConditionUnknown: + return ShootStatusUnknown + } + return ShootStatusUnhealthy +} + +// ComputeConditionStatus computes the ShootStatus from the given Conditions. By default, the ShootStatus is +// ShootStatusHealthy. The condition status is converted to a ShootStatus by using ConditionStatusToShootStatus. Always +// the worst status of the combined states wins. +func ComputeConditionStatus(conditions ...gardencorev1beta1.Condition) ShootStatus { + status := ShootStatusHealthy + for _, condition := range conditions { + status = status.OrWorse(ConditionStatusToShootStatus(condition.Status)) + } + return status +} + +// BoolToShootStatus converts the given boolean to a ShootStatus. For true values, it returns ShootStatusHealthy. +// Otherwise, it returns ShootStatusUnhealthy. +func BoolToShootStatus(cond bool) ShootStatus { + if cond { + return ShootStatusHealthy + } + return ShootStatusUnhealthy +} + +// ComputeShootStatus computes the ShootStatus of a shoot depending on the given lastOperation, lastError and conditions. +func ComputeShootStatus(lastOperation *gardencorev1beta1.LastOperation, lastErrors []gardencorev1beta1.LastError, conditions ...gardencorev1beta1.Condition) ShootStatus { + // Shoot has been created and not yet reconciled. + if lastOperation == nil { + return ShootStatusHealthy + } + + // If the Shoot is either in create (except successful create) or delete state then the last error indicates the healthiness. + if (lastOperation.Type == gardencorev1beta1.LastOperationTypeCreate && lastOperation.State != gardencorev1beta1.LastOperationStateSucceeded) || + lastOperation.Type == gardencorev1beta1.LastOperationTypeDelete { + return BoolToShootStatus(len(lastErrors) == 0) + } + + status := ComputeConditionStatus(conditions...) + + // If an operation is currently processing then the last error state is reported. + if lastOperation.State == gardencorev1beta1.LastOperationStateProcessing { + return status.OrWorse(BoolToShootStatus(len(lastErrors) == 0)) + } + + // If the last operation has succeeded then the shoot is healthy. + return status.OrWorse(BoolToShootStatus(lastOperation.State == gardencorev1beta1.LastOperationStateSucceeded)) +} diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/topology_aware_routing.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/topology_aware_routing.go new file mode 100644 index 000000000..6b3844853 --- /dev/null +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/topology_aware_routing.go @@ -0,0 +1,33 @@ +// Copyright (c) 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 gardener + +import ( + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + resourcesv1alpha1 "github.com/gardener/gardener/pkg/apis/resources/v1alpha1" +) + +// ReconcileTopologyAwareRoutingMetadata adds (or removes) the required annotation and label to make a Service topology-aware. +func ReconcileTopologyAwareRoutingMetadata(service *corev1.Service, topologyAwareRoutingEnabled bool) { + if topologyAwareRoutingEnabled { + metav1.SetMetaDataAnnotation(&service.ObjectMeta, corev1.AnnotationTopologyAwareHints, "auto") + metav1.SetMetaDataLabel(&service.ObjectMeta, resourcesv1alpha1.EndpointSliceHintsConsider, "true") + } else { + delete(service.Annotations, corev1.AnnotationTopologyAwareHints) + delete(service.Labels, resourcesv1alpha1.EndpointSliceHintsConsider) + } +} diff --git a/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md b/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md index d777b793b..a77e95e25 100644 --- a/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md +++ b/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md @@ -1,3 +1,110 @@ +## 2.8.3 + +Released to fix security issue in golang.org/x/net dependency + +### Maintenance + +- Bump golang.org/x/net from 0.6.0 to 0.7.0 (#1141) [fc1a02e] +- remove tools.go hack from documentation [0718693] + +## 2.8.2 + +Ginkgo now includes a `tools.go` file in the root directory of the `ginkgo` package. This should allow modules that simply `go get github.com/onsi/ginkgo/v2` to also pull in the CLI dependencies. This obviates the need for consumers of Ginkgo to have their own `tools.go` file and makes it simpler to ensure that the version of the `ginkgo` CLI being used matches the version of the library. You can simply run `go run github.com/onsi/ginkgo/v2/ginkgo` to run the version of the cli associated with your package go.mod. + +### Maintenance + +- Bump github.com/onsi/gomega from 1.26.0 to 1.27.0 (#1139) [5767b0a] +- Fix minor typos (#1138) [e1e9723] +- Fix link in V2 Migration Guide (#1137) [a588f60] + +## 2.8.1 + +### Fixes +- lock around default report output to avoid triggering the race detector when calling By from goroutines [2d5075a] +- don't run ReportEntries through sprintf [febbe38] + +### Maintenance +- Bump golang.org/x/tools from 0.5.0 to 0.6.0 (#1135) [11a4860] +- test: update matrix for Go 1.20 (#1130) [4890a62] +- Bump golang.org/x/sys from 0.4.0 to 0.5.0 (#1133) [a774638] +- Bump github.com/onsi/gomega from 1.25.0 to 1.26.0 (#1120) [3f233bd] +- Bump github-pages from 227 to 228 in /docs (#1131) [f9b8649] +- Bump activesupport from 6.0.6 to 6.0.6.1 in /docs (#1127) [6f8c042] +- Update index.md with instructions on how to upgrade Ginkgo [833a75e] + +## 2.8.0 + +### Features + +- Introduce GinkgoHelper() to track and exclude helper functions from potential CodeLocations [e19f556] + +Modeled after `testing.T.Helper()`. Now, rather than write code like: + +```go +func helper(model Model) { + Expect(model).WithOffset(1).To(BeValid()) + Expect(model.SerialNumber).WithOffset(1).To(MatchRegexp(/[a-f0-9]*/)) +} +``` + +you can stop tracking offsets (which makes nesting composing helpers nearly impossible) and simply write: + +```go +func helper(model Model) { + GinkgoHelper() + Expect(model).To(BeValid()) + Expect(model.SerialNumber).To(MatchRegexp(/[a-f0-9]*/)) +} +``` + +- Introduce GinkgoLabelFilter() and Label().MatchesLabelFilter() to make it possible to programmatically match filters (fixes #1119) [2f6597c] + +You can now write code like this: + +```go +BeforeSuite(func() { + if Label("slow").MatchesLabelFilter(GinkgoLabelFilter()) { + // do slow setup + } + + if Label("fast").MatchesLabelFilter(GinkgoLabelFilter()) { + // do fast setup + } +}) +``` + +to programmatically check whether a given set of labels will match the configured `--label-filter`. + +### Maintenance + +- Bump webrick from 1.7.0 to 1.8.1 in /docs (#1125) [ea4966e] +- cdeql: add ruby language (#1124) [9dd275b] +- dependabot: add bundler package-ecosystem for docs (#1123) [14e7bdd] + +## 2.7.1 + +### Fixes +- Bring back SuiteConfig.EmitSpecProgress to avoid compilation issue for consumers that set it manually [d2a1cb0] + +### Maintenance +- Bump github.com/onsi/gomega from 1.24.2 to 1.25.0 (#1118) [cafece6] +- Bump golang.org/x/tools from 0.4.0 to 0.5.0 (#1111) [eda66c2] +- Bump golang.org/x/sys from 0.3.0 to 0.4.0 (#1112) [ac5ccaa] +- Bump github.com/onsi/gomega from 1.24.1 to 1.24.2 (#1097) [eee6480] + +## 2.7.0 + +### Features +- Introduce ContinueOnFailure for Ordered containers [e0123ca] - Ordered containers that are also decorated with ContinueOnFailure will not stop running specs after the first spec fails. +- Support for bootstrap commands to use custom data for templates (#1110) [7a2b242] +- Support for labels and pending decorator in ginkgo outline output (#1113) [e6e3b98] +- Color aliases for custom color support (#1101) [49fab7a] + +### Fixes +- correctly ensure deterministic spec order, even if specs are generated by iterating over a map [89dda20] +- Fix a bug where timedout specs were not correctly treated as failures when determining whether or not to run AfterAlls in an Ordered container. +- Ensure go test coverprofile outputs to the expected location (#1105) [b0bd77b] + ## 2.6.1 ### Features @@ -76,7 +183,7 @@ to build tooling on top of as it has stronger guarantees to be stable from versi ### Fixes - correcting some typos (#1064) [1403d3c] -- fix flaky internal_integration interupt specs [2105ba3] +- fix flaky internal_integration interrupt specs [2105ba3] - Correct busted link in README [be6b5b9] ### Maintenance diff --git a/vendor/github.com/onsi/ginkgo/v2/core_dsl.go b/vendor/github.com/onsi/ginkgo/v2/core_dsl.go index 4a14e50a8..0b13b0d22 100644 --- a/vendor/github.com/onsi/ginkgo/v2/core_dsl.go +++ b/vendor/github.com/onsi/ginkgo/v2/core_dsl.go @@ -92,11 +92,11 @@ type GinkgoWriterInterface interface { } /* -SpecContext is the context object passed into nodes that are subject to a timeout or need to be notified of an interrupt. It implements the standard context.Context interface but also contains additional helpers to provide an extensibility point for Ginkgo. (As an example, Gomega's Eventually can use the methods defined on SpecContext to provide deeper integratoin with Ginkgo). +SpecContext is the context object passed into nodes that are subject to a timeout or need to be notified of an interrupt. It implements the standard context.Context interface but also contains additional helpers to provide an extensibility point for Ginkgo. (As an example, Gomega's Eventually can use the methods defined on SpecContext to provide deeper integration with Ginkgo). You can do anything with SpecContext that you do with a typical context.Context including wrapping it with any of the context.With* methods. -Ginkgo will cancel the SpecContext when a node is interrupted (e.g. by the user sending an interupt signal) or when a node has exceeded it's allowed run-time. Note, however, that even in cases where a node has a deadline, SpecContext will not return a deadline via .Deadline(). This is because Ginkgo does not use a WithDeadline() context to model node deadlines as Ginkgo needs control over the precise timing of the context cancellation to ensure it can provide an accurate progress report at the moment of cancellation. +Ginkgo will cancel the SpecContext when a node is interrupted (e.g. by the user sending an interrupt signal) or when a node has exceeded its allowed run-time. Note, however, that even in cases where a node has a deadline, SpecContext will not return a deadline via .Deadline(). This is because Ginkgo does not use a WithDeadline() context to model node deadlines as Ginkgo needs control over the precise timing of the context cancellation to ensure it can provide an accurate progress report at the moment of cancellation. */ type SpecContext = internal.SpecContext @@ -163,6 +163,29 @@ func GinkgoParallelProcess() int { return suiteConfig.ParallelProcess } +/* +GinkgoHelper marks the function it's called in as a test helper. When a failure occurs inside a helper function, Ginkgo will skip the helper when analyzing the stack trace to identify where the failure occurred. + +This is an alternative, simpler, mechanism to passing in a skip offset when calling Fail or using Gomega. +*/ +func GinkgoHelper() { + types.MarkAsHelper(1) +} + +/* +GinkgoLabelFilter() returns the label filter configured for this suite via `--label-filter`. + +You can use this to manually check if a set of labels would satisfy the filter via: + + if (Label("cat", "dog").MatchesLabelFilter(GinkgoLabelFilter())) { + //... + } +*/ +func GinkgoLabelFilter() string { + suiteConfig, _ := GinkgoConfiguration() + return suiteConfig.LabelFilter +} + /* PauseOutputInterception() pauses Ginkgo's output interception. This is only relevant when running in parallel and output to stdout/stderr is being intercepted. You generally @@ -720,7 +743,7 @@ For example: os.SetEnv("FOO", "BAR") }) -will register a cleanup handler that will set the environment variable "FOO" to it's current value (obtained by os.GetEnv("FOO")) after the spec runs and then sets the environment variable "FOO" to "BAR" for the current spec. +will register a cleanup handler that will set the environment variable "FOO" to its current value (obtained by os.GetEnv("FOO")) after the spec runs and then sets the environment variable "FOO" to "BAR" for the current spec. Similarly: diff --git a/vendor/github.com/onsi/ginkgo/v2/decorator_dsl.go b/vendor/github.com/onsi/ginkgo/v2/decorator_dsl.go index e43d9cbbb..c65af4ce1 100644 --- a/vendor/github.com/onsi/ginkgo/v2/decorator_dsl.go +++ b/vendor/github.com/onsi/ginkgo/v2/decorator_dsl.go @@ -46,7 +46,7 @@ const Pending = internal.Pending /* Serial is a decorator that allows you to mark a spec or container as serial. These specs will never run in parallel with other specs. -Tests in ordered containers cannot be marked as serial - mark the ordered container instead. +Specs in ordered containers cannot be marked as serial - mark the ordered container instead. You can learn more here: https://onsi.github.io/ginkgo/#serial-specs You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference @@ -54,7 +54,7 @@ You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorat const Serial = internal.Serial /* -Ordered is a decorator that allows you to mark a container as ordered. Tests in the container will always run in the order they appear. +Ordered is a decorator that allows you to mark a container as ordered. Specs in the container will always run in the order they appear. They will never be randomized and they will never run in parallel with one another, though they may run in parallel with other specs. You can learn more here: https://onsi.github.io/ginkgo/#ordered-containers @@ -62,6 +62,16 @@ You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorat */ const Ordered = internal.Ordered +/* +ContinueOnFailure is a decorator that allows you to mark an Ordered container to continue running specs even if failures occur. Ordinarily an ordered container will stop running specs after the first failure occurs. Note that if a BeforeAll or a BeforeEach/JustBeforeEach annotated with OncePerOrdered fails then no specs will run as the precondition for the Ordered container will consider to be failed. + +ContinueOnFailure only applies to the outermost Ordered container. Attempting to place ContinueOnFailure in a nested container will result in an error. + +You can learn more here: https://onsi.github.io/ginkgo/#ordered-containers +You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference +*/ +const ContinueOnFailure = internal.ContinueOnFailure + /* OncePerOrdered is a decorator that allows you to mark outer BeforeEach, AfterEach, JustBeforeEach, and JustAfterEach setup nodes to run once per ordered context. Normally these setup nodes run around each individual spec, with OncePerOrdered they will run once around the set of specs in an ordered container. diff --git a/vendor/github.com/onsi/ginkgo/v2/formatter/formatter.go b/vendor/github.com/onsi/ginkgo/v2/formatter/formatter.go index da224eab6..743555dde 100644 --- a/vendor/github.com/onsi/ginkgo/v2/formatter/formatter.go +++ b/vendor/github.com/onsi/ginkgo/v2/formatter/formatter.go @@ -4,6 +4,7 @@ import ( "fmt" "os" "regexp" + "strconv" "strings" ) @@ -50,13 +51,35 @@ func NewWithNoColorBool(noColor bool) Formatter { } func New(colorMode ColorMode) Formatter { + colorAliases := map[string]int{ + "black": 0, + "red": 1, + "green": 2, + "yellow": 3, + "blue": 4, + "magenta": 5, + "cyan": 6, + "white": 7, + } + for colorAlias, n := range colorAliases { + colorAliases[fmt.Sprintf("bright-%s", colorAlias)] = n + 8 + } + getColor := func(color, defaultEscapeCode string) string { color = strings.ToUpper(strings.ReplaceAll(color, "-", "_")) envVar := fmt.Sprintf("GINKGO_CLI_COLOR_%s", color) - if escapeCode := os.Getenv(envVar); escapeCode != "" { - return escapeCode + envVarColor := os.Getenv(envVar) + if envVarColor == "" { + return defaultEscapeCode } - return defaultEscapeCode + if colorCode, ok := colorAliases[envVarColor]; ok { + return fmt.Sprintf("\x1b[38;5;%dm", colorCode) + } + colorCode, err := strconv.Atoi(envVarColor) + if err != nil || colorCode < 0 || colorCode > 255 { + return defaultEscapeCode + } + return fmt.Sprintf("\x1b[38;5;%dm", colorCode) } f := Formatter{ @@ -97,7 +120,10 @@ func (f Formatter) Fi(indentation uint, format string, args ...interface{}) stri } func (f Formatter) Fiw(indentation uint, maxWidth uint, format string, args ...interface{}) string { - out := fmt.Sprintf(f.style(format), args...) + out := f.style(format) + if len(args) > 0 { + out = fmt.Sprintf(out, args...) + } if indentation == 0 && maxWidth == 0 { return out diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/bootstrap_command.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/bootstrap_command.go index 0273abe9c..73aff0b7a 100644 --- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/bootstrap_command.go +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/bootstrap_command.go @@ -2,6 +2,7 @@ package generators import ( "bytes" + "encoding/json" "fmt" "os" "text/template" @@ -25,6 +26,9 @@ func BuildBootstrapCommand() command.Command { {Name: "template", KeyPath: "CustomTemplate", UsageArgument: "template-file", Usage: "If specified, generate will use the contents of the file passed as the bootstrap template"}, + {Name: "template-data", KeyPath: "CustomTemplateData", + UsageArgument: "template-data-file", + Usage: "If specified, generate will use the contents of the file passed as data to be rendered in the bootstrap template"}, }, &conf, types.GinkgoFlagSections{}, @@ -57,6 +61,7 @@ type bootstrapData struct { GomegaImport string GinkgoPackage string GomegaPackage string + CustomData map[string]any } func generateBootstrap(conf GeneratorsConfig) { @@ -95,17 +100,32 @@ func generateBootstrap(conf GeneratorsConfig) { tpl, err := os.ReadFile(conf.CustomTemplate) command.AbortIfError("Failed to read custom bootstrap file:", err) templateText = string(tpl) + if conf.CustomTemplateData != "" { + var tplCustomDataMap map[string]any + tplCustomData, err := os.ReadFile(conf.CustomTemplateData) + command.AbortIfError("Failed to read custom boostrap data file:", err) + if !json.Valid([]byte(tplCustomData)) { + command.AbortWith("Invalid JSON object in custom data file.") + } + //create map from the custom template data + json.Unmarshal(tplCustomData, &tplCustomDataMap) + data.CustomData = tplCustomDataMap + } } else if conf.Agouti { templateText = agoutiBootstrapText } else { templateText = bootstrapText } - bootstrapTemplate, err := template.New("bootstrap").Funcs(sprig.TxtFuncMap()).Parse(templateText) + //Setting the option to explicitly fail if template is rendered trying to access missing key + bootstrapTemplate, err := template.New("bootstrap").Funcs(sprig.TxtFuncMap()).Option("missingkey=error").Parse(templateText) command.AbortIfError("Failed to parse bootstrap template:", err) buf := &bytes.Buffer{} - bootstrapTemplate.Execute(buf, data) + //Being explicit about failing sooner during template rendering + //when accessing custom data rather than during the go fmt command + err = bootstrapTemplate.Execute(buf, data) + command.AbortIfError("Failed to render bootstrap template:", err) buf.WriteTo(f) diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_command.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_command.go index 93b0b4b25..48d23f919 100644 --- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_command.go +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_command.go @@ -2,6 +2,7 @@ package generators import ( "bytes" + "encoding/json" "fmt" "os" "path/filepath" @@ -28,6 +29,9 @@ func BuildGenerateCommand() command.Command { {Name: "template", KeyPath: "CustomTemplate", UsageArgument: "template-file", Usage: "If specified, generate will use the contents of the file passed as the test file template"}, + {Name: "template-data", KeyPath: "CustomTemplateData", + UsageArgument: "template-data-file", + Usage: "If specified, generate will use the contents of the file passed as data to be rendered in the test file template"}, }, &conf, types.GinkgoFlagSections{}, @@ -64,6 +68,7 @@ type specData struct { GomegaImport string GinkgoPackage string GomegaPackage string + CustomData map[string]any } func generateTestFiles(conf GeneratorsConfig, args []string) { @@ -122,16 +127,31 @@ func generateTestFileForSubject(subject string, conf GeneratorsConfig) { tpl, err := os.ReadFile(conf.CustomTemplate) command.AbortIfError("Failed to read custom template file:", err) templateText = string(tpl) + if conf.CustomTemplateData != "" { + var tplCustomDataMap map[string]any + tplCustomData, err := os.ReadFile(conf.CustomTemplateData) + command.AbortIfError("Failed to read custom template data file:", err) + if !json.Valid([]byte(tplCustomData)) { + command.AbortWith("Invalid JSON object in custom data file.") + } + //create map from the custom template data + json.Unmarshal(tplCustomData, &tplCustomDataMap) + data.CustomData = tplCustomDataMap + } } else if conf.Agouti { templateText = agoutiSpecText } else { templateText = specText } - specTemplate, err := template.New("spec").Funcs(sprig.TxtFuncMap()).Parse(templateText) + //Setting the option to explicitly fail if template is rendered trying to access missing key + specTemplate, err := template.New("spec").Funcs(sprig.TxtFuncMap()).Option("missingkey=error").Parse(templateText) command.AbortIfError("Failed to read parse test template:", err) - specTemplate.Execute(f, data) + //Being explicit about failing sooner during template rendering + //when accessing custom data rather than during the go fmt command + err = specTemplate.Execute(f, data) + command.AbortIfError("Failed to render bootstrap template:", err) internal.GoFmt(targetFile) } diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generators_common.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generators_common.go index 3086e6056..3046a4487 100644 --- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generators_common.go +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generators_common.go @@ -13,6 +13,7 @@ import ( type GeneratorsConfig struct { Agouti, NoDot, Internal bool CustomTemplate string + CustomTemplateData string } func getPackageAndFormattedName() (string, string, string) { diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go index cad238671..41052ea19 100644 --- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go @@ -6,6 +6,7 @@ import ( "io" "os" "os/exec" + "path/filepath" "regexp" "strings" "syscall" @@ -63,6 +64,12 @@ func checkForNoTestsWarning(buf *bytes.Buffer) bool { } func runGoTest(suite TestSuite, cliConfig types.CLIConfig, goFlagsConfig types.GoFlagsConfig) TestSuite { + // As we run the go test from the suite directory, make sure the cover profile is absolute + // and placed into the expected output directory when one is configured. + if goFlagsConfig.Cover && !filepath.IsAbs(goFlagsConfig.CoverProfile) { + goFlagsConfig.CoverProfile = AbsPathForGeneratedAsset(goFlagsConfig.CoverProfile, suite, cliConfig, 0) + } + args, err := types.GenerateGoTestRunArgs(goFlagsConfig) command.AbortIfError("Failed to generate test run arguments", err) cmd, buf := buildAndStartCommand(suite, args, true) diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/ginkgo.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/ginkgo.go index c197bb686..0b9b19fe7 100644 --- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/ginkgo.go +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/ginkgo.go @@ -1,6 +1,7 @@ package outline import ( + "github.com/onsi/ginkgo/v2/types" "go/ast" "go/token" "strconv" @@ -25,9 +26,10 @@ type ginkgoMetadata struct { // End is the position of first character immediately after the spec or container block End int `json:"end"` - Spec bool `json:"spec"` - Focused bool `json:"focused"` - Pending bool `json:"pending"` + Spec bool `json:"spec"` + Focused bool `json:"focused"` + Pending bool `json:"pending"` + Labels []string `json:"labels"` } // ginkgoNode is used to construct the outline as a tree @@ -145,27 +147,35 @@ func ginkgoNodeFromCallExpr(fset *token.FileSet, ce *ast.CallExpr, ginkgoPackage case "It", "Specify", "Entry": n.Spec = true n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) + n.Labels = labelFromCallExpr(ce) + n.Pending = pendingFromCallExpr(ce) return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName case "FIt", "FSpecify", "FEntry": n.Spec = true n.Focused = true n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) + n.Labels = labelFromCallExpr(ce) return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName case "PIt", "PSpecify", "XIt", "XSpecify", "PEntry", "XEntry": n.Spec = true n.Pending = true n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) + n.Labels = labelFromCallExpr(ce) return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName case "Context", "Describe", "When", "DescribeTable": n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) + n.Labels = labelFromCallExpr(ce) + n.Pending = pendingFromCallExpr(ce) return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName case "FContext", "FDescribe", "FWhen", "FDescribeTable": n.Focused = true n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) + n.Labels = labelFromCallExpr(ce) return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName case "PContext", "PDescribe", "PWhen", "XContext", "XDescribe", "XWhen", "PDescribeTable", "XDescribeTable": n.Pending = true n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) + n.Labels = labelFromCallExpr(ce) return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName case "By": n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) @@ -216,3 +226,77 @@ func textFromCallExpr(ce *ast.CallExpr) (string, bool) { return text.Value, true } } + +func labelFromCallExpr(ce *ast.CallExpr) []string { + + labels := []string{} + if len(ce.Args) < 2 { + return labels + } + + for _, arg := range ce.Args[1:] { + switch expr := arg.(type) { + case *ast.CallExpr: + id, ok := expr.Fun.(*ast.Ident) + if !ok { + // to skip over cases where the expr.Fun. is actually *ast.SelectorExpr + continue + } + if id.Name == "Label" { + ls := extractLabels(expr) + for _, label := range ls { + labels = append(labels, label) + } + } + } + } + return labels +} + +func extractLabels(expr *ast.CallExpr) []string { + out := []string{} + for _, arg := range expr.Args { + switch expr := arg.(type) { + case *ast.BasicLit: + if expr.Kind == token.STRING { + unquoted, err := strconv.Unquote(expr.Value) + if err != nil { + unquoted = expr.Value + } + validated, err := types.ValidateAndCleanupLabel(unquoted, types.CodeLocation{}) + if err == nil { + out = append(out, validated) + } + } + } + } + + return out +} + +func pendingFromCallExpr(ce *ast.CallExpr) bool { + + pending := false + if len(ce.Args) < 2 { + return pending + } + + for _, arg := range ce.Args[1:] { + switch expr := arg.(type) { + case *ast.CallExpr: + id, ok := expr.Fun.(*ast.Ident) + if !ok { + // to skip over cases where the expr.Fun. is actually *ast.SelectorExpr + continue + } + if id.Name == "Pending" { + pending = true + } + case *ast.Ident: + if expr.Name == "Pending" { + pending = true + } + } + } + return pending +} diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline.go index 4b45e7627..c2327cda8 100644 --- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline.go +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline.go @@ -85,12 +85,19 @@ func (o *outline) String() string { // one 'width' of spaces for every level of nesting. func (o *outline) StringIndent(width int) string { var b strings.Builder - b.WriteString("Name,Text,Start,End,Spec,Focused,Pending\n") + b.WriteString("Name,Text,Start,End,Spec,Focused,Pending,Labels\n") currentIndent := 0 pre := func(n *ginkgoNode) { b.WriteString(fmt.Sprintf("%*s", currentIndent, "")) - b.WriteString(fmt.Sprintf("%s,%s,%d,%d,%t,%t,%t\n", n.Name, n.Text, n.Start, n.End, n.Spec, n.Focused, n.Pending)) + var labels string + if len(n.Labels) == 1 { + labels = n.Labels[0] + } else { + labels = strings.Join(n.Labels, ", ") + } + //enclosing labels in a double quoted comma separate listed so that when inmported into a CSV app the Labels column has comma separate strings + b.WriteString(fmt.Sprintf("%s,%s,%d,%d,%t,%t,%t,\"%s\"\n", n.Name, n.Text, n.Start, n.End, n.Spec, n.Focused, n.Pending, labels)) currentIndent += width } post := func(n *ginkgoNode) { diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go index 1beeb1144..c5a7eb94d 100644 --- a/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go @@ -7,7 +7,7 @@ GinkgoT() implements an interface analogous to *testing.T and can be used with third-party libraries that accept *testing.T through an interface. GinkgoT() takes an optional offset argument that can be used to get the -correct line number associated with the failure. +correct line number associated with the failure - though you do not need to use this if you call GinkgoHelper() or GinkgoT().Helper() appropriately You can learn more here: https://onsi.github.io/ginkgo/#using-third-party-libraries */ diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/group.go b/vendor/github.com/onsi/ginkgo/v2/internal/group.go index 5c782d3ff..ae1b7b011 100644 --- a/vendor/github.com/onsi/ginkgo/v2/internal/group.go +++ b/vendor/github.com/onsi/ginkgo/v2/internal/group.go @@ -94,15 +94,19 @@ type group struct { runOncePairs map[uint]runOncePairs runOnceTracker map[runOncePair]types.SpecState - succeeded bool + succeeded bool + failedInARunOnceBefore bool + continueOnFailure bool } func newGroup(suite *Suite) *group { return &group{ - suite: suite, - runOncePairs: map[uint]runOncePairs{}, - runOnceTracker: map[runOncePair]types.SpecState{}, - succeeded: true, + suite: suite, + runOncePairs: map[uint]runOncePairs{}, + runOnceTracker: map[runOncePair]types.SpecState{}, + succeeded: true, + failedInARunOnceBefore: false, + continueOnFailure: false, } } @@ -137,10 +141,14 @@ func (g *group) evaluateSkipStatus(spec Spec) (types.SpecState, types.Failure) { if !g.suite.deadline.IsZero() && g.suite.deadline.Before(time.Now()) { return types.SpecStateSkipped, types.Failure{} } - if !g.succeeded { + if !g.succeeded && !g.continueOnFailure { return types.SpecStateSkipped, g.suite.failureForLeafNodeWithMessage(spec.FirstNodeWithType(types.NodeTypeIt), "Spec skipped because an earlier spec in an ordered container failed") } + if g.failedInARunOnceBefore && g.continueOnFailure { + return types.SpecStateSkipped, g.suite.failureForLeafNodeWithMessage(spec.FirstNodeWithType(types.NodeTypeIt), + "Spec skipped because a BeforeAll node failed") + } beforeOncePairs := g.runOncePairs[spec.SubjectID()].withType(types.NodeTypeBeforeAll | types.NodeTypeBeforeEach | types.NodeTypeJustBeforeEach) for _, pair := range beforeOncePairs { if g.runOnceTracker[pair].Is(types.SpecStateSkipped) { @@ -168,7 +176,8 @@ func (g *group) isLastSpecWithPair(specID uint, pair runOncePair) bool { return lastSpecID == specID } -func (g *group) attemptSpec(isFinalAttempt bool, spec Spec) { +func (g *group) attemptSpec(isFinalAttempt bool, spec Spec) bool { + failedInARunOnceBefore := false pairs := g.runOncePairs[spec.SubjectID()] nodes := spec.Nodes.WithType(types.NodeTypeBeforeAll) @@ -194,6 +203,7 @@ func (g *group) attemptSpec(isFinalAttempt bool, spec Spec) { } if g.suite.currentSpecReport.State != types.SpecStatePassed { terminatingNode, terminatingPair = node, oncePair + failedInARunOnceBefore = !terminatingPair.isZero() break } } @@ -216,7 +226,7 @@ func (g *group) attemptSpec(isFinalAttempt bool, spec Spec) { //this node has already been run on this attempt, don't rerun it return false } - pair := runOncePair{} + var pair runOncePair switch node.NodeType { case types.NodeTypeCleanupAfterEach, types.NodeTypeCleanupAfterAll: // check if we were generated in an AfterNode that has already run @@ -246,9 +256,13 @@ func (g *group) attemptSpec(isFinalAttempt bool, spec Spec) { if !terminatingPair.isZero() && terminatingNode.NestingLevel == node.NestingLevel { return true //...or, a run-once node at our nesting level was skipped which means this is our last chance to run } - case types.SpecStateFailed, types.SpecStatePanicked: // the spec has failed... + case types.SpecStateFailed, types.SpecStatePanicked, types.SpecStateTimedout: // the spec has failed... if isFinalAttempt { - return true //...if this was the last attempt then we're the last spec to run and so the AfterNode should run + if g.continueOnFailure { + return isLastSpecWithPair || failedInARunOnceBefore //...we're configured to continue on failures - so we should only run if we're the last spec for this pair or if we failed in a runOnceBefore (which means we _are_ the last spec to run) + } else { + return true //...this was the last attempt and continueOnFailure is false therefore we are the last spec to run and so the AfterNode should run + } } if !terminatingPair.isZero() { // ...and it failed in a run-once. which will be running again if node.NodeType.Is(types.NodeTypeCleanupAfterEach | types.NodeTypeCleanupAfterAll) { @@ -281,10 +295,12 @@ func (g *group) attemptSpec(isFinalAttempt bool, spec Spec) { includeDeferCleanups = true } + return failedInARunOnceBefore } func (g *group) run(specs Specs) { g.specs = specs + g.continueOnFailure = specs[0].Nodes.FirstNodeMarkedOrdered().MarkedContinueOnFailure for _, spec := range g.specs { g.runOncePairs[spec.SubjectID()] = runOncePairsForSpec(spec) } @@ -301,8 +317,8 @@ func (g *group) run(specs Specs) { skip := g.suite.config.DryRun || g.suite.currentSpecReport.State.Is(types.SpecStateFailureStates|types.SpecStateSkipped|types.SpecStatePending) g.suite.currentSpecReport.StartTime = time.Now() + failedInARunOnceBefore := false if !skip { - var maxAttempts = 1 if g.suite.currentSpecReport.MaxMustPassRepeatedly > 0 { @@ -327,7 +343,7 @@ func (g *group) run(specs Specs) { } } - g.attemptSpec(attempt == maxAttempts-1, spec) + failedInARunOnceBefore = g.attemptSpec(attempt == maxAttempts-1, spec) g.suite.currentSpecReport.EndTime = time.Now() g.suite.currentSpecReport.RunTime = g.suite.currentSpecReport.EndTime.Sub(g.suite.currentSpecReport.StartTime) @@ -355,6 +371,7 @@ func (g *group) run(specs Specs) { g.suite.processCurrentSpecReport() if g.suite.currentSpecReport.State.Is(types.SpecStateFailureStates) { g.succeeded = false + g.failedInARunOnceBefore = g.failedInARunOnceBefore || failedInARunOnceBefore } g.suite.selectiveLock.Lock() g.suite.currentSpecReport = types.SpecReport{} diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/node.go b/vendor/github.com/onsi/ginkgo/v2/internal/node.go index 69928eed6..0869bffb3 100644 --- a/vendor/github.com/onsi/ginkgo/v2/internal/node.go +++ b/vendor/github.com/onsi/ginkgo/v2/internal/node.go @@ -47,19 +47,20 @@ type Node struct { ReportEachBody func(types.SpecReport) ReportSuiteBody func(types.Report) - MarkedFocus bool - MarkedPending bool - MarkedSerial bool - MarkedOrdered bool - MarkedOncePerOrdered bool - FlakeAttempts int - MustPassRepeatedly int - Labels Labels - PollProgressAfter time.Duration - PollProgressInterval time.Duration - NodeTimeout time.Duration - SpecTimeout time.Duration - GracePeriod time.Duration + MarkedFocus bool + MarkedPending bool + MarkedSerial bool + MarkedOrdered bool + MarkedContinueOnFailure bool + MarkedOncePerOrdered bool + FlakeAttempts int + MustPassRepeatedly int + Labels Labels + PollProgressAfter time.Duration + PollProgressInterval time.Duration + NodeTimeout time.Duration + SpecTimeout time.Duration + GracePeriod time.Duration NodeIDWhereCleanupWasGenerated uint } @@ -69,6 +70,7 @@ type focusType bool type pendingType bool type serialType bool type orderedType bool +type continueOnFailureType bool type honorsOrderedType bool type suppressProgressReporting bool @@ -76,6 +78,7 @@ const Focus = focusType(true) const Pending = pendingType(true) const Serial = serialType(true) const Ordered = orderedType(true) +const ContinueOnFailure = continueOnFailureType(true) const OncePerOrdered = honorsOrderedType(true) const SuppressProgressReporting = suppressProgressReporting(true) @@ -90,6 +93,10 @@ type NodeTimeout time.Duration type SpecTimeout time.Duration type GracePeriod time.Duration +func (l Labels) MatchesLabelFilter(query string) bool { + return types.MustParseLabelFilter(query)(l) +} + func UnionOfLabels(labels ...Labels) Labels { out := Labels{} seen := map[string]bool{} @@ -133,6 +140,8 @@ func isDecoration(arg interface{}) bool { return true case t == reflect.TypeOf(Ordered): return true + case t == reflect.TypeOf(ContinueOnFailure): + return true case t == reflect.TypeOf(OncePerOrdered): return true case t == reflect.TypeOf(SuppressProgressReporting): @@ -241,6 +250,11 @@ func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeTy if !nodeType.Is(types.NodeTypeContainer) { appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "Ordered")) } + case t == reflect.TypeOf(ContinueOnFailure): + node.MarkedContinueOnFailure = bool(arg.(continueOnFailureType)) + if !nodeType.Is(types.NodeTypeContainer) { + appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "ContinueOnFailure")) + } case t == reflect.TypeOf(OncePerOrdered): node.MarkedOncePerOrdered = bool(arg.(honorsOrderedType)) if !nodeType.Is(types.NodeTypeBeforeEach | types.NodeTypeJustBeforeEach | types.NodeTypeAfterEach | types.NodeTypeJustAfterEach) { @@ -386,6 +400,10 @@ func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeTy appendError(types.GinkgoErrors.InvalidDeclarationOfFocusedAndPending(node.CodeLocation, nodeType)) } + if node.MarkedContinueOnFailure && !node.MarkedOrdered { + appendError(types.GinkgoErrors.InvalidContinueOnFailureDecoration(node.CodeLocation)) + } + hasContext := node.HasContext || node.SynchronizedAfterSuiteProc1BodyHasContext || node.SynchronizedAfterSuiteAllProcsBodyHasContext || node.SynchronizedBeforeSuiteProc1BodyHasContext || node.SynchronizedBeforeSuiteAllProcsBodyHasContext if !hasContext && (node.NodeTimeout > 0 || node.SpecTimeout > 0 || node.GracePeriod > 0) && len(errors) == 0 { diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/ordering.go b/vendor/github.com/onsi/ginkgo/v2/internal/ordering.go index 161be820c..7ed43c7fd 100644 --- a/vendor/github.com/onsi/ginkgo/v2/internal/ordering.go +++ b/vendor/github.com/onsi/ginkgo/v2/internal/ordering.go @@ -7,6 +7,58 @@ import ( "github.com/onsi/ginkgo/v2/types" ) +type SortableSpecs struct { + Specs Specs + Indexes []int +} + +func NewSortableSpecs(specs Specs) *SortableSpecs { + indexes := make([]int, len(specs)) + for i := range specs { + indexes[i] = i + } + return &SortableSpecs{ + Specs: specs, + Indexes: indexes, + } +} +func (s *SortableSpecs) Len() int { return len(s.Indexes) } +func (s *SortableSpecs) Swap(i, j int) { s.Indexes[i], s.Indexes[j] = s.Indexes[j], s.Indexes[i] } +func (s *SortableSpecs) Less(i, j int) bool { + a, b := s.Specs[s.Indexes[i]], s.Specs[s.Indexes[j]] + + firstOrderedA := a.Nodes.FirstNodeMarkedOrdered() + firstOrderedB := b.Nodes.FirstNodeMarkedOrdered() + if firstOrderedA.ID == firstOrderedB.ID && !firstOrderedA.IsZero() { + // strictly preserve order in ordered containers. ID will track this as IDs are generated monotonically + return a.FirstNodeWithType(types.NodeTypeIt).ID < b.FirstNodeWithType(types.NodeTypeIt).ID + } + + aCLs := a.Nodes.WithType(types.NodeTypesForContainerAndIt).CodeLocations() + bCLs := b.Nodes.WithType(types.NodeTypesForContainerAndIt).CodeLocations() + for i := 0; i < len(aCLs) && i < len(bCLs); i++ { + aCL, bCL := aCLs[i], bCLs[i] + if aCL.FileName < bCL.FileName { + return true + } else if aCL.FileName > bCL.FileName { + return false + } + if aCL.LineNumber < bCL.LineNumber { + return true + } else if aCL.LineNumber > bCL.LineNumber { + return false + } + } + // either everything is equal or we have different lengths of CLs + if len(aCLs) < len(bCLs) { + return true + } else if len(aCLs) > len(bCLs) { + return false + } + // ok, now we are sure everything was equal. so we use the spec text to break ties + return a.Text() < b.Text() +} + type GroupedSpecIndices []SpecIndices type SpecIndices []int @@ -28,12 +80,17 @@ func OrderSpecs(specs Specs, suiteConfig types.SuiteConfig) (GroupedSpecIndices, // Seed a new random source based on thee configured random seed. r := rand.New(rand.NewSource(suiteConfig.RandomSeed)) - // first break things into execution groups + // first, we sort the entire suite to ensure a deterministic order. the sort is performed by filename, then line number, and then spec text. this ensures every parallel process has the exact same spec order and is only necessary to cover the edge case where the user iterates over a map to generate specs. + sortableSpecs := NewSortableSpecs(specs) + sort.Sort(sortableSpecs) + + // then we break things into execution groups // a group represents a single unit of execution and is a collection of SpecIndices // usually a group is just a single spec, however ordered containers must be preserved as a single group executionGroupIDs := []uint{} executionGroups := map[uint]SpecIndices{} - for idx, spec := range specs { + for _, idx := range sortableSpecs.Indexes { + spec := specs[idx] groupNode := spec.Nodes.FirstNodeMarkedOrdered() if groupNode.IsZero() { groupNode = spec.Nodes.FirstNodeWithType(types.NodeTypeIt) @@ -48,7 +105,6 @@ func OrderSpecs(specs Specs, suiteConfig types.SuiteConfig) (GroupedSpecIndices, // we shuffle outermost containers. so we need to form shufflable groupings of GroupIDs shufflableGroupingIDs := []uint{} shufflableGroupingIDToGroupIDs := map[uint][]uint{} - shufflableGroupingsIDToSortKeys := map[uint]string{} // for each execution group we're going to have to pick a node to represent how the // execution group is grouped for shuffling: @@ -57,7 +113,7 @@ func OrderSpecs(specs Specs, suiteConfig types.SuiteConfig) (GroupedSpecIndices, nodeTypesToShuffle = types.NodeTypeIt } - //so, fo reach execution group: + //so, for each execution group: for _, groupID := range executionGroupIDs { // pick out a representative spec representativeSpec := specs[executionGroups[groupID][0]] @@ -72,22 +128,9 @@ func OrderSpecs(specs Specs, suiteConfig types.SuiteConfig) (GroupedSpecIndices, if len(shufflableGroupingIDToGroupIDs[shufflableGroupingNode.ID]) == 1 { // record the shuffleable group ID shufflableGroupingIDs = append(shufflableGroupingIDs, shufflableGroupingNode.ID) - // and record the sort key to use - shufflableGroupingsIDToSortKeys[shufflableGroupingNode.ID] = shufflableGroupingNode.CodeLocation.String() } } - // now we sort the shufflable groups by the sort key. We use the shufflable group nodes code location and break ties using its node id - sort.SliceStable(shufflableGroupingIDs, func(i, j int) bool { - keyA := shufflableGroupingsIDToSortKeys[shufflableGroupingIDs[i]] - keyB := shufflableGroupingsIDToSortKeys[shufflableGroupingIDs[j]] - if keyA == keyB { - return shufflableGroupingIDs[i] < shufflableGroupingIDs[j] - } else { - return keyA < keyB - } - }) - // now we permute the sorted shufflable grouping IDs and build the ordered Groups orderedGroups := GroupedSpecIndices{} permutation := r.Perm(len(shufflableGroupingIDs)) diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/suite.go b/vendor/github.com/onsi/ginkgo/v2/internal/suite.go index f470641a6..5ddf10072 100644 --- a/vendor/github.com/onsi/ginkgo/v2/internal/suite.go +++ b/vendor/github.com/onsi/ginkgo/v2/internal/suite.go @@ -151,6 +151,13 @@ func (suite *Suite) PushNode(node Node) error { } } + if node.MarkedContinueOnFailure { + firstOrderedNode := suite.tree.AncestorNodeChain().FirstNodeMarkedOrdered() + if !firstOrderedNode.IsZero() { + return types.GinkgoErrors.InvalidContinueOnFailureDecoration(node.CodeLocation) + } + } + if node.NodeType == types.NodeTypeContainer { // During PhaseBuildTopLevel we only track the top level containers without entering them // We only enter the top level container nodes during PhaseBuildTree diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go b/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go index 2f42b2642..c797c95d4 100644 --- a/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go +++ b/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go @@ -81,7 +81,7 @@ func (t *ginkgoTestingTProxy) Fatalf(format string, args ...interface{}) { } func (t *ginkgoTestingTProxy) Helper() { - // No-op + types.MarkAsHelper(1) } func (t *ginkgoTestingTProxy) Log(args ...interface{}) { diff --git a/vendor/github.com/onsi/ginkgo/v2/reporters/default_reporter.go b/vendor/github.com/onsi/ginkgo/v2/reporters/default_reporter.go index 7a27220ca..56b7be758 100644 --- a/vendor/github.com/onsi/ginkgo/v2/reporters/default_reporter.go +++ b/vendor/github.com/onsi/ginkgo/v2/reporters/default_reporter.go @@ -12,6 +12,7 @@ import ( "io" "runtime" "strings" + "sync" "time" "github.com/onsi/ginkgo/v2/formatter" @@ -23,7 +24,7 @@ type DefaultReporter struct { writer io.Writer // managing the emission stream - lastChar string + lastCharWasNewline bool lastEmissionWasDelimiter bool // rendering @@ -32,6 +33,7 @@ type DefaultReporter struct { formatter formatter.Formatter runningInParallel bool + lock *sync.Mutex } func NewDefaultReporterUnderTest(conf types.ReporterConfig, writer io.Writer) *DefaultReporter { @@ -46,12 +48,13 @@ func NewDefaultReporter(conf types.ReporterConfig, writer io.Writer) *DefaultRep conf: conf, writer: writer, - lastChar: "\n", + lastCharWasNewline: true, lastEmissionWasDelimiter: false, specDenoter: "•", retryDenoter: "↺", formatter: formatter.NewWithNoColorBool(conf.NoColor), + lock: &sync.Mutex{}, } if runtime.GOOS == "windows" { reporter.specDenoter = "+" @@ -528,7 +531,7 @@ func (r *DefaultReporter) EmitReportEntry(entry types.ReportEntry) { } func (r *DefaultReporter) emitReportEntry(indent uint, entry types.ReportEntry) { - r.emitBlock(r.fi(indent, "{{bold}}"+entry.Name+"{{gray}} - %s @ %s{{/}}", entry.Location, entry.Time.Format(types.GINKGO_TIME_FORMAT))) + r.emitBlock(r.fi(indent, "{{bold}}"+entry.Name+"{{gray}} "+fmt.Sprintf("- %s @ %s{{/}}", entry.Location, entry.Time.Format(types.GINKGO_TIME_FORMAT)))) if representation := entry.StringRepresentation(); representation != "" { r.emitBlock(r.fi(indent+1, representation)) } @@ -619,31 +622,37 @@ func (r *DefaultReporter) emitSource(indent uint, fc types.FunctionCall) { /* Emitting to the writer */ func (r *DefaultReporter) emit(s string) { - if len(s) > 0 { - r.lastChar = s[len(s)-1:] - r.lastEmissionWasDelimiter = false - r.writer.Write([]byte(s)) - } + r._emit(s, false, false) } func (r *DefaultReporter) emitBlock(s string) { - if len(s) > 0 { - if r.lastChar != "\n" { - r.emit("\n") - } - r.emit(s) - if r.lastChar != "\n" { - r.emit("\n") - } - } + r._emit(s, true, false) } func (r *DefaultReporter) emitDelimiter(indent uint) { - if r.lastEmissionWasDelimiter { + r._emit(r.fi(indent, "{{gray}}%s{{/}}", strings.Repeat("-", 30)), true, true) +} + +// a bit ugly - but we're trying to minimize locking on this hot codepath +func (r *DefaultReporter) _emit(s string, block bool, isDelimiter bool) { + if len(s) == 0 { + return + } + r.lock.Lock() + defer r.lock.Unlock() + if isDelimiter && r.lastEmissionWasDelimiter { return } - r.emitBlock(r.fi(indent, "{{gray}}%s{{/}}", strings.Repeat("-", 30))) - r.lastEmissionWasDelimiter = true + if block && !r.lastCharWasNewline { + r.writer.Write([]byte("\n")) + } + r.lastCharWasNewline = (s[len(s)-1:] == "\n") + r.writer.Write([]byte(s)) + if block && !r.lastCharWasNewline { + r.writer.Write([]byte("\n")) + r.lastCharWasNewline = true + } + r.lastEmissionWasDelimiter = isDelimiter } /* Rendering text */ diff --git a/vendor/github.com/onsi/ginkgo/v2/table_dsl.go b/vendor/github.com/onsi/ginkgo/v2/table_dsl.go index 683674462..ac9b7abb5 100644 --- a/vendor/github.com/onsi/ginkgo/v2/table_dsl.go +++ b/vendor/github.com/onsi/ginkgo/v2/table_dsl.go @@ -13,7 +13,7 @@ import ( /* The EntryDescription decorator allows you to pass a format string to DescribeTable() and Entry(). This format string is used to generate entry names via: - fmt.Sprintf(formatString, parameters...) + fmt.Sprintf(formatString, parameters...) where parameters are the parameters passed into the entry. @@ -32,19 +32,20 @@ DescribeTable describes a table-driven spec. For example: - DescribeTable("a simple table", - func(x int, y int, expected bool) { - Ω(x > y).Should(Equal(expected)) - }, - Entry("x > y", 1, 0, true), - Entry("x == y", 0, 0, false), - Entry("x < y", 0, 1, false), - ) + DescribeTable("a simple table", + func(x int, y int, expected bool) { + Ω(x > y).Should(Equal(expected)) + }, + Entry("x > y", 1, 0, true), + Entry("x == y", 0, 0, false), + Entry("x < y", 0, 1, false), + ) You can learn more about DescribeTable here: https://onsi.github.io/ginkgo/#table-specs And can explore some Table patterns here: https://onsi.github.io/ginkgo/#table-specs-patterns */ func DescribeTable(description string, args ...interface{}) bool { + GinkgoHelper() generateTable(description, args...) return true } @@ -53,6 +54,7 @@ func DescribeTable(description string, args ...interface{}) bool { You can focus a table with `FDescribeTable`. This is equivalent to `FDescribe`. */ func FDescribeTable(description string, args ...interface{}) bool { + GinkgoHelper() args = append(args, internal.Focus) generateTable(description, args...) return true @@ -62,6 +64,7 @@ func FDescribeTable(description string, args ...interface{}) bool { You can mark a table as pending with `PDescribeTable`. This is equivalent to `PDescribe`. */ func PDescribeTable(description string, args ...interface{}) bool { + GinkgoHelper() args = append(args, internal.Pending) generateTable(description, args...) return true @@ -95,26 +98,29 @@ If you want to generate interruptible specs simply write a Table function that a You can learn more about Entry here: https://onsi.github.io/ginkgo/#table-specs */ func Entry(description interface{}, args ...interface{}) TableEntry { + GinkgoHelper() decorations, parameters := internal.PartitionDecorations(args...) - return TableEntry{description: description, decorations: decorations, parameters: parameters, codeLocation: types.NewCodeLocation(1)} + return TableEntry{description: description, decorations: decorations, parameters: parameters, codeLocation: types.NewCodeLocation(0)} } /* You can focus a particular entry with FEntry. This is equivalent to FIt. */ func FEntry(description interface{}, args ...interface{}) TableEntry { + GinkgoHelper() decorations, parameters := internal.PartitionDecorations(args...) decorations = append(decorations, internal.Focus) - return TableEntry{description: description, decorations: decorations, parameters: parameters, codeLocation: types.NewCodeLocation(1)} + return TableEntry{description: description, decorations: decorations, parameters: parameters, codeLocation: types.NewCodeLocation(0)} } /* You can mark a particular entry as pending with PEntry. This is equivalent to PIt. */ func PEntry(description interface{}, args ...interface{}) TableEntry { + GinkgoHelper() decorations, parameters := internal.PartitionDecorations(args...) decorations = append(decorations, internal.Pending) - return TableEntry{description: description, decorations: decorations, parameters: parameters, codeLocation: types.NewCodeLocation(1)} + return TableEntry{description: description, decorations: decorations, parameters: parameters, codeLocation: types.NewCodeLocation(0)} } /* @@ -126,7 +132,8 @@ var contextType = reflect.TypeOf(new(context.Context)).Elem() var specContextType = reflect.TypeOf(new(SpecContext)).Elem() func generateTable(description string, args ...interface{}) { - cl := types.NewCodeLocation(2) + GinkgoHelper() + cl := types.NewCodeLocation(0) containerNodeArgs := []interface{}{cl} entries := []TableEntry{} diff --git a/vendor/github.com/onsi/ginkgo/v2/tools.go b/vendor/github.com/onsi/ginkgo/v2/tools.go new file mode 100644 index 000000000..974294467 --- /dev/null +++ b/vendor/github.com/onsi/ginkgo/v2/tools.go @@ -0,0 +1,8 @@ +//go:build tools +// +build tools + +package ginkgo + +import ( + _ "github.com/onsi/ginkgo/v2/ginkgo" +) diff --git a/vendor/github.com/onsi/ginkgo/v2/types/code_location.go b/vendor/github.com/onsi/ginkgo/v2/types/code_location.go index 129109183..9cd576817 100644 --- a/vendor/github.com/onsi/ginkgo/v2/types/code_location.go +++ b/vendor/github.com/onsi/ginkgo/v2/types/code_location.go @@ -7,6 +7,7 @@ import ( "runtime" "runtime/debug" "strings" + "sync" ) type CodeLocation struct { @@ -38,6 +39,73 @@ func (codeLocation CodeLocation) ContentsOfLine() string { return lines[codeLocation.LineNumber-1] } +type codeLocationLocator struct { + pcs map[uintptr]bool + helpers map[string]bool + lock *sync.Mutex +} + +func (c *codeLocationLocator) addHelper(pc uintptr) { + c.lock.Lock() + defer c.lock.Unlock() + + if c.pcs[pc] { + return + } + c.lock.Unlock() + f := runtime.FuncForPC(pc) + c.lock.Lock() + if f == nil { + return + } + c.helpers[f.Name()] = true + c.pcs[pc] = true +} + +func (c *codeLocationLocator) hasHelper(name string) bool { + c.lock.Lock() + defer c.lock.Unlock() + return c.helpers[name] +} + +func (c *codeLocationLocator) getCodeLocation(skip int) CodeLocation { + pc := make([]uintptr, 40) + n := runtime.Callers(skip+2, pc) + if n == 0 { + return CodeLocation{} + } + pc = pc[:n] + frames := runtime.CallersFrames(pc) + for { + frame, more := frames.Next() + if !c.hasHelper(frame.Function) { + return CodeLocation{FileName: frame.File, LineNumber: frame.Line} + } + if !more { + break + } + } + return CodeLocation{} +} + +var clLocator = &codeLocationLocator{ + pcs: map[uintptr]bool{}, + helpers: map[string]bool{}, + lock: &sync.Mutex{}, +} + +// MarkAsHelper is used by GinkgoHelper to mark the caller (appropriately offset by skip)as a helper. You can use this directly if you need to provide an optional `skip` to mark functions further up the call stack as helpers. +func MarkAsHelper(optionalSkip ...int) { + skip := 1 + if len(optionalSkip) > 0 { + skip += optionalSkip[0] + } + pc, _, _, ok := runtime.Caller(skip) + if ok { + clLocator.addHelper(pc) + } +} + func NewCustomCodeLocation(message string) CodeLocation { return CodeLocation{ CustomMessage: message, @@ -45,14 +113,13 @@ func NewCustomCodeLocation(message string) CodeLocation { } func NewCodeLocation(skip int) CodeLocation { - _, file, line, _ := runtime.Caller(skip + 1) - return CodeLocation{FileName: file, LineNumber: line} + return clLocator.getCodeLocation(skip + 1) } func NewCodeLocationWithStackTrace(skip int) CodeLocation { - _, file, line, _ := runtime.Caller(skip + 1) - stackTrace := PruneStack(string(debug.Stack()), skip+1) - return CodeLocation{FileName: file, LineNumber: line, FullStackTrace: stackTrace} + cl := clLocator.getCodeLocation(skip + 1) + cl.FullStackTrace = PruneStack(string(debug.Stack()), skip+1) + return cl } // PruneStack removes references to functions that are internal to Ginkgo diff --git a/vendor/github.com/onsi/ginkgo/v2/types/config.go b/vendor/github.com/onsi/ginkgo/v2/types/config.go index 4ec636eb2..1efd77d39 100644 --- a/vendor/github.com/onsi/ginkgo/v2/types/config.go +++ b/vendor/github.com/onsi/ginkgo/v2/types/config.go @@ -30,6 +30,7 @@ type SuiteConfig struct { PollProgressAfter time.Duration PollProgressInterval time.Duration Timeout time.Duration + EmitSpecProgress bool // this is deprecated but its removal is causing compile issue for some users that were setting it manually OutputInterceptorMode string SourceRoots []string GracePeriod time.Duration diff --git a/vendor/github.com/onsi/ginkgo/v2/types/errors.go b/vendor/github.com/onsi/ginkgo/v2/types/errors.go index a0f59fb4b..1e0dbfd9d 100644 --- a/vendor/github.com/onsi/ginkgo/v2/types/errors.go +++ b/vendor/github.com/onsi/ginkgo/v2/types/errors.go @@ -298,6 +298,15 @@ func (g ginkgoErrors) SetupNodeNotInOrderedContainer(cl CodeLocation, nodeType N } } +func (g ginkgoErrors) InvalidContinueOnFailureDecoration(cl CodeLocation) error { + return GinkgoError{ + Heading: "ContinueOnFailure not decorating an outermost Ordered Container", + Message: "ContinueOnFailure can only decorate an Ordered container, and this Ordered container must be the outermost Ordered container.", + CodeLocation: cl, + DocLink: "ordered-containers", + } +} + /* DeferCleanup errors */ func (g ginkgoErrors) DeferCleanupInvalidFunction(cl CodeLocation) error { return GinkgoError{ diff --git a/vendor/github.com/onsi/ginkgo/v2/types/label_filter.go b/vendor/github.com/onsi/ginkgo/v2/types/label_filter.go index 0403f9e63..b0d3b651e 100644 --- a/vendor/github.com/onsi/ginkgo/v2/types/label_filter.go +++ b/vendor/github.com/onsi/ginkgo/v2/types/label_filter.go @@ -272,12 +272,23 @@ func tokenize(input string) func() (*treeNode, error) { } } +func MustParseLabelFilter(input string) LabelFilter { + filter, err := ParseLabelFilter(input) + if err != nil { + panic(err) + } + return filter +} + func ParseLabelFilter(input string) (LabelFilter, error) { if DEBUG_LABEL_FILTER_PARSING { fmt.Println("\n==============") fmt.Println("Input: ", input) fmt.Print("Tokens: ") } + if input == "" { + return func(_ []string) bool { return true }, nil + } nextToken := tokenize(input) root := &treeNode{token: lfTokenRoot} diff --git a/vendor/github.com/onsi/ginkgo/v2/types/types.go b/vendor/github.com/onsi/ginkgo/v2/types/types.go index 3e979ba8c..d048a8ada 100644 --- a/vendor/github.com/onsi/ginkgo/v2/types/types.go +++ b/vendor/github.com/onsi/ginkgo/v2/types/types.go @@ -604,6 +604,9 @@ var ssEnumSupport = NewEnumSupport(map[uint]string{ func (ss SpecState) String() string { return ssEnumSupport.String(uint(ss)) } +func (ss SpecState) GomegaString() string { + return ssEnumSupport.String(uint(ss)) +} func (ss *SpecState) UnmarshalJSON(b []byte) error { out, err := ssEnumSupport.UnmarshJSON(b) *ss = SpecState(out) diff --git a/vendor/github.com/onsi/ginkgo/v2/types/version.go b/vendor/github.com/onsi/ginkgo/v2/types/version.go index 03d5ff98a..185317c63 100644 --- a/vendor/github.com/onsi/ginkgo/v2/types/version.go +++ b/vendor/github.com/onsi/ginkgo/v2/types/version.go @@ -1,3 +1,3 @@ package types -const VERSION = "2.6.1" +const VERSION = "2.8.3" diff --git a/vendor/github.com/onsi/gomega/.gitignore b/vendor/github.com/onsi/gomega/.gitignore index 5f12ff053..52266eae1 100644 --- a/vendor/github.com/onsi/gomega/.gitignore +++ b/vendor/github.com/onsi/gomega/.gitignore @@ -3,4 +3,5 @@ . .idea gomega.iml -TODO.md \ No newline at end of file +TODO.md +.vscode \ No newline at end of file diff --git a/vendor/github.com/onsi/gomega/CHANGELOG.md b/vendor/github.com/onsi/gomega/CHANGELOG.md index 35dfec067..99ea94078 100644 --- a/vendor/github.com/onsi/gomega/CHANGELOG.md +++ b/vendor/github.com/onsi/gomega/CHANGELOG.md @@ -1,3 +1,47 @@ +## 1.27.1 + +### Maintenance + +- Bump golang.org/x/net from 0.6.0 to 0.7.0 (#640) [bc686cd] + +## 1.27.0 + +### Features +- Add HaveExactElements matcher (#634) [9d50783] +- update Gomega docs to discuss GinkgoHelper() [be32774] + +### Maintenance +- Bump github.com/onsi/ginkgo/v2 from 2.8.0 to 2.8.1 (#639) [296a68b] +- Bump golang.org/x/net from 0.5.0 to 0.6.0 (#638) [c2b098b] +- Bump github-pages from 227 to 228 in /docs (#636) [a9069ab] +- test: update matrix for Go 1.20 (#635) [6bd25c8] +- Bump github.com/onsi/ginkgo/v2 from 2.7.0 to 2.8.0 (#631) [5445f8b] +- Bump webrick from 1.7.0 to 1.8.1 in /docs (#630) [03e93bb] +- codeql: add ruby language (#626) [63c7d21] +- dependabot: add bundler package-ecosystem for docs (#625) [d92f963] + +## 1.26.0 + +### Features +- When a polled function returns an error, keep track of the actual and report on the matcher state of the last non-errored actual [21f3090] +- improve eventually failure message output [c530fb3] + +### Fixes +- fix several documentation spelling issues [e2eff1f] + + +## 1.25.0 + +### Features +- add `MustPassRepeatedly(int)` to asyncAssertion (#619) [4509f72] +- compare unwrapped errors using DeepEqual (#617) [aaeaa5d] + +### Maintenance +- Bump golang.org/x/net from 0.4.0 to 0.5.0 (#614) [c7cfea4] +- Bump github.com/onsi/ginkgo/v2 from 2.6.1 to 2.7.0 (#615) [71b8adb] +- Docs: Fix typo "MUltiple" -> "Multiple" (#616) [9351dda] +- clean up go.sum [cd1dc1d] + ## 1.24.2 ### Fixes diff --git a/vendor/github.com/onsi/gomega/gomega_dsl.go b/vendor/github.com/onsi/gomega/gomega_dsl.go index b65c8be9b..4405c0682 100644 --- a/vendor/github.com/onsi/gomega/gomega_dsl.go +++ b/vendor/github.com/onsi/gomega/gomega_dsl.go @@ -22,7 +22,7 @@ import ( "github.com/onsi/gomega/types" ) -const GOMEGA_VERSION = "1.24.2" +const GOMEGA_VERSION = "1.27.1" const nilGomegaPanic = `You are trying to make an assertion, but haven't registered Gomega's fail handler. If you're using Ginkgo then you probably forgot to put your assertion in an It(). @@ -360,6 +360,16 @@ You can also pass additional arugments to functions that take a Gomega. The onl g.Expect(elements).To(ConsistOf(expected)) }).WithContext(ctx).WithArguments("/names", "Joe", "Jane", "Sam").Should(Succeed()) +You can ensure that you get a number of consecutive successful tries before succeeding using `MustPassRepeatedly(int)`. For Example: + + int count := 0 + Eventually(func() bool { + count++ + return count > 2 + }).MustPassRepeatedly(2).Should(BeTrue()) + // Because we had to wait for 2 calls that returned true + Expect(count).To(Equal(3)) + Finally, in addition to passing timeouts and a context to Eventually you can be more explicit with Eventually's chaining configuration methods: Eventually(..., "1s", "2s", ctx).Should(...) diff --git a/vendor/github.com/onsi/gomega/internal/async_assertion.go b/vendor/github.com/onsi/gomega/internal/async_assertion.go index cc8615a11..7f6226968 100644 --- a/vendor/github.com/onsi/gomega/internal/async_assertion.go +++ b/vendor/github.com/onsi/gomega/internal/async_assertion.go @@ -2,6 +2,7 @@ package internal import ( "context" + "errors" "fmt" "reflect" "runtime" @@ -16,6 +17,22 @@ var errInterface = reflect.TypeOf((*error)(nil)).Elem() var gomegaType = reflect.TypeOf((*types.Gomega)(nil)).Elem() var contextType = reflect.TypeOf(new(context.Context)).Elem() +type formattedGomegaError interface { + FormattedGomegaError() string +} + +type asyncPolledActualError struct { + message string +} + +func (err *asyncPolledActualError) Error() string { + return err.message +} + +func (err *asyncPolledActualError) FormattedGomegaError() string { + return err.message +} + type contextWithAttachProgressReporter interface { AttachProgressReporter(func() string) func() } @@ -55,21 +72,23 @@ type AsyncAssertion struct { actual interface{} argsToForward []interface{} - timeoutInterval time.Duration - pollingInterval time.Duration - ctx context.Context - offset int - g *Gomega + timeoutInterval time.Duration + pollingInterval time.Duration + mustPassRepeatedly int + ctx context.Context + offset int + g *Gomega } -func NewAsyncAssertion(asyncType AsyncAssertionType, actualInput interface{}, g *Gomega, timeoutInterval time.Duration, pollingInterval time.Duration, ctx context.Context, offset int) *AsyncAssertion { +func NewAsyncAssertion(asyncType AsyncAssertionType, actualInput interface{}, g *Gomega, timeoutInterval time.Duration, pollingInterval time.Duration, mustPassRepeatedly int, ctx context.Context, offset int) *AsyncAssertion { out := &AsyncAssertion{ - asyncType: asyncType, - timeoutInterval: timeoutInterval, - pollingInterval: pollingInterval, - offset: offset, - ctx: ctx, - g: g, + asyncType: asyncType, + timeoutInterval: timeoutInterval, + pollingInterval: pollingInterval, + mustPassRepeatedly: mustPassRepeatedly, + offset: offset, + ctx: ctx, + g: g, } out.actual = actualInput @@ -115,6 +134,11 @@ func (assertion *AsyncAssertion) WithArguments(argsToForward ...interface{}) typ return assertion } +func (assertion *AsyncAssertion) MustPassRepeatedly(count int) types.AsyncAssertion { + assertion.mustPassRepeatedly = count + return assertion +} + func (assertion *AsyncAssertion) Should(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool { assertion.g.THelper() vetOptionalDescription("Asynchronous assertion", optionalDescription...) @@ -141,7 +165,9 @@ func (assertion *AsyncAssertion) buildDescription(optionalDescription ...interfa func (assertion *AsyncAssertion) processReturnValues(values []reflect.Value) (interface{}, error) { if len(values) == 0 { - return nil, fmt.Errorf("No values were returned by the function passed to Gomega") + return nil, &asyncPolledActualError{ + message: fmt.Sprintf("The function passed to %s did not return any values", assertion.asyncType), + } } actual := values[0].Interface() @@ -164,10 +190,12 @@ func (assertion *AsyncAssertion) processReturnValues(values []reflect.Value) (in continue } if i == len(values)-2 && extraType.Implements(errInterface) { - err = fmt.Errorf("function returned error: %w", extra.(error)) + err = extra.(error) } if err == nil { - err = fmt.Errorf("Unexpected non-nil/non-zero return value at index %d:\n\t<%T>: %#v", i+1, extra, extra) + err = &asyncPolledActualError{ + message: fmt.Sprintf("The function passed to %s had an unexpected non-nil/non-zero return value at index %d:\n%s", assertion.asyncType, i+1, format.Object(extra, 1)), + } } } @@ -202,6 +230,13 @@ You can learn more at https://onsi.github.io/gomega/#eventually `, assertion.asyncType, t, t.NumIn(), numProvided, have, assertion.asyncType) } +func (assertion *AsyncAssertion) invalidMustPassRepeatedlyError(reason string) error { + return fmt.Errorf(`Invalid use of MustPassRepeatedly with %s %s + +You can learn more at https://onsi.github.io/gomega/#eventually +`, assertion.asyncType, reason) +} + func (assertion *AsyncAssertion) buildActualPoller() (func() (interface{}, error), error) { if !assertion.actualIsFunc { return func() (interface{}, error) { return assertion.actual, nil }, nil @@ -239,7 +274,9 @@ func (assertion *AsyncAssertion) buildActualPoller() (func() (interface{}, error skip = callerSkip[0] } _, file, line, _ := runtime.Caller(skip + 1) - assertionFailure = fmt.Errorf("Assertion in callback at %s:%d failed:\n%s", file, line, message) + assertionFailure = &asyncPolledActualError{ + message: fmt.Sprintf("The function passed to %s failed at %s:%d with:\n%s", assertion.asyncType, file, line, message), + } // we throw an asyncGomegaHaltExecutionError so that defer GinkgoRecover() can catch this error if the user makes an assertion in a goroutine panic(asyncGomegaHaltExecutionError{}) }))) @@ -257,6 +294,13 @@ func (assertion *AsyncAssertion) buildActualPoller() (func() (interface{}, error return nil, assertion.argumentMismatchError(actualType, len(inValues)) } + if assertion.mustPassRepeatedly != 1 && assertion.asyncType != AsyncAssertionTypeEventually { + return nil, assertion.invalidMustPassRepeatedlyError("it can only be used with Eventually") + } + if assertion.mustPassRepeatedly < 1 { + return nil, assertion.invalidMustPassRepeatedlyError("parameter can't be < 1") + } + return func() (actual interface{}, err error) { var values []reflect.Value assertionFailure = nil @@ -338,22 +382,39 @@ func (assertion *AsyncAssertion) match(matcher types.GomegaMatcher, desiredMatch timeout := assertion.afterTimeout() lock := sync.Mutex{} - var matches bool - var err error + var matches, hasLastValidActual bool + var actual, lastValidActual interface{} + var actualErr, matcherErr error var oracleMatcherSaysStop bool assertion.g.THelper() - pollActual, err := assertion.buildActualPoller() - if err != nil { - assertion.g.Fail(err.Error(), 2+assertion.offset) + pollActual, buildActualPollerErr := assertion.buildActualPoller() + if buildActualPollerErr != nil { + assertion.g.Fail(buildActualPollerErr.Error(), 2+assertion.offset) return false } - value, err := pollActual() - if err == nil { - oracleMatcherSaysStop = assertion.matcherSaysStopTrying(matcher, value) - matches, err = assertion.pollMatcher(matcher, value) + actual, actualErr = pollActual() + if actualErr == nil { + lastValidActual = actual + hasLastValidActual = true + oracleMatcherSaysStop = assertion.matcherSaysStopTrying(matcher, actual) + matches, matcherErr = assertion.pollMatcher(matcher, actual) + } + + renderError := func(preamble string, err error) string { + message := "" + if pollingSignalErr, ok := AsPollingSignalError(err); ok { + message = err.Error() + for _, attachment := range pollingSignalErr.Attachments { + message += fmt.Sprintf("\n%s:\n", attachment.Description) + message += format.Object(attachment.Object, 1) + } + } else { + message = preamble + "\n" + err.Error() + "\n" + format.Object(err, 1) + } + return message } messageGenerator := func() string { @@ -361,23 +422,45 @@ func (assertion *AsyncAssertion) match(matcher types.GomegaMatcher, desiredMatch lock.Lock() defer lock.Unlock() message := "" - if err != nil { - if pollingSignalErr, ok := AsPollingSignalError(err); ok && pollingSignalErr.IsStopTrying() { - message = err.Error() - for _, attachment := range pollingSignalErr.Attachments { - message += fmt.Sprintf("\n%s:\n", attachment.Description) - message += format.Object(attachment.Object, 1) + + if actualErr == nil { + if matcherErr == nil { + if desiredMatch { + message += matcher.FailureMessage(actual) + } else { + message += matcher.NegatedFailureMessage(actual) } } else { - message = "Error: " + err.Error() + "\n" + format.Object(err, 1) + var fgErr formattedGomegaError + if errors.As(actualErr, &fgErr) { + message += fgErr.FormattedGomegaError() + "\n" + } else { + message += renderError(fmt.Sprintf("The matcher passed to %s returned the following error:", assertion.asyncType), matcherErr) + } } } else { - if desiredMatch { - message = matcher.FailureMessage(value) + var fgErr formattedGomegaError + if errors.As(actualErr, &fgErr) { + message += fgErr.FormattedGomegaError() + "\n" } else { - message = matcher.NegatedFailureMessage(value) + message += renderError(fmt.Sprintf("The function passed to %s returned the following error:", assertion.asyncType), actualErr) + } + if hasLastValidActual { + message += fmt.Sprintf("\nAt one point, however, the function did return successfully.\nYet, %s failed because", assertion.asyncType) + _, e := matcher.Match(lastValidActual) + if e != nil { + message += renderError(" the matcher returned the following error:", e) + } else { + message += " the matcher was not satisfied:\n" + if desiredMatch { + message += matcher.FailureMessage(lastValidActual) + } else { + message += matcher.NegatedFailureMessage(lastValidActual) + } + } } } + description := assertion.buildDescription(optionalDescription...) return fmt.Sprintf("%s%s", description, message) } @@ -396,30 +479,39 @@ func (assertion *AsyncAssertion) match(matcher types.GomegaMatcher, desiredMatch } } + // Used to count the number of times in a row a step passed + passedRepeatedlyCount := 0 for { var nextPoll <-chan time.Time = nil var isTryAgainAfterError = false - if pollingSignalErr, ok := AsPollingSignalError(err); ok { - if pollingSignalErr.IsStopTrying() { - fail("Told to stop trying") - return false - } - if pollingSignalErr.IsTryAgainAfter() { - nextPoll = time.After(pollingSignalErr.TryAgainDuration()) - isTryAgainAfterError = true + for _, err := range []error{actualErr, matcherErr} { + if pollingSignalErr, ok := AsPollingSignalError(err); ok { + if pollingSignalErr.IsStopTrying() { + fail("Told to stop trying") + return false + } + if pollingSignalErr.IsTryAgainAfter() { + nextPoll = time.After(pollingSignalErr.TryAgainDuration()) + isTryAgainAfterError = true + } } } - if err == nil && matches == desiredMatch { + if actualErr == nil && matcherErr == nil && matches == desiredMatch { if assertion.asyncType == AsyncAssertionTypeEventually { - return true + passedRepeatedlyCount += 1 + if passedRepeatedlyCount == assertion.mustPassRepeatedly { + return true + } } } else if !isTryAgainAfterError { if assertion.asyncType == AsyncAssertionTypeConsistently { fail("Failed") return false } + // Reset the consecutive pass count + passedRepeatedlyCount = 0 } if oracleMatcherSaysStop { @@ -437,15 +529,19 @@ func (assertion *AsyncAssertion) match(matcher types.GomegaMatcher, desiredMatch select { case <-nextPoll: - v, e := pollActual() + a, e := pollActual() lock.Lock() - value, err = v, e + actual, actualErr = a, e lock.Unlock() - if err == nil { - oracleMatcherSaysStop = assertion.matcherSaysStopTrying(matcher, value) - m, e := assertion.pollMatcher(matcher, value) + if actualErr == nil { + lock.Lock() + lastValidActual = actual + hasLastValidActual = true + lock.Unlock() + oracleMatcherSaysStop = assertion.matcherSaysStopTrying(matcher, actual) + m, e := assertion.pollMatcher(matcher, actual) lock.Lock() - matches, err = m, e + matches, matcherErr = m, e lock.Unlock() } case <-contextDone: diff --git a/vendor/github.com/onsi/gomega/internal/gomega.go b/vendor/github.com/onsi/gomega/internal/gomega.go index 2d92877f3..de1f4f336 100644 --- a/vendor/github.com/onsi/gomega/internal/gomega.go +++ b/vendor/github.com/onsi/gomega/internal/gomega.go @@ -109,7 +109,7 @@ func (g *Gomega) makeAsyncAssertion(asyncAssertionType AsyncAssertionType, offse } } - return NewAsyncAssertion(asyncAssertionType, actual, g, timeoutInterval, pollingInterval, ctx, offset) + return NewAsyncAssertion(asyncAssertionType, actual, g, timeoutInterval, pollingInterval, 1, ctx, offset) } func (g *Gomega) SetDefaultEventuallyTimeout(t time.Duration) { diff --git a/vendor/github.com/onsi/gomega/matchers.go b/vendor/github.com/onsi/gomega/matchers.go index 857586a91..44056ad64 100644 --- a/vendor/github.com/onsi/gomega/matchers.go +++ b/vendor/github.com/onsi/gomega/matchers.go @@ -349,6 +349,20 @@ func ConsistOf(elements ...interface{}) types.GomegaMatcher { } } +// HaveExactElemets succeeds if actual contains elements that precisely match the elemets passed into the matcher. The ordering of the elements does matter. +// By default HaveExactElements() uses Equal() to match the elements, however custom matchers can be passed in instead. Here are some examples: +// +// Expect([]string{"Foo", "FooBar"}).Should(HaveExactElements("Foo", "FooBar")) +// Expect([]string{"Foo", "FooBar"}).Should(HaveExactElements("Foo", ContainSubstring("Bar"))) +// Expect([]string{"Foo", "FooBar"}).Should(HaveExactElements(ContainSubstring("Foo"), ContainSubstring("Foo"))) +// +// Actual must be an array or slice. +func HaveExactElements(elements ...interface{}) types.GomegaMatcher { + return &matchers.HaveExactElementsMatcher{ + Elements: elements, + } +} + // ContainElements succeeds if actual contains the passed in elements. The ordering of the elements does not matter. // By default ContainElements() uses Equal() to match the elements, however custom matchers can be passed in instead. Here are some examples: // diff --git a/vendor/github.com/onsi/gomega/matchers/have_exact_elements.go b/vendor/github.com/onsi/gomega/matchers/have_exact_elements.go new file mode 100644 index 000000000..19d8f3d1d --- /dev/null +++ b/vendor/github.com/onsi/gomega/matchers/have_exact_elements.go @@ -0,0 +1,75 @@ +package matchers + +import ( + "fmt" + + "github.com/onsi/gomega/format" +) + +type mismatchFailure struct { + failure string + index int +} + +type HaveExactElementsMatcher struct { + Elements []interface{} + mismatchFailures []mismatchFailure + missingIndex int + extraIndex int +} + +func (matcher *HaveExactElementsMatcher) Match(actual interface{}) (success bool, err error) { + if isMap(actual) { + return false, fmt.Errorf("error") + } + + matchers := matchers(matcher.Elements) + values := valuesOf(actual) + + lenMatchers := len(matchers) + lenValues := len(values) + + for i := 0; i < lenMatchers || i < lenValues; i++ { + if i >= lenMatchers { + matcher.extraIndex = i + continue + } + + if i >= lenValues { + matcher.missingIndex = i + return + } + + elemMatcher := matchers[i].(omegaMatcher) + match, err := elemMatcher.Match(values[i]) + if err != nil || !match { + matcher.mismatchFailures = append(matcher.mismatchFailures, mismatchFailure{ + index: i, + failure: elemMatcher.FailureMessage(values[i]), + }) + } + } + + return matcher.missingIndex+matcher.extraIndex+len(matcher.mismatchFailures) == 0, nil +} + +func (matcher *HaveExactElementsMatcher) FailureMessage(actual interface{}) (message string) { + message = format.Message(actual, "to have exact elements with", presentable(matcher.Elements)) + if matcher.missingIndex > 0 { + message = fmt.Sprintf("%s\nthe missing elements start from index %d", message, matcher.missingIndex) + } + if matcher.extraIndex > 0 { + message = fmt.Sprintf("%s\nthe extra elements start from index %d", message, matcher.extraIndex) + } + if len(matcher.mismatchFailures) != 0 { + message = fmt.Sprintf("%s\nthe mismatch indexes were:", message) + } + for _, mismatch := range matcher.mismatchFailures { + message = fmt.Sprintf("%s\n%d: %s", message, mismatch.index, mismatch.failure) + } + return +} + +func (matcher *HaveExactElementsMatcher) NegatedFailureMessage(actual interface{}) (message string) { + return format.Message(actual, "not to contain elements", presentable(matcher.Elements)) +} diff --git a/vendor/github.com/onsi/gomega/matchers/match_error_matcher.go b/vendor/github.com/onsi/gomega/matchers/match_error_matcher.go index c8993a86d..827475ea5 100644 --- a/vendor/github.com/onsi/gomega/matchers/match_error_matcher.go +++ b/vendor/github.com/onsi/gomega/matchers/match_error_matcher.go @@ -25,7 +25,17 @@ func (matcher *MatchErrorMatcher) Match(actual interface{}) (success bool, err e expected := matcher.Expected if isError(expected) { - return reflect.DeepEqual(actualErr, expected) || errors.Is(actualErr, expected.(error)), nil + // first try the built-in errors.Is + if errors.Is(actualErr, expected.(error)) { + return true, nil + } + // if not, try DeepEqual along the error chain + for unwrapped := actualErr; unwrapped != nil; unwrapped = errors.Unwrap(unwrapped) { + if reflect.DeepEqual(unwrapped, expected) { + return true, nil + } + } + return false, nil } if isString(expected) { diff --git a/vendor/github.com/onsi/gomega/matchers/succeed_matcher.go b/vendor/github.com/onsi/gomega/matchers/succeed_matcher.go index 721ed5529..da5a39594 100644 --- a/vendor/github.com/onsi/gomega/matchers/succeed_matcher.go +++ b/vendor/github.com/onsi/gomega/matchers/succeed_matcher.go @@ -1,11 +1,16 @@ package matchers import ( + "errors" "fmt" "github.com/onsi/gomega/format" ) +type formattedGomegaError interface { + FormattedGomegaError() string +} + type SucceedMatcher struct { } @@ -25,6 +30,10 @@ func (matcher *SucceedMatcher) Match(actual interface{}) (success bool, err erro } func (matcher *SucceedMatcher) FailureMessage(actual interface{}) (message string) { + var fgErr formattedGomegaError + if errors.As(actual.(error), &fgErr) { + return fgErr.FormattedGomegaError() + } return fmt.Sprintf("Expected success, but got an error:\n%s\n%s", format.Object(actual, 1), format.IndentString(actual.(error).Error(), 1)) } diff --git a/vendor/github.com/onsi/gomega/types/types.go b/vendor/github.com/onsi/gomega/types/types.go index 125de6497..7c7adb941 100644 --- a/vendor/github.com/onsi/gomega/types/types.go +++ b/vendor/github.com/onsi/gomega/types/types.go @@ -75,6 +75,7 @@ type AsyncAssertion interface { ProbeEvery(interval time.Duration) AsyncAssertion WithContext(ctx context.Context) AsyncAssertion WithArguments(argsToForward ...interface{}) AsyncAssertion + MustPassRepeatedly(count int) AsyncAssertion } // Assertions are returned by Ω and Expect and enable assertions against Gomega matchers diff --git a/vendor/golang.org/x/crypto/cast5/cast5.go b/vendor/golang.org/x/crypto/cast5/cast5.go index ddcbeb6f2..425e8eecb 100644 --- a/vendor/golang.org/x/crypto/cast5/cast5.go +++ b/vendor/golang.org/x/crypto/cast5/cast5.go @@ -13,7 +13,10 @@ // golang.org/x/crypto/chacha20poly1305). package cast5 // import "golang.org/x/crypto/cast5" -import "errors" +import ( + "errors" + "math/bits" +) const BlockSize = 8 const KeySize = 16 @@ -241,19 +244,19 @@ func (c *Cipher) keySchedule(in []byte) { // These are the three 'f' functions. See RFC 2144, section 2.2. func f1(d, m uint32, r uint8) uint32 { t := m + d - I := (t << r) | (t >> (32 - r)) + I := bits.RotateLeft32(t, int(r)) return ((sBox[0][I>>24] ^ sBox[1][(I>>16)&0xff]) - sBox[2][(I>>8)&0xff]) + sBox[3][I&0xff] } func f2(d, m uint32, r uint8) uint32 { t := m ^ d - I := (t << r) | (t >> (32 - r)) + I := bits.RotateLeft32(t, int(r)) return ((sBox[0][I>>24] - sBox[1][(I>>16)&0xff]) + sBox[2][(I>>8)&0xff]) ^ sBox[3][I&0xff] } func f3(d, m uint32, r uint8) uint32 { t := m - d - I := (t << r) | (t >> (32 - r)) + I := bits.RotateLeft32(t, int(r)) return ((sBox[0][I>>24] + sBox[1][(I>>16)&0xff]) ^ sBox[2][(I>>8)&0xff]) - sBox[3][I&0xff] } diff --git a/vendor/golang.org/x/crypto/curve25519/internal/field/fe_generic.go b/vendor/golang.org/x/crypto/curve25519/internal/field/fe_generic.go index 7b5b78cbd..2671217da 100644 --- a/vendor/golang.org/x/crypto/curve25519/internal/field/fe_generic.go +++ b/vendor/golang.org/x/crypto/curve25519/internal/field/fe_generic.go @@ -245,7 +245,7 @@ func feSquareGeneric(v, a *Element) { v.carryPropagate() } -// carryPropagate brings the limbs below 52 bits by applying the reduction +// carryPropagateGeneric brings the limbs below 52 bits by applying the reduction // identity (a * 2²⁵⁵ + b = a * 19 + b) to the l4 carry. TODO inline func (v *Element) carryPropagateGeneric() *Element { c0 := v.l0 >> 51 diff --git a/vendor/golang.org/x/crypto/openpgp/armor/armor.go b/vendor/golang.org/x/crypto/openpgp/armor/armor.go index be342ad47..8907183ec 100644 --- a/vendor/golang.org/x/crypto/openpgp/armor/armor.go +++ b/vendor/golang.org/x/crypto/openpgp/armor/armor.go @@ -156,7 +156,7 @@ func (r *openpgpReader) Read(p []byte) (n int, err error) { n, err = r.b64Reader.Read(p) r.currentCRC = crc24(r.currentCRC, p[:n]) - if err == io.EOF && r.lReader.crcSet && r.lReader.crc != uint32(r.currentCRC&crc24Mask) { + if err == io.EOF && r.lReader.crcSet && r.lReader.crc != r.currentCRC&crc24Mask { return 0, ArmorCorrupt } diff --git a/vendor/golang.org/x/crypto/openpgp/keys.go b/vendor/golang.org/x/crypto/openpgp/keys.go index faa2fb369..d62f787e9 100644 --- a/vendor/golang.org/x/crypto/openpgp/keys.go +++ b/vendor/golang.org/x/crypto/openpgp/keys.go @@ -61,7 +61,7 @@ type Key struct { type KeyRing interface { // KeysById returns the set of keys that have the given key id. KeysById(id uint64) []Key - // KeysByIdAndUsage returns the set of keys with the given id + // KeysByIdUsage returns the set of keys with the given id // that also meet the key usage given by requiredUsage. // The requiredUsage is expressed as the bitwise-OR of // packet.KeyFlag* values. @@ -183,7 +183,7 @@ func (el EntityList) KeysById(id uint64) (keys []Key) { return } -// KeysByIdAndUsage returns the set of keys with the given id that also meet +// KeysByIdUsage returns the set of keys with the given id that also meet // the key usage given by requiredUsage. The requiredUsage is expressed as // the bitwise-OR of packet.KeyFlag* values. func (el EntityList) KeysByIdUsage(id uint64, requiredUsage byte) (keys []Key) { diff --git a/vendor/golang.org/x/crypto/ssh/common.go b/vendor/golang.org/x/crypto/ssh/common.go index 7a5ff2d2e..c7964275d 100644 --- a/vendor/golang.org/x/crypto/ssh/common.go +++ b/vendor/golang.org/x/crypto/ssh/common.go @@ -10,6 +10,7 @@ import ( "fmt" "io" "math" + "strings" "sync" _ "crypto/sha1" @@ -118,6 +119,20 @@ func algorithmsForKeyFormat(keyFormat string) []string { } } +// supportedPubKeyAuthAlgos specifies the supported client public key +// authentication algorithms. Note that this doesn't include certificate types +// since those use the underlying algorithm. This list is sent to the client if +// it supports the server-sig-algs extension. Order is irrelevant. +var supportedPubKeyAuthAlgos = []string{ + KeyAlgoED25519, + KeyAlgoSKED25519, KeyAlgoSKECDSA256, + KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521, + KeyAlgoRSASHA256, KeyAlgoRSASHA512, KeyAlgoRSA, + KeyAlgoDSA, +} + +var supportedPubKeyAuthAlgosList = strings.Join(supportedPubKeyAuthAlgos, ",") + // unexpectedMessageError results when the SSH message that we received didn't // match what we wanted. func unexpectedMessageError(expected, got uint8) error { diff --git a/vendor/golang.org/x/crypto/ssh/handshake.go b/vendor/golang.org/x/crypto/ssh/handshake.go index 653dc4d2c..07a1843e0 100644 --- a/vendor/golang.org/x/crypto/ssh/handshake.go +++ b/vendor/golang.org/x/crypto/ssh/handshake.go @@ -58,11 +58,13 @@ type handshakeTransport struct { incoming chan []byte readError error - mu sync.Mutex - writeError error - sentInitPacket []byte - sentInitMsg *kexInitMsg - pendingPackets [][]byte // Used when a key exchange is in progress. + mu sync.Mutex + writeError error + sentInitPacket []byte + sentInitMsg *kexInitMsg + pendingPackets [][]byte // Used when a key exchange is in progress. + writePacketsLeft uint32 + writeBytesLeft int64 // If the read loop wants to schedule a kex, it pings this // channel, and the write loop will send out a kex @@ -71,7 +73,8 @@ type handshakeTransport struct { // If the other side requests or confirms a kex, its kexInit // packet is sent here for the write loop to find it. - startKex chan *pendingKex + startKex chan *pendingKex + kexLoopDone chan struct{} // closed (with writeError non-nil) when kexLoop exits // data for host key checking hostKeyCallback HostKeyCallback @@ -86,12 +89,10 @@ type handshakeTransport struct { // Algorithms agreed in the last key exchange. algorithms *algorithms + // Counters exclusively owned by readLoop. readPacketsLeft uint32 readBytesLeft int64 - writePacketsLeft uint32 - writeBytesLeft int64 - // The session ID or nil if first kex did not complete yet. sessionID []byte } @@ -108,7 +109,8 @@ func newHandshakeTransport(conn keyingTransport, config *Config, clientVersion, clientVersion: clientVersion, incoming: make(chan []byte, chanSize), requestKex: make(chan struct{}, 1), - startKex: make(chan *pendingKex, 1), + startKex: make(chan *pendingKex), + kexLoopDone: make(chan struct{}), config: config, } @@ -340,16 +342,17 @@ write: t.mu.Unlock() } + // Unblock reader. + t.conn.Close() + // drain startKex channel. We don't service t.requestKex // because nobody does blocking sends there. - go func() { - for init := range t.startKex { - init.done <- t.writeError - } - }() + for request := range t.startKex { + request.done <- t.getWriteError() + } - // Unblock reader. - t.conn.Close() + // Mark that the loop is done so that Close can return. + close(t.kexLoopDone) } // The protocol uses uint32 for packet counters, so we can't let them @@ -545,7 +548,16 @@ func (t *handshakeTransport) writePacket(p []byte) error { } func (t *handshakeTransport) Close() error { - return t.conn.Close() + // Close the connection. This should cause the readLoop goroutine to wake up + // and close t.startKex, which will shut down kexLoop if running. + err := t.conn.Close() + + // Wait for the kexLoop goroutine to complete. + // At that point we know that the readLoop goroutine is complete too, + // because kexLoop itself waits for readLoop to close the startKex channel. + <-t.kexLoopDone + + return err } func (t *handshakeTransport) enterKeyExchange(otherInitPacket []byte) error { @@ -615,7 +627,8 @@ func (t *handshakeTransport) enterKeyExchange(otherInitPacket []byte) error { return err } - if t.sessionID == nil { + firstKeyExchange := t.sessionID == nil + if firstKeyExchange { t.sessionID = result.H } result.SessionID = t.sessionID @@ -626,6 +639,24 @@ func (t *handshakeTransport) enterKeyExchange(otherInitPacket []byte) error { if err = t.conn.writePacket([]byte{msgNewKeys}); err != nil { return err } + + // On the server side, after the first SSH_MSG_NEWKEYS, send a SSH_MSG_EXT_INFO + // message with the server-sig-algs extension if the client supports it. See + // RFC 8308, Sections 2.4 and 3.1. + if !isClient && firstKeyExchange && contains(clientInit.KexAlgos, "ext-info-c") { + extInfo := &extInfoMsg{ + NumExtensions: 1, + Payload: make([]byte, 0, 4+15+4+len(supportedPubKeyAuthAlgosList)), + } + extInfo.Payload = appendInt(extInfo.Payload, len("server-sig-algs")) + extInfo.Payload = append(extInfo.Payload, "server-sig-algs"...) + extInfo.Payload = appendInt(extInfo.Payload, len(supportedPubKeyAuthAlgosList)) + extInfo.Payload = append(extInfo.Payload, supportedPubKeyAuthAlgosList...) + if err := t.conn.writePacket(Marshal(extInfo)); err != nil { + return err + } + } + if packet, err := t.conn.readPacket(); err != nil { return err } else if packet[0] != msgNewKeys { diff --git a/vendor/golang.org/x/crypto/ssh/messages.go b/vendor/golang.org/x/crypto/ssh/messages.go index 19bc67c46..922032d95 100644 --- a/vendor/golang.org/x/crypto/ssh/messages.go +++ b/vendor/golang.org/x/crypto/ssh/messages.go @@ -68,7 +68,7 @@ type kexInitMsg struct { // See RFC 4253, section 8. -// Diffie-Helman +// Diffie-Hellman const msgKexDHInit = 30 type kexDHInitMsg struct { diff --git a/vendor/golang.org/x/crypto/ssh/server.go b/vendor/golang.org/x/crypto/ssh/server.go index 2260b20af..9e3870292 100644 --- a/vendor/golang.org/x/crypto/ssh/server.go +++ b/vendor/golang.org/x/crypto/ssh/server.go @@ -291,15 +291,6 @@ func (s *connection) serverHandshake(config *ServerConfig) (*Permissions, error) return perms, err } -func isAcceptableAlgo(algo string) bool { - switch algo { - case KeyAlgoRSA, KeyAlgoRSASHA256, KeyAlgoRSASHA512, KeyAlgoDSA, KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521, KeyAlgoSKECDSA256, KeyAlgoED25519, KeyAlgoSKED25519, - CertAlgoRSAv01, CertAlgoDSAv01, CertAlgoECDSA256v01, CertAlgoECDSA384v01, CertAlgoECDSA521v01, CertAlgoSKECDSA256v01, CertAlgoED25519v01, CertAlgoSKED25519v01: - return true - } - return false -} - func checkSourceAddress(addr net.Addr, sourceAddrs string) error { if addr == nil { return errors.New("ssh: no address known for client, but source-address match required") @@ -514,7 +505,7 @@ userAuthLoop: return nil, parseError(msgUserAuthRequest) } algo := string(algoBytes) - if !isAcceptableAlgo(algo) { + if !contains(supportedPubKeyAuthAlgos, underlyingAlgo(algo)) { authErr = fmt.Errorf("ssh: algorithm %q not accepted", algo) break } @@ -572,7 +563,7 @@ userAuthLoop: // algorithm name that corresponds to algo with // sig.Format. This is usually the same, but // for certs, the names differ. - if !isAcceptableAlgo(sig.Format) { + if !contains(supportedPubKeyAuthAlgos, sig.Format) { authErr = fmt.Errorf("ssh: algorithm %q not accepted", sig.Format) break } diff --git a/vendor/golang.org/x/tools/go/ast/inspector/inspector.go b/vendor/golang.org/x/tools/go/ast/inspector/inspector.go index af5e17fee..3fbfebf36 100644 --- a/vendor/golang.org/x/tools/go/ast/inspector/inspector.go +++ b/vendor/golang.org/x/tools/go/ast/inspector/inspector.go @@ -53,10 +53,13 @@ func New(files []*ast.File) *Inspector { // of an ast.Node during a traversal. type event struct { node ast.Node - typ uint64 // typeOf(node) - index int // 1 + index of corresponding pop event, or 0 if this is a pop + typ uint64 // typeOf(node) on push event, or union of typ strictly between push and pop events on pop events + index int // index of corresponding push or pop event } +// TODO: Experiment with storing only the second word of event.node (unsafe.Pointer). +// Type can be recovered from the sole bit in typ. + // Preorder visits all the nodes of the files supplied to New in // depth-first order. It calls f(n) for each node n before it visits // n's children. @@ -72,10 +75,17 @@ func (in *Inspector) Preorder(types []ast.Node, f func(ast.Node)) { mask := maskOf(types) for i := 0; i < len(in.events); { ev := in.events[i] - if ev.typ&mask != 0 { - if ev.index > 0 { + if ev.index > i { + // push + if ev.typ&mask != 0 { f(ev.node) } + pop := ev.index + if in.events[pop].typ&mask == 0 { + // Subtrees do not contain types: skip them and pop. + i = pop + 1 + continue + } } i++ } @@ -94,15 +104,24 @@ func (in *Inspector) Nodes(types []ast.Node, f func(n ast.Node, push bool) (proc mask := maskOf(types) for i := 0; i < len(in.events); { ev := in.events[i] - if ev.typ&mask != 0 { - if ev.index > 0 { - // push + if ev.index > i { + // push + pop := ev.index + if ev.typ&mask != 0 { if !f(ev.node, true) { - i = ev.index // jump to corresponding pop + 1 + i = pop + 1 // jump to corresponding pop + 1 continue } - } else { - // pop + } + if in.events[pop].typ&mask == 0 { + // Subtrees do not contain types: skip them. + i = pop + continue + } + } else { + // pop + push := ev.index + if in.events[push].typ&mask != 0 { f(ev.node, false) } } @@ -119,19 +138,26 @@ func (in *Inspector) WithStack(types []ast.Node, f func(n ast.Node, push bool, s var stack []ast.Node for i := 0; i < len(in.events); { ev := in.events[i] - if ev.index > 0 { + if ev.index > i { // push + pop := ev.index stack = append(stack, ev.node) if ev.typ&mask != 0 { if !f(ev.node, true, stack) { - i = ev.index + i = pop + 1 stack = stack[:len(stack)-1] continue } } + if in.events[pop].typ&mask == 0 { + // Subtrees does not contain types: skip them. + i = pop + continue + } } else { // pop - if ev.typ&mask != 0 { + push := ev.index + if in.events[push].typ&mask != 0 { f(ev.node, false, stack) } stack = stack[:len(stack)-1] @@ -157,25 +183,31 @@ func traverse(files []*ast.File) []event { events := make([]event, 0, capacity) var stack []event + stack = append(stack, event{}) // include an extra event so file nodes have a parent for _, f := range files { ast.Inspect(f, func(n ast.Node) bool { if n != nil { // push ev := event{ node: n, - typ: typeOf(n), + typ: 0, // temporarily used to accumulate type bits of subtree index: len(events), // push event temporarily holds own index } stack = append(stack, ev) events = append(events, ev) } else { // pop - ev := stack[len(stack)-1] - stack = stack[:len(stack)-1] + top := len(stack) - 1 + ev := stack[top] + typ := typeOf(ev.node) + push := ev.index + parent := top - 1 - events[ev.index].index = len(events) + 1 // make push refer to pop + events[push].typ = typ // set type of push + stack[parent].typ |= typ | ev.typ // parent's typ contains push and pop's typs. + events[push].index = len(events) // make push refer to pop - ev.index = 0 // turn ev into a pop event + stack = stack[:top] events = append(events, ev) } return true diff --git a/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go b/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go index 620446207..165ede0f8 100644 --- a/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go +++ b/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go @@ -27,7 +27,6 @@ import ( "go/token" "go/types" "io" - "io/ioutil" "os/exec" "golang.org/x/tools/internal/gcimporter" @@ -85,6 +84,19 @@ func NewReader(r io.Reader) (io.Reader, error) { } } +// readAll works the same way as io.ReadAll, but avoids allocations and copies +// by preallocating a byte slice of the necessary size if the size is known up +// front. This is always possible when the input is an archive. In that case, +// NewReader will return the known size using an io.LimitedReader. +func readAll(r io.Reader) ([]byte, error) { + if lr, ok := r.(*io.LimitedReader); ok { + data := make([]byte, lr.N) + _, err := io.ReadFull(lr, data) + return data, err + } + return io.ReadAll(r) +} + // Read reads export data from in, decodes it, and returns type // information for the package. // @@ -102,7 +114,7 @@ func NewReader(r io.Reader) (io.Reader, error) { // // On return, the state of the reader is undefined. func Read(in io.Reader, fset *token.FileSet, imports map[string]*types.Package, path string) (*types.Package, error) { - data, err := ioutil.ReadAll(in) + data, err := readAll(in) if err != nil { return nil, fmt.Errorf("reading export data for %q: %v", path, err) } @@ -111,12 +123,6 @@ func Read(in io.Reader, fset *token.FileSet, imports map[string]*types.Package, return nil, fmt.Errorf("can't read export data for %q directly from an archive file (call gcexportdata.NewReader first to extract export data)", path) } - // The App Engine Go runtime v1.6 uses the old export data format. - // TODO(adonovan): delete once v1.7 has been around for a while. - if bytes.HasPrefix(data, []byte("package ")) { - return gcimporter.ImportData(imports, path, path, bytes.NewReader(data)) - } - // The indexed export format starts with an 'i'; the older // binary export format starts with a 'c', 'd', or 'v' // (from "version"). Select appropriate importer. @@ -165,7 +171,7 @@ func Write(out io.Writer, fset *token.FileSet, pkg *types.Package) error { // // Experimental: This API is experimental and may change in the future. func ReadBundle(in io.Reader, fset *token.FileSet, imports map[string]*types.Package) ([]*types.Package, error) { - data, err := ioutil.ReadAll(in) + data, err := readAll(in) if err != nil { return nil, fmt.Errorf("reading export bundle: %v", err) } diff --git a/vendor/golang.org/x/tools/go/packages/packages.go b/vendor/golang.org/x/tools/go/packages/packages.go index 9df20919b..0f1505b80 100644 --- a/vendor/golang.org/x/tools/go/packages/packages.go +++ b/vendor/golang.org/x/tools/go/packages/packages.go @@ -15,6 +15,7 @@ import ( "go/scanner" "go/token" "go/types" + "io" "io/ioutil" "log" "os" @@ -877,12 +878,19 @@ func (ld *loader) loadPackage(lpkg *loaderPackage) { // never has to create a types.Package for an indirect dependency, // which would then require that such created packages be explicitly // inserted back into the Import graph as a final step after export data loading. + // (Hence this return is after the Types assignment.) // The Diamond test exercises this case. if !lpkg.needtypes && !lpkg.needsrc { return } if !lpkg.needsrc { - ld.loadFromExportData(lpkg) + if err := ld.loadFromExportData(lpkg); err != nil { + lpkg.Errors = append(lpkg.Errors, Error{ + Pos: "-", + Msg: err.Error(), + Kind: UnknownError, // e.g. can't find/open/parse export data + }) + } return // not a source package, don't get syntax trees } @@ -950,6 +958,8 @@ func (ld *loader) loadPackage(lpkg *loaderPackage) { // - golang.org/issue/52078 (flag to set release tags) // - golang.org/issue/50825 (gopls legacy version support) // - golang.org/issue/55883 (go/packages confusing error) + // + // Should we assert a hard minimum of (currently) go1.16 here? var runtimeVersion int if _, err := fmt.Sscanf(runtime.Version(), "go1.%d", &runtimeVersion); err == nil && runtimeVersion < lpkg.goVersion { defer func() { @@ -967,7 +977,8 @@ func (ld *loader) loadPackage(lpkg *loaderPackage) { // The config requested loading sources and types, but sources are missing. // Add an error to the package and fall back to loading from export data. appendError(Error{"-", fmt.Sprintf("sources missing for package %s", lpkg.ID), ParseError}) - ld.loadFromExportData(lpkg) + _ = ld.loadFromExportData(lpkg) // ignore any secondary errors + return // can't get syntax trees for this package } @@ -1191,9 +1202,10 @@ func sameFile(x, y string) bool { return false } -// loadFromExportData returns type information for the specified +// loadFromExportData ensures that type information is present for the specified // package, loading it from an export data file on the first request. -func (ld *loader) loadFromExportData(lpkg *loaderPackage) (*types.Package, error) { +// On success it sets lpkg.Types to a new Package. +func (ld *loader) loadFromExportData(lpkg *loaderPackage) error { if lpkg.PkgPath == "" { log.Fatalf("internal error: Package %s has no PkgPath", lpkg) } @@ -1204,8 +1216,8 @@ func (ld *loader) loadFromExportData(lpkg *loaderPackage) (*types.Package, error // must be sequential. (Finer-grained locking would require // changes to the gcexportdata API.) // - // The exportMu lock guards the Package.Pkg field and the - // types.Package it points to, for each Package in the graph. + // The exportMu lock guards the lpkg.Types field and the + // types.Package it points to, for each loaderPackage in the graph. // // Not all accesses to Package.Pkg need to be protected by exportMu: // graph ordering ensures that direct dependencies of source @@ -1214,18 +1226,18 @@ func (ld *loader) loadFromExportData(lpkg *loaderPackage) (*types.Package, error defer ld.exportMu.Unlock() if tpkg := lpkg.Types; tpkg != nil && tpkg.Complete() { - return tpkg, nil // cache hit + return nil // cache hit } lpkg.IllTyped = true // fail safe if lpkg.ExportFile == "" { // Errors while building export data will have been printed to stderr. - return nil, fmt.Errorf("no export data file") + return fmt.Errorf("no export data file") } f, err := os.Open(lpkg.ExportFile) if err != nil { - return nil, err + return err } defer f.Close() @@ -1237,7 +1249,7 @@ func (ld *loader) loadFromExportData(lpkg *loaderPackage) (*types.Package, error // queries.) r, err := gcexportdata.NewReader(f) if err != nil { - return nil, fmt.Errorf("reading %s: %v", lpkg.ExportFile, err) + return fmt.Errorf("reading %s: %v", lpkg.ExportFile, err) } // Build the view. @@ -1281,7 +1293,7 @@ func (ld *loader) loadFromExportData(lpkg *loaderPackage) (*types.Package, error // (May modify incomplete packages in view but not create new ones.) tpkg, err := gcexportdata.Read(r, ld.Fset, view, lpkg.PkgPath) if err != nil { - return nil, fmt.Errorf("reading %s: %v", lpkg.ExportFile, err) + return fmt.Errorf("reading %s: %v", lpkg.ExportFile, err) } if _, ok := view["go.shape"]; ok { // Account for the pseudopackage "go.shape" that gets @@ -1294,8 +1306,7 @@ func (ld *loader) loadFromExportData(lpkg *loaderPackage) (*types.Package, error lpkg.Types = tpkg lpkg.IllTyped = false - - return tpkg, nil + return nil } // impliedLoadMode returns loadMode with its dependencies. @@ -1311,3 +1322,5 @@ func impliedLoadMode(loadMode LoadMode) LoadMode { func usesExportData(cfg *Config) bool { return cfg.Mode&NeedExportFile != 0 || cfg.Mode&NeedTypes != 0 && cfg.Mode&NeedDeps == 0 } + +var _ interface{} = io.Discard // assert build toolchain is go1.16 or later diff --git a/vendor/golang.org/x/tools/internal/gcimporter/gcimporter.go b/vendor/golang.org/x/tools/internal/gcimporter/gcimporter.go index 1faaa3652..0372fb3a6 100644 --- a/vendor/golang.org/x/tools/internal/gcimporter/gcimporter.go +++ b/vendor/golang.org/x/tools/internal/gcimporter/gcimporter.go @@ -2,9 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// This file is a modified copy of $GOROOT/src/go/internal/gcimporter/gcimporter.go, -// but it also contains the original source-based importer code for Go1.6. -// Once we stop supporting 1.6, we can remove that code. +// This file is a reduced copy of $GOROOT/src/go/internal/gcimporter/gcimporter.go. // Package gcimporter provides various functions for reading // gc-generated object files that can be used to implement the @@ -14,10 +12,8 @@ package gcimporter // import "golang.org/x/tools/internal/gcimporter" import ( "bufio" "bytes" - "errors" "fmt" "go/build" - "go/constant" "go/token" "go/types" "io" @@ -25,11 +21,8 @@ import ( "os" "os/exec" "path/filepath" - "sort" - "strconv" "strings" "sync" - "text/scanner" ) const ( @@ -154,37 +147,6 @@ func FindPkg(path, srcDir string) (filename, id string) { return } -// ImportData imports a package by reading the gc-generated export data, -// adds the corresponding package object to the packages map indexed by id, -// and returns the object. -// -// The packages map must contains all packages already imported. The data -// reader position must be the beginning of the export data section. The -// filename is only used in error messages. -// -// If packages[id] contains the completely imported package, that package -// can be used directly, and there is no need to call this function (but -// there is also no harm but for extra time used). -func ImportData(packages map[string]*types.Package, filename, id string, data io.Reader) (pkg *types.Package, err error) { - // support for parser error handling - defer func() { - switch r := recover().(type) { - case nil: - // nothing to do - case importError: - err = r - default: - panic(r) // internal error - } - }() - - var p parser - p.init(filename, id, data, packages) - pkg = p.parseExport() - - return -} - // Import imports a gc-generated package given its import path and srcDir, adds // the corresponding package object to the packages map, and returns the object. // The packages map must contain all packages already imported. @@ -245,15 +207,6 @@ func Import(packages map[string]*types.Package, path, srcDir string, lookup func } switch hdr { - case "$$\n": - // Work-around if we don't have a filename; happens only if lookup != nil. - // Either way, the filename is only needed for importer error messages, so - // this is fine. - if filename == "" { - filename = path - } - return ImportData(packages, filename, id, buf) - case "$$B\n": var data []byte data, err = ioutil.ReadAll(buf) @@ -298,319 +251,6 @@ func Import(packages map[string]*types.Package, path, srcDir string, lookup func return } -// ---------------------------------------------------------------------------- -// Parser - -// TODO(gri) Imported objects don't have position information. -// Ideally use the debug table line info; alternatively -// create some fake position (or the position of the -// import). That way error messages referring to imported -// objects can print meaningful information. - -// parser parses the exports inside a gc compiler-produced -// object/archive file and populates its scope with the results. -type parser struct { - scanner scanner.Scanner - tok rune // current token - lit string // literal string; only valid for Ident, Int, String tokens - id string // package id of imported package - sharedPkgs map[string]*types.Package // package id -> package object (across importer) - localPkgs map[string]*types.Package // package id -> package object (just this package) -} - -func (p *parser) init(filename, id string, src io.Reader, packages map[string]*types.Package) { - p.scanner.Init(src) - p.scanner.Error = func(_ *scanner.Scanner, msg string) { p.error(msg) } - p.scanner.Mode = scanner.ScanIdents | scanner.ScanInts | scanner.ScanChars | scanner.ScanStrings | scanner.ScanComments | scanner.SkipComments - p.scanner.Whitespace = 1<<'\t' | 1<<' ' - p.scanner.Filename = filename // for good error messages - p.next() - p.id = id - p.sharedPkgs = packages - if debug { - // check consistency of packages map - for _, pkg := range packages { - if pkg.Name() == "" { - fmt.Printf("no package name for %s\n", pkg.Path()) - } - } - } -} - -func (p *parser) next() { - p.tok = p.scanner.Scan() - switch p.tok { - case scanner.Ident, scanner.Int, scanner.Char, scanner.String, '·': - p.lit = p.scanner.TokenText() - default: - p.lit = "" - } - if debug { - fmt.Printf("%s: %q -> %q\n", scanner.TokenString(p.tok), p.scanner.TokenText(), p.lit) - } -} - -func declTypeName(pkg *types.Package, name string) *types.TypeName { - scope := pkg.Scope() - if obj := scope.Lookup(name); obj != nil { - return obj.(*types.TypeName) - } - obj := types.NewTypeName(token.NoPos, pkg, name, nil) - // a named type may be referred to before the underlying type - // is known - set it up - types.NewNamed(obj, nil, nil) - scope.Insert(obj) - return obj -} - -// ---------------------------------------------------------------------------- -// Error handling - -// Internal errors are boxed as importErrors. -type importError struct { - pos scanner.Position - err error -} - -func (e importError) Error() string { - return fmt.Sprintf("import error %s (byte offset = %d): %s", e.pos, e.pos.Offset, e.err) -} - -func (p *parser) error(err interface{}) { - if s, ok := err.(string); ok { - err = errors.New(s) - } - // panic with a runtime.Error if err is not an error - panic(importError{p.scanner.Pos(), err.(error)}) -} - -func (p *parser) errorf(format string, args ...interface{}) { - p.error(fmt.Sprintf(format, args...)) -} - -func (p *parser) expect(tok rune) string { - lit := p.lit - if p.tok != tok { - p.errorf("expected %s, got %s (%s)", scanner.TokenString(tok), scanner.TokenString(p.tok), lit) - } - p.next() - return lit -} - -func (p *parser) expectSpecial(tok string) { - sep := 'x' // not white space - i := 0 - for i < len(tok) && p.tok == rune(tok[i]) && sep > ' ' { - sep = p.scanner.Peek() // if sep <= ' ', there is white space before the next token - p.next() - i++ - } - if i < len(tok) { - p.errorf("expected %q, got %q", tok, tok[0:i]) - } -} - -func (p *parser) expectKeyword(keyword string) { - lit := p.expect(scanner.Ident) - if lit != keyword { - p.errorf("expected keyword %s, got %q", keyword, lit) - } -} - -// ---------------------------------------------------------------------------- -// Qualified and unqualified names - -// parsePackageID parses a PackageId: -// -// PackageId = string_lit . -func (p *parser) parsePackageID() string { - id, err := strconv.Unquote(p.expect(scanner.String)) - if err != nil { - p.error(err) - } - // id == "" stands for the imported package id - // (only known at time of package installation) - if id == "" { - id = p.id - } - return id -} - -// parsePackageName parse a PackageName: -// -// PackageName = ident . -func (p *parser) parsePackageName() string { - return p.expect(scanner.Ident) -} - -// parseDotIdent parses a dotIdentifier: -// -// dotIdentifier = ( ident | '·' ) { ident | int | '·' } . -func (p *parser) parseDotIdent() string { - ident := "" - if p.tok != scanner.Int { - sep := 'x' // not white space - for (p.tok == scanner.Ident || p.tok == scanner.Int || p.tok == '·') && sep > ' ' { - ident += p.lit - sep = p.scanner.Peek() // if sep <= ' ', there is white space before the next token - p.next() - } - } - if ident == "" { - p.expect(scanner.Ident) // use expect() for error handling - } - return ident -} - -// parseQualifiedName parses a QualifiedName: -// -// QualifiedName = "@" PackageId "." ( "?" | dotIdentifier ) . -func (p *parser) parseQualifiedName() (id, name string) { - p.expect('@') - id = p.parsePackageID() - p.expect('.') - // Per rev f280b8a485fd (10/2/2013), qualified names may be used for anonymous fields. - if p.tok == '?' { - p.next() - } else { - name = p.parseDotIdent() - } - return -} - -// getPkg returns the package for a given id. If the package is -// not found, create the package and add it to the p.localPkgs -// and p.sharedPkgs maps. name is the (expected) name of the -// package. If name == "", the package name is expected to be -// set later via an import clause in the export data. -// -// id identifies a package, usually by a canonical package path like -// "encoding/json" but possibly by a non-canonical import path like -// "./json". -func (p *parser) getPkg(id, name string) *types.Package { - // package unsafe is not in the packages maps - handle explicitly - if id == "unsafe" { - return types.Unsafe - } - - pkg := p.localPkgs[id] - if pkg == nil { - // first import of id from this package - pkg = p.sharedPkgs[id] - if pkg == nil { - // first import of id by this importer; - // add (possibly unnamed) pkg to shared packages - pkg = types.NewPackage(id, name) - p.sharedPkgs[id] = pkg - } - // add (possibly unnamed) pkg to local packages - if p.localPkgs == nil { - p.localPkgs = make(map[string]*types.Package) - } - p.localPkgs[id] = pkg - } else if name != "" { - // package exists already and we have an expected package name; - // make sure names match or set package name if necessary - if pname := pkg.Name(); pname == "" { - pkg.SetName(name) - } else if pname != name { - p.errorf("%s package name mismatch: %s (given) vs %s (expected)", id, pname, name) - } - } - return pkg -} - -// parseExportedName is like parseQualifiedName, but -// the package id is resolved to an imported *types.Package. -func (p *parser) parseExportedName() (pkg *types.Package, name string) { - id, name := p.parseQualifiedName() - pkg = p.getPkg(id, "") - return -} - -// ---------------------------------------------------------------------------- -// Types - -// parseBasicType parses a BasicType: -// -// BasicType = identifier . -func (p *parser) parseBasicType() types.Type { - id := p.expect(scanner.Ident) - obj := types.Universe.Lookup(id) - if obj, ok := obj.(*types.TypeName); ok { - return obj.Type() - } - p.errorf("not a basic type: %s", id) - return nil -} - -// parseArrayType parses an ArrayType: -// -// ArrayType = "[" int_lit "]" Type . -func (p *parser) parseArrayType(parent *types.Package) types.Type { - // "[" already consumed and lookahead known not to be "]" - lit := p.expect(scanner.Int) - p.expect(']') - elem := p.parseType(parent) - n, err := strconv.ParseInt(lit, 10, 64) - if err != nil { - p.error(err) - } - return types.NewArray(elem, n) -} - -// parseMapType parses a MapType: -// -// MapType = "map" "[" Type "]" Type . -func (p *parser) parseMapType(parent *types.Package) types.Type { - p.expectKeyword("map") - p.expect('[') - key := p.parseType(parent) - p.expect(']') - elem := p.parseType(parent) - return types.NewMap(key, elem) -} - -// parseName parses a Name: -// -// Name = identifier | "?" | QualifiedName . -// -// For unqualified and anonymous names, the returned package is the parent -// package unless parent == nil, in which case the returned package is the -// package being imported. (The parent package is not nil if the name -// is an unqualified struct field or interface method name belonging to a -// type declared in another package.) -// -// For qualified names, the returned package is nil (and not created if -// it doesn't exist yet) unless materializePkg is set (which creates an -// unnamed package with valid package path). In the latter case, a -// subsequent import clause is expected to provide a name for the package. -func (p *parser) parseName(parent *types.Package, materializePkg bool) (pkg *types.Package, name string) { - pkg = parent - if pkg == nil { - pkg = p.sharedPkgs[p.id] - } - switch p.tok { - case scanner.Ident: - name = p.lit - p.next() - case '?': - // anonymous - p.next() - case '@': - // exported name prefixed with package path - pkg = nil - var id string - id, name = p.parseQualifiedName() - if materializePkg { - pkg = p.getPkg(id, "") - } - default: - p.error("name expected") - } - return -} - func deref(typ types.Type) types.Type { if p, _ := typ.(*types.Pointer); p != nil { return p.Elem() @@ -618,563 +258,6 @@ func deref(typ types.Type) types.Type { return typ } -// parseField parses a Field: -// -// Field = Name Type [ string_lit ] . -func (p *parser) parseField(parent *types.Package) (*types.Var, string) { - pkg, name := p.parseName(parent, true) - - if name == "_" { - // Blank fields should be package-qualified because they - // are unexported identifiers, but gc does not qualify them. - // Assuming that the ident belongs to the current package - // causes types to change during re-exporting, leading - // to spurious "can't assign A to B" errors from go/types. - // As a workaround, pretend all blank fields belong - // to the same unique dummy package. - const blankpkg = "<_>" - pkg = p.getPkg(blankpkg, blankpkg) - } - - typ := p.parseType(parent) - anonymous := false - if name == "" { - // anonymous field - typ must be T or *T and T must be a type name - switch typ := deref(typ).(type) { - case *types.Basic: // basic types are named types - pkg = nil // objects defined in Universe scope have no package - name = typ.Name() - case *types.Named: - name = typ.Obj().Name() - default: - p.errorf("anonymous field expected") - } - anonymous = true - } - tag := "" - if p.tok == scanner.String { - s := p.expect(scanner.String) - var err error - tag, err = strconv.Unquote(s) - if err != nil { - p.errorf("invalid struct tag %s: %s", s, err) - } - } - return types.NewField(token.NoPos, pkg, name, typ, anonymous), tag -} - -// parseStructType parses a StructType: -// -// StructType = "struct" "{" [ FieldList ] "}" . -// FieldList = Field { ";" Field } . -func (p *parser) parseStructType(parent *types.Package) types.Type { - var fields []*types.Var - var tags []string - - p.expectKeyword("struct") - p.expect('{') - for i := 0; p.tok != '}' && p.tok != scanner.EOF; i++ { - if i > 0 { - p.expect(';') - } - fld, tag := p.parseField(parent) - if tag != "" && tags == nil { - tags = make([]string, i) - } - if tags != nil { - tags = append(tags, tag) - } - fields = append(fields, fld) - } - p.expect('}') - - return types.NewStruct(fields, tags) -} - -// parseParameter parses a Parameter: -// -// Parameter = ( identifier | "?" ) [ "..." ] Type [ string_lit ] . -func (p *parser) parseParameter() (par *types.Var, isVariadic bool) { - _, name := p.parseName(nil, false) - // remove gc-specific parameter numbering - if i := strings.Index(name, "·"); i >= 0 { - name = name[:i] - } - if p.tok == '.' { - p.expectSpecial("...") - isVariadic = true - } - typ := p.parseType(nil) - if isVariadic { - typ = types.NewSlice(typ) - } - // ignore argument tag (e.g. "noescape") - if p.tok == scanner.String { - p.next() - } - // TODO(gri) should we provide a package? - par = types.NewVar(token.NoPos, nil, name, typ) - return -} - -// parseParameters parses a Parameters: -// -// Parameters = "(" [ ParameterList ] ")" . -// ParameterList = { Parameter "," } Parameter . -func (p *parser) parseParameters() (list []*types.Var, isVariadic bool) { - p.expect('(') - for p.tok != ')' && p.tok != scanner.EOF { - if len(list) > 0 { - p.expect(',') - } - par, variadic := p.parseParameter() - list = append(list, par) - if variadic { - if isVariadic { - p.error("... not on final argument") - } - isVariadic = true - } - } - p.expect(')') - - return -} - -// parseSignature parses a Signature: -// -// Signature = Parameters [ Result ] . -// Result = Type | Parameters . -func (p *parser) parseSignature(recv *types.Var) *types.Signature { - params, isVariadic := p.parseParameters() - - // optional result type - var results []*types.Var - if p.tok == '(' { - var variadic bool - results, variadic = p.parseParameters() - if variadic { - p.error("... not permitted on result type") - } - } - - return types.NewSignature(recv, types.NewTuple(params...), types.NewTuple(results...), isVariadic) -} - -// parseInterfaceType parses an InterfaceType: -// -// InterfaceType = "interface" "{" [ MethodList ] "}" . -// MethodList = Method { ";" Method } . -// Method = Name Signature . -// -// The methods of embedded interfaces are always "inlined" -// by the compiler and thus embedded interfaces are never -// visible in the export data. -func (p *parser) parseInterfaceType(parent *types.Package) types.Type { - var methods []*types.Func - - p.expectKeyword("interface") - p.expect('{') - for i := 0; p.tok != '}' && p.tok != scanner.EOF; i++ { - if i > 0 { - p.expect(';') - } - pkg, name := p.parseName(parent, true) - sig := p.parseSignature(nil) - methods = append(methods, types.NewFunc(token.NoPos, pkg, name, sig)) - } - p.expect('}') - - // Complete requires the type's embedded interfaces to be fully defined, - // but we do not define any - return newInterface(methods, nil).Complete() -} - -// parseChanType parses a ChanType: -// -// ChanType = ( "chan" [ "<-" ] | "<-" "chan" ) Type . -func (p *parser) parseChanType(parent *types.Package) types.Type { - dir := types.SendRecv - if p.tok == scanner.Ident { - p.expectKeyword("chan") - if p.tok == '<' { - p.expectSpecial("<-") - dir = types.SendOnly - } - } else { - p.expectSpecial("<-") - p.expectKeyword("chan") - dir = types.RecvOnly - } - elem := p.parseType(parent) - return types.NewChan(dir, elem) -} - -// parseType parses a Type: -// -// Type = -// BasicType | TypeName | ArrayType | SliceType | StructType | -// PointerType | FuncType | InterfaceType | MapType | ChanType | -// "(" Type ")" . -// -// BasicType = ident . -// TypeName = ExportedName . -// SliceType = "[" "]" Type . -// PointerType = "*" Type . -// FuncType = "func" Signature . -func (p *parser) parseType(parent *types.Package) types.Type { - switch p.tok { - case scanner.Ident: - switch p.lit { - default: - return p.parseBasicType() - case "struct": - return p.parseStructType(parent) - case "func": - // FuncType - p.next() - return p.parseSignature(nil) - case "interface": - return p.parseInterfaceType(parent) - case "map": - return p.parseMapType(parent) - case "chan": - return p.parseChanType(parent) - } - case '@': - // TypeName - pkg, name := p.parseExportedName() - return declTypeName(pkg, name).Type() - case '[': - p.next() // look ahead - if p.tok == ']' { - // SliceType - p.next() - return types.NewSlice(p.parseType(parent)) - } - return p.parseArrayType(parent) - case '*': - // PointerType - p.next() - return types.NewPointer(p.parseType(parent)) - case '<': - return p.parseChanType(parent) - case '(': - // "(" Type ")" - p.next() - typ := p.parseType(parent) - p.expect(')') - return typ - } - p.errorf("expected type, got %s (%q)", scanner.TokenString(p.tok), p.lit) - return nil -} - -// ---------------------------------------------------------------------------- -// Declarations - -// parseImportDecl parses an ImportDecl: -// -// ImportDecl = "import" PackageName PackageId . -func (p *parser) parseImportDecl() { - p.expectKeyword("import") - name := p.parsePackageName() - p.getPkg(p.parsePackageID(), name) -} - -// parseInt parses an int_lit: -// -// int_lit = [ "+" | "-" ] { "0" ... "9" } . -func (p *parser) parseInt() string { - s := "" - switch p.tok { - case '-': - s = "-" - p.next() - case '+': - p.next() - } - return s + p.expect(scanner.Int) -} - -// parseNumber parses a number: -// -// number = int_lit [ "p" int_lit ] . -func (p *parser) parseNumber() (typ *types.Basic, val constant.Value) { - // mantissa - mant := constant.MakeFromLiteral(p.parseInt(), token.INT, 0) - if mant == nil { - panic("invalid mantissa") - } - - if p.lit == "p" { - // exponent (base 2) - p.next() - exp, err := strconv.ParseInt(p.parseInt(), 10, 0) - if err != nil { - p.error(err) - } - if exp < 0 { - denom := constant.MakeInt64(1) - denom = constant.Shift(denom, token.SHL, uint(-exp)) - typ = types.Typ[types.UntypedFloat] - val = constant.BinaryOp(mant, token.QUO, denom) - return - } - if exp > 0 { - mant = constant.Shift(mant, token.SHL, uint(exp)) - } - typ = types.Typ[types.UntypedFloat] - val = mant - return - } - - typ = types.Typ[types.UntypedInt] - val = mant - return -} - -// parseConstDecl parses a ConstDecl: -// -// ConstDecl = "const" ExportedName [ Type ] "=" Literal . -// Literal = bool_lit | int_lit | float_lit | complex_lit | rune_lit | string_lit . -// bool_lit = "true" | "false" . -// complex_lit = "(" float_lit "+" float_lit "i" ")" . -// rune_lit = "(" int_lit "+" int_lit ")" . -// string_lit = `"` { unicode_char } `"` . -func (p *parser) parseConstDecl() { - p.expectKeyword("const") - pkg, name := p.parseExportedName() - - var typ0 types.Type - if p.tok != '=' { - // constant types are never structured - no need for parent type - typ0 = p.parseType(nil) - } - - p.expect('=') - var typ types.Type - var val constant.Value - switch p.tok { - case scanner.Ident: - // bool_lit - if p.lit != "true" && p.lit != "false" { - p.error("expected true or false") - } - typ = types.Typ[types.UntypedBool] - val = constant.MakeBool(p.lit == "true") - p.next() - - case '-', scanner.Int: - // int_lit - typ, val = p.parseNumber() - - case '(': - // complex_lit or rune_lit - p.next() - if p.tok == scanner.Char { - p.next() - p.expect('+') - typ = types.Typ[types.UntypedRune] - _, val = p.parseNumber() - p.expect(')') - break - } - _, re := p.parseNumber() - p.expect('+') - _, im := p.parseNumber() - p.expectKeyword("i") - p.expect(')') - typ = types.Typ[types.UntypedComplex] - val = constant.BinaryOp(re, token.ADD, constant.MakeImag(im)) - - case scanner.Char: - // rune_lit - typ = types.Typ[types.UntypedRune] - val = constant.MakeFromLiteral(p.lit, token.CHAR, 0) - p.next() - - case scanner.String: - // string_lit - typ = types.Typ[types.UntypedString] - val = constant.MakeFromLiteral(p.lit, token.STRING, 0) - p.next() - - default: - p.errorf("expected literal got %s", scanner.TokenString(p.tok)) - } - - if typ0 == nil { - typ0 = typ - } - - pkg.Scope().Insert(types.NewConst(token.NoPos, pkg, name, typ0, val)) -} - -// parseTypeDecl parses a TypeDecl: -// -// TypeDecl = "type" ExportedName Type . -func (p *parser) parseTypeDecl() { - p.expectKeyword("type") - pkg, name := p.parseExportedName() - obj := declTypeName(pkg, name) - - // The type object may have been imported before and thus already - // have a type associated with it. We still need to parse the type - // structure, but throw it away if the object already has a type. - // This ensures that all imports refer to the same type object for - // a given type declaration. - typ := p.parseType(pkg) - - if name := obj.Type().(*types.Named); name.Underlying() == nil { - name.SetUnderlying(typ) - } -} - -// parseVarDecl parses a VarDecl: -// -// VarDecl = "var" ExportedName Type . -func (p *parser) parseVarDecl() { - p.expectKeyword("var") - pkg, name := p.parseExportedName() - typ := p.parseType(pkg) - pkg.Scope().Insert(types.NewVar(token.NoPos, pkg, name, typ)) -} - -// parseFunc parses a Func: -// -// Func = Signature [ Body ] . -// Body = "{" ... "}" . -func (p *parser) parseFunc(recv *types.Var) *types.Signature { - sig := p.parseSignature(recv) - if p.tok == '{' { - p.next() - for i := 1; i > 0; p.next() { - switch p.tok { - case '{': - i++ - case '}': - i-- - } - } - } - return sig -} - -// parseMethodDecl parses a MethodDecl: -// -// MethodDecl = "func" Receiver Name Func . -// Receiver = "(" ( identifier | "?" ) [ "*" ] ExportedName ")" . -func (p *parser) parseMethodDecl() { - // "func" already consumed - p.expect('(') - recv, _ := p.parseParameter() // receiver - p.expect(')') - - // determine receiver base type object - base := deref(recv.Type()).(*types.Named) - - // parse method name, signature, and possibly inlined body - _, name := p.parseName(nil, false) - sig := p.parseFunc(recv) - - // methods always belong to the same package as the base type object - pkg := base.Obj().Pkg() - - // add method to type unless type was imported before - // and method exists already - // TODO(gri) This leads to a quadratic algorithm - ok for now because method counts are small. - base.AddMethod(types.NewFunc(token.NoPos, pkg, name, sig)) -} - -// parseFuncDecl parses a FuncDecl: -// -// FuncDecl = "func" ExportedName Func . -func (p *parser) parseFuncDecl() { - // "func" already consumed - pkg, name := p.parseExportedName() - typ := p.parseFunc(nil) - pkg.Scope().Insert(types.NewFunc(token.NoPos, pkg, name, typ)) -} - -// parseDecl parses a Decl: -// -// Decl = [ ImportDecl | ConstDecl | TypeDecl | VarDecl | FuncDecl | MethodDecl ] "\n" . -func (p *parser) parseDecl() { - if p.tok == scanner.Ident { - switch p.lit { - case "import": - p.parseImportDecl() - case "const": - p.parseConstDecl() - case "type": - p.parseTypeDecl() - case "var": - p.parseVarDecl() - case "func": - p.next() // look ahead - if p.tok == '(' { - p.parseMethodDecl() - } else { - p.parseFuncDecl() - } - } - } - p.expect('\n') -} - -// ---------------------------------------------------------------------------- -// Export - -// parseExport parses an Export: -// -// Export = "PackageClause { Decl } "$$" . -// PackageClause = "package" PackageName [ "safe" ] "\n" . -func (p *parser) parseExport() *types.Package { - p.expectKeyword("package") - name := p.parsePackageName() - if p.tok == scanner.Ident && p.lit == "safe" { - // package was compiled with -u option - ignore - p.next() - } - p.expect('\n') - - pkg := p.getPkg(p.id, name) - - for p.tok != '$' && p.tok != scanner.EOF { - p.parseDecl() - } - - if ch := p.scanner.Peek(); p.tok != '$' || ch != '$' { - // don't call next()/expect() since reading past the - // export data may cause scanner errors (e.g. NUL chars) - p.errorf("expected '$$', got %s %c", scanner.TokenString(p.tok), ch) - } - - if n := p.scanner.ErrorCount; n != 0 { - p.errorf("expected no scanner errors, got %d", n) - } - - // Record all locally referenced packages as imports. - var imports []*types.Package - for id, pkg2 := range p.localPkgs { - if pkg2.Name() == "" { - p.errorf("%s package has no name", id) - } - if id == p.id { - continue // avoid self-edge - } - imports = append(imports, pkg2) - } - sort.Sort(byPath(imports)) - pkg.SetImports(imports) - - // package was imported completely and without errors - pkg.MarkComplete() - - return pkg -} - type byPath []*types.Package func (a byPath) Len() int { return len(a) } diff --git a/vendor/golang.org/x/tools/internal/gcimporter/iexport.go b/vendor/golang.org/x/tools/internal/gcimporter/iexport.go index 7d90f00f3..ba53cdcdd 100644 --- a/vendor/golang.org/x/tools/internal/gcimporter/iexport.go +++ b/vendor/golang.org/x/tools/internal/gcimporter/iexport.go @@ -22,6 +22,7 @@ import ( "strconv" "strings" + "golang.org/x/tools/internal/tokeninternal" "golang.org/x/tools/internal/typeparams" ) @@ -138,6 +139,17 @@ func iexportCommon(out io.Writer, fset *token.FileSet, bundle, shallow bool, ver p.doDecl(p.declTodo.popHead()) } + // Produce index of offset of each file record in files. + var files intWriter + var fileOffset []uint64 // fileOffset[i] is offset in files of file encoded as i + if p.shallow { + fileOffset = make([]uint64, len(p.fileInfos)) + for i, info := range p.fileInfos { + fileOffset[i] = uint64(files.Len()) + p.encodeFile(&files, info.file, info.needed) + } + } + // Append indices to data0 section. dataLen := uint64(p.data0.Len()) w := p.newWriter() @@ -163,16 +175,75 @@ func iexportCommon(out io.Writer, fset *token.FileSet, bundle, shallow bool, ver } hdr.uint64(uint64(p.version)) hdr.uint64(uint64(p.strings.Len())) + if p.shallow { + hdr.uint64(uint64(files.Len())) + hdr.uint64(uint64(len(fileOffset))) + for _, offset := range fileOffset { + hdr.uint64(offset) + } + } hdr.uint64(dataLen) // Flush output. io.Copy(out, &hdr) io.Copy(out, &p.strings) + if p.shallow { + io.Copy(out, &files) + } io.Copy(out, &p.data0) return nil } +// encodeFile writes to w a representation of the file sufficient to +// faithfully restore position information about all needed offsets. +// Mutates the needed array. +func (p *iexporter) encodeFile(w *intWriter, file *token.File, needed []uint64) { + _ = needed[0] // precondition: needed is non-empty + + w.uint64(p.stringOff(file.Name())) + + size := uint64(file.Size()) + w.uint64(size) + + // Sort the set of needed offsets. Duplicates are harmless. + sort.Slice(needed, func(i, j int) bool { return needed[i] < needed[j] }) + + lines := tokeninternal.GetLines(file) // byte offset of each line start + w.uint64(uint64(len(lines))) + + // Rather than record the entire array of line start offsets, + // we save only a sparse list of (index, offset) pairs for + // the start of each line that contains a needed position. + var sparse [][2]int // (index, offset) pairs +outer: + for i, lineStart := range lines { + lineEnd := size + if i < len(lines)-1 { + lineEnd = uint64(lines[i+1]) + } + // Does this line contains a needed offset? + if needed[0] < lineEnd { + sparse = append(sparse, [2]int{i, lineStart}) + for needed[0] < lineEnd { + needed = needed[1:] + if len(needed) == 0 { + break outer + } + } + } + } + + // Delta-encode the columns. + w.uint64(uint64(len(sparse))) + var prev [2]int + for _, pair := range sparse { + w.uint64(uint64(pair[0] - prev[0])) + w.uint64(uint64(pair[1] - prev[1])) + prev = pair + } +} + // writeIndex writes out an object index. mainIndex indicates whether // we're writing out the main index, which is also read by // non-compiler tools and includes a complete package description @@ -255,6 +326,12 @@ type iexporter struct { strings intWriter stringIndex map[string]uint64 + // In shallow mode, object positions are encoded as (file, offset). + // Each file is recorded as a line-number table. + // Only the lines of needed positions are saved faithfully. + fileInfo map[*token.File]uint64 // value is index in fileInfos + fileInfos []*filePositions + data0 intWriter declIndex map[types.Object]uint64 tparamNames map[types.Object]string // typeparam->exported name @@ -263,6 +340,11 @@ type iexporter struct { indent int // for tracing support } +type filePositions struct { + file *token.File + needed []uint64 // unordered list of needed file offsets +} + func (p *iexporter) trace(format string, args ...interface{}) { if !trace { // Call sites should also be guarded, but having this check here allows @@ -286,6 +368,25 @@ func (p *iexporter) stringOff(s string) uint64 { return off } +// fileIndexAndOffset returns the index of the token.File and the byte offset of pos within it. +func (p *iexporter) fileIndexAndOffset(file *token.File, pos token.Pos) (uint64, uint64) { + index, ok := p.fileInfo[file] + if !ok { + index = uint64(len(p.fileInfo)) + p.fileInfos = append(p.fileInfos, &filePositions{file: file}) + if p.fileInfo == nil { + p.fileInfo = make(map[*token.File]uint64) + } + p.fileInfo[file] = index + } + // Record each needed offset. + info := p.fileInfos[index] + offset := uint64(file.Offset(pos)) + info.needed = append(info.needed, offset) + + return index, offset +} + // pushDecl adds n to the declaration work queue, if not already present. func (p *iexporter) pushDecl(obj types.Object) { // Package unsafe is known to the compiler and predeclared. @@ -346,7 +447,13 @@ func (p *iexporter) doDecl(obj types.Object) { case *types.Func: sig, _ := obj.Type().(*types.Signature) if sig.Recv() != nil { - panic(internalErrorf("unexpected method: %v", sig)) + // We shouldn't see methods in the package scope, + // but the type checker may repair "func () F() {}" + // to "func (Invalid) F()" and then treat it like "func F()", + // so allow that. See golang/go#57729. + if sig.Recv().Type() != types.Typ[types.Invalid] { + panic(internalErrorf("unexpected method: %v", sig)) + } } // Function. @@ -458,13 +565,30 @@ func (w *exportWriter) tag(tag byte) { } func (w *exportWriter) pos(pos token.Pos) { - if w.p.version >= iexportVersionPosCol { + if w.p.shallow { + w.posV2(pos) + } else if w.p.version >= iexportVersionPosCol { w.posV1(pos) } else { w.posV0(pos) } } +// posV2 encoding (used only in shallow mode) records positions as +// (file, offset), where file is the index in the token.File table +// (which records the file name and newline offsets) and offset is a +// byte offset. It effectively ignores //line directives. +func (w *exportWriter) posV2(pos token.Pos) { + if pos == token.NoPos { + w.uint64(0) + return + } + file := w.p.fset.File(pos) // fset must be non-nil + index, offset := w.p.fileIndexAndOffset(file, pos) + w.uint64(1 + index) + w.uint64(offset) +} + func (w *exportWriter) posV1(pos token.Pos) { if w.p.fset == nil { w.int64(0) diff --git a/vendor/golang.org/x/tools/internal/gcimporter/iimport.go b/vendor/golang.org/x/tools/internal/gcimporter/iimport.go index a1c469653..448f903e8 100644 --- a/vendor/golang.org/x/tools/internal/gcimporter/iimport.go +++ b/vendor/golang.org/x/tools/internal/gcimporter/iimport.go @@ -137,12 +137,23 @@ func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data } sLen := int64(r.uint64()) + var fLen int64 + var fileOffset []uint64 + if insert != nil { + // Shallow mode uses a different position encoding. + fLen = int64(r.uint64()) + fileOffset = make([]uint64, r.uint64()) + for i := range fileOffset { + fileOffset[i] = r.uint64() + } + } dLen := int64(r.uint64()) whence, _ := r.Seek(0, io.SeekCurrent) stringData := data[whence : whence+sLen] - declData := data[whence+sLen : whence+sLen+dLen] - r.Seek(sLen+dLen, io.SeekCurrent) + fileData := data[whence+sLen : whence+sLen+fLen] + declData := data[whence+sLen+fLen : whence+sLen+fLen+dLen] + r.Seek(sLen+fLen+dLen, io.SeekCurrent) p := iimporter{ version: int(version), @@ -151,6 +162,9 @@ func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data stringData: stringData, stringCache: make(map[uint64]string), + fileOffset: fileOffset, + fileData: fileData, + fileCache: make([]*token.File, len(fileOffset)), pkgCache: make(map[uint64]*types.Package), declData: declData, @@ -280,6 +294,9 @@ type iimporter struct { stringData []byte stringCache map[uint64]string + fileOffset []uint64 // fileOffset[i] is offset in fileData for info about file encoded as i + fileData []byte + fileCache []*token.File // memoized decoding of file encoded as i pkgCache map[uint64]*types.Package declData []byte @@ -352,6 +369,55 @@ func (p *iimporter) stringAt(off uint64) string { return s } +func (p *iimporter) fileAt(index uint64) *token.File { + file := p.fileCache[index] + if file == nil { + off := p.fileOffset[index] + file = p.decodeFile(intReader{bytes.NewReader(p.fileData[off:]), p.ipath}) + p.fileCache[index] = file + } + return file +} + +func (p *iimporter) decodeFile(rd intReader) *token.File { + filename := p.stringAt(rd.uint64()) + size := int(rd.uint64()) + file := p.fake.fset.AddFile(filename, -1, size) + + // SetLines requires a nondecreasing sequence. + // Because it is common for clients to derive the interval + // [start, start+len(name)] from a start position, and we + // want to ensure that the end offset is on the same line, + // we fill in the gaps of the sparse encoding with values + // that strictly increase by the largest possible amount. + // This allows us to avoid having to record the actual end + // offset of each needed line. + + lines := make([]int, int(rd.uint64())) + var index, offset int + for i, n := 0, int(rd.uint64()); i < n; i++ { + index += int(rd.uint64()) + offset += int(rd.uint64()) + lines[index] = offset + + // Ensure monotonicity between points. + for j := index - 1; j > 0 && lines[j] == 0; j-- { + lines[j] = lines[j+1] - 1 + } + } + + // Ensure monotonicity after last point. + for j := len(lines) - 1; j > 0 && lines[j] == 0; j-- { + size-- + lines[j] = size + } + + if !file.SetLines(lines) { + errorf("SetLines failed: %d", lines) // can't happen + } + return file +} + func (p *iimporter) pkgAt(off uint64) *types.Package { if pkg, ok := p.pkgCache[off]; ok { return pkg @@ -645,6 +711,9 @@ func (r *importReader) qualifiedIdent() (*types.Package, string) { } func (r *importReader) pos() token.Pos { + if r.p.insert != nil { // shallow mode + return r.posv2() + } if r.p.version >= iexportVersionPosCol { r.posv1() } else { @@ -681,6 +750,15 @@ func (r *importReader) posv1() { } } +func (r *importReader) posv2() token.Pos { + file := r.uint64() + if file == 0 { + return token.NoPos + } + tf := r.p.fileAt(file - 1) + return tf.Pos(int(r.uint64())) +} + func (r *importReader) typ() types.Type { return r.p.typAt(r.uint64(), nil) } diff --git a/vendor/golang.org/x/tools/internal/gcimporter/ureader_yes.go b/vendor/golang.org/x/tools/internal/gcimporter/ureader_yes.go index 20b99903c..b285a11ce 100644 --- a/vendor/golang.org/x/tools/internal/gcimporter/ureader_yes.go +++ b/vendor/golang.org/x/tools/internal/gcimporter/ureader_yes.go @@ -559,18 +559,7 @@ func (pr *pkgReader) objIdx(idx pkgbits.Index) (*types.Package, string) { named.SetTypeParams(r.typeParamNames()) - rhs := r.typ() - pk := r.p - pk.laterFor(named, func() { - // First be sure that the rhs is initialized, if it needs to be initialized. - delete(pk.laterFors, named) // prevent cycles - if i, ok := pk.laterFors[rhs]; ok { - f := pk.laterFns[i] - pk.laterFns[i] = func() {} // function is running now, so replace it with a no-op - f() // initialize RHS - } - underlying := rhs.Underlying() - + setUnderlying := func(underlying types.Type) { // If the underlying type is an interface, we need to // duplicate its methods so we can replace the receiver // parameter's type (#49906). @@ -595,7 +584,31 @@ func (pr *pkgReader) objIdx(idx pkgbits.Index) (*types.Package, string) { } named.SetUnderlying(underlying) - }) + } + + // Since go.dev/cl/455279, we can assume rhs.Underlying() will + // always be non-nil. However, to temporarily support users of + // older snapshot releases, we continue to fallback to the old + // behavior for now. + // + // TODO(mdempsky): Remove fallback code and simplify after + // allowing time for snapshot users to upgrade. + rhs := r.typ() + if underlying := rhs.Underlying(); underlying != nil { + setUnderlying(underlying) + } else { + pk := r.p + pk.laterFor(named, func() { + // First be sure that the rhs is initialized, if it needs to be initialized. + delete(pk.laterFors, named) // prevent cycles + if i, ok := pk.laterFors[rhs]; ok { + f := pk.laterFns[i] + pk.laterFns[i] = func() {} // function is running now, so replace it with a no-op + f() // initialize RHS + } + setUnderlying(rhs.Underlying()) + }) + } for i, n := 0, r.Len(); i < n; i++ { named.AddMethod(r.method()) diff --git a/vendor/golang.org/x/tools/internal/gocommand/version.go b/vendor/golang.org/x/tools/internal/gocommand/version.go index 98e834f74..307a76d47 100644 --- a/vendor/golang.org/x/tools/internal/gocommand/version.go +++ b/vendor/golang.org/x/tools/internal/gocommand/version.go @@ -58,22 +58,24 @@ func GoVersion(ctx context.Context, inv Invocation, r *Runner) (int, error) { return 0, fmt.Errorf("no parseable ReleaseTags in %v", tags) } -// GoVersionString reports the go version string as shown in `go version` command output. -// When `go version` outputs in non-standard form, this returns an empty string. -func GoVersionString(ctx context.Context, inv Invocation, r *Runner) (string, error) { +// GoVersionOutput returns the complete output of the go version command. +func GoVersionOutput(ctx context.Context, inv Invocation, r *Runner) (string, error) { inv.Verb = "version" goVersion, err := r.Run(ctx, inv) if err != nil { return "", err } - return parseGoVersionOutput(goVersion.Bytes()), nil + return goVersion.String(), nil } -func parseGoVersionOutput(data []byte) string { +// ParseGoVersionOutput extracts the Go version string +// from the output of the "go version" command. +// Given an unrecognized form, it returns an empty string. +func ParseGoVersionOutput(data string) string { re := regexp.MustCompile(`^go version (go\S+|devel \S+)`) - m := re.FindSubmatch(data) + m := re.FindStringSubmatch(data) if len(m) != 2 { return "" // unrecognized version } - return string(m[1]) + return m[1] } diff --git a/vendor/golang.org/x/tools/internal/imports/fix.go b/vendor/golang.org/x/tools/internal/imports/fix.go index 646455802..642a5ac2d 100644 --- a/vendor/golang.org/x/tools/internal/imports/fix.go +++ b/vendor/golang.org/x/tools/internal/imports/fix.go @@ -799,7 +799,7 @@ func GetPackageExports(ctx context.Context, wrapped func(PackageExport), searchP return getCandidatePkgs(ctx, callback, filename, filePkg, env) } -var RequiredGoEnvVars = []string{"GO111MODULE", "GOFLAGS", "GOINSECURE", "GOMOD", "GOMODCACHE", "GONOPROXY", "GONOSUMDB", "GOPATH", "GOPROXY", "GOROOT", "GOSUMDB", "GOWORK"} +var requiredGoEnvVars = []string{"GO111MODULE", "GOFLAGS", "GOINSECURE", "GOMOD", "GOMODCACHE", "GONOPROXY", "GONOSUMDB", "GOPATH", "GOPROXY", "GOROOT", "GOSUMDB", "GOWORK"} // ProcessEnv contains environment variables and settings that affect the use of // the go command, the go/build package, etc. @@ -869,7 +869,7 @@ func (e *ProcessEnv) init() error { } foundAllRequired := true - for _, k := range RequiredGoEnvVars { + for _, k := range requiredGoEnvVars { if _, ok := e.Env[k]; !ok { foundAllRequired = false break @@ -885,7 +885,7 @@ func (e *ProcessEnv) init() error { } goEnv := map[string]string{} - stdout, err := e.invokeGo(context.TODO(), "env", append([]string{"-json"}, RequiredGoEnvVars...)...) + stdout, err := e.invokeGo(context.TODO(), "env", append([]string{"-json"}, requiredGoEnvVars...)...) if err != nil { return err } diff --git a/vendor/golang.org/x/tools/internal/imports/sortimports.go b/vendor/golang.org/x/tools/internal/imports/sortimports.go index 85144db1d..1a0a7ebd9 100644 --- a/vendor/golang.org/x/tools/internal/imports/sortimports.go +++ b/vendor/golang.org/x/tools/internal/imports/sortimports.go @@ -52,6 +52,7 @@ func sortImports(localPrefix string, tokFile *token.File, f *ast.File) { d.Specs = specs // Deduping can leave a blank line before the rparen; clean that up. + // Ignore line directives. if len(d.Specs) > 0 { lastSpec := d.Specs[len(d.Specs)-1] lastLine := tokFile.PositionFor(lastSpec.Pos(), false).Line diff --git a/vendor/golang.org/x/tools/internal/imports/zstdlib.go b/vendor/golang.org/x/tools/internal/imports/zstdlib.go index 5db9b2d4c..31a75949c 100644 --- a/vendor/golang.org/x/tools/internal/imports/zstdlib.go +++ b/vendor/golang.org/x/tools/internal/imports/zstdlib.go @@ -10,6 +10,7 @@ var stdlib = map[string][]string{ "archive/tar": { "ErrFieldTooLong", "ErrHeader", + "ErrInsecurePath", "ErrWriteAfterClose", "ErrWriteTooLong", "FileInfoHeader", @@ -45,6 +46,7 @@ var stdlib = map[string][]string{ "ErrAlgorithm", "ErrChecksum", "ErrFormat", + "ErrInsecurePath", "File", "FileHeader", "FileInfoHeader", @@ -87,12 +89,15 @@ var stdlib = map[string][]string{ }, "bytes": { "Buffer", + "Clone", "Compare", "Contains", "ContainsAny", "ContainsRune", "Count", "Cut", + "CutPrefix", + "CutSuffix", "Equal", "EqualFold", "ErrTooLarge", @@ -224,12 +229,15 @@ var stdlib = map[string][]string{ }, "context": { "Background", + "CancelCauseFunc", "CancelFunc", "Canceled", + "Cause", "Context", "DeadlineExceeded", "TODO", "WithCancel", + "WithCancelCause", "WithDeadline", "WithTimeout", "WithValue", @@ -306,6 +314,15 @@ var stdlib = map[string][]string{ "Sign", "Verify", }, + "crypto/ecdh": { + "Curve", + "P256", + "P384", + "P521", + "PrivateKey", + "PublicKey", + "X25519", + }, "crypto/ecdsa": { "GenerateKey", "PrivateKey", @@ -318,6 +335,7 @@ var stdlib = map[string][]string{ "crypto/ed25519": { "GenerateKey", "NewKeyFromSeed", + "Options", "PrivateKey", "PrivateKeySize", "PublicKey", @@ -326,6 +344,7 @@ var stdlib = map[string][]string{ "Sign", "SignatureSize", "Verify", + "VerifyWithOptions", }, "crypto/elliptic": { "Curve", @@ -423,10 +442,12 @@ var stdlib = map[string][]string{ "ConstantTimeEq", "ConstantTimeLessOrEq", "ConstantTimeSelect", + "XORBytes", }, "crypto/tls": { "Certificate", "CertificateRequestInfo", + "CertificateVerificationError", "CipherSuite", "CipherSuiteName", "CipherSuites", @@ -604,6 +625,7 @@ var stdlib = map[string][]string{ "SHA384WithRSAPSS", "SHA512WithRSA", "SHA512WithRSAPSS", + "SetFallbackRoots", "SignatureAlgorithm", "SystemCertPool", "SystemRootsError", @@ -1828,19 +1850,42 @@ var stdlib = map[string][]string{ "R_INFO32", "R_LARCH", "R_LARCH_32", + "R_LARCH_32_PCREL", "R_LARCH_64", + "R_LARCH_ABS64_HI12", + "R_LARCH_ABS64_LO20", + "R_LARCH_ABS_HI20", + "R_LARCH_ABS_LO12", "R_LARCH_ADD16", "R_LARCH_ADD24", "R_LARCH_ADD32", "R_LARCH_ADD64", "R_LARCH_ADD8", + "R_LARCH_B16", + "R_LARCH_B21", + "R_LARCH_B26", "R_LARCH_COPY", + "R_LARCH_GNU_VTENTRY", + "R_LARCH_GNU_VTINHERIT", + "R_LARCH_GOT64_HI12", + "R_LARCH_GOT64_LO20", + "R_LARCH_GOT64_PC_HI12", + "R_LARCH_GOT64_PC_LO20", + "R_LARCH_GOT_HI20", + "R_LARCH_GOT_LO12", + "R_LARCH_GOT_PC_HI20", + "R_LARCH_GOT_PC_LO12", "R_LARCH_IRELATIVE", "R_LARCH_JUMP_SLOT", "R_LARCH_MARK_LA", "R_LARCH_MARK_PCREL", "R_LARCH_NONE", + "R_LARCH_PCALA64_HI12", + "R_LARCH_PCALA64_LO20", + "R_LARCH_PCALA_HI20", + "R_LARCH_PCALA_LO12", "R_LARCH_RELATIVE", + "R_LARCH_RELAX", "R_LARCH_SOP_ADD", "R_LARCH_SOP_AND", "R_LARCH_SOP_ASSERT", @@ -1875,6 +1920,22 @@ var stdlib = map[string][]string{ "R_LARCH_TLS_DTPMOD64", "R_LARCH_TLS_DTPREL32", "R_LARCH_TLS_DTPREL64", + "R_LARCH_TLS_GD_HI20", + "R_LARCH_TLS_GD_PC_HI20", + "R_LARCH_TLS_IE64_HI12", + "R_LARCH_TLS_IE64_LO20", + "R_LARCH_TLS_IE64_PC_HI12", + "R_LARCH_TLS_IE64_PC_LO20", + "R_LARCH_TLS_IE_HI20", + "R_LARCH_TLS_IE_LO12", + "R_LARCH_TLS_IE_PC_HI20", + "R_LARCH_TLS_IE_PC_LO12", + "R_LARCH_TLS_LD_HI20", + "R_LARCH_TLS_LD_PC_HI20", + "R_LARCH_TLS_LE64_HI12", + "R_LARCH_TLS_LE64_LO20", + "R_LARCH_TLS_LE_HI20", + "R_LARCH_TLS_LE_LO12", "R_LARCH_TLS_TPREL32", "R_LARCH_TLS_TPREL64", "R_MIPS", @@ -1938,15 +1999,25 @@ var stdlib = map[string][]string{ "R_PPC64_ADDR16_HIGH", "R_PPC64_ADDR16_HIGHA", "R_PPC64_ADDR16_HIGHER", + "R_PPC64_ADDR16_HIGHER34", "R_PPC64_ADDR16_HIGHERA", + "R_PPC64_ADDR16_HIGHERA34", "R_PPC64_ADDR16_HIGHEST", + "R_PPC64_ADDR16_HIGHEST34", "R_PPC64_ADDR16_HIGHESTA", + "R_PPC64_ADDR16_HIGHESTA34", "R_PPC64_ADDR16_LO", "R_PPC64_ADDR16_LO_DS", "R_PPC64_ADDR24", "R_PPC64_ADDR32", "R_PPC64_ADDR64", "R_PPC64_ADDR64_LOCAL", + "R_PPC64_COPY", + "R_PPC64_D28", + "R_PPC64_D34", + "R_PPC64_D34_HA30", + "R_PPC64_D34_HI30", + "R_PPC64_D34_LO", "R_PPC64_DTPMOD64", "R_PPC64_DTPREL16", "R_PPC64_DTPREL16_DS", @@ -1960,8 +2031,12 @@ var stdlib = map[string][]string{ "R_PPC64_DTPREL16_HIGHESTA", "R_PPC64_DTPREL16_LO", "R_PPC64_DTPREL16_LO_DS", + "R_PPC64_DTPREL34", "R_PPC64_DTPREL64", "R_PPC64_ENTRY", + "R_PPC64_GLOB_DAT", + "R_PPC64_GNU_VTENTRY", + "R_PPC64_GNU_VTINHERIT", "R_PPC64_GOT16", "R_PPC64_GOT16_DS", "R_PPC64_GOT16_HA", @@ -1972,29 +2047,50 @@ var stdlib = map[string][]string{ "R_PPC64_GOT_DTPREL16_HA", "R_PPC64_GOT_DTPREL16_HI", "R_PPC64_GOT_DTPREL16_LO_DS", + "R_PPC64_GOT_DTPREL_PCREL34", + "R_PPC64_GOT_PCREL34", "R_PPC64_GOT_TLSGD16", "R_PPC64_GOT_TLSGD16_HA", "R_PPC64_GOT_TLSGD16_HI", "R_PPC64_GOT_TLSGD16_LO", + "R_PPC64_GOT_TLSGD_PCREL34", "R_PPC64_GOT_TLSLD16", "R_PPC64_GOT_TLSLD16_HA", "R_PPC64_GOT_TLSLD16_HI", "R_PPC64_GOT_TLSLD16_LO", + "R_PPC64_GOT_TLSLD_PCREL34", "R_PPC64_GOT_TPREL16_DS", "R_PPC64_GOT_TPREL16_HA", "R_PPC64_GOT_TPREL16_HI", "R_PPC64_GOT_TPREL16_LO_DS", + "R_PPC64_GOT_TPREL_PCREL34", "R_PPC64_IRELATIVE", "R_PPC64_JMP_IREL", "R_PPC64_JMP_SLOT", "R_PPC64_NONE", + "R_PPC64_PCREL28", + "R_PPC64_PCREL34", + "R_PPC64_PCREL_OPT", + "R_PPC64_PLT16_HA", + "R_PPC64_PLT16_HI", + "R_PPC64_PLT16_LO", "R_PPC64_PLT16_LO_DS", + "R_PPC64_PLT32", + "R_PPC64_PLT64", + "R_PPC64_PLTCALL", + "R_PPC64_PLTCALL_NOTOC", "R_PPC64_PLTGOT16", "R_PPC64_PLTGOT16_DS", "R_PPC64_PLTGOT16_HA", "R_PPC64_PLTGOT16_HI", "R_PPC64_PLTGOT16_LO", "R_PPC64_PLTGOT_LO_DS", + "R_PPC64_PLTREL32", + "R_PPC64_PLTREL64", + "R_PPC64_PLTSEQ", + "R_PPC64_PLTSEQ_NOTOC", + "R_PPC64_PLT_PCREL34", + "R_PPC64_PLT_PCREL34_NOTOC", "R_PPC64_REL14", "R_PPC64_REL14_BRNTAKEN", "R_PPC64_REL14_BRTAKEN", @@ -2002,13 +2098,28 @@ var stdlib = map[string][]string{ "R_PPC64_REL16DX_HA", "R_PPC64_REL16_HA", "R_PPC64_REL16_HI", + "R_PPC64_REL16_HIGH", + "R_PPC64_REL16_HIGHA", + "R_PPC64_REL16_HIGHER", + "R_PPC64_REL16_HIGHER34", + "R_PPC64_REL16_HIGHERA", + "R_PPC64_REL16_HIGHERA34", + "R_PPC64_REL16_HIGHEST", + "R_PPC64_REL16_HIGHEST34", + "R_PPC64_REL16_HIGHESTA", + "R_PPC64_REL16_HIGHESTA34", "R_PPC64_REL16_LO", "R_PPC64_REL24", "R_PPC64_REL24_NOTOC", + "R_PPC64_REL30", "R_PPC64_REL32", "R_PPC64_REL64", "R_PPC64_RELATIVE", + "R_PPC64_SECTOFF", "R_PPC64_SECTOFF_DS", + "R_PPC64_SECTOFF_HA", + "R_PPC64_SECTOFF_HI", + "R_PPC64_SECTOFF_LO", "R_PPC64_SECTOFF_LO_DS", "R_PPC64_TLS", "R_PPC64_TLSGD", @@ -2033,7 +2144,11 @@ var stdlib = map[string][]string{ "R_PPC64_TPREL16_HIGHESTA", "R_PPC64_TPREL16_LO", "R_PPC64_TPREL16_LO_DS", + "R_PPC64_TPREL34", "R_PPC64_TPREL64", + "R_PPC64_UADDR16", + "R_PPC64_UADDR32", + "R_PPC64_UADDR64", "R_PPC_ADDR14", "R_PPC_ADDR14_BRNTAKEN", "R_PPC_ADDR14_BRTAKEN", @@ -2581,6 +2696,9 @@ var stdlib = map[string][]string{ "IMAGE_FILE_MACHINE_POWERPC", "IMAGE_FILE_MACHINE_POWERPCFP", "IMAGE_FILE_MACHINE_R4000", + "IMAGE_FILE_MACHINE_RISCV128", + "IMAGE_FILE_MACHINE_RISCV32", + "IMAGE_FILE_MACHINE_RISCV64", "IMAGE_FILE_MACHINE_SH3", "IMAGE_FILE_MACHINE_SH3DSP", "IMAGE_FILE_MACHINE_SH4", @@ -2846,6 +2964,7 @@ var stdlib = map[string][]string{ "errors": { "As", "Is", + "Join", "New", "Unwrap", }, @@ -2916,6 +3035,7 @@ var stdlib = map[string][]string{ "Appendf", "Appendln", "Errorf", + "FormatString", "Formatter", "Fprint", "Fprintf", @@ -3401,6 +3521,7 @@ var stdlib = map[string][]string{ "RecvOnly", "RelativeTo", "Rune", + "Satisfies", "Scope", "Selection", "SelectionKind", @@ -3702,8 +3823,10 @@ var stdlib = map[string][]string{ "LimitedReader", "MultiReader", "MultiWriter", + "NewOffsetWriter", "NewSectionReader", "NopCloser", + "OffsetWriter", "Pipe", "PipeReader", "PipeWriter", @@ -3770,6 +3893,7 @@ var stdlib = map[string][]string{ "ReadDirFile", "ReadFile", "ReadFileFS", + "SkipAll", "SkipDir", "Stat", "StatFS", @@ -4140,6 +4264,7 @@ var stdlib = map[string][]string{ "FlagLoopback", "FlagMulticast", "FlagPointToPoint", + "FlagRunning", "FlagUp", "Flags", "HardwareAddr", @@ -4284,6 +4409,7 @@ var stdlib = map[string][]string{ "NewFileTransport", "NewRequest", "NewRequestWithContext", + "NewResponseController", "NewServeMux", "NoBody", "NotFound", @@ -4303,6 +4429,7 @@ var stdlib = map[string][]string{ "RedirectHandler", "Request", "Response", + "ResponseController", "ResponseWriter", "RoundTripper", "SameSite", @@ -4445,6 +4572,7 @@ var stdlib = map[string][]string{ "NewProxyClientConn", "NewServerConn", "NewSingleHostReverseProxy", + "ProxyRequest", "ReverseProxy", "ServerConn", }, @@ -4476,6 +4604,8 @@ var stdlib = map[string][]string{ "AddrPortFrom", "IPv4Unspecified", "IPv6LinkLocalAllNodes", + "IPv6LinkLocalAllRouters", + "IPv6Loopback", "IPv6Unspecified", "MustParseAddr", "MustParseAddrPort", @@ -4686,6 +4816,7 @@ var stdlib = map[string][]string{ "CommandContext", "ErrDot", "ErrNotFound", + "ErrWaitDelay", "Error", "ExitError", "LookPath", @@ -4734,11 +4865,13 @@ var stdlib = map[string][]string{ "Glob", "HasPrefix", "IsAbs", + "IsLocal", "Join", "ListSeparator", "Match", "Rel", "Separator", + "SkipAll", "SkipDir", "Split", "SplitList", @@ -4860,6 +4993,7 @@ var stdlib = map[string][]string{ "ErrInvalidRepeatOp", "ErrInvalidRepeatSize", "ErrInvalidUTF8", + "ErrLarge", "ErrMissingBracket", "ErrMissingParen", "ErrMissingRepeatArgument", @@ -4968,8 +5102,16 @@ var stdlib = map[string][]string{ }, "runtime/cgo": { "Handle", + "Incomplete", "NewHandle", }, + "runtime/coverage": { + "ClearCounters", + "WriteCounters", + "WriteCountersDir", + "WriteMeta", + "WriteMetaDir", + }, "runtime/debug": { "BuildInfo", "BuildSetting", @@ -5103,6 +5245,8 @@ var stdlib = map[string][]string{ "ContainsRune", "Count", "Cut", + "CutPrefix", + "CutSuffix", "EqualFold", "Fields", "FieldsFunc", @@ -5272,6 +5416,7 @@ var stdlib = map[string][]string{ "AF_TIPC", "AF_UNIX", "AF_UNSPEC", + "AF_UTUN", "AF_VENDOR00", "AF_VENDOR01", "AF_VENDOR02", @@ -5610,20 +5755,25 @@ var stdlib = map[string][]string{ "CLOCAL", "CLONE_CHILD_CLEARTID", "CLONE_CHILD_SETTID", + "CLONE_CLEAR_SIGHAND", "CLONE_CSIGNAL", "CLONE_DETACHED", "CLONE_FILES", "CLONE_FS", + "CLONE_INTO_CGROUP", "CLONE_IO", + "CLONE_NEWCGROUP", "CLONE_NEWIPC", "CLONE_NEWNET", "CLONE_NEWNS", "CLONE_NEWPID", + "CLONE_NEWTIME", "CLONE_NEWUSER", "CLONE_NEWUTS", "CLONE_PARENT", "CLONE_PARENT_SETTID", "CLONE_PID", + "CLONE_PIDFD", "CLONE_PTRACE", "CLONE_SETTLS", "CLONE_SIGHAND", @@ -6166,6 +6316,7 @@ var stdlib = map[string][]string{ "EPROTONOSUPPORT", "EPROTOTYPE", "EPWROFF", + "EQFULL", "ERANGE", "EREMCHG", "EREMOTE", @@ -6592,6 +6743,7 @@ var stdlib = map[string][]string{ "F_DUPFD", "F_DUPFD_CLOEXEC", "F_EXLCK", + "F_FINDSIGS", "F_FLUSH_DATA", "F_FREEZE_FS", "F_FSCTL", @@ -6602,6 +6754,7 @@ var stdlib = map[string][]string{ "F_FSPRIV", "F_FSVOID", "F_FULLFSYNC", + "F_GETCODEDIR", "F_GETFD", "F_GETFL", "F_GETLEASE", @@ -6615,6 +6768,7 @@ var stdlib = map[string][]string{ "F_GETPATH_MTMINFO", "F_GETPIPE_SZ", "F_GETPROTECTIONCLASS", + "F_GETPROTECTIONLEVEL", "F_GETSIG", "F_GLOBAL_NOCACHE", "F_LOCK", @@ -6647,6 +6801,7 @@ var stdlib = map[string][]string{ "F_SETLK64", "F_SETLKW", "F_SETLKW64", + "F_SETLKWTIMEOUT", "F_SETLK_REMOTE", "F_SETNOSIGPIPE", "F_SETOWN", @@ -6656,9 +6811,11 @@ var stdlib = map[string][]string{ "F_SETSIG", "F_SETSIZE", "F_SHLCK", + "F_SINGLE_WRITER", "F_TEST", "F_THAW_FS", "F_TLOCK", + "F_TRANSCODEKEY", "F_ULOCK", "F_UNLCK", "F_UNLCKSYS", @@ -7854,12 +8011,20 @@ var stdlib = map[string][]string{ "NOFLSH", "NOTE_ABSOLUTE", "NOTE_ATTRIB", + "NOTE_BACKGROUND", "NOTE_CHILD", + "NOTE_CRITICAL", "NOTE_DELETE", "NOTE_EOF", "NOTE_EXEC", "NOTE_EXIT", "NOTE_EXITSTATUS", + "NOTE_EXIT_CSERROR", + "NOTE_EXIT_DECRYPTFAIL", + "NOTE_EXIT_DETAIL", + "NOTE_EXIT_DETAIL_MASK", + "NOTE_EXIT_MEMORY", + "NOTE_EXIT_REPARENTED", "NOTE_EXTEND", "NOTE_FFAND", "NOTE_FFCOPY", @@ -7868,6 +8033,7 @@ var stdlib = map[string][]string{ "NOTE_FFNOP", "NOTE_FFOR", "NOTE_FORK", + "NOTE_LEEWAY", "NOTE_LINK", "NOTE_LOWAT", "NOTE_NONE", @@ -7946,6 +8112,7 @@ var stdlib = map[string][]string{ "O_CREAT", "O_DIRECT", "O_DIRECTORY", + "O_DP_GETRAWENCRYPTED", "O_DSYNC", "O_EVTONLY", "O_EXCL", @@ -8235,6 +8402,7 @@ var stdlib = map[string][]string{ "RLIMIT_AS", "RLIMIT_CORE", "RLIMIT_CPU", + "RLIMIT_CPU_USAGE_MONITOR", "RLIMIT_DATA", "RLIMIT_FSIZE", "RLIMIT_NOFILE", @@ -8347,9 +8515,11 @@ var stdlib = map[string][]string{ "RTF_PROTO1", "RTF_PROTO2", "RTF_PROTO3", + "RTF_PROXY", "RTF_REINSTATE", "RTF_REJECT", "RTF_RNH_LOCKED", + "RTF_ROUTER", "RTF_SOURCE", "RTF_SRC", "RTF_STATIC", @@ -8868,6 +9038,7 @@ var stdlib = map[string][]string{ "SO_NO_OFFLOAD", "SO_NP_EXTENSIONS", "SO_NREAD", + "SO_NUMRCVPKT", "SO_NWRITE", "SO_OOBINLINE", "SO_OVERFLOWED", @@ -9037,6 +9208,7 @@ var stdlib = map[string][]string{ "SYS_CREAT", "SYS_CREATE_MODULE", "SYS_CSOPS", + "SYS_CSOPS_AUDITTOKEN", "SYS_DELETE", "SYS_DELETE_MODULE", "SYS_DUP", @@ -9223,6 +9395,7 @@ var stdlib = map[string][]string{ "SYS_JAIL_GET", "SYS_JAIL_REMOVE", "SYS_JAIL_SET", + "SYS_KAS_INFO", "SYS_KDEBUG_TRACE", "SYS_KENV", "SYS_KEVENT", @@ -9250,6 +9423,7 @@ var stdlib = map[string][]string{ "SYS_LCHMOD", "SYS_LCHOWN", "SYS_LCHOWN32", + "SYS_LEDGER", "SYS_LGETFH", "SYS_LGETXATTR", "SYS_LINK", @@ -9346,6 +9520,7 @@ var stdlib = map[string][]string{ "SYS_OPENAT", "SYS_OPENBSD_POLL", "SYS_OPEN_BY_HANDLE_AT", + "SYS_OPEN_DPROTECTED_NP", "SYS_OPEN_EXTENDED", "SYS_OPEN_NOCANCEL", "SYS_OVADVISE", @@ -9978,6 +10153,7 @@ var stdlib = map[string][]string{ "TCP_CONNECTIONTIMEOUT", "TCP_CORK", "TCP_DEFER_ACCEPT", + "TCP_ENABLE_ECN", "TCP_INFO", "TCP_KEEPALIVE", "TCP_KEEPCNT", @@ -10000,11 +10176,13 @@ var stdlib = map[string][]string{ "TCP_NODELAY", "TCP_NOOPT", "TCP_NOPUSH", + "TCP_NOTSENT_LOWAT", "TCP_NSTATES", "TCP_QUICKACK", "TCP_RXT_CONNDROPTIME", "TCP_RXT_FINDROP", "TCP_SACK_ENABLE", + "TCP_SENDMOREACKS", "TCP_SYNCNT", "TCP_VENDOR", "TCP_WINDOW_CLAMP", @@ -10540,6 +10718,8 @@ var stdlib = map[string][]string{ "April", "August", "Date", + "DateOnly", + "DateTime", "December", "Duration", "February", @@ -10594,6 +10774,7 @@ var stdlib = map[string][]string{ "Tick", "Ticker", "Time", + "TimeOnly", "Timer", "Tuesday", "UTC", @@ -10892,6 +11073,7 @@ var stdlib = map[string][]string{ "Zs", }, "unicode/utf16": { + "AppendRune", "Decode", "DecodeRune", "Encode", @@ -10920,10 +11102,14 @@ var stdlib = map[string][]string{ "ValidString", }, "unsafe": { + "Add", "Alignof", - "ArbitraryType", "Offsetof", "Pointer", "Sizeof", + "Slice", + "SliceData", + "String", + "StringData", }, } diff --git a/vendor/golang.org/x/tools/internal/pkgbits/decoder.go b/vendor/golang.org/x/tools/internal/pkgbits/decoder.go index 3205c9a16..b92e8e6eb 100644 --- a/vendor/golang.org/x/tools/internal/pkgbits/decoder.go +++ b/vendor/golang.org/x/tools/internal/pkgbits/decoder.go @@ -373,7 +373,7 @@ func (r *Decoder) Int64() int64 { return r.rawVarint() } -// Int64 decodes and returns a uint64 value from the element bitstream. +// Uint64 decodes and returns a uint64 value from the element bitstream. func (r *Decoder) Uint64() uint64 { r.Sync(SyncUint64) return r.rawUvarint() diff --git a/vendor/golang.org/x/tools/internal/pkgbits/encoder.go b/vendor/golang.org/x/tools/internal/pkgbits/encoder.go index e98e41171..6482617a4 100644 --- a/vendor/golang.org/x/tools/internal/pkgbits/encoder.go +++ b/vendor/golang.org/x/tools/internal/pkgbits/encoder.go @@ -293,7 +293,7 @@ func (w *Encoder) Len(x int) { assert(x >= 0); w.Uint64(uint64(x)) } // Int encodes and writes an int value into the element bitstream. func (w *Encoder) Int(x int) { w.Int64(int64(x)) } -// Len encodes and writes a uint value into the element bitstream. +// Uint encodes and writes a uint value into the element bitstream. func (w *Encoder) Uint(x uint) { w.Uint64(uint64(x)) } // Reloc encodes and writes a relocation for the given (section, diff --git a/vendor/golang.org/x/tools/internal/tokeninternal/tokeninternal.go b/vendor/golang.org/x/tools/internal/tokeninternal/tokeninternal.go new file mode 100644 index 000000000..a3fb2d4f2 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/tokeninternal/tokeninternal.go @@ -0,0 +1,59 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// package tokeninternal provides access to some internal features of the token +// package. +package tokeninternal + +import ( + "go/token" + "sync" + "unsafe" +) + +// GetLines returns the table of line-start offsets from a token.File. +func GetLines(file *token.File) []int { + // token.File has a Lines method on Go 1.21 and later. + if file, ok := (interface{})(file).(interface{ Lines() []int }); ok { + return file.Lines() + } + + // This declaration must match that of token.File. + // This creates a risk of dependency skew. + // For now we check that the size of the two + // declarations is the same, on the (fragile) assumption + // that future changes would add fields. + type tokenFile119 struct { + _ string + _ int + _ int + mu sync.Mutex // we're not complete monsters + lines []int + _ []struct{} + } + type tokenFile118 struct { + _ *token.FileSet // deleted in go1.19 + tokenFile119 + } + + type uP = unsafe.Pointer + switch unsafe.Sizeof(*file) { + case unsafe.Sizeof(tokenFile118{}): + var ptr *tokenFile118 + *(*uP)(uP(&ptr)) = uP(file) + ptr.mu.Lock() + defer ptr.mu.Unlock() + return ptr.lines + + case unsafe.Sizeof(tokenFile119{}): + var ptr *tokenFile119 + *(*uP)(uP(&ptr)) = uP(file) + ptr.mu.Lock() + defer ptr.mu.Unlock() + return ptr.lines + + default: + panic("unexpected token.File size") + } +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 64825bd2e..3f827db1a 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -87,8 +87,8 @@ github.com/fsnotify/fsnotify # github.com/gardener/etcd-druid v0.15.3 ## explicit; go 1.19 github.com/gardener/etcd-druid/api/v1alpha1 -# github.com/gardener/gardener v1.65.0 -## explicit; go 1.19 +# github.com/gardener/gardener v1.66.0 +## explicit; go 1.20 github.com/gardener/gardener/.github github.com/gardener/gardener/.github/ISSUE_TEMPLATE github.com/gardener/gardener/extensions/pkg/apis/config @@ -420,7 +420,7 @@ github.com/munnerz/goautoneg # github.com/nwaples/rardecode v1.1.2 ## explicit github.com/nwaples/rardecode -# github.com/onsi/ginkgo/v2 v2.6.1 +# github.com/onsi/ginkgo/v2 v2.8.3 ## explicit; go 1.18 github.com/onsi/ginkgo/v2 github.com/onsi/ginkgo/v2/config @@ -442,7 +442,7 @@ github.com/onsi/ginkgo/v2/internal/parallel_support github.com/onsi/ginkgo/v2/internal/testingtproxy github.com/onsi/ginkgo/v2/reporters github.com/onsi/ginkgo/v2/types -# github.com/onsi/gomega v1.24.2 +# github.com/onsi/gomega v1.27.1 ## explicit; go 1.18 github.com/onsi/gomega github.com/onsi/gomega/format @@ -548,7 +548,7 @@ go.uber.org/zap/internal/bufferpool go.uber.org/zap/internal/color go.uber.org/zap/internal/exit go.uber.org/zap/zapcore -# golang.org/x/crypto v0.1.0 +# golang.org/x/crypto v0.6.0 ## explicit; go 1.17 golang.org/x/crypto/blowfish golang.org/x/crypto/cast5 @@ -569,7 +569,7 @@ golang.org/x/crypto/pbkdf2 golang.org/x/crypto/scrypt golang.org/x/crypto/ssh golang.org/x/crypto/ssh/internal/bcrypt_pbkdf -# golang.org/x/mod v0.7.0 +# golang.org/x/mod v0.8.0 ## explicit; go 1.17 golang.org/x/mod/internal/lazyregexp golang.org/x/mod/modfile @@ -628,7 +628,7 @@ golang.org/x/text/unicode/norm # golang.org/x/time v0.3.0 ## explicit golang.org/x/time/rate -# golang.org/x/tools v0.4.0 +# golang.org/x/tools v0.6.0 ## explicit; go 1.18 golang.org/x/tools/cmd/goimports golang.org/x/tools/go/ast/astutil @@ -648,6 +648,7 @@ golang.org/x/tools/internal/gopathwalk golang.org/x/tools/internal/imports golang.org/x/tools/internal/packagesinternal golang.org/x/tools/internal/pkgbits +golang.org/x/tools/internal/tokeninternal golang.org/x/tools/internal/typeparams golang.org/x/tools/internal/typesinternal # gomodules.xyz/jsonpatch/v2 v2.2.0 From 64041ee4b19618884ec472055abf2666c7e1e9b5 Mon Sep 17 00:00:00 2001 From: Johannes Scheerer Date: Fri, 3 Mar 2023 13:19:03 +0100 Subject: [PATCH 02/12] Pass webhook server namespace to ControlPlane controller --- cmd/gardener-extension-provider-alicloud/app/app.go | 1 + pkg/controller/controlplane/add.go | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/cmd/gardener-extension-provider-alicloud/app/app.go b/cmd/gardener-extension-provider-alicloud/app/app.go index 1ec8df390..c877512a5 100644 --- a/cmd/gardener-extension-provider-alicloud/app/app.go +++ b/cmd/gardener-extension-provider-alicloud/app/app.go @@ -238,6 +238,7 @@ func NewControllerManagerCommand(ctx context.Context) *cobra.Command { return fmt.Errorf("could not add webhooks to manager: %w", err) } alicloudcontrolplane.DefaultAddOptions.ShootWebhookConfig = atomicShootWebhookConfig + alicloudcontrolplane.DefaultAddOptions.WebhookServerNamespace = webhookOptions.Server.Namespace if err := controllerSwitches.Completed().AddToManager(mgr); err != nil { return fmt.Errorf("could not add controllers to manager: %w", err) diff --git a/pkg/controller/controlplane/add.go b/pkg/controller/controlplane/add.go index c34f1bb67..ceed8715b 100644 --- a/pkg/controller/controlplane/add.go +++ b/pkg/controller/controlplane/add.go @@ -42,6 +42,8 @@ type AddOptions struct { IgnoreOperationAnnotation bool // ShootWebhookConfig specifies the desired Shoot MutatingWebhooksConfiguration. ShootWebhookConfig *atomic.Value + // WebhookServerNamespace is the namespace in which the webhook server runs. + WebhookServerNamespace string // CSI specifies the configuration for CSI components CSI config.CSI } @@ -53,7 +55,7 @@ func AddToManagerWithOptions(mgr manager.Manager, opts AddOptions) error { Actuator: genericactuator.NewActuator(alicloud.Name, secretConfigsFunc, shootAccessSecretsFunc, nil, nil, nil, controlPlaneChart, controlPlaneShootChart, controlPlaneShootCRDsChart, storageClassChart, nil, NewValuesProvider(opts.CSI), extensionscontroller.ChartRendererFactoryFunc(util.NewChartRendererForShoot), - imagevector.ImageVector(), "", opts.ShootWebhookConfig, mgr.GetWebhookServer().Port), + imagevector.ImageVector(), "", opts.ShootWebhookConfig, opts.WebhookServerNamespace, mgr.GetWebhookServer().Port), ControllerOptions: opts.Controller, Predicates: controlplane.DefaultPredicates(opts.IgnoreOperationAnnotation), Type: alicloud.Type, From 77072853bc3bdd3c69dfcd19f30f05c2dbc7b8a1 Mon Sep 17 00:00:00 2001 From: Johannes Scheerer Date: Fri, 3 Mar 2023 13:20:33 +0100 Subject: [PATCH 03/12] Allow extension to talk to its runtime cluster --- .../templates/deployment.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/charts/gardener-extension-provider-alicloud/templates/deployment.yaml b/charts/gardener-extension-provider-alicloud/templates/deployment.yaml index ca973de47..20133f80f 100644 --- a/charts/gardener-extension-provider-alicloud/templates/deployment.yaml +++ b/charts/gardener-extension-provider-alicloud/templates/deployment.yaml @@ -34,6 +34,8 @@ spec: prometheus.io/port: "{{ .Values.metricsPort }}" {{- end }} labels: + networking.gardener.cloud/to-runtime-apiserver: allowed + networking.gardener.cloud/to-dns: allowed {{ include "labels" . | indent 8 }} spec: priorityClassName: gardener-system-900 From c577af9c63f5b31d0f7c90d80193f0fc588cd2b6 Mon Sep 17 00:00:00 2001 From: Johannes Scheerer Date: Fri, 3 Mar 2023 13:23:21 +0100 Subject: [PATCH 04/12] Allow extension to talk to all shoot kube-apiservers This is needed for the health check of the `Worker` resource. --- .../templates/deployment.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/charts/gardener-extension-provider-alicloud/templates/deployment.yaml b/charts/gardener-extension-provider-alicloud/templates/deployment.yaml index 20133f80f..e92f2ed83 100644 --- a/charts/gardener-extension-provider-alicloud/templates/deployment.yaml +++ b/charts/gardener-extension-provider-alicloud/templates/deployment.yaml @@ -36,6 +36,7 @@ spec: labels: networking.gardener.cloud/to-runtime-apiserver: allowed networking.gardener.cloud/to-dns: allowed + networking.resources.gardener.cloud/to-all-shoots-kube-apiserver-tcp-443: allowed {{ include "labels" . | indent 8 }} spec: priorityClassName: gardener-system-900 From 430407ebe45ddd09e25985ae82552a6d0fa1ff1b Mon Sep 17 00:00:00 2001 From: Johannes Scheerer Date: Fri, 3 Mar 2023 13:24:26 +0100 Subject: [PATCH 05/12] Allow extension to reach out to provider-specific APIs --- .../templates/deployment.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/charts/gardener-extension-provider-alicloud/templates/deployment.yaml b/charts/gardener-extension-provider-alicloud/templates/deployment.yaml index e92f2ed83..ae9d34fff 100644 --- a/charts/gardener-extension-provider-alicloud/templates/deployment.yaml +++ b/charts/gardener-extension-provider-alicloud/templates/deployment.yaml @@ -36,6 +36,8 @@ spec: labels: networking.gardener.cloud/to-runtime-apiserver: allowed networking.gardener.cloud/to-dns: allowed + networking.gardener.cloud/to-public-networks: allowed + networking.gardener.cloud/to-private-networks: allowed networking.resources.gardener.cloud/to-all-shoots-kube-apiserver-tcp-443: allowed {{ include "labels" . | indent 8 }} spec: From 80bc4be9234621be84c0e28b1a057309259e4a0d Mon Sep 17 00:00:00 2001 From: Johannes Scheerer Date: Fri, 3 Mar 2023 13:27:06 +0100 Subject: [PATCH 06/12] Allow access to extension webhook port from world --- .../templates/service.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/charts/gardener-extension-provider-alicloud/templates/service.yaml b/charts/gardener-extension-provider-alicloud/templates/service.yaml index 71966fe01..27730223e 100644 --- a/charts/gardener-extension-provider-alicloud/templates/service.yaml +++ b/charts/gardener-extension-provider-alicloud/templates/service.yaml @@ -3,8 +3,9 @@ kind: Service metadata: name: {{ include "name" . }} namespace: {{ .Release.Namespace }} -{{- if .Values.ignoreResources }} annotations: + networking.resources.gardener.cloud/from-world-to-ports: '[{"protocol":"TCP","port":{{ .Values.webhookConfig.serverPort }}}]' +{{- if .Values.ignoreResources }} resources.gardener.cloud/ignore: "true" {{- end }} labels: From 0f114b6b0000996d8dc4be6527a11fc8a567e684 Mon Sep 17 00:00:00 2001 From: Johannes Scheerer Date: Fri, 3 Mar 2023 13:28:36 +0100 Subject: [PATCH 07/12] Allow extension to be scraped from `seed-prometheus` --- .../templates/service.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/charts/gardener-extension-provider-alicloud/templates/service.yaml b/charts/gardener-extension-provider-alicloud/templates/service.yaml index 27730223e..f28499e39 100644 --- a/charts/gardener-extension-provider-alicloud/templates/service.yaml +++ b/charts/gardener-extension-provider-alicloud/templates/service.yaml @@ -5,6 +5,10 @@ metadata: namespace: {{ .Release.Namespace }} annotations: networking.resources.gardener.cloud/from-world-to-ports: '[{"protocol":"TCP","port":{{ .Values.webhookConfig.serverPort }}}]' + networking.resources.gardener.cloud/from-policy-pod-label-selector: all-seed-scrape-targets + networking.resources.gardener.cloud/from-policy-allowed-ports: '[{"port":{{ .Values.metricsPort }},"protocol":"TCP"}]' + networking.resources.gardener.cloud/namespace-selectors: '[{"matchLabels":{"kubernetes.io/metadata.name":"garden"}}]' + networking.resources.gardener.cloud/pod-label-selector-namespace-alias: extensions {{- if .Values.ignoreResources }} resources.gardener.cloud/ignore: "true" {{- end }} From e9328a18fea09a6efe4ed010e9a03c78a4bab89b Mon Sep 17 00:00:00 2001 From: Johannes Scheerer Date: Fri, 3 Mar 2023 13:38:46 +0100 Subject: [PATCH 08/12] [make generate] --- example/controller-registration.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/controller-registration.yaml b/example/controller-registration.yaml index 230a3d7d1..4362ebedb 100644 --- a/example/controller-registration.yaml +++ b/example/controller-registration.yaml @@ -5,7 +5,7 @@ metadata: name: provider-alicloud type: helm providerConfig: - chart: H4sIAAAAAAAAA+09/XfbNpL7s/4KPGX7Ns2F1Ictu6t9uVvHdlK/JrbOcpPrbff8IBKWWFMkQ5B21I///WYAEAQ/9EEnsd1WeGktAZjBABgMBoMZaEpjlwUsttjHhAXcCwMrisMbz4Us6nuOH6Zu5y+flrqQ9gcD8RdS+a/43NvZ7fUH/b09zO/t7e/v/YUMPrHdjVLKExoT8pc4DJNV9daV/07TdJP5P5zROLEXdO7fqQ2c4L3d3aXz3x/sFee/393vw/x3P3Nfa9OffP5p5L1jMc77kNz0WjSKjK/27sDuWi67abmMO7EXJaLggHzL/DlxkCvIVRiTZMbIa8VI5EBxDRkpPiKatVoBnbMh2YTnWjd1ZDz0aP3x0kbr3w0dexreuY0167/fH/TK6x8EwHb930fqdMhhGC1ibzpLyFPna9Lv9v5OxgcjMj4msLRpIL7QqyvP92jCiBPOIxosbFjnPhFgnMSMs/iGuTa5mHmcQFVG4C+wD7AUc0kaoBhAKXEQUQf+jMOr5JbGjLyRVZ6TG5v0QVA4LEoI5SQIE4ALASS+9ThgCwT4m5PD41MgDFtodTrwL8NQ04jGrSQa6dtd8hQrtFVR++t/IIpFmJI5XWCjJIXGEt0JRRC0jt2GAQgcRm69ZCapkVhsxPGDwhFOEgrVKQBE8O3KrEhooogWaZYk0bDTub29tamg2A7jaUcNGu+ovlpAtYL6PvAZx9H+kHox9HiyICCvAYBOgFaf3ooJm8YMypIQqb6NvcQLps8JVwOOaFyPJ7E3SZPCoGU0QtfNCjBswALtgzE5GbfJy4Pxyfg5Inl/cvHt2fcX5P3B+fnB6cXJ8ZicnZPDs9Ojk4uTs1P49oocnP5Avjs5PXpOmIczCcMZxdgDINPD4QSOQVxjxgokZFsKj5jjXXkOdC2YpnTKyDSEbSGAHpGIxXOP47RyINBFNL439xKaiKxKv+wWVJmGwykKO+RjPiOWQ9q23YF/Nyxww7gzBTLTiQ1z3cnkYv5hRp3rTgZuOWGQxKHvg5iM2RQHTLRsA9qK/CQ2+etThyZENvbu+HwMQ/S1+so+UhgL1lmGEdUu8hIaT6OXqXPNkqHGK3OPAW5hZnKxTeuMQ4l4BKPI8tyj0/E5c8LY1VmWCwN3ElzFgCBOnSSNjervw/iaxfp7G4eTjKB9nBapCbAA+ZCTwiinURQqLUFl4uzhxEDbMXMSkvebFPrdikzs263/y6SN9v+EAYfCdPK7nQQbn/9A/9/f3Z7/7iM1nP/LGfNB9HI7iTY/C67R/3r9nfL87+z0tvrfvaRffrGIy668ALQiPJ21ifXbb62NTmgICvumAGiZeHw6YT4HpSayr9lCYhRf0gns3gz4yPbCDrZWwLEExQ31U0XWL7+AUuP4qauJtYkCXEFIFbZMIGIZkiU1VPuipWovvAD4B7RCAW6fM59RUDZOgbhayjRp3hy2NkkZIVjiXZEZ5aMYyj+SNp/R/mBvCM2+w+ahKaxvJ3RKNEQUe0FyRdpf8X9+xcs1YxaF3EvCeLEKBfSR1SEc3hkhdNbod3lCXBb54WLOgkQd7zVz8M5Nzxyuh14Xf5bUUP7D8uAJi+FwBP/nlh9Op6DPrTENrpH/g+5e+fy/t7PX3cr/+0im/e8KVnWQTLzElp9Qvt30qB+BMGpde4E7JIdy/l+J+W/NWUJdmtAhrH4pMfETMRDp01OyiEBGtjmcTdtQRxoC5bHDOPjMaQAiJec8a1mNFp4NsTHFifgRBBiNORxSWvJ8DaL9VDQDXKqyVAWCMtyCrguzRWzJbFVHGTOOsF8EDkIM8uc0cWYSTIn+Z8soe7aW9mcty7JaDzrwc+rMQCCvHPrldR5+8JfT9mwD+h/3BKwoqupgj3kmmnTkEUyJwz0r8lPYz0yK89XMvYcf7Voan5k0PpKB5AGN+CxMHuH4ZaQ9tmGbh653tdh0jcva2agBM7iesHxmOVgHxlJo6m9xIJhRhAnU9iH5v3xwfoSDTvyjDcP+o428RWHpxpD7dOkmbf/Hf13if2s3vF/rl1YVnntfZ/OZ+qzQF+q6RfovL7PhvJynfuKB9kqD5NJzLy+HJIzQ0hjG/0gli9zjeK2QelmHn26wR/3aRHp+oVFTC6iwgrZ22D9Wanr+C4MrbzqnkSUO/zfMAX6x8FYGr5pY/UFwnf/H7t5O8fy30+0NBtvz330kZXoqmHTeiVk9yyZVGr4KbiJq/xPM8JZGhb1P7mb1prp6rlFAPKJ1djSRLS1M2bZatdQh+l8hE3g5IbtYOyNHtMgviyw6JL8ikpW9LqIzLFoPPWWfNd15/W9m+hFpzfrf7ffL9p9Bf3fr/3Uv6XMtbMUOlmSQ4oqWPFZSizW/ca0X25LbJIpUXgOLgwBi1gtaqsGWoZQgAK5oRPuvVydvLo7P/621HmGKL6XC0YEQoe+VqnwuU0+G7zu2uCyTkh9xCBkJkqo06PPOqEjzuTzwXOKJJ8u7wHPPFxuFT7W5/ClGopnN448zJJsYJv5YvV1iRnjEnZRH4I07qSseZodloyJ2T1yMXs7lYRnPx4/XnEDIgeuWx2PVYbh0Fv6dDfJD2iA+dagfWiH6k6W76v9NokHW6P87g8FO2f9nb6e31f/vI30u/V8zxhc9zMtW9BEeJQva7fGv2ZGMce2MlW3jtKFwlA4dyrTfE7j0KCipd2ieSFolk4nC5/gekAs1A+YIOS46CSSX8jN7LHXQtRzbgOKLRcS4GC3t3N1eg9+uIkDf7Qy+vY6+OnhFshjnLLchVQZkM3JMQE3Hh6jpqABEs3YRQLc3SWOeNGxRwDRrU4IUrUr1XKV24BM0UJ3dAruOmROzJKN4SfE5u8rYTC/azRDbgfJcy6HXreS1fUB95WB0MhZqbYa7kJkRO08T2GWOYa3GAfUvYow6cUYhrOZFXR8KOOwVwCUysSnUpj3oVzbx1LmG0jchdV9SHx364jFeu9W0qiDtJSDLxyEJX7LxjAKHiFE/OdKMVy2RdCGemAZTtjkqS1AM4vNDGiZ6Jutd85YIMu5p2cW9bICkc//BUS4U68YGAOxqzZrhZ4mjb6Y46H7QifyiyvEp56dLGBchbQVi65o5ywI4RtN4SS3LFKFVxeVjIapPRJSFrART9QPGY6yop3euvd+D3bih/pc7cDZQAFfrf73+/l6/pP/tdgdb/797SQW1SbnhSvXnSE/1xlrghrqfcIQ2L52mQRizc8bDNHYyNYQGQaiiuaRkiLPysuomwYekjX4f7aKkaaJkYiMzbzqz6A31oJLng2xQiq29tHXpyyFtNtpVI2Y3Ho7ptx7KmsUbjEwbkq4oEQF7vCCcVOZhmAZqa+cwbngdNVTbPBz/32zWlT2FAMOo2FR5PKAc9oLp9xHMoha0c/rx+0D11S/K2mJRLlwhf5zG00plkSmrZbJCUW5wjtB6y7Oa7U4b3EFq+T5jzjVP58ZllDZm1N4vFtj1qfByJ3+1LxSh9ktg0BFNZqS90fV2+2sx3NJDH8gwSSvtckuoXXmEugOxG5FlDDBMSuw5XO3UYycGIRBMTQDYAqDSjKU6UgOWV02AQ3sJBEec+ZLMKj3BQACa+glRJOBgRSF2UYTY5gGQsBC8OVuCHSMKFT3FHo0w1NCkqjIfG8qDb7SaqBa0JMILgQsWh7l6ondPvuDA+Nbfu91MqZFa4oHj4KI+XS00BZ9o+13WnrVO1sokOLVYSwWXVKuNUt+v0adlIEekCwv8G87nNHBNr6LORuFBeX3LAqbBMiHUsHYmTS0/dK5fGJTIiseqnpa6b6CaSRTilOrWRITEWiCDcP04aRzD/AF+/OL5jL8o6oCKwbhtQts55HgROLy+JYZhtndtSACvb0dE7t6lDZ6doVfhlwLDwsj2Fx1QWTv1nKUES8cwtpTRYMsRxhM3p9WEXkewG/BYxCg3b0aDbt6GZmF5Xrc+RBtgz4AOBcx/j8ab4xdWgKYtvMxMB5u1cUu9xEJRGqaNm3oPsBcStNygV4gSbz47Rfh1UyQVPEveE+ACybWIpQ0IkLMM4kADlHHPGPWTmdikm3fDAF7XB6gaJxNGE0tryC+WKchkCSQgZ7cw9gnsLdS3ONLnriJOwtkC7kSBjSVUpZlbEeDffAwk3Lru37LJLAyvMxG0fgxWQau91UI9wCRLVTss2GmUTrAOH15prUXH4jpsrsdRjzJuyQqDpYpzcwgHPeMnUHpI+3l7GS7Vdh2i96poCZZ6Xa+OblVkTUDpsajr4tMcL4ZLtapVSm6+kpZjk+V1hGh1QgWFmp3Wpy1VZsKy4MZUS6S29Ob44Oj4/PL4zfEhPkRyeXrw9ng8Ojg81jUJEZeqr0CnLDpHX3nMdw3baSEfle6hPs/YmoPveorJ6D15e/D6+B0Qe3Z+efbu+Pz9+clFhdYh6YhXMAw/xk6tY+OqSfK9GxhJzkdxOGFmH/EhmtcsKXY7Ev3tyFn7uVgk9O+1U4uJg3DEXn57cTEyCrzASzzqHzGfLpRAGpJeV9eIQQ30GtOKUIt7IXXQMhvgVS7MJIyyC+TotJo/KlO2ibgRJ6EkdEJ/SC4OR2WrZVw0oWRjqTKHNfbLHOJXEqjDT69bY7DFdBP66Zy9xQNNTZedzPMvS3OsKJfNem3zU5fRMsfiOmIqS8mohzx0FvgLHUWUU1UYDbxdCNDIbHCCewCn1oNKAdE3Q0cpHOenY2A0N0V7zInQUlT28UfmpOYNoeyeOJ2OC+Ygo1doGDqWryoVbSoZ+DVbLH3ZQL99UIIi2iUDxFNQKRQSqdKUunpY94KCCZCEUeiH08V3SGO7+K7CLOSJYBIFIXmvcjYuMY+TXVyb1G18b50lZaR4G7oAt9vPxFIjztyML5vTu47PV9Beew3R0P4PTA5qSJyKlyAnqTtlG1wErIv/2OuW/T8G+9v4j/tJiqk5m9+gn8M8wlf52v/5gvTsfs/qAtcd0kjawj1g+u9gkar7Avu1l7zLlTLzIiESViT9ood6ZKS2xgQUqp652cjLh1HoHmk+eyn47HPfQjS7HMgMgWWjee/TjfUPOv8N1388oU7jh4DXxX909/ZL6x8EwDb+415SOexZTDBNk1kYez/Lh/iuv+Ey+LkY9nwe+qzJmmyy2lQgq4VeXa/jMI1U1PPSoJFWQc/FqqaBl1dzOjDtSWoWoIkWRFw1p1hVWFqLX8wK6oEc9cWwddbkmHDaCFf+alYqms1q88zq0jRT+JwXg7ifqKFC4SpUTY/LD7cowloyOD/7lIq7w+qULLsYrc6IdB12dW6RiPazdhW5E8IQeIHJh1W8QraXsDmgxwu9SPaK5N0in9pKli82E/WEQVlili885DBXRa220ZH6GVk26O22+IMX9ooTs2laun4lgKseTS28tGlWiDxjjRkFoJgjC2HE37IR0psuL33twIkIRubnjBdBfw3UmuTC60yvDamKq1rqalAtCO2NkAEK617hC5WXbYWFCIuNVTLQRgU9kfl5jUrRT+FEfgC1N//QkXEclnRXg8rq5O6YXqKqTWgynGfjJF5B8/JSNaZCF/I2Wg/Ka8/mNJIOrnXzgJDrUQGPhNyh/qoZBRyJB3Wg11l1OYfrkEv1roqw5viwfOE2EUuSRXyGi+WTdrSXcv6/2MYGTSgLYzZkKyhsaVdkY8tdQw9PJz+B0BG7pwQeF66iP4/y/NBqyzZ9ptRQ/5fyuuEJYN35fwCH/VL8R2+wff/1XlJjt/PagBFZXC80GzuebyJ/slYwiIHz79ji5KhJYwaY8jbMMmSFO+HKx0j6BJ5F9EPKHrkHcOP1L53fGwmAdet/v1c+/+/s9Lf2v3tJS5azmOU/id9vZtqTq1apWiejgmFvM6dbfRloVS8e1zonFG/2xP0IjUEHbnRR2Hj+77b+1UlrQzGwbv3vdMv7/+7e/s52/d9HWrX+sxPDgxre8eApLm+LRF2E1wxfaaQ+Z49xX/29pKbrX4ZOibirjZWANeu/t1ON/9kZ7G7X/30kpf+zD1WPK3yeVLuEkrb+6Z/yKSALpytbVcYyX7jLb3Q0WBXa1yyQZ3MlQhqNLGB7L7iBLrqWtCgV1IpVAyQdE/RvHbZf+ezjO5EnBkqMH44TBkzmP6jn8euWhFQGJ3lhv2ZMKhCiBRrDKGUvw0olRrRyyTla4VngxIsoYW5RU1KXsgX6kCz5sIqI5ARyJ3RCpaXRCedfhmJsqcRCV1x2A2TSbm2fci+dttgB2sv7WYl6fegV97hSQ/l/E9HmvwO7Vv7vl/0/+rtb+8/9pJL9B+dXhoW5JSnfrl4YgKhvK1n/Tt0UjEL3QN8UbP56CDS7ofKYHdZq6M5kvBnDVMyTe4HhgikvXnKnMl0kA7b+9uxvrcyxau4FB74f3rLCi8pOlC55LqJKkZ2jsAGu/smI9WAFJ7o5m4fx4k4kSNC7UKEgfyv96E92YNUe1HWxxZhfiS9e5/UGFeSubE6jzKnsQki6WdnO6203gmraSP5Lj887/wD4Ov+fnYr9r9fb2/r/3EuS0aNCUma/7wV6V2pPnRglvGYPYAq8Vsx/DjV3E+jUxX6K5/KFzoDLOzLiTk+uTsNkhD/YACu/ZYa+ozdd1b8ujzkfdL9CgOxGmfzyWwtW+7CVvU7iaqftOrFfFeBCeA+681ZRlu7tvvXWSpw2bnPtVsuIkRmSb7rfdFt5hIHI6LVaRmAQIjL9kPSOZAZPyfgCI3B0ZS2e+4zX1jBdjlZU0x5HK+oQUgl3HJJ+XclL+ZBSr6bICCsEYLz+N8LoVjSufWWGRB3pqlFtQ7LTxdKiU9QKpNItakWFpYGEme2pVY3vGpJ//btVitYSeSWDt0bxhNQ5k+MLZ09I9oL5UHzO3MojmnIZcSbUFVFGiMR7bqxk4xeNc/968+PEDyedOUWTd2eSer7bEag7RyGwZyx+Z1viNuVDJhzCcOqzyzxyXcJadO7u7SowIQfaO3a3rTJuMo2gZ/d69sffd696lV5J1+leXxbYtt1qFez1w5Z+G0CKiN3dHZWVxQT1uv1Bt9UqhsIPDamG0fDDzCGt9eQJQCfoh8TFzywrifScMHtqE5697jBZELRXWPlTCpnsQtSARMpQ/TJDBqila/ZOhBKyLUf3p/6Ju7oH7tTPlWOlzk88DLQ+rh+bq60hnoHrqbcV1BttvR38mr8jVXpFyqk+0iAtPtYV5UlWSb8U1R+89lRmjZEDRdarMH7lQcvQIQ7lgjlLj5gJVlj5hplc70+WPtymcBR/I0ysfyu81SuicOn9v9++Syb/c/2iVJTdY5vF+BNMolbdY15iUp/Uv0X2RDiaCjI8t1f82sevyOelN9WWvqjG/YnNezafU99v6V+aHbbMRdQW2LKdOts/cgNaK5+okS7E7j20OrVN27RN27RN27RN27RN27RN27RN27RN27RN27RN27RN2/Qo0v8DTgKs9wCgAAA= + chart: H4sIAAAAAAAAA+09a3fbtpL9rF+Bo9yeptmQethyenVPdq9jO6lPE0drucl2264PRcISa4pkCNKOmva/7wxeBB960ElspxVOWksAZjAYAIPBYAaaOolHQ5pY9H1KQ+ZHoRUn0ZXvQZYT+G4QZV7nq49LXUhPBgP+F1L5L//c29nt9Qf9vT3M7+09ebL3FRl8ZLsbpYylTkLIV0kUpavqrSv/QtN0k/E/mDlJai+ceXCjNnCA93Z3l45/f7BXHP9+90kfxr/7iftam/7m4+/E/hua4LgPyVWv5cSx8dXeHdhdy6NXLY8yN/HjlBfsk+9pMCcuzgpyESUknVHyQk4ksi9nDRnJeUT01GqFzpwOySZzrnVVR8Zdc+uvlzZa/17k2tPoxm2sWf/9/qBXXv8gALbr/zZSp0MOoniR+NNZSh6635J+t/dPMt4fkfERgaXthPyLc3HhB76TUuJG89gJFzas84BwMEYSymhyRT2bnM18RqAqJfAXpg9MKeqRLEQxgFJiP3Zc+DOOLtJrJ6HkpajymFzZpA+CwqVxShxGwigFuAhAkmufAbaQg788Pjg6AcKwhVanA/8UhppGNG4p0Ujf7pKHWKEti9rf/gtRLKKMzJ0FNkoyaCzVnZAEQevYbWBA6FJy7aczQY3AYiOOnySOaJI6UN0BgBi+XZgViZNKonmapWk87HSur69th1NsR8m0I5nGOrKvFlAtoX4MA8qQ2+8yP4EeTxYE5DUAOBOgNXCu+YBNEwplaYRUXyd+6ofTx4RJhiMaz2dp4k+ytMA0RSN03awAbIMp0N4fk+NxmzzbHx+PHyOSt8dn37/+8Yy83T893T85Oz4ak9en5OD1yeHx2fHrE/j2nOyf/ER+OD45fEyojyMJ7IwT7AGQ6SM7YcYgrjGlBRLUlsJi6voXvgtdC6eZM6VkGsG2EEKPSEyTuc9wWBkQ6CGawJ/7qZPyrEq/7BZUmUbDKQo7nMdsRiyXtG27A/+uaOhFSWcKZGYTG8a6o+Ri/mHmuJcdBW65UZgmURCAmEzoFBnGW7YBbUV+Epv846HrpEQ09ubodAws+lZ+pe8d4AXtLMOIahd5Bo1n8bPMvaTpUOMVuUcAtzAzGd+mdcaBQDwCLtI89/BkfErdKPF0luUB447DiwQQJJmbZolR/W2UXNJEf28jO8kI2sdhEZoADXEeMlLgchbHkdQSZCaOHg4MtJ1QNyV5v0mh363YxL7d+j9P2mj/TynMUBhOdrOTYOPzH+j/T3a357/bSA3H/3xGAxC9zE7jzc+Ca/S/Xn+nPP47O72t/ncr6cMHi3j0wg9BK8LTWZtYf/7Z2uiEhqCwb3KAlokncCY0YKDUxPYlXQiM/Es2gd2bwjyy/aiDrRVwLEFx5QSZJOvDB1Bq3CDzNLE2kYArCKnClglELEOypIZsn7dU7YUfwvwBrZCD26c0oA4oGydAXC1lmjR/DluboIwQLPEvyMxhowTK35M2mzn9wd4Qmn2DzUNTWN9OnSnREHHih+kFaX/N/v01K9dMaBwxP42SxSoU0Edah3B4Y4TQWaPf5QHxaBxEizkNU3m815ODda56Jrvuel38XVJD+Q/Lg6U0gcMR/J9ZQTSdgj63xjS4Rv4Punvl8//ezl53K/9vI5n2vwtY1WE68VNbfEL5dtVzghiEUevSD70hORDj/5yPf2tOU8dzUmcIq19ITPxEDET69JQuYpCRbQZn0zbUEYZAcewwDj5zJwSRks88a1mNFp4NsTE5E/EjCDAnYXBIaYnzNYj2E94MzFKZJSsQlOEWdJ2bLRJLZMs60phxiP0icBCikD93UncmwKTof7SMskdraX/UsiyrdaeMnzvuDATyStYvr3P3zF9O26MN6L/fA7CiqKqD3eeRaNKRezAkLvOtOMhgPzMpzlcz8++e27U0PjJpvCeMZKETs1mU3kP+KdLuG9vmkedfLDZd46K24hpMBs/nlk+Vg3WAl1xTf4WMoEYRJlDbh+T/cub8Aged5Bcb2P6LjXPLgaWbQO7DpZu0/R//dY7/rd3w/qhfWlV45n+rxjMLaKEvjucV6T8/V+w8n2dB6oP26oTpue+dnw9JFKOlMUr+lYkpcov8WiH1VIcfbrBH/dFEen4mrskFVFhBWzvsXys1Pf9F4YU/nTuxxQ//V9SF+WLhrQxeNdH6g+A6/4/dvZ3i+W+n2xsMtue/20jS9FQw6bzho/paDaowfBXcROT+xyfDKycu7H1iN6s31dXPGgnEYqfOjsazhYVJbatVSx2i/wMyYS6nZBdrK3J4i+y8OEWH5A9EsrLXRXSGReuuh+yTphuv/81MPzytWf+7/X7Z/jPo7279v24lfaqFLaeDJSZIcUWLOVZSi/V8Y1ovtsVsEygycQ3MDwKIWS9ooQZbhlKCALiiEe3Pz49fnh2d/qq1Hm6KL6XC0YEQru+VqnwqU4/C9wNdnJdJyY84hIw4SVUa9HlnVKT5VBx4zvHEo/LO8Nzz2bjwsTaXvwUnmtk8/jos2cQw8dfq7RIzwj3upDgCb9xJXfFAHZaNitg9fjF6PheHZTwf319zAiH7nlfmx6rDcOks/IUx+S5tEB/L6rtWiP5m6ab6f5NokDX6/85gsFP2/9nb6W31/9tIn0r/1xPjsx7mRSv6CI+SBe32+NfsiJq4tprKtnHakDhKhw5p2u9xXJoLUuodmCeSVslkIvG5gQ/kQs2QulyO804CyaV8ZY91XHQtxzag+GwRU8a5pZ2722vw21UE6Lut4Nvr6KuDlyRzPqvchlQZkM3IMQE1He/iplwBiGbtIoBub5IlLG3YIodp1qYAKVqV6meV3IGP0UD1+hqm65i6CU0VxUuKT+mFmmZ60W6G2A6l51oOvW4lr+0D6iv7o+MxV2sV7kKmInaepbDLHMFaTUInOEsw6sQdRbCaF3V9KOCwVwCXyMSmUJv2oV9q4B33EkpfRo73zAnQoS8Z47VbTasS0l4CspwPafSMjmcOzBDO9eNDPfGqJYIuxJM44ZRujsriFIP4fJdFqR7Jete8JYKM+Vp2MV8xSDj37x/mQrGONwBgV2vWsJ+mrr6ZYqD7QSfyiyo3cBg7WTJxEdKWILaumU9ZAMdoGj+tnTJFaFlxOS949QmPshCVYKh+wniMFfX0zrX3JdiNG+p/uQNnAwVwtf4Hmt+Tsv632x1s/f9uJRXUJumGK9SfQz3UG2uBG+p+3BHavHSahlFCTymLssRVaogThpGM5hKSIVHlZdVNgA9JG/0+2kVJ00TJxEZm/nRmOVeOD5X8AGSDVGztpa0LXw5hs9GuGgm98pGn3/soaxYvMTJtSLq8hAfssYJwkpkHURbKrZ0B3/A6aii3eTj+v9ysK3sSAYZR0an0eEA57IfTH2MYRS1o5877H0PZ16Aoa4tFuXCF/HGWTCuVeaaopmSFpNyYOVzrLY+q2p02uIPU8n1G3UuWzY3LKG3MqL1fLEzXh9zLnfzDPpOE2s9ggo6cdEbaG11vt7/l7BYe+kCGSVppl1tC7coj1A2I3Ygsg8EwKInvMrlTj90EhEA4NQFgC4BKM5rpSA1YXjUBDu0lEAxx5ktSVXqAgQBOFqREkoDMiiPsIg+xzQMgYSH4c7oEO0YUSnqKPRphqKFJVWU8zBsoTCFNr6PkEi8yy+s6UlTkPmd4sgyia+ptBu/BJG8GEWcTmMmWrNMYOvGvMDZ1I/DlAi2C5RRYbAYbHrNKTnepG1u7uzs55jXS6Dutb0vJKEbTj2A5LQ5yPU+rIWzBQIJY/+x2lXYo1O1910XpeLJ69+ELThtCVXvWuk1LJL7ki7VklE612igLgpqDiYiIiXVhQRBE87kTeqZ7VmejOKu8vmXB6sMyvjtgbTWKVhC5l08NSkTFI1lPj/ZLqGYShTiF3jrhscUWCHMURG6WJDB+gB+/+AFlT4vKtFypzDah7RxyvAhdVt8SxXjlmzbEgde3w0Ogb9IGU8aIVfiF5LXwiYCnHdD9O/UzS0rojmG1KqPBlmMMzG5Oqwm9jmCQRAkP9m7ejAbdvA09hYXhw3oXb4BdAR1wmP8ejTfHz80pTVt4pmwwm7Vx7fiphbtBlDVu6i3AngnQcoN+Idy++egU4dcNkdCULXHhggskV8eWNsBBXiuIfQ1Qxj2jTpDOuLbTvBsG8Lo+QNUknVAntfRR4+mykwZZAgnI6TXwPoW9xYGtDunzVhEn4GwOdyzBxgKq0sw1fymhOQ8E3LruX9MJbMyXSgSt58EqaLm3WqhQmWTJagcFg5dUrtbhw7vBtehoUofN8xkqpMZ1Y4FZsji3KzHQM34D7ZG0H7eX4ZJt1yF6K4uWYKlXmuvolkXWBJQey/E8fOPk6XCperrqtJCvpOXYRHkdIVqdkNG1Zqe1lifLTFgaXplqidCWXh7tHx6dnh+9PDrAF13OT/ZfHY1H+wdHuiYh/Hb6OSjnRS/zC58GnmGELuTj6WWoD4a2nsE3PQ4qeo9f7b84egPEvj49f/3m6PTt6fFZhdYh6fDnRAyH0E6th+iqQQr8K+AkY6MkmlCzj/iizwuaFrsd8/52xKj9XiziB5m1Q4uJgXDEXn5/djYyCvzQT30nOKSBs5ACaUh6XV0jATXQb0wrQi1uhdRBy2yAVWehkjDSwJKj02r+qEzZJuKGHynTyI2CITk7GJXNv0nRFqV4KTOHNYbgHOIPEsrDT69bY/nGdBUF2Zy+wgNNTZdd5UKp0hwrimWzXtv82GW0zEO7jpjKUjLq4Rx6HQYLHY6VU1XgBl7ThGitN2aCtw8H7/1KAdFXbIdZAmfYMUw0L0PD1jHXUmT20XvqZuZVq+geP52OC3Y1o1doYTsSz1MVjVMK/JIulj4RoR+RKEER7dsC4imsFHKJVGlK3uGse4rCBEijOAqi6eIHpLFdfKBiFrGUTxIJIeZe5Wxcmjyu8gAwqdvYAUAlae15FXkAt9tXYqnRzNxsXjand908X0H7fb7PaZoa3v/A2gTtKcn4S6CTzJvSDS6C1sX/7HXL9z+DJ9v4n9tJci0yOr9CP5d5jK8ytv/zKenZ/Z7VhcVy4MTiLsSHtfoDyBZ5X2S/8NM3uS5pXiTF3PilX3SRj8zU1piAHtgz90hx+TSKvEM9z57xefapb6GaXQ4p+2X50qT38Zc1dzr+Ddd/MnHcxg9Br4v/6e49Ka1/EADb+J9bSeWwdz7ATpbOosT/XTzEePkdE8HvxbD30yigTdZkk9UmA5kt9Op7kURZLKPelwYNtQrqOVY17dKsmtOBYU8zswAtyyDiqjnFqtxAXPxiVpAPJMkvhom2JseE07bD8lezUtHaV5tnVhcWpcLnvBjE/USyCoUr15B9Jj5cowhriccZ1KeM3x1Xh2TZPVJ1RITruKdzi0S0H7WryN0IWOCH5jys4uWyvYTNheMHV+dEr0jeLfKxrah8vpnIJyzKErN8TyPYXBW12rRI6kdkGdPbbf4HHTbkTFTDtHT9CgBPPppbeGnVrBD7xhozCoybw2Uc0psuK33twEEOOPO7mougdodyTTLudajXhjhByFryalguCO2NogC5UbLwxRF3hIWFCIuNVjLQtAY9Efl5jUrRb9FEfAC1N//QEXE8lnBXhMrS4OCaXsKyTWgymis+8Vfw/LxU8pTrQv5G60F6bdrMiYWDc904IOR6VDBHIuY6waoRBRypD3Wg16q6GMN1yIV6V0VYc3xYvnCbiCUxRQKKi+WjdrRnYvw/28YGTUjDqGLZCgpb2hXd2HLX0MOyyW8gdPjuKYDHhRv0T6M837Xask2fKDXU/4W8bngCWHf+H8BhvxT/0xts3/+9ldQ47KA2YEgU1wvNxoEHm8gf1QoGsTD2A10cHzZpzACT3qYqQ1S4Ea6cR8In9HXsvMvoPfcAb7z+RfBDIwGwZv338LH38vvf2/i/20lLljMf5U9vcau4/27ikHiRRHP0qgg8C50c+T0h+ebnD211hdcets8ORu3HbSxrDze7Cvzz12+aUSB0WvgDpzvU7ixt9iPcX5JSzxJ+rxbMKKnZNscvHSsL/Sx3q+hP8LjMiCZd0+OmuyMbNcyY0HbpUqlwew+tCqTtRkytMjL3ZkHRgz7y+Vm0fENbGzNwC0ECyg4sRLzUy49HBSvwZh76+sLbql6ur3XAKd5e8ztAPucaXYbj+r+Z/Jcn7Q23gXX63063rP/t7j3Z2cr/20ir5L86Md7pxQsaHrjPQZGos+iS4iutTsDofdSrvpTUdP2L0Eked7mxErhO/9vZ65fX/85gd7v+byPJbZW+qzoKokajPZlJW//0V/kUqMJpy1a1scjnUR4bHQ1XhfY2C+TbPHhQGA0tmPZ+eAVd9CxhUSxoCqsYJPxp9G+dtp8H9P0bnscZxfmHfBLRQ+oHNX122RKQ0uAo/EzW8KQCwVtwEuCSehla6CW8lXPG8BaGhm6yiFPqFZUfeSlfoA/JEg8r8UhuIHfiTBxhaXaj+eehGFsqTaELJroBMmm3tk+5c1mb7wDt5f2sRL3f9Yq7X6mh/L+Knea/A71W/lfiv/u7W/vf7aTSsQrHV4SFeiUp365eGIGob0tZ/0beFI0ib1/fFG3+ehA0u6HyqM5fNXQrGW+G3hXzxF5geA6Li7fcF1IXiTjDbx5901L+gHM/3BdHc9PF0I2zJc/FVCmycxQ2wNU/GbMerOD7OafzKFnciAQBehMqJOSfpR/9UmdQ7fhf97YA5lfeF1jnrAkVxK5sDqPIqexCSLpZ2c7rbTeCatpI/gtH5eaCX6Z1/l87vbL/V6+3t/X/upUkgp65pFS/7wd6V2ZP3QQlvJ4eMCnwWjn/OeTcNNepC1nmP5fBdQZc3rERLn18cRKlI/zBFlj5LfPpC/SmrPpX5m9ODLpfI4DyKCAf/mzBah+21OtEno41qBP7VQHOhfegO28VZene7it/rcRp4zbXbrUMU+yQfNf9rtvKA2N4Rq/VMuLZEJHph6Z3JDPmT4TFGPHOK2uxPNShtobpcraimvY4W1GHkEqU7pD060qeiYfUejVFRjQsAKOR3Ij+XNG49pUaEnmkqwZjDslOF0uLTnErkAq3uBUVlsa/KttTqxqWOCQ//9oqBRnyvJLRWqN4QOpiIPCFwwdE/YLBkH9W0RCxkzERKMnVFV5GiMB7aqxk4xfNcwu++XESRJPO3EErdmeS+YHX4ag7hxFMT/ydRypxm/JBCYcomgb0PH9wQcBaztzb25VgXA60d+xuW2ZcKY2gZ/d69vsvu1e9Sq+E63yvLwps2261Cib4YUs/aSFExO7ujsxSoWy9bn/QbbWKLzgMDamGjzgMlUNi68EDgE7RD43xn1mXEukxofbUJky97jJZEH5FlT+lomQXogYkQobql1kUoJau6p0YKWRbru5P/ROXdQ9cghaI0h4rdX5jUaj1cf3YZG0N/gxkTz4JIt9o7O3g1/wdudIrcm71bRFh8bEuHJaqSvqluP7ghS8za4wcKLKeR8lzH1qGDjEo55Oz9Ighnwor3zAU6/3B0ocbJY7ibwTy9W9F13pFFJwe/vf7N+nkfy6floqUH4NZjD/BxmvVPebHB/VB/VuED7ijMSfD93rFr338ivO89Kbi0hcVWTCxWc9mcycIWvqXpoctcxG1OTa1U6v9IzegtfKBGulC7N5dq1PbtE3btE3btE3btE3btE3btE3btE3btE3btE33Kv0/jiLuxACgAAA= values: image: tag: v1.45.0-dev From 0cf681aa4a1cb77c3b616d993caf06beef4369b3 Mon Sep 17 00:00:00 2001 From: Johannes Scheerer Date: Fri, 3 Mar 2023 13:43:55 +0100 Subject: [PATCH 09/12] Adapt `to-shoot-apiserver` policy --- .../machine-controller-manager/seed/templates/deployment.yaml | 2 +- .../alicloud-cloud-controller-manager/templates/deployment.yaml | 2 +- .../charts/csi-alicloud/templates/csi-plugin-controller.yaml | 2 +- .../charts/csi-alicloud/templates/csi-snapshot-controller.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/charts/internal/machine-controller-manager/seed/templates/deployment.yaml b/charts/internal/machine-controller-manager/seed/templates/deployment.yaml index 9d1f7f8b7..01d88e7e7 100644 --- a/charts/internal/machine-controller-manager/seed/templates/deployment.yaml +++ b/charts/internal/machine-controller-manager/seed/templates/deployment.yaml @@ -29,8 +29,8 @@ spec: networking.gardener.cloud/to-public-networks: allowed networking.gardener.cloud/to-private-networks: allowed networking.gardener.cloud/to-seed-apiserver: allowed - networking.gardener.cloud/to-shoot-apiserver: allowed networking.gardener.cloud/from-prometheus: allowed + networking.resources.gardener.cloud/to-kube-apiserver-tcp-443: allowed {{- if .Values.podLabels }} {{ toYaml .Values.podLabels | indent 8 }} {{- end }} diff --git a/charts/internal/seed-controlplane/charts/alicloud-cloud-controller-manager/templates/deployment.yaml b/charts/internal/seed-controlplane/charts/alicloud-cloud-controller-manager/templates/deployment.yaml index f8a0745a4..4d646edb1 100644 --- a/charts/internal/seed-controlplane/charts/alicloud-cloud-controller-manager/templates/deployment.yaml +++ b/charts/internal/seed-controlplane/charts/alicloud-cloud-controller-manager/templates/deployment.yaml @@ -27,9 +27,9 @@ spec: role: cloud-controller-manager networking.gardener.cloud/to-dns: allowed networking.gardener.cloud/to-public-networks: allowed - networking.gardener.cloud/to-shoot-apiserver: allowed networking.gardener.cloud/to-alicloud-networks: allowed networking.gardener.cloud/from-prometheus: allowed + networking.resources.gardener.cloud/to-kube-apiserver-tcp-443: allowed {{- if .Values.podLabels }} {{ toYaml .Values.podLabels | indent 8 }} {{- end }} diff --git a/charts/internal/seed-controlplane/charts/csi-alicloud/templates/csi-plugin-controller.yaml b/charts/internal/seed-controlplane/charts/csi-alicloud/templates/csi-plugin-controller.yaml index a1fe66b60..32e05ceac 100644 --- a/charts/internal/seed-controlplane/charts/csi-alicloud/templates/csi-plugin-controller.yaml +++ b/charts/internal/seed-controlplane/charts/csi-alicloud/templates/csi-plugin-controller.yaml @@ -26,8 +26,8 @@ spec: role: csi-plugin-controller networking.gardener.cloud/to-dns: allowed networking.gardener.cloud/to-public-networks: allowed - networking.gardener.cloud/to-shoot-apiserver: allowed networking.gardener.cloud/to-alicloud-networks: allowed + networking.resources.gardener.cloud/to-kube-apiserver-tcp-443: allowed spec: automountServiceAccountToken: false priorityClassName: gardener-system-300 diff --git a/charts/internal/seed-controlplane/charts/csi-alicloud/templates/csi-snapshot-controller.yaml b/charts/internal/seed-controlplane/charts/csi-alicloud/templates/csi-snapshot-controller.yaml index 8a48c20d4..448b14af0 100644 --- a/charts/internal/seed-controlplane/charts/csi-alicloud/templates/csi-snapshot-controller.yaml +++ b/charts/internal/seed-controlplane/charts/csi-alicloud/templates/csi-snapshot-controller.yaml @@ -24,7 +24,7 @@ spec: app: csi-snapshot-controller role: controller networking.gardener.cloud/to-dns: allowed - networking.gardener.cloud/to-shoot-apiserver: allowed + networking.resources.gardener.cloud/to-kube-apiserver-tcp-443: allowed spec: automountServiceAccountToken: false priorityClassName: gardener-system-200 From baecd26c7e1c028569d3b8fb120997b698a431e0 Mon Sep 17 00:00:00 2001 From: Johannes Scheerer Date: Fri, 3 Mar 2023 13:46:53 +0100 Subject: [PATCH 10/12] Adapt `to-runtime` policy --- .../machine-controller-manager/seed/templates/deployment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/internal/machine-controller-manager/seed/templates/deployment.yaml b/charts/internal/machine-controller-manager/seed/templates/deployment.yaml index 01d88e7e7..6928bd9c5 100644 --- a/charts/internal/machine-controller-manager/seed/templates/deployment.yaml +++ b/charts/internal/machine-controller-manager/seed/templates/deployment.yaml @@ -28,7 +28,7 @@ spec: networking.gardener.cloud/to-dns: allowed networking.gardener.cloud/to-public-networks: allowed networking.gardener.cloud/to-private-networks: allowed - networking.gardener.cloud/to-seed-apiserver: allowed + networking.gardener.cloud/to-runtime-apiserver: allowed networking.gardener.cloud/from-prometheus: allowed networking.resources.gardener.cloud/to-kube-apiserver-tcp-443: allowed {{- if .Values.podLabels }} From 3f1780cc1f51c57f83007de521839bb003b4b296 Mon Sep 17 00:00:00 2001 From: Johannes Scheerer Date: Fri, 3 Mar 2023 14:36:12 +0100 Subject: [PATCH 11/12] Adapt `from-shoot-apiserver` policy --- ...napshot-validation-webhook-deployment.yaml | 1 - ...shot-validation-webhook-networkpolicy.yaml | 26 ------------------- pkg/controller/controlplane/valuesprovider.go | 8 +++++- .../controlplane/valuesprovider_test.go | 3 +++ pkg/webhook/controlplane/ensurer.go | 8 ++++++ pkg/webhook/controlplane/ensurer_test.go | 1 + 6 files changed, 19 insertions(+), 28 deletions(-) delete mode 100644 charts/internal/seed-controlplane/charts/csi-alicloud/templates/csi-snapshot-validation-webhook-networkpolicy.yaml diff --git a/charts/internal/seed-controlplane/charts/csi-alicloud/templates/csi-snapshot-validation-webhook-deployment.yaml b/charts/internal/seed-controlplane/charts/csi-alicloud/templates/csi-snapshot-validation-webhook-deployment.yaml index 089a96f32..8e83c6917 100644 --- a/charts/internal/seed-controlplane/charts/csi-alicloud/templates/csi-snapshot-validation-webhook-deployment.yaml +++ b/charts/internal/seed-controlplane/charts/csi-alicloud/templates/csi-snapshot-validation-webhook-deployment.yaml @@ -19,7 +19,6 @@ spec: {{- end }} labels: app: snapshot-validation - networking.gardener.cloud/from-shoot-apiserver: allowed spec: priorityClassName: gardener-system-200 containers: diff --git a/charts/internal/seed-controlplane/charts/csi-alicloud/templates/csi-snapshot-validation-webhook-networkpolicy.yaml b/charts/internal/seed-controlplane/charts/csi-alicloud/templates/csi-snapshot-validation-webhook-networkpolicy.yaml deleted file mode 100644 index 8c2519500..000000000 --- a/charts/internal/seed-controlplane/charts/csi-alicloud/templates/csi-snapshot-validation-webhook-networkpolicy.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - labels: - app: snapshot-validation - gardener.cloud/role: controlplane - name: allow-kube-apiserver-to-csi-snapshot-validation - namespace: {{ .Release.Namespace }} - annotations: - gardener.cloud/description: "Allows Egress from shoot's kube-apiserver pods to csi-snapshot-validation pods." -spec: - egress: - - ports: - - port: 443 - protocol: TCP - to: - - podSelector: - matchLabels: - app: snapshot-validation - podSelector: - matchLabels: - app: kubernetes - gardener.cloud/role: controlplane - role: apiserver - policyTypes: - - Egress diff --git a/pkg/controller/controlplane/valuesprovider.go b/pkg/controller/controlplane/valuesprovider.go index 498f03ebb..880b43938 100644 --- a/pkg/controller/controlplane/valuesprovider.go +++ b/pkg/controller/controlplane/valuesprovider.go @@ -40,6 +40,7 @@ import ( policyv1beta1 "k8s.io/api/policy/v1beta1" rbacv1 "k8s.io/api/rbac/v1" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime/serializer" autoscalingv1 "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1" @@ -139,7 +140,6 @@ var controlPlaneChart = &chart.Chart{ // csi-snapshot-validation-webhook {Type: &appsv1.Deployment{}, Name: alicloud.CSISnapshotValidation}, {Type: &corev1.Service{}, Name: alicloud.CSISnapshotValidation}, - {Type: &networkingv1.NetworkPolicy{}, Name: "allow-kube-apiserver-to-csi-snapshot-validation"}, {Type: &autoscalingv1.VerticalPodAutoscaler{}, Name: "csi-snapshot-webhook-vpa"}, }, }, @@ -262,6 +262,12 @@ func (vp *valuesProvider) GetControlPlaneChartValues( if err != nil { return nil, err } + + // TODO(scheererj): Delete this in a future release. + if err := kutil.DeleteObject(ctx, vp.Client(), &networkingv1.NetworkPolicy{ObjectMeta: metav1.ObjectMeta{Name: "allow-kube-apiserver-to-csi-snapshot-validation", Namespace: cp.Namespace}}); err != nil { + return nil, fmt.Errorf("failed deleting legacy csi-snapshot-validation network policy: %w", err) + } + // Get control plane chart values return vp.getControlPlaneChartValues(ctx, cpConfig, cp, cluster, secretsReader, checksums, scaledDown) } diff --git a/pkg/controller/controlplane/valuesprovider_test.go b/pkg/controller/controlplane/valuesprovider_test.go index fc64f4c0a..95dcb27f0 100644 --- a/pkg/controller/controlplane/valuesprovider_test.go +++ b/pkg/controller/controlplane/valuesprovider_test.go @@ -30,6 +30,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" corev1 "k8s.io/api/core/v1" + networkingv1 "k8s.io/api/networking/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/utils/pointer" @@ -228,6 +229,8 @@ var _ = Describe("ValuesProvider", func() { By("creating secrets managed outside of this package for whose secretsmanager.Get() will be called") Expect(fakeClient.Create(context.TODO(), &corev1.Secret{ObjectMeta: metav1.ObjectMeta{Name: "ca-provider-alicloud-controlplane", Namespace: namespace}})).To(Succeed()) Expect(fakeClient.Create(context.TODO(), &corev1.Secret{ObjectMeta: metav1.ObjectMeta{Name: "csi-snapshot-validation-server", Namespace: namespace}})).To(Succeed()) + + c.EXPECT().Delete(context.TODO(), &networkingv1.NetworkPolicy{ObjectMeta: metav1.ObjectMeta{Name: "allow-kube-apiserver-to-csi-snapshot-validation", Namespace: cp.Namespace}}) }) It("should return correct control plane chart values", func() { diff --git a/pkg/webhook/controlplane/ensurer.go b/pkg/webhook/controlplane/ensurer.go index d0d64bf26..01a60d3d0 100644 --- a/pkg/webhook/controlplane/ensurer.go +++ b/pkg/webhook/controlplane/ensurer.go @@ -23,12 +23,17 @@ import ( extensionswebhook "github.com/gardener/gardener/extensions/pkg/webhook" gcontext "github.com/gardener/gardener/extensions/pkg/webhook/context" "github.com/gardener/gardener/extensions/pkg/webhook/controlplane/genericmutator" + v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" + gutil "github.com/gardener/gardener/pkg/utils/gardener" "github.com/gardener/gardener/pkg/utils/version" "github.com/go-logr/logr" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" kubeletconfigv1beta1 "k8s.io/kubelet/config/v1beta1" "k8s.io/utils/pointer" + + "github.com/gardener/gardener-extension-provider-alicloud/pkg/alicloud" ) // NewEnsurer creates a new controlplane ensurer. @@ -46,6 +51,9 @@ type ensurer struct { // EnsureKubeAPIServerDeployment ensures that the kube-apiserver deployment conforms to the provider requirements. func (e *ensurer) EnsureKubeAPIServerDeployment(ctx context.Context, gctx gcontext.GardenContext, new, old *appsv1.Deployment) error { ps := &new.Spec.Template.Spec + + metav1.SetMetaDataLabel(&new.Spec.Template.ObjectMeta, gutil.NetworkPolicyLabel(alicloud.CSISnapshotValidation, 443), v1beta1constants.LabelNetworkPolicyAllowed) + if c := extensionswebhook.ContainerWithName(ps.Containers, "kube-apiserver"); c != nil { cluster, err := gctx.GetCluster(ctx) if err != nil { diff --git a/pkg/webhook/controlplane/ensurer_test.go b/pkg/webhook/controlplane/ensurer_test.go index b1316c420..c17e61098 100644 --- a/pkg/webhook/controlplane/ensurer_test.go +++ b/pkg/webhook/controlplane/ensurer_test.go @@ -313,6 +313,7 @@ func checkKubeAPIServerDeployment(dep *appsv1.Deployment, featureGates []string) for _, fg := range featureGates { Expect(c.Command).To(test.ContainElementWithPrefixContaining("--feature-gates=", fg, ",")) } + Expect(dep.Spec.Template.Labels).To(HaveKeyWithValue("networking.resources.gardener.cloud/to-csi-snapshot-validation-tcp-443", "allowed")) } func checkKubeControllerManagerDeployment(dep *appsv1.Deployment) { From c3456f04d14f9c0ecff367b5fa483c46d6925737 Mon Sep 17 00:00:00 2001 From: Johannes Scheerer Date: Fri, 3 Mar 2023 14:41:22 +0100 Subject: [PATCH 12/12] Adapt `from-prometheus` policy --- .../machine-controller-manager/seed/templates/deployment.yaml | 1 - .../machine-controller-manager/seed/templates/service.yaml | 3 +++ .../templates/alicloud-ccm-service.yaml | 3 +++ .../templates/deployment.yaml | 1 - 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/charts/internal/machine-controller-manager/seed/templates/deployment.yaml b/charts/internal/machine-controller-manager/seed/templates/deployment.yaml index 6928bd9c5..7132f8ad5 100644 --- a/charts/internal/machine-controller-manager/seed/templates/deployment.yaml +++ b/charts/internal/machine-controller-manager/seed/templates/deployment.yaml @@ -29,7 +29,6 @@ spec: networking.gardener.cloud/to-public-networks: allowed networking.gardener.cloud/to-private-networks: allowed networking.gardener.cloud/to-runtime-apiserver: allowed - networking.gardener.cloud/from-prometheus: allowed networking.resources.gardener.cloud/to-kube-apiserver-tcp-443: allowed {{- if .Values.podLabels }} {{ toYaml .Values.podLabels | indent 8 }} diff --git a/charts/internal/machine-controller-manager/seed/templates/service.yaml b/charts/internal/machine-controller-manager/seed/templates/service.yaml index d1f2116c2..a57302f9f 100644 --- a/charts/internal/machine-controller-manager/seed/templates/service.yaml +++ b/charts/internal/machine-controller-manager/seed/templates/service.yaml @@ -6,6 +6,9 @@ metadata: labels: app: kubernetes role: machine-controller-manager + annotations: + networking.resources.gardener.cloud/from-policy-pod-label-selector: all-scrape-targets + networking.resources.gardener.cloud/from-policy-allowed-ports: '[{"port":{{ .Values.metricsPort }},"protocol":"TCP"}]' spec: type: ClusterIP clusterIP: None diff --git a/charts/internal/seed-controlplane/charts/alicloud-cloud-controller-manager/templates/alicloud-ccm-service.yaml b/charts/internal/seed-controlplane/charts/alicloud-cloud-controller-manager/templates/alicloud-ccm-service.yaml index 9fc983e10..85cd44396 100644 --- a/charts/internal/seed-controlplane/charts/alicloud-cloud-controller-manager/templates/alicloud-ccm-service.yaml +++ b/charts/internal/seed-controlplane/charts/alicloud-cloud-controller-manager/templates/alicloud-ccm-service.yaml @@ -6,6 +6,9 @@ metadata: labels: app: kubernetes role: cloud-controller-manager + annotations: + networking.resources.gardener.cloud/from-policy-pod-label-selector: all-scrape-targets + networking.resources.gardener.cloud/from-policy-allowed-ports: '[{"port":"10258","protocol":"TCP"}]' spec: type: ClusterIP clusterIP: None diff --git a/charts/internal/seed-controlplane/charts/alicloud-cloud-controller-manager/templates/deployment.yaml b/charts/internal/seed-controlplane/charts/alicloud-cloud-controller-manager/templates/deployment.yaml index 4d646edb1..5c9885059 100644 --- a/charts/internal/seed-controlplane/charts/alicloud-cloud-controller-manager/templates/deployment.yaml +++ b/charts/internal/seed-controlplane/charts/alicloud-cloud-controller-manager/templates/deployment.yaml @@ -28,7 +28,6 @@ spec: networking.gardener.cloud/to-dns: allowed networking.gardener.cloud/to-public-networks: allowed networking.gardener.cloud/to-alicloud-networks: allowed - networking.gardener.cloud/from-prometheus: allowed networking.resources.gardener.cloud/to-kube-apiserver-tcp-443: allowed {{- if .Values.podLabels }} {{ toYaml .Values.podLabels | indent 8 }}