From 406695bb4d55644b9bb04d145f5f4bab358437a4 Mon Sep 17 00:00:00 2001 From: huanghaoyuanhhy Date: Tue, 24 Dec 2024 18:11:47 +0800 Subject: [PATCH] feat: support Milvus 2.5 function feature by bypassing SDK Milvus 2.5 introduced the function feature, which is not well-supported by the older SDK versions. The new SDK hides many internal IDs used by the backup tool. To address this, the backup tool now interacts with Milvus directly via gRPC, bypassing the SDK. Signed-off-by: huanghaoyuanhhy --- .github/workflows/main.yaml | 10 +- .github/workflows/nightly.yaml | 4 +- .github/workflows/perf.yaml | 2 +- .github/workflows/release.yaml | 4 +- Dockerfile | 3 +- Makefile | 12 +- cmd/backup_yaml.go | 4 +- cmd/check.go | 3 +- cmd/create.go | 3 +- cmd/delete.go | 3 +- cmd/get.go | 3 +- cmd/list.go | 3 +- cmd/restore.go | 3 +- cmd/root.go | 2 +- cmd/server.go | 3 +- core/backup_context.go | 81 +- core/backup_context_test.go | 119 +- core/backup_impl_create_backup.go | 224 +- core/backup_impl_restore_backup.go | 204 +- core/backup_meta.go | 1 + core/backup_server.go | 19 +- core/backup_server_test.go | 3 +- core/client/milvus.go | 562 +++ core/milvus_sdk_test.go | 360 -- core/milvus_sdk_wrapper.go | 209 - core/milvus_storage_test.go | 136 - core/paramtable/base_table_test.go | 1 + core/proto/backup.proto | 24 +- core/proto/backuppb/backup.pb.go | 5862 +++++++++++++++++--------- core/storage/chunk_manager.go | 4 +- core/storage/local_chunk_manager.go | 1 + core/utils/backup_request_util.go | 1 + core/utils/convert_util.go | 1 + core/utils/version_util.go | 3 +- go.mod | 192 +- go.sum | 1110 ++--- internal/common/workerpool.go | 3 +- internal/util/errorutil/util_test.go | 3 +- internal/util/grpcclient/client.go | 5 +- main.go | 9 +- version/version.go | 7 + 41 files changed, 5187 insertions(+), 4019 deletions(-) create mode 100644 core/client/milvus.go delete mode 100644 core/milvus_sdk_test.go delete mode 100644 core/milvus_sdk_wrapper.go delete mode 100644 core/milvus_storage_test.go create mode 100644 version/version.go diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index c5164607..98295966 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -41,7 +41,7 @@ jobs: - uses: actions/setup-go@v3 with: - go-version: '1.18.0' + go-version: '1.23' cache: true - name: Build @@ -180,7 +180,7 @@ jobs: - uses: actions/setup-go@v3 with: - go-version: '1.18.0' + go-version: '1.23' cache: true - name: Build @@ -270,7 +270,7 @@ jobs: - uses: actions/setup-go@v3 with: - go-version: '1.18.0' + go-version: '1.23' cache: true - name: Build @@ -402,7 +402,7 @@ jobs: - uses: actions/setup-go@v3 with: - go-version: '1.18.0' + go-version: '1.23' cache: "true" - name: Creating kind cluster @@ -550,7 +550,7 @@ jobs: - uses: actions/setup-go@v3 with: - go-version: '1.18.0' + go-version: '1.23' cache: true - name: Build diff --git a/.github/workflows/nightly.yaml b/.github/workflows/nightly.yaml index e8460c02..2f31c7ef 100644 --- a/.github/workflows/nightly.yaml +++ b/.github/workflows/nightly.yaml @@ -26,7 +26,7 @@ jobs: - uses: actions/setup-go@v3 with: - go-version: '1.18.0' + go-version: '1.23' cache: true - name: Creating kind cluster @@ -147,7 +147,7 @@ jobs: - uses: actions/setup-go@v3 with: - go-version: '1.18.0' + go-version: '1.23' cache: true - name: Creating kind cluster diff --git a/.github/workflows/perf.yaml b/.github/workflows/perf.yaml index 5c7b6608..4499ccbb 100644 --- a/.github/workflows/perf.yaml +++ b/.github/workflows/perf.yaml @@ -29,7 +29,7 @@ jobs: - uses: actions/setup-go@v3 with: - go-version: '1.18.0' + go-version: '1.23' cache: true - name: Creating kind cluster diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index fbc5fcc9..bb3a26ae 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -18,7 +18,7 @@ jobs: - run: git fetch --force --tags - uses: actions/setup-go@v5 with: - go-version: 1.18 + go-version: 1.23 cache: true - uses: docker/login-action@v3 with: @@ -46,7 +46,7 @@ jobs: - run: git fetch --force --tags - uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.23 cache: true - name: Set up QEMU diff --git a/Dockerfile b/Dockerfile index a1ca91ea..a6098ab6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,4 @@ - -FROM golang:1.18 AS builder +FROM golang:1.23 AS builder ENV CGO_ENABLED=0 diff --git a/Makefile b/Makefile index 70872595..5ed2f1e1 100644 --- a/Makefile +++ b/Makefile @@ -1,19 +1,29 @@ # Variables BINARY_NAME=milvus-backup +PKG := github.com/zilliztech/milvus-backup VERSION=$(shell git describe --tags --always) COMMIT=$(shell git rev-parse --short HEAD) DATE=$(shell date -u '+%Y-%m-%dT%H:%M:%SZ') +LDFLAGS += -X "$(PKG)/version.Version=$(VERSION)" +LDFLAGS += -X "$(PKG)/version.Commit=$(COMMIT)" +LDFLAGS += -X "$(PKG)/version.Date=$(DATE)" + # Default target all: gen build # Build the binary build: @echo "Building binary..." - GO111MODULE=on CGO_ENABLED=0 go build -ldflags "-X main.version=$(VERSION) -X main.commit=$(COMMIT) -X main.date=$(DATE)" -o $(BINARY_NAME) + GO111MODULE=on CGO_ENABLED=0 go build -ldflags '$(LDFLAGS)' -o $(BINARY_NAME) gen: ./scripts/gen_swag.sh ./scripts/gen_proto.sh +fmt: + @echo Formatting code... + @goimports -w --local $(PKG) ./ + @echo Format code done + .PHONY: all build gen \ No newline at end of file diff --git a/cmd/backup_yaml.go b/cmd/backup_yaml.go index 20e44927..d1e2ad01 100644 --- a/cmd/backup_yaml.go +++ b/cmd/backup_yaml.go @@ -3,9 +3,11 @@ package cmd import ( "fmt" "strings" + "github.com/spf13/cobra" - "github.com/zilliztech/milvus-backup/core/paramtable" "gopkg.in/yaml.v3" + + "github.com/zilliztech/milvus-backup/core/paramtable" ) var configCmd = &cobra.Command{ diff --git a/cmd/check.go b/cmd/check.go index 6b31a0ae..ec8b66a1 100644 --- a/cmd/check.go +++ b/cmd/check.go @@ -5,6 +5,7 @@ import ( "fmt" "github.com/spf13/cobra" + "github.com/zilliztech/milvus-backup/core" "github.com/zilliztech/milvus-backup/core/paramtable" ) @@ -20,7 +21,7 @@ var checkCmd = &cobra.Command{ params.Init() context := context.Background() - backupContext := core.CreateBackupContext(context, params) + backupContext := core.CreateBackupContext(context, ¶ms) resp := backupContext.Check(context) fmt.Println(resp) diff --git a/cmd/create.go b/cmd/create.go index 266ed2ce..a527023e 100644 --- a/cmd/create.go +++ b/cmd/create.go @@ -8,6 +8,7 @@ import ( jsoniter "github.com/json-iterator/go" "github.com/spf13/cobra" + "github.com/zilliztech/milvus-backup/core" "github.com/zilliztech/milvus-backup/core/paramtable" "github.com/zilliztech/milvus-backup/core/proto/backuppb" @@ -35,7 +36,7 @@ var createBackupCmd = &cobra.Command{ params.Init() context := context.Background() - backupContext := core.CreateBackupContext(context, params) + backupContext := core.CreateBackupContext(context, ¶ms) start := time.Now().Unix() var collectionNameArr []string diff --git a/cmd/delete.go b/cmd/delete.go index a0736876..7ea97ad8 100644 --- a/cmd/delete.go +++ b/cmd/delete.go @@ -5,6 +5,7 @@ import ( "fmt" "github.com/spf13/cobra" + "github.com/zilliztech/milvus-backup/core" "github.com/zilliztech/milvus-backup/core/paramtable" "github.com/zilliztech/milvus-backup/core/proto/backuppb" @@ -24,7 +25,7 @@ var deleteBackupCmd = &cobra.Command{ params.Init() context := context.Background() - backupContext := core.CreateBackupContext(context, params) + backupContext := core.CreateBackupContext(context, ¶ms) resp := backupContext.DeleteBackup(context, &backuppb.DeleteBackupRequest{ BackupName: deleteBackName, diff --git a/cmd/get.go b/cmd/get.go index 2828603c..33ca4f9a 100644 --- a/cmd/get.go +++ b/cmd/get.go @@ -6,6 +6,7 @@ import ( "fmt" "github.com/spf13/cobra" + "github.com/zilliztech/milvus-backup/core" "github.com/zilliztech/milvus-backup/core/paramtable" "github.com/zilliztech/milvus-backup/core/proto/backuppb" @@ -27,7 +28,7 @@ var getBackupCmd = &cobra.Command{ params.Init() context := context.Background() - backupContext := core.CreateBackupContext(context, params) + backupContext := core.CreateBackupContext(context, ¶ms) resp := backupContext.GetBackup(context, &backuppb.GetBackupRequest{ BackupName: getBackName, diff --git a/cmd/list.go b/cmd/list.go index 4b262427..eab6b4b5 100644 --- a/cmd/list.go +++ b/cmd/list.go @@ -5,6 +5,7 @@ import ( "fmt" "github.com/spf13/cobra" + "github.com/zilliztech/milvus-backup/core" "github.com/zilliztech/milvus-backup/core/paramtable" "github.com/zilliztech/milvus-backup/core/proto/backuppb" @@ -25,7 +26,7 @@ var listBackupCmd = &cobra.Command{ params.Init() context := context.Background() - backupContext := core.CreateBackupContext(context, params) + backupContext := core.CreateBackupContext(context, ¶ms) backups := backupContext.ListBackups(context, &backuppb.ListBackupsRequest{ CollectionName: collectionName, diff --git a/cmd/restore.go b/cmd/restore.go index 19d9108e..1167a729 100644 --- a/cmd/restore.go +++ b/cmd/restore.go @@ -8,6 +8,7 @@ import ( jsoniter "github.com/json-iterator/go" "github.com/spf13/cobra" + "github.com/zilliztech/milvus-backup/core" "github.com/zilliztech/milvus-backup/core/paramtable" "github.com/zilliztech/milvus-backup/core/proto/backuppb" @@ -43,7 +44,7 @@ var restoreBackupCmd = &cobra.Command{ params.Init() context := context.Background() - backupContext := core.CreateBackupContext(context, params) + backupContext := core.CreateBackupContext(context, ¶ms) log.Info("restore cmd input args", zap.Strings("args", args)) start := time.Now().Unix() var collectionNameArr []string diff --git a/cmd/root.go b/cmd/root.go index 93e4a985..a02e06df 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -23,7 +23,7 @@ var rootCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { Error(cmd, args, errors.New("unrecognized command")) }, - PersistentPreRun: func(cmd *cobra.Command, args []string){ + PersistentPreRun: func(cmd *cobra.Command, args []string) { setEnvs(yamlOverrides) }, } diff --git a/cmd/server.go b/cmd/server.go index c910ba57..16c4b012 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -7,6 +7,7 @@ import ( "strconv" "github.com/spf13/cobra" + "github.com/zilliztech/milvus-backup/core" "github.com/zilliztech/milvus-backup/core/paramtable" ) @@ -31,7 +32,7 @@ var serverCmd = &cobra.Command{ params.Init() context := context.Background() - server, err := core.NewServer(context, params, core.Port(port)) + server, err := core.NewServer(context, ¶ms, core.Port(port)) if err != nil { fmt.Errorf("fail to create backup server, %s", err.Error()) } diff --git a/core/backup_context.go b/core/backup_context.go index 7c76e951..5ead4fec 100644 --- a/core/backup_context.go +++ b/core/backup_context.go @@ -3,16 +3,15 @@ package core import ( "context" "encoding/json" - "errors" "fmt" "path" "sync" "time" - gomilvus "github.com/milvus-io/milvus-sdk-go/v2/client" "go.uber.org/zap" "go.uber.org/zap/zapcore" + "github.com/zilliztech/milvus-backup/core/client" "github.com/zilliztech/milvus-backup/core/paramtable" "github.com/zilliztech/milvus-backup/core/proto/backuppb" "github.com/zilliztech/milvus-backup/core/storage" @@ -40,10 +39,10 @@ type BackupContext struct { // lock to make sure only one backup is creating or restoring mu sync.Mutex started bool - params paramtable.BackupParams + params *paramtable.BackupParams // milvus client - milvusClient *MilvusClient + milvusClient client.Milvus // data storage client milvusStorageClient storage.ChunkManager @@ -60,35 +59,40 @@ type BackupContext struct { backupCollectionWorkerPool *common.WorkerPool backupCopyDataWorkerPool *common.WorkerPool - bulkinsertWorkerPools map[string]*common.WorkerPool + + bulkinsertWorkerPools sync.Map } -func CreateMilvusClient(ctx context.Context, params paramtable.BackupParams) (gomilvus.Client, error) { - milvusEndpoint := params.MilvusCfg.Address + ":" + params.MilvusCfg.Port - log.Debug("Start Milvus client", zap.String("endpoint", milvusEndpoint)) - var c gomilvus.Client - var err error - if params.MilvusCfg.AuthorizationEnabled && params.MilvusCfg.User != "" && params.MilvusCfg.Password != "" { - if params.MilvusCfg.TLSMode == 0 { - c, err = gomilvus.NewDefaultGrpcClientWithAuth(ctx, milvusEndpoint, params.MilvusCfg.User, params.MilvusCfg.Password) - } else if params.MilvusCfg.TLSMode == 1 || params.MilvusCfg.TLSMode == 2 { - c, err = gomilvus.NewDefaultGrpcClientWithTLSAuth(ctx, milvusEndpoint, params.MilvusCfg.User, params.MilvusCfg.Password) - } else { - log.Error("milvus.TLSMode is not illegal, support value 0, 1, 2") - return nil, errors.New("milvus.TLSMode is not illegal, support value 0, 1, 2") - } - } else { - c, err = gomilvus.NewGrpcClient(ctx, milvusEndpoint) +func CreateMilvusClient(ctx context.Context, params *paramtable.BackupParams) (client.Milvus, error) { + ep := params.MilvusCfg.Address + ":" + params.MilvusCfg.Port + log.Debug("Start Milvus client", zap.String("endpoint", ep)) + + var enableTLS bool + switch params.MilvusCfg.TLSMode { + case 0: + enableTLS = false + case 1, 2: + enableTLS = true + default: + log.Error("milvus.TLSMode is illegal, support value 0, 1, 2") } + + cfg := &client.MilvusConfig{ + Address: ep, + EnableTLS: enableTLS, + Username: params.MilvusCfg.User, + Password: params.MilvusCfg.Password, + } + cli, err := client.NewMilvus(cfg) if err != nil { - log.Error("failed to connect to milvus", zap.Error(err)) - return nil, err + log.Error("failed to create milvus client", zap.Error(err)) + return nil, fmt.Errorf("failed to create milvus client: %w", err) } - return c, nil + return cli, nil } // Deprecated -func createStorageClient(ctx context.Context, params paramtable.BackupParams) (storage.ChunkManager, error) { +func createStorageClient(ctx context.Context, params *paramtable.BackupParams) (storage.ChunkManager, error) { minioEndPoint := params.MinioCfg.Address + ":" + params.MinioCfg.Port log.Debug("Start minio client", zap.String("address", minioEndPoint), @@ -128,7 +132,7 @@ func (b *BackupContext) Close() error { return nil } -func CreateBackupContext(ctx context.Context, params paramtable.BackupParams) *BackupContext { +func CreateBackupContext(ctx context.Context, params *paramtable.BackupParams) *BackupContext { return &BackupContext{ ctx: ctx, params: params, @@ -136,21 +140,19 @@ func CreateBackupContext(ctx context.Context, params paramtable.BackupParams) *B backupBucketName: params.MinioCfg.BackupBucketName, milvusRootPath: params.MinioCfg.RootPath, backupRootPath: params.MinioCfg.BackupRootPath, - bulkinsertWorkerPools: make(map[string]*common.WorkerPool), + bulkinsertWorkerPools: sync.Map{}, meta: newMetaManager(), } } -func (b *BackupContext) getMilvusClient() *MilvusClient { +func (b *BackupContext) getMilvusClient() client.Milvus { if b.milvusClient == nil { milvusClient, err := CreateMilvusClient(b.ctx, b.params) if err != nil { log.Error("failed to initial milvus client", zap.Error(err)) panic(err) } - b.milvusClient = &MilvusClient{ - client: milvusClient, - } + b.milvusClient = milvusClient } return b.milvusClient } @@ -281,23 +283,26 @@ func (b *BackupContext) getCopyDataWorkerPool() *common.WorkerPool { } func (b *BackupContext) getRestoreWorkerPool(id string) *common.WorkerPool { - if pool, exist := b.bulkinsertWorkerPools[id]; exist { - return pool + // TODO DO NOT use pool of worker pool + if pool, exist := b.bulkinsertWorkerPools.Load(id); exist { + return pool.(*common.WorkerPool) } else { wp, err := common.NewWorkerPool(b.ctx, b.params.BackupCfg.RestoreParallelism, RPS) if err != nil { log.Error("failed to initial copy data worker pool", zap.Error(err)) panic(err) } - b.bulkinsertWorkerPools[id] = wp - b.bulkinsertWorkerPools[id].Start() - return b.bulkinsertWorkerPools[id] + wp.Start() + b.bulkinsertWorkerPools.Store(id, wp) + + return wp } } func (b *BackupContext) cleanRestoreWorkerPool(id string) { - if _, exist := b.bulkinsertWorkerPools[id]; exist { - delete(b.bulkinsertWorkerPools, id) + // TODO DO NOT use pool of worker pool + if _, exist := b.bulkinsertWorkerPools.Load(id); exist { + b.bulkinsertWorkerPools.Delete(id) } } diff --git a/core/backup_context_test.go b/core/backup_context_test.go index 773df830..6a5875bf 100644 --- a/core/backup_context_test.go +++ b/core/backup_context_test.go @@ -7,47 +7,48 @@ import ( "testing" "github.com/stretchr/testify/assert" + "go.uber.org/zap" + "github.com/zilliztech/milvus-backup/core/paramtable" "github.com/zilliztech/milvus-backup/core/proto/backuppb" "github.com/zilliztech/milvus-backup/core/utils" "github.com/zilliztech/milvus-backup/internal/log" - "go.uber.org/zap" ) func TestCreateBackup(t *testing.T) { var params paramtable.BackupParams params.Init() - context := context.Background() - backup := CreateBackupContext(context, params) + ctx := context.Background() + backup := CreateBackupContext(ctx, ¶ms) req := &backuppb.CreateBackupRequest{ BackupName: "test_21", //CollectionNames: []string{"hello_milvus", "hello_milvus2"}, DbCollections: utils.WrapDBCollections(""), } - backup.CreateBackup(context, req) + backup.CreateBackup(ctx, req) } func TestCheck(t *testing.T) { var params paramtable.BackupParams params.Init() - context := context.Background() - backup := CreateBackupContext(context, params) + ctx := context.Background() + backup := CreateBackupContext(ctx, ¶ms) - res := backup.Check(context) + res := backup.Check(ctx) println(res) } func TestListBackups(t *testing.T) { var params paramtable.BackupParams params.Init() - context := context.Background() - backupContext := CreateBackupContext(context, params) + ctx := context.Background() + backupContext := CreateBackupContext(ctx, ¶ms) - backupLists := backupContext.ListBackups(context, &backuppb.ListBackupsRequest{}) + backupLists := backupContext.ListBackups(ctx, &backuppb.ListBackupsRequest{}) assert.Equal(t, backupLists.GetCode(), backuppb.ResponseCode_Success) - backupListsWithCollection := backupContext.ListBackups(context, &backuppb.ListBackupsRequest{ + backupListsWithCollection := backupContext.ListBackups(ctx, &backuppb.ListBackupsRequest{ //CollectionName: "hello_milvus", }) @@ -68,10 +69,10 @@ func TestListBackups(t *testing.T) { func TestGetBackup(t *testing.T) { var params paramtable.BackupParams params.Init() - context := context.Background() - backupContext := CreateBackupContext(context, params) + ctx := context.Background() + backupContext := CreateBackupContext(ctx, ¶ms) - backup := backupContext.GetBackup(context, &backuppb.GetBackupRequest{ + backup := backupContext.GetBackup(ctx, &backuppb.GetBackupRequest{ BackupName: "mybackup", }) assert.Equal(t, backup.GetCode(), backuppb.ResponseCode_Success) @@ -80,15 +81,15 @@ func TestGetBackup(t *testing.T) { func TestDeleteBackup(t *testing.T) { var params paramtable.BackupParams params.Init() - context := context.Background() - backupContext := CreateBackupContext(context, params) + ctx := context.Background() + backupContext := CreateBackupContext(ctx, ¶ms) - backup := backupContext.DeleteBackup(context, &backuppb.DeleteBackupRequest{ + backup := backupContext.DeleteBackup(ctx, &backuppb.DeleteBackupRequest{ BackupName: "test_backup6", }) assert.Equal(t, backup.GetCode(), backuppb.ResponseCode_Success) - backupLists := backupContext.ListBackups(context, &backuppb.ListBackupsRequest{}) + backupLists := backupContext.ListBackups(ctx, &backuppb.ListBackupsRequest{}) assert.Equal(t, backupLists.GetCode(), backuppb.ResponseCode_Success) assert.Equal(t, 0, len(backupLists.GetData())) @@ -98,19 +99,19 @@ func TestDeleteBackup(t *testing.T) { func TestCreateBackupWithNoName(t *testing.T) { var params paramtable.BackupParams params.Init() - context := context.Background() - backup := CreateBackupContext(context, params) + ctx := context.Background() + backup := CreateBackupContext(ctx, ¶ms) randBackupName := "" req := &backuppb.CreateBackupRequest{ BackupName: randBackupName, } - resp := backup.CreateBackup(context, req) + resp := backup.CreateBackup(ctx, req) assert.Equal(t, backuppb.ResponseCode_Success, resp.GetCode()) // clean - backup.DeleteBackup(context, &backuppb.DeleteBackupRequest{ + backup.DeleteBackup(ctx, &backuppb.DeleteBackupRequest{ BackupName: randBackupName, }) } @@ -118,8 +119,8 @@ func TestCreateBackupWithNoName(t *testing.T) { func TestCreateBackupWithUnexistCollection(t *testing.T) { var params paramtable.BackupParams params.Init() - context := context.Background() - backup := CreateBackupContext(context, params) + ctx := context.Background() + backup := CreateBackupContext(ctx, ¶ms) randBackupName := fmt.Sprintf("test_%d", rand.Int()) @@ -127,12 +128,12 @@ func TestCreateBackupWithUnexistCollection(t *testing.T) { BackupName: randBackupName, CollectionNames: []string{"not_exist"}, } - resp := backup.CreateBackup(context, req) + resp := backup.CreateBackup(ctx, req) assert.Equal(t, backuppb.ResponseCode_Fail, resp.GetCode()) assert.Equal(t, "request backup collection does not exist: not_exist", resp.GetMsg()) // clean - backup.DeleteBackup(context, &backuppb.DeleteBackupRequest{ + backup.DeleteBackup(ctx, &backuppb.DeleteBackupRequest{ BackupName: randBackupName, }) } @@ -140,26 +141,26 @@ func TestCreateBackupWithUnexistCollection(t *testing.T) { func TestCreateBackupWithDuplicateName(t *testing.T) { var params paramtable.BackupParams params.Init() - context := context.Background() - backup := CreateBackupContext(context, params) + ctx := context.Background() + backup := CreateBackupContext(ctx, ¶ms) randBackupName := fmt.Sprintf("test_%d", rand.Int()) req := &backuppb.CreateBackupRequest{ BackupName: randBackupName, } - resp := backup.CreateBackup(context, req) + resp := backup.CreateBackup(ctx, req) assert.Equal(t, backuppb.ResponseCode_Success, resp.GetCode()) req2 := &backuppb.CreateBackupRequest{ BackupName: randBackupName, } - resp2 := backup.CreateBackup(context, req2) + resp2 := backup.CreateBackup(ctx, req2) assert.Equal(t, backuppb.ResponseCode_Fail, resp2.GetCode()) assert.Equal(t, fmt.Sprintf("backup already exist with the name: %s", req2.GetBackupName()), resp2.GetMsg()) // clean - backup.DeleteBackup(context, &backuppb.DeleteBackupRequest{ + backup.DeleteBackup(ctx, &backuppb.DeleteBackupRequest{ BackupName: randBackupName, }) } @@ -167,19 +168,19 @@ func TestCreateBackupWithDuplicateName(t *testing.T) { func TestCreateBackupWithIllegalName(t *testing.T) { var params paramtable.BackupParams params.Init() - context := context.Background() - backup := CreateBackupContext(context, params) + ctx := context.Background() + backup := CreateBackupContext(ctx, ¶ms) randBackupName := "dahgg$%123" req := &backuppb.CreateBackupRequest{ BackupName: randBackupName, } - resp := backup.CreateBackup(context, req) + resp := backup.CreateBackup(ctx, req) assert.Equal(t, backuppb.ResponseCode_Fail, resp.GetCode()) // clean - backup.DeleteBackup(context, &backuppb.DeleteBackupRequest{ + backup.DeleteBackup(ctx, &backuppb.DeleteBackupRequest{ BackupName: randBackupName, }) } @@ -187,24 +188,24 @@ func TestCreateBackupWithIllegalName(t *testing.T) { func TestGetBackupAfterCreate(t *testing.T) { var params paramtable.BackupParams params.Init() - context := context.Background() - backupContext := CreateBackupContext(context, params) + ctx := context.Background() + backupContext := CreateBackupContext(ctx, ¶ms) randBackupName := fmt.Sprintf("test_%d", rand.Int()) req := &backuppb.CreateBackupRequest{ BackupName: randBackupName, } - resp := backupContext.CreateBackup(context, req) + resp := backupContext.CreateBackup(ctx, req) assert.Equal(t, backuppb.ResponseCode_Success, resp.GetCode()) - backup := backupContext.GetBackup(context, &backuppb.GetBackupRequest{ + backup := backupContext.GetBackup(ctx, &backuppb.GetBackupRequest{ BackupName: randBackupName, }) assert.Equal(t, backuppb.ResponseCode_Success, backup.GetCode()) // clean - backupContext.DeleteBackup(context, &backuppb.DeleteBackupRequest{ + backupContext.DeleteBackup(ctx, &backuppb.DeleteBackupRequest{ BackupName: randBackupName, }) } @@ -212,31 +213,31 @@ func TestGetBackupAfterCreate(t *testing.T) { func TestGetBackupFaultBackup(t *testing.T) { var params paramtable.BackupParams params.Init() - context := context.Background() - backupContext := CreateBackupContext(context, params) + ctx := context.Background() + backupContext := CreateBackupContext(ctx, ¶ms) backupContext.Start() randBackupName := fmt.Sprintf("test_%d", rand.Int()) - backupContext.DeleteBackup(context, &backuppb.DeleteBackupRequest{ + backupContext.DeleteBackup(ctx, &backuppb.DeleteBackupRequest{ BackupName: randBackupName, }) req := &backuppb.CreateBackupRequest{ BackupName: randBackupName, } - resp := backupContext.CreateBackup(context, req) + resp := backupContext.CreateBackup(ctx, req) assert.Equal(t, backuppb.ResponseCode_Success, resp.GetCode()) - backupContext.getMilvusStorageClient().RemoveWithPrefix(context, params.MinioCfg.BackupBucketName, BackupMetaPath(params.MinioCfg.BackupRootPath, resp.GetData().GetName())) + backupContext.getMilvusStorageClient().RemoveWithPrefix(ctx, params.MinioCfg.BackupBucketName, BackupMetaPath(params.MinioCfg.BackupRootPath, resp.GetData().GetName())) - backup := backupContext.GetBackup(context, &backuppb.GetBackupRequest{ + backup := backupContext.GetBackup(ctx, &backuppb.GetBackupRequest{ BackupName: randBackupName, }) assert.Equal(t, backuppb.ResponseCode_Fail, backup.GetCode()) // clean - backupContext.DeleteBackup(context, &backuppb.DeleteBackupRequest{ + backupContext.DeleteBackup(ctx, &backuppb.DeleteBackupRequest{ BackupName: randBackupName, }) } @@ -244,11 +245,11 @@ func TestGetBackupFaultBackup(t *testing.T) { func TestGetBackupUnexistBackupName(t *testing.T) { var params paramtable.BackupParams params.Init() - context := context.Background() - backupContext := CreateBackupContext(context, params) + ctx := context.Background() + backupContext := CreateBackupContext(ctx, ¶ms) backupContext.Start() - backup := backupContext.GetBackup(context, &backuppb.GetBackupRequest{ + backup := backupContext.GetBackup(ctx, &backuppb.GetBackupRequest{ BackupName: "un_exist", }) assert.Equal(t, backuppb.ResponseCode_Fail, backup.GetCode()) @@ -257,13 +258,13 @@ func TestGetBackupUnexistBackupName(t *testing.T) { func TestRestoreBackup(t *testing.T) { var params paramtable.BackupParams params.Init() - context := context.Background() - backup := CreateBackupContext(context, params) + ctx := context.Background() + backup := CreateBackupContext(ctx, ¶ms) backup.Start() backupName := "demo" //fmt.Sprintf("test_%d", rand.Int()) - restoreResp := backup.RestoreBackup(context, &backuppb.RestoreBackupRequest{ + restoreResp := backup.RestoreBackup(ctx, &backuppb.RestoreBackupRequest{ BackupName: backupName, DbCollections: utils.WrapDBCollections("{\"default\":[]}"), }) @@ -273,8 +274,8 @@ func TestRestoreBackup(t *testing.T) { func TestCreateAndRestoreBackup(t *testing.T) { var params paramtable.BackupParams params.Init() - context := context.Background() - backup := CreateBackupContext(context, params) + ctx := context.Background() + backup := CreateBackupContext(ctx, ¶ms) backup.Start() randBackupName := "test" //fmt.Sprintf("test_%d", rand.Int()) @@ -282,23 +283,23 @@ func TestCreateAndRestoreBackup(t *testing.T) { req := &backuppb.CreateBackupRequest{ BackupName: randBackupName, } - resp := backup.CreateBackup(context, req) + resp := backup.CreateBackup(ctx, req) assert.Equal(t, backuppb.ResponseCode_Success, resp.GetCode()) getReq := &backuppb.GetBackupRequest{ BackupName: randBackupName, } - getResp := backup.GetBackup(context, getReq) + getResp := backup.GetBackup(ctx, getReq) assert.Equal(t, backuppb.ResponseCode_Success, getResp.GetCode()) - restoreResp := backup.RestoreBackup(context, &backuppb.RestoreBackupRequest{ + restoreResp := backup.RestoreBackup(ctx, &backuppb.RestoreBackupRequest{ BackupName: randBackupName, CollectionSuffix: "_recover", }) log.Info("restore backup", zap.Any("resp", restoreResp)) //clean - backup.DeleteBackup(context, &backuppb.DeleteBackupRequest{ + backup.DeleteBackup(ctx, &backuppb.DeleteBackupRequest{ BackupName: randBackupName, }) } diff --git a/core/backup_impl_create_backup.go b/core/backup_impl_create_backup.go index 448e2a73..a3c74c31 100644 --- a/core/backup_impl_create_backup.go +++ b/core/backup_impl_create_backup.go @@ -15,7 +15,8 @@ import ( "github.com/golang/protobuf/proto" jsoniter "github.com/json-iterator/go" - "github.com/milvus-io/milvus-sdk-go/v2/entity" + "github.com/milvus-io/milvus-proto/go-api/v2/commonpb" + "github.com/milvus-io/milvus-proto/go-api/v2/milvuspb" "github.com/samber/lo" "go.uber.org/zap" @@ -25,6 +26,15 @@ import ( "github.com/zilliztech/milvus-backup/internal/util/retry" ) +func conv2BakKV(kv []*commonpb.KeyValuePair) []*backuppb.KeyValuePair { + return lo.Map(kv, func(item *commonpb.KeyValuePair, _ int) *backuppb.KeyValuePair { + return &backuppb.KeyValuePair{ + Key: item.Key, + Value: item.Value, + } + }) +} + func (b *BackupContext) CreateBackup(ctx context.Context, request *backuppb.CreateBackupRequest) *backuppb.BackupInfoResponse { if request.GetRequestId() == "" { request.RequestId = utils.UUID() @@ -151,14 +161,14 @@ func (b *BackupContext) parseBackupCollections(request *backuppb.CreateBackupReq } for db, collections := range dbCollections { if len(collections) == 0 { - collections, err := b.getMilvusClient().ListCollections(b.ctx, db) + resp, err := b.getMilvusClient().ListCollections(b.ctx, db) if err != nil { log.Error("fail in ListCollections", zap.Error(err)) return nil, err } - for _, coll := range collections { - log.Debug("Add collection to toBackupCollections", zap.String("db", db), zap.String("collection", coll.Name)) - toBackupCollections = append(toBackupCollections, collectionStruct{db, coll.Name}) + for _, coll := range resp.CollectionNames { + log.Debug("Add collection to toBackupCollections", zap.String("db", db), zap.String("collection", coll)) + toBackupCollections = append(toBackupCollections, collectionStruct{db, coll}) } } else { for _, coll := range collections { @@ -174,15 +184,15 @@ func (b *BackupContext) parseBackupCollections(request *backuppb.CreateBackupReq dbs, err := b.getMilvusClient().ListDatabases(b.ctx) if err != nil { // compatible to milvus under v2.2.8 without database support - if strings.Contains(err.Error(), "feature not supported") { + if !b.getMilvusClient().SupportMultiDatabase() { // default database only - collections, err := b.getMilvusClient().ListCollections(b.ctx, "default") + resp, err := b.getMilvusClient().ListCollections(b.ctx, "default") if err != nil { log.Error("fail in ListCollections", zap.Error(err)) return nil, err } - for _, coll := range collections { - toBackupCollections = append(toBackupCollections, collectionStruct{"default", coll.Name}) + for _, coll := range resp.CollectionNames { + toBackupCollections = append(toBackupCollections, collectionStruct{"default", coll}) } } else { log.Error("fail in ListDatabases", zap.Error(err)) @@ -190,13 +200,13 @@ func (b *BackupContext) parseBackupCollections(request *backuppb.CreateBackupReq } } else { for _, db := range dbs { - collections, err := b.getMilvusClient().ListCollections(b.ctx, db.Name) + resp, err := b.getMilvusClient().ListCollections(b.ctx, db) if err != nil { log.Error("fail in ListCollections", zap.Error(err)) return nil, err } - for _, coll := range collections { - toBackupCollections = append(toBackupCollections, collectionStruct{db.Name, coll.Name}) + for _, coll := range resp.CollectionNames { + toBackupCollections = append(toBackupCollections, collectionStruct{db, coll}) } } } @@ -230,26 +240,27 @@ func (b *BackupContext) parseBackupCollections(request *backuppb.CreateBackupReq func (b *BackupContext) backupCollectionPrepare(ctx context.Context, backupInfo *backuppb.BackupInfo, collection collectionStruct, force bool) error { log.Info("start backup collection", zap.String("db", collection.db), zap.String("collection", collection.collectionName)) // list collection result is not complete - completeCollection, err := b.getMilvusClient().DescribeCollection(b.ctx, collection.db, collection.collectionName) + descResp, err := b.getMilvusClient().DescribeCollection(b.ctx, collection.db, collection.collectionName) if err != nil { log.Error("fail in DescribeCollection", zap.Error(err)) return err } - fields := make([]*backuppb.FieldSchema, 0) - for _, field := range completeCollection.Schema.Fields { + fields := make([]*backuppb.FieldSchema, 0, len(descResp.Schema.Fields)) + for _, field := range descResp.Schema.Fields { fieldBak := &backuppb.FieldSchema{ - FieldID: field.ID, - Name: field.Name, - IsPrimaryKey: field.PrimaryKey, - Description: field.Description, - AutoID: field.AutoID, - DataType: backuppb.DataType(field.DataType), - TypeParams: utils.MapToKVPair(field.TypeParams), - IndexParams: utils.MapToKVPair(field.IndexParams), - IsDynamic: field.IsDynamic, - IsPartitionKey: field.IsPartitionKey, - Nullable: field.Nullable, - ElementType: backuppb.DataType(field.ElementType), + FieldID: field.FieldID, + Name: field.Name, + IsPrimaryKey: field.IsPrimaryKey, + Description: field.Description, + AutoID: field.AutoID, + DataType: backuppb.DataType(field.DataType), + TypeParams: conv2BakKV(field.TypeParams), + IndexParams: conv2BakKV(field.IndexParams), + IsDynamic: field.IsDynamic, + IsPartitionKey: field.IsPartitionKey, + Nullable: field.Nullable, + ElementType: backuppb.DataType(field.ElementType), + IsFunctionOutput: field.IsFunctionOutput, } defaultValue := field.DefaultValue if defaultValue != nil { @@ -261,29 +272,41 @@ func (b *BackupContext) backupCollectionPrepare(ctx context.Context, backupInfo } fields = append(fields, fieldBak) } + functions := make([]*backuppb.FunctionSchema, 0, len(descResp.Schema.Functions)) + for _, function := range descResp.Schema.Functions { + functionBak := &backuppb.FunctionSchema{ + Name: function.Name, + Id: function.Id, + Description: function.Description, + Type: backuppb.FunctionType(function.Type), + InputFieldNames: function.InputFieldNames, + InputFieldIds: function.InputFieldIds, + OutputFieldNames: function.OutputFieldNames, + OutputFieldIds: function.OutputFieldIds, + Params: conv2BakKV(function.Params), + } + functions = append(functions, functionBak) + } schema := &backuppb.CollectionSchema{ - Name: completeCollection.Schema.CollectionName, - Description: completeCollection.Schema.Description, - AutoID: completeCollection.Schema.AutoID, + Name: descResp.Schema.Name, + Description: descResp.Schema.Description, + AutoID: descResp.Schema.AutoID, Fields: fields, - EnableDynamicField: completeCollection.Schema.EnableDynamicField, + EnableDynamicField: descResp.Schema.EnableDynamicField, + Functions: functions, } indexInfos := make([]*backuppb.IndexInfo, 0) - indexDict := make(map[string]*backuppb.IndexInfo, 0) - log.Info("try to get index", - zap.String("collection_name", completeCollection.Name)) - for _, field := range completeCollection.Schema.Fields { - //if field.DataType != entity.FieldTypeBinaryVector && field.DataType != entity.FieldTypeFloatVector { - // continue - //} - fieldIndex, err := b.getMilvusClient().DescribeIndex(b.ctx, collection.db, completeCollection.Name, field.Name) + indexDict := make(map[string]*backuppb.IndexInfo) + log.Info("try to get index", zap.String("collection_name", descResp.CollectionName)) + for _, field := range descResp.Schema.Fields { + fieldIndex, err := b.getMilvusClient().DescribeIndex(b.ctx, collection.db, descResp.CollectionName, field.Name) if err != nil { if strings.Contains(err.Error(), "index not found") || strings.HasPrefix(err.Error(), "index doesn't exist") { // todo log.Info("field has no index", - zap.String("collection_name", completeCollection.Name), + zap.String("collection_name", descResp.CollectionName), zap.String("field_name", field.Name)) continue } else { @@ -292,21 +315,24 @@ func (b *BackupContext) backupCollectionPrepare(ctx context.Context, backupInfo } } log.Info("field index", - zap.String("collection_name", completeCollection.Name), + zap.String("collection_name", descResp.CollectionName), zap.String("field_name", field.Name), zap.Any("index info", fieldIndex)) for _, index := range fieldIndex { - if _, ok := indexDict[index.Name()]; ok { + if _, ok := indexDict[index.IndexName]; ok { continue } else { + params := lo.SliceToMap(index.Params, func(item *commonpb.KeyValuePair) (string, string) { + return item.Key, item.Value + }) indexInfo := &backuppb.IndexInfo{ FieldName: field.Name, - IndexName: index.Name(), - IndexType: string(index.IndexType()), - Params: index.Params(), + IndexName: index.IndexName, + IndexType: params["index_type"], + Params: params, } indexInfos = append(indexInfos, indexInfo) - indexDict[index.Name()] = indexInfo + indexDict[index.IndexName] = indexInfo } } } @@ -315,18 +341,18 @@ func (b *BackupContext) backupCollectionPrepare(ctx context.Context, backupInfo Id: backupInfo.Id, StateCode: backuppb.BackupTaskStateCode_BACKUP_INITIAL, StartTime: time.Now().Unix(), - CollectionId: completeCollection.ID, + CollectionId: descResp.CollectionID, DbName: collection.db, - CollectionName: completeCollection.Name, + CollectionName: descResp.CollectionName, Schema: schema, - ShardsNum: completeCollection.ShardNum, - ConsistencyLevel: backuppb.ConsistencyLevel(completeCollection.ConsistencyLevel), + ShardsNum: descResp.ShardsNum, + ConsistencyLevel: backuppb.ConsistencyLevel(descResp.ConsistencyLevel), HasIndex: len(indexInfos) > 0, IndexInfos: indexInfos, } b.meta.AddCollection(collectionBackup) - partitions, err := b.getMilvusClient().ShowPartitions(b.ctx, collectionBackup.GetDbName(), collectionBackup.GetCollectionName()) + showPartResp, err := b.getMilvusClient().ShowPartitions(b.ctx, collectionBackup.GetDbName(), collectionBackup.GetCollectionName()) if err != nil { log.Error("fail to ShowPartitions", zap.Error(err)) return err @@ -340,37 +366,37 @@ func (b *BackupContext) backupCollectionPrepare(ctx context.Context, backupInfo } var collectionLoadState string - partitionLoadStates := make(map[string]string, 0) + partitionLoadStates := make(map[string]string, len(showPartResp.PartitionNames)) if collectionLoadProgress == 0 { collectionLoadState = LoadState_NotLoad - for _, partition := range partitions { - partitionLoadStates[partition.Name] = LoadState_NotLoad + for _, partitionName := range showPartResp.PartitionNames { + partitionLoadStates[partitionName] = LoadState_NotLoad } } else if collectionLoadProgress == 100 { collectionLoadState = LoadState_Loaded - for _, partition := range partitions { - partitionLoadStates[partition.Name] = LoadState_Loaded + for _, partitionName := range showPartResp.PartitionNames { + partitionLoadStates[partitionName] = LoadState_Loaded } } else { collectionLoadState = LoadState_Loading - for _, partition := range partitions { - loadProgress, err := b.getMilvusClient().GetLoadingProgress(ctx, collectionBackup.GetDbName(), collectionBackup.GetCollectionName(), []string{partition.Name}) + for _, partitionName := range showPartResp.PartitionNames { + loadProgress, err := b.getMilvusClient().GetLoadingProgress(ctx, collectionBackup.GetDbName(), collectionBackup.GetCollectionName(), []string{partitionName}) if err != nil { log.Error("fail to GetLoadingProgress of partition", zap.Error(err)) return err } if loadProgress == 0 { - partitionLoadStates[partition.Name] = LoadState_NotLoad + partitionLoadStates[partitionName] = LoadState_NotLoad } else if loadProgress == 100 { - partitionLoadStates[partition.Name] = LoadState_Loaded + partitionLoadStates[partitionName] = LoadState_Loaded } else { - partitionLoadStates[partition.Name] = LoadState_Loading + partitionLoadStates[partitionName] = LoadState_Loading } } } // fill segments - unfilledSegments := make([]*entity.Segment, 0) + unfilledSegments := make([]*milvuspb.PersistentSegmentInfo, 0) if !force { // Flush segmentEntitiesBeforeFlush, err := b.getMilvusClient().GetPersistentSegmentInfo(ctx, collectionBackup.GetDbName(), collectionBackup.GetCollectionName()) @@ -381,7 +407,7 @@ func (b *BackupContext) backupCollectionPrepare(ctx context.Context, backupInfo zap.String("databaseName", collectionBackup.GetDbName()), zap.String("collectionName", collectionBackup.GetCollectionName()), zap.Int("segmentNumBeforeFlush", len(segmentEntitiesBeforeFlush))) - newSealedSegmentIDs, flushedSegmentIDs, timeOfSeal, channelCPs, err := b.getMilvusClient().FlushV2(ctx, collectionBackup.GetDbName(), collectionBackup.GetCollectionName(), false) + flushResp, err := b.getMilvusClient().Flush(ctx, collectionBackup.GetDbName(), collectionBackup.GetCollectionName()) if err != nil { log.Error("fail to flush the collection", zap.String("databaseName", collectionBackup.GetDbName()), @@ -393,8 +419,8 @@ func (b *BackupContext) backupCollectionPrepare(ctx context.Context, backupInfo //collectionBackup.BackupTimestamp = utils.ComposeTS(timeOfSeal, 0) channelCheckpoints := make(map[string]string, 0) var maxChannelBackupTimeStamp uint64 = 0 - for vch, checkpoint := range channelCPs { - channelCheckpoints[vch] = utils.Base64MsgPosition(&checkpoint) + for vch, checkpoint := range flushResp.GetChannelCps() { + channelCheckpoints[vch] = utils.Base64MsgPosition(checkpoint) if maxChannelBackupTimeStamp == 0 { maxChannelBackupTimeStamp = checkpoint.GetTimestamp() } else if maxChannelBackupTimeStamp < checkpoint.GetTimestamp() { @@ -404,27 +430,27 @@ func (b *BackupContext) backupCollectionPrepare(ctx context.Context, backupInfo b.meta.UpdateCollection(collectionBackup.Id, collectionBackup.CollectionId, setCollectionChannelCheckpoints(channelCheckpoints), setCollectionBackupTimestamp(maxChannelBackupTimeStamp), - setCollectionBackupPhysicalTimestamp(uint64(timeOfSeal))) + setCollectionBackupPhysicalTimestamp(uint64(flushResp.GetCollSealTimes()[collectionBackup.GetCollectionName()]))) log.Info("flush segments", zap.String("databaseName", collectionBackup.GetDbName()), zap.String("collectionName", collectionBackup.GetCollectionName()), - zap.Int64s("newSealedSegmentIDs", newSealedSegmentIDs), - zap.Int64s("flushedSegmentIDs", flushedSegmentIDs), - zap.Int64("timeOfSeal", timeOfSeal), + zap.Int64s("newSealedSegmentIDs", flushResp.GetCollSegIDs()[collectionBackup.GetCollectionName()].GetData()), + zap.Int64s("flushedSegmentIDs", flushResp.GetFlushCollSegIDs()[collectionBackup.GetCollectionName()].GetData()), + zap.Uint64("timeOfSeal", uint64(flushResp.GetCollSealTimes()[collectionBackup.GetCollectionName()])), zap.Uint64("BackupTimestamp", collectionBackup.BackupTimestamp), - zap.Any("channelCPs", channelCPs)) + zap.Any("channelCPs", flushResp.GetChannelCps())) segmentEntitiesAfterFlush, err := b.getMilvusClient().GetPersistentSegmentInfo(ctx, collectionBackup.GetDbName(), collectionBackup.GetCollectionName()) if err != nil { return err } - segmentIDsBeforeFlush := lo.Map(segmentEntitiesBeforeFlush, func(segment *entity.Segment, _ int) int64 { return segment.ID }) - segmentIDsAfterFlush := lo.Map(segmentEntitiesAfterFlush, func(segment *entity.Segment, _ int) int64 { return segment.ID }) - newL0Segments := lo.Filter(segmentEntitiesAfterFlush, func(segment *entity.Segment, _ int) bool { - return !lo.Contains(segmentIDsBeforeFlush, segment.ID) && segment.NumRows == 0 + segmentIDsBeforeFlush := lo.Map(segmentEntitiesBeforeFlush, func(segment *milvuspb.PersistentSegmentInfo, _ int) int64 { return segment.SegmentID }) + segmentIDsAfterFlush := lo.Map(segmentEntitiesAfterFlush, func(segment *milvuspb.PersistentSegmentInfo, _ int) int64 { return segment.SegmentID }) + newL0Segments := lo.Filter(segmentEntitiesAfterFlush, func(segment *milvuspb.PersistentSegmentInfo, _ int) bool { + return !lo.Contains(segmentIDsBeforeFlush, segment.SegmentID) && segment.Level == commonpb.SegmentLevel_L0 }) - newL0SegmentsIDs := lo.Map(newL0Segments, func(segment *entity.Segment, _ int) int64 { return segment.ID }) + newL0SegmentsIDs := lo.Map(newL0Segments, func(segment *milvuspb.PersistentSegmentInfo, _ int) int64 { return segment.SegmentID }) log.Info("GetPersistentSegmentInfo after flush from milvus", zap.String("databaseName", collectionBackup.GetDbName()), @@ -452,7 +478,7 @@ func (b *BackupContext) backupCollectionPrepare(ctx context.Context, backupInfo } } - newSegIDs := lo.Map(unfilledSegments, func(segment *entity.Segment, _ int) int64 { return segment.ID }) + newSegIDs := lo.Map(unfilledSegments, func(segment *milvuspb.PersistentSegmentInfo, _ int) int64 { return segment.SegmentID }) log.Debug("Finished fill segment", zap.String("databaseName", collectionBackup.GetDbName()), zap.String("collectionName", collectionBackup.GetCollectionName()), @@ -462,28 +488,28 @@ func (b *BackupContext) backupCollectionPrepare(ctx context.Context, backupInfo for _, v := range unfilledSegments { segment := v segmentInfo := &backuppb.SegmentBackupInfo{ - SegmentId: segment.ID, + SegmentId: segment.SegmentID, CollectionId: segment.CollectionID, - PartitionId: segment.ParititionID, + PartitionId: segment.PartitionID, NumOfRows: segment.NumRows, } b.meta.AddSegment(segmentInfo) - partSegInfoMap[segment.ParititionID] = append(partSegInfoMap[segment.ParititionID], segmentInfo) + partSegInfoMap[segment.PartitionID] = append(partSegInfoMap[segment.PartitionID], segmentInfo) } - for _, partition := range partitions { - partitionSegments := partSegInfoMap[partition.ID] + for i, partitionID := range showPartResp.PartitionIDs { + partitionSegments := partSegInfoMap[partitionID] var size int64 = 0 for _, seg := range partitionSegments { size += seg.GetSize() } partitionBackupInfo := &backuppb.PartitionBackupInfo{ - PartitionId: partition.ID, - PartitionName: partition.Name, + PartitionId: partitionID, + PartitionName: showPartResp.PartitionNames[i], CollectionId: collectionBackup.GetCollectionId(), - SegmentBackups: partSegInfoMap[partition.ID], + SegmentBackups: partSegInfoMap[partitionID], Size: size, - LoadState: partitionLoadStates[partition.Name], + LoadState: partitionLoadStates[showPartResp.PartitionNames[i]], } b.meta.AddPartition(partitionBackupInfo) } @@ -1019,24 +1045,24 @@ func (b *BackupContext) fillSegmentBackupInfo(ctx context.Context, segmentBackup func (b *BackupContext) backupRBAC(ctx context.Context, backupInfo *backuppb.BackupInfo) error { log.Info("backup RBAC") - rbacMeta, err := b.getMilvusClient().BackupRBAC(ctx) + resp, err := b.getMilvusClient().BackupRBAC(ctx) if err != nil { log.Error("fail in BackupMeta", zap.Error(err)) return err } + rbacMeta := resp.RBACMeta - users := make([]*backuppb.UserInfo, 0) - roles := make([]*backuppb.RoleEntity, 0) - grants := make([]*backuppb.GrantEntity, 0) - + users := make([]*backuppb.UserInfo, 0, len(rbacMeta.Users)) + roles := make([]*backuppb.RoleEntity, 0, len(rbacMeta.Roles)) + grants := make([]*backuppb.GrantEntity, 0, len(rbacMeta.Grants)) for _, user := range rbacMeta.Users { - roles := lo.Map(user.Roles, func(role string, index int) *backuppb.RoleEntity { - return &backuppb.RoleEntity{Name: role} + rs := lo.Map(user.Roles, func(role *milvuspb.RoleEntity, index int) *backuppb.RoleEntity { + return &backuppb.RoleEntity{Name: role.Name} }) userP := &backuppb.UserInfo{ - User: user.Name, + User: user.User, Password: user.Password, - Roles: roles, + Roles: rs, } users = append(users, userP) } @@ -1048,21 +1074,21 @@ func (b *BackupContext) backupRBAC(ctx context.Context, backupInfo *backuppb.Bac roles = append(roles, roleP) } - for _, roleGrant := range rbacMeta.RoleGrants { + for _, roleGrant := range rbacMeta.Grants { roleGrantP := &backuppb.GrantEntity{ Role: &backuppb.RoleEntity{ - Name: roleGrant.RoleName, + Name: roleGrant.Role.Name, }, Object: &backuppb.ObjectEntity{ - Name: roleGrant.Object, + Name: roleGrant.Object.Name, }, ObjectName: roleGrant.ObjectName, Grantor: &backuppb.GrantorEntity{ User: &backuppb.UserEntity{ - Name: roleGrant.GrantorName, + Name: roleGrant.Grantor.User.Name, }, Privilege: &backuppb.PrivilegeEntity{ - Name: roleGrant.PrivilegeName, + Name: roleGrant.Grantor.Privilege.Name, }, }, DbName: roleGrant.DbName, diff --git a/core/backup_impl_restore_backup.go b/core/backup_impl_restore_backup.go index 05ffeb5e..1ba6bdc0 100644 --- a/core/backup_impl_restore_backup.go +++ b/core/backup_impl_restore_backup.go @@ -4,15 +4,16 @@ import ( "context" "fmt" "path" + "strconv" "strings" "time" "github.com/cockroachdb/errors" "github.com/golang/protobuf/proto" jsoniter "github.com/json-iterator/go" + "github.com/milvus-io/milvus-proto/go-api/v2/commonpb" + "github.com/milvus-io/milvus-proto/go-api/v2/milvuspb" "github.com/milvus-io/milvus-proto/go-api/v2/schemapb" - gomilvus "github.com/milvus-io/milvus-sdk-go/v2/client" - "github.com/milvus-io/milvus-sdk-go/v2/entity" "github.com/samber/lo" "go.uber.org/atomic" "go.uber.org/zap" @@ -24,6 +25,15 @@ import ( "github.com/zilliztech/milvus-backup/internal/util/retry" ) +func conv2MilvusKV(kv []*backuppb.KeyValuePair) []*commonpb.KeyValuePair { + return lo.Map(kv, func(item *backuppb.KeyValuePair, i int) *commonpb.KeyValuePair { + return &commonpb.KeyValuePair{ + Key: item.Key, + Value: item.Value, + } + }) +} + func (b *BackupContext) RestoreBackup(ctx context.Context, request *backuppb.RestoreBackupRequest) *backuppb.RestoreBackupResponse { if request.GetRequestId() == "" { request.RequestId = utils.UUID() @@ -252,7 +262,7 @@ func (b *BackupContext) RestoreBackup(ctx context.Context, request *backuppb.Res } var hasDatabase = false for _, db := range dbs { - if db.Name == targetDBName { + if db == targetDBName { hasDatabase = true break } @@ -269,7 +279,7 @@ func (b *BackupContext) RestoreBackup(ctx context.Context, request *backuppb.Res log.Info("create database", zap.String("database", targetDBName)) } - // check if the collection exist, if exist, will not restore + // check if the collection exist, if existed, will not restore if !request.GetSkipCreateCollection() { exist, err := b.getMilvusClient().HasCollection(ctx, targetDBName, targetCollectionName) if err != nil { @@ -424,23 +434,25 @@ func (b *BackupContext) executeRestoreCollectionTask(ctx context.Context, backup log.Info("start restore", zap.String("backupBucketName", backupBucketName), zap.String("backupPath", backupPath)) + // create collection - fields := make([]*entity.Field, 0) + fields := make([]*schemapb.FieldSchema, 0, len(task.GetCollBackup().GetSchema().GetFields())) hasPartitionKey := false for _, field := range task.GetCollBackup().GetSchema().GetFields() { - fieldRestore := &entity.Field{ - ID: field.GetFieldID(), - Name: field.GetName(), - PrimaryKey: field.GetIsPrimaryKey(), - AutoID: field.GetAutoID(), - Description: field.GetDescription(), - DataType: entity.FieldType(field.GetDataType()), - TypeParams: utils.KvPairsMap(field.GetTypeParams()), - IndexParams: utils.KvPairsMap(field.GetIndexParams()), - IsDynamic: field.GetIsDynamic(), - IsPartitionKey: field.GetIsPartitionKey(), - Nullable: field.GetNullable(), - ElementType: entity.FieldType(field.GetElementType()), + fieldRestore := &schemapb.FieldSchema{ + FieldID: field.GetFieldID(), + Name: field.GetName(), + IsPrimaryKey: field.GetIsPrimaryKey(), + AutoID: field.GetAutoID(), + Description: field.GetDescription(), + DataType: schemapb.DataType(field.GetDataType()), + TypeParams: conv2MilvusKV(field.GetTypeParams()), + IndexParams: conv2MilvusKV(field.GetIndexParams()), + IsDynamic: field.GetIsDynamic(), + IsPartitionKey: field.GetIsPartitionKey(), + Nullable: field.GetNullable(), + ElementType: schemapb.DataType(field.GetElementType()), + IsFunctionOutput: field.IsFunctionOutput, } if field.DefaultValueProto != "" { defaultValue := &schemapb.ValueField{} @@ -456,13 +468,30 @@ func (b *BackupContext) executeRestoreCollectionTask(ctx context.Context, backup hasPartitionKey = true } } + log.Info("collection fields", zap.Any("fields", fields)) + + functions := make([]*schemapb.FunctionSchema, 0, len(task.GetCollBackup().GetSchema().GetFunctions())) + for _, function := range task.GetCollBackup().GetSchema().GetFunctions() { + fun := &schemapb.FunctionSchema{ + Name: function.Name, + Id: function.Id, + Description: function.Description, + Type: schemapb.FunctionType(function.Type), + InputFieldNames: function.InputFieldNames, + InputFieldIds: function.InputFieldIds, + OutputFieldNames: function.OutputFieldNames, + OutputFieldIds: function.OutputFieldIds, + Params: conv2MilvusKV(function.Params), + } + functions = append(functions, fun) + } + log.Info("collection functions", zap.Any("functions", functions)) - log.Info("collection schema", zap.Any("fields", fields)) - - collectionSchema := &entity.Schema{ - CollectionName: targetCollectionName, + collectionSchema := &schemapb.CollectionSchema{ + Name: targetCollectionName, Description: task.GetCollBackup().GetSchema().GetDescription(), AutoID: task.GetCollBackup().GetSchema().GetAutoID(), + Functions: functions, Fields: fields, EnableDynamicField: task.GetCollBackup().GetSchema().GetEnableDynamicField(), } @@ -503,16 +532,17 @@ func (b *BackupContext) executeRestoreCollectionTask(ctx context.Context, backup ctx, targetDBName, collectionSchema, + commonpb.ConsistencyLevel(task.GetCollBackup().GetConsistencyLevel()), shardNum, - gomilvus.WithConsistencyLevel(entity.ConsistencyLevel(task.GetCollBackup().GetConsistencyLevel())), - gomilvus.WithPartitionNum(int64(partitionNum))) + int64(partitionNum)) } return b.getMilvusClient().CreateCollection( ctx, targetDBName, collectionSchema, + commonpb.ConsistencyLevel(task.GetCollBackup().GetConsistencyLevel()), shardNum, - gomilvus.WithConsistencyLevel(entity.ConsistencyLevel(task.GetCollBackup().GetConsistencyLevel()))) + 0) }, retry.Attempts(10), retry.Sleep(1*time.Second)) if err != nil { errorMsg := fmt.Sprintf("fail to create collection, targetCollectionName: %s err: %s", targetCollectionName, err) @@ -544,7 +574,7 @@ func (b *BackupContext) executeRestoreCollectionTask(ctx context.Context, backup } } for _, fieldIndex := range fieldIndexs { - err = b.milvusClient.DropIndex(ctx, targetDBName, targetCollectionName, fieldIndex.Name()) + err = b.milvusClient.DropIndex(ctx, targetDBName, targetCollectionName, fieldIndex.IndexName) if err != nil { log.Warn("Fail to drop index", zap.Error(err)) @@ -552,45 +582,41 @@ func (b *BackupContext) executeRestoreCollectionTask(ctx context.Context, backup } log.Info("drop index", zap.String("field_name", field.Name), - zap.String("index_name", fieldIndex.Name())) + zap.String("index_name", fieldIndex.IndexName)) } } } if task.GetRestoreIndex() { - vectorFields := make(map[string]bool, 0) + vectorFields := make(map[string]bool, len(collectionSchema.Fields)) for _, field := range collectionSchema.Fields { - if strings.HasSuffix(strings.ToLower(field.DataType.Name()), "vector") { + if strings.HasSuffix(strings.ToLower(schemapb.DataType_name[int32(field.DataType)]), "vector") { vectorFields[field.Name] = true } } indexes := task.GetCollBackup().GetIndexInfos() for _, index := range indexes { - var idx entity.Index + var err error log.Info("source index", zap.String("indexName", index.GetIndexName()), zap.String("indexType", index.GetIndexType()), zap.Any("params", index.GetParams())) if _, ok := vectorFields[index.GetFieldName()]; ok && task.GetUseAutoIndex() { log.Info("use auto index") - params := make(map[string]string, 0) // auto index only support index_type and metric_type in params - params["index_type"] = "AUTOINDEX" - params["metric_type"] = index.GetParams()["metric_type"] - idx = entity.NewGenericIndex(index.GetIndexName(), entity.AUTOINDEX, params) + params := map[string]string{ + "index_type": "AUTOINDEX", + "metric_type": index.GetParams()["metric_type"], + } + err = b.getMilvusClient().CreateIndex(ctx, targetDBName, targetCollectionName, index.GetFieldName(), index.GetIndexName(), params) } else { log.Info("not auto index") - indexType := index.GetIndexType() - if indexType == "marisa-trie" { - indexType = "Trie" - } params := index.GetParams() if params["index_type"] == "marisa-trie" { params["index_type"] = "Trie" } - idx = entity.NewGenericIndex(index.GetIndexName(), entity.IndexType(indexType), index.GetParams()) + err = b.getMilvusClient().CreateIndex(ctx, targetDBName, targetCollectionName, index.GetFieldName(), index.GetIndexName(), params) } - err := b.getMilvusClient().CreateIndex(ctx, targetDBName, targetCollectionName, index.GetFieldName(), idx, true) if err != nil { log.Warn("Fail to restore index", zap.Error(err)) return task, err @@ -800,21 +826,7 @@ func (b *BackupContext) executeBulkInsert(ctx context.Context, db, coll string, zap.String("partition", partition), zap.Strings("files", files), zap.Int64("endTime", endTime)) - var taskId int64 - var err error - if endTime == 0 { - if isL0 { - taskId, err = b.getMilvusClient().BulkInsert(ctx, db, coll, partition, files, gomilvus.IsL0(isL0), gomilvus.SkipDiskQuotaCheck(skipDiskQuotaCheck)) - } else { - taskId, err = b.getMilvusClient().BulkInsert(ctx, db, coll, partition, files, gomilvus.IsBackup(), gomilvus.SkipDiskQuotaCheck(skipDiskQuotaCheck)) - } - } else { - if isL0 { - taskId, err = b.getMilvusClient().BulkInsert(ctx, db, coll, partition, files, gomilvus.IsL0(isL0), gomilvus.SkipDiskQuotaCheck(skipDiskQuotaCheck), gomilvus.WithEndTs(endTime)) - } else { - taskId, err = b.getMilvusClient().BulkInsert(ctx, db, coll, partition, files, gomilvus.IsBackup(), gomilvus.SkipDiskQuotaCheck(skipDiskQuotaCheck), gomilvus.WithEndTs(endTime)) - } - } + taskId, err := b.getMilvusClient().BulkInsert(ctx, db, coll, partition, files, endTime, isL0, skipDiskQuotaCheck) if err != nil { log.Error("fail to bulk insert", zap.String("db", db), @@ -836,6 +848,17 @@ func (b *BackupContext) executeBulkInsert(ctx context.Context, db, coll string, return nil } +func getProcess(infos map[string]string) int { + if val, ok := infos["progress_percent"]; ok { + progress, err := strconv.Atoi(val) + if err != nil { + return 0 + } + return progress + } + return 0 +} + func (b *BackupContext) watchBulkInsertState(ctx context.Context, taskId int64, timeout int64, sleepSeconds int) error { lastProgress := 0 lastUpdateTime := time.Now().Unix() @@ -845,24 +868,27 @@ func (b *BackupContext) watchBulkInsertState(ctx context.Context, taskId int64, if err != nil { return err } + infos := lo.SliceToMap(importTaskState.Infos, func(info *commonpb.KeyValuePair) (string, string) { + return info.Key, info.Value + }) log.Info("bulkinsert task state", zap.Int64("id", taskId), zap.Int32("state", int32(importTaskState.State)), zap.Any("state", importTaskState), - zap.Int("progress", importTaskState.Progress()), + zap.Int("progress", getProcess(infos)), zap.Int64("currentTimestamp", currentTimestamp), zap.Int64("lastUpdateTime", lastUpdateTime)) switch importTaskState.State { - case entity.BulkInsertFailed: - if value, ok := importTaskState.Infos["failed_reason"]; ok { + case commonpb.ImportState_ImportFailed: + if value, ok := infos["failed_reason"]; ok { return errors.New("bulk insert fail, info: " + value) } else { return errors.New("bulk insert fail") } - case entity.BulkInsertCompleted: + case commonpb.ImportState_ImportCompleted: return nil default: - currentProgress := importTaskState.Progress() + currentProgress := getProcess(infos) if currentProgress > lastProgress { lastUpdateTime = time.Now().Unix() } else if (currentTimestamp - lastUpdateTime) >= timeout { @@ -873,7 +899,6 @@ func (b *BackupContext) watchBulkInsertState(ctx context.Context, taskId int64, continue } } - return errors.New("import task timeout") } func (b *BackupContext) getBackupPartitionPaths(ctx context.Context, bucketName string, backupPath string, partition *backuppb.PartitionBackupInfo) ([]string, int64, error) { @@ -932,54 +957,53 @@ func (b *BackupContext) getBackupPartitionPathsWithGroupID(ctx context.Context, func (b *BackupContext) restoreRBAC(ctx context.Context, backupInfo *backuppb.BackupInfo) error { log.Info("restore RBAC") - curRBAC, err := b.getMilvusClient().BackupRBAC(ctx) + resp, err := b.getMilvusClient().BackupRBAC(ctx) if err != nil { return fmt.Errorf("fail to get current RBAC, err: %s", err) } + curRBAC := resp.RBACMeta rbacBackup := backupInfo.GetRbacMeta() - curUsers := lo.SliceToMap(curRBAC.Users, func(user *entity.UserInfo) (string, struct{}) { - return user.Name, struct{}{} + curUsers := lo.SliceToMap(curRBAC.Users, func(user *milvuspb.UserInfo) (string, struct{}) { + return user.User, struct{}{} }) - users := make([]*entity.UserInfo, 0, len(rbacBackup.GetUsers())) + users := make([]*milvuspb.UserInfo, 0, len(rbacBackup.GetUsers())) for _, user := range rbacBackup.GetUsers() { // skip if user already exist if _, ok := curUsers[user.GetUser()]; ok { continue } - ur := lo.Map(user.GetRoles(), func(role *backuppb.RoleEntity, index int) string { - return role.Name + ur := lo.Map(user.GetRoles(), func(role *backuppb.RoleEntity, index int) *milvuspb.RoleEntity { + return &milvuspb.RoleEntity{Name: role.Name} }) - userEntity := &entity.UserInfo{ - UserDescription: entity.UserDescription{ - Name: user.GetUser(), - Roles: ur, - }, + userEntity := &milvuspb.UserInfo{ + User: user.User, Password: user.Password, + Roles: ur, } users = append(users, userEntity) } - curRoles := lo.SliceToMap(curRBAC.Roles, func(role *entity.Role) (string, struct{}) { + curRoles := lo.SliceToMap(curRBAC.Roles, func(role *milvuspb.RoleEntity) (string, struct{}) { return role.Name, struct{}{} }) - roles := make([]*entity.Role, 0, len(rbacBackup.GetRoles())) + roles := make([]*milvuspb.RoleEntity, 0, len(rbacBackup.GetRoles())) for _, role := range rbacBackup.GetRoles() { // skip if role already exist if _, ok := curRoles[role.GetName()]; ok { continue } - roleEntity := &entity.Role{ + roleEntity := &milvuspb.RoleEntity{ Name: role.GetName(), } roles = append(roles, roleEntity) } - grants := make([]*entity.RoleGrants, 0, len(rbacBackup.GetGrants())) - curGrants := lo.SliceToMap(curRBAC.RoleGrants, func(grant *entity.RoleGrants) (string, struct{}) { - return fmt.Sprintf("%s/%s/%s/%s/%s/%s", grant.Object, grant.ObjectName, grant.RoleName, grant.GrantorName, grant.PrivilegeName, grant.DbName), struct{}{} + grants := make([]*milvuspb.GrantEntity, 0, len(rbacBackup.GetGrants())) + curGrants := lo.SliceToMap(curRBAC.Grants, func(grant *milvuspb.GrantEntity) (string, struct{}) { + return fmt.Sprintf("%s/%s/%s/%s/%s/%s", grant.Object, grant.ObjectName, grant.Role.Name, grant.Grantor.User, grant.Grantor.Privilege.Name, grant.DbName), struct{}{} }) for _, roleGrant := range rbacBackup.GetGrants() { key := fmt.Sprintf("%s/%s/%s/%s/%s/%s", roleGrant.Object.GetName(), roleGrant.GetObjectName(), roleGrant.GetRole().GetName(), roleGrant.GetGrantor().GetUser().GetName(), roleGrant.GetGrantor().GetPrivilege().GetName(), roleGrant.GetDbName()) @@ -987,21 +1011,23 @@ func (b *BackupContext) restoreRBAC(ctx context.Context, backupInfo *backuppb.Ba if _, ok := curGrants[key]; ok { continue } - roleGrantEntity := &entity.RoleGrants{ - Object: roleGrant.Object.GetName(), - ObjectName: roleGrant.GetObjectName(), - RoleName: roleGrant.GetRole().GetName(), - GrantorName: roleGrant.GetGrantor().GetUser().GetName(), - PrivilegeName: roleGrant.GetGrantor().GetPrivilege().GetName(), - DbName: roleGrant.GetDbName(), + roleGrantEntity := &milvuspb.GrantEntity{ + Object: &milvuspb.ObjectEntity{Name: roleGrant.Object.Name}, + ObjectName: roleGrant.GetObjectName(), + Role: &milvuspb.RoleEntity{Name: roleGrant.Role.Name}, + Grantor: &milvuspb.GrantorEntity{ + User: &milvuspb.UserEntity{Name: roleGrant.Grantor.User.Name}, + Privilege: &milvuspb.PrivilegeEntity{Name: roleGrant.Grantor.Privilege.Name}, + }, + DbName: roleGrant.GetDbName(), } grants = append(grants, roleGrantEntity) } - rbacMeta := &entity.RBACMeta{ - Users: users, - Roles: roles, - RoleGrants: grants, + rbacMeta := &milvuspb.RBACMeta{ + Users: users, + Roles: roles, + Grants: grants, } log.Info("restore RBAC", zap.Int("users", len(users)), zap.Int("roles", len(roles)), zap.Int("grants", len(grants))) diff --git a/core/backup_meta.go b/core/backup_meta.go index 9d38ca9f..221433ea 100644 --- a/core/backup_meta.go +++ b/core/backup_meta.go @@ -6,6 +6,7 @@ import ( "strings" "github.com/golang/protobuf/proto" + "github.com/zilliztech/milvus-backup/core/proto/backuppb" ) diff --git a/core/backup_server.go b/core/backup_server.go index ff210e07..bab11636 100644 --- a/core/backup_server.go +++ b/core/backup_server.go @@ -5,12 +5,12 @@ import ( "github.com/gin-gonic/gin" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" + "go.uber.org/zap" + "net/http" + "github.com/zilliztech/milvus-backup/core/paramtable" "github.com/zilliztech/milvus-backup/core/proto/backuppb" "github.com/zilliztech/milvus-backup/internal/log" - "go.uber.org/zap" - "net/http" - "net/http/pprof" ) const ( @@ -36,7 +36,7 @@ type Server struct { config *BackupConfig } -func NewServer(ctx context.Context, params paramtable.BackupParams, opts ...BackupOption) (*Server, error) { +func NewServer(ctx context.Context, params *paramtable.BackupParams, opts ...BackupOption) (*Server, error) { c := newDefaultBackupConfig() for _, opt := range opts { opt(c) @@ -57,7 +57,6 @@ func (s *Server) Init() { } func (s *Server) Start() { - s.registerProfilePort() err := s.engine.Run(s.config.port) if err != nil { log.Error("Failed to start server", zap.Error(err)) @@ -79,15 +78,7 @@ func (s *Server) registerHTTPServer() { s.engine = ginHandler } -// registerHTTPServer register the http server, panic when failed -func (s *Server) registerProfilePort() { - go func() { - http.HandleFunc("/debug/pprof/heap", pprof.Index) - http.ListenAndServe("localhost:8089", nil) - }() -} - -func handleHello(c *gin.Context) (interface{}, error) { +func handleHello(c *gin.Context) (any, error) { c.String(200, "Hello, This is backup service") return nil, nil } diff --git a/core/backup_server_test.go b/core/backup_server_test.go index c55bebda..d14a71d6 100644 --- a/core/backup_server_test.go +++ b/core/backup_server_test.go @@ -8,6 +8,7 @@ import ( "time" "github.com/stretchr/testify/assert" + "github.com/zilliztech/milvus-backup/core/paramtable" ) @@ -18,7 +19,7 @@ func TestBackupService(t *testing.T) { params.Init() context := context.Background() - server, err := NewServer(context, params) + server, err := NewServer(context, ¶ms) assert.NoError(t, err) server.Init() server.Start() diff --git a/core/client/milvus.go b/core/client/milvus.go new file mode 100644 index 00000000..eb0ba16e --- /dev/null +++ b/core/client/milvus.go @@ -0,0 +1,562 @@ +package client + +import ( + "context" + "crypto/tls" + "encoding/base64" + "errors" + "fmt" + "math" + "net/url" + "os" + "regexp" + "strconv" + "time" + + grpcretry "github.com/grpc-ecosystem/go-grpc-middleware/retry" + "google.golang.org/grpc/backoff" + "google.golang.org/grpc/credentials" + "google.golang.org/grpc/credentials/insecure" + "google.golang.org/grpc/keepalive" + + "github.com/golang/protobuf/proto" + "github.com/imroc/req/v3" + "github.com/milvus-io/milvus-proto/go-api/v2/commonpb" + "github.com/milvus-io/milvus-proto/go-api/v2/milvuspb" + "github.com/milvus-io/milvus-proto/go-api/v2/schemapb" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" + + "github.com/zilliztech/milvus-backup/internal/log" + "github.com/zilliztech/milvus-backup/version" +) + +const ( + disableDatabase uint64 = 1 << iota +) + +func defaultDialOpt() []grpc.DialOption { + opts := []grpc.DialOption{ + grpc.WithKeepaliveParams(keepalive.ClientParameters{ + Time: 5 * time.Second, + Timeout: 10 * time.Second, + PermitWithoutStream: true, + }), + grpc.WithConnectParams(grpc.ConnectParams{ + Backoff: backoff.Config{ + BaseDelay: 100 * time.Millisecond, + Multiplier: 1.6, + Jitter: 0.2, + MaxDelay: 3 * time.Second, + }, + MinConnectTimeout: 3 * time.Second, + }), + grpc.WithDefaultCallOptions( + grpc.MaxCallRecvMsgSize(math.MaxInt32), // math.MaxInt32 = 2147483647, 2GB - 1 + // not setting max send msg size, since default is Unlimited + ), + grpc.WithChainUnaryInterceptor(grpcretry.UnaryClientInterceptor( + grpcretry.WithMax(6), + grpcretry.WithBackoff(func(attempt uint) time.Duration { + return 60 * time.Millisecond * time.Duration(math.Pow(3, float64(attempt))) + }), + grpcretry.WithCodes(codes.Unavailable, codes.ResourceExhausted)), + ), + } + + return opts +} + +type Milvus interface { + Close() error + SupportMultiDatabase() bool + GetVersion(ctx context.Context) (string, error) + CreateDatabase(ctx context.Context, dbName string) error + ListDatabases(ctx context.Context) ([]string, error) + DescribeCollection(ctx context.Context, db, collName string) (*milvuspb.DescribeCollectionResponse, error) + DropCollection(ctx context.Context, db, collectionName string) error + DescribeIndex(ctx context.Context, db, collName, fieldName string) ([]*milvuspb.IndexDescription, error) + ShowPartitions(ctx context.Context, db, collName string) (*milvuspb.ShowPartitionsResponse, error) + GetLoadingProgress(ctx context.Context, db, collName string, partitionNames []string) (int64, error) + GetPersistentSegmentInfo(ctx context.Context, db, collName string) ([]*milvuspb.PersistentSegmentInfo, error) + Flush(ctx context.Context, db, collName string) (*milvuspb.FlushResponse, error) + ListCollections(ctx context.Context, db string) (*milvuspb.ShowCollectionsResponse, error) + HasCollection(ctx context.Context, db, collName string) (bool, error) + BulkInsert(ctx context.Context, db, collName, partitionName string, files []string, endTime int64, isL0 bool, skipDiskQuotaCheck bool) (int64, error) + GetBulkInsertState(ctx context.Context, taskID int64) (*milvuspb.GetImportStateResponse, error) + CreateCollection(ctx context.Context, db string, schema *schemapb.CollectionSchema, cl commonpb.ConsistencyLevel, shardNum int32, partitionNum int64) error + CreatePartition(ctx context.Context, db, collName, partitionName string) error + HasPartition(ctx context.Context, db, collName, partitionName string) (bool, error) + CreateIndex(ctx context.Context, db, collName, fieldName, idxName string, extraParams map[string]string) error + DropIndex(ctx context.Context, db, collName, indexName string) error + BackupRBAC(ctx context.Context) (*milvuspb.BackupRBACMetaResponse, error) + RestoreRBAC(ctx context.Context, rbacMeta *milvuspb.RBACMeta) error +} + +var regexValidScheme = regexp.MustCompile(`^https?://`) + +const ( + authorizationHeader = `authorization` + identifierHeader = `identifier` + databaseHeader = `dbname` +) + +func ok(status *commonpb.Status) bool { return status.GetCode() == 0 } + +type MilvusConfig struct { + Address string // Remote address, "localhost:19530". + + EnableTLS bool // Enable TLS for connection. + + Username string // Username for auth. + Password string // Password for auth. + + DialOpts []grpc.DialOption +} + +func (cfg *MilvusConfig) parseAuth() string { + if cfg.Username != "" || cfg.Password != "" { + value := base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%s:%s", cfg.Username, cfg.Password))) + return value + } + + return "" +} + +func (cfg *MilvusConfig) parseDialInfo() (*url.URL, []grpc.DialOption, error) { + var opts []grpc.DialOption + address := cfg.Address + if !regexValidScheme.MatchString(address) { + address = fmt.Sprintf("tcp://%s", address) + } + remoteURL, err := url.Parse(address) + if err != nil { + return nil, nil, errors.New("milvus address parse fail") + } + // Remote Host should never be empty. + if remoteURL.Host == "" { + return nil, nil, errors.New("empty remote host of milvus address") + } + + if remoteURL.Scheme == "https" || cfg.EnableTLS { + opts = append(opts, grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{}))) + } else { + opts = append(opts, grpc.WithTransportCredentials(insecure.NewCredentials())) + } + if remoteURL.Port() == "" && cfg.EnableTLS { + remoteURL.Host += ":443" + } + + return remoteURL, opts, nil +} + +func checkResponse(resp any, err error) error { + if err != nil { + return err + } + + switch resp.(type) { + case interface{ GetStatus() *commonpb.Status }: + if !ok(resp.(interface{ GetStatus() *commonpb.Status }).GetStatus()) { + return fmt.Errorf("client: operation failed: %v", resp.(interface{ GetStatus() *commonpb.Status }).GetStatus()) + } + case *commonpb.Status: + if !ok(resp.(*commonpb.Status)) { + return fmt.Errorf("client: operation failed: %v", resp.(*commonpb.Status)) + } + } + return nil +} + +type MiluvsClient struct { + cfg *MilvusConfig + + restful *req.Client + + conn *grpc.ClientConn + srv milvuspb.MilvusServiceClient + + auth string + serverVersion string + identifier string + + flags uint64 +} + +func NewMilvus(cfg *MilvusConfig) (*MiluvsClient, error) { + addr, opts, err := cfg.parseDialInfo() + if err != nil { + return nil, fmt.Errorf("client: parse address failed: %w", err) + } + auth := cfg.parseAuth() + + opts = append(opts, defaultDialOpt()...) + + conn, err := grpc.NewClient(addr.Host, opts...) + if err != nil { + return nil, fmt.Errorf("client: create grpc client failed: %w", err) + } + srv := milvuspb.NewMilvusServiceClient(conn) + + cli := &MiluvsClient{ + cfg: cfg, + + conn: conn, + srv: srv, + + auth: auth, + } + + return cli, nil +} + +func (m *MiluvsClient) hasFlags(flags uint64) bool { return (m.flags & flags) > 0 } +func (m *MiluvsClient) SupportMultiDatabase() bool { return !m.hasFlags(disableDatabase) } + +func (m *MiluvsClient) newCtx(ctx context.Context) context.Context { + if m.auth != "" { + return metadata.AppendToOutgoingContext(ctx, authorizationHeader, m.auth) + } + if m.identifier != "" { + return metadata.AppendToOutgoingContext(ctx, identifierHeader, m.identifier) + } + return ctx +} + +func (m *MiluvsClient) newCtxWithDB(ctx context.Context, db string) context.Context { + ctx = m.newCtx(ctx) + return metadata.AppendToOutgoingContext(ctx, databaseHeader, db) +} + +func (m *MiluvsClient) connect(ctx context.Context) error { + hostName, err := os.Hostname() + if err != nil { + return fmt.Errorf("get hostname failed: %w", err) + } + + connReq := &milvuspb.ConnectRequest{ + ClientInfo: &commonpb.ClientInfo{ + SdkType: "Backup Tool Custom SDK", + SdkVersion: version.Version, + LocalTime: time.Now().String(), + User: m.cfg.Username, + Host: hostName, + }, + } + + resp, err := m.srv.Connect(ctx, connReq) + if err != nil { + s, ok := status.FromError(err) + if ok { + if s.Code() == codes.Unimplemented { + log.Info("The server does not support the Connect API, skipping") + m.flags |= disableDatabase + } + } + return fmt.Errorf("client: connect to server failed: %w", err) + } + + if !ok(resp.GetStatus()) { + return fmt.Errorf("client: connect to server failed: %v", resp.GetStatus()) + } + + m.serverVersion = resp.GetServerInfo().GetBuildTags() + m.identifier = strconv.FormatInt(resp.GetIdentifier(), 10) + return nil +} + +func (m *MiluvsClient) Close() error { + return m.conn.Close() +} + +func (m *MiluvsClient) GetVersion(ctx context.Context) (string, error) { + ctx = m.newCtx(ctx) + resp, err := m.srv.GetVersion(ctx, &milvuspb.GetVersionRequest{}) + if err := checkResponse(resp, err); err != nil { + return "", fmt.Errorf("client: get version failed: %w", err) + } + + return resp.GetVersion(), nil +} + +func (m *MiluvsClient) CreateDatabase(ctx context.Context, dbName string) error { + ctx = m.newCtx(ctx) + if m.hasFlags(disableDatabase) { + return errors.New("client: the server does not support database") + } + + resp, err := m.srv.CreateDatabase(ctx, &milvuspb.CreateDatabaseRequest{DbName: dbName}) + if err := checkResponse(resp, err); err != nil { + return fmt.Errorf("client: create database failed: %w", err) + } + + return nil +} + +func (m *MiluvsClient) ListDatabases(ctx context.Context) ([]string, error) { + ctx = m.newCtx(ctx) + if m.hasFlags(disableDatabase) { + return nil, errors.New("client: the server does not support database") + } + + resp, err := m.srv.ListDatabases(ctx, &milvuspb.ListDatabasesRequest{}) + if err := checkResponse(resp, err); err != nil { + return nil, fmt.Errorf("client: list databases failed: %w", err) + } + + return resp.GetDbNames(), nil +} + +func (m *MiluvsClient) DescribeCollection(ctx context.Context, db, collName string) (*milvuspb.DescribeCollectionResponse, error) { + ctx = m.newCtxWithDB(ctx, db) + resp, err := m.srv.DescribeCollection(ctx, &milvuspb.DescribeCollectionRequest{CollectionName: collName}) + if err := checkResponse(resp, err); err != nil { + return nil, fmt.Errorf("client: describe collection failed: %w", err) + } + + return resp, nil +} + +func (m *MiluvsClient) DescribeIndex(ctx context.Context, db, collName, fieldName string) ([]*milvuspb.IndexDescription, error) { + ctx = m.newCtxWithDB(ctx, db) + resp, err := m.srv.DescribeIndex(ctx, &milvuspb.DescribeIndexRequest{CollectionName: collName, FieldName: fieldName}) + if err := checkResponse(resp, err); err != nil { + return nil, fmt.Errorf("client: describe index failed: %w", err) + } + + return resp.GetIndexDescriptions(), nil +} + +func (m *MiluvsClient) ShowPartitions(ctx context.Context, db, collName string) (*milvuspb.ShowPartitionsResponse, error) { + ctx = m.newCtxWithDB(ctx, db) + resp, err := m.srv.ShowPartitions(ctx, &milvuspb.ShowPartitionsRequest{CollectionName: collName}) + if err := checkResponse(resp, err); err != nil { + return nil, fmt.Errorf("client: show partitions failed: %w", err) + } + return resp, nil +} + +func (m *MiluvsClient) GetLoadingProgress(ctx context.Context, db, collName string, partitionNames []string) (int64, error) { + ctx = m.newCtxWithDB(ctx, db) + resp, err := m.srv.GetLoadingProgress(ctx, &milvuspb.GetLoadingProgressRequest{CollectionName: collName, PartitionNames: partitionNames}) + if err != nil { + return 0, fmt.Errorf("client: get loading progress failed: %w", err) + } + + return resp.GetProgress(), nil +} + +func (m *MiluvsClient) GetPersistentSegmentInfo(ctx context.Context, db, collName string) ([]*milvuspb.PersistentSegmentInfo, error) { + ctx = m.newCtxWithDB(ctx, db) + resp, err := m.srv.GetPersistentSegmentInfo(ctx, &milvuspb.GetPersistentSegmentInfoRequest{CollectionName: collName}) + if err := checkResponse(resp, err); err != nil { + return nil, fmt.Errorf("client: get persistent segment info failed: %w", err) + } + + return resp.GetInfos(), nil +} + +func (m *MiluvsClient) Flush(ctx context.Context, db, collName string) (*milvuspb.FlushResponse, error) { + ctx = m.newCtxWithDB(ctx, db) + resp, err := m.srv.Flush(ctx, &milvuspb.FlushRequest{CollectionNames: []string{collName}}) + if err := checkResponse(resp, err); err != nil { + return nil, fmt.Errorf("client: flush failed: %w", err) + } + + segmentIDs, has := resp.GetCollSegIDs()[collName] + ids := segmentIDs.GetData() + if has && len(ids) > 0 { + flushed := func() bool { + getFlushResp, err := m.srv.GetFlushState(ctx, &milvuspb.GetFlushStateRequest{ + SegmentIDs: ids, + FlushTs: resp.GetCollFlushTs()[collName], + CollectionName: collName, + }) + if err != nil { + // TODO max retry + return false + } + return getFlushResp.GetFlushed() + } + for !flushed() { + // respect context deadline/cancel + select { + case <-ctx.Done(): + return nil, errors.New("deadline exceeded") + default: + } + time.Sleep(200 * time.Millisecond) + } + } + + return resp, nil +} + +func (m *MiluvsClient) ListCollections(ctx context.Context, db string) (*milvuspb.ShowCollectionsResponse, error) { + ctx = m.newCtxWithDB(ctx, db) + resp, err := m.srv.ShowCollections(ctx, &milvuspb.ShowCollectionsRequest{}) + if err := checkResponse(resp, err); err != nil { + return nil, fmt.Errorf("client: list collections failed: %w", err) + } + + return resp, nil +} + +func (m *MiluvsClient) HasCollection(ctx context.Context, db, collName string) (bool, error) { + ctx = m.newCtxWithDB(ctx, db) + resp, err := m.srv.HasCollection(ctx, &milvuspb.HasCollectionRequest{CollectionName: collName}) + if err := checkResponse(resp, err); err != nil { + return false, fmt.Errorf("client: has collection failed: %w", err) + } + return resp.GetValue(), nil +} + +func (m *MiluvsClient) BulkInsert(ctx context.Context, db, collName string, partitionName string, files []string, endTime int64, isL0 bool, skipDiskQuotaCheck bool) (int64, error) { + ctx = m.newCtxWithDB(ctx, db) + var opts []*commonpb.KeyValuePair + if endTime > 0 { + opts = append(opts, &commonpb.KeyValuePair{Key: "end_time", Value: strconv.FormatInt(endTime, 10)}) + } + if isL0 { + opts = append(opts, &commonpb.KeyValuePair{Key: "is_l0", Value: "true"}) + } else { + opts = append(opts, &commonpb.KeyValuePair{Key: "backup", Value: "true"}) + } + opts = append(opts, &commonpb.KeyValuePair{Key: "skip_disk_quota_check", Value: strconv.FormatBool(skipDiskQuotaCheck)}) + + in := &milvuspb.ImportRequest{ + CollectionName: collName, + PartitionName: partitionName, + Files: files, + Options: opts, + } + resp, err := m.srv.Import(ctx, in) + if err := checkResponse(resp, err); err != nil { + return 0, fmt.Errorf("client: bulk insert failed: %w", err) + } + + return resp.GetTasks()[0], nil +} + +func (m *MiluvsClient) GetBulkInsertState(ctx context.Context, taskID int64) (*milvuspb.GetImportStateResponse, error) { + ctx = m.newCtx(ctx) + resp, err := m.srv.GetImportState(ctx, &milvuspb.GetImportStateRequest{Task: taskID}) + if err := checkResponse(resp, err); err != nil { + return nil, fmt.Errorf("client: get bulk insert state failed: %w", err) + } + + return resp, nil +} + +func (m *MiluvsClient) CreateCollection(ctx context.Context, db string, schema *schemapb.CollectionSchema, cl commonpb.ConsistencyLevel, shardNum int32, partitionNum int64) error { + ctx = m.newCtxWithDB(ctx, db) + bs, err := proto.Marshal(schema) + if err != nil { + return fmt.Errorf("client: create collection failed: %w", err) + } + in := &milvuspb.CreateCollectionRequest{ + CollectionName: schema.Name, + Schema: bs, + ConsistencyLevel: cl, + ShardsNum: shardNum, + NumPartitions: partitionNum, + } + + resp, err := m.srv.CreateCollection(ctx, in) + if err := checkResponse(resp, err); err != nil { + return fmt.Errorf("client: create collection failed: %w", err) + } + + return nil +} + +func (m *MiluvsClient) DropCollection(ctx context.Context, db string, collectionName string) error { + ctx = m.newCtxWithDB(ctx, db) + resp, err := m.srv.DropCollection(ctx, &milvuspb.DropCollectionRequest{CollectionName: collectionName}) + if err := checkResponse(resp, err); err != nil { + return fmt.Errorf("client: drop collection failed: %w", err) + } + + return nil +} + +func (m *MiluvsClient) CreatePartition(ctx context.Context, db, collName, partitionName string) error { + ctx = m.newCtxWithDB(ctx, db) + in := &milvuspb.CreatePartitionRequest{CollectionName: collName, PartitionName: partitionName} + resp, err := m.srv.CreatePartition(ctx, in) + if err := checkResponse(resp, err); err != nil { + return fmt.Errorf("client: create partition failed: %w", err) + } + + return nil +} + +func (m *MiluvsClient) HasPartition(ctx context.Context, db, collName string, partitionName string) (bool, error) { + ctx = m.newCtxWithDB(ctx, db) + in := &milvuspb.HasPartitionRequest{CollectionName: collName, PartitionName: partitionName} + resp, err := m.srv.HasPartition(ctx, in) + if err := checkResponse(resp, err); err != nil { + return false, fmt.Errorf("client: has partition failed: %w", err) + } + return resp.GetValue(), nil +} + +func mapKvPairs(m map[string]string) []*commonpb.KeyValuePair { + pairs := make([]*commonpb.KeyValuePair, 0, len(m)) + for k, v := range m { + pairs = append(pairs, &commonpb.KeyValuePair{ + Key: k, + Value: v, + }) + } + return pairs +} + +func (m *MiluvsClient) CreateIndex(ctx context.Context, db, collName, fieldName, idxName string, extraParams map[string]string) error { + ctx = m.newCtxWithDB(ctx, db) + in := &milvuspb.CreateIndexRequest{ + CollectionName: collName, + FieldName: fieldName, + IndexName: idxName, + ExtraParams: mapKvPairs(extraParams), + } + + resp, err := m.srv.CreateIndex(ctx, in) + if err := checkResponse(resp, err); err != nil { + return fmt.Errorf("client: create index failed: %w", err) + } + + return nil +} + +func (m *MiluvsClient) DropIndex(ctx context.Context, db, collName, indexName string) error { + ctx = m.newCtxWithDB(ctx, db) + in := &milvuspb.DropIndexRequest{CollectionName: collName, IndexName: indexName} + resp, err := m.srv.DropIndex(ctx, in) + if err := checkResponse(resp, err); err != nil { + return fmt.Errorf("client: drop index failed: %w", err) + } + return nil +} + +func (m *MiluvsClient) BackupRBAC(ctx context.Context) (*milvuspb.BackupRBACMetaResponse, error) { + ctx = m.newCtx(ctx) + resp, err := m.srv.BackupRBAC(ctx, &milvuspb.BackupRBACMetaRequest{}) + if err := checkResponse(resp, err); err != nil { + return nil, fmt.Errorf("client: backup rbac failed: %w", err) + } + + return resp, nil +} + +func (m *MiluvsClient) RestoreRBAC(ctx context.Context, rbacMeta *milvuspb.RBACMeta) error { + ctx = m.newCtx(ctx) + resp, err := m.srv.RestoreRBAC(ctx, &milvuspb.RestoreRBACMetaRequest{RBACMeta: rbacMeta}) + if err := checkResponse(resp, err); err != nil { + return fmt.Errorf("client: restore rbac failed: %w", err) + } + + return nil +} diff --git a/core/milvus_sdk_test.go b/core/milvus_sdk_test.go deleted file mode 100644 index 70d2421f..00000000 --- a/core/milvus_sdk_test.go +++ /dev/null @@ -1,360 +0,0 @@ -package core - -import ( - "context" - "fmt" - "testing" - "time" - - "github.com/zilliztech/milvus-backup/internal/log" - - gomilvus "github.com/milvus-io/milvus-sdk-go/v2/client" - "github.com/milvus-io/milvus-sdk-go/v2/entity" - "github.com/stretchr/testify/assert" - "go.uber.org/zap" -) - -func TestProxyClient(t *testing.T) { - ctx := context.Background() - milvusAddr := "localhost:19530" - //c, err := proxy.NewClient(context, milvusAddr) - //assert.NoError(t, err) - - c2, err := gomilvus.NewGrpcClient(ctx, milvusAddr) - assert.NoError(t, err) - collections, err := c2.ListCollections(ctx) - for _, coll := range collections { - log.Info("collections", zap.Any("coll", coll.Name), zap.Int64("id", coll.ID)) - } - - //coll, err := c2.DescribeCollection(ctx, "hello_milvus") - //log.Info("collection", zap.Any("hello_milvus", coll)) - - //c2.DropCollection(ctx, "demo_bulkinsert") - //c2.DropCollection(ctx, "hello_milvus") - //c2.DropCollection(ctx, "hello_milvus_recover") - - //idCol, randomCol, embeddingCol = "ID", "random", "embeddings" - pks := entity.NewColumnInt64("ID", []int64{0, 1}) - res, err := c2.QueryByPks(ctx, "hello_milvus_recover", nil, pks, []string{"random"}, gomilvus.WithSearchQueryConsistencyLevel(entity.ClStrong)) - log.Info("query result", zap.Any("query result", res)) - - //assert.Empty(t, collections) -} - -func TestCreateCollection(t *testing.T) { - ctx := context.Background() - milvusAddr := "local:19530" - //c, err := proxy.NewClient(context, milvusAddr) - //assert.NoError(t, err) - - client, err := gomilvus.NewGrpcClient(ctx, milvusAddr) - assert.NoError(t, err) - - //MILVUS_DATA_PATH := "/tmp/milvus/data/" - - _COLLECTION_NAME := "create_demo" - _ID_FIELD_NAME := "id_field" - _VECTOR_FIELD_NAME := "float_vector_field" - _STR_FIELD_NAME := "str_field" - _ARRAY_FIELD_NAME := "arr_field" - - // String field parameter - _MAX_LENGTH := "65535" - _ARRAY_MAX_CAPACITY := "100" - // Vector field parameter - _DIM := "8" - - //field1 = FieldSchema(name=_ID_FIELD_NAME, dtype=DataType.INT64, description="int64", is_primary=True, auto_id=True) - //field2 = FieldSchema(name=_VECTOR_FIELD_NAME, dtype=DataType.FLOAT_VECTOR, description="float vector", dim=_DIM, - // is_primary=False) - //field3 = FieldSchema(name=_STR_FIELD_NAME, dtype=DataType.VARCHAR, description="string", - // max_length=_MAX_LENGTH, is_primary=False) - //schema = CollectionSchema(fields=[field1, field2, field3], description="collection description") - //collection = Collection(name=_COLLECTION_NAME, data=None, schema=schema) - - field1 := &entity.Field{ - Name: _ID_FIELD_NAME, - DataType: entity.FieldTypeInt64, - Description: "int64", - PrimaryKey: true, - AutoID: true, - } - field2 := &entity.Field{ - Name: _VECTOR_FIELD_NAME, - DataType: entity.FieldTypeFloatVector, - Description: "float vector", - TypeParams: map[string]string{ - entity.TypeParamDim: _DIM, - }, - PrimaryKey: false, - } - field3 := &entity.Field{ - Name: _STR_FIELD_NAME, - DataType: entity.FieldTypeVarChar, - Description: "string", - PrimaryKey: false, - TypeParams: map[string]string{ - entity.TypeParamMaxLength: _MAX_LENGTH, - }, - } - field4 := &entity.Field{ - Name: _ARRAY_FIELD_NAME, - DataType: entity.FieldTypeArray, - Description: "arr", - ElementType: entity.FieldTypeInt64, - TypeParams: map[string]string{ - entity.TypeParamMaxCapacity: _ARRAY_MAX_CAPACITY, - }, - } - schema := &entity.Schema{ - CollectionName: _COLLECTION_NAME, - Description: "demo bulkinsert", - AutoID: true, - Fields: []*entity.Field{field1, field2, field3, field4}, - } - //client.DropCollection(ctx, _COLLECTION_NAME) - - err = client.CreateCollection(ctx, schema, 2) - println(err) - _PART_1 := "part_1" - client.CreatePartition(ctx, _COLLECTION_NAME, _PART_1) - - //client.DropCollection(ctx, _COLLECTION_NAME) -} - -func TestBulkInsert(t *testing.T) { - ctx := context.Background() - milvusAddr := "localhost:19530" - //c, err := proxy.NewClient(context, milvusAddr) - //assert.NoError(t, err) - - client, err := gomilvus.NewGrpcClient(ctx, milvusAddr) - assert.NoError(t, err) - - //MILVUS_DATA_PATH := "/tmp/milvus/data/" - - _COLLECTION_NAME := "demo_bulk_insert" - _ID_FIELD_NAME := "id_field" - _VECTOR_FIELD_NAME := "float_vector_field" - _STR_FIELD_NAME := "str_field" - - // String field parameter - _MAX_LENGTH := "65535" - - // Vector field parameter - _DIM := "8" - - //field1 = FieldSchema(name=_ID_FIELD_NAME, dtype=DataType.INT64, description="int64", is_primary=True, auto_id=True) - //field2 = FieldSchema(name=_VECTOR_FIELD_NAME, dtype=DataType.FLOAT_VECTOR, description="float vector", dim=_DIM, - // is_primary=False) - //field3 = FieldSchema(name=_STR_FIELD_NAME, dtype=DataType.VARCHAR, description="string", - // max_length=_MAX_LENGTH, is_primary=False) - //schema = CollectionSchema(fields=[field1, field2, field3], description="collection description") - //collection = Collection(name=_COLLECTION_NAME, data=None, schema=schema) - - field1 := &entity.Field{ - Name: _ID_FIELD_NAME, - DataType: entity.FieldTypeInt64, - Description: "int64", - PrimaryKey: true, - AutoID: true, - } - field2 := &entity.Field{ - Name: _VECTOR_FIELD_NAME, - DataType: entity.FieldTypeFloatVector, - Description: "float vector", - TypeParams: map[string]string{ - entity.TypeParamDim: _DIM, - }, - PrimaryKey: false, - } - field3 := &entity.Field{ - Name: _STR_FIELD_NAME, - DataType: entity.FieldTypeVarChar, - Description: "string", - PrimaryKey: false, - TypeParams: map[string]string{ - entity.TypeParamMaxLength: _MAX_LENGTH, - }, - } - schema := &entity.Schema{ - CollectionName: _COLLECTION_NAME, - Description: "demo bulkinsert", - AutoID: true, - Fields: []*entity.Field{field1, field2, field3}, - } - client.DropCollection(ctx, _COLLECTION_NAME) - - client.CreateCollection(ctx, schema, 2) - _PART_1 := "part_1" - client.CreatePartition(ctx, _COLLECTION_NAME, _PART_1) - file_names := make([]string, 0) - file_names = append(file_names, "rows_0.json") - file_names = append(file_names, "rows_1.json") - file_names = append(file_names, "rows_2.json") - - id, err := client.BulkInsert(ctx, _COLLECTION_NAME, _PART_1, file_names) - - log.Info("bulk insert task ids", zap.Int64("id", id)) - - for { - state, _ := client.GetBulkInsertState(ctx, id) - log.Info("bulk insert task state", zap.Any("state", state)) - time.Sleep(3 * time.Second) - } - //time.Sleep(30 * time.Second) - - client.DropCollection(ctx, _COLLECTION_NAME) -} - -func TestGetBulkInsertState(t *testing.T) { - ctx := context.Background() - milvusAddr := "10.102.9.123:19530" - //c, err := proxy.NewClient(context, milvusAddr) - //assert.NoError(t, err) - - client, err := gomilvus.NewGrpcClient(ctx, milvusAddr) - assert.NoError(t, err) - - state, err := client.GetBulkInsertState(ctx, 446469603780484268) - - println(state.State) - log.Info("bulk insert task state", zap.Any("state", state)) -} - -func TestGetIndex(t *testing.T) { - ctx := context.Background() - milvusAddr := "localhost:19530" - c, err := gomilvus.NewGrpcClient(ctx, milvusAddr) - assert.NoError(t, err) - - coll, err := c.DescribeCollection(ctx, "hello_milvus_recover") - - //log.Info("coll", zap.Any("coll", coll)) - fmt.Println(coll.Schema.Fields[0]) - fmt.Println(coll.Schema.Fields[1]) - fmt.Println(coll.Schema.Fields[2]) - - index, err := c.DescribeIndex(ctx, "hello_milvus_recover", "embeddings") - fmt.Println(index) - - indexState, err := c.GetIndexState(ctx, "hello_milvus", "embeddings") - fmt.Println(indexState) - progress, err := c.GetLoadingProgress(ctx, "hello_milvus_recover", []string{}) - fmt.Println(progress) - - loadState, err := c.GetLoadState(ctx, "hello_milvus_recover", []string{}) - fmt.Println(loadState) - -} - -func TestCreateIndex(t *testing.T) { - ctx := context.Background() - milvusAddr := "localhost:19530" - client, err := gomilvus.NewGrpcClient(ctx, milvusAddr) - assert.NoError(t, err) - - _COLLECTION_NAME := "demo_bulk_insert2" - _ID_FIELD_NAME := "id_field" - _VECTOR_FIELD_NAME := "float_vector_field" - _STR_FIELD_NAME := "str_field" - - // String field parameter - _MAX_LENGTH := "65535" - - // Vector field parameter - _DIM := "8" - - //field1 = FieldSchema(name=_ID_FIELD_NAME, dtype=DataType.INT64, description="int64", is_primary=True, auto_id=True) - //field2 = FieldSchema(name=_VECTOR_FIELD_NAME, dtype=DataType.FLOAT_VECTOR, description="float vector", dim=_DIM, - // is_primary=False) - //field3 = FieldSchema(name=_STR_FIELD_NAME, dtype=DataType.VARCHAR, description="string", - // max_length=_MAX_LENGTH, is_primary=False) - //schema = CollectionSchema(fields=[field1, field2, field3], description="collection description") - //collection = Collection(name=_COLLECTION_NAME, data=None, schema=schema) - - field1 := &entity.Field{ - Name: _ID_FIELD_NAME, - DataType: entity.FieldTypeInt64, - Description: "int64", - PrimaryKey: true, - AutoID: true, - } - field2 := &entity.Field{ - Name: _VECTOR_FIELD_NAME, - DataType: entity.FieldTypeFloatVector, - Description: "float vector", - TypeParams: map[string]string{ - entity.TypeParamDim: _DIM, - }, - PrimaryKey: false, - } - field3 := &entity.Field{ - Name: _STR_FIELD_NAME, - DataType: entity.FieldTypeVarChar, - Description: "string", - PrimaryKey: false, - TypeParams: map[string]string{ - entity.TypeParamMaxLength: _MAX_LENGTH, - }, - } - schema := &entity.Schema{ - CollectionName: _COLLECTION_NAME, - Description: "demo bulkinsert", - AutoID: true, - Fields: []*entity.Field{field1, field2, field3}, - } - //client.DropCollection(ctx, _COLLECTION_NAME) - fmt.Println(schema) - client.CreateCollection(ctx, schema, 2) - - idx := entity.NewScalarIndex() - err = client.CreateIndex(ctx, _COLLECTION_NAME, _STR_FIELD_NAME, idx, false, gomilvus.WithIndexName("_default_idx_102")) - fmt.Println(err) - - idx2, _ := entity.NewIndexHNSW(entity.L2, 8, 96) - //err = client.DropIndex(ctx, _COLLECTION_NAME, _VECTOR_FIELD_NAME, gomilvus.WithIndexName("_default_idx_101")) - //fmt.Println(err) - err = client.CreateIndex(ctx, _COLLECTION_NAME, _VECTOR_FIELD_NAME, idx2, false, gomilvus.WithIndexName("_default_idx_102")) - - fmt.Println(err) -} - -func TestDescribeIndex(t *testing.T) { - ctx := context.Background() - milvusAddr := "localhost:19530" - client, err := gomilvus.NewGrpcClient(ctx, milvusAddr) - assert.NoError(t, err) - - _COLLECTION_NAME := "demo_bulk_insert2" - _STR_FIELD_NAME := "str_field" - _VECTOR_FIELD_NAME := "float_vector_field" - - idxs, err := client.DescribeIndex(ctx, _COLLECTION_NAME, _STR_FIELD_NAME) - fmt.Println(idxs) - fmt.Println(err) - idxs2, err := client.DescribeIndex(ctx, _COLLECTION_NAME, _VECTOR_FIELD_NAME) - fmt.Println(idxs2) - fmt.Println(err) -} - -func TestCleanAll(t *testing.T) { - ctx := context.Background() - milvusAddr := "10.102.9.64:19530" - - c2, err := gomilvus.NewGrpcClient(ctx, milvusAddr) - assert.NoError(t, err) - - dbs, err := c2.ListDatabases(ctx) - - for _, db := range dbs { - c2.UsingDatabase(ctx, db.Name) - collections, _ := c2.ListCollections(ctx) - for _, coll := range collections { - c2.DropCollection(ctx, coll.Name) - log.Info("collections", zap.Any("coll", coll.Name), zap.Int64("id", coll.ID)) - } - c2.DropDatabase(ctx, db.Name) - } -} diff --git a/core/milvus_sdk_wrapper.go b/core/milvus_sdk_wrapper.go deleted file mode 100644 index 58160402..00000000 --- a/core/milvus_sdk_wrapper.go +++ /dev/null @@ -1,209 +0,0 @@ -package core - -import ( - "context" - "sync" - "time" - - "github.com/milvus-io/milvus-proto/go-api/v2/msgpb" - gomilvus "github.com/milvus-io/milvus-sdk-go/v2/client" - "github.com/milvus-io/milvus-sdk-go/v2/entity" - - "github.com/zilliztech/milvus-backup/internal/util/retry" -) - -// MilvusClient wrap db into milvus API to make it thread safe -type MilvusClient struct { - mu sync.Mutex - client gomilvus.Client -} - -func (m *MilvusClient) Close() error { - return m.client.Close() -} - -func (m *MilvusClient) GetVersion(ctx context.Context) (string, error) { - return m.client.GetVersion(ctx) -} - -func (m *MilvusClient) CreateDatabase(ctx context.Context, dbName string) error { - return m.client.CreateDatabase(ctx, dbName) -} - -func (m *MilvusClient) ListDatabases(ctx context.Context) ([]entity.Database, error) { - return m.client.ListDatabases(ctx) -} - -func (m *MilvusClient) DescribeCollection(ctx context.Context, db, collName string) (*entity.Collection, error) { - m.mu.Lock() - defer m.mu.Unlock() - err := m.client.UsingDatabase(ctx, db) - if err != nil { - return nil, err - } - return m.client.DescribeCollection(ctx, collName) -} - -func (m *MilvusClient) DescribeIndex(ctx context.Context, db, collName, fieldName string) ([]entity.Index, error) { - m.mu.Lock() - defer m.mu.Unlock() - err := m.client.UsingDatabase(ctx, db) - if err != nil { - return nil, err - } - return m.client.DescribeIndex(ctx, collName, fieldName) -} - -func (m *MilvusClient) ShowPartitions(ctx context.Context, db, collName string) ([]*entity.Partition, error) { - m.mu.Lock() - defer m.mu.Unlock() - err := m.client.UsingDatabase(ctx, db) - if err != nil { - return nil, err - } - return m.client.ShowPartitions(ctx, collName) -} - -func (m *MilvusClient) GetLoadingProgress(ctx context.Context, db, collName string, partitionNames []string) (int64, error) { - m.mu.Lock() - defer m.mu.Unlock() - err := m.client.UsingDatabase(ctx, db) - if err != nil { - return 0, err - } - return m.client.GetLoadingProgress(ctx, collName, partitionNames) -} - -func (m *MilvusClient) GetPersistentSegmentInfo(ctx context.Context, db, collName string) ([]*entity.Segment, error) { - m.mu.Lock() - defer m.mu.Unlock() - err := m.client.UsingDatabase(ctx, db) - if err != nil { - return nil, err - } - return m.client.GetPersistentSegmentInfo(ctx, collName) -} - -func (m *MilvusClient) FlushV2(ctx context.Context, db, collName string, async bool) ([]int64, []int64, int64, map[string]msgpb.MsgPosition, error) { - m.mu.Lock() - defer m.mu.Unlock() - err := m.client.UsingDatabase(ctx, db) - if err != nil { - return nil, nil, 0, nil, err - } - return m.client.FlushV2(ctx, collName, async) -} - -func (m *MilvusClient) ListCollections(ctx context.Context, db string) ([]*entity.Collection, error) { - m.mu.Lock() - defer m.mu.Unlock() - err := m.client.UsingDatabase(ctx, db) - if err != nil { - return nil, err - } - return m.client.ListCollections(ctx) -} - -func (m *MilvusClient) HasCollection(ctx context.Context, db, collName string) (bool, error) { - m.mu.Lock() - defer m.mu.Unlock() - err := m.client.UsingDatabase(ctx, db) - if err != nil { - return false, err - } - return m.client.HasCollection(ctx, collName) -} - -func (m *MilvusClient) BulkInsert(ctx context.Context, db, collName string, partitionName string, files []string, opts ...gomilvus.BulkInsertOption) (int64, error) { - m.mu.Lock() - defer m.mu.Unlock() - err := m.client.UsingDatabase(ctx, db) - if err != nil { - return 0, err - } - return m.client.BulkInsert(ctx, collName, partitionName, files, opts...) -} - -func (m *MilvusClient) GetBulkInsertState(ctx context.Context, taskID int64) (*entity.BulkInsertTaskState, error) { - return m.client.GetBulkInsertState(ctx, taskID) -} - -func (m *MilvusClient) CreateCollection(ctx context.Context, db string, schema *entity.Schema, shardsNum int32, opts ...gomilvus.CreateCollectionOption) error { - m.mu.Lock() - defer m.mu.Unlock() - err := m.client.UsingDatabase(ctx, db) - if err != nil { - return err - } - // add retry to make sure won't be block by rate control - return retry.Do(ctx, func() error { - return m.client.CreateCollection(ctx, schema, shardsNum, opts...) - }, retry.Sleep(2*time.Second), retry.Attempts(10)) -} - -func (m *MilvusClient) DropCollection(ctx context.Context, db string, collectionName string) error { - m.mu.Lock() - defer m.mu.Unlock() - err := m.client.UsingDatabase(ctx, db) - if err != nil { - return err - } - // add retry to make sure won't be block by rate control - return retry.Do(ctx, func() error { - return m.client.DropCollection(ctx, collectionName) - }, retry.Sleep(2*time.Second), retry.Attempts(10)) -} - -func (m *MilvusClient) CreatePartition(ctx context.Context, db, collName string, partitionName string) error { - m.mu.Lock() - defer m.mu.Unlock() - err := m.client.UsingDatabase(ctx, db) - if err != nil { - return err - } - return retry.Do(ctx, func() error { - return m.client.CreatePartition(ctx, collName, partitionName) - }, retry.Sleep(2*time.Second), retry.Attempts(10)) -} - -func (m *MilvusClient) HasPartition(ctx context.Context, db, collName string, partitionName string) (bool, error) { - m.mu.Lock() - defer m.mu.Unlock() - err := m.client.UsingDatabase(ctx, db) - if err != nil { - return false, err - } - return m.client.HasPartition(ctx, collName, partitionName) -} - -func (m *MilvusClient) CreateIndex(ctx context.Context, db, collName string, fieldName string, idx entity.Index, async bool) error { - m.mu.Lock() - defer m.mu.Unlock() - err := m.client.UsingDatabase(ctx, db) - if err != nil { - return err - } - return m.client.CreateIndex(ctx, collName, fieldName, idx, async, gomilvus.WithIndexName(idx.Name())) -} - -func (m *MilvusClient) DropIndex(ctx context.Context, db, collName string, indexName string) error { - m.mu.Lock() - defer m.mu.Unlock() - err := m.client.UsingDatabase(ctx, db) - if err != nil { - return err - } - return m.client.DropIndex(ctx, collName, "", gomilvus.WithIndexName(indexName)) -} - -func (m *MilvusClient) BackupRBAC(ctx context.Context) (*entity.RBACMeta, error) { - m.mu.Lock() - defer m.mu.Unlock() - return m.client.BackupRBAC(ctx) -} - -func (m *MilvusClient) RestoreRBAC(ctx context.Context, rbacMeta *entity.RBACMeta) error { - m.mu.Lock() - defer m.mu.Unlock() - return m.client.RestoreRBAC(ctx, rbacMeta) -} diff --git a/core/milvus_storage_test.go b/core/milvus_storage_test.go deleted file mode 100644 index 1c109c6a..00000000 --- a/core/milvus_storage_test.go +++ /dev/null @@ -1,136 +0,0 @@ -package core - -import ( - "context" - "os" - "strconv" - "strings" - "testing" - - "github.com/minio/minio-go/v7" - "github.com/minio/minio-go/v7/pkg/credentials" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - "github.com/zilliztech/milvus-backup/core/storage/tencent" - - "github.com/zilliztech/milvus-backup/core/paramtable" - "github.com/zilliztech/milvus-backup/core/storage" - "github.com/zilliztech/milvus-backup/internal/log" - "go.uber.org/zap" -) - -var Params paramtable.BackupParams - -func newMinioChunkManager(ctx context.Context, bucketName string) (*storage.MinioChunkManager, error) { - endPoint := getMinioAddress() - accessKeyID, _ := Params.Load("minio.accessKeyID") - secretAccessKey, _ := Params.Load("minio.secretAccessKey") - useSSLStr, _ := Params.Load("minio.useSSL") - useSSL, _ := strconv.ParseBool(useSSLStr) - - storageConfig := &storage.StorageConfig{ - StorageType: "minio", - Address: endPoint, - AccessKeyID: accessKeyID, - SecretAccessKeyID: secretAccessKey, - UseSSL: useSSL, - CreateBucket: true, - UseIAM: false, - IAMEndpoint: "", - } - - client, err := storage.NewMinioChunkManagerWithConfig(ctx, storageConfig) - return client, err -} - -func getMinioAddress() string { - minioHost := Params.LoadWithDefault("minio.address", paramtable.DefaultMinioAddress) - if strings.Contains(minioHost, ":") { - return minioHost - } - port := Params.LoadWithDefault("minio.port", paramtable.DefaultMinioPort) - return minioHost + ":" + port -} - -func TestWriteAEmptyBackupFile(t *testing.T) { - - Params.Init() - testBucket, err := Params.Load("minio.bucketName") - require.NoError(t, err) - - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - testCM, err := newMinioChunkManager(ctx, testBucket) - err = testCM.Write(ctx, testBucket, "backup/test_backup6", nil) - assert.NoError(t, err) -} - -func TestReadBackupFiles(t *testing.T) { - - Params.Init() - testBucket, err := Params.Load("minio.bucketName") - require.NoError(t, err) - - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - testCM, err := newMinioChunkManager(ctx, testBucket) - files, _, err := testCM.ListWithPrefix(ctx, testBucket, "/backup", true) - assert.NoError(t, err) - - for _, file := range files { - log.Info("BackupFiles", zap.String("path", file)) - } - -} - -func TestReadMilvusData(t *testing.T) { - var params paramtable.BackupParams - params.GlobalInitWithYaml("backup.yaml") - params.Init() - - context := context.Background() - //backupContext := CreateBackupContext(context, params) - - client, err := createStorageClient(context, params) - assert.NoError(t, err) - paths, _, err := client.ListWithPrefix(context, params.MinioCfg.BucketName, "file/insert_log/437296492118216229/437296492118216230/", true) - assert.NoError(t, err) - for _, path := range paths { - if strings.Contains(path, "index_files") { - continue - } - if strings.Contains(path, "437296588890839162") || - strings.Contains(path, "437296588890833721") || - strings.Contains(path, "437296584963129351") || - strings.Contains(path, "437296581056135434") || - strings.Contains(path, "437296588890833719") { - log.Info(path) - bytes, err := client.Read(context, params.MinioCfg.BucketName, path) - os.MkdirAll(path, os.ModePerm) - os.Remove(path) - err = os.WriteFile(path, bytes, 0666) - assert.NoError(t, err) - //log.Info("paths", zap.Strings("paths", paths)) - } - - //log.Info(path) - } - -} - -func TestTencentOSS(t *testing.T) { - var creds *credentials.Credentials - bucketLookupType := minio.BucketLookupDNS - minioOpts := &minio.Options{ - BucketLookup: bucketLookupType, - Creds: creds, - Secure: true, - } - client, err := tencent.NewMinioClient("cos.ap-nanjing.myqcloud.com", minioOpts) - assert.NoError(t, err) - exist, err := client.BucketExists(context.Background(), "") - assert.NoError(t, err) - assert.True(t, exist) -} diff --git a/core/paramtable/base_table_test.go b/core/paramtable/base_table_test.go index aac7cc44..ccd56730 100644 --- a/core/paramtable/base_table_test.go +++ b/core/paramtable/base_table_test.go @@ -5,6 +5,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + memkv "github.com/zilliztech/milvus-backup/internal/kv/mem" ) diff --git a/core/proto/backup.proto b/core/proto/backup.proto index 498c2734..84aae324 100644 --- a/core/proto/backup.proto +++ b/core/proto/backup.proto @@ -385,6 +385,12 @@ enum ConsistencyLevel { Customized = 4; // Users pass their own `guarantee_timestamp`. } +enum FunctionType{ + Unknown =0; + BM25 =1; + TextEmbedding =2; +} + // copied from milvus schema.proto @@ -434,9 +440,6 @@ message ValueField { } } -/** - * @brief Field schema. The same as https://github.com/milvus-io/milvus-proto schema.proto - */ message FieldSchema { int64 fieldID = 1; string name = 2; @@ -453,6 +456,19 @@ message FieldSchema { bool is_partition_key = 13; // enable logic partitions bool nullable = 14; string default_value_proto = 15; // json not support marshall oneof, so use proto string + bool is_function_output = 16; +} + +message FunctionSchema { + string name = 1; + int64 id =2; + string description = 3; + FunctionType type = 4; + repeated string input_field_names = 5; + repeated int64 input_field_ids = 6; + repeated string output_field_names = 7; + repeated int64 output_field_ids = 8; + repeated KeyValuePair params = 9; } /** @@ -464,6 +480,8 @@ message CollectionSchema { bool autoID = 3; // deprecated later, keep compatible with c++ part now repeated FieldSchema fields = 4; bool enable_dynamic_field = 5; // mark whether this table has the dynamic field function enabled. + repeated KeyValuePair properties = 6; + repeated FunctionSchema functions = 7; } message CheckRequest { diff --git a/core/proto/backuppb/backup.pb.go b/core/proto/backuppb/backup.pb.go index fff0429b..0667581f 100644 --- a/core/proto/backuppb/backup.pb.go +++ b/core/proto/backuppb/backup.pb.go @@ -1,29 +1,30 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.33.0 +// protoc v3.9.0 // source: backup.proto package backuppb import ( context "context" - fmt "fmt" - proto "github.com/golang/protobuf/proto" + reflect "reflect" + sync "sync" + _struct "github.com/golang/protobuf/ptypes/struct" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type ResponseCode int32 @@ -36,30 +37,51 @@ const ( ResponseCode_Request_Object_Not_Found ResponseCode = 404 ) -var ResponseCode_name = map[int32]string{ - 0: "Success", - 1: "Not_Support", - 2: "No_Permission", - 3: "Fail", - 400: "Parameter_Error", - 404: "Request_Object_Not_Found", -} +// Enum value maps for ResponseCode. +var ( + ResponseCode_name = map[int32]string{ + 0: "Success", + 1: "Not_Support", + 2: "No_Permission", + 3: "Fail", + 400: "Parameter_Error", + 404: "Request_Object_Not_Found", + } + ResponseCode_value = map[string]int32{ + "Success": 0, + "Not_Support": 1, + "No_Permission": 2, + "Fail": 3, + "Parameter_Error": 400, + "Request_Object_Not_Found": 404, + } +) -var ResponseCode_value = map[string]int32{ - "Success": 0, - "Not_Support": 1, - "No_Permission": 2, - "Fail": 3, - "Parameter_Error": 400, - "Request_Object_Not_Found": 404, +func (x ResponseCode) Enum() *ResponseCode { + p := new(ResponseCode) + *p = x + return p } func (x ResponseCode) String() string { - return proto.EnumName(ResponseCode_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ResponseCode) Descriptor() protoreflect.EnumDescriptor { + return file_backup_proto_enumTypes[0].Descriptor() +} + +func (ResponseCode) Type() protoreflect.EnumType { + return &file_backup_proto_enumTypes[0] +} + +func (x ResponseCode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use ResponseCode.Descriptor instead. func (ResponseCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{0} + return file_backup_proto_rawDescGZIP(), []int{0} } type BackupTaskStateCode int32 @@ -72,28 +94,49 @@ const ( BackupTaskStateCode_BACKUP_TIMEOUT BackupTaskStateCode = 4 ) -var BackupTaskStateCode_name = map[int32]string{ - 0: "BACKUP_INITIAL", - 1: "BACKUP_EXECUTING", - 2: "BACKUP_SUCCESS", - 3: "BACKUP_FAIL", - 4: "BACKUP_TIMEOUT", -} +// Enum value maps for BackupTaskStateCode. +var ( + BackupTaskStateCode_name = map[int32]string{ + 0: "BACKUP_INITIAL", + 1: "BACKUP_EXECUTING", + 2: "BACKUP_SUCCESS", + 3: "BACKUP_FAIL", + 4: "BACKUP_TIMEOUT", + } + BackupTaskStateCode_value = map[string]int32{ + "BACKUP_INITIAL": 0, + "BACKUP_EXECUTING": 1, + "BACKUP_SUCCESS": 2, + "BACKUP_FAIL": 3, + "BACKUP_TIMEOUT": 4, + } +) -var BackupTaskStateCode_value = map[string]int32{ - "BACKUP_INITIAL": 0, - "BACKUP_EXECUTING": 1, - "BACKUP_SUCCESS": 2, - "BACKUP_FAIL": 3, - "BACKUP_TIMEOUT": 4, +func (x BackupTaskStateCode) Enum() *BackupTaskStateCode { + p := new(BackupTaskStateCode) + *p = x + return p } func (x BackupTaskStateCode) String() string { - return proto.EnumName(BackupTaskStateCode_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BackupTaskStateCode) Descriptor() protoreflect.EnumDescriptor { + return file_backup_proto_enumTypes[1].Descriptor() +} + +func (BackupTaskStateCode) Type() protoreflect.EnumType { + return &file_backup_proto_enumTypes[1] +} + +func (x BackupTaskStateCode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use BackupTaskStateCode.Descriptor instead. func (BackupTaskStateCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{1} + return file_backup_proto_rawDescGZIP(), []int{1} } type RestoreTaskStateCode int32 @@ -106,62 +149,153 @@ const ( RestoreTaskStateCode_TIMEOUT RestoreTaskStateCode = 4 ) -var RestoreTaskStateCode_name = map[int32]string{ - 0: "INITIAL", - 1: "EXECUTING", - 2: "SUCCESS", - 3: "FAIL", - 4: "TIMEOUT", -} +// Enum value maps for RestoreTaskStateCode. +var ( + RestoreTaskStateCode_name = map[int32]string{ + 0: "INITIAL", + 1: "EXECUTING", + 2: "SUCCESS", + 3: "FAIL", + 4: "TIMEOUT", + } + RestoreTaskStateCode_value = map[string]int32{ + "INITIAL": 0, + "EXECUTING": 1, + "SUCCESS": 2, + "FAIL": 3, + "TIMEOUT": 4, + } +) -var RestoreTaskStateCode_value = map[string]int32{ - "INITIAL": 0, - "EXECUTING": 1, - "SUCCESS": 2, - "FAIL": 3, - "TIMEOUT": 4, +func (x RestoreTaskStateCode) Enum() *RestoreTaskStateCode { + p := new(RestoreTaskStateCode) + *p = x + return p } func (x RestoreTaskStateCode) String() string { - return proto.EnumName(RestoreTaskStateCode_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RestoreTaskStateCode) Descriptor() protoreflect.EnumDescriptor { + return file_backup_proto_enumTypes[2].Descriptor() +} + +func (RestoreTaskStateCode) Type() protoreflect.EnumType { + return &file_backup_proto_enumTypes[2] +} + +func (x RestoreTaskStateCode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use RestoreTaskStateCode.Descriptor instead. func (RestoreTaskStateCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{2} + return file_backup_proto_rawDescGZIP(), []int{2} } type ConsistencyLevel int32 const ( ConsistencyLevel_Strong ConsistencyLevel = 0 - ConsistencyLevel_Session ConsistencyLevel = 1 + ConsistencyLevel_Session ConsistencyLevel = 1 // default in PyMilvus ConsistencyLevel_Bounded ConsistencyLevel = 2 ConsistencyLevel_Eventually ConsistencyLevel = 3 - ConsistencyLevel_Customized ConsistencyLevel = 4 + ConsistencyLevel_Customized ConsistencyLevel = 4 // Users pass their own `guarantee_timestamp`. ) -var ConsistencyLevel_name = map[int32]string{ - 0: "Strong", - 1: "Session", - 2: "Bounded", - 3: "Eventually", - 4: "Customized", -} +// Enum value maps for ConsistencyLevel. +var ( + ConsistencyLevel_name = map[int32]string{ + 0: "Strong", + 1: "Session", + 2: "Bounded", + 3: "Eventually", + 4: "Customized", + } + ConsistencyLevel_value = map[string]int32{ + "Strong": 0, + "Session": 1, + "Bounded": 2, + "Eventually": 3, + "Customized": 4, + } +) -var ConsistencyLevel_value = map[string]int32{ - "Strong": 0, - "Session": 1, - "Bounded": 2, - "Eventually": 3, - "Customized": 4, +func (x ConsistencyLevel) Enum() *ConsistencyLevel { + p := new(ConsistencyLevel) + *p = x + return p } func (x ConsistencyLevel) String() string { - return proto.EnumName(ConsistencyLevel_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ConsistencyLevel) Descriptor() protoreflect.EnumDescriptor { + return file_backup_proto_enumTypes[3].Descriptor() +} + +func (ConsistencyLevel) Type() protoreflect.EnumType { + return &file_backup_proto_enumTypes[3] } +func (x ConsistencyLevel) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ConsistencyLevel.Descriptor instead. func (ConsistencyLevel) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{3} + return file_backup_proto_rawDescGZIP(), []int{3} +} + +type FunctionType int32 + +const ( + FunctionType_Unknown FunctionType = 0 + FunctionType_BM25 FunctionType = 1 + FunctionType_TextEmbedding FunctionType = 2 +) + +// Enum value maps for FunctionType. +var ( + FunctionType_name = map[int32]string{ + 0: "Unknown", + 1: "BM25", + 2: "TextEmbedding", + } + FunctionType_value = map[string]int32{ + "Unknown": 0, + "BM25": 1, + "TextEmbedding": 2, + } +) + +func (x FunctionType) Enum() *FunctionType { + p := new(FunctionType) + *p = x + return p +} + +func (x FunctionType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FunctionType) Descriptor() protoreflect.EnumDescriptor { + return file_backup_proto_enumTypes[4].Descriptor() +} + +func (FunctionType) Type() protoreflect.EnumType { + return &file_backup_proto_enumTypes[4] +} + +func (x FunctionType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FunctionType.Descriptor instead. +func (FunctionType) EnumDescriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{4} } // * @@ -178,7 +312,7 @@ const ( DataType_Float DataType = 10 DataType_Double DataType = 11 DataType_String DataType = 20 - DataType_VarChar DataType = 21 + DataType_VarChar DataType = 21 // variable-length strings with a specified maximum length DataType_Array DataType = 22 DataType_Json DataType = 23 DataType_BinaryVector DataType = 100 @@ -188,52 +322,73 @@ const ( DataType_SparseFloatVector DataType = 104 ) -var DataType_name = map[int32]string{ - 0: "None", - 1: "Bool", - 2: "Int8", - 3: "Int16", - 4: "Int32", - 5: "Int64", - 10: "Float", - 11: "Double", - 20: "String", - 21: "VarChar", - 22: "Array", - 23: "Json", - 100: "BinaryVector", - 101: "FloatVector", - 102: "Float16Vector", - 103: "BFloat16Vector", - 104: "SparseFloatVector", -} - -var DataType_value = map[string]int32{ - "None": 0, - "Bool": 1, - "Int8": 2, - "Int16": 3, - "Int32": 4, - "Int64": 5, - "Float": 10, - "Double": 11, - "String": 20, - "VarChar": 21, - "Array": 22, - "Json": 23, - "BinaryVector": 100, - "FloatVector": 101, - "Float16Vector": 102, - "BFloat16Vector": 103, - "SparseFloatVector": 104, +// Enum value maps for DataType. +var ( + DataType_name = map[int32]string{ + 0: "None", + 1: "Bool", + 2: "Int8", + 3: "Int16", + 4: "Int32", + 5: "Int64", + 10: "Float", + 11: "Double", + 20: "String", + 21: "VarChar", + 22: "Array", + 23: "Json", + 100: "BinaryVector", + 101: "FloatVector", + 102: "Float16Vector", + 103: "BFloat16Vector", + 104: "SparseFloatVector", + } + DataType_value = map[string]int32{ + "None": 0, + "Bool": 1, + "Int8": 2, + "Int16": 3, + "Int32": 4, + "Int64": 5, + "Float": 10, + "Double": 11, + "String": 20, + "VarChar": 21, + "Array": 22, + "Json": 23, + "BinaryVector": 100, + "FloatVector": 101, + "Float16Vector": 102, + "BFloat16Vector": 103, + "SparseFloatVector": 104, + } +) + +func (x DataType) Enum() *DataType { + p := new(DataType) + *p = x + return p } func (x DataType) String() string { - return proto.EnumName(DataType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DataType) Descriptor() protoreflect.EnumDescriptor { + return file_backup_proto_enumTypes[5].Descriptor() +} + +func (DataType) Type() protoreflect.EnumType { + return &file_backup_proto_enumTypes[5] +} + +func (x DataType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use DataType.Descriptor instead. func (DataType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{4} + return file_backup_proto_rawDescGZIP(), []int{5} } type FieldState int32 @@ -245,87 +400,116 @@ const ( FieldState_FieldDropped FieldState = 3 ) -var FieldState_name = map[int32]string{ - 0: "FieldCreated", - 1: "FieldCreating", - 2: "FieldDropping", - 3: "FieldDropped", -} +// Enum value maps for FieldState. +var ( + FieldState_name = map[int32]string{ + 0: "FieldCreated", + 1: "FieldCreating", + 2: "FieldDropping", + 3: "FieldDropped", + } + FieldState_value = map[string]int32{ + "FieldCreated": 0, + "FieldCreating": 1, + "FieldDropping": 2, + "FieldDropped": 3, + } +) -var FieldState_value = map[string]int32{ - "FieldCreated": 0, - "FieldCreating": 1, - "FieldDropping": 2, - "FieldDropped": 3, +func (x FieldState) Enum() *FieldState { + p := new(FieldState) + *p = x + return p } func (x FieldState) String() string { - return proto.EnumName(FieldState_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (FieldState) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{5} +func (FieldState) Descriptor() protoreflect.EnumDescriptor { + return file_backup_proto_enumTypes[6].Descriptor() } -type IndexInfo struct { - FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` - IndexName string `protobuf:"bytes,2,opt,name=index_name,json=indexName,proto3" json:"index_name,omitempty"` - IndexType string `protobuf:"bytes,3,opt,name=index_type,json=indexType,proto3" json:"index_type,omitempty"` - Params map[string]string `protobuf:"bytes,4,rep,name=params,proto3" json:"params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *IndexInfo) Reset() { *m = IndexInfo{} } -func (m *IndexInfo) String() string { return proto.CompactTextString(m) } -func (*IndexInfo) ProtoMessage() {} -func (*IndexInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{0} +func (FieldState) Type() protoreflect.EnumType { + return &file_backup_proto_enumTypes[6] +} + +func (x FieldState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (m *IndexInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_IndexInfo.Unmarshal(m, b) +// Deprecated: Use FieldState.Descriptor instead. +func (FieldState) EnumDescriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{6} } -func (m *IndexInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_IndexInfo.Marshal(b, m, deterministic) + +type IndexInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + IndexName string `protobuf:"bytes,2,opt,name=index_name,json=indexName,proto3" json:"index_name,omitempty"` + IndexType string `protobuf:"bytes,3,opt,name=index_type,json=indexType,proto3" json:"index_type,omitempty"` + Params map[string]string `protobuf:"bytes,4,rep,name=params,proto3" json:"params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *IndexInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_IndexInfo.Merge(m, src) + +func (x *IndexInfo) Reset() { + *x = IndexInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *IndexInfo) XXX_Size() int { - return xxx_messageInfo_IndexInfo.Size(m) + +func (x *IndexInfo) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *IndexInfo) XXX_DiscardUnknown() { - xxx_messageInfo_IndexInfo.DiscardUnknown(m) + +func (*IndexInfo) ProtoMessage() {} + +func (x *IndexInfo) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[0] + 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) } -var xxx_messageInfo_IndexInfo proto.InternalMessageInfo +// Deprecated: Use IndexInfo.ProtoReflect.Descriptor instead. +func (*IndexInfo) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{0} +} -func (m *IndexInfo) GetFieldName() string { - if m != nil { - return m.FieldName +func (x *IndexInfo) GetFieldName() string { + if x != nil { + return x.FieldName } return "" } -func (m *IndexInfo) GetIndexName() string { - if m != nil { - return m.IndexName +func (x *IndexInfo) GetIndexName() string { + if x != nil { + return x.IndexName } return "" } -func (m *IndexInfo) GetIndexType() string { - if m != nil { - return m.IndexType +func (x *IndexInfo) GetIndexType() string { + if x != nil { + return x.IndexType } return "" } -func (m *IndexInfo) GetParams() map[string]string { - if m != nil { - return m.Params +func (x *IndexInfo) GetParams() map[string]string { + if x != nil { + return x.Params } return nil } @@ -333,6 +517,10 @@ func (m *IndexInfo) GetParams() map[string]string { // * // lite version of Collection info type CollectionBackupInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` StateCode BackupTaskStateCode `protobuf:"varint,2,opt,name=state_code,json=stateCode,proto3,enum=milvus.proto.backup.BackupTaskStateCode" json:"state_code"` ErrorMessage string `protobuf:"bytes,3,opt,name=errorMessage,proto3" json:"errorMessage,omitempty"` @@ -356,259 +544,271 @@ type CollectionBackupInfo struct { BackupPhysicalTimestamp uint64 `protobuf:"varint,19,opt,name=backup_physical_timestamp,json=backupPhysicalTimestamp,proto3" json:"backup_physical_timestamp,omitempty"` ChannelCheckpoints map[string]string `protobuf:"bytes,20,rep,name=channel_checkpoints,json=channelCheckpoints,proto3" json:"channel_checkpoints,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` L0Segments []*SegmentBackupInfo `protobuf:"bytes,21,rep,name=l0_segments,json=l0Segments,proto3" json:"l0_segments,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *CollectionBackupInfo) Reset() { *m = CollectionBackupInfo{} } -func (m *CollectionBackupInfo) String() string { return proto.CompactTextString(m) } -func (*CollectionBackupInfo) ProtoMessage() {} -func (*CollectionBackupInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{1} +func (x *CollectionBackupInfo) Reset() { + *x = CollectionBackupInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CollectionBackupInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CollectionBackupInfo.Unmarshal(m, b) -} -func (m *CollectionBackupInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CollectionBackupInfo.Marshal(b, m, deterministic) +func (x *CollectionBackupInfo) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CollectionBackupInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_CollectionBackupInfo.Merge(m, src) -} -func (m *CollectionBackupInfo) XXX_Size() int { - return xxx_messageInfo_CollectionBackupInfo.Size(m) -} -func (m *CollectionBackupInfo) XXX_DiscardUnknown() { - xxx_messageInfo_CollectionBackupInfo.DiscardUnknown(m) + +func (*CollectionBackupInfo) ProtoMessage() {} + +func (x *CollectionBackupInfo) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[1] + 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) } -var xxx_messageInfo_CollectionBackupInfo proto.InternalMessageInfo +// Deprecated: Use CollectionBackupInfo.ProtoReflect.Descriptor instead. +func (*CollectionBackupInfo) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{1} +} -func (m *CollectionBackupInfo) GetId() string { - if m != nil { - return m.Id +func (x *CollectionBackupInfo) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *CollectionBackupInfo) GetStateCode() BackupTaskStateCode { - if m != nil { - return m.StateCode +func (x *CollectionBackupInfo) GetStateCode() BackupTaskStateCode { + if x != nil { + return x.StateCode } return BackupTaskStateCode_BACKUP_INITIAL } -func (m *CollectionBackupInfo) GetErrorMessage() string { - if m != nil { - return m.ErrorMessage +func (x *CollectionBackupInfo) GetErrorMessage() string { + if x != nil { + return x.ErrorMessage } return "" } -func (m *CollectionBackupInfo) GetStartTime() int64 { - if m != nil { - return m.StartTime +func (x *CollectionBackupInfo) GetStartTime() int64 { + if x != nil { + return x.StartTime } return 0 } -func (m *CollectionBackupInfo) GetEndTime() int64 { - if m != nil { - return m.EndTime +func (x *CollectionBackupInfo) GetEndTime() int64 { + if x != nil { + return x.EndTime } return 0 } -func (m *CollectionBackupInfo) GetProgress() int32 { - if m != nil { - return m.Progress +func (x *CollectionBackupInfo) GetProgress() int32 { + if x != nil { + return x.Progress } return 0 } -func (m *CollectionBackupInfo) GetCollectionId() int64 { - if m != nil { - return m.CollectionId +func (x *CollectionBackupInfo) GetCollectionId() int64 { + if x != nil { + return x.CollectionId } return 0 } -func (m *CollectionBackupInfo) GetDbName() string { - if m != nil { - return m.DbName +func (x *CollectionBackupInfo) GetDbName() string { + if x != nil { + return x.DbName } return "" } -func (m *CollectionBackupInfo) GetCollectionName() string { - if m != nil { - return m.CollectionName +func (x *CollectionBackupInfo) GetCollectionName() string { + if x != nil { + return x.CollectionName } return "" } -func (m *CollectionBackupInfo) GetSchema() *CollectionSchema { - if m != nil { - return m.Schema +func (x *CollectionBackupInfo) GetSchema() *CollectionSchema { + if x != nil { + return x.Schema } return nil } -func (m *CollectionBackupInfo) GetShardsNum() int32 { - if m != nil { - return m.ShardsNum +func (x *CollectionBackupInfo) GetShardsNum() int32 { + if x != nil { + return x.ShardsNum } return 0 } -func (m *CollectionBackupInfo) GetConsistencyLevel() ConsistencyLevel { - if m != nil { - return m.ConsistencyLevel +func (x *CollectionBackupInfo) GetConsistencyLevel() ConsistencyLevel { + if x != nil { + return x.ConsistencyLevel } return ConsistencyLevel_Strong } -func (m *CollectionBackupInfo) GetPartitionBackups() []*PartitionBackupInfo { - if m != nil { - return m.PartitionBackups +func (x *CollectionBackupInfo) GetPartitionBackups() []*PartitionBackupInfo { + if x != nil { + return x.PartitionBackups } return nil } -func (m *CollectionBackupInfo) GetBackupTimestamp() uint64 { - if m != nil { - return m.BackupTimestamp +func (x *CollectionBackupInfo) GetBackupTimestamp() uint64 { + if x != nil { + return x.BackupTimestamp } return 0 } -func (m *CollectionBackupInfo) GetSize() int64 { - if m != nil { - return m.Size +func (x *CollectionBackupInfo) GetSize() int64 { + if x != nil { + return x.Size } return 0 } -func (m *CollectionBackupInfo) GetHasIndex() bool { - if m != nil { - return m.HasIndex +func (x *CollectionBackupInfo) GetHasIndex() bool { + if x != nil { + return x.HasIndex } return false } -func (m *CollectionBackupInfo) GetIndexInfos() []*IndexInfo { - if m != nil { - return m.IndexInfos +func (x *CollectionBackupInfo) GetIndexInfos() []*IndexInfo { + if x != nil { + return x.IndexInfos } return nil } -func (m *CollectionBackupInfo) GetLoadState() string { - if m != nil { - return m.LoadState +func (x *CollectionBackupInfo) GetLoadState() string { + if x != nil { + return x.LoadState } return "" } -func (m *CollectionBackupInfo) GetBackupPhysicalTimestamp() uint64 { - if m != nil { - return m.BackupPhysicalTimestamp +func (x *CollectionBackupInfo) GetBackupPhysicalTimestamp() uint64 { + if x != nil { + return x.BackupPhysicalTimestamp } return 0 } -func (m *CollectionBackupInfo) GetChannelCheckpoints() map[string]string { - if m != nil { - return m.ChannelCheckpoints +func (x *CollectionBackupInfo) GetChannelCheckpoints() map[string]string { + if x != nil { + return x.ChannelCheckpoints } return nil } -func (m *CollectionBackupInfo) GetL0Segments() []*SegmentBackupInfo { - if m != nil { - return m.L0Segments +func (x *CollectionBackupInfo) GetL0Segments() []*SegmentBackupInfo { + if x != nil { + return x.L0Segments } return nil } type PartitionBackupInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + PartitionId int64 `protobuf:"varint,1,opt,name=partition_id,json=partitionId,proto3" json:"partition_id,omitempty"` PartitionName string `protobuf:"bytes,2,opt,name=partition_name,json=partitionName,proto3" json:"partition_name,omitempty"` CollectionId int64 `protobuf:"varint,3,opt,name=collection_id,json=collectionId,proto3" json:"collection_id,omitempty"` // array of segment backup - SegmentBackups []*SegmentBackupInfo `protobuf:"bytes,4,rep,name=segment_backups,json=segmentBackups,proto3" json:"segment_backups,omitempty"` - Size int64 `protobuf:"varint,5,opt,name=size,proto3" json:"size"` - LoadState string `protobuf:"bytes,6,opt,name=load_state,json=loadState,proto3" json:"load_state,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + SegmentBackups []*SegmentBackupInfo `protobuf:"bytes,4,rep,name=segment_backups,json=segmentBackups,proto3" json:"segment_backups,omitempty"` + Size int64 `protobuf:"varint,5,opt,name=size,proto3" json:"size"` + LoadState string `protobuf:"bytes,6,opt,name=load_state,json=loadState,proto3" json:"load_state,omitempty"` } -func (m *PartitionBackupInfo) Reset() { *m = PartitionBackupInfo{} } -func (m *PartitionBackupInfo) String() string { return proto.CompactTextString(m) } -func (*PartitionBackupInfo) ProtoMessage() {} -func (*PartitionBackupInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{2} +func (x *PartitionBackupInfo) Reset() { + *x = PartitionBackupInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PartitionBackupInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PartitionBackupInfo.Unmarshal(m, b) -} -func (m *PartitionBackupInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PartitionBackupInfo.Marshal(b, m, deterministic) +func (x *PartitionBackupInfo) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PartitionBackupInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_PartitionBackupInfo.Merge(m, src) -} -func (m *PartitionBackupInfo) XXX_Size() int { - return xxx_messageInfo_PartitionBackupInfo.Size(m) -} -func (m *PartitionBackupInfo) XXX_DiscardUnknown() { - xxx_messageInfo_PartitionBackupInfo.DiscardUnknown(m) + +func (*PartitionBackupInfo) ProtoMessage() {} + +func (x *PartitionBackupInfo) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[2] + 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) } -var xxx_messageInfo_PartitionBackupInfo proto.InternalMessageInfo +// Deprecated: Use PartitionBackupInfo.ProtoReflect.Descriptor instead. +func (*PartitionBackupInfo) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{2} +} -func (m *PartitionBackupInfo) GetPartitionId() int64 { - if m != nil { - return m.PartitionId +func (x *PartitionBackupInfo) GetPartitionId() int64 { + if x != nil { + return x.PartitionId } return 0 } -func (m *PartitionBackupInfo) GetPartitionName() string { - if m != nil { - return m.PartitionName +func (x *PartitionBackupInfo) GetPartitionName() string { + if x != nil { + return x.PartitionName } return "" } -func (m *PartitionBackupInfo) GetCollectionId() int64 { - if m != nil { - return m.CollectionId +func (x *PartitionBackupInfo) GetCollectionId() int64 { + if x != nil { + return x.CollectionId } return 0 } -func (m *PartitionBackupInfo) GetSegmentBackups() []*SegmentBackupInfo { - if m != nil { - return m.SegmentBackups +func (x *PartitionBackupInfo) GetSegmentBackups() []*SegmentBackupInfo { + if x != nil { + return x.SegmentBackups } return nil } -func (m *PartitionBackupInfo) GetSize() int64 { - if m != nil { - return m.Size +func (x *PartitionBackupInfo) GetSize() int64 { + if x != nil { + return x.Size } return 0 } -func (m *PartitionBackupInfo) GetLoadState() string { - if m != nil { - return m.LoadState +func (x *PartitionBackupInfo) GetLoadState() string { + if x != nil { + return x.LoadState } return "" } @@ -616,6 +816,10 @@ func (m *PartitionBackupInfo) GetLoadState() string { // * // lite version of datapb.SegmentInfo type SegmentBackupInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + SegmentId int64 `protobuf:"varint,1,opt,name=segment_id,json=segmentId,proto3" json:"segment_id,omitempty"` CollectionId int64 `protobuf:"varint,2,opt,name=collection_id,json=collectionId,proto3" json:"collection_id,omitempty"` PartitionId int64 `protobuf:"varint,3,opt,name=partition_id,json=partitionId,proto3" json:"partition_id,omitempty"` @@ -627,112 +831,116 @@ type SegmentBackupInfo struct { // separate segments into multi groups by size, // segments in one group will be copied into one directory during backup // and will bulkinsert in one call during restore - GroupId int64 `protobuf:"varint,9,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` - Backuped bool `protobuf:"varint,10,opt,name=backuped,proto3" json:"backuped,omitempty"` - IsL0 bool `protobuf:"varint,11,opt,name=is_l0,json=isL0,proto3" json:"is_l0,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + GroupId int64 `protobuf:"varint,9,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + Backuped bool `protobuf:"varint,10,opt,name=backuped,proto3" json:"backuped,omitempty"` + IsL0 bool `protobuf:"varint,11,opt,name=is_l0,json=isL0,proto3" json:"is_l0,omitempty"` } -func (m *SegmentBackupInfo) Reset() { *m = SegmentBackupInfo{} } -func (m *SegmentBackupInfo) String() string { return proto.CompactTextString(m) } -func (*SegmentBackupInfo) ProtoMessage() {} -func (*SegmentBackupInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{3} +func (x *SegmentBackupInfo) Reset() { + *x = SegmentBackupInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SegmentBackupInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SegmentBackupInfo.Unmarshal(m, b) +func (x *SegmentBackupInfo) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SegmentBackupInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SegmentBackupInfo.Marshal(b, m, deterministic) -} -func (m *SegmentBackupInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_SegmentBackupInfo.Merge(m, src) -} -func (m *SegmentBackupInfo) XXX_Size() int { - return xxx_messageInfo_SegmentBackupInfo.Size(m) -} -func (m *SegmentBackupInfo) XXX_DiscardUnknown() { - xxx_messageInfo_SegmentBackupInfo.DiscardUnknown(m) + +func (*SegmentBackupInfo) ProtoMessage() {} + +func (x *SegmentBackupInfo) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[3] + 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) } -var xxx_messageInfo_SegmentBackupInfo proto.InternalMessageInfo +// Deprecated: Use SegmentBackupInfo.ProtoReflect.Descriptor instead. +func (*SegmentBackupInfo) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{3} +} -func (m *SegmentBackupInfo) GetSegmentId() int64 { - if m != nil { - return m.SegmentId +func (x *SegmentBackupInfo) GetSegmentId() int64 { + if x != nil { + return x.SegmentId } return 0 } -func (m *SegmentBackupInfo) GetCollectionId() int64 { - if m != nil { - return m.CollectionId +func (x *SegmentBackupInfo) GetCollectionId() int64 { + if x != nil { + return x.CollectionId } return 0 } -func (m *SegmentBackupInfo) GetPartitionId() int64 { - if m != nil { - return m.PartitionId +func (x *SegmentBackupInfo) GetPartitionId() int64 { + if x != nil { + return x.PartitionId } return 0 } -func (m *SegmentBackupInfo) GetNumOfRows() int64 { - if m != nil { - return m.NumOfRows +func (x *SegmentBackupInfo) GetNumOfRows() int64 { + if x != nil { + return x.NumOfRows } return 0 } -func (m *SegmentBackupInfo) GetBinlogs() []*FieldBinlog { - if m != nil { - return m.Binlogs +func (x *SegmentBackupInfo) GetBinlogs() []*FieldBinlog { + if x != nil { + return x.Binlogs } return nil } -func (m *SegmentBackupInfo) GetStatslogs() []*FieldBinlog { - if m != nil { - return m.Statslogs +func (x *SegmentBackupInfo) GetStatslogs() []*FieldBinlog { + if x != nil { + return x.Statslogs } return nil } -func (m *SegmentBackupInfo) GetDeltalogs() []*FieldBinlog { - if m != nil { - return m.Deltalogs +func (x *SegmentBackupInfo) GetDeltalogs() []*FieldBinlog { + if x != nil { + return x.Deltalogs } return nil } -func (m *SegmentBackupInfo) GetSize() int64 { - if m != nil { - return m.Size +func (x *SegmentBackupInfo) GetSize() int64 { + if x != nil { + return x.Size } return 0 } -func (m *SegmentBackupInfo) GetGroupId() int64 { - if m != nil { - return m.GroupId +func (x *SegmentBackupInfo) GetGroupId() int64 { + if x != nil { + return x.GroupId } return 0 } -func (m *SegmentBackupInfo) GetBackuped() bool { - if m != nil { - return m.Backuped +func (x *SegmentBackupInfo) GetBackuped() bool { + if x != nil { + return x.Backuped } return false } -func (m *SegmentBackupInfo) GetIsL0() bool { - if m != nil { - return m.IsL0 +func (x *SegmentBackupInfo) GetIsL0() bool { + if x != nil { + return x.IsL0 } return false } @@ -740,6 +948,10 @@ func (m *SegmentBackupInfo) GetIsL0() bool { // * // root of backup type BackupInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` StateCode BackupTaskStateCode `protobuf:"varint,2,opt,name=state_code,json=stateCode,proto3,enum=milvus.proto.backup.BackupTaskStateCode" json:"state_code"` ErrorMessage string `protobuf:"bytes,3,opt,name=errorMessage,proto3" json:"errorMessage,omitempty"` @@ -750,120 +962,124 @@ type BackupInfo struct { // backup timestamp BackupTimestamp uint64 `protobuf:"varint,8,opt,name=backup_timestamp,json=backupTimestamp,proto3" json:"backup_timestamp,omitempty"` // array of collection backup - CollectionBackups []*CollectionBackupInfo `protobuf:"bytes,9,rep,name=collection_backups,json=collectionBackups,proto3" json:"collection_backups,omitempty"` - Size int64 `protobuf:"varint,10,opt,name=size,proto3" json:"size"` - MilvusVersion string `protobuf:"bytes,11,opt,name=milvus_version,json=milvusVersion,proto3" json:"milvus_version,omitempty"` - RbacMeta *RBACMeta `protobuf:"bytes,12,opt,name=rbac_meta,json=rbacMeta,proto3" json:"rbac_meta,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *BackupInfo) Reset() { *m = BackupInfo{} } -func (m *BackupInfo) String() string { return proto.CompactTextString(m) } -func (*BackupInfo) ProtoMessage() {} -func (*BackupInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{4} + CollectionBackups []*CollectionBackupInfo `protobuf:"bytes,9,rep,name=collection_backups,json=collectionBackups,proto3" json:"collection_backups,omitempty"` + Size int64 `protobuf:"varint,10,opt,name=size,proto3" json:"size"` + MilvusVersion string `protobuf:"bytes,11,opt,name=milvus_version,json=milvusVersion,proto3" json:"milvus_version,omitempty"` + RbacMeta *RBACMeta `protobuf:"bytes,12,opt,name=rbac_meta,json=rbacMeta,proto3" json:"rbac_meta,omitempty"` } -func (m *BackupInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BackupInfo.Unmarshal(m, b) -} -func (m *BackupInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BackupInfo.Marshal(b, m, deterministic) -} -func (m *BackupInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_BackupInfo.Merge(m, src) +func (x *BackupInfo) Reset() { + *x = BackupInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *BackupInfo) XXX_Size() int { - return xxx_messageInfo_BackupInfo.Size(m) + +func (x *BackupInfo) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *BackupInfo) XXX_DiscardUnknown() { - xxx_messageInfo_BackupInfo.DiscardUnknown(m) + +func (*BackupInfo) ProtoMessage() {} + +func (x *BackupInfo) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[4] + 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) } -var xxx_messageInfo_BackupInfo proto.InternalMessageInfo +// Deprecated: Use BackupInfo.ProtoReflect.Descriptor instead. +func (*BackupInfo) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{4} +} -func (m *BackupInfo) GetId() string { - if m != nil { - return m.Id +func (x *BackupInfo) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *BackupInfo) GetStateCode() BackupTaskStateCode { - if m != nil { - return m.StateCode +func (x *BackupInfo) GetStateCode() BackupTaskStateCode { + if x != nil { + return x.StateCode } return BackupTaskStateCode_BACKUP_INITIAL } -func (m *BackupInfo) GetErrorMessage() string { - if m != nil { - return m.ErrorMessage +func (x *BackupInfo) GetErrorMessage() string { + if x != nil { + return x.ErrorMessage } return "" } -func (m *BackupInfo) GetStartTime() int64 { - if m != nil { - return m.StartTime +func (x *BackupInfo) GetStartTime() int64 { + if x != nil { + return x.StartTime } return 0 } -func (m *BackupInfo) GetEndTime() int64 { - if m != nil { - return m.EndTime +func (x *BackupInfo) GetEndTime() int64 { + if x != nil { + return x.EndTime } return 0 } -func (m *BackupInfo) GetProgress() int32 { - if m != nil { - return m.Progress +func (x *BackupInfo) GetProgress() int32 { + if x != nil { + return x.Progress } return 0 } -func (m *BackupInfo) GetName() string { - if m != nil { - return m.Name +func (x *BackupInfo) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *BackupInfo) GetBackupTimestamp() uint64 { - if m != nil { - return m.BackupTimestamp +func (x *BackupInfo) GetBackupTimestamp() uint64 { + if x != nil { + return x.BackupTimestamp } return 0 } -func (m *BackupInfo) GetCollectionBackups() []*CollectionBackupInfo { - if m != nil { - return m.CollectionBackups +func (x *BackupInfo) GetCollectionBackups() []*CollectionBackupInfo { + if x != nil { + return x.CollectionBackups } return nil } -func (m *BackupInfo) GetSize() int64 { - if m != nil { - return m.Size +func (x *BackupInfo) GetSize() int64 { + if x != nil { + return x.Size } return 0 } -func (m *BackupInfo) GetMilvusVersion() string { - if m != nil { - return m.MilvusVersion +func (x *BackupInfo) GetMilvusVersion() string { + if x != nil { + return x.MilvusVersion } return "" } -func (m *BackupInfo) GetRbacMeta() *RBACMeta { - if m != nil { - return m.RbacMeta +func (x *BackupInfo) GetRbacMeta() *RBACMeta { + if x != nil { + return x.RbacMeta } return nil } @@ -871,40 +1087,48 @@ func (m *BackupInfo) GetRbacMeta() *RBACMeta { // * // For level storage type CollectionLevelBackupInfo struct { - Infos []*CollectionBackupInfo `protobuf:"bytes,1,rep,name=infos,proto3" json:"infos,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *CollectionLevelBackupInfo) Reset() { *m = CollectionLevelBackupInfo{} } -func (m *CollectionLevelBackupInfo) String() string { return proto.CompactTextString(m) } -func (*CollectionLevelBackupInfo) ProtoMessage() {} -func (*CollectionLevelBackupInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{5} + Infos []*CollectionBackupInfo `protobuf:"bytes,1,rep,name=infos,proto3" json:"infos,omitempty"` } -func (m *CollectionLevelBackupInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CollectionLevelBackupInfo.Unmarshal(m, b) -} -func (m *CollectionLevelBackupInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CollectionLevelBackupInfo.Marshal(b, m, deterministic) -} -func (m *CollectionLevelBackupInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_CollectionLevelBackupInfo.Merge(m, src) +func (x *CollectionLevelBackupInfo) Reset() { + *x = CollectionLevelBackupInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CollectionLevelBackupInfo) XXX_Size() int { - return xxx_messageInfo_CollectionLevelBackupInfo.Size(m) + +func (x *CollectionLevelBackupInfo) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CollectionLevelBackupInfo) XXX_DiscardUnknown() { - xxx_messageInfo_CollectionLevelBackupInfo.DiscardUnknown(m) + +func (*CollectionLevelBackupInfo) ProtoMessage() {} + +func (x *CollectionLevelBackupInfo) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[5] + 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) } -var xxx_messageInfo_CollectionLevelBackupInfo proto.InternalMessageInfo +// Deprecated: Use CollectionLevelBackupInfo.ProtoReflect.Descriptor instead. +func (*CollectionLevelBackupInfo) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{5} +} -func (m *CollectionLevelBackupInfo) GetInfos() []*CollectionBackupInfo { - if m != nil { - return m.Infos +func (x *CollectionLevelBackupInfo) GetInfos() []*CollectionBackupInfo { + if x != nil { + return x.Infos } return nil } @@ -912,40 +1136,48 @@ func (m *CollectionLevelBackupInfo) GetInfos() []*CollectionBackupInfo { // * // For level storage type PartitionLevelBackupInfo struct { - Infos []*PartitionBackupInfo `protobuf:"bytes,1,rep,name=infos,proto3" json:"infos,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *PartitionLevelBackupInfo) Reset() { *m = PartitionLevelBackupInfo{} } -func (m *PartitionLevelBackupInfo) String() string { return proto.CompactTextString(m) } -func (*PartitionLevelBackupInfo) ProtoMessage() {} -func (*PartitionLevelBackupInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{6} + Infos []*PartitionBackupInfo `protobuf:"bytes,1,rep,name=infos,proto3" json:"infos,omitempty"` } -func (m *PartitionLevelBackupInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PartitionLevelBackupInfo.Unmarshal(m, b) -} -func (m *PartitionLevelBackupInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PartitionLevelBackupInfo.Marshal(b, m, deterministic) -} -func (m *PartitionLevelBackupInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_PartitionLevelBackupInfo.Merge(m, src) +func (x *PartitionLevelBackupInfo) Reset() { + *x = PartitionLevelBackupInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PartitionLevelBackupInfo) XXX_Size() int { - return xxx_messageInfo_PartitionLevelBackupInfo.Size(m) + +func (x *PartitionLevelBackupInfo) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PartitionLevelBackupInfo) XXX_DiscardUnknown() { - xxx_messageInfo_PartitionLevelBackupInfo.DiscardUnknown(m) + +func (*PartitionLevelBackupInfo) ProtoMessage() {} + +func (x *PartitionLevelBackupInfo) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[6] + 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) } -var xxx_messageInfo_PartitionLevelBackupInfo proto.InternalMessageInfo +// Deprecated: Use PartitionLevelBackupInfo.ProtoReflect.Descriptor instead. +func (*PartitionLevelBackupInfo) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{6} +} -func (m *PartitionLevelBackupInfo) GetInfos() []*PartitionBackupInfo { - if m != nil { - return m.Infos +func (x *PartitionLevelBackupInfo) GetInfos() []*PartitionBackupInfo { + if x != nil { + return x.Infos } return nil } @@ -953,40 +1185,48 @@ func (m *PartitionLevelBackupInfo) GetInfos() []*PartitionBackupInfo { // * // For level storage type SegmentLevelBackupInfo struct { - Infos []*SegmentBackupInfo `protobuf:"bytes,1,rep,name=infos,proto3" json:"infos,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SegmentLevelBackupInfo) Reset() { *m = SegmentLevelBackupInfo{} } -func (m *SegmentLevelBackupInfo) String() string { return proto.CompactTextString(m) } -func (*SegmentLevelBackupInfo) ProtoMessage() {} -func (*SegmentLevelBackupInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{7} + Infos []*SegmentBackupInfo `protobuf:"bytes,1,rep,name=infos,proto3" json:"infos,omitempty"` } -func (m *SegmentLevelBackupInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SegmentLevelBackupInfo.Unmarshal(m, b) -} -func (m *SegmentLevelBackupInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SegmentLevelBackupInfo.Marshal(b, m, deterministic) -} -func (m *SegmentLevelBackupInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_SegmentLevelBackupInfo.Merge(m, src) +func (x *SegmentLevelBackupInfo) Reset() { + *x = SegmentLevelBackupInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SegmentLevelBackupInfo) XXX_Size() int { - return xxx_messageInfo_SegmentLevelBackupInfo.Size(m) + +func (x *SegmentLevelBackupInfo) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SegmentLevelBackupInfo) XXX_DiscardUnknown() { - xxx_messageInfo_SegmentLevelBackupInfo.DiscardUnknown(m) + +func (*SegmentLevelBackupInfo) ProtoMessage() {} + +func (x *SegmentLevelBackupInfo) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[7] + 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) } -var xxx_messageInfo_SegmentLevelBackupInfo proto.InternalMessageInfo +// Deprecated: Use SegmentLevelBackupInfo.ProtoReflect.Descriptor instead. +func (*SegmentLevelBackupInfo) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{7} +} -func (m *SegmentLevelBackupInfo) GetInfos() []*SegmentBackupInfo { - if m != nil { - return m.Infos +func (x *SegmentLevelBackupInfo) GetInfos() []*SegmentBackupInfo { + if x != nil { + return x.Infos } return nil } @@ -994,6 +1234,10 @@ func (m *SegmentLevelBackupInfo) GetInfos() []*SegmentBackupInfo { // * // Create Backup in milvus type CreateBackupRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // uuid of request, will generate one if not set RequestId string `protobuf:"bytes,1,opt,name=requestId,proto3" json:"requestId,omitempty"` // backup name, will generate one if not set @@ -1015,110 +1259,114 @@ type CreateBackupRequest struct { // gc pause API address GcPauseAddress string `protobuf:"bytes,10,opt,name=gc_pause_address,json=gcPauseAddress,proto3" json:"gc_pause_address,omitempty"` // whether backup RBAC - Rbac bool `protobuf:"varint,11,opt,name=rbac,proto3" json:"rbac,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Rbac bool `protobuf:"varint,11,opt,name=rbac,proto3" json:"rbac,omitempty"` } -func (m *CreateBackupRequest) Reset() { *m = CreateBackupRequest{} } -func (m *CreateBackupRequest) String() string { return proto.CompactTextString(m) } -func (*CreateBackupRequest) ProtoMessage() {} -func (*CreateBackupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{8} +func (x *CreateBackupRequest) Reset() { + *x = CreateBackupRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CreateBackupRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateBackupRequest.Unmarshal(m, b) -} -func (m *CreateBackupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateBackupRequest.Marshal(b, m, deterministic) -} -func (m *CreateBackupRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateBackupRequest.Merge(m, src) -} -func (m *CreateBackupRequest) XXX_Size() int { - return xxx_messageInfo_CreateBackupRequest.Size(m) +func (x *CreateBackupRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CreateBackupRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateBackupRequest.DiscardUnknown(m) + +func (*CreateBackupRequest) ProtoMessage() {} + +func (x *CreateBackupRequest) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[8] + 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) } -var xxx_messageInfo_CreateBackupRequest proto.InternalMessageInfo +// Deprecated: Use CreateBackupRequest.ProtoReflect.Descriptor instead. +func (*CreateBackupRequest) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{8} +} -func (m *CreateBackupRequest) GetRequestId() string { - if m != nil { - return m.RequestId +func (x *CreateBackupRequest) GetRequestId() string { + if x != nil { + return x.RequestId } return "" } -func (m *CreateBackupRequest) GetBackupName() string { - if m != nil { - return m.BackupName +func (x *CreateBackupRequest) GetBackupName() string { + if x != nil { + return x.BackupName } return "" } -func (m *CreateBackupRequest) GetCollectionNames() []string { - if m != nil { - return m.CollectionNames +func (x *CreateBackupRequest) GetCollectionNames() []string { + if x != nil { + return x.CollectionNames } return nil } -func (m *CreateBackupRequest) GetAsync() bool { - if m != nil { - return m.Async +func (x *CreateBackupRequest) GetAsync() bool { + if x != nil { + return x.Async } return false } -func (m *CreateBackupRequest) GetDbCollections() *_struct.Value { - if m != nil { - return m.DbCollections +func (x *CreateBackupRequest) GetDbCollections() *_struct.Value { + if x != nil { + return x.DbCollections } return nil } -func (m *CreateBackupRequest) GetForce() bool { - if m != nil { - return m.Force +func (x *CreateBackupRequest) GetForce() bool { + if x != nil { + return x.Force } return false } -func (m *CreateBackupRequest) GetMetaOnly() bool { - if m != nil { - return m.MetaOnly +func (x *CreateBackupRequest) GetMetaOnly() bool { + if x != nil { + return x.MetaOnly } return false } -func (m *CreateBackupRequest) GetGcPauseEnable() bool { - if m != nil { - return m.GcPauseEnable +func (x *CreateBackupRequest) GetGcPauseEnable() bool { + if x != nil { + return x.GcPauseEnable } return false } -func (m *CreateBackupRequest) GetGcPauseSeconds() int32 { - if m != nil { - return m.GcPauseSeconds +func (x *CreateBackupRequest) GetGcPauseSeconds() int32 { + if x != nil { + return x.GcPauseSeconds } return 0 } -func (m *CreateBackupRequest) GetGcPauseAddress() string { - if m != nil { - return m.GcPauseAddress +func (x *CreateBackupRequest) GetGcPauseAddress() string { + if x != nil { + return x.GcPauseAddress } return "" } -func (m *CreateBackupRequest) GetRbac() bool { - if m != nil { - return m.Rbac +func (x *CreateBackupRequest) GetRbac() bool { + if x != nil { + return x.Rbac } return false } @@ -1126,6 +1374,10 @@ func (m *CreateBackupRequest) GetRbac() bool { // * // BackupInfoResponse type BackupInfoResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // uuid of the request to response RequestId string `protobuf:"bytes,1,opt,name=requestId,proto3" json:"requestId,omitempty"` // response code. 0 means success. others are fail @@ -1133,66 +1385,74 @@ type BackupInfoResponse struct { // error msg if fail Msg string `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg,omitempty"` // backup info entity - Data *BackupInfo `protobuf:"bytes,4,opt,name=data,proto3" json:"data"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Data *BackupInfo `protobuf:"bytes,4,opt,name=data,proto3" json:"data"` } -func (m *BackupInfoResponse) Reset() { *m = BackupInfoResponse{} } -func (m *BackupInfoResponse) String() string { return proto.CompactTextString(m) } -func (*BackupInfoResponse) ProtoMessage() {} -func (*BackupInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{9} +func (x *BackupInfoResponse) Reset() { + *x = BackupInfoResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *BackupInfoResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BackupInfoResponse.Unmarshal(m, b) -} -func (m *BackupInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BackupInfoResponse.Marshal(b, m, deterministic) -} -func (m *BackupInfoResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_BackupInfoResponse.Merge(m, src) -} -func (m *BackupInfoResponse) XXX_Size() int { - return xxx_messageInfo_BackupInfoResponse.Size(m) -} -func (m *BackupInfoResponse) XXX_DiscardUnknown() { - xxx_messageInfo_BackupInfoResponse.DiscardUnknown(m) +func (x *BackupInfoResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_BackupInfoResponse proto.InternalMessageInfo +func (*BackupInfoResponse) ProtoMessage() {} -func (m *BackupInfoResponse) GetRequestId() string { - if m != nil { - return m.RequestId +func (x *BackupInfoResponse) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[9] + 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 BackupInfoResponse.ProtoReflect.Descriptor instead. +func (*BackupInfoResponse) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{9} +} + +func (x *BackupInfoResponse) GetRequestId() string { + if x != nil { + return x.RequestId } return "" } -func (m *BackupInfoResponse) GetCode() ResponseCode { - if m != nil { - return m.Code +func (x *BackupInfoResponse) GetCode() ResponseCode { + if x != nil { + return x.Code } return ResponseCode_Success } -func (m *BackupInfoResponse) GetMsg() string { - if m != nil { - return m.Msg +func (x *BackupInfoResponse) GetMsg() string { + if x != nil { + return x.Msg } return "" } -func (m *BackupInfoResponse) GetData() *BackupInfo { - if m != nil { - return m.Data +func (x *BackupInfoResponse) GetData() *BackupInfo { + if x != nil { + return x.Data } return nil } type GetBackupRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // uuid of request, will generate one if not set RequestId string `protobuf:"bytes,1,opt,name=requestId,proto3" json:"requestId,omitempty"` // backup name to query, backup_name or backup_id is needed @@ -1204,129 +1464,145 @@ type GetBackupRequest struct { // if bucket_name and path is set. will override bucket/path in config. Path string `protobuf:"bytes,5,opt,name=path,proto3" json:"path,omitempty"` // if true, return simple response without too much detail to display - WithoutDetail bool `protobuf:"varint,6,opt,name=without_detail,json=withoutDetail,proto3" json:"without_detail,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + WithoutDetail bool `protobuf:"varint,6,opt,name=without_detail,json=withoutDetail,proto3" json:"without_detail,omitempty"` } -func (m *GetBackupRequest) Reset() { *m = GetBackupRequest{} } -func (m *GetBackupRequest) String() string { return proto.CompactTextString(m) } -func (*GetBackupRequest) ProtoMessage() {} -func (*GetBackupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{10} +func (x *GetBackupRequest) Reset() { + *x = GetBackupRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetBackupRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetBackupRequest.Unmarshal(m, b) -} -func (m *GetBackupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetBackupRequest.Marshal(b, m, deterministic) -} -func (m *GetBackupRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetBackupRequest.Merge(m, src) -} -func (m *GetBackupRequest) XXX_Size() int { - return xxx_messageInfo_GetBackupRequest.Size(m) +func (x *GetBackupRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetBackupRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetBackupRequest.DiscardUnknown(m) + +func (*GetBackupRequest) ProtoMessage() {} + +func (x *GetBackupRequest) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[10] + 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) } -var xxx_messageInfo_GetBackupRequest proto.InternalMessageInfo +// Deprecated: Use GetBackupRequest.ProtoReflect.Descriptor instead. +func (*GetBackupRequest) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{10} +} -func (m *GetBackupRequest) GetRequestId() string { - if m != nil { - return m.RequestId +func (x *GetBackupRequest) GetRequestId() string { + if x != nil { + return x.RequestId } return "" } -func (m *GetBackupRequest) GetBackupName() string { - if m != nil { - return m.BackupName +func (x *GetBackupRequest) GetBackupName() string { + if x != nil { + return x.BackupName } return "" } -func (m *GetBackupRequest) GetBackupId() string { - if m != nil { - return m.BackupId +func (x *GetBackupRequest) GetBackupId() string { + if x != nil { + return x.BackupId } return "" } -func (m *GetBackupRequest) GetBucketName() string { - if m != nil { - return m.BucketName +func (x *GetBackupRequest) GetBucketName() string { + if x != nil { + return x.BucketName } return "" } -func (m *GetBackupRequest) GetPath() string { - if m != nil { - return m.Path +func (x *GetBackupRequest) GetPath() string { + if x != nil { + return x.Path } return "" } -func (m *GetBackupRequest) GetWithoutDetail() bool { - if m != nil { - return m.WithoutDetail +func (x *GetBackupRequest) GetWithoutDetail() bool { + if x != nil { + return x.WithoutDetail } return false } type ListBackupsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // uuid of request, will generate one if not set RequestId string `protobuf:"bytes,1,opt,name=requestId,proto3" json:"requestId,omitempty"` // if collection_name is set, will only return backups contains this collection - CollectionName string `protobuf:"bytes,2,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + CollectionName string `protobuf:"bytes,2,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` } -func (m *ListBackupsRequest) Reset() { *m = ListBackupsRequest{} } -func (m *ListBackupsRequest) String() string { return proto.CompactTextString(m) } -func (*ListBackupsRequest) ProtoMessage() {} -func (*ListBackupsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{11} +func (x *ListBackupsRequest) Reset() { + *x = ListBackupsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListBackupsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListBackupsRequest.Unmarshal(m, b) -} -func (m *ListBackupsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListBackupsRequest.Marshal(b, m, deterministic) -} -func (m *ListBackupsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListBackupsRequest.Merge(m, src) +func (x *ListBackupsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListBackupsRequest) XXX_Size() int { - return xxx_messageInfo_ListBackupsRequest.Size(m) -} -func (m *ListBackupsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListBackupsRequest.DiscardUnknown(m) + +func (*ListBackupsRequest) ProtoMessage() {} + +func (x *ListBackupsRequest) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[11] + 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) } -var xxx_messageInfo_ListBackupsRequest proto.InternalMessageInfo +// Deprecated: Use ListBackupsRequest.ProtoReflect.Descriptor instead. +func (*ListBackupsRequest) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{11} +} -func (m *ListBackupsRequest) GetRequestId() string { - if m != nil { - return m.RequestId +func (x *ListBackupsRequest) GetRequestId() string { + if x != nil { + return x.RequestId } return "" } -func (m *ListBackupsRequest) GetCollectionName() string { - if m != nil { - return m.CollectionName +func (x *ListBackupsRequest) GetCollectionName() string { + if x != nil { + return x.CollectionName } return "" } type ListBackupsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // uuid of the request to response RequestId string `protobuf:"bytes,1,opt,name=requestId,proto3" json:"requestId,omitempty"` // response code. 0 means success. others are fail @@ -1334,173 +1610,197 @@ type ListBackupsResponse struct { // error msg if fail Msg string `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg,omitempty"` // backup info entities - Data []*BackupInfo `protobuf:"bytes,4,rep,name=data,proto3" json:"data"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Data []*BackupInfo `protobuf:"bytes,4,rep,name=data,proto3" json:"data"` } -func (m *ListBackupsResponse) Reset() { *m = ListBackupsResponse{} } -func (m *ListBackupsResponse) String() string { return proto.CompactTextString(m) } -func (*ListBackupsResponse) ProtoMessage() {} -func (*ListBackupsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{12} +func (x *ListBackupsResponse) Reset() { + *x = ListBackupsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListBackupsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListBackupsResponse.Unmarshal(m, b) -} -func (m *ListBackupsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListBackupsResponse.Marshal(b, m, deterministic) +func (x *ListBackupsResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListBackupsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListBackupsResponse.Merge(m, src) -} -func (m *ListBackupsResponse) XXX_Size() int { - return xxx_messageInfo_ListBackupsResponse.Size(m) -} -func (m *ListBackupsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListBackupsResponse.DiscardUnknown(m) + +func (*ListBackupsResponse) ProtoMessage() {} + +func (x *ListBackupsResponse) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[12] + 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) } -var xxx_messageInfo_ListBackupsResponse proto.InternalMessageInfo +// Deprecated: Use ListBackupsResponse.ProtoReflect.Descriptor instead. +func (*ListBackupsResponse) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{12} +} -func (m *ListBackupsResponse) GetRequestId() string { - if m != nil { - return m.RequestId +func (x *ListBackupsResponse) GetRequestId() string { + if x != nil { + return x.RequestId } return "" } -func (m *ListBackupsResponse) GetCode() ResponseCode { - if m != nil { - return m.Code +func (x *ListBackupsResponse) GetCode() ResponseCode { + if x != nil { + return x.Code } return ResponseCode_Success } -func (m *ListBackupsResponse) GetMsg() string { - if m != nil { - return m.Msg +func (x *ListBackupsResponse) GetMsg() string { + if x != nil { + return x.Msg } return "" } -func (m *ListBackupsResponse) GetData() []*BackupInfo { - if m != nil { - return m.Data +func (x *ListBackupsResponse) GetData() []*BackupInfo { + if x != nil { + return x.Data } return nil } type DeleteBackupRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // uuid of request, will generate one if not set RequestId string `protobuf:"bytes,1,opt,name=requestId,proto3" json:"requestId,omitempty"` // backup name - BackupName string `protobuf:"bytes,2,opt,name=backup_name,json=backupName,proto3" json:"backup_name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + BackupName string `protobuf:"bytes,2,opt,name=backup_name,json=backupName,proto3" json:"backup_name,omitempty"` } -func (m *DeleteBackupRequest) Reset() { *m = DeleteBackupRequest{} } -func (m *DeleteBackupRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteBackupRequest) ProtoMessage() {} -func (*DeleteBackupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{13} +func (x *DeleteBackupRequest) Reset() { + *x = DeleteBackupRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DeleteBackupRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteBackupRequest.Unmarshal(m, b) +func (x *DeleteBackupRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DeleteBackupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteBackupRequest.Marshal(b, m, deterministic) -} -func (m *DeleteBackupRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteBackupRequest.Merge(m, src) -} -func (m *DeleteBackupRequest) XXX_Size() int { - return xxx_messageInfo_DeleteBackupRequest.Size(m) -} -func (m *DeleteBackupRequest) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteBackupRequest.DiscardUnknown(m) + +func (*DeleteBackupRequest) ProtoMessage() {} + +func (x *DeleteBackupRequest) ProtoReflect() protoreflect.Message { + mi := &file_backup_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) } -var xxx_messageInfo_DeleteBackupRequest proto.InternalMessageInfo +// Deprecated: Use DeleteBackupRequest.ProtoReflect.Descriptor instead. +func (*DeleteBackupRequest) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{13} +} -func (m *DeleteBackupRequest) GetRequestId() string { - if m != nil { - return m.RequestId +func (x *DeleteBackupRequest) GetRequestId() string { + if x != nil { + return x.RequestId } return "" } -func (m *DeleteBackupRequest) GetBackupName() string { - if m != nil { - return m.BackupName +func (x *DeleteBackupRequest) GetBackupName() string { + if x != nil { + return x.BackupName } return "" } type DeleteBackupResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // uuid of the request to response RequestId string `protobuf:"bytes,1,opt,name=requestId,proto3" json:"requestId,omitempty"` // response code. 0 means success. others are fail Code ResponseCode `protobuf:"varint,2,opt,name=code,proto3,enum=milvus.proto.backup.ResponseCode" json:"code,omitempty"` // error msg if fail - Msg string `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Msg string `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg,omitempty"` } -func (m *DeleteBackupResponse) Reset() { *m = DeleteBackupResponse{} } -func (m *DeleteBackupResponse) String() string { return proto.CompactTextString(m) } -func (*DeleteBackupResponse) ProtoMessage() {} -func (*DeleteBackupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{14} +func (x *DeleteBackupResponse) Reset() { + *x = DeleteBackupResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DeleteBackupResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteBackupResponse.Unmarshal(m, b) -} -func (m *DeleteBackupResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteBackupResponse.Marshal(b, m, deterministic) -} -func (m *DeleteBackupResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteBackupResponse.Merge(m, src) +func (x *DeleteBackupResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DeleteBackupResponse) XXX_Size() int { - return xxx_messageInfo_DeleteBackupResponse.Size(m) -} -func (m *DeleteBackupResponse) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteBackupResponse.DiscardUnknown(m) + +func (*DeleteBackupResponse) ProtoMessage() {} + +func (x *DeleteBackupResponse) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[14] + 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) } -var xxx_messageInfo_DeleteBackupResponse proto.InternalMessageInfo +// Deprecated: Use DeleteBackupResponse.ProtoReflect.Descriptor instead. +func (*DeleteBackupResponse) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{14} +} -func (m *DeleteBackupResponse) GetRequestId() string { - if m != nil { - return m.RequestId +func (x *DeleteBackupResponse) GetRequestId() string { + if x != nil { + return x.RequestId } return "" } -func (m *DeleteBackupResponse) GetCode() ResponseCode { - if m != nil { - return m.Code +func (x *DeleteBackupResponse) GetCode() ResponseCode { + if x != nil { + return x.Code } return ResponseCode_Success } -func (m *DeleteBackupResponse) GetMsg() string { - if m != nil { - return m.Msg +func (x *DeleteBackupResponse) GetMsg() string { + if x != nil { + return x.Msg } return "" } type RestoreBackupRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // uuid of request, will generate one if not set RequestId string `protobuf:"bytes,1,opt,name=requestId,proto3" json:"requestId,omitempty"` // backup name to restore @@ -1539,258 +1839,274 @@ type RestoreBackupRequest struct { // whether restore RBAC Rbac bool `protobuf:"varint,18,opt,name=rbac,proto3" json:"rbac,omitempty"` // target max shard number - MaxShardNum int32 `protobuf:"varint,19,opt,name=maxShardNum,proto3" json:"maxShardNum,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + MaxShardNum int32 `protobuf:"varint,19,opt,name=maxShardNum,proto3" json:"maxShardNum,omitempty"` } -func (m *RestoreBackupRequest) Reset() { *m = RestoreBackupRequest{} } -func (m *RestoreBackupRequest) String() string { return proto.CompactTextString(m) } -func (*RestoreBackupRequest) ProtoMessage() {} -func (*RestoreBackupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{15} +func (x *RestoreBackupRequest) Reset() { + *x = RestoreBackupRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *RestoreBackupRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RestoreBackupRequest.Unmarshal(m, b) +func (x *RestoreBackupRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *RestoreBackupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RestoreBackupRequest.Marshal(b, m, deterministic) -} -func (m *RestoreBackupRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_RestoreBackupRequest.Merge(m, src) -} -func (m *RestoreBackupRequest) XXX_Size() int { - return xxx_messageInfo_RestoreBackupRequest.Size(m) -} -func (m *RestoreBackupRequest) XXX_DiscardUnknown() { - xxx_messageInfo_RestoreBackupRequest.DiscardUnknown(m) + +func (*RestoreBackupRequest) ProtoMessage() {} + +func (x *RestoreBackupRequest) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[15] + 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) } -var xxx_messageInfo_RestoreBackupRequest proto.InternalMessageInfo +// Deprecated: Use RestoreBackupRequest.ProtoReflect.Descriptor instead. +func (*RestoreBackupRequest) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{15} +} -func (m *RestoreBackupRequest) GetRequestId() string { - if m != nil { - return m.RequestId +func (x *RestoreBackupRequest) GetRequestId() string { + if x != nil { + return x.RequestId } return "" } -func (m *RestoreBackupRequest) GetBackupName() string { - if m != nil { - return m.BackupName +func (x *RestoreBackupRequest) GetBackupName() string { + if x != nil { + return x.BackupName } return "" } -func (m *RestoreBackupRequest) GetCollectionNames() []string { - if m != nil { - return m.CollectionNames +func (x *RestoreBackupRequest) GetCollectionNames() []string { + if x != nil { + return x.CollectionNames } return nil } -func (m *RestoreBackupRequest) GetCollectionSuffix() string { - if m != nil { - return m.CollectionSuffix +func (x *RestoreBackupRequest) GetCollectionSuffix() string { + if x != nil { + return x.CollectionSuffix } return "" } -func (m *RestoreBackupRequest) GetCollectionRenames() map[string]string { - if m != nil { - return m.CollectionRenames +func (x *RestoreBackupRequest) GetCollectionRenames() map[string]string { + if x != nil { + return x.CollectionRenames } return nil } -func (m *RestoreBackupRequest) GetAsync() bool { - if m != nil { - return m.Async +func (x *RestoreBackupRequest) GetAsync() bool { + if x != nil { + return x.Async } return false } -func (m *RestoreBackupRequest) GetBucketName() string { - if m != nil { - return m.BucketName +func (x *RestoreBackupRequest) GetBucketName() string { + if x != nil { + return x.BucketName } return "" } -func (m *RestoreBackupRequest) GetPath() string { - if m != nil { - return m.Path +func (x *RestoreBackupRequest) GetPath() string { + if x != nil { + return x.Path } return "" } -func (m *RestoreBackupRequest) GetDbCollections() *_struct.Value { - if m != nil { - return m.DbCollections +func (x *RestoreBackupRequest) GetDbCollections() *_struct.Value { + if x != nil { + return x.DbCollections } return nil } -func (m *RestoreBackupRequest) GetMetaOnly() bool { - if m != nil { - return m.MetaOnly +func (x *RestoreBackupRequest) GetMetaOnly() bool { + if x != nil { + return x.MetaOnly } return false } -func (m *RestoreBackupRequest) GetRestoreIndex() bool { - if m != nil { - return m.RestoreIndex +func (x *RestoreBackupRequest) GetRestoreIndex() bool { + if x != nil { + return x.RestoreIndex } return false } -func (m *RestoreBackupRequest) GetUseAutoIndex() bool { - if m != nil { - return m.UseAutoIndex +func (x *RestoreBackupRequest) GetUseAutoIndex() bool { + if x != nil { + return x.UseAutoIndex } return false } -func (m *RestoreBackupRequest) GetDropExistCollection() bool { - if m != nil { - return m.DropExistCollection +func (x *RestoreBackupRequest) GetDropExistCollection() bool { + if x != nil { + return x.DropExistCollection } return false } -func (m *RestoreBackupRequest) GetDropExistIndex() bool { - if m != nil { - return m.DropExistIndex +func (x *RestoreBackupRequest) GetDropExistIndex() bool { + if x != nil { + return x.DropExistIndex } return false } -func (m *RestoreBackupRequest) GetSkipCreateCollection() bool { - if m != nil { - return m.SkipCreateCollection +func (x *RestoreBackupRequest) GetSkipCreateCollection() bool { + if x != nil { + return x.SkipCreateCollection } return false } -func (m *RestoreBackupRequest) GetId() string { - if m != nil { - return m.Id +func (x *RestoreBackupRequest) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *RestoreBackupRequest) GetSkipImportDiskQuotaCheck() bool { - if m != nil { - return m.SkipImportDiskQuotaCheck +func (x *RestoreBackupRequest) GetSkipImportDiskQuotaCheck() bool { + if x != nil { + return x.SkipImportDiskQuotaCheck } return false } -func (m *RestoreBackupRequest) GetRbac() bool { - if m != nil { - return m.Rbac +func (x *RestoreBackupRequest) GetRbac() bool { + if x != nil { + return x.Rbac } return false } -func (m *RestoreBackupRequest) GetMaxShardNum() int32 { - if m != nil { - return m.MaxShardNum +func (x *RestoreBackupRequest) GetMaxShardNum() int32 { + if x != nil { + return x.MaxShardNum } return 0 } type RestorePartitionTask struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - StateCode RestoreTaskStateCode `protobuf:"varint,2,opt,name=state_code,json=stateCode,proto3,enum=milvus.proto.backup.RestoreTaskStateCode" json:"state_code"` - ErrorMessage string `protobuf:"bytes,3,opt,name=errorMessage,proto3" json:"errorMessage,omitempty"` - StartTime int64 `protobuf:"varint,4,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` - EndTime int64 `protobuf:"varint,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` - Progress int32 `protobuf:"varint,6,opt,name=progress,proto3" json:"progress"` - PartBackup *PartitionBackupInfo `protobuf:"bytes,7,opt,name=part_backup,json=partBackup,proto3" json:"part_backup,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *RestorePartitionTask) Reset() { *m = RestorePartitionTask{} } -func (m *RestorePartitionTask) String() string { return proto.CompactTextString(m) } -func (*RestorePartitionTask) ProtoMessage() {} -func (*RestorePartitionTask) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{16} -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *RestorePartitionTask) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RestorePartitionTask.Unmarshal(m, b) -} -func (m *RestorePartitionTask) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RestorePartitionTask.Marshal(b, m, deterministic) + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + StateCode RestoreTaskStateCode `protobuf:"varint,2,opt,name=state_code,json=stateCode,proto3,enum=milvus.proto.backup.RestoreTaskStateCode" json:"state_code"` + ErrorMessage string `protobuf:"bytes,3,opt,name=errorMessage,proto3" json:"errorMessage,omitempty"` + StartTime int64 `protobuf:"varint,4,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + EndTime int64 `protobuf:"varint,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + Progress int32 `protobuf:"varint,6,opt,name=progress,proto3" json:"progress"` + PartBackup *PartitionBackupInfo `protobuf:"bytes,7,opt,name=part_backup,json=partBackup,proto3" json:"part_backup,omitempty"` } -func (m *RestorePartitionTask) XXX_Merge(src proto.Message) { - xxx_messageInfo_RestorePartitionTask.Merge(m, src) + +func (x *RestorePartitionTask) Reset() { + *x = RestorePartitionTask{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *RestorePartitionTask) XXX_Size() int { - return xxx_messageInfo_RestorePartitionTask.Size(m) + +func (x *RestorePartitionTask) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *RestorePartitionTask) XXX_DiscardUnknown() { - xxx_messageInfo_RestorePartitionTask.DiscardUnknown(m) + +func (*RestorePartitionTask) ProtoMessage() {} + +func (x *RestorePartitionTask) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_RestorePartitionTask proto.InternalMessageInfo +// Deprecated: Use RestorePartitionTask.ProtoReflect.Descriptor instead. +func (*RestorePartitionTask) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{16} +} -func (m *RestorePartitionTask) GetId() string { - if m != nil { - return m.Id +func (x *RestorePartitionTask) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *RestorePartitionTask) GetStateCode() RestoreTaskStateCode { - if m != nil { - return m.StateCode +func (x *RestorePartitionTask) GetStateCode() RestoreTaskStateCode { + if x != nil { + return x.StateCode } return RestoreTaskStateCode_INITIAL } -func (m *RestorePartitionTask) GetErrorMessage() string { - if m != nil { - return m.ErrorMessage +func (x *RestorePartitionTask) GetErrorMessage() string { + if x != nil { + return x.ErrorMessage } return "" } -func (m *RestorePartitionTask) GetStartTime() int64 { - if m != nil { - return m.StartTime +func (x *RestorePartitionTask) GetStartTime() int64 { + if x != nil { + return x.StartTime } return 0 } -func (m *RestorePartitionTask) GetEndTime() int64 { - if m != nil { - return m.EndTime +func (x *RestorePartitionTask) GetEndTime() int64 { + if x != nil { + return x.EndTime } return 0 } -func (m *RestorePartitionTask) GetProgress() int32 { - if m != nil { - return m.Progress +func (x *RestorePartitionTask) GetProgress() int32 { + if x != nil { + return x.Progress } return 0 } -func (m *RestorePartitionTask) GetPartBackup() *PartitionBackupInfo { - if m != nil { - return m.PartBackup +func (x *RestorePartitionTask) GetPartBackup() *PartitionBackupInfo { + if x != nil { + return x.PartBackup } return nil } type RestoreCollectionTask struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` StateCode RestoreTaskStateCode `protobuf:"varint,2,opt,name=state_code,json=stateCode,proto3,enum=milvus.proto.backup.RestoreTaskStateCode" json:"state_code"` ErrorMessage string `protobuf:"bytes,3,opt,name=errorMessage,proto3" json:"errorMessage,omitempty"` @@ -1817,178 +2133,186 @@ type RestoreCollectionTask struct { SkipCreateCollection bool `protobuf:"varint,18,opt,name=skipCreateCollection,proto3" json:"skipCreateCollection,omitempty"` SkipDiskQuotaCheck bool `protobuf:"varint,19,opt,name=skipDiskQuotaCheck,proto3" json:"skipDiskQuotaCheck,omitempty"` // target max shard number - MaxShardNum int32 `protobuf:"varint,20,opt,name=maxShardNum,proto3" json:"maxShardNum,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + MaxShardNum int32 `protobuf:"varint,20,opt,name=maxShardNum,proto3" json:"maxShardNum,omitempty"` } -func (m *RestoreCollectionTask) Reset() { *m = RestoreCollectionTask{} } -func (m *RestoreCollectionTask) String() string { return proto.CompactTextString(m) } -func (*RestoreCollectionTask) ProtoMessage() {} -func (*RestoreCollectionTask) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{17} +func (x *RestoreCollectionTask) Reset() { + *x = RestoreCollectionTask{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *RestoreCollectionTask) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RestoreCollectionTask.Unmarshal(m, b) +func (x *RestoreCollectionTask) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *RestoreCollectionTask) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RestoreCollectionTask.Marshal(b, m, deterministic) -} -func (m *RestoreCollectionTask) XXX_Merge(src proto.Message) { - xxx_messageInfo_RestoreCollectionTask.Merge(m, src) -} -func (m *RestoreCollectionTask) XXX_Size() int { - return xxx_messageInfo_RestoreCollectionTask.Size(m) -} -func (m *RestoreCollectionTask) XXX_DiscardUnknown() { - xxx_messageInfo_RestoreCollectionTask.DiscardUnknown(m) + +func (*RestoreCollectionTask) ProtoMessage() {} + +func (x *RestoreCollectionTask) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[17] + 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) } -var xxx_messageInfo_RestoreCollectionTask proto.InternalMessageInfo +// Deprecated: Use RestoreCollectionTask.ProtoReflect.Descriptor instead. +func (*RestoreCollectionTask) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{17} +} -func (m *RestoreCollectionTask) GetId() string { - if m != nil { - return m.Id +func (x *RestoreCollectionTask) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *RestoreCollectionTask) GetStateCode() RestoreTaskStateCode { - if m != nil { - return m.StateCode +func (x *RestoreCollectionTask) GetStateCode() RestoreTaskStateCode { + if x != nil { + return x.StateCode } return RestoreTaskStateCode_INITIAL } -func (m *RestoreCollectionTask) GetErrorMessage() string { - if m != nil { - return m.ErrorMessage +func (x *RestoreCollectionTask) GetErrorMessage() string { + if x != nil { + return x.ErrorMessage } return "" } -func (m *RestoreCollectionTask) GetStartTime() int64 { - if m != nil { - return m.StartTime +func (x *RestoreCollectionTask) GetStartTime() int64 { + if x != nil { + return x.StartTime } return 0 } -func (m *RestoreCollectionTask) GetEndTime() int64 { - if m != nil { - return m.EndTime +func (x *RestoreCollectionTask) GetEndTime() int64 { + if x != nil { + return x.EndTime } return 0 } -func (m *RestoreCollectionTask) GetCollBackup() *CollectionBackupInfo { - if m != nil { - return m.CollBackup +func (x *RestoreCollectionTask) GetCollBackup() *CollectionBackupInfo { + if x != nil { + return x.CollBackup } return nil } -func (m *RestoreCollectionTask) GetTargetCollectionName() string { - if m != nil { - return m.TargetCollectionName +func (x *RestoreCollectionTask) GetTargetCollectionName() string { + if x != nil { + return x.TargetCollectionName } return "" } -func (m *RestoreCollectionTask) GetPartitionRestoreTasks() []*RestorePartitionTask { - if m != nil { - return m.PartitionRestoreTasks +func (x *RestoreCollectionTask) GetPartitionRestoreTasks() []*RestorePartitionTask { + if x != nil { + return x.PartitionRestoreTasks } return nil } -func (m *RestoreCollectionTask) GetRestoredSize() int64 { - if m != nil { - return m.RestoredSize +func (x *RestoreCollectionTask) GetRestoredSize() int64 { + if x != nil { + return x.RestoredSize } return 0 } -func (m *RestoreCollectionTask) GetToRestoreSize() int64 { - if m != nil { - return m.ToRestoreSize +func (x *RestoreCollectionTask) GetToRestoreSize() int64 { + if x != nil { + return x.ToRestoreSize } return 0 } -func (m *RestoreCollectionTask) GetProgress() int32 { - if m != nil { - return m.Progress +func (x *RestoreCollectionTask) GetProgress() int32 { + if x != nil { + return x.Progress } return 0 } -func (m *RestoreCollectionTask) GetTargetDbName() string { - if m != nil { - return m.TargetDbName +func (x *RestoreCollectionTask) GetTargetDbName() string { + if x != nil { + return x.TargetDbName } return "" } -func (m *RestoreCollectionTask) GetMetaOnly() bool { - if m != nil { - return m.MetaOnly +func (x *RestoreCollectionTask) GetMetaOnly() bool { + if x != nil { + return x.MetaOnly } return false } -func (m *RestoreCollectionTask) GetRestoreIndex() bool { - if m != nil { - return m.RestoreIndex +func (x *RestoreCollectionTask) GetRestoreIndex() bool { + if x != nil { + return x.RestoreIndex } return false } -func (m *RestoreCollectionTask) GetUseAutoIndex() bool { - if m != nil { - return m.UseAutoIndex +func (x *RestoreCollectionTask) GetUseAutoIndex() bool { + if x != nil { + return x.UseAutoIndex } return false } -func (m *RestoreCollectionTask) GetDropExistCollection() bool { - if m != nil { - return m.DropExistCollection +func (x *RestoreCollectionTask) GetDropExistCollection() bool { + if x != nil { + return x.DropExistCollection } return false } -func (m *RestoreCollectionTask) GetDropExistIndex() bool { - if m != nil { - return m.DropExistIndex +func (x *RestoreCollectionTask) GetDropExistIndex() bool { + if x != nil { + return x.DropExistIndex } return false } -func (m *RestoreCollectionTask) GetSkipCreateCollection() bool { - if m != nil { - return m.SkipCreateCollection +func (x *RestoreCollectionTask) GetSkipCreateCollection() bool { + if x != nil { + return x.SkipCreateCollection } return false } -func (m *RestoreCollectionTask) GetSkipDiskQuotaCheck() bool { - if m != nil { - return m.SkipDiskQuotaCheck +func (x *RestoreCollectionTask) GetSkipDiskQuotaCheck() bool { + if x != nil { + return x.SkipDiskQuotaCheck } return false } -func (m *RestoreCollectionTask) GetMaxShardNum() int32 { - if m != nil { - return m.MaxShardNum +func (x *RestoreCollectionTask) GetMaxShardNum() int32 { + if x != nil { + return x.MaxShardNum } return 0 } type RestoreBackupTask struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` StateCode RestoreTaskStateCode `protobuf:"varint,2,opt,name=state_code,json=stateCode,proto3,enum=milvus.proto.backup.RestoreTaskStateCode" json:"state_code"` ErrorMessage string `protobuf:"bytes,3,opt,name=errorMessage,proto3" json:"errorMessage,omitempty"` @@ -1998,100 +2322,108 @@ type RestoreBackupTask struct { RestoredSize int64 `protobuf:"varint,7,opt,name=restored_size,json=restoredSize,proto3" json:"restored_size"` ToRestoreSize int64 `protobuf:"varint,8,opt,name=to_restore_size,json=toRestoreSize,proto3" json:"to_restore_size"` Progress int32 `protobuf:"varint,9,opt,name=progress,proto3" json:"progress"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *RestoreBackupTask) Reset() { *m = RestoreBackupTask{} } -func (m *RestoreBackupTask) String() string { return proto.CompactTextString(m) } -func (*RestoreBackupTask) ProtoMessage() {} -func (*RestoreBackupTask) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{18} +func (x *RestoreBackupTask) Reset() { + *x = RestoreBackupTask{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *RestoreBackupTask) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RestoreBackupTask.Unmarshal(m, b) -} -func (m *RestoreBackupTask) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RestoreBackupTask.Marshal(b, m, deterministic) +func (x *RestoreBackupTask) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *RestoreBackupTask) XXX_Merge(src proto.Message) { - xxx_messageInfo_RestoreBackupTask.Merge(m, src) -} -func (m *RestoreBackupTask) XXX_Size() int { - return xxx_messageInfo_RestoreBackupTask.Size(m) -} -func (m *RestoreBackupTask) XXX_DiscardUnknown() { - xxx_messageInfo_RestoreBackupTask.DiscardUnknown(m) + +func (*RestoreBackupTask) ProtoMessage() {} + +func (x *RestoreBackupTask) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[18] + 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) } -var xxx_messageInfo_RestoreBackupTask proto.InternalMessageInfo +// Deprecated: Use RestoreBackupTask.ProtoReflect.Descriptor instead. +func (*RestoreBackupTask) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{18} +} -func (m *RestoreBackupTask) GetId() string { - if m != nil { - return m.Id +func (x *RestoreBackupTask) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *RestoreBackupTask) GetStateCode() RestoreTaskStateCode { - if m != nil { - return m.StateCode +func (x *RestoreBackupTask) GetStateCode() RestoreTaskStateCode { + if x != nil { + return x.StateCode } return RestoreTaskStateCode_INITIAL } -func (m *RestoreBackupTask) GetErrorMessage() string { - if m != nil { - return m.ErrorMessage +func (x *RestoreBackupTask) GetErrorMessage() string { + if x != nil { + return x.ErrorMessage } return "" } -func (m *RestoreBackupTask) GetStartTime() int64 { - if m != nil { - return m.StartTime +func (x *RestoreBackupTask) GetStartTime() int64 { + if x != nil { + return x.StartTime } return 0 } -func (m *RestoreBackupTask) GetEndTime() int64 { - if m != nil { - return m.EndTime +func (x *RestoreBackupTask) GetEndTime() int64 { + if x != nil { + return x.EndTime } return 0 } -func (m *RestoreBackupTask) GetCollectionRestoreTasks() []*RestoreCollectionTask { - if m != nil { - return m.CollectionRestoreTasks +func (x *RestoreBackupTask) GetCollectionRestoreTasks() []*RestoreCollectionTask { + if x != nil { + return x.CollectionRestoreTasks } return nil } -func (m *RestoreBackupTask) GetRestoredSize() int64 { - if m != nil { - return m.RestoredSize +func (x *RestoreBackupTask) GetRestoredSize() int64 { + if x != nil { + return x.RestoredSize } return 0 } -func (m *RestoreBackupTask) GetToRestoreSize() int64 { - if m != nil { - return m.ToRestoreSize +func (x *RestoreBackupTask) GetToRestoreSize() int64 { + if x != nil { + return x.ToRestoreSize } return 0 } -func (m *RestoreBackupTask) GetProgress() int32 { - if m != nil { - return m.Progress +func (x *RestoreBackupTask) GetProgress() int32 { + if x != nil { + return x.Progress } return 0 } type RestoreBackupResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // uuid of the request to response RequestId string `protobuf:"bytes,1,opt,name=requestId,proto3" json:"requestId,omitempty"` // response code. 0 means success. others are fail @@ -2099,283 +2431,323 @@ type RestoreBackupResponse struct { // error msg if fail Msg string `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg,omitempty"` // restore task info entity - Data *RestoreBackupTask `protobuf:"bytes,4,opt,name=data,proto3" json:"data"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Data *RestoreBackupTask `protobuf:"bytes,4,opt,name=data,proto3" json:"data"` } -func (m *RestoreBackupResponse) Reset() { *m = RestoreBackupResponse{} } -func (m *RestoreBackupResponse) String() string { return proto.CompactTextString(m) } -func (*RestoreBackupResponse) ProtoMessage() {} -func (*RestoreBackupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{19} +func (x *RestoreBackupResponse) Reset() { + *x = RestoreBackupResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *RestoreBackupResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RestoreBackupResponse.Unmarshal(m, b) -} -func (m *RestoreBackupResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RestoreBackupResponse.Marshal(b, m, deterministic) +func (x *RestoreBackupResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *RestoreBackupResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_RestoreBackupResponse.Merge(m, src) -} -func (m *RestoreBackupResponse) XXX_Size() int { - return xxx_messageInfo_RestoreBackupResponse.Size(m) -} -func (m *RestoreBackupResponse) XXX_DiscardUnknown() { - xxx_messageInfo_RestoreBackupResponse.DiscardUnknown(m) + +func (*RestoreBackupResponse) ProtoMessage() {} + +func (x *RestoreBackupResponse) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[19] + 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) } -var xxx_messageInfo_RestoreBackupResponse proto.InternalMessageInfo +// Deprecated: Use RestoreBackupResponse.ProtoReflect.Descriptor instead. +func (*RestoreBackupResponse) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{19} +} -func (m *RestoreBackupResponse) GetRequestId() string { - if m != nil { - return m.RequestId +func (x *RestoreBackupResponse) GetRequestId() string { + if x != nil { + return x.RequestId } return "" } -func (m *RestoreBackupResponse) GetCode() ResponseCode { - if m != nil { - return m.Code +func (x *RestoreBackupResponse) GetCode() ResponseCode { + if x != nil { + return x.Code } return ResponseCode_Success } -func (m *RestoreBackupResponse) GetMsg() string { - if m != nil { - return m.Msg +func (x *RestoreBackupResponse) GetMsg() string { + if x != nil { + return x.Msg } return "" } -func (m *RestoreBackupResponse) GetData() *RestoreBackupTask { - if m != nil { - return m.Data +func (x *RestoreBackupResponse) GetData() *RestoreBackupTask { + if x != nil { + return x.Data } return nil } type GetRestoreStateRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // uuid of request, will generate one if not set RequestId string `protobuf:"bytes,1,opt,name=requestId,proto3" json:"requestId,omitempty"` // restore task id to query - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` } -func (m *GetRestoreStateRequest) Reset() { *m = GetRestoreStateRequest{} } -func (m *GetRestoreStateRequest) String() string { return proto.CompactTextString(m) } -func (*GetRestoreStateRequest) ProtoMessage() {} -func (*GetRestoreStateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{20} +func (x *GetRestoreStateRequest) Reset() { + *x = GetRestoreStateRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetRestoreStateRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetRestoreStateRequest.Unmarshal(m, b) -} -func (m *GetRestoreStateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetRestoreStateRequest.Marshal(b, m, deterministic) +func (x *GetRestoreStateRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetRestoreStateRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetRestoreStateRequest.Merge(m, src) -} -func (m *GetRestoreStateRequest) XXX_Size() int { - return xxx_messageInfo_GetRestoreStateRequest.Size(m) -} -func (m *GetRestoreStateRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetRestoreStateRequest.DiscardUnknown(m) + +func (*GetRestoreStateRequest) ProtoMessage() {} + +func (x *GetRestoreStateRequest) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[20] + 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) } -var xxx_messageInfo_GetRestoreStateRequest proto.InternalMessageInfo +// Deprecated: Use GetRestoreStateRequest.ProtoReflect.Descriptor instead. +func (*GetRestoreStateRequest) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{20} +} -func (m *GetRestoreStateRequest) GetRequestId() string { - if m != nil { - return m.RequestId +func (x *GetRestoreStateRequest) GetRequestId() string { + if x != nil { + return x.RequestId } return "" } -func (m *GetRestoreStateRequest) GetId() string { - if m != nil { - return m.Id +func (x *GetRestoreStateRequest) GetId() string { + if x != nil { + return x.Id } return "" } // copied from milvus data_coord.proto type FieldBinlog struct { - FieldID int64 `protobuf:"varint,1,opt,name=fieldID,proto3" json:"fieldID,omitempty"` - Binlogs []*Binlog `protobuf:"bytes,2,rep,name=binlogs,proto3" json:"binlogs,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *FieldBinlog) Reset() { *m = FieldBinlog{} } -func (m *FieldBinlog) String() string { return proto.CompactTextString(m) } -func (*FieldBinlog) ProtoMessage() {} -func (*FieldBinlog) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{21} + FieldID int64 `protobuf:"varint,1,opt,name=fieldID,proto3" json:"fieldID,omitempty"` + Binlogs []*Binlog `protobuf:"bytes,2,rep,name=binlogs,proto3" json:"binlogs,omitempty"` } -func (m *FieldBinlog) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FieldBinlog.Unmarshal(m, b) -} -func (m *FieldBinlog) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FieldBinlog.Marshal(b, m, deterministic) -} -func (m *FieldBinlog) XXX_Merge(src proto.Message) { - xxx_messageInfo_FieldBinlog.Merge(m, src) +func (x *FieldBinlog) Reset() { + *x = FieldBinlog{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *FieldBinlog) XXX_Size() int { - return xxx_messageInfo_FieldBinlog.Size(m) + +func (x *FieldBinlog) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *FieldBinlog) XXX_DiscardUnknown() { - xxx_messageInfo_FieldBinlog.DiscardUnknown(m) + +func (*FieldBinlog) ProtoMessage() {} + +func (x *FieldBinlog) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_FieldBinlog proto.InternalMessageInfo +// Deprecated: Use FieldBinlog.ProtoReflect.Descriptor instead. +func (*FieldBinlog) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{21} +} -func (m *FieldBinlog) GetFieldID() int64 { - if m != nil { - return m.FieldID +func (x *FieldBinlog) GetFieldID() int64 { + if x != nil { + return x.FieldID } return 0 } -func (m *FieldBinlog) GetBinlogs() []*Binlog { - if m != nil { - return m.Binlogs +func (x *FieldBinlog) GetBinlogs() []*Binlog { + if x != nil { + return x.Binlogs } return nil } type Binlog struct { - EntriesNum int64 `protobuf:"varint,1,opt,name=entries_num,json=entriesNum,proto3" json:"entries_num,omitempty"` - TimestampFrom uint64 `protobuf:"varint,2,opt,name=timestamp_from,json=timestampFrom,proto3" json:"timestamp_from,omitempty"` - TimestampTo uint64 `protobuf:"varint,3,opt,name=timestamp_to,json=timestampTo,proto3" json:"timestamp_to,omitempty"` - LogPath string `protobuf:"bytes,4,opt,name=log_path,json=logPath,proto3" json:"log_path,omitempty"` - LogSize int64 `protobuf:"varint,5,opt,name=log_size,json=logSize,proto3" json:"log_size"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Binlog) Reset() { *m = Binlog{} } -func (m *Binlog) String() string { return proto.CompactTextString(m) } -func (*Binlog) ProtoMessage() {} -func (*Binlog) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{22} -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *Binlog) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Binlog.Unmarshal(m, b) + EntriesNum int64 `protobuf:"varint,1,opt,name=entries_num,json=entriesNum,proto3" json:"entries_num,omitempty"` + TimestampFrom uint64 `protobuf:"varint,2,opt,name=timestamp_from,json=timestampFrom,proto3" json:"timestamp_from,omitempty"` + TimestampTo uint64 `protobuf:"varint,3,opt,name=timestamp_to,json=timestampTo,proto3" json:"timestamp_to,omitempty"` + LogPath string `protobuf:"bytes,4,opt,name=log_path,json=logPath,proto3" json:"log_path,omitempty"` + LogSize int64 `protobuf:"varint,5,opt,name=log_size,json=logSize,proto3" json:"log_size"` } -func (m *Binlog) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Binlog.Marshal(b, m, deterministic) -} -func (m *Binlog) XXX_Merge(src proto.Message) { - xxx_messageInfo_Binlog.Merge(m, src) + +func (x *Binlog) Reset() { + *x = Binlog{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Binlog) XXX_Size() int { - return xxx_messageInfo_Binlog.Size(m) + +func (x *Binlog) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Binlog) XXX_DiscardUnknown() { - xxx_messageInfo_Binlog.DiscardUnknown(m) + +func (*Binlog) ProtoMessage() {} + +func (x *Binlog) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[22] + 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) } -var xxx_messageInfo_Binlog proto.InternalMessageInfo +// Deprecated: Use Binlog.ProtoReflect.Descriptor instead. +func (*Binlog) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{22} +} -func (m *Binlog) GetEntriesNum() int64 { - if m != nil { - return m.EntriesNum +func (x *Binlog) GetEntriesNum() int64 { + if x != nil { + return x.EntriesNum } return 0 } -func (m *Binlog) GetTimestampFrom() uint64 { - if m != nil { - return m.TimestampFrom +func (x *Binlog) GetTimestampFrom() uint64 { + if x != nil { + return x.TimestampFrom } return 0 } -func (m *Binlog) GetTimestampTo() uint64 { - if m != nil { - return m.TimestampTo +func (x *Binlog) GetTimestampTo() uint64 { + if x != nil { + return x.TimestampTo } return 0 } -func (m *Binlog) GetLogPath() string { - if m != nil { - return m.LogPath +func (x *Binlog) GetLogPath() string { + if x != nil { + return x.LogPath } return "" } -func (m *Binlog) GetLogSize() int64 { - if m != nil { - return m.LogSize +func (x *Binlog) GetLogSize() int64 { + if x != nil { + return x.LogSize } return 0 } // copied from milvus common.proto type KeyValuePair struct { - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *KeyValuePair) Reset() { *m = KeyValuePair{} } -func (m *KeyValuePair) String() string { return proto.CompactTextString(m) } -func (*KeyValuePair) ProtoMessage() {} -func (*KeyValuePair) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{23} + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } -func (m *KeyValuePair) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_KeyValuePair.Unmarshal(m, b) -} -func (m *KeyValuePair) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_KeyValuePair.Marshal(b, m, deterministic) -} -func (m *KeyValuePair) XXX_Merge(src proto.Message) { - xxx_messageInfo_KeyValuePair.Merge(m, src) +func (x *KeyValuePair) Reset() { + *x = KeyValuePair{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *KeyValuePair) XXX_Size() int { - return xxx_messageInfo_KeyValuePair.Size(m) + +func (x *KeyValuePair) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *KeyValuePair) XXX_DiscardUnknown() { - xxx_messageInfo_KeyValuePair.DiscardUnknown(m) + +func (*KeyValuePair) ProtoMessage() {} + +func (x *KeyValuePair) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[23] + 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) } -var xxx_messageInfo_KeyValuePair proto.InternalMessageInfo +// Deprecated: Use KeyValuePair.ProtoReflect.Descriptor instead. +func (*KeyValuePair) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{23} +} -func (m *KeyValuePair) GetKey() string { - if m != nil { - return m.Key +func (x *KeyValuePair) GetKey() string { + if x != nil { + return x.Key } return "" } -func (m *KeyValuePair) GetValue() string { - if m != nil { - return m.Value +func (x *KeyValuePair) GetValue() string { + if x != nil { + return x.Value } return "" } type ValueField struct { - // Types that are valid to be assigned to Data: + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Data: // // *ValueField_BoolData // *ValueField_IntData @@ -2384,36 +2756,96 @@ type ValueField struct { // *ValueField_DoubleData // *ValueField_StringData // *ValueField_BytesData - Data isValueField_Data `protobuf_oneof:"data"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Data isValueField_Data `protobuf_oneof:"data"` } -func (m *ValueField) Reset() { *m = ValueField{} } -func (m *ValueField) String() string { return proto.CompactTextString(m) } -func (*ValueField) ProtoMessage() {} +func (x *ValueField) Reset() { + *x = ValueField{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValueField) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValueField) ProtoMessage() {} + +func (x *ValueField) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[24] + 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 ValueField.ProtoReflect.Descriptor instead. func (*ValueField) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{24} + return file_backup_proto_rawDescGZIP(), []int{24} +} + +func (m *ValueField) GetData() isValueField_Data { + if m != nil { + return m.Data + } + return nil } -func (m *ValueField) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ValueField.Unmarshal(m, b) +func (x *ValueField) GetBoolData() bool { + if x, ok := x.GetData().(*ValueField_BoolData); ok { + return x.BoolData + } + return false +} + +func (x *ValueField) GetIntData() int32 { + if x, ok := x.GetData().(*ValueField_IntData); ok { + return x.IntData + } + return 0 } -func (m *ValueField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ValueField.Marshal(b, m, deterministic) + +func (x *ValueField) GetLongData() int64 { + if x, ok := x.GetData().(*ValueField_LongData); ok { + return x.LongData + } + return 0 } -func (m *ValueField) XXX_Merge(src proto.Message) { - xxx_messageInfo_ValueField.Merge(m, src) + +func (x *ValueField) GetFloatData() float32 { + if x, ok := x.GetData().(*ValueField_FloatData); ok { + return x.FloatData + } + return 0 } -func (m *ValueField) XXX_Size() int { - return xxx_messageInfo_ValueField.Size(m) + +func (x *ValueField) GetDoubleData() float64 { + if x, ok := x.GetData().(*ValueField_DoubleData); ok { + return x.DoubleData + } + return 0 } -func (m *ValueField) XXX_DiscardUnknown() { - xxx_messageInfo_ValueField.DiscardUnknown(m) + +func (x *ValueField) GetStringData() string { + if x, ok := x.GetData().(*ValueField_StringData); ok { + return x.StringData + } + return "" } -var xxx_messageInfo_ValueField proto.InternalMessageInfo +func (x *ValueField) GetBytesData() []byte { + if x, ok := x.GetData().(*ValueField_BytesData); ok { + return x.BytesData + } + return nil +} type isValueField_Data interface { isValueField_Data() @@ -2461,734 +2893,897 @@ func (*ValueField_StringData) isValueField_Data() {} func (*ValueField_BytesData) isValueField_Data() {} -func (m *ValueField) GetData() isValueField_Data { - if m != nil { - return m.Data - } - return nil +type FieldSchema struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FieldID int64 `protobuf:"varint,1,opt,name=fieldID,proto3" json:"fieldID,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + IsPrimaryKey bool `protobuf:"varint,3,opt,name=is_primary_key,json=isPrimaryKey,proto3" json:"is_primary_key,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + DataType DataType `protobuf:"varint,5,opt,name=data_type,json=dataType,proto3,enum=milvus.proto.backup.DataType" json:"data_type,omitempty"` + TypeParams []*KeyValuePair `protobuf:"bytes,6,rep,name=type_params,json=typeParams,proto3" json:"type_params,omitempty"` + IndexParams []*KeyValuePair `protobuf:"bytes,7,rep,name=index_params,json=indexParams,proto3" json:"index_params,omitempty"` + AutoID bool `protobuf:"varint,8,opt,name=autoID,proto3" json:"autoID,omitempty"` + State FieldState `protobuf:"varint,9,opt,name=state,proto3,enum=milvus.proto.backup.FieldState" json:"state,omitempty"` // To keep compatible with older version, the default state is `Created`. + ElementType DataType `protobuf:"varint,10,opt,name=element_type,json=elementType,proto3,enum=milvus.proto.backup.DataType" json:"element_type,omitempty"` // For array type, the element type is stored here + DefaultValue *ValueField `protobuf:"bytes,11,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` // default_value only support scalars except array and json for now + IsDynamic bool `protobuf:"varint,12,opt,name=is_dynamic,json=isDynamic,proto3" json:"is_dynamic,omitempty"` // mark whether this field is the dynamic field + IsPartitionKey bool `protobuf:"varint,13,opt,name=is_partition_key,json=isPartitionKey,proto3" json:"is_partition_key,omitempty"` // enable logic partitions + Nullable bool `protobuf:"varint,14,opt,name=nullable,proto3" json:"nullable,omitempty"` + DefaultValueProto string `protobuf:"bytes,15,opt,name=default_value_proto,json=defaultValueProto,proto3" json:"default_value_proto,omitempty"` // json not support marshall oneof, so use proto string + IsFunctionOutput bool `protobuf:"varint,16,opt,name=is_function_output,json=isFunctionOutput,proto3" json:"is_function_output,omitempty"` } -func (m *ValueField) GetBoolData() bool { - if x, ok := m.GetData().(*ValueField_BoolData); ok { - return x.BoolData +func (x *FieldSchema) Reset() { + *x = FieldSchema{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return false } -func (m *ValueField) GetIntData() int32 { - if x, ok := m.GetData().(*ValueField_IntData); ok { - return x.IntData +func (x *FieldSchema) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FieldSchema) ProtoMessage() {} + +func (x *FieldSchema) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (m *ValueField) GetLongData() int64 { - if x, ok := m.GetData().(*ValueField_LongData); ok { - return x.LongData +// Deprecated: Use FieldSchema.ProtoReflect.Descriptor instead. +func (*FieldSchema) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{25} +} + +func (x *FieldSchema) GetFieldID() int64 { + if x != nil { + return x.FieldID } return 0 } -func (m *ValueField) GetFloatData() float32 { - if x, ok := m.GetData().(*ValueField_FloatData); ok { - return x.FloatData +func (x *FieldSchema) GetName() string { + if x != nil { + return x.Name } - return 0 + return "" } -func (m *ValueField) GetDoubleData() float64 { - if x, ok := m.GetData().(*ValueField_DoubleData); ok { - return x.DoubleData +func (x *FieldSchema) GetIsPrimaryKey() bool { + if x != nil { + return x.IsPrimaryKey } - return 0 + return false } -func (m *ValueField) GetStringData() string { - if x, ok := m.GetData().(*ValueField_StringData); ok { - return x.StringData +func (x *FieldSchema) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *ValueField) GetBytesData() []byte { - if x, ok := m.GetData().(*ValueField_BytesData); ok { - return x.BytesData +func (x *FieldSchema) GetDataType() DataType { + if x != nil { + return x.DataType } - return nil + return DataType_None } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*ValueField) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*ValueField_BoolData)(nil), - (*ValueField_IntData)(nil), - (*ValueField_LongData)(nil), - (*ValueField_FloatData)(nil), - (*ValueField_DoubleData)(nil), - (*ValueField_StringData)(nil), - (*ValueField_BytesData)(nil), +func (x *FieldSchema) GetTypeParams() []*KeyValuePair { + if x != nil { + return x.TypeParams } + return nil } -// * -// @brief Field schema. The same as https://github.com/milvus-io/milvus-proto schema.proto -type FieldSchema struct { - FieldID int64 `protobuf:"varint,1,opt,name=fieldID,proto3" json:"fieldID,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - IsPrimaryKey bool `protobuf:"varint,3,opt,name=is_primary_key,json=isPrimaryKey,proto3" json:"is_primary_key,omitempty"` - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - DataType DataType `protobuf:"varint,5,opt,name=data_type,json=dataType,proto3,enum=milvus.proto.backup.DataType" json:"data_type,omitempty"` - TypeParams []*KeyValuePair `protobuf:"bytes,6,rep,name=type_params,json=typeParams,proto3" json:"type_params,omitempty"` - IndexParams []*KeyValuePair `protobuf:"bytes,7,rep,name=index_params,json=indexParams,proto3" json:"index_params,omitempty"` - AutoID bool `protobuf:"varint,8,opt,name=autoID,proto3" json:"autoID,omitempty"` - State FieldState `protobuf:"varint,9,opt,name=state,proto3,enum=milvus.proto.backup.FieldState" json:"state,omitempty"` - ElementType DataType `protobuf:"varint,10,opt,name=element_type,json=elementType,proto3,enum=milvus.proto.backup.DataType" json:"element_type,omitempty"` - DefaultValue *ValueField `protobuf:"bytes,11,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` - IsDynamic bool `protobuf:"varint,12,opt,name=is_dynamic,json=isDynamic,proto3" json:"is_dynamic,omitempty"` - IsPartitionKey bool `protobuf:"varint,13,opt,name=is_partition_key,json=isPartitionKey,proto3" json:"is_partition_key,omitempty"` - Nullable bool `protobuf:"varint,14,opt,name=nullable,proto3" json:"nullable,omitempty"` - DefaultValueProto string `protobuf:"bytes,15,opt,name=default_value_proto,json=defaultValueProto,proto3" json:"default_value_proto,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *FieldSchema) Reset() { *m = FieldSchema{} } -func (m *FieldSchema) String() string { return proto.CompactTextString(m) } -func (*FieldSchema) ProtoMessage() {} -func (*FieldSchema) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{25} +func (x *FieldSchema) GetIndexParams() []*KeyValuePair { + if x != nil { + return x.IndexParams + } + return nil } -func (m *FieldSchema) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FieldSchema.Unmarshal(m, b) +func (x *FieldSchema) GetAutoID() bool { + if x != nil { + return x.AutoID + } + return false } -func (m *FieldSchema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FieldSchema.Marshal(b, m, deterministic) + +func (x *FieldSchema) GetState() FieldState { + if x != nil { + return x.State + } + return FieldState_FieldCreated } -func (m *FieldSchema) XXX_Merge(src proto.Message) { - xxx_messageInfo_FieldSchema.Merge(m, src) + +func (x *FieldSchema) GetElementType() DataType { + if x != nil { + return x.ElementType + } + return DataType_None } -func (m *FieldSchema) XXX_Size() int { - return xxx_messageInfo_FieldSchema.Size(m) + +func (x *FieldSchema) GetDefaultValue() *ValueField { + if x != nil { + return x.DefaultValue + } + return nil } -func (m *FieldSchema) XXX_DiscardUnknown() { - xxx_messageInfo_FieldSchema.DiscardUnknown(m) + +func (x *FieldSchema) GetIsDynamic() bool { + if x != nil { + return x.IsDynamic + } + return false } -var xxx_messageInfo_FieldSchema proto.InternalMessageInfo +func (x *FieldSchema) GetIsPartitionKey() bool { + if x != nil { + return x.IsPartitionKey + } + return false +} -func (m *FieldSchema) GetFieldID() int64 { - if m != nil { - return m.FieldID +func (x *FieldSchema) GetNullable() bool { + if x != nil { + return x.Nullable } - return 0 + return false } -func (m *FieldSchema) GetName() string { - if m != nil { - return m.Name +func (x *FieldSchema) GetDefaultValueProto() string { + if x != nil { + return x.DefaultValueProto } return "" } -func (m *FieldSchema) GetIsPrimaryKey() bool { - if m != nil { - return m.IsPrimaryKey +func (x *FieldSchema) GetIsFunctionOutput() bool { + if x != nil { + return x.IsFunctionOutput } return false } -func (m *FieldSchema) GetDescription() string { - if m != nil { - return m.Description - } - return "" +type FunctionSchema struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Id int64 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Type FunctionType `protobuf:"varint,4,opt,name=type,proto3,enum=milvus.proto.backup.FunctionType" json:"type,omitempty"` + InputFieldNames []string `protobuf:"bytes,5,rep,name=input_field_names,json=inputFieldNames,proto3" json:"input_field_names,omitempty"` + InputFieldIds []int64 `protobuf:"varint,6,rep,packed,name=input_field_ids,json=inputFieldIds,proto3" json:"input_field_ids,omitempty"` + OutputFieldNames []string `protobuf:"bytes,7,rep,name=output_field_names,json=outputFieldNames,proto3" json:"output_field_names,omitempty"` + OutputFieldIds []int64 `protobuf:"varint,8,rep,packed,name=output_field_ids,json=outputFieldIds,proto3" json:"output_field_ids,omitempty"` + Params []*KeyValuePair `protobuf:"bytes,9,rep,name=params,proto3" json:"params,omitempty"` } -func (m *FieldSchema) GetDataType() DataType { - if m != nil { - return m.DataType +func (x *FunctionSchema) Reset() { + *x = FunctionSchema{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return DataType_None } -func (m *FieldSchema) GetTypeParams() []*KeyValuePair { - if m != nil { - return m.TypeParams +func (x *FunctionSchema) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FunctionSchema) ProtoMessage() {} + +func (x *FunctionSchema) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *FieldSchema) GetIndexParams() []*KeyValuePair { - if m != nil { - return m.IndexParams +// Deprecated: Use FunctionSchema.ProtoReflect.Descriptor instead. +func (*FunctionSchema) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{26} +} + +func (x *FunctionSchema) GetName() string { + if x != nil { + return x.Name } - return nil + return "" } -func (m *FieldSchema) GetAutoID() bool { - if m != nil { - return m.AutoID +func (x *FunctionSchema) GetId() int64 { + if x != nil { + return x.Id } - return false + return 0 } -func (m *FieldSchema) GetState() FieldState { - if m != nil { - return m.State +func (x *FunctionSchema) GetDescription() string { + if x != nil { + return x.Description } - return FieldState_FieldCreated + return "" } -func (m *FieldSchema) GetElementType() DataType { - if m != nil { - return m.ElementType +func (x *FunctionSchema) GetType() FunctionType { + if x != nil { + return x.Type } - return DataType_None + return FunctionType_Unknown } -func (m *FieldSchema) GetDefaultValue() *ValueField { - if m != nil { - return m.DefaultValue +func (x *FunctionSchema) GetInputFieldNames() []string { + if x != nil { + return x.InputFieldNames } return nil } -func (m *FieldSchema) GetIsDynamic() bool { - if m != nil { - return m.IsDynamic +func (x *FunctionSchema) GetInputFieldIds() []int64 { + if x != nil { + return x.InputFieldIds } - return false + return nil } -func (m *FieldSchema) GetIsPartitionKey() bool { - if m != nil { - return m.IsPartitionKey +func (x *FunctionSchema) GetOutputFieldNames() []string { + if x != nil { + return x.OutputFieldNames } - return false + return nil } -func (m *FieldSchema) GetNullable() bool { - if m != nil { - return m.Nullable +func (x *FunctionSchema) GetOutputFieldIds() []int64 { + if x != nil { + return x.OutputFieldIds } - return false + return nil } -func (m *FieldSchema) GetDefaultValueProto() string { - if m != nil { - return m.DefaultValueProto +func (x *FunctionSchema) GetParams() []*KeyValuePair { + if x != nil { + return x.Params } - return "" + return nil } // * // @brief Collection schema type CollectionSchema struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - AutoID bool `protobuf:"varint,3,opt,name=autoID,proto3" json:"autoID,omitempty"` - Fields []*FieldSchema `protobuf:"bytes,4,rep,name=fields,proto3" json:"fields,omitempty"` - EnableDynamicField bool `protobuf:"varint,5,opt,name=enable_dynamic_field,json=enableDynamicField,proto3" json:"enable_dynamic_field,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CollectionSchema) Reset() { *m = CollectionSchema{} } -func (m *CollectionSchema) String() string { return proto.CompactTextString(m) } -func (*CollectionSchema) ProtoMessage() {} -func (*CollectionSchema) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{26} -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *CollectionSchema) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CollectionSchema.Unmarshal(m, b) -} -func (m *CollectionSchema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CollectionSchema.Marshal(b, m, deterministic) + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + AutoID bool `protobuf:"varint,3,opt,name=autoID,proto3" json:"autoID,omitempty"` // deprecated later, keep compatible with c++ part now + Fields []*FieldSchema `protobuf:"bytes,4,rep,name=fields,proto3" json:"fields,omitempty"` + EnableDynamicField bool `protobuf:"varint,5,opt,name=enable_dynamic_field,json=enableDynamicField,proto3" json:"enable_dynamic_field,omitempty"` // mark whether this table has the dynamic field function enabled. + Properties []*KeyValuePair `protobuf:"bytes,6,rep,name=properties,proto3" json:"properties,omitempty"` + Functions []*FunctionSchema `protobuf:"bytes,7,rep,name=functions,proto3" json:"functions,omitempty"` } -func (m *CollectionSchema) XXX_Merge(src proto.Message) { - xxx_messageInfo_CollectionSchema.Merge(m, src) + +func (x *CollectionSchema) Reset() { + *x = CollectionSchema{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CollectionSchema) XXX_Size() int { - return xxx_messageInfo_CollectionSchema.Size(m) + +func (x *CollectionSchema) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CollectionSchema) XXX_DiscardUnknown() { - xxx_messageInfo_CollectionSchema.DiscardUnknown(m) + +func (*CollectionSchema) ProtoMessage() {} + +func (x *CollectionSchema) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[27] + 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) } -var xxx_messageInfo_CollectionSchema proto.InternalMessageInfo +// Deprecated: Use CollectionSchema.ProtoReflect.Descriptor instead. +func (*CollectionSchema) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{27} +} -func (m *CollectionSchema) GetName() string { - if m != nil { - return m.Name +func (x *CollectionSchema) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *CollectionSchema) GetDescription() string { - if m != nil { - return m.Description +func (x *CollectionSchema) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *CollectionSchema) GetAutoID() bool { - if m != nil { - return m.AutoID +func (x *CollectionSchema) GetAutoID() bool { + if x != nil { + return x.AutoID } return false } -func (m *CollectionSchema) GetFields() []*FieldSchema { - if m != nil { - return m.Fields +func (x *CollectionSchema) GetFields() []*FieldSchema { + if x != nil { + return x.Fields } return nil } -func (m *CollectionSchema) GetEnableDynamicField() bool { - if m != nil { - return m.EnableDynamicField +func (x *CollectionSchema) GetEnableDynamicField() bool { + if x != nil { + return x.EnableDynamicField } return false } -type CheckRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *CollectionSchema) GetProperties() []*KeyValuePair { + if x != nil { + return x.Properties + } + return nil } -func (m *CheckRequest) Reset() { *m = CheckRequest{} } -func (m *CheckRequest) String() string { return proto.CompactTextString(m) } -func (*CheckRequest) ProtoMessage() {} -func (*CheckRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{27} +func (x *CollectionSchema) GetFunctions() []*FunctionSchema { + if x != nil { + return x.Functions + } + return nil } -func (m *CheckRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CheckRequest.Unmarshal(m, b) -} -func (m *CheckRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CheckRequest.Marshal(b, m, deterministic) +type CheckRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *CheckRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CheckRequest.Merge(m, src) + +func (x *CheckRequest) Reset() { + *x = CheckRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CheckRequest) XXX_Size() int { - return xxx_messageInfo_CheckRequest.Size(m) + +func (x *CheckRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CheckRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CheckRequest.DiscardUnknown(m) + +func (*CheckRequest) ProtoMessage() {} + +func (x *CheckRequest) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[28] + 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) } -var xxx_messageInfo_CheckRequest proto.InternalMessageInfo +// Deprecated: Use CheckRequest.ProtoReflect.Descriptor instead. +func (*CheckRequest) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{28} +} type CheckResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // response code. 0 means success. others are fail Code ResponseCode `protobuf:"varint,1,opt,name=code,proto3,enum=milvus.proto.backup.ResponseCode" json:"code,omitempty"` // error msg if fail - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` } -func (m *CheckResponse) Reset() { *m = CheckResponse{} } -func (m *CheckResponse) String() string { return proto.CompactTextString(m) } -func (*CheckResponse) ProtoMessage() {} -func (*CheckResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{28} +func (x *CheckResponse) Reset() { + *x = CheckResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CheckResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CheckResponse.Unmarshal(m, b) +func (x *CheckResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CheckResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CheckResponse.Marshal(b, m, deterministic) -} -func (m *CheckResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_CheckResponse.Merge(m, src) -} -func (m *CheckResponse) XXX_Size() int { - return xxx_messageInfo_CheckResponse.Size(m) -} -func (m *CheckResponse) XXX_DiscardUnknown() { - xxx_messageInfo_CheckResponse.DiscardUnknown(m) + +func (*CheckResponse) ProtoMessage() {} + +func (x *CheckResponse) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[29] + 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) } -var xxx_messageInfo_CheckResponse proto.InternalMessageInfo +// Deprecated: Use CheckResponse.ProtoReflect.Descriptor instead. +func (*CheckResponse) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{29} +} -func (m *CheckResponse) GetCode() ResponseCode { - if m != nil { - return m.Code +func (x *CheckResponse) GetCode() ResponseCode { + if x != nil { + return x.Code } return ResponseCode_Success } -func (m *CheckResponse) GetMsg() string { - if m != nil { - return m.Msg +func (x *CheckResponse) GetMsg() string { + if x != nil { + return x.Msg } return "" } type MsgPosition struct { - ChannelName string `protobuf:"bytes,1,opt,name=channel_name,json=channelName,proto3" json:"channel_name,omitempty"` - MsgID []byte `protobuf:"bytes,2,opt,name=msgID,proto3" json:"msgID,omitempty"` - MsgGroup string `protobuf:"bytes,3,opt,name=msgGroup,proto3" json:"msgGroup,omitempty"` - Timestamp uint64 `protobuf:"varint,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MsgPosition) Reset() { *m = MsgPosition{} } -func (m *MsgPosition) String() string { return proto.CompactTextString(m) } -func (*MsgPosition) ProtoMessage() {} -func (*MsgPosition) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{29} -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *MsgPosition) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MsgPosition.Unmarshal(m, b) -} -func (m *MsgPosition) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MsgPosition.Marshal(b, m, deterministic) + ChannelName string `protobuf:"bytes,1,opt,name=channel_name,json=channelName,proto3" json:"channel_name,omitempty"` + MsgID []byte `protobuf:"bytes,2,opt,name=msgID,proto3" json:"msgID,omitempty"` + MsgGroup string `protobuf:"bytes,3,opt,name=msgGroup,proto3" json:"msgGroup,omitempty"` + Timestamp uint64 `protobuf:"varint,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` } -func (m *MsgPosition) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgPosition.Merge(m, src) + +func (x *MsgPosition) Reset() { + *x = MsgPosition{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MsgPosition) XXX_Size() int { - return xxx_messageInfo_MsgPosition.Size(m) + +func (x *MsgPosition) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MsgPosition) XXX_DiscardUnknown() { - xxx_messageInfo_MsgPosition.DiscardUnknown(m) + +func (*MsgPosition) ProtoMessage() {} + +func (x *MsgPosition) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[30] + 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) } -var xxx_messageInfo_MsgPosition proto.InternalMessageInfo +// Deprecated: Use MsgPosition.ProtoReflect.Descriptor instead. +func (*MsgPosition) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{30} +} -func (m *MsgPosition) GetChannelName() string { - if m != nil { - return m.ChannelName +func (x *MsgPosition) GetChannelName() string { + if x != nil { + return x.ChannelName } return "" } -func (m *MsgPosition) GetMsgID() []byte { - if m != nil { - return m.MsgID +func (x *MsgPosition) GetMsgID() []byte { + if x != nil { + return x.MsgID } return nil } -func (m *MsgPosition) GetMsgGroup() string { - if m != nil { - return m.MsgGroup +func (x *MsgPosition) GetMsgGroup() string { + if x != nil { + return x.MsgGroup } return "" } -func (m *MsgPosition) GetTimestamp() uint64 { - if m != nil { - return m.Timestamp +func (x *MsgPosition) GetTimestamp() uint64 { + if x != nil { + return x.Timestamp } return 0 } type ChannelPosition struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Position string `protobuf:"bytes,2,opt,name=position,proto3" json:"position,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ChannelPosition) Reset() { *m = ChannelPosition{} } -func (m *ChannelPosition) String() string { return proto.CompactTextString(m) } -func (*ChannelPosition) ProtoMessage() {} -func (*ChannelPosition) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{30} + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Position string `protobuf:"bytes,2,opt,name=position,proto3" json:"position,omitempty"` } -func (m *ChannelPosition) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ChannelPosition.Unmarshal(m, b) -} -func (m *ChannelPosition) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ChannelPosition.Marshal(b, m, deterministic) -} -func (m *ChannelPosition) XXX_Merge(src proto.Message) { - xxx_messageInfo_ChannelPosition.Merge(m, src) +func (x *ChannelPosition) Reset() { + *x = ChannelPosition{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ChannelPosition) XXX_Size() int { - return xxx_messageInfo_ChannelPosition.Size(m) + +func (x *ChannelPosition) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ChannelPosition) XXX_DiscardUnknown() { - xxx_messageInfo_ChannelPosition.DiscardUnknown(m) + +func (*ChannelPosition) ProtoMessage() {} + +func (x *ChannelPosition) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[31] + 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) } -var xxx_messageInfo_ChannelPosition proto.InternalMessageInfo +// Deprecated: Use ChannelPosition.ProtoReflect.Descriptor instead. +func (*ChannelPosition) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{31} +} -func (m *ChannelPosition) GetName() string { - if m != nil { - return m.Name +func (x *ChannelPosition) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *ChannelPosition) GetPosition() string { - if m != nil { - return m.Position +func (x *ChannelPosition) GetPosition() string { + if x != nil { + return x.Position } return "" } type RoleEntity struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *RoleEntity) Reset() { *m = RoleEntity{} } -func (m *RoleEntity) String() string { return proto.CompactTextString(m) } -func (*RoleEntity) ProtoMessage() {} -func (*RoleEntity) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{31} + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (m *RoleEntity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RoleEntity.Unmarshal(m, b) -} -func (m *RoleEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RoleEntity.Marshal(b, m, deterministic) -} -func (m *RoleEntity) XXX_Merge(src proto.Message) { - xxx_messageInfo_RoleEntity.Merge(m, src) +func (x *RoleEntity) Reset() { + *x = RoleEntity{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *RoleEntity) XXX_Size() int { - return xxx_messageInfo_RoleEntity.Size(m) + +func (x *RoleEntity) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *RoleEntity) XXX_DiscardUnknown() { - xxx_messageInfo_RoleEntity.DiscardUnknown(m) + +func (*RoleEntity) ProtoMessage() {} + +func (x *RoleEntity) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[32] + 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) } -var xxx_messageInfo_RoleEntity proto.InternalMessageInfo +// Deprecated: Use RoleEntity.ProtoReflect.Descriptor instead. +func (*RoleEntity) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{32} +} -func (m *RoleEntity) GetName() string { - if m != nil { - return m.Name +func (x *RoleEntity) GetName() string { + if x != nil { + return x.Name } return "" } type UserEntity struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *UserEntity) Reset() { *m = UserEntity{} } -func (m *UserEntity) String() string { return proto.CompactTextString(m) } -func (*UserEntity) ProtoMessage() {} -func (*UserEntity) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{32} + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (m *UserEntity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UserEntity.Unmarshal(m, b) -} -func (m *UserEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UserEntity.Marshal(b, m, deterministic) -} -func (m *UserEntity) XXX_Merge(src proto.Message) { - xxx_messageInfo_UserEntity.Merge(m, src) +func (x *UserEntity) Reset() { + *x = UserEntity{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UserEntity) XXX_Size() int { - return xxx_messageInfo_UserEntity.Size(m) + +func (x *UserEntity) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UserEntity) XXX_DiscardUnknown() { - xxx_messageInfo_UserEntity.DiscardUnknown(m) + +func (*UserEntity) ProtoMessage() {} + +func (x *UserEntity) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[33] + 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) } -var xxx_messageInfo_UserEntity proto.InternalMessageInfo +// Deprecated: Use UserEntity.ProtoReflect.Descriptor instead. +func (*UserEntity) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{33} +} -func (m *UserEntity) GetName() string { - if m != nil { - return m.Name +func (x *UserEntity) GetName() string { + if x != nil { + return x.Name } return "" } type ObjectEntity struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ObjectEntity) Reset() { *m = ObjectEntity{} } -func (m *ObjectEntity) String() string { return proto.CompactTextString(m) } -func (*ObjectEntity) ProtoMessage() {} -func (*ObjectEntity) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{33} + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (m *ObjectEntity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ObjectEntity.Unmarshal(m, b) -} -func (m *ObjectEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ObjectEntity.Marshal(b, m, deterministic) -} -func (m *ObjectEntity) XXX_Merge(src proto.Message) { - xxx_messageInfo_ObjectEntity.Merge(m, src) +func (x *ObjectEntity) Reset() { + *x = ObjectEntity{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ObjectEntity) XXX_Size() int { - return xxx_messageInfo_ObjectEntity.Size(m) + +func (x *ObjectEntity) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ObjectEntity) XXX_DiscardUnknown() { - xxx_messageInfo_ObjectEntity.DiscardUnknown(m) + +func (*ObjectEntity) ProtoMessage() {} + +func (x *ObjectEntity) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[34] + 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) } -var xxx_messageInfo_ObjectEntity proto.InternalMessageInfo +// Deprecated: Use ObjectEntity.ProtoReflect.Descriptor instead. +func (*ObjectEntity) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{34} +} -func (m *ObjectEntity) GetName() string { - if m != nil { - return m.Name +func (x *ObjectEntity) GetName() string { + if x != nil { + return x.Name } return "" } type PrivilegeEntity struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *PrivilegeEntity) Reset() { *m = PrivilegeEntity{} } -func (m *PrivilegeEntity) String() string { return proto.CompactTextString(m) } -func (*PrivilegeEntity) ProtoMessage() {} -func (*PrivilegeEntity) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{34} + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (m *PrivilegeEntity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PrivilegeEntity.Unmarshal(m, b) -} -func (m *PrivilegeEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PrivilegeEntity.Marshal(b, m, deterministic) -} -func (m *PrivilegeEntity) XXX_Merge(src proto.Message) { - xxx_messageInfo_PrivilegeEntity.Merge(m, src) +func (x *PrivilegeEntity) Reset() { + *x = PrivilegeEntity{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PrivilegeEntity) XXX_Size() int { - return xxx_messageInfo_PrivilegeEntity.Size(m) + +func (x *PrivilegeEntity) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PrivilegeEntity) XXX_DiscardUnknown() { - xxx_messageInfo_PrivilegeEntity.DiscardUnknown(m) + +func (*PrivilegeEntity) ProtoMessage() {} + +func (x *PrivilegeEntity) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[35] + 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) } -var xxx_messageInfo_PrivilegeEntity proto.InternalMessageInfo +// Deprecated: Use PrivilegeEntity.ProtoReflect.Descriptor instead. +func (*PrivilegeEntity) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{35} +} -func (m *PrivilegeEntity) GetName() string { - if m != nil { - return m.Name +func (x *PrivilegeEntity) GetName() string { + if x != nil { + return x.Name } return "" } type GrantorEntity struct { - User *UserEntity `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` - Privilege *PrivilegeEntity `protobuf:"bytes,2,opt,name=privilege,proto3" json:"privilege,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GrantorEntity) Reset() { *m = GrantorEntity{} } -func (m *GrantorEntity) String() string { return proto.CompactTextString(m) } -func (*GrantorEntity) ProtoMessage() {} -func (*GrantorEntity) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{35} + User *UserEntity `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` + Privilege *PrivilegeEntity `protobuf:"bytes,2,opt,name=privilege,proto3" json:"privilege,omitempty"` } -func (m *GrantorEntity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GrantorEntity.Unmarshal(m, b) -} -func (m *GrantorEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GrantorEntity.Marshal(b, m, deterministic) -} -func (m *GrantorEntity) XXX_Merge(src proto.Message) { - xxx_messageInfo_GrantorEntity.Merge(m, src) +func (x *GrantorEntity) Reset() { + *x = GrantorEntity{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GrantorEntity) XXX_Size() int { - return xxx_messageInfo_GrantorEntity.Size(m) + +func (x *GrantorEntity) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GrantorEntity) XXX_DiscardUnknown() { - xxx_messageInfo_GrantorEntity.DiscardUnknown(m) + +func (*GrantorEntity) ProtoMessage() {} + +func (x *GrantorEntity) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[36] + 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) } -var xxx_messageInfo_GrantorEntity proto.InternalMessageInfo +// Deprecated: Use GrantorEntity.ProtoReflect.Descriptor instead. +func (*GrantorEntity) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{36} +} -func (m *GrantorEntity) GetUser() *UserEntity { - if m != nil { - return m.User +func (x *GrantorEntity) GetUser() *UserEntity { + if x != nil { + return x.User } return nil } -func (m *GrantorEntity) GetPrivilege() *PrivilegeEntity { - if m != nil { - return m.Privilege +func (x *GrantorEntity) GetPrivilege() *PrivilegeEntity { + if x != nil { + return x.Privilege } return nil } type GrantPrivilegeEntity struct { - Entities []*GrantorEntity `protobuf:"bytes,1,rep,name=entities,proto3" json:"entities,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GrantPrivilegeEntity) Reset() { *m = GrantPrivilegeEntity{} } -func (m *GrantPrivilegeEntity) String() string { return proto.CompactTextString(m) } -func (*GrantPrivilegeEntity) ProtoMessage() {} -func (*GrantPrivilegeEntity) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{36} + Entities []*GrantorEntity `protobuf:"bytes,1,rep,name=entities,proto3" json:"entities,omitempty"` } -func (m *GrantPrivilegeEntity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GrantPrivilegeEntity.Unmarshal(m, b) -} -func (m *GrantPrivilegeEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GrantPrivilegeEntity.Marshal(b, m, deterministic) -} -func (m *GrantPrivilegeEntity) XXX_Merge(src proto.Message) { - xxx_messageInfo_GrantPrivilegeEntity.Merge(m, src) +func (x *GrantPrivilegeEntity) Reset() { + *x = GrantPrivilegeEntity{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GrantPrivilegeEntity) XXX_Size() int { - return xxx_messageInfo_GrantPrivilegeEntity.Size(m) + +func (x *GrantPrivilegeEntity) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GrantPrivilegeEntity) XXX_DiscardUnknown() { - xxx_messageInfo_GrantPrivilegeEntity.DiscardUnknown(m) + +func (*GrantPrivilegeEntity) ProtoMessage() {} + +func (x *GrantPrivilegeEntity) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[37] + 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) } -var xxx_messageInfo_GrantPrivilegeEntity proto.InternalMessageInfo +// Deprecated: Use GrantPrivilegeEntity.ProtoReflect.Descriptor instead. +func (*GrantPrivilegeEntity) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{37} +} -func (m *GrantPrivilegeEntity) GetEntities() []*GrantorEntity { - if m != nil { - return m.Entities +func (x *GrantPrivilegeEntity) GetEntities() []*GrantorEntity { + if x != nil { + return x.Entities } return nil } type GrantEntity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // role Role *RoleEntity `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` // object @@ -3198,464 +3793,1631 @@ type GrantEntity struct { // privilege Grantor *GrantorEntity `protobuf:"bytes,4,opt,name=grantor,proto3" json:"grantor,omitempty"` // db name - DbName string `protobuf:"bytes,5,opt,name=db_name,json=dbName,proto3" json:"db_name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + DbName string `protobuf:"bytes,5,opt,name=db_name,json=dbName,proto3" json:"db_name,omitempty"` } -func (m *GrantEntity) Reset() { *m = GrantEntity{} } -func (m *GrantEntity) String() string { return proto.CompactTextString(m) } -func (*GrantEntity) ProtoMessage() {} -func (*GrantEntity) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{37} +func (x *GrantEntity) Reset() { + *x = GrantEntity{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GrantEntity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GrantEntity.Unmarshal(m, b) -} -func (m *GrantEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GrantEntity.Marshal(b, m, deterministic) -} -func (m *GrantEntity) XXX_Merge(src proto.Message) { - xxx_messageInfo_GrantEntity.Merge(m, src) +func (x *GrantEntity) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GrantEntity) XXX_Size() int { - return xxx_messageInfo_GrantEntity.Size(m) -} -func (m *GrantEntity) XXX_DiscardUnknown() { - xxx_messageInfo_GrantEntity.DiscardUnknown(m) + +func (*GrantEntity) ProtoMessage() {} + +func (x *GrantEntity) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[38] + 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) } -var xxx_messageInfo_GrantEntity proto.InternalMessageInfo +// Deprecated: Use GrantEntity.ProtoReflect.Descriptor instead. +func (*GrantEntity) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{38} +} -func (m *GrantEntity) GetRole() *RoleEntity { - if m != nil { - return m.Role +func (x *GrantEntity) GetRole() *RoleEntity { + if x != nil { + return x.Role } return nil } -func (m *GrantEntity) GetObject() *ObjectEntity { - if m != nil { - return m.Object +func (x *GrantEntity) GetObject() *ObjectEntity { + if x != nil { + return x.Object } return nil } -func (m *GrantEntity) GetObjectName() string { - if m != nil { - return m.ObjectName +func (x *GrantEntity) GetObjectName() string { + if x != nil { + return x.ObjectName } return "" } -func (m *GrantEntity) GetGrantor() *GrantorEntity { - if m != nil { - return m.Grantor +func (x *GrantEntity) GetGrantor() *GrantorEntity { + if x != nil { + return x.Grantor } return nil } -func (m *GrantEntity) GetDbName() string { - if m != nil { - return m.DbName +func (x *GrantEntity) GetDbName() string { + if x != nil { + return x.DbName } return "" } type UserInfo struct { - User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` - Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` - Roles []*RoleEntity `protobuf:"bytes,3,rep,name=roles,proto3" json:"roles,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *UserInfo) Reset() { *m = UserInfo{} } -func (m *UserInfo) String() string { return proto.CompactTextString(m) } -func (*UserInfo) ProtoMessage() {} -func (*UserInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{38} + User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` + Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` + Roles []*RoleEntity `protobuf:"bytes,3,rep,name=roles,proto3" json:"roles,omitempty"` } -func (m *UserInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UserInfo.Unmarshal(m, b) -} -func (m *UserInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UserInfo.Marshal(b, m, deterministic) -} -func (m *UserInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_UserInfo.Merge(m, src) +func (x *UserInfo) Reset() { + *x = UserInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UserInfo) XXX_Size() int { - return xxx_messageInfo_UserInfo.Size(m) + +func (x *UserInfo) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UserInfo) XXX_DiscardUnknown() { - xxx_messageInfo_UserInfo.DiscardUnknown(m) + +func (*UserInfo) ProtoMessage() {} + +func (x *UserInfo) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[39] + 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) } -var xxx_messageInfo_UserInfo proto.InternalMessageInfo +// Deprecated: Use UserInfo.ProtoReflect.Descriptor instead. +func (*UserInfo) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{39} +} -func (m *UserInfo) GetUser() string { - if m != nil { - return m.User +func (x *UserInfo) GetUser() string { + if x != nil { + return x.User } return "" } -func (m *UserInfo) GetPassword() string { - if m != nil { - return m.Password +func (x *UserInfo) GetPassword() string { + if x != nil { + return x.Password } return "" } -func (m *UserInfo) GetRoles() []*RoleEntity { - if m != nil { - return m.Roles +func (x *UserInfo) GetRoles() []*RoleEntity { + if x != nil { + return x.Roles } return nil } type RBACMeta struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // user Users []*UserInfo `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` // role Roles []*RoleEntity `protobuf:"bytes,2,rep,name=roles,proto3" json:"roles,omitempty"` // (role, object, previledge) - Grants []*GrantEntity `protobuf:"bytes,3,rep,name=grants,proto3" json:"grants,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Grants []*GrantEntity `protobuf:"bytes,3,rep,name=grants,proto3" json:"grants,omitempty"` } -func (m *RBACMeta) Reset() { *m = RBACMeta{} } -func (m *RBACMeta) String() string { return proto.CompactTextString(m) } -func (*RBACMeta) ProtoMessage() {} -func (*RBACMeta) Descriptor() ([]byte, []int) { - return fileDescriptor_65240d19de191688, []int{39} +func (x *RBACMeta) Reset() { + *x = RBACMeta{} + if protoimpl.UnsafeEnabled { + mi := &file_backup_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *RBACMeta) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RBACMeta.Unmarshal(m, b) -} -func (m *RBACMeta) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RBACMeta.Marshal(b, m, deterministic) +func (x *RBACMeta) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *RBACMeta) XXX_Merge(src proto.Message) { - xxx_messageInfo_RBACMeta.Merge(m, src) -} -func (m *RBACMeta) XXX_Size() int { - return xxx_messageInfo_RBACMeta.Size(m) -} -func (m *RBACMeta) XXX_DiscardUnknown() { - xxx_messageInfo_RBACMeta.DiscardUnknown(m) + +func (*RBACMeta) ProtoMessage() {} + +func (x *RBACMeta) ProtoReflect() protoreflect.Message { + mi := &file_backup_proto_msgTypes[40] + 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) } -var xxx_messageInfo_RBACMeta proto.InternalMessageInfo +// Deprecated: Use RBACMeta.ProtoReflect.Descriptor instead. +func (*RBACMeta) Descriptor() ([]byte, []int) { + return file_backup_proto_rawDescGZIP(), []int{40} +} -func (m *RBACMeta) GetUsers() []*UserInfo { - if m != nil { - return m.Users +func (x *RBACMeta) GetUsers() []*UserInfo { + if x != nil { + return x.Users } return nil } -func (m *RBACMeta) GetRoles() []*RoleEntity { - if m != nil { - return m.Roles +func (x *RBACMeta) GetRoles() []*RoleEntity { + if x != nil { + return x.Roles } return nil } -func (m *RBACMeta) GetGrants() []*GrantEntity { - if m != nil { - return m.Grants +func (x *RBACMeta) GetGrants() []*GrantEntity { + if x != nil { + return x.Grants } return nil } -func init() { - proto.RegisterEnum("milvus.proto.backup.ResponseCode", ResponseCode_name, ResponseCode_value) - proto.RegisterEnum("milvus.proto.backup.BackupTaskStateCode", BackupTaskStateCode_name, BackupTaskStateCode_value) - proto.RegisterEnum("milvus.proto.backup.RestoreTaskStateCode", RestoreTaskStateCode_name, RestoreTaskStateCode_value) - proto.RegisterEnum("milvus.proto.backup.ConsistencyLevel", ConsistencyLevel_name, ConsistencyLevel_value) - proto.RegisterEnum("milvus.proto.backup.DataType", DataType_name, DataType_value) - proto.RegisterEnum("milvus.proto.backup.FieldState", FieldState_name, FieldState_value) - proto.RegisterType((*IndexInfo)(nil), "milvus.proto.backup.IndexInfo") - proto.RegisterMapType((map[string]string)(nil), "milvus.proto.backup.IndexInfo.ParamsEntry") - proto.RegisterType((*CollectionBackupInfo)(nil), "milvus.proto.backup.CollectionBackupInfo") - proto.RegisterMapType((map[string]string)(nil), "milvus.proto.backup.CollectionBackupInfo.ChannelCheckpointsEntry") - proto.RegisterType((*PartitionBackupInfo)(nil), "milvus.proto.backup.PartitionBackupInfo") - proto.RegisterType((*SegmentBackupInfo)(nil), "milvus.proto.backup.SegmentBackupInfo") - proto.RegisterType((*BackupInfo)(nil), "milvus.proto.backup.BackupInfo") - proto.RegisterType((*CollectionLevelBackupInfo)(nil), "milvus.proto.backup.CollectionLevelBackupInfo") - proto.RegisterType((*PartitionLevelBackupInfo)(nil), "milvus.proto.backup.PartitionLevelBackupInfo") - proto.RegisterType((*SegmentLevelBackupInfo)(nil), "milvus.proto.backup.SegmentLevelBackupInfo") - proto.RegisterType((*CreateBackupRequest)(nil), "milvus.proto.backup.CreateBackupRequest") - proto.RegisterType((*BackupInfoResponse)(nil), "milvus.proto.backup.BackupInfoResponse") - proto.RegisterType((*GetBackupRequest)(nil), "milvus.proto.backup.GetBackupRequest") - proto.RegisterType((*ListBackupsRequest)(nil), "milvus.proto.backup.ListBackupsRequest") - proto.RegisterType((*ListBackupsResponse)(nil), "milvus.proto.backup.ListBackupsResponse") - proto.RegisterType((*DeleteBackupRequest)(nil), "milvus.proto.backup.DeleteBackupRequest") - proto.RegisterType((*DeleteBackupResponse)(nil), "milvus.proto.backup.DeleteBackupResponse") - proto.RegisterType((*RestoreBackupRequest)(nil), "milvus.proto.backup.RestoreBackupRequest") - proto.RegisterMapType((map[string]string)(nil), "milvus.proto.backup.RestoreBackupRequest.CollectionRenamesEntry") - proto.RegisterType((*RestorePartitionTask)(nil), "milvus.proto.backup.RestorePartitionTask") - proto.RegisterType((*RestoreCollectionTask)(nil), "milvus.proto.backup.RestoreCollectionTask") - proto.RegisterType((*RestoreBackupTask)(nil), "milvus.proto.backup.RestoreBackupTask") - proto.RegisterType((*RestoreBackupResponse)(nil), "milvus.proto.backup.RestoreBackupResponse") - proto.RegisterType((*GetRestoreStateRequest)(nil), "milvus.proto.backup.GetRestoreStateRequest") - proto.RegisterType((*FieldBinlog)(nil), "milvus.proto.backup.FieldBinlog") - proto.RegisterType((*Binlog)(nil), "milvus.proto.backup.Binlog") - proto.RegisterType((*KeyValuePair)(nil), "milvus.proto.backup.KeyValuePair") - proto.RegisterType((*ValueField)(nil), "milvus.proto.backup.ValueField") - proto.RegisterType((*FieldSchema)(nil), "milvus.proto.backup.FieldSchema") - proto.RegisterType((*CollectionSchema)(nil), "milvus.proto.backup.CollectionSchema") - proto.RegisterType((*CheckRequest)(nil), "milvus.proto.backup.CheckRequest") - proto.RegisterType((*CheckResponse)(nil), "milvus.proto.backup.CheckResponse") - proto.RegisterType((*MsgPosition)(nil), "milvus.proto.backup.MsgPosition") - proto.RegisterType((*ChannelPosition)(nil), "milvus.proto.backup.ChannelPosition") - proto.RegisterType((*RoleEntity)(nil), "milvus.proto.backup.RoleEntity") - proto.RegisterType((*UserEntity)(nil), "milvus.proto.backup.UserEntity") - proto.RegisterType((*ObjectEntity)(nil), "milvus.proto.backup.ObjectEntity") - proto.RegisterType((*PrivilegeEntity)(nil), "milvus.proto.backup.PrivilegeEntity") - proto.RegisterType((*GrantorEntity)(nil), "milvus.proto.backup.GrantorEntity") - proto.RegisterType((*GrantPrivilegeEntity)(nil), "milvus.proto.backup.GrantPrivilegeEntity") - proto.RegisterType((*GrantEntity)(nil), "milvus.proto.backup.GrantEntity") - proto.RegisterType((*UserInfo)(nil), "milvus.proto.backup.UserInfo") - proto.RegisterType((*RBACMeta)(nil), "milvus.proto.backup.RBACMeta") -} - -func init() { proto.RegisterFile("backup.proto", fileDescriptor_65240d19de191688) } - -var fileDescriptor_65240d19de191688 = []byte{ - // 3420 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x3a, 0x4d, 0x73, 0x1b, 0xc7, - 0x72, 0xc4, 0x37, 0xd0, 0x0b, 0x80, 0xcb, 0x21, 0x45, 0x41, 0xd4, 0xd3, 0x13, 0xb5, 0xb1, 0xf4, - 0x28, 0xbd, 0x0a, 0xa5, 0x47, 0x3d, 0x2b, 0xb6, 0xea, 0x3d, 0x3f, 0xf3, 0x4b, 0x12, 0x6c, 0x89, - 0x62, 0x96, 0x14, 0x4b, 0xe5, 0x7c, 0x6c, 0x2d, 0x76, 0x87, 0xe0, 0x86, 0x8b, 0x1d, 0x78, 0x67, - 0x21, 0x09, 0xaa, 0x4a, 0x2a, 0xb7, 0xf8, 0x98, 0x43, 0xaa, 0x52, 0x95, 0x7f, 0x90, 0x9b, 0x73, - 0x70, 0x0e, 0xf9, 0x07, 0x49, 0xe5, 0x9a, 0x3f, 0x90, 0x4b, 0x8e, 0x3e, 0xa5, 0x72, 0x4d, 0x4d, - 0xcf, 0xec, 0x07, 0xc0, 0x25, 0x05, 0xa6, 0x5c, 0x71, 0x9c, 0xdb, 0x4e, 0x4f, 0x77, 0x4f, 0x4f, - 0x7f, 0x4d, 0xcf, 0xf4, 0x42, 0xb3, 0x67, 0x3b, 0xa7, 0xa3, 0xe1, 0xfa, 0x30, 0x64, 0x11, 0x23, - 0x8b, 0x03, 0xcf, 0x7f, 0x33, 0xe2, 0x72, 0xb4, 0x2e, 0xa7, 0x56, 0x7e, 0xd6, 0x67, 0xac, 0xef, - 0xd3, 0xfb, 0x08, 0xec, 0x8d, 0x8e, 0xef, 0xf3, 0x28, 0x1c, 0x39, 0x91, 0x44, 0x32, 0xfe, 0xa3, - 0x00, 0x8d, 0x6e, 0xe0, 0xd2, 0x77, 0xdd, 0xe0, 0x98, 0x91, 0x1b, 0x00, 0xc7, 0x1e, 0xf5, 0x5d, - 0x2b, 0xb0, 0x07, 0xb4, 0x53, 0x58, 0x2d, 0xac, 0x35, 0xcc, 0x06, 0x42, 0xf6, 0xec, 0x01, 0x15, - 0xd3, 0x9e, 0xc0, 0x95, 0xd3, 0x45, 0x39, 0x8d, 0x90, 0xc9, 0xe9, 0x68, 0x3c, 0xa4, 0x9d, 0x52, - 0x66, 0xfa, 0x70, 0x3c, 0xa4, 0x64, 0x0b, 0xaa, 0x43, 0x3b, 0xb4, 0x07, 0xbc, 0x53, 0x5e, 0x2d, - 0xad, 0x69, 0x1b, 0xf7, 0xd6, 0x73, 0xc4, 0x5d, 0x4f, 0x84, 0x59, 0xdf, 0x47, 0xe4, 0xdd, 0x20, - 0x0a, 0xc7, 0xa6, 0xa2, 0x5c, 0xf9, 0x14, 0xb4, 0x0c, 0x98, 0xe8, 0x50, 0x3a, 0xa5, 0x63, 0x25, - 0xa8, 0xf8, 0x24, 0x4b, 0x50, 0x79, 0x63, 0xfb, 0xa3, 0x58, 0x3a, 0x39, 0x78, 0x5c, 0xfc, 0xa4, - 0x60, 0xfc, 0x5b, 0x1d, 0x96, 0xb6, 0x99, 0xef, 0x53, 0x27, 0xf2, 0x58, 0xb0, 0x85, 0xab, 0xe1, - 0xa6, 0xdb, 0x50, 0xf4, 0x5c, 0xc5, 0xa3, 0xe8, 0xb9, 0xe4, 0x29, 0x00, 0x8f, 0xec, 0x88, 0x5a, - 0x0e, 0x73, 0x25, 0x9f, 0xf6, 0xc6, 0x5a, 0xae, 0xac, 0x92, 0xc9, 0xa1, 0xcd, 0x4f, 0x0f, 0x04, - 0xc1, 0x36, 0x73, 0xa9, 0xd9, 0xe0, 0xf1, 0x27, 0x31, 0xa0, 0x49, 0xc3, 0x90, 0x85, 0x2f, 0x28, - 0xe7, 0x76, 0x3f, 0xd6, 0xc8, 0x04, 0x4c, 0xe8, 0x8c, 0x47, 0x76, 0x18, 0x59, 0x91, 0x37, 0xa0, - 0x9d, 0xf2, 0x6a, 0x61, 0xad, 0x84, 0x2c, 0xc2, 0xe8, 0xd0, 0x1b, 0x50, 0x72, 0x0d, 0xea, 0x34, - 0x70, 0xe5, 0x64, 0x05, 0x27, 0x6b, 0x34, 0x70, 0x71, 0x6a, 0x05, 0xea, 0xc3, 0x90, 0xf5, 0x43, - 0xca, 0x79, 0xa7, 0xba, 0x5a, 0x58, 0xab, 0x98, 0xc9, 0x98, 0xfc, 0x1e, 0xb4, 0x9c, 0x64, 0xab, - 0x96, 0xe7, 0x76, 0x6a, 0x48, 0xdb, 0x4c, 0x81, 0x5d, 0x97, 0x5c, 0x85, 0x9a, 0xdb, 0x93, 0xa6, - 0xac, 0xa3, 0x64, 0x55, 0xb7, 0x87, 0x76, 0xfc, 0x05, 0xcc, 0x67, 0xa8, 0x11, 0xa1, 0x81, 0x08, - 0xed, 0x14, 0x8c, 0x88, 0xbf, 0x85, 0x2a, 0x77, 0x4e, 0xe8, 0xc0, 0xee, 0xc0, 0x6a, 0x61, 0x4d, - 0xdb, 0xb8, 0x9d, 0xab, 0xa5, 0x54, 0xe9, 0x07, 0x88, 0x6c, 0x2a, 0x22, 0xdc, 0xfb, 0x89, 0x1d, - 0xba, 0xdc, 0x0a, 0x46, 0x83, 0x8e, 0x86, 0x7b, 0x68, 0x48, 0xc8, 0xde, 0x68, 0x40, 0x4c, 0x58, - 0x70, 0x58, 0xc0, 0x3d, 0x1e, 0xd1, 0xc0, 0x19, 0x5b, 0x3e, 0x7d, 0x43, 0xfd, 0x4e, 0x13, 0xcd, - 0x71, 0xde, 0x42, 0x09, 0xf6, 0x73, 0x81, 0x6c, 0xea, 0xce, 0x14, 0x84, 0xbc, 0x82, 0x85, 0xa1, - 0x1d, 0x46, 0x1e, 0xee, 0x4c, 0x92, 0xf1, 0x4e, 0x0b, 0xdd, 0x31, 0xdf, 0xc4, 0xfb, 0x31, 0x76, - 0xea, 0x30, 0xa6, 0x3e, 0x9c, 0x04, 0x72, 0x72, 0x17, 0x74, 0x89, 0x8f, 0x96, 0xe2, 0x91, 0x3d, - 0x18, 0x76, 0xda, 0xab, 0x85, 0xb5, 0xb2, 0x39, 0x2f, 0xe1, 0x87, 0x31, 0x98, 0x10, 0x28, 0x73, - 0xef, 0x3d, 0xed, 0xcc, 0xa3, 0x45, 0xf0, 0x9b, 0x5c, 0x87, 0xc6, 0x89, 0xcd, 0x2d, 0x0c, 0x95, - 0x8e, 0xbe, 0x5a, 0x58, 0xab, 0x9b, 0xf5, 0x13, 0x9b, 0x63, 0x28, 0x90, 0xdf, 0x81, 0x26, 0xa3, - 0xca, 0x0b, 0x8e, 0x19, 0xef, 0x2c, 0xa0, 0xb0, 0x3f, 0xbf, 0x38, 0x76, 0x4c, 0x19, 0x88, 0xe2, - 0x93, 0x0b, 0x35, 0xfb, 0xcc, 0x76, 0x2d, 0x74, 0xcc, 0x0e, 0x91, 0x61, 0x29, 0x20, 0xe8, 0xb4, - 0xe4, 0x31, 0x5c, 0x53, 0xb2, 0x0f, 0x4f, 0xc6, 0xdc, 0x73, 0x6c, 0x3f, 0xb3, 0x89, 0x45, 0xdc, - 0xc4, 0x55, 0x89, 0xb0, 0xaf, 0xe6, 0xd3, 0xcd, 0x84, 0xb0, 0xe8, 0x9c, 0xd8, 0x41, 0x40, 0x7d, - 0xcb, 0x39, 0xa1, 0xce, 0xe9, 0x90, 0x79, 0x41, 0xc4, 0x3b, 0x4b, 0x28, 0xe3, 0xe6, 0x07, 0xbc, - 0x21, 0xd5, 0xe8, 0xfa, 0xb6, 0x64, 0xb2, 0x9d, 0xf2, 0x90, 0x61, 0x4f, 0x9c, 0x33, 0x13, 0xe4, - 0x29, 0x68, 0xfe, 0x03, 0x8b, 0xd3, 0xfe, 0x80, 0x8a, 0xb5, 0xae, 0xe0, 0x5a, 0x77, 0x72, 0xd7, - 0x3a, 0x90, 0x48, 0x19, 0xd3, 0x81, 0xff, 0x40, 0x01, 0xf9, 0xca, 0x2e, 0x5c, 0x3d, 0x67, 0xdd, - 0x4b, 0xe5, 0x95, 0x6f, 0x8a, 0xb0, 0x98, 0xe3, 0x25, 0xe4, 0x16, 0x34, 0x53, 0x57, 0x53, 0x09, - 0xa6, 0x64, 0x6a, 0x09, 0xac, 0xeb, 0x92, 0xdb, 0xd0, 0x4e, 0x51, 0x32, 0x39, 0xb5, 0x95, 0x40, - 0x31, 0xcc, 0xce, 0x44, 0x73, 0x29, 0x27, 0x9a, 0x5f, 0xc2, 0xbc, 0xd2, 0x49, 0xe2, 0xd7, 0xe5, - 0x4b, 0xa9, 0xa6, 0xcd, 0xb3, 0x20, 0x9e, 0x38, 0x6a, 0x25, 0xe3, 0xa8, 0x93, 0xae, 0x54, 0x9d, - 0x72, 0x25, 0xe3, 0x1f, 0x4b, 0xb0, 0x70, 0x86, 0x31, 0x86, 0xb9, 0x92, 0x2c, 0x51, 0x43, 0x43, - 0x41, 0xba, 0xee, 0xd9, 0xdd, 0x15, 0x73, 0x76, 0x37, 0xad, 0xcc, 0xd2, 0x59, 0x65, 0xfe, 0x1c, - 0xb4, 0x60, 0x34, 0xb0, 0xd8, 0xb1, 0x15, 0xb2, 0xb7, 0x3c, 0x4e, 0xa5, 0xc1, 0x68, 0xf0, 0xf2, - 0xd8, 0x64, 0x6f, 0x39, 0x79, 0x0c, 0xb5, 0x9e, 0x17, 0xf8, 0xac, 0xcf, 0x3b, 0x15, 0x54, 0xcc, - 0x6a, 0xae, 0x62, 0x9e, 0x88, 0xd3, 0x6e, 0x0b, 0x11, 0xcd, 0x98, 0x80, 0x7c, 0x06, 0x98, 0xd6, - 0x39, 0x52, 0x57, 0x67, 0xa4, 0x4e, 0x49, 0x04, 0xbd, 0x4b, 0xfd, 0xc8, 0x46, 0xfa, 0xda, 0xac, - 0xf4, 0x09, 0x49, 0x62, 0x8b, 0x7a, 0xc6, 0x16, 0xd7, 0xa0, 0xde, 0x0f, 0xd9, 0x68, 0x28, 0xd4, - 0xd1, 0x90, 0x47, 0x03, 0x8e, 0xbb, 0xae, 0x38, 0x1a, 0x24, 0x3f, 0xea, 0x62, 0x66, 0xae, 0x9b, - 0xc9, 0x98, 0x2c, 0x42, 0xc5, 0xe3, 0x96, 0xff, 0x00, 0xf3, 0x6d, 0xdd, 0x2c, 0x7b, 0xfc, 0xf9, - 0x03, 0xe3, 0xfb, 0x12, 0xc0, 0xff, 0xef, 0x13, 0x91, 0x40, 0x19, 0x03, 0xac, 0x86, 0x2b, 0xe2, - 0x77, 0x6e, 0xd6, 0xae, 0xe7, 0x67, 0xed, 0xd7, 0x40, 0x32, 0x4e, 0x1a, 0x07, 0x58, 0x03, 0x2d, - 0x79, 0x77, 0xe6, 0x3c, 0x67, 0x2e, 0x38, 0x53, 0xd0, 0xd4, 0xb4, 0x90, 0x31, 0xed, 0x6d, 0x68, - 0x4b, 0x96, 0xd6, 0x1b, 0x1a, 0x72, 0x8f, 0x05, 0x68, 0xac, 0x86, 0xd9, 0x92, 0xd0, 0x23, 0x09, - 0x24, 0x8f, 0xa1, 0x11, 0xf6, 0x6c, 0xc7, 0x1a, 0xd0, 0xc8, 0xc6, 0x83, 0x51, 0xdb, 0xb8, 0x91, - 0x2b, 0x8b, 0xb9, 0xb5, 0xb9, 0xfd, 0x82, 0x46, 0xb6, 0x59, 0x17, 0xf8, 0xe2, 0xcb, 0xf8, 0x63, - 0xb8, 0x96, 0x4a, 0x88, 0x67, 0x63, 0xc6, 0xfe, 0xbf, 0x83, 0x8a, 0x3c, 0x6c, 0x0a, 0x97, 0xdd, - 0xa0, 0xa4, 0x33, 0xbe, 0x82, 0x4e, 0x92, 0x12, 0xa7, 0x99, 0x7f, 0x36, 0xc9, 0x7c, 0xf6, 0x63, - 0x57, 0xf1, 0x3e, 0x82, 0x65, 0x95, 0x63, 0xa6, 0x39, 0xff, 0x66, 0x92, 0xf3, 0xac, 0x89, 0x4f, - 0xf1, 0xfd, 0xdb, 0x12, 0x2c, 0x6e, 0x87, 0xd4, 0x8e, 0xa8, 0x9c, 0x33, 0xe9, 0xd7, 0x23, 0xca, - 0x23, 0xf2, 0x33, 0x68, 0x84, 0xf2, 0xb3, 0x1b, 0xc7, 0x44, 0x0a, 0x20, 0x37, 0x41, 0x53, 0x3e, - 0x94, 0xc9, 0xdf, 0x20, 0x41, 0x7b, 0xca, 0xc9, 0xa6, 0x8a, 0x29, 0xde, 0x29, 0xad, 0x96, 0xd6, - 0x1a, 0xe6, 0xfc, 0x64, 0x35, 0xc5, 0xc5, 0x19, 0x63, 0xf3, 0x71, 0xe0, 0xa0, 0xd3, 0xd7, 0x4d, - 0x39, 0x20, 0xbf, 0x85, 0xb6, 0xdb, 0xb3, 0x52, 0x5c, 0x8e, 0x6e, 0xaf, 0x6d, 0x2c, 0xaf, 0xcb, - 0xc2, 0x7e, 0x3d, 0x2e, 0xec, 0xd7, 0x8f, 0xc4, 0x99, 0x64, 0xb6, 0xdc, 0x5e, 0x6a, 0x1a, 0x64, - 0x7a, 0xcc, 0x42, 0x47, 0x66, 0xeb, 0xba, 0x29, 0x07, 0xa2, 0xe2, 0x10, 0x5e, 0x63, 0xb1, 0xc0, - 0x1f, 0x63, 0x4c, 0xd4, 0xcd, 0xba, 0x00, 0xbc, 0x0c, 0xfc, 0x31, 0xb9, 0x03, 0xf3, 0x7d, 0xc7, - 0x1a, 0xda, 0x23, 0x4e, 0x2d, 0x1a, 0xd8, 0x3d, 0x5f, 0x26, 0x9e, 0xba, 0xd9, 0xea, 0x3b, 0xfb, - 0x02, 0xba, 0x8b, 0x40, 0xb2, 0x06, 0x7a, 0x82, 0xc7, 0xa9, 0xc3, 0x02, 0x97, 0x63, 0x26, 0xaa, - 0x98, 0x6d, 0x85, 0x78, 0x20, 0xa1, 0x13, 0x98, 0xb6, 0xeb, 0x62, 0x84, 0x82, 0x2c, 0x29, 0x15, - 0xe6, 0xa6, 0x84, 0x8a, 0x70, 0x10, 0x3e, 0x1a, 0x67, 0x27, 0xf1, 0x6d, 0x7c, 0x5b, 0x00, 0x92, - 0xb1, 0x17, 0xe5, 0x43, 0x16, 0x70, 0xfa, 0x01, 0xc3, 0x7c, 0x0c, 0xe5, 0x4c, 0xb6, 0xba, 0x95, - 0x1f, 0x17, 0x8a, 0x15, 0xa6, 0x29, 0x44, 0x17, 0x27, 0xff, 0x80, 0xf7, 0x55, 0x62, 0x12, 0x9f, - 0xe4, 0x21, 0x94, 0x5d, 0x3b, 0xb2, 0xd1, 0x28, 0xda, 0xc6, 0xcd, 0x0b, 0xd2, 0x1e, 0x4a, 0x87, - 0xc8, 0xc6, 0xbf, 0x14, 0x40, 0x7f, 0x4a, 0xa3, 0x1f, 0xd4, 0x93, 0xae, 0x43, 0x43, 0x21, 0xa8, - 0x03, 0xb0, 0x11, 0xa7, 0x75, 0x45, 0x3d, 0x72, 0x4e, 0x69, 0x24, 0xa9, 0xcb, 0x8a, 0x1a, 0x41, - 0x48, 0x4d, 0xa0, 0x3c, 0xb4, 0xa3, 0x13, 0x74, 0x9e, 0x86, 0x89, 0xdf, 0x22, 0xcf, 0xbc, 0xf5, - 0xa2, 0x13, 0x36, 0x8a, 0x2c, 0x97, 0x46, 0xb6, 0xe7, 0x2b, 0x27, 0x69, 0x29, 0xe8, 0x0e, 0x02, - 0x8d, 0x3f, 0x02, 0xf2, 0xdc, 0xe3, 0x71, 0x61, 0x30, 0xdb, 0x6e, 0x72, 0xee, 0x10, 0xc5, 0xbc, - 0x3b, 0x84, 0xf1, 0x0f, 0x05, 0x58, 0x9c, 0xe0, 0xfe, 0x63, 0x59, 0xb7, 0x34, 0xbb, 0x75, 0x0f, - 0x61, 0x71, 0x87, 0xfa, 0xf4, 0x87, 0xcd, 0x14, 0xc6, 0x9f, 0xc3, 0xd2, 0x24, 0xd7, 0xff, 0x55, - 0x4d, 0x18, 0xff, 0x5e, 0x85, 0x25, 0x93, 0xf2, 0x88, 0x85, 0x3f, 0x5a, 0x02, 0xfc, 0x25, 0x64, - 0x0e, 0x48, 0x8b, 0x8f, 0x8e, 0x8f, 0xbd, 0x77, 0xca, 0x95, 0x33, 0x3c, 0x0e, 0x10, 0x4e, 0xd8, - 0xc4, 0x91, 0x1c, 0x52, 0xc9, 0x59, 0x96, 0x76, 0x9f, 0x9f, 0xa7, 0x86, 0x33, 0xbb, 0xcb, 0x1c, - 0x63, 0xa6, 0x64, 0x21, 0x6f, 0x1e, 0x19, 0x41, 0x14, 0x3c, 0x4d, 0xcf, 0xd5, 0x6c, 0x7a, 0x9e, - 0x0a, 0xbc, 0xda, 0xb9, 0x81, 0x57, 0xcf, 0x04, 0xde, 0xd9, 0x9c, 0xde, 0xb8, 0x4c, 0x4e, 0x5f, - 0x81, 0x24, 0x59, 0xc7, 0xf5, 0x5d, 0x92, 0xbc, 0x0d, 0x68, 0x86, 0x72, 0x9f, 0x78, 0x1b, 0x54, - 0x89, 0x74, 0x02, 0x26, 0x70, 0x44, 0xca, 0x1d, 0x45, 0x4c, 0xe2, 0x34, 0x25, 0x4e, 0x16, 0x46, - 0x1e, 0xc0, 0xa2, 0x1b, 0xb2, 0xe1, 0xee, 0x3b, 0x8f, 0x47, 0xe9, 0xda, 0x9d, 0x16, 0xa2, 0xe6, - 0x4d, 0x91, 0x3b, 0xd0, 0x4e, 0xc0, 0x92, 0x6f, 0x1b, 0x91, 0xa7, 0xa0, 0x64, 0x03, 0x96, 0xf8, - 0xa9, 0x37, 0x94, 0x67, 0x6d, 0x86, 0xf5, 0x3c, 0x62, 0xe7, 0xce, 0xa9, 0x8a, 0x54, 0x4f, 0x2a, - 0xd2, 0xc7, 0xd0, 0x11, 0x78, 0xdd, 0xc1, 0x90, 0x85, 0xd1, 0x8e, 0xc7, 0x4f, 0xff, 0x70, 0xc4, - 0x22, 0x1b, 0xef, 0x71, 0x9d, 0x05, 0xe4, 0x73, 0xee, 0x7c, 0x72, 0xc4, 0x90, 0xf4, 0x88, 0x21, - 0xab, 0xa0, 0x0d, 0xec, 0x77, 0x07, 0x27, 0x76, 0xe8, 0xee, 0x8d, 0x06, 0x78, 0xed, 0xad, 0x98, - 0x59, 0xd0, 0xca, 0x0e, 0x2c, 0xe7, 0xbb, 0xca, 0xa5, 0x2e, 0x8b, 0xdf, 0x15, 0x93, 0x20, 0x4b, - 0x4a, 0x1c, 0x51, 0x2d, 0x9f, 0x29, 0xb9, 0x9f, 0xe5, 0x94, 0xdc, 0x77, 0x2f, 0xf2, 0xea, 0xff, - 0x83, 0x35, 0x77, 0x17, 0xf0, 0x82, 0xa6, 0xca, 0x65, 0x0c, 0x8d, 0xcb, 0xd4, 0x7b, 0x20, 0x88, - 0xe5, 0xd8, 0xf8, 0xab, 0x1a, 0x5c, 0x51, 0x1b, 0x4d, 0xad, 0xf0, 0x93, 0x56, 0xdc, 0x17, 0xa0, - 0x89, 0xf8, 0x8f, 0x95, 0x53, 0x45, 0xe5, 0x5c, 0xa2, 0xd2, 0x06, 0x41, 0x2d, 0xc7, 0xe4, 0xd7, - 0xb0, 0x1c, 0xd9, 0x61, 0x9f, 0x46, 0xd6, 0xf4, 0x99, 0x2b, 0xd3, 0xd1, 0x92, 0x9c, 0xdd, 0x9e, - 0x7c, 0xbd, 0xb3, 0xe1, 0x6a, 0x7a, 0xa7, 0x56, 0xf9, 0xc1, 0x8a, 0x6c, 0x7e, 0xca, 0x3b, 0xf5, - 0x0b, 0xea, 0xfe, 0x3c, 0xf7, 0x35, 0xaf, 0x24, 0x9c, 0x32, 0x5a, 0xc5, 0x77, 0x48, 0xc5, 0xd8, - 0xb5, 0xf0, 0x96, 0x23, 0x2f, 0xaa, 0x71, 0x36, 0x72, 0x0f, 0xc4, 0x6d, 0xe7, 0x0e, 0xcc, 0x47, - 0x2c, 0x11, 0x20, 0x73, 0x19, 0x6a, 0x45, 0x4c, 0x71, 0x43, 0xbc, 0xac, 0xab, 0x69, 0x53, 0xae, - 0xf6, 0x11, 0xb4, 0x95, 0x06, 0xe2, 0x27, 0xcd, 0xa6, 0xb4, 0x96, 0x84, 0xee, 0xc8, 0x87, 0xcd, - 0x6c, 0xde, 0x6c, 0x7d, 0x20, 0x6f, 0xb6, 0x67, 0xc8, 0x9b, 0xf3, 0xb3, 0xe7, 0x4d, 0xfd, 0x32, - 0x79, 0x73, 0xe1, 0x52, 0x79, 0x93, 0x5c, 0x90, 0x37, 0xd7, 0x81, 0x08, 0xf8, 0x54, 0x86, 0x5c, - 0x44, 0x8a, 0x9c, 0x99, 0xe9, 0x3c, 0xb8, 0x74, 0x26, 0x0f, 0x1a, 0x7f, 0x57, 0x82, 0x85, 0x89, - 0x83, 0xf4, 0x27, 0x1d, 0x85, 0x2e, 0x74, 0x26, 0x8a, 0x88, 0x6c, 0x10, 0x54, 0x2f, 0xe8, 0x52, - 0xe4, 0xe6, 0x22, 0x73, 0x39, 0x5b, 0x34, 0x5c, 0x14, 0x06, 0xb5, 0xd9, 0xc2, 0xa0, 0xfe, 0xa1, - 0x30, 0x68, 0x4c, 0x86, 0x81, 0xf1, 0x4f, 0x85, 0x24, 0x4d, 0xfe, 0x28, 0x45, 0x24, 0x79, 0x3c, - 0x71, 0x59, 0xba, 0xf3, 0xe1, 0x32, 0x0c, 0xf5, 0x26, 0xab, 0xea, 0x27, 0xb0, 0xfc, 0x94, 0x46, - 0xf1, 0x56, 0x85, 0x03, 0xcc, 0x56, 0x81, 0x4a, 0xdf, 0x2b, 0xc6, 0xbe, 0x67, 0xfc, 0x29, 0x68, - 0x99, 0x67, 0x34, 0xd2, 0x81, 0x1a, 0x76, 0xb0, 0xba, 0x3b, 0xea, 0xed, 0x31, 0x1e, 0x92, 0x8f, - 0xd3, 0x17, 0xc1, 0x22, 0xda, 0xfa, 0x7a, 0x7e, 0xf9, 0x3f, 0xf9, 0x18, 0x68, 0xfc, 0x7d, 0x01, - 0xaa, 0x8a, 0xf7, 0x4d, 0xd0, 0x68, 0x10, 0x85, 0x1e, 0x95, 0x2d, 0x0c, 0xc9, 0x1f, 0x14, 0x68, - 0x6f, 0x34, 0x10, 0x37, 0xac, 0xe4, 0x6d, 0xc9, 0x3a, 0x0e, 0xd9, 0x00, 0xe5, 0x2c, 0x9b, 0xad, - 0x04, 0xfa, 0x24, 0x64, 0x03, 0x72, 0x0b, 0x9a, 0x29, 0x5a, 0xc4, 0x50, 0xa3, 0x65, 0x53, 0x4b, - 0x60, 0x87, 0x4c, 0x38, 0xb1, 0xcf, 0xfa, 0x16, 0x96, 0x92, 0xb2, 0x24, 0xae, 0xf9, 0xac, 0xbf, - 0x2f, 0xaa, 0x49, 0x35, 0x95, 0x79, 0xad, 0x15, 0x53, 0xc2, 0x59, 0x8c, 0x47, 0xd0, 0xfc, 0x92, - 0x8e, 0xb1, 0x88, 0xdc, 0xb7, 0xbd, 0x70, 0xd6, 0x5a, 0xc5, 0xf8, 0xaf, 0x02, 0x00, 0x52, 0xa1, - 0x26, 0xc9, 0x0d, 0x68, 0xf4, 0x18, 0xf3, 0x2d, 0xb4, 0xad, 0x20, 0xae, 0x3f, 0x9b, 0x33, 0xeb, - 0x02, 0xb4, 0x63, 0x47, 0x36, 0xb9, 0x0e, 0x75, 0x2f, 0x88, 0xe4, 0xac, 0x60, 0x53, 0x79, 0x36, - 0x67, 0xd6, 0xbc, 0x20, 0xc2, 0xc9, 0x1b, 0xd0, 0xf0, 0x59, 0xd0, 0x97, 0xb3, 0xf8, 0x6e, 0x2b, - 0x68, 0x05, 0x08, 0xa7, 0x6f, 0x02, 0x1c, 0xfb, 0xcc, 0x56, 0xd4, 0x62, 0x67, 0xc5, 0x67, 0x73, - 0x66, 0x03, 0x61, 0x88, 0x70, 0x0b, 0x34, 0x97, 0x8d, 0x7a, 0x3e, 0x95, 0x18, 0x62, 0x83, 0x85, - 0x67, 0x73, 0x26, 0x48, 0x60, 0x8c, 0xc2, 0xa3, 0xd0, 0x8b, 0x17, 0xc1, 0x77, 0x69, 0x81, 0x22, - 0x81, 0xf1, 0x32, 0xbd, 0x71, 0x44, 0xb9, 0xc4, 0x10, 0xf1, 0xd7, 0x14, 0xcb, 0x20, 0x4c, 0x20, - 0x6c, 0x55, 0xa5, 0xe7, 0x1a, 0xdf, 0x55, 0x94, 0xfb, 0xc8, 0x66, 0xd5, 0x05, 0xee, 0x13, 0x3f, - 0x29, 0x16, 0x33, 0x4f, 0x8a, 0x1f, 0x41, 0xdb, 0xe3, 0xd6, 0x30, 0xf4, 0x06, 0x76, 0x38, 0xb6, - 0x84, 0xaa, 0x4b, 0xf2, 0x8c, 0xf0, 0xf8, 0xbe, 0x04, 0x7e, 0x49, 0xc7, 0x22, 0xcb, 0xba, 0x94, - 0x3b, 0xa1, 0x37, 0xc4, 0x04, 0x2e, 0xcd, 0x99, 0x05, 0x91, 0xc7, 0xd0, 0x10, 0xd2, 0xc8, 0x4e, - 0x6a, 0x05, 0xa3, 0x32, 0xff, 0x69, 0x4f, 0xc8, 0x7e, 0x38, 0x1e, 0x52, 0xb3, 0xee, 0xaa, 0x2f, - 0xb2, 0x05, 0x9a, 0x20, 0xb3, 0x54, 0xb3, 0x55, 0xa6, 0xb1, 0xfc, 0x98, 0xce, 0xfa, 0x86, 0x09, - 0x82, 0x4a, 0x76, 0x57, 0xc9, 0x0e, 0x34, 0x65, 0xd3, 0x49, 0x31, 0xa9, 0xcd, 0xca, 0x44, 0xf6, - 0xaa, 0x14, 0x97, 0x65, 0xa8, 0xda, 0xe2, 0x60, 0xdc, 0x51, 0xef, 0x47, 0x6a, 0x44, 0x3e, 0x86, - 0x8a, 0xec, 0x20, 0x34, 0x70, 0x67, 0x37, 0xcf, 0x7f, 0x0a, 0x97, 0x69, 0x40, 0x62, 0x93, 0xcf, - 0xa1, 0x49, 0x7d, 0x8a, 0x8d, 0x04, 0xd4, 0x0b, 0xcc, 0xa2, 0x17, 0x4d, 0x91, 0xa0, 0x6a, 0x76, - 0xa0, 0xe5, 0xd2, 0x63, 0x7b, 0xe4, 0x47, 0x96, 0x74, 0x7a, 0xed, 0x82, 0x47, 0x9d, 0xd4, 0xff, - 0xcd, 0xa6, 0xa2, 0x42, 0x10, 0xf6, 0xb9, 0xb9, 0xe5, 0x8e, 0x03, 0x7b, 0xe0, 0x39, 0xea, 0xf2, - 0xd4, 0xf0, 0xf8, 0x8e, 0x04, 0x90, 0x35, 0xd0, 0x85, 0x0f, 0x24, 0xa5, 0x95, 0xf0, 0x02, 0x59, - 0x6d, 0xb4, 0x3d, 0x9e, 0x94, 0x4d, 0xc2, 0x0f, 0x56, 0xa0, 0x1e, 0x8c, 0x7c, 0x1f, 0x5f, 0xd8, - 0x64, 0xbd, 0x91, 0x8c, 0xc9, 0x3a, 0x2c, 0x4e, 0x88, 0x6a, 0xa1, 0x6c, 0x58, 0x72, 0x34, 0xcc, - 0x85, 0xac, 0x3c, 0xfb, 0xd8, 0xc8, 0xff, 0xd7, 0x02, 0xe8, 0xd3, 0x9d, 0xd6, 0xc4, 0x45, 0x0b, - 0x19, 0x17, 0x9d, 0x72, 0xbe, 0xe2, 0x59, 0xe7, 0x4b, 0xcd, 0x56, 0x9a, 0x30, 0xdb, 0x27, 0x50, - 0x45, 0xdf, 0x8f, 0x3b, 0x4b, 0x17, 0xb4, 0x30, 0xe2, 0x4e, 0xaf, 0xc4, 0x27, 0x0f, 0x60, 0x49, - 0x3e, 0x24, 0xc6, 0x5a, 0xb3, 0x70, 0x02, 0x3d, 0xbb, 0x6e, 0x12, 0x39, 0xa7, 0xf4, 0x87, 0xf4, - 0x46, 0x1b, 0x9a, 0x58, 0x91, 0xa8, 0x23, 0xc0, 0x78, 0x0d, 0x2d, 0x35, 0x56, 0x07, 0x5a, 0x7c, - 0x64, 0x15, 0xfe, 0x47, 0x47, 0x56, 0x31, 0x7d, 0xf7, 0xf8, 0xcb, 0x02, 0x68, 0x2f, 0x78, 0x7f, - 0x9f, 0x71, 0xb4, 0x8b, 0xc8, 0xc5, 0x71, 0x4f, 0x33, 0xa3, 0x3b, 0x4d, 0xc1, 0xb0, 0x8e, 0x5c, - 0x82, 0xca, 0x80, 0xf7, 0xbb, 0x3b, 0xc8, 0xa6, 0x69, 0xca, 0x01, 0x56, 0x97, 0xbc, 0xff, 0x34, - 0x64, 0xa3, 0x61, 0xfc, 0x3c, 0x17, 0x8f, 0xc5, 0x09, 0x96, 0xf6, 0x18, 0xca, 0x98, 0xdd, 0x53, - 0x80, 0xb1, 0x09, 0xf3, 0xaa, 0x13, 0x99, 0x48, 0x91, 0x67, 0x39, 0x71, 0xf2, 0xab, 0x79, 0xb5, - 0x81, 0x64, 0x6c, 0xac, 0x02, 0x98, 0xcc, 0xa7, 0xbb, 0x41, 0xe4, 0x45, 0xe3, 0x3c, 0x6a, 0x81, - 0xf1, 0x8a, 0xd3, 0xf0, 0x02, 0x0c, 0x03, 0x9a, 0x2f, 0x7b, 0x7f, 0x46, 0x9d, 0xe8, 0x02, 0x9c, - 0xdb, 0x30, 0xbf, 0x1f, 0x7a, 0x6f, 0x3c, 0x9f, 0xf6, 0x2f, 0x5a, 0xec, 0x9b, 0x02, 0xb4, 0x9e, - 0x86, 0x76, 0x10, 0xb1, 0x78, 0xc1, 0x87, 0x50, 0x1e, 0x71, 0x1a, 0x22, 0xd6, 0x79, 0x11, 0x97, - 0xca, 0x67, 0x22, 0x32, 0xd9, 0x82, 0xc6, 0x30, 0x5e, 0x0d, 0xb7, 0xac, 0x6d, 0x7c, 0x94, 0x7f, - 0x7f, 0x9c, 0x94, 0xc9, 0x4c, 0xc9, 0x8c, 0x23, 0x58, 0x42, 0x49, 0xa6, 0xc5, 0xfe, 0x4c, 0x54, - 0x85, 0x22, 0x16, 0x69, 0xdc, 0x30, 0x30, 0x72, 0x59, 0x4f, 0x6c, 0xc3, 0x4c, 0x68, 0x8c, 0xff, - 0x2c, 0x80, 0x86, 0x73, 0xe9, 0x06, 0x43, 0xe6, 0xd3, 0x0b, 0x37, 0x98, 0x9a, 0xc8, 0x44, 0x64, - 0xf2, 0x29, 0x54, 0x19, 0xaa, 0x5c, 0xed, 0x2e, 0xdf, 0x8f, 0xb3, 0x56, 0x31, 0x15, 0x81, 0xa8, - 0x3d, 0xe4, 0x97, 0x74, 0x53, 0xe9, 0x71, 0x20, 0x41, 0xe8, 0xa5, 0xbf, 0x81, 0x5a, 0x5f, 0xca, - 0xae, 0xca, 0xb1, 0x59, 0xf6, 0x17, 0x93, 0x64, 0xff, 0x0e, 0xa9, 0x64, 0xff, 0x0e, 0x31, 0xbe, - 0x86, 0xba, 0xb0, 0x13, 0x76, 0x5c, 0x48, 0xc6, 0xa8, 0x0d, 0x65, 0x33, 0xe1, 0xa5, 0x36, 0xe7, - 0x6f, 0x59, 0xe8, 0x26, 0x5e, 0xaa, 0xc6, 0x22, 0xf1, 0x8b, 0x6d, 0xcb, 0x07, 0xc0, 0x19, 0x94, - 0x24, 0xb1, 0x8d, 0x6f, 0x0b, 0x50, 0x8f, 0x7b, 0x58, 0xe4, 0x21, 0x54, 0xc4, 0x3a, 0xb1, 0xd1, - 0x6e, 0x9c, 0xeb, 0x49, 0xb2, 0xb9, 0x83, 0xb8, 0xe9, 0xc2, 0xc5, 0xcb, 0x2c, 0x2c, 0x32, 0x1e, - 0xea, 0x23, 0x16, 0x78, 0xf5, 0x7c, 0x0d, 0xc6, 0xd6, 0x91, 0xf8, 0xf7, 0xfe, 0x02, 0x9a, 0xd9, - 0xec, 0x43, 0x34, 0xa8, 0x1d, 0x8c, 0x1c, 0x87, 0x72, 0xae, 0xcf, 0x91, 0x79, 0xd0, 0xf6, 0x58, - 0x64, 0x1d, 0x8c, 0x86, 0x43, 0x16, 0x46, 0x7a, 0x81, 0x2c, 0x40, 0x6b, 0x8f, 0x59, 0xfb, 0x34, - 0x1c, 0x78, 0x9c, 0x7b, 0x2c, 0xd0, 0x8b, 0xa4, 0x0e, 0xe5, 0x27, 0xb6, 0xe7, 0xeb, 0x25, 0xb2, - 0x04, 0xf3, 0x78, 0x9e, 0xd2, 0x88, 0x86, 0xd6, 0xae, 0xb8, 0xf7, 0xe8, 0x7f, 0x5d, 0x22, 0x37, - 0xa0, 0xa3, 0x72, 0xa3, 0x25, 0xdd, 0xc3, 0x12, 0x2c, 0x9f, 0xb0, 0x51, 0xe0, 0xea, 0x7f, 0x53, - 0xba, 0xf7, 0x0e, 0x16, 0x73, 0x7a, 0xb1, 0x84, 0x40, 0x7b, 0x6b, 0x73, 0xfb, 0xcb, 0x57, 0xfb, - 0x56, 0x77, 0xaf, 0x7b, 0xd8, 0xdd, 0x7c, 0xae, 0xcf, 0x91, 0x25, 0xd0, 0x15, 0x6c, 0xf7, 0xf5, - 0xee, 0xf6, 0xab, 0xc3, 0xee, 0xde, 0x53, 0xbd, 0x90, 0xc1, 0x3c, 0x78, 0xb5, 0xbd, 0xbd, 0x7b, - 0x70, 0xa0, 0x17, 0x85, 0xdc, 0x0a, 0xf6, 0x64, 0xb3, 0xfb, 0x5c, 0x2f, 0x65, 0x90, 0x0e, 0xbb, - 0x2f, 0x76, 0x5f, 0xbe, 0x3a, 0xd4, 0xcb, 0xf7, 0x8e, 0x92, 0x17, 0xae, 0xc9, 0xa5, 0x35, 0xa8, - 0xa5, 0x6b, 0xb6, 0xa0, 0x91, 0x5d, 0x4c, 0x68, 0x27, 0x59, 0x45, 0xec, 0x5c, 0xb2, 0xd7, 0xa0, - 0x96, 0xf2, 0x7d, 0x2d, 0xce, 0xb7, 0xa9, 0xdf, 0x79, 0x00, 0xaa, 0x07, 0x51, 0xc8, 0x82, 0xbe, - 0x3e, 0x87, 0x3c, 0xa8, 0xd4, 0x1e, 0x32, 0xdc, 0x12, 0xaa, 0xa0, 0xae, 0x5e, 0x24, 0x6d, 0x80, - 0xdd, 0x37, 0x34, 0x88, 0x46, 0xb6, 0xef, 0x8f, 0xf5, 0x92, 0x18, 0x6f, 0x8f, 0x78, 0xc4, 0x06, - 0xde, 0x7b, 0xea, 0xea, 0xe5, 0x7b, 0xdf, 0x17, 0xa0, 0x1e, 0xd7, 0x0b, 0x62, 0xf5, 0x3d, 0x16, - 0x50, 0x7d, 0x4e, 0x7c, 0x6d, 0x31, 0xe6, 0xeb, 0x05, 0xf1, 0xd5, 0x0d, 0xa2, 0x4f, 0xf4, 0x22, - 0x69, 0x40, 0xa5, 0x1b, 0x44, 0xbf, 0x7a, 0xa4, 0x97, 0xd4, 0xe7, 0xc3, 0x0d, 0xbd, 0xac, 0x3e, - 0x1f, 0xfd, 0x5a, 0xaf, 0x88, 0xcf, 0x27, 0xa2, 0x74, 0xd5, 0x41, 0x08, 0xb7, 0x83, 0x35, 0xaa, - 0xae, 0x29, 0x41, 0xbd, 0xa0, 0xaf, 0x2f, 0x09, 0xd9, 0x8e, 0xec, 0x70, 0xfb, 0xc4, 0x0e, 0xf5, - 0x2b, 0x02, 0x7f, 0x33, 0x0c, 0xed, 0xb1, 0xbe, 0x2c, 0x56, 0xf9, 0x82, 0xb3, 0x40, 0xbf, 0x4a, - 0x74, 0x68, 0x6e, 0x79, 0x81, 0x1d, 0x8e, 0x8f, 0xa8, 0x13, 0xb1, 0x50, 0x77, 0x85, 0xe6, 0x91, - 0xad, 0x02, 0x50, 0xe1, 0x31, 0x08, 0xf8, 0xd5, 0x23, 0x05, 0x3a, 0x46, 0x63, 0x4c, 0xc2, 0xfa, - 0xe4, 0x0a, 0x2c, 0x1c, 0x0c, 0xed, 0x90, 0xd3, 0x2c, 0xf5, 0xc9, 0xbd, 0x23, 0x80, 0xb4, 0xbc, - 0x12, 0xcb, 0xe1, 0x48, 0xbe, 0x1e, 0xb8, 0xfa, 0x1c, 0x72, 0x4f, 0x20, 0x42, 0xea, 0x42, 0x02, - 0xda, 0x09, 0xd9, 0x70, 0x28, 0x40, 0xc5, 0x84, 0x0e, 0x41, 0xd4, 0xd5, 0x4b, 0x1b, 0xff, 0x5c, - 0x81, 0xc5, 0x17, 0x18, 0x21, 0xd2, 0xf9, 0x0e, 0x68, 0xf8, 0xc6, 0x73, 0x28, 0x71, 0xa0, 0x99, - 0x6d, 0xad, 0x92, 0xfc, 0x47, 0xc0, 0x9c, 0xee, 0xeb, 0xca, 0x2f, 0x3e, 0xd4, 0x91, 0x51, 0x41, - 0x66, 0xcc, 0x91, 0x3f, 0x81, 0x46, 0xd2, 0x72, 0x23, 0xf9, 0x7f, 0x88, 0x4d, 0xb7, 0xe4, 0x2e, - 0xc3, 0xbe, 0x07, 0x5a, 0xa6, 0x4f, 0x45, 0xf2, 0x29, 0xcf, 0xf6, 0xc9, 0x56, 0xd6, 0x3e, 0x8c, - 0x98, 0xac, 0x41, 0xa1, 0x99, 0x6d, 0x01, 0x9d, 0xa3, 0xa7, 0x9c, 0xde, 0xd3, 0xca, 0xdd, 0x19, - 0x30, 0x93, 0x65, 0x4e, 0xa0, 0x35, 0x71, 0x09, 0x27, 0x77, 0x67, 0xee, 0x97, 0xac, 0xdc, 0x9b, - 0x05, 0x35, 0x59, 0xa9, 0x0f, 0x90, 0xde, 0xe9, 0xc9, 0x2f, 0xcf, 0x33, 0x4a, 0xce, 0xa5, 0xff, - 0x92, 0x0b, 0xed, 0x43, 0x45, 0xbe, 0x60, 0xe5, 0x9f, 0xa0, 0xd9, 0x5a, 0x72, 0xc5, 0xb8, 0x08, - 0x25, 0xe6, 0xb8, 0xf5, 0xe9, 0x57, 0x7f, 0xd0, 0xf7, 0xa2, 0x93, 0x51, 0x6f, 0xdd, 0x61, 0x83, - 0xfb, 0xef, 0x3d, 0xdf, 0xf7, 0xde, 0x47, 0xd4, 0x39, 0xb9, 0x2f, 0x89, 0x7f, 0x5f, 0x92, 0xdd, - 0x77, 0x58, 0xa8, 0xfe, 0xad, 0xbd, 0x2f, 0x21, 0xc3, 0x5e, 0xaf, 0x8a, 0xe3, 0x87, 0xff, 0x1d, - 0x00, 0x00, 0xff, 0xff, 0xfb, 0x9e, 0x25, 0x80, 0x9e, 0x2b, 0x00, 0x00, +var File_backup_proto protoreflect.FileDescriptor + +var file_backup_proto_rawDesc = []byte{ + 0x0a, 0x0c, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, + 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0xe7, 0x01, 0x0a, 0x09, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, + 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x54, 0x79, 0x70, 0x65, 0x12, 0x42, 0x0a, 0x06, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6d, + 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x1a, 0x39, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd5, 0x08, 0x0a, 0x14, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x47, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x42, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x64, 0x65, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, + 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, + 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, + 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, + 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, + 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d, + 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, + 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1d, 0x0a, + 0x0a, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x4e, 0x75, 0x6d, 0x12, 0x52, 0x0a, 0x11, + 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x43, 0x6f, + 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x10, + 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x12, 0x55, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6d, 0x69, + 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x62, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x61, 0x73, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x68, 0x61, 0x73, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x3f, 0x0a, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x69, 0x6e, 0x66, + 0x6f, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x49, + 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x70, 0x68, + 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x50, 0x68, + 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x72, 0x0a, 0x13, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x6d, + 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x12, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x0b, 0x6c, 0x30, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x53, + 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x0a, 0x6c, 0x30, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x45, 0x0a, 0x17, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 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, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x88, 0x02, 0x0a, 0x13, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x0c, 0x70, + 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x25, + 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x0f, 0x73, 0x65, + 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x73, 0x65, 0x67, + 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0xb6, + 0x03, 0x0a, 0x11, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x6e, + 0x75, 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x6e, 0x75, 0x6d, 0x4f, 0x66, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x3a, 0x0a, 0x07, 0x62, + 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, + 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x52, 0x07, + 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x69, 0x6c, + 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x52, 0x09, 0x73, 0x74, + 0x61, 0x74, 0x73, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x74, 0x61, + 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x69, 0x6c, + 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x52, 0x09, 0x64, 0x65, + 0x6c, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x65, 0x64, 0x12, 0x13, 0x0a, 0x05, 0x69, 0x73, 0x5f, 0x6c, 0x30, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x04, 0x69, 0x73, 0x4c, 0x30, 0x22, 0xef, 0x03, 0x0a, 0x0a, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x47, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6d, 0x69, 0x6c, + 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x22, 0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, + 0x10, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x58, 0x0a, 0x12, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x09, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x11, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, + 0x09, 0x72, 0x62, 0x61, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x52, 0x42, 0x41, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x52, + 0x08, 0x72, 0x62, 0x61, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x22, 0x5c, 0x0a, 0x19, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3f, 0x0a, 0x05, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x05, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x5a, 0x0a, 0x18, 0x50, 0x61, 0x72, 0x74, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x3e, 0x0a, 0x05, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x6e, + 0x66, 0x6f, 0x73, 0x22, 0x56, 0x0a, 0x16, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3c, 0x0a, + 0x05, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, + 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x97, 0x03, 0x0a, 0x13, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, + 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x73, + 0x79, 0x6e, 0x63, 0x12, 0x3d, 0x0a, 0x0e, 0x64, 0x62, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x64, 0x62, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x61, + 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x26, 0x0a, 0x0f, 0x67, 0x63, 0x5f, 0x70, 0x61, 0x75, 0x73, + 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, + 0x67, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x28, 0x0a, + 0x10, 0x67, 0x63, 0x5f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x67, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, + 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x67, 0x63, 0x5f, 0x70, 0x61, + 0x75, 0x73, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x67, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x62, 0x61, 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x04, 0x72, 0x62, 0x61, 0x63, 0x22, 0xb0, 0x01, 0x0a, 0x12, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6d, 0x73, 0x67, 0x12, 0x33, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xca, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, + 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x62, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, + 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x25, + 0x0a, 0x0e, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0x5b, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, + 0x6d, 0x65, 0x22, 0xb1, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, + 0x67, 0x12, 0x33, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x54, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x62, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x7d, 0x0a, 0x14, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x49, 0x64, 0x12, 0x35, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x21, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, + 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0xe2, 0x06, 0x0a, 0x14, + 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2b, + 0x0a, 0x11, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x66, + 0x66, 0x69, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x12, 0x6f, 0x0a, 0x12, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x52, 0x65, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, + 0x61, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x73, 0x79, + 0x6e, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x3d, 0x0a, 0x0e, 0x64, 0x62, 0x5f, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x64, 0x62, 0x43, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x4f, 0x6e, + 0x6c, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x4f, 0x6e, + 0x6c, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x22, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x41, 0x75, 0x74, + 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x75, 0x73, + 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x30, 0x0a, 0x13, 0x64, 0x72, + 0x6f, 0x70, 0x45, 0x78, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x64, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x69, + 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, + 0x64, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x64, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x69, 0x73, 0x74, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x32, 0x0a, 0x14, 0x73, 0x6b, 0x69, 0x70, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x14, 0x73, 0x6b, 0x69, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x18, 0x73, 0x6b, 0x69, 0x70, + 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x69, 0x73, 0x6b, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x73, 0x6b, 0x69, 0x70, + 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x69, 0x73, 0x6b, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x62, 0x61, 0x63, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x04, 0x72, 0x62, 0x61, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, + 0x61, 0x78, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x1a, 0x44, 0x0a, 0x16, 0x43, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0xb5, 0x02, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x74, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x48, 0x0a, 0x0a, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, + 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x43, + 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, + 0x0b, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x70, 0x61, + 0x72, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x22, 0x87, 0x07, 0x0a, 0x15, 0x52, 0x65, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, + 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x48, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x52, 0x65, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x64, + 0x65, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4a, 0x0a, 0x0b, 0x63, 0x6f, + 0x6c, 0x6c, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x29, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, + 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x61, 0x0a, 0x17, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x15, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, + 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, + 0x53, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, + 0x6f, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x5f, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x4f, 0x6e, 0x6c, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x22, + 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x12, 0x30, 0x0a, 0x13, 0x64, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x69, 0x73, 0x74, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x13, 0x64, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x69, 0x73, + 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x64, 0x72, + 0x6f, 0x70, 0x45, 0x78, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x32, 0x0a, 0x14, + 0x73, 0x6b, 0x69, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x73, 0x6b, 0x69, 0x70, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x2e, 0x0a, 0x12, 0x73, 0x6b, 0x69, 0x70, 0x44, 0x69, 0x73, 0x6b, 0x51, 0x75, 0x6f, 0x74, + 0x61, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x6b, + 0x69, 0x70, 0x44, 0x69, 0x73, 0x6b, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x18, + 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4e, + 0x75, 0x6d, 0x22, 0x9a, 0x03, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x48, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6d, + 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x64, 0x0a, 0x18, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, + 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x16, + 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x72, + 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x74, + 0x6f, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x6f, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x22, + 0xba, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, + 0x12, 0x3a, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x46, 0x0a, 0x16, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x22, 0x5e, 0x0a, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x69, 0x6e, + 0x6c, 0x6f, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x44, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x44, 0x12, 0x35, 0x0a, + 0x07, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x42, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x52, 0x07, 0x62, 0x69, 0x6e, + 0x6c, 0x6f, 0x67, 0x73, 0x22, 0xa9, 0x01, 0x0a, 0x06, 0x42, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x12, + 0x1f, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x4e, 0x75, 0x6d, + 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x66, 0x72, + 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x54, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, + 0x67, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x6f, + 0x67, 0x50, 0x61, 0x74, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x53, 0x69, 0x7a, 0x65, + 0x22, 0x36, 0x0a, 0x0c, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 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, 0xf7, 0x01, 0x0a, 0x0a, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x0a, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x08, 0x62, 0x6f, + 0x6f, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x08, 0x6c, 0x6f, 0x6e, 0x67, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x6f, 0x75, 0x62, + 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0a, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, + 0x09, 0x62, 0x79, 0x74, 0x65, 0x73, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x22, 0xe3, 0x05, 0x0a, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x44, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x50, 0x72, 0x69, 0x6d, + 0x61, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6d, 0x69, + 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x42, 0x0a, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x69, 0x6c, 0x76, + 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, + 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0a, 0x74, 0x79, + 0x70, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x44, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, + 0x72, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x61, 0x75, 0x74, 0x6f, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, + 0x61, 0x75, 0x74, 0x6f, 0x49, 0x44, 0x12, 0x35, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, + 0x0c, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x0b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x44, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x79, 0x6e, 0x61, + 0x6d, 0x69, 0x63, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x44, 0x79, 0x6e, + 0x61, 0x6d, 0x69, 0x63, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, + 0x69, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x1a, + 0x0a, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x73, + 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0xf4, 0x02, 0x0a, 0x0e, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x35, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x21, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x12, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x08, + 0x20, 0x03, 0x28, 0x03, 0x52, 0x0e, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x09, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, + 0xd2, 0x02, 0x0a, 0x10, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x75, + 0x74, 0x6f, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x75, 0x74, 0x6f, + 0x49, 0x44, 0x12, 0x38, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x30, 0x0a, 0x14, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x41, + 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, + 0x73, 0x12, 0x41, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x58, 0x0a, 0x0d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 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, 0x80, + 0x01, 0x0a, 0x0b, 0x4d, 0x73, 0x67, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, + 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x73, 0x67, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x22, 0x41, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x6f, 0x73, 0x69, + 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, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x20, 0x0a, 0x0a, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x20, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x22, 0x0a, 0x0c, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x25, 0x0a, 0x0f, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x0d, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x6f, 0x72, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x09, 0x70, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x52, 0x09, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x22, 0x56, + 0x0a, 0x14, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x47, + 0x72, 0x61, 0x6e, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x08, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0xf5, 0x01, 0x0a, 0x0b, 0x47, 0x72, 0x61, 0x6e, 0x74, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x69, + 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x06, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, + 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x47, + 0x72, 0x61, 0x6e, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x07, 0x67, 0x72, + 0x61, 0x6e, 0x74, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x71, + 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x35, 0x0a, 0x05, 0x72, 0x6f, + 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, + 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, + 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, + 0x73, 0x22, 0xb0, 0x01, 0x0a, 0x08, 0x52, 0x42, 0x41, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x33, + 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x73, + 0x65, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x06, 0x67, 0x72, + 0x61, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x69, 0x6c, + 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x06, 0x67, 0x72, + 0x61, 0x6e, 0x74, 0x73, 0x2a, 0x7e, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, + 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x5f, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, + 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x6f, 0x5f, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x61, 0x69, 0x6c, 0x10, 0x03, 0x12, + 0x14, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x10, 0x90, 0x03, 0x12, 0x1d, 0x0a, 0x18, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x5f, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x4e, 0x6f, 0x74, 0x5f, 0x46, 0x6f, 0x75, 0x6e, + 0x64, 0x10, 0x94, 0x03, 0x2a, 0x78, 0x0a, 0x13, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x54, 0x61, + 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x42, + 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x00, 0x12, + 0x14, 0x0a, 0x10, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, + 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, + 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x42, 0x41, 0x43, + 0x4b, 0x55, 0x50, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, + 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x04, 0x2a, 0x56, + 0x0a, 0x14, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, + 0x4c, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4e, 0x47, + 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, + 0x08, 0x0a, 0x04, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x49, 0x4d, + 0x45, 0x4f, 0x55, 0x54, 0x10, 0x04, 0x2a, 0x58, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x74, + 0x72, 0x6f, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x10, 0x02, + 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x10, 0x03, + 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x10, 0x04, + 0x2a, 0x38, 0x0a, 0x0c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x08, 0x0a, + 0x04, 0x42, 0x4d, 0x32, 0x35, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x65, 0x78, 0x74, 0x45, + 0x6d, 0x62, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x02, 0x2a, 0xef, 0x01, 0x0a, 0x08, 0x44, + 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x6f, 0x6e, 0x65, 0x10, + 0x00, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x6f, 0x6f, 0x6c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x49, + 0x6e, 0x74, 0x38, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x6e, 0x74, 0x31, 0x36, 0x10, 0x03, + 0x12, 0x09, 0x0a, 0x05, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x49, + 0x6e, 0x74, 0x36, 0x34, 0x10, 0x05, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x10, + 0x0a, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x10, 0x0b, 0x12, 0x0a, 0x0a, + 0x06, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x10, 0x14, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x61, 0x72, + 0x43, 0x68, 0x61, 0x72, 0x10, 0x15, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x72, 0x72, 0x61, 0x79, 0x10, + 0x16, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x73, 0x6f, 0x6e, 0x10, 0x17, 0x12, 0x10, 0x0a, 0x0c, 0x42, + 0x69, 0x6e, 0x61, 0x72, 0x79, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0x64, 0x12, 0x0f, 0x0a, + 0x0b, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0x65, 0x12, 0x11, + 0x0a, 0x0d, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, + 0x66, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x10, 0x67, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x46, + 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0x68, 0x2a, 0x56, 0x0a, 0x0a, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, + 0x11, 0x0a, 0x0d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x72, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, + 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x72, 0x6f, 0x70, 0x70, + 0x65, 0x64, 0x10, 0x03, 0x32, 0xc9, 0x05, 0x0a, 0x13, 0x4d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x42, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x63, 0x0a, 0x0c, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x28, 0x2e, 0x6d, + 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x5d, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x25, + 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x62, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, + 0x27, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x12, 0x28, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, + 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x68, 0x0a, 0x0d, 0x52, + 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x29, 0x2e, 0x6d, + 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x52, 0x65, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x12, 0x2b, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2a, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, + 0x0a, 0x05, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x21, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6d, 0x69, 0x6c, + 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x42, 0x39, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x7a, + 0x69, 0x6c, 0x6c, 0x69, 0x7a, 0x74, 0x65, 0x63, 0x68, 0x2f, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, + 0x2d, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +} + +var ( + file_backup_proto_rawDescOnce sync.Once + file_backup_proto_rawDescData = file_backup_proto_rawDesc +) + +func file_backup_proto_rawDescGZIP() []byte { + file_backup_proto_rawDescOnce.Do(func() { + file_backup_proto_rawDescData = protoimpl.X.CompressGZIP(file_backup_proto_rawDescData) + }) + return file_backup_proto_rawDescData +} + +var file_backup_proto_enumTypes = make([]protoimpl.EnumInfo, 7) +var file_backup_proto_msgTypes = make([]protoimpl.MessageInfo, 44) +var file_backup_proto_goTypes = []interface{}{ + (ResponseCode)(0), // 0: milvus.proto.backup.ResponseCode + (BackupTaskStateCode)(0), // 1: milvus.proto.backup.BackupTaskStateCode + (RestoreTaskStateCode)(0), // 2: milvus.proto.backup.RestoreTaskStateCode + (ConsistencyLevel)(0), // 3: milvus.proto.backup.ConsistencyLevel + (FunctionType)(0), // 4: milvus.proto.backup.FunctionType + (DataType)(0), // 5: milvus.proto.backup.DataType + (FieldState)(0), // 6: milvus.proto.backup.FieldState + (*IndexInfo)(nil), // 7: milvus.proto.backup.IndexInfo + (*CollectionBackupInfo)(nil), // 8: milvus.proto.backup.CollectionBackupInfo + (*PartitionBackupInfo)(nil), // 9: milvus.proto.backup.PartitionBackupInfo + (*SegmentBackupInfo)(nil), // 10: milvus.proto.backup.SegmentBackupInfo + (*BackupInfo)(nil), // 11: milvus.proto.backup.BackupInfo + (*CollectionLevelBackupInfo)(nil), // 12: milvus.proto.backup.CollectionLevelBackupInfo + (*PartitionLevelBackupInfo)(nil), // 13: milvus.proto.backup.PartitionLevelBackupInfo + (*SegmentLevelBackupInfo)(nil), // 14: milvus.proto.backup.SegmentLevelBackupInfo + (*CreateBackupRequest)(nil), // 15: milvus.proto.backup.CreateBackupRequest + (*BackupInfoResponse)(nil), // 16: milvus.proto.backup.BackupInfoResponse + (*GetBackupRequest)(nil), // 17: milvus.proto.backup.GetBackupRequest + (*ListBackupsRequest)(nil), // 18: milvus.proto.backup.ListBackupsRequest + (*ListBackupsResponse)(nil), // 19: milvus.proto.backup.ListBackupsResponse + (*DeleteBackupRequest)(nil), // 20: milvus.proto.backup.DeleteBackupRequest + (*DeleteBackupResponse)(nil), // 21: milvus.proto.backup.DeleteBackupResponse + (*RestoreBackupRequest)(nil), // 22: milvus.proto.backup.RestoreBackupRequest + (*RestorePartitionTask)(nil), // 23: milvus.proto.backup.RestorePartitionTask + (*RestoreCollectionTask)(nil), // 24: milvus.proto.backup.RestoreCollectionTask + (*RestoreBackupTask)(nil), // 25: milvus.proto.backup.RestoreBackupTask + (*RestoreBackupResponse)(nil), // 26: milvus.proto.backup.RestoreBackupResponse + (*GetRestoreStateRequest)(nil), // 27: milvus.proto.backup.GetRestoreStateRequest + (*FieldBinlog)(nil), // 28: milvus.proto.backup.FieldBinlog + (*Binlog)(nil), // 29: milvus.proto.backup.Binlog + (*KeyValuePair)(nil), // 30: milvus.proto.backup.KeyValuePair + (*ValueField)(nil), // 31: milvus.proto.backup.ValueField + (*FieldSchema)(nil), // 32: milvus.proto.backup.FieldSchema + (*FunctionSchema)(nil), // 33: milvus.proto.backup.FunctionSchema + (*CollectionSchema)(nil), // 34: milvus.proto.backup.CollectionSchema + (*CheckRequest)(nil), // 35: milvus.proto.backup.CheckRequest + (*CheckResponse)(nil), // 36: milvus.proto.backup.CheckResponse + (*MsgPosition)(nil), // 37: milvus.proto.backup.MsgPosition + (*ChannelPosition)(nil), // 38: milvus.proto.backup.ChannelPosition + (*RoleEntity)(nil), // 39: milvus.proto.backup.RoleEntity + (*UserEntity)(nil), // 40: milvus.proto.backup.UserEntity + (*ObjectEntity)(nil), // 41: milvus.proto.backup.ObjectEntity + (*PrivilegeEntity)(nil), // 42: milvus.proto.backup.PrivilegeEntity + (*GrantorEntity)(nil), // 43: milvus.proto.backup.GrantorEntity + (*GrantPrivilegeEntity)(nil), // 44: milvus.proto.backup.GrantPrivilegeEntity + (*GrantEntity)(nil), // 45: milvus.proto.backup.GrantEntity + (*UserInfo)(nil), // 46: milvus.proto.backup.UserInfo + (*RBACMeta)(nil), // 47: milvus.proto.backup.RBACMeta + nil, // 48: milvus.proto.backup.IndexInfo.ParamsEntry + nil, // 49: milvus.proto.backup.CollectionBackupInfo.ChannelCheckpointsEntry + nil, // 50: milvus.proto.backup.RestoreBackupRequest.CollectionRenamesEntry + (*_struct.Value)(nil), // 51: google.protobuf.Value +} +var file_backup_proto_depIdxs = []int32{ + 48, // 0: milvus.proto.backup.IndexInfo.params:type_name -> milvus.proto.backup.IndexInfo.ParamsEntry + 1, // 1: milvus.proto.backup.CollectionBackupInfo.state_code:type_name -> milvus.proto.backup.BackupTaskStateCode + 34, // 2: milvus.proto.backup.CollectionBackupInfo.schema:type_name -> milvus.proto.backup.CollectionSchema + 3, // 3: milvus.proto.backup.CollectionBackupInfo.consistency_level:type_name -> milvus.proto.backup.ConsistencyLevel + 9, // 4: milvus.proto.backup.CollectionBackupInfo.partition_backups:type_name -> milvus.proto.backup.PartitionBackupInfo + 7, // 5: milvus.proto.backup.CollectionBackupInfo.index_infos:type_name -> milvus.proto.backup.IndexInfo + 49, // 6: milvus.proto.backup.CollectionBackupInfo.channel_checkpoints:type_name -> milvus.proto.backup.CollectionBackupInfo.ChannelCheckpointsEntry + 10, // 7: milvus.proto.backup.CollectionBackupInfo.l0_segments:type_name -> milvus.proto.backup.SegmentBackupInfo + 10, // 8: milvus.proto.backup.PartitionBackupInfo.segment_backups:type_name -> milvus.proto.backup.SegmentBackupInfo + 28, // 9: milvus.proto.backup.SegmentBackupInfo.binlogs:type_name -> milvus.proto.backup.FieldBinlog + 28, // 10: milvus.proto.backup.SegmentBackupInfo.statslogs:type_name -> milvus.proto.backup.FieldBinlog + 28, // 11: milvus.proto.backup.SegmentBackupInfo.deltalogs:type_name -> milvus.proto.backup.FieldBinlog + 1, // 12: milvus.proto.backup.BackupInfo.state_code:type_name -> milvus.proto.backup.BackupTaskStateCode + 8, // 13: milvus.proto.backup.BackupInfo.collection_backups:type_name -> milvus.proto.backup.CollectionBackupInfo + 47, // 14: milvus.proto.backup.BackupInfo.rbac_meta:type_name -> milvus.proto.backup.RBACMeta + 8, // 15: milvus.proto.backup.CollectionLevelBackupInfo.infos:type_name -> milvus.proto.backup.CollectionBackupInfo + 9, // 16: milvus.proto.backup.PartitionLevelBackupInfo.infos:type_name -> milvus.proto.backup.PartitionBackupInfo + 10, // 17: milvus.proto.backup.SegmentLevelBackupInfo.infos:type_name -> milvus.proto.backup.SegmentBackupInfo + 51, // 18: milvus.proto.backup.CreateBackupRequest.db_collections:type_name -> google.protobuf.Value + 0, // 19: milvus.proto.backup.BackupInfoResponse.code:type_name -> milvus.proto.backup.ResponseCode + 11, // 20: milvus.proto.backup.BackupInfoResponse.data:type_name -> milvus.proto.backup.BackupInfo + 0, // 21: milvus.proto.backup.ListBackupsResponse.code:type_name -> milvus.proto.backup.ResponseCode + 11, // 22: milvus.proto.backup.ListBackupsResponse.data:type_name -> milvus.proto.backup.BackupInfo + 0, // 23: milvus.proto.backup.DeleteBackupResponse.code:type_name -> milvus.proto.backup.ResponseCode + 50, // 24: milvus.proto.backup.RestoreBackupRequest.collection_renames:type_name -> milvus.proto.backup.RestoreBackupRequest.CollectionRenamesEntry + 51, // 25: milvus.proto.backup.RestoreBackupRequest.db_collections:type_name -> google.protobuf.Value + 2, // 26: milvus.proto.backup.RestorePartitionTask.state_code:type_name -> milvus.proto.backup.RestoreTaskStateCode + 9, // 27: milvus.proto.backup.RestorePartitionTask.part_backup:type_name -> milvus.proto.backup.PartitionBackupInfo + 2, // 28: milvus.proto.backup.RestoreCollectionTask.state_code:type_name -> milvus.proto.backup.RestoreTaskStateCode + 8, // 29: milvus.proto.backup.RestoreCollectionTask.coll_backup:type_name -> milvus.proto.backup.CollectionBackupInfo + 23, // 30: milvus.proto.backup.RestoreCollectionTask.partition_restore_tasks:type_name -> milvus.proto.backup.RestorePartitionTask + 2, // 31: milvus.proto.backup.RestoreBackupTask.state_code:type_name -> milvus.proto.backup.RestoreTaskStateCode + 24, // 32: milvus.proto.backup.RestoreBackupTask.collection_restore_tasks:type_name -> milvus.proto.backup.RestoreCollectionTask + 0, // 33: milvus.proto.backup.RestoreBackupResponse.code:type_name -> milvus.proto.backup.ResponseCode + 25, // 34: milvus.proto.backup.RestoreBackupResponse.data:type_name -> milvus.proto.backup.RestoreBackupTask + 29, // 35: milvus.proto.backup.FieldBinlog.binlogs:type_name -> milvus.proto.backup.Binlog + 5, // 36: milvus.proto.backup.FieldSchema.data_type:type_name -> milvus.proto.backup.DataType + 30, // 37: milvus.proto.backup.FieldSchema.type_params:type_name -> milvus.proto.backup.KeyValuePair + 30, // 38: milvus.proto.backup.FieldSchema.index_params:type_name -> milvus.proto.backup.KeyValuePair + 6, // 39: milvus.proto.backup.FieldSchema.state:type_name -> milvus.proto.backup.FieldState + 5, // 40: milvus.proto.backup.FieldSchema.element_type:type_name -> milvus.proto.backup.DataType + 31, // 41: milvus.proto.backup.FieldSchema.default_value:type_name -> milvus.proto.backup.ValueField + 4, // 42: milvus.proto.backup.FunctionSchema.type:type_name -> milvus.proto.backup.FunctionType + 30, // 43: milvus.proto.backup.FunctionSchema.params:type_name -> milvus.proto.backup.KeyValuePair + 32, // 44: milvus.proto.backup.CollectionSchema.fields:type_name -> milvus.proto.backup.FieldSchema + 30, // 45: milvus.proto.backup.CollectionSchema.properties:type_name -> milvus.proto.backup.KeyValuePair + 33, // 46: milvus.proto.backup.CollectionSchema.functions:type_name -> milvus.proto.backup.FunctionSchema + 0, // 47: milvus.proto.backup.CheckResponse.code:type_name -> milvus.proto.backup.ResponseCode + 40, // 48: milvus.proto.backup.GrantorEntity.user:type_name -> milvus.proto.backup.UserEntity + 42, // 49: milvus.proto.backup.GrantorEntity.privilege:type_name -> milvus.proto.backup.PrivilegeEntity + 43, // 50: milvus.proto.backup.GrantPrivilegeEntity.entities:type_name -> milvus.proto.backup.GrantorEntity + 39, // 51: milvus.proto.backup.GrantEntity.role:type_name -> milvus.proto.backup.RoleEntity + 41, // 52: milvus.proto.backup.GrantEntity.object:type_name -> milvus.proto.backup.ObjectEntity + 43, // 53: milvus.proto.backup.GrantEntity.grantor:type_name -> milvus.proto.backup.GrantorEntity + 39, // 54: milvus.proto.backup.UserInfo.roles:type_name -> milvus.proto.backup.RoleEntity + 46, // 55: milvus.proto.backup.RBACMeta.users:type_name -> milvus.proto.backup.UserInfo + 39, // 56: milvus.proto.backup.RBACMeta.roles:type_name -> milvus.proto.backup.RoleEntity + 45, // 57: milvus.proto.backup.RBACMeta.grants:type_name -> milvus.proto.backup.GrantEntity + 15, // 58: milvus.proto.backup.MilvusBackupService.CreateBackup:input_type -> milvus.proto.backup.CreateBackupRequest + 17, // 59: milvus.proto.backup.MilvusBackupService.GetBackup:input_type -> milvus.proto.backup.GetBackupRequest + 18, // 60: milvus.proto.backup.MilvusBackupService.ListBackups:input_type -> milvus.proto.backup.ListBackupsRequest + 20, // 61: milvus.proto.backup.MilvusBackupService.DeleteBackup:input_type -> milvus.proto.backup.DeleteBackupRequest + 22, // 62: milvus.proto.backup.MilvusBackupService.RestoreBackup:input_type -> milvus.proto.backup.RestoreBackupRequest + 27, // 63: milvus.proto.backup.MilvusBackupService.GetRestore:input_type -> milvus.proto.backup.GetRestoreStateRequest + 35, // 64: milvus.proto.backup.MilvusBackupService.Check:input_type -> milvus.proto.backup.CheckRequest + 16, // 65: milvus.proto.backup.MilvusBackupService.CreateBackup:output_type -> milvus.proto.backup.BackupInfoResponse + 16, // 66: milvus.proto.backup.MilvusBackupService.GetBackup:output_type -> milvus.proto.backup.BackupInfoResponse + 19, // 67: milvus.proto.backup.MilvusBackupService.ListBackups:output_type -> milvus.proto.backup.ListBackupsResponse + 21, // 68: milvus.proto.backup.MilvusBackupService.DeleteBackup:output_type -> milvus.proto.backup.DeleteBackupResponse + 26, // 69: milvus.proto.backup.MilvusBackupService.RestoreBackup:output_type -> milvus.proto.backup.RestoreBackupResponse + 26, // 70: milvus.proto.backup.MilvusBackupService.GetRestore:output_type -> milvus.proto.backup.RestoreBackupResponse + 36, // 71: milvus.proto.backup.MilvusBackupService.Check:output_type -> milvus.proto.backup.CheckResponse + 65, // [65:72] is the sub-list for method output_type + 58, // [58:65] is the sub-list for method input_type + 58, // [58:58] is the sub-list for extension type_name + 58, // [58:58] is the sub-list for extension extendee + 0, // [0:58] is the sub-list for field type_name +} + +func init() { file_backup_proto_init() } +func file_backup_proto_init() { + if File_backup_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_backup_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IndexInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CollectionBackupInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PartitionBackupInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SegmentBackupInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BackupInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CollectionLevelBackupInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PartitionLevelBackupInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SegmentLevelBackupInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateBackupRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BackupInfoResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetBackupRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListBackupsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListBackupsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteBackupRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteBackupResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RestoreBackupRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RestorePartitionTask); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RestoreCollectionTask); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RestoreBackupTask); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RestoreBackupResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetRestoreStateRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FieldBinlog); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Binlog); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KeyValuePair); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValueField); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FieldSchema); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FunctionSchema); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CollectionSchema); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CheckRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CheckResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgPosition); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelPosition); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RoleEntity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UserEntity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ObjectEntity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PrivilegeEntity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GrantorEntity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GrantPrivilegeEntity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GrantEntity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UserInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backup_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RBACMeta); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_backup_proto_msgTypes[24].OneofWrappers = []interface{}{ + (*ValueField_BoolData)(nil), + (*ValueField_IntData)(nil), + (*ValueField_LongData)(nil), + (*ValueField_FloatData)(nil), + (*ValueField_DoubleData)(nil), + (*ValueField_StringData)(nil), + (*ValueField_BytesData)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_backup_proto_rawDesc, + NumEnums: 7, + NumMessages: 44, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_backup_proto_goTypes, + DependencyIndexes: file_backup_proto_depIdxs, + EnumInfos: file_backup_proto_enumTypes, + MessageInfos: file_backup_proto_msgTypes, + }.Build() + File_backup_proto = out.File + file_backup_proto_rawDesc = nil + file_backup_proto_goTypes = nil + file_backup_proto_depIdxs = nil } // Reference imports to suppress errors if they are not otherwise used. var _ context.Context -var _ grpc.ClientConn +var _ grpc.ClientConnInterface // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 +const _ = grpc.SupportPackageIsVersion6 // MilvusBackupServiceClient is the client API for MilvusBackupService service. // @@ -3678,10 +5440,10 @@ type MilvusBackupServiceClient interface { } type milvusBackupServiceClient struct { - cc *grpc.ClientConn + cc grpc.ClientConnInterface } -func NewMilvusBackupServiceClient(cc *grpc.ClientConn) MilvusBackupServiceClient { +func NewMilvusBackupServiceClient(cc grpc.ClientConnInterface) MilvusBackupServiceClient { return &milvusBackupServiceClient{cc} } @@ -3770,25 +5532,25 @@ type MilvusBackupServiceServer interface { type UnimplementedMilvusBackupServiceServer struct { } -func (*UnimplementedMilvusBackupServiceServer) CreateBackup(ctx context.Context, req *CreateBackupRequest) (*BackupInfoResponse, error) { +func (*UnimplementedMilvusBackupServiceServer) CreateBackup(context.Context, *CreateBackupRequest) (*BackupInfoResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateBackup not implemented") } -func (*UnimplementedMilvusBackupServiceServer) GetBackup(ctx context.Context, req *GetBackupRequest) (*BackupInfoResponse, error) { +func (*UnimplementedMilvusBackupServiceServer) GetBackup(context.Context, *GetBackupRequest) (*BackupInfoResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetBackup not implemented") } -func (*UnimplementedMilvusBackupServiceServer) ListBackups(ctx context.Context, req *ListBackupsRequest) (*ListBackupsResponse, error) { +func (*UnimplementedMilvusBackupServiceServer) ListBackups(context.Context, *ListBackupsRequest) (*ListBackupsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListBackups not implemented") } -func (*UnimplementedMilvusBackupServiceServer) DeleteBackup(ctx context.Context, req *DeleteBackupRequest) (*DeleteBackupResponse, error) { +func (*UnimplementedMilvusBackupServiceServer) DeleteBackup(context.Context, *DeleteBackupRequest) (*DeleteBackupResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteBackup not implemented") } -func (*UnimplementedMilvusBackupServiceServer) RestoreBackup(ctx context.Context, req *RestoreBackupRequest) (*RestoreBackupResponse, error) { +func (*UnimplementedMilvusBackupServiceServer) RestoreBackup(context.Context, *RestoreBackupRequest) (*RestoreBackupResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RestoreBackup not implemented") } -func (*UnimplementedMilvusBackupServiceServer) GetRestore(ctx context.Context, req *GetRestoreStateRequest) (*RestoreBackupResponse, error) { +func (*UnimplementedMilvusBackupServiceServer) GetRestore(context.Context, *GetRestoreStateRequest) (*RestoreBackupResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetRestore not implemented") } -func (*UnimplementedMilvusBackupServiceServer) Check(ctx context.Context, req *CheckRequest) (*CheckResponse, error) { +func (*UnimplementedMilvusBackupServiceServer) Check(context.Context, *CheckRequest) (*CheckResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Check not implemented") } diff --git a/core/storage/chunk_manager.go b/core/storage/chunk_manager.go index 947435b5..4408b474 100644 --- a/core/storage/chunk_manager.go +++ b/core/storage/chunk_manager.go @@ -35,7 +35,7 @@ type ChunkManager interface { UploadObject(ctx context.Context, i UploadObjectInput) error } -func NewChunkManager(ctx context.Context, params paramtable.BackupParams, config *StorageConfig) (ChunkManager, error) { +func NewChunkManager(ctx context.Context, params *paramtable.BackupParams, config *StorageConfig) (ChunkManager, error) { switch config.StorageType { case paramtable.Local: return NewLocalChunkManager(ctx, config) @@ -47,7 +47,7 @@ func NewChunkManager(ctx context.Context, params paramtable.BackupParams, config } } -func newAzureChunkManagerWithParams(ctx context.Context, params paramtable.BackupParams, config *StorageConfig) (*AzureChunkManager, error) { +func newAzureChunkManagerWithParams(ctx context.Context, params *paramtable.BackupParams, config *StorageConfig) (*AzureChunkManager, error) { c := newDefaultConfig() c.Address = params.MinioCfg.Address + ":" + params.MinioCfg.Port c.AccessKeyID = params.MinioCfg.AccessKeyID diff --git a/core/storage/local_chunk_manager.go b/core/storage/local_chunk_manager.go index 47de78d5..788911d3 100644 --- a/core/storage/local_chunk_manager.go +++ b/core/storage/local_chunk_manager.go @@ -27,6 +27,7 @@ import ( "strings" "github.com/cockroachdb/errors" + "github.com/zilliztech/milvus-backup/internal/log" ) diff --git a/core/utils/backup_request_util.go b/core/utils/backup_request_util.go index 160fed85..0f05a3e8 100644 --- a/core/utils/backup_request_util.go +++ b/core/utils/backup_request_util.go @@ -3,6 +3,7 @@ package utils import ( "github.com/golang/protobuf/jsonpb" structpb "github.com/golang/protobuf/ptypes/struct" + "github.com/zilliztech/milvus-backup/core/proto/backuppb" ) diff --git a/core/utils/convert_util.go b/core/utils/convert_util.go index 9f0b705e..84f21178 100644 --- a/core/utils/convert_util.go +++ b/core/utils/convert_util.go @@ -9,6 +9,7 @@ import ( "github.com/golang/protobuf/proto" "github.com/milvus-io/milvus-proto/go-api/v2/msgpb" + "github.com/zilliztech/milvus-backup/core/proto/backuppb" ) diff --git a/core/utils/version_util.go b/core/utils/version_util.go index ee45635e..792e8abb 100644 --- a/core/utils/version_util.go +++ b/core/utils/version_util.go @@ -1,8 +1,9 @@ package utils import ( - "github.com/blang/semver/v4" "strings" + + "github.com/blang/semver/v4" ) const ( diff --git a/go.mod b/go.mod index 4d776c23..140cca6c 100644 --- a/go.mod +++ b/go.mod @@ -1,116 +1,130 @@ module github.com/zilliztech/milvus-backup -go 1.18 +go 1.23.0 require ( - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 - github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.1.0 - github.com/aliyun/credentials-go v1.3.0 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.16.0 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.0 + github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.5.0 + github.com/aliyun/credentials-go v1.4.3 github.com/blang/semver/v4 v4.0.0 - github.com/cockroachdb/errors v1.9.1 - github.com/gin-gonic/gin v1.8.1 - github.com/golang/protobuf v1.5.2 - github.com/google/btree v1.0.1 - github.com/google/uuid v1.3.0 + github.com/cockroachdb/errors v1.11.3 + github.com/gin-gonic/gin v1.10.0 + github.com/golang/protobuf v1.5.4 + github.com/google/btree v1.1.3 + github.com/google/uuid v1.6.0 + github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 + github.com/imroc/req/v3 v3.49.1 github.com/json-iterator/go v1.1.12 github.com/lingdor/stackerror v0.0.0-20191119040541-976d8885ed76 - //github.com/milvus-io/milvus-proto/go-api/v2 v2.4.3 - github.com/milvus-io/milvus-sdk-go/v2 v2.4.2-0.20241009111120-8008f14f2c16 - github.com/minio/minio-go/v7 v7.0.61 + github.com/milvus-io/milvus-proto/go-api/v2 v2.5.1 + github.com/minio/minio-go/v7 v7.0.82 github.com/pkg/errors v0.9.1 - github.com/samber/lo v1.39.0 - github.com/sony/sonyflake v1.1.0 - github.com/spf13/cast v1.3.1 - github.com/spf13/cobra v1.5.0 - github.com/spf13/viper v1.8.1 - github.com/stretchr/testify v1.8.4 - github.com/swaggo/files v1.0.0 - github.com/swaggo/gin-swagger v1.5.3 - github.com/swaggo/swag v1.16.1 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.865 - github.com/uber/jaeger-client-go v2.25.0+incompatible - go.uber.org/atomic v1.10.0 - go.uber.org/zap v1.17.0 - golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602 - golang.org/x/sync v0.8.0 - golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 - google.golang.org/grpc v1.48.0 - gopkg.in/natefinch/lumberjack.v2 v2.0.0 + github.com/samber/lo v1.47.0 + github.com/sony/sonyflake v1.2.0 + github.com/spf13/cast v1.7.1 + github.com/spf13/cobra v1.8.1 + github.com/spf13/viper v1.19.0 + github.com/stretchr/testify v1.10.0 + github.com/swaggo/files v1.0.1 + github.com/swaggo/gin-swagger v1.6.0 + github.com/swaggo/swag v1.16.4 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1071 + github.com/uber/jaeger-client-go v2.30.0+incompatible + go.uber.org/atomic v1.11.0 + go.uber.org/zap v1.27.0 + golang.org/x/oauth2 v0.24.0 + golang.org/x/sync v0.10.0 + golang.org/x/time v0.8.0 + google.golang.org/grpc v1.69.2 + google.golang.org/protobuf v1.36.1 + gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v3 v3.0.1 ) -replace github.com/milvus-io/milvus-sdk-go/v2 => github.com/wayblink/milvus-sdk-go/v2 v2.3.0-beta4.0.20241030091852-d6eb85c1a8ff - -require github.com/milvus-io/milvus-proto/go-api/v2 v2.3.4-0.20240909041258-8f8ca67816cd - require ( - cloud.google.com/go v0.81.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect + cloud.google.com/go/compute/metadata v0.6.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2 // indirect github.com/KyleBanks/depth v1.2.1 // indirect - github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68 // indirect - github.com/alibabacloud-go/tea v1.1.8 // indirect - github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect - github.com/cockroachdb/redact v1.1.3 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/alibabacloud-go/debug v1.0.1 // indirect + github.com/alibabacloud-go/tea v1.2.2 // indirect + github.com/andybalholm/brotli v1.1.1 // indirect + github.com/bytedance/sonic v1.12.6 // indirect + github.com/bytedance/sonic/loader v0.2.1 // indirect + github.com/cloudflare/circl v1.5.0 // indirect + github.com/cloudwego/base64x v0.1.4 // indirect + github.com/cloudwego/iasm v0.2.0 // indirect + github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 // indirect + github.com/cockroachdb/redact v1.1.5 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/fsnotify/fsnotify v1.4.9 // indirect - github.com/getsentry/sentry-go v0.12.0 // indirect + github.com/fsnotify/fsnotify v1.8.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.7 // indirect + github.com/getsentry/sentry-go v0.30.0 // indirect github.com/gin-contrib/sse v0.1.0 // indirect - github.com/go-openapi/jsonpointer v0.20.0 // indirect - github.com/go-openapi/jsonreference v0.20.2 // indirect - github.com/go-openapi/spec v0.20.9 // indirect - github.com/go-openapi/swag v0.22.4 // indirect - github.com/go-playground/locales v0.14.0 // indirect - github.com/go-playground/universal-translator v0.18.0 // indirect - github.com/go-playground/validator/v10 v10.10.0 // indirect - github.com/goccy/go-json v0.9.7 // indirect + github.com/go-ini/ini v1.67.0 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.21.0 // indirect + github.com/go-openapi/spec v0.21.0 // indirect + github.com/go-openapi/swag v0.23.0 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.23.0 // indirect + github.com/go-task/slim-sprig/v3 v3.0.0 // indirect + github.com/goccy/go-json v0.10.4 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.0.0 // indirect - github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect + github.com/golang-jwt/jwt/v5 v5.2.1 // indirect + github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect - github.com/klauspost/compress v1.16.7 // indirect - github.com/klauspost/cpuid/v2 v2.2.5 // indirect + github.com/klauspost/compress v1.17.11 // indirect + github.com/klauspost/cpuid/v2 v2.2.9 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect - github.com/leodido/go-urn v1.2.1 // indirect - github.com/magiconair/properties v1.8.5 // indirect - github.com/mailru/easyjson v0.7.7 // indirect - github.com/mattn/go-isatty v0.0.14 // indirect + github.com/leodido/go-urn v1.4.0 // indirect + github.com/magiconair/properties v1.8.9 // indirect + github.com/mailru/easyjson v0.9.0 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/md5-simd v1.1.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect - github.com/mitchellh/mapstructure v1.4.1 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/pelletier/go-toml v1.9.3 // indirect - github.com/pelletier/go-toml/v2 v2.0.1 // indirect - github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/rogpeppe/go-internal v1.9.0 // indirect - github.com/rs/xid v1.5.0 // indirect - github.com/sirupsen/logrus v1.9.3 // indirect - github.com/spf13/afero v1.6.0 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/onsi/ginkgo/v2 v2.22.0 // indirect + github.com/onsi/gomega v1.35.1 // indirect + github.com/pelletier/go-toml/v2 v2.2.3 // indirect + github.com/pingcap/errors v0.11.5-0.20211224045212-9687c2b0f87c // indirect + github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/quic-go/qpack v0.5.1 // indirect + github.com/quic-go/quic-go v0.48.2 // indirect + github.com/refraction-networking/utls v1.6.7 // indirect + github.com/rogpeppe/go-internal v1.13.1 // indirect + github.com/rs/xid v1.6.0 // indirect + github.com/sagikazarmark/locafero v0.6.0 // indirect + github.com/sagikazarmark/slog-shim v0.1.0 // indirect + github.com/sourcegraph/conc v0.3.0 // indirect + github.com/spf13/afero v1.11.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/subosito/gotenv v1.2.0 // indirect - github.com/tidwall/gjson v1.14.4 // indirect - github.com/tidwall/match v1.1.1 // indirect - github.com/tidwall/pretty v1.2.0 // indirect - github.com/ugorji/go/codec v1.2.7 // indirect - go.uber.org/multierr v1.6.0 // indirect - golang.org/x/crypto v0.14.0 // indirect - golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect - golang.org/x/net v0.17.0 // indirect - golang.org/x/sys v0.13.0 // indirect - golang.org/x/text v0.13.0 // indirect - golang.org/x/tools v0.11.0 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20220503193339-ba3ae3f07e29 // indirect - google.golang.org/protobuf v1.33.0 // indirect + github.com/subosito/gotenv v1.6.0 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ugorji/go/codec v1.2.12 // indirect + go.opentelemetry.io/otel v1.33.0 // indirect + go.opentelemetry.io/otel/sdk v1.33.0 // indirect + go.uber.org/mock v0.5.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + golang.org/x/arch v0.12.0 // indirect + golang.org/x/crypto v0.31.0 // indirect + golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 // indirect + golang.org/x/mod v0.22.0 // indirect + golang.org/x/net v0.33.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect + golang.org/x/tools v0.28.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 // indirect gopkg.in/ini.v1 v1.67.0 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/go.sum b/go.sum index 689b2eda..3a571672 100644 --- a/go.sum +++ b/go.sum @@ -1,346 +1,169 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0 h1:at8Tk2zUz63cLPR0JPWm5vp77pEZmzxEQBEfRKn1VV8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0 h1:8q4SaHjFsClSvuVne0ID/5Ka8u3fcIHyqkLjcFpNRHQ= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 h1:vcYCAze6p19qBW7MhZybIsqD8sMV8js0NyQM8JDnVtg= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.2.0 h1:Ma67P/GGprNwsslzEH6+Kb8nybI8jpDTm4Wmzu2ReK8= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.1.0 h1:nVocQV40OQne5613EeLayJiRAJuKlBGy+m22qWG+WRg= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.1.0/go.mod h1:7QJP7dr2wznCMeqIrhMgWGf7XpAQnVrJqDm9nvV3Cu4= -github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk= -github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= +cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.16.0 h1:JZg6HRh6W6U4OLl6lk7BZ7BLisIzM9dG1R50zUk9C/M= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.16.0/go.mod h1:YL1xnZ6QejvQHWJrX/AvhFl4WW4rqHVoKspWNVwFk0M= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.0 h1:B/dfvscEQtew9dVuoxqxrUKKv8Ih2f55PydknDamU+g= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.0/go.mod h1:fiPSssYvltE08HJchL04dOy+RD4hgrjph0cwGGMntdI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.0 h1:+m0M/LFxN43KvULkDNfdXOgrjtg6UYJPFBJyuEcRCAw= +github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.0/go.mod h1:PwOyop78lveYMRs6oCxjiVyBdyCgIYH6XHIVZO9/SFQ= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 h1:ywEEhmNahHBihViHepv3xPBn1663uRv2t2q/ESv9seY= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.6.0 h1:PiSrjRPpkQNjrM8H0WwKMnZUdu1RGMtd/LdGKUrOo+c= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.6.0/go.mod h1:oDrbWx4ewMylP7xHivfgixbfGBT6APAwsSoHRKotnIc= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.5.0 h1:mlmW46Q0B79I+Aj4azKC6xDMFN9a9SyZWESlGWYXbFs= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.5.0/go.mod h1:PXe2h+LKcWTX9afWdZoHyODqR4fBa5boUM/8uJfZ0Jo= +github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM= +github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE= +github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2 h1:kYRSnvJju5gYVyhkij+RTJ/VR6QIUaCfWeaFm2ycsjQ= +github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= -github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= -github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= -github.com/agiledragon/gomonkey/v2 v2.3.1/go.mod h1:ap1AmDzcVOAz1YpeJ3TCzIgstoaWLA6jbbgxfB4w2iY= -github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= -github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68 h1:NqugFkGxx1TXSh/pBcU00Y6bljgDPaFdh5MUSeJ7e50= -github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68/go.mod h1:6pb/Qy8c+lqua8cFpEy7g39NRRqOWc3rOwAy8m5Y2BY= -github.com/alibabacloud-go/tea v1.1.8 h1:vFF0707fqjGiQTxrtMnIXRjOCvQXf49CuDVRtTopmwU= -github.com/alibabacloud-go/tea v1.1.8/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/KeGOFfwYm3N/p4= -github.com/aliyun/credentials-go v1.3.0 h1:wfBNojfNJJyuHK3YUIIjRPwnlQIdmy/YMkia1XOnPtY= -github.com/aliyun/credentials-go v1.3.0/go.mod h1:8jKYhQuDawt8x2+fusqa1Y6mPxemTsBEN04dgcAcYz0= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= +github.com/alibabacloud-go/debug v1.0.0/go.mod h1:8gfgZCCAC3+SCzjWtY053FrOcd4/qlH6IHTI4QyICOc= +github.com/alibabacloud-go/debug v1.0.1 h1:MsW9SmUtbb1Fnt3ieC6NNZi6aEwrXfDksD4QA6GSbPg= +github.com/alibabacloud-go/debug v1.0.1/go.mod h1:8gfgZCCAC3+SCzjWtY053FrOcd4/qlH6IHTI4QyICOc= +github.com/alibabacloud-go/tea v1.2.2 h1:aTsR6Rl3ANWPfqeQugPglfurloyBJY85eFy7Gc1+8oU= +github.com/alibabacloud-go/tea v1.2.2/go.mod h1:CF3vOzEMAG+bR4WOql8gc2G9H3EkH3ZLAQdpmpXMgwk= +github.com/aliyun/credentials-go v1.4.3 h1:N3iHyvHRMyOwY1+0qBLSf3hb5JFiOujVSVuEpgeGttY= +github.com/aliyun/credentials-go v1.4.3/go.mod h1:Jm6d+xIgwJVLVWT561vy67ZRP4lPTQxMbEYRuT2Ti1U= +github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA= +github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= +github.com/bytedance/sonic v1.12.6 h1:/isNmCUF2x3Sh8RAp/4mh4ZGkcFAX/hLrzrK3AvpRzk= +github.com/bytedance/sonic v1.12.6/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk= +github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/bytedance/sonic/loader v0.2.1 h1:1GgorWTqf12TA8mma4DDSbaQigE2wOgQo7iCjjJv3+E= +github.com/bytedance/sonic/loader v0.2.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/circl v1.5.0 h1:hxIWksrX6XN5a1L2TI/h53AGPhNHoUBo+TD1ms9+pys= +github.com/cloudflare/circl v1.5.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= +github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= +github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= +github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8= -github.com/cockroachdb/errors v1.9.1/go.mod h1:2sxOtL2WIc096WSZqZ5h8fa17rdDq9HZOZLBCor4mBk= -github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f h1:6jduT9Hfc0njg5jJ1DdKCFPdMBrp/mdZfCpa5h+WM74= -github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= -github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= -github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= +github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 h1:ASDL+UJcILMqgNeV5jiqR4j+sTuvQNHdf2chuKj1M5k= +github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506/go.mod h1:Mw7HqKr2kdtu6aYGn3tPmAftiP3QPX63LdK/zcariIo= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= -github.com/getsentry/sentry-go v0.12.0 h1:era7g0re5iY13bHSdN/xMkyV+5zZppjRVQhZrXCaEIk= -github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= +github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/gabriel-vasile/mimetype v1.4.7 h1:SKFKl7kD0RiPdbht0s7hFtjl489WcQ1VyPW8ZzUMYCA= +github.com/gabriel-vasile/mimetype v1.4.7/go.mod h1:GDlAgAyIRT27BhFl53XNAFtfjzOkLaF35JdEG0P7LtU= +github.com/getsentry/sentry-go v0.30.0 h1:lWUwDnY7sKHaVIoZ9wYqRHJ5iEmoc0pqcRqFkosKzBo= +github.com/getsentry/sentry-go v0.30.0/go.mod h1:WU9B9/1/sHDqeV8T+3VwwbjeR5MSXs/6aqG3mqZrezA= github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d4= github.com/gin-contrib/gzip v0.0.6/go.mod h1:QOJlmV2xmayAjkNS2Y8NQsMneuRShOU/kjovCXNuzzk= -github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= -github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= -github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= -github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= -github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= -github.com/go-faker/faker/v4 v4.1.0 h1:ffuWmpDrducIUOO0QSKSF5Q2dxAht+dhsT9FvVHhPEI= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonpointer v0.20.0 h1:ESKJdU9ASRfaPNOPRx12IUyA1vn3R9GiE3KYD14BXdQ= -github.com/go-openapi/jsonpointer v0.20.0/go.mod h1:6PGzBjjIIumbLYysB73Klnms1mwnU4G3YHOECG3CedA= -github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= -github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= -github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= -github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= -github.com/go-openapi/spec v0.20.9 h1:xnlYNQAwKd2VQRRfwTEI0DcK+2cbuvI/0c7jx3gA8/8= -github.com/go-openapi/spec v0.20.9/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU= -github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= -github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= -github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= -github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= -github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= -github.com/go-playground/validator/v10 v10.10.0 h1:I7mrTYv78z8k8VXa/qJlOlEXn/nBh+BF8dHX5nt/dr0= -github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= +github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU= +github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= +github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= +github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= +github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= +github.com/go-openapi/spec v0.21.0 h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9ZY= +github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.23.0 h1:/PwmTwZhS0dPkav3cdK9kV1FsAmrL8sThn8IHr/sO+o= +github.com/go-playground/validator/v10 v10.23.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/goccy/go-json v0.9.7 h1:IcB+Aqpx/iMHu5Yooh7jEzJk1JZ7Pjtmys2ukPr7EeM= -github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= +github.com/goccy/go-json v0.10.4 h1:JSwxQzIqKfmFX1swYPpUThQZp/Ka4wzJdK0LWVytLPM= +github.com/goccy/go-json v0.10.4/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= -github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= -github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= -github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= -github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= +github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg= +github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hydrogen18/memlistener v0.0.0-20200120041712-dcc25e7acd91/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= -github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= -github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= -github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g= -github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= +github.com/imroc/req/v3 v3.49.1 h1:Nvwo02riiPEzh74ozFHeEJrtjakFxnoWNR3YZYuQm9U= +github.com/imroc/req/v3 v3.49.1/go.mod h1:tsOk8K7zI6cU4xu/VWCZVtq9Djw9IWm4MslKzme5woU= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= -github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= -github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= -github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= -github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro= -github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= +github.com/keybase/go-keychain v0.0.0-20231219164618-57a3676c3af6 h1:IsMZxCuZqKuao2vNdfD82fjjgPLfyHLpR41Z88viRWs= +github.com/keybase/go-keychain v0.0.0-20231219164618-57a3676c3af6/go.mod h1:3VeWNIJaW+O5xpRQbPp0Ybqu1vJd/pm7s2F473HRrkw= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= -github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= -github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= -github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY= +github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -349,664 +172,279 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= -github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= -github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= -github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/lingdor/stackerror v0.0.0-20191119040541-976d8885ed76 h1:IVlcvV0CjvfBYYod5ePe89l+3LBAl//6n9kJ9Vr2i0k= github.com/lingdor/stackerror v0.0.0-20191119040541-976d8885ed76/go.mod h1:Iu9BHUvTh8/KpbuSoKx/CaJEdJvFxSverxIy7I+nq7s= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= -github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= -github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/milvus-io/milvus-proto/go-api/v2 v2.3.4-0.20240909041258-8f8ca67816cd h1:x0b0+foTe23sKcVFseR1DE8+BB08EH6ViiRHaz8PEik= -github.com/milvus-io/milvus-proto/go-api/v2 v2.3.4-0.20240909041258-8f8ca67816cd/go.mod h1:/6UT4zZl6awVeXLeE7UGDWZvXj3IWkRsh3mqsn0DiAs= +github.com/magiconair/properties v1.8.9 h1:nWcCbLq1N2v/cpNsy5WvQ37Fb+YElfq20WJ/a8RkpQM= +github.com/magiconair/properties v1.8.9/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= +github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/milvus-io/milvus-proto/go-api/v2 v2.5.1 h1:kUXwIa2FRXTx69bB46aMriqfrjbLnHMRAD4/+BhnL6w= +github.com/milvus-io/milvus-proto/go-api/v2 v2.5.1/go.mod h1:/6UT4zZl6awVeXLeE7UGDWZvXj3IWkRsh3mqsn0DiAs= github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34= github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM= -github.com/minio/minio-go/v7 v7.0.61 h1:87c+x8J3jxQ5VUGimV9oHdpjsAvy3fhneEBKuoKEVUI= -github.com/minio/minio-go/v7 v7.0.61/go.mod h1:BTu8FcrEw+HidY0zd/0eny43QnVNkXRPXrLXFuQBHXg= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/minio/minio-go/v7 v7.0.82 h1:tWfICLhmp2aFPXL8Tli0XDTHj2VB/fNf0PC1f/i1gRo= +github.com/minio/minio-go/v7 v7.0.82/go.mod h1:84gmIilaX4zcvAWWzJ5Z1WI5axN+hAbM5w25xf8xvC0= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/ginkgo/v2 v2.22.0 h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg= +github.com/onsi/ginkgo/v2 v2.22.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= +github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= +github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/otiai10/copy v1.7.0/go.mod h1:rmRl6QPdJj6EiUqXQ/4Nn2lLXoNQjFCQbbNrxgc/t3U= -github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= -github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= -github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= -github.com/otiai10/mint v1.3.3/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ= -github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.0.1 h1:8e3L2cCQzLFi2CR4g7vGFuFxX7Jl1kKX8gW+iV0GUKU= -github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= -github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= -github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= -github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= +github.com/pingcap/errors v0.11.5-0.20211224045212-9687c2b0f87c h1:xpW9bvK+HuuTmyFqUwr+jcCvpVkK7sumiz+ko5H9eq4= +github.com/pingcap/errors v0.11.5-0.20211224045212-9687c2b0f87c/go.mod h1:X2r9ueLEUZgtx2cIogM0v4Zj5uvvzhuuiu7Pn8HzMPg= +github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= +github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= -github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI= +github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg= +github.com/quic-go/quic-go v0.48.2 h1:wsKXZPeGWpMpCGSWqOcqpW2wZYic/8T3aqiOID0/KWE= +github.com/quic-go/quic-go v0.48.2/go.mod h1:yBgs3rWBOADpga7F+jJsb6Ybg1LSYiQvwWlLX+/6HMs= +github.com/redis/go-redis/v9 v9.6.1 h1:HHDteefn6ZkTtY5fGUE8tj8uy85AHk6zP7CpzIAM0y4= +github.com/redis/go-redis/v9 v9.6.1/go.mod h1:0C0c6ycQsdpVNQpxb1njEQIqkx5UcsM8FJCQLgE9+RA= +github.com/refraction-networking/utls v1.6.7 h1:zVJ7sP1dJx/WtVuITug3qYUq034cDq9B2MR1K67ULZM= +github.com/refraction-networking/utls v1.6.7/go.mod h1:BC3O4vQzye5hqpmDTWUqi4P5DDhzJfkV1tdqtawQIH0= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= -github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU= +github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samber/lo v1.39.0 h1:4gTz1wUhNYLhFSKl6O+8peW0v2F4BCY034GRpU9WnuA= -github.com/samber/lo v1.39.0/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= -github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk= +github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0= +github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= +github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= +github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc= +github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= -github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/assertions v1.1.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/sony/sonyflake v1.1.0 h1:wnrEcL3aOkWmPlhScLEGAXKkLAIslnBteNUq4Bw6MM4= -github.com/sony/sonyflake v1.1.0/go.mod h1:LORtCywH/cq10ZbyfhKrHYgAUGH7mOBa76enV9txy/Y= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.5.0 h1:X+jTBEBqF0bHN+9cSMgmfuvv2VHJ9ezmFNf9Y/XstYU= -github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/sony/sonyflake v1.2.0 h1:Pfr3A+ejSg+0SPqpoAmQgEtNDAhc2G1SUYk205qVMLQ= +github.com/sony/sonyflake v1.2.0/go.mod h1:LORtCywH/cq10ZbyfhKrHYgAUGH7mOBa76enV9txy/Y= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= +github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.8.1 h1:Kq1fyeebqsBfbjZj4EL7gj2IO0mMaiyjYUWcUsl2O44= -github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/swaggo/files v0.0.0-20220728132757-551d4a08d97a/go.mod h1:lKJPbtWzJ9JhsTN1k1gZgleJWY/cqq0psdoMmaThG3w= -github.com/swaggo/files v1.0.0 h1:1gGXVIeUFCS/dta17rnP0iOpr6CXFwKD7EO5ID233e4= -github.com/swaggo/files v1.0.0/go.mod h1:N59U6URJLyU1PQgFqPM7wXLMhJx7QAolnvfQkqO13kc= -github.com/swaggo/gin-swagger v1.5.3 h1:8mWmHLolIbrhJJTflsaFoZzRBYVmEE7JZGIq08EiC0Q= -github.com/swaggo/gin-swagger v1.5.3/go.mod h1:3XJKSfHjDMB5dBo/0rrTXidPmgLeqsX89Yp4uA50HpI= -github.com/swaggo/swag v1.8.1/go.mod h1:ugemnJsPZm/kRwFUnzBlbHRd0JY9zE1M4F+uy2pAaPQ= -github.com/swaggo/swag v1.16.1 h1:fTNRhKstPKxcnoKsytm4sahr8FaYzUcT7i1/3nd/fBg= -github.com/swaggo/swag v1.16.1/go.mod h1:9/LMvHycG3NFHfR6LwvikHv5iFvmPADQ359cKikGxto= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.865 h1:LcUqBlKC4j15LhT303yQDX/XxyHG4haEQqbHgZZA4SY= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.865/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= -github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= -github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= -github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= -github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/uber/jaeger-client-go v2.25.0+incompatible h1:IxcNZ7WRY1Y3G4poYlx24szfsn/3LvK9QHCq9oQw8+U= -github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= -github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= -github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= -github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= -github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= -github.com/wayblink/milvus-sdk-go/v2 v2.3.0-beta4.0.20241030091852-d6eb85c1a8ff h1:b73JFTui+bKEy5HuDFUOYNH3XNbYYl62Rv7JKA/thZo= -github.com/wayblink/milvus-sdk-go/v2 v2.3.0-beta4.0.20241030091852-d6eb85c1a8ff/go.mod h1:TdzShm5isV4F6kvrd+9V/CKowNIX+H+jvybF0WWts0Y= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= -github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= -github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= -github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/swaggo/files v1.0.1 h1:J1bVJ4XHZNq0I46UU90611i9/YzdrF7x92oX1ig5IdE= +github.com/swaggo/files v1.0.1/go.mod h1:0qXmMNH6sXNf+73t65aKeB+ApmgxdnkQzVTAj2uaMUg= +github.com/swaggo/gin-swagger v1.6.0 h1:y8sxvQ3E20/RCyrXeFfg60r6H0Z+SwpTjMYsMm+zy8M= +github.com/swaggo/gin-swagger v1.6.0/go.mod h1:BG00cCEy294xtVpyIAHG6+e2Qzj/xKlRdOqDkvq0uzo= +github.com/swaggo/swag v1.16.4 h1:clWJtd9LStiG3VeijiCfOVODP6VpHtKdQy9ELFG3s1A= +github.com/swaggo/swag v1.16.4/go.mod h1:VBsHJRsDvfYvqoiMKnsdwhNV9LEMHgEDZcyVYX0sxPg= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1071 h1:Q/Ue/yRv4HSpaiFAnXIshoDjxzwyhwezEidXU49Boa4= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1071/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= +github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= +github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= +github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU= +github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/otel v1.33.0 h1:/FerN9bax5LoK51X/sI0SVYrjSE0/yUL7DpxW4K3FWw= +go.opentelemetry.io/otel v1.33.0/go.mod h1:SUUkR6csvUQl+yjReHu5uM3EtVV7MBm5FHKRlNx4I8I= +go.opentelemetry.io/otel/metric v1.33.0 h1:r+JOocAyeRVXD8lZpjdQjzMadVZp2M4WmQ+5WtEnklQ= +go.opentelemetry.io/otel/metric v1.33.0/go.mod h1:L9+Fyctbp6HFTddIxClbQkjtubW6O9QS3Ann/M82u6M= +go.opentelemetry.io/otel/sdk v1.33.0 h1:iax7M131HuAm9QkZotNHEfstof92xM+N8sr3uHXc2IM= +go.opentelemetry.io/otel/sdk v1.33.0/go.mod h1:A1Q5oi7/9XaMlIWzPSxLRWOI8nG3FnzHJNbiENQuihM= +go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc= +go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8= +go.opentelemetry.io/otel/trace v1.33.0 h1:cCJuF7LRjUFso9LPnEAHJDB2pqzp+hbO8eu1qqW2d/s= +go.opentelemetry.io/otel/trace v1.33.0/go.mod h1:uIcdVUZMpTAmz0tI1z04GoVSezK37CbGV4fr1f2nBck= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= -go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU= +go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +golang.org/x/arch v0.12.0 h1:UsYJhbzPYGsT0HbEdmYcqtCv8UNGvnaL561NnIUvaKg= +golang.org/x/arch v0.12.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 h1:3MTrJm4PyNL9NBqvYDSj3DHl46qQakyfqfWo4jgfaEM= -golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 h1:1UoZQm6f0P/ZO0w1Ri+f+ifG/gXhegadRdwBIXEFWDo= +golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= +golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602 h1:0Ja1LBD+yisY6RWM/BH7TJVXWsSjs2VwBSmvSX4HdBc= -golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= +golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= -golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 h1:Hir2P/De0WpUhtrKGGjvSb2YxUgyZ7EFOSLIcSSpiwE= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= +golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= -golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8= +golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20220503193339-ba3ae3f07e29 h1:DJUvgAPiJWeMBiT+RzBVcJGQN7bAEWS5UEoMshES9xs= -google.golang.org/genproto v0.0.0-20220503193339-ba3ae3f07e29/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 h1:TqExAhdPaB60Ux47Cn0oLV07rGnxZzIsaRhQaqS666A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.48.0 h1:rQOsyJ/8+ufEDJd/Gdsz7HG220Mh9HAhFHRGnIjda0w= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc/examples v0.0.0-20220617181431-3e7b97febc7f h1:rqzndB2lIQGivcXdTuY3Y9NBvr70X+y77woofSRluec= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU= +google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= -gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= -gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= diff --git a/internal/common/workerpool.go b/internal/common/workerpool.go index d5e42b71..8fd38ddc 100644 --- a/internal/common/workerpool.go +++ b/internal/common/workerpool.go @@ -4,10 +4,11 @@ import ( "context" "errors" "fmt" - "go.uber.org/atomic" "sync" "time" + "go.uber.org/atomic" + "golang.org/x/sync/errgroup" "golang.org/x/time/rate" ) diff --git a/internal/util/errorutil/util_test.go b/internal/util/errorutil/util_test.go index ef688fc4..148c01c8 100644 --- a/internal/util/errorutil/util_test.go +++ b/internal/util/errorutil/util_test.go @@ -4,8 +4,9 @@ import ( "errors" "testing" - "github.com/zilliztech/milvus-backup/internal/log" "go.uber.org/zap" + + "github.com/zilliztech/milvus-backup/internal/log" ) func TestErrorList_Error(t *testing.T) { diff --git a/internal/util/grpcclient/client.go b/internal/util/grpcclient/client.go index 3effd578..8bf0844c 100644 --- a/internal/util/grpcclient/client.go +++ b/internal/util/grpcclient/client.go @@ -24,11 +24,12 @@ import ( "google.golang.org/grpc/backoff" - "github.com/zilliztech/milvus-backup/internal/log" - "github.com/zilliztech/milvus-backup/internal/util/funcutil" "go.uber.org/zap" "google.golang.org/grpc" "google.golang.org/grpc/keepalive" + + "github.com/zilliztech/milvus-backup/internal/log" + "github.com/zilliztech/milvus-backup/internal/util/funcutil" ) // GrpcClient abstracts client of grpc diff --git a/main.go b/main.go index 96f1bd3b..7071ed6c 100644 --- a/main.go +++ b/main.go @@ -3,12 +3,7 @@ package main import ( "github.com/zilliztech/milvus-backup/cmd" _ "github.com/zilliztech/milvus-backup/docs" -) - -var ( - version = "dev" - commit = "unknown" - date = "unknown" + "github.com/zilliztech/milvus-backup/version" ) // @title Milvus Backup Service @@ -20,6 +15,6 @@ var ( // @license.url http://www.apache.org/licenses/LICENSE-2.0.html // @BasePath /api/v1 func main() { - cmd.SetVersionInfo(version, commit, date) + cmd.SetVersionInfo(version.Version, version.Commit, version.Date) cmd.Execute() } diff --git a/version/version.go b/version/version.go new file mode 100644 index 00000000..7dd0d3a2 --- /dev/null +++ b/version/version.go @@ -0,0 +1,7 @@ +package version + +var ( + Version = "dev" + Commit = "unknown" + Date = "unknown" +)