//
//Сервис реализует функционал управления объектами строительства телеметрии

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.30.0
// 	protoc        v4.23.1
// source: keyapis/telemetry_control/v1/keyapis_telemetry_control_building_v1.proto

package keyapis_telemetry_control_v1

import (
	_ "google.golang.org/genproto/googleapis/api/annotations"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
	reflect "reflect"
	sync "sync"
)

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

// Справочник типов сортировки
type BuildingGroupPaging_OrderByType int32

const (
	// Значение не указано
	BuildingGroupPaging_ORDER_BY_TYPE_UNKNOWN BuildingGroupPaging_OrderByType = 0
	// По Идентификатору группы пользователя
	BuildingGroupPaging_GROUP_ID BuildingGroupPaging_OrderByType = 1
	// По Объекту строительства
	BuildingGroupPaging_BUILDING_ID BuildingGroupPaging_OrderByType = 2
)

// Enum value maps for BuildingGroupPaging_OrderByType.
var (
	BuildingGroupPaging_OrderByType_name = map[int32]string{
		0: "ORDER_BY_TYPE_UNKNOWN",
		1: "GROUP_ID",
		2: "BUILDING_ID",
	}
	BuildingGroupPaging_OrderByType_value = map[string]int32{
		"ORDER_BY_TYPE_UNKNOWN": 0,
		"GROUP_ID":              1,
		"BUILDING_ID":           2,
	}
)

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

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

func (BuildingGroupPaging_OrderByType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_enumTypes[0].Descriptor()
}

func (BuildingGroupPaging_OrderByType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_enumTypes[0]
}

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

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

// Справочник типов направлений сортировки
type BuildingGroupPaging_DirectionType int32

const (
	// Значение не указано
	BuildingGroupPaging_DIRECTION_TYPE_UNKNOWN BuildingGroupPaging_DirectionType = 0
	// От большего к меньшему
	BuildingGroupPaging_DESC BuildingGroupPaging_DirectionType = 1
	// От меньшего к большему
	BuildingGroupPaging_ASC BuildingGroupPaging_DirectionType = 2
)

// Enum value maps for BuildingGroupPaging_DirectionType.
var (
	BuildingGroupPaging_DirectionType_name = map[int32]string{
		0: "DIRECTION_TYPE_UNKNOWN",
		1: "DESC",
		2: "ASC",
	}
	BuildingGroupPaging_DirectionType_value = map[string]int32{
		"DIRECTION_TYPE_UNKNOWN": 0,
		"DESC":                   1,
		"ASC":                    2,
	}
)

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

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

func (BuildingGroupPaging_DirectionType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_enumTypes[1].Descriptor()
}

func (BuildingGroupPaging_DirectionType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_enumTypes[1]
}

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

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

// Справочник типов сортировки
type BuildingPaging_OrderByType int32

const (
	// Значение не указано
	BuildingPaging_ORDER_BY_TYPE_UNKNOWN BuildingPaging_OrderByType = 0
	// По уникальному ключу
	BuildingPaging_ID BuildingPaging_OrderByType = 1
	// По наименованию
	BuildingPaging_TITLE BuildingPaging_OrderByType = 2
	// По дате создания
	BuildingPaging_CREATED_AT BuildingPaging_OrderByType = 3
	// По дате изменения
	BuildingPaging_CHANGED_AT BuildingPaging_OrderByType = 4
	// По ФИАС
	BuildingPaging_FIAS_ID BuildingPaging_OrderByType = 5
)

// Enum value maps for BuildingPaging_OrderByType.
var (
	BuildingPaging_OrderByType_name = map[int32]string{
		0: "ORDER_BY_TYPE_UNKNOWN",
		1: "ID",
		2: "TITLE",
		3: "CREATED_AT",
		4: "CHANGED_AT",
		5: "FIAS_ID",
	}
	BuildingPaging_OrderByType_value = map[string]int32{
		"ORDER_BY_TYPE_UNKNOWN": 0,
		"ID":                    1,
		"TITLE":                 2,
		"CREATED_AT":            3,
		"CHANGED_AT":            4,
		"FIAS_ID":               5,
	}
)

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

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

func (BuildingPaging_OrderByType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_enumTypes[2].Descriptor()
}

func (BuildingPaging_OrderByType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_enumTypes[2]
}

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

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

// Справочник типов направлений сортировки
type BuildingPaging_DirectionType int32

const (
	// Значение не указано
	BuildingPaging_DIRECTION_TYPE_UNKNOWN BuildingPaging_DirectionType = 0
	// От большего к меньшему
	BuildingPaging_DESC BuildingPaging_DirectionType = 1
	// От меньшего к большему
	BuildingPaging_ASC BuildingPaging_DirectionType = 2
)

// Enum value maps for BuildingPaging_DirectionType.
var (
	BuildingPaging_DirectionType_name = map[int32]string{
		0: "DIRECTION_TYPE_UNKNOWN",
		1: "DESC",
		2: "ASC",
	}
	BuildingPaging_DirectionType_value = map[string]int32{
		"DIRECTION_TYPE_UNKNOWN": 0,
		"DESC":                   1,
		"ASC":                    2,
	}
)

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

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

func (BuildingPaging_DirectionType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_enumTypes[3].Descriptor()
}

func (BuildingPaging_DirectionType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_enumTypes[3]
}

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

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

// Справочник МРФ (Макрорегионы)
type Building_MrfType int32

const (
	// Значение не указано
	Building_MRF_TYPE_UNKNOWN Building_MrfType = 0
	// Центр
	Building_TSENTR Building_MrfType = 1
	// Юг
	Building_YUG Building_MrfType = 2
	// Урал
	Building_URAL Building_MrfType = 3
	// Сибирь
	Building_SIBIR Building_MrfType = 4
	// Северо-Запад
	Building_SEVERO_ZAPAD Building_MrfType = 5
	// Дальний Восток
	Building_DALNIY_VOSTOK Building_MrfType = 6
	// Волга
	Building_VOLGA Building_MrfType = 7
)

// Enum value maps for Building_MrfType.
var (
	Building_MrfType_name = map[int32]string{
		0: "MRF_TYPE_UNKNOWN",
		1: "TSENTR",
		2: "YUG",
		3: "URAL",
		4: "SIBIR",
		5: "SEVERO_ZAPAD",
		6: "DALNIY_VOSTOK",
		7: "VOLGA",
	}
	Building_MrfType_value = map[string]int32{
		"MRF_TYPE_UNKNOWN": 0,
		"TSENTR":           1,
		"YUG":              2,
		"URAL":             3,
		"SIBIR":            4,
		"SEVERO_ZAPAD":     5,
		"DALNIY_VOSTOK":    6,
		"VOLGA":            7,
	}
)

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

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

func (Building_MrfType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_enumTypes[4].Descriptor()
}

func (Building_MrfType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_enumTypes[4]
}

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

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

// Справочник РФ (Регионы)
type Building_RfType int32

const (
	// Значение не указано
	Building_RF_TYPE_UNKNOWN Building_RfType = 0
	// Республика Башкортостан
	Building_UFA Building_RfType = 1
	// Кировская область
	Building_KIROV Building_RfType = 2
	// Ивановский филиал
	Building_IVANOVO Building_RfType = 3
	// Калужский филиал
	Building_KALUGA Building_RfType = 4
	// Костромской филиал
	Building_KOSTROMA Building_RfType = 5
	// Курский филиал
	Building_KURSK Building_RfType = 6
	// Липецкий филиал
	Building_LIPETSK Building_RfType = 7
	// Московская область
	Building_MOSOBLAST Building_RfType = 8
	// Орловский филиал
	Building_OREL Building_RfType = 9
	// Рязанский филиал
	Building_RYAZAN Building_RfType = 10
	// Тамбовский филиал
	Building_TAMBOV Building_RfType = 11
	// Тверской филиал
	Building_TVER Building_RfType = 12
	// Ярославский филиал
	Building_YAROSLAVL Building_RfType = 13
	// Смоленский филиал
	Building_SMOLENSK Building_RfType = 14
	// Тульский филиал
	Building_TULA Building_RfType = 15
	// Москва
	Building_MOSCOW Building_RfType = 16
	// ЕАО
	Building_EAO Building_RfType = 17
	// Филиал в Тюменской и Курганской областях
	Building_KURGAN Building_RfType = 18
	// Филиал в Тюменской и Курганской областях
	Building_TUMEN Building_RfType = 19
	// Ханты-Мансийский филиал
	Building_HANTY Building_RfType = 20
	// Амурская область
	Building_AMUR Building_RfType = 21
	// Камчатский край
	Building_KAMCHATKA Building_RfType = 22
	// Магаданская область
	Building_MAGADAN Building_RfType = 23
	// Приморский край
	Building_PRIMORYE Building_RfType = 24
	// Сахалинская область
	Building_SAKHALIN Building_RfType = 25
	// Хабаровский край
	Building_KHABAROVSK Building_RfType = 26
	// Забайкальский край
	Building_CHITA Building_RfType = 27
	// ЧАО
	Building_CHUKOTKA Building_RfType = 28
	// Архангельск
	Building_ARCHANGELSK Building_RfType = 29
	// Вологда
	Building_VOLOGDA Building_RfType = 30
	// Калининград
	Building_KALININGRAD Building_RfType = 31
	// Карелия
	Building_KARELIA Building_RfType = 32
	// Коми
	Building_KOMI Building_RfType = 33
	// Лен область
	Building_LENOBLAST Building_RfType = 34
	// Мурманск
	Building_MURMANSK Building_RfType = 35
	// Новгород
	Building_NOVGOROD Building_RfType = 36
	// Псков
	Building_PSKOV Building_RfType = 37
	// СПб
	Building_SPB Building_RfType = 38
	// Алтайский филиал
	Building_ALTAI Building_RfType = 39
	// Бурятский филиал
	Building_BURYATIYA Building_RfType = 40
	// Иркутский филиал
	Building_IRKUTSK Building_RfType = 41
	// Кемеровский филиал
	Building_KEMEROVO Building_RfType = 42
	// Красноярский филиал
	Building_KRASNOYARSK Building_RfType = 43
	// Омский филиал
	Building_OMSK Building_RfType = 44
	// Республика Хакасия
	Building_HAKASIYA Building_RfType = 45
	// Республика Алтай
	Building_RALTAY Building_RfType = 46
	// Республика Тыва
	Building_TUVA Building_RfType = 47
	// Томский филиал
	Building_TOMSK Building_RfType = 48
	// Оренбургская область
	Building_ORENBURG Building_RfType = 49
	// Белгородский филиал
	Building_BELGOROD Building_RfType = 50
	// Саха
	Building_SAKHA Building_RfType = 51
	// Екатеринбургский филиал
	Building_EKT Building_RfType = 52
	// Волгоградский филиал
	Building_VOLGOGRAD Building_RfType = 53
	// Ямало-Ненецкий филиал
	Building_YAMAL Building_RfType = 54
	// Челябинский филиал
	Building_CHELYABINSK Building_RfType = 55
	// Пермский филиал ПАО "Ростелеком"
	Building_PERM Building_RfType = 56
	// Республика Марий Эл
	Building_MARYEL Building_RfType = 57
	// Пензенская область
	Building_PENZA Building_RfType = 58
	// Ингушский филиал
	Building_INGUSHETIA Building_RfType = 59
	// Кабардино-Балкарский филиал
	Building_NALCHIK Building_RfType = 60
	// Калмыцкий филиал
	Building_ELISTA Building_RfType = 61
	// Ростовский филиал
	Building_ROSTOV Building_RfType = 62
	// Дагестанский филиал
	Building_MAHACHKALA Building_RfType = 63
	// Республика Мордовия
	Building_MORDOVIYA Building_RfType = 64
	// Республика Татарстан (Татарстан)
	Building_KAZAN Building_RfType = 65
	// Самарская область
	Building_SAMARA Building_RfType = 66
	// Саратовская область
	Building_SARATOV Building_RfType = 67
	// Удмуртская Республика
	Building_UDMURTIYA Building_RfType = 68
	// Ульяновская область
	Building_ULYANOVSK Building_RfType = 69
	// Чувашская Республика - Чувашия
	Building_CHUVASHIYA Building_RfType = 70
	// Нижегородская область
	Building_NNOVGOROD Building_RfType = 71
	// Брянский филиал
	Building_BRYANSK Building_RfType = 72
	// Владимирский филиал
	Building_VLADIMIR Building_RfType = 73
	// Воронежский филиал
	Building_VORONEZH Building_RfType = 74
	// Северо-Осетинский филиал
	Building_VLADIKAVKAZ Building_RfType = 75
	// Ставропольский филиал
	Building_STAVROPOL Building_RfType = 76
	// Республика Карачаево-Черкесская
	Building_CHERKESSK Building_RfType = 77
	// Республика Адыгея
	Building_MAYKOP Building_RfType = 78
	// Астраханский филиал
	Building_ASTRAKHAN Building_RfType = 79
	// Краснодарский филиал
	Building_KRASNODAR Building_RfType = 80
	// Тестовый
	Building_TEST Building_RfType = 81
	// Новосибирский филиал
	Building_NOVOSIBIRSK Building_RfType = 82
)

