diff --git a/gen/go/qdrant/cloud/cluster/v1/cluster.pb.go b/gen/go/qdrant/cloud/cluster/v1/cluster.pb.go index f5aaa2d9..6b103923 100644 --- a/gen/go/qdrant/cloud/cluster/v1/cluster.pb.go +++ b/gen/go/qdrant/cloud/cluster/v1/cluster.pb.go @@ -487,6 +487,59 @@ func (ClusterPhase) EnumDescriptor() ([]byte, []int) { return file_qdrant_cloud_cluster_v1_cluster_proto_rawDescGZIP(), []int{6} } +// ClusterScalabilityStatus defines the scalability states of a cluster. +type ClusterScalabilityStatus int32 + +const ( + // Scalability status is unspecified. + ClusterScalabilityStatus_CLUSTER_SCALABILITY_STATUS_UNSPECIFIED ClusterScalabilityStatus = 0 + // The cluster is not scalable. + ClusterScalabilityStatus_CLUSTER_SCALABILITY_STATUS_NOT_SCALABLE ClusterScalabilityStatus = 1 + // The cluster supports scaling operations. + ClusterScalabilityStatus_CLUSTER_SCALABILITY_STATUS_SCALABLE ClusterScalabilityStatus = 2 +) + +// Enum value maps for ClusterScalabilityStatus. +var ( + ClusterScalabilityStatus_name = map[int32]string{ + 0: "CLUSTER_SCALABILITY_STATUS_UNSPECIFIED", + 1: "CLUSTER_SCALABILITY_STATUS_NOT_SCALABLE", + 2: "CLUSTER_SCALABILITY_STATUS_SCALABLE", + } + ClusterScalabilityStatus_value = map[string]int32{ + "CLUSTER_SCALABILITY_STATUS_UNSPECIFIED": 0, + "CLUSTER_SCALABILITY_STATUS_NOT_SCALABLE": 1, + "CLUSTER_SCALABILITY_STATUS_SCALABLE": 2, + } +) + +func (x ClusterScalabilityStatus) Enum() *ClusterScalabilityStatus { + p := new(ClusterScalabilityStatus) + *p = x + return p +} + +func (x ClusterScalabilityStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ClusterScalabilityStatus) Descriptor() protoreflect.EnumDescriptor { + return file_qdrant_cloud_cluster_v1_cluster_proto_enumTypes[7].Descriptor() +} + +func (ClusterScalabilityStatus) Type() protoreflect.EnumType { + return &file_qdrant_cloud_cluster_v1_cluster_proto_enumTypes[7] +} + +func (x ClusterScalabilityStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ClusterScalabilityStatus.Descriptor instead. +func (ClusterScalabilityStatus) EnumDescriptor() ([]byte, []int) { + return file_qdrant_cloud_cluster_v1_cluster_proto_rawDescGZIP(), []int{7} +} + // ListClustersRequest is the request for the ListClusters function type ListClustersRequest struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -2354,9 +2407,11 @@ type ClusterState struct { Endpoint *ClusterEndpoint `protobuf:"bytes,6,opt,name=endpoint,proto3" json:"endpoint,omitempty"` // The resources used by the cluster per node. // For the complete cluster you have to multiply by cluster.configuration.number_of_nodes - Resources *ClusterNodeResourcesSummary `protobuf:"bytes,7,opt,name=resources,proto3" json:"resources,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + Resources *ClusterNodeResourcesSummary `protobuf:"bytes,7,opt,name=resources,proto3" json:"resources,omitempty"` + // Whether the cluster can be scaled up or down. + ScalabilityInfo *ClusterScalabilityInfo `protobuf:"bytes,8,opt,name=scalability_info,json=scalabilityInfo,proto3" json:"scalability_info,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ClusterState) Reset() { @@ -2438,6 +2493,13 @@ func (x *ClusterState) GetResources() *ClusterNodeResourcesSummary { return nil } +func (x *ClusterState) GetScalabilityInfo() *ClusterScalabilityInfo { + if x != nil { + return x.ScalabilityInfo + } + return nil +} + // Endpoint information to access the qdrant cluster (aka database). // All fields in this message are a read-only field. type ClusterEndpoint struct { @@ -2652,6 +2714,62 @@ func (x *ClusterNodeResources) GetAvailable() float64 { return 0 } +// ClusterScalabilityInfo provides information about the +type ClusterScalabilityInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The current scalability status of the cluster. + Status ClusterScalabilityStatus `protobuf:"varint,1,opt,name=status,proto3,enum=qdrant.cloud.cluster.v1.ClusterScalabilityStatus" json:"status,omitempty"` + // Optional human-readable reason providing more context about the scalability status. + // When a cluster is not scalable, this field explains why. + Reason *string `protobuf:"bytes,2,opt,name=reason,proto3,oneof" json:"reason,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ClusterScalabilityInfo) Reset() { + *x = ClusterScalabilityInfo{} + mi := &file_qdrant_cloud_cluster_v1_cluster_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ClusterScalabilityInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClusterScalabilityInfo) ProtoMessage() {} + +func (x *ClusterScalabilityInfo) ProtoReflect() protoreflect.Message { + mi := &file_qdrant_cloud_cluster_v1_cluster_proto_msgTypes[34] + 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 ClusterScalabilityInfo.ProtoReflect.Descriptor instead. +func (*ClusterScalabilityInfo) Descriptor() ([]byte, []int) { + return file_qdrant_cloud_cluster_v1_cluster_proto_rawDescGZIP(), []int{34} +} + +func (x *ClusterScalabilityInfo) GetStatus() ClusterScalabilityStatus { + if x != nil { + return x.Status + } + return ClusterScalabilityStatus_CLUSTER_SCALABILITY_STATUS_UNSPECIFIED +} + +func (x *ClusterScalabilityInfo) GetReason() string { + if x != nil && x.Reason != nil { + return *x.Reason + } + return "" +} + // QdrantRelease represent a single Qdrant release type QdrantRelease struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -2674,7 +2792,7 @@ type QdrantRelease struct { func (x *QdrantRelease) Reset() { *x = QdrantRelease{} - mi := &file_qdrant_cloud_cluster_v1_cluster_proto_msgTypes[34] + mi := &file_qdrant_cloud_cluster_v1_cluster_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2686,7 +2804,7 @@ func (x *QdrantRelease) String() string { func (*QdrantRelease) ProtoMessage() {} func (x *QdrantRelease) ProtoReflect() protoreflect.Message { - mi := &file_qdrant_cloud_cluster_v1_cluster_proto_msgTypes[34] + mi := &file_qdrant_cloud_cluster_v1_cluster_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2699,7 +2817,7 @@ func (x *QdrantRelease) ProtoReflect() protoreflect.Message { // Deprecated: Use QdrantRelease.ProtoReflect.Descriptor instead. func (*QdrantRelease) Descriptor() ([]byte, []int) { - return file_qdrant_cloud_cluster_v1_cluster_proto_rawDescGZIP(), []int{34} + return file_qdrant_cloud_cluster_v1_cluster_proto_rawDescGZIP(), []int{35} } func (x *QdrantRelease) GetVersion() string { @@ -3153,7 +3271,7 @@ var file_qdrant_cloud_cluster_v1_cluster_proto_rawDesc = string([]byte{ 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0xf1, 0x02, 0x0a, 0x0c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0xcd, 0x03, 0x0a, 0x0c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, @@ -3176,306 +3294,331 @@ var file_qdrant_cloud_cluster_v1_cluster_proto_rawDesc = string([]byte{ 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x09, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x67, 0x0a, 0x0f, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x03, - 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, - 0xa8, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x74, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x73, - 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x67, 0x72, 0x70, 0x63, 0x50, 0x6f, - 0x72, 0x74, 0x22, 0xe2, 0x01, 0x0a, 0x1b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, - 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x79, 0x12, 0x41, 0x0a, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, - 0x04, 0x64, 0x69, 0x73, 0x6b, 0x12, 0x3f, 0x0a, 0x03, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x52, 0x03, 0x72, 0x61, 0x6d, 0x12, 0x3f, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x10, 0x73, 0x63, 0x61, + 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x52, 0x03, 0x63, 0x70, 0x75, 0x22, 0xaa, 0x01, 0x0a, 0x14, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x12, 0x12, 0x0a, 0x04, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, - 0x62, 0x61, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, - 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, - 0x61, 0x62, 0x6c, 0x65, 0x22, 0xf7, 0x01, 0x0a, 0x0d, 0x51, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x52, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x2f, 0x0a, 0x11, 0x72, 0x65, - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, - 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x72, - 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, - 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x0b, 0x65, 0x6e, - 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x6c, 0x69, 0x66, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x09, 0x65, 0x6e, 0x64, 0x4f, 0x66, 0x4c, 0x69, 0x66, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, - 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x75, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x14, 0x0a, 0x12, - 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x5f, 0x75, - 0x72, 0x6c, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2a, 0xa0, - 0x01, 0x0a, 0x1b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x70, 0x75, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, - 0x0a, 0x2a, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, - 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x50, 0x55, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x29, - 0x0a, 0x25, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, - 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x50, 0x55, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4e, 0x56, 0x49, 0x44, 0x49, 0x41, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x43, 0x4c, 0x55, - 0x53, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x47, 0x50, 0x55, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4d, 0x44, 0x10, - 0x02, 0x2a, 0xf2, 0x01, 0x0a, 0x21, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x34, 0x0a, 0x30, 0x43, 0x4c, 0x55, 0x53, 0x54, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x67, 0x0a, 0x0f, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xa8, 0x01, 0x01, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x72, + 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x67, 0x72, 0x70, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x22, 0xe2, + 0x01, 0x0a, 0x1b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x41, + 0x0a, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x04, 0x64, 0x69, 0x73, + 0x6b, 0x12, 0x3f, 0x0a, 0x03, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x03, 0x72, + 0x61, 0x6d, 0x12, 0x3f, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x03, + 0x63, 0x70, 0x75, 0x22, 0xaa, 0x01, 0x0a, 0x14, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, + 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x62, 0x61, 0x73, 0x65, + 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x72, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x6d, + 0x65, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, + 0x22, 0x8b, 0x01, 0x0a, 0x16, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x61, 0x6c, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x49, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x61, + 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0xf7, + 0x01, 0x0a, 0x0d, 0x51, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x12, 0x2f, 0x0a, 0x11, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, + 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x0f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x55, + 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, + 0x73, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x6c, + 0x69, 0x66, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x4f, 0x66, + 0x4c, 0x69, 0x66, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x6e, 0x61, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x5f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2a, 0xa0, 0x01, 0x0a, 0x1b, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x47, 0x70, 0x75, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x2a, 0x43, 0x4c, 0x55, 0x53, + 0x54, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x47, 0x50, 0x55, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x29, 0x0a, 0x25, 0x43, 0x4c, 0x55, 0x53, + 0x54, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x47, 0x50, 0x55, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x56, 0x49, 0x44, 0x49, + 0x41, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x43, + 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x50, 0x55, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4d, 0x44, 0x10, 0x02, 0x2a, 0xf2, 0x01, 0x0a, 0x21, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x12, 0x34, 0x0a, 0x30, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, + 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, + 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x30, 0x0a, 0x2c, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x30, 0x0a, - 0x2c, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, - 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x50, - 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, - 0x31, 0x0a, 0x2d, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, - 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, - 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4c, 0x4c, 0x45, 0x4c, - 0x10, 0x02, 0x12, 0x32, 0x0a, 0x2e, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x4f, - 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x54, - 0x41, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x4d, - 0x41, 0x54, 0x49, 0x43, 0x10, 0x03, 0x2a, 0x8e, 0x02, 0x0a, 0x25, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, - 0x12, 0x38, 0x0a, 0x34, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, - 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x42, 0x41, 0x4c, 0x41, - 0x4e, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x35, 0x0a, 0x31, 0x43, 0x4c, + 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x31, 0x0a, 0x2d, 0x43, 0x4c, 0x55, + 0x53, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, + 0x59, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4c, 0x4c, 0x45, 0x4c, 0x10, 0x02, 0x12, 0x32, 0x0a, 0x2e, + 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x50, 0x4f, + 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x4d, 0x41, 0x54, 0x49, 0x43, 0x10, 0x03, + 0x2a, 0x8e, 0x02, 0x0a, 0x25, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x38, 0x0a, 0x34, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x53, 0x54, - 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x42, 0x59, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, - 0x01, 0x12, 0x34, 0x0a, 0x30, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, + 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x35, 0x0a, 0x31, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, + 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, + 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, + 0x5f, 0x42, 0x59, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x34, 0x0a, 0x30, 0x43, + 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x53, + 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x42, 0x59, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, + 0x02, 0x12, 0x3e, 0x0a, 0x3a, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x42, 0x59, - 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x02, 0x12, 0x3e, 0x0a, 0x3a, 0x43, 0x4c, 0x55, 0x53, 0x54, - 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x52, 0x45, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, - 0x45, 0x47, 0x59, 0x5f, 0x42, 0x59, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x41, 0x4e, 0x44, - 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x03, 0x2a, 0xd5, 0x02, 0x0a, 0x1d, 0x44, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x30, 0x0a, 0x2c, 0x44, 0x41, 0x54, - 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2a, 0x0a, 0x26, 0x44, - 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, - 0x54, 0x52, 0x41, 0x43, 0x45, 0x10, 0x01, 0x12, 0x2a, 0x0a, 0x26, 0x44, 0x41, 0x54, 0x41, 0x42, - 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, 0x55, - 0x47, 0x10, 0x02, 0x12, 0x29, 0x0a, 0x25, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, + 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, + 0x03, 0x2a, 0xd5, 0x02, 0x0a, 0x1d, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x12, 0x30, 0x0a, 0x2c, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, - 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x03, 0x12, 0x29, - 0x0a, 0x25, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, - 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, - 0x45, 0x4c, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x04, 0x12, 0x2a, 0x0a, 0x26, 0x44, 0x41, 0x54, - 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x52, - 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x28, 0x0a, 0x24, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, + 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2a, 0x0a, 0x26, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x4f, 0x46, 0x46, 0x10, 0x06, 0x2a, - 0x78, 0x0a, 0x12, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x4f, 0x4c, 0x45, 0x52, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x4f, - 0x4c, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, - 0x52, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x4f, - 0x4c, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, - 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x02, 0x2a, 0xa4, 0x01, 0x0a, 0x10, 0x54, 0x6f, - 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x21, - 0x0a, 0x1d, 0x54, 0x4f, 0x4c, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x46, 0x46, - 0x45, 0x43, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x4f, 0x4c, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x5f, 0x4e, 0x4f, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, - 0x4c, 0x45, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x54, 0x4f, 0x4c, 0x45, 0x52, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, - 0x5f, 0x4e, 0x4f, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x20, - 0x0a, 0x1c, 0x54, 0x4f, 0x4c, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x46, 0x46, - 0x45, 0x43, 0x54, 0x5f, 0x4e, 0x4f, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x45, 0x10, 0x03, - 0x2a, 0xc3, 0x04, 0x0a, 0x0c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x68, 0x61, 0x73, - 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, - 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, - 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, - 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x46, 0x41, - 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x02, - 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, - 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, - 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x46, 0x41, - 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x04, - 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, - 0x45, 0x5f, 0x53, 0x43, 0x41, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x17, 0x43, - 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x50, 0x47, - 0x52, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4c, 0x55, 0x53, - 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x55, 0x53, 0x50, 0x45, 0x4e, - 0x44, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, - 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, 0x45, - 0x44, 0x10, 0x08, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, - 0x48, 0x41, 0x53, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x53, - 0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, 0x10, 0x09, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4c, 0x55, 0x53, - 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4d, 0x49, - 0x4e, 0x47, 0x10, 0x0a, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, - 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, - 0x52, 0x45, 0x53, 0x55, 0x4d, 0x45, 0x10, 0x0b, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4c, 0x55, 0x53, - 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, - 0x59, 0x10, 0x0c, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, - 0x48, 0x41, 0x53, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x0d, - 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, - 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, - 0x0e, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, - 0x53, 0x45, 0x5f, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x5f, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, - 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x0f, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x4c, 0x55, 0x53, 0x54, - 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, - 0x54, 0x4f, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x10, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4c, 0x55, - 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, - 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x11, 0x32, 0xcb, 0x0e, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xb4, 0x01, 0x0a, 0x0c, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x10, + 0x01, 0x12, 0x2a, 0x0a, 0x26, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, + 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, + 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x02, 0x12, 0x29, 0x0a, + 0x25, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, + 0x4c, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x03, 0x12, 0x29, 0x0a, 0x25, 0x44, 0x41, 0x54, 0x41, + 0x42, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, 0x41, 0x52, + 0x4e, 0x10, 0x04, 0x12, 0x2a, 0x0a, 0x26, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, + 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, + 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, + 0x28, 0x0a, 0x24, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, + 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, + 0x56, 0x45, 0x4c, 0x5f, 0x4f, 0x46, 0x46, 0x10, 0x06, 0x2a, 0x78, 0x0a, 0x12, 0x54, 0x6f, 0x6c, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, + 0x23, 0x0a, 0x1f, 0x54, 0x4f, 0x4c, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, + 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x4f, 0x4c, 0x45, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x58, 0x49, 0x53, + 0x54, 0x53, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x4f, 0x4c, 0x45, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, + 0x4c, 0x10, 0x02, 0x2a, 0xa4, 0x01, 0x0a, 0x10, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x4f, 0x4c, 0x45, + 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x54, + 0x4f, 0x4c, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, + 0x5f, 0x4e, 0x4f, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x28, + 0x0a, 0x24, 0x54, 0x4f, 0x4c, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x46, 0x46, + 0x45, 0x43, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x5f, 0x53, 0x43, + 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x4f, 0x4c, 0x45, + 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x5f, 0x4e, 0x4f, + 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x45, 0x10, 0x03, 0x2a, 0xc3, 0x04, 0x0a, 0x0c, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x43, + 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4c, + 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, + 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, + 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x54, + 0x4f, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4c, + 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, + 0x54, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, + 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x54, + 0x4f, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4c, + 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x43, 0x41, 0x4c, + 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, + 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x49, 0x4e, 0x47, + 0x10, 0x06, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, + 0x41, 0x53, 0x45, 0x5f, 0x53, 0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x07, + 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, + 0x45, 0x5f, 0x53, 0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x08, 0x12, 0x23, 0x0a, + 0x1f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x46, + 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, + 0x10, 0x09, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, + 0x41, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4d, 0x49, 0x4e, 0x47, 0x10, 0x0a, 0x12, 0x22, + 0x0a, 0x1e, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, + 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4d, 0x45, + 0x10, 0x0b, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, + 0x41, 0x53, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x59, 0x10, 0x0c, 0x12, 0x1b, 0x0a, + 0x17, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x4e, + 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x0d, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x4c, + 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, + 0x56, 0x45, 0x52, 0x59, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x0e, 0x12, 0x24, 0x0a, 0x20, 0x43, + 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x4d, 0x41, 0x4e, + 0x55, 0x41, 0x4c, 0x5f, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x10, + 0x0f, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x41, + 0x53, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x59, 0x4e, + 0x43, 0x10, 0x10, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, + 0x48, 0x41, 0x53, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x11, + 0x2a, 0x9c, 0x01, 0x0a, 0x18, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x61, 0x6c, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, + 0x26, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x43, 0x41, 0x4c, 0x41, 0x42, 0x49, + 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27, 0x43, 0x4c, 0x55, + 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x43, 0x41, 0x4c, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x43, 0x41, 0x4c, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x27, 0x0a, 0x23, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, + 0x52, 0x5f, 0x53, 0x43, 0x41, 0x4c, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x43, 0x41, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x32, + 0xcb, 0x0e, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0xb4, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x12, 0x2c, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x47, 0x8a, 0xb5, 0x18, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x3a, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0xbb, 0x01, 0x0a, 0x0a, 0x47, 0x65, + 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x8a, 0xb5, 0x18, 0x0d, 0x72, 0x65, 0x61, - 0x64, 0x3a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, - 0x12, 0x2e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, - 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, - 0x12, 0xbb, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, - 0x2a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x8a, 0xb5, 0x18, 0x0d, 0x72, 0x65, - 0x61, 0x64, 0x3a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x3d, 0x12, 0x3b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, - 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xd9, - 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x12, 0x2d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x69, 0x8a, 0xb5, 0x18, 0x0e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x92, 0xb5, 0x18, 0x12, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, - 0x01, 0x2a, 0x22, 0x36, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0xe6, 0x01, 0x0a, 0x0d, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2d, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, 0x8a, 0xb5, 0x18, - 0x0e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x92, - 0xb5, 0x18, 0x12, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x3a, 0x01, 0x2a, 0x1a, 0x43, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, - 0x69, 0x64, 0x7d, 0x12, 0xc6, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x8a, 0xb5, 0x18, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x3a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x2a, - 0x3b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, - 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, - 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xd0, 0x01, 0x0a, - 0x0e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, - 0x2e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x5d, 0x8a, 0xb5, 0x18, 0x0e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x22, 0x43, 0x2f, 0x61, 0x70, 0x69, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x54, 0x8a, 0xb5, 0x18, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x3a, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, - 0xd0, 0x01, 0x0a, 0x0e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x73, - 0x70, 0x65, 0x6e, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x73, - 0x70, 0x65, 0x6e, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x5d, 0x8a, 0xb5, 0x18, 0x0e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x22, 0x43, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x75, 0x73, 0x70, 0x65, - 0x6e, 0x64, 0x12, 0xc6, 0x01, 0x0a, 0x12, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xd9, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x69, 0x8a, 0xb5, 0x18, 0x0e, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x3a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x92, 0xb5, 0x18, 0x12, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, 0x01, 0x2a, 0x22, 0x36, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x12, 0xe6, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, 0x8a, 0xb5, 0x18, 0x0e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x3a, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x92, 0xb5, 0x18, 0x12, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x48, 0x3a, 0x01, 0x2a, 0x1a, 0x43, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x69, 0x64, 0x7d, 0x12, 0xc6, 0x01, 0x0a, + 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2d, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x47, 0x8a, 0xb5, 0x18, 0x00, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x73, - 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xc6, 0x01, 0x0a, 0x12, - 0x4c, 0x69, 0x73, 0x74, 0x51, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x73, 0x12, 0x32, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x51, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, + 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x8a, + 0xb5, 0x18, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x2a, 0x3b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xd0, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5d, 0x8a, 0xb5, 0x18, 0x0e, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x3a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x45, 0x22, 0x43, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0xd0, 0x01, 0x0a, 0x0e, 0x53, 0x75, 0x73, + 0x70, 0x65, 0x6e, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5d, 0x8a, 0xb5, + 0x18, 0x0e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x22, 0x43, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x12, 0xc6, 0x01, 0x0a, 0x12, + 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x32, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, + 0x67, 0x65, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x51, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, - 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x8a, 0xb5, 0x18, - 0x0d, 0x72, 0x65, 0x61, 0x64, 0x3a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x73, 0x42, 0xfe, 0x01, 0x0a, 0x1b, 0x63, 0x6f, 0x6d, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2f, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2d, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, 0x70, 0x69, 0x2f, - 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2f, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x51, 0x43, 0x43, 0xaa, 0x02, - 0x17, 0x51, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x17, 0x51, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5c, - 0x56, 0x31, 0xe2, 0x02, 0x23, 0x51, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x5c, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x5c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1a, 0x51, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x8a, 0xb5, 0x18, + 0x00, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x2d, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xc6, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x51, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x51, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x33, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x51, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x8a, 0xb5, 0x18, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x3a, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x42, 0xfe, 0x01, + 0x0a, 0x1b, 0x63, 0x6f, 0x6d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x52, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2f, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x76, + 0x31, 0xa2, 0x02, 0x03, 0x51, 0x43, 0x43, 0xaa, 0x02, 0x17, 0x51, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x56, + 0x31, 0xca, 0x02, 0x17, 0x51, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x5c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x23, 0x51, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0xea, 0x02, 0x1a, 0x51, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x3a, 0x3a, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -3490,8 +3633,8 @@ func file_qdrant_cloud_cluster_v1_cluster_proto_rawDescGZIP() []byte { return file_qdrant_cloud_cluster_v1_cluster_proto_rawDescData } -var file_qdrant_cloud_cluster_v1_cluster_proto_enumTypes = make([]protoimpl.EnumInfo, 7) -var file_qdrant_cloud_cluster_v1_cluster_proto_msgTypes = make([]protoimpl.MessageInfo, 35) +var file_qdrant_cloud_cluster_v1_cluster_proto_enumTypes = make([]protoimpl.EnumInfo, 8) +var file_qdrant_cloud_cluster_v1_cluster_proto_msgTypes = make([]protoimpl.MessageInfo, 36) var file_qdrant_cloud_cluster_v1_cluster_proto_goTypes = []any{ (ClusterConfigurationGpuType)(0), // 0: qdrant.cloud.cluster.v1.ClusterConfigurationGpuType (ClusterConfigurationRestartPolicy)(0), // 1: qdrant.cloud.cluster.v1.ClusterConfigurationRestartPolicy @@ -3500,110 +3643,114 @@ var file_qdrant_cloud_cluster_v1_cluster_proto_goTypes = []any{ (TolerationOperator)(0), // 4: qdrant.cloud.cluster.v1.TolerationOperator (TolerationEffect)(0), // 5: qdrant.cloud.cluster.v1.TolerationEffect (ClusterPhase)(0), // 6: qdrant.cloud.cluster.v1.ClusterPhase - (*ListClustersRequest)(nil), // 7: qdrant.cloud.cluster.v1.ListClustersRequest - (*ListClustersResponse)(nil), // 8: qdrant.cloud.cluster.v1.ListClustersResponse - (*GetClusterRequest)(nil), // 9: qdrant.cloud.cluster.v1.GetClusterRequest - (*GetClusterResponse)(nil), // 10: qdrant.cloud.cluster.v1.GetClusterResponse - (*CreateClusterRequest)(nil), // 11: qdrant.cloud.cluster.v1.CreateClusterRequest - (*CreateClusterResponse)(nil), // 12: qdrant.cloud.cluster.v1.CreateClusterResponse - (*UpdateClusterRequest)(nil), // 13: qdrant.cloud.cluster.v1.UpdateClusterRequest - (*UpdateClusterResponse)(nil), // 14: qdrant.cloud.cluster.v1.UpdateClusterResponse - (*DeleteClusterRequest)(nil), // 15: qdrant.cloud.cluster.v1.DeleteClusterRequest - (*DeleteClusterResponse)(nil), // 16: qdrant.cloud.cluster.v1.DeleteClusterResponse - (*RestartClusterRequest)(nil), // 17: qdrant.cloud.cluster.v1.RestartClusterRequest - (*RestartClusterResponse)(nil), // 18: qdrant.cloud.cluster.v1.RestartClusterResponse - (*SuspendClusterRequest)(nil), // 19: qdrant.cloud.cluster.v1.SuspendClusterRequest - (*SuspendClusterResponse)(nil), // 20: qdrant.cloud.cluster.v1.SuspendClusterResponse - (*SuggestClusterNameRequest)(nil), // 21: qdrant.cloud.cluster.v1.SuggestClusterNameRequest - (*SuggestClusterNameResponse)(nil), // 22: qdrant.cloud.cluster.v1.SuggestClusterNameResponse - (*ListQdrantReleasesRequest)(nil), // 23: qdrant.cloud.cluster.v1.ListQdrantReleasesRequest - (*ListQdrantReleasesResponse)(nil), // 24: qdrant.cloud.cluster.v1.ListQdrantReleasesResponse - (*Cluster)(nil), // 25: qdrant.cloud.cluster.v1.Cluster - (*ClusterConfiguration)(nil), // 26: qdrant.cloud.cluster.v1.ClusterConfiguration - (*DatabaseConfiguration)(nil), // 27: qdrant.cloud.cluster.v1.DatabaseConfiguration - (*DatabaseConfigurationCollection)(nil), // 28: qdrant.cloud.cluster.v1.DatabaseConfigurationCollection - (*DatabaseConfigurationCollectionVectors)(nil), // 29: qdrant.cloud.cluster.v1.DatabaseConfigurationCollectionVectors - (*DatabaseConfigurationStorage)(nil), // 30: qdrant.cloud.cluster.v1.DatabaseConfigurationStorage - (*DatabaseConfigurationStoragePerformance)(nil), // 31: qdrant.cloud.cluster.v1.DatabaseConfigurationStoragePerformance - (*DatabaseConfigurationService)(nil), // 32: qdrant.cloud.cluster.v1.DatabaseConfigurationService - (*DatabaseConfigurationTls)(nil), // 33: qdrant.cloud.cluster.v1.DatabaseConfigurationTls - (*DatabaseConfigurationInference)(nil), // 34: qdrant.cloud.cluster.v1.DatabaseConfigurationInference - (*AdditionalResources)(nil), // 35: qdrant.cloud.cluster.v1.AdditionalResources - (*Toleration)(nil), // 36: qdrant.cloud.cluster.v1.Toleration - (*ClusterState)(nil), // 37: qdrant.cloud.cluster.v1.ClusterState - (*ClusterEndpoint)(nil), // 38: qdrant.cloud.cluster.v1.ClusterEndpoint - (*ClusterNodeResourcesSummary)(nil), // 39: qdrant.cloud.cluster.v1.ClusterNodeResourcesSummary - (*ClusterNodeResources)(nil), // 40: qdrant.cloud.cluster.v1.ClusterNodeResources - (*QdrantRelease)(nil), // 41: qdrant.cloud.cluster.v1.QdrantRelease - (*timestamppb.Timestamp)(nil), // 42: google.protobuf.Timestamp - (*v1.KeyValue)(nil), // 43: qdrant.cloud.common.v1.KeyValue - (*v1.SecretKeyRef)(nil), // 44: qdrant.cloud.common.v1.SecretKeyRef + (ClusterScalabilityStatus)(0), // 7: qdrant.cloud.cluster.v1.ClusterScalabilityStatus + (*ListClustersRequest)(nil), // 8: qdrant.cloud.cluster.v1.ListClustersRequest + (*ListClustersResponse)(nil), // 9: qdrant.cloud.cluster.v1.ListClustersResponse + (*GetClusterRequest)(nil), // 10: qdrant.cloud.cluster.v1.GetClusterRequest + (*GetClusterResponse)(nil), // 11: qdrant.cloud.cluster.v1.GetClusterResponse + (*CreateClusterRequest)(nil), // 12: qdrant.cloud.cluster.v1.CreateClusterRequest + (*CreateClusterResponse)(nil), // 13: qdrant.cloud.cluster.v1.CreateClusterResponse + (*UpdateClusterRequest)(nil), // 14: qdrant.cloud.cluster.v1.UpdateClusterRequest + (*UpdateClusterResponse)(nil), // 15: qdrant.cloud.cluster.v1.UpdateClusterResponse + (*DeleteClusterRequest)(nil), // 16: qdrant.cloud.cluster.v1.DeleteClusterRequest + (*DeleteClusterResponse)(nil), // 17: qdrant.cloud.cluster.v1.DeleteClusterResponse + (*RestartClusterRequest)(nil), // 18: qdrant.cloud.cluster.v1.RestartClusterRequest + (*RestartClusterResponse)(nil), // 19: qdrant.cloud.cluster.v1.RestartClusterResponse + (*SuspendClusterRequest)(nil), // 20: qdrant.cloud.cluster.v1.SuspendClusterRequest + (*SuspendClusterResponse)(nil), // 21: qdrant.cloud.cluster.v1.SuspendClusterResponse + (*SuggestClusterNameRequest)(nil), // 22: qdrant.cloud.cluster.v1.SuggestClusterNameRequest + (*SuggestClusterNameResponse)(nil), // 23: qdrant.cloud.cluster.v1.SuggestClusterNameResponse + (*ListQdrantReleasesRequest)(nil), // 24: qdrant.cloud.cluster.v1.ListQdrantReleasesRequest + (*ListQdrantReleasesResponse)(nil), // 25: qdrant.cloud.cluster.v1.ListQdrantReleasesResponse + (*Cluster)(nil), // 26: qdrant.cloud.cluster.v1.Cluster + (*ClusterConfiguration)(nil), // 27: qdrant.cloud.cluster.v1.ClusterConfiguration + (*DatabaseConfiguration)(nil), // 28: qdrant.cloud.cluster.v1.DatabaseConfiguration + (*DatabaseConfigurationCollection)(nil), // 29: qdrant.cloud.cluster.v1.DatabaseConfigurationCollection + (*DatabaseConfigurationCollectionVectors)(nil), // 30: qdrant.cloud.cluster.v1.DatabaseConfigurationCollectionVectors + (*DatabaseConfigurationStorage)(nil), // 31: qdrant.cloud.cluster.v1.DatabaseConfigurationStorage + (*DatabaseConfigurationStoragePerformance)(nil), // 32: qdrant.cloud.cluster.v1.DatabaseConfigurationStoragePerformance + (*DatabaseConfigurationService)(nil), // 33: qdrant.cloud.cluster.v1.DatabaseConfigurationService + (*DatabaseConfigurationTls)(nil), // 34: qdrant.cloud.cluster.v1.DatabaseConfigurationTls + (*DatabaseConfigurationInference)(nil), // 35: qdrant.cloud.cluster.v1.DatabaseConfigurationInference + (*AdditionalResources)(nil), // 36: qdrant.cloud.cluster.v1.AdditionalResources + (*Toleration)(nil), // 37: qdrant.cloud.cluster.v1.Toleration + (*ClusterState)(nil), // 38: qdrant.cloud.cluster.v1.ClusterState + (*ClusterEndpoint)(nil), // 39: qdrant.cloud.cluster.v1.ClusterEndpoint + (*ClusterNodeResourcesSummary)(nil), // 40: qdrant.cloud.cluster.v1.ClusterNodeResourcesSummary + (*ClusterNodeResources)(nil), // 41: qdrant.cloud.cluster.v1.ClusterNodeResources + (*ClusterScalabilityInfo)(nil), // 42: qdrant.cloud.cluster.v1.ClusterScalabilityInfo + (*QdrantRelease)(nil), // 43: qdrant.cloud.cluster.v1.QdrantRelease + (*timestamppb.Timestamp)(nil), // 44: google.protobuf.Timestamp + (*v1.KeyValue)(nil), // 45: qdrant.cloud.common.v1.KeyValue + (*v1.SecretKeyRef)(nil), // 46: qdrant.cloud.common.v1.SecretKeyRef } var file_qdrant_cloud_cluster_v1_cluster_proto_depIdxs = []int32{ - 25, // 0: qdrant.cloud.cluster.v1.ListClustersResponse.items:type_name -> qdrant.cloud.cluster.v1.Cluster - 25, // 1: qdrant.cloud.cluster.v1.GetClusterResponse.cluster:type_name -> qdrant.cloud.cluster.v1.Cluster - 25, // 2: qdrant.cloud.cluster.v1.CreateClusterRequest.cluster:type_name -> qdrant.cloud.cluster.v1.Cluster - 25, // 3: qdrant.cloud.cluster.v1.CreateClusterResponse.cluster:type_name -> qdrant.cloud.cluster.v1.Cluster - 25, // 4: qdrant.cloud.cluster.v1.UpdateClusterRequest.cluster:type_name -> qdrant.cloud.cluster.v1.Cluster - 25, // 5: qdrant.cloud.cluster.v1.UpdateClusterResponse.cluster:type_name -> qdrant.cloud.cluster.v1.Cluster - 41, // 6: qdrant.cloud.cluster.v1.ListQdrantReleasesResponse.items:type_name -> qdrant.cloud.cluster.v1.QdrantRelease - 42, // 7: qdrant.cloud.cluster.v1.Cluster.created_at:type_name -> google.protobuf.Timestamp - 42, // 8: qdrant.cloud.cluster.v1.Cluster.deleted_at:type_name -> google.protobuf.Timestamp - 26, // 9: qdrant.cloud.cluster.v1.Cluster.configuration:type_name -> qdrant.cloud.cluster.v1.ClusterConfiguration - 37, // 10: qdrant.cloud.cluster.v1.Cluster.state:type_name -> qdrant.cloud.cluster.v1.ClusterState - 42, // 11: qdrant.cloud.cluster.v1.ClusterConfiguration.last_modified_at:type_name -> google.protobuf.Timestamp - 35, // 12: qdrant.cloud.cluster.v1.ClusterConfiguration.additional_resources:type_name -> qdrant.cloud.cluster.v1.AdditionalResources - 27, // 13: qdrant.cloud.cluster.v1.ClusterConfiguration.database_configuration:type_name -> qdrant.cloud.cluster.v1.DatabaseConfiguration - 43, // 14: qdrant.cloud.cluster.v1.ClusterConfiguration.node_selector:type_name -> qdrant.cloud.common.v1.KeyValue - 36, // 15: qdrant.cloud.cluster.v1.ClusterConfiguration.tolerations:type_name -> qdrant.cloud.cluster.v1.Toleration - 43, // 16: qdrant.cloud.cluster.v1.ClusterConfiguration.annotations:type_name -> qdrant.cloud.common.v1.KeyValue + 26, // 0: qdrant.cloud.cluster.v1.ListClustersResponse.items:type_name -> qdrant.cloud.cluster.v1.Cluster + 26, // 1: qdrant.cloud.cluster.v1.GetClusterResponse.cluster:type_name -> qdrant.cloud.cluster.v1.Cluster + 26, // 2: qdrant.cloud.cluster.v1.CreateClusterRequest.cluster:type_name -> qdrant.cloud.cluster.v1.Cluster + 26, // 3: qdrant.cloud.cluster.v1.CreateClusterResponse.cluster:type_name -> qdrant.cloud.cluster.v1.Cluster + 26, // 4: qdrant.cloud.cluster.v1.UpdateClusterRequest.cluster:type_name -> qdrant.cloud.cluster.v1.Cluster + 26, // 5: qdrant.cloud.cluster.v1.UpdateClusterResponse.cluster:type_name -> qdrant.cloud.cluster.v1.Cluster + 43, // 6: qdrant.cloud.cluster.v1.ListQdrantReleasesResponse.items:type_name -> qdrant.cloud.cluster.v1.QdrantRelease + 44, // 7: qdrant.cloud.cluster.v1.Cluster.created_at:type_name -> google.protobuf.Timestamp + 44, // 8: qdrant.cloud.cluster.v1.Cluster.deleted_at:type_name -> google.protobuf.Timestamp + 27, // 9: qdrant.cloud.cluster.v1.Cluster.configuration:type_name -> qdrant.cloud.cluster.v1.ClusterConfiguration + 38, // 10: qdrant.cloud.cluster.v1.Cluster.state:type_name -> qdrant.cloud.cluster.v1.ClusterState + 44, // 11: qdrant.cloud.cluster.v1.ClusterConfiguration.last_modified_at:type_name -> google.protobuf.Timestamp + 36, // 12: qdrant.cloud.cluster.v1.ClusterConfiguration.additional_resources:type_name -> qdrant.cloud.cluster.v1.AdditionalResources + 28, // 13: qdrant.cloud.cluster.v1.ClusterConfiguration.database_configuration:type_name -> qdrant.cloud.cluster.v1.DatabaseConfiguration + 45, // 14: qdrant.cloud.cluster.v1.ClusterConfiguration.node_selector:type_name -> qdrant.cloud.common.v1.KeyValue + 37, // 15: qdrant.cloud.cluster.v1.ClusterConfiguration.tolerations:type_name -> qdrant.cloud.cluster.v1.Toleration + 45, // 16: qdrant.cloud.cluster.v1.ClusterConfiguration.annotations:type_name -> qdrant.cloud.common.v1.KeyValue 0, // 17: qdrant.cloud.cluster.v1.ClusterConfiguration.gpu_type:type_name -> qdrant.cloud.cluster.v1.ClusterConfigurationGpuType 1, // 18: qdrant.cloud.cluster.v1.ClusterConfiguration.restart_policy:type_name -> qdrant.cloud.cluster.v1.ClusterConfigurationRestartPolicy 2, // 19: qdrant.cloud.cluster.v1.ClusterConfiguration.rebalance_strategy:type_name -> qdrant.cloud.cluster.v1.ClusterConfigurationRebalanceStrategy - 28, // 20: qdrant.cloud.cluster.v1.DatabaseConfiguration.collection:type_name -> qdrant.cloud.cluster.v1.DatabaseConfigurationCollection - 30, // 21: qdrant.cloud.cluster.v1.DatabaseConfiguration.storage:type_name -> qdrant.cloud.cluster.v1.DatabaseConfigurationStorage - 32, // 22: qdrant.cloud.cluster.v1.DatabaseConfiguration.service:type_name -> qdrant.cloud.cluster.v1.DatabaseConfigurationService + 29, // 20: qdrant.cloud.cluster.v1.DatabaseConfiguration.collection:type_name -> qdrant.cloud.cluster.v1.DatabaseConfigurationCollection + 31, // 21: qdrant.cloud.cluster.v1.DatabaseConfiguration.storage:type_name -> qdrant.cloud.cluster.v1.DatabaseConfigurationStorage + 33, // 22: qdrant.cloud.cluster.v1.DatabaseConfiguration.service:type_name -> qdrant.cloud.cluster.v1.DatabaseConfigurationService 3, // 23: qdrant.cloud.cluster.v1.DatabaseConfiguration.log_level:type_name -> qdrant.cloud.cluster.v1.DatabaseConfigurationLogLevel - 33, // 24: qdrant.cloud.cluster.v1.DatabaseConfiguration.tls:type_name -> qdrant.cloud.cluster.v1.DatabaseConfigurationTls - 34, // 25: qdrant.cloud.cluster.v1.DatabaseConfiguration.inference:type_name -> qdrant.cloud.cluster.v1.DatabaseConfigurationInference - 29, // 26: qdrant.cloud.cluster.v1.DatabaseConfigurationCollection.vectors:type_name -> qdrant.cloud.cluster.v1.DatabaseConfigurationCollectionVectors - 31, // 27: qdrant.cloud.cluster.v1.DatabaseConfigurationStorage.performance:type_name -> qdrant.cloud.cluster.v1.DatabaseConfigurationStoragePerformance - 44, // 28: qdrant.cloud.cluster.v1.DatabaseConfigurationService.api_key:type_name -> qdrant.cloud.common.v1.SecretKeyRef - 44, // 29: qdrant.cloud.cluster.v1.DatabaseConfigurationService.read_only_api_key:type_name -> qdrant.cloud.common.v1.SecretKeyRef - 44, // 30: qdrant.cloud.cluster.v1.DatabaseConfigurationTls.cert:type_name -> qdrant.cloud.common.v1.SecretKeyRef - 44, // 31: qdrant.cloud.cluster.v1.DatabaseConfigurationTls.key:type_name -> qdrant.cloud.common.v1.SecretKeyRef + 34, // 24: qdrant.cloud.cluster.v1.DatabaseConfiguration.tls:type_name -> qdrant.cloud.cluster.v1.DatabaseConfigurationTls + 35, // 25: qdrant.cloud.cluster.v1.DatabaseConfiguration.inference:type_name -> qdrant.cloud.cluster.v1.DatabaseConfigurationInference + 30, // 26: qdrant.cloud.cluster.v1.DatabaseConfigurationCollection.vectors:type_name -> qdrant.cloud.cluster.v1.DatabaseConfigurationCollectionVectors + 32, // 27: qdrant.cloud.cluster.v1.DatabaseConfigurationStorage.performance:type_name -> qdrant.cloud.cluster.v1.DatabaseConfigurationStoragePerformance + 46, // 28: qdrant.cloud.cluster.v1.DatabaseConfigurationService.api_key:type_name -> qdrant.cloud.common.v1.SecretKeyRef + 46, // 29: qdrant.cloud.cluster.v1.DatabaseConfigurationService.read_only_api_key:type_name -> qdrant.cloud.common.v1.SecretKeyRef + 46, // 30: qdrant.cloud.cluster.v1.DatabaseConfigurationTls.cert:type_name -> qdrant.cloud.common.v1.SecretKeyRef + 46, // 31: qdrant.cloud.cluster.v1.DatabaseConfigurationTls.key:type_name -> qdrant.cloud.common.v1.SecretKeyRef 4, // 32: qdrant.cloud.cluster.v1.Toleration.operator:type_name -> qdrant.cloud.cluster.v1.TolerationOperator 5, // 33: qdrant.cloud.cluster.v1.Toleration.effect:type_name -> qdrant.cloud.cluster.v1.TolerationEffect - 42, // 34: qdrant.cloud.cluster.v1.ClusterState.restarted_at:type_name -> google.protobuf.Timestamp + 44, // 34: qdrant.cloud.cluster.v1.ClusterState.restarted_at:type_name -> google.protobuf.Timestamp 6, // 35: qdrant.cloud.cluster.v1.ClusterState.phase:type_name -> qdrant.cloud.cluster.v1.ClusterPhase - 38, // 36: qdrant.cloud.cluster.v1.ClusterState.endpoint:type_name -> qdrant.cloud.cluster.v1.ClusterEndpoint - 39, // 37: qdrant.cloud.cluster.v1.ClusterState.resources:type_name -> qdrant.cloud.cluster.v1.ClusterNodeResourcesSummary - 40, // 38: qdrant.cloud.cluster.v1.ClusterNodeResourcesSummary.disk:type_name -> qdrant.cloud.cluster.v1.ClusterNodeResources - 40, // 39: qdrant.cloud.cluster.v1.ClusterNodeResourcesSummary.ram:type_name -> qdrant.cloud.cluster.v1.ClusterNodeResources - 40, // 40: qdrant.cloud.cluster.v1.ClusterNodeResourcesSummary.cpu:type_name -> qdrant.cloud.cluster.v1.ClusterNodeResources - 7, // 41: qdrant.cloud.cluster.v1.ClusterService.ListClusters:input_type -> qdrant.cloud.cluster.v1.ListClustersRequest - 9, // 42: qdrant.cloud.cluster.v1.ClusterService.GetCluster:input_type -> qdrant.cloud.cluster.v1.GetClusterRequest - 11, // 43: qdrant.cloud.cluster.v1.ClusterService.CreateCluster:input_type -> qdrant.cloud.cluster.v1.CreateClusterRequest - 13, // 44: qdrant.cloud.cluster.v1.ClusterService.UpdateCluster:input_type -> qdrant.cloud.cluster.v1.UpdateClusterRequest - 15, // 45: qdrant.cloud.cluster.v1.ClusterService.DeleteCluster:input_type -> qdrant.cloud.cluster.v1.DeleteClusterRequest - 17, // 46: qdrant.cloud.cluster.v1.ClusterService.RestartCluster:input_type -> qdrant.cloud.cluster.v1.RestartClusterRequest - 19, // 47: qdrant.cloud.cluster.v1.ClusterService.SuspendCluster:input_type -> qdrant.cloud.cluster.v1.SuspendClusterRequest - 21, // 48: qdrant.cloud.cluster.v1.ClusterService.SuggestClusterName:input_type -> qdrant.cloud.cluster.v1.SuggestClusterNameRequest - 23, // 49: qdrant.cloud.cluster.v1.ClusterService.ListQdrantReleases:input_type -> qdrant.cloud.cluster.v1.ListQdrantReleasesRequest - 8, // 50: qdrant.cloud.cluster.v1.ClusterService.ListClusters:output_type -> qdrant.cloud.cluster.v1.ListClustersResponse - 10, // 51: qdrant.cloud.cluster.v1.ClusterService.GetCluster:output_type -> qdrant.cloud.cluster.v1.GetClusterResponse - 12, // 52: qdrant.cloud.cluster.v1.ClusterService.CreateCluster:output_type -> qdrant.cloud.cluster.v1.CreateClusterResponse - 14, // 53: qdrant.cloud.cluster.v1.ClusterService.UpdateCluster:output_type -> qdrant.cloud.cluster.v1.UpdateClusterResponse - 16, // 54: qdrant.cloud.cluster.v1.ClusterService.DeleteCluster:output_type -> qdrant.cloud.cluster.v1.DeleteClusterResponse - 18, // 55: qdrant.cloud.cluster.v1.ClusterService.RestartCluster:output_type -> qdrant.cloud.cluster.v1.RestartClusterResponse - 20, // 56: qdrant.cloud.cluster.v1.ClusterService.SuspendCluster:output_type -> qdrant.cloud.cluster.v1.SuspendClusterResponse - 22, // 57: qdrant.cloud.cluster.v1.ClusterService.SuggestClusterName:output_type -> qdrant.cloud.cluster.v1.SuggestClusterNameResponse - 24, // 58: qdrant.cloud.cluster.v1.ClusterService.ListQdrantReleases:output_type -> qdrant.cloud.cluster.v1.ListQdrantReleasesResponse - 50, // [50:59] is the sub-list for method output_type - 41, // [41:50] is the sub-list for method input_type - 41, // [41:41] is the sub-list for extension type_name - 41, // [41:41] is the sub-list for extension extendee - 0, // [0:41] is the sub-list for field type_name + 39, // 36: qdrant.cloud.cluster.v1.ClusterState.endpoint:type_name -> qdrant.cloud.cluster.v1.ClusterEndpoint + 40, // 37: qdrant.cloud.cluster.v1.ClusterState.resources:type_name -> qdrant.cloud.cluster.v1.ClusterNodeResourcesSummary + 42, // 38: qdrant.cloud.cluster.v1.ClusterState.scalability_info:type_name -> qdrant.cloud.cluster.v1.ClusterScalabilityInfo + 41, // 39: qdrant.cloud.cluster.v1.ClusterNodeResourcesSummary.disk:type_name -> qdrant.cloud.cluster.v1.ClusterNodeResources + 41, // 40: qdrant.cloud.cluster.v1.ClusterNodeResourcesSummary.ram:type_name -> qdrant.cloud.cluster.v1.ClusterNodeResources + 41, // 41: qdrant.cloud.cluster.v1.ClusterNodeResourcesSummary.cpu:type_name -> qdrant.cloud.cluster.v1.ClusterNodeResources + 7, // 42: qdrant.cloud.cluster.v1.ClusterScalabilityInfo.status:type_name -> qdrant.cloud.cluster.v1.ClusterScalabilityStatus + 8, // 43: qdrant.cloud.cluster.v1.ClusterService.ListClusters:input_type -> qdrant.cloud.cluster.v1.ListClustersRequest + 10, // 44: qdrant.cloud.cluster.v1.ClusterService.GetCluster:input_type -> qdrant.cloud.cluster.v1.GetClusterRequest + 12, // 45: qdrant.cloud.cluster.v1.ClusterService.CreateCluster:input_type -> qdrant.cloud.cluster.v1.CreateClusterRequest + 14, // 46: qdrant.cloud.cluster.v1.ClusterService.UpdateCluster:input_type -> qdrant.cloud.cluster.v1.UpdateClusterRequest + 16, // 47: qdrant.cloud.cluster.v1.ClusterService.DeleteCluster:input_type -> qdrant.cloud.cluster.v1.DeleteClusterRequest + 18, // 48: qdrant.cloud.cluster.v1.ClusterService.RestartCluster:input_type -> qdrant.cloud.cluster.v1.RestartClusterRequest + 20, // 49: qdrant.cloud.cluster.v1.ClusterService.SuspendCluster:input_type -> qdrant.cloud.cluster.v1.SuspendClusterRequest + 22, // 50: qdrant.cloud.cluster.v1.ClusterService.SuggestClusterName:input_type -> qdrant.cloud.cluster.v1.SuggestClusterNameRequest + 24, // 51: qdrant.cloud.cluster.v1.ClusterService.ListQdrantReleases:input_type -> qdrant.cloud.cluster.v1.ListQdrantReleasesRequest + 9, // 52: qdrant.cloud.cluster.v1.ClusterService.ListClusters:output_type -> qdrant.cloud.cluster.v1.ListClustersResponse + 11, // 53: qdrant.cloud.cluster.v1.ClusterService.GetCluster:output_type -> qdrant.cloud.cluster.v1.GetClusterResponse + 13, // 54: qdrant.cloud.cluster.v1.ClusterService.CreateCluster:output_type -> qdrant.cloud.cluster.v1.CreateClusterResponse + 15, // 55: qdrant.cloud.cluster.v1.ClusterService.UpdateCluster:output_type -> qdrant.cloud.cluster.v1.UpdateClusterResponse + 17, // 56: qdrant.cloud.cluster.v1.ClusterService.DeleteCluster:output_type -> qdrant.cloud.cluster.v1.DeleteClusterResponse + 19, // 57: qdrant.cloud.cluster.v1.ClusterService.RestartCluster:output_type -> qdrant.cloud.cluster.v1.RestartClusterResponse + 21, // 58: qdrant.cloud.cluster.v1.ClusterService.SuspendCluster:output_type -> qdrant.cloud.cluster.v1.SuspendClusterResponse + 23, // 59: qdrant.cloud.cluster.v1.ClusterService.SuggestClusterName:output_type -> qdrant.cloud.cluster.v1.SuggestClusterNameResponse + 25, // 60: qdrant.cloud.cluster.v1.ClusterService.ListQdrantReleases:output_type -> qdrant.cloud.cluster.v1.ListQdrantReleasesResponse + 52, // [52:61] is the sub-list for method output_type + 43, // [43:52] is the sub-list for method input_type + 43, // [43:43] is the sub-list for extension type_name + 43, // [43:43] is the sub-list for extension extendee + 0, // [0:43] is the sub-list for field type_name } func init() { file_qdrant_cloud_cluster_v1_cluster_proto_init() } @@ -3621,13 +3768,14 @@ func file_qdrant_cloud_cluster_v1_cluster_proto_init() { file_qdrant_cloud_cluster_v1_cluster_proto_msgTypes[25].OneofWrappers = []any{} file_qdrant_cloud_cluster_v1_cluster_proto_msgTypes[29].OneofWrappers = []any{} file_qdrant_cloud_cluster_v1_cluster_proto_msgTypes[34].OneofWrappers = []any{} + file_qdrant_cloud_cluster_v1_cluster_proto_msgTypes[35].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_qdrant_cloud_cluster_v1_cluster_proto_rawDesc), len(file_qdrant_cloud_cluster_v1_cluster_proto_rawDesc)), - NumEnums: 7, - NumMessages: 35, + NumEnums: 8, + NumMessages: 36, NumExtensions: 0, NumServices: 1, }, diff --git a/gen/openapiv2/qdrant/cloud/cluster/v1/cluster.swagger.json b/gen/openapiv2/qdrant/cloud/cluster/v1/cluster.swagger.json index 2433bfbd..af43fd05 100644 --- a/gen/openapiv2/qdrant/cloud/cluster/v1/cluster.swagger.json +++ b/gen/openapiv2/qdrant/cloud/cluster/v1/cluster.swagger.json @@ -765,6 +765,30 @@ "default": "CLUSTER_PHASE_UNSPECIFIED", "description": "Defines the operational or transitional state of the Qdrant cluster.\n\n - CLUSTER_PHASE_UNSPECIFIED: The phase is unknown or not specified. Should not normally be used.\n - CLUSTER_PHASE_CREATING: The cluster is currently being created.\n - CLUSTER_PHASE_FAILED_TO_CREATE: The cluster creation process failed.\n - CLUSTER_PHASE_UPDATING: The cluster configuration is being updated.\n - CLUSTER_PHASE_FAILED_TO_UPDATE: The cluster update process failed.\n - CLUSTER_PHASE_SCALING: The cluster is undergoing scaling (up or down).\n - CLUSTER_PHASE_UPGRADING: The Qdrant version in the cluster is being upgraded.\n - CLUSTER_PHASE_SUSPENDING: The cluster is in the process of being suspended.\n - CLUSTER_PHASE_SUSPENDED: The cluster is currently suspended (inactive).\n - CLUSTER_PHASE_FAILED_TO_SUSPEND: The cluster suspension process failed.\n - CLUSTER_PHASE_RESUMING: The cluster is resuming from a suspended state.\n - CLUSTER_PHASE_FAILED_TO_RESUME: The cluster resumption process failed.\n - CLUSTER_PHASE_HEALTHY: The cluster is operational and healthy.\n - CLUSTER_PHASE_NOT_READY: The cluster is operational but not all components are ready or healthy.\n - CLUSTER_PHASE_RECOVERY_MODE: The cluster is in recovery mode, potentially after a failure.\n - CLUSTER_PHASE_MANUAL_MAINTENANCE: The cluster is under manual maintenance.\n - CLUSTER_PHASE_FAILED_TO_SYNC: There was an error syncing the cluster in the cloud provider region.\n - CLUSTER_PHASE_NOT_FOUND: The cluster was expected but not found in the cloud provider region." }, + "v1ClusterScalabilityInfo": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/v1ClusterScalabilityStatus", + "description": "The current scalability status of the cluster." + }, + "reason": { + "type": "string", + "description": "Optional human-readable reason providing more context about the scalability status.\nWhen a cluster is not scalable, this field explains why." + } + }, + "title": "ClusterScalabilityInfo provides information about the" + }, + "v1ClusterScalabilityStatus": { + "type": "string", + "enum": [ + "CLUSTER_SCALABILITY_STATUS_UNSPECIFIED", + "CLUSTER_SCALABILITY_STATUS_NOT_SCALABLE", + "CLUSTER_SCALABILITY_STATUS_SCALABLE" + ], + "default": "CLUSTER_SCALABILITY_STATUS_UNSPECIFIED", + "description": "ClusterScalabilityStatus defines the scalability states of a cluster.\n\n - CLUSTER_SCALABILITY_STATUS_UNSPECIFIED: Scalability status is unspecified.\n - CLUSTER_SCALABILITY_STATUS_NOT_SCALABLE: The cluster is not scalable.\n - CLUSTER_SCALABILITY_STATUS_SCALABLE: The cluster supports scaling operations." + }, "v1ClusterState": { "type": "object", "properties": { @@ -797,6 +821,10 @@ "resources": { "$ref": "#/definitions/v1ClusterNodeResourcesSummary", "title": "The resources used by the cluster per node.\nFor the complete cluster you have to multiply by cluster.configuration.number_of_nodes" + }, + "scalabilityInfo": { + "$ref": "#/definitions/v1ClusterScalabilityInfo", + "description": "Whether the cluster can be scaled up or down." } }, "description": "ClusterState represents the current state of a cluster\nAll fields in this message are read-only." diff --git a/gen/python/qdrant/cloud/cluster/v1/cluster_pb2.py b/gen/python/qdrant/cloud/cluster/v1/cluster_pb2.py index ed0f7aee..e29e0eff 100644 --- a/gen/python/qdrant/cloud/cluster/v1/cluster_pb2.py +++ b/gen/python/qdrant/cloud/cluster/v1/cluster_pb2.py @@ -28,7 +28,7 @@ from qdrant.cloud.common.v1 import common_pb2 as qdrant_dot_cloud_dot_common_dot_v1_dot_common__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%qdrant/cloud/cluster/v1/cluster.proto\x12\x17qdrant.cloud.cluster.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a#qdrant/cloud/common/v1/common.proto\"\xf5\x03\n\x13ListClustersRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x38\n\x11\x63loud_provider_id\x18\n \x01(\tB\x07\xbaH\x04r\x02\x10\x03H\x00R\x0f\x63loudProviderId\x88\x01\x01\x12<\n\x18\x63loud_provider_region_id\x18\x0b \x01(\tH\x01R\x15\x63loudProviderRegionId\x88\x01\x01:\x89\x02\xbaH\x85\x02\x1a\x82\x02\n cluster.cloud_provider_region_id\x12Hcloud_provider_region_id must be a UUID if cloud_provider_id is \'hybrid\'\x1a\x93\x01this.cloud_provider_region_id.matches(\'^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$\') || this.cloud_provider_id!= \'hybrid\'B\x14\n\x12_cloud_provider_idB\x1b\n\x19_cloud_provider_region_id\"N\n\x14ListClustersResponse\x12\x36\n\x05items\x18\x01 \x03(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterR\x05items\"e\n\x11GetClusterRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\"P\n\x12GetClusterResponse\x12:\n\x07\x63luster\x18\x01 \x01(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterR\x07\x63luster\"R\n\x14\x43reateClusterRequest\x12:\n\x07\x63luster\x18\x01 \x01(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterR\x07\x63luster\"S\n\x15\x43reateClusterResponse\x12:\n\x07\x63luster\x18\x01 \x01(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterR\x07\x63luster\"R\n\x14UpdateClusterRequest\x12:\n\x07\x63luster\x18\x01 \x01(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterR\x07\x63luster\"S\n\x15UpdateClusterResponse\x12:\n\x07\x63luster\x18\x01 \x01(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterR\x07\x63luster\"\xa7\x01\n\x14\x44\x65leteClusterRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\x12*\n\x0e\x64\x65lete_backups\x18\x03 \x01(\x08H\x00R\rdeleteBackups\x88\x01\x01\x42\x11\n\x0f_delete_backups\"\x17\n\x15\x44\x65leteClusterResponse\"i\n\x15RestartClusterRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\"\x18\n\x16RestartClusterResponse\"i\n\x15SuspendClusterRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\"\x18\n\x16SuspendClusterResponse\"D\n\x19SuggestClusterNameRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"0\n\x1aSuggestClusterNameResponse\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\"\x81\x01\n\x19ListQdrantReleasesRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12,\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\tclusterId\x88\x01\x01\x42\r\n\x0b_cluster_id\"Z\n\x1aListQdrantReleasesResponse\x12<\n\x05items\x18\x01 \x03(\x0b\x32&.qdrant.cloud.cluster.v1.QdrantReleaseR\x05items\"\x9b\x07\n\x07\x43luster\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x39\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\'\n\naccount_id\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12/\n\x04name\x18\x04 \x01(\tB\x1b\xbaH\x18r\x16\x10\x04\x18@2\x10^[a-zA-Z0-9-_]+$R\x04name\x12\x39\n\ndeleted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tdeletedAt\x12\x33\n\x11\x63loud_provider_id\x18\n \x01(\tB\x07\xbaH\x04r\x02\x10\x03R\x0f\x63loudProviderId\x12\x37\n\x18\x63loud_provider_region_id\x18\x0b \x01(\tR\x15\x63loudProviderRegionId\x12S\n\rconfiguration\x18\x14 \x01(\x0b\x32-.qdrant.cloud.cluster.v1.ClusterConfigurationR\rconfiguration\x12;\n\x05state\x18\x64 \x01(\x0b\x32%.qdrant.cloud.cluster.v1.ClusterStateR\x05state:\xaf\x03\xbaH\xab\x03\x1a\xa3\x01\n\ncluster.id\x12\x1avalue must be a valid UUID\x1aythis.id.matches(\'^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$\') || !has(this.created_at)\x1a\x82\x02\n cluster.cloud_provider_region_id\x12Hcloud_provider_region_id must be a UUID if cloud_provider_id is \'hybrid\'\x1a\x93\x01this.cloud_provider_region_id.matches(\'^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$\') || this.cloud_provider_id!= \'hybrid\'\"\xc0\n\n\x14\x43lusterConfiguration\x12\x44\n\x10last_modified_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0elastModifiedAt\x12\x31\n\x0fnumber_of_nodes\x18\x02 \x01(\rB\t\xbaH\x06*\x04\x18\x14(\x01R\rnumberOfNodes\x12\x45\n\x07version\x18\x03 \x01(\tB&\xbaH#r!2\x1f^(v(\\d+)\\.(\\d+)\\.(\\d+)|latest)$H\x00R\x07version\x88\x01\x01\x12\'\n\npackage_id\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tpackageId\x12\x64\n\x14\x61\x64\x64itional_resources\x18\x05 \x01(\x0b\x32,.qdrant.cloud.cluster.v1.AdditionalResourcesH\x01R\x13\x61\x64\x64itionalResources\x88\x01\x01\x12j\n\x16\x64\x61tabase_configuration\x18\x07 \x01(\x0b\x32..qdrant.cloud.cluster.v1.DatabaseConfigurationH\x02R\x15\x64\x61tabaseConfiguration\x88\x01\x01\x12O\n\rnode_selector\x18\x08 \x03(\x0b\x32 .qdrant.cloud.common.v1.KeyValueB\x08\xbaH\x05\x92\x01\x02\x10\nR\x0cnodeSelector\x12O\n\x0btolerations\x18\t \x03(\x0b\x32#.qdrant.cloud.cluster.v1.TolerationB\x08\xbaH\x05\x92\x01\x02\x10\nR\x0btolerations\x12L\n\x0b\x61nnotations\x18\n \x03(\x0b\x32 .qdrant.cloud.common.v1.KeyValueB\x08\xbaH\x05\x92\x01\x02\x10\nR\x0b\x61nnotations\x12H\n\x18\x61llowed_ip_source_ranges\x18\x0b \x03(\tB\x0f\xbaH\x0c\x92\x01\t\x10\x14\"\x05r\x03\xf0\x01\x01R\x15\x61llowedIpSourceRanges\x12\x41\n\x17reserved_cpu_percentage\x18\x14 \x01(\rB\t\xbaH\x06*\x04\x18P(\x00R\x15reservedCpuPercentage\x12G\n\x1areserved_memory_percentage\x18\x15 \x01(\rB\t\xbaH\x06*\x04\x18P(\x00R\x18reservedMemoryPercentage\x12T\n\x08gpu_type\x18\x16 \x01(\x0e\x32\x34.qdrant.cloud.cluster.v1.ClusterConfigurationGpuTypeH\x03R\x07gpuType\x88\x01\x01\x12\x66\n\x0erestart_policy\x18\x17 \x01(\x0e\x32:.qdrant.cloud.cluster.v1.ClusterConfigurationRestartPolicyH\x04R\rrestartPolicy\x88\x01\x01\x12r\n\x12rebalance_strategy\x18\x18 \x01(\x0e\x32>.qdrant.cloud.cluster.v1.ClusterConfigurationRebalanceStrategyH\x05R\x11rebalanceStrategy\x88\x01\x01\x42\n\n\x08_versionB\x17\n\x15_additional_resourcesB\x19\n\x17_database_configurationB\x0b\n\t_gpu_typeB\x11\n\x0f_restart_policyB\x15\n\x13_rebalance_strategy\"\xed\x04\n\x15\x44\x61tabaseConfiguration\x12]\n\ncollection\x18\x01 \x01(\x0b\x32\x38.qdrant.cloud.cluster.v1.DatabaseConfigurationCollectionH\x00R\ncollection\x88\x01\x01\x12T\n\x07storage\x18\x02 \x01(\x0b\x32\x35.qdrant.cloud.cluster.v1.DatabaseConfigurationStorageH\x01R\x07storage\x88\x01\x01\x12T\n\x07service\x18\x03 \x01(\x0b\x32\x35.qdrant.cloud.cluster.v1.DatabaseConfigurationServiceH\x02R\x07service\x88\x01\x01\x12X\n\tlog_level\x18\x04 \x01(\x0e\x32\x36.qdrant.cloud.cluster.v1.DatabaseConfigurationLogLevelH\x03R\x08logLevel\x88\x01\x01\x12H\n\x03tls\x18\x05 \x01(\x0b\x32\x31.qdrant.cloud.cluster.v1.DatabaseConfigurationTlsH\x04R\x03tls\x88\x01\x01\x12Z\n\tinference\x18\x06 \x01(\x0b\x32\x37.qdrant.cloud.cluster.v1.DatabaseConfigurationInferenceH\x05R\tinference\x88\x01\x01\x42\r\n\x0b_collectionB\n\n\x08_storageB\n\n\x08_serviceB\x0c\n\n_log_levelB\x06\n\x04_tlsB\x0c\n\n_inference\"\x81\x02\n\x1f\x44\x61tabaseConfigurationCollection\x12\x32\n\x12replication_factor\x18\x01 \x01(\rH\x00R\x11replicationFactor\x88\x01\x01\x12\x38\n\x18write_consistency_factor\x18\x02 \x01(\x05R\x16writeConsistencyFactor\x12Y\n\x07vectors\x18\x03 \x01(\x0b\x32?.qdrant.cloud.cluster.v1.DatabaseConfigurationCollectionVectorsR\x07vectorsB\x15\n\x13_replication_factor\"R\n&DatabaseConfigurationCollectionVectors\x12\x1c\n\x07on_disk\x18\x01 \x01(\x08H\x00R\x06onDisk\x88\x01\x01\x42\n\n\x08_on_disk\"\x82\x01\n\x1c\x44\x61tabaseConfigurationStorage\x12\x62\n\x0bperformance\x18\x01 \x01(\x0b\x32@.qdrant.cloud.cluster.v1.DatabaseConfigurationStoragePerformanceR\x0bperformance\"~\n\'DatabaseConfigurationStoragePerformance\x12\x30\n\x14optimizer_cpu_budget\x18\x01 \x01(\x05R\x12optimizerCpuBudget\x12!\n\x0c\x61sync_scorer\x18\x02 \x01(\x08R\x0b\x61syncScorer\"\x94\x02\n\x1c\x44\x61tabaseConfigurationService\x12\x42\n\x07\x61pi_key\x18\x01 \x01(\x0b\x32$.qdrant.cloud.common.v1.SecretKeyRefH\x00R\x06\x61piKey\x88\x01\x01\x12T\n\x11read_only_api_key\x18\x02 \x01(\x0b\x32$.qdrant.cloud.common.v1.SecretKeyRefH\x01R\x0ereadOnlyApiKey\x88\x01\x01\x12\x19\n\x08jwt_rbac\x18\x03 \x01(\x08R\x07jwtRbac\x12\x1d\n\nenable_tls\x18\x04 \x01(\x08R\tenableTlsB\n\n\x08_api_keyB\x14\n\x12_read_only_api_key\"\x8c\x01\n\x18\x44\x61tabaseConfigurationTls\x12\x38\n\x04\x63\x65rt\x18\x01 \x01(\x0b\x32$.qdrant.cloud.common.v1.SecretKeyRefR\x04\x63\x65rt\x12\x36\n\x03key\x18\x02 \x01(\x0b\x32$.qdrant.cloud.common.v1.SecretKeyRefR\x03key\":\n\x1e\x44\x61tabaseConfigurationInference\x12\x18\n\x07\x65nabled\x18\x01 \x01(\x08R\x07\x65nabled\")\n\x13\x41\x64\x64itionalResources\x12\x12\n\x04\x64isk\x18\x03 \x01(\rR\x04\x64isk\"\xee\x02\n\nToleration\x12H\n\x03key\x18\x01 \x01(\tB6\xbaH3r1\x18?2-^([a-zA-Z0-9]([-a-zA-Z0-9_.]*[a-zA-Z0-9])?)?$R\x03key\x12L\n\x08operator\x18\x02 \x01(\x0e\x32+.qdrant.cloud.cluster.v1.TolerationOperatorH\x00R\x08operator\x88\x01\x01\x12\x14\n\x05value\x18\x03 \x01(\tR\x05value\x12\x46\n\x06\x65\x66\x66\x65\x63t\x18\x04 \x01(\x0e\x32).qdrant.cloud.cluster.v1.TolerationEffectH\x01R\x06\x65\x66\x66\x65\x63t\x88\x01\x01\x12;\n\x12toleration_seconds\x18\x05 \x01(\x04\x42\x07\xbaH\x04\x32\x02(\x00H\x02R\x11tolerationSeconds\x88\x01\x01\x42\x0b\n\t_operatorB\t\n\x07_effectB\x15\n\x13_toleration_seconds\"\xf1\x02\n\x0c\x43lusterState\x12\x18\n\x07version\x18\x01 \x01(\tR\x07version\x12\x19\n\x08nodes_up\x18\x02 \x01(\rR\x07nodesUp\x12=\n\x0crestarted_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0brestartedAt\x12;\n\x05phase\x18\x04 \x01(\x0e\x32%.qdrant.cloud.cluster.v1.ClusterPhaseR\x05phase\x12\x16\n\x06reason\x18\x05 \x01(\tR\x06reason\x12\x44\n\x08\x65ndpoint\x18\x06 \x01(\x0b\x32(.qdrant.cloud.cluster.v1.ClusterEndpointR\x08\x65ndpoint\x12R\n\tresources\x18\x07 \x01(\x0b\x32\x34.qdrant.cloud.cluster.v1.ClusterNodeResourcesSummaryR\tresources\"g\n\x0f\x43lusterEndpoint\x12\x1a\n\x03url\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xa8\x01\x01R\x03url\x12\x1b\n\trest_port\x18\x02 \x01(\x05R\x08restPort\x12\x1b\n\tgrpc_port\x18\x03 \x01(\x05R\x08grpcPort\"\xe2\x01\n\x1b\x43lusterNodeResourcesSummary\x12\x41\n\x04\x64isk\x18\x01 \x01(\x0b\x32-.qdrant.cloud.cluster.v1.ClusterNodeResourcesR\x04\x64isk\x12?\n\x03ram\x18\x02 \x01(\x0b\x32-.qdrant.cloud.cluster.v1.ClusterNodeResourcesR\x03ram\x12?\n\x03\x63pu\x18\x03 \x01(\x0b\x32-.qdrant.cloud.cluster.v1.ClusterNodeResourcesR\x03\x63pu\"\xaa\x01\n\x14\x43lusterNodeResources\x12\x12\n\x04\x62\x61se\x18\x01 \x01(\x01R\x04\x62\x61se\x12$\n\rcomplimentary\x18\x02 \x01(\x01R\rcomplimentary\x12\x1e\n\nadditional\x18\x03 \x01(\x01R\nadditional\x12\x1a\n\x08reserved\x18\x04 \x01(\x01R\x08reserved\x12\x1c\n\tavailable\x18\x05 \x01(\x01R\tavailable\"\xf7\x01\n\rQdrantRelease\x12\x18\n\x07version\x18\x01 \x01(\tR\x07version\x12\x18\n\x07\x64\x65\x66\x61ult\x18\x02 \x01(\x08R\x07\x64\x65\x66\x61ult\x12/\n\x11release_notes_url\x18\x03 \x01(\tH\x00R\x0freleaseNotesUrl\x88\x01\x01\x12\x1d\n\x07remarks\x18\x04 \x01(\tH\x01R\x07remarks\x88\x01\x01\x12\x1e\n\x0b\x65nd_of_life\x18\x05 \x01(\x08R\tendOfLife\x12 \n\x0bunavailable\x18\x06 \x01(\x08R\x0bunavailableB\x14\n\x12_release_notes_urlB\n\n\x08_remarks*\xa0\x01\n\x1b\x43lusterConfigurationGpuType\x12.\n*CLUSTER_CONFIGURATION_GPU_TYPE_UNSPECIFIED\x10\x00\x12)\n%CLUSTER_CONFIGURATION_GPU_TYPE_NVIDIA\x10\x01\x12&\n\"CLUSTER_CONFIGURATION_GPU_TYPE_AMD\x10\x02*\xf2\x01\n!ClusterConfigurationRestartPolicy\x12\x34\n0CLUSTER_CONFIGURATION_RESTART_POLICY_UNSPECIFIED\x10\x00\x12\x30\n,CLUSTER_CONFIGURATION_RESTART_POLICY_ROLLING\x10\x01\x12\x31\n-CLUSTER_CONFIGURATION_RESTART_POLICY_PARALLEL\x10\x02\x12\x32\n.CLUSTER_CONFIGURATION_RESTART_POLICY_AUTOMATIC\x10\x03*\x8e\x02\n%ClusterConfigurationRebalanceStrategy\x12\x38\n4CLUSTER_CONFIGURATION_REBALANCE_STRATEGY_UNSPECIFIED\x10\x00\x12\x35\n1CLUSTER_CONFIGURATION_REBALANCE_STRATEGY_BY_COUNT\x10\x01\x12\x34\n0CLUSTER_CONFIGURATION_REBALANCE_STRATEGY_BY_SIZE\x10\x02\x12>\n:CLUSTER_CONFIGURATION_REBALANCE_STRATEGY_BY_COUNT_AND_SIZE\x10\x03*\xd5\x02\n\x1d\x44\x61tabaseConfigurationLogLevel\x12\x30\n,DATABASE_CONFIGURATION_LOG_LEVEL_UNSPECIFIED\x10\x00\x12*\n&DATABASE_CONFIGURATION_LOG_LEVEL_TRACE\x10\x01\x12*\n&DATABASE_CONFIGURATION_LOG_LEVEL_DEBUG\x10\x02\x12)\n%DATABASE_CONFIGURATION_LOG_LEVEL_INFO\x10\x03\x12)\n%DATABASE_CONFIGURATION_LOG_LEVEL_WARN\x10\x04\x12*\n&DATABASE_CONFIGURATION_LOG_LEVEL_ERROR\x10\x05\x12(\n$DATABASE_CONFIGURATION_LOG_LEVEL_OFF\x10\x06*x\n\x12TolerationOperator\x12#\n\x1fTOLERATION_OPERATOR_UNSPECIFIED\x10\x00\x12\x1e\n\x1aTOLERATION_OPERATOR_EXISTS\x10\x01\x12\x1d\n\x19TOLERATION_OPERATOR_EQUAL\x10\x02*\xa4\x01\n\x10TolerationEffect\x12!\n\x1dTOLERATION_EFFECT_UNSPECIFIED\x10\x00\x12!\n\x1dTOLERATION_EFFECT_NO_SCHEDULE\x10\x01\x12(\n$TOLERATION_EFFECT_PREFER_NO_SCHEDULE\x10\x02\x12 \n\x1cTOLERATION_EFFECT_NO_EXECUTE\x10\x03*\xc3\x04\n\x0c\x43lusterPhase\x12\x1d\n\x19\x43LUSTER_PHASE_UNSPECIFIED\x10\x00\x12\x1a\n\x16\x43LUSTER_PHASE_CREATING\x10\x01\x12\"\n\x1e\x43LUSTER_PHASE_FAILED_TO_CREATE\x10\x02\x12\x1a\n\x16\x43LUSTER_PHASE_UPDATING\x10\x03\x12\"\n\x1e\x43LUSTER_PHASE_FAILED_TO_UPDATE\x10\x04\x12\x19\n\x15\x43LUSTER_PHASE_SCALING\x10\x05\x12\x1b\n\x17\x43LUSTER_PHASE_UPGRADING\x10\x06\x12\x1c\n\x18\x43LUSTER_PHASE_SUSPENDING\x10\x07\x12\x1b\n\x17\x43LUSTER_PHASE_SUSPENDED\x10\x08\x12#\n\x1f\x43LUSTER_PHASE_FAILED_TO_SUSPEND\x10\t\x12\x1a\n\x16\x43LUSTER_PHASE_RESUMING\x10\n\x12\"\n\x1e\x43LUSTER_PHASE_FAILED_TO_RESUME\x10\x0b\x12\x19\n\x15\x43LUSTER_PHASE_HEALTHY\x10\x0c\x12\x1b\n\x17\x43LUSTER_PHASE_NOT_READY\x10\r\x12\x1f\n\x1b\x43LUSTER_PHASE_RECOVERY_MODE\x10\x0e\x12$\n CLUSTER_PHASE_MANUAL_MAINTENANCE\x10\x0f\x12 \n\x1c\x43LUSTER_PHASE_FAILED_TO_SYNC\x10\x10\x12\x1b\n\x17\x43LUSTER_PHASE_NOT_FOUND\x10\x11\x32\xcb\x0e\n\x0e\x43lusterService\x12\xb4\x01\n\x0cListClusters\x12,.qdrant.cloud.cluster.v1.ListClustersRequest\x1a-.qdrant.cloud.cluster.v1.ListClustersResponse\"G\x8a\xb5\x18\rread:clusters\x82\xd3\xe4\x93\x02\x30\x12./api/cluster/v1/accounts/{account_id}/clusters\x12\xbb\x01\n\nGetCluster\x12*.qdrant.cloud.cluster.v1.GetClusterRequest\x1a+.qdrant.cloud.cluster.v1.GetClusterResponse\"T\x8a\xb5\x18\rread:clusters\x82\xd3\xe4\x93\x02=\x12;/api/cluster/v1/accounts/{account_id}/clusters/{cluster_id}\x12\xd9\x01\n\rCreateCluster\x12-.qdrant.cloud.cluster.v1.CreateClusterRequest\x1a..qdrant.cloud.cluster.v1.CreateClusterResponse\"i\x8a\xb5\x18\x0ewrite:clusters\x92\xb5\x18\x12\x63luster.account_id\x82\xd3\xe4\x93\x02;\"6/api/cluster/v1/accounts/{cluster.account_id}/clusters:\x01*\x12\xe6\x01\n\rUpdateCluster\x12-.qdrant.cloud.cluster.v1.UpdateClusterRequest\x1a..qdrant.cloud.cluster.v1.UpdateClusterResponse\"v\x8a\xb5\x18\x0ewrite:clusters\x92\xb5\x18\x12\x63luster.account_id\x82\xd3\xe4\x93\x02H\x1a\x43/api/cluster/v1/accounts/{cluster.account_id}/clusters/{cluster.id}:\x01*\x12\xc6\x01\n\rDeleteCluster\x12-.qdrant.cloud.cluster.v1.DeleteClusterRequest\x1a..qdrant.cloud.cluster.v1.DeleteClusterResponse\"V\x8a\xb5\x18\x0f\x64\x65lete:clusters\x82\xd3\xe4\x93\x02=*;/api/cluster/v1/accounts/{account_id}/clusters/{cluster_id}\x12\xd0\x01\n\x0eRestartCluster\x12..qdrant.cloud.cluster.v1.RestartClusterRequest\x1a/.qdrant.cloud.cluster.v1.RestartClusterResponse\"]\x8a\xb5\x18\x0ewrite:clusters\x82\xd3\xe4\x93\x02\x45\"C/api/cluster/v1/accounts/{account_id}/clusters/{cluster_id}/restart\x12\xd0\x01\n\x0eSuspendCluster\x12..qdrant.cloud.cluster.v1.SuspendClusterRequest\x1a/.qdrant.cloud.cluster.v1.SuspendClusterResponse\"]\x8a\xb5\x18\x0ewrite:clusters\x82\xd3\xe4\x93\x02\x45\"C/api/cluster/v1/accounts/{account_id}/clusters/{cluster_id}/suspend\x12\xc6\x01\n\x12SuggestClusterName\x12\x32.qdrant.cloud.cluster.v1.SuggestClusterNameRequest\x1a\x33.qdrant.cloud.cluster.v1.SuggestClusterNameResponse\"G\x8a\xb5\x18\x00\x82\xd3\xe4\x93\x02=\x12;/api/cluster/v1/accounts/{account_id}/clusters/suggest-name\x12\xc6\x01\n\x12ListQdrantReleases\x12\x32.qdrant.cloud.cluster.v1.ListQdrantReleasesRequest\x1a\x33.qdrant.cloud.cluster.v1.ListQdrantReleasesResponse\"G\x8a\xb5\x18\rread:clusters\x82\xd3\xe4\x93\x02\x30\x12./api/cluster/v1/accounts/{account_id}/releasesB\xfe\x01\n\x1b\x63om.qdrant.cloud.cluster.v1B\x0c\x43lusterProtoP\x01ZRgithub.com/qdrant/qdrant-cloud-public-api/gen/go/qdrant/cloud/cluster/v1;clusterv1\xa2\x02\x03QCC\xaa\x02\x17Qdrant.Cloud.Cluster.V1\xca\x02\x17Qdrant\\Cloud\\Cluster\\V1\xe2\x02#Qdrant\\Cloud\\Cluster\\V1\\GPBMetadata\xea\x02\x1aQdrant::Cloud::Cluster::V1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%qdrant/cloud/cluster/v1/cluster.proto\x12\x17qdrant.cloud.cluster.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a#qdrant/cloud/common/v1/common.proto\"\xf5\x03\n\x13ListClustersRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x38\n\x11\x63loud_provider_id\x18\n \x01(\tB\x07\xbaH\x04r\x02\x10\x03H\x00R\x0f\x63loudProviderId\x88\x01\x01\x12<\n\x18\x63loud_provider_region_id\x18\x0b \x01(\tH\x01R\x15\x63loudProviderRegionId\x88\x01\x01:\x89\x02\xbaH\x85\x02\x1a\x82\x02\n cluster.cloud_provider_region_id\x12Hcloud_provider_region_id must be a UUID if cloud_provider_id is \'hybrid\'\x1a\x93\x01this.cloud_provider_region_id.matches(\'^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$\') || this.cloud_provider_id!= \'hybrid\'B\x14\n\x12_cloud_provider_idB\x1b\n\x19_cloud_provider_region_id\"N\n\x14ListClustersResponse\x12\x36\n\x05items\x18\x01 \x03(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterR\x05items\"e\n\x11GetClusterRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\"P\n\x12GetClusterResponse\x12:\n\x07\x63luster\x18\x01 \x01(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterR\x07\x63luster\"R\n\x14\x43reateClusterRequest\x12:\n\x07\x63luster\x18\x01 \x01(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterR\x07\x63luster\"S\n\x15\x43reateClusterResponse\x12:\n\x07\x63luster\x18\x01 \x01(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterR\x07\x63luster\"R\n\x14UpdateClusterRequest\x12:\n\x07\x63luster\x18\x01 \x01(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterR\x07\x63luster\"S\n\x15UpdateClusterResponse\x12:\n\x07\x63luster\x18\x01 \x01(\x0b\x32 .qdrant.cloud.cluster.v1.ClusterR\x07\x63luster\"\xa7\x01\n\x14\x44\x65leteClusterRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\x12*\n\x0e\x64\x65lete_backups\x18\x03 \x01(\x08H\x00R\rdeleteBackups\x88\x01\x01\x42\x11\n\x0f_delete_backups\"\x17\n\x15\x44\x65leteClusterResponse\"i\n\x15RestartClusterRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\"\x18\n\x16RestartClusterResponse\"i\n\x15SuspendClusterRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\'\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tclusterId\"\x18\n\x16SuspendClusterResponse\"D\n\x19SuggestClusterNameRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"0\n\x1aSuggestClusterNameResponse\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\"\x81\x01\n\x19ListQdrantReleasesRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12,\n\ncluster_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\tclusterId\x88\x01\x01\x42\r\n\x0b_cluster_id\"Z\n\x1aListQdrantReleasesResponse\x12<\n\x05items\x18\x01 \x03(\x0b\x32&.qdrant.cloud.cluster.v1.QdrantReleaseR\x05items\"\x9b\x07\n\x07\x43luster\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x39\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\'\n\naccount_id\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12/\n\x04name\x18\x04 \x01(\tB\x1b\xbaH\x18r\x16\x10\x04\x18@2\x10^[a-zA-Z0-9-_]+$R\x04name\x12\x39\n\ndeleted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tdeletedAt\x12\x33\n\x11\x63loud_provider_id\x18\n \x01(\tB\x07\xbaH\x04r\x02\x10\x03R\x0f\x63loudProviderId\x12\x37\n\x18\x63loud_provider_region_id\x18\x0b \x01(\tR\x15\x63loudProviderRegionId\x12S\n\rconfiguration\x18\x14 \x01(\x0b\x32-.qdrant.cloud.cluster.v1.ClusterConfigurationR\rconfiguration\x12;\n\x05state\x18\x64 \x01(\x0b\x32%.qdrant.cloud.cluster.v1.ClusterStateR\x05state:\xaf\x03\xbaH\xab\x03\x1a\xa3\x01\n\ncluster.id\x12\x1avalue must be a valid UUID\x1aythis.id.matches(\'^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$\') || !has(this.created_at)\x1a\x82\x02\n cluster.cloud_provider_region_id\x12Hcloud_provider_region_id must be a UUID if cloud_provider_id is \'hybrid\'\x1a\x93\x01this.cloud_provider_region_id.matches(\'^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$\') || this.cloud_provider_id!= \'hybrid\'\"\xc0\n\n\x14\x43lusterConfiguration\x12\x44\n\x10last_modified_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0elastModifiedAt\x12\x31\n\x0fnumber_of_nodes\x18\x02 \x01(\rB\t\xbaH\x06*\x04\x18\x14(\x01R\rnumberOfNodes\x12\x45\n\x07version\x18\x03 \x01(\tB&\xbaH#r!2\x1f^(v(\\d+)\\.(\\d+)\\.(\\d+)|latest)$H\x00R\x07version\x88\x01\x01\x12\'\n\npackage_id\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\tpackageId\x12\x64\n\x14\x61\x64\x64itional_resources\x18\x05 \x01(\x0b\x32,.qdrant.cloud.cluster.v1.AdditionalResourcesH\x01R\x13\x61\x64\x64itionalResources\x88\x01\x01\x12j\n\x16\x64\x61tabase_configuration\x18\x07 \x01(\x0b\x32..qdrant.cloud.cluster.v1.DatabaseConfigurationH\x02R\x15\x64\x61tabaseConfiguration\x88\x01\x01\x12O\n\rnode_selector\x18\x08 \x03(\x0b\x32 .qdrant.cloud.common.v1.KeyValueB\x08\xbaH\x05\x92\x01\x02\x10\nR\x0cnodeSelector\x12O\n\x0btolerations\x18\t \x03(\x0b\x32#.qdrant.cloud.cluster.v1.TolerationB\x08\xbaH\x05\x92\x01\x02\x10\nR\x0btolerations\x12L\n\x0b\x61nnotations\x18\n \x03(\x0b\x32 .qdrant.cloud.common.v1.KeyValueB\x08\xbaH\x05\x92\x01\x02\x10\nR\x0b\x61nnotations\x12H\n\x18\x61llowed_ip_source_ranges\x18\x0b \x03(\tB\x0f\xbaH\x0c\x92\x01\t\x10\x14\"\x05r\x03\xf0\x01\x01R\x15\x61llowedIpSourceRanges\x12\x41\n\x17reserved_cpu_percentage\x18\x14 \x01(\rB\t\xbaH\x06*\x04\x18P(\x00R\x15reservedCpuPercentage\x12G\n\x1areserved_memory_percentage\x18\x15 \x01(\rB\t\xbaH\x06*\x04\x18P(\x00R\x18reservedMemoryPercentage\x12T\n\x08gpu_type\x18\x16 \x01(\x0e\x32\x34.qdrant.cloud.cluster.v1.ClusterConfigurationGpuTypeH\x03R\x07gpuType\x88\x01\x01\x12\x66\n\x0erestart_policy\x18\x17 \x01(\x0e\x32:.qdrant.cloud.cluster.v1.ClusterConfigurationRestartPolicyH\x04R\rrestartPolicy\x88\x01\x01\x12r\n\x12rebalance_strategy\x18\x18 \x01(\x0e\x32>.qdrant.cloud.cluster.v1.ClusterConfigurationRebalanceStrategyH\x05R\x11rebalanceStrategy\x88\x01\x01\x42\n\n\x08_versionB\x17\n\x15_additional_resourcesB\x19\n\x17_database_configurationB\x0b\n\t_gpu_typeB\x11\n\x0f_restart_policyB\x15\n\x13_rebalance_strategy\"\xed\x04\n\x15\x44\x61tabaseConfiguration\x12]\n\ncollection\x18\x01 \x01(\x0b\x32\x38.qdrant.cloud.cluster.v1.DatabaseConfigurationCollectionH\x00R\ncollection\x88\x01\x01\x12T\n\x07storage\x18\x02 \x01(\x0b\x32\x35.qdrant.cloud.cluster.v1.DatabaseConfigurationStorageH\x01R\x07storage\x88\x01\x01\x12T\n\x07service\x18\x03 \x01(\x0b\x32\x35.qdrant.cloud.cluster.v1.DatabaseConfigurationServiceH\x02R\x07service\x88\x01\x01\x12X\n\tlog_level\x18\x04 \x01(\x0e\x32\x36.qdrant.cloud.cluster.v1.DatabaseConfigurationLogLevelH\x03R\x08logLevel\x88\x01\x01\x12H\n\x03tls\x18\x05 \x01(\x0b\x32\x31.qdrant.cloud.cluster.v1.DatabaseConfigurationTlsH\x04R\x03tls\x88\x01\x01\x12Z\n\tinference\x18\x06 \x01(\x0b\x32\x37.qdrant.cloud.cluster.v1.DatabaseConfigurationInferenceH\x05R\tinference\x88\x01\x01\x42\r\n\x0b_collectionB\n\n\x08_storageB\n\n\x08_serviceB\x0c\n\n_log_levelB\x06\n\x04_tlsB\x0c\n\n_inference\"\x81\x02\n\x1f\x44\x61tabaseConfigurationCollection\x12\x32\n\x12replication_factor\x18\x01 \x01(\rH\x00R\x11replicationFactor\x88\x01\x01\x12\x38\n\x18write_consistency_factor\x18\x02 \x01(\x05R\x16writeConsistencyFactor\x12Y\n\x07vectors\x18\x03 \x01(\x0b\x32?.qdrant.cloud.cluster.v1.DatabaseConfigurationCollectionVectorsR\x07vectorsB\x15\n\x13_replication_factor\"R\n&DatabaseConfigurationCollectionVectors\x12\x1c\n\x07on_disk\x18\x01 \x01(\x08H\x00R\x06onDisk\x88\x01\x01\x42\n\n\x08_on_disk\"\x82\x01\n\x1c\x44\x61tabaseConfigurationStorage\x12\x62\n\x0bperformance\x18\x01 \x01(\x0b\x32@.qdrant.cloud.cluster.v1.DatabaseConfigurationStoragePerformanceR\x0bperformance\"~\n\'DatabaseConfigurationStoragePerformance\x12\x30\n\x14optimizer_cpu_budget\x18\x01 \x01(\x05R\x12optimizerCpuBudget\x12!\n\x0c\x61sync_scorer\x18\x02 \x01(\x08R\x0b\x61syncScorer\"\x94\x02\n\x1c\x44\x61tabaseConfigurationService\x12\x42\n\x07\x61pi_key\x18\x01 \x01(\x0b\x32$.qdrant.cloud.common.v1.SecretKeyRefH\x00R\x06\x61piKey\x88\x01\x01\x12T\n\x11read_only_api_key\x18\x02 \x01(\x0b\x32$.qdrant.cloud.common.v1.SecretKeyRefH\x01R\x0ereadOnlyApiKey\x88\x01\x01\x12\x19\n\x08jwt_rbac\x18\x03 \x01(\x08R\x07jwtRbac\x12\x1d\n\nenable_tls\x18\x04 \x01(\x08R\tenableTlsB\n\n\x08_api_keyB\x14\n\x12_read_only_api_key\"\x8c\x01\n\x18\x44\x61tabaseConfigurationTls\x12\x38\n\x04\x63\x65rt\x18\x01 \x01(\x0b\x32$.qdrant.cloud.common.v1.SecretKeyRefR\x04\x63\x65rt\x12\x36\n\x03key\x18\x02 \x01(\x0b\x32$.qdrant.cloud.common.v1.SecretKeyRefR\x03key\":\n\x1e\x44\x61tabaseConfigurationInference\x12\x18\n\x07\x65nabled\x18\x01 \x01(\x08R\x07\x65nabled\")\n\x13\x41\x64\x64itionalResources\x12\x12\n\x04\x64isk\x18\x03 \x01(\rR\x04\x64isk\"\xee\x02\n\nToleration\x12H\n\x03key\x18\x01 \x01(\tB6\xbaH3r1\x18?2-^([a-zA-Z0-9]([-a-zA-Z0-9_.]*[a-zA-Z0-9])?)?$R\x03key\x12L\n\x08operator\x18\x02 \x01(\x0e\x32+.qdrant.cloud.cluster.v1.TolerationOperatorH\x00R\x08operator\x88\x01\x01\x12\x14\n\x05value\x18\x03 \x01(\tR\x05value\x12\x46\n\x06\x65\x66\x66\x65\x63t\x18\x04 \x01(\x0e\x32).qdrant.cloud.cluster.v1.TolerationEffectH\x01R\x06\x65\x66\x66\x65\x63t\x88\x01\x01\x12;\n\x12toleration_seconds\x18\x05 \x01(\x04\x42\x07\xbaH\x04\x32\x02(\x00H\x02R\x11tolerationSeconds\x88\x01\x01\x42\x0b\n\t_operatorB\t\n\x07_effectB\x15\n\x13_toleration_seconds\"\xcd\x03\n\x0c\x43lusterState\x12\x18\n\x07version\x18\x01 \x01(\tR\x07version\x12\x19\n\x08nodes_up\x18\x02 \x01(\rR\x07nodesUp\x12=\n\x0crestarted_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0brestartedAt\x12;\n\x05phase\x18\x04 \x01(\x0e\x32%.qdrant.cloud.cluster.v1.ClusterPhaseR\x05phase\x12\x16\n\x06reason\x18\x05 \x01(\tR\x06reason\x12\x44\n\x08\x65ndpoint\x18\x06 \x01(\x0b\x32(.qdrant.cloud.cluster.v1.ClusterEndpointR\x08\x65ndpoint\x12R\n\tresources\x18\x07 \x01(\x0b\x32\x34.qdrant.cloud.cluster.v1.ClusterNodeResourcesSummaryR\tresources\x12Z\n\x10scalability_info\x18\x08 \x01(\x0b\x32/.qdrant.cloud.cluster.v1.ClusterScalabilityInfoR\x0fscalabilityInfo\"g\n\x0f\x43lusterEndpoint\x12\x1a\n\x03url\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xa8\x01\x01R\x03url\x12\x1b\n\trest_port\x18\x02 \x01(\x05R\x08restPort\x12\x1b\n\tgrpc_port\x18\x03 \x01(\x05R\x08grpcPort\"\xe2\x01\n\x1b\x43lusterNodeResourcesSummary\x12\x41\n\x04\x64isk\x18\x01 \x01(\x0b\x32-.qdrant.cloud.cluster.v1.ClusterNodeResourcesR\x04\x64isk\x12?\n\x03ram\x18\x02 \x01(\x0b\x32-.qdrant.cloud.cluster.v1.ClusterNodeResourcesR\x03ram\x12?\n\x03\x63pu\x18\x03 \x01(\x0b\x32-.qdrant.cloud.cluster.v1.ClusterNodeResourcesR\x03\x63pu\"\xaa\x01\n\x14\x43lusterNodeResources\x12\x12\n\x04\x62\x61se\x18\x01 \x01(\x01R\x04\x62\x61se\x12$\n\rcomplimentary\x18\x02 \x01(\x01R\rcomplimentary\x12\x1e\n\nadditional\x18\x03 \x01(\x01R\nadditional\x12\x1a\n\x08reserved\x18\x04 \x01(\x01R\x08reserved\x12\x1c\n\tavailable\x18\x05 \x01(\x01R\tavailable\"\x8b\x01\n\x16\x43lusterScalabilityInfo\x12I\n\x06status\x18\x01 \x01(\x0e\x32\x31.qdrant.cloud.cluster.v1.ClusterScalabilityStatusR\x06status\x12\x1b\n\x06reason\x18\x02 \x01(\tH\x00R\x06reason\x88\x01\x01\x42\t\n\x07_reason\"\xf7\x01\n\rQdrantRelease\x12\x18\n\x07version\x18\x01 \x01(\tR\x07version\x12\x18\n\x07\x64\x65\x66\x61ult\x18\x02 \x01(\x08R\x07\x64\x65\x66\x61ult\x12/\n\x11release_notes_url\x18\x03 \x01(\tH\x00R\x0freleaseNotesUrl\x88\x01\x01\x12\x1d\n\x07remarks\x18\x04 \x01(\tH\x01R\x07remarks\x88\x01\x01\x12\x1e\n\x0b\x65nd_of_life\x18\x05 \x01(\x08R\tendOfLife\x12 \n\x0bunavailable\x18\x06 \x01(\x08R\x0bunavailableB\x14\n\x12_release_notes_urlB\n\n\x08_remarks*\xa0\x01\n\x1b\x43lusterConfigurationGpuType\x12.\n*CLUSTER_CONFIGURATION_GPU_TYPE_UNSPECIFIED\x10\x00\x12)\n%CLUSTER_CONFIGURATION_GPU_TYPE_NVIDIA\x10\x01\x12&\n\"CLUSTER_CONFIGURATION_GPU_TYPE_AMD\x10\x02*\xf2\x01\n!ClusterConfigurationRestartPolicy\x12\x34\n0CLUSTER_CONFIGURATION_RESTART_POLICY_UNSPECIFIED\x10\x00\x12\x30\n,CLUSTER_CONFIGURATION_RESTART_POLICY_ROLLING\x10\x01\x12\x31\n-CLUSTER_CONFIGURATION_RESTART_POLICY_PARALLEL\x10\x02\x12\x32\n.CLUSTER_CONFIGURATION_RESTART_POLICY_AUTOMATIC\x10\x03*\x8e\x02\n%ClusterConfigurationRebalanceStrategy\x12\x38\n4CLUSTER_CONFIGURATION_REBALANCE_STRATEGY_UNSPECIFIED\x10\x00\x12\x35\n1CLUSTER_CONFIGURATION_REBALANCE_STRATEGY_BY_COUNT\x10\x01\x12\x34\n0CLUSTER_CONFIGURATION_REBALANCE_STRATEGY_BY_SIZE\x10\x02\x12>\n:CLUSTER_CONFIGURATION_REBALANCE_STRATEGY_BY_COUNT_AND_SIZE\x10\x03*\xd5\x02\n\x1d\x44\x61tabaseConfigurationLogLevel\x12\x30\n,DATABASE_CONFIGURATION_LOG_LEVEL_UNSPECIFIED\x10\x00\x12*\n&DATABASE_CONFIGURATION_LOG_LEVEL_TRACE\x10\x01\x12*\n&DATABASE_CONFIGURATION_LOG_LEVEL_DEBUG\x10\x02\x12)\n%DATABASE_CONFIGURATION_LOG_LEVEL_INFO\x10\x03\x12)\n%DATABASE_CONFIGURATION_LOG_LEVEL_WARN\x10\x04\x12*\n&DATABASE_CONFIGURATION_LOG_LEVEL_ERROR\x10\x05\x12(\n$DATABASE_CONFIGURATION_LOG_LEVEL_OFF\x10\x06*x\n\x12TolerationOperator\x12#\n\x1fTOLERATION_OPERATOR_UNSPECIFIED\x10\x00\x12\x1e\n\x1aTOLERATION_OPERATOR_EXISTS\x10\x01\x12\x1d\n\x19TOLERATION_OPERATOR_EQUAL\x10\x02*\xa4\x01\n\x10TolerationEffect\x12!\n\x1dTOLERATION_EFFECT_UNSPECIFIED\x10\x00\x12!\n\x1dTOLERATION_EFFECT_NO_SCHEDULE\x10\x01\x12(\n$TOLERATION_EFFECT_PREFER_NO_SCHEDULE\x10\x02\x12 \n\x1cTOLERATION_EFFECT_NO_EXECUTE\x10\x03*\xc3\x04\n\x0c\x43lusterPhase\x12\x1d\n\x19\x43LUSTER_PHASE_UNSPECIFIED\x10\x00\x12\x1a\n\x16\x43LUSTER_PHASE_CREATING\x10\x01\x12\"\n\x1e\x43LUSTER_PHASE_FAILED_TO_CREATE\x10\x02\x12\x1a\n\x16\x43LUSTER_PHASE_UPDATING\x10\x03\x12\"\n\x1e\x43LUSTER_PHASE_FAILED_TO_UPDATE\x10\x04\x12\x19\n\x15\x43LUSTER_PHASE_SCALING\x10\x05\x12\x1b\n\x17\x43LUSTER_PHASE_UPGRADING\x10\x06\x12\x1c\n\x18\x43LUSTER_PHASE_SUSPENDING\x10\x07\x12\x1b\n\x17\x43LUSTER_PHASE_SUSPENDED\x10\x08\x12#\n\x1f\x43LUSTER_PHASE_FAILED_TO_SUSPEND\x10\t\x12\x1a\n\x16\x43LUSTER_PHASE_RESUMING\x10\n\x12\"\n\x1e\x43LUSTER_PHASE_FAILED_TO_RESUME\x10\x0b\x12\x19\n\x15\x43LUSTER_PHASE_HEALTHY\x10\x0c\x12\x1b\n\x17\x43LUSTER_PHASE_NOT_READY\x10\r\x12\x1f\n\x1b\x43LUSTER_PHASE_RECOVERY_MODE\x10\x0e\x12$\n CLUSTER_PHASE_MANUAL_MAINTENANCE\x10\x0f\x12 \n\x1c\x43LUSTER_PHASE_FAILED_TO_SYNC\x10\x10\x12\x1b\n\x17\x43LUSTER_PHASE_NOT_FOUND\x10\x11*\x9c\x01\n\x18\x43lusterScalabilityStatus\x12*\n&CLUSTER_SCALABILITY_STATUS_UNSPECIFIED\x10\x00\x12+\n\'CLUSTER_SCALABILITY_STATUS_NOT_SCALABLE\x10\x01\x12\'\n#CLUSTER_SCALABILITY_STATUS_SCALABLE\x10\x02\x32\xcb\x0e\n\x0e\x43lusterService\x12\xb4\x01\n\x0cListClusters\x12,.qdrant.cloud.cluster.v1.ListClustersRequest\x1a-.qdrant.cloud.cluster.v1.ListClustersResponse\"G\x8a\xb5\x18\rread:clusters\x82\xd3\xe4\x93\x02\x30\x12./api/cluster/v1/accounts/{account_id}/clusters\x12\xbb\x01\n\nGetCluster\x12*.qdrant.cloud.cluster.v1.GetClusterRequest\x1a+.qdrant.cloud.cluster.v1.GetClusterResponse\"T\x8a\xb5\x18\rread:clusters\x82\xd3\xe4\x93\x02=\x12;/api/cluster/v1/accounts/{account_id}/clusters/{cluster_id}\x12\xd9\x01\n\rCreateCluster\x12-.qdrant.cloud.cluster.v1.CreateClusterRequest\x1a..qdrant.cloud.cluster.v1.CreateClusterResponse\"i\x8a\xb5\x18\x0ewrite:clusters\x92\xb5\x18\x12\x63luster.account_id\x82\xd3\xe4\x93\x02;\"6/api/cluster/v1/accounts/{cluster.account_id}/clusters:\x01*\x12\xe6\x01\n\rUpdateCluster\x12-.qdrant.cloud.cluster.v1.UpdateClusterRequest\x1a..qdrant.cloud.cluster.v1.UpdateClusterResponse\"v\x8a\xb5\x18\x0ewrite:clusters\x92\xb5\x18\x12\x63luster.account_id\x82\xd3\xe4\x93\x02H\x1a\x43/api/cluster/v1/accounts/{cluster.account_id}/clusters/{cluster.id}:\x01*\x12\xc6\x01\n\rDeleteCluster\x12-.qdrant.cloud.cluster.v1.DeleteClusterRequest\x1a..qdrant.cloud.cluster.v1.DeleteClusterResponse\"V\x8a\xb5\x18\x0f\x64\x65lete:clusters\x82\xd3\xe4\x93\x02=*;/api/cluster/v1/accounts/{account_id}/clusters/{cluster_id}\x12\xd0\x01\n\x0eRestartCluster\x12..qdrant.cloud.cluster.v1.RestartClusterRequest\x1a/.qdrant.cloud.cluster.v1.RestartClusterResponse\"]\x8a\xb5\x18\x0ewrite:clusters\x82\xd3\xe4\x93\x02\x45\"C/api/cluster/v1/accounts/{account_id}/clusters/{cluster_id}/restart\x12\xd0\x01\n\x0eSuspendCluster\x12..qdrant.cloud.cluster.v1.SuspendClusterRequest\x1a/.qdrant.cloud.cluster.v1.SuspendClusterResponse\"]\x8a\xb5\x18\x0ewrite:clusters\x82\xd3\xe4\x93\x02\x45\"C/api/cluster/v1/accounts/{account_id}/clusters/{cluster_id}/suspend\x12\xc6\x01\n\x12SuggestClusterName\x12\x32.qdrant.cloud.cluster.v1.SuggestClusterNameRequest\x1a\x33.qdrant.cloud.cluster.v1.SuggestClusterNameResponse\"G\x8a\xb5\x18\x00\x82\xd3\xe4\x93\x02=\x12;/api/cluster/v1/accounts/{account_id}/clusters/suggest-name\x12\xc6\x01\n\x12ListQdrantReleases\x12\x32.qdrant.cloud.cluster.v1.ListQdrantReleasesRequest\x1a\x33.qdrant.cloud.cluster.v1.ListQdrantReleasesResponse\"G\x8a\xb5\x18\rread:clusters\x82\xd3\xe4\x93\x02\x30\x12./api/cluster/v1/accounts/{account_id}/releasesB\xfe\x01\n\x1b\x63om.qdrant.cloud.cluster.v1B\x0c\x43lusterProtoP\x01ZRgithub.com/qdrant/qdrant-cloud-public-api/gen/go/qdrant/cloud/cluster/v1;clusterv1\xa2\x02\x03QCC\xaa\x02\x17Qdrant.Cloud.Cluster.V1\xca\x02\x17Qdrant\\Cloud\\Cluster\\V1\xe2\x02#Qdrant\\Cloud\\Cluster\\V1\\GPBMetadata\xea\x02\x1aQdrant::Cloud::Cluster::V1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -114,20 +114,22 @@ _globals['_CLUSTERSERVICE'].methods_by_name['SuggestClusterName']._serialized_options = b'\212\265\030\000\202\323\344\223\002=\022;/api/cluster/v1/accounts/{account_id}/clusters/suggest-name' _globals['_CLUSTERSERVICE'].methods_by_name['ListQdrantReleases']._loaded_options = None _globals['_CLUSTERSERVICE'].methods_by_name['ListQdrantReleases']._serialized_options = b'\212\265\030\rread:clusters\202\323\344\223\0020\022./api/cluster/v1/accounts/{account_id}/releases' - _globals['_CLUSTERCONFIGURATIONGPUTYPE']._serialized_start=7633 - _globals['_CLUSTERCONFIGURATIONGPUTYPE']._serialized_end=7793 - _globals['_CLUSTERCONFIGURATIONRESTARTPOLICY']._serialized_start=7796 - _globals['_CLUSTERCONFIGURATIONRESTARTPOLICY']._serialized_end=8038 - _globals['_CLUSTERCONFIGURATIONREBALANCESTRATEGY']._serialized_start=8041 - _globals['_CLUSTERCONFIGURATIONREBALANCESTRATEGY']._serialized_end=8311 - _globals['_DATABASECONFIGURATIONLOGLEVEL']._serialized_start=8314 - _globals['_DATABASECONFIGURATIONLOGLEVEL']._serialized_end=8655 - _globals['_TOLERATIONOPERATOR']._serialized_start=8657 - _globals['_TOLERATIONOPERATOR']._serialized_end=8777 - _globals['_TOLERATIONEFFECT']._serialized_start=8780 - _globals['_TOLERATIONEFFECT']._serialized_end=8944 - _globals['_CLUSTERPHASE']._serialized_start=8947 - _globals['_CLUSTERPHASE']._serialized_end=9526 + _globals['_CLUSTERCONFIGURATIONGPUTYPE']._serialized_start=7867 + _globals['_CLUSTERCONFIGURATIONGPUTYPE']._serialized_end=8027 + _globals['_CLUSTERCONFIGURATIONRESTARTPOLICY']._serialized_start=8030 + _globals['_CLUSTERCONFIGURATIONRESTARTPOLICY']._serialized_end=8272 + _globals['_CLUSTERCONFIGURATIONREBALANCESTRATEGY']._serialized_start=8275 + _globals['_CLUSTERCONFIGURATIONREBALANCESTRATEGY']._serialized_end=8545 + _globals['_DATABASECONFIGURATIONLOGLEVEL']._serialized_start=8548 + _globals['_DATABASECONFIGURATIONLOGLEVEL']._serialized_end=8889 + _globals['_TOLERATIONOPERATOR']._serialized_start=8891 + _globals['_TOLERATIONOPERATOR']._serialized_end=9011 + _globals['_TOLERATIONEFFECT']._serialized_start=9014 + _globals['_TOLERATIONEFFECT']._serialized_end=9178 + _globals['_CLUSTERPHASE']._serialized_start=9181 + _globals['_CLUSTERPHASE']._serialized_end=9760 + _globals['_CLUSTERSCALABILITYSTATUS']._serialized_start=9763 + _globals['_CLUSTERSCALABILITYSTATUS']._serialized_end=9919 _globals['_LISTCLUSTERSREQUEST']._serialized_start=196 _globals['_LISTCLUSTERSREQUEST']._serialized_end=697 _globals['_LISTCLUSTERSRESPONSE']._serialized_start=699 @@ -189,15 +191,17 @@ _globals['_TOLERATION']._serialized_start=6135 _globals['_TOLERATION']._serialized_end=6501 _globals['_CLUSTERSTATE']._serialized_start=6504 - _globals['_CLUSTERSTATE']._serialized_end=6873 - _globals['_CLUSTERENDPOINT']._serialized_start=6875 - _globals['_CLUSTERENDPOINT']._serialized_end=6978 - _globals['_CLUSTERNODERESOURCESSUMMARY']._serialized_start=6981 - _globals['_CLUSTERNODERESOURCESSUMMARY']._serialized_end=7207 - _globals['_CLUSTERNODERESOURCES']._serialized_start=7210 - _globals['_CLUSTERNODERESOURCES']._serialized_end=7380 - _globals['_QDRANTRELEASE']._serialized_start=7383 - _globals['_QDRANTRELEASE']._serialized_end=7630 - _globals['_CLUSTERSERVICE']._serialized_start=9529 - _globals['_CLUSTERSERVICE']._serialized_end=11396 + _globals['_CLUSTERSTATE']._serialized_end=6965 + _globals['_CLUSTERENDPOINT']._serialized_start=6967 + _globals['_CLUSTERENDPOINT']._serialized_end=7070 + _globals['_CLUSTERNODERESOURCESSUMMARY']._serialized_start=7073 + _globals['_CLUSTERNODERESOURCESSUMMARY']._serialized_end=7299 + _globals['_CLUSTERNODERESOURCES']._serialized_start=7302 + _globals['_CLUSTERNODERESOURCES']._serialized_end=7472 + _globals['_CLUSTERSCALABILITYINFO']._serialized_start=7475 + _globals['_CLUSTERSCALABILITYINFO']._serialized_end=7614 + _globals['_QDRANTRELEASE']._serialized_start=7617 + _globals['_QDRANTRELEASE']._serialized_end=7864 + _globals['_CLUSTERSERVICE']._serialized_start=9922 + _globals['_CLUSTERSERVICE']._serialized_end=11789 # @@protoc_insertion_point(module_scope) diff --git a/gen/python/qdrant/cloud/cluster/v1/cluster_pb2.pyi b/gen/python/qdrant/cloud/cluster/v1/cluster_pb2.pyi index 23cac923..c3133f5a 100644 --- a/gen/python/qdrant/cloud/cluster/v1/cluster_pb2.pyi +++ b/gen/python/qdrant/cloud/cluster/v1/cluster_pb2.pyi @@ -73,6 +73,12 @@ class ClusterPhase(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): CLUSTER_PHASE_MANUAL_MAINTENANCE: _ClassVar[ClusterPhase] CLUSTER_PHASE_FAILED_TO_SYNC: _ClassVar[ClusterPhase] CLUSTER_PHASE_NOT_FOUND: _ClassVar[ClusterPhase] + +class ClusterScalabilityStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + CLUSTER_SCALABILITY_STATUS_UNSPECIFIED: _ClassVar[ClusterScalabilityStatus] + CLUSTER_SCALABILITY_STATUS_NOT_SCALABLE: _ClassVar[ClusterScalabilityStatus] + CLUSTER_SCALABILITY_STATUS_SCALABLE: _ClassVar[ClusterScalabilityStatus] CLUSTER_CONFIGURATION_GPU_TYPE_UNSPECIFIED: ClusterConfigurationGpuType CLUSTER_CONFIGURATION_GPU_TYPE_NVIDIA: ClusterConfigurationGpuType CLUSTER_CONFIGURATION_GPU_TYPE_AMD: ClusterConfigurationGpuType @@ -116,6 +122,9 @@ CLUSTER_PHASE_RECOVERY_MODE: ClusterPhase CLUSTER_PHASE_MANUAL_MAINTENANCE: ClusterPhase CLUSTER_PHASE_FAILED_TO_SYNC: ClusterPhase CLUSTER_PHASE_NOT_FOUND: ClusterPhase +CLUSTER_SCALABILITY_STATUS_UNSPECIFIED: ClusterScalabilityStatus +CLUSTER_SCALABILITY_STATUS_NOT_SCALABLE: ClusterScalabilityStatus +CLUSTER_SCALABILITY_STATUS_SCALABLE: ClusterScalabilityStatus class ListClustersRequest(_message.Message): __slots__ = ("account_id", "cloud_provider_id", "cloud_provider_region_id") @@ -384,7 +393,7 @@ class Toleration(_message.Message): def __init__(self, key: _Optional[str] = ..., operator: _Optional[_Union[TolerationOperator, str]] = ..., value: _Optional[str] = ..., effect: _Optional[_Union[TolerationEffect, str]] = ..., toleration_seconds: _Optional[int] = ...) -> None: ... class ClusterState(_message.Message): - __slots__ = ("version", "nodes_up", "restarted_at", "phase", "reason", "endpoint", "resources") + __slots__ = ("version", "nodes_up", "restarted_at", "phase", "reason", "endpoint", "resources", "scalability_info") VERSION_FIELD_NUMBER: _ClassVar[int] NODES_UP_FIELD_NUMBER: _ClassVar[int] RESTARTED_AT_FIELD_NUMBER: _ClassVar[int] @@ -392,6 +401,7 @@ class ClusterState(_message.Message): REASON_FIELD_NUMBER: _ClassVar[int] ENDPOINT_FIELD_NUMBER: _ClassVar[int] RESOURCES_FIELD_NUMBER: _ClassVar[int] + SCALABILITY_INFO_FIELD_NUMBER: _ClassVar[int] version: str nodes_up: int restarted_at: _timestamp_pb2.Timestamp @@ -399,7 +409,8 @@ class ClusterState(_message.Message): reason: str endpoint: ClusterEndpoint resources: ClusterNodeResourcesSummary - def __init__(self, version: _Optional[str] = ..., nodes_up: _Optional[int] = ..., restarted_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., phase: _Optional[_Union[ClusterPhase, str]] = ..., reason: _Optional[str] = ..., endpoint: _Optional[_Union[ClusterEndpoint, _Mapping]] = ..., resources: _Optional[_Union[ClusterNodeResourcesSummary, _Mapping]] = ...) -> None: ... + scalability_info: ClusterScalabilityInfo + def __init__(self, version: _Optional[str] = ..., nodes_up: _Optional[int] = ..., restarted_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., phase: _Optional[_Union[ClusterPhase, str]] = ..., reason: _Optional[str] = ..., endpoint: _Optional[_Union[ClusterEndpoint, _Mapping]] = ..., resources: _Optional[_Union[ClusterNodeResourcesSummary, _Mapping]] = ..., scalability_info: _Optional[_Union[ClusterScalabilityInfo, _Mapping]] = ...) -> None: ... class ClusterEndpoint(_message.Message): __slots__ = ("url", "rest_port", "grpc_port") @@ -435,6 +446,14 @@ class ClusterNodeResources(_message.Message): available: float def __init__(self, base: _Optional[float] = ..., complimentary: _Optional[float] = ..., additional: _Optional[float] = ..., reserved: _Optional[float] = ..., available: _Optional[float] = ...) -> None: ... +class ClusterScalabilityInfo(_message.Message): + __slots__ = ("status", "reason") + STATUS_FIELD_NUMBER: _ClassVar[int] + REASON_FIELD_NUMBER: _ClassVar[int] + status: ClusterScalabilityStatus + reason: str + def __init__(self, status: _Optional[_Union[ClusterScalabilityStatus, str]] = ..., reason: _Optional[str] = ...) -> None: ... + class QdrantRelease(_message.Message): __slots__ = ("version", "default", "release_notes_url", "remarks", "end_of_life", "unavailable") VERSION_FIELD_NUMBER: _ClassVar[int] diff --git a/gen/typescript/qdrant/cloud/cluster/v1/cluster_pb.d.ts b/gen/typescript/qdrant/cloud/cluster/v1/cluster_pb.d.ts index c8018028..00d4c45d 100644 --- a/gen/typescript/qdrant/cloud/cluster/v1/cluster_pb.d.ts +++ b/gen/typescript/qdrant/cloud/cluster/v1/cluster_pb.d.ts @@ -1060,6 +1060,13 @@ export declare type ClusterState = Message<"qdrant.cloud.cluster.v1.ClusterState * @generated from field: qdrant.cloud.cluster.v1.ClusterNodeResourcesSummary resources = 7; */ resources?: ClusterNodeResourcesSummary; + + /** + * Whether the cluster can be scaled up or down. + * + * @generated from field: qdrant.cloud.cluster.v1.ClusterScalabilityInfo scalability_info = 8; + */ + scalabilityInfo?: ClusterScalabilityInfo; }; /** @@ -1188,6 +1195,34 @@ export declare type ClusterNodeResources = Message<"qdrant.cloud.cluster.v1.Clus */ export declare const ClusterNodeResourcesSchema: GenMessage; +/** + * ClusterScalabilityInfo provides information about the + * + * @generated from message qdrant.cloud.cluster.v1.ClusterScalabilityInfo + */ +export declare type ClusterScalabilityInfo = Message<"qdrant.cloud.cluster.v1.ClusterScalabilityInfo"> & { + /** + * The current scalability status of the cluster. + * + * @generated from field: qdrant.cloud.cluster.v1.ClusterScalabilityStatus status = 1; + */ + status: ClusterScalabilityStatus; + + /** + * Optional human-readable reason providing more context about the scalability status. + * When a cluster is not scalable, this field explains why. + * + * @generated from field: optional string reason = 2; + */ + reason?: string; +}; + +/** + * Describes the message qdrant.cloud.cluster.v1.ClusterScalabilityInfo. + * Use `create(ClusterScalabilityInfoSchema)` to create a new message. + */ +export declare const ClusterScalabilityInfoSchema: GenMessage; + /** * QdrantRelease represent a single Qdrant release * @@ -1632,6 +1667,39 @@ export enum ClusterPhase { */ export declare const ClusterPhaseSchema: GenEnum; +/** + * ClusterScalabilityStatus defines the scalability states of a cluster. + * + * @generated from enum qdrant.cloud.cluster.v1.ClusterScalabilityStatus + */ +export enum ClusterScalabilityStatus { + /** + * Scalability status is unspecified. + * + * @generated from enum value: CLUSTER_SCALABILITY_STATUS_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * The cluster is not scalable. + * + * @generated from enum value: CLUSTER_SCALABILITY_STATUS_NOT_SCALABLE = 1; + */ + NOT_SCALABLE = 1, + + /** + * The cluster supports scaling operations. + * + * @generated from enum value: CLUSTER_SCALABILITY_STATUS_SCALABLE = 2; + */ + SCALABLE = 2, +} + +/** + * Describes the enum qdrant.cloud.cluster.v1.ClusterScalabilityStatus. + */ +export declare const ClusterScalabilityStatusSchema: GenEnum; + /** * ClusterService is the API used to configure cluster objects. * diff --git a/gen/typescript/qdrant/cloud/cluster/v1/cluster_pb.js b/gen/typescript/qdrant/cloud/cluster/v1/cluster_pb.js index 34333fe9..06b42f21 100644 --- a/gen/typescript/qdrant/cloud/cluster/v1/cluster_pb.js +++ b/gen/typescript/qdrant/cloud/cluster/v1/cluster_pb.js @@ -12,7 +12,7 @@ import { file_qdrant_cloud_common_v1_common } from "../../common/v1/common_pb.js * Describes the file qdrant/cloud/cluster/v1/cluster.proto. */ export const file_qdrant_cloud_cluster_v1_cluster = /*@__PURE__*/ - fileDesc("CiVxZHJhbnQvY2xvdWQvY2x1c3Rlci92MS9jbHVzdGVyLnByb3RvEhdxZHJhbnQuY2xvdWQuY2x1c3Rlci52MSLCAwoTTGlzdENsdXN0ZXJzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARInChFjbG91ZF9wcm92aWRlcl9pZBgKIAEoCUIHukgEcgIQA0gAiAEBEiUKGGNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZBgLIAEoCUgBiAEBOokCukiFAhqCAgogY2x1c3Rlci5jbG91ZF9wcm92aWRlcl9yZWdpb25faWQSSGNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZCBtdXN0IGJlIGEgVVVJRCBpZiBjbG91ZF9wcm92aWRlcl9pZCBpcyAnaHlicmlkJxqTAXRoaXMuY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkLm1hdGNoZXMoJ15bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXszfS1bMDg5YWJdWzAtOWEtZl17M30tWzAtOWEtZl17MTJ9JCcpIHx8IHRoaXMuY2xvdWRfcHJvdmlkZXJfaWQhPSAnaHlicmlkJ0IUChJfY2xvdWRfcHJvdmlkZXJfaWRCGwoZX2Nsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZCJHChRMaXN0Q2x1c3RlcnNSZXNwb25zZRIvCgVpdGVtcxgBIAMoCzIgLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXIiTwoRR2V0Q2x1c3RlclJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESHAoKY2x1c3Rlcl9pZBgCIAEoCUIIukgFcgOwAQEiRwoSR2V0Q2x1c3RlclJlc3BvbnNlEjEKB2NsdXN0ZXIYASABKAsyIC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyIkkKFENyZWF0ZUNsdXN0ZXJSZXF1ZXN0EjEKB2NsdXN0ZXIYASABKAsyIC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyIkoKFUNyZWF0ZUNsdXN0ZXJSZXNwb25zZRIxCgdjbHVzdGVyGAEgASgLMiAucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlciJJChRVcGRhdGVDbHVzdGVyUmVxdWVzdBIxCgdjbHVzdGVyGAEgASgLMiAucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlciJKChVVcGRhdGVDbHVzdGVyUmVzcG9uc2USMQoHY2x1c3RlchgBIAEoCzIgLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXIiggEKFERlbGV0ZUNsdXN0ZXJSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEhwKCmNsdXN0ZXJfaWQYAiABKAlCCLpIBXIDsAEBEhsKDmRlbGV0ZV9iYWNrdXBzGAMgASgISACIAQFCEQoPX2RlbGV0ZV9iYWNrdXBzIhcKFURlbGV0ZUNsdXN0ZXJSZXNwb25zZSJTChVSZXN0YXJ0Q2x1c3RlclJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESHAoKY2x1c3Rlcl9pZBgCIAEoCUIIukgFcgOwAQEiGAoWUmVzdGFydENsdXN0ZXJSZXNwb25zZSJTChVTdXNwZW5kQ2x1c3RlclJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESHAoKY2x1c3Rlcl9pZBgCIAEoCUIIukgFcgOwAQEiGAoWU3VzcGVuZENsdXN0ZXJSZXNwb25zZSI5ChlTdWdnZXN0Q2x1c3Rlck5hbWVSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBIioKGlN1Z2dlc3RDbHVzdGVyTmFtZVJlc3BvbnNlEgwKBG5hbWUYASABKAkiawoZTGlzdFFkcmFudFJlbGVhc2VzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIhCgpjbHVzdGVyX2lkGAIgASgJQgi6SAVyA7ABAUgAiAEBQg0KC19jbHVzdGVyX2lkIlMKGkxpc3RRZHJhbnRSZWxlYXNlc1Jlc3BvbnNlEjUKBWl0ZW1zGAEgAygLMiYucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuUWRyYW50UmVsZWFzZSKyBgoHQ2x1c3RlchIKCgJpZBgBIAEoCRIuCgpjcmVhdGVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIcCgphY2NvdW50X2lkGAMgASgJQgi6SAVyA7ABARIpCgRuYW1lGAQgASgJQhu6SBhyFhAEGEAyEF5bYS16QS1aMC05LV9dKyQSLgoKZGVsZXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASIgoRY2xvdWRfcHJvdmlkZXJfaWQYCiABKAlCB7pIBHICEAMSIAoYY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkGAsgASgJEkQKDWNvbmZpZ3VyYXRpb24YFCABKAsyLS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyQ29uZmlndXJhdGlvbhI0CgVzdGF0ZRhkIAEoCzIlLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJTdGF0ZTqvA7pIqwMaowEKCmNsdXN0ZXIuaWQSGnZhbHVlIG11c3QgYmUgYSB2YWxpZCBVVUlEGnl0aGlzLmlkLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykgfHwgIWhhcyh0aGlzLmNyZWF0ZWRfYXQpGoICCiBjbHVzdGVyLmNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZBJIY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkIG11c3QgYmUgYSBVVUlEIGlmIGNsb3VkX3Byb3ZpZGVyX2lkIGlzICdoeWJyaWQnGpMBdGhpcy5jbG91ZF9wcm92aWRlcl9yZWdpb25faWQubWF0Y2hlcygnXlswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezN9LVswODlhYl1bMC05YS1mXXszfS1bMC05YS1mXXsxMn0kJykgfHwgdGhpcy5jbG91ZF9wcm92aWRlcl9pZCE9ICdoeWJyaWQnIsYIChRDbHVzdGVyQ29uZmlndXJhdGlvbhI0ChBsYXN0X21vZGlmaWVkX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIiCg9udW1iZXJfb2Zfbm9kZXMYAiABKA1CCbpIBioEGBQoARI8Cgd2ZXJzaW9uGAMgASgJQia6SCNyITIfXih2KFxkKylcLihcZCspXC4oXGQrKXxsYXRlc3QpJEgAiAEBEhwKCnBhY2thZ2VfaWQYBCABKAlCCLpIBXIDsAEBEk8KFGFkZGl0aW9uYWxfcmVzb3VyY2VzGAUgASgLMiwucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQWRkaXRpb25hbFJlc291cmNlc0gBiAEBElMKFmRhdGFiYXNlX2NvbmZpZ3VyYXRpb24YByABKAsyLi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5EYXRhYmFzZUNvbmZpZ3VyYXRpb25IAogBARJBCg1ub2RlX3NlbGVjdG9yGAggAygLMiAucWRyYW50LmNsb3VkLmNvbW1vbi52MS5LZXlWYWx1ZUIIukgFkgECEAoSQgoLdG9sZXJhdGlvbnMYCSADKAsyIy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5Ub2xlcmF0aW9uQgi6SAWSAQIQChI/Cgthbm5vdGF0aW9ucxgKIAMoCzIgLnFkcmFudC5jbG91ZC5jb21tb24udjEuS2V5VmFsdWVCCLpIBZIBAhAKEjEKGGFsbG93ZWRfaXBfc291cmNlX3JhbmdlcxgLIAMoCUIPukgMkgEJEBQiBXID8AEBEioKF3Jlc2VydmVkX2NwdV9wZXJjZW50YWdlGBQgASgNQgm6SAYqBBhQKAASLQoacmVzZXJ2ZWRfbWVtb3J5X3BlcmNlbnRhZ2UYFSABKA1CCbpIBioEGFAoABJLCghncHVfdHlwZRgWIAEoDjI0LnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJDb25maWd1cmF0aW9uR3B1VHlwZUgDiAEBElcKDnJlc3RhcnRfcG9saWN5GBcgASgOMjoucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlckNvbmZpZ3VyYXRpb25SZXN0YXJ0UG9saWN5SASIAQESXwoScmViYWxhbmNlX3N0cmF0ZWd5GBggASgOMj4ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlckNvbmZpZ3VyYXRpb25SZWJhbGFuY2VTdHJhdGVneUgFiAEBQgoKCF92ZXJzaW9uQhcKFV9hZGRpdGlvbmFsX3Jlc291cmNlc0IZChdfZGF0YWJhc2VfY29uZmlndXJhdGlvbkILCglfZ3B1X3R5cGVCEQoPX3Jlc3RhcnRfcG9saWN5QhUKE19yZWJhbGFuY2Vfc3RyYXRlZ3kitQQKFURhdGFiYXNlQ29uZmlndXJhdGlvbhJRCgpjb2xsZWN0aW9uGAEgASgLMjgucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuRGF0YWJhc2VDb25maWd1cmF0aW9uQ29sbGVjdGlvbkgAiAEBEksKB3N0b3JhZ2UYAiABKAsyNS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5EYXRhYmFzZUNvbmZpZ3VyYXRpb25TdG9yYWdlSAGIAQESSwoHc2VydmljZRgDIAEoCzI1LnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkRhdGFiYXNlQ29uZmlndXJhdGlvblNlcnZpY2VIAogBARJOCglsb2dfbGV2ZWwYBCABKA4yNi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5EYXRhYmFzZUNvbmZpZ3VyYXRpb25Mb2dMZXZlbEgDiAEBEkMKA3RscxgFIAEoCzIxLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkRhdGFiYXNlQ29uZmlndXJhdGlvblRsc0gEiAEBEk8KCWluZmVyZW5jZRgGIAEoCzI3LnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkRhdGFiYXNlQ29uZmlndXJhdGlvbkluZmVyZW5jZUgFiAEBQg0KC19jb2xsZWN0aW9uQgoKCF9zdG9yYWdlQgoKCF9zZXJ2aWNlQgwKCl9sb2dfbGV2ZWxCBgoEX3Rsc0IMCgpfaW5mZXJlbmNlIs0BCh9EYXRhYmFzZUNvbmZpZ3VyYXRpb25Db2xsZWN0aW9uEh8KEnJlcGxpY2F0aW9uX2ZhY3RvchgBIAEoDUgAiAEBEiAKGHdyaXRlX2NvbnNpc3RlbmN5X2ZhY3RvchgCIAEoBRJQCgd2ZWN0b3JzGAMgASgLMj8ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuRGF0YWJhc2VDb25maWd1cmF0aW9uQ29sbGVjdGlvblZlY3RvcnNCFQoTX3JlcGxpY2F0aW9uX2ZhY3RvciJKCiZEYXRhYmFzZUNvbmZpZ3VyYXRpb25Db2xsZWN0aW9uVmVjdG9ycxIUCgdvbl9kaXNrGAEgASgISACIAQFCCgoIX29uX2Rpc2sidQocRGF0YWJhc2VDb25maWd1cmF0aW9uU3RvcmFnZRJVCgtwZXJmb3JtYW5jZRgBIAEoCzJALnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkRhdGFiYXNlQ29uZmlndXJhdGlvblN0b3JhZ2VQZXJmb3JtYW5jZSJdCidEYXRhYmFzZUNvbmZpZ3VyYXRpb25TdG9yYWdlUGVyZm9ybWFuY2USHAoUb3B0aW1pemVyX2NwdV9idWRnZXQYASABKAUSFAoMYXN5bmNfc2NvcmVyGAIgASgIIugBChxEYXRhYmFzZUNvbmZpZ3VyYXRpb25TZXJ2aWNlEjoKB2FwaV9rZXkYASABKAsyJC5xZHJhbnQuY2xvdWQuY29tbW9uLnYxLlNlY3JldEtleVJlZkgAiAEBEkQKEXJlYWRfb25seV9hcGlfa2V5GAIgASgLMiQucWRyYW50LmNsb3VkLmNvbW1vbi52MS5TZWNyZXRLZXlSZWZIAYgBARIQCghqd3RfcmJhYxgDIAEoCBISCgplbmFibGVfdGxzGAQgASgIQgoKCF9hcGlfa2V5QhQKEl9yZWFkX29ubHlfYXBpX2tleSKBAQoYRGF0YWJhc2VDb25maWd1cmF0aW9uVGxzEjIKBGNlcnQYASABKAsyJC5xZHJhbnQuY2xvdWQuY29tbW9uLnYxLlNlY3JldEtleVJlZhIxCgNrZXkYAiABKAsyJC5xZHJhbnQuY2xvdWQuY29tbW9uLnYxLlNlY3JldEtleVJlZiIxCh5EYXRhYmFzZUNvbmZpZ3VyYXRpb25JbmZlcmVuY2USDwoHZW5hYmxlZBgBIAEoCCIjChNBZGRpdGlvbmFsUmVzb3VyY2VzEgwKBGRpc2sYAyABKA0ivQIKClRvbGVyYXRpb24SQwoDa2V5GAEgASgJQja6SDNyMRg/Mi1eKFthLXpBLVowLTldKFstYS16QS1aMC05Xy5dKlthLXpBLVowLTldKT8pPyQSQgoIb3BlcmF0b3IYAiABKA4yKy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5Ub2xlcmF0aW9uT3BlcmF0b3JIAIgBARINCgV2YWx1ZRgDIAEoCRI+CgZlZmZlY3QYBCABKA4yKS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5Ub2xlcmF0aW9uRWZmZWN0SAGIAQESKAoSdG9sZXJhdGlvbl9zZWNvbmRzGAUgASgEQge6SAQyAigASAKIAQFCCwoJX29wZXJhdG9yQgkKB19lZmZlY3RCFQoTX3RvbGVyYXRpb25fc2Vjb25kcyKuAgoMQ2x1c3RlclN0YXRlEg8KB3ZlcnNpb24YASABKAkSEAoIbm9kZXNfdXAYAiABKA0SMAoMcmVzdGFydGVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI0CgVwaGFzZRgEIAEoDjIlLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJQaGFzZRIOCgZyZWFzb24YBSABKAkSOgoIZW5kcG9pbnQYBiABKAsyKC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyRW5kcG9pbnQSRwoJcmVzb3VyY2VzGAcgASgLMjQucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3Rlck5vZGVSZXNvdXJjZXNTdW1tYXJ5Ik4KD0NsdXN0ZXJFbmRwb2ludBIVCgN1cmwYASABKAlCCLpIBXIDqAEBEhEKCXJlc3RfcG9ydBgCIAEoBRIRCglncnBjX3BvcnQYAyABKAUi0gEKG0NsdXN0ZXJOb2RlUmVzb3VyY2VzU3VtbWFyeRI7CgRkaXNrGAEgASgLMi0ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3Rlck5vZGVSZXNvdXJjZXMSOgoDcmFtGAIgASgLMi0ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3Rlck5vZGVSZXNvdXJjZXMSOgoDY3B1GAMgASgLMi0ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3Rlck5vZGVSZXNvdXJjZXMidAoUQ2x1c3Rlck5vZGVSZXNvdXJjZXMSDAoEYmFzZRgBIAEoARIVCg1jb21wbGltZW50YXJ5GAIgASgBEhIKCmFkZGl0aW9uYWwYAyABKAESEAoIcmVzZXJ2ZWQYBCABKAESEQoJYXZhaWxhYmxlGAUgASgBIrMBCg1RZHJhbnRSZWxlYXNlEg8KB3ZlcnNpb24YASABKAkSDwoHZGVmYXVsdBgCIAEoCBIeChFyZWxlYXNlX25vdGVzX3VybBgDIAEoCUgAiAEBEhQKB3JlbWFya3MYBCABKAlIAYgBARITCgtlbmRfb2ZfbGlmZRgFIAEoCBITCgt1bmF2YWlsYWJsZRgGIAEoCEIUChJfcmVsZWFzZV9ub3Rlc191cmxCCgoIX3JlbWFya3MqoAEKG0NsdXN0ZXJDb25maWd1cmF0aW9uR3B1VHlwZRIuCipDTFVTVEVSX0NPTkZJR1VSQVRJT05fR1BVX1RZUEVfVU5TUEVDSUZJRUQQABIpCiVDTFVTVEVSX0NPTkZJR1VSQVRJT05fR1BVX1RZUEVfTlZJRElBEAESJgoiQ0xVU1RFUl9DT05GSUdVUkFUSU9OX0dQVV9UWVBFX0FNRBACKvIBCiFDbHVzdGVyQ29uZmlndXJhdGlvblJlc3RhcnRQb2xpY3kSNAowQ0xVU1RFUl9DT05GSUdVUkFUSU9OX1JFU1RBUlRfUE9MSUNZX1VOU1BFQ0lGSUVEEAASMAosQ0xVU1RFUl9DT05GSUdVUkFUSU9OX1JFU1RBUlRfUE9MSUNZX1JPTExJTkcQARIxCi1DTFVTVEVSX0NPTkZJR1VSQVRJT05fUkVTVEFSVF9QT0xJQ1lfUEFSQUxMRUwQAhIyCi5DTFVTVEVSX0NPTkZJR1VSQVRJT05fUkVTVEFSVF9QT0xJQ1lfQVVUT01BVElDEAMqjgIKJUNsdXN0ZXJDb25maWd1cmF0aW9uUmViYWxhbmNlU3RyYXRlZ3kSOAo0Q0xVU1RFUl9DT05GSUdVUkFUSU9OX1JFQkFMQU5DRV9TVFJBVEVHWV9VTlNQRUNJRklFRBAAEjUKMUNMVVNURVJfQ09ORklHVVJBVElPTl9SRUJBTEFOQ0VfU1RSQVRFR1lfQllfQ09VTlQQARI0CjBDTFVTVEVSX0NPTkZJR1VSQVRJT05fUkVCQUxBTkNFX1NUUkFURUdZX0JZX1NJWkUQAhI+CjpDTFVTVEVSX0NPTkZJR1VSQVRJT05fUkVCQUxBTkNFX1NUUkFURUdZX0JZX0NPVU5UX0FORF9TSVpFEAMq1QIKHURhdGFiYXNlQ29uZmlndXJhdGlvbkxvZ0xldmVsEjAKLERBVEFCQVNFX0NPTkZJR1VSQVRJT05fTE9HX0xFVkVMX1VOU1BFQ0lGSUVEEAASKgomREFUQUJBU0VfQ09ORklHVVJBVElPTl9MT0dfTEVWRUxfVFJBQ0UQARIqCiZEQVRBQkFTRV9DT05GSUdVUkFUSU9OX0xPR19MRVZFTF9ERUJVRxACEikKJURBVEFCQVNFX0NPTkZJR1VSQVRJT05fTE9HX0xFVkVMX0lORk8QAxIpCiVEQVRBQkFTRV9DT05GSUdVUkFUSU9OX0xPR19MRVZFTF9XQVJOEAQSKgomREFUQUJBU0VfQ09ORklHVVJBVElPTl9MT0dfTEVWRUxfRVJST1IQBRIoCiREQVRBQkFTRV9DT05GSUdVUkFUSU9OX0xPR19MRVZFTF9PRkYQBip4ChJUb2xlcmF0aW9uT3BlcmF0b3ISIwofVE9MRVJBVElPTl9PUEVSQVRPUl9VTlNQRUNJRklFRBAAEh4KGlRPTEVSQVRJT05fT1BFUkFUT1JfRVhJU1RTEAESHQoZVE9MRVJBVElPTl9PUEVSQVRPUl9FUVVBTBACKqQBChBUb2xlcmF0aW9uRWZmZWN0EiEKHVRPTEVSQVRJT05fRUZGRUNUX1VOU1BFQ0lGSUVEEAASIQodVE9MRVJBVElPTl9FRkZFQ1RfTk9fU0NIRURVTEUQARIoCiRUT0xFUkFUSU9OX0VGRkVDVF9QUkVGRVJfTk9fU0NIRURVTEUQAhIgChxUT0xFUkFUSU9OX0VGRkVDVF9OT19FWEVDVVRFEAMqwwQKDENsdXN0ZXJQaGFzZRIdChlDTFVTVEVSX1BIQVNFX1VOU1BFQ0lGSUVEEAASGgoWQ0xVU1RFUl9QSEFTRV9DUkVBVElORxABEiIKHkNMVVNURVJfUEhBU0VfRkFJTEVEX1RPX0NSRUFURRACEhoKFkNMVVNURVJfUEhBU0VfVVBEQVRJTkcQAxIiCh5DTFVTVEVSX1BIQVNFX0ZBSUxFRF9UT19VUERBVEUQBBIZChVDTFVTVEVSX1BIQVNFX1NDQUxJTkcQBRIbChdDTFVTVEVSX1BIQVNFX1VQR1JBRElORxAGEhwKGENMVVNURVJfUEhBU0VfU1VTUEVORElORxAHEhsKF0NMVVNURVJfUEhBU0VfU1VTUEVOREVEEAgSIwofQ0xVU1RFUl9QSEFTRV9GQUlMRURfVE9fU1VTUEVORBAJEhoKFkNMVVNURVJfUEhBU0VfUkVTVU1JTkcQChIiCh5DTFVTVEVSX1BIQVNFX0ZBSUxFRF9UT19SRVNVTUUQCxIZChVDTFVTVEVSX1BIQVNFX0hFQUxUSFkQDBIbChdDTFVTVEVSX1BIQVNFX05PVF9SRUFEWRANEh8KG0NMVVNURVJfUEhBU0VfUkVDT1ZFUllfTU9ERRAOEiQKIENMVVNURVJfUEhBU0VfTUFOVUFMX01BSU5URU5BTkNFEA8SIAocQ0xVU1RFUl9QSEFTRV9GQUlMRURfVE9fU1lOQxAQEhsKF0NMVVNURVJfUEhBU0VfTk9UX0ZPVU5EEBEyyw4KDkNsdXN0ZXJTZXJ2aWNlErQBCgxMaXN0Q2x1c3RlcnMSLC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5MaXN0Q2x1c3RlcnNSZXF1ZXN0Gi0ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuTGlzdENsdXN0ZXJzUmVzcG9uc2UiR4q1GA1yZWFkOmNsdXN0ZXJzgtPkkwIwEi4vYXBpL2NsdXN0ZXIvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2NsdXN0ZXJzErsBCgpHZXRDbHVzdGVyEioucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuR2V0Q2x1c3RlclJlcXVlc3QaKy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5HZXRDbHVzdGVyUmVzcG9uc2UiVIq1GA1yZWFkOmNsdXN0ZXJzgtPkkwI9EjsvYXBpL2NsdXN0ZXIvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2NsdXN0ZXJzL3tjbHVzdGVyX2lkfRLZAQoNQ3JlYXRlQ2x1c3RlchItLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNyZWF0ZUNsdXN0ZXJSZXF1ZXN0Gi4ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ3JlYXRlQ2x1c3RlclJlc3BvbnNlImmKtRgOd3JpdGU6Y2x1c3RlcnOStRgSY2x1c3Rlci5hY2NvdW50X2lkgtPkkwI7OgEqIjYvYXBpL2NsdXN0ZXIvdjEvYWNjb3VudHMve2NsdXN0ZXIuYWNjb3VudF9pZH0vY2x1c3RlcnMS5gEKDVVwZGF0ZUNsdXN0ZXISLS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5VcGRhdGVDbHVzdGVyUmVxdWVzdBouLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLlVwZGF0ZUNsdXN0ZXJSZXNwb25zZSJ2irUYDndyaXRlOmNsdXN0ZXJzkrUYEmNsdXN0ZXIuYWNjb3VudF9pZILT5JMCSDoBKhpDL2FwaS9jbHVzdGVyL3YxL2FjY291bnRzL3tjbHVzdGVyLmFjY291bnRfaWR9L2NsdXN0ZXJzL3tjbHVzdGVyLmlkfRLGAQoNRGVsZXRlQ2x1c3RlchItLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkRlbGV0ZUNsdXN0ZXJSZXF1ZXN0Gi4ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuRGVsZXRlQ2x1c3RlclJlc3BvbnNlIlaKtRgPZGVsZXRlOmNsdXN0ZXJzgtPkkwI9KjsvYXBpL2NsdXN0ZXIvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2NsdXN0ZXJzL3tjbHVzdGVyX2lkfRLQAQoOUmVzdGFydENsdXN0ZXISLi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5SZXN0YXJ0Q2x1c3RlclJlcXVlc3QaLy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5SZXN0YXJ0Q2x1c3RlclJlc3BvbnNlIl2KtRgOd3JpdGU6Y2x1c3RlcnOC0+STAkUiQy9hcGkvY2x1c3Rlci92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vY2x1c3RlcnMve2NsdXN0ZXJfaWR9L3Jlc3RhcnQS0AEKDlN1c3BlbmRDbHVzdGVyEi4ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuU3VzcGVuZENsdXN0ZXJSZXF1ZXN0Gi8ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuU3VzcGVuZENsdXN0ZXJSZXNwb25zZSJdirUYDndyaXRlOmNsdXN0ZXJzgtPkkwJFIkMvYXBpL2NsdXN0ZXIvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2NsdXN0ZXJzL3tjbHVzdGVyX2lkfS9zdXNwZW5kEsYBChJTdWdnZXN0Q2x1c3Rlck5hbWUSMi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5TdWdnZXN0Q2x1c3Rlck5hbWVSZXF1ZXN0GjMucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuU3VnZ2VzdENsdXN0ZXJOYW1lUmVzcG9uc2UiR4q1GACC0+STAj0SOy9hcGkvY2x1c3Rlci92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vY2x1c3RlcnMvc3VnZ2VzdC1uYW1lEsYBChJMaXN0UWRyYW50UmVsZWFzZXMSMi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5MaXN0UWRyYW50UmVsZWFzZXNSZXF1ZXN0GjMucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuTGlzdFFkcmFudFJlbGVhc2VzUmVzcG9uc2UiR4q1GA1yZWFkOmNsdXN0ZXJzgtPkkwIwEi4vYXBpL2NsdXN0ZXIvdjEvYWNjb3VudHMve2FjY291bnRfaWR9L3JlbGVhc2VzQv4BChtjb20ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjFCDENsdXN0ZXJQcm90b1ABWlJnaXRodWIuY29tL3FkcmFudC9xZHJhbnQtY2xvdWQtcHVibGljLWFwaS9nZW4vZ28vcWRyYW50L2Nsb3VkL2NsdXN0ZXIvdjE7Y2x1c3RlcnYxogIDUUNDqgIXUWRyYW50LkNsb3VkLkNsdXN0ZXIuVjHKAhdRZHJhbnRcQ2xvdWRcQ2x1c3RlclxWMeICI1FkcmFudFxDbG91ZFxDbHVzdGVyXFYxXEdQQk1ldGFkYXRh6gIaUWRyYW50OjpDbG91ZDo6Q2x1c3Rlcjo6VjFiBnByb3RvMw", [file_buf_validate_validate, file_google_api_annotations, file_google_protobuf_timestamp, file_qdrant_cloud_common_v1_common]); + fileDesc("CiVxZHJhbnQvY2xvdWQvY2x1c3Rlci92MS9jbHVzdGVyLnByb3RvEhdxZHJhbnQuY2xvdWQuY2x1c3Rlci52MSLCAwoTTGlzdENsdXN0ZXJzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARInChFjbG91ZF9wcm92aWRlcl9pZBgKIAEoCUIHukgEcgIQA0gAiAEBEiUKGGNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZBgLIAEoCUgBiAEBOokCukiFAhqCAgogY2x1c3Rlci5jbG91ZF9wcm92aWRlcl9yZWdpb25faWQSSGNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZCBtdXN0IGJlIGEgVVVJRCBpZiBjbG91ZF9wcm92aWRlcl9pZCBpcyAnaHlicmlkJxqTAXRoaXMuY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkLm1hdGNoZXMoJ15bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXszfS1bMDg5YWJdWzAtOWEtZl17M30tWzAtOWEtZl17MTJ9JCcpIHx8IHRoaXMuY2xvdWRfcHJvdmlkZXJfaWQhPSAnaHlicmlkJ0IUChJfY2xvdWRfcHJvdmlkZXJfaWRCGwoZX2Nsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZCJHChRMaXN0Q2x1c3RlcnNSZXNwb25zZRIvCgVpdGVtcxgBIAMoCzIgLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXIiTwoRR2V0Q2x1c3RlclJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESHAoKY2x1c3Rlcl9pZBgCIAEoCUIIukgFcgOwAQEiRwoSR2V0Q2x1c3RlclJlc3BvbnNlEjEKB2NsdXN0ZXIYASABKAsyIC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyIkkKFENyZWF0ZUNsdXN0ZXJSZXF1ZXN0EjEKB2NsdXN0ZXIYASABKAsyIC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyIkoKFUNyZWF0ZUNsdXN0ZXJSZXNwb25zZRIxCgdjbHVzdGVyGAEgASgLMiAucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlciJJChRVcGRhdGVDbHVzdGVyUmVxdWVzdBIxCgdjbHVzdGVyGAEgASgLMiAucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlciJKChVVcGRhdGVDbHVzdGVyUmVzcG9uc2USMQoHY2x1c3RlchgBIAEoCzIgLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXIiggEKFERlbGV0ZUNsdXN0ZXJSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEhwKCmNsdXN0ZXJfaWQYAiABKAlCCLpIBXIDsAEBEhsKDmRlbGV0ZV9iYWNrdXBzGAMgASgISACIAQFCEQoPX2RlbGV0ZV9iYWNrdXBzIhcKFURlbGV0ZUNsdXN0ZXJSZXNwb25zZSJTChVSZXN0YXJ0Q2x1c3RlclJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESHAoKY2x1c3Rlcl9pZBgCIAEoCUIIukgFcgOwAQEiGAoWUmVzdGFydENsdXN0ZXJSZXNwb25zZSJTChVTdXNwZW5kQ2x1c3RlclJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESHAoKY2x1c3Rlcl9pZBgCIAEoCUIIukgFcgOwAQEiGAoWU3VzcGVuZENsdXN0ZXJSZXNwb25zZSI5ChlTdWdnZXN0Q2x1c3Rlck5hbWVSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBIioKGlN1Z2dlc3RDbHVzdGVyTmFtZVJlc3BvbnNlEgwKBG5hbWUYASABKAkiawoZTGlzdFFkcmFudFJlbGVhc2VzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIhCgpjbHVzdGVyX2lkGAIgASgJQgi6SAVyA7ABAUgAiAEBQg0KC19jbHVzdGVyX2lkIlMKGkxpc3RRZHJhbnRSZWxlYXNlc1Jlc3BvbnNlEjUKBWl0ZW1zGAEgAygLMiYucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuUWRyYW50UmVsZWFzZSKyBgoHQ2x1c3RlchIKCgJpZBgBIAEoCRIuCgpjcmVhdGVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIcCgphY2NvdW50X2lkGAMgASgJQgi6SAVyA7ABARIpCgRuYW1lGAQgASgJQhu6SBhyFhAEGEAyEF5bYS16QS1aMC05LV9dKyQSLgoKZGVsZXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASIgoRY2xvdWRfcHJvdmlkZXJfaWQYCiABKAlCB7pIBHICEAMSIAoYY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkGAsgASgJEkQKDWNvbmZpZ3VyYXRpb24YFCABKAsyLS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyQ29uZmlndXJhdGlvbhI0CgVzdGF0ZRhkIAEoCzIlLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJTdGF0ZTqvA7pIqwMaowEKCmNsdXN0ZXIuaWQSGnZhbHVlIG11c3QgYmUgYSB2YWxpZCBVVUlEGnl0aGlzLmlkLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykgfHwgIWhhcyh0aGlzLmNyZWF0ZWRfYXQpGoICCiBjbHVzdGVyLmNsb3VkX3Byb3ZpZGVyX3JlZ2lvbl9pZBJIY2xvdWRfcHJvdmlkZXJfcmVnaW9uX2lkIG11c3QgYmUgYSBVVUlEIGlmIGNsb3VkX3Byb3ZpZGVyX2lkIGlzICdoeWJyaWQnGpMBdGhpcy5jbG91ZF9wcm92aWRlcl9yZWdpb25faWQubWF0Y2hlcygnXlswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezN9LVswODlhYl1bMC05YS1mXXszfS1bMC05YS1mXXsxMn0kJykgfHwgdGhpcy5jbG91ZF9wcm92aWRlcl9pZCE9ICdoeWJyaWQnIsYIChRDbHVzdGVyQ29uZmlndXJhdGlvbhI0ChBsYXN0X21vZGlmaWVkX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIiCg9udW1iZXJfb2Zfbm9kZXMYAiABKA1CCbpIBioEGBQoARI8Cgd2ZXJzaW9uGAMgASgJQia6SCNyITIfXih2KFxkKylcLihcZCspXC4oXGQrKXxsYXRlc3QpJEgAiAEBEhwKCnBhY2thZ2VfaWQYBCABKAlCCLpIBXIDsAEBEk8KFGFkZGl0aW9uYWxfcmVzb3VyY2VzGAUgASgLMiwucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQWRkaXRpb25hbFJlc291cmNlc0gBiAEBElMKFmRhdGFiYXNlX2NvbmZpZ3VyYXRpb24YByABKAsyLi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5EYXRhYmFzZUNvbmZpZ3VyYXRpb25IAogBARJBCg1ub2RlX3NlbGVjdG9yGAggAygLMiAucWRyYW50LmNsb3VkLmNvbW1vbi52MS5LZXlWYWx1ZUIIukgFkgECEAoSQgoLdG9sZXJhdGlvbnMYCSADKAsyIy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5Ub2xlcmF0aW9uQgi6SAWSAQIQChI/Cgthbm5vdGF0aW9ucxgKIAMoCzIgLnFkcmFudC5jbG91ZC5jb21tb24udjEuS2V5VmFsdWVCCLpIBZIBAhAKEjEKGGFsbG93ZWRfaXBfc291cmNlX3JhbmdlcxgLIAMoCUIPukgMkgEJEBQiBXID8AEBEioKF3Jlc2VydmVkX2NwdV9wZXJjZW50YWdlGBQgASgNQgm6SAYqBBhQKAASLQoacmVzZXJ2ZWRfbWVtb3J5X3BlcmNlbnRhZ2UYFSABKA1CCbpIBioEGFAoABJLCghncHVfdHlwZRgWIAEoDjI0LnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJDb25maWd1cmF0aW9uR3B1VHlwZUgDiAEBElcKDnJlc3RhcnRfcG9saWN5GBcgASgOMjoucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlckNvbmZpZ3VyYXRpb25SZXN0YXJ0UG9saWN5SASIAQESXwoScmViYWxhbmNlX3N0cmF0ZWd5GBggASgOMj4ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlckNvbmZpZ3VyYXRpb25SZWJhbGFuY2VTdHJhdGVneUgFiAEBQgoKCF92ZXJzaW9uQhcKFV9hZGRpdGlvbmFsX3Jlc291cmNlc0IZChdfZGF0YWJhc2VfY29uZmlndXJhdGlvbkILCglfZ3B1X3R5cGVCEQoPX3Jlc3RhcnRfcG9saWN5QhUKE19yZWJhbGFuY2Vfc3RyYXRlZ3kitQQKFURhdGFiYXNlQ29uZmlndXJhdGlvbhJRCgpjb2xsZWN0aW9uGAEgASgLMjgucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuRGF0YWJhc2VDb25maWd1cmF0aW9uQ29sbGVjdGlvbkgAiAEBEksKB3N0b3JhZ2UYAiABKAsyNS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5EYXRhYmFzZUNvbmZpZ3VyYXRpb25TdG9yYWdlSAGIAQESSwoHc2VydmljZRgDIAEoCzI1LnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkRhdGFiYXNlQ29uZmlndXJhdGlvblNlcnZpY2VIAogBARJOCglsb2dfbGV2ZWwYBCABKA4yNi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5EYXRhYmFzZUNvbmZpZ3VyYXRpb25Mb2dMZXZlbEgDiAEBEkMKA3RscxgFIAEoCzIxLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkRhdGFiYXNlQ29uZmlndXJhdGlvblRsc0gEiAEBEk8KCWluZmVyZW5jZRgGIAEoCzI3LnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkRhdGFiYXNlQ29uZmlndXJhdGlvbkluZmVyZW5jZUgFiAEBQg0KC19jb2xsZWN0aW9uQgoKCF9zdG9yYWdlQgoKCF9zZXJ2aWNlQgwKCl9sb2dfbGV2ZWxCBgoEX3Rsc0IMCgpfaW5mZXJlbmNlIs0BCh9EYXRhYmFzZUNvbmZpZ3VyYXRpb25Db2xsZWN0aW9uEh8KEnJlcGxpY2F0aW9uX2ZhY3RvchgBIAEoDUgAiAEBEiAKGHdyaXRlX2NvbnNpc3RlbmN5X2ZhY3RvchgCIAEoBRJQCgd2ZWN0b3JzGAMgASgLMj8ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuRGF0YWJhc2VDb25maWd1cmF0aW9uQ29sbGVjdGlvblZlY3RvcnNCFQoTX3JlcGxpY2F0aW9uX2ZhY3RvciJKCiZEYXRhYmFzZUNvbmZpZ3VyYXRpb25Db2xsZWN0aW9uVmVjdG9ycxIUCgdvbl9kaXNrGAEgASgISACIAQFCCgoIX29uX2Rpc2sidQocRGF0YWJhc2VDb25maWd1cmF0aW9uU3RvcmFnZRJVCgtwZXJmb3JtYW5jZRgBIAEoCzJALnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkRhdGFiYXNlQ29uZmlndXJhdGlvblN0b3JhZ2VQZXJmb3JtYW5jZSJdCidEYXRhYmFzZUNvbmZpZ3VyYXRpb25TdG9yYWdlUGVyZm9ybWFuY2USHAoUb3B0aW1pemVyX2NwdV9idWRnZXQYASABKAUSFAoMYXN5bmNfc2NvcmVyGAIgASgIIugBChxEYXRhYmFzZUNvbmZpZ3VyYXRpb25TZXJ2aWNlEjoKB2FwaV9rZXkYASABKAsyJC5xZHJhbnQuY2xvdWQuY29tbW9uLnYxLlNlY3JldEtleVJlZkgAiAEBEkQKEXJlYWRfb25seV9hcGlfa2V5GAIgASgLMiQucWRyYW50LmNsb3VkLmNvbW1vbi52MS5TZWNyZXRLZXlSZWZIAYgBARIQCghqd3RfcmJhYxgDIAEoCBISCgplbmFibGVfdGxzGAQgASgIQgoKCF9hcGlfa2V5QhQKEl9yZWFkX29ubHlfYXBpX2tleSKBAQoYRGF0YWJhc2VDb25maWd1cmF0aW9uVGxzEjIKBGNlcnQYASABKAsyJC5xZHJhbnQuY2xvdWQuY29tbW9uLnYxLlNlY3JldEtleVJlZhIxCgNrZXkYAiABKAsyJC5xZHJhbnQuY2xvdWQuY29tbW9uLnYxLlNlY3JldEtleVJlZiIxCh5EYXRhYmFzZUNvbmZpZ3VyYXRpb25JbmZlcmVuY2USDwoHZW5hYmxlZBgBIAEoCCIjChNBZGRpdGlvbmFsUmVzb3VyY2VzEgwKBGRpc2sYAyABKA0ivQIKClRvbGVyYXRpb24SQwoDa2V5GAEgASgJQja6SDNyMRg/Mi1eKFthLXpBLVowLTldKFstYS16QS1aMC05Xy5dKlthLXpBLVowLTldKT8pPyQSQgoIb3BlcmF0b3IYAiABKA4yKy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5Ub2xlcmF0aW9uT3BlcmF0b3JIAIgBARINCgV2YWx1ZRgDIAEoCRI+CgZlZmZlY3QYBCABKA4yKS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5Ub2xlcmF0aW9uRWZmZWN0SAGIAQESKAoSdG9sZXJhdGlvbl9zZWNvbmRzGAUgASgEQge6SAQyAigASAKIAQFCCwoJX29wZXJhdG9yQgkKB19lZmZlY3RCFQoTX3RvbGVyYXRpb25fc2Vjb25kcyL5AgoMQ2x1c3RlclN0YXRlEg8KB3ZlcnNpb24YASABKAkSEAoIbm9kZXNfdXAYAiABKA0SMAoMcmVzdGFydGVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI0CgVwaGFzZRgEIAEoDjIlLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkNsdXN0ZXJQaGFzZRIOCgZyZWFzb24YBSABKAkSOgoIZW5kcG9pbnQYBiABKAsyKC5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyRW5kcG9pbnQSRwoJcmVzb3VyY2VzGAcgASgLMjQucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3Rlck5vZGVSZXNvdXJjZXNTdW1tYXJ5EkkKEHNjYWxhYmlsaXR5X2luZm8YCCABKAsyLy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DbHVzdGVyU2NhbGFiaWxpdHlJbmZvIk4KD0NsdXN0ZXJFbmRwb2ludBIVCgN1cmwYASABKAlCCLpIBXIDqAEBEhEKCXJlc3RfcG9ydBgCIAEoBRIRCglncnBjX3BvcnQYAyABKAUi0gEKG0NsdXN0ZXJOb2RlUmVzb3VyY2VzU3VtbWFyeRI7CgRkaXNrGAEgASgLMi0ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3Rlck5vZGVSZXNvdXJjZXMSOgoDcmFtGAIgASgLMi0ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3Rlck5vZGVSZXNvdXJjZXMSOgoDY3B1GAMgASgLMi0ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3Rlck5vZGVSZXNvdXJjZXMidAoUQ2x1c3Rlck5vZGVSZXNvdXJjZXMSDAoEYmFzZRgBIAEoARIVCg1jb21wbGltZW50YXJ5GAIgASgBEhIKCmFkZGl0aW9uYWwYAyABKAESEAoIcmVzZXJ2ZWQYBCABKAESEQoJYXZhaWxhYmxlGAUgASgBInsKFkNsdXN0ZXJTY2FsYWJpbGl0eUluZm8SQQoGc3RhdHVzGAEgASgOMjEucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ2x1c3RlclNjYWxhYmlsaXR5U3RhdHVzEhMKBnJlYXNvbhgCIAEoCUgAiAEBQgkKB19yZWFzb24iswEKDVFkcmFudFJlbGVhc2USDwoHdmVyc2lvbhgBIAEoCRIPCgdkZWZhdWx0GAIgASgIEh4KEXJlbGVhc2Vfbm90ZXNfdXJsGAMgASgJSACIAQESFAoHcmVtYXJrcxgEIAEoCUgBiAEBEhMKC2VuZF9vZl9saWZlGAUgASgIEhMKC3VuYXZhaWxhYmxlGAYgASgIQhQKEl9yZWxlYXNlX25vdGVzX3VybEIKCghfcmVtYXJrcyqgAQobQ2x1c3RlckNvbmZpZ3VyYXRpb25HcHVUeXBlEi4KKkNMVVNURVJfQ09ORklHVVJBVElPTl9HUFVfVFlQRV9VTlNQRUNJRklFRBAAEikKJUNMVVNURVJfQ09ORklHVVJBVElPTl9HUFVfVFlQRV9OVklESUEQARImCiJDTFVTVEVSX0NPTkZJR1VSQVRJT05fR1BVX1RZUEVfQU1EEAIq8gEKIUNsdXN0ZXJDb25maWd1cmF0aW9uUmVzdGFydFBvbGljeRI0CjBDTFVTVEVSX0NPTkZJR1VSQVRJT05fUkVTVEFSVF9QT0xJQ1lfVU5TUEVDSUZJRUQQABIwCixDTFVTVEVSX0NPTkZJR1VSQVRJT05fUkVTVEFSVF9QT0xJQ1lfUk9MTElORxABEjEKLUNMVVNURVJfQ09ORklHVVJBVElPTl9SRVNUQVJUX1BPTElDWV9QQVJBTExFTBACEjIKLkNMVVNURVJfQ09ORklHVVJBVElPTl9SRVNUQVJUX1BPTElDWV9BVVRPTUFUSUMQAyqOAgolQ2x1c3RlckNvbmZpZ3VyYXRpb25SZWJhbGFuY2VTdHJhdGVneRI4CjRDTFVTVEVSX0NPTkZJR1VSQVRJT05fUkVCQUxBTkNFX1NUUkFURUdZX1VOU1BFQ0lGSUVEEAASNQoxQ0xVU1RFUl9DT05GSUdVUkFUSU9OX1JFQkFMQU5DRV9TVFJBVEVHWV9CWV9DT1VOVBABEjQKMENMVVNURVJfQ09ORklHVVJBVElPTl9SRUJBTEFOQ0VfU1RSQVRFR1lfQllfU0laRRACEj4KOkNMVVNURVJfQ09ORklHVVJBVElPTl9SRUJBTEFOQ0VfU1RSQVRFR1lfQllfQ09VTlRfQU5EX1NJWkUQAyrVAgodRGF0YWJhc2VDb25maWd1cmF0aW9uTG9nTGV2ZWwSMAosREFUQUJBU0VfQ09ORklHVVJBVElPTl9MT0dfTEVWRUxfVU5TUEVDSUZJRUQQABIqCiZEQVRBQkFTRV9DT05GSUdVUkFUSU9OX0xPR19MRVZFTF9UUkFDRRABEioKJkRBVEFCQVNFX0NPTkZJR1VSQVRJT05fTE9HX0xFVkVMX0RFQlVHEAISKQolREFUQUJBU0VfQ09ORklHVVJBVElPTl9MT0dfTEVWRUxfSU5GTxADEikKJURBVEFCQVNFX0NPTkZJR1VSQVRJT05fTE9HX0xFVkVMX1dBUk4QBBIqCiZEQVRBQkFTRV9DT05GSUdVUkFUSU9OX0xPR19MRVZFTF9FUlJPUhAFEigKJERBVEFCQVNFX0NPTkZJR1VSQVRJT05fTE9HX0xFVkVMX09GRhAGKngKElRvbGVyYXRpb25PcGVyYXRvchIjCh9UT0xFUkFUSU9OX09QRVJBVE9SX1VOU1BFQ0lGSUVEEAASHgoaVE9MRVJBVElPTl9PUEVSQVRPUl9FWElTVFMQARIdChlUT0xFUkFUSU9OX09QRVJBVE9SX0VRVUFMEAIqpAEKEFRvbGVyYXRpb25FZmZlY3QSIQodVE9MRVJBVElPTl9FRkZFQ1RfVU5TUEVDSUZJRUQQABIhCh1UT0xFUkFUSU9OX0VGRkVDVF9OT19TQ0hFRFVMRRABEigKJFRPTEVSQVRJT05fRUZGRUNUX1BSRUZFUl9OT19TQ0hFRFVMRRACEiAKHFRPTEVSQVRJT05fRUZGRUNUX05PX0VYRUNVVEUQAyrDBAoMQ2x1c3RlclBoYXNlEh0KGUNMVVNURVJfUEhBU0VfVU5TUEVDSUZJRUQQABIaChZDTFVTVEVSX1BIQVNFX0NSRUFUSU5HEAESIgoeQ0xVU1RFUl9QSEFTRV9GQUlMRURfVE9fQ1JFQVRFEAISGgoWQ0xVU1RFUl9QSEFTRV9VUERBVElORxADEiIKHkNMVVNURVJfUEhBU0VfRkFJTEVEX1RPX1VQREFURRAEEhkKFUNMVVNURVJfUEhBU0VfU0NBTElORxAFEhsKF0NMVVNURVJfUEhBU0VfVVBHUkFESU5HEAYSHAoYQ0xVU1RFUl9QSEFTRV9TVVNQRU5ESU5HEAcSGwoXQ0xVU1RFUl9QSEFTRV9TVVNQRU5ERUQQCBIjCh9DTFVTVEVSX1BIQVNFX0ZBSUxFRF9UT19TVVNQRU5EEAkSGgoWQ0xVU1RFUl9QSEFTRV9SRVNVTUlORxAKEiIKHkNMVVNURVJfUEhBU0VfRkFJTEVEX1RPX1JFU1VNRRALEhkKFUNMVVNURVJfUEhBU0VfSEVBTFRIWRAMEhsKF0NMVVNURVJfUEhBU0VfTk9UX1JFQURZEA0SHwobQ0xVU1RFUl9QSEFTRV9SRUNPVkVSWV9NT0RFEA4SJAogQ0xVU1RFUl9QSEFTRV9NQU5VQUxfTUFJTlRFTkFOQ0UQDxIgChxDTFVTVEVSX1BIQVNFX0ZBSUxFRF9UT19TWU5DEBASGwoXQ0xVU1RFUl9QSEFTRV9OT1RfRk9VTkQQESqcAQoYQ2x1c3RlclNjYWxhYmlsaXR5U3RhdHVzEioKJkNMVVNURVJfU0NBTEFCSUxJVFlfU1RBVFVTX1VOU1BFQ0lGSUVEEAASKwonQ0xVU1RFUl9TQ0FMQUJJTElUWV9TVEFUVVNfTk9UX1NDQUxBQkxFEAESJwojQ0xVU1RFUl9TQ0FMQUJJTElUWV9TVEFUVVNfU0NBTEFCTEUQAjLLDgoOQ2x1c3RlclNlcnZpY2UStAEKDExpc3RDbHVzdGVycxIsLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkxpc3RDbHVzdGVyc1JlcXVlc3QaLS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5MaXN0Q2x1c3RlcnNSZXNwb25zZSJHirUYDXJlYWQ6Y2x1c3RlcnOC0+STAjASLi9hcGkvY2x1c3Rlci92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vY2x1c3RlcnMSuwEKCkdldENsdXN0ZXISKi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5HZXRDbHVzdGVyUmVxdWVzdBorLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkdldENsdXN0ZXJSZXNwb25zZSJUirUYDXJlYWQ6Y2x1c3RlcnOC0+STAj0SOy9hcGkvY2x1c3Rlci92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vY2x1c3RlcnMve2NsdXN0ZXJfaWR9EtkBCg1DcmVhdGVDbHVzdGVyEi0ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuQ3JlYXRlQ2x1c3RlclJlcXVlc3QaLi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5DcmVhdGVDbHVzdGVyUmVzcG9uc2UiaYq1GA53cml0ZTpjbHVzdGVyc5K1GBJjbHVzdGVyLmFjY291bnRfaWSC0+STAjs6ASoiNi9hcGkvY2x1c3Rlci92MS9hY2NvdW50cy97Y2x1c3Rlci5hY2NvdW50X2lkfS9jbHVzdGVycxLmAQoNVXBkYXRlQ2x1c3RlchItLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLlVwZGF0ZUNsdXN0ZXJSZXF1ZXN0Gi4ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuVXBkYXRlQ2x1c3RlclJlc3BvbnNlInaKtRgOd3JpdGU6Y2x1c3RlcnOStRgSY2x1c3Rlci5hY2NvdW50X2lkgtPkkwJIOgEqGkMvYXBpL2NsdXN0ZXIvdjEvYWNjb3VudHMve2NsdXN0ZXIuYWNjb3VudF9pZH0vY2x1c3RlcnMve2NsdXN0ZXIuaWR9EsYBCg1EZWxldGVDbHVzdGVyEi0ucWRyYW50LmNsb3VkLmNsdXN0ZXIudjEuRGVsZXRlQ2x1c3RlclJlcXVlc3QaLi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5EZWxldGVDbHVzdGVyUmVzcG9uc2UiVoq1GA9kZWxldGU6Y2x1c3RlcnOC0+STAj0qOy9hcGkvY2x1c3Rlci92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vY2x1c3RlcnMve2NsdXN0ZXJfaWR9EtABCg5SZXN0YXJ0Q2x1c3RlchIuLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLlJlc3RhcnRDbHVzdGVyUmVxdWVzdBovLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLlJlc3RhcnRDbHVzdGVyUmVzcG9uc2UiXYq1GA53cml0ZTpjbHVzdGVyc4LT5JMCRSJDL2FwaS9jbHVzdGVyL3YxL2FjY291bnRzL3thY2NvdW50X2lkfS9jbHVzdGVycy97Y2x1c3Rlcl9pZH0vcmVzdGFydBLQAQoOU3VzcGVuZENsdXN0ZXISLi5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5TdXNwZW5kQ2x1c3RlclJlcXVlc3QaLy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5TdXNwZW5kQ2x1c3RlclJlc3BvbnNlIl2KtRgOd3JpdGU6Y2x1c3RlcnOC0+STAkUiQy9hcGkvY2x1c3Rlci92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vY2x1c3RlcnMve2NsdXN0ZXJfaWR9L3N1c3BlbmQSxgEKElN1Z2dlc3RDbHVzdGVyTmFtZRIyLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLlN1Z2dlc3RDbHVzdGVyTmFtZVJlcXVlc3QaMy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5TdWdnZXN0Q2x1c3Rlck5hbWVSZXNwb25zZSJHirUYAILT5JMCPRI7L2FwaS9jbHVzdGVyL3YxL2FjY291bnRzL3thY2NvdW50X2lkfS9jbHVzdGVycy9zdWdnZXN0LW5hbWUSxgEKEkxpc3RRZHJhbnRSZWxlYXNlcxIyLnFkcmFudC5jbG91ZC5jbHVzdGVyLnYxLkxpc3RRZHJhbnRSZWxlYXNlc1JlcXVlc3QaMy5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MS5MaXN0UWRyYW50UmVsZWFzZXNSZXNwb25zZSJHirUYDXJlYWQ6Y2x1c3RlcnOC0+STAjASLi9hcGkvY2x1c3Rlci92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vcmVsZWFzZXNC/gEKG2NvbS5xZHJhbnQuY2xvdWQuY2x1c3Rlci52MUIMQ2x1c3RlclByb3RvUAFaUmdpdGh1Yi5jb20vcWRyYW50L3FkcmFudC1jbG91ZC1wdWJsaWMtYXBpL2dlbi9nby9xZHJhbnQvY2xvdWQvY2x1c3Rlci92MTtjbHVzdGVydjGiAgNRQ0OqAhdRZHJhbnQuQ2xvdWQuQ2x1c3Rlci5WMcoCF1FkcmFudFxDbG91ZFxDbHVzdGVyXFYx4gIjUWRyYW50XENsb3VkXENsdXN0ZXJcVjFcR1BCTWV0YWRhdGHqAhpRZHJhbnQ6OkNsb3VkOjpDbHVzdGVyOjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_google_api_annotations, file_google_protobuf_timestamp, file_qdrant_cloud_common_v1_common]); /** * Describes the message qdrant.cloud.cluster.v1.ListClustersRequest. @@ -252,12 +252,19 @@ export const ClusterNodeResourcesSummarySchema = /*@__PURE__*/ export const ClusterNodeResourcesSchema = /*@__PURE__*/ messageDesc(file_qdrant_cloud_cluster_v1_cluster, 33); +/** + * Describes the message qdrant.cloud.cluster.v1.ClusterScalabilityInfo. + * Use `create(ClusterScalabilityInfoSchema)` to create a new message. + */ +export const ClusterScalabilityInfoSchema = /*@__PURE__*/ + messageDesc(file_qdrant_cloud_cluster_v1_cluster, 34); + /** * Describes the message qdrant.cloud.cluster.v1.QdrantRelease. * Use `create(QdrantReleaseSchema)` to create a new message. */ export const QdrantReleaseSchema = /*@__PURE__*/ - messageDesc(file_qdrant_cloud_cluster_v1_cluster, 34); + messageDesc(file_qdrant_cloud_cluster_v1_cluster, 35); /** * Describes the enum qdrant.cloud.cluster.v1.ClusterConfigurationGpuType. @@ -360,6 +367,20 @@ export const ClusterPhaseSchema = /*@__PURE__*/ export const ClusterPhase = /*@__PURE__*/ tsEnum(ClusterPhaseSchema); +/** + * Describes the enum qdrant.cloud.cluster.v1.ClusterScalabilityStatus. + */ +export const ClusterScalabilityStatusSchema = /*@__PURE__*/ + enumDesc(file_qdrant_cloud_cluster_v1_cluster, 7); + +/** + * ClusterScalabilityStatus defines the scalability states of a cluster. + * + * @generated from enum qdrant.cloud.cluster.v1.ClusterScalabilityStatus + */ +export const ClusterScalabilityStatus = /*@__PURE__*/ + tsEnum(ClusterScalabilityStatusSchema); + /** * ClusterService is the API used to configure cluster objects. * diff --git a/proto/qdrant/cloud/cluster/v1/cluster.proto b/proto/qdrant/cloud/cluster/v1/cluster.proto index 3ae77af5..3bbeac07 100644 --- a/proto/qdrant/cloud/cluster/v1/cluster.proto +++ b/proto/qdrant/cloud/cluster/v1/cluster.proto @@ -632,6 +632,8 @@ message ClusterState { // The resources used by the cluster per node. // For the complete cluster you have to multiply by cluster.configuration.number_of_nodes ClusterNodeResourcesSummary resources = 7; + // Whether the cluster can be scaled up or down. + ClusterScalabilityInfo scalability_info = 8; } // Endpoint information to access the qdrant cluster (aka database). @@ -672,6 +674,25 @@ message ClusterNodeResources { double available = 5; } +// ClusterScalabilityStatus defines the scalability states of a cluster. +enum ClusterScalabilityStatus { + // Scalability status is unspecified. + CLUSTER_SCALABILITY_STATUS_UNSPECIFIED = 0; + // The cluster is not scalable. + CLUSTER_SCALABILITY_STATUS_NOT_SCALABLE = 1; + // The cluster supports scaling operations. + CLUSTER_SCALABILITY_STATUS_SCALABLE = 2; +} + +// ClusterScalabilityInfo provides information about the +message ClusterScalabilityInfo { + // The current scalability status of the cluster. + ClusterScalabilityStatus status = 1; + // Optional human-readable reason providing more context about the scalability status. + // When a cluster is not scalable, this field explains why. + optional string reason = 2; +} + // buf:lint:ignore QDRANT_CLOUD_REQUIRED_ENTITY_FIELDS // QdrantRelease represent a single Qdrant release message QdrantRelease {