//
//Сервис реализует функционал управления баннерами.
//Используются как источник Критичнх уведомления, White label компаний и объявления рекламных акций

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

package keyapis_banner_v1

import (
	_ "google.golang.org/genproto/googleapis/api/annotations"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	_ "google.golang.org/protobuf/types/descriptorpb"
	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)
)

// Справочник типов баннеров.
// # Тип: byte
type Banner_Type int32

const (
	// Значение не указано
	Banner_TYPE_UNKNOWN Banner_Type = 0
	// Стандартный баннер
	Banner_STANDARD Banner_Type = 1
)

// Enum value maps for Banner_Type.
var (
	Banner_Type_name = map[int32]string{
		0: "TYPE_UNKNOWN",
		1: "STANDARD",
	}
	Banner_Type_value = map[string]int32{
		"TYPE_UNKNOWN": 0,
		"STANDARD":     1,
	}
)

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

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

func (Banner_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_enumTypes[0].Descriptor()
}

func (Banner_Type) Type() protoreflect.EnumType {
	return &file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_enumTypes[0]
}

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

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

// Справочник типов приоритетов.
// # Тип: byte
type Banner_PriorityType int32

const (
	// Значение не указано
	Banner_PRIORITY_TYPE_UNKNOWN Banner_PriorityType = 0
	// Обычный.
	// Приоритет 31.
	// Вычисляется в логике приложения как priority меньше 64.
	// Извлекаются из базы по фильтру end_priority = 64
	Banner_NORMAL Banner_PriorityType = 1
	// Вайт-лейбл.
	// Приоритет 127.
	// Вычисляется в логике приложения как priority больше или равно 64 и priority меньше 160.
	// Извлекаются из базы по фильтру begin_priority = 64 и end_priority = 160
	Banner_WHITE_LABEL Banner_PriorityType = 2
	// Критикл.
	// Приоритет 191.
	// Вычисляется в логике приложения как priority больше или равно 160.
	// Извлекаются из базы по фильтру begin_priority = 160
	Banner_CRITICAL Banner_PriorityType = 3
)

// Enum value maps for Banner_PriorityType.
var (
	Banner_PriorityType_name = map[int32]string{
		0: "PRIORITY_TYPE_UNKNOWN",
		1: "NORMAL",
		2: "WHITE_LABEL",
		3: "CRITICAL",
	}
	Banner_PriorityType_value = map[string]int32{
		"PRIORITY_TYPE_UNKNOWN": 0,
		"NORMAL":                1,
		"WHITE_LABEL":           2,
		"CRITICAL":              3,
	}
)

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

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

func (Banner_PriorityType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_enumTypes[1].Descriptor()
}

func (Banner_PriorityType) Type() protoreflect.EnumType {
	return &file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_enumTypes[1]
}

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

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

// Справочник статусов баннеров.
// # Тип: byte
type Banner_StatusType int32

const (
	// Значение не указано
	Banner_STATUS_TYPE_UNKNOWN Banner_StatusType = 0
	// Отложен.
	// Вычисляется в логике приложения как сurr_date меньше show_start_at.
	// Извлекаются из базы по фильтру end_show_start_at = сurr_date
	Banner_DEFERRED Banner_StatusType = 1
	// Активен.
	// Вычисляется в логике приложения как сurr_date больше или равно show_start_at и сurr_date меньше show_ended_at.
	// Извлекаются из базы по фильтру begin_show_start_at = сurr_date и end_show_ended_at = сurr_date
	Banner_ACTIVE Banner_StatusType = 2
	// Истёк.
	// Вычисляется в логике приложения как сurr_date больше или равно show_ended_at.
	// Извлекаются из базы по фильтру begin_show_ended_at = сurr_date
	Banner_EXPIRED Banner_StatusType = 3
)

// Enum value maps for Banner_StatusType.
var (
	Banner_StatusType_name = map[int32]string{
		0: "STATUS_TYPE_UNKNOWN",
		1: "DEFERRED",
		2: "ACTIVE",
		3: "EXPIRED",
	}
	Banner_StatusType_value = map[string]int32{
		"STATUS_TYPE_UNKNOWN": 0,
		"DEFERRED":            1,
		"ACTIVE":              2,
		"EXPIRED":             3,
	}
)

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

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

func (Banner_StatusType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_enumTypes[2].Descriptor()
}

func (Banner_StatusType) Type() protoreflect.EnumType {
	return &file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_enumTypes[2]
}

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

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

// Справочник платформ.
// # Тип: byte
type Banner_PlatformType int32

const (
	// Значение не указано
	Banner_PLATFORM_TYPE_UNKNOWN Banner_PlatformType = 0
	// Платформа iOS.
	// Приложение размещается в App Store
	Banner_IOS Banner_PlatformType = 1
	// Платформа Android.
	// Приложение размещается в Google Play, App Gallery или прочих сторах
	Banner_ANDROID Banner_PlatformType = 2
	// Платформа Web.
	// Приложение размещается по интернет адресу
	Banner_WEB Banner_PlatformType = 3
)

// Enum value maps for Banner_PlatformType.
var (
	Banner_PlatformType_name = map[int32]string{
		0: "PLATFORM_TYPE_UNKNOWN",
		1: "IOS",
		2: "ANDROID",
		3: "WEB",
	}
	Banner_PlatformType_value = map[string]int32{
		"PLATFORM_TYPE_UNKNOWN": 0,
		"IOS":                   1,
		"ANDROID":               2,
		"WEB":                   3,
	}
)

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

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

func (Banner_PlatformType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_enumTypes[3].Descriptor()
}

func (Banner_PlatformType) Type() protoreflect.EnumType {
	return &file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_enumTypes[3]
}

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

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

// Справочник типов картинок.
// # Тип: byte
type Banner_Image_Type int32

const (
	// Значение не указано
	Banner_Image_TYPE_UNKNOWN Banner_Image_Type = 0
	// Пререндеренный баннер в портретном режиме.
	// В портретном режиме ширина меньше или равна высоте.
	// Представление характерно для телефонов.
	// Может содержать дополнительные параметры запроса в ссылке(https://docs.imgproxy.net/generating_the_url?id=processing-options).
	// После загрузки изображения отрисовывается поверх цвета и градиента.
	// Если ссылки нет то нужно использовать ссылку из ландшафтного режима
	Banner_Image_PORTRAIT Banner_Image_Type = 1
	// Пререндеренный баннер в ландшафтном режиме.
	// В ландшафтном режиме ширина больше высоты.
	// Представление характерно для планшетов и декстопа.
	// Может содержать дополнительные параметры запроса в ссылке(https://docs.imgproxy.net/generating_the_url?id=processing-options).
	// После загрузки изображения отрисовывается поверх цвета и градиента.
	// Если ссылки нет то нужно использовать ссылку из портретного режима
	Banner_Image_LANDSCAPE Banner_Image_Type = 2
	// Иконка.
	// Может содержать дополнительные параметры запроса в ссылке(https://docs.imgproxy.net/generating_the_url?id=processing-options).
	// После загрузки изображения отрисовывается поверх цвета и градиента
	Banner_Image_ICON Banner_Image_Type = 3
)

// Enum value maps for Banner_Image_Type.
var (
	Banner_Image_Type_name = map[int32]string{
		0: "TYPE_UNKNOWN",
		1: "PORTRAIT",
		2: "LANDSCAPE",
		3: "ICON",
	}
	Banner_Image_Type_value = map[string]int32{
		"TYPE_UNKNOWN": 0,
		"PORTRAIT":     1,
		"LANDSCAPE":    2,
		"ICON":         3,
	}
)

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

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

func (Banner_Image_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_enumTypes[4].Descriptor()
}

func (Banner_Image_Type) Type() protoreflect.EnumType {
	return &file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_enumTypes[4]
}

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

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

// Справочник типов ссылок.
// # Тип: byte
type Banner_Link_Type int32

const (
	// Значение не указано
	Banner_Link_TYPE_UNKNOWN Banner_Link_Type = 0
	// Ссылка для перехода на раздел текущего приложения
	Banner_Link_INTERNAL_APP Banner_Link_Type = 1
	// Ссылка для перехода на стороннее приложение
	Banner_Link_EXTERNAL_APP Banner_Link_Type = 2
	// Ссылка для перехода на веб-вью внутренних (своих) приложений.
	// В окне отсутствует адресаная строка.
	// Для iOS используется WKWebView, для Android используется WebView
	Banner_Link_WEB_VIEW Banner_Link_Type = 3
	// Ссылка для перехода на веб-браузер
	Banner_Link_WEB_BROWSER Banner_Link_Type = 4
	// Ссылка для перехода на веб-вью внешних (партнёрских) приложений.
	// В окне присутствует адресаная строка.
	// Для iOS используется SFSafariViewController, для Android используется ChromeCustomTabs
	Banner_Link_EXTERNAL_WEB_VIEW Banner_Link_Type = 5
)

// Enum value maps for Banner_Link_Type.
var (
	Banner_Link_Type_name = map[int32]string{
		0: "TYPE_UNKNOWN",
		1: "INTERNAL_APP",
		2: "EXTERNAL_APP",
		3: "WEB_VIEW",
		4: "WEB_BROWSER",
		5: "EXTERNAL_WEB_VIEW",
	}
	Banner_Link_Type_value = map[string]int32{
		"TYPE_UNKNOWN":      0,
		"INTERNAL_APP":      1,
		"EXTERNAL_APP":      2,
		"WEB_VIEW":          3,
		"WEB_BROWSER":       4,
		"EXTERNAL_WEB_VIEW": 5,
	}
)

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

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

func (Banner_Link_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_enumTypes[5].Descriptor()
}

func (Banner_Link_Type) Type() protoreflect.EnumType {
	return &file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_enumTypes[5]
}

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

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

// Справочник типов значений сортировки.
// # Тип: byte
type BannerPaging_OrderByType int32

const (
	// Значение не указано
	BannerPaging_ORDER_BY_TYPE_UNKNOWN BannerPaging_OrderByType = 0
	// Дата последнего изменения
	BannerPaging_CHANGED_AT BannerPaging_OrderByType = 1
	// По приоритету, затем по дате начала показа
	BannerPaging_PRIORITY_THEN_SHOW_START_AT BannerPaging_OrderByType = 2
	// Дата создания
	BannerPaging_CREATED_AT BannerPaging_OrderByType = 3
	// Дата начала показа
	BannerPaging_SHOW_START_AT BannerPaging_OrderByType = 4
	// Дата конца показа
	BannerPaging_SHOW_ENDED_AT BannerPaging_OrderByType = 5
	// По рангу для поиска по тексту.
	// Применяется когда передано поле для поиска по тексту.
	// В случае если текстовое поле не передано, применяется значение по умолчанию
	BannerPaging_RANK BannerPaging_OrderByType = 6
)

// Enum value maps for BannerPaging_OrderByType.
var (
	BannerPaging_OrderByType_name = map[int32]string{
		0: "ORDER_BY_TYPE_UNKNOWN",
		1: "CHANGED_AT",
		2: "PRIORITY_THEN_SHOW_START_AT",
		3: "CREATED_AT",
		4: "SHOW_START_AT",
		5: "SHOW_ENDED_AT",
		6: "RANK",
	}
	BannerPaging_OrderByType_value = map[string]int32{
		"ORDER_BY_TYPE_UNKNOWN":       0,
		"CHANGED_AT":                  1,
		"PRIORITY_THEN_SHOW_START_AT": 2,
		"CREATED_AT":                  3,
		"SHOW_START_AT":               4,
		"SHOW_ENDED_AT":               5,
		"RANK":                        6,
	}
)

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

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

func (BannerPaging_OrderByType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_enumTypes[6].Descriptor()
}

func (BannerPaging_OrderByType) Type() protoreflect.EnumType {
	return &file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_enumTypes[6]
}

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

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

// Справочник типов направлений сортировки.
// # Тип: byte
type BannerPaging_DirectionType int32