// Enum value maps for Building_RfType.
var (
	Building_RfType_name = map[int32]string{
		0:  "RF_TYPE_UNKNOWN",
		1:  "UFA",
		2:  "KIROV",
		3:  "IVANOVO",
		4:  "KALUGA",
		5:  "KOSTROMA",
		6:  "KURSK",
		7:  "LIPETSK",
		8:  "MOSOBLAST",
		9:  "OREL",
		10: "RYAZAN",
		11: "TAMBOV",
		12: "TVER",
		13: "YAROSLAVL",
		14: "SMOLENSK",
		15: "TULA",
		16: "MOSCOW",
		17: "EAO",
		18: "KURGAN",
		19: "TUMEN",
		20: "HANTY",
		21: "AMUR",
		22: "KAMCHATKA",
		23: "MAGADAN",
		24: "PRIMORYE",
		25: "SAKHALIN",
		26: "KHABAROVSK",
		27: "CHITA",
		28: "CHUKOTKA",
		29: "ARCHANGELSK",
		30: "VOLOGDA",
		31: "KALININGRAD",
		32: "KARELIA",
		33: "KOMI",
		34: "LENOBLAST",
		35: "MURMANSK",
		36: "NOVGOROD",
		37: "PSKOV",
		38: "SPB",
		39: "ALTAI",
		40: "BURYATIYA",
		41: "IRKUTSK",
		42: "KEMEROVO",
		43: "KRASNOYARSK",
		44: "OMSK",
		45: "HAKASIYA",
		46: "RALTAY",
		47: "TUVA",
		48: "TOMSK",
		49: "ORENBURG",
		50: "BELGOROD",
		51: "SAKHA",
		52: "EKT",
		53: "VOLGOGRAD",
		54: "YAMAL",
		55: "CHELYABINSK",
		56: "PERM",
		57: "MARYEL",
		58: "PENZA",
		59: "INGUSHETIA",
		60: "NALCHIK",
		61: "ELISTA",
		62: "ROSTOV",
		63: "MAHACHKALA",
		64: "MORDOVIYA",
		65: "KAZAN",
		66: "SAMARA",
		67: "SARATOV",
		68: "UDMURTIYA",
		69: "ULYANOVSK",
		70: "CHUVASHIYA",
		71: "NNOVGOROD",
		72: "BRYANSK",
		73: "VLADIMIR",
		74: "VORONEZH",
		75: "VLADIKAVKAZ",
		76: "STAVROPOL",
		77: "CHERKESSK",
		78: "MAYKOP",
		79: "ASTRAKHAN",
		80: "KRASNODAR",
		81: "TEST",
		82: "NOVOSIBIRSK",
	}
	Building_RfType_value = map[string]int32{
		"RF_TYPE_UNKNOWN": 0,
		"UFA":             1,
		"KIROV":           2,
		"IVANOVO":         3,
		"KALUGA":          4,
		"KOSTROMA":        5,
		"KURSK":           6,
		"LIPETSK":         7,
		"MOSOBLAST":       8,
		"OREL":            9,
		"RYAZAN":          10,
		"TAMBOV":          11,
		"TVER":            12,
		"YAROSLAVL":       13,
		"SMOLENSK":        14,
		"TULA":            15,
		"MOSCOW":          16,
		"EAO":             17,
		"KURGAN":          18,
		"TUMEN":           19,
		"HANTY":           20,
		"AMUR":            21,
		"KAMCHATKA":       22,
		"MAGADAN":         23,
		"PRIMORYE":        24,
		"SAKHALIN":        25,
		"KHABAROVSK":      26,
		"CHITA":           27,
		"CHUKOTKA":        28,
		"ARCHANGELSK":     29,
		"VOLOGDA":         30,
		"KALININGRAD":     31,
		"KARELIA":         32,
		"KOMI":            33,
		"LENOBLAST":       34,
		"MURMANSK":        35,
		"NOVGOROD":        36,
		"PSKOV":           37,
		"SPB":             38,
		"ALTAI":           39,
		"BURYATIYA":       40,
		"IRKUTSK":         41,
		"KEMEROVO":        42,
		"KRASNOYARSK":     43,
		"OMSK":            44,
		"HAKASIYA":        45,
		"RALTAY":          46,
		"TUVA":            47,
		"TOMSK":           48,
		"ORENBURG":        49,
		"BELGOROD":        50,
		"SAKHA":           51,
		"EKT":             52,
		"VOLGOGRAD":       53,
		"YAMAL":           54,
		"CHELYABINSK":     55,
		"PERM":            56,
		"MARYEL":          57,
		"PENZA":           58,
		"INGUSHETIA":      59,
		"NALCHIK":         60,
		"ELISTA":          61,
		"ROSTOV":          62,
		"MAHACHKALA":      63,
		"MORDOVIYA":       64,
		"KAZAN":           65,
		"SAMARA":          66,
		"SARATOV":         67,
		"UDMURTIYA":       68,
		"ULYANOVSK":       69,
		"CHUVASHIYA":      70,
		"NNOVGOROD":       71,
		"BRYANSK":         72,
		"VLADIMIR":        73,
		"VORONEZH":        74,
		"VLADIKAVKAZ":     75,
		"STAVROPOL":       76,
		"CHERKESSK":       77,
		"MAYKOP":          78,
		"ASTRAKHAN":       79,
		"KRASNODAR":       80,
		"TEST":            81,
		"NOVOSIBIRSK":     82,
	}
)

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

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

func (Building_RfType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_enumTypes[5].Descriptor()
}

func (Building_RfType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_enumTypes[5]
}

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

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

// Статусы объектов строительства
type Building_StatusType int32

const (
	// Значение не указано
	Building_STATUS_TYPE_UNKNOWN Building_StatusType = 0
	// СМР
	Building_BUILDING Building_StatusType = 1
	// Реализован
	Building_ACCEPTANCE Building_StatusType = 2
	// Обслуживание
	Building_ACTIVE Building_StatusType = 3
	// Снят с обслуживания
	Building_ARCHIVE Building_StatusType = 4
	// Отказ от заключения договора
	Building_CANCELLED Building_StatusType = 5
	// Тестовый
	Building_TEST_STATUS_TYPE Building_StatusType = 6
)

// Enum value maps for Building_StatusType.
var (
	Building_StatusType_name = map[int32]string{
		0: "STATUS_TYPE_UNKNOWN",
		1: "BUILDING",
		2: "ACCEPTANCE",
		3: "ACTIVE",
		4: "ARCHIVE",
		5: "CANCELLED",
		6: "TEST_STATUS_TYPE",
	}
	Building_StatusType_value = map[string]int32{
		"STATUS_TYPE_UNKNOWN": 0,
		"BUILDING":            1,
		"ACCEPTANCE":          2,
		"ACTIVE":              3,
		"ARCHIVE":             4,
		"CANCELLED":           5,
		"TEST_STATUS_TYPE":    6,
	}
)

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

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

func (Building_StatusType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_enumTypes[6].Descriptor()
}

func (Building_StatusType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_enumTypes[6]
}

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

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

// Запрос сохранения объекта строительства
type PostBuildingRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Объект строительства
	Data *Building `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
}

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

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

func (*PostBuildingRequest) ProtoMessage() {}

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

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

func (x *PostBuildingRequest) GetData() *Building {
	if x != nil {
		return x.Data
	}
	return nil
}

// Запрос сохранения связей объектов строительства и группы пользователя
type PutBuildingGroupAttachRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Связь объекта строительства и группы пользователя
	BuildingGroup *BuildingGroup `protobuf:"bytes,1,opt,name=building_group,json=buildingGroup,proto3" json:"building_group,omitempty"`
}

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

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

func (*PutBuildingGroupAttachRequest) ProtoMessage() {}

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

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

func (x *PutBuildingGroupAttachRequest) GetBuildingGroup() *BuildingGroup {
	if x != nil {
		return x.BuildingGroup
	}
	return nil
}

// Ответ на запрос сохранения объекта строительства
type PostBuildingResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*PostBuildingResponse_Data
	Type isPostBuildingResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*PostBuildingResponse) ProtoMessage() {}

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

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

func (m *PostBuildingResponse) GetType() isPostBuildingResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *PostBuildingResponse) GetData() *Building {
	if x, ok := x.GetType().(*PostBuildingResponse_Data); ok {
		return x.Data
	}
	return nil
}

type isPostBuildingResponse_Type interface {
	isPostBuildingResponse_Type()
}

type PostBuildingResponse_Data struct {
	// Объект строительства
	Data *Building `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

func (*PostBuildingResponse_Data) isPostBuildingResponse_Type() {}

// Ответ на запрос сохранения связи объекта строительства и группы пользователя
type PutBuildingGroupAttachResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*PutBuildingGroupAttachResponse) ProtoMessage() {}

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

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

// Запрос получения объекта строительства
type GetBuildingRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор объекта строительства
	Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
}

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

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

func (*GetBuildingRequest) ProtoMessage() {}

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

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

func (x *GetBuildingRequest) GetId() int32 {
	if x != nil {
		return x.Id
	}
	return 0
}

// Ответ на запрос получения объекта строительства
type GetBuildingResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetBuildingResponse_Data
	Type isGetBuildingResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*GetBuildingResponse) ProtoMessage() {}

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

// Deprecated: Use GetBuildingResponse.ProtoReflect.Descriptor instead.
func (*GetBuildingResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_rawDescGZIP(), []int{5}
}

func (m *GetBuildingResponse) GetType() isGetBuildingResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetBuildingResponse) GetData() *Building {
	if x, ok := x.GetType().(*GetBuildingResponse_Data); ok {
		return x.Data
	}
	return nil
}

type isGetBuildingResponse_Type interface {
	isGetBuildingResponse_Type()
}

