From deb9b750154d96216e564e7c611f982ccc17241a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juho=20M=C3=A4kinen?= Date: Wed, 27 Nov 2024 10:24:05 +1100 Subject: [PATCH] feat: db runtime as resource output (#3523) - Uses DatabaseRuntime directly as Resource output in provisioning - Separate Read and Write connector in the runtime - Extract logic under `internal/infra` to convert the runtime connector to a DSN --- backend/controller/controller.go | 2 +- .../sql/database_integration_test.go | 2 +- backend/controller/sql/sqltest/testing.go | 2 +- .../xyz/block/ftl/v1/schema/schema.pb.go | 1984 +++++++++-------- .../xyz/block/ftl/v1/schema/schema.proto | 11 +- .../ftl/v1beta1/provisioner/resource.pb.go | 353 +-- .../ftl/v1beta1/provisioner/resource.proto | 12 +- backend/provisioner/controller_provisioner.go | 16 +- backend/provisioner/deployment_test.go | 16 +- backend/provisioner/dev_provisioner.go | 43 +- backend/provisioner/registry.go | 3 +- backend/provisioner/resource_equality_test.go | 11 +- .../provisioner/sql_migration_provisioner.go | 19 +- backend/runner/runner.go | 14 +- cmd/ftl-controller/main.go | 2 +- cmd/ftl-initdb/main.go | 2 +- cmd/ftl-provisioner-cloudformation/status.go | 21 +- frontend/cli/main.go | 2 +- .../xyz/block/ftl/v1/schema/schema_pb.ts | 81 +- .../ftl/v1beta1/provisioner/resource_pb.ts | 100 +- internal/dev/db.go | 2 +- {backend/controller => internal}/dsn/dsn.go | 23 +- internal/integration/actions.go | 2 +- internal/schema/data.go | 3 +- internal/schema/database.go | 75 +- internal/schema/jsonschema.go | 3 +- internal/schema/redact_test.go | 5 +- internal/schema/validate.go | 6 +- .../xyz/block/ftl/v1/schema/schema_pb2.py | 212 +- .../xyz/block/ftl/v1/schema/schema_pb2.pyi | 18 +- .../ftl/v1beta1/provisioner/resource_pb2.py | 46 +- .../ftl/v1beta1/provisioner/resource_pb2.pyi | 22 +- 32 files changed, 1559 insertions(+), 1554 deletions(-) rename {backend/controller => internal}/dsn/dsn.go (60%) diff --git a/backend/controller/controller.go b/backend/controller/controller.go index 54de065077..b6d23c4fb0 100644 --- a/backend/controller/controller.go +++ b/backend/controller/controller.go @@ -39,7 +39,6 @@ import ( "github.com/TBD54566975/ftl/backend/controller/console" "github.com/TBD54566975/ftl/backend/controller/dal" dalmodel "github.com/TBD54566975/ftl/backend/controller/dal/model" - "github.com/TBD54566975/ftl/backend/controller/dsn" "github.com/TBD54566975/ftl/backend/controller/encryption" "github.com/TBD54566975/ftl/backend/controller/leases" "github.com/TBD54566975/ftl/backend/controller/leases/dbleaser" @@ -56,6 +55,7 @@ import ( frontend "github.com/TBD54566975/ftl/frontend/console" "github.com/TBD54566975/ftl/internal/configuration" cf "github.com/TBD54566975/ftl/internal/configuration/manager" + "github.com/TBD54566975/ftl/internal/dsn" "github.com/TBD54566975/ftl/internal/log" ftlmaps "github.com/TBD54566975/ftl/internal/maps" "github.com/TBD54566975/ftl/internal/model" diff --git a/backend/controller/sql/database_integration_test.go b/backend/controller/sql/database_integration_test.go index d441fec7dc..d6f1fb7c86 100644 --- a/backend/controller/sql/database_integration_test.go +++ b/backend/controller/sql/database_integration_test.go @@ -7,7 +7,7 @@ import ( "github.com/alecthomas/assert/v2" - "github.com/TBD54566975/ftl/backend/controller/dsn" + "github.com/TBD54566975/ftl/internal/dsn" in "github.com/TBD54566975/ftl/internal/integration" ) diff --git a/backend/controller/sql/sqltest/testing.go b/backend/controller/sql/sqltest/testing.go index 97adadd119..cb007d104a 100644 --- a/backend/controller/sql/sqltest/testing.go +++ b/backend/controller/sql/sqltest/testing.go @@ -10,8 +10,8 @@ import ( "github.com/alecthomas/assert/v2" - "github.com/TBD54566975/ftl/backend/controller/dsn" "github.com/TBD54566975/ftl/backend/controller/sql/databasetesting" + "github.com/TBD54566975/ftl/internal/dsn" "github.com/TBD54566975/ftl/internal/flock" ) diff --git a/backend/protos/xyz/block/ftl/v1/schema/schema.pb.go b/backend/protos/xyz/block/ftl/v1/schema/schema.pb.go index a008a14459..f55eec1f2d 100644 --- a/backend/protos/xyz/block/ftl/v1/schema/schema.pb.go +++ b/backend/protos/xyz/block/ftl/v1/schema/schema.pb.go @@ -323,7 +323,7 @@ func (x *Config) GetType() *Type { return nil } -type DSNDatabaseRuntime struct { +type DSNDatabaseConnector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -332,20 +332,20 @@ type DSNDatabaseRuntime struct { Dsn string `protobuf:"bytes,2,opt,name=dsn,proto3" json:"dsn,omitempty"` } -func (x *DSNDatabaseRuntime) Reset() { - *x = DSNDatabaseRuntime{} +func (x *DSNDatabaseConnector) Reset() { + *x = DSNDatabaseConnector{} mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *DSNDatabaseRuntime) String() string { +func (x *DSNDatabaseConnector) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DSNDatabaseRuntime) ProtoMessage() {} +func (*DSNDatabaseConnector) ProtoMessage() {} -func (x *DSNDatabaseRuntime) ProtoReflect() protoreflect.Message { +func (x *DSNDatabaseConnector) ProtoReflect() protoreflect.Message { mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -357,19 +357,19 @@ func (x *DSNDatabaseRuntime) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DSNDatabaseRuntime.ProtoReflect.Descriptor instead. -func (*DSNDatabaseRuntime) Descriptor() ([]byte, []int) { +// Deprecated: Use DSNDatabaseConnector.ProtoReflect.Descriptor instead. +func (*DSNDatabaseConnector) Descriptor() ([]byte, []int) { return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{5} } -func (x *DSNDatabaseRuntime) GetPos() *Position { +func (x *DSNDatabaseConnector) GetPos() *Position { if x != nil { return x.Pos } return nil } -func (x *DSNDatabaseRuntime) GetDsn() string { +func (x *DSNDatabaseConnector) GetDsn() string { if x != nil { return x.Dsn } @@ -554,31 +554,31 @@ func (x *Database) GetMetadata() []*Metadata { return nil } -type DatabaseRuntime struct { +type DatabaseConnector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Value: // - // *DatabaseRuntime_DsnDatabaseRuntime - Value isDatabaseRuntime_Value `protobuf_oneof:"value"` + // *DatabaseConnector_DsnDatabaseConnector + Value isDatabaseConnector_Value `protobuf_oneof:"value"` } -func (x *DatabaseRuntime) Reset() { - *x = DatabaseRuntime{} +func (x *DatabaseConnector) Reset() { + *x = DatabaseConnector{} mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *DatabaseRuntime) String() string { +func (x *DatabaseConnector) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DatabaseRuntime) ProtoMessage() {} +func (*DatabaseConnector) ProtoMessage() {} -func (x *DatabaseRuntime) ProtoReflect() protoreflect.Message { +func (x *DatabaseConnector) ProtoReflect() protoreflect.Message { mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -590,34 +590,87 @@ func (x *DatabaseRuntime) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DatabaseRuntime.ProtoReflect.Descriptor instead. -func (*DatabaseRuntime) Descriptor() ([]byte, []int) { +// Deprecated: Use DatabaseConnector.ProtoReflect.Descriptor instead. +func (*DatabaseConnector) Descriptor() ([]byte, []int) { return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{8} } -func (m *DatabaseRuntime) GetValue() isDatabaseRuntime_Value { +func (m *DatabaseConnector) GetValue() isDatabaseConnector_Value { if m != nil { return m.Value } return nil } -func (x *DatabaseRuntime) GetDsnDatabaseRuntime() *DSNDatabaseRuntime { - if x, ok := x.GetValue().(*DatabaseRuntime_DsnDatabaseRuntime); ok { - return x.DsnDatabaseRuntime +func (x *DatabaseConnector) GetDsnDatabaseConnector() *DSNDatabaseConnector { + if x, ok := x.GetValue().(*DatabaseConnector_DsnDatabaseConnector); ok { + return x.DsnDatabaseConnector } return nil } -type isDatabaseRuntime_Value interface { - isDatabaseRuntime_Value() +type isDatabaseConnector_Value interface { + isDatabaseConnector_Value() +} + +type DatabaseConnector_DsnDatabaseConnector struct { + DsnDatabaseConnector *DSNDatabaseConnector `protobuf:"bytes,1,opt,name=dsn_database_connector,json=dsnDatabaseConnector,proto3,oneof"` +} + +func (*DatabaseConnector_DsnDatabaseConnector) isDatabaseConnector_Value() {} + +type DatabaseRuntime struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ReadConnector *DatabaseConnector `protobuf:"bytes,1,opt,name=read_connector,json=readConnector,proto3" json:"read_connector,omitempty"` + WriteConnector *DatabaseConnector `protobuf:"bytes,2,opt,name=write_connector,json=writeConnector,proto3" json:"write_connector,omitempty"` +} + +func (x *DatabaseRuntime) Reset() { + *x = DatabaseRuntime{} + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DatabaseRuntime) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DatabaseRuntime) ProtoMessage() {} + +func (x *DatabaseRuntime) ProtoReflect() protoreflect.Message { + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DatabaseRuntime.ProtoReflect.Descriptor instead. +func (*DatabaseRuntime) Descriptor() ([]byte, []int) { + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{9} } -type DatabaseRuntime_DsnDatabaseRuntime struct { - DsnDatabaseRuntime *DSNDatabaseRuntime `protobuf:"bytes,1,opt,name=dsn_database_runtime,json=dsnDatabaseRuntime,proto3,oneof"` +func (x *DatabaseRuntime) GetReadConnector() *DatabaseConnector { + if x != nil { + return x.ReadConnector + } + return nil } -func (*DatabaseRuntime_DsnDatabaseRuntime) isDatabaseRuntime_Value() {} +func (x *DatabaseRuntime) GetWriteConnector() *DatabaseConnector { + if x != nil { + return x.WriteConnector + } + return nil +} type Decl struct { state protoimpl.MessageState @@ -640,7 +693,7 @@ type Decl struct { func (x *Decl) Reset() { *x = Decl{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[9] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -652,7 +705,7 @@ func (x *Decl) String() string { func (*Decl) ProtoMessage() {} func (x *Decl) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[9] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -665,7 +718,7 @@ func (x *Decl) ProtoReflect() protoreflect.Message { // Deprecated: Use Decl.ProtoReflect.Descriptor instead. func (*Decl) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{9} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{10} } func (m *Decl) GetValue() isDecl_Value { @@ -811,7 +864,7 @@ type Enum struct { func (x *Enum) Reset() { *x = Enum{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[10] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -823,7 +876,7 @@ func (x *Enum) String() string { func (*Enum) ProtoMessage() {} func (x *Enum) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[10] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -836,7 +889,7 @@ func (x *Enum) ProtoReflect() protoreflect.Message { // Deprecated: Use Enum.ProtoReflect.Descriptor instead. func (*Enum) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{10} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{11} } func (x *Enum) GetPos() *Position { @@ -894,7 +947,7 @@ type EnumVariant struct { func (x *EnumVariant) Reset() { *x = EnumVariant{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[11] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -906,7 +959,7 @@ func (x *EnumVariant) String() string { func (*EnumVariant) ProtoMessage() {} func (x *EnumVariant) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[11] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -919,7 +972,7 @@ func (x *EnumVariant) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumVariant.ProtoReflect.Descriptor instead. func (*EnumVariant) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{11} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{12} } func (x *EnumVariant) GetPos() *Position { @@ -964,7 +1017,7 @@ type Field struct { func (x *Field) Reset() { *x = Field{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[12] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -976,7 +1029,7 @@ func (x *Field) String() string { func (*Field) ProtoMessage() {} func (x *Field) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[12] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -989,7 +1042,7 @@ func (x *Field) ProtoReflect() protoreflect.Message { // Deprecated: Use Field.ProtoReflect.Descriptor instead. func (*Field) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{12} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{13} } func (x *Field) GetPos() *Position { @@ -1037,7 +1090,7 @@ type Float struct { func (x *Float) Reset() { *x = Float{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[13] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1049,7 +1102,7 @@ func (x *Float) String() string { func (*Float) ProtoMessage() {} func (x *Float) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[13] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1062,7 +1115,7 @@ func (x *Float) ProtoReflect() protoreflect.Message { // Deprecated: Use Float.ProtoReflect.Descriptor instead. func (*Float) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{13} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{14} } func (x *Float) GetPos() *Position { @@ -1086,7 +1139,7 @@ type IngressPathComponent struct { func (x *IngressPathComponent) Reset() { *x = IngressPathComponent{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[14] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1098,7 +1151,7 @@ func (x *IngressPathComponent) String() string { func (*IngressPathComponent) ProtoMessage() {} func (x *IngressPathComponent) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[14] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1111,7 +1164,7 @@ func (x *IngressPathComponent) ProtoReflect() protoreflect.Message { // Deprecated: Use IngressPathComponent.ProtoReflect.Descriptor instead. func (*IngressPathComponent) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{14} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{15} } func (m *IngressPathComponent) GetValue() isIngressPathComponent_Value { @@ -1162,7 +1215,7 @@ type IngressPathLiteral struct { func (x *IngressPathLiteral) Reset() { *x = IngressPathLiteral{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[15] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1174,7 +1227,7 @@ func (x *IngressPathLiteral) String() string { func (*IngressPathLiteral) ProtoMessage() {} func (x *IngressPathLiteral) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[15] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1187,7 +1240,7 @@ func (x *IngressPathLiteral) ProtoReflect() protoreflect.Message { // Deprecated: Use IngressPathLiteral.ProtoReflect.Descriptor instead. func (*IngressPathLiteral) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{15} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{16} } func (x *IngressPathLiteral) GetPos() *Position { @@ -1215,7 +1268,7 @@ type IngressPathParameter struct { func (x *IngressPathParameter) Reset() { *x = IngressPathParameter{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[16] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1227,7 +1280,7 @@ func (x *IngressPathParameter) String() string { func (*IngressPathParameter) ProtoMessage() {} func (x *IngressPathParameter) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[16] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1240,7 +1293,7 @@ func (x *IngressPathParameter) ProtoReflect() protoreflect.Message { // Deprecated: Use IngressPathParameter.ProtoReflect.Descriptor instead. func (*IngressPathParameter) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{16} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{17} } func (x *IngressPathParameter) GetPos() *Position { @@ -1267,7 +1320,7 @@ type Int struct { func (x *Int) Reset() { *x = Int{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[17] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1279,7 +1332,7 @@ func (x *Int) String() string { func (*Int) ProtoMessage() {} func (x *Int) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[17] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1292,7 +1345,7 @@ func (x *Int) ProtoReflect() protoreflect.Message { // Deprecated: Use Int.ProtoReflect.Descriptor instead. func (*Int) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{17} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{18} } func (x *Int) GetPos() *Position { @@ -1313,7 +1366,7 @@ type IntValue struct { func (x *IntValue) Reset() { *x = IntValue{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[18] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1325,7 +1378,7 @@ func (x *IntValue) String() string { func (*IntValue) ProtoMessage() {} func (x *IntValue) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[18] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1338,7 +1391,7 @@ func (x *IntValue) ProtoReflect() protoreflect.Message { // Deprecated: Use IntValue.ProtoReflect.Descriptor instead. func (*IntValue) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{18} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{19} } func (x *IntValue) GetPos() *Position { @@ -1367,7 +1420,7 @@ type Map struct { func (x *Map) Reset() { *x = Map{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[19] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1379,7 +1432,7 @@ func (x *Map) String() string { func (*Map) ProtoMessage() {} func (x *Map) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[19] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1392,7 +1445,7 @@ func (x *Map) ProtoReflect() protoreflect.Message { // Deprecated: Use Map.ProtoReflect.Descriptor instead. func (*Map) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{19} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{20} } func (x *Map) GetPos() *Position { @@ -1441,7 +1494,7 @@ type Metadata struct { func (x *Metadata) Reset() { *x = Metadata{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[20] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1453,7 +1506,7 @@ func (x *Metadata) String() string { func (*Metadata) ProtoMessage() {} func (x *Metadata) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[20] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1466,7 +1519,7 @@ func (x *Metadata) ProtoReflect() protoreflect.Message { // Deprecated: Use Metadata.ProtoReflect.Descriptor instead. func (*Metadata) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{20} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{21} } func (m *Metadata) GetValue() isMetadata_Value { @@ -1661,7 +1714,7 @@ type MetadataAlias struct { func (x *MetadataAlias) Reset() { *x = MetadataAlias{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[21] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1673,7 +1726,7 @@ func (x *MetadataAlias) String() string { func (*MetadataAlias) ProtoMessage() {} func (x *MetadataAlias) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[21] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1686,7 +1739,7 @@ func (x *MetadataAlias) ProtoReflect() protoreflect.Message { // Deprecated: Use MetadataAlias.ProtoReflect.Descriptor instead. func (*MetadataAlias) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{21} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{22} } func (x *MetadataAlias) GetPos() *Position { @@ -1721,7 +1774,7 @@ type MetadataCalls struct { func (x *MetadataCalls) Reset() { *x = MetadataCalls{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[22] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1733,7 +1786,7 @@ func (x *MetadataCalls) String() string { func (*MetadataCalls) ProtoMessage() {} func (x *MetadataCalls) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[22] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1746,7 +1799,7 @@ func (x *MetadataCalls) ProtoReflect() protoreflect.Message { // Deprecated: Use MetadataCalls.ProtoReflect.Descriptor instead. func (*MetadataCalls) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{22} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{23} } func (x *MetadataCalls) GetPos() *Position { @@ -1774,7 +1827,7 @@ type MetadataConfig struct { func (x *MetadataConfig) Reset() { *x = MetadataConfig{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[23] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1786,7 +1839,7 @@ func (x *MetadataConfig) String() string { func (*MetadataConfig) ProtoMessage() {} func (x *MetadataConfig) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[23] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1799,7 +1852,7 @@ func (x *MetadataConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use MetadataConfig.ProtoReflect.Descriptor instead. func (*MetadataConfig) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{23} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{24} } func (x *MetadataConfig) GetPos() *Position { @@ -1827,7 +1880,7 @@ type MetadataCronJob struct { func (x *MetadataCronJob) Reset() { *x = MetadataCronJob{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[24] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1839,7 +1892,7 @@ func (x *MetadataCronJob) String() string { func (*MetadataCronJob) ProtoMessage() {} func (x *MetadataCronJob) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[24] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1852,7 +1905,7 @@ func (x *MetadataCronJob) ProtoReflect() protoreflect.Message { // Deprecated: Use MetadataCronJob.ProtoReflect.Descriptor instead. func (*MetadataCronJob) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{24} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{25} } func (x *MetadataCronJob) GetPos() *Position { @@ -1880,7 +1933,7 @@ type MetadataDatabases struct { func (x *MetadataDatabases) Reset() { *x = MetadataDatabases{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[25] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1892,7 +1945,7 @@ func (x *MetadataDatabases) String() string { func (*MetadataDatabases) ProtoMessage() {} func (x *MetadataDatabases) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[25] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1905,7 +1958,7 @@ func (x *MetadataDatabases) ProtoReflect() protoreflect.Message { // Deprecated: Use MetadataDatabases.ProtoReflect.Descriptor instead. func (*MetadataDatabases) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{25} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{26} } func (x *MetadataDatabases) GetPos() *Position { @@ -1934,7 +1987,7 @@ type MetadataEncoding struct { func (x *MetadataEncoding) Reset() { *x = MetadataEncoding{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[26] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1946,7 +1999,7 @@ func (x *MetadataEncoding) String() string { func (*MetadataEncoding) ProtoMessage() {} func (x *MetadataEncoding) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[26] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1959,7 +2012,7 @@ func (x *MetadataEncoding) ProtoReflect() protoreflect.Message { // Deprecated: Use MetadataEncoding.ProtoReflect.Descriptor instead. func (*MetadataEncoding) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{26} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{27} } func (x *MetadataEncoding) GetPos() *Position { @@ -1996,7 +2049,7 @@ type MetadataIngress struct { func (x *MetadataIngress) Reset() { *x = MetadataIngress{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[27] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2008,7 +2061,7 @@ func (x *MetadataIngress) String() string { func (*MetadataIngress) ProtoMessage() {} func (x *MetadataIngress) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[27] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2021,7 +2074,7 @@ func (x *MetadataIngress) ProtoReflect() protoreflect.Message { // Deprecated: Use MetadataIngress.ProtoReflect.Descriptor instead. func (*MetadataIngress) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{27} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{28} } func (x *MetadataIngress) GetPos() *Position { @@ -2063,7 +2116,7 @@ type MetadataPublisher struct { func (x *MetadataPublisher) Reset() { *x = MetadataPublisher{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[28] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2075,7 +2128,7 @@ func (x *MetadataPublisher) String() string { func (*MetadataPublisher) ProtoMessage() {} func (x *MetadataPublisher) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[28] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2088,7 +2141,7 @@ func (x *MetadataPublisher) ProtoReflect() protoreflect.Message { // Deprecated: Use MetadataPublisher.ProtoReflect.Descriptor instead. func (*MetadataPublisher) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{28} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{29} } func (x *MetadataPublisher) GetPos() *Position { @@ -2119,7 +2172,7 @@ type MetadataRetry struct { func (x *MetadataRetry) Reset() { *x = MetadataRetry{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[29] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2131,7 +2184,7 @@ func (x *MetadataRetry) String() string { func (*MetadataRetry) ProtoMessage() {} func (x *MetadataRetry) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[29] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2144,7 +2197,7 @@ func (x *MetadataRetry) ProtoReflect() protoreflect.Message { // Deprecated: Use MetadataRetry.ProtoReflect.Descriptor instead. func (*MetadataRetry) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{29} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{30} } func (x *MetadataRetry) GetPos() *Position { @@ -2193,7 +2246,7 @@ type MetadataSQLMigration struct { func (x *MetadataSQLMigration) Reset() { *x = MetadataSQLMigration{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[30] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2205,7 +2258,7 @@ func (x *MetadataSQLMigration) String() string { func (*MetadataSQLMigration) ProtoMessage() {} func (x *MetadataSQLMigration) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[30] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2218,7 +2271,7 @@ func (x *MetadataSQLMigration) ProtoReflect() protoreflect.Message { // Deprecated: Use MetadataSQLMigration.ProtoReflect.Descriptor instead. func (*MetadataSQLMigration) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{30} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{31} } func (x *MetadataSQLMigration) GetPos() *Position { @@ -2246,7 +2299,7 @@ type MetadataSecrets struct { func (x *MetadataSecrets) Reset() { *x = MetadataSecrets{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[31] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2258,7 +2311,7 @@ func (x *MetadataSecrets) String() string { func (*MetadataSecrets) ProtoMessage() {} func (x *MetadataSecrets) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[31] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2271,7 +2324,7 @@ func (x *MetadataSecrets) ProtoReflect() protoreflect.Message { // Deprecated: Use MetadataSecrets.ProtoReflect.Descriptor instead. func (*MetadataSecrets) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{31} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{32} } func (x *MetadataSecrets) GetPos() *Position { @@ -2299,7 +2352,7 @@ type MetadataSubscriber struct { func (x *MetadataSubscriber) Reset() { *x = MetadataSubscriber{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[32] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2311,7 +2364,7 @@ func (x *MetadataSubscriber) String() string { func (*MetadataSubscriber) ProtoMessage() {} func (x *MetadataSubscriber) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[32] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2324,7 +2377,7 @@ func (x *MetadataSubscriber) ProtoReflect() protoreflect.Message { // Deprecated: Use MetadataSubscriber.ProtoReflect.Descriptor instead. func (*MetadataSubscriber) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{32} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{33} } func (x *MetadataSubscriber) GetPos() *Position { @@ -2353,7 +2406,7 @@ type MetadataTypeMap struct { func (x *MetadataTypeMap) Reset() { *x = MetadataTypeMap{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[33] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2365,7 +2418,7 @@ func (x *MetadataTypeMap) String() string { func (*MetadataTypeMap) ProtoMessage() {} func (x *MetadataTypeMap) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[33] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2378,7 +2431,7 @@ func (x *MetadataTypeMap) ProtoReflect() protoreflect.Message { // Deprecated: Use MetadataTypeMap.ProtoReflect.Descriptor instead. func (*MetadataTypeMap) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{33} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{34} } func (x *MetadataTypeMap) GetPos() *Position { @@ -2417,7 +2470,7 @@ type Module struct { func (x *Module) Reset() { *x = Module{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[34] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2429,7 +2482,7 @@ func (x *Module) String() string { func (*Module) ProtoMessage() {} func (x *Module) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[34] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2442,7 +2495,7 @@ func (x *Module) ProtoReflect() protoreflect.Message { // Deprecated: Use Module.ProtoReflect.Descriptor instead. func (*Module) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{34} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{35} } func (x *Module) GetPos() *Position { @@ -2502,7 +2555,7 @@ type ModuleRuntime struct { func (x *ModuleRuntime) Reset() { *x = ModuleRuntime{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[35] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2514,7 +2567,7 @@ func (x *ModuleRuntime) String() string { func (*ModuleRuntime) ProtoMessage() {} func (x *ModuleRuntime) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[35] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2527,7 +2580,7 @@ func (x *ModuleRuntime) ProtoReflect() protoreflect.Message { // Deprecated: Use ModuleRuntime.ProtoReflect.Descriptor instead. func (*ModuleRuntime) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{35} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{36} } func (x *ModuleRuntime) GetCreateTime() *timestamppb.Timestamp { @@ -2583,7 +2636,7 @@ type Optional struct { func (x *Optional) Reset() { *x = Optional{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[36] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2595,7 +2648,7 @@ func (x *Optional) String() string { func (*Optional) ProtoMessage() {} func (x *Optional) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[36] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2608,7 +2661,7 @@ func (x *Optional) ProtoReflect() protoreflect.Message { // Deprecated: Use Optional.ProtoReflect.Descriptor instead. func (*Optional) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{36} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{37} } func (x *Optional) GetPos() *Position { @@ -2637,7 +2690,7 @@ type Position struct { func (x *Position) Reset() { *x = Position{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[37] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2649,7 +2702,7 @@ func (x *Position) String() string { func (*Position) ProtoMessage() {} func (x *Position) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[37] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2662,7 +2715,7 @@ func (x *Position) ProtoReflect() protoreflect.Message { // Deprecated: Use Position.ProtoReflect.Descriptor instead. func (*Position) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{37} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{38} } func (x *Position) GetFilename() string { @@ -2699,7 +2752,7 @@ type Ref struct { func (x *Ref) Reset() { *x = Ref{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[38] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2711,7 +2764,7 @@ func (x *Ref) String() string { func (*Ref) ProtoMessage() {} func (x *Ref) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[38] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2724,7 +2777,7 @@ func (x *Ref) ProtoReflect() protoreflect.Message { // Deprecated: Use Ref.ProtoReflect.Descriptor instead. func (*Ref) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{38} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{39} } func (x *Ref) GetPos() *Position { @@ -2766,7 +2819,7 @@ type Schema struct { func (x *Schema) Reset() { *x = Schema{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[39] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2778,7 +2831,7 @@ func (x *Schema) String() string { func (*Schema) ProtoMessage() {} func (x *Schema) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[39] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2791,7 +2844,7 @@ func (x *Schema) ProtoReflect() protoreflect.Message { // Deprecated: Use Schema.ProtoReflect.Descriptor instead. func (*Schema) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{39} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{40} } func (x *Schema) GetPos() *Position { @@ -2821,7 +2874,7 @@ type Secret struct { func (x *Secret) Reset() { *x = Secret{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[40] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2833,7 +2886,7 @@ func (x *Secret) String() string { func (*Secret) ProtoMessage() {} func (x *Secret) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[40] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2846,7 +2899,7 @@ func (x *Secret) ProtoReflect() protoreflect.Message { // Deprecated: Use Secret.ProtoReflect.Descriptor instead. func (*Secret) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{40} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{41} } func (x *Secret) GetPos() *Position { @@ -2887,7 +2940,7 @@ type String struct { func (x *String) Reset() { *x = String{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[41] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2899,7 +2952,7 @@ func (x *String) String() string { func (*String) ProtoMessage() {} func (x *String) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[41] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2912,7 +2965,7 @@ func (x *String) ProtoReflect() protoreflect.Message { // Deprecated: Use String.ProtoReflect.Descriptor instead. func (*String) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{41} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{42} } func (x *String) GetPos() *Position { @@ -2933,7 +2986,7 @@ type StringValue struct { func (x *StringValue) Reset() { *x = StringValue{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[42] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2945,7 +2998,7 @@ func (x *StringValue) String() string { func (*StringValue) ProtoMessage() {} func (x *StringValue) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[42] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2958,7 +3011,7 @@ func (x *StringValue) ProtoReflect() protoreflect.Message { // Deprecated: Use StringValue.ProtoReflect.Descriptor instead. func (*StringValue) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{42} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{43} } func (x *StringValue) GetPos() *Position { @@ -2989,7 +3042,7 @@ type Subscription struct { func (x *Subscription) Reset() { *x = Subscription{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[43] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3001,7 +3054,7 @@ func (x *Subscription) String() string { func (*Subscription) ProtoMessage() {} func (x *Subscription) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[43] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3014,7 +3067,7 @@ func (x *Subscription) ProtoReflect() protoreflect.Message { // Deprecated: Use Subscription.ProtoReflect.Descriptor instead. func (*Subscription) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{43} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{44} } func (x *Subscription) GetPos() *Position { @@ -3064,7 +3117,7 @@ type SubscriptionRuntime struct { func (x *SubscriptionRuntime) Reset() { *x = SubscriptionRuntime{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[44] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3076,7 +3129,7 @@ func (x *SubscriptionRuntime) String() string { func (*SubscriptionRuntime) ProtoMessage() {} func (x *SubscriptionRuntime) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[44] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3089,7 +3142,7 @@ func (x *SubscriptionRuntime) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionRuntime.ProtoReflect.Descriptor instead. func (*SubscriptionRuntime) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{44} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{45} } func (x *SubscriptionRuntime) GetKafkaBrokers() []string { @@ -3123,7 +3176,7 @@ type Time struct { func (x *Time) Reset() { *x = Time{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[45] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3135,7 +3188,7 @@ func (x *Time) String() string { func (*Time) ProtoMessage() {} func (x *Time) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[45] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3148,7 +3201,7 @@ func (x *Time) ProtoReflect() protoreflect.Message { // Deprecated: Use Time.ProtoReflect.Descriptor instead. func (*Time) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{45} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{46} } func (x *Time) GetPos() *Position { @@ -3173,7 +3226,7 @@ type Topic struct { func (x *Topic) Reset() { *x = Topic{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[46] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3185,7 +3238,7 @@ func (x *Topic) String() string { func (*Topic) ProtoMessage() {} func (x *Topic) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[46] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3198,7 +3251,7 @@ func (x *Topic) ProtoReflect() protoreflect.Message { // Deprecated: Use Topic.ProtoReflect.Descriptor instead. func (*Topic) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{46} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{47} } func (x *Topic) GetPos() *Position { @@ -3254,7 +3307,7 @@ type TopicRuntime struct { func (x *TopicRuntime) Reset() { *x = TopicRuntime{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[47] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3266,7 +3319,7 @@ func (x *TopicRuntime) String() string { func (*TopicRuntime) ProtoMessage() {} func (x *TopicRuntime) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[47] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3279,7 +3332,7 @@ func (x *TopicRuntime) ProtoReflect() protoreflect.Message { // Deprecated: Use TopicRuntime.ProtoReflect.Descriptor instead. func (*TopicRuntime) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{47} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{48} } func (x *TopicRuntime) GetKafkaBrokers() []string { @@ -3320,7 +3373,7 @@ type Type struct { func (x *Type) Reset() { *x = Type{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[48] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3332,7 +3385,7 @@ func (x *Type) String() string { func (*Type) ProtoMessage() {} func (x *Type) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[48] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3345,7 +3398,7 @@ func (x *Type) ProtoReflect() protoreflect.Message { // Deprecated: Use Type.ProtoReflect.Descriptor instead. func (*Type) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{48} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{49} } func (m *Type) GetValue() isType_Value { @@ -3530,7 +3583,7 @@ type TypeAlias struct { func (x *TypeAlias) Reset() { *x = TypeAlias{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[49] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3542,7 +3595,7 @@ func (x *TypeAlias) String() string { func (*TypeAlias) ProtoMessage() {} func (x *TypeAlias) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[49] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3555,7 +3608,7 @@ func (x *TypeAlias) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeAlias.ProtoReflect.Descriptor instead. func (*TypeAlias) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{49} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{50} } func (x *TypeAlias) GetPos() *Position { @@ -3611,7 +3664,7 @@ type TypeParameter struct { func (x *TypeParameter) Reset() { *x = TypeParameter{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[50] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3623,7 +3676,7 @@ func (x *TypeParameter) String() string { func (*TypeParameter) ProtoMessage() {} func (x *TypeParameter) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[50] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3636,7 +3689,7 @@ func (x *TypeParameter) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeParameter.ProtoReflect.Descriptor instead. func (*TypeParameter) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{50} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{51} } func (x *TypeParameter) GetPos() *Position { @@ -3664,7 +3717,7 @@ type TypeValue struct { func (x *TypeValue) Reset() { *x = TypeValue{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[51] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3676,7 +3729,7 @@ func (x *TypeValue) String() string { func (*TypeValue) ProtoMessage() {} func (x *TypeValue) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[51] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3689,7 +3742,7 @@ func (x *TypeValue) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeValue.ProtoReflect.Descriptor instead. func (*TypeValue) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{51} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{52} } func (x *TypeValue) GetPos() *Position { @@ -3716,7 +3769,7 @@ type Unit struct { func (x *Unit) Reset() { *x = Unit{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[52] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3728,7 +3781,7 @@ func (x *Unit) String() string { func (*Unit) ProtoMessage() {} func (x *Unit) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[52] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3741,7 +3794,7 @@ func (x *Unit) ProtoReflect() protoreflect.Message { // Deprecated: Use Unit.ProtoReflect.Descriptor instead. func (*Unit) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{52} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{53} } func (x *Unit) GetPos() *Position { @@ -3766,7 +3819,7 @@ type Value struct { func (x *Value) Reset() { *x = Value{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[53] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3778,7 +3831,7 @@ func (x *Value) String() string { func (*Value) ProtoMessage() {} func (x *Value) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[53] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3791,7 +3844,7 @@ func (x *Value) ProtoReflect() protoreflect.Message { // Deprecated: Use Value.ProtoReflect.Descriptor instead. func (*Value) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{53} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{54} } func (m *Value) GetValue() isValue_Value { @@ -3861,7 +3914,7 @@ type Verb struct { func (x *Verb) Reset() { *x = Verb{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[54] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3873,7 +3926,7 @@ func (x *Verb) String() string { func (*Verb) ProtoMessage() {} func (x *Verb) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[54] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3886,7 +3939,7 @@ func (x *Verb) ProtoReflect() protoreflect.Message { // Deprecated: Use Verb.ProtoReflect.Descriptor instead. func (*Verb) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{54} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{55} } func (x *Verb) GetPos() *Position { @@ -3956,7 +4009,7 @@ type VerbRuntime struct { func (x *VerbRuntime) Reset() { *x = VerbRuntime{} - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[55] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3968,7 +4021,7 @@ func (x *VerbRuntime) String() string { func (*VerbRuntime) ProtoMessage() {} func (x *VerbRuntime) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[55] + mi := &file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3981,7 +4034,7 @@ func (x *VerbRuntime) ProtoReflect() protoreflect.Message { // Deprecated: Use VerbRuntime.ProtoReflect.Descriptor instead. func (*VerbRuntime) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{55} + return file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP(), []int{56} } func (x *VerbRuntime) GetCreateTime() *timestamppb.Timestamp { @@ -4040,651 +4093,663 @@ var file_xyz_block_ftl_v1_schema_schema_proto_rawDesc = []byte{ 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, - 0x70, 0x6f, 0x73, 0x22, 0x68, 0x0a, 0x12, 0x44, 0x53, 0x4e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x64, 0x73, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0xd8, 0x02, - 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, - 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, - 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4f, 0x0a, 0x0f, 0x74, 0x79, 0x70, 0x65, - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, - 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x0e, 0x74, 0x79, 0x70, 0x65, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x73, 0x12, 0x3d, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, - 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0xa6, 0x02, 0x0a, 0x08, 0x44, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, - 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x49, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x92, 0xf7, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, - 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x44, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x01, 0x52, 0x07, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3d, - 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, - 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, - 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x22, 0x7b, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x12, 0x5f, 0x0a, 0x14, 0x64, 0x73, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, - 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x44, 0x53, 0x4e, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, - 0x00, 0x52, 0x12, 0x64, 0x73, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xaf, - 0x04, 0x0a, 0x04, 0x44, 0x65, 0x63, 0x6c, 0x12, 0x39, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x33, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, - 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x48, - 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3f, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x48, 0x00, 0x52, 0x08, - 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x39, 0x0a, - 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, - 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, - 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x4b, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, - 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, - 0x6f, 0x70, 0x69, 0x63, 0x48, 0x00, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x43, 0x0a, - 0x0a, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, - 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, - 0x41, 0x6c, 0x69, 0x61, 0x73, 0x48, 0x00, 0x52, 0x09, 0x74, 0x79, 0x70, 0x65, 0x41, 0x6c, 0x69, - 0x61, 0x73, 0x12, 0x33, 0x0a, 0x04, 0x76, 0x65, 0x72, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, - 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x56, 0x65, 0x72, 0x62, 0x48, - 0x00, 0x52, 0x04, 0x76, 0x65, 0x72, 0x62, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x22, 0x93, 0x02, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x48, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x52, 0x08, 0x76, 0x61, 0x72, - 0x69, 0x61, 0x6e, 0x74, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xb5, 0x01, 0x0a, 0x0b, 0x45, 0x6e, 0x75, 0x6d, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, - 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x34, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, - 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0xeb, - 0x01, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, + 0x70, 0x6f, 0x73, 0x22, 0x6a, 0x0a, 0x14, 0x44, 0x53, 0x4e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x38, 0x0a, 0x03, 0x70, + 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, + 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, + 0xd8, 0x02, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, - 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x49, 0x0a, 0x05, - 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, - 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x42, - 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0xe7, 0x01, 0x0a, 0x14, 0x49, 0x6e, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x50, 0x61, 0x74, 0x68, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, - 0x12, 0x5f, 0x0a, 0x14, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, - 0x5f, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, - 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, - 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x50, 0x61, 0x74, 0x68, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x12, 0x69, - 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, - 0x6c, 0x12, 0x65, 0x0a, 0x16, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x74, - 0x68, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, - 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x49, 0x6e, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x50, 0x61, 0x74, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x48, 0x00, 0x52, 0x14, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x61, 0x74, 0x68, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x6a, 0x0a, 0x12, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x61, 0x74, 0x68, - 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, + 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, + 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4f, 0x0a, 0x0f, 0x74, 0x79, + 0x70, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, + 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, + 0x70, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x0e, 0x74, 0x79, 0x70, + 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x79, + 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x73, 0x12, 0x3d, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0xa6, 0x02, 0x0a, 0x08, 0x44, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x74, 0x65, 0x78, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x6c, 0x0a, - 0x14, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x61, 0x74, 0x68, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x01, 0x12, 0x49, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x92, 0xf7, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x01, + 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x3d, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, - 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x47, 0x0a, 0x03, 0x49, - 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, - 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, - 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x62, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, - 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0xad, 0x01, 0x0a, 0x03, 0x4d, 0x61, 0x70, - 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, - 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, - 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0xb6, 0x07, 0x0a, 0x08, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3e, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x48, 0x00, 0x52, 0x05, - 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x3e, 0x0a, 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x05, - 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, - 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x45, 0x0a, 0x08, 0x63, 0x72, 0x6f, 0x6e, - 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x78, 0x79, 0x7a, - 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x43, 0x72, 0x6f, - 0x6e, 0x4a, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x07, 0x63, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, - 0x4a, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x48, 0x00, - 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x08, 0x65, - 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, - 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, - 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, - 0x64, 0x69, 0x6e, 0x67, 0x12, 0x44, 0x0a, 0x07, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, + 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x11, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x65, 0x0a, 0x16, 0x64, 0x73, 0x6e, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x2e, 0x44, 0x53, 0x4e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x14, 0x64, 0x73, 0x6e, 0x44, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb9, 0x01, 0x0a, 0x0f, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x51, 0x0a, + 0x0e, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x48, - 0x00, 0x52, 0x07, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4a, 0x0a, 0x09, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x52, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x12, 0x53, 0x0a, 0x0f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x78, 0x79, 0x7a, 0x2e, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xaf, 0x04, 0x0a, 0x04, 0x44, 0x65, 0x63, 0x6c, 0x12, 0x39, + 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, + 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x33, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3f, + 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, + 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x48, 0x00, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, + 0x33, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, - 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x04, + 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, + 0x4b, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, - 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x12, 0x54, 0x0a, 0x0d, 0x73, 0x71, 0x6c, 0x5f, 0x6d, 0x69, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, - 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, - 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x53, 0x51, 0x4c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, - 0x73, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x07, - 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, - 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x48, 0x00, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x73, 0x12, 0x4d, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x62, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, - 0x72, 0x12, 0x45, 0x0a, 0x08, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, - 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, - 0x07, 0x74, 0x79, 0x70, 0x65, 0x4d, 0x61, 0x70, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6c, - 0x69, 0x61, 0x73, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, - 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, - 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x78, 0x79, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, + 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x05, + 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x4b, 0x69, 0x6e, 0x64, 0x52, - 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, - 0x70, 0x6f, 0x73, 0x22, 0x85, 0x01, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, - 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x32, 0x0a, 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, - 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x05, 0x63, 0x61, - 0x6c, 0x6c, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x0e, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, - 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, - 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, - 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x48, 0x00, 0x52, 0x05, 0x74, + 0x6f, 0x70, 0x69, 0x63, 0x12, 0x43, 0x0a, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x61, 0x6c, 0x69, + 0x61, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x06, - 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x67, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x72, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x63, 0x72, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, - 0x89, 0x01, 0x0a, 0x11, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, - 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x32, 0x0a, 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, - 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x05, 0x63, 0x61, - 0x6c, 0x6c, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x10, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, + 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x48, 0x00, 0x52, 0x09, + 0x74, 0x79, 0x70, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x33, 0x0a, 0x04, 0x76, 0x65, 0x72, + 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x2e, 0x56, 0x65, 0x72, 0x62, 0x48, 0x00, 0x52, 0x04, 0x76, 0x65, 0x72, 0x62, 0x42, 0x07, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x93, 0x02, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x6c, 0x65, 0x6e, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x6c, 0x65, 0x6e, 0x69, 0x65, 0x6e, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, - 0x22, 0xc2, 0x01, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, - 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x41, 0x0a, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x61, 0x74, 0x68, 0x43, 0x6f, - 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x42, 0x06, 0x0a, - 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x8b, 0x01, 0x0a, 0x11, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x03, 0x70, - 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, - 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, + 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, + 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x48, + 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x08, 0x76, 0x61, + 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, + 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x6e, 0x74, 0x52, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x42, 0x06, 0x0a, 0x04, + 0x5f, 0x70, 0x6f, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xb5, 0x01, + 0x0a, 0x0b, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x38, 0x0a, + 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, + 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, + 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, + 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0xeb, 0x01, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, + 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, + 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, + 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, + 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x5f, + 0x70, 0x6f, 0x73, 0x22, 0x49, 0x0a, 0x05, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x38, 0x0a, 0x03, + 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, + 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0xe7, + 0x01, 0x0a, 0x14, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x61, 0x74, 0x68, 0x43, 0x6f, + 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x5f, 0x0a, 0x14, 0x69, 0x6e, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, - 0x52, 0x65, 0x66, 0x52, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, - 0x70, 0x6f, 0x73, 0x22, 0xfb, 0x01, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x52, 0x65, 0x74, 0x72, 0x79, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, - 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, - 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x69, - 0x6e, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x6d, 0x69, 0x6e, 0x42, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, - 0x61, 0x78, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x42, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x12, 0x37, 0x0a, 0x05, - 0x63, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, + 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x48, 0x00, 0x52, 0x12, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x61, 0x74, + 0x68, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x65, 0x0a, 0x16, 0x69, 0x6e, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x61, 0x74, 0x68, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x14, 0x69, 0x6e, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x50, 0x61, 0x74, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x42, + 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x6a, 0x0a, 0x12, 0x49, 0x6e, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x38, + 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x48, 0x02, 0x52, 0x05, 0x63, 0x61, 0x74, - 0x63, 0x68, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x61, 0x74, 0x63, - 0x68, 0x22, 0x70, 0x0a, 0x14, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x51, 0x4c, - 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x42, 0x06, 0x0a, 0x04, + 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x6c, 0x0a, 0x14, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, + 0x61, 0x74, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x03, + 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, + 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, + 0x6f, 0x73, 0x22, 0x47, 0x0a, 0x03, 0x49, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, - 0x70, 0x6f, 0x73, 0x22, 0x8b, 0x01, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, + 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x62, 0x0a, 0x08, 0x49, + 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x36, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, - 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, - 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, - 0x73, 0x22, 0x6a, 0x0a, 0x12, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, + 0x01, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, + 0xad, 0x01, 0x0a, 0x03, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x8e, 0x01, - 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x61, - 0x70, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x01, 0x12, 0x2f, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, - 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x18, 0x0a, 0x07, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x9e, - 0x02, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, - 0x18, 0x0a, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, - 0x05, 0x64, 0x65, 0x63, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, + 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, + 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, + 0xb6, 0x07, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3e, 0x0a, 0x05, + 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x79, + 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6c, + 0x69, 0x61, 0x73, 0x48, 0x00, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x3e, 0x0a, 0x05, + 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x79, + 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x41, 0x0a, 0x06, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x52, 0x05, 0x64, 0x65, 0x63, - 0x6c, 0x73, 0x12, 0x47, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x92, 0xf7, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, - 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x01, 0x52, - 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, - 0x70, 0x6f, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x22, - 0xee, 0x01, 0x0a, 0x0d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x01, 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, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x69, - 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x13, 0x0a, - 0x02, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x6f, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x05, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x6f, 0x73, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x22, 0x8d, 0x01, 0x0a, 0x08, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x38, 0x0a, - 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x45, 0x0a, 0x08, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, + 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x07, 0x63, + 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x4a, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x78, 0x79, 0x7a, 0x2e, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x73, 0x48, 0x00, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x73, 0x12, 0x47, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x48, + 0x00, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x44, 0x0a, 0x07, 0x69, + 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x78, + 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, + 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x4a, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, + 0x48, 0x00, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x3e, 0x0a, + 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, + 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, + 0x65, 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, 0x12, 0x54, 0x0a, + 0x0d, 0x73, 0x71, 0x6c, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x51, 0x4c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x48, 0x00, + 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x4d, 0x0a, 0x0a, 0x73, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x08, 0x74, 0x79, 0x70, 0x65, + 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, - 0x54, 0x79, 0x70, 0x65, 0x48, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, - 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x22, 0x52, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, - 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x22, 0xbb, 0x01, 0x0a, 0x03, 0x52, 0x65, 0x66, 0x12, 0x38, 0x0a, 0x03, + 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, + 0x65, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x07, 0x74, 0x79, 0x70, 0x65, 0x4d, 0x61, 0x70, 0x42, + 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x0d, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, + 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, + 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x41, 0x6c, 0x69, + 0x61, 0x73, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, + 0x61, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x85, 0x01, 0x0a, 0x0d, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, - 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x0f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, - 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0e, 0x74, 0x79, 0x70, 0x65, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, - 0x6f, 0x73, 0x22, 0x85, 0x01, 0x0a, 0x06, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x38, 0x0a, - 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, - 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0xad, 0x01, 0x0a, 0x06, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, + 0x52, 0x65, 0x66, 0x52, 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, + 0x6f, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x31, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x34, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, + 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x06, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x67, 0x0a, + 0x0f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, + 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x72, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x72, 0x6f, 0x6e, 0x42, 0x06, + 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x11, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x03, + 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, + 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, + 0x52, 0x65, 0x66, 0x52, 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, + 0x6f, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x10, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, + 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x65, 0x6e, 0x69, 0x65, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6c, 0x65, 0x6e, 0x69, 0x65, 0x6e, 0x74, 0x42, + 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0xc2, 0x01, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x03, 0x70, + 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, + 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x12, 0x41, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, + 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x50, 0x61, 0x74, 0x68, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x8b, 0x01, 0x0a, + 0x11, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x65, 0x72, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, + 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x06, + 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, + 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x06, 0x74, 0x6f, 0x70, 0x69, + 0x63, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0xfb, 0x01, 0x0a, 0x0d, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x74, 0x72, 0x79, 0x12, 0x38, 0x0a, 0x03, + 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, + 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x42, 0x61, 0x63, 0x6b, 0x6f, + 0x66, 0x66, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, + 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x42, 0x61, 0x63, 0x6b, + 0x6f, 0x66, 0x66, 0x12, 0x37, 0x0a, 0x05, 0x63, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, + 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, + 0x48, 0x02, 0x52, 0x05, 0x63, 0x61, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, + 0x5f, 0x70, 0x6f, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x63, 0x61, 0x74, 0x63, 0x68, 0x22, 0x70, 0x0a, 0x14, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x53, 0x51, 0x4c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, - 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x4a, 0x0a, 0x06, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, + 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, + 0x73, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x8b, 0x01, 0x0a, 0x0f, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x38, + 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, + 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, + 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x6a, 0x0a, 0x12, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x12, 0x38, + 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, + 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x06, 0x0a, 0x04, + 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, + 0x01, 0x01, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, + 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x06, 0x0a, + 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x9e, 0x02, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x64, 0x65, 0x63, 0x6c, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, + 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x44, 0x65, + 0x63, 0x6c, 0x52, 0x05, 0x64, 0x65, 0x63, 0x6c, 0x73, 0x12, 0x47, 0x0a, 0x07, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x92, 0xf7, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, + 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x48, 0x01, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x88, + 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xee, 0x01, 0x0a, 0x0d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 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, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, + 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x73, 0x12, 0x13, 0x0a, 0x02, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x02, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x72, 0x63, + 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x02, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, + 0x03, 0x5f, 0x6f, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x08, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, + 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, + 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x48, 0x01, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x52, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x6c, + 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x22, 0xbb, 0x01, 0x0a, 0x03, + 0x52, 0x65, 0x66, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, + 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, + 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x0f, 0x74, 0x79, 0x70, + 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, + 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x0e, 0x74, 0x79, 0x70, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x85, 0x01, 0x0a, 0x06, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x42, 0x06, - 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x65, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x39, + 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, + 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, + 0x73, 0x22, 0xad, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x03, + 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, + 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, + 0x73, 0x22, 0x4a, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x03, 0x70, + 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, + 0x6f, 0x73, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x65, 0x0a, + 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x38, 0x0a, 0x03, + 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, + 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, 0x04, + 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x8f, 0x02, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x8f, 0x02, - 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, + 0x4d, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x92, 0xf7, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, + 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x48, 0x01, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1a, + 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, + 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x05, 0x74, 0x6f, 0x70, + 0x69, 0x63, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x81, 0x01, 0x0a, 0x13, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x23, + 0x0a, 0x0d, 0x6b, 0x61, 0x66, 0x6b, 0x61, 0x5f, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6b, 0x61, 0x66, 0x6b, 0x61, 0x42, 0x72, 0x6f, 0x6b, + 0x65, 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x2a, + 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x75, + 0x6d, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x04, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, + 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, + 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x9a, 0x02, 0x0a, 0x05, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, - 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x92, 0xf7, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x79, + 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x92, 0xf7, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x01, 0x52, 0x07, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x48, 0x01, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x06, 0x0a, + 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x22, 0x4e, 0x0a, 0x0c, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6b, 0x61, 0x66, 0x6b, 0x61, 0x5f, 0x62, 0x72, 0x6f, 0x6b, 0x65, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6b, 0x61, 0x66, 0x6b, 0x61, 0x42, + 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, + 0x64, 0x22, 0x9a, 0x05, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x03, 0x61, 0x6e, + 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x03, 0x61, 0x6e, 0x79, 0x12, 0x36, 0x0a, 0x05, + 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x79, + 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x48, 0x00, 0x52, 0x05, 0x61, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x33, 0x0a, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, + 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x42, 0x6f, 0x6f, + 0x6c, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x36, 0x0a, 0x05, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x2e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x48, 0x00, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x12, 0x36, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, + 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, + 0x48, 0x00, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x30, 0x0a, 0x03, 0x69, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x2e, 0x52, 0x65, 0x66, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x42, 0x06, 0x0a, 0x04, 0x5f, - 0x70, 0x6f, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x22, - 0x81, 0x01, 0x0a, 0x13, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6b, 0x61, 0x66, 0x6b, 0x61, - 0x5f, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, - 0x6b, 0x61, 0x66, 0x6b, 0x61, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, - 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x75, - 0x6d, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x03, 0x70, - 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, + 0x2e, 0x49, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x03, 0x69, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x03, 0x6d, + 0x61, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, - 0x6f, 0x73, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x9a, 0x02, - 0x0a, 0x05, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x46, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x92, 0xf7, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, - 0x6f, 0x70, 0x69, 0x63, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x01, 0x52, 0x07, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, - 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x42, 0x0a, - 0x0a, 0x08, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x4e, 0x0a, 0x0c, 0x54, 0x6f, - 0x70, 0x69, 0x63, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6b, 0x61, - 0x66, 0x6b, 0x61, 0x5f, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0c, 0x6b, 0x61, 0x66, 0x6b, 0x61, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x73, 0x12, - 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x22, 0x9a, 0x05, 0x0a, 0x04, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x03, 0x61, 0x6e, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, - 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, - 0x52, 0x03, 0x61, 0x6e, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x41, - 0x72, 0x72, 0x61, 0x79, 0x48, 0x00, 0x52, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0x12, 0x33, 0x0a, - 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, + 0x6d, 0x61, 0x2e, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x3f, 0x0a, + 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, + 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x48, 0x00, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x30, + 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, - 0x6f, 0x6c, 0x12, 0x36, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, - 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x42, 0x79, 0x74, 0x65, - 0x73, 0x48, 0x00, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x03, 0x72, 0x65, 0x66, + 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, + 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x33, 0x0a, 0x04, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6c, 0x6f, - 0x61, 0x74, 0x12, 0x30, 0x0a, 0x03, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, - 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x49, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x03, 0x69, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, - 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x61, 0x70, 0x48, - 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x3f, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x08, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x30, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, - 0x65, 0x66, 0x48, 0x00, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, + 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, + 0x12, 0x33, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, + 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x55, 0x6e, 0x69, 0x74, 0x48, 0x00, 0x52, + 0x04, 0x75, 0x6e, 0x69, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x87, + 0x02, 0x0a, 0x09, 0x54, 0x79, 0x70, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x38, 0x0a, 0x03, + 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x12, 0x33, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, - 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x48, 0x00, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x75, 0x6e, 0x69, - 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x2e, 0x55, 0x6e, 0x69, 0x74, 0x48, 0x00, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x42, 0x07, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x87, 0x02, 0x0a, 0x09, 0x54, 0x79, 0x70, 0x65, - 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, - 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, + 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, + 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, - 0x73, 0x22, 0x65, 0x0a, 0x0d, 0x54, 0x79, 0x70, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, - 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x09, 0x54, 0x79, 0x70, - 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, - 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, + 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x65, 0x0a, 0x0d, 0x54, 0x79, 0x70, 0x65, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, + 0x82, 0x01, 0x0a, 0x09, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x38, 0x0a, + 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, + 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, + 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, 0x04, + 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x48, 0x0a, 0x04, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x03, + 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, + 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0xe2, + 0x01, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, + 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, + 0x52, 0x08, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, + 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x43, 0x0a, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x79, 0x7a, 0x2e, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, + 0x09, 0x74, 0x79, 0x70, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x96, 0x03, 0x0a, 0x04, 0x56, 0x65, 0x72, 0x62, 0x12, 0x38, 0x0a, 0x03, + 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, + 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, + 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, - 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0x48, 0x0a, - 0x04, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, - 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x42, - 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x22, 0xe2, 0x01, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x49, - 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x79, 0x7a, 0x2e, + 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, - 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x43, - 0x0a, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, - 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, - 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x74, 0x79, 0x70, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x96, 0x03, 0x0a, - 0x04, 0x56, 0x65, 0x72, 0x62, 0x12, 0x38, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, - 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x39, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, - 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, - 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x45, 0x0a, 0x07, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x92, 0xf7, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, - 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x56, 0x65, 0x72, 0x62, 0x52, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x48, 0x01, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x88, 0x01, - 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x62, 0x52, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 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, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x02, 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, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x2a, 0x20, 0x0a, - 0x09, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x4c, - 0x49, 0x41, 0x53, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x00, 0x42, - 0x4e, 0x50, 0x01, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x54, 0x42, 0x44, 0x35, 0x34, 0x35, 0x36, 0x36, 0x39, 0x37, 0x35, 0x2f, 0x66, 0x74, 0x6c, 0x2f, - 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x78, - 0x79, 0x7a, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2f, 0x66, 0x74, 0x6c, 0x2f, 0x76, 0x31, 0x2f, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x3b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x70, 0x62, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x45, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x92, 0xf7, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x56, + 0x65, 0x72, 0x62, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x01, 0x52, 0x07, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x6f, 0x73, + 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x85, 0x01, 0x0a, + 0x0b, 0x56, 0x65, 0x72, 0x62, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 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, 0x52, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 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, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x2a, 0x20, 0x0a, 0x09, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x4b, 0x69, 0x6e, + 0x64, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x4c, 0x49, 0x41, 0x53, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, + 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x00, 0x42, 0x4e, 0x50, 0x01, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x42, 0x44, 0x35, 0x34, 0x35, 0x36, 0x36, 0x39, + 0x37, 0x35, 0x2f, 0x66, 0x74, 0x6c, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x78, 0x79, 0x7a, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2f, + 0x66, 0x74, 0x6c, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x3b, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4700,7 +4765,7 @@ func file_xyz_block_ftl_v1_schema_schema_proto_rawDescGZIP() []byte { } var file_xyz_block_ftl_v1_schema_schema_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_xyz_block_ftl_v1_schema_schema_proto_msgTypes = make([]protoimpl.MessageInfo, 56) +var file_xyz_block_ftl_v1_schema_schema_proto_msgTypes = make([]protoimpl.MessageInfo, 57) var file_xyz_block_ftl_v1_schema_schema_proto_goTypes = []any{ (AliasKind)(0), // 0: xyz.block.ftl.v1.schema.AliasKind (*Any)(nil), // 1: xyz.block.ftl.v1.schema.Any @@ -4708,192 +4773,195 @@ var file_xyz_block_ftl_v1_schema_schema_proto_goTypes = []any{ (*Bool)(nil), // 3: xyz.block.ftl.v1.schema.Bool (*Bytes)(nil), // 4: xyz.block.ftl.v1.schema.Bytes (*Config)(nil), // 5: xyz.block.ftl.v1.schema.Config - (*DSNDatabaseRuntime)(nil), // 6: xyz.block.ftl.v1.schema.DSNDatabaseRuntime + (*DSNDatabaseConnector)(nil), // 6: xyz.block.ftl.v1.schema.DSNDatabaseConnector (*Data)(nil), // 7: xyz.block.ftl.v1.schema.Data (*Database)(nil), // 8: xyz.block.ftl.v1.schema.Database - (*DatabaseRuntime)(nil), // 9: xyz.block.ftl.v1.schema.DatabaseRuntime - (*Decl)(nil), // 10: xyz.block.ftl.v1.schema.Decl - (*Enum)(nil), // 11: xyz.block.ftl.v1.schema.Enum - (*EnumVariant)(nil), // 12: xyz.block.ftl.v1.schema.EnumVariant - (*Field)(nil), // 13: xyz.block.ftl.v1.schema.Field - (*Float)(nil), // 14: xyz.block.ftl.v1.schema.Float - (*IngressPathComponent)(nil), // 15: xyz.block.ftl.v1.schema.IngressPathComponent - (*IngressPathLiteral)(nil), // 16: xyz.block.ftl.v1.schema.IngressPathLiteral - (*IngressPathParameter)(nil), // 17: xyz.block.ftl.v1.schema.IngressPathParameter - (*Int)(nil), // 18: xyz.block.ftl.v1.schema.Int - (*IntValue)(nil), // 19: xyz.block.ftl.v1.schema.IntValue - (*Map)(nil), // 20: xyz.block.ftl.v1.schema.Map - (*Metadata)(nil), // 21: xyz.block.ftl.v1.schema.Metadata - (*MetadataAlias)(nil), // 22: xyz.block.ftl.v1.schema.MetadataAlias - (*MetadataCalls)(nil), // 23: xyz.block.ftl.v1.schema.MetadataCalls - (*MetadataConfig)(nil), // 24: xyz.block.ftl.v1.schema.MetadataConfig - (*MetadataCronJob)(nil), // 25: xyz.block.ftl.v1.schema.MetadataCronJob - (*MetadataDatabases)(nil), // 26: xyz.block.ftl.v1.schema.MetadataDatabases - (*MetadataEncoding)(nil), // 27: xyz.block.ftl.v1.schema.MetadataEncoding - (*MetadataIngress)(nil), // 28: xyz.block.ftl.v1.schema.MetadataIngress - (*MetadataPublisher)(nil), // 29: xyz.block.ftl.v1.schema.MetadataPublisher - (*MetadataRetry)(nil), // 30: xyz.block.ftl.v1.schema.MetadataRetry - (*MetadataSQLMigration)(nil), // 31: xyz.block.ftl.v1.schema.MetadataSQLMigration - (*MetadataSecrets)(nil), // 32: xyz.block.ftl.v1.schema.MetadataSecrets - (*MetadataSubscriber)(nil), // 33: xyz.block.ftl.v1.schema.MetadataSubscriber - (*MetadataTypeMap)(nil), // 34: xyz.block.ftl.v1.schema.MetadataTypeMap - (*Module)(nil), // 35: xyz.block.ftl.v1.schema.Module - (*ModuleRuntime)(nil), // 36: xyz.block.ftl.v1.schema.ModuleRuntime - (*Optional)(nil), // 37: xyz.block.ftl.v1.schema.Optional - (*Position)(nil), // 38: xyz.block.ftl.v1.schema.Position - (*Ref)(nil), // 39: xyz.block.ftl.v1.schema.Ref - (*Schema)(nil), // 40: xyz.block.ftl.v1.schema.Schema - (*Secret)(nil), // 41: xyz.block.ftl.v1.schema.Secret - (*String)(nil), // 42: xyz.block.ftl.v1.schema.String - (*StringValue)(nil), // 43: xyz.block.ftl.v1.schema.StringValue - (*Subscription)(nil), // 44: xyz.block.ftl.v1.schema.Subscription - (*SubscriptionRuntime)(nil), // 45: xyz.block.ftl.v1.schema.SubscriptionRuntime - (*Time)(nil), // 46: xyz.block.ftl.v1.schema.Time - (*Topic)(nil), // 47: xyz.block.ftl.v1.schema.Topic - (*TopicRuntime)(nil), // 48: xyz.block.ftl.v1.schema.TopicRuntime - (*Type)(nil), // 49: xyz.block.ftl.v1.schema.Type - (*TypeAlias)(nil), // 50: xyz.block.ftl.v1.schema.TypeAlias - (*TypeParameter)(nil), // 51: xyz.block.ftl.v1.schema.TypeParameter - (*TypeValue)(nil), // 52: xyz.block.ftl.v1.schema.TypeValue - (*Unit)(nil), // 53: xyz.block.ftl.v1.schema.Unit - (*Value)(nil), // 54: xyz.block.ftl.v1.schema.Value - (*Verb)(nil), // 55: xyz.block.ftl.v1.schema.Verb - (*VerbRuntime)(nil), // 56: xyz.block.ftl.v1.schema.VerbRuntime - (*timestamppb.Timestamp)(nil), // 57: google.protobuf.Timestamp + (*DatabaseConnector)(nil), // 9: xyz.block.ftl.v1.schema.DatabaseConnector + (*DatabaseRuntime)(nil), // 10: xyz.block.ftl.v1.schema.DatabaseRuntime + (*Decl)(nil), // 11: xyz.block.ftl.v1.schema.Decl + (*Enum)(nil), // 12: xyz.block.ftl.v1.schema.Enum + (*EnumVariant)(nil), // 13: xyz.block.ftl.v1.schema.EnumVariant + (*Field)(nil), // 14: xyz.block.ftl.v1.schema.Field + (*Float)(nil), // 15: xyz.block.ftl.v1.schema.Float + (*IngressPathComponent)(nil), // 16: xyz.block.ftl.v1.schema.IngressPathComponent + (*IngressPathLiteral)(nil), // 17: xyz.block.ftl.v1.schema.IngressPathLiteral + (*IngressPathParameter)(nil), // 18: xyz.block.ftl.v1.schema.IngressPathParameter + (*Int)(nil), // 19: xyz.block.ftl.v1.schema.Int + (*IntValue)(nil), // 20: xyz.block.ftl.v1.schema.IntValue + (*Map)(nil), // 21: xyz.block.ftl.v1.schema.Map + (*Metadata)(nil), // 22: xyz.block.ftl.v1.schema.Metadata + (*MetadataAlias)(nil), // 23: xyz.block.ftl.v1.schema.MetadataAlias + (*MetadataCalls)(nil), // 24: xyz.block.ftl.v1.schema.MetadataCalls + (*MetadataConfig)(nil), // 25: xyz.block.ftl.v1.schema.MetadataConfig + (*MetadataCronJob)(nil), // 26: xyz.block.ftl.v1.schema.MetadataCronJob + (*MetadataDatabases)(nil), // 27: xyz.block.ftl.v1.schema.MetadataDatabases + (*MetadataEncoding)(nil), // 28: xyz.block.ftl.v1.schema.MetadataEncoding + (*MetadataIngress)(nil), // 29: xyz.block.ftl.v1.schema.MetadataIngress + (*MetadataPublisher)(nil), // 30: xyz.block.ftl.v1.schema.MetadataPublisher + (*MetadataRetry)(nil), // 31: xyz.block.ftl.v1.schema.MetadataRetry + (*MetadataSQLMigration)(nil), // 32: xyz.block.ftl.v1.schema.MetadataSQLMigration + (*MetadataSecrets)(nil), // 33: xyz.block.ftl.v1.schema.MetadataSecrets + (*MetadataSubscriber)(nil), // 34: xyz.block.ftl.v1.schema.MetadataSubscriber + (*MetadataTypeMap)(nil), // 35: xyz.block.ftl.v1.schema.MetadataTypeMap + (*Module)(nil), // 36: xyz.block.ftl.v1.schema.Module + (*ModuleRuntime)(nil), // 37: xyz.block.ftl.v1.schema.ModuleRuntime + (*Optional)(nil), // 38: xyz.block.ftl.v1.schema.Optional + (*Position)(nil), // 39: xyz.block.ftl.v1.schema.Position + (*Ref)(nil), // 40: xyz.block.ftl.v1.schema.Ref + (*Schema)(nil), // 41: xyz.block.ftl.v1.schema.Schema + (*Secret)(nil), // 42: xyz.block.ftl.v1.schema.Secret + (*String)(nil), // 43: xyz.block.ftl.v1.schema.String + (*StringValue)(nil), // 44: xyz.block.ftl.v1.schema.StringValue + (*Subscription)(nil), // 45: xyz.block.ftl.v1.schema.Subscription + (*SubscriptionRuntime)(nil), // 46: xyz.block.ftl.v1.schema.SubscriptionRuntime + (*Time)(nil), // 47: xyz.block.ftl.v1.schema.Time + (*Topic)(nil), // 48: xyz.block.ftl.v1.schema.Topic + (*TopicRuntime)(nil), // 49: xyz.block.ftl.v1.schema.TopicRuntime + (*Type)(nil), // 50: xyz.block.ftl.v1.schema.Type + (*TypeAlias)(nil), // 51: xyz.block.ftl.v1.schema.TypeAlias + (*TypeParameter)(nil), // 52: xyz.block.ftl.v1.schema.TypeParameter + (*TypeValue)(nil), // 53: xyz.block.ftl.v1.schema.TypeValue + (*Unit)(nil), // 54: xyz.block.ftl.v1.schema.Unit + (*Value)(nil), // 55: xyz.block.ftl.v1.schema.Value + (*Verb)(nil), // 56: xyz.block.ftl.v1.schema.Verb + (*VerbRuntime)(nil), // 57: xyz.block.ftl.v1.schema.VerbRuntime + (*timestamppb.Timestamp)(nil), // 58: google.protobuf.Timestamp } var file_xyz_block_ftl_v1_schema_schema_proto_depIdxs = []int32{ - 38, // 0: xyz.block.ftl.v1.schema.Any.pos:type_name -> xyz.block.ftl.v1.schema.Position - 38, // 1: xyz.block.ftl.v1.schema.Array.pos:type_name -> xyz.block.ftl.v1.schema.Position - 49, // 2: xyz.block.ftl.v1.schema.Array.element:type_name -> xyz.block.ftl.v1.schema.Type - 38, // 3: xyz.block.ftl.v1.schema.Bool.pos:type_name -> xyz.block.ftl.v1.schema.Position - 38, // 4: xyz.block.ftl.v1.schema.Bytes.pos:type_name -> xyz.block.ftl.v1.schema.Position - 38, // 5: xyz.block.ftl.v1.schema.Config.pos:type_name -> xyz.block.ftl.v1.schema.Position - 49, // 6: xyz.block.ftl.v1.schema.Config.type:type_name -> xyz.block.ftl.v1.schema.Type - 38, // 7: xyz.block.ftl.v1.schema.DSNDatabaseRuntime.pos:type_name -> xyz.block.ftl.v1.schema.Position - 38, // 8: xyz.block.ftl.v1.schema.Data.pos:type_name -> xyz.block.ftl.v1.schema.Position - 51, // 9: xyz.block.ftl.v1.schema.Data.type_parameters:type_name -> xyz.block.ftl.v1.schema.TypeParameter - 13, // 10: xyz.block.ftl.v1.schema.Data.fields:type_name -> xyz.block.ftl.v1.schema.Field - 21, // 11: xyz.block.ftl.v1.schema.Data.metadata:type_name -> xyz.block.ftl.v1.schema.Metadata - 38, // 12: xyz.block.ftl.v1.schema.Database.pos:type_name -> xyz.block.ftl.v1.schema.Position - 9, // 13: xyz.block.ftl.v1.schema.Database.runtime:type_name -> xyz.block.ftl.v1.schema.DatabaseRuntime - 21, // 14: xyz.block.ftl.v1.schema.Database.metadata:type_name -> xyz.block.ftl.v1.schema.Metadata - 6, // 15: xyz.block.ftl.v1.schema.DatabaseRuntime.dsn_database_runtime:type_name -> xyz.block.ftl.v1.schema.DSNDatabaseRuntime - 5, // 16: xyz.block.ftl.v1.schema.Decl.config:type_name -> xyz.block.ftl.v1.schema.Config - 7, // 17: xyz.block.ftl.v1.schema.Decl.data:type_name -> xyz.block.ftl.v1.schema.Data - 8, // 18: xyz.block.ftl.v1.schema.Decl.database:type_name -> xyz.block.ftl.v1.schema.Database - 11, // 19: xyz.block.ftl.v1.schema.Decl.enum:type_name -> xyz.block.ftl.v1.schema.Enum - 41, // 20: xyz.block.ftl.v1.schema.Decl.secret:type_name -> xyz.block.ftl.v1.schema.Secret - 44, // 21: xyz.block.ftl.v1.schema.Decl.subscription:type_name -> xyz.block.ftl.v1.schema.Subscription - 47, // 22: xyz.block.ftl.v1.schema.Decl.topic:type_name -> xyz.block.ftl.v1.schema.Topic - 50, // 23: xyz.block.ftl.v1.schema.Decl.type_alias:type_name -> xyz.block.ftl.v1.schema.TypeAlias - 55, // 24: xyz.block.ftl.v1.schema.Decl.verb:type_name -> xyz.block.ftl.v1.schema.Verb - 38, // 25: xyz.block.ftl.v1.schema.Enum.pos:type_name -> xyz.block.ftl.v1.schema.Position - 49, // 26: xyz.block.ftl.v1.schema.Enum.type:type_name -> xyz.block.ftl.v1.schema.Type - 12, // 27: xyz.block.ftl.v1.schema.Enum.variants:type_name -> xyz.block.ftl.v1.schema.EnumVariant - 38, // 28: xyz.block.ftl.v1.schema.EnumVariant.pos:type_name -> xyz.block.ftl.v1.schema.Position - 54, // 29: xyz.block.ftl.v1.schema.EnumVariant.value:type_name -> xyz.block.ftl.v1.schema.Value - 38, // 30: xyz.block.ftl.v1.schema.Field.pos:type_name -> xyz.block.ftl.v1.schema.Position - 49, // 31: xyz.block.ftl.v1.schema.Field.type:type_name -> xyz.block.ftl.v1.schema.Type - 21, // 32: xyz.block.ftl.v1.schema.Field.metadata:type_name -> xyz.block.ftl.v1.schema.Metadata - 38, // 33: xyz.block.ftl.v1.schema.Float.pos:type_name -> xyz.block.ftl.v1.schema.Position - 16, // 34: xyz.block.ftl.v1.schema.IngressPathComponent.ingress_path_literal:type_name -> xyz.block.ftl.v1.schema.IngressPathLiteral - 17, // 35: xyz.block.ftl.v1.schema.IngressPathComponent.ingress_path_parameter:type_name -> xyz.block.ftl.v1.schema.IngressPathParameter - 38, // 36: xyz.block.ftl.v1.schema.IngressPathLiteral.pos:type_name -> xyz.block.ftl.v1.schema.Position - 38, // 37: xyz.block.ftl.v1.schema.IngressPathParameter.pos:type_name -> xyz.block.ftl.v1.schema.Position - 38, // 38: xyz.block.ftl.v1.schema.Int.pos:type_name -> xyz.block.ftl.v1.schema.Position - 38, // 39: xyz.block.ftl.v1.schema.IntValue.pos:type_name -> xyz.block.ftl.v1.schema.Position - 38, // 40: xyz.block.ftl.v1.schema.Map.pos:type_name -> xyz.block.ftl.v1.schema.Position - 49, // 41: xyz.block.ftl.v1.schema.Map.key:type_name -> xyz.block.ftl.v1.schema.Type - 49, // 42: xyz.block.ftl.v1.schema.Map.value:type_name -> xyz.block.ftl.v1.schema.Type - 22, // 43: xyz.block.ftl.v1.schema.Metadata.alias:type_name -> xyz.block.ftl.v1.schema.MetadataAlias - 23, // 44: xyz.block.ftl.v1.schema.Metadata.calls:type_name -> xyz.block.ftl.v1.schema.MetadataCalls - 24, // 45: xyz.block.ftl.v1.schema.Metadata.config:type_name -> xyz.block.ftl.v1.schema.MetadataConfig - 25, // 46: xyz.block.ftl.v1.schema.Metadata.cron_job:type_name -> xyz.block.ftl.v1.schema.MetadataCronJob - 26, // 47: xyz.block.ftl.v1.schema.Metadata.databases:type_name -> xyz.block.ftl.v1.schema.MetadataDatabases - 27, // 48: xyz.block.ftl.v1.schema.Metadata.encoding:type_name -> xyz.block.ftl.v1.schema.MetadataEncoding - 28, // 49: xyz.block.ftl.v1.schema.Metadata.ingress:type_name -> xyz.block.ftl.v1.schema.MetadataIngress - 29, // 50: xyz.block.ftl.v1.schema.Metadata.publisher:type_name -> xyz.block.ftl.v1.schema.MetadataPublisher - 30, // 51: xyz.block.ftl.v1.schema.Metadata.retry:type_name -> xyz.block.ftl.v1.schema.MetadataRetry - 31, // 52: xyz.block.ftl.v1.schema.Metadata.sql_migration:type_name -> xyz.block.ftl.v1.schema.MetadataSQLMigration - 32, // 53: xyz.block.ftl.v1.schema.Metadata.secrets:type_name -> xyz.block.ftl.v1.schema.MetadataSecrets - 33, // 54: xyz.block.ftl.v1.schema.Metadata.subscriber:type_name -> xyz.block.ftl.v1.schema.MetadataSubscriber - 34, // 55: xyz.block.ftl.v1.schema.Metadata.type_map:type_name -> xyz.block.ftl.v1.schema.MetadataTypeMap - 38, // 56: xyz.block.ftl.v1.schema.MetadataAlias.pos:type_name -> xyz.block.ftl.v1.schema.Position - 0, // 57: xyz.block.ftl.v1.schema.MetadataAlias.kind:type_name -> xyz.block.ftl.v1.schema.AliasKind - 38, // 58: xyz.block.ftl.v1.schema.MetadataCalls.pos:type_name -> xyz.block.ftl.v1.schema.Position - 39, // 59: xyz.block.ftl.v1.schema.MetadataCalls.calls:type_name -> xyz.block.ftl.v1.schema.Ref - 38, // 60: xyz.block.ftl.v1.schema.MetadataConfig.pos:type_name -> xyz.block.ftl.v1.schema.Position - 39, // 61: xyz.block.ftl.v1.schema.MetadataConfig.config:type_name -> xyz.block.ftl.v1.schema.Ref - 38, // 62: xyz.block.ftl.v1.schema.MetadataCronJob.pos:type_name -> xyz.block.ftl.v1.schema.Position - 38, // 63: xyz.block.ftl.v1.schema.MetadataDatabases.pos:type_name -> xyz.block.ftl.v1.schema.Position - 39, // 64: xyz.block.ftl.v1.schema.MetadataDatabases.calls:type_name -> xyz.block.ftl.v1.schema.Ref - 38, // 65: xyz.block.ftl.v1.schema.MetadataEncoding.pos:type_name -> xyz.block.ftl.v1.schema.Position - 38, // 66: xyz.block.ftl.v1.schema.MetadataIngress.pos:type_name -> xyz.block.ftl.v1.schema.Position - 15, // 67: xyz.block.ftl.v1.schema.MetadataIngress.path:type_name -> xyz.block.ftl.v1.schema.IngressPathComponent - 38, // 68: xyz.block.ftl.v1.schema.MetadataPublisher.pos:type_name -> xyz.block.ftl.v1.schema.Position - 39, // 69: xyz.block.ftl.v1.schema.MetadataPublisher.topics:type_name -> xyz.block.ftl.v1.schema.Ref - 38, // 70: xyz.block.ftl.v1.schema.MetadataRetry.pos:type_name -> xyz.block.ftl.v1.schema.Position - 39, // 71: xyz.block.ftl.v1.schema.MetadataRetry.catch:type_name -> xyz.block.ftl.v1.schema.Ref - 38, // 72: xyz.block.ftl.v1.schema.MetadataSQLMigration.pos:type_name -> xyz.block.ftl.v1.schema.Position - 38, // 73: xyz.block.ftl.v1.schema.MetadataSecrets.pos:type_name -> xyz.block.ftl.v1.schema.Position - 39, // 74: xyz.block.ftl.v1.schema.MetadataSecrets.secrets:type_name -> xyz.block.ftl.v1.schema.Ref - 38, // 75: xyz.block.ftl.v1.schema.MetadataSubscriber.pos:type_name -> xyz.block.ftl.v1.schema.Position - 38, // 76: xyz.block.ftl.v1.schema.MetadataTypeMap.pos:type_name -> xyz.block.ftl.v1.schema.Position - 38, // 77: xyz.block.ftl.v1.schema.Module.pos:type_name -> xyz.block.ftl.v1.schema.Position - 10, // 78: xyz.block.ftl.v1.schema.Module.decls:type_name -> xyz.block.ftl.v1.schema.Decl - 36, // 79: xyz.block.ftl.v1.schema.Module.runtime:type_name -> xyz.block.ftl.v1.schema.ModuleRuntime - 57, // 80: xyz.block.ftl.v1.schema.ModuleRuntime.create_time:type_name -> google.protobuf.Timestamp - 38, // 81: xyz.block.ftl.v1.schema.Optional.pos:type_name -> xyz.block.ftl.v1.schema.Position - 49, // 82: xyz.block.ftl.v1.schema.Optional.type:type_name -> xyz.block.ftl.v1.schema.Type - 38, // 83: xyz.block.ftl.v1.schema.Ref.pos:type_name -> xyz.block.ftl.v1.schema.Position - 49, // 84: xyz.block.ftl.v1.schema.Ref.type_parameters:type_name -> xyz.block.ftl.v1.schema.Type - 38, // 85: xyz.block.ftl.v1.schema.Schema.pos:type_name -> xyz.block.ftl.v1.schema.Position - 35, // 86: xyz.block.ftl.v1.schema.Schema.modules:type_name -> xyz.block.ftl.v1.schema.Module - 38, // 87: xyz.block.ftl.v1.schema.Secret.pos:type_name -> xyz.block.ftl.v1.schema.Position - 49, // 88: xyz.block.ftl.v1.schema.Secret.type:type_name -> xyz.block.ftl.v1.schema.Type - 38, // 89: xyz.block.ftl.v1.schema.String.pos:type_name -> xyz.block.ftl.v1.schema.Position - 38, // 90: xyz.block.ftl.v1.schema.StringValue.pos:type_name -> xyz.block.ftl.v1.schema.Position - 38, // 91: xyz.block.ftl.v1.schema.Subscription.pos:type_name -> xyz.block.ftl.v1.schema.Position - 45, // 92: xyz.block.ftl.v1.schema.Subscription.runtime:type_name -> xyz.block.ftl.v1.schema.SubscriptionRuntime - 39, // 93: xyz.block.ftl.v1.schema.Subscription.topic:type_name -> xyz.block.ftl.v1.schema.Ref - 38, // 94: xyz.block.ftl.v1.schema.Time.pos:type_name -> xyz.block.ftl.v1.schema.Position - 38, // 95: xyz.block.ftl.v1.schema.Topic.pos:type_name -> xyz.block.ftl.v1.schema.Position - 48, // 96: xyz.block.ftl.v1.schema.Topic.runtime:type_name -> xyz.block.ftl.v1.schema.TopicRuntime - 49, // 97: xyz.block.ftl.v1.schema.Topic.event:type_name -> xyz.block.ftl.v1.schema.Type - 1, // 98: xyz.block.ftl.v1.schema.Type.any:type_name -> xyz.block.ftl.v1.schema.Any - 2, // 99: xyz.block.ftl.v1.schema.Type.array:type_name -> xyz.block.ftl.v1.schema.Array - 3, // 100: xyz.block.ftl.v1.schema.Type.bool:type_name -> xyz.block.ftl.v1.schema.Bool - 4, // 101: xyz.block.ftl.v1.schema.Type.bytes:type_name -> xyz.block.ftl.v1.schema.Bytes - 14, // 102: xyz.block.ftl.v1.schema.Type.float:type_name -> xyz.block.ftl.v1.schema.Float - 18, // 103: xyz.block.ftl.v1.schema.Type.int:type_name -> xyz.block.ftl.v1.schema.Int - 20, // 104: xyz.block.ftl.v1.schema.Type.map:type_name -> xyz.block.ftl.v1.schema.Map - 37, // 105: xyz.block.ftl.v1.schema.Type.optional:type_name -> xyz.block.ftl.v1.schema.Optional - 39, // 106: xyz.block.ftl.v1.schema.Type.ref:type_name -> xyz.block.ftl.v1.schema.Ref - 42, // 107: xyz.block.ftl.v1.schema.Type.string:type_name -> xyz.block.ftl.v1.schema.String - 46, // 108: xyz.block.ftl.v1.schema.Type.time:type_name -> xyz.block.ftl.v1.schema.Time - 53, // 109: xyz.block.ftl.v1.schema.Type.unit:type_name -> xyz.block.ftl.v1.schema.Unit - 38, // 110: xyz.block.ftl.v1.schema.TypeAlias.pos:type_name -> xyz.block.ftl.v1.schema.Position - 49, // 111: xyz.block.ftl.v1.schema.TypeAlias.type:type_name -> xyz.block.ftl.v1.schema.Type - 21, // 112: xyz.block.ftl.v1.schema.TypeAlias.metadata:type_name -> xyz.block.ftl.v1.schema.Metadata - 38, // 113: xyz.block.ftl.v1.schema.TypeParameter.pos:type_name -> xyz.block.ftl.v1.schema.Position - 38, // 114: xyz.block.ftl.v1.schema.TypeValue.pos:type_name -> xyz.block.ftl.v1.schema.Position - 49, // 115: xyz.block.ftl.v1.schema.TypeValue.value:type_name -> xyz.block.ftl.v1.schema.Type - 38, // 116: xyz.block.ftl.v1.schema.Unit.pos:type_name -> xyz.block.ftl.v1.schema.Position - 19, // 117: xyz.block.ftl.v1.schema.Value.int_value:type_name -> xyz.block.ftl.v1.schema.IntValue - 43, // 118: xyz.block.ftl.v1.schema.Value.string_value:type_name -> xyz.block.ftl.v1.schema.StringValue - 52, // 119: xyz.block.ftl.v1.schema.Value.type_value:type_name -> xyz.block.ftl.v1.schema.TypeValue - 38, // 120: xyz.block.ftl.v1.schema.Verb.pos:type_name -> xyz.block.ftl.v1.schema.Position - 49, // 121: xyz.block.ftl.v1.schema.Verb.request:type_name -> xyz.block.ftl.v1.schema.Type - 49, // 122: xyz.block.ftl.v1.schema.Verb.response:type_name -> xyz.block.ftl.v1.schema.Type - 21, // 123: xyz.block.ftl.v1.schema.Verb.metadata:type_name -> xyz.block.ftl.v1.schema.Metadata - 56, // 124: xyz.block.ftl.v1.schema.Verb.runtime:type_name -> xyz.block.ftl.v1.schema.VerbRuntime - 57, // 125: xyz.block.ftl.v1.schema.VerbRuntime.create_time:type_name -> google.protobuf.Timestamp - 57, // 126: xyz.block.ftl.v1.schema.VerbRuntime.start_time:type_name -> google.protobuf.Timestamp - 127, // [127:127] is the sub-list for method output_type - 127, // [127:127] is the sub-list for method input_type - 127, // [127:127] is the sub-list for extension type_name - 127, // [127:127] is the sub-list for extension extendee - 0, // [0:127] is the sub-list for field type_name + 39, // 0: xyz.block.ftl.v1.schema.Any.pos:type_name -> xyz.block.ftl.v1.schema.Position + 39, // 1: xyz.block.ftl.v1.schema.Array.pos:type_name -> xyz.block.ftl.v1.schema.Position + 50, // 2: xyz.block.ftl.v1.schema.Array.element:type_name -> xyz.block.ftl.v1.schema.Type + 39, // 3: xyz.block.ftl.v1.schema.Bool.pos:type_name -> xyz.block.ftl.v1.schema.Position + 39, // 4: xyz.block.ftl.v1.schema.Bytes.pos:type_name -> xyz.block.ftl.v1.schema.Position + 39, // 5: xyz.block.ftl.v1.schema.Config.pos:type_name -> xyz.block.ftl.v1.schema.Position + 50, // 6: xyz.block.ftl.v1.schema.Config.type:type_name -> xyz.block.ftl.v1.schema.Type + 39, // 7: xyz.block.ftl.v1.schema.DSNDatabaseConnector.pos:type_name -> xyz.block.ftl.v1.schema.Position + 39, // 8: xyz.block.ftl.v1.schema.Data.pos:type_name -> xyz.block.ftl.v1.schema.Position + 52, // 9: xyz.block.ftl.v1.schema.Data.type_parameters:type_name -> xyz.block.ftl.v1.schema.TypeParameter + 14, // 10: xyz.block.ftl.v1.schema.Data.fields:type_name -> xyz.block.ftl.v1.schema.Field + 22, // 11: xyz.block.ftl.v1.schema.Data.metadata:type_name -> xyz.block.ftl.v1.schema.Metadata + 39, // 12: xyz.block.ftl.v1.schema.Database.pos:type_name -> xyz.block.ftl.v1.schema.Position + 10, // 13: xyz.block.ftl.v1.schema.Database.runtime:type_name -> xyz.block.ftl.v1.schema.DatabaseRuntime + 22, // 14: xyz.block.ftl.v1.schema.Database.metadata:type_name -> xyz.block.ftl.v1.schema.Metadata + 6, // 15: xyz.block.ftl.v1.schema.DatabaseConnector.dsn_database_connector:type_name -> xyz.block.ftl.v1.schema.DSNDatabaseConnector + 9, // 16: xyz.block.ftl.v1.schema.DatabaseRuntime.read_connector:type_name -> xyz.block.ftl.v1.schema.DatabaseConnector + 9, // 17: xyz.block.ftl.v1.schema.DatabaseRuntime.write_connector:type_name -> xyz.block.ftl.v1.schema.DatabaseConnector + 5, // 18: xyz.block.ftl.v1.schema.Decl.config:type_name -> xyz.block.ftl.v1.schema.Config + 7, // 19: xyz.block.ftl.v1.schema.Decl.data:type_name -> xyz.block.ftl.v1.schema.Data + 8, // 20: xyz.block.ftl.v1.schema.Decl.database:type_name -> xyz.block.ftl.v1.schema.Database + 12, // 21: xyz.block.ftl.v1.schema.Decl.enum:type_name -> xyz.block.ftl.v1.schema.Enum + 42, // 22: xyz.block.ftl.v1.schema.Decl.secret:type_name -> xyz.block.ftl.v1.schema.Secret + 45, // 23: xyz.block.ftl.v1.schema.Decl.subscription:type_name -> xyz.block.ftl.v1.schema.Subscription + 48, // 24: xyz.block.ftl.v1.schema.Decl.topic:type_name -> xyz.block.ftl.v1.schema.Topic + 51, // 25: xyz.block.ftl.v1.schema.Decl.type_alias:type_name -> xyz.block.ftl.v1.schema.TypeAlias + 56, // 26: xyz.block.ftl.v1.schema.Decl.verb:type_name -> xyz.block.ftl.v1.schema.Verb + 39, // 27: xyz.block.ftl.v1.schema.Enum.pos:type_name -> xyz.block.ftl.v1.schema.Position + 50, // 28: xyz.block.ftl.v1.schema.Enum.type:type_name -> xyz.block.ftl.v1.schema.Type + 13, // 29: xyz.block.ftl.v1.schema.Enum.variants:type_name -> xyz.block.ftl.v1.schema.EnumVariant + 39, // 30: xyz.block.ftl.v1.schema.EnumVariant.pos:type_name -> xyz.block.ftl.v1.schema.Position + 55, // 31: xyz.block.ftl.v1.schema.EnumVariant.value:type_name -> xyz.block.ftl.v1.schema.Value + 39, // 32: xyz.block.ftl.v1.schema.Field.pos:type_name -> xyz.block.ftl.v1.schema.Position + 50, // 33: xyz.block.ftl.v1.schema.Field.type:type_name -> xyz.block.ftl.v1.schema.Type + 22, // 34: xyz.block.ftl.v1.schema.Field.metadata:type_name -> xyz.block.ftl.v1.schema.Metadata + 39, // 35: xyz.block.ftl.v1.schema.Float.pos:type_name -> xyz.block.ftl.v1.schema.Position + 17, // 36: xyz.block.ftl.v1.schema.IngressPathComponent.ingress_path_literal:type_name -> xyz.block.ftl.v1.schema.IngressPathLiteral + 18, // 37: xyz.block.ftl.v1.schema.IngressPathComponent.ingress_path_parameter:type_name -> xyz.block.ftl.v1.schema.IngressPathParameter + 39, // 38: xyz.block.ftl.v1.schema.IngressPathLiteral.pos:type_name -> xyz.block.ftl.v1.schema.Position + 39, // 39: xyz.block.ftl.v1.schema.IngressPathParameter.pos:type_name -> xyz.block.ftl.v1.schema.Position + 39, // 40: xyz.block.ftl.v1.schema.Int.pos:type_name -> xyz.block.ftl.v1.schema.Position + 39, // 41: xyz.block.ftl.v1.schema.IntValue.pos:type_name -> xyz.block.ftl.v1.schema.Position + 39, // 42: xyz.block.ftl.v1.schema.Map.pos:type_name -> xyz.block.ftl.v1.schema.Position + 50, // 43: xyz.block.ftl.v1.schema.Map.key:type_name -> xyz.block.ftl.v1.schema.Type + 50, // 44: xyz.block.ftl.v1.schema.Map.value:type_name -> xyz.block.ftl.v1.schema.Type + 23, // 45: xyz.block.ftl.v1.schema.Metadata.alias:type_name -> xyz.block.ftl.v1.schema.MetadataAlias + 24, // 46: xyz.block.ftl.v1.schema.Metadata.calls:type_name -> xyz.block.ftl.v1.schema.MetadataCalls + 25, // 47: xyz.block.ftl.v1.schema.Metadata.config:type_name -> xyz.block.ftl.v1.schema.MetadataConfig + 26, // 48: xyz.block.ftl.v1.schema.Metadata.cron_job:type_name -> xyz.block.ftl.v1.schema.MetadataCronJob + 27, // 49: xyz.block.ftl.v1.schema.Metadata.databases:type_name -> xyz.block.ftl.v1.schema.MetadataDatabases + 28, // 50: xyz.block.ftl.v1.schema.Metadata.encoding:type_name -> xyz.block.ftl.v1.schema.MetadataEncoding + 29, // 51: xyz.block.ftl.v1.schema.Metadata.ingress:type_name -> xyz.block.ftl.v1.schema.MetadataIngress + 30, // 52: xyz.block.ftl.v1.schema.Metadata.publisher:type_name -> xyz.block.ftl.v1.schema.MetadataPublisher + 31, // 53: xyz.block.ftl.v1.schema.Metadata.retry:type_name -> xyz.block.ftl.v1.schema.MetadataRetry + 32, // 54: xyz.block.ftl.v1.schema.Metadata.sql_migration:type_name -> xyz.block.ftl.v1.schema.MetadataSQLMigration + 33, // 55: xyz.block.ftl.v1.schema.Metadata.secrets:type_name -> xyz.block.ftl.v1.schema.MetadataSecrets + 34, // 56: xyz.block.ftl.v1.schema.Metadata.subscriber:type_name -> xyz.block.ftl.v1.schema.MetadataSubscriber + 35, // 57: xyz.block.ftl.v1.schema.Metadata.type_map:type_name -> xyz.block.ftl.v1.schema.MetadataTypeMap + 39, // 58: xyz.block.ftl.v1.schema.MetadataAlias.pos:type_name -> xyz.block.ftl.v1.schema.Position + 0, // 59: xyz.block.ftl.v1.schema.MetadataAlias.kind:type_name -> xyz.block.ftl.v1.schema.AliasKind + 39, // 60: xyz.block.ftl.v1.schema.MetadataCalls.pos:type_name -> xyz.block.ftl.v1.schema.Position + 40, // 61: xyz.block.ftl.v1.schema.MetadataCalls.calls:type_name -> xyz.block.ftl.v1.schema.Ref + 39, // 62: xyz.block.ftl.v1.schema.MetadataConfig.pos:type_name -> xyz.block.ftl.v1.schema.Position + 40, // 63: xyz.block.ftl.v1.schema.MetadataConfig.config:type_name -> xyz.block.ftl.v1.schema.Ref + 39, // 64: xyz.block.ftl.v1.schema.MetadataCronJob.pos:type_name -> xyz.block.ftl.v1.schema.Position + 39, // 65: xyz.block.ftl.v1.schema.MetadataDatabases.pos:type_name -> xyz.block.ftl.v1.schema.Position + 40, // 66: xyz.block.ftl.v1.schema.MetadataDatabases.calls:type_name -> xyz.block.ftl.v1.schema.Ref + 39, // 67: xyz.block.ftl.v1.schema.MetadataEncoding.pos:type_name -> xyz.block.ftl.v1.schema.Position + 39, // 68: xyz.block.ftl.v1.schema.MetadataIngress.pos:type_name -> xyz.block.ftl.v1.schema.Position + 16, // 69: xyz.block.ftl.v1.schema.MetadataIngress.path:type_name -> xyz.block.ftl.v1.schema.IngressPathComponent + 39, // 70: xyz.block.ftl.v1.schema.MetadataPublisher.pos:type_name -> xyz.block.ftl.v1.schema.Position + 40, // 71: xyz.block.ftl.v1.schema.MetadataPublisher.topics:type_name -> xyz.block.ftl.v1.schema.Ref + 39, // 72: xyz.block.ftl.v1.schema.MetadataRetry.pos:type_name -> xyz.block.ftl.v1.schema.Position + 40, // 73: xyz.block.ftl.v1.schema.MetadataRetry.catch:type_name -> xyz.block.ftl.v1.schema.Ref + 39, // 74: xyz.block.ftl.v1.schema.MetadataSQLMigration.pos:type_name -> xyz.block.ftl.v1.schema.Position + 39, // 75: xyz.block.ftl.v1.schema.MetadataSecrets.pos:type_name -> xyz.block.ftl.v1.schema.Position + 40, // 76: xyz.block.ftl.v1.schema.MetadataSecrets.secrets:type_name -> xyz.block.ftl.v1.schema.Ref + 39, // 77: xyz.block.ftl.v1.schema.MetadataSubscriber.pos:type_name -> xyz.block.ftl.v1.schema.Position + 39, // 78: xyz.block.ftl.v1.schema.MetadataTypeMap.pos:type_name -> xyz.block.ftl.v1.schema.Position + 39, // 79: xyz.block.ftl.v1.schema.Module.pos:type_name -> xyz.block.ftl.v1.schema.Position + 11, // 80: xyz.block.ftl.v1.schema.Module.decls:type_name -> xyz.block.ftl.v1.schema.Decl + 37, // 81: xyz.block.ftl.v1.schema.Module.runtime:type_name -> xyz.block.ftl.v1.schema.ModuleRuntime + 58, // 82: xyz.block.ftl.v1.schema.ModuleRuntime.create_time:type_name -> google.protobuf.Timestamp + 39, // 83: xyz.block.ftl.v1.schema.Optional.pos:type_name -> xyz.block.ftl.v1.schema.Position + 50, // 84: xyz.block.ftl.v1.schema.Optional.type:type_name -> xyz.block.ftl.v1.schema.Type + 39, // 85: xyz.block.ftl.v1.schema.Ref.pos:type_name -> xyz.block.ftl.v1.schema.Position + 50, // 86: xyz.block.ftl.v1.schema.Ref.type_parameters:type_name -> xyz.block.ftl.v1.schema.Type + 39, // 87: xyz.block.ftl.v1.schema.Schema.pos:type_name -> xyz.block.ftl.v1.schema.Position + 36, // 88: xyz.block.ftl.v1.schema.Schema.modules:type_name -> xyz.block.ftl.v1.schema.Module + 39, // 89: xyz.block.ftl.v1.schema.Secret.pos:type_name -> xyz.block.ftl.v1.schema.Position + 50, // 90: xyz.block.ftl.v1.schema.Secret.type:type_name -> xyz.block.ftl.v1.schema.Type + 39, // 91: xyz.block.ftl.v1.schema.String.pos:type_name -> xyz.block.ftl.v1.schema.Position + 39, // 92: xyz.block.ftl.v1.schema.StringValue.pos:type_name -> xyz.block.ftl.v1.schema.Position + 39, // 93: xyz.block.ftl.v1.schema.Subscription.pos:type_name -> xyz.block.ftl.v1.schema.Position + 46, // 94: xyz.block.ftl.v1.schema.Subscription.runtime:type_name -> xyz.block.ftl.v1.schema.SubscriptionRuntime + 40, // 95: xyz.block.ftl.v1.schema.Subscription.topic:type_name -> xyz.block.ftl.v1.schema.Ref + 39, // 96: xyz.block.ftl.v1.schema.Time.pos:type_name -> xyz.block.ftl.v1.schema.Position + 39, // 97: xyz.block.ftl.v1.schema.Topic.pos:type_name -> xyz.block.ftl.v1.schema.Position + 49, // 98: xyz.block.ftl.v1.schema.Topic.runtime:type_name -> xyz.block.ftl.v1.schema.TopicRuntime + 50, // 99: xyz.block.ftl.v1.schema.Topic.event:type_name -> xyz.block.ftl.v1.schema.Type + 1, // 100: xyz.block.ftl.v1.schema.Type.any:type_name -> xyz.block.ftl.v1.schema.Any + 2, // 101: xyz.block.ftl.v1.schema.Type.array:type_name -> xyz.block.ftl.v1.schema.Array + 3, // 102: xyz.block.ftl.v1.schema.Type.bool:type_name -> xyz.block.ftl.v1.schema.Bool + 4, // 103: xyz.block.ftl.v1.schema.Type.bytes:type_name -> xyz.block.ftl.v1.schema.Bytes + 15, // 104: xyz.block.ftl.v1.schema.Type.float:type_name -> xyz.block.ftl.v1.schema.Float + 19, // 105: xyz.block.ftl.v1.schema.Type.int:type_name -> xyz.block.ftl.v1.schema.Int + 21, // 106: xyz.block.ftl.v1.schema.Type.map:type_name -> xyz.block.ftl.v1.schema.Map + 38, // 107: xyz.block.ftl.v1.schema.Type.optional:type_name -> xyz.block.ftl.v1.schema.Optional + 40, // 108: xyz.block.ftl.v1.schema.Type.ref:type_name -> xyz.block.ftl.v1.schema.Ref + 43, // 109: xyz.block.ftl.v1.schema.Type.string:type_name -> xyz.block.ftl.v1.schema.String + 47, // 110: xyz.block.ftl.v1.schema.Type.time:type_name -> xyz.block.ftl.v1.schema.Time + 54, // 111: xyz.block.ftl.v1.schema.Type.unit:type_name -> xyz.block.ftl.v1.schema.Unit + 39, // 112: xyz.block.ftl.v1.schema.TypeAlias.pos:type_name -> xyz.block.ftl.v1.schema.Position + 50, // 113: xyz.block.ftl.v1.schema.TypeAlias.type:type_name -> xyz.block.ftl.v1.schema.Type + 22, // 114: xyz.block.ftl.v1.schema.TypeAlias.metadata:type_name -> xyz.block.ftl.v1.schema.Metadata + 39, // 115: xyz.block.ftl.v1.schema.TypeParameter.pos:type_name -> xyz.block.ftl.v1.schema.Position + 39, // 116: xyz.block.ftl.v1.schema.TypeValue.pos:type_name -> xyz.block.ftl.v1.schema.Position + 50, // 117: xyz.block.ftl.v1.schema.TypeValue.value:type_name -> xyz.block.ftl.v1.schema.Type + 39, // 118: xyz.block.ftl.v1.schema.Unit.pos:type_name -> xyz.block.ftl.v1.schema.Position + 20, // 119: xyz.block.ftl.v1.schema.Value.int_value:type_name -> xyz.block.ftl.v1.schema.IntValue + 44, // 120: xyz.block.ftl.v1.schema.Value.string_value:type_name -> xyz.block.ftl.v1.schema.StringValue + 53, // 121: xyz.block.ftl.v1.schema.Value.type_value:type_name -> xyz.block.ftl.v1.schema.TypeValue + 39, // 122: xyz.block.ftl.v1.schema.Verb.pos:type_name -> xyz.block.ftl.v1.schema.Position + 50, // 123: xyz.block.ftl.v1.schema.Verb.request:type_name -> xyz.block.ftl.v1.schema.Type + 50, // 124: xyz.block.ftl.v1.schema.Verb.response:type_name -> xyz.block.ftl.v1.schema.Type + 22, // 125: xyz.block.ftl.v1.schema.Verb.metadata:type_name -> xyz.block.ftl.v1.schema.Metadata + 57, // 126: xyz.block.ftl.v1.schema.Verb.runtime:type_name -> xyz.block.ftl.v1.schema.VerbRuntime + 58, // 127: xyz.block.ftl.v1.schema.VerbRuntime.create_time:type_name -> google.protobuf.Timestamp + 58, // 128: xyz.block.ftl.v1.schema.VerbRuntime.start_time:type_name -> google.protobuf.Timestamp + 129, // [129:129] is the sub-list for method output_type + 129, // [129:129] is the sub-list for method input_type + 129, // [129:129] is the sub-list for extension type_name + 129, // [129:129] is the sub-list for extension extendee + 0, // [0:129] is the sub-list for field type_name } func init() { file_xyz_block_ftl_v1_schema_schema_proto_init() } @@ -4910,9 +4978,9 @@ func file_xyz_block_ftl_v1_schema_schema_proto_init() { file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[6].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[7].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[8].OneofWrappers = []any{ - (*DatabaseRuntime_DsnDatabaseRuntime)(nil), + (*DatabaseConnector_DsnDatabaseConnector)(nil), } - file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[9].OneofWrappers = []any{ + file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[10].OneofWrappers = []any{ (*Decl_Config)(nil), (*Decl_Data)(nil), (*Decl_Database)(nil), @@ -4923,20 +4991,20 @@ func file_xyz_block_ftl_v1_schema_schema_proto_init() { (*Decl_TypeAlias)(nil), (*Decl_Verb)(nil), } - file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[10].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[11].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[12].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[13].OneofWrappers = []any{} - file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[14].OneofWrappers = []any{ + file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[14].OneofWrappers = []any{} + file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[15].OneofWrappers = []any{ (*IngressPathComponent_IngressPathLiteral)(nil), (*IngressPathComponent_IngressPathParameter)(nil), } - file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[15].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[16].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[17].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[18].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[19].OneofWrappers = []any{} - file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[20].OneofWrappers = []any{ + file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[20].OneofWrappers = []any{} + file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[21].OneofWrappers = []any{ (*Metadata_Alias)(nil), (*Metadata_Calls)(nil), (*Metadata_Config)(nil), @@ -4951,7 +5019,6 @@ func file_xyz_block_ftl_v1_schema_schema_proto_init() { (*Metadata_Subscriber)(nil), (*Metadata_TypeMap)(nil), } - file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[21].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[22].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[23].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[24].OneofWrappers = []any{} @@ -4967,15 +5034,16 @@ func file_xyz_block_ftl_v1_schema_schema_proto_init() { file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[34].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[35].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[36].OneofWrappers = []any{} - file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[38].OneofWrappers = []any{} + file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[37].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[39].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[40].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[41].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[42].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[43].OneofWrappers = []any{} - file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[45].OneofWrappers = []any{} + file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[44].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[46].OneofWrappers = []any{} - file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[48].OneofWrappers = []any{ + file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[47].OneofWrappers = []any{} + file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[49].OneofWrappers = []any{ (*Type_Any)(nil), (*Type_Array)(nil), (*Type_Bool)(nil), @@ -4989,23 +5057,23 @@ func file_xyz_block_ftl_v1_schema_schema_proto_init() { (*Type_Time)(nil), (*Type_Unit)(nil), } - file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[49].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[50].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[51].OneofWrappers = []any{} file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[52].OneofWrappers = []any{} - file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[53].OneofWrappers = []any{ + file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[53].OneofWrappers = []any{} + file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[54].OneofWrappers = []any{ (*Value_IntValue)(nil), (*Value_StringValue)(nil), (*Value_TypeValue)(nil), } - file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[54].OneofWrappers = []any{} + file_xyz_block_ftl_v1_schema_schema_proto_msgTypes[55].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_xyz_block_ftl_v1_schema_schema_proto_rawDesc, NumEnums: 1, - NumMessages: 56, + NumMessages: 57, NumExtensions: 0, NumServices: 0, }, diff --git a/backend/protos/xyz/block/ftl/v1/schema/schema.proto b/backend/protos/xyz/block/ftl/v1/schema/schema.proto index df8efe5301..1ca3df3163 100644 --- a/backend/protos/xyz/block/ftl/v1/schema/schema.proto +++ b/backend/protos/xyz/block/ftl/v1/schema/schema.proto @@ -36,7 +36,7 @@ message Config { Type type = 4; } -message DSNDatabaseRuntime { +message DSNDatabaseConnector { optional Position pos = 1; string dsn = 2; } @@ -60,12 +60,17 @@ message Database { repeated Metadata metadata = 5; } -message DatabaseRuntime { +message DatabaseConnector { oneof value { - DSNDatabaseRuntime dsn_database_runtime = 1; + DSNDatabaseConnector dsn_database_connector = 1; } } +message DatabaseRuntime { + DatabaseConnector read_connector = 1; + DatabaseConnector write_connector = 2; +} + message Decl { oneof value { Config config = 6; diff --git a/backend/protos/xyz/block/ftl/v1beta1/provisioner/resource.pb.go b/backend/protos/xyz/block/ftl/v1beta1/provisioner/resource.pb.go index bb8980ab29..7a00148d32 100644 --- a/backend/protos/xyz/block/ftl/v1beta1/provisioner/resource.pb.go +++ b/backend/protos/xyz/block/ftl/v1beta1/provisioner/resource.pb.go @@ -173,7 +173,7 @@ type PostgresResource struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Output *PostgresResource_PostgresResourceOutput `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"` + Output *schema.DatabaseRuntime `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"` } func (x *PostgresResource) Reset() { @@ -206,7 +206,7 @@ func (*PostgresResource) Descriptor() ([]byte, []int) { return file_xyz_block_ftl_v1beta1_provisioner_resource_proto_rawDescGZIP(), []int{1} } -func (x *PostgresResource) GetOutput() *PostgresResource_PostgresResourceOutput { +func (x *PostgresResource) GetOutput() *schema.DatabaseRuntime { if x != nil { return x.Output } @@ -218,7 +218,7 @@ type MysqlResource struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Output *MysqlResource_MysqlResourceOutput `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"` + Output *schema.DatabaseRuntime `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"` } func (x *MysqlResource) Reset() { @@ -251,7 +251,7 @@ func (*MysqlResource) Descriptor() ([]byte, []int) { return file_xyz_block_ftl_v1beta1_provisioner_resource_proto_rawDescGZIP(), []int{2} } -func (x *MysqlResource) GetOutput() *MysqlResource_MysqlResourceOutput { +func (x *MysqlResource) GetOutput() *schema.DatabaseRuntime { if x != nil { return x.Output } @@ -479,112 +479,6 @@ func (x *SubscriptionResource) GetTopic() *schema.Ref { return nil } -type PostgresResource_PostgresResourceOutput struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ReadDsn string `protobuf:"bytes,1,opt,name=read_dsn,json=readDsn,proto3" json:"read_dsn,omitempty"` - WriteDsn string `protobuf:"bytes,2,opt,name=write_dsn,json=writeDsn,proto3" json:"write_dsn,omitempty"` -} - -func (x *PostgresResource_PostgresResourceOutput) Reset() { - *x = PostgresResource_PostgresResourceOutput{} - mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PostgresResource_PostgresResourceOutput) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PostgresResource_PostgresResourceOutput) ProtoMessage() {} - -func (x *PostgresResource_PostgresResourceOutput) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PostgresResource_PostgresResourceOutput.ProtoReflect.Descriptor instead. -func (*PostgresResource_PostgresResourceOutput) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1beta1_provisioner_resource_proto_rawDescGZIP(), []int{1, 0} -} - -func (x *PostgresResource_PostgresResourceOutput) GetReadDsn() string { - if x != nil { - return x.ReadDsn - } - return "" -} - -func (x *PostgresResource_PostgresResourceOutput) GetWriteDsn() string { - if x != nil { - return x.WriteDsn - } - return "" -} - -type MysqlResource_MysqlResourceOutput struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ReadDsn string `protobuf:"bytes,1,opt,name=read_dsn,json=readDsn,proto3" json:"read_dsn,omitempty"` - WriteDsn string `protobuf:"bytes,2,opt,name=write_dsn,json=writeDsn,proto3" json:"write_dsn,omitempty"` -} - -func (x *MysqlResource_MysqlResourceOutput) Reset() { - *x = MysqlResource_MysqlResourceOutput{} - mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *MysqlResource_MysqlResourceOutput) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MysqlResource_MysqlResourceOutput) ProtoMessage() {} - -func (x *MysqlResource_MysqlResourceOutput) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MysqlResource_MysqlResourceOutput.ProtoReflect.Descriptor instead. -func (*MysqlResource_MysqlResourceOutput) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1beta1_provisioner_resource_proto_rawDescGZIP(), []int{2, 0} -} - -func (x *MysqlResource_MysqlResourceOutput) GetReadDsn() string { - if x != nil { - return x.ReadDsn - } - return "" -} - -func (x *MysqlResource_MysqlResourceOutput) GetWriteDsn() string { - if x != nil { - return x.WriteDsn - } - return "" -} - type SqlMigrationResource_SqlMigrationResourceOutput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -593,7 +487,7 @@ type SqlMigrationResource_SqlMigrationResourceOutput struct { func (x *SqlMigrationResource_SqlMigrationResourceOutput) Reset() { *x = SqlMigrationResource_SqlMigrationResourceOutput{} - mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[9] + mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -605,7 +499,7 @@ func (x *SqlMigrationResource_SqlMigrationResourceOutput) String() string { func (*SqlMigrationResource_SqlMigrationResourceOutput) ProtoMessage() {} func (x *SqlMigrationResource_SqlMigrationResourceOutput) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[9] + mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -631,7 +525,7 @@ type ModuleResource_ModuleResourceOutput struct { func (x *ModuleResource_ModuleResourceOutput) Reset() { *x = ModuleResource_ModuleResourceOutput{} - mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[10] + mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -643,7 +537,7 @@ func (x *ModuleResource_ModuleResourceOutput) String() string { func (*ModuleResource_ModuleResourceOutput) ProtoMessage() {} func (x *ModuleResource_ModuleResourceOutput) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[10] + mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -677,7 +571,7 @@ type TopicResource_TopicResourceOutput struct { func (x *TopicResource_TopicResourceOutput) Reset() { *x = TopicResource_TopicResourceOutput{} - mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[11] + mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -689,7 +583,7 @@ func (x *TopicResource_TopicResourceOutput) String() string { func (*TopicResource_TopicResourceOutput) ProtoMessage() {} func (x *TopicResource_TopicResourceOutput) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[11] + mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -731,7 +625,7 @@ type SubscriptionResource_SubscriptionResourceOutput struct { func (x *SubscriptionResource_SubscriptionResourceOutput) Reset() { *x = SubscriptionResource_SubscriptionResourceOutput{} - mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[12] + mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -743,7 +637,7 @@ func (x *SubscriptionResource_SubscriptionResourceOutput) String() string { func (*SubscriptionResource_SubscriptionResourceOutput) ProtoMessage() {} func (x *SubscriptionResource_SubscriptionResourceOutput) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[12] + mi := &file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -829,105 +723,91 @@ var file_xyz_block_ftl_v1beta1_provisioner_resource_proto_rawDesc = []byte{ 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, - 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xc8, 0x01, 0x0a, 0x10, 0x50, 0x6f, - 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x62, - 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, - 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x65, 0x72, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x1a, 0x50, 0x0a, 0x16, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x19, 0x0a, 0x08, - 0x72, 0x65, 0x61, 0x64, 0x5f, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x72, 0x65, 0x61, 0x64, 0x44, 0x73, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x72, 0x69, 0x74, 0x65, - 0x5f, 0x64, 0x73, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x44, 0x73, 0x6e, 0x22, 0xbc, 0x01, 0x0a, 0x0d, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x5c, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x4d, 0x79, 0x73, 0x71, 0x6c, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x06, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x1a, 0x4d, 0x0a, 0x13, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x72, - 0x65, 0x61, 0x64, 0x5f, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, - 0x65, 0x61, 0x64, 0x44, 0x73, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, - 0x64, 0x73, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x72, 0x69, 0x74, 0x65, - 0x44, 0x73, 0x6e, 0x22, 0xb8, 0x01, 0x0a, 0x14, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x6a, 0x0a, 0x06, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x52, 0x2e, 0x78, - 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, - 0x2e, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, - 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, - 0x1a, 0x1c, 0x0a, 0x1a, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0xed, - 0x02, 0x0a, 0x0e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x12, 0x5e, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x46, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, - 0x6c, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x12, 0x37, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, - 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x6f, 0x64, 0x75, - 0x6c, 0x65, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x42, 0x0a, 0x09, 0x61, 0x72, - 0x74, 0x65, 0x66, 0x61, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x54, 0x0a, 0x10, 0x50, 0x6f, 0x73, + 0x74, 0x67, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x40, 0x0a, + 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x72, 0x74, 0x65, 0x66, - 0x61, 0x63, 0x74, 0x52, 0x09, 0x61, 0x72, 0x74, 0x65, 0x66, 0x61, 0x63, 0x74, 0x73, 0x12, 0x34, - 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x88, 0x01, 0x01, 0x1a, 0x3d, 0x0a, 0x14, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, - 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x4b, 0x65, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0xc4, - 0x01, 0x0a, 0x0d, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x12, 0x5c, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x44, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, + 0x51, 0x0a, 0x0d, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x40, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, + 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x22, 0xb8, 0x01, 0x0a, 0x14, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x6a, 0x0a, 0x06, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x52, 0x2e, 0x78, 0x79, + 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, + 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x2e, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, + 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x1a, + 0x1c, 0x0a, 0x1a, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0xed, 0x02, + 0x0a, 0x0e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x5e, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x46, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x1a, 0x55, - 0x0a, 0x13, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6b, 0x61, 0x66, 0x6b, 0x61, 0x5f, 0x62, - 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6b, 0x61, - 0x66, 0x6b, 0x61, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, - 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, - 0x70, 0x69, 0x63, 0x49, 0x64, 0x22, 0xc1, 0x02, 0x0a, 0x14, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x6a, - 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x52, - 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x65, 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x6f, - 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x1a, 0x88, - 0x01, 0x0a, 0x1a, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x23, 0x0a, - 0x0d, 0x6b, 0x61, 0x66, 0x6b, 0x61, 0x5f, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6b, 0x61, 0x66, 0x6b, 0x61, 0x42, 0x72, 0x6f, 0x6b, 0x65, - 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x2a, 0x0a, - 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, - 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x42, 0x5b, 0x50, 0x01, 0x5a, 0x57, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x42, 0x44, 0x35, 0x34, 0x35, - 0x36, 0x36, 0x39, 0x37, 0x35, 0x2f, 0x66, 0x74, 0x6c, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, - 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x78, 0x79, 0x7a, 0x2f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x2f, 0x66, 0x74, 0x6c, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x3b, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x12, 0x37, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, + 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x42, 0x0a, 0x09, 0x61, 0x72, 0x74, + 0x65, 0x66, 0x61, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, + 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x72, 0x74, 0x65, 0x66, 0x61, + 0x63, 0x74, 0x52, 0x09, 0x61, 0x72, 0x74, 0x65, 0x66, 0x61, 0x63, 0x74, 0x73, 0x12, 0x34, 0x0a, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x88, 0x01, 0x01, 0x1a, 0x3d, 0x0a, 0x14, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4b, + 0x65, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0xc4, 0x01, + 0x0a, 0x0d, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x5c, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x44, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x65, 0x72, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x1a, 0x55, 0x0a, + 0x13, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6b, 0x61, 0x66, 0x6b, 0x61, 0x5f, 0x62, 0x72, + 0x6f, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6b, 0x61, 0x66, + 0x6b, 0x61, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, + 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x70, + 0x69, 0x63, 0x49, 0x64, 0x22, 0xc1, 0x02, 0x0a, 0x14, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x6a, 0x0a, + 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x52, 0x2e, + 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, + 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x6f, 0x70, + 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x1a, 0x88, 0x01, + 0x0a, 0x1a, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x23, 0x0a, 0x0d, + 0x6b, 0x61, 0x66, 0x6b, 0x61, 0x5f, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6b, 0x61, 0x66, 0x6b, 0x61, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, + 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, + 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, + 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x42, 0x5b, 0x50, 0x01, 0x5a, 0x57, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x42, 0x44, 0x35, 0x34, 0x35, 0x36, + 0x36, 0x39, 0x37, 0x35, 0x2f, 0x66, 0x74, 0x6c, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x78, 0x79, 0x7a, 0x2f, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x2f, 0x66, 0x74, 0x6c, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x3b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -942,7 +822,7 @@ func file_xyz_block_ftl_v1beta1_provisioner_resource_proto_rawDescGZIP() []byte return file_xyz_block_ftl_v1beta1_provisioner_resource_proto_rawDescData } -var file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_xyz_block_ftl_v1beta1_provisioner_resource_proto_msgTypes = make([]protoimpl.MessageInfo, 11) var file_xyz_block_ftl_v1beta1_provisioner_resource_proto_goTypes = []any{ (*Resource)(nil), // 0: xyz.block.ftl.v1beta1.provisioner.Resource (*PostgresResource)(nil), // 1: xyz.block.ftl.v1beta1.provisioner.PostgresResource @@ -951,16 +831,15 @@ var file_xyz_block_ftl_v1beta1_provisioner_resource_proto_goTypes = []any{ (*ModuleResource)(nil), // 4: xyz.block.ftl.v1beta1.provisioner.ModuleResource (*TopicResource)(nil), // 5: xyz.block.ftl.v1beta1.provisioner.TopicResource (*SubscriptionResource)(nil), // 6: xyz.block.ftl.v1beta1.provisioner.SubscriptionResource - (*PostgresResource_PostgresResourceOutput)(nil), // 7: xyz.block.ftl.v1beta1.provisioner.PostgresResource.PostgresResourceOutput - (*MysqlResource_MysqlResourceOutput)(nil), // 8: xyz.block.ftl.v1beta1.provisioner.MysqlResource.MysqlResourceOutput - (*SqlMigrationResource_SqlMigrationResourceOutput)(nil), // 9: xyz.block.ftl.v1beta1.provisioner.SqlMigrationResource.SqlMigrationResourceOutput - (*ModuleResource_ModuleResourceOutput)(nil), // 10: xyz.block.ftl.v1beta1.provisioner.ModuleResource.ModuleResourceOutput - (*TopicResource_TopicResourceOutput)(nil), // 11: xyz.block.ftl.v1beta1.provisioner.TopicResource.TopicResourceOutput - (*SubscriptionResource_SubscriptionResourceOutput)(nil), // 12: xyz.block.ftl.v1beta1.provisioner.SubscriptionResource.SubscriptionResourceOutput - (*schema.Module)(nil), // 13: xyz.block.ftl.v1.schema.Module - (*v1.DeploymentArtefact)(nil), // 14: xyz.block.ftl.v1.DeploymentArtefact - (*structpb.Struct)(nil), // 15: google.protobuf.Struct - (*schema.Ref)(nil), // 16: xyz.block.ftl.v1.schema.Ref + (*SqlMigrationResource_SqlMigrationResourceOutput)(nil), // 7: xyz.block.ftl.v1beta1.provisioner.SqlMigrationResource.SqlMigrationResourceOutput + (*ModuleResource_ModuleResourceOutput)(nil), // 8: xyz.block.ftl.v1beta1.provisioner.ModuleResource.ModuleResourceOutput + (*TopicResource_TopicResourceOutput)(nil), // 9: xyz.block.ftl.v1beta1.provisioner.TopicResource.TopicResourceOutput + (*SubscriptionResource_SubscriptionResourceOutput)(nil), // 10: xyz.block.ftl.v1beta1.provisioner.SubscriptionResource.SubscriptionResourceOutput + (*schema.DatabaseRuntime)(nil), // 11: xyz.block.ftl.v1.schema.DatabaseRuntime + (*schema.Module)(nil), // 12: xyz.block.ftl.v1.schema.Module + (*v1.DeploymentArtefact)(nil), // 13: xyz.block.ftl.v1.DeploymentArtefact + (*structpb.Struct)(nil), // 14: google.protobuf.Struct + (*schema.Ref)(nil), // 15: xyz.block.ftl.v1.schema.Ref } var file_xyz_block_ftl_v1beta1_provisioner_resource_proto_depIdxs = []int32{ 1, // 0: xyz.block.ftl.v1beta1.provisioner.Resource.postgres:type_name -> xyz.block.ftl.v1beta1.provisioner.PostgresResource @@ -969,16 +848,16 @@ var file_xyz_block_ftl_v1beta1_provisioner_resource_proto_depIdxs = []int32{ 3, // 3: xyz.block.ftl.v1beta1.provisioner.Resource.sql_migration:type_name -> xyz.block.ftl.v1beta1.provisioner.SqlMigrationResource 5, // 4: xyz.block.ftl.v1beta1.provisioner.Resource.topic:type_name -> xyz.block.ftl.v1beta1.provisioner.TopicResource 6, // 5: xyz.block.ftl.v1beta1.provisioner.Resource.subscription:type_name -> xyz.block.ftl.v1beta1.provisioner.SubscriptionResource - 7, // 6: xyz.block.ftl.v1beta1.provisioner.PostgresResource.output:type_name -> xyz.block.ftl.v1beta1.provisioner.PostgresResource.PostgresResourceOutput - 8, // 7: xyz.block.ftl.v1beta1.provisioner.MysqlResource.output:type_name -> xyz.block.ftl.v1beta1.provisioner.MysqlResource.MysqlResourceOutput - 9, // 8: xyz.block.ftl.v1beta1.provisioner.SqlMigrationResource.output:type_name -> xyz.block.ftl.v1beta1.provisioner.SqlMigrationResource.SqlMigrationResourceOutput - 10, // 9: xyz.block.ftl.v1beta1.provisioner.ModuleResource.output:type_name -> xyz.block.ftl.v1beta1.provisioner.ModuleResource.ModuleResourceOutput - 13, // 10: xyz.block.ftl.v1beta1.provisioner.ModuleResource.schema:type_name -> xyz.block.ftl.v1.schema.Module - 14, // 11: xyz.block.ftl.v1beta1.provisioner.ModuleResource.artefacts:type_name -> xyz.block.ftl.v1.DeploymentArtefact - 15, // 12: xyz.block.ftl.v1beta1.provisioner.ModuleResource.labels:type_name -> google.protobuf.Struct - 11, // 13: xyz.block.ftl.v1beta1.provisioner.TopicResource.output:type_name -> xyz.block.ftl.v1beta1.provisioner.TopicResource.TopicResourceOutput - 12, // 14: xyz.block.ftl.v1beta1.provisioner.SubscriptionResource.output:type_name -> xyz.block.ftl.v1beta1.provisioner.SubscriptionResource.SubscriptionResourceOutput - 16, // 15: xyz.block.ftl.v1beta1.provisioner.SubscriptionResource.topic:type_name -> xyz.block.ftl.v1.schema.Ref + 11, // 6: xyz.block.ftl.v1beta1.provisioner.PostgresResource.output:type_name -> xyz.block.ftl.v1.schema.DatabaseRuntime + 11, // 7: xyz.block.ftl.v1beta1.provisioner.MysqlResource.output:type_name -> xyz.block.ftl.v1.schema.DatabaseRuntime + 7, // 8: xyz.block.ftl.v1beta1.provisioner.SqlMigrationResource.output:type_name -> xyz.block.ftl.v1beta1.provisioner.SqlMigrationResource.SqlMigrationResourceOutput + 8, // 9: xyz.block.ftl.v1beta1.provisioner.ModuleResource.output:type_name -> xyz.block.ftl.v1beta1.provisioner.ModuleResource.ModuleResourceOutput + 12, // 10: xyz.block.ftl.v1beta1.provisioner.ModuleResource.schema:type_name -> xyz.block.ftl.v1.schema.Module + 13, // 11: xyz.block.ftl.v1beta1.provisioner.ModuleResource.artefacts:type_name -> xyz.block.ftl.v1.DeploymentArtefact + 14, // 12: xyz.block.ftl.v1beta1.provisioner.ModuleResource.labels:type_name -> google.protobuf.Struct + 9, // 13: xyz.block.ftl.v1beta1.provisioner.TopicResource.output:type_name -> xyz.block.ftl.v1beta1.provisioner.TopicResource.TopicResourceOutput + 10, // 14: xyz.block.ftl.v1beta1.provisioner.SubscriptionResource.output:type_name -> xyz.block.ftl.v1beta1.provisioner.SubscriptionResource.SubscriptionResourceOutput + 15, // 15: xyz.block.ftl.v1beta1.provisioner.SubscriptionResource.topic:type_name -> xyz.block.ftl.v1.schema.Ref 16, // [16:16] is the sub-list for method output_type 16, // [16:16] is the sub-list for method input_type 16, // [16:16] is the sub-list for extension type_name @@ -1006,7 +885,7 @@ func file_xyz_block_ftl_v1beta1_provisioner_resource_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_xyz_block_ftl_v1beta1_provisioner_resource_proto_rawDesc, NumEnums: 0, - NumMessages: 13, + NumMessages: 11, NumExtensions: 0, NumServices: 0, }, diff --git a/backend/protos/xyz/block/ftl/v1beta1/provisioner/resource.proto b/backend/protos/xyz/block/ftl/v1beta1/provisioner/resource.proto index 4889b95bde..96322b5e43 100644 --- a/backend/protos/xyz/block/ftl/v1beta1/provisioner/resource.proto +++ b/backend/protos/xyz/block/ftl/v1beta1/provisioner/resource.proto @@ -29,19 +29,11 @@ message Resource { // any output created by the provisioner is stored in a field called "output" message PostgresResource { - message PostgresResourceOutput { - string read_dsn = 1; - string write_dsn = 2; - } - PostgresResourceOutput output = 1; + v1.schema.DatabaseRuntime output = 1; } message MysqlResource { - message MysqlResourceOutput { - string read_dsn = 1; - string write_dsn = 2; - } - MysqlResourceOutput output = 1; + v1.schema.DatabaseRuntime output = 1; } message SqlMigrationResource { diff --git a/backend/provisioner/controller_provisioner.go b/backend/provisioner/controller_provisioner.go index 83a361b019..6430707bdb 100644 --- a/backend/provisioner/controller_provisioner.go +++ b/backend/provisioner/controller_provisioner.go @@ -37,13 +37,7 @@ func NewControllerProvisioner(client ftlv1connect.ControllerServiceClient) *InMe if !ok { return nil, fmt.Errorf("failed to find database declaration for %s", dep.ResourceId) } - decl.Database.Runtime = &schemapb.DatabaseRuntime{ - Value: &schemapb.DatabaseRuntime_DsnDatabaseRuntime{ - DsnDatabaseRuntime: &schemapb.DSNDatabaseRuntime{ - Dsn: r.Postgres.Output.WriteDsn, - }, - }, - } + decl.Database.Runtime = r.Postgres.Output case *provisioner.Resource_Mysql: if r.Mysql == nil || r.Mysql.Output == nil { return nil, fmt.Errorf("mysql resource has not been provisioned") @@ -55,13 +49,7 @@ func NewControllerProvisioner(client ftlv1connect.ControllerServiceClient) *InMe if !ok { return nil, fmt.Errorf("failed to find database declaration for %s", dep.ResourceId) } - decl.Database.Runtime = &schemapb.DatabaseRuntime{ - Value: &schemapb.DatabaseRuntime_DsnDatabaseRuntime{ - DsnDatabaseRuntime: &schemapb.DSNDatabaseRuntime{ - Dsn: r.Mysql.Output.WriteDsn, - }, - }, - } + decl.Database.Runtime = r.Mysql.Output case *provisioner.Resource_Topic: if r.Topic == nil || r.Topic.Output == nil { return nil, fmt.Errorf("topic resource has not been provisioned") diff --git a/backend/provisioner/deployment_test.go b/backend/provisioner/deployment_test.go index a2a9e87774..5e99cac0b6 100644 --- a/backend/provisioner/deployment_test.go +++ b/backend/provisioner/deployment_test.go @@ -7,6 +7,7 @@ import ( "connectrpc.com/connect" ftlv1 "github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1" + schemapb "github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/schema" proto "github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1beta1/provisioner" "github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1beta1/provisioner/provisionerconnect" "github.com/TBD54566975/ftl/backend/provisioner" @@ -121,9 +122,16 @@ func TestDeployment_Progress(t *testing.T) { psql.Postgres = &proto.PostgresResource{} } if psql.Postgres.Output == nil { - psql.Postgres.Output = &proto.PostgresResource_PostgresResourceOutput{} + psql.Postgres.Output = &schemapb.DatabaseRuntime{ + WriteConnector: &schemapb.DatabaseConnector{ + Value: &schemapb.DatabaseConnector_DsnDatabaseConnector{ + DsnDatabaseConnector: &schemapb.DSNDatabaseConnector{ + Dsn: "postgres://localhost:5432/foo", + }, + }, + }, + } } - psql.Postgres.Output.ReadDsn = "postgres://localhost:5432/foo" } else { return nil, fmt.Errorf("expected postgres resource, got %T", req.DesiredResources[0].Resource) } @@ -143,8 +151,8 @@ func TestDeployment_Progress(t *testing.T) { for _, res := range req.DesiredResources { for _, dep := range res.Dependencies { if psql, ok := dep.Resource.(*proto.Resource_Postgres); ok && psql.Postgres != nil { - if psql.Postgres.Output == nil || psql.Postgres.Output.ReadDsn == "" { - return nil, fmt.Errorf("read dsn is empty") + if psql.Postgres.Output == nil { + return nil, fmt.Errorf("output is nil") } } } diff --git a/backend/provisioner/dev_provisioner.go b/backend/provisioner/dev_provisioner.go index 7b6a2b2fd5..78b2e1fa50 100644 --- a/backend/provisioner/dev_provisioner.go +++ b/backend/provisioner/dev_provisioner.go @@ -11,9 +11,10 @@ import ( "github.com/XSAM/otelsql" _ "github.com/go-sql-driver/mysql" - "github.com/TBD54566975/ftl/backend/controller/dsn" + schemapb "github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/schema" "github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1beta1/provisioner" "github.com/TBD54566975/ftl/internal/dev" + "github.com/TBD54566975/ftl/internal/dsn" "github.com/TBD54566975/ftl/internal/log" "github.com/TBD54566975/ftl/internal/schema/strcase" ) @@ -96,9 +97,21 @@ func establishMySQLDB(ctx context.Context, rc *provisioner.ResourceContext, mysq mysql.Mysql = &provisioner.MysqlResource{} } dsn := dsn.MySQLDSN(dbName, dsn.Port(mysqlPort)) - mysql.Mysql.Output = &provisioner.MysqlResource_MysqlResourceOutput{ - WriteDsn: dsn, - ReadDsn: dsn, + mysql.Mysql.Output = &schemapb.DatabaseRuntime{ + WriteConnector: &schemapb.DatabaseConnector{ + Value: &schemapb.DatabaseConnector_DsnDatabaseConnector{ + DsnDatabaseConnector: &schemapb.DSNDatabaseConnector{ + Dsn: dsn, + }, + }, + }, + ReadConnector: &schemapb.DatabaseConnector{ + Value: &schemapb.DatabaseConnector_DsnDatabaseConnector{ + DsnDatabaseConnector: &schemapb.DSNDatabaseConnector{ + Dsn: dsn, + }, + }, + }, } return rc.Resource, nil } @@ -113,7 +126,7 @@ func ProvisionPostgresForTest(ctx context.Context, module string, id string) (st return "", err } - return res.GetPostgres().GetOutput().GetWriteDsn(), nil + return res.GetPostgres().GetOutput().WriteConnector.GetDsnDatabaseConnector().GetDsn(), nil } func ProvisionMySQLForTest(ctx context.Context, module string, id string) (string, error) { @@ -125,7 +138,7 @@ func ProvisionMySQLForTest(ctx context.Context, module string, id string) (strin if err != nil { return "", err } - return res.GetMysql().GetOutput().GetWriteDsn(), nil + return res.GetMysql().GetOutput().WriteConnector.GetDsnDatabaseConnector().GetDsn(), nil } func provisionPostgres(postgresPort int) func(ctx context.Context, rc *provisioner.ResourceContext, module string, id string) (*provisioner.Resource, error) { @@ -179,9 +192,21 @@ func provisionPostgres(postgresPort int) func(ctx context.Context, rc *provision pg.Postgres = &provisioner.PostgresResource{} } dsn := dsn.PostgresDSN(dbName, dsn.Port(postgresPort)) - pg.Postgres.Output = &provisioner.PostgresResource_PostgresResourceOutput{ - WriteDsn: dsn, - ReadDsn: dsn, + pg.Postgres.Output = &schemapb.DatabaseRuntime{ + WriteConnector: &schemapb.DatabaseConnector{ + Value: &schemapb.DatabaseConnector_DsnDatabaseConnector{ + DsnDatabaseConnector: &schemapb.DSNDatabaseConnector{ + Dsn: dsn, + }, + }, + }, + ReadConnector: &schemapb.DatabaseConnector{ + Value: &schemapb.DatabaseConnector_DsnDatabaseConnector{ + DsnDatabaseConnector: &schemapb.DSNDatabaseConnector{ + Dsn: dsn, + }, + }, + }, } return rc.Resource, nil } diff --git a/backend/provisioner/registry.go b/backend/provisioner/registry.go index 2027745a56..d26afdf8d0 100644 --- a/backend/provisioner/registry.go +++ b/backend/provisioner/registry.go @@ -188,8 +188,7 @@ func resourceEqual(desired, existing *provisioner.Resource) bool { return cmp.Equal(desired, existing, protocmp.Transform(), protocmp.IgnoreMessages( - &provisioner.MysqlResource_MysqlResourceOutput{}, - &provisioner.PostgresResource_PostgresResourceOutput{}, + &schemapb.DatabaseRuntime{}, &provisioner.ModuleResource_ModuleResourceOutput{}, &provisioner.SqlMigrationResource_SqlMigrationResourceOutput{}, &provisioner.TopicResource_TopicResourceOutput{}, diff --git a/backend/provisioner/resource_equality_test.go b/backend/provisioner/resource_equality_test.go index 5148cb715a..390719932b 100644 --- a/backend/provisioner/resource_equality_test.go +++ b/backend/provisioner/resource_equality_test.go @@ -3,6 +3,7 @@ package provisioner import ( "testing" + schemapb "github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/schema" "github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1beta1/provisioner" ) @@ -52,8 +53,14 @@ func TestResourceEqual(t *testing.T) { ResourceId: "test", Resource: &provisioner.Resource_Postgres{ Postgres: &provisioner.PostgresResource{ - Output: &provisioner.PostgresResource_PostgresResourceOutput{ - ReadDsn: "foo", + Output: &schemapb.DatabaseRuntime{ + WriteConnector: &schemapb.DatabaseConnector{ + Value: &schemapb.DatabaseConnector_DsnDatabaseConnector{ + DsnDatabaseConnector: &schemapb.DSNDatabaseConnector{ + Dsn: "foo", + }, + }, + }, }, }, }, diff --git a/backend/provisioner/sql_migration_provisioner.go b/backend/provisioner/sql_migration_provisioner.go index 25a60bef3f..e91d87183d 100644 --- a/backend/provisioner/sql_migration_provisioner.go +++ b/backend/provisioner/sql_migration_provisioner.go @@ -18,8 +18,10 @@ import ( "github.com/TBD54566975/ftl/backend/controller/artefacts" "github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1beta1/provisioner" + "github.com/TBD54566975/ftl/internal/dsn" "github.com/TBD54566975/ftl/internal/errors" "github.com/TBD54566975/ftl/internal/log" + "github.com/TBD54566975/ftl/internal/schema" "github.com/TBD54566975/ftl/internal/sha256" ) @@ -57,19 +59,26 @@ func provisionSQLMigration(registryConfig artefacts.RegistryConfig) func(ctx con if err != nil { return nil, fmt.Errorf("failed to extract tar: %w", err) } - dsn := "" + d := "" resource := rc.Dependencies[0].Resource switch res := resource.(type) { case *provisioner.Resource_Postgres: - dsn = res.Postgres.GetOutput().GetWriteDsn() + d, err = dsn.ResolvePostgresDSN(ctx, schema.DatabaseConnectorFromProto(res.Postgres.GetOutput().WriteConnector)) + if err != nil { + return nil, fmt.Errorf("failed to resolve postgres DSN: %w", err) + } case *provisioner.Resource_Mysql: - dsn = "mysql://" + res.Mysql.GetOutput().GetWriteDsn() + d, err = dsn.ResolveMySQLDSN(ctx, schema.DatabaseConnectorFromProto(res.Mysql.GetOutput().WriteConnector)) + if err != nil { + return nil, fmt.Errorf("failed to resolve mysql DSN: %w", err) + } + d = "mysql://" + d // strip the tcp part exp := regexp.MustCompile(`tcp\((.*?)\)`) - dsn = exp.ReplaceAllString(dsn, "$1") + d = exp.ReplaceAllString(d, "$1") } - u, err := url.Parse(dsn) + u, err := url.Parse(d) if err != nil { return nil, fmt.Errorf("invalid DSN: %w", err) } diff --git a/backend/runner/runner.go b/backend/runner/runner.go index c6d36fd7ff..290ff814b9 100644 --- a/backend/runner/runner.go +++ b/backend/runner/runner.go @@ -36,6 +36,7 @@ import ( "github.com/TBD54566975/ftl/backend/runner/observability" "github.com/TBD54566975/ftl/common/plugin" "github.com/TBD54566975/ftl/internal/download" + "github.com/TBD54566975/ftl/internal/dsn" "github.com/TBD54566975/ftl/internal/exec" "github.com/TBD54566975/ftl/internal/identity" "github.com/TBD54566975/ftl/internal/log" @@ -633,12 +634,13 @@ func (s *Service) startPgProxy(ctx context.Context, module *schema.Module, start return "", fmt.Errorf("database %s not found", params["database"]) } - if dsn, ok := db.Runtime.(*schema.DSNDatabaseRuntime); ok { - logger.Debugf("Resolved DSN (%s): %s", params["database"], dsn.DSN) - return dsn.DSN, nil + dsn, err := dsn.ResolvePostgresDSN(ctx, db.Runtime.WriteConnector) + if err != nil { + return "", fmt.Errorf("failed to resolve postgres DSN: %w", err) } - return "", fmt.Errorf("unknown database runtime type: %T", db.Runtime) + logger.Debugf("Resolved DSN (%s): %s", params["database"], dsn) + return dsn, nil }).Start(ctx, channel); err != nil { started.Done() return fmt.Errorf("failed to start pgproxy: %w", err) @@ -668,8 +670,8 @@ func (s *Service) startMySQLProxy(ctx context.Context, module *schema.Module, la errorC := make(chan error) databaseRuntime := decl.Runtime var proxy *mysql.Proxy - switch db := databaseRuntime.(type) { - case *schema.DSNDatabaseRuntime: + switch db := databaseRuntime.WriteConnector.(type) { + case *schema.DSNDatabaseConnector: proxy = mysql.NewProxy("localhost", 0, db.DSN, &mysqlLogger{logger: logger}, portC) default: return fmt.Errorf("unknown database runtime type: %T", databaseRuntime) diff --git a/cmd/ftl-controller/main.go b/cmd/ftl-controller/main.go index dd957f7e13..2346d70686 100644 --- a/cmd/ftl-controller/main.go +++ b/cmd/ftl-controller/main.go @@ -13,7 +13,6 @@ import ( "github.com/TBD54566975/ftl" "github.com/TBD54566975/ftl/backend/controller" - "github.com/TBD54566975/ftl/backend/controller/dsn" "github.com/TBD54566975/ftl/backend/controller/leases/dbleaser" "github.com/TBD54566975/ftl/backend/controller/scaling/k8sscaling" _ "github.com/TBD54566975/ftl/internal/automaxprocs" // Set GOMAXPROCS to match Linux container CPU quota. @@ -22,6 +21,7 @@ import ( "github.com/TBD54566975/ftl/internal/configuration/manager" "github.com/TBD54566975/ftl/internal/configuration/providers" "github.com/TBD54566975/ftl/internal/configuration/routers" + "github.com/TBD54566975/ftl/internal/dsn" "github.com/TBD54566975/ftl/internal/log" "github.com/TBD54566975/ftl/internal/observability" ) diff --git a/cmd/ftl-initdb/main.go b/cmd/ftl-initdb/main.go index 6add8af8f9..cde054e43f 100644 --- a/cmd/ftl-initdb/main.go +++ b/cmd/ftl-initdb/main.go @@ -6,8 +6,8 @@ import ( "github.com/alecthomas/kong" - "github.com/TBD54566975/ftl/backend/controller/dsn" "github.com/TBD54566975/ftl/backend/controller/sql/databasetesting" + "github.com/TBD54566975/ftl/internal/dsn" "github.com/TBD54566975/ftl/internal/log" ) diff --git a/cmd/ftl-provisioner-cloudformation/status.go b/cmd/ftl-provisioner-cloudformation/status.go index 7409eecd30..a1a2980832 100644 --- a/cmd/ftl-provisioner-cloudformation/status.go +++ b/cmd/ftl-provisioner-cloudformation/status.go @@ -9,6 +9,7 @@ import ( "github.com/aws/aws-sdk-go-v2/service/cloudformation/types" _ "github.com/jackc/pgx/v5/stdlib" // SQL driver + schemapb "github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/schema" "github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1beta1/provisioner" ) @@ -82,7 +83,7 @@ func (c *CloudformationProvisioner) updateResources(ctx context.Context, outputs postgres.Postgres = &provisioner.PostgresResource{} } if postgres.Postgres.Output == nil { - postgres.Postgres.Output = &provisioner.PostgresResource_PostgresResourceOutput{} + postgres.Postgres.Output = &schemapb.DatabaseRuntime{} } if err := c.updatePostgresOutputs(ctx, postgres.Postgres.Output, resource.ResourceId, byResourceID[resource.ResourceId]); err != nil { @@ -95,7 +96,7 @@ func (c *CloudformationProvisioner) updateResources(ctx context.Context, outputs return nil } -func (c *CloudformationProvisioner) updatePostgresOutputs(ctx context.Context, to *provisioner.PostgresResource_PostgresResourceOutput, resourceID string, outputs []types.Output) error { +func (c *CloudformationProvisioner) updatePostgresOutputs(ctx context.Context, to *schemapb.DatabaseRuntime, resourceID string, outputs []types.Output) error { byName, err := outputsByPropertyName(outputs) if err != nil { return fmt.Errorf("failed to group outputs by property name: %w", err) @@ -108,8 +109,20 @@ func (c *CloudformationProvisioner) updatePostgresOutputs(ctx context.Context, t return fmt.Errorf("failed to get username and password from secret ARN: %w", err) } - to.ReadDsn = endpointToDSN(byName[PropertyPsqlReadEndpoint].OutputValue, resourceID, 5432, username, password) - to.WriteDsn = endpointToDSN(byName[PropertyPsqlWriteEndpoint].OutputValue, resourceID, 5432, username, password) + to.WriteConnector = &schemapb.DatabaseConnector{ + Value: &schemapb.DatabaseConnector_DsnDatabaseConnector{ + DsnDatabaseConnector: &schemapb.DSNDatabaseConnector{ + Dsn: endpointToDSN(byName[PropertyMySQLWriteEndpoint].OutputValue, resourceID, 5432, username, password), + }, + }, + } + to.ReadConnector = &schemapb.DatabaseConnector{ + Value: &schemapb.DatabaseConnector_DsnDatabaseConnector{ + DsnDatabaseConnector: &schemapb.DSNDatabaseConnector{ + Dsn: endpointToDSN(byName[PropertyMySQLReadEndpoint].OutputValue, resourceID, 5432, username, password), + }, + }, + } return nil } diff --git a/frontend/cli/main.go b/frontend/cli/main.go index 01c221eceb..11268f41c8 100644 --- a/frontend/cli/main.go +++ b/frontend/cli/main.go @@ -19,7 +19,6 @@ import ( "github.com/TBD54566975/ftl" "github.com/TBD54566975/ftl/backend/controller/admin" - "github.com/TBD54566975/ftl/backend/controller/dsn" "github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/ftlv1connect" "github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1beta1/provisioner/provisionerconnect" "github.com/TBD54566975/ftl/internal" @@ -27,6 +26,7 @@ import ( "github.com/TBD54566975/ftl/internal/configuration" "github.com/TBD54566975/ftl/internal/configuration/manager" "github.com/TBD54566975/ftl/internal/configuration/providers" + "github.com/TBD54566975/ftl/internal/dsn" "github.com/TBD54566975/ftl/internal/log" "github.com/TBD54566975/ftl/internal/profiles" "github.com/TBD54566975/ftl/internal/projectconfig" diff --git a/frontend/console/src/protos/xyz/block/ftl/v1/schema/schema_pb.ts b/frontend/console/src/protos/xyz/block/ftl/v1/schema/schema_pb.ts index 3de5c26be6..988bf2f616 100644 --- a/frontend/console/src/protos/xyz/block/ftl/v1/schema/schema_pb.ts +++ b/frontend/console/src/protos/xyz/block/ftl/v1/schema/schema_pb.ts @@ -232,9 +232,9 @@ export class Config extends Message { } /** - * @generated from message xyz.block.ftl.v1.schema.DSNDatabaseRuntime + * @generated from message xyz.block.ftl.v1.schema.DSNDatabaseConnector */ -export class DSNDatabaseRuntime extends Message { +export class DSNDatabaseConnector extends Message { /** * @generated from field: optional xyz.block.ftl.v1.schema.Position pos = 1; */ @@ -245,32 +245,32 @@ export class DSNDatabaseRuntime extends Message { */ dsn = ""; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "xyz.block.ftl.v1.schema.DSNDatabaseRuntime"; + static readonly typeName = "xyz.block.ftl.v1.schema.DSNDatabaseConnector"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "pos", kind: "message", T: Position, opt: true }, { no: 2, name: "dsn", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): DSNDatabaseRuntime { - return new DSNDatabaseRuntime().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): DSNDatabaseConnector { + return new DSNDatabaseConnector().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): DSNDatabaseRuntime { - return new DSNDatabaseRuntime().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): DSNDatabaseConnector { + return new DSNDatabaseConnector().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): DSNDatabaseRuntime { - return new DSNDatabaseRuntime().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): DSNDatabaseConnector { + return new DSNDatabaseConnector().fromJsonString(jsonString, options); } - static equals(a: DSNDatabaseRuntime | PlainMessage | undefined, b: DSNDatabaseRuntime | PlainMessage | undefined): boolean { - return proto3.util.equals(DSNDatabaseRuntime, a, b); + static equals(a: DSNDatabaseConnector | PlainMessage | undefined, b: DSNDatabaseConnector | PlainMessage | undefined): boolean { + return proto3.util.equals(DSNDatabaseConnector, a, b); } } @@ -415,20 +415,62 @@ export class Database extends Message { } /** - * @generated from message xyz.block.ftl.v1.schema.DatabaseRuntime + * @generated from message xyz.block.ftl.v1.schema.DatabaseConnector */ -export class DatabaseRuntime extends Message { +export class DatabaseConnector extends Message { /** - * @generated from oneof xyz.block.ftl.v1.schema.DatabaseRuntime.value + * @generated from oneof xyz.block.ftl.v1.schema.DatabaseConnector.value */ value: { /** - * @generated from field: xyz.block.ftl.v1.schema.DSNDatabaseRuntime dsn_database_runtime = 1; + * @generated from field: xyz.block.ftl.v1.schema.DSNDatabaseConnector dsn_database_connector = 1; */ - value: DSNDatabaseRuntime; - case: "dsnDatabaseRuntime"; + value: DSNDatabaseConnector; + case: "dsnDatabaseConnector"; } | { case: undefined; value?: undefined } = { case: undefined }; + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "xyz.block.ftl.v1.schema.DatabaseConnector"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "dsn_database_connector", kind: "message", T: DSNDatabaseConnector, oneof: "value" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): DatabaseConnector { + return new DatabaseConnector().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): DatabaseConnector { + return new DatabaseConnector().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): DatabaseConnector { + return new DatabaseConnector().fromJsonString(jsonString, options); + } + + static equals(a: DatabaseConnector | PlainMessage | undefined, b: DatabaseConnector | PlainMessage | undefined): boolean { + return proto3.util.equals(DatabaseConnector, a, b); + } +} + +/** + * @generated from message xyz.block.ftl.v1.schema.DatabaseRuntime + */ +export class DatabaseRuntime extends Message { + /** + * @generated from field: xyz.block.ftl.v1.schema.DatabaseConnector read_connector = 1; + */ + readConnector?: DatabaseConnector; + + /** + * @generated from field: xyz.block.ftl.v1.schema.DatabaseConnector write_connector = 2; + */ + writeConnector?: DatabaseConnector; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -437,7 +479,8 @@ export class DatabaseRuntime extends Message { static readonly runtime: typeof proto3 = proto3; static readonly typeName = "xyz.block.ftl.v1.schema.DatabaseRuntime"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "dsn_database_runtime", kind: "message", T: DSNDatabaseRuntime, oneof: "value" }, + { no: 1, name: "read_connector", kind: "message", T: DatabaseConnector }, + { no: 2, name: "write_connector", kind: "message", T: DatabaseConnector }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): DatabaseRuntime { diff --git a/frontend/console/src/protos/xyz/block/ftl/v1beta1/provisioner/resource_pb.ts b/frontend/console/src/protos/xyz/block/ftl/v1beta1/provisioner/resource_pb.ts index 161904ed40..a400341f17 100644 --- a/frontend/console/src/protos/xyz/block/ftl/v1beta1/provisioner/resource_pb.ts +++ b/frontend/console/src/protos/xyz/block/ftl/v1beta1/provisioner/resource_pb.ts @@ -5,7 +5,7 @@ import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; import { Message, proto3, Struct } from "@bufbuild/protobuf"; -import { Module, Ref } from "../../v1/schema/schema_pb.js"; +import { DatabaseRuntime, Module, Ref } from "../../v1/schema/schema_pb.js"; import { DeploymentArtefact } from "../../v1/controller_pb.js"; /** @@ -101,9 +101,9 @@ export class Resource extends Message { */ export class PostgresResource extends Message { /** - * @generated from field: xyz.block.ftl.v1beta1.provisioner.PostgresResource.PostgresResourceOutput output = 1; + * @generated from field: xyz.block.ftl.v1.schema.DatabaseRuntime output = 1; */ - output?: PostgresResource_PostgresResourceOutput; + output?: DatabaseRuntime; constructor(data?: PartialMessage) { super(); @@ -113,7 +113,7 @@ export class PostgresResource extends Message { static readonly runtime: typeof proto3 = proto3; static readonly typeName = "xyz.block.ftl.v1beta1.provisioner.PostgresResource"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "output", kind: "message", T: PostgresResource_PostgresResourceOutput }, + { no: 1, name: "output", kind: "message", T: DatabaseRuntime }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): PostgresResource { @@ -133,57 +133,14 @@ export class PostgresResource extends Message { } } -/** - * @generated from message xyz.block.ftl.v1beta1.provisioner.PostgresResource.PostgresResourceOutput - */ -export class PostgresResource_PostgresResourceOutput extends Message { - /** - * @generated from field: string read_dsn = 1; - */ - readDsn = ""; - - /** - * @generated from field: string write_dsn = 2; - */ - writeDsn = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "xyz.block.ftl.v1beta1.provisioner.PostgresResource.PostgresResourceOutput"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "read_dsn", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "write_dsn", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): PostgresResource_PostgresResourceOutput { - return new PostgresResource_PostgresResourceOutput().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): PostgresResource_PostgresResourceOutput { - return new PostgresResource_PostgresResourceOutput().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): PostgresResource_PostgresResourceOutput { - return new PostgresResource_PostgresResourceOutput().fromJsonString(jsonString, options); - } - - static equals(a: PostgresResource_PostgresResourceOutput | PlainMessage | undefined, b: PostgresResource_PostgresResourceOutput | PlainMessage | undefined): boolean { - return proto3.util.equals(PostgresResource_PostgresResourceOutput, a, b); - } -} - /** * @generated from message xyz.block.ftl.v1beta1.provisioner.MysqlResource */ export class MysqlResource extends Message { /** - * @generated from field: xyz.block.ftl.v1beta1.provisioner.MysqlResource.MysqlResourceOutput output = 1; + * @generated from field: xyz.block.ftl.v1.schema.DatabaseRuntime output = 1; */ - output?: MysqlResource_MysqlResourceOutput; + output?: DatabaseRuntime; constructor(data?: PartialMessage) { super(); @@ -193,7 +150,7 @@ export class MysqlResource extends Message { static readonly runtime: typeof proto3 = proto3; static readonly typeName = "xyz.block.ftl.v1beta1.provisioner.MysqlResource"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "output", kind: "message", T: MysqlResource_MysqlResourceOutput }, + { no: 1, name: "output", kind: "message", T: DatabaseRuntime }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): MysqlResource { @@ -213,49 +170,6 @@ export class MysqlResource extends Message { } } -/** - * @generated from message xyz.block.ftl.v1beta1.provisioner.MysqlResource.MysqlResourceOutput - */ -export class MysqlResource_MysqlResourceOutput extends Message { - /** - * @generated from field: string read_dsn = 1; - */ - readDsn = ""; - - /** - * @generated from field: string write_dsn = 2; - */ - writeDsn = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "xyz.block.ftl.v1beta1.provisioner.MysqlResource.MysqlResourceOutput"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "read_dsn", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "write_dsn", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): MysqlResource_MysqlResourceOutput { - return new MysqlResource_MysqlResourceOutput().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): MysqlResource_MysqlResourceOutput { - return new MysqlResource_MysqlResourceOutput().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): MysqlResource_MysqlResourceOutput { - return new MysqlResource_MysqlResourceOutput().fromJsonString(jsonString, options); - } - - static equals(a: MysqlResource_MysqlResourceOutput | PlainMessage | undefined, b: MysqlResource_MysqlResourceOutput | PlainMessage | undefined): boolean { - return proto3.util.equals(MysqlResource_MysqlResourceOutput, a, b); - } -} - /** * @generated from message xyz.block.ftl.v1beta1.provisioner.SqlMigrationResource */ diff --git a/internal/dev/db.go b/internal/dev/db.go index 5755c3bca5..ec642739cb 100644 --- a/internal/dev/db.go +++ b/internal/dev/db.go @@ -8,9 +8,9 @@ import ( "github.com/alecthomas/types/optional" - "github.com/TBD54566975/ftl/backend/controller/dsn" "github.com/TBD54566975/ftl/backend/controller/sql/databasetesting" "github.com/TBD54566975/ftl/internal/container" + "github.com/TBD54566975/ftl/internal/dsn" "github.com/TBD54566975/ftl/internal/log" ) diff --git a/backend/controller/dsn/dsn.go b/internal/dsn/dsn.go similarity index 60% rename from backend/controller/dsn/dsn.go rename to internal/dsn/dsn.go index 11e09907eb..4047a574a1 100644 --- a/backend/controller/dsn/dsn.go +++ b/internal/dsn/dsn.go @@ -1,6 +1,11 @@ package dsn -import "fmt" +import ( + "context" + "fmt" + + "github.com/TBD54566975/ftl/internal/schema" +) type dsnOptions struct { host string @@ -38,3 +43,19 @@ func MySQLDSN(dbName string, options ...Option) string { } return fmt.Sprintf("root:secret@tcp(%s:%d)/%s?allowNativePasswords=True", opts.host, opts.port, dbName) } + +func ResolvePostgresDSN(ctx context.Context, connector schema.DatabaseConnector) (string, error) { + dsnRuntime, ok := connector.(*schema.DSNDatabaseConnector) + if !ok { + return "", fmt.Errorf("unexpected database connector type: %T", connector) + } + return dsnRuntime.DSN, nil +} + +func ResolveMySQLDSN(ctx context.Context, connector schema.DatabaseConnector) (string, error) { + dsnRuntime, ok := connector.(*schema.DSNDatabaseConnector) + if !ok { + return "", fmt.Errorf("unexpected database connector type: %T", connector) + } + return dsnRuntime.DSN, nil +} diff --git a/internal/integration/actions.go b/internal/integration/actions.go index c36a5d9aa3..3f97b6a7cd 100644 --- a/internal/integration/actions.go +++ b/internal/integration/actions.go @@ -28,9 +28,9 @@ import ( "github.com/block/scaffolder" - "github.com/TBD54566975/ftl/backend/controller/dsn" ftlv1 "github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1" schemapb "github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/schema" + "github.com/TBD54566975/ftl/internal/dsn" ftlexec "github.com/TBD54566975/ftl/internal/exec" "github.com/TBD54566975/ftl/internal/log" ) diff --git a/internal/schema/data.go b/internal/schema/data.go index 3cdc776734..6b65ca7e29 100644 --- a/internal/schema/data.go +++ b/internal/schema/data.go @@ -126,7 +126,8 @@ func (d *Data) Monomorphise(ref *Ref) (*Data, error) { *Schema, *String, *Time, Type, *TypeParameter, *Unit, *Verb, *Enum, *EnumVariant, Value, *IntValue, *StringValue, *TypeValue, Symbol, Named, *TypeAlias, *Topic, *Subscription, *MetadataSubscriber, *MetadataTypeMap, - *MetadataEncoding, *MetadataPublisher, *MetadataSQLMigration, *DSNDatabaseRuntime, DatabaseRuntime: + *MetadataEncoding, *MetadataPublisher, *MetadataSQLMigration, *DSNDatabaseConnector, *DatabaseRuntime, + DatabaseConnector: } return next() }) diff --git a/internal/schema/database.go b/internal/schema/database.go index ccf09b222b..ef848abe10 100644 --- a/internal/schema/database.go +++ b/internal/schema/database.go @@ -15,8 +15,8 @@ const MySQLDatabaseType = "mysql" //protobuf:3 type Database struct { - Pos Position `parser:"" protobuf:"1,optional"` - Runtime DatabaseRuntime `parser:"" protobuf:"31634,optional"` + Pos Position `parser:"" protobuf:"1,optional"` + Runtime *DatabaseRuntime `parser:"" protobuf:"31634,optional"` Comments []string `parser:"@Comment*" protobuf:"2"` Type string `parser:"'database' @('postgres'|'mysql')" protobuf:"4"` @@ -80,45 +80,82 @@ func DatabaseFromProto(s *schemapb.Database) *Database { } } -type DatabaseRuntime interface { +type DatabaseRuntime struct { + ReadConnector DatabaseConnector `parser:"" protobuf:"1"` + WriteConnector DatabaseConnector `parser:"" protobuf:"2"` +} + +var _ Symbol = (*DatabaseRuntime)(nil) + +func (d *DatabaseRuntime) Position() Position { return d.ReadConnector.Position() } +func (d *DatabaseRuntime) schemaSymbol() {} +func (d *DatabaseRuntime) String() string { + return fmt.Sprintf("read: %s, write: %s", d.ReadConnector, d.WriteConnector) +} +func (d *DatabaseRuntime) ToProto() protoreflect.ProtoMessage { + rc, ok := d.ReadConnector.ToProto().(*schemapb.DatabaseConnector) + if !ok { + panic(fmt.Sprintf("unknown database connector type: %T", d.ReadConnector)) + } + wc, ok := d.WriteConnector.ToProto().(*schemapb.DatabaseConnector) + if !ok { + panic(fmt.Sprintf("unknown database connector type: %T", d.WriteConnector)) + } + + return &schemapb.DatabaseRuntime{ + ReadConnector: rc, + WriteConnector: wc, + } +} +func (d *DatabaseRuntime) schemaChildren() []Node { return []Node{d.ReadConnector, d.WriteConnector} } + +type DatabaseConnector interface { Symbol - databaseRuntime() + + databaseConnector() } //protobuf:1 -type DSNDatabaseRuntime struct { +type DSNDatabaseConnector struct { Pos Position `parser:"" protobuf:"1,optional"` DSN string `parser:"" protobuf:"2"` } -var _ DatabaseRuntime = (*DSNDatabaseRuntime)(nil) +var _ DatabaseConnector = (*DSNDatabaseConnector)(nil) -func (d *DSNDatabaseRuntime) Position() Position { return d.Pos } -func (d *DSNDatabaseRuntime) databaseRuntime() {} -func (d *DSNDatabaseRuntime) String() string { return d.DSN } -func (d *DSNDatabaseRuntime) ToProto() protoreflect.ProtoMessage { +func (d *DSNDatabaseConnector) Position() Position { return d.Pos } +func (d *DSNDatabaseConnector) databaseConnector() {} +func (d *DSNDatabaseConnector) String() string { return d.DSN } +func (d *DSNDatabaseConnector) ToProto() protoreflect.ProtoMessage { if d == nil { return nil } - return &schemapb.DatabaseRuntime{ - Value: &schemapb.DatabaseRuntime_DsnDatabaseRuntime{ - DsnDatabaseRuntime: &schemapb.DSNDatabaseRuntime{Dsn: d.DSN}, + return &schemapb.DatabaseConnector{ + Value: &schemapb.DatabaseConnector_DsnDatabaseConnector{ + DsnDatabaseConnector: &schemapb.DSNDatabaseConnector{Dsn: d.DSN}, }, } } -func (d *DSNDatabaseRuntime) schemaChildren() []Node { return nil } -func (d *DSNDatabaseRuntime) schemaSymbol() {} +func (d *DSNDatabaseConnector) schemaChildren() []Node { return nil } +func (d *DSNDatabaseConnector) schemaSymbol() {} -func DatabaseRuntimeFromProto(s *schemapb.DatabaseRuntime) DatabaseRuntime { +func DatabaseRuntimeFromProto(s *schemapb.DatabaseRuntime) *DatabaseRuntime { if s == nil { return nil } + return &DatabaseRuntime{ + ReadConnector: DatabaseConnectorFromProto(s.ReadConnector), + WriteConnector: DatabaseConnectorFromProto(s.WriteConnector), + } +} + +func DatabaseConnectorFromProto(s *schemapb.DatabaseConnector) DatabaseConnector { switch s := s.Value.(type) { - case *schemapb.DatabaseRuntime_DsnDatabaseRuntime: - return &DSNDatabaseRuntime{DSN: s.DsnDatabaseRuntime.Dsn} + case *schemapb.DatabaseConnector_DsnDatabaseConnector: + return &DSNDatabaseConnector{DSN: s.DsnDatabaseConnector.Dsn} default: - panic(fmt.Sprintf("unknown database runtime type: %T", s)) + panic(fmt.Sprintf("unknown database connector type: %T", s)) } } diff --git a/internal/schema/jsonschema.go b/internal/schema/jsonschema.go index 8a1b6a2144..a3051f6dc3 100644 --- a/internal/schema/jsonschema.go +++ b/internal/schema/jsonschema.go @@ -194,7 +194,8 @@ func nodeToJSSchema(node Node, refs map[RefKey]*Ref) *jsonschema.Schema { *Schema, Type, *Database, *Verb, *EnumVariant, *MetadataCronJob, Value, *StringValue, *IntValue, *TypeValue, *Config, *Secret, Symbol, Named, *MetadataRetry, *Topic, *Subscription, *MetadataSubscriber, *MetadataTypeMap, - *MetadataEncoding, *MetadataPublisher, *MetadataSQLMigration, *DSNDatabaseRuntime, DatabaseRuntime: + *MetadataEncoding, *MetadataPublisher, *MetadataSQLMigration, *DSNDatabaseConnector, *DatabaseRuntime, + DatabaseConnector: panic(fmt.Sprintf("unsupported node type %T", node)) default: diff --git a/internal/schema/redact_test.go b/internal/schema/redact_test.go index 12ca0ecbea..904369cffa 100644 --- a/internal/schema/redact_test.go +++ b/internal/schema/redact_test.go @@ -11,8 +11,9 @@ func TestRedact(t *testing.T) { module := &Module{ Decls: []Decl{ &Database{ - Runtime: &DSNDatabaseRuntime{ - DSN: "sensitive", + Runtime: &DatabaseRuntime{ + ReadConnector: &DSNDatabaseConnector{DSN: "sensitive"}, + WriteConnector: &DSNDatabaseConnector{DSN: "sensitive"}, }, }, }, diff --git a/internal/schema/validate.go b/internal/schema/validate.go index c23bfb6fc9..7a66a0889e 100644 --- a/internal/schema/validate.go +++ b/internal/schema/validate.go @@ -174,7 +174,7 @@ func ValidateModuleInSchema(schema *Schema, m optional.Option[*Module]) (*Schema validateRetries(module, md, optional.Some(n.Request), scopes, optional.Some(schema)) case *MetadataCronJob, *MetadataCalls, *MetadataConfig, *MetadataDatabases, *MetadataAlias, *MetadataTypeMap, - *MetadataEncoding, *MetadataSecrets, *MetadataPublisher, *MetadataSQLMigration: + *MetadataEncoding, *MetadataSecrets, *MetadataPublisher, *MetadataSQLMigration, DatabaseConnector: } } case *Database: @@ -217,7 +217,7 @@ func ValidateModuleInSchema(schema *Schema, m optional.Option[*Module]) (*Schema *String, *Time, Type, *Unit, *Any, *TypeParameter, *EnumVariant, *MetadataRetry, Value, *IntValue, *StringValue, *TypeValue, *Config, *Secret, Symbol, Named, *MetadataSubscriber, *Subscription, *Topic, *MetadataTypeMap, *MetadataEncoding, *MetadataPublisher, - *MetadataSQLMigration, *DSNDatabaseRuntime, DatabaseRuntime: + *MetadataSQLMigration, *DSNDatabaseConnector, *DatabaseRuntime, DatabaseConnector: } return next() }) @@ -367,7 +367,7 @@ func ValidateModule(module *Module) error { *MetadataSecrets, IngressPathComponent, *IngressPathLiteral, *IngressPathParameter, *Optional, *Unit, *Any, *TypeParameter, *Enum, *EnumVariant, *IntValue, *StringValue, *TypeValue, *Config, *Secret, *MetadataSubscriber, *MetadataTypeMap, *MetadataEncoding, *MetadataPublisher, - *MetadataSQLMigration, *DSNDatabaseRuntime, DatabaseRuntime: + *MetadataSQLMigration, *DSNDatabaseConnector, *DatabaseRuntime, DatabaseConnector: case Named, Symbol, Type, Metadata, Value, Decl: // Union types. } diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.py b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.py index 456cca210e..cfcfaeb3a7 100644 --- a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.py +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.py @@ -25,7 +25,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$xyz/block/ftl/v1/schema/schema.proto\x12\x17xyz.block.ftl.v1.schema\x1a\x1fgoogle/protobuf/timestamp.proto\"G\n\x03\x41ny\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\x82\x01\n\x05\x41rray\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x37\n\x07\x65lement\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x07\x65lementB\x06\n\x04_pos\"H\n\x04\x42ool\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"I\n\x05\x42ytes\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\xad\x01\n\x06\x43onfig\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x31\n\x04type\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x04typeB\x06\n\x04_pos\"h\n\x12\x44SNDatabaseRuntime\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x10\n\x03\x64sn\x18\x02 \x01(\tR\x03\x64snB\x06\n\x04_pos\"\xd8\x02\n\x04\x44\x61ta\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12O\n\x0ftype_parameters\x18\x05 \x03(\x0b\x32&.xyz.block.ftl.v1.schema.TypeParameterR\x0etypeParameters\x12\x36\n\x06\x66ields\x18\x06 \x03(\x0b\x32\x1e.xyz.block.ftl.v1.schema.FieldR\x06\x66ields\x12=\n\x08metadata\x18\x07 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataR\x08metadataB\x06\n\x04_pos\"\xa6\x02\n\x08\x44\x61tabase\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12I\n\x07runtime\x18\x92\xf7\x01 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.DatabaseRuntimeH\x01R\x07runtime\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04type\x18\x04 \x01(\tR\x04type\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12=\n\x08metadata\x18\x05 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataR\x08metadataB\x06\n\x04_posB\n\n\x08_runtime\"{\n\x0f\x44\x61tabaseRuntime\x12_\n\x14\x64sn_database_runtime\x18\x01 \x01(\x0b\x32+.xyz.block.ftl.v1.schema.DSNDatabaseRuntimeH\x00R\x12\x64snDatabaseRuntimeB\x07\n\x05value\"\xaf\x04\n\x04\x44\x65\x63l\x12\x39\n\x06\x63onfig\x18\x06 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ConfigH\x00R\x06\x63onfig\x12\x33\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.DataH\x00R\x04\x64\x61ta\x12?\n\x08\x64\x61tabase\x18\x03 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.DatabaseH\x00R\x08\x64\x61tabase\x12\x33\n\x04\x65num\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.EnumH\x00R\x04\x65num\x12\x39\n\x06secret\x18\x07 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.SecretH\x00R\x06secret\x12K\n\x0csubscription\x18\n \x01(\x0b\x32%.xyz.block.ftl.v1.schema.SubscriptionH\x00R\x0csubscription\x12\x36\n\x05topic\x18\t \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.TopicH\x00R\x05topic\x12\x43\n\ntype_alias\x18\x05 \x01(\x0b\x32\".xyz.block.ftl.v1.schema.TypeAliasH\x00R\ttypeAlias\x12\x33\n\x04verb\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.VerbH\x00R\x04verbB\x07\n\x05value\"\x93\x02\n\x04\x45num\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x36\n\x04type\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeH\x01R\x04type\x88\x01\x01\x12@\n\x08variants\x18\x06 \x03(\x0b\x32$.xyz.block.ftl.v1.schema.EnumVariantR\x08variantsB\x06\n\x04_posB\x07\n\x05_type\"\xb5\x01\n\x0b\x45numVariant\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x34\n\x05value\x18\x04 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.ValueR\x05valueB\x06\n\x04_pos\"\xeb\x01\n\x05\x46ield\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x03 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x31\n\x04type\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x04type\x12=\n\x08metadata\x18\x05 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataR\x08metadataB\x06\n\x04_pos\"I\n\x05\x46loat\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\xe7\x01\n\x14IngressPathComponent\x12_\n\x14ingress_path_literal\x18\x01 \x01(\x0b\x32+.xyz.block.ftl.v1.schema.IngressPathLiteralH\x00R\x12ingressPathLiteral\x12\x65\n\x16ingress_path_parameter\x18\x02 \x01(\x0b\x32-.xyz.block.ftl.v1.schema.IngressPathParameterH\x00R\x14ingressPathParameterB\x07\n\x05value\"j\n\x12IngressPathLiteral\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04text\x18\x02 \x01(\tR\x04textB\x06\n\x04_pos\"l\n\x14IngressPathParameter\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04name\x18\x02 \x01(\tR\x04nameB\x06\n\x04_pos\"G\n\x03Int\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"b\n\x08IntValue\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x14\n\x05value\x18\x02 \x01(\x03R\x05valueB\x06\n\x04_pos\"\xad\x01\n\x03Map\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12/\n\x03key\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x03key\x12\x33\n\x05value\x18\x03 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x05valueB\x06\n\x04_pos\"\xb6\x07\n\x08Metadata\x12>\n\x05\x61lias\x18\x05 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.MetadataAliasH\x00R\x05\x61lias\x12>\n\x05\x63\x61lls\x18\x01 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.MetadataCallsH\x00R\x05\x63\x61lls\x12\x41\n\x06\x63onfig\x18\n \x01(\x0b\x32\'.xyz.block.ftl.v1.schema.MetadataConfigH\x00R\x06\x63onfig\x12\x45\n\x08\x63ron_job\x18\x03 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataCronJobH\x00R\x07\x63ronJob\x12J\n\tdatabases\x18\x04 \x01(\x0b\x32*.xyz.block.ftl.v1.schema.MetadataDatabasesH\x00R\tdatabases\x12G\n\x08\x65ncoding\x18\t \x01(\x0b\x32).xyz.block.ftl.v1.schema.MetadataEncodingH\x00R\x08\x65ncoding\x12\x44\n\x07ingress\x18\x02 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataIngressH\x00R\x07ingress\x12J\n\tpublisher\x18\x0c \x01(\x0b\x32*.xyz.block.ftl.v1.schema.MetadataPublisherH\x00R\tpublisher\x12>\n\x05retry\x18\x06 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.MetadataRetryH\x00R\x05retry\x12T\n\rsql_migration\x18\r \x01(\x0b\x32-.xyz.block.ftl.v1.schema.MetadataSQLMigrationH\x00R\x0csqlMigration\x12\x44\n\x07secrets\x18\x0b \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataSecretsH\x00R\x07secrets\x12M\n\nsubscriber\x18\x07 \x01(\x0b\x32+.xyz.block.ftl.v1.schema.MetadataSubscriberH\x00R\nsubscriber\x12\x45\n\x08type_map\x18\x08 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataTypeMapH\x00R\x07typeMapB\x07\n\x05value\"\x9f\x01\n\rMetadataAlias\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x36\n\x04kind\x18\x02 \x01(\x0e\x32\".xyz.block.ftl.v1.schema.AliasKindR\x04kind\x12\x14\n\x05\x61lias\x18\x03 \x01(\tR\x05\x61liasB\x06\n\x04_pos\"\x85\x01\n\rMetadataCalls\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x32\n\x05\x63\x61lls\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x05\x63\x61llsB\x06\n\x04_pos\"\x88\x01\n\x0eMetadataConfig\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x34\n\x06\x63onfig\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x06\x63onfigB\x06\n\x04_pos\"g\n\x0fMetadataCronJob\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04\x63ron\x18\x02 \x01(\tR\x04\x63ronB\x06\n\x04_pos\"\x89\x01\n\x11MetadataDatabases\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x32\n\x05\x63\x61lls\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x05\x63\x61llsB\x06\n\x04_pos\"\x82\x01\n\x10MetadataEncoding\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04type\x18\x02 \x01(\tR\x04type\x12\x18\n\x07lenient\x18\x03 \x01(\x08R\x07lenientB\x06\n\x04_pos\"\xc2\x01\n\x0fMetadataIngress\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04type\x18\x02 \x01(\tR\x04type\x12\x16\n\x06method\x18\x03 \x01(\tR\x06method\x12\x41\n\x04path\x18\x04 \x03(\x0b\x32-.xyz.block.ftl.v1.schema.IngressPathComponentR\x04pathB\x06\n\x04_pos\"\x8b\x01\n\x11MetadataPublisher\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x34\n\x06topics\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x06topicsB\x06\n\x04_pos\"\xfb\x01\n\rMetadataRetry\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x19\n\x05\x63ount\x18\x02 \x01(\x03H\x01R\x05\x63ount\x88\x01\x01\x12\x1f\n\x0bmin_backoff\x18\x03 \x01(\tR\nminBackoff\x12\x1f\n\x0bmax_backoff\x18\x04 \x01(\tR\nmaxBackoff\x12\x37\n\x05\x63\x61tch\x18\x05 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefH\x02R\x05\x63\x61tch\x88\x01\x01\x42\x06\n\x04_posB\x08\n\x06_countB\x08\n\x06_catch\"p\n\x14MetadataSQLMigration\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x16\n\x06\x64igest\x18\x02 \x01(\tR\x06\x64igestB\x06\n\x04_pos\"\x8b\x01\n\x0fMetadataSecrets\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x36\n\x07secrets\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x07secretsB\x06\n\x04_pos\"j\n\x12MetadataSubscriber\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04name\x18\x02 \x01(\tR\x04nameB\x06\n\x04_pos\"\x8e\x01\n\x0fMetadataTypeMap\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x18\n\x07runtime\x18\x02 \x01(\tR\x07runtime\x12\x1f\n\x0bnative_name\x18\x03 \x01(\tR\nnativeNameB\x06\n\x04_pos\"\x9e\x02\n\x06Module\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x18\n\x07\x62uiltin\x18\x03 \x01(\x08R\x07\x62uiltin\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x33\n\x05\x64\x65\x63ls\x18\x05 \x03(\x0b\x32\x1d.xyz.block.ftl.v1.schema.DeclR\x05\x64\x65\x63ls\x12G\n\x07runtime\x18\x92\xf7\x01 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.ModuleRuntimeH\x01R\x07runtime\x88\x01\x01\x42\x06\n\x04_posB\n\n\x08_runtime\"\xee\x01\n\rModuleRuntime\x12;\n\x0b\x63reate_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ncreateTime\x12\x1a\n\x08language\x18\x02 \x01(\tR\x08language\x12!\n\x0cmin_replicas\x18\x03 \x01(\x05R\x0bminReplicas\x12\x13\n\x02os\x18\x04 \x01(\tH\x00R\x02os\x88\x01\x01\x12\x17\n\x04\x61rch\x18\x05 \x01(\tH\x01R\x04\x61rch\x88\x01\x01\x12\x19\n\x05image\x18\x06 \x01(\tH\x02R\x05image\x88\x01\x01\x42\x05\n\x03_osB\x07\n\x05_archB\x08\n\x06_image\"\x8d\x01\n\x08Optional\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x36\n\x04type\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeH\x01R\x04type\x88\x01\x01\x42\x06\n\x04_posB\x07\n\x05_type\"R\n\x08Position\x12\x1a\n\x08\x66ilename\x18\x01 \x01(\tR\x08\x66ilename\x12\x12\n\x04line\x18\x02 \x01(\x03R\x04line\x12\x16\n\x06\x63olumn\x18\x03 \x01(\x03R\x06\x63olumn\"\xbb\x01\n\x03Ref\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x16\n\x06module\x18\x03 \x01(\tR\x06module\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x46\n\x0ftype_parameters\x18\x04 \x03(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x0etypeParametersB\x06\n\x04_pos\"\x85\x01\n\x06Schema\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x39\n\x07modules\x18\x02 \x03(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ModuleR\x07modulesB\x06\n\x04_pos\"\xad\x01\n\x06Secret\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x31\n\x04type\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x04typeB\x06\n\x04_pos\"J\n\x06String\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"e\n\x0bStringValue\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x14\n\x05value\x18\x02 \x01(\tR\x05valueB\x06\n\x04_pos\"\x8f\x02\n\x0cSubscription\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12M\n\x07runtime\x18\x92\xf7\x01 \x01(\x0b\x32,.xyz.block.ftl.v1.schema.SubscriptionRuntimeH\x01R\x07runtime\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x32\n\x05topic\x18\x04 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x05topicB\x06\n\x04_posB\n\n\x08_runtime\"\x81\x01\n\x13SubscriptionRuntime\x12#\n\rkafka_brokers\x18\x01 \x03(\tR\x0ckafkaBrokers\x12\x19\n\x08topic_id\x18\x02 \x01(\tR\x07topicId\x12*\n\x11\x63onsumer_group_id\x18\x03 \x01(\tR\x0f\x63onsumerGroupId\"H\n\x04Time\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\x9a\x02\n\x05Topic\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x46\n\x07runtime\x18\x92\xf7\x01 \x01(\x0b\x32%.xyz.block.ftl.v1.schema.TopicRuntimeH\x01R\x07runtime\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x33\n\x05\x65vent\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x05\x65ventB\x06\n\x04_posB\n\n\x08_runtime\"N\n\x0cTopicRuntime\x12#\n\rkafka_brokers\x18\x01 \x03(\tR\x0ckafkaBrokers\x12\x19\n\x08topic_id\x18\x02 \x01(\tR\x07topicId\"\x9a\x05\n\x04Type\x12\x30\n\x03\x61ny\x18\t \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.AnyH\x00R\x03\x61ny\x12\x36\n\x05\x61rray\x18\x07 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.ArrayH\x00R\x05\x61rray\x12\x33\n\x04\x62ool\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.BoolH\x00R\x04\x62ool\x12\x36\n\x05\x62ytes\x18\x04 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.BytesH\x00R\x05\x62ytes\x12\x36\n\x05\x66loat\x18\x02 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.FloatH\x00R\x05\x66loat\x12\x30\n\x03int\x18\x01 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.IntH\x00R\x03int\x12\x30\n\x03map\x18\x08 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.MapH\x00R\x03map\x12?\n\x08optional\x18\x0c \x01(\x0b\x32!.xyz.block.ftl.v1.schema.OptionalH\x00R\x08optional\x12\x30\n\x03ref\x18\x0b \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefH\x00R\x03ref\x12\x39\n\x06string\x18\x03 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.StringH\x00R\x06string\x12\x33\n\x04time\x18\x06 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TimeH\x00R\x04time\x12\x33\n\x04unit\x18\n \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.UnitH\x00R\x04unitB\x07\n\x05value\"\x87\x02\n\tTypeAlias\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x31\n\x04type\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x04type\x12=\n\x08metadata\x18\x06 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataR\x08metadataB\x06\n\x04_pos\"e\n\rTypeParameter\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04name\x18\x02 \x01(\tR\x04nameB\x06\n\x04_pos\"\x82\x01\n\tTypeValue\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x33\n\x05value\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x05valueB\x06\n\x04_pos\"H\n\x04Unit\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\xe2\x01\n\x05Value\x12@\n\tint_value\x18\x02 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.IntValueH\x00R\x08intValue\x12I\n\x0cstring_value\x18\x01 \x01(\x0b\x32$.xyz.block.ftl.v1.schema.StringValueH\x00R\x0bstringValue\x12\x43\n\ntype_value\x18\x03 \x01(\x0b\x32\".xyz.block.ftl.v1.schema.TypeValueH\x00R\ttypeValueB\x07\n\x05value\"\x96\x03\n\x04Verb\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x37\n\x07request\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x07request\x12\x39\n\x08response\x18\x06 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x08response\x12=\n\x08metadata\x18\x07 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataR\x08metadata\x12\x45\n\x07runtime\x18\x92\xf7\x01 \x01(\x0b\x32$.xyz.block.ftl.v1.schema.VerbRuntimeH\x01R\x07runtime\x88\x01\x01\x42\x06\n\x04_posB\n\n\x08_runtime\"\x85\x01\n\x0bVerbRuntime\x12;\n\x0b\x63reate_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ncreateTime\x12\x39\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime* \n\tAliasKind\x12\x13\n\x0f\x41LIAS_KIND_JSON\x10\x00\x42NP\x01ZJgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/schema;schemapbb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$xyz/block/ftl/v1/schema/schema.proto\x12\x17xyz.block.ftl.v1.schema\x1a\x1fgoogle/protobuf/timestamp.proto\"G\n\x03\x41ny\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\x82\x01\n\x05\x41rray\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x37\n\x07\x65lement\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x07\x65lementB\x06\n\x04_pos\"H\n\x04\x42ool\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"I\n\x05\x42ytes\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\xad\x01\n\x06\x43onfig\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x31\n\x04type\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x04typeB\x06\n\x04_pos\"j\n\x14\x44SNDatabaseConnector\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x10\n\x03\x64sn\x18\x02 \x01(\tR\x03\x64snB\x06\n\x04_pos\"\xd8\x02\n\x04\x44\x61ta\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12O\n\x0ftype_parameters\x18\x05 \x03(\x0b\x32&.xyz.block.ftl.v1.schema.TypeParameterR\x0etypeParameters\x12\x36\n\x06\x66ields\x18\x06 \x03(\x0b\x32\x1e.xyz.block.ftl.v1.schema.FieldR\x06\x66ields\x12=\n\x08metadata\x18\x07 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataR\x08metadataB\x06\n\x04_pos\"\xa6\x02\n\x08\x44\x61tabase\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12I\n\x07runtime\x18\x92\xf7\x01 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.DatabaseRuntimeH\x01R\x07runtime\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04type\x18\x04 \x01(\tR\x04type\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12=\n\x08metadata\x18\x05 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataR\x08metadataB\x06\n\x04_posB\n\n\x08_runtime\"\x83\x01\n\x11\x44\x61tabaseConnector\x12\x65\n\x16\x64sn_database_connector\x18\x01 \x01(\x0b\x32-.xyz.block.ftl.v1.schema.DSNDatabaseConnectorH\x00R\x14\x64snDatabaseConnectorB\x07\n\x05value\"\xb9\x01\n\x0f\x44\x61tabaseRuntime\x12Q\n\x0eread_connector\x18\x01 \x01(\x0b\x32*.xyz.block.ftl.v1.schema.DatabaseConnectorR\rreadConnector\x12S\n\x0fwrite_connector\x18\x02 \x01(\x0b\x32*.xyz.block.ftl.v1.schema.DatabaseConnectorR\x0ewriteConnector\"\xaf\x04\n\x04\x44\x65\x63l\x12\x39\n\x06\x63onfig\x18\x06 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ConfigH\x00R\x06\x63onfig\x12\x33\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.DataH\x00R\x04\x64\x61ta\x12?\n\x08\x64\x61tabase\x18\x03 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.DatabaseH\x00R\x08\x64\x61tabase\x12\x33\n\x04\x65num\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.EnumH\x00R\x04\x65num\x12\x39\n\x06secret\x18\x07 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.SecretH\x00R\x06secret\x12K\n\x0csubscription\x18\n \x01(\x0b\x32%.xyz.block.ftl.v1.schema.SubscriptionH\x00R\x0csubscription\x12\x36\n\x05topic\x18\t \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.TopicH\x00R\x05topic\x12\x43\n\ntype_alias\x18\x05 \x01(\x0b\x32\".xyz.block.ftl.v1.schema.TypeAliasH\x00R\ttypeAlias\x12\x33\n\x04verb\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.VerbH\x00R\x04verbB\x07\n\x05value\"\x93\x02\n\x04\x45num\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x36\n\x04type\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeH\x01R\x04type\x88\x01\x01\x12@\n\x08variants\x18\x06 \x03(\x0b\x32$.xyz.block.ftl.v1.schema.EnumVariantR\x08variantsB\x06\n\x04_posB\x07\n\x05_type\"\xb5\x01\n\x0b\x45numVariant\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x34\n\x05value\x18\x04 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.ValueR\x05valueB\x06\n\x04_pos\"\xeb\x01\n\x05\x46ield\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x03 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x31\n\x04type\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x04type\x12=\n\x08metadata\x18\x05 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataR\x08metadataB\x06\n\x04_pos\"I\n\x05\x46loat\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\xe7\x01\n\x14IngressPathComponent\x12_\n\x14ingress_path_literal\x18\x01 \x01(\x0b\x32+.xyz.block.ftl.v1.schema.IngressPathLiteralH\x00R\x12ingressPathLiteral\x12\x65\n\x16ingress_path_parameter\x18\x02 \x01(\x0b\x32-.xyz.block.ftl.v1.schema.IngressPathParameterH\x00R\x14ingressPathParameterB\x07\n\x05value\"j\n\x12IngressPathLiteral\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04text\x18\x02 \x01(\tR\x04textB\x06\n\x04_pos\"l\n\x14IngressPathParameter\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04name\x18\x02 \x01(\tR\x04nameB\x06\n\x04_pos\"G\n\x03Int\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"b\n\x08IntValue\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x14\n\x05value\x18\x02 \x01(\x03R\x05valueB\x06\n\x04_pos\"\xad\x01\n\x03Map\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12/\n\x03key\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x03key\x12\x33\n\x05value\x18\x03 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x05valueB\x06\n\x04_pos\"\xb6\x07\n\x08Metadata\x12>\n\x05\x61lias\x18\x05 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.MetadataAliasH\x00R\x05\x61lias\x12>\n\x05\x63\x61lls\x18\x01 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.MetadataCallsH\x00R\x05\x63\x61lls\x12\x41\n\x06\x63onfig\x18\n \x01(\x0b\x32\'.xyz.block.ftl.v1.schema.MetadataConfigH\x00R\x06\x63onfig\x12\x45\n\x08\x63ron_job\x18\x03 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataCronJobH\x00R\x07\x63ronJob\x12J\n\tdatabases\x18\x04 \x01(\x0b\x32*.xyz.block.ftl.v1.schema.MetadataDatabasesH\x00R\tdatabases\x12G\n\x08\x65ncoding\x18\t \x01(\x0b\x32).xyz.block.ftl.v1.schema.MetadataEncodingH\x00R\x08\x65ncoding\x12\x44\n\x07ingress\x18\x02 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataIngressH\x00R\x07ingress\x12J\n\tpublisher\x18\x0c \x01(\x0b\x32*.xyz.block.ftl.v1.schema.MetadataPublisherH\x00R\tpublisher\x12>\n\x05retry\x18\x06 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.MetadataRetryH\x00R\x05retry\x12T\n\rsql_migration\x18\r \x01(\x0b\x32-.xyz.block.ftl.v1.schema.MetadataSQLMigrationH\x00R\x0csqlMigration\x12\x44\n\x07secrets\x18\x0b \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataSecretsH\x00R\x07secrets\x12M\n\nsubscriber\x18\x07 \x01(\x0b\x32+.xyz.block.ftl.v1.schema.MetadataSubscriberH\x00R\nsubscriber\x12\x45\n\x08type_map\x18\x08 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataTypeMapH\x00R\x07typeMapB\x07\n\x05value\"\x9f\x01\n\rMetadataAlias\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x36\n\x04kind\x18\x02 \x01(\x0e\x32\".xyz.block.ftl.v1.schema.AliasKindR\x04kind\x12\x14\n\x05\x61lias\x18\x03 \x01(\tR\x05\x61liasB\x06\n\x04_pos\"\x85\x01\n\rMetadataCalls\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x32\n\x05\x63\x61lls\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x05\x63\x61llsB\x06\n\x04_pos\"\x88\x01\n\x0eMetadataConfig\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x34\n\x06\x63onfig\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x06\x63onfigB\x06\n\x04_pos\"g\n\x0fMetadataCronJob\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04\x63ron\x18\x02 \x01(\tR\x04\x63ronB\x06\n\x04_pos\"\x89\x01\n\x11MetadataDatabases\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x32\n\x05\x63\x61lls\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x05\x63\x61llsB\x06\n\x04_pos\"\x82\x01\n\x10MetadataEncoding\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04type\x18\x02 \x01(\tR\x04type\x12\x18\n\x07lenient\x18\x03 \x01(\x08R\x07lenientB\x06\n\x04_pos\"\xc2\x01\n\x0fMetadataIngress\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04type\x18\x02 \x01(\tR\x04type\x12\x16\n\x06method\x18\x03 \x01(\tR\x06method\x12\x41\n\x04path\x18\x04 \x03(\x0b\x32-.xyz.block.ftl.v1.schema.IngressPathComponentR\x04pathB\x06\n\x04_pos\"\x8b\x01\n\x11MetadataPublisher\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x34\n\x06topics\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x06topicsB\x06\n\x04_pos\"\xfb\x01\n\rMetadataRetry\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x19\n\x05\x63ount\x18\x02 \x01(\x03H\x01R\x05\x63ount\x88\x01\x01\x12\x1f\n\x0bmin_backoff\x18\x03 \x01(\tR\nminBackoff\x12\x1f\n\x0bmax_backoff\x18\x04 \x01(\tR\nmaxBackoff\x12\x37\n\x05\x63\x61tch\x18\x05 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefH\x02R\x05\x63\x61tch\x88\x01\x01\x42\x06\n\x04_posB\x08\n\x06_countB\x08\n\x06_catch\"p\n\x14MetadataSQLMigration\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x16\n\x06\x64igest\x18\x02 \x01(\tR\x06\x64igestB\x06\n\x04_pos\"\x8b\x01\n\x0fMetadataSecrets\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x36\n\x07secrets\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x07secretsB\x06\n\x04_pos\"j\n\x12MetadataSubscriber\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04name\x18\x02 \x01(\tR\x04nameB\x06\n\x04_pos\"\x8e\x01\n\x0fMetadataTypeMap\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x18\n\x07runtime\x18\x02 \x01(\tR\x07runtime\x12\x1f\n\x0bnative_name\x18\x03 \x01(\tR\nnativeNameB\x06\n\x04_pos\"\x9e\x02\n\x06Module\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x18\n\x07\x62uiltin\x18\x03 \x01(\x08R\x07\x62uiltin\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x33\n\x05\x64\x65\x63ls\x18\x05 \x03(\x0b\x32\x1d.xyz.block.ftl.v1.schema.DeclR\x05\x64\x65\x63ls\x12G\n\x07runtime\x18\x92\xf7\x01 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.ModuleRuntimeH\x01R\x07runtime\x88\x01\x01\x42\x06\n\x04_posB\n\n\x08_runtime\"\xee\x01\n\rModuleRuntime\x12;\n\x0b\x63reate_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ncreateTime\x12\x1a\n\x08language\x18\x02 \x01(\tR\x08language\x12!\n\x0cmin_replicas\x18\x03 \x01(\x05R\x0bminReplicas\x12\x13\n\x02os\x18\x04 \x01(\tH\x00R\x02os\x88\x01\x01\x12\x17\n\x04\x61rch\x18\x05 \x01(\tH\x01R\x04\x61rch\x88\x01\x01\x12\x19\n\x05image\x18\x06 \x01(\tH\x02R\x05image\x88\x01\x01\x42\x05\n\x03_osB\x07\n\x05_archB\x08\n\x06_image\"\x8d\x01\n\x08Optional\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x36\n\x04type\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeH\x01R\x04type\x88\x01\x01\x42\x06\n\x04_posB\x07\n\x05_type\"R\n\x08Position\x12\x1a\n\x08\x66ilename\x18\x01 \x01(\tR\x08\x66ilename\x12\x12\n\x04line\x18\x02 \x01(\x03R\x04line\x12\x16\n\x06\x63olumn\x18\x03 \x01(\x03R\x06\x63olumn\"\xbb\x01\n\x03Ref\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x16\n\x06module\x18\x03 \x01(\tR\x06module\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x46\n\x0ftype_parameters\x18\x04 \x03(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x0etypeParametersB\x06\n\x04_pos\"\x85\x01\n\x06Schema\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x39\n\x07modules\x18\x02 \x03(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ModuleR\x07modulesB\x06\n\x04_pos\"\xad\x01\n\x06Secret\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x31\n\x04type\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x04typeB\x06\n\x04_pos\"J\n\x06String\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"e\n\x0bStringValue\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x14\n\x05value\x18\x02 \x01(\tR\x05valueB\x06\n\x04_pos\"\x8f\x02\n\x0cSubscription\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12M\n\x07runtime\x18\x92\xf7\x01 \x01(\x0b\x32,.xyz.block.ftl.v1.schema.SubscriptionRuntimeH\x01R\x07runtime\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x32\n\x05topic\x18\x04 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x05topicB\x06\n\x04_posB\n\n\x08_runtime\"\x81\x01\n\x13SubscriptionRuntime\x12#\n\rkafka_brokers\x18\x01 \x03(\tR\x0ckafkaBrokers\x12\x19\n\x08topic_id\x18\x02 \x01(\tR\x07topicId\x12*\n\x11\x63onsumer_group_id\x18\x03 \x01(\tR\x0f\x63onsumerGroupId\"H\n\x04Time\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\x9a\x02\n\x05Topic\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x46\n\x07runtime\x18\x92\xf7\x01 \x01(\x0b\x32%.xyz.block.ftl.v1.schema.TopicRuntimeH\x01R\x07runtime\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x33\n\x05\x65vent\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x05\x65ventB\x06\n\x04_posB\n\n\x08_runtime\"N\n\x0cTopicRuntime\x12#\n\rkafka_brokers\x18\x01 \x03(\tR\x0ckafkaBrokers\x12\x19\n\x08topic_id\x18\x02 \x01(\tR\x07topicId\"\x9a\x05\n\x04Type\x12\x30\n\x03\x61ny\x18\t \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.AnyH\x00R\x03\x61ny\x12\x36\n\x05\x61rray\x18\x07 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.ArrayH\x00R\x05\x61rray\x12\x33\n\x04\x62ool\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.BoolH\x00R\x04\x62ool\x12\x36\n\x05\x62ytes\x18\x04 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.BytesH\x00R\x05\x62ytes\x12\x36\n\x05\x66loat\x18\x02 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.FloatH\x00R\x05\x66loat\x12\x30\n\x03int\x18\x01 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.IntH\x00R\x03int\x12\x30\n\x03map\x18\x08 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.MapH\x00R\x03map\x12?\n\x08optional\x18\x0c \x01(\x0b\x32!.xyz.block.ftl.v1.schema.OptionalH\x00R\x08optional\x12\x30\n\x03ref\x18\x0b \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefH\x00R\x03ref\x12\x39\n\x06string\x18\x03 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.StringH\x00R\x06string\x12\x33\n\x04time\x18\x06 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TimeH\x00R\x04time\x12\x33\n\x04unit\x18\n \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.UnitH\x00R\x04unitB\x07\n\x05value\"\x87\x02\n\tTypeAlias\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x31\n\x04type\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x04type\x12=\n\x08metadata\x18\x06 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataR\x08metadataB\x06\n\x04_pos\"e\n\rTypeParameter\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04name\x18\x02 \x01(\tR\x04nameB\x06\n\x04_pos\"\x82\x01\n\tTypeValue\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x33\n\x05value\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x05valueB\x06\n\x04_pos\"H\n\x04Unit\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\xe2\x01\n\x05Value\x12@\n\tint_value\x18\x02 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.IntValueH\x00R\x08intValue\x12I\n\x0cstring_value\x18\x01 \x01(\x0b\x32$.xyz.block.ftl.v1.schema.StringValueH\x00R\x0bstringValue\x12\x43\n\ntype_value\x18\x03 \x01(\x0b\x32\".xyz.block.ftl.v1.schema.TypeValueH\x00R\ttypeValueB\x07\n\x05value\"\x96\x03\n\x04Verb\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x37\n\x07request\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x07request\x12\x39\n\x08response\x18\x06 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x08response\x12=\n\x08metadata\x18\x07 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataR\x08metadata\x12\x45\n\x07runtime\x18\x92\xf7\x01 \x01(\x0b\x32$.xyz.block.ftl.v1.schema.VerbRuntimeH\x01R\x07runtime\x88\x01\x01\x42\x06\n\x04_posB\n\n\x08_runtime\"\x85\x01\n\x0bVerbRuntime\x12;\n\x0b\x63reate_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ncreateTime\x12\x39\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime* \n\tAliasKind\x12\x13\n\x0f\x41LIAS_KIND_JSON\x10\x00\x42NP\x01ZJgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/schema;schemapbb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -33,8 +33,8 @@ if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'P\001ZJgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/schema;schemapb' - _globals['_ALIASKIND']._serialized_start=10815 - _globals['_ALIASKIND']._serialized_end=10847 + _globals['_ALIASKIND']._serialized_start=11014 + _globals['_ALIASKIND']._serialized_end=11046 _globals['_ANY']._serialized_start=98 _globals['_ANY']._serialized_end=169 _globals['_ARRAY']._serialized_start=172 @@ -45,106 +45,108 @@ _globals['_BYTES']._serialized_end=451 _globals['_CONFIG']._serialized_start=454 _globals['_CONFIG']._serialized_end=627 - _globals['_DSNDATABASERUNTIME']._serialized_start=629 - _globals['_DSNDATABASERUNTIME']._serialized_end=733 - _globals['_DATA']._serialized_start=736 - _globals['_DATA']._serialized_end=1080 - _globals['_DATABASE']._serialized_start=1083 - _globals['_DATABASE']._serialized_end=1377 - _globals['_DATABASERUNTIME']._serialized_start=1379 - _globals['_DATABASERUNTIME']._serialized_end=1502 - _globals['_DECL']._serialized_start=1505 - _globals['_DECL']._serialized_end=2064 - _globals['_ENUM']._serialized_start=2067 - _globals['_ENUM']._serialized_end=2342 - _globals['_ENUMVARIANT']._serialized_start=2345 - _globals['_ENUMVARIANT']._serialized_end=2526 - _globals['_FIELD']._serialized_start=2529 - _globals['_FIELD']._serialized_end=2764 - _globals['_FLOAT']._serialized_start=2766 - _globals['_FLOAT']._serialized_end=2839 - _globals['_INGRESSPATHCOMPONENT']._serialized_start=2842 - _globals['_INGRESSPATHCOMPONENT']._serialized_end=3073 - _globals['_INGRESSPATHLITERAL']._serialized_start=3075 - _globals['_INGRESSPATHLITERAL']._serialized_end=3181 - _globals['_INGRESSPATHPARAMETER']._serialized_start=3183 - _globals['_INGRESSPATHPARAMETER']._serialized_end=3291 - _globals['_INT']._serialized_start=3293 - _globals['_INT']._serialized_end=3364 - _globals['_INTVALUE']._serialized_start=3366 - _globals['_INTVALUE']._serialized_end=3464 - _globals['_MAP']._serialized_start=3467 - _globals['_MAP']._serialized_end=3640 - _globals['_METADATA']._serialized_start=3643 - _globals['_METADATA']._serialized_end=4593 - _globals['_METADATAALIAS']._serialized_start=4596 - _globals['_METADATAALIAS']._serialized_end=4755 - _globals['_METADATACALLS']._serialized_start=4758 - _globals['_METADATACALLS']._serialized_end=4891 - _globals['_METADATACONFIG']._serialized_start=4894 - _globals['_METADATACONFIG']._serialized_end=5030 - _globals['_METADATACRONJOB']._serialized_start=5032 - _globals['_METADATACRONJOB']._serialized_end=5135 - _globals['_METADATADATABASES']._serialized_start=5138 - _globals['_METADATADATABASES']._serialized_end=5275 - _globals['_METADATAENCODING']._serialized_start=5278 - _globals['_METADATAENCODING']._serialized_end=5408 - _globals['_METADATAINGRESS']._serialized_start=5411 - _globals['_METADATAINGRESS']._serialized_end=5605 - _globals['_METADATAPUBLISHER']._serialized_start=5608 - _globals['_METADATAPUBLISHER']._serialized_end=5747 - _globals['_METADATARETRY']._serialized_start=5750 - _globals['_METADATARETRY']._serialized_end=6001 - _globals['_METADATASQLMIGRATION']._serialized_start=6003 - _globals['_METADATASQLMIGRATION']._serialized_end=6115 - _globals['_METADATASECRETS']._serialized_start=6118 - _globals['_METADATASECRETS']._serialized_end=6257 - _globals['_METADATASUBSCRIBER']._serialized_start=6259 - _globals['_METADATASUBSCRIBER']._serialized_end=6365 - _globals['_METADATATYPEMAP']._serialized_start=6368 - _globals['_METADATATYPEMAP']._serialized_end=6510 - _globals['_MODULE']._serialized_start=6513 - _globals['_MODULE']._serialized_end=6799 - _globals['_MODULERUNTIME']._serialized_start=6802 - _globals['_MODULERUNTIME']._serialized_end=7040 - _globals['_OPTIONAL']._serialized_start=7043 - _globals['_OPTIONAL']._serialized_end=7184 - _globals['_POSITION']._serialized_start=7186 - _globals['_POSITION']._serialized_end=7268 - _globals['_REF']._serialized_start=7271 - _globals['_REF']._serialized_end=7458 - _globals['_SCHEMA']._serialized_start=7461 - _globals['_SCHEMA']._serialized_end=7594 - _globals['_SECRET']._serialized_start=7597 - _globals['_SECRET']._serialized_end=7770 - _globals['_STRING']._serialized_start=7772 - _globals['_STRING']._serialized_end=7846 - _globals['_STRINGVALUE']._serialized_start=7848 - _globals['_STRINGVALUE']._serialized_end=7949 - _globals['_SUBSCRIPTION']._serialized_start=7952 - _globals['_SUBSCRIPTION']._serialized_end=8223 - _globals['_SUBSCRIPTIONRUNTIME']._serialized_start=8226 - _globals['_SUBSCRIPTIONRUNTIME']._serialized_end=8355 - _globals['_TIME']._serialized_start=8357 - _globals['_TIME']._serialized_end=8429 - _globals['_TOPIC']._serialized_start=8432 - _globals['_TOPIC']._serialized_end=8714 - _globals['_TOPICRUNTIME']._serialized_start=8716 - _globals['_TOPICRUNTIME']._serialized_end=8794 - _globals['_TYPE']._serialized_start=8797 - _globals['_TYPE']._serialized_end=9463 - _globals['_TYPEALIAS']._serialized_start=9466 - _globals['_TYPEALIAS']._serialized_end=9729 - _globals['_TYPEPARAMETER']._serialized_start=9731 - _globals['_TYPEPARAMETER']._serialized_end=9832 - _globals['_TYPEVALUE']._serialized_start=9835 - _globals['_TYPEVALUE']._serialized_end=9965 - _globals['_UNIT']._serialized_start=9967 - _globals['_UNIT']._serialized_end=10039 - _globals['_VALUE']._serialized_start=10042 - _globals['_VALUE']._serialized_end=10268 - _globals['_VERB']._serialized_start=10271 - _globals['_VERB']._serialized_end=10677 - _globals['_VERBRUNTIME']._serialized_start=10680 - _globals['_VERBRUNTIME']._serialized_end=10813 + _globals['_DSNDATABASECONNECTOR']._serialized_start=629 + _globals['_DSNDATABASECONNECTOR']._serialized_end=735 + _globals['_DATA']._serialized_start=738 + _globals['_DATA']._serialized_end=1082 + _globals['_DATABASE']._serialized_start=1085 + _globals['_DATABASE']._serialized_end=1379 + _globals['_DATABASECONNECTOR']._serialized_start=1382 + _globals['_DATABASECONNECTOR']._serialized_end=1513 + _globals['_DATABASERUNTIME']._serialized_start=1516 + _globals['_DATABASERUNTIME']._serialized_end=1701 + _globals['_DECL']._serialized_start=1704 + _globals['_DECL']._serialized_end=2263 + _globals['_ENUM']._serialized_start=2266 + _globals['_ENUM']._serialized_end=2541 + _globals['_ENUMVARIANT']._serialized_start=2544 + _globals['_ENUMVARIANT']._serialized_end=2725 + _globals['_FIELD']._serialized_start=2728 + _globals['_FIELD']._serialized_end=2963 + _globals['_FLOAT']._serialized_start=2965 + _globals['_FLOAT']._serialized_end=3038 + _globals['_INGRESSPATHCOMPONENT']._serialized_start=3041 + _globals['_INGRESSPATHCOMPONENT']._serialized_end=3272 + _globals['_INGRESSPATHLITERAL']._serialized_start=3274 + _globals['_INGRESSPATHLITERAL']._serialized_end=3380 + _globals['_INGRESSPATHPARAMETER']._serialized_start=3382 + _globals['_INGRESSPATHPARAMETER']._serialized_end=3490 + _globals['_INT']._serialized_start=3492 + _globals['_INT']._serialized_end=3563 + _globals['_INTVALUE']._serialized_start=3565 + _globals['_INTVALUE']._serialized_end=3663 + _globals['_MAP']._serialized_start=3666 + _globals['_MAP']._serialized_end=3839 + _globals['_METADATA']._serialized_start=3842 + _globals['_METADATA']._serialized_end=4792 + _globals['_METADATAALIAS']._serialized_start=4795 + _globals['_METADATAALIAS']._serialized_end=4954 + _globals['_METADATACALLS']._serialized_start=4957 + _globals['_METADATACALLS']._serialized_end=5090 + _globals['_METADATACONFIG']._serialized_start=5093 + _globals['_METADATACONFIG']._serialized_end=5229 + _globals['_METADATACRONJOB']._serialized_start=5231 + _globals['_METADATACRONJOB']._serialized_end=5334 + _globals['_METADATADATABASES']._serialized_start=5337 + _globals['_METADATADATABASES']._serialized_end=5474 + _globals['_METADATAENCODING']._serialized_start=5477 + _globals['_METADATAENCODING']._serialized_end=5607 + _globals['_METADATAINGRESS']._serialized_start=5610 + _globals['_METADATAINGRESS']._serialized_end=5804 + _globals['_METADATAPUBLISHER']._serialized_start=5807 + _globals['_METADATAPUBLISHER']._serialized_end=5946 + _globals['_METADATARETRY']._serialized_start=5949 + _globals['_METADATARETRY']._serialized_end=6200 + _globals['_METADATASQLMIGRATION']._serialized_start=6202 + _globals['_METADATASQLMIGRATION']._serialized_end=6314 + _globals['_METADATASECRETS']._serialized_start=6317 + _globals['_METADATASECRETS']._serialized_end=6456 + _globals['_METADATASUBSCRIBER']._serialized_start=6458 + _globals['_METADATASUBSCRIBER']._serialized_end=6564 + _globals['_METADATATYPEMAP']._serialized_start=6567 + _globals['_METADATATYPEMAP']._serialized_end=6709 + _globals['_MODULE']._serialized_start=6712 + _globals['_MODULE']._serialized_end=6998 + _globals['_MODULERUNTIME']._serialized_start=7001 + _globals['_MODULERUNTIME']._serialized_end=7239 + _globals['_OPTIONAL']._serialized_start=7242 + _globals['_OPTIONAL']._serialized_end=7383 + _globals['_POSITION']._serialized_start=7385 + _globals['_POSITION']._serialized_end=7467 + _globals['_REF']._serialized_start=7470 + _globals['_REF']._serialized_end=7657 + _globals['_SCHEMA']._serialized_start=7660 + _globals['_SCHEMA']._serialized_end=7793 + _globals['_SECRET']._serialized_start=7796 + _globals['_SECRET']._serialized_end=7969 + _globals['_STRING']._serialized_start=7971 + _globals['_STRING']._serialized_end=8045 + _globals['_STRINGVALUE']._serialized_start=8047 + _globals['_STRINGVALUE']._serialized_end=8148 + _globals['_SUBSCRIPTION']._serialized_start=8151 + _globals['_SUBSCRIPTION']._serialized_end=8422 + _globals['_SUBSCRIPTIONRUNTIME']._serialized_start=8425 + _globals['_SUBSCRIPTIONRUNTIME']._serialized_end=8554 + _globals['_TIME']._serialized_start=8556 + _globals['_TIME']._serialized_end=8628 + _globals['_TOPIC']._serialized_start=8631 + _globals['_TOPIC']._serialized_end=8913 + _globals['_TOPICRUNTIME']._serialized_start=8915 + _globals['_TOPICRUNTIME']._serialized_end=8993 + _globals['_TYPE']._serialized_start=8996 + _globals['_TYPE']._serialized_end=9662 + _globals['_TYPEALIAS']._serialized_start=9665 + _globals['_TYPEALIAS']._serialized_end=9928 + _globals['_TYPEPARAMETER']._serialized_start=9930 + _globals['_TYPEPARAMETER']._serialized_end=10031 + _globals['_TYPEVALUE']._serialized_start=10034 + _globals['_TYPEVALUE']._serialized_end=10164 + _globals['_UNIT']._serialized_start=10166 + _globals['_UNIT']._serialized_end=10238 + _globals['_VALUE']._serialized_start=10241 + _globals['_VALUE']._serialized_end=10467 + _globals['_VERB']._serialized_start=10470 + _globals['_VERB']._serialized_end=10876 + _globals['_VERBRUNTIME']._serialized_start=10879 + _globals['_VERBRUNTIME']._serialized_end=11012 # @@protoc_insertion_point(module_scope) diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.pyi b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.pyi index 72127176da..80736c978d 100644 --- a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.pyi +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.pyi @@ -50,7 +50,7 @@ class Config(_message.Message): type: Type def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., name: _Optional[str] = ..., type: _Optional[_Union[Type, _Mapping]] = ...) -> None: ... -class DSNDatabaseRuntime(_message.Message): +class DSNDatabaseConnector(_message.Message): __slots__ = ("pos", "dsn") POS_FIELD_NUMBER: _ClassVar[int] DSN_FIELD_NUMBER: _ClassVar[int] @@ -92,11 +92,19 @@ class Database(_message.Message): metadata: _containers.RepeatedCompositeFieldContainer[Metadata] def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., runtime: _Optional[_Union[DatabaseRuntime, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., type: _Optional[str] = ..., name: _Optional[str] = ..., metadata: _Optional[_Iterable[_Union[Metadata, _Mapping]]] = ...) -> None: ... +class DatabaseConnector(_message.Message): + __slots__ = ("dsn_database_connector",) + DSN_DATABASE_CONNECTOR_FIELD_NUMBER: _ClassVar[int] + dsn_database_connector: DSNDatabaseConnector + def __init__(self, dsn_database_connector: _Optional[_Union[DSNDatabaseConnector, _Mapping]] = ...) -> None: ... + class DatabaseRuntime(_message.Message): - __slots__ = ("dsn_database_runtime",) - DSN_DATABASE_RUNTIME_FIELD_NUMBER: _ClassVar[int] - dsn_database_runtime: DSNDatabaseRuntime - def __init__(self, dsn_database_runtime: _Optional[_Union[DSNDatabaseRuntime, _Mapping]] = ...) -> None: ... + __slots__ = ("read_connector", "write_connector") + READ_CONNECTOR_FIELD_NUMBER: _ClassVar[int] + WRITE_CONNECTOR_FIELD_NUMBER: _ClassVar[int] + read_connector: DatabaseConnector + write_connector: DatabaseConnector + def __init__(self, read_connector: _Optional[_Union[DatabaseConnector, _Mapping]] = ..., write_connector: _Optional[_Union[DatabaseConnector, _Mapping]] = ...) -> None: ... class Decl(_message.Message): __slots__ = ("config", "data", "database", "enum", "secret", "subscription", "topic", "type_alias", "verb") diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/resource_pb2.py b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/resource_pb2.py index 2a78f290f4..67fb71d941 100644 --- a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/resource_pb2.py +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/resource_pb2.py @@ -27,7 +27,7 @@ from xyz.block.ftl.v1.schema import schema_pb2 as xyz_dot_block_dot_ftl_dot_v1_dot_schema_dot_schema__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n0xyz/block/ftl/v1beta1/provisioner/resource.proto\x12!xyz.block.ftl.v1beta1.provisioner\x1a\x1cgoogle/protobuf/struct.proto\x1a!xyz/block/ftl/v1/controller.proto\x1a$xyz/block/ftl/v1/schema/schema.proto\"\xaa\x04\n\x08Resource\x12\x1f\n\x0bresource_id\x18\x01 \x01(\tR\nresourceId\x12Q\n\x08postgres\x18\x66 \x01(\x0b\x32\x33.xyz.block.ftl.v1beta1.provisioner.PostgresResourceH\x00R\x08postgres\x12H\n\x05mysql\x18g \x01(\x0b\x32\x30.xyz.block.ftl.v1beta1.provisioner.MysqlResourceH\x00R\x05mysql\x12K\n\x06module\x18h \x01(\x0b\x32\x31.xyz.block.ftl.v1beta1.provisioner.ModuleResourceH\x00R\x06module\x12^\n\rsql_migration\x18i \x01(\x0b\x32\x37.xyz.block.ftl.v1beta1.provisioner.SqlMigrationResourceH\x00R\x0csqlMigration\x12H\n\x05topic\x18j \x01(\x0b\x32\x30.xyz.block.ftl.v1beta1.provisioner.TopicResourceH\x00R\x05topic\x12]\n\x0csubscription\x18k \x01(\x0b\x32\x37.xyz.block.ftl.v1beta1.provisioner.SubscriptionResourceH\x00R\x0csubscriptionB\n\n\x08resource\"\xc8\x01\n\x10PostgresResource\x12\x62\n\x06output\x18\x01 \x01(\x0b\x32J.xyz.block.ftl.v1beta1.provisioner.PostgresResource.PostgresResourceOutputR\x06output\x1aP\n\x16PostgresResourceOutput\x12\x19\n\x08read_dsn\x18\x01 \x01(\tR\x07readDsn\x12\x1b\n\twrite_dsn\x18\x02 \x01(\tR\x08writeDsn\"\xbc\x01\n\rMysqlResource\x12\\\n\x06output\x18\x01 \x01(\x0b\x32\x44.xyz.block.ftl.v1beta1.provisioner.MysqlResource.MysqlResourceOutputR\x06output\x1aM\n\x13MysqlResourceOutput\x12\x19\n\x08read_dsn\x18\x01 \x01(\tR\x07readDsn\x12\x1b\n\twrite_dsn\x18\x02 \x01(\tR\x08writeDsn\"\xb8\x01\n\x14SqlMigrationResource\x12j\n\x06output\x18\x01 \x01(\x0b\x32R.xyz.block.ftl.v1beta1.provisioner.SqlMigrationResource.SqlMigrationResourceOutputR\x06output\x12\x16\n\x06\x64igest\x18\x02 \x01(\tR\x06\x64igest\x1a\x1c\n\x1aSqlMigrationResourceOutput\"\xed\x02\n\x0eModuleResource\x12^\n\x06output\x18\x01 \x01(\x0b\x32\x46.xyz.block.ftl.v1beta1.provisioner.ModuleResource.ModuleResourceOutputR\x06output\x12\x37\n\x06schema\x18\x02 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ModuleR\x06schema\x12\x42\n\tartefacts\x18\x03 \x03(\x0b\x32$.xyz.block.ftl.v1.DeploymentArtefactR\tartefacts\x12\x34\n\x06labels\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructH\x00R\x06labels\x88\x01\x01\x1a=\n\x14ModuleResourceOutput\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKeyB\t\n\x07_labels\"\xc4\x01\n\rTopicResource\x12\\\n\x06output\x18\x01 \x01(\x0b\x32\x44.xyz.block.ftl.v1beta1.provisioner.TopicResource.TopicResourceOutputR\x06output\x1aU\n\x13TopicResourceOutput\x12#\n\rkafka_brokers\x18\x01 \x03(\tR\x0ckafkaBrokers\x12\x19\n\x08topic_id\x18\x02 \x01(\tR\x07topicId\"\xc1\x02\n\x14SubscriptionResource\x12j\n\x06output\x18\x01 \x01(\x0b\x32R.xyz.block.ftl.v1beta1.provisioner.SubscriptionResource.SubscriptionResourceOutputR\x06output\x12\x32\n\x05topic\x18\x02 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x05topic\x1a\x88\x01\n\x1aSubscriptionResourceOutput\x12#\n\rkafka_brokers\x18\x01 \x03(\tR\x0ckafkaBrokers\x12\x19\n\x08topic_id\x18\x02 \x01(\tR\x07topicId\x12*\n\x11\x63onsumer_group_id\x18\x03 \x01(\tR\x0f\x63onsumerGroupIdB[P\x01ZWgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1beta1/provisioner;provisionerb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n0xyz/block/ftl/v1beta1/provisioner/resource.proto\x12!xyz.block.ftl.v1beta1.provisioner\x1a\x1cgoogle/protobuf/struct.proto\x1a!xyz/block/ftl/v1/controller.proto\x1a$xyz/block/ftl/v1/schema/schema.proto\"\xaa\x04\n\x08Resource\x12\x1f\n\x0bresource_id\x18\x01 \x01(\tR\nresourceId\x12Q\n\x08postgres\x18\x66 \x01(\x0b\x32\x33.xyz.block.ftl.v1beta1.provisioner.PostgresResourceH\x00R\x08postgres\x12H\n\x05mysql\x18g \x01(\x0b\x32\x30.xyz.block.ftl.v1beta1.provisioner.MysqlResourceH\x00R\x05mysql\x12K\n\x06module\x18h \x01(\x0b\x32\x31.xyz.block.ftl.v1beta1.provisioner.ModuleResourceH\x00R\x06module\x12^\n\rsql_migration\x18i \x01(\x0b\x32\x37.xyz.block.ftl.v1beta1.provisioner.SqlMigrationResourceH\x00R\x0csqlMigration\x12H\n\x05topic\x18j \x01(\x0b\x32\x30.xyz.block.ftl.v1beta1.provisioner.TopicResourceH\x00R\x05topic\x12]\n\x0csubscription\x18k \x01(\x0b\x32\x37.xyz.block.ftl.v1beta1.provisioner.SubscriptionResourceH\x00R\x0csubscriptionB\n\n\x08resource\"T\n\x10PostgresResource\x12@\n\x06output\x18\x01 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.DatabaseRuntimeR\x06output\"Q\n\rMysqlResource\x12@\n\x06output\x18\x01 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.DatabaseRuntimeR\x06output\"\xb8\x01\n\x14SqlMigrationResource\x12j\n\x06output\x18\x01 \x01(\x0b\x32R.xyz.block.ftl.v1beta1.provisioner.SqlMigrationResource.SqlMigrationResourceOutputR\x06output\x12\x16\n\x06\x64igest\x18\x02 \x01(\tR\x06\x64igest\x1a\x1c\n\x1aSqlMigrationResourceOutput\"\xed\x02\n\x0eModuleResource\x12^\n\x06output\x18\x01 \x01(\x0b\x32\x46.xyz.block.ftl.v1beta1.provisioner.ModuleResource.ModuleResourceOutputR\x06output\x12\x37\n\x06schema\x18\x02 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ModuleR\x06schema\x12\x42\n\tartefacts\x18\x03 \x03(\x0b\x32$.xyz.block.ftl.v1.DeploymentArtefactR\tartefacts\x12\x34\n\x06labels\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructH\x00R\x06labels\x88\x01\x01\x1a=\n\x14ModuleResourceOutput\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKeyB\t\n\x07_labels\"\xc4\x01\n\rTopicResource\x12\\\n\x06output\x18\x01 \x01(\x0b\x32\x44.xyz.block.ftl.v1beta1.provisioner.TopicResource.TopicResourceOutputR\x06output\x1aU\n\x13TopicResourceOutput\x12#\n\rkafka_brokers\x18\x01 \x03(\tR\x0ckafkaBrokers\x12\x19\n\x08topic_id\x18\x02 \x01(\tR\x07topicId\"\xc1\x02\n\x14SubscriptionResource\x12j\n\x06output\x18\x01 \x01(\x0b\x32R.xyz.block.ftl.v1beta1.provisioner.SubscriptionResource.SubscriptionResourceOutputR\x06output\x12\x32\n\x05topic\x18\x02 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x05topic\x1a\x88\x01\n\x1aSubscriptionResourceOutput\x12#\n\rkafka_brokers\x18\x01 \x03(\tR\x0ckafkaBrokers\x12\x19\n\x08topic_id\x18\x02 \x01(\tR\x07topicId\x12*\n\x11\x63onsumer_group_id\x18\x03 \x01(\tR\x0f\x63onsumerGroupIdB[P\x01ZWgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1beta1/provisioner;provisionerb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -37,28 +37,24 @@ _globals['DESCRIPTOR']._serialized_options = b'P\001ZWgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1beta1/provisioner;provisioner' _globals['_RESOURCE']._serialized_start=191 _globals['_RESOURCE']._serialized_end=745 - _globals['_POSTGRESRESOURCE']._serialized_start=748 - _globals['_POSTGRESRESOURCE']._serialized_end=948 - _globals['_POSTGRESRESOURCE_POSTGRESRESOURCEOUTPUT']._serialized_start=868 - _globals['_POSTGRESRESOURCE_POSTGRESRESOURCEOUTPUT']._serialized_end=948 - _globals['_MYSQLRESOURCE']._serialized_start=951 - _globals['_MYSQLRESOURCE']._serialized_end=1139 - _globals['_MYSQLRESOURCE_MYSQLRESOURCEOUTPUT']._serialized_start=1062 - _globals['_MYSQLRESOURCE_MYSQLRESOURCEOUTPUT']._serialized_end=1139 - _globals['_SQLMIGRATIONRESOURCE']._serialized_start=1142 - _globals['_SQLMIGRATIONRESOURCE']._serialized_end=1326 - _globals['_SQLMIGRATIONRESOURCE_SQLMIGRATIONRESOURCEOUTPUT']._serialized_start=1298 - _globals['_SQLMIGRATIONRESOURCE_SQLMIGRATIONRESOURCEOUTPUT']._serialized_end=1326 - _globals['_MODULERESOURCE']._serialized_start=1329 - _globals['_MODULERESOURCE']._serialized_end=1694 - _globals['_MODULERESOURCE_MODULERESOURCEOUTPUT']._serialized_start=1622 - _globals['_MODULERESOURCE_MODULERESOURCEOUTPUT']._serialized_end=1683 - _globals['_TOPICRESOURCE']._serialized_start=1697 - _globals['_TOPICRESOURCE']._serialized_end=1893 - _globals['_TOPICRESOURCE_TOPICRESOURCEOUTPUT']._serialized_start=1808 - _globals['_TOPICRESOURCE_TOPICRESOURCEOUTPUT']._serialized_end=1893 - _globals['_SUBSCRIPTIONRESOURCE']._serialized_start=1896 - _globals['_SUBSCRIPTIONRESOURCE']._serialized_end=2217 - _globals['_SUBSCRIPTIONRESOURCE_SUBSCRIPTIONRESOURCEOUTPUT']._serialized_start=2081 - _globals['_SUBSCRIPTIONRESOURCE_SUBSCRIPTIONRESOURCEOUTPUT']._serialized_end=2217 + _globals['_POSTGRESRESOURCE']._serialized_start=747 + _globals['_POSTGRESRESOURCE']._serialized_end=831 + _globals['_MYSQLRESOURCE']._serialized_start=833 + _globals['_MYSQLRESOURCE']._serialized_end=914 + _globals['_SQLMIGRATIONRESOURCE']._serialized_start=917 + _globals['_SQLMIGRATIONRESOURCE']._serialized_end=1101 + _globals['_SQLMIGRATIONRESOURCE_SQLMIGRATIONRESOURCEOUTPUT']._serialized_start=1073 + _globals['_SQLMIGRATIONRESOURCE_SQLMIGRATIONRESOURCEOUTPUT']._serialized_end=1101 + _globals['_MODULERESOURCE']._serialized_start=1104 + _globals['_MODULERESOURCE']._serialized_end=1469 + _globals['_MODULERESOURCE_MODULERESOURCEOUTPUT']._serialized_start=1397 + _globals['_MODULERESOURCE_MODULERESOURCEOUTPUT']._serialized_end=1458 + _globals['_TOPICRESOURCE']._serialized_start=1472 + _globals['_TOPICRESOURCE']._serialized_end=1668 + _globals['_TOPICRESOURCE_TOPICRESOURCEOUTPUT']._serialized_start=1583 + _globals['_TOPICRESOURCE_TOPICRESOURCEOUTPUT']._serialized_end=1668 + _globals['_SUBSCRIPTIONRESOURCE']._serialized_start=1671 + _globals['_SUBSCRIPTIONRESOURCE']._serialized_end=1992 + _globals['_SUBSCRIPTIONRESOURCE_SUBSCRIPTIONRESOURCEOUTPUT']._serialized_start=1856 + _globals['_SUBSCRIPTIONRESOURCE_SUBSCRIPTIONRESOURCEOUTPUT']._serialized_end=1992 # @@protoc_insertion_point(module_scope) diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/resource_pb2.pyi b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/resource_pb2.pyi index 666d7b9eed..6709b1f926 100644 --- a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/resource_pb2.pyi +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/resource_pb2.pyi @@ -28,29 +28,15 @@ class Resource(_message.Message): class PostgresResource(_message.Message): __slots__ = ("output",) - class PostgresResourceOutput(_message.Message): - __slots__ = ("read_dsn", "write_dsn") - READ_DSN_FIELD_NUMBER: _ClassVar[int] - WRITE_DSN_FIELD_NUMBER: _ClassVar[int] - read_dsn: str - write_dsn: str - def __init__(self, read_dsn: _Optional[str] = ..., write_dsn: _Optional[str] = ...) -> None: ... OUTPUT_FIELD_NUMBER: _ClassVar[int] - output: PostgresResource.PostgresResourceOutput - def __init__(self, output: _Optional[_Union[PostgresResource.PostgresResourceOutput, _Mapping]] = ...) -> None: ... + output: _schema_pb2.DatabaseRuntime + def __init__(self, output: _Optional[_Union[_schema_pb2.DatabaseRuntime, _Mapping]] = ...) -> None: ... class MysqlResource(_message.Message): __slots__ = ("output",) - class MysqlResourceOutput(_message.Message): - __slots__ = ("read_dsn", "write_dsn") - READ_DSN_FIELD_NUMBER: _ClassVar[int] - WRITE_DSN_FIELD_NUMBER: _ClassVar[int] - read_dsn: str - write_dsn: str - def __init__(self, read_dsn: _Optional[str] = ..., write_dsn: _Optional[str] = ...) -> None: ... OUTPUT_FIELD_NUMBER: _ClassVar[int] - output: MysqlResource.MysqlResourceOutput - def __init__(self, output: _Optional[_Union[MysqlResource.MysqlResourceOutput, _Mapping]] = ...) -> None: ... + output: _schema_pb2.DatabaseRuntime + def __init__(self, output: _Optional[_Union[_schema_pb2.DatabaseRuntime, _Mapping]] = ...) -> None: ... class SqlMigrationResource(_message.Message): __slots__ = ("output", "digest")