const (
	// Значение не указано
	BannerPaging_DIRECTION_TYPE_UNKNOWN BannerPaging_DirectionType = 0
	// От большего к меньшему
	BannerPaging_DESC BannerPaging_DirectionType = 1
	// От меньшего к большему
	BannerPaging_ASC BannerPaging_DirectionType = 2
)

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

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

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

func (BannerPaging_DirectionType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_enumTypes[7].Descriptor()
}

func (BannerPaging_DirectionType) Type() protoreflect.EnumType {
	return &file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_enumTypes[7]
}

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

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

// Баннер.
// # Описание модели
type Banner struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор.
	// Если не передан создаётся сервером.
	// # Тип: Guid
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Тип баннера.
	// Обязательное
	Type Banner_Type `protobuf:"varint,2,opt,name=type,proto3,enum=keyapis.banner.v1.Banner_Type" json:"type,omitempty"`
	// Приоритет.
	// Обязательное.
	// # Диапазон: 1..255
	Priority int32 `protobuf:"varint,3,opt,name=priority,proto3" json:"priority,omitempty"`
	// Тип приоритета.
	// # Поле вычисляется в коде приложения
	PriorityType Banner_PriorityType `protobuf:"varint,4,opt,name=priority_type,json=priorityType,proto3,enum=keyapis.banner.v1.Banner_PriorityType" json:"priority_type,omitempty"`
	// Название.
	// Обязательное.
	// Обычно это название рекламной компании.
	// Не отображается пользователям.
	// # Диапазон: 3..256
	Title string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"`
	// Заголовок.
	// # Диапазон: 3..64
	Header *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=header,proto3" json:"header,omitempty"`
	// Цвет текста заголовка.
	// Все цвета должны быть в формате hex #RRGGBBAA.
	// Пример: #7e00c380.
	// # Диапазон: 9..9.
	// # Паттерн: /^#[0-9a-fA-F]{8}$/
	HeaderColor *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=header_color,json=headerColor,proto3" json:"header_color,omitempty"`
	// Подзаголовок.
	// # Диапазон: 3..256
	Subtitle *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=subtitle,proto3" json:"subtitle,omitempty"`
	// Цвет текста подзаголовка.
	// Все цвета должны быть в формате hex #RRGGBBAA.
	// Пример: #7e00c380.
	// # Диапазон: 9..9.
	// # Паттерн: /^#[0-9a-fA-F]{8}$/
	SubtitleColor *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=subtitle_color,json=subtitleColor,proto3" json:"subtitle_color,omitempty"`
	// Цвет заднего плана(подложки).
	// Отрисовывается до загрузки картинки и градиента.
	// Все цвета должны быть в формате hex #RRGGBBAA.
	// Пример: #7e00c380.
	// # Диапазон: 9..9.
	// # Паттерн: /^#[0-9a-fA-F]{8}$/
	BackgroundColor *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=background_color,json=backgroundColor,proto3" json:"background_color,omitempty"`
	// Градиент
	BackgroundGradient *Banner_Gradient `protobuf:"bytes,11,opt,name=background_gradient,json=backgroundGradient,proto3" json:"background_gradient,omitempty"`
	// Количество дней через которое можно повторно показать баннер.
	// Если null, то закрыть нельзя, баннер повторно выводится каждый раз.
	// # Диапазон: 0..366
	RepeatAfterDays *wrapperspb.Int32Value `protobuf:"bytes,12,opt,name=repeat_after_days,json=repeatAfterDays,proto3" json:"repeat_after_days,omitempty"`
	// Дата начала показа.
	// Обязательное.
	// Бессрочно если значение 2000-01-01.
	// # Тип: DateOnly.
	// # Диапазон: 730119..1095362
	ShowStartAt *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=show_start_at,json=showStartAt,proto3" json:"show_start_at,omitempty"`
	// Дата конца показа.
	// Обязательное.
	// Бессрочно если значение 3000-01-01.
	// # Тип: DateOnly.
	// # Диапазон: 730119..1095362
	ShowEndedAt *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=show_ended_at,json=showEndedAt,proto3" json:"show_ended_at,omitempty"`
	// Статус баннера.
	// # Поле вычисляется в коде приложения
	StatusType Banner_StatusType `protobuf:"varint,15,opt,name=status_type,json=statusType,proto3,enum=keyapis.banner.v1.Banner_StatusType" json:"status_type,omitempty"`
	// Картинки.
	// # Диапазон: 0..20
	Images []*Banner_Image `protobuf:"bytes,16,rep,name=images,proto3" json:"images,omitempty"`
	// Ссылки для переходов.
	// # Диапазон: 0..100
	Links []*Banner_Link `protobuf:"bytes,17,rep,name=links,proto3" json:"links,omitempty"`
	// Список тегов пользователей.
	// Обязательное.
	// Описывает кто может видеть баннер.
	// Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.
	// # Диапазон: 1..100.
	// # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
	UserTags []string `protobuf:"bytes,18,rep,name=user_tags,json=userTags,proto3" json:"user_tags,omitempty"`
	// Список тегов приложений.
	// Обязательное.
	// Описывает какие клиенты могут видеть баннер.
	// Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.
	// # Диапазон: 1..20.
	// # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
	AppTags []string `protobuf:"bytes,19,rep,name=app_tags,json=appTags,proto3" json:"app_tags,omitempty"`
	// Дата создания.
	// # Тип: DateTime
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,20,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Дата последнего изменения.
	// Заполняется и обновляется сервером.
	// Заполняется при создании и изменении.
	// Является версией объекта.
	// # Тип: DateTime
	ChangedAt *timestamppb.Timestamp `protobuf:"bytes,21,opt,name=changed_at,json=changedAt,proto3" json:"changed_at,omitempty"`
}

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

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

func (*Banner) ProtoMessage() {}

func (x *Banner) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 Banner.ProtoReflect.Descriptor instead.
func (*Banner) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{0}
}

func (x *Banner) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Banner) GetType() Banner_Type {
	if x != nil {
		return x.Type
	}
	return Banner_TYPE_UNKNOWN
}

func (x *Banner) GetPriority() int32 {
	if x != nil {
		return x.Priority
	}
	return 0
}

func (x *Banner) GetPriorityType() Banner_PriorityType {
	if x != nil {
		return x.PriorityType
	}
	return Banner_PRIORITY_TYPE_UNKNOWN
}

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

func (x *Banner) GetHeader() *wrapperspb.StringValue {
	if x != nil {
		return x.Header
	}
	return nil
}

func (x *Banner) GetHeaderColor() *wrapperspb.StringValue {
	if x != nil {
		return x.HeaderColor
	}
	return nil
}

func (x *Banner) GetSubtitle() *wrapperspb.StringValue {
	if x != nil {
		return x.Subtitle
	}
	return nil
}

func (x *Banner) GetSubtitleColor() *wrapperspb.StringValue {
	if x != nil {
		return x.SubtitleColor
	}
	return nil
}

func (x *Banner) GetBackgroundColor() *wrapperspb.StringValue {
	if x != nil {
		return x.BackgroundColor
	}
	return nil
}

func (x *Banner) GetBackgroundGradient() *Banner_Gradient {
	if x != nil {
		return x.BackgroundGradient
	}
	return nil
}

func (x *Banner) GetRepeatAfterDays() *wrapperspb.Int32Value {
	if x != nil {
		return x.RepeatAfterDays
	}
	return nil
}

func (x *Banner) GetShowStartAt() *timestamppb.Timestamp {
	if x != nil {
		return x.ShowStartAt
	}
	return nil
}

func (x *Banner) GetShowEndedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.ShowEndedAt
	}
	return nil
}

func (x *Banner) GetStatusType() Banner_StatusType {
	if x != nil {
		return x.StatusType
	}
	return Banner_STATUS_TYPE_UNKNOWN
}

func (x *Banner) GetImages() []*Banner_Image {
	if x != nil {
		return x.Images
	}
	return nil
}

func (x *Banner) GetLinks() []*Banner_Link {
	if x != nil {
		return x.Links
	}
	return nil
}

func (x *Banner) GetUserTags() []string {
	if x != nil {
		return x.UserTags
	}
	return nil
}

func (x *Banner) GetAppTags() []string {
	if x != nil {
		return x.AppTags
	}
	return nil
}

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

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

// Облегчённый баннер
type BannerLite struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор.
	// # Тип: Guid
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Количество дней через которое можно повторно показать баннер.
	// Если Значение не указано то повторного показа баннера не будет
	RepeatAfterDays *wrapperspb.Int32Value `protobuf:"bytes,2,opt,name=repeat_after_days,json=repeatAfterDays,proto3" json:"repeat_after_days,omitempty"`
	// Картинки
	Images []*BannerLite_ImageLite `protobuf:"bytes,3,rep,name=images,proto3" json:"images,omitempty"`
	// Ссылки для переходов.
	// Возвращаются отфильтрованные по платформе
	Links []*BannerLite_LinkLite `protobuf:"bytes,4,rep,name=links,proto3" json:"links,omitempty"`
}

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

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

func (*BannerLite) ProtoMessage() {}

func (x *BannerLite) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 BannerLite.ProtoReflect.Descriptor instead.
func (*BannerLite) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{1}
}

func (x *BannerLite) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *BannerLite) GetRepeatAfterDays() *wrapperspb.Int32Value {
	if x != nil {
		return x.RepeatAfterDays
	}
	return nil
}

func (x *BannerLite) GetImages() []*BannerLite_ImageLite {
	if x != nil {
		return x.Images
	}
	return nil
}

func (x *BannerLite) GetLinks() []*BannerLite_LinkLite {
	if x != nil {
		return x.Links
	}
	return nil
}

// Фильтр баннеров
type BannerFilter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// По тексту.
	// Если значение не передано то поиск по нему не производится.
	// # Диапазон: 3..64.
	// # Поиск производится по полям:
	// # - Название;
	// # - Заголовок;
	// # - Подзаголовок;
	// # - Список тегов пользователей;
	// # - Список тегов приложений
	Text *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"`
	// По типам баннеров
	Types []Banner_Type `protobuf:"varint,2,rep,packed,name=types,proto3,enum=keyapis.banner.v1.Banner_Type" json:"types,omitempty"`
	// От приоритета включительно (больше или равно)
	BeginPriority *wrapperspb.Int32Value `protobuf:"bytes,3,opt,name=begin_priority,json=beginPriority,proto3" json:"begin_priority,omitempty"`
	// До приоритета (меньше)
	EndPriority *wrapperspb.Int32Value `protobuf:"bytes,4,opt,name=end_priority,json=endPriority,proto3" json:"end_priority,omitempty"`
	// По типам приоритетов.
	// Переписывает значения фильтров по приоритету.
	// Если переданы все типы, то фильтр игнорируется(так как нужно вернуть всё)
	PriorityTypes []Banner_PriorityType `protobuf:"varint,5,rep,packed,name=priority_types,json=priorityTypes,proto3,enum=keyapis.banner.v1.Banner_PriorityType" json:"priority_types,omitempty"`
	// От даты начала показа включительно (больше или равно)
	BeginShowStartAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=begin_show_start_at,json=beginShowStartAt,proto3" json:"begin_show_start_at,omitempty"`
	// До даты начала показа (меньше)
	EndShowStartAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=end_show_start_at,json=endShowStartAt,proto3" json:"end_show_start_at,omitempty"`
	// От даты конца показа включительно (больше или равно)
	BeginShowEndedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=begin_show_ended_at,json=beginShowEndedAt,proto3" json:"begin_show_ended_at,omitempty"`
	// До даты конца показа (меньше)
	EndShowEndedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=end_show_ended_at,json=endShowEndedAt,proto3" json:"end_show_ended_at,omitempty"`
	// По статусам баннеров.
	// Переписывает значения фильтров по датам.
	// Если переданы все типы, то фильтр игнорируется(так как нужно вернуть всё)
	StatusTypes []Banner_StatusType `protobuf:"varint,10,rep,packed,name=status_types,json=statusTypes,proto3,enum=keyapis.banner.v1.Banner_StatusType" json:"status_types,omitempty"`
	// По пользовательским тегам.
	// Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.
	// # Диапазон: 0..20.
	// # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
	UserTags []string `protobuf:"bytes,11,rep,name=user_tags,json=userTags,proto3" json:"user_tags,omitempty"`
	// По тегам приложений.
	// Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.
	// # Диапазон: 0..20.
	// # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
	AppTags []string `protobuf:"bytes,12,rep,name=app_tags,json=appTags,proto3" json:"app_tags,omitempty"`
}

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

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