type GetBuildingResponse_Data struct {
	// Объект строительства
	Data *Building `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

func (*GetBuildingResponse_Data) isGetBuildingResponse_Type() {}

// Запрос получения списка
type GetBuildingListRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Фильтр индикаторов
	Filter *BuildingFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
	// Вариант разбиения на страницы
	//
	// Types that are assignable to Pagination:
	//
	//	*GetBuildingListRequest_Paging
	Pagination isGetBuildingListRequest_Pagination `protobuf_oneof:"pagination"`
}

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

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

func (*GetBuildingListRequest) ProtoMessage() {}

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

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

func (x *GetBuildingListRequest) GetFilter() *BuildingFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

func (m *GetBuildingListRequest) GetPagination() isGetBuildingListRequest_Pagination {
	if m != nil {
		return m.Pagination
	}
	return nil
}

func (x *GetBuildingListRequest) GetPaging() *BuildingPaging {
	if x, ok := x.GetPagination().(*GetBuildingListRequest_Paging); ok {
		return x.Paging
	}
	return nil
}

type isGetBuildingListRequest_Pagination interface {
	isGetBuildingListRequest_Pagination()
}

type GetBuildingListRequest_Paging struct {
	// Пагинация по индикаторам
	Paging *BuildingPaging `protobuf:"bytes,2,opt,name=paging,proto3,oneof"`
}

func (*GetBuildingListRequest_Paging) isGetBuildingListRequest_Pagination() {}

// Запрос получения списка
type GetBuildingGroupListRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Фильтр связей объектов строительства и группы пользователя
	Filter *BuildingGroupFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
	// Вариант разбиения на страницы
	//
	// Types that are assignable to Pagination:
	//
	//	*GetBuildingGroupListRequest_Paging
	Pagination isGetBuildingGroupListRequest_Pagination `protobuf_oneof:"pagination"`
}

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

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

func (*GetBuildingGroupListRequest) ProtoMessage() {}

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

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

func (x *GetBuildingGroupListRequest) GetFilter() *BuildingGroupFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

func (m *GetBuildingGroupListRequest) GetPagination() isGetBuildingGroupListRequest_Pagination {
	if m != nil {
		return m.Pagination
	}
	return nil
}

func (x *GetBuildingGroupListRequest) GetPaging() *BuildingGroupPaging {
	if x, ok := x.GetPagination().(*GetBuildingGroupListRequest_Paging); ok {
		return x.Paging
	}
	return nil
}

type isGetBuildingGroupListRequest_Pagination interface {
	isGetBuildingGroupListRequest_Pagination()
}

type GetBuildingGroupListRequest_Paging struct {
	// Пагинация
	Paging *BuildingGroupPaging `protobuf:"bytes,2,opt,name=paging,proto3,oneof"`
}

func (*GetBuildingGroupListRequest_Paging) isGetBuildingGroupListRequest_Pagination() {}

// Пагинация связей объектов строительства и группы пользователя
type BuildingGroupPaging struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип значения сортировки.
	// По умолчанию: ID
	OrderByType BuildingGroupPaging_OrderByType `protobuf:"varint,1,opt,name=order_by_type,json=orderByType,proto3,enum=keyapis.telemetry_control.v1.BuildingGroupPaging_OrderByType" json:"order_by_type,omitempty"`
	// Тип направления сортировки.
	// По умолчанию: DESC
	DirectionType BuildingGroupPaging_DirectionType `protobuf:"varint,2,opt,name=direction_type,json=directionType,proto3,enum=keyapis.telemetry_control.v1.BuildingGroupPaging_DirectionType" json:"direction_type,omitempty"`
	// Количество записей на страницу.
	// Минимальное значение: 1.
	// Максимальное значение: 100.
	// По умолчанию: 20.
	// Если значение 0 (не передано), то выставляем значение по умолчанию
	Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"`
	// Сдвиг.
	// По умолчанию: 0
	Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"`
}

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

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

func (*BuildingGroupPaging) ProtoMessage() {}

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

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

func (x *BuildingGroupPaging) GetOrderByType() BuildingGroupPaging_OrderByType {
	if x != nil {
		return x.OrderByType
	}
	return BuildingGroupPaging_ORDER_BY_TYPE_UNKNOWN
}

func (x *BuildingGroupPaging) GetDirectionType() BuildingGroupPaging_DirectionType {
	if x != nil {
		return x.DirectionType
	}
	return BuildingGroupPaging_DIRECTION_TYPE_UNKNOWN
}

func (x *BuildingGroupPaging) GetLimit() int32 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *BuildingGroupPaging) GetOffset() int32 {
	if x != nil {
		return x.Offset
	}
	return 0
}

// Пагинация объектов строительства
type BuildingPaging struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип значения сортировки.
	// По умолчанию: ID
	OrderByType BuildingPaging_OrderByType `protobuf:"varint,1,opt,name=order_by_type,json=orderByType,proto3,enum=keyapis.telemetry_control.v1.BuildingPaging_OrderByType" json:"order_by_type,omitempty"`
	// Тип направления сортировки.
	// По умолчанию: DESC
	DirectionType BuildingPaging_DirectionType `protobuf:"varint,2,opt,name=direction_type,json=directionType,proto3,enum=keyapis.telemetry_control.v1.BuildingPaging_DirectionType" json:"direction_type,omitempty"`
	// Количество записей на страницу.
	// Минимальное значение: 1.
	// Максимальное значение: 100.
	// По умолчанию: 20.
	// Если значение 0 (не передано), то выставляем значение по умолчанию
	Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"`
	// Сдвиг.
	// По умолчанию: 0
	Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"`
}

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

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

func (*BuildingPaging) ProtoMessage() {}

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

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

func (x *BuildingPaging) GetOrderByType() BuildingPaging_OrderByType {
	if x != nil {
		return x.OrderByType
	}
	return BuildingPaging_ORDER_BY_TYPE_UNKNOWN
}

func (x *BuildingPaging) GetDirectionType() BuildingPaging_DirectionType {
	if x != nil {
		return x.DirectionType
	}
	return BuildingPaging_DIRECTION_TYPE_UNKNOWN
}

func (x *BuildingPaging) GetLimit() int32 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *BuildingPaging) GetOffset() int32 {
	if x != nil {
		return x.Offset
	}
	return 0
}

// Ответ на запрос получения списка объектов строительства
type GetBuildingListResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetBuildingListResponse_Data
	Type isGetBuildingListResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*GetBuildingListResponse) ProtoMessage() {}

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

// Deprecated: Use GetBuildingListResponse.ProtoReflect.Descriptor instead.
func (*GetBuildingListResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_rawDescGZIP(), []int{10}
}

func (m *GetBuildingListResponse) GetType() isGetBuildingListResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetBuildingListResponse) GetData() *Building {
	if x, ok := x.GetType().(*GetBuildingListResponse_Data); ok {
		return x.Data
	}
	return nil
}

type isGetBuildingListResponse_Type interface {
	isGetBuildingListResponse_Type()
}

type GetBuildingListResponse_Data struct {
	// Индикатор
	Data *Building `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

func (*GetBuildingListResponse_Data) isGetBuildingListResponse_Type() {}

// Ответ на запрос получения списка связей объектов строительства и группы пользователя
type GetBuildingGroupListResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetBuildingGroupListResponse_Data
	Type isGetBuildingGroupListResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*GetBuildingGroupListResponse) ProtoMessage() {}

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

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

func (m *GetBuildingGroupListResponse) GetType() isGetBuildingGroupListResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetBuildingGroupListResponse) GetData() *BuildingGroup {
	if x, ok := x.GetType().(*GetBuildingGroupListResponse_Data); ok {
		return x.Data
	}
	return nil
}

type isGetBuildingGroupListResponse_Type interface {
	isGetBuildingGroupListResponse_Type()
}

type GetBuildingGroupListResponse_Data struct {
	// Связь объекта строительства и группы пользователя
	Data *BuildingGroup `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

func (*GetBuildingGroupListResponse_Data) isGetBuildingGroupListResponse_Type() {}

// Событие создания/изменения объекта строительства на сервера
type PostBuildingFullDuplexResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор запроса
	RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Событие
	//
	// Types that are assignable to Event:
	//
	//	*PostBuildingFullDuplexResponse_UpsertBuildingEvent_
	//	*PostBuildingFullDuplexResponse_RemoveBuildingEvent_
	Event isPostBuildingFullDuplexResponse_Event `protobuf_oneof:"event"`
}

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

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

func (*PostBuildingFullDuplexResponse) ProtoMessage() {}

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

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

func (x *PostBuildingFullDuplexResponse) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (m *PostBuildingFullDuplexResponse) GetEvent() isPostBuildingFullDuplexResponse_Event {
	if m != nil {
		return m.Event
	}
	return nil
}

func (x *PostBuildingFullDuplexResponse) GetUpsertBuildingEvent() *PostBuildingFullDuplexResponse_UpsertBuildingEvent {
	if x, ok := x.GetEvent().(*PostBuildingFullDuplexResponse_UpsertBuildingEvent_); ok {
		return x.UpsertBuildingEvent
	}
	return nil
}

func (x *PostBuildingFullDuplexResponse) GetRemoveBuildingEvent() *PostBuildingFullDuplexResponse_RemoveBuildingEvent {
	if x, ok := x.GetEvent().(*PostBuildingFullDuplexResponse_RemoveBuildingEvent_); ok {
		return x.RemoveBuildingEvent
	}
	return nil
}

type isPostBuildingFullDuplexResponse_Event interface {
	isPostBuildingFullDuplexResponse_Event()
}

type PostBuildingFullDuplexResponse_UpsertBuildingEvent_ struct {
	// Событие создания/обновления объекта строительства
	UpsertBuildingEvent *PostBuildingFullDuplexResponse_UpsertBuildingEvent `protobuf:"bytes,2,opt,name=upsert_building_event,json=upsertBuildingEvent,proto3,oneof"`
}

type PostBuildingFullDuplexResponse_RemoveBuildingEvent_ struct {
	// Событие удаления объекта строительства
	RemoveBuildingEvent *PostBuildingFullDuplexResponse_RemoveBuildingEvent `protobuf:"bytes,3,opt,name=remove_building_event,json=removeBuildingEvent,proto3,oneof"`
}

func (*PostBuildingFullDuplexResponse_UpsertBuildingEvent_) isPostBuildingFullDuplexResponse_Event() {
}

func (*PostBuildingFullDuplexResponse_RemoveBuildingEvent_) isPostBuildingFullDuplexResponse_Event() {
}

// Запрос создания задачи с клиента на сервере
type PostBuildingFullDuplexRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор запроса
	RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Задача с клиента
	//
	// Types that are assignable to Task:
	//
	//	*PostBuildingFullDuplexRequest_BuildingAsyncStatus_
	Task isPostBuildingFullDuplexRequest_Task `protobuf_oneof:"task"`
}

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

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

func (*PostBuildingFullDuplexRequest) ProtoMessage() {}

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

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

func (x *PostBuildingFullDuplexRequest) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (m *PostBuildingFullDuplexRequest) GetTask() isPostBuildingFullDuplexRequest_Task {
	if m != nil {
		return m.Task
	}
	return nil
}

func (x *PostBuildingFullDuplexRequest) GetBuildingAsyncStatus() *PostBuildingFullDuplexRequest_BuildingAsyncStatus {
	if x, ok := x.GetTask().(*PostBuildingFullDuplexRequest_BuildingAsyncStatus_); ok {
		return x.BuildingAsyncStatus
	}
	return nil
}

type isPostBuildingFullDuplexRequest_Task interface {
	isPostBuildingFullDuplexRequest_Task()
}

type PostBuildingFullDuplexRequest_BuildingAsyncStatus_ struct {
	// Результат обработки объекта строительства на клиенте
	BuildingAsyncStatus *PostBuildingFullDuplexRequest_BuildingAsyncStatus `protobuf:"bytes,2,opt,name=building_async_status,json=buildingAsyncStatus,proto3,oneof"`
}

func (*PostBuildingFullDuplexRequest_BuildingAsyncStatus_) isPostBuildingFullDuplexRequest_Task() {}

// Фильтр для запроса объектов строительства.
// При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.
// При передаче нескольких разных параметров фильтра они работают в выборке через И
type BuildingFilter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// По ФИАС
	FiasId []*wrapperspb.StringValue `protobuf:"bytes,1,rep,name=fias_id,json=fiasId,proto3" json:"fias_id,omitempty"`
	// По заголовку
	Title *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	// По нижней границе дате создания
	AfterCreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=after_created_at,json=afterCreatedAt,proto3" json:"after_created_at,omitempty"`
	// По верхней границе дате создания
	BeforeCreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=before_created_at,json=beforeCreatedAt,proto3" json:"before_created_at,omitempty"`
	// По МРФ (Макрорегион)
	MrfTypes []Building_MrfType `protobuf:"varint,5,rep,packed,name=mrf_types,json=mrfTypes,proto3,enum=keyapis.telemetry_control.v1.Building_MrfType" json:"mrf_types,omitempty"`
	// По РФ (Регион)
	RfTypes []Building_RfType `protobuf:"varint,6,rep,packed,name=rf_types,json=rfTypes,proto3,enum=keyapis.telemetry_control.v1.Building_RfType" json:"rf_types,omitempty"`
	// По статусам объекта строительства
	StatusTypes []Building_StatusType `protobuf:"varint,7,rep,packed,name=status_types,json=statusTypes,proto3,enum=keyapis.telemetry_control.v1.Building_StatusType" json:"status_types,omitempty"`
	// По ОРПОНам
	Orpons []int64 `protobuf:"varint,8,rep,packed,name=orpons,proto3" json:"orpons,omitempty"`
}

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

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

func (*BuildingFilter) ProtoMessage() {}

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

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

func (x *BuildingFilter) GetFiasId() []*wrapperspb.StringValue {
	if x != nil {
		return x.FiasId
	}
	return nil
}

func (x *BuildingFilter) GetTitle() *wrapperspb.StringValue {
	if x != nil {
		return x.Title
	}
	return nil
}

func (x *BuildingFilter) GetAfterCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.AfterCreatedAt
	}
	return nil
}

func (x *BuildingFilter) GetBeforeCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.BeforeCreatedAt
	}
	return nil
}

func (x *BuildingFilter) GetMrfTypes() []Building_MrfType {
	if x != nil {
		return x.MrfTypes
	}
	return nil
}

func (x *BuildingFilter) GetRfTypes() []Building_RfType {
	if x != nil {
		return x.RfTypes
	}
	return nil
}

func (x *BuildingFilter) GetStatusTypes() []Building_StatusType {
	if x != nil {
		return x.StatusTypes
	}
	return nil
}

func (x *BuildingFilter) GetOrpons() []int64 {
	if x != nil {
		return x.Orpons
	}
	return nil
}

// Фильтр для запроса связей объектов строительства и группы пользователя.
// При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.
// При передаче нескольких разных параметров фильтра они работают в выборке через И
type BuildingGroupFilter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// По Идентификатору группы пользователя
	GroupIds []string `protobuf:"bytes,1,rep,name=group_ids,json=groupIds,proto3" json:"group_ids,omitempty"`
	// По Объекту строительства
	BuildingIds []int32 `protobuf:"varint,2,rep,packed,name=building_ids,json=buildingIds,proto3" json:"building_ids,omitempty"`
}

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

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

func (*BuildingGroupFilter) ProtoMessage() {}

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

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

func (x *BuildingGroupFilter) GetGroupIds() []string {
	if x != nil {
		return x.GroupIds
	}
	return nil
}

func (x *BuildingGroupFilter) GetBuildingIds() []int32 {
	if x != nil {
		return x.BuildingIds
	}
	return nil
}

// Запрос получения количества объектов строительства
type GetBuildingCountRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Фильтр по индикаторам
	Filter *BuildingFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
}

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

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

func (*GetBuildingCountRequest) ProtoMessage() {}

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

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

func (x *GetBuildingCountRequest) GetFilter() *BuildingFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

// Запрос получения количества связей объектов строительства и группы пользователя
type GetBuildingGroupCountRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Фильтр связей объектов строительства и группы пользователя
	Filter *BuildingGroupFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
}

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

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

func (*GetBuildingGroupCountRequest) ProtoMessage() {}

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

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

func (x *GetBuildingGroupCountRequest) GetFilter() *BuildingGroupFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

// Ответ на запрос получения количества объектов строительства
type GetBuildingCountResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetBuildingCountResponse_Data
	Type isGetBuildingCountResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*GetBuildingCountResponse) ProtoMessage() {}

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

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

func (m *GetBuildingCountResponse) GetType() isGetBuildingCountResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetBuildingCountResponse) GetData() int32 {
	if x, ok := x.GetType().(*GetBuildingCountResponse_Data); ok {
		return x.Data
	}
	return 0
}

type isGetBuildingCountResponse_Type interface {
	isGetBuildingCountResponse_Type()
}

type GetBuildingCountResponse_Data struct {
	// Всего индикаторов
	Data int32 `protobuf:"varint,1,opt,name=data,proto3,oneof"`
}

func (*GetBuildingCountResponse_Data) isGetBuildingCountResponse_Type() {}

// Ответ на запрос получения количества связей объектов строительства и группы пользователя
type GetBuildingGroupCountResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetBuildingGroupCountResponse_Data
	Type isGetBuildingGroupCountResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*GetBuildingGroupCountResponse) ProtoMessage() {}

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

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

func (m *GetBuildingGroupCountResponse) GetType() isGetBuildingGroupCountResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetBuildingGroupCountResponse) GetData() int32 {
	if x, ok := x.GetType().(*GetBuildingGroupCountResponse_Data); ok {
		return x.Data
	}
	return 0
}

type isGetBuildingGroupCountResponse_Type interface {
	isGetBuildingGroupCountResponse_Type()
}

type GetBuildingGroupCountResponse_Data struct {
	// Всего связей объектов строительства и группы пользователя
	Data int32 `protobuf:"varint,1,opt,name=data,proto3,oneof"`
}

func (*GetBuildingGroupCountResponse_Data) isGetBuildingGroupCountResponse_Type() {}

// Запрос удаления объекта строительства
type DeleteBuildingRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор
	Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
}

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

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

func (*DeleteBuildingRequest) ProtoMessage() {}

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

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

func (x *DeleteBuildingRequest) GetId() int32 {
	if x != nil {
		return x.Id
	}
	return 0
}

// Ответ на запрос удаления объекта строительства
type DeleteBuildingResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*DeleteBuildingResponse) ProtoMessage() {}

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

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

// Запрос удаления связей объектов строительства и группы пользователя
type PutBuildingGroupDetachRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Связь объекта строительства и группы пользователя
	BuildingGroup *BuildingGroup `protobuf:"bytes,1,opt,name=building_group,json=buildingGroup,proto3" json:"building_group,omitempty"`
}

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

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

func (*PutBuildingGroupDetachRequest) ProtoMessage() {}

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

// Deprecated: Use PutBuildingGroupDetachRequest.ProtoReflect.Descriptor instead.
func (*PutBuildingGroupDetachRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_rawDescGZIP(), []int{22}
}

func (x *PutBuildingGroupDetachRequest) GetBuildingGroup() *BuildingGroup {
	if x != nil {
		return x.BuildingGroup
	}
	return nil
}

// Ответ на запрос удаления связи объекта строительства и группы пользователя
type PutBuildingGroupDetachResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*PutBuildingGroupDetachResponse) ProtoMessage() {}

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

// Deprecated: Use PutBuildingGroupDetachResponse.ProtoReflect.Descriptor instead.
func (*PutBuildingGroupDetachResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_rawDescGZIP(), []int{23}
}

// Объект строительства
type Building struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор
	Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	// Наименование объекта строительства
	Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	// Дата создания
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Дата последнего изменения.
	// Заполняется и обновляется сервером.
	// Заполняется при создании и изменении.
	// Является версией объекта
	ChangedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=changed_at,json=changedAt,proto3" json:"changed_at,omitempty"`
	// Смещение временной зоны объекта строительства от UTC в минутах
	UtcOffset int32 `protobuf:"varint,5,opt,name=utc_offset,json=utcOffset,proto3" json:"utc_offset,omitempty"`
	// ФИАС
	FiasId *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=fias_id,json=fiasId,proto3" json:"fias_id,omitempty"`
	// Принадлежность объекта строительства к МРФ
	MrfType Building_MrfType `protobuf:"varint,7,opt,name=mrf_type,json=mrfType,proto3,enum=keyapis.telemetry_control.v1.Building_MrfType" json:"mrf_type,omitempty"`
	// Принадлежность объекта строительства к РФ
	RfType Building_RfType `protobuf:"varint,8,opt,name=rf_type,json=rfType,proto3,enum=keyapis.telemetry_control.v1.Building_RfType" json:"rf_type,omitempty"`
	// Статус объекта строительства
	StatusType Building_StatusType `protobuf:"varint,9,opt,name=status_type,json=statusType,proto3,enum=keyapis.telemetry_control.v1.Building_StatusType" json:"status_type,omitempty"`
	// Адрес объекта строительства
	FullAddress string `protobuf:"bytes,10,opt,name=full_address,json=fullAddress,proto3" json:"full_address,omitempty"`
	// ОРПОН
	Orpon int64 `protobuf:"varint,11,opt,name=orpon,proto3" json:"orpon,omitempty"`
}

func (x *Building) Reset() {
	*x = Building{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Building) ProtoMessage() {}

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

// Deprecated: Use Building.ProtoReflect.Descriptor instead.
func (*Building) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_rawDescGZIP(), []int{24}
}

func (x *Building) GetId() int32 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *Building) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *Building) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

func (x *Building) GetChangedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.ChangedAt
	}
	return nil
}

func (x *Building) GetUtcOffset() int32 {
	if x != nil {
		return x.UtcOffset
	}
	return 0
}

func (x *Building) GetFiasId() *wrapperspb.StringValue {
	if x != nil {
		return x.FiasId
	}
	return nil
}

func (x *Building) GetMrfType() Building_MrfType {
	if x != nil {
		return x.MrfType
	}
	return Building_MRF_TYPE_UNKNOWN
}

func (x *Building) GetRfType() Building_RfType {
	if x != nil {
		return x.RfType
	}
	return Building_RF_TYPE_UNKNOWN
}

func (x *Building) GetStatusType() Building_StatusType {
	if x != nil {
		return x.StatusType
	}
	return Building_STATUS_TYPE_UNKNOWN
}

func (x *Building) GetFullAddress() string {
	if x != nil {
		return x.FullAddress
	}
	return ""
}

func (x *Building) GetOrpon() int64 {
	if x != nil {
		return x.Orpon
	}
	return 0
}

// Связка объекта строительства и группы пользователя.
// Задает область ресурсов (resource scope), доступную пользователю.
// Используется для контроля доступа к объекту строительства
type BuildingGroup struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор группы.
	// # Тип: Guid
	GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
	// Идентификатор объекта строительства.
	// # Диапазон: 0..2147483647
	BuildingId int32 `protobuf:"varint,2,opt,name=building_id,json=buildingId,proto3" json:"building_id,omitempty"`
}

func (x *BuildingGroup) Reset() {
	*x = BuildingGroup{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*BuildingGroup) ProtoMessage() {}

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

// Deprecated: Use BuildingGroup.ProtoReflect.Descriptor instead.
func (*BuildingGroup) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_rawDescGZIP(), []int{25}
}

func (x *BuildingGroup) GetGroupId() string {
	if x != nil {
		return x.GroupId
	}
	return ""
}

func (x *BuildingGroup) GetBuildingId() int32 {
	if x != nil {
		return x.BuildingId
	}
	return 0
}

// Событие удаления объекта строительства
type PostBuildingFullDuplexResponse_RemoveBuildingEvent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор объекта строительства
	Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
}

