From 08786764e0819feb8d16118cecdc69255d83d4b3 Mon Sep 17 00:00:00 2001 From: Aman Mangal Date: Wed, 2 Apr 2025 16:51:30 +0530 Subject: [PATCH] remove enterprise license completely from dgraph This PR removes the graphql schema that allows making changes to the license of the dgraph cluster. It also removes the /enterpriseLicense endpoint of Zero. --- .github/workflows/ci-dgraph-core-tests.yml | 2 +- .../ci-dgraph-system-upgrade-tests.yml | 1 - .trunk/trunk.yaml | 20 +- dgraph/cmd/alpha/run.go | 2 +- dgraph/cmd/bulk/run.go | 8 +- dgraph/cmd/zero/http.go | 2 +- dgraph/cmd/zero/license.go | 38 - dgraph/cmd/zero/license_ee.go | 158 - dgraph/cmd/zero/pgp.go | 114 - dgraph/cmd/zero/pgp_test.go | 126 - dgraph/cmd/zero/raft.go | 41 - dgraph/cmd/zero/run.go | 8 +- dgraph/cmd/zero/zero.go | 53 - dgraphapi/cluster.go | 34 - edgraph/access_ee.go | 5 - ee/acl/acl_integration_test.go | 16 - ee/audit/audit.go | 2 +- ee/audit/audit_ee.go | 56 +- graphql/admin/admin.go | 70 +- graphql/admin/backup.go | 5 - graphql/admin/endpoints_ee.go | 16 - graphql/admin/enterpriseLicense.go | 51 - graphql/admin/state.go | 2 - graphql/e2e/common/admin.go | 16 - protos/pb.proto | 16 +- protos/pb/pb.pb.go | 2628 ++++++++--------- protos/pb/pb_grpc.pb.go | 37 - query/query.go | 2 +- systest/audit/audit_test.go | 1 + systest/license/docker-compose.yml | 38 - systest/license/integration_test.go | 40 - systest/license/license_test.go | 149 - systest/license/upgrade_test.go | 64 - testutil/graphql.go | 16 - testutil/testaudit/audit.go | 10 +- tlstest/tls/client.acl.crt | 34 +- tlstest/tls/client.acl.key | 50 +- tlstest/tls/node.crt | 36 +- tlstest/tls/node.key | 50 +- worker/cdc_ee.go | 4 +- worker/groups.go | 59 - worker/server_state.go | 9 +- worker/zero.go | 12 - x/x.go | 4 +- 44 files changed, 1380 insertions(+), 2725 deletions(-) delete mode 100644 dgraph/cmd/zero/license.go delete mode 100644 dgraph/cmd/zero/license_ee.go delete mode 100644 dgraph/cmd/zero/pgp.go delete mode 100644 dgraph/cmd/zero/pgp_test.go delete mode 100644 graphql/admin/enterpriseLicense.go delete mode 100644 systest/license/docker-compose.yml delete mode 100644 systest/license/integration_test.go delete mode 100644 systest/license/license_test.go delete mode 100644 systest/license/upgrade_test.go diff --git a/.github/workflows/ci-dgraph-core-tests.yml b/.github/workflows/ci-dgraph-core-tests.yml index 06f12eaeaf1..c23f4fec655 100644 --- a/.github/workflows/ci-dgraph-core-tests.yml +++ b/.github/workflows/ci-dgraph-core-tests.yml @@ -26,7 +26,7 @@ jobs: dgraph-core-tests: if: github.event.pull_request.draft == false runs-on: warp-ubuntu-latest-x64-4x - timeout-minutes: 30 + timeout-minutes: 60 steps: - uses: actions/checkout@v4 - name: Set up Go diff --git a/.github/workflows/ci-dgraph-system-upgrade-tests.yml b/.github/workflows/ci-dgraph-system-upgrade-tests.yml index 8ed7ea89cd1..71c0261e551 100644 --- a/.github/workflows/ci-dgraph-system-upgrade-tests.yml +++ b/.github/workflows/ci-dgraph-system-upgrade-tests.yml @@ -51,7 +51,6 @@ jobs: go test -v -timeout=120m -failfast -tags=upgrade \ github.com/hypermodeinc/dgraph/v24/systest/mutations-and-queries \ github.com/hypermodeinc/dgraph/v24/systest/plugin \ - github.com/hypermodeinc/dgraph/v24/systest/license \ github.com/hypermodeinc/dgraph/v24/systest/multi-tenancy # clean up docker containers after test execution go clean -testcache diff --git a/.trunk/trunk.yaml b/.trunk/trunk.yaml index 63dc4060c9c..1438ca2459c 100644 --- a/.trunk/trunk.yaml +++ b/.trunk/trunk.yaml @@ -2,7 +2,7 @@ # To learn more about the format of this file, see https://docs.trunk.io/reference/trunk-yaml version: 0.1 cli: - version: 1.22.10 + version: 1.22.11 # Trunk provides extensibility via plugins. (https://docs.trunk.io/plugins) plugins: @@ -26,24 +26,24 @@ lint: - contrib/** - protos/pb/pb.pb.go enabled: - - trivy@0.59.1 + - trivy@0.61.0 - actionlint@1.7.7 - - checkov@3.2.372 + - checkov@3.2.395 - dotenv-linter@3.3.0 - git-diff-check - gofmt@1.20.4 - - golangci-lint@1.64.5 + - golangci-lint@1.64.8 - hadolint@2.12.1-beta - markdownlint@0.44.0 - - osv-scanner@1.9.2 + - osv-scanner@2.0.0 - oxipng@9.1.4 - - prettier@3.5.1 - - renovate@39.176.4 + - prettier@3.5.3 + - renovate@39.222.4 - shellcheck@0.10.0 - shfmt@3.6.0 - - tflint@0.55.1 - - trufflehog@3.88.11 - - yamllint@1.35.1 + - tflint@0.56.0 + - trufflehog@3.88.20 + - yamllint@1.37.0 actions: enabled: - trunk-announce diff --git a/dgraph/cmd/alpha/run.go b/dgraph/cmd/alpha/run.go index 9af3a327388..d0355cb6f97 100644 --- a/dgraph/cmd/alpha/run.go +++ b/dgraph/cmd/alpha/run.go @@ -605,7 +605,7 @@ func setupServer(closer *z.Closer) { for { if x.HealthCheck() == nil { // Audit is enterprise feature. - x.Check(audit.InitAuditorIfNecessary(worker.Config.Audit, worker.EnterpriseEnabled)) + x.Check(audit.InitAuditorIfNecessary(worker.Config.Audit)) break } time.Sleep(500 * time.Millisecond) diff --git a/dgraph/cmd/bulk/run.go b/dgraph/cmd/bulk/run.go index 187c7e4d6f3..e97975b2322 100644 --- a/dgraph/cmd/bulk/run.go +++ b/dgraph/cmd/bulk/run.go @@ -27,7 +27,6 @@ import ( "github.com/hypermodeinc/dgraph/v24/filestore" "github.com/hypermodeinc/dgraph/v24/protos/pb" "github.com/hypermodeinc/dgraph/v24/tok" - "github.com/hypermodeinc/dgraph/v24/worker" "github.com/hypermodeinc/dgraph/v24/x" ) @@ -195,12 +194,7 @@ func run() { // Need to set zero addr in WorkerConfig before checking the license. x.WorkerConfig.ZeroAddr = []string{opt.ZeroAddr} x.WorkerConfig.TLSClientConfig = tlsConf - if !worker.EnterpriseEnabled() { - // Crash since the enterprise license is not enabled.. - log.Fatal("Enterprise License needed for the Encryption feature.") - } else { - log.Printf("Encryption feature enabled.") - } + log.Printf("Encryption feature enabled.") } fmt.Printf("Encrypted input: %v; Encrypted output: %v\n", opt.Encrypted, opt.EncryptedOut) diff --git a/dgraph/cmd/zero/http.go b/dgraph/cmd/zero/http.go index 2a5420de89d..ebcf116c0f5 100644 --- a/dgraph/cmd/zero/http.go +++ b/dgraph/cmd/zero/http.go @@ -238,7 +238,7 @@ func (s *Server) zeroHealth(ctx context.Context) (*api.Response, error) { if ctx.Err() != nil { return nil, errors.Wrap(ctx.Err(), "http request context error") } - health := pb.HealthInfo{ + health := &pb.HealthInfo{ Instance: "zero", Address: x.WorkerConfig.MyAddr, Status: "healthy", diff --git a/dgraph/cmd/zero/license.go b/dgraph/cmd/zero/license.go deleted file mode 100644 index 9adbb51e72f..00000000000 --- a/dgraph/cmd/zero/license.go +++ /dev/null @@ -1,38 +0,0 @@ -//go:build oss -// +build oss - -/* - * SPDX-FileCopyrightText: © Hypermode Inc. - * SPDX-License-Identifier: Apache-2.0 - */ - -package zero - -import ( - "net/http" - - "github.com/dgraph-io/ristretto/v2/z" - "github.com/hypermodeinc/dgraph/v24/protos/pb" -) - -// dummy function as enterprise features are not available in oss binary. -func (n *node) proposeTrialLicense() error { - return nil -} - -// periodically checks the validity of the enterprise license and updates the membership state. -func (n *node) updateEnterpriseState(closer *z.Closer) { - closer.Done() -} - -func (st *state) applyEnterpriseLicense(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotFound) -} - -func (s *Server) applyLicenseFile(path string) { - return -} - -func (s *Server) license() *pb.License { - return nil -} diff --git a/dgraph/cmd/zero/license_ee.go b/dgraph/cmd/zero/license_ee.go deleted file mode 100644 index 8cedcc25df2..00000000000 --- a/dgraph/cmd/zero/license_ee.go +++ /dev/null @@ -1,158 +0,0 @@ -//go:build !oss -// +build !oss - -/* - * SPDX-FileCopyrightText: © Hypermode Inc. - */ - -package zero - -import ( - "context" - "io" - "math" - "net/http" - "os" - "time" - - humanize "github.com/dustin/go-humanize" - "github.com/golang/glog" - "google.golang.org/protobuf/proto" - - "github.com/dgraph-io/ristretto/v2/z" - "github.com/hypermodeinc/dgraph/v24/ee/audit" - "github.com/hypermodeinc/dgraph/v24/protos/pb" - "github.com/hypermodeinc/dgraph/v24/x" -) - -// proposeTrialLicense proposes an enterprise license valid for 30 days. -func (n *node) proposeTrialLicense() error { - // Apply enterprise license valid for 30 days from now. - proposal := &pb.ZeroProposal{ - License: &pb.License{ - MaxNodes: math.MaxUint64, - ExpiryTs: time.Now().UTC().Add(humanize.Month).Unix(), - }, - } - err := n.proposeAndWait(context.Background(), proposal) - if err != nil { - return err - - } - glog.Infof("Enterprise trial license proposed to the cluster: %v", proposal) - return nil -} - -func (s *Server) license() *pb.License { - s.RLock() - defer s.RUnlock() - return proto.Clone(s.state.GetLicense()).(*pb.License) -} - -func (s *Server) expireLicense() { - s.Lock() - defer s.Unlock() - s.state.License.Enabled = false -} - -// periodically checks the validity of the enterprise license and -// 1. Sets license.Enabled to false in membership state if license has expired. -// 2. Prints out warning once every day a week before the license is set to expire. -func (n *node) updateEnterpriseState(closer *z.Closer) { - defer closer.Done() - - interval := 5 * time.Second - ticker := time.NewTicker(interval) - defer ticker.Stop() - - intervalsInDay := int64(24*time.Hour) / int64(interval) - var counter int64 - crashLearner := func() { - if n.RaftContext.IsLearner { - glog.Errorf("Enterprise License missing or expired. " + - "Learner nodes need an Enterprise License.") - // Signal the zero node to stop. - n.server.closer.Signal() - } - } - for { - select { - case <-ticker.C: - counter++ - license := n.server.license() - if !license.GetEnabled() { - crashLearner() - continue - } - - expiry := time.Unix(license.GetExpiryTs(), 0).UTC() - timeToExpire := expiry.Sub(time.Now().UTC()) - // We only want to print this log once a day. - if counter%intervalsInDay == 0 && timeToExpire > 0 && timeToExpire < humanize.Week { - glog.Warningf("Your enterprise license will expire in %s. To continue using enterprise "+ - "features after %s, apply a valid license. To get a new license, contact us at "+ - "https://dgraph.io/contact.", humanize.Time(expiry), humanize.Time(expiry)) - } - - active := time.Now().UTC().Before(expiry) - if !active { - n.server.expireLicense() - audit.Close() - - glog.Warningf("Your enterprise license has expired and enterprise features are " + - "disabled. To continue using enterprise features, apply a valid license. " + - "To receive a new license, contact us at https://dgraph.io/contact.") - crashLearner() - } - case <-closer.HasBeenClosed(): - return - } - } -} - -// applyEnterpriseLicense accepts a PGP message as a POST request body, verifies that it was -// signed using our private key and applies the license which has maxNodes and Expiry to the -// cluster. -func (st *state) applyEnterpriseLicense(w http.ResponseWriter, r *http.Request) { - x.AddCorsHeaders(w) - if r.Method == "OPTIONS" { - return - } - if r.Method != http.MethodPost { - w.WriteHeader(http.StatusBadRequest) - x.SetStatus(w, x.ErrorInvalidMethod, "Invalid method") - return - } - - w.Header().Set("Content-Type", "application/json") - b, err := io.ReadAll(r.Body) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - x.SetStatus(w, x.ErrorInvalidRequest, err.Error()) - return - } - - ctx, cancel := context.WithTimeout(context.Background(), time.Minute) - defer cancel() - if _, err := st.zero.ApplyLicense(ctx, &pb.ApplyLicenseRequest{License: b}); err != nil { - w.WriteHeader(http.StatusBadRequest) - x.SetStatus(w, x.ErrorInvalidRequest, err.Error()) - return - } - if _, err := w.Write([]byte(`{"code": "Success", "message": "License applied."}`)); err != nil { - glog.Errorf("Unable to send http response. Err: %v\n", err) - } -} - -func (s *Server) applyLicenseFile(path string) { - content, err := os.ReadFile(path) - if err != nil { - glog.Infof("Unable to apply license at %v due to error %v", path, err) - return - } - ctx, cancel := context.WithTimeout(context.Background(), time.Minute) - defer cancel() - if _, err = s.ApplyLicense(ctx, &pb.ApplyLicenseRequest{License: content}); err != nil { - glog.Infof("Unable to apply license at %v due to error %v", path, err) - } -} diff --git a/dgraph/cmd/zero/pgp.go b/dgraph/cmd/zero/pgp.go deleted file mode 100644 index 419f0da1126..00000000000 --- a/dgraph/cmd/zero/pgp.go +++ /dev/null @@ -1,114 +0,0 @@ -/* - * SPDX-FileCopyrightText: © Hypermode Inc. - * SPDX-License-Identifier: Apache-2.0 - */ - -package zero - -import ( - "encoding/json" - "io" - - "github.com/pkg/errors" - "golang.org/x/crypto/openpgp" - "golang.org/x/crypto/openpgp/armor" -) - -const publicKey = `-----BEGIN PGP PUBLIC KEY BLOCK----- - -mQINBF1bQAwBEACe+uIPgsfTmgLVDlJhdfzUH+ff774fn/Lqf0kLactHR8I6yI3h -JO6i47IhM45VJLY0ZzXntCaItavm35NGdVuA3yPJv7YkSLTPkg5D2VHyZknb52lD -JQbtyuBQK+OZiRfekbZtAfKOljFyPxr1d9Vdw0H4jYRjNK1k3iGERUf8254Y0Wqx -wz+iMLXxlDcWnq0VBSjs+bQqr61iViIIC1S1vHKsl2Sk0QBMjYrTqyttJbGQOy00 -tCMy7ZFMIIEJz8Fg0XiY4d2cmIJlvRoxVpaTWE+W9wxssR4ZqOhLGUAnermScKDc -2aTERdDhG30oW/c8KLXpCKzcUc8IEETeMcBhWRzxgi1CcQEk9KhwfBQdezvY2PyE -EjhOoFZ8ryWCrOnlNgzSnFPtohbx8VD+HctJZ5foaq5ceH+YvH5zasBG/plQXO5A -hwAc8BhGdP4jvFUIBOUyjGHlj7UcqKSDDm2uIV9XjoRfCKPav62VQKRSJXvlBdZe -2uGxgZJ6TmgI2bHa0uQn5kDdQ7CYT9NYu+qXNVNxRZ8w5eTIeDxRIeAas8G5i7eO -dzEV47wN6CkK/8vVu9vXbfiGkH6Cz32zBr1py2kW+n/D8XR5ZlbsV7P2ne3VXOv9 -WTXSUFpkV1OrGY33j6Lg6OmcVhHTtCDDwCaB4iCHXDTVq9Yh2Er+ADIVtwARAQAB -tDtEZ3JhcGggTGFicyAoRGdyYXBoIExhYnMgTGljZW5zaW5nIEtleSkgPGNvbnRh -Y3RAZGdyYXBoLmlvPokCTgQTAQoAOBYhBA95WEve8LWjE9TFvnomeeH3SyppBQJd -W0AMAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEHomeeH3SyppWkEP/2ob -D9fMOSzHzs9B/sUVOBWZrA8YWb3NiB1o4oINxeAcuJ27VlejnMqA1ePYKzUoqRu+ -DkapdgQzLq9pBLhZoIQ8Q6rIww5cIfh4LaY5VSjH9fDTO3Kck85KjAWI6Q7sfcic -A4k3s6ay2zCfU2c3TX9uiLv0VehzJEDto/bKixvrUEfQdlEKFrgWQjipb1Et3wHW -kUAoDvpCLYVcQdmtNtWv1banGPUeYXhxou30w+vgbi3H+2bG61I8f0kWPz6YOavM -v3XM37Fdh6dg5zUH+Rq4vFBomqmGmdauuQ9HWCstJ8cQZF098s20VpU54bG38fvO -fzCXk5cMaG4U27CprvDskQbqlfB3ZCrbTzkvjWF4yvB2Ih6YzjT7lbZMD8CKMcBC -SN3AtJH8XfF8j2GSNMmlP9oU8lW0PANfqRGCBMM78mmAmBVDTvxvoxMyCKSr/buu -Ydyx56u1dvSdP8Wkkl4dpiIrdb0YzwvdVLxhPfNc2WaFJ6Awq95Y991iMwtU41Xu -uwDZ+GAV8f20NEtaw+qvxAN0eXbjFzvXYAqpevDfzzMTu48dEhfeu2Ykj0GixWQk -bGLJhKKRwcc/HJwDGeoSl8lN9RwdVRGg5v5LzUQswUx6Nk5CC+hU4UNZT6MS+asA -aAbA+Y9Is79grWnNQEuXunJOtwX8bojnWIPJec6/uQINBF1bQAwBEACdgeaYbJS7 -GLyelAvX7/Axj209biX5hT2s97Gv+TwNz0DpJh9ptOd5ThAoZJe7ggeMvEUEfV9+ -/W6STBrpuJzFRhUypCIB1lfYl3E3HyqvVOol7Xxm781QEEq1q9t/OaNQ+uT4IzCG -jR8Kae45pXPPfSba3Ma4NIWBTQyQgqy2FZSvTklA4Dvod7BkHoGsZIap6Pk/1Buc -VyeQ0aR8BIx9ROmPosuYWEwpNkahi+K5iM200Nw+PMaISI2SZN0vAgZHuoTd8pyu -xNidBGEQ4/9nJHPVPxr70j4MjN2U80rKEYO1cyTaR22t0QuIWDSJjuaLY++VHIA6 -cf63HFNgfUaOJhUQenJeZ46yk/C8gO96+0z5gtnIE1gl4h2k4M9MfzvJAotDa6Nx -5/4ehpwLWc+NGtC00DbTxfOhEMn2VbQfxELXUgZbLmq+k0zsE0xcxoA3YnO1KVpN -8TQ7pD5UTqNRCHzNmuvI6BYpf7tAfPuwDnCwYNZ0MYXJK8zg6UUORU61iF5Y6ap7 -3i0XzdXe9lxLJjBVgard5Onns+opBggP5rm7s5hXpF1RWYHpZWsLsZUSzwmAkv05 -dRKWfacVyH8/zeMfKQzF9jL+ibVytvkUHOjAvYRnFtUaFjvKpzEWMNyIIq2wlAA1 -oO+No8rldhjWKXG0ognvf43kBWlMSKcPgQARAQABiQI2BBgBCgAgFiEED3lYS97w -taMT1MW+eiZ54fdLKmkFAl1bQAwCGwwACgkQeiZ54fdLKmmTjhAAmODrhyGRYGs2 -GCEY76iQFCjfgYsssG6RwJvDuFZ7o4UbU6FPZ+ebuPtqCA4tys6tGd4tZVem9nnd -WoiaqMNetYXHNEXtZqw07b4fiAp8aVt1N5sVaRLTvZCOyH/EwlG/wNLA7wNko3I2 -n+js3ogE4dz1Ru9iR2OUKMtUUwytxbZSCPFq+/3IJI9O0EE1yYjLP8wLBGblL6Rf -Qa0VSFKegZD0WUy93JDR9Qnt3DJKh6YvjTJnwLe6Rl2rgMGryzZQa6EBo5D/MoS4 -pEyBEUMc2vB3RLLQsX39Ld3p/Pq2T69Mfytqw+crKImse1UavVQDskCTQDhBH/Jw -5+LfMUQEB5xhF7xHS0tpOlt/k/AjNCddnLZ00A34PhjY+sDftpWaC9uK0sikeN43 -R+lNMJ39xejsFUWSJM3HmnELs4JAg/DwZ0kiS6/ffKFoXi771PuOcJpNxcYG5y3I -k09Ao2v2RwWQayli/ysAENStfiWS/fVl5tlDaYGDqF0G9haMA1XPnptrgg4S3ADx -E4Hf9ymxdCLfuVsJ0dPkqv/nWsEMIVQmFVZvWs8iz8JR7Wh6/L1KJ+HpxekqoZgq -836PkLFlKGgKJw2nP5lDJIpst/qnf8hzyGQUJnjiVh3SWNpIvH8Zhrz2BQtgJhUF -43jJL0ZpKmjIPPYbx+4TjyF8T5cSCvE= -=wx6r ------END PGP PUBLIC KEY BLOCK-----` - -// verifySignature verifies the signature given a public key. It also JSON unmarshals the details -// of the license and stores them in l. -func verifySignature(signedFile, publicKey io.Reader, l *license) error { - entityList, err := openpgp.ReadArmoredKeyRing(publicKey) - if err != nil { - return errors.Wrapf(err, "while reading public key") - } - - // The signed file is expected to be have ASCII encoding, so we have to decode it before - // reading. - b, err := armor.Decode(signedFile) - if err != nil { - return errors.Wrapf(err, "while decoding license file") - } - - md, err := openpgp.ReadMessage(b.Body, entityList, nil, nil) - if err != nil { - return errors.Wrapf(err, "while reading PGP message from license file") - } - - // We need to read the body for the signature verification check to happen. - // md.Signature would be non-nil after reading the body if the verification is successful. - buf, err := io.ReadAll(md.UnverifiedBody) - if err != nil { - return errors.Wrapf(err, "while reading body from signed license file") - } - // This could be nil even if signature verification failed, so we also check Signature == nil - // below. - if md.SignatureError != nil { - return errors.Wrapf(md.SignatureError, - "signature error while trying to verify license file") - } - if md.Signature == nil { - return errors.New("invalid signature while trying to verify license file") - } - - err = json.Unmarshal(buf, l) - if err != nil { - return errors.Wrapf(err, "while JSON unmarshaling body of license file") - } - if l.User == "" || l.MaxNodes == 0 || l.Expiry.IsZero() { - return errors.Errorf("invalid JSON data, fields shouldn't be zero: %+v\n", l) - } - return nil -} diff --git a/dgraph/cmd/zero/pgp_test.go b/dgraph/cmd/zero/pgp_test.go deleted file mode 100644 index 44a6e6b778d..00000000000 --- a/dgraph/cmd/zero/pgp_test.go +++ /dev/null @@ -1,126 +0,0 @@ -/* - * SPDX-FileCopyrightText: © Hypermode Inc. - * SPDX-License-Identifier: Apache-2.0 - */ - -package zero - -import ( - "bytes" - "crypto" - "testing" - "time" - - "github.com/stretchr/testify/require" - "golang.org/x/crypto/openpgp" - "golang.org/x/crypto/openpgp/armor" - "golang.org/x/crypto/openpgp/packet" -) - -func encodePublicKey(t *testing.T, e *openpgp.Entity) *bytes.Buffer { - b := new(bytes.Buffer) - encodedKeyBuf, err := armor.Encode(b, openpgp.PublicKeyType, nil) - require.NoError(t, err) - require.NoError(t, e.Serialize(encodedKeyBuf)) - require.NoError(t, encodedKeyBuf.Close()) - return b -} - -func signAndWriteMessage(t *testing.T, entity *openpgp.Entity, json string) *bytes.Buffer { - b := new(bytes.Buffer) - w, err := openpgp.Sign(b, entity, nil, &packet.Config{ - RSABits: 4096, - DefaultHash: crypto.SHA512, - }) - require.NoError(t, err) - - _, err = w.Write([]byte(json)) - require.NoError(t, err) - - require.NoError(t, w.Close()) - - // armor encode the message - abuf := new(bytes.Buffer) - w, err = armor.Encode(abuf, "PGP MESSAGE", nil) - require.NoError(t, err) - _, err = w.Write(b.Bytes()) - require.NoError(t, err) - - require.NoError(t, w.Close()) - - return abuf -} - -func TestEnterpriseDetails(t *testing.T) { - correctEntity, err := openpgp.NewEntity("correct", "", "correct@correct.com", &packet.Config{ - RSABits: 4096, - DefaultHash: crypto.SHA512, - }) - - require.NoError(t, err) - incorrectEntity, err := openpgp.NewEntity("incorrect", "", "incorrect@incorrect.com", &packet.Config{ - RSABits: 4096, - DefaultHash: crypto.SHA512, - }) - require.NoError(t, err) - correctJSON := `{"user": "user", "max_nodes": 10, "expiry": "2019-08-16T19:09:06+10:00"}` - correctTime, err := time.Parse(time.RFC3339, "2019-08-16T19:09:06+10:00") - require.NoError(t, err) - - var tests = []struct { - name string - signingEntity *openpgp.Entity - json string - verifyingEntity *openpgp.Entity - expectError bool - expectedOutput license - }{ - { - "Signing JSON with empty data should return an error", - correctEntity, - `{}`, - correctEntity, - true, - license{}, - }, - { - "Signing JSON with incorrect private key should return an error", - incorrectEntity, - correctJSON, - correctEntity, - true, - license{}, - }, - { - "Verifying data with incorrect public key should return an error", - correctEntity, - correctJSON, - incorrectEntity, - true, - license{}, - }, - { - "Verifying data with correct public key should return correct data", - correctEntity, - correctJSON, - correctEntity, - false, - license{"user", 10, correctTime}, - }, - } - - for _, tt := range tests { - t.Logf("Running: %s\n", tt.name) - buf := signAndWriteMessage(t, tt.signingEntity, tt.json) - e := license{} - publicKey := encodePublicKey(t, tt.verifyingEntity) - err = verifySignature(buf, publicKey, &e) - if tt.expectError { - require.Error(t, err) - continue - } - - require.NoError(t, err) - require.Equal(t, tt.expectedOutput, e) - } -} diff --git a/dgraph/cmd/zero/raft.go b/dgraph/cmd/zero/raft.go index 54a7dcfe872..b7b3d76ecc3 100644 --- a/dgraph/cmd/zero/raft.go +++ b/dgraph/cmd/zero/raft.go @@ -30,7 +30,6 @@ import ( "github.com/dgraph-io/ristretto/v2/z" "github.com/hypermodeinc/dgraph/v24/conn" - "github.com/hypermodeinc/dgraph/v24/ee/audit" "github.com/hypermodeinc/dgraph/v24/protos/pb" "github.com/hypermodeinc/dgraph/v24/x" ) @@ -450,26 +449,6 @@ func (n *node) applyProposal(e raftpb.Entry) (uint64, error) { } } - if p.License != nil { - // Check that the number of nodes in the cluster should be less than MaxNodes, otherwise - // reject the proposal. - numNodes := len(state.GetZeros()) - for _, group := range state.GetGroups() { - numNodes += len(group.GetMembers()) - } - if uint64(numNodes) > p.GetLicense().GetMaxNodes() { - return key, errInvalidProposal - } - state.License = p.License - // Check expiry and set enabled accordingly. - expiry := time.Unix(state.License.ExpiryTs, 0).UTC() - state.License.Enabled = time.Now().UTC().Before(expiry) - if state.License.Enabled && opts.audit != nil { - if err := audit.InitAuditor(opts.audit, 0, n.Id); err != nil { - glog.Errorf("error while initializing audit logs %+v", err) - } - } - } if p.Snapshot != nil { if err := n.applySnapshot(p.Snapshot); err != nil { glog.Errorf("While applying snapshot: %v\n", err) @@ -581,13 +560,6 @@ func (n *node) proposeNewCID() { glog.Errorf("While proposing CID: %v. Retrying...", err) time.Sleep(3 * time.Second) } - - // Apply trial license only if not already licensed and no enterprise license provided. - if n.server.license() == nil && Zero.Conf.GetString("enterprise_license") == "" { - if err := n.proposeTrialLicense(); err != nil { - glog.Errorf("while proposing trial license to cluster: %v", err) - } - } } func (n *node) checkForCIDInEntries() (bool, error) { @@ -899,7 +871,6 @@ func (n *node) Run() { lastLead := uint64(math.MaxUint64) var leader bool - licenseApplied := false ticker := time.NewTicker(tickDur) defer ticker.Stop() @@ -914,7 +885,6 @@ func (n *node) Run() { }() go n.snapshotPeriodically(closer) - go n.updateEnterpriseState(closer) go n.updateZeroMembershipPeriodically(closer) go n.checkQuorum(closer) go n.RunReadIndexLoop(closer, readStateCh) @@ -1049,17 +1019,6 @@ func (n *node) Run() { " Num entries: %d. Num committed entries: %d. MustSync: %v", timer.String(), len(rd.Entries), len(rd.CommittedEntries), rd.MustSync) } - - // Apply license when I am the leader. - if !licenseApplied && n.AmLeader() { - licenseApplied = true - // Apply the EE License given on CLI which may over-ride previous - // license, if present. That is an intended behavior to allow customers - // to apply new/renewed licenses. - if license := Zero.Conf.GetString("enterprise_license"); len(license) > 0 { - go n.server.applyLicenseFile(license) - } - } } } } diff --git a/dgraph/cmd/zero/run.go b/dgraph/cmd/zero/run.go index 2ca4625d7ad..18b92852d56 100644 --- a/dgraph/cmd/zero/run.go +++ b/dgraph/cmd/zero/run.go @@ -282,6 +282,13 @@ func run() { if nodeId == 0 { log.Fatalf("ERROR: raft.idx flag cannot be 0. Please set idx to a unique positive integer.") } + + if opts.audit != nil { + if err := audit.InitAuditor(opts.audit, 0, nodeId); err != nil { + glog.Errorf("error while initializing audit logs %+v", err) + } + } + grpcListener, err := setupListener(addr, x.PortZeroGrpc+opts.portOffset, "grpc") x.Check(err) httpListener, err := setupListener(addr, x.PortZeroHTTP+opts.portOffset, "http") @@ -311,7 +318,6 @@ func run() { baseMux.HandleFunc("/removeNode", st.removeNode) baseMux.HandleFunc("/moveTablet", st.moveTablet) baseMux.HandleFunc("/assign", st.assign) - baseMux.HandleFunc("/enterpriseLicense", st.applyEnterpriseLicense) } baseMux.HandleFunc("/debug/jemalloc", x.JemallocHandler) zpages.Handle(baseMux, "/debug/z") diff --git a/dgraph/cmd/zero/zero.go b/dgraph/cmd/zero/zero.go index 06cf8b6880b..647bb6f5cdc 100644 --- a/dgraph/cmd/zero/zero.go +++ b/dgraph/cmd/zero/zero.go @@ -6,11 +6,9 @@ package zero import ( - "bytes" "context" "crypto/tls" "math" - "strings" "sync" "time" @@ -32,12 +30,6 @@ var ( errServerShutDown = errors.New("Server is being shut down") ) -type license struct { - User string `json:"user"` - MaxNodes uint64 `json:"max_nodes"` - Expiry time.Time `json:"expiry"` -} - // Server implements the zero server. type Server struct { x.SafeMutex @@ -511,12 +503,6 @@ func (s *Server) Connect(ctx context.Context, return nil, err } - if m.Learner && !ms.License.GetEnabled() { - // Update the "ShouldCrash" function in x/x.go if you change the error message here. - return nil, errors.New("ENTERPRISE_ONLY_LEARNER - Missing or expired Enterpise License. " + - "Cannot add Learner Node.") - } - if m.ClusterInfoOnly { // This request only wants to access the membership state, and nothing else. Most likely // from our clients. @@ -651,12 +637,6 @@ func (s *Server) Connect(ctx context.Context, }, nil } - maxNodes := s.state.GetLicense().GetMaxNodes() - if s.state.GetLicense().GetEnabled() && uint64(numberOfNodes) >= maxNodes { - return nil, errors.Errorf("ENTERPRISE_LIMIT_REACHED: You are already using the maximum "+ - "number of nodes: [%v] permitted for your enterprise license.", maxNodes) - } - if err := s.Node.proposeAndWait(ctx, proposal); err != nil { return &emptyConnectionState, err } @@ -870,36 +850,3 @@ func (s *Server) latestMembershipState(ctx context.Context) (*pb.MembershipState } return ms, nil } - -func (s *Server) ApplyLicense(ctx context.Context, req *pb.ApplyLicenseRequest) (*pb.Status, - error) { - var l license - signedData := bytes.NewReader(req.License) - if err := verifySignature(signedData, strings.NewReader(publicKey), &l); err != nil { - return nil, errors.Wrapf(err, "while extracting enterprise details from the license") - } - - numNodes := len(s.state.GetZeros()) - for _, group := range s.state.GetGroups() { - numNodes += len(group.GetMembers()) - } - if uint64(numNodes) > l.MaxNodes { - return nil, errors.Errorf("Your license only allows [%v] (Alpha + Zero) nodes. "+ - "You have: [%v].", l.MaxNodes, numNodes) - } - - proposal := &pb.ZeroProposal{ - License: &pb.License{ - User: l.User, - MaxNodes: l.MaxNodes, - ExpiryTs: l.Expiry.Unix(), - }, - } - - err := s.Node.proposeAndWait(ctx, proposal) - if err != nil { - return nil, errors.Wrapf(err, "while proposing enterprise license state to cluster") - } - glog.Infof("Enterprise license proposed to the cluster %+v", proposal) - return &pb.Status{}, nil -} diff --git a/dgraphapi/cluster.go b/dgraphapi/cluster.go index edf182a3081..e84f386fb13 100644 --- a/dgraphapi/cluster.go +++ b/dgraphapi/cluster.go @@ -59,7 +59,6 @@ type HTTPClient struct { *HttpToken adminURL string graphqlURL string - licenseURL string stateURL string dqlURL string dqlMutateUrl string @@ -625,37 +624,6 @@ func (hc *HTTPClient) PostPersistentQuery(query, sha string) ([]byte, error) { return hc.RunGraphqlQuery(params, false) } -// Apply license using http endpoint -func (hc *HTTPClient) ApplyLicenseHTTP(licenseKey []byte) (*LicenseResponse, error) { - respBody, err := hc.doPost(licenseKey, hc.licenseURL, "application/text") - if err != nil { - return nil, errors.Wrap(err, "error applying license") - } - var enterpriseResponse LicenseResponse - if err = json.Unmarshal(respBody, &enterpriseResponse); err != nil { - return nil, errors.Wrap(err, "error unmarshaling the license response") - } - - return &enterpriseResponse, nil -} - -// Apply license using graphql endpoint -func (hc *HTTPClient) ApplyLicenseGraphQL(license []byte) ([]byte, error) { - params := GraphQLParams{ - Query: `mutation ($license: String!) { - enterpriseLicense(input: {license: $license}) { - response { - code - } - } - }`, - Variables: map[string]interface{}{ - "license": string(license), - }, - } - return hc.RunGraphqlQuery(params, true) -} - func (hc *HTTPClient) GetZeroState() (*LicenseResponse, error) { response, err := http.Get(hc.stateURL) if err != nil { @@ -791,14 +759,12 @@ func IsHigherVersion(higher, lower, repoDir string) (bool, error) { func GetHttpClient(alphaUrl, zeroUrl string) (*HTTPClient, error) { adminUrl := "http://" + alphaUrl + "/admin" graphQLUrl := "http://" + alphaUrl + "/graphql" - licenseUrl := "http://" + zeroUrl + "/enterpriseLicense" stateUrl := "http://" + zeroUrl + "/state" dqlUrl := "http://" + alphaUrl + "/query" dqlMutateUrl := "http://" + alphaUrl + "/mutate" return &HTTPClient{ adminURL: adminUrl, graphqlURL: graphQLUrl, - licenseURL: licenseUrl, stateURL: stateUrl, dqlURL: dqlUrl, dqlMutateUrl: dqlMutateUrl, diff --git a/edgraph/access_ee.go b/edgraph/access_ee.go index 175b24ea631..0e04907f105 100644 --- a/edgraph/access_ee.go +++ b/edgraph/access_ee.go @@ -52,11 +52,6 @@ func (s *Server) Login(ctx context.Context, return nil, err } - if !worker.EnterpriseEnabled() { - return nil, errors.New("Enterprise features are disabled. You can enable them by " + - "supplying the appropriate license file to Dgraph Zero using the HTTP endpoint.") - } - ctx, span := otrace.StartSpan(ctx, "server.Login") defer span.End() diff --git a/ee/acl/acl_integration_test.go b/ee/acl/acl_integration_test.go index 18c70ce90a3..8ff101f94a5 100644 --- a/ee/acl/acl_integration_test.go +++ b/ee/acl/acl_integration_test.go @@ -260,22 +260,6 @@ func (asuite *AclTestSuite) TestGuardianOnlyAccessForAdminEndpoints() { guardianErr: "Nothing to be leased", guardianData: `{"assign": null}`, }, - { - name: "enterpriseLicense has guardian auth", - query: ` - mutation { - enterpriseLicense(input: {license: ""}) { - response { - code - } - } - }`, - queryName: "enterpriseLicense", - testGuardianAccess: true, - guardianErr: "while extracting enterprise details from the license: while decoding" + - " license file: EOF", - guardianData: `{"enterpriseLicense": null}`, - }, { name: "getGQLSchema has guardian auth", query: ` diff --git a/ee/audit/audit.go b/ee/audit/audit.go index a5e2f425b52..2715abb3ff2 100644 --- a/ee/audit/audit.go +++ b/ee/audit/audit.go @@ -17,7 +17,7 @@ func GetAuditConf(conf string) *x.LoggerConf { return nil } -func InitAuditorIfNecessary(conf *x.LoggerConf, eeEnabled func() bool) error { +func InitAuditorIfNecessary(conf *x.LoggerConf) error { return nil } diff --git a/ee/audit/audit_ee.go b/ee/audit/audit_ee.go index c2eaf025505..f86de316edd 100644 --- a/ee/audit/audit_ee.go +++ b/ee/audit/audit_ee.go @@ -12,7 +12,6 @@ import ( "math" "os" "sync/atomic" - "time" "github.com/golang/glog" @@ -54,9 +53,7 @@ const ( var auditor = &auditLogger{} type auditLogger struct { - log *x.Logger - tick *time.Ticker - closer *z.Closer + log *x.Logger } func GetAuditConf(conf string) *x.LoggerConf { @@ -96,17 +93,11 @@ func readAuditEncKey(conf *z.SuperFlag) ([]byte, error) { // InitAuditorIfNecessary accepts conf and enterprise edition check function. // This method keep tracks whether cluster is part of enterprise edition or not. // It pools eeEnabled function every five minutes to check if the license is still valid or not. -func InitAuditorIfNecessary(conf *x.LoggerConf, eeEnabled func() bool) error { +func InitAuditorIfNecessary(conf *x.LoggerConf) error { if conf == nil { return nil } - if err := InitAuditor(conf, uint64(worker.GroupId()), worker.NodeId()); err != nil { - return err - } - auditor.tick = time.NewTicker(time.Minute * 5) - auditor.closer = z.NewCloser(1) - go trackIfEEValid(conf, eeEnabled) - return nil + return InitAuditor(conf, uint64(worker.GroupId()), worker.NodeId()) } // InitAuditor initializes the auditor. @@ -118,8 +109,8 @@ func InitAuditor(conf *x.LoggerConf, gId, nId uint64) error { ntype = NodeTypeZero } var err error - if auditor.log, err = x.InitLogger(conf, - fmt.Sprintf(defaultAuditFilenameF, ntype, gId, nId)); err != nil { + filename := fmt.Sprintf(defaultAuditFilenameF, ntype, gId, nId) + if auditor.log, err = x.InitLogger(conf, filename); err != nil { return err } atomic.StoreUint32(&auditEnabled, 1) @@ -127,37 +118,6 @@ func InitAuditor(conf *x.LoggerConf, gId, nId uint64) error { return nil } -// trackIfEEValid tracks enterprise license of the cluster. -// Right now alpha doesn't know about the enterprise/licence. -// That's why we needed to track if the current node is part of enterprise edition cluster -func trackIfEEValid(conf *x.LoggerConf, eeEnabledFunc func() bool) { - defer auditor.closer.Done() - var err error - for { - select { - case <-auditor.tick.C: - if !eeEnabledFunc() && atomic.CompareAndSwapUint32(&auditEnabled, 1, 0) { - glog.Infof("audit logs are disabled") - auditor.log.Sync() - auditor.log = nil - continue - } - - if atomic.LoadUint32(&auditEnabled) != 1 { - if auditor.log, err = x.InitLogger(conf, - fmt.Sprintf(defaultAuditFilenameF, NodeTypeAlpha, worker.GroupId(), - worker.NodeId())); err != nil { - continue - } - atomic.StoreUint32(&auditEnabled, 1) - glog.Infof("audit logs are enabled") - } - case <-auditor.closer.HasBeenClosed(): - return - } - } -} - // Close stops the ticker and sync the pending logs in buffer. // It also sets the log to nil, because its being called by zero when license expires. // If license added, InitLogger will take care of the file. @@ -165,12 +125,6 @@ func Close() { if atomic.LoadUint32(&auditEnabled) == 0 { return } - if auditor.tick != nil { - auditor.tick.Stop() - } - if auditor.closer != nil { - auditor.closer.SignalAndWait() - } auditor.log.Sync() auditor.log = nil glog.Infoln("audit logs are closed.") diff --git a/graphql/admin/admin.go b/graphql/admin/admin.go index 8ed293bc1c1..931b747bcf3 100644 --- a/graphql/admin/admin.go +++ b/graphql/admin/admin.go @@ -38,13 +38,13 @@ const ( // GraphQL schema for /admin endpoint. graphqlAdminSchema = ` """ - The Int64 scalar type represents a signed 64‐bit numeric non‐fractional value. + The Int64 scalar type represents a signed 64-bit numeric non-fractional value. Int64 can represent values in range [-(2^63),(2^63 - 1)]. """ scalar Int64 """ - The UInt64 scalar type represents an unsigned 64‐bit numeric non‐fractional value. + The UInt64 scalar type represents an unsigned 64-bit numeric non-fractional value. UInt64 can represent values in range [0,(2^64 - 1)]. """ scalar UInt64 @@ -140,7 +140,6 @@ const ( maxRaftId: UInt64 removed: [Member] cid: String - license: License """ Contains list of namespaces. Note that this is not stored in proto's MembershipState and computed at the time of query. @@ -177,13 +176,6 @@ const ( moveTs: UInt64 } - type License { - user: String - maxNodes: UInt64 - expiryTs: Int64 - enabled: Boolean - } - directive @dgraph(type: String, pred: String) on OBJECT | INTERFACE | FIELD_DEFINITION directive @id on FIELD_DEFINITION directive @secret(field: String!, pred: String) on OBJECT | INTERFACE @@ -505,21 +497,20 @@ var ( "getGroup": minimalAdminQryMWs, } adminMutationMWConfig = map[string]resolve.MutationMiddlewares{ - "backup": gogMutMWs, - "config": gogMutMWs, - "draining": gogMutMWs, - "export": stdAdminMutMWs, // dgraph handles the export for other namespaces by guardian of galaxy - "login": minimalAdminMutMWs, - "restore": gogMutMWs, - "shutdown": gogMutMWs, - "removeNode": gogMutMWs, - "moveTablet": gogMutMWs, - "assign": gogMutMWs, - "enterpriseLicense": gogMutMWs, - "updateGQLSchema": stdAdminMutMWs, - "addNamespace": gogAclMutMWs, - "deleteNamespace": gogAclMutMWs, - "resetPassword": gogAclMutMWs, + "backup": gogMutMWs, + "config": gogMutMWs, + "draining": gogMutMWs, + "export": stdAdminMutMWs, // dgraph handles the export for other namespaces by guardian of galaxy + "login": minimalAdminMutMWs, + "restore": gogMutMWs, + "shutdown": gogMutMWs, + "removeNode": gogMutMWs, + "moveTablet": gogMutMWs, + "assign": gogMutMWs, + "updateGQLSchema": stdAdminMutMWs, + "addNamespace": gogAclMutMWs, + "deleteNamespace": gogAclMutMWs, + "resetPassword": gogAclMutMWs, // for queries and mutations related to User/Group, dgraph handles Guardian auth, // so no need to apply GuardianAuth Middleware "addUser": minimalAdminMutMWs, @@ -737,21 +728,20 @@ func newAdminResolver( func newAdminResolverFactory() resolve.ResolverFactory { adminMutationResolvers := map[string]resolve.MutationResolverFunc{ - "addNamespace": resolveAddNamespace, - "backup": resolveBackup, - "config": resolveUpdateConfig, - "deleteNamespace": resolveDeleteNamespace, - "draining": resolveDraining, - "export": resolveExport, - "login": resolveLogin, - "resetPassword": resolveResetPassword, - "restore": resolveRestore, - "shutdown": resolveShutdown, - "removeNode": resolveRemoveNode, - "moveTablet": resolveMoveTablet, - "assign": resolveAssign, - "enterpriseLicense": resolveEnterpriseLicense, - "restoreTenant": resolveTenantRestore, + "addNamespace": resolveAddNamespace, + "backup": resolveBackup, + "config": resolveUpdateConfig, + "deleteNamespace": resolveDeleteNamespace, + "draining": resolveDraining, + "export": resolveExport, + "login": resolveLogin, + "resetPassword": resolveResetPassword, + "restore": resolveRestore, + "shutdown": resolveShutdown, + "removeNode": resolveRemoveNode, + "moveTablet": resolveMoveTablet, + "assign": resolveAssign, + "restoreTenant": resolveTenantRestore, } rf := resolverFactoryWithErrorMsg(errResolverNotFound). diff --git a/graphql/admin/backup.go b/graphql/admin/backup.go index a7395ca4bca..9b7461507c3 100644 --- a/graphql/admin/backup.go +++ b/graphql/admin/backup.go @@ -25,11 +25,6 @@ type backupInput struct { func resolveBackup(ctx context.Context, m schema.Mutation) (*resolve.Resolved, bool) { glog.Info("Got backup request") - if !worker.EnterpriseEnabled() { - err := fmt.Errorf("you must enable enterprise features first. " + - "Supply the appropriate license file to Dgraph Zero using the HTTP endpoint") - return resolve.EmptyResult(m, err), false - } input, err := getBackupInput(m) if err != nil { diff --git a/graphql/admin/endpoints_ee.go b/graphql/admin/endpoints_ee.go index 7c707eb5ca5..3eb02ac9d62 100644 --- a/graphql/admin/endpoints_ee.go +++ b/graphql/admin/endpoints_ee.go @@ -459,17 +459,6 @@ const adminTypes = ` message: String namespace: UInt64 } - - input EnterpriseLicenseInput { - """ - The contents of license file as a String. - """ - license: String! - } - - type EnterpriseLicensePayload { - response: Response - } ` const adminMutations = ` @@ -542,11 +531,6 @@ const adminMutations = ` any user in any namespace. """ resetPassword(input: ResetPasswordInput!): ResetPasswordPayload - - """ - Apply enterprise license. - """ - enterpriseLicense(input: EnterpriseLicenseInput!): EnterpriseLicensePayload ` const adminQueries = ` diff --git a/graphql/admin/enterpriseLicense.go b/graphql/admin/enterpriseLicense.go deleted file mode 100644 index 6dadcb3c88f..00000000000 --- a/graphql/admin/enterpriseLicense.go +++ /dev/null @@ -1,51 +0,0 @@ -/* - * SPDX-FileCopyrightText: © Hypermode Inc. - * SPDX-License-Identifier: Apache-2.0 - */ - -package admin - -import ( - "context" - "encoding/json" - - "github.com/hypermodeinc/dgraph/v24/graphql/resolve" - "github.com/hypermodeinc/dgraph/v24/graphql/schema" - "github.com/hypermodeinc/dgraph/v24/protos/pb" - "github.com/hypermodeinc/dgraph/v24/worker" -) - -type enterpriseLicenseInput struct { - License string -} - -func resolveEnterpriseLicense(ctx context.Context, m schema.Mutation) (*resolve.Resolved, bool) { - input, err := getEnterpriseLicenseInput(m) - if err != nil { - return resolve.EmptyResult(m, err), false - } - - if _, err = worker.ApplyLicenseOverNetwork( - ctx, - &pb.ApplyLicenseRequest{License: []byte(input.License)}, - ); err != nil { - return resolve.EmptyResult(m, err), false - } - - return resolve.DataResult(m, - map[string]interface{}{m.Name(): response("Success", "License applied.")}, - nil, - ), true -} - -func getEnterpriseLicenseInput(m schema.Mutation) (*enterpriseLicenseInput, error) { - inputArg := m.ArgValue(schema.InputArgName) - inputBytes, err := json.Marshal(inputArg) - if err != nil { - return nil, inputArgError(err) - } - - var input enterpriseLicenseInput - err = schema.Unmarshal(inputBytes, &input) - return &input, inputArgError(err) -} diff --git a/graphql/admin/state.go b/graphql/admin/state.go index 9a18ec60fe7..b9cc07313bf 100644 --- a/graphql/admin/state.go +++ b/graphql/admin/state.go @@ -29,7 +29,6 @@ type membershipState struct { MaxRaftId uint64 `json:"maxRaftId,omitempty"` Removed []*pb.Member `json:"removed,omitempty"` Cid string `json:"cid,omitempty"` - License *pb.License `json:"license,omitempty"` Namespaces []uint64 `json:"namespaces,omitempty"` } @@ -117,7 +116,6 @@ func convertToGraphQLResp(ms pb.MembershipState, listNs bool) membershipState { state.MaxRaftId = ms.MaxRaftId state.Removed = ms.Removed state.Cid = ms.Cid - state.License = ms.License state.Namespaces = []uint64{} for ns := range namespaces { diff --git a/graphql/e2e/common/admin.go b/graphql/e2e/common/admin.go index ad41df184ce..786b4760607 100644 --- a/graphql/e2e/common/admin.go +++ b/graphql/e2e/common/admin.go @@ -425,12 +425,6 @@ func adminState(t *testing.T) { forceGroupId } cid - license { - user - expiryTs - enabled - maxNodes - } } }`, } @@ -452,12 +446,6 @@ func adminState(t *testing.T) { MaxRaftId uint64 Removed []*pb.Member Cid string - License struct { - User string - ExpiryTs int64 - Enabled bool - MaxNodes uint64 - } } } @@ -533,8 +521,4 @@ func adminState(t *testing.T) { require.Equal(t, state.Removed, result.State.Removed) } require.Equal(t, state.Cid, result.State.Cid) - require.Equal(t, state.License.User, result.State.License.User) - require.Equal(t, state.License.ExpiryTs, result.State.License.ExpiryTs) - require.Equal(t, state.License.MaxNodes, result.State.License.MaxNodes) - require.Equal(t, state.License.Enabled, result.State.License.Enabled) } diff --git a/protos/pb.proto b/protos/pb.proto index 27ec4f22ec6..bc276019135 100644 --- a/protos/pb.proto +++ b/protos/pb.proto @@ -132,13 +132,6 @@ message Group { uint64 checkpoint_ts = 5; // Stores checkpoint ts as seen by leader. } -message License { - string user = 1; - uint64 maxNodes = 2; - int64 expiryTs = 3; - bool enabled = 4; -} - message ZeroProposal { reserved 8; // Was used for string key. map snapshot_ts = 1; // Group ID -> Snapshot Ts. @@ -150,7 +143,7 @@ message ZeroProposal { uint64 maxRaftId = 6; api.TxnContext txn = 7; string cid = 9; // Used as unique identifier for the cluster. - License license = 10; + reserved 10; // was used for license ZeroSnapshot snapshot = 11; // Used to make Zeros take a snapshot. // 12 has already been used. DeleteNsRequest delete_ns = 13; // Used to delete namespace. @@ -170,7 +163,7 @@ message MembershipState { uint64 maxRaftId = 6; repeated Member removed = 7; string cid = 8; // Used to uniquely identify the Dgraph cluster. - License license = 9; + reserved 9; // was used for License // 10 has already been used. } @@ -582,7 +575,6 @@ service Zero { rpc DeleteNamespace(DeleteNsRequest) returns (Status) {} rpc RemoveNode(RemoveNodeRequest) returns (Status) {} rpc MoveTablet(MoveTabletRequest) returns (Status) {} - rpc ApplyLicense(ApplyLicenseRequest) returns (Status) {} } service Worker { @@ -655,10 +647,6 @@ message MoveTabletRequest { uint32 dstGroup = 3; } -message ApplyLicenseRequest { - bytes license = 1; -} - message SnapshotMeta { uint64 client_ts = 1; uint32 group_id = 2; diff --git a/protos/pb/pb.pb.go b/protos/pb/pb.pb.go index 9cb0535fdf4..7a98e0405cd 100644 --- a/protos/pb/pb.pb.go +++ b/protos/pb/pb.pb.go @@ -78,7 +78,7 @@ func (x DirectedEdge_Op) Number() protoreflect.EnumNumber { // Deprecated: Use DirectedEdge_Op.Descriptor instead. func (DirectedEdge_Op) EnumDescriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{19, 0} + return file_pb_proto_rawDescGZIP(), []int{18, 0} } type Mutations_DropOp int32 @@ -133,7 +133,7 @@ func (x Mutations_DropOp) Number() protoreflect.EnumNumber { // Deprecated: Use Mutations_DropOp.Descriptor instead. func (Mutations_DropOp) EnumDescriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{20, 0} + return file_pb_proto_rawDescGZIP(), []int{19, 0} } // HintType represents a hint that will be passed along the mutation and used @@ -190,7 +190,7 @@ func (x Metadata_HintType) Number() protoreflect.EnumNumber { // Deprecated: Use Metadata_HintType.Descriptor instead. func (Metadata_HintType) EnumDescriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{21, 0} + return file_pb_proto_rawDescGZIP(), []int{20, 0} } type Posting_ValType int32 @@ -269,7 +269,7 @@ func (x Posting_ValType) Number() protoreflect.EnumNumber { // Deprecated: Use Posting_ValType.Descriptor instead. func (Posting_ValType) EnumDescriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{28, 0} + return file_pb_proto_rawDescGZIP(), []int{27, 0} } type Posting_PostingType int32 @@ -318,7 +318,7 @@ func (x Posting_PostingType) Number() protoreflect.EnumNumber { // Deprecated: Use Posting_PostingType.Descriptor instead. func (Posting_PostingType) EnumDescriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{28, 1} + return file_pb_proto_rawDescGZIP(), []int{27, 1} } type SchemaUpdate_Directive int32 @@ -370,7 +370,7 @@ func (x SchemaUpdate_Directive) Number() protoreflect.EnumNumber { // Deprecated: Use SchemaUpdate_Directive.Descriptor instead. func (SchemaUpdate_Directive) EnumDescriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{41, 0} + return file_pb_proto_rawDescGZIP(), []int{40, 0} } type NumLeaseType int32 @@ -419,7 +419,7 @@ func (x NumLeaseType) Number() protoreflect.EnumNumber { // Deprecated: Use NumLeaseType.Descriptor instead. func (NumLeaseType) EnumDescriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{56, 0} + return file_pb_proto_rawDescGZIP(), []int{55, 0} } type DropOperation_DropOp int32 @@ -471,7 +471,7 @@ func (x DropOperation_DropOp) Number() protoreflect.EnumNumber { // Deprecated: Use DropOperation_DropOp.Descriptor instead. func (DropOperation_DropOp) EnumDescriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{65, 0} + return file_pb_proto_rawDescGZIP(), []int{63, 0} } type BackupKey_KeyType int32 @@ -535,7 +535,7 @@ func (x BackupKey_KeyType) Number() protoreflect.EnumNumber { // Deprecated: Use BackupKey_KeyType.Descriptor instead. func (BackupKey_KeyType) EnumDescriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{68, 0} + return file_pb_proto_rawDescGZIP(), []int{66, 0} } type List struct { @@ -1515,77 +1515,6 @@ func (x *Group) GetCheckpointTs() uint64 { return 0 } -type License struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` - MaxNodes uint64 `protobuf:"varint,2,opt,name=maxNodes,proto3" json:"maxNodes,omitempty"` - ExpiryTs int64 `protobuf:"varint,3,opt,name=expiryTs,proto3" json:"expiryTs,omitempty"` - Enabled bool `protobuf:"varint,4,opt,name=enabled,proto3" json:"enabled,omitempty"` -} - -func (x *License) Reset() { - *x = License{} - if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *License) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*License) ProtoMessage() {} - -func (x *License) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use License.ProtoReflect.Descriptor instead. -func (*License) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{13} -} - -func (x *License) GetUser() string { - if x != nil { - return x.User - } - return "" -} - -func (x *License) GetMaxNodes() uint64 { - if x != nil { - return x.MaxNodes - } - return 0 -} - -func (x *License) GetExpiryTs() int64 { - if x != nil { - return x.ExpiryTs - } - return 0 -} - -func (x *License) GetEnabled() bool { - if x != nil { - return x.Enabled - } - return false -} - type ZeroProposal struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1599,8 +1528,7 @@ type ZeroProposal struct { MaxNsID uint64 `protobuf:"varint,12,opt,name=maxNsID,proto3" json:"maxNsID,omitempty"` MaxRaftId uint64 `protobuf:"varint,6,opt,name=maxRaftId,proto3" json:"maxRaftId,omitempty"` Txn *api.TxnContext `protobuf:"bytes,7,opt,name=txn,proto3" json:"txn,omitempty"` - Cid string `protobuf:"bytes,9,opt,name=cid,proto3" json:"cid,omitempty"` // Used as unique identifier for the cluster. - License *License `protobuf:"bytes,10,opt,name=license,proto3" json:"license,omitempty"` + Cid string `protobuf:"bytes,9,opt,name=cid,proto3" json:"cid,omitempty"` // Used as unique identifier for the cluster. Snapshot *ZeroSnapshot `protobuf:"bytes,11,opt,name=snapshot,proto3" json:"snapshot,omitempty"` // Used to make Zeros take a snapshot. // 12 has already been used. DeleteNs *DeleteNsRequest `protobuf:"bytes,13,opt,name=delete_ns,json=deleteNs,proto3" json:"delete_ns,omitempty"` // Used to delete namespace. @@ -1610,7 +1538,7 @@ type ZeroProposal struct { func (x *ZeroProposal) Reset() { *x = ZeroProposal{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[14] + mi := &file_pb_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1623,7 +1551,7 @@ func (x *ZeroProposal) String() string { func (*ZeroProposal) ProtoMessage() {} func (x *ZeroProposal) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[14] + mi := &file_pb_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1636,7 +1564,7 @@ func (x *ZeroProposal) ProtoReflect() protoreflect.Message { // Deprecated: Use ZeroProposal.ProtoReflect.Descriptor instead. func (*ZeroProposal) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{14} + return file_pb_proto_rawDescGZIP(), []int{13} } func (x *ZeroProposal) GetSnapshotTs() map[uint32]uint64 { @@ -1702,13 +1630,6 @@ func (x *ZeroProposal) GetCid() string { return "" } -func (x *ZeroProposal) GetLicense() *License { - if x != nil { - return x.License - } - return nil -} - func (x *ZeroProposal) GetSnapshot() *ZeroSnapshot { if x != nil { return x.Snapshot @@ -1746,14 +1667,13 @@ type MembershipState struct { MaxNsID uint64 `protobuf:"varint,10,opt,name=maxNsID,proto3" json:"maxNsID,omitempty"` MaxRaftId uint64 `protobuf:"varint,6,opt,name=maxRaftId,proto3" json:"maxRaftId,omitempty"` Removed []*Member `protobuf:"bytes,7,rep,name=removed,proto3" json:"removed,omitempty"` - Cid string `protobuf:"bytes,8,opt,name=cid,proto3" json:"cid,omitempty"` // Used to uniquely identify the Dgraph cluster. - License *License `protobuf:"bytes,9,opt,name=license,proto3" json:"license,omitempty"` // 10 has already been used. + Cid string `protobuf:"bytes,8,opt,name=cid,proto3" json:"cid,omitempty"` // Used to uniquely identify the Dgraph cluster. } func (x *MembershipState) Reset() { *x = MembershipState{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[15] + mi := &file_pb_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1766,7 +1686,7 @@ func (x *MembershipState) String() string { func (*MembershipState) ProtoMessage() {} func (x *MembershipState) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[15] + mi := &file_pb_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1779,7 +1699,7 @@ func (x *MembershipState) ProtoReflect() protoreflect.Message { // Deprecated: Use MembershipState.ProtoReflect.Descriptor instead. func (*MembershipState) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{15} + return file_pb_proto_rawDescGZIP(), []int{14} } func (x *MembershipState) GetCounter() uint64 { @@ -1845,13 +1765,6 @@ func (x *MembershipState) GetCid() string { return "" } -func (x *MembershipState) GetLicense() *License { - if x != nil { - return x.License - } - return nil -} - type ConnectionState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1865,7 +1778,7 @@ type ConnectionState struct { func (x *ConnectionState) Reset() { *x = ConnectionState{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[16] + mi := &file_pb_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1878,7 +1791,7 @@ func (x *ConnectionState) String() string { func (*ConnectionState) ProtoMessage() {} func (x *ConnectionState) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[16] + mi := &file_pb_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1891,7 +1804,7 @@ func (x *ConnectionState) ProtoReflect() protoreflect.Message { // Deprecated: Use ConnectionState.ProtoReflect.Descriptor instead. func (*ConnectionState) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{16} + return file_pb_proto_rawDescGZIP(), []int{15} } func (x *ConnectionState) GetMember() *Member { @@ -1936,7 +1849,7 @@ type HealthInfo struct { func (x *HealthInfo) Reset() { *x = HealthInfo{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[17] + mi := &file_pb_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1949,7 +1862,7 @@ func (x *HealthInfo) String() string { func (*HealthInfo) ProtoMessage() {} func (x *HealthInfo) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[17] + mi := &file_pb_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1962,7 +1875,7 @@ func (x *HealthInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use HealthInfo.ProtoReflect.Descriptor instead. func (*HealthInfo) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{17} + return file_pb_proto_rawDescGZIP(), []int{16} } func (x *HealthInfo) GetInstance() string { @@ -2060,7 +1973,7 @@ type Tablet struct { func (x *Tablet) Reset() { *x = Tablet{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[18] + mi := &file_pb_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2073,7 +1986,7 @@ func (x *Tablet) String() string { func (*Tablet) ProtoMessage() {} func (x *Tablet) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[18] + mi := &file_pb_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2086,7 +1999,7 @@ func (x *Tablet) ProtoReflect() protoreflect.Message { // Deprecated: Use Tablet.ProtoReflect.Descriptor instead. func (*Tablet) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{18} + return file_pb_proto_rawDescGZIP(), []int{17} } func (x *Tablet) GetGroupId() uint32 { @@ -2165,7 +2078,7 @@ type DirectedEdge struct { func (x *DirectedEdge) Reset() { *x = DirectedEdge{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[19] + mi := &file_pb_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2178,7 +2091,7 @@ func (x *DirectedEdge) String() string { func (*DirectedEdge) ProtoMessage() {} func (x *DirectedEdge) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[19] + mi := &file_pb_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2191,7 +2104,7 @@ func (x *DirectedEdge) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectedEdge.ProtoReflect.Descriptor instead. func (*DirectedEdge) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{19} + return file_pb_proto_rawDescGZIP(), []int{18} } func (x *DirectedEdge) GetEntity() uint64 { @@ -2282,7 +2195,7 @@ type Mutations struct { func (x *Mutations) Reset() { *x = Mutations{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[20] + mi := &file_pb_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2295,7 +2208,7 @@ func (x *Mutations) String() string { func (*Mutations) ProtoMessage() {} func (x *Mutations) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[20] + mi := &file_pb_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2308,7 +2221,7 @@ func (x *Mutations) ProtoReflect() protoreflect.Message { // Deprecated: Use Mutations.ProtoReflect.Descriptor instead. func (*Mutations) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{20} + return file_pb_proto_rawDescGZIP(), []int{19} } func (x *Mutations) GetGroupId() uint32 { @@ -2379,7 +2292,7 @@ type Metadata struct { func (x *Metadata) Reset() { *x = Metadata{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[21] + mi := &file_pb_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2392,7 +2305,7 @@ func (x *Metadata) String() string { func (*Metadata) ProtoMessage() {} func (x *Metadata) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[21] + mi := &file_pb_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2405,7 +2318,7 @@ func (x *Metadata) ProtoReflect() protoreflect.Message { // Deprecated: Use Metadata.ProtoReflect.Descriptor instead. func (*Metadata) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{21} + return file_pb_proto_rawDescGZIP(), []int{20} } func (x *Metadata) GetPredHints() map[string]Metadata_HintType { @@ -2432,7 +2345,7 @@ type Snapshot struct { func (x *Snapshot) Reset() { *x = Snapshot{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[22] + mi := &file_pb_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2445,7 +2358,7 @@ func (x *Snapshot) String() string { func (*Snapshot) ProtoMessage() {} func (x *Snapshot) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[22] + mi := &file_pb_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2458,7 +2371,7 @@ func (x *Snapshot) ProtoReflect() protoreflect.Message { // Deprecated: Use Snapshot.ProtoReflect.Descriptor instead. func (*Snapshot) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{22} + return file_pb_proto_rawDescGZIP(), []int{21} } func (x *Snapshot) GetContext() *RaftContext { @@ -2509,7 +2422,7 @@ type ZeroSnapshot struct { func (x *ZeroSnapshot) Reset() { *x = ZeroSnapshot{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[23] + mi := &file_pb_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2522,7 +2435,7 @@ func (x *ZeroSnapshot) String() string { func (*ZeroSnapshot) ProtoMessage() {} func (x *ZeroSnapshot) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[23] + mi := &file_pb_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2535,7 +2448,7 @@ func (x *ZeroSnapshot) ProtoReflect() protoreflect.Message { // Deprecated: Use ZeroSnapshot.ProtoReflect.Descriptor instead. func (*ZeroSnapshot) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{23} + return file_pb_proto_rawDescGZIP(), []int{22} } func (x *ZeroSnapshot) GetIndex() uint64 { @@ -2592,7 +2505,7 @@ type RestoreRequest struct { func (x *RestoreRequest) Reset() { *x = RestoreRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[24] + mi := &file_pb_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2605,7 +2518,7 @@ func (x *RestoreRequest) String() string { func (*RestoreRequest) ProtoMessage() {} func (x *RestoreRequest) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[24] + mi := &file_pb_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2618,7 +2531,7 @@ func (x *RestoreRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RestoreRequest.ProtoReflect.Descriptor instead. func (*RestoreRequest) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{24} + return file_pb_proto_rawDescGZIP(), []int{23} } func (x *RestoreRequest) GetGroupId() uint32 { @@ -2784,7 +2697,7 @@ type Proposal struct { func (x *Proposal) Reset() { *x = Proposal{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[25] + mi := &file_pb_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2797,7 +2710,7 @@ func (x *Proposal) String() string { func (*Proposal) ProtoMessage() {} func (x *Proposal) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[25] + mi := &file_pb_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2810,7 +2723,7 @@ func (x *Proposal) ProtoReflect() protoreflect.Message { // Deprecated: Use Proposal.ProtoReflect.Descriptor instead. func (*Proposal) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{25} + return file_pb_proto_rawDescGZIP(), []int{24} } func (x *Proposal) GetMutations() *Mutations { @@ -2908,7 +2821,7 @@ type CDCState struct { func (x *CDCState) Reset() { *x = CDCState{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[26] + mi := &file_pb_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2921,7 +2834,7 @@ func (x *CDCState) String() string { func (*CDCState) ProtoMessage() {} func (x *CDCState) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[26] + mi := &file_pb_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2934,7 +2847,7 @@ func (x *CDCState) ProtoReflect() protoreflect.Message { // Deprecated: Use CDCState.ProtoReflect.Descriptor instead. func (*CDCState) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{26} + return file_pb_proto_rawDescGZIP(), []int{25} } func (x *CDCState) GetSentTs() uint64 { @@ -2962,7 +2875,7 @@ type KVS struct { func (x *KVS) Reset() { *x = KVS{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[27] + mi := &file_pb_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2975,7 +2888,7 @@ func (x *KVS) String() string { func (*KVS) ProtoMessage() {} func (x *KVS) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[27] + mi := &file_pb_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2988,7 +2901,7 @@ func (x *KVS) ProtoReflect() protoreflect.Message { // Deprecated: Use KVS.ProtoReflect.Descriptor instead. func (*KVS) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{27} + return file_pb_proto_rawDescGZIP(), []int{26} } func (x *KVS) GetData() []byte { @@ -3040,7 +2953,7 @@ type Posting struct { func (x *Posting) Reset() { *x = Posting{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[28] + mi := &file_pb_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3053,7 +2966,7 @@ func (x *Posting) String() string { func (*Posting) ProtoMessage() {} func (x *Posting) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[28] + mi := &file_pb_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3066,7 +2979,7 @@ func (x *Posting) ProtoReflect() protoreflect.Message { // Deprecated: Use Posting.ProtoReflect.Descriptor instead. func (*Posting) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{28} + return file_pb_proto_rawDescGZIP(), []int{27} } func (x *Posting) GetUid() uint64 { @@ -3156,7 +3069,7 @@ type UidBlock struct { func (x *UidBlock) Reset() { *x = UidBlock{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[29] + mi := &file_pb_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3169,7 +3082,7 @@ func (x *UidBlock) String() string { func (*UidBlock) ProtoMessage() {} func (x *UidBlock) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[29] + mi := &file_pb_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3182,7 +3095,7 @@ func (x *UidBlock) ProtoReflect() protoreflect.Message { // Deprecated: Use UidBlock.ProtoReflect.Descriptor instead. func (*UidBlock) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{29} + return file_pb_proto_rawDescGZIP(), []int{28} } func (x *UidBlock) GetBase() uint64 { @@ -3219,7 +3132,7 @@ type UidPack struct { func (x *UidPack) Reset() { *x = UidPack{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[30] + mi := &file_pb_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3232,7 +3145,7 @@ func (x *UidPack) String() string { func (*UidPack) ProtoMessage() {} func (x *UidPack) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[30] + mi := &file_pb_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3245,7 +3158,7 @@ func (x *UidPack) ProtoReflect() protoreflect.Message { // Deprecated: Use UidPack.ProtoReflect.Descriptor instead. func (*UidPack) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{30} + return file_pb_proto_rawDescGZIP(), []int{29} } func (x *UidPack) GetBlockSize() uint32 { @@ -3283,7 +3196,7 @@ type PostingList struct { func (x *PostingList) Reset() { *x = PostingList{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[31] + mi := &file_pb_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3296,7 +3209,7 @@ func (x *PostingList) String() string { func (*PostingList) ProtoMessage() {} func (x *PostingList) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[31] + mi := &file_pb_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3309,7 +3222,7 @@ func (x *PostingList) ProtoReflect() protoreflect.Message { // Deprecated: Use PostingList.ProtoReflect.Descriptor instead. func (*PostingList) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{31} + return file_pb_proto_rawDescGZIP(), []int{30} } func (x *PostingList) GetPack() *UidPack { @@ -3352,7 +3265,7 @@ type FacetParam struct { func (x *FacetParam) Reset() { *x = FacetParam{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[32] + mi := &file_pb_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3365,7 +3278,7 @@ func (x *FacetParam) String() string { func (*FacetParam) ProtoMessage() {} func (x *FacetParam) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[32] + mi := &file_pb_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3378,7 +3291,7 @@ func (x *FacetParam) ProtoReflect() protoreflect.Message { // Deprecated: Use FacetParam.ProtoReflect.Descriptor instead. func (*FacetParam) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{32} + return file_pb_proto_rawDescGZIP(), []int{31} } func (x *FacetParam) GetKey() string { @@ -3407,7 +3320,7 @@ type FacetParams struct { func (x *FacetParams) Reset() { *x = FacetParams{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[33] + mi := &file_pb_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3420,7 +3333,7 @@ func (x *FacetParams) String() string { func (*FacetParams) ProtoMessage() {} func (x *FacetParams) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[33] + mi := &file_pb_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3433,7 +3346,7 @@ func (x *FacetParams) ProtoReflect() protoreflect.Message { // Deprecated: Use FacetParams.ProtoReflect.Descriptor instead. func (*FacetParams) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{33} + return file_pb_proto_rawDescGZIP(), []int{32} } func (x *FacetParams) GetAllKeys() bool { @@ -3461,7 +3374,7 @@ type Facets struct { func (x *Facets) Reset() { *x = Facets{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[34] + mi := &file_pb_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3474,7 +3387,7 @@ func (x *Facets) String() string { func (*Facets) ProtoMessage() {} func (x *Facets) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[34] + mi := &file_pb_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3487,7 +3400,7 @@ func (x *Facets) ProtoReflect() protoreflect.Message { // Deprecated: Use Facets.ProtoReflect.Descriptor instead. func (*Facets) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{34} + return file_pb_proto_rawDescGZIP(), []int{33} } func (x *Facets) GetFacets() []*api.Facet { @@ -3508,7 +3421,7 @@ type FacetsList struct { func (x *FacetsList) Reset() { *x = FacetsList{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[35] + mi := &file_pb_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3521,7 +3434,7 @@ func (x *FacetsList) String() string { func (*FacetsList) ProtoMessage() {} func (x *FacetsList) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[35] + mi := &file_pb_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3534,7 +3447,7 @@ func (x *FacetsList) ProtoReflect() protoreflect.Message { // Deprecated: Use FacetsList.ProtoReflect.Descriptor instead. func (*FacetsList) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{35} + return file_pb_proto_rawDescGZIP(), []int{34} } func (x *FacetsList) GetFacetsList() []*Facets { @@ -3557,7 +3470,7 @@ type Function struct { func (x *Function) Reset() { *x = Function{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[36] + mi := &file_pb_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3570,7 +3483,7 @@ func (x *Function) String() string { func (*Function) ProtoMessage() {} func (x *Function) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[36] + mi := &file_pb_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3583,7 +3496,7 @@ func (x *Function) ProtoReflect() protoreflect.Message { // Deprecated: Use Function.ProtoReflect.Descriptor instead. func (*Function) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{36} + return file_pb_proto_rawDescGZIP(), []int{35} } func (x *Function) GetName() string { @@ -3621,7 +3534,7 @@ type FilterTree struct { func (x *FilterTree) Reset() { *x = FilterTree{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[37] + mi := &file_pb_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3634,7 +3547,7 @@ func (x *FilterTree) String() string { func (*FilterTree) ProtoMessage() {} func (x *FilterTree) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[37] + mi := &file_pb_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3647,7 +3560,7 @@ func (x *FilterTree) ProtoReflect() protoreflect.Message { // Deprecated: Use FilterTree.ProtoReflect.Descriptor instead. func (*FilterTree) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{37} + return file_pb_proto_rawDescGZIP(), []int{36} } func (x *FilterTree) GetOp() string { @@ -3687,7 +3600,7 @@ type SchemaRequest struct { func (x *SchemaRequest) Reset() { *x = SchemaRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[38] + mi := &file_pb_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3700,7 +3613,7 @@ func (x *SchemaRequest) String() string { func (*SchemaRequest) ProtoMessage() {} func (x *SchemaRequest) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[38] + mi := &file_pb_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3713,7 +3626,7 @@ func (x *SchemaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SchemaRequest.ProtoReflect.Descriptor instead. func (*SchemaRequest) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{38} + return file_pb_proto_rawDescGZIP(), []int{37} } func (x *SchemaRequest) GetGroupId() uint32 { @@ -3766,7 +3679,7 @@ type SchemaNode struct { func (x *SchemaNode) Reset() { *x = SchemaNode{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[39] + mi := &file_pb_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3779,7 +3692,7 @@ func (x *SchemaNode) String() string { func (*SchemaNode) ProtoMessage() {} func (x *SchemaNode) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[39] + mi := &file_pb_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3792,7 +3705,7 @@ func (x *SchemaNode) ProtoReflect() protoreflect.Message { // Deprecated: Use SchemaNode.ProtoReflect.Descriptor instead. func (*SchemaNode) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{39} + return file_pb_proto_rawDescGZIP(), []int{38} } func (x *SchemaNode) GetPredicate() string { @@ -3891,7 +3804,7 @@ type SchemaResult struct { func (x *SchemaResult) Reset() { *x = SchemaResult{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[40] + mi := &file_pb_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3904,7 +3817,7 @@ func (x *SchemaResult) String() string { func (*SchemaResult) ProtoMessage() {} func (x *SchemaResult) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[40] + mi := &file_pb_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3917,7 +3830,7 @@ func (x *SchemaResult) ProtoReflect() protoreflect.Message { // Deprecated: Use SchemaResult.ProtoReflect.Descriptor instead. func (*SchemaResult) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{40} + return file_pb_proto_rawDescGZIP(), []int{39} } // Deprecated: Marked as deprecated in pb.proto. @@ -3955,7 +3868,7 @@ type SchemaUpdate struct { func (x *SchemaUpdate) Reset() { *x = SchemaUpdate{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[41] + mi := &file_pb_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3968,7 +3881,7 @@ func (x *SchemaUpdate) String() string { func (*SchemaUpdate) ProtoMessage() {} func (x *SchemaUpdate) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[41] + mi := &file_pb_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3981,7 +3894,7 @@ func (x *SchemaUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use SchemaUpdate.ProtoReflect.Descriptor instead. func (*SchemaUpdate) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{41} + return file_pb_proto_rawDescGZIP(), []int{40} } func (x *SchemaUpdate) GetPredicate() string { @@ -4097,7 +4010,7 @@ type VectorIndexSpec struct { func (x *VectorIndexSpec) Reset() { *x = VectorIndexSpec{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[42] + mi := &file_pb_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4110,7 +4023,7 @@ func (x *VectorIndexSpec) String() string { func (*VectorIndexSpec) ProtoMessage() {} func (x *VectorIndexSpec) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[42] + mi := &file_pb_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4123,7 +4036,7 @@ func (x *VectorIndexSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use VectorIndexSpec.ProtoReflect.Descriptor instead. func (*VectorIndexSpec) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{42} + return file_pb_proto_rawDescGZIP(), []int{41} } func (x *VectorIndexSpec) GetName() string { @@ -4152,7 +4065,7 @@ type OptionPair struct { func (x *OptionPair) Reset() { *x = OptionPair{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[43] + mi := &file_pb_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4165,7 +4078,7 @@ func (x *OptionPair) String() string { func (*OptionPair) ProtoMessage() {} func (x *OptionPair) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[43] + mi := &file_pb_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4178,7 +4091,7 @@ func (x *OptionPair) ProtoReflect() protoreflect.Message { // Deprecated: Use OptionPair.ProtoReflect.Descriptor instead. func (*OptionPair) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{43} + return file_pb_proto_rawDescGZIP(), []int{42} } func (x *OptionPair) GetKey() string { @@ -4207,7 +4120,7 @@ type TypeUpdate struct { func (x *TypeUpdate) Reset() { *x = TypeUpdate{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[44] + mi := &file_pb_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4220,7 +4133,7 @@ func (x *TypeUpdate) String() string { func (*TypeUpdate) ProtoMessage() {} func (x *TypeUpdate) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[44] + mi := &file_pb_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4233,7 +4146,7 @@ func (x *TypeUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeUpdate.ProtoReflect.Descriptor instead. func (*TypeUpdate) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{44} + return file_pb_proto_rawDescGZIP(), []int{43} } func (x *TypeUpdate) GetTypeName() string { @@ -4261,7 +4174,7 @@ type MapHeader struct { func (x *MapHeader) Reset() { *x = MapHeader{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[45] + mi := &file_pb_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4274,7 +4187,7 @@ func (x *MapHeader) String() string { func (*MapHeader) ProtoMessage() {} func (x *MapHeader) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[45] + mi := &file_pb_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4287,7 +4200,7 @@ func (x *MapHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use MapHeader.ProtoReflect.Descriptor instead. func (*MapHeader) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{45} + return file_pb_proto_rawDescGZIP(), []int{44} } func (x *MapHeader) GetPartitionKeys() [][]byte { @@ -4312,7 +4225,7 @@ type MovePredicatePayload struct { func (x *MovePredicatePayload) Reset() { *x = MovePredicatePayload{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[46] + mi := &file_pb_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4325,7 +4238,7 @@ func (x *MovePredicatePayload) String() string { func (*MovePredicatePayload) ProtoMessage() {} func (x *MovePredicatePayload) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[46] + mi := &file_pb_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4338,7 +4251,7 @@ func (x *MovePredicatePayload) ProtoReflect() protoreflect.Message { // Deprecated: Use MovePredicatePayload.ProtoReflect.Descriptor instead. func (*MovePredicatePayload) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{46} + return file_pb_proto_rawDescGZIP(), []int{45} } func (x *MovePredicatePayload) GetPredicate() string { @@ -4388,7 +4301,7 @@ type TxnStatus struct { func (x *TxnStatus) Reset() { *x = TxnStatus{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[47] + mi := &file_pb_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4401,7 +4314,7 @@ func (x *TxnStatus) String() string { func (*TxnStatus) ProtoMessage() {} func (x *TxnStatus) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[47] + mi := &file_pb_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4414,7 +4327,7 @@ func (x *TxnStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use TxnStatus.ProtoReflect.Descriptor instead. func (*TxnStatus) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{47} + return file_pb_proto_rawDescGZIP(), []int{46} } func (x *TxnStatus) GetStartTs() uint64 { @@ -4444,7 +4357,7 @@ type OracleDelta struct { func (x *OracleDelta) Reset() { *x = OracleDelta{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[48] + mi := &file_pb_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4457,7 +4370,7 @@ func (x *OracleDelta) String() string { func (*OracleDelta) ProtoMessage() {} func (x *OracleDelta) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[48] + mi := &file_pb_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4470,7 +4383,7 @@ func (x *OracleDelta) ProtoReflect() protoreflect.Message { // Deprecated: Use OracleDelta.ProtoReflect.Descriptor instead. func (*OracleDelta) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{48} + return file_pb_proto_rawDescGZIP(), []int{47} } func (x *OracleDelta) GetTxns() []*TxnStatus { @@ -4505,7 +4418,7 @@ type TxnTimestamps struct { func (x *TxnTimestamps) Reset() { *x = TxnTimestamps{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[49] + mi := &file_pb_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4518,7 +4431,7 @@ func (x *TxnTimestamps) String() string { func (*TxnTimestamps) ProtoMessage() {} func (x *TxnTimestamps) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[49] + mi := &file_pb_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4531,7 +4444,7 @@ func (x *TxnTimestamps) ProtoReflect() protoreflect.Message { // Deprecated: Use TxnTimestamps.ProtoReflect.Descriptor instead. func (*TxnTimestamps) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{49} + return file_pb_proto_rawDescGZIP(), []int{48} } func (x *TxnTimestamps) GetTs() []uint64 { @@ -4552,7 +4465,7 @@ type PeerResponse struct { func (x *PeerResponse) Reset() { *x = PeerResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[50] + mi := &file_pb_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4565,7 +4478,7 @@ func (x *PeerResponse) String() string { func (*PeerResponse) ProtoMessage() {} func (x *PeerResponse) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[50] + mi := &file_pb_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4578,7 +4491,7 @@ func (x *PeerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PeerResponse.ProtoReflect.Descriptor instead. func (*PeerResponse) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{50} + return file_pb_proto_rawDescGZIP(), []int{49} } func (x *PeerResponse) GetStatus() bool { @@ -4600,7 +4513,7 @@ type RaftBatch struct { func (x *RaftBatch) Reset() { *x = RaftBatch{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[51] + mi := &file_pb_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4613,7 +4526,7 @@ func (x *RaftBatch) String() string { func (*RaftBatch) ProtoMessage() {} func (x *RaftBatch) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[51] + mi := &file_pb_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4626,7 +4539,7 @@ func (x *RaftBatch) ProtoReflect() protoreflect.Message { // Deprecated: Use RaftBatch.ProtoReflect.Descriptor instead. func (*RaftBatch) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{51} + return file_pb_proto_rawDescGZIP(), []int{50} } func (x *RaftBatch) GetContext() *RaftContext { @@ -4654,7 +4567,7 @@ type TabletResponse struct { func (x *TabletResponse) Reset() { *x = TabletResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[52] + mi := &file_pb_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4667,7 +4580,7 @@ func (x *TabletResponse) String() string { func (*TabletResponse) ProtoMessage() {} func (x *TabletResponse) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[52] + mi := &file_pb_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4680,7 +4593,7 @@ func (x *TabletResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TabletResponse.ProtoReflect.Descriptor instead. func (*TabletResponse) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{52} + return file_pb_proto_rawDescGZIP(), []int{51} } func (x *TabletResponse) GetTablets() []*Tablet { @@ -4702,7 +4615,7 @@ type TabletRequest struct { func (x *TabletRequest) Reset() { *x = TabletRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[53] + mi := &file_pb_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4715,7 +4628,7 @@ func (x *TabletRequest) String() string { func (*TabletRequest) ProtoMessage() {} func (x *TabletRequest) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[53] + mi := &file_pb_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4728,7 +4641,7 @@ func (x *TabletRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TabletRequest.ProtoReflect.Descriptor instead. func (*TabletRequest) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{53} + return file_pb_proto_rawDescGZIP(), []int{52} } func (x *TabletRequest) GetTablets() []*Tablet { @@ -4757,7 +4670,7 @@ type SubscriptionRequest struct { func (x *SubscriptionRequest) Reset() { *x = SubscriptionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[54] + mi := &file_pb_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4770,7 +4683,7 @@ func (x *SubscriptionRequest) String() string { func (*SubscriptionRequest) ProtoMessage() {} func (x *SubscriptionRequest) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[54] + mi := &file_pb_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4783,7 +4696,7 @@ func (x *SubscriptionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionRequest.ProtoReflect.Descriptor instead. func (*SubscriptionRequest) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{54} + return file_pb_proto_rawDescGZIP(), []int{53} } func (x *SubscriptionRequest) GetPrefixes() [][]byte { @@ -4811,7 +4724,7 @@ type SubscriptionResponse struct { func (x *SubscriptionResponse) Reset() { *x = SubscriptionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[55] + mi := &file_pb_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4824,7 +4737,7 @@ func (x *SubscriptionResponse) String() string { func (*SubscriptionResponse) ProtoMessage() {} func (x *SubscriptionResponse) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[55] + mi := &file_pb_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4837,7 +4750,7 @@ func (x *SubscriptionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionResponse.ProtoReflect.Descriptor instead. func (*SubscriptionResponse) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{55} + return file_pb_proto_rawDescGZIP(), []int{54} } func (x *SubscriptionResponse) GetKvs() *pb.KVList { @@ -4864,7 +4777,7 @@ type Num struct { func (x *Num) Reset() { *x = Num{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[56] + mi := &file_pb_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4877,7 +4790,7 @@ func (x *Num) String() string { func (*Num) ProtoMessage() {} func (x *Num) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[56] + mi := &file_pb_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4890,7 +4803,7 @@ func (x *Num) ProtoReflect() protoreflect.Message { // Deprecated: Use Num.ProtoReflect.Descriptor instead. func (*Num) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{56} + return file_pb_proto_rawDescGZIP(), []int{55} } func (x *Num) GetVal() uint64 { @@ -4942,7 +4855,7 @@ type AssignedIds struct { func (x *AssignedIds) Reset() { *x = AssignedIds{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[57] + mi := &file_pb_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4955,7 +4868,7 @@ func (x *AssignedIds) String() string { func (*AssignedIds) ProtoMessage() {} func (x *AssignedIds) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[57] + mi := &file_pb_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4968,7 +4881,7 @@ func (x *AssignedIds) ProtoReflect() protoreflect.Message { // Deprecated: Use AssignedIds.ProtoReflect.Descriptor instead. func (*AssignedIds) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{57} + return file_pb_proto_rawDescGZIP(), []int{56} } func (x *AssignedIds) GetStartId() uint64 { @@ -5004,7 +4917,7 @@ type RemoveNodeRequest struct { func (x *RemoveNodeRequest) Reset() { *x = RemoveNodeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[58] + mi := &file_pb_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5017,7 +4930,7 @@ func (x *RemoveNodeRequest) String() string { func (*RemoveNodeRequest) ProtoMessage() {} func (x *RemoveNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[58] + mi := &file_pb_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5030,7 +4943,7 @@ func (x *RemoveNodeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveNodeRequest.ProtoReflect.Descriptor instead. func (*RemoveNodeRequest) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{58} + return file_pb_proto_rawDescGZIP(), []int{57} } func (x *RemoveNodeRequest) GetNodeId() uint64 { @@ -5060,7 +4973,7 @@ type MoveTabletRequest struct { func (x *MoveTabletRequest) Reset() { *x = MoveTabletRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[59] + mi := &file_pb_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5073,7 +4986,7 @@ func (x *MoveTabletRequest) String() string { func (*MoveTabletRequest) ProtoMessage() {} func (x *MoveTabletRequest) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[59] + mi := &file_pb_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5086,7 +4999,7 @@ func (x *MoveTabletRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MoveTabletRequest.ProtoReflect.Descriptor instead. func (*MoveTabletRequest) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{59} + return file_pb_proto_rawDescGZIP(), []int{58} } func (x *MoveTabletRequest) GetNamespace() uint64 { @@ -5110,53 +5023,6 @@ func (x *MoveTabletRequest) GetDstGroup() uint32 { return 0 } -type ApplyLicenseRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - License []byte `protobuf:"bytes,1,opt,name=license,proto3" json:"license,omitempty"` -} - -func (x *ApplyLicenseRequest) Reset() { - *x = ApplyLicenseRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[60] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ApplyLicenseRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ApplyLicenseRequest) ProtoMessage() {} - -func (x *ApplyLicenseRequest) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[60] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ApplyLicenseRequest.ProtoReflect.Descriptor instead. -func (*ApplyLicenseRequest) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{60} -} - -func (x *ApplyLicenseRequest) GetLicense() []byte { - if x != nil { - return x.License - } - return nil -} - type SnapshotMeta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -5169,7 +5035,7 @@ type SnapshotMeta struct { func (x *SnapshotMeta) Reset() { *x = SnapshotMeta{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[61] + mi := &file_pb_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5182,7 +5048,7 @@ func (x *SnapshotMeta) String() string { func (*SnapshotMeta) ProtoMessage() {} func (x *SnapshotMeta) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[61] + mi := &file_pb_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5195,7 +5061,7 @@ func (x *SnapshotMeta) ProtoReflect() protoreflect.Message { // Deprecated: Use SnapshotMeta.ProtoReflect.Descriptor instead. func (*SnapshotMeta) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{61} + return file_pb_proto_rawDescGZIP(), []int{59} } func (x *SnapshotMeta) GetClientTs() uint64 { @@ -5226,7 +5092,7 @@ type Status struct { func (x *Status) Reset() { *x = Status{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[62] + mi := &file_pb_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5239,7 +5105,7 @@ func (x *Status) String() string { func (*Status) ProtoMessage() {} func (x *Status) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[62] + mi := &file_pb_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5252,7 +5118,7 @@ func (x *Status) ProtoReflect() protoreflect.Message { // Deprecated: Use Status.ProtoReflect.Descriptor instead. func (*Status) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{62} + return file_pb_proto_rawDescGZIP(), []int{60} } func (x *Status) GetCode() int32 { @@ -5298,7 +5164,7 @@ type BackupRequest struct { func (x *BackupRequest) Reset() { *x = BackupRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[63] + mi := &file_pb_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5311,7 +5177,7 @@ func (x *BackupRequest) String() string { func (*BackupRequest) ProtoMessage() {} func (x *BackupRequest) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[63] + mi := &file_pb_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5324,7 +5190,7 @@ func (x *BackupRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BackupRequest.ProtoReflect.Descriptor instead. func (*BackupRequest) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{63} + return file_pb_proto_rawDescGZIP(), []int{61} } func (x *BackupRequest) GetReadTs() uint64 { @@ -5415,7 +5281,7 @@ type BackupResponse struct { func (x *BackupResponse) Reset() { *x = BackupResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[64] + mi := &file_pb_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5428,7 +5294,7 @@ func (x *BackupResponse) String() string { func (*BackupResponse) ProtoMessage() {} func (x *BackupResponse) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[64] + mi := &file_pb_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5441,7 +5307,7 @@ func (x *BackupResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use BackupResponse.ProtoReflect.Descriptor instead. func (*BackupResponse) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{64} + return file_pb_proto_rawDescGZIP(), []int{62} } func (x *BackupResponse) GetDropOperations() []*DropOperation { @@ -5465,7 +5331,7 @@ type DropOperation struct { func (x *DropOperation) Reset() { *x = DropOperation{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[65] + mi := &file_pb_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5478,7 +5344,7 @@ func (x *DropOperation) String() string { func (*DropOperation) ProtoMessage() {} func (x *DropOperation) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[65] + mi := &file_pb_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5491,7 +5357,7 @@ func (x *DropOperation) ProtoReflect() protoreflect.Message { // Deprecated: Use DropOperation.ProtoReflect.Descriptor instead. func (*DropOperation) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{65} + return file_pb_proto_rawDescGZIP(), []int{63} } func (x *DropOperation) GetDropOp() DropOperation_DropOp { @@ -5529,7 +5395,7 @@ type ExportRequest struct { func (x *ExportRequest) Reset() { *x = ExportRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[66] + mi := &file_pb_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5542,7 +5408,7 @@ func (x *ExportRequest) String() string { func (*ExportRequest) ProtoMessage() {} func (x *ExportRequest) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[66] + mi := &file_pb_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5555,7 +5421,7 @@ func (x *ExportRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ExportRequest.ProtoReflect.Descriptor instead. func (*ExportRequest) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{66} + return file_pb_proto_rawDescGZIP(), []int{64} } func (x *ExportRequest) GetGroupId() uint32 { @@ -5642,7 +5508,7 @@ type ExportResponse struct { func (x *ExportResponse) Reset() { *x = ExportResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[67] + mi := &file_pb_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5655,7 +5521,7 @@ func (x *ExportResponse) String() string { func (*ExportResponse) ProtoMessage() {} func (x *ExportResponse) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[67] + mi := &file_pb_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5668,7 +5534,7 @@ func (x *ExportResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ExportResponse.ProtoReflect.Descriptor instead. func (*ExportResponse) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{67} + return file_pb_proto_rawDescGZIP(), []int{65} } func (x *ExportResponse) GetCode() int32 { @@ -5710,7 +5576,7 @@ type BackupKey struct { func (x *BackupKey) Reset() { *x = BackupKey{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[68] + mi := &file_pb_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5723,7 +5589,7 @@ func (x *BackupKey) String() string { func (*BackupKey) ProtoMessage() {} func (x *BackupKey) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[68] + mi := &file_pb_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5736,7 +5602,7 @@ func (x *BackupKey) ProtoReflect() protoreflect.Message { // Deprecated: Use BackupKey.ProtoReflect.Descriptor instead. func (*BackupKey) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{68} + return file_pb_proto_rawDescGZIP(), []int{66} } func (x *BackupKey) GetType() BackupKey_KeyType { @@ -5804,7 +5670,7 @@ type BackupPostingList struct { func (x *BackupPostingList) Reset() { *x = BackupPostingList{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[69] + mi := &file_pb_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5817,7 +5683,7 @@ func (x *BackupPostingList) String() string { func (*BackupPostingList) ProtoMessage() {} func (x *BackupPostingList) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[69] + mi := &file_pb_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5830,7 +5696,7 @@ func (x *BackupPostingList) ProtoReflect() protoreflect.Message { // Deprecated: Use BackupPostingList.ProtoReflect.Descriptor instead. func (*BackupPostingList) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{69} + return file_pb_proto_rawDescGZIP(), []int{67} } func (x *BackupPostingList) GetUids() []uint64 { @@ -5882,7 +5748,7 @@ type UpdateGraphQLSchemaRequest struct { func (x *UpdateGraphQLSchemaRequest) Reset() { *x = UpdateGraphQLSchemaRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[70] + mi := &file_pb_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5895,7 +5761,7 @@ func (x *UpdateGraphQLSchemaRequest) String() string { func (*UpdateGraphQLSchemaRequest) ProtoMessage() {} func (x *UpdateGraphQLSchemaRequest) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[70] + mi := &file_pb_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5908,7 +5774,7 @@ func (x *UpdateGraphQLSchemaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGraphQLSchemaRequest.ProtoReflect.Descriptor instead. func (*UpdateGraphQLSchemaRequest) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{70} + return file_pb_proto_rawDescGZIP(), []int{68} } func (x *UpdateGraphQLSchemaRequest) GetStartTs() uint64 { @@ -5950,7 +5816,7 @@ type UpdateGraphQLSchemaResponse struct { func (x *UpdateGraphQLSchemaResponse) Reset() { *x = UpdateGraphQLSchemaResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[71] + mi := &file_pb_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5963,7 +5829,7 @@ func (x *UpdateGraphQLSchemaResponse) String() string { func (*UpdateGraphQLSchemaResponse) ProtoMessage() {} func (x *UpdateGraphQLSchemaResponse) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[71] + mi := &file_pb_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5976,7 +5842,7 @@ func (x *UpdateGraphQLSchemaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGraphQLSchemaResponse.ProtoReflect.Descriptor instead. func (*UpdateGraphQLSchemaResponse) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{71} + return file_pb_proto_rawDescGZIP(), []int{69} } func (x *UpdateGraphQLSchemaResponse) GetUid() uint64 { @@ -6000,7 +5866,7 @@ type BulkMeta struct { func (x *BulkMeta) Reset() { *x = BulkMeta{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[72] + mi := &file_pb_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6013,7 +5879,7 @@ func (x *BulkMeta) String() string { func (*BulkMeta) ProtoMessage() {} func (x *BulkMeta) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[72] + mi := &file_pb_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6026,7 +5892,7 @@ func (x *BulkMeta) ProtoReflect() protoreflect.Message { // Deprecated: Use BulkMeta.ProtoReflect.Descriptor instead. func (*BulkMeta) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{72} + return file_pb_proto_rawDescGZIP(), []int{70} } func (x *BulkMeta) GetEdgeCount() int64 { @@ -6062,7 +5928,7 @@ type DeleteNsRequest struct { func (x *DeleteNsRequest) Reset() { *x = DeleteNsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[73] + mi := &file_pb_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6075,7 +5941,7 @@ func (x *DeleteNsRequest) String() string { func (*DeleteNsRequest) ProtoMessage() {} func (x *DeleteNsRequest) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[73] + mi := &file_pb_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6088,7 +5954,7 @@ func (x *DeleteNsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteNsRequest.ProtoReflect.Descriptor instead. func (*DeleteNsRequest) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{73} + return file_pb_proto_rawDescGZIP(), []int{71} } func (x *DeleteNsRequest) GetGroupId() uint32 { @@ -6116,7 +5982,7 @@ type TaskStatusRequest struct { func (x *TaskStatusRequest) Reset() { *x = TaskStatusRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[74] + mi := &file_pb_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6129,7 +5995,7 @@ func (x *TaskStatusRequest) String() string { func (*TaskStatusRequest) ProtoMessage() {} func (x *TaskStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[74] + mi := &file_pb_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6142,7 +6008,7 @@ func (x *TaskStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TaskStatusRequest.ProtoReflect.Descriptor instead. func (*TaskStatusRequest) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{74} + return file_pb_proto_rawDescGZIP(), []int{72} } func (x *TaskStatusRequest) GetTaskId() uint64 { @@ -6163,7 +6029,7 @@ type TaskStatusResponse struct { func (x *TaskStatusResponse) Reset() { *x = TaskStatusResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pb_proto_msgTypes[75] + mi := &file_pb_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6176,7 +6042,7 @@ func (x *TaskStatusResponse) String() string { func (*TaskStatusResponse) ProtoMessage() {} func (x *TaskStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_pb_proto_msgTypes[75] + mi := &file_pb_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6189,7 +6055,7 @@ func (x *TaskStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TaskStatusResponse.ProtoReflect.Descriptor instead. func (*TaskStatusResponse) Descriptor() ([]byte, []int) { - return file_pb_proto_rawDescGZIP(), []int{75} + return file_pb_proto_rawDescGZIP(), []int{73} } func (x *TaskStatusResponse) GetTaskMeta() uint64 { @@ -6346,781 +6212,763 @@ var file_pb_proto_rawDesc = []byte{ 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x6f, 0x0a, 0x07, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, - 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1a, - 0x0a, 0x08, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x08, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x54, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x22, 0xac, 0x04, 0x0a, 0x0c, 0x5a, 0x65, 0x72, 0x6f, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x41, 0x0a, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x5f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x62, 0x2e, - 0x5a, 0x65, 0x72, 0x6f, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x2e, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x54, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x73, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x54, 0x73, 0x12, 0x22, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x06, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, - 0x62, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x78, 0x55, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x06, 0x6d, 0x61, 0x78, 0x55, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x54, - 0x78, 0x6e, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x54, - 0x78, 0x6e, 0x54, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x4e, 0x73, 0x49, 0x44, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x4e, 0x73, 0x49, 0x44, 0x12, 0x1c, - 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x52, 0x61, 0x66, 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x52, 0x61, 0x66, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x03, - 0x74, 0x78, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x54, 0x78, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x03, 0x74, 0x78, 0x6e, 0x12, - 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, - 0x64, 0x12, 0x25, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, - 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, - 0x5a, 0x65, 0x72, 0x6f, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x30, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x5f, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x73, 0x12, 0x24, 0x0a, 0x07, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x1a, 0x3d, - 0x0a, 0x0f, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x54, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x02, 0x38, 0x01, 0x22, 0x8b, 0x04, 0x0a, 0x0c, 0x5a, 0x65, 0x72, 0x6f, 0x50, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x41, 0x0a, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x5f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x62, 0x2e, 0x5a, + 0x65, 0x72, 0x6f, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x2e, 0x53, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x54, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x73, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x54, 0x73, 0x12, 0x22, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x06, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, + 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x78, 0x55, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x06, 0x6d, 0x61, 0x78, 0x55, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x54, 0x78, + 0x6e, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x54, 0x78, + 0x6e, 0x54, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x4e, 0x73, 0x49, 0x44, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x4e, 0x73, 0x49, 0x44, 0x12, 0x1c, 0x0a, + 0x09, 0x6d, 0x61, 0x78, 0x52, 0x61, 0x66, 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x09, 0x6d, 0x61, 0x78, 0x52, 0x61, 0x66, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x03, 0x74, + 0x78, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, + 0x78, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x03, 0x74, 0x78, 0x6e, 0x12, 0x10, + 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, + 0x12, 0x2c, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x5a, 0x65, 0x72, 0x6f, 0x53, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x30, + 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x73, + 0x12, 0x24, 0x0a, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x07, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x54, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x0a, 0x10, + 0x0b, 0x22, 0xd0, 0x03, 0x0a, 0x0f, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, + 0x37, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x34, 0x0a, 0x05, 0x7a, 0x65, 0x72, 0x6f, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x5a, 0x65, 0x72, + 0x6f, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x7a, 0x65, 0x72, 0x6f, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x6d, 0x61, 0x78, 0x55, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, + 0x6d, 0x61, 0x78, 0x55, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x54, 0x78, 0x6e, + 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x54, 0x78, 0x6e, + 0x54, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x4e, 0x73, 0x49, 0x44, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x4e, 0x73, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, + 0x6d, 0x61, 0x78, 0x52, 0x61, 0x66, 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x09, 0x6d, 0x61, 0x78, 0x52, 0x61, 0x66, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x07, 0x72, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, + 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, + 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, + 0x69, 0x64, 0x1a, 0x44, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, - 0x08, 0x10, 0x09, 0x22, 0xf1, 0x03, 0x0a, 0x0f, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, - 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x12, 0x37, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, - 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x34, 0x0a, 0x05, 0x7a, 0x65, - 0x72, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x5a, - 0x65, 0x72, 0x6f, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x7a, 0x65, 0x72, 0x6f, 0x73, - 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x78, 0x55, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x06, 0x6d, 0x61, 0x78, 0x55, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x54, - 0x78, 0x6e, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x54, - 0x78, 0x6e, 0x54, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x4e, 0x73, 0x49, 0x44, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x4e, 0x73, 0x49, 0x44, 0x12, 0x1c, - 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x52, 0x61, 0x66, 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x52, 0x61, 0x66, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x07, - 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, - 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x63, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, - 0x73, 0x65, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x1a, 0x44, 0x0a, 0x0b, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x70, 0x62, - 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x44, 0x0a, 0x0a, 0x5a, 0x65, 0x72, 0x6f, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x81, 0x01, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, - 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x29, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, - 0x78, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0a, 0x6d, 0x61, 0x78, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0xb8, 0x02, 0x0a, 0x0a, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x18, - 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x45, 0x63, 0x68, 0x6f, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x45, 0x63, 0x68, 0x6f, 0x12, 0x18, 0x0a, 0x07, - 0x6f, 0x6e, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6f, - 0x6e, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x69, - 0x6e, 0x67, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x69, - 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x65, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x73, 0x73, 0x69, 0x67, - 0x6e, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x41, 0x73, - 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x22, 0xf5, 0x01, 0x0a, 0x06, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, - 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, - 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, - 0x22, 0x0a, 0x0d, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x42, 0x79, - 0x74, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, - 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, - 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x76, 0x65, 0x54, - 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x73, 0x12, - 0x2d, 0x0a, 0x12, 0x75, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, - 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x75, 0x6e, 0x63, - 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xe5, - 0x02, 0x0a, 0x0c, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x45, 0x64, 0x67, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06, 0x52, - 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x0a, 0x5a, 0x65, 0x72, 0x6f, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, + 0x08, 0x09, 0x10, 0x0a, 0x22, 0x81, 0x01, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, + 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x70, + 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x6d, 0x61, + 0x78, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0xb8, 0x02, 0x0a, 0x0a, 0x48, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x6c, 0x61, 0x73, 0x74, 0x45, 0x63, 0x68, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x6c, 0x61, 0x73, 0x74, 0x45, 0x63, 0x68, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x6e, 0x67, + 0x6f, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x6e, 0x67, 0x6f, + 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x18, + 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x12, + 0x1f, 0x0a, 0x0b, 0x65, 0x65, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x0a, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, + 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x41, 0x73, 0x73, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x22, 0xf5, 0x01, 0x0a, 0x06, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x64, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x65, + 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0d, + 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x64, + 0x4f, 0x6e, 0x6c, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, + 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x73, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x73, 0x12, 0x2d, 0x0a, 0x12, + 0x75, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x75, 0x6e, 0x63, 0x6f, 0x6d, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xe5, 0x02, 0x0a, 0x0c, + 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x45, 0x64, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06, 0x52, 0x06, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x32, + 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, + 0x56, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x06, 0x52, 0x07, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x61, 0x6e, + 0x67, 0x12, 0x23, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, + 0x70, 0x62, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x45, 0x64, 0x67, 0x65, 0x2e, + 0x4f, 0x70, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x22, 0x0a, 0x06, 0x66, 0x61, 0x63, 0x65, 0x74, 0x73, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x61, 0x63, + 0x65, 0x74, 0x52, 0x06, 0x66, 0x61, 0x63, 0x65, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x50, 0x72, 0x65, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x50, 0x72, 0x65, 0x64, 0x73, 0x12, 0x1c, + 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x1f, 0x0a, 0x02, + 0x4f, 0x70, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x44, + 0x45, 0x4c, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x56, 0x52, 0x10, 0x02, 0x4a, 0x04, 0x08, + 0x06, 0x10, 0x07, 0x22, 0xf1, 0x02, 0x0a, 0x09, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x12, 0x26, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, + 0x28, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x24, 0x0a, 0x05, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x79, + 0x70, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, + 0x2d, 0x0a, 0x07, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x70, 0x52, 0x06, 0x64, 0x72, 0x6f, 0x70, 0x4f, 0x70, 0x12, 0x1d, + 0x0a, 0x0a, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x64, 0x72, 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x28, 0x0a, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3e, 0x0a, 0x06, 0x44, 0x72, 0x6f, 0x70, 0x4f, + 0x70, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, + 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x41, 0x54, 0x41, 0x10, 0x02, 0x12, 0x08, + 0x0a, 0x04, 0x54, 0x59, 0x50, 0x45, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x4c, 0x4c, 0x5f, + 0x49, 0x4e, 0x5f, 0x4e, 0x53, 0x10, 0x04, 0x22, 0xca, 0x01, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x5f, 0x68, 0x69, 0x6e, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x48, 0x69, 0x6e, 0x74, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x48, 0x69, 0x6e, 0x74, 0x73, + 0x1a, 0x53, 0x0a, 0x0e, 0x50, 0x72, 0x65, 0x64, 0x48, 0x69, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x48, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2d, 0x0a, 0x08, 0x48, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0a, + 0x0a, 0x06, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x49, + 0x53, 0x54, 0x10, 0x02, 0x22, 0x93, 0x01, 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, + 0x74, 0x12, 0x29, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x61, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x74, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x54, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, + 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x12, + 0x19, 0x0a, 0x08, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x07, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x54, 0x73, 0x22, 0x74, 0x0a, 0x0c, 0x5a, 0x65, + 0x72, 0x6f, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x54, 0x73, 0x12, 0x29, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x22, 0xdb, 0x05, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, + 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x09, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x54, 0x73, 0x12, 0x1a, 0x0a, + 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6e, 0x6f, + 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x6e, + 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x4b, 0x65, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x61, 0x75, 0x6c, 0x74, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x61, 0x75, + 0x6c, 0x74, 0x41, 0x64, 0x64, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, + 0x72, 0x6f, 0x6c, 0x65, 0x69, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0f, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x69, 0x64, 0x46, 0x69, + 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x69, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x11, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x69, 0x64, 0x46, 0x69, + 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x61, 0x74, + 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, + 0x6e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x61, 0x6c, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x46, 0x72, 0x6f, 0x6d, 0x12, + 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x24, + 0x0a, 0x0d, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x13, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x17, 0x69, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x41, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, + 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x69, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x41, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0xea, + 0x03, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x2b, 0x0a, 0x09, 0x6d, + 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x09, 0x6d, + 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x02, 0x6b, 0x76, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x62, 0x61, 0x64, 0x67, 0x65, 0x72, 0x70, 0x62, 0x34, + 0x2e, 0x4b, 0x56, 0x52, 0x02, 0x6b, 0x76, 0x12, 0x29, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x64, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6c, 0x65, + 0x61, 0x6e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x64, + 0x65, 0x6c, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, + 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x05, 0x64, 0x65, 0x6c, + 0x74, 0x61, 0x12, 0x28, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x65, + 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, + 0x2c, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x29, 0x0a, + 0x09, 0x63, 0x64, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x44, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, + 0x63, 0x64, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x5f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x52, 0x08, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x74, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x54, 0x73, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x22, 0x23, 0x0a, 0x08, 0x43, + 0x44, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x65, 0x6e, 0x74, 0x5f, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x74, 0x54, 0x73, + 0x22, 0x63, 0x0a, 0x03, 0x4b, 0x56, 0x53, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x64, + 0x6f, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0x80, 0x04, 0x0a, 0x07, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06, 0x52, 0x03, + 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x76, 0x61, 0x6c, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x70, 0x62, + 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x07, 0x76, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3a, 0x0a, 0x0c, 0x70, 0x6f, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x6f, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x74, 0x61, + 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6c, 0x61, 0x6e, 0x67, 0x54, 0x61, 0x67, + 0x12, 0x22, 0x0a, 0x06, 0x66, 0x61, 0x63, 0x65, 0x74, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x52, 0x06, 0x66, 0x61, + 0x63, 0x65, 0x74, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x02, 0x6f, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x73, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x12, + 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x73, 0x22, 0xa0, 0x01, 0x0a, + 0x07, 0x56, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, + 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x10, + 0x01, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x4c, + 0x4f, 0x41, 0x54, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x04, 0x12, + 0x0c, 0x0a, 0x08, 0x44, 0x41, 0x54, 0x45, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x05, 0x12, 0x07, 0x0a, + 0x03, 0x47, 0x45, 0x4f, 0x10, 0x06, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x49, 0x44, 0x10, 0x07, 0x12, + 0x0c, 0x0a, 0x08, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x10, 0x08, 0x12, 0x0a, 0x0a, + 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x09, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x10, 0x0a, 0x12, 0x0c, 0x0a, 0x08, 0x42, 0x49, 0x47, 0x46, 0x4c, 0x4f, 0x41, + 0x54, 0x10, 0x0b, 0x12, 0x0a, 0x0a, 0x06, 0x56, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x10, 0x0c, 0x22, + 0x31, 0x0a, 0x0b, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, + 0x0a, 0x03, 0x52, 0x45, 0x46, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x41, 0x4c, 0x55, 0x45, + 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x4c, 0x41, 0x4e, 0x47, + 0x10, 0x02, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x51, 0x0a, 0x08, 0x55, 0x69, 0x64, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x04, 0x62, 0x61, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x74, + 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x73, + 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x75, 0x6d, 0x5f, 0x75, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x55, 0x69, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x07, 0x55, + 0x69, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x24, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x69, 0x64, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x61, + 0x6c, 0x6c, 0x6f, 0x63, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x17, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, + 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x52, 0x65, 0x66, 0x22, 0x8c, 0x01, 0x0a, 0x0b, 0x50, 0x6f, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x04, 0x70, 0x61, 0x63, 0x6b, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x69, 0x64, 0x50, + 0x61, 0x63, 0x6b, 0x52, 0x04, 0x70, 0x61, 0x63, 0x6b, 0x12, 0x27, 0x0a, 0x08, 0x70, 0x6f, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, + 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, + 0x06, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x22, 0x34, 0x0a, 0x0a, 0x46, 0x61, 0x63, 0x65, 0x74, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x4e, 0x0a, + 0x0b, 0x46, 0x61, 0x63, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x19, 0x0a, 0x08, + 0x61, 0x6c, 0x6c, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x61, 0x6c, 0x6c, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x61, 0x63, 0x65, + 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x2c, 0x0a, + 0x06, 0x46, 0x61, 0x63, 0x65, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x06, 0x66, 0x61, 0x63, 0x65, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x61, + 0x63, 0x65, 0x74, 0x52, 0x06, 0x66, 0x61, 0x63, 0x65, 0x74, 0x73, 0x22, 0x39, 0x0a, 0x0a, 0x46, + 0x61, 0x63, 0x65, 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0b, 0x66, 0x61, 0x63, + 0x65, 0x74, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, + 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x73, 0x52, 0x0a, 0x66, 0x61, 0x63, 0x65, + 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x44, 0x0a, 0x08, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, 0x6a, 0x0a, 0x0a, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x72, 0x65, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x70, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x2a, 0x0a, 0x08, 0x63, 0x68, + 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x62, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x72, 0x65, 0x65, 0x52, 0x08, 0x63, 0x68, + 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x22, 0x78, 0x0a, 0x0d, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x0a, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4e, 0x6f, 0x64, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, + 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, + 0x70, 0x73, 0x65, 0x72, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x70, 0x73, + 0x65, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x6f, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6e, 0x6f, + 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, 0x69, 0x71, + 0x75, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, + 0x12, 0x34, 0x0a, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, + 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x53, 0x70, 0x65, 0x63, 0x73, 0x22, 0x3a, 0x0a, 0x0c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x22, 0xc1, 0x04, 0x0a, 0x0c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x69, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x06, 0x52, 0x07, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6c, 0x61, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x45, 0x64, - 0x67, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x22, 0x0a, 0x06, 0x66, 0x61, 0x63, - 0x65, 0x74, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x46, 0x61, 0x63, 0x65, 0x74, 0x52, 0x06, 0x66, 0x61, 0x63, 0x65, 0x74, 0x73, 0x12, 0x22, 0x0a, - 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x50, 0x72, 0x65, 0x64, 0x73, 0x18, 0x0a, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x50, 0x72, 0x65, 0x64, - 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, - 0x1f, 0x0a, 0x02, 0x4f, 0x70, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x07, - 0x0a, 0x03, 0x44, 0x45, 0x4c, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x56, 0x52, 0x10, 0x02, - 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0xf1, 0x02, 0x0a, 0x09, 0x4d, 0x75, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, + 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x6c, + 0x61, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6e, + 0x6f, 0x6e, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0b, 0x6e, 0x6f, 0x6e, 0x4e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2a, + 0x0a, 0x11, 0x6e, 0x6f, 0x6e, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6e, 0x6f, 0x6e, 0x4e, 0x75, + 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x6f, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, + 0x69, 0x63, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6e, 0x6f, 0x43, 0x6f, 0x6e, + 0x66, 0x6c, 0x69, 0x63, 0x74, 0x12, 0x34, 0x0a, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x73, + 0x70, 0x65, 0x63, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x2e, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x52, + 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x73, 0x22, 0x39, 0x0a, 0x09, 0x44, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x01, 0x12, 0x0b, 0x0a, + 0x07, 0x52, 0x45, 0x56, 0x45, 0x52, 0x53, 0x45, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, + 0x4c, 0x45, 0x54, 0x45, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x52, 0x08, 0x65, 0x78, + 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x22, 0x4f, 0x0a, 0x0f, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x62, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x07, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x34, 0x0a, 0x0a, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x61, 0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x53, 0x0a, + 0x0a, 0x54, 0x79, 0x70, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, + 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x22, 0x32, 0x0a, 0x09, 0x4d, 0x61, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, + 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x14, 0x4d, 0x6f, 0x76, 0x65, 0x50, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, + 0x64, 0x65, 0x73, 0x74, 0x5f, 0x67, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, + 0x64, 0x65, 0x73, 0x74, 0x47, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x74, 0x78, 0x6e, 0x5f, 0x74, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x78, 0x6e, 0x54, 0x73, 0x12, 0x2b, + 0x0a, 0x11, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, + 0x74, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x43, 0x0a, 0x09, 0x54, + 0x78, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x54, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x73, + 0x22, 0xe4, 0x01, 0x0a, 0x0b, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x74, 0x61, + 0x12, 0x21, 0x0a, 0x04, 0x74, 0x78, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x78, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x04, 0x74, + 0x78, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x73, 0x73, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x41, 0x73, + 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x12, 0x4c, 0x0a, 0x0f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x74, 0x61, + 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x73, 0x1a, 0x41, 0x0a, 0x13, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1f, 0x0a, 0x0d, 0x54, 0x78, 0x6e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x04, 0x52, 0x02, 0x74, 0x73, 0x22, 0x26, 0x0a, 0x0c, 0x50, 0x65, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x22, 0x5e, 0x0a, 0x09, 0x52, 0x61, 0x66, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x29, 0x0a, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x61, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x26, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x22, 0x36, 0x0a, 0x0e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x24, 0x0a, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, + 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x22, 0x50, 0x0a, 0x0d, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x07, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x12, + 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x13, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0c, 0x52, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x2a, 0x0a, + 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x62, 0x61, 0x64, 0x67, 0x65, 0x72, 0x70, 0x62, 0x34, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x22, 0x3b, 0x0a, 0x14, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x23, 0x0a, 0x03, 0x6b, 0x76, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x62, 0x61, 0x64, 0x67, 0x65, 0x72, 0x70, 0x62, 0x34, 0x2e, 0x4b, 0x56, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x03, 0x6b, 0x76, 0x73, 0x22, 0xba, 0x01, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x10, + 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x76, 0x61, 0x6c, + 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x1c, 0x0a, + 0x09, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x62, + 0x75, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x62, 0x75, 0x6d, 0x70, 0x12, + 0x25, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, + 0x70, 0x62, 0x2e, 0x4e, 0x75, 0x6d, 0x2e, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2b, 0x0a, 0x09, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x4e, 0x53, 0x5f, 0x49, 0x44, 0x10, 0x00, 0x12, 0x07, + 0x0a, 0x03, 0x55, 0x49, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x58, 0x4e, 0x5f, 0x54, + 0x53, 0x10, 0x02, 0x22, 0x5a, 0x0a, 0x0b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x49, + 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x6e, 0x64, + 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x22, + 0x45, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x65, 0x0a, 0x11, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x46, 0x0a, + 0x0c, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x1b, 0x0a, + 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0xd9, 0x02, 0x0a, 0x0d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x54, 0x73, + 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x07, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x54, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x74, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x6e, 0x69, 0x78, 0x54, 0x73, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, + 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, + 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, + 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, + 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, + 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x66, 0x75, 0x6c, 0x6c, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x46, 0x75, 0x6c, + 0x6c, 0x22, 0x4c, 0x0a, 0x0e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, + 0x62, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0e, 0x64, 0x72, 0x6f, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, + 0x90, 0x01, 0x0a, 0x0d, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x31, 0x0a, 0x07, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x70, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x70, 0x52, 0x06, 0x64, 0x72, + 0x6f, 0x70, 0x4f, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x72, 0x6f, 0x70, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x2d, 0x0a, 0x06, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x70, 0x12, 0x07, 0x0a, + 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x41, 0x54, 0x41, 0x10, 0x01, + 0x12, 0x08, 0x0a, 0x04, 0x41, 0x54, 0x54, 0x52, 0x10, 0x02, 0x12, 0x06, 0x0a, 0x02, 0x4e, 0x53, + 0x10, 0x03, 0x22, 0xb5, 0x02, 0x0a, 0x0d, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, - 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x12, 0x26, 0x0a, 0x05, 0x65, 0x64, - 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x44, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, - 0x65, 0x73, 0x12, 0x28, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x04, 0x20, 0x03, + 0x17, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x54, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x6e, 0x69, 0x78, + 0x5f, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x6e, 0x69, 0x78, 0x54, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, + 0x0a, 0x09, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x0e, 0x45, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, + 0x73, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0xab, 0x02, 0x0a, 0x09, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x4b, 0x65, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x61, 0x74, 0x74, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x5f, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x55, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x04, 0x74, 0x65, 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x68, 0x0a, 0x07, + 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, + 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x41, 0x54, 0x41, 0x10, 0x01, 0x12, 0x09, + 0x0a, 0x05, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x56, + 0x45, 0x52, 0x53, 0x45, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, + 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x56, 0x10, 0x05, + 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, + 0x54, 0x59, 0x50, 0x45, 0x10, 0x07, 0x22, 0xa2, 0x01, 0x0a, 0x11, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x75, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x04, 0x75, 0x69, 0x64, 0x73, + 0x12, 0x27, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, + 0x08, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x12, 0x1b, + 0x0a, 0x09, 0x75, 0x69, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x08, 0x75, 0x69, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xc6, 0x01, 0x0a, 0x1a, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x54, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, + 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x33, 0x0a, 0x0c, + 0x64, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x24, 0x0a, 0x05, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, - 0x2e, 0x54, 0x79, 0x70, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x07, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x70, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x70, 0x52, 0x06, 0x64, 0x72, 0x6f, 0x70, 0x4f, - 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x72, 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x28, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3e, 0x0a, 0x06, 0x44, 0x72, - 0x6f, 0x70, 0x4f, 0x70, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x07, - 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x41, 0x54, 0x41, 0x10, - 0x02, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x59, 0x50, 0x45, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x41, - 0x4c, 0x4c, 0x5f, 0x49, 0x4e, 0x5f, 0x4e, 0x53, 0x10, 0x04, 0x22, 0xca, 0x01, 0x0a, 0x08, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x5f, - 0x68, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62, - 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x48, 0x69, - 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x48, 0x69, - 0x6e, 0x74, 0x73, 0x1a, 0x53, 0x0a, 0x0e, 0x50, 0x72, 0x65, 0x64, 0x48, 0x69, 0x6e, 0x74, 0x73, + 0x64, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x64, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x65, 0x64, + 0x73, 0x12, 0x31, 0x0a, 0x0c, 0x64, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x79, 0x70, + 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x64, 0x67, 0x72, 0x61, 0x70, 0x68, 0x54, + 0x79, 0x70, 0x65, 0x73, 0x22, 0x2f, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, + 0x61, 0x70, 0x68, 0x51, 0x4c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0xdb, 0x01, 0x0a, 0x08, 0x42, 0x75, 0x6c, 0x6b, 0x4d, 0x65, + 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x64, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x3a, 0x0a, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x6d, 0x61, 0x70, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x4d, + 0x65, 0x74, 0x61, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x09, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x61, 0x70, 0x12, 0x24, 0x0a, + 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x62, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x05, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x1a, 0x4e, 0x0a, 0x0e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x48, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2d, 0x0a, 0x08, 0x48, 0x69, 0x6e, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, - 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, - 0x04, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x02, 0x22, 0x93, 0x01, 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x12, 0x29, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x61, 0x66, 0x74, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x74, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x54, 0x73, 0x12, 0x12, - 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, - 0x6e, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x54, 0x73, 0x22, 0x74, 0x0a, - 0x0c, 0x5a, 0x65, 0x72, 0x6f, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x5f, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x73, 0x12, 0x29, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x22, 0xdb, 0x05, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x4a, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x54, 0x73, - 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, - 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, - 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x09, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x6e, - 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x69, 0x6c, - 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x61, - 0x75, 0x6c, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x76, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x64, 0x64, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x61, 0x75, - 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x69, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x69, - 0x64, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x69, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x11, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x69, - 0x64, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x61, 0x75, 0x6c, 0x74, - 0x50, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x61, 0x75, 0x6c, 0x74, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x61, 0x75, - 0x6c, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0f, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x46, 0x72, - 0x6f, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, - 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, - 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x17, 0x69, 0x73, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x69, 0x73, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x22, 0xea, 0x03, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x2b, - 0x0a, 0x09, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x09, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x02, 0x6b, - 0x76, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x62, 0x61, 0x64, 0x67, 0x65, 0x72, - 0x70, 0x62, 0x34, 0x2e, 0x4b, 0x56, 0x52, 0x02, 0x6b, 0x76, 0x12, 0x29, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x5f, 0x70, - 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x25, - 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, - 0x70, 0x62, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x05, - 0x64, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0x12, 0x2c, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x12, 0x29, 0x0a, 0x09, 0x63, 0x64, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x44, 0x43, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x52, 0x08, 0x63, 0x64, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x64, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, + 0x2c, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x31, 0x0a, + 0x12, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x4d, 0x65, 0x74, 0x61, + 0x32, 0xc4, 0x01, 0x0a, 0x04, 0x52, 0x61, 0x66, 0x74, 0x12, 0x2d, 0x0a, 0x09, 0x48, 0x65, 0x61, + 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x12, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x00, 0x30, 0x01, 0x12, 0x2e, 0x0a, 0x0b, 0x52, 0x61, 0x66, 0x74, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x61, 0x66, + 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x00, 0x28, 0x01, 0x12, 0x2e, 0x0a, 0x0b, 0x4a, 0x6f, 0x69, 0x6e, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x61, 0x66, + 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x1a, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x06, 0x49, 0x73, 0x50, 0x65, + 0x65, 0x72, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x61, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x32, 0xfd, 0x04, 0x0a, 0x04, 0x5a, 0x65, 0x72, 0x6f, + 0x12, 0x2c, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x0a, 0x2e, 0x70, 0x62, + 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x00, 0x12, 0x2d, + 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, + 0x69, 0x70, 0x12, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x0c, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x00, 0x12, 0x39, 0x0a, + 0x10, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, + 0x70, 0x12, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x1a, + 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x2b, 0x0a, 0x06, 0x4f, 0x72, 0x61, 0x63, + 0x6c, 0x65, 0x12, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x74, + 0x61, 0x22, 0x00, 0x30, 0x01, 0x12, 0x27, 0x0a, 0x0b, 0x53, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x12, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x22, 0x00, 0x12, 0x31, + 0x0a, 0x06, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x70, 0x62, + 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x27, 0x0a, 0x09, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x07, + 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x75, 0x6d, 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x73, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x49, 0x64, 0x73, 0x22, 0x00, 0x12, 0x28, 0x0a, 0x0a, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x12, 0x07, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x75, + 0x6d, 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x49, + 0x64, 0x73, 0x22, 0x00, 0x12, 0x33, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4f, 0x72, + 0x41, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x78, 0x6e, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x1a, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x78, 0x6e, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x00, 0x12, 0x30, 0x0a, 0x08, 0x54, 0x72, 0x79, + 0x41, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x78, 0x6e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x4f, 0x72, + 0x61, 0x63, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x22, 0x00, 0x12, 0x34, 0x0a, 0x0f, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x52, 0x08, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x73, 0x12, 0x19, 0x0a, - 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x22, 0x23, - 0x0a, 0x08, 0x43, 0x44, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x65, - 0x6e, 0x74, 0x5f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x65, 0x6e, - 0x74, 0x54, 0x73, 0x22, 0x63, 0x0a, 0x03, 0x4b, 0x56, 0x53, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, - 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, - 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0x80, 0x04, 0x0a, 0x07, 0x50, 0x6f, 0x73, - 0x74, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x06, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a, 0x08, - 0x76, 0x61, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, - 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x07, 0x76, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3a, 0x0a, 0x0c, - 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, - 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x70, 0x6f, 0x73, - 0x74, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, - 0x5f, 0x74, 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6c, 0x61, 0x6e, 0x67, - 0x54, 0x61, 0x67, 0x12, 0x22, 0x0a, 0x06, 0x66, 0x61, 0x63, 0x65, 0x74, 0x73, 0x18, 0x09, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x52, - 0x06, 0x66, 0x61, 0x63, 0x65, 0x74, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x5f, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x54, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x73, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x73, 0x22, - 0xa0, 0x01, 0x0a, 0x07, 0x56, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, - 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x49, 0x4e, 0x41, - 0x52, 0x59, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x09, 0x0a, - 0x05, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4f, 0x4f, 0x4c, - 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x41, 0x54, 0x45, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x05, - 0x12, 0x07, 0x0a, 0x03, 0x47, 0x45, 0x4f, 0x10, 0x06, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x49, 0x44, - 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x10, 0x08, - 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x09, 0x12, 0x0a, 0x0a, 0x06, - 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x0a, 0x12, 0x0c, 0x0a, 0x08, 0x42, 0x49, 0x47, 0x46, - 0x4c, 0x4f, 0x41, 0x54, 0x10, 0x0b, 0x12, 0x0a, 0x0a, 0x06, 0x56, 0x46, 0x4c, 0x4f, 0x41, 0x54, - 0x10, 0x0c, 0x22, 0x31, 0x0a, 0x0b, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x07, 0x0a, 0x03, 0x52, 0x45, 0x46, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x41, - 0x4c, 0x55, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x4c, - 0x41, 0x4e, 0x47, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x51, 0x0a, 0x08, 0x55, - 0x69, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x61, 0x73, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x62, 0x61, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, - 0x65, 0x6c, 0x74, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x64, 0x65, 0x6c, - 0x74, 0x61, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x75, 0x6d, 0x5f, 0x75, 0x69, 0x64, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x55, 0x69, 0x64, 0x73, 0x22, 0x6b, - 0x0a, 0x07, 0x55, 0x69, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x24, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x69, - 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x1b, - 0x0a, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x17, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x08, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x52, 0x65, 0x66, 0x22, 0x8c, 0x01, 0x0a, 0x0b, - 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x04, 0x70, - 0x61, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x55, - 0x69, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x04, 0x70, 0x61, 0x63, 0x6b, 0x12, 0x27, 0x0a, 0x08, - 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, - 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x70, 0x6f, 0x73, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, - 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x04, 0x52, 0x06, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x22, 0x34, 0x0a, 0x0a, 0x46, 0x61, - 0x63, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, - 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, - 0x22, 0x4e, 0x0a, 0x0b, 0x46, 0x61, 0x63, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, - 0x19, 0x0a, 0x08, 0x61, 0x6c, 0x6c, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x07, 0x61, 0x6c, 0x6c, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x46, - 0x61, 0x63, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x22, 0x2c, 0x0a, 0x06, 0x46, 0x61, 0x63, 0x65, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x06, 0x66, 0x61, - 0x63, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x52, 0x06, 0x66, 0x61, 0x63, 0x65, 0x74, 0x73, 0x22, 0x39, - 0x0a, 0x0a, 0x46, 0x61, 0x63, 0x65, 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0b, - 0x66, 0x61, 0x63, 0x65, 0x74, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x73, 0x52, 0x0a, 0x66, - 0x61, 0x63, 0x65, 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x44, 0x0a, 0x08, 0x46, 0x75, 0x6e, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x61, - 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, - 0x6a, 0x0a, 0x0a, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x72, 0x65, 0x65, 0x12, 0x0e, 0x0a, - 0x02, 0x6f, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x2a, 0x0a, - 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x72, 0x65, 0x65, 0x52, - 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x04, 0x66, 0x75, 0x6e, - 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x75, 0x6e, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x22, 0x78, 0x0a, 0x0d, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x65, - 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x0a, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, 0x0a, 0x09, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, - 0x76, 0x65, 0x72, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x76, - 0x65, 0x72, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, - 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x16, - 0x0a, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, - 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x6f, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0a, 0x6e, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, - 0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x6e, 0x69, - 0x71, 0x75, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x73, 0x70, 0x65, - 0x63, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x56, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0a, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x73, 0x22, 0x3a, 0x0a, 0x0c, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0xc1, 0x04, 0x0a, 0x0c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x70, 0x62, - 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x72, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, - 0x73, 0x65, 0x72, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x70, 0x73, 0x65, - 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x6e, 0x6f, 0x6e, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6e, 0x6f, 0x6e, 0x4e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x6f, 0x6e, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6e, 0x6f, - 0x6e, 0x4e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, - 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x6f, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6e, 0x6f, - 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x12, 0x34, 0x0a, 0x0b, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x70, 0x62, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, - 0x65, 0x63, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x73, 0x22, 0x39, - 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, - 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x01, - 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x56, 0x45, 0x52, 0x53, 0x45, 0x10, 0x02, 0x12, 0x0a, 0x0a, - 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x52, - 0x08, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x22, 0x4f, 0x0a, 0x0f, 0x56, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x69, - 0x72, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x34, 0x0a, 0x0a, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x22, 0x53, 0x0a, 0x0a, 0x54, 0x79, 0x70, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1b, - 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, - 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x06, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x32, 0x0a, 0x09, 0x4d, 0x61, 0x70, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x14, 0x4d, 0x6f, - 0x76, 0x65, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x69, 0x64, 0x12, - 0x19, 0x0a, 0x08, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x67, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x07, 0x64, 0x65, 0x73, 0x74, 0x47, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x74, 0x78, - 0x6e, 0x5f, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x78, 0x6e, 0x54, - 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x65, 0x78, - 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x43, - 0x0a, 0x09, 0x54, 0x78, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x5f, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x54, 0x73, 0x22, 0xe4, 0x01, 0x0a, 0x0b, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x65, - 0x6c, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x04, 0x74, 0x78, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x78, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x04, 0x74, 0x78, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x73, - 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6d, 0x61, - 0x78, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x12, 0x4c, 0x0a, 0x0f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x65, - 0x6c, 0x74, 0x61, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x1a, 0x41, 0x0a, 0x13, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1f, 0x0a, 0x0d, 0x54, 0x78, - 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x02, 0x74, 0x73, 0x22, 0x26, 0x0a, 0x0c, 0x50, - 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x22, 0x5e, 0x0a, 0x09, 0x52, 0x61, 0x66, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x12, 0x29, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x61, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x26, 0x0a, 0x07, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x22, 0x36, 0x0a, 0x0e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x22, 0x50, 0x0a, 0x0d, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x07, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, - 0x70, 0x62, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x5d, 0x0a, - 0x13, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, - 0x12, 0x2a, 0x0a, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x62, 0x61, 0x64, 0x67, 0x65, 0x72, 0x70, 0x62, 0x34, 0x2e, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x22, 0x3b, 0x0a, 0x14, - 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x03, 0x6b, 0x76, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x62, 0x61, 0x64, 0x67, 0x65, 0x72, 0x70, 0x62, 0x34, 0x2e, 0x4b, 0x56, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x03, 0x6b, 0x76, 0x73, 0x22, 0xba, 0x01, 0x0a, 0x03, 0x4e, 0x75, - 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, - 0x76, 0x61, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, - 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x62, 0x75, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x62, 0x75, - 0x6d, 0x70, 0x12, 0x25, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x75, 0x6d, 0x2e, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2b, 0x0a, 0x09, 0x6c, 0x65, 0x61, - 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x4e, 0x53, 0x5f, 0x49, 0x44, 0x10, - 0x00, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x49, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x58, - 0x4e, 0x5f, 0x54, 0x53, 0x10, 0x02, 0x22, 0x5a, 0x0a, 0x0b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, - 0x65, 0x64, 0x49, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, - 0x65, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, - 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, - 0x6c, 0x79, 0x22, 0x45, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x65, 0x0a, 0x11, 0x4d, 0x6f, 0x76, - 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, - 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x22, 0x2f, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, - 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, - 0x65, 0x22, 0x46, 0x0a, 0x0c, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x73, 0x12, 0x19, - 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x06, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0xd9, 0x02, 0x0a, 0x0d, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, - 0x65, 0x61, 0x64, 0x5f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x65, - 0x61, 0x64, 0x54, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x54, 0x73, 0x12, - 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x6e, - 0x69, 0x78, 0x5f, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x6e, 0x69, - 0x78, 0x54, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, - 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6e, 0x6f, 0x6e, - 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x6e, 0x6f, - 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, - 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x63, - 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x22, 0x4c, 0x0a, 0x0e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0f, 0x64, 0x72, 0x6f, 0x70, 0x5f, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x64, 0x72, 0x6f, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x0d, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x07, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x70, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x72, 0x6f, 0x70, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x70, - 0x52, 0x06, 0x64, 0x72, 0x6f, 0x70, 0x4f, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x72, 0x6f, 0x70, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x72, - 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2d, 0x0a, 0x06, 0x44, 0x72, 0x6f, 0x70, 0x4f, - 0x70, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x41, - 0x54, 0x41, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x54, 0x54, 0x52, 0x10, 0x02, 0x12, 0x06, - 0x0a, 0x02, 0x4e, 0x53, 0x10, 0x03, 0x22, 0xb5, 0x02, 0x0a, 0x0d, 0x45, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x74, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x54, 0x73, 0x12, 0x17, 0x0a, 0x07, - 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, - 0x6e, 0x69, 0x78, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x1d, - 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, - 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, - 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x4c, - 0x0a, 0x0e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0xab, 0x02, 0x0a, - 0x09, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x55, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x72, 0x6d, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x74, 0x65, 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x22, 0x68, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, - 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x41, 0x54, 0x41, - 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x02, 0x12, 0x0b, 0x0a, - 0x07, 0x52, 0x45, 0x56, 0x45, 0x52, 0x53, 0x45, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x4f, - 0x55, 0x4e, 0x54, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x52, - 0x45, 0x56, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x10, 0x06, - 0x12, 0x08, 0x0a, 0x04, 0x54, 0x59, 0x50, 0x45, 0x10, 0x07, 0x22, 0xa2, 0x01, 0x0a, 0x11, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x04, - 0x75, 0x69, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, 0x73, 0x74, - 0x69, 0x6e, 0x67, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1b, 0x0a, - 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x70, - 0x6c, 0x69, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x73, 0x70, 0x6c, 0x69, - 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x69, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x75, 0x69, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, - 0xc6, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, - 0x4c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, - 0x0a, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x71, 0x6c, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x12, 0x33, 0x0a, 0x0c, 0x64, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x64, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x50, 0x72, 0x65, 0x64, 0x73, 0x12, 0x31, 0x0a, 0x0c, 0x64, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, - 0x2e, 0x54, 0x79, 0x70, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x64, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x2f, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0xdb, 0x01, 0x0a, 0x08, 0x42, 0x75, - 0x6c, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x64, 0x67, 0x65, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, - 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x42, - 0x75, 0x6c, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x61, - 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x61, - 0x70, 0x12, 0x24, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x1a, 0x4e, 0x0a, 0x0e, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4a, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x4e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, - 0x64, 0x22, 0x31, 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, - 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, - 0x4d, 0x65, 0x74, 0x61, 0x32, 0xc4, 0x01, 0x0a, 0x04, 0x52, 0x61, 0x66, 0x74, 0x12, 0x2d, 0x0a, - 0x09, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x12, 0x0c, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x48, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x00, 0x30, 0x01, 0x12, 0x2e, 0x0a, 0x0b, - 0x52, 0x61, 0x66, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0d, 0x2e, 0x70, 0x62, - 0x2e, 0x52, 0x61, 0x66, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x0c, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x00, 0x28, 0x01, 0x12, 0x2e, 0x0a, 0x0b, - 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x0f, 0x2e, 0x70, 0x62, - 0x2e, 0x52, 0x61, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x1a, 0x0c, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x06, - 0x49, 0x73, 0x50, 0x65, 0x65, 0x72, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x61, 0x66, 0x74, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x65, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x32, 0xb4, 0x05, 0x0a, 0x04, - 0x5a, 0x65, 0x72, 0x6f, 0x12, 0x2c, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, - 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x1a, 0x13, 0x2e, 0x70, 0x62, - 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x1a, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, - 0x00, 0x12, 0x39, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x2b, 0x0a, 0x06, - 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x12, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, - 0x44, 0x65, 0x6c, 0x74, 0x61, 0x22, 0x00, 0x30, 0x01, 0x12, 0x27, 0x0a, 0x0b, 0x53, 0x68, 0x6f, - 0x75, 0x6c, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x12, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x22, 0x00, 0x12, 0x31, 0x0a, 0x06, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x11, 0x2e, 0x70, - 0x62, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x27, 0x0a, 0x09, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x49, - 0x64, 0x73, 0x12, 0x07, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x75, 0x6d, 0x1a, 0x0f, 0x2e, 0x70, 0x62, - 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x49, 0x64, 0x73, 0x22, 0x00, 0x12, 0x28, - 0x0a, 0x0a, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x12, 0x07, 0x2e, 0x70, - 0x62, 0x2e, 0x4e, 0x75, 0x6d, 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, - 0x6e, 0x65, 0x64, 0x49, 0x64, 0x73, 0x22, 0x00, 0x12, 0x33, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x4f, 0x72, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x54, 0x78, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x1a, 0x0f, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x54, 0x78, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x00, 0x12, 0x30, 0x0a, - 0x08, 0x54, 0x72, 0x79, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x54, - 0x78, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x1a, 0x0f, 0x2e, 0x70, - 0x62, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x22, 0x00, 0x12, - 0x34, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, - 0x6f, 0x64, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, - 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x0a, 0x4d, 0x6f, 0x76, 0x65, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x6f, 0x76, 0x65, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, - 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x35, 0x0a, 0x0c, 0x41, - 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x62, - 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x22, 0x00, 0x32, 0xee, 0x05, 0x0a, 0x06, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x2a, 0x0a, - 0x06, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x75, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x78, 0x6e, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x00, 0x12, 0x24, 0x0a, 0x09, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, - 0x2d, 0x0a, 0x0e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x12, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x1a, - 0x07, 0x2e, 0x70, 0x62, 0x2e, 0x4b, 0x56, 0x53, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x29, - 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x72, 0x74, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x72, - 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x2f, 0x0a, 0x06, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x06, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x2b, 0x0a, - 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, 0x70, - 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x06, 0x45, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x2d, 0x0a, - 0x10, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x12, 0x07, 0x2e, 0x70, 0x62, 0x2e, 0x4b, 0x56, 0x53, 0x1a, 0x0c, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x00, 0x28, 0x01, 0x12, 0x39, 0x0a, 0x0d, - 0x4d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x18, 0x2e, - 0x70, 0x62, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x1a, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x62, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, - 0x62, 0x61, 0x64, 0x67, 0x65, 0x72, 0x70, 0x62, 0x34, 0x2e, 0x4b, 0x56, 0x4c, 0x69, 0x73, 0x74, - 0x22, 0x00, 0x30, 0x01, 0x12, 0x58, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x51, 0x4c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1e, 0x2e, 0x70, 0x62, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x62, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x34, - 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x73, 0x52, + 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, + 0x00, 0x12, 0x31, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, + 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0a, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x54, - 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x75, 0x73, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x0a, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x32, 0xee, 0x05, 0x0a, 0x06, 0x57, 0x6f, 0x72, 0x6b, + 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x06, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0d, 0x2e, 0x70, + 0x62, 0x2e, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0f, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x54, 0x78, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x00, 0x12, 0x24, + 0x0a, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x09, 0x2e, 0x70, 0x62, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x0e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x1a, 0x07, 0x2e, 0x70, 0x62, 0x2e, 0x4b, 0x56, 0x53, 0x22, 0x00, 0x28, + 0x01, 0x30, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x0f, 0x2e, 0x70, 0x62, + 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x0e, 0x2e, 0x70, + 0x62, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x2f, + 0x0a, 0x06, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x70, 0x62, + 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, + 0x31, 0x0a, 0x06, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x42, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x70, + 0x62, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x2b, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x2e, + 0x70, 0x62, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, + 0x31, 0x0a, 0x06, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x45, + 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x70, + 0x62, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x10, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x50, 0x72, 0x65, + 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x07, 0x2e, 0x70, 0x62, 0x2e, 0x4b, 0x56, 0x53, 0x1a, + 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x00, 0x28, + 0x01, 0x12, 0x39, 0x0a, 0x0d, 0x4d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x65, 0x64, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x1a, 0x0c, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x09, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x62, 0x61, 0x64, 0x67, 0x65, 0x72, 0x70, 0x62, 0x34, 0x2e, 0x4b, + 0x56, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x00, 0x30, 0x01, 0x12, 0x58, 0x0a, 0x13, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x61, 0x70, + 0x68, 0x51, 0x4c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x61, 0x70, + 0x68, 0x51, 0x4c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x34, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x4e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, 0x70, 0x62, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0a, 0x54, 0x61, 0x73, + 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x61, 0x73, + 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -7136,7 +6984,7 @@ func file_pb_proto_rawDescGZIP() []byte { } var file_pb_proto_enumTypes = make([]protoimpl.EnumInfo, 9) -var file_pb_proto_msgTypes = make([]protoimpl.MessageInfo, 85) +var file_pb_proto_msgTypes = make([]protoimpl.MessageInfo, 83) var file_pb_proto_goTypes = []interface{}{ (DirectedEdge_Op)(0), // 0: pb.DirectedEdge.Op (Mutations_DropOp)(0), // 1: pb.Mutations.DropOp @@ -7160,245 +7008,239 @@ var file_pb_proto_goTypes = []interface{}{ (*RaftContext)(nil), // 19: pb.RaftContext (*Member)(nil), // 20: pb.Member (*Group)(nil), // 21: pb.Group - (*License)(nil), // 22: pb.License - (*ZeroProposal)(nil), // 23: pb.ZeroProposal - (*MembershipState)(nil), // 24: pb.MembershipState - (*ConnectionState)(nil), // 25: pb.ConnectionState - (*HealthInfo)(nil), // 26: pb.HealthInfo - (*Tablet)(nil), // 27: pb.Tablet - (*DirectedEdge)(nil), // 28: pb.DirectedEdge - (*Mutations)(nil), // 29: pb.Mutations - (*Metadata)(nil), // 30: pb.Metadata - (*Snapshot)(nil), // 31: pb.Snapshot - (*ZeroSnapshot)(nil), // 32: pb.ZeroSnapshot - (*RestoreRequest)(nil), // 33: pb.RestoreRequest - (*Proposal)(nil), // 34: pb.Proposal - (*CDCState)(nil), // 35: pb.CDCState - (*KVS)(nil), // 36: pb.KVS - (*Posting)(nil), // 37: pb.Posting - (*UidBlock)(nil), // 38: pb.UidBlock - (*UidPack)(nil), // 39: pb.UidPack - (*PostingList)(nil), // 40: pb.PostingList - (*FacetParam)(nil), // 41: pb.FacetParam - (*FacetParams)(nil), // 42: pb.FacetParams - (*Facets)(nil), // 43: pb.Facets - (*FacetsList)(nil), // 44: pb.FacetsList - (*Function)(nil), // 45: pb.Function - (*FilterTree)(nil), // 46: pb.FilterTree - (*SchemaRequest)(nil), // 47: pb.SchemaRequest - (*SchemaNode)(nil), // 48: pb.SchemaNode - (*SchemaResult)(nil), // 49: pb.SchemaResult - (*SchemaUpdate)(nil), // 50: pb.SchemaUpdate - (*VectorIndexSpec)(nil), // 51: pb.VectorIndexSpec - (*OptionPair)(nil), // 52: pb.OptionPair - (*TypeUpdate)(nil), // 53: pb.TypeUpdate - (*MapHeader)(nil), // 54: pb.MapHeader - (*MovePredicatePayload)(nil), // 55: pb.MovePredicatePayload - (*TxnStatus)(nil), // 56: pb.TxnStatus - (*OracleDelta)(nil), // 57: pb.OracleDelta - (*TxnTimestamps)(nil), // 58: pb.TxnTimestamps - (*PeerResponse)(nil), // 59: pb.PeerResponse - (*RaftBatch)(nil), // 60: pb.RaftBatch - (*TabletResponse)(nil), // 61: pb.TabletResponse - (*TabletRequest)(nil), // 62: pb.TabletRequest - (*SubscriptionRequest)(nil), // 63: pb.SubscriptionRequest - (*SubscriptionResponse)(nil), // 64: pb.SubscriptionResponse - (*Num)(nil), // 65: pb.Num - (*AssignedIds)(nil), // 66: pb.AssignedIds - (*RemoveNodeRequest)(nil), // 67: pb.RemoveNodeRequest - (*MoveTabletRequest)(nil), // 68: pb.MoveTabletRequest - (*ApplyLicenseRequest)(nil), // 69: pb.ApplyLicenseRequest - (*SnapshotMeta)(nil), // 70: pb.SnapshotMeta - (*Status)(nil), // 71: pb.Status - (*BackupRequest)(nil), // 72: pb.BackupRequest - (*BackupResponse)(nil), // 73: pb.BackupResponse - (*DropOperation)(nil), // 74: pb.DropOperation - (*ExportRequest)(nil), // 75: pb.ExportRequest - (*ExportResponse)(nil), // 76: pb.ExportResponse - (*BackupKey)(nil), // 77: pb.BackupKey - (*BackupPostingList)(nil), // 78: pb.BackupPostingList - (*UpdateGraphQLSchemaRequest)(nil), // 79: pb.UpdateGraphQLSchemaRequest - (*UpdateGraphQLSchemaResponse)(nil), // 80: pb.UpdateGraphQLSchemaResponse - (*BulkMeta)(nil), // 81: pb.BulkMeta - (*DeleteNsRequest)(nil), // 82: pb.DeleteNsRequest - (*TaskStatusRequest)(nil), // 83: pb.TaskStatusRequest - (*TaskStatusResponse)(nil), // 84: pb.TaskStatusResponse - nil, // 85: pb.Result.VectorMetricsEntry - nil, // 86: pb.Group.MembersEntry - nil, // 87: pb.Group.TabletsEntry - nil, // 88: pb.ZeroProposal.SnapshotTsEntry - nil, // 89: pb.MembershipState.GroupsEntry - nil, // 90: pb.MembershipState.ZerosEntry - nil, // 91: pb.Metadata.PredHintsEntry - nil, // 92: pb.OracleDelta.GroupChecksumsEntry - nil, // 93: pb.BulkMeta.SchemaMapEntry - (*api.TxnContext)(nil), // 94: api.TxnContext - (*api.Facet)(nil), // 95: api.Facet - (*pb.KV)(nil), // 96: badgerpb4.KV - (*api.Payload)(nil), // 97: api.Payload - (*pb.Match)(nil), // 98: badgerpb4.Match - (*pb.KVList)(nil), // 99: badgerpb4.KVList + (*ZeroProposal)(nil), // 22: pb.ZeroProposal + (*MembershipState)(nil), // 23: pb.MembershipState + (*ConnectionState)(nil), // 24: pb.ConnectionState + (*HealthInfo)(nil), // 25: pb.HealthInfo + (*Tablet)(nil), // 26: pb.Tablet + (*DirectedEdge)(nil), // 27: pb.DirectedEdge + (*Mutations)(nil), // 28: pb.Mutations + (*Metadata)(nil), // 29: pb.Metadata + (*Snapshot)(nil), // 30: pb.Snapshot + (*ZeroSnapshot)(nil), // 31: pb.ZeroSnapshot + (*RestoreRequest)(nil), // 32: pb.RestoreRequest + (*Proposal)(nil), // 33: pb.Proposal + (*CDCState)(nil), // 34: pb.CDCState + (*KVS)(nil), // 35: pb.KVS + (*Posting)(nil), // 36: pb.Posting + (*UidBlock)(nil), // 37: pb.UidBlock + (*UidPack)(nil), // 38: pb.UidPack + (*PostingList)(nil), // 39: pb.PostingList + (*FacetParam)(nil), // 40: pb.FacetParam + (*FacetParams)(nil), // 41: pb.FacetParams + (*Facets)(nil), // 42: pb.Facets + (*FacetsList)(nil), // 43: pb.FacetsList + (*Function)(nil), // 44: pb.Function + (*FilterTree)(nil), // 45: pb.FilterTree + (*SchemaRequest)(nil), // 46: pb.SchemaRequest + (*SchemaNode)(nil), // 47: pb.SchemaNode + (*SchemaResult)(nil), // 48: pb.SchemaResult + (*SchemaUpdate)(nil), // 49: pb.SchemaUpdate + (*VectorIndexSpec)(nil), // 50: pb.VectorIndexSpec + (*OptionPair)(nil), // 51: pb.OptionPair + (*TypeUpdate)(nil), // 52: pb.TypeUpdate + (*MapHeader)(nil), // 53: pb.MapHeader + (*MovePredicatePayload)(nil), // 54: pb.MovePredicatePayload + (*TxnStatus)(nil), // 55: pb.TxnStatus + (*OracleDelta)(nil), // 56: pb.OracleDelta + (*TxnTimestamps)(nil), // 57: pb.TxnTimestamps + (*PeerResponse)(nil), // 58: pb.PeerResponse + (*RaftBatch)(nil), // 59: pb.RaftBatch + (*TabletResponse)(nil), // 60: pb.TabletResponse + (*TabletRequest)(nil), // 61: pb.TabletRequest + (*SubscriptionRequest)(nil), // 62: pb.SubscriptionRequest + (*SubscriptionResponse)(nil), // 63: pb.SubscriptionResponse + (*Num)(nil), // 64: pb.Num + (*AssignedIds)(nil), // 65: pb.AssignedIds + (*RemoveNodeRequest)(nil), // 66: pb.RemoveNodeRequest + (*MoveTabletRequest)(nil), // 67: pb.MoveTabletRequest + (*SnapshotMeta)(nil), // 68: pb.SnapshotMeta + (*Status)(nil), // 69: pb.Status + (*BackupRequest)(nil), // 70: pb.BackupRequest + (*BackupResponse)(nil), // 71: pb.BackupResponse + (*DropOperation)(nil), // 72: pb.DropOperation + (*ExportRequest)(nil), // 73: pb.ExportRequest + (*ExportResponse)(nil), // 74: pb.ExportResponse + (*BackupKey)(nil), // 75: pb.BackupKey + (*BackupPostingList)(nil), // 76: pb.BackupPostingList + (*UpdateGraphQLSchemaRequest)(nil), // 77: pb.UpdateGraphQLSchemaRequest + (*UpdateGraphQLSchemaResponse)(nil), // 78: pb.UpdateGraphQLSchemaResponse + (*BulkMeta)(nil), // 79: pb.BulkMeta + (*DeleteNsRequest)(nil), // 80: pb.DeleteNsRequest + (*TaskStatusRequest)(nil), // 81: pb.TaskStatusRequest + (*TaskStatusResponse)(nil), // 82: pb.TaskStatusResponse + nil, // 83: pb.Result.VectorMetricsEntry + nil, // 84: pb.Group.MembersEntry + nil, // 85: pb.Group.TabletsEntry + nil, // 86: pb.ZeroProposal.SnapshotTsEntry + nil, // 87: pb.MembershipState.GroupsEntry + nil, // 88: pb.MembershipState.ZerosEntry + nil, // 89: pb.Metadata.PredHintsEntry + nil, // 90: pb.OracleDelta.GroupChecksumsEntry + nil, // 91: pb.BulkMeta.SchemaMapEntry + (*api.TxnContext)(nil), // 92: api.TxnContext + (*api.Facet)(nil), // 93: api.Facet + (*pb.KV)(nil), // 94: badgerpb4.KV + (*api.Payload)(nil), // 95: api.Payload + (*pb.Match)(nil), // 96: badgerpb4.Match + (*pb.KVList)(nil), // 97: badgerpb4.KVList } var file_pb_proto_depIdxs = []int32{ 3, // 0: pb.TaskValue.val_type:type_name -> pb.Posting.ValType 9, // 1: pb.Query.uid_list:type_name -> pb.List 11, // 2: pb.Query.src_func:type_name -> pb.SrcFunction - 42, // 3: pb.Query.facet_param:type_name -> pb.FacetParams - 46, // 4: pb.Query.facets_filter:type_name -> pb.FilterTree + 41, // 3: pb.Query.facet_param:type_name -> pb.FacetParams + 45, // 4: pb.Query.facets_filter:type_name -> pb.FilterTree 10, // 5: pb.ValueList.values:type_name -> pb.TaskValue 9, // 6: pb.Result.uid_matrix:type_name -> pb.List 13, // 7: pb.Result.value_matrix:type_name -> pb.ValueList - 44, // 8: pb.Result.facet_matrix:type_name -> pb.FacetsList + 43, // 8: pb.Result.facet_matrix:type_name -> pb.FacetsList 14, // 9: pb.Result.lang_matrix:type_name -> pb.LangList - 85, // 10: pb.Result.vector_metrics:type_name -> pb.Result.VectorMetricsEntry + 83, // 10: pb.Result.vector_metrics:type_name -> pb.Result.VectorMetricsEntry 16, // 11: pb.SortMessage.order:type_name -> pb.Order 9, // 12: pb.SortMessage.uid_matrix:type_name -> pb.List 9, // 13: pb.SortResult.uid_matrix:type_name -> pb.List - 86, // 14: pb.Group.members:type_name -> pb.Group.MembersEntry - 87, // 15: pb.Group.tablets:type_name -> pb.Group.TabletsEntry - 88, // 16: pb.ZeroProposal.snapshot_ts:type_name -> pb.ZeroProposal.SnapshotTsEntry + 84, // 14: pb.Group.members:type_name -> pb.Group.MembersEntry + 85, // 15: pb.Group.tablets:type_name -> pb.Group.TabletsEntry + 86, // 16: pb.ZeroProposal.snapshot_ts:type_name -> pb.ZeroProposal.SnapshotTsEntry 20, // 17: pb.ZeroProposal.member:type_name -> pb.Member - 27, // 18: pb.ZeroProposal.tablet:type_name -> pb.Tablet - 94, // 19: pb.ZeroProposal.txn:type_name -> api.TxnContext - 22, // 20: pb.ZeroProposal.license:type_name -> pb.License - 32, // 21: pb.ZeroProposal.snapshot:type_name -> pb.ZeroSnapshot - 82, // 22: pb.ZeroProposal.delete_ns:type_name -> pb.DeleteNsRequest - 27, // 23: pb.ZeroProposal.tablets:type_name -> pb.Tablet - 89, // 24: pb.MembershipState.groups:type_name -> pb.MembershipState.GroupsEntry - 90, // 25: pb.MembershipState.zeros:type_name -> pb.MembershipState.ZerosEntry - 20, // 26: pb.MembershipState.removed:type_name -> pb.Member - 22, // 27: pb.MembershipState.license:type_name -> pb.License - 20, // 28: pb.ConnectionState.member:type_name -> pb.Member - 24, // 29: pb.ConnectionState.state:type_name -> pb.MembershipState - 3, // 30: pb.DirectedEdge.value_type:type_name -> pb.Posting.ValType - 0, // 31: pb.DirectedEdge.op:type_name -> pb.DirectedEdge.Op - 95, // 32: pb.DirectedEdge.facets:type_name -> api.Facet - 28, // 33: pb.Mutations.edges:type_name -> pb.DirectedEdge - 50, // 34: pb.Mutations.schema:type_name -> pb.SchemaUpdate - 53, // 35: pb.Mutations.types:type_name -> pb.TypeUpdate - 1, // 36: pb.Mutations.drop_op:type_name -> pb.Mutations.DropOp - 30, // 37: pb.Mutations.metadata:type_name -> pb.Metadata - 91, // 38: pb.Metadata.pred_hints:type_name -> pb.Metadata.PredHintsEntry - 19, // 39: pb.Snapshot.context:type_name -> pb.RaftContext - 24, // 40: pb.ZeroSnapshot.state:type_name -> pb.MembershipState - 29, // 41: pb.Proposal.mutations:type_name -> pb.Mutations - 96, // 42: pb.Proposal.kv:type_name -> badgerpb4.KV - 24, // 43: pb.Proposal.state:type_name -> pb.MembershipState - 57, // 44: pb.Proposal.delta:type_name -> pb.OracleDelta - 31, // 45: pb.Proposal.snapshot:type_name -> pb.Snapshot - 33, // 46: pb.Proposal.restore:type_name -> pb.RestoreRequest - 35, // 47: pb.Proposal.cdc_state:type_name -> pb.CDCState - 82, // 48: pb.Proposal.delete_ns:type_name -> pb.DeleteNsRequest - 3, // 49: pb.Posting.val_type:type_name -> pb.Posting.ValType - 4, // 50: pb.Posting.posting_type:type_name -> pb.Posting.PostingType - 95, // 51: pb.Posting.facets:type_name -> api.Facet - 38, // 52: pb.UidPack.blocks:type_name -> pb.UidBlock - 39, // 53: pb.PostingList.pack:type_name -> pb.UidPack - 37, // 54: pb.PostingList.postings:type_name -> pb.Posting - 41, // 55: pb.FacetParams.param:type_name -> pb.FacetParam - 95, // 56: pb.Facets.facets:type_name -> api.Facet - 43, // 57: pb.FacetsList.facets_list:type_name -> pb.Facets - 46, // 58: pb.FilterTree.children:type_name -> pb.FilterTree - 45, // 59: pb.FilterTree.func:type_name -> pb.Function - 51, // 60: pb.SchemaNode.index_specs:type_name -> pb.VectorIndexSpec - 48, // 61: pb.SchemaResult.schema:type_name -> pb.SchemaNode - 3, // 62: pb.SchemaUpdate.value_type:type_name -> pb.Posting.ValType - 5, // 63: pb.SchemaUpdate.directive:type_name -> pb.SchemaUpdate.Directive - 51, // 64: pb.SchemaUpdate.index_specs:type_name -> pb.VectorIndexSpec - 52, // 65: pb.VectorIndexSpec.options:type_name -> pb.OptionPair - 50, // 66: pb.TypeUpdate.fields:type_name -> pb.SchemaUpdate - 56, // 67: pb.OracleDelta.txns:type_name -> pb.TxnStatus - 92, // 68: pb.OracleDelta.group_checksums:type_name -> pb.OracleDelta.GroupChecksumsEntry - 19, // 69: pb.RaftBatch.context:type_name -> pb.RaftContext - 97, // 70: pb.RaftBatch.payload:type_name -> api.Payload - 27, // 71: pb.TabletResponse.tablets:type_name -> pb.Tablet - 27, // 72: pb.TabletRequest.tablets:type_name -> pb.Tablet - 98, // 73: pb.SubscriptionRequest.matches:type_name -> badgerpb4.Match - 99, // 74: pb.SubscriptionResponse.kvs:type_name -> badgerpb4.KVList - 6, // 75: pb.Num.type:type_name -> pb.Num.leaseType - 74, // 76: pb.BackupResponse.drop_operations:type_name -> pb.DropOperation - 7, // 77: pb.DropOperation.drop_op:type_name -> pb.DropOperation.DropOp - 8, // 78: pb.BackupKey.type:type_name -> pb.BackupKey.KeyType - 37, // 79: pb.BackupPostingList.postings:type_name -> pb.Posting - 50, // 80: pb.UpdateGraphQLSchemaRequest.dgraph_preds:type_name -> pb.SchemaUpdate - 53, // 81: pb.UpdateGraphQLSchemaRequest.dgraph_types:type_name -> pb.TypeUpdate - 93, // 82: pb.BulkMeta.schema_map:type_name -> pb.BulkMeta.SchemaMapEntry - 53, // 83: pb.BulkMeta.types:type_name -> pb.TypeUpdate - 20, // 84: pb.Group.MembersEntry.value:type_name -> pb.Member - 27, // 85: pb.Group.TabletsEntry.value:type_name -> pb.Tablet - 21, // 86: pb.MembershipState.GroupsEntry.value:type_name -> pb.Group - 20, // 87: pb.MembershipState.ZerosEntry.value:type_name -> pb.Member - 2, // 88: pb.Metadata.PredHintsEntry.value:type_name -> pb.Metadata.HintType - 50, // 89: pb.BulkMeta.SchemaMapEntry.value:type_name -> pb.SchemaUpdate - 97, // 90: pb.Raft.Heartbeat:input_type -> api.Payload - 60, // 91: pb.Raft.RaftMessage:input_type -> pb.RaftBatch - 19, // 92: pb.Raft.JoinCluster:input_type -> pb.RaftContext - 19, // 93: pb.Raft.IsPeer:input_type -> pb.RaftContext - 20, // 94: pb.Zero.Connect:input_type -> pb.Member - 21, // 95: pb.Zero.UpdateMembership:input_type -> pb.Group - 97, // 96: pb.Zero.StreamMembership:input_type -> api.Payload - 97, // 97: pb.Zero.Oracle:input_type -> api.Payload - 27, // 98: pb.Zero.ShouldServe:input_type -> pb.Tablet - 62, // 99: pb.Zero.Inform:input_type -> pb.TabletRequest - 65, // 100: pb.Zero.AssignIds:input_type -> pb.Num - 65, // 101: pb.Zero.Timestamps:input_type -> pb.Num - 94, // 102: pb.Zero.CommitOrAbort:input_type -> api.TxnContext - 58, // 103: pb.Zero.TryAbort:input_type -> pb.TxnTimestamps - 82, // 104: pb.Zero.DeleteNamespace:input_type -> pb.DeleteNsRequest - 67, // 105: pb.Zero.RemoveNode:input_type -> pb.RemoveNodeRequest - 68, // 106: pb.Zero.MoveTablet:input_type -> pb.MoveTabletRequest - 69, // 107: pb.Zero.ApplyLicense:input_type -> pb.ApplyLicenseRequest - 29, // 108: pb.Worker.Mutate:input_type -> pb.Mutations - 12, // 109: pb.Worker.ServeTask:input_type -> pb.Query - 31, // 110: pb.Worker.StreamSnapshot:input_type -> pb.Snapshot - 17, // 111: pb.Worker.Sort:input_type -> pb.SortMessage - 47, // 112: pb.Worker.Schema:input_type -> pb.SchemaRequest - 72, // 113: pb.Worker.Backup:input_type -> pb.BackupRequest - 33, // 114: pb.Worker.Restore:input_type -> pb.RestoreRequest - 75, // 115: pb.Worker.Export:input_type -> pb.ExportRequest - 36, // 116: pb.Worker.ReceivePredicate:input_type -> pb.KVS - 55, // 117: pb.Worker.MovePredicate:input_type -> pb.MovePredicatePayload - 63, // 118: pb.Worker.Subscribe:input_type -> pb.SubscriptionRequest - 79, // 119: pb.Worker.UpdateGraphQLSchema:input_type -> pb.UpdateGraphQLSchemaRequest - 82, // 120: pb.Worker.DeleteNamespace:input_type -> pb.DeleteNsRequest - 83, // 121: pb.Worker.TaskStatus:input_type -> pb.TaskStatusRequest - 26, // 122: pb.Raft.Heartbeat:output_type -> pb.HealthInfo - 97, // 123: pb.Raft.RaftMessage:output_type -> api.Payload - 97, // 124: pb.Raft.JoinCluster:output_type -> api.Payload - 59, // 125: pb.Raft.IsPeer:output_type -> pb.PeerResponse - 25, // 126: pb.Zero.Connect:output_type -> pb.ConnectionState - 97, // 127: pb.Zero.UpdateMembership:output_type -> api.Payload - 24, // 128: pb.Zero.StreamMembership:output_type -> pb.MembershipState - 57, // 129: pb.Zero.Oracle:output_type -> pb.OracleDelta - 27, // 130: pb.Zero.ShouldServe:output_type -> pb.Tablet - 61, // 131: pb.Zero.Inform:output_type -> pb.TabletResponse - 66, // 132: pb.Zero.AssignIds:output_type -> pb.AssignedIds - 66, // 133: pb.Zero.Timestamps:output_type -> pb.AssignedIds - 94, // 134: pb.Zero.CommitOrAbort:output_type -> api.TxnContext - 57, // 135: pb.Zero.TryAbort:output_type -> pb.OracleDelta - 71, // 136: pb.Zero.DeleteNamespace:output_type -> pb.Status - 71, // 137: pb.Zero.RemoveNode:output_type -> pb.Status - 71, // 138: pb.Zero.MoveTablet:output_type -> pb.Status - 71, // 139: pb.Zero.ApplyLicense:output_type -> pb.Status - 94, // 140: pb.Worker.Mutate:output_type -> api.TxnContext - 15, // 141: pb.Worker.ServeTask:output_type -> pb.Result - 36, // 142: pb.Worker.StreamSnapshot:output_type -> pb.KVS - 18, // 143: pb.Worker.Sort:output_type -> pb.SortResult - 49, // 144: pb.Worker.Schema:output_type -> pb.SchemaResult - 73, // 145: pb.Worker.Backup:output_type -> pb.BackupResponse - 71, // 146: pb.Worker.Restore:output_type -> pb.Status - 76, // 147: pb.Worker.Export:output_type -> pb.ExportResponse - 97, // 148: pb.Worker.ReceivePredicate:output_type -> api.Payload - 97, // 149: pb.Worker.MovePredicate:output_type -> api.Payload - 99, // 150: pb.Worker.Subscribe:output_type -> badgerpb4.KVList - 80, // 151: pb.Worker.UpdateGraphQLSchema:output_type -> pb.UpdateGraphQLSchemaResponse - 71, // 152: pb.Worker.DeleteNamespace:output_type -> pb.Status - 84, // 153: pb.Worker.TaskStatus:output_type -> pb.TaskStatusResponse - 122, // [122:154] is the sub-list for method output_type - 90, // [90:122] is the sub-list for method input_type - 90, // [90:90] is the sub-list for extension type_name - 90, // [90:90] is the sub-list for extension extendee - 0, // [0:90] is the sub-list for field type_name + 26, // 18: pb.ZeroProposal.tablet:type_name -> pb.Tablet + 92, // 19: pb.ZeroProposal.txn:type_name -> api.TxnContext + 31, // 20: pb.ZeroProposal.snapshot:type_name -> pb.ZeroSnapshot + 80, // 21: pb.ZeroProposal.delete_ns:type_name -> pb.DeleteNsRequest + 26, // 22: pb.ZeroProposal.tablets:type_name -> pb.Tablet + 87, // 23: pb.MembershipState.groups:type_name -> pb.MembershipState.GroupsEntry + 88, // 24: pb.MembershipState.zeros:type_name -> pb.MembershipState.ZerosEntry + 20, // 25: pb.MembershipState.removed:type_name -> pb.Member + 20, // 26: pb.ConnectionState.member:type_name -> pb.Member + 23, // 27: pb.ConnectionState.state:type_name -> pb.MembershipState + 3, // 28: pb.DirectedEdge.value_type:type_name -> pb.Posting.ValType + 0, // 29: pb.DirectedEdge.op:type_name -> pb.DirectedEdge.Op + 93, // 30: pb.DirectedEdge.facets:type_name -> api.Facet + 27, // 31: pb.Mutations.edges:type_name -> pb.DirectedEdge + 49, // 32: pb.Mutations.schema:type_name -> pb.SchemaUpdate + 52, // 33: pb.Mutations.types:type_name -> pb.TypeUpdate + 1, // 34: pb.Mutations.drop_op:type_name -> pb.Mutations.DropOp + 29, // 35: pb.Mutations.metadata:type_name -> pb.Metadata + 89, // 36: pb.Metadata.pred_hints:type_name -> pb.Metadata.PredHintsEntry + 19, // 37: pb.Snapshot.context:type_name -> pb.RaftContext + 23, // 38: pb.ZeroSnapshot.state:type_name -> pb.MembershipState + 28, // 39: pb.Proposal.mutations:type_name -> pb.Mutations + 94, // 40: pb.Proposal.kv:type_name -> badgerpb4.KV + 23, // 41: pb.Proposal.state:type_name -> pb.MembershipState + 56, // 42: pb.Proposal.delta:type_name -> pb.OracleDelta + 30, // 43: pb.Proposal.snapshot:type_name -> pb.Snapshot + 32, // 44: pb.Proposal.restore:type_name -> pb.RestoreRequest + 34, // 45: pb.Proposal.cdc_state:type_name -> pb.CDCState + 80, // 46: pb.Proposal.delete_ns:type_name -> pb.DeleteNsRequest + 3, // 47: pb.Posting.val_type:type_name -> pb.Posting.ValType + 4, // 48: pb.Posting.posting_type:type_name -> pb.Posting.PostingType + 93, // 49: pb.Posting.facets:type_name -> api.Facet + 37, // 50: pb.UidPack.blocks:type_name -> pb.UidBlock + 38, // 51: pb.PostingList.pack:type_name -> pb.UidPack + 36, // 52: pb.PostingList.postings:type_name -> pb.Posting + 40, // 53: pb.FacetParams.param:type_name -> pb.FacetParam + 93, // 54: pb.Facets.facets:type_name -> api.Facet + 42, // 55: pb.FacetsList.facets_list:type_name -> pb.Facets + 45, // 56: pb.FilterTree.children:type_name -> pb.FilterTree + 44, // 57: pb.FilterTree.func:type_name -> pb.Function + 50, // 58: pb.SchemaNode.index_specs:type_name -> pb.VectorIndexSpec + 47, // 59: pb.SchemaResult.schema:type_name -> pb.SchemaNode + 3, // 60: pb.SchemaUpdate.value_type:type_name -> pb.Posting.ValType + 5, // 61: pb.SchemaUpdate.directive:type_name -> pb.SchemaUpdate.Directive + 50, // 62: pb.SchemaUpdate.index_specs:type_name -> pb.VectorIndexSpec + 51, // 63: pb.VectorIndexSpec.options:type_name -> pb.OptionPair + 49, // 64: pb.TypeUpdate.fields:type_name -> pb.SchemaUpdate + 55, // 65: pb.OracleDelta.txns:type_name -> pb.TxnStatus + 90, // 66: pb.OracleDelta.group_checksums:type_name -> pb.OracleDelta.GroupChecksumsEntry + 19, // 67: pb.RaftBatch.context:type_name -> pb.RaftContext + 95, // 68: pb.RaftBatch.payload:type_name -> api.Payload + 26, // 69: pb.TabletResponse.tablets:type_name -> pb.Tablet + 26, // 70: pb.TabletRequest.tablets:type_name -> pb.Tablet + 96, // 71: pb.SubscriptionRequest.matches:type_name -> badgerpb4.Match + 97, // 72: pb.SubscriptionResponse.kvs:type_name -> badgerpb4.KVList + 6, // 73: pb.Num.type:type_name -> pb.Num.leaseType + 72, // 74: pb.BackupResponse.drop_operations:type_name -> pb.DropOperation + 7, // 75: pb.DropOperation.drop_op:type_name -> pb.DropOperation.DropOp + 8, // 76: pb.BackupKey.type:type_name -> pb.BackupKey.KeyType + 36, // 77: pb.BackupPostingList.postings:type_name -> pb.Posting + 49, // 78: pb.UpdateGraphQLSchemaRequest.dgraph_preds:type_name -> pb.SchemaUpdate + 52, // 79: pb.UpdateGraphQLSchemaRequest.dgraph_types:type_name -> pb.TypeUpdate + 91, // 80: pb.BulkMeta.schema_map:type_name -> pb.BulkMeta.SchemaMapEntry + 52, // 81: pb.BulkMeta.types:type_name -> pb.TypeUpdate + 20, // 82: pb.Group.MembersEntry.value:type_name -> pb.Member + 26, // 83: pb.Group.TabletsEntry.value:type_name -> pb.Tablet + 21, // 84: pb.MembershipState.GroupsEntry.value:type_name -> pb.Group + 20, // 85: pb.MembershipState.ZerosEntry.value:type_name -> pb.Member + 2, // 86: pb.Metadata.PredHintsEntry.value:type_name -> pb.Metadata.HintType + 49, // 87: pb.BulkMeta.SchemaMapEntry.value:type_name -> pb.SchemaUpdate + 95, // 88: pb.Raft.Heartbeat:input_type -> api.Payload + 59, // 89: pb.Raft.RaftMessage:input_type -> pb.RaftBatch + 19, // 90: pb.Raft.JoinCluster:input_type -> pb.RaftContext + 19, // 91: pb.Raft.IsPeer:input_type -> pb.RaftContext + 20, // 92: pb.Zero.Connect:input_type -> pb.Member + 21, // 93: pb.Zero.UpdateMembership:input_type -> pb.Group + 95, // 94: pb.Zero.StreamMembership:input_type -> api.Payload + 95, // 95: pb.Zero.Oracle:input_type -> api.Payload + 26, // 96: pb.Zero.ShouldServe:input_type -> pb.Tablet + 61, // 97: pb.Zero.Inform:input_type -> pb.TabletRequest + 64, // 98: pb.Zero.AssignIds:input_type -> pb.Num + 64, // 99: pb.Zero.Timestamps:input_type -> pb.Num + 92, // 100: pb.Zero.CommitOrAbort:input_type -> api.TxnContext + 57, // 101: pb.Zero.TryAbort:input_type -> pb.TxnTimestamps + 80, // 102: pb.Zero.DeleteNamespace:input_type -> pb.DeleteNsRequest + 66, // 103: pb.Zero.RemoveNode:input_type -> pb.RemoveNodeRequest + 67, // 104: pb.Zero.MoveTablet:input_type -> pb.MoveTabletRequest + 28, // 105: pb.Worker.Mutate:input_type -> pb.Mutations + 12, // 106: pb.Worker.ServeTask:input_type -> pb.Query + 30, // 107: pb.Worker.StreamSnapshot:input_type -> pb.Snapshot + 17, // 108: pb.Worker.Sort:input_type -> pb.SortMessage + 46, // 109: pb.Worker.Schema:input_type -> pb.SchemaRequest + 70, // 110: pb.Worker.Backup:input_type -> pb.BackupRequest + 32, // 111: pb.Worker.Restore:input_type -> pb.RestoreRequest + 73, // 112: pb.Worker.Export:input_type -> pb.ExportRequest + 35, // 113: pb.Worker.ReceivePredicate:input_type -> pb.KVS + 54, // 114: pb.Worker.MovePredicate:input_type -> pb.MovePredicatePayload + 62, // 115: pb.Worker.Subscribe:input_type -> pb.SubscriptionRequest + 77, // 116: pb.Worker.UpdateGraphQLSchema:input_type -> pb.UpdateGraphQLSchemaRequest + 80, // 117: pb.Worker.DeleteNamespace:input_type -> pb.DeleteNsRequest + 81, // 118: pb.Worker.TaskStatus:input_type -> pb.TaskStatusRequest + 25, // 119: pb.Raft.Heartbeat:output_type -> pb.HealthInfo + 95, // 120: pb.Raft.RaftMessage:output_type -> api.Payload + 95, // 121: pb.Raft.JoinCluster:output_type -> api.Payload + 58, // 122: pb.Raft.IsPeer:output_type -> pb.PeerResponse + 24, // 123: pb.Zero.Connect:output_type -> pb.ConnectionState + 95, // 124: pb.Zero.UpdateMembership:output_type -> api.Payload + 23, // 125: pb.Zero.StreamMembership:output_type -> pb.MembershipState + 56, // 126: pb.Zero.Oracle:output_type -> pb.OracleDelta + 26, // 127: pb.Zero.ShouldServe:output_type -> pb.Tablet + 60, // 128: pb.Zero.Inform:output_type -> pb.TabletResponse + 65, // 129: pb.Zero.AssignIds:output_type -> pb.AssignedIds + 65, // 130: pb.Zero.Timestamps:output_type -> pb.AssignedIds + 92, // 131: pb.Zero.CommitOrAbort:output_type -> api.TxnContext + 56, // 132: pb.Zero.TryAbort:output_type -> pb.OracleDelta + 69, // 133: pb.Zero.DeleteNamespace:output_type -> pb.Status + 69, // 134: pb.Zero.RemoveNode:output_type -> pb.Status + 69, // 135: pb.Zero.MoveTablet:output_type -> pb.Status + 92, // 136: pb.Worker.Mutate:output_type -> api.TxnContext + 15, // 137: pb.Worker.ServeTask:output_type -> pb.Result + 35, // 138: pb.Worker.StreamSnapshot:output_type -> pb.KVS + 18, // 139: pb.Worker.Sort:output_type -> pb.SortResult + 48, // 140: pb.Worker.Schema:output_type -> pb.SchemaResult + 71, // 141: pb.Worker.Backup:output_type -> pb.BackupResponse + 69, // 142: pb.Worker.Restore:output_type -> pb.Status + 74, // 143: pb.Worker.Export:output_type -> pb.ExportResponse + 95, // 144: pb.Worker.ReceivePredicate:output_type -> api.Payload + 95, // 145: pb.Worker.MovePredicate:output_type -> api.Payload + 97, // 146: pb.Worker.Subscribe:output_type -> badgerpb4.KVList + 78, // 147: pb.Worker.UpdateGraphQLSchema:output_type -> pb.UpdateGraphQLSchemaResponse + 69, // 148: pb.Worker.DeleteNamespace:output_type -> pb.Status + 82, // 149: pb.Worker.TaskStatus:output_type -> pb.TaskStatusResponse + 119, // [119:150] is the sub-list for method output_type + 88, // [88:119] is the sub-list for method input_type + 88, // [88:88] is the sub-list for extension type_name + 88, // [88:88] is the sub-list for extension extendee + 0, // [0:88] is the sub-list for field type_name } func init() { file_pb_proto_init() } @@ -7564,18 +7406,6 @@ func file_pb_proto_init() { } } file_pb_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*License); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_pb_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ZeroProposal); i { case 0: return &v.state @@ -7587,7 +7417,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MembershipState); i { case 0: return &v.state @@ -7599,7 +7429,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConnectionState); i { case 0: return &v.state @@ -7611,7 +7441,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HealthInfo); i { case 0: return &v.state @@ -7623,7 +7453,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Tablet); i { case 0: return &v.state @@ -7635,7 +7465,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DirectedEdge); i { case 0: return &v.state @@ -7647,7 +7477,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Mutations); i { case 0: return &v.state @@ -7659,7 +7489,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Metadata); i { case 0: return &v.state @@ -7671,7 +7501,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Snapshot); i { case 0: return &v.state @@ -7683,7 +7513,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ZeroSnapshot); i { case 0: return &v.state @@ -7695,7 +7525,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RestoreRequest); i { case 0: return &v.state @@ -7707,7 +7537,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Proposal); i { case 0: return &v.state @@ -7719,7 +7549,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDCState); i { case 0: return &v.state @@ -7731,7 +7561,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*KVS); i { case 0: return &v.state @@ -7743,7 +7573,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Posting); i { case 0: return &v.state @@ -7755,7 +7585,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UidBlock); i { case 0: return &v.state @@ -7767,7 +7597,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UidPack); i { case 0: return &v.state @@ -7779,7 +7609,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PostingList); i { case 0: return &v.state @@ -7791,7 +7621,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FacetParam); i { case 0: return &v.state @@ -7803,7 +7633,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FacetParams); i { case 0: return &v.state @@ -7815,7 +7645,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Facets); i { case 0: return &v.state @@ -7827,7 +7657,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FacetsList); i { case 0: return &v.state @@ -7839,7 +7669,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Function); i { case 0: return &v.state @@ -7851,7 +7681,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FilterTree); i { case 0: return &v.state @@ -7863,7 +7693,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SchemaRequest); i { case 0: return &v.state @@ -7875,7 +7705,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SchemaNode); i { case 0: return &v.state @@ -7887,7 +7717,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SchemaResult); i { case 0: return &v.state @@ -7899,7 +7729,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SchemaUpdate); i { case 0: return &v.state @@ -7911,7 +7741,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VectorIndexSpec); i { case 0: return &v.state @@ -7923,7 +7753,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OptionPair); i { case 0: return &v.state @@ -7935,7 +7765,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TypeUpdate); i { case 0: return &v.state @@ -7947,7 +7777,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MapHeader); i { case 0: return &v.state @@ -7959,7 +7789,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MovePredicatePayload); i { case 0: return &v.state @@ -7971,7 +7801,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TxnStatus); i { case 0: return &v.state @@ -7983,7 +7813,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OracleDelta); i { case 0: return &v.state @@ -7995,7 +7825,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TxnTimestamps); i { case 0: return &v.state @@ -8007,7 +7837,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PeerResponse); i { case 0: return &v.state @@ -8019,7 +7849,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RaftBatch); i { case 0: return &v.state @@ -8031,7 +7861,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TabletResponse); i { case 0: return &v.state @@ -8043,7 +7873,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TabletRequest); i { case 0: return &v.state @@ -8055,7 +7885,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SubscriptionRequest); i { case 0: return &v.state @@ -8067,7 +7897,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SubscriptionResponse); i { case 0: return &v.state @@ -8079,7 +7909,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Num); i { case 0: return &v.state @@ -8091,7 +7921,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AssignedIds); i { case 0: return &v.state @@ -8103,7 +7933,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveNodeRequest); i { case 0: return &v.state @@ -8115,7 +7945,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MoveTabletRequest); i { case 0: return &v.state @@ -8127,19 +7957,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplyLicenseRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_pb_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SnapshotMeta); i { case 0: return &v.state @@ -8151,7 +7969,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Status); i { case 0: return &v.state @@ -8163,7 +7981,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BackupRequest); i { case 0: return &v.state @@ -8175,7 +7993,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BackupResponse); i { case 0: return &v.state @@ -8187,7 +8005,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DropOperation); i { case 0: return &v.state @@ -8199,7 +8017,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExportRequest); i { case 0: return &v.state @@ -8211,7 +8029,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExportResponse); i { case 0: return &v.state @@ -8223,7 +8041,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BackupKey); i { case 0: return &v.state @@ -8235,7 +8053,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BackupPostingList); i { case 0: return &v.state @@ -8247,7 +8065,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateGraphQLSchemaRequest); i { case 0: return &v.state @@ -8259,7 +8077,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateGraphQLSchemaResponse); i { case 0: return &v.state @@ -8271,7 +8089,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BulkMeta); i { case 0: return &v.state @@ -8283,7 +8101,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteNsRequest); i { case 0: return &v.state @@ -8295,7 +8113,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TaskStatusRequest); i { case 0: return &v.state @@ -8307,7 +8125,7 @@ func file_pb_proto_init() { return nil } } - file_pb_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + file_pb_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TaskStatusResponse); i { case 0: return &v.state @@ -8326,7 +8144,7 @@ func file_pb_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pb_proto_rawDesc, NumEnums: 9, - NumMessages: 85, + NumMessages: 83, NumExtensions: 0, NumServices: 3, }, diff --git a/protos/pb/pb_grpc.pb.go b/protos/pb/pb_grpc.pb.go index fda72e69333..7308884e866 100644 --- a/protos/pb/pb_grpc.pb.go +++ b/protos/pb/pb_grpc.pb.go @@ -306,7 +306,6 @@ const ( Zero_DeleteNamespace_FullMethodName = "/pb.Zero/DeleteNamespace" Zero_RemoveNode_FullMethodName = "/pb.Zero/RemoveNode" Zero_MoveTablet_FullMethodName = "/pb.Zero/MoveTablet" - Zero_ApplyLicense_FullMethodName = "/pb.Zero/ApplyLicense" ) // ZeroClient is the client API for Zero service. @@ -327,7 +326,6 @@ type ZeroClient interface { DeleteNamespace(ctx context.Context, in *DeleteNsRequest, opts ...grpc.CallOption) (*Status, error) RemoveNode(ctx context.Context, in *RemoveNodeRequest, opts ...grpc.CallOption) (*Status, error) MoveTablet(ctx context.Context, in *MoveTabletRequest, opts ...grpc.CallOption) (*Status, error) - ApplyLicense(ctx context.Context, in *ApplyLicenseRequest, opts ...grpc.CallOption) (*Status, error) } type zeroClient struct { @@ -501,15 +499,6 @@ func (c *zeroClient) MoveTablet(ctx context.Context, in *MoveTabletRequest, opts return out, nil } -func (c *zeroClient) ApplyLicense(ctx context.Context, in *ApplyLicenseRequest, opts ...grpc.CallOption) (*Status, error) { - out := new(Status) - err := c.cc.Invoke(ctx, Zero_ApplyLicense_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - // ZeroServer is the server API for Zero service. // All implementations must embed UnimplementedZeroServer // for forward compatibility @@ -528,7 +517,6 @@ type ZeroServer interface { DeleteNamespace(context.Context, *DeleteNsRequest) (*Status, error) RemoveNode(context.Context, *RemoveNodeRequest) (*Status, error) MoveTablet(context.Context, *MoveTabletRequest) (*Status, error) - ApplyLicense(context.Context, *ApplyLicenseRequest) (*Status, error) mustEmbedUnimplementedZeroServer() } @@ -575,9 +563,6 @@ func (UnimplementedZeroServer) RemoveNode(context.Context, *RemoveNodeRequest) ( func (UnimplementedZeroServer) MoveTablet(context.Context, *MoveTabletRequest) (*Status, error) { return nil, status.Errorf(codes.Unimplemented, "method MoveTablet not implemented") } -func (UnimplementedZeroServer) ApplyLicense(context.Context, *ApplyLicenseRequest) (*Status, error) { - return nil, status.Errorf(codes.Unimplemented, "method ApplyLicense not implemented") -} func (UnimplementedZeroServer) mustEmbedUnimplementedZeroServer() {} // UnsafeZeroServer may be embedded to opt out of forward compatibility for this service. @@ -831,24 +816,6 @@ func _Zero_MoveTablet_Handler(srv interface{}, ctx context.Context, dec func(int return interceptor(ctx, in, info, handler) } -func _Zero_ApplyLicense_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplyLicenseRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ZeroServer).ApplyLicense(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Zero_ApplyLicense_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ZeroServer).ApplyLicense(ctx, req.(*ApplyLicenseRequest)) - } - return interceptor(ctx, in, info, handler) -} - // Zero_ServiceDesc is the grpc.ServiceDesc for Zero service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -900,10 +867,6 @@ var Zero_ServiceDesc = grpc.ServiceDesc{ MethodName: "MoveTablet", Handler: _Zero_MoveTablet_Handler, }, - { - MethodName: "ApplyLicense", - Handler: _Zero_ApplyLicense_Handler, - }, }, Streams: []grpc.StreamDesc{ { diff --git a/query/query.go b/query/query.go index 4244c787806..7a96c0fd47f 100644 --- a/query/query.go +++ b/query/query.go @@ -1969,7 +1969,7 @@ func expandSubgraph(ctx context.Context, sg *SubGraph) ([]*SubGraph, error) { preds = getPredicatesFromTypes(namespace, typeNames) // We check if enterprise is enabled and only // restrict preds to allowed preds if ACL is turned on. - if worker.EnterpriseEnabled() && sg.Params.AllowedPreds != nil { + if sg.Params.AllowedPreds != nil { // Take intersection of both the predicate lists intersectPreds := make([]string, 0) hashMap := make(map[string]bool) diff --git a/systest/audit/audit_test.go b/systest/audit/audit_test.go index a83e1acaa2d..6213cc99d9a 100644 --- a/systest/audit/audit_test.go +++ b/systest/audit/audit_test.go @@ -46,6 +46,7 @@ func TestZeroAudit(t *testing.T) { testaudit.VerifyLogs(t, fmt.Sprintf("audit_dir/za/zero_audit_0_%s.log", nId), msgs) } + func TestAlphaAudit(t *testing.T) { state, err := testutil.GetState() require.NoError(t, err) diff --git a/systest/license/docker-compose.yml b/systest/license/docker-compose.yml deleted file mode 100644 index 6a6dfa6e832..00000000000 --- a/systest/license/docker-compose.yml +++ /dev/null @@ -1,38 +0,0 @@ -# Auto-generated with: [./compose -l -a 1 -z 1 --port_offset=0 --expose_ports=false --mem= --names=false -O ../systest/license/docker-compose.yml] -# -version: "3.5" -services: - alpha1: - image: dgraph/dgraph:local - working_dir: /data/alpha1 - labels: - cluster: test - ports: - - "8080" - - "9080" - volumes: - - type: bind - source: $GOPATH/bin - target: /gobin - read_only: true - command: - /gobin/dgraph ${COVERAGE_OUTPUT} alpha --telemetry "reports=false;" --my=alpha1:7080 - --zero=zero1:5080 --logtostderr -v=2 --security - "whitelist=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16;" - zero1: - image: dgraph/dgraph:local - working_dir: /data/zero1 - labels: - cluster: test - ports: - - "5080" - - "6080" - volumes: - - type: bind - source: $GOPATH/bin - target: /gobin - read_only: true - command: - /gobin/dgraph ${COVERAGE_OUTPUT} zero --telemetry "reports=false;" --raft="idx=1;" - --my=zero1:5080 --logtostderr -v=2 --bindall -volumes: {} diff --git a/systest/license/integration_test.go b/systest/license/integration_test.go deleted file mode 100644 index f1df665ef77..00000000000 --- a/systest/license/integration_test.go +++ /dev/null @@ -1,40 +0,0 @@ -//go:build integration - -/* - * SPDX-FileCopyrightText: © Hypermode Inc. - * SPDX-License-Identifier: Apache-2.0 - */ - -package main - -import ( - "testing" - - "github.com/stretchr/testify/suite" - - "github.com/hypermodeinc/dgraph/v24/dgraphapi" - "github.com/hypermodeinc/dgraph/v24/dgraphtest" -) - -type LicenseTestSuite struct { - suite.Suite - dc dgraphapi.Cluster -} - -func (lsuite *LicenseTestSuite) SetupTest() { - lsuite.dc = dgraphtest.NewComposeCluster() -} - -func (lsuite *LicenseTestSuite) TearDownTest() { -} - -func (lsuite *LicenseTestSuite) Upgrade() { - // Not implemented for integration tests -} - -func TestLicenseTestSuite(t *testing.T) { - suite.Run(t, new(LicenseTestSuite)) - if t.Failed() { - t.Fatal("TestLicenseTestSuite tests failed") - } -} diff --git a/systest/license/license_test.go b/systest/license/license_test.go deleted file mode 100644 index 3f801640688..00000000000 --- a/systest/license/license_test.go +++ /dev/null @@ -1,149 +0,0 @@ -//go:build integration || upgrade - -/* - * SPDX-FileCopyrightText: © Hypermode Inc. - * SPDX-License-Identifier: Apache-2.0 - */ - -package main - -import ( - "testing" - - "github.com/stretchr/testify/require" - - "github.com/hypermodeinc/dgraph/v24/dgraphapi" -) - -var expiredKey = []byte(`-----BEGIN PGP MESSAGE----- - -owEBwgI9/ZANAwAKAXomeeH3SyppAax7YgxsaWNlbnNlLmpzb25etF5+ewogICJ1 -c2VyIjogIkRncmFwaCBUZXN0IEtleSIsCiAgIm1heF9ub2RlcyI6IDE4NDQ2NzQ0 -MDczNzA5NTUxNjE1LAogICJleHBpcnkiOiAiMTk3MC0wMS0wMVQwMDowMDowMFoi -Cn0KiQIzBAABCgAdFiEED3lYS97wtaMT1MW+eiZ54fdLKmkFAl60Xn4ACgkQeiZ5 -4fdLKmlVYQ//afX0H7Seb0ukxCMAcM8uqlBEGCEFv3K34avk1g8XRa6y4q/Ys0uU -DSaaDWdQ8IS5Q9SNlZBbJuqO6Pf1R01dEPTYQizWkDjYIBsY9xJnMZKEaA+F3bkn -8TXqI588+AvbqxHosz8cvh/nG+Ajk451rI9c2bqKB/FvH/zI6XyfUjqN+PvrqH0E -POA7nqSrWDemW4cMgNR4PhXehB/n2i3G6cPpwgCUd+N00N1f1mir/LmL6G5T4PrG -BmVz9fOdEr+U85PbMF9vOke9LkLQYdnF1hEV+7++t2/uoaLDYbxYhUnXpJZxwCBX -DQTievpyQF47HzuifvqUyxDSEsYiSGhhap1e/tvf1VaZoFUuTYQQpiV7+9K3UrL0 -SnJ5TRWS7cEKBLyZszrakGpqVakvEUlWO4wG0Fp4kUa4YXw8t58oqHRn9aAtoqJd -UOLnq2semUttaySR4DHhjneO3/RoVm79/aaqMi/QNJzc9Tt9nY0AgcYlA3bVXmAZ -nM9Rgi6SaO5DxnRdhFzZyYQMb4onFDI0eYMOhPm+NmKWplkFXB+mKPKj5o/pcEb4 -SWHt8fUAWDLsmcooIixDmSay14aBmF08hQ1vtJkY7/jo3hlK36GrLnNdN4IODqk/ -I8mUd/jcj3NZtGWFoxKq4laK/ruoeoHnWMznJyMm75nzcU5QZU9yEEI= -=2lFm ------END PGP MESSAGE----- -`) - -var invalidKey = []byte(`-----BEGIN PGP MESSAGE----- - -x7YgxsaWNlbnNlLmpzb25etF5owEBwgI9omeeH3SyppAa/ZANAwAKAX+ewogICJ1 -c2VyIjogIkRncmFwaCBUZXN0IEtleSIsCiAgIm1heF9ub2RlcyI6IDE4NDQ2NzQ0 -MDczNzA5NTUxNjE1LAogICJleHBpcnkiOiAiMTk3MC0wMS0wMVQwMDowMDowMFoi -Cn0KiQIzBAABCgAdFiEED3lYS97wtaMT1MW+eiZ54fdLKmkFAl60Xn4ACgkQeiZ5 -4fdLKmlVYQ//afX0H7Seb0ukxCMAcM8uqlBEGCEFv3K34avk1g8XRa6y4q/Ys0uU -DSaaDWdQ8QizWkDjYIBsY9xJnMZKEaAIS5Q9SNlZBbJuqO6Pf1R01dEPTY+F3bkn -8T1rI9c2bqKB/FvH/zI6XXqI588+AvbqxHosz8cvh/nG+Ajk45yfUjqN+PvrqH0E -POA7nqSrWDemW4cMgNR4PhXehB/n2i3G6cPpwgCUd+N00N1f1mir/LmL6G5T4PrG -BmVz9fOdEr+U85PbMF9vOke9LkLQYdnF1hEV+7++t2/uoaLDYbxYhUnXpJZxwCBX -DQTievpyQxDSEsYiSGhhap1e/tvf1VaZoFUuTYQQpiV7F47HzuifvqUy+9K3UrL0 -SnJ5TRWS7cEKBLyZszrakGpqVakvEUlWO4wG0Fp4kUa4YXw8t58oqHRn9aAtoqJd -UOLnq2semUttaySR4DHhjneO3/RoVm79/aaqMi/QNJzc9Tt9nY0AgcYlA3bVXmAZ -nM9Rgi6SaO5DxnRdhFzZyYQMb4onFDI0eYMOhPm+NmKWplkFXB+mKPKj5o/pcEb4 -SWHt8fUAWDLsmcJkY7/jo3hlK36GrLnNdN4IODqkooIixDmSay14aBmF08hQ1vt/ -I8jcj3NZtGWFoxKq4laK/ruoeoHnWMznJyMm7mUd/5nzcU5QZU9yEEI= -=2lFm ------END PGP MESSAGE----- -`) - -type testInp struct { - name string - licenseKey []byte - code string - user string - message string -} - -var tests = []testInp{ - { - "Using expired entrerprise license key, should be able to extract user information", - expiredKey, - `Success`, - `Dgraph Test Key`, - ``, - }, - { - "Using invalid entrerprise license key should return an error", - invalidKey, - ``, - ``, - `while extracting enterprise details from the license: while reading PGP message from license file: openpgp: unsupported feature: public key version`, //nolint:lll - }, - { - "Using empty entrerprise license key should return an error", - []byte(``), - ``, - ``, - `while extracting enterprise details from the license: while decoding license file: EOF`, - }, -} - -func (lsuite *LicenseTestSuite) TestEnterpriseLicenseWithHttpEndPoint() { - // run this test using the http endpoint - - t := lsuite.T() - - hcli, err := lsuite.dc.HTTPClient() - require.NoError(t, err) - - for _, tt := range tests { - enterpriseResponse, err := hcli.ApplyLicenseHTTP(tt.licenseKey) - - if err == nil && enterpriseResponse.Code == `Success` { - // Check if the license is applied - require.Equal(t, enterpriseResponse.Code, tt.code) - - // check the user information in case the license is applied - // Expired license should not be enabled even after it is applied - assertLicenseNotEnabled(t, hcli, tt.user) - } else { - // check the error message in case the license is not applied - require.Nil(t, enterpriseResponse) - } - } -} - -func (lsuite *LicenseTestSuite) TestEnterpriseLicenseWithGraphqlEndPoint() { - // this time, run them using the GraphQL admin endpoint - - t := lsuite.T() - hcli, err := lsuite.dc.HTTPClient() - require.NoError(t, err) - - for _, tt := range tests { - resp, err := hcli.ApplyLicenseGraphQL(tt.licenseKey) - - if tt.code == `Success` { - require.NoError(t, err) - // Check if the license is applied - dgraphapi.CompareJSON(`{"enterpriseLicense":{"response":{"code":"Success"}}}`, string(resp)) - - // check the user information in case the license is applied - // Expired license should not be enabled even after it is applied - assertLicenseNotEnabled(t, hcli, tt.user) - } else { - dgraphapi.CompareJSON(`{"enterpriseLicense":null}`, string(resp)) - // check the error message in case the license is not applied - require.Contains(t, err.Error(), tt.message) - } - } -} - -func assertLicenseNotEnabled(t *testing.T, hcli *dgraphapi.HTTPClient, user string) { - response, err := hcli.GetZeroState() - require.NoError(t, err) - - require.Equal(t, response.Extensions["user"], user) - require.Equal(t, response.Extensions["enabled"], false) -} diff --git a/systest/license/upgrade_test.go b/systest/license/upgrade_test.go deleted file mode 100644 index dd48bd44d2e..00000000000 --- a/systest/license/upgrade_test.go +++ /dev/null @@ -1,64 +0,0 @@ -//go:build upgrade - -/* - * SPDX-FileCopyrightText: © Hypermode Inc. - * SPDX-License-Identifier: Apache-2.0 - */ - -package main - -import ( - "log" - "testing" - - "github.com/stretchr/testify/suite" - - "github.com/hypermodeinc/dgraph/v24/dgraphapi" - "github.com/hypermodeinc/dgraph/v24/dgraphtest" - "github.com/hypermodeinc/dgraph/v24/x" -) - -type LicenseTestSuite struct { - suite.Suite - dc dgraphapi.Cluster - lc *dgraphtest.LocalCluster - uc dgraphtest.UpgradeCombo -} - -func (lsuite *LicenseTestSuite) SetupTest() { - conf := dgraphtest.NewClusterConfig().WithNumAlphas(1).WithNumZeros(1).WithReplicas(1). - WithEncryption().WithVersion(lsuite.uc.Before) - c, err := dgraphtest.NewLocalCluster(conf) - x.Panic(err) - if err := c.Start(); err != nil { - c.Cleanup(true) - panic(err) - } - - lsuite.dc = c - lsuite.lc = c -} - -func (lsuite *LicenseTestSuite) TearDownTest() { - lsuite.lc.Cleanup(lsuite.T().Failed()) -} - -func (lsuite *LicenseTestSuite) Upgrade() { - t := lsuite.T() - - if err := lsuite.lc.Upgrade(lsuite.uc.After, lsuite.uc.Strategy); err != nil { - t.Fatal(err) - } -} - -func TestLicenseTestSuite(t *testing.T) { - for _, uc := range dgraphtest.AllUpgradeCombos(false) { - log.Printf("running: backup in [%v], restore in [%v]", uc.Before, uc.After) - var tsuite LicenseTestSuite - tsuite.uc = uc - suite.Run(t, &tsuite) - if t.Failed() { - t.Fatal("TestLicenseTestSuite tests failed") - } - } -} diff --git a/testutil/graphql.go b/testutil/graphql.go index 1ed8dfb7690..9ca4b93a400 100644 --- a/testutil/graphql.go +++ b/testutil/graphql.go @@ -170,22 +170,6 @@ func AssertMoveTablet(t *testing.T, tablet string, groupId uint32) { CompareJSON(t, `{"moveTablet":{"response":{"code":"Success"}}}`, string(resp.Data)) } -func EnterpriseLicense(t *testing.T, license string) *GraphQLResponse { - params := &GraphQLParams{ - Query: `mutation ($license: String!) { - enterpriseLicense(input: {license: $license}) { - response { - code - } - } - }`, - Variables: map[string]interface{}{ - "license": license, - }, - } - return MakeGQLRequest(t, params) -} - type clientCustomClaims struct { Namespace string AuthVariables map[string]interface{} diff --git a/testutil/testaudit/audit.go b/testutil/testaudit/audit.go index 7b873fb87e2..fdcbaba7b93 100644 --- a/testutil/testaudit/audit.go +++ b/testutil/testaudit/audit.go @@ -13,16 +13,20 @@ import ( "os/exec" "path/filepath" "testing" + "time" "github.com/hypermodeinc/dgraph/v24/testutil" "github.com/stretchr/testify/require" ) func VerifyLogs(t *testing.T, path string, cmds []string) { + // to make sure that the audit log is flushed + time.Sleep(time.Second * 5) + abs, err := filepath.Abs(path) - require.Nil(t, err) + require.NoError(t, err) f, err := os.Open(abs) - require.Nil(t, err) + require.NoError(t, err) type log struct { Msg string `json:"endpoint"` @@ -33,7 +37,7 @@ func VerifyLogs(t *testing.T, path string, cmds []string) { for fileScanner.Scan() { bytes := fileScanner.Bytes() l := new(log) - _ = json.Unmarshal(bytes, l) + require.NoError(t, json.Unmarshal(bytes, l)) logMap[l.Msg] = true } for _, m := range cmds { diff --git a/tlstest/tls/client.acl.crt b/tlstest/tls/client.acl.crt index ec96951c5d3..d1ea8d51b32 100644 --- a/tlstest/tls/client.acl.crt +++ b/tlstest/tls/client.acl.crt @@ -1,20 +1,20 @@ -----BEGIN CERTIFICATE----- -MIIDSzCCAjOgAwIBAgIICqGW9WRZh6MwDQYJKoZIhvcNAQELBQAwRjEaMBgGA1UE +MIIDSDCCAjCgAwIBAgIICpx5Zw6jC8IwDQYJKoZIhvcNAQELBQAwRjEaMBgGA1UE ChMRRGdyYXBoIExhYnMsIEluYy4xFzAVBgNVBAMTDkRncmFwaCBSb290IENBMQ8w -DQYDVQQFEwY2MzQwNTgwHhcNMjQwNDAyMDEwODQ4WhcNMjUwNDAzMDEwODQ4WjA7 -MRowGAYDVQQKExFEZ3JhcGggTGFicywgSW5jLjEMMAoGA1UEAxMDYWNsMQ8wDQYD -VQQFEwYwYWExOTYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDK7tIa -Rgz5IFX2dv+8phvaATKC+1XQZIzaf1umxakRr2Lqzc4NbJhE3+pX3PvL1m5R2ZbX -N8DatxDVVO0D8aUivzU/Z6OOFKWngXTSdU4w4LNzTkB4EPsNRocItQ4X+H4jHHRu -gD9yZWD2z+4oc/wQ9Oj2Raq0y0J45ZUFrIF25DzQHE1m76Cn701zgH3oZbmfDtBX -eAU85PfIt3YBrGooxViWMzDGzP+i/3bBPg5uD44tVeJz2USTDGqv822ndC5PATGc -b3YY8D+m+te6KGJw48I68PPNDk5uPk/KCwoXYXnZXL9Ykf0SA3CRIkNYtMmJGINm -Y0vxEmUDNtbI3KHHAgMBAAGjSDBGMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAK -BggrBgEFBQcDAjAfBgNVHSMEGDAWgBS0Ifn5zbkosHJ2Wn8CJzIeFgcPAjANBgkq -hkiG9w0BAQsFAAOCAQEAdfOYM/bHm1lgDU77jxQcIsnVMhxSVbCuCy8JZQ6m6HSs -kNCWS7UKkW14uaVwRT78Q8O0J1E2TrGqS4b6llZhxsbRRBMSttofU581DYaicZ2N -hU+Z0q/YMC5jKliTBWFvcZ/KnGqRBDgE/gwotEecnVEpc4i1qCUosleN8qgy4EDp -E4XsCgMtzOWuH2omZ0Lkfc5NZ4071zIFHc4Uc7eOmThyZyMRrpL1jXwYNYFS2MMG -GTG07HsszXZSTue7Cq9DkHLerA7yZI8K4KzmyLO1gipobbUFBlH2NIaUGYvaRj+H -1V4JqTjrcrZhCAgq+Sdm/vTXc79Rei77VShjbvMhOw== +DQYDVQQFEwY2MzQwNTgwHhcNMjUwNDAyMTgxMDI5WhcNMzMwNjIwMTgxMDI5WjA4 +MRcwFQYDVQQKEw5IeXBlcm1vZGUgSW5jLjEMMAoGA1UEAxMDYWNsMQ8wDQYDVQQF +EwYwYTljNzkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC963UWeFQK +4vRmOOHaJkM6MLD2LwV6rvLBfINJf202UAtS9Pn89G5DsYl+kjyTC8VD+gTc3ke9 +7yjnIvBA2Qd71LIcYJX8Hi2gtVMIRqSpMFRDoP5dccEQC6CGe30KLZnYFxxrZWDY +sBltiqzCKEiPC/LkeoTUJDn3dtddJhfknxptWlMvq4PKnhgbU4i0QXAytj4LvXku +Q5uZnYw1IUpR9eNZh4tNbYygRKOV8vE/rfXpFq4bg+X9ydn86pGYCy6E5TJaJMAO +elTr/GppzEM9ZjszQB+9RZW0qkK63JKIY0g11qOw4xnOvvTEZ3RsCpjdbcYDABoy +W0o9J2dtcEf/AgMBAAGjSDBGMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggr +BgEFBQcDAjAfBgNVHSMEGDAWgBS0Ifn5zbkosHJ2Wn8CJzIeFgcPAjANBgkqhkiG +9w0BAQsFAAOCAQEAcxGPCJbIra6zC+8GTnFhVIk6XpzdkoGi72tCXq7UOeJbzFXm +mdI9NxStUd7E+R/fu2lRCnuZTaNrTamyBOTThbDGftyZOhJbprVzLP+bdiS7a5fJ +GgMt9yQA0N9ijFgbie+yEVy86zoptnXGbMb0BNMcZPevlHf7SdRPX6YTK9HQIEC2 +Ggj2SQb2qBeP9znhW5JTIzO43mSKFjI+FOZAvEDwQH11kmuQkoQNoYQ//gHS4CnC +Enq+Kz9jmdIVITedvqrlai50R7+MHCzglAcrTrcsBvlsjLhmTUL4oM2gEI8oCZ2v +dahQcGiJdO7ZX/1tOLi6r0WrovezFFbVN8ijag== -----END CERTIFICATE----- diff --git a/tlstest/tls/client.acl.key b/tlstest/tls/client.acl.key index 4747e3cb8d1..1015dc8913b 100644 --- a/tlstest/tls/client.acl.key +++ b/tlstest/tls/client.acl.key @@ -1,27 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEAyu7SGkYM+SBV9nb/vKYb2gEygvtV0GSM2n9bpsWpEa9i6s3O -DWyYRN/qV9z7y9ZuUdmW1zfA2rcQ1VTtA/GlIr81P2ejjhSlp4F00nVOMOCzc05A -eBD7DUaHCLUOF/h+Ixx0boA/cmVg9s/uKHP8EPTo9kWqtMtCeOWVBayBduQ80BxN -Zu+gp+9Nc4B96GW5nw7QV3gFPOT3yLd2AaxqKMVYljMwxsz/ov92wT4Obg+OLVXi -c9lEkwxqr/Ntp3QuTwExnG92GPA/pvrXuihicOPCOvDzzQ5Obj5PygsKF2F52Vy/ -WJH9EgNwkSJDWLTJiRiDZmNL8RJlAzbWyNyhxwIDAQABAoIBAERJSs/mhJUMSYDv -GC095B9eycWDl6PRQgiAVLHwz2yRDQMgD9c6lJ6QjoXUabJ0zJikVHrFWxL+CR8Q -PdVW6g+gMeXNFR9JWVjdWhc7u/z8j8YcLdt5M1GLSwMmEcEFMETWXWOVqkPvU0qa -O3THWqnGD+JXHRNLVmniL1xCaSo9F2VvepKRwrR0WqcErPU0BiECVzbt3q+7JxYL -QbcMKv+tkraVDfgBt66TaHAofCDLDp0OICZumnNxBzfBd+fZz+LKnwsrdfF26FN/ -3PP0bsd4Y8lqlfFqvmdvcug7DclrW6ulCXPbPoHO6+IAn3AfLvd7jEsfKwhJKJU4 -ytjsmgkCgYEA1FJgl3O3025GyZ6m8NBzKPgiqybY5FrL094D+OFezHdE44bRhw/0 -lapN94i4RELKBgN+Rt867Il2TfWxKCMSfzZfE4c/YG4ud0xj6F3n77h2Ve1zZRli -nXWa9zbC6Gf5T6oSHXTwBHjF6SvzrsgyqwcMncB9Y0ySfDt6K2APkVsCgYEA9K39 -pXcwotcpCrpy0S2e4FHximOI+PR27Toz/CRJRh8UE6P+sei3+9Pb3hECLpcNrd3A -kAwDhig3IuHtrGkGG75rJF2Gh/PbVcwnAGdSWfMAXuujkh1bbtMTM1bcShOwrnBt -/Yzi/EoZ1i6stkozWuwGcZdS/bfZP8Htre6DUQUCgYEAhhXwAjWGJfRCqBmVfAdo -crshycyitLPSfV58S7SoVaAM1VPTBuTApbQDwQuKszEqvFmAaemYIME/AUTkOGDN -0aDYslB7ab6rgZOwlJKZYv6vXNy0P2ikqqQW1YCz3mmrPPA+uHOdEHXlJrgnEH5F -4VR2Vzm09fzplaNKKBJmQnkCgYEA126GgPTTvtzgxxBo3aJkW6/qkuWWiVR9jdwM -P3oXhgUBIVXof+6eZ70evoSNPkZDhg1UacAaLjokabMxF/eUqELdhTRPqk5clUte -H63ZRVd+wRSKfbEZexeftTlKVnLFwqE9RtyQUoBQBVQtP4dPdkOQXN1W9gu03b07 -L0RtHJ0CgYA8MSme2TZBzLuhPFxTDQVcBJbpYXGldQ+SSXe/yL05oCZ7CW0kZn5Y -y4zh7UH7A0JTep8KYlj5SgEO9zHngP/s7Xp0znuOZdGLmhG+erZGEqSH/Uto+Wml -+rFdJFoey49JtdBRxLIBYFyF4fyv4tKsqlzJN3et1jboG0JCpnI4Ow== +MIIEogIBAAKCAQEAvet1FnhUCuL0Zjjh2iZDOjCw9i8Feq7ywXyDSX9tNlALUvT5 +/PRuQ7GJfpI8kwvFQ/oE3N5Hve8o5yLwQNkHe9SyHGCV/B4toLVTCEakqTBUQ6D+ +XXHBEAughnt9Ci2Z2Bcca2Vg2LAZbYqswihIjwvy5HqE1CQ593bXXSYX5J8abVpT +L6uDyp4YG1OItEFwMrY+C715LkObmZ2MNSFKUfXjWYeLTW2MoESjlfLxP6316Rau +G4Pl/cnZ/OqRmAsuhOUyWiTADnpU6/xqacxDPWY7M0AfvUWVtKpCutySiGNINdaj +sOMZzr70xGd0bAqY3W3GAwAaMltKPSdnbXBH/wIDAQABAoIBADczAE0PnB2t6Srs +zXgCNvfqvwROlmEaCCSEdAQgrTVj/maWHTKQOJwkNbo79q8mdKdVO6SWVnO110WW +ug2fBrXPFBV7XRxyCQD0srVtEt651UPyvvuZ3Gs1deqgaa9ToatUzEXKqWNRi5Jz +A9NKsgwhhO8zTPf7r31lZSMFt1wTAe5Flcf//cVCCPvHhpCmaKf6P3iQEHP06PeA +KZiHjD3r6lDVAT5RHWAB3wejfZkH5vZIlFh57E5e/T8iQC3xJxDzFngVxno8+jXT +V73LPhQNWFr5IXZwJThK3wrVUU3MPoqZUswnVgbZOSht0+pTyNZ/xv4gnELpuLw/ +OmoGPIECgYEA5SB2mspk6fQaKHm6tdseO+ixkx4lYQpU2dVGluJRyBHbc4lpwXs6 +AklrvOtpuVTQuHS0UNaAHwA4MMQmVKzuAh6PzQVDaipI9++DCmvEavCVYMiYJCEj +983+zPlY0jUjCNFZZNHrwgOq92T78CMSTv0dER+U3GrfMxM5ZpkBEfcCgYEA1DHN +MdDS1YwdmkqbsfIDyp7rFfplHf/zGVWwSnfjjO2+E2QtdUR2C1h4XOpeJBLJdPVN +5o5B90MWuDEjuRlUJ7+LYKpoSiv344+XZ7fjjzKJFF1N0sJHTnCBpPyyydo4BJiH +mjABhyAigSrbffB8mbs2nQwsazZBVjJRC5CU+DkCgYBj0035SJ7I00ImSkrPeoTk +ow/iweqVKdQoB+S2TipFWYpb/w1lb5OpdWWMLKCmT06UXrxEz/+IAid5D6yHjcQw +hjIup9FkSsH5y48zFhrAYMskHKE0dH/gMg6GLUjGZMI70EH7S/5ETCbLnGKrkAwk +/+APGsxXb/SIoyKKEbVGpwKBgHWNCVG5j7MBpjydbFdN7U/Ibg+E4ZOXAUNdtwXq +GMMvyYbQjmZSgNqULkm7BGATkEscwgUhdeXW4rUzc8jNAVPrxvjMLm44oWENYSDy +PDxOEKaZcc16FyqbJRcTbrBoFXRmU2jVg2MqKDNKXMIOAdjgX8bswYa7TcLEqSUw ++XXxAoGAD9DlvWnKv2BvuQHk+Fzs+3T0s7XnLQAm32w8t/suipFvZO7rh7p3BKqW +WlKFw3RIlepOcfvvOm5DdP6DLGd5WmiaALuUx9BSixdo8iXRD21paaDDPQ999jDo +Xy8ia79Bw77RFsVI17H8xNhXZ4IvtWeMvPUJo7YthGbRLYNsyJI= -----END RSA PRIVATE KEY----- diff --git a/tlstest/tls/node.crt b/tlstest/tls/node.crt index 2cb0c98ab8c..636c96e61db 100644 --- a/tlstest/tls/node.crt +++ b/tlstest/tls/node.crt @@ -1,21 +1,21 @@ -----BEGIN CERTIFICATE----- -MIIDeTCCAmGgAwIBAgIIaDq7LA1+QRwwDQYJKoZIhvcNAQELBQAwRjEaMBgGA1UE +MIIDdjCCAl6gAwIBAgIIVnZtrlXyHPgwDQYJKoZIhvcNAQELBQAwRjEaMBgGA1UE ChMRRGdyYXBoIExhYnMsIEluYy4xFzAVBgNVBAMTDkRncmFwaCBSb290IENBMQ8w -DQYDVQQFEwY2MzQwNTgwHhcNMjQwNDAyMDEwODQ4WhcNMjUwNDAzMDEwODQ4WjBD -MRowGAYDVQQKExFEZ3JhcGggTGFicywgSW5jLjEUMBIGA1UEAxMLRGdyYXBoIE5v -ZGUxDzANBgNVBAUTBjY4M2FiYjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAOTYTPqq+/uzlYLDVTcdVyF9eHJo2u+iHFI6kH/iOrmWpMjE08RgTuKfRQcF -xzhcST427ABuHu+mTUFlqnq+ssE1WkaQpJJS4IOKJvBb+IOhNA4E25Igms81Aeeq -gt8OXrRHaMyz3D38S6KyKEr5GPgp/yMESmUyree0nvO2sJSS0a8l49jtsMUDB5J6 -N4zZXJiMq5KrK64UyiWRJLxU1yHk8122y7TWnsmxdAWs0idiSDKFT7bJGe3tQoTM -0DUDYv3uu2ZE83H24rKveAu0uvFcG445+QBDWmVpZDlwtPARm1VldmXkDkv5YUrg -03mABXt/QFfNOKqGQfuQ2uhHuLsCAwEAAaNuMGwwDgYDVR0PAQH/BAQDAgWgMB0G -A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAfBgNVHSMEGDAWgBS0Ifn5zbko -sHJ2Wn8CJzIeFgcPAjAaBgNVHREEEzARgglsb2NhbGhvc3SCBG5vZGUwDQYJKoZI -hvcNAQELBQADggEBAHopnKVFg4h4CcQGNWy23WVTKfrxP0gTgEPWWUDNItFqV8Ai -EIQal+4Ay0vYHsJuIGb4wdSkBDQEwOMM5E1p2+tHvJyYQuCa54boe4DqnMf1ImaO -4kx+cKzLxE3S4xbkt4YHJwC84W6+as/I3rsKcUDGwUN7hKmmxj3V2iZwNfvSyHbI -QUN6mOnm7YRb98ISnTrBnQnSES/Yfqoqqcyx0tiB/2Ah2b1+TqWhs2jdH7By6mrN -oWO3L8y6qfmoSlDiz8ve1X0v0mIspiSjA6FhGNijNVawBzl4tJ1ab4oEcJZJQvKc -AOyH4UbpLO65pYAPQrRad8HQDq9es/KO77SCbYk= +DQYDVQQFEwY2MzQwNTgwHhcNMjUwNDAyMTgwOTQzWhcNMzMwNjIwMTgwOTQzWjBA +MRcwFQYDVQQKEw5IeXBlcm1vZGUgSW5jLjEUMBIGA1UEAxMLRGdyYXBoIE5vZGUx +DzANBgNVBAUTBjU2NzY2ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANce+BOD8UDT1MzKi4PJ4iPWZnkfWYRjRqoRCsf5IoHQBv36D7XfwrOV6KjAcvkf +DlAnWyeALjyy8yPZvd/EBoA4L56hbhjeUO011T0tyasrWuoAiIfB1JF6ibaOmauO +OTz62H/OHwUEuXrALyPZEC91rnmjROIChq+0cF4Kpp8HBqy6xcyAsh0a/woLc43Q +JX9aMpBmSC+aHz6oH4ZTta/kkQdP5u5cCg0TDyKsW31Y0n0K1YUT2R+bRkA2jY3x +UjPZU5gMo652s4ZTn6O41kBKZEw0J9FjtuTJ/eRJVMt/t8bFcYxmKt0d5LUZXD67 +AHCPzUYAoMT2yilTdipZ+eECAwEAAaNuMGwwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud +JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAfBgNVHSMEGDAWgBS0Ifn5zbkosHJ2 +Wn8CJzIeFgcPAjAaBgNVHREEEzARgglsb2NhbGhvc3SCBG5vZGUwDQYJKoZIhvcN +AQELBQADggEBAH44716FW8Zd1LMi0Wug4YFLc/K/fDiX/VSw1F9+ohPAUyCeZz8u +a+ThjWA0mOSNI5DBE+Oon7hiVRl7H8zzv/9eqWf8HaOWh95yfTEzIJq69U0Pa7Ms +8YsxK7aewJOx9HQzfKzdFXhLNh6DNptpI8MvuQ0WiOMZMCQGVgb8scgh3tIbFdXG +5rfwEm6hk351EG7I/V35yNHwk1A2DIhZmPJ32QljMqGN/GB8SuVrk+vVCcM6nz6s +x0yOlkkbmqDnLop+RgJEGWFMQgKTXVdTDjaBevE/Gt0s0LDycIVYwtitX8COmN3p +vvtbQqLuN6UhvH7hILgcLFGdf5m9vi1KpuY= -----END CERTIFICATE----- diff --git a/tlstest/tls/node.key b/tlstest/tls/node.key index 0238d28bc27..308c70277e4 100644 --- a/tlstest/tls/node.key +++ b/tlstest/tls/node.key @@ -1,27 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEA5NhM+qr7+7OVgsNVNx1XIX14cmja76IcUjqQf+I6uZakyMTT -xGBO4p9FBwXHOFxJPjbsAG4e76ZNQWWqer6ywTVaRpCkklLgg4om8Fv4g6E0DgTb -kiCazzUB56qC3w5etEdozLPcPfxLorIoSvkY+Cn/IwRKZTKt57Se87awlJLRryXj -2O2wxQMHkno3jNlcmIyrkqsrrhTKJZEkvFTXIeTzXbbLtNaeybF0BazSJ2JIMoVP -tskZ7e1ChMzQNQNi/e67ZkTzcfbisq94C7S68Vwbjjn5AENaZWlkOXC08BGbVWV2 -ZeQOS/lhSuDTeYAFe39AV804qoZB+5Da6Ee4uwIDAQABAoIBAF/xHzTogoRgIgqU -giF9N45e4CR3OXLF8EG5M+OpoR01vxg9DNuD1Q7F31a2YXOLnVlsBT2Y7XdjrXgB -e5vCX4cJKzPyaEzAWkhLn0+d/26QIxbNipCVAtJkUswhfISvrZy/Y3yO24NRRxSK -xMHJ9WH1mXXA0r/io25FF27t5NIkgIR29WymPUuNDWuEeggGxnp2dOkFdTd8X0kE -P3k7H/emssfHaSzsq0LD3eejwjOTPh6Z/YV1fonbpfsqtUOblhXEPqMQ3XujYKDl -zryNskV50QLVnrrYKFJ9JVwDLO7YilkWrbNzU3V2PxN3/1kHgg+MWCE0O1MSjxc4 -cbZhfOECgYEA/SQBPeH3spYNUxf0PdbA7Q7P8vLxN06jDQsOjYBBRslO2F2z7khL -+ja1QtVfy7AktdXfZAbJmZOlZ0jC+JwxLN/+n3tXV5o4fvfu4zRQeG4pyWWCkjck -ehmtt5WnVREDQn3tICMCz1/B5f6rm0ctkKCC7tR1vgqPfIh4Yhgvqa8CgYEA524K -gVVBG968OjGuqJwJd7A6LJKC2a30fUlJc/brHa5awDCgbczwYp0OTG/ULq9kKqAa -kjXD6JAAhnV2oESyhF53R5DkIylROfxcLrPez5U74DjUTr4shjrDF6DDSnXLg0aY -qQ2J3EO+1lRg31aFVkQ15t9RZjU+3c6Oyr2nQLUCgYBR7sFoIidl6iNN7cbj7Qps -sAqme/OPDyi/JAEF06lNHAMlDM8cJNJSnjp081MaPlzjbeHsIjZGOv+iOm7AwO05 -tRZY0Dco54W5ss3jRB93m1BzGyPz510rF/yeGxYZ9nOzpcaGTE6wiDHeG1u32oXo -9crrOmERraFbkWBFf8aNiQKBgQCH5PrwNPKVffYDKfdIdM+uY2HVmHaTge0lwGoM -WTp4ZFBPuH4L26JwFY823Re4Di+ARCE2J7IRFrXoPoNY2t4Ekj/yWydLalCS/xfW -KLK2LAhLwrMQReV5MHosnq7uQzssq8CqzBNerr0Zt9RmcLS9EjKgjhOLM8rljgwV -CsZyXQKBgQC0UX61IBBeFKWUExdBMJjKZRi5C+wrPMXJSPOQCJJntD2a/+9m2eMd -bOOW3v6pVeIZVkxcP+VEP/minsDe6O5MHyZsJQ95aoZS5jFktYUBNguwFKfr5lV+ -29XKkyCf1/7Xd5gHqFXbXPaIkZohINgAdDl6r71/96wMzvl2wsjUZg== +MIIEowIBAAKCAQEA1x74E4PxQNPUzMqLg8niI9ZmeR9ZhGNGqhEKx/kigdAG/foP +td/Cs5XoqMBy+R8OUCdbJ4AuPLLzI9m938QGgDgvnqFuGN5Q7TXVPS3Jqyta6gCI +h8HUkXqJto6Zq445PPrYf84fBQS5esAvI9kQL3WueaNE4gKGr7RwXgqmnwcGrLrF +zICyHRr/CgtzjdAlf1oykGZIL5ofPqgfhlO1r+SRB0/m7lwKDRMPIqxbfVjSfQrV +hRPZH5tGQDaNjfFSM9lTmAyjrnazhlOfo7jWQEpkTDQn0WO25Mn95ElUy3+3xsVx +jGYq3R3ktRlcPrsAcI/NRgCgxPbKKVN2Kln54QIDAQABAoIBAAGaxLKZ5oKbceK7 +KgeSycHcV17/lF0v7mGAsgoOz3/qC3tOfQUtb5guUzzFqWCL/OvXzKQX89WrvLOK +QWfPYFW0KurDJ9KTVJrdrsL/j0RcakJaPFUi5XvWTvunxvlSx2uEhXk354mpNjGh +CFj7RVXNShQJ2zmCV6XXhzUJsvd3BEeZiCszAdbOIVHYmGeicr0a9KgPhCP9RvK/ +deW5CHd9fbGrzip/IlxOhZQRnJqgBnh+AzL7RjqqoPPKre2wXWHqMXmiL54VAtXy +aaO80zT4xz1hHXF6huR/SmfYxIrN+qyB62PLq1yeGYGT/OpQgTeNYuYs4pI7XBnn +tWPh+4ECgYEA321iknrCrqZueYM8TgscKtB6bxxnEKWraC6ghX2FtbtNEZGDhyly +sJtCqbwb1tGSaWnil9nmbakwBMWQMqJ7wS04IbonNHMl3MzZTWBHAIVvmCgsBajn +5fPenwBe57fiygRuAbNI3hDa4qNNl+5T6699W+5vSaZvviLu2qMhy3ECgYEA9nuU +uKdGPd3brRP9XLo0WeFlbkG4EEI6rwT+GV79NS+Hmm7Q6SsjB93ByvNAehKza4Jz +jYkQVOMpCIZzh1QLew8OcWl2zZ5QcgW4VYBi8EhvVDgYdfzbofhqxFP7rc1tMkhy +Mvybg/wc41cZ+b9LIlck4oPu3Y+B5b5lrMMpfXECgYEAhEFx2heE6nFmb9N5fREi +iU2DTAZaFAadYjxHlP1qitrmkgG7A+VLGLOvUF4jdJP1wSSGlzDLMBq4a/qukuqP +qxgjZAOXdXq77Ontr9nP7cUO+9i7xlXnf71OCHzlsPCu9LqOi78e4STFDOdx5P+U ++ayV3jdT9RrqhniTPyTVumECgYBX72z2l87qgX0++VO5wkCtFEnQlSeqvUYcbMaO +nKHvWJ6jTQfBN/+ObeIWmsQVCRjzsR2ykATAlC5ueTE8RZK2+38mnP6iiumeVEYY +Uu55VQ5K2Jx5c5WT6oGEu4Wd0x0zBD+hyxdcdhSEUu3UeRfAD6D8Ix+T8f/gzBWQ +Fix2MQKBgHhW5rOr8iujdhQC6dhgG7lgBbWiSQ0UhFNwfE5CuZAfn0zBuEb6wtS3 +n79eEBnsHdAJdtvcVdqrHL7W9ZGXel4X0CtWSkAw+F1LdJWC6dCvnLHijsVeMiuF +uFGDsXYrmtuzMxC6pJVWqd+uKL4NCw+jVqL9LvlIFJA47OfLlNug -----END RSA PRIVATE KEY----- diff --git a/worker/cdc_ee.go b/worker/cdc_ee.go index bffe8573f16..bf700bafd38 100644 --- a/worker/cdc_ee.go +++ b/worker/cdc_ee.go @@ -337,7 +337,7 @@ func (cdc *CDC) processCDCEvents() { case <-cdc.closer.HasBeenClosed(): return case <-jobTick.C: - if groups().Node.AmLeader() && EnterpriseEnabled() { + if groups().Node.AmLeader() { if err := sendEvents(); err != nil { glog.Errorf("unable to send events %+v", err) } @@ -346,7 +346,7 @@ func (cdc *CDC) processCDCEvents() { // The leader would propose the max sentTs over to the group. // So, in case of a crash or a leadership change, the new leader // would know where to send the cdc events from the Raft logs. - if groups().Node.AmLeader() && EnterpriseEnabled() { + if groups().Node.AmLeader() { sentTs := atomic.LoadUint64(&cdc.sentTs) if lastSent == sentTs { // No need to propose anything. diff --git a/worker/groups.go b/worker/groups.go index 8ee2e11d3da..650d8ade102 100644 --- a/worker/groups.go +++ b/worker/groups.go @@ -22,7 +22,6 @@ import ( "github.com/dgraph-io/dgo/v240/protos/api" "github.com/dgraph-io/ristretto/v2/z" "github.com/hypermodeinc/dgraph/v24/conn" - "github.com/hypermodeinc/dgraph/v24/ee/enc" "github.com/hypermodeinc/dgraph/v24/protos/pb" "github.com/hypermodeinc/dgraph/v24/raftwal" "github.com/hypermodeinc/dgraph/v24/schema" @@ -301,13 +300,6 @@ func (g *groupi) applyState(myId uint64, state *pb.MembershipState) { return } - invalid := state.License != nil && !state.License.Enabled - if g.Node != nil && g.Node.RaftContext.IsLearner && invalid { - glog.Errorf("ENTERPRISE_ONLY_LEARNER: License Expired. Cannot run learner nodes.") - x.ServerCloser.Signal() - return - } - oldState := g.state g.state = state @@ -1102,9 +1094,6 @@ func (g *groupi) processOracleDeltaStream() { // GetEEFeaturesList returns a list of Enterprise Features that are available. func GetEEFeaturesList() []string { - if !EnterpriseEnabled() { - return nil - } var ee []string if Config.AclSecretKey != nil { ee = append(ee, "acl") @@ -1124,54 +1113,6 @@ func GetEEFeaturesList() []string { return ee } -// EnterpriseEnabled returns whether enterprise features can be used or not. -func EnterpriseEnabled() bool { - if !enc.EeBuild { - return false - } - state := GetMembershipState() - if state == nil { - return groups().askZeroForEE() - } - return state.GetLicense().GetEnabled() -} - -func (g *groupi) askZeroForEE() bool { - var err error - var connState *pb.ConnectionState - - createConn := func() bool { - pl := g.connToZeroLeader() - if pl == nil { - return false - } - zc := pb.NewZeroClient(pl.Get()) - - ctx, cancel := context.WithTimeout(g.Ctx(), 10*time.Second) - defer cancel() - - connState, err = zc.Connect(ctx, &pb.Member{ClusterInfoOnly: true}) - if connState == nil || - connState.GetState() == nil || - connState.GetState().GetLicense() == nil { - glog.Info("Retry Zero Connection") - return false - } - if err == nil || x.ShouldCrash(err) { - return true - } - return false - } - - for !g.IsClosed() { - if createConn() { - break - } - time.Sleep(time.Second) - } - return connState.GetState().GetLicense().GetEnabled() -} - // SubscribeForUpdates will listen for updates for the given group. func SubscribeForUpdates(prefixes [][]byte, ignore string, cb func(kvs *badgerpb.KVList), group uint32, closer *z.Closer) { diff --git a/worker/server_state.go b/worker/server_state.go index 94060222551..29f9904e896 100644 --- a/worker/server_state.go +++ b/worker/server_state.go @@ -96,14 +96,7 @@ func (s *ServerState) InitStorage() { var err error if x.WorkerConfig.EncryptionKey != nil { - // non-nil key file - if !EnterpriseEnabled() { - // not licensed --> crash. - glog.Fatal("Valid Enterprise License needed for the Encryption feature.") - } else { - // licensed --> OK. - glog.Infof("Encryption feature enabled.") - } + glog.Infof("Encryption feature enabled.") } { diff --git a/worker/zero.go b/worker/zero.go index 6550dbbe9c8..be105f19e41 100644 --- a/worker/zero.go +++ b/worker/zero.go @@ -35,15 +35,3 @@ func MoveTabletOverNetwork(ctx context.Context, req *pb.MoveTabletRequest) (*pb. c := pb.NewZeroClient(pl.Get()) return c.MoveTablet(ctx, req) } - -// ApplyLicenseOverNetwork sends a request to apply the given enterprise license to a zero server. -// This operation doesn't necessarily require a zero leader. -func ApplyLicenseOverNetwork(ctx context.Context, req *pb.ApplyLicenseRequest) (*pb.Status, error) { - pl := groups().AnyServer(0) - if pl == nil { - return nil, conn.ErrNoConnection - } - - c := pb.NewZeroClient(pl.Get()) - return c.ApplyLicense(ctx, req) -} diff --git a/x/x.go b/x/x.go index 6bee8abfb48..14501e5fa5d 100644 --- a/x/x.go +++ b/x/x.go @@ -157,9 +157,7 @@ func ShouldCrash(err error) bool { errStr := status.Convert(err).Message() return strings.Contains(errStr, "REUSE_RAFTID") || strings.Contains(errStr, "REUSE_ADDR") || - strings.Contains(errStr, "NO_ADDR") || - strings.Contains(errStr, "ENTERPRISE_LIMIT_REACHED") || - strings.Contains(errStr, "ENTERPRISE_ONLY_LEARNER") + strings.Contains(errStr, "NO_ADDR") } // WhiteSpace Replacer removes spaces and tabs from a string.