func (*BannerFilter) ProtoMessage() {}

func (x *BannerFilter) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 BannerFilter.ProtoReflect.Descriptor instead.
func (*BannerFilter) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{2}
}

func (x *BannerFilter) GetText() *wrapperspb.StringValue {
	if x != nil {
		return x.Text
	}
	return nil
}

func (x *BannerFilter) GetTypes() []Banner_Type {
	if x != nil {
		return x.Types
	}
	return nil
}

func (x *BannerFilter) GetBeginPriority() *wrapperspb.Int32Value {
	if x != nil {
		return x.BeginPriority
	}
	return nil
}

func (x *BannerFilter) GetEndPriority() *wrapperspb.Int32Value {
	if x != nil {
		return x.EndPriority
	}
	return nil
}

func (x *BannerFilter) GetPriorityTypes() []Banner_PriorityType {
	if x != nil {
		return x.PriorityTypes
	}
	return nil
}

func (x *BannerFilter) GetBeginShowStartAt() *timestamppb.Timestamp {
	if x != nil {
		return x.BeginShowStartAt
	}
	return nil
}

func (x *BannerFilter) GetEndShowStartAt() *timestamppb.Timestamp {
	if x != nil {
		return x.EndShowStartAt
	}
	return nil
}

func (x *BannerFilter) GetBeginShowEndedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.BeginShowEndedAt
	}
	return nil
}

func (x *BannerFilter) GetEndShowEndedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.EndShowEndedAt
	}
	return nil
}

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

func (x *BannerFilter) GetUserTags() []string {
	if x != nil {
		return x.UserTags
	}
	return nil
}

func (x *BannerFilter) GetAppTags() []string {
	if x != nil {
		return x.AppTags
	}
	return nil
}

// Упрощённый фильтр по баннерам
type BannerLiteFilter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// По типам баннеров
	Types []Banner_Type `protobuf:"varint,1,rep,packed,name=types,proto3,enum=keyapis.banner.v1.Banner_Type" json:"types,omitempty"`
	// Название приложения.
	// # Диапазон: 1..19.
	// # Паттерн: /^[0-9A-Z-]{1,19}$/
	AppName *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"`
	// Тип платформы
	PlatformType Banner_PlatformType `protobuf:"varint,3,opt,name=platform_type,json=platformType,proto3,enum=keyapis.banner.v1.Banner_PlatformType" json:"platform_type,omitempty"`
	// Версия приложения.
	// # Диапазон: 1..19.
	// # Паттерн: /^[0-9A-Z-]{1,19}$/
	Version *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"`
	// По тегам пользователя.
	// Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.
	// # Диапазон: 1..20.
	// # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
	UserTags []string `protobuf:"bytes,5,rep,name=user_tags,json=userTags,proto3" json:"user_tags,omitempty"`
}

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

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

func (*BannerLiteFilter) ProtoMessage() {}

func (x *BannerLiteFilter) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 BannerLiteFilter.ProtoReflect.Descriptor instead.
func (*BannerLiteFilter) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{3}
}

func (x *BannerLiteFilter) GetTypes() []Banner_Type {
	if x != nil {
		return x.Types
	}
	return nil
}

func (x *BannerLiteFilter) GetAppName() *wrapperspb.StringValue {
	if x != nil {
		return x.AppName
	}
	return nil
}

func (x *BannerLiteFilter) GetPlatformType() Banner_PlatformType {
	if x != nil {
		return x.PlatformType
	}
	return Banner_PLATFORM_TYPE_UNKNOWN
}

func (x *BannerLiteFilter) GetVersion() *wrapperspb.StringValue {
	if x != nil {
		return x.Version
	}
	return nil
}

func (x *BannerLiteFilter) GetUserTags() []string {
	if x != nil {
		return x.UserTags
	}
	return nil
}

// Пагинация баннеров
type BannerPaging struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

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

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

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

func (*BannerPaging) ProtoMessage() {}

func (x *BannerPaging) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 BannerPaging.ProtoReflect.Descriptor instead.
func (*BannerPaging) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{4}
}

func (x *BannerPaging) GetOrderByType() BannerPaging_OrderByType {
	if x != nil {
		return x.OrderByType
	}
	return BannerPaging_ORDER_BY_TYPE_UNKNOWN
}

func (x *BannerPaging) GetDirectionType() BannerPaging_DirectionType {
	if x != nil {
		return x.DirectionType
	}
	return BannerPaging_DIRECTION_TYPE_UNKNOWN
}

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

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

// Запрос сохранения баннера
type PostBannerRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Баннер
	Data *Banner `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
}

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

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

func (*PostBannerRequest) ProtoMessage() {}

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

func (x *PostBannerRequest) GetData() *Banner {
	if x != nil {
		return x.Data
	}
	return nil
}

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

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

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

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

func (*PostBannerResponse) ProtoMessage() {}

func (x *PostBannerResponse) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 PostBannerResponse.ProtoReflect.Descriptor instead.
func (*PostBannerResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{6}
}

func (m *PostBannerResponse) GetType() isPostBannerResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *PostBannerResponse) GetData() *Banner {
	if x, ok := x.GetType().(*PostBannerResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *PostBannerResponse) GetError() *PostBannerResponse_Error {
	if x, ok := x.GetType().(*PostBannerResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isPostBannerResponse_Type interface {
	isPostBannerResponse_Type()
}

type PostBannerResponse_Data struct {
	// Баннер
	Data *Banner `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

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

func (*PostBannerResponse_Data) isPostBannerResponse_Type() {}

func (*PostBannerResponse_Error_) isPostBannerResponse_Type() {}

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

	// Идентификатор баннера.
	// # Тип: Guid
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}

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

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

func (*GetBannerRequest) ProtoMessage() {}

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