func (x *PostBuildingFullDuplexResponse_RemoveBuildingEvent) Reset() {
	*x = PostBuildingFullDuplexResponse_RemoveBuildingEvent{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostBuildingFullDuplexResponse_RemoveBuildingEvent) ProtoMessage() {}

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

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

func (x *PostBuildingFullDuplexResponse_RemoveBuildingEvent) GetId() int32 {
	if x != nil {
		return x.Id
	}
	return 0
}

// Событие создания/обновления объекта строительства
type PostBuildingFullDuplexResponse_UpsertBuildingEvent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Объект строительства
	Data *Building `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
}

func (x *PostBuildingFullDuplexResponse_UpsertBuildingEvent) Reset() {
	*x = PostBuildingFullDuplexResponse_UpsertBuildingEvent{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostBuildingFullDuplexResponse_UpsertBuildingEvent) ProtoMessage() {}

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

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

func (x *PostBuildingFullDuplexResponse_UpsertBuildingEvent) GetData() *Building {
	if x != nil {
		return x.Data
	}
	return nil
}

// Результат обработки объекта строительства на клиенте
type PostBuildingFullDuplexRequest_BuildingAsyncStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор объекта строительства
	BuildingId int32 `protobuf:"varint,1,opt,name=building_id,json=buildingId,proto3" json:"building_id,omitempty"`
	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Data
	//	*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_
	Type isPostBuildingFullDuplexRequest_BuildingAsyncStatus_Type `protobuf_oneof:"type"`
}

func (x *PostBuildingFullDuplexRequest_BuildingAsyncStatus) Reset() {
	*x = PostBuildingFullDuplexRequest_BuildingAsyncStatus{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostBuildingFullDuplexRequest_BuildingAsyncStatus) ProtoMessage() {}

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

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

func (x *PostBuildingFullDuplexRequest_BuildingAsyncStatus) GetBuildingId() int32 {
	if x != nil {
		return x.BuildingId
	}
	return 0
}

func (m *PostBuildingFullDuplexRequest_BuildingAsyncStatus) GetType() isPostBuildingFullDuplexRequest_BuildingAsyncStatus_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *PostBuildingFullDuplexRequest_BuildingAsyncStatus) GetData() *PostBuildingFullDuplexRequest_BuildingAsyncStatus_Success {
	if x, ok := x.GetType().(*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Data); ok {
		return x.Data
	}
	return nil
}

func (x *PostBuildingFullDuplexRequest_BuildingAsyncStatus) GetError() *PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error {
	if x, ok := x.GetType().(*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_); ok {
		return x.Error
	}
	return nil
}

type isPostBuildingFullDuplexRequest_BuildingAsyncStatus_Type interface {
	isPostBuildingFullDuplexRequest_BuildingAsyncStatus_Type()
}

type PostBuildingFullDuplexRequest_BuildingAsyncStatus_Data struct {
	// Успех
	Data *PostBuildingFullDuplexRequest_BuildingAsyncStatus_Success `protobuf:"bytes,2,opt,name=data,proto3,oneof"`
}

type PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_ struct {
	// Ошибка
	Error *PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error `protobuf:"bytes,3,opt,name=error,proto3,oneof"`
}

func (*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Data) isPostBuildingFullDuplexRequest_BuildingAsyncStatus_Type() {
}

func (*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_) isPostBuildingFullDuplexRequest_BuildingAsyncStatus_Type() {
}

// Команда принята
type PostBuildingFullDuplexRequest_BuildingAsyncStatus_Success struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *PostBuildingFullDuplexRequest_BuildingAsyncStatus_Success) Reset() {
	*x = PostBuildingFullDuplexRequest_BuildingAsyncStatus_Success{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Success) ProtoMessage() {}

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

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

// Ошибки обработки объекта строительства на клиенте
type PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_Unknown
	Reason isPostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_Reason `protobuf_oneof:"reason"`
}

func (x *PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error) Reset() {
	*x = PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error) ProtoMessage() {}

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

// Deprecated: Use PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error.ProtoReflect.Descriptor instead.
func (*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_rawDescGZIP(), []int{13, 0, 1}
}

func (m *PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error) GetReason() isPostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error) GetUnknown() *PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_UnknownError {
	if x, ok := x.GetReason().(*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_Unknown); ok {
		return x.Unknown
	}
	return nil
}

type isPostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_Reason interface {
	isPostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_Reason()
}

type PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_Unknown struct {
	// Неизвестная ошибка
	Unknown *PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_UnknownError `protobuf:"bytes,1,opt,name=unknown,proto3,oneof"`
}

func (*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_Unknown) isPostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_Reason() {
}

// Неизвестная ошибка на стороне клиента
type PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_UnknownError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Произвольный текст ошибки на стороне клиента.
	// Отправляется в случае если в спецификации нет подходящей ошибки.
	// После анализа таких ошибок в спецификацию добавляется специальный тип под эту ошибку
	Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_UnknownError) Reset() {
	*x = PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_UnknownError{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_UnknownError) ProtoMessage() {}

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

// Deprecated: Use PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_UnknownError.ProtoReflect.Descriptor instead.
func (*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_UnknownError) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_rawDescGZIP(), []int{13, 0, 1, 0}
}

func (x *PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_UnknownError) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

var File_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto protoreflect.FileDescriptor

var file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_rawDesc = []byte{
	0x0a, 0x48, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x76, 0x31, 0x2f, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e,
	0x67, 0x5f, 0x76, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61,
	0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f,
	0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72,
	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
	0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x56, 0x0a, 0x13, 0x50, 0x6f, 0x73, 0x74,
	0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x3f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69,
	0x6c, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61,
	0x22, 0x78, 0x0a, 0x1d, 0x50, 0x75, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47,
	0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x57, 0x0a, 0x0e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x67, 0x72,
	0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e,
	0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x62, 0x75, 0x69,
	0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x5c, 0x0a, 0x14, 0x50, 0x6f,
	0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x26, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
	0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61,
	0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x50, 0x75, 0x74, 0x42,
	0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x61,
	0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x0a, 0x12, 0x47, 0x65,
	0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41,
	0x02, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5b, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c,
	0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x04,
	0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69,
	0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79,
	0x70, 0x65, 0x22, 0xb4, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69,
	0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a,
	0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69,
	0x6c, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c,
	0x74, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e,
	0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x67, 0x69, 0x6e,
	0x67, 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x70,
	0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc3, 0x01, 0x0a, 0x1b, 0x47, 0x65,
	0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69,
	0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x06, 0x66, 0x69, 0x6c,
	0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e,
	0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69,
	0x6c, 0x74, 0x65, 0x72, 0x12, 0x4b, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74,
	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75,
	0x70, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e,
	0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22,
	0x97, 0x03, 0x0a, 0x13, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75,
	0x70, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x61, 0x0a, 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72,
	0x5f, 0x62, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75,
	0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x61, 0x67, 0x69, 0x6e,
	0x67, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6f,
	0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x66, 0x0a, 0x0e, 0x64, 0x69,
	0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50,
	0x61, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54,
	0x79, 0x70, 0x65, 0x52, 0x0d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79,
	0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73,
	0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74,
	0x22, 0x47, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x19, 0x0a, 0x15, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x42, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45,
	0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x47, 0x52,
	0x4f, 0x55, 0x50, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x42, 0x55, 0x49, 0x4c,
	0x44, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x22, 0x3e, 0x0a, 0x0d, 0x44, 0x69, 0x72,
	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49,
	0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b,
	0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, 0x53, 0x43, 0x10, 0x01,
	0x12, 0x07, 0x0a, 0x03, 0x41, 0x53, 0x43, 0x10, 0x02, 0x22, 0xa9, 0x03, 0x0a, 0x0e, 0x42, 0x75,
	0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x5c, 0x0a, 0x0d,
	0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e,
	0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x67, 0x69, 0x6e,
	0x67, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6f,
	0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x61, 0x0a, 0x0e, 0x64, 0x69,
	0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67,
	0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d,
	0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a,
	0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69,
	0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x68, 0x0a, 0x0b, 0x4f,
	0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x52,
	0x44, 0x45, 0x52, 0x5f, 0x42, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e,
	0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x49, 0x44, 0x10, 0x01, 0x12, 0x09, 0x0a,
	0x05, 0x54, 0x49, 0x54, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x52, 0x45, 0x41,
	0x54, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x48, 0x41, 0x4e,
	0x47, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x49, 0x41, 0x53,
	0x5f, 0x49, 0x44, 0x10, 0x05, 0x22, 0x3e, 0x0a, 0x0d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54,
	0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e,
	0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, 0x53, 0x43, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03,
	0x41, 0x53, 0x43, 0x10, 0x02, 0x22, 0x5f, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c,
	0x64, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x12, 0x3c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75,
	0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06,
	0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x69, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69,
	0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74,
	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75,
	0x70, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70,
	0x65, 0x22, 0xe3, 0x03, 0x0a, 0x1e, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69,
	0x6e, 0x67, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f,
	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x72,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x86, 0x01, 0x0a, 0x15, 0x75, 0x70, 0x73,
	0x65, 0x72, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x76, 0x65,
	0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c,
	0x64, 0x69, 0x6e, 0x67, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x42, 0x75, 0x69,
	0x6c, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x13, 0x75, 0x70,
	0x73, 0x65, 0x72, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x76, 0x65, 0x6e,
	0x74, 0x12, 0x86, 0x01, 0x0a, 0x15, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x62, 0x75, 0x69,
	0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x50, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31,
	0x2e, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x75, 0x6c,
	0x6c, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e,
	0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x76,
	0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x13, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x69,
	0x6c, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x1a, 0x2a, 0x0a, 0x13, 0x52, 0x65,
	0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x76, 0x65, 0x6e,
	0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0,
	0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x1a, 0x56, 0x0a, 0x13, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74,
	0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a,
	0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64,
	0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x07,
	0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0xc5, 0x05, 0x0a, 0x1d, 0x50, 0x6f, 0x73, 0x74,
	0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70, 0x6c,
	0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x72, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
	0x41, 0x02, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x85, 0x01,
	0x0a, 0x15, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x73, 0x79, 0x6e, 0x63,
	0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4f, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73,
	0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70,
	0x6c, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64,
	0x69, 0x6e, 0x67, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x00,
	0x52, 0x13, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0xef, 0x03, 0x0a, 0x13, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69,
	0x6e, 0x67, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a,
	0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e,
	0x67, 0x49, 0x64, 0x12, 0x6d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x57, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31,
	0x2e, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x75, 0x6c,
	0x6c, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42,
	0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61,
	0x74, 0x61, 0x12, 0x6d, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x55, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31,
	0x2e, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x75, 0x6c,
	0x6c, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42,
	0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f,
	0x72, 0x1a, 0x09, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x1a, 0xc0, 0x01, 0x0a,
	0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x7e, 0x0a, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77,
	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x62, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64,
	0x69, 0x6e, 0x67, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x41, 0x73, 0x79,
	0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x55,
	0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x07, 0x75,
	0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x1a, 0x2d, 0x0a, 0x0c, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77,
	0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42,
	0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x22,
	0x8e, 0x04, 0x0a, 0x0e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x12, 0x35, 0x0a, 0x07, 0x66, 0x69, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75,
	0x65, 0x52, 0x06, 0x66, 0x69, 0x61, 0x73, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x69, 0x74,
	0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e,
	0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x44, 0x0a,
	0x10, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
	0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
	0x61, 0x6d, 0x70, 0x52, 0x0e, 0x61, 0x66, 0x74, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
	0x64, 0x41, 0x74, 0x12, 0x46, 0x0a, 0x11, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x63, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x62, 0x65, 0x66, 0x6f,
	0x72, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x4b, 0x0a, 0x09, 0x6d,
	0x72, 0x66, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2e,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75,
	0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x72, 0x66, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08,
	0x6d, 0x72, 0x66, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x08, 0x72, 0x66, 0x5f, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69,
	0x6e, 0x67, 0x2e, 0x52, 0x66, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x72, 0x66, 0x54, 0x79, 0x70,
	0x65, 0x73, 0x12, 0x54, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67,
	0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x73, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x70, 0x6f,
	0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x72, 0x70, 0x6f, 0x6e, 0x73,
	0x22, 0x55, 0x0a, 0x13, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75,
	0x70, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70,
	0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75,
	0x70, 0x49, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67,
	0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x62, 0x75, 0x69, 0x6c,
	0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x73, 0x22, 0x5f, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x42, 0x75,
	0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x44, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
	0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x69, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x42,
	0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x75, 0x6e,
	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67,
	0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c,
	0x74, 0x65, 0x72, 0x22, 0x38, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69,
	0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x14, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52,
	0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3d, 0x0a,
	0x1d, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75,
	0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14,
	0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x04,
	0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2c, 0x0a, 0x15,
	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65,
	0x6c, 0x65, 0x74, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x0a, 0x1d, 0x50, 0x75, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64,
	0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x57, 0x0a, 0x0e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e,
	0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69,
	0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
	0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x20,
	0x0a, 0x1e, 0x50, 0x75, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f,
	0x75, 0x70, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0xf3, 0x0e, 0x0a, 0x08, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a,
	0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a,
	0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69,
	0x74, 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
	0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
	0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
	0x64, 0x41, 0x74, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x61,
	0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
	0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
	0x64, 0x41, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x75, 0x74, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65,
	0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x75, 0x74,
	0x63, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x35, 0x0a, 0x07, 0x66, 0x69, 0x61, 0x73, 0x5f,
	0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e,
	0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x66, 0x69, 0x61, 0x73, 0x49, 0x64, 0x12, 0x49,
	0x0a, 0x08, 0x6d, 0x72, 0x66, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x2e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
	0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x72, 0x66, 0x54, 0x79, 0x70, 0x65,
	0x52, 0x07, 0x6d, 0x72, 0x66, 0x54, 0x79, 0x70, 0x65, 0x12, 0x46, 0x0a, 0x07, 0x72, 0x66, 0x5f,
	0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69,
	0x6e, 0x67, 0x2e, 0x52, 0x66, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x72, 0x66, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x52, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65,
	0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x61, 0x64,
	0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x75, 0x6c,
	0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x70, 0x6f,
	0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6f, 0x72, 0x70, 0x6f, 0x6e, 0x22, 0x79,
	0x0a, 0x07, 0x4d, 0x72, 0x66, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x52, 0x46,
	0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12,
	0x0a, 0x0a, 0x06, 0x54, 0x53, 0x45, 0x4e, 0x54, 0x52, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x59,
	0x55, 0x47, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x55, 0x52, 0x41, 0x4c, 0x10, 0x03, 0x12, 0x09,
	0x0a, 0x05, 0x53, 0x49, 0x42, 0x49, 0x52, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x45, 0x56,
	0x45, 0x52, 0x4f, 0x5f, 0x5a, 0x41, 0x50, 0x41, 0x44, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x44,
	0x41, 0x4c, 0x4e, 0x49, 0x59, 0x5f, 0x56, 0x4f, 0x53, 0x54, 0x4f, 0x4b, 0x10, 0x06, 0x12, 0x09,
	0x0a, 0x05, 0x56, 0x4f, 0x4c, 0x47, 0x41, 0x10, 0x07, 0x22, 0xc6, 0x08, 0x0a, 0x06, 0x52, 0x66,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x46, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
	0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x46, 0x41,
	0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x4b, 0x49, 0x52, 0x4f, 0x56, 0x10, 0x02, 0x12, 0x0b, 0x0a,
	0x07, 0x49, 0x56, 0x41, 0x4e, 0x4f, 0x56, 0x4f, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4b, 0x41,
	0x4c, 0x55, 0x47, 0x41, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x4b, 0x4f, 0x53, 0x54, 0x52, 0x4f,
	0x4d, 0x41, 0x10, 0x05, 0x12, 0x09, 0x0a, 0x05, 0x4b, 0x55, 0x52, 0x53, 0x4b, 0x10, 0x06, 0x12,
	0x0b, 0x0a, 0x07, 0x4c, 0x49, 0x50, 0x45, 0x54, 0x53, 0x4b, 0x10, 0x07, 0x12, 0x0d, 0x0a, 0x09,
	0x4d, 0x4f, 0x53, 0x4f, 0x42, 0x4c, 0x41, 0x53, 0x54, 0x10, 0x08, 0x12, 0x08, 0x0a, 0x04, 0x4f,
	0x52, 0x45, 0x4c, 0x10, 0x09, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x59, 0x41, 0x5a, 0x41, 0x4e, 0x10,
	0x0a, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x41, 0x4d, 0x42, 0x4f, 0x56, 0x10, 0x0b, 0x12, 0x08, 0x0a,
	0x04, 0x54, 0x56, 0x45, 0x52, 0x10, 0x0c, 0x12, 0x0d, 0x0a, 0x09, 0x59, 0x41, 0x52, 0x4f, 0x53,
	0x4c, 0x41, 0x56, 0x4c, 0x10, 0x0d, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x4d, 0x4f, 0x4c, 0x45, 0x4e,
	0x53, 0x4b, 0x10, 0x0e, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x55, 0x4c, 0x41, 0x10, 0x0f, 0x12, 0x0a,
	0x0a, 0x06, 0x4d, 0x4f, 0x53, 0x43, 0x4f, 0x57, 0x10, 0x10, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x41,
	0x4f, 0x10, 0x11, 0x12, 0x0a, 0x0a, 0x06, 0x4b, 0x55, 0x52, 0x47, 0x41, 0x4e, 0x10, 0x12, 0x12,
	0x09, 0x0a, 0x05, 0x54, 0x55, 0x4d, 0x45, 0x4e, 0x10, 0x13, 0x12, 0x09, 0x0a, 0x05, 0x48, 0x41,
	0x4e, 0x54, 0x59, 0x10, 0x14, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x4d, 0x55, 0x52, 0x10, 0x15, 0x12,
	0x0d, 0x0a, 0x09, 0x4b, 0x41, 0x4d, 0x43, 0x48, 0x41, 0x54, 0x4b, 0x41, 0x10, 0x16, 0x12, 0x0b,
	0x0a, 0x07, 0x4d, 0x41, 0x47, 0x41, 0x44, 0x41, 0x4e, 0x10, 0x17, 0x12, 0x0c, 0x0a, 0x08, 0x50,
	0x52, 0x49, 0x4d, 0x4f, 0x52, 0x59, 0x45, 0x10, 0x18, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x41, 0x4b,
	0x48, 0x41, 0x4c, 0x49, 0x4e, 0x10, 0x19, 0x12, 0x0e, 0x0a, 0x0a, 0x4b, 0x48, 0x41, 0x42, 0x41,
	0x52, 0x4f, 0x56, 0x53, 0x4b, 0x10, 0x1a, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x48, 0x49, 0x54, 0x41,
	0x10, 0x1b, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x48, 0x55, 0x4b, 0x4f, 0x54, 0x4b, 0x41, 0x10, 0x1c,
	0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x52, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4c, 0x53, 0x4b, 0x10,
	0x1d, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x4f, 0x4c, 0x4f, 0x47, 0x44, 0x41, 0x10, 0x1e, 0x12, 0x0f,
	0x0a, 0x0b, 0x4b, 0x41, 0x4c, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x52, 0x41, 0x44, 0x10, 0x1f, 0x12,
	0x0b, 0x0a, 0x07, 0x4b, 0x41, 0x52, 0x45, 0x4c, 0x49, 0x41, 0x10, 0x20, 0x12, 0x08, 0x0a, 0x04,
	0x4b, 0x4f, 0x4d, 0x49, 0x10, 0x21, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x45, 0x4e, 0x4f, 0x42, 0x4c,
	0x41, 0x53, 0x54, 0x10, 0x22, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x55, 0x52, 0x4d, 0x41, 0x4e, 0x53,
	0x4b, 0x10, 0x23, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x4f, 0x56, 0x47, 0x4f, 0x52, 0x4f, 0x44, 0x10,
	0x24, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x53, 0x4b, 0x4f, 0x56, 0x10, 0x25, 0x12, 0x07, 0x0a, 0x03,
	0x53, 0x50, 0x42, 0x10, 0x26, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x54, 0x41, 0x49, 0x10, 0x27,
	0x12, 0x0d, 0x0a, 0x09, 0x42, 0x55, 0x52, 0x59, 0x41, 0x54, 0x49, 0x59, 0x41, 0x10, 0x28, 0x12,
	0x0b, 0x0a, 0x07, 0x49, 0x52, 0x4b, 0x55, 0x54, 0x53, 0x4b, 0x10, 0x29, 0x12, 0x0c, 0x0a, 0x08,
	0x4b, 0x45, 0x4d, 0x45, 0x52, 0x4f, 0x56, 0x4f, 0x10, 0x2a, 0x12, 0x0f, 0x0a, 0x0b, 0x4b, 0x52,
	0x41, 0x53, 0x4e, 0x4f, 0x59, 0x41, 0x52, 0x53, 0x4b, 0x10, 0x2b, 0x12, 0x08, 0x0a, 0x04, 0x4f,
	0x4d, 0x53, 0x4b, 0x10, 0x2c, 0x12, 0x0c, 0x0a, 0x08, 0x48, 0x41, 0x4b, 0x41, 0x53, 0x49, 0x59,
	0x41, 0x10, 0x2d, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x41, 0x4c, 0x54, 0x41, 0x59, 0x10, 0x2e, 0x12,
	0x08, 0x0a, 0x04, 0x54, 0x55, 0x56, 0x41, 0x10, 0x2f, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x4f, 0x4d,
	0x53, 0x4b, 0x10, 0x30, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x52, 0x45, 0x4e, 0x42, 0x55, 0x52, 0x47,
	0x10, 0x31, 0x12, 0x0c, 0x0a, 0x08, 0x42, 0x45, 0x4c, 0x47, 0x4f, 0x52, 0x4f, 0x44, 0x10, 0x32,
	0x12, 0x09, 0x0a, 0x05, 0x53, 0x41, 0x4b, 0x48, 0x41, 0x10, 0x33, 0x12, 0x07, 0x0a, 0x03, 0x45,
	0x4b, 0x54, 0x10, 0x34, 0x12, 0x0d, 0x0a, 0x09, 0x56, 0x4f, 0x4c, 0x47, 0x4f, 0x47, 0x52, 0x41,
	0x44, 0x10, 0x35, 0x12, 0x09, 0x0a, 0x05, 0x59, 0x41, 0x4d, 0x41, 0x4c, 0x10, 0x36, 0x12, 0x0f,
	0x0a, 0x0b, 0x43, 0x48, 0x45, 0x4c, 0x59, 0x41, 0x42, 0x49, 0x4e, 0x53, 0x4b, 0x10, 0x37, 0x12,
	0x08, 0x0a, 0x04, 0x50, 0x45, 0x52, 0x4d, 0x10, 0x38, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x52,
	0x59, 0x45, 0x4c, 0x10, 0x39, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x45, 0x4e, 0x5a, 0x41, 0x10, 0x3a,
	0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x4e, 0x47, 0x55, 0x53, 0x48, 0x45, 0x54, 0x49, 0x41, 0x10, 0x3b,
	0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x41, 0x4c, 0x43, 0x48, 0x49, 0x4b, 0x10, 0x3c, 0x12, 0x0a, 0x0a,
	0x06, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x41, 0x10, 0x3d, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x4f, 0x53,
	0x54, 0x4f, 0x56, 0x10, 0x3e, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x41, 0x48, 0x41, 0x43, 0x48, 0x4b,
	0x41, 0x4c, 0x41, 0x10, 0x3f, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x4f, 0x52, 0x44, 0x4f, 0x56, 0x49,
	0x59, 0x41, 0x10, 0x40, 0x12, 0x09, 0x0a, 0x05, 0x4b, 0x41, 0x5a, 0x41, 0x4e, 0x10, 0x41, 0x12,
	0x0a, 0x0a, 0x06, 0x53, 0x41, 0x4d, 0x41, 0x52, 0x41, 0x10, 0x42, 0x12, 0x0b, 0x0a, 0x07, 0x53,
	0x41, 0x52, 0x41, 0x54, 0x4f, 0x56, 0x10, 0x43, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x44, 0x4d, 0x55,
	0x52, 0x54, 0x49, 0x59, 0x41, 0x10, 0x44, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x4c, 0x59, 0x41, 0x4e,
	0x4f, 0x56, 0x53, 0x4b, 0x10, 0x45, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x48, 0x55, 0x56, 0x41, 0x53,
	0x48, 0x49, 0x59, 0x41, 0x10, 0x46, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4e, 0x4f, 0x56, 0x47, 0x4f,
	0x52, 0x4f, 0x44, 0x10, 0x47, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x52, 0x59, 0x41, 0x4e, 0x53, 0x4b,
	0x10, 0x48, 0x12, 0x0c, 0x0a, 0x08, 0x56, 0x4c, 0x41, 0x44, 0x49, 0x4d, 0x49, 0x52, 0x10, 0x49,
	0x12, 0x0c, 0x0a, 0x08, 0x56, 0x4f, 0x52, 0x4f, 0x4e, 0x45, 0x5a, 0x48, 0x10, 0x4a, 0x12, 0x0f,
	0x0a, 0x0b, 0x56, 0x4c, 0x41, 0x44, 0x49, 0x4b, 0x41, 0x56, 0x4b, 0x41, 0x5a, 0x10, 0x4b, 0x12,
	0x0d, 0x0a, 0x09, 0x53, 0x54, 0x41, 0x56, 0x52, 0x4f, 0x50, 0x4f, 0x4c, 0x10, 0x4c, 0x12, 0x0d,
	0x0a, 0x09, 0x43, 0x48, 0x45, 0x52, 0x4b, 0x45, 0x53, 0x53, 0x4b, 0x10, 0x4d, 0x12, 0x0a, 0x0a,
	0x06, 0x4d, 0x41, 0x59, 0x4b, 0x4f, 0x50, 0x10, 0x4e, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x53, 0x54,
	0x52, 0x41, 0x4b, 0x48, 0x41, 0x4e, 0x10, 0x4f, 0x12, 0x0d, 0x0a, 0x09, 0x4b, 0x52, 0x41, 0x53,
	0x4e, 0x4f, 0x44, 0x41, 0x52, 0x10, 0x50, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x53, 0x54, 0x10,
	0x51, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x56, 0x4f, 0x53, 0x49, 0x42, 0x49, 0x52, 0x53, 0x4b,
	0x10, 0x52, 0x22, 0x81, 0x01, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45,
	0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x42, 0x55,
	0x49, 0x4c, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x43, 0x43, 0x45,
	0x50, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49,
	0x56, 0x45, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x10,
	0x04, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x05,
	0x12, 0x14, 0x0a, 0x10, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f,
	0x54, 0x59, 0x50, 0x45, 0x10, 0x06, 0x22, 0x55, 0x0a, 0x0d, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69,
	0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70,
	0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07,
	0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64,
	0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41,
	0x02, 0x52, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x32, 0xb3, 0x0f,
	0x0a, 0x0f, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
	0x65, 0x12, 0xa3, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e,
	0x67, 0x12, 0x30, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31,
	0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e,
	0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27,
	0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69,
	0x6e, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xb1, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x42,
	0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75,
	0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x35, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31,
	0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29,
	0x12, 0x27, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x75, 0x69, 0x6c,
	0x64, 0x69, 0x6e, 0x67, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x30, 0x01, 0x12, 0xb3, 0x01, 0x0a, 0x10,
	0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x35, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
	0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69,
	0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x2f,
	0x76, 0x31, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x12, 0xa4, 0x01, 0x0a, 0x0c, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69,
	0x6e, 0x67, 0x12, 0x31, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e,
	0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02,
	0x27, 0x3a, 0x01, 0x2a, 0x22, 0x22, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f,
	0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x99, 0x01, 0x0a, 0x16, 0x50, 0x6f, 0x73,
	0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70,
	0x6c, 0x65, 0x78, 0x12, 0x3b, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e,
	0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x46,
	0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x3c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
	0x50, 0x6f, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x75, 0x6c, 0x6c,
	0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
	0x28, 0x01, 0x30, 0x01, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42,
	0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x33, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x75, 0x69,
	0x6c, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65,
	0x74, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x2a, 0x27, 0x2f, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61,
	0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x7b,
	0x69, 0x64, 0x7d, 0x12, 0xc6, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64,
	0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x39, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42,
	0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69,
	0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x74, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f,
	0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x2f,
	0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x30, 0x01, 0x12, 0xc8, 0x01, 0x0a,
	0x15, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75,
	0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e,
	0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f,
	0x75, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x2f,
	0x76, 0x31, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x67, 0x72, 0x6f, 0x75,
	0x70, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x83, 0x02, 0x0a, 0x16, 0x50, 0x75, 0x74, 0x42,
	0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x61,
	0x63, 0x68, 0x12, 0x3b, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x50, 0x75, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f,
	0x75, 0x70, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x3c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50,
	0x75, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41,
	0x74, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x82,
	0xd3, 0xe4, 0x93, 0x02, 0x68, 0x1a, 0x66, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31,
	0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x7b, 0x62, 0x75, 0x69, 0x6c, 0x64,
	0x69, 0x6e, 0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69,
	0x6e, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x7b, 0x62, 0x75,
	0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x67, 0x72, 0x6f,
	0x75, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x12, 0x83, 0x02,
	0x0a, 0x16, 0x50, 0x75, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f,
	0x75, 0x70, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x12, 0x3b, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64,
	0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67,
	0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x68, 0x1a, 0x66, 0x2f, 0x74, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f,
	0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x2f,
	0x7b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e,
	0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x72, 0x6f,
	0x75, 0x70, 0x2f, 0x7b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x67, 0x72, 0x6f,
	0x75, 0x70, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x74,
	0x61, 0x63, 0x68, 0x42, 0xe2, 0x01, 0x0a, 0x1f, 0x72, 0x75, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x42, 0x1e, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x56, 0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x48, 0x03, 0x50, 0x00, 0x5a, 0x1d, 0x2f, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x76, 0x31, 0xd8, 0x01, 0x01, 0xf8, 0x01, 0x01,
	0xa2, 0x02, 0x19, 0x4b, 0x45, 0x59, 0x41, 0x50, 0x49, 0x53, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45,
	0x54, 0x52, 0x59, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x56, 0x31, 0xaa, 0x02, 0x1b, 0x4b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x1b, 0x4b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x5c, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x1d, 0x4b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x3a, 0x3a, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_rawDescOnce sync.Once
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_rawDescData = file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_rawDesc
)

func file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_rawDescGZIP() []byte {
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_rawDescOnce.Do(func() {
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_rawDescData = protoimpl.X.CompressGZIP(file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_rawDescData)
	})
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_rawDescData
}

var file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_enumTypes = make([]protoimpl.EnumInfo, 7)
var file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes = make([]protoimpl.MessageInfo, 32)
var file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_goTypes = []interface{}{
	(BuildingGroupPaging_OrderByType)(0),                                         // 0: keyapis.telemetry_control.v1.BuildingGroupPaging.OrderByType
	(BuildingGroupPaging_DirectionType)(0),                                       // 1: keyapis.telemetry_control.v1.BuildingGroupPaging.DirectionType
	(BuildingPaging_OrderByType)(0),                                              // 2: keyapis.telemetry_control.v1.BuildingPaging.OrderByType
	(BuildingPaging_DirectionType)(0),                                            // 3: keyapis.telemetry_control.v1.BuildingPaging.DirectionType
	(Building_MrfType)(0),                                                        // 4: keyapis.telemetry_control.v1.Building.MrfType
	(Building_RfType)(0),                                                         // 5: keyapis.telemetry_control.v1.Building.RfType
	(Building_StatusType)(0),                                                     // 6: keyapis.telemetry_control.v1.Building.StatusType
	(*PostBuildingRequest)(nil),                                                  // 7: keyapis.telemetry_control.v1.PostBuildingRequest
	(*PutBuildingGroupAttachRequest)(nil),                                        // 8: keyapis.telemetry_control.v1.PutBuildingGroupAttachRequest
	(*PostBuildingResponse)(nil),                                                 // 9: keyapis.telemetry_control.v1.PostBuildingResponse
	(*PutBuildingGroupAttachResponse)(nil),                                       // 10: keyapis.telemetry_control.v1.PutBuildingGroupAttachResponse
	(*GetBuildingRequest)(nil),                                                   // 11: keyapis.telemetry_control.v1.GetBuildingRequest
	(*GetBuildingResponse)(nil),                                                  // 12: keyapis.telemetry_control.v1.GetBuildingResponse
	(*GetBuildingListRequest)(nil),                                               // 13: keyapis.telemetry_control.v1.GetBuildingListRequest
	(*GetBuildingGroupListRequest)(nil),                                          // 14: keyapis.telemetry_control.v1.GetBuildingGroupListRequest
	(*BuildingGroupPaging)(nil),                                                  // 15: keyapis.telemetry_control.v1.BuildingGroupPaging
	(*BuildingPaging)(nil),                                                       // 16: keyapis.telemetry_control.v1.BuildingPaging
	(*GetBuildingListResponse)(nil),                                              // 17: keyapis.telemetry_control.v1.GetBuildingListResponse
	(*GetBuildingGroupListResponse)(nil),                                         // 18: keyapis.telemetry_control.v1.GetBuildingGroupListResponse
	(*PostBuildingFullDuplexResponse)(nil),                                       // 19: keyapis.telemetry_control.v1.PostBuildingFullDuplexResponse
	(*PostBuildingFullDuplexRequest)(nil),                                        // 20: keyapis.telemetry_control.v1.PostBuildingFullDuplexRequest
	(*BuildingFilter)(nil),                                                       // 21: keyapis.telemetry_control.v1.BuildingFilter
	(*BuildingGroupFilter)(nil),                                                  // 22: keyapis.telemetry_control.v1.BuildingGroupFilter
	(*GetBuildingCountRequest)(nil),                                              // 23: keyapis.telemetry_control.v1.GetBuildingCountRequest
	(*GetBuildingGroupCountRequest)(nil),                                         // 24: keyapis.telemetry_control.v1.GetBuildingGroupCountRequest
	(*GetBuildingCountResponse)(nil),                                             // 25: keyapis.telemetry_control.v1.GetBuildingCountResponse
	(*GetBuildingGroupCountResponse)(nil),                                        // 26: keyapis.telemetry_control.v1.GetBuildingGroupCountResponse
	(*DeleteBuildingRequest)(nil),                                                // 27: keyapis.telemetry_control.v1.DeleteBuildingRequest
	(*DeleteBuildingResponse)(nil),                                               // 28: keyapis.telemetry_control.v1.DeleteBuildingResponse
	(*PutBuildingGroupDetachRequest)(nil),                                        // 29: keyapis.telemetry_control.v1.PutBuildingGroupDetachRequest
	(*PutBuildingGroupDetachResponse)(nil),                                       // 30: keyapis.telemetry_control.v1.PutBuildingGroupDetachResponse
	(*Building)(nil),                                                             // 31: keyapis.telemetry_control.v1.Building
	(*BuildingGroup)(nil),                                                        // 32: keyapis.telemetry_control.v1.BuildingGroup
	(*PostBuildingFullDuplexResponse_RemoveBuildingEvent)(nil),                   // 33: keyapis.telemetry_control.v1.PostBuildingFullDuplexResponse.RemoveBuildingEvent
	(*PostBuildingFullDuplexResponse_UpsertBuildingEvent)(nil),                   // 34: keyapis.telemetry_control.v1.PostBuildingFullDuplexResponse.UpsertBuildingEvent
	(*PostBuildingFullDuplexRequest_BuildingAsyncStatus)(nil),                    // 35: keyapis.telemetry_control.v1.PostBuildingFullDuplexRequest.BuildingAsyncStatus
	(*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Success)(nil),            // 36: keyapis.telemetry_control.v1.PostBuildingFullDuplexRequest.BuildingAsyncStatus.Success
	(*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error)(nil),              // 37: keyapis.telemetry_control.v1.PostBuildingFullDuplexRequest.BuildingAsyncStatus.Error
	(*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_UnknownError)(nil), // 38: keyapis.telemetry_control.v1.PostBuildingFullDuplexRequest.BuildingAsyncStatus.Error.UnknownError
	(*wrapperspb.StringValue)(nil),                                               // 39: google.protobuf.StringValue
	(*timestamppb.Timestamp)(nil),                                                // 40: google.protobuf.Timestamp
}
var file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_depIdxs = []int32{
	31, // 0: keyapis.telemetry_control.v1.PostBuildingRequest.data:type_name -> keyapis.telemetry_control.v1.Building
	32, // 1: keyapis.telemetry_control.v1.PutBuildingGroupAttachRequest.building_group:type_name -> keyapis.telemetry_control.v1.BuildingGroup
	31, // 2: keyapis.telemetry_control.v1.PostBuildingResponse.data:type_name -> keyapis.telemetry_control.v1.Building
	31, // 3: keyapis.telemetry_control.v1.GetBuildingResponse.data:type_name -> keyapis.telemetry_control.v1.Building
	21, // 4: keyapis.telemetry_control.v1.GetBuildingListRequest.filter:type_name -> keyapis.telemetry_control.v1.BuildingFilter
	16, // 5: keyapis.telemetry_control.v1.GetBuildingListRequest.paging:type_name -> keyapis.telemetry_control.v1.BuildingPaging
	22, // 6: keyapis.telemetry_control.v1.GetBuildingGroupListRequest.filter:type_name -> keyapis.telemetry_control.v1.BuildingGroupFilter
	15, // 7: keyapis.telemetry_control.v1.GetBuildingGroupListRequest.paging:type_name -> keyapis.telemetry_control.v1.BuildingGroupPaging
	0,  // 8: keyapis.telemetry_control.v1.BuildingGroupPaging.order_by_type:type_name -> keyapis.telemetry_control.v1.BuildingGroupPaging.OrderByType
	1,  // 9: keyapis.telemetry_control.v1.BuildingGroupPaging.direction_type:type_name -> keyapis.telemetry_control.v1.BuildingGroupPaging.DirectionType
	2,  // 10: keyapis.telemetry_control.v1.BuildingPaging.order_by_type:type_name -> keyapis.telemetry_control.v1.BuildingPaging.OrderByType
	3,  // 11: keyapis.telemetry_control.v1.BuildingPaging.direction_type:type_name -> keyapis.telemetry_control.v1.BuildingPaging.DirectionType
	31, // 12: keyapis.telemetry_control.v1.GetBuildingListResponse.data:type_name -> keyapis.telemetry_control.v1.Building
	32, // 13: keyapis.telemetry_control.v1.GetBuildingGroupListResponse.data:type_name -> keyapis.telemetry_control.v1.BuildingGroup
	34, // 14: keyapis.telemetry_control.v1.PostBuildingFullDuplexResponse.upsert_building_event:type_name -> keyapis.telemetry_control.v1.PostBuildingFullDuplexResponse.UpsertBuildingEvent
	33, // 15: keyapis.telemetry_control.v1.PostBuildingFullDuplexResponse.remove_building_event:type_name -> keyapis.telemetry_control.v1.PostBuildingFullDuplexResponse.RemoveBuildingEvent
	35, // 16: keyapis.telemetry_control.v1.PostBuildingFullDuplexRequest.building_async_status:type_name -> keyapis.telemetry_control.v1.PostBuildingFullDuplexRequest.BuildingAsyncStatus
	39, // 17: keyapis.telemetry_control.v1.BuildingFilter.fias_id:type_name -> google.protobuf.StringValue
	39, // 18: keyapis.telemetry_control.v1.BuildingFilter.title:type_name -> google.protobuf.StringValue
	40, // 19: keyapis.telemetry_control.v1.BuildingFilter.after_created_at:type_name -> google.protobuf.Timestamp
	40, // 20: keyapis.telemetry_control.v1.BuildingFilter.before_created_at:type_name -> google.protobuf.Timestamp
	4,  // 21: keyapis.telemetry_control.v1.BuildingFilter.mrf_types:type_name -> keyapis.telemetry_control.v1.Building.MrfType
	5,  // 22: keyapis.telemetry_control.v1.BuildingFilter.rf_types:type_name -> keyapis.telemetry_control.v1.Building.RfType
	6,  // 23: keyapis.telemetry_control.v1.BuildingFilter.status_types:type_name -> keyapis.telemetry_control.v1.Building.StatusType
	21, // 24: keyapis.telemetry_control.v1.GetBuildingCountRequest.filter:type_name -> keyapis.telemetry_control.v1.BuildingFilter
	22, // 25: keyapis.telemetry_control.v1.GetBuildingGroupCountRequest.filter:type_name -> keyapis.telemetry_control.v1.BuildingGroupFilter
	32, // 26: keyapis.telemetry_control.v1.PutBuildingGroupDetachRequest.building_group:type_name -> keyapis.telemetry_control.v1.BuildingGroup
	40, // 27: keyapis.telemetry_control.v1.Building.created_at:type_name -> google.protobuf.Timestamp
	40, // 28: keyapis.telemetry_control.v1.Building.changed_at:type_name -> google.protobuf.Timestamp
	39, // 29: keyapis.telemetry_control.v1.Building.fias_id:type_name -> google.protobuf.StringValue
	4,  // 30: keyapis.telemetry_control.v1.Building.mrf_type:type_name -> keyapis.telemetry_control.v1.Building.MrfType
	5,  // 31: keyapis.telemetry_control.v1.Building.rf_type:type_name -> keyapis.telemetry_control.v1.Building.RfType
	6,  // 32: keyapis.telemetry_control.v1.Building.status_type:type_name -> keyapis.telemetry_control.v1.Building.StatusType
	31, // 33: keyapis.telemetry_control.v1.PostBuildingFullDuplexResponse.UpsertBuildingEvent.data:type_name -> keyapis.telemetry_control.v1.Building
	36, // 34: keyapis.telemetry_control.v1.PostBuildingFullDuplexRequest.BuildingAsyncStatus.data:type_name -> keyapis.telemetry_control.v1.PostBuildingFullDuplexRequest.BuildingAsyncStatus.Success
	37, // 35: keyapis.telemetry_control.v1.PostBuildingFullDuplexRequest.BuildingAsyncStatus.error:type_name -> keyapis.telemetry_control.v1.PostBuildingFullDuplexRequest.BuildingAsyncStatus.Error
	38, // 36: keyapis.telemetry_control.v1.PostBuildingFullDuplexRequest.BuildingAsyncStatus.Error.unknown:type_name -> keyapis.telemetry_control.v1.PostBuildingFullDuplexRequest.BuildingAsyncStatus.Error.UnknownError
	11, // 37: keyapis.telemetry_control.v1.BuildingService.GetBuilding:input_type -> keyapis.telemetry_control.v1.GetBuildingRequest
	13, // 38: keyapis.telemetry_control.v1.BuildingService.GetBuildingList:input_type -> keyapis.telemetry_control.v1.GetBuildingListRequest
	23, // 39: keyapis.telemetry_control.v1.BuildingService.GetBuildingCount:input_type -> keyapis.telemetry_control.v1.GetBuildingCountRequest
	7,  // 40: keyapis.telemetry_control.v1.BuildingService.PostBuilding:input_type -> keyapis.telemetry_control.v1.PostBuildingRequest
	20, // 41: keyapis.telemetry_control.v1.BuildingService.PostBuildingFullDuplex:input_type -> keyapis.telemetry_control.v1.PostBuildingFullDuplexRequest
	27, // 42: keyapis.telemetry_control.v1.BuildingService.DeleteBuilding:input_type -> keyapis.telemetry_control.v1.DeleteBuildingRequest
	14, // 43: keyapis.telemetry_control.v1.BuildingService.GetBuildingGroupList:input_type -> keyapis.telemetry_control.v1.GetBuildingGroupListRequest
	24, // 44: keyapis.telemetry_control.v1.BuildingService.GetBuildingGroupCount:input_type -> keyapis.telemetry_control.v1.GetBuildingGroupCountRequest
	8,  // 45: keyapis.telemetry_control.v1.BuildingService.PutBuildingGroupAttach:input_type -> keyapis.telemetry_control.v1.PutBuildingGroupAttachRequest
	29, // 46: keyapis.telemetry_control.v1.BuildingService.PutBuildingGroupDetach:input_type -> keyapis.telemetry_control.v1.PutBuildingGroupDetachRequest
	12, // 47: keyapis.telemetry_control.v1.BuildingService.GetBuilding:output_type -> keyapis.telemetry_control.v1.GetBuildingResponse
	17, // 48: keyapis.telemetry_control.v1.BuildingService.GetBuildingList:output_type -> keyapis.telemetry_control.v1.GetBuildingListResponse
	25, // 49: keyapis.telemetry_control.v1.BuildingService.GetBuildingCount:output_type -> keyapis.telemetry_control.v1.GetBuildingCountResponse
	9,  // 50: keyapis.telemetry_control.v1.BuildingService.PostBuilding:output_type -> keyapis.telemetry_control.v1.PostBuildingResponse
	19, // 51: keyapis.telemetry_control.v1.BuildingService.PostBuildingFullDuplex:output_type -> keyapis.telemetry_control.v1.PostBuildingFullDuplexResponse
	28, // 52: keyapis.telemetry_control.v1.BuildingService.DeleteBuilding:output_type -> keyapis.telemetry_control.v1.DeleteBuildingResponse
	18, // 53: keyapis.telemetry_control.v1.BuildingService.GetBuildingGroupList:output_type -> keyapis.telemetry_control.v1.GetBuildingGroupListResponse
	26, // 54: keyapis.telemetry_control.v1.BuildingService.GetBuildingGroupCount:output_type -> keyapis.telemetry_control.v1.GetBuildingGroupCountResponse
	10, // 55: keyapis.telemetry_control.v1.BuildingService.PutBuildingGroupAttach:output_type -> keyapis.telemetry_control.v1.PutBuildingGroupAttachResponse
	30, // 56: keyapis.telemetry_control.v1.BuildingService.PutBuildingGroupDetach:output_type -> keyapis.telemetry_control.v1.PutBuildingGroupDetachResponse
	47, // [47:57] is the sub-list for method output_type
	37, // [37:47] is the sub-list for method input_type
	37, // [37:37] is the sub-list for extension type_name
	37, // [37:37] is the sub-list for extension extendee
	0,  // [0:37] is the sub-list for field type_name
}

func init() { file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_init() }
func file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_init() {
	if File_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostBuildingRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PutBuildingGroupAttachRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostBuildingResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PutBuildingGroupAttachResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBuildingRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBuildingResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBuildingListRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBuildingGroupListRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BuildingGroupPaging); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BuildingPaging); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBuildingListResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBuildingGroupListResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostBuildingFullDuplexResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostBuildingFullDuplexRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BuildingFilter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BuildingGroupFilter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBuildingCountRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBuildingGroupCountRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBuildingCountResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBuildingGroupCountResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteBuildingRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteBuildingResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PutBuildingGroupDetachRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PutBuildingGroupDetachResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Building); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BuildingGroup); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostBuildingFullDuplexResponse_RemoveBuildingEvent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostBuildingFullDuplexResponse_UpsertBuildingEvent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostBuildingFullDuplexRequest_BuildingAsyncStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Success); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_UnknownError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[2].OneofWrappers = []interface{}{
		(*PostBuildingResponse_Data)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[5].OneofWrappers = []interface{}{
		(*GetBuildingResponse_Data)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[6].OneofWrappers = []interface{}{
		(*GetBuildingListRequest_Paging)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[7].OneofWrappers = []interface{}{
		(*GetBuildingGroupListRequest_Paging)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[10].OneofWrappers = []interface{}{
		(*GetBuildingListResponse_Data)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[11].OneofWrappers = []interface{}{
		(*GetBuildingGroupListResponse_Data)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[12].OneofWrappers = []interface{}{
		(*PostBuildingFullDuplexResponse_UpsertBuildingEvent_)(nil),
		(*PostBuildingFullDuplexResponse_RemoveBuildingEvent_)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[13].OneofWrappers = []interface{}{
		(*PostBuildingFullDuplexRequest_BuildingAsyncStatus_)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[18].OneofWrappers = []interface{}{
		(*GetBuildingCountResponse_Data)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[19].OneofWrappers = []interface{}{
		(*GetBuildingGroupCountResponse_Data)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[28].OneofWrappers = []interface{}{
		(*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Data)(nil),
		(*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes[30].OneofWrappers = []interface{}{
		(*PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_Unknown)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_rawDesc,
			NumEnums:      7,
			NumMessages:   32,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_goTypes,
		DependencyIndexes: file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_depIdxs,
		EnumInfos:         file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_enumTypes,
		MessageInfos:      file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_msgTypes,
	}.Build()
	File_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto = out.File
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_rawDesc = nil
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_goTypes = nil
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_building_v1_proto_depIdxs = nil
}
