// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.34.2
// 	protoc        (unknown)
// source: v1beta1/dm.proto

package v1beta1

import (
	_ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options"
	_ "google.golang.org/genproto/googleapis/api/annotations"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// The connection type used to connect to the source database.
type ConnType int32

const (
	// The connection type is unspecified.
	ConnType_CONN_TYPE_UNSPECIFIED ConnType = 0
	// Connect over the public internet.
	ConnType_PUBLIC ConnType = 1
	// Connect via Private Link/Private Endpoint.
	ConnType_PRIVATE_LINK ConnType = 2
)

// Enum value maps for ConnType.
var (
	ConnType_name = map[int32]string{
		0: "CONN_TYPE_UNSPECIFIED",
		1: "PUBLIC",
		2: "PRIVATE_LINK",
	}
	ConnType_value = map[string]int32{
		"CONN_TYPE_UNSPECIFIED": 0,
		"PUBLIC":                1,
		"PRIVATE_LINK":          2,
	}
)

func (x ConnType) Enum() *ConnType {
	p := new(ConnType)
	*p = x
	return p
}

func (x ConnType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ConnType) Descriptor() protoreflect.EnumDescriptor {
	return file_v1beta1_dm_proto_enumTypes[0].Descriptor()
}

func (ConnType) Type() protoreflect.EnumType {
	return &file_v1beta1_dm_proto_enumTypes[0]
}

func (x ConnType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use ConnType.Descriptor instead.
func (ConnType) EnumDescriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{0}
}

// Types of prechecks performed before starting a migration.
type PrecheckItemType int32

const (
	// The precheck type is unspecified.
	PrecheckItemType_PRECHECK_ITEM_TYPE_UNSPECIFIED PrecheckItemType = 0
	// Check source has required dump/export privileges.
	PrecheckItemType_DUMP_PRIVILEGE_CHECKING PrecheckItemType = 1
	// Check source has required replication privileges.
	PrecheckItemType_REPLICATION_PRIVILEGE_CHECKING PrecheckItemType = 2
	// Check source database version compatibility.
	PrecheckItemType_VERSION_CHECKING PrecheckItemType = 3
	// Check source server_id configuration.
	PrecheckItemType_SERVER_ID_CHECKING PrecheckItemType = 4
	// Check whether binlog is enabled on source.
	PrecheckItemType_BINLOG_ENABLE_CHECKING PrecheckItemType = 5
	// Check binlog format (e.g., ROW) on source.
	PrecheckItemType_BINLOG_FORMAT_CHECKING PrecheckItemType = 6
	// Check binlog row image setting.
	PrecheckItemType_BINLOG_ROW_IMAGE_CHECKING PrecheckItemType = 7
	// Check table/schema compatibility with target.
	PrecheckItemType_TABLE_SCHEMA_CHECKING PrecheckItemType = 8
	// Check binlog database-level filtering configuration.
	PrecheckItemType_BINLOG_DB_CHECKING PrecheckItemType = 9
	// Check concurrent connections limit/availability.
	PrecheckItemType_CONN_NUMBER_CHECKING PrecheckItemType = 10
	// Check target database privileges.
	PrecheckItemType_TARGET_DB_PRIVILEGE_CHECKING PrecheckItemType = 11
	// Check saved meta/binlog position validity.
	PrecheckItemType_META_POSITION_CHECKING PrecheckItemType = 12
	// Check target tables are empty for Lightning load.
	PrecheckItemType_LIGHTNING_TABLE_EMPTY_CHECKING PrecheckItemType = 13
	// Check primary key settings on source tables.
	PrecheckItemType_PRIMARY_KEY_CHECKING PrecheckItemType = 14
)

// Enum value maps for PrecheckItemType.
var (
	PrecheckItemType_name = map[int32]string{
		0:  "PRECHECK_ITEM_TYPE_UNSPECIFIED",
		1:  "DUMP_PRIVILEGE_CHECKING",
		2:  "REPLICATION_PRIVILEGE_CHECKING",
		3:  "VERSION_CHECKING",
		4:  "SERVER_ID_CHECKING",
		5:  "BINLOG_ENABLE_CHECKING",
		6:  "BINLOG_FORMAT_CHECKING",
		7:  "BINLOG_ROW_IMAGE_CHECKING",
		8:  "TABLE_SCHEMA_CHECKING",
		9:  "BINLOG_DB_CHECKING",
		10: "CONN_NUMBER_CHECKING",
		11: "TARGET_DB_PRIVILEGE_CHECKING",
		12: "META_POSITION_CHECKING",
		13: "LIGHTNING_TABLE_EMPTY_CHECKING",
		14: "PRIMARY_KEY_CHECKING",
	}
	PrecheckItemType_value = map[string]int32{
		"PRECHECK_ITEM_TYPE_UNSPECIFIED": 0,
		"DUMP_PRIVILEGE_CHECKING":        1,
		"REPLICATION_PRIVILEGE_CHECKING": 2,
		"VERSION_CHECKING":               3,
		"SERVER_ID_CHECKING":             4,
		"BINLOG_ENABLE_CHECKING":         5,
		"BINLOG_FORMAT_CHECKING":         6,
		"BINLOG_ROW_IMAGE_CHECKING":      7,
		"TABLE_SCHEMA_CHECKING":          8,
		"BINLOG_DB_CHECKING":             9,
		"CONN_NUMBER_CHECKING":           10,
		"TARGET_DB_PRIVILEGE_CHECKING":   11,
		"META_POSITION_CHECKING":         12,
		"LIGHTNING_TABLE_EMPTY_CHECKING": 13,
		"PRIMARY_KEY_CHECKING":           14,
	}
)

func (x PrecheckItemType) Enum() *PrecheckItemType {
	p := new(PrecheckItemType)
	*p = x
	return p
}

func (x PrecheckItemType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (PrecheckItemType) Descriptor() protoreflect.EnumDescriptor {
	return file_v1beta1_dm_proto_enumTypes[1].Descriptor()
}

func (PrecheckItemType) Type() protoreflect.EnumType {
	return &file_v1beta1_dm_proto_enumTypes[1]
}

func (x PrecheckItemType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use PrecheckItemType.Descriptor instead.
func (PrecheckItemType) EnumDescriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{1}
}

// Migration task mode.
type TaskMode int32

const (
	// Mode is unspecified.
	TaskMode_MODE_UNSPECIFIED TaskMode = 0
	// Full + incremental migration (all phases).
	TaskMode_ALL TaskMode = 1
	// Incremental-only migration (replication).
	TaskMode_INCREMENTAL TaskMode = 2
)

// Enum value maps for TaskMode.
var (
	TaskMode_name = map[int32]string{
		0: "MODE_UNSPECIFIED",
		1: "ALL",
		2: "INCREMENTAL",
	}
	TaskMode_value = map[string]int32{
		"MODE_UNSPECIFIED": 0,
		"ALL":              1,
		"INCREMENTAL":      2,
	}
)

func (x TaskMode) Enum() *TaskMode {
	p := new(TaskMode)
	*p = x
	return p
}

func (x TaskMode) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (TaskMode) Descriptor() protoreflect.EnumDescriptor {
	return file_v1beta1_dm_proto_enumTypes[2].Descriptor()
}

func (TaskMode) Type() protoreflect.EnumType {
	return &file_v1beta1_dm_proto_enumTypes[2]
}

func (x TaskMode) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use TaskMode.Descriptor instead.
func (TaskMode) EnumDescriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{2}
}

// Migration shard mode.
type TaskShardMode int32

const (
	// Shard mode is unspecified.
	TaskShardMode_SHARD_MODE_UNSPECIFIED TaskShardMode = 0
	// Use pessimistic shard DDL coordination.
	TaskShardMode_PESSIMISTIC TaskShardMode = 1
	// Use optimistic shard DDL coordination.
	TaskShardMode_OPTIMISTIC TaskShardMode = 2
)

// Enum value maps for TaskShardMode.
var (
	TaskShardMode_name = map[int32]string{
		0: "SHARD_MODE_UNSPECIFIED",
		1: "PESSIMISTIC",
		2: "OPTIMISTIC",
	}
	TaskShardMode_value = map[string]int32{
		"SHARD_MODE_UNSPECIFIED": 0,
		"PESSIMISTIC":            1,
		"OPTIMISTIC":             2,
	}
)

func (x TaskShardMode) Enum() *TaskShardMode {
	p := new(TaskShardMode)
	*p = x
	return p
}

func (x TaskShardMode) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (TaskShardMode) Descriptor() protoreflect.EnumDescriptor {
	return file_v1beta1_dm_proto_enumTypes[3].Descriptor()
}

func (TaskShardMode) Type() protoreflect.EnumType {
	return &file_v1beta1_dm_proto_enumTypes[3]
}

func (x TaskShardMode) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use TaskShardMode.Descriptor instead.
func (TaskShardMode) EnumDescriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{3}
}

type MigrationPrecheck_Status int32

const (
	// Status is unspecified.
	MigrationPrecheck_STATUS_UNSPECIFIED MigrationPrecheck_Status = 0
	// Precheck is in progress.
	MigrationPrecheck_RUNNING MigrationPrecheck_Status = 1
	// Precheck finished successfully.
	MigrationPrecheck_FINISHED MigrationPrecheck_Status = 2
	// Precheck is pending.
	MigrationPrecheck_PENDING MigrationPrecheck_Status = 3
	// Precheck failed.
	MigrationPrecheck_FAILED MigrationPrecheck_Status = 4
	// Precheck is canceled.
	MigrationPrecheck_CANCELED MigrationPrecheck_Status = 5
)

// Enum value maps for MigrationPrecheck_Status.
var (
	MigrationPrecheck_Status_name = map[int32]string{
		0: "STATUS_UNSPECIFIED",
		1: "RUNNING",
		2: "FINISHED",
		3: "PENDING",
		4: "FAILED",
		5: "CANCELED",
	}
	MigrationPrecheck_Status_value = map[string]int32{
		"STATUS_UNSPECIFIED": 0,
		"RUNNING":            1,
		"FINISHED":           2,
		"PENDING":            3,
		"FAILED":             4,
		"CANCELED":           5,
	}
)

func (x MigrationPrecheck_Status) Enum() *MigrationPrecheck_Status {
	p := new(MigrationPrecheck_Status)
	*p = x
	return p
}

func (x MigrationPrecheck_Status) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (MigrationPrecheck_Status) Descriptor() protoreflect.EnumDescriptor {
	return file_v1beta1_dm_proto_enumTypes[4].Descriptor()
}

func (MigrationPrecheck_Status) Type() protoreflect.EnumType {
	return &file_v1beta1_dm_proto_enumTypes[4]
}

func (x MigrationPrecheck_Status) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use MigrationPrecheck_Status.Descriptor instead.
func (MigrationPrecheck_Status) EnumDescriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{2, 0}
}

type PrecheckItem_Status int32

const (
	// Status is unspecified.
	PrecheckItem_STATUS_UNSPECIFIED PrecheckItem_Status = 0
	// Check passed successfully.
	PrecheckItem_SUCCESS PrecheckItem_Status = 1
	// Check resulted in a warning.
	PrecheckItem_WARNING PrecheckItem_Status = 2
	// Check failed.
	PrecheckItem_FAILED PrecheckItem_Status = 3
)

// Enum value maps for PrecheckItem_Status.
var (
	PrecheckItem_Status_name = map[int32]string{
		0: "STATUS_UNSPECIFIED",
		1: "SUCCESS",
		2: "WARNING",
		3: "FAILED",
	}
	PrecheckItem_Status_value = map[string]int32{
		"STATUS_UNSPECIFIED": 0,
		"SUCCESS":            1,
		"WARNING":            2,
		"FAILED":             3,
	}
)

func (x PrecheckItem_Status) Enum() *PrecheckItem_Status {
	p := new(PrecheckItem_Status)
	*p = x
	return p
}

func (x PrecheckItem_Status) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (PrecheckItem_Status) Descriptor() protoreflect.EnumDescriptor {
	return file_v1beta1_dm_proto_enumTypes[5].Descriptor()
}

func (PrecheckItem_Status) Type() protoreflect.EnumType {
	return &file_v1beta1_dm_proto_enumTypes[5]
}

func (x PrecheckItem_Status) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use PrecheckItem_Status.Descriptor instead.
func (PrecheckItem_Status) EnumDescriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{4, 0}
}

// Overall state of a migration.
type Migration_State int32

const (
	// State is unspecified.
	Migration_STATE_UNSPECIFIED Migration_State = 0
	// Task is being created.
	Migration_CREATING Migration_State = 1
	// Task is actively running.
	Migration_RUNNING Migration_State = 2
	// Task is paused.
	Migration_PAUSED Migration_State = 3
	// Task failed with error.
	Migration_FAILED Migration_State = 5
	// Task is being deleted.
	Migration_DELETING Migration_State = 6
)

// Enum value maps for Migration_State.
var (
	Migration_State_name = map[int32]string{
		0: "STATE_UNSPECIFIED",
		1: "CREATING",
		2: "RUNNING",
		3: "PAUSED",
		5: "FAILED",
		6: "DELETING",
	}
	Migration_State_value = map[string]int32{
		"STATE_UNSPECIFIED": 0,
		"CREATING":          1,
		"RUNNING":           2,
		"PAUSED":            3,
		"FAILED":            5,
		"DELETING":          6,
	}
)