func (x *GetBannerRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

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

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

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

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

func (*GetBannerResponse) ProtoMessage() {}

func (x *GetBannerResponse) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 GetBannerResponse.ProtoReflect.Descriptor instead.
func (*GetBannerResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{8}
}

func (m *GetBannerResponse) GetType() isGetBannerResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetBannerResponse) GetData() *Banner {
	if x, ok := x.GetType().(*GetBannerResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *GetBannerResponse) GetError() *GetBannerResponse_Error {
	if x, ok := x.GetType().(*GetBannerResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetBannerResponse_Type interface {
	isGetBannerResponse_Type()
}

type GetBannerResponse_Data struct {
	// Баннер
	Data *Banner `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

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

func (*GetBannerResponse_Data) isGetBannerResponse_Type() {}

func (*GetBannerResponse_Error_) isGetBannerResponse_Type() {}

// Запрос получения упрощённого баннера
type GetBannerLiteRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор баннера.
	// # Тип: Guid
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}

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

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

func (*GetBannerLiteRequest) ProtoMessage() {}

func (x *GetBannerLiteRequest) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 GetBannerLiteRequest.ProtoReflect.Descriptor instead.
func (*GetBannerLiteRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{9}
}

func (x *GetBannerLiteRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

// Ответ на запрос получения упрощённого баннера
type GetBannerLiteResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

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

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

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

func (*GetBannerLiteResponse) ProtoMessage() {}

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

func (m *GetBannerLiteResponse) GetType() isGetBannerLiteResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetBannerLiteResponse) GetData() *BannerLite {
	if x, ok := x.GetType().(*GetBannerLiteResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *GetBannerLiteResponse) GetError() *GetBannerLiteResponse_Error {
	if x, ok := x.GetType().(*GetBannerLiteResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetBannerLiteResponse_Type interface {
	isGetBannerLiteResponse_Type()
}

type GetBannerLiteResponse_Data struct {
	// Упрощённый баннер
	Data *BannerLite `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

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

func (*GetBannerLiteResponse_Data) isGetBannerLiteResponse_Type() {}

func (*GetBannerLiteResponse_Error_) isGetBannerLiteResponse_Type() {}

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

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

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

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

func (*GetBannerListRequest) ProtoMessage() {}

func (x *GetBannerListRequest) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 GetBannerListRequest.ProtoReflect.Descriptor instead.
func (*GetBannerListRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{11}
}

func (x *GetBannerListRequest) GetFilter() *BannerFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

func (m *GetBannerListRequest) GetPagination() isGetBannerListRequest_Pagination {
	if m != nil {
		return m.Pagination
	}
	return nil
}

func (x *GetBannerListRequest) GetPaging() *BannerPaging {
	if x, ok := x.GetPagination().(*GetBannerListRequest_Paging); ok {
		return x.Paging
	}
	return nil
}

type isGetBannerListRequest_Pagination interface {
	isGetBannerListRequest_Pagination()
}

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

func (*GetBannerListRequest_Paging) isGetBannerListRequest_Pagination() {}

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

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

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

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

func (*GetBannerListResponse) ProtoMessage() {}

func (x *GetBannerListResponse) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 GetBannerListResponse.ProtoReflect.Descriptor instead.
func (*GetBannerListResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{12}
}

func (m *GetBannerListResponse) GetType() isGetBannerListResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetBannerListResponse) GetData() *Banner {
	if x, ok := x.GetType().(*GetBannerListResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *GetBannerListResponse) GetError() *GetBannerListResponse_Error {
	if x, ok := x.GetType().(*GetBannerListResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetBannerListResponse_Type interface {
	isGetBannerListResponse_Type()
}

type GetBannerListResponse_Data struct {
	// Баннер
	Data *Banner `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

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

func (*GetBannerListResponse_Data) isGetBannerListResponse_Type() {}

func (*GetBannerListResponse_Error_) isGetBannerListResponse_Type() {}

// Запрос получения списка упрощённого баннеров
type GetBannerLiteListRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Упрощённый фильтр
	Filter *BannerLiteFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
	// Признак отключения фильтрации по типу платформы
	IsLinkFilterDisabled bool `protobuf:"varint,2,opt,name=is_link_filter_disabled,json=isLinkFilterDisabled,proto3" json:"is_link_filter_disabled,omitempty"`
}

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

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

func (*GetBannerLiteListRequest) ProtoMessage() {}

func (x *GetBannerLiteListRequest) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 GetBannerLiteListRequest.ProtoReflect.Descriptor instead.
func (*GetBannerLiteListRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{13}
}

func (x *GetBannerLiteListRequest) GetFilter() *BannerLiteFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

func (x *GetBannerLiteListRequest) GetIsLinkFilterDisabled() bool {
	if x != nil {
		return x.IsLinkFilterDisabled
	}
	return false
}

// Ответ на запрос получения списка упрощённых баннеров
type GetBannerLiteListResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

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

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

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

func (*GetBannerLiteListResponse) ProtoMessage() {}

func (x *GetBannerLiteListResponse) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 GetBannerLiteListResponse.ProtoReflect.Descriptor instead.
func (*GetBannerLiteListResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{14}
}

func (m *GetBannerLiteListResponse) GetType() isGetBannerLiteListResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetBannerLiteListResponse) GetData() *BannerLite {
	if x, ok := x.GetType().(*GetBannerLiteListResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *GetBannerLiteListResponse) GetError() *GetBannerLiteListResponse_Error {
	if x, ok := x.GetType().(*GetBannerLiteListResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetBannerLiteListResponse_Type interface {
	isGetBannerLiteListResponse_Type()
}

type GetBannerLiteListResponse_Data struct {
	// Упрощённый баннер
	Data *BannerLite `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

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

func (*GetBannerLiteListResponse_Data) isGetBannerLiteListResponse_Type() {}

func (*GetBannerLiteListResponse_Error_) isGetBannerLiteListResponse_Type() {}

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

	// Фильтр
	Filter *BannerFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
}

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

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

func (*GetBannerCountRequest) ProtoMessage() {}

func (x *GetBannerCountRequest) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 GetBannerCountRequest.ProtoReflect.Descriptor instead.
func (*GetBannerCountRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{15}
}

func (x *GetBannerCountRequest) GetFilter() *BannerFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

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

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

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

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

func (*GetBannerCountResponse) ProtoMessage() {}

func (x *GetBannerCountResponse) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 GetBannerCountResponse.ProtoReflect.Descriptor instead.
func (*GetBannerCountResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{16}
}

func (m *GetBannerCountResponse) GetType() isGetBannerCountResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

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

func (x *GetBannerCountResponse) GetError() *GetBannerCountResponse_Error {
	if x, ok := x.GetType().(*GetBannerCountResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetBannerCountResponse_Type interface {
	isGetBannerCountResponse_Type()
}

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

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

func (*GetBannerCountResponse_Data) isGetBannerCountResponse_Type() {}

func (*GetBannerCountResponse_Error_) isGetBannerCountResponse_Type() {}

// Объект загружаемой картинки
type UploadImage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Картинка в формате инлайн base64.
	// Обязательное.
	// Пример: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA...".
	// # Паттерн: /^data:\s*image\/(png|jpeg|jpg);\s*base64/
	Base64 string `protobuf:"bytes,1,opt,name=base64,proto3" json:"base64,omitempty"`
}

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

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

func (*UploadImage) ProtoMessage() {}

func (x *UploadImage) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 UploadImage.ProtoReflect.Descriptor instead.
func (*UploadImage) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{17}
}

func (x *UploadImage) GetBase64() string {
	if x != nil {
		return x.Base64
	}
	return ""
}

// Запрос загрузки картинки баннера
type PostBannerUploadImageRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор баннера.
	// Используется для складывания картинок баннера в папку баннера в бакете.
	// Название картинки в папке создаётся из случайного Guid.
	// # Тип: Guid
	BannerId string `protobuf:"bytes,1,opt,name=banner_id,json=bannerId,proto3" json:"banner_id,omitempty"`
	// Загружаемая картинка
	UploadImage *UploadImage `protobuf:"bytes,2,opt,name=upload_image,json=uploadImage,proto3" json:"upload_image,omitempty"`
}

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

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

func (*PostBannerUploadImageRequest) ProtoMessage() {}

func (x *PostBannerUploadImageRequest) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 PostBannerUploadImageRequest.ProtoReflect.Descriptor instead.
func (*PostBannerUploadImageRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{18}
}

func (x *PostBannerUploadImageRequest) GetBannerId() string {
	if x != nil {
		return x.BannerId
	}
	return ""
}

func (x *PostBannerUploadImageRequest) GetUploadImage() *UploadImage {
	if x != nil {
		return x.UploadImage
	}
	return nil
}

// Ответ на запрос загрузки картинки баннера
type PostBannerUploadImageResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

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

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

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

func (*PostBannerUploadImageResponse) ProtoMessage() {}

func (x *PostBannerUploadImageResponse) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 PostBannerUploadImageResponse.ProtoReflect.Descriptor instead.
func (*PostBannerUploadImageResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{19}
}

func (m *PostBannerUploadImageResponse) GetType() isPostBannerUploadImageResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *PostBannerUploadImageResponse) GetData() string {
	if x, ok := x.GetType().(*PostBannerUploadImageResponse_Data); ok {
		return x.Data
	}
	return ""
}

func (x *PostBannerUploadImageResponse) GetError() *PostBannerUploadImageResponse_Error {
	if x, ok := x.GetType().(*PostBannerUploadImageResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isPostBannerUploadImageResponse_Type interface {
	isPostBannerUploadImageResponse_Type()
}

type PostBannerUploadImageResponse_Data struct {
	// Ссылка на баннер на imageproxy cdn сервер.
	// Общедоступна в интернете
	Data string `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

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

func (*PostBannerUploadImageResponse_Data) isPostBannerUploadImageResponse_Type() {}

func (*PostBannerUploadImageResponse_Error_) isPostBannerUploadImageResponse_Type() {}

// Ошибки валидации.
// Эти проверки выполняются до обращения в базу данных
type ValidationError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Путь к полю в формате наименования прото
	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	// Валидационное сообщение
	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

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

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

func (*ValidationError) ProtoMessage() {}

func (x *ValidationError) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 ValidationError.ProtoReflect.Descriptor instead.
func (*ValidationError) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{20}
}

func (x *ValidationError) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

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

// Градиент
type Banner_Gradient struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип градиента
	//
	// Types that are assignable to Type:
	//
	//	*Banner_Gradient_Linear_
	Type isBanner_Gradient_Type `protobuf_oneof:"type"`
}

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

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

func (*Banner_Gradient) ProtoMessage() {}

func (x *Banner_Gradient) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 Banner_Gradient.ProtoReflect.Descriptor instead.
func (*Banner_Gradient) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{0, 0}
}

func (m *Banner_Gradient) GetType() isBanner_Gradient_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *Banner_Gradient) GetLinear() *Banner_Gradient_Linear {
	if x, ok := x.GetType().(*Banner_Gradient_Linear_); ok {
		return x.Linear
	}
	return nil
}

type isBanner_Gradient_Type interface {
	isBanner_Gradient_Type()
}

type Banner_Gradient_Linear_ struct {
	// Линейный градиент
	Linear *Banner_Gradient_Linear `protobuf:"bytes,1,opt,name=linear,proto3,oneof"`
}

func (*Banner_Gradient_Linear_) isBanner_Gradient_Type() {}

// Объект картинки
type Banner_Image struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип картинки.
	// Обязательное
	Type Banner_Image_Type `protobuf:"varint,1,opt,name=type,proto3,enum=keyapis.banner.v1.Banner_Image_Type" json:"type,omitempty"`
	// Значение ссылки на картинку.
	// Обязательное.
	// # Диапазон: 12..512
	Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
}

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

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

func (*Banner_Image) ProtoMessage() {}

func (x *Banner_Image) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 Banner_Image.ProtoReflect.Descriptor instead.
func (*Banner_Image) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{0, 1}
}

func (x *Banner_Image) GetType() Banner_Image_Type {
	if x != nil {
		return x.Type
	}
	return Banner_Image_TYPE_UNKNOWN
}

func (x *Banner_Image) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

// Ссылка
type Banner_Link struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип платформы.
	// Обязательное
	PlatformType Banner_PlatformType `protobuf:"varint,1,opt,name=platform_type,json=platformType,proto3,enum=keyapis.banner.v1.Banner_PlatformType" json:"platform_type,omitempty"`
	// Тип ссылки.
	// Обязательное
	Type Banner_Link_Type `protobuf:"varint,2,opt,name=type,proto3,enum=keyapis.banner.v1.Banner_Link_Type" json:"type,omitempty"`
	// Значение ссылки для перехода.
	// Обязательное.
	// # Диапазон: 12..512
	Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"`
	// Список пакетов.
	// Если пусто попытка перехода осуществляется безусловно.
	// Если заполнено, то переход осуществляется только в случае если хоть один пакет есть на устройстве, иначе обработка переходит к следующей ссылке.
	// # Диапазон: 0..20
	Packages []string `protobuf:"bytes,4,rep,name=packages,proto3" json:"packages,omitempty"`
}

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

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

func (*Banner_Link) ProtoMessage() {}

func (x *Banner_Link) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 Banner_Link.ProtoReflect.Descriptor instead.
func (*Banner_Link) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{0, 2}
}

func (x *Banner_Link) GetPlatformType() Banner_PlatformType {
	if x != nil {
		return x.PlatformType
	}
	return Banner_PLATFORM_TYPE_UNKNOWN
}

func (x *Banner_Link) GetType() Banner_Link_Type {
	if x != nil {
		return x.Type
	}
	return Banner_Link_TYPE_UNKNOWN
}

func (x *Banner_Link) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

func (x *Banner_Link) GetPackages() []string {
	if x != nil {
		return x.Packages
	}
	return nil
}

// Ошибка сохранения.
// Эти проверки выполняются при работе с базой данных и сторонними сервисами
type Banner_SavingError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

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

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

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

func (*Banner_SavingError) ProtoMessage() {}

func (x *Banner_SavingError) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 Banner_SavingError.ProtoReflect.Descriptor instead.
func (*Banner_SavingError) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{0, 3}
}

func (m *Banner_SavingError) GetReason() isBanner_SavingError_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *Banner_SavingError) GetConflict() *Banner_SavingError_Conflict {
	if x, ok := x.GetReason().(*Banner_SavingError_Conflict_); ok {
		return x.Conflict
	}
	return nil
}

type isBanner_SavingError_Reason interface {
	isBanner_SavingError_Reason()
}

type Banner_SavingError_Conflict_ struct {
	// Конфликт версий
	Conflict *Banner_SavingError_Conflict `protobuf:"bytes,1,opt,name=conflict,proto3,oneof"`
}

func (*Banner_SavingError_Conflict_) isBanner_SavingError_Reason() {}

// Линейный градиент
type Banner_Gradient_Linear struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Угол направления линейного градиента в градусах.
	// # Диапазон: 0..360
	Angle float32 `protobuf:"fixed32,1,opt,name=angle,proto3" json:"angle,omitempty"`
	// Точки градиента.
	// Обязательное.
	// # Диапазон: 2..20
	Points []*Banner_Gradient_Linear_Point `protobuf:"bytes,2,rep,name=points,proto3" json:"points,omitempty"`
}

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

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

func (*Banner_Gradient_Linear) ProtoMessage() {}

func (x *Banner_Gradient_Linear) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 Banner_Gradient_Linear.ProtoReflect.Descriptor instead.
func (*Banner_Gradient_Linear) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{0, 0, 0}
}

func (x *Banner_Gradient_Linear) GetAngle() float32 {
	if x != nil {
		return x.Angle
	}
	return 0
}

func (x *Banner_Gradient_Linear) GetPoints() []*Banner_Gradient_Linear_Point {
	if x != nil {
		return x.Points
	}
	return nil
}

// Точка
type Banner_Gradient_Linear_Point struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Цвет линейного градиента.
	// Обязательное.
	// Отрисовывается до загрузки картинки и градиента.
	// Все цвета должны быть в формате hex #RRGGBBAA.
	// Пример: #7e00c380.
	// # Диапазон: 9..9.
	// # Паттерн: /^#[0-9a-fA-F]{8}$/
	Color string `protobuf:"bytes,1,opt,name=color,proto3" json:"color,omitempty"`
	// Стоп линейного градиента.
	// Записывается в процентах.
	// # Диапазон: 0..100
	Stop float32 `protobuf:"fixed32,2,opt,name=stop,proto3" json:"stop,omitempty"`
}

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

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

func (*Banner_Gradient_Linear_Point) ProtoMessage() {}

func (x *Banner_Gradient_Linear_Point) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 Banner_Gradient_Linear_Point.ProtoReflect.Descriptor instead.
func (*Banner_Gradient_Linear_Point) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{0, 0, 0, 0}
}

func (x *Banner_Gradient_Linear_Point) GetColor() string {
	if x != nil {
		return x.Color
	}
	return ""
}

func (x *Banner_Gradient_Linear_Point) GetStop() float32 {
	if x != nil {
		return x.Stop
	}
	return 0
}

// Конфликт версий.
// Причины:
// - В базе хранится другая версия строки, значения changed_at отличаются
type Banner_SavingError_Conflict struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*Banner_SavingError_Conflict) ProtoMessage() {}

func (x *Banner_SavingError_Conflict) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 Banner_SavingError_Conflict.ProtoReflect.Descriptor instead.
func (*Banner_SavingError_Conflict) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{0, 3, 0}
}

