From 0533b06a5e5d024dd61bb36fab0909ee127b7d5b Mon Sep 17 00:00:00 2001 From: Peter Nemere Date: Mon, 4 Dec 2023 13:26:24 +1000 Subject: [PATCH] Added sending of updates for importer as lambda runs. Generic framework which should also work with quants. Needs new data-formats --- api/config/config.go | 12 + api/dataimport/for-trigger_test.go | 10 +- api/dataimport/reprocess.go | 38 +- api/dataimport/reprocess_test.go | 48 +- api/dbCollections/collections.go | 1 + api/job/jobWatcher.go | 181 +++ api/quantification/importCSV.go | 4 +- api/ws/handlers/quantification-management.go | 2 +- api/ws/handlers/scan.go | 67 +- api/ws/ws.go | 5 + data-formats | 2 +- generated-protos/job.pb.go | 96 +- generated-protos/scan-msgs.pb.go | 314 +++-- generated-protos/websocket.pb.go | 1243 +++++++++-------- .../api-integration-test/testQuant.go | 4 +- .../v3-importer/quantifications.go | 6 +- 16 files changed, 1242 insertions(+), 791 deletions(-) create mode 100644 api/job/jobWatcher.go diff --git a/api/config/config.go b/api/config/config.go index be5e7858..2459327c 100644 --- a/api/config/config.go +++ b/api/config/config.go @@ -98,6 +98,9 @@ type APIConfig struct { // Local file caching (from S3 to where API is running) MaxFileCacheAgeSec uint MaxFileCacheSizeBytes uint + + ImportJobMaxTimeSec uint32 + PIQUANTJobMaxTimeSec uint32 } func homeDir() string { @@ -189,6 +192,15 @@ func Init() (APIConfig, error) { if nodeCountOverride != nil && *nodeCountOverride > 0 { cfg.NodeCountOverride = int32(*nodeCountOverride) } + + if cfg.ImportJobMaxTimeSec <= 0 { + cfg.ImportJobMaxTimeSec = uint32(10 * 60) + } + + if cfg.PIQUANTJobMaxTimeSec <= 0 { + cfg.PIQUANTJobMaxTimeSec = uint32(15 * 60) + } + cfg.KubeConfig = *kubeconfig return cfg, nil diff --git a/api/dataimport/for-trigger_test.go b/api/dataimport/for-trigger_test.go index 7129473f..c317b042 100644 --- a/api/dataimport/for-trigger_test.go +++ b/api/dataimport/for-trigger_test.go @@ -327,7 +327,7 @@ func Example_ImportForTrigger_OCS_DatasetEdit() { trigger := `{ "datasetID": "048300551", - "logID": "dataimport-unittest123" + "jobID": "dataimport-unittest123" }` result, err := ImportForTrigger([]byte(trigger), envName, configBucket, datasetBucket, manualBucket, db, log, remoteFS) @@ -392,7 +392,7 @@ func Example_ImportForTrigger_Manual_JPL() { trigger := `{ "datasetID": "test1234", - "logID": "dataimport-unittest123" + "jobID": "dataimport-unittest123" }` result, err := ImportForTrigger([]byte(trigger), envName, configBucket, datasetBucket, manualBucket, db, log, remoteFS) @@ -424,7 +424,7 @@ func Example_ImportForTrigger_Manual_SBU() { trigger := `{ "datasetID": "test1234sbu", - "logID": "dataimport-unittest123sbu" + "jobID": "dataimport-unittest123sbu" }` result, err := ImportForTrigger([]byte(trigger), envName, configBucket, datasetBucket, manualBucket, db, log, remoteFS) @@ -456,7 +456,7 @@ func Test_ImportForTrigger_Manual_SBU_NoAutoShare(t *testing.T) { trigger := `{ "datasetID": "test1234sbu", - "logID": "dataimport-unittest123sbu" + "jobID": "dataimport-unittest123sbu" }` _, err := ImportForTrigger([]byte(trigger), envName, configBucket, datasetBucket, manualBucket, db, log, remoteFS) @@ -473,7 +473,7 @@ func Example_ImportForTrigger_Manual_EM() { trigger := `{ "datasetID": "048300551", - "logID": "dataimport-unittest048300551" + "jobID": "dataimport-unittest048300551" }` result, err := ImportForTrigger([]byte(trigger), envName, configBucket, datasetBucket, manualBucket, db, log, remoteFS) diff --git a/api/dataimport/reprocess.go b/api/dataimport/reprocess.go index 1615c5a2..37e2d74f 100644 --- a/api/dataimport/reprocess.go +++ b/api/dataimport/reprocess.go @@ -30,14 +30,13 @@ import ( "github.com/pixlise/core/v3/api/dataimport/internal/datasetArchive" "github.com/pixlise/core/v3/core/awsutil" "github.com/pixlise/core/v3/core/errorwithstatus" - "github.com/pixlise/core/v3/core/idgen" "github.com/pixlise/core/v3/core/utils" ) // One of the 2 SNS messages we accept. The other is an AWS S3 event message type datasetReprocessSNSRequest struct { DatasetID string `json:"datasetID"` - LogID string `json:"logID"` + JobID string `json:"jobID"` } // Decoding trigger message @@ -45,8 +44,8 @@ type datasetReprocessSNSRequest struct { func decodeImportTrigger(triggerMessageBody []byte) (string, string, string, string, error) { datasetID := "" - // Log ID to use - this forms part of the log stream in cloudwatch - logID := "" + // job ID to use - we save DB updates about our status using this id + jobID := "" // But if we're being triggered due to new data arriving, these will be filled out sourceFilePath := "" @@ -68,10 +67,10 @@ func decodeImportTrigger(triggerMessageBody []byte) (string, string, string, str return "", "", "", "", fmt.Errorf("Failed to find dataset ID in reprocess trigger") } - if len(triggerSNS.LogID) > 0 { - logID = triggerSNS.LogID + if len(triggerSNS.JobID) > 0 { + jobID = triggerSNS.JobID } else { - return "", "", "", "", fmt.Errorf("Failed to find log ID in reprocess trigger") + return "", "", "", "", fmt.Errorf("Failed to find job ID in reprocess trigger") } } else { // Maybe it's a packaged S3 object inside an SNS message @@ -97,28 +96,22 @@ func decodeImportTrigger(triggerMessageBody []byte) (string, string, string, str } // So this is basically a new dataset download, generate a fresh log ID - logID = fmt.Sprintf("auto-import-%v (%v)", time.Now().Format("02-Jan-2006 15-04-05"), utils.RandStringBytesMaskImpr(8)) + jobID = fmt.Sprintf("auto-import-%v (%v)", time.Now().Format("02-Jan-2006 15-04-05"), utils.RandStringBytesMaskImpr(8)) } - return sourceBucket, sourceFilePath, datasetID, logID, nil + return sourceBucket, sourceFilePath, datasetID, jobID, nil } // Firing a trigger message. Anything calling this is triggering a dataset reimport via a lambda function -func TriggerDatasetReprocessViaSNS(snsSvc awsutil.SNSInterface, idGen idgen.IDGenerator, datasetID string, snsTopic string) (*sns.PublishOutput, string, error) { - // Generate a new log ID that this reprocess job will write to - // which we also return to the caller, so they can track what happens - // with this async task - - reprocessId := fmt.Sprintf("dataimport-%s", idGen.GenObjectID()) - +func TriggerDatasetReprocessViaSNS(snsSvc awsutil.SNSInterface, jobId string, scanId string, snsTopic string) (*sns.PublishOutput, error) { snsReq := datasetReprocessSNSRequest{ - DatasetID: datasetID, - LogID: reprocessId, + DatasetID: scanId, + JobID: jobId, } snsReqJSON, err := json.Marshal(snsReq) if err != nil { - return nil, "", errorwithstatus.MakeStatusError(http.StatusInternalServerError, fmt.Errorf("Failed to trigger dataset reprocess: %v", err)) + return nil, errorwithstatus.MakeStatusError(http.StatusInternalServerError, fmt.Errorf("Failed to trigger dataset reprocess: %v", err)) } result, err := snsSvc.Publish(&sns.PublishInput{ @@ -127,11 +120,8 @@ func TriggerDatasetReprocessViaSNS(snsSvc awsutil.SNSInterface, idGen idgen.IDGe }) if err != nil { - return nil, "", errorwithstatus.MakeStatusError(http.StatusInternalServerError, fmt.Errorf("Failed to publish SNS topic for dataset regeneration: %v", err)) + return nil, errorwithstatus.MakeStatusError(http.StatusInternalServerError, fmt.Errorf("Failed to publish SNS topic for dataset regeneration: %v", err)) } - // The actual log stream name that gets generated is prefixed with the dataset ID - // so return that one here, any users of our function should only need to be given - // the stream name, log group is more fixed. - return result, datasetID + "-" + reprocessId, nil + return result, nil } diff --git a/api/dataimport/reprocess_test.go b/api/dataimport/reprocess_test.go index 4f3b606f..7db6ac85 100644 --- a/api/dataimport/reprocess_test.go +++ b/api/dataimport/reprocess_test.go @@ -25,17 +25,17 @@ import ( func Example_decodeImportTrigger_Manual() { trigger := `{ "datasetID": "189137412", - "logID": "dataimport-zmzddoytch2krd7n" + "jobID": "dataimport-zmzddoytch2krd7n" }` - sourceBucket, sourceFilePath, datasetID, logID, err := decodeImportTrigger([]byte(trigger)) - fmt.Printf("Source Bucket: \"%v\"\nSource file: \"%v\"\nDataset: \"%v\"\nLog: \"%v\"\nErr: \"%v\"\n", sourceBucket, sourceFilePath, datasetID, logID, err) + sourceBucket, sourceFilePath, datasetID, jobId, err := decodeImportTrigger([]byte(trigger)) + fmt.Printf("Source Bucket: \"%v\"\nSource file: \"%v\"\nDataset: \"%v\"\nJob: \"%v\"\nErr: \"%v\"\n", sourceBucket, sourceFilePath, datasetID, jobId, err) // Output: // Source Bucket: "" // Source file: "" // Dataset: "189137412" - // Log: "dataimport-zmzddoytch2krd7n" + // Job: "dataimport-zmzddoytch2krd7n" // Err: "" } @@ -134,16 +134,16 @@ func Example_decodeImportTrigger_OCS2() { ] }` - sourceBucket, sourceFilePath, datasetID, logID, err := decodeImportTrigger([]byte(trigger)) + sourceBucket, sourceFilePath, datasetID, jobID, err := decodeImportTrigger([]byte(trigger)) // NOTE: we're only checking the length of the log ID because it's a timestamp+random chars. Other code has this stubbed out but here it's probably sufficient - fmt.Printf("Source Bucket: \"%v\"\nSource file: \"%v\"\nDataset: \"%v\"\nLog Str Len: \"%v\"\nErr: \"%v\"\n", sourceBucket, sourceFilePath, datasetID, len(logID), err) + fmt.Printf("Source Bucket: \"%v\"\nSource file: \"%v\"\nDataset: \"%v\"\nJob Str Len: \"%v\"\nErr: \"%v\"\n", sourceBucket, sourceFilePath, datasetID, len(jobID), err) // Output: // Source Bucket: "prodpipeline-rawdata202c7bd0-o40ktu17o2oj" // Source file: "197329413-25-09-2022-14-33-39.zip" // Dataset: "197329413" - // Log Str Len: "43" + // Job Str Len: "43" // Err: "" } @@ -152,31 +152,31 @@ func Example_decodeImportTrigger_ManualBadMsg() { "weird": "message" }` - sourceBucket, sourceFilePath, datasetID, logID, err := decodeImportTrigger([]byte(trigger)) - fmt.Printf("Source Bucket: \"%v\"\nSource file: \"%v\"\nDataset: \"%v\"\nLog: \"%v\"\nErr: \"%v\"\n", sourceBucket, sourceFilePath, datasetID, logID, err) + sourceBucket, sourceFilePath, datasetID, jobID, err := decodeImportTrigger([]byte(trigger)) + fmt.Printf("Source Bucket: \"%v\"\nSource file: \"%v\"\nDataset: \"%v\"\nJob: \"%v\"\nErr: \"%v\"\n", sourceBucket, sourceFilePath, datasetID, jobID, err) // Output: // Source Bucket: "" // Source file: "" // Dataset: "" - // Log: "" + // Job: "" // Err: "Unexpected or no message type embedded in triggering SNS message" } func Example_decodeImportTrigger_ManualBadDatasetID() { trigger := `{ "datasetID": "", - "logID": "dataimport-zmzddoytch2krd7n" + "jobID": "dataimport-zmzddoytch2krd7n" }` - sourceBucket, sourceFilePath, datasetID, logID, err := decodeImportTrigger([]byte(trigger)) - fmt.Printf("Source Bucket: \"%v\"\nSource file: \"%v\"\nDataset: \"%v\"\nLog: \"%v\"\nErr: \"%v\"\n", sourceBucket, sourceFilePath, datasetID, logID, err) + sourceBucket, sourceFilePath, datasetID, jobID, err := decodeImportTrigger([]byte(trigger)) + fmt.Printf("Source Bucket: \"%v\"\nSource file: \"%v\"\nDataset: \"%v\"\nJob: \"%v\"\nErr: \"%v\"\n", sourceBucket, sourceFilePath, datasetID, jobID, err) // Output: // Source Bucket: "" // Source file: "" // Dataset: "" - // Log: "" + // Job: "" // Err: "Failed to find dataset ID in reprocess trigger" } @@ -185,29 +185,29 @@ func Example_decodeImportTrigger_ManualBadLogID() { "datasetID": "qwerty" }` - sourceBucket, sourceFilePath, datasetID, logID, err := decodeImportTrigger([]byte(trigger)) - fmt.Printf("Source Bucket: \"%v\"\nSource file: \"%v\"\nDataset: \"%v\"\nLog: \"%v\"\nErr: \"%v\"\n", sourceBucket, sourceFilePath, datasetID, logID, err) + sourceBucket, sourceFilePath, datasetID, jobID, err := decodeImportTrigger([]byte(trigger)) + fmt.Printf("Source Bucket: \"%v\"\nSource file: \"%v\"\nDataset: \"%v\"\nJob: \"%v\"\nErr: \"%v\"\n", sourceBucket, sourceFilePath, datasetID, jobID, err) // Output: // Source Bucket: "" // Source file: "" // Dataset: "" - // Log: "" - // Err: "Failed to find log ID in reprocess trigger" + // Job: "" + // Err: "Failed to find job ID in reprocess trigger" } func Example_decodeImportTrigger_OCS_Error() { trigger := `{ "Records": [] }` - sourceBucket, sourceFilePath, datasetID, logID, err := decodeImportTrigger([]byte(trigger)) - fmt.Printf("Source Bucket: \"%v\"\nSource file: \"%v\"\nDataset: \"%v\"\nLog: \"%v\"\nErr: \"%v\"\n", sourceBucket, sourceFilePath, datasetID, logID, err) + sourceBucket, sourceFilePath, datasetID, jobID, err := decodeImportTrigger([]byte(trigger)) + fmt.Printf("Source Bucket: \"%v\"\nSource file: \"%v\"\nDataset: \"%v\"\nJob: \"%v\"\nErr: \"%v\"\n", sourceBucket, sourceFilePath, datasetID, jobID, err) // Output: // Source Bucket: "" // Source file: "" // Dataset: "" - // Log: "" + // Job: "" // Err: "Unexpected or no message type embedded in triggering SNS message" } @@ -234,13 +234,13 @@ func Example_decodeImportTrigger_OCS_BadEventType() { ] }` - sourceBucket, sourceFilePath, datasetID, logID, err := decodeImportTrigger([]byte(trigger)) - fmt.Printf("Source Bucket: \"%v\"\nSource file: \"%v\"\nDataset: \"%v\"\nLog: \"%v\"\nErr: \"%v\"\n", sourceBucket, sourceFilePath, datasetID, logID, err) + sourceBucket, sourceFilePath, datasetID, jobID, err := decodeImportTrigger([]byte(trigger)) + fmt.Printf("Source Bucket: \"%v\"\nSource file: \"%v\"\nDataset: \"%v\"\nJob: \"%v\"\nErr: \"%v\"\n", sourceBucket, sourceFilePath, datasetID, jobID, err) // Output: // Source Bucket: "" // Source file: "" // Dataset: "" - // Log: "" + // Job: "" // Err: "Failed to decode dataset import trigger: Failed to decode sqs body to an S3 event: unexpected end of JSON input" } diff --git a/api/dbCollections/collections.go b/api/dbCollections/collections.go index 723e2b08..d92a303a 100644 --- a/api/dbCollections/collections.go +++ b/api/dbCollections/collections.go @@ -10,6 +10,7 @@ const ExpressionGroupsName = "expressionGroups" const ExpressionsName = "expressions" const ImagesName = "images" const ImageBeamLocationsName = "imageBeamLocations" +const JobStatusName = "jobStatuses" const ModulesName = "modules" const ModuleVersionsName = "moduleVersions" const NotificationsName = "notifications" diff --git a/api/job/jobWatcher.go b/api/job/jobWatcher.go new file mode 100644 index 00000000..21434190 --- /dev/null +++ b/api/job/jobWatcher.go @@ -0,0 +1,181 @@ +package job + +import ( + "context" + "errors" + "fmt" + "time" + + "github.com/pixlise/core/v3/api/dbCollections" + "github.com/pixlise/core/v3/core/idgen" + "github.com/pixlise/core/v3/core/logger" + "github.com/pixlise/core/v3/core/timestamper" + protos "github.com/pixlise/core/v3/generated-protos" + "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" +) + +var jobUpdateIntervalSec = uint32(10) +var activeJobs = map[string]bool{} + +// Expected to be called by API to create the initial record of a job. It can then trigger it however it needs to +// (eg AWS lambda or running PIQUANT nodes) and this sticks around monitoring the DB entry for changes, calling +// the sendUpdate callback function on change +func AddJob(jobTimeoutSec uint32, db *mongo.Database, idgen idgen.IDGenerator, ts timestamper.ITimeStamper, logger logger.ILogger, sendUpdate func(*protos.JobStatus)) (string, error) { + // Generate a new job id + + // Generate a new job Id that this reprocess job will write to + // which we also return to the caller, so they can track what happens + // with this async task + jobId := fmt.Sprintf("job-%s", idgen.GenObjectID()) + + if _, ok := activeJobs[jobId]; ok { + return jobId, errors.New("Job already exists: " + jobId) + } + + now := uint32(ts.GetTimeNowSec()) + watchUntilUnixSec := now + jobTimeoutSec + + // Add to DB + job := &protos.JobStatus{ + JobId: jobId, + Status: protos.JobStatus_STARTING, + StartUnixTimeSec: now, + } + + ctx := context.TODO() + coll := db.Collection(dbCollections.JobStatusName) + result, err := coll.InsertOne(ctx, job, options.InsertOne()) + if err != nil { + return jobId, err + } + + if result.InsertedID != jobId { + logger.Errorf("Inserted job %v doesn't match db id %v", jobId, result.InsertedID) + } + + // We'll watch this one and send out updates + activeJobs[jobId] = true + + // Start a thread to watch this job + go watchJob(jobId, now, watchUntilUnixSec, db, logger, sendUpdate) + + return jobId, nil +} + +// Expected to be called from the thing running the job. This updates the DB status, which hopefully the go thread started by +// AddJob will notice and fire off an update +func UpdateJob(jobId string, status protos.JobStatus_Status, message string, logId string, db *mongo.Database, ts timestamper.ITimeStamper, logger logger.ILogger) error { + ctx := context.TODO() + coll := db.Collection(dbCollections.JobStatusName) + + filter := bson.D{{"_id", jobId}} + opt := options.Update() + + data := bson.D{ + {"$set", bson.D{ + {"status", status}, + {"message", message}, + {"logid", logId}, + {"lastupdateunixtimesec", uint32(ts.GetTimeNowSec())}, + }}, + } + + result, err := coll.UpdateOne(ctx, filter, data, opt) + if err != nil { + return err + } + + if result.MatchedCount != 1 && result.UpsertedCount != 1 { + logger.Errorf("UpdateJob result had unexpected counts %+v id: %v", result, jobId) + } + + return nil +} + +// Expected to be called from the thing running the job. This allows setting some output fields +func CompleteJob(jobId string, success bool, message string, outputFilePath string, otherLogFiles []string, db *mongo.Database, ts timestamper.ITimeStamper, logger logger.ILogger) error { + status := protos.JobStatus_COMPLETE + if !success { + status = protos.JobStatus_ERROR + } + + now := uint32(ts.GetTimeNowSec()) + + ctx := context.TODO() + coll := db.Collection(dbCollections.JobStatusName) + + filter := bson.D{{"_id", jobId}} + opt := options.Update() + + data := bson.D{ + {"$set", bson.D{ + {"status", status}, + {"message", message}, + {"lastupdateunixtimesec", now}, + {"endunixtimesec", now}, + {"outputfilepath", outputFilePath}, + {"otherlogfiles", otherLogFiles}, + }}, + } + + result, err := coll.UpdateOne(ctx, filter, data, opt) + if err != nil { + return err + } + + if result.MatchedCount != 1 && result.UpsertedCount != 1 { + logger.Errorf("CompleteJob result had unexpected counts %+v id: %v", result, jobId) + } + + return nil +} + +func watchJob(jobId string, nowUnixSec uint32, watchUntilUnixSec uint32, db *mongo.Database, logger logger.ILogger, sendUpdate func(*protos.JobStatus)) { + logger.Infof(">> Start watching job: %v...", jobId) + + // Check the DB for updates periodically until watchUntilUnixSec at which point if the job isn't + // complete we can assume it died/timed-out/whatever + // Firstly, lets work out how many updates we'll need to send + maxUpdates := (watchUntilUnixSec - nowUnixSec) / jobUpdateIntervalSec + + ctx := context.TODO() + coll := db.Collection(dbCollections.JobStatusName) + + // Run that many times + lastUpdateUnixSec := uint32(0) + + for c := uint32(0); c < maxUpdates; c++ { + time.Sleep(time.Duration(jobUpdateIntervalSec) * time.Second) + + filter := bson.D{{"_id", jobId}} + opt := options.FindOne() + + dbStatusResult := coll.FindOne(ctx, filter, opt) + if dbStatusResult.Err() != nil { + logger.Errorf("Failed to find DB entry for job status: %v", jobId) + } else { + // Check if update field differs + dbStatus := protos.JobStatus{} + err := dbStatusResult.Decode(&dbStatus) + if err != nil { + logger.Errorf("Failed to decode DB entry for job status: %v", jobId) + } else if lastUpdateUnixSec != dbStatus.LastUpdateUnixTimeSec { + // OK we have a status update! Send + sendUpdate(&dbStatus) + + // If the job is finished, stop here + if dbStatus.Status == protos.JobStatus_COMPLETE || dbStatus.Status == protos.JobStatus_ERROR { + logger.Infof(">> Stop watching completed job: %v, status: %v", jobId, dbStatus.Status) + return + } + + // Remember the new update time + lastUpdateUnixSec = dbStatus.LastUpdateUnixTimeSec + } + } + } + + logger.Errorf(">> Stop watching TIMED-OUT job: %v", jobId) +} diff --git a/api/quantification/importCSV.go b/api/quantification/importCSV.go index e8943e66..6faaa461 100644 --- a/api/quantification/importCSV.go +++ b/api/quantification/importCSV.go @@ -104,10 +104,10 @@ func ImportQuantCSV( }, Elements: elements, Status: &protos.JobStatus{ - JobID: quantId, + JobId: quantId, Status: protos.JobStatus_COMPLETE, Message: csvOrigin + " quantification processed", - PiquantLogs: []string{}, + OtherLogFiles: []string{}, EndUnixTimeSec: uint32(ownerItem.CreatedUnixSec), OutputFilePath: quantOutPath, }, diff --git a/api/ws/handlers/quantification-management.go b/api/ws/handlers/quantification-management.go index de227206..a71b5a2c 100644 --- a/api/ws/handlers/quantification-management.go +++ b/api/ws/handlers/quantification-management.go @@ -31,7 +31,7 @@ func HandleQuantDeleteReq(req *protos.QuantDeleteReq, hctx wsHelpers.HandlerCont } // Add all the known log files too - for _, logFile := range dbItem.Status.PiquantLogs { + for _, logFile := range dbItem.Status.OtherLogFiles { toDelete = append(toDelete, filepaths.GetQuantPath(hctx.SessUser.User.Id, dbItem.ScanId, path.Join(filepaths.MakeQuantLogDirName(dbItem.Id), logFile))) } diff --git a/api/ws/handlers/scan.go b/api/ws/handlers/scan.go index a9db4f71..d1108a46 100644 --- a/api/ws/handlers/scan.go +++ b/api/ws/handlers/scan.go @@ -9,10 +9,12 @@ import ( "path" "strings" + "github.com/olahol/melody" "github.com/pixlise/core/v3/api/dataimport" dataimportModel "github.com/pixlise/core/v3/api/dataimport/models" "github.com/pixlise/core/v3/api/dbCollections" "github.com/pixlise/core/v3/api/filepaths" + "github.com/pixlise/core/v3/api/job" "github.com/pixlise/core/v3/api/ws/wsHelpers" "github.com/pixlise/core/v3/core/errorwithstatus" "github.com/pixlise/core/v3/core/fileaccess" @@ -209,10 +211,20 @@ func HandleScanTriggerReImportReq(req *protos.ScanTriggerReImportReq, hctx wsHel return nil, err } - result, logId, err := dataimport.TriggerDatasetReprocessViaSNS(hctx.Svcs.SNS, hctx.Svcs.IDGen, req.ScanId, hctx.Svcs.Config.DataSourceSNSTopic) + i := importUpdater{ + hctx.Session, + } + + jobId, err := job.AddJob(uint32(hctx.Svcs.Config.ImportJobMaxTimeSec), hctx.Svcs.MongoDB, hctx.Svcs.IDGen, hctx.Svcs.TimeStamper, hctx.Svcs.Log, i.sendReimportUpdate) + + if err != nil || len(jobId) < 0 { + hctx.Svcs.Log.Errorf("Failed to add job watcher for Job ID: %v", jobId) + } + + result, err := dataimport.TriggerDatasetReprocessViaSNS(hctx.Svcs.SNS, jobId, req.ScanId, hctx.Svcs.Config.DataSourceSNSTopic) - hctx.Svcs.Log.Infof("Triggered dataset reprocess via SNS topic. Result: %v. Log ID: %v", result, logId) - return &protos.ScanTriggerReImportResp{LogId: logId}, err + hctx.Svcs.Log.Infof("Triggered dataset reprocess via SNS topic. Result: %v. Job ID: %v", result, jobId) + return &protos.ScanTriggerReImportResp{JobId: jobId}, err } func HandleScanUploadReq(req *protos.ScanUploadReq, hctx wsHelpers.HandlerContext) (*protos.ScanUploadResp, error) { @@ -226,6 +238,9 @@ func HandleScanUploadReq(req *protos.ScanUploadReq, hctx wsHelpers.HandlerContex // quant summary file was written with a + instead of a space?! datasetID := fileaccess.MakeValidObjectName(req.Id, false) + // Append a few random chars to make it more unique + datasetID += "_" + utils.RandStringBytesMaskImpr(6) + formats := []string{"jpl-breadboard", "sbu-breadboard", "pixl-em"} if !utils.ItemInSlice(req.Format, formats) { return nil, fmt.Errorf("Unexpected format: \"%v\"", req.Format) @@ -397,13 +412,53 @@ func HandleScanUploadReq(req *protos.ScanUploadReq, hctx wsHelpers.HandlerContex } logger.Debugf(" Wrote: s3://%v/%v", destBucket, savePath) + i := importUpdater{ + hctx.Session, + } + + // Add a job watcher for this + jobId, err := job.AddJob(uint32(hctx.Svcs.Config.ImportJobMaxTimeSec), hctx.Svcs.MongoDB, hctx.Svcs.IDGen, hctx.Svcs.TimeStamper, hctx.Svcs.Log, i.sendImportUpdate) + + if err != nil || len(jobId) < 0 { + hctx.Svcs.Log.Errorf("Failed to add job watcher for Job ID: %v", jobId) + } + // Now we trigger a dataset conversion - result, logId, err := dataimport.TriggerDatasetReprocessViaSNS(hctx.Svcs.SNS, hctx.Svcs.IDGen, datasetID, hctx.Svcs.Config.DataSourceSNSTopic) + result, err := dataimport.TriggerDatasetReprocessViaSNS(hctx.Svcs.SNS, jobId, datasetID, hctx.Svcs.Config.DataSourceSNSTopic) if err != nil { return nil, err } - logger.Infof("Triggered dataset reprocess via SNS topic. Result: %v. Log ID: %v", result, logId) + logger.Infof("Triggered dataset reprocess via SNS topic. Result: %v. Job ID: %v", result, jobId) + + return &protos.ScanUploadResp{JobId: jobId}, nil +} + +type importUpdater struct { + session *melody.Session +} + +func (i *importUpdater) sendReimportUpdate(status *protos.JobStatus) { + wsUpd := protos.WSMessage{ + Contents: &protos.WSMessage_ScanTriggerReImportUpd{ + ScanTriggerReImportUpd: &protos.ScanTriggerReImportUpd{ + Status: status, + }, + }, + } + + wsHelpers.SendForSession(i.session, &wsUpd) + +} + +func (i *importUpdater) sendImportUpdate(status *protos.JobStatus) { + wsUpd := protos.WSMessage{ + Contents: &protos.WSMessage_ScanUploadUpd{ + ScanUploadUpd: &protos.ScanUploadUpd{ + Status: status, + }, + }, + } - return &protos.ScanUploadResp{LogId: logId}, nil + wsHelpers.SendForSession(i.session, &wsUpd) } diff --git a/api/ws/ws.go b/api/ws/ws.go index e13ac63f..5ee99507 100644 --- a/api/ws/ws.go +++ b/api/ws/ws.go @@ -174,6 +174,11 @@ func (ws *WSHandler) HandleMessage(s *melody.Session, msg []byte) { // Set incoming message ID on the outgoing one resp.MsgId = wsmsg.MsgId + // Print out errors + if len(resp.ErrorText) > 0 { + fmt.Printf("Sending Response Error for msg id %v:\n %v\n", resp.MsgId-1, resp.ErrorText) + } + // Send wsHelpers.SendForSession(s, resp) } else { diff --git a/data-formats b/data-formats index 14ab7a3a..e05324b9 160000 --- a/data-formats +++ b/data-formats @@ -1 +1 @@ -Subproject commit 14ab7a3a082597870ffd7951ad13a891bfc24150 +Subproject commit e05324b9ec522241787c4b57e8bb357dd1b6ee55 diff --git a/generated-protos/job.pb.go b/generated-protos/job.pb.go index aaf83deb..e3c8ddfa 100644 --- a/generated-protos/job.pb.go +++ b/generated-protos/job.pb.go @@ -26,7 +26,7 @@ const ( JobStatus_UNKNOWN JobStatus_Status = 0 // https://protobuf.dev/programming-guides/dos-donts/ says specify an unknown as 0 JobStatus_STARTING JobStatus_Status = 1 JobStatus_PREPARING_NODES JobStatus_Status = 2 - JobStatus_NODES_RUNNING JobStatus_Status = 3 + JobStatus_RUNNING JobStatus_Status = 3 JobStatus_GATHERING_RESULTS JobStatus_Status = 4 JobStatus_COMPLETE JobStatus_Status = 5 JobStatus_ERROR JobStatus_Status = 6 @@ -38,7 +38,7 @@ var ( 0: "UNKNOWN", 1: "STARTING", 2: "PREPARING_NODES", - 3: "NODES_RUNNING", + 3: "RUNNING", 4: "GATHERING_RESULTS", 5: "COMPLETE", 6: "ERROR", @@ -47,7 +47,7 @@ var ( "UNKNOWN": 0, "STARTING": 1, "PREPARING_NODES": 2, - "NODES_RUNNING": 3, + "RUNNING": 3, "GATHERING_RESULTS": 4, "COMPLETE": 5, "ERROR": 6, @@ -86,12 +86,16 @@ type JobStatus struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - JobID string `protobuf:"bytes,1,opt,name=jobID,proto3" json:"jobID,omitempty"` - Status JobStatus_Status `protobuf:"varint,2,opt,name=status,proto3,enum=JobStatus_Status" json:"status,omitempty"` - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` - EndUnixTimeSec uint32 `protobuf:"varint,4,opt,name=endUnixTimeSec,proto3" json:"endUnixTimeSec,omitempty"` - OutputFilePath string `protobuf:"bytes,5,opt,name=outputFilePath,proto3" json:"outputFilePath,omitempty"` - PiquantLogs []string `protobuf:"bytes,6,rep,name=piquantLogs,proto3" json:"piquantLogs,omitempty"` + JobId string `protobuf:"bytes,1,opt,name=jobId,proto3" json:"jobId,omitempty" bson:"_id,omitempty"` + Status JobStatus_Status `protobuf:"varint,2,opt,name=status,proto3,enum=JobStatus_Status" json:"status,omitempty"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` // Optionally a message can be stored with the status + LogId string `protobuf:"bytes,4,opt,name=logId,proto3" json:"logId,omitempty"` // The log ID - initially just AWS _ + StartUnixTimeSec uint32 `protobuf:"varint,5,opt,name=startUnixTimeSec,proto3" json:"startUnixTimeSec,omitempty"` // Job start time + LastUpdateUnixTimeSec uint32 `protobuf:"varint,6,opt,name=lastUpdateUnixTimeSec,proto3" json:"lastUpdateUnixTimeSec,omitempty"` // Job update time (if this changes, we send out an update) + // Completion: + EndUnixTimeSec uint32 `protobuf:"varint,7,opt,name=endUnixTimeSec,proto3" json:"endUnixTimeSec,omitempty"` // Job completion time + OutputFilePath string `protobuf:"bytes,8,opt,name=outputFilePath,proto3" json:"outputFilePath,omitempty"` // Where the job output its final result(s) + OtherLogFiles []string `protobuf:"bytes,9,rep,name=otherLogFiles,proto3" json:"otherLogFiles,omitempty"` // Any other logs (eg PIQUANT log files) generated by the job } func (x *JobStatus) Reset() { @@ -126,9 +130,9 @@ func (*JobStatus) Descriptor() ([]byte, []int) { return file_job_proto_rawDescGZIP(), []int{0} } -func (x *JobStatus) GetJobID() string { +func (x *JobStatus) GetJobId() string { if x != nil { - return x.JobID + return x.JobId } return "" } @@ -147,6 +151,27 @@ func (x *JobStatus) GetMessage() string { return "" } +func (x *JobStatus) GetLogId() string { + if x != nil { + return x.LogId + } + return "" +} + +func (x *JobStatus) GetStartUnixTimeSec() uint32 { + if x != nil { + return x.StartUnixTimeSec + } + return 0 +} + +func (x *JobStatus) GetLastUpdateUnixTimeSec() uint32 { + if x != nil { + return x.LastUpdateUnixTimeSec + } + return 0 +} + func (x *JobStatus) GetEndUnixTimeSec() uint32 { if x != nil { return x.EndUnixTimeSec @@ -161,9 +186,9 @@ func (x *JobStatus) GetOutputFilePath() string { return "" } -func (x *JobStatus) GetPiquantLogs() []string { +func (x *JobStatus) GetOtherLogFiles() []string { if x != nil { - return x.PiquantLogs + return x.OtherLogFiles } return nil } @@ -171,30 +196,37 @@ func (x *JobStatus) GetPiquantLogs() []string { var File_job_proto protoreflect.FileDescriptor var file_job_proto_rawDesc = []byte{ - 0x0a, 0x09, 0x6a, 0x6f, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd5, 0x02, 0x0a, 0x09, + 0x0a, 0x09, 0x6a, 0x6f, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcb, 0x03, 0x0a, 0x09, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6a, 0x6f, 0x62, - 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x44, 0x12, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x69, 0x78, 0x54, - 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x65, 0x6e, - 0x64, 0x55, 0x6e, 0x69, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0e, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, - 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x69, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x4c, - 0x6f, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x69, 0x71, 0x75, 0x61, - 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x22, 0x7b, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, - 0x08, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x50, - 0x52, 0x45, 0x50, 0x41, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x53, 0x10, 0x02, - 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x4f, 0x44, 0x45, 0x53, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, - 0x47, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x47, 0x41, 0x54, 0x48, 0x45, 0x52, 0x49, 0x4e, 0x47, - 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, - 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x05, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, - 0x52, 0x10, 0x06, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x55, 0x6e, 0x69, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x73, 0x74, 0x61, 0x72, 0x74, 0x55, 0x6e, 0x69, 0x78, 0x54, + 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x12, 0x34, 0x0a, 0x15, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x55, 0x6e, 0x69, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x55, 0x6e, 0x69, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0e, + 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x69, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x69, 0x78, 0x54, 0x69, 0x6d, + 0x65, 0x53, 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x69, + 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, + 0x6f, 0x74, 0x68, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x09, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6c, + 0x65, 0x73, 0x22, 0x75, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, + 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, + 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x45, 0x50, 0x41, + 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x53, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, + 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x47, 0x41, 0x54, + 0x48, 0x45, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x10, 0x04, + 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x05, 0x12, 0x09, + 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x06, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x3b, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/generated-protos/scan-msgs.pb.go b/generated-protos/scan-msgs.pb.go index 75404906..4a577b16 100644 --- a/generated-protos/scan-msgs.pb.go +++ b/generated-protos/scan-msgs.pb.go @@ -244,7 +244,7 @@ type ScanUploadResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - LogId string `protobuf:"bytes,1,opt,name=logId,proto3" json:"logId,omitempty"` + JobId string `protobuf:"bytes,1,opt,name=jobId,proto3" json:"jobId,omitempty"` } func (x *ScanUploadResp) Reset() { @@ -279,13 +279,60 @@ func (*ScanUploadResp) Descriptor() ([]byte, []int) { return file_scan_msgs_proto_rawDescGZIP(), []int{4} } -func (x *ScanUploadResp) GetLogId() string { +func (x *ScanUploadResp) GetJobId() string { if x != nil { - return x.LogId + return x.JobId } return "" } +type ScanUploadUpd struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status *JobStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` +} + +func (x *ScanUploadUpd) Reset() { + *x = ScanUploadUpd{} + if protoimpl.UnsafeEnabled { + mi := &file_scan_msgs_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ScanUploadUpd) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ScanUploadUpd) ProtoMessage() {} + +func (x *ScanUploadUpd) ProtoReflect() protoreflect.Message { + mi := &file_scan_msgs_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) +} + +// Deprecated: Use ScanUploadUpd.ProtoReflect.Descriptor instead. +func (*ScanUploadUpd) Descriptor() ([]byte, []int) { + return file_scan_msgs_proto_rawDescGZIP(), []int{5} +} + +func (x *ScanUploadUpd) GetStatus() *JobStatus { + if x != nil { + return x.Status + } + return nil +} + // This should trigger a ScanListUpd to go out // requires(EDIT_SCAN) type ScanMetaWriteReq struct { @@ -301,7 +348,7 @@ type ScanMetaWriteReq struct { func (x *ScanMetaWriteReq) Reset() { *x = ScanMetaWriteReq{} if protoimpl.UnsafeEnabled { - mi := &file_scan_msgs_proto_msgTypes[5] + mi := &file_scan_msgs_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -314,7 +361,7 @@ func (x *ScanMetaWriteReq) String() string { func (*ScanMetaWriteReq) ProtoMessage() {} func (x *ScanMetaWriteReq) ProtoReflect() protoreflect.Message { - mi := &file_scan_msgs_proto_msgTypes[5] + mi := &file_scan_msgs_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -327,7 +374,7 @@ func (x *ScanMetaWriteReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ScanMetaWriteReq.ProtoReflect.Descriptor instead. func (*ScanMetaWriteReq) Descriptor() ([]byte, []int) { - return file_scan_msgs_proto_rawDescGZIP(), []int{5} + return file_scan_msgs_proto_rawDescGZIP(), []int{6} } func (x *ScanMetaWriteReq) GetScanId() string { @@ -360,7 +407,7 @@ type ScanMetaWriteResp struct { func (x *ScanMetaWriteResp) Reset() { *x = ScanMetaWriteResp{} if protoimpl.UnsafeEnabled { - mi := &file_scan_msgs_proto_msgTypes[6] + mi := &file_scan_msgs_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -373,7 +420,7 @@ func (x *ScanMetaWriteResp) String() string { func (*ScanMetaWriteResp) ProtoMessage() {} func (x *ScanMetaWriteResp) ProtoReflect() protoreflect.Message { - mi := &file_scan_msgs_proto_msgTypes[6] + mi := &file_scan_msgs_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -386,7 +433,7 @@ func (x *ScanMetaWriteResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ScanMetaWriteResp.ProtoReflect.Descriptor instead. func (*ScanMetaWriteResp) Descriptor() ([]byte, []int) { - return file_scan_msgs_proto_rawDescGZIP(), []int{6} + return file_scan_msgs_proto_rawDescGZIP(), []int{7} } // Triggering a re-import, should publish a ScanListUpd to go out @@ -404,7 +451,7 @@ type ScanTriggerReImportReq struct { func (x *ScanTriggerReImportReq) Reset() { *x = ScanTriggerReImportReq{} if protoimpl.UnsafeEnabled { - mi := &file_scan_msgs_proto_msgTypes[7] + mi := &file_scan_msgs_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -417,7 +464,7 @@ func (x *ScanTriggerReImportReq) String() string { func (*ScanTriggerReImportReq) ProtoMessage() {} func (x *ScanTriggerReImportReq) ProtoReflect() protoreflect.Message { - mi := &file_scan_msgs_proto_msgTypes[7] + mi := &file_scan_msgs_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -430,7 +477,7 @@ func (x *ScanTriggerReImportReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ScanTriggerReImportReq.ProtoReflect.Descriptor instead. func (*ScanTriggerReImportReq) Descriptor() ([]byte, []int) { - return file_scan_msgs_proto_rawDescGZIP(), []int{7} + return file_scan_msgs_proto_rawDescGZIP(), []int{8} } func (x *ScanTriggerReImportReq) GetScanId() string { @@ -445,13 +492,13 @@ type ScanTriggerReImportResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - LogId string `protobuf:"bytes,1,opt,name=logId,proto3" json:"logId,omitempty"` + JobId string `protobuf:"bytes,1,opt,name=jobId,proto3" json:"jobId,omitempty"` } func (x *ScanTriggerReImportResp) Reset() { *x = ScanTriggerReImportResp{} if protoimpl.UnsafeEnabled { - mi := &file_scan_msgs_proto_msgTypes[8] + mi := &file_scan_msgs_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -464,7 +511,7 @@ func (x *ScanTriggerReImportResp) String() string { func (*ScanTriggerReImportResp) ProtoMessage() {} func (x *ScanTriggerReImportResp) ProtoReflect() protoreflect.Message { - mi := &file_scan_msgs_proto_msgTypes[8] + mi := &file_scan_msgs_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -477,16 +524,63 @@ func (x *ScanTriggerReImportResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ScanTriggerReImportResp.ProtoReflect.Descriptor instead. func (*ScanTriggerReImportResp) Descriptor() ([]byte, []int) { - return file_scan_msgs_proto_rawDescGZIP(), []int{8} + return file_scan_msgs_proto_rawDescGZIP(), []int{9} } -func (x *ScanTriggerReImportResp) GetLogId() string { +func (x *ScanTriggerReImportResp) GetJobId() string { if x != nil { - return x.LogId + return x.JobId } return "" } +type ScanTriggerReImportUpd struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status *JobStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` +} + +func (x *ScanTriggerReImportUpd) Reset() { + *x = ScanTriggerReImportUpd{} + if protoimpl.UnsafeEnabled { + mi := &file_scan_msgs_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ScanTriggerReImportUpd) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ScanTriggerReImportUpd) ProtoMessage() {} + +func (x *ScanTriggerReImportUpd) ProtoReflect() protoreflect.Message { + mi := &file_scan_msgs_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) +} + +// Deprecated: Use ScanTriggerReImportUpd.ProtoReflect.Descriptor instead. +func (*ScanTriggerReImportUpd) Descriptor() ([]byte, []int) { + return file_scan_msgs_proto_rawDescGZIP(), []int{10} +} + +func (x *ScanTriggerReImportUpd) GetStatus() *JobStatus { + if x != nil { + return x.Status + } + return nil +} + // requires(NONE) type ScanMetaLabelsAndTypesReq struct { state protoimpl.MessageState @@ -499,7 +593,7 @@ type ScanMetaLabelsAndTypesReq struct { func (x *ScanMetaLabelsAndTypesReq) Reset() { *x = ScanMetaLabelsAndTypesReq{} if protoimpl.UnsafeEnabled { - mi := &file_scan_msgs_proto_msgTypes[9] + mi := &file_scan_msgs_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -512,7 +606,7 @@ func (x *ScanMetaLabelsAndTypesReq) String() string { func (*ScanMetaLabelsAndTypesReq) ProtoMessage() {} func (x *ScanMetaLabelsAndTypesReq) ProtoReflect() protoreflect.Message { - mi := &file_scan_msgs_proto_msgTypes[9] + mi := &file_scan_msgs_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -525,7 +619,7 @@ func (x *ScanMetaLabelsAndTypesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ScanMetaLabelsAndTypesReq.ProtoReflect.Descriptor instead. func (*ScanMetaLabelsAndTypesReq) Descriptor() ([]byte, []int) { - return file_scan_msgs_proto_rawDescGZIP(), []int{9} + return file_scan_msgs_proto_rawDescGZIP(), []int{11} } func (x *ScanMetaLabelsAndTypesReq) GetScanId() string { @@ -547,7 +641,7 @@ type ScanMetaLabelsAndTypesResp struct { func (x *ScanMetaLabelsAndTypesResp) Reset() { *x = ScanMetaLabelsAndTypesResp{} if protoimpl.UnsafeEnabled { - mi := &file_scan_msgs_proto_msgTypes[10] + mi := &file_scan_msgs_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -560,7 +654,7 @@ func (x *ScanMetaLabelsAndTypesResp) String() string { func (*ScanMetaLabelsAndTypesResp) ProtoMessage() {} func (x *ScanMetaLabelsAndTypesResp) ProtoReflect() protoreflect.Message { - mi := &file_scan_msgs_proto_msgTypes[10] + mi := &file_scan_msgs_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -573,7 +667,7 @@ func (x *ScanMetaLabelsAndTypesResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ScanMetaLabelsAndTypesResp.ProtoReflect.Descriptor instead. func (*ScanMetaLabelsAndTypesResp) Descriptor() ([]byte, []int) { - return file_scan_msgs_proto_rawDescGZIP(), []int{10} + return file_scan_msgs_proto_rawDescGZIP(), []int{12} } func (x *ScanMetaLabelsAndTypesResp) GetMetaLabels() []string { @@ -602,7 +696,7 @@ type ScanListReq_MinMaxInt struct { func (x *ScanListReq_MinMaxInt) Reset() { *x = ScanListReq_MinMaxInt{} if protoimpl.UnsafeEnabled { - mi := &file_scan_msgs_proto_msgTypes[12] + mi := &file_scan_msgs_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -615,7 +709,7 @@ func (x *ScanListReq_MinMaxInt) String() string { func (*ScanListReq_MinMaxInt) ProtoMessage() {} func (x *ScanListReq_MinMaxInt) ProtoReflect() protoreflect.Message { - mi := &file_scan_msgs_proto_msgTypes[12] + mi := &file_scan_msgs_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -649,32 +743,36 @@ var File_scan_msgs_proto protoreflect.FileDescriptor var file_scan_msgs_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x73, 0x63, 0x61, 0x6e, 0x2d, 0x6d, 0x73, 0x67, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x0a, 0x73, 0x63, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc7, 0x01, - 0x0a, 0x0b, 0x53, 0x63, 0x61, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x45, 0x0a, - 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x71, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x73, 0x1a, 0x40, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x2f, 0x0a, 0x09, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, - 0x49, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x22, 0x2f, 0x0a, 0x0c, 0x53, 0x63, 0x61, 0x6e, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1f, 0x0a, 0x05, 0x73, 0x63, 0x61, 0x6e, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x49, 0x74, 0x65, - 0x6d, 0x52, 0x05, 0x73, 0x63, 0x61, 0x6e, 0x73, 0x22, 0x0d, 0x0a, 0x0b, 0x53, 0x63, 0x61, 0x6e, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x64, 0x22, 0x57, 0x0a, 0x0d, 0x53, 0x63, 0x61, 0x6e, 0x55, - 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x12, 0x1e, 0x0a, 0x0a, 0x7a, 0x69, 0x70, 0x70, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x7a, 0x69, 0x70, 0x70, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, - 0x22, 0x26, 0x0a, 0x0e, 0x53, 0x63, 0x61, 0x6e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x22, 0x62, 0x0a, 0x10, 0x53, 0x63, 0x61, 0x6e, + 0x6f, 0x1a, 0x0a, 0x73, 0x63, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x09, 0x6a, + 0x6f, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc7, 0x01, 0x0a, 0x0b, 0x53, 0x63, 0x61, + 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x45, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x2e, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x1a, + 0x40, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x2f, 0x0a, 0x09, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6d, 0x69, 0x6e, + 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6d, + 0x61, 0x78, 0x22, 0x2f, 0x0a, 0x0c, 0x53, 0x63, 0x61, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x1f, 0x0a, 0x05, 0x73, 0x63, 0x61, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x09, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x73, 0x63, + 0x61, 0x6e, 0x73, 0x22, 0x0d, 0x0a, 0x0b, 0x53, 0x63, 0x61, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x55, + 0x70, 0x64, 0x22, 0x57, 0x0a, 0x0d, 0x53, 0x63, 0x61, 0x6e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x7a, + 0x69, 0x70, 0x70, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x0a, 0x7a, 0x69, 0x70, 0x70, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x22, 0x26, 0x0a, 0x0e, 0x53, + 0x63, 0x61, 0x6e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, + 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, + 0x62, 0x49, 0x64, 0x22, 0x33, 0x0a, 0x0d, 0x53, 0x63, 0x61, 0x6e, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x55, 0x70, 0x64, 0x12, 0x22, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x62, 0x0a, 0x10, 0x53, 0x63, 0x61, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, @@ -687,19 +785,23 @@ var file_scan_msgs_proto_rawDesc = []byte{ 0x63, 0x61, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x61, 0x6e, 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x17, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, - 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, - 0x6f, 0x67, 0x49, 0x64, 0x22, 0x33, 0x0a, 0x19, 0x53, 0x63, 0x61, 0x6e, 0x4d, 0x65, 0x74, 0x61, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x41, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x63, 0x61, 0x6e, 0x49, 0x64, 0x22, 0x6d, 0x0a, 0x1a, 0x53, 0x63, 0x61, - 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x41, 0x6e, 0x64, 0x54, 0x79, - 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x74, 0x61, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, - 0x61, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x2f, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x61, 0x54, - 0x79, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x53, 0x63, 0x61, - 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x6d, - 0x65, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x73, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x3b, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x0a, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, + 0x6f, 0x62, 0x49, 0x64, 0x22, 0x3c, 0x0a, 0x16, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x52, 0x65, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x70, 0x64, 0x12, 0x22, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, + 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x22, 0x33, 0x0a, 0x19, 0x53, 0x63, 0x61, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x41, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x63, 0x61, 0x6e, 0x49, 0x64, 0x22, 0x6d, 0x0a, 0x1a, 0x53, 0x63, 0x61, 0x6e, 0x4d, + 0x65, 0x74, 0x61, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x41, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x74, 0x61, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x61, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x2f, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x61, 0x54, 0x79, 0x70, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x4d, + 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x6d, 0x65, 0x74, + 0x61, 0x54, 0x79, 0x70, 0x65, 0x73, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x3b, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -714,33 +816,38 @@ func file_scan_msgs_proto_rawDescGZIP() []byte { return file_scan_msgs_proto_rawDescData } -var file_scan_msgs_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_scan_msgs_proto_msgTypes = make([]protoimpl.MessageInfo, 15) var file_scan_msgs_proto_goTypes = []interface{}{ (*ScanListReq)(nil), // 0: ScanListReq (*ScanListResp)(nil), // 1: ScanListResp (*ScanListUpd)(nil), // 2: ScanListUpd (*ScanUploadReq)(nil), // 3: ScanUploadReq (*ScanUploadResp)(nil), // 4: ScanUploadResp - (*ScanMetaWriteReq)(nil), // 5: ScanMetaWriteReq - (*ScanMetaWriteResp)(nil), // 6: ScanMetaWriteResp - (*ScanTriggerReImportReq)(nil), // 7: ScanTriggerReImportReq - (*ScanTriggerReImportResp)(nil), // 8: ScanTriggerReImportResp - (*ScanMetaLabelsAndTypesReq)(nil), // 9: ScanMetaLabelsAndTypesReq - (*ScanMetaLabelsAndTypesResp)(nil), // 10: ScanMetaLabelsAndTypesResp - nil, // 11: ScanListReq.SearchFiltersEntry - (*ScanListReq_MinMaxInt)(nil), // 12: ScanListReq.MinMaxInt - (*ScanItem)(nil), // 13: ScanItem - (ScanMetaDataType)(0), // 14: ScanMetaDataType + (*ScanUploadUpd)(nil), // 5: ScanUploadUpd + (*ScanMetaWriteReq)(nil), // 6: ScanMetaWriteReq + (*ScanMetaWriteResp)(nil), // 7: ScanMetaWriteResp + (*ScanTriggerReImportReq)(nil), // 8: ScanTriggerReImportReq + (*ScanTriggerReImportResp)(nil), // 9: ScanTriggerReImportResp + (*ScanTriggerReImportUpd)(nil), // 10: ScanTriggerReImportUpd + (*ScanMetaLabelsAndTypesReq)(nil), // 11: ScanMetaLabelsAndTypesReq + (*ScanMetaLabelsAndTypesResp)(nil), // 12: ScanMetaLabelsAndTypesResp + nil, // 13: ScanListReq.SearchFiltersEntry + (*ScanListReq_MinMaxInt)(nil), // 14: ScanListReq.MinMaxInt + (*ScanItem)(nil), // 15: ScanItem + (*JobStatus)(nil), // 16: JobStatus + (ScanMetaDataType)(0), // 17: ScanMetaDataType } var file_scan_msgs_proto_depIdxs = []int32{ - 11, // 0: ScanListReq.searchFilters:type_name -> ScanListReq.SearchFiltersEntry - 13, // 1: ScanListResp.scans:type_name -> ScanItem - 14, // 2: ScanMetaLabelsAndTypesResp.metaTypes:type_name -> ScanMetaDataType - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 13, // 0: ScanListReq.searchFilters:type_name -> ScanListReq.SearchFiltersEntry + 15, // 1: ScanListResp.scans:type_name -> ScanItem + 16, // 2: ScanUploadUpd.status:type_name -> JobStatus + 16, // 3: ScanTriggerReImportUpd.status:type_name -> JobStatus + 17, // 4: ScanMetaLabelsAndTypesResp.metaTypes:type_name -> ScanMetaDataType + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { file_scan_msgs_proto_init() } @@ -749,6 +856,7 @@ func file_scan_msgs_proto_init() { return } file_scan_proto_init() + file_job_proto_init() if !protoimpl.UnsafeEnabled { file_scan_msgs_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ScanListReq); i { @@ -811,7 +919,7 @@ func file_scan_msgs_proto_init() { } } file_scan_msgs_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScanMetaWriteReq); i { + switch v := v.(*ScanUploadUpd); i { case 0: return &v.state case 1: @@ -823,7 +931,7 @@ func file_scan_msgs_proto_init() { } } file_scan_msgs_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScanMetaWriteResp); i { + switch v := v.(*ScanMetaWriteReq); i { case 0: return &v.state case 1: @@ -835,7 +943,7 @@ func file_scan_msgs_proto_init() { } } file_scan_msgs_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScanTriggerReImportReq); i { + switch v := v.(*ScanMetaWriteResp); i { case 0: return &v.state case 1: @@ -847,7 +955,7 @@ func file_scan_msgs_proto_init() { } } file_scan_msgs_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScanTriggerReImportResp); i { + switch v := v.(*ScanTriggerReImportReq); i { case 0: return &v.state case 1: @@ -859,7 +967,7 @@ func file_scan_msgs_proto_init() { } } file_scan_msgs_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScanMetaLabelsAndTypesReq); i { + switch v := v.(*ScanTriggerReImportResp); i { case 0: return &v.state case 1: @@ -871,7 +979,19 @@ func file_scan_msgs_proto_init() { } } file_scan_msgs_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScanMetaLabelsAndTypesResp); i { + switch v := v.(*ScanTriggerReImportUpd); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_scan_msgs_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ScanMetaLabelsAndTypesReq); i { case 0: return &v.state case 1: @@ -883,6 +1003,18 @@ func file_scan_msgs_proto_init() { } } file_scan_msgs_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ScanMetaLabelsAndTypesResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_scan_msgs_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ScanListReq_MinMaxInt); i { case 0: return &v.state @@ -901,7 +1033,7 @@ func file_scan_msgs_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_scan_msgs_proto_rawDesc, NumEnums: 0, - NumMessages: 13, + NumMessages: 15, NumExtensions: 0, NumServices: 0, }, diff --git a/generated-protos/websocket.pb.go b/generated-protos/websocket.pb.go index bb5a9f2f..c876f504 100644 --- a/generated-protos/websocket.pb.go +++ b/generated-protos/websocket.pb.go @@ -252,8 +252,10 @@ type WSMessage struct { // *WSMessage_ScanMetaWriteResp // *WSMessage_ScanTriggerReImportReq // *WSMessage_ScanTriggerReImportResp + // *WSMessage_ScanTriggerReImportUpd // *WSMessage_ScanUploadReq // *WSMessage_ScanUploadResp + // *WSMessage_ScanUploadUpd // *WSMessage_ScreenConfigurationDeleteReq // *WSMessage_ScreenConfigurationDeleteResp // *WSMessage_ScreenConfigurationGetReq @@ -1474,6 +1476,13 @@ func (x *WSMessage) GetScanTriggerReImportResp() *ScanTriggerReImportResp { return nil } +func (x *WSMessage) GetScanTriggerReImportUpd() *ScanTriggerReImportUpd { + if x, ok := x.GetContents().(*WSMessage_ScanTriggerReImportUpd); ok { + return x.ScanTriggerReImportUpd + } + return nil +} + func (x *WSMessage) GetScanUploadReq() *ScanUploadReq { if x, ok := x.GetContents().(*WSMessage_ScanUploadReq); ok { return x.ScanUploadReq @@ -1488,6 +1497,13 @@ func (x *WSMessage) GetScanUploadResp() *ScanUploadResp { return nil } +func (x *WSMessage) GetScanUploadUpd() *ScanUploadUpd { + if x, ok := x.GetContents().(*WSMessage_ScanUploadUpd); ok { + return x.ScanUploadUpd + } + return nil +} + func (x *WSMessage) GetScreenConfigurationDeleteReq() *ScreenConfigurationDeleteReq { if x, ok := x.GetContents().(*WSMessage_ScreenConfigurationDeleteReq); ok { return x.ScreenConfigurationDeleteReq @@ -2706,6 +2722,10 @@ type WSMessage_ScanTriggerReImportResp struct { ScanTriggerReImportResp *ScanTriggerReImportResp `protobuf:"bytes,109,opt,name=scanTriggerReImportResp,proto3,oneof"` } +type WSMessage_ScanTriggerReImportUpd struct { + ScanTriggerReImportUpd *ScanTriggerReImportUpd `protobuf:"bytes,269,opt,name=scanTriggerReImportUpd,proto3,oneof"` +} + type WSMessage_ScanUploadReq struct { ScanUploadReq *ScanUploadReq `protobuf:"bytes,110,opt,name=scanUploadReq,proto3,oneof"` } @@ -2714,6 +2734,10 @@ type WSMessage_ScanUploadResp struct { ScanUploadResp *ScanUploadResp `protobuf:"bytes,111,opt,name=scanUploadResp,proto3,oneof"` } +type WSMessage_ScanUploadUpd struct { + ScanUploadUpd *ScanUploadUpd `protobuf:"bytes,268,opt,name=scanUploadUpd,proto3,oneof"` +} + type WSMessage_ScreenConfigurationDeleteReq struct { ScreenConfigurationDeleteReq *ScreenConfigurationDeleteReq `protobuf:"bytes,260,opt,name=screenConfigurationDeleteReq,proto3,oneof"` } @@ -3364,10 +3388,14 @@ func (*WSMessage_ScanTriggerReImportReq) isWSMessage_Contents() {} func (*WSMessage_ScanTriggerReImportResp) isWSMessage_Contents() {} +func (*WSMessage_ScanTriggerReImportUpd) isWSMessage_Contents() {} + func (*WSMessage_ScanUploadReq) isWSMessage_Contents() {} func (*WSMessage_ScanUploadResp) isWSMessage_Contents() {} +func (*WSMessage_ScanUploadUpd) isWSMessage_Contents() {} + func (*WSMessage_ScreenConfigurationDeleteReq) isWSMessage_Contents() {} func (*WSMessage_ScreenConfigurationDeleteResp) isWSMessage_Contents() {} @@ -3613,7 +3641,7 @@ var file_websocket_proto_rawDesc = []byte{ 0x65, 0x65, 0x6e, 0x2d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x73, 0x67, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x2d, 0x64, 0x61, 0x74, 0x61, 0x2d, 0x6d, 0x73, 0x67, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd0, 0x95, 0x01, 0x0a, 0x09, 0x57, 0x53, 0x4d, 0x65, 0x73, 0x73, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdd, 0x96, 0x01, 0x0a, 0x09, 0x57, 0x53, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x52, 0x65, 0x73, 0x70, @@ -4384,442 +4412,451 @@ var file_websocket_proto_rawDesc = []byte{ 0x32, 0x18, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x17, 0x73, 0x63, 0x61, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x49, 0x6d, 0x70, 0x6f, 0x72, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x0d, 0x73, 0x63, 0x61, 0x6e, 0x55, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x18, 0x6e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x53, - 0x63, 0x61, 0x6e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0d, - 0x73, 0x63, 0x61, 0x6e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x12, 0x39, 0x0a, - 0x0e, 0x73, 0x63, 0x61, 0x6e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x18, - 0x6f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x63, 0x61, 0x6e, 0x55, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x1c, 0x73, 0x63, 0x72, 0x65, - 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0x84, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, - 0x52, 0x1c, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x67, - 0x0a, 0x1d, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, - 0x85, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x16, 0x73, 0x63, 0x61, 0x6e, 0x54, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x70, 0x64, 0x18, + 0x8d, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x70, 0x64, 0x48, + 0x00, 0x52, 0x16, 0x73, 0x63, 0x61, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, + 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x70, 0x64, 0x12, 0x36, 0x0a, 0x0d, 0x73, 0x63, 0x61, + 0x6e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x18, 0x6e, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, + 0x48, 0x00, 0x52, 0x0d, 0x73, 0x63, 0x61, 0x6e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, + 0x71, 0x12, 0x39, 0x0a, 0x0e, 0x73, 0x63, 0x61, 0x6e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x53, 0x63, 0x61, 0x6e, + 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x63, + 0x61, 0x6e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x0d, + 0x73, 0x63, 0x61, 0x6e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x70, 0x64, 0x18, 0x8c, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x55, 0x70, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x63, 0x61, 0x6e, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x55, 0x70, 0x64, 0x12, 0x64, 0x0a, 0x1c, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x1d, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, 0x19, 0x73, 0x63, 0x72, 0x65, 0x65, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x71, 0x18, 0xf8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x53, 0x63, - 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x19, 0x73, 0x63, 0x72, 0x65, 0x65, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0x84, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x53, + 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x1c, 0x73, + 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x67, 0x0a, 0x1d, 0x73, + 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, 0x85, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x1d, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, 0x19, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x71, 0x18, 0xf8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x71, 0x12, 0x5e, 0x0a, 0x1a, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, + 0x74, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x19, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x18, 0xf9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x53, 0x63, 0x72, 0x65, - 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x1a, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x1a, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x71, 0x18, 0xfa, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x53, 0x63, 0x72, 0x65, - 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x1a, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, + 0x71, 0x12, 0x5e, 0x0a, 0x1a, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x18, + 0xf9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x1a, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x5e, 0x0a, 0x1a, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x18, + 0xfa, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x1a, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x71, 0x12, 0x61, 0x0a, 0x1b, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x18, 0xfb, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x12, 0x61, 0x0a, 0x1b, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x18, 0xfb, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x53, 0x63, 0x72, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x1b, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x1b, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x18, 0xfc, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x1b, 0x73, 0x63, 0x72, 0x65, - 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x1b, 0x73, 0x63, 0x72, 0x65, 0x65, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x1b, 0x73, 0x63, 0x72, 0x65, + 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x64, 0x0a, 0x1c, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0xfc, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x1b, 0x73, - 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x64, 0x0a, 0x1c, 0x73, 0x63, - 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, 0xfd, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x48, 0x00, 0x52, 0x1c, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x52, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x18, 0xe2, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x16, 0x73, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x69, 0x78, 0x65, 0x6c, - 0x73, 0x52, 0x65, 0x71, 0x12, 0x55, 0x0a, 0x17, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x18, - 0xe3, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x48, 0x00, 0x52, 0x17, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x1b, 0x73, + 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, 0xfd, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, + 0x1c, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, + 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x69, + 0x78, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x18, 0xe2, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x69, + 0x78, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x52, 0x65, + 0x71, 0x12, 0x55, 0x0a, 0x17, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x18, 0xe3, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, + 0x17, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x69, + 0x78, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x1b, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0xe4, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x69, + 0x78, 0x65, 0x6c, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x1b, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x69, 0x78, + 0x65, 0x6c, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x64, 0x0a, 0x1c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x69, 0x78, 0x65, - 0x6c, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0xe4, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x48, - 0x00, 0x52, 0x1b, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x64, - 0x0a, 0x1c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, - 0x69, 0x78, 0x65, 0x6c, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, 0xe5, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x1c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x53, 0x63, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x18, 0xe6, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x53, 0x63, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x48, 0x00, - 0x52, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x6e, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x55, 0x0a, 0x17, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x18, 0xe7, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x17, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x53, 0x63, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x61, 0x0a, 0x1b, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x63, 0x61, 0x6e, 0x45, - 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0xe8, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x53, 0x63, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x1b, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, - 0x63, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x12, 0x64, 0x0a, 0x1c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x63, - 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x18, 0xe9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x1c, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x54, 0x0a, 0x17, 0x73, 0x65, 0x6e, 0x64, - 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x18, 0x70, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x53, 0x65, 0x6e, 0x64, - 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x17, 0x73, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4e, - 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x57, - 0x0a, 0x18, 0x73, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x71, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x18, 0x73, + 0x6c, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, 0xe5, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x48, 0x00, 0x52, 0x1c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x52, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x63, 0x61, + 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x18, 0xe6, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x63, 0x61, + 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x16, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x55, 0x0a, 0x17, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x18, 0xe7, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x48, 0x00, 0x52, 0x17, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x63, 0x61, + 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x1b, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, + 0x69, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0xe8, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x63, 0x61, + 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x48, 0x00, 0x52, 0x1b, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x63, 0x61, 0x6e, + 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, + 0x64, 0x0a, 0x1c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x63, 0x61, 0x6e, 0x45, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, + 0xe9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x1c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x54, 0x0a, 0x17, 0x73, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, + 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x18, 0x70, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, + 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x48, 0x00, 0x52, 0x17, 0x73, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x57, 0x0a, 0x18, 0x73, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0b, 0x73, 0x70, 0x65, 0x63, 0x74, - 0x72, 0x75, 0x6d, 0x52, 0x65, 0x71, 0x18, 0x72, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x53, - 0x70, 0x65, 0x63, 0x74, 0x72, 0x75, 0x6d, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x70, - 0x65, 0x63, 0x74, 0x72, 0x75, 0x6d, 0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, 0x0c, 0x73, 0x70, 0x65, - 0x63, 0x74, 0x72, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x18, 0x73, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0d, 0x2e, 0x53, 0x70, 0x65, 0x63, 0x74, 0x72, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, - 0x52, 0x0c, 0x73, 0x70, 0x65, 0x63, 0x74, 0x72, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x33, - 0x0a, 0x0c, 0x74, 0x61, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0x74, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x61, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x12, 0x36, 0x0a, 0x0d, 0x74, 0x61, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x18, 0x75, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x54, 0x61, 0x67, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x61, - 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x33, 0x0a, 0x0c, 0x74, - 0x61, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0x76, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0d, 0x2e, 0x54, 0x61, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x48, 0x00, 0x52, 0x0c, 0x74, 0x61, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x12, 0x36, 0x0a, 0x0d, 0x74, 0x61, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x18, 0x77, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x54, 0x61, 0x67, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x61, 0x67, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x0a, 0x74, 0x61, 0x67, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x18, 0x78, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x54, - 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x61, 0x67, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x30, 0x0a, 0x0b, 0x74, 0x61, 0x67, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x18, 0x79, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x54, - 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x61, - 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x39, 0x0a, 0x0e, 0x75, 0x73, 0x65, - 0x72, 0x41, 0x64, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x18, 0x7a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x52, - 0x65, 0x71, 0x48, 0x00, 0x52, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x52, 0x6f, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x52, - 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, 0x7b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x48, - 0x00, 0x52, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x42, 0x0a, 0x11, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x18, 0x7c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, - 0x71, 0x48, 0x00, 0x52, 0x11, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x45, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, 0x7d, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x12, 0x75, 0x73, 0x65, 0x72, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x39, 0x0a, - 0x0e, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x18, - 0x7e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x18, 0x7f, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x13, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0x81, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x13, 0x75, 0x73, - 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x12, 0x4c, 0x0a, 0x14, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, 0x82, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x15, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x14, 0x75, 0x73, 0x65, 0x72, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x4c, 0x0a, 0x14, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x41, - 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x18, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, - 0x69, 0x6e, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x14, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x4f, 0x0a, - 0x15, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, - 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x9d, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x15, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, - 0x0a, 0x15, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x18, 0x9e, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x15, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, - 0x52, 0x0a, 0x16, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x18, 0x9f, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x16, 0x75, 0x73, 0x65, - 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x15, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x41, 0x64, 0x64, 0x56, 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, 0x71, 0x18, 0xb4, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, - 0x64, 0x64, 0x56, 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x15, 0x75, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x71, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x53, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x18, 0x73, 0x65, 0x6e, 0x64, + 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0b, 0x73, 0x70, 0x65, 0x63, 0x74, 0x72, 0x75, 0x6d, + 0x52, 0x65, 0x71, 0x18, 0x72, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x53, 0x70, 0x65, 0x63, + 0x74, 0x72, 0x75, 0x6d, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x70, 0x65, 0x63, 0x74, + 0x72, 0x75, 0x6d, 0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, 0x0c, 0x73, 0x70, 0x65, 0x63, 0x74, 0x72, + 0x75, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x18, 0x73, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x53, + 0x70, 0x65, 0x63, 0x74, 0x72, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x0c, 0x73, + 0x70, 0x65, 0x63, 0x74, 0x72, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x33, 0x0a, 0x0c, 0x74, + 0x61, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0x74, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0d, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x48, 0x00, 0x52, 0x0c, 0x74, 0x61, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x12, 0x36, 0x0a, 0x0d, 0x74, 0x61, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x18, 0x75, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x61, 0x67, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x33, 0x0a, 0x0c, 0x74, 0x61, 0x67, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0x76, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x54, 0x61, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, + 0x0c, 0x74, 0x61, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x36, 0x0a, + 0x0d, 0x74, 0x61, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, 0x77, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x54, 0x61, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x61, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x0a, 0x74, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x18, 0x78, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x54, 0x61, 0x67, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x61, 0x67, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x12, 0x30, 0x0a, 0x0b, 0x74, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x18, 0x79, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x54, 0x61, 0x67, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x61, 0x67, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x39, 0x0a, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x41, 0x64, + 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x18, 0x7a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x48, + 0x00, 0x52, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, + 0x71, 0x12, 0x3c, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x52, 0x6f, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x18, 0x7b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x41, 0x64, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x0f, + 0x75, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x42, 0x0a, 0x11, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x18, 0x7c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, + 0x52, 0x11, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, + 0x52, 0x65, 0x71, 0x12, 0x45, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, 0x7d, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x12, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x39, 0x0a, 0x0e, 0x75, 0x73, + 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x18, 0x7e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x18, 0x7f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x48, 0x00, 0x52, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x13, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0x81, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x13, 0x75, 0x73, 0x65, 0x72, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x4c, + 0x0a, 0x14, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x57, 0x72, 0x69, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, 0x82, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x14, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x14, + 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, + 0x6e, 0x52, 0x65, 0x71, 0x18, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, + 0x65, 0x71, 0x48, 0x00, 0x52, 0x14, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, + 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x4f, 0x0a, 0x15, 0x75, 0x73, + 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x18, 0x9d, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x48, 0x00, 0x52, 0x15, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, + 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x15, 0x75, + 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x18, 0x9e, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x15, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x52, 0x0a, 0x16, + 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x18, 0x9f, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x16, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x4f, 0x0a, 0x15, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, + 0x56, 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, 0x71, 0x18, 0xb4, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x56, + 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x15, 0x75, 0x73, 0x65, 0x72, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x56, 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x12, 0x52, 0x0a, 0x16, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, + 0x64, 0x56, 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x18, 0xb5, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, + 0x64, 0x56, 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x16, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x56, 0x69, 0x65, 0x77, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x12, 0x52, 0x0a, 0x16, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x41, 0x64, 0x64, 0x56, 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x18, 0xb5, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x41, 0x64, 0x64, 0x56, 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, - 0x52, 0x16, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x56, 0x69, - 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x72, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0xa0, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x12, 0x75, 0x73, - 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x12, 0x49, 0x0a, 0x13, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, 0xa1, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x13, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, 0x17, 0x75, - 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x64, - 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x18, 0xa2, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, - 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x17, 0x75, 0x73, 0x65, 0x72, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, - 0x65, 0x71, 0x12, 0x58, 0x0a, 0x18, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0xa3, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x48, 0x00, 0x52, 0x18, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x58, 0x0a, 0x18, - 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x18, 0xa4, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x18, 0x75, 0x73, - 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x5b, 0x0a, 0x19, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x18, 0xa5, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0xa0, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x12, 0x75, 0x73, 0x65, 0x72, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x49, 0x0a, + 0x13, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x18, 0xa1, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x48, 0x00, 0x52, 0x13, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, 0x17, 0x75, 0x73, 0x65, 0x72, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, + 0x52, 0x65, 0x71, 0x18, 0xa2, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, + 0x6e, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x17, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, + 0x58, 0x0a, 0x18, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0xa3, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, + 0x18, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x58, 0x0a, 0x18, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x19, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x18, 0xa4, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x18, 0x75, 0x73, 0x65, 0x72, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x12, 0x5b, 0x0a, 0x19, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x18, 0xa5, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0xa6, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x12, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x49, 0x0a, 0x13, 0x75, - 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x18, 0xa7, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x48, - 0x00, 0x52, 0x13, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x58, 0x0a, 0x18, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x18, 0xb2, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x18, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x12, 0x5b, 0x0a, 0x19, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x18, 0xb3, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x48, 0x00, 0x52, 0x19, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, - 0x16, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, - 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x18, 0xb6, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, - 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x16, 0x75, 0x73, 0x65, 0x72, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, - 0x71, 0x12, 0x55, 0x0a, 0x17, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x67, - 0x6e, 0x6f, 0x72, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0xb7, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, - 0x17, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, - 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x14, 0x75, 0x73, 0x65, 0x72, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x18, 0xb8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x48, 0x00, - 0x52, 0x14, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x4f, 0x0a, 0x15, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x18, - 0xb9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, - 0x52, 0x15, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x18, 0xba, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4a, 0x6f, - 0x69, 0x6e, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x43, 0x0a, 0x11, 0x75, 0x73, 0x65, - 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0xbb, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x11, 0x75, 0x73, 0x65, - 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x58, - 0x0a, 0x18, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x4a, - 0x6f, 0x69, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x18, 0xea, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, - 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x18, - 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x69, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x5b, 0x0a, 0x19, 0x75, 0x73, 0x65, 0x72, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, 0xeb, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x55, + 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x19, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x46, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0xa6, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x48, 0x00, 0x52, 0x12, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x49, 0x0a, 0x13, 0x75, 0x73, 0x65, 0x72, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, + 0xa7, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x13, + 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x58, 0x0a, 0x18, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, 0x71, 0x18, + 0xb2, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x48, 0x00, 0x52, 0x18, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x5b, 0x0a, + 0x19, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x56, 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x18, 0xb3, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, + 0x19, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x56, 0x69, 0x65, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x16, 0x75, 0x73, + 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4a, 0x6f, 0x69, + 0x6e, 0x52, 0x65, 0x71, 0x18, 0xb6, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4a, 0x6f, 0x69, + 0x6e, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x16, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x55, + 0x0a, 0x17, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x67, 0x6e, 0x6f, 0x72, + 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0xb7, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x67, 0x6e, 0x6f, + 0x72, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x17, 0x75, 0x73, + 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4a, 0x6f, 0x69, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x14, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x18, 0xb8, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x4a, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x14, 0x75, + 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x12, 0x4f, 0x0a, 0x15, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x4a, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x18, 0xb9, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4a, + 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x15, 0x75, + 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x18, 0xba, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x52, + 0x65, 0x71, 0x48, 0x00, 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4a, + 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x43, 0x0a, 0x11, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0xbb, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4a, 0x6f, + 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x11, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x58, 0x0a, 0x18, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x69, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x19, 0x75, 0x73, 0x65, 0x72, + 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x18, 0xea, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, + 0x69, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x18, 0x75, 0x73, 0x65, + 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x5b, 0x0a, 0x19, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x18, 0xeb, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x18, 0xa8, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x11, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x43, 0x0a, 0x11, 0x75, 0x73, 0x65, 0x72, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x18, 0xa9, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x11, 0x75, 0x73, 0x65, 0x72, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x0c, - 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x18, 0xbc, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, - 0x65, 0x71, 0x48, 0x00, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, - 0x65, 0x71, 0x12, 0x37, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, - 0x65, 0x73, 0x70, 0x18, 0xbd, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x0d, 0x75, 0x73, - 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x13, 0x75, - 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x52, - 0x65, 0x71, 0x18, 0xaa, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x48, - 0x00, 0x52, 0x13, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x12, 0x4c, 0x0a, 0x14, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, 0xab, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x14, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x19, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x40, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x18, 0xa8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, + 0x48, 0x00, 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x12, 0x43, 0x0a, 0x11, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x18, 0xa9, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x11, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x0c, 0x75, 0x73, 0x65, + 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x18, 0xbc, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x48, + 0x00, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, + 0x37, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x18, 0xbd, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x13, 0x75, 0x73, 0x65, 0x72, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x18, + 0xaa, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x13, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x31, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x18, 0x8a, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x34, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x18, 0x8b, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, - 0x0c, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, - 0x13, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x18, 0x8c, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x55, 0x73, + 0x52, 0x65, 0x71, 0x12, 0x4c, 0x0a, 0x14, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, 0xab, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x14, 0x75, 0x73, 0x65, + 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x31, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, + 0x18, 0x8a, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x12, 0x34, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x18, 0x8b, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x0c, 0x75, 0x73, + 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x13, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x48, 0x00, 0x52, 0x13, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x4c, 0x0a, 0x14, 0x75, 0x73, 0x65, 0x72, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x18, 0x8d, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, - 0x52, 0x14, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x1b, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, + 0x71, 0x18, 0x8c, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x48, 0x00, + 0x52, 0x13, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x4c, 0x0a, 0x14, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x8d, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x14, 0x75, + 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x1b, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, + 0x65, 0x71, 0x18, 0x8e, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x1b, 0x75, 0x73, 0x65, 0x72, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x64, 0x0a, 0x1c, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x52, 0x65, 0x71, 0x18, 0x8e, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x55, - 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x1b, 0x75, 0x73, - 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x64, 0x0a, 0x1c, 0x75, 0x73, 0x65, - 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x18, 0x8f, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x48, - 0x00, 0x52, 0x1c, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x61, 0x0a, 0x1b, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x55, 0x70, 0x64, 0x18, 0x90, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x55, 0x70, 0x64, 0x48, 0x00, 0x52, 0x1b, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x55, - 0x70, 0x64, 0x12, 0x70, 0x0a, 0x20, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0x91, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x18, 0x8f, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x48, 0x00, 0x52, 0x20, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x12, 0x73, 0x0a, 0x21, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, 0x92, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x1c, + 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x1b, + 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x55, 0x70, 0x64, 0x18, 0x90, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x55, 0x70, 0x64, + 0x48, 0x00, 0x52, 0x1b, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x55, 0x70, 0x64, 0x12, + 0x70, 0x0a, 0x20, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x21, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x13, 0x75, 0x73, 0x65, - 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, - 0x18, 0x93, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x48, 0x00, 0x52, - 0x13, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x55, 0x70, 0x64, 0x12, 0x3d, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x18, 0x94, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x48, 0x00, 0x52, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x12, 0x40, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x18, 0x95, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x48, 0x00, 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, - 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x18, 0x96, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x11, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x43, 0x0a, 0x11, 0x75, 0x73, 0x65, 0x72, 0x52, - 0x6f, 0x6c, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x18, 0x97, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x11, 0x75, 0x73, 0x65, 0x72, 0x52, - 0x6f, 0x6c, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x0d, - 0x75, 0x73, 0x65, 0x72, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x18, 0xde, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x52, 0x65, 0x71, 0x12, 0x3a, 0x0a, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x18, 0xdf, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x48, - 0x00, 0x52, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x40, 0x0a, 0x10, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x71, 0x18, 0xfe, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x57, - 0x69, 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x48, - 0x00, 0x52, 0x10, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x71, 0x12, 0x43, 0x0a, 0x11, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x18, 0xff, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x11, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x12, 0x77, 0x69, 0x64, 0x67, - 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0x80, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x12, 0x77, 0x69, - 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x12, 0x49, 0x0a, 0x13, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, 0x81, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x57, 0x72, 0x69, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x13, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x0f, 0x7a, - 0x65, 0x6e, 0x6f, 0x64, 0x6f, 0x44, 0x4f, 0x49, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x18, 0xf0, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x5a, 0x65, 0x6e, 0x6f, 0x64, 0x6f, 0x44, 0x4f, - 0x49, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0f, 0x7a, 0x65, 0x6e, 0x6f, 0x64, - 0x6f, 0x44, 0x4f, 0x49, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x40, 0x0a, 0x10, 0x7a, 0x65, - 0x6e, 0x6f, 0x64, 0x6f, 0x44, 0x4f, 0x49, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x18, 0xf1, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x5a, 0x65, 0x6e, 0x6f, 0x64, 0x6f, 0x44, 0x4f, - 0x49, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x10, 0x7a, 0x65, 0x6e, 0x6f, - 0x64, 0x6f, 0x44, 0x4f, 0x49, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0a, 0x0a, 0x08, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x2a, 0x7e, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x0c, 0x57, 0x53, - 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, - 0x57, 0x53, 0x5f, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x57, 0x53, 0x5f, 0x4e, 0x4f, - 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x57, 0x53, 0x5f, - 0x42, 0x41, 0x44, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x03, 0x12, 0x14, 0x0a, - 0x10, 0x57, 0x53, 0x5f, 0x4e, 0x4f, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, - 0x4e, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x57, 0x53, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, - 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x3b, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x65, 0x71, 0x18, 0x91, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, + 0x20, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x12, 0x73, 0x0a, 0x21, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x57, 0x72, 0x69, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x18, 0x92, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x48, 0x00, 0x52, 0x21, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x57, 0x72, 0x69, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x13, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x18, 0x93, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x48, 0x00, 0x52, 0x13, 0x75, 0x73, + 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, + 0x64, 0x12, 0x3d, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x18, 0x94, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, + 0x0f, 0x75, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, + 0x12, 0x40, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x18, 0x95, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, + 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x40, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x18, 0x96, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, + 0x48, 0x00, 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x12, 0x43, 0x0a, 0x11, 0x75, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, + 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x18, 0x97, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x11, 0x75, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, + 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x0d, 0x75, 0x73, 0x65, + 0x72, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x18, 0xde, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, + 0x71, 0x48, 0x00, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, + 0x65, 0x71, 0x12, 0x3a, 0x0a, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x52, 0x65, 0x73, 0x70, 0x18, 0xdf, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x0e, + 0x75, 0x73, 0x65, 0x72, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, + 0x0a, 0x10, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x71, 0x18, 0xfe, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x57, 0x69, 0x64, 0x67, + 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x10, + 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x12, 0x43, 0x0a, 0x11, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x18, 0xff, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x57, + 0x69, 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x48, 0x00, 0x52, 0x11, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x12, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x18, 0x80, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x12, 0x77, 0x69, 0x64, 0x67, 0x65, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x49, 0x0a, + 0x13, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x18, 0x81, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x57, 0x69, + 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x48, 0x00, 0x52, 0x13, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x0f, 0x7a, 0x65, 0x6e, 0x6f, + 0x64, 0x6f, 0x44, 0x4f, 0x49, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x18, 0xf0, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x5a, 0x65, 0x6e, 0x6f, 0x64, 0x6f, 0x44, 0x4f, 0x49, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0f, 0x7a, 0x65, 0x6e, 0x6f, 0x64, 0x6f, 0x44, 0x4f, + 0x49, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x40, 0x0a, 0x10, 0x7a, 0x65, 0x6e, 0x6f, 0x64, + 0x6f, 0x44, 0x4f, 0x49, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x18, 0xf1, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x5a, 0x65, 0x6e, 0x6f, 0x64, 0x6f, 0x44, 0x4f, 0x49, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x10, 0x7a, 0x65, 0x6e, 0x6f, 0x64, 0x6f, 0x44, + 0x4f, 0x49, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0a, 0x0a, 0x08, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x73, 0x2a, 0x7e, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x0c, 0x57, 0x53, 0x5f, 0x55, 0x4e, + 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x57, 0x53, 0x5f, + 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x57, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, + 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x57, 0x53, 0x5f, 0x42, 0x41, 0x44, + 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x57, 0x53, + 0x5f, 0x4e, 0x4f, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, + 0x12, 0x13, 0x0a, 0x0f, 0x57, 0x53, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x10, 0x05, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4992,94 +5029,96 @@ var file_websocket_proto_goTypes = []interface{}{ (*ScanMetaWriteResp)(nil), // 152: ScanMetaWriteResp (*ScanTriggerReImportReq)(nil), // 153: ScanTriggerReImportReq (*ScanTriggerReImportResp)(nil), // 154: ScanTriggerReImportResp - (*ScanUploadReq)(nil), // 155: ScanUploadReq - (*ScanUploadResp)(nil), // 156: ScanUploadResp - (*ScreenConfigurationDeleteReq)(nil), // 157: ScreenConfigurationDeleteReq - (*ScreenConfigurationDeleteResp)(nil), // 158: ScreenConfigurationDeleteResp - (*ScreenConfigurationGetReq)(nil), // 159: ScreenConfigurationGetReq - (*ScreenConfigurationGetResp)(nil), // 160: ScreenConfigurationGetResp - (*ScreenConfigurationListReq)(nil), // 161: ScreenConfigurationListReq - (*ScreenConfigurationListResp)(nil), // 162: ScreenConfigurationListResp - (*ScreenConfigurationWriteReq)(nil), // 163: ScreenConfigurationWriteReq - (*ScreenConfigurationWriteResp)(nil), // 164: ScreenConfigurationWriteResp - (*SelectedImagePixelsReq)(nil), // 165: SelectedImagePixelsReq - (*SelectedImagePixelsResp)(nil), // 166: SelectedImagePixelsResp - (*SelectedImagePixelsWriteReq)(nil), // 167: SelectedImagePixelsWriteReq - (*SelectedImagePixelsWriteResp)(nil), // 168: SelectedImagePixelsWriteResp - (*SelectedScanEntriesReq)(nil), // 169: SelectedScanEntriesReq - (*SelectedScanEntriesResp)(nil), // 170: SelectedScanEntriesResp - (*SelectedScanEntriesWriteReq)(nil), // 171: SelectedScanEntriesWriteReq - (*SelectedScanEntriesWriteResp)(nil), // 172: SelectedScanEntriesWriteResp - (*SendUserNotificationReq)(nil), // 173: SendUserNotificationReq - (*SendUserNotificationResp)(nil), // 174: SendUserNotificationResp - (*SpectrumReq)(nil), // 175: SpectrumReq - (*SpectrumResp)(nil), // 176: SpectrumResp - (*TagCreateReq)(nil), // 177: TagCreateReq - (*TagCreateResp)(nil), // 178: TagCreateResp - (*TagDeleteReq)(nil), // 179: TagDeleteReq - (*TagDeleteResp)(nil), // 180: TagDeleteResp - (*TagListReq)(nil), // 181: TagListReq - (*TagListResp)(nil), // 182: TagListResp - (*UserAddRoleReq)(nil), // 183: UserAddRoleReq - (*UserAddRoleResp)(nil), // 184: UserAddRoleResp - (*UserDeleteRoleReq)(nil), // 185: UserDeleteRoleReq - (*UserDeleteRoleResp)(nil), // 186: UserDeleteRoleResp - (*UserDetailsReq)(nil), // 187: UserDetailsReq - (*UserDetailsResp)(nil), // 188: UserDetailsResp - (*UserDetailsWriteReq)(nil), // 189: UserDetailsWriteReq - (*UserDetailsWriteResp)(nil), // 190: UserDetailsWriteResp - (*UserGroupAddAdminReq)(nil), // 191: UserGroupAddAdminReq - (*UserGroupAddAdminResp)(nil), // 192: UserGroupAddAdminResp - (*UserGroupAddMemberReq)(nil), // 193: UserGroupAddMemberReq - (*UserGroupAddMemberResp)(nil), // 194: UserGroupAddMemberResp - (*UserGroupAddViewerReq)(nil), // 195: UserGroupAddViewerReq - (*UserGroupAddViewerResp)(nil), // 196: UserGroupAddViewerResp - (*UserGroupCreateReq)(nil), // 197: UserGroupCreateReq - (*UserGroupCreateResp)(nil), // 198: UserGroupCreateResp - (*UserGroupDeleteAdminReq)(nil), // 199: UserGroupDeleteAdminReq - (*UserGroupDeleteAdminResp)(nil), // 200: UserGroupDeleteAdminResp - (*UserGroupDeleteMemberReq)(nil), // 201: UserGroupDeleteMemberReq - (*UserGroupDeleteMemberResp)(nil), // 202: UserGroupDeleteMemberResp - (*UserGroupDeleteReq)(nil), // 203: UserGroupDeleteReq - (*UserGroupDeleteResp)(nil), // 204: UserGroupDeleteResp - (*UserGroupDeleteViewerReq)(nil), // 205: UserGroupDeleteViewerReq - (*UserGroupDeleteViewerResp)(nil), // 206: UserGroupDeleteViewerResp - (*UserGroupIgnoreJoinReq)(nil), // 207: UserGroupIgnoreJoinReq - (*UserGroupIgnoreJoinResp)(nil), // 208: UserGroupIgnoreJoinResp - (*UserGroupJoinListReq)(nil), // 209: UserGroupJoinListReq - (*UserGroupJoinListResp)(nil), // 210: UserGroupJoinListResp - (*UserGroupJoinReq)(nil), // 211: UserGroupJoinReq - (*UserGroupJoinResp)(nil), // 212: UserGroupJoinResp - (*UserGroupListJoinableReq)(nil), // 213: UserGroupListJoinableReq - (*UserGroupListJoinableResp)(nil), // 214: UserGroupListJoinableResp - (*UserGroupListReq)(nil), // 215: UserGroupListReq - (*UserGroupListResp)(nil), // 216: UserGroupListResp - (*UserGroupReq)(nil), // 217: UserGroupReq - (*UserGroupResp)(nil), // 218: UserGroupResp - (*UserGroupSetNameReq)(nil), // 219: UserGroupSetNameReq - (*UserGroupSetNameResp)(nil), // 220: UserGroupSetNameResp - (*UserListReq)(nil), // 221: UserListReq - (*UserListResp)(nil), // 222: UserListResp - (*UserNotificationReq)(nil), // 223: UserNotificationReq - (*UserNotificationResp)(nil), // 224: UserNotificationResp - (*UserNotificationSettingsReq)(nil), // 225: UserNotificationSettingsReq - (*UserNotificationSettingsResp)(nil), // 226: UserNotificationSettingsResp - (*UserNotificationSettingsUpd)(nil), // 227: UserNotificationSettingsUpd - (*UserNotificationSettingsWriteReq)(nil), // 228: UserNotificationSettingsWriteReq - (*UserNotificationSettingsWriteResp)(nil), // 229: UserNotificationSettingsWriteResp - (*UserNotificationUpd)(nil), // 230: UserNotificationUpd - (*UserRoleListReq)(nil), // 231: UserRoleListReq - (*UserRoleListResp)(nil), // 232: UserRoleListResp - (*UserRolesListReq)(nil), // 233: UserRolesListReq - (*UserRolesListResp)(nil), // 234: UserRolesListResp - (*UserSearchReq)(nil), // 235: UserSearchReq - (*UserSearchResp)(nil), // 236: UserSearchResp - (*WidgetDataGetReq)(nil), // 237: WidgetDataGetReq - (*WidgetDataGetResp)(nil), // 238: WidgetDataGetResp - (*WidgetDataWriteReq)(nil), // 239: WidgetDataWriteReq - (*WidgetDataWriteResp)(nil), // 240: WidgetDataWriteResp - (*ZenodoDOIGetReq)(nil), // 241: ZenodoDOIGetReq - (*ZenodoDOIGetResp)(nil), // 242: ZenodoDOIGetResp + (*ScanTriggerReImportUpd)(nil), // 155: ScanTriggerReImportUpd + (*ScanUploadReq)(nil), // 156: ScanUploadReq + (*ScanUploadResp)(nil), // 157: ScanUploadResp + (*ScanUploadUpd)(nil), // 158: ScanUploadUpd + (*ScreenConfigurationDeleteReq)(nil), // 159: ScreenConfigurationDeleteReq + (*ScreenConfigurationDeleteResp)(nil), // 160: ScreenConfigurationDeleteResp + (*ScreenConfigurationGetReq)(nil), // 161: ScreenConfigurationGetReq + (*ScreenConfigurationGetResp)(nil), // 162: ScreenConfigurationGetResp + (*ScreenConfigurationListReq)(nil), // 163: ScreenConfigurationListReq + (*ScreenConfigurationListResp)(nil), // 164: ScreenConfigurationListResp + (*ScreenConfigurationWriteReq)(nil), // 165: ScreenConfigurationWriteReq + (*ScreenConfigurationWriteResp)(nil), // 166: ScreenConfigurationWriteResp + (*SelectedImagePixelsReq)(nil), // 167: SelectedImagePixelsReq + (*SelectedImagePixelsResp)(nil), // 168: SelectedImagePixelsResp + (*SelectedImagePixelsWriteReq)(nil), // 169: SelectedImagePixelsWriteReq + (*SelectedImagePixelsWriteResp)(nil), // 170: SelectedImagePixelsWriteResp + (*SelectedScanEntriesReq)(nil), // 171: SelectedScanEntriesReq + (*SelectedScanEntriesResp)(nil), // 172: SelectedScanEntriesResp + (*SelectedScanEntriesWriteReq)(nil), // 173: SelectedScanEntriesWriteReq + (*SelectedScanEntriesWriteResp)(nil), // 174: SelectedScanEntriesWriteResp + (*SendUserNotificationReq)(nil), // 175: SendUserNotificationReq + (*SendUserNotificationResp)(nil), // 176: SendUserNotificationResp + (*SpectrumReq)(nil), // 177: SpectrumReq + (*SpectrumResp)(nil), // 178: SpectrumResp + (*TagCreateReq)(nil), // 179: TagCreateReq + (*TagCreateResp)(nil), // 180: TagCreateResp + (*TagDeleteReq)(nil), // 181: TagDeleteReq + (*TagDeleteResp)(nil), // 182: TagDeleteResp + (*TagListReq)(nil), // 183: TagListReq + (*TagListResp)(nil), // 184: TagListResp + (*UserAddRoleReq)(nil), // 185: UserAddRoleReq + (*UserAddRoleResp)(nil), // 186: UserAddRoleResp + (*UserDeleteRoleReq)(nil), // 187: UserDeleteRoleReq + (*UserDeleteRoleResp)(nil), // 188: UserDeleteRoleResp + (*UserDetailsReq)(nil), // 189: UserDetailsReq + (*UserDetailsResp)(nil), // 190: UserDetailsResp + (*UserDetailsWriteReq)(nil), // 191: UserDetailsWriteReq + (*UserDetailsWriteResp)(nil), // 192: UserDetailsWriteResp + (*UserGroupAddAdminReq)(nil), // 193: UserGroupAddAdminReq + (*UserGroupAddAdminResp)(nil), // 194: UserGroupAddAdminResp + (*UserGroupAddMemberReq)(nil), // 195: UserGroupAddMemberReq + (*UserGroupAddMemberResp)(nil), // 196: UserGroupAddMemberResp + (*UserGroupAddViewerReq)(nil), // 197: UserGroupAddViewerReq + (*UserGroupAddViewerResp)(nil), // 198: UserGroupAddViewerResp + (*UserGroupCreateReq)(nil), // 199: UserGroupCreateReq + (*UserGroupCreateResp)(nil), // 200: UserGroupCreateResp + (*UserGroupDeleteAdminReq)(nil), // 201: UserGroupDeleteAdminReq + (*UserGroupDeleteAdminResp)(nil), // 202: UserGroupDeleteAdminResp + (*UserGroupDeleteMemberReq)(nil), // 203: UserGroupDeleteMemberReq + (*UserGroupDeleteMemberResp)(nil), // 204: UserGroupDeleteMemberResp + (*UserGroupDeleteReq)(nil), // 205: UserGroupDeleteReq + (*UserGroupDeleteResp)(nil), // 206: UserGroupDeleteResp + (*UserGroupDeleteViewerReq)(nil), // 207: UserGroupDeleteViewerReq + (*UserGroupDeleteViewerResp)(nil), // 208: UserGroupDeleteViewerResp + (*UserGroupIgnoreJoinReq)(nil), // 209: UserGroupIgnoreJoinReq + (*UserGroupIgnoreJoinResp)(nil), // 210: UserGroupIgnoreJoinResp + (*UserGroupJoinListReq)(nil), // 211: UserGroupJoinListReq + (*UserGroupJoinListResp)(nil), // 212: UserGroupJoinListResp + (*UserGroupJoinReq)(nil), // 213: UserGroupJoinReq + (*UserGroupJoinResp)(nil), // 214: UserGroupJoinResp + (*UserGroupListJoinableReq)(nil), // 215: UserGroupListJoinableReq + (*UserGroupListJoinableResp)(nil), // 216: UserGroupListJoinableResp + (*UserGroupListReq)(nil), // 217: UserGroupListReq + (*UserGroupListResp)(nil), // 218: UserGroupListResp + (*UserGroupReq)(nil), // 219: UserGroupReq + (*UserGroupResp)(nil), // 220: UserGroupResp + (*UserGroupSetNameReq)(nil), // 221: UserGroupSetNameReq + (*UserGroupSetNameResp)(nil), // 222: UserGroupSetNameResp + (*UserListReq)(nil), // 223: UserListReq + (*UserListResp)(nil), // 224: UserListResp + (*UserNotificationReq)(nil), // 225: UserNotificationReq + (*UserNotificationResp)(nil), // 226: UserNotificationResp + (*UserNotificationSettingsReq)(nil), // 227: UserNotificationSettingsReq + (*UserNotificationSettingsResp)(nil), // 228: UserNotificationSettingsResp + (*UserNotificationSettingsUpd)(nil), // 229: UserNotificationSettingsUpd + (*UserNotificationSettingsWriteReq)(nil), // 230: UserNotificationSettingsWriteReq + (*UserNotificationSettingsWriteResp)(nil), // 231: UserNotificationSettingsWriteResp + (*UserNotificationUpd)(nil), // 232: UserNotificationUpd + (*UserRoleListReq)(nil), // 233: UserRoleListReq + (*UserRoleListResp)(nil), // 234: UserRoleListResp + (*UserRolesListReq)(nil), // 235: UserRolesListReq + (*UserRolesListResp)(nil), // 236: UserRolesListResp + (*UserSearchReq)(nil), // 237: UserSearchReq + (*UserSearchResp)(nil), // 238: UserSearchResp + (*WidgetDataGetReq)(nil), // 239: WidgetDataGetReq + (*WidgetDataGetResp)(nil), // 240: WidgetDataGetResp + (*WidgetDataWriteReq)(nil), // 241: WidgetDataWriteReq + (*WidgetDataWriteResp)(nil), // 242: WidgetDataWriteResp + (*ZenodoDOIGetReq)(nil), // 243: ZenodoDOIGetReq + (*ZenodoDOIGetResp)(nil), // 244: ZenodoDOIGetResp } var file_websocket_proto_depIdxs = []int32{ 0, // 0: WSMessage.status:type_name -> ResponseStatus @@ -5236,99 +5275,101 @@ var file_websocket_proto_depIdxs = []int32{ 152, // 151: WSMessage.scanMetaWriteResp:type_name -> ScanMetaWriteResp 153, // 152: WSMessage.scanTriggerReImportReq:type_name -> ScanTriggerReImportReq 154, // 153: WSMessage.scanTriggerReImportResp:type_name -> ScanTriggerReImportResp - 155, // 154: WSMessage.scanUploadReq:type_name -> ScanUploadReq - 156, // 155: WSMessage.scanUploadResp:type_name -> ScanUploadResp - 157, // 156: WSMessage.screenConfigurationDeleteReq:type_name -> ScreenConfigurationDeleteReq - 158, // 157: WSMessage.screenConfigurationDeleteResp:type_name -> ScreenConfigurationDeleteResp - 159, // 158: WSMessage.screenConfigurationGetReq:type_name -> ScreenConfigurationGetReq - 160, // 159: WSMessage.screenConfigurationGetResp:type_name -> ScreenConfigurationGetResp - 161, // 160: WSMessage.screenConfigurationListReq:type_name -> ScreenConfigurationListReq - 162, // 161: WSMessage.screenConfigurationListResp:type_name -> ScreenConfigurationListResp - 163, // 162: WSMessage.screenConfigurationWriteReq:type_name -> ScreenConfigurationWriteReq - 164, // 163: WSMessage.screenConfigurationWriteResp:type_name -> ScreenConfigurationWriteResp - 165, // 164: WSMessage.selectedImagePixelsReq:type_name -> SelectedImagePixelsReq - 166, // 165: WSMessage.selectedImagePixelsResp:type_name -> SelectedImagePixelsResp - 167, // 166: WSMessage.selectedImagePixelsWriteReq:type_name -> SelectedImagePixelsWriteReq - 168, // 167: WSMessage.selectedImagePixelsWriteResp:type_name -> SelectedImagePixelsWriteResp - 169, // 168: WSMessage.selectedScanEntriesReq:type_name -> SelectedScanEntriesReq - 170, // 169: WSMessage.selectedScanEntriesResp:type_name -> SelectedScanEntriesResp - 171, // 170: WSMessage.selectedScanEntriesWriteReq:type_name -> SelectedScanEntriesWriteReq - 172, // 171: WSMessage.selectedScanEntriesWriteResp:type_name -> SelectedScanEntriesWriteResp - 173, // 172: WSMessage.sendUserNotificationReq:type_name -> SendUserNotificationReq - 174, // 173: WSMessage.sendUserNotificationResp:type_name -> SendUserNotificationResp - 175, // 174: WSMessage.spectrumReq:type_name -> SpectrumReq - 176, // 175: WSMessage.spectrumResp:type_name -> SpectrumResp - 177, // 176: WSMessage.tagCreateReq:type_name -> TagCreateReq - 178, // 177: WSMessage.tagCreateResp:type_name -> TagCreateResp - 179, // 178: WSMessage.tagDeleteReq:type_name -> TagDeleteReq - 180, // 179: WSMessage.tagDeleteResp:type_name -> TagDeleteResp - 181, // 180: WSMessage.tagListReq:type_name -> TagListReq - 182, // 181: WSMessage.tagListResp:type_name -> TagListResp - 183, // 182: WSMessage.userAddRoleReq:type_name -> UserAddRoleReq - 184, // 183: WSMessage.userAddRoleResp:type_name -> UserAddRoleResp - 185, // 184: WSMessage.userDeleteRoleReq:type_name -> UserDeleteRoleReq - 186, // 185: WSMessage.userDeleteRoleResp:type_name -> UserDeleteRoleResp - 187, // 186: WSMessage.userDetailsReq:type_name -> UserDetailsReq - 188, // 187: WSMessage.userDetailsResp:type_name -> UserDetailsResp - 189, // 188: WSMessage.userDetailsWriteReq:type_name -> UserDetailsWriteReq - 190, // 189: WSMessage.userDetailsWriteResp:type_name -> UserDetailsWriteResp - 191, // 190: WSMessage.userGroupAddAdminReq:type_name -> UserGroupAddAdminReq - 192, // 191: WSMessage.userGroupAddAdminResp:type_name -> UserGroupAddAdminResp - 193, // 192: WSMessage.userGroupAddMemberReq:type_name -> UserGroupAddMemberReq - 194, // 193: WSMessage.userGroupAddMemberResp:type_name -> UserGroupAddMemberResp - 195, // 194: WSMessage.userGroupAddViewerReq:type_name -> UserGroupAddViewerReq - 196, // 195: WSMessage.userGroupAddViewerResp:type_name -> UserGroupAddViewerResp - 197, // 196: WSMessage.userGroupCreateReq:type_name -> UserGroupCreateReq - 198, // 197: WSMessage.userGroupCreateResp:type_name -> UserGroupCreateResp - 199, // 198: WSMessage.userGroupDeleteAdminReq:type_name -> UserGroupDeleteAdminReq - 200, // 199: WSMessage.userGroupDeleteAdminResp:type_name -> UserGroupDeleteAdminResp - 201, // 200: WSMessage.userGroupDeleteMemberReq:type_name -> UserGroupDeleteMemberReq - 202, // 201: WSMessage.userGroupDeleteMemberResp:type_name -> UserGroupDeleteMemberResp - 203, // 202: WSMessage.userGroupDeleteReq:type_name -> UserGroupDeleteReq - 204, // 203: WSMessage.userGroupDeleteResp:type_name -> UserGroupDeleteResp - 205, // 204: WSMessage.userGroupDeleteViewerReq:type_name -> UserGroupDeleteViewerReq - 206, // 205: WSMessage.userGroupDeleteViewerResp:type_name -> UserGroupDeleteViewerResp - 207, // 206: WSMessage.userGroupIgnoreJoinReq:type_name -> UserGroupIgnoreJoinReq - 208, // 207: WSMessage.userGroupIgnoreJoinResp:type_name -> UserGroupIgnoreJoinResp - 209, // 208: WSMessage.userGroupJoinListReq:type_name -> UserGroupJoinListReq - 210, // 209: WSMessage.userGroupJoinListResp:type_name -> UserGroupJoinListResp - 211, // 210: WSMessage.userGroupJoinReq:type_name -> UserGroupJoinReq - 212, // 211: WSMessage.userGroupJoinResp:type_name -> UserGroupJoinResp - 213, // 212: WSMessage.userGroupListJoinableReq:type_name -> UserGroupListJoinableReq - 214, // 213: WSMessage.userGroupListJoinableResp:type_name -> UserGroupListJoinableResp - 215, // 214: WSMessage.userGroupListReq:type_name -> UserGroupListReq - 216, // 215: WSMessage.userGroupListResp:type_name -> UserGroupListResp - 217, // 216: WSMessage.userGroupReq:type_name -> UserGroupReq - 218, // 217: WSMessage.userGroupResp:type_name -> UserGroupResp - 219, // 218: WSMessage.userGroupSetNameReq:type_name -> UserGroupSetNameReq - 220, // 219: WSMessage.userGroupSetNameResp:type_name -> UserGroupSetNameResp - 221, // 220: WSMessage.userListReq:type_name -> UserListReq - 222, // 221: WSMessage.userListResp:type_name -> UserListResp - 223, // 222: WSMessage.userNotificationReq:type_name -> UserNotificationReq - 224, // 223: WSMessage.userNotificationResp:type_name -> UserNotificationResp - 225, // 224: WSMessage.userNotificationSettingsReq:type_name -> UserNotificationSettingsReq - 226, // 225: WSMessage.userNotificationSettingsResp:type_name -> UserNotificationSettingsResp - 227, // 226: WSMessage.userNotificationSettingsUpd:type_name -> UserNotificationSettingsUpd - 228, // 227: WSMessage.userNotificationSettingsWriteReq:type_name -> UserNotificationSettingsWriteReq - 229, // 228: WSMessage.userNotificationSettingsWriteResp:type_name -> UserNotificationSettingsWriteResp - 230, // 229: WSMessage.userNotificationUpd:type_name -> UserNotificationUpd - 231, // 230: WSMessage.userRoleListReq:type_name -> UserRoleListReq - 232, // 231: WSMessage.userRoleListResp:type_name -> UserRoleListResp - 233, // 232: WSMessage.userRolesListReq:type_name -> UserRolesListReq - 234, // 233: WSMessage.userRolesListResp:type_name -> UserRolesListResp - 235, // 234: WSMessage.userSearchReq:type_name -> UserSearchReq - 236, // 235: WSMessage.userSearchResp:type_name -> UserSearchResp - 237, // 236: WSMessage.widgetDataGetReq:type_name -> WidgetDataGetReq - 238, // 237: WSMessage.widgetDataGetResp:type_name -> WidgetDataGetResp - 239, // 238: WSMessage.widgetDataWriteReq:type_name -> WidgetDataWriteReq - 240, // 239: WSMessage.widgetDataWriteResp:type_name -> WidgetDataWriteResp - 241, // 240: WSMessage.zenodoDOIGetReq:type_name -> ZenodoDOIGetReq - 242, // 241: WSMessage.zenodoDOIGetResp:type_name -> ZenodoDOIGetResp - 242, // [242:242] is the sub-list for method output_type - 242, // [242:242] is the sub-list for method input_type - 242, // [242:242] is the sub-list for extension type_name - 242, // [242:242] is the sub-list for extension extendee - 0, // [0:242] is the sub-list for field type_name + 155, // 154: WSMessage.scanTriggerReImportUpd:type_name -> ScanTriggerReImportUpd + 156, // 155: WSMessage.scanUploadReq:type_name -> ScanUploadReq + 157, // 156: WSMessage.scanUploadResp:type_name -> ScanUploadResp + 158, // 157: WSMessage.scanUploadUpd:type_name -> ScanUploadUpd + 159, // 158: WSMessage.screenConfigurationDeleteReq:type_name -> ScreenConfigurationDeleteReq + 160, // 159: WSMessage.screenConfigurationDeleteResp:type_name -> ScreenConfigurationDeleteResp + 161, // 160: WSMessage.screenConfigurationGetReq:type_name -> ScreenConfigurationGetReq + 162, // 161: WSMessage.screenConfigurationGetResp:type_name -> ScreenConfigurationGetResp + 163, // 162: WSMessage.screenConfigurationListReq:type_name -> ScreenConfigurationListReq + 164, // 163: WSMessage.screenConfigurationListResp:type_name -> ScreenConfigurationListResp + 165, // 164: WSMessage.screenConfigurationWriteReq:type_name -> ScreenConfigurationWriteReq + 166, // 165: WSMessage.screenConfigurationWriteResp:type_name -> ScreenConfigurationWriteResp + 167, // 166: WSMessage.selectedImagePixelsReq:type_name -> SelectedImagePixelsReq + 168, // 167: WSMessage.selectedImagePixelsResp:type_name -> SelectedImagePixelsResp + 169, // 168: WSMessage.selectedImagePixelsWriteReq:type_name -> SelectedImagePixelsWriteReq + 170, // 169: WSMessage.selectedImagePixelsWriteResp:type_name -> SelectedImagePixelsWriteResp + 171, // 170: WSMessage.selectedScanEntriesReq:type_name -> SelectedScanEntriesReq + 172, // 171: WSMessage.selectedScanEntriesResp:type_name -> SelectedScanEntriesResp + 173, // 172: WSMessage.selectedScanEntriesWriteReq:type_name -> SelectedScanEntriesWriteReq + 174, // 173: WSMessage.selectedScanEntriesWriteResp:type_name -> SelectedScanEntriesWriteResp + 175, // 174: WSMessage.sendUserNotificationReq:type_name -> SendUserNotificationReq + 176, // 175: WSMessage.sendUserNotificationResp:type_name -> SendUserNotificationResp + 177, // 176: WSMessage.spectrumReq:type_name -> SpectrumReq + 178, // 177: WSMessage.spectrumResp:type_name -> SpectrumResp + 179, // 178: WSMessage.tagCreateReq:type_name -> TagCreateReq + 180, // 179: WSMessage.tagCreateResp:type_name -> TagCreateResp + 181, // 180: WSMessage.tagDeleteReq:type_name -> TagDeleteReq + 182, // 181: WSMessage.tagDeleteResp:type_name -> TagDeleteResp + 183, // 182: WSMessage.tagListReq:type_name -> TagListReq + 184, // 183: WSMessage.tagListResp:type_name -> TagListResp + 185, // 184: WSMessage.userAddRoleReq:type_name -> UserAddRoleReq + 186, // 185: WSMessage.userAddRoleResp:type_name -> UserAddRoleResp + 187, // 186: WSMessage.userDeleteRoleReq:type_name -> UserDeleteRoleReq + 188, // 187: WSMessage.userDeleteRoleResp:type_name -> UserDeleteRoleResp + 189, // 188: WSMessage.userDetailsReq:type_name -> UserDetailsReq + 190, // 189: WSMessage.userDetailsResp:type_name -> UserDetailsResp + 191, // 190: WSMessage.userDetailsWriteReq:type_name -> UserDetailsWriteReq + 192, // 191: WSMessage.userDetailsWriteResp:type_name -> UserDetailsWriteResp + 193, // 192: WSMessage.userGroupAddAdminReq:type_name -> UserGroupAddAdminReq + 194, // 193: WSMessage.userGroupAddAdminResp:type_name -> UserGroupAddAdminResp + 195, // 194: WSMessage.userGroupAddMemberReq:type_name -> UserGroupAddMemberReq + 196, // 195: WSMessage.userGroupAddMemberResp:type_name -> UserGroupAddMemberResp + 197, // 196: WSMessage.userGroupAddViewerReq:type_name -> UserGroupAddViewerReq + 198, // 197: WSMessage.userGroupAddViewerResp:type_name -> UserGroupAddViewerResp + 199, // 198: WSMessage.userGroupCreateReq:type_name -> UserGroupCreateReq + 200, // 199: WSMessage.userGroupCreateResp:type_name -> UserGroupCreateResp + 201, // 200: WSMessage.userGroupDeleteAdminReq:type_name -> UserGroupDeleteAdminReq + 202, // 201: WSMessage.userGroupDeleteAdminResp:type_name -> UserGroupDeleteAdminResp + 203, // 202: WSMessage.userGroupDeleteMemberReq:type_name -> UserGroupDeleteMemberReq + 204, // 203: WSMessage.userGroupDeleteMemberResp:type_name -> UserGroupDeleteMemberResp + 205, // 204: WSMessage.userGroupDeleteReq:type_name -> UserGroupDeleteReq + 206, // 205: WSMessage.userGroupDeleteResp:type_name -> UserGroupDeleteResp + 207, // 206: WSMessage.userGroupDeleteViewerReq:type_name -> UserGroupDeleteViewerReq + 208, // 207: WSMessage.userGroupDeleteViewerResp:type_name -> UserGroupDeleteViewerResp + 209, // 208: WSMessage.userGroupIgnoreJoinReq:type_name -> UserGroupIgnoreJoinReq + 210, // 209: WSMessage.userGroupIgnoreJoinResp:type_name -> UserGroupIgnoreJoinResp + 211, // 210: WSMessage.userGroupJoinListReq:type_name -> UserGroupJoinListReq + 212, // 211: WSMessage.userGroupJoinListResp:type_name -> UserGroupJoinListResp + 213, // 212: WSMessage.userGroupJoinReq:type_name -> UserGroupJoinReq + 214, // 213: WSMessage.userGroupJoinResp:type_name -> UserGroupJoinResp + 215, // 214: WSMessage.userGroupListJoinableReq:type_name -> UserGroupListJoinableReq + 216, // 215: WSMessage.userGroupListJoinableResp:type_name -> UserGroupListJoinableResp + 217, // 216: WSMessage.userGroupListReq:type_name -> UserGroupListReq + 218, // 217: WSMessage.userGroupListResp:type_name -> UserGroupListResp + 219, // 218: WSMessage.userGroupReq:type_name -> UserGroupReq + 220, // 219: WSMessage.userGroupResp:type_name -> UserGroupResp + 221, // 220: WSMessage.userGroupSetNameReq:type_name -> UserGroupSetNameReq + 222, // 221: WSMessage.userGroupSetNameResp:type_name -> UserGroupSetNameResp + 223, // 222: WSMessage.userListReq:type_name -> UserListReq + 224, // 223: WSMessage.userListResp:type_name -> UserListResp + 225, // 224: WSMessage.userNotificationReq:type_name -> UserNotificationReq + 226, // 225: WSMessage.userNotificationResp:type_name -> UserNotificationResp + 227, // 226: WSMessage.userNotificationSettingsReq:type_name -> UserNotificationSettingsReq + 228, // 227: WSMessage.userNotificationSettingsResp:type_name -> UserNotificationSettingsResp + 229, // 228: WSMessage.userNotificationSettingsUpd:type_name -> UserNotificationSettingsUpd + 230, // 229: WSMessage.userNotificationSettingsWriteReq:type_name -> UserNotificationSettingsWriteReq + 231, // 230: WSMessage.userNotificationSettingsWriteResp:type_name -> UserNotificationSettingsWriteResp + 232, // 231: WSMessage.userNotificationUpd:type_name -> UserNotificationUpd + 233, // 232: WSMessage.userRoleListReq:type_name -> UserRoleListReq + 234, // 233: WSMessage.userRoleListResp:type_name -> UserRoleListResp + 235, // 234: WSMessage.userRolesListReq:type_name -> UserRolesListReq + 236, // 235: WSMessage.userRolesListResp:type_name -> UserRolesListResp + 237, // 236: WSMessage.userSearchReq:type_name -> UserSearchReq + 238, // 237: WSMessage.userSearchResp:type_name -> UserSearchResp + 239, // 238: WSMessage.widgetDataGetReq:type_name -> WidgetDataGetReq + 240, // 239: WSMessage.widgetDataGetResp:type_name -> WidgetDataGetResp + 241, // 240: WSMessage.widgetDataWriteReq:type_name -> WidgetDataWriteReq + 242, // 241: WSMessage.widgetDataWriteResp:type_name -> WidgetDataWriteResp + 243, // 242: WSMessage.zenodoDOIGetReq:type_name -> ZenodoDOIGetReq + 244, // 243: WSMessage.zenodoDOIGetResp:type_name -> ZenodoDOIGetResp + 244, // [244:244] is the sub-list for method output_type + 244, // [244:244] is the sub-list for method input_type + 244, // [244:244] is the sub-list for extension type_name + 244, // [244:244] is the sub-list for extension extendee + 0, // [0:244] is the sub-list for field type_name } func init() { file_websocket_proto_init() } @@ -5545,8 +5586,10 @@ func file_websocket_proto_init() { (*WSMessage_ScanMetaWriteResp)(nil), (*WSMessage_ScanTriggerReImportReq)(nil), (*WSMessage_ScanTriggerReImportResp)(nil), + (*WSMessage_ScanTriggerReImportUpd)(nil), (*WSMessage_ScanUploadReq)(nil), (*WSMessage_ScanUploadResp)(nil), + (*WSMessage_ScanUploadUpd)(nil), (*WSMessage_ScreenConfigurationDeleteReq)(nil), (*WSMessage_ScreenConfigurationDeleteResp)(nil), (*WSMessage_ScreenConfigurationGetReq)(nil), diff --git a/internal/cmd-line-tools/api-integration-test/testQuant.go b/internal/cmd-line-tools/api-integration-test/testQuant.go index 74a7f640..a129642d 100644 --- a/internal/cmd-line-tools/api-integration-test/testQuant.go +++ b/internal/cmd-line-tools/api-integration-test/testQuant.go @@ -92,12 +92,12 @@ func testQuants(apiHost string) { "FeCO3-T", }, Status: &protos.JobStatus{ - JobID: quantId, + JobId: quantId, Status: 5, Message: "Nodes ran: 7", EndUnixTimeSec: 1652813627, OutputFilePath: "UserContent/5df311ed8a0b5d0ebf5fb476/089063943/Quantifications", - PiquantLogs: quantLogs, + OtherLogFiles: quantLogs, }, }, }) diff --git a/internal/cmd-line-tools/v3-importer/quantifications.go b/internal/cmd-line-tools/v3-importer/quantifications.go index 4f00ba04..17e32964 100644 --- a/internal/cmd-line-tools/v3-importer/quantifications.go +++ b/internal/cmd-line-tools/v3-importer/quantifications.go @@ -227,7 +227,7 @@ func migrateQuant(jobSummary SrcJobSummaryItem, overrideSrcPath string, coll *mo case SrcJobPreparingNodes: jobStatus = protos.JobStatus_PREPARING_NODES case SrcJobNodesRunning: - jobStatus = protos.JobStatus_NODES_RUNNING + jobStatus = protos.JobStatus_RUNNING case SrcJobGatheringResults: jobStatus = protos.JobStatus_GATHERING_RESULTS case SrcJobComplete: @@ -265,12 +265,12 @@ func migrateQuant(jobSummary SrcJobSummaryItem, overrideSrcPath string, coll *mo }, Elements: jobSummary.Elements, Status: &protos.JobStatus{ - JobID: jobSummary.JobID, + JobId: jobSummary.JobID, Status: jobStatus, Message: jobSummary.Message, EndUnixTimeSec: uint32(jobSummary.EndUnixTime), OutputFilePath: path.Join("Quantifications", jobSummary.Params.DatasetID, utils.FixUserId(jobSummary.Params.Creator.UserID)), //jobSummary.OutputFilePath, - PiquantLogs: jobSummary.PiquantLogList, + OtherLogFiles: jobSummary.PiquantLogList, }, }