func (x Migration_State) Enum() *Migration_State {
	p := new(Migration_State)
	*p = x
	return p
}

func (x Migration_State) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Migration_State) Descriptor() protoreflect.EnumDescriptor {
	return file_v1beta1_dm_proto_enumTypes[6].Descriptor()
}

func (Migration_State) Type() protoreflect.EnumType {
	return &file_v1beta1_dm_proto_enumTypes[6]
}

func (x Migration_State) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Migration_State.Descriptor instead.
func (Migration_State) EnumDescriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{8, 0}
}

// The current step within a subtask.
type SubTask_Step int32

const (
	// Step is unspecified.
	SubTask_STEP_UNSPECIFIED SubTask_Step = 0
	// Dump/export data from source.
	SubTask_DUMP SubTask_Step = 1
	// Load/import data into target.
	SubTask_LOAD SubTask_Step = 2
	// Sync/replicate binlog changes.
	SubTask_SYNC SubTask_Step = 3
)

// Enum value maps for SubTask_Step.
var (
	SubTask_Step_name = map[int32]string{
		0: "STEP_UNSPECIFIED",
		1: "DUMP",
		2: "LOAD",
		3: "SYNC",
	}
	SubTask_Step_value = map[string]int32{
		"STEP_UNSPECIFIED": 0,
		"DUMP":             1,
		"LOAD":             2,
		"SYNC":             3,
	}
)

func (x SubTask_Step) Enum() *SubTask_Step {
	p := new(SubTask_Step)
	*p = x
	return p
}

func (x SubTask_Step) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (SubTask_Step) Descriptor() protoreflect.EnumDescriptor {
	return file_v1beta1_dm_proto_enumTypes[7].Descriptor()
}

func (SubTask_Step) Type() protoreflect.EnumType {
	return &file_v1beta1_dm_proto_enumTypes[7]
}

func (x SubTask_Step) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use SubTask_Step.Descriptor instead.
func (SubTask_Step) EnumDescriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{9, 0}
}

// The high-level lifecycle stage of a subtask.
type SubTask_Stage int32

const (
	// Stage is unspecified.
	SubTask_STAGE_UNSPECIFIED SubTask_Stage = 0
	// Subtask is running.
	SubTask_RUNNING SubTask_Stage = 1
	// Subtask is paused.
	SubTask_PAUSED SubTask_Stage = 2
	// Subtask failed.
	SubTask_FAILED SubTask_Stage = 3
	// Subtask finished successfully.
	SubTask_FINISHED SubTask_Stage = 4
	// Subtask stage is unknown.
	SubTask_UNKNOWN SubTask_Stage = 5
)

// Enum value maps for SubTask_Stage.
var (
	SubTask_Stage_name = map[int32]string{
		0: "STAGE_UNSPECIFIED",
		1: "RUNNING",
		2: "PAUSED",
		3: "FAILED",
		4: "FINISHED",
		5: "UNKNOWN",
	}
	SubTask_Stage_value = map[string]int32{
		"STAGE_UNSPECIFIED": 0,
		"RUNNING":           1,
		"PAUSED":            2,
		"FAILED":            3,
		"FINISHED":          4,
		"UNKNOWN":           5,
	}
)

func (x SubTask_Stage) Enum() *SubTask_Stage {
	p := new(SubTask_Stage)
	*p = x
	return p
}

func (x SubTask_Stage) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (SubTask_Stage) Descriptor() protoreflect.EnumDescriptor {
	return file_v1beta1_dm_proto_enumTypes[8].Descriptor()
}

func (SubTask_Stage) Type() protoreflect.EnumType {
	return &file_v1beta1_dm_proto_enumTypes[8]
}

func (x SubTask_Stage) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use SubTask_Stage.Descriptor instead.
func (SubTask_Stage) EnumDescriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{9, 1}
}

// The source database type.
type Source_SourceType int32

const (
	// Source type is unspecified.
	Source_SOURCE_TYPE_UNSPECIFIED Source_SourceType = 0
	// Self-managed MySQL.
	Source_MYSQL Source_SourceType = 1
	// Alibaba Cloud RDS for MySQL.
	Source_ALICLOUD_RDS_MYSQL Source_SourceType = 2
	// Amazon RDS for MySQL.
	Source_AWS_RDS_MYSQL Source_SourceType = 3
)

// Enum value maps for Source_SourceType.
var (
	Source_SourceType_name = map[int32]string{
		0: "SOURCE_TYPE_UNSPECIFIED",
		1: "MYSQL",
		2: "ALICLOUD_RDS_MYSQL",
		3: "AWS_RDS_MYSQL",
	}
	Source_SourceType_value = map[string]int32{
		"SOURCE_TYPE_UNSPECIFIED": 0,
		"MYSQL":                   1,
		"ALICLOUD_RDS_MYSQL":      2,
		"AWS_RDS_MYSQL":           3,
	}
)

func (x Source_SourceType) Enum() *Source_SourceType {
	p := new(Source_SourceType)
	*p = x
	return p
}

func (x Source_SourceType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Source_SourceType) Descriptor() protoreflect.EnumDescriptor {
	return file_v1beta1_dm_proto_enumTypes[9].Descriptor()
}

func (Source_SourceType) Type() protoreflect.EnumType {
	return &file_v1beta1_dm_proto_enumTypes[9]
}

func (x Source_SourceType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Source_SourceType.Descriptor instead.
func (Source_SourceType) EnumDescriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{10, 0}
}

type GetMigrationPrecheckReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The ID of the cluster.
	ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
	// The ID of the precheck.
	PrecheckId string `protobuf:"bytes,2,opt,name=precheck_id,json=precheckId,proto3" json:"precheck_id,omitempty"`
}

func (x *GetMigrationPrecheckReq) Reset() {
	*x = GetMigrationPrecheckReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetMigrationPrecheckReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetMigrationPrecheckReq) ProtoMessage() {}

func (x *GetMigrationPrecheckReq) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetMigrationPrecheckReq.ProtoReflect.Descriptor instead.
func (*GetMigrationPrecheckReq) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{0}
}

func (x *GetMigrationPrecheckReq) GetClusterId() string {
	if x != nil {
		return x.ClusterId
	}
	return ""
}

func (x *GetMigrationPrecheckReq) GetPrecheckId() string {
	if x != nil {
		return x.PrecheckId
	}
	return ""
}

type CancelMigrationPrecheckReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The ID of the cluster.
	ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
	// The ID of the precheck to cancel.
	PrecheckId string `protobuf:"bytes,2,opt,name=precheck_id,json=precheckId,proto3" json:"precheck_id,omitempty"`
}

func (x *CancelMigrationPrecheckReq) Reset() {
	*x = CancelMigrationPrecheckReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CancelMigrationPrecheckReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CancelMigrationPrecheckReq) ProtoMessage() {}

func (x *CancelMigrationPrecheckReq) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CancelMigrationPrecheckReq.ProtoReflect.Descriptor instead.
func (*CancelMigrationPrecheckReq) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{1}
}

func (x *CancelMigrationPrecheckReq) GetClusterId() string {
	if x != nil {
		return x.ClusterId
	}
	return ""
}

func (x *CancelMigrationPrecheckReq) GetPrecheckId() string {
	if x != nil {
		return x.PrecheckId
	}
	return ""
}

type MigrationPrecheck struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The ID of the precheck.
	PrecheckId string `protobuf:"bytes,1,opt,name=precheck_id,json=precheckId,proto3" json:"precheck_id,omitempty"`
	// Total number of precheck items.
	Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
	// Number of failed items.
	FailedCnt int32 `protobuf:"varint,3,opt,name=failed_cnt,json=failedCnt,proto3" json:"failed_cnt,omitempty"`
	// Number of items with warnings.
	WarnCnt int32 `protobuf:"varint,4,opt,name=warn_cnt,json=warnCnt,proto3" json:"warn_cnt,omitempty"`
	// Number of successful items.
	SuccessCnt int32 `protobuf:"varint,5,opt,name=success_cnt,json=successCnt,proto3" json:"success_cnt,omitempty"`
	// Overall status of the precheck.
	Status MigrationPrecheck_Status `protobuf:"varint,6,opt,name=status,proto3,enum=v1beta1.MigrationPrecheck_Status" json:"status,omitempty"`
	// Details for each precheck item.
	Items []*PrecheckItem `protobuf:"bytes,7,rep,name=items,proto3" json:"items,omitempty"`
}

func (x *MigrationPrecheck) Reset() {
	*x = MigrationPrecheck{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MigrationPrecheck) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MigrationPrecheck) ProtoMessage() {}

func (x *MigrationPrecheck) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MigrationPrecheck.ProtoReflect.Descriptor instead.
func (*MigrationPrecheck) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{2}
}

func (x *MigrationPrecheck) GetPrecheckId() string {
	if x != nil {
		return x.PrecheckId
	}
	return ""
}

func (x *MigrationPrecheck) GetTotal() int32 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *MigrationPrecheck) GetFailedCnt() int32 {
	if x != nil {
		return x.FailedCnt
	}
	return 0
}

func (x *MigrationPrecheck) GetWarnCnt() int32 {
	if x != nil {
		return x.WarnCnt
	}
	return 0
}

func (x *MigrationPrecheck) GetSuccessCnt() int32 {
	if x != nil {
		return x.SuccessCnt
	}
	return 0
}

func (x *MigrationPrecheck) GetStatus() MigrationPrecheck_Status {
	if x != nil {
		return x.Status
	}
	return MigrationPrecheck_STATUS_UNSPECIFIED
}

func (x *MigrationPrecheck) GetItems() []*PrecheckItem {
	if x != nil {
		return x.Items
	}
	return nil
}

type CreateMigrationPrecheckResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The ID of the created precheck.
	PrecheckId string `protobuf:"bytes,1,opt,name=precheck_id,json=precheckId,proto3" json:"precheck_id,omitempty"`
}

func (x *CreateMigrationPrecheckResp) Reset() {
	*x = CreateMigrationPrecheckResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CreateMigrationPrecheckResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateMigrationPrecheckResp) ProtoMessage() {}

func (x *CreateMigrationPrecheckResp) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateMigrationPrecheckResp.ProtoReflect.Descriptor instead.
func (*CreateMigrationPrecheckResp) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{3}
}

func (x *CreateMigrationPrecheckResp) GetPrecheckId() string {
	if x != nil {
		return x.PrecheckId
	}
	return ""
}

type PrecheckItem struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Human-readable description of the check.
	Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"`
	// Status of this check.
	Status PrecheckItem_Status `protobuf:"varint,2,opt,name=status,proto3,enum=v1beta1.PrecheckItem_Status" json:"status,omitempty"`
	// Suggested solution if the check failed or warned.
	Solution string `protobuf:"bytes,3,opt,name=solution,proto3" json:"solution,omitempty"`
	// Reason for the failure or warning.
	Reason string `protobuf:"bytes,4,opt,name=reason,proto3" json:"reason,omitempty"`
	// Documentation URL for the solution.
	SolutionDocUrl string `protobuf:"bytes,5,opt,name=solution_doc_url,json=solutionDocUrl,proto3" json:"solution_doc_url,omitempty"`
	// The type of precheck.
	Type PrecheckItemType `protobuf:"varint,6,opt,name=type,proto3,enum=v1beta1.PrecheckItemType" json:"type,omitempty"`
}

func (x *PrecheckItem) Reset() {
	*x = PrecheckItem{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PrecheckItem) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PrecheckItem) ProtoMessage() {}

func (x *PrecheckItem) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PrecheckItem.ProtoReflect.Descriptor instead.
func (*PrecheckItem) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{4}
}

func (x *PrecheckItem) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

func (x *PrecheckItem) GetStatus() PrecheckItem_Status {
	if x != nil {
		return x.Status
	}
	return PrecheckItem_STATUS_UNSPECIFIED
}

func (x *PrecheckItem) GetSolution() string {
	if x != nil {
		return x.Solution
	}
	return ""
}

func (x *PrecheckItem) GetReason() string {
	if x != nil {
		return x.Reason
	}
	return ""
}

func (x *PrecheckItem) GetSolutionDocUrl() string {
	if x != nil {
		return x.SolutionDocUrl
	}
	return ""
}

func (x *PrecheckItem) GetType() PrecheckItemType {
	if x != nil {
		return x.Type
	}
	return PrecheckItemType_PRECHECK_ITEM_TYPE_UNSPECIFIED
}

type CreateMigrationReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The ID of the cluster to create the migration in.
	ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
	// The display name of the migration.
	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// The data sources to migrate from.
	Sources []*Source `protobuf:"bytes,3,rep,name=sources,proto3" json:"sources,omitempty"`
	// The target database credentials.
	Target *Target `protobuf:"bytes,4,opt,name=target,proto3" json:"target,omitempty"`
	// The migration mode (full+incremental or incremental-only).
	Mode TaskMode `protobuf:"varint,5,opt,name=mode,proto3,enum=v1beta1.TaskMode" json:"mode,omitempty"`
	// Optional shard mode for shard DDL coordination.
	ShardMode *TaskShardMode `protobuf:"varint,6,opt,name=shard_mode,json=shardMode,proto3,enum=v1beta1.TaskShardMode,oneof" json:"shard_mode,omitempty"`
}