// Упрощённый объект картинки
type BannerLite_ImageLite struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип картинки.
	// Обязательное
	Type Banner_Image_Type `protobuf:"varint,1,opt,name=type,proto3,enum=keyapis.banner.v1.Banner_Image_Type" json:"type,omitempty"`
	// Значение ссылки на картинку.
	// Обязательное
	Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
}

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

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

func (*BannerLite_ImageLite) ProtoMessage() {}

func (x *BannerLite_ImageLite) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 BannerLite_ImageLite.ProtoReflect.Descriptor instead.
func (*BannerLite_ImageLite) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{1, 0}
}

func (x *BannerLite_ImageLite) GetType() Banner_Image_Type {
	if x != nil {
		return x.Type
	}
	return Banner_Image_TYPE_UNKNOWN
}

func (x *BannerLite_ImageLite) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

// Упрощённая ссылка
type BannerLite_LinkLite struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип ссылки.
	// Обязательное
	Type Banner_Link_Type `protobuf:"varint,1,opt,name=type,proto3,enum=keyapis.banner.v1.Banner_Link_Type" json:"type,omitempty"`
	// Значение ссылки.
	// Обязательное
	Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
	// Список пакетов.
	// Если пусто попытка перехода осуществляется безусловно.
	// Если заполнено, то переход осуществляется только в случае если хоть один пакет есть на устройстве иначе обработка переходит к следующей ссылке
	Packages []string `protobuf:"bytes,3,rep,name=packages,proto3" json:"packages,omitempty"`
	// Тип платформы.
	// Обязательное
	PlatformType Banner_PlatformType `protobuf:"varint,4,opt,name=platform_type,json=platformType,proto3,enum=keyapis.banner.v1.Banner_PlatformType" json:"platform_type,omitempty"`
}

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

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

func (*BannerLite_LinkLite) ProtoMessage() {}

func (x *BannerLite_LinkLite) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 BannerLite_LinkLite.ProtoReflect.Descriptor instead.
func (*BannerLite_LinkLite) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{1, 1}
}

func (x *BannerLite_LinkLite) GetType() Banner_Link_Type {
	if x != nil {
		return x.Type
	}
	return Banner_Link_TYPE_UNKNOWN
}

func (x *BannerLite_LinkLite) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

func (x *BannerLite_LinkLite) GetPackages() []string {
	if x != nil {
		return x.Packages
	}
	return nil
}

func (x *BannerLite_LinkLite) GetPlatformType() Banner_PlatformType {
	if x != nil {
		return x.PlatformType
	}
	return Banner_PLATFORM_TYPE_UNKNOWN
}

// Ошибка запроса сохранения баннера
type PostBannerResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

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

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

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

func (*PostBannerResponse_Error) ProtoMessage() {}

func (x *PostBannerResponse_Error) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 PostBannerResponse_Error.ProtoReflect.Descriptor instead.
func (*PostBannerResponse_Error) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{6, 0}
}

func (m *PostBannerResponse_Error) GetReason() isPostBannerResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *PostBannerResponse_Error) GetValidation() *ValidationError {
	if x, ok := x.GetReason().(*PostBannerResponse_Error_Validation); ok {
		return x.Validation
	}
	return nil
}

func (x *PostBannerResponse_Error) GetSaving() *Banner_SavingError {
	if x, ok := x.GetReason().(*PostBannerResponse_Error_Saving); ok {
		return x.Saving
	}
	return nil
}

type isPostBannerResponse_Error_Reason interface {
	isPostBannerResponse_Error_Reason()
}

type PostBannerResponse_Error_Validation struct {
	// Ошибка валидации
	Validation *ValidationError `protobuf:"bytes,1,opt,name=validation,proto3,oneof"`
}

type PostBannerResponse_Error_Saving struct {
	// Ошибка сохранения
	Saving *Banner_SavingError `protobuf:"bytes,2,opt,name=saving,proto3,oneof"`
}

func (*PostBannerResponse_Error_Validation) isPostBannerResponse_Error_Reason() {}

func (*PostBannerResponse_Error_Saving) isPostBannerResponse_Error_Reason() {}

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

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

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

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

func (*GetBannerResponse_Error) ProtoMessage() {}

func (x *GetBannerResponse_Error) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_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 GetBannerResponse_Error.ProtoReflect.Descriptor instead.
func (*GetBannerResponse_Error) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{8, 0}
}

func (m *GetBannerResponse_Error) GetReason() isGetBannerResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *GetBannerResponse_Error) GetValidation() *ValidationError {
	if x, ok := x.GetReason().(*GetBannerResponse_Error_Validation); ok {
		return x.Validation
	}
	return nil
}

type isGetBannerResponse_Error_Reason interface {
	isGetBannerResponse_Error_Reason()
}

type GetBannerResponse_Error_Validation struct {
	// Ошибка валидации
	Validation *ValidationError `protobuf:"bytes,1,opt,name=validation,proto3,oneof"`
}

func (*GetBannerResponse_Error_Validation) isGetBannerResponse_Error_Reason() {}

// Ошибка запроса получения упрощённого баннера
type GetBannerLiteResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

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

func (x *GetBannerLiteResponse_Error) Reset() {
	*x = GetBannerLiteResponse_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetBannerLiteResponse_Error) ProtoMessage() {}

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

func (m *GetBannerLiteResponse_Error) GetReason() isGetBannerLiteResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *GetBannerLiteResponse_Error) GetValidation() *ValidationError {
	if x, ok := x.GetReason().(*GetBannerLiteResponse_Error_Validation); ok {
		return x.Validation
	}
	return nil
}

type isGetBannerLiteResponse_Error_Reason interface {
	isGetBannerLiteResponse_Error_Reason()
}

type GetBannerLiteResponse_Error_Validation struct {
	// Ошибка валидации
	Validation *ValidationError `protobuf:"bytes,1,opt,name=validation,proto3,oneof"`
}

func (*GetBannerLiteResponse_Error_Validation) isGetBannerLiteResponse_Error_Reason() {}

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

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

func (x *GetBannerListResponse_Error) Reset() {
	*x = GetBannerListResponse_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetBannerListResponse_Error) ProtoMessage() {}

func (x *GetBannerListResponse_Error) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[33]
	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 GetBannerListResponse_Error.ProtoReflect.Descriptor instead.
func (*GetBannerListResponse_Error) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{12, 0}
}

func (m *GetBannerListResponse_Error) GetReason() isGetBannerListResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *GetBannerListResponse_Error) GetValidation() *ValidationError {
	if x, ok := x.GetReason().(*GetBannerListResponse_Error_Validation); ok {
		return x.Validation
	}
	return nil
}

type isGetBannerListResponse_Error_Reason interface {
	isGetBannerListResponse_Error_Reason()
}

type GetBannerListResponse_Error_Validation struct {
	// Ошибка валидации
	Validation *ValidationError `protobuf:"bytes,1,opt,name=validation,proto3,oneof"`
}

func (*GetBannerListResponse_Error_Validation) isGetBannerListResponse_Error_Reason() {}

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

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

func (x *GetBannerLiteListResponse_Error) Reset() {
	*x = GetBannerLiteListResponse_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[34]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetBannerLiteListResponse_Error) ProtoMessage() {}

func (x *GetBannerLiteListResponse_Error) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[34]
	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 GetBannerLiteListResponse_Error.ProtoReflect.Descriptor instead.
func (*GetBannerLiteListResponse_Error) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{14, 0}
}

func (m *GetBannerLiteListResponse_Error) GetReason() isGetBannerLiteListResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *GetBannerLiteListResponse_Error) GetValidation() *ValidationError {
	if x, ok := x.GetReason().(*GetBannerLiteListResponse_Error_Validation); ok {
		return x.Validation
	}
	return nil
}

type isGetBannerLiteListResponse_Error_Reason interface {
	isGetBannerLiteListResponse_Error_Reason()
}

type GetBannerLiteListResponse_Error_Validation struct {
	// Ошибка валидации
	Validation *ValidationError `protobuf:"bytes,1,opt,name=validation,proto3,oneof"`
}

func (*GetBannerLiteListResponse_Error_Validation) isGetBannerLiteListResponse_Error_Reason() {}

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

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

func (x *GetBannerCountResponse_Error) Reset() {
	*x = GetBannerCountResponse_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetBannerCountResponse_Error) ProtoMessage() {}

func (x *GetBannerCountResponse_Error) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[35]
	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 GetBannerCountResponse_Error.ProtoReflect.Descriptor instead.
func (*GetBannerCountResponse_Error) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{16, 0}
}

func (m *GetBannerCountResponse_Error) GetReason() isGetBannerCountResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *GetBannerCountResponse_Error) GetValidation() *ValidationError {
	if x, ok := x.GetReason().(*GetBannerCountResponse_Error_Validation); ok {
		return x.Validation
	}
	return nil
}

type isGetBannerCountResponse_Error_Reason interface {
	isGetBannerCountResponse_Error_Reason()
}

type GetBannerCountResponse_Error_Validation struct {
	// Ошибка валидации
	Validation *ValidationError `protobuf:"bytes,1,opt,name=validation,proto3,oneof"`
}

func (*GetBannerCountResponse_Error_Validation) isGetBannerCountResponse_Error_Reason() {}

// Ошибка запроса загрузки картинки баннера
type PostBannerUploadImageResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

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

func (x *PostBannerUploadImageResponse_Error) Reset() {
	*x = PostBannerUploadImageResponse_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[36]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostBannerUploadImageResponse_Error) ProtoMessage() {}

func (x *PostBannerUploadImageResponse_Error) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[36]
	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 PostBannerUploadImageResponse_Error.ProtoReflect.Descriptor instead.
func (*PostBannerUploadImageResponse_Error) Descriptor() ([]byte, []int) {
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP(), []int{19, 0}
}

func (m *PostBannerUploadImageResponse_Error) GetReason() isPostBannerUploadImageResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *PostBannerUploadImageResponse_Error) GetValidation() *ValidationError {
	if x, ok := x.GetReason().(*PostBannerUploadImageResponse_Error_Validation); ok {
		return x.Validation
	}
	return nil
}

type isPostBannerUploadImageResponse_Error_Reason interface {
	isPostBannerUploadImageResponse_Error_Reason()
}

type PostBannerUploadImageResponse_Error_Validation struct {
	// Ошибка валидации
	Validation *ValidationError `protobuf:"bytes,1,opt,name=validation,proto3,oneof"`
}

func (*PostBannerUploadImageResponse_Error_Validation) isPostBannerUploadImageResponse_Error_Reason() {
}

var File_keyapis_banner_v1_keyapis_banner_banner_v1_proto protoreflect.FileDescriptor