func (x *CreateMigrationReq) Reset() {
	*x = CreateMigrationReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CreateMigrationReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateMigrationReq) ProtoMessage() {}

func (x *CreateMigrationReq) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_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 CreateMigrationReq.ProtoReflect.Descriptor instead.
func (*CreateMigrationReq) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{5}
}

func (x *CreateMigrationReq) GetClusterId() string {
	if x != nil {
		return x.ClusterId
	}
	return ""
}

func (x *CreateMigrationReq) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *CreateMigrationReq) GetSources() []*Source {
	if x != nil {
		return x.Sources
	}
	return nil
}

func (x *CreateMigrationReq) GetTarget() *Target {
	if x != nil {
		return x.Target
	}
	return nil
}

func (x *CreateMigrationReq) GetMode() TaskMode {
	if x != nil {
		return x.Mode
	}
	return TaskMode_MODE_UNSPECIFIED
}

func (x *CreateMigrationReq) GetShardMode() TaskShardMode {
	if x != nil && x.ShardMode != nil {
		return *x.ShardMode
	}
	return TaskShardMode_SHARD_MODE_UNSPECIFIED
}

type Target struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Target database user.
	User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
	// Target database password.
	Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"`
}

func (x *Target) Reset() {
	*x = Target{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Target) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Target) ProtoMessage() {}

func (x *Target) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[6]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Target.ProtoReflect.Descriptor instead.
func (*Target) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{6}
}

func (x *Target) GetUser() string {
	if x != nil {
		return x.User
	}
	return ""
}

func (x *Target) GetPassword() string {
	if x != nil {
		return x.Password
	}
	return ""
}

type MigrationRule struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Source table pattern to match.
	SourceTable *MigrationRule_Source `protobuf:"bytes,1,opt,name=source_table,json=sourceTable,proto3" json:"source_table,omitempty"`
	// Target table to migrate to.
	TargetTable *MigrationRule_Table `protobuf:"bytes,2,opt,name=target_table,json=targetTable,proto3" json:"target_table,omitempty"`
}

func (x *MigrationRule) Reset() {
	*x = MigrationRule{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MigrationRule) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MigrationRule) ProtoMessage() {}

func (x *MigrationRule) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MigrationRule.ProtoReflect.Descriptor instead.
func (*MigrationRule) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{7}
}

func (x *MigrationRule) GetSourceTable() *MigrationRule_Source {
	if x != nil {
		return x.SourceTable
	}
	return nil
}

func (x *MigrationRule) GetTargetTable() *MigrationRule_Table {
	if x != nil {
		return x.TargetTable
	}
	return nil
}

type Migration struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The unique ID of the migration.
	MigrationId string `protobuf:"bytes,1,opt,name=migration_id,json=migrationId,proto3" json:"migration_id,omitempty"`
	// The display name of the migration.
	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// The list of subtasks composing this migration.
	SubTasks []*SubTask `protobuf:"bytes,3,rep,name=sub_tasks,json=subTasks,proto3" json:"sub_tasks,omitempty"`
	// The target database username used by the migration.
	TargetUser string `protobuf:"bytes,4,opt,name=target_user,json=targetUser,proto3" json:"target_user,omitempty"`
	// The timestamp when the migration was created.
	CreateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	// The migration mode of the migration.
	Mode TaskMode `protobuf:"varint,6,opt,name=mode,proto3,enum=v1beta1.TaskMode" json:"mode,omitempty"`
	// The current state of the migration.
	State Migration_State `protobuf:"varint,7,opt,name=state,proto3,enum=v1beta1.Migration_State" json:"state,omitempty"`
}

func (x *Migration) Reset() {
	*x = Migration{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Migration) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Migration) ProtoMessage() {}

func (x *Migration) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[8]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Migration.ProtoReflect.Descriptor instead.
func (*Migration) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{8}
}

func (x *Migration) GetMigrationId() string {
	if x != nil {
		return x.MigrationId
	}
	return ""
}

func (x *Migration) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *Migration) GetSubTasks() []*SubTask {
	if x != nil {
		return x.SubTasks
	}
	return nil
}

func (x *Migration) GetTargetUser() string {
	if x != nil {
		return x.TargetUser
	}
	return ""
}

func (x *Migration) GetCreateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *Migration) GetMode() TaskMode {
	if x != nil {
		return x.Mode
	}
	return TaskMode_MODE_UNSPECIFIED
}

func (x *Migration) GetState() Migration_State {
	if x != nil {
		return x.State
	}
	return Migration_STATE_UNSPECIFIED
}

type SubTask struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Source configuration for this subtask.
	Source *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"`
	// Current step of the subtask.
	CurrentStep SubTask_Step `protobuf:"varint,2,opt,name=current_step,json=currentStep,proto3,enum=v1beta1.SubTask_Step" json:"current_step,omitempty"`
	// Current stage of the subtask.
	Stage SubTask_Stage `protobuf:"varint,3,opt,name=stage,proto3,enum=v1beta1.SubTask_Stage" json:"stage,omitempty"`
	// Detail of dump phase, if applicable.
	DumpDetail *DumpDetail `protobuf:"bytes,4,opt,name=dump_detail,json=dumpDetail,proto3,oneof" json:"dump_detail,omitempty"`
	// Detail of load phase, if applicable.
	LoadDetail *LoadDetail `protobuf:"bytes,5,opt,name=load_detail,json=loadDetail,proto3,oneof" json:"load_detail,omitempty"`
	// Detail of sync phase, if applicable.
	SyncDetail *SyncDetail `protobuf:"bytes,6,opt,name=sync_detail,json=syncDetail,proto3,oneof" json:"sync_detail,omitempty"`
	// Error message when the subtask fails.
	ErrorMsg *string `protobuf:"bytes,7,opt,name=error_msg,json=errorMsg,proto3,oneof" json:"error_msg,omitempty"`
}

func (x *SubTask) Reset() {
	*x = SubTask{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SubTask) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SubTask) ProtoMessage() {}

func (x *SubTask) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[9]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SubTask.ProtoReflect.Descriptor instead.
func (*SubTask) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{9}
}

func (x *SubTask) GetSource() *Source {
	if x != nil {
		return x.Source
	}
	return nil
}

func (x *SubTask) GetCurrentStep() SubTask_Step {
	if x != nil {
		return x.CurrentStep
	}
	return SubTask_STEP_UNSPECIFIED
}

func (x *SubTask) GetStage() SubTask_Stage {
	if x != nil {
		return x.Stage
	}
	return SubTask_STAGE_UNSPECIFIED
}

func (x *SubTask) GetDumpDetail() *DumpDetail {
	if x != nil {
		return x.DumpDetail
	}
	return nil
}

func (x *SubTask) GetLoadDetail() *LoadDetail {
	if x != nil {
		return x.LoadDetail
	}
	return nil
}

func (x *SubTask) GetSyncDetail() *SyncDetail {
	if x != nil {
		return x.SyncDetail
	}
	return nil
}

func (x *SubTask) GetErrorMsg() string {
	if x != nil && x.ErrorMsg != nil {
		return *x.ErrorMsg
	}
	return ""
}

type Source struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Connection profile for the source database.
	ConnProfile *ConnProfile `protobuf:"bytes,1,opt,name=conn_profile,json=connProfile,proto3" json:"conn_profile,omitempty"`
	// Migration rules that specify which tables should be migrated. Each `MigrationRule` maps
	// source schema/table patterns to a target schema/table. If this field is omitted
	// or the list is empty, import all non-system tables from the source.
	MigrationRules []*MigrationRule `protobuf:"bytes,3,rep,name=migration_rules,json=migrationRules,proto3" json:"migration_rules,omitempty"`
	// Starting binlog file name for incremental sync.
	BinlogName *string `protobuf:"bytes,4,opt,name=binlog_name,json=binlogName,proto3,oneof" json:"binlog_name,omitempty"`
	// Starting binlog position for incremental sync.
	BinlogPosition *int32 `protobuf:"varint,5,opt,name=binlog_position,json=binlogPosition,proto3,oneof" json:"binlog_position,omitempty"`
	// Starting GTID set for incremental sync.
	BinlogGtid *string `protobuf:"bytes,6,opt,name=binlog_gtid,json=binlogGtid,proto3,oneof" json:"binlog_gtid,omitempty"`
	// Source type (e.g., MySQL).
	SourceType Source_SourceType `protobuf:"varint,7,opt,name=source_type,json=sourceType,proto3,enum=v1beta1.Source_SourceType" json:"source_type,omitempty"`
}

func (x *Source) Reset() {
	*x = Source{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Source) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Source) ProtoMessage() {}

func (x *Source) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_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 Source.ProtoReflect.Descriptor instead.
func (*Source) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{10}
}

func (x *Source) GetConnProfile() *ConnProfile {
	if x != nil {
		return x.ConnProfile
	}
	return nil
}

func (x *Source) GetMigrationRules() []*MigrationRule {
	if x != nil {
		return x.MigrationRules
	}
	return nil
}

func (x *Source) GetBinlogName() string {
	if x != nil && x.BinlogName != nil {
		return *x.BinlogName
	}
	return ""
}

func (x *Source) GetBinlogPosition() int32 {
	if x != nil && x.BinlogPosition != nil {
		return *x.BinlogPosition
	}
	return 0
}

func (x *Source) GetBinlogGtid() string {
	if x != nil && x.BinlogGtid != nil {
		return *x.BinlogGtid
	}
	return ""
}

func (x *Source) GetSourceType() Source_SourceType {
	if x != nil {
		return x.SourceType
	}
	return Source_SOURCE_TYPE_UNSPECIFIED
}

type DumpDetail struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Bytes per second processed during dump.
	Bps int64 `protobuf:"varint,1,opt,name=bps,proto3" json:"bps,omitempty"`
	// Progress of dump phase (0-100).
	Progress float64 `protobuf:"fixed64,2,opt,name=progress,proto3" json:"progress,omitempty"`
	// Total number of tables to dump.
	TotalTables int64 `protobuf:"varint,3,opt,name=total_tables,json=totalTables,proto3" json:"total_tables,omitempty"`
	// Number of tables completed dumping.
	CompletedTables int64 `protobuf:"varint,4,opt,name=completed_tables,json=completedTables,proto3" json:"completed_tables,omitempty"`
	// Total bytes finished dumping.
	FinishedBytes int64 `protobuf:"varint,5,opt,name=finished_bytes,json=finishedBytes,proto3" json:"finished_bytes,omitempty"`
	// Total rows finished dumping.
	FinishedRows int64 `protobuf:"varint,6,opt,name=finished_rows,json=finishedRows,proto3" json:"finished_rows,omitempty"`
}

func (x *DumpDetail) Reset() {
	*x = DumpDetail{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DumpDetail) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DumpDetail) ProtoMessage() {}

func (x *DumpDetail) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[11]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DumpDetail.ProtoReflect.Descriptor instead.
func (*DumpDetail) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{11}
}

func (x *DumpDetail) GetBps() int64 {
	if x != nil {
		return x.Bps
	}
	return 0
}

func (x *DumpDetail) GetProgress() float64 {
	if x != nil {
		return x.Progress
	}
	return 0
}

func (x *DumpDetail) GetTotalTables() int64 {
	if x != nil {
		return x.TotalTables
	}
	return 0
}

func (x *DumpDetail) GetCompletedTables() int64 {
	if x != nil {
		return x.CompletedTables
	}
	return 0
}

func (x *DumpDetail) GetFinishedBytes() int64 {
	if x != nil {
		return x.FinishedBytes
	}
	return 0
}

func (x *DumpDetail) GetFinishedRows() int64 {
	if x != nil {
		return x.FinishedRows
	}
	return 0
}

type LoadDetail struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Bytes per second processed during load.
	Bps int64 `protobuf:"varint,1,opt,name=bps,proto3" json:"bps,omitempty"`
	// Progress of load phase (0-100).
	Progress float64 `protobuf:"fixed64,2,opt,name=progress,proto3" json:"progress,omitempty"`
	// Total bytes finished loading.
	FinishedBytes int64 `protobuf:"varint,3,opt,name=finished_bytes,json=finishedBytes,proto3" json:"finished_bytes,omitempty"`
	// Total bytes to load.
	TotalBytes int64 `protobuf:"varint,4,opt,name=total_bytes,json=totalBytes,proto3" json:"total_bytes,omitempty"`
}

func (x *LoadDetail) Reset() {
	*x = LoadDetail{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *LoadDetail) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LoadDetail) ProtoMessage() {}

func (x *LoadDetail) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[12]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LoadDetail.ProtoReflect.Descriptor instead.
func (*LoadDetail) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{12}
}

func (x *LoadDetail) GetBps() int64 {
	if x != nil {
		return x.Bps
	}
	return 0
}

func (x *LoadDetail) GetProgress() float64 {
	if x != nil {
		return x.Progress
	}
	return 0
}