var file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDesc = []byte{
	0x0a, 0x30, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72,
	0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x5f, 0x62, 0x61, 0x6e, 0x6e,
	0x65, 0x72, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x12, 0x11, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e,
	0x65, 0x72, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 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, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 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, 0x22, 0xae, 0x12, 0x0a, 0x06, 0x42, 0x61, 0x6e, 0x6e,
	0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
	0x69, 0x64, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x1e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65,
	0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65,
	0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x70,
	0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0,
	0x41, 0x02, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x50, 0x0a, 0x0d,
	0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61,
	0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x50,
	0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03,
	0x52, 0x0c, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19,
	0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
	0x41, 0x02, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x68, 0x65, 0x61,
	0x64, 0x65, 0x72, 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, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12,
	0x3f, 0x0a, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18,
	0x07, 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, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x6f, 0x72,
	0x12, 0x38, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x08, 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, 0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x43, 0x0a, 0x0e, 0x73, 0x75,
	0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x09, 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, 0x0d, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12,
	0x47, 0x0a, 0x10, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x6f,
	0x6c, 0x6f, 0x72, 0x18, 0x0a, 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, 0x0f, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f,
	0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x53, 0x0a, 0x13, 0x62, 0x61, 0x63, 0x6b,
	0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x67, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x18,
	0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72,
	0x2e, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x12, 0x62, 0x61, 0x63, 0x6b, 0x67,
	0x72, 0x6f, 0x75, 0x6e, 0x64, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a,
	0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x61,
	0x79, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x41, 0x66, 0x74,
	0x65, 0x72, 0x44, 0x61, 0x79, 0x73, 0x12, 0x43, 0x0a, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73,
	0x74, 0x61, 0x72, 0x74, 0x5f, 0x61, 0x74, 0x18, 0x0d, 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, 0x02, 0x52, 0x0b,
	0x73, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0d, 0x73,
	0x68, 0x6f, 0x77, 0x5f, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0e, 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, 0x02, 0x52, 0x0b, 0x73, 0x68, 0x6f, 0x77, 0x45, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x74,
	0x12, 0x4a, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
	0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72,
	0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03,
	0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x37, 0x0a, 0x06,
	0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31,
	0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x06, 0x69,
	0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x11,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62,
	0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e,
	0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x75,
	0x73, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03,
	0xe0, 0x41, 0x02, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x12, 0x1e, 0x0a,
	0x08, 0x61, 0x70, 0x70, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x09, 0x42,
	0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x61, 0x70, 0x70, 0x54, 0x61, 0x67, 0x73, 0x12, 0x3e, 0x0a,
	0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x14, 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, 0x15, 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, 0x1a, 0xfe, 0x01,
	0x0a, 0x08, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x6c, 0x69,
	0x6e, 0x65, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42,
	0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x4c,
	0x69, 0x6e, 0x65, 0x61, 0x72, 0x48, 0x00, 0x52, 0x06, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x1a,
	0xa4, 0x01, 0x0a, 0x06, 0x4c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6e,
	0x67, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x61, 0x6e, 0x67, 0x6c, 0x65,
	0x12, 0x4c, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x2f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65,
	0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x47, 0x72, 0x61, 0x64,
	0x69, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x2e, 0x50, 0x6f, 0x69, 0x6e,
	0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x1a, 0x36,
	0x0a, 0x05, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x6c,
	0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02,
	0x52, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x9e,
	0x01, 0x0a, 0x05, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65,
	0x72, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41,
	0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x3f,
	0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55,
	0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x4f, 0x52, 0x54,
	0x52, 0x41, 0x49, 0x54, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x41, 0x4e, 0x44, 0x53, 0x43,
	0x41, 0x50, 0x45, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x43, 0x4f, 0x4e, 0x10, 0x03, 0x1a,
	0xbd, 0x02, 0x0a, 0x04, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x50, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74,
	0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x26, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72,
	0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66,
	0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x70, 0x6c,
	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x74, 0x79,
	0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e,
	0x6e, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0,
	0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12,
	0x1a, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28,
	0x09, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0x72, 0x0a, 0x04, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e,
	0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41,
	0x4c, 0x5f, 0x41, 0x50, 0x50, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x58, 0x54, 0x45, 0x52,
	0x4e, 0x41, 0x4c, 0x5f, 0x41, 0x50, 0x50, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x57, 0x45, 0x42,
	0x5f, 0x56, 0x49, 0x45, 0x57, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x57, 0x45, 0x42, 0x5f, 0x42,
	0x52, 0x4f, 0x57, 0x53, 0x45, 0x52, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x58, 0x54, 0x45,
	0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x57, 0x45, 0x42, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x10, 0x05, 0x1a,
	0x71, 0x0a, 0x0b, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x4c,
	0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x2e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65,
	0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x53, 0x61, 0x76, 0x69,
	0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74,
	0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x1a, 0x0a, 0x0a, 0x08,
	0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73,
	0x6f, 0x6e, 0x22, 0x26, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59,
	0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08,
	0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x01, 0x22, 0x54, 0x0a, 0x0c, 0x50, 0x72,
	0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x52,
	0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e,
	0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10,
	0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x57, 0x48, 0x49, 0x54, 0x45, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c,
	0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x03,
	0x22, 0x4c, 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, 0x44, 0x45, 0x46, 0x45, 0x52,
	0x52, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10,
	0x02, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10, 0x03, 0x22, 0x48,
	0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19,
	0x0a, 0x15, 0x50, 0x4c, 0x41, 0x54, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
	0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x4f, 0x53,
	0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44, 0x10, 0x02, 0x12,
	0x07, 0x0a, 0x03, 0x57, 0x45, 0x42, 0x10, 0x03, 0x22, 0x97, 0x04, 0x0a, 0x0a, 0x42, 0x61, 0x6e,
	0x6e, 0x65, 0x72, 0x4c, 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x47, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61,
	0x74, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
	0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x41, 0x66, 0x74, 0x65, 0x72, 0x44, 0x61, 0x79, 0x73,
	0x12, 0x3f, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x27, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65,
	0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x69, 0x74, 0x65, 0x2e,
	0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x74, 0x65, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65,
	0x73, 0x12, 0x3c, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x26, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65,
	0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x69, 0x74, 0x65, 0x2e,
	0x4c, 0x69, 0x6e, 0x6b, 0x4c, 0x69, 0x74, 0x65, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x1a,
	0x61, 0x0a, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x04,
	0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42,
	0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65,
	0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x75,
	0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x75,
	0x72, 0x6c, 0x1a, 0xcd, 0x01, 0x0a, 0x08, 0x4c, 0x69, 0x6e, 0x6b, 0x4c, 0x69, 0x74, 0x65, 0x12,
	0x3c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76,
	0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x2e, 0x54, 0x79,
	0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a,
	0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
	0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73,
	0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73,
	0x12, 0x50, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e,
	0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x42,
	0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79,
	0x70, 0x65, 0x22, 0xee, 0x05, 0x0a, 0x0c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x46, 0x69, 0x6c,
	0x74, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 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,
	0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x34, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x02,
	0x20, 0x03, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62,
	0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e,
	0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x62,
	0x65, 0x67, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65,
	0x52, 0x0d, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12,
	0x3e, 0x0a, 0x0c, 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c,
	0x75, 0x65, 0x52, 0x0b, 0x65, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12,
	0x4d, 0x0a, 0x0e, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e,
	0x65, 0x72, 0x2e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52,
	0x0d, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x49,
	0x0a, 0x13, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x61,
	0x72, 0x74, 0x5f, 0x61, 0x74, 0x18, 0x06, 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, 0x10, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x53, 0x68,
	0x6f, 0x77, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x74, 0x12, 0x45, 0x0a, 0x11, 0x65, 0x6e, 0x64,
	0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x61, 0x74, 0x18, 0x07,
	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, 0x65, 0x6e, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x74,
	0x12, 0x49, 0x0a, 0x13, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x65,
	0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 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, 0x10, 0x62, 0x65, 0x67, 0x69, 0x6e,
	0x53, 0x68, 0x6f, 0x77, 0x45, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x74, 0x12, 0x45, 0x0a, 0x11, 0x65,
	0x6e, 0x64, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74,
	0x18, 0x09, 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, 0x65, 0x6e, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x45, 0x6e, 0x64, 0x65, 0x64,
	0x41, 0x74, 0x12, 0x47, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e,
	0x6e, 0x65, 0x72, 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, 0x1b, 0x0a, 0x09, 0x75,
	0x73, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
	0x75, 0x73, 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f,
	0x74, 0x61, 0x67, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x54,
	0x61, 0x67, 0x73, 0x22, 0xa3, 0x02, 0x0a, 0x10, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x69,
	0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e,
	0x65, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x37,
	0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 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, 0x07,
	0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66,
	0x6f, 0x72, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e,
	0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f,
	0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
	0x04, 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, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09,
	0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52,
	0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x22, 0xbf, 0x03, 0x0a, 0x0c, 0x42, 0x61,
	0x6e, 0x6e, 0x65, 0x72, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x4f, 0x0a, 0x0d, 0x6f, 0x72,
	0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0e, 0x32, 0x2b, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e,
	0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 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, 0x54, 0x0a, 0x0e, 0x64,
	0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61,
	0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 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,
	0x99, 0x01, 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, 0x0e, 0x0a, 0x0a, 0x43, 0x48,
	0x41, 0x4e, 0x47, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52,
	0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x48, 0x45, 0x4e, 0x5f, 0x53, 0x48, 0x4f, 0x57,
	0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x43,
	0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x53,
	0x48, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x10, 0x04, 0x12, 0x11,
	0x0a, 0x0d, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x10,
	0x05, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x41, 0x4e, 0x4b, 0x10, 0x06, 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, 0x47, 0x0a, 0x11, 0x50,
	0x6f, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x32, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e,
	0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04,
	0x64, 0x61, 0x74, 0x61, 0x22, 0xad, 0x02, 0x0a, 0x12, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x61, 0x6e,
	0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x64,
	0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61,
	0x6e, 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x43, 0x0a, 0x05,
	0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e,
	0x50, 0x6f, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f,
	0x72, 0x1a, 0x98, 0x01, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x44, 0x0a, 0x0a, 0x76,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x22, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72,
	0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72,
	0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x25, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e,
	0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x53, 0x61, 0x76,
	0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, 0x61, 0x76, 0x69,
	0x6e, 0x67, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04,
	0x74, 0x79, 0x70, 0x65, 0x22, 0x27, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65,
	0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x22, 0xe9, 0x01,
	0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x19, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e,
	0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, 0x04,
	0x64, 0x61, 0x74, 0x61, 0x12, 0x42, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61,
	0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65,
	0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48,
	0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x57, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x12, 0x44, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c,
	0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f,
	0x6e, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2b, 0x0a, 0x14, 0x47, 0x65, 0x74,
	0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
	0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x22, 0xf5, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x42, 0x61,
	0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x12, 0x33, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e,
	0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x69, 0x74, 0x65, 0x48, 0x00, 0x52,
	0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x46, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62,
	0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e,
	0x65, 0x72, 0x4c, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x57, 0x0a,
	0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x44, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00,
	0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06,
	0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x98,
	0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65,
	0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e,
	0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
	0x12, 0x39, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65,
	0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 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, 0xf1, 0x01, 0x0a, 0x15, 0x47, 0x65,
	0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x19, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e,
	0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, 0x04,
	0x64, 0x61, 0x74, 0x61, 0x12, 0x46, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61,
	0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65,
	0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72,
	0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x57, 0x0a, 0x05,
	0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x44, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52,
	0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x72,
	0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x8e, 0x01,
	0x0a, 0x18, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x69, 0x74, 0x65, 0x4c,
	0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x06, 0x66, 0x69,
	0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42,
	0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52,
	0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x17, 0x69, 0x73, 0x5f, 0x6c, 0x69,
	0x6e, 0x6b, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c,
	0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, 0x73, 0x4c, 0x69, 0x6e, 0x6b,
	0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xfd,
	0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x69, 0x74, 0x65,
	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x04,
	0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42,
	0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x69, 0x74, 0x65, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74,
	0x61, 0x12, 0x4a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x32, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65,
	0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x69,
	0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x57, 0x0a,
	0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x44, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00,
	0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06,
	0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x50,
	0x0a, 0x15, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65,
	0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e,
	0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
	0x22, 0xd8, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 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, 0x12, 0x47, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x2f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65,
	0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f,
	0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x57, 0x0a, 0x05, 0x45, 0x72,
	0x72, 0x6f, 0x72, 0x12, 0x44, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61,
	0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2a, 0x0a, 0x0b, 0x55,
	0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x62, 0x61,
	0x73, 0x65, 0x36, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
	0x06, 0x62, 0x61, 0x73, 0x65, 0x36, 0x34, 0x22, 0x88, 0x01, 0x0a, 0x1c, 0x50, 0x6f, 0x73, 0x74,
	0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67,
	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x6e,
	0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02,
	0x52, 0x08, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x0c, 0x75, 0x70,
	0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65,
	0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65,
	0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61,
	0x67, 0x65, 0x22, 0xe6, 0x01, 0x0a, 0x1d, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65,
	0x72, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4e, 0x0a, 0x05, 0x65, 0x72,
	0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f,
	0x73, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d,
	0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x57, 0x0a, 0x05, 0x45, 0x72,
	0x72, 0x6f, 0x72, 0x12, 0x44, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61,
	0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x49, 0x0a, 0x0f, 0x56,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x17,
	0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
	0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x6d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x8d, 0x08, 0x0a, 0x0d, 0x42, 0x61, 0x6e, 0x6e, 0x65,
	0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x7b, 0x0a, 0x0a, 0x50, 0x6f, 0x73, 0x74,
	0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x42,
	0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31,
	0x2e, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a, 0x22, 0x15,
	0x2f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62,
	0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x7a, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e,
	0x65, 0x72, 0x12, 0x23, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e,
	0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42,
	0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82,
	0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x61,
	0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x69, 0x64,
	0x7d, 0x12, 0x8b, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c,
	0x69, 0x74, 0x65, 0x12, 0x27, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61,
	0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65,
	0x72, 0x4c, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31,
	0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x69, 0x74, 0x65, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f,
	0x2f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62,
	0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x74, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12,
	0x88, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x69, 0x73,
	0x74, 0x12, 0x27, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e,
	0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c,
	0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47,
	0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x62,
	0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x61, 0x6e,
	0x6e, 0x65, 0x72, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x30, 0x01, 0x12, 0x99, 0x01, 0x0a, 0x11, 0x47,
	0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74,
	0x12, 0x2b, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65,
	0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x69,
	0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76,
	0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x69, 0x74, 0x65, 0x4c,
	0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4,
	0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69,
	0x2f, 0x76, 0x31, 0x2f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x74, 0x65, 0x2f,
	0x6c, 0x69, 0x73, 0x74, 0x30, 0x01, 0x12, 0x8a, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x42, 0x61,
	0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
	0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61,
	0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65,
	0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f,
	0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x12, 0xc0, 0x01, 0x0a, 0x15, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x6e,
	0x65, 0x72, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2f, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76,
	0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x55, 0x70, 0x6c, 0x6f,
	0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e,
	0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x55, 0x70, 0x6c,
	0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x3a, 0x0c, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64,
	0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x2e, 0x2f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f,
	0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x62,
	0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64,
	0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x9a, 0x01, 0x0a, 0x14, 0x72, 0x75, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42,
	0x14, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x31,
	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x48, 0x03, 0x50, 0x00, 0x5a, 0x12, 0x2f, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x31, 0xd8, 0x01, 0x01,
	0xf8, 0x01, 0x01, 0xa2, 0x02, 0x0f, 0x4b, 0x45, 0x59, 0x41, 0x50, 0x49, 0x53, 0x42, 0x41, 0x4e,
	0x4e, 0x45, 0x52, 0x56, 0x31, 0xaa, 0x02, 0x11, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x11, 0x4b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x5c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x13,
	0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x3a, 0x3a, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x3a,
	0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescOnce sync.Once
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescData = file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDesc
)