func (x *LoadDetail) GetFinishedBytes() int64 {
	if x != nil {
		return x.FinishedBytes
	}
	return 0
}

func (x *LoadDetail) GetTotalBytes() int64 {
	if x != nil {
		return x.TotalBytes
	}
	return 0
}

type SyncDetail struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Rows processed per second during sync.
	Rps int64 `protobuf:"varint,1,opt,name=rps,proto3" json:"rps,omitempty"`
	// Replication latency in seconds.
	Latency int64 `protobuf:"varint,2,opt,name=latency,proto3" json:"latency,omitempty"`
	// Synchronization checkpoint.
	Checkpoint string `protobuf:"bytes,3,opt,name=checkpoint,proto3" json:"checkpoint,omitempty"`
}

func (x *SyncDetail) Reset() {
	*x = SyncDetail{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SyncDetail) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SyncDetail) ProtoMessage() {}

func (x *SyncDetail) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[13]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SyncDetail.ProtoReflect.Descriptor instead.
func (*SyncDetail) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{13}
}

func (x *SyncDetail) GetRps() int64 {
	if x != nil {
		return x.Rps
	}
	return 0
}

func (x *SyncDetail) GetLatency() int64 {
	if x != nil {
		return x.Latency
	}
	return 0
}

func (x *SyncDetail) GetCheckpoint() string {
	if x != nil {
		return x.Checkpoint
	}
	return ""
}

type ConnProfile struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Connection type (e.g., PUBLIC, PRIVATE_LINK).
	ConnType ConnType `protobuf:"varint,1,opt,name=conn_type,json=connType,proto3,enum=v1beta1.ConnType" json:"conn_type,omitempty"`
	// One of endpoint ID or host must be set.
	//
	// Types that are assignable to Endpoint:
	//
	//	*ConnProfile_EndpointId
	//	*ConnProfile_Host
	Endpoint isConnProfile_Endpoint `protobuf_oneof:"endpoint"`
	// Source port.
	Port int32 `protobuf:"varint,4,opt,name=port,proto3" json:"port,omitempty"`
	// Source user.
	User string `protobuf:"bytes,5,opt,name=user,proto3" json:"user,omitempty"`
	// Source password.
	Password string `protobuf:"bytes,6,opt,name=password,proto3" json:"password,omitempty"`
	// TLS/SSL settings; if not set, use defaults.
	Security *Security `protobuf:"bytes,7,opt,name=security,proto3" json:"security,omitempty"`
}

func (x *ConnProfile) Reset() {
	*x = ConnProfile{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ConnProfile) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ConnProfile) ProtoMessage() {}

func (x *ConnProfile) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[14]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ConnProfile.ProtoReflect.Descriptor instead.
func (*ConnProfile) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{14}
}

func (x *ConnProfile) GetConnType() ConnType {
	if x != nil {
		return x.ConnType
	}
	return ConnType_CONN_TYPE_UNSPECIFIED
}

func (m *ConnProfile) GetEndpoint() isConnProfile_Endpoint {
	if m != nil {
		return m.Endpoint
	}
	return nil
}

func (x *ConnProfile) GetEndpointId() string {
	if x, ok := x.GetEndpoint().(*ConnProfile_EndpointId); ok {
		return x.EndpointId
	}
	return ""
}

func (x *ConnProfile) GetHost() string {
	if x, ok := x.GetEndpoint().(*ConnProfile_Host); ok {
		return x.Host
	}
	return ""
}

func (x *ConnProfile) GetPort() int32 {
	if x != nil {
		return x.Port
	}
	return 0
}

func (x *ConnProfile) GetUser() string {
	if x != nil {
		return x.User
	}
	return ""
}

func (x *ConnProfile) GetPassword() string {
	if x != nil {
		return x.Password
	}
	return ""
}

func (x *ConnProfile) GetSecurity() *Security {
	if x != nil {
		return x.Security
	}
	return nil
}

type isConnProfile_Endpoint interface {
	isConnProfile_Endpoint()
}

type ConnProfile_EndpointId struct {
	// Private link endpoint ID.
	EndpointId string `protobuf:"bytes,2,opt,name=endpoint_id,json=endpointId,proto3,oneof"`
}

type ConnProfile_Host struct {
	// Source host.
	Host string `protobuf:"bytes,3,opt,name=host,proto3,oneof"`
}

func (*ConnProfile_EndpointId) isConnProfile_Endpoint() {}

func (*ConnProfile_Host) isConnProfile_Endpoint() {}

type Security struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Allowed certificate Common Names.
	CertAllowedCn []string `protobuf:"bytes,1,rep,name=cert_allowed_cn,json=certAllowedCn,proto3" json:"cert_allowed_cn,omitempty"`
	// CA certificate content in PEM.
	SslCaContent []byte `protobuf:"bytes,2,opt,name=ssl_ca_content,json=sslCaContent,proto3" json:"ssl_ca_content,omitempty"`
	// Client certificate content in PEM.
	SslCertContent []byte `protobuf:"bytes,3,opt,name=ssl_cert_content,json=sslCertContent,proto3" json:"ssl_cert_content,omitempty"`
	// Client private key in PEM.
	SslKeyContent []byte `protobuf:"bytes,4,opt,name=ssl_key_content,json=sslKeyContent,proto3" json:"ssl_key_content,omitempty"`
}

func (x *Security) Reset() {
	*x = Security{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Security) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Security) ProtoMessage() {}

func (x *Security) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[15]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Security.ProtoReflect.Descriptor instead.
func (*Security) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{15}
}

func (x *Security) GetCertAllowedCn() []string {
	if x != nil {
		return x.CertAllowedCn
	}
	return nil
}

func (x *Security) GetSslCaContent() []byte {
	if x != nil {
		return x.SslCaContent
	}
	return nil
}

func (x *Security) GetSslCertContent() []byte {
	if x != nil {
		return x.SslCertContent
	}
	return nil
}

func (x *Security) GetSslKeyContent() []byte {
	if x != nil {
		return x.SslKeyContent
	}
	return nil
}

type GetMigrationReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The ID of the cluster.
	ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
	// The ID of the migration.
	MigrationId string `protobuf:"bytes,2,opt,name=migration_id,json=migrationId,proto3" json:"migration_id,omitempty"`
}

func (x *GetMigrationReq) Reset() {
	*x = GetMigrationReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetMigrationReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetMigrationReq) ProtoMessage() {}

func (x *GetMigrationReq) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[16]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetMigrationReq.ProtoReflect.Descriptor instead.
func (*GetMigrationReq) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{16}
}

func (x *GetMigrationReq) GetClusterId() string {
	if x != nil {
		return x.ClusterId
	}
	return ""
}

func (x *GetMigrationReq) GetMigrationId() string {
	if x != nil {
		return x.MigrationId
	}
	return ""
}

type ListMigrationsReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The ID of the cluster to list migrations for.
	ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
	// Optional. The page token, default is empty.
	PageToken string `protobuf:"bytes,100,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
	// Optional. The page size, default is 10.
	PageSize int32 `protobuf:"varint,101,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// Specifies the sorting order of results. Use a comma-separated list of field names, optionally appending `desc` for descending order. For example, `createTime desc`. By default, fields are sorted in ascending order.
	//
	// Supported field: `createTime`.
	OrderBy string `protobuf:"bytes,102,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"`
}

func (x *ListMigrationsReq) Reset() {
	*x = ListMigrationsReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListMigrationsReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListMigrationsReq) ProtoMessage() {}

func (x *ListMigrationsReq) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[17]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListMigrationsReq.ProtoReflect.Descriptor instead.
func (*ListMigrationsReq) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{17}
}

func (x *ListMigrationsReq) GetClusterId() string {
	if x != nil {
		return x.ClusterId
	}
	return ""
}

func (x *ListMigrationsReq) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

func (x *ListMigrationsReq) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *ListMigrationsReq) GetOrderBy() string {
	if x != nil {
		return x.OrderBy
	}
	return ""
}

type ListMigrationsResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The list of migrations.
	Migrations []*Migration `protobuf:"bytes,1,rep,name=migrations,proto3" json:"migrations,omitempty"`
	// The total number of migrations matching the query.
	TotalSize uint32 `protobuf:"varint,2,opt,name=total_size,json=totalSize,proto3" json:"total_size,omitempty"`
	// Token to retrieve the next page of results.
	NextPageToken string `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

func (x *ListMigrationsResp) Reset() {
	*x = ListMigrationsResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListMigrationsResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListMigrationsResp) ProtoMessage() {}

func (x *ListMigrationsResp) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[18]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListMigrationsResp.ProtoReflect.Descriptor instead.
func (*ListMigrationsResp) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{18}
}

func (x *ListMigrationsResp) GetMigrations() []*Migration {
	if x != nil {
		return x.Migrations
	}
	return nil
}

func (x *ListMigrationsResp) GetTotalSize() uint32 {
	if x != nil {
		return x.TotalSize
	}
	return 0
}

func (x *ListMigrationsResp) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

type DeleteMigrationReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The ID of the cluster.
	ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
	// The ID of the migration to delete.
	MigrationId string `protobuf:"bytes,2,opt,name=migration_id,json=migrationId,proto3" json:"migration_id,omitempty"`
}

func (x *DeleteMigrationReq) Reset() {
	*x = DeleteMigrationReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DeleteMigrationReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteMigrationReq) ProtoMessage() {}

func (x *DeleteMigrationReq) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[19]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeleteMigrationReq.ProtoReflect.Descriptor instead.
func (*DeleteMigrationReq) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{19}
}

func (x *DeleteMigrationReq) GetClusterId() string {
	if x != nil {
		return x.ClusterId
	}
	return ""
}

func (x *DeleteMigrationReq) GetMigrationId() string {
	if x != nil {
		return x.MigrationId
	}
	return ""
}

// PauseMigrationReq is used to pause a migration
type PauseMigrationReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The ID of the cluster.
	ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
	// The ID of the migration to pause.
	MigrationId string `protobuf:"bytes,2,opt,name=migration_id,json=migrationId,proto3" json:"migration_id,omitempty"`
}

func (x *PauseMigrationReq) Reset() {
	*x = PauseMigrationReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PauseMigrationReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PauseMigrationReq) ProtoMessage() {}

func (x *PauseMigrationReq) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[20]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PauseMigrationReq.ProtoReflect.Descriptor instead.
func (*PauseMigrationReq) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{20}
}

func (x *PauseMigrationReq) GetClusterId() string {
	if x != nil {
		return x.ClusterId
	}
	return ""
}

func (x *PauseMigrationReq) GetMigrationId() string {
	if x != nil {
		return x.MigrationId
	}
	return ""
}

// ResumeMigrationReq is used to resume a paused migration
type ResumeMigrationReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The ID of the cluster.
	ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
	// The ID of the migration to resume.
	MigrationId string `protobuf:"bytes,2,opt,name=migration_id,json=migrationId,proto3" json:"migration_id,omitempty"`
}

func (x *ResumeMigrationReq) Reset() {
	*x = ResumeMigrationReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ResumeMigrationReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ResumeMigrationReq) ProtoMessage() {}

func (x *ResumeMigrationReq) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[21]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ResumeMigrationReq.ProtoReflect.Descriptor instead.
func (*ResumeMigrationReq) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{21}
}

func (x *ResumeMigrationReq) GetClusterId() string {
	if x != nil {
		return x.ClusterId
	}
	return ""
}

func (x *ResumeMigrationReq) GetMigrationId() string {
	if x != nil {
		return x.MigrationId
	}
	return ""
}

type MigrationRule_Source struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Schema pattern of the source, supports wildcards.
	SchemaPattern string `protobuf:"bytes,1,opt,name=schema_pattern,json=schemaPattern,proto3" json:"schema_pattern,omitempty"`
	// Table pattern of the source, supports wildcards.
	TablePattern string `protobuf:"bytes,2,opt,name=table_pattern,json=tablePattern,proto3" json:"table_pattern,omitempty"`
}

func (x *MigrationRule_Source) Reset() {
	*x = MigrationRule_Source{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MigrationRule_Source) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MigrationRule_Source) ProtoMessage() {}

func (x *MigrationRule_Source) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[22]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MigrationRule_Source.ProtoReflect.Descriptor instead.
func (*MigrationRule_Source) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{7, 0}
}

func (x *MigrationRule_Source) GetSchemaPattern() string {
	if x != nil {
		return x.SchemaPattern
	}
	return ""
}

func (x *MigrationRule_Source) GetTablePattern() string {
	if x != nil {
		return x.TablePattern
	}
	return ""
}

type MigrationRule_Table struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Schema name. Wildcards are not supported. Must not be empty.
	Schema string `protobuf:"bytes,1,opt,name=schema,proto3" json:"schema,omitempty"`
	// Table name. Wildcards are not supported. Set empty to use the source table name.
	Table string `protobuf:"bytes,2,opt,name=table,proto3" json:"table,omitempty"`
}

func (x *MigrationRule_Table) Reset() {
	*x = MigrationRule_Table{}
	if protoimpl.UnsafeEnabled {
		mi := &file_v1beta1_dm_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MigrationRule_Table) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MigrationRule_Table) ProtoMessage() {}

func (x *MigrationRule_Table) ProtoReflect() protoreflect.Message {
	mi := &file_v1beta1_dm_proto_msgTypes[23]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MigrationRule_Table.ProtoReflect.Descriptor instead.
func (*MigrationRule_Table) Descriptor() ([]byte, []int) {
	return file_v1beta1_dm_proto_rawDescGZIP(), []int{7, 1}
}

func (x *MigrationRule_Table) GetSchema() string {
	if x != nil {
		return x.Schema
	}
	return ""
}

func (x *MigrationRule_Table) GetTable() string {
	if x != nil {
		return x.Table
	}
	return ""
}

var File_v1beta1_dm_proto protoreflect.FileDescriptor

var file_v1beta1_dm_proto_rawDesc = []byte{
	0x0a, 0x10, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x64, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x12, 0x07, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61,
	0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74,
	0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
	0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
	0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x63, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4d,
	0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b,
	0x52, 0x65, 0x71, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x63, 0x6c,
	0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x63, 0x68,
	0x65, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
	0x02, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x64, 0x22, 0x66, 0x0a,
	0x1a, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x50, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x22, 0x0a, 0x0a, 0x63,
	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
	0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12,
	0x24, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x63, 0x68,
	0x65, 0x63, 0x6b, 0x49, 0x64, 0x22, 0x94, 0x03, 0x0a, 0x11, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x24, 0x0a, 0x0b, 0x70,
	0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49,
	0x64, 0x12, 0x19, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
	0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x22, 0x0a, 0x0a,
	0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
	0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x6e, 0x74,
	0x12, 0x1e, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x77, 0x61, 0x72, 0x6e, 0x43, 0x6e, 0x74,
	0x12, 0x24, 0x0a, 0x0b, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6e, 0x74, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x73, 0x75, 0x63, 0x63,
	0x65, 0x73, 0x73, 0x43, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
	0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x63, 0x68, 0x65,
	0x63, 0x6b, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06,
	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x30, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18,
	0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
	0x50, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x03, 0xe0, 0x41,
	0x03, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x62, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53,
	0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55,
	0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x49, 0x4e, 0x49, 0x53,
	0x48, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47,
	0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0c,
	0x0a, 0x08, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x22, 0x43, 0x0a, 0x1b,
	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
	0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x0b, 0x70,
	0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49,
	0x64, 0x22, 0xd9, 0x02, 0x0a, 0x0c, 0x50, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x74,
	0x65, 0x6d, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x64, 0x65,
	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d,
	0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x08, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x73, 0x6f, 0x6c,
	0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73,
	0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x10, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64,
	0x6f, 0x63, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
	0x03, 0x52, 0x0e, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x63, 0x55, 0x72,
	0x6c, 0x12, 0x32, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x19, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x68, 0x65,
	0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52,
	0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x46, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
	0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
	0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45,
	0x53, 0x53, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10,
	0x02, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x22, 0xba, 0x02,
	0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x52, 0x65, 0x71, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x63,
	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70,
	0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
	0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65,
	0x12, 0x2e, 0x0a, 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x0f, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72,
	0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
	0x12, 0x2c, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0f, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65,
	0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2a,
	0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x76,
	0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x42,
	0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x73, 0x68,
	0x61, 0x72, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16,
	0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x68, 0x61,
	0x72, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x09, 0x73,
	0x68, 0x61, 0x72, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f,
	0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x45, 0x0a, 0x06, 0x54, 0x61,
	0x72, 0x67, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x22, 0x0a,
	0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42,
	0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x04, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
	0x64, 0x22, 0xbd, 0x02, 0x0a, 0x0d, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
	0x75, 0x6c, 0x65, 0x12, 0x45, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x61,
	0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c,
	0x65, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x73,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x44, 0x0a, 0x0c, 0x74, 0x61,
	0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1c, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x03,
	0xe0, 0x41, 0x01, 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65,
	0x1a, 0x5e, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x0e, 0x73, 0x63,
	0x68, 0x65, 0x6d, 0x61, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x50,
	0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f,
	0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
	0x41, 0x01, 0x52, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e,
	0x1a, 0x3f, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x63, 0x68,
	0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06,
	0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x19, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c,
	0x65, 0x22, 0xb9, 0x03, 0x0a, 0x09, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
	0x26, 0x0a, 0x0c, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x6d, 0x69, 0x67, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c,
	0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
	0x41, 0x03, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12,
	0x32, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x62,
	0x54, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x73, 0x75, 0x62, 0x54, 0x61,
	0x73, 0x6b, 0x73, 0x12, 0x24, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x73,
	0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x74,
	0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65,
	0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52,
	0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x6d,
	0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x03, 0xe0, 0x41,
	0x03, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
	0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65,
	0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x5f, 0x0a, 0x05,
	0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55,
	0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08,
	0x43, 0x52, 0x45, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55,
	0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x41, 0x55, 0x53, 0x45,
	0x44, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x12,
	0x0c, 0x0a, 0x08, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x22, 0xea, 0x04,
	0x0a, 0x07, 0x53, 0x75, 0x62, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x6f, 0x75,
	0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52,
	0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65,
	0x6e, 0x74, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e,
	0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x54, 0x61, 0x73, 0x6b, 0x2e,
	0x53, 0x74, 0x65, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65,
	0x6e, 0x74, 0x53, 0x74, 0x65, 0x70, 0x12, 0x31, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
	0x53, 0x75, 0x62, 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x42, 0x03, 0xe0,
	0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x64, 0x75, 0x6d,
	0x70, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13,
	0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x75, 0x6d, 0x70, 0x44, 0x65, 0x74,
	0x61, 0x69, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x75, 0x6d, 0x70,
	0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0b, 0x6c, 0x6f, 0x61,
	0x64, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13,
	0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x74,
	0x61, 0x69, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x6c, 0x6f, 0x61, 0x64,
	0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0b, 0x73, 0x79, 0x6e,
	0x63, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13,
	0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x74,
	0x61, 0x69, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x02, 0x52, 0x0a, 0x73, 0x79, 0x6e, 0x63,
	0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x09, 0x65, 0x72, 0x72,
	0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
	0x03, 0x48, 0x03, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x88, 0x01, 0x01,
	0x22, 0x3a, 0x0a, 0x04, 0x53, 0x74, 0x65, 0x70, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x45, 0x50,
	0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08,
	0x0a, 0x04, 0x44, 0x55, 0x4d, 0x50, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x4f, 0x41, 0x44,
	0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x03, 0x22, 0x5e, 0x0a, 0x05,
	0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x55,
	0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07,
	0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x41, 0x55,
	0x53, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10,
	0x03, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x49, 0x4e, 0x49, 0x53, 0x48, 0x45, 0x44, 0x10, 0x04, 0x12,
	0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x05, 0x42, 0x0e, 0x0a, 0x0c,
	0x5f, 0x64, 0x75, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x42, 0x0e, 0x0a, 0x0c,
	0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x42, 0x0e, 0x0a, 0x0c,
	0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x42, 0x0c, 0x0a, 0x0a,
	0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x22, 0xec, 0x03, 0x0a, 0x06, 0x53,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x5f, 0x70, 0x72,
	0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x31,
	0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c,
	0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x50, 0x72, 0x6f, 0x66,
	0x69, 0x6c, 0x65, 0x12, 0x44, 0x0a, 0x0f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x76,
	0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x52, 0x75, 0x6c, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x6d, 0x69, 0x67, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x0b, 0x62, 0x69, 0x6e,
	0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
	0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d,
	0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0f, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x5f, 0x70,
	0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0,
	0x41, 0x01, 0x48, 0x01, 0x52, 0x0e, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x50, 0x6f, 0x73, 0x69,
	0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0b, 0x62, 0x69, 0x6e, 0x6c, 0x6f,
	0x67, 0x5f, 0x67, 0x74, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
	0x01, 0x48, 0x02, 0x52, 0x0a, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x47, 0x74, 0x69, 0x64, 0x88,
	0x01, 0x01, 0x12, 0x40, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
	0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54,
	0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
	0x54, 0x79, 0x70, 0x65, 0x22, 0x5f, 0x0a, 0x0a, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79,
	0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50,
	0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
	0x09, 0x0a, 0x05, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x4c,
	0x49, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x52, 0x44, 0x53, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c,
	0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x57, 0x53, 0x5f, 0x52, 0x44, 0x53, 0x5f, 0x4d, 0x59,
	0x53, 0x51, 0x4c, 0x10, 0x03, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67,
	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67,
	0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x62, 0x69,
	0x6e, 0x6c, 0x6f, 0x67, 0x5f, 0x67, 0x74, 0x69, 0x64, 0x22, 0xf2, 0x01, 0x0a, 0x0a, 0x44, 0x75,
	0x6d, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x15, 0x0a, 0x03, 0x62, 0x70, 0x73, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x03, 0x62, 0x70, 0x73, 0x12,
	0x1f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x01, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73,
	0x12, 0x26, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x74, 0x6f, 0x74,
	0x61, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x70,
	0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74,
	0x65, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x0e, 0x66, 0x69, 0x6e, 0x69,
	0x73, 0x68, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
	0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x42,
	0x79, 0x74, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64,
	0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03,
	0x52, 0x0c, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x6f, 0x77, 0x73, 0x22, 0x96,
	0x01, 0x0a, 0x0a, 0x4c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x15, 0x0a,
	0x03, 0x62, 0x70, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52,
	0x03, 0x62, 0x70, 0x73, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x70, 0x72, 0x6f,
	0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2a, 0x0a, 0x0e, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65,
	0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0,
	0x41, 0x03, 0x52, 0x0d, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65,
	0x73, 0x12, 0x24, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74,
	0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x67, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63, 0x44,
	0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x15, 0x0a, 0x03, 0x72, 0x70, 0x73, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x03, 0x72, 0x70, 0x73, 0x12, 0x1d, 0x0a, 0x07,
	0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0,
	0x41, 0x03, 0x52, 0x07, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0a, 0x63,
	0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42,
	0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74,
	0x22, 0x9b, 0x02, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
	0x12, 0x33, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f,
	0x6e, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x63, 0x6f, 0x6e,
	0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
	0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48,
	0x00, 0x52, 0x0a, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a,
	0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01,
	0x48, 0x00, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x70, 0x6f, 0x72,
	0x74, 0x12, 0x17, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42,
	0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x08, 0x70, 0x61,
	0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41,
	0x02, 0xe0, 0x41, 0x04, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x32,
	0x0a, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x11, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72,
	0x69, 0x74, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
	0x74, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0xbe,
	0x01, 0x0a, 0x08, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2b, 0x0a, 0x0f, 0x63,
	0x65, 0x72, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x63, 0x6e, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x63, 0x65, 0x72, 0x74, 0x41,
	0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x43, 0x6e, 0x12, 0x29, 0x0a, 0x0e, 0x73, 0x73, 0x6c, 0x5f,
	0x63, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
	0x42, 0x03, 0xe0, 0x41, 0x04, 0x52, 0x0c, 0x73, 0x73, 0x6c, 0x43, 0x61, 0x43, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x10, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x5f,
	0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0,
	0x41, 0x04, 0x52, 0x0e, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x0f, 0x73, 0x73, 0x6c, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x04,
	0x52, 0x0d, 0x73, 0x73, 0x6c, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22,
	0x5d, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
	0x65, 0x71, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x63, 0x6c, 0x75,
	0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
	0x02, 0x52, 0x0b, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xb6,
	0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x73, 0x52, 0x65, 0x71, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x63,
	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65,
	0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
	0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x09,
	0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x65, 0x20, 0x01, 0x28, 0x05, 0x42,
	0x1c, 0x92, 0x41, 0x16, 0x3a, 0x02, 0x31, 0x30, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59,
	0x40, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70,
	0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72,
	0x5f, 0x62, 0x79, 0x18, 0x66, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07,
	0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0x9e, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74,
	0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37,
	0x0a, 0x0a, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x69, 0x67,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x6d, 0x69, 0x67,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c,
	0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x03,
	0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2b, 0x0a, 0x0f, 0x6e,
	0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50,
	0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x60, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65,
	0x74, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x22,
	0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
	0x49, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
	0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x6d,
	0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5f, 0x0a, 0x11, 0x50, 0x61,
	0x75, 0x73, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12,
	0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
	0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b,
	0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x60, 0x0a, 0x12, 0x52,
	0x65, 0x73, 0x75, 0x6d, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
	0x71, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73,
	0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02,
	0x52, 0x0b, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x2a, 0x43, 0x0a,
	0x08, 0x43, 0x6f, 0x6e, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4e,
	0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
	0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x01,
	0x12, 0x10, 0x0a, 0x0c, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x49, 0x4e, 0x4b,
	0x10, 0x02, 0x2a, 0xc5, 0x03, 0x0a, 0x10, 0x50, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49,
	0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x45, 0x43, 0x48,
	0x45, 0x43, 0x4b, 0x5f, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e,
	0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x44,
	0x55, 0x4d, 0x50, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x49, 0x4c, 0x45, 0x47, 0x45, 0x5f, 0x43, 0x48,
	0x45, 0x43, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x45, 0x50, 0x4c,
	0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x49, 0x4c, 0x45, 0x47,
	0x45, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10,
	0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x49, 0x4e, 0x47,
	0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x5f,
	0x43, 0x48, 0x45, 0x43, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x49,
	0x4e, 0x4c, 0x4f, 0x47, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x45, 0x43,
	0x4b, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47,
	0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x49, 0x4e, 0x47,
	0x10, 0x06, 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x5f, 0x52, 0x4f, 0x57,
	0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x49, 0x4e, 0x47, 0x10,
	0x07, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x4d,
	0x41, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12,
	0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x5f, 0x44, 0x42, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x49,
	0x4e, 0x47, 0x10, 0x09, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4e, 0x4e, 0x5f, 0x4e, 0x55, 0x4d,
	0x42, 0x45, 0x52, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x0a, 0x12, 0x20,
	0x0a, 0x1c, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x44, 0x42, 0x5f, 0x50, 0x52, 0x49, 0x56,
	0x49, 0x4c, 0x45, 0x47, 0x45, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x0b,
	0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f,
	0x4e, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x0c, 0x12, 0x22, 0x0a, 0x1e,
	0x4c, 0x49, 0x47, 0x48, 0x54, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f,
	0x45, 0x4d, 0x50, 0x54, 0x59, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x0d,
	0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x5f, 0x4b, 0x45, 0x59, 0x5f,
	0x43, 0x48, 0x45, 0x43, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x0e, 0x2a, 0x3a, 0x0a, 0x08, 0x54, 0x61,
	0x73, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55,
	0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03,
	0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x43, 0x52, 0x45, 0x4d, 0x45,
	0x4e, 0x54, 0x41, 0x4c, 0x10, 0x02, 0x2a, 0x4c, 0x0a, 0x0d, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x68,
	0x61, 0x72, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x48, 0x41, 0x52, 0x44,
	0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
	0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x45, 0x53, 0x53, 0x49, 0x4d, 0x49, 0x53, 0x54,
	0x49, 0x43, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x53, 0x54,
	0x49, 0x43, 0x10, 0x02, 0x32, 0x98, 0x26, 0x0a, 0x10, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xaf, 0x06, 0x0a, 0x0f, 0x43, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x2e,
	0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x69,
	0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x76, 0x31, 0x62,
	0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xea,
	0x05, 0x92, 0x41, 0xb2, 0x05, 0x0a, 0x09, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x6a, 0xa4, 0x05, 0x0a, 0x0d, 0x78, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c,
	0x65, 0x73, 0x12, 0x92, 0x05, 0x32, 0x8f, 0x05, 0x0a, 0x8c, 0x05, 0x2a, 0x89, 0x05, 0x0a, 0x0f,
	0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x06, 0x1a, 0x04, 0x63, 0x75, 0x72, 0x6c, 0x0a,
	0x0e, 0x0a, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x12, 0x06, 0x1a, 0x04, 0x63, 0x55, 0x52, 0x4c, 0x0a,
	0xe5, 0x04, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0xda, 0x04, 0x1a, 0xd7, 0x04,
	0x63, 0x75, 0x72, 0x6c, 0x20, 0x2d, 0x2d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20,
	0x27, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6c,
	0x65, 0x73, 0x73, 0x2e, 0x74, 0x69, 0x64, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
	0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73,
	0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x69,
	0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x27, 0x20, 0x5c, 0x0a, 0x2b, 0x2d, 0x2d, 0x64,
	0x69, 0x67, 0x65, 0x73, 0x74, 0x20, 0x2d, 0x2d, 0x75, 0x73, 0x65, 0x72, 0x20, 0x27, 0x59, 0x4f,
	0x55, 0x52, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x3a, 0x59, 0x4f,
	0x55, 0x52, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x27, 0x20,
	0x5c, 0x0a, 0x2b, 0x2d, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x27, 0x43, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69,
	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x27, 0x20, 0x5c, 0x0a, 0x2b,
	0x2d, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x27, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74,
	0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73,
	0x6f, 0x6e, 0x27, 0x20, 0x5c, 0x0a, 0x2b, 0x2d, 0x2d, 0x64, 0x61, 0x74, 0x61, 0x20, 0x27, 0x7b,
	0x5c, 0x6e, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x6d, 0x79, 0x2d,
	0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2c, 0x5c, 0x6e, 0x20, 0x20, 0x22,
	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x5c, 0x6e, 0x20, 0x20, 0x20,
	0x20, 0x7b, 0x5c, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x6e, 0x50,
	0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x3a, 0x20, 0x7b, 0x5c, 0x6e, 0x20, 0x20, 0x20, 0x20,
	0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20,
	0x22, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x22, 0x2c, 0x5c, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20,
	0x20, 0x20, 0x20, 0x22, 0x68, 0x6f, 0x73, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x31, 0x2e, 0x32, 0x2e,
	0x33, 0x2e, 0x34, 0x22, 0x2c, 0x5c, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
	0x70, 0x6f, 0x72, 0x74, 0x22, 0x3a, 0x20, 0x33, 0x33, 0x30, 0x36, 0x2c, 0x5c, 0x6e, 0x20, 0x20,
	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x72,
	0x6f, 0x6f, 0x74, 0x22, 0x2c, 0x5c, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
	0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x73, 0x65, 0x63, 0x72,
	0x65, 0x74, 0x22, 0x5c, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x5c, 0x6e, 0x20,
	0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
	0x22, 0x3a, 0x20, 0x22, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x22, 0x5c, 0x6e, 0x20, 0x20, 0x20, 0x20,
	0x7d, 0x5c, 0x6e, 0x20, 0x20, 0x5d, 0x2c, 0x5c, 0x6e, 0x20, 0x20, 0x22, 0x74, 0x61, 0x72, 0x67,
	0x65, 0x74, 0x22, 0x3a, 0x20, 0x7b, 0x5c, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65,
	0x72, 0x22, 0x3a, 0x20, 0x22, 0x74, 0x69, 0x64, 0x62, 0x22, 0x2c, 0x5c, 0x6e, 0x20, 0x20, 0x20,
	0x20, 0x22, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x74, 0x69,
	0x64, 0x62, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x5c, 0x6e, 0x20, 0x20,
	0x7d, 0x2c, 0x5c, 0x6e, 0x20, 0x20, 0x22, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x41,
	0x4c, 0x4c, 0x22, 0x5c, 0x6e, 0x7d, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x3a, 0x01, 0x2a,
	0x22, 0x29, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74,
	0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d,
	0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xa3, 0x03, 0x0a, 0x0c,
	0x47, 0x65, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x2e, 0x76,
	0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
	0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe4, 0x02, 0x92, 0x41, 0xa0,
	0x02, 0x0a, 0x09, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6a, 0x92, 0x02, 0x0a,
	0x0d, 0x78, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x80,
	0x02, 0x32, 0xfd, 0x01, 0x0a, 0xfa, 0x01, 0x2a, 0xf7, 0x01, 0x0a, 0x0f, 0x0a, 0x05, 0x6c, 0x61,
	0x62, 0x65, 0x6c, 0x12, 0x06, 0x1a, 0x04, 0x63, 0x75, 0x72, 0x6c, 0x0a, 0x0e, 0x0a, 0x04, 0x6c,
	0x61, 0x6e, 0x67, 0x12, 0x06, 0x1a, 0x04, 0x63, 0x55, 0x52, 0x4c, 0x0a, 0xd3, 0x01, 0x0a, 0x06,
	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0xc8, 0x01, 0x1a, 0xc5, 0x01, 0x63, 0x75, 0x72, 0x6c,
	0x20, 0x2d, 0x2d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x27, 0x68, 0x74, 0x74,
	0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6c, 0x65, 0x73, 0x73, 0x2e,
	0x74, 0x69, 0x64, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c,
	0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
	0x69, 0x64, 0x7d, 0x27, 0x20, 0x5c, 0x0a, 0x2b, 0x2d, 0x2d, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
	0x20, 0x2d, 0x2d, 0x75, 0x73, 0x65, 0x72, 0x20, 0x27, 0x59, 0x4f, 0x55, 0x52, 0x5f, 0x50, 0x55,
	0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x3a, 0x59, 0x4f, 0x55, 0x52, 0x5f, 0x50, 0x52,
	0x49, 0x56, 0x41, 0x54, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x27, 0x20, 0x5c, 0x0a, 0x2b, 0x2d, 0x2d,
	0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x27, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20,
	0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e,
	0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x12, 0x38, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
	0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73,
	0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x2f, 0x7b, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64,
	0x7d, 0x12, 0x92, 0x03, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c,
	0x69, 0x73, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71,
	0x1a, 0x1b, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d,
	0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0xc6, 0x02,
	0x92, 0x41, 0x91, 0x02, 0x0a, 0x09, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6a,
	0x83, 0x02, 0x0a, 0x0d, 0x78, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65,
	0x73, 0x12, 0xf1, 0x01, 0x32, 0xee, 0x01, 0x0a, 0xeb, 0x01, 0x2a, 0xe8, 0x01, 0x0a, 0x0f, 0x0a,
	0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x06, 0x1a, 0x04, 0x63, 0x75, 0x72, 0x6c, 0x0a, 0x0e,
	0x0a, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x12, 0x06, 0x1a, 0x04, 0x63, 0x55, 0x52, 0x4c, 0x0a, 0xc4,
	0x01, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0xb9, 0x01, 0x1a, 0xb6, 0x01, 0x63,
	0x75, 0x72, 0x6c, 0x20, 0x2d, 0x2d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x27,
	0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6c, 0x65,
	0x73, 0x73, 0x2e, 0x74, 0x69, 0x64, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76,
	0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f,
	0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x69, 0x67,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x27, 0x20, 0x5c, 0x0a, 0x2b, 0x2d, 0x2d, 0x64, 0x69,
	0x67, 0x65, 0x73, 0x74, 0x20, 0x2d, 0x2d, 0x75, 0x73, 0x65, 0x72, 0x20, 0x27, 0x59, 0x4f, 0x55,
	0x52, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x3a, 0x59, 0x4f, 0x55,
	0x52, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x27, 0x20, 0x5c,
	0x0a, 0x2b, 0x2d, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x27, 0x41, 0x63, 0x63, 0x65,
	0x70, 0x74, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f,
	0x6a, 0x73, 0x6f, 0x6e, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x76, 0x31,
	0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b,
	0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x69, 0x67, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xba, 0x03, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74,
	0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x2e, 0x76, 0x31, 0x62,
	0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
	0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xf5, 0x02, 0x92, 0x41,
	0xb1, 0x02, 0x0a, 0x09, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6a, 0xa3, 0x02,
	0x0a, 0x0d, 0x78, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12,
	0x91, 0x02, 0x32, 0x8e, 0x02, 0x0a, 0x8b, 0x02, 0x2a, 0x88, 0x02, 0x0a, 0x0f, 0x0a, 0x05, 0x6c,
	0x61, 0x62, 0x65, 0x6c, 0x12, 0x06, 0x1a, 0x04, 0x63, 0x75, 0x72, 0x6c, 0x0a, 0x0e, 0x0a, 0x04,
	0x6c, 0x61, 0x6e, 0x67, 0x12, 0x06, 0x1a, 0x04, 0x63, 0x55, 0x52, 0x4c, 0x0a, 0xe4, 0x01, 0x0a,
	0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0xd9, 0x01, 0x1a, 0xd6, 0x01, 0x63, 0x75, 0x72,
	0x6c, 0x20, 0x2d, 0x2d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2d, 0x2d, 0x72,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x20, 0x27, 0x68,
	0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6c, 0x65, 0x73,
	0x73, 0x2e, 0x74, 0x69, 0x64, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x31,
	0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b,
	0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x69, 0x67, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x27, 0x20, 0x5c, 0x0a, 0x2b, 0x2d, 0x2d, 0x64, 0x69, 0x67, 0x65,
	0x73, 0x74, 0x20, 0x2d, 0x2d, 0x75, 0x73, 0x65, 0x72, 0x20, 0x27, 0x59, 0x4f, 0x55, 0x52, 0x5f,
	0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x3a, 0x59, 0x4f, 0x55, 0x52, 0x5f,
	0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x27, 0x20, 0x5c, 0x0a, 0x2b,
	0x2d, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x27, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74,
	0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73,
	0x6f, 0x6e, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x2a, 0x38, 0x2f, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c,
	0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
	0x69, 0x64, 0x7d, 0x12, 0xf6, 0x03, 0x0a, 0x0e, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4d, 0x69, 0x67,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
	0x2e, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
	0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xaf, 0x03, 0x92, 0x41, 0xe2,
	0x02, 0x0a, 0x09, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6a, 0xd4, 0x02, 0x0a,
	0x0d, 0x78, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0xc2,
	0x02, 0x32, 0xbf, 0x02, 0x0a, 0xbc, 0x02, 0x2a, 0xb9, 0x02, 0x0a, 0x0f, 0x0a, 0x05, 0x6c, 0x61,
	0x62, 0x65, 0x6c, 0x12, 0x06, 0x1a, 0x04, 0x63, 0x75, 0x72, 0x6c, 0x0a, 0x0e, 0x0a, 0x04, 0x6c,
	0x61, 0x6e, 0x67, 0x12, 0x06, 0x1a, 0x04, 0x63, 0x55, 0x52, 0x4c, 0x0a, 0x95, 0x02, 0x0a, 0x06,
	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x8a, 0x02, 0x1a, 0x87, 0x02, 0x63, 0x75, 0x72, 0x6c,
	0x20, 0x2d, 0x2d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2d, 0x2d, 0x72, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x50, 0x4f, 0x53, 0x54, 0x20, 0x27, 0x68, 0x74, 0x74, 0x70,
	0x73, 0x3a, 0x2f, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x74,
	0x69, 0x64, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74,
	0x61, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75,
	0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69,
	0x64, 0x7d, 0x3a, 0x70, 0x61, 0x75, 0x73, 0x65, 0x27, 0x20, 0x5c, 0x0a, 0x2b, 0x2d, 0x2d, 0x64,
	0x69, 0x67, 0x65, 0x73, 0x74, 0x20, 0x2d, 0x2d, 0x75, 0x73, 0x65, 0x72, 0x20, 0x27, 0x59, 0x4f,
	0x55, 0x52, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x3a, 0x59, 0x4f,
	0x55, 0x52, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x27, 0x20,
	0x5c, 0x0a, 0x2b, 0x2d, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x27, 0x43, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69,
	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x27, 0x20, 0x5c, 0x0a, 0x2b,
	0x2d, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x27, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74,
	0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73,
	0x6f, 0x6e, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x3a, 0x01, 0x2a, 0x22, 0x3e, 0x2f, 0x76,
	0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f,
	0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x69, 0x67,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x70, 0x61, 0x75, 0x73, 0x65, 0x12, 0xfa, 0x03, 0x0a,
	0x0f, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x1b, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6d,
	0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xb1, 0x03, 0x92, 0x41, 0xe3, 0x02, 0x0a, 0x09, 0x4d, 0x69,
	0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6a, 0xd5, 0x02, 0x0a, 0x0d, 0x78, 0x2d, 0x63, 0x6f,
	0x64, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0xc3, 0x02, 0x32, 0xc0, 0x02, 0x0a,
	0xbd, 0x02, 0x2a, 0xba, 0x02, 0x0a, 0x0f, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x06,
	0x1a, 0x04, 0x63, 0x75, 0x72, 0x6c, 0x0a, 0x0e, 0x0a, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x12, 0x06,
	0x1a, 0x04, 0x63, 0x55, 0x52, 0x4c, 0x0a, 0x96, 0x02, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63,
	0x65, 0x12, 0x8b, 0x02, 0x1a, 0x88, 0x02, 0x63, 0x75, 0x72, 0x6c, 0x20, 0x2d, 0x2d, 0x6c, 0x6f,
	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2d, 0x2d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x20, 0x50, 0x4f, 0x53, 0x54, 0x20, 0x27, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x73,
	0x65, 0x72, 0x76, 0x65, 0x72, 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x74, 0x69, 0x64, 0x62, 0x61, 0x70,
	0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6c,
	0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
	0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b,
	0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x72, 0x65,
	0x73, 0x75, 0x6d, 0x65, 0x27, 0x20, 0x5c, 0x0a, 0x2b, 0x2d, 0x2d, 0x64, 0x69, 0x67, 0x65, 0x73,
	0x74, 0x20, 0x2d, 0x2d, 0x75, 0x73, 0x65, 0x72, 0x20, 0x27, 0x59, 0x4f, 0x55, 0x52, 0x5f, 0x50,
	0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x3a, 0x59, 0x4f, 0x55, 0x52, 0x5f, 0x50,
	0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x27, 0x20, 0x5c, 0x0a, 0x2b, 0x2d,
	0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x27, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x2d, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x27, 0x20, 0x5c, 0x0a, 0x2b, 0x2d, 0x2d, 0x68, 0x65,
	0x61, 0x64, 0x65, 0x72, 0x20, 0x27, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20, 0x61, 0x70,
	0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x27, 0x82,
	0xd3, 0xe4, 0x93, 0x02, 0x44, 0x3a, 0x01, 0x2a, 0x22, 0x3f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74,
	0x61, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75,
	0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69,
	0x64, 0x7d, 0x3a, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x12, 0xca, 0x06, 0x0a, 0x08, 0x50, 0x72,
	0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x1b, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
	0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65,
	0x63, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0xfa, 0x05, 0x92, 0x41, 0xba, 0x05,
	0x0a, 0x09, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6a, 0xac, 0x05, 0x0a, 0x0d,
	0x78, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x9a, 0x05,
	0x32, 0x97, 0x05, 0x0a, 0x94, 0x05, 0x2a, 0x91, 0x05, 0x0a, 0x0f, 0x0a, 0x05, 0x6c, 0x61, 0x62,
	0x65, 0x6c, 0x12, 0x06, 0x1a, 0x04, 0x63, 0x75, 0x72, 0x6c, 0x0a, 0x0e, 0x0a, 0x04, 0x6c, 0x61,
	0x6e, 0x67, 0x12, 0x06, 0x1a, 0x04, 0x63, 0x55, 0x52, 0x4c, 0x0a, 0xed, 0x04, 0x0a, 0x06, 0x73,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0xe2, 0x04, 0x1a, 0xdf, 0x04, 0x63, 0x75, 0x72, 0x6c, 0x20,
	0x2d, 0x2d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x27, 0x68, 0x74, 0x74, 0x70,
	0x73, 0x3a, 0x2f, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x74,
	0x69, 0x64, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74,
	0x61, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75,
	0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x50, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x27, 0x20, 0x5c, 0x0a, 0x2b,
	0x2d, 0x2d, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x20, 0x2d, 0x2d, 0x75, 0x73, 0x65, 0x72, 0x20,
	0x27, 0x59, 0x4f, 0x55, 0x52, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59,
	0x3a, 0x59, 0x4f, 0x55, 0x52, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x5f, 0x4b, 0x45,
	0x59, 0x27, 0x20, 0x5c, 0x0a, 0x2b, 0x2d, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x27,
	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70,
	0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x27, 0x20,
	0x5c, 0x0a, 0x2b, 0x2d, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x27, 0x41, 0x63, 0x63,
	0x65, 0x70, 0x74, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x27, 0x20, 0x5c, 0x0a, 0x2b, 0x2d, 0x2d, 0x64, 0x61, 0x74, 0x61,
	0x20, 0x27, 0x7b, 0x5c, 0x6e, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22,
	0x6d, 0x79, 0x2d, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2c, 0x5c, 0x6e,
	0x20, 0x20, 0x22, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x5c, 0x6e,
	0x20, 0x20, 0x20, 0x20, 0x7b, 0x5c, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f,
	0x6e, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x3a, 0x20, 0x7b, 0x5c, 0x6e, 0x20,
	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x6e, 0x54, 0x79, 0x70, 0x65,
	0x22, 0x3a, 0x20, 0x22, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x22, 0x2c, 0x5c, 0x6e, 0x20, 0x20,
	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x6f, 0x73, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x31,
	0x2e, 0x32, 0x2e, 0x33, 0x2e, 0x34, 0x22, 0x2c, 0x5c, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
	0x20, 0x20, 0x22, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x3a, 0x20, 0x33, 0x33, 0x30, 0x36, 0x2c, 0x5c,
	0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3a,
	0x20, 0x22, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x2c, 0x5c, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
	0x20, 0x20, 0x22, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x73,
	0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x5c, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c,
	0x5c, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54,
	0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x22, 0x5c, 0x6e, 0x20,
	0x20, 0x20, 0x20, 0x7d, 0x5c, 0x6e, 0x20, 0x20, 0x5d, 0x2c, 0x5c, 0x6e, 0x20, 0x20, 0x22, 0x74,
	0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x3a, 0x20, 0x7b, 0x5c, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x22,
	0x75, 0x73, 0x65, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x74, 0x69, 0x64, 0x62, 0x22, 0x2c, 0x5c, 0x6e,
	0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x3a, 0x20,
	0x22, 0x74, 0x69, 0x64, 0x62, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x5c,
	0x6e, 0x20, 0x20, 0x7d, 0x2c, 0x5c, 0x6e, 0x20, 0x20, 0x22, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x3a,
	0x20, 0x22, 0x41, 0x4c, 0x4c, 0x22, 0x5c, 0x6e, 0x7d, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36,
	0x3a, 0x01, 0x2a, 0x22, 0x31, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6c,
	0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
	0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65,
	0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0xd3, 0x03, 0x0a, 0x0e, 0x43, 0x61, 0x6e, 0x63, 0x65,
	0x6c, 0x50, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x23, 0x2e, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x31, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x16,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x83, 0x03, 0x92, 0x41, 0xb8, 0x02, 0x0a, 0x09, 0x4d,
	0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6a, 0xaa, 0x02, 0x0a, 0x0d, 0x78, 0x2d, 0x63,
	0x6f, 0x64, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x98, 0x02, 0x32, 0x95, 0x02,
	0x0a, 0x92, 0x02, 0x2a, 0x8f, 0x02, 0x0a, 0x0f, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12,
	0x06, 0x1a, 0x04, 0x63, 0x75, 0x72, 0x6c, 0x0a, 0x0e, 0x0a, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x12,
	0x06, 0x1a, 0x04, 0x63, 0x55, 0x52, 0x4c, 0x0a, 0xeb, 0x01, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72,
	0x63, 0x65, 0x12, 0xe0, 0x01, 0x1a, 0xdd, 0x01, 0x63, 0x75, 0x72, 0x6c, 0x20, 0x2d, 0x2d, 0x6c,
	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2d, 0x2d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x20, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x20, 0x27, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a,
	0x2f, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x74, 0x69, 0x64,
	0x62, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
	0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74,
	0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x50, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x65, 0x63, 0x68,
	0x65, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x27, 0x20, 0x5c, 0x0a, 0x2b, 0x2d, 0x2d, 0x64, 0x69,
	0x67, 0x65, 0x73, 0x74, 0x20, 0x2d, 0x2d, 0x75, 0x73, 0x65, 0x72, 0x20, 0x27, 0x59, 0x4f, 0x55,
	0x52, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x3a, 0x59, 0x4f, 0x55,
	0x52, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x27, 0x20, 0x5c,
	0x0a, 0x2b, 0x2d, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x27, 0x41, 0x63, 0x63, 0x65,
	0x70, 0x74, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f,
	0x6a, 0x73, 0x6f, 0x6e, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x2a, 0x3f, 0x2f, 0x76, 0x31,
	0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b,
	0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x69, 0x67, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x2f, 0x7b,
	0x70, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xc0, 0x03, 0x0a,
	0x0b, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x20, 0x2e, 0x76,
	0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x1a,
	0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x50, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x22, 0xf2, 0x02, 0x92, 0x41, 0xa7,
	0x02, 0x0a, 0x09, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6a, 0x99, 0x02, 0x0a,
	0x0d, 0x78, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x87,
	0x02, 0x32, 0x84, 0x02, 0x0a, 0x81, 0x02, 0x2a, 0xfe, 0x01, 0x0a, 0x0f, 0x0a, 0x05, 0x6c, 0x61,
	0x62, 0x65, 0x6c, 0x12, 0x06, 0x1a, 0x04, 0x63, 0x75, 0x72, 0x6c, 0x0a, 0x0e, 0x0a, 0x04, 0x6c,
	0x61, 0x6e, 0x67, 0x12, 0x06, 0x1a, 0x04, 0x63, 0x55, 0x52, 0x4c, 0x0a, 0xda, 0x01, 0x0a, 0x06,
	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0xcf, 0x01, 0x1a, 0xcc, 0x01, 0x63, 0x75, 0x72, 0x6c,
	0x20, 0x2d, 0x2d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x27, 0x68, 0x74, 0x74,
	0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6c, 0x65, 0x73, 0x73, 0x2e,
	0x74, 0x69, 0x64, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c,
	0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x70, 0x72,
	0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x27, 0x20, 0x5c, 0x0a, 0x2b, 0x2d,
	0x2d, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x20, 0x2d, 0x2d, 0x75, 0x73, 0x65, 0x72, 0x20, 0x27,
	0x59, 0x4f, 0x55, 0x52, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x3a,
	0x59, 0x4f, 0x55, 0x52, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x5f, 0x4b, 0x45, 0x59,
	0x27, 0x20, 0x5c, 0x0a, 0x2b, 0x2d, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x27, 0x41,
	0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x12, 0x3f,
	0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
	0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d,
	0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b,
	0x73, 0x2f, 0x7b, 0x70, 0x72, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x42,
	0xd2, 0x01, 0x92, 0x41, 0x77, 0x0a, 0x03, 0x32, 0x2e, 0x30, 0x12, 0x55, 0x0a, 0x24, 0x54, 0x69,
	0x44, 0x42, 0x20, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x72,
	0x20, 0x61, 0x6e, 0x64, 0x20, 0x45, 0x73, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x20, 0x41,
	0x50, 0x49, 0x12, 0x24, 0x54, 0x69, 0x44, 0x42, 0x20, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x20, 0x53,
	0x74, 0x61, 0x72, 0x74, 0x65, 0x72, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x45, 0x73, 0x73, 0x65, 0x6e,
	0x74, 0x69, 0x61, 0x6c, 0x20, 0x41, 0x50, 0x49, 0x32, 0x07, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
	0x31, 0x1a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x74, 0x69,
	0x64, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x2a, 0x01, 0x02, 0x0a, 0x21, 0x74, 0x69,
	0x64, 0x62, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x65, 0x72,
	0x76, 0x65, 0x72, 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42,
	0x0e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
	0x01, 0x5a, 0x21, 0x74, 0x69, 0x64, 0x62, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x61, 0x70,
	0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6c, 0x65, 0x73, 0x73, 0x2f, 0x76, 0x31, 0x62,
	0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_v1beta1_dm_proto_rawDescOnce sync.Once
	file_v1beta1_dm_proto_rawDescData = file_v1beta1_dm_proto_rawDesc
)

func file_v1beta1_dm_proto_rawDescGZIP() []byte {
	file_v1beta1_dm_proto_rawDescOnce.Do(func() {
		file_v1beta1_dm_proto_rawDescData = protoimpl.X.CompressGZIP(file_v1beta1_dm_proto_rawDescData)
	})
	return file_v1beta1_dm_proto_rawDescData
}

var file_v1beta1_dm_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
var file_v1beta1_dm_proto_msgTypes = make([]protoimpl.MessageInfo, 24)
var file_v1beta1_dm_proto_goTypes = []any{
	(ConnType)(0),                       // 0: v1beta1.ConnType
	(PrecheckItemType)(0),               // 1: v1beta1.PrecheckItemType
	(TaskMode)(0),                       // 2: v1beta1.TaskMode
	(TaskShardMode)(0),                  // 3: v1beta1.TaskShardMode
	(MigrationPrecheck_Status)(0),       // 4: v1beta1.MigrationPrecheck.Status
	(PrecheckItem_Status)(0),            // 5: v1beta1.PrecheckItem.Status
	(Migration_State)(0),                // 6: v1beta1.Migration.State
	(SubTask_Step)(0),                   // 7: v1beta1.SubTask.Step
	(SubTask_Stage)(0),                  // 8: v1beta1.SubTask.Stage
	(Source_SourceType)(0),              // 9: v1beta1.Source.SourceType
	(*GetMigrationPrecheckReq)(nil),     // 10: v1beta1.GetMigrationPrecheckReq
	(*CancelMigrationPrecheckReq)(nil),  // 11: v1beta1.CancelMigrationPrecheckReq
	(*MigrationPrecheck)(nil),           // 12: v1beta1.MigrationPrecheck
	(*CreateMigrationPrecheckResp)(nil), // 13: v1beta1.CreateMigrationPrecheckResp
	(*PrecheckItem)(nil),                // 14: v1beta1.PrecheckItem
	(*CreateMigrationReq)(nil),          // 15: v1beta1.CreateMigrationReq
	(*Target)(nil),                      // 16: v1beta1.Target
	(*MigrationRule)(nil),               // 17: v1beta1.MigrationRule
	(*Migration)(nil),                   // 18: v1beta1.Migration
	(*SubTask)(nil),                     // 19: v1beta1.SubTask
	(*Source)(nil),                      // 20: v1beta1.Source
	(*DumpDetail)(nil),                  // 21: v1beta1.DumpDetail
	(*LoadDetail)(nil),                  // 22: v1beta1.LoadDetail
	(*SyncDetail)(nil),                  // 23: v1beta1.SyncDetail
	(*ConnProfile)(nil),                 // 24: v1beta1.ConnProfile
	(*Security)(nil),                    // 25: v1beta1.Security
	(*GetMigrationReq)(nil),             // 26: v1beta1.GetMigrationReq
	(*ListMigrationsReq)(nil),           // 27: v1beta1.ListMigrationsReq
	(*ListMigrationsResp)(nil),          // 28: v1beta1.ListMigrationsResp
	(*DeleteMigrationReq)(nil),          // 29: v1beta1.DeleteMigrationReq
	(*PauseMigrationReq)(nil),           // 30: v1beta1.PauseMigrationReq
	(*ResumeMigrationReq)(nil),          // 31: v1beta1.ResumeMigrationReq
	(*MigrationRule_Source)(nil),        // 32: v1beta1.MigrationRule.Source
	(*MigrationRule_Table)(nil),         // 33: v1beta1.MigrationRule.Table
	(*timestamppb.Timestamp)(nil),       // 34: google.protobuf.Timestamp
	(*emptypb.Empty)(nil),               // 35: google.protobuf.Empty
}
var file_v1beta1_dm_proto_depIdxs = []int32{
	4,  // 0: v1beta1.MigrationPrecheck.status:type_name -> v1beta1.MigrationPrecheck.Status
	14, // 1: v1beta1.MigrationPrecheck.items:type_name -> v1beta1.PrecheckItem
	5,  // 2: v1beta1.PrecheckItem.status:type_name -> v1beta1.PrecheckItem.Status
	1,  // 3: v1beta1.PrecheckItem.type:type_name -> v1beta1.PrecheckItemType
	20, // 4: v1beta1.CreateMigrationReq.sources:type_name -> v1beta1.Source
	16, // 5: v1beta1.CreateMigrationReq.target:type_name -> v1beta1.Target
	2,  // 6: v1beta1.CreateMigrationReq.mode:type_name -> v1beta1.TaskMode
	3,  // 7: v1beta1.CreateMigrationReq.shard_mode:type_name -> v1beta1.TaskShardMode
	32, // 8: v1beta1.MigrationRule.source_table:type_name -> v1beta1.MigrationRule.Source
	33, // 9: v1beta1.MigrationRule.target_table:type_name -> v1beta1.MigrationRule.Table
	19, // 10: v1beta1.Migration.sub_tasks:type_name -> v1beta1.SubTask
	34, // 11: v1beta1.Migration.create_time:type_name -> google.protobuf.Timestamp
	2,  // 12: v1beta1.Migration.mode:type_name -> v1beta1.TaskMode
	6,  // 13: v1beta1.Migration.state:type_name -> v1beta1.Migration.State
	20, // 14: v1beta1.SubTask.source:type_name -> v1beta1.Source
	7,  // 15: v1beta1.SubTask.current_step:type_name -> v1beta1.SubTask.Step
	8,  // 16: v1beta1.SubTask.stage:type_name -> v1beta1.SubTask.Stage
	21, // 17: v1beta1.SubTask.dump_detail:type_name -> v1beta1.DumpDetail
	22, // 18: v1beta1.SubTask.load_detail:type_name -> v1beta1.LoadDetail
	23, // 19: v1beta1.SubTask.sync_detail:type_name -> v1beta1.SyncDetail
	24, // 20: v1beta1.Source.conn_profile:type_name -> v1beta1.ConnProfile
	17, // 21: v1beta1.Source.migration_rules:type_name -> v1beta1.MigrationRule
	9,  // 22: v1beta1.Source.source_type:type_name -> v1beta1.Source.SourceType
	0,  // 23: v1beta1.ConnProfile.conn_type:type_name -> v1beta1.ConnType
	25, // 24: v1beta1.ConnProfile.security:type_name -> v1beta1.Security
	18, // 25: v1beta1.ListMigrationsResp.migrations:type_name -> v1beta1.Migration
	15, // 26: v1beta1.MigrationService.CreateMigration:input_type -> v1beta1.CreateMigrationReq
	26, // 27: v1beta1.MigrationService.GetMigration:input_type -> v1beta1.GetMigrationReq
	27, // 28: v1beta1.MigrationService.ListMigrations:input_type -> v1beta1.ListMigrationsReq
	29, // 29: v1beta1.MigrationService.DeleteMigration:input_type -> v1beta1.DeleteMigrationReq
	30, // 30: v1beta1.MigrationService.PauseMigration:input_type -> v1beta1.PauseMigrationReq
	31, // 31: v1beta1.MigrationService.ResumeMigration:input_type -> v1beta1.ResumeMigrationReq
	15, // 32: v1beta1.MigrationService.Precheck:input_type -> v1beta1.CreateMigrationReq
	11, // 33: v1beta1.MigrationService.CancelPrecheck:input_type -> v1beta1.CancelMigrationPrecheckReq
	10, // 34: v1beta1.MigrationService.GetPrecheck:input_type -> v1beta1.GetMigrationPrecheckReq
	18, // 35: v1beta1.MigrationService.CreateMigration:output_type -> v1beta1.Migration
	18, // 36: v1beta1.MigrationService.GetMigration:output_type -> v1beta1.Migration
	28, // 37: v1beta1.MigrationService.ListMigrations:output_type -> v1beta1.ListMigrationsResp
	18, // 38: v1beta1.MigrationService.DeleteMigration:output_type -> v1beta1.Migration
	35, // 39: v1beta1.MigrationService.PauseMigration:output_type -> google.protobuf.Empty
	35, // 40: v1beta1.MigrationService.ResumeMigration:output_type -> google.protobuf.Empty
	13, // 41: v1beta1.MigrationService.Precheck:output_type -> v1beta1.CreateMigrationPrecheckResp
	35, // 42: v1beta1.MigrationService.CancelPrecheck:output_type -> google.protobuf.Empty
	12, // 43: v1beta1.MigrationService.GetPrecheck:output_type -> v1beta1.MigrationPrecheck
	35, // [35:44] is the sub-list for method output_type
	26, // [26:35] is the sub-list for method input_type
	26, // [26:26] is the sub-list for extension type_name
	26, // [26:26] is the sub-list for extension extendee
	0,  // [0:26] is the sub-list for field type_name
}

func init() { file_v1beta1_dm_proto_init() }
func file_v1beta1_dm_proto_init() {
	if File_v1beta1_dm_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_v1beta1_dm_proto_msgTypes[0].Exporter = func(v any, i int) any {
			switch v := v.(*GetMigrationPrecheckReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[1].Exporter = func(v any, i int) any {
			switch v := v.(*CancelMigrationPrecheckReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[2].Exporter = func(v any, i int) any {
			switch v := v.(*MigrationPrecheck); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[3].Exporter = func(v any, i int) any {
			switch v := v.(*CreateMigrationPrecheckResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[4].Exporter = func(v any, i int) any {
			switch v := v.(*PrecheckItem); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[5].Exporter = func(v any, i int) any {
			switch v := v.(*CreateMigrationReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[6].Exporter = func(v any, i int) any {
			switch v := v.(*Target); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[7].Exporter = func(v any, i int) any {
			switch v := v.(*MigrationRule); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[8].Exporter = func(v any, i int) any {
			switch v := v.(*Migration); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[9].Exporter = func(v any, i int) any {
			switch v := v.(*SubTask); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[10].Exporter = func(v any, i int) any {
			switch v := v.(*Source); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[11].Exporter = func(v any, i int) any {
			switch v := v.(*DumpDetail); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[12].Exporter = func(v any, i int) any {
			switch v := v.(*LoadDetail); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[13].Exporter = func(v any, i int) any {
			switch v := v.(*SyncDetail); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[14].Exporter = func(v any, i int) any {
			switch v := v.(*ConnProfile); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[15].Exporter = func(v any, i int) any {
			switch v := v.(*Security); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[16].Exporter = func(v any, i int) any {
			switch v := v.(*GetMigrationReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[17].Exporter = func(v any, i int) any {
			switch v := v.(*ListMigrationsReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[18].Exporter = func(v any, i int) any {
			switch v := v.(*ListMigrationsResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[19].Exporter = func(v any, i int) any {
			switch v := v.(*DeleteMigrationReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[20].Exporter = func(v any, i int) any {
			switch v := v.(*PauseMigrationReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[21].Exporter = func(v any, i int) any {
			switch v := v.(*ResumeMigrationReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[22].Exporter = func(v any, i int) any {
			switch v := v.(*MigrationRule_Source); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_v1beta1_dm_proto_msgTypes[23].Exporter = func(v any, i int) any {
			switch v := v.(*MigrationRule_Table); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_v1beta1_dm_proto_msgTypes[5].OneofWrappers = []any{}
	file_v1beta1_dm_proto_msgTypes[9].OneofWrappers = []any{}
	file_v1beta1_dm_proto_msgTypes[10].OneofWrappers = []any{}
	file_v1beta1_dm_proto_msgTypes[14].OneofWrappers = []any{
		(*ConnProfile_EndpointId)(nil),
		(*ConnProfile_Host)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_v1beta1_dm_proto_rawDesc,
			NumEnums:      10,
			NumMessages:   24,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_v1beta1_dm_proto_goTypes,
		DependencyIndexes: file_v1beta1_dm_proto_depIdxs,
		EnumInfos:         file_v1beta1_dm_proto_enumTypes,
		MessageInfos:      file_v1beta1_dm_proto_msgTypes,
	}.Build()
	File_v1beta1_dm_proto = out.File
	file_v1beta1_dm_proto_rawDesc = nil
	file_v1beta1_dm_proto_goTypes = nil
	file_v1beta1_dm_proto_depIdxs = nil
}