func file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescGZIP() []byte {
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescOnce.Do(func() {
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescData = protoimpl.X.CompressGZIP(file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescData)
	})
	return file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDescData
}

var file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_enumTypes = make([]protoimpl.EnumInfo, 8)
var file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes = make([]protoimpl.MessageInfo, 37)
var file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_goTypes = []interface{}{
	(Banner_Type)(0),                            // 0: keyapis.banner.v1.Banner.Type
	(Banner_PriorityType)(0),                    // 1: keyapis.banner.v1.Banner.PriorityType
	(Banner_StatusType)(0),                      // 2: keyapis.banner.v1.Banner.StatusType
	(Banner_PlatformType)(0),                    // 3: keyapis.banner.v1.Banner.PlatformType
	(Banner_Image_Type)(0),                      // 4: keyapis.banner.v1.Banner.Image.Type
	(Banner_Link_Type)(0),                       // 5: keyapis.banner.v1.Banner.Link.Type
	(BannerPaging_OrderByType)(0),               // 6: keyapis.banner.v1.BannerPaging.OrderByType
	(BannerPaging_DirectionType)(0),             // 7: keyapis.banner.v1.BannerPaging.DirectionType
	(*Banner)(nil),                              // 8: keyapis.banner.v1.Banner
	(*BannerLite)(nil),                          // 9: keyapis.banner.v1.BannerLite
	(*BannerFilter)(nil),                        // 10: keyapis.banner.v1.BannerFilter
	(*BannerLiteFilter)(nil),                    // 11: keyapis.banner.v1.BannerLiteFilter
	(*BannerPaging)(nil),                        // 12: keyapis.banner.v1.BannerPaging
	(*PostBannerRequest)(nil),                   // 13: keyapis.banner.v1.PostBannerRequest
	(*PostBannerResponse)(nil),                  // 14: keyapis.banner.v1.PostBannerResponse
	(*GetBannerRequest)(nil),                    // 15: keyapis.banner.v1.GetBannerRequest
	(*GetBannerResponse)(nil),                   // 16: keyapis.banner.v1.GetBannerResponse
	(*GetBannerLiteRequest)(nil),                // 17: keyapis.banner.v1.GetBannerLiteRequest
	(*GetBannerLiteResponse)(nil),               // 18: keyapis.banner.v1.GetBannerLiteResponse
	(*GetBannerListRequest)(nil),                // 19: keyapis.banner.v1.GetBannerListRequest
	(*GetBannerListResponse)(nil),               // 20: keyapis.banner.v1.GetBannerListResponse
	(*GetBannerLiteListRequest)(nil),            // 21: keyapis.banner.v1.GetBannerLiteListRequest
	(*GetBannerLiteListResponse)(nil),           // 22: keyapis.banner.v1.GetBannerLiteListResponse
	(*GetBannerCountRequest)(nil),               // 23: keyapis.banner.v1.GetBannerCountRequest
	(*GetBannerCountResponse)(nil),              // 24: keyapis.banner.v1.GetBannerCountResponse
	(*UploadImage)(nil),                         // 25: keyapis.banner.v1.UploadImage
	(*PostBannerUploadImageRequest)(nil),        // 26: keyapis.banner.v1.PostBannerUploadImageRequest
	(*PostBannerUploadImageResponse)(nil),       // 27: keyapis.banner.v1.PostBannerUploadImageResponse
	(*ValidationError)(nil),                     // 28: keyapis.banner.v1.ValidationError
	(*Banner_Gradient)(nil),                     // 29: keyapis.banner.v1.Banner.Gradient
	(*Banner_Image)(nil),                        // 30: keyapis.banner.v1.Banner.Image
	(*Banner_Link)(nil),                         // 31: keyapis.banner.v1.Banner.Link
	(*Banner_SavingError)(nil),                  // 32: keyapis.banner.v1.Banner.SavingError
	(*Banner_Gradient_Linear)(nil),              // 33: keyapis.banner.v1.Banner.Gradient.Linear
	(*Banner_Gradient_Linear_Point)(nil),        // 34: keyapis.banner.v1.Banner.Gradient.Linear.Point
	(*Banner_SavingError_Conflict)(nil),         // 35: keyapis.banner.v1.Banner.SavingError.Conflict
	(*BannerLite_ImageLite)(nil),                // 36: keyapis.banner.v1.BannerLite.ImageLite
	(*BannerLite_LinkLite)(nil),                 // 37: keyapis.banner.v1.BannerLite.LinkLite
	(*PostBannerResponse_Error)(nil),            // 38: keyapis.banner.v1.PostBannerResponse.Error
	(*GetBannerResponse_Error)(nil),             // 39: keyapis.banner.v1.GetBannerResponse.Error
	(*GetBannerLiteResponse_Error)(nil),         // 40: keyapis.banner.v1.GetBannerLiteResponse.Error
	(*GetBannerListResponse_Error)(nil),         // 41: keyapis.banner.v1.GetBannerListResponse.Error
	(*GetBannerLiteListResponse_Error)(nil),     // 42: keyapis.banner.v1.GetBannerLiteListResponse.Error
	(*GetBannerCountResponse_Error)(nil),        // 43: keyapis.banner.v1.GetBannerCountResponse.Error
	(*PostBannerUploadImageResponse_Error)(nil), // 44: keyapis.banner.v1.PostBannerUploadImageResponse.Error
	(*wrapperspb.StringValue)(nil),              // 45: google.protobuf.StringValue
	(*wrapperspb.Int32Value)(nil),               // 46: google.protobuf.Int32Value
	(*timestamppb.Timestamp)(nil),               // 47: google.protobuf.Timestamp
}
var file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_depIdxs = []int32{
	0,  // 0: keyapis.banner.v1.Banner.type:type_name -> keyapis.banner.v1.Banner.Type
	1,  // 1: keyapis.banner.v1.Banner.priority_type:type_name -> keyapis.banner.v1.Banner.PriorityType
	45, // 2: keyapis.banner.v1.Banner.header:type_name -> google.protobuf.StringValue
	45, // 3: keyapis.banner.v1.Banner.header_color:type_name -> google.protobuf.StringValue
	45, // 4: keyapis.banner.v1.Banner.subtitle:type_name -> google.protobuf.StringValue
	45, // 5: keyapis.banner.v1.Banner.subtitle_color:type_name -> google.protobuf.StringValue
	45, // 6: keyapis.banner.v1.Banner.background_color:type_name -> google.protobuf.StringValue
	29, // 7: keyapis.banner.v1.Banner.background_gradient:type_name -> keyapis.banner.v1.Banner.Gradient
	46, // 8: keyapis.banner.v1.Banner.repeat_after_days:type_name -> google.protobuf.Int32Value
	47, // 9: keyapis.banner.v1.Banner.show_start_at:type_name -> google.protobuf.Timestamp
	47, // 10: keyapis.banner.v1.Banner.show_ended_at:type_name -> google.protobuf.Timestamp
	2,  // 11: keyapis.banner.v1.Banner.status_type:type_name -> keyapis.banner.v1.Banner.StatusType
	30, // 12: keyapis.banner.v1.Banner.images:type_name -> keyapis.banner.v1.Banner.Image
	31, // 13: keyapis.banner.v1.Banner.links:type_name -> keyapis.banner.v1.Banner.Link
	47, // 14: keyapis.banner.v1.Banner.created_at:type_name -> google.protobuf.Timestamp
	47, // 15: keyapis.banner.v1.Banner.changed_at:type_name -> google.protobuf.Timestamp
	46, // 16: keyapis.banner.v1.BannerLite.repeat_after_days:type_name -> google.protobuf.Int32Value
	36, // 17: keyapis.banner.v1.BannerLite.images:type_name -> keyapis.banner.v1.BannerLite.ImageLite
	37, // 18: keyapis.banner.v1.BannerLite.links:type_name -> keyapis.banner.v1.BannerLite.LinkLite
	45, // 19: keyapis.banner.v1.BannerFilter.text:type_name -> google.protobuf.StringValue
	0,  // 20: keyapis.banner.v1.BannerFilter.types:type_name -> keyapis.banner.v1.Banner.Type
	46, // 21: keyapis.banner.v1.BannerFilter.begin_priority:type_name -> google.protobuf.Int32Value
	46, // 22: keyapis.banner.v1.BannerFilter.end_priority:type_name -> google.protobuf.Int32Value
	1,  // 23: keyapis.banner.v1.BannerFilter.priority_types:type_name -> keyapis.banner.v1.Banner.PriorityType
	47, // 24: keyapis.banner.v1.BannerFilter.begin_show_start_at:type_name -> google.protobuf.Timestamp
	47, // 25: keyapis.banner.v1.BannerFilter.end_show_start_at:type_name -> google.protobuf.Timestamp
	47, // 26: keyapis.banner.v1.BannerFilter.begin_show_ended_at:type_name -> google.protobuf.Timestamp
	47, // 27: keyapis.banner.v1.BannerFilter.end_show_ended_at:type_name -> google.protobuf.Timestamp
	2,  // 28: keyapis.banner.v1.BannerFilter.status_types:type_name -> keyapis.banner.v1.Banner.StatusType
	0,  // 29: keyapis.banner.v1.BannerLiteFilter.types:type_name -> keyapis.banner.v1.Banner.Type
	45, // 30: keyapis.banner.v1.BannerLiteFilter.app_name:type_name -> google.protobuf.StringValue
	3,  // 31: keyapis.banner.v1.BannerLiteFilter.platform_type:type_name -> keyapis.banner.v1.Banner.PlatformType
	45, // 32: keyapis.banner.v1.BannerLiteFilter.version:type_name -> google.protobuf.StringValue
	6,  // 33: keyapis.banner.v1.BannerPaging.order_by_type:type_name -> keyapis.banner.v1.BannerPaging.OrderByType
	7,  // 34: keyapis.banner.v1.BannerPaging.direction_type:type_name -> keyapis.banner.v1.BannerPaging.DirectionType
	8,  // 35: keyapis.banner.v1.PostBannerRequest.data:type_name -> keyapis.banner.v1.Banner
	8,  // 36: keyapis.banner.v1.PostBannerResponse.data:type_name -> keyapis.banner.v1.Banner
	38, // 37: keyapis.banner.v1.PostBannerResponse.error:type_name -> keyapis.banner.v1.PostBannerResponse.Error
	8,  // 38: keyapis.banner.v1.GetBannerResponse.data:type_name -> keyapis.banner.v1.Banner
	39, // 39: keyapis.banner.v1.GetBannerResponse.error:type_name -> keyapis.banner.v1.GetBannerResponse.Error
	9,  // 40: keyapis.banner.v1.GetBannerLiteResponse.data:type_name -> keyapis.banner.v1.BannerLite
	40, // 41: keyapis.banner.v1.GetBannerLiteResponse.error:type_name -> keyapis.banner.v1.GetBannerLiteResponse.Error
	10, // 42: keyapis.banner.v1.GetBannerListRequest.filter:type_name -> keyapis.banner.v1.BannerFilter
	12, // 43: keyapis.banner.v1.GetBannerListRequest.paging:type_name -> keyapis.banner.v1.BannerPaging
	8,  // 44: keyapis.banner.v1.GetBannerListResponse.data:type_name -> keyapis.banner.v1.Banner
	41, // 45: keyapis.banner.v1.GetBannerListResponse.error:type_name -> keyapis.banner.v1.GetBannerListResponse.Error
	11, // 46: keyapis.banner.v1.GetBannerLiteListRequest.filter:type_name -> keyapis.banner.v1.BannerLiteFilter
	9,  // 47: keyapis.banner.v1.GetBannerLiteListResponse.data:type_name -> keyapis.banner.v1.BannerLite
	42, // 48: keyapis.banner.v1.GetBannerLiteListResponse.error:type_name -> keyapis.banner.v1.GetBannerLiteListResponse.Error
	10, // 49: keyapis.banner.v1.GetBannerCountRequest.filter:type_name -> keyapis.banner.v1.BannerFilter
	43, // 50: keyapis.banner.v1.GetBannerCountResponse.error:type_name -> keyapis.banner.v1.GetBannerCountResponse.Error
	25, // 51: keyapis.banner.v1.PostBannerUploadImageRequest.upload_image:type_name -> keyapis.banner.v1.UploadImage
	44, // 52: keyapis.banner.v1.PostBannerUploadImageResponse.error:type_name -> keyapis.banner.v1.PostBannerUploadImageResponse.Error
	33, // 53: keyapis.banner.v1.Banner.Gradient.linear:type_name -> keyapis.banner.v1.Banner.Gradient.Linear
	4,  // 54: keyapis.banner.v1.Banner.Image.type:type_name -> keyapis.banner.v1.Banner.Image.Type
	3,  // 55: keyapis.banner.v1.Banner.Link.platform_type:type_name -> keyapis.banner.v1.Banner.PlatformType
	5,  // 56: keyapis.banner.v1.Banner.Link.type:type_name -> keyapis.banner.v1.Banner.Link.Type
	35, // 57: keyapis.banner.v1.Banner.SavingError.conflict:type_name -> keyapis.banner.v1.Banner.SavingError.Conflict
	34, // 58: keyapis.banner.v1.Banner.Gradient.Linear.points:type_name -> keyapis.banner.v1.Banner.Gradient.Linear.Point
	4,  // 59: keyapis.banner.v1.BannerLite.ImageLite.type:type_name -> keyapis.banner.v1.Banner.Image.Type
	5,  // 60: keyapis.banner.v1.BannerLite.LinkLite.type:type_name -> keyapis.banner.v1.Banner.Link.Type
	3,  // 61: keyapis.banner.v1.BannerLite.LinkLite.platform_type:type_name -> keyapis.banner.v1.Banner.PlatformType
	28, // 62: keyapis.banner.v1.PostBannerResponse.Error.validation:type_name -> keyapis.banner.v1.ValidationError
	32, // 63: keyapis.banner.v1.PostBannerResponse.Error.saving:type_name -> keyapis.banner.v1.Banner.SavingError
	28, // 64: keyapis.banner.v1.GetBannerResponse.Error.validation:type_name -> keyapis.banner.v1.ValidationError
	28, // 65: keyapis.banner.v1.GetBannerLiteResponse.Error.validation:type_name -> keyapis.banner.v1.ValidationError
	28, // 66: keyapis.banner.v1.GetBannerListResponse.Error.validation:type_name -> keyapis.banner.v1.ValidationError
	28, // 67: keyapis.banner.v1.GetBannerLiteListResponse.Error.validation:type_name -> keyapis.banner.v1.ValidationError
	28, // 68: keyapis.banner.v1.GetBannerCountResponse.Error.validation:type_name -> keyapis.banner.v1.ValidationError
	28, // 69: keyapis.banner.v1.PostBannerUploadImageResponse.Error.validation:type_name -> keyapis.banner.v1.ValidationError
	13, // 70: keyapis.banner.v1.BannerService.PostBanner:input_type -> keyapis.banner.v1.PostBannerRequest
	15, // 71: keyapis.banner.v1.BannerService.GetBanner:input_type -> keyapis.banner.v1.GetBannerRequest
	17, // 72: keyapis.banner.v1.BannerService.GetBannerLite:input_type -> keyapis.banner.v1.GetBannerLiteRequest
	19, // 73: keyapis.banner.v1.BannerService.GetBannerList:input_type -> keyapis.banner.v1.GetBannerListRequest
	21, // 74: keyapis.banner.v1.BannerService.GetBannerLiteList:input_type -> keyapis.banner.v1.GetBannerLiteListRequest
	23, // 75: keyapis.banner.v1.BannerService.GetBannerCount:input_type -> keyapis.banner.v1.GetBannerCountRequest
	26, // 76: keyapis.banner.v1.BannerService.PostBannerUploadImage:input_type -> keyapis.banner.v1.PostBannerUploadImageRequest
	14, // 77: keyapis.banner.v1.BannerService.PostBanner:output_type -> keyapis.banner.v1.PostBannerResponse
	16, // 78: keyapis.banner.v1.BannerService.GetBanner:output_type -> keyapis.banner.v1.GetBannerResponse
	18, // 79: keyapis.banner.v1.BannerService.GetBannerLite:output_type -> keyapis.banner.v1.GetBannerLiteResponse
	20, // 80: keyapis.banner.v1.BannerService.GetBannerList:output_type -> keyapis.banner.v1.GetBannerListResponse
	22, // 81: keyapis.banner.v1.BannerService.GetBannerLiteList:output_type -> keyapis.banner.v1.GetBannerLiteListResponse
	24, // 82: keyapis.banner.v1.BannerService.GetBannerCount:output_type -> keyapis.banner.v1.GetBannerCountResponse
	27, // 83: keyapis.banner.v1.BannerService.PostBannerUploadImage:output_type -> keyapis.banner.v1.PostBannerUploadImageResponse
	77, // [77:84] is the sub-list for method output_type
	70, // [70:77] is the sub-list for method input_type
	70, // [70:70] is the sub-list for extension type_name
	70, // [70:70] is the sub-list for extension extendee
	0,  // [0:70] is the sub-list for field type_name
}

func init() { file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_init() }
func file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_init() {
	if File_keyapis_banner_v1_keyapis_banner_banner_v1_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Banner); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BannerLite); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BannerFilter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BannerLiteFilter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BannerPaging); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostBannerRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostBannerResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBannerRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBannerResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBannerLiteRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBannerLiteResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBannerListRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBannerListResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBannerLiteListRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBannerLiteListResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBannerCountRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBannerCountResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UploadImage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostBannerUploadImageRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostBannerUploadImageResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ValidationError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Banner_Gradient); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Banner_Image); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Banner_Link); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Banner_SavingError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Banner_Gradient_Linear); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Banner_Gradient_Linear_Point); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Banner_SavingError_Conflict); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BannerLite_ImageLite); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BannerLite_LinkLite); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostBannerResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBannerResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBannerLiteResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBannerListResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBannerLiteListResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetBannerCountResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostBannerUploadImageResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[6].OneofWrappers = []interface{}{
		(*PostBannerResponse_Data)(nil),
		(*PostBannerResponse_Error_)(nil),
	}
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[8].OneofWrappers = []interface{}{
		(*GetBannerResponse_Data)(nil),
		(*GetBannerResponse_Error_)(nil),
	}
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[10].OneofWrappers = []interface{}{
		(*GetBannerLiteResponse_Data)(nil),
		(*GetBannerLiteResponse_Error_)(nil),
	}
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[11].OneofWrappers = []interface{}{
		(*GetBannerListRequest_Paging)(nil),
	}
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[12].OneofWrappers = []interface{}{
		(*GetBannerListResponse_Data)(nil),
		(*GetBannerListResponse_Error_)(nil),
	}
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[14].OneofWrappers = []interface{}{
		(*GetBannerLiteListResponse_Data)(nil),
		(*GetBannerLiteListResponse_Error_)(nil),
	}
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[16].OneofWrappers = []interface{}{
		(*GetBannerCountResponse_Data)(nil),
		(*GetBannerCountResponse_Error_)(nil),
	}
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[19].OneofWrappers = []interface{}{
		(*PostBannerUploadImageResponse_Data)(nil),
		(*PostBannerUploadImageResponse_Error_)(nil),
	}
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[21].OneofWrappers = []interface{}{
		(*Banner_Gradient_Linear_)(nil),
	}
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[24].OneofWrappers = []interface{}{
		(*Banner_SavingError_Conflict_)(nil),
	}
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[30].OneofWrappers = []interface{}{
		(*PostBannerResponse_Error_Validation)(nil),
		(*PostBannerResponse_Error_Saving)(nil),
	}
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[31].OneofWrappers = []interface{}{
		(*GetBannerResponse_Error_Validation)(nil),
	}
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[32].OneofWrappers = []interface{}{
		(*GetBannerLiteResponse_Error_Validation)(nil),
	}
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[33].OneofWrappers = []interface{}{
		(*GetBannerListResponse_Error_Validation)(nil),
	}
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[34].OneofWrappers = []interface{}{
		(*GetBannerLiteListResponse_Error_Validation)(nil),
	}
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[35].OneofWrappers = []interface{}{
		(*GetBannerCountResponse_Error_Validation)(nil),
	}
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes[36].OneofWrappers = []interface{}{
		(*PostBannerUploadImageResponse_Error_Validation)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDesc,
			NumEnums:      8,
			NumMessages:   37,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_goTypes,
		DependencyIndexes: file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_depIdxs,
		EnumInfos:         file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_enumTypes,
		MessageInfos:      file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_msgTypes,
	}.Build()
	File_keyapis_banner_v1_keyapis_banner_banner_v1_proto = out.File
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_rawDesc = nil
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_goTypes = nil
	file_keyapis_banner_v1_keyapis_banner_banner_v1_proto_depIdxs = nil